sliccy 5.8.0 → 5.8.2

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.
Files changed (77) hide show
  1. package/README.md +24 -29
  2. package/dist/ui/assets/{account-store-Dc1fxjXw.js → account-store-B-s6jYj8.js} +2 -2
  3. package/dist/ui/assets/{account-store-Dxwe8EsY.js → account-store-DijjUUOO.js} +2 -2
  4. package/dist/ui/assets/{adobe--oSW4CGI.js → adobe-CcTwlHLF.js} +1 -1
  5. package/dist/ui/assets/{adobe-CLWBcgAB.js → adobe-DCYaJqd5.js} +1 -1
  6. package/dist/ui/assets/{adobe-oauth-state-BQvp5gzM.js → adobe-oauth-state-DKPFiT3Z.js} +1 -1
  7. package/dist/ui/assets/{agent-message-to-chat-DJq4l5Os.js → agent-message-to-chat-vs9VtDPM.js} +1 -1
  8. package/dist/ui/assets/{apps-3JIOI11m.js → apps-Cnkk0H7i.js} +1 -1
  9. package/dist/ui/assets/{azure-openai-B8O7vWcA.js → azure-openai-CKqTGpmc.js} +1 -1
  10. package/dist/ui/assets/{azure-openai-OuC2Ep8f.js → azure-openai-CuOEj0Ax.js} +1 -1
  11. package/dist/ui/assets/{connect-surface-CQ4FskrY.js → connect-surface-DdLRPagY.js} +1 -1
  12. package/dist/ui/assets/dip-BTVYrmRp.js +1 -0
  13. package/dist/ui/assets/{dist-DYZ5RYTi.js → dist-Cn0Bok2z.js} +1 -1
  14. package/dist/ui/assets/{dist-B-7ogmSb.js → dist-CozeEmvE.js} +1 -1
  15. package/dist/ui/assets/{ensure-speech-assets-e2KUXG_d.js → ensure-speech-assets-DOxe5v73.js} +1 -1
  16. package/dist/ui/assets/esp8266-CNfOtb_T.js +1 -0
  17. package/dist/ui/assets/{esptool-operations-piu4J4Nw.js → esptool-operations-BmT5_Q7J.js} +2 -2
  18. package/dist/ui/assets/{fs-B2aOzJSq.js → fs-BIsgCzpU.js} +2 -2
  19. package/dist/ui/assets/{fs-DKB9QQ1D.js → fs-CYNNv-jh.js} +1 -1
  20. package/dist/ui/assets/{github-CMrNiTg9.js → github-Cwn8X524.js} +1 -1
  21. package/dist/ui/assets/{github-DFAGIZc9.js → github-DinBASrq.js} +2 -2
  22. package/dist/ui/assets/{github-copilot-DiEwl4Za.js → github-copilot-CKjbn4MG.js} +1 -1
  23. package/dist/ui/assets/{github-copilot-BPysGtiF.js → github-copilot-DX-NSluH.js} +1 -1
  24. package/dist/ui/assets/{hear-0TLf-NV2.js → hear-ybxAwUCG.js} +1 -1
  25. package/dist/ui/assets/{kernel-worker-BHTQbRVg.js → kernel-worker-B_1Ffk8R.js} +449 -449
  26. package/dist/ui/assets/{kokoro-engine-Dqxzr1p_.js → kokoro-engine-BzARcGnj.js} +1 -1
  27. package/dist/ui/assets/{lick-ws-bridge-BWgHB8Mm.js → lick-ws-bridge-Cbn8aJsV.js} +1 -1
  28. package/dist/ui/assets/{lick-ws-bridge-BBdxtLkF.js → lick-ws-bridge-DPsVQbc5.js} +1 -1
  29. package/dist/ui/assets/{local-llm-B-wFy26p.js → local-llm-DkJfAK0f.js} +1 -1
  30. package/dist/ui/assets/{main-Adg2tAFx.js → main-Cpp7tV6a.js} +4 -4
  31. package/dist/ui/assets/{mount-DEi0sp7Z.js → mount-B90cuHjv.js} +2 -2
  32. package/dist/ui/assets/{mount-DPWetasY.js → mount-DuC3uw-z.js} +1 -1
  33. package/dist/ui/assets/{new-session-Cb6vBKth.js → new-session-BzbCIMnn.js} +2 -2
  34. package/dist/ui/assets/{oauth-bootstrap-JRNDYo5M.js → oauth-bootstrap-DK0ygb8i.js} +2 -2
  35. package/dist/ui/assets/{openai-codex-BR2wnaLC.js → openai-codex-BUZzAFfG.js} +1 -1
  36. package/dist/ui/assets/{openai-codex-C_J0ka68.js → openai-codex-DAHequYJ.js} +1 -1
  37. package/dist/ui/assets/{page-follower-tray-B8PlRSgj.js → page-follower-tray-SlSFevrj.js} +1 -1
  38. package/dist/ui/assets/{panel-rpc-handlers-DSix4MB0.js → panel-rpc-handlers-DB8ON_RI.js} +1 -1
  39. package/dist/ui/assets/{provider-CKTI8xj9.js → provider-C8xe-70U.js} +2 -2
  40. package/dist/ui/assets/{provider-BHB2jXSJ.js → provider-n2qshMFm.js} +1 -1
  41. package/dist/ui/assets/provider-store-access-CTe-ZnV2.js +1 -0
  42. package/dist/ui/assets/provider-store-access-CcAXUNyH.js +1 -0
  43. package/dist/ui/assets/{providers-Bs-uFcFP.js → providers-BhyWu6gj.js} +1 -1
  44. package/dist/ui/assets/{quick-llm-CycdqfYy.js → quick-llm-Bi695Wk0.js} +1 -1
  45. package/dist/ui/assets/session-freezer-RiPIfWKq.js +1 -0
  46. package/dist/ui/assets/{speak-BeDx_WsJ.js → speak-Dkn6R1A7.js} +1 -1
  47. package/dist/ui/assets/{sprinkle-manager-DFmzxkMb.js → sprinkle-manager-CBGqrwdQ.js} +1 -1
  48. package/dist/ui/assets/{store-n3jCQwXL.js → store-Cq9QOKw9.js} +1 -1
  49. package/dist/ui/assets/{sudo-QalJSmeJ.js → sudo-CLapBdR8.js} +1 -1
  50. package/dist/ui/assets/{transformers-env-D3a1ujzs.js → transformers-env-C_bZFy25.js} +1 -1
  51. package/dist/ui/assets/{tray-leader-vew7MfYo.js → tray-leader-3bjg_x2I.js} +1 -1
  52. package/dist/ui/assets/{tray-leave-runtime-D_Ie9yG4.js → tray-leave-runtime-BbpFS2yf.js} +1 -1
  53. package/dist/ui/assets/{upgrade-detection-BVHP2OHZ.js → upgrade-detection-DuOeJLTL.js} +1 -1
  54. package/dist/ui/assets/{wc-attach-BSV3H-ll.js → wc-attach-6PMPmK82.js} +2 -2
  55. package/dist/ui/assets/{wc-detached-Bp7JdDks.js → wc-detached-CXYUzkHR.js} +1 -1
  56. package/dist/ui/assets/{wc-extension-CvNRpyiG.js → wc-extension-BSXCYp1e.js} +2 -2
  57. package/dist/ui/assets/{wc-follower-CDeOFfip.js → wc-follower-Dvo8U-F4.js} +2 -2
  58. package/dist/ui/assets/{wc-live-D6xN2jey.js → wc-live-lalpLNlt.js} +5 -5
  59. package/dist/ui/assets/{wc-nav-CQCfsGJ-.js → wc-nav-7cwFSOwU.js} +2 -2
  60. package/dist/ui/assets/{wc-onboarding-DCFNFuNq.js → wc-onboarding-CEvWb5JF.js} +2 -2
  61. package/dist/ui/assets/{wc-placeholder-Cu71r8Mz.js → wc-placeholder-B3tJ_jXA.js} +3 -3
  62. package/dist/ui/assets/{wc-settings-CK450rVK.js → wc-settings-W5jahn4m.js} +2 -2
  63. package/dist/ui/assets/{wc-shell-DE5Fham9.js → wc-shell-DysTJV3i.js} +4 -4
  64. package/dist/ui/assets/{wc-sprinkles-FwmHOcRi.js → wc-sprinkles-BIOW2tA5.js} +2 -2
  65. package/dist/ui/assets/{wc-tray-BDjVLrgj.js → wc-tray-C-21Xqwm.js} +2 -2
  66. package/dist/ui/assets/{whisper-engine-BJYgChx7.js → whisper-engine-Cse3NwZz.js} +1 -1
  67. package/dist/ui/assets/{xai-grok-FXhgnguU.js → xai-grok-C2cVcyuH.js} +1 -1
  68. package/dist/ui/assets/{xai-grok-DA2KaLdL.js → xai-grok-DHY2d1Ir.js} +1 -1
  69. package/dist/ui/electron-overlay-entry.js +8 -8
  70. package/dist/ui/index.html +2 -2
  71. package/dist/ui/packages/webapp/index.html +2 -2
  72. package/package.json +1 -1
  73. package/dist/ui/assets/dip-BFmzIJYT.js +0 -1
  74. package/dist/ui/assets/esp8266-DDuafqfm.js +0 -1
  75. package/dist/ui/assets/provider-store-access-BTGmOGN3.js +0 -1
  76. package/dist/ui/assets/provider-store-access-D3cxgK3U.js +0 -1
  77. package/dist/ui/assets/session-freezer-DfS-tJMu.js +0 -1
@@ -89,7 +89,7 @@ ${p.join(`
89
89
  .sep{height:1px;background:var(--line,#e1e1e1);margin:6px 4px;}
90
90
  .drop{position:absolute;inset:0;border-radius:10px;display:none;align-items:center;justify-content:center;text-align:center;background:var(--am-accent-subtle);border:2px dashed var(--am-accent);color:var(--am-accent);font-size:13px;font-weight:600;pointer-events:none;}
91
91
  :host([data-dropping]) .drop{display:flex;}
92
- `,tH=C(eH),aH=[{kind:"file",label:"Files",icon:"file",entries:[{id:"/workspace/README.md",label:"README.md",sub:"/workspace"},{id:"/workspace/src/main.ts",label:"main.ts",sub:"/workspace/src"},{id:"/workspace/src/orchestrator.ts",label:"orchestrator.ts",sub:"/workspace/src"},{id:"/workspace/notes/launch-plan.md",label:"launch-plan.md",sub:"/workspace/notes"},{id:"/shared/CLAUDE.md",label:"CLAUDE.md",sub:"/shared"},{id:"/tmp/screenshot-3.png",label:"screenshot-3.png",sub:"/tmp"}]},{kind:"skill",label:"Skills",icon:"sparkles",entries:[{id:"slicc-handoff",label:"slicc-handoff",sub:"Continue work in the SLICC browser agent"},{id:"playwright-cli",label:"playwright-cli",sub:"Automate browser interactions"},{id:"mixtape",label:"mixtape",sub:"Curate themed music playlists"},{id:"wavespeed",label:"wavespeed",sub:"Generate images, video and speech"},{id:"save-the-cat",label:"save-the-cat",sub:"Screenwriting beat sheets"}]},{kind:"conversation",label:"Conversations",icon:"message-square",entries:[{id:"c1",label:"Dark mode toggle",sub:"Frozen \xB7 2h ago"},{id:"c2",label:"Refactor the mount backend",sub:"Frozen \xB7 yesterday"},{id:"c3",label:"Add slash menu (declined)",sub:"Frozen \xB7 3 days ago"},{id:"c4",label:"WebGL shader walkthrough",sub:"Frozen \xB7 last week"}]}],hA=[{kind:"upload",icon:"upload",label:"Upload from this computer",sub:"Drag & drop or click to browse",quick:!0},{kind:"capture",mode:"photo",icon:"image",label:"Take a photo",quick:!0},{kind:"capture",mode:"screenshot",icon:"monitor",label:"Take a screenshot",quick:!0}],ua=class extends HTMLElement{static observedAttributes=["theme","global-drop"];#e;#t=null;#a=null;#r=!1;#s="";#i=0;#o=[];#n=0;#l;#h;#d;#c;#u;#p;#m=e=>{this.#r&&!this.contains(e.target)&&this.close()};#x=!1;#f=0;#g=!1;#v(e){let a=e.dataTransfer?.types;return!!a&&Array.from(a).includes("Files")}#M(){this.#r||(this.#g=!0,this.open()),this.setAttribute("data-dropping","")}#y(){this.#f=0,this.removeAttribute("data-dropping"),this.#g&&(this.#g=!1,this.close())}#b=e=>{this.#v(e)&&(e.preventDefault(),this.#f++,!e.composedPath().includes(this.#d)&&this.#M())};#_=e=>{this.#v(e)&&e.preventDefault()};#S=e=>{this.#v(e)&&(this.#f=Math.max(0,this.#f-1),this.#f===0&&this.#y())};#C=e=>{if(!this.#v(e))return;if(e.preventDefault(),this.#f=0,e.composedPath().includes(this.#d)){this.#g=!1;return}this.removeAttribute("data-dropping"),this.#g=!1;let a=e.dataTransfer?.files;if(a?.length)for(let r of Array.from(a))this.#R({kind:"upload",name:r.name,size:r.size,file:r});this.close()};#A(){this.isConnected&&this.hasAttribute("global-drop")?this.#E():this.#w()}#E(){if(this.#x)return;this.#x=!0;let e=this.ownerDocument;e.addEventListener("dragenter",this.#b),e.addEventListener("dragover",this.#_),e.addEventListener("dragleave",this.#S),e.addEventListener("drop",this.#C)}#w(){if(!this.#x)return;this.#x=!1;let e=this.ownerDocument;e.removeEventListener("dragenter",this.#b),e.removeEventListener("dragover",this.#_),e.removeEventListener("dragleave",this.#S),e.removeEventListener("drop",this.#C),this.#f=0,this.#g=!1}constructor(){super(),this.#e=this.attachShadow({mode:"open"}),this.#e.adoptedStyleSheets=[tH]}connectedCallback(){this.#k(),this.#A()}disconnectedCallback(){document.removeEventListener("mousedown",this.#m),this.#w()}attributeChangedCallback(e){e==="global-drop"&&this.#A()}get results(){return this.#t}set results(e){this.#t=e,this.#r&&this.#H()}get provider(){return this.#a}set provider(e){this.#a=e,this.#r&&this.#H()}get isOpen(){return this.#r}#k(){let e=d("input",{type:"file",multiple:!0,hidden:!0}),a=d("div",{class:"body"}),r=d("div",{class:"results",part:"results",role:"listbox"},a,d("div",{class:"drop"},"Drop files to add")),s=d("span",{class:"ti"},b("plus",{size:nA})),i=d("button",{class:"trigger",part:"trigger","aria-haspopup":"true","aria-expanded":"false",title:"Add to prompt"},s),o=d("input",{type:"text",placeholder:"Search files, skills, conversations\u2026"}),n=d("div",{class:"searchbox"},d("span",{class:"si"},b("search",{size:QT})),o),h=d("div",{class:"wrap",part:"wrap"},r,d("div",{class:"row"},i,n));this.#e.replaceChildren(e,h),this.#l=i,this.#h=s,this.#d=h,this.#c=o,this.#u=a,this.#p=e,this.#T(),this.#H()}#T(){this.#l.addEventListener("click",()=>this.toggle()),this.#c.addEventListener("input",()=>{this.#s=this.#c.value,this.#i=0,this.#H()}),this.#c.addEventListener("keydown",e=>this.#z(e)),this.#p.addEventListener("change",()=>{for(let e of Array.from(this.#p.files??[]))this.#R({kind:"upload",name:e.name,size:e.size,file:e});this.#p.value="",this.close()});for(let e of["dragenter","dragover"])this.#d.addEventListener(e,a=>{a.preventDefault(),this.#r||this.open(),this.setAttribute("data-dropping","")});for(let e of["dragleave","drop"])this.#d.addEventListener(e,a=>{a.preventDefault();let r=a;e==="dragleave"&&this.#d.contains(r.relatedTarget)||this.removeAttribute("data-dropping")});this.#d.addEventListener("drop",e=>{let a=e.dataTransfer?.files;if(a?.length){for(let r of Array.from(a))this.#R({kind:"upload",name:r.name,size:r.size,file:r});this.close()}})}toggle(){this.#r?this.close():this.open()}#B(e){this.#h.replaceChildren(b(e?"x":"plus",{size:nA}))}open(){this.#r||(this.#r=!0,this.setAttribute("data-open",""),this.#l.setAttribute("aria-expanded","true"),this.#B(!0),document.addEventListener("mousedown",this.#m),this.#s="",this.#c.value="",this.#i=0,this.#H(),requestAnimationFrame(()=>this.#c.focus()))}close(){this.#r&&(this.#r=!1,this.removeAttribute("data-open"),this.removeAttribute("data-dropping"),this.#l.setAttribute("aria-expanded","false"),this.#B(!1),document.removeEventListener("mousedown",this.#m))}async#I(e){if(this.#a){let a=await this.#a(e);if(a)return a}return this.#t??aH}#F(e){let a=this.#s.trim().toLowerCase(),r=i=>!a||`${i.label} ${i.sub??""}`.toLowerCase().includes(a),s=[];if(a){if("upload take a photo screenshot".includes(a))for(let i of hA)i.label.toLowerCase().includes(a)&&s.push({type:"quick",data:i})}else for(let i of hA)s.push({type:"quick",data:i});for(let i of e){let o=i.entries.filter(r).slice(0,a?8:4);if(o.length){s.push({type:"sec",label:i.label});for(let n of o)s.push({type:"row",section:i,data:n})}}return s}async#H(){let e=++this.#n,a=await this.#I(this.#s.trim().toLowerCase());if(e!==this.#n)return;let r=this.#F(a);this.#o=[];let s=[],i=!1;for(let o of r)if(o.type==="sec")i&&s.push(d("div",{class:"sep"})),s.push(d("div",{class:"sec"},o.label)),i=!1;else if(o.type==="quick"){let n=this.#o.length;this.#o.push(o.data.kind==="upload"?{kind:"upload",name:"",size:0}:{kind:"capture",mode:o.data.mode??"photo",label:o.data.label});let h=d("span",{class:"tx"},d("div",{class:"lb"},o.data.label));o.data.sub&&h.append(d("div",{class:"sb"},o.data.sub)),s.push(d("div",{class:"item quick","data-i":n},d("span",{class:"ic"},b(o.data.icon,{size:lA})),h)),i=!0}else{let n=this.#o.length;this.#o.push({kind:o.section.kind,id:o.data.id,label:o.data.label}),s.push(d("div",{class:"item","data-i":n},d("span",{class:"ic"},b(o.section.icon,{size:lA})),d("span",{class:"tx"},d("div",{class:"lb"},o.data.label),d("div",{class:"sb"},o.data.sub??""))))}s.length?this.#u.replaceChildren(...s):this.#u.replaceChildren(d("div",{class:"empty"},`No matches for \u201C${this.#s}\u201D.`));for(let o of Array.from(this.#u.querySelectorAll(".item"))){let n=Number(o.dataset.i);o.addEventListener("mouseenter",()=>this.#N(n)),o.addEventListener("click",()=>this.#O(n))}this.#i>=this.#o.length&&(this.#i=0),this.#P()}#P(){for(let e of Array.from(this.#u.querySelectorAll(".item")))e.classList.toggle("active",Number(e.dataset.i)===this.#i)}#N(e){this.#i=e,this.#P()}#D(e){if(!this.#o.length)return;this.#i=(this.#i+e+this.#o.length)%this.#o.length,this.#P();let a=this.#u.querySelector(`.item[data-i="${this.#i}"]`);a&&a.scrollIntoView({block:"nearest"})}#z(e){e.key==="ArrowDown"?(e.preventDefault(),this.#D(1)):e.key==="ArrowUp"?(e.preventDefault(),this.#D(-1)):e.key==="Enter"?(e.preventDefault(),this.#O(this.#i)):e.key==="Escape"&&(e.preventDefault(),this.close(),this.#l.focus())}#O(e){let a=this.#o[e];if(a){if(a.kind==="upload"){this.#p.click();return}this.#R(a),this.close()}}#R(e){this.dispatchEvent(new CustomEvent("slicc-add",{detail:e,bubbles:!0,composed:!0}))}};g("slicc-add-menu",ua);var dA={sent:{freq:660,freqSlideTo:990,duration:.12,peakGain:.06,type:"sine"},"tool-start":{freq:520,freq2:780,duration:.07,peakGain:.04,type:"triangle"},"tool-finish":{freq:880,freq2:1320,duration:.07,peakGain:.04,type:"sine"}};function Sl(t,e){let a=dA[e],r=t.currentTime,s=r+a.duration,i=t.createGain();i.gain.setValueAtTime(1e-4,r),i.gain.exponentialRampToValueAtTime(a.peakGain,r+a.duration*.2),i.gain.exponentialRampToValueAtTime(1e-4,s),i.connect(t.destination);let o=t.createOscillator();if(o.type=a.type,o.frequency.setValueAtTime(a.freq,r),a.freqSlideTo!==void 0&&o.frequency.linearRampToValueAtTime(a.freqSlideTo,s),o.connect(i),o.start(r),o.stop(s),a.freq2!==void 0){let n=t.createOscillator();n.type=a.type,n.frequency.setValueAtTime(a.freq2,r),n.connect(i),n.start(r),n.stop(s)}}var rH=`
92
+ `,tH=C(eH),aH=[{kind:"file",label:"Files",icon:"file",entries:[{id:"/workspace/README.md",label:"README.md",sub:"/workspace"},{id:"/workspace/src/main.ts",label:"main.ts",sub:"/workspace/src"},{id:"/workspace/src/orchestrator.ts",label:"orchestrator.ts",sub:"/workspace/src"},{id:"/workspace/notes/launch-plan.md",label:"launch-plan.md",sub:"/workspace/notes"},{id:"/shared/CLAUDE.md",label:"CLAUDE.md",sub:"/shared"},{id:"/tmp/screenshot-3.png",label:"screenshot-3.png",sub:"/tmp"}]},{kind:"skill",label:"Skills",icon:"sparkles",entries:[{id:"slicc-handoff",label:"slicc-handoff",sub:"Continue work in the SLICC browser agent"},{id:"playwright-cli",label:"playwright-cli",sub:"Automate browser interactions"},{id:"mixtape",label:"mixtape",sub:"Curate themed music playlists"},{id:"wavespeed",label:"wavespeed",sub:"Generate images, video and speech"},{id:"save-the-cat",label:"save-the-cat",sub:"Screenwriting beat sheets"}]},{kind:"conversation",label:"Conversations",icon:"message-square",entries:[{id:"c1",label:"Dark mode toggle",sub:"Frozen \xB7 2h ago"},{id:"c2",label:"Refactor the mount backend",sub:"Frozen \xB7 yesterday"},{id:"c3",label:"Add slash menu (declined)",sub:"Frozen \xB7 3 days ago"},{id:"c4",label:"WebGL shader walkthrough",sub:"Frozen \xB7 last week"}]}],hA=[{kind:"upload",icon:"upload",label:"Upload from this computer",sub:"Drag & drop or click to browse",quick:!0},{kind:"capture",mode:"photo",icon:"image",label:"Take a photo",quick:!0},{kind:"capture",mode:"screenshot",icon:"monitor",label:"Take a screenshot",quick:!0}],ua=class extends HTMLElement{static observedAttributes=["theme","global-drop"];#e;#t=null;#a=null;#r=!1;#s="";#i=0;#o=[];#n=0;#l;#h;#d;#c;#u;#p;#m=e=>{this.#r&&!this.contains(e.target)&&this.close()};#x=!1;#f=0;#g=!1;#v(e){let a=e.dataTransfer?.types;return!!a&&Array.from(a).includes("Files")}#M(){this.#r||(this.#g=!0,this.open()),this.setAttribute("data-dropping","")}#_(){this.#f=0,this.removeAttribute("data-dropping"),this.#g&&(this.#g=!1,this.close())}#b=e=>{this.#v(e)&&(e.preventDefault(),this.#f++,!e.composedPath().includes(this.#d)&&this.#M())};#y=e=>{this.#v(e)&&e.preventDefault()};#w=e=>{this.#v(e)&&(this.#f=Math.max(0,this.#f-1),this.#f===0&&this.#_())};#S=e=>{if(!this.#v(e))return;if(e.preventDefault(),this.#f=0,e.composedPath().includes(this.#d)){this.#g=!1;return}this.removeAttribute("data-dropping"),this.#g=!1;let a=e.dataTransfer?.files;if(a?.length)for(let r of Array.from(a))this.#V({kind:"upload",name:r.name,size:r.size,file:r});this.close()};#A(){this.isConnected&&this.hasAttribute("global-drop")?this.#E():this.#C()}#E(){if(this.#x)return;this.#x=!0;let e=this.ownerDocument;e.addEventListener("dragenter",this.#b),e.addEventListener("dragover",this.#y),e.addEventListener("dragleave",this.#w),e.addEventListener("drop",this.#S)}#C(){if(!this.#x)return;this.#x=!1;let e=this.ownerDocument;e.removeEventListener("dragenter",this.#b),e.removeEventListener("dragover",this.#y),e.removeEventListener("dragleave",this.#w),e.removeEventListener("drop",this.#S),this.#f=0,this.#g=!1}constructor(){super(),this.#e=this.attachShadow({mode:"open"}),this.#e.adoptedStyleSheets=[tH]}connectedCallback(){this.#k(),this.#A()}disconnectedCallback(){document.removeEventListener("mousedown",this.#m),this.#C()}attributeChangedCallback(e){e==="global-drop"&&this.#A()}get results(){return this.#t}set results(e){this.#t=e,this.#r&&this.#L()}get provider(){return this.#a}set provider(e){this.#a=e,this.#r&&this.#L()}get isOpen(){return this.#r}#k(){let e=d("input",{type:"file",multiple:!0,hidden:!0}),a=d("div",{class:"body"}),r=d("div",{class:"results",part:"results",role:"listbox"},a,d("div",{class:"drop"},"Drop files to add")),s=d("span",{class:"ti"},b("plus",{size:nA})),i=d("button",{class:"trigger",part:"trigger","aria-haspopup":"true","aria-expanded":"false",title:"Add to prompt"},s),o=d("input",{type:"text",placeholder:"Search files, skills, conversations\u2026"}),n=d("div",{class:"searchbox"},d("span",{class:"si"},b("search",{size:QT})),o),h=d("div",{class:"wrap",part:"wrap"},r,d("div",{class:"row"},i,n));this.#e.replaceChildren(e,h),this.#l=i,this.#h=s,this.#d=h,this.#c=o,this.#u=a,this.#p=e,this.#B(),this.#L()}#B(){this.#l.addEventListener("click",()=>this.toggle()),this.#c.addEventListener("input",()=>{this.#s=this.#c.value,this.#i=0,this.#L()}),this.#c.addEventListener("keydown",e=>this.#R(e)),this.#p.addEventListener("change",()=>{for(let e of Array.from(this.#p.files??[]))this.#V({kind:"upload",name:e.name,size:e.size,file:e});this.#p.value="",this.close()});for(let e of["dragenter","dragover"])this.#d.addEventListener(e,a=>{a.preventDefault(),this.#r||this.open(),this.setAttribute("data-dropping","")});for(let e of["dragleave","drop"])this.#d.addEventListener(e,a=>{a.preventDefault();let r=a;e==="dragleave"&&this.#d.contains(r.relatedTarget)||this.removeAttribute("data-dropping")});this.#d.addEventListener("drop",e=>{let a=e.dataTransfer?.files;if(a?.length){for(let r of Array.from(a))this.#V({kind:"upload",name:r.name,size:r.size,file:r});this.close()}})}toggle(){this.#r?this.close():this.open()}#z(e){this.#h.replaceChildren(b(e?"x":"plus",{size:nA}))}open(){this.#r||(this.#r=!0,this.setAttribute("data-open",""),this.#l.setAttribute("aria-expanded","true"),this.#z(!0),document.addEventListener("mousedown",this.#m),this.#s="",this.#c.value="",this.#i=0,this.#L(),requestAnimationFrame(()=>this.#c.focus()))}close(){this.#r&&(this.#r=!1,this.removeAttribute("data-open"),this.removeAttribute("data-dropping"),this.#l.setAttribute("aria-expanded","false"),this.#z(!1),document.removeEventListener("mousedown",this.#m))}async#I(e){if(this.#a){let a=await this.#a(e);if(a)return a}return this.#t??aH}#O(e){let a=this.#s.trim().toLowerCase(),r=i=>!a||`${i.label} ${i.sub??""}`.toLowerCase().includes(a),s=[];if(a){if("upload take a photo screenshot".includes(a))for(let i of hA)i.label.toLowerCase().includes(a)&&s.push({type:"quick",data:i})}else for(let i of hA)s.push({type:"quick",data:i});for(let i of e){let o=i.entries.filter(r).slice(0,a?8:4);if(o.length){s.push({type:"sec",label:i.label});for(let n of o)s.push({type:"row",section:i,data:n})}}return s}async#L(){let e=++this.#n,a=await this.#I(this.#s.trim().toLowerCase());if(e!==this.#n)return;let r=this.#O(a);this.#o=[];let s=[],i=!1;for(let o of r)if(o.type==="sec")i&&s.push(d("div",{class:"sep"})),s.push(d("div",{class:"sec"},o.label)),i=!1;else if(o.type==="quick"){let n=this.#o.length;this.#o.push(o.data.kind==="upload"?{kind:"upload",name:"",size:0}:{kind:"capture",mode:o.data.mode??"photo",label:o.data.label});let h=d("span",{class:"tx"},d("div",{class:"lb"},o.data.label));o.data.sub&&h.append(d("div",{class:"sb"},o.data.sub)),s.push(d("div",{class:"item quick","data-i":n},d("span",{class:"ic"},b(o.data.icon,{size:lA})),h)),i=!0}else{let n=this.#o.length;this.#o.push({kind:o.section.kind,id:o.data.id,label:o.data.label}),s.push(d("div",{class:"item","data-i":n},d("span",{class:"ic"},b(o.section.icon,{size:lA})),d("span",{class:"tx"},d("div",{class:"lb"},o.data.label),d("div",{class:"sb"},o.data.sub??""))))}s.length?this.#u.replaceChildren(...s):this.#u.replaceChildren(d("div",{class:"empty"},`No matches for \u201C${this.#s}\u201D.`));for(let o of Array.from(this.#u.querySelectorAll(".item"))){let n=Number(o.dataset.i);o.addEventListener("mouseenter",()=>this.#T(n)),o.addEventListener("click",()=>this.#F(n))}this.#i>=this.#o.length&&(this.#i=0),this.#P()}#P(){for(let e of Array.from(this.#u.querySelectorAll(".item")))e.classList.toggle("active",Number(e.dataset.i)===this.#i)}#T(e){this.#i=e,this.#P()}#H(e){if(!this.#o.length)return;this.#i=(this.#i+e+this.#o.length)%this.#o.length,this.#P();let a=this.#u.querySelector(`.item[data-i="${this.#i}"]`);a&&a.scrollIntoView({block:"nearest"})}#R(e){e.key==="ArrowDown"?(e.preventDefault(),this.#H(1)):e.key==="ArrowUp"?(e.preventDefault(),this.#H(-1)):e.key==="Enter"?(e.preventDefault(),this.#F(this.#i)):e.key==="Escape"&&(e.preventDefault(),this.close(),this.#l.focus())}#F(e){let a=this.#o[e];if(a){if(a.kind==="upload"){this.#p.click();return}this.#V(a),this.close()}}#V(e){this.dispatchEvent(new CustomEvent("slicc-add",{detail:e,bubbles:!0,composed:!0}))}};g("slicc-add-menu",ua);var dA={sent:{freq:660,freqSlideTo:990,duration:.12,peakGain:.06,type:"sine"},"tool-start":{freq:520,freq2:780,duration:.07,peakGain:.04,type:"triangle"},"tool-finish":{freq:880,freq2:1320,duration:.07,peakGain:.04,type:"sine"}};function Sl(t,e){let a=dA[e],r=t.currentTime,s=r+a.duration,i=t.createGain();i.gain.setValueAtTime(1e-4,r),i.gain.exponentialRampToValueAtTime(a.peakGain,r+a.duration*.2),i.gain.exponentialRampToValueAtTime(1e-4,s),i.connect(t.destination);let o=t.createOscillator();if(o.type=a.type,o.frequency.setValueAtTime(a.freq,r),a.freqSlideTo!==void 0&&o.frequency.linearRampToValueAtTime(a.freqSlideTo,s),o.connect(i),o.start(r),o.stop(s),a.freq2!==void 0){let n=t.createOscillator();n.type=a.type,n.frequency.setValueAtTime(a.freq2,r),n.connect(i),n.start(r),n.stop(s)}}var rH=`
93
93
  :host {
94
94
  display: inline-grid;
95
95
  grid-auto-flow: column;
@@ -656,7 +656,7 @@ canvas.sprk {
656
656
  @media (prefers-reduced-motion: reduce) {
657
657
  canvas.sprk { display: none; }
658
658
  }
659
- `,IH=C(VH),wa=class extends HTMLElement{static observedAttributes=["name","hue","prompt"];#e;#t=`d${++FH}`;#a=null;#r=null;#s=0;#i=null;#o=[];#n=0;#l=0;#h=-999;#d=-999;#c=null;#u=null;#p=null;#m=null;constructor(){super(),this.#e=this.attachShadow({mode:"open"}),this.#e.adoptedStyleSheets=[IH]}connectedCallback(){this.#v(),this.#y(),this.#C()}disconnectedCallback(){this.#A(),this.#b()}attributeChangedCallback(){this.isConnected&&(this.#v(),this.#y(),this.#C())}get name(){return this.getAttribute("name")??"palette.shtml"}set name(e){e==null?this.removeAttribute("name"):this.setAttribute("name",e)}get hue(){return this.getAttribute("hue")}set hue(e){e==null?this.removeAttribute("hue"):this.setAttribute("hue",e)}get prompt(){return this.getAttribute("prompt")}set prompt(e){e==null?this.removeAttribute("prompt"):this.setAttribute("prompt",e)}get selectedCanvas(){return this.#x(`canvas:${this.#t}`)}get selectedAccent(){return this.#x(`accent:${this.#t}`)}#x(e){let a=this.querySelector(`slicc-palette-cell[group="${CSS.escape(e)}"][selected]`);return a?{color:a.getAttribute("color")??"",label:a.getAttribute("label")??""}:null}#f(e,a,r){let s=e.startsWith("canvas")?"canvas":"accent";if(!this.querySelector(`slicc-palette-cell[slot="${s}"]`))for(let i of a){let o=this.ownerDocument.createElement("slicc-palette-cell");o.setAttribute("slot",s),o.setAttribute("color",i.color),o.setAttribute("label",i.label),o.setAttribute("group",e),i.label===r&&o.setAttribute("selected",""),this.appendChild(o)}}#g(){return[document.createTextNode("Tune the hero\u2019s "),d("b",null,"canvas"),document.createTextNode(" & "),d("b",null,"accent"),document.createTextNode(", then apply:")]}#v(){let e=this.hue,a=e?`--c:${e}`:void 0,r=d("slot",{name:"prompt"});this.prompt?r.append(this.prompt):r.append(...this.#g()),this.#e.replaceChildren(d("canvas",{class:"sprk",part:"field","aria-hidden":"true"}),d("div",{class:"dh",part:"header",style:a},d("span",{class:"sg",part:"glyph"},b("sparkles",{size:12})),d("span",{class:"nm",part:"name"},this.name),d("span",{class:"tag",part:"tag"},"sprinkle \xB7 dip")),d("div",{class:"dbody",part:"body",style:a},d("p",{class:"dprompt",part:"prompt"},r),d("div",{class:"pgrid canvas",part:"grid-canvas"},d("slot",{name:"canvas"})),d("div",{class:"pgrid accent",part:"grid-accent"},d("slot",{name:"accent"})),d("div",{class:"dfoot"},d("button",{class:"dapply",part:"apply",type:"button"},"Apply to hero \u2192"),d("span",{class:"dnote",part:"note"})))),this.#f(`canvas:${this.#t}`,zH,"paper"),this.#f(`accent:${this.#t}`,OH,"cone"),this.#M()}#M(){let e=this.#e.querySelector(".dnote");if(!e)return;let a=this.selectedCanvas?.label??"paper",r=this.selectedAccent?.label??"violet";e.textContent=`${a} \xB7 ${r}`}#y(){this.#p||(this.#p=()=>this.#M(),this.addEventListener("palette-select",this.#p)),this.#m||(this.#m=()=>this.#_()),this.#e.querySelector(".dapply")?.addEventListener("click",this.#m)}#b(){this.#p&&(this.removeEventListener("palette-select",this.#p),this.#p=null),this.#m=null}#_(){this.#M(),this.dispatchEvent(new CustomEvent("slicc-dip-apply",{bubbles:!0,composed:!0,detail:{canvas:this.selectedCanvas,accent:this.selectedAccent}}))}#S(){return typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches}#C(){if(this.#A(),this.#S())return;let e=this.#e.querySelector("canvas.sprk"),a=e?.getContext("2d")??null;!e||!a||(this.#a=e,this.#r=a,this.#o=[],this.#E(),typeof ResizeObserver=="function"&&(this.#i=new ResizeObserver(()=>this.#E()),this.#i.observe(this)),this.#c=r=>{let s=this.getBoundingClientRect();this.#h=r.clientX-s.left,this.#d=r.clientY-s.top},this.#u=()=>{this.#h=-999,this.#d=-999},this.addEventListener("pointermove",this.#c),this.addEventListener("pointerleave",this.#u),this.#s=requestAnimationFrame(()=>this.#k()))}#A(){this.#s&&cancelAnimationFrame(this.#s),this.#s=0,this.#i?.disconnect(),this.#i=null,this.#c&&this.removeEventListener("pointermove",this.#c),this.#u&&this.removeEventListener("pointerleave",this.#u),this.#c=null,this.#u=null}#E(){let e=this.#a,a=this.#r;if(!e||!a)return;let r=this.getBoundingClientRect(),s=Math.min(typeof devicePixelRatio=="number"?devicePixelRatio:1,2);if(this.#n=r.width,this.#l=r.height||90,e.width=Math.max(1,Math.round(this.#n*s)),e.height=Math.max(1,Math.round(this.#l*s)),a.setTransform(s,0,0,s,0,0),!this.#o.length)for(let i=0;i<RH;i++)this.#o.push({x:it(0,this.#n),y:it(0,this.#l),vx:it(-.1,.1),vy:it(-.08,.08),rot:it(0,BH),rv:it(-.014,.014),s:it(1.2,2.2),col:bA[i%bA.length]})}#w(e,a,r,s,i){let o=this.#r;o&&(o.roundRect?(o.beginPath(),o.roundRect(e,a,r,s,i)):(o.beginPath(),o.moveTo(e+i,a),o.arcTo(e+r,a,e+r,a+s,i),o.arcTo(e+r,a+s,e,a+s,i),o.arcTo(e,a+s,e,a,i),o.arcTo(e,a,e+r,a,i),o.closePath()))}#k(){let e=this.#r;if(e){e.clearRect(0,0,this.#n,this.#l);for(let a of this.#o){let r=a.x-this.#h,s=a.y-this.#d,i=r*r+s*s;if(i<ya*ya){let h=Math.sqrt(i)||1,l=(ya-h)/ya*.5;a.vx+=r/h*l,a.vy+=s/h*l}a.vx*=.95,a.vy*=.95,a.x+=a.vx+.04,a.y+=a.vy,a.rot+=a.rv,a.x<-6&&(a.x=this.#n+6),a.x>this.#n+6&&(a.x=-6),a.y<-6&&(a.y=this.#l+6),a.y>this.#l+6&&(a.y=-6);let o=a.s*4,n=a.s*1.55;e.save(),e.translate(a.x,a.y),e.rotate(a.rot),e.globalAlpha=.5,e.fillStyle=a.col,this.#w(-o/2,-n/2,o,n,n/2),e.fill(),e.globalAlpha=.85,e.fillStyle="#fff",this.#w(-o/2+n*.3,-n*.34,o-n*.6,n*.3,n*.15),e.fill(),e.restore(),e.globalAlpha=1}this.#s=requestAnimationFrame(()=>this.#k())}}};g("slicc-dip",wa);var NH=14,qH=12,UH="Something went wrong",WH={retry:"Try again",settings:"Open Settings","change-model":"Change model",login:"Log in again"},$H={retry:"rotate-ccw",settings:"settings","change-model":"sparkles",login:"log-in"},GH=`
659
+ `,IH=C(VH),wa=class extends HTMLElement{static observedAttributes=["name","hue","prompt"];#e;#t=`d${++FH}`;#a=null;#r=null;#s=0;#i=null;#o=[];#n=0;#l=0;#h=-999;#d=-999;#c=null;#u=null;#p=null;#m=null;constructor(){super(),this.#e=this.attachShadow({mode:"open"}),this.#e.adoptedStyleSheets=[IH]}connectedCallback(){this.#v(),this.#_(),this.#S()}disconnectedCallback(){this.#A(),this.#b()}attributeChangedCallback(){this.isConnected&&(this.#v(),this.#_(),this.#S())}get name(){return this.getAttribute("name")??"palette.shtml"}set name(e){e==null?this.removeAttribute("name"):this.setAttribute("name",e)}get hue(){return this.getAttribute("hue")}set hue(e){e==null?this.removeAttribute("hue"):this.setAttribute("hue",e)}get prompt(){return this.getAttribute("prompt")}set prompt(e){e==null?this.removeAttribute("prompt"):this.setAttribute("prompt",e)}get selectedCanvas(){return this.#x(`canvas:${this.#t}`)}get selectedAccent(){return this.#x(`accent:${this.#t}`)}#x(e){let a=this.querySelector(`slicc-palette-cell[group="${CSS.escape(e)}"][selected]`);return a?{color:a.getAttribute("color")??"",label:a.getAttribute("label")??""}:null}#f(e,a,r){let s=e.startsWith("canvas")?"canvas":"accent";if(!this.querySelector(`slicc-palette-cell[slot="${s}"]`))for(let i of a){let o=this.ownerDocument.createElement("slicc-palette-cell");o.setAttribute("slot",s),o.setAttribute("color",i.color),o.setAttribute("label",i.label),o.setAttribute("group",e),i.label===r&&o.setAttribute("selected",""),this.appendChild(o)}}#g(){return[document.createTextNode("Tune the hero\u2019s "),d("b",null,"canvas"),document.createTextNode(" & "),d("b",null,"accent"),document.createTextNode(", then apply:")]}#v(){let e=this.hue,a=e?`--c:${e}`:void 0,r=d("slot",{name:"prompt"});this.prompt?r.append(this.prompt):r.append(...this.#g()),this.#e.replaceChildren(d("canvas",{class:"sprk",part:"field","aria-hidden":"true"}),d("div",{class:"dh",part:"header",style:a},d("span",{class:"sg",part:"glyph"},b("sparkles",{size:12})),d("span",{class:"nm",part:"name"},this.name),d("span",{class:"tag",part:"tag"},"sprinkle \xB7 dip")),d("div",{class:"dbody",part:"body",style:a},d("p",{class:"dprompt",part:"prompt"},r),d("div",{class:"pgrid canvas",part:"grid-canvas"},d("slot",{name:"canvas"})),d("div",{class:"pgrid accent",part:"grid-accent"},d("slot",{name:"accent"})),d("div",{class:"dfoot"},d("button",{class:"dapply",part:"apply",type:"button"},"Apply to hero \u2192"),d("span",{class:"dnote",part:"note"})))),this.#f(`canvas:${this.#t}`,zH,"paper"),this.#f(`accent:${this.#t}`,OH,"cone"),this.#M()}#M(){let e=this.#e.querySelector(".dnote");if(!e)return;let a=this.selectedCanvas?.label??"paper",r=this.selectedAccent?.label??"violet";e.textContent=`${a} \xB7 ${r}`}#_(){this.#p||(this.#p=()=>this.#M(),this.addEventListener("palette-select",this.#p)),this.#m||(this.#m=()=>this.#y()),this.#e.querySelector(".dapply")?.addEventListener("click",this.#m)}#b(){this.#p&&(this.removeEventListener("palette-select",this.#p),this.#p=null),this.#m=null}#y(){this.#M(),this.dispatchEvent(new CustomEvent("slicc-dip-apply",{bubbles:!0,composed:!0,detail:{canvas:this.selectedCanvas,accent:this.selectedAccent}}))}#w(){return typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches}#S(){if(this.#A(),this.#w())return;let e=this.#e.querySelector("canvas.sprk"),a=e?.getContext("2d")??null;!e||!a||(this.#a=e,this.#r=a,this.#o=[],this.#E(),typeof ResizeObserver=="function"&&(this.#i=new ResizeObserver(()=>this.#E()),this.#i.observe(this)),this.#c=r=>{let s=this.getBoundingClientRect();this.#h=r.clientX-s.left,this.#d=r.clientY-s.top},this.#u=()=>{this.#h=-999,this.#d=-999},this.addEventListener("pointermove",this.#c),this.addEventListener("pointerleave",this.#u),this.#s=requestAnimationFrame(()=>this.#k()))}#A(){this.#s&&cancelAnimationFrame(this.#s),this.#s=0,this.#i?.disconnect(),this.#i=null,this.#c&&this.removeEventListener("pointermove",this.#c),this.#u&&this.removeEventListener("pointerleave",this.#u),this.#c=null,this.#u=null}#E(){let e=this.#a,a=this.#r;if(!e||!a)return;let r=this.getBoundingClientRect(),s=Math.min(typeof devicePixelRatio=="number"?devicePixelRatio:1,2);if(this.#n=r.width,this.#l=r.height||90,e.width=Math.max(1,Math.round(this.#n*s)),e.height=Math.max(1,Math.round(this.#l*s)),a.setTransform(s,0,0,s,0,0),!this.#o.length)for(let i=0;i<RH;i++)this.#o.push({x:it(0,this.#n),y:it(0,this.#l),vx:it(-.1,.1),vy:it(-.08,.08),rot:it(0,BH),rv:it(-.014,.014),s:it(1.2,2.2),col:bA[i%bA.length]})}#C(e,a,r,s,i){let o=this.#r;o&&(o.roundRect?(o.beginPath(),o.roundRect(e,a,r,s,i)):(o.beginPath(),o.moveTo(e+i,a),o.arcTo(e+r,a,e+r,a+s,i),o.arcTo(e+r,a+s,e,a+s,i),o.arcTo(e,a+s,e,a,i),o.arcTo(e,a,e+r,a,i),o.closePath()))}#k(){let e=this.#r;if(e){e.clearRect(0,0,this.#n,this.#l);for(let a of this.#o){let r=a.x-this.#h,s=a.y-this.#d,i=r*r+s*s;if(i<ya*ya){let h=Math.sqrt(i)||1,l=(ya-h)/ya*.5;a.vx+=r/h*l,a.vy+=s/h*l}a.vx*=.95,a.vy*=.95,a.x+=a.vx+.04,a.y+=a.vy,a.rot+=a.rv,a.x<-6&&(a.x=this.#n+6),a.x>this.#n+6&&(a.x=-6),a.y<-6&&(a.y=this.#l+6),a.y>this.#l+6&&(a.y=-6);let o=a.s*4,n=a.s*1.55;e.save(),e.translate(a.x,a.y),e.rotate(a.rot),e.globalAlpha=.5,e.fillStyle=a.col,this.#C(-o/2,-n/2,o,n,n/2),e.fill(),e.globalAlpha=.85,e.fillStyle="#fff",this.#C(-o/2+n*.3,-n*.34,o-n*.6,n*.3,n*.15),e.fill(),e.restore(),e.globalAlpha=1}this.#s=requestAnimationFrame(()=>this.#k())}}};g("slicc-dip",wa);var NH=14,qH=12,UH="Something went wrong",WH={retry:"Try again",settings:"Open Settings","change-model":"Change model",login:"Log in again"},$H={retry:"rotate-ccw",settings:"settings","change-model":"sparkles",login:"log-in"},GH=`
660
660
  :host{
661
661
  /* Error cards sit in the assistant column (left-aligned). Tokens default to
662
662
  the light palette and flip in dark mode via the library's outer scopes
@@ -1307,7 +1307,7 @@ slicc-composer .slicc-composer__ptt.is-picking {
1307
1307
  animation-name: none;
1308
1308
  }
1309
1309
  }
1310
- `,CA="slicc-composer-style";function MP(t){if(t.getElementById(CA))return;let e=t.createElement("style");e.id=CA,e.textContent=bP,(t.head??t.documentElement).appendChild(e)}var AA=3e3,_P=60,yP=100,wP=1e4,SP=45e3;function kA(t,e,a){return new Promise((r,s)=>{let i=setTimeout(()=>s(a),e);t.then(o=>{clearTimeout(i),r(o)},o=>{clearTimeout(i),s(o instanceof Error?o:new Error(String(o)))})})}var CP=8,kl="slicc-composer:mic-device";function kP(){try{return typeof localStorage>"u"?null:localStorage.getItem(kl)}catch{return null}}function AP(t){try{if(typeof localStorage>"u")return;t?localStorage.setItem(kl,t):localStorage.removeItem(kl)}catch{}}function EP(t){if(t==null||!Number.isFinite(t))return"";if(t<60)return`~${Math.max(1,Math.round(t))}s`;let e=Math.floor(t/60),a=Math.round(t%60);return`~${e}m ${a}s`}var Ha=class extends HTMLElement{static observedAttributes=["open"];#e;#t=!1;#a=null;#r="idle";#s=!1;#i=0;#o=null;#n=null;#l=null;#h=null;#d=null;#c="unknown";#u=kP();#p=null;#m=null;#x=null;#f=null;#g=null;#v=null;#M=null;#y=null;#b=null;#_=null;#S=[];connectedCallback(){MP(this.ownerDocument),this.#C(),this.addEventListener("pointerdown",this.#A)}disconnectedCallback(){this.removeEventListener("pointerdown",this.#A),this.#l?.cancel(),this.#l=null,this.#T(),this.#s=!1,this.#o=null,this.#i++,this.#z(),this.#N(),this.#p&&clearTimeout(this.#p),this.#p=null,this.#D(),this.#$(),this.#L()}attributeChangedCallback(){}get open(){return this.hasAttribute("open")}set open(e){e?this.setAttribute("open",""):this.removeAttribute("open")}get speech(){return this.#d??=Cl(),this.#d}set speech(e){this.#d=e,this.#c="unknown"}get device(){return this.#u}set device(e){this.#u=e,AP(e)}get inner(){return this.#C(),this.#e}append(...e){this.#C(),this.#e.append(...e)}#C(){if(this.#t)return;this.#t=!0;let e=this.querySelector(":scope > .slicc-composer__inner");if(e instanceof HTMLElement){this.#e=e;return}let a=Array.from(this.childNodes);this.#e=this.ownerDocument.createElement("div"),this.#e.className="slicc-composer__inner",this.#e.setAttribute("part","inner");for(let r of a)this.#e.appendChild(r);this.appendChild(this.#e)}#A=e=>{if(!this.hasAttribute("ptt")||!e.isPrimary||this.#s||e.button!==0||this.#r==="finalizing"||this.#r==="picking")return;let r=e.target?.closest?.("textarea");if(!(r instanceof HTMLTextAreaElement)||!this.contains(r))return;this.#s=!0,this.#i++,this.#o=r,this.#n=e.pointerId;try{this.setPointerCapture(e.pointerId)}catch{}this.setAttribute("data-ptt-pressed",""),this.ownerDocument.addEventListener("pointerup",this.#B),this.addEventListener("pointercancel",this.#I);let i=this.#i;this.#m=setTimeout(()=>{this.#m=null,this.#E(this.speech,i)},yP)};async#E(e,a){let r=await Promise.race([e.permission().then(s=>(this.#c=s,s)),new Promise(s=>setTimeout(()=>s("pending"),_P))]);if(!(a!==this.#i||!this.#s)){if(r==="granted"){this.#k(e,a);return}if(r==="denied"){this.#V("denied");return}this.#V("enable"),this.#p=setTimeout(()=>{this.#p=null,this.#w(e,a)},AA),r==="pending"&&e.permission().then(s=>{this.#c=s,!(a!==this.#i||!this.#s||this.#r!=="enable")&&(s==="granted"?(this.#P(),this.#k(e,a)):s==="denied"&&(this.#P(),this.#V("denied")))})}}#w(e,a){a!==this.#i||!this.#s||this.#r!=="enable"||(this.#g=null,this.#V("prompting"),kA(e.requestPermission(),wP,new Error("Microphone didn't respond. Check your mic, then hold again.")).then(r=>{this.#c=r?"granted":"denied",r&&e.warmup(),a===this.#i&&(r&&this.#s?this.#k(e,a):r?this.#L():this.#s?this.#V("denied"):this.#L())}).catch(r=>{this.#c="denied",a===this.#i&&(this.#s?(this.#g=r instanceof Error?r.message:String(r),this.#V("denied")):this.#L())}))}#k(e,a){this.#r="recording",this.#V("recording"),e.warmup(),this.#x?.(),this.#x=e.onStatus(s=>{this.#f=s,this.#j()}),e.microphones().then(s=>{a===this.#i&&Ta(s)&&this.#J(s)});let r=e.start({deviceId:this.#u??void 0,onPartial:s=>{a===this.#i&&this.#G(s)},onError:s=>{a===this.#i&&this.#G(s,!0)}});this.#h=r,r.then(s=>{if(this.#h===r){if(this.#h=null,a!==this.#i||this.#r!=="recording"){s.cancel();return}this.#l=s}}).catch(s=>{this.#h===r&&(this.#h=null,a===this.#i&&this.#G(s instanceof Error?s.message:String(s),!0))})}#T(){let e=this.#h;this.#h=null,e&&e.then(a=>a.cancel(),()=>{})}#B=e=>{if(!this.#s||this.#n!=null&&e.pointerId!==this.#n)return;let a=this.#b,r=!1;if(this.#r==="recording"&&a&&!a.hidden)if(e.composedPath().includes(a))r=!0;else{let s=this.ownerDocument.elementFromPoint(e.clientX,e.clientY);r=s!=null&&a.contains(s)}if(r){this.#s=!1,this.#z(),this.#D(),this.#l?.cancel(),this.#l=null,this.#T(),this.#o=null,this.#O();return}this.#F(!0)};#I=e=>{this.#n!=null&&e.pointerId!==this.#n||this.#F(!1)};#F(e){if(!this.#s)return;switch(this.#s=!1,this.#N(),this.#z(),this.#D(),this.#r){case"enable":this.#P(),this.#o=null,this.#L();return;case"prompting":this.#o=null;return;case"denied":this.#o=null,this.#L();return;case"recording":break;default:this.#o=null,this.#L();return}let a=this.#l;this.#l=null;let r=this.#h;if(this.#h=null,!e){a?.cancel(),r&&r.then(o=>o.cancel(),()=>{}),this.#o=null,this.#L();return}if(!a&&!r){this.#o=null,this.#L();return}this.#r="finalizing",this.#G("Transcribing\u2026");let s=this.#i,i=a?Promise.resolve(a):r;kA(i.then(o=>o.stop()),SP,new Error("finalize timed out")).then(o=>{s===this.#i&&(this.#L(),this.#H(o))}).catch(()=>{s===this.#i&&(this.#L(),this.#o=null)})}#H(e){let a=this.#o;if(this.#o=null,!a)return;let r=e.trim();if(!r){a.focus();return}a.value=a.value?/\s$/.test(a.value)?a.value+r:`${a.value} ${r}`:r,a.dispatchEvent(new Event("input",{bubbles:!0})),a.focus();let s=a.closest("slicc-input-card");s&&typeof s.submit=="function"?s.submit("dictation"):a.dispatchEvent(new CustomEvent("submit",{bubbles:!0,composed:!0,detail:{value:a.value,source:"dictation"}}))}#P(){this.#p&&clearTimeout(this.#p),this.#p=null}#N(){this.#m&&clearTimeout(this.#m),this.#m=null}#D(){this.ownerDocument.removeEventListener("pointerup",this.#B),this.removeEventListener("pointercancel",this.#I)}#z(){let e=this.#n;if(this.#n=null,this.removeAttribute("data-ptt-pressed"),e!=null)try{this.releasePointerCapture(e)}catch{}}#O(){this.#r="picking",this.#X("picking"),this.#v&&(this.#v.textContent="Choose a microphone"),this.#M&&(this.#M.hidden=!0),this.#R();let e=this.ownerDocument;e.addEventListener("pointerdown",this.#W,!0),e.addEventListener("keydown",this.#q,!0)}#R(){let e=this.#b;if(!e||this.#_)return;let a=d("div",{class:"slicc-composer__ptt-device-menu",role:"menu"}),r=null;for(let s of this.#S){let i=s.deviceId===this.#u,o=d("button",{type:"button",class:"slicc-composer__ptt-device-item",role:"menuitemradio","aria-checked":i?"true":"false","data-device-id":s.deviceId},s.label,d("span",{class:"tick"},b("check",{size:14})));o.addEventListener("click",()=>{this.device=s.deviceId,this.#K()}),(i||!r)&&(r=o),a.appendChild(o)}this.#_=a,e.appendChild(a),this.#U(a,e),r?.focus()}#U(e,a){let o=a.getBoundingClientRect(),h=(window.innerHeight||document.documentElement.clientHeight)-o.bottom-6-8,l=o.top-6-8,p=e.offsetHeight>h&&l>h;e.classList.toggle("slicc-composer__ptt-device-menu--up",p);let c=Math.max(p?l:h,0);e.style.maxHeight=`${Math.min(320,c)}px`}#W=e=>{this.#b&&e.composedPath().includes(this.#b)||this.#K()};#q=e=>{e.key==="Escape"&&(e.stopPropagation(),this.#K())};#$(){let e=this.ownerDocument;e.removeEventListener("pointerdown",this.#W,!0),e.removeEventListener("keydown",this.#q,!0)}#K(){this.#$(),this.#L()}#V(e){switch(this.#r=e,this.#a||(this.#a=d("div",{class:"slicc-composer__ptt","data-ptt":!0,role:"button"}),this.appendChild(this.#a)),this.#X(e),e){case"enable":this.#Z(b("mic",{size:28}),"Hold to enable push to talk",this.#Y("Requesting microphone access when the bar fills")),this.#a.setAttribute("aria-label","Hold to enable push to talk");break;case"prompting":this.#Z(b("mic",{size:28}),"Allow microphone access in the browser prompt",this.#Y("Waiting for permission\u2026")),this.#a.setAttribute("aria-label","Waiting for microphone permission");break;case"denied":{let a=this.#g?"Microphone unavailable":"Microphone access is blocked",r=this.#g??"Enable the microphone for this site in your browser settings, then hold again.";this.#Z(b("mic-off",{size:28}),a,d("div",{class:"slicc-composer__ptt-load-text"},r)),this.#a.setAttribute("aria-label",a);break}case"recording":{this.#b=d("div",{class:"slicc-composer__ptt-device",hidden:!0}),this.#M=d("div",{class:"slicc-composer__ptt-caption","aria-live":"polite",hidden:!0}),this.#y=d("div",{class:"slicc-composer__ptt-status",hidden:!0});let a=d("div",{class:"slicc-composer__ptt-microw"},d("div",{class:"slicc-composer__ptt-mic"},b("mic",{size:28})),this.#b);this.#v=d("div",{class:"slicc-composer__ptt-label"},"Listening \u2014 release to send"),this.#a.replaceChildren(a,this.#v,this.#M,this.#y),this.#a.setAttribute("aria-label","Listening \u2014 release to send"),this.#j();break}}}#Z(e,a,r){this.#a&&(this.#v=d("div",{class:"slicc-composer__ptt-label"},a),this.#M=null,this.#y=null,this.#b=null,this.#_=null,this.#S=[],this.#a.replaceChildren(d("div",{class:"slicc-composer__ptt-mic"},e),this.#v,r))}#Y(e){return d("div",{class:"slicc-composer__ptt-load"},d("span",{class:"slicc-composer__ptt-load-text"},e),d("div",{class:"slicc-composer__ptt-bar"},d("div",{class:"slicc-composer__ptt-bar-fill"})))}#X(e){this.#a&&(this.#a.classList.remove("is-enable","is-prompting","is-denied","is-recording","is-finalizing","is-picking"),e!=="idle"&&this.#a.classList.add(`is-${e}`))}#G(e,a=!1){let r=this.#M;if(!r)return;let s=e.trim().split(/\s+/).filter(Boolean);if(s.length===0){r.hidden=!0;return}r.textContent=s.slice(-CP).join(" "),r.classList.toggle("is-error",a),r.hidden=!1}#j(){let e=this.#y;if(!e)return;let a=this.#f;if(a?.state==="downloading"){if(a.download){let r=EP(a.download.etaSeconds??null);e.textContent=r?`Better speech recognition downloading \xB7 ready in ${r}`:"Better speech recognition downloading\u2026"}else e.textContent="Preparing enhanced speech\u2026";e.classList.remove("is-error"),e.hidden=!1}else a?.state==="ready"&&a.engine==="enhanced"?(e.textContent="Enhanced speech recognition",e.classList.remove("is-error"),e.hidden=!1):a?.state==="unavailable"&&a.message?(e.textContent=a.message,e.classList.add("is-error"),e.hidden=!1):(e.classList.remove("is-error"),e.hidden=!0)}#J(e){let a=this.#b;if(!a)return;this.#S=e;let r=d("button",{type:"button",class:"slicc-composer__ptt-device-btn","aria-label":"Choose a microphone","aria-haspopup":"menu",title:"Choose a microphone"},b("chevron-down",{size:12}));r.addEventListener("pointerdown",s=>s.stopPropagation()),a.replaceChildren(r),a.hidden=!1}#L(){this.#x?.(),this.#x=null,this.#a?.remove(),this.#a=null,this.#v=null,this.#M=null,this.#y=null,this.#b=null,this.#_=null,this.#S=[],this.#g=null,this.#r="idle"}};g("slicc-composer",Ha);var LP=`
1310
+ `,CA="slicc-composer-style";function MP(t){if(t.getElementById(CA))return;let e=t.createElement("style");e.id=CA,e.textContent=bP,(t.head??t.documentElement).appendChild(e)}var AA=3e3,_P=60,yP=100,wP=1e4,SP=45e3;function kA(t,e,a){return new Promise((r,s)=>{let i=setTimeout(()=>s(a),e);t.then(o=>{clearTimeout(i),r(o)},o=>{clearTimeout(i),s(o instanceof Error?o:new Error(String(o)))})})}var CP=8,kl="slicc-composer:mic-device";function kP(){try{return typeof localStorage>"u"?null:localStorage.getItem(kl)}catch{return null}}function AP(t){try{if(typeof localStorage>"u")return;t?localStorage.setItem(kl,t):localStorage.removeItem(kl)}catch{}}function EP(t){if(t==null||!Number.isFinite(t))return"";if(t<60)return`~${Math.max(1,Math.round(t))}s`;let e=Math.floor(t/60),a=Math.round(t%60);return`~${e}m ${a}s`}var Ha=class extends HTMLElement{static observedAttributes=["open"];#e;#t=!1;#a=null;#r="idle";#s=!1;#i=0;#o=null;#n=null;#l=null;#h=null;#d=null;#c="unknown";#u=kP();#p=null;#m=null;#x=null;#f=null;#g=null;#v=null;#M=null;#_=null;#b=null;#y=null;#w=[];connectedCallback(){MP(this.ownerDocument),this.#S(),this.addEventListener("pointerdown",this.#A)}disconnectedCallback(){this.removeEventListener("pointerdown",this.#A),this.#l?.cancel(),this.#l=null,this.#B(),this.#s=!1,this.#o=null,this.#i++,this.#R(),this.#T(),this.#p&&clearTimeout(this.#p),this.#p=null,this.#H(),this.#$(),this.#D()}attributeChangedCallback(){}get open(){return this.hasAttribute("open")}set open(e){e?this.setAttribute("open",""):this.removeAttribute("open")}get speech(){return this.#d??=Cl(),this.#d}set speech(e){this.#d=e,this.#c="unknown"}get device(){return this.#u}set device(e){this.#u=e,AP(e)}get inner(){return this.#S(),this.#e}append(...e){this.#S(),this.#e.append(...e)}#S(){if(this.#t)return;this.#t=!0;let e=this.querySelector(":scope > .slicc-composer__inner");if(e instanceof HTMLElement){this.#e=e;return}let a=Array.from(this.childNodes);this.#e=this.ownerDocument.createElement("div"),this.#e.className="slicc-composer__inner",this.#e.setAttribute("part","inner");for(let r of a)this.#e.appendChild(r);this.appendChild(this.#e)}#A=e=>{if(!this.hasAttribute("ptt")||!e.isPrimary||this.#s||e.button!==0||this.#r==="finalizing"||this.#r==="picking")return;let r=e.target?.closest?.("textarea");if(!(r instanceof HTMLTextAreaElement)||!this.contains(r))return;this.#s=!0,this.#i++,this.#o=r,this.#n=e.pointerId;try{this.setPointerCapture(e.pointerId)}catch{}this.setAttribute("data-ptt-pressed",""),this.ownerDocument.addEventListener("pointerup",this.#z),this.addEventListener("pointercancel",this.#I);let i=this.#i;this.#m=setTimeout(()=>{this.#m=null,this.#E(this.speech,i)},yP)};async#E(e,a){let r=await Promise.race([e.permission().then(s=>(this.#c=s,s)),new Promise(s=>setTimeout(()=>s("pending"),_P))]);if(!(a!==this.#i||!this.#s)){if(r==="granted"){this.#k(e,a);return}if(r==="denied"){this.#N("denied");return}this.#N("enable"),this.#p=setTimeout(()=>{this.#p=null,this.#C(e,a)},AA),r==="pending"&&e.permission().then(s=>{this.#c=s,!(a!==this.#i||!this.#s||this.#r!=="enable")&&(s==="granted"?(this.#P(),this.#k(e,a)):s==="denied"&&(this.#P(),this.#N("denied")))})}}#C(e,a){a!==this.#i||!this.#s||this.#r!=="enable"||(this.#g=null,this.#N("prompting"),kA(e.requestPermission(),wP,new Error("Microphone didn't respond. Check your mic, then hold again.")).then(r=>{this.#c=r?"granted":"denied",r&&e.warmup(),a===this.#i&&(r&&this.#s?this.#k(e,a):r?this.#D():this.#s?this.#N("denied"):this.#D())}).catch(r=>{this.#c="denied",a===this.#i&&(this.#s?(this.#g=r instanceof Error?r.message:String(r),this.#N("denied")):this.#D())}))}#k(e,a){this.#r="recording",this.#N("recording"),e.warmup(),this.#x?.(),this.#x=e.onStatus(s=>{this.#f=s,this.#j()}),e.microphones().then(s=>{a===this.#i&&Ta(s)&&this.#J(s)});let r=e.start({deviceId:this.#u??void 0,onPartial:s=>{a===this.#i&&this.#G(s)},onError:s=>{a===this.#i&&this.#G(s,!0)}});this.#h=r,r.then(s=>{if(this.#h===r){if(this.#h=null,a!==this.#i||this.#r!=="recording"){s.cancel();return}this.#l=s}}).catch(s=>{this.#h===r&&(this.#h=null,a===this.#i&&this.#G(s instanceof Error?s.message:String(s),!0))})}#B(){let e=this.#h;this.#h=null,e&&e.then(a=>a.cancel(),()=>{})}#z=e=>{if(!this.#s||this.#n!=null&&e.pointerId!==this.#n)return;let a=this.#b,r=!1;if(this.#r==="recording"&&a&&!a.hidden)if(e.composedPath().includes(a))r=!0;else{let s=this.ownerDocument.elementFromPoint(e.clientX,e.clientY);r=s!=null&&a.contains(s)}if(r){this.#s=!1,this.#R(),this.#H(),this.#l?.cancel(),this.#l=null,this.#B(),this.#o=null,this.#F();return}this.#O(!0)};#I=e=>{this.#n!=null&&e.pointerId!==this.#n||this.#O(!1)};#O(e){if(!this.#s)return;switch(this.#s=!1,this.#T(),this.#R(),this.#H(),this.#r){case"enable":this.#P(),this.#o=null,this.#D();return;case"prompting":this.#o=null;return;case"denied":this.#o=null,this.#D();return;case"recording":break;default:this.#o=null,this.#D();return}let a=this.#l;this.#l=null;let r=this.#h;if(this.#h=null,!e){a?.cancel(),r&&r.then(o=>o.cancel(),()=>{}),this.#o=null,this.#D();return}if(!a&&!r){this.#o=null,this.#D();return}this.#r="finalizing",this.#G("Transcribing\u2026");let s=this.#i,i=a?Promise.resolve(a):r;kA(i.then(o=>o.stop()),SP,new Error("finalize timed out")).then(o=>{s===this.#i&&(this.#D(),this.#L(o))}).catch(()=>{s===this.#i&&(this.#D(),this.#o=null)})}#L(e){let a=this.#o;if(this.#o=null,!a)return;let r=e.trim();if(!r){a.focus();return}a.value=a.value?/\s$/.test(a.value)?a.value+r:`${a.value} ${r}`:r,a.dispatchEvent(new Event("input",{bubbles:!0})),a.focus();let s=a.closest("slicc-input-card");s&&typeof s.submit=="function"?s.submit("dictation"):a.dispatchEvent(new CustomEvent("submit",{bubbles:!0,composed:!0,detail:{value:a.value,source:"dictation"}}))}#P(){this.#p&&clearTimeout(this.#p),this.#p=null}#T(){this.#m&&clearTimeout(this.#m),this.#m=null}#H(){this.ownerDocument.removeEventListener("pointerup",this.#z),this.removeEventListener("pointercancel",this.#I)}#R(){let e=this.#n;if(this.#n=null,this.removeAttribute("data-ptt-pressed"),e!=null)try{this.releasePointerCapture(e)}catch{}}#F(){this.#r="picking",this.#X("picking"),this.#v&&(this.#v.textContent="Choose a microphone"),this.#M&&(this.#M.hidden=!0),this.#V();let e=this.ownerDocument;e.addEventListener("pointerdown",this.#W,!0),e.addEventListener("keydown",this.#q,!0)}#V(){let e=this.#b;if(!e||this.#y)return;let a=d("div",{class:"slicc-composer__ptt-device-menu",role:"menu"}),r=null;for(let s of this.#w){let i=s.deviceId===this.#u,o=d("button",{type:"button",class:"slicc-composer__ptt-device-item",role:"menuitemradio","aria-checked":i?"true":"false","data-device-id":s.deviceId},s.label,d("span",{class:"tick"},b("check",{size:14})));o.addEventListener("click",()=>{this.device=s.deviceId,this.#K()}),(i||!r)&&(r=o),a.appendChild(o)}this.#y=a,e.appendChild(a),this.#U(a,e),r?.focus()}#U(e,a){let o=a.getBoundingClientRect(),h=(window.innerHeight||document.documentElement.clientHeight)-o.bottom-6-8,l=o.top-6-8,p=e.offsetHeight>h&&l>h;e.classList.toggle("slicc-composer__ptt-device-menu--up",p);let c=Math.max(p?l:h,0);e.style.maxHeight=`${Math.min(320,c)}px`}#W=e=>{this.#b&&e.composedPath().includes(this.#b)||this.#K()};#q=e=>{e.key==="Escape"&&(e.stopPropagation(),this.#K())};#$(){let e=this.ownerDocument;e.removeEventListener("pointerdown",this.#W,!0),e.removeEventListener("keydown",this.#q,!0)}#K(){this.#$(),this.#D()}#N(e){switch(this.#r=e,this.#a||(this.#a=d("div",{class:"slicc-composer__ptt","data-ptt":!0,role:"button"}),this.appendChild(this.#a)),this.#X(e),e){case"enable":this.#Z(b("mic",{size:28}),"Hold to enable push to talk",this.#Y("Requesting microphone access when the bar fills")),this.#a.setAttribute("aria-label","Hold to enable push to talk");break;case"prompting":this.#Z(b("mic",{size:28}),"Allow microphone access in the browser prompt",this.#Y("Waiting for permission\u2026")),this.#a.setAttribute("aria-label","Waiting for microphone permission");break;case"denied":{let a=this.#g?"Microphone unavailable":"Microphone access is blocked",r=this.#g??"Enable the microphone for this site in your browser settings, then hold again.";this.#Z(b("mic-off",{size:28}),a,d("div",{class:"slicc-composer__ptt-load-text"},r)),this.#a.setAttribute("aria-label",a);break}case"recording":{this.#b=d("div",{class:"slicc-composer__ptt-device",hidden:!0}),this.#M=d("div",{class:"slicc-composer__ptt-caption","aria-live":"polite",hidden:!0}),this.#_=d("div",{class:"slicc-composer__ptt-status",hidden:!0});let a=d("div",{class:"slicc-composer__ptt-microw"},d("div",{class:"slicc-composer__ptt-mic"},b("mic",{size:28})),this.#b);this.#v=d("div",{class:"slicc-composer__ptt-label"},"Listening \u2014 release to send"),this.#a.replaceChildren(a,this.#v,this.#M,this.#_),this.#a.setAttribute("aria-label","Listening \u2014 release to send"),this.#j();break}}}#Z(e,a,r){this.#a&&(this.#v=d("div",{class:"slicc-composer__ptt-label"},a),this.#M=null,this.#_=null,this.#b=null,this.#y=null,this.#w=[],this.#a.replaceChildren(d("div",{class:"slicc-composer__ptt-mic"},e),this.#v,r))}#Y(e){return d("div",{class:"slicc-composer__ptt-load"},d("span",{class:"slicc-composer__ptt-load-text"},e),d("div",{class:"slicc-composer__ptt-bar"},d("div",{class:"slicc-composer__ptt-bar-fill"})))}#X(e){this.#a&&(this.#a.classList.remove("is-enable","is-prompting","is-denied","is-recording","is-finalizing","is-picking"),e!=="idle"&&this.#a.classList.add(`is-${e}`))}#G(e,a=!1){let r=this.#M;if(!r)return;let s=e.trim().split(/\s+/).filter(Boolean);if(s.length===0){r.hidden=!0;return}r.textContent=s.slice(-CP).join(" "),r.classList.toggle("is-error",a),r.hidden=!1}#j(){let e=this.#_;if(!e)return;let a=this.#f;if(a?.state==="downloading"){if(a.download){let r=EP(a.download.etaSeconds??null);e.textContent=r?`Better speech recognition downloading \xB7 ready in ${r}`:"Better speech recognition downloading\u2026"}else e.textContent="Preparing enhanced speech\u2026";e.classList.remove("is-error"),e.hidden=!1}else a?.state==="ready"&&a.engine==="enhanced"?(e.textContent="Enhanced speech recognition",e.classList.remove("is-error"),e.hidden=!1):a?.state==="unavailable"&&a.message?(e.textContent=a.message,e.classList.add("is-error"),e.hidden=!1):(e.classList.remove("is-error"),e.hidden=!0)}#J(e){let a=this.#b;if(!a)return;this.#w=e;let r=d("button",{type:"button",class:"slicc-composer__ptt-device-btn","aria-label":"Choose a microphone","aria-haspopup":"menu",title:"Choose a microphone"},b("chevron-down",{size:12}));r.addEventListener("pointerdown",s=>s.stopPropagation()),a.replaceChildren(r),a.hidden=!1}#D(){this.#x?.(),this.#x=null,this.#a?.remove(),this.#a=null,this.#v=null,this.#M=null,this.#_=null,this.#b=null,this.#y=null,this.#w=[],this.#g=null,this.#r="idle"}};g("slicc-composer",Ha);var LP=`
1311
1311
  slicc-composer-capture {
1312
1312
  position: relative;
1313
1313
  display: block;
@@ -1511,7 +1511,7 @@ slicc-composer-capture .slicc-capture__timer {
1511
1511
  slicc-composer-capture .slicc-capture__timer[hidden] {
1512
1512
  display: none;
1513
1513
  }
1514
- `,EA="slicc-composer-capture-style";function TP(t){if(t.getElementById(EA))return;let e=t.createElement("style");e.id=EA,e.textContent=LP,(t.head??t.documentElement).appendChild(e)}var HP="photo",PP=["video/webm;codecs=vp9,opus","video/webm;codecs=vp8,opus","video/webm"];function DP(){if(typeof MediaRecorder>"u")return"video/webm";for(let t of PP)if(MediaRecorder.isTypeSupported?.(t))return t;return"video/webm"}function LA(t){let e=Math.max(0,Math.floor(t/1e3)),a=Math.floor(e/60),r=e%60;return`${a}:${String(r).padStart(2,"0")}`}var Pa=class extends HTMLElement{static observedAttributes=["mode","preferred-device","preferred-audio-device"];media=null;recorderFactory=null;#e;#t;#a;#r;#s;#i;#o;#n;#l;#h=!1;#d=null;#c=null;#u=null;#p=[];#m=0;#x=null;#f=null;#g=e=>{e.key==="Escape"&&this.#f&&this.#z()};connectedCallback(){TP(this.ownerDocument),this.#q(),this.ownerDocument.addEventListener("keydown",this.#g)}disconnectedCallback(){if(this.ownerDocument.removeEventListener("keydown",this.#g),this.#H(),this.#P(),this.#D(),this.#f){let e=this.#f;this.#f=null,e(null)}}attributeChangedCallback(e,a,r){e==="mode"&&this.#h&&this.#R(r??HP)}get mode(){return this.getAttribute("mode")==="video"?"video":"photo"}set mode(e){e==null?this.removeAttribute("mode"):this.setAttribute("mode",e)}get preferredDevice(){return this.getAttribute("preferred-device")}set preferredDevice(e){e==null?this.removeAttribute("preferred-device"):this.setAttribute("preferred-device",e)}get preferredAudioDevice(){return this.getAttribute("preferred-audio-device")}set preferredAudioDevice(e){e==null?this.removeAttribute("preferred-audio-device"):this.setAttribute("preferred-audio-device",e)}#v(){return this.media??(typeof navigator<"u"?navigator.mediaDevices:null)??null}#M(e,a){return this.recorderFactory?this.recorderFactory(e,a):new MediaRecorder(e,a)}async open(e){this.#q(),e&&(this.mode=e),this.#R(this.mode);let a=this.#v();if(!a)return null;try{this.#d=await this.#y(a,this.preferredDevice,this.preferredAudioDevice,this.mode)}catch{return null}return this.#_(),this.#S(this.#d),await this.#C(a),await this.#A(a),this.hidden=!1,new Promise(r=>{this.#f=r})}async#y(e,a,r,s){let i=this.#b(r,s);if(a)try{return await e.getUserMedia({video:{deviceId:{exact:a}},audio:i})}catch{}try{return await e.getUserMedia({video:!0,audio:i})}catch(o){if(i===!1)throw o;return this.#r.textContent="Microphone unavailable \u2014 recording video only.",e.getUserMedia({video:!0,audio:!1})}}#b(e,a){return a!=="video"?!1:e?{deviceId:{exact:e}}:!0}#_(){this.#c=this.#d?.getAudioTracks()[0]??null}#S(e){this.#e.srcObject=e,this.#e.muted=!0,this.#e.play?.()?.catch(()=>{});let a=e.getVideoTracks()[0]?.getSettings?.().facingMode;this.#e.toggleAttribute("data-mirrored",a!=="environment")}async#C(e){let a=[];try{a=(await e.enumerateDevices()).filter(i=>i.kind==="videoinput")}catch{a=[]}let r=Tt(a,"camera");this.#t.replaceChildren(...r.map(i=>d("option",{value:i.deviceId},i.label)));let s=this.#d?.getVideoTracks()[0]?.getSettings?.().deviceId;s&&(this.#t.value=s),this.#t.toggleAttribute("hidden",!Ta(r))}async#A(e){let a=[];try{a=(await e.enumerateDevices()).filter(i=>i.kind==="audioinput")}catch{a=[]}let r=Tt(a,"microphone");this.#a.replaceChildren(...r.map(i=>d("option",{value:i.deviceId},i.label)));let s=this.#c?.getSettings?.().deviceId??this.preferredAudioDevice??null;s&&r.some(i=>i.deviceId===s)&&(this.#a.value=s),this.#E()}#E(){if(!this.#a)return;let e=this.#a.options.length>=2,a=this.mode==="video"&&e;this.#a.toggleAttribute("hidden",!a)}async#w(e){let a=this.#v();if(a){this.#r.textContent="";try{let r=await a.getUserMedia({video:{deviceId:{exact:e}}});this.#N();let s=r;if(this.mode==="video"&&this.#c&&this.#c.readyState==="live")s.addTrack(this.#c);else if(this.mode==="video")try{let i=await a.getUserMedia({audio:this.#b(this.preferredAudioDevice,"video")});for(let o of i.getAudioTracks())this.#c=o,s.addTrack(o)}catch{this.#r.textContent="Microphone unavailable \u2014 recording video only."}this.#d=s,this.#S(s),this.dispatchEvent(new CustomEvent("slicc-capture-device-change",{detail:{deviceId:e,kind:"camera"},bubbles:!0,composed:!0}))}catch{this.#r.textContent="Could not switch camera \u2014 keeping the current one."}}}async#k(e){let a=this.#v();if(!a||!this.#d)return;this.#r.textContent="";let r;try{r=await a.getUserMedia({audio:{deviceId:{exact:e}}})}catch{this.#r.textContent="Could not switch microphone \u2014 keeping the current one.";return}let s=r.getAudioTracks()[0];if(!s){this.#r.textContent="Could not switch microphone \u2014 keeping the current one.";return}if(this.#c){try{this.#d.removeTrack(this.#c)}catch{}this.#c.stop()}this.#d.addTrack(s),this.#c=s,this.preferredAudioDevice=e,this.dispatchEvent(new CustomEvent("slicc-capture-device-change",{detail:{deviceId:e,kind:"microphone"},bubbles:!0,composed:!0}))}#T(){let e=this.ownerDocument.createElement("canvas");if(e.width=this.#e.videoWidth,e.height=this.#e.videoHeight,e.width===0||e.height===0){this.#r.textContent="No frame yet \u2014 give the camera a moment.";return}e.getContext("2d")?.drawImage(this.#e,0,0);let a="image/png",r=e.toDataURL(a);this.#O({kind:"image",dataUrl:r,mimeType:a,width:e.width,height:e.height})}#B(){if(!this.#d||this.#u)return;this.#p=[];let e=DP(),a;try{a=this.#M(this.#d,{mimeType:e})}catch{this.#r.textContent="Recording is not supported in this browser.";return}a.ondataavailable=r=>{r.data&&r.data.size>0&&this.#p.push(r.data)},a.onstop=()=>this.#F(e);try{a.start()}catch{this.#r.textContent="Could not start recording.";return}this.#u=a,this.#m=Date.now(),this.#a.disabled=!0,this.#t.disabled=!0,this.#s.hidden=!1,this.#s.textContent=LA(0),this.#x=setInterval(()=>{this.#s.textContent=LA(Date.now()-this.#m)},250),this.#U()}#I(){let e=this.#u;if(e)try{e.state!=="inactive"&&e.stop()}catch{this.#F(e.mimeType||"video/webm")}}#F(e){let a=this.#m?Date.now()-this.#m:0;this.#H();let r=this.#u?.mimeType||e||"video/webm",s=new Blob(this.#p,{type:r});this.#p=[],this.#u=null,this.#a&&(this.#a.disabled=!1),this.#t&&(this.#t.disabled=!1);let i=typeof URL<"u"?URL.createObjectURL(s):void 0;this.#O({kind:"video",blob:s,dataUrl:i,mimeType:r,width:this.#e.videoWidth,height:this.#e.videoHeight,durationMs:a})}#H(){this.#x!=null&&(clearInterval(this.#x),this.#x=null),this.#s.hidden=!0,this.#s.textContent="",this.#m=0}#P(){let e=this.#u;if(this.#u=null,this.#p=[],this.#a&&(this.#a.disabled=!1),this.#t&&(this.#t.disabled=!1),e){e.ondataavailable=null,e.onstop=null;try{e.state!=="inactive"&&e.stop()}catch{}}}#N(){for(let e of this.#d?.getVideoTracks()??[])e.stop()}#D(){for(let e of this.#d?.getTracks()??[])e.stop();this.#d=null,this.#c=null,this.#e&&(this.#e.srcObject=null)}#z(){this.dispatchEvent(new CustomEvent("slicc-capture-cancel",{bubbles:!0,composed:!0})),this.#O(null)}#O(e){e&&this.dispatchEvent(new CustomEvent("slicc-capture",{detail:e,bubbles:!0,composed:!0})),this.#H(),this.#P(),this.#D();let a=this.#f;this.#f=null,this.hidden=!0,a?.(e)}#R(e){let a=e==="video";this.#n.setAttribute("aria-pressed",String(!a)),this.#l.setAttribute("aria-pressed",String(a)),this.#r.textContent=a?"Mic on \u2014 video will record audio.":"",this.#U(),this.#E()}#U(){let e=this.#i;if(e.replaceChildren(),this.mode==="photo"){e.className="slicc-capture__btn slicc-capture__btn--primary",e.setAttribute("part","snap"),e.setAttribute("aria-label","Snap photo"),e.append(b("camera",{size:14}),document.createTextNode(" Snap"));return}this.#u?(e.className="slicc-capture__btn slicc-capture__btn--rec",e.setAttribute("part","stop"),e.setAttribute("aria-label","Stop recording"),e.append(d("span",{class:"slicc-capture__square"}),document.createTextNode(" Stop"))):(e.className="slicc-capture__btn slicc-capture__btn--rec",e.setAttribute("part","record"),e.setAttribute("aria-label","Start recording"),e.append(d("span",{class:"slicc-capture__dot"}),document.createTextNode(" Record")))}#W(){if(this.mode==="photo"){this.#T();return}this.#u?this.#I():this.#B()}#q(){if(this.#h)return;this.#h=!0,this.#e=d("video",{class:"slicc-capture__video",part:"video",autoplay:!0,muted:!0,playsinline:!0}),this.#e.muted=!0,this.#r=d("div",{class:"slicc-capture__status"}),this.#t=d("select",{class:"slicc-capture__select",part:"picker","aria-label":"Camera",hidden:!0}),this.#t.addEventListener("change",()=>{this.#w(this.#t.value)}),this.#a=d("select",{class:"slicc-capture__select",part:"audio-picker","aria-label":"Microphone",hidden:!0}),this.#a.addEventListener("change",()=>{this.#k(this.#a.value)}),this.#n=d("button",{type:"button",class:"slicc-capture__mode-btn",part:"mode","aria-pressed":"true","aria-label":"Photo"},b("image",{size:14})),this.#n.addEventListener("click",()=>{this.mode="photo"}),this.#l=d("button",{type:"button",class:"slicc-capture__mode-btn",part:"mode","aria-pressed":"false","aria-label":"Video"},b("video",{size:14})),this.#l.addEventListener("click",()=>{this.#$()});let e=d("div",{class:"slicc-capture__mode",role:"group","aria-label":"Capture mode"},this.#n,this.#l);this.#s=d("span",{class:"slicc-capture__timer",hidden:!0}),this.#o=d("button",{type:"button",class:"slicc-capture__close",part:"cancel","aria-label":"Cancel"},b("x",{size:14})),this.#o.addEventListener("click",()=>this.#z()),this.#i=d("button",{type:"button",class:"slicc-capture__btn slicc-capture__btn--primary",part:"snap","aria-label":"Snap photo"}),this.#i.addEventListener("click",()=>this.#W());let a=d("div",{class:"slicc-capture__bar"},this.#t,this.#a,d("span",{class:"slicc-capture__spacer"}),this.#s,this.#i,e);this.replaceChildren(this.#e,this.#r,a,this.#o),this.#R(this.mode)}async#$(){if(this.mode="video",!this.#d||this.#d.getAudioTracks().length>0)return;let e=this.#v();if(!e)return;let a=this.#d.getVideoTracks()[0]?.getSettings?.().deviceId??this.preferredDevice??null,r=this.#b(this.preferredAudioDevice,"video");try{let s=a?await e.getUserMedia({video:{deviceId:{exact:a}},audio:r}):await e.getUserMedia({video:!0,audio:r});this.#D(),this.#d=s,this.#_(),this.#S(s),await this.#A(e)}catch{this.#r.textContent="Microphone unavailable \u2014 recording video only."}}};g("slicc-composer-capture",Pa);var TA=["off","low","medium","high","xhigh","max"],Al={off:{label:"Secco",gloss:"bone dry \u2014 not a drop (ask any prosecco)",tint:"var(--txt-3)"},low:{label:"Goccia",gloss:"one drop \u2014 bar-speak: \xABmacchiato, solo una goccia\xBB",tint:"color-mix(in srgb, var(--violet) 20%, var(--txt-3))"},medium:{label:"Bagnato",gloss:"properly wet",tint:"color-mix(in srgb, var(--violet) 40%, var(--txt-3))"},high:{label:"Affogato",gloss:"drowned \u2014 the menu item itself",tint:"color-mix(in srgb, var(--violet) 60%, var(--txt-3))"},xhigh:{label:"Inzuppato",gloss:"soaked through, biscotto-style",tint:"color-mix(in srgb, var(--violet) 80%, var(--txt-3))"},max:{label:"Sprofondato",gloss:"sunk to the bottom",tint:"var(--violet)"}},El="max",RP="Opus 4.8",HA=[{name:"Opus 4.8",provider:"Anthropic",id:"claude-opus-4-8"},{name:"Sonnet 4.6",provider:"Anthropic",id:"claude-sonnet-4-6"},{name:"Haiku 4.5",provider:"Anthropic",id:"claude-haiku-4-5"}],BP=8;function zP(t){let e=typeof t=="string"?{name:t}:t;return{...e,name:e.name,id:e.id??e.name}}var OP="max",RA=13;function PA(){return b("sparkles",{size:RA,class:"ic",part:"model-icon"})}function FP(){return b("brain",{size:RA,class:"brain",part:"brain"})}function DA(){return b("chevron-down",{size:11,part:"caret"})}var Da="http://www.w3.org/2000/svg";function VP(){let t=document.createElementNS(Da,"svg");t.setAttribute("width","0"),t.setAttribute("height","0"),t.setAttribute("aria-hidden","true"),t.setAttribute("style","position:absolute");let e=document.createElementNS(Da,"defs"),a=document.createElementNS(Da,"linearGradient");a.setAttribute("id","meta-rainbow"),a.setAttribute("x1","0"),a.setAttribute("y1","0"),a.setAttribute("x2","1"),a.setAttribute("y2","0");let r=[["0%","#f43f5e"],["28%","#f59e0b"],["64%","#06b6d4"],["100%","#8b5cf6"]];for(let[s,i]of r){let o=document.createElementNS(Da,"stop");o.setAttribute("offset",s),o.setAttribute("stop-color",i),a.appendChild(o)}return e.appendChild(a),t.appendChild(e),t}var IP=`
1514
+ `,EA="slicc-composer-capture-style";function TP(t){if(t.getElementById(EA))return;let e=t.createElement("style");e.id=EA,e.textContent=LP,(t.head??t.documentElement).appendChild(e)}var HP="photo",PP=["video/webm;codecs=vp9,opus","video/webm;codecs=vp8,opus","video/webm"];function DP(){if(typeof MediaRecorder>"u")return"video/webm";for(let t of PP)if(MediaRecorder.isTypeSupported?.(t))return t;return"video/webm"}function LA(t){let e=Math.max(0,Math.floor(t/1e3)),a=Math.floor(e/60),r=e%60;return`${a}:${String(r).padStart(2,"0")}`}var Pa=class extends HTMLElement{static observedAttributes=["mode","preferred-device","preferred-audio-device"];media=null;recorderFactory=null;#e;#t;#a;#r;#s;#i;#o;#n;#l;#h=!1;#d=null;#c=null;#u=null;#p=[];#m=0;#x=null;#f=null;#g=e=>{e.key==="Escape"&&this.#f&&this.#R()};connectedCallback(){TP(this.ownerDocument),this.#q(),this.ownerDocument.addEventListener("keydown",this.#g)}disconnectedCallback(){if(this.ownerDocument.removeEventListener("keydown",this.#g),this.#L(),this.#P(),this.#H(),this.#f){let e=this.#f;this.#f=null,e(null)}}attributeChangedCallback(e,a,r){e==="mode"&&this.#h&&this.#V(r??HP)}get mode(){return this.getAttribute("mode")==="video"?"video":"photo"}set mode(e){e==null?this.removeAttribute("mode"):this.setAttribute("mode",e)}get preferredDevice(){return this.getAttribute("preferred-device")}set preferredDevice(e){e==null?this.removeAttribute("preferred-device"):this.setAttribute("preferred-device",e)}get preferredAudioDevice(){return this.getAttribute("preferred-audio-device")}set preferredAudioDevice(e){e==null?this.removeAttribute("preferred-audio-device"):this.setAttribute("preferred-audio-device",e)}#v(){return this.media??(typeof navigator<"u"?navigator.mediaDevices:null)??null}#M(e,a){return this.recorderFactory?this.recorderFactory(e,a):new MediaRecorder(e,a)}async open(e){this.#q(),e&&(this.mode=e),this.#V(this.mode);let a=this.#v();if(!a)return null;try{this.#d=await this.#_(a,this.preferredDevice,this.preferredAudioDevice,this.mode)}catch{return null}return this.#y(),this.#w(this.#d),await this.#S(a),await this.#A(a),this.hidden=!1,new Promise(r=>{this.#f=r})}async#_(e,a,r,s){let i=this.#b(r,s);if(a)try{return await e.getUserMedia({video:{deviceId:{exact:a}},audio:i})}catch{}try{return await e.getUserMedia({video:!0,audio:i})}catch(o){if(i===!1)throw o;return this.#r.textContent="Microphone unavailable \u2014 recording video only.",e.getUserMedia({video:!0,audio:!1})}}#b(e,a){return a!=="video"?!1:e?{deviceId:{exact:e}}:!0}#y(){this.#c=this.#d?.getAudioTracks()[0]??null}#w(e){this.#e.srcObject=e,this.#e.muted=!0,this.#e.play?.()?.catch(()=>{});let a=e.getVideoTracks()[0]?.getSettings?.().facingMode;this.#e.toggleAttribute("data-mirrored",a!=="environment")}async#S(e){let a=[];try{a=(await e.enumerateDevices()).filter(i=>i.kind==="videoinput")}catch{a=[]}let r=Tt(a,"camera");this.#t.replaceChildren(...r.map(i=>d("option",{value:i.deviceId},i.label)));let s=this.#d?.getVideoTracks()[0]?.getSettings?.().deviceId;s&&(this.#t.value=s),this.#t.toggleAttribute("hidden",!Ta(r))}async#A(e){let a=[];try{a=(await e.enumerateDevices()).filter(i=>i.kind==="audioinput")}catch{a=[]}let r=Tt(a,"microphone");this.#a.replaceChildren(...r.map(i=>d("option",{value:i.deviceId},i.label)));let s=this.#c?.getSettings?.().deviceId??this.preferredAudioDevice??null;s&&r.some(i=>i.deviceId===s)&&(this.#a.value=s),this.#E()}#E(){if(!this.#a)return;let e=this.#a.options.length>=2,a=this.mode==="video"&&e;this.#a.toggleAttribute("hidden",!a)}async#C(e){let a=this.#v();if(a){this.#r.textContent="";try{let r=await a.getUserMedia({video:{deviceId:{exact:e}}});this.#T();let s=r;if(this.mode==="video"&&this.#c&&this.#c.readyState==="live")s.addTrack(this.#c);else if(this.mode==="video")try{let i=await a.getUserMedia({audio:this.#b(this.preferredAudioDevice,"video")});for(let o of i.getAudioTracks())this.#c=o,s.addTrack(o)}catch{this.#r.textContent="Microphone unavailable \u2014 recording video only."}this.#d=s,this.#w(s),this.dispatchEvent(new CustomEvent("slicc-capture-device-change",{detail:{deviceId:e,kind:"camera"},bubbles:!0,composed:!0}))}catch{this.#r.textContent="Could not switch camera \u2014 keeping the current one."}}}async#k(e){let a=this.#v();if(!a||!this.#d)return;this.#r.textContent="";let r;try{r=await a.getUserMedia({audio:{deviceId:{exact:e}}})}catch{this.#r.textContent="Could not switch microphone \u2014 keeping the current one.";return}let s=r.getAudioTracks()[0];if(!s){this.#r.textContent="Could not switch microphone \u2014 keeping the current one.";return}if(this.#c){try{this.#d.removeTrack(this.#c)}catch{}this.#c.stop()}this.#d.addTrack(s),this.#c=s,this.preferredAudioDevice=e,this.dispatchEvent(new CustomEvent("slicc-capture-device-change",{detail:{deviceId:e,kind:"microphone"},bubbles:!0,composed:!0}))}#B(){let e=this.ownerDocument.createElement("canvas");if(e.width=this.#e.videoWidth,e.height=this.#e.videoHeight,e.width===0||e.height===0){this.#r.textContent="No frame yet \u2014 give the camera a moment.";return}e.getContext("2d")?.drawImage(this.#e,0,0);let a="image/png",r=e.toDataURL(a);this.#F({kind:"image",dataUrl:r,mimeType:a,width:e.width,height:e.height})}#z(){if(!this.#d||this.#u)return;this.#p=[];let e=DP(),a;try{a=this.#M(this.#d,{mimeType:e})}catch{this.#r.textContent="Recording is not supported in this browser.";return}a.ondataavailable=r=>{r.data&&r.data.size>0&&this.#p.push(r.data)},a.onstop=()=>this.#O(e);try{a.start()}catch{this.#r.textContent="Could not start recording.";return}this.#u=a,this.#m=Date.now(),this.#a.disabled=!0,this.#t.disabled=!0,this.#s.hidden=!1,this.#s.textContent=LA(0),this.#x=setInterval(()=>{this.#s.textContent=LA(Date.now()-this.#m)},250),this.#U()}#I(){let e=this.#u;if(e)try{e.state!=="inactive"&&e.stop()}catch{this.#O(e.mimeType||"video/webm")}}#O(e){let a=this.#m?Date.now()-this.#m:0;this.#L();let r=this.#u?.mimeType||e||"video/webm",s=new Blob(this.#p,{type:r});this.#p=[],this.#u=null,this.#a&&(this.#a.disabled=!1),this.#t&&(this.#t.disabled=!1);let i=typeof URL<"u"?URL.createObjectURL(s):void 0;this.#F({kind:"video",blob:s,dataUrl:i,mimeType:r,width:this.#e.videoWidth,height:this.#e.videoHeight,durationMs:a})}#L(){this.#x!=null&&(clearInterval(this.#x),this.#x=null),this.#s.hidden=!0,this.#s.textContent="",this.#m=0}#P(){let e=this.#u;if(this.#u=null,this.#p=[],this.#a&&(this.#a.disabled=!1),this.#t&&(this.#t.disabled=!1),e){e.ondataavailable=null,e.onstop=null;try{e.state!=="inactive"&&e.stop()}catch{}}}#T(){for(let e of this.#d?.getVideoTracks()??[])e.stop()}#H(){for(let e of this.#d?.getTracks()??[])e.stop();this.#d=null,this.#c=null,this.#e&&(this.#e.srcObject=null)}#R(){this.dispatchEvent(new CustomEvent("slicc-capture-cancel",{bubbles:!0,composed:!0})),this.#F(null)}#F(e){e&&this.dispatchEvent(new CustomEvent("slicc-capture",{detail:e,bubbles:!0,composed:!0})),this.#L(),this.#P(),this.#H();let a=this.#f;this.#f=null,this.hidden=!0,a?.(e)}#V(e){let a=e==="video";this.#n.setAttribute("aria-pressed",String(!a)),this.#l.setAttribute("aria-pressed",String(a)),this.#r.textContent=a?"Mic on \u2014 video will record audio.":"",this.#U(),this.#E()}#U(){let e=this.#i;if(e.replaceChildren(),this.mode==="photo"){e.className="slicc-capture__btn slicc-capture__btn--primary",e.setAttribute("part","snap"),e.setAttribute("aria-label","Snap photo"),e.append(b("camera",{size:14}),document.createTextNode(" Snap"));return}this.#u?(e.className="slicc-capture__btn slicc-capture__btn--rec",e.setAttribute("part","stop"),e.setAttribute("aria-label","Stop recording"),e.append(d("span",{class:"slicc-capture__square"}),document.createTextNode(" Stop"))):(e.className="slicc-capture__btn slicc-capture__btn--rec",e.setAttribute("part","record"),e.setAttribute("aria-label","Start recording"),e.append(d("span",{class:"slicc-capture__dot"}),document.createTextNode(" Record")))}#W(){if(this.mode==="photo"){this.#B();return}this.#u?this.#I():this.#z()}#q(){if(this.#h)return;this.#h=!0,this.#e=d("video",{class:"slicc-capture__video",part:"video",autoplay:!0,muted:!0,playsinline:!0}),this.#e.muted=!0,this.#r=d("div",{class:"slicc-capture__status"}),this.#t=d("select",{class:"slicc-capture__select",part:"picker","aria-label":"Camera",hidden:!0}),this.#t.addEventListener("change",()=>{this.#C(this.#t.value)}),this.#a=d("select",{class:"slicc-capture__select",part:"audio-picker","aria-label":"Microphone",hidden:!0}),this.#a.addEventListener("change",()=>{this.#k(this.#a.value)}),this.#n=d("button",{type:"button",class:"slicc-capture__mode-btn",part:"mode","aria-pressed":"true","aria-label":"Photo"},b("image",{size:14})),this.#n.addEventListener("click",()=>{this.mode="photo"}),this.#l=d("button",{type:"button",class:"slicc-capture__mode-btn",part:"mode","aria-pressed":"false","aria-label":"Video"},b("video",{size:14})),this.#l.addEventListener("click",()=>{this.#$()});let e=d("div",{class:"slicc-capture__mode",role:"group","aria-label":"Capture mode"},this.#n,this.#l);this.#s=d("span",{class:"slicc-capture__timer",hidden:!0}),this.#o=d("button",{type:"button",class:"slicc-capture__close",part:"cancel","aria-label":"Cancel"},b("x",{size:14})),this.#o.addEventListener("click",()=>this.#R()),this.#i=d("button",{type:"button",class:"slicc-capture__btn slicc-capture__btn--primary",part:"snap","aria-label":"Snap photo"}),this.#i.addEventListener("click",()=>this.#W());let a=d("div",{class:"slicc-capture__bar"},this.#t,this.#a,d("span",{class:"slicc-capture__spacer"}),this.#s,this.#i,e);this.replaceChildren(this.#e,this.#r,a,this.#o),this.#V(this.mode)}async#$(){if(this.mode="video",!this.#d||this.#d.getAudioTracks().length>0)return;let e=this.#v();if(!e)return;let a=this.#d.getVideoTracks()[0]?.getSettings?.().deviceId??this.preferredDevice??null,r=this.#b(this.preferredAudioDevice,"video");try{let s=a?await e.getUserMedia({video:{deviceId:{exact:a}},audio:r}):await e.getUserMedia({video:!0,audio:r});this.#H(),this.#d=s,this.#y(),this.#w(s),await this.#A(e)}catch{this.#r.textContent="Microphone unavailable \u2014 recording video only."}}};g("slicc-composer-capture",Pa);var TA=["off","low","medium","high","xhigh","max"],Al={off:{label:"Secco",gloss:"bone dry \u2014 not a drop (ask any prosecco)",tint:"var(--txt-3)"},low:{label:"Goccia",gloss:"one drop \u2014 bar-speak: \xABmacchiato, solo una goccia\xBB",tint:"color-mix(in srgb, var(--violet) 20%, var(--txt-3))"},medium:{label:"Bagnato",gloss:"properly wet",tint:"color-mix(in srgb, var(--violet) 40%, var(--txt-3))"},high:{label:"Affogato",gloss:"drowned \u2014 the menu item itself",tint:"color-mix(in srgb, var(--violet) 60%, var(--txt-3))"},xhigh:{label:"Inzuppato",gloss:"soaked through, biscotto-style",tint:"color-mix(in srgb, var(--violet) 80%, var(--txt-3))"},max:{label:"Sprofondato",gloss:"sunk to the bottom",tint:"var(--violet)"}},El="max",RP="Opus 4.8",HA=[{name:"Opus 4.8",provider:"Anthropic",id:"claude-opus-4-8"},{name:"Sonnet 4.6",provider:"Anthropic",id:"claude-sonnet-4-6"},{name:"Haiku 4.5",provider:"Anthropic",id:"claude-haiku-4-5"}],BP=8;function zP(t){let e=typeof t=="string"?{name:t}:t;return{...e,name:e.name,id:e.id??e.name}}var OP="max",RA=13;function PA(){return b("sparkles",{size:RA,class:"ic",part:"model-icon"})}function FP(){return b("brain",{size:RA,class:"brain",part:"brain"})}function DA(){return b("chevron-down",{size:11,part:"caret"})}var Da="http://www.w3.org/2000/svg";function VP(){let t=document.createElementNS(Da,"svg");t.setAttribute("width","0"),t.setAttribute("height","0"),t.setAttribute("aria-hidden","true"),t.setAttribute("style","position:absolute");let e=document.createElementNS(Da,"defs"),a=document.createElementNS(Da,"linearGradient");a.setAttribute("id","meta-rainbow"),a.setAttribute("x1","0"),a.setAttribute("y1","0"),a.setAttribute("x2","1"),a.setAttribute("y2","0");let r=[["0%","#f43f5e"],["28%","#f59e0b"],["64%","#06b6d4"],["100%","#8b5cf6"]];for(let[s,i]of r){let o=document.createElementNS(Da,"stop");o.setAttribute("offset",s),o.setAttribute("stop-color",i),a.appendChild(o)}return e.appendChild(a),t.appendChild(e),t}var IP=`
1515
1515
  :host{display:block;}
1516
1516
  *{box-sizing:border-box;}
1517
1517
  .meta{display:flex;align-items:center;gap:8px;max-width:680px;margin:11px auto 0;font-family:var(--ui);}
@@ -1568,7 +1568,7 @@ slicc-composer-capture .slicc-capture__timer[hidden] {
1568
1568
  /* Narrow / extension-sidebar: the \u23CE / \u21E7\u23CE keyboard hints don't fit (and touch
1569
1569
  users have no keyboard) \u2014 drop them regardless of the narrow-chat attribute. */
1570
1570
  @media (max-width: 560px){ .hint{display:none;} }
1571
- `,NP=C(IP),Ra=class extends HTMLElement{static observedAttributes=["model","thinking","narrow","no-thinking"];#e;#t=null;#a=null;#r=null;#s=null;#i=null;#o=null;#n=null;#l=null;#h=!1;#d=!1;#c="";#u=e=>{let a=e.composedPath();this.#h&&!a.includes(this)&&this.#_(),this.#d&&!a.includes(this)&&this.#w()};#p=e=>{e.key==="Escape"&&(this.#h&&(e.stopPropagation(),this.#_(),this.#r?.focus()),this.#d&&(e.stopPropagation(),this.#w(),this.#s?.focus()))};constructor(){super(),this.#e=this.attachShadow({mode:"open"}),this.#e.adoptedStyleSheets=[NP]}connectedCallback(){this.#f()}disconnectedCallback(){this.#M(),document.removeEventListener("mousedown",this.#u),document.removeEventListener("keydown",this.#p,!0)}attributeChangedCallback(){this.isConnected&&this.#f()}get model(){return this.getAttribute("model")??RP}set model(e){e==null?this.removeAttribute("model"):this.setAttribute("model",e)}get models(){return(this.#l??[...HA]).map(e=>typeof e=="string"?e:{...e})}set models(e){this.#l=Array.isArray(e)?e.slice():null,this.isConnected&&this.#f()}get#m(){return(this.#l??HA).map(zP)}get#x(){return this.#l!==null&&this.#l.length===0}get thinking(){let e=this.getAttribute("thinking");return TA.includes(e??"")?e:OP}set thinking(e){this.setAttribute("thinking",e)}get narrow(){return this.hasAttribute("narrow")}set narrow(e){this.toggleAttribute("narrow",e)}get noThinking(){return this.hasAttribute("no-thinking")}set noThinking(e){this.toggleAttribute("no-thinking",e)}get accented(){return this.thinking===El}#f(){this.#M();let e=this.model,a=this.thinking,r=Al[a],s=a===El,i=this.#x,o=i?d("button",{type:"button",class:"ctl msel",part:"model"},PA()," ","Add AI"):d("button",{type:"button",class:"ctl msel",part:"model","aria-haspopup":"menu","aria-expanded":"false"},PA()," ",e," ",d("span",{class:"cx"},DA())),n=d("div",{class:"menu",part:"model-menu",role:"menu"});if(this.#m.length>BP){let m=d("input",{class:"msearch",part:"model-search",type:"text",placeholder:"Search models\u2026","aria-label":"Search models"});m.value=this.#c,m.addEventListener("input",()=>{this.#c=m.value,this.#g()}),m.addEventListener("click",f=>f.stopPropagation()),n.append(m)}this.#n=d("div",{class:"mlist",role:"none"}),n.append(this.#n);let h=d("div",{class:"mwrap"},o,n),l=!this.noThinking&&!i,p=null;if(l){let m=FP();m.style.color=r.tint;let f=d("button",{type:"button",class:`ctl tsel${s?" x":""}`,part:"thinking",title:r.gloss,"aria-haspopup":"menu","aria-expanded":"false"},m," ",d("span",{class:"tlabel"},r.label)," ",d("span",{class:"cx"},DA()));f.style.setProperty("--tw",r.tint);let x=d("div",{class:"menu tmenu",part:"thinking-menu",role:"menu"}),_=d("div",{class:"mlist",role:"none"});for(let T of TA){let D=Al[T],A=d("button",{type:"button",class:"mitem titem",role:"menuitemradio","data-level":T,"aria-selected":T===a?"true":"false",title:D.gloss},d("span",{class:"mname"},D.label),d("span",{class:"tick"},b("check",{size:14})));A.addEventListener("click",()=>this.#T(T)),_.append(A)}x.append(_),p=d("div",{class:"twrap"},f,x)}let c=d("slot",{name:"hint"});xe(c,[d("span",{class:"kbd"},"\u23CE")," send ",d("span",{class:"sep"})," ",d("span",{class:"kbd"},"\u21E7\u23CE")," newline"]);let u=d("div",{class:"meta",part:"meta"},h,p??!1,d("div",{class:"mspacer"}),d("span",{class:"hint",part:"hint"},c));this.#e.replaceChildren(VP(),u),this.#i=h,this.#o=this.#e.querySelector(".twrap"),this.#r=this.#e.querySelector(".msel"),this.#s=this.#e.querySelector(".tsel"),this.#g(),this.#S(),this.#k(),this.#v()}#g(){let e=this.#n;if(!e)return;let a=this.#c.trim().toLowerCase(),r=n=>!a||`${n.name} ${n.provider??""}`.toLowerCase().includes(a),s=this.#m.filter(r),i=this.model,o=[];for(let n of s){let h=n.name===i,l=d("button",{type:"button",class:"mitem",role:"menuitemradio","data-id":n.id,"aria-selected":h?"true":"false"},d("span",{class:"mname"},n.name),n.provider?d("span",{class:"mprov"},n.provider):!1,d("span",{class:"tick"},b("check",{size:14})));l.addEventListener("click",()=>this.#C(n.id)),o.push(l)}e.replaceChildren(...o.length?o:[d("div",{class:"mempty"},"No models match.")])}#v(){this.#r&&(this.#t=e=>{if(e.stopPropagation(),this.#x){this.dispatchEvent(new CustomEvent("add-ai",{bubbles:!0,composed:!0}));return}this.#y()},this.#r.addEventListener("click",this.#t)),this.#s&&(this.#a=()=>this.#A(),this.#s.addEventListener("click",this.#a))}#M(){this.#r&&this.#t&&this.#r.removeEventListener("click",this.#t),this.#s&&this.#a&&this.#s.removeEventListener("click",this.#a),this.#t=null,this.#a=null,this.#r=null,this.#s=null,this.#i=null,this.#o=null,this.#n=null}get menuOpen(){return this.#h}openMenu(){this.#x||this.#b()}#y(){this.#h?this.#_():this.#b()}#b(){if(this.#h)return;this.#w(),this.#h=!0,this.#c="",this.#g(),this.#S();let e=this.#e.querySelector(".msearch");e&&(e.value="",requestAnimationFrame(()=>e.focus())),document.addEventListener("mousedown",this.#u),document.addEventListener("keydown",this.#p,!0)}#_(){this.#h&&(this.#h=!1,this.#S(),this.#d||(document.removeEventListener("mousedown",this.#u),document.removeEventListener("keydown",this.#p,!0)))}#S(){this.#i?.classList.toggle("open",this.#h),this.#r?.setAttribute("aria-expanded",this.#h?"true":"false")}#C(e){let a=this.#m.find(r=>r.id===e)??{name:e,id:e,provider:void 0};this.#_(),a.name!==this.model&&(this.model=a.name),this.dispatchEvent(new CustomEvent("model-change",{detail:{model:a.name,provider:a.provider,id:a.id},bubbles:!0,composed:!0}))}#A(){this.#d?this.#w():this.#E()}#E(){this.#d||(this.#_(),this.#d=!0,this.#k(),document.addEventListener("mousedown",this.#u),document.addEventListener("keydown",this.#p,!0))}#w(){this.#d&&(this.#d=!1,this.#k(),this.#h||(document.removeEventListener("mousedown",this.#u),document.removeEventListener("keydown",this.#p,!0)))}#k(){this.#o?.classList.toggle("open",this.#d),this.#s?.setAttribute("aria-expanded",this.#d?"true":"false")}#T(e){this.#w(),this.thinking=e,this.dispatchEvent(new CustomEvent("thinking-change",{detail:{thinking:e,label:Al[e].label,accented:e===El},bubbles:!0,composed:!0}))}};g("slicc-composer-meta",Ra);async function qP(t){let e=new TextEncoder().encode(t),a=await crypto.subtle.digest("SHA-256",e);return Array.from(new Uint8Array(a)).map(r=>r.toString(16).padStart(2,"0")).join("")}async function BA(t,e={}){let a=(t??"").trim().toLowerCase();if(a==="")return null;let r=await qP(a),s=e.size??80,i=e.fallback??"mp";return`https://www.gravatar.com/avatar/${r}?s=${s}&d=${encodeURIComponent(i)}`}var UP=`
1571
+ `,NP=C(IP),Ra=class extends HTMLElement{static observedAttributes=["model","thinking","narrow","no-thinking"];#e;#t=null;#a=null;#r=null;#s=null;#i=null;#o=null;#n=null;#l=null;#h=!1;#d=!1;#c="";#u=e=>{let a=e.composedPath();this.#h&&!a.includes(this)&&this.#y(),this.#d&&!a.includes(this)&&this.#C()};#p=e=>{e.key==="Escape"&&(this.#h&&(e.stopPropagation(),this.#y(),this.#r?.focus()),this.#d&&(e.stopPropagation(),this.#C(),this.#s?.focus()))};constructor(){super(),this.#e=this.attachShadow({mode:"open"}),this.#e.adoptedStyleSheets=[NP]}connectedCallback(){this.#f()}disconnectedCallback(){this.#M(),document.removeEventListener("mousedown",this.#u),document.removeEventListener("keydown",this.#p,!0)}attributeChangedCallback(){this.isConnected&&this.#f()}get model(){return this.getAttribute("model")??RP}set model(e){e==null?this.removeAttribute("model"):this.setAttribute("model",e)}get models(){return(this.#l??[...HA]).map(e=>typeof e=="string"?e:{...e})}set models(e){this.#l=Array.isArray(e)?e.slice():null,this.isConnected&&this.#f()}get#m(){return(this.#l??HA).map(zP)}get#x(){return this.#l!==null&&this.#l.length===0}get thinking(){let e=this.getAttribute("thinking");return TA.includes(e??"")?e:OP}set thinking(e){this.setAttribute("thinking",e)}get narrow(){return this.hasAttribute("narrow")}set narrow(e){this.toggleAttribute("narrow",e)}get noThinking(){return this.hasAttribute("no-thinking")}set noThinking(e){this.toggleAttribute("no-thinking",e)}get accented(){return this.thinking===El}#f(){this.#M();let e=this.model,a=this.thinking,r=Al[a],s=a===El,i=this.#x,o=i?d("button",{type:"button",class:"ctl msel",part:"model"},PA()," ","Add AI"):d("button",{type:"button",class:"ctl msel",part:"model","aria-haspopup":"menu","aria-expanded":"false"},PA()," ",e," ",d("span",{class:"cx"},DA())),n=d("div",{class:"menu",part:"model-menu",role:"menu"});if(this.#m.length>BP){let m=d("input",{class:"msearch",part:"model-search",type:"text",placeholder:"Search models\u2026","aria-label":"Search models"});m.value=this.#c,m.addEventListener("input",()=>{this.#c=m.value,this.#g()}),m.addEventListener("click",f=>f.stopPropagation()),n.append(m)}this.#n=d("div",{class:"mlist",role:"none"}),n.append(this.#n);let h=d("div",{class:"mwrap"},o,n),l=!this.noThinking&&!i,p=null;if(l){let m=FP();m.style.color=r.tint;let f=d("button",{type:"button",class:`ctl tsel${s?" x":""}`,part:"thinking",title:r.gloss,"aria-haspopup":"menu","aria-expanded":"false"},m," ",d("span",{class:"tlabel"},r.label)," ",d("span",{class:"cx"},DA()));f.style.setProperty("--tw",r.tint);let x=d("div",{class:"menu tmenu",part:"thinking-menu",role:"menu"}),_=d("div",{class:"mlist",role:"none"});for(let T of TA){let D=Al[T],A=d("button",{type:"button",class:"mitem titem",role:"menuitemradio","data-level":T,"aria-selected":T===a?"true":"false",title:D.gloss},d("span",{class:"mname"},D.label),d("span",{class:"tick"},b("check",{size:14})));A.addEventListener("click",()=>this.#B(T)),_.append(A)}x.append(_),p=d("div",{class:"twrap"},f,x)}let c=d("slot",{name:"hint"});xe(c,[d("span",{class:"kbd"},"\u23CE")," send ",d("span",{class:"sep"})," ",d("span",{class:"kbd"},"\u21E7\u23CE")," newline"]);let u=d("div",{class:"meta",part:"meta"},h,p??!1,d("div",{class:"mspacer"}),d("span",{class:"hint",part:"hint"},c));this.#e.replaceChildren(VP(),u),this.#i=h,this.#o=this.#e.querySelector(".twrap"),this.#r=this.#e.querySelector(".msel"),this.#s=this.#e.querySelector(".tsel"),this.#g(),this.#w(),this.#k(),this.#v()}#g(){let e=this.#n;if(!e)return;let a=this.#c.trim().toLowerCase(),r=n=>!a||`${n.name} ${n.provider??""}`.toLowerCase().includes(a),s=this.#m.filter(r),i=this.model,o=[];for(let n of s){let h=n.name===i,l=d("button",{type:"button",class:"mitem",role:"menuitemradio","data-id":n.id,"aria-selected":h?"true":"false"},d("span",{class:"mname"},n.name),n.provider?d("span",{class:"mprov"},n.provider):!1,d("span",{class:"tick"},b("check",{size:14})));l.addEventListener("click",()=>this.#S(n.id)),o.push(l)}e.replaceChildren(...o.length?o:[d("div",{class:"mempty"},"No models match.")])}#v(){this.#r&&(this.#t=e=>{if(e.stopPropagation(),this.#x){this.dispatchEvent(new CustomEvent("add-ai",{bubbles:!0,composed:!0}));return}this.#_()},this.#r.addEventListener("click",this.#t)),this.#s&&(this.#a=()=>this.#A(),this.#s.addEventListener("click",this.#a))}#M(){this.#r&&this.#t&&this.#r.removeEventListener("click",this.#t),this.#s&&this.#a&&this.#s.removeEventListener("click",this.#a),this.#t=null,this.#a=null,this.#r=null,this.#s=null,this.#i=null,this.#o=null,this.#n=null}get menuOpen(){return this.#h}openMenu(){this.#x||this.#b()}#_(){this.#h?this.#y():this.#b()}#b(){if(this.#h)return;this.#C(),this.#h=!0,this.#c="",this.#g(),this.#w();let e=this.#e.querySelector(".msearch");e&&(e.value="",requestAnimationFrame(()=>e.focus())),document.addEventListener("mousedown",this.#u),document.addEventListener("keydown",this.#p,!0)}#y(){this.#h&&(this.#h=!1,this.#w(),this.#d||(document.removeEventListener("mousedown",this.#u),document.removeEventListener("keydown",this.#p,!0)))}#w(){this.#i?.classList.toggle("open",this.#h),this.#r?.setAttribute("aria-expanded",this.#h?"true":"false")}#S(e){let a=this.#m.find(r=>r.id===e)??{name:e,id:e,provider:void 0};this.#y(),a.name!==this.model&&(this.model=a.name),this.dispatchEvent(new CustomEvent("model-change",{detail:{model:a.name,provider:a.provider,id:a.id},bubbles:!0,composed:!0}))}#A(){this.#d?this.#C():this.#E()}#E(){this.#d||(this.#y(),this.#d=!0,this.#k(),document.addEventListener("mousedown",this.#u),document.addEventListener("keydown",this.#p,!0))}#C(){this.#d&&(this.#d=!1,this.#k(),this.#h||(document.removeEventListener("mousedown",this.#u),document.removeEventListener("keydown",this.#p,!0)))}#k(){this.#o?.classList.toggle("open",this.#d),this.#s?.setAttribute("aria-expanded",this.#d?"true":"false")}#B(e){this.#C(),this.thinking=e,this.dispatchEvent(new CustomEvent("thinking-change",{detail:{thinking:e,label:Al[e].label,accented:e===El},bubbles:!0,composed:!0}))}};g("slicc-composer-meta",Ra);async function qP(t){let e=new TextEncoder().encode(t),a=await crypto.subtle.digest("SHA-256",e);return Array.from(new Uint8Array(a)).map(r=>r.toString(16).padStart(2,"0")).join("")}async function BA(t,e={}){let a=(t??"").trim().toLowerCase();if(a==="")return null;let r=await qP(a),s=e.size??80,i=e.fallback??"mp";return`https://www.gravatar.com/avatar/${r}?s=${s}&d=${encodeURIComponent(i)}`}var UP=`
1572
1572
  :host { display: inline-flex; }
1573
1573
  :host([hidden]) { display: none; }
1574
1574
 
@@ -2508,7 +2508,7 @@ void main(){
2508
2508
  .canvas, .fallback { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
2509
2509
  .fallback { display: none; }
2510
2510
  :host([no-webgl]) .canvas { display: none; }
2511
- :host([no-webgl]) .fallback { display: block; }`,BD=C(RD),zD=2,OD=.35,FD=["u_res","u_scroll","u_time","u_energy","u_center","u_evt","u_freeze","u_dark","u_density","u_falloff","u_life","u_blink","u_thick","u_tint","u_brightness","u_contrast","u_noise","u_blur"];function ot(t,e,a,r){return Number.isFinite(t)?Math.max(e,Math.min(a,t)):r}function Hl(t,e){if(!t||typeof getComputedStyle!="function")return e;let a=document.createElement("span");a.style.color=t,a.style.display="none",document.body.appendChild(a);let r=getComputedStyle(a).color;a.remove();let s=r.match(/[\d.]+/g)?.map(Number);return!s||s.length<3?e:[s[0]/255,s[1]/255,s[2]/255]}var vt=class extends HTMLElement{static observedAttributes=["mode","tint","coverage","intensity","scroll","brightness","contrast","noise","blur"];#e;#t=null;#a=null;#r=null;#s={};#i=null;#o={};#n=-1;#l=0;#h=0;#d=0;#c=null;#u=!1;#p=null;#m=null;#x=null;constructor(){super(),this.#e=this.attachShadow({mode:"open"}),this.#e.adoptedStyleSheets=[BD];let e=d("canvas",{class:"canvas",part:"canvas"}),a=d("div",{class:"fallback",part:"fallback","aria-hidden":"true"});this.#e.replaceChildren(e,a),this.#t=e}connectedCallback(){if(this.#u=typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches,this.#f(),!this.#b()){this.setAttribute("no-webgl","");return}this.removeAttribute("no-webgl"),typeof ResizeObserver<"u"&&(this.#c=new ResizeObserver(()=>this.#g()),this.#c.observe(this)),this.#h=performance.now()/1e3,this.#u?this.#w():this.#k()}disconnectedCallback(){this.#T(),this.#c?.disconnect(),this.#c=null,this.#B()}attributeChangedCallback(e){if(this.isConnected){if(e==="mode"&&this.#a&&this.mode!==this.#p&&this.#y()){this.#w(),this.#f();return}this.#f(),this.#g()}}get mode(){let e=this.getAttribute("mode");return e&&PD.has(e)?e:"cone"}set mode(e){this.setAttribute("mode",e)}get coverage(){return ot(Number.parseFloat(this.getAttribute("coverage")??""),0,1,.66)}set coverage(e){this.setAttribute("coverage",String(e))}get intensity(){return ot(Number.parseFloat(this.getAttribute("intensity")??""),0,4,1)}set intensity(e){this.setAttribute("intensity",String(e))}get scrollOffset(){let e=Number.parseFloat(this.getAttribute("scroll")??"");return Number.isFinite(e)?e:0}set scrollOffset(e){this.setAttribute("scroll",String(e))}get brightness(){return ot(Number.parseFloat(this.getAttribute("brightness")??""),.5,1.5,1.2)}set brightness(e){this.setAttribute("brightness",String(e))}get contrast(){return ot(Number.parseFloat(this.getAttribute("contrast")??""),.5,2,.75)}set contrast(e){this.setAttribute("contrast",String(e))}get noise(){return ot(Number.parseFloat(this.getAttribute("noise")??""),0,.3,.04)}set noise(e){this.setAttribute("noise",String(e))}get blurAmount(){return ot(Number.parseFloat(this.getAttribute("blur")??""),0,1,.09)}set blurAmount(e){this.setAttribute("blur",String(e))}get noWebgl(){return this.hasAttribute("no-webgl")}pulse(e=1){this.#d=Math.min(1.4,this.#d+e),this.#u&&this.#w()}#f(){let e=this.#e.querySelector(".fallback");e&&(e.style.background=DD[this.mode])}#g(){this.#u&&this.#a&&this.#w()}#v(e,a,r){let s=e.createShader(a);return s?(e.shaderSource(s,r),e.compileShader(s),e.getShaderParameter(s,e.COMPILE_STATUS)?s:(e.deleteShader(s),null)):null}#M(e){let a=this.#a;if(!a)return null;let r=this.#v(a,a.VERTEX_SHADER,AD),s=this.#v(a,a.FRAGMENT_SHADER,HD[e]);if(!r||!s)return r&&a.deleteShader(r),s&&a.deleteShader(s),null;let i=a.createProgram();if(!i)return a.deleteShader(r),a.deleteShader(s),null;if(a.attachShader(i,r),a.attachShader(i,s),a.linkProgram(i),!a.getProgramParameter(i,a.LINK_STATUS))return a.deleteProgram(i),a.deleteShader(r),a.deleteShader(s),null;let o=a.getAttribLocation(i,"a_pos"),n={};for(let h of FD)n[h]=a.getUniformLocation(i,h);return{program:i,vs:r,fs:s,aPos:o,loc:n}}#y(){let e=this.#a;if(!e)return!1;let a=this.mode,r=this.#s[a];if(!r){let s=this.#M(a);if(!s)return!1;this.#s[a]=s,r=s}return this.#r=r.program,this.#n=r.aPos,this.#o=r.loc,e.useProgram(r.program),this.#p=a,!0}#b(){let e=this.#t;if(!e)return!1;let a={premultipliedAlpha:!0,alpha:!0,antialias:!0},r=null;try{r=e.getContext("webgl",a)??e.getContext("experimental-webgl",a)}catch{r=null}return r?(this.#a=r,this.#S(e),this.#_()):!1}#_(){let e=this.#a;if(!e)return!1;if(!this.#y())return this.#a=null,!1;let a=e.createBuffer();return a?(this.#i=a,e.bindBuffer(e.ARRAY_BUFFER,a),e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,3,-1,-1,3]),e.STATIC_DRAW),!0):(this.#a=null,!1)}#S(e){this.#C(e),this.#m=a=>{a.preventDefault(),this.#T(),this.#s={},this.#r=null,this.#p=null,this.#o={},this.#i=null},this.#x=()=>{!this.isConnected||!this.#a||(this.#s={},this.#_()&&(this.#h=performance.now()/1e3,this.#u?this.#w():this.#k()))},e.addEventListener("webglcontextlost",this.#m,!1),e.addEventListener("webglcontextrestored",this.#x,!1)}#C(e){this.#m&&e.removeEventListener("webglcontextlost",this.#m),this.#x&&e.removeEventListener("webglcontextrestored",this.#x),this.#m=null,this.#x=null}#A(){let e=this.#t;if(!e)return;let a=Math.min(zD,typeof window<"u"&&window.devicePixelRatio||1),r=Math.max(1,e.clientWidth*a|0),s=Math.max(1,e.clientHeight*a|0);(e.width!==r||e.height!==s)&&(e.width=r,e.height=s)}#E(){if(typeof getComputedStyle!="function")return 0;let e=getComputedStyle(this).getPropertyValue("--ink").trim();if(!e)return 0;let[a,r,s]=Hl(e,[0,0,0]);return .2126*a+.7152*r+.0722*s>.5?1:0}#w(){let e=this.#a,a=this.#t,r=this.#r;if(!e||!a||!r||!this.#i)return;this.#A();let s=performance.now()/1e3-this.#h,i=.5+.5*Math.sin(s*.12),o=.5+.5*Math.sin(s*.097+1),n=.2*(1-i)+.46*i,h=.74*(1-o)+.3*o,l=this.#E(),p=Hl(this.getAttribute("tint")??"",[.545,.361,.965]),c=Hl(this.getAttribute("tint")??"",[.957,.247,.369]);e.viewport(0,0,a.width,a.height),e.useProgram(r),e.bindBuffer(e.ARRAY_BUFFER,this.#i),e.enableVertexAttribArray(this.#n),e.vertexAttribPointer(this.#n,2,e.FLOAT,!1,0,0);let u=this.#o;e.uniform2f(u.u_res??null,a.width,a.height),e.uniform1f(u.u_time??null,s),e.uniform1f(u.u_energy??null,this.#d),e.uniform2f(u.u_center??null,n,h),e.uniform3f(u.u_evt??null,c[0],c[1],c[2]),e.uniform1f(u.u_freeze??null,ot(this.coverage*this.intensity,0,1,.66)*2.2),e.uniform1f(u.u_dark??null,l),e.uniform1f(u.u_scroll??null,this.scrollOffset*OD/Math.max(1,a.clientHeight||a.height)),e.uniform1f(u.u_density??null,.29),e.uniform1f(u.u_falloff??null,.3),e.uniform1f(u.u_life??null,.35),e.uniform1f(u.u_blink??null,.05),e.uniform1f(u.u_thick??null,.02),e.uniform3f(u.u_tint??null,p[0],p[1],p[2]),e.uniform1f(u.u_brightness??null,this.brightness),e.uniform1f(u.u_contrast??null,this.contrast),e.uniform1f(u.u_noise??null,this.noise),e.uniform1f(u.u_blur??null,this.blurAmount),e.drawArrays(e.TRIANGLES,0,3),this.#d*=.95,this.#d<.001&&(this.#d=0)}#k(){if(this.#l)return;let e=()=>{this.#w(),this.#l=requestAnimationFrame(e)};this.#l=requestAnimationFrame(e)}#T(){this.#l&&cancelAnimationFrame(this.#l),this.#l=0}#B(){let e=this.#a,a=this.#t;if(a&&this.#C(a),e){this.#i&&e.deleteBuffer(this.#i);for(let r of Object.values(this.#s))r&&(e.deleteProgram(r.program),e.deleteShader(r.vs),e.deleteShader(r.fs));e.getExtension("WEBGL_lose_context")?.loseContext()}this.#a=null,this.#r=null,this.#s={},this.#o={},this.#i=null,this.#p=null}};g("slicc-shader",vt);var Ka=class extends vt{connectedCallback(){this.getAttribute("mode")!=="freezer"&&this.setAttribute("mode","freezer"),super.connectedCallback()}};g("slicc-frost-shader",Ka);var KA=["top-left","top-right","bottom-left","bottom-right","top","right","bottom","left"],Za="top-right";var Rl="slicc-launcher-corner",ZA=["disconnected","connected","error"],YA="disconnected",Me="follower-status",VD=new Set(KA),ID=new Set(ZA);function nt(t,e=Za){return t&&VD.has(t)?t:e}function Pt(t,e=YA){return t&&ID.has(t)?t:e}function Ya(t,e){return t>=6||t>=12&&e>=.6}function Bl({clientX:t,clientY:e,viewportWidth:a,viewportHeight:r,velocityXPxPerMs:s=0,velocityYPxPerMs:i=0,flickProjectionMs:o=180}){let n=GA(t+s*o,0,a),h=GA(e+i*o,0,r),l=n/a,p=h/r,c=l>1/3&&l<2/3,u=p>1/3&&p<2/3;if(c&&u){let x=p,_=1-p,T=l,D=1-l,H=Math.min(x,_,T,D);return H===x?"top":H===_?"bottom":H===T?"left":"right"}if(c)return p<.5?"top":"bottom";if(u)return l<.5?"left":"right";let m=l<.5?"left":"right";return`${p<.5?"top":"bottom"}-${m}`}function GA(t,e,a){return Math.min(Math.max(t,e),a)}var XA=`<?xml version="1.0" encoding="UTF-8"?>
2511
+ :host([no-webgl]) .fallback { display: block; }`,BD=C(RD),zD=2,OD=.35,FD=["u_res","u_scroll","u_time","u_energy","u_center","u_evt","u_freeze","u_dark","u_density","u_falloff","u_life","u_blink","u_thick","u_tint","u_brightness","u_contrast","u_noise","u_blur"];function ot(t,e,a,r){return Number.isFinite(t)?Math.max(e,Math.min(a,t)):r}function Hl(t,e){if(!t||typeof getComputedStyle!="function")return e;let a=document.createElement("span");a.style.color=t,a.style.display="none",document.body.appendChild(a);let r=getComputedStyle(a).color;a.remove();let s=r.match(/[\d.]+/g)?.map(Number);return!s||s.length<3?e:[s[0]/255,s[1]/255,s[2]/255]}var vt=class extends HTMLElement{static observedAttributes=["mode","tint","coverage","intensity","scroll","brightness","contrast","noise","blur"];#e;#t=null;#a=null;#r=null;#s={};#i=null;#o={};#n=-1;#l=0;#h=0;#d=0;#c=null;#u=!1;#p=[.545,.361,.965];#m=[.957,.247,.369];#x=0;#f=null;#g=null;#v=null;#M=null;#_=null;#b=null;constructor(){super(),this.#e=this.attachShadow({mode:"open"}),this.#e.adoptedStyleSheets=[BD];let e=d("canvas",{class:"canvas",part:"canvas"}),a=d("div",{class:"fallback",part:"fallback","aria-hidden":"true"});this.#e.replaceChildren(e,a),this.#t=e}connectedCallback(){if(this.#u=typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches,this.#y(),!this.#B()){this.setAttribute("no-webgl","");return}this.removeAttribute("no-webgl"),typeof ResizeObserver<"u"&&(this.#c=new ResizeObserver(()=>this.#w()),this.#c.observe(this)),this.#S(),this.#A(),this.#h=performance.now()/1e3,this.#u?this.#T():this.#H()}disconnectedCallback(){this.#R(),this.#c?.disconnect(),this.#c=null,this.#f?.disconnect(),this.#f=null,this.#g&&this.#v&&this.#g.removeEventListener("change",this.#v),this.#g=null,this.#v=null,this.#F()}attributeChangedCallback(e){if(this.isConnected){if(e==="tint"&&this.#S(),e==="mode"&&this.#a&&this.mode!==this.#M&&this.#k()){this.#T(),this.#y();return}this.#y(),this.#w()}}get mode(){let e=this.getAttribute("mode");return e&&PD.has(e)?e:"cone"}set mode(e){this.setAttribute("mode",e)}get coverage(){return ot(Number.parseFloat(this.getAttribute("coverage")??""),0,1,.66)}set coverage(e){this.setAttribute("coverage",String(e))}get intensity(){return ot(Number.parseFloat(this.getAttribute("intensity")??""),0,4,1)}set intensity(e){this.setAttribute("intensity",String(e))}get scrollOffset(){let e=Number.parseFloat(this.getAttribute("scroll")??"");return Number.isFinite(e)?e:0}set scrollOffset(e){this.setAttribute("scroll",String(e))}get brightness(){return ot(Number.parseFloat(this.getAttribute("brightness")??""),.5,1.5,1.2)}set brightness(e){this.setAttribute("brightness",String(e))}get contrast(){return ot(Number.parseFloat(this.getAttribute("contrast")??""),.5,2,.75)}set contrast(e){this.setAttribute("contrast",String(e))}get noise(){return ot(Number.parseFloat(this.getAttribute("noise")??""),0,.3,.04)}set noise(e){this.setAttribute("noise",String(e))}get blurAmount(){return ot(Number.parseFloat(this.getAttribute("blur")??""),0,1,.09)}set blurAmount(e){this.setAttribute("blur",String(e))}get noWebgl(){return this.hasAttribute("no-webgl")}pulse(e=1){this.#d=Math.min(1.4,this.#d+e),this.#u&&this.#T()}#y(){let e=this.#e.querySelector(".fallback");e&&(e.style.background=DD[this.mode])}#w(){this.#u&&this.#a&&this.#T()}#S(){let e=this.getAttribute("tint")??"";this.#p=Hl(e,[.545,.361,.965]),this.#m=Hl(e,[.957,.247,.369]),this.#x=this.#P()}#A(){let e=()=>{this.#S(),this.#w()};if(typeof MutationObserver<"u"){this.#f=new MutationObserver(e);for(let a of[document.documentElement,document.body])a&&this.#f.observe(a,{attributes:!0,attributeFilter:["class","data-theme"]})}typeof matchMedia=="function"&&(this.#g=matchMedia("(prefers-color-scheme: dark)"),this.#v=e,this.#g.addEventListener("change",this.#v))}#E(e,a,r){let s=e.createShader(a);return s?(e.shaderSource(s,r),e.compileShader(s),e.getShaderParameter(s,e.COMPILE_STATUS)?s:(e.deleteShader(s),null)):null}#C(e){let a=this.#a;if(!a)return null;let r=this.#E(a,a.VERTEX_SHADER,AD),s=this.#E(a,a.FRAGMENT_SHADER,HD[e]);if(!r||!s)return r&&a.deleteShader(r),s&&a.deleteShader(s),null;let i=a.createProgram();if(!i)return a.deleteShader(r),a.deleteShader(s),null;if(a.attachShader(i,r),a.attachShader(i,s),a.linkProgram(i),!a.getProgramParameter(i,a.LINK_STATUS))return a.deleteProgram(i),a.deleteShader(r),a.deleteShader(s),null;let o=a.getAttribLocation(i,"a_pos"),n={};for(let h of FD)n[h]=a.getUniformLocation(i,h);return{program:i,vs:r,fs:s,aPos:o,loc:n}}#k(){let e=this.#a;if(!e)return!1;let a=this.mode,r=this.#s[a];if(!r){let s=this.#C(a);if(!s)return!1;this.#s[a]=s,r=s}return this.#r=r.program,this.#n=r.aPos,this.#o=r.loc,e.useProgram(r.program),this.#M=a,!0}#B(){let e=this.#t;if(!e)return!1;let a={premultipliedAlpha:!0,alpha:!0,antialias:!0},r=null;try{r=e.getContext("webgl",a)??e.getContext("experimental-webgl",a)}catch{r=null}return r?(this.#a=r,this.#I(e),this.#z()):!1}#z(){let e=this.#a;if(!e)return!1;if(!this.#k())return this.#a=null,!1;let a=e.createBuffer();return a?(this.#i=a,e.bindBuffer(e.ARRAY_BUFFER,a),e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,3,-1,-1,3]),e.STATIC_DRAW),!0):(this.#a=null,!1)}#I(e){this.#O(e),this.#_=a=>{a.preventDefault(),this.#R(),this.#s={},this.#r=null,this.#M=null,this.#o={},this.#i=null},this.#b=()=>{!this.isConnected||!this.#a||(this.#s={},this.#z()&&(this.#h=performance.now()/1e3,this.#u?this.#T():this.#H()))},e.addEventListener("webglcontextlost",this.#_,!1),e.addEventListener("webglcontextrestored",this.#b,!1)}#O(e){this.#_&&e.removeEventListener("webglcontextlost",this.#_),this.#b&&e.removeEventListener("webglcontextrestored",this.#b),this.#_=null,this.#b=null}#L(){let e=this.#t;if(!e)return;let a=Math.min(zD,typeof window<"u"&&window.devicePixelRatio||1),r=Math.max(1,e.clientWidth*a|0),s=Math.max(1,e.clientHeight*a|0);(e.width!==r||e.height!==s)&&(e.width=r,e.height=s)}#P(){if(typeof getComputedStyle!="function")return 0;let e=getComputedStyle(this).getPropertyValue("--ink").trim();if(!e)return 0;let[a,r,s]=Hl(e,[0,0,0]);return .2126*a+.7152*r+.0722*s>.5?1:0}#T(){let e=this.#a,a=this.#t,r=this.#r;if(!e||!a||!r||!this.#i)return;this.#L();let s=performance.now()/1e3-this.#h,i=.5+.5*Math.sin(s*.12),o=.5+.5*Math.sin(s*.097+1),n=.2*(1-i)+.46*i,h=.74*(1-o)+.3*o,l=this.#x,p=this.#p,c=this.#m;e.viewport(0,0,a.width,a.height),e.useProgram(r),e.bindBuffer(e.ARRAY_BUFFER,this.#i),e.enableVertexAttribArray(this.#n),e.vertexAttribPointer(this.#n,2,e.FLOAT,!1,0,0);let u=this.#o;e.uniform2f(u.u_res??null,a.width,a.height),e.uniform1f(u.u_time??null,s),e.uniform1f(u.u_energy??null,this.#d),e.uniform2f(u.u_center??null,n,h),e.uniform3f(u.u_evt??null,c[0],c[1],c[2]),e.uniform1f(u.u_freeze??null,ot(this.coverage*this.intensity,0,1,.66)*2.2),e.uniform1f(u.u_dark??null,l),e.uniform1f(u.u_scroll??null,this.scrollOffset*OD/Math.max(1,a.clientHeight||a.height)),e.uniform1f(u.u_density??null,.29),e.uniform1f(u.u_falloff??null,.3),e.uniform1f(u.u_life??null,.35),e.uniform1f(u.u_blink??null,.05),e.uniform1f(u.u_thick??null,.02),e.uniform3f(u.u_tint??null,p[0],p[1],p[2]),e.uniform1f(u.u_brightness??null,this.brightness),e.uniform1f(u.u_contrast??null,this.contrast),e.uniform1f(u.u_noise??null,this.noise),e.uniform1f(u.u_blur??null,this.blurAmount),e.drawArrays(e.TRIANGLES,0,3),this.#d*=.95,this.#d<.001&&(this.#d=0)}#H(){if(this.#l)return;let e=()=>{this.#T(),this.#l=requestAnimationFrame(e)};this.#l=requestAnimationFrame(e)}#R(){this.#l&&cancelAnimationFrame(this.#l),this.#l=0}#F(){let e=this.#a,a=this.#t;if(a&&this.#O(a),e){this.#i&&e.deleteBuffer(this.#i);for(let r of Object.values(this.#s))r&&(e.deleteProgram(r.program),e.deleteShader(r.vs),e.deleteShader(r.fs));e.getExtension("WEBGL_lose_context")?.loseContext()}this.#a=null,this.#r=null,this.#s={},this.#o={},this.#i=null,this.#M=null}};g("slicc-shader",vt);var Ka=class extends vt{connectedCallback(){this.getAttribute("mode")!=="freezer"&&this.setAttribute("mode","freezer"),super.connectedCallback()}};g("slicc-frost-shader",Ka);var KA=["top-left","top-right","bottom-left","bottom-right","top","right","bottom","left"],Za="top-right";var Rl="slicc-launcher-corner",ZA=["disconnected","connected","error"],YA="disconnected",Me="follower-status",VD=new Set(KA),ID=new Set(ZA);function nt(t,e=Za){return t&&VD.has(t)?t:e}function Pt(t,e=YA){return t&&ID.has(t)?t:e}function Ya(t,e){return t>=6||t>=12&&e>=.6}function Bl({clientX:t,clientY:e,viewportWidth:a,viewportHeight:r,velocityXPxPerMs:s=0,velocityYPxPerMs:i=0,flickProjectionMs:o=180}){let n=GA(t+s*o,0,a),h=GA(e+i*o,0,r),l=n/a,p=h/r,c=l>1/3&&l<2/3,u=p>1/3&&p<2/3;if(c&&u){let x=p,_=1-p,T=l,D=1-l,H=Math.min(x,_,T,D);return H===x?"top":H===_?"bottom":H===T?"left":"right"}if(c)return p<.5?"top":"bottom";if(u)return l<.5?"left":"right";let m=l<.5?"left":"right";return`${p<.5?"top":"bottom"}-${m}`}function GA(t,e,a){return Math.min(Math.max(t,e),a)}var XA=`<?xml version="1.0" encoding="UTF-8"?>
2512
2512
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%"><g transform="translate(151.53125, -171.3125) scale(1.25)"><g transform="translate(0, 21)"><g id="Cone">
2513
2513
  <path id="Cone_Bottom" data-name="Cone Bottom" d="M108.22,414.88l189.84,460.03c1.36,3.3,6.09,3.16,7.25-.22l159.34-463.34c.87-2.53-1.03-5.16-3.7-5.13l-349.18,3.32c-2.74.03-4.59,2.82-3.55,5.35Z" style="fill: rgb(34, 34, 34); stroke: rgb(255, 255, 255); stroke-linejoin: round; stroke-width: 20px;"></path>
2514
2514
  <g id="Waffle_Cross-Hatch" data-name="Waffle Cross-Hatch">
@@ -3301,7 +3301,7 @@ slicc-permissions .slicc-permissions__prompt-btn:disabled {
3301
3301
  transform: translateX(-50%) translateY(0);
3302
3302
  }
3303
3303
  }
3304
- `,hE="slicc-permissions-style";function CR(t){if(t.getElementById(hE))return;let e=t.createElement("style");e.id=hE,e.textContent=SR,(t.head??t.documentElement).appendChild(e)}function rr(t){let e=t.dataTransfer?.types;if(!e)return!1;for(let a=0;a<e.length;a++)if(e[a]==="Files")return!0;return!1}var sr=class extends HTMLElement{providers={};permissionQuery=null;#e;#t=!1;#a=0;#r=null;connectedCallback(){CR(this.ownerDocument),this.#S();let e=this.ownerDocument;e.addEventListener("dragenter",this.#v),e.addEventListener("dragover",this.#M),e.addEventListener("dragleave",this.#y),e.addEventListener("drop",this.#b)}disconnectedCallback(){let e=this.ownerDocument;e.removeEventListener("dragenter",this.#v),e.removeEventListener("dragover",this.#M),e.removeEventListener("dragleave",this.#y),e.removeEventListener("drop",this.#b),this.#a=0,this.removeAttribute("data-dropping"),this.#r&&this.#r.cancel()}async request(e,a){switch(e){case"camera":return this.#o(a);case"microphone":return this.#n(a);case"screenshare":return this.#h(a);case"usb":return this.#d(a);case"hid":return this.#c(a);case"serial":return this.#u(a);case"filesystem":return this.#p();case"popup":return this.#m(a);default:return null}}async prompt(e){if(!e.kinds.length)return{status:"granted",grants:[]};if(e.skipIfGranted){let a=await this.#s(e);if(a)return a}return this.#r&&this.#r.cancel(),new Promise(a=>{this.#C(e,a)})}async#s(e){if(!e.kinds.every(i=>yR.has(i)))return Mt.debug("prompt: showing dialog (a gesture-bound kind was requested)",{kinds:e.kinds}),null;let a=this.permissionQuery??wR,r;try{r=await Promise.all(e.kinds.map(i=>a(i)))}catch(i){return Mt.error("prompt: permission query threw; showing dialog",i),null}if(Mt.debug("prompt: queried permission state",{kinds:e.kinds,states:r}),!r.every(i=>i==="granted"))return Mt.debug("prompt: not all kinds granted; showing dialog"),null;let s=[];for(let i of e.kinds){let o=await this.request(i,e.requestOptions?.[i]);if(!o)return Mt.error("prompt: acquisition failed after granted state",{kind:i}),{status:"error",grants:s,reason:"error"};s.push(o)}return Mt.debug("prompt: short-circuited dialog (already granted)",{kinds:e.kinds}),{status:"granted",grants:s}}#i(){return this.providers.media??(typeof navigator<"u"?navigator.mediaDevices:null)??null}async#o(e){let a=this.#i();if(!a)return this.#f("camera","unavailable","mediaDevices unavailable");try{let r=await a.getUserMedia(e?.constraints??{video:!0});return this.#x({kind:"camera",stream:r})}catch(r){return this.#g("camera",r)}}async#n(e){let a=this.#i();if(!a)return this.#f("microphone","unavailable","mediaDevices unavailable");try{let r=await a.getUserMedia(e?.constraints??{audio:!0});return this.#x({kind:"microphone",stream:r})}catch(r){return this.#g("microphone",r)}}#l(){if(this.providers.screenshare)return this.providers.screenshare;let e=typeof navigator<"u"?navigator.mediaDevices:void 0;return e&&typeof e.getDisplayMedia=="function"?{getDisplayMedia:a=>e.getDisplayMedia(a)}:null}async#h(e){let a=this.#l();if(!a)return this.#f("screenshare","unavailable","getDisplayMedia unavailable");try{let r=await a.getDisplayMedia(e?.constraints??{video:!0});return this.#x({kind:"screenshare",stream:r})}catch(r){return this.#g("screenshare",r)}}async#d(e){let a=this.providers.usb??globalThis.navigator?.usb??null;if(!a?.requestDevice)return this.#f("usb","unavailable","WebUSB unavailable");try{let r=await a.requestDevice({filters:e?.filters??[]});return r?this.#x({kind:"usb",device:r}):this.#f("usb","cancelled")}catch(r){return this.#g("usb",r)}}async#c(e){let a=this.providers.hid??globalThis.navigator?.hid??null;if(!a?.requestDevice)return this.#f("hid","unavailable","WebHID unavailable");try{let r=await a.requestDevice({filters:e?.filters??[]}),s=Array.isArray(r)?r:r?[r]:[];return s.length===0?this.#f("hid","cancelled"):this.#x({kind:"hid",device:s[0],devices:s})}catch(r){return this.#g("hid",r)}}async#u(e){let a=this.providers.serial??globalThis.navigator?.serial??null;if(!a?.requestPort)return this.#f("serial","unavailable","Web Serial unavailable");try{let r=await a.requestPort(e?.filters?.length?{filters:e.filters}:{});return r?this.#x({kind:"serial",port:r}):this.#f("serial","cancelled")}catch(r){return this.#g("serial",r)}}async#p(){let e=this.providers.filesystem??(typeof window<"u"&&"showDirectoryPicker"in window&&window||null);if(!e?.showDirectoryPicker)return this.#f("filesystem","unavailable","showDirectoryPicker unavailable");try{let a=await e.showDirectoryPicker({mode:"readwrite"});return this.#x({kind:"filesystem",handle:a,source:"picker",permission:"granted"})}catch(a){return this.#g("filesystem",a)}}#m(e){let a=e?.url;if(!a)return this.#f("popup","error","popup request missing url");let r=e?.features??"width=500,height=700,popup=yes",s=this.providers.popup??(typeof window<"u"?{open:(o,n)=>window.open(o,"_blank",n)}:null);if(!s)return this.#f("popup","unavailable","window.open unavailable");let i;try{i=s.open(a,r)}catch(o){return this.#g("popup",o)}return i?this.#x({kind:"popup",window:i}):this.#f("popup","error","window.open returned null (popup blocked?)")}#x(e){return this.dispatchEvent(new CustomEvent("slicc-permission-grant",{detail:e,bubbles:!0,composed:!0})),e}#f(e,a,r){return this.dispatchEvent(new CustomEvent("slicc-permission-deny",{detail:{kind:e,reason:a,message:r},bubbles:!0,composed:!0})),null}#g(e,a){return a instanceof Error&&(a.name==="AbortError"||a.name==="NotFoundError")?this.#f(e,"cancelled"):this.#f(e,"error",a instanceof Error?a.message:String(a))}#v=e=>{rr(e)&&(e.preventDefault(),this.#a++,this.setAttribute("data-dropping",""))};#M=e=>{rr(e)&&e.preventDefault()};#y=e=>{rr(e)&&(this.#a=Math.max(0,this.#a-1),this.#a===0&&this.removeAttribute("data-dropping"))};#b=e=>{if(!rr(e))return;e.preventDefault(),this.#a=0,this.removeAttribute("data-dropping");let a=e.dataTransfer?.items;if(!a?.length)return;let r=[];for(let s=0;s<a.length;s++){let i=a[s];i.kind!=="file"||typeof i.getAsFileSystemHandle!="function"||r.push(i.getAsFileSystemHandle())}r.length!==0&&this.#_(r)};async#_(e){let a;try{a=await Promise.all(e)}catch(o){this.#f("filesystem","error",o instanceof Error?o.message:String(o));return}let r=a.find(o=>o?.kind==="directory");if(!r){this.#f("filesystem","cancelled","no directory in drop");return}let s=r,i;if(s.requestPermission)try{i=await s.requestPermission({mode:"readwrite"})}catch(o){this.#f("filesystem","error",o instanceof Error?o.message:String(o));return}else i="granted";if(i!=="granted"){this.#f("filesystem","cancelled",`permission ${i}`);return}this.#x({kind:"filesystem",handle:r,source:"drop",permission:i})}#S(){if(this.#t)return;this.#t=!0;let e=d("div",{class:"slicc-permissions__drop-inner"},b("folder-up",{size:32}),d("div",null,"Drop a folder to mount it (read-write)"));this.#e=d("div",{class:"slicc-permissions__drop",part:"drop","aria-hidden":"true"},e),this.append(this.#e)}#C(e,a){let r=e.heading??AR(e.kinds),s=e.grantLabel??"Allow",i=e.cancelLabel??"Cancel",o=`slicc-permissions__heading-${Math.random().toString(36).slice(2,8)}`,n=`slicc-permissions__desc-${Math.random().toString(36).slice(2,8)}`,h=d("button",{type:"button",class:"slicc-permissions__prompt-btn","data-variant":"ghost",part:"prompt-cancel"},i),l=d("button",{type:"button",class:"slicc-permissions__prompt-btn","data-variant":"primary",part:"prompt-grant"},s),p=d("div",{class:"slicc-permissions__prompt-icons","aria-hidden":"true"},...e.kinds.map(D=>d("span",{class:"slicc-permissions__prompt-icon"},b(kR(D),{size:22})))),c=d("div",{class:"slicc-permissions__prompt",part:"prompt",role:"dialog","aria-modal":"true","aria-labelledby":o,"aria-describedby":n,tabindex:"-1",popover:"manual"},p,d("h2",{class:"slicc-permissions__prompt-heading",id:o},r),d("p",{class:"slicc-permissions__prompt-desc",id:n},e.description),d("div",{class:"slicc-permissions__prompt-actions"},h,l));this.append(c);let u=c;if(typeof u.showPopover=="function")try{u.showPopover()}catch{}let m=!1,f=this.ownerDocument.activeElement??null,x=()=>{if(c.removeEventListener("keydown",T),c.remove(),f&&typeof f.focus=="function")try{f.focus()}catch{}this.#r=null},_=(D,H)=>{if(!m){m=!0;for(let A of e.kinds)this.#f(A,D,H);x(),a({status:"cancelled",grants:[],reason:D,message:H})}},T=D=>{if(D.key==="Escape"){D.preventDefault(),_("cancelled");return}if(D.key==="Tab"){let H=[h,l],A=this.ownerDocument.activeElement,R=H.indexOf(A);if(R===-1){H[0].focus(),D.preventDefault();return}(D.shiftKey?H[(R-1+H.length)%H.length]:H[(R+1)%H.length]).focus(),D.preventDefault()}};h.addEventListener("click",()=>_("cancelled")),l.addEventListener("click",async()=>{if(m)return;m=!0,l.disabled=!0,h.disabled=!0;let D=[],H=null;for(let R of e.kinds){let O=await this.request(R,e.requestOptions?.[R]);if(O)D.push(O);else{H={kind:R,reason:"cancelled"};break}}let A=H?e.kinds.indexOf(H.kind):-1;if(H&&A>=0)for(let R=A+1;R<e.kinds.length;R++)this.#f(e.kinds[R],"cancelled");x(),a(H?{status:"cancelled",grants:D,reason:"cancelled"}:{status:"granted",grants:D})}),c.addEventListener("keydown",T),this.#r={cancel:()=>_("cancelled")},requestAnimationFrame(()=>{c.setAttribute("data-open",""),l.focus()})}};function kR(t){switch(t){case"camera":return"camera";case"microphone":return"mic";case"screenshare":return"monitor-up";case"usb":return"usb";case"hid":return"keyboard";case"serial":return"cable";case"filesystem":return"folder";case"popup":return"external-link"}}function dE(t){switch(t){case"camera":return"camera";case"microphone":return"microphone";case"screenshare":return"screen";case"usb":return"USB device";case"hid":return"HID device";case"serial":return"serial port";case"filesystem":return"folder";case"popup":return"sign-in window"}}function AR(t){if(t.length===1)return`Allow access to your ${dE(t[0])}?`;let e=t.map(dE),a=e.pop();return`Allow access to your ${e.join(", ")} and ${a}?`}g("slicc-permissions",sr);var ER=new Set(["top","bottom","left","right"]),LR=`
3304
+ `,hE="slicc-permissions-style";function CR(t){if(t.getElementById(hE))return;let e=t.createElement("style");e.id=hE,e.textContent=SR,(t.head??t.documentElement).appendChild(e)}function rr(t){let e=t.dataTransfer?.types;if(!e)return!1;for(let a=0;a<e.length;a++)if(e[a]==="Files")return!0;return!1}var sr=class extends HTMLElement{providers={};permissionQuery=null;#e;#t=!1;#a=0;#r=null;connectedCallback(){CR(this.ownerDocument),this.#w();let e=this.ownerDocument;e.addEventListener("dragenter",this.#v),e.addEventListener("dragover",this.#M),e.addEventListener("dragleave",this.#_),e.addEventListener("drop",this.#b)}disconnectedCallback(){let e=this.ownerDocument;e.removeEventListener("dragenter",this.#v),e.removeEventListener("dragover",this.#M),e.removeEventListener("dragleave",this.#_),e.removeEventListener("drop",this.#b),this.#a=0,this.removeAttribute("data-dropping"),this.#r&&this.#r.cancel()}async request(e,a){switch(e){case"camera":return this.#o(a);case"microphone":return this.#n(a);case"screenshare":return this.#h(a);case"usb":return this.#d(a);case"hid":return this.#c(a);case"serial":return this.#u(a);case"filesystem":return this.#p();case"popup":return this.#m(a);default:return null}}async prompt(e){if(!e.kinds.length)return{status:"granted",grants:[]};if(e.skipIfGranted){let a=await this.#s(e);if(a)return a}return this.#r&&this.#r.cancel(),new Promise(a=>{this.#S(e,a)})}async#s(e){if(!e.kinds.every(i=>yR.has(i)))return Mt.debug("prompt: showing dialog (a gesture-bound kind was requested)",{kinds:e.kinds}),null;let a=this.permissionQuery??wR,r;try{r=await Promise.all(e.kinds.map(i=>a(i)))}catch(i){return Mt.error("prompt: permission query threw; showing dialog",i),null}if(Mt.debug("prompt: queried permission state",{kinds:e.kinds,states:r}),!r.every(i=>i==="granted"))return Mt.debug("prompt: not all kinds granted; showing dialog"),null;let s=[];for(let i of e.kinds){let o=await this.request(i,e.requestOptions?.[i]);if(!o)return Mt.error("prompt: acquisition failed after granted state",{kind:i}),{status:"error",grants:s,reason:"error"};s.push(o)}return Mt.debug("prompt: short-circuited dialog (already granted)",{kinds:e.kinds}),{status:"granted",grants:s}}#i(){return this.providers.media??(typeof navigator<"u"?navigator.mediaDevices:null)??null}async#o(e){let a=this.#i();if(!a)return this.#f("camera","unavailable","mediaDevices unavailable");try{let r=await a.getUserMedia(e?.constraints??{video:!0});return this.#x({kind:"camera",stream:r})}catch(r){return this.#g("camera",r)}}async#n(e){let a=this.#i();if(!a)return this.#f("microphone","unavailable","mediaDevices unavailable");try{let r=await a.getUserMedia(e?.constraints??{audio:!0});return this.#x({kind:"microphone",stream:r})}catch(r){return this.#g("microphone",r)}}#l(){if(this.providers.screenshare)return this.providers.screenshare;let e=typeof navigator<"u"?navigator.mediaDevices:void 0;return e&&typeof e.getDisplayMedia=="function"?{getDisplayMedia:a=>e.getDisplayMedia(a)}:null}async#h(e){let a=this.#l();if(!a)return this.#f("screenshare","unavailable","getDisplayMedia unavailable");try{let r=await a.getDisplayMedia(e?.constraints??{video:!0});return this.#x({kind:"screenshare",stream:r})}catch(r){return this.#g("screenshare",r)}}async#d(e){let a=this.providers.usb??globalThis.navigator?.usb??null;if(!a?.requestDevice)return this.#f("usb","unavailable","WebUSB unavailable");try{let r=await a.requestDevice({filters:e?.filters??[]});return r?this.#x({kind:"usb",device:r}):this.#f("usb","cancelled")}catch(r){return this.#g("usb",r)}}async#c(e){let a=this.providers.hid??globalThis.navigator?.hid??null;if(!a?.requestDevice)return this.#f("hid","unavailable","WebHID unavailable");try{let r=await a.requestDevice({filters:e?.filters??[]}),s=Array.isArray(r)?r:r?[r]:[];return s.length===0?this.#f("hid","cancelled"):this.#x({kind:"hid",device:s[0],devices:s})}catch(r){return this.#g("hid",r)}}async#u(e){let a=this.providers.serial??globalThis.navigator?.serial??null;if(!a?.requestPort)return this.#f("serial","unavailable","Web Serial unavailable");try{let r=await a.requestPort(e?.filters?.length?{filters:e.filters}:{});return r?this.#x({kind:"serial",port:r}):this.#f("serial","cancelled")}catch(r){return this.#g("serial",r)}}async#p(){let e=this.providers.filesystem??(typeof window<"u"&&"showDirectoryPicker"in window&&window||null);if(!e?.showDirectoryPicker)return this.#f("filesystem","unavailable","showDirectoryPicker unavailable");try{let a=await e.showDirectoryPicker({mode:"readwrite"});return this.#x({kind:"filesystem",handle:a,source:"picker",permission:"granted"})}catch(a){return this.#g("filesystem",a)}}#m(e){let a=e?.url;if(!a)return this.#f("popup","error","popup request missing url");let r=e?.features??"width=500,height=700,popup=yes",s=this.providers.popup??(typeof window<"u"?{open:(o,n)=>window.open(o,"_blank",n)}:null);if(!s)return this.#f("popup","unavailable","window.open unavailable");let i;try{i=s.open(a,r)}catch(o){return this.#g("popup",o)}return i?this.#x({kind:"popup",window:i}):this.#f("popup","error","window.open returned null (popup blocked?)")}#x(e){return this.dispatchEvent(new CustomEvent("slicc-permission-grant",{detail:e,bubbles:!0,composed:!0})),e}#f(e,a,r){return this.dispatchEvent(new CustomEvent("slicc-permission-deny",{detail:{kind:e,reason:a,message:r},bubbles:!0,composed:!0})),null}#g(e,a){return a instanceof Error&&(a.name==="AbortError"||a.name==="NotFoundError")?this.#f(e,"cancelled"):this.#f(e,"error",a instanceof Error?a.message:String(a))}#v=e=>{rr(e)&&(e.preventDefault(),this.#a++,this.setAttribute("data-dropping",""))};#M=e=>{rr(e)&&e.preventDefault()};#_=e=>{rr(e)&&(this.#a=Math.max(0,this.#a-1),this.#a===0&&this.removeAttribute("data-dropping"))};#b=e=>{if(!rr(e))return;e.preventDefault(),this.#a=0,this.removeAttribute("data-dropping");let a=e.dataTransfer?.items;if(!a?.length)return;let r=[];for(let s=0;s<a.length;s++){let i=a[s];i.kind!=="file"||typeof i.getAsFileSystemHandle!="function"||r.push(i.getAsFileSystemHandle())}r.length!==0&&this.#y(r)};async#y(e){let a;try{a=await Promise.all(e)}catch(o){this.#f("filesystem","error",o instanceof Error?o.message:String(o));return}let r=a.find(o=>o?.kind==="directory");if(!r){this.#f("filesystem","cancelled","no directory in drop");return}let s=r,i;if(s.requestPermission)try{i=await s.requestPermission({mode:"readwrite"})}catch(o){this.#f("filesystem","error",o instanceof Error?o.message:String(o));return}else i="granted";if(i!=="granted"){this.#f("filesystem","cancelled",`permission ${i}`);return}this.#x({kind:"filesystem",handle:r,source:"drop",permission:i})}#w(){if(this.#t)return;this.#t=!0;let e=d("div",{class:"slicc-permissions__drop-inner"},b("folder-up",{size:32}),d("div",null,"Drop a folder to mount it (read-write)"));this.#e=d("div",{class:"slicc-permissions__drop",part:"drop","aria-hidden":"true"},e),this.append(this.#e)}#S(e,a){let r=e.heading??AR(e.kinds),s=e.grantLabel??"Allow",i=e.cancelLabel??"Cancel",o=`slicc-permissions__heading-${Math.random().toString(36).slice(2,8)}`,n=`slicc-permissions__desc-${Math.random().toString(36).slice(2,8)}`,h=d("button",{type:"button",class:"slicc-permissions__prompt-btn","data-variant":"ghost",part:"prompt-cancel"},i),l=d("button",{type:"button",class:"slicc-permissions__prompt-btn","data-variant":"primary",part:"prompt-grant"},s),p=d("div",{class:"slicc-permissions__prompt-icons","aria-hidden":"true"},...e.kinds.map(D=>d("span",{class:"slicc-permissions__prompt-icon"},b(kR(D),{size:22})))),c=d("div",{class:"slicc-permissions__prompt",part:"prompt",role:"dialog","aria-modal":"true","aria-labelledby":o,"aria-describedby":n,tabindex:"-1",popover:"manual"},p,d("h2",{class:"slicc-permissions__prompt-heading",id:o},r),d("p",{class:"slicc-permissions__prompt-desc",id:n},e.description),d("div",{class:"slicc-permissions__prompt-actions"},h,l));this.append(c);let u=c;if(typeof u.showPopover=="function")try{u.showPopover()}catch{}let m=!1,f=this.ownerDocument.activeElement??null,x=()=>{if(c.removeEventListener("keydown",T),c.remove(),f&&typeof f.focus=="function")try{f.focus()}catch{}this.#r=null},_=(D,H)=>{if(!m){m=!0;for(let A of e.kinds)this.#f(A,D,H);x(),a({status:"cancelled",grants:[],reason:D,message:H})}},T=D=>{if(D.key==="Escape"){D.preventDefault(),_("cancelled");return}if(D.key==="Tab"){let H=[h,l],A=this.ownerDocument.activeElement,R=H.indexOf(A);if(R===-1){H[0].focus(),D.preventDefault();return}(D.shiftKey?H[(R-1+H.length)%H.length]:H[(R+1)%H.length]).focus(),D.preventDefault()}};h.addEventListener("click",()=>_("cancelled")),l.addEventListener("click",async()=>{if(m)return;m=!0,l.disabled=!0,h.disabled=!0;let D=[],H=null;for(let R of e.kinds){let O=await this.request(R,e.requestOptions?.[R]);if(O)D.push(O);else{H={kind:R,reason:"cancelled"};break}}let A=H?e.kinds.indexOf(H.kind):-1;if(H&&A>=0)for(let R=A+1;R<e.kinds.length;R++)this.#f(e.kinds[R],"cancelled");x(),a(H?{status:"cancelled",grants:D,reason:"cancelled"}:{status:"granted",grants:D})}),c.addEventListener("keydown",T),this.#r={cancel:()=>_("cancelled")},requestAnimationFrame(()=>{c.setAttribute("data-open",""),l.focus()})}};function kR(t){switch(t){case"camera":return"camera";case"microphone":return"mic";case"screenshare":return"monitor-up";case"usb":return"usb";case"hid":return"keyboard";case"serial":return"cable";case"filesystem":return"folder";case"popup":return"external-link"}}function dE(t){switch(t){case"camera":return"camera";case"microphone":return"microphone";case"screenshare":return"screen";case"usb":return"USB device";case"hid":return"HID device";case"serial":return"serial port";case"filesystem":return"folder";case"popup":return"sign-in window"}}function AR(t){if(t.length===1)return`Allow access to your ${dE(t[0])}?`;let e=t.map(dE),a=e.pop();return`Allow access to your ${e.join(", ")} and ${a}?`}g("slicc-permissions",sr);var ER=new Set(["top","bottom","left","right"]),LR=`
3305
3305
  :host { position: relative; display: inline-flex; }
3306
3306
  :host([hidden]) { display: none; }
3307
3307
  .tip {
@@ -4035,7 +4035,7 @@ slicc-press-button {
4035
4035
  .slicc-scoop-switcher .scoop { width: 34px; }
4036
4036
  .slicc-scoop-switcher slicc-pill.scoop { --pill-w: 34px; }
4037
4037
  }
4038
- `,kE="slicc-scoop-switcher-style";function zB(t){if(t.getElementById(kE))return;let e=t.createElement("style");e.id=kE,e.textContent=BB,(t.head??t.documentElement).appendChild(e)}function OB(t){return DB[t]??"var(--rose)"}function AE(t,e){let a=t.getAttribute("eyes");return a==="open"||a==="none"||a==="dead"?a:e}var wr=class extends HTMLElement{static get observedAttributes(){return["active","attention"]}#e=[];#t=null;#a=null;#r=!1;#s=null;#i=null;#o=!1;#n=null;#l=e=>{let a=this.#p(e);a!==this.#n&&(this.#n=a,this.#x())};#h=()=>{this.#n!==null&&(this.#n=null,this.#x())};connectedCallback(){zB(this.ownerDocument),this.classList.add("slicc-scoop-switcher"),this.setAttribute("part","row"),this.#o||(this.#c(),this.#o=!0),this.#i||(this.#i=e=>this.#M(e),this.addEventListener("click",this.#i)),this.addEventListener("pointerover",this.#l),this.addEventListener("pointerleave",this.#h),this.#u(),this.#y(),requestAnimationFrame(()=>this.reflow())}disconnectedCallback(){this.#a?.disconnect(),this.#a=null,this.#s!==null&&(cancelAnimationFrame(this.#s),this.#s=null),this.#i&&(this.removeEventListener("click",this.#i),this.#i=null),this.removeEventListener("pointerover",this.#l),this.removeEventListener("pointerleave",this.#h)}attributeChangedCallback(e){this.#o&&(e==="active"?this.#f():e==="attention"&&this.#x())}get scoops(){return this.#e.map(e=>({...e}))}set scoops(e){this.#e=Array.isArray(e)?e.map(a=>({...a})):[],this.#o&&this.isConnected&&(this.#u(),this.reflow())}get attention(){return this.getAttribute("attention")}set attention(e){e==null?this.removeAttribute("attention"):this.setAttribute("attention",e)}get active(){return this.getAttribute("active")}set active(e){e==null?this.removeAttribute("active"):this.setAttribute("active",e)}reflow(){if(!(!this.isConnected||this.#r)){this.#r=!0;try{this.#d()}finally{this.#r=!1}}}#d(){let e=[...this.querySelectorAll("slicc-pill.scoop")];for(let l of e)l.classList.remove("hide");let a=e.filter(l=>l.offsetParent!==null||l.offsetWidth>0);if(a.length===0){this.#g([]);return}let r=this.clientWidth;if(r<=0){this.#g([]),requestAnimationFrame(()=>{this.isConnected&&this.clientWidth>0&&this.reflow()});return}let s=a.map(l=>l.offsetWidth);if(s.reduce((l,p)=>l+p,0)+Il*Math.max(0,a.length-1)<=r+1){this.#g([]);return}let o=Math.max(0,r-RB),n=[],h=0;a.forEach((l,p)=>{if(p===0){h+=s[p];return}let c=Il+s[p];n.length===0&&h+c<=o?h+=c:(l.classList.add("hide"),n.push(l))}),this.#g(n)}select(e){this.active=e;let a=this.#e.find(r=>r.key===e)?.label??e;this.dispatchEvent(new CustomEvent("slicc-scoop-select",{detail:{id:e,key:e,label:a},bubbles:!0,composed:!0}))}#c(){let e=[...this.querySelectorAll("slicc-pill")];if(e.length===0)return;let a=e.map(r=>{let s=r.dataset.k??r.getAttribute("label")??"",i=r.getAttribute("type")==="cone"?"cone":"scoop";return{key:s,type:i,color:r.getAttribute("color")??void 0,label:r.getAttribute("label")??s,eyes:AE(r,i==="cone"?"open":"none"),ephemeral:r.classList.contains("ephemeral")}});for(let r of e)r.remove();this.#e.length===0&&(this.#e=a)}#u(){let e=this.active,a=this.#e.map(r=>{let s=r.key,i=r.type==="cone"||s==="cone"?"cone":"scoop",o=r.label??s,n=r.eyes??(i==="cone"?"open":"none"),h=e!=null&&e===s,l=OB(s);return d("slicc-pill",{class:`scoop${r.ephemeral?" ephemeral":""}`,"data-k":s,type:i,color:r.color?r.color:!1,eyes:n,fill:typeof r.fill=="number"&&Number.isFinite(r.fill)?String(Math.round(Math.min(100,Math.max(0,r.fill)))):!1,label:o,active:h,style:`--h:${l}`})});this.replaceChildren(...a),this.#x()}#p(e){let a=e.target?.closest?.("slicc-pill.scoop");return a&&this.contains(a)?a.dataset.k??null:null}#m(e){let a=this.#e.find(s=>s.key===e),r=a?.type==="cone"||e==="cone"?"cone":"scoop";return a?.eyes??(r==="cone"?"open":"none")}#x(){let e=this.attention;for(let a of this.querySelectorAll("slicc-pill.scoop")){let r=a.dataset.k??"",s=this.#n!==null?this.#n===r:e!==null&&e===r,i=this.#m(r);a.setAttribute("eyes",s?i:"none"),a.toggleAttribute("blink",s&&this.#n===null&&i==="open")}}#f(){let e=this.active;for(let a of this.querySelectorAll("slicc-pill.scoop")){let r=a.dataset.k===e;a.classList.toggle("active",r),a.toggleAttribute("active",r)}}#g(e){if(e.length===0){this.#t&&(this.#t.items=[]);return}let a=this.#v();a.items=e.map(r=>{let s=r.dataset.k??"";return{id:s,label:r.getAttribute("label")??s,type:r.getAttribute("type")==="cone"?"cone":"scoop",color:r.getAttribute("color")??void 0,eyes:AE(r,r.getAttribute("type")==="cone"?"open":"none")}})}#v(){if(this.#t)return this.#t;let e=this.ownerDocument.createElement("slicc-scoop-overflow");return e.addEventListener("slicc-scoop-select",a=>{let r=a.detail?.id;typeof r=="string"&&(a.stopPropagation(),this.select(r))}),this.after(e),this.#t=e,e}#M(e){let r=e.target?.closest("slicc-pill.scoop");if(!r||!this.contains(r))return;let s=r.dataset.k;s&&this.select(s)}#y(){this.#a||typeof ResizeObserver>"u"||(this.#a=new ResizeObserver(()=>{this.#s===null&&(this.#s=requestAnimationFrame(()=>{this.#s=null,this.reflow()}))}),this.#a.observe(this),this.parentElement&&this.#a.observe(this.parentElement))}};g("slicc-scoop-switcher",wr);var EE={};var LE="slicc-tokens";function TE(t=document){if(t.getElementById(LE))return;let e=t.createElement("style");e.id=LE,e.textContent=EE,(t.head??t.documentElement).appendChild(e)}function Sr(t,e=document.body){e.classList.toggle("dark",t==="dark"),e.setAttribute("data-theme",t)}var VB=`
4038
+ `,kE="slicc-scoop-switcher-style";function zB(t){if(t.getElementById(kE))return;let e=t.createElement("style");e.id=kE,e.textContent=BB,(t.head??t.documentElement).appendChild(e)}function OB(t){return DB[t]??"var(--rose)"}function AE(t,e){let a=t.getAttribute("eyes");return a==="open"||a==="none"||a==="dead"?a:e}var wr=class extends HTMLElement{static get observedAttributes(){return["active","attention"]}#e=[];#t=null;#a=null;#r=!1;#s=null;#i=null;#o=!1;#n=null;#l=e=>{let a=this.#p(e);a!==this.#n&&(this.#n=a,this.#x())};#h=()=>{this.#n!==null&&(this.#n=null,this.#x())};connectedCallback(){zB(this.ownerDocument),this.classList.add("slicc-scoop-switcher"),this.setAttribute("part","row"),this.#o||(this.#c(),this.#o=!0),this.#i||(this.#i=e=>this.#M(e),this.addEventListener("click",this.#i)),this.addEventListener("pointerover",this.#l),this.addEventListener("pointerleave",this.#h),this.#u(),this.#_(),requestAnimationFrame(()=>this.reflow())}disconnectedCallback(){this.#a?.disconnect(),this.#a=null,this.#s!==null&&(cancelAnimationFrame(this.#s),this.#s=null),this.#i&&(this.removeEventListener("click",this.#i),this.#i=null),this.removeEventListener("pointerover",this.#l),this.removeEventListener("pointerleave",this.#h)}attributeChangedCallback(e){this.#o&&(e==="active"?this.#f():e==="attention"&&this.#x())}get scoops(){return this.#e.map(e=>({...e}))}set scoops(e){this.#e=Array.isArray(e)?e.map(a=>({...a})):[],this.#o&&this.isConnected&&(this.#u(),this.reflow())}get attention(){return this.getAttribute("attention")}set attention(e){e==null?this.removeAttribute("attention"):this.setAttribute("attention",e)}get active(){return this.getAttribute("active")}set active(e){e==null?this.removeAttribute("active"):this.setAttribute("active",e)}reflow(){if(!(!this.isConnected||this.#r)){this.#r=!0;try{this.#d()}finally{this.#r=!1}}}#d(){let e=[...this.querySelectorAll("slicc-pill.scoop")];for(let l of e)l.classList.remove("hide");let a=e.filter(l=>l.offsetParent!==null||l.offsetWidth>0);if(a.length===0){this.#g([]);return}let r=this.clientWidth;if(r<=0){this.#g([]),requestAnimationFrame(()=>{this.isConnected&&this.clientWidth>0&&this.reflow()});return}let s=a.map(l=>l.offsetWidth);if(s.reduce((l,p)=>l+p,0)+Il*Math.max(0,a.length-1)<=r+1){this.#g([]);return}let o=Math.max(0,r-RB),n=[],h=0;a.forEach((l,p)=>{if(p===0){h+=s[p];return}let c=Il+s[p];n.length===0&&h+c<=o?h+=c:(l.classList.add("hide"),n.push(l))}),this.#g(n)}select(e){this.active=e;let a=this.#e.find(r=>r.key===e)?.label??e;this.dispatchEvent(new CustomEvent("slicc-scoop-select",{detail:{id:e,key:e,label:a},bubbles:!0,composed:!0}))}#c(){let e=[...this.querySelectorAll("slicc-pill")];if(e.length===0)return;let a=e.map(r=>{let s=r.dataset.k??r.getAttribute("label")??"",i=r.getAttribute("type")==="cone"?"cone":"scoop";return{key:s,type:i,color:r.getAttribute("color")??void 0,label:r.getAttribute("label")??s,eyes:AE(r,i==="cone"?"open":"none"),ephemeral:r.classList.contains("ephemeral")}});for(let r of e)r.remove();this.#e.length===0&&(this.#e=a)}#u(){let e=this.active,a=this.#e.map(r=>{let s=r.key,i=r.type==="cone"||s==="cone"?"cone":"scoop",o=r.label??s,n=r.eyes??(i==="cone"?"open":"none"),h=e!=null&&e===s,l=OB(s);return d("slicc-pill",{class:`scoop${r.ephemeral?" ephemeral":""}`,"data-k":s,type:i,color:r.color?r.color:!1,eyes:n,fill:typeof r.fill=="number"&&Number.isFinite(r.fill)?String(Math.round(Math.min(100,Math.max(0,r.fill)))):!1,label:o,active:h,style:`--h:${l}`})});this.replaceChildren(...a),this.#x()}#p(e){let a=e.target?.closest?.("slicc-pill.scoop");return a&&this.contains(a)?a.dataset.k??null:null}#m(e){let a=this.#e.find(s=>s.key===e),r=a?.type==="cone"||e==="cone"?"cone":"scoop";return a?.eyes??(r==="cone"?"open":"none")}#x(){let e=this.attention;for(let a of this.querySelectorAll("slicc-pill.scoop")){let r=a.dataset.k??"",s=this.#n!==null?this.#n===r:e!==null&&e===r,i=this.#m(r);a.setAttribute("eyes",s?i:"none"),a.toggleAttribute("blink",s&&this.#n===null&&i==="open")}}#f(){let e=this.active;for(let a of this.querySelectorAll("slicc-pill.scoop")){let r=a.dataset.k===e;a.classList.toggle("active",r),a.toggleAttribute("active",r)}}#g(e){if(e.length===0){this.#t&&(this.#t.items=[]);return}let a=this.#v();a.items=e.map(r=>{let s=r.dataset.k??"";return{id:s,label:r.getAttribute("label")??s,type:r.getAttribute("type")==="cone"?"cone":"scoop",color:r.getAttribute("color")??void 0,eyes:AE(r,r.getAttribute("type")==="cone"?"open":"none")}})}#v(){if(this.#t)return this.#t;let e=this.ownerDocument.createElement("slicc-scoop-overflow");return e.addEventListener("slicc-scoop-select",a=>{let r=a.detail?.id;typeof r=="string"&&(a.stopPropagation(),this.select(r))}),this.after(e),this.#t=e,e}#M(e){let r=e.target?.closest("slicc-pill.scoop");if(!r||!this.contains(r))return;let s=r.dataset.k;s&&this.select(s)}#_(){this.#a||typeof ResizeObserver>"u"||(this.#a=new ResizeObserver(()=>{this.#s===null&&(this.#s=requestAnimationFrame(()=>{this.#s=null,this.reflow()}))}),this.#a.observe(this),this.parentElement&&this.#a.observe(this.parentElement))}};g("slicc-scoop-switcher",wr);var EE={};var LE="slicc-tokens";function TE(t=document){if(t.getElementById(LE))return;let e=t.createElement("style");e.id=LE,e.textContent=EE,(t.head??t.documentElement).appendChild(e)}function Sr(t,e=document.body){e.classList.toggle("dark",t==="dark"),e.setAttribute("data-theme",t)}var VB=`
4039
4039
  :host { display: inline-flex; flex: 0 0 auto; }
4040
4040
  .themetgl {
4041
4041
  font: inherit; font-family: var(--ui); font-size: 14px; line-height: 1;
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>slicc</title>
7
7
  <link rel="icon" type="image/png" href="/logos/sliccy-color-1scoops-32x32.png" />
8
- <script type="module" crossorigin src="/assets/main-Adg2tAFx.js"></script>
8
+ <script type="module" crossorigin src="/assets/main-Cpp7tV6a.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-aKtaBQYM.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-Dezn_h7o.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-zJ_50EbN.js">
@@ -24,7 +24,7 @@
24
24
  <link rel="modulepreload" crossorigin href="/assets/transform-messages-DzB_lMo-.js">
25
25
  <link rel="modulepreload" crossorigin href="/assets/bedrock-camp-9-QEmC9Z.js">
26
26
  <link rel="modulepreload" crossorigin href="/assets/tool-ui-DfXu6quJ.js">
27
- <link rel="modulepreload" crossorigin href="/assets/account-store-Dxwe8EsY.js">
27
+ <link rel="modulepreload" crossorigin href="/assets/account-store-DijjUUOO.js">
28
28
  <link rel="modulepreload" crossorigin href="/assets/clipboard-DgFtRQbq.js">
29
29
  </head>
30
30
  <body>
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>slicc</title>
7
7
  <link rel="icon" type="image/png" href="/logos/sliccy-color-1scoops-32x32.png" />
8
- <script type="module" crossorigin src="/assets/main-Adg2tAFx.js"></script>
8
+ <script type="module" crossorigin src="/assets/main-Cpp7tV6a.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-aKtaBQYM.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-Dezn_h7o.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-zJ_50EbN.js">
@@ -24,7 +24,7 @@
24
24
  <link rel="modulepreload" crossorigin href="/assets/transform-messages-DzB_lMo-.js">
25
25
  <link rel="modulepreload" crossorigin href="/assets/bedrock-camp-9-QEmC9Z.js">
26
26
  <link rel="modulepreload" crossorigin href="/assets/tool-ui-DfXu6quJ.js">
27
- <link rel="modulepreload" crossorigin href="/assets/account-store-Dxwe8EsY.js">
27
+ <link rel="modulepreload" crossorigin href="/assets/account-store-DijjUUOO.js">
28
28
  <link rel="modulepreload" crossorigin href="/assets/clipboard-DgFtRQbq.js">
29
29
  </head>
30
30
  <body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sliccy",
3
- "version": "5.8.0",
3
+ "version": "5.8.2",
4
4
  "description": "Browser-based coding agent with thin CLI server",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -1 +0,0 @@
1
- import{m as e}from"./wc-live-D6xN2jey.js";export{e as setDipExecHandler};
@@ -1 +0,0 @@
1
- import{t as e}from"./esptool-operations-piu4J4Nw.js";export{e as ESP8266ROM};
@@ -1 +0,0 @@
1
- import{t as e}from"./store-n3jCQwXL.js";import"./provider-BHB2jXSJ.js";export{e as readMcpAuthEntries};
@@ -1 +0,0 @@
1
- import{t as e}from"./provider-CKTI8xj9.js";export{e as readMcpAuthEntries};
@@ -1 +0,0 @@
1
- import{c as e}from"./wc-live-D6xN2jey.js";export{e as readSessionsIndex};