1import"../chunks/CWj6FrbW.js";import"../chunks/69_IOA4Y.js";import{p as xt,g as bt,o as Rt,aG as q,l as t,c as o,r as s,n as x,aK as pt,k as c,t as D,B as ut,z as d,d as E,q as M,a as y,b as yt,e as Z,s as Ot,m as j,f as S,x as oe,y as le,i as gt,u as ne,C as ie,D as rt,aJ as At}from"../chunks/7a2fV5I9.js";import{i as st}from"../chunks/Dw-yaK-_.js";import{e as Jt,i as qt}from"../chunks/CDs8OzhH.js";import{a as U,b as de,s as Bt}from"../chunks/3tOhmI7k.js";import{b as ft}from"../chunks/DrctxlrS.js";import{p as ot,b as ht}from"../chunks/DPBuKmzL.js";import{i as _t}from"../chunks/CWFN-V6k.js";import{f as ce}from"../chunks/C2xu3muT.js";import{t as mt}from"../chunks/B1RxOmHW.js";import{g as ve}from"../chunks/BnvOT63w.js";import{d as ue,s as ge}from"../chunks/DKKyCjZm.js";import{e as me,u as pe,c as fe,d as he}from"../chunks/C33EP41Y.js";import{c as xe}from"../chunks/CyHtxK_t.js";import{C as be}from"../chunks/CVt6-U_J.js";import{D as ye}from"../chunks/DhS58ybw.js";import{D as _e}from"../chunks/CboLYV0R.js";import{D as we}from"../chunks/i1WR4h7-.js";import{A as ke}from"../chunks/0uv-gfwg.js";import{C as $e}from"../chunks/Bi6L21WR.js";import{P as Ce}from"../chunks/CprjGZR1.js";import{A as De}from"../chunks/31cqHnL0.js";import{M as Me}from"../chunks/C7eVKYlM.js";import{X as Se}from"../chunks/IqCUZuIq.js";import{D as ze}from"../chunks/BWN1CQWt.js";import{E as Ee}from"../chunks/D8XsQTRR.js";var He=S('<div class="flex gap-2 group"><div class="flex items-start pt-1"><div class="px-2 py-1 text-sm font-normal uppercase min-w-[6rem] text-left rounded-lg transition"> </div></div> <div class="flex-1"><textarea class="w-full bg-transparent outline-hidden rounded-lg p-2 text-sm resize-none overflow-hidden" rows="1"></textarea></div> <div class=" pt-1"><button class=" group-hover:text-gray-500 dark:text-gray-500 dark:hover:text-gray-300 transition"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-5 h-5"><path stroke-linecap="round" stroke-linejoin="round" d="M15 12H9m12 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"></path></svg></button></div></div>');function Pe(W,A){xt(A,!1);const r=()=>Z(O,"$i18n",R),[R,X]=Ot(),O=bt("i18n");let _=ot(A,"message",12),J=ot(A,"idx",8),Q=ot(A,"onDelete",8),g=j();Rt(()=>{q(g,t(g).style.height=""),q(g,t(g).style.height=t(g).scrollHeight+"px")}),_t();var V=He(),b=o(V),Y=o(b),F=o(Y,!0);s(Y),s(b);var H=x(b,2),I=o(H);pt(I),ht(I,N=>c(g,N),()=>t(g)),s(H);var T=x(H,2),B=o(T);s(T),s(V),D((N,w,z)=>{E(F,N),U(I,"id",`${ut(_()),d(()=>_().role)??""}-${J()??""}-textarea`),U(I,"placeholder",w),U(B,"aria-label",z)},[()=>(r(),ut(_()),d(()=>r().t(_().role))),()=>(r(),ut(_()),d(()=>r().t("Enter {{role}} message here",{role:_().role==="user"?r().t("a user"):r().t("an assistant")}))),()=>(r(),d(()=>r().t("Delete")))]),M("input",I,N=>{q(g,t(g).style.height=""),q(g,t(g).style.height=t(g).scrollHeight+"px")}),M("focus",I,N=>{q(g,t(g).style.height=""),q(g,t(g).style.height=t(g).scrollHeight+"px")}),ft(I,()=>_().content,N=>_(_().content=N,!0)),M("click",B,()=>{Q()()}),y(W,V),yt(),X()}var je=S('<div class="py-3 space-y-3"></div>');function Ie(W,A){xt(A,!1),bt("i18n");let r=ot(A,"messages",28,()=>[]);_t();var R=je();Jt(R,5,r,qt,(X,O,_)=>{Pe(X,{get message(){return t(O)},idx:_,onDelete:()=>{r(r().filter((J,Q)=>Q!==_))}})}),s(R),y(W,R),yt()}var Ne=S('<div class="text-gray-700 dark:text-gray-100"><div class="flex justify-between px-4 pt-3 pb-1"><div class="text-sm font-medium self-center"> </div>
1 <button class="self-center rounded-lg p-1 text-gray-500 transition hover:bg-gray-50 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-800 dark:hover:text-gray-200"><!></button></div> <div class="px-4.5 pb-5 overflow-y-auto max-h-[70vh]"><!></div></div>'),Te=S('<div class=" flex-1 text-gray-500 line-clamp-1"> </div>'),Ue=S('<div class="flex gap-2 justify-between items-center"><div class=" shrink-0 font-normal ml-1.5"> </div> <!> <div class="shrink-0"><button class="p-1.5 bg-transparent hover:bg-white/5 transition rounded-lg"><!></button></div></div>'),Ae=S('<div slot="content"><div class="pt-1 px-1.5"><textarea class="w-full h-full bg-transparent resize-none outline-hidden text-sm" rows="4"></textarea></div></div>'),Be=S('<button class="p-1.5 text-sm font-normal bg-transparent hover:bg-gray-100 dark:hover:bg-gray-800 text-gray-500 dark:text-gray-400 transition rounded-lg"><!></button>'),Re=S('<button class="flex h-[1.6875rem] w-full items-center gap-2 rounded-xl px-2 text-[0.8125rem] cursor-pointer select-none hover:bg-gray-50/40 dark:hover:bg-gray-800/40"><div class="flex items-center line-clamp-1"> </div></button> <button class="flex h-[1.6875rem] w-full items-center gap-2 rounded-xl px-2 text-[0.8125rem] cursor-pointer select-none hover:bg-gray-50/40 dark:hover:bg-gray-800/40"><div class="flex items-center line-clamp-1"> </div></button>',1),Oe=S('<button slot="trigger" class="flex h-[1.6875rem] w-full items-center gap-2 rounded-xl px-2 text-[0.8125rem] cursor-pointer select-none hover:bg-gray-50/40 dark:hover:bg-gray-800/40"><!> <div class="flex items-center"> </div></button>'),Je=S('<div slot="content"><!></div>'),qe=S('<option class="bg-gray-50 dark:bg-gray-700"> </option>'),We=S('<button class="px-3.5 py-1.5 text-sm font-normal disabled:bg-gray-50 dark:disabled:hover:bg-gray-850 disabled:cursor-not-allowed bg-gray-50 hover:bg-gray-100 text-gray-900 dark:bg-gray-850 dark:hover:bg-gray-800 dark:text-gray-200 transition rounded-lg"> </button> <button class="px-3.5 py-1.5 text-sm font-normal bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-lg"> </button>',1),Xe=S('<button class="px-3 py-1.5 text-sm font-normal bg-gray-300 text-black transition rounded-lg"> </button>'),Ye=S('<!> <div class=" flex flex-col justify-between w-full overflow-y-auto h-full"><div class="mx-auto w-full md:px-0 h-full relative"><div class=" flex flex-col h-full px-2.5"><div class="flex w-full items-center gap-1.5"><!> <!></div> <div class=" pb-2.5 flex flex-col justify-between w-full flex-auto overflow-auto h-0" id="messages-container"><div class=" h-full w-full flex flex-col"><div class="flex-1 p-1"><!></div></div></div> <div class="pb-3"><div class="border border-gray-100/30 dark:border-gray-850/30 w-full px-3 py-2.5 rounded-xl"><div class="py-0.5"><textarea class=" w-full h-full bg-transparent resize-none outline-hidden text-sm" rows="2"></textarea></div> <div class="flex justify-between flex-col sm:flex-row items-start sm:items-center gap-2 mt-2"><div class="shrink-0"><button type="button"><!></button></div> <div class="flex items-center justify-between gap-2 w-full sm:w-auto"><div class="flex-1"><select class=" bg-transparent border border-gray-100/30 dark:border-gray-850/30 rounded-lg py-1 px-2 -mx-0.5 text-sm outline-hidden w-full"></select></div> <button id="playground-controls-toggle"><!></button> <div class="flex gap-2 shrink-0"><!></div></div></div></div></div></div></div></div>',1);function Fe(W,A){xt(A,!1);const r=()=>Z(V,"$i18n",J),R=()=>Z(he,"$models",J),X=()=>Z(pe,"$user",J),O=()=>Z(me,"$settings",J),_=()=>Z(fe,"$config",J),[J,Q]=Ot(),{saveAs:g}=ce,V=bt("i18n");let b=j(""),Y=j(!1),F=!1,H=j(),I=j(),T=j(!1),B=j(!1),N=j({}),w=j(""),z=j("user"),G=j(""),u=j([]);const wt=()=>{const e=t(I);e&&(e.scrollTop=e==null?void 0:e.scrollHeight)},Wt=()=>{F=!0},kt=async()=>{await rt(),t(H)&&(q(H,t(H).style.height=""),q(H,t(H).style.height=Math.min(t(H).scrollHeight,555)+"px"))},Xt=async()=>{var v;if(t(b)===""){mt.error(r().t("Please select a model."));return}const e=R().find(p=>p.id===t(b));if(!e){c(b,"");return}const l=Object.fromEntries(Object.entries(t(N)).filter(([p,f])=>f!=null)),[a,n]=await xe(localStorage.token,{model:e.id,stream:!0,messages:[t(w)?{role:"system",content:t(w)}:void 0,...t(u)].filter(p=>p),...Object.keys(l).length>0?l:{}},`${ue}/api`);let i;((v=t(u).at(-1))==null?void 0:v.role)==="assistant"?i=t(u).at(-1):(i={role:"assistant",content:""},t(u).push(i),c(u,t(u))),await rt();
1const m=document.getElementById(`assistant-${t(u).length-1}-textarea`);if(a&&a.ok){const p=a.body.pipeThrough(new TextDecoderStream).pipeThrough(ge(` 2`)).getReader();for(;;){const{value:f,done:k}=await p.read();if(k||F){F&&n.abort("User: Stop Response");break}try{let $=f.split(` 3`);for(const h of $)if(h!=="")if(h==="data: [DONE]")c(u,t(u));else{let P=JSON.parse(h.replace(/^data: /,""));if(i.content==""&&P.choices[0].delta.content==` 4`)continue;m.style.height=m.scrollHeight+"px",i.content+=P.choices[0].delta.content??"",c(u,t(u)),m.style.height=m.scrollHeight+"px",await rt()}}catch($){}wt()}}},$t=async()=>{t(G)&&(t(u).push({role:t(z),content:t(G)}),c(u,t(u)),c(G,""),await rt(),wt())},Yt=async()=>{t(b)&&(await $t(),c(Y,!0),await Xt(),c(Y,!1),F=!1)},Ft=()=>{const e=Math.floor(Date.now()/1e3),l={};let a=null,n=null;if(t(w)){const v=crypto.randomUUID();l[v]={id:v,parentId:null,childrenIds:[],role:"system",content:t(w),timestamp:e},n=v}for(const v of t(u)){const p=crypto.randomUUID();n&&l[n]&&l[n].childrenIds.push(p),l[p]={id:p,parentId:n,childrenIds:[],role:v.role,content:v.content,timestamp:e,...v.role==="assistant"&&t(b)?{model:t(b)}:{}},a=p,n=p}const i={chat:{title:"Playground Chat",models:[t(b)],params:t(w)?{system:t(w)}:{},history:{messages:l,currentId:a}},meta:{},pinned:!1,created_at:e,updated_at:e},m=new Blob([JSON.stringify([i],null,2)],{type:"application/json"});g(m,`playground-chat-${Date.now()}.json`),mt.success(r().t("Chat exported successfully"))},Gt=()=>{let e="";t(w)&&(e+=`### SYSTEM 5${t(w)} 6 7`);for(const a of t(u))e+=`### ${a.role.toUpperCase()} 8${a.content} 9 10`;const l=new Blob([e.trim()],{type:"text/plain"});g(l,`playground-chat-${Date.now()}.txt`),mt.success(r().t("Chat exported successfully"))};Rt(async()=>{var e,l,a,n,i;((e=X())==null?void 0:e.role)!=="admin"&&await ve("/"),(l=O())!=null&&l.models?c(b,(a=O())==null?void 0:a.models[0]):(n=_())!=null&&n.default_models?c(b,(i=_())==null?void 0:i.default_models.split(",")[0]):c(b,"")}),oe(()=>t(T),()=>{t(T)&&kt()}),le(),_t();var Ct=Ye(),Dt=gt(Ct);Me(Dt,{size:"sm",get show(){return t(B)},set show(e){c(B,e)},children:(e,l)=>{var a=Ne(),n=o(a),i=o(n),m=o(i,!0);s(i);var v=x(i,2),p=o(v);Se(p,{className:"size-4"}),s(v),s(n);var f=x(n,2),k=o(f);{let $=ne(()=>(X(),d(()=>{var h;return((h=X())==null?void 0:h.role)==="admin"})));ke(k,{get admin(){return t($)},custom:!0,get params(){return t(N)},set params(h){c(N,h)},$$legacy:!0})}s(f),s(a),D(($,h)=>{E(m,$),U(v,"aria-label",h)},[()=>(r(),d(()=>r().t("Controls"))),()=>(r(),d(()=>r().t("Close")))]),M("click",v,()=>{c(B,!1)}),y(e,a)},$$slots:{default:!0},$$legacy:!0});var Mt=x(Dt,2),St=o(Mt),zt=o(St),lt=o(zt),Et=o(lt);be(Et,{className:"w-full flex-1",buttonClassName:"w-full rounded-lg text-sm border border-gray-100/30 dark:border-gray-850/30 w-full py-1 px-1.5",grow:!0,get open(){return t(T)},set open(e){c(T,e)},children:(e,l)=>{var a=Ue(),n=o(a),i=o(n,!0);s(n);var m=x(n,2);{var v=C=>{var et=Te(),vt=o(et,!0);s(et),D(()=>E(vt,t(w))),y(C,et)},p=ie(()=>(t(T),t(w),d(()=>!t(T)&&t(w).trim())));st(m,C=>{t(p)&&C(v)})}var f=x(m,2),k=o(f),$=o(k);{var h=C=>{$e(C,{className:"size-3.5"})},P=C=>{Ce(C,{className:"size-3.5"})};st($,C=>{t(T)?C(h):C(P,-1)})}s(k),s(f),s(a),D(C=>E(i,C),[()=>(r(),d(()=>r().t("System Instructions")))]),y(e,a)},$$slots:{default:!0,content:(e,l)=>{var a=Ae(),n=o(a),i=o(n);pt(i),ht(i,m=>c(H,m),()=>t(H)),s(n),s(a),D(m=>U(i,"placeholder",m),[()=>(r(),d(()=>r().t("You're a helpful assistant.")))]),ft(i,()=>t(w),m=>c(w,m)),M("input",i,()=>{kt()}),y(e,a)}},$$legacy:!0});var Kt=x(Et,2);ye(Kt,{children:(e,l)=>{var a=Be(),n=o(a);Ee(n,{className:"size-3.5"}),s(a),D(i=>U(a,"aria-label",i),[()=>(r(),d(()=>r().t("More options")))]),y(e,a)},$$slots:{default:!0,content:(e,l)=>{var a=Je(),n=o(a);_e(n,{className:"min-w-[12.5rem]",children:(i,m)=>{we(i,{contentClass:"select-none z-50",children:(v,p)=>{var f=Re(),k=gt(f),$=o(k),h=o($,!0);s($),s(k);var P=x(k,2),C=o(P),et=o(C,!0);s(C),s(P),D((vt,se)=>{k.disabled=(t(u),d(()=>t(u).length===0)),E(h,vt),P.disabled=(t(u),d(()=>t(u).length===0)),E(et,se)},[()=>(r(),d(()=>r().t("Export chat (.json)"))),()=>(r(),d(()=>r().t("Plain text (.txt)")))]),M("click",k,()=>{Ft()}),M("click",P,()=>{Gt()}),y(v,f)},$$slots:{default:!0,trigger:(v,p)=>{var f=Oe(),k=o(f);ze(k,{className:"size-3.5",strokeWidth:"1.5"});var $=x(k,2),h=o($,!0);s($),s(f),D(P=>E(h,P),[()=>(r(),d(()=>r().t("Download")))]),y(v,f)}}})},$$slots:{default:!0}}),s(a),y(e,a)}}}),s(lt);var at=x(lt,2),Ht=o(at),Pt=o(Ht),Lt=o(Pt);Ie(Lt,{get messages(){return t(u)},set messages(e){c(u,e)},$$legacy:!0}),s(Pt),s(Ht),s(at),ht(at,e=>c(I,e),()=>t(I));var jt=x(at,2),It=o(jt),nt=o(It),tt=o(nt);pt(tt),s(nt);var Nt=x(nt,2),it=o(Nt),K=o(it),Zt=o(K);{var Qt=e=>{var l=At();D(a=>E(l,a),[()=>(r(),d(()=>r().t("User")))]),y(e,l)},Vt=e=>{var l=At();D(a=>E(l,a),[()=>(r(),d(()=>r().t("Assistant")))]),y(e,l)};st(Zt,e=>{t(z)==="user"?e(Qt):e(Vt,-1)})}s(K),s(it);var Tt=x(it,2),dt=o(Tt),ct=o(dt);Jt(ct,5,R,qt,(e,l)=>{var a=qe(),n=o(a,!0);s(a);var i={};D(()=>{E(n,(t(l),d(()=>t(l).name))),i!==(i=(t(l),d(()=>t(l).id)))&&(a.value=(a.__value=(t(l),d(()=>t(l).id)))??"")}),y(e,a)}),s(ct),s(dt);var L=x(dt,2),te=o(L);De(te,{className:"size-3.5"}),s(L);var Ut=x(L,2),ee=o(Ut);{var ae=e=>{var l=We(),a=gt(l),n=o(a,!0);s(a);var i=x(a,2),m=o(i,!0);s(i),D((v,p)=>{a.disabled=t(G)==="",E(n,v),E(m,p)},[()=>(r(),d(()=>r().t("Add"))),()=>(r(),d(()=>r().t("Run")))]),M("click",a,()=>{$t(),c(z,t(z)==="user"?"assistant":"user")}),M("click",i,()=>{Yt()}),y(e,l)},re=e=>{var l=Xe(),a=o(l,!0);s(l),D(n=>E(a,n),[()=>(r(),d(()=>r().t("Cancel")))]),M("click",l,()=>{Wt()}),y(e,l)};st(ee,e=>{t(Y)?e(re,-1):e(ae)})}s(Ut),s(Tt),s(Nt),s(It),s(jt),s(zt),s(St),s(Mt),D((e,l,a)=>
10{U(tt,"placeholder",e),Bt(K,1,`px-3.5 py-1.5 text-sm font-normal bg-gray-50 hover:bg-gray-100 text-gray-900 dark:bg-gray-850 dark:hover:bg-gray-800 dark:text-gray-200 transition rounded-lg shrink-0 ${O(),d(()=>{var n;return((n=O())==null?void 0:n.highContrastMode)??!1?"":"outline-hidden"})??""}`),U(K,"aria-pressed",t(z)==="assistant"),U(K,"aria-label",l),Bt(L,1,`p-1.5 text-sm font-normal bg-transparent hover:bg-gray-100 dark:hover:bg-gray-800 transition rounded-lg ${t(B)?"text-black dark:text-white":"text-gray-500 dark:text-gray-400"}`),U(L,"aria-label",a)},[()=>(r(),t(z),d(()=>r().t("Enter {{role}} message here",{role:t(z)==="user"?r().t("a user"):r().t("an assistant")}))),()=>(r(),t(z),d(()=>r().t(t(z)==="user"?"Switch to Assistant role":"Switch to User role"))),()=>(r(),d(()=>r().t("Controls")))]),ft(tt,()=>t(G),e=>c(G,e)),M("input",tt,e=>{e.target.style.height="",e.target.style.height=Math.min(e.target.scrollHeight,150)+"px"}),M("focus",tt,e=>{e.target.style.height="",e.target.style.height=Math.min(e.target.scrollHeight,150)+"px"}),M("click",K,()=>{c(z,t(z)==="user"?"assistant":"user")}),de(ct,()=>t(b),e=>c(b,e)),M("click",L,()=>{c(B,!t(B))}),y(W,Ct),yt(),Q()}function _a(W){Fe(W,{})}export{_a as component}; 11//# sourceMappingURL=32.hFAd0zMK.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.