@hyperpuncher/pi-ui 0.38.2 → 0.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
- import{ec as Me,fc as xe}from"./chunks/main-x61973bh.js";function O(e,t){let n=e.toLowerCase(),r=t.toLowerCase(),o=(d)=>{if(d.length===0)return{matches:!0,score:0};if(d.length>r.length)return{matches:!1,score:0};let f=0,b=0,R=-1,ee=0;for(let y=0;y<r.length&&f<d.length;y++)if(r[y]===d[f]){let Tt=y===0||/[\s\-_./:]/.test(r[y-1]);if(R===y-1)ee++,b-=ee*5;else if(ee=0,R>=0)b+=(y-R-1)*2;if(Tt)b-=10;b+=y*0.1,R=y,f++}if(f<d.length)return{matches:!1,score:0};if(d===r)b-=100;return{matches:!0,score:b}},i=o(n);if(i.matches)return i;let s=n.match(/^(?<letters>[a-z]+)(?<digits>[0-9]+)$/),c=n.match(/^(?<digits>[0-9]+)(?<letters>[a-z]+)$/),a=s?`${s.groups?.digits??""}${s.groups?.letters??""}`:c?`${c.groups?.letters??""}${c.groups?.digits??""}`:"";if(!a)return i;let u=o(a);if(!u.matches)return i;return{matches:!0,score:u.score+5}}function I(e,t,n){if(!t.trim())return e;let r=t.trim().split(/[\s/]+/).filter((i)=>i.length>0);if(r.length===0)return e;let o=[];for(let i of e){let s=n(i),c=0,a=!0;for(let u of r){let d=O(u,s);if(d.matches)c+=d.score;else{a=!1;break}}if(a)o.push({item:i,totalScore:c})}return o.sort((i,s)=>i.totalScore-s.totalScore),o.map((i)=>i.item)}var q=new Set,te=!1;function k(e=document){if(!e)return;for(let t of Lt(e))q.add(t);if(te||q.size===0)return;te=!0,queueMicrotask(()=>{te=!1;for(let t of q){let n=At(t);t.refresh?.(),St(t,n)}q.clear()})}function At(e){let t=e.closest?.("#session-dialog");if(!(t instanceof HTMLDialogElement)||!t.open)return;let n=e.querySelector("#session-input"),r=e.querySelector("#session-menu");if(!(n instanceof HTMLInputElement)||!(r instanceof HTMLElement))return;return{activeId:n.getAttribute("aria-activedescendant")}}function St(e,t){if(!t)return;let n=e.querySelector("#session-menu"),r=t.activeId&&document.getElementById(t.activeId);if(n instanceof HTMLElement&&r instanceof HTMLElement&&e.contains(r)&&r.getAttribute("aria-hidden")!=="true")r.dispatchEvent(new MouseEvent("mousemove",{bubbles:!0}));if(n instanceof HTMLElement)n.scrollTop=0}function Lt(e){let t=[];if(e instanceof Element&&ve(e))t.push(e);for(let n of e.querySelectorAll?.(".command, .dropdown-menu")??[])if(ve(n))t.push(n);return t}function ve(e){return e.refresh instanceof Function}function we(){document.addEventListener("click",async(e)=>{let t=e.target;if(!(t instanceof Element))return;let n=t.closest("[data-copy-code]");if(!(n instanceof HTMLButtonElement))return;let r=n.closest("[data-code-block]"),o=r?.querySelector("[data-code-source]"),i=r?.querySelector("code"),s=o?.textContent?It(o.textContent):i?.textContent;if(!s)return;try{await navigator.clipboard.writeText(s),n.dataset.copyState="copied",n.setAttribute("aria-label","Copied"),setTimeout(()=>{delete n.dataset.copyState,n.setAttribute("aria-label","Copy code")},1200)}catch{n.setAttribute("aria-label","Copy failed")}})}function It(e){let t=document.createElement("textarea");return t.innerHTML=e,t.value}var re={};Me(re,{bindDialogs:()=>ne,openCommand:()=>Se,openTree:()=>Ht,openWorkspace:()=>Le,openWorkspaceBrowser:()=>Ct,toggleCommand:()=>Ft,togglePopover:()=>Pt,toggleSession:()=>kt,toggleWorkspace:()=>Dt});function U(e,t,n={}){let r=document.getElementById(e);if(!(r instanceof HTMLDialogElement))return;if(!r.open)Te(r,document.activeElement),ke(document.getElementById(t)),r.showModal();k(r),requestAnimationFrame(()=>{let o=n.activeSelector?r.querySelector(n.activeSelector):void 0;o?.dispatchEvent(new MouseEvent("mousemove",{bubbles:!0})),o?.scrollIntoView({block:"center"});let i=document.getElementById(t);if(i instanceof HTMLInputElement)i.focus({preventScroll:!0})})}function Te(e,t){e.addEventListener("close",()=>{setTimeout(()=>Ae(t),0)},{once:!0})}function Ae(e){if(!(e instanceof HTMLElement))return;let t=e.isConnected?e:e.id?document.getElementById(e.id):void 0;if(!(t instanceof HTMLElement))return;if(document.activeElement===t)t.blur();t.focus({preventScroll:!0})}function kt(){let e=document.getElementById("session-dialog");if(!(e instanceof HTMLDialogElement))return!1;if(e.open)return e.close(),!1;return U("session-dialog","session-input"),!0}function Ht(){Ie(document.getElementById("tree-selected-id")),U("tree-dialog","tree-input",{activeSelector:"[data-active-tree-row]"})}function Se(){U("command-dialog","command-input")}function Ft(){let e=document.getElementById("command-dialog");if(!(e instanceof HTMLDialogElement))return!1;if(e.open)return e.close(),!1;return Se(),!0}function ne(){document.addEventListener("click",(e)=>{let t=e.target instanceof Element?e.target.closest("button[aria-haspopup][aria-expanded]"):void 0;if(!(t instanceof HTMLButtonElement))return;if(t.getAttribute("aria-expanded")==="true")return;let n=t.closest(".popover, .dropdown-menu");ke(n?.querySelector("input[role='combobox'], input[type='search']"))},{capture:!0})}function Pt(e){let t=document.getElementById(e);if(!(t instanceof HTMLButtonElement))return!1;let n=t.getAttribute("aria-expanded")!=="true";if(n)Bt(t,document.activeElement);return t.click(),n}function Bt(e,t){let n=new MutationObserver(()=>{if(e.getAttribute("aria-expanded")==="true")return;n.disconnect(),Ae(t)});n.observe(e,{attributeFilter:["aria-expanded"]})}function Le(){U("workspace-dialog","workspace-input")}function Ct(){let e=document.getElementById("workspace-browser-dialog");if(!(e instanceof HTMLDialogElement))return;if(!e.open)document.getElementById("workspace-dialog")?.close(),Te(e,document.getElementById("workspace-picker")),e.showModal();k(e)}function Dt(){let e=document.getElementById("workspace-dialog");if(!(e instanceof HTMLDialogElement))return!1;if(e.open)return e.close(),!1;return Le(),!0}function Ie(e){if(!(e instanceof HTMLInputElement))return;e.value="",e.dispatchEvent(new Event("input",{bubbles:!0}))}function ke(e){if(!(e instanceof HTMLInputElement))return;Ie(e);let t=e.getAttribute("aria-controls"),n=t?document.getElementById(t):void 0;if(n instanceof HTMLElement)n.scrollTop=0}var Rt=[60,75,90,100,120,144,165,240];function Ot(e){if(e.length<9)return;let t=e.slice(6),n=[];for(let a=1;a<t.length;a+=1){let u=t[a]-t[a-1];if(u>=3.666666666666667&&u<=33.333333333333336)n.push(u)}if(n.length<3)return;let r=oe(n,0.5),o=n.map((a)=>Math.abs(a-r)),s=oe(o,0.5)/r>0.06?oe(n,0.25):r,c=Fe(1000/s,30,240);return qt(c)}function qt(e){let t=Rt.reduce((n,r)=>Math.abs(r-e)<Math.abs(n-e)?r:n);return Math.abs(t-e)/t<=0.08?t:Math.round(Fe(e,30,240))}function $t(e){let t=e.sampleFrames??48,n,r,o=[],i,s,c=(f)=>{if(n=void 0,!e.isEligible())return;if(o.push(f),o.length>=t){let b=Ot(o);if(o=[],b!==void 0)a(b);return}n=e.requestFrame(c)},a=(f)=>{if(i!==void 0&&(Math.abs(i-f)<1||Math.abs(i-f)/i<0.02))return;if(s=f,r!==void 0)e.clearTimer(r);r=e.setTimer(()=>{if(r=void 0,!e.isEligible()||s===void 0)return;i=s,e.send(s),s=void 0},250)};return{restart:()=>{if(n!==void 0)e.cancelFrame(n);if(n=void 0,o=[],e.isEligible())n=e.requestFrame(c)},stop:()=>{if(n!==void 0)e.cancelFrame(n);if(r!==void 0)e.clearTimer(r);n=void 0,r=void 0,o=[],s=void 0}}}function He(){let e=$t({requestFrame:(t)=>requestAnimationFrame(t),cancelFrame:(t)=>cancelAnimationFrame(t),isEligible:()=>document.visibilityState==="visible"&&document.hasFocus(),setTimer:(t,n)=>setTimeout(t,n),clearTimer:(t)=>clearTimeout(t),send:(t)=>{document.body.dispatchEvent(new CustomEvent("pi-ui-display-refresh",{detail:{hz:t}}))}});e.restart(),document.addEventListener("visibilitychange",e.restart),window.addEventListener("focus",e.restart),window.addEventListener("pagehide",e.stop,{once:!0})}function oe(e,t){let n=[...e].sort((r,o)=>r-o);return n[Math.min(n.length-1,Math.floor((n.length-1)*t))]}function Fe(e,t,n){return Math.min(n,Math.max(t,e))}function Be(){document.addEventListener("click",(e)=>{if(e.button!==0)return;let t=e.target instanceof Element?e.target.closest("a[href]"):null;if(!(t instanceof HTMLAnchorElement))return;let n=t.getAttribute("data-pi-file-link")??"",r=Pe(n)?n:t.href;if(!Pe(r))return;e.preventDefault(),Ut(r)},{capture:!0})}function Pe(e){try{return new URL(e).protocol==="file:"}catch{return!1}}async function Ut(e){let t=document.body.dataset.filesOpenEndpoint;if(!t)return;try{let n=await fetch(t,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({uri:e})});if(!n.ok)throw Error(await Nt(n));if(n.status===204)return;let r=URL.createObjectURL(await n.blob()),o=document.createElement("a");o.href=r,o.download=zt(n),o.click(),setTimeout(()=>URL.revokeObjectURL(r),0)}catch(n){alert(n instanceof Error?n.message:"Could not open the file.")}}async function Nt(e){try{let t=await e.json();return t.error||t.message||"Could not open the file."}catch{return"Could not open the file."}}function zt(e){try{return decodeURIComponent(e.headers.get("x-pi-file-name"))||"download"}catch{return"download"}}var be={};Me(be,{canSubmit:()=>pe,composePrompt:()=>st,convertAvifToJpeg:()=>ot,enterDrag:()=>on,extractTransferredFilePaths:()=>tt,formatFileReferences:()=>it,hasAttachments:()=>et,hasFiles:()=>nn,insert:()=>Qe,isAvifImageFile:()=>he,isHeicImageFile:()=>ge,jpegFileName:()=>rt,leaveDrag:()=>sn,pick:()=>rn,resetDrag:()=>an,submit:()=>cn});function Ce(e){try{let t=new URL(e);if(t.protocol!=="file:")return;let n=decodeURIComponent(t.pathname);if(t.hostname&&t.hostname.toLowerCase()!=="localhost")return`//${t.hostname}${n}`;if(/^\/[A-Za-z]:(?:\/|$)/.test(n))return n.slice(1);return n}catch{return}}var ie={archive:{paths:["M13.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v11.5","M14 2v5a1 1 0 0 0 1 1h5M8 12v-1m0 7v-2m0-9V6"],circle:{cx:8,cy:20,r:2}},audio:{paths:["M17.5 22h.5a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3","M14 2v4a2 2 0 0 0 2 2h4M2 19a2 2 0 1 1 4 0v1a2 2 0 1 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 1 1-4 0v-1a2 2 0 1 1 4 0"]},code:{paths:["M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4","M14 2v4a2 2 0 0 0 2 2h4M5 12l-3 3l3 3m4 0l3-3l-3-3"]},file:{paths:["M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z","M14 2v5a1 1 0 0 0 1 1h5"]},pdf:{paths:["M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4","M14 2v4a2 2 0 0 0 2 2h4M2 13v-1h6v1m-3-1v6m-1 0h2"]},text:{paths:["M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z","M14 2v5a1 1 0 0 0 1 1h5M10 9H8m8 4H8m8 4H8"]},video:{paths:["M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z","M14 2v5a1 1 0 0 0 1 1h5m-4.967 5.44a.647.647 0 0 1 0 1.12l-4.065 2.352a.645.645 0 0 1-.968-.56v-4.704a.645.645 0 0 1 .967-.56z"]}};function De(e,t){let n=e.split(".").at(-1)?.toLowerCase()??"";if(t==="application/pdf"||n==="pdf")return"pdf";if(t?.startsWith("audio/")||["aac","flac","m4a","mp3","ogg","wav"].includes(n))return"audio";if(t?.startsWith("video/")||["avi","m4v","mkv","mov","mp4","webm"].includes(n))return"video";if(t?.includes("zip")||["7z","bz2","gz","rar","tar","xz","zip"].includes(n))return"archive";if(["c","cpp","css","go","h","html","java","js","json","jsx","py","rs","sh","sql","toml","ts","tsx","xml","yaml","yml"].includes(n)||t==="application/json"||t?.includes("javascript")||t?.includes("xml"))return"code";if(t?.startsWith("text/")||["csv","log","md","rst","txt"].includes(n))return"text";return"file"}function m(){let e=document.getElementById("prompt-input");return e instanceof HTMLTextAreaElement?e:void 0}function ae(){return m()?.value??""}function w(e){let t=m();if(!t)return;t.value=e,t.dispatchEvent(new Event("input",{bubbles:!0}))}function H(){let e=m();if(!e)return;e.focus({preventScroll:!0}),e.selectionStart=e.value.length,e.selectionEnd=e.value.length}function Oe(e){let t=m();if(!t)return;let n=t.selectionStart??t.value.length,r=t.selectionEnd??n;t.value=`${t.value.slice(0,n)}${e}${t.value.slice(r)}`;let o=n+e.length;t.selectionStart=o,t.selectionEnd=o,t.dispatchEvent(new Event("input",{bubbles:!0}))}function qe(){let e=m();if(!e)return;let t=e.selectionStart??e.value.length,n=e.selectionEnd??t;if(t!==n)e.value=`${e.value.slice(0,t)}${e.value.slice(n)}`,e.selectionStart=t,e.selectionEnd=t;else if(t>0)e.value=`${e.value.slice(0,t-1)}${e.value.slice(t)}`,e.selectionStart=t-1,e.selectionEnd=t-1;e.dispatchEvent(new Event("input",{bubbles:!0}))}var Re,se;function $e(){let e=document.getElementById("prompt-footer");if(!(e instanceof HTMLElement))return;se??=new ResizeObserver(_t),se.disconnect(),se.observe(e)}function _t(){cancelAnimationFrame(Re),Re=requestAnimationFrame(()=>{let e=document.getElementById("prompt-footer");if(!(e instanceof HTMLElement))return;if(e.removeAttribute("data-toolbar-compact"),e.removeAttribute("data-context-compact"),e.setAttribute("data-measuring",""),e.scrollWidth>e.clientWidth){if(e.setAttribute("data-toolbar-compact",""),e.scrollWidth>e.clientWidth)e.setAttribute("data-context-compact","")}e.removeAttribute("data-measuring")})}function Ue(){document.addEventListener("pointerdown",(e)=>{let t=e.target;if(!(t instanceof Element))return;let n=t.closest("[data-tooltip]");if(!(n instanceof HTMLElement))return;n.setAttribute("data-tooltip-suppressed",""),n.addEventListener("pointerleave",()=>n.removeAttribute("data-tooltip-suppressed"),{once:!0})})}var F,P=!1,le,_e;function Kt(e,t){let n=e.slice(0,t),o=Math.max(n.lastIndexOf(" "),n.lastIndexOf(`
2
- `),n.lastIndexOf("\t"),n.lastIndexOf("="))+1,i=n.slice(o);if(!i.startsWith("@")||i.includes(" "))return;return{start:o,end:t,query:i.slice(1)}}function Wt(e,t,n){let r=n.endsWith("/")?"":" ";return{text:`${e.slice(0,t.start)}@${n}${r}${e.slice(t.end)}`,cursor:t.start+n.length+1+r.length}}function B(){return We("prompt-file-popover")}function N(){return B()||ue()}function Ke(e){_e=e.fuzzyFilter,document.addEventListener("input",Ne),document.addEventListener("keyup",Ne),document.addEventListener("click",jt),document.addEventListener("keydown",Vt),Ve(ae())}function Ne(e){if(!(e.target instanceof HTMLTextAreaElement)||e.target.id!=="prompt-input")return;if(P&&e.type==="keyup")return;if(e.type==="input")P=!1;if(z(e.target),Ve(e.target.value),e.target.value.startsWith("/"))je("slash-picker-list","[data-slash-row]")}function z(e){if(P)return;let t=Kt(e.value,e.selectionStart??e.value.length);if(!t){de();return}F=t,clearTimeout(le),le=setTimeout(()=>{if(F!==t)return;e.dispatchEvent(new CustomEvent("pi-ui-file-query",{bubbles:!0,detail:{query:t.query}}))},50)}function jt(e){let t=e.target;if(!(t instanceof Element))return;let n=t.closest('[data-picker-kind="slash"]'),r=t.closest('[data-picker-kind="file"]');if(t.closest("[data-file-trigger]"))e.preventDefault(),Gt();else if(t.closest("[data-send-trigger]"))M(!0);else if(n instanceof HTMLElement)e.preventDefault();else if(r instanceof HTMLElement)e.preventDefault(),Yt(r.dataset.pickerValue??"");else if(t instanceof HTMLTextAreaElement&&t.id==="prompt-input")z(t)}function Vt(e){if(e.isComposing)return;if(e.ctrlKey||e.metaKey||e.altKey)return;if(e.code==="Escape"){let n=document.activeElement?.closest?.("[data-picker-kind]");if(N())e.preventDefault();if(M(!0),ae()==="/")w("");if(n)m()?.focus({preventScroll:!0});return}if(document.activeElement?.closest?.("[data-file-row]")){if(e.code==="Backspace"){e.preventDefault(),H(),qe();return}if(e.key.length===1){e.preventDefault(),H(),Oe(e.key);return}}let t=document.activeElement;if(t?.id==="prompt-input"){if((e.code==="ArrowDown"||e.code==="ArrowUp")&&ue()){e.preventDefault(),ce("[data-slash-row]",e.code==="ArrowDown"?1:-1);return}if((e.code==="ArrowDown"||e.code==="ArrowUp")&&B()){e.preventDefault(),ce("[data-file-row]",e.code==="ArrowDown"?1:-1);return}if(e.code==="Enter"&&!e.shiftKey&&B()){e.preventDefault(),ze("[data-file-row]")?.querySelector("button")?.click();return}if(e.code==="Enter"&&!e.shiftKey&&ue()){e.preventDefault(),ze("[data-slash-row]")?.querySelector("button")?.click();return}}for(let n of["[data-slash-row]","[data-file-row]"]){if(!t?.closest?.(n))continue;if(e.code==="ArrowDown"||e.code==="ArrowUp")e.preventDefault(),ce(n,e.code==="ArrowDown"?1:-1);else if(e.code==="Enter")e.preventDefault(),t.click();return}}function Yt(e){let t=m();if(!t||!F)return;let n=Wt(t.value,F,e);if(t.value=n.text,t.selectionStart=n.cursor,t.selectionEnd=n.cursor,t.dispatchEvent(new Event("input",{bubbles:!0})),t.focus(),e.endsWith("/"))z(t);else de()}function Gt(){let e=m();if(!e)return;P=!1;let t=e.selectionStart??e.value.length,r=`${t>0&&!/\s/.test(e.value[t-1]??"")?" ":""}@`;e.value=`${e.value.slice(0,t)}${r}${e.value.slice(e.selectionEnd??t)}`;let o=t+r.length;e.selectionStart=o,e.selectionEnd=o,e.dispatchEvent(new Event("input",{bubbles:!0})),e.focus(),z(e)}function M(e=!1){de(e),m()?.dispatchEvent(new CustomEvent("pi-ui-picker-close",{bubbles:!0}))}function de(e=!1){if(clearTimeout(le),e)P=!0;F=void 0,m()?.dispatchEvent(new CustomEvent("pi-ui-file-close",{bubbles:!0}))}function ue(){return We("prompt-slash-popover")}function We(e){let t=document.getElementById(e);return t instanceof HTMLElement&&t.style.display!=="none"}function fe(e){return[...document.querySelectorAll(e)].filter((t)=>t instanceof HTMLElement&&getComputedStyle(t).display!=="none")}function ze(e){let t=fe(e);return t.find((n)=>n.getAttribute("aria-selected")==="true")??t[0]}function Jt(e){let t=fe(e);for(let[n,r]of t.entries())r.setAttribute("aria-selected",n===0?"true":"false")}function je(e,t){let n=document.getElementById(e);if(n instanceof HTMLElement)n.scrollTop=0;Jt(t)}function Ve(e){if(!e.startsWith("/")||e.includes(" "))return;let t=document.getElementById("slash-picker-list");if(!(t instanceof HTMLElement))return;let n=[...t.querySelectorAll("[data-slash-row]")].sort((i,s)=>Number(i.dataset.slashOrder)-Number(s.dataset.slashOrder)),r=_e(n,e.slice(1),(i)=>i.dataset.slashName??""),o=new Set(r);t.append(...r,...n.filter((i)=>!o.has(i)))}function Ye(){je("file-picker-list","[data-file-row]")}function Zt(e,t,n){if(e<=0)return-1;if(t===-1)return 0;return Math.max(0,Math.min(e-1,t-n))}function ce(e,t){let n=fe(e);if(n.length===0)return;let r=document.activeElement?.closest?.(e),o=n.findIndex((s)=>s===r);if(o===-1)o=n.findIndex((s)=>s.getAttribute("aria-selected")==="true");let i=Zt(n.length,o,t);for(let s of n)s.setAttribute("aria-selected","false");n[i]?.setAttribute("aria-selected","true"),n[i]?.querySelector("button")?.focus()}var Xt=["text/uri-list","x-special/gnome-copied-files","text/plain"],Ge=10,Qt=20971520,en=52428800,tn=0.85,C=0,me=!1,g=[];function nn(e){if(!e)return!1;if(e.files?.length)return!0;return[...e.types].some((t)=>t==="Files"||t==="text/uri-list")}function rn(){h("");let e=document.createElement("input");e.type="file",e.multiple=!0,e.addEventListener("change",()=>{if(e.files?.length)Qe(e.files)},{once:!0}),e.click()}function on(){return C+=1,!0}function sn(){return C=Math.max(0,C-1),C>0}function an(){C=0}async function Qe(e){if(!e)return;h("");let t=nt(e),n=t.some((a)=>he(a)||ge(a)),r=tt(e);if(r.length>0&&!n){let a=un(r);if(a){h(a);return}mn(r);return}if(t.length===0)return;let o=Je(t);if(o){h(o);return}let i;try{i=await ln(t)}catch(a){console.error(a),h(a?.message||"Could not prepare the selected images.");return}let s=Je(i);if(s){h(s);return}let c=await fn(i);for(let a=0;a<c.length;a+=1)at({path:c[a],file:i[a]})}function et(){return g.length>0}function pe(e){return!me&&(e.trim()!==""||et())}async function cn(e,t,n){if(!pe(t))return!1;let r=[...g],o=st(t,r.map(({path:s})=>s)),i=new FormData;if(i.set("prompt",o),n)i.set("streamingBehavior",n);for(let{file:s}of r)if(s?.type.startsWith("image/"))i.append("image",s,s.name||"pasted-image");me=!0;try{let s=await fetch(e,{method:"POST",body:i});if(await s.text(),!s.ok)throw Error(`Prompt was not accepted (${s.status}).`);return hn(r),h(""),!0}catch(s){return pn(t),h(s?.message||"Could not send the prompt."),!1}finally{me=!1,document.getElementById("prompt-box")?.dispatchEvent(new CustomEvent("pi-ui-prompt-submit-finished",{bubbles:!0})),Ee()}}function tt(e){let t="getData"in e?Xt.flatMap((n)=>e.getData(n).split(/\r?\n/)):[];for(let n of nt(e))t.push(n.path??"",n.webkitRelativePath??"");return[...new Set(t.map(dn).filter(Boolean))]}function nt(e){if(e.files)return[...e.files];return Array.from(e)}function he(e){return e.type?.toLowerCase()==="image/avif"||/\.avif$/i.test(e.name??"")}function ge(e){return/^(?:image\/)?hei[cf]$/i.test(e.type??"")||/\.hei[cf]$/i.test(e.name??"")}function rt(e){return/\.avif$/i.test(e)?e.replace(/\.avif$/i,".jpg"):`${e||"image"}.jpg`}async function ln(e){let t=[];for(let n of e){if(ge(n))throw Error("HEIC and HEIF images are not supported. Convert them to JPEG or PNG first.");t.push(he(n)?await ot(n):n)}return t}async function ot(e){let t;try{t=await createImageBitmap(e);let n=document.createElement("canvas");n.width=t.width,n.height=t.height;let r=n.getContext("2d");if(!r)throw Error("Canvas image conversion is unavailable.");r.fillStyle="white",r.fillRect(0,0,n.width,n.height),r.drawImage(t,0,0,n.width,n.height);let o=await new Promise((i,s)=>{n.toBlob((c)=>c?i(c):s(Error("JPEG encoding failed.")),"image/jpeg",tn)});return new File([o],rt(e.name),{type:"image/jpeg",lastModified:e.lastModified})}catch(n){throw Error(`Could not convert ${e.name||"the AVIF image"} to JPEG.`,{cause:n})}finally{t?.close()}}function un(e){if(e.some((t)=>/\.hei[cf]$/i.test(t)))return"HEIC and HEIF images are not supported. Convert them to JPEG or PNG first.";if(e.some((t)=>/\.avif$/i.test(t)))return"AVIF images must be dropped, pasted, or selected with the browser file picker so they can be converted."}function dn(e){let t=e.trim();if(!t||t.startsWith("#")||t==="copy"||t==="cut")return;let n=Ce(t);if(n)return n;if(t.startsWith("/")||/^[A-Za-z]:[\\/]/.test(t))return t;return}function Je(e){if(e.length>Ge)return`Attach at most ${Ge} files at a time.`;if(e.some((n)=>n.size>Qt))return"Dropped or pasted files must be 20 MiB or smaller; use the Files button for larger files.";if(e.reduce((n,r)=>n+r.size,0)>en)return"Dropped or pasted files must total 50 MiB or less."}async function fn(e){let t=new FormData;for(let n of e)t.append("file",n,n.name||"pasted-file");try{let n=document.body.dataset.filesImportEndpoint,r=await fetch(n,{method:"POST",body:t}),o=await r.json().catch(()=>({}));if(!r.ok)return h(o.message?.constructor===String?o.message:"Could not transfer the selected files."),[];return h(""),Array.isArray(o.paths)?o.paths:[]}catch{return h("Could not transfer the selected files."),[]}}function h(e){let t=m();if(!t)return;let n=document.getElementById("file-transfer-error");if(!(n instanceof HTMLParagraphElement))n=document.createElement("p"),n.id="file-transfer-error",n.className="text-destructive mb-1 px-1 text-xs",n.setAttribute("role","alert"),n.setAttribute("aria-live","polite"),t.before(n);n.textContent=e,n.hidden=!e}function it(e){return`${e.map((t)=>`@${t}`).join(`
1
+ import{ec as Me,fc as xe}from"./chunks/main-x61973bh.js";function O(e,t){let n=e.toLowerCase(),r=t.toLowerCase(),o=(d)=>{if(d.length===0)return{matches:!0,score:0};if(d.length>r.length)return{matches:!1,score:0};let f=0,b=0,R=-1,ee=0;for(let y=0;y<r.length&&f<d.length;y++)if(r[y]===d[f]){let At=y===0||/[\s\-_./:]/.test(r[y-1]);if(R===y-1)ee++,b-=ee*5;else if(ee=0,R>=0)b+=(y-R-1)*2;if(At)b-=10;b+=y*0.1,R=y,f++}if(f<d.length)return{matches:!1,score:0};if(d===r)b-=100;return{matches:!0,score:b}},i=o(n);if(i.matches)return i;let s=n.match(/^(?<letters>[a-z]+)(?<digits>[0-9]+)$/),c=n.match(/^(?<digits>[0-9]+)(?<letters>[a-z]+)$/),a=s?`${s.groups?.digits??""}${s.groups?.letters??""}`:c?`${c.groups?.letters??""}${c.groups?.digits??""}`:"";if(!a)return i;let u=o(a);if(!u.matches)return i;return{matches:!0,score:u.score+5}}function I(e,t,n){if(!t.trim())return e;let r=t.trim().split(/[\s/]+/).filter((i)=>i.length>0);if(r.length===0)return e;let o=[];for(let i of e){let s=n(i),c=0,a=!0;for(let u of r){let d=O(u,s);if(d.matches)c+=d.score;else{a=!1;break}}if(a)o.push({item:i,totalScore:c})}return o.sort((i,s)=>i.totalScore-s.totalScore),o.map((i)=>i.item)}var q=new Set,te=!1;function k(e=document){if(!e)return;for(let t of It(e))q.add(t);if(te||q.size===0)return;te=!0,queueMicrotask(()=>{te=!1;for(let t of q){let n=St(t);t.refresh?.(),Lt(t,n)}q.clear()})}function St(e){let t=e.closest?.("#session-dialog");if(!(t instanceof HTMLDialogElement)||!t.open)return;let n=e.querySelector("#session-input"),r=e.querySelector("#session-menu");if(!(n instanceof HTMLInputElement)||!(r instanceof HTMLElement))return;return{activeId:n.getAttribute("aria-activedescendant")}}function Lt(e,t){if(!t)return;let n=e.querySelector("#session-menu"),r=t.activeId&&document.getElementById(t.activeId);if(n instanceof HTMLElement&&r instanceof HTMLElement&&e.contains(r)&&r.getAttribute("aria-hidden")!=="true")r.dispatchEvent(new MouseEvent("mousemove",{bubbles:!0}));if(n instanceof HTMLElement)n.scrollTop=0}function It(e){let t=[];if(e instanceof Element&&ve(e))t.push(e);for(let n of e.querySelectorAll?.(".command, .dropdown-menu")??[])if(ve(n))t.push(n);return t}function ve(e){return e.refresh instanceof Function}function we(){document.addEventListener("click",async(e)=>{let t=e.target;if(!(t instanceof Element))return;let n=t.closest("[data-copy-code]");if(!(n instanceof HTMLButtonElement))return;let r=n.closest("[data-code-block]"),o=r?.querySelector("[data-code-source]"),i=r?.querySelector("code"),s=o?.textContent?kt(o.textContent):i?.textContent;if(!s)return;try{await navigator.clipboard.writeText(s),n.dataset.copyState="copied",n.setAttribute("aria-label","Copied"),setTimeout(()=>{delete n.dataset.copyState,n.setAttribute("aria-label","Copy code")},1200)}catch{n.setAttribute("aria-label","Copy failed")}})}function kt(e){let t=document.createElement("textarea");return t.innerHTML=e,t.value}var re={};Me(re,{bindDialogs:()=>ne,openCommand:()=>Se,openTree:()=>Ft,openWorkspace:()=>Le,openWorkspaceBrowser:()=>Dt,toggleCommand:()=>Pt,togglePopover:()=>Bt,toggleSession:()=>Ht,toggleWorkspace:()=>Rt});function U(e,t,n={}){let r=document.getElementById(e);if(!(r instanceof HTMLDialogElement))return;if(!r.open)Te(r,document.activeElement),ke(document.getElementById(t)),r.showModal();k(r),requestAnimationFrame(()=>{let o=n.activeSelector?r.querySelector(n.activeSelector):void 0;o?.dispatchEvent(new MouseEvent("mousemove",{bubbles:!0})),o?.scrollIntoView({block:"center"});let i=document.getElementById(t);if(i instanceof HTMLInputElement)i.focus({preventScroll:!0})})}function Te(e,t){e.addEventListener("close",()=>{setTimeout(()=>Ae(t),0)},{once:!0})}function Ae(e){if(!(e instanceof HTMLElement))return;let t=e.isConnected?e:e.id?document.getElementById(e.id):void 0;if(!(t instanceof HTMLElement))return;if(document.activeElement===t)t.blur();t.focus({preventScroll:!0})}function Ht(){let e=document.getElementById("session-dialog");if(!(e instanceof HTMLDialogElement))return!1;if(e.open)return e.close(),!1;return U("session-dialog","session-input"),!0}function Ft(){Ie(document.getElementById("tree-selected-id")),U("tree-dialog","tree-input",{activeSelector:"[data-active-tree-row]"})}function Se(){U("command-dialog","command-input")}function Pt(){let e=document.getElementById("command-dialog");if(!(e instanceof HTMLDialogElement))return!1;if(e.open)return e.close(),!1;return Se(),!0}function ne(){document.addEventListener("click",(e)=>{let t=e.target instanceof Element?e.target.closest("button[aria-haspopup][aria-expanded]"):void 0;if(!(t instanceof HTMLButtonElement))return;if(t.getAttribute("aria-expanded")==="true")return;let n=t.closest(".popover, .dropdown-menu");ke(n?.querySelector("input[role='combobox'], input[type='search']"))},{capture:!0})}function Bt(e){let t=document.getElementById(e);if(!(t instanceof HTMLButtonElement))return!1;let n=t.getAttribute("aria-expanded")!=="true";if(n)Ct(t,document.activeElement);return t.click(),n}function Ct(e,t){let n=new MutationObserver(()=>{if(e.getAttribute("aria-expanded")==="true")return;n.disconnect(),Ae(t)});n.observe(e,{attributeFilter:["aria-expanded"]})}function Le(){U("workspace-dialog","workspace-input")}function Dt(){let e=document.getElementById("workspace-browser-dialog");if(!(e instanceof HTMLDialogElement))return;if(!e.open)document.getElementById("workspace-dialog")?.close(),Te(e,document.getElementById("workspace-picker")),e.showModal();k(e)}function Rt(){let e=document.getElementById("workspace-dialog");if(!(e instanceof HTMLDialogElement))return!1;if(e.open)return e.close(),!1;return Le(),!0}function Ie(e){if(!(e instanceof HTMLInputElement))return;e.value="",e.dispatchEvent(new Event("input",{bubbles:!0}))}function ke(e){if(!(e instanceof HTMLInputElement))return;Ie(e);let t=e.getAttribute("aria-controls"),n=t?document.getElementById(t):void 0;if(n instanceof HTMLElement)n.scrollTop=0}var Ot=[60,75,90,100,120,144,165,240];function qt(e){if(e.length<9)return;let t=e.slice(6),n=[];for(let a=1;a<t.length;a+=1){let u=t[a]-t[a-1];if(u>=3.666666666666667&&u<=33.333333333333336)n.push(u)}if(n.length<3)return;let r=oe(n,0.5),o=n.map((a)=>Math.abs(a-r)),s=oe(o,0.5)/r>0.06?oe(n,0.25):r,c=Fe(1000/s,30,240);return $t(c)}function $t(e){let t=Ot.reduce((n,r)=>Math.abs(r-e)<Math.abs(n-e)?r:n);return Math.abs(t-e)/t<=0.08?t:Math.round(Fe(e,30,240))}function Ut(e){let t=e.sampleFrames??48,n,r,o=[],i,s,c=(f)=>{if(n=void 0,!e.isEligible())return;if(o.push(f),o.length>=t){let b=qt(o);if(o=[],b!==void 0)a(b);return}n=e.requestFrame(c)},a=(f)=>{if(i!==void 0&&(Math.abs(i-f)<1||Math.abs(i-f)/i<0.02))return;if(s=f,r!==void 0)e.clearTimer(r);r=e.setTimer(()=>{if(r=void 0,!e.isEligible()||s===void 0)return;i=s,e.send(s),s=void 0},250)};return{restart:()=>{if(n!==void 0)e.cancelFrame(n);if(n=void 0,o=[],e.isEligible())n=e.requestFrame(c)},stop:()=>{if(n!==void 0)e.cancelFrame(n);if(r!==void 0)e.clearTimer(r);n=void 0,r=void 0,o=[],s=void 0}}}function He(){let e=Ut({requestFrame:(t)=>requestAnimationFrame(t),cancelFrame:(t)=>cancelAnimationFrame(t),isEligible:()=>document.visibilityState==="visible"&&document.hasFocus(),setTimer:(t,n)=>setTimeout(t,n),clearTimer:(t)=>clearTimeout(t),send:(t)=>{document.body.dispatchEvent(new CustomEvent("pi-ui-display-refresh",{detail:{hz:t}}))}});e.restart(),document.addEventListener("visibilitychange",e.restart),window.addEventListener("focus",e.restart),window.addEventListener("pagehide",e.stop,{once:!0})}function oe(e,t){let n=[...e].sort((r,o)=>r-o);return n[Math.min(n.length-1,Math.floor((n.length-1)*t))]}function Fe(e,t,n){return Math.min(n,Math.max(t,e))}function Be(){document.addEventListener("click",(e)=>{if(e.button!==0)return;let t=e.target instanceof Element?e.target.closest("a[href]"):null;if(!(t instanceof HTMLAnchorElement))return;let n=t.getAttribute("data-pi-file-link")??"",r=Pe(n)?n:t.href;if(!Pe(r))return;e.preventDefault(),Nt(r)},{capture:!0})}function Pe(e){try{return new URL(e).protocol==="file:"}catch{return!1}}async function Nt(e){let t=document.body.dataset.filesOpenEndpoint;if(!t)return;try{let n=await fetch(t,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({uri:e})});if(!n.ok)throw Error(await zt(n));if(n.status===204)return;let r=URL.createObjectURL(await n.blob()),o=document.createElement("a");o.href=r,o.download=_t(n),o.click(),setTimeout(()=>URL.revokeObjectURL(r),0)}catch(n){alert(n instanceof Error?n.message:"Could not open the file.")}}async function zt(e){try{let t=await e.json();return t.error||t.message||"Could not open the file."}catch{return"Could not open the file."}}function _t(e){try{return decodeURIComponent(e.headers.get("x-pi-file-name"))||"download"}catch{return"download"}}var be={};Me(be,{canSubmit:()=>pe,composePrompt:()=>at,convertAvifToJpeg:()=>it,enterDrag:()=>sn,extractTransferredFilePaths:()=>tt,fileWithDetectedMimeType:()=>ot,formatFileReferences:()=>st,hasAttachments:()=>et,hasFiles:()=>rn,insert:()=>Qe,isAvifImageFile:()=>he,isHeicImageFile:()=>ge,jpegFileName:()=>rt,leaveDrag:()=>an,pick:()=>on,resetDrag:()=>cn,submit:()=>ln});function Ce(e){try{let t=new URL(e);if(t.protocol!=="file:")return;let n=decodeURIComponent(t.pathname);if(t.hostname&&t.hostname.toLowerCase()!=="localhost")return`//${t.hostname}${n}`;if(/^\/[A-Za-z]:(?:\/|$)/.test(n))return n.slice(1);return n}catch{return}}var ie={archive:{paths:["M13.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v11.5","M14 2v5a1 1 0 0 0 1 1h5M8 12v-1m0 7v-2m0-9V6"],circle:{cx:8,cy:20,r:2}},audio:{paths:["M17.5 22h.5a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3","M14 2v4a2 2 0 0 0 2 2h4M2 19a2 2 0 1 1 4 0v1a2 2 0 1 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 1 1-4 0v-1a2 2 0 1 1 4 0"]},code:{paths:["M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4","M14 2v4a2 2 0 0 0 2 2h4M5 12l-3 3l3 3m4 0l3-3l-3-3"]},file:{paths:["M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z","M14 2v5a1 1 0 0 0 1 1h5"]},pdf:{paths:["M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4","M14 2v4a2 2 0 0 0 2 2h4M2 13v-1h6v1m-3-1v6m-1 0h2"]},text:{paths:["M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z","M14 2v5a1 1 0 0 0 1 1h5M10 9H8m8 4H8m8 4H8"]},video:{paths:["M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z","M14 2v5a1 1 0 0 0 1 1h5m-4.967 5.44a.647.647 0 0 1 0 1.12l-4.065 2.352a.645.645 0 0 1-.968-.56v-4.704a.645.645 0 0 1 .967-.56z"]}};function De(e,t){let n=e.split(".").at(-1)?.toLowerCase()??"";if(t==="application/pdf"||n==="pdf")return"pdf";if(t?.startsWith("audio/")||["aac","flac","m4a","mp3","ogg","wav"].includes(n))return"audio";if(t?.startsWith("video/")||["avi","m4v","mkv","mov","mp4","webm"].includes(n))return"video";if(t?.includes("zip")||["7z","bz2","gz","rar","tar","xz","zip"].includes(n))return"archive";if(["c","cpp","css","go","h","html","java","js","json","jsx","py","rs","sh","sql","toml","ts","tsx","xml","yaml","yml"].includes(n)||t==="application/json"||t?.includes("javascript")||t?.includes("xml"))return"code";if(t?.startsWith("text/")||["csv","log","md","rst","txt"].includes(n))return"text";return"file"}function m(){let e=document.getElementById("prompt-input");return e instanceof HTMLTextAreaElement?e:void 0}function ae(){return m()?.value??""}function w(e){let t=m();if(!t)return;t.value=e,t.dispatchEvent(new Event("input",{bubbles:!0}))}function H(){let e=m();if(!e)return;e.focus({preventScroll:!0}),e.selectionStart=e.value.length,e.selectionEnd=e.value.length}function Oe(e){let t=m();if(!t)return;let n=t.selectionStart??t.value.length,r=t.selectionEnd??n;t.value=`${t.value.slice(0,n)}${e}${t.value.slice(r)}`;let o=n+e.length;t.selectionStart=o,t.selectionEnd=o,t.dispatchEvent(new Event("input",{bubbles:!0}))}function qe(){let e=m();if(!e)return;let t=e.selectionStart??e.value.length,n=e.selectionEnd??t;if(t!==n)e.value=`${e.value.slice(0,t)}${e.value.slice(n)}`,e.selectionStart=t,e.selectionEnd=t;else if(t>0)e.value=`${e.value.slice(0,t-1)}${e.value.slice(t)}`,e.selectionStart=t-1,e.selectionEnd=t-1;e.dispatchEvent(new Event("input",{bubbles:!0}))}var Re,se;function $e(){let e=document.getElementById("prompt-footer");if(!(e instanceof HTMLElement))return;se??=new ResizeObserver(Kt),se.disconnect(),se.observe(e)}function Kt(){cancelAnimationFrame(Re),Re=requestAnimationFrame(()=>{let e=document.getElementById("prompt-footer");if(!(e instanceof HTMLElement))return;if(e.removeAttribute("data-toolbar-compact"),e.removeAttribute("data-context-compact"),e.setAttribute("data-measuring",""),e.scrollWidth>e.clientWidth){if(e.setAttribute("data-toolbar-compact",""),e.scrollWidth>e.clientWidth)e.setAttribute("data-context-compact","")}e.removeAttribute("data-measuring")})}function Ue(){document.addEventListener("pointerdown",(e)=>{let t=e.target;if(!(t instanceof Element))return;let n=t.closest("[data-tooltip]");if(!(n instanceof HTMLElement))return;n.setAttribute("data-tooltip-suppressed",""),n.addEventListener("pointerleave",()=>n.removeAttribute("data-tooltip-suppressed"),{once:!0})})}var F,P=!1,le,_e;function Wt(e,t){let n=e.slice(0,t),o=Math.max(n.lastIndexOf(" "),n.lastIndexOf(`
2
+ `),n.lastIndexOf("\t"),n.lastIndexOf("="))+1,i=n.slice(o);if(!i.startsWith("@")||i.includes(" "))return;return{start:o,end:t,query:i.slice(1)}}function jt(e,t,n){let r=n.endsWith("/")?"":" ";return{text:`${e.slice(0,t.start)}@${n}${r}${e.slice(t.end)}`,cursor:t.start+n.length+1+r.length}}function B(){return We("prompt-file-popover")}function N(){return B()||ue()}function Ke(e){_e=e.fuzzyFilter,document.addEventListener("input",Ne),document.addEventListener("keyup",Ne),document.addEventListener("click",Vt),document.addEventListener("keydown",Yt),Ve(ae())}function Ne(e){if(!(e.target instanceof HTMLTextAreaElement)||e.target.id!=="prompt-input")return;if(P&&e.type==="keyup")return;if(e.type==="input")P=!1;if(z(e.target),Ve(e.target.value),e.target.value.startsWith("/"))je("slash-picker-list","[data-slash-row]")}function z(e){if(P)return;let t=Wt(e.value,e.selectionStart??e.value.length);if(!t){de();return}F=t,clearTimeout(le),le=setTimeout(()=>{if(F!==t)return;e.dispatchEvent(new CustomEvent("pi-ui-file-query",{bubbles:!0,detail:{query:t.query}}))},50)}function Vt(e){let t=e.target;if(!(t instanceof Element))return;let n=t.closest('[data-picker-kind="slash"]'),r=t.closest('[data-picker-kind="file"]');if(t.closest("[data-file-trigger]"))e.preventDefault(),Jt();else if(t.closest("[data-send-trigger]"))M(!0);else if(n instanceof HTMLElement)e.preventDefault();else if(r instanceof HTMLElement)e.preventDefault(),Gt(r.dataset.pickerValue??"");else if(t instanceof HTMLTextAreaElement&&t.id==="prompt-input")z(t)}function Yt(e){if(e.isComposing)return;if(e.ctrlKey||e.metaKey||e.altKey)return;if(e.code==="Escape"){let n=document.activeElement?.closest?.("[data-picker-kind]");if(N())e.preventDefault();if(M(!0),ae()==="/")w("");if(n)m()?.focus({preventScroll:!0});return}if(document.activeElement?.closest?.("[data-file-row]")){if(e.code==="Backspace"){e.preventDefault(),H(),qe();return}if(e.key.length===1){e.preventDefault(),H(),Oe(e.key);return}}let t=document.activeElement;if(t?.id==="prompt-input"){if((e.code==="ArrowDown"||e.code==="ArrowUp")&&ue()){e.preventDefault(),ce("[data-slash-row]",e.code==="ArrowDown"?1:-1);return}if((e.code==="ArrowDown"||e.code==="ArrowUp")&&B()){e.preventDefault(),ce("[data-file-row]",e.code==="ArrowDown"?1:-1);return}if(e.code==="Enter"&&!e.shiftKey&&B()){e.preventDefault(),ze("[data-file-row]")?.querySelector("button")?.click();return}if(e.code==="Enter"&&!e.shiftKey&&ue()){e.preventDefault(),ze("[data-slash-row]")?.querySelector("button")?.click();return}}for(let n of["[data-slash-row]","[data-file-row]"]){if(!t?.closest?.(n))continue;if(e.code==="ArrowDown"||e.code==="ArrowUp")e.preventDefault(),ce(n,e.code==="ArrowDown"?1:-1);else if(e.code==="Enter")e.preventDefault(),t.click();return}}function Gt(e){let t=m();if(!t||!F)return;let n=jt(t.value,F,e);if(t.value=n.text,t.selectionStart=n.cursor,t.selectionEnd=n.cursor,t.dispatchEvent(new Event("input",{bubbles:!0})),t.focus(),e.endsWith("/"))z(t);else de()}function Jt(){let e=m();if(!e)return;P=!1;let t=e.selectionStart??e.value.length,r=`${t>0&&!/\s/.test(e.value[t-1]??"")?" ":""}@`;e.value=`${e.value.slice(0,t)}${r}${e.value.slice(e.selectionEnd??t)}`;let o=t+r.length;e.selectionStart=o,e.selectionEnd=o,e.dispatchEvent(new Event("input",{bubbles:!0})),e.focus(),z(e)}function M(e=!1){de(e),m()?.dispatchEvent(new CustomEvent("pi-ui-picker-close",{bubbles:!0}))}function de(e=!1){if(clearTimeout(le),e)P=!0;F=void 0,m()?.dispatchEvent(new CustomEvent("pi-ui-file-close",{bubbles:!0}))}function ue(){return We("prompt-slash-popover")}function We(e){let t=document.getElementById(e);return t instanceof HTMLElement&&t.style.display!=="none"}function fe(e){return[...document.querySelectorAll(e)].filter((t)=>t instanceof HTMLElement&&getComputedStyle(t).display!=="none")}function ze(e){let t=fe(e);return t.find((n)=>n.getAttribute("aria-selected")==="true")??t[0]}function Zt(e){let t=fe(e);for(let[n,r]of t.entries())r.setAttribute("aria-selected",n===0?"true":"false")}function je(e,t){let n=document.getElementById(e);if(n instanceof HTMLElement)n.scrollTop=0;Zt(t)}function Ve(e){if(!e.startsWith("/")||e.includes(" "))return;let t=document.getElementById("slash-picker-list");if(!(t instanceof HTMLElement))return;let n=[...t.querySelectorAll("[data-slash-row]")].sort((i,s)=>Number(i.dataset.slashOrder)-Number(s.dataset.slashOrder)),r=_e(n,e.slice(1),(i)=>i.dataset.slashName??""),o=new Set(r);t.append(...r,...n.filter((i)=>!o.has(i)))}function Ye(){je("file-picker-list","[data-file-row]")}function Xt(e,t,n){if(e<=0)return-1;if(t===-1)return 0;return Math.max(0,Math.min(e-1,t-n))}function ce(e,t){let n=fe(e);if(n.length===0)return;let r=document.activeElement?.closest?.(e),o=n.findIndex((s)=>s===r);if(o===-1)o=n.findIndex((s)=>s.getAttribute("aria-selected")==="true");let i=Xt(n.length,o,t);for(let s of n)s.setAttribute("aria-selected","false");n[i]?.setAttribute("aria-selected","true"),n[i]?.querySelector("button")?.focus()}var Qt=["text/uri-list","x-special/gnome-copied-files","text/plain"],Ge=10,en=20971520,tn=52428800,nn=0.85,C=0,me=!1,g=[];function rn(e){if(!e)return!1;if(e.files?.length)return!0;return[...e.types].some((t)=>t==="Files"||t==="text/uri-list")}function on(){h("");let e=document.createElement("input");e.type="file",e.multiple=!0,e.addEventListener("change",()=>{if(e.files?.length)Qe(e.files)},{once:!0}),e.click()}function sn(){return C+=1,!0}function an(){return C=Math.max(0,C-1),C>0}function cn(){C=0}async function Qe(e){if(!e)return;h("");let t=nt(e),n=t.some((a)=>he(a)||ge(a)),r=tt(e);if(r.length>0&&!n){let a=dn(r);if(a){h(a);return}pn(r);return}if(t.length===0)return;let o=Je(t);if(o){h(o);return}let i;try{i=await un(t)}catch(a){console.error(a),h(a?.message||"Could not prepare the selected images.");return}let s=Je(i);if(s){h(s);return}let c=await mn(i);for(let a=0;a<c.length;a+=1)ct({path:c[a].path,file:ot(i[a],c[a].mimeType)})}function et(){return g.length>0}function pe(e){return!me&&(e.trim()!==""||et())}async function ln(e,t,n){if(!pe(t))return!1;let r=[...g],o=at(t,r.map(({path:s})=>s)),i=new FormData;if(i.set("prompt",o),n)i.set("streamingBehavior",n);for(let{file:s}of r)if(s?.type.startsWith("image/"))i.append("image",s,s.name||"pasted-image");me=!0;try{let s=await fetch(e,{method:"POST",body:i});if(await s.text(),!s.ok)throw Error(`Prompt was not accepted (${s.status}).`);return gn(r),h(""),!0}catch(s){return hn(t),h(s?.message||"Could not send the prompt."),!1}finally{me=!1,document.getElementById("prompt-box")?.dispatchEvent(new CustomEvent("pi-ui-prompt-submit-finished",{bubbles:!0})),Ee()}}function tt(e){let t="getData"in e?Qt.flatMap((n)=>e.getData(n).split(/\r?\n/)):[];for(let n of nt(e))t.push(n.path??"",n.webkitRelativePath??"");return[...new Set(t.map(fn).filter(Boolean))]}function nt(e){if(e.files)return[...e.files];return Array.from(e)}function he(e){return e.type?.toLowerCase()==="image/avif"||/\.avif$/i.test(e.name??"")}function ge(e){return/^(?:image\/)?hei[cf]$/i.test(e.type??"")||/\.hei[cf]$/i.test(e.name??"")}function rt(e){return/\.avif$/i.test(e)?e.replace(/\.avif$/i,".jpg"):`${e||"image"}.jpg`}function ot(e,t){if(t===void 0||e.type===t)return e;return new File([e],e.name,{type:t??"",lastModified:e.lastModified})}async function un(e){let t=[];for(let n of e){if(ge(n))throw Error("HEIC and HEIF images are not supported. Convert them to JPEG or PNG first.");t.push(he(n)?await it(n):n)}return t}async function it(e){let t;try{t=await createImageBitmap(e);let n=document.createElement("canvas");n.width=t.width,n.height=t.height;let r=n.getContext("2d");if(!r)throw Error("Canvas image conversion is unavailable.");r.fillStyle="white",r.fillRect(0,0,n.width,n.height),r.drawImage(t,0,0,n.width,n.height);let o=await new Promise((i,s)=>{n.toBlob((c)=>c?i(c):s(Error("JPEG encoding failed.")),"image/jpeg",nn)});return new File([o],rt(e.name),{type:"image/jpeg",lastModified:e.lastModified})}catch(n){throw Error(`Could not convert ${e.name||"the AVIF image"} to JPEG.`,{cause:n})}finally{t?.close()}}function dn(e){if(e.some((t)=>/\.hei[cf]$/i.test(t)))return"HEIC and HEIF images are not supported. Convert them to JPEG or PNG first.";if(e.some((t)=>/\.avif$/i.test(t)))return"AVIF images must be dropped, pasted, or selected with the browser file picker so they can be converted."}function fn(e){let t=e.trim();if(!t||t.startsWith("#")||t==="copy"||t==="cut")return;let n=Ce(t);if(n)return n;if(t.startsWith("/")||/^[A-Za-z]:[\\/]/.test(t))return t;return}function Je(e){if(e.length>Ge)return`Attach at most ${Ge} files at a time.`;if(e.some((n)=>n.size>en))return"Dropped or pasted files must be 20 MiB or smaller; use the Files button for larger files.";if(e.reduce((n,r)=>n+r.size,0)>tn)return"Dropped or pasted files must total 50 MiB or less."}async function mn(e){let t=new FormData;for(let n of e)t.append("file",n,n.name||"pasted-file");try{let n=document.body.dataset.filesImportEndpoint,r=await fetch(n,{method:"POST",body:t}),o=await r.json().catch(()=>({}));if(!r.ok)return h(o.message?.constructor===String?o.message:"Could not transfer the selected files."),[];return h(""),Array.isArray(o.imports)?o.imports:[]}catch{return h("Could not transfer the selected files."),[]}}function h(e){let t=m();if(!t)return;let n=document.getElementById("file-transfer-error");if(!(n instanceof HTMLParagraphElement))n=document.createElement("p"),n.id="file-transfer-error",n.className="text-destructive mb-1 px-1 text-xs",n.setAttribute("role","alert"),n.setAttribute("aria-live","polite"),t.before(n);n.textContent=e,n.hidden=!e}function st(e){return`${e.map((t)=>`@${t}`).join(`
3
3
  `)}
4
- `}function st(e,t){let n=it(t);return e.trim()?`${n}${e}`:n.trimEnd()}function mn(e){for(let t of e)at({path:t})}function at({path:e,file:t}){if(!e||g.some((n)=>n.path===e))return;g.push({path:e,file:t,previewUrl:t?.type.startsWith("image/")?URL.createObjectURL(t):void 0}),Ee(),m()?.focus(),M(!0)}function pn(e){let t=m();if(!t||t.value!==""||!e)return;t.value=e,t.dispatchEvent(new Event("input",{bubbles:!0}))}function hn(e){for(let t of e){let n=g.indexOf(t);if(n<0)continue;if(g.splice(n,1),t.previewUrl)URL.revokeObjectURL(t.previewUrl)}}function Ze(e){let t=g.findIndex((r)=>r.path===e);if(t<0)return;let[n]=g.splice(t,1);if(n.previewUrl)URL.revokeObjectURL(n.previewUrl);Ee()}function Ee(){let e=document.getElementById("prompt-attachments");if(!(e instanceof HTMLElement))return;e.replaceChildren(...g.map(gn)),e.hidden=g.length===0;let t=document.querySelector("[data-send-trigger]");if(t instanceof HTMLButtonElement)t.disabled=!pe(m()?.value??"")}function gn(e){let t=e.file?.name||En(e.path);if(e.previewUrl){let u=document.createElement("button");u.type="button",u.className="group relative size-16 shrink-0 cursor-pointer overflow-visible rounded-md border bg-muted/40 p-0 shadow-sm",u.setAttribute("aria-label",`Remove ${t}`),u.addEventListener("click",()=>Ze(e.path));let d=document.createElement("span");d.className="block size-full overflow-clip rounded-md";let f=document.createElement("img");return f.className="size-full object-cover",f.style.overflowClipMargin="unset",f.src=e.previewUrl,f.alt=t,d.append(f),u.append(d,Xe()),u}let n=document.createElement("button");n.type="button",n.className="group relative flex h-16 max-w-52 items-center gap-2 overflow-visible rounded-lg border bg-card p-2 pr-3 text-left text-card-foreground shadow-sm",n.setAttribute("aria-label",`Remove ${t}`),n.addEventListener("click",()=>Ze(e.path));let r=bn(t),o=De(t,e.file?.type),i=document.createElement("span");if(i.className="flex size-11 shrink-0 flex-col items-center justify-center gap-0.5 rounded-md border bg-muted text-muted-foreground",i.dataset.fileKind=o,i.append(yn(o)),r){let u=document.createElement("span");u.className="font-mono text-[9px] leading-none uppercase",u.textContent=r,i.append(u)}n.append(i);let s=document.createElement("span");s.className="min-w-0";let c=document.createElement("span");c.className="block truncate text-xs font-medium",c.textContent=t,s.append(c);let a=document.createElement("span");return a.className="block truncate text-[10px] text-muted-foreground",a.textContent=e.file?xn(e.file.size):"local file",s.append(a),n.append(s,Xe()),n}function Xe(){let e=document.createElement("span");return e.className="absolute -top-1.5 -right-1.5 grid size-5 place-items-center rounded-full border border-primary bg-primary text-xs text-primary-foreground opacity-0 shadow-sm transition-opacity group-hover:opacity-100 group-focus-visible:opacity-100",e.textContent="×",e.setAttribute("aria-hidden","true"),e}function En(e){return e.split(/[\\/]/).filter(Boolean).at(-1)||e}function bn(e){return(e.includes(".")?e.split(".").at(-1):"").slice(0,4).toLowerCase()}function yn(e){let n=ie[e]??ie.file,r=document.createElementNS("http://www.w3.org/2000/svg","svg");r.setAttribute("class","size-5"),r.setAttribute("viewBox","0 0 24 24"),r.setAttribute("fill","none"),r.setAttribute("stroke","currentColor"),r.setAttribute("stroke-linecap","round"),r.setAttribute("stroke-linejoin","round"),r.setAttribute("stroke-width","2"),r.setAttribute("aria-hidden","true");for(let o of n.paths){let i=document.createElementNS("http://www.w3.org/2000/svg","path");i.setAttribute("d",o),r.append(i)}if(n.circle){let o=document.createElementNS("http://www.w3.org/2000/svg","circle");for(let[i,s]of Object.entries(n.circle))o.setAttribute(i,String(s));r.append(o)}return r}function xn(e){if(e<1024)return`${e} B`;if(e<1048576)return`${(e/1024).toFixed(1)} KiB`;return`${(e/1048576).toFixed(1)} MiB`}var l={middleScrolling:!1,pinnedToBottom:!0,pointerScrolling:!1,rearmOnBottom:!1,scrollTop:0},j=new Set,V,Y=!1,_,K,D,T;function ct(){document.addEventListener("scroll",(t)=>{let n=document.getElementById("messages");if(!(n instanceof HTMLElement)||t.target!==n)return;if((l.middleScrolling||l.pointerScrolling)&&n.scrollTop<l.scrollTop)E();let r=n.scrollHeight-n.scrollTop-n.clientHeight;if(Mn(l.pinnedToBottom,l.scrollTop,n.scrollTop,r,l.middleScrolling||l.rearmOnBottom||l.pointerScrolling))l.pinnedToBottom=!0;l.scrollTop=n.scrollTop,l.rearmOnBottom=!1,S()},!0);let e=(t)=>{if(t.button===1)l.middleScrolling=!0,E();else if(t.button===0&&W(t.target)){l.middleScrolling=!1,l.pointerScrolling=!0,T={x:t.clientX,y:t.clientY};let n=document.getElementById("messages");if(n instanceof HTMLElement)l.scrollTop=n.scrollTop}};document.addEventListener("pointerdown",e,{capture:!0,passive:!0}),document.addEventListener("pointermove",(t)=>{if(l.pointerScrolling&&T&&wn(T.x,T.y,t.clientX,t.clientY))T=void 0,E()},{capture:!0,passive:!0});for(let t of["pointerup","pointercancel"])document.addEventListener(t,()=>{l.pointerScrolling=!1,T=void 0},{capture:!0,passive:!0});for(let t of["mousedown","auxclick"])document.addEventListener(t,(n)=>{if(n.button===1)l.middleScrolling=!0,E()},{capture:!0,passive:!0});document.addEventListener("wheel",(t)=>{if(!W(t.target))return;if(l.middleScrolling=!1,t.deltaY<0)E();else if(t.deltaY>0)l.rearmOnBottom=!0},{capture:!0,passive:!0}),document.addEventListener("touchmove",(t)=>{if(W(t.target))E()},{capture:!0,passive:!0}),document.addEventListener("keydown",(t)=>{if(Tn(t)&&W(t.target))E()},!0),ye(),A()}function lt(){if(Y)return!1;let e=document.getElementById("messages");if(!(e instanceof HTMLElement))return!1;let t=e.getBoundingClientRect().top,n=[...e.querySelectorAll("[data-message-id]")].find((r)=>r.getBoundingClientRect().bottom>t);return Y=!0,V={pinnedToBottom:l.pinnedToBottom,messageId:n?.getAttribute("data-message-id"),offset:n?n.getBoundingClientRect().top-t:void 0,scrollHeight:e.scrollHeight,scrollTop:e.scrollTop},S(),!0}function ut(){let e=V;if(V=void 0,Y=!1,!e)return;if(e.pinnedToBottom){A();return}let t=()=>{let n=document.getElementById("messages");if(!(n instanceof HTMLElement))return;let r=[...n.querySelectorAll("[data-message-id]")].find((o)=>o.getAttribute("data-message-id")===e.messageId);if(r&&e.offset!==void 0){let o=r.getBoundingClientRect().top-n.getBoundingClientRect().top;n.scrollTop=vn(n.scrollTop,o,e.offset)}else n.scrollTop=e.scrollTop+n.scrollHeight-e.scrollHeight;S()};t(),requestAnimationFrame(()=>{t(),requestAnimationFrame(t)})}function vn(e,t,n){return e+t-n}function wn(e,t,n,r){return Math.hypot(n-e,r-t)>=8}function Mn(e,t,n,r,o){return!e&&o&&n>t&&r<=8}function A(e="auto"){dt(),V=void 0,Y=!1,l.middleScrolling=!1,l.pinnedToBottom=!0,l.pointerScrolling=!1,l.rearmOnBottom=!1;let t=()=>{let n=document.getElementById("messages");if(!(n instanceof HTMLElement)||!l.pinnedToBottom)return;n.scrollTo({top:n.scrollHeight,behavior:e}),S()};if(t(),e==="auto")for(let n of[16,80,180]){let r=setTimeout(()=>{j.delete(r),t()},n);j.add(r)}}function E(){dt(),l.pinnedToBottom=!1,l.rearmOnBottom=!1;let e=document.getElementById("messages");if(e instanceof HTMLElement)l.scrollTop=e.scrollTop;S()}function dt(){for(let e of j)clearTimeout(e);j.clear()}function W(e){let t=document.getElementById("messages");return t instanceof HTMLElement&&e instanceof Node&&t.contains(e)}function Tn(e){return e.key==="ArrowUp"||e.key==="PageUp"||e.key==="Home"||e.key===" "&&e.shiftKey}function ye(){let e=document.querySelector("#messages > .messages-stack"),t=document.getElementById("prompt-box");if(!(e instanceof HTMLElement)||!(t instanceof HTMLElement))return;if(e===_&&t===K)return;if(D??=new ResizeObserver(()=>{An();let n=document.getElementById("messages");if(n instanceof HTMLElement&&l.pinnedToBottom)n.scrollTop=n.scrollHeight;S()}),_)D.unobserve(_);if(K)D.unobserve(K);_=e,K=t,D.observe(e),D.observe(t)}function An(){let e=document.getElementById("prompt-box"),t=document.getElementById("messages-prompt-spacer");if(!(e instanceof HTMLElement)||!(t instanceof HTMLElement))return;let n=`${e.offsetHeight+48}px`;if(t.style.height!==n)t.style.height=n}function S(){let e=document.getElementById("messages"),t=document.getElementById("messages-latest");if(!(e instanceof HTMLElement)||!(t instanceof HTMLButtonElement))return;let n=e.scrollHeight-e.scrollTop-e.clientHeight,r=!l.pinnedToBottom&&n>=48;t.hidden=!r,t.inert=!r,t.tabIndex=r?0:-1}function ft(e){if(!(e instanceof HTMLElement))return;let t=e.querySelector('template[shadowrootmode="open"]');if(!(t instanceof HTMLTemplateElement))return;(e.shadowRoot??e.attachShadow({mode:"open"})).append(t.content.cloneNode(!0)),t.remove()}function mt(e,t){if(!(e instanceof HTMLInputElement))return;let n=e.closest(".command");if(!(n instanceof HTMLElement))return;let o=[...n.querySelectorAll('[role="menuitem"]')].filter((a)=>a instanceof HTMLElement).toSorted((a,u)=>Number(a.dataset.modelSearchOrder)-Number(u.dataset.modelSearchOrder)),i=I(o,t,(a)=>Sn(a.dataset.filter??"",a.dataset.keywords??"")),s=new Set(i),c=t.trim()?[...i,...o.filter((a)=>!s.has(a))]:o;for(let a of c)a.classList.remove("active"),a.setAttribute("aria-hidden",String(!s.has(a))),a.parentElement?.append(a);n.refresh?.()}function Sn(e,t){return`${t.replace(/([\p{Ll}\d])(\p{Lu})/gu,"$1 $2")} ${e} ${t}`}class pt{#t=[];#e=-1;#n="";#r="";sync(e){let t=JSON.stringify(e);if(t===this.#r)return;this.#r=t,this.#t=e,this.reset()}get browsing(){return this.#e>=0}reset(){this.#e=-1,this.#n=""}navigate(e,t){if(t==="up"){if(!this.browsing){if(e!==""||this.#t.length===0)return;this.#n=e,this.#e=0}else if(this.#e<this.#t.length-1)this.#e+=1;return{value:this.#t[this.#e],cursor:"start"}}if(!this.browsing)return;if(this.#e>0)return this.#e-=1,{value:this.#t[this.#e],cursor:"end"};let n=this.#n;return this.reset(),{value:n,cursor:"end"}}}function ht(){let e=new pt,t=!1;function n(o,i){if(o.isComposing||o.defaultPrevented||o.altKey||o.ctrlKey||o.metaKey||o.shiftKey||o.code!=="ArrowUp"&&o.code!=="ArrowDown")return!1;let s=m();if(o.target!==s||window.piUi.pickers.isOpen())return!1;if(e.sync(Array.isArray(i)?i:[]),e.browsing&&!Ln(s,o.code))return!1;let c=e.navigate(s.value,o.code==="ArrowUp"?"up":"down");if(!c)return!1;o.preventDefault(),t=!0,w(c.value),t=!1;let a=c.cursor==="start"?0:s.value.length;return s.selectionStart=a,s.selectionEnd=a,!0}function r(){if(!t)e.reset()}return{handleInput:r,handleKeydown:n}}function Ln(e,t){if(e.selectionStart!==e.selectionEnd)return!1;if(t==="ArrowUp"){let r=e.value.indexOf(`
4
+ `}function at(e,t){let n=st(t);return e.trim()?`${n}${e}`:n.trimEnd()}function pn(e){for(let t of e)ct({path:t})}function ct({path:e,file:t}){if(!e||g.some((n)=>n.path===e))return;g.push({path:e,file:t,previewUrl:t?.type.startsWith("image/")?URL.createObjectURL(t):void 0}),Ee(),m()?.focus(),M(!0)}function hn(e){let t=m();if(!t||t.value!==""||!e)return;t.value=e,t.dispatchEvent(new Event("input",{bubbles:!0}))}function gn(e){for(let t of e){let n=g.indexOf(t);if(n<0)continue;if(g.splice(n,1),t.previewUrl)URL.revokeObjectURL(t.previewUrl)}}function Ze(e){let t=g.findIndex((r)=>r.path===e);if(t<0)return;let[n]=g.splice(t,1);if(n.previewUrl)URL.revokeObjectURL(n.previewUrl);Ee()}function Ee(){let e=document.getElementById("prompt-attachments");if(!(e instanceof HTMLElement))return;e.replaceChildren(...g.map(En)),e.hidden=g.length===0;let t=document.querySelector("[data-send-trigger]");if(t instanceof HTMLButtonElement)t.disabled=!pe(m()?.value??"")}function En(e){let t=e.file?.name||bn(e.path);if(e.previewUrl){let u=document.createElement("button");u.type="button",u.className="group relative size-16 shrink-0 cursor-pointer overflow-visible rounded-md border bg-muted/40 p-0 shadow-sm",u.setAttribute("aria-label",`Remove ${t}`),u.addEventListener("click",()=>Ze(e.path));let d=document.createElement("span");d.className="block size-full overflow-clip rounded-md";let f=document.createElement("img");return f.className="size-full object-cover",f.style.overflowClipMargin="unset",f.src=e.previewUrl,f.alt=t,d.append(f),u.append(d,Xe()),u}let n=document.createElement("button");n.type="button",n.className="group relative flex h-16 max-w-52 items-center gap-2 overflow-visible rounded-lg border bg-card p-2 pr-3 text-left text-card-foreground shadow-sm",n.setAttribute("aria-label",`Remove ${t}`),n.addEventListener("click",()=>Ze(e.path));let r=yn(t),o=De(t,e.file?.type),i=document.createElement("span");if(i.className="flex size-11 shrink-0 flex-col items-center justify-center gap-0.5 rounded-md border bg-muted text-muted-foreground",i.dataset.fileKind=o,i.append(xn(o)),r){let u=document.createElement("span");u.className="font-mono text-[9px] leading-none uppercase",u.textContent=r,i.append(u)}n.append(i);let s=document.createElement("span");s.className="min-w-0";let c=document.createElement("span");c.className="block truncate text-xs font-medium",c.textContent=t,s.append(c);let a=document.createElement("span");return a.className="block truncate text-[10px] text-muted-foreground",a.textContent=e.file?vn(e.file.size):"local file",s.append(a),n.append(s,Xe()),n}function Xe(){let e=document.createElement("span");return e.className="absolute -top-1.5 -right-1.5 grid size-5 place-items-center rounded-full border border-primary bg-primary text-xs text-primary-foreground opacity-0 shadow-sm transition-opacity group-hover:opacity-100 group-focus-visible:opacity-100",e.textContent="×",e.setAttribute("aria-hidden","true"),e}function bn(e){return e.split(/[\\/]/).filter(Boolean).at(-1)||e}function yn(e){return(e.includes(".")?e.split(".").at(-1):"").slice(0,4).toLowerCase()}function xn(e){let n=ie[e]??ie.file,r=document.createElementNS("http://www.w3.org/2000/svg","svg");r.setAttribute("class","size-5"),r.setAttribute("viewBox","0 0 24 24"),r.setAttribute("fill","none"),r.setAttribute("stroke","currentColor"),r.setAttribute("stroke-linecap","round"),r.setAttribute("stroke-linejoin","round"),r.setAttribute("stroke-width","2"),r.setAttribute("aria-hidden","true");for(let o of n.paths){let i=document.createElementNS("http://www.w3.org/2000/svg","path");i.setAttribute("d",o),r.append(i)}if(n.circle){let o=document.createElementNS("http://www.w3.org/2000/svg","circle");for(let[i,s]of Object.entries(n.circle))o.setAttribute(i,String(s));r.append(o)}return r}function vn(e){if(e<1024)return`${e} B`;if(e<1048576)return`${(e/1024).toFixed(1)} KiB`;return`${(e/1048576).toFixed(1)} MiB`}var l={middleScrolling:!1,pinnedToBottom:!0,pointerScrolling:!1,rearmOnBottom:!1,scrollTop:0},j=new Set,V,Y=!1,_,K,D,T;function lt(){document.addEventListener("scroll",(t)=>{let n=document.getElementById("messages");if(!(n instanceof HTMLElement)||t.target!==n)return;if((l.middleScrolling||l.pointerScrolling)&&n.scrollTop<l.scrollTop)E();let r=n.scrollHeight-n.scrollTop-n.clientHeight;if(Tn(l.pinnedToBottom,l.scrollTop,n.scrollTop,r,l.middleScrolling||l.rearmOnBottom||l.pointerScrolling))l.pinnedToBottom=!0;l.scrollTop=n.scrollTop,l.rearmOnBottom=!1,S()},!0);let e=(t)=>{if(t.button===1)l.middleScrolling=!0,E();else if(t.button===0&&W(t.target)){l.middleScrolling=!1,l.pointerScrolling=!0,T={x:t.clientX,y:t.clientY};let n=document.getElementById("messages");if(n instanceof HTMLElement)l.scrollTop=n.scrollTop}};document.addEventListener("pointerdown",e,{capture:!0,passive:!0}),document.addEventListener("pointermove",(t)=>{if(l.pointerScrolling&&T&&Mn(T.x,T.y,t.clientX,t.clientY))T=void 0,E()},{capture:!0,passive:!0});for(let t of["pointerup","pointercancel"])document.addEventListener(t,()=>{l.pointerScrolling=!1,T=void 0},{capture:!0,passive:!0});for(let t of["mousedown","auxclick"])document.addEventListener(t,(n)=>{if(n.button===1)l.middleScrolling=!0,E()},{capture:!0,passive:!0});document.addEventListener("wheel",(t)=>{if(!W(t.target))return;if(l.middleScrolling=!1,t.deltaY<0)E();else if(t.deltaY>0)l.rearmOnBottom=!0},{capture:!0,passive:!0}),document.addEventListener("touchmove",(t)=>{if(W(t.target))E()},{capture:!0,passive:!0}),document.addEventListener("keydown",(t)=>{if(An(t)&&W(t.target))E()},!0),ye(),A()}function ut(){if(Y)return!1;let e=document.getElementById("messages");if(!(e instanceof HTMLElement))return!1;let t=e.getBoundingClientRect().top,n=[...e.querySelectorAll("[data-message-id]")].find((r)=>r.getBoundingClientRect().bottom>t);return Y=!0,V={pinnedToBottom:l.pinnedToBottom,messageId:n?.getAttribute("data-message-id"),offset:n?n.getBoundingClientRect().top-t:void 0,scrollHeight:e.scrollHeight,scrollTop:e.scrollTop},S(),!0}function dt(){let e=V;if(V=void 0,Y=!1,!e)return;if(e.pinnedToBottom){A();return}let t=()=>{let n=document.getElementById("messages");if(!(n instanceof HTMLElement))return;let r=[...n.querySelectorAll("[data-message-id]")].find((o)=>o.getAttribute("data-message-id")===e.messageId);if(r&&e.offset!==void 0){let o=r.getBoundingClientRect().top-n.getBoundingClientRect().top;n.scrollTop=wn(n.scrollTop,o,e.offset)}else n.scrollTop=e.scrollTop+n.scrollHeight-e.scrollHeight;S()};t(),requestAnimationFrame(()=>{t(),requestAnimationFrame(t)})}function wn(e,t,n){return e+t-n}function Mn(e,t,n,r){return Math.hypot(n-e,r-t)>=8}function Tn(e,t,n,r,o){return!e&&o&&n>t&&r<=8}function A(e="auto"){ft(),V=void 0,Y=!1,l.middleScrolling=!1,l.pinnedToBottom=!0,l.pointerScrolling=!1,l.rearmOnBottom=!1;let t=()=>{let n=document.getElementById("messages");if(!(n instanceof HTMLElement)||!l.pinnedToBottom)return;n.scrollTo({top:n.scrollHeight,behavior:e}),S()};if(t(),e==="auto")for(let n of[16,80,180]){let r=setTimeout(()=>{j.delete(r),t()},n);j.add(r)}}function E(){ft(),l.pinnedToBottom=!1,l.rearmOnBottom=!1;let e=document.getElementById("messages");if(e instanceof HTMLElement)l.scrollTop=e.scrollTop;S()}function ft(){for(let e of j)clearTimeout(e);j.clear()}function W(e){let t=document.getElementById("messages");return t instanceof HTMLElement&&e instanceof Node&&t.contains(e)}function An(e){return e.key==="ArrowUp"||e.key==="PageUp"||e.key==="Home"||e.key===" "&&e.shiftKey}function ye(){let e=document.querySelector("#messages > .messages-stack"),t=document.getElementById("prompt-box");if(!(e instanceof HTMLElement)||!(t instanceof HTMLElement))return;if(e===_&&t===K)return;if(D??=new ResizeObserver(()=>{Sn();let n=document.getElementById("messages");if(n instanceof HTMLElement&&l.pinnedToBottom)n.scrollTop=n.scrollHeight;S()}),_)D.unobserve(_);if(K)D.unobserve(K);_=e,K=t,D.observe(e),D.observe(t)}function Sn(){let e=document.getElementById("prompt-box"),t=document.getElementById("messages-prompt-spacer");if(!(e instanceof HTMLElement)||!(t instanceof HTMLElement))return;let n=`${e.offsetHeight+48}px`;if(t.style.height!==n)t.style.height=n}function S(){let e=document.getElementById("messages"),t=document.getElementById("messages-latest");if(!(e instanceof HTMLElement)||!(t instanceof HTMLButtonElement))return;let n=e.scrollHeight-e.scrollTop-e.clientHeight,r=!l.pinnedToBottom&&n>=48;t.hidden=!r,t.inert=!r,t.tabIndex=r?0:-1}function mt(e){if(!(e instanceof HTMLElement))return;let t=e.querySelector('template[shadowrootmode="open"]');if(!(t instanceof HTMLTemplateElement))return;(e.shadowRoot??e.attachShadow({mode:"open"})).append(t.content.cloneNode(!0)),t.remove()}function pt(e,t){if(!(e instanceof HTMLInputElement))return;let n=e.closest(".command");if(!(n instanceof HTMLElement))return;let o=[...n.querySelectorAll('[role="menuitem"]')].filter((a)=>a instanceof HTMLElement).toSorted((a,u)=>Number(a.dataset.modelSearchOrder)-Number(u.dataset.modelSearchOrder)),i=I(o,t,(a)=>Ln(a.dataset.filter??"",a.dataset.keywords??"")),s=new Set(i),c=t.trim()?[...i,...o.filter((a)=>!s.has(a))]:o;for(let a of c)a.classList.remove("active"),a.setAttribute("aria-hidden",String(!s.has(a))),a.parentElement?.append(a);n.refresh?.()}function Ln(e,t){return`${t.replace(/([\p{Ll}\d])(\p{Lu})/gu,"$1 $2")} ${e} ${t}`}class ht{#t=[];#e=-1;#n="";#r="";sync(e){let t=JSON.stringify(e);if(t===this.#r)return;this.#r=t,this.#t=e,this.reset()}get browsing(){return this.#e>=0}reset(){this.#e=-1,this.#n=""}navigate(e,t){if(t==="up"){if(!this.browsing){if(e!==""||this.#t.length===0)return;this.#n=e,this.#e=0}else if(this.#e<this.#t.length-1)this.#e+=1;return{value:this.#t[this.#e],cursor:"start"}}if(!this.browsing)return;if(this.#e>0)return this.#e-=1,{value:this.#t[this.#e],cursor:"end"};let n=this.#n;return this.reset(),{value:n,cursor:"end"}}}function gt(){let e=new ht,t=!1;function n(o,i){if(o.isComposing||o.defaultPrevented||o.altKey||o.ctrlKey||o.metaKey||o.shiftKey||o.code!=="ArrowUp"&&o.code!=="ArrowDown")return!1;let s=m();if(o.target!==s||window.piUi.pickers.isOpen())return!1;if(e.sync(Array.isArray(i)?i:[]),e.browsing&&!In(s,o.code))return!1;let c=e.navigate(s.value,o.code==="ArrowUp"?"up":"down");if(!c)return!1;o.preventDefault(),t=!0,w(c.value),t=!1;let a=c.cursor==="start"?0:s.value.length;return s.selectionStart=a,s.selectionEnd=a,!0}function r(){if(!t)e.reset()}return{handleInput:r,handleKeydown:n}}function In(e,t){if(e.selectionStart!==e.selectionEnd)return!1;if(t==="ArrowUp"){let r=e.value.indexOf(`
5
5
  `);return r<0||e.selectionStart<=r}let n=e.value.lastIndexOf(`
6
- `)+1;return e.selectionEnd>=n}var x;function gt(){if(!document.getElementById("session-transition")?.hasAttribute("data-session-performance-enabled"))return;x={startedAt:performance.now()}}function Et(e,t){if(!x)return;let n=performance.now();if(e==="loading"){x.generation=Number(t),x.loadingAt??=n;return}if(e!=="idle"||x.generation!==Number(t)||x.loadingAt===void 0)return;let r=x;x=void 0,bt(r,Number(t),n)}function bt(e,t,n){requestAnimationFrame(()=>{let r=document.getElementById("session-transition"),o=document.getElementById("messages");if(r&&o&&getComputedStyle(r).display==="none"&&getComputedStyle(o).display!=="none"){requestAnimationFrame(()=>{let i={generation:t,clickToLoadingMs:e.loadingAt-e.startedAt,clickToMorphMs:n-e.startedAt,clickToPaintMs:performance.now()-e.startedAt};document.body.dispatchEvent(new CustomEvent("pi-ui-session-performance",{detail:i}))});return}if(performance.now()-e.startedAt<60000)bt(e,t,n)})}var X=100,xt=120,In=17,kn=33.333333333333336,p,v,G=0,L=0,Q=!1,J=0,Z=0;function vt(){let e=!1;document.addEventListener("keydown",(t)=>{if(t.defaultPrevented||t.ctrlKey||t.metaKey||t.altKey||Hn(t)){e=!1;return}if(document.querySelector("dialog[open]"))return;if(e){if(e=!1,t.code==="KeyG"&&!t.shiftKey){t.preventDefault(),yt("top");return}}if(t.code==="KeyG"&&!t.shiftKey)t.preventDefault(),e=!0;else if(t.code==="KeyG"&&t.shiftKey)t.preventDefault(),yt("bottom");else if(t.code==="KeyJ"||t.code==="KeyK")t.preventDefault(),Pn(t.code==="KeyJ"?X:-X)}),document.addEventListener("keyup",(t)=>{if(t.code==="KeyJ"||t.code==="KeyK")Q=!1})}function Hn(e){return Fn(e.composedPath()[0])}function Fn(e){return e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement||e instanceof HTMLElement&&e.isContentEditable}function Pn(e){if(p&&v!==void 0)cancelAnimationFrame(p),p=void 0,v=void 0;let t=Math.sign(e);if(!p||L!==t)L=t,J=0,Z=0,G=0;Q=!0,Bn(),E()}function yt(e){let t=document.getElementById("messages");if(!(t instanceof HTMLElement))return;if(L=0,Q=!1,v=e==="top"?0:t.scrollHeight-t.clientHeight,Cn(e),e==="top")E()}function Bn(){if(p)return;let e=(t)=>{let n=document.getElementById("messages");if(!(n instanceof HTMLElement)||!L){p=void 0;return}let r=G?Math.min(Math.max(t-G,0),kn):In;G=t;let o=n.scrollHeight-n.clientHeight,i=L*(X*r/xt)+Z,s=n.scrollTop,c=Math.max(0,Math.min(s+i,o));n.scrollTop=c;let a=c-s;if(Z=i-a,J+=Math.abs(a),c===0||c===o||!Q&&J>=X){L=0,J=0,Z=0,p=void 0;return}p=requestAnimationFrame(e)};p=requestAnimationFrame(e)}function Cn(e){if(p)cancelAnimationFrame(p);let t=document.getElementById("messages");if(!(t instanceof HTMLElement)||v===void 0)return;let n=t.scrollTop,r=Math.max(0,Math.min(v,t.scrollHeight-t.clientHeight)),o=Math.max(xt,20*Math.log(Math.max(Math.abs(r-n),1))),i=0,s=0,c=(a)=>{let u=document.getElementById("messages");if(!(u instanceof HTMLElement)||v===void 0){p=void 0;return}let d=s?a-s:16.7;s=a,i+=d;let f=Math.min(1,i/o);if(u.scrollTop=n+(r-n)*f,f>=1){if(v=void 0,p=void 0,e==="bottom")A();return}p=requestAnimationFrame(c)};p=requestAnimationFrame(c)}function Dn(e={}){let t=e.activeElement??(()=>document.activeElement),n=e.body??(()=>document.body),r=e.requestFrame??((a)=>requestAnimationFrame(a)),o,i=0;function s(){i+=1;let a=t();if(!wt(a)||a===n()){o=void 0;return}o=a,a.blur()}function c(){let a=o;if(o=void 0,!wt(a)||!a.isConnected)return;let u=i;r(()=>{if(i!==u||!a.isConnected)return;let d=t();if(d===a)return;if(d&&d!==n())return;a.focus({preventScroll:!0})})}return{restore:c,suspend:s}}function wt(e){return Boolean(e&&e.blur instanceof Function&&e.focus instanceof Function)}var Mt=Dn();var Rn=ht();window.piUi={basecoat:{refresh:k},codeTheme:{loadPreviews(){}},fonts:{apply(){}},dialogs:re,fileTransfer:be,messageScroll:{bindResize:ye,captureAnchor:lt,hydratePierreDiff:ft,restoreAnchor:ut,scrollBottom:A},modelSearch:{filter:mt},pickers:{close:M,fuzzyMatch:O,isFileOpen:B,isOpen:N,resetFile:Ye},prompt:{bindLayout:$e,clear:()=>w("")},promptHistory:Rn,sessionPerformance:{observe:Et,start:gt},windowFocus:Mt,workspaceReview:{applyOpen:()=>{}},shouldAbortOnEscape(e){return!e.defaultPrevented&&!On()}};function On(){if(N()||document.querySelector("dialog[open]"))return!0;if(document.querySelector('[data-popover][aria-hidden="false"]'))return!0;return Boolean(document.querySelector('[aria-haspopup][aria-expanded="true"]'))}Be();window.addEventListener("DOMContentLoaded",async()=>{await Promise.all([import("./chunks/fonts-pcnzbv4q.js"),import("./chunks/code-theme-y49p9zss.js"),import("./chunks/workspace-review-3scrbyaw.js")]),H(),ne(),Ue(),Ke({fuzzyFilter:I}),ct(),we(),vt(),He(),qn()});function qn(){let e=document.getElementById("debug-fps");if(!(e instanceof HTMLElement))return;let t=0,n=performance.now(),r=(o)=>{t+=1;let i=o-n;if(i>=500)e.textContent=String(Math.round(t*1000/i)),t=0,n=o;requestAnimationFrame(r)};requestAnimationFrame(r)}
6
+ `)+1;return e.selectionEnd>=n}var x;function Et(){if(!document.getElementById("session-transition")?.hasAttribute("data-session-performance-enabled"))return;x={startedAt:performance.now()}}function bt(e,t){if(!x)return;let n=performance.now();if(e==="loading"){x.generation=Number(t),x.loadingAt??=n;return}if(e!=="idle"||x.generation!==Number(t)||x.loadingAt===void 0)return;let r=x;x=void 0,yt(r,Number(t),n)}function yt(e,t,n){requestAnimationFrame(()=>{let r=document.getElementById("session-transition"),o=document.getElementById("messages");if(r&&o&&getComputedStyle(r).display==="none"&&getComputedStyle(o).display!=="none"){requestAnimationFrame(()=>{let i={generation:t,clickToLoadingMs:e.loadingAt-e.startedAt,clickToMorphMs:n-e.startedAt,clickToPaintMs:performance.now()-e.startedAt};document.body.dispatchEvent(new CustomEvent("pi-ui-session-performance",{detail:i}))});return}if(performance.now()-e.startedAt<60000)yt(e,t,n)})}var X=100,vt=120,kn=17,Hn=33.333333333333336,p,v,G=0,L=0,Q=!1,J=0,Z=0;function wt(){let e=!1;document.addEventListener("keydown",(t)=>{if(t.defaultPrevented||t.ctrlKey||t.metaKey||t.altKey||Fn(t)){e=!1;return}if(document.querySelector("dialog[open]"))return;if(e){if(e=!1,t.code==="KeyG"&&!t.shiftKey){t.preventDefault(),xt("top");return}}if(t.code==="KeyG"&&!t.shiftKey)t.preventDefault(),e=!0;else if(t.code==="KeyG"&&t.shiftKey)t.preventDefault(),xt("bottom");else if(t.code==="KeyJ"||t.code==="KeyK")t.preventDefault(),Bn(t.code==="KeyJ"?X:-X)}),document.addEventListener("keyup",(t)=>{if(t.code==="KeyJ"||t.code==="KeyK")Q=!1})}function Fn(e){return Pn(e.composedPath()[0])}function Pn(e){return e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement||e instanceof HTMLElement&&e.isContentEditable}function Bn(e){if(p&&v!==void 0)cancelAnimationFrame(p),p=void 0,v=void 0;let t=Math.sign(e);if(!p||L!==t)L=t,J=0,Z=0,G=0;Q=!0,Cn(),E()}function xt(e){let t=document.getElementById("messages");if(!(t instanceof HTMLElement))return;if(L=0,Q=!1,v=e==="top"?0:t.scrollHeight-t.clientHeight,Dn(e),e==="top")E()}function Cn(){if(p)return;let e=(t)=>{let n=document.getElementById("messages");if(!(n instanceof HTMLElement)||!L){p=void 0;return}let r=G?Math.min(Math.max(t-G,0),Hn):kn;G=t;let o=n.scrollHeight-n.clientHeight,i=L*(X*r/vt)+Z,s=n.scrollTop,c=Math.max(0,Math.min(s+i,o));n.scrollTop=c;let a=c-s;if(Z=i-a,J+=Math.abs(a),c===0||c===o||!Q&&J>=X){L=0,J=0,Z=0,p=void 0;return}p=requestAnimationFrame(e)};p=requestAnimationFrame(e)}function Dn(e){if(p)cancelAnimationFrame(p);let t=document.getElementById("messages");if(!(t instanceof HTMLElement)||v===void 0)return;let n=t.scrollTop,r=Math.max(0,Math.min(v,t.scrollHeight-t.clientHeight)),o=Math.max(vt,20*Math.log(Math.max(Math.abs(r-n),1))),i=0,s=0,c=(a)=>{let u=document.getElementById("messages");if(!(u instanceof HTMLElement)||v===void 0){p=void 0;return}let d=s?a-s:16.7;s=a,i+=d;let f=Math.min(1,i/o);if(u.scrollTop=n+(r-n)*f,f>=1){if(v=void 0,p=void 0,e==="bottom")A();return}p=requestAnimationFrame(c)};p=requestAnimationFrame(c)}function Rn(e={}){let t=e.activeElement??(()=>document.activeElement),n=e.body??(()=>document.body),r=e.requestFrame??((a)=>requestAnimationFrame(a)),o,i=0;function s(){i+=1;let a=t();if(!Mt(a)||a===n()){o=void 0;return}o=a,a.blur()}function c(){let a=o;if(o=void 0,!Mt(a)||!a.isConnected)return;let u=i;r(()=>{if(i!==u||!a.isConnected)return;let d=t();if(d===a)return;if(d&&d!==n())return;a.focus({preventScroll:!0})})}return{restore:c,suspend:s}}function Mt(e){return Boolean(e&&e.blur instanceof Function&&e.focus instanceof Function)}var Tt=Rn();var On=gt();window.piUi={basecoat:{refresh:k},codeTheme:{loadPreviews(){}},fonts:{apply(){}},dialogs:re,fileTransfer:be,messageScroll:{bindResize:ye,captureAnchor:ut,hydratePierreDiff:mt,restoreAnchor:dt,scrollBottom:A},modelSearch:{filter:pt},pickers:{close:M,fuzzyMatch:O,isFileOpen:B,isOpen:N,resetFile:Ye},prompt:{bindLayout:$e,clear:()=>w("")},promptHistory:On,sessionPerformance:{observe:bt,start:Et},windowFocus:Tt,workspaceReview:{applyOpen:()=>{}},shouldAbortOnEscape(e){return!e.defaultPrevented&&!qn()}};function qn(){if(N()||document.querySelector("dialog[open]"))return!0;if(document.querySelector('[data-popover][aria-hidden="false"]'))return!0;return Boolean(document.querySelector('[aria-haspopup][aria-expanded="true"]'))}Be();window.addEventListener("DOMContentLoaded",async()=>{await Promise.all([import("./chunks/fonts-fmjkwnbd.js"),import("./chunks/code-theme-4n26zw8w.js"),import("./chunks/workspace-review-p84b3znd.js")]),H(),ne(),Ue(),Ke({fuzzyFilter:I}),lt(),we(),wt(),He(),$n()});function $n(){let e=document.getElementById("debug-fps");if(!(e instanceof HTMLElement))return;let t=0,n=performance.now(),r=(o)=>{t+=1;let i=o-n;if(i>=500)e.textContent=String(Math.round(t*1000/i)),t=0,n=o;requestAnimationFrame(r)};requestAnimationFrame(r)}