sliccy 5.16.0 → 5.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/node-server/electron-controller.d.ts +0 -1
- package/dist/node-server/electron-controller.js +4 -10
- package/dist/node-server/electron-main.js +5 -13
- package/dist/node-server/electron-runtime.d.ts +0 -4
- package/dist/node-server/electron-runtime.js +4 -21
- package/dist/node-server/index.js +28 -178
- package/dist/node-server/runtime-flags.d.ts +0 -1
- package/dist/node-server/runtime-flags.js +184 -170
- package/dist/ui/assets/{account-store-BVzBgQ-v.js → account-store-BlJxZ8bA.js} +2 -2
- package/dist/ui/assets/{account-store-CVlnJB81.js → account-store-CXTiaOBF.js} +2 -2
- package/dist/ui/assets/{adobe-SkYkxgg4.js → adobe-4-CD_R9o.js} +1 -1
- package/dist/ui/assets/{adobe-BFJRWiBP.js → adobe-E2DIgnz1.js} +1 -1
- package/dist/ui/assets/{adobe-oauth-state-BlTiu0EW.js → adobe-oauth-state-B9YxNQJp.js} +1 -1
- package/dist/ui/assets/{agent-message-to-chat-IZJU7XsF.js → agent-message-to-chat-DZEPoDrl.js} +1 -1
- package/dist/ui/assets/{apps-CGs6f4_D.js → apps-Fb83z-vc.js} +1 -1
- package/dist/ui/assets/{azure-openai-BPKSSyhH.js → azure-openai-D7rHwq_y.js} +1 -1
- package/dist/ui/assets/{azure-openai-CGgQnr10.js → azure-openai-Dsscn7WN.js} +1 -1
- package/dist/ui/assets/{composer-speech-HQRRG5ym.js → composer-speech-DJ-Mw0M5.js} +1 -1
- package/dist/ui/assets/{connect-surface-CK4b42-9.js → connect-surface-C-4d0ls3.js} +1 -1
- package/dist/ui/assets/dip-BINZ1ICD.js +1 -0
- package/dist/ui/assets/{dist-x2GYqOXm.js → dist-CseAKSVh.js} +1 -1
- package/dist/ui/assets/{dist-DtpnSVfI.js → dist-V73PvJP5.js} +1 -1
- package/dist/ui/assets/{ensure-speech-assets-Dn8D8dRb.js → ensure-speech-assets-CpXHTB8K.js} +1 -1
- package/dist/ui/assets/esp8266-CiVYkcWu.js +1 -0
- package/dist/ui/assets/{esptool-operations-D9gFmxN7.js → esptool-operations-BrkzeaKN.js} +2 -2
- package/dist/ui/assets/{fs-BdfVEExy.js → fs-DR-xqM-9.js} +1 -1
- package/dist/ui/assets/{fs-Bd593l61.js → fs-e_JED6o9.js} +2 -2
- package/dist/ui/assets/{github-B8weBp2j.js → github-D1teU7MS.js} +1 -1
- package/dist/ui/assets/{github-8kxwir4q.js → github-Db5GCKq4.js} +2 -2
- package/dist/ui/assets/{github-copilot-CPYs96aw.js → github-copilot-BhDan7GW.js} +1 -1
- package/dist/ui/assets/{github-copilot-DdE_r53L.js → github-copilot-DC5kS9aJ.js} +1 -1
- package/dist/ui/assets/{hear-Dk1gIguU.js → hear-CISOdKc7.js} +1 -1
- package/dist/ui/assets/{hear-J30GxNJC.js → hear-ST2A8Ojf.js} +1 -1
- package/dist/ui/assets/{kernel-worker-CHH5Mx3j.js → kernel-worker-DElXqFYz.js} +18 -18
- package/dist/ui/assets/{kokoro-engine-DXi-4Lk1.js → kokoro-engine-pjPKeKE-.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-Di_eIPel.js → lick-ws-bridge-CgLt3-md.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-BErTRf2C.js → lick-ws-bridge-uMf3lFqX.js} +1 -1
- package/dist/ui/assets/{local-llm-Bhn3zPzV.js → local-llm-CYNOX_zH.js} +1 -1
- package/dist/ui/assets/{main-CBEoDTj_.js → main-99mCaNK1.js} +4 -4
- package/dist/ui/assets/{mime-types-CIg5nqjf.js → mime-types-ugOWOUZ9.js} +1 -1
- package/dist/ui/assets/{mount-D0PTVzqd.js → mount-CIoB0cu-.js} +2 -2
- package/dist/ui/assets/{mount-C4pLRV8G.js → mount-DDFp4uJK.js} +1 -1
- package/dist/ui/assets/{new-session-D3cDkirv.js → new-session-yO9a-skO.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-CW0Iq4DJ.js → oauth-bootstrap-BjE1yxq_.js} +2 -2
- package/dist/ui/assets/{openai-codex-BhKQGaPl.js → openai-codex-CxQ8e4UF.js} +1 -1
- package/dist/ui/assets/{openai-codex-jRbHGzPJ.js → openai-codex-D9qpuznd.js} +1 -1
- package/dist/ui/assets/{page-follower-tray-B7V5Hdk3.js → page-follower-tray-DWGutKN6.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-HGirMMc_.js → panel-rpc-handlers-Bh3kNYD4.js} +2 -2
- package/dist/ui/assets/{provider-fwp5doUF.js → provider-BHsa0Rrz.js} +1 -1
- package/dist/ui/assets/{provider-T0IaN12Z.js → provider-BWRxgi1b.js} +2 -2
- package/dist/ui/assets/provider-store-access-Ct7bph7W.js +1 -0
- package/dist/ui/assets/provider-store-access-Dxm0WwoL.js +1 -0
- package/dist/ui/assets/{providers-BJpLjsbl.js → providers-D3nv5fF8.js} +1 -1
- package/dist/ui/assets/{quick-llm-DmM8V850.js → quick-llm-nkhmm4Rf.js} +1 -1
- package/dist/ui/assets/session-freezer-BoHtcQZ7.js +1 -0
- package/dist/ui/assets/{shared-Cddyus7m.js → shared-mxZcIrza.js} +1 -1
- package/dist/ui/assets/speak-DoCdEEhw.js +3 -0
- package/dist/ui/assets/speak-zyz6ag-g.js +1 -0
- package/dist/ui/assets/{sprinkle-bridge-Cd-pvRLY.js → sprinkle-bridge-BB1Ge79t.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-Cu6u-z69.js → sprinkle-manager-BqIyFmnb.js} +1 -1
- package/dist/ui/assets/{store-BaMl32ka.js → store-CYnFF7yg.js} +1 -1
- package/dist/ui/assets/{sudo-DBuMJPLn.js → sudo-Bs4eVV8G.js} +1 -1
- package/dist/ui/assets/{transformers-env-CEn9s_Z3.js → transformers-env-B2qCXqw-.js} +1 -1
- package/dist/ui/assets/{transformers-env-BNvU2_5X.js → transformers-env-t6_cAHU1.js} +1 -1
- package/dist/ui/assets/{tray-leader-BufiJcof.js → tray-leader-BjtMXiMR.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-CPPXBBg9.js → tray-leave-runtime-BoCD9arc.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-D19M3hIS.js → upgrade-detection-CLuyCKRm.js} +1 -1
- package/dist/ui/assets/voice-reply-BLN1aJMo.js +1 -0
- package/dist/ui/assets/{wc-attach-jjQplnwa.js → wc-attach-BoWNytPR.js} +2 -2
- package/dist/ui/assets/{wc-detached-Dz2uBF5T.js → wc-detached-Cyqt2rB-.js} +1 -1
- package/dist/ui/assets/{wc-extension-BmxoVHlX.js → wc-extension-TU20M11H.js} +2 -2
- package/dist/ui/assets/{wc-follower-Cr4dFgMb.js → wc-follower-J9dIOTtr.js} +2 -2
- package/dist/ui/assets/wc-live-C00evhz8.js +253 -0
- package/dist/ui/assets/{wc-nav-CXbbv1oy.js → wc-nav-CDGop7zp.js} +2 -2
- package/dist/ui/assets/{wc-onboarding-n0z_itcq.js → wc-onboarding-BJdN1JOs.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-D5zdaLbn.js → wc-placeholder-CX_bmbWN.js} +3 -3
- package/dist/ui/assets/{wc-settings-qtsuiHg1.js → wc-settings-pnqs-c98.js} +2 -2
- package/dist/ui/assets/{wc-shell-B2jkbIzt.js → wc-shell-DoOezClu.js} +963 -786
- package/dist/ui/assets/{wc-sprinkles-BAKT9WrK.js → wc-sprinkles-B3Di9lOW.js} +2 -2
- package/dist/ui/assets/{wc-tray-cnJoLvS2.js → wc-tray-D-6xnB2i.js} +2 -2
- package/dist/ui/assets/{whisper-engine-BSOAcb8a.js → whisper-engine-C_zUz3xO.js} +1 -1
- package/dist/ui/assets/{whisper-session-CW3OA9V7.js → whisper-session-7nSKj94g.js} +2 -2
- package/dist/ui/assets/{xai-grok---YndVHa.js → xai-grok-C3lfFdpm.js} +1 -1
- package/dist/ui/assets/{xai-grok-Da_y6R6g.js → xai-grok-Di62sFOW.js} +1 -1
- package/dist/ui/electron-overlay-entry.js +299 -6180
- package/dist/ui/index.html +2 -2
- package/dist/ui/packages/webapp/index.html +2 -2
- package/package.json +8 -6
- package/dist/node-server/ui-serving.d.ts +0 -18
- package/dist/node-server/ui-serving.js +0 -91
- package/dist/ui/assets/dip-NVUHjmhc.js +0 -1
- package/dist/ui/assets/esp8266-DL6QxCn7.js +0 -1
- package/dist/ui/assets/provider-store-access-BVRQIXtM.js +0 -1
- package/dist/ui/assets/provider-store-access-DTw81yRr.js +0 -1
- package/dist/ui/assets/session-freezer-D6XPq9Ct.js +0 -1
- package/dist/ui/assets/speak-BLaMFnqh.js +0 -3
- package/dist/ui/assets/speak-BM_ACI3J.js +0 -1
- package/dist/ui/assets/voice-reply--p0t9Lgo.js +0 -1
- package/dist/ui/assets/wc-live-DbLgOajX.js +0 -253
- package/dist/ui/electron-overlay-entry.css +0 -37
|
@@ -1,105 +1,426 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-
|
|
2
|
-
import{n as e}from"./chunk-aKtaBQYM.js";import{t}from"./preload-helper-zJ_50EbN.js";import{o as n}from"./main-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
.
|
|
22
|
-
|
|
23
|
-
.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
.
|
|
39
|
-
.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
.
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
.
|
|
54
|
-
|
|
55
|
-
.
|
|
56
|
-
.
|
|
57
|
-
|
|
58
|
-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-nkhmm4Rf.js","assets/chunk-aKtaBQYM.js","assets/account-store-CXTiaOBF.js","assets/preload-helper-zJ_50EbN.js","assets/dist-BmWy99kl.js","assets/event-stream-BJI_nGaK.js","assets/json-parse-BUunmmNl.js","assets/__vite-browser-external-C7iut881.js","assets/context-compaction-CFWyOzX1.js","assets/logger-DDBAeTLF.js","assets/src-x0cJ68Fe.js","assets/proxied-fetch-B5vr_AP8.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-Bp0wH2ni.js","assets/secrets-bridge-client-DXw32cXb.js","assets/panel-rpc-DqT2FG7c.js","assets/bedrock-camp-9-QEmC9Z.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-DfXu6quJ.js","assets/icons-BU6llBsN.js","assets/llm-session-id-DVmZ9C2t.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{n as e}from"./chunk-aKtaBQYM.js";import{t}from"./preload-helper-zJ_50EbN.js";import{o as n}from"./main-99mCaNK1.js";import{n as r,t as i}from"./icons-BU6llBsN.js";import{n as a,r as o,t as s}from"./speech-CqQdPtyQ.js";import{t as c}from"./soundscape-cues-5_sT5Un6.js";var l=e({applyDictationMarkers:()=>g,consumeDictationFirst:()=>v,parseReplyLang:()=>te,resetDictationPriming:()=>y,stripDictationMarkers:()=>ee,stripReplyLangMarker:()=>_}),u=`◁This message has been sent through text to speech, consider possible phonetic alternatives and transcription errors. Future dictated messages will have the 🎙️ emoji appended. Your responses to dictated messages will be read out loud, avoid urls, acronyms, numbers, formatting. Begin every reply with the language you are replying in as a hidden HTML comment, e.g. <!--lang:en--> for English or <!--lang:de--> for German; it stays hidden from the user and selects a matching voice▷`,d=/\uD83C\uDF99\uFE0F?/g,f=/\u25C1[\s\S]*?\u25B7/g,p=/<!--\s*lang:\s*([A-Za-z]{2,3}(?:-[A-Za-z0-9]{1,8})*)\s*-->/i,m=/<!--\s*lang:\s*[A-Za-z]{2,3}(?:-[A-Za-z0-9]{1,8})*\s*-->/gi,h=!0;function g(e,t){let n=e.endsWith(` `)?e:`${e} `;return t?`${n}\uD83C\uDF99\uFE0F${u}`:`${n}\uD83C\uDF99\uFE0F`}function ee(e){return e.replace(f,``).replace(d,``).replace(/[ \t]+$/g,``).trimEnd()}function te(e){return p.exec(e)?.[1]}function _(e){return e.replace(m,``)}function v(){return h?(h=!1,!0):!1}function y(){h=!0}var ne=new Set([`webhook`,`cron`,`sprinkle`,`fswatch`,`session-reload`,`navigate`,`upgrade`,`workflow`,`scoop-notify`,`scoop-idle`,`scoop-wait`,`sudo-request`]);function re(e){return e!=null&&ne.has(e)}var ie=[`top-left`,`top-right`,`bottom-left`,`bottom-right`,`top`,`right`,`bottom`,`left`],ae=`top-right`,oe=`slicc-launcher-corner`,b=[`disconnected`,`connected`,`error`],se=`disconnected`,x=`follower-status`,ce=new Set(ie),le=new Set(b);function ue(e,t=ae){return e&&ce.has(e)?e:t}function de(e,t=se){return e&&le.has(e)?e:t}function fe(e,t){return e>=6||e>=12&&t>=.6}function pe({clientX:e,clientY:t,viewportWidth:n,viewportHeight:r,velocityXPxPerMs:i=0,velocityYPxPerMs:a=0,flickProjectionMs:o=180}){let s=me(e+i*o,0,n),c=me(t+a*o,0,r),l=s/n,u=c/r,d=l>1/3&&l<2/3,f=u>1/3&&u<2/3;if(d&&f){let e=u,t=1-u,n=l,r=1-l,i=Math.min(e,t,n,r);return i===e?`top`:i===t?`bottom`:i===n?`left`:`right`}return d?u<.5?`top`:`bottom`:f?l<.5?`left`:`right`:`${u<.5?`top`:`bottom`}-${l<.5?`left`:`right`}`}function me(e,t,n){return Math.min(Math.max(e,t),n)}var S=`<?xml version="1.0" encoding="UTF-8"?>
|
|
3
|
+
<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">
|
|
4
|
+
<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>
|
|
5
|
+
<g id="Waffle_Cross-Hatch" data-name="Waffle Cross-Hatch">
|
|
6
|
+
<path d="M261.93,482.48h0c15.03-15.03,4.46-40.72-16.79-40.83h0c-21.37-.11-32.14,25.72-17.03,40.83h0c9.34,9.34,24.48,9.34,33.82,0Z" style="fill: rgb(255, 255, 255);"></path>
|
|
7
|
+
<path d="M384.85,527.49l-51.82,51.82c-2.24,2.24-2.24,5.86,0,8.1l55.71,55.71c2.24,2.24,5.86,2.24,8.1,0h0c.62-.62,1.08-1.36,1.37-2.19l26.52-77.11c.71-2.07.18-4.36-1.37-5.91l-30.41-30.41c-2.24-2.24-5.86-2.24-8.1,0Z" style="fill: rgb(255, 255, 255);"></path>
|
|
8
|
+
<rect x="274.59" y="463.59" width="84.73" height="95.66" rx="42.36" ry="42.36" transform="translate(-268.79 373.91) rotate(-45)" style="fill: rgb(255, 255, 255);"></rect>
|
|
9
|
+
<rect x="291.06" y="603.84" width="72.24" height="90.24" rx="36.12" ry="36.12" transform="translate(-363.06 421.43) rotate(-45)" style="fill: rgb(255, 255, 255);"></rect>
|
|
10
|
+
<path d="M371.7,684.58l-25.94,25.94c-2.24,2.24-2.24,5.86,0,8.1l12.67,12.67c2.99,2.99,8.09,1.82,9.46-2.19l13.28-38.61c1.97-5.74-5.17-10.2-9.46-5.91Z" style="fill: rgb(255, 255, 255);"></path>
|
|
11
|
+
<path d="M159.42,564.14l2.73,6.83c1.52,3.82,6.46,4.83,9.37,1.93l2.05-2.05c2.24-2.24,2.24-5.86,0-8.1l-4.78-4.78c-4.4-4.4-11.67.39-9.37,6.17Z" style="fill: rgb(255, 255, 255);"></path>
|
|
12
|
+
<path d="M243.92,633.11l-48.65-48.65c-5.24-5.24-13.74-5.24-18.99,0h0c-3.8,3.8-4.97,9.49-2.98,14.47l27.77,69.54c3.58,8.95,15.14,11.33,21.96,4.51l20.89-20.89c5.24-5.24,5.24-13.74,0-18.99Z" style="fill: rgb(255, 255, 255);"></path>
|
|
13
|
+
<path d="M211.32,533.1h0c14.11-14.11,14.11-36.98,0-51.08l-34.94-34.94c-.72-.72-.72-1.89,0-2.62h0c1.16-1.16.34-3.15-1.3-3.16l-11.23-.06c-25.62-.13-43.23,25.72-33.73,49.51l5.37,13.45c1.82,4.55,4.54,8.68,8,12.15l16.74,16.74c14.11,14.11,36.98,14.11,51.08,0Z" style="fill: rgb(255, 255, 255);"></path>
|
|
14
|
+
<path d="M263.74,792.53h0c-5.69,5.69-7.45,14.23-4.46,21.71l22.5,56.36c6.92,17.34,31.68,16.74,37.75-.92l8.66-25.2c2.5-7.28.64-15.35-4.8-20.79l-31.17-31.17c-7.87-7.87-20.62-7.87-28.48,0Z" style="fill: rgb(255, 255, 255);"></path>
|
|
15
|
+
<path d="M392.94,503.07l40.81-40.81c2.24-2.24,5.86-2.24,8.1,0l.06.06c2.24,2.24,2.24,5.86,0,8.1l-40.81,40.81c-2.24,2.24-2.24,5.86,0,8.1l22.48,22.48c2.99,2.99,8.09,1.82,9.46-2.19l30.71-89.32c1.27-3.71-1.47-7.57-5.39-7.59l-120.63-.6c-5.11-.03-7.69,6.16-4.08,9.77l51.18,51.18c2.24,2.24,5.86,2.24,8.1,0Z" style="fill: rgb(255, 255, 255);"></path>
|
|
16
|
+
<rect x="217.18" y="527.25" width="72.24" height="95.66" rx="36.12" ry="36.12" transform="translate(-332.45 347.55) rotate(-45)" style="fill: rgb(255, 255, 255);"></rect>
|
|
17
|
+
<path d="M350.28,739.46h0c-9.24-9.24-24.22-9.24-33.46,0l-13.94,13.94c-9.24,9.24-9.24,24.22,0,33.46l6.81,6.81c12.37,12.37,33.42,7.5,39.1-9.04l7.13-20.75c2.94-8.55.75-18.03-5.64-24.42Z" style="fill: rgb(255, 255, 255);"></path>
|
|
18
|
+
<path d="M234.18,749.12l13.2,33.06c1.52,3.82,6.46,4.83,9.37,1.93l9.93-9.93c2.24-2.24,2.24-5.86,0-8.1l-23.13-23.13c-4.4-4.4-11.67.39-9.37,6.17Z" style="fill: rgb(255, 255, 255);"></path>
|
|
19
|
+
<rect x="236.26" y="661.25" width="67.04" height="90.24" rx="33.52" ry="33.52" transform="translate(-420.46 397.65) rotate(-45)" style="fill: rgb(255, 255, 255);"></rect>
|
|
20
|
+
</g>
|
|
21
|
+
<ellipse id="Cone_Top" data-name="Cone Top" cx="288.37" cy="404.38" rx="182.34" ry="67.01" style="fill: rgb(34, 34, 34); stroke: rgb(255, 255, 255); stroke-miterlimit: 10; stroke-width: 20px;"></ellipse>
|
|
22
|
+
</g><g id="Right_Eye" data-name="Right Eye">
|
|
23
|
+
<circle id="Left_Eye_Outline" data-name="Left Eye Outline" cx="383.4" cy="216.12" r="64.78" style="fill: rgb(0, 0, 0); stroke: rgb(255, 255, 255); stroke-miterlimit: 10; stroke-width: 6px;"></circle>
|
|
24
|
+
|
|
25
|
+
</g><g id="Left_Eye" data-name="Left Eye">
|
|
26
|
+
<circle id="Right_Eye_Outline" data-name="Right Eye Outline" cx="175.1" cy="250.34" r="64.78" style="fill: rgb(0, 0, 0); stroke: rgb(255, 255, 255); stroke-miterlimit: 10; stroke-width: 6px;"></circle>
|
|
27
|
+
|
|
28
|
+
</g><g><line x1="351.01" y1="183.73000000000002" x2="415.78999999999996" y2="248.51" stroke="#fff" stroke-width="15" stroke-linecap="round"></line><line x1="351.01" y1="248.51" x2="415.78999999999996" y2="183.73000000000002" stroke="#fff" stroke-width="15" stroke-linecap="round"></line></g><g><line x1="142.70999999999998" y1="217.95" x2="207.49" y2="282.73" stroke="#fff" stroke-width="15" stroke-linecap="round"></line><line x1="142.70999999999998" y1="282.73" x2="207.49" y2="217.95" stroke="#fff" stroke-width="15" stroke-linecap="round"></line></g></g></g></svg>
|
|
29
|
+
`,he=`<?xml version="1.0" encoding="UTF-8"?>
|
|
30
|
+
<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">
|
|
31
|
+
<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: #fff; stroke: #000; stroke-linejoin: round; stroke-width: 20px;"></path>
|
|
32
|
+
<g id="Waffle_Cross-Hatch" data-name="Waffle Cross-Hatch">
|
|
33
|
+
<path d="M261.93,482.48h0c15.03-15.03,4.46-40.72-16.79-40.83h0c-21.37-.11-32.14,25.72-17.03,40.83h0c9.34,9.34,24.48,9.34,33.82,0Z" style="fill: rgb(0, 0, 0);"></path>
|
|
34
|
+
<path d="M384.85,527.49l-51.82,51.82c-2.24,2.24-2.24,5.86,0,8.1l55.71,55.71c2.24,2.24,5.86,2.24,8.1,0h0c.62-.62,1.08-1.36,1.37-2.19l26.52-77.11c.71-2.07.18-4.36-1.37-5.91l-30.41-30.41c-2.24-2.24-5.86-2.24-8.1,0Z" style="fill: rgb(0, 0, 0);"></path>
|
|
35
|
+
<rect x="274.59" y="463.59" width="84.73" height="95.66" rx="42.36" ry="42.36" transform="translate(-268.79 373.91) rotate(-45)" style="fill: rgb(0, 0, 0);"></rect>
|
|
36
|
+
<rect x="291.06" y="603.84" width="72.24" height="90.24" rx="36.12" ry="36.12" transform="translate(-363.06 421.43) rotate(-45)" style="fill: rgb(0, 0, 0);"></rect>
|
|
37
|
+
<path d="M371.7,684.58l-25.94,25.94c-2.24,2.24-2.24,5.86,0,8.1l12.67,12.67c2.99,2.99,8.09,1.82,9.46-2.19l13.28-38.61c1.97-5.74-5.17-10.2-9.46-5.91Z" style="fill: rgb(0, 0, 0);"></path>
|
|
38
|
+
<path d="M159.42,564.14l2.73,6.83c1.52,3.82,6.46,4.83,9.37,1.93l2.05-2.05c2.24-2.24,2.24-5.86,0-8.1l-4.78-4.78c-4.4-4.4-11.67.39-9.37,6.17Z" style="fill: rgb(0, 0, 0);"></path>
|
|
39
|
+
<path d="M243.92,633.11l-48.65-48.65c-5.24-5.24-13.74-5.24-18.99,0h0c-3.8,3.8-4.97,9.49-2.98,14.47l27.77,69.54c3.58,8.95,15.14,11.33,21.96,4.51l20.89-20.89c5.24-5.24,5.24-13.74,0-18.99Z" style="fill: rgb(0, 0, 0);"></path>
|
|
40
|
+
<path d="M211.32,533.1h0c14.11-14.11,14.11-36.98,0-51.08l-34.94-34.94c-.72-.72-.72-1.89,0-2.62h0c1.16-1.16.34-3.15-1.3-3.16l-11.23-.06c-25.62-.13-43.23,25.72-33.73,49.51l5.37,13.45c1.82,4.55,4.54,8.68,8,12.15l16.74,16.74c14.11,14.11,36.98,14.11,51.08,0Z" style="fill: rgb(0, 0, 0);"></path>
|
|
41
|
+
<path d="M263.74,792.53h0c-5.69,5.69-7.45,14.23-4.46,21.71l22.5,56.36c6.92,17.34,31.68,16.74,37.75-.92l8.66-25.2c2.5-7.28.64-15.35-4.8-20.79l-31.17-31.17c-7.87-7.87-20.62-7.87-28.48,0Z" style="fill: rgb(0, 0, 0);"></path>
|
|
42
|
+
<path d="M392.94,503.07l40.81-40.81c2.24-2.24,5.86-2.24,8.1,0l.06.06c2.24,2.24,2.24,5.86,0,8.1l-40.81,40.81c-2.24,2.24-2.24,5.86,0,8.1l22.48,22.48c2.99,2.99,8.09,1.82,9.46-2.19l30.71-89.32c1.27-3.71-1.47-7.57-5.39-7.59l-120.63-.6c-5.11-.03-7.69,6.16-4.08,9.77l51.18,51.18c2.24,2.24,5.86,2.24,8.1,0Z" style="fill: rgb(0, 0, 0);"></path>
|
|
43
|
+
<rect x="217.18" y="527.25" width="72.24" height="95.66" rx="36.12" ry="36.12" transform="translate(-332.45 347.55) rotate(-45)" style="fill: rgb(0, 0, 0);"></rect>
|
|
44
|
+
<path d="M350.28,739.46h0c-9.24-9.24-24.22-9.24-33.46,0l-13.94,13.94c-9.24,9.24-9.24,24.22,0,33.46l6.81,6.81c12.37,12.37,33.42,7.5,39.1-9.04l7.13-20.75c2.94-8.55.75-18.03-5.64-24.42Z" style="fill: rgb(0, 0, 0);"></path>
|
|
45
|
+
<path d="M234.18,749.12l13.2,33.06c1.52,3.82,6.46,4.83,9.37,1.93l9.93-9.93c2.24-2.24,2.24-5.86,0-8.1l-23.13-23.13c-4.4-4.4-11.67.39-9.37,6.17Z" style="fill: rgb(0, 0, 0);"></path>
|
|
46
|
+
<rect x="236.26" y="661.25" width="67.04" height="90.24" rx="33.52" ry="33.52" transform="translate(-420.46 397.65) rotate(-45)" style="fill: rgb(0, 0, 0);"></rect>
|
|
47
|
+
</g>
|
|
48
|
+
<ellipse id="Cone_Top" data-name="Cone Top" cx="288.37" cy="404.38" rx="182.34" ry="67.01" style="fill: #fff; stroke: #000; stroke-miterlimit: 10; stroke-width: 20px;"></ellipse>
|
|
49
|
+
</g><g id="Right_Eye" data-name="Right Eye">
|
|
50
|
+
<circle id="Left_Eye_Outline" data-name="Left Eye Outline" cx="383.4" cy="216.12" r="64.78" style="fill: #fff; stroke: #000; stroke-miterlimit: 10; stroke-width: 6px;"></circle>
|
|
51
|
+
|
|
52
|
+
</g><g id="Left_Eye" data-name="Left Eye">
|
|
53
|
+
<circle id="Right_Eye_Outline" data-name="Right Eye Outline" cx="175.1" cy="250.34" r="64.78" style="fill: #fff; stroke: #000; stroke-miterlimit: 10; stroke-width: 6px;"></circle>
|
|
54
|
+
|
|
55
|
+
</g><g><line x1="351.01" y1="183.73000000000002" x2="415.78999999999996" y2="248.51" stroke="#000" stroke-width="15" stroke-linecap="round"></line><line x1="351.01" y1="248.51" x2="415.78999999999996" y2="183.73000000000002" stroke="#000" stroke-width="15" stroke-linecap="round"></line></g><g><line x1="142.70999999999998" y1="217.95" x2="207.49" y2="282.73" stroke="#000" stroke-width="15" stroke-linecap="round"></line><line x1="142.70999999999998" y1="282.73" x2="207.49" y2="217.95" stroke="#000" stroke-width="15" stroke-linecap="round"></line></g></g></g></svg>
|
|
56
|
+
`,C=`<?xml version="1.0" encoding="UTF-8"?>
|
|
57
|
+
<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">
|
|
58
|
+
<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;"/>
|
|
59
|
+
<g id="Waffle_Cross-Hatch" data-name="Waffle Cross-Hatch">
|
|
60
|
+
<path d="M261.93,482.48h0c15.03-15.03,4.46-40.72-16.79-40.83h0c-21.37-.11-32.14,25.72-17.03,40.83h0c9.34,9.34,24.48,9.34,33.82,0Z" style="fill: rgb(255, 255, 255);"/>
|
|
61
|
+
<path d="M384.85,527.49l-51.82,51.82c-2.24,2.24-2.24,5.86,0,8.1l55.71,55.71c2.24,2.24,5.86,2.24,8.1,0h0c.62-.62,1.08-1.36,1.37-2.19l26.52-77.11c.71-2.07.18-4.36-1.37-5.91l-30.41-30.41c-2.24-2.24-5.86-2.24-8.1,0Z" style="fill: rgb(255, 255, 255);"/>
|
|
62
|
+
<rect x="274.59" y="463.59" width="84.73" height="95.66" rx="42.36" ry="42.36" transform="translate(-268.79 373.91) rotate(-45)" style="fill: rgb(255, 255, 255);"/>
|
|
63
|
+
<rect x="291.06" y="603.84" width="72.24" height="90.24" rx="36.12" ry="36.12" transform="translate(-363.06 421.43) rotate(-45)" style="fill: rgb(255, 255, 255);"/>
|
|
64
|
+
<path d="M371.7,684.58l-25.94,25.94c-2.24,2.24-2.24,5.86,0,8.1l12.67,12.67c2.99,2.99,8.09,1.82,9.46-2.19l13.28-38.61c1.97-5.74-5.17-10.2-9.46-5.91Z" style="fill: rgb(255, 255, 255);"/>
|
|
65
|
+
<path d="M159.42,564.14l2.73,6.83c1.52,3.82,6.46,4.83,9.37,1.93l2.05-2.05c2.24-2.24,2.24-5.86,0-8.1l-4.78-4.78c-4.4-4.4-11.67.39-9.37,6.17Z" style="fill: rgb(255, 255, 255);"/>
|
|
66
|
+
<path d="M243.92,633.11l-48.65-48.65c-5.24-5.24-13.74-5.24-18.99,0h0c-3.8,3.8-4.97,9.49-2.98,14.47l27.77,69.54c3.58,8.95,15.14,11.33,21.96,4.51l20.89-20.89c5.24-5.24,5.24-13.74,0-18.99Z" style="fill: rgb(255, 255, 255);"/>
|
|
67
|
+
<path d="M211.32,533.1h0c14.11-14.11,14.11-36.98,0-51.08l-34.94-34.94c-.72-.72-.72-1.89,0-2.62h0c1.16-1.16.34-3.15-1.3-3.16l-11.23-.06c-25.62-.13-43.23,25.72-33.73,49.51l5.37,13.45c1.82,4.55,4.54,8.68,8,12.15l16.74,16.74c14.11,14.11,36.98,14.11,51.08,0Z" style="fill: rgb(255, 255, 255);"/>
|
|
68
|
+
<path d="M263.74,792.53h0c-5.69,5.69-7.45,14.23-4.46,21.71l22.5,56.36c6.92,17.34,31.68,16.74,37.75-.92l8.66-25.2c2.5-7.28.64-15.35-4.8-20.79l-31.17-31.17c-7.87-7.87-20.62-7.87-28.48,0Z" style="fill: rgb(255, 255, 255);"/>
|
|
69
|
+
<path d="M392.94,503.07l40.81-40.81c2.24-2.24,5.86-2.24,8.1,0l.06.06c2.24,2.24,2.24,5.86,0,8.1l-40.81,40.81c-2.24,2.24-2.24,5.86,0,8.1l22.48,22.48c2.99,2.99,8.09,1.82,9.46-2.19l30.71-89.32c1.27-3.71-1.47-7.57-5.39-7.59l-120.63-.6c-5.11-.03-7.69,6.16-4.08,9.77l51.18,51.18c2.24,2.24,5.86,2.24,8.1,0Z" style="fill: rgb(255, 255, 255);"/>
|
|
70
|
+
<rect x="217.18" y="527.25" width="72.24" height="95.66" rx="36.12" ry="36.12" transform="translate(-332.45 347.55) rotate(-45)" style="fill: rgb(255, 255, 255);"/>
|
|
71
|
+
<path d="M350.28,739.46h0c-9.24-9.24-24.22-9.24-33.46,0l-13.94,13.94c-9.24,9.24-9.24,24.22,0,33.46l6.81,6.81c12.37,12.37,33.42,7.5,39.1-9.04l7.13-20.75c2.94-8.55.75-18.03-5.64-24.42Z" style="fill: rgb(255, 255, 255);"/>
|
|
72
|
+
<path d="M234.18,749.12l13.2,33.06c1.52,3.82,6.46,4.83,9.37,1.93l9.93-9.93c2.24-2.24,2.24-5.86,0-8.1l-23.13-23.13c-4.4-4.4-11.67.39-9.37,6.17Z" style="fill: rgb(255, 255, 255);"/>
|
|
73
|
+
<rect x="236.26" y="661.25" width="67.04" height="90.24" rx="33.52" ry="33.52" transform="translate(-420.46 397.65) rotate(-45)" style="fill: rgb(255, 255, 255);"/>
|
|
74
|
+
</g>
|
|
75
|
+
<ellipse id="Cone_Top" data-name="Cone Top" cx="288.37" cy="404.38" rx="182.34" ry="67.01" style="fill: rgb(34, 34, 34); stroke: rgb(255, 255, 255); stroke-miterlimit: 10; stroke-width: 20px;"/>
|
|
76
|
+
</g><g id="Right_Eye" data-name="Right Eye">
|
|
77
|
+
<circle id="Left_Eye_Outline" data-name="Left Eye Outline" cx="383.4" cy="216.12" r="64.78" style="fill: rgb(0, 0, 0); stroke: rgb(255, 255, 255); stroke-miterlimit: 10; stroke-width: 6px;"/>
|
|
78
|
+
<path id="Right_Pupil" data-name="Right Pupil" d="M402.83,217.38c-.13,1.98-.7,3.97-1.76,5.81-3.71,6.43-11.93,8.63-18.36,4.92-6.43-3.71-8.63-11.93-4.92-18.36,2.32-4.02,6.4-6.38,10.7-6.69-3.8-1.78-8.03-2.8-12.51-2.8-16.37,0-29.64,13.27-29.64,29.64s13.27,29.64,29.64,29.64,29.64-13.27,29.64-29.64c0-4.48-1.02-8.72-2.81-12.53Z" style="fill: rgb(255, 255, 255);"/>
|
|
79
|
+
</g><g id="Left_Eye" data-name="Left Eye">
|
|
80
|
+
<circle id="Right_Eye_Outline" data-name="Right Eye Outline" cx="175.1" cy="250.34" r="64.78" style="fill: rgb(0, 0, 0); stroke: rgb(255, 255, 255); stroke-miterlimit: 10; stroke-width: 6px;"/>
|
|
81
|
+
<path id="Left_Pupil" data-name="Left Pupil" d="M213.74,233.23c-.13,1.98-.7,3.97-1.76,5.81-3.71,6.43-11.93,8.63-18.36,4.92-6.43-3.71-8.63-11.93-4.92-18.36,2.32-4.02,6.4-6.38,10.7-6.69-3.8-1.78-8.03-2.8-12.51-2.8-16.37,0-29.64,13.27-29.64,29.64s13.27,29.64,29.64,29.64,29.64-13.27,29.64-29.64c0-4.48-1.02-8.72-2.81-12.53Z" style="fill: rgb(255, 255, 255);"/>
|
|
82
|
+
</g></g></g></svg>`,ge=`<?xml version="1.0" encoding="UTF-8"?>
|
|
83
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%"><g transform="translate(191.47118749999993, 12.583024999999978) scale(1.1115000000000002)"><g transform="translate(0, 0)"><g id="Cone">
|
|
84
|
+
<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;"/>
|
|
85
|
+
<g id="Waffle_Cross-Hatch" data-name="Waffle Cross-Hatch">
|
|
86
|
+
<path d="M261.93,482.48h0c15.03-15.03,4.46-40.72-16.79-40.83h0c-21.37-.11-32.14,25.72-17.03,40.83h0c9.34,9.34,24.48,9.34,33.82,0Z" style="fill: rgb(255, 255, 255);"/>
|
|
87
|
+
<path d="M384.85,527.49l-51.82,51.82c-2.24,2.24-2.24,5.86,0,8.1l55.71,55.71c2.24,2.24,5.86,2.24,8.1,0h0c.62-.62,1.08-1.36,1.37-2.19l26.52-77.11c.71-2.07.18-4.36-1.37-5.91l-30.41-30.41c-2.24-2.24-5.86-2.24-8.1,0Z" style="fill: rgb(255, 255, 255);"/>
|
|
88
|
+
<rect x="274.59" y="463.59" width="84.73" height="95.66" rx="42.36" ry="42.36" transform="translate(-268.79 373.91) rotate(-45)" style="fill: rgb(255, 255, 255);"/>
|
|
89
|
+
<rect x="291.06" y="603.84" width="72.24" height="90.24" rx="36.12" ry="36.12" transform="translate(-363.06 421.43) rotate(-45)" style="fill: rgb(255, 255, 255);"/>
|
|
90
|
+
<path d="M371.7,684.58l-25.94,25.94c-2.24,2.24-2.24,5.86,0,8.1l12.67,12.67c2.99,2.99,8.09,1.82,9.46-2.19l13.28-38.61c1.97-5.74-5.17-10.2-9.46-5.91Z" style="fill: rgb(255, 255, 255);"/>
|
|
91
|
+
<path d="M159.42,564.14l2.73,6.83c1.52,3.82,6.46,4.83,9.37,1.93l2.05-2.05c2.24-2.24,2.24-5.86,0-8.1l-4.78-4.78c-4.4-4.4-11.67.39-9.37,6.17Z" style="fill: rgb(255, 255, 255);"/>
|
|
92
|
+
<path d="M243.92,633.11l-48.65-48.65c-5.24-5.24-13.74-5.24-18.99,0h0c-3.8,3.8-4.97,9.49-2.98,14.47l27.77,69.54c3.58,8.95,15.14,11.33,21.96,4.51l20.89-20.89c5.24-5.24,5.24-13.74,0-18.99Z" style="fill: rgb(255, 255, 255);"/>
|
|
93
|
+
<path d="M211.32,533.1h0c14.11-14.11,14.11-36.98,0-51.08l-34.94-34.94c-.72-.72-.72-1.89,0-2.62h0c1.16-1.16.34-3.15-1.3-3.16l-11.23-.06c-25.62-.13-43.23,25.72-33.73,49.51l5.37,13.45c1.82,4.55,4.54,8.68,8,12.15l16.74,16.74c14.11,14.11,36.98,14.11,51.08,0Z" style="fill: rgb(255, 255, 255);"/>
|
|
94
|
+
<path d="M263.74,792.53h0c-5.69,5.69-7.45,14.23-4.46,21.71l22.5,56.36c6.92,17.34,31.68,16.74,37.75-.92l8.66-25.2c2.5-7.28.64-15.35-4.8-20.79l-31.17-31.17c-7.87-7.87-20.62-7.87-28.48,0Z" style="fill: rgb(255, 255, 255);"/>
|
|
95
|
+
<path d="M392.94,503.07l40.81-40.81c2.24-2.24,5.86-2.24,8.1,0l.06.06c2.24,2.24,2.24,5.86,0,8.1l-40.81,40.81c-2.24,2.24-2.24,5.86,0,8.1l22.48,22.48c2.99,2.99,8.09,1.82,9.46-2.19l30.71-89.32c1.27-3.71-1.47-7.57-5.39-7.59l-120.63-.6c-5.11-.03-7.69,6.16-4.08,9.77l51.18,51.18c2.24,2.24,5.86,2.24,8.1,0Z" style="fill: rgb(255, 255, 255);"/>
|
|
96
|
+
<rect x="217.18" y="527.25" width="72.24" height="95.66" rx="36.12" ry="36.12" transform="translate(-332.45 347.55) rotate(-45)" style="fill: rgb(255, 255, 255);"/>
|
|
97
|
+
<path d="M350.28,739.46h0c-9.24-9.24-24.22-9.24-33.46,0l-13.94,13.94c-9.24,9.24-9.24,24.22,0,33.46l6.81,6.81c12.37,12.37,33.42,7.5,39.1-9.04l7.13-20.75c2.94-8.55.75-18.03-5.64-24.42Z" style="fill: rgb(255, 255, 255);"/>
|
|
98
|
+
<path d="M234.18,749.12l13.2,33.06c1.52,3.82,6.46,4.83,9.37,1.93l9.93-9.93c2.24-2.24,2.24-5.86,0-8.1l-23.13-23.13c-4.4-4.4-11.67.39-9.37,6.17Z" style="fill: rgb(255, 255, 255);"/>
|
|
99
|
+
<rect x="236.26" y="661.25" width="67.04" height="90.24" rx="33.52" ry="33.52" transform="translate(-420.46 397.65) rotate(-45)" style="fill: rgb(255, 255, 255);"/>
|
|
100
|
+
</g>
|
|
101
|
+
<ellipse id="Cone_Top" data-name="Cone Top" cx="288.37" cy="404.38" rx="182.34" ry="67.01" style="fill: rgb(34, 34, 34); stroke: rgb(255, 255, 255); stroke-miterlimit: 10; stroke-width: 20px;"/>
|
|
102
|
+
</g></g><g transform="translate(288, 250) rotate(0) scale(1) translate(-288, -250)"><path id="Scoop_Outline" data-name="Scoop Outline" d="M566.75,340.67c0-29.85-12.97-56.87-33.96-76.47,4.8-9.98,7.44-20.71,7.44-31.9,0-38.29-30.62-71.33-74.92-86.77.33-3.07.51-6.17.51-9.3,0-69.72-84.29-126.24-188.26-126.24s-188.26,56.52-188.26,126.24c0,4,.29,7.95.83,11.86-34.94,15.4-58.48,44.25-58.48,77.34,0,18.21,7.15,35.15,19.39,49.26-25.1,19.88-41.05,49.47-41.05,82.54,0,59.85,52.15,108.37,116.49,108.37,10.83,0,21.3-1.4,31.26-3.98,31.42,41.91,83.55,69.34,142.55,69.34,64.73,0,121.2-33,151.11-81.94,63.8-.57,115.34-48.85,115.34-108.34Z" style="fill: rgb(34, 34, 34); stroke: rgb(255, 255, 255); stroke-miterlimit: 10; stroke-width: 20px;"/><g id="Right_Eye" data-name="Right Eye">
|
|
103
|
+
<circle id="Left_Eye_Outline" data-name="Left Eye Outline" cx="383.4" cy="216.12" r="64.78" style="fill: rgb(0, 0, 0); stroke: rgb(255, 255, 255); stroke-miterlimit: 10; stroke-width: 6px;"/>
|
|
104
|
+
<path id="Right_Pupil" data-name="Right Pupil" d="M402.83,217.38c-.13,1.98-.7,3.97-1.76,5.81-3.71,6.43-11.93,8.63-18.36,4.92-6.43-3.71-8.63-11.93-4.92-18.36,2.32-4.02,6.4-6.38,10.7-6.69-3.8-1.78-8.03-2.8-12.51-2.8-16.37,0-29.64,13.27-29.64,29.64s13.27,29.64,29.64,29.64,29.64-13.27,29.64-29.64c0-4.48-1.02-8.72-2.81-12.53Z" style="fill: rgb(255, 255, 255);"/>
|
|
105
|
+
</g><g id="Left_Eye" data-name="Left Eye">
|
|
106
|
+
<circle id="Right_Eye_Outline" data-name="Right Eye Outline" cx="175.1" cy="250.34" r="64.78" style="fill: rgb(0, 0, 0); stroke: rgb(255, 255, 255); stroke-miterlimit: 10; stroke-width: 6px;"/>
|
|
107
|
+
<path id="Left_Pupil" data-name="Left Pupil" d="M213.74,233.23c-.13,1.98-.7,3.97-1.76,5.81-3.71,6.43-11.93,8.63-18.36,4.92-6.43-3.71-8.63-11.93-4.92-18.36,2.32-4.02,6.4-6.38,10.7-6.69-3.8-1.78-8.03-2.8-12.51-2.8-16.37,0-29.64,13.27-29.64,29.64s13.27,29.64,29.64,29.64,29.64-13.27,29.64-29.64c0-4.48-1.02-8.72-2.81-12.53Z" style="fill: rgb(255, 255, 255);"/>
|
|
108
|
+
</g></g></g></svg>`,w=`<?xml version="1.0" encoding="UTF-8"?>
|
|
109
|
+
<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">
|
|
110
|
+
<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: #fff; stroke: #000; stroke-linejoin: round; stroke-width: 20px;"/>
|
|
111
|
+
<g id="Waffle_Cross-Hatch" data-name="Waffle Cross-Hatch">
|
|
112
|
+
<path d="M261.93,482.48h0c15.03-15.03,4.46-40.72-16.79-40.83h0c-21.37-.11-32.14,25.72-17.03,40.83h0c9.34,9.34,24.48,9.34,33.82,0Z" style="fill: rgb(0, 0, 0);"/>
|
|
113
|
+
<path d="M384.85,527.49l-51.82,51.82c-2.24,2.24-2.24,5.86,0,8.1l55.71,55.71c2.24,2.24,5.86,2.24,8.1,0h0c.62-.62,1.08-1.36,1.37-2.19l26.52-77.11c.71-2.07.18-4.36-1.37-5.91l-30.41-30.41c-2.24-2.24-5.86-2.24-8.1,0Z" style="fill: rgb(0, 0, 0);"/>
|
|
114
|
+
<rect x="274.59" y="463.59" width="84.73" height="95.66" rx="42.36" ry="42.36" transform="translate(-268.79 373.91) rotate(-45)" style="fill: rgb(0, 0, 0);"/>
|
|
115
|
+
<rect x="291.06" y="603.84" width="72.24" height="90.24" rx="36.12" ry="36.12" transform="translate(-363.06 421.43) rotate(-45)" style="fill: rgb(0, 0, 0);"/>
|
|
116
|
+
<path d="M371.7,684.58l-25.94,25.94c-2.24,2.24-2.24,5.86,0,8.1l12.67,12.67c2.99,2.99,8.09,1.82,9.46-2.19l13.28-38.61c1.97-5.74-5.17-10.2-9.46-5.91Z" style="fill: rgb(0, 0, 0);"/>
|
|
117
|
+
<path d="M159.42,564.14l2.73,6.83c1.52,3.82,6.46,4.83,9.37,1.93l2.05-2.05c2.24-2.24,2.24-5.86,0-8.1l-4.78-4.78c-4.4-4.4-11.67.39-9.37,6.17Z" style="fill: rgb(0, 0, 0);"/>
|
|
118
|
+
<path d="M243.92,633.11l-48.65-48.65c-5.24-5.24-13.74-5.24-18.99,0h0c-3.8,3.8-4.97,9.49-2.98,14.47l27.77,69.54c3.58,8.95,15.14,11.33,21.96,4.51l20.89-20.89c5.24-5.24,5.24-13.74,0-18.99Z" style="fill: rgb(0, 0, 0);"/>
|
|
119
|
+
<path d="M211.32,533.1h0c14.11-14.11,14.11-36.98,0-51.08l-34.94-34.94c-.72-.72-.72-1.89,0-2.62h0c1.16-1.16.34-3.15-1.3-3.16l-11.23-.06c-25.62-.13-43.23,25.72-33.73,49.51l5.37,13.45c1.82,4.55,4.54,8.68,8,12.15l16.74,16.74c14.11,14.11,36.98,14.11,51.08,0Z" style="fill: rgb(0, 0, 0);"/>
|
|
120
|
+
<path d="M263.74,792.53h0c-5.69,5.69-7.45,14.23-4.46,21.71l22.5,56.36c6.92,17.34,31.68,16.74,37.75-.92l8.66-25.2c2.5-7.28.64-15.35-4.8-20.79l-31.17-31.17c-7.87-7.87-20.62-7.87-28.48,0Z" style="fill: rgb(0, 0, 0);"/>
|
|
121
|
+
<path d="M392.94,503.07l40.81-40.81c2.24-2.24,5.86-2.24,8.1,0l.06.06c2.24,2.24,2.24,5.86,0,8.1l-40.81,40.81c-2.24,2.24-2.24,5.86,0,8.1l22.48,22.48c2.99,2.99,8.09,1.82,9.46-2.19l30.71-89.32c1.27-3.71-1.47-7.57-5.39-7.59l-120.63-.6c-5.11-.03-7.69,6.16-4.08,9.77l51.18,51.18c2.24,2.24,5.86,2.24,8.1,0Z" style="fill: rgb(0, 0, 0);"/>
|
|
122
|
+
<rect x="217.18" y="527.25" width="72.24" height="95.66" rx="36.12" ry="36.12" transform="translate(-332.45 347.55) rotate(-45)" style="fill: rgb(0, 0, 0);"/>
|
|
123
|
+
<path d="M350.28,739.46h0c-9.24-9.24-24.22-9.24-33.46,0l-13.94,13.94c-9.24,9.24-9.24,24.22,0,33.46l6.81,6.81c12.37,12.37,33.42,7.5,39.1-9.04l7.13-20.75c2.94-8.55.75-18.03-5.64-24.42Z" style="fill: rgb(0, 0, 0);"/>
|
|
124
|
+
<path d="M234.18,749.12l13.2,33.06c1.52,3.82,6.46,4.83,9.37,1.93l9.93-9.93c2.24-2.24,2.24-5.86,0-8.1l-23.13-23.13c-4.4-4.4-11.67.39-9.37,6.17Z" style="fill: rgb(0, 0, 0);"/>
|
|
125
|
+
<rect x="236.26" y="661.25" width="67.04" height="90.24" rx="33.52" ry="33.52" transform="translate(-420.46 397.65) rotate(-45)" style="fill: rgb(0, 0, 0);"/>
|
|
126
|
+
</g>
|
|
127
|
+
<ellipse id="Cone_Top" data-name="Cone Top" cx="288.37" cy="404.38" rx="182.34" ry="67.01" style="fill: #fff; stroke: #000; stroke-miterlimit: 10; stroke-width: 20px;"/>
|
|
128
|
+
</g><g id="Right_Eye" data-name="Right Eye">
|
|
129
|
+
<circle id="Left_Eye_Outline" data-name="Left Eye Outline" cx="383.4" cy="216.12" r="64.78" style="fill: #fff; stroke: #000; stroke-miterlimit: 10; stroke-width: 6px;"/>
|
|
130
|
+
<path id="Right_Pupil" data-name="Right Pupil" d="M402.83,217.38c-.13,1.98-.7,3.97-1.76,5.81-3.71,6.43-11.93,8.63-18.36,4.92-6.43-3.71-8.63-11.93-4.92-18.36,2.32-4.02,6.4-6.38,10.7-6.69-3.8-1.78-8.03-2.8-12.51-2.8-16.37,0-29.64,13.27-29.64,29.64s13.27,29.64,29.64,29.64,29.64-13.27,29.64-29.64c0-4.48-1.02-8.72-2.81-12.53Z" style="fill: rgb(0, 0, 0);"/>
|
|
131
|
+
</g><g id="Left_Eye" data-name="Left Eye">
|
|
132
|
+
<circle id="Right_Eye_Outline" data-name="Right Eye Outline" cx="175.1" cy="250.34" r="64.78" style="fill: #fff; stroke: #000; stroke-miterlimit: 10; stroke-width: 6px;"/>
|
|
133
|
+
<path id="Left_Pupil" data-name="Left Pupil" d="M213.74,233.23c-.13,1.98-.7,3.97-1.76,5.81-3.71,6.43-11.93,8.63-18.36,4.92-6.43-3.71-8.63-11.93-4.92-18.36,2.32-4.02,6.4-6.38,10.7-6.69-3.8-1.78-8.03-2.8-12.51-2.8-16.37,0-29.64,13.27-29.64,29.64s13.27,29.64,29.64,29.64,29.64-13.27,29.64-29.64c0-4.48-1.02-8.72-2.81-12.53Z" style="fill: rgb(0, 0, 0);"/>
|
|
134
|
+
</g></g></g></svg>`,_e=`<?xml version="1.0" encoding="UTF-8"?>
|
|
135
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%"><g transform="translate(191.47118749999993, 12.583024999999978) scale(1.1115000000000002)"><g transform="translate(0, 0)"><g id="Cone">
|
|
136
|
+
<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: #fff; stroke: #000; stroke-linejoin: round; stroke-width: 20px;"/>
|
|
137
|
+
<g id="Waffle_Cross-Hatch" data-name="Waffle Cross-Hatch">
|
|
138
|
+
<path d="M261.93,482.48h0c15.03-15.03,4.46-40.72-16.79-40.83h0c-21.37-.11-32.14,25.72-17.03,40.83h0c9.34,9.34,24.48,9.34,33.82,0Z" style="fill: rgb(0, 0, 0);"/>
|
|
139
|
+
<path d="M384.85,527.49l-51.82,51.82c-2.24,2.24-2.24,5.86,0,8.1l55.71,55.71c2.24,2.24,5.86,2.24,8.1,0h0c.62-.62,1.08-1.36,1.37-2.19l26.52-77.11c.71-2.07.18-4.36-1.37-5.91l-30.41-30.41c-2.24-2.24-5.86-2.24-8.1,0Z" style="fill: rgb(0, 0, 0);"/>
|
|
140
|
+
<rect x="274.59" y="463.59" width="84.73" height="95.66" rx="42.36" ry="42.36" transform="translate(-268.79 373.91) rotate(-45)" style="fill: rgb(0, 0, 0);"/>
|
|
141
|
+
<rect x="291.06" y="603.84" width="72.24" height="90.24" rx="36.12" ry="36.12" transform="translate(-363.06 421.43) rotate(-45)" style="fill: rgb(0, 0, 0);"/>
|
|
142
|
+
<path d="M371.7,684.58l-25.94,25.94c-2.24,2.24-2.24,5.86,0,8.1l12.67,12.67c2.99,2.99,8.09,1.82,9.46-2.19l13.28-38.61c1.97-5.74-5.17-10.2-9.46-5.91Z" style="fill: rgb(0, 0, 0);"/>
|
|
143
|
+
<path d="M159.42,564.14l2.73,6.83c1.52,3.82,6.46,4.83,9.37,1.93l2.05-2.05c2.24-2.24,2.24-5.86,0-8.1l-4.78-4.78c-4.4-4.4-11.67.39-9.37,6.17Z" style="fill: rgb(0, 0, 0);"/>
|
|
144
|
+
<path d="M243.92,633.11l-48.65-48.65c-5.24-5.24-13.74-5.24-18.99,0h0c-3.8,3.8-4.97,9.49-2.98,14.47l27.77,69.54c3.58,8.95,15.14,11.33,21.96,4.51l20.89-20.89c5.24-5.24,5.24-13.74,0-18.99Z" style="fill: rgb(0, 0, 0);"/>
|
|
145
|
+
<path d="M211.32,533.1h0c14.11-14.11,14.11-36.98,0-51.08l-34.94-34.94c-.72-.72-.72-1.89,0-2.62h0c1.16-1.16.34-3.15-1.3-3.16l-11.23-.06c-25.62-.13-43.23,25.72-33.73,49.51l5.37,13.45c1.82,4.55,4.54,8.68,8,12.15l16.74,16.74c14.11,14.11,36.98,14.11,51.08,0Z" style="fill: rgb(0, 0, 0);"/>
|
|
146
|
+
<path d="M263.74,792.53h0c-5.69,5.69-7.45,14.23-4.46,21.71l22.5,56.36c6.92,17.34,31.68,16.74,37.75-.92l8.66-25.2c2.5-7.28.64-15.35-4.8-20.79l-31.17-31.17c-7.87-7.87-20.62-7.87-28.48,0Z" style="fill: rgb(0, 0, 0);"/>
|
|
147
|
+
<path d="M392.94,503.07l40.81-40.81c2.24-2.24,5.86-2.24,8.1,0l.06.06c2.24,2.24,2.24,5.86,0,8.1l-40.81,40.81c-2.24,2.24-2.24,5.86,0,8.1l22.48,22.48c2.99,2.99,8.09,1.82,9.46-2.19l30.71-89.32c1.27-3.71-1.47-7.57-5.39-7.59l-120.63-.6c-5.11-.03-7.69,6.16-4.08,9.77l51.18,51.18c2.24,2.24,5.86,2.24,8.1,0Z" style="fill: rgb(0, 0, 0);"/>
|
|
148
|
+
<rect x="217.18" y="527.25" width="72.24" height="95.66" rx="36.12" ry="36.12" transform="translate(-332.45 347.55) rotate(-45)" style="fill: rgb(0, 0, 0);"/>
|
|
149
|
+
<path d="M350.28,739.46h0c-9.24-9.24-24.22-9.24-33.46,0l-13.94,13.94c-9.24,9.24-9.24,24.22,0,33.46l6.81,6.81c12.37,12.37,33.42,7.5,39.1-9.04l7.13-20.75c2.94-8.55.75-18.03-5.64-24.42Z" style="fill: rgb(0, 0, 0);"/>
|
|
150
|
+
<path d="M234.18,749.12l13.2,33.06c1.52,3.82,6.46,4.83,9.37,1.93l9.93-9.93c2.24-2.24,2.24-5.86,0-8.1l-23.13-23.13c-4.4-4.4-11.67.39-9.37,6.17Z" style="fill: rgb(0, 0, 0);"/>
|
|
151
|
+
<rect x="236.26" y="661.25" width="67.04" height="90.24" rx="33.52" ry="33.52" transform="translate(-420.46 397.65) rotate(-45)" style="fill: rgb(0, 0, 0);"/>
|
|
152
|
+
</g>
|
|
153
|
+
<ellipse id="Cone_Top" data-name="Cone Top" cx="288.37" cy="404.38" rx="182.34" ry="67.01" style="fill: #fff; stroke: #000; stroke-miterlimit: 10; stroke-width: 20px;"/>
|
|
154
|
+
</g></g><g transform="translate(288, 250) rotate(0) scale(1) translate(-288, -250)"><path id="Scoop_Outline" data-name="Scoop Outline" d="M566.75,340.67c0-29.85-12.97-56.87-33.96-76.47,4.8-9.98,7.44-20.71,7.44-31.9,0-38.29-30.62-71.33-74.92-86.77.33-3.07.51-6.17.51-9.3,0-69.72-84.29-126.24-188.26-126.24s-188.26,56.52-188.26,126.24c0,4,.29,7.95.83,11.86-34.94,15.4-58.48,44.25-58.48,77.34,0,18.21,7.15,35.15,19.39,49.26-25.1,19.88-41.05,49.47-41.05,82.54,0,59.85,52.15,108.37,116.49,108.37,10.83,0,21.3-1.4,31.26-3.98,31.42,41.91,83.55,69.34,142.55,69.34,64.73,0,121.2-33,151.11-81.94,63.8-.57,115.34-48.85,115.34-108.34Z" style="fill: #fff; stroke: #000; stroke-miterlimit: 10; stroke-width: 20px;"/><g id="Right_Eye" data-name="Right Eye">
|
|
155
|
+
<circle id="Left_Eye_Outline" data-name="Left Eye Outline" cx="383.4" cy="216.12" r="64.78" style="fill: #fff; stroke: #000; stroke-miterlimit: 10; stroke-width: 6px;"/>
|
|
156
|
+
<path id="Right_Pupil" data-name="Right Pupil" d="M402.83,217.38c-.13,1.98-.7,3.97-1.76,5.81-3.71,6.43-11.93,8.63-18.36,4.92-6.43-3.71-8.63-11.93-4.92-18.36,2.32-4.02,6.4-6.38,10.7-6.69-3.8-1.78-8.03-2.8-12.51-2.8-16.37,0-29.64,13.27-29.64,29.64s13.27,29.64,29.64,29.64,29.64-13.27,29.64-29.64c0-4.48-1.02-8.72-2.81-12.53Z" style="fill: rgb(0, 0, 0);"/>
|
|
157
|
+
</g><g id="Left_Eye" data-name="Left Eye">
|
|
158
|
+
<circle id="Right_Eye_Outline" data-name="Right Eye Outline" cx="175.1" cy="250.34" r="64.78" style="fill: #fff; stroke: #000; stroke-miterlimit: 10; stroke-width: 6px;"/>
|
|
159
|
+
<path id="Left_Pupil" data-name="Left Pupil" d="M213.74,233.23c-.13,1.98-.7,3.97-1.76,5.81-3.71,6.43-11.93,8.63-18.36,4.92-6.43-3.71-8.63-11.93-4.92-18.36,2.32-4.02,6.4-6.38,10.7-6.69-3.8-1.78-8.03-2.8-12.51-2.8-16.37,0-29.64,13.27-29.64,29.64s13.27,29.64,29.64,29.64,29.64-13.27,29.64-29.64c0-4.48-1.02-8.72-2.81-12.53Z" style="fill: rgb(0, 0, 0);"/>
|
|
160
|
+
</g></g></g></svg>`;function ve(e,t){typeof customElements>`u`||customElements==null||customElements.get(e)||customElements.define(e,t)}function ye(e,t){for(let n of t)n==null||n===!1||e.append(typeof n==`string`||typeof n==`number`?document.createTextNode(String(n)):n)}function T(e,t,...n){let r=document.createElement(e);if(t)for(let[e,n]of Object.entries(t))n==null||n===!1||(e===`class`?r.className=String(n):r.setAttribute(e,n===!0?``:String(n)));return ye(r,n),r}function be(e){let t=new CSSStyleSheet;return t.replaceSync(e),t}var xe=be(`
|
|
59
161
|
:host {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
:
|
|
67
|
-
|
|
68
|
-
display: inline-grid;
|
|
69
|
-
grid-template-columns: auto 1fr;
|
|
70
|
-
align-items: center;
|
|
71
|
-
gap: 6px;
|
|
72
|
-
padding: 6px 10px;
|
|
73
|
-
height: 30px;
|
|
74
|
-
border-radius: 8px;
|
|
75
|
-
border: 1px solid var(--line);
|
|
76
|
-
background: var(--canvas);
|
|
77
|
-
color: var(--txt-2);
|
|
78
|
-
font-family: var(--ui);
|
|
79
|
-
font-size: 12px;
|
|
80
|
-
line-height: 1;
|
|
81
|
-
cursor: pointer;
|
|
82
|
-
-webkit-appearance: none;
|
|
83
|
-
appearance: none;
|
|
162
|
+
all: initial;
|
|
163
|
+
position: fixed;
|
|
164
|
+
inset: 0;
|
|
165
|
+
display: block;
|
|
166
|
+
pointer-events: none;
|
|
167
|
+
z-index: 2147483647;
|
|
168
|
+
contain: layout style paint;
|
|
169
|
+
font-family: var(--ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);
|
|
84
170
|
}
|
|
85
|
-
|
|
86
|
-
.cue:active { background: var(--ctx); color: var(--canvas); border-color: var(--ctx); }
|
|
87
|
-
.cue:disabled { cursor: default; opacity: 0.45; }
|
|
88
|
-
.cue:disabled:hover { background: var(--canvas); color: var(--txt-2); }
|
|
89
|
-
.glyph { display: grid; place-items: center; pointer-events: none; }
|
|
90
|
-
.glyph svg { display: block; }
|
|
91
|
-
.label { pointer-events: none; }
|
|
92
|
-
`),ce=[{cue:`sent`,label:`Sent`,icon:`send`},{cue:`tool-start`,label:`Tool start`,icon:`play`},{cue:`tool-finish`,label:`Tool finish`,icon:`check`}],le=14;v(`slicc-soundboard`,class extends HTMLElement{#e;#t=null;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[se]}connectedCallback(){this.#i()}get audioContext(){return this.#t}#n(){return typeof AudioContext>`u`?null:((!this.#t||this.#t.state===`closed`)&&(this.#t=new AudioContext),this.#t)}#r(e){let t=this.#n();t&&(t.state===`suspended`&&t.resume(),c(t,e))}#i(){let e=ce.map(({cue:e,label:t,icon:n})=>{let i=r(n,{size:le,part:`icon`}),a=b(`button`,{type:`button`,class:`cue`,part:`button`,"data-cue":e,"aria-label":`Play ${t} cue`,title:`Play ${t} cue`},b(`span`,{class:`glyph`},i),b(`span`,{class:`label`,part:`label`},t));return a.addEventListener(`click`,()=>this.#r(e)),a});this.#e.replaceChildren(...e)}});var ue=`
|
|
93
|
-
slicc-action-card { display: block; }
|
|
171
|
+
*, *::before, *::after { box-sizing: border-box; }
|
|
94
172
|
|
|
95
|
-
/*
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
173
|
+
/* === Floating button — positioned by the corner attribute === */
|
|
174
|
+
.launcher {
|
|
175
|
+
position: absolute;
|
|
176
|
+
width: 44px; height: 44px;
|
|
177
|
+
border: none; border-radius: 9999px;
|
|
178
|
+
background: var(--canvas, #fff); color: var(--ink, #131313);
|
|
179
|
+
box-shadow: 0 2px 8px rgba(0,0,0,.2), 0 0 0 1px rgba(0,0,0,.08);
|
|
180
|
+
cursor: grab;
|
|
181
|
+
display: inline-flex; align-items: center; justify-content: center; gap: 6px;
|
|
182
|
+
pointer-events: auto;
|
|
183
|
+
touch-action: none; user-select: none; -webkit-user-select: none;
|
|
184
|
+
padding: 0; overflow: hidden;
|
|
185
|
+
transition: top 130ms ease, right 130ms ease, bottom 130ms ease, left 130ms ease,
|
|
186
|
+
box-shadow 130ms ease, transform 130ms ease;
|
|
187
|
+
}
|
|
188
|
+
:host([corner="top-left"]) .launcher { top: 18px; left: 18px; }
|
|
189
|
+
:host(:not([corner])) .launcher,
|
|
190
|
+
:host([corner="top-right"]) .launcher { top: 18px; right: 18px; }
|
|
191
|
+
:host([corner="bottom-left"]) .launcher { bottom: 18px; left: 18px; }
|
|
192
|
+
:host([corner="bottom-right"]) .launcher { bottom: 18px; right: 18px; }
|
|
193
|
+
:host([corner="top"]) .launcher { top: 0; left: 50%; transform: translateX(-50%); }
|
|
194
|
+
:host([corner="bottom"]) .launcher { bottom: 0; left: 50%; transform: translateX(-50%); }
|
|
195
|
+
:host([corner="left"]) .launcher { left: 0; top: 50%; transform: translateY(-50%); }
|
|
196
|
+
:host([corner="right"]) .launcher { right: 0; top: 50%; transform: translateY(-50%); }
|
|
197
|
+
:host([dragging]) .launcher { transition: none; cursor: grabbing; }
|
|
198
|
+
.launcher:hover { box-shadow: 0 4px 16px rgba(0,0,0,.3), 0 0 0 1px rgba(0,0,0,.12); }
|
|
199
|
+
.launcher:active { transform: scale(.96); }
|
|
200
|
+
:host([open]) .launcher { box-shadow: 0 4px 16px rgba(0,0,0,.3), 0 0 0 2px var(--ctx, #3562ff); }
|
|
201
|
+
|
|
202
|
+
/* === Sliccy mono logo — three follower-status state-wrappers render
|
|
203
|
+
side-by-side; the host follower-status attribute selects which wrapper is
|
|
204
|
+
visible, and inside each, a color-scheme media query gates the dark vs
|
|
205
|
+
light variant. Absent/invalid attribute falls back to "disconnected" so the
|
|
206
|
+
launcher never starts on the misleading "connected" icon. Matches the
|
|
207
|
+
original electron-overlay logo wrappers. === */
|
|
208
|
+
/* The button is the ONLY interactive surface: every child (the logo wrapper,
|
|
209
|
+
the SVG glyph inside it, and the tab label) is pointer-transparent so the
|
|
210
|
+
whole pill is one click target and the grab cursor never flips to the page
|
|
211
|
+
cursor when hovering the icon. pointer-events inherits, so setting it on
|
|
212
|
+
.logo covers .logo-state / .logo-icon / svg too. */
|
|
213
|
+
.logo, .tab-label { pointer-events: none; }
|
|
214
|
+
.logo-icon { width: 32px; height: 32px; display: block; }
|
|
215
|
+
.logo-icon svg { width: 100%; height: 100%; display: block; }
|
|
216
|
+
.logo-state { display: none; }
|
|
217
|
+
:host(:not([${x}])) .logo-state-disconnected,
|
|
218
|
+
:host([${x}="disconnected"]) .logo-state-disconnected,
|
|
219
|
+
:host([${x}="connected"]) .logo-state-connected,
|
|
220
|
+
:host([${x}="error"]) .logo-state-error { display: contents; }
|
|
221
|
+
.logo-for-dark { display: block; }
|
|
222
|
+
.logo-for-light { display: none; }
|
|
223
|
+
@media (prefers-color-scheme: light) {
|
|
224
|
+
.logo-for-dark { display: none; }
|
|
225
|
+
.logo-for-light { display: block; }
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/* === Tab mode (edge midpoints) — width/height auto, label visible, rounded
|
|
229
|
+
only on the two edges NOT touching the viewport edge. Matches
|
|
230
|
+
electron-overlay.ts lines 230-263. === */
|
|
231
|
+
.tab-label {
|
|
232
|
+
display: none;
|
|
233
|
+
font-size: 12px; font-weight: 700;
|
|
234
|
+
letter-spacing: 0.04em; text-transform: uppercase; white-space: nowrap;
|
|
235
|
+
}
|
|
236
|
+
:host([corner="top"]) .launcher,
|
|
237
|
+
:host([corner="bottom"]) .launcher,
|
|
238
|
+
:host([corner="left"]) .launcher,
|
|
239
|
+
:host([corner="right"]) .launcher {
|
|
240
|
+
width: auto; height: auto;
|
|
241
|
+
border-radius: 0;
|
|
242
|
+
padding: 6px 12px;
|
|
243
|
+
box-shadow: 0 2px 8px rgba(0,0,0,.2);
|
|
244
|
+
}
|
|
245
|
+
:host([corner="top"]) .launcher,
|
|
246
|
+
:host([corner="bottom"]) .launcher { flex-direction: row; }
|
|
247
|
+
:host([corner="left"]) .launcher,
|
|
248
|
+
:host([corner="right"]) .launcher { flex-direction: column; padding: 10px 6px; }
|
|
249
|
+
:host([corner="left"]) .tab-label,
|
|
250
|
+
:host([corner="right"]) .tab-label { writing-mode: vertical-lr; }
|
|
251
|
+
:host([corner="right"]) .tab-label { rotate: 180deg; }
|
|
252
|
+
:host([corner="top"]) .launcher { border-radius: 0 0 10px 10px; }
|
|
253
|
+
:host([corner="bottom"]) .launcher { border-radius: 10px 10px 0 0; }
|
|
254
|
+
:host([corner="left"]) .launcher { border-radius: 0 10px 10px 0; }
|
|
255
|
+
:host([corner="right"]) .launcher { border-radius: 10px 0 0 10px; }
|
|
256
|
+
:host([corner="top"]) .tab-label,
|
|
257
|
+
:host([corner="bottom"]) .tab-label,
|
|
258
|
+
:host([corner="left"]) .tab-label,
|
|
259
|
+
:host([corner="right"]) .tab-label { display: block; }
|
|
260
|
+
:host([corner="top"]) .logo-icon,
|
|
261
|
+
:host([corner="bottom"]) .logo-icon,
|
|
262
|
+
:host([corner="left"]) .logo-icon,
|
|
263
|
+
:host([corner="right"]) .logo-icon { width: 22px; height: 22px; }
|
|
264
|
+
|
|
265
|
+
/* === Sidebar — full-screen overlay with iframe === */
|
|
266
|
+
.backdrop {
|
|
267
|
+
position: absolute; inset: 0;
|
|
268
|
+
background: rgba(0,0,0,.18);
|
|
269
|
+
opacity: 0; pointer-events: none;
|
|
270
|
+
transition: opacity 130ms ease;
|
|
271
|
+
}
|
|
272
|
+
:host([open]) .backdrop { opacity: 1; pointer-events: auto; }
|
|
273
|
+
.sidebar {
|
|
274
|
+
position: absolute; top: 12px; right: 12px; bottom: 12px;
|
|
275
|
+
width: min(440px, calc(100vw - 24px));
|
|
276
|
+
display: flex; flex-direction: column; overflow: hidden;
|
|
277
|
+
background: var(--canvas, #fff); color: var(--ink, #131313);
|
|
278
|
+
border: 1px solid var(--line, rgba(0,0,0,.12));
|
|
279
|
+
border-radius: 16px;
|
|
280
|
+
box-shadow: 0 18px 50px -12px rgba(10,10,10,.35), 0 4px 12px -4px rgba(10,10,10,.18);
|
|
281
|
+
transform: translateX(calc(100% + 28px));
|
|
282
|
+
transition: transform 180ms cubic-bezier(.4,0,.2,1);
|
|
283
|
+
pointer-events: none;
|
|
284
|
+
}
|
|
285
|
+
:host([open]) .sidebar { transform: translateX(0); pointer-events: auto; }
|
|
286
|
+
:host([corner="left"]) .sidebar,
|
|
287
|
+
:host([corner="top-left"]) .sidebar,
|
|
288
|
+
:host([corner="bottom-left"]) .sidebar {
|
|
289
|
+
right: auto; left: 12px;
|
|
290
|
+
transform: translateX(calc(-100% - 28px));
|
|
291
|
+
}
|
|
292
|
+
:host([open][corner="left"]) .sidebar,
|
|
293
|
+
:host([open][corner="top-left"]) .sidebar,
|
|
294
|
+
:host([open][corner="bottom-left"]) .sidebar { transform: translateX(0); }
|
|
295
|
+
:host([corner="top"]) .sidebar { top: 12px; bottom: auto; height: calc(100vh - 24px); transform: translateY(calc(-100% - 28px)); }
|
|
296
|
+
:host([corner="bottom"]) .sidebar { top: auto; bottom: 12px; height: calc(100vh - 24px); transform: translateY(calc(100% + 28px)); }
|
|
297
|
+
:host([open][corner="top"]) .sidebar,
|
|
298
|
+
:host([open][corner="bottom"]) .sidebar { transform: translateY(0); }
|
|
299
|
+
|
|
300
|
+
/* === Drag suppression — while the launcher is being dragged, fully hide the
|
|
301
|
+
sidebar + backdrop so the iframe never repaints under the moving cursor and
|
|
302
|
+
a mid-drag corner change can't slide the panel across the viewport. The
|
|
303
|
+
iframe is only visible when [open] AND not [dragging]. === */
|
|
304
|
+
:host([dragging]) .sidebar,
|
|
305
|
+
:host([dragging]) .backdrop {
|
|
306
|
+
transition: none;
|
|
307
|
+
visibility: hidden;
|
|
308
|
+
pointer-events: none;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
.viewport { position: relative; flex: 1; min-height: 0; background: var(--bg, #f4f4f4); }
|
|
312
|
+
.viewport iframe { border: 0; width: 100%; height: 100%; display: block; }
|
|
313
|
+
.empty {
|
|
314
|
+
position: absolute; inset: 0;
|
|
315
|
+
display: flex; align-items: center; justify-content: center;
|
|
316
|
+
padding: 24px; text-align: center;
|
|
317
|
+
color: var(--txt-3, #717171); font-size: 13px; line-height: 1.5;
|
|
318
|
+
}
|
|
319
|
+
.empty[hidden] { display: none; }
|
|
320
|
+
@media (prefers-reduced-motion: reduce) {
|
|
321
|
+
.launcher, .sidebar, .backdrop { transition: none; }
|
|
322
|
+
}
|
|
323
|
+
`);function Se(e){let t=e.replace(/<\?xml[^?]*\?>\s*/i,``),n=new DOMParser().parseFromString(t,`image/svg+xml`);return document.importNode(n.documentElement,!0)}var Ce=[{state:`disconnected`,darkSvg:C,lightSvg:w},{state:`connected`,darkSvg:ge,lightSvg:_e},{state:`error`,darkSvg:S,lightSvg:he}];function we(){let e=T(`span`,{class:`logo`,part:`logo`});for(let{state:t,darkSvg:n,lightSvg:r}of Ce){let i=T(`div`,{class:`logo-icon logo-for-dark`});i.appendChild(Se(n));let a=T(`div`,{class:`logo-icon logo-for-light`});a.appendChild(Se(r));let o=T(`span`,{class:`logo-state logo-state-${t}`,"aria-hidden":`true`},i,a);e.appendChild(o)}return e}function Te(e,t,n){return Math.min(Math.max(e,t),n)}function Ee(e){try{return ue(e?.localStorage.getItem(oe))}catch{return ae}}function De(e,t){try{e?.localStorage.setItem(oe,t)}catch{}}ve(`slicc-launcher`,class extends HTMLElement{static observedAttributes=[`open`,`corner`,`app-url`,x];#e;#t;#n;#r;#i;#a;#o=``;#s=null;#c=!1;#l=!1;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[xe],this.#u()}connectedCallback(){if(!this.hasAttribute(`corner`)){let e=Ee(this.ownerDocument.defaultView);this.#l=!0,this.setAttribute(`corner`,e),this.#l=!1}this.#f()}attributeChangedCallback(e){if(!this.#l&&(e===`app-url`&&this.#f(),e===`corner`&&De(this.ownerDocument.defaultView,this.corner),e===`follower-status`)){let e=this.getAttribute(x);if(e!==null){let t=de(e);t!==e&&(this.#l=!0,this.setAttribute(x,t),this.#l=!1)}}}get open(){return this.hasAttribute(`open`)}set open(e){this.open!==e&&(this.toggleAttribute(`open`,e),this.#d())}get corner(){return ue(this.getAttribute(`corner`))}set corner(e){let t=ue(e);this.corner===t&&this.hasAttribute(`corner`)||this.setAttribute(`corner`,t)}get appUrl(){return this.getAttribute(`app-url`)?.trim()??``}set appUrl(e){let t=(e??``).trim();t?this.setAttribute(`app-url`,t):this.removeAttribute(`app-url`)}get followerStatus(){return de(this.getAttribute(x))}set followerStatus(e){if(e==null){this.removeAttribute(x);return}let t=de(e);this.getAttribute(`follower-status`)!==t&&this.setAttribute(x,t)}show(){this.open=!0}hide(){this.open=!1}toggle(){this.open=!this.open}#u(){this.#t=T(`button`,{class:`launcher`,part:`launcher`,type:`button`,"aria-label":`Toggle SLICC`},we(),T(`span`,{class:`tab-label`,part:`tab-label`},`SLICC`)),this.#t.addEventListener(`click`,e=>{if(this.#c){this.#c=!1,e.preventDefault(),e.stopImmediatePropagation();return}this.toggle()}),this.#t.addEventListener(`dblclick`,e=>{e.preventDefault(),this.dispatchEvent(new CustomEvent(`slicc-launcher-focus`,{bubbles:!0,composed:!0}))}),this.#t.addEventListener(`pointerdown`,this.#p),this.#t.addEventListener(`pointermove`,this.#m),this.#t.addEventListener(`pointerup`,this.#h),this.#t.addEventListener(`pointercancel`,this.#g),this.#n=T(`div`,{class:`backdrop`,part:`backdrop`}),this.#n.addEventListener(`click`,()=>this.hide()),this.#i=T(`iframe`,{title:`SLICC overlay`}),this.#a=T(`div`,{class:`empty`},`Set the app-url attribute to load SLICC.`);let e=T(`div`,{class:`viewport`},this.#i,this.#a);this.#r=T(`aside`,{class:`sidebar`,part:`sidebar`,"aria-label":`SLICC launcher sidebar`},e),this.#e.replaceChildren(this.#n,this.#r,this.#t)}#d(){this.dispatchEvent(new CustomEvent(`slicc-launcher-toggle`,{detail:{open:this.open},bubbles:!0,composed:!0}))}#f(){let e=this.appUrl;if(this.#a.toggleAttribute(`hidden`,!!e),!e){this.#o&&(this.#o=``,this.#i.removeAttribute(`src`));return}e!==this.#o&&(this.#o=e,this.#i.src=e)}#p=e=>{if(!e.isPrimary||e.button!==0)return;let t=this.#t.getBoundingClientRect();this.#s={pointerId:e.pointerId,startX:e.clientX,startY:e.clientY,startLeft:t.left,startTop:t.top,width:t.width,height:t.height,lastX:e.clientX,lastY:e.clientY,lastTimestamp:e.timeStamp,velocityX:0,velocityY:0,dragging:!1},this.#c=!1,this.#t.setPointerCapture(e.pointerId),e.preventDefault()};#m=e=>{let t=this.#s;if(!t||e.pointerId!==t.pointerId)return;let n=e.clientX-t.startX,r=e.clientY-t.startY,i=Math.hypot(n,r);!t.dragging&&fe(i,0)&&(t.dragging=!0,this.setAttribute(`dragging`,``));let a=Math.max(e.timeStamp-t.lastTimestamp,1),o=(e.clientX-t.lastX)/a,s=(e.clientY-t.lastY)/a;if(t.velocityX=t.velocityX===0?o:t.velocityX*.35+o*.65,t.velocityY=t.velocityY===0?s:t.velocityY*.35+s*.65,t.lastX=e.clientX,t.lastY=e.clientY,t.lastTimestamp=e.timeStamp,!t.dragging)return;let c=Math.max(18,window.innerWidth-t.width-18),l=Math.max(18,window.innerHeight-t.height-18),u=Te(t.startLeft+n,18,c),d=Te(t.startTop+r,18,l);this.#t.style.left=`${u}px`,this.#t.style.top=`${d}px`,this.#t.style.right=`auto`,this.#t.style.bottom=`auto`,e.preventDefault()};#h=e=>{this.#_(e,!0)};#g=e=>{this.#_(e,!1)};#_(e,t){let n=this.#s;if(!n||e.pointerId!==n.pointerId)return;let r=Math.hypot(e.clientX-n.startX,e.clientY-n.startY),i=Math.hypot(n.velocityX,n.velocityY);if(t&&(n.dragging||fe(r,i))){let t=pe({clientX:e.clientX,clientY:e.clientY,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight,velocityXPxPerMs:n.velocityX,velocityYPxPerMs:n.velocityY});this.corner=t,this.dispatchEvent(new CustomEvent(`slicc-launcher-move`,{detail:{corner:t},bubbles:!0,composed:!0})),this.#c=!0,e.preventDefault()}this.#t.hasPointerCapture(e.pointerId)&&this.#t.releasePointerCapture(e.pointerId),this.#s=null,this.removeAttribute(`dragging`),this.#t.style.left=``,this.#t.style.top=``,this.#t.style.right=``,this.#t.style.bottom=``}});function E(e,t){typeof customElements>`u`||customElements==null||customElements.get(e)||customElements.define(e,t)}function D(e,t){for(let n of t)n==null||n===!1||e.append(typeof n==`string`||typeof n==`number`?document.createTextNode(String(n)):n)}function O(e,t,...n){let r=document.createElement(e);if(t)for(let[e,n]of Object.entries(t))n==null||n===!1||(e===`class`?r.className=String(n):r.setAttribute(e,n===!0?``:String(n)));return D(r,n),r}function k(e){let t=new CSSStyleSheet;return t.replaceSync(e),t}var Oe=20,ke=16,Ae=18,je=k(`
|
|
324
|
+
:host{display:block;width:100%;
|
|
325
|
+
--am-accent:var(--accent,#3b63fb);
|
|
326
|
+
--am-accent-subtle:color-mix(in oklab,var(--am-accent) 12%,var(--canvas,#fff));
|
|
327
|
+
--am-sunken:var(--bg,#f3f3f3);
|
|
328
|
+
--am-hover:rgba(0,0,0,0.05);
|
|
329
|
+
font:400 13px var(--ui,"adobe-clean","Inter",system-ui,sans-serif);}
|
|
330
|
+
/* Dark flips via the library's outer scopes (.dark / [data-theme="dark"] / body.dark);
|
|
331
|
+
:host-context reaches the light-DOM ancestor from inside the shadow root. The
|
|
332
|
+
theme attribute is the per-element override. */
|
|
333
|
+
:host-context(.dark),:host-context([data-theme="dark"]),:host([theme="dark"]){
|
|
334
|
+
--am-accent-subtle:color-mix(in oklab,var(--am-accent) 22%,transparent);
|
|
335
|
+
--am-hover:rgba(255,255,255,0.06);
|
|
336
|
+
--am-sunken:var(--bg,#141414);}
|
|
337
|
+
:host([theme="light"]){--am-accent-subtle:color-mix(in oklab,var(--am-accent) 12%,#fff);--am-hover:rgba(0,0,0,0.05);--am-sunken:#f3f3f3;}
|
|
338
|
+
*{box-sizing:border-box;}
|
|
339
|
+
/* .wrap is the positioning anchor; .row stays in flow (toolbar height unchanged),
|
|
340
|
+
.results pops OUT absolutely so the footer band's height never grows when the
|
|
341
|
+
menu opens. */
|
|
342
|
+
.wrap{display:flex;flex-direction:column;position:relative;}
|
|
343
|
+
.row{display:flex;align-items:center;gap:8px;}
|
|
344
|
+
.trigger{flex:0 0 auto;width:32px;height:32px;border:none;border-radius:8px;background:transparent;color:var(--ink,#131313);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .13s ease,color .13s ease;}
|
|
345
|
+
.trigger:hover{background:var(--am-hover);}
|
|
346
|
+
.trigger[aria-expanded="true"]{background:var(--am-accent-subtle);color:var(--am-accent);}
|
|
347
|
+
/* The glyph itself swaps plus -> x; the quarter-turn rides on the swap so the
|
|
348
|
+
open state spins in. The lucide x glyph is symmetric under a 90deg rotation,
|
|
349
|
+
so the rotation is purely motion -- it never corrupts the rendered glyph. */
|
|
350
|
+
.trigger .ti{display:flex;transition:transform .16s ease;}
|
|
351
|
+
.trigger[aria-expanded="true"] .ti{transform:rotate(90deg);}
|
|
352
|
+
.trigger .ti svg{display:block;}
|
|
353
|
+
/* Respect prefers-reduced-motion: hold the static end state, no spin. */
|
|
354
|
+
@media (prefers-reduced-motion: reduce){.trigger .ti{transition:none;}}
|
|
355
|
+
/* the search field slides in beside the +/× — collapsed until open */
|
|
356
|
+
.searchbox{flex:1;min-width:0;position:relative;display:none;}
|
|
357
|
+
:host([data-open]) .searchbox{display:block;}
|
|
358
|
+
.searchbox .si{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--txt-3,#717171);display:flex;pointer-events:none;}
|
|
359
|
+
.searchbox input{width:100%;border:1px solid var(--line,#e1e1e1);background:var(--am-sunken);color:var(--ink,#131313);border-radius:9px;padding:7px 10px 7px 32px;font:inherit;outline:none;}
|
|
360
|
+
.searchbox input:focus{border-color:var(--am-accent);}
|
|
361
|
+
/* results panel pops upward OUT of the footer band, overlaying the chat thread
|
|
362
|
+
above. Absolute positioning keeps the toolbar/inputcard/composer heights
|
|
363
|
+
constant so the chat layout never reflows when the menu opens. */
|
|
364
|
+
.results{position:absolute;left:-4px;right:-4px;bottom:calc(100% + 6px);
|
|
365
|
+
max-height:0;overflow:hidden;opacity:0;pointer-events:none;
|
|
366
|
+
background:var(--canvas,#fff);border:1px solid var(--line,#e1e1e1);border-radius:12px;
|
|
367
|
+
box-shadow:0 -10px 28px -10px rgba(10,10,10,.20),0 -2px 6px -2px rgba(10,10,10,.08);
|
|
368
|
+
transition:max-height .18s ease,opacity .14s ease;z-index:5;}
|
|
369
|
+
:host([data-open]) .results{max-height:300px;overflow-y:auto;opacity:1;pointer-events:auto;padding:6px;}
|
|
370
|
+
.sec{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--txt-3,#717171);font-weight:650;margin:8px 6px 4px;}
|
|
371
|
+
.item{display:flex;align-items:center;gap:10px;width:100%;padding:8px;border-radius:9px;cursor:pointer;text-align:left;color:var(--ink,#131313);}
|
|
372
|
+
.item .ic{flex:0 0 auto;color:var(--txt-2,#505050);display:flex;} .item.quick .ic{color:var(--am-accent);}
|
|
373
|
+
.item .tx{min-width:0;} .item .lb{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;} .item .sb{font-size:11px;color:var(--txt-3,#717171);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
|
|
374
|
+
.item.active,.item:hover{background:var(--am-accent-subtle);}
|
|
375
|
+
.empty{padding:18px 10px;text-align:center;color:var(--txt-3,#717171);font-size:12px;}
|
|
376
|
+
.sep{height:1px;background:var(--line,#e1e1e1);margin:6px 4px;}
|
|
377
|
+
.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;}
|
|
378
|
+
:host([data-dropping]) .drop{display:flex;}
|
|
379
|
+
`),A=[{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 · 2h ago`},{id:`c2`,label:`Refactor the mount backend`,sub:`Frozen · yesterday`},{id:`c3`,label:`Add slash menu (declined)`,sub:`Frozen · 3 days ago`},{id:`c4`,label:`WebGL shader walkthrough`,sub:`Frozen · last week`}]}],Me=[{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}];E(`slicc-add-menu`,class extends HTMLElement{static observedAttributes=[`theme`,`global-drop`];#e;#t=null;#n=null;#r=!1;#i=``;#a=0;#o=[];#s=0;#c;#l;#u;#d;#f;#p;#m=e=>{this.#r&&!this.contains(e.target)&&this.close()};#h=!1;#g=0;#_=!1;#v(e){let t=e.dataTransfer?.types;return!!t&&Array.from(t).includes(`Files`)}#y(){this.#r||(this.#_=!0,this.open()),this.setAttribute(`data-dropping`,``)}#b(){this.#g=0,this.removeAttribute(`data-dropping`),this.#_&&(this.#_=!1,this.close())}#x=e=>{this.#v(e)&&(e.preventDefault(),this.#g++,!e.composedPath().includes(this.#u)&&this.#y())};#S=e=>{this.#v(e)&&e.preventDefault()};#C=e=>{this.#v(e)&&(this.#g=Math.max(0,this.#g-1),this.#g===0&&this.#b())};#w=e=>{if(!this.#v(e))return;if(e.preventDefault(),this.#g=0,e.composedPath().includes(this.#u)){this.#_=!1;return}this.removeAttribute(`data-dropping`),this.#_=!1;let t=e.dataTransfer?.files;if(t?.length)for(let e of Array.from(t))this.#z({kind:`upload`,name:e.name,size:e.size,file:e});this.close()};#T(){this.isConnected&&this.hasAttribute(`global-drop`)?this.#E():this.#D()}#E(){if(this.#h)return;this.#h=!0;let e=this.ownerDocument;e.addEventListener(`dragenter`,this.#x),e.addEventListener(`dragover`,this.#S),e.addEventListener(`dragleave`,this.#C),e.addEventListener(`drop`,this.#w)}#D(){if(!this.#h)return;this.#h=!1;let e=this.ownerDocument;e.removeEventListener(`dragenter`,this.#x),e.removeEventListener(`dragover`,this.#S),e.removeEventListener(`dragleave`,this.#C),e.removeEventListener(`drop`,this.#w),this.#g=0,this.#_=!1}constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[je]}connectedCallback(){this.#O(),this.#T()}disconnectedCallback(){document.removeEventListener(`mousedown`,this.#m),this.#D()}attributeChangedCallback(e){e===`global-drop`&&this.#T()}get results(){return this.#t}set results(e){this.#t=e,this.#r&&this.#N()}get provider(){return this.#n}set provider(e){this.#n=e,this.#r&&this.#N()}get isOpen(){return this.#r}#O(){let e=O(`input`,{type:`file`,multiple:!0,hidden:!0}),t=O(`div`,{class:`body`}),n=O(`div`,{class:`results`,part:`results`,role:`listbox`},t,O(`div`,{class:`drop`},`Drop files to add`)),i=O(`span`,{class:`ti`},r(`plus`,{size:Oe})),a=O(`button`,{class:`trigger`,part:`trigger`,"aria-haspopup":`true`,"aria-expanded":`false`,title:`Add to prompt`},i),o=O(`input`,{type:`text`,placeholder:`Search files, skills, conversations…`}),s=O(`div`,{class:`wrap`,part:`wrap`},n,O(`div`,{class:`row`},a,O(`div`,{class:`searchbox`},O(`span`,{class:`si`},r(`search`,{size:ke})),o)));this.#e.replaceChildren(e,s),this.#c=a,this.#l=i,this.#u=s,this.#d=o,this.#f=t,this.#p=e,this.#k(),this.#N()}#k(){this.#c.addEventListener(`click`,()=>this.toggle()),this.#d.addEventListener(`input`,()=>{this.#i=this.#d.value,this.#a=0,this.#N()}),this.#d.addEventListener(`keydown`,e=>this.#L(e)),this.#p.addEventListener(`change`,()=>{for(let e of Array.from(this.#p.files??[]))this.#z({kind:`upload`,name:e.name,size:e.size,file:e});this.#p.value=``,this.close()});for(let e of[`dragenter`,`dragover`])this.#u.addEventListener(e,e=>{e.preventDefault(),this.#r||this.open(),this.setAttribute(`data-dropping`,``)});for(let e of[`dragleave`,`drop`])this.#u.addEventListener(e,t=>{t.preventDefault();let n=t;e===`dragleave`&&this.#u.contains(n.relatedTarget)||this.removeAttribute(`data-dropping`)});this.#u.addEventListener(`drop`,e=>{let t=e.dataTransfer?.files;if(t?.length){for(let e of Array.from(t))this.#z({kind:`upload`,name:e.name,size:e.size,file:e});this.close()}})}toggle(){this.#r?this.close():this.open()}#A(e){this.#l.replaceChildren(r(e?`x`:`plus`,{size:Oe}))}open(){this.#r||(this.#r=!0,this.setAttribute(`data-open`,``),this.#c.setAttribute(`aria-expanded`,`true`),this.#A(!0),document.addEventListener(`mousedown`,this.#m),this.#i=``,this.#d.value=``,this.#a=0,this.#N(),requestAnimationFrame(()=>this.#d.focus()))}close(){this.#r&&(this.#r=!1,this.removeAttribute(`data-open`),this.removeAttribute(`data-dropping`),this.#c.setAttribute(`aria-expanded`,`false`),this.#A(!1),document.removeEventListener(`mousedown`,this.#m))}async#j(e){if(this.#n){let t=await this.#n(e);if(t)return t}return this.#t??A}#M(e){let t=this.#i.trim().toLowerCase(),n=e=>!t||`${e.label} ${e.sub??``}`.toLowerCase().includes(t),r=[];if(!t)for(let e of Me)r.push({type:`quick`,data:e});else if(`upload take a photo screenshot`.includes(t))for(let e of Me)e.label.toLowerCase().includes(t)&&r.push({type:`quick`,data:e});for(let i of e){let e=i.entries.filter(n).slice(0,t?8:4);if(e.length){r.push({type:`sec`,label:i.label});for(let t of e)r.push({type:`row`,section:i,data:t})}}return r}async#N(){let e=++this.#s,t=await this.#j(this.#i.trim().toLowerCase());if(e!==this.#s)return;let n=this.#M(t);this.#o=[];let i=[],a=!1;for(let e of n)if(e.type===`sec`)a&&i.push(O(`div`,{class:`sep`})),i.push(O(`div`,{class:`sec`},e.label)),a=!1;else if(e.type===`quick`){let t=this.#o.length;this.#o.push(e.data.kind===`upload`?{kind:`upload`,name:``,size:0}:{kind:`capture`,mode:e.data.mode??`photo`,label:e.data.label});let n=O(`span`,{class:`tx`},O(`div`,{class:`lb`},e.data.label));e.data.sub&&n.append(O(`div`,{class:`sb`},e.data.sub)),i.push(O(`div`,{class:`item quick`,"data-i":t},O(`span`,{class:`ic`},r(e.data.icon,{size:Ae})),n)),a=!0}else{let t=this.#o.length;this.#o.push({kind:e.section.kind,id:e.data.id,label:e.data.label}),i.push(O(`div`,{class:`item`,"data-i":t},O(`span`,{class:`ic`},r(e.section.icon,{size:Ae})),O(`span`,{class:`tx`},O(`div`,{class:`lb`},e.data.label),O(`div`,{class:`sb`},e.data.sub??``))))}i.length?this.#f.replaceChildren(...i):this.#f.replaceChildren(O(`div`,{class:`empty`},`No matches for “${this.#i}”.`));for(let e of Array.from(this.#f.querySelectorAll(`.item`))){let t=Number(e.dataset.i);e.addEventListener(`mouseenter`,()=>this.#F(t)),e.addEventListener(`click`,()=>this.#R(t))}this.#a>=this.#o.length&&(this.#a=0),this.#P()}#P(){for(let e of Array.from(this.#f.querySelectorAll(`.item`)))e.classList.toggle(`active`,Number(e.dataset.i)===this.#a)}#F(e){this.#a=e,this.#P()}#I(e){if(!this.#o.length)return;this.#a=(this.#a+e+this.#o.length)%this.#o.length,this.#P();let t=this.#f.querySelector(`.item[data-i="${this.#a}"]`);t&&t.scrollIntoView({block:`nearest`})}#L(e){e.key===`ArrowDown`?(e.preventDefault(),this.#I(1)):e.key===`ArrowUp`?(e.preventDefault(),this.#I(-1)):e.key===`Enter`?(e.preventDefault(),this.#R(this.#a)):e.key===`Escape`&&(e.preventDefault(),this.close(),this.#c.focus())}#R(e){let t=this.#o[e];if(t){if(t.kind===`upload`){this.#p.click();return}this.#z(t),this.close()}}#z(e){this.dispatchEvent(new CustomEvent(`slicc-add`,{detail:e,bubbles:!0,composed:!0}))}});var Ne=k(`
|
|
380
|
+
:host {
|
|
381
|
+
display: inline-grid;
|
|
382
|
+
grid-auto-flow: column;
|
|
383
|
+
gap: 8px;
|
|
384
|
+
font-family: var(--ui);
|
|
385
|
+
color: var(--ink);
|
|
386
|
+
}
|
|
387
|
+
:host([hidden]) { display: none; }
|
|
388
|
+
.cue {
|
|
389
|
+
display: inline-grid;
|
|
390
|
+
grid-template-columns: auto 1fr;
|
|
391
|
+
align-items: center;
|
|
392
|
+
gap: 6px;
|
|
393
|
+
padding: 6px 10px;
|
|
394
|
+
height: 30px;
|
|
395
|
+
border-radius: 8px;
|
|
396
|
+
border: 1px solid var(--line);
|
|
397
|
+
background: var(--canvas);
|
|
398
|
+
color: var(--txt-2);
|
|
399
|
+
font-family: var(--ui);
|
|
400
|
+
font-size: 12px;
|
|
401
|
+
line-height: 1;
|
|
402
|
+
cursor: pointer;
|
|
403
|
+
-webkit-appearance: none;
|
|
404
|
+
appearance: none;
|
|
405
|
+
}
|
|
406
|
+
.cue:hover { background: var(--ghost); color: var(--ink); }
|
|
407
|
+
.cue:active { background: var(--ctx); color: var(--canvas); border-color: var(--ctx); }
|
|
408
|
+
.cue:disabled { cursor: default; opacity: 0.45; }
|
|
409
|
+
.cue:disabled:hover { background: var(--canvas); color: var(--txt-2); }
|
|
410
|
+
.glyph { display: grid; place-items: center; pointer-events: none; }
|
|
411
|
+
.glyph svg { display: block; }
|
|
412
|
+
.label { pointer-events: none; }
|
|
413
|
+
`),Pe=[{cue:`sent`,label:`Sent`,icon:`send`},{cue:`tool-start`,label:`Tool start`,icon:`play`},{cue:`tool-finish`,label:`Tool finish`,icon:`check`}],Fe=14;E(`slicc-soundboard`,class extends HTMLElement{#e;#t=null;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[Ne]}connectedCallback(){this.#i()}get audioContext(){return this.#t}#n(){return typeof AudioContext>`u`?null:((!this.#t||this.#t.state===`closed`)&&(this.#t=new AudioContext),this.#t)}#r(e){let t=this.#n();t&&(t.state===`suspended`&&t.resume(),c(t,e))}#i(){let e=Pe.map(({cue:e,label:t,icon:n})=>{let i=r(n,{size:Fe,part:`icon`}),a=O(`button`,{type:`button`,class:`cue`,part:`button`,"data-cue":e,"aria-label":`Play ${t} cue`,title:`Play ${t} cue`},O(`span`,{class:`glyph`},i),O(`span`,{class:`label`,part:`label`},t));return a.addEventListener(`click`,()=>this.#r(e)),a});this.#e.replaceChildren(...e)}});var Ie=`
|
|
414
|
+
slicc-action-card { display: block; }
|
|
415
|
+
|
|
416
|
+
/* in-chat tool / terminal / git card (.tcard) */
|
|
417
|
+
slicc-action-card .tcard {
|
|
418
|
+
border: 1px solid var(--line);
|
|
419
|
+
border-radius: 12px;
|
|
420
|
+
overflow: hidden;
|
|
421
|
+
margin: 2px 0 18px;
|
|
422
|
+
background: var(--canvas);
|
|
423
|
+
}
|
|
103
424
|
slicc-action-card .tcard .th {
|
|
104
425
|
display: flex;
|
|
105
426
|
align-items: center;
|
|
@@ -202,7 +523,7 @@ slicc-action-card .prcard .pmeta {
|
|
|
202
523
|
slicc-action-card .prcard .pmeta b { color: var(--ink); }
|
|
203
524
|
slicc-action-card .prcard .pmeta .add { color: #1a7f37; }
|
|
204
525
|
slicc-action-card .prcard .pmeta .del { color: #cf222e; }
|
|
205
|
-
`,
|
|
526
|
+
`,Le=`slicc-action-card-style`;function Re(e){if(e.getElementById(Le))return;let t=e.createElement(`style`);t.id=Le,t.textContent=Ie,(e.head??e.documentElement).appendChild(t)}var j=new Set([`tool`,`light`,`pr`]),ze=new Set([`ink`,`cy`,`vi`,`am`,`gh`]);E(`slicc-action-card`,class extends HTMLElement{static observedAttributes=[`variant`,`glyph`,`tone`,`title`,`badge`,`number`,`status`,`branch`,`files`,`add`,`del`,`checks`];#e=[];#t=!1;connectedCallback(){Re(this.ownerDocument),this.classList.add(`slicc-action-card`),this.#a(),this.#n()}attributeChangedCallback(e,t,n){!this.isConnected||t===n||(this.#n(),e===`variant`&&this.dispatchEvent(new CustomEvent(`slicc-action-card-change`,{bubbles:!0,composed:!0,detail:{variant:this.variant}})))}get variant(){let e=this.getAttribute(`variant`);return e&&j.has(e)?e:`tool`}set variant(e){this.setAttribute(`variant`,j.has(e)?e:`tool`)}get glyph(){return this.getAttribute(`glyph`)}set glyph(e){e==null?this.removeAttribute(`glyph`):this.setAttribute(`glyph`,e)}get tone(){let e=this.getAttribute(`tone`);return e&&ze.has(e)?e:`ink`}set tone(e){this.setAttribute(`tone`,ze.has(e)?e:`ink`)}get title(){return this.getAttribute(`title`)??``}set title(e){e==null?this.removeAttribute(`title`):this.setAttribute(`title`,e)}get badge(){return this.getAttribute(`badge`)}set badge(e){e==null?this.removeAttribute(`badge`):this.setAttribute(`badge`,e)}get number(){return this.getAttribute(`number`)}set number(e){e==null?this.removeAttribute(`number`):this.setAttribute(`number`,e)}get status(){return this.getAttribute(`status`)}set status(e){e==null?this.removeAttribute(`status`):this.setAttribute(`status`,e)}get branch(){return this.getAttribute(`branch`)}set branch(e){e==null?this.removeAttribute(`branch`):this.setAttribute(`branch`,e)}get files(){return this.getAttribute(`files`)}set files(e){e==null?this.removeAttribute(`files`):this.setAttribute(`files`,e)}get add(){return this.getAttribute(`add`)}set add(e){e==null?this.removeAttribute(`add`):this.setAttribute(`add`,e)}get del(){return this.getAttribute(`del`)}set del(e){e==null?this.removeAttribute(`del`):this.setAttribute(`del`,e)}get checks(){return this.getAttribute(`checks`)}set checks(e){e==null?this.removeAttribute(`checks`):this.setAttribute(`checks`,e)}#n(){let e=this.variant;e===`pr`?this.#i():this.#r(e===`light`)}#r(e){let t=this.glyph,n=this.tone,r=this.title,i=this.badge,a=n===`ink`?`ic`:`ic ${n}`,o=O(`div`,{class:`th`,part:`header`});D(o,[O(`span`,{class:a,part:`icon`},t??null),` `,O(`span`,{class:`nm`,part:`title`},r),i==null?null:O(`span`,{class:`badge`,part:`badge`},i)]);let s=O(`div`,{class:`tb`,part:`body`});s.append(...this.#e);let c=O(`div`,{class:e?`tcard light`:`tcard`,part:`card`},o,s);this.replaceChildren(c)}#i(){let e=this.title,t=this.number,n=this.status??`Open`,r=this.branch,i=this.files,a=this.add,o=this.del,s=this.checks,c=O(`div`,{class:`ph`,part:`header`});D(c,[O(`span`,{class:`gi`,part:`icon`},`⎇`),O(`span`,{class:`pt`,part:`title`},e),t==null?null:O(`span`,{class:`pn`,part:`number`},t),O(`span`,{class:`open`,part:`status`},n)]);let l=O(`div`,{class:`pmeta`,part:`meta`}),u=this.#e.filter(e=>e instanceof HTMLElement&&e.getAttribute(`slot`)===`meta`);u.length>0?l.append(...u):D(l,[r==null?null:O(`span`,null,r),i==null?null:O(`span`,null,O(`b`,null,i),` files`),a==null?null:O(`span`,{class:`add`},`+${a}`),o==null?null:O(`span`,{class:`del`},`−${o}`),s==null?null:O(`span`,null,`checks `,O(`b`,{style:`color:#1a7f37`},s))]);let d=O(`div`,{class:`prcard`,part:`card`},c,l);this.replaceChildren(d)}#a(){this.#t||(this.#t=!0,this.#e=Array.from(this.childNodes))}});var Be=`
|
|
206
527
|
slicc-action-row {
|
|
207
528
|
display: block;
|
|
208
529
|
margin: -2px 0 16px;
|
|
@@ -301,7 +622,7 @@ slicc-action-row .vlink {
|
|
|
301
622
|
slicc-action-row .vlink:hover {
|
|
302
623
|
border-bottom-style: solid;
|
|
303
624
|
}
|
|
304
|
-
`,
|
|
625
|
+
`,Ve=`slicc-action-row-style`;function He(e){if(e.getElementById(Ve))return;let t=e.createElement(`style`);t.id=Ve,t.textContent=Be,(e.head??e.documentElement).appendChild(t)}var Ue=new Set([`ink`,`vi`,`am`,`cy`,`gh`]);E(`slicc-action-row`,class extends HTMLElement{static observedAttributes=[`open`,`icon`,`tone`,`label`,`result`];#e;#t;#n;#r;#i;#a=!1;#o=()=>this.#s();connectedCallback(){He(this.ownerDocument),this.#c(),this.#l(),this.#e?.addEventListener(`click`,this.#o)}disconnectedCallback(){this.#e?.removeEventListener(`click`,this.#o)}attributeChangedCallback(e,t,n){t===n||!this.#a||(e===`open`?(this.#e.setAttribute(`aria-expanded`,String(n!==null)),this.dispatchEvent(new CustomEvent(`slicc-action-row-toggle`,{bubbles:!0,composed:!0,detail:{open:n!==null}}))):this.#l())}get open(){return this.hasAttribute(`open`)}set open(e){this.toggleAttribute(`open`,e)}get icon(){return this.getAttribute(`icon`)}set icon(e){e==null?this.removeAttribute(`icon`):this.setAttribute(`icon`,e)}get tone(){let e=this.getAttribute(`tone`);return e&&Ue.has(e)?e:`ink`}set tone(e){this.setAttribute(`tone`,e)}get label(){return this.getAttribute(`label`)}set label(e){e==null?this.removeAttribute(`label`):this.setAttribute(`label`,e)}get result(){return this.getAttribute(`result`)}set result(e){e==null?this.removeAttribute(`result`):this.setAttribute(`result`,e)}#s(){this.open=!this.open}#c(){if(this.#a)return;this.#a=!0;let e=Array.from(this.childNodes).filter(e=>!(e instanceof HTMLElement&&e.classList.contains(`slicc-act__head`))&&!(e instanceof HTMLElement&&e.classList.contains(`slicc-act__body`)));this.#e=this.ownerDocument.createElement(`button`),this.#e.type=`button`,this.#e.className=`slicc-act__head`,this.#e.setAttribute(`part`,`head`),this.#t=O(`span`,{class:`slicc-act__ic`,part:`icon`}),this.#n=O(`span`,{class:`slicc-act__label`,part:`label`}),this.#r=O(`span`,{class:`slicc-act__badge`,part:`badge`}),D(this.#e,[this.#t,this.#n,this.#r,O(`span`,{class:`slicc-act__chev`,part:`chevron`,"aria-hidden":`true`},`▸`)]),this.#i=this.ownerDocument.createElement(`div`),this.#i.className=`slicc-act__body`,this.#i.setAttribute(`part`,`body`);for(let t of e)t instanceof HTMLElement&&t.getAttribute(`slot`)===`body`?this.#i.appendChild(t):this.#n.appendChild(t);this.replaceChildren(this.#e,this.#i),this.#e.addEventListener(`click`,this.#o)}#l(){if(!this.#a)return;let e=this.tone;this.#t.className=`slicc-act__ic${e===`ink`?``:` ${e}`}`;let t=this.icon??``;t&&i(t)?this.#t.replaceChildren(r(t,{size:12})):this.#t.textContent=t;let n=this.label;n!=null&&(this.#n.textContent=n),this.#e.setAttribute(`aria-expanded`,String(this.open)),this.#r.textContent=this.result??``}});var We=`
|
|
305
626
|
slicc-agent-message { display: block; margin-bottom: 18px; font-size: 15px; line-height: 1.5; --accent: color-mix(in srgb, var(--ctx) 55%, var(--ink)); }
|
|
306
627
|
slicc-agent-message .body { font-family: var(--ui); font-size: 14px; }
|
|
307
628
|
slicc-agent-message .body p { margin: 0 0 8px; }
|
|
@@ -358,7 +679,7 @@ slicc-agent-message .dots i:nth-child(3) { animation-delay: .32s; }
|
|
|
358
679
|
@keyframes slicc-am-bdot { 0%, 75%, 100% { transform: translateY(0); opacity: .45; } 38% { transform: translateY(-8px); opacity: 1; } }
|
|
359
680
|
slicc-agent-message .tw-caret { display: inline-block; width: 2px; height: 1.05em; vertical-align: -2px; margin-left: 1px; background: var(--ink); animation: slicc-am-cblink .9s steps(1) infinite; }
|
|
360
681
|
@keyframes slicc-am-cblink { 50% { opacity: 0; } }
|
|
361
|
-
`,
|
|
682
|
+
`,Ge=`slicc-agent-message-style`;function Ke(e){if(e.getElementById(Ge))return;let t=e.createElement(`style`);t.id=Ge,t.textContent=We,(e.head??e.documentElement).appendChild(t)}var qe=[`#f43f5e`,`#06b6d4`,`#8b5cf6`],M=new Set([``,`r`,`cy`,`vi`,`am`]);function Je(){let e=O(`div`,{class:`dots`,part:`dots`,"aria-hidden":`true`});for(let t of qe)e.append(O(`i`,{style:`--d:${t}`}));return e}function Ye(e){let t=O(`ul`,{class:`plan`,part:`plan`});for(let n of e)t.append(O(`li`,null,n));return t}function Xe(e){let t=O(`ul`,{class:`check`,part:`check`});for(let n of e){let e=n.variant&&M.has(n.variant)?n.variant:``,r=e?`ck ${e}`:`ck`,i=n.glyph??`✓`;t.append(O(`li`,null,O(`span`,{class:r},i),O(`span`,{class:`ctext`},n.text)))}return t}E(`slicc-agent-message`,class extends HTMLElement{static observedAttributes=[`thinking`,`streaming`,`progress`];#e;#t=null;#n=null;#r=null;#i=!1;connectedCallback(){Ke(this.ownerDocument),this.#o(),this.#s(),this.#l()}attributeChangedCallback(e,t,n){t===n||!this.isConnected||(e===`thinking`?(this.#s(),this.dispatchEvent(new CustomEvent(`slicc-agent-message-thinking`,{bubbles:!0,composed:!0,detail:{thinking:n!==null}}))):e===`progress`?this.#c():e===`streaming`&&(this.#l(),this.dispatchEvent(new CustomEvent(`slicc-agent-message-streaming`,{bubbles:!0,composed:!0,detail:{streaming:n!==null}}))))}get thinking(){return this.hasAttribute(`thinking`)}set thinking(e){e?this.setAttribute(`thinking`,``):this.removeAttribute(`thinking`)}get streaming(){return this.hasAttribute(`streaming`)}set streaming(e){e?this.setAttribute(`streaming`,``):this.removeAttribute(`streaming`)}get progress(){return this.getAttribute(`progress`)}set progress(e){e==null?this.removeAttribute(`progress`):this.setAttribute(`progress`,e)}get body(){return this.#o(),this.#e}setBodyHtml(e){this.#o();let t=this.ownerDocument.createRange();t.selectNodeContents(this.#e),this.#a(t.createContextualFragment(e))}setPlan(e){this.#a(Ye(e))}setCheck(e){this.#a(Xe(e))}#a(e){this.#o(),this.#e.replaceChildren(e),this.#l()}#o(){if(this.#i)return;this.#i=!0,this.classList.add(`msg`,`bot`);let e=Array.from(this.childNodes).filter(e=>!(e instanceof HTMLElement&&e.classList.contains(`body`)));this.#e=this.ownerDocument.createElement(`div`),this.#e.className=`body`,this.#e.setAttribute(`part`,`body`);for(let t of e)this.#e.appendChild(t);this.appendChild(this.#e)}#s(){let e=this.thinking;this.classList.toggle(`thinkrow`,e),e?(this.#e.style.display=`none`,this.#t||(this.#t=this.ownerDocument.createElement(`div`),this.#t.className=`thinkrow-row`,this.#t.appendChild(Je()),this.insertBefore(this.#t,this.#e)),this.#c()):(this.#e.style.removeProperty(`display`),this.#t&&(this.#t.remove(),this.#t=null,this.#n=null))}#c(){if(!this.#t)return;let e=this.progress;e?(this.#n||(this.#n=this.ownerDocument.createElement(`span`),this.#n.className=`progress`,this.#n.setAttribute(`part`,`progress`),this.#n.setAttribute(`aria-live`,`polite`),this.#t.appendChild(this.#n)),this.#n.textContent=e):this.#n&&=(this.#n.remove(),null)}#l(){this.streaming?this.#r?.isConnected?this.#e.appendChild(this.#r):(this.#r=this.ownerDocument.createElement(`span`),this.#r.className=`tw-caret`,this.#r.setAttribute(`part`,`caret`),this.#r.setAttribute(`aria-hidden`,`true`),this.#e.appendChild(this.#r)):this.#r&&=(this.#r.remove(),null)}});var Ze=`
|
|
362
683
|
slicc-chat-table { display: block; }
|
|
363
684
|
slicc-chat-table > .ctable {
|
|
364
685
|
width: 100%;
|
|
@@ -397,7 +718,7 @@ slicc-chat-table > .ctable code {
|
|
|
397
718
|
border-radius: 5px;
|
|
398
719
|
padding: 1px 5px;
|
|
399
720
|
}
|
|
400
|
-
`,
|
|
721
|
+
`,Qe=`slicc-chat-table-style`;function $e(e){if(e.getElementById(Qe))return;let t=e.createElement(`style`);t.id=Qe,t.textContent=Ze,(e.head??e.documentElement).appendChild(t)}function et(e){return e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}E(`slicc-chat-table`,class extends HTMLElement{static observedAttributes=[`headers`];#e;#t;#n;#r=!1;connectedCallback(){$e(this.ownerDocument),this.#i()}attributeChangedCallback(e,t,n){e!==`headers`||t===n||(this.#r&&this.#a(),this.isConnected&&this.dispatchEvent(new CustomEvent(`slicc-chat-table-change`,{bubbles:!0,composed:!0,detail:{headers:this.headers}})))}get headers(){let e=this.getAttribute(`headers`);return e?et(e):[]}set headers(e){e==null?this.removeAttribute(`headers`):Array.isArray(e)?this.setAttribute(`headers`,e.join(`,`)):this.setAttribute(`headers`,e)}#i(){if(this.#r)return;this.#r=!0;let e=Array.from(this.childNodes).filter(e=>!(e instanceof HTMLTableElement&&e.classList.contains(`ctable`)));this.#e=this.ownerDocument.createElement(`table`),this.#e.className=`ctable`,this.#e.setAttribute(`part`,`table`),this.#t=this.ownerDocument.createElement(`thead`),this.#t.setAttribute(`part`,`head`),this.#n=this.ownerDocument.createElement(`tbody`),this.#n.setAttribute(`part`,`body`),this.#e.append(this.#t,this.#n);for(let t of e)t instanceof HTMLElement&&t.getAttribute(`slot`)===`head`?this.#t.appendChild(t):this.#n.appendChild(t);this.#a(),this.appendChild(this.#e)}#a(){if(!this.#r)return;let e=this.#t.querySelector(`tr`);if(e&&!e.hasAttribute(`data-slicc-generated`))return;let t=this.headers;if(t.length===0){this.#t.replaceChildren();return}let n=O(`tr`,{"data-slicc-generated":``});for(let e of t)n.append(O(`th`,null,e));this.#t.replaceChildren(n)}});function N(e){if(typeof window>`u`||!window.location)return null;try{return new URLSearchParams(window.location.search).get(e)}catch{return null}}function P(e,t,n={}){if(!(typeof window>`u`||!window.history?.replaceState))try{let r=new URL(window.location.href),i=r.searchParams.get(e);if(i===t||i===null&&(t===null||t===``))return;t==null||t===``?r.searchParams.delete(e):r.searchParams.set(e,t),n.push?window.history.pushState(window.history.state,``,r):window.history.replaceState(window.history.state,``,r)}catch{}}var tt=`
|
|
401
722
|
slicc-chat-thread {
|
|
402
723
|
flex: 1 1 auto;
|
|
403
724
|
display: block;
|
|
@@ -473,7 +794,7 @@ slicc-chat-thread[open] > .slicc-thread__inner {
|
|
|
473
794
|
padding: 16px 14px;
|
|
474
795
|
}
|
|
475
796
|
}
|
|
476
|
-
`,
|
|
797
|
+
`,nt=`slicc-chat-thread-style`;function rt(e){if(e.getElementById(nt))return;let t=e.createElement(`style`);t.id=nt,t.textContent=tt,(e.head??e.documentElement).appendChild(t)}E(`slicc-chat-thread`,class e extends HTMLElement{static observedAttributes=[`open`,`context`,`accent`,`url-state`];#e;#t=!1;#n=null;#r=null;#i=null;#a=null;#o=()=>{this.urlState&&(this.#a!=null&&clearTimeout(this.#a),this.#a=setTimeout(()=>{this.#a=null,P(`at`,String(Math.round(this.scrollTop)))},300))};#s=()=>{if(!this.urlState)return;let e=N(`ctx`);if(e&&e!==this.context)this.dispatchEvent(new CustomEvent(`slicc-url-context`,{bubbles:!0,composed:!0,detail:{context:e}}));else{let e=N(`at`);e!=null&&(this.scrollTop=Number.parseInt(e,10)||0)}};#c=null;#l=new Map;connectedCallback(){rt(this.ownerDocument),this.#m(),this.#p(),this.scrollToBottom(),this.urlState&&(this.#r=N(`at`),this.#i=N(`ctx`),this.addEventListener(`scroll`,this.#o,{passive:!0}),window.addEventListener(`popstate`,this.#s))}disconnectedCallback(){this.#n&&=(this.#e?.removeEventListener(`click`,this.#n),null),this.removeEventListener(`scroll`,this.#o),window.removeEventListener(`popstate`,this.#s),this.#a!=null&&(clearTimeout(this.#a),this.#a=null)}attributeChangedCallback(e,t,n){t!==n&&(e===`accent`&&this.#t&&this.#p(),e===`context`&&this.urlState&&n!=null&&this.isConnected&&(n!==this.#i&&(this.#r=null),P(`ctx`,n,{push:!0})))}get urlState(){return this.hasAttribute(`url-state`)}set urlState(e){this.toggleAttribute(`url-state`,e)}get urlContext(){return this.urlState?N(`ctx`):null}get open(){return this.hasAttribute(`open`)}set open(e){e?this.setAttribute(`open`,``):this.removeAttribute(`open`)}get context(){return this.getAttribute(`context`)}set context(e){e==null?this.removeAttribute(`context`):this.setAttribute(`context`,e)}get accent(){return this.getAttribute(`accent`)}set accent(e){e==null?this.removeAttribute(`accent`):this.setAttribute(`accent`,e)}get inner(){return this.#m(),this.#e}switchContext(e){this.#m();let t=this.context;if(e===t)return;t!=null&&this.#l.set(t,this.#f());let n=this.#l.get(e);this.#e.replaceChildren(...n?Array.from(n.cloneNode(!0).childNodes):[]),this.context=e,this.removeAttribute(`has-new`),this.dispatchEvent(new CustomEvent(`slicc-context-change`,{bubbles:!0,composed:!0,detail:{context:e,previous:t}})),this.scrollToBottom()}append(...e){this.#m(),e.length>0&&(this.#r=null),this.#e.append(...e),this.requestFollow()}static FOLLOW_SLACK=80;#u(){return this.scrollHeight-this.scrollTop-this.clientHeight<=e.FOLLOW_SLACK}requestFollow(){this.#m(),this.#u()?(this.scrollToBottom(),this.removeAttribute(`has-new`)):this.setAttribute(`has-new`,``)}#d=()=>{this.hasAttribute(`has-new`)&&this.#u()&&this.removeAttribute(`has-new`)};replaceContent(...e){this.#m(),this.#e.replaceChildren(...e),this.removeAttribute(`has-new`),this.scrollToBottom();let t=this.#r;t!=null&&e.length>0&&requestAnimationFrame(()=>{this.#r===t&&(this.scrollTop=Number.parseInt(t,10)||0)})}scrollToBottom(){this.scrollTop=this.scrollHeight}#f(){let e=this.ownerDocument.createDocumentFragment();for(let t of Array.from(this.#e.childNodes))e.appendChild(t.cloneNode(!0));return e}#p(){let e=this.accent;e?this.style.setProperty(`--ctx`,e):this.style.removeProperty(`--ctx`)}#m(){if(this.#t)return;this.#t=!0;let e=this.querySelector(`:scope > .slicc-thread__inner`);if(e instanceof HTMLElement)this.#e=e;else{let e=Array.from(this.childNodes);this.#e=this.ownerDocument.createElement(`div`),this.#e.className=`slicc-thread__inner`,this.#e.setAttribute(`part`,`inner`);for(let t of e)this.#e.appendChild(t);this.appendChild(this.#e)}this.#c=this.ownerDocument.createElement(`div`),this.#c.className=`slicc-thread__follow`;let t=this.ownerDocument.createElement(`button`);t.type=`button`,t.append(`New messages ↓`),t.addEventListener(`click`,()=>{this.scrollToBottom(),this.removeAttribute(`has-new`)}),this.#c.append(t),this.appendChild(this.#c),this.addEventListener(`scroll`,this.#d,{passive:!0}),this.#n=e=>{let t=e.target;t instanceof HTMLElement&&this.dispatchEvent(new CustomEvent(`slicc-thread-action`,{bubbles:!0,composed:!0,detail:{target:t}}))},this.#e.addEventListener(`click`,this.#n)}});var it=k(`
|
|
477
798
|
:host {
|
|
478
799
|
display: flex;
|
|
479
800
|
align-items: center;
|
|
@@ -509,7 +830,7 @@ code {
|
|
|
509
830
|
border-radius: 5px;
|
|
510
831
|
padding: 1px 5px;
|
|
511
832
|
}
|
|
512
|
-
`),
|
|
833
|
+
`),F=[`feed`,`scoop`,`drop`,`sprinkle`],at={feed:`arrow-right`,scoop:`circle-plus`,drop:`circle-check`,sprinkle:`sparkles`},ot={feed:`Delegated to`,scoop:`Spun up`,drop:`Wrapped up`,sprinkle:``},st={feed_scoop:`Delegated to`,scoop_scoop:`Spun up`,drop_scoop:`Wrapped up`,"sprinkle-opened":`Opened`};function ct(e){return st[e]??e}function lt(e){return F.includes(e??``)?e:`feed`}function ut(e){return e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}E(`slicc-delegation-line`,class extends HTMLElement{static observedAttributes=[`kind`,`hue`,`verb`,`scoop`,`label`,`args`,`source`];#e;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[it]}connectedCallback(){this.#t()}attributeChangedCallback(){this.isConnected&&this.#t()}get kind(){return lt(this.getAttribute(`kind`))}set kind(e){this.setAttribute(`kind`,lt(e))}get hue(){return this.getAttribute(`hue`)}set hue(e){e==null?this.removeAttribute(`hue`):this.setAttribute(`hue`,e)}get verb(){return this.getAttribute(`verb`)}set verb(e){e==null?this.removeAttribute(`verb`):this.setAttribute(`verb`,e)}get scoop(){return this.getAttribute(`scoop`)}set scoop(e){e==null?this.removeAttribute(`scoop`):this.setAttribute(`scoop`,e)}get label(){return this.getAttribute(`label`)}set label(e){e==null?this.removeAttribute(`label`):this.setAttribute(`label`,e)}get args(){return this.getAttribute(`args`)}set args(e){e==null?this.removeAttribute(`args`):this.setAttribute(`args`,e)}get source(){return this.hasAttribute(`source`)}set source(e){this.toggleAttribute(`source`,e)}#t(){let e=this.kind,t=this.hue,n=this.verb,i=n==null?ot[e]:ct(n),a=this.scoop,o=this.label,s=this.args?ut(this.args):[];t?this.style.setProperty(`--c`,t):this.style.removeProperty(`--c`);let c=O(`span`,{class:`darrow`,part:`arrow`},O(`slot`,{name:`arrow`},r(at[e],{size:13}))),l=O(`slot`,{name:`label`});i&&l.append(O(`span`,{class:`verb`},i)),a&&l.append(O(`b`,{class:`scoop`,part:`scoop`,style:t?`color:${t}`:void 0},a)),o&&l.append(O(`span`,{class:`prose`},o));let u=O(`span`,{class:`label`,part:`label`},l),d=O(`slot`,{name:`args`});for(let e of s)d.append(O(`code`,{part:`code`},e));this.#e.replaceChildren(c,u,d)}});var dt=k(`
|
|
513
834
|
:host {
|
|
514
835
|
display: block;
|
|
515
836
|
border: 1px solid var(--line);
|
|
@@ -535,7 +856,7 @@ code {
|
|
|
535
856
|
/* palette chips carry inline-style light backgrounds — tone them down for dark mode */
|
|
536
857
|
:host-context(.dark) .ch,
|
|
537
858
|
:host-context([data-theme="dark"]) .ch { filter: brightness(.55) saturate(.85); }
|
|
538
|
-
`);
|
|
859
|
+
`);E(`slicc-palette-cell`,class extends HTMLElement{static observedAttributes=[`color`,`label`,`group`,`selected`];#e;#t=null;#n=null;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[dt]}connectedCallback(){this.hasAttribute(`tabindex`)||this.setAttribute(`tabindex`,`0`),this.setAttribute(`role`,`button`),this.#o(),this.#i()}disconnectedCallback(){this.#a()}attributeChangedCallback(){this.isConnected&&this.#o()}get color(){return this.getAttribute(`color`)}set color(e){e==null?this.removeAttribute(`color`):this.setAttribute(`color`,e)}get label(){return this.getAttribute(`label`)}set label(e){e==null?this.removeAttribute(`label`):this.setAttribute(`label`,e)}get group(){return this.getAttribute(`group`)}set group(e){e==null?this.removeAttribute(`group`):this.setAttribute(`group`,e)}get selected(){return this.hasAttribute(`selected`)}set selected(e){this.toggleAttribute(`selected`,e)}select(){this.#r(),this.selected=!0,this.dispatchEvent(new CustomEvent(`palette-select`,{bubbles:!0,composed:!0,detail:{color:this.color,label:this.label,group:this.group}}))}#r(){let e=this.group;if(!e)return;let t=this.getRootNode().querySelectorAll(`slicc-palette-cell[group="${CSS.escape(e)}"][selected]`);for(let e of t)e!==this&&(e.selected=!1)}#i(){this.#t||(this.#t=()=>this.select(),this.#n=e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),this.select())},this.addEventListener(`click`,this.#t),this.addEventListener(`keydown`,this.#n))}#a(){this.#t&&this.removeEventListener(`click`,this.#t),this.#n&&this.removeEventListener(`keydown`,this.#n),this.#t=null,this.#n=null}#o(){this.setAttribute(`aria-pressed`,this.selected?`true`:`false`);let e=this.color??`transparent`,t=this.label,n=O(`div`,{class:`ch`,part:`chip`,style:`background:${e}`}),r=O(`div`,{class:`cl`,part:`label`},t??O(`slot`));this.#e.replaceChildren(n,r)}});var ft=[`#f43f5e`,`#f59e0b`,`#06b6d4`,`#8b5cf6`,`#ec4899`,`#22c55e`],pt=46,mt=72,ht=6.283185;function gt(e,t){return e+Math.random()*(t-e)}var _t=[{color:`#faf6f1`,label:`paper`},{color:`#fff7ed`,label:`cream`},{color:`#f5f3ff`,label:`lilac`},{color:`#fef2f2`,label:`blush`}],vt=[{color:`#8b5cf6`,label:`violet`},{color:`#f43f5e`,label:`rose`},{color:`#06b6d4`,label:`cyan`},{color:`#ef7000`,label:`cone`}],yt=0,bt=k(`
|
|
539
860
|
:host {
|
|
540
861
|
position: relative;
|
|
541
862
|
display: block;
|
|
@@ -622,7 +943,7 @@ canvas.sprk {
|
|
|
622
943
|
@media (prefers-reduced-motion: reduce) {
|
|
623
944
|
canvas.sprk { display: none; }
|
|
624
945
|
}
|
|
625
|
-
`);
|
|
946
|
+
`);E(`slicc-dip`,class extends HTMLElement{static observedAttributes=[`name`,`hue`,`prompt`];#e;#t=`d${++yt}`;#n=null;#r=null;#i=0;#a=null;#o=[];#s=0;#c=0;#l=-999;#u=-999;#d=null;#f=null;#p=null;#m=null;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[bt]}connectedCallback(){this.#v(),this.#b(),this.#w()}disconnectedCallback(){this.#T(),this.#x()}attributeChangedCallback(){this.isConnected&&(this.#v(),this.#b(),this.#w())}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.#h(`canvas:${this.#t}`)}get selectedAccent(){return this.#h(`accent:${this.#t}`)}#h(e){let t=this.querySelector(`slicc-palette-cell[group="${CSS.escape(e)}"][selected]`);return t?{color:t.getAttribute(`color`)??``,label:t.getAttribute(`label`)??``}:null}#g(e,t,n){let r=e.startsWith(`canvas`)?`canvas`:`accent`;if(!this.querySelector(`slicc-palette-cell[slot="${r}"]`))for(let i of t){let t=this.ownerDocument.createElement(`slicc-palette-cell`);t.setAttribute(`slot`,r),t.setAttribute(`color`,i.color),t.setAttribute(`label`,i.label),t.setAttribute(`group`,e),i.label===n&&t.setAttribute(`selected`,``),this.appendChild(t)}}#_(){return[document.createTextNode(`Tune the hero’s `),O(`b`,null,`canvas`),document.createTextNode(` & `),O(`b`,null,`accent`),document.createTextNode(`, then apply:`)]}#v(){let e=this.hue,t=e?`--c:${e}`:void 0,n=O(`slot`,{name:`prompt`});this.prompt?n.append(this.prompt):n.append(...this.#_()),this.#e.replaceChildren(O(`canvas`,{class:`sprk`,part:`field`,"aria-hidden":`true`}),O(`div`,{class:`dh`,part:`header`,style:t},O(`span`,{class:`sg`,part:`glyph`},r(`sparkles`,{size:12})),O(`span`,{class:`nm`,part:`name`},this.name),O(`span`,{class:`tag`,part:`tag`},`sprinkle · dip`)),O(`div`,{class:`dbody`,part:`body`,style:t},O(`p`,{class:`dprompt`,part:`prompt`},n),O(`div`,{class:`pgrid canvas`,part:`grid-canvas`},O(`slot`,{name:`canvas`})),O(`div`,{class:`pgrid accent`,part:`grid-accent`},O(`slot`,{name:`accent`})),O(`div`,{class:`dfoot`},O(`button`,{class:`dapply`,part:`apply`,type:`button`},`Apply to hero →`),O(`span`,{class:`dnote`,part:`note`})))),this.#g(`canvas:${this.#t}`,_t,`paper`),this.#g(`accent:${this.#t}`,vt,`cone`),this.#y()}#y(){let e=this.#e.querySelector(`.dnote`);e&&(e.textContent=`${this.selectedCanvas?.label??`paper`} · ${this.selectedAccent?.label??`violet`}`)}#b(){this.#p||(this.#p=()=>this.#y(),this.addEventListener(`palette-select`,this.#p)),this.#m||=()=>this.#S(),this.#e.querySelector(`.dapply`)?.addEventListener(`click`,this.#m)}#x(){this.#p&&=(this.removeEventListener(`palette-select`,this.#p),null),this.#m=null}#S(){this.#y(),this.dispatchEvent(new CustomEvent(`slicc-dip-apply`,{bubbles:!0,composed:!0,detail:{canvas:this.selectedCanvas,accent:this.selectedAccent}}))}#C(){return typeof matchMedia==`function`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches}#w(){if(this.#T(),this.#C())return;let e=this.#e.querySelector(`canvas.sprk`),t=e?.getContext(`2d`)??null;!e||!t||(this.#n=e,this.#r=t,this.#o=[],this.#E(),typeof ResizeObserver==`function`&&(this.#a=new ResizeObserver(()=>this.#E()),this.#a.observe(this)),this.#d=e=>{let t=this.getBoundingClientRect();this.#l=e.clientX-t.left,this.#u=e.clientY-t.top},this.#f=()=>{this.#l=-999,this.#u=-999},this.addEventListener(`pointermove`,this.#d),this.addEventListener(`pointerleave`,this.#f),this.#i=requestAnimationFrame(()=>this.#O()))}#T(){this.#i&&cancelAnimationFrame(this.#i),this.#i=0,this.#a?.disconnect(),this.#a=null,this.#d&&this.removeEventListener(`pointermove`,this.#d),this.#f&&this.removeEventListener(`pointerleave`,this.#f),this.#d=null,this.#f=null}#E(){let e=this.#n,t=this.#r;if(!e||!t)return;let n=this.getBoundingClientRect(),r=Math.min(typeof devicePixelRatio==`number`?devicePixelRatio:1,2);if(this.#s=n.width,this.#c=n.height||90,e.width=Math.max(1,Math.round(this.#s*r)),e.height=Math.max(1,Math.round(this.#c*r)),t.setTransform(r,0,0,r,0,0),!this.#o.length)for(let e=0;e<pt;e++)this.#o.push({x:gt(0,this.#s),y:gt(0,this.#c),vx:gt(-.1,.1),vy:gt(-.08,.08),rot:gt(0,ht),rv:gt(-.014,.014),s:gt(1.2,2.2),col:ft[e%ft.length]})}#D(e,t,n,r,i){let a=this.#r;a&&(a.roundRect?(a.beginPath(),a.roundRect(e,t,n,r,i)):(a.beginPath(),a.moveTo(e+i,t),a.arcTo(e+n,t,e+n,t+r,i),a.arcTo(e+n,t+r,e,t+r,i),a.arcTo(e,t+r,e,t,i),a.arcTo(e,t,e+n,t,i),a.closePath()))}#O(){let e=this.#r;if(e){e.clearRect(0,0,this.#s,this.#c);for(let t of this.#o){let n=t.x-this.#l,r=t.y-this.#u,i=n*n+r*r;if(i<mt*mt){let e=Math.sqrt(i)||1,a=(mt-e)/mt*.5;t.vx+=n/e*a,t.vy+=r/e*a}t.vx*=.95,t.vy*=.95,t.x+=t.vx+.04,t.y+=t.vy,t.rot+=t.rv,t.x<-6&&(t.x=this.#s+6),t.x>this.#s+6&&(t.x=-6),t.y<-6&&(t.y=this.#c+6),t.y>this.#c+6&&(t.y=-6);let a=t.s*4,o=t.s*1.55;e.save(),e.translate(t.x,t.y),e.rotate(t.rot),e.globalAlpha=.5,e.fillStyle=t.col,this.#D(-a/2,-o/2,a,o,o/2),e.fill(),e.globalAlpha=.85,e.fillStyle=`#fff`,this.#D(-a/2+o*.3,-o*.34,a-o*.6,o*.3,o*.15),e.fill(),e.restore(),e.globalAlpha=1}this.#i=requestAnimationFrame(()=>this.#O())}}});var xt=14,St=12,Ct=`Something went wrong`,wt={retry:`Try again`,settings:`Open Settings`,"change-model":`Change model`,login:`Log in again`},Tt={retry:`rotate-ccw`,settings:`settings`,"change-model":`sparkles`,login:`log-in`},Et=k(`
|
|
626
947
|
:host{
|
|
627
948
|
/* Error cards sit in the assistant column (left-aligned). Tokens default to
|
|
628
949
|
the light palette and flip in dark mode via the library's outer scopes
|
|
@@ -681,7 +1002,7 @@ canvas.sprk {
|
|
|
681
1002
|
.retry:hover{filter:brightness(1.08);}
|
|
682
1003
|
.retry:focus-visible{outline:2px solid color-mix(in srgb,var(--err-btn-bg) 60%,var(--ink));outline-offset:2px;}
|
|
683
1004
|
.retry svg{display:block;}
|
|
684
|
-
`);
|
|
1005
|
+
`);E(`slicc-error-card`,class extends HTMLElement{static observedAttributes=[`label`,`message`,`button-label`,`message-id`,`action`,`theme`];#e;#t=null;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[Et]}connectedCallback(){this.#n()}disconnectedCallback(){this.#i()}attributeChangedCallback(){this.isConnected&&this.#n()}get label(){return this.getAttribute(`label`)}set label(e){e==null?this.removeAttribute(`label`):this.setAttribute(`label`,e)}get message(){return this.getAttribute(`message`)}set message(e){e==null?this.removeAttribute(`message`):this.setAttribute(`message`,e)}get buttonLabel(){return this.getAttribute(`button-label`)}set buttonLabel(e){e==null?this.removeAttribute(`button-label`):this.setAttribute(`button-label`,e)}get messageId(){return this.getAttribute(`message-id`)}set messageId(e){e==null?this.removeAttribute(`message-id`):this.setAttribute(`message-id`,e)}get action(){let e=this.getAttribute(`action`);return e===`settings`||e===`change-model`||e===`login`?e:`retry`}set action(e){e==null?this.removeAttribute(`action`):this.setAttribute(`action`,e)}get theme(){let e=this.getAttribute(`theme`);return e===`light`||e===`dark`?e:null}set theme(e){e==null?this.removeAttribute(`theme`):this.setAttribute(`theme`,e)}retry(){this.dispatchEvent(new CustomEvent(`slicc-error-retry`,{detail:{messageId:this.getAttribute(`message-id`)??null},bubbles:!0,composed:!0}))}openSettings(){this.dispatchEvent(new CustomEvent(`slicc-error-open-settings`,{detail:{messageId:this.getAttribute(`message-id`)??null},bubbles:!0,composed:!0}))}changeModel(){this.dispatchEvent(new CustomEvent(`slicc-error-change-model`,{detail:{messageId:this.getAttribute(`message-id`)??null},bubbles:!0,composed:!0}))}login(){this.dispatchEvent(new CustomEvent(`slicc-error-login`,{detail:{messageId:this.getAttribute(`message-id`)??null},bubbles:!0,composed:!0}))}#n(){let e=this.action,t=this.label??Ct,n=this.message,i=this.buttonLabel??wt[e],a=Tt[e],o=O(`span`,{class:`ic`,part:`icon`,"aria-hidden":!0});o.append(r(`triangle-alert`,{size:xt}));let s=O(`div`,{class:`err`,part:`card`},O(`div`,{class:`eh`,part:`header`},o,O(`span`,{class:`lbl`,part:`label`},t)),O(`div`,{class:`eb`,part:`body`},n??O(`slot`)),O(`div`,{class:`foot`},O(`button`,{type:`button`,class:`retry`,part:`button`,"aria-label":i},r(a,{size:St}),i)));this.#e.replaceChildren(s),this.#r()}#r(){this.#i();let e=this.#e.querySelector(`.retry`);if(!e)return;let t=this.action;this.#t=()=>{t===`settings`?this.openSettings():t===`change-model`?this.changeModel():t===`login`?this.login():this.retry()},e.addEventListener(`click`,this.#t)}#i(){let e=this.#e.querySelector(`.retry`);e&&this.#t&&e.removeEventListener(`click`,this.#t),this.#t=null}});var Dt=9,Ot=3,kt=45,At=k(`
|
|
685
1006
|
:host {
|
|
686
1007
|
display: inline-flex;
|
|
687
1008
|
align-items: center;
|
|
@@ -762,7 +1083,7 @@ canvas.sprk {
|
|
|
762
1083
|
@media (prefers-reduced-motion: reduce) {
|
|
763
1084
|
:host([blink]) .eye { animation: none; }
|
|
764
1085
|
}
|
|
765
|
-
`);
|
|
1086
|
+
`);E(`slicc-googly-eyes`,class extends HTMLElement{static observedAttributes=[`inverted`,`tracking`,`blink`,`eyes`,`size`];#e;#t=[];#n=null;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[At]}connectedCallback(){this.#r(),this.#i()}disconnectedCallback(){this.#o()}attributeChangedCallback(e,t,n){this.isConnected&&(e===`size`||e===`eyes`?(this.#r(),this.#i()):e===`tracking`&&this.#i())}get inverted(){return this.hasAttribute(`inverted`)}set inverted(e){this.toggleAttribute(`inverted`,e)}get tracking(){return this.getAttribute(`tracking`)!==`off`}set tracking(e){e?this.setAttribute(`tracking`,`on`):this.setAttribute(`tracking`,`off`)}get blink(){return this.hasAttribute(`blink`)}set blink(e){this.toggleAttribute(`blink`,e)}get eyes(){return this.getAttribute(`eyes`)===`dead`?`dead`:`open`}set eyes(e){this.setAttribute(`eyes`,e===`dead`?`dead`:`open`)}get size(){let e=Number.parseFloat(this.getAttribute(`size`)??``);return Number.isFinite(e)&&e>0?e:Dt}set size(e){this.setAttribute(`size`,String(e))}#r(){let e=this.size,t=1.3/Dt*e,n=this.eyes===`dead`,r=e=>O(`span`,{class:`eye`,part:e},n?O(`span`,{class:`x`,"aria-hidden":`true`},`×`):null),i=O(`span`,{class:`eyes`,part:`eyes`,style:`--_eye:${e}px;--_border:${t}px`,role:`img`,"aria-label":n?`dead eyes`:`googly eyes`},r(`eye eye-left`),O(`slot`),r(`eye eye-right`));this.#e.replaceChildren(i),this.#t=Array.from(this.#e.querySelectorAll(`.eye`)),this.#s()}#i(){this.tracking&&this.eyes===`open`?this.#a():(this.#o(),this.#s())}#a(){this.#n||(this.#n=e=>this.#c(e),document.addEventListener(`mousemove`,this.#n))}#o(){this.#n&&=(document.removeEventListener(`mousemove`,this.#n),null)}#s(){for(let e of this.#t)e.style.setProperty(`--px`,`0px`),e.style.setProperty(`--py`,`0px`)}#c(e){for(let t of this.#t){let n=t.getBoundingClientRect(),r=n.left+n.width/2,i=n.top+n.height/2,a=Math.atan2(e.clientY-i,e.clientX-r),o=Math.min(Ot,Math.hypot(e.clientX-r,e.clientY-i)/kt);t.style.setProperty(`--px`,`${(Math.cos(a)*o).toFixed(2)}px`),t.style.setProperty(`--py`,`${(Math.sin(a)*o).toFixed(2)}px`)}}});var jt=k(`
|
|
766
1087
|
:host{display:block;font-family:var(--ui);}
|
|
767
1088
|
:host([hidden]){display:none;}
|
|
768
1089
|
.handoff{border:1px solid var(--line);border-radius:13px;padding:13px 15px;margin:2px 0 18px;}
|
|
@@ -782,7 +1103,7 @@ canvas.sprk {
|
|
|
782
1103
|
.opened .sg{width:20px;height:20px;border-radius:6px;display:grid;place-items:center;color:#fff;background:var(--rainbow);flex:0 0 auto;}
|
|
783
1104
|
.opened .sg svg{display:block;}
|
|
784
1105
|
.opened b{color:var(--ink);font-weight:600;}
|
|
785
|
-
`),
|
|
1106
|
+
`),Mt=`Handoff request from`;E(`slicc-handoff-card`,class extends HTMLElement{static observedAttributes=[`variant`,`name`,`pre`,`text`,`eyes`];#e;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[jt]}connectedCallback(){this.#t()}attributeChangedCallback(){this.isConnected&&this.#t()}get variant(){return this.getAttribute(`variant`)===`opened`?`opened`:`handoff`}set variant(e){this.setAttribute(`variant`,e===`opened`?`opened`:`handoff`)}get name(){return this.getAttribute(`name`)}set name(e){e==null?this.removeAttribute(`name`):this.setAttribute(`name`,e)}get pre(){return this.getAttribute(`pre`)}set pre(e){e==null?this.removeAttribute(`pre`):this.setAttribute(`pre`,e)}get text(){return this.getAttribute(`text`)}set text(e){e==null?this.removeAttribute(`text`):this.setAttribute(`text`,e)}get eyes(){return this.getAttribute(`eyes`)===`dead`?`dead`:`open`}set eyes(e){this.setAttribute(`eyes`,e===`dead`?`dead`:`open`)}#t(){this.variant===`opened`?this.#i():this.#r()}#n(){let e=this.text;return e==null?O(`slot`):document.createTextNode(e)}#r(){let e=this.pre??Mt,t=this.name,n=O(`slicc-googly-eyes`,{class:`eyes`});this.eyes===`dead`&&n.setAttribute(`eyes`,`dead`);let i=O(`div`,{class:`top`,part:`top`},O(`span`,{class:`av`,part:`avatar`},n),O(`span`,{class:`lbl2`,part:`label`},O(`span`,{class:`hand`,part:`hand`,"aria-hidden":`true`},r(`hand`,{size:13})),O(`span`,{class:`pre`},e),` `,t==null?null:O(`b`,{part:`name`},t))),a=O(`p`,{part:`text`},this.#n());this.#e.replaceChildren(O(`div`,{class:`handoff`,part:`card`},i,a))}#i(){let e=this.name,t=O(`span`,{class:`sg`,part:`glyph`,"aria-hidden":`true`},r(`sparkles`,{size:12})),n=O(`span`,{part:`text`},e==null?null:O(`b`,{part:`name`},e),e==null?null:` `,this.#n());this.#e.replaceChildren(O(`div`,{class:`opened`,part:`card`},t,n))}});var Nt=14,Pt=`event`,Ft={webhook:`webhook`,cron:`clock`,workflow:`workflow`,"session-reload":`rotate-ccw`,navigate:`compass`,upgrade:`circle-arrow-up`,sprinkle:`sparkles`,fswatch:`eye`,"scoop-notify":`bell-ring`,"scoop-idle":`moon`,"scoop-wait":`hourglass`,"sudo-request":`key-round`},It=`bell`;function Lt(e){return e&&Ft[e.toLowerCase()]||It}var Rt={confirmed:`circle-check`,dismissed:`circle-x`},zt=k(`
|
|
786
1107
|
:host{
|
|
787
1108
|
/* Licks are right-aligned in the chat column (mirroring the lickIn slide-in
|
|
788
1109
|
from the right): the host is a full-width flex row that pushes the card to
|
|
@@ -870,7 +1191,7 @@ canvas.sprk {
|
|
|
870
1191
|
:host([collapsed]) .lb{display:none;}
|
|
871
1192
|
|
|
872
1193
|
@keyframes lickIn{from{opacity:0;transform:translateX(16px)}to{opacity:1;transform:none}}
|
|
873
|
-
`),
|
|
1194
|
+
`),Bt=`·`;E(`slicc-lick-card`,class extends HTMLElement{static observedAttributes=[`kind`,`event-label`,`body`,`count`,`no-animate`,`collapsible`,`collapsed`,`theme`,`hue`,`state`];#e;#t=null;#n=null;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[zt]}connectedCallback(){this.#r()}disconnectedCallback(){this.#a()}attributeChangedCallback(){this.isConnected&&this.#r()}get kind(){return this.getAttribute(`kind`)}set kind(e){e==null?this.removeAttribute(`kind`):this.setAttribute(`kind`,e)}get eventLabel(){return this.getAttribute(`event-label`)}set eventLabel(e){e==null?this.removeAttribute(`event-label`):this.setAttribute(`event-label`,e)}get body(){return this.getAttribute(`body`)}set body(e){e==null?this.removeAttribute(`body`):this.setAttribute(`body`,e)}get count(){let e=Number.parseInt(this.getAttribute(`count`)??``,10);return Number.isFinite(e)&&e>0?e:1}set count(e){e>1?this.setAttribute(`count`,String(e)):this.removeAttribute(`count`)}get noAnimate(){return this.hasAttribute(`no-animate`)}set noAnimate(e){this.toggleAttribute(`no-animate`,e)}get collapsible(){return this.hasAttribute(`collapsible`)}set collapsible(e){this.toggleAttribute(`collapsible`,e)}get collapsed(){return this.hasAttribute(`collapsed`)}set collapsed(e){this.toggleAttribute(`collapsed`,e)}get theme(){let e=this.getAttribute(`theme`);return e===`light`||e===`dark`?e:null}set theme(e){e==null?this.removeAttribute(`theme`):this.setAttribute(`theme`,e)}get state(){let e=this.getAttribute(`state`);return e===`confirmed`||e===`dismissed`?e:`pending`}set state(e){e==null||e===`pending`?this.removeAttribute(`state`):this.setAttribute(`state`,e)}toggle(){this.collapsible&&(this.collapsed=!this.collapsed,this.dispatchEvent(new CustomEvent(`slicc-lick-toggle`,{detail:{collapsed:this.collapsed},bubbles:!0,composed:!0})))}#r(){let e=this.kind??``,t=this.count,n=this.getAttribute(`hue`);n?(this.style.setProperty(`--lick-pill`,n),this.style.setProperty(`--lick-pill-ink`,`#fff`)):(this.style.removeProperty(`--lick-pill`),this.style.removeProperty(`--lick-pill-ink`));let i=this.eventLabel??Pt,a=t>1?`${i} ×${t}`:i,o=this.body,s=this.collapsible,c=e?`lick ${Bt} ${e}`:`lick ${Bt}`,l=O(`span`,{class:`bell`,part:`bell`,"aria-hidden":!0});l.append(r(Lt(e),{size:Nt}));let u={class:`lh`,part:`header`};s&&(u.tabindex=`0`,u.role=`button`,u[`aria-expanded`]=this.collapsed?`false`:`true`);let d=O(`div`,u,l,` `,O(`span`,{class:`kind`,part:`kind`},`${c} `),O(`span`,{class:`lk`,part:`event`},a)),f=this.state;if(f!==`pending`){let e=O(`span`,{class:`status`,part:`status`,"aria-hidden":!0});e.append(r(Rt[f],{size:Nt})),d.append(e)}let p=O(`div`,{class:`lick`,part:`card`},d,O(`div`,{class:`lb`,part:`body`},o??O(`slot`)));this.#e.replaceChildren(p),this.#i()}#i(){if(this.#a(),!this.collapsible)return;let e=this.#e.querySelector(`.lh`);e&&(this.#t=()=>this.toggle(),this.#n=e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),this.toggle())},e.addEventListener(`click`,this.#t),e.addEventListener(`keydown`,this.#n))}#a(){let e=this.#e.querySelector(`.lh`);e&&this.#t&&e.removeEventListener(`click`,this.#t),e&&this.#n&&e.removeEventListener(`keydown`,this.#n),this.#t=null,this.#n=null}});var Vt=`
|
|
874
1195
|
slicc-tool-cluster {
|
|
875
1196
|
display: block;
|
|
876
1197
|
margin: -2px 0 16px;
|
|
@@ -946,7 +1267,7 @@ slicc-tool-cluster[open] .slicc-cluster__body {
|
|
|
946
1267
|
slicc-tool-cluster .slicc-cluster__body slicc-action-row {
|
|
947
1268
|
margin-bottom: 4px;
|
|
948
1269
|
}
|
|
949
|
-
`,
|
|
1270
|
+
`,Ht=`slicc-tool-cluster-style`;function Ut(e){if(e.getElementById(Ht))return;let t=e.createElement(`style`);t.id=Ht,t.textContent=Vt,(e.head??e.documentElement).appendChild(t)}var Wt=`A few quick steps`;E(`slicc-tool-cluster`,class extends HTMLElement{static observedAttributes=[`open`,`label`,`count`];#e;#t;#n;#r;#i=!1;#a=()=>{this.open=!this.open};connectedCallback(){Ut(this.ownerDocument),this.#o(),this.#s(),this.#e?.addEventListener(`click`,this.#a)}disconnectedCallback(){this.#e?.removeEventListener(`click`,this.#a)}attributeChangedCallback(e,t,n){t===n||!this.#i||(e===`open`?(this.#e.setAttribute(`aria-expanded`,String(n!==null)),this.dispatchEvent(new CustomEvent(`slicc-tool-cluster-toggle`,{bubbles:!0,composed:!0,detail:{open:n!==null}}))):this.#s())}get open(){return this.hasAttribute(`open`)}set open(e){this.toggleAttribute(`open`,e)}get label(){return this.getAttribute(`label`)??Wt}set label(e){e==null?this.removeAttribute(`label`):this.setAttribute(`label`,e)}get count(){let e=Number.parseInt(this.getAttribute(`count`)??``,10);return Number.isFinite(e)&&e>0?e:0}set count(e){e>0?this.setAttribute(`count`,String(e)):this.removeAttribute(`count`)}get body(){return this.#o(),this.#r}append(...e){this.#o(),this.#r.append(...e),this.#s()}#o(){if(this.#i)return;this.#i=!0;let e=Array.from(this.childNodes).filter(e=>!(e instanceof HTMLElement&&e.classList.contains(`slicc-cluster__head`))&&!(e instanceof HTMLElement&&e.classList.contains(`slicc-cluster__body`)));this.#e=this.ownerDocument.createElement(`button`),this.#e.type=`button`,this.#e.className=`slicc-cluster__head`,this.#e.setAttribute(`part`,`head`),this.#t=O(`span`,{class:`slicc-cluster__label`,part:`label`}),this.#n=O(`span`,{class:`slicc-cluster__count`,part:`count`}),D(this.#e,[O(`span`,{class:`slicc-cluster__ic`,part:`icon`},r(`layers`,{size:12})),this.#t,this.#n,O(`span`,{class:`slicc-cluster__chev`,part:`chevron`,"aria-hidden":`true`},`▸`)]),this.#r=this.ownerDocument.createElement(`div`),this.#r.className=`slicc-cluster__body`,this.#r.setAttribute(`part`,`body`);for(let t of e)this.#r.appendChild(t);this.replaceChildren(this.#e,this.#r),this.#e.addEventListener(`click`,this.#a)}#s(){if(!this.#i)return;this.#t.textContent=this.label;let e=this.count||this.#r.children.length;this.#n.textContent=e>0?`${e} steps`:``,this.#e.setAttribute(`aria-expanded`,String(this.open))}});var Gt=400,Kt=k(`
|
|
950
1271
|
:host{position:fixed;inset:0;z-index:1000;display:none;}
|
|
951
1272
|
:host([open]){display:block;}
|
|
952
1273
|
.overlay{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;cursor:pointer;}
|
|
@@ -954,7 +1275,7 @@ slicc-tool-cluster .slicc-cluster__body slicc-action-row {
|
|
|
954
1275
|
.overlay.visible .backdrop{opacity:1;}
|
|
955
1276
|
.overlay.closing .backdrop{opacity:0;}
|
|
956
1277
|
.image{position:absolute;border-radius:6px;box-shadow:0 20px 60px rgba(0,0,0,.4),0 8px 20px rgba(0,0,0,.3);max-width:90vw;max-height:90vh;object-fit:contain;transform-origin:center center;will-change:transform;transition:transform .35s cubic-bezier(.2,0,.13,1),border-radius .35s cubic-bezier(.2,0,.13,1);}
|
|
957
|
-
`),
|
|
1278
|
+
`),qt=null,Jt=class extends HTMLElement{#e;#t=null;#n=null;#r=null;#i=null;#a=!1;#o=null;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[Kt]}disconnectedCallback(){this.#l(),qt===this&&(qt=null)}get src(){return this.getAttribute(`src`)}set src(e){e==null?this.removeAttribute(`src`):this.setAttribute(`src`,e)}get isOpen(){return this.hasAttribute(`open`)}open(e,t){qt&&qt!==this&&qt.#s(),this.#l(),this.#a=!1,this.src=e,this.setAttribute(`open`,``),qt=this,this.#r=t??this;let n=document.createElement(`div`);n.className=`overlay`,n.setAttribute(`part`,`overlay`);let r=document.createElement(`div`);r.className=`backdrop`,r.setAttribute(`part`,`backdrop`),n.appendChild(r);let i=document.createElement(`img`);i.className=`image`,i.setAttribute(`part`,`image`),i.src=e,i.alt=`Image preview`,n.appendChild(i),this.#e.appendChild(n),this.#t=n,this.#n=i;let a=this.#r.getBoundingClientRect(),o=()=>{let e=window.innerWidth,t=window.innerHeight,r=e*.9,o=t*.9,s=i.naturalWidth||a.width*4,c=i.naturalHeight||a.height*4,l=Math.min(r/s,o/c,1),u=s*l,d=c*l,f=(e-u)/2,p=(t-d)/2,m=a.width/u,h=a.height/d,g=a.left+a.width/2,ee=a.top+a.height/2,te=f+u/2,_=p+d/2,v=g-te,y=ee-_;i.style.position=`absolute`,i.style.width=`${u}px`,i.style.height=`${d}px`,i.style.left=`${f}px`,i.style.top=`${p}px`,i.style.transform=`translate(${v}px, ${y}px) scale(${m}, ${h})`,i.style.borderRadius=`${6/Math.min(m,h)}px`,requestAnimationFrame(()=>{requestAnimationFrame(()=>{i.style.transform=`translate(0, 0) scale(1, 1)`,i.style.borderRadius=`6px`,n.classList.add(`visible`)})})};i.complete&&i.naturalWidth>0?o():(i.onload=()=>o(),i.onerror=()=>this.#s()),this.#i=e=>{e.key===`Escape`&&this.close()},n.addEventListener(`click`,()=>this.close()),document.addEventListener(`keydown`,this.#i),this.dispatchEvent(new CustomEvent(`slicc-image-preview-open`,{bubbles:!0,composed:!0,detail:{src:e}}))}close(){let e=this.#t,t=this.#n;if(this.#a||!e||!t||qt!==this)return;this.#a=!0,e.classList.add(`closing`),e.classList.remove(`visible`);let n=this.#r,r=n?n.getBoundingClientRect():null;if(r&&r.width>0&&r.height>0){let e=t.getBoundingClientRect(),n=r.width/e.width,i=r.height/e.height,a=r.left+r.width/2,o=r.top+r.height/2,s=e.left+e.width/2,c=e.top+e.height/2,l=a-s,u=o-c;t.style.transform=`translate(${l}px, ${u}px) scale(${n}, ${i})`,t.style.borderRadius=`${6/Math.min(n,i)}px`}this.dispatchEvent(new CustomEvent(`slicc-image-preview-close`,{bubbles:!0,composed:!0,detail:{src:this.src}}));let i=()=>this.#c();this.#o=setTimeout(i,Gt),e.addEventListener(`transitionend`,e=>{e.propertyName===`transform`&&(this.#o&&clearTimeout(this.#o),i())})}#s(){this.#l()}#c(){this.#l()}#l(){this.#o&&=(clearTimeout(this.#o),null),this.#i&&=(document.removeEventListener(`keydown`,this.#i),null),this.#t&&=(this.#t.remove(),null),this.#n=null,this.#r=null,this.removeAttribute(`open`),this.removeAttribute(`src`),qt===this&&(qt=null)}static show(e,t){let n=document.querySelector(`slicc-image-preview[data-shared]`);return n||(n=document.createElement(`slicc-image-preview`),n.setAttribute(`data-shared`,``),document.body.appendChild(n)),n.open(e,t),()=>n.close()}};E(`slicc-image-preview`,Jt);var Yt=k(`
|
|
958
1279
|
:host{display:block;margin-bottom:18px;font-family:var(--ui);font-size:15px;line-height:1.5;}
|
|
959
1280
|
:host([hidden]){display:none;}
|
|
960
1281
|
.msg{display:flex;justify-content:flex-end;}
|
|
@@ -994,7 +1315,7 @@ slicc-tool-cluster .slicc-cluster__body slicc-action-row {
|
|
|
994
1315
|
:host([queued]) .b{opacity:.62;}
|
|
995
1316
|
.queued-tag{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;color:var(--txt-3);}
|
|
996
1317
|
.queued-tag svg{display:block;}
|
|
997
|
-
`),
|
|
1318
|
+
`),Xt={image:`image`,text:`file-text`,file:`file`};function Zt(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}E(`slicc-user-message`,class extends HTMLElement{static observedAttributes=[`text`,`queued`];#e;#t=null;#n=[];constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[Yt]}connectedCallback(){this.#a()}attributeChangedCallback(){this.isConnected&&this.#a()}get text(){return this.getAttribute(`text`)}set text(e){e==null?this.removeAttribute(`text`):this.setAttribute(`text`,e)}get queued(){return this.hasAttribute(`queued`)}set queued(e){this.toggleAttribute(`queued`,e)}setBodyHtml(e){this.#t=e,this.#a()}setAttachments(e){this.#n=e.slice(),this.#a()}#r(){if(this.#t!=null)return this.ownerDocument.createRange().createContextualFragment(this.#t);let e=this.text;return e==null?O(`slot`):this.ownerDocument.createTextNode(e)}#i(e){let t=e.kind??`file`,n=O(`span`,{class:`attachment-chip__visual`});if(t===`image`&&e.src){let t=O(`img`,{src:e.src,alt:e.name||`Attached image`});t.addEventListener(`click`,n=>{n.stopPropagation(),Jt.show(e.src,t)}),n.append(t)}else n.append(r(Xt[t],{size:16}));let i=e.size==null?e.mime:`${e.mime||`file`} · ${Zt(e.size)}`,a=O(`span`,{class:`attachment-chip__body`},O(`span`,{class:`attachment-chip__name`},e.name),i?O(`span`,{class:`attachment-chip__meta`},i):null);return O(`div`,{class:`attachment-chip attachment-chip--${t}`},n,a)}#a(){let e=this.#n.length>0,t=this.text!=null||this.#t!=null,n=this.childNodes.length>0,i=t||n||!e,a=O(`div`,{class:`stack`,part:`stack`});if(e){let e=O(`div`,{class:`attachments`,part:`attachments`});for(let t of this.#n)e.append(this.#i(t));a.append(e)}i&&a.append(O(`div`,{class:`b`,part:`bubble`},this.#r())),this.queued&&a.append(O(`span`,{class:`queued-tag`,part:`queued`},r(`clock`,{size:11}),`queued`));let o=O(`div`,{class:`msg user`,part:`message`},a);this.#e.replaceChildren(o)}});var Qt=`
|
|
998
1319
|
slicc-composer {
|
|
999
1320
|
flex: 0 0 auto;
|
|
1000
1321
|
display: block;
|
|
@@ -1281,7 +1602,7 @@ slicc-composer .slicc-composer__ptt.is-picking {
|
|
|
1281
1602
|
animation-name: none;
|
|
1282
1603
|
}
|
|
1283
1604
|
}
|
|
1284
|
-
`,xt=`slicc-composer-style`;function St(e){if(e.getElementById(xt))return;let t=e.createElement(`style`);t.id=xt,t.textContent=bt,(e.head??e.documentElement).appendChild(t)}var Ct=3e3,wt=60,Tt=1e4,Et=45e3;function Dt(e,t,n){return new Promise((r,i)=>{let a=setTimeout(()=>i(n),t);e.then(e=>{clearTimeout(a),r(e)},e=>{clearTimeout(a),i(e instanceof Error?e:Error(String(e)))})})}var Ot=`slicc-composer:mic-device`;function kt(){try{return typeof localStorage>`u`?null:localStorage.getItem(Ot)}catch{return null}}function At(e){try{if(typeof localStorage>`u`)return;e?localStorage.setItem(Ot,e):localStorage.removeItem(Ot)}catch{}}function jt(e){return e==null||!Number.isFinite(e)?``:e<60?`~${Math.max(1,Math.round(e))}s`:`~${Math.floor(e/60)}m ${Math.round(e%60)}s`}v(`slicc-composer`,class extends HTMLElement{static observedAttributes=[`open`];#e;#t=!1;#n=null;#r=`idle`;#i=!1;#a=0;#o=null;#s=null;#c=null;#l=null;#u=null;#d=`unknown`;#f=kt();#p=null;#m=null;#h=null;#g=null;#_=null;#v=null;#y=null;#b=null;#x=null;#S=null;#C=[];connectedCallback(){St(this.ownerDocument),this.#w(),this.addEventListener(`pointerdown`,this.#T)}disconnectedCallback(){this.removeEventListener(`pointerdown`,this.#T),this.#c?.cancel(),this.#c=null,this.#k(),this.#i=!1,this.#o=null,this.#a++,this.#L(),this.#F(),this.#p&&clearTimeout(this.#p),this.#p=null,this.#I(),this.#U(),this.#Q()}attributeChangedCallback(){}get open(){return this.hasAttribute(`open`)}set open(e){e?this.setAttribute(`open`,``):this.removeAttribute(`open`)}get speech(){return this.#u??=s(),this.#u}set speech(e){this.#u=e,this.#d=`unknown`}get device(){return this.#f}set device(e){this.#f=e,At(e)}get inner(){return this.#w(),this.#e}append(...e){this.#w(),this.#e.append(...e)}#w(){if(this.#t)return;this.#t=!0;let e=this.querySelector(`:scope > .slicc-composer__inner`);if(e instanceof HTMLElement){this.#e=e;return}let t=Array.from(this.childNodes);this.#e=this.ownerDocument.createElement(`div`),this.#e.className=`slicc-composer__inner`,this.#e.setAttribute(`part`,`inner`);for(let e of t)this.#e.appendChild(e);this.appendChild(this.#e)}#T=e=>{if(!this.hasAttribute(`ptt`)||!e.isPrimary||this.#i||e.button!==0||this.#r===`finalizing`||this.#r===`picking`)return;let t=e.target?.closest?.(`textarea`);if(!(t instanceof HTMLTextAreaElement)||!this.contains(t))return;this.#i=!0,this.#a++,this.#o=t,this.#s=e.pointerId;try{this.setPointerCapture(e.pointerId)}catch{}this.setAttribute(`data-ptt-pressed`,``),this.ownerDocument.addEventListener(`pointerup`,this.#A),this.addEventListener(`pointercancel`,this.#j);let n=this.#a;this.#m=setTimeout(()=>{this.#m=null,this.#E(this.speech,n)},100)};async#E(e,t){let n=await Promise.race([e.permission().then(e=>(this.#d=e,e)),new Promise(e=>setTimeout(()=>e(`pending`),wt))]);if(!(t!==this.#a||!this.#i)){if(n===`granted`){this.#O(e,t);return}if(n===`denied`){this.#G(`denied`);return}this.#G(`enable`),this.#p=setTimeout(()=>{this.#p=null,this.#D(e,t)},Ct),n===`pending`&&e.permission().then(n=>{this.#d=n,!(t!==this.#a||!this.#i||this.#r!==`enable`)&&(n===`granted`?(this.#P(),this.#O(e,t)):n===`denied`&&(this.#P(),this.#G(`denied`)))})}}#D(e,t){t!==this.#a||!this.#i||this.#r!==`enable`||(this.#_=null,this.#G(`prompting`),Dt(e.requestPermission(),Tt,Error(`Microphone didn't respond. Check your mic, then hold again.`)).then(n=>{this.#d=n?`granted`:`denied`,n&&e.warmup(),t===this.#a&&(n&&this.#i?this.#O(e,t):n?this.#Q():this.#i?this.#G(`denied`):this.#Q())}).catch(e=>{this.#d=`denied`,t===this.#a&&(this.#i?(this.#_=e instanceof Error?e.message:String(e),this.#G(`denied`)):this.#Q())}))}#O(e,t){this.#r=`recording`,this.#G(`recording`),e.warmup(),this.#h?.(),this.#h=e.onStatus(e=>{this.#g=e,this.#X()}),e.microphones().then(e=>{t===this.#a&&o(e)&&this.#Z(e)});let n=e.start({deviceId:this.#f??void 0,onPartial:e=>{t===this.#a&&this.#Y(e)},onError:e=>{t===this.#a&&this.#Y(e,!0)}});this.#l=n,n.then(e=>{if(this.#l===n){if(this.#l=null,t!==this.#a||this.#r!==`recording`){e.cancel();return}this.#c=e}}).catch(e=>{this.#l===n&&(this.#l=null,t===this.#a&&this.#Y(e instanceof Error?e.message:String(e),!0))})}#k(){let e=this.#l;this.#l=null,e&&e.then(e=>e.cancel(),()=>{})}#A=e=>{if(!this.#i||this.#s!=null&&e.pointerId!==this.#s)return;let t=this.#x,n=!1;if(this.#r===`recording`&&t&&!t.hidden)if(e.composedPath().includes(t))n=!0;else{let r=this.ownerDocument.elementFromPoint(e.clientX,e.clientY);n=r!=null&&t.contains(r)}if(n){this.#i=!1,this.#L(),this.#I(),this.#c?.cancel(),this.#c=null,this.#k(),this.#o=null,this.#R();return}this.#M(!0)};#j=e=>{this.#s!=null&&e.pointerId!==this.#s||this.#M(!1)};#M(e){if(!this.#i)return;switch(this.#i=!1,this.#F(),this.#L(),this.#I(),this.#r){case`enable`:this.#P(),this.#o=null,this.#Q();return;case`prompting`:this.#o=null;return;case`denied`:this.#o=null,this.#Q();return;case`recording`:break;default:this.#o=null,this.#Q();return}let t=this.#c;this.#c=null;let n=this.#l;if(this.#l=null,!e){t?.cancel(),n&&n.then(e=>e.cancel(),()=>{}),this.#o=null,this.#Q();return}if(!t&&!n){this.#o=null,this.#Q();return}this.#r=`finalizing`,this.#Y(`Transcribing…`);let r=this.#a;Dt((t?Promise.resolve(t):n).then(e=>e.stop()),Et,Error(`finalize timed out`)).then(e=>{r===this.#a&&(this.#Q(),this.#N(e))}).catch(()=>{r===this.#a&&(this.#Q(),this.#o=null)})}#N(e){let t=this.#o;if(this.#o=null,!t)return;let n=e.trim();if(!n){t.focus();return}t.value=t.value?/\s$/.test(t.value)?t.value+n:`${t.value} ${n}`:n,t.dispatchEvent(new Event(`input`,{bubbles:!0})),t.focus();let r=t.closest(`slicc-input-card`);r&&typeof r.submit==`function`?r.submit(`dictation`):t.dispatchEvent(new CustomEvent(`submit`,{bubbles:!0,composed:!0,detail:{value:t.value,source:`dictation`}}))}#P(){this.#p&&clearTimeout(this.#p),this.#p=null}#F(){this.#m&&clearTimeout(this.#m),this.#m=null}#I(){this.ownerDocument.removeEventListener(`pointerup`,this.#A),this.removeEventListener(`pointercancel`,this.#j)}#L(){let e=this.#s;if(this.#s=null,this.removeAttribute(`data-ptt-pressed`),e!=null)try{this.releasePointerCapture(e)}catch{}}#R(){this.#r=`picking`,this.#J(`picking`),this.#v&&(this.#v.textContent=`Choose a microphone`),this.#y&&(this.#y.hidden=!0),this.#z();let e=this.ownerDocument;e.addEventListener(`pointerdown`,this.#V,!0),e.addEventListener(`keydown`,this.#H,!0)}#z(){let e=this.#x;if(!e||this.#S)return;let t=b(`div`,{class:`slicc-composer__ptt-device-menu`,role:`menu`}),n=null;for(let e of this.#C){let i=e.deviceId===this.#f,a=b(`button`,{type:`button`,class:`slicc-composer__ptt-device-item`,role:`menuitemradio`,"aria-checked":i?`true`:`false`,"data-device-id":e.deviceId},e.label,b(`span`,{class:`tick`},r(`check`,{size:14})));a.addEventListener(`click`,()=>{this.device=e.deviceId,this.#W()}),(i||!n)&&(n=a),t.appendChild(a)}this.#S=t,e.appendChild(t),this.#B(t,e),n?.focus()}#B(e,t){let n=t.getBoundingClientRect(),r=(window.innerHeight||document.documentElement.clientHeight)-n.bottom-6-8,i=n.top-6-8,a=e.offsetHeight>r&&i>r;e.classList.toggle(`slicc-composer__ptt-device-menu--up`,a);let o=Math.max(a?i:r,0);e.style.maxHeight=`${Math.min(320,o)}px`}#V=e=>{this.#x&&e.composedPath().includes(this.#x)||this.#W()};#H=e=>{e.key===`Escape`&&(e.stopPropagation(),this.#W())};#U(){let e=this.ownerDocument;e.removeEventListener(`pointerdown`,this.#V,!0),e.removeEventListener(`keydown`,this.#H,!0)}#W(){this.#U(),this.#Q()}#G(e){switch(this.#r=e,this.#n||(this.#n=b(`div`,{class:`slicc-composer__ptt`,"data-ptt":!0,role:`button`}),this.appendChild(this.#n)),this.#J(e),e){case`enable`:this.#K(r(`mic`,{size:28}),`Hold to enable push to talk`,this.#q(`Requesting microphone access when the bar fills`)),this.#n.setAttribute(`aria-label`,`Hold to enable push to talk`);break;case`prompting`:this.#K(r(`mic`,{size:28}),`Allow microphone access in the browser prompt`,this.#q(`Waiting for permission…`)),this.#n.setAttribute(`aria-label`,`Waiting for microphone permission`);break;case`denied`:{let e=this.#_?`Microphone unavailable`:`Microphone access is blocked`,t=this.#_??`Enable the microphone for this site in your browser settings, then hold again.`;this.#K(r(`mic-off`,{size:28}),e,b(`div`,{class:`slicc-composer__ptt-load-text`},t)),this.#n.setAttribute(`aria-label`,e);break}case`recording`:{this.#x=b(`div`,{class:`slicc-composer__ptt-device`,hidden:!0}),this.#y=b(`div`,{class:`slicc-composer__ptt-caption`,"aria-live":`polite`,hidden:!0}),this.#b=b(`div`,{class:`slicc-composer__ptt-status`,hidden:!0});let e=b(`div`,{class:`slicc-composer__ptt-microw`},b(`div`,{class:`slicc-composer__ptt-mic`},r(`mic`,{size:28})),this.#x);this.#v=b(`div`,{class:`slicc-composer__ptt-label`},`Listening — release to send`),this.#n.replaceChildren(e,this.#v,this.#y,this.#b),this.#n.setAttribute(`aria-label`,`Listening — release to send`),this.#X();break}}}#K(e,t,n){this.#n&&(this.#v=b(`div`,{class:`slicc-composer__ptt-label`},t),this.#y=null,this.#b=null,this.#x=null,this.#S=null,this.#C=[],this.#n.replaceChildren(b(`div`,{class:`slicc-composer__ptt-mic`},e),this.#v,n))}#q(e){return b(`div`,{class:`slicc-composer__ptt-load`},b(`span`,{class:`slicc-composer__ptt-load-text`},e),b(`div`,{class:`slicc-composer__ptt-bar`},b(`div`,{class:`slicc-composer__ptt-bar-fill`})))}#J(e){this.#n&&(this.#n.classList.remove(`is-enable`,`is-prompting`,`is-denied`,`is-recording`,`is-finalizing`,`is-picking`),e!==`idle`&&this.#n.classList.add(`is-${e}`))}#Y(e,t=!1){let n=this.#y;if(!n)return;let r=e.trim().split(/\s+/).filter(Boolean);if(r.length===0){n.hidden=!0;return}n.textContent=r.slice(-8).join(` `),n.classList.toggle(`is-error`,t),n.hidden=!1}#X(){let e=this.#b;if(!e)return;let t=this.#g;if(t?.state===`downloading`){if(t.download){let n=jt(t.download.etaSeconds??null);e.textContent=n?`Better speech recognition downloading · ready in ${n}`:`Better speech recognition downloading…`}else e.textContent=`Preparing enhanced speech…`;e.classList.remove(`is-error`),e.hidden=!1}else t?.state===`ready`&&t.engine===`enhanced`?(e.textContent=`Enhanced speech recognition`,e.classList.remove(`is-error`),e.hidden=!1):t?.state===`unavailable`&&t.message?(e.textContent=t.message,e.classList.add(`is-error`),e.hidden=!1):(e.classList.remove(`is-error`),e.hidden=!0)}#Z(e){let t=this.#x;if(!t)return;this.#C=e;let n=b(`button`,{type:`button`,class:`slicc-composer__ptt-device-btn`,"aria-label":`Choose a microphone`,"aria-haspopup":`menu`,title:`Choose a microphone`},r(`chevron-down`,{size:12}));n.addEventListener(`pointerdown`,e=>e.stopPropagation()),t.replaceChildren(n),t.hidden=!1}#Q(){this.#h?.(),this.#h=null,this.#n?.remove(),this.#n=null,this.#v=null,this.#y=null,this.#b=null,this.#x=null,this.#S=null,this.#C=[],this.#_=null,this.#r=`idle`}});var Mt=`
|
|
1605
|
+
`,$t=`slicc-composer-style`;function en(e){if(e.getElementById($t))return;let t=e.createElement(`style`);t.id=$t,t.textContent=Qt,(e.head??e.documentElement).appendChild(t)}var tn=3e3,nn=60,rn=1e4,an=45e3;function on(e,t,n){return new Promise((r,i)=>{let a=setTimeout(()=>i(n),t);e.then(e=>{clearTimeout(a),r(e)},e=>{clearTimeout(a),i(e instanceof Error?e:Error(String(e)))})})}var sn=`slicc-composer:mic-device`;function cn(){try{return typeof localStorage>`u`?null:localStorage.getItem(sn)}catch{return null}}function ln(e){try{if(typeof localStorage>`u`)return;e?localStorage.setItem(sn,e):localStorage.removeItem(sn)}catch{}}function un(e){return e==null||!Number.isFinite(e)?``:e<60?`~${Math.max(1,Math.round(e))}s`:`~${Math.floor(e/60)}m ${Math.round(e%60)}s`}E(`slicc-composer`,class extends HTMLElement{static observedAttributes=[`open`];#e;#t=!1;#n=null;#r=`idle`;#i=!1;#a=0;#o=null;#s=null;#c=null;#l=null;#u=null;#d=`unknown`;#f=cn();#p=null;#m=null;#h=null;#g=null;#_=null;#v=null;#y=null;#b=null;#x=null;#S=null;#C=[];connectedCallback(){en(this.ownerDocument),this.#w(),this.addEventListener(`pointerdown`,this.#T)}disconnectedCallback(){this.removeEventListener(`pointerdown`,this.#T),this.#c?.cancel(),this.#c=null,this.#k(),this.#i=!1,this.#o=null,this.#a++,this.#L(),this.#F(),this.#p&&clearTimeout(this.#p),this.#p=null,this.#I(),this.#U(),this.#Q()}attributeChangedCallback(){}get open(){return this.hasAttribute(`open`)}set open(e){e?this.setAttribute(`open`,``):this.removeAttribute(`open`)}get speech(){return this.#u??=s(),this.#u}set speech(e){this.#u=e,this.#d=`unknown`}get device(){return this.#f}set device(e){this.#f=e,ln(e)}get inner(){return this.#w(),this.#e}append(...e){this.#w(),this.#e.append(...e)}#w(){if(this.#t)return;this.#t=!0;let e=this.querySelector(`:scope > .slicc-composer__inner`);if(e instanceof HTMLElement){this.#e=e;return}let t=Array.from(this.childNodes);this.#e=this.ownerDocument.createElement(`div`),this.#e.className=`slicc-composer__inner`,this.#e.setAttribute(`part`,`inner`);for(let e of t)this.#e.appendChild(e);this.appendChild(this.#e)}#T=e=>{if(!this.hasAttribute(`ptt`)||!e.isPrimary||this.#i||e.button!==0||this.#r===`finalizing`||this.#r===`picking`)return;let t=e.target?.closest?.(`textarea`);if(!(t instanceof HTMLTextAreaElement)||!this.contains(t))return;this.#i=!0,this.#a++,this.#o=t,this.#s=e.pointerId;try{this.setPointerCapture(e.pointerId)}catch{}this.setAttribute(`data-ptt-pressed`,``),this.ownerDocument.addEventListener(`pointerup`,this.#A),this.addEventListener(`pointercancel`,this.#j);let n=this.#a;this.#m=setTimeout(()=>{this.#m=null,this.#E(this.speech,n)},100)};async#E(e,t){let n=await Promise.race([e.permission().then(e=>(this.#d=e,e)),new Promise(e=>setTimeout(()=>e(`pending`),nn))]);if(!(t!==this.#a||!this.#i)){if(n===`granted`){this.#O(e,t);return}if(n===`denied`){this.#G(`denied`);return}this.#G(`enable`),this.#p=setTimeout(()=>{this.#p=null,this.#D(e,t)},tn),n===`pending`&&e.permission().then(n=>{this.#d=n,!(t!==this.#a||!this.#i||this.#r!==`enable`)&&(n===`granted`?(this.#P(),this.#O(e,t)):n===`denied`&&(this.#P(),this.#G(`denied`)))})}}#D(e,t){t!==this.#a||!this.#i||this.#r!==`enable`||(this.#_=null,this.#G(`prompting`),on(e.requestPermission(),rn,Error(`Microphone didn't respond. Check your mic, then hold again.`)).then(n=>{this.#d=n?`granted`:`denied`,n&&e.warmup(),t===this.#a&&(n&&this.#i?this.#O(e,t):n?this.#Q():this.#i?this.#G(`denied`):this.#Q())}).catch(e=>{this.#d=`denied`,t===this.#a&&(this.#i?(this.#_=e instanceof Error?e.message:String(e),this.#G(`denied`)):this.#Q())}))}#O(e,t){this.#r=`recording`,this.#G(`recording`),e.warmup(),this.#h?.(),this.#h=e.onStatus(e=>{this.#g=e,this.#X()}),e.microphones().then(e=>{t===this.#a&&o(e)&&this.#Z(e)});let n=e.start({deviceId:this.#f??void 0,onPartial:e=>{t===this.#a&&this.#Y(e)},onError:e=>{t===this.#a&&this.#Y(e,!0)}});this.#l=n,n.then(e=>{if(this.#l===n){if(this.#l=null,t!==this.#a||this.#r!==`recording`){e.cancel();return}this.#c=e}}).catch(e=>{this.#l===n&&(this.#l=null,t===this.#a&&this.#Y(e instanceof Error?e.message:String(e),!0))})}#k(){let e=this.#l;this.#l=null,e&&e.then(e=>e.cancel(),()=>{})}#A=e=>{if(!this.#i||this.#s!=null&&e.pointerId!==this.#s)return;let t=this.#x,n=!1;if(this.#r===`recording`&&t&&!t.hidden)if(e.composedPath().includes(t))n=!0;else{let r=this.ownerDocument.elementFromPoint(e.clientX,e.clientY);n=r!=null&&t.contains(r)}if(n){this.#i=!1,this.#L(),this.#I(),this.#c?.cancel(),this.#c=null,this.#k(),this.#o=null,this.#R();return}this.#M(!0)};#j=e=>{this.#s!=null&&e.pointerId!==this.#s||this.#M(!1)};#M(e){if(!this.#i)return;switch(this.#i=!1,this.#F(),this.#L(),this.#I(),this.#r){case`enable`:this.#P(),this.#o=null,this.#Q();return;case`prompting`:this.#o=null;return;case`denied`:this.#o=null,this.#Q();return;case`recording`:break;default:this.#o=null,this.#Q();return}let t=this.#c;this.#c=null;let n=this.#l;if(this.#l=null,!e){t?.cancel(),n&&n.then(e=>e.cancel(),()=>{}),this.#o=null,this.#Q();return}if(!t&&!n){this.#o=null,this.#Q();return}this.#r=`finalizing`,this.#Y(`Transcribing…`);let r=this.#a;on((t?Promise.resolve(t):n).then(e=>e.stop()),an,Error(`finalize timed out`)).then(e=>{r===this.#a&&(this.#Q(),this.#N(e))}).catch(()=>{r===this.#a&&(this.#Q(),this.#o=null)})}#N(e){let t=this.#o;if(this.#o=null,!t)return;let n=e.trim();if(!n){t.focus();return}t.value=t.value?/\s$/.test(t.value)?t.value+n:`${t.value} ${n}`:n,t.dispatchEvent(new Event(`input`,{bubbles:!0})),t.focus();let r=t.closest(`slicc-input-card`);r&&typeof r.submit==`function`?r.submit(`dictation`):t.dispatchEvent(new CustomEvent(`submit`,{bubbles:!0,composed:!0,detail:{value:t.value,source:`dictation`}}))}#P(){this.#p&&clearTimeout(this.#p),this.#p=null}#F(){this.#m&&clearTimeout(this.#m),this.#m=null}#I(){this.ownerDocument.removeEventListener(`pointerup`,this.#A),this.removeEventListener(`pointercancel`,this.#j)}#L(){let e=this.#s;if(this.#s=null,this.removeAttribute(`data-ptt-pressed`),e!=null)try{this.releasePointerCapture(e)}catch{}}#R(){this.#r=`picking`,this.#J(`picking`),this.#v&&(this.#v.textContent=`Choose a microphone`),this.#y&&(this.#y.hidden=!0),this.#z();let e=this.ownerDocument;e.addEventListener(`pointerdown`,this.#V,!0),e.addEventListener(`keydown`,this.#H,!0)}#z(){let e=this.#x;if(!e||this.#S)return;let t=O(`div`,{class:`slicc-composer__ptt-device-menu`,role:`menu`}),n=null;for(let e of this.#C){let i=e.deviceId===this.#f,a=O(`button`,{type:`button`,class:`slicc-composer__ptt-device-item`,role:`menuitemradio`,"aria-checked":i?`true`:`false`,"data-device-id":e.deviceId},e.label,O(`span`,{class:`tick`},r(`check`,{size:14})));a.addEventListener(`click`,()=>{this.device=e.deviceId,this.#W()}),(i||!n)&&(n=a),t.appendChild(a)}this.#S=t,e.appendChild(t),this.#B(t,e),n?.focus()}#B(e,t){let n=t.getBoundingClientRect(),r=(window.innerHeight||document.documentElement.clientHeight)-n.bottom-6-8,i=n.top-6-8,a=e.offsetHeight>r&&i>r;e.classList.toggle(`slicc-composer__ptt-device-menu--up`,a);let o=Math.max(a?i:r,0);e.style.maxHeight=`${Math.min(320,o)}px`}#V=e=>{this.#x&&e.composedPath().includes(this.#x)||this.#W()};#H=e=>{e.key===`Escape`&&(e.stopPropagation(),this.#W())};#U(){let e=this.ownerDocument;e.removeEventListener(`pointerdown`,this.#V,!0),e.removeEventListener(`keydown`,this.#H,!0)}#W(){this.#U(),this.#Q()}#G(e){switch(this.#r=e,this.#n||(this.#n=O(`div`,{class:`slicc-composer__ptt`,"data-ptt":!0,role:`button`}),this.appendChild(this.#n)),this.#J(e),e){case`enable`:this.#K(r(`mic`,{size:28}),`Hold to enable push to talk`,this.#q(`Requesting microphone access when the bar fills`)),this.#n.setAttribute(`aria-label`,`Hold to enable push to talk`);break;case`prompting`:this.#K(r(`mic`,{size:28}),`Allow microphone access in the browser prompt`,this.#q(`Waiting for permission…`)),this.#n.setAttribute(`aria-label`,`Waiting for microphone permission`);break;case`denied`:{let e=this.#_?`Microphone unavailable`:`Microphone access is blocked`,t=this.#_??`Enable the microphone for this site in your browser settings, then hold again.`;this.#K(r(`mic-off`,{size:28}),e,O(`div`,{class:`slicc-composer__ptt-load-text`},t)),this.#n.setAttribute(`aria-label`,e);break}case`recording`:{this.#x=O(`div`,{class:`slicc-composer__ptt-device`,hidden:!0}),this.#y=O(`div`,{class:`slicc-composer__ptt-caption`,"aria-live":`polite`,hidden:!0}),this.#b=O(`div`,{class:`slicc-composer__ptt-status`,hidden:!0});let e=O(`div`,{class:`slicc-composer__ptt-microw`},O(`div`,{class:`slicc-composer__ptt-mic`},r(`mic`,{size:28})),this.#x);this.#v=O(`div`,{class:`slicc-composer__ptt-label`},`Listening — release to send`),this.#n.replaceChildren(e,this.#v,this.#y,this.#b),this.#n.setAttribute(`aria-label`,`Listening — release to send`),this.#X();break}}}#K(e,t,n){this.#n&&(this.#v=O(`div`,{class:`slicc-composer__ptt-label`},t),this.#y=null,this.#b=null,this.#x=null,this.#S=null,this.#C=[],this.#n.replaceChildren(O(`div`,{class:`slicc-composer__ptt-mic`},e),this.#v,n))}#q(e){return O(`div`,{class:`slicc-composer__ptt-load`},O(`span`,{class:`slicc-composer__ptt-load-text`},e),O(`div`,{class:`slicc-composer__ptt-bar`},O(`div`,{class:`slicc-composer__ptt-bar-fill`})))}#J(e){this.#n&&(this.#n.classList.remove(`is-enable`,`is-prompting`,`is-denied`,`is-recording`,`is-finalizing`,`is-picking`),e!==`idle`&&this.#n.classList.add(`is-${e}`))}#Y(e,t=!1){let n=this.#y;if(!n)return;let r=e.trim().split(/\s+/).filter(Boolean);if(r.length===0){n.hidden=!0;return}n.textContent=r.slice(-8).join(` `),n.classList.toggle(`is-error`,t),n.hidden=!1}#X(){let e=this.#b;if(!e)return;let t=this.#g;if(t?.state===`downloading`){if(t.download){let n=un(t.download.etaSeconds??null);e.textContent=n?`Better speech recognition downloading · ready in ${n}`:`Better speech recognition downloading…`}else e.textContent=`Preparing enhanced speech…`;e.classList.remove(`is-error`),e.hidden=!1}else t?.state===`ready`&&t.engine===`enhanced`?(e.textContent=`Enhanced speech recognition`,e.classList.remove(`is-error`),e.hidden=!1):t?.state===`unavailable`&&t.message?(e.textContent=t.message,e.classList.add(`is-error`),e.hidden=!1):(e.classList.remove(`is-error`),e.hidden=!0)}#Z(e){let t=this.#x;if(!t)return;this.#C=e;let n=O(`button`,{type:`button`,class:`slicc-composer__ptt-device-btn`,"aria-label":`Choose a microphone`,"aria-haspopup":`menu`,title:`Choose a microphone`},r(`chevron-down`,{size:12}));n.addEventListener(`pointerdown`,e=>e.stopPropagation()),t.replaceChildren(n),t.hidden=!1}#Q(){this.#h?.(),this.#h=null,this.#n?.remove(),this.#n=null,this.#v=null,this.#y=null,this.#b=null,this.#x=null,this.#S=null,this.#C=[],this.#_=null,this.#r=`idle`}});var dn=`
|
|
1285
1606
|
slicc-composer-capture {
|
|
1286
1607
|
position: relative;
|
|
1287
1608
|
display: block;
|
|
@@ -1485,7 +1806,7 @@ slicc-composer-capture .slicc-capture__timer {
|
|
|
1485
1806
|
slicc-composer-capture .slicc-capture__timer[hidden] {
|
|
1486
1807
|
display: none;
|
|
1487
1808
|
}
|
|
1488
|
-
`,Nt=`slicc-composer-capture-style`;function Pt(e){if(e.getElementById(Nt))return;let t=e.createElement(`style`);t.id=Nt,t.textContent=Mt,(e.head??e.documentElement).appendChild(t)}var Ft=`photo`,It=[`video/webm;codecs=vp9,opus`,`video/webm;codecs=vp8,opus`,`video/webm`];function Lt(){if(typeof MediaRecorder>`u`)return`video/webm`;for(let e of It)if(MediaRecorder.isTypeSupported?.(e))return e;return`video/webm`}function Rt(e){let t=Math.max(0,Math.floor(e/1e3)),n=Math.floor(t/60),r=t%60;return`${n}:${String(r).padStart(2,`0`)}`}v(`slicc-composer-capture`,class extends HTMLElement{static observedAttributes=[`mode`,`preferred-device`,`preferred-audio-device`];media=null;recorderFactory=null;#e;#t;#n;#r;#i;#a;#o;#s;#c;#l=!1;#u=null;#d=null;#f=null;#p=[];#m=0;#h=null;#g=null;#_=e=>{e.key===`Escape`&&this.#g&&this.#L()};connectedCallback(){Pt(this.ownerDocument),this.#H(),this.ownerDocument.addEventListener(`keydown`,this.#_)}disconnectedCallback(){if(this.ownerDocument.removeEventListener(`keydown`,this.#_),this.#N(),this.#P(),this.#I(),this.#g){let e=this.#g;this.#g=null,e(null)}}attributeChangedCallback(e,t,n){e===`mode`&&this.#l&&this.#z(n??Ft)}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}#y(e,t){return this.recorderFactory?this.recorderFactory(e,t):new MediaRecorder(e,t)}async open(e){this.#H(),e&&(this.mode=e),this.#z(this.mode);let t=this.#v();if(!t)return null;try{this.#u=await this.#b(t,this.preferredDevice,this.preferredAudioDevice,this.mode)}catch{return null}return this.#S(),this.#C(this.#u),await this.#w(t),await this.#T(t),this.hidden=!1,new Promise(e=>{this.#g=e})}async#b(e,t,n,r){let i=this.#x(n,r);if(t)try{return await e.getUserMedia({video:{deviceId:{exact:t}},audio:i})}catch{}try{return await e.getUserMedia({video:!0,audio:i})}catch(t){if(i===!1)throw t;return this.#r.textContent=`Microphone unavailable — recording video only.`,e.getUserMedia({video:!0,audio:!1})}}#x(e,t){return t===`video`?e?{deviceId:{exact:e}}:!0:!1}#S(){this.#d=this.#u?.getAudioTracks()[0]??null}#C(e){this.#e.srcObject=e,this.#e.muted=!0,this.#e.play?.()?.catch(()=>void 0);let t=e.getVideoTracks()[0]?.getSettings?.().facingMode;this.#e.toggleAttribute(`data-mirrored`,t!==`environment`)}async#w(e){let t=[];try{t=(await e.enumerateDevices()).filter(e=>e.kind===`videoinput`)}catch{t=[]}let n=a(t,`camera`);this.#t.replaceChildren(...n.map(e=>b(`option`,{value:e.deviceId},e.label)));let r=this.#u?.getVideoTracks()[0]?.getSettings?.().deviceId;r&&(this.#t.value=r),this.#t.toggleAttribute(`hidden`,!o(n))}async#T(e){let t=[];try{t=(await e.enumerateDevices()).filter(e=>e.kind===`audioinput`)}catch{t=[]}let n=a(t,`microphone`);this.#n.replaceChildren(...n.map(e=>b(`option`,{value:e.deviceId},e.label)));let r=this.#d?.getSettings?.().deviceId??this.preferredAudioDevice??null;r&&n.some(e=>e.deviceId===r)&&(this.#n.value=r),this.#E()}#E(){if(!this.#n)return;let e=this.#n.options.length>=2,t=this.mode===`video`&&e;this.#n.toggleAttribute(`hidden`,!t)}async#D(e){let t=this.#v();if(t){this.#r.textContent=``;try{let n=await t.getUserMedia({video:{deviceId:{exact:e}}});this.#F();let r=n;if(this.mode===`video`&&this.#d&&this.#d.readyState===`live`)r.addTrack(this.#d);else if(this.mode===`video`)try{let e=await t.getUserMedia({audio:this.#x(this.preferredAudioDevice,`video`)});for(let t of e.getAudioTracks())this.#d=t,r.addTrack(t)}catch{this.#r.textContent=`Microphone unavailable — recording video only.`}this.#u=r,this.#C(r),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 — keeping the current one.`}}}async#O(e){let t=this.#v();if(!t||!this.#u)return;this.#r.textContent=``;let n;try{n=await t.getUserMedia({audio:{deviceId:{exact:e}}})}catch{this.#r.textContent=`Could not switch microphone — keeping the current one.`;return}let r=n.getAudioTracks()[0];if(!r){this.#r.textContent=`Could not switch microphone — keeping the current one.`;return}if(this.#d){try{this.#u.removeTrack(this.#d)}catch{}this.#d.stop()}this.#u.addTrack(r),this.#d=r,this.preferredAudioDevice=e,this.dispatchEvent(new CustomEvent(`slicc-capture-device-change`,{detail:{deviceId:e,kind:`microphone`},bubbles:!0,composed:!0}))}#k(){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 — give the camera a moment.`;return}e.getContext(`2d`)?.drawImage(this.#e,0,0);let t=`image/png`,n=e.toDataURL(t);this.#R({kind:`image`,dataUrl:n,mimeType:t,width:e.width,height:e.height})}#A(){if(!this.#u||this.#f)return;this.#p=[];let e=Lt(),t;try{t=this.#y(this.#u,{mimeType:e})}catch{this.#r.textContent=`Recording is not supported in this browser.`;return}t.ondataavailable=e=>{e.data&&e.data.size>0&&this.#p.push(e.data)},t.onstop=()=>this.#M(e);try{t.start()}catch{this.#r.textContent=`Could not start recording.`;return}this.#f=t,this.#m=Date.now(),this.#n.disabled=!0,this.#t.disabled=!0,this.#i.hidden=!1,this.#i.textContent=Rt(0),this.#h=setInterval(()=>{this.#i.textContent=Rt(Date.now()-this.#m)},250),this.#B()}#j(){let e=this.#f;if(e)try{e.state!==`inactive`&&e.stop()}catch{this.#M(e.mimeType||`video/webm`)}}#M(e){let t=this.#m?Date.now()-this.#m:0;this.#N();let n=this.#f?.mimeType||e||`video/webm`,r=new Blob(this.#p,{type:n});this.#p=[],this.#f=null,this.#n&&(this.#n.disabled=!1),this.#t&&(this.#t.disabled=!1);let i=typeof URL<`u`?URL.createObjectURL(r):void 0;this.#R({kind:`video`,blob:r,dataUrl:i,mimeType:n,width:this.#e.videoWidth,height:this.#e.videoHeight,durationMs:t})}#N(){this.#h!=null&&(clearInterval(this.#h),this.#h=null),this.#i.hidden=!0,this.#i.textContent=``,this.#m=0}#P(){let e=this.#f;if(this.#f=null,this.#p=[],this.#n&&(this.#n.disabled=!1),this.#t&&(this.#t.disabled=!1),e){e.ondataavailable=null,e.onstop=null;try{e.state!==`inactive`&&e.stop()}catch{}}}#F(){for(let e of this.#u?.getVideoTracks()??[])e.stop()}#I(){for(let e of this.#u?.getTracks()??[])e.stop();this.#u=null,this.#d=null,this.#e&&(this.#e.srcObject=null)}#L(){this.dispatchEvent(new CustomEvent(`slicc-capture-cancel`,{bubbles:!0,composed:!0})),this.#R(null)}#R(e){e&&this.dispatchEvent(new CustomEvent(`slicc-capture`,{detail:e,bubbles:!0,composed:!0})),this.#N(),this.#P(),this.#I();let t=this.#g;this.#g=null,this.hidden=!0,t?.(e)}#z(e){let t=e===`video`;this.#s.setAttribute(`aria-pressed`,String(!t)),this.#c.setAttribute(`aria-pressed`,String(t)),this.#r.textContent=t?`Mic on — video will record audio.`:``,this.#B(),this.#E()}#B(){let e=this.#a;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(r(`camera`,{size:14}),document.createTextNode(` Snap`));return}this.#f?(e.className=`slicc-capture__btn slicc-capture__btn--rec`,e.setAttribute(`part`,`stop`),e.setAttribute(`aria-label`,`Stop recording`),e.append(b(`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(b(`span`,{class:`slicc-capture__dot`}),document.createTextNode(` Record`)))}#V(){if(this.mode===`photo`){this.#k();return}this.#f?this.#j():this.#A()}#H(){if(this.#l)return;this.#l=!0,this.#e=b(`video`,{class:`slicc-capture__video`,part:`video`,autoplay:!0,muted:!0,playsinline:!0}),this.#e.muted=!0,this.#r=b(`div`,{class:`slicc-capture__status`}),this.#t=b(`select`,{class:`slicc-capture__select`,part:`picker`,"aria-label":`Camera`,hidden:!0}),this.#t.addEventListener(`change`,()=>{this.#D(this.#t.value)}),this.#n=b(`select`,{class:`slicc-capture__select`,part:`audio-picker`,"aria-label":`Microphone`,hidden:!0}),this.#n.addEventListener(`change`,()=>{this.#O(this.#n.value)}),this.#s=b(`button`,{type:`button`,class:`slicc-capture__mode-btn`,part:`mode`,"aria-pressed":`true`,"aria-label":`Photo`},r(`image`,{size:14})),this.#s.addEventListener(`click`,()=>{this.mode=`photo`}),this.#c=b(`button`,{type:`button`,class:`slicc-capture__mode-btn`,part:`mode`,"aria-pressed":`false`,"aria-label":`Video`},r(`video`,{size:14})),this.#c.addEventListener(`click`,()=>{this.#U()});let e=b(`div`,{class:`slicc-capture__mode`,role:`group`,"aria-label":`Capture mode`},this.#s,this.#c);this.#i=b(`span`,{class:`slicc-capture__timer`,hidden:!0}),this.#o=b(`button`,{type:`button`,class:`slicc-capture__close`,part:`cancel`,"aria-label":`Cancel`},r(`x`,{size:14})),this.#o.addEventListener(`click`,()=>this.#L()),this.#a=b(`button`,{type:`button`,class:`slicc-capture__btn slicc-capture__btn--primary`,part:`snap`,"aria-label":`Snap photo`}),this.#a.addEventListener(`click`,()=>this.#V());let t=b(`div`,{class:`slicc-capture__bar`},this.#t,this.#n,b(`span`,{class:`slicc-capture__spacer`}),this.#i,this.#a,e);this.replaceChildren(this.#e,this.#r,t,this.#o),this.#z(this.mode)}async#U(){if(this.mode=`video`,!this.#u||this.#u.getAudioTracks().length>0)return;let e=this.#v();if(!e)return;let t=this.#u.getVideoTracks()[0]?.getSettings?.().deviceId??this.preferredDevice??null,n=this.#x(this.preferredAudioDevice,`video`);try{let r=t?await e.getUserMedia({video:{deviceId:{exact:t}},audio:n}):await e.getUserMedia({video:!0,audio:n});this.#I(),this.#u=r,this.#S(),this.#C(r),await this.#T(e)}catch{this.#r.textContent=`Microphone unavailable — recording video only.`}}});var zt=[`off`,`low`,`medium`,`high`,`xhigh`,`max`],Bt={off:{label:`Secco`,gloss:`bone dry — not a drop (ask any prosecco)`,tint:`var(--txt-3)`},low:{label:`Goccia`,gloss:`one drop — bar-speak: «macchiato, solo una goccia»`,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 — 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)`}},Vt=`max`,Ht=`Opus 4.8`,Ut=[{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`}],Wt=8;function Gt(e){let t=typeof e==`string`?{name:e}:e;return{...t,name:t.name,id:t.id??t.name}}var Kt=`max`,qt=13;function Jt(){return r(`sparkles`,{size:qt,class:`ic`,part:`model-icon`})}function Yt(){return r(`brain`,{size:qt,class:`brain`,part:`brain`})}function Xt(){return r(`chevron-down`,{size:11,part:`caret`})}var Zt=`http://www.w3.org/2000/svg`;function Qt(){let e=document.createElementNS(Zt,`svg`);e.setAttribute(`width`,`0`),e.setAttribute(`height`,`0`),e.setAttribute(`aria-hidden`,`true`),e.setAttribute(`style`,`position:absolute`);let t=document.createElementNS(Zt,`defs`),n=document.createElementNS(Zt,`linearGradient`);n.setAttribute(`id`,`meta-rainbow`),n.setAttribute(`x1`,`0`),n.setAttribute(`y1`,`0`),n.setAttribute(`x2`,`1`),n.setAttribute(`y2`,`0`);for(let[e,t]of[[`0%`,`#f43f5e`],[`28%`,`#f59e0b`],[`64%`,`#06b6d4`],[`100%`,`#8b5cf6`]]){let r=document.createElementNS(Zt,`stop`);r.setAttribute(`offset`,e),r.setAttribute(`stop-color`,t),n.appendChild(r)}return t.appendChild(n),e.appendChild(t),e}var $t=x(`
|
|
1809
|
+
`,fn=`slicc-composer-capture-style`;function pn(e){if(e.getElementById(fn))return;let t=e.createElement(`style`);t.id=fn,t.textContent=dn,(e.head??e.documentElement).appendChild(t)}var mn=`photo`,hn=[`video/webm;codecs=vp9,opus`,`video/webm;codecs=vp8,opus`,`video/webm`];function gn(){if(typeof MediaRecorder>`u`)return`video/webm`;for(let e of hn)if(MediaRecorder.isTypeSupported?.(e))return e;return`video/webm`}function _n(e){let t=Math.max(0,Math.floor(e/1e3)),n=Math.floor(t/60),r=t%60;return`${n}:${String(r).padStart(2,`0`)}`}E(`slicc-composer-capture`,class extends HTMLElement{static observedAttributes=[`mode`,`preferred-device`,`preferred-audio-device`];media=null;recorderFactory=null;#e;#t;#n;#r;#i;#a;#o;#s;#c;#l=!1;#u=null;#d=null;#f=null;#p=[];#m=0;#h=null;#g=null;#_=e=>{e.key===`Escape`&&this.#g&&this.#L()};connectedCallback(){pn(this.ownerDocument),this.#H(),this.ownerDocument.addEventListener(`keydown`,this.#_)}disconnectedCallback(){if(this.ownerDocument.removeEventListener(`keydown`,this.#_),this.#N(),this.#P(),this.#I(),this.#g){let e=this.#g;this.#g=null,e(null)}}attributeChangedCallback(e,t,n){e===`mode`&&this.#l&&this.#z(n??mn)}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}#y(e,t){return this.recorderFactory?this.recorderFactory(e,t):new MediaRecorder(e,t)}async open(e){this.#H(),e&&(this.mode=e),this.#z(this.mode);let t=this.#v();if(!t)return null;try{this.#u=await this.#b(t,this.preferredDevice,this.preferredAudioDevice,this.mode)}catch{return null}return this.#S(),this.#C(this.#u),await this.#w(t),await this.#T(t),this.hidden=!1,new Promise(e=>{this.#g=e})}async#b(e,t,n,r){let i=this.#x(n,r);if(t)try{return await e.getUserMedia({video:{deviceId:{exact:t}},audio:i})}catch{}try{return await e.getUserMedia({video:!0,audio:i})}catch(t){if(i===!1)throw t;return this.#r.textContent=`Microphone unavailable — recording video only.`,e.getUserMedia({video:!0,audio:!1})}}#x(e,t){return t===`video`?e?{deviceId:{exact:e}}:!0:!1}#S(){this.#d=this.#u?.getAudioTracks()[0]??null}#C(e){this.#e.srcObject=e,this.#e.muted=!0,this.#e.play?.()?.catch(()=>void 0);let t=e.getVideoTracks()[0]?.getSettings?.().facingMode;this.#e.toggleAttribute(`data-mirrored`,t!==`environment`)}async#w(e){let t=[];try{t=(await e.enumerateDevices()).filter(e=>e.kind===`videoinput`)}catch{t=[]}let n=a(t,`camera`);this.#t.replaceChildren(...n.map(e=>O(`option`,{value:e.deviceId},e.label)));let r=this.#u?.getVideoTracks()[0]?.getSettings?.().deviceId;r&&(this.#t.value=r),this.#t.toggleAttribute(`hidden`,!o(n))}async#T(e){let t=[];try{t=(await e.enumerateDevices()).filter(e=>e.kind===`audioinput`)}catch{t=[]}let n=a(t,`microphone`);this.#n.replaceChildren(...n.map(e=>O(`option`,{value:e.deviceId},e.label)));let r=this.#d?.getSettings?.().deviceId??this.preferredAudioDevice??null;r&&n.some(e=>e.deviceId===r)&&(this.#n.value=r),this.#E()}#E(){if(!this.#n)return;let e=this.#n.options.length>=2,t=this.mode===`video`&&e;this.#n.toggleAttribute(`hidden`,!t)}async#D(e){let t=this.#v();if(t){this.#r.textContent=``;try{let n=await t.getUserMedia({video:{deviceId:{exact:e}}});this.#F();let r=n;if(this.mode===`video`&&this.#d&&this.#d.readyState===`live`)r.addTrack(this.#d);else if(this.mode===`video`)try{let e=await t.getUserMedia({audio:this.#x(this.preferredAudioDevice,`video`)});for(let t of e.getAudioTracks())this.#d=t,r.addTrack(t)}catch{this.#r.textContent=`Microphone unavailable — recording video only.`}this.#u=r,this.#C(r),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 — keeping the current one.`}}}async#O(e){let t=this.#v();if(!t||!this.#u)return;this.#r.textContent=``;let n;try{n=await t.getUserMedia({audio:{deviceId:{exact:e}}})}catch{this.#r.textContent=`Could not switch microphone — keeping the current one.`;return}let r=n.getAudioTracks()[0];if(!r){this.#r.textContent=`Could not switch microphone — keeping the current one.`;return}if(this.#d){try{this.#u.removeTrack(this.#d)}catch{}this.#d.stop()}this.#u.addTrack(r),this.#d=r,this.preferredAudioDevice=e,this.dispatchEvent(new CustomEvent(`slicc-capture-device-change`,{detail:{deviceId:e,kind:`microphone`},bubbles:!0,composed:!0}))}#k(){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 — give the camera a moment.`;return}e.getContext(`2d`)?.drawImage(this.#e,0,0);let t=`image/png`,n=e.toDataURL(t);this.#R({kind:`image`,dataUrl:n,mimeType:t,width:e.width,height:e.height})}#A(){if(!this.#u||this.#f)return;this.#p=[];let e=gn(),t;try{t=this.#y(this.#u,{mimeType:e})}catch{this.#r.textContent=`Recording is not supported in this browser.`;return}t.ondataavailable=e=>{e.data&&e.data.size>0&&this.#p.push(e.data)},t.onstop=()=>this.#M(e);try{t.start()}catch{this.#r.textContent=`Could not start recording.`;return}this.#f=t,this.#m=Date.now(),this.#n.disabled=!0,this.#t.disabled=!0,this.#i.hidden=!1,this.#i.textContent=_n(0),this.#h=setInterval(()=>{this.#i.textContent=_n(Date.now()-this.#m)},250),this.#B()}#j(){let e=this.#f;if(e)try{e.state!==`inactive`&&e.stop()}catch{this.#M(e.mimeType||`video/webm`)}}#M(e){let t=this.#m?Date.now()-this.#m:0;this.#N();let n=this.#f?.mimeType||e||`video/webm`,r=new Blob(this.#p,{type:n});this.#p=[],this.#f=null,this.#n&&(this.#n.disabled=!1),this.#t&&(this.#t.disabled=!1);let i=typeof URL<`u`?URL.createObjectURL(r):void 0;this.#R({kind:`video`,blob:r,dataUrl:i,mimeType:n,width:this.#e.videoWidth,height:this.#e.videoHeight,durationMs:t})}#N(){this.#h!=null&&(clearInterval(this.#h),this.#h=null),this.#i.hidden=!0,this.#i.textContent=``,this.#m=0}#P(){let e=this.#f;if(this.#f=null,this.#p=[],this.#n&&(this.#n.disabled=!1),this.#t&&(this.#t.disabled=!1),e){e.ondataavailable=null,e.onstop=null;try{e.state!==`inactive`&&e.stop()}catch{}}}#F(){for(let e of this.#u?.getVideoTracks()??[])e.stop()}#I(){for(let e of this.#u?.getTracks()??[])e.stop();this.#u=null,this.#d=null,this.#e&&(this.#e.srcObject=null)}#L(){this.dispatchEvent(new CustomEvent(`slicc-capture-cancel`,{bubbles:!0,composed:!0})),this.#R(null)}#R(e){e&&this.dispatchEvent(new CustomEvent(`slicc-capture`,{detail:e,bubbles:!0,composed:!0})),this.#N(),this.#P(),this.#I();let t=this.#g;this.#g=null,this.hidden=!0,t?.(e)}#z(e){let t=e===`video`;this.#s.setAttribute(`aria-pressed`,String(!t)),this.#c.setAttribute(`aria-pressed`,String(t)),this.#r.textContent=t?`Mic on — video will record audio.`:``,this.#B(),this.#E()}#B(){let e=this.#a;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(r(`camera`,{size:14}),document.createTextNode(` Snap`));return}this.#f?(e.className=`slicc-capture__btn slicc-capture__btn--rec`,e.setAttribute(`part`,`stop`),e.setAttribute(`aria-label`,`Stop recording`),e.append(O(`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(O(`span`,{class:`slicc-capture__dot`}),document.createTextNode(` Record`)))}#V(){if(this.mode===`photo`){this.#k();return}this.#f?this.#j():this.#A()}#H(){if(this.#l)return;this.#l=!0,this.#e=O(`video`,{class:`slicc-capture__video`,part:`video`,autoplay:!0,muted:!0,playsinline:!0}),this.#e.muted=!0,this.#r=O(`div`,{class:`slicc-capture__status`}),this.#t=O(`select`,{class:`slicc-capture__select`,part:`picker`,"aria-label":`Camera`,hidden:!0}),this.#t.addEventListener(`change`,()=>{this.#D(this.#t.value)}),this.#n=O(`select`,{class:`slicc-capture__select`,part:`audio-picker`,"aria-label":`Microphone`,hidden:!0}),this.#n.addEventListener(`change`,()=>{this.#O(this.#n.value)}),this.#s=O(`button`,{type:`button`,class:`slicc-capture__mode-btn`,part:`mode`,"aria-pressed":`true`,"aria-label":`Photo`},r(`image`,{size:14})),this.#s.addEventListener(`click`,()=>{this.mode=`photo`}),this.#c=O(`button`,{type:`button`,class:`slicc-capture__mode-btn`,part:`mode`,"aria-pressed":`false`,"aria-label":`Video`},r(`video`,{size:14})),this.#c.addEventListener(`click`,()=>{this.#U()});let e=O(`div`,{class:`slicc-capture__mode`,role:`group`,"aria-label":`Capture mode`},this.#s,this.#c);this.#i=O(`span`,{class:`slicc-capture__timer`,hidden:!0}),this.#o=O(`button`,{type:`button`,class:`slicc-capture__close`,part:`cancel`,"aria-label":`Cancel`},r(`x`,{size:14})),this.#o.addEventListener(`click`,()=>this.#L()),this.#a=O(`button`,{type:`button`,class:`slicc-capture__btn slicc-capture__btn--primary`,part:`snap`,"aria-label":`Snap photo`}),this.#a.addEventListener(`click`,()=>this.#V());let t=O(`div`,{class:`slicc-capture__bar`},this.#t,this.#n,O(`span`,{class:`slicc-capture__spacer`}),this.#i,this.#a,e);this.replaceChildren(this.#e,this.#r,t,this.#o),this.#z(this.mode)}async#U(){if(this.mode=`video`,!this.#u||this.#u.getAudioTracks().length>0)return;let e=this.#v();if(!e)return;let t=this.#u.getVideoTracks()[0]?.getSettings?.().deviceId??this.preferredDevice??null,n=this.#x(this.preferredAudioDevice,`video`);try{let r=t?await e.getUserMedia({video:{deviceId:{exact:t}},audio:n}):await e.getUserMedia({video:!0,audio:n});this.#I(),this.#u=r,this.#S(),this.#C(r),await this.#T(e)}catch{this.#r.textContent=`Microphone unavailable — recording video only.`}}});var vn=[`off`,`low`,`medium`,`high`,`xhigh`,`max`],yn={off:{label:`Secco`,gloss:`bone dry — not a drop (ask any prosecco)`,tint:`var(--txt-3)`},low:{label:`Goccia`,gloss:`one drop — bar-speak: «macchiato, solo una goccia»`,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 — 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)`}},bn=`max`,xn=`Opus 4.8`,Sn=[{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`}],Cn=8;function wn(e){let t=typeof e==`string`?{name:e}:e;return{...t,name:t.name,id:t.id??t.name}}var Tn=`max`,En=13;function Dn(){return r(`sparkles`,{size:En,class:`ic`,part:`model-icon`})}function On(){return r(`brain`,{size:En,class:`brain`,part:`brain`})}function kn(){return r(`chevron-down`,{size:11,part:`caret`})}var An=`http://www.w3.org/2000/svg`;function jn(){let e=document.createElementNS(An,`svg`);e.setAttribute(`width`,`0`),e.setAttribute(`height`,`0`),e.setAttribute(`aria-hidden`,`true`),e.setAttribute(`style`,`position:absolute`);let t=document.createElementNS(An,`defs`),n=document.createElementNS(An,`linearGradient`);n.setAttribute(`id`,`meta-rainbow`),n.setAttribute(`x1`,`0`),n.setAttribute(`y1`,`0`),n.setAttribute(`x2`,`1`),n.setAttribute(`y2`,`0`);for(let[e,t]of[[`0%`,`#f43f5e`],[`28%`,`#f59e0b`],[`64%`,`#06b6d4`],[`100%`,`#8b5cf6`]]){let r=document.createElementNS(An,`stop`);r.setAttribute(`offset`,e),r.setAttribute(`stop-color`,t),n.appendChild(r)}return t.appendChild(n),e.appendChild(t),e}var Mn=k(`
|
|
1489
1810
|
:host{display:block;}
|
|
1490
1811
|
*{box-sizing:border-box;}
|
|
1491
1812
|
.meta{display:flex;align-items:center;gap:8px;max-width:680px;margin:11px auto 0;font-family:var(--ui);}
|
|
@@ -1542,7 +1863,7 @@ slicc-composer-capture .slicc-capture__timer[hidden] {
|
|
|
1542
1863
|
/* Narrow / extension-sidebar: the ⏎ / ⇧⏎ keyboard hints don't fit (and touch
|
|
1543
1864
|
users have no keyboard) — drop them regardless of the narrow-chat attribute. */
|
|
1544
1865
|
@media (max-width: 560px){ .hint{display:none;} }
|
|
1545
|
-
`);
|
|
1866
|
+
`);E(`slicc-composer-meta`,class extends HTMLElement{static observedAttributes=[`model`,`thinking`,`narrow`,`no-thinking`];#e;#t=null;#n=null;#r=null;#i=null;#a=null;#o=null;#s=null;#c=null;#l=!1;#u=!1;#d=``;#f=e=>{let t=e.composedPath();this.#l&&!t.includes(this)&&this.#S(),this.#u&&!t.includes(this)&&this.#D()};#p=e=>{e.key===`Escape`&&(this.#l&&(e.stopPropagation(),this.#S(),this.#r?.focus()),this.#u&&(e.stopPropagation(),this.#D(),this.#i?.focus()))};constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[Mn]}connectedCallback(){this.#g()}disconnectedCallback(){this.#y(),document.removeEventListener(`mousedown`,this.#f),document.removeEventListener(`keydown`,this.#p,!0)}attributeChangedCallback(){this.isConnected&&this.#g()}get model(){return this.getAttribute(`model`)??xn}set model(e){e==null?this.removeAttribute(`model`):this.setAttribute(`model`,e)}get models(){return(this.#c??[...Sn]).map(e=>typeof e==`string`?e:{...e})}set models(e){this.#c=Array.isArray(e)?e.slice():null,this.isConnected&&this.#g()}get#m(){return(this.#c??Sn).map(wn)}get#h(){return this.#c!==null&&this.#c.length===0}get thinking(){let e=this.getAttribute(`thinking`);return vn.includes(e??``)?e:Tn}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===bn}#g(){this.#y();let e=this.model,t=this.thinking,n=yn[t],i=t===bn,a=this.#h,o=a?O(`button`,{type:`button`,class:`ctl msel`,part:`model`},Dn(),` `,`Add AI`):O(`button`,{type:`button`,class:`ctl msel`,part:`model`,"aria-haspopup":`menu`,"aria-expanded":`false`},Dn(),` `,e,` `,O(`span`,{class:`cx`},kn())),s=O(`div`,{class:`menu`,part:`model-menu`,role:`menu`});if(this.#m.length>Cn){let e=O(`input`,{class:`msearch`,part:`model-search`,type:`text`,placeholder:`Search models…`,"aria-label":`Search models`});e.value=this.#d,e.addEventListener(`input`,()=>{this.#d=e.value,this.#_()}),e.addEventListener(`click`,e=>e.stopPropagation()),s.append(e)}this.#s=O(`div`,{class:`mlist`,role:`none`}),s.append(this.#s);let c=O(`div`,{class:`mwrap`},o,s),l=!this.noThinking&&!a,u=null;if(l){let e=On();e.style.color=n.tint;let a=O(`button`,{type:`button`,class:`ctl tsel${i?` x`:``}`,part:`thinking`,title:n.gloss,"aria-haspopup":`menu`,"aria-expanded":`false`},e,` `,O(`span`,{class:`tlabel`},n.label),` `,O(`span`,{class:`cx`},kn()));a.style.setProperty(`--tw`,n.tint);let o=O(`div`,{class:`menu tmenu`,part:`thinking-menu`,role:`menu`}),s=O(`div`,{class:`mlist`,role:`none`});for(let e of vn){let n=yn[e],i=O(`button`,{type:`button`,class:`mitem titem`,role:`menuitemradio`,"data-level":e,"aria-selected":e===t?`true`:`false`,title:n.gloss},O(`span`,{class:`mname`},n.label),O(`span`,{class:`tick`},r(`check`,{size:14})));i.addEventListener(`click`,()=>this.#k(e)),s.append(i)}o.append(s),u=O(`div`,{class:`twrap`},a,o)}let d=O(`slot`,{name:`hint`});D(d,[O(`span`,{class:`kbd`},`⏎`),` send `,O(`span`,{class:`sep`}),` `,O(`span`,{class:`kbd`},`⇧⏎`),` newline`]);let f=O(`div`,{class:`meta`,part:`meta`},c,u??!1,O(`div`,{class:`mspacer`}),O(`span`,{class:`hint`,part:`hint`},d));this.#e.replaceChildren(jn(),f),this.#a=c,this.#o=this.#e.querySelector(`.twrap`),this.#r=this.#e.querySelector(`.msel`),this.#i=this.#e.querySelector(`.tsel`),this.#_(),this.#C(),this.#O(),this.#v()}#_(){let e=this.#s;if(!e)return;let t=this.#d.trim().toLowerCase(),n=this.#m.filter(e=>!t||`${e.name} ${e.provider??``}`.toLowerCase().includes(t)),i=this.model,a=[];for(let e of n){let t=e.name===i,n=O(`button`,{type:`button`,class:`mitem`,role:`menuitemradio`,"data-id":e.id,"aria-selected":t?`true`:`false`},O(`span`,{class:`mname`},e.name),e.provider?O(`span`,{class:`mprov`},e.provider):!1,O(`span`,{class:`tick`},r(`check`,{size:14})));n.addEventListener(`click`,()=>this.#w(e.id)),a.push(n)}e.replaceChildren(...a.length?a:[O(`div`,{class:`mempty`},`No models match.`)])}#v(){this.#r&&(this.#t=e=>{if(e.stopPropagation(),this.#h){this.dispatchEvent(new CustomEvent(`add-ai`,{bubbles:!0,composed:!0}));return}this.#b()},this.#r.addEventListener(`click`,this.#t)),this.#i&&(this.#n=()=>this.#T(),this.#i.addEventListener(`click`,this.#n))}#y(){this.#r&&this.#t&&this.#r.removeEventListener(`click`,this.#t),this.#i&&this.#n&&this.#i.removeEventListener(`click`,this.#n),this.#t=null,this.#n=null,this.#r=null,this.#i=null,this.#a=null,this.#o=null,this.#s=null}get menuOpen(){return this.#l}openMenu(){this.#h||this.#x()}#b(){this.#l?this.#S():this.#x()}#x(){if(this.#l)return;this.#D(),this.#l=!0,this.#d=``,this.#_(),this.#C();let e=this.#e.querySelector(`.msearch`);e&&(e.value=``,requestAnimationFrame(()=>e.focus())),document.addEventListener(`mousedown`,this.#f),document.addEventListener(`keydown`,this.#p,!0)}#S(){this.#l&&(this.#l=!1,this.#C(),this.#u||(document.removeEventListener(`mousedown`,this.#f),document.removeEventListener(`keydown`,this.#p,!0)))}#C(){this.#a?.classList.toggle(`open`,this.#l),this.#r?.setAttribute(`aria-expanded`,this.#l?`true`:`false`)}#w(e){let t=this.#m.find(t=>t.id===e)??{name:e,id:e,provider:void 0};this.#S(),t.name!==this.model&&(this.model=t.name),this.dispatchEvent(new CustomEvent(`model-change`,{detail:{model:t.name,provider:t.provider,id:t.id},bubbles:!0,composed:!0}))}#T(){this.#u?this.#D():this.#E()}#E(){this.#u||(this.#S(),this.#u=!0,this.#O(),document.addEventListener(`mousedown`,this.#f),document.addEventListener(`keydown`,this.#p,!0))}#D(){this.#u&&(this.#u=!1,this.#O(),this.#l||(document.removeEventListener(`mousedown`,this.#f),document.removeEventListener(`keydown`,this.#p,!0)))}#O(){this.#o?.classList.toggle(`open`,this.#u),this.#i?.setAttribute(`aria-expanded`,this.#u?`true`:`false`)}#k(e){this.#D(),this.thinking=e,this.dispatchEvent(new CustomEvent(`thinking-change`,{detail:{thinking:e,label:yn[e].label,accented:e===bn},bubbles:!0,composed:!0}))}});async function Nn(e){let t=new TextEncoder().encode(e),n=await crypto.subtle.digest(`SHA-256`,t);return Array.from(new Uint8Array(n)).map(e=>e.toString(16).padStart(2,`0`)).join(``)}async function Pn(e,t={}){let n=(e??``).trim().toLowerCase();if(n===``)return null;let r=await Nn(n),i=t.size??80,a=t.fallback??`mp`;return`https://www.gravatar.com/avatar/${r}?s=${i}&d=${encodeURIComponent(a)}`}var Fn=k(`
|
|
1546
1867
|
:host { display: inline-flex; }
|
|
1547
1868
|
:host([hidden]) { display: none; }
|
|
1548
1869
|
|
|
@@ -1745,7 +2066,7 @@ slicc-composer-capture .slicc-capture__timer[hidden] {
|
|
|
1745
2066
|
}
|
|
1746
2067
|
.glyph.is-press { transform: none; }
|
|
1747
2068
|
}
|
|
1748
|
-
`),
|
|
2069
|
+
`),In=18,Ln=72,Rn=`http://www.w3.org/2000/svg`,zn=15,Bn=.25;function Vn(e){let t=document.createElementNS(Rn,`svg`);t.setAttribute(`width`,`36`),t.setAttribute(`height`,`36`),t.setAttribute(`viewBox`,`0 0 36 36`),t.setAttribute(`fill`,`none`),t.setAttribute(`aria-hidden`,`true`);let n=2*Math.PI*zn,r=e=>{let t=document.createElementNS(Rn,`circle`);return t.setAttribute(`cx`,`18`),t.setAttribute(`cy`,`18`),t.setAttribute(`r`,String(zn)),t.setAttribute(`fill`,`none`),t.setAttribute(`stroke-width`,`2.5`),t.setAttribute(`stroke-linecap`,`round`),t.setAttribute(`class`,e),t};t.appendChild(r(`ring-track`));let i=r(`ring-arc`),a=e==null?Bn:Math.max(0,Math.min(1,e));return i.setAttribute(`stroke-dasharray`,`${n*a} ${n}`),e!=null&&i.setAttribute(`transform`,`rotate(-90 18 18)`),t.appendChild(i),t}function Hn(e){return e===`tool`?`tool`:`thinking`}function Un(e){if(e==null||e.trim()===``)return null;let t=Number(e);return Number.isFinite(t)?Math.max(0,Math.min(1,t)):null}E(`slicc-send-button`,class extends HTMLElement{static observedAttributes=[`disabled`,`busy`,`phase`,`progress`,`email`,`src`,`label`];#e;#t=null;#n=0;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[Fn]}connectedCallback(){this.#d()}attributeChangedCallback(){this.isConnected&&this.#d()}get disabled(){return this.hasAttribute(`disabled`)}set disabled(e){this.toggleAttribute(`disabled`,!!e)}get busy(){return this.hasAttribute(`busy`)}set busy(e){this.toggleAttribute(`busy`,!!e)}get phase(){return Hn(this.getAttribute(`phase`))}set phase(e){this.setAttribute(`phase`,Hn(e))}get progress(){return Un(this.getAttribute(`progress`))}set progress(e){e==null?this.removeAttribute(`progress`):this.setAttribute(`progress`,String(e))}get email(){return this.getAttribute(`email`)}set email(e){e==null?this.removeAttribute(`email`):this.setAttribute(`email`,e)}get src(){return this.getAttribute(`src`)}set src(e){e==null?this.removeAttribute(`src`):this.setAttribute(`src`,e)}get label(){return this.getAttribute(`label`)}set label(e){e==null?this.removeAttribute(`label`):this.setAttribute(`label`,e)}#r=()=>{if(!this.disabled){if(this.busy){this.dispatchEvent(new CustomEvent(`stop`,{bubbles:!0,composed:!0}));return}this.#l(),this.dispatchEvent(new CustomEvent(`send`,{bubbles:!0,composed:!0}))}};#i(){return this.#e.querySelector(`.glyph`)}#a=()=>{this.disabled||this.busy||this.#i()?.classList.add(`is-hover`)};#o=()=>{this.#i()?.classList.remove(`is-hover`,`is-press`)};#s=()=>{if(this.disabled||this.busy)return;let e=this.#i();e?.classList.add(`is-press`),e?.classList.remove(`is-hover`)};#c=()=>{this.#i()?.classList.remove(`is-press`)};#l(){let e=this.#e.querySelector(`.glyph`);e&&(e.classList.remove(`is-whoosh`),e.offsetWidth,e.classList.add(`is-whoosh`),e.addEventListener(`animationend`,()=>e.classList.remove(`is-whoosh`),{once:!0}))}#u(){let e=++this.#n;if(!this.#t)return;let t=t=>{if(e!==this.#n)return;let n=this.#t;if(n)if(n.querySelector(`.face`)?.remove(),t){let e=document.createElement(`img`);e.className=`face`,e.setAttribute(`part`,`face`),e.alt=``,e.src=t,n.prepend(e),n.classList.add(`has-face`)}else n.classList.remove(`has-face`)},n=this.src;if(n){t(n);return}let r=this.email;if(!r||r.trim()===``){t(null);return}t(null),Pn(r,{size:Ln}).then(t).catch(()=>t(null))}#d(){let e=this.busy,t=this.disabled,n=e&&this.phase===`tool`,i=this.label??(e?`Stop`:`Send`),a;if(n){let e=this.progress,t=e==null;a=O(`slot`,{name:`busy`},O(`span`,{class:`stop`,part:`stop`},r(`square`,{size:In})),O(`span`,{class:`spinner${t?` is-indeterminate`:``}`,part:`spinner`},Vn(e)))}else a=e?O(`slot`,{name:`busy`},O(`span`,{class:`stop`,part:`stop`},r(`square`,{size:In}),O(`span`,{class:`stop-fill`},r(`square`,{size:In})))):O(`slot`,null,O(`span`,{class:`glyph`,part:`glyph`},r(`arrow-up`,{size:In})));let o=O(`button`,{part:`button`,class:`send${e?` is-busy`:``}${n?` is-tool`:``}`,type:`button`,title:i,"aria-label":i,disabled:t||void 0},a);this.#e.replaceChildren(o),this.#t=o,this.#t.addEventListener(`click`,this.#r),this.#t.addEventListener(`pointerenter`,this.#a),this.#t.addEventListener(`pointerleave`,this.#o),this.#t.addEventListener(`pointerdown`,this.#s),this.#t.addEventListener(`pointerup`,this.#c),this.#u()}});var Wn=`
|
|
1749
2070
|
slicc-input-card {
|
|
1750
2071
|
display: block;
|
|
1751
2072
|
}
|
|
@@ -1799,7 +2120,7 @@ slicc-input-card .toolbar slicc-add-menu {
|
|
|
1799
2120
|
flex: 1;
|
|
1800
2121
|
min-width: 0;
|
|
1801
2122
|
}
|
|
1802
|
-
`,
|
|
2123
|
+
`,Gn=`slicc-input-card-style`;function Kn(e){if(e.getElementById(Gn))return;let t=e.createElement(`style`);t.id=Gn,t.textContent=Wn,(e.head??e.documentElement).appendChild(t)}var qn=`Ask sliccy, or describe a change…`;E(`slicc-input-card`,class extends HTMLElement{static observedAttributes=[`value`,`placeholder`,`suggestion`,`disabled`];#e;#t;#n;#r=!1;connectedCallback(){Kn(this.ownerDocument),this.#i(),this.#a(),this.#u()}attributeChangedCallback(e,t,n){!this.#r||t===n||(this.#a(),e===`value`&&this.#u())}get value(){return this.#r?this.#t.value:this.getAttribute(`value`)??``}set value(e){let t=e??``;this.#r&&(this.#t.value=t,this.#u()),t===``?this.removeAttribute(`value`):this.setAttribute(`value`,t)}get placeholder(){return this.getAttribute(`placeholder`)??qn}set placeholder(e){e==null?this.removeAttribute(`placeholder`):this.setAttribute(`placeholder`,e)}get suggestion(){return this.getAttribute(`suggestion`)}set suggestion(e){e==null||e===``?this.removeAttribute(`suggestion`):this.setAttribute(`suggestion`,e)}get disabled(){return this.hasAttribute(`disabled`)}set disabled(e){this.toggleAttribute(`disabled`,!!e)}focus(e){this.#i(),this.#t.focus(e)}clear(){this.value=``}#i(){if(this.#r)return;this.#r=!0;let e=this.ownerDocument,t=Array.from(this.children).filter(e=>e.getAttribute(`slot`)===`toolbar`);if(this.replaceChildren(),this.#e=e.createElement(`div`),this.#e.className=`slicc-input-card__card`,this.#e.setAttribute(`part`,`card`),this.#t=e.createElement(`textarea`),this.#t.className=`ta`,this.#t.setAttribute(`part`,`textarea`),this.#t.rows=1,this.#n=e.createElement(`div`),this.#n.className=`toolbar`,this.#n.setAttribute(`part`,`toolbar`),t.length>0)for(let e of t)this.#n.appendChild(e);else this.#n.append(O(`slicc-add-menu`),O(`slicc-send-button`));this.#e.append(this.#t,this.#n),this.appendChild(this.#e),this.#t.addEventListener(`input`,this.#o),this.#t.addEventListener(`keydown`,this.#s),this.#n.addEventListener(`send`,this.#c)}#a(){if(!this.#r)return;let e=this.#t;e.placeholder=this.suggestion??this.placeholder,e.disabled=this.disabled;let t=this.getAttribute(`value`)??``;e.value!==t&&(e.value=t)}#o=e=>{e.stopPropagation();let t=this.#t.value;t===``?this.removeAttribute(`value`):this.setAttribute(`value`,t),this.#u(),this.dispatchEvent(new CustomEvent(`input`,{bubbles:!0,composed:!0,detail:{value:t}}))};#s=e=>{if(e.isComposing)return;if(e.key===`Enter`&&!e.shiftKey){e.preventDefault(),this.#l();return}if(e.key===`Tab`&&!e.shiftKey&&!e.altKey&&!e.ctrlKey&&!e.metaKey){let t=this.suggestion;if(t&&this.#t.value===``){e.preventDefault(),this.removeAttribute(`suggestion`);let n=this.#t;n.value=t,n.setSelectionRange(t.length,t.length),n.dispatchEvent(new Event(`input`,{bubbles:!0}))}return}let t=this.#t,n=t.selectionStart===t.selectionEnd;e.key===`ArrowUp`&&n&&t.selectionStart===0?(e.preventDefault(),this.dispatchEvent(new CustomEvent(`history-up`,{bubbles:!0,composed:!0}))):e.key===`ArrowDown`&&n&&t.selectionStart===t.value.length&&this.dispatchEvent(new CustomEvent(`history-down`,{bubbles:!0,composed:!0}))};#c=e=>{e.stopPropagation(),this.#l()};submit(e){this.#i(),this.#l(e)}focusEnd(){if(!this.#r)return;let e=this.#t;e.focus();let t=e.value.length;e.setSelectionRange(t,t)}#l(e){if(this.disabled)return;let t=this.#t.value;t.trim()!==``&&(this.removeAttribute(`suggestion`),this.dispatchEvent(new CustomEvent(`submit`,{bubbles:!0,composed:!0,detail:{value:t,...e?{source:e}:{}}})))}#u(){if(!this.#r)return;let e=this.#t;e.style.height=`auto`;let t=e.scrollHeight;e.style.height=`${Math.min(t,140)}px`,e.style.overflowY=t>140?`auto`:`hidden`}});var Jn=k(`
|
|
1803
2124
|
:host{display:block;font-family:var(--ui);}
|
|
1804
2125
|
:host(:not([count])),:host([count="0"]),:host([count="-0"]){display:none;}
|
|
1805
2126
|
.wrap{display:flex;flex-direction:column;align-items:stretch;gap:6px;}
|
|
@@ -1820,7 +2141,7 @@ slicc-input-card .toolbar slicc-add-menu {
|
|
|
1820
2141
|
:host-context(body.dark) .dismiss:hover,:host-context(body.dark) .dismiss:focus-visible,
|
|
1821
2142
|
:host-context(.dark) .dismiss:hover,:host-context(.dark) .dismiss:focus-visible,
|
|
1822
2143
|
:host-context([data-theme="dark"]) .dismiss:hover,:host-context([data-theme="dark"]) .dismiss:focus-visible{background:color-mix(in srgb,#0a0a0a 14%,transparent);}
|
|
1823
|
-
`),
|
|
2144
|
+
`),Yn=[{rot:0,x:0,y:0},{rot:-2,x:-3,y:-2},{rot:2,x:3,y:-4},{rot:-3,x:-5,y:-6},{rot:3,x:5,y:-8},{rot:-1,x:-2,y:-10},{rot:1,x:2,y:-12}];function Xn(e){return Yn[Math.min(e,Yn.length-1)]??Yn[0]}E(`slicc-queued-stack`,class extends HTMLElement{#e;#t=[];constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[Jn]}connectedCallback(){this.#i()}get count(){return this.#t.length}setMessages(e){this.#t=e.slice(),this.setAttribute(`count`,String(this.#t.length)),this.#i()}#n(e){this.dispatchEvent(new CustomEvent(`slicc-queued-remove`,{detail:{id:e},bubbles:!0,composed:!0}))}#r(e,t,n,i){let{rot:a,x:o,y:s}=Xn(t),c=n?`none`:`translate(${o}px, ${s}px) rotate(${a}deg)`,l=`card${n?` is-front`:``}${t===0?``:t===1?` is-back`:` is-deep`}`,u=n?`card front`:`card`,d=`transform:${c};z-index:${i};`,f=[O(`span`,{class:`bubble`},e.text)];if(e.attachments&&e.attachments>0&&f.push(O(`span`,{class:`attach`},`+${e.attachments}`)),n){let t=O(`button`,{type:`button`,class:`dismiss`,part:`dismiss`,"aria-label":`Remove queued message`},r(`x`,{size:14}));t.addEventListener(`click`,t=>{t.stopPropagation(),this.#n(e.id)}),f.push(t)}return O(`div`,{class:l,part:u,style:d},...f)}#i(){if(this.#t.length===0){this.#e.replaceChildren();return}let e=this.#t.length,t=[];for(let n=e-1;n>=0;n--){let r=e-1-n,i=r===0,a=n+1,o=this.#t[n];o&&t.push(this.#r(o,r,i,a))}let n=O(`div`,{class:`stack`,part:`stack`},...t),i=O(`div`,{class:`wrap`},O(`span`,{class:`badge`,part:`badge`},r(`clock`,{size:11}),`${e} queued`),n);this.#e.replaceChildren(i)}});var Zn=1e3;function Qn(e,t){let n=t.longPressMs??1e3,r=t.modifierClickAsLongPress??!0,i=null,a=!1,o=()=>{t.onPressEnd?.()},s=()=>{i!==null&&(clearTimeout(i),i=null),o()},c=e=>{e.button===0&&(e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||(a=!1,s(),t.onPressStart?.(e),i=setTimeout(()=>{a=!0,o(),i=null,t.onLongPress()},n)))},l=()=>s(),u=()=>s(),d=()=>s(),f=()=>s(),p=e=>{if(a){a=!1,e.preventDefault();return}if((e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)&&r){e.preventDefault(),t.onLongPress();return}t.onShortClick(e)};return e.addEventListener(`mousedown`,c),e.addEventListener(`mouseup`,l),e.addEventListener(`mouseleave`,u),e.addEventListener(`blur`,d),e.addEventListener(`contextmenu`,f),e.addEventListener(`click`,p),{destroy:()=>{s(),e.removeEventListener(`mousedown`,c),e.removeEventListener(`mouseup`,l),e.removeEventListener(`mouseleave`,u),e.removeEventListener(`blur`,d),e.removeEventListener(`contextmenu`,f),e.removeEventListener(`click`,p)}}}var $n=k(`
|
|
1824
2145
|
:host { display: inline-grid; }
|
|
1825
2146
|
:host([hidden]) { display: none; }
|
|
1826
2147
|
|
|
@@ -1902,7 +2223,7 @@ slicc-input-card .toolbar slicc-add-menu {
|
|
|
1902
2223
|
|
|
1903
2224
|
.glyph { display: grid; place-items: center; line-height: 1; }
|
|
1904
2225
|
.glyph svg { display: block; }
|
|
1905
|
-
`),
|
|
2226
|
+
`),er=`square`,tr=18;E(`slicc-dock-item`,class extends HTMLElement{static observedAttributes=[`item-id`,`kind`,`hue`,`icon`,`tip`,`active`,`lit`];#e;#t=null;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[$n]}disconnectedCallback(){this.#t?.destroy(),this.#t=null}connectedCallback(){this.#n()}attributeChangedCallback(){this.isConnected&&this.#n()}get itemId(){return this.getAttribute(`item-id`)}set itemId(e){e==null?this.removeAttribute(`item-id`):this.setAttribute(`item-id`,e)}get kind(){return this.getAttribute(`kind`)===`sprinkle`?`sprinkle`:`tool`}set kind(e){this.setAttribute(`kind`,e===`sprinkle`?`sprinkle`:`tool`)}get hue(){return this.getAttribute(`hue`)}set hue(e){e==null?this.removeAttribute(`hue`):this.setAttribute(`hue`,e)}get icon(){return this.getAttribute(`icon`)??er}set icon(e){e==null?this.removeAttribute(`icon`):this.setAttribute(`icon`,e)}get tip(){return this.getAttribute(`tip`)}set tip(e){e==null?this.removeAttribute(`tip`):this.setAttribute(`tip`,e)}get active(){return this.hasAttribute(`active`)}set active(e){this.toggleAttribute(`active`,!!e)}get lit(){return this.hasAttribute(`lit`)}set lit(e){this.toggleAttribute(`lit`,!!e)}#n(){let e=[`di`];this.kind===`sprinkle`&&e.push(`sp`),this.active&&e.push(`on`),this.lit&&e.push(`lit`);let t=this.tip,n=r(this.icon,{size:tr,part:`icon`}),i=t??this.itemId??`dock item`,a=O(`button`,{type:`button`,part:`button`,class:e.join(` `),"aria-label":i,"aria-pressed":this.active?`true`:`false`},O(`span`,{class:`glyph`,part:`glyph`},O(`slot`,null,n)),t?O(`span`,{class:`tip`,part:`tip`},t):null),o=this.hue;o&&a.style.setProperty(`--h`,o),this.#t?.destroy(),this.#t=Qn(a,{onShortClick:this.#r,onLongPress:()=>this.#i(`longpress`)}),this.#e.replaceChildren(a)}#r=()=>{this.#i(this.active?`collapse`:`select`)};#i(e){this.dispatchEvent(new CustomEvent(e,{detail:{id:this.itemId},bubbles:!0,composed:!0}))}});var nr=[{id:`browser`,icon:`globe`,label:`Browser · CDP`,kind:`tool`},{id:`files`,icon:`folder`,label:`Files · VFS`,kind:`tool`},{id:`term`,icon:`square-terminal`,label:`Terminal`,kind:`tool`},{id:`memory`,icon:`brain`,label:`Memory`,kind:`tool`}],rr={id:`new`,icon:`plus`,label:`New sprinkle`,kind:`sprinkle`},ir=`
|
|
1906
2227
|
.slicc-dock {
|
|
1907
2228
|
flex: 0 0 48px;
|
|
1908
2229
|
box-sizing: border-box;
|
|
@@ -1923,7 +2244,7 @@ slicc-input-card .toolbar slicc-add-menu {
|
|
|
1923
2244
|
margin: 2px 0;
|
|
1924
2245
|
}
|
|
1925
2246
|
.slicc-dock .grow { flex: 1; }
|
|
1926
|
-
`,
|
|
2247
|
+
`,ar=`slicc-dock-style`;function or(e){if(e.getElementById(ar))return;let t=e.createElement(`style`);t.id=ar,t.textContent=ir,(e.head??e.documentElement).appendChild(t)}function sr(e){return e===`sprinkle`?`sprinkle`:`tool`}E(`slicc-dock`,class extends HTMLElement{static get observedAttributes(){return[`active`,`system-tools`]}#e=[];#t=null;#n=null;#r=null;#i=!1;connectedCallback(){or(this.ownerDocument),this.classList.add(`slicc-dock`),this.setAttribute(`part`,`rail`),this.setAttribute(`role`,`toolbar`),this.setAttribute(`aria-orientation`,`vertical`),this.#i||=(this.#a(),!0),this.#t||(this.#t=e=>this.#u(e),this.#n=e=>this.#d(e),this.#r=e=>this.#f(e),this.addEventListener(`select`,this.#t),this.addEventListener(`collapse`,this.#n),this.addEventListener(`longpress`,this.#r)),this.#c()}disconnectedCallback(){this.#t&&=(this.removeEventListener(`select`,this.#t),null),this.#n&&=(this.removeEventListener(`collapse`,this.#n),null),this.#r&&=(this.removeEventListener(`longpress`,this.#r),null)}attributeChangedCallback(e){this.#i&&(e===`active`?this.#l():e===`system-tools`&&this.#c())}get items(){return this.#e.map(e=>({...e}))}set items(e){this.#e=Array.isArray(e)?e.map(e=>({...e})):[],this.#i&&this.isConnected&&this.#c()}get active(){return this.getAttribute(`active`)}set active(e){e==null?this.removeAttribute(`active`):this.setAttribute(`active`,e)}get systemTools(){return this.hasAttribute(`system-tools`)}set systemTools(e){this.toggleAttribute(`system-tools`,!!e)}selectItem(e){this.active=e,this.dispatchEvent(new CustomEvent(`slicc-dock-select`,{detail:{id:e,kind:this.#o(e)},bubbles:!0,composed:!0}))}clearActive(){this.active=null}collapse(){let e=this.active;this.active=null,e!=null&&this.dispatchEvent(new CustomEvent(`slicc-dock-collapse`,{detail:{id:e},bubbles:!0,composed:!0}))}#a(){let e=[...this.querySelectorAll(`slicc-dock-item`)];if(e.length===0)return;let t=[];for(let n of e){let e=sr(n.getAttribute(`kind`)),r=n.getAttribute(`item-id`)??n.dataset.t??n.getAttribute(`tip`)??``;e===`tool`||r===`new`||r===``||t.push({id:r,icon:n.getAttribute(`icon`)??void 0,label:n.getAttribute(`tip`)??void 0,kind:`sprinkle`,hue:n.getAttribute(`hue`)??void 0})}for(let t of e)t.remove();this.#e.length===0&&(this.#e=t)}#o(e){return nr.some(t=>t.id===e)?`tool`:e===rr.id?`sprinkle`:this.#e.find(t=>t.id===e)?.kind??`tool`}#s(e,t){let n=e.id,r=sr(e.kind),i=e.icon??``,a=e.label??n,o=t!=null&&t===n,s=e.hue;return O(`slicc-dock-item`,{"data-t":n,"item-id":n,kind:r,icon:i||!1,tip:a,hue:s||!1,active:o})}#c(){let e=this.active,t=[];for(let n of this.#e)sr(n.kind)===`sprinkle`&&t.push(this.#s(n,e));if(t.push(this.#s(rr,e)),t.push(O(`div`,{class:`grow`})),this.systemTools){t.push(O(`div`,{class:`div`}));for(let n of nr)t.push(this.#s(n,e))}this.replaceChildren(),D(this,t)}#l(){let e=this.active;for(let t of this.querySelectorAll(`slicc-dock-item`))t.toggleAttribute(`active`,t.dataset.t===e)}#u(e){let t=this.#p(e);t!=null&&(e.stopPropagation(),this.selectItem(t))}#d(e){let t=this.#p(e);t!=null&&(e.stopPropagation(),this.active!==t&&(this.active=t),this.collapse())}#f(e){let t=this.#p(e);t!=null&&(e.stopPropagation(),this.active!==t&&this.selectItem(t),this.dispatchEvent(new CustomEvent(`slicc-dock-longpress`,{detail:{id:t,kind:this.#o(t)},bubbles:!0,composed:!0})))}#p(e){let t=e.detail;if(t&&typeof t.id==`string`)return t.id;let n=e.target?.closest(`slicc-dock-item`);return n&&this.contains(n)?n.dataset.t??null:null}});var cr=k(`
|
|
1927
2248
|
:host { display: none; }
|
|
1928
2249
|
:host([open]) { display: block; }
|
|
1929
2250
|
.overlay {
|
|
@@ -2000,7 +2321,7 @@ slicc-input-card .toolbar slicc-add-menu {
|
|
|
2000
2321
|
color: rgba(255,255,255,.7); font-family: var(--ui); font-size: 14px;
|
|
2001
2322
|
}
|
|
2002
2323
|
@media (prefers-reduced-motion: reduce) { .overlay, .card { transition: none; } }
|
|
2003
|
-
`),
|
|
2324
|
+
`),lr=`Open tabs`;E(`slicc-tab-overlay`,class extends HTMLElement{static observedAttributes=[`open`,`heading`];#e;#t=[];#n=null;#r=null;#i=e=>{e.key===`Escape`&&this.open&&(e.stopPropagation(),this.#u(`escape`))};constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[cr]}connectedCallback(){this.#s(),this.#c()}disconnectedCallback(){document.removeEventListener(`keydown`,this.#i,!0)}attributeChangedCallback(e){this.isConnected&&(e===`open`?this.#c():this.#s())}get open(){return this.hasAttribute(`open`)}set open(e){this.toggleAttribute(`open`,!!e)}get heading(){return this.getAttribute(`heading`)??lr}set heading(e){e==null?this.removeAttribute(`heading`):this.setAttribute(`heading`,e)}get tabs(){return this.#t.map(e=>({...e}))}set tabs(e){this.#t=Array.isArray(e)?e.map(e=>({...e})):[],this.isConnected&&this.#s()}show(){this.open||=!0}hide(){this.open&&this.#u(`api`)}#a(){let e=O(`button`,{class:`close`,part:`close`,type:`button`,"aria-label":`Close tabs overlay`},r(`x`,{size:18}));return e.addEventListener(`click`,()=>this.#u(`close-button`)),e}#o(e){let t=e.title??e.id,n=e.screenshot?O(`img`,{class:`shot`,part:`shot`,src:e.screenshot,alt:t,loading:`lazy`}):O(`div`,{class:`shot ph`,part:`shot`},r(`globe`,{size:28})),i=O(`button`,{class:`x`,part:`card-close`,type:`button`,"aria-label":`Close ${t}`},r(`x`,{size:14}));i.addEventListener(`click`,t=>{t.stopPropagation(),this.#l(`tab-close`,e.id)});let a=O(`div`,{class:`label`},O(`span`,{class:`name`,part:`title`},t),e.url?O(`span`,{class:`url`},e.url):null),o=O(`div`,{class:e.active?`card on`:`card`,part:`card`,role:`button`,tabindex:`0`,"data-tab-id":e.id,"aria-label":t,"aria-current":e.active?`true`:!1},n,O(`div`,{class:`meta`},a,i));return o.addEventListener(`click`,()=>this.#l(`tab-activate`,e.id)),o.addEventListener(`keydown`,t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),this.#l(`tab-activate`,e.id))}),o}#s(){let e=O(`div`,{class:`bar`,part:`bar`},O(`span`,{class:`title`},this.heading),O(`span`,{class:`count`},String(this.#t.length)),O(`span`,{class:`grow`}),this.#a()),t;if(this.#t.length===0)t=O(`div`,{class:`empty`},`No open tabs.`);else{t=O(`div`,{class:`grid`,part:`grid`,role:`list`});for(let e of this.#t)t.appendChild(this.#o(e))}this.#n=O(`div`,{class:`overlay`,part:`overlay`},e,t),this.#n.addEventListener(`mousedown`,e=>{e.target===this.#n&&this.#u(`backdrop`)}),this.#e.replaceChildren(this.#n)}#c(){this.open?(this.#r=this.getRootNode().activeElement,document.addEventListener(`keydown`,this.#i,!0),requestAnimationFrame(()=>this.#n?.querySelector(`.close`)?.focus())):(document.removeEventListener(`keydown`,this.#i,!0),this.#r?.focus?.(),this.#r=null)}#l(e,t){this.dispatchEvent(new CustomEvent(e,{detail:{id:t},bubbles:!0,composed:!0}))}#u(e){this.open=!1,this.dispatchEvent(new CustomEvent(`overlay-close`,{detail:{reason:e},bubbles:!0,composed:!0}))}});var ur=`#3b6cb2`,dr=`
|
|
2004
2325
|
.slicc-freezer {
|
|
2005
2326
|
position: fixed;
|
|
2006
2327
|
left: 0;
|
|
@@ -2084,12 +2405,12 @@ slicc-input-card .toolbar slicc-add-menu {
|
|
|
2084
2405
|
|
|
2085
2406
|
/* ice-blue accent while a freezer context is active (prototype _ctxAccent) —
|
|
2086
2407
|
tints the toggle + the new-chat icon; cards keep their snow palette. */
|
|
2087
|
-
.slicc-freezer[ctx] .fztgl { color: var(--fz-ctx, ${
|
|
2408
|
+
.slicc-freezer[ctx] .fztgl { color: var(--fz-ctx, ${ur}); border-color: color-mix(in srgb, var(--fz-ctx, ${ur}) 40%, var(--line)); }
|
|
2088
2409
|
.slicc-freezer[ctx] ::part(new-icon),
|
|
2089
2410
|
.slicc-freezer[ctx] slicc-freezer-new::part(new-icon) {
|
|
2090
|
-
background: color-mix(in srgb, var(--fz-ctx, ${
|
|
2091
|
-
border-color: color-mix(in srgb, var(--fz-ctx, ${
|
|
2092
|
-
color: var(--fz-ctx, ${
|
|
2411
|
+
background: color-mix(in srgb, var(--fz-ctx, ${ur}) 14%, var(--canvas));
|
|
2412
|
+
border-color: color-mix(in srgb, var(--fz-ctx, ${ur}) 40%, var(--line));
|
|
2413
|
+
color: var(--fz-ctx, ${ur});
|
|
2093
2414
|
}
|
|
2094
2415
|
|
|
2095
2416
|
/* match-hidden: search filtered a session row out (only meaningful when open,
|
|
@@ -2097,7 +2418,7 @@ slicc-input-card .toolbar slicc-add-menu {
|
|
|
2097
2418
|
prototype .fzcard row. */
|
|
2098
2419
|
.slicc-freezer[open] slicc-freezer-card.match-hidden,
|
|
2099
2420
|
.slicc-freezer[open] .fzcard.match-hidden { display: none; }
|
|
2100
|
-
`,
|
|
2421
|
+
`,fr=`slicc-freezer-style`;function pr(e){if(e.getElementById(fr))return;let t=e.createElement(`style`);t.id=fr,t.textContent=dr,(e.head??e.documentElement).appendChild(t)}var mr=`http://www.w3.org/2000/svg`;function hr(){let e=document.createElementNS(mr,`svg`);for(let[t,n]of[[`width`,`14`],[`height`,`14`],[`viewBox`,`0 0 16 16`],[`fill`,`none`],[`stroke`,`currentColor`],[`stroke-width`,`1.6`],[`stroke-linecap`,`round`],[`stroke-linejoin`,`round`],[`aria-hidden`,`true`]])e.setAttribute(t,n);let t=document.createElementNS(mr,`rect`);for(let[e,n]of[[`x`,`2.5`],[`y`,`3.5`],[`width`,`11`],[`height`,`9`],[`rx`,`1.5`]])t.setAttribute(e,n);let n=document.createElementNS(mr,`line`);for(let[e,t]of[[`x1`,`6`],[`y1`,`3.5`],[`x2`,`6`],[`y2`,`12.5`]])n.setAttribute(e,t);let r=document.createElementNS(mr,`polyline`);return r.setAttribute(`points`,`9,6.5 10.5,8 9,9.5`),e.append(t,n,r),e}E(`slicc-freezer`,class extends HTMLElement{static observedAttributes=[`open`,`ctx`,`search-placeholder`];#e;#t;#n;#r;#i=!1;#a=null;#o=null;connectedCallback(){pr(this.ownerDocument),this.classList.add(`slicc-freezer`),this.setAttribute(`part`,`freezer`),this.hasAttribute(`aria-label`)||this.setAttribute(`aria-label`,`Past sessions (freezer)`),this.#s(),this.#l(),this.#u()}disconnectedCallback(){this.#a&&this.#t&&(this.#t.removeEventListener(`click`,this.#a),this.#a=null),this.#o&&this.#n&&(this.#n.removeEventListener(`input`,this.#o),this.#o=null)}attributeChangedCallback(e,t,n){this.#i&&(e===`open`?(this.#l(),this.#u()):e===`search-placeholder`&&(this.#n.placeholder=n??`search past sessions`))}get open(){return this.hasAttribute(`open`)}set open(e){this.toggleAttribute(`open`,e)}get ctx(){return this.hasAttribute(`ctx`)}set ctx(e){this.toggleAttribute(`ctx`,e)}get searchPlaceholder(){return this.getAttribute(`search-placeholder`)??`search past sessions`}set searchPlaceholder(e){e==null?this.removeAttribute(`search-placeholder`):this.setAttribute(`search-placeholder`,e)}get query(){return this.#i?this.#n.value:``}set query(e){this.#s(),this.#n.value=e,this.#d()}get rail(){return this.#s(),this.#r}toggle(e){let t=e??!this.open;t===this.open&&this.#l(),this.open=t,this.#l(),this.#u(),this.dispatchEvent(new CustomEvent(`freezer-toggle`,{detail:{open:t},bubbles:!0,composed:!0}))}append(...e){this.#s(),this.#r.append(...e),this.#u()}#s(){if(this.#i)return;let e=this.querySelector(`:scope > .fzh`),t=this.querySelector(`:scope > .fzrail`);if(e instanceof HTMLElement&&t instanceof HTMLElement){this.#c(e,t);return}let n=Array.from(this.childNodes).filter(e=>!(e instanceof HTMLElement&&(e.classList.contains(`fzh`)||e.classList.contains(`fzrail`)))),r=this.ownerDocument,i=r.createElement(`div`);i.className=`fzh`,i.setAttribute(`part`,`header`);let a=r.createElement(`button`);a.className=`fztgl`,a.type=`button`,a.setAttribute(`part`,`toggle`),a.setAttribute(`aria-label`,`Toggle freezer`),a.append(hr());let o=r.createElement(`input`);o.className=`fzsearch`,o.type=`text`,o.setAttribute(`part`,`search`),o.placeholder=this.searchPlaceholder,o.setAttribute(`aria-label`,`Search past sessions`),i.append(a,o);let s=r.createElement(`div`);s.className=`fzrail`,s.setAttribute(`part`,`rail`);for(let e of n)s.appendChild(e);this.replaceChildren(i,s),this.#c(i,s)}#c(e,t){this.#i=!0,this.#e=e,this.#r=t;let n=e.querySelector(`.fztgl`),r=e.querySelector(`.fzsearch`);n&&(this.#t=n),r&&(this.#n=r),this.#t&&!this.#a&&(this.#a=()=>this.toggle(),this.#t.addEventListener(`click`,this.#a)),this.#n&&!this.#o&&(this.#o=()=>this.#d(),this.#n.addEventListener(`input`,this.#o))}#l(){if(!this.#t)return;let e=this.open;this.#t.setAttribute(`aria-expanded`,e?`true`:`false`),this.#t.title=e?`Collapse freezer`:`Expand freezer`}#u(){if(!this.#i)return;let e=this.open,t=this.#r.querySelectorAll(`slicc-freezer-card, slicc-freezer-new`);for(let n of t)n.toggleAttribute(`expanded`,e)}#d(){let e=this.#n.value.trim().toLowerCase(),t=this.#r.querySelectorAll(`slicc-freezer-card, .fzcard`);for(let n of t){let t=(n.textContent??``).toLowerCase();n.classList.toggle(`match-hidden`,e.length>0&&!t.includes(e))}}});var gr=14,_r=k(`
|
|
2101
2422
|
:host {
|
|
2102
2423
|
display: inline-grid;
|
|
2103
2424
|
place-items: center;
|
|
@@ -2133,7 +2454,7 @@ slicc-input-card .toolbar slicc-add-menu {
|
|
|
2133
2454
|
nothing is slotted */
|
|
2134
2455
|
::slotted(*), .ic { line-height: 1; }
|
|
2135
2456
|
.ic { display: block; }
|
|
2136
|
-
`);
|
|
2457
|
+
`);E(`slicc-snowflake`,class extends HTMLElement{static observedAttributes=[`thawed`];#e;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[_r];let e=O(`span`,{class:`snow`,part:`badge`},O(`slot`,null,r(`snowflake`,{size:gr,part:`glyph`,class:`ic`})));this.#e.replaceChildren(e)}get thawed(){return this.hasAttribute(`thawed`)}set thawed(e){this.toggleAttribute(`thawed`,e)}});var vr=`
|
|
2137
2458
|
slicc-freezer-card {
|
|
2138
2459
|
position: relative;
|
|
2139
2460
|
display: flex;
|
|
@@ -2194,616 +2515,295 @@ slicc-freezer-card .slicc-fzcard__text {
|
|
|
2194
2515
|
flex: 1;
|
|
2195
2516
|
min-width: 0;
|
|
2196
2517
|
opacity: 0;
|
|
2197
|
-
transition: opacity 0.18s;
|
|
2198
|
-
}
|
|
2199
|
-
slicc-freezer-card:not([expanded]) .slicc-fzcard__text {
|
|
2200
|
-
width: 0;
|
|
2201
|
-
min-width: 0;
|
|
2202
|
-
flex: 0 0 0;
|
|
2203
|
-
overflow: hidden;
|
|
2204
|
-
}
|
|
2205
|
-
slicc-freezer-card[expanded] .slicc-fzcard__text {
|
|
2206
|
-
opacity: 1;
|
|
2207
|
-
transition: opacity 0.25s 0.15s;
|
|
2208
|
-
}
|
|
2209
|
-
slicc-freezer-card .slicc-fzcard__title {
|
|
2210
|
-
font-size: 12.5px;
|
|
2211
|
-
font-weight: 600;
|
|
2212
|
-
color: var(--ink);
|
|
2213
|
-
white-space: nowrap;
|
|
2214
|
-
overflow: hidden;
|
|
2215
|
-
text-overflow: ellipsis;
|
|
2216
|
-
}
|
|
2217
|
-
slicc-freezer-card .slicc-fzcard__meta {
|
|
2218
|
-
margin-top: 2px;
|
|
2219
|
-
font-family: var(--ui);
|
|
2220
|
-
font-size: 10.5px;
|
|
2221
|
-
color: var(--txt-3);
|
|
2222
|
-
white-space: nowrap;
|
|
2223
|
-
overflow: hidden;
|
|
2224
|
-
text-overflow: ellipsis;
|
|
2225
|
-
}
|
|
2226
|
-
slicc-freezer-card[thawed] {
|
|
2227
|
-
background: color-mix(in srgb, var(--rose) 12%, transparent);
|
|
2228
|
-
}
|
|
2229
|
-
`,Vn=`slicc-freezer-card-style`;function Hn(e){if(e.getElementById(Vn))return;let t=e.createElement(`style`);t.id=Vn,t.textContent=Bn,(e.head??e.documentElement).appendChild(t)}var Un=1400,Wn=14;v(`slicc-freezer-card`,class extends HTMLElement{static observedAttributes=[`title`,`meta`,`slug`,`icon`,`thawed`];#e;#t;#n;#r;#i=null;#a=null;#o=!1;#s=null;#c=()=>this.#u();#l=()=>{if(!this.#i)return;let e=this.getBoundingClientRect();this.#i.style.setProperty(`--tip-x`,`${e.right+8}px`),this.#i.style.setProperty(`--tip-y`,`${e.top+e.height/2}px`)};connectedCallback(){Hn(this.ownerDocument),this.#d(),this.#f()}disconnectedCallback(){this.removeEventListener(`click`,this.#c),this.removeEventListener(`pointerenter`,this.#l),this.removeEventListener(`focusin`,this.#l),this.#s!=null&&(clearTimeout(this.#s),this.#s=null)}attributeChangedCallback(e,t,n){t===n||!this.#o||(e===`thawed`?this.#e.toggleAttribute(`thawed`,n!==null):e===`icon`?this.#p():this.#f())}get title(){return this.getAttribute(`title`)??``}set title(e){e==null?this.removeAttribute(`title`):this.setAttribute(`title`,e)}get meta(){return this.getAttribute(`meta`)??``}set meta(e){e==null?this.removeAttribute(`meta`):this.setAttribute(`meta`,e)}get slug(){return this.getAttribute(`slug`)??``}set slug(e){e==null?this.removeAttribute(`slug`):this.setAttribute(`slug`,e)}get icon(){return this.getAttribute(`icon`)}set icon(e){e==null?this.removeAttribute(`icon`):this.setAttribute(`icon`,e)}get expanded(){return this.hasAttribute(`expanded`)}set expanded(e){this.toggleAttribute(`expanded`,e)}get thawed(){return this.hasAttribute(`thawed`)}set thawed(e){this.toggleAttribute(`thawed`,e)}get hidden(){return this.hasAttribute(`hidden`)}set hidden(e){this.toggleAttribute(`hidden`,e)}get badge(){return this.#d(),this.#e}#u(){this.dispatchEvent(new CustomEvent(`freezer-card-select`,{bubbles:!0,composed:!0,detail:{slug:this.slug}})),this.flashThaw()}flashThaw(e=Un){this.#s!=null&&clearTimeout(this.#s),this.thawed=!0,this.#s=setTimeout(()=>{this.thawed=!1,this.#s=null},e)}#d(){if(this.#o)return;this.#o=!0;let e=this.querySelector(`:scope > .slicc-fzcard__text`);if(e instanceof HTMLElement){this.#t=e,this.#n=e.querySelector(`.slicc-fzcard__title`),this.#r=e.querySelector(`.slicc-fzcard__meta`),this.#e=this.querySelector(`:scope > slicc-snowflake`),this.#i=this.querySelector(`:scope > .slicc-fzcard__tip`),this.addEventListener(`click`,this.#c),this.addEventListener(`pointerenter`,this.#l),this.addEventListener(`focusin`,this.#l);return}let t=Array.from(this.childNodes);this.#e=this.ownerDocument.createElement(`slicc-snowflake`),this.#e.setAttribute(`part`,`badge`),this.#n=b(`div`,{class:`slicc-fzcard__title`,part:`title`}),this.#r=b(`div`,{class:`slicc-fzcard__meta`,part:`meta`}),this.#t=b(`div`,{class:`slicc-fzcard__text`,part:`text`},this.#n,this.#r);for(let e of t)this.#n.appendChild(e);this.#i=b(`span`,{class:`slicc-fzcard__tip`,part:`tip`,"aria-hidden":`true`}),this.replaceChildren(this.#e,this.#t,this.#i),this.addEventListener(`click`,this.#c),this.addEventListener(`pointerenter`,this.#l),this.addEventListener(`focusin`,this.#l)}#f(){if(!this.#o)return;let e=this.getAttribute(`title`);e!=null&&(this.#n.textContent=e),this.#r.textContent=this.meta,this.#i&&(this.#i.textContent=e??(this.#n.textContent||``)),this.#e.toggleAttribute(`thawed`,this.thawed),this.#p()}#p(){if(!this.#o)return;let e=this.getAttribute(`icon`);if(e){let t=r(e,{size:Wn,class:`ic`,part:`icon`});this.#a?this.#a.replaceWith(t):this.#e.appendChild(t),this.#a=t}else this.#a&&=(this.#a.remove(),null)}});var Gn=`square-pen`,Kn=`loader-circle`,qn=16,Jn=`New chat`,Yn=350,Xn=[[`save`,`archive`,`Save & start new`],[`skip`,`fast-forward`,`New chat — skip memory`],[`erase`,`trash-2`,`Erase & start new`]],Zn=x(`
|
|
2230
|
-
:host { display: block; }
|
|
2231
|
-
:host([hidden]) { display: none; }
|
|
2232
|
-
*{ box-sizing: border-box; }
|
|
2233
|
-
|
|
2234
|
-
/* .fznew — full-width new-chat button at the top of the freezer rail */
|
|
2235
|
-
.fznew {
|
|
2236
|
-
display: flex;
|
|
2237
|
-
align-items: center;
|
|
2238
|
-
gap: 10px;
|
|
2239
|
-
min-height: 36px;
|
|
2240
|
-
padding: 4px 8px;
|
|
2241
|
-
margin-bottom: 4px;
|
|
2242
|
-
border-radius: 8px;
|
|
2243
|
-
cursor: pointer;
|
|
2244
|
-
flex: 0 0 auto;
|
|
2245
|
-
background: transparent;
|
|
2246
|
-
border: none;
|
|
2247
|
-
color: var(--ink);
|
|
2248
|
-
font: inherit;
|
|
2249
|
-
font-family: var(--ui);
|
|
2250
|
-
text-align: left;
|
|
2251
|
-
width: 100%;
|
|
2252
|
-
transition: background-color .15s;
|
|
2253
|
-
}
|
|
2254
|
-
/* collapsed (icon-only) — prototype: .freezer:not(.open) .fznew */
|
|
2255
|
-
:host(:not([expanded])) .fznew {
|
|
2256
|
-
gap: 0;
|
|
2257
|
-
justify-content: center;
|
|
2258
|
-
padding: 4px 0;
|
|
2259
|
-
width: auto;
|
|
2260
|
-
align-self: center;
|
|
2261
|
-
}
|
|
2262
|
-
.fznew:hover { background: var(--ghost); }
|
|
2263
|
-
.fznew:focus-visible { outline: 2px solid var(--ctx); outline-offset: 2px; }
|
|
2264
|
-
|
|
2265
|
-
/* .nico — 28px circular icon badge, context-tinted with --ctx */
|
|
2266
|
-
.nico {
|
|
2267
|
-
width: 28px;
|
|
2268
|
-
height: 28px;
|
|
2269
|
-
display: grid;
|
|
2270
|
-
place-items: center;
|
|
2271
|
-
border-radius: 50%;
|
|
2272
|
-
background: color-mix(in srgb, var(--ctx) 14%, var(--canvas));
|
|
2273
|
-
border: 1px solid color-mix(in srgb, var(--ctx) 40%, var(--line));
|
|
2274
|
-
color: var(--ctx);
|
|
2275
|
-
flex: 0 0 auto;
|
|
2276
|
-
}
|
|
2277
|
-
.nico svg { display: block; }
|
|
2278
|
-
|
|
2279
|
-
/* .nlbl — "New chat" label, fades in when expanded. Weight 500 (lighter than
|
|
2280
|
-
the prototype's 600) to sit with the rest of the rail's UI text. */
|
|
2281
|
-
.nlbl {
|
|
2282
|
-
flex: 1;
|
|
2283
|
-
min-width: 0;
|
|
2284
|
-
font-size: 12.5px;
|
|
2285
|
-
font-weight: 500;
|
|
2286
|
-
color: var(--ink);
|
|
2287
|
-
white-space: nowrap;
|
|
2288
|
-
overflow: hidden;
|
|
2289
|
-
text-overflow: ellipsis;
|
|
2290
|
-
opacity: 0;
|
|
2291
|
-
transition: opacity .18s;
|
|
2292
|
-
}
|
|
2293
|
-
:host(:not([expanded])) .nlbl {
|
|
2294
|
-
width: 0;
|
|
2295
|
-
min-width: 0;
|
|
2296
|
-
flex: 0 0 0;
|
|
2297
|
-
overflow: hidden;
|
|
2298
|
-
}
|
|
2299
|
-
:host([expanded]) .nlbl {
|
|
2300
|
-
opacity: 1;
|
|
2301
|
-
transition: opacity .25s .15s;
|
|
2302
|
-
}
|
|
2303
|
-
|
|
2304
|
-
/* .fznew-options — the three gesture actions, surfaced as a small legend of
|
|
2305
|
-
directly-clickable rows. Hidden at rest; in expanded mode they are revealed
|
|
2306
|
-
only on hover or keyboard focus (focus-within), so the rail stays calm by
|
|
2307
|
-
default and the legend is a discoverable hover affordance rather than
|
|
2308
|
-
persistent chrome. Collapsed, the press gesture on the badge is the only
|
|
2309
|
-
affordance. */
|
|
2310
|
-
.fznew-options { display: none; }
|
|
2311
|
-
:host([expanded]:hover) .fznew-options,
|
|
2312
|
-
:host([expanded]:focus-within) .fznew-options {
|
|
2313
|
-
display: flex;
|
|
2314
|
-
flex-direction: column;
|
|
2315
|
-
gap: 1px;
|
|
2316
|
-
margin: 2px 0 4px;
|
|
2317
|
-
padding-left: 38px;
|
|
2318
|
-
}
|
|
2319
|
-
.fznew-opt {
|
|
2320
|
-
appearance: none;
|
|
2321
|
-
background: transparent;
|
|
2322
|
-
border: none;
|
|
2323
|
-
margin: 0;
|
|
2324
|
-
font: inherit;
|
|
2325
|
-
font-family: var(--ui);
|
|
2326
|
-
font-size: 11px;
|
|
2327
|
-
font-weight: 500;
|
|
2328
|
-
color: var(--txt-3);
|
|
2329
|
-
text-align: left;
|
|
2330
|
-
padding: 3px 6px;
|
|
2331
|
-
border-radius: 6px;
|
|
2332
|
-
cursor: pointer;
|
|
2333
|
-
display: flex;
|
|
2334
|
-
align-items: center;
|
|
2335
|
-
gap: 6px;
|
|
2336
|
-
white-space: nowrap;
|
|
2337
|
-
}
|
|
2338
|
-
.fznew-opt:hover { background: var(--ghost); color: var(--ink); }
|
|
2339
|
-
.fznew-opt:focus-visible { outline: 2px solid var(--ctx); outline-offset: 1px; }
|
|
2340
|
-
.fznew-opt svg { display: block; flex: 0 0 auto; }
|
|
2341
|
-
|
|
2342
|
-
/* .fznew-spinner — busy/pending progress: the badge glyph swaps to a spinning
|
|
2343
|
-
lucide loader the moment the new-chat work is kicked off (optimistically on a
|
|
2344
|
-
save click, or whenever the host sets the busy attribute), so there is
|
|
2345
|
-
immediate feedback before any save/reload completes. */
|
|
2346
|
-
.fznew-spinner { display: grid; place-items: center; color: var(--ctx); position: relative; }
|
|
2347
|
-
.fznew-spinner svg { display: block; animation: slicc-fznew-spin 0.8s linear infinite; }
|
|
2348
|
-
@keyframes slicc-fznew-spin { to { transform: rotate(360deg); } }
|
|
2349
|
-
|
|
2350
|
-
/* .fznew-ring — determinate countdown ring drawn around the badge when the host
|
|
2351
|
-
drives the progress attribute (the new-session save race's 20s timer). A
|
|
2352
|
-
conic-gradient sweep filled to --fznew-progress (0..1) of a full turn,
|
|
2353
|
-
masked to a thin ring so the spinning loader still reads inside it. */
|
|
2354
|
-
.fznew-ring {
|
|
2355
|
-
position: absolute;
|
|
2356
|
-
inset: -6px;
|
|
2357
|
-
border-radius: 50%;
|
|
2358
|
-
background: conic-gradient(
|
|
2359
|
-
var(--ctx) calc(var(--fznew-progress, 0) * 360deg),
|
|
2360
|
-
color-mix(in srgb, var(--ctx) 18%, transparent) 0
|
|
2361
|
-
);
|
|
2362
|
-
-webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 2px), #000 calc(100% - 2px));
|
|
2363
|
-
mask: radial-gradient(farthest-side, transparent calc(100% - 2px), #000 calc(100% - 2px));
|
|
2364
|
-
pointer-events: none;
|
|
2365
|
-
}
|
|
2366
|
-
|
|
2367
|
-
/* Respect prefers-reduced-motion: no fade, no spin — just hold the static end
|
|
2368
|
-
state (the loader glyph still shows, it simply does not rotate). The
|
|
2369
|
-
determinate ring stays — it conveys progress, not motion. */
|
|
2370
|
-
@media (prefers-reduced-motion: reduce) {
|
|
2371
|
-
.fznew, .nlbl { transition: none; }
|
|
2372
|
-
.fznew-spinner svg { animation: none; }
|
|
2373
|
-
}
|
|
2374
|
-
`);v(`slicc-freezer-new`,class extends HTMLElement{static observedAttributes=[`expanded`,`label`,`busy`,`progress`];#e;#t=null;#n=null;#r=null;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[Zn]}connectedCallback(){this.#a()}disconnectedCallback(){this.#n?.destroy(),this.#n=null,this.#c()}attributeChangedCallback(e){e===`progress`&&this.#i()||this.isConnected&&this.#a()}get expanded(){return this.hasAttribute(`expanded`)}set expanded(e){this.toggleAttribute(`expanded`,e)}get label(){return this.getAttribute(`label`)??Jn}set label(e){e==null?this.removeAttribute(`label`):this.setAttribute(`label`,e)}get busy(){return this.hasAttribute(`busy`)}set busy(e){this.toggleAttribute(`busy`,e)}get progress(){let e=this.getAttribute(`progress`);if(e==null)return null;let t=Number.parseFloat(e);return Number.isFinite(t)?Math.min(1,Math.max(0,t)):null}set progress(e){e==null?this.removeAttribute(`progress`):this.setAttribute(`progress`,String(Math.min(1,Math.max(0,e))))}#i(){let e=this.#e.querySelector(`.fznew-ring`);return!e||!this.busy||!this.hasAttribute(`progress`)?!1:(e.style.setProperty(`--fznew-progress`,String(this.progress??0)),!0)}#a(){let e=this.label,t=this.busy,n=t&&this.hasAttribute(`progress`),i=b(`span`,{class:`nico`,part:`badge`},t?b(`span`,{class:`fznew-spinner`,part:`spinner`},n?b(`span`,{class:`fznew-ring`,part:`ring`,style:`--fznew-progress:${this.progress??0}`}):null,r(Kn,{size:qn,part:`icon`})):b(`slot`,{name:`icon`},r(Gn,{size:qn,part:`icon`}))),a=b(`span`,{class:`nlbl`,part:`label`},b(`slot`,null,e)),o=b(`button`,{class:`fznew`,part:`button`,type:`button`,"aria-label":e,title:e,"aria-busy":t?`true`:void 0},i,a);this.#t=o,this.#s(o),this.#e.replaceChildren(o,this.#o())}#o(){let e=b(`div`,{class:`fznew-options`,part:`options`});for(let[t,n,i]of Xn){let a=b(`button`,{class:`fznew-opt fznew-opt--${t}`,part:`option-${t}`,type:`button`},r(n,{size:13}),b(`span`,{class:`fznew-opt__text`},i));a.addEventListener(`click`,()=>this.#l(t)),e.appendChild(a)}return e}#s(e){this.#n?.destroy(),this.#c(),this.#n=bn(e,{onLongPress:()=>{if(this.#r!==null){this.#c(),this.#l(`skip`);return}this.#l(`erase`)},onShortClick:()=>{if(this.#r!==null){this.#c(),this.#l(`skip`);return}this.#r=setTimeout(()=>{this.#r=null,this.#l(`save`)},Yn)}})}#c(){this.#r!==null&&(clearTimeout(this.#r),this.#r=null)}#l(e){e===`save`&&(this.busy=!0),this.dispatchEvent(new CustomEvent(`new-chat-${e}`,{bubbles:!0,composed:!0}))}});var Qn=`attribute vec2 a_pos; void main(){ gl_Position = vec4(a_pos,0.0,1.0); }`,$n=`precision highp float;
|
|
2375
|
-
uniform vec2 u_res; uniform float u_time; uniform float u_energy;
|
|
2376
|
-
uniform vec2 u_center; uniform vec3 u_evt; uniform float u_freeze; uniform float u_dark;
|
|
2377
|
-
uniform float u_density; uniform float u_falloff; uniform float u_life;
|
|
2378
|
-
uniform float u_blink; uniform float u_thick; uniform vec3 u_tint; uniform float u_scroll;
|
|
2379
|
-
uniform float u_brightness; uniform float u_contrast; uniform float u_noise; uniform float u_blur;
|
|
2380
|
-
vec3 themeBg(){ return mix(vec3(0.97,0.95,0.89), vec3(0.09,0.08,0.06), u_dark); }`,er=`
|
|
2381
|
-
float hash21(vec2 p){ p=fract(p*vec2(123.34,456.21)); p+=dot(p,p+45.32); return fract(p.x*p.y); }
|
|
2382
|
-
float vnoise(vec2 p){ vec2 i=floor(p),f=fract(p);
|
|
2383
|
-
float a=hash21(i),b=hash21(i+vec2(1.,0.)),c=hash21(i+vec2(0.,1.)),d=hash21(i+vec2(1.,1.));
|
|
2384
|
-
vec2 u=f*f*(3.-2.*f); return mix(mix(a,b,u.x),mix(c,d,u.x),u.y); }
|
|
2385
|
-
float fbm(vec2 p){ float v=0.,a=0.5; for(int i=0;i<5;i++){ v+=a*vnoise(p); p=p*2.02+vec2(7.1,3.7); a*=0.5;} return v; }
|
|
2386
|
-
vec2 warp(vec2 p, float t){ float a=fbm(p+vec2(0.0,1.7)+t*0.10); float b=fbm(p+vec2(5.2,1.3)-t*0.08); return p+0.85*vec2(a,b); }`,tr={cone:`${$n}${er}
|
|
2387
|
-
float cellCycle(vec2 q){ float s=hash21(q+11.7);
|
|
2388
|
-
return 0.5+0.32*sin(u_time*u_blink+s*6.2831)+0.18*sin(u_time*0.6*u_blink+s*19.0); }
|
|
2389
|
-
void main(){
|
|
2390
|
-
vec2 uv=gl_FragCoord.xy/u_res; float aspect=u_res.x/u_res.y;
|
|
2391
|
-
vec2 p=uv-0.5; p.x*=aspect; vec2 c=u_center-0.5; c.x*=aspect;
|
|
2392
|
-
vec3 bg=themeBg(); float dist=length(p-c);
|
|
2393
|
-
/* Chat scroll pans the (periodic) lattice with the content. */
|
|
2394
|
-
p.y-=u_scroll;
|
|
2395
|
-
float ca=cos(0.7853981634), sa=sin(0.7853981634);
|
|
2396
|
-
vec2 pr=mat2(ca,-sa,sa,ca)*p; float cells=12.0; vec2 g=pr*cells; g.x+=g.y*0.5;
|
|
2397
|
-
vec2 id=floor(g); vec2 f=fract(g)-0.5;
|
|
2398
|
-
float dia=mix(length(f),abs(f.x)+abs(f.y),0.82);
|
|
2399
|
-
float ph=hash21(id)*6.2831; float radius=0.42+0.05*sin(u_time*0.5+ph);
|
|
2400
|
-
float aa=2.2/cells; float outline=smoothstep(u_thick+aa,u_thick,abs(dia-radius));
|
|
2401
|
-
float seedDen=clamp(u_density+u_energy*0.20*exp(-dist*2.0),0.0,1.0);
|
|
2402
|
-
float selfCyc=cellCycle(id); float selfSoft=smoothstep(-0.05,0.05,seedDen-selfCyc);
|
|
2403
|
-
float selfHard=step(selfCyc,seedDen); float nbs=0.0;
|
|
2404
|
-
for(int j=-1;j<=1;j++){ for(int i=-1;i<=1;i++){ if(i==0&&j==0) continue;
|
|
2405
|
-
vec2 nb=id+vec2(float(i),float(j)); nbs+=step(cellCycle(nb),seedDen); } }
|
|
2406
|
-
float survive=smoothstep(1.5,1.9,nbs)-smoothstep(3.1,3.5,nbs);
|
|
2407
|
-
float birth=smoothstep(2.6,3.0,nbs)-smoothstep(3.0,3.4,nbs);
|
|
2408
|
-
float gol=clamp(selfHard*survive+(1.0-selfHard)*birth,0.0,1.0);
|
|
2409
|
-
float golMix=1.0-smoothstep(0.0,max(u_life,0.001),dist);
|
|
2410
|
-
float onState=mix(selfSoft,gol,golMix);
|
|
2411
|
-
float falloff=clamp(1.0-u_falloff*max(dist-0.12,0.0),0.0,1.0);
|
|
2412
|
-
falloff=clamp(falloff+u_energy*0.30*exp(-dist*2.0),0.0,1.0); onState*=falloff;
|
|
2413
|
-
float bevel=clamp(0.5-(f.x-f.y)*0.9,0.0,1.0);
|
|
2414
|
-
vec3 lineCol=mix(vec3(0.78,0.55,0.30),vec3(0.86,0.62,0.36),u_dark);
|
|
2415
|
-
vec3 hiCol=mix(vec3(0.90,0.72,0.46),vec3(0.92,0.74,0.48),u_dark);
|
|
2416
|
-
vec3 tint=mix(lineCol,hiCol,bevel*0.6); float stroke=outline*onState;
|
|
2417
|
-
// Low-contrast lattice: chat prose sits DIRECTLY on this field (the frosted
|
|
2418
|
-
// reading card is gone), so strokes stay close to the base color — toward
|
|
2419
|
-
// the light bg in light mode, toward the dark bg in dark mode.
|
|
2420
|
-
vec3 col=mix(bg,tint,clamp(stroke*0.20,0.0,0.20));
|
|
2421
|
-
col+=u_evt*u_energy*stroke*exp(-dist*dist*4.0)*0.18;
|
|
2422
|
-
/* Cone-only post: a noise/grain layer whose sample frequency is driven by
|
|
2423
|
-
u_blur (high blur => low frequency / soft, low blur => sharp grain), then
|
|
2424
|
-
contrast around 0.5 and brightness as a multiplier. The JS getters bake in
|
|
2425
|
-
tuned defaults (brightness=1.2, contrast=0.75, noise=0.04, blur=0.09); at
|
|
2426
|
-
the shader level the identity is still u_noise=0, u_contrast=1, u_brightness=1. */
|
|
2427
|
-
float noiseFreq=mix(80.0,4.0,clamp(u_blur,0.0,1.0));
|
|
2428
|
-
float grain=fbm(uv*noiseFreq)-0.5;
|
|
2429
|
-
col+=u_noise*grain;
|
|
2430
|
-
col=(col-0.5)*u_contrast+0.5;
|
|
2431
|
-
col*=u_brightness;
|
|
2432
|
-
col=clamp(col,0.0,1.0);
|
|
2433
|
-
gl_FragColor=vec4(col,1.0);
|
|
2434
|
-
}`,scoop:`${$n}${er}
|
|
2435
|
-
vec3 pal(float t){ vec3 strawberry=vec3(1.0,0.45,0.62); vec3 vanilla=vec3(1.0,0.95,0.82);
|
|
2436
|
-
vec3 pistachio=vec3(0.60,0.86,0.52);
|
|
2437
|
-
vec3 col=mix(strawberry,vanilla,smoothstep(0.0,0.5,t)); col=mix(col,pistachio,smoothstep(0.5,1.0,t)); return col; }
|
|
2438
|
-
void main(){
|
|
2439
|
-
vec2 uv=gl_FragCoord.xy/u_res; float aspect=u_res.x/u_res.y;
|
|
2440
|
-
vec2 p=uv-0.5; p.x*=aspect; p.y-=u_scroll; vec2 c=u_center-0.5; c.x*=aspect;
|
|
2441
|
-
vec3 bg=mix(themeBg(),u_tint,0.14); vec2 sp=p-c; float r=length(sp); float a=atan(sp.y,sp.x);
|
|
2442
|
-
float breathe=1.0+0.06*sin(u_time*0.4);
|
|
2443
|
-
float swirl=a+r*(2.2+0.8*sin(u_time*0.15))-u_time*0.18-u_energy*2.0*exp(-r*2.0);
|
|
2444
|
-
vec2 q=vec2(cos(swirl),sin(swirl))*r*breathe;
|
|
2445
|
-
vec2 w=warp(q*1.8+vec2(0.0,u_time*0.06),u_time);
|
|
2446
|
-
float n=fbm(w*1.4); n+=0.4*fbm(w*2.6-u_time*0.05); n=clamp(n/1.4,0.0,1.0);
|
|
2447
|
-
float ribbon=fbm(w*2.2+n*1.5); float t=clamp(n*0.7+ribbon*0.4,0.0,1.0);
|
|
2448
|
-
vec3 ice=pal(t); float hl=smoothstep(0.45,0.7,ribbon); ice=mix(ice,ice+vec3(0.18),hl*0.6);
|
|
2449
|
-
ice=mix(ice,u_tint,clamp(0.32+hl*0.30,0.0,0.85)); ice+=u_energy*u_evt*0.4*exp(-r*1.5);
|
|
2450
|
-
ice*=0.95+0.08*sin(u_time*0.4); float mask=smoothstep(0.62,0.0,r);
|
|
2451
|
-
vec3 col=mix(bg,ice,clamp(mask,0.0,1.0)*0.80); col+=ice*mask*hl*0.12;
|
|
2452
|
-
gl_FragColor=vec4(col,1.0);
|
|
2453
|
-
}`,freezer:`${$n}${er}
|
|
2454
|
-
/* Inside-of-a-freezer ground: icy WHITE in light mode (never the warm theme
|
|
2455
|
-
canvas — blue-on-beige read as sand, not frost), cold blue-black in dark. */
|
|
2456
|
-
vec3 freezerBg(){ return mix(vec3(0.965,0.98,1.0), vec3(0.05,0.08,0.13), u_dark); }
|
|
2457
|
-
void main(){
|
|
2458
|
-
vec2 uv=gl_FragCoord.xy/u_res; uv.y-=u_scroll; float aspect=u_res.x/u_res.y; vec2 p=(uv-0.5); p.x*=aspect;
|
|
2459
|
-
/* Glacial clock: frost creeps, it never flows. */
|
|
2460
|
-
float t=u_time*0.08;
|
|
2461
|
-
vec3 iceCol=mix(vec3(0.55,0.80,1.0),vec3(0.36,0.52,0.78),u_dark);
|
|
2462
|
-
vec3 deepIce=mix(vec3(0.20,0.44,0.84),vec3(0.12,0.24,0.46),u_dark);
|
|
2463
|
-
vec3 bg=mix(freezerBg(),iceCol,0.10); float dc=distance(uv,vec2(0.0,0.0));
|
|
2464
|
-
float ragged=0.10*fbm(uv*6.0+3.0)+0.05*fbm(uv*14.0); float front=u_freeze*0.66+ragged-0.05;
|
|
2465
|
-
float edge=front-dc; float frozen=smoothstep(-0.04,0.06,edge); float wetBand=smoothstep(0.12,0.0,abs(edge));
|
|
2466
|
-
float ripple=0.015*sin(dc*40.0-t*0.4)*frozen; vec2 q=uv*aspect+vec2(ripple,ripple*0.5);
|
|
2467
|
-
float crystals=fbm(q*9.0); crystals+=0.5*fbm(q*20.0+4.0); crystals/=1.5;
|
|
2468
|
-
float facet=smoothstep(0.45,0.55,crystals); float veins=smoothstep(0.03,0.0,abs(fract(crystals*6.0)-0.5)-0.02);
|
|
2469
|
-
vec3 col=bg; vec3 wet=mix(bg,iceCol,0.5); float wetSpec=pow(clamp(fbm(uv*10.0-t*0.2),0.0,1.0),2.0);
|
|
2470
|
-
wet+=wetSpec*vec3(1.0)*0.25; col=mix(col,wet,wetBand*0.45);
|
|
2471
|
-
vec3 frost=mix(deepIce,iceCol,facet); frost+=veins*vec3(1.0)*0.30;
|
|
2472
|
-
float spark=smoothstep(0.92,1.0,fbm(uv*30.0))*(0.5+0.5*sin(t*0.6+crystals*20.0));
|
|
2473
|
-
frost+=spark*vec3(1.0)*0.4*frozen; col=mix(col,frost,frozen*0.85);
|
|
2474
|
-
float rim=smoothstep(0.05,0.0,abs(edge))*0.6; col+=rim*iceCol;
|
|
2475
|
-
/* The field is a BACKGROUND: chat prose sits directly on it, so the final
|
|
2476
|
-
wash pins the whole pattern close to the icy ground — the same ~20%
|
|
2477
|
-
deviation budget the cone lattice uses (strokes at 0.20 toward tint). */
|
|
2478
|
-
col=mix(freezerBg(),col,0.22);
|
|
2479
|
-
gl_FragColor=vec4(col,1.0);
|
|
2480
|
-
}`},nr=new Set([`cone`,`scoop`,`freezer`]),rr={cone:`radial-gradient(120% 120% at 35% 45%, color-mix(in srgb,#e0a866 40%,var(--bg)) 0%, var(--bg) 60%)`,scoop:`radial-gradient(120% 120% at 40% 50%, color-mix(in srgb,#ff9bc0 40%,var(--bg)) 0%, var(--bg) 62%)`,freezer:`radial-gradient(120% 120% at 0% 100%, color-mix(in srgb,#7fb0e6 55%,var(--bg)) 0%, var(--bg) 70%)`},ir=x(`
|
|
2481
|
-
:host { position: relative; display: block; pointer-events: none; }
|
|
2482
|
-
.canvas, .fallback { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
|
|
2483
|
-
.fallback { display: none; }
|
|
2484
|
-
:host([no-webgl]) .canvas { display: none; }
|
|
2485
|
-
:host([no-webgl]) .fallback { display: block; }`),ar=2,or=.35,sr=[`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 cr(e,t,n,r){return Number.isFinite(e)?Math.max(t,Math.min(n,e)):r}function lr(e,t){if(!e||typeof getComputedStyle!=`function`)return t;let n=document.createElement(`span`);n.style.color=e,n.style.display=`none`,document.body.appendChild(n);let r=getComputedStyle(n).color;n.remove();let i=r.match(/[\d.]+/g)?.map(Number);return!i||i.length<3?t:[i[0]/255,i[1]/255,i[2]/255]}var ur=class extends HTMLElement{static observedAttributes=[`mode`,`tint`,`coverage`,`intensity`,`scroll`,`brightness`,`contrast`,`noise`,`blur`];#e;#t=null;#n=null;#r=null;#i={};#a=null;#o={};#s=-1;#c=0;#l=0;#u=0;#d=null;#f=!1;#p=[.545,.361,.965];#m=[.957,.247,.369];#h=0;#g=null;#_=null;#v=null;#y=null;#b=null;#x=null;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[ir];let e=b(`canvas`,{class:`canvas`,part:`canvas`}),t=b(`div`,{class:`fallback`,part:`fallback`,"aria-hidden":`true`});this.#e.replaceChildren(e,t),this.#t=e}connectedCallback(){if(this.#f=typeof matchMedia==`function`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches,this.#S(),!this.#k()){this.setAttribute(`no-webgl`,``);return}this.removeAttribute(`no-webgl`),typeof ResizeObserver<`u`&&(this.#d=new ResizeObserver(()=>this.#C()),this.#d.observe(this)),this.#w(),this.#T(),this.#l=performance.now()/1e3,this.#f?this.#F():this.#I()}disconnectedCallback(){this.#L(),this.#d?.disconnect(),this.#d=null,this.#g?.disconnect(),this.#g=null,this.#_&&this.#v&&this.#_.removeEventListener(`change`,this.#v),this.#_=null,this.#v=null,this.#R()}attributeChangedCallback(e){if(this.isConnected){if(e===`tint`&&this.#w(),e===`mode`&&this.#n&&this.mode!==this.#y&&this.#O()){this.#F(),this.#S();return}this.#S(),this.#C()}}get mode(){let e=this.getAttribute(`mode`);return e&&nr.has(e)?e:`cone`}set mode(e){this.setAttribute(`mode`,e)}get coverage(){return cr(Number.parseFloat(this.getAttribute(`coverage`)??``),0,1,.66)}set coverage(e){this.setAttribute(`coverage`,String(e))}get intensity(){return cr(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 cr(Number.parseFloat(this.getAttribute(`brightness`)??``),.5,1.5,1.2)}set brightness(e){this.setAttribute(`brightness`,String(e))}get contrast(){return cr(Number.parseFloat(this.getAttribute(`contrast`)??``),.5,2,.75)}set contrast(e){this.setAttribute(`contrast`,String(e))}get noise(){return cr(Number.parseFloat(this.getAttribute(`noise`)??``),0,.3,.04)}set noise(e){this.setAttribute(`noise`,String(e))}get blurAmount(){return cr(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.#u=Math.min(1.4,this.#u+e),this.#f&&this.#F()}#S(){let e=this.#e.querySelector(`.fallback`);e&&(e.style.background=rr[this.mode])}#C(){this.#f&&this.#n&&this.#F()}#w(){let e=this.getAttribute(`tint`)??``;this.#p=lr(e,[.545,.361,.965]),this.#m=lr(e,[.957,.247,.369]),this.#h=this.#P()}#T(){let e=()=>{this.#w(),this.#C()};if(typeof MutationObserver<`u`){this.#g=new MutationObserver(e);for(let e of[document.documentElement,document.body])e&&this.#g.observe(e,{attributes:!0,attributeFilter:[`class`,`data-theme`]})}typeof matchMedia==`function`&&(this.#_=matchMedia(`(prefers-color-scheme: dark)`),this.#v=e,this.#_.addEventListener(`change`,this.#v))}#E(e,t,n){let r=e.createShader(t);return r?(e.shaderSource(r,n),e.compileShader(r),e.getShaderParameter(r,e.COMPILE_STATUS)?r:(e.deleteShader(r),null)):null}#D(e){let t=this.#n;if(!t)return null;let n=this.#E(t,t.VERTEX_SHADER,Qn),r=this.#E(t,t.FRAGMENT_SHADER,tr[e]);if(!n||!r)return n&&t.deleteShader(n),r&&t.deleteShader(r),null;let i=t.createProgram();if(!i)return t.deleteShader(n),t.deleteShader(r),null;if(t.attachShader(i,n),t.attachShader(i,r),t.linkProgram(i),!t.getProgramParameter(i,t.LINK_STATUS))return t.deleteProgram(i),t.deleteShader(n),t.deleteShader(r),null;let a=t.getAttribLocation(i,`a_pos`),o={};for(let e of sr)o[e]=t.getUniformLocation(i,e);return{program:i,vs:n,fs:r,aPos:a,loc:o}}#O(){let e=this.#n;if(!e)return!1;let t=this.mode,n=this.#i[t];if(!n){let e=this.#D(t);if(!e)return!1;this.#i[t]=e,n=e}return this.#r=n.program,this.#s=n.aPos,this.#o=n.loc,e.useProgram(n.program),this.#y=t,!0}#k(){let e=this.#t;if(!e)return!1;let t={premultipliedAlpha:!0,alpha:!0,antialias:!0},n=null;try{n=e.getContext(`webgl`,t)??e.getContext(`experimental-webgl`,t)}catch{n=null}return n?(this.#n=n,this.#j(e),this.#A()):!1}#A(){let e=this.#n;if(!e)return!1;if(!this.#O())return this.#n=null,!1;let t=e.createBuffer();return t?(this.#a=t,e.bindBuffer(e.ARRAY_BUFFER,t),e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,3,-1,-1,3]),e.STATIC_DRAW),!0):(this.#n=null,!1)}#j(e){this.#M(e),this.#b=e=>{e.preventDefault(),this.#L(),this.#i={},this.#r=null,this.#y=null,this.#o={},this.#a=null},this.#x=()=>{!this.isConnected||!this.#n||(this.#i={},this.#A()&&(this.#l=performance.now()/1e3,this.#f?this.#F():this.#I()))},e.addEventListener(`webglcontextlost`,this.#b,!1),e.addEventListener(`webglcontextrestored`,this.#x,!1)}#M(e){this.#b&&e.removeEventListener(`webglcontextlost`,this.#b),this.#x&&e.removeEventListener(`webglcontextrestored`,this.#x),this.#b=null,this.#x=null}#N(){let e=this.#t;if(!e)return;let t=Math.min(ar,typeof window<`u`&&window.devicePixelRatio||1),n=Math.max(1,e.clientWidth*t|0),r=Math.max(1,e.clientHeight*t|0);(e.width!==n||e.height!==r)&&(e.width=n,e.height=r)}#P(){if(typeof getComputedStyle!=`function`)return 0;let e=getComputedStyle(this).getPropertyValue(`--ink`).trim();if(!e)return 0;let[t,n,r]=lr(e,[0,0,0]);return+(.2126*t+.7152*n+.0722*r>.5)}#F(){let e=this.#n,t=this.#t,n=this.#r;if(!e||!t||!n||!this.#a)return;this.#N();let r=performance.now()/1e3-this.#l,i=.5+.5*Math.sin(r*.12),a=.5+.5*Math.sin(r*.097+1),o=.2*(1-i)+.46*i,s=.74*(1-a)+.3*a,c=this.#h,l=this.#p,u=this.#m;e.viewport(0,0,t.width,t.height),e.useProgram(n),e.bindBuffer(e.ARRAY_BUFFER,this.#a),e.enableVertexAttribArray(this.#s),e.vertexAttribPointer(this.#s,2,e.FLOAT,!1,0,0);let d=this.#o;e.uniform2f(d.u_res??null,t.width,t.height),e.uniform1f(d.u_time??null,r),e.uniform1f(d.u_energy??null,this.#u),e.uniform2f(d.u_center??null,o,s),e.uniform3f(d.u_evt??null,u[0],u[1],u[2]),e.uniform1f(d.u_freeze??null,cr(this.coverage*this.intensity,0,1,.66)*2.2),e.uniform1f(d.u_dark??null,c),e.uniform1f(d.u_scroll??null,this.scrollOffset*or/Math.max(1,t.clientHeight||t.height)),e.uniform1f(d.u_density??null,.29),e.uniform1f(d.u_falloff??null,.3),e.uniform1f(d.u_life??null,.35),e.uniform1f(d.u_blink??null,.05),e.uniform1f(d.u_thick??null,.02),e.uniform3f(d.u_tint??null,l[0],l[1],l[2]),e.uniform1f(d.u_brightness??null,this.brightness),e.uniform1f(d.u_contrast??null,this.contrast),e.uniform1f(d.u_noise??null,this.noise),e.uniform1f(d.u_blur??null,this.blurAmount),e.drawArrays(e.TRIANGLES,0,3),this.#u*=.95,this.#u<.001&&(this.#u=0)}#I(){if(this.#c)return;let e=()=>{this.#F(),this.#c=requestAnimationFrame(e)};this.#c=requestAnimationFrame(e)}#L(){this.#c&&cancelAnimationFrame(this.#c),this.#c=0}#R(){let e=this.#n,t=this.#t;if(t&&this.#M(t),e){this.#a&&e.deleteBuffer(this.#a);for(let t of Object.values(this.#i))t&&(e.deleteProgram(t.program),e.deleteShader(t.vs),e.deleteShader(t.fs));e.getExtension(`WEBGL_lose_context`)?.loseContext()}this.#n=null,this.#r=null,this.#i={},this.#o={},this.#a=null,this.#y=null}};v(`slicc-shader`,ur),v(`slicc-frost-shader`,class extends ur{connectedCallback(){this.getAttribute(`mode`)!==`freezer`&&this.setAttribute(`mode`,`freezer`),super.connectedCallback()}});var dr=[`top-left`,`top-right`,`bottom-left`,`bottom-right`,`top`,`right`,`bottom`,`left`],fr=`top-right`,pr=`slicc-launcher-corner`,mr=[`disconnected`,`connected`,`error`],hr=`disconnected`,P=`follower-status`,gr=new Set(dr),_r=new Set(mr);function vr(e,t=fr){return e&&gr.has(e)?e:t}function yr(e,t=hr){return e&&_r.has(e)?e:t}function br(e,t){return e>=6||e>=12&&t>=.6}function xr({clientX:e,clientY:t,viewportWidth:n,viewportHeight:r,velocityXPxPerMs:i=0,velocityYPxPerMs:a=0,flickProjectionMs:o=180}){let s=Sr(e+i*o,0,n),c=Sr(t+a*o,0,r),l=s/n,u=c/r,d=l>1/3&&l<2/3,f=u>1/3&&u<2/3;if(d&&f){let e=u,t=1-u,n=l,r=1-l,i=Math.min(e,t,n,r);return i===e?`top`:i===t?`bottom`:i===n?`left`:`right`}return d?u<.5?`top`:`bottom`:f?l<.5?`left`:`right`:`${u<.5?`top`:`bottom`}-${l<.5?`left`:`right`}`}function Sr(e,t,n){return Math.min(Math.max(e,t),n)}var Cr=`<?xml version="1.0" encoding="UTF-8"?>
|
|
2486
|
-
<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">
|
|
2487
|
-
<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>
|
|
2488
|
-
<g id="Waffle_Cross-Hatch" data-name="Waffle Cross-Hatch">
|
|
2489
|
-
<path d="M261.93,482.48h0c15.03-15.03,4.46-40.72-16.79-40.83h0c-21.37-.11-32.14,25.72-17.03,40.83h0c9.34,9.34,24.48,9.34,33.82,0Z" style="fill: rgb(255, 255, 255);"></path>
|
|
2490
|
-
<path d="M384.85,527.49l-51.82,51.82c-2.24,2.24-2.24,5.86,0,8.1l55.71,55.71c2.24,2.24,5.86,2.24,8.1,0h0c.62-.62,1.08-1.36,1.37-2.19l26.52-77.11c.71-2.07.18-4.36-1.37-5.91l-30.41-30.41c-2.24-2.24-5.86-2.24-8.1,0Z" style="fill: rgb(255, 255, 255);"></path>
|
|
2491
|
-
<rect x="274.59" y="463.59" width="84.73" height="95.66" rx="42.36" ry="42.36" transform="translate(-268.79 373.91) rotate(-45)" style="fill: rgb(255, 255, 255);"></rect>
|
|
2492
|
-
<rect x="291.06" y="603.84" width="72.24" height="90.24" rx="36.12" ry="36.12" transform="translate(-363.06 421.43) rotate(-45)" style="fill: rgb(255, 255, 255);"></rect>
|
|
2493
|
-
<path d="M371.7,684.58l-25.94,25.94c-2.24,2.24-2.24,5.86,0,8.1l12.67,12.67c2.99,2.99,8.09,1.82,9.46-2.19l13.28-38.61c1.97-5.74-5.17-10.2-9.46-5.91Z" style="fill: rgb(255, 255, 255);"></path>
|
|
2494
|
-
<path d="M159.42,564.14l2.73,6.83c1.52,3.82,6.46,4.83,9.37,1.93l2.05-2.05c2.24-2.24,2.24-5.86,0-8.1l-4.78-4.78c-4.4-4.4-11.67.39-9.37,6.17Z" style="fill: rgb(255, 255, 255);"></path>
|
|
2495
|
-
<path d="M243.92,633.11l-48.65-48.65c-5.24-5.24-13.74-5.24-18.99,0h0c-3.8,3.8-4.97,9.49-2.98,14.47l27.77,69.54c3.58,8.95,15.14,11.33,21.96,4.51l20.89-20.89c5.24-5.24,5.24-13.74,0-18.99Z" style="fill: rgb(255, 255, 255);"></path>
|
|
2496
|
-
<path d="M211.32,533.1h0c14.11-14.11,14.11-36.98,0-51.08l-34.94-34.94c-.72-.72-.72-1.89,0-2.62h0c1.16-1.16.34-3.15-1.3-3.16l-11.23-.06c-25.62-.13-43.23,25.72-33.73,49.51l5.37,13.45c1.82,4.55,4.54,8.68,8,12.15l16.74,16.74c14.11,14.11,36.98,14.11,51.08,0Z" style="fill: rgb(255, 255, 255);"></path>
|
|
2497
|
-
<path d="M263.74,792.53h0c-5.69,5.69-7.45,14.23-4.46,21.71l22.5,56.36c6.92,17.34,31.68,16.74,37.75-.92l8.66-25.2c2.5-7.28.64-15.35-4.8-20.79l-31.17-31.17c-7.87-7.87-20.62-7.87-28.48,0Z" style="fill: rgb(255, 255, 255);"></path>
|
|
2498
|
-
<path d="M392.94,503.07l40.81-40.81c2.24-2.24,5.86-2.24,8.1,0l.06.06c2.24,2.24,2.24,5.86,0,8.1l-40.81,40.81c-2.24,2.24-2.24,5.86,0,8.1l22.48,22.48c2.99,2.99,8.09,1.82,9.46-2.19l30.71-89.32c1.27-3.71-1.47-7.57-5.39-7.59l-120.63-.6c-5.11-.03-7.69,6.16-4.08,9.77l51.18,51.18c2.24,2.24,5.86,2.24,8.1,0Z" style="fill: rgb(255, 255, 255);"></path>
|
|
2499
|
-
<rect x="217.18" y="527.25" width="72.24" height="95.66" rx="36.12" ry="36.12" transform="translate(-332.45 347.55) rotate(-45)" style="fill: rgb(255, 255, 255);"></rect>
|
|
2500
|
-
<path d="M350.28,739.46h0c-9.24-9.24-24.22-9.24-33.46,0l-13.94,13.94c-9.24,9.24-9.24,24.22,0,33.46l6.81,6.81c12.37,12.37,33.42,7.5,39.1-9.04l7.13-20.75c2.94-8.55.75-18.03-5.64-24.42Z" style="fill: rgb(255, 255, 255);"></path>
|
|
2501
|
-
<path d="M234.18,749.12l13.2,33.06c1.52,3.82,6.46,4.83,9.37,1.93l9.93-9.93c2.24-2.24,2.24-5.86,0-8.1l-23.13-23.13c-4.4-4.4-11.67.39-9.37,6.17Z" style="fill: rgb(255, 255, 255);"></path>
|
|
2502
|
-
<rect x="236.26" y="661.25" width="67.04" height="90.24" rx="33.52" ry="33.52" transform="translate(-420.46 397.65) rotate(-45)" style="fill: rgb(255, 255, 255);"></rect>
|
|
2503
|
-
</g>
|
|
2504
|
-
<ellipse id="Cone_Top" data-name="Cone Top" cx="288.37" cy="404.38" rx="182.34" ry="67.01" style="fill: rgb(34, 34, 34); stroke: rgb(255, 255, 255); stroke-miterlimit: 10; stroke-width: 20px;"></ellipse>
|
|
2505
|
-
</g><g id="Right_Eye" data-name="Right Eye">
|
|
2506
|
-
<circle id="Left_Eye_Outline" data-name="Left Eye Outline" cx="383.4" cy="216.12" r="64.78" style="fill: rgb(0, 0, 0); stroke: rgb(255, 255, 255); stroke-miterlimit: 10; stroke-width: 6px;"></circle>
|
|
2507
|
-
|
|
2508
|
-
</g><g id="Left_Eye" data-name="Left Eye">
|
|
2509
|
-
<circle id="Right_Eye_Outline" data-name="Right Eye Outline" cx="175.1" cy="250.34" r="64.78" style="fill: rgb(0, 0, 0); stroke: rgb(255, 255, 255); stroke-miterlimit: 10; stroke-width: 6px;"></circle>
|
|
2510
|
-
|
|
2511
|
-
</g><g><line x1="351.01" y1="183.73000000000002" x2="415.78999999999996" y2="248.51" stroke="#fff" stroke-width="15" stroke-linecap="round"></line><line x1="351.01" y1="248.51" x2="415.78999999999996" y2="183.73000000000002" stroke="#fff" stroke-width="15" stroke-linecap="round"></line></g><g><line x1="142.70999999999998" y1="217.95" x2="207.49" y2="282.73" stroke="#fff" stroke-width="15" stroke-linecap="round"></line><line x1="142.70999999999998" y1="282.73" x2="207.49" y2="217.95" stroke="#fff" stroke-width="15" stroke-linecap="round"></line></g></g></g></svg>
|
|
2512
|
-
`,wr=`<?xml version="1.0" encoding="UTF-8"?>
|
|
2513
|
-
<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">
|
|
2514
|
-
<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: #fff; stroke: #000; stroke-linejoin: round; stroke-width: 20px;"></path>
|
|
2515
|
-
<g id="Waffle_Cross-Hatch" data-name="Waffle Cross-Hatch">
|
|
2516
|
-
<path d="M261.93,482.48h0c15.03-15.03,4.46-40.72-16.79-40.83h0c-21.37-.11-32.14,25.72-17.03,40.83h0c9.34,9.34,24.48,9.34,33.82,0Z" style="fill: rgb(0, 0, 0);"></path>
|
|
2517
|
-
<path d="M384.85,527.49l-51.82,51.82c-2.24,2.24-2.24,5.86,0,8.1l55.71,55.71c2.24,2.24,5.86,2.24,8.1,0h0c.62-.62,1.08-1.36,1.37-2.19l26.52-77.11c.71-2.07.18-4.36-1.37-5.91l-30.41-30.41c-2.24-2.24-5.86-2.24-8.1,0Z" style="fill: rgb(0, 0, 0);"></path>
|
|
2518
|
-
<rect x="274.59" y="463.59" width="84.73" height="95.66" rx="42.36" ry="42.36" transform="translate(-268.79 373.91) rotate(-45)" style="fill: rgb(0, 0, 0);"></rect>
|
|
2519
|
-
<rect x="291.06" y="603.84" width="72.24" height="90.24" rx="36.12" ry="36.12" transform="translate(-363.06 421.43) rotate(-45)" style="fill: rgb(0, 0, 0);"></rect>
|
|
2520
|
-
<path d="M371.7,684.58l-25.94,25.94c-2.24,2.24-2.24,5.86,0,8.1l12.67,12.67c2.99,2.99,8.09,1.82,9.46-2.19l13.28-38.61c1.97-5.74-5.17-10.2-9.46-5.91Z" style="fill: rgb(0, 0, 0);"></path>
|
|
2521
|
-
<path d="M159.42,564.14l2.73,6.83c1.52,3.82,6.46,4.83,9.37,1.93l2.05-2.05c2.24-2.24,2.24-5.86,0-8.1l-4.78-4.78c-4.4-4.4-11.67.39-9.37,6.17Z" style="fill: rgb(0, 0, 0);"></path>
|
|
2522
|
-
<path d="M243.92,633.11l-48.65-48.65c-5.24-5.24-13.74-5.24-18.99,0h0c-3.8,3.8-4.97,9.49-2.98,14.47l27.77,69.54c3.58,8.95,15.14,11.33,21.96,4.51l20.89-20.89c5.24-5.24,5.24-13.74,0-18.99Z" style="fill: rgb(0, 0, 0);"></path>
|
|
2523
|
-
<path d="M211.32,533.1h0c14.11-14.11,14.11-36.98,0-51.08l-34.94-34.94c-.72-.72-.72-1.89,0-2.62h0c1.16-1.16.34-3.15-1.3-3.16l-11.23-.06c-25.62-.13-43.23,25.72-33.73,49.51l5.37,13.45c1.82,4.55,4.54,8.68,8,12.15l16.74,16.74c14.11,14.11,36.98,14.11,51.08,0Z" style="fill: rgb(0, 0, 0);"></path>
|
|
2524
|
-
<path d="M263.74,792.53h0c-5.69,5.69-7.45,14.23-4.46,21.71l22.5,56.36c6.92,17.34,31.68,16.74,37.75-.92l8.66-25.2c2.5-7.28.64-15.35-4.8-20.79l-31.17-31.17c-7.87-7.87-20.62-7.87-28.48,0Z" style="fill: rgb(0, 0, 0);"></path>
|
|
2525
|
-
<path d="M392.94,503.07l40.81-40.81c2.24-2.24,5.86-2.24,8.1,0l.06.06c2.24,2.24,2.24,5.86,0,8.1l-40.81,40.81c-2.24,2.24-2.24,5.86,0,8.1l22.48,22.48c2.99,2.99,8.09,1.82,9.46-2.19l30.71-89.32c1.27-3.71-1.47-7.57-5.39-7.59l-120.63-.6c-5.11-.03-7.69,6.16-4.08,9.77l51.18,51.18c2.24,2.24,5.86,2.24,8.1,0Z" style="fill: rgb(0, 0, 0);"></path>
|
|
2526
|
-
<rect x="217.18" y="527.25" width="72.24" height="95.66" rx="36.12" ry="36.12" transform="translate(-332.45 347.55) rotate(-45)" style="fill: rgb(0, 0, 0);"></rect>
|
|
2527
|
-
<path d="M350.28,739.46h0c-9.24-9.24-24.22-9.24-33.46,0l-13.94,13.94c-9.24,9.24-9.24,24.22,0,33.46l6.81,6.81c12.37,12.37,33.42,7.5,39.1-9.04l7.13-20.75c2.94-8.55.75-18.03-5.64-24.42Z" style="fill: rgb(0, 0, 0);"></path>
|
|
2528
|
-
<path d="M234.18,749.12l13.2,33.06c1.52,3.82,6.46,4.83,9.37,1.93l9.93-9.93c2.24-2.24,2.24-5.86,0-8.1l-23.13-23.13c-4.4-4.4-11.67.39-9.37,6.17Z" style="fill: rgb(0, 0, 0);"></path>
|
|
2529
|
-
<rect x="236.26" y="661.25" width="67.04" height="90.24" rx="33.52" ry="33.52" transform="translate(-420.46 397.65) rotate(-45)" style="fill: rgb(0, 0, 0);"></rect>
|
|
2530
|
-
</g>
|
|
2531
|
-
<ellipse id="Cone_Top" data-name="Cone Top" cx="288.37" cy="404.38" rx="182.34" ry="67.01" style="fill: #fff; stroke: #000; stroke-miterlimit: 10; stroke-width: 20px;"></ellipse>
|
|
2532
|
-
</g><g id="Right_Eye" data-name="Right Eye">
|
|
2533
|
-
<circle id="Left_Eye_Outline" data-name="Left Eye Outline" cx="383.4" cy="216.12" r="64.78" style="fill: #fff; stroke: #000; stroke-miterlimit: 10; stroke-width: 6px;"></circle>
|
|
2534
|
-
|
|
2535
|
-
</g><g id="Left_Eye" data-name="Left Eye">
|
|
2536
|
-
<circle id="Right_Eye_Outline" data-name="Right Eye Outline" cx="175.1" cy="250.34" r="64.78" style="fill: #fff; stroke: #000; stroke-miterlimit: 10; stroke-width: 6px;"></circle>
|
|
2537
|
-
|
|
2538
|
-
</g><g><line x1="351.01" y1="183.73000000000002" x2="415.78999999999996" y2="248.51" stroke="#000" stroke-width="15" stroke-linecap="round"></line><line x1="351.01" y1="248.51" x2="415.78999999999996" y2="183.73000000000002" stroke="#000" stroke-width="15" stroke-linecap="round"></line></g><g><line x1="142.70999999999998" y1="217.95" x2="207.49" y2="282.73" stroke="#000" stroke-width="15" stroke-linecap="round"></line><line x1="142.70999999999998" y1="282.73" x2="207.49" y2="217.95" stroke="#000" stroke-width="15" stroke-linecap="round"></line></g></g></g></svg>
|
|
2539
|
-
`,Tr=`<?xml version="1.0" encoding="UTF-8"?>
|
|
2540
|
-
<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">
|
|
2541
|
-
<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;"/>
|
|
2542
|
-
<g id="Waffle_Cross-Hatch" data-name="Waffle Cross-Hatch">
|
|
2543
|
-
<path d="M261.93,482.48h0c15.03-15.03,4.46-40.72-16.79-40.83h0c-21.37-.11-32.14,25.72-17.03,40.83h0c9.34,9.34,24.48,9.34,33.82,0Z" style="fill: rgb(255, 255, 255);"/>
|
|
2544
|
-
<path d="M384.85,527.49l-51.82,51.82c-2.24,2.24-2.24,5.86,0,8.1l55.71,55.71c2.24,2.24,5.86,2.24,8.1,0h0c.62-.62,1.08-1.36,1.37-2.19l26.52-77.11c.71-2.07.18-4.36-1.37-5.91l-30.41-30.41c-2.24-2.24-5.86-2.24-8.1,0Z" style="fill: rgb(255, 255, 255);"/>
|
|
2545
|
-
<rect x="274.59" y="463.59" width="84.73" height="95.66" rx="42.36" ry="42.36" transform="translate(-268.79 373.91) rotate(-45)" style="fill: rgb(255, 255, 255);"/>
|
|
2546
|
-
<rect x="291.06" y="603.84" width="72.24" height="90.24" rx="36.12" ry="36.12" transform="translate(-363.06 421.43) rotate(-45)" style="fill: rgb(255, 255, 255);"/>
|
|
2547
|
-
<path d="M371.7,684.58l-25.94,25.94c-2.24,2.24-2.24,5.86,0,8.1l12.67,12.67c2.99,2.99,8.09,1.82,9.46-2.19l13.28-38.61c1.97-5.74-5.17-10.2-9.46-5.91Z" style="fill: rgb(255, 255, 255);"/>
|
|
2548
|
-
<path d="M159.42,564.14l2.73,6.83c1.52,3.82,6.46,4.83,9.37,1.93l2.05-2.05c2.24-2.24,2.24-5.86,0-8.1l-4.78-4.78c-4.4-4.4-11.67.39-9.37,6.17Z" style="fill: rgb(255, 255, 255);"/>
|
|
2549
|
-
<path d="M243.92,633.11l-48.65-48.65c-5.24-5.24-13.74-5.24-18.99,0h0c-3.8,3.8-4.97,9.49-2.98,14.47l27.77,69.54c3.58,8.95,15.14,11.33,21.96,4.51l20.89-20.89c5.24-5.24,5.24-13.74,0-18.99Z" style="fill: rgb(255, 255, 255);"/>
|
|
2550
|
-
<path d="M211.32,533.1h0c14.11-14.11,14.11-36.98,0-51.08l-34.94-34.94c-.72-.72-.72-1.89,0-2.62h0c1.16-1.16.34-3.15-1.3-3.16l-11.23-.06c-25.62-.13-43.23,25.72-33.73,49.51l5.37,13.45c1.82,4.55,4.54,8.68,8,12.15l16.74,16.74c14.11,14.11,36.98,14.11,51.08,0Z" style="fill: rgb(255, 255, 255);"/>
|
|
2551
|
-
<path d="M263.74,792.53h0c-5.69,5.69-7.45,14.23-4.46,21.71l22.5,56.36c6.92,17.34,31.68,16.74,37.75-.92l8.66-25.2c2.5-7.28.64-15.35-4.8-20.79l-31.17-31.17c-7.87-7.87-20.62-7.87-28.48,0Z" style="fill: rgb(255, 255, 255);"/>
|
|
2552
|
-
<path d="M392.94,503.07l40.81-40.81c2.24-2.24,5.86-2.24,8.1,0l.06.06c2.24,2.24,2.24,5.86,0,8.1l-40.81,40.81c-2.24,2.24-2.24,5.86,0,8.1l22.48,22.48c2.99,2.99,8.09,1.82,9.46-2.19l30.71-89.32c1.27-3.71-1.47-7.57-5.39-7.59l-120.63-.6c-5.11-.03-7.69,6.16-4.08,9.77l51.18,51.18c2.24,2.24,5.86,2.24,8.1,0Z" style="fill: rgb(255, 255, 255);"/>
|
|
2553
|
-
<rect x="217.18" y="527.25" width="72.24" height="95.66" rx="36.12" ry="36.12" transform="translate(-332.45 347.55) rotate(-45)" style="fill: rgb(255, 255, 255);"/>
|
|
2554
|
-
<path d="M350.28,739.46h0c-9.24-9.24-24.22-9.24-33.46,0l-13.94,13.94c-9.24,9.24-9.24,24.22,0,33.46l6.81,6.81c12.37,12.37,33.42,7.5,39.1-9.04l7.13-20.75c2.94-8.55.75-18.03-5.64-24.42Z" style="fill: rgb(255, 255, 255);"/>
|
|
2555
|
-
<path d="M234.18,749.12l13.2,33.06c1.52,3.82,6.46,4.83,9.37,1.93l9.93-9.93c2.24-2.24,2.24-5.86,0-8.1l-23.13-23.13c-4.4-4.4-11.67.39-9.37,6.17Z" style="fill: rgb(255, 255, 255);"/>
|
|
2556
|
-
<rect x="236.26" y="661.25" width="67.04" height="90.24" rx="33.52" ry="33.52" transform="translate(-420.46 397.65) rotate(-45)" style="fill: rgb(255, 255, 255);"/>
|
|
2557
|
-
</g>
|
|
2558
|
-
<ellipse id="Cone_Top" data-name="Cone Top" cx="288.37" cy="404.38" rx="182.34" ry="67.01" style="fill: rgb(34, 34, 34); stroke: rgb(255, 255, 255); stroke-miterlimit: 10; stroke-width: 20px;"/>
|
|
2559
|
-
</g><g id="Right_Eye" data-name="Right Eye">
|
|
2560
|
-
<circle id="Left_Eye_Outline" data-name="Left Eye Outline" cx="383.4" cy="216.12" r="64.78" style="fill: rgb(0, 0, 0); stroke: rgb(255, 255, 255); stroke-miterlimit: 10; stroke-width: 6px;"/>
|
|
2561
|
-
<path id="Right_Pupil" data-name="Right Pupil" d="M402.83,217.38c-.13,1.98-.7,3.97-1.76,5.81-3.71,6.43-11.93,8.63-18.36,4.92-6.43-3.71-8.63-11.93-4.92-18.36,2.32-4.02,6.4-6.38,10.7-6.69-3.8-1.78-8.03-2.8-12.51-2.8-16.37,0-29.64,13.27-29.64,29.64s13.27,29.64,29.64,29.64,29.64-13.27,29.64-29.64c0-4.48-1.02-8.72-2.81-12.53Z" style="fill: rgb(255, 255, 255);"/>
|
|
2562
|
-
</g><g id="Left_Eye" data-name="Left Eye">
|
|
2563
|
-
<circle id="Right_Eye_Outline" data-name="Right Eye Outline" cx="175.1" cy="250.34" r="64.78" style="fill: rgb(0, 0, 0); stroke: rgb(255, 255, 255); stroke-miterlimit: 10; stroke-width: 6px;"/>
|
|
2564
|
-
<path id="Left_Pupil" data-name="Left Pupil" d="M213.74,233.23c-.13,1.98-.7,3.97-1.76,5.81-3.71,6.43-11.93,8.63-18.36,4.92-6.43-3.71-8.63-11.93-4.92-18.36,2.32-4.02,6.4-6.38,10.7-6.69-3.8-1.78-8.03-2.8-12.51-2.8-16.37,0-29.64,13.27-29.64,29.64s13.27,29.64,29.64,29.64,29.64-13.27,29.64-29.64c0-4.48-1.02-8.72-2.81-12.53Z" style="fill: rgb(255, 255, 255);"/>
|
|
2565
|
-
</g></g></g></svg>`,Er=`<?xml version="1.0" encoding="UTF-8"?>
|
|
2566
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%"><g transform="translate(191.47118749999993, 12.583024999999978) scale(1.1115000000000002)"><g transform="translate(0, 0)"><g id="Cone">
|
|
2567
|
-
<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;"/>
|
|
2568
|
-
<g id="Waffle_Cross-Hatch" data-name="Waffle Cross-Hatch">
|
|
2569
|
-
<path d="M261.93,482.48h0c15.03-15.03,4.46-40.72-16.79-40.83h0c-21.37-.11-32.14,25.72-17.03,40.83h0c9.34,9.34,24.48,9.34,33.82,0Z" style="fill: rgb(255, 255, 255);"/>
|
|
2570
|
-
<path d="M384.85,527.49l-51.82,51.82c-2.24,2.24-2.24,5.86,0,8.1l55.71,55.71c2.24,2.24,5.86,2.24,8.1,0h0c.62-.62,1.08-1.36,1.37-2.19l26.52-77.11c.71-2.07.18-4.36-1.37-5.91l-30.41-30.41c-2.24-2.24-5.86-2.24-8.1,0Z" style="fill: rgb(255, 255, 255);"/>
|
|
2571
|
-
<rect x="274.59" y="463.59" width="84.73" height="95.66" rx="42.36" ry="42.36" transform="translate(-268.79 373.91) rotate(-45)" style="fill: rgb(255, 255, 255);"/>
|
|
2572
|
-
<rect x="291.06" y="603.84" width="72.24" height="90.24" rx="36.12" ry="36.12" transform="translate(-363.06 421.43) rotate(-45)" style="fill: rgb(255, 255, 255);"/>
|
|
2573
|
-
<path d="M371.7,684.58l-25.94,25.94c-2.24,2.24-2.24,5.86,0,8.1l12.67,12.67c2.99,2.99,8.09,1.82,9.46-2.19l13.28-38.61c1.97-5.74-5.17-10.2-9.46-5.91Z" style="fill: rgb(255, 255, 255);"/>
|
|
2574
|
-
<path d="M159.42,564.14l2.73,6.83c1.52,3.82,6.46,4.83,9.37,1.93l2.05-2.05c2.24-2.24,2.24-5.86,0-8.1l-4.78-4.78c-4.4-4.4-11.67.39-9.37,6.17Z" style="fill: rgb(255, 255, 255);"/>
|
|
2575
|
-
<path d="M243.92,633.11l-48.65-48.65c-5.24-5.24-13.74-5.24-18.99,0h0c-3.8,3.8-4.97,9.49-2.98,14.47l27.77,69.54c3.58,8.95,15.14,11.33,21.96,4.51l20.89-20.89c5.24-5.24,5.24-13.74,0-18.99Z" style="fill: rgb(255, 255, 255);"/>
|
|
2576
|
-
<path d="M211.32,533.1h0c14.11-14.11,14.11-36.98,0-51.08l-34.94-34.94c-.72-.72-.72-1.89,0-2.62h0c1.16-1.16.34-3.15-1.3-3.16l-11.23-.06c-25.62-.13-43.23,25.72-33.73,49.51l5.37,13.45c1.82,4.55,4.54,8.68,8,12.15l16.74,16.74c14.11,14.11,36.98,14.11,51.08,0Z" style="fill: rgb(255, 255, 255);"/>
|
|
2577
|
-
<path d="M263.74,792.53h0c-5.69,5.69-7.45,14.23-4.46,21.71l22.5,56.36c6.92,17.34,31.68,16.74,37.75-.92l8.66-25.2c2.5-7.28.64-15.35-4.8-20.79l-31.17-31.17c-7.87-7.87-20.62-7.87-28.48,0Z" style="fill: rgb(255, 255, 255);"/>
|
|
2578
|
-
<path d="M392.94,503.07l40.81-40.81c2.24-2.24,5.86-2.24,8.1,0l.06.06c2.24,2.24,2.24,5.86,0,8.1l-40.81,40.81c-2.24,2.24-2.24,5.86,0,8.1l22.48,22.48c2.99,2.99,8.09,1.82,9.46-2.19l30.71-89.32c1.27-3.71-1.47-7.57-5.39-7.59l-120.63-.6c-5.11-.03-7.69,6.16-4.08,9.77l51.18,51.18c2.24,2.24,5.86,2.24,8.1,0Z" style="fill: rgb(255, 255, 255);"/>
|
|
2579
|
-
<rect x="217.18" y="527.25" width="72.24" height="95.66" rx="36.12" ry="36.12" transform="translate(-332.45 347.55) rotate(-45)" style="fill: rgb(255, 255, 255);"/>
|
|
2580
|
-
<path d="M350.28,739.46h0c-9.24-9.24-24.22-9.24-33.46,0l-13.94,13.94c-9.24,9.24-9.24,24.22,0,33.46l6.81,6.81c12.37,12.37,33.42,7.5,39.1-9.04l7.13-20.75c2.94-8.55.75-18.03-5.64-24.42Z" style="fill: rgb(255, 255, 255);"/>
|
|
2581
|
-
<path d="M234.18,749.12l13.2,33.06c1.52,3.82,6.46,4.83,9.37,1.93l9.93-9.93c2.24-2.24,2.24-5.86,0-8.1l-23.13-23.13c-4.4-4.4-11.67.39-9.37,6.17Z" style="fill: rgb(255, 255, 255);"/>
|
|
2582
|
-
<rect x="236.26" y="661.25" width="67.04" height="90.24" rx="33.52" ry="33.52" transform="translate(-420.46 397.65) rotate(-45)" style="fill: rgb(255, 255, 255);"/>
|
|
2583
|
-
</g>
|
|
2584
|
-
<ellipse id="Cone_Top" data-name="Cone Top" cx="288.37" cy="404.38" rx="182.34" ry="67.01" style="fill: rgb(34, 34, 34); stroke: rgb(255, 255, 255); stroke-miterlimit: 10; stroke-width: 20px;"/>
|
|
2585
|
-
</g></g><g transform="translate(288, 250) rotate(0) scale(1) translate(-288, -250)"><path id="Scoop_Outline" data-name="Scoop Outline" d="M566.75,340.67c0-29.85-12.97-56.87-33.96-76.47,4.8-9.98,7.44-20.71,7.44-31.9,0-38.29-30.62-71.33-74.92-86.77.33-3.07.51-6.17.51-9.3,0-69.72-84.29-126.24-188.26-126.24s-188.26,56.52-188.26,126.24c0,4,.29,7.95.83,11.86-34.94,15.4-58.48,44.25-58.48,77.34,0,18.21,7.15,35.15,19.39,49.26-25.1,19.88-41.05,49.47-41.05,82.54,0,59.85,52.15,108.37,116.49,108.37,10.83,0,21.3-1.4,31.26-3.98,31.42,41.91,83.55,69.34,142.55,69.34,64.73,0,121.2-33,151.11-81.94,63.8-.57,115.34-48.85,115.34-108.34Z" style="fill: rgb(34, 34, 34); stroke: rgb(255, 255, 255); stroke-miterlimit: 10; stroke-width: 20px;"/><g id="Right_Eye" data-name="Right Eye">
|
|
2586
|
-
<circle id="Left_Eye_Outline" data-name="Left Eye Outline" cx="383.4" cy="216.12" r="64.78" style="fill: rgb(0, 0, 0); stroke: rgb(255, 255, 255); stroke-miterlimit: 10; stroke-width: 6px;"/>
|
|
2587
|
-
<path id="Right_Pupil" data-name="Right Pupil" d="M402.83,217.38c-.13,1.98-.7,3.97-1.76,5.81-3.71,6.43-11.93,8.63-18.36,4.92-6.43-3.71-8.63-11.93-4.92-18.36,2.32-4.02,6.4-6.38,10.7-6.69-3.8-1.78-8.03-2.8-12.51-2.8-16.37,0-29.64,13.27-29.64,29.64s13.27,29.64,29.64,29.64,29.64-13.27,29.64-29.64c0-4.48-1.02-8.72-2.81-12.53Z" style="fill: rgb(255, 255, 255);"/>
|
|
2588
|
-
</g><g id="Left_Eye" data-name="Left Eye">
|
|
2589
|
-
<circle id="Right_Eye_Outline" data-name="Right Eye Outline" cx="175.1" cy="250.34" r="64.78" style="fill: rgb(0, 0, 0); stroke: rgb(255, 255, 255); stroke-miterlimit: 10; stroke-width: 6px;"/>
|
|
2590
|
-
<path id="Left_Pupil" data-name="Left Pupil" d="M213.74,233.23c-.13,1.98-.7,3.97-1.76,5.81-3.71,6.43-11.93,8.63-18.36,4.92-6.43-3.71-8.63-11.93-4.92-18.36,2.32-4.02,6.4-6.38,10.7-6.69-3.8-1.78-8.03-2.8-12.51-2.8-16.37,0-29.64,13.27-29.64,29.64s13.27,29.64,29.64,29.64,29.64-13.27,29.64-29.64c0-4.48-1.02-8.72-2.81-12.53Z" style="fill: rgb(255, 255, 255);"/>
|
|
2591
|
-
</g></g></g></svg>`,Dr=`<?xml version="1.0" encoding="UTF-8"?>
|
|
2592
|
-
<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">
|
|
2593
|
-
<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: #fff; stroke: #000; stroke-linejoin: round; stroke-width: 20px;"/>
|
|
2594
|
-
<g id="Waffle_Cross-Hatch" data-name="Waffle Cross-Hatch">
|
|
2595
|
-
<path d="M261.93,482.48h0c15.03-15.03,4.46-40.72-16.79-40.83h0c-21.37-.11-32.14,25.72-17.03,40.83h0c9.34,9.34,24.48,9.34,33.82,0Z" style="fill: rgb(0, 0, 0);"/>
|
|
2596
|
-
<path d="M384.85,527.49l-51.82,51.82c-2.24,2.24-2.24,5.86,0,8.1l55.71,55.71c2.24,2.24,5.86,2.24,8.1,0h0c.62-.62,1.08-1.36,1.37-2.19l26.52-77.11c.71-2.07.18-4.36-1.37-5.91l-30.41-30.41c-2.24-2.24-5.86-2.24-8.1,0Z" style="fill: rgb(0, 0, 0);"/>
|
|
2597
|
-
<rect x="274.59" y="463.59" width="84.73" height="95.66" rx="42.36" ry="42.36" transform="translate(-268.79 373.91) rotate(-45)" style="fill: rgb(0, 0, 0);"/>
|
|
2598
|
-
<rect x="291.06" y="603.84" width="72.24" height="90.24" rx="36.12" ry="36.12" transform="translate(-363.06 421.43) rotate(-45)" style="fill: rgb(0, 0, 0);"/>
|
|
2599
|
-
<path d="M371.7,684.58l-25.94,25.94c-2.24,2.24-2.24,5.86,0,8.1l12.67,12.67c2.99,2.99,8.09,1.82,9.46-2.19l13.28-38.61c1.97-5.74-5.17-10.2-9.46-5.91Z" style="fill: rgb(0, 0, 0);"/>
|
|
2600
|
-
<path d="M159.42,564.14l2.73,6.83c1.52,3.82,6.46,4.83,9.37,1.93l2.05-2.05c2.24-2.24,2.24-5.86,0-8.1l-4.78-4.78c-4.4-4.4-11.67.39-9.37,6.17Z" style="fill: rgb(0, 0, 0);"/>
|
|
2601
|
-
<path d="M243.92,633.11l-48.65-48.65c-5.24-5.24-13.74-5.24-18.99,0h0c-3.8,3.8-4.97,9.49-2.98,14.47l27.77,69.54c3.58,8.95,15.14,11.33,21.96,4.51l20.89-20.89c5.24-5.24,5.24-13.74,0-18.99Z" style="fill: rgb(0, 0, 0);"/>
|
|
2602
|
-
<path d="M211.32,533.1h0c14.11-14.11,14.11-36.98,0-51.08l-34.94-34.94c-.72-.72-.72-1.89,0-2.62h0c1.16-1.16.34-3.15-1.3-3.16l-11.23-.06c-25.62-.13-43.23,25.72-33.73,49.51l5.37,13.45c1.82,4.55,4.54,8.68,8,12.15l16.74,16.74c14.11,14.11,36.98,14.11,51.08,0Z" style="fill: rgb(0, 0, 0);"/>
|
|
2603
|
-
<path d="M263.74,792.53h0c-5.69,5.69-7.45,14.23-4.46,21.71l22.5,56.36c6.92,17.34,31.68,16.74,37.75-.92l8.66-25.2c2.5-7.28.64-15.35-4.8-20.79l-31.17-31.17c-7.87-7.87-20.62-7.87-28.48,0Z" style="fill: rgb(0, 0, 0);"/>
|
|
2604
|
-
<path d="M392.94,503.07l40.81-40.81c2.24-2.24,5.86-2.24,8.1,0l.06.06c2.24,2.24,2.24,5.86,0,8.1l-40.81,40.81c-2.24,2.24-2.24,5.86,0,8.1l22.48,22.48c2.99,2.99,8.09,1.82,9.46-2.19l30.71-89.32c1.27-3.71-1.47-7.57-5.39-7.59l-120.63-.6c-5.11-.03-7.69,6.16-4.08,9.77l51.18,51.18c2.24,2.24,5.86,2.24,8.1,0Z" style="fill: rgb(0, 0, 0);"/>
|
|
2605
|
-
<rect x="217.18" y="527.25" width="72.24" height="95.66" rx="36.12" ry="36.12" transform="translate(-332.45 347.55) rotate(-45)" style="fill: rgb(0, 0, 0);"/>
|
|
2606
|
-
<path d="M350.28,739.46h0c-9.24-9.24-24.22-9.24-33.46,0l-13.94,13.94c-9.24,9.24-9.24,24.22,0,33.46l6.81,6.81c12.37,12.37,33.42,7.5,39.1-9.04l7.13-20.75c2.94-8.55.75-18.03-5.64-24.42Z" style="fill: rgb(0, 0, 0);"/>
|
|
2607
|
-
<path d="M234.18,749.12l13.2,33.06c1.52,3.82,6.46,4.83,9.37,1.93l9.93-9.93c2.24-2.24,2.24-5.86,0-8.1l-23.13-23.13c-4.4-4.4-11.67.39-9.37,6.17Z" style="fill: rgb(0, 0, 0);"/>
|
|
2608
|
-
<rect x="236.26" y="661.25" width="67.04" height="90.24" rx="33.52" ry="33.52" transform="translate(-420.46 397.65) rotate(-45)" style="fill: rgb(0, 0, 0);"/>
|
|
2609
|
-
</g>
|
|
2610
|
-
<ellipse id="Cone_Top" data-name="Cone Top" cx="288.37" cy="404.38" rx="182.34" ry="67.01" style="fill: #fff; stroke: #000; stroke-miterlimit: 10; stroke-width: 20px;"/>
|
|
2611
|
-
</g><g id="Right_Eye" data-name="Right Eye">
|
|
2612
|
-
<circle id="Left_Eye_Outline" data-name="Left Eye Outline" cx="383.4" cy="216.12" r="64.78" style="fill: #fff; stroke: #000; stroke-miterlimit: 10; stroke-width: 6px;"/>
|
|
2613
|
-
<path id="Right_Pupil" data-name="Right Pupil" d="M402.83,217.38c-.13,1.98-.7,3.97-1.76,5.81-3.71,6.43-11.93,8.63-18.36,4.92-6.43-3.71-8.63-11.93-4.92-18.36,2.32-4.02,6.4-6.38,10.7-6.69-3.8-1.78-8.03-2.8-12.51-2.8-16.37,0-29.64,13.27-29.64,29.64s13.27,29.64,29.64,29.64,29.64-13.27,29.64-29.64c0-4.48-1.02-8.72-2.81-12.53Z" style="fill: rgb(0, 0, 0);"/>
|
|
2614
|
-
</g><g id="Left_Eye" data-name="Left Eye">
|
|
2615
|
-
<circle id="Right_Eye_Outline" data-name="Right Eye Outline" cx="175.1" cy="250.34" r="64.78" style="fill: #fff; stroke: #000; stroke-miterlimit: 10; stroke-width: 6px;"/>
|
|
2616
|
-
<path id="Left_Pupil" data-name="Left Pupil" d="M213.74,233.23c-.13,1.98-.7,3.97-1.76,5.81-3.71,6.43-11.93,8.63-18.36,4.92-6.43-3.71-8.63-11.93-4.92-18.36,2.32-4.02,6.4-6.38,10.7-6.69-3.8-1.78-8.03-2.8-12.51-2.8-16.37,0-29.64,13.27-29.64,29.64s13.27,29.64,29.64,29.64,29.64-13.27,29.64-29.64c0-4.48-1.02-8.72-2.81-12.53Z" style="fill: rgb(0, 0, 0);"/>
|
|
2617
|
-
</g></g></g></svg>`,Or=`<?xml version="1.0" encoding="UTF-8"?>
|
|
2618
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%"><g transform="translate(191.47118749999993, 12.583024999999978) scale(1.1115000000000002)"><g transform="translate(0, 0)"><g id="Cone">
|
|
2619
|
-
<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: #fff; stroke: #000; stroke-linejoin: round; stroke-width: 20px;"/>
|
|
2620
|
-
<g id="Waffle_Cross-Hatch" data-name="Waffle Cross-Hatch">
|
|
2621
|
-
<path d="M261.93,482.48h0c15.03-15.03,4.46-40.72-16.79-40.83h0c-21.37-.11-32.14,25.72-17.03,40.83h0c9.34,9.34,24.48,9.34,33.82,0Z" style="fill: rgb(0, 0, 0);"/>
|
|
2622
|
-
<path d="M384.85,527.49l-51.82,51.82c-2.24,2.24-2.24,5.86,0,8.1l55.71,55.71c2.24,2.24,5.86,2.24,8.1,0h0c.62-.62,1.08-1.36,1.37-2.19l26.52-77.11c.71-2.07.18-4.36-1.37-5.91l-30.41-30.41c-2.24-2.24-5.86-2.24-8.1,0Z" style="fill: rgb(0, 0, 0);"/>
|
|
2623
|
-
<rect x="274.59" y="463.59" width="84.73" height="95.66" rx="42.36" ry="42.36" transform="translate(-268.79 373.91) rotate(-45)" style="fill: rgb(0, 0, 0);"/>
|
|
2624
|
-
<rect x="291.06" y="603.84" width="72.24" height="90.24" rx="36.12" ry="36.12" transform="translate(-363.06 421.43) rotate(-45)" style="fill: rgb(0, 0, 0);"/>
|
|
2625
|
-
<path d="M371.7,684.58l-25.94,25.94c-2.24,2.24-2.24,5.86,0,8.1l12.67,12.67c2.99,2.99,8.09,1.82,9.46-2.19l13.28-38.61c1.97-5.74-5.17-10.2-9.46-5.91Z" style="fill: rgb(0, 0, 0);"/>
|
|
2626
|
-
<path d="M159.42,564.14l2.73,6.83c1.52,3.82,6.46,4.83,9.37,1.93l2.05-2.05c2.24-2.24,2.24-5.86,0-8.1l-4.78-4.78c-4.4-4.4-11.67.39-9.37,6.17Z" style="fill: rgb(0, 0, 0);"/>
|
|
2627
|
-
<path d="M243.92,633.11l-48.65-48.65c-5.24-5.24-13.74-5.24-18.99,0h0c-3.8,3.8-4.97,9.49-2.98,14.47l27.77,69.54c3.58,8.95,15.14,11.33,21.96,4.51l20.89-20.89c5.24-5.24,5.24-13.74,0-18.99Z" style="fill: rgb(0, 0, 0);"/>
|
|
2628
|
-
<path d="M211.32,533.1h0c14.11-14.11,14.11-36.98,0-51.08l-34.94-34.94c-.72-.72-.72-1.89,0-2.62h0c1.16-1.16.34-3.15-1.3-3.16l-11.23-.06c-25.62-.13-43.23,25.72-33.73,49.51l5.37,13.45c1.82,4.55,4.54,8.68,8,12.15l16.74,16.74c14.11,14.11,36.98,14.11,51.08,0Z" style="fill: rgb(0, 0, 0);"/>
|
|
2629
|
-
<path d="M263.74,792.53h0c-5.69,5.69-7.45,14.23-4.46,21.71l22.5,56.36c6.92,17.34,31.68,16.74,37.75-.92l8.66-25.2c2.5-7.28.64-15.35-4.8-20.79l-31.17-31.17c-7.87-7.87-20.62-7.87-28.48,0Z" style="fill: rgb(0, 0, 0);"/>
|
|
2630
|
-
<path d="M392.94,503.07l40.81-40.81c2.24-2.24,5.86-2.24,8.1,0l.06.06c2.24,2.24,2.24,5.86,0,8.1l-40.81,40.81c-2.24,2.24-2.24,5.86,0,8.1l22.48,22.48c2.99,2.99,8.09,1.82,9.46-2.19l30.71-89.32c1.27-3.71-1.47-7.57-5.39-7.59l-120.63-.6c-5.11-.03-7.69,6.16-4.08,9.77l51.18,51.18c2.24,2.24,5.86,2.24,8.1,0Z" style="fill: rgb(0, 0, 0);"/>
|
|
2631
|
-
<rect x="217.18" y="527.25" width="72.24" height="95.66" rx="36.12" ry="36.12" transform="translate(-332.45 347.55) rotate(-45)" style="fill: rgb(0, 0, 0);"/>
|
|
2632
|
-
<path d="M350.28,739.46h0c-9.24-9.24-24.22-9.24-33.46,0l-13.94,13.94c-9.24,9.24-9.24,24.22,0,33.46l6.81,6.81c12.37,12.37,33.42,7.5,39.1-9.04l7.13-20.75c2.94-8.55.75-18.03-5.64-24.42Z" style="fill: rgb(0, 0, 0);"/>
|
|
2633
|
-
<path d="M234.18,749.12l13.2,33.06c1.52,3.82,6.46,4.83,9.37,1.93l9.93-9.93c2.24-2.24,2.24-5.86,0-8.1l-23.13-23.13c-4.4-4.4-11.67.39-9.37,6.17Z" style="fill: rgb(0, 0, 0);"/>
|
|
2634
|
-
<rect x="236.26" y="661.25" width="67.04" height="90.24" rx="33.52" ry="33.52" transform="translate(-420.46 397.65) rotate(-45)" style="fill: rgb(0, 0, 0);"/>
|
|
2635
|
-
</g>
|
|
2636
|
-
<ellipse id="Cone_Top" data-name="Cone Top" cx="288.37" cy="404.38" rx="182.34" ry="67.01" style="fill: #fff; stroke: #000; stroke-miterlimit: 10; stroke-width: 20px;"/>
|
|
2637
|
-
</g></g><g transform="translate(288, 250) rotate(0) scale(1) translate(-288, -250)"><path id="Scoop_Outline" data-name="Scoop Outline" d="M566.75,340.67c0-29.85-12.97-56.87-33.96-76.47,4.8-9.98,7.44-20.71,7.44-31.9,0-38.29-30.62-71.33-74.92-86.77.33-3.07.51-6.17.51-9.3,0-69.72-84.29-126.24-188.26-126.24s-188.26,56.52-188.26,126.24c0,4,.29,7.95.83,11.86-34.94,15.4-58.48,44.25-58.48,77.34,0,18.21,7.15,35.15,19.39,49.26-25.1,19.88-41.05,49.47-41.05,82.54,0,59.85,52.15,108.37,116.49,108.37,10.83,0,21.3-1.4,31.26-3.98,31.42,41.91,83.55,69.34,142.55,69.34,64.73,0,121.2-33,151.11-81.94,63.8-.57,115.34-48.85,115.34-108.34Z" style="fill: #fff; stroke: #000; stroke-miterlimit: 10; stroke-width: 20px;"/><g id="Right_Eye" data-name="Right Eye">
|
|
2638
|
-
<circle id="Left_Eye_Outline" data-name="Left Eye Outline" cx="383.4" cy="216.12" r="64.78" style="fill: #fff; stroke: #000; stroke-miterlimit: 10; stroke-width: 6px;"/>
|
|
2639
|
-
<path id="Right_Pupil" data-name="Right Pupil" d="M402.83,217.38c-.13,1.98-.7,3.97-1.76,5.81-3.71,6.43-11.93,8.63-18.36,4.92-6.43-3.71-8.63-11.93-4.92-18.36,2.32-4.02,6.4-6.38,10.7-6.69-3.8-1.78-8.03-2.8-12.51-2.8-16.37,0-29.64,13.27-29.64,29.64s13.27,29.64,29.64,29.64,29.64-13.27,29.64-29.64c0-4.48-1.02-8.72-2.81-12.53Z" style="fill: rgb(0, 0, 0);"/>
|
|
2640
|
-
</g><g id="Left_Eye" data-name="Left Eye">
|
|
2641
|
-
<circle id="Right_Eye_Outline" data-name="Right Eye Outline" cx="175.1" cy="250.34" r="64.78" style="fill: #fff; stroke: #000; stroke-miterlimit: 10; stroke-width: 6px;"/>
|
|
2642
|
-
<path id="Left_Pupil" data-name="Left Pupil" d="M213.74,233.23c-.13,1.98-.7,3.97-1.76,5.81-3.71,6.43-11.93,8.63-18.36,4.92-6.43-3.71-8.63-11.93-4.92-18.36,2.32-4.02,6.4-6.38,10.7-6.69-3.8-1.78-8.03-2.8-12.51-2.8-16.37,0-29.64,13.27-29.64,29.64s13.27,29.64,29.64,29.64,29.64-13.27,29.64-29.64c0-4.48-1.02-8.72-2.81-12.53Z" style="fill: rgb(0, 0, 0);"/>
|
|
2643
|
-
</g></g></g></svg>`,kr=x(`
|
|
2644
|
-
:host {
|
|
2645
|
-
all: initial;
|
|
2646
|
-
position: fixed;
|
|
2647
|
-
inset: 0;
|
|
2648
|
-
display: block;
|
|
2649
|
-
pointer-events: none;
|
|
2650
|
-
z-index: 2147483647;
|
|
2651
|
-
contain: layout style paint;
|
|
2652
|
-
font-family: var(--ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);
|
|
2518
|
+
transition: opacity 0.18s;
|
|
2653
2519
|
}
|
|
2654
|
-
|
|
2520
|
+
slicc-freezer-card:not([expanded]) .slicc-fzcard__text {
|
|
2521
|
+
width: 0;
|
|
2522
|
+
min-width: 0;
|
|
2523
|
+
flex: 0 0 0;
|
|
2524
|
+
overflow: hidden;
|
|
2525
|
+
}
|
|
2526
|
+
slicc-freezer-card[expanded] .slicc-fzcard__text {
|
|
2527
|
+
opacity: 1;
|
|
2528
|
+
transition: opacity 0.25s 0.15s;
|
|
2529
|
+
}
|
|
2530
|
+
slicc-freezer-card .slicc-fzcard__title {
|
|
2531
|
+
font-size: 12.5px;
|
|
2532
|
+
font-weight: 600;
|
|
2533
|
+
color: var(--ink);
|
|
2534
|
+
white-space: nowrap;
|
|
2535
|
+
overflow: hidden;
|
|
2536
|
+
text-overflow: ellipsis;
|
|
2537
|
+
}
|
|
2538
|
+
slicc-freezer-card .slicc-fzcard__meta {
|
|
2539
|
+
margin-top: 2px;
|
|
2540
|
+
font-family: var(--ui);
|
|
2541
|
+
font-size: 10.5px;
|
|
2542
|
+
color: var(--txt-3);
|
|
2543
|
+
white-space: nowrap;
|
|
2544
|
+
overflow: hidden;
|
|
2545
|
+
text-overflow: ellipsis;
|
|
2546
|
+
}
|
|
2547
|
+
slicc-freezer-card[thawed] {
|
|
2548
|
+
background: color-mix(in srgb, var(--rose) 12%, transparent);
|
|
2549
|
+
}
|
|
2550
|
+
`,yr=`slicc-freezer-card-style`;function br(e){if(e.getElementById(yr))return;let t=e.createElement(`style`);t.id=yr,t.textContent=vr,(e.head??e.documentElement).appendChild(t)}var xr=1400,Sr=14;E(`slicc-freezer-card`,class extends HTMLElement{static observedAttributes=[`title`,`meta`,`slug`,`icon`,`thawed`];#e;#t;#n;#r;#i=null;#a=null;#o=!1;#s=null;#c=()=>this.#u();#l=()=>{if(!this.#i)return;let e=this.getBoundingClientRect();this.#i.style.setProperty(`--tip-x`,`${e.right+8}px`),this.#i.style.setProperty(`--tip-y`,`${e.top+e.height/2}px`)};connectedCallback(){br(this.ownerDocument),this.#d(),this.#f()}disconnectedCallback(){this.removeEventListener(`click`,this.#c),this.removeEventListener(`pointerenter`,this.#l),this.removeEventListener(`focusin`,this.#l),this.#s!=null&&(clearTimeout(this.#s),this.#s=null)}attributeChangedCallback(e,t,n){t===n||!this.#o||(e===`thawed`?this.#e.toggleAttribute(`thawed`,n!==null):e===`icon`?this.#p():this.#f())}get title(){return this.getAttribute(`title`)??``}set title(e){e==null?this.removeAttribute(`title`):this.setAttribute(`title`,e)}get meta(){return this.getAttribute(`meta`)??``}set meta(e){e==null?this.removeAttribute(`meta`):this.setAttribute(`meta`,e)}get slug(){return this.getAttribute(`slug`)??``}set slug(e){e==null?this.removeAttribute(`slug`):this.setAttribute(`slug`,e)}get icon(){return this.getAttribute(`icon`)}set icon(e){e==null?this.removeAttribute(`icon`):this.setAttribute(`icon`,e)}get expanded(){return this.hasAttribute(`expanded`)}set expanded(e){this.toggleAttribute(`expanded`,e)}get thawed(){return this.hasAttribute(`thawed`)}set thawed(e){this.toggleAttribute(`thawed`,e)}get hidden(){return this.hasAttribute(`hidden`)}set hidden(e){this.toggleAttribute(`hidden`,e)}get badge(){return this.#d(),this.#e}#u(){this.dispatchEvent(new CustomEvent(`freezer-card-select`,{bubbles:!0,composed:!0,detail:{slug:this.slug}})),this.flashThaw()}flashThaw(e=xr){this.#s!=null&&clearTimeout(this.#s),this.thawed=!0,this.#s=setTimeout(()=>{this.thawed=!1,this.#s=null},e)}#d(){if(this.#o)return;this.#o=!0;let e=this.querySelector(`:scope > .slicc-fzcard__text`);if(e instanceof HTMLElement){this.#t=e,this.#n=e.querySelector(`.slicc-fzcard__title`),this.#r=e.querySelector(`.slicc-fzcard__meta`),this.#e=this.querySelector(`:scope > slicc-snowflake`),this.#i=this.querySelector(`:scope > .slicc-fzcard__tip`),this.addEventListener(`click`,this.#c),this.addEventListener(`pointerenter`,this.#l),this.addEventListener(`focusin`,this.#l);return}let t=Array.from(this.childNodes);this.#e=this.ownerDocument.createElement(`slicc-snowflake`),this.#e.setAttribute(`part`,`badge`),this.#n=O(`div`,{class:`slicc-fzcard__title`,part:`title`}),this.#r=O(`div`,{class:`slicc-fzcard__meta`,part:`meta`}),this.#t=O(`div`,{class:`slicc-fzcard__text`,part:`text`},this.#n,this.#r);for(let e of t)this.#n.appendChild(e);this.#i=O(`span`,{class:`slicc-fzcard__tip`,part:`tip`,"aria-hidden":`true`}),this.replaceChildren(this.#e,this.#t,this.#i),this.addEventListener(`click`,this.#c),this.addEventListener(`pointerenter`,this.#l),this.addEventListener(`focusin`,this.#l)}#f(){if(!this.#o)return;let e=this.getAttribute(`title`);e!=null&&(this.#n.textContent=e),this.#r.textContent=this.meta,this.#i&&(this.#i.textContent=e??(this.#n.textContent||``)),this.#e.toggleAttribute(`thawed`,this.thawed),this.#p()}#p(){if(!this.#o)return;let e=this.getAttribute(`icon`);if(e){let t=r(e,{size:Sr,class:`ic`,part:`icon`});this.#a?this.#a.replaceWith(t):this.#e.appendChild(t),this.#a=t}else this.#a&&=(this.#a.remove(),null)}});var Cr=`square-pen`,wr=`loader-circle`,Tr=16,Er=`New chat`,Dr=350,Or=[[`save`,`archive`,`Save & start new`],[`skip`,`fast-forward`,`New chat — skip memory`],[`erase`,`trash-2`,`Erase & start new`]],kr=k(`
|
|
2551
|
+
:host { display: block; }
|
|
2552
|
+
:host([hidden]) { display: none; }
|
|
2553
|
+
*{ box-sizing: border-box; }
|
|
2655
2554
|
|
|
2656
|
-
/*
|
|
2657
|
-
.
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
|
|
2664
|
-
|
|
2665
|
-
|
|
2666
|
-
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
|
|
2555
|
+
/* .fznew — full-width new-chat button at the top of the freezer rail */
|
|
2556
|
+
.fznew {
|
|
2557
|
+
display: flex;
|
|
2558
|
+
align-items: center;
|
|
2559
|
+
gap: 10px;
|
|
2560
|
+
min-height: 36px;
|
|
2561
|
+
padding: 4px 8px;
|
|
2562
|
+
margin-bottom: 4px;
|
|
2563
|
+
border-radius: 8px;
|
|
2564
|
+
cursor: pointer;
|
|
2565
|
+
flex: 0 0 auto;
|
|
2566
|
+
background: transparent;
|
|
2567
|
+
border: none;
|
|
2568
|
+
color: var(--ink);
|
|
2569
|
+
font: inherit;
|
|
2570
|
+
font-family: var(--ui);
|
|
2571
|
+
text-align: left;
|
|
2572
|
+
width: 100%;
|
|
2573
|
+
transition: background-color .15s;
|
|
2670
2574
|
}
|
|
2671
|
-
|
|
2672
|
-
:host(:not([
|
|
2673
|
-
:
|
|
2674
|
-
|
|
2675
|
-
:
|
|
2676
|
-
:
|
|
2677
|
-
:
|
|
2678
|
-
|
|
2679
|
-
:
|
|
2680
|
-
:
|
|
2681
|
-
.launcher:hover { box-shadow: 0 4px 16px rgba(0,0,0,.3), 0 0 0 1px rgba(0,0,0,.12); }
|
|
2682
|
-
.launcher:active { transform: scale(.96); }
|
|
2683
|
-
:host([open]) .launcher { box-shadow: 0 4px 16px rgba(0,0,0,.3), 0 0 0 2px var(--ctx, #3562ff); }
|
|
2575
|
+
/* collapsed (icon-only) — prototype: .freezer:not(.open) .fznew */
|
|
2576
|
+
:host(:not([expanded])) .fznew {
|
|
2577
|
+
gap: 0;
|
|
2578
|
+
justify-content: center;
|
|
2579
|
+
padding: 4px 0;
|
|
2580
|
+
width: auto;
|
|
2581
|
+
align-self: center;
|
|
2582
|
+
}
|
|
2583
|
+
.fznew:hover { background: var(--ghost); }
|
|
2584
|
+
.fznew:focus-visible { outline: 2px solid var(--ctx); outline-offset: 2px; }
|
|
2684
2585
|
|
|
2685
|
-
/*
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
|
|
2691
|
-
|
|
2692
|
-
|
|
2693
|
-
|
|
2694
|
-
|
|
2695
|
-
|
|
2696
|
-
.logo, .tab-label { pointer-events: none; }
|
|
2697
|
-
.logo-icon { width: 32px; height: 32px; display: block; }
|
|
2698
|
-
.logo-icon svg { width: 100%; height: 100%; display: block; }
|
|
2699
|
-
.logo-state { display: none; }
|
|
2700
|
-
:host(:not([${P}])) .logo-state-disconnected,
|
|
2701
|
-
:host([${P}="disconnected"]) .logo-state-disconnected,
|
|
2702
|
-
:host([${P}="connected"]) .logo-state-connected,
|
|
2703
|
-
:host([${P}="error"]) .logo-state-error { display: contents; }
|
|
2704
|
-
.logo-for-dark { display: block; }
|
|
2705
|
-
.logo-for-light { display: none; }
|
|
2706
|
-
@media (prefers-color-scheme: light) {
|
|
2707
|
-
.logo-for-dark { display: none; }
|
|
2708
|
-
.logo-for-light { display: block; }
|
|
2586
|
+
/* .nico — 28px circular icon badge, context-tinted with --ctx */
|
|
2587
|
+
.nico {
|
|
2588
|
+
width: 28px;
|
|
2589
|
+
height: 28px;
|
|
2590
|
+
display: grid;
|
|
2591
|
+
place-items: center;
|
|
2592
|
+
border-radius: 50%;
|
|
2593
|
+
background: color-mix(in srgb, var(--ctx) 14%, var(--canvas));
|
|
2594
|
+
border: 1px solid color-mix(in srgb, var(--ctx) 40%, var(--line));
|
|
2595
|
+
color: var(--ctx);
|
|
2596
|
+
flex: 0 0 auto;
|
|
2709
2597
|
}
|
|
2598
|
+
.nico svg { display: block; }
|
|
2710
2599
|
|
|
2711
|
-
/*
|
|
2712
|
-
|
|
2713
|
-
|
|
2714
|
-
|
|
2715
|
-
|
|
2716
|
-
font-size:
|
|
2717
|
-
|
|
2600
|
+
/* .nlbl — "New chat" label, fades in when expanded. Weight 500 (lighter than
|
|
2601
|
+
the prototype's 600) to sit with the rest of the rail's UI text. */
|
|
2602
|
+
.nlbl {
|
|
2603
|
+
flex: 1;
|
|
2604
|
+
min-width: 0;
|
|
2605
|
+
font-size: 12.5px;
|
|
2606
|
+
font-weight: 500;
|
|
2607
|
+
color: var(--ink);
|
|
2608
|
+
white-space: nowrap;
|
|
2609
|
+
overflow: hidden;
|
|
2610
|
+
text-overflow: ellipsis;
|
|
2611
|
+
opacity: 0;
|
|
2612
|
+
transition: opacity .18s;
|
|
2718
2613
|
}
|
|
2719
|
-
:host([
|
|
2720
|
-
:
|
|
2721
|
-
:
|
|
2722
|
-
:
|
|
2723
|
-
|
|
2724
|
-
border-radius: 0;
|
|
2725
|
-
padding: 6px 12px;
|
|
2726
|
-
box-shadow: 0 2px 8px rgba(0,0,0,.2);
|
|
2614
|
+
:host(:not([expanded])) .nlbl {
|
|
2615
|
+
width: 0;
|
|
2616
|
+
min-width: 0;
|
|
2617
|
+
flex: 0 0 0;
|
|
2618
|
+
overflow: hidden;
|
|
2727
2619
|
}
|
|
2728
|
-
:host([
|
|
2729
|
-
:
|
|
2730
|
-
:
|
|
2731
|
-
:host([corner="right"]) .launcher { flex-direction: column; padding: 10px 6px; }
|
|
2732
|
-
:host([corner="left"]) .tab-label,
|
|
2733
|
-
:host([corner="right"]) .tab-label { writing-mode: vertical-lr; }
|
|
2734
|
-
:host([corner="right"]) .tab-label { rotate: 180deg; }
|
|
2735
|
-
:host([corner="top"]) .launcher { border-radius: 0 0 10px 10px; }
|
|
2736
|
-
:host([corner="bottom"]) .launcher { border-radius: 10px 10px 0 0; }
|
|
2737
|
-
:host([corner="left"]) .launcher { border-radius: 0 10px 10px 0; }
|
|
2738
|
-
:host([corner="right"]) .launcher { border-radius: 10px 0 0 10px; }
|
|
2739
|
-
:host([corner="top"]) .tab-label,
|
|
2740
|
-
:host([corner="bottom"]) .tab-label,
|
|
2741
|
-
:host([corner="left"]) .tab-label,
|
|
2742
|
-
:host([corner="right"]) .tab-label { display: block; }
|
|
2743
|
-
:host([corner="top"]) .logo-icon,
|
|
2744
|
-
:host([corner="bottom"]) .logo-icon,
|
|
2745
|
-
:host([corner="left"]) .logo-icon,
|
|
2746
|
-
:host([corner="right"]) .logo-icon { width: 22px; height: 22px; }
|
|
2747
|
-
|
|
2748
|
-
/* === Sidebar — full-screen overlay with iframe === */
|
|
2749
|
-
.backdrop {
|
|
2750
|
-
position: absolute; inset: 0;
|
|
2751
|
-
background: rgba(0,0,0,.18);
|
|
2752
|
-
opacity: 0; pointer-events: none;
|
|
2753
|
-
transition: opacity 130ms ease;
|
|
2620
|
+
:host([expanded]) .nlbl {
|
|
2621
|
+
opacity: 1;
|
|
2622
|
+
transition: opacity .25s .15s;
|
|
2754
2623
|
}
|
|
2755
|
-
|
|
2756
|
-
.
|
|
2757
|
-
|
|
2758
|
-
|
|
2759
|
-
|
|
2760
|
-
|
|
2761
|
-
|
|
2762
|
-
|
|
2763
|
-
|
|
2764
|
-
|
|
2765
|
-
|
|
2766
|
-
|
|
2624
|
+
|
|
2625
|
+
/* .fznew-options — the three gesture actions, surfaced as a small legend of
|
|
2626
|
+
directly-clickable rows. Hidden at rest; in expanded mode they are revealed
|
|
2627
|
+
only on hover or keyboard focus (focus-within), so the rail stays calm by
|
|
2628
|
+
default and the legend is a discoverable hover affordance rather than
|
|
2629
|
+
persistent chrome. Collapsed, the press gesture on the badge is the only
|
|
2630
|
+
affordance. */
|
|
2631
|
+
.fznew-options { display: none; }
|
|
2632
|
+
:host([expanded]:hover) .fznew-options,
|
|
2633
|
+
:host([expanded]:focus-within) .fznew-options {
|
|
2634
|
+
display: flex;
|
|
2635
|
+
flex-direction: column;
|
|
2636
|
+
gap: 1px;
|
|
2637
|
+
margin: 2px 0 4px;
|
|
2638
|
+
padding-left: 38px;
|
|
2767
2639
|
}
|
|
2768
|
-
|
|
2769
|
-
:
|
|
2770
|
-
:
|
|
2771
|
-
:
|
|
2772
|
-
|
|
2773
|
-
|
|
2640
|
+
.fznew-opt {
|
|
2641
|
+
appearance: none;
|
|
2642
|
+
background: transparent;
|
|
2643
|
+
border: none;
|
|
2644
|
+
margin: 0;
|
|
2645
|
+
font: inherit;
|
|
2646
|
+
font-family: var(--ui);
|
|
2647
|
+
font-size: 11px;
|
|
2648
|
+
font-weight: 500;
|
|
2649
|
+
color: var(--txt-3);
|
|
2650
|
+
text-align: left;
|
|
2651
|
+
padding: 3px 6px;
|
|
2652
|
+
border-radius: 6px;
|
|
2653
|
+
cursor: pointer;
|
|
2654
|
+
display: flex;
|
|
2655
|
+
align-items: center;
|
|
2656
|
+
gap: 6px;
|
|
2657
|
+
white-space: nowrap;
|
|
2774
2658
|
}
|
|
2775
|
-
:
|
|
2776
|
-
:
|
|
2777
|
-
|
|
2778
|
-
:host([corner="top"]) .sidebar { top: 12px; bottom: auto; height: calc(100vh - 24px); transform: translateY(calc(-100% - 28px)); }
|
|
2779
|
-
:host([corner="bottom"]) .sidebar { top: auto; bottom: 12px; height: calc(100vh - 24px); transform: translateY(calc(100% + 28px)); }
|
|
2780
|
-
:host([open][corner="top"]) .sidebar,
|
|
2781
|
-
:host([open][corner="bottom"]) .sidebar { transform: translateY(0); }
|
|
2659
|
+
.fznew-opt:hover { background: var(--ghost); color: var(--ink); }
|
|
2660
|
+
.fznew-opt:focus-visible { outline: 2px solid var(--ctx); outline-offset: 1px; }
|
|
2661
|
+
.fznew-opt svg { display: block; flex: 0 0 auto; }
|
|
2782
2662
|
|
|
2783
|
-
/*
|
|
2784
|
-
|
|
2785
|
-
|
|
2786
|
-
|
|
2787
|
-
:
|
|
2788
|
-
:
|
|
2789
|
-
|
|
2790
|
-
|
|
2663
|
+
/* .fznew-spinner — busy/pending progress: the badge glyph swaps to a spinning
|
|
2664
|
+
lucide loader the moment the new-chat work is kicked off (optimistically on a
|
|
2665
|
+
save click, or whenever the host sets the busy attribute), so there is
|
|
2666
|
+
immediate feedback before any save/reload completes. */
|
|
2667
|
+
.fznew-spinner { display: grid; place-items: center; color: var(--ctx); position: relative; }
|
|
2668
|
+
.fznew-spinner svg { display: block; animation: slicc-fznew-spin 0.8s linear infinite; }
|
|
2669
|
+
@keyframes slicc-fznew-spin { to { transform: rotate(360deg); } }
|
|
2670
|
+
|
|
2671
|
+
/* .fznew-ring — determinate countdown ring drawn around the badge when the host
|
|
2672
|
+
drives the progress attribute (the new-session save race's 20s timer). A
|
|
2673
|
+
conic-gradient sweep filled to --fznew-progress (0..1) of a full turn,
|
|
2674
|
+
masked to a thin ring so the spinning loader still reads inside it. */
|
|
2675
|
+
.fznew-ring {
|
|
2676
|
+
position: absolute;
|
|
2677
|
+
inset: -6px;
|
|
2678
|
+
border-radius: 50%;
|
|
2679
|
+
background: conic-gradient(
|
|
2680
|
+
var(--ctx) calc(var(--fznew-progress, 0) * 360deg),
|
|
2681
|
+
color-mix(in srgb, var(--ctx) 18%, transparent) 0
|
|
2682
|
+
);
|
|
2683
|
+
-webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 2px), #000 calc(100% - 2px));
|
|
2684
|
+
mask: radial-gradient(farthest-side, transparent calc(100% - 2px), #000 calc(100% - 2px));
|
|
2791
2685
|
pointer-events: none;
|
|
2792
2686
|
}
|
|
2793
2687
|
|
|
2794
|
-
|
|
2795
|
-
|
|
2796
|
-
.
|
|
2797
|
-
position: absolute; inset: 0;
|
|
2798
|
-
display: flex; align-items: center; justify-content: center;
|
|
2799
|
-
padding: 24px; text-align: center;
|
|
2800
|
-
color: var(--txt-3, #717171); font-size: 13px; line-height: 1.5;
|
|
2801
|
-
}
|
|
2802
|
-
.empty[hidden] { display: none; }
|
|
2688
|
+
/* Respect prefers-reduced-motion: no fade, no spin — just hold the static end
|
|
2689
|
+
state (the loader glyph still shows, it simply does not rotate). The
|
|
2690
|
+
determinate ring stays — it conveys progress, not motion. */
|
|
2803
2691
|
@media (prefers-reduced-motion: reduce) {
|
|
2804
|
-
.
|
|
2692
|
+
.fznew, .nlbl { transition: none; }
|
|
2693
|
+
.fznew-spinner svg { animation: none; }
|
|
2805
2694
|
}
|
|
2806
|
-
`);
|
|
2695
|
+
`);E(`slicc-freezer-new`,class extends HTMLElement{static observedAttributes=[`expanded`,`label`,`busy`,`progress`];#e;#t=null;#n=null;#r=null;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[kr]}connectedCallback(){this.#a()}disconnectedCallback(){this.#n?.destroy(),this.#n=null,this.#c()}attributeChangedCallback(e){e===`progress`&&this.#i()||this.isConnected&&this.#a()}get expanded(){return this.hasAttribute(`expanded`)}set expanded(e){this.toggleAttribute(`expanded`,e)}get label(){return this.getAttribute(`label`)??Er}set label(e){e==null?this.removeAttribute(`label`):this.setAttribute(`label`,e)}get busy(){return this.hasAttribute(`busy`)}set busy(e){this.toggleAttribute(`busy`,e)}get progress(){let e=this.getAttribute(`progress`);if(e==null)return null;let t=Number.parseFloat(e);return Number.isFinite(t)?Math.min(1,Math.max(0,t)):null}set progress(e){e==null?this.removeAttribute(`progress`):this.setAttribute(`progress`,String(Math.min(1,Math.max(0,e))))}#i(){let e=this.#e.querySelector(`.fznew-ring`);return!e||!this.busy||!this.hasAttribute(`progress`)?!1:(e.style.setProperty(`--fznew-progress`,String(this.progress??0)),!0)}#a(){let e=this.label,t=this.busy,n=t&&this.hasAttribute(`progress`),i=O(`span`,{class:`nico`,part:`badge`},t?O(`span`,{class:`fznew-spinner`,part:`spinner`},n?O(`span`,{class:`fznew-ring`,part:`ring`,style:`--fznew-progress:${this.progress??0}`}):null,r(wr,{size:Tr,part:`icon`})):O(`slot`,{name:`icon`},r(Cr,{size:Tr,part:`icon`}))),a=O(`span`,{class:`nlbl`,part:`label`},O(`slot`,null,e)),o=O(`button`,{class:`fznew`,part:`button`,type:`button`,"aria-label":e,title:e,"aria-busy":t?`true`:void 0},i,a);this.#t=o,this.#s(o),this.#e.replaceChildren(o,this.#o())}#o(){let e=O(`div`,{class:`fznew-options`,part:`options`});for(let[t,n,i]of Or){let a=O(`button`,{class:`fznew-opt fznew-opt--${t}`,part:`option-${t}`,type:`button`},r(n,{size:13}),O(`span`,{class:`fznew-opt__text`},i));a.addEventListener(`click`,()=>this.#l(t)),e.appendChild(a)}return e}#s(e){this.#n?.destroy(),this.#c(),this.#n=Qn(e,{onLongPress:()=>{if(this.#r!==null){this.#c(),this.#l(`skip`);return}this.#l(`erase`)},onShortClick:()=>{if(this.#r!==null){this.#c(),this.#l(`skip`);return}this.#r=setTimeout(()=>{this.#r=null,this.#l(`save`)},Dr)}})}#c(){this.#r!==null&&(clearTimeout(this.#r),this.#r=null)}#l(e){e===`save`&&(this.busy=!0),this.dispatchEvent(new CustomEvent(`new-chat-${e}`,{bubbles:!0,composed:!0}))}});var Ar=`attribute vec2 a_pos; void main(){ gl_Position = vec4(a_pos,0.0,1.0); }`,jr=`precision highp float;
|
|
2696
|
+
uniform vec2 u_res; uniform float u_time; uniform float u_energy;
|
|
2697
|
+
uniform vec2 u_center; uniform vec3 u_evt; uniform float u_freeze; uniform float u_dark;
|
|
2698
|
+
uniform float u_density; uniform float u_falloff; uniform float u_life;
|
|
2699
|
+
uniform float u_blink; uniform float u_thick; uniform vec3 u_tint; uniform float u_scroll;
|
|
2700
|
+
uniform float u_brightness; uniform float u_contrast; uniform float u_noise; uniform float u_blur;
|
|
2701
|
+
vec3 themeBg(){ return mix(vec3(0.97,0.95,0.89), vec3(0.09,0.08,0.06), u_dark); }`,Mr=`
|
|
2702
|
+
float hash21(vec2 p){ p=fract(p*vec2(123.34,456.21)); p+=dot(p,p+45.32); return fract(p.x*p.y); }
|
|
2703
|
+
float vnoise(vec2 p){ vec2 i=floor(p),f=fract(p);
|
|
2704
|
+
float a=hash21(i),b=hash21(i+vec2(1.,0.)),c=hash21(i+vec2(0.,1.)),d=hash21(i+vec2(1.,1.));
|
|
2705
|
+
vec2 u=f*f*(3.-2.*f); return mix(mix(a,b,u.x),mix(c,d,u.x),u.y); }
|
|
2706
|
+
float fbm(vec2 p){ float v=0.,a=0.5; for(int i=0;i<5;i++){ v+=a*vnoise(p); p=p*2.02+vec2(7.1,3.7); a*=0.5;} return v; }
|
|
2707
|
+
vec2 warp(vec2 p, float t){ float a=fbm(p+vec2(0.0,1.7)+t*0.10); float b=fbm(p+vec2(5.2,1.3)-t*0.08); return p+0.85*vec2(a,b); }`,Nr={cone:`${jr}${Mr}
|
|
2708
|
+
float cellCycle(vec2 q){ float s=hash21(q+11.7);
|
|
2709
|
+
return 0.5+0.32*sin(u_time*u_blink+s*6.2831)+0.18*sin(u_time*0.6*u_blink+s*19.0); }
|
|
2710
|
+
void main(){
|
|
2711
|
+
vec2 uv=gl_FragCoord.xy/u_res; float aspect=u_res.x/u_res.y;
|
|
2712
|
+
vec2 p=uv-0.5; p.x*=aspect; vec2 c=u_center-0.5; c.x*=aspect;
|
|
2713
|
+
vec3 bg=themeBg(); float dist=length(p-c);
|
|
2714
|
+
/* Chat scroll pans the (periodic) lattice with the content. */
|
|
2715
|
+
p.y-=u_scroll;
|
|
2716
|
+
float ca=cos(0.7853981634), sa=sin(0.7853981634);
|
|
2717
|
+
vec2 pr=mat2(ca,-sa,sa,ca)*p; float cells=12.0; vec2 g=pr*cells; g.x+=g.y*0.5;
|
|
2718
|
+
vec2 id=floor(g); vec2 f=fract(g)-0.5;
|
|
2719
|
+
float dia=mix(length(f),abs(f.x)+abs(f.y),0.82);
|
|
2720
|
+
float ph=hash21(id)*6.2831; float radius=0.42+0.05*sin(u_time*0.5+ph);
|
|
2721
|
+
float aa=2.2/cells; float outline=smoothstep(u_thick+aa,u_thick,abs(dia-radius));
|
|
2722
|
+
float seedDen=clamp(u_density+u_energy*0.20*exp(-dist*2.0),0.0,1.0);
|
|
2723
|
+
float selfCyc=cellCycle(id); float selfSoft=smoothstep(-0.05,0.05,seedDen-selfCyc);
|
|
2724
|
+
float selfHard=step(selfCyc,seedDen); float nbs=0.0;
|
|
2725
|
+
for(int j=-1;j<=1;j++){ for(int i=-1;i<=1;i++){ if(i==0&&j==0) continue;
|
|
2726
|
+
vec2 nb=id+vec2(float(i),float(j)); nbs+=step(cellCycle(nb),seedDen); } }
|
|
2727
|
+
float survive=smoothstep(1.5,1.9,nbs)-smoothstep(3.1,3.5,nbs);
|
|
2728
|
+
float birth=smoothstep(2.6,3.0,nbs)-smoothstep(3.0,3.4,nbs);
|
|
2729
|
+
float gol=clamp(selfHard*survive+(1.0-selfHard)*birth,0.0,1.0);
|
|
2730
|
+
float golMix=1.0-smoothstep(0.0,max(u_life,0.001),dist);
|
|
2731
|
+
float onState=mix(selfSoft,gol,golMix);
|
|
2732
|
+
float falloff=clamp(1.0-u_falloff*max(dist-0.12,0.0),0.0,1.0);
|
|
2733
|
+
falloff=clamp(falloff+u_energy*0.30*exp(-dist*2.0),0.0,1.0); onState*=falloff;
|
|
2734
|
+
float bevel=clamp(0.5-(f.x-f.y)*0.9,0.0,1.0);
|
|
2735
|
+
vec3 lineCol=mix(vec3(0.78,0.55,0.30),vec3(0.86,0.62,0.36),u_dark);
|
|
2736
|
+
vec3 hiCol=mix(vec3(0.90,0.72,0.46),vec3(0.92,0.74,0.48),u_dark);
|
|
2737
|
+
vec3 tint=mix(lineCol,hiCol,bevel*0.6); float stroke=outline*onState;
|
|
2738
|
+
// Low-contrast lattice: chat prose sits DIRECTLY on this field (the frosted
|
|
2739
|
+
// reading card is gone), so strokes stay close to the base color — toward
|
|
2740
|
+
// the light bg in light mode, toward the dark bg in dark mode.
|
|
2741
|
+
vec3 col=mix(bg,tint,clamp(stroke*0.20,0.0,0.20));
|
|
2742
|
+
col+=u_evt*u_energy*stroke*exp(-dist*dist*4.0)*0.18;
|
|
2743
|
+
/* Cone-only post: a noise/grain layer whose sample frequency is driven by
|
|
2744
|
+
u_blur (high blur => low frequency / soft, low blur => sharp grain), then
|
|
2745
|
+
contrast around 0.5 and brightness as a multiplier. The JS getters bake in
|
|
2746
|
+
tuned defaults (brightness=1.2, contrast=0.75, noise=0.04, blur=0.09); at
|
|
2747
|
+
the shader level the identity is still u_noise=0, u_contrast=1, u_brightness=1. */
|
|
2748
|
+
float noiseFreq=mix(80.0,4.0,clamp(u_blur,0.0,1.0));
|
|
2749
|
+
float grain=fbm(uv*noiseFreq)-0.5;
|
|
2750
|
+
col+=u_noise*grain;
|
|
2751
|
+
col=(col-0.5)*u_contrast+0.5;
|
|
2752
|
+
col*=u_brightness;
|
|
2753
|
+
col=clamp(col,0.0,1.0);
|
|
2754
|
+
gl_FragColor=vec4(col,1.0);
|
|
2755
|
+
}`,scoop:`${jr}${Mr}
|
|
2756
|
+
vec3 pal(float t){ vec3 strawberry=vec3(1.0,0.45,0.62); vec3 vanilla=vec3(1.0,0.95,0.82);
|
|
2757
|
+
vec3 pistachio=vec3(0.60,0.86,0.52);
|
|
2758
|
+
vec3 col=mix(strawberry,vanilla,smoothstep(0.0,0.5,t)); col=mix(col,pistachio,smoothstep(0.5,1.0,t)); return col; }
|
|
2759
|
+
void main(){
|
|
2760
|
+
vec2 uv=gl_FragCoord.xy/u_res; float aspect=u_res.x/u_res.y;
|
|
2761
|
+
vec2 p=uv-0.5; p.x*=aspect; p.y-=u_scroll; vec2 c=u_center-0.5; c.x*=aspect;
|
|
2762
|
+
vec3 bg=mix(themeBg(),u_tint,0.14); vec2 sp=p-c; float r=length(sp); float a=atan(sp.y,sp.x);
|
|
2763
|
+
float breathe=1.0+0.06*sin(u_time*0.4);
|
|
2764
|
+
float swirl=a+r*(2.2+0.8*sin(u_time*0.15))-u_time*0.18-u_energy*2.0*exp(-r*2.0);
|
|
2765
|
+
vec2 q=vec2(cos(swirl),sin(swirl))*r*breathe;
|
|
2766
|
+
vec2 w=warp(q*1.8+vec2(0.0,u_time*0.06),u_time);
|
|
2767
|
+
float n=fbm(w*1.4); n+=0.4*fbm(w*2.6-u_time*0.05); n=clamp(n/1.4,0.0,1.0);
|
|
2768
|
+
float ribbon=fbm(w*2.2+n*1.5); float t=clamp(n*0.7+ribbon*0.4,0.0,1.0);
|
|
2769
|
+
vec3 ice=pal(t); float hl=smoothstep(0.45,0.7,ribbon); ice=mix(ice,ice+vec3(0.18),hl*0.6);
|
|
2770
|
+
ice=mix(ice,u_tint,clamp(0.32+hl*0.30,0.0,0.85)); ice+=u_energy*u_evt*0.4*exp(-r*1.5);
|
|
2771
|
+
ice*=0.95+0.08*sin(u_time*0.4); float mask=smoothstep(0.62,0.0,r);
|
|
2772
|
+
vec3 col=mix(bg,ice,clamp(mask,0.0,1.0)*0.80); col+=ice*mask*hl*0.12;
|
|
2773
|
+
gl_FragColor=vec4(col,1.0);
|
|
2774
|
+
}`,freezer:`${jr}${Mr}
|
|
2775
|
+
/* Inside-of-a-freezer ground: icy WHITE in light mode (never the warm theme
|
|
2776
|
+
canvas — blue-on-beige read as sand, not frost), cold blue-black in dark. */
|
|
2777
|
+
vec3 freezerBg(){ return mix(vec3(0.965,0.98,1.0), vec3(0.05,0.08,0.13), u_dark); }
|
|
2778
|
+
void main(){
|
|
2779
|
+
vec2 uv=gl_FragCoord.xy/u_res; uv.y-=u_scroll; float aspect=u_res.x/u_res.y; vec2 p=(uv-0.5); p.x*=aspect;
|
|
2780
|
+
/* Glacial clock: frost creeps, it never flows. */
|
|
2781
|
+
float t=u_time*0.08;
|
|
2782
|
+
vec3 iceCol=mix(vec3(0.55,0.80,1.0),vec3(0.36,0.52,0.78),u_dark);
|
|
2783
|
+
vec3 deepIce=mix(vec3(0.20,0.44,0.84),vec3(0.12,0.24,0.46),u_dark);
|
|
2784
|
+
vec3 bg=mix(freezerBg(),iceCol,0.10); float dc=distance(uv,vec2(0.0,0.0));
|
|
2785
|
+
float ragged=0.10*fbm(uv*6.0+3.0)+0.05*fbm(uv*14.0); float front=u_freeze*0.66+ragged-0.05;
|
|
2786
|
+
float edge=front-dc; float frozen=smoothstep(-0.04,0.06,edge); float wetBand=smoothstep(0.12,0.0,abs(edge));
|
|
2787
|
+
float ripple=0.015*sin(dc*40.0-t*0.4)*frozen; vec2 q=uv*aspect+vec2(ripple,ripple*0.5);
|
|
2788
|
+
float crystals=fbm(q*9.0); crystals+=0.5*fbm(q*20.0+4.0); crystals/=1.5;
|
|
2789
|
+
float facet=smoothstep(0.45,0.55,crystals); float veins=smoothstep(0.03,0.0,abs(fract(crystals*6.0)-0.5)-0.02);
|
|
2790
|
+
vec3 col=bg; vec3 wet=mix(bg,iceCol,0.5); float wetSpec=pow(clamp(fbm(uv*10.0-t*0.2),0.0,1.0),2.0);
|
|
2791
|
+
wet+=wetSpec*vec3(1.0)*0.25; col=mix(col,wet,wetBand*0.45);
|
|
2792
|
+
vec3 frost=mix(deepIce,iceCol,facet); frost+=veins*vec3(1.0)*0.30;
|
|
2793
|
+
float spark=smoothstep(0.92,1.0,fbm(uv*30.0))*(0.5+0.5*sin(t*0.6+crystals*20.0));
|
|
2794
|
+
frost+=spark*vec3(1.0)*0.4*frozen; col=mix(col,frost,frozen*0.85);
|
|
2795
|
+
float rim=smoothstep(0.05,0.0,abs(edge))*0.6; col+=rim*iceCol;
|
|
2796
|
+
/* The field is a BACKGROUND: chat prose sits directly on it, so the final
|
|
2797
|
+
wash pins the whole pattern close to the icy ground — the same ~20%
|
|
2798
|
+
deviation budget the cone lattice uses (strokes at 0.20 toward tint). */
|
|
2799
|
+
col=mix(freezerBg(),col,0.22);
|
|
2800
|
+
gl_FragColor=vec4(col,1.0);
|
|
2801
|
+
}`},Pr=new Set([`cone`,`scoop`,`freezer`]),Fr={cone:`radial-gradient(120% 120% at 35% 45%, color-mix(in srgb,#e0a866 40%,var(--bg)) 0%, var(--bg) 60%)`,scoop:`radial-gradient(120% 120% at 40% 50%, color-mix(in srgb,#ff9bc0 40%,var(--bg)) 0%, var(--bg) 62%)`,freezer:`radial-gradient(120% 120% at 0% 100%, color-mix(in srgb,#7fb0e6 55%,var(--bg)) 0%, var(--bg) 70%)`},Ir=k(`
|
|
2802
|
+
:host { position: relative; display: block; pointer-events: none; }
|
|
2803
|
+
.canvas, .fallback { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
|
|
2804
|
+
.fallback { display: none; }
|
|
2805
|
+
:host([no-webgl]) .canvas { display: none; }
|
|
2806
|
+
:host([no-webgl]) .fallback { display: block; }`),Lr=2,Rr=.35,zr=[`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 Br(e,t,n,r){return Number.isFinite(e)?Math.max(t,Math.min(n,e)):r}function Vr(e,t){if(!e||typeof getComputedStyle!=`function`)return t;let n=document.createElement(`span`);n.style.color=e,n.style.display=`none`,document.body.appendChild(n);let r=getComputedStyle(n).color;n.remove();let i=r.match(/[\d.]+/g)?.map(Number);return!i||i.length<3?t:[i[0]/255,i[1]/255,i[2]/255]}var Hr=class extends HTMLElement{static observedAttributes=[`mode`,`tint`,`coverage`,`intensity`,`scroll`,`brightness`,`contrast`,`noise`,`blur`];#e;#t=null;#n=null;#r=null;#i={};#a=null;#o={};#s=-1;#c=0;#l=0;#u=0;#d=null;#f=!1;#p=[.545,.361,.965];#m=[.957,.247,.369];#h=0;#g=null;#_=null;#v=null;#y=null;#b=null;#x=null;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[Ir];let e=O(`canvas`,{class:`canvas`,part:`canvas`}),t=O(`div`,{class:`fallback`,part:`fallback`,"aria-hidden":`true`});this.#e.replaceChildren(e,t),this.#t=e}connectedCallback(){if(this.#f=typeof matchMedia==`function`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches,this.#S(),!this.#k()){this.setAttribute(`no-webgl`,``);return}this.removeAttribute(`no-webgl`),typeof ResizeObserver<`u`&&(this.#d=new ResizeObserver(()=>this.#C()),this.#d.observe(this)),this.#w(),this.#T(),this.#l=performance.now()/1e3,this.#f?this.#F():this.#I()}disconnectedCallback(){this.#L(),this.#d?.disconnect(),this.#d=null,this.#g?.disconnect(),this.#g=null,this.#_&&this.#v&&this.#_.removeEventListener(`change`,this.#v),this.#_=null,this.#v=null,this.#R()}attributeChangedCallback(e){if(this.isConnected){if(e===`tint`&&this.#w(),e===`mode`&&this.#n&&this.mode!==this.#y&&this.#O()){this.#F(),this.#S();return}this.#S(),this.#C()}}get mode(){let e=this.getAttribute(`mode`);return e&&Pr.has(e)?e:`cone`}set mode(e){this.setAttribute(`mode`,e)}get coverage(){return Br(Number.parseFloat(this.getAttribute(`coverage`)??``),0,1,.66)}set coverage(e){this.setAttribute(`coverage`,String(e))}get intensity(){return Br(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 Br(Number.parseFloat(this.getAttribute(`brightness`)??``),.5,1.5,1.2)}set brightness(e){this.setAttribute(`brightness`,String(e))}get contrast(){return Br(Number.parseFloat(this.getAttribute(`contrast`)??``),.5,2,.75)}set contrast(e){this.setAttribute(`contrast`,String(e))}get noise(){return Br(Number.parseFloat(this.getAttribute(`noise`)??``),0,.3,.04)}set noise(e){this.setAttribute(`noise`,String(e))}get blurAmount(){return Br(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.#u=Math.min(1.4,this.#u+e),this.#f&&this.#F()}#S(){let e=this.#e.querySelector(`.fallback`);e&&(e.style.background=Fr[this.mode])}#C(){this.#f&&this.#n&&this.#F()}#w(){let e=this.getAttribute(`tint`)??``;this.#p=Vr(e,[.545,.361,.965]),this.#m=Vr(e,[.957,.247,.369]),this.#h=this.#P()}#T(){let e=()=>{this.#w(),this.#C()};if(typeof MutationObserver<`u`){this.#g=new MutationObserver(e);for(let e of[document.documentElement,document.body])e&&this.#g.observe(e,{attributes:!0,attributeFilter:[`class`,`data-theme`]})}typeof matchMedia==`function`&&(this.#_=matchMedia(`(prefers-color-scheme: dark)`),this.#v=e,this.#_.addEventListener(`change`,this.#v))}#E(e,t,n){let r=e.createShader(t);return r?(e.shaderSource(r,n),e.compileShader(r),e.getShaderParameter(r,e.COMPILE_STATUS)?r:(e.deleteShader(r),null)):null}#D(e){let t=this.#n;if(!t)return null;let n=this.#E(t,t.VERTEX_SHADER,Ar),r=this.#E(t,t.FRAGMENT_SHADER,Nr[e]);if(!n||!r)return n&&t.deleteShader(n),r&&t.deleteShader(r),null;let i=t.createProgram();if(!i)return t.deleteShader(n),t.deleteShader(r),null;if(t.attachShader(i,n),t.attachShader(i,r),t.linkProgram(i),!t.getProgramParameter(i,t.LINK_STATUS))return t.deleteProgram(i),t.deleteShader(n),t.deleteShader(r),null;let a=t.getAttribLocation(i,`a_pos`),o={};for(let e of zr)o[e]=t.getUniformLocation(i,e);return{program:i,vs:n,fs:r,aPos:a,loc:o}}#O(){let e=this.#n;if(!e)return!1;let t=this.mode,n=this.#i[t];if(!n){let e=this.#D(t);if(!e)return!1;this.#i[t]=e,n=e}return this.#r=n.program,this.#s=n.aPos,this.#o=n.loc,e.useProgram(n.program),this.#y=t,!0}#k(){let e=this.#t;if(!e)return!1;let t={premultipliedAlpha:!0,alpha:!0,antialias:!0},n=null;try{n=e.getContext(`webgl`,t)??e.getContext(`experimental-webgl`,t)}catch{n=null}return n?(this.#n=n,this.#j(e),this.#A()):!1}#A(){let e=this.#n;if(!e)return!1;if(!this.#O())return this.#n=null,!1;let t=e.createBuffer();return t?(this.#a=t,e.bindBuffer(e.ARRAY_BUFFER,t),e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,3,-1,-1,3]),e.STATIC_DRAW),!0):(this.#n=null,!1)}#j(e){this.#M(e),this.#b=e=>{e.preventDefault(),this.#L(),this.#i={},this.#r=null,this.#y=null,this.#o={},this.#a=null},this.#x=()=>{!this.isConnected||!this.#n||(this.#i={},this.#A()&&(this.#l=performance.now()/1e3,this.#f?this.#F():this.#I()))},e.addEventListener(`webglcontextlost`,this.#b,!1),e.addEventListener(`webglcontextrestored`,this.#x,!1)}#M(e){this.#b&&e.removeEventListener(`webglcontextlost`,this.#b),this.#x&&e.removeEventListener(`webglcontextrestored`,this.#x),this.#b=null,this.#x=null}#N(){let e=this.#t;if(!e)return;let t=Math.min(Lr,typeof window<`u`&&window.devicePixelRatio||1),n=Math.max(1,e.clientWidth*t|0),r=Math.max(1,e.clientHeight*t|0);(e.width!==n||e.height!==r)&&(e.width=n,e.height=r)}#P(){if(typeof getComputedStyle!=`function`)return 0;let e=getComputedStyle(this).getPropertyValue(`--ink`).trim();if(!e)return 0;let[t,n,r]=Vr(e,[0,0,0]);return+(.2126*t+.7152*n+.0722*r>.5)}#F(){let e=this.#n,t=this.#t,n=this.#r;if(!e||!t||!n||!this.#a)return;this.#N();let r=performance.now()/1e3-this.#l,i=.5+.5*Math.sin(r*.12),a=.5+.5*Math.sin(r*.097+1),o=.2*(1-i)+.46*i,s=.74*(1-a)+.3*a,c=this.#h,l=this.#p,u=this.#m;e.viewport(0,0,t.width,t.height),e.useProgram(n),e.bindBuffer(e.ARRAY_BUFFER,this.#a),e.enableVertexAttribArray(this.#s),e.vertexAttribPointer(this.#s,2,e.FLOAT,!1,0,0);let d=this.#o;e.uniform2f(d.u_res??null,t.width,t.height),e.uniform1f(d.u_time??null,r),e.uniform1f(d.u_energy??null,this.#u),e.uniform2f(d.u_center??null,o,s),e.uniform3f(d.u_evt??null,u[0],u[1],u[2]),e.uniform1f(d.u_freeze??null,Br(this.coverage*this.intensity,0,1,.66)*2.2),e.uniform1f(d.u_dark??null,c),e.uniform1f(d.u_scroll??null,this.scrollOffset*Rr/Math.max(1,t.clientHeight||t.height)),e.uniform1f(d.u_density??null,.29),e.uniform1f(d.u_falloff??null,.3),e.uniform1f(d.u_life??null,.35),e.uniform1f(d.u_blink??null,.05),e.uniform1f(d.u_thick??null,.02),e.uniform3f(d.u_tint??null,l[0],l[1],l[2]),e.uniform1f(d.u_brightness??null,this.brightness),e.uniform1f(d.u_contrast??null,this.contrast),e.uniform1f(d.u_noise??null,this.noise),e.uniform1f(d.u_blur??null,this.blurAmount),e.drawArrays(e.TRIANGLES,0,3),this.#u*=.95,this.#u<.001&&(this.#u=0)}#I(){if(this.#c)return;let e=()=>{this.#F(),this.#c=requestAnimationFrame(e)};this.#c=requestAnimationFrame(e)}#L(){this.#c&&cancelAnimationFrame(this.#c),this.#c=0}#R(){let e=this.#n,t=this.#t;if(t&&this.#M(t),e){this.#a&&e.deleteBuffer(this.#a);for(let t of Object.values(this.#i))t&&(e.deleteProgram(t.program),e.deleteShader(t.vs),e.deleteShader(t.fs));e.getExtension(`WEBGL_lose_context`)?.loseContext()}this.#n=null,this.#r=null,this.#i={},this.#o={},this.#a=null,this.#y=null}};E(`slicc-shader`,Hr),E(`slicc-frost-shader`,class extends Hr{connectedCallback(){this.getAttribute(`mode`)!==`freezer`&&this.setAttribute(`mode`,`freezer`),super.connectedCallback()}});var Ur=new Set([`user`,`feedback`,`project`]),Wr={user:{hue:`--rose`,label:`user`},feedback:{hue:`--cyan`,label:`feedback`},project:{hue:`--violet`,label:`project`}};function Gr(e){return e===`feedback`||e===`project`?e:`user`}var Kr=k(`
|
|
2807
2807
|
:host {
|
|
2808
2808
|
display: inline-flex;
|
|
2809
2809
|
vertical-align: middle;
|
|
@@ -2825,13 +2825,13 @@ void main(){
|
|
|
2825
2825
|
background: color-mix(in srgb, var(--mtag-hue, var(--rose)) var(--mtag-fill), var(--canvas));
|
|
2826
2826
|
border: 1px solid color-mix(in srgb, var(--mtag-hue, var(--rose)) var(--mtag-border), var(--line));
|
|
2827
2827
|
}
|
|
2828
|
-
`),
|
|
2828
|
+
`),qr=`slicc-memtag-dark`,Jr=`
|
|
2829
2829
|
.dark slicc-memtag,
|
|
2830
2830
|
[data-theme="dark"] slicc-memtag {
|
|
2831
2831
|
--mtag-fill: 22%;
|
|
2832
2832
|
--mtag-border: 38%;
|
|
2833
2833
|
}
|
|
2834
|
-
`;function
|
|
2834
|
+
`;function Yr(e){if(e.getElementById(qr))return;let t=e.createElement(`style`);t.id=qr,t.textContent=Jr,(e.head??e.documentElement).appendChild(t)}E(`slicc-memtag`,class extends HTMLElement{static observedAttributes=[`type`,`label`];#e;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[Kr]}connectedCallback(){Yr(this.ownerDocument),this.#t()}attributeChangedCallback(){this.isConnected&&this.#t()}get type(){return Gr(this.getAttribute(`type`))}set type(e){this.setAttribute(`type`,Ur.has(e)?e:`user`)}get label(){return this.getAttribute(`label`)}set label(e){e==null?this.removeAttribute(`label`):this.setAttribute(`label`,e)}#t(){let{hue:e,label:t}=Wr[this.type],n=this.label??O(`slot`,null,t),r=O(`span`,{class:`mtag`,part:`tag`,style:`--mtag-hue:var(${e})`},n);this.#e.replaceChildren(r)}});var Xr=`
|
|
2835
2835
|
slicc-memrow {
|
|
2836
2836
|
display: block;
|
|
2837
2837
|
border: 1px solid var(--line);
|
|
@@ -2905,7 +2905,7 @@ slicc-memrow.fresh {
|
|
|
2905
2905
|
background: color-mix(in srgb, var(--violet) 22%, var(--canvas));
|
|
2906
2906
|
border-color: color-mix(in srgb, var(--violet) 38%, var(--line));
|
|
2907
2907
|
}
|
|
2908
|
-
`,
|
|
2908
|
+
`,Zr=`slicc-memrow-style`;function Qr(e){if(e.getElementById(Zr))return;let t=e.createElement(`style`);t.id=Zr,t.textContent=Xr,(e.head??e.documentElement).appendChild(t)}function $r(e){return e===`feedback`||e===`project`?e:`user`}E(`slicc-memrow`,class extends HTMLElement{static get observedAttributes(){return[`title`,`summary`,`tag`,`fresh`]}#e=!1;#t=null;#n=null;#r=null;#i=null;#a=null;#o=null;connectedCallback(){Qr(this.ownerDocument),this.#e||this.#s(),this.#c(),this.#l()}disconnectedCallback(){this.#u()}attributeChangedCallback(){this.#e&&this.#c()}get title(){return this.getAttribute(`title`)??``}set title(e){e==null?this.removeAttribute(`title`):this.setAttribute(`title`,e)}get summary(){return this.getAttribute(`summary`)??``}set summary(e){e==null?this.removeAttribute(`summary`):this.setAttribute(`summary`,e)}get tag(){return $r(this.getAttribute(`tag`))}set tag(e){this.setAttribute(`tag`,e)}get fresh(){return this.hasAttribute(`fresh`)}set fresh(e){this.toggleAttribute(`fresh`,e)}#s(){this.#e=!0;let e=this.ownerDocument.createElement(`div`);e.className=`mt`;let t=this.ownerDocument.createElement(`b`),n=this.ownerDocument.createElement(`slicc-memtag`);e.append(t,n);let r=this.ownerDocument.createElement(`div`);for(r.className=`ms`;this.firstChild;)r.appendChild(this.firstChild);this.append(e,r),this.#t=e,this.#n=t,this.#r=n,this.#i=r}#c(){let e=this.#n,t=this.#r,n=this.#i;if(!e||!t||!n)return;e.textContent=this.title;let r=this.tag;t.className=``,t.setAttribute(`type`,r),t.textContent=``;let i=n.firstChild,a=this.summary;i&&i.nodeType===Node.TEXT_NODE?i.textContent=a:a&&n.insertBefore(this.ownerDocument.createTextNode(a),i),this.classList.toggle(`fresh`,this.fresh)}#l(){this.#a||(this.#a=e=>this.#d(e),this.addEventListener(`click`,this.#a)),this.#o||(this.#o=e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),this.#d(e))},this.addEventListener(`keydown`,this.#o))}#u(){this.#a&&=(this.removeEventListener(`click`,this.#a),null),this.#o&&=(this.removeEventListener(`keydown`,this.#o),null)}#d(e){this.dispatchEvent(new CustomEvent(`select`,{bubbles:!0,composed:!0,detail:{title:this.title,summary:this.summary,tag:this.tag,sourceEvent:e}}))}});var ei=`
|
|
2909
2909
|
slicc-palette-grid {
|
|
2910
2910
|
display: block;
|
|
2911
2911
|
flex: 1;
|
|
@@ -2924,7 +2924,7 @@ slicc-palette-grid .palgrid {
|
|
|
2924
2924
|
grid-template-columns: repeat(auto-fill, minmax(96px, 1fr));
|
|
2925
2925
|
gap: 10px;
|
|
2926
2926
|
}
|
|
2927
|
-
`,
|
|
2927
|
+
`,ti=`slicc-palette-grid-style`;function ni(e){if(e.getElementById(ti))return;let t=e.createElement(`style`);t.id=ti,t.textContent=ei,(e.head??e.documentElement).appendChild(t)}var ri=[{label:`canvas #faf6f1`,color:`#faf6f1`},{label:`cone #ef7000`,color:`#ef7000`},{label:`scoop #8b5cf6`,color:`#8b5cf6`},{label:`scoop #06b6d4`,color:`#06b6d4`},{label:`scoop #f43f5e`,color:`#f43f5e`},{label:`ink #0a0a0a`,color:`#0a0a0a`}],ii=`brand palette · tokens`;E(`slicc-palette-grid`,class extends HTMLElement{static get observedAttributes(){return[`heading`]}#e=!1;#t=null;#n=null;#r=[];#i=null;#a=null;connectedCallback(){ni(this.ownerDocument),this.#e||this.#o(),this.#s(),this.#l()}disconnectedCallback(){this.#u()}attributeChangedCallback(){this.#e&&this.#s()}get heading(){return this.getAttribute(`heading`)??ii}set heading(e){e==null?this.removeAttribute(`heading`):this.setAttribute(`heading`,e)}get tokens(){return(this.#i??ri).map(e=>({...e}))}set tokens(e){this.#i=Array.isArray(e)?e.map(e=>({label:String(e.label??``),color:String(e.color??``)})):null,this.#e&&this.#c()}#o(){for(this.#e=!0,this.#r=[];this.firstChild;)this.#r.push(this.firstChild),this.removeChild(this.firstChild);let e=this.ownerDocument.createElement(`h4`),t=this.ownerDocument.createElement(`div`);t.className=`palgrid`,this.append(e,t),this.#t=e,this.#n=t,this.#c()}#s(){this.#t&&(this.#t.textContent=this.heading)}#c(){let e=this.#n;if(e){e.replaceChildren();for(let t of this.#r)e.appendChild(t);for(let t of this.tokens){let n=this.ownerDocument.createElement(`slicc-palette-cell`);n.setAttribute(`color`,t.color),n.setAttribute(`label`,t.label),e.appendChild(n)}}}#l(){this.#a||(this.#a=e=>{let t=e.detail??{};this.dispatchEvent(new CustomEvent(`select`,{bubbles:!0,composed:!0,detail:{label:t.label??``,color:t.color??``,sourceEvent:e}}))},this.addEventListener(`palette-select`,this.#a))}#u(){this.#a&&=(this.removeEventListener(`palette-select`,this.#a),null)}});var ai=k(`
|
|
2928
2928
|
:host { display: inline-block; position: relative; font-family: var(--ui); }
|
|
2929
2929
|
.trigger {
|
|
2930
2930
|
display: inline-flex; align-items: center; justify-content: center;
|
|
@@ -2965,7 +2965,7 @@ slicc-palette-grid .palgrid {
|
|
|
2965
2965
|
.item .ic { flex: 0 0 auto; display: flex; color: var(--txt-2, #505050); }
|
|
2966
2966
|
.item.danger .ic { color: var(--rose, #f43f5e); }
|
|
2967
2967
|
@media (prefers-reduced-motion: reduce) { .pop { transition: none; } }
|
|
2968
|
-
`);
|
|
2968
|
+
`);E(`slicc-avatar-menu`,class extends HTMLElement{static observedAttributes=[`open`];#e;#t;#n;#r=[];#i=null;#a=e=>{this.open&&!e.composedPath().includes(this)&&this.hide()};#o=e=>{e.key===`Escape`&&this.open&&(this.hide(),this.#t.focus())};constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[ai],this.#t=O(`button`,{class:`trigger`,part:`trigger`,type:`button`,"aria-haspopup":`menu`,"aria-expanded":`false`},O(`slot`)),this.#n=O(`div`,{class:`pop`,part:`popover`,role:`menu`}),this.#e.replaceChildren(this.#t,this.#n),this.#t.addEventListener(`click`,()=>this.toggle())}connectedCallback(){this.#c()}disconnectedCallback(){document.removeEventListener(`mousedown`,this.#a),document.removeEventListener(`keydown`,this.#o)}attributeChangedCallback(e){if(e===`open`){let e=this.open;this.#t.setAttribute(`aria-expanded`,e?`true`:`false`),e?(document.addEventListener(`mousedown`,this.#a),document.addEventListener(`keydown`,this.#o)):(document.removeEventListener(`mousedown`,this.#a),document.removeEventListener(`keydown`,this.#o))}}get open(){return this.hasAttribute(`open`)}set open(e){this.toggleAttribute(`open`,e)}get user(){return this.#i}set user(e){this.#i=e,this.#c()}get items(){return this.#r.map(e=>({...e}))}set items(e){this.#r=Array.isArray(e)?e.map(e=>({...e})):[],this.#c()}show(){this.open||(this.open=!0,this.#s())}hide(){this.open&&(this.open=!1,this.#s())}toggle(){this.open?this.hide():this.show()}#s(){this.dispatchEvent(new CustomEvent(`slicc-avatar-menu-toggle`,{detail:{open:this.open},bubbles:!0,composed:!0}))}#c(){let e=[];if(this.#i){let t=O(`div`,{class:`user`},O(`div`,{class:`name`},this.#i.name));this.#i.provider&&t.append(O(`div`,{class:`prov`},this.#i.provider)),e.push(t)}for(let t of this.#r)if(t.kind===`separator`)e.push(O(`div`,{class:`sep`,role:`separator`}));else if(t.kind===`caption`)e.push(O(`div`,{class:`cap`},t.label??``));else{let n=O(`button`,{class:`item${t.danger?` danger`:``}`,part:`item`,type:`button`,role:`menuitem`,"data-id":t.id??``,disabled:t.disabled?!0:void 0});t.icon&&n.append(O(`span`,{class:`ic`},r(t.icon,{size:16}))),n.append(O(`span`,{class:`lb`},t.label??``)),t.disabled||n.addEventListener(`click`,()=>this.#l(t.id??``)),e.push(n)}this.#n.replaceChildren(...e)}#l(e){this.dispatchEvent(new CustomEvent(`slicc-avatar-action`,{detail:{id:e},bubbles:!0,composed:!0})),this.hide()}});var oi=`
|
|
2969
2969
|
.slicc-nav {
|
|
2970
2970
|
display: flex;
|
|
2971
2971
|
align-items: center;
|
|
@@ -2992,7 +2992,45 @@ slicc-palette-grid .palgrid {
|
|
|
2992
2992
|
@media (max-width: 560px) {
|
|
2993
2993
|
.slicc-nav { gap: 8px; padding: 0 10px; }
|
|
2994
2994
|
}
|
|
2995
|
-
`,
|
|
2995
|
+
`,si=`slicc-nav-style`;function ci(e){if(e.getElementById(si))return;let t=e.createElement(`style`);t.id=si,t.textContent=oi,(e.head??e.documentElement).appendChild(t)}E(`slicc-nav`,class extends HTMLElement{static observedAttributes=[`accent`];#e=!1;connectedCallback(){ci(this.ownerDocument),this.classList.add(`slicc-nav`),this.setAttribute(`part`,`bar`),this.#t(),this.#n(this.getAttribute(`accent`))}attributeChangedCallback(e,t,n){e!==`accent`||t===n||this.isConnected&&(this.#n(n),this.dispatchEvent(new CustomEvent(`slicc-nav-accent-change`,{detail:{accent:n},bubbles:!0,composed:!0})))}get accent(){return this.getAttribute(`accent`)}set accent(e){e==null?this.removeAttribute(`accent`):this.setAttribute(`accent`,e)}get spacer(){return this.#t(),this.querySelector(`:scope > .slicc-nav__spacer, :scope > .spacer`)}#t(){if(this.#e||(this.#e=!0,this.querySelector(`:scope > .slicc-nav__spacer, :scope > .spacer`)))return;let e=this.ownerDocument.createElement(`div`);e.className=`slicc-nav__spacer`,e.setAttribute(`part`,`spacer`),e.setAttribute(`aria-hidden`,`true`);let t=this.querySelector(`:scope > slicc-floatbar, :scope > slicc-theme-toggle, :scope > slicc-avatar`);t?this.insertBefore(e,t):this.appendChild(e)}#n(e){e==null||e.trim()===``?this.style.removeProperty(`--ctx`):this.style.setProperty(`--ctx`,e)}});var li=k(`
|
|
2996
|
+
:host {
|
|
2997
|
+
position: fixed;
|
|
2998
|
+
z-index: 110;
|
|
2999
|
+
display: block;
|
|
3000
|
+
}
|
|
3001
|
+
.menu {
|
|
3002
|
+
min-width: 140px;
|
|
3003
|
+
max-width: 200px;
|
|
3004
|
+
background: var(--canvas, #fff);
|
|
3005
|
+
border: 1px solid var(--line, #e1e1e1);
|
|
3006
|
+
border-radius: 8px;
|
|
3007
|
+
box-shadow: 0 8px 24px -4px rgba(10,10,10,.2), 0 2px 6px -2px rgba(10,10,10,.12);
|
|
3008
|
+
padding: 4px;
|
|
3009
|
+
font-family: var(--ui);
|
|
3010
|
+
font-size: 13px;
|
|
3011
|
+
}
|
|
3012
|
+
.item {
|
|
3013
|
+
display: flex;
|
|
3014
|
+
align-items: center;
|
|
3015
|
+
gap: 8px;
|
|
3016
|
+
height: 28px;
|
|
3017
|
+
padding: 0 10px;
|
|
3018
|
+
border-radius: 5px;
|
|
3019
|
+
color: var(--ink, #131313);
|
|
3020
|
+
cursor: pointer;
|
|
3021
|
+
border: none;
|
|
3022
|
+
background: none;
|
|
3023
|
+
width: 100%;
|
|
3024
|
+
text-align: left;
|
|
3025
|
+
font: inherit;
|
|
3026
|
+
}
|
|
3027
|
+
.item:hover {
|
|
3028
|
+
background: var(--ghost, rgba(0,0,0,.05));
|
|
3029
|
+
}
|
|
3030
|
+
.item.destructive {
|
|
3031
|
+
color: var(--red, #e53e3e);
|
|
3032
|
+
}
|
|
3033
|
+
`),ui=null,di=null,fi=null,pi=class e extends HTMLElement{#e;#t=void 0;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[li]}connectedCallback(){this.#e.addEventListener(`click`,this.#n)}disconnectedCallback(){this.#e.removeEventListener(`click`,this.#n)}#n=t=>{let n=t.target.closest(`[data-action]`);if(!n)return;let r=n.dataset.action;this.dispatchEvent(new CustomEvent(`overflow-action`,{bubbles:!0,composed:!0,detail:{action:r,context:this.#t}})),e.hide()};static show(t){e.hide();let n=document.createElement(`slicc-overflow-menu`);n.#t=t.context;let i=t.items.filter(e=>e.visible!==!1),a=O(`div`,{class:`menu`});for(let e of i){let t=e.destructive?`item destructive`:`item`,n=[];e.icon&&n.push(r(e.icon,{size:14})),n.push(e.label);let i=O(`button`,{class:t,"data-action":e.id},...n);a.appendChild(i)}n.#e.appendChild(a),document.body.appendChild(n),ui=n;let o=t.anchor.getBoundingClientRect(),s=n.getBoundingClientRect(),c=o.bottom+4;c+s.height>window.innerHeight&&(c=o.top-s.height-4);let l=o.right-s.width;l<4&&(l=o.left),n.style.top=`${c}px`,n.style.left=`${l}px`,di=t=>{t.key===`Escape`&&e.hide()},fi=r=>{let i=r.composedPath();!i.includes(n)&&!i.includes(t.anchor)&&e.hide()},document.addEventListener(`keydown`,di),document.addEventListener(`pointerdown`,fi,{capture:!0})}static hide(){ui&&=(ui.remove(),null),di&&=(document.removeEventListener(`keydown`,di),null),fi&&=(document.removeEventListener(`pointerdown`,fi,{capture:!0}),null)}};E(`slicc-overflow-menu`,pi);var mi=k(`
|
|
2996
3034
|
:host { display: none; }
|
|
2997
3035
|
:host([open]) { display: block; }
|
|
2998
3036
|
.overlay {
|
|
@@ -3037,7 +3075,7 @@ slicc-palette-grid .palgrid {
|
|
|
3037
3075
|
@media (prefers-reduced-motion: reduce) {
|
|
3038
3076
|
.overlay, .dialog { transition: none; }
|
|
3039
3077
|
}
|
|
3040
|
-
`);
|
|
3078
|
+
`);E(`slicc-dialog`,class extends HTMLElement{static observedAttributes=[`open`,`heading`,`description`,`no-close-button`];#e;#t;#n;#r;#i;#a;#o=null;#s=e=>{e.key===`Escape`&&this.open&&(e.stopPropagation(),this.#c(`escape`))};constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[mi],this.#r=O(`div`,{class:`title`,part:`title`,id:`slicc-dialog-title`}),this.#i=O(`div`,{class:`desc`,part:`description`}),this.#a=O(`button`,{class:`x`,part:`close`,type:`button`,"aria-label":`Close`},r(`x`,{size:18}));let e=O(`div`,{class:`body`},O(`slot`)),t=O(`div`,{class:`footer`},O(`slot`,{name:`footer`}));this.#n=O(`div`,{class:`dialog`,part:`dialog`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`slicc-dialog-title`,tabindex:`-1`},this.#a,this.#r,this.#i,e,t),this.#t=O(`div`,{class:`overlay`,part:`overlay`},this.#n),this.#e.replaceChildren(this.#t),this.#a.addEventListener(`click`,()=>this.#c(`close-button`)),this.#t.addEventListener(`mousedown`,e=>{e.target===this.#t&&!this.persistent&&this.#c(`backdrop`)})}connectedCallback(){this.#u()}disconnectedCallback(){document.removeEventListener(`keydown`,this.#s,!0)}attributeChangedCallback(e){e===`open`?this.#u():this.#l()}get open(){return this.hasAttribute(`open`)}set open(e){this.toggleAttribute(`open`,e)}get heading(){return this.getAttribute(`heading`)}set heading(e){e==null?this.removeAttribute(`heading`):this.setAttribute(`heading`,e)}get description(){return this.getAttribute(`description`)}set description(e){e==null?this.removeAttribute(`description`):this.setAttribute(`description`,e)}get persistent(){return this.hasAttribute(`persistent`)}set persistent(e){this.toggleAttribute(`persistent`,e)}show(){this.open||=!0}hide(){this.open&&this.#c(`api`)}#c(e){this.open=!1,this.dispatchEvent(new CustomEvent(`slicc-dialog-close`,{detail:{reason:e},bubbles:!0,composed:!0}))}#l(){this.#r.textContent=this.heading??``,this.#r.style.display=this.heading?``:`none`,this.#i.textContent=this.description??``,this.#i.style.display=this.description?``:`none`,this.#a.style.display=this.hasAttribute(`no-close-button`)?`none`:``}#u(){this.#l(),this.open?(this.#o=this.getRootNode().activeElement,document.addEventListener(`keydown`,this.#s,!0),requestAnimationFrame(()=>this.#n.focus())):(document.removeEventListener(`keydown`,this.#s,!0),this.#o?.focus?.(),this.#o=null)}});var hi=`
|
|
3041
3079
|
slicc-camera-dialog slicc-dialog::part(dialog) {
|
|
3042
3080
|
width: min(560px, 92vw);
|
|
3043
3081
|
}
|
|
@@ -3104,7 +3142,7 @@ slicc-camera-dialog .slicc-camera__btn--snap {
|
|
|
3104
3142
|
slicc-camera-dialog .slicc-camera__btn--snap:hover {
|
|
3105
3143
|
background: color-mix(in srgb, var(--ink) 85%, var(--canvas));
|
|
3106
3144
|
}
|
|
3107
|
-
`,
|
|
3145
|
+
`,gi=`slicc-camera-dialog-style`;function _i(e){if(e.getElementById(gi))return;let t=e.createElement(`style`);t.id=gi,t.textContent=hi,(e.head??e.documentElement).appendChild(t)}var vi=`Take a photo`;E(`slicc-camera-dialog`,class extends HTMLElement{static observedAttributes=[`heading`,`preferred-device`];media=null;#e;#t;#n;#r;#i=!1;#a=null;#o=null;connectedCallback(){_i(this.ownerDocument),this.#h()}disconnectedCallback(){this.#m()}attributeChangedCallback(e){e===`heading`&&this.#i&&this.#e.setAttribute(`heading`,this.heading)}get heading(){return this.getAttribute(`heading`)??vi}set heading(e){e==null?this.removeAttribute(`heading`):this.setAttribute(`heading`,e)}get preferredDevice(){return this.getAttribute(`preferred-device`)}set preferredDevice(e){e==null?this.removeAttribute(`preferred-device`):this.setAttribute(`preferred-device`,e)}#s(){return this.media??(typeof navigator<`u`?navigator.mediaDevices:null)??null}async open(){this.#h();let e=this.#s();if(!e)return null;try{this.#a=await this.#c(e,this.preferredDevice)}catch{return null}return this.#l(this.#a),await this.#u(e),this.#e.setAttribute(`heading`,this.heading),this.#e.show?.(),new Promise(e=>{this.#o=e})}async#c(e,t){if(t)try{return await e.getUserMedia({video:{deviceId:{exact:t}}})}catch{}return e.getUserMedia({video:!0})}#l(e){this.#t.srcObject=e,this.#t.play?.()?.catch(()=>void 0);let t=e.getVideoTracks()[0]?.getSettings?.().facingMode;this.#t.toggleAttribute(`data-mirrored`,t!==`environment`)}async#u(e){let t=[];try{t=(await e.enumerateDevices()).filter(e=>e.kind===`videoinput`)}catch{t=[]}this.#n.replaceChildren(...t.map((e,t)=>O(`option`,{value:e.deviceId},e.label||`Camera ${t+1}`)));let n=this.#a?.getVideoTracks()[0]?.getSettings?.().deviceId;n&&(this.#n.value=n),this.#n.toggleAttribute(`hidden`,t.length<2)}async#d(e){let t=this.#s();if(t){this.#r.textContent=``;try{let n=await t.getUserMedia({video:{deviceId:{exact:e}}});this.#m(),this.#a=n,this.#l(n),this.dispatchEvent(new CustomEvent(`slicc-camera-device-change`,{detail:{deviceId:e},bubbles:!0,composed:!0}))}catch{this.#r.textContent=`Could not switch camera — keeping the current one.`}}}#f(){let e=this.ownerDocument.createElement(`canvas`);if(e.width=this.#t.videoWidth,e.height=this.#t.videoHeight,e.width===0||e.height===0){this.#r.textContent=`No frame yet — give the camera a moment.`;return}e.getContext(`2d`)?.drawImage(this.#t,0,0);let t=e.toDataURL(`image/png`);this.dispatchEvent(new CustomEvent(`slicc-camera-capture`,{detail:{dataUrl:t},bubbles:!0,composed:!0})),this.#p(t)}#p(e){this.#m();let t=this.#o;this.#o=null,this.#e.hide?.(),t?.(e)}#m(){for(let e of this.#a?.getTracks()??[])e.stop();this.#a=null,this.#t&&(this.#t.srcObject=null)}#h(){if(this.#i)return;this.#i=!0,this.#t=O(`video`,{class:`slicc-camera__video`,part:`video`,autoplay:!0,muted:!0,playsinline:!0}),this.#n=O(`select`,{class:`slicc-camera__select`,part:`picker`,"aria-label":`Camera`,hidden:!0}),this.#n.addEventListener(`change`,()=>{this.#d(this.#n.value)}),this.#r=O(`div`,{class:`slicc-camera__status`});let e=O(`button`,{type:`button`,class:`slicc-camera__btn`,part:`cancel`,slot:`footer`},`Cancel`);e.addEventListener(`click`,()=>this.#p(null));let t=O(`button`,{type:`button`,class:`slicc-camera__btn slicc-camera__btn--snap`,part:`snap`,slot:`footer`},r(`camera`,{size:14}),` Snap`);t.addEventListener(`click`,()=>this.#f());let n=O(`div`,{class:`slicc-camera__body`},this.#t,this.#n,this.#r);this.#e=this.ownerDocument.createElement(`slicc-dialog`),this.#e.setAttribute(`heading`,this.heading),this.#e.append(n,e,t),this.#e.addEventListener(`slicc-dialog-close`,()=>{this.#o&&this.#p(null)}),this.append(this.#e)}});var yi={debug(e,t){t===void 0?console.debug(`[slicc-permissions] ${e}`):console.debug(`[slicc-permissions] ${e}`,t)},error(e,t){t===void 0?console.error(`[slicc-permissions] ${e}`):console.error(`[slicc-permissions] ${e}`,t)}},bi=new Set([`microphone`,`camera`]);function xi(e){return typeof navigator>`u`||!navigator.permissions?.query?Promise.resolve(`prompt`):navigator.permissions.query({name:e}).then(e=>e.state)}var Si=`
|
|
3108
3146
|
slicc-permissions {
|
|
3109
3147
|
/* Invisible host by default — only the drop overlay paints, and only
|
|
3110
3148
|
while a folder drag is in flight. Hosts can give the element a fixed
|
|
@@ -3275,7 +3313,7 @@ slicc-permissions .slicc-permissions__prompt-btn:disabled {
|
|
|
3275
3313
|
transform: translateX(-50%) translateY(0);
|
|
3276
3314
|
}
|
|
3277
3315
|
}
|
|
3278
|
-
`,
|
|
3316
|
+
`,Ci=`slicc-permissions-style`;function wi(e){if(e.getElementById(Ci))return;let t=e.createElement(`style`);t.id=Ci,t.textContent=Si,(e.head??e.documentElement).appendChild(t)}function Ti(e){let t=e.dataTransfer?.types;if(!t)return!1;for(let e=0;e<t.length;e++)if(t[e]===`Files`)return!0;return!1}var Ei=class extends HTMLElement{providers={};permissionQuery=null;#e;#t=!1;#n=0;#r=null;connectedCallback(){wi(this.ownerDocument),this.#C();let e=this.ownerDocument;e.addEventListener(`dragenter`,this.#v),e.addEventListener(`dragover`,this.#y),e.addEventListener(`dragleave`,this.#b),e.addEventListener(`drop`,this.#x)}disconnectedCallback(){let e=this.ownerDocument;e.removeEventListener(`dragenter`,this.#v),e.removeEventListener(`dragover`,this.#y),e.removeEventListener(`dragleave`,this.#b),e.removeEventListener(`drop`,this.#x),this.#n=0,this.removeAttribute(`data-dropping`),this.#r&&this.#r.cancel()}async request(e,t){switch(e){case`camera`:return this.#o(t);case`microphone`:return this.#s(t);case`screenshare`:return this.#l(t);case`usb`:return this.#u(t);case`hid`:return this.#d(t);case`serial`:return this.#f(t);case`filesystem`:return this.#p();case`popup`:return this.#m(t);default:return null}}async prompt(e){if(!e.kinds.length)return{status:`granted`,grants:[]};if(e.skipIfGranted){let t=await this.#i(e);if(t)return t}return this.#r&&this.#r.cancel(),new Promise(t=>{this.#w(e,t)})}async#i(e){if(!e.kinds.every(e=>bi.has(e)))return yi.debug(`prompt: showing dialog (a gesture-bound kind was requested)`,{kinds:e.kinds}),null;let t=this.permissionQuery??xi,n;try{n=await Promise.all(e.kinds.map(e=>t(e)))}catch(e){return yi.error(`prompt: permission query threw; showing dialog`,e),null}if(yi.debug(`prompt: queried permission state`,{kinds:e.kinds,states:n}),!n.every(e=>e===`granted`))return yi.debug(`prompt: not all kinds granted; showing dialog`),null;let r=[];for(let t of e.kinds){let n=await this.request(t,e.requestOptions?.[t]);if(!n)return yi.error(`prompt: acquisition failed after granted state`,{kind:t}),{status:`error`,grants:r,reason:`error`};r.push(n)}return yi.debug(`prompt: short-circuited dialog (already granted)`,{kinds:e.kinds}),{status:`granted`,grants:r}}#a(){return this.providers.media??(typeof navigator<`u`?navigator.mediaDevices:null)??null}async#o(e){let t=this.#a();if(!t)return this.#g(`camera`,`unavailable`,`mediaDevices unavailable`);try{let n=await t.getUserMedia(e?.constraints??{video:!0});return this.#h({kind:`camera`,stream:n})}catch(e){return this.#_(`camera`,e)}}async#s(e){let t=this.#a();if(!t)return this.#g(`microphone`,`unavailable`,`mediaDevices unavailable`);try{let n=await t.getUserMedia(e?.constraints??{audio:!0});return this.#h({kind:`microphone`,stream:n})}catch(e){return this.#_(`microphone`,e)}}#c(){if(this.providers.screenshare)return this.providers.screenshare;let e=typeof navigator<`u`?navigator.mediaDevices:void 0;return e&&typeof e.getDisplayMedia==`function`?{getDisplayMedia:t=>e.getDisplayMedia(t)}:null}async#l(e){let t=this.#c();if(!t)return this.#g(`screenshare`,`unavailable`,`getDisplayMedia unavailable`);try{let n=await t.getDisplayMedia(e?.constraints??{video:!0});return this.#h({kind:`screenshare`,stream:n})}catch(e){return this.#_(`screenshare`,e)}}async#u(e){let t=this.providers.usb??globalThis.navigator?.usb??null;if(!t?.requestDevice)return this.#g(`usb`,`unavailable`,`WebUSB unavailable`);try{let n=await t.requestDevice({filters:e?.filters??[]});return n?this.#h({kind:`usb`,device:n}):this.#g(`usb`,`cancelled`)}catch(e){return this.#_(`usb`,e)}}async#d(e){let t=this.providers.hid??globalThis.navigator?.hid??null;if(!t?.requestDevice)return this.#g(`hid`,`unavailable`,`WebHID unavailable`);try{let n=await t.requestDevice({filters:e?.filters??[]}),r=Array.isArray(n)?n:n?[n]:[];return r.length===0?this.#g(`hid`,`cancelled`):this.#h({kind:`hid`,device:r[0],devices:r})}catch(e){return this.#_(`hid`,e)}}async#f(e){let t=this.providers.serial??globalThis.navigator?.serial??null;if(!t?.requestPort)return this.#g(`serial`,`unavailable`,`Web Serial unavailable`);try{let n=await t.requestPort(e?.filters?.length?{filters:e.filters}:{});return n?this.#h({kind:`serial`,port:n}):this.#g(`serial`,`cancelled`)}catch(e){return this.#_(`serial`,e)}}async#p(){let e=this.providers.filesystem??(typeof window<`u`&&`showDirectoryPicker`in window&&window||null);if(!e?.showDirectoryPicker)return this.#g(`filesystem`,`unavailable`,`showDirectoryPicker unavailable`);try{let t=await e.showDirectoryPicker({mode:`readwrite`});return this.#h({kind:`filesystem`,handle:t,source:`picker`,permission:`granted`})}catch(e){return this.#_(`filesystem`,e)}}#m(e){let t=e?.url;if(!t)return this.#g(`popup`,`error`,`popup request missing url`);let n=e?.features??`width=500,height=700,popup=yes`,r=this.providers.popup??(typeof window<`u`?{open:(e,t)=>window.open(e,`_blank`,t)}:null);if(!r)return this.#g(`popup`,`unavailable`,`window.open unavailable`);let i;try{i=r.open(t,n)}catch(e){return this.#_(`popup`,e)}return i?this.#h({kind:`popup`,window:i}):this.#g(`popup`,`error`,`window.open returned null (popup blocked?)`)}#h(e){return this.dispatchEvent(new CustomEvent(`slicc-permission-grant`,{detail:e,bubbles:!0,composed:!0})),e}#g(e,t,n){return this.dispatchEvent(new CustomEvent(`slicc-permission-deny`,{detail:{kind:e,reason:t,message:n},bubbles:!0,composed:!0})),null}#_(e,t){return t instanceof Error&&(t.name===`AbortError`||t.name===`NotFoundError`)?this.#g(e,`cancelled`):this.#g(e,`error`,t instanceof Error?t.message:String(t))}#v=e=>{Ti(e)&&(e.preventDefault(),this.#n++,this.setAttribute(`data-dropping`,``))};#y=e=>{Ti(e)&&e.preventDefault()};#b=e=>{Ti(e)&&(this.#n=Math.max(0,this.#n-1),this.#n===0&&this.removeAttribute(`data-dropping`))};#x=e=>{if(!Ti(e))return;e.preventDefault(),this.#n=0,this.removeAttribute(`data-dropping`);let t=e.dataTransfer?.items;if(!t?.length)return;let n=[];for(let e=0;e<t.length;e++){let r=t[e];r.kind!==`file`||typeof r.getAsFileSystemHandle!=`function`||n.push(r.getAsFileSystemHandle())}n.length!==0&&this.#S(n)};async#S(e){let t;try{t=await Promise.all(e)}catch(e){this.#g(`filesystem`,`error`,e instanceof Error?e.message:String(e));return}let n=t.find(e=>e?.kind===`directory`);if(!n){this.#g(`filesystem`,`cancelled`,`no directory in drop`);return}let r=n,i;if(r.requestPermission)try{i=await r.requestPermission({mode:`readwrite`})}catch(e){this.#g(`filesystem`,`error`,e instanceof Error?e.message:String(e));return}else i=`granted`;if(i!==`granted`){this.#g(`filesystem`,`cancelled`,`permission ${i}`);return}this.#h({kind:`filesystem`,handle:n,source:`drop`,permission:i})}#C(){if(this.#t)return;this.#t=!0;let e=O(`div`,{class:`slicc-permissions__drop-inner`},r(`folder-up`,{size:32}),O(`div`,null,`Drop a folder to mount it (read-write)`));this.#e=O(`div`,{class:`slicc-permissions__drop`,part:`drop`,"aria-hidden":`true`},e),this.append(this.#e)}#w(e,t){let n=e.heading??ki(e.kinds),i=e.grantLabel??`Allow`,a=e.cancelLabel??`Cancel`,o=`slicc-permissions__heading-${Math.random().toString(36).slice(2,8)}`,s=`slicc-permissions__desc-${Math.random().toString(36).slice(2,8)}`,c=O(`button`,{type:`button`,class:`slicc-permissions__prompt-btn`,"data-variant":`ghost`,part:`prompt-cancel`},a),l=O(`button`,{type:`button`,class:`slicc-permissions__prompt-btn`,"data-variant":`primary`,part:`prompt-grant`},i),u=O(`div`,{class:`slicc-permissions__prompt-icons`,"aria-hidden":`true`},...e.kinds.map(e=>O(`span`,{class:`slicc-permissions__prompt-icon`},r(Di(e),{size:22})))),d=O(`div`,{class:`slicc-permissions__prompt`,part:`prompt`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":o,"aria-describedby":s,tabindex:`-1`,popover:`manual`},u,O(`h2`,{class:`slicc-permissions__prompt-heading`,id:o},n),O(`p`,{class:`slicc-permissions__prompt-desc`,id:s},e.description),O(`div`,{class:`slicc-permissions__prompt-actions`},c,l));this.append(d);let f=d;if(typeof f.showPopover==`function`)try{f.showPopover()}catch{}let p=!1,m=this.ownerDocument.activeElement??null,h=()=>{if(d.removeEventListener(`keydown`,ee),d.remove(),m&&typeof m.focus==`function`)try{m.focus()}catch{}this.#r=null},g=(n,r)=>{if(!p){p=!0;for(let t of e.kinds)this.#g(t,n,r);h(),t({status:`cancelled`,grants:[],reason:n,message:r})}},ee=e=>{if(e.key===`Escape`){e.preventDefault(),g(`cancelled`);return}if(e.key===`Tab`){let t=[c,l],n=this.ownerDocument.activeElement,r=t.indexOf(n);if(r===-1){t[0].focus(),e.preventDefault();return}(e.shiftKey?t[(r-1+t.length)%t.length]:t[(r+1)%t.length]).focus(),e.preventDefault()}};c.addEventListener(`click`,()=>g(`cancelled`)),l.addEventListener(`click`,async()=>{if(p)return;p=!0,l.disabled=!0,c.disabled=!0;let n=[],r=null;for(let t of e.kinds){let i=await this.request(t,e.requestOptions?.[t]);if(i)n.push(i);else{r={kind:t,reason:`cancelled`};break}}let i=r?e.kinds.indexOf(r.kind):-1;if(r&&i>=0)for(let t=i+1;t<e.kinds.length;t++)this.#g(e.kinds[t],`cancelled`);h(),t(r?{status:`cancelled`,grants:n,reason:`cancelled`}:{status:`granted`,grants:n})}),d.addEventListener(`keydown`,ee),this.#r={cancel:()=>g(`cancelled`)},requestAnimationFrame(()=>{d.setAttribute(`data-open`,``),l.focus()})}};function Di(e){switch(e){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 Oi(e){switch(e){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 ki(e){if(e.length===1)return`Allow access to your ${Oi(e[0])}?`;let t=e.map(Oi),n=t.pop();return`Allow access to your ${t.join(`, `)} and ${n}?`}E(`slicc-permissions`,Ei);var Ai=new Set([`top`,`bottom`,`left`,`right`]),ji=k(`
|
|
3279
3317
|
:host { position: relative; display: inline-flex; }
|
|
3280
3318
|
:host([hidden]) { display: none; }
|
|
3281
3319
|
.tip {
|
|
@@ -3300,7 +3338,7 @@ slicc-permissions .slicc-permissions__prompt-btn:disabled {
|
|
|
3300
3338
|
:host(:hover) .tip[data-p="right"], :host(:focus-within) .tip[data-p="right"], :host([open]) .tip[data-p="right"] { transform: translate(0, -50%); }
|
|
3301
3339
|
.tip:empty { display: none; }
|
|
3302
3340
|
@media (prefers-reduced-motion: reduce) { .tip { transition: none; } }
|
|
3303
|
-
`);
|
|
3341
|
+
`);E(`slicc-tooltip`,class extends HTMLElement{static observedAttributes=[`label`,`placement`];#e;#t;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[ji],this.#t=O(`span`,{class:`tip`,part:`tip`,role:`tooltip`,"aria-hidden":`true`}),this.#e.replaceChildren(O(`slot`),this.#t)}connectedCallback(){this.#n()}attributeChangedCallback(){this.#n()}get label(){return this.getAttribute(`label`)??``}set label(e){e==null?this.removeAttribute(`label`):this.setAttribute(`label`,e)}get placement(){let e=this.getAttribute(`placement`);return e&&Ai.has(e)?e:`top`}set placement(e){this.setAttribute(`placement`,e)}#n(){this.#t.textContent=this.label,this.#t.setAttribute(`data-p`,this.placement)}});var Mi=18,Ni=16,Pi=50,Fi=85,Ii=2.2,Li={cx:55,cy:50,r:38},Ri={cx:145,cy:50,r:38},zi=`http://www.w3.org/2000/svg`;function I(e,t,...n){let r=document.createElementNS(zi,e);if(t)for(let[e,n]of Object.entries(t))r.setAttribute(e,String(n));for(let e of n)r.appendChild(e);return r}var Bi={cone:{vb:`70 330 440 570`,eyes:{top:-18.5,left:17,width:70,height:44},zoom:3,glyph:96},scoop:{vb:`0 0 580 470`,eyes:{top:30,left:15,width:70,height:45},zoom:2.65,glyph:96}},Vi={cone:`#D2691E`,scoop:`#FFB6C1`};function Hi(e){return e<=Pi?1:e>=Fi?Ii:1+(e-Pi)/(Fi-Pi)*(Ii-1)}function Ui(e){let t=e.replace(`#`,``);t.length===3&&(t=t.split(``).map(e=>e+e).join(``));let n=Number.parseInt(t,16);return{r:n>>16&255,g:n>>8&255,b:n&255}}function Wi(e,t,n){return`#${[e,t,n].map(e=>Math.max(0,Math.min(255,Math.round(e))).toString(16).padStart(2,`0`)).join(``)}`}function Gi(e,t){let{r:n,g:r,b:i}=Ui(e),a=t<0?0:255,o=Math.abs(t);return Wi(n+(a-n)*o,r+(a-r)*o,i+(a-i)*o)}function Ki(e,t,n){return[I(`path`,{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`,fill:e,stroke:t,"stroke-linejoin":`round`,"stroke-width":20}),I(`path`,{d:`M261.93,482.48h0c15.03-15.03,4.46-40.72-16.79-40.83h0c-21.37-.11-32.14,25.72-17.03,40.83h0c9.34,9.34,24.48,9.34,33.82,0Z`,fill:n}),I(`path`,{d:`M384.85,527.49l-51.82,51.82c-2.24,2.24-2.24,5.86,0,8.1l55.71,55.71c2.24,2.24,5.86,2.24,8.1,0h0c.62-.62,1.08-1.36,1.37-2.19l26.52-77.11c.71-2.07.18-4.36-1.37-5.91l-30.41-30.41c-2.24-2.24-5.86-2.24-8.1,0Z`,fill:n}),I(`rect`,{x:274.59,y:463.59,width:84.73,height:95.66,rx:42.36,ry:42.36,transform:`translate(-268.79 373.91) rotate(-45)`,fill:n}),I(`rect`,{x:291.06,y:603.84,width:72.24,height:90.24,rx:36.12,ry:36.12,transform:`translate(-363.06 421.43) rotate(-45)`,fill:n}),I(`path`,{d:`M371.7,684.58l-25.94,25.94c-2.24,2.24-2.24,5.86,0,8.1l12.67,12.67c2.99,2.99,8.09,1.82,9.46-2.19l13.28-38.61c1.97-5.74-5.17-10.2-9.46-5.91Z`,fill:n}),I(`path`,{d:`M159.42,564.14l2.73,6.83c1.52,3.82,6.46,4.83,9.37,1.93l2.05-2.05c2.24-2.24,2.24-5.86,0-8.1l-4.78-4.78c-4.4-4.4-11.67.39-9.37,6.17Z`,fill:n}),I(`path`,{d:`M243.92,633.11l-48.65-48.65c-5.24-5.24-13.74-5.24-18.99,0h0c-3.8,3.8-4.97,9.49-2.98,14.47l27.77,69.54c3.58,8.95,15.14,11.33,21.96,4.51l20.89-20.89c5.24-5.24,5.24-13.74,0-18.99Z`,fill:n}),I(`path`,{d:`M211.32,533.1h0c14.11-14.11,14.11-36.98,0-51.08l-34.94-34.94c-.72-.72-.72-1.89,0-2.62h0c1.16-1.16.34-3.15-1.3-3.16l-11.23-.06c-25.62-.13-43.23,25.72-33.73,49.51l5.37,13.45c1.82,4.55,4.54,8.68,8,12.15l16.74,16.74c14.11,14.11,36.98,14.11,51.08,0Z`,fill:n}),I(`path`,{d:`M263.74,792.53h0c-5.69,5.69-7.45,14.23-4.46,21.71l22.5,56.36c6.92,17.34,31.68,16.74,37.75-.92l8.66-25.2c2.5-7.28.64-15.35-4.8-20.79l-31.17-31.17c-7.87-7.87-20.62-7.87-28.48,0Z`,fill:n}),I(`path`,{d:`M392.94,503.07l40.81-40.81c2.24-2.24,5.86-2.24,8.1,0l.06.06c2.24,2.24,2.24,5.86,0,8.1l-40.81,40.81c-2.24,2.24-2.24,5.86,0,8.1l22.48,22.48c2.99,2.99,8.09,1.82,9.46-2.19l30.71-89.32c1.27-3.71-1.47-7.57-5.39-7.59l-120.63-.6c-5.11-.03-7.69,6.16-4.08,9.77l51.18,51.18c2.24,2.24,5.86,2.24,8.1,0Z`,fill:n}),I(`rect`,{x:217.18,y:527.25,width:72.24,height:95.66,rx:36.12,ry:36.12,transform:`translate(-332.45 347.55) rotate(-45)`,fill:n}),I(`path`,{d:`M350.28,739.46h0c-9.24-9.24-24.22-9.24-33.46,0l-13.94,13.94c-9.24,9.24-9.24,24.22,0,33.46l6.81,6.81c12.37,12.37,33.42,7.5,39.1-9.04l7.13-20.75c2.94-8.55.75-18.03-5.64-24.42Z`,fill:n}),I(`path`,{d:`M234.18,749.12l13.2,33.06c1.52,3.82,6.46,4.83,9.37,1.93l9.93-9.93c2.24-2.24,2.24-5.86,0-8.1l-23.13-23.13c-4.4-4.4-11.67.39-9.37,6.17Z`,fill:n}),I(`rect`,{x:236.26,y:661.25,width:67.04,height:90.24,rx:33.52,ry:33.52,transform:`translate(-420.46 397.65) rotate(-45)`,fill:n}),I(`ellipse`,{cx:288.37,cy:404.38,rx:182.34,ry:67.01,fill:e,stroke:t,"stroke-miterlimit":10,"stroke-width":20})]}function qi(e,t){return[I(`path`,{d:`M566.75,340.67c0-29.85-12.97-56.87-33.96-76.47,4.8-9.98,7.44-20.71,7.44-31.9,0-38.29-30.62-71.33-74.92-86.77.33-3.07.51-6.17.51-9.3,0-69.72-84.29-126.24-188.26-126.24s-188.26,56.52-188.26,126.24c0,4,.29,7.95.83,11.86-34.94,15.4-58.48,44.25-58.48,77.34,0,18.21,7.15,35.15,19.39,49.26-25.1,19.88-41.05,49.47-41.05,82.54,0,59.85,52.15,108.37,116.49,108.37,10.83,0,21.3-1.4,31.26-3.98,31.42,41.91,83.55,69.34,142.55,69.34,64.73,0,121.2-33,151.11-81.94,63.8-.57,115.34-48.85,115.34-108.34Z`,fill:e,stroke:t,"stroke-width":20})]}function Ji(e,t,n,r,i){return[I(`g`,{class:`eye-blink eye-${r}`},I(`circle`,{cx:e,cy:t,r:n,fill:`#fff`,stroke:`#000`,"stroke-width":4}),I(`g`,{class:`pupil pupil-${r}`},I(`circle`,{cx:e,cy:t,r:i,fill:`#000`}),I(`circle`,{cx:e-i*.3,cy:t-i*.35,r:i*.4,fill:`#fff`})))]}function Yi(e,t,n){return[I(`circle`,{cx:e,cy:t,r:n,fill:`#fff`,stroke:`#000`,"stroke-width":4}),I(`line`,{x1:e-15,y1:t-15,x2:e+15,y2:t+15,stroke:`#000`,"stroke-width":8,"stroke-linecap":`round`}),I(`line`,{x1:e+15,y1:t-15,x2:e-15,y2:t+15,stroke:`#000`,"stroke-width":8,"stroke-linecap":`round`})]}function Xi(e,t){if(e===`none`)return null;let n=Li,r=Ri;return I(`svg`,{class:`eyes-svg`,viewBox:`0 0 200 100`,width:`100%`,height:`100%`,preserveAspectRatio:`xMidYMid meet`},...e===`dead`?[...Yi(n.cx,n.cy,n.r),...Yi(r.cx,r.cy,r.r)]:[...Ji(n.cx,n.cy,n.r,`l`,t),...Ji(r.cx,r.cy,r.r,`r`,t)])}function Zi(e,t,n,r,i,a){let o=r-t,s=i-n,c=Math.hypot(o,s),l=Math.min(c,a),u=c>0?o/c*l:0,d=c>0?s/c*l:0;e.setAttribute(`transform`,`translate(${u},${d})`)}var Qi=k(`
|
|
3304
3342
|
:host{position:relative;display:inline-block;--pill-w:190px;--label:#eef1f6;--icon-tint:color-mix(in oklab,var(--accent) 22%,transparent);}
|
|
3305
3343
|
@media (prefers-color-scheme: light){:host(:not([theme="dark"])){--label:#1b2030;--icon-tint:color-mix(in oklab,var(--accent) 30%,#fff);}}
|
|
3306
3344
|
/* The library's class-based dark scope (body.dark / .dark / [data-theme=dark])
|
|
@@ -3347,7 +3385,7 @@ slicc-permissions .slicc-permissions__prompt-btn:disabled {
|
|
|
3347
3385
|
:host([compact]:hover) .tip,:host([compact]:focus-within) .tip{opacity:1;transform:translateX(-50%);}
|
|
3348
3386
|
@media (max-width:560px){ :host(:hover) .tip,:host(:focus-within) .tip{opacity:1;transform:translateX(-50%);} }
|
|
3349
3387
|
@media (prefers-reduced-motion: reduce){ .tip{transition:none;} }
|
|
3350
|
-
`);
|
|
3388
|
+
`);E(`slicc-pill`,class extends HTMLElement{static observedAttributes=[`type`,`color`,`eyes`,`active`,`label`,`pupil`,`fill`,`theme`];#e;#t=null;#n=null;#r=null;#i=null;#a=Ni;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[Qi]}connectedCallback(){this.#o(),this.#s()}disconnectedCallback(){this.#c()}attributeChangedCallback(){this.isConnected&&(this.#o(),this.#s())}get type(){return this.getAttribute(`type`)===`cone`?`cone`:`scoop`}set type(e){this.setAttribute(`type`,e===`cone`?`cone`:`scoop`)}get color(){return this.getAttribute(`color`)}set color(e){e==null?this.removeAttribute(`color`):this.setAttribute(`color`,e)}get eyeState(){let e=this.getAttribute(`eyes`);return e===`none`||e===`dead`?e:`open`}set eyeState(e){this.setAttribute(`eyes`,e)}get active(){return this.hasAttribute(`active`)}set active(e){this.toggleAttribute(`active`,e)}get compact(){return this.hasAttribute(`compact`)}set compact(e){this.toggleAttribute(`compact`,e)}get label(){return this.getAttribute(`label`)}set label(e){e==null?this.removeAttribute(`label`):this.setAttribute(`label`,e)}get theme(){let e=this.getAttribute(`theme`);return e===`light`||e===`dark`?e:null}set theme(e){e==null?this.removeAttribute(`theme`):this.setAttribute(`theme`,e)}get pupilScale(){let e=Number.parseFloat(this.getAttribute(`pupil`)??``);if(Number.isFinite(e))return Math.max(.3,Math.min(2.4,e));let t=Number.parseFloat(this.getAttribute(`fill`)??``);return Number.isFinite(t)?Hi(Math.max(0,Math.min(100,t))):1}#o(){let e=this.type,t=Bi[e],n=this.color??Vi[e],r=this.active,i=this.label,a=e===`cone`?Ki(n,Gi(n,-.38),Gi(n,.3)):qi(n,Gi(n,-.32)),o=t.eyes,s=(o.left+o.width/2)/100,c=(o.top+o.height/2)/100,l=((.5-t.zoom*s)*100).toFixed(2),u=((.5-t.zoom*c)*100).toFixed(2),d=o.left/100,f=(o.left+o.width)/100,p=o.top/100,m=(o.top+o.height)/100,h=Math.min(0,d),g=Math.max(1,f),ee=Math.min(0,p),te=Math.max(1,m),_=Math.min(1,1/Math.max(g-h,te-ee)),v=((.5-_*(h+g)/2)*100).toFixed(2),y=((.5-_*(ee+te)/2)*100).toFixed(2),ne=Mi*this.pupilScale;this.#a=Math.max(2,Math.min(Ni,Li.r-ne-4));let re=I(`svg`,{class:`glyph`,viewBox:t.vb,preserveAspectRatio:`xMidYMid meet`,style:`--g:${t.glyph}%`},...a),ie=Xi(this.eyeState,ne),ae=O(`span`,{class:`eyes`,style:`top:${o.top}%;left:${o.left}%;width:${o.width}%;height:${o.height}%`});ie&&ae.append(ie);let oe=O(`span`,{class:`icon`,part:`icon`},O(`span`,{class:`icon-inner`,style:`--tx:${l}%;--ty:${u}%;--zoom:${t.zoom};--ox:${v}%;--oy:${y}%;--ozoom:${_.toFixed(4)}`},re,ae)),b=O(`span`,{class:`label`,part:`label`},i??O(`slot`)),se=O(`button`,{class:`pill ${r?`active`:``}`,part:`pill`,style:`--accent:${n}`,"aria-label":i||!1},oe,b),x=i?O(`span`,{class:`tip`,part:`tip`,"aria-hidden":`true`},i):null;this.#e.replaceChildren(se,...x?[x]:[]),this.#n=this.#e.querySelector(`.pupil-l`),this.#r=this.#e.querySelector(`.pupil-r`),this.#i=this.#e.querySelector(`.eyes-svg`)}#s(){let e=this.eyeState===`open`&&this.type===`cone`;e&&!this.#t?(this.#t=e=>this.#l(e),document.addEventListener(`mousemove`,this.#t)):!e&&this.#t&&this.#c()}#c(){this.#t&&=(document.removeEventListener(`mousemove`,this.#t),null)}#l(e){if(!this.#i||!this.#n||!this.#r)return;let t=this.#i.getBoundingClientRect();if(!t.width||!t.height)return;let n=(e.clientX-t.left)*(200/t.width),r=(e.clientY-t.top)*(100/t.height);Zi(this.#n,Li.cx,Li.cy,n,r,this.#a),Zi(this.#r,Ri.cx,Ri.cy,n,r,this.#a)}});var $i=k(`
|
|
3351
3389
|
:host {
|
|
3352
3390
|
display: inline-grid;
|
|
3353
3391
|
place-items: center;
|
|
@@ -3394,7 +3432,7 @@ slicc-permissions .slicc-permissions__prompt-btn:disabled {
|
|
|
3394
3432
|
object-fit: cover;
|
|
3395
3433
|
display: block;
|
|
3396
3434
|
}
|
|
3397
|
-
`),
|
|
3435
|
+
`),ea=class extends HTMLElement{static observedAttributes=[`initials`,`name`,`src`,`email`,`size`,`label`];#e;#t=0;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[$i],this.addEventListener(`click`,this.#i),this.addEventListener(`keydown`,this.#a)}connectedCallback(){this.hasAttribute(`role`)||this.setAttribute(`role`,`button`),this.hasAttribute(`tabindex`)||this.setAttribute(`tabindex`,`0`),this.#o()}disconnectedCallback(){this.#t++}attributeChangedCallback(e,t,n){e===`size`&&this.#r(n),this.isConnected&&this.#o()}get initials(){return this.getAttribute(`initials`)}set initials(e){e==null?this.removeAttribute(`initials`):this.setAttribute(`initials`,e)}get name(){return this.getAttribute(`name`)}set name(e){e==null?this.removeAttribute(`name`):this.setAttribute(`name`,e)}get src(){return this.getAttribute(`src`)}set src(e){e==null?this.removeAttribute(`src`):this.setAttribute(`src`,e)}get email(){return this.getAttribute(`email`)}set email(e){e==null?this.removeAttribute(`email`):this.setAttribute(`email`,e)}get size(){return this.getAttribute(`size`)}set size(e){e==null?this.removeAttribute(`size`):this.setAttribute(`size`,e)}get label(){return this.getAttribute(`label`)}set label(e){e==null?this.removeAttribute(`label`):this.setAttribute(`label`,e)}get resolvedInitials(){let e=this.initials;return e!=null&&e.trim()!==``?e.trim().slice(0,2).toUpperCase():na(this.name)||`?`}async gravatarUrl(e=this.email){let t=e?.trim().toLowerCase();return t?`https://www.gravatar.com/avatar/${await ta(t)}?s=${this.#n()}&d=404`:null}#n(){let e=this.getBoundingClientRect().width;return Math.max(1,Math.round((e>0?e:30)*2))}#r(e){e==null||e.trim()===``?this.style.removeProperty(`--avatar-size`):this.style.setProperty(`--avatar-size`,e)}#i=()=>{this.dispatchEvent(new CustomEvent(`slicc-avatar-click`,{bubbles:!0,composed:!0}))};#a=e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),this.click())};#o(){let e=++this.#t,t=this.src,n=this.email,r=this.resolvedInitials,i=this.label??this.name??(r===`?`?`Account`:r);this.setAttribute(`aria-label`,i);let a=[O(`span`,{class:`ini`,part:`initials`},r)];if(t){let n=O(`img`,{class:`img`,part:`image`,src:t,alt:i});n.addEventListener(`load`,()=>{e===this.#t&&this.#e.querySelector(`.me`)?.classList.add(`has-img`)}),n.addEventListener(`error`,()=>{e===this.#t&&(n.remove(),this.#e.querySelector(`.me`)?.classList.remove(`has-img`))}),a.push(n)}let o=O(`div`,{class:`me`,part:`avatar`},O(`slot`,null,...a));this.#e.replaceChildren(o),!t&&n&&this.#s(n,e)}#s(e,t){this.gravatarUrl(e).then(e=>{if(!e||t!==this.#t)return;let n=new Image;n.onload=()=>{if(t!==this.#t||!this.isConnected)return;let n=this.#e.querySelector(`.me`);n&&(n.style.backgroundImage=`url("${e}")`,n.classList.add(`has-img`))},n.src=e}).catch(()=>{})}};async function ta(e){let t=new TextEncoder().encode(e),n=await crypto.subtle.digest(`SHA-256`,t);return Array.from(new Uint8Array(n)).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function na(e){if(!e)return``;let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?``:t.length===1?t[0].slice(0,2).toUpperCase():(t[0][0]+t[t.length-1][0]).toUpperCase()}E(`slicc-avatar`,ea);var ra=k(`
|
|
3398
3436
|
:host { display: inline-flex; flex: 0 0 auto; }
|
|
3399
3437
|
:host([hidden]) { display: none; }
|
|
3400
3438
|
.col {
|
|
@@ -3415,7 +3453,7 @@ slicc-permissions .slicc-permissions__prompt-btn:disabled {
|
|
|
3415
3453
|
.col:hover { background: var(--ghost); color: var(--ink); }
|
|
3416
3454
|
.icon { display: inline-flex; place-items: center; pointer-events: none; }
|
|
3417
3455
|
.icon svg { display: block; }
|
|
3418
|
-
`),
|
|
3456
|
+
`),ia=`panel-right-close`,aa=`Collapse`,oa=16;E(`slicc-collapse-btn`,class extends HTMLElement{static observedAttributes=[`label`,`icon`];#e;#t=null;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[ra]}connectedCallback(){this.#n()}attributeChangedCallback(){this.isConnected&&this.#n()}get label(){return this.getAttribute(`label`)??aa}set label(e){e==null?this.removeAttribute(`label`):this.setAttribute(`label`,e)}get icon(){return this.getAttribute(`icon`)??ia}set icon(e){e==null?this.removeAttribute(`icon`):this.setAttribute(`icon`,e)}#n(){let e=this.label,t=r(this.icon,{size:oa,part:`icon`}),n=O(`button`,{class:`col`,part:`button`,type:`button`,"aria-label":e,title:e},O(`slot`,null,O(`span`,{class:`icon`},t)));n.addEventListener(`click`,this.#r),this.#t=n,this.#e.replaceChildren(n)}#r=()=>{this.dispatchEvent(new CustomEvent(`collapse`,{bubbles:!0,composed:!0}))}});function sa(e){return e.replace(`claude-`,``)}function ca(e){return e==null||e===0?``:e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(0)}K`:String(e)}var la=k(`
|
|
3419
3457
|
:host {
|
|
3420
3458
|
position: absolute;
|
|
3421
3459
|
top: calc(100% + 8px);
|
|
@@ -3527,7 +3565,7 @@ slicc-permissions .slicc-permissions__prompt-btn:disabled {
|
|
|
3527
3565
|
font-variant-numeric: tabular-nums;
|
|
3528
3566
|
color: var(--ink);
|
|
3529
3567
|
}
|
|
3530
|
-
`);
|
|
3568
|
+
`);E(`slicc-cost-overlay`,class extends HTMLElement{static observedAttributes=[`open`];#e;#t=[];#n=[];constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[la]}connectedCallback(){this.#r()}attributeChangedCallback(){this.isConnected&&this.#r()}get open(){return this.hasAttribute(`open`)}set open(e){this.toggleAttribute(`open`,!!e)}get models(){return this.#t}set models(e){this.#t=e,this.isConnected&&this.#r()}get scoops(){return this.#n}set scoops(e){this.#n=e,this.isConnected&&this.#r()}#r(){let e=[];if(this.#t.length>0){let t=this.#t.map(e=>{let t=ca(e.tokens);return O(`div`,{class:`model-row`},O(`span`,{class:`model-name`},sa(e.model)),t?O(`span`,{class:`model-tokens`},t):!1,O(`span`,{class:`model-cost`},`$${e.cost.toFixed(2)}`))});e.push(O(`div`,{class:`section section--models`},O(`div`,{class:`section-title`},`BY MODEL`),...t))}if(this.#n.length>0){let t=this.#n.map(e=>O(`div`,{class:`scoop-row`},O(`span`,{class:`scoop-name`},e.name),O(`span`,{class:`scoop-cost`},`$${e.cost.toFixed(2)}`)));e.push(O(`div`,{class:`section section--scoops`},O(`div`,{class:`section-title`},`BY AGENT`),...t))}let t=this.#t.reduce((e,t)=>e+t.cost,0);e.push(O(`div`,{class:`total-row`},O(`span`,{class:`total-label`},`Total`),O(`span`,{class:`total-cost`},`$${t.toFixed(2)}`)));let n=O(`div`,{class:`card`},...e);this.#e.replaceChildren(n)}});var ua=k(`
|
|
3531
3569
|
:host {
|
|
3532
3570
|
display: flex;
|
|
3533
3571
|
align-items: center;
|
|
@@ -3556,7 +3594,7 @@ slicc-permissions .slicc-permissions__prompt-btn:disabled {
|
|
|
3556
3594
|
min-width: 0;
|
|
3557
3595
|
background: var(--line, #e5e5e5);
|
|
3558
3596
|
}
|
|
3559
|
-
`);
|
|
3597
|
+
`);E(`slicc-day-separator`,class extends HTMLElement{static observedAttributes=[`label`];#e;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[ua]}connectedCallback(){this.#t()}attributeChangedCallback(){this.isConnected&&this.#t()}get label(){return this.getAttribute(`label`)}set label(e){e==null?this.removeAttribute(`label`):this.setAttribute(`label`,e)}#t(){let e=this.label??O(`slot`);this.#e.replaceChildren(O(`span`,{class:`label`,part:`label`},e))}});var da=`CLI float`;function fa(e){if(e==null)return null;let t=e.trim();if(t===``)return null;let n=Number.parseFloat(t.replace(/^\$/,``));return Number.isFinite(n)?`$${n.toFixed(2)}`:null}var pa=`(max-width: 560px)`,ma=k(`
|
|
3560
3598
|
:host {
|
|
3561
3599
|
position: relative;
|
|
3562
3600
|
display: inline-flex;
|
|
@@ -3667,7 +3705,7 @@ slicc-permissions .slicc-permissions__prompt-btn:disabled {
|
|
|
3667
3705
|
@media (prefers-reduced-motion: reduce) {
|
|
3668
3706
|
.tip { transition: none; }
|
|
3669
3707
|
}
|
|
3670
|
-
`);
|
|
3708
|
+
`);E(`slicc-floatbar`,class extends HTMLElement{static observedAttributes=[`label`,`linked`,`online`,`spent`];#e;#t;#n=()=>{this.isConnected&&this.#c()};#r=null;#i=[];#a=[];#o;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[ma],this.#t=typeof window<`u`&&typeof window.matchMedia==`function`?window.matchMedia(pa):null}connectedCallback(){this.#t?.addEventListener(`change`,this.#n),this.#l()}disconnectedCallback(){this.#t?.removeEventListener(`change`,this.#n),clearTimeout(this.#o)}attributeChangedCallback(e,t,n){t!==n&&this.isConnected&&this.#l()}get label(){return this.getAttribute(`label`)??da}set label(e){e==null?this.removeAttribute(`label`):this.setAttribute(`label`,e)}get linked(){return this.hasAttribute(`linked`)}set linked(e){this.toggleAttribute(`linked`,!!e)}get online(){return this.hasAttribute(`online`)}set online(e){this.toggleAttribute(`online`,!!e)}get spent(){return this.getAttribute(`spent`)}set spent(e){e==null?this.removeAttribute(`spent`):this.setAttribute(`spent`,String(e))}get costModels(){return this.#i}set costModels(e){this.#i=e,this.#r&&(this.#r.models=e)}get costScoops(){return this.#a}set costScoops(e){this.#a=e,this.#r&&(this.#r.scoops=e)}#s(){let e=[this.label],t=fa(this.spent);return t!=null&&e.push(t),e.push(this.online?`online`:`offline`),e.join(` · `)}#c(){this.#t?.matches?this.setAttribute(`title`,this.#s()):this.removeAttribute(`title`)}#l(){let e=[];this.online&&e.push(O(`span`,{class:`fdot`,part:`dot`})),e.push(O(`span`,{class:`label`,part:`label`},O(`slot`,null,this.label)));let t=fa(this.spent);if(t!=null){e.push(O(`span`,{class:`sep`,part:`sep`}));let n=O(`span`,{class:`spent`,part:`spent`},r(`circle-dollar-sign`,{size:12}),O(`span`,{class:`amount`},t));n.addEventListener(`mouseenter`,()=>this.#u()),n.addEventListener(`mouseleave`,()=>this.#d()),e.push(n)}e.push(O(`span`,{class:`tip`,part:`tip`,"aria-hidden":`true`},this.#s())),this.#r=null,this.#e.replaceChildren(...e),this.#c()}#u(){if(clearTimeout(this.#o),!this.#r){let e=document.createElement(`slicc-cost-overlay`);e.models=this.#i,e.scoops=this.#a,e.addEventListener(`mouseenter`,()=>this.#u()),e.addEventListener(`mouseleave`,()=>this.#d()),this.#e.appendChild(e),this.#r=e}this.#r.toggleAttribute(`open`,!0)}#d(){this.#o=setTimeout(()=>{this.#r&&this.#r.removeAttribute(`open`)},150)}});var ha=k(`
|
|
3671
3709
|
:host { display: inline-grid; }
|
|
3672
3710
|
:host([hidden]) { display: none; }
|
|
3673
3711
|
.iconbtn {
|
|
@@ -3696,7 +3734,7 @@ slicc-permissions .slicc-permissions__prompt-btn:disabled {
|
|
|
3696
3734
|
.iconbtn:disabled:hover { background: var(--canvas); color: var(--txt-2); }
|
|
3697
3735
|
.icon { display: grid; place-items: center; pointer-events: none; }
|
|
3698
3736
|
.icon svg { display: block; }
|
|
3699
|
-
`),
|
|
3737
|
+
`),ga=`plus`,_a=16;E(`slicc-icon-button`,class extends HTMLElement{static observedAttributes=[`icon`,`disabled`,`label`];#e;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[ha]}connectedCallback(){this.#t()}attributeChangedCallback(){this.isConnected&&this.#t()}get icon(){return this.getAttribute(`icon`)??ga}set icon(e){e==null?this.removeAttribute(`icon`):this.setAttribute(`icon`,e)}get disabled(){return this.hasAttribute(`disabled`)}set disabled(e){e?this.setAttribute(`disabled`,``):this.removeAttribute(`disabled`)}get label(){return this.getAttribute(`label`)}set label(e){e==null?this.removeAttribute(`label`):this.setAttribute(`label`,e)}#t(){let e=this.label,t=O(`slot`,null,O(`span`,{class:`icon`},r(this.icon,{size:_a,part:`icon`}))),n=O(`button`,{type:`button`,class:`iconbtn`,part:`button`,"aria-label":e??void 0,title:e??void 0,disabled:this.disabled},t);this.#e.replaceChildren(n)}});var va=k(`
|
|
3700
3738
|
:host { display: inline-flex; align-items: center; height: var(--ctl-h, 30px); font-family: var(--ui); line-height: 1; }
|
|
3701
3739
|
.logo { font-weight: 600; font-size: 14px; letter-spacing: -0.02em; color: var(--ink); }
|
|
3702
3740
|
.b {
|
|
@@ -3705,7 +3743,7 @@ slicc-permissions .slicc-permissions__prompt-btn:disabled {
|
|
|
3705
3743
|
}
|
|
3706
3744
|
/* Narrow / extension-sidebar: drop the gradient suffix badge to save width. */
|
|
3707
3745
|
@media (max-width: 560px) { .b { display: none; } }
|
|
3708
|
-
`);
|
|
3746
|
+
`);E(`slicc-logo`,class extends HTMLElement{static observedAttributes=[`badge`];#e;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[va]}connectedCallback(){this.#t()}attributeChangedCallback(){this.isConnected&&this.#t()}get badge(){return this.getAttribute(`badge`)}set badge(e){e==null?this.removeAttribute(`badge`):this.setAttribute(`badge`,e)}#t(){let e=O(`span`,{class:`logo`,part:`logo`},`sliccy`);this.badge&&e.append(O(`span`,{class:`b`,part:`badge`},this.badge)),this.#e.replaceChildren(e)}});var ya=`
|
|
3709
3747
|
slicc-pane {
|
|
3710
3748
|
display: flex;
|
|
3711
3749
|
flex-direction: column;
|
|
@@ -3744,7 +3782,7 @@ slicc-pane .slicc-pane__body {
|
|
|
3744
3782
|
min-height: 0;
|
|
3745
3783
|
overflow: auto;
|
|
3746
3784
|
}
|
|
3747
|
-
`,
|
|
3785
|
+
`,ba=`slicc-pane-style`;function xa(e){if(e.getElementById(ba))return;let t=e.createElement(`style`);t.id=ba,t.textContent=ya,(e.head??e.documentElement).appendChild(t)}E(`slicc-pane`,class extends HTMLElement{static observedAttributes=[`elevated`];#e;#t;#n=!1;connectedCallback(){xa(this.ownerDocument),this.#r()}attributeChangedCallback(e,t,n){e===`elevated`&&t!==n&&this.isConnected&&this.dispatchEvent(new CustomEvent(`slicc-pane-change`,{bubbles:!0,composed:!0,detail:{elevated:n!==null}}))}get elevated(){return this.hasAttribute(`elevated`)}set elevated(e){e?this.setAttribute(`elevated`,``):this.removeAttribute(`elevated`)}#r(){if(this.#n)return;this.#n=!0;let e=Array.from(this.childNodes).filter(e=>!(e instanceof HTMLElement&&e.classList.contains(`slicc-pane__surface`))),t=this.ownerDocument.createElement(`div`);t.className=`slicc-pane__surface`,t.setAttribute(`part`,`surface`),this.#e=this.ownerDocument.createElement(`div`),this.#e.className=`slicc-pane__header`,this.#e.setAttribute(`part`,`header`),this.#t=this.ownerDocument.createElement(`div`),this.#t.className=`slicc-pane__body`,this.#t.setAttribute(`part`,`body`),t.append(this.#e,this.#t);for(let t of e)t instanceof HTMLElement&&t.getAttribute(`slot`)===`header`?this.#e.appendChild(t):this.#t.appendChild(t);this.appendChild(t)}});function Sa(e){return e===`tool`||e===`sprinkle`}var Ca=k(`
|
|
3748
3786
|
:host { display: none; flex: 0 0 auto; }
|
|
3749
3787
|
:host([kind="tool"]), :host([kind="sprinkle"]) { display: inline-block; }
|
|
3750
3788
|
.ptag {
|
|
@@ -3763,7 +3801,7 @@ slicc-pane .slicc-pane__body {
|
|
|
3763
3801
|
background: color-mix(in srgb, var(--violet) 22%, var(--canvas));
|
|
3764
3802
|
border-color: color-mix(in srgb, var(--violet) 38%, var(--line));
|
|
3765
3803
|
}
|
|
3766
|
-
`);
|
|
3804
|
+
`);E(`slicc-pane-tag`,class extends HTMLElement{static observedAttributes=[`kind`];#e;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[Ca]}connectedCallback(){this.#t()}attributeChangedCallback(){this.isConnected&&this.#t()}get kind(){let e=this.getAttribute(`kind`);return Sa(e)?e:null}set kind(e){e==null?this.removeAttribute(`kind`):this.setAttribute(`kind`,e)}#t(){let e=O(`span`,{class:`ptag`,part:`tag`},O(`slot`,null,this.kind??``));this.#e.replaceChildren(e)}});var wa=`
|
|
3767
3805
|
slicc-press-button {
|
|
3768
3806
|
display: inline-flex;
|
|
3769
3807
|
}
|
|
@@ -3855,7 +3893,7 @@ slicc-press-button {
|
|
|
3855
3893
|
animation: none;
|
|
3856
3894
|
}
|
|
3857
3895
|
}
|
|
3858
|
-
`,
|
|
3896
|
+
`,Ta=`slicc-press-button-style`;function Ea(e){if(e.getElementById(Ta))return;let t=e.createElement(`style`);t.id=Ta,t.textContent=wa,(e.head??e.documentElement).appendChild(t)}var Da=`slicc-press-btn`,Oa=`is-squish`,ka=`is-wobble`;E(`slicc-press-button`,class extends HTMLElement{static get observedAttributes(){return[`label`,`tooltip`,`tooltip-pos`,`disabled`]}innerBtn=null;pressLayer=null;handle=null;initialized=!1;pendingShortTimer=null;pendingShortEvent=null;animEndListener=null;connectedCallback(){Ea(this.ownerDocument),this.initialized?this.handle===null&&this.attachGesture():this.initialize(),this.syncAttributes()}disconnectedCallback(){this.handle?.destroy(),this.handle=null,this.clearPendingShort(),this.clearRipple(),this.clearAnimation()}attributeChangedCallback(){this.initialized&&this.syncAttributes()}get disabled(){return this.hasAttribute(`disabled`)}set disabled(e){this.toggleAttribute(`disabled`,e)}get label(){return this.getAttribute(`label`)}set label(e){e==null?this.removeAttribute(`label`):this.setAttribute(`label`,e)}get tooltip(){return this.getAttribute(`tooltip`)}set tooltip(e){e==null?this.removeAttribute(`tooltip`):this.setAttribute(`tooltip`,e)}setIcon(e){this.initialized||this.initialize();let t=this.innerBtn,n=this.pressLayer;for(let e of Array.from(t.childNodes))e!==n&&e.remove();let r=new DOMParser().parseFromString(e,`text/html`).body;for(;r.firstChild;)t.appendChild(r.firstChild)}focus(e){this.initialized||this.initialize(),this.innerBtn?.focus(e)}initialize(){this.initialized=!0;let e=O(`span`,{class:`${Da}__press-layer`,part:`press-layer`}),t=O(`button`,{type:`button`,class:`${Da}__btn`,part:`button`},e);for(;this.firstChild;)t.appendChild(this.firstChild);this.appendChild(t),this.innerBtn=t,this.pressLayer=e,this.attachGesture()}syncAttributes(){let e=this.innerBtn;if(!e)return;let t=this.getAttribute(`label`);t==null?e.removeAttribute(`aria-label`):e.setAttribute(`aria-label`,t);let n=this.getAttribute(`tooltip`);n==null?delete e.dataset.tooltip:e.dataset.tooltip=n;let r=this.getAttribute(`tooltip-pos`);r==null?delete e.dataset.tooltipPos:e.dataset.tooltipPos=r,this.hasAttribute(`disabled`)?e.setAttribute(`disabled`,``):e.removeAttribute(`disabled`)}longPressMs(){let e=this.getAttribute(`long-press-ms`);if(e==null)return Zn;let t=Number(e);return Number.isFinite(t)&&t>0?t:Zn}doubleClickMs(){let e=this.getAttribute(`double-click-ms`);if(e==null)return 350;let t=Number(e);return Number.isFinite(t)&&t>0?t:350}doubleClickDisabled(){return this.hasAttribute(`disable-double-click`)}emit(e,t){e===`short-click`?this.playAnimation(Oa):e===`double-click`&&this.playAnimation(ka);let n=t?{sourceEvent:t}:{};this.dispatchEvent(new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:n}))}playAnimation(e){let t=this.innerBtn;if(!t)return;this.clearAnimation(),t.offsetWidth,t.classList.add(e);let n=e=>{e.target===t&&this.clearAnimation()};this.animEndListener=n,t.addEventListener(`animationend`,n)}clearAnimation(){let e=this.innerBtn;e&&(this.animEndListener&&=(e.removeEventListener(`animationend`,this.animEndListener),null),e.classList.remove(Oa,ka))}clearPendingShort(){this.pendingShortTimer!==null&&(clearTimeout(this.pendingShortTimer),this.pendingShortTimer=null),this.pendingShortEvent=null}attachGesture(){this.handle=Qn(this,{longPressMs:this.longPressMs(),onPressStart:e=>this.paintRipple(e),onPressEnd:()=>this.clearRipple(),onLongPress:()=>{if(this.pendingShortTimer!==null){this.clearPendingShort(),this.emit(`double-click`);return}this.emit(`long-press`)},onShortClick:e=>{if(this.doubleClickDisabled()){this.emit(`short-click`,e);return}if(this.pendingShortTimer!==null){this.clearPendingShort(),this.emit(`double-click`,e);return}this.pendingShortEvent=e,this.pendingShortTimer=setTimeout(()=>{this.pendingShortTimer=null;let e=this.pendingShortEvent;this.pendingShortEvent=null,this.emit(`short-click`,e??void 0)},this.doubleClickMs())}})}paintRipple(e){this.clearRipple();let t=this.pressLayer;if(!t)return;let n=t.getBoundingClientRect(),r=e.clientX-n.left,i=e.clientY-n.top,a=Math.max(r,n.width-r),o=Math.max(i,n.height-i),s=Math.ceil(Math.hypot(a,o))+2,c=this.ownerDocument.createElement(`span`);c.className=`${Da}__press`,c.style.left=`${r}px`,c.style.top=`${i}px`,c.style.width=`0px`,c.style.height=`0px`,c.style.transitionDuration=`${this.longPressMs()}ms`,t.appendChild(c),requestAnimationFrame(()=>{c.isConnected&&(c.style.width=`${s*2}px`,c.style.height=`${s*2}px`)})}clearRipple(){let e=this.pressLayer;if(e)for(;e.firstChild;)e.firstChild.remove()}});var Aa=k(`
|
|
3859
3897
|
:host { display: inline-flex; }
|
|
3860
3898
|
:host([hidden]) { display: none; }
|
|
3861
3899
|
|
|
@@ -3885,7 +3923,7 @@ slicc-press-button {
|
|
|
3885
3923
|
outline: 2px solid var(--violet);
|
|
3886
3924
|
outline-offset: 2px;
|
|
3887
3925
|
}
|
|
3888
|
-
`);
|
|
3926
|
+
`);E(`slicc-swatch`,class extends HTMLElement{static observedAttributes=[`color`,`hue`,`selected`,`label`];#e;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[Aa]}connectedCallback(){this.#t()}attributeChangedCallback(){this.isConnected&&this.#t()}get color(){return this.getAttribute(`color`)}set color(e){e==null?this.removeAttribute(`color`):this.setAttribute(`color`,e)}get hue(){return this.hasAttribute(`hue`)}set hue(e){this.toggleAttribute(`hue`,!!e)}get selected(){return this.hasAttribute(`selected`)}set selected(e){this.toggleAttribute(`selected`,!!e)}get label(){return this.getAttribute(`label`)}set label(e){e==null?this.removeAttribute(`label`):this.setAttribute(`label`,e)}#t(){let e=this.color,t=[`sw`];this.hue&&t.push(`hue`),this.selected&&t.push(`on`);let n=O(`button`,{type:`button`,part:`button`,class:t.join(` `),"aria-pressed":this.selected?`true`:`false`,"aria-label":this.label??e??`color swatch`},O(`slot`));e&&n.style.setProperty(`--swatch-color`,e),n.addEventListener(`click`,this.#n),this.#e.replaceChildren(n)}#n=()=>{this.selected=!0,this.dispatchEvent(new CustomEvent(`select`,{detail:{color:this.color},bubbles:!0,composed:!0}))}});var ja=new Set([`rose`,`cyan`,`violet`,`amber`,`waffle`,`green`]),Ma=k(`
|
|
3889
3927
|
:host {
|
|
3890
3928
|
display: inline-flex;
|
|
3891
3929
|
vertical-align: middle;
|
|
@@ -3945,7 +3983,102 @@ slicc-press-button {
|
|
|
3945
3983
|
:host-context(.dark)[hue="amber"] .tag, :host-context([data-theme="dark"])[hue="amber"] .tag { background: color-mix(in srgb, var(--amber) 22%, var(--canvas)); border-color: color-mix(in srgb, var(--amber) 38%, var(--line)); }
|
|
3946
3984
|
:host-context(.dark)[hue="waffle"] .tag, :host-context([data-theme="dark"])[hue="waffle"] .tag { background: color-mix(in srgb, var(--waffle) 22%, var(--canvas)); border-color: color-mix(in srgb, var(--waffle) 38%, var(--line)); }
|
|
3947
3985
|
:host-context(.dark)[hue="green"] .tag, :host-context([data-theme="dark"])[hue="green"] .tag { background: color-mix(in srgb, var(--green) 22%, var(--canvas)); border-color: color-mix(in srgb, var(--green) 38%, var(--line)); }
|
|
3948
|
-
`);
|
|
3986
|
+
`);E(`slicc-tag`,class extends HTMLElement{static observedAttributes=[`hue`,`label`,`dot`];#e;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[Ma]}connectedCallback(){this.#t()}attributeChangedCallback(){this.isConnected&&this.#t()}get hue(){let e=this.getAttribute(`hue`);return e&&ja.has(e)?e:null}set hue(e){e==null?this.removeAttribute(`hue`):this.setAttribute(`hue`,e)}get label(){return this.getAttribute(`label`)}set label(e){e==null?this.removeAttribute(`label`):this.setAttribute(`label`,e)}get dot(){return this.hasAttribute(`dot`)}set dot(e){e?this.setAttribute(`dot`,``):this.removeAttribute(`dot`)}#t(){let e=this.label??O(`slot`),t=O(`span`,{class:`tag`,part:`tag`},this.dot?O(`span`,{class:`dot`,part:`dot`}):null,O(`span`,{class:`label`,part:`label`},e));this.#e.replaceChildren(t)}});var Na=k(`
|
|
3987
|
+
:host {
|
|
3988
|
+
position: fixed;
|
|
3989
|
+
inset: 0;
|
|
3990
|
+
z-index: 105;
|
|
3991
|
+
display: flex;
|
|
3992
|
+
align-items: center;
|
|
3993
|
+
justify-content: center;
|
|
3994
|
+
}
|
|
3995
|
+
.backdrop {
|
|
3996
|
+
position: absolute;
|
|
3997
|
+
inset: 0;
|
|
3998
|
+
background: rgba(0,0,0,.4);
|
|
3999
|
+
backdrop-filter: blur(4px);
|
|
4000
|
+
-webkit-backdrop-filter: blur(4px);
|
|
4001
|
+
}
|
|
4002
|
+
.panel {
|
|
4003
|
+
position: relative;
|
|
4004
|
+
max-width: 80vw;
|
|
4005
|
+
max-height: 80vh;
|
|
4006
|
+
background: var(--canvas, #fff);
|
|
4007
|
+
border: 1px solid var(--line, #e1e1e1);
|
|
4008
|
+
border-radius: 12px;
|
|
4009
|
+
box-shadow: 0 18px 50px -12px rgba(10,10,10,.35), 0 4px 12px -4px rgba(10,10,10,.18);
|
|
4010
|
+
display: flex;
|
|
4011
|
+
flex-direction: column;
|
|
4012
|
+
overflow: hidden;
|
|
4013
|
+
font-family: var(--ui);
|
|
4014
|
+
}
|
|
4015
|
+
.header {
|
|
4016
|
+
display: flex;
|
|
4017
|
+
align-items: center;
|
|
4018
|
+
justify-content: space-between;
|
|
4019
|
+
padding: 12px 16px;
|
|
4020
|
+
border-bottom: 1px solid var(--line, #e1e1e1);
|
|
4021
|
+
font-size: 13px;
|
|
4022
|
+
font-weight: 600;
|
|
4023
|
+
color: var(--ink, #131313);
|
|
4024
|
+
flex: 0 0 auto;
|
|
4025
|
+
}
|
|
4026
|
+
.x {
|
|
4027
|
+
width: 26px;
|
|
4028
|
+
height: 26px;
|
|
4029
|
+
display: grid;
|
|
4030
|
+
place-items: center;
|
|
4031
|
+
border: none;
|
|
4032
|
+
background: transparent;
|
|
4033
|
+
border-radius: 6px;
|
|
4034
|
+
color: var(--txt-3, #717171);
|
|
4035
|
+
cursor: pointer;
|
|
4036
|
+
}
|
|
4037
|
+
.x:hover {
|
|
4038
|
+
background: var(--ghost, rgba(0,0,0,.05));
|
|
4039
|
+
color: var(--ink, #131313);
|
|
4040
|
+
}
|
|
4041
|
+
.content {
|
|
4042
|
+
padding: 16px;
|
|
4043
|
+
overflow: auto;
|
|
4044
|
+
flex: 1;
|
|
4045
|
+
min-height: 0;
|
|
4046
|
+
}
|
|
4047
|
+
pre {
|
|
4048
|
+
margin: 0;
|
|
4049
|
+
font-family: var(--mono, 'SF Mono', 'Fira Code', monospace);
|
|
4050
|
+
font-size: 12px;
|
|
4051
|
+
line-height: 1.6;
|
|
4052
|
+
white-space: pre-wrap;
|
|
4053
|
+
word-break: break-word;
|
|
4054
|
+
color: var(--ink, #131313);
|
|
4055
|
+
max-height: 60vh;
|
|
4056
|
+
overflow: auto;
|
|
4057
|
+
}
|
|
4058
|
+
img {
|
|
4059
|
+
max-width: 100%;
|
|
4060
|
+
max-height: 70vh;
|
|
4061
|
+
object-fit: contain;
|
|
4062
|
+
display: block;
|
|
4063
|
+
margin: 0 auto;
|
|
4064
|
+
}
|
|
4065
|
+
audio {
|
|
4066
|
+
width: 100%;
|
|
4067
|
+
min-width: 300px;
|
|
4068
|
+
}
|
|
4069
|
+
video {
|
|
4070
|
+
max-width: 100%;
|
|
4071
|
+
max-height: 70vh;
|
|
4072
|
+
display: block;
|
|
4073
|
+
margin: 0 auto;
|
|
4074
|
+
}
|
|
4075
|
+
.fallback {
|
|
4076
|
+
text-align: center;
|
|
4077
|
+
padding: 32px 16px;
|
|
4078
|
+
color: var(--txt-3, #717171);
|
|
4079
|
+
font-size: 13px;
|
|
4080
|
+
}
|
|
4081
|
+
`),Pa=null,Fa=null,Ia=class e extends HTMLElement{#e;#t=[];constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[Na]}disconnectedCallback(){for(let e of this.#t)URL.revokeObjectURL(e);this.#t.length=0,Pa===this&&(Pa=null)}static open(t){e.close();let n=document.createElement(`slicc-quick-look`),i=t.path.split(`/`).pop()||t.path,a=O(`div`,{class:`backdrop`}),o=O(`button`,{class:`x`});o.appendChild(r(`x`,{size:14}));let s=O(`div`,{class:`header`},i,o),c=O(`div`,{class:`content`});c.appendChild(n.#r(t));let l=O(`div`,{class:`panel`},s,c);l.tabIndex=-1,n.#e.append(a,l),document.body.appendChild(n),Pa=n,l.focus(),a.addEventListener(`click`,()=>n.#n(`backdrop`)),o.addEventListener(`click`,()=>n.#n(`close-button`)),Fa&&document.removeEventListener(`keydown`,Fa),Fa=e=>{e.key===`Escape`&&n.#n(`escape`)},document.addEventListener(`keydown`,Fa)}static close(){if(Pa){for(let e of Pa.#t)URL.revokeObjectURL(e);Pa.remove(),Pa=null}Fa&&=(document.removeEventListener(`keydown`,Fa),null)}#n(t){this.dispatchEvent(new CustomEvent(`quick-look-close`,{bubbles:!0,composed:!0,detail:{reason:t}})),e.close()}#r(e){let t=e.mimeType;if(t.startsWith(`text/`)||t===`application/json`)return O(`pre`,null,typeof e.content==`string`?e.content:new TextDecoder().decode(e.content));if(t.startsWith(`image/`)){let n=new Blob([typeof e.content==`string`?new TextEncoder().encode(e.content):e.content],{type:t}),r=document.createElement(`img`),i=URL.createObjectURL(n);return this.#t.push(i),r.src=i,r.alt=e.path.split(`/`).pop()||``,r}if(t.startsWith(`audio/`)){let n=new Blob([typeof e.content==`string`?new TextEncoder().encode(e.content):e.content],{type:t}),r=document.createElement(`audio`);r.controls=!0;let i=URL.createObjectURL(n);return this.#t.push(i),r.src=i,r}if(t.startsWith(`video/`)){let n=new Blob([typeof e.content==`string`?new TextEncoder().encode(e.content):e.content],{type:t}),r=document.createElement(`video`);r.controls=!0;let i=URL.createObjectURL(n);return this.#t.push(i),r.src=i,r}return O(`div`,{class:`fallback`},`Preview not available for this file type (${La(typeof e.content==`string`?e.content.length:e.content.byteLength)})`)}};function La(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}E(`slicc-quick-look`,Ia);var Ra=`
|
|
3949
4082
|
.slicc-chatpane {
|
|
3950
4083
|
flex: 0 0 auto;
|
|
3951
4084
|
width: calc(100% - 48px);
|
|
@@ -3988,7 +4121,7 @@ slicc-press-button {
|
|
|
3988
4121
|
-webkit-mask-image: none;
|
|
3989
4122
|
mask-image: none;
|
|
3990
4123
|
}
|
|
3991
|
-
`,
|
|
4124
|
+
`,za=`slicc-chatpane-style`;function Ba(e){if(e.getElementById(za))return;let t=e.createElement(`style`);t.id=za,t.textContent=Ra,(e.head??e.documentElement).appendChild(t)}var Va=[`slicc-chat-thread`,`slicc-composer`];E(`slicc-chatpane`,class extends HTMLElement{static observedAttributes=[`narrow`];#e=null;#t=!1;connectedCallback(){Ba(this.ownerDocument),this.classList.add(`slicc-chatpane`),this.setAttribute(`part`,`pane`),this.#t=!0,this.#n(),this.#r()}disconnectedCallback(){this.#e?.disconnect(),this.#e=null}attributeChangedCallback(e,t,n){e!==`narrow`||t===n||this.isConnected&&(this.#n(),this.dispatchEvent(new CustomEvent(`slicc-chatpane-narrow-change`,{detail:{narrow:this.narrow},bubbles:!0,composed:!0})))}get narrow(){return this.hasAttribute(`narrow`)}set narrow(e){e?this.setAttribute(`narrow`,``):this.removeAttribute(`narrow`)}get nav(){return this.querySelector(`:scope > slicc-nav`)}get thread(){return this.querySelector(`:scope > slicc-chat-thread`)}get composer(){return this.querySelector(`:scope > slicc-composer`)}#n(){if(!this.#t)return;let e=this.narrow;for(let t of Va)for(let n of this.querySelectorAll(`:scope > ${t}`))e?n.setAttribute(`open`,``):n.removeAttribute(`open`)}#r(){this.#e||(this.#e=new MutationObserver(()=>this.#n()),this.#e.observe(this,{childList:!0}))}});var Ha=`
|
|
3992
4125
|
.slicc-shell { display: flex; flex: 1; min-height: 0; }
|
|
3993
4126
|
.slicc-shell > slicc-chatpane,
|
|
3994
4127
|
.slicc-shell > .chatpane {
|
|
@@ -4083,7 +4216,7 @@ slicc-press-button {
|
|
|
4083
4216
|
/* Hide the resize divider on narrow viewports (overlay mode). */
|
|
4084
4217
|
.slicc-shell > .slicc-shell__divider { display: none !important; }
|
|
4085
4218
|
}
|
|
4086
|
-
`,
|
|
4219
|
+
`,Ua=`slicc-shell-style`;function Wa(e){if(e.getElementById(Ua))return;let t=e.createElement(`style`);t.id=Ua,t.textContent=Ha,(e.head??e.documentElement).appendChild(t)}E(`slicc-shell`,class e extends HTMLElement{static observedAttributes=[`open`,`url-state`];#e=null;#t=null;#n=!1;#r=null;#i=e=>{if(!this.urlState)return;let t=e.detail?.id;typeof t==`string`&&P(`ws`,t)};#a=()=>{this.urlState&&P(`ws`,null)};#o=()=>{if(!this.urlState)return;let e=N(`ws`);e?this.#s(e):this.open&&this.collapse()};connectedCallback(){if(Wa(this.ownerDocument),this.classList.add(`slicc-shell`),this.setAttribute(`part`,`shell`),this.#n=!0,this.#p(),this.#m(),this.#c(),this.#e=e=>{let t=e.detail?.id;typeof t==`string`&&this.select(t)},this.#t=()=>this.collapse(),this.addEventListener(`dock-select`,this.#e),this.addEventListener(`dock-collapse`,this.#t),this.addEventListener(`slicc-dock-select`,this.#i),this.addEventListener(`slicc-dock-collapse`,this.#a),this.urlState){window.addEventListener(`popstate`,this.#o);let e=N(`ws`);e&&queueMicrotask(()=>this.#s(e))}}disconnectedCallback(){this.#e&&this.removeEventListener(`dock-select`,this.#e),this.#t&&this.removeEventListener(`dock-collapse`,this.#t),this.#e=null,this.#t=null,this.removeEventListener(`slicc-dock-select`,this.#i),this.removeEventListener(`slicc-dock-collapse`,this.#a),window.removeEventListener(`popstate`,this.#o),this.#r?.remove(),this.#r=null}get urlState(){return this.hasAttribute(`url-state`)}set urlState(e){this.toggleAttribute(`url-state`,e)}#s(e){this.dock?.selectItem?.(e)}attributeChangedCallback(e,t,n){e===`open`&&t!==n&&this.isConnected&&this.#c()}get open(){return this.hasAttribute(`open`)}set open(e){this.toggleAttribute(`open`,e)}get chatpane(){return this.querySelector(`:scope > slicc-chatpane, :scope > .chatpane`)}get workbench(){return this.querySelector(`:scope > slicc-workbench-pane, :scope > .workbench`)}get dock(){return this.querySelector(`:scope > slicc-dock, :scope > .dock`)}select(e){this.open=!0,this.#l(e),this.dispatchEvent(new CustomEvent(`slicc-shell-select`,{detail:{id:e},bubbles:!0,composed:!0}))}collapse(){this.open=!1,this.dock?.clearActive?.(),this.dispatchEvent(new CustomEvent(`slicc-shell-collapse`,{bubbles:!0,composed:!0}))}#c(){if(!this.#n)return;let e=this.open;this.chatpane?.toggleAttribute(`narrow`,e),this.workbench?.toggleAttribute(`open`,e)}#l(e){this.dock?.selectItem?.(e);let t=this.workbench;t?.selectSurface&&t.selectSurface(e),this.#c()}static#u=`slicc-shell-chat-w`;static#d=.2;static#f=.8;#p(){if(this.#r)return;let e=this.workbench;if(!e)return;let t=this.ownerDocument.createElement(`div`);t.className=`slicc-shell__divider`,t.setAttribute(`role`,`separator`),t.setAttribute(`aria-orientation`,`vertical`),this.insertBefore(t,e),this.#r=t,this.#h(t)}#m(){try{let t=localStorage.getItem(e.#u);t&&this.style.setProperty(`--slicc-chat-w`,t)}catch{}}#h(t){t.addEventListener(`pointerdown`,n=>{if(n.button!==0)return;n.preventDefault(),t.setPointerCapture(n.pointerId),this.toggleAttribute(`dragging`,!0);let r=t=>{let n=this.getBoundingClientRect();if(n.width<=0)return;let r=t.clientX-n.left,i=Math.max(e.#d,Math.min(e.#f,r/n.width));this.style.setProperty(`--slicc-chat-w`,`${(i*100).toFixed(1)}%`)},i=()=>{this.removeAttribute(`dragging`),t.removeEventListener(`pointermove`,r),t.removeEventListener(`pointerup`,i),t.removeEventListener(`pointercancel`,i);try{let t=this.style.getPropertyValue(`--slicc-chat-w`);t&&localStorage.setItem(e.#u,t)}catch{}};t.addEventListener(`pointermove`,r),t.addEventListener(`pointerup`,i),t.addEventListener(`pointercancel`,i)}),t.addEventListener(`dblclick`,()=>{this.style.removeProperty(`--slicc-chat-w`);try{localStorage.removeItem(e.#u)}catch{}})}});var Ga=k(`
|
|
4087
4220
|
:host{display:inline-block;}
|
|
4088
4221
|
.switcher-more{position:relative;}
|
|
4089
4222
|
.morebtn{display:none;font:inherit;font-size:13px;font-weight:600;color:var(--txt-2);background:transparent;border:1px solid var(--line);border-radius:9999px;height:var(--ctl-h,30px);padding:0 11px;cursor:pointer;line-height:1;align-items:center;}
|
|
@@ -4105,10 +4238,10 @@ slicc-press-button {
|
|
|
4105
4238
|
.pop slicc-pill::part(label){display:block;}
|
|
4106
4239
|
.pop slicc-pill::part(tip){display:none;}
|
|
4107
4240
|
}
|
|
4108
|
-
`);
|
|
4241
|
+
`);E(`slicc-scoop-overflow`,class extends HTMLElement{static observedAttributes=[`open`];#e;#t=[];#n;#r;#i;#a=e=>{this.open&&!this.contains(e.target)&&this.close()};constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[Ga]}connectedCallback(){this.#o()}disconnectedCallback(){document.removeEventListener(`click`,this.#a)}attributeChangedCallback(e){e===`open`&&this.#n&&this.#c()}get items(){return this.#t}set items(e){this.#t=Array.isArray(e)?e:[],this.isConnected&&this.#s()}get count(){return this.#t.length}get hasOverflow(){return this.#t.length>0}get open(){return this.hasAttribute(`open`)}set open(e){this.toggleAttribute(`open`,e)}show(){this.open||=!0}close(){this.open&&=!1}toggle(){this.open=!this.open}#o(){let e=O(`slot`,{name:`more`},`⋯`);this.#r=O(`button`,{class:`morebtn`,part:`more`,type:`button`,title:`More scoops`,"aria-haspopup":`true`,"aria-expanded":`false`},e),this.#i=O(`div`,{class:`pop`,part:`pop`}),this.#n=O(`div`,{class:`switcher-more`,part:`wrap`},this.#r,this.#i),this.#r.addEventListener(`click`,e=>{e.stopPropagation(),this.toggle()}),this.#e.replaceChildren(this.#n),this.#s(),this.#c()}#s(){let e=this.#t.length;if(e>0?this.setAttribute(`count`,String(e)):this.removeAttribute(`count`),this.#n.classList.toggle(`has-overflow`,e>0),this.#r.setAttribute(`aria-haspopup`,`true`),e===0){this.#i.replaceChildren(O(`slot`,{name:`empty`})),this.open&&this.close();return}let t=[];this.#t.forEach((e,n)=>{let r=e.id,i=e.label??e.id,a=O(`slicc-pill`,{class:`scoop`,part:`pill`,"data-k":r,type:e.type===`cone`?`cone`:`scoop`,eyes:e.eyes===`open`||e.eyes===`dead`?e.eyes:`none`,color:e.color??!1,label:i,style:`--i:${n}`});a.addEventListener(`click`,()=>{let e=a.dataset.k??``,t=this.#t.find(t=>t.id===e);this.#l(e,t?.label??e)}),t.push(a)}),this.#i.replaceChildren(...t)}#c(){let e=this.open;this.#n.classList.toggle(`open`,e),this.#r.setAttribute(`aria-expanded`,e?`true`:`false`),document.removeEventListener(`click`,this.#a),e&&document.addEventListener(`click`,this.#a)}#l(e,t){this.dispatchEvent(new CustomEvent(`slicc-scoop-select`,{detail:{id:e,label:t},bubbles:!0,composed:!0})),this.close()}});var Ka={cone:`var(--waffle)`,researcher:`var(--cyan)`,designer:`var(--violet)`,tester:`var(--amber)`,triage:`var(--green)`},qa=40,Ja=6,Ya=`
|
|
4109
4242
|
.slicc-scoop-switcher {
|
|
4110
4243
|
display: flex;
|
|
4111
|
-
gap: ${
|
|
4244
|
+
gap: ${Ja}px;
|
|
4112
4245
|
flex-wrap: nowrap;
|
|
4113
4246
|
min-width: 0;
|
|
4114
4247
|
overflow: hidden;
|
|
@@ -4156,7 +4289,7 @@ slicc-press-button {
|
|
|
4156
4289
|
.slicc-scoop-switcher .scoop { width: 34px; }
|
|
4157
4290
|
.slicc-scoop-switcher slicc-pill.scoop { --pill-w: 34px; }
|
|
4158
4291
|
}
|
|
4159
|
-
`,
|
|
4292
|
+
`,Xa=`slicc-scoop-switcher-style`;function Za(e){if(e.getElementById(Xa))return;let t=e.createElement(`style`);t.id=Xa,t.textContent=Ya,(e.head??e.documentElement).appendChild(t)}function Qa(e){return Ka[e]??`var(--rose)`}function $a(e,t){let n=e.getAttribute(`eyes`);return n===`open`||n===`none`||n===`dead`?n:t}E(`slicc-scoop-switcher`,class extends HTMLElement{static get observedAttributes(){return[`active`,`attention`]}#e=[];#t=null;#n=null;#r=!1;#i=null;#a=null;#o=!1;#s=null;#c=e=>{let t=this.#p(e);t!==this.#s&&(this.#s=t,this.#h())};#l=()=>{this.#s!==null&&(this.#s=null,this.#h())};connectedCallback(){Za(this.ownerDocument),this.classList.add(`slicc-scoop-switcher`),this.setAttribute(`part`,`row`),this.#o||=(this.#d(),!0),this.#a||(this.#a=e=>this.#y(e),this.addEventListener(`click`,this.#a)),this.addEventListener(`pointerover`,this.#c),this.addEventListener(`pointerleave`,this.#l),this.#f(),this.#b(),requestAnimationFrame(()=>this.reflow())}disconnectedCallback(){this.#n?.disconnect(),this.#n=null,this.#i!==null&&(cancelAnimationFrame(this.#i),this.#i=null),this.#a&&=(this.removeEventListener(`click`,this.#a),null),this.removeEventListener(`pointerover`,this.#c),this.removeEventListener(`pointerleave`,this.#l)}attributeChangedCallback(e){this.#o&&(e===`active`?this.#g():e===`attention`&&this.#h())}get scoops(){return this.#e.map(e=>({...e}))}set scoops(e){this.#e=Array.isArray(e)?e.map(e=>({...e})):[],this.#o&&this.isConnected&&(this.#f(),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.#u()}finally{this.#r=!1}}}#u(){let e=[...this.querySelectorAll(`slicc-pill.scoop`)];for(let t of e)t.classList.remove(`hide`);let t=e.filter(e=>e.offsetParent!==null||e.offsetWidth>0);if(t.length===0){this.#_([]);return}let n=this.clientWidth;if(n<=0){this.#_([]),requestAnimationFrame(()=>{this.isConnected&&this.clientWidth>0&&this.reflow()});return}let r=t.map(e=>e.offsetWidth);if(r.reduce((e,t)=>e+t,0)+Ja*Math.max(0,t.length-1)<=n+1){this.#_([]);return}let i=Math.max(0,n-qa),a=[],o=0;t.forEach((e,t)=>{if(t===0){o+=r[t];return}let n=Ja+r[t];a.length===0&&o+n<=i?o+=n:(e.classList.add(`hide`),a.push(e))}),this.#_(a)}select(e){this.active=e;let t=this.#e.find(t=>t.key===e)?.label??e;this.dispatchEvent(new CustomEvent(`slicc-scoop-select`,{detail:{id:e,key:e,label:t},bubbles:!0,composed:!0}))}#d(){let e=[...this.querySelectorAll(`slicc-pill`)];if(e.length===0)return;let t=e.map(e=>{let t=e.dataset.k??e.getAttribute(`label`)??``,n=e.getAttribute(`type`)===`cone`?`cone`:`scoop`;return{key:t,type:n,color:e.getAttribute(`color`)??void 0,label:e.getAttribute(`label`)??t,eyes:$a(e,n===`cone`?`open`:`none`),ephemeral:e.classList.contains(`ephemeral`)}});for(let t of e)t.remove();this.#e.length===0&&(this.#e=t)}#f(){let e=this.active,t=this.#e.map(t=>{let n=t.key,r=t.type===`cone`||n===`cone`?`cone`:`scoop`,i=t.label??n,a=t.eyes??(r===`cone`?`open`:`none`),o=e!=null&&e===n,s=Qa(n);return O(`slicc-pill`,{class:`scoop${t.ephemeral?` ephemeral`:``}`,"data-k":n,type:r,color:t.color?t.color:!1,eyes:a,fill:typeof t.fill==`number`&&Number.isFinite(t.fill)?String(Math.round(Math.min(100,Math.max(0,t.fill)))):!1,label:i,active:o,style:`--h:${s}`})});this.replaceChildren(...t),this.#h()}#p(e){let t=e.target?.closest?.(`slicc-pill.scoop`);return t&&this.contains(t)?t.dataset.k??null:null}#m(e){let t=this.#e.find(t=>t.key===e),n=t?.type===`cone`||e===`cone`?`cone`:`scoop`;return t?.eyes??(n===`cone`?`open`:`none`)}#h(){let e=this.attention;for(let t of this.querySelectorAll(`slicc-pill.scoop`)){let n=t.dataset.k??``,r=this.#s===null?e!==null&&e===n:this.#s===n,i=this.#m(n);t.setAttribute(`eyes`,r?i:`none`),t.toggleAttribute(`blink`,r&&this.#s===null&&i===`open`)}}#g(){let e=this.active;for(let t of this.querySelectorAll(`slicc-pill.scoop`)){let n=t.dataset.k===e;t.classList.toggle(`active`,n),t.toggleAttribute(`active`,n)}}#_(e){if(e.length===0){this.#t&&(this.#t.items=[]);return}let t=this.#v();t.items=e.map(e=>{let t=e.dataset.k??``;return{id:t,label:e.getAttribute(`label`)??t,type:e.getAttribute(`type`)===`cone`?`cone`:`scoop`,color:e.getAttribute(`color`)??void 0,eyes:$a(e,e.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`,e=>{let t=e.detail?.id;typeof t==`string`&&(e.stopPropagation(),this.select(t))}),this.after(e),this.#t=e,e}#y(e){let t=e.target?.closest(`slicc-pill.scoop`);if(!t||!this.contains(t))return;let n=t.dataset.k;n&&this.select(n)}#b(){this.#n||typeof ResizeObserver>`u`||(this.#n=new ResizeObserver(()=>{this.#i===null&&(this.#i=requestAnimationFrame(()=>{this.#i=null,this.reflow()}))}),this.#n.observe(this),this.parentElement&&this.#n.observe(this.parentElement))}});var eo=`/**
|
|
4160
4293
|
* SLICC design tokens — lifted verbatim from the prototype
|
|
4161
4294
|
* (proto/StellarRubySwift.html :root + body.dark). Light is the default; dark is
|
|
4162
4295
|
* opt-in. Per project decision the prototype's token vocabulary and light-default
|
|
@@ -4220,7 +4353,7 @@ slicc-press-button {
|
|
|
4220
4353
|
--shaderbg: #171410;
|
|
4221
4354
|
--shadow-pane: rgba(0, 0, 0, 0.35) 0 8px 26px -10px;
|
|
4222
4355
|
}
|
|
4223
|
-
`,
|
|
4356
|
+
`,to=`slicc-tokens`;function no(e=document){if(e.getElementById(to))return;let t=e.createElement(`style`);t.id=to,t.textContent=eo,(e.head??e.documentElement).appendChild(t)}function ro(e,t=document.body){t.classList.toggle(`dark`,e===`dark`),t.setAttribute(`data-theme`,e)}function io(e=document.body){if(typeof window>`u`||typeof window.matchMedia!=`function`)return()=>{};let t=window.matchMedia(`(prefers-color-scheme: dark)`),n=()=>ro(t.matches?`dark`:`light`,e);return n(),t.addEventListener(`change`,n),()=>t.removeEventListener(`change`,n)}var ao=k(`
|
|
4224
4357
|
:host { display: inline-flex; flex: 0 0 auto; }
|
|
4225
4358
|
.themetgl {
|
|
4226
4359
|
font: inherit; font-family: var(--ui); font-size: 14px; line-height: 1;
|
|
@@ -4232,7 +4365,7 @@ slicc-press-button {
|
|
|
4232
4365
|
}
|
|
4233
4366
|
.themetgl:hover { background: color-mix(in srgb, var(--ink) 8%, var(--ghost)); }
|
|
4234
4367
|
.themetgl svg { display: block; }
|
|
4235
|
-
`),
|
|
4368
|
+
`),oo=16,so={light:`moon`,dark:`sun`},co={light:`Switch to dark mode`,dark:`Switch to light mode`};E(`slicc-theme-toggle`,class extends HTMLElement{static observedAttributes=[`theme`];#e;#t=null;#n=!1;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[ao];let e=O(`button`,{class:`themetgl`,part:`button`,type:`button`,"aria-pressed":`false`},O(`slot`,{name:`glyph-light`},r(so.light,{size:oo})),O(`slot`,{name:`glyph-dark`,hidden:!0},r(so.dark,{size:oo})));this.#e.replaceChildren(e),this.#t=e}connectedCallback(){this.#t?.addEventListener(`click`,this.#i),this.#a(this.theme??`light`,{silent:!0})}disconnectedCallback(){this.#t?.removeEventListener(`click`,this.#i)}attributeChangedCallback(e,t,n){e!==`theme`||t===n||this.#n||this.isConnected&&this.#a(this.#r(n)??`light`,{silent:!0})}get theme(){return this.#r(this.getAttribute(`theme`))}set theme(e){this.#a(e===`dark`?`dark`:`light`,{silent:!0})}get pressed(){return this.theme===`dark`}#r(e){return e===`dark`?`dark`:e===`light`?`light`:null}#i=()=>{this.#a(this.theme===`dark`?`light`:`dark`)};#a(e,t={}){this.#n=!0;try{if(ro(e),this.getAttribute(`theme`)!==e&&this.setAttribute(`theme`,e),this.#t){this.#t.setAttribute(`aria-pressed`,e===`dark`?`true`:`false`),this.#t.title=co[e];let t=this.#e.querySelector(`slot[name="glyph-light"]`),n=this.#e.querySelector(`slot[name="glyph-dark"]`);t?.toggleAttribute(`hidden`,e===`dark`),n?.toggleAttribute(`hidden`,e===`light`)}for(let t of document.querySelectorAll(`slicc-pill, slicc-add-menu`))t.setAttribute(`theme`,e)}finally{this.#n=!1}t.silent||this.dispatchEvent(new CustomEvent(`slicc-theme-change`,{detail:{theme:e},bubbles:!0,composed:!0}))}}),E(`slicc-theme`,class extends HTMLElement{static observedAttributes=[`theme`];connectedCallback(){no(this.ownerDocument),this.classList.add(`slicc-theme`),this.#e()}attributeChangedCallback(e,t,n){e===`theme`&&t!==n&&this.isConnected&&this.#e()}get theme(){return this.getAttribute(`theme`)===`dark`?`dark`:`light`}set theme(e){this.setAttribute(`theme`,e===`dark`?`dark`:`light`)}#e(){let e=this.theme;ro(e,this),this.dispatchEvent(new CustomEvent(`slicc-theme-change`,{detail:{theme:e},bubbles:!0,composed:!0}))}});function lo(e){switch(e.slice(e.lastIndexOf(`.`)).toLowerCase()){case`.png`:case`.jpg`:case`.jpeg`:case`.gif`:case`.webp`:case`.svg`:return`image`;case`.mp3`:case`.wav`:case`.ogg`:case`.m4a`:case`.flac`:return`music`;case`.mp4`:case`.webm`:case`.mov`:case`.avi`:return`film`;case`.json`:return`braces`;case`.md`:return`file-text`;case`.html`:case`.htm`:return`globe`;case`.css`:return`palette`;case`.ts`:case`.js`:case`.tsx`:case`.jsx`:case`.mjs`:case`.cjs`:return`file-code`;case`.zip`:case`.tar`:case`.gz`:case`.bz2`:return`file-archive`;case`.pdf`:return`file-text`;default:return`file`}}function uo(e){return e<1024?e+` B`:e<1024*1024?(e/1024).toFixed(1)+`K`:e<1024*1024*1024?(e/(1024*1024)).toFixed(1)+`M`:(e/(1024*1024*1024)).toFixed(1)+`G`}var fo=`
|
|
4236
4369
|
slicc-file-tree {
|
|
4237
4370
|
width: 190px;
|
|
4238
4371
|
flex: 0 0 auto;
|
|
@@ -4256,6 +4389,7 @@ slicc-file-tree .grp:first-child {
|
|
|
4256
4389
|
padding-top: 4px;
|
|
4257
4390
|
}
|
|
4258
4391
|
slicc-file-tree .f {
|
|
4392
|
+
position: relative;
|
|
4259
4393
|
display: flex;
|
|
4260
4394
|
align-items: center;
|
|
4261
4395
|
gap: 5px;
|
|
@@ -4314,13 +4448,56 @@ slicc-file-tree .f .sz {
|
|
|
4314
4448
|
font-size: 10px;
|
|
4315
4449
|
flex-shrink: 0;
|
|
4316
4450
|
opacity: 0.7;
|
|
4451
|
+
transition: opacity 0.1s ease;
|
|
4452
|
+
}
|
|
4453
|
+
slicc-file-tree .f:hover .sz {
|
|
4454
|
+
opacity: 0;
|
|
4455
|
+
pointer-events: none;
|
|
4456
|
+
}
|
|
4457
|
+
slicc-file-tree .actions {
|
|
4458
|
+
position: absolute;
|
|
4459
|
+
right: 4px;
|
|
4460
|
+
top: 50%;
|
|
4461
|
+
transform: translateY(-50%);
|
|
4462
|
+
display: flex;
|
|
4463
|
+
align-items: center;
|
|
4464
|
+
gap: 2px;
|
|
4465
|
+
opacity: 0;
|
|
4466
|
+
transition: opacity 0.1s ease;
|
|
4467
|
+
background: linear-gradient(to right, transparent, var(--canvas, #fff) 8px);
|
|
4468
|
+
padding-left: 12px;
|
|
4469
|
+
}
|
|
4470
|
+
slicc-file-tree .f:hover .actions {
|
|
4471
|
+
opacity: 1;
|
|
4472
|
+
}
|
|
4473
|
+
slicc-file-tree .f.on .actions {
|
|
4474
|
+
background: linear-gradient(to right, transparent, color-mix(in srgb, var(--violet) 10%, var(--canvas)) 8px);
|
|
4475
|
+
}
|
|
4476
|
+
slicc-file-tree .actions button {
|
|
4477
|
+
width: 20px;
|
|
4478
|
+
height: 20px;
|
|
4479
|
+
display: grid;
|
|
4480
|
+
place-items: center;
|
|
4481
|
+
border: none;
|
|
4482
|
+
background: transparent;
|
|
4483
|
+
border-radius: 4px;
|
|
4484
|
+
color: var(--txt-3);
|
|
4485
|
+
cursor: pointer;
|
|
4486
|
+
padding: 0;
|
|
4487
|
+
}
|
|
4488
|
+
slicc-file-tree .actions button:hover {
|
|
4489
|
+
color: var(--txt-1, var(--ink));
|
|
4490
|
+
background: var(--ghost);
|
|
4491
|
+
}
|
|
4492
|
+
slicc-file-tree .actions button:active {
|
|
4493
|
+
opacity: 0.6;
|
|
4317
4494
|
}
|
|
4318
4495
|
|
|
4319
4496
|
.dark slicc-file-tree .f.on,
|
|
4320
4497
|
[data-theme="dark"] slicc-file-tree .f.on {
|
|
4321
4498
|
background: color-mix(in srgb, var(--violet) 22%, var(--canvas));
|
|
4322
4499
|
}
|
|
4323
|
-
`,
|
|
4500
|
+
`,po=`slicc-file-tree-style`;function mo(e){if(e.getElementById(po))return;let t=e.createElement(`style`);t.id=po,t.textContent=fo,(e.head??e.documentElement).appendChild(t)}function ho(e,t){let n=[];for(let i of e)if(i.kind===`group`)n.push(O(`div`,{class:`grp`},i.label));else if(i.kind===`dir`){let e=t.has(i.id);n.push(O(`div`,{class:e?`dir open`:`dir`,"data-dir-id":i.id,"aria-expanded":e?`true`:`false`},r(`chevron-right`,{size:14,class:`chev`}),i.label));let a=O(`div`,{class:`children`,hidden:e?void 0:!0});D(a,ho(i.children??[],t)),n.push(a)}else{let e=O(`div`,{class:`actions`},O(`button`,{"data-action":`preview`,type:`button`},r(`eye`,{size:14})),O(`button`,{"data-action":`reference`,type:`button`},r(`at-sign`,{size:14})),O(`button`,{"data-action":`download`,type:`button`},r(`arrow-down-to-line`,{size:14})),O(`button`,{"data-action":`overflow`,type:`button`},r(`ellipsis`,{size:14}))),t=O(`div`,{class:`f`,"data-id":i.id},r(lo(i.label),{size:12,class:`ficon`}),i.label,e);i.size!=null&&t.appendChild(O(`span`,{class:`sz`},uo(i.size))),n.push(t)}return n}var go=class extends HTMLElement{static get observedAttributes(){return[`selected`]}#e=null;#t=new Map;#n=new Set;#r=!1;#i=null;connectedCallback(){mo(this.ownerDocument),this.#r||=(this.#e??(this.#e=this.#o(),this.#l()),!0),this.#s(),this.#f()}disconnectedCallback(){this.#i&&=(this.removeEventListener(`click`,this.#i),null)}attributeChangedCallback(e){e===`selected`&&this.#r&&this.isConnected&&this.#a()}get items(){return this.#e?this.#e.slice():[]}set items(e){let t=!this.#r;this.#e=Array.isArray(e)?e.slice():[],this.#r=!0,t&&this.#l(),this.isConnected&&(this.#s(),this.#f())}toggleDir(e){if(!this.#u(e,this.#e??[]))return;let t=!this.#n.has(e);t?this.#n.add(e):this.#n.delete(e),this.#s(),this.dispatchEvent(new CustomEvent(`dir-toggle`,{bubbles:!0,composed:!0,detail:{id:e,open:t}}))}isDirOpen(e){return this.#n.has(e)}get selected(){return this.getAttribute(`selected`)}set selected(e){e==null?this.removeAttribute(`selected`):this.setAttribute(`selected`,e)}selectFile(e){if(!this.querySelector(`.f[data-id="${_o(e)}"]`))return;this.getAttribute(`selected`)!==e&&this.setAttribute(`selected`,e),this.#a();let t=this.#t.get(e)??e;this.dispatchEvent(new CustomEvent(`file-select`,{bubbles:!0,composed:!0,detail:{id:e,path:t}}))}#a(){let e=this.getAttribute(`selected`);for(let t of this.querySelectorAll(`.f`))t.classList.toggle(`on`,t.dataset.id===e)}#o(){let e=[];for(let t of Array.from(this.children)){if(!(t instanceof HTMLElement))continue;let n=(t.textContent??``).trim();if(n)if(t.classList.contains(`grp`)||t.hasAttribute(`data-group`)||t.dataset.group!=null)e.push({kind:`group`,label:n});else{let r=t.dataset.id??t.id??n;e.push({kind:`file`,id:r,label:n})}}return e}#s(){let e=this.#e??[];this.#t.clear(),this.#c(e),this.replaceChildren(...ho(e,this.#n)),this.#a()}#c(e){for(let t of e)t.kind===`file`?this.#t.set(t.id,t.path??t.label):t.kind===`dir`&&this.#c(t.children??[])}#l(){this.#n.clear();let e=t=>{for(let n of t)n.kind===`dir`&&(n.open&&this.#n.add(n.id),e(n.children??[]))};e(this.#e??[])}#u(e,t){for(let n of t)if(n.kind===`dir`&&(n.id===e||this.#u(e,n.children??[])))return!0;return!1}#d(e){let t=e.dataset.action,n=e.closest(`.f`);if(!n)return!1;let r=n.dataset.id;if(r==null)return!1;let i=this.#t.get(r)??r;return t===`preview`?this.dispatchEvent(new CustomEvent(`file-preview`,{bubbles:!0,composed:!0,detail:{id:r,path:i}})):t===`reference`?this.dispatchEvent(new CustomEvent(`file-reference`,{bubbles:!0,composed:!0,detail:{id:r,path:i}})):t===`download`?this.dispatchEvent(new CustomEvent(`file-download`,{bubbles:!0,composed:!0,detail:{id:r,path:i}})):t===`overflow`&&this.dispatchEvent(new CustomEvent(`file-overflow`,{bubbles:!0,composed:!0,detail:{id:r,path:i,anchor:e}})),!0}#f(){this.#i||(this.#i=e=>{let t=e.target,n=t?.closest(`[data-action]`);if(n&&this.contains(n)&&this.#d(n))return;let r=t?.closest(`.dir`);if(r&&this.contains(r)){let e=r.dataset.dirId;e!=null&&this.toggleDir(e);return}let i=t?.closest(`.f`);if(!i||!this.contains(i))return;let a=i.dataset.id;a!=null&&this.selectFile(a)},this.addEventListener(`click`,this.#i))}};function _o(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}E(`slicc-file-tree`,go);var vo=`
|
|
4324
4501
|
slicc-surface {
|
|
4325
4502
|
position: absolute;
|
|
4326
4503
|
inset: 0;
|
|
@@ -4352,7 +4529,7 @@ slicc-surface:fullscreen {
|
|
|
4352
4529
|
background: var(--canvas, #fff);
|
|
4353
4530
|
position: fixed;
|
|
4354
4531
|
}
|
|
4355
|
-
`,
|
|
4532
|
+
`,yo=`slicc-surface-style`;function bo(e){if(e.getElementById(yo))return;let t=e.createElement(`style`);t.id=yo,t.textContent=vo,(e.head??e.documentElement).appendChild(t)}function xo(e){return e===`block`||e===`column`?e:`flex`}E(`slicc-surface`,class extends HTMLElement{static observedAttributes=[`surface-id`,`active`,`layout`];connectedCallback(){bo(this.ownerDocument),this.#e()}attributeChangedCallback(e,t,n){this.isConnected&&(e===`surface-id`?this.#e():e===`active`&&t!==n&&this.dispatchEvent(new CustomEvent(`surface-toggle`,{bubbles:!0,composed:!0,detail:{surfaceId:this.surfaceId,active:this.active,layout:this.layout}})))}get surfaceId(){return this.getAttribute(`surface-id`)}set surfaceId(e){e==null?this.removeAttribute(`surface-id`):this.setAttribute(`surface-id`,e)}get active(){return this.hasAttribute(`active`)}set active(e){this.toggleAttribute(`active`,e)}get layout(){return xo(this.getAttribute(`layout`))}set layout(e){this.setAttribute(`layout`,xo(e))}#e(){let e=this.surfaceId;e==null?delete this.dataset.s:this.dataset.s=e}});var So=k(`
|
|
4356
4533
|
:host{display:inline-flex;white-space:nowrap;}
|
|
4357
4534
|
.tab{display:inline-flex;align-items:center;gap:7px;font-family:var(--ui);font-size:12px;color:var(--txt-2);background:transparent;border:1px solid transparent;border-radius:8px;padding:6px 10px;cursor:pointer;white-space:nowrap;}
|
|
4358
4535
|
.tab:hover{background:var(--ghost);color:var(--ink);}
|
|
@@ -4368,7 +4545,7 @@ slicc-surface:fullscreen {
|
|
|
4368
4545
|
.x{margin-left:3px;width:15px;height:15px;border-radius:4px;display:grid;place-items:center;color:var(--txt-3);}
|
|
4369
4546
|
.x:hover{background:var(--line);color:var(--ink);}
|
|
4370
4547
|
.sg svg,.x svg{display:block;}
|
|
4371
|
-
`),
|
|
4548
|
+
`),Co=13;E(`slicc-tab`,class extends HTMLElement{static observedAttributes=[`tab-id`,`kind`,`active`,`closable`,`badge`,`glyph`,`label`,`theme`];#e;#t=null;constructor(){super(),this.#e=this.attachShadow({mode:`open`}),this.#e.adoptedStyleSheets=[So]}connectedCallback(){this.#n(),this.#r()}disconnectedCallback(){this.#i()}attributeChangedCallback(){this.isConnected&&this.#n()}get tabId(){return this.getAttribute(`tab-id`)}set tabId(e){e==null?this.removeAttribute(`tab-id`):this.setAttribute(`tab-id`,e)}get kind(){return this.getAttribute(`kind`)===`sprinkle`?`sprinkle`:`tool`}set kind(e){this.setAttribute(`kind`,e===`sprinkle`?`sprinkle`:`tool`)}get active(){return this.hasAttribute(`active`)}set active(e){this.toggleAttribute(`active`,e)}get closable(){return this.hasAttribute(`closable`)}set closable(e){this.toggleAttribute(`closable`,e)}get badge(){return this.getAttribute(`badge`)}set badge(e){e==null?this.removeAttribute(`badge`):this.setAttribute(`badge`,e)}get glyph(){return this.getAttribute(`glyph`)}set glyph(e){e==null?this.removeAttribute(`glyph`):this.setAttribute(`glyph`,e)}get label(){return this.getAttribute(`label`)}set label(e){e==null?this.removeAttribute(`label`):this.setAttribute(`label`,e)}#n(){let e=this.kind===`sprinkle`,t=O(`button`,{class:`tab${e?` sp`:``}${this.active?` on`:``}`,part:`tab`,type:`button`});if(this.tabId!=null&&t.setAttribute(`data-t`,this.tabId),e){let e=this.badge??`sparkles`;t.append(O(`span`,{class:`sg`,part:`badge`,"aria-hidden":`true`},r(e,{size:Co})))}else this.glyph!=null&&t.append(O(`span`,{class:`gl`,part:`glyph`,"aria-hidden":`true`},this.glyph));let n=this.label;t.append(n==null?O(`slot`):document.createTextNode(n)),this.closable&&t.append(O(`span`,{class:`x`,part:`close`,"data-close":``,role:`button`,"aria-label":`Close tab`},r(`x`,{size:Co}))),this.#e.replaceChildren(t)}#r(){this.#t||(this.#t=e=>this.#a(e),this.#e.addEventListener(`click`,this.#t))}#i(){this.#t&&=(this.#e.removeEventListener(`click`,this.#t),null)}#a(e){let t=e.target,n={tabId:this.tabId};if(t?.closest(`[data-close]`)){e.stopPropagation(),this.dispatchEvent(new CustomEvent(`close`,{detail:n,bubbles:!0,composed:!0}));return}this.dispatchEvent(new CustomEvent(`select`,{detail:n,bubbles:!0,composed:!0}))}});var wo=`
|
|
4372
4549
|
slicc-tab-bar {
|
|
4373
4550
|
display: flex;
|
|
4374
4551
|
align-items: center;
|
|
@@ -4380,7 +4557,7 @@ slicc-tab-bar {
|
|
|
4380
4557
|
slicc-tab-bar[hidden] {
|
|
4381
4558
|
display: none;
|
|
4382
4559
|
}
|
|
4383
|
-
`,
|
|
4560
|
+
`,To=`slicc-tab-bar-style`;function Eo(e){if(e.getElementById(To))return;let t=e.createElement(`style`);t.id=To,t.textContent=wo,(e.head??e.documentElement).appendChild(t)}function Do(e){return e===`sprinkle`?`sprinkle`:`tool`}E(`slicc-tab-bar`,class extends HTMLElement{static observedAttributes=[`active`];#e=[];#t=!1;#n=null;#r=null;#i=null;connectedCallback(){Eo(this.ownerDocument),this.#c(),this.#p()}disconnectedCallback(){this.#l(),this.#t=!1}attributeChangedCallback(e){e===`active`&&this.isConnected&&this.#o()}get active(){return this.getAttribute(`active`)}set active(e){e==null?this.removeAttribute(`active`):this.setAttribute(`active`,e)}get tabs(){return this.#e.map(e=>({...e}))}set tabs(e){this.#e=(e??[]).map(e=>({...e})),this.active!=null&&!this.#e.some(e=>e.id===this.active)&&this.#a(this.#e[0]?.id??null),this.#t=!1,this.isConnected&&this.#p()}addTab(e){let t={...e,kind:Do(e.kind)},n=this.#e.findIndex(e=>e.id===t.id);return n>=0?this.#e[n]=t:this.#e.push(t),this.#t=!1,this.isConnected&&this.#p(),this.selectTab(t.id),t}removeTab(e){let t=this.#e.findIndex(t=>t.id===e);if(t<0)return;let n=this.active===e;if(this.#e.splice(t,1),this.#t=!1,this.isConnected&&this.#p(),this.dispatchEvent(new CustomEvent(`tab-close`,{detail:{id:e},bubbles:!0,composed:!0})),n){let e=this.#e[0]?.id??null;e==null?this.#a(null):this.selectTab(e)}}selectTab(e){this.#e.some(t=>t.id===e)&&this.active!==e&&(this.#a(e),this.dispatchEvent(new CustomEvent(`tab-select`,{detail:{id:e},bubbles:!0,composed:!0})))}#a(e){e==null?this.removeAttribute(`active`):this.setAttribute(`active`,e),this.#o()}#o(){let e=this.active;for(let t of this.querySelectorAll(`:scope > slicc-tab`)){let n=t.getAttribute(`tab-id`);t.toggleAttribute(`active`,n!=null&&n===e)}}#s(e){if(!(e instanceof Element))return null;let t=e.closest(`slicc-tab`);return!t||t.parentElement!==this?null:t.getAttribute(`tab-id`)}#c(){this.#r||(this.#r=e=>this.#u(e),this.#i=e=>this.#d(e),this.addEventListener(`select`,this.#r),this.addEventListener(`close`,this.#i),this.#n=e=>this.#f(e),this.addEventListener(`click`,this.#n))}#l(){this.#r&&this.removeEventListener(`select`,this.#r),this.#i&&this.removeEventListener(`close`,this.#i),this.#n&&this.removeEventListener(`click`,this.#n),this.#r=null,this.#i=null,this.#n=null}#u(e){if(e.target===this)return;let t=this.#s(e.target);t!=null&&(e.stopPropagation(),this.selectTab(t))}#d(e){if(e.target===this)return;let t=this.#s(e.target);t!=null&&(e.stopPropagation(),this.removeTab(t))}#f(e){let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`slicc-tab`);if(!n||n.parentElement!==this)return;let r=n.getAttribute(`tab-id`);if(r==null)return;let i=t.closest(`.x, [data-close]`);if(i&&n.contains(i)){e.stopPropagation(),this.removeTab(r);return}this.selectTab(r)}#p(){if(this.#t)return;this.#t=!0;let e=this.active,t=[];for(let n of this.#e){let r=Do(n.kind);r!==`tool`&&t.push(O(`slicc-tab`,{"tab-id":n.id,kind:r,label:n.label,part:`tab`,closable:n.closable?!0:void 0,glyph:n.glyph||void 0,active:e!=null&&e===n.id?!0:void 0}))}this.replaceChildren(...t)}});var Oo=`/**
|
|
4384
4561
|
* Copyright (c) 2014 The xterm.js authors. All rights reserved.
|
|
4385
4562
|
* Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
|
|
4386
4563
|
* https://github.com/chjj/term.js
|
|
@@ -4665,7 +4842,7 @@ slicc-tab-bar[hidden] {
|
|
|
4665
4842
|
.xterm .xterm-scrollable-element > .shadow.top.left {
|
|
4666
4843
|
box-shadow: var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset;
|
|
4667
4844
|
}
|
|
4668
|
-
`,
|
|
4845
|
+
`,ko={background:`#0c0c0e`,foreground:`#e7e7ea`,cursor:`#e7e7ea`,cursorAccent:`#0c0c0e`,selectionBackground:`#8b5cf64d`,selectionForeground:`#ffffff`,black:`#0c0c0e`,red:`#f43f5e`,green:`#5bd17b`,yellow:`#f59e0b`,blue:`#3b82f6`,magenta:`#8b5cf6`,cyan:`#06b6d4`,white:`#e7e7ea`,brightBlack:`#8a8a93`,brightRed:`#fb7185`,brightGreen:`#86efac`,brightYellow:`#fbbf24`,brightBlue:`#60a5fa`,brightMagenta:`#a78bfa`,brightCyan:`#22d3ee`,brightWhite:`#ffffff`},Ao=`
|
|
4669
4846
|
:host {
|
|
4670
4847
|
display: flex;
|
|
4671
4848
|
flex-direction: column;
|
|
@@ -4706,7 +4883,7 @@ slicc-tab-bar[hidden] {
|
|
|
4706
4883
|
/* xterm.js wants its container to size the canvas; let it fill. */
|
|
4707
4884
|
.host .xterm { height: 100%; }
|
|
4708
4885
|
.host .xterm-viewport { overflow-y: auto; }
|
|
4709
|
-
`,
|
|
4886
|
+
`,jo=null;function Mo(){return jo||=[k(Oo),k(Ao)],jo}var No=class extends HTMLElement{static observedAttributes=[`label`,`hide-header`];#e;#t=null;#n=null;#r=null;#i=null;#a=[];#o=!1;constructor(){super(),this.#e=this.attachShadow({mode:`open`})}connectedCallback(){this.#o=!1,this.#s(),this.#c()}disconnectedCallback(){this.#l()}attributeChangedCallback(e){if(this.isConnected&&e===`label`){let e=this.#e.querySelector(`.title`);e&&(e.textContent=this.label)}}get label(){return this.getAttribute(`label`)??`Terminal`}set label(e){e==null?this.removeAttribute(`label`):this.setAttribute(`label`,e)}get hideHeader(){return this.hasAttribute(`hide-header`)}set hideHeader(e){this.toggleAttribute(`hide-header`,e)}get terminal(){return this.#n}write(e){this.#n?this.#n.write(e):this.#a.push(e)}writeln(e){this.#n?this.#n.writeln(e):this.#a.push(`${e}\r\n`)}clear(){this.#n?this.#n.clear():this.#a.length=0}focus(){this.#n?.focus()}fit(){this.#r?.fit()}#s(){if(this.#t)return;this.#e.adoptedStyleSheets=Mo();let e=O(`div`,{class:`hd`,part:`header`},r(`terminal`,{size:14}),O(`span`,{class:`title`},this.label),O(`span`,{class:`spacer`})),t=O(`div`,{class:`host`,part:`host`});this.#e.replaceChildren(e,t),this.#t=t}async#c(){if(this.#n||this.#o)return;let[{Terminal:e},{FitAddon:n}]=await Promise.all([t(()=>import(`./xterm-DooSxjI5.js`),[]),t(()=>import(`./addon-fit-DthTIhi3.js`),[])]);if(this.#o||!this.#t)return;let r=new e({cursorBlink:!Po(),fontSize:12,lineHeight:1.25,fontFamily:`'IBM Plex Mono', 'Source Code Pro', 'JetBrains Mono', ui-monospace, monospace`,theme:ko,convertEol:!0,scrollback:2e3}),i=new n;if(r.loadAddon(i),r.open(this.#t),r.onData(e=>{this.dispatchEvent(new CustomEvent(`terminal-data`,{detail:e,bubbles:!0,composed:!0}))}),this.#n=r,this.#r=i,i.fit(),this.#a.length){for(let e of this.#a)r.write(e);this.#a.length=0}typeof ResizeObserver==`function`&&(this.#i=new ResizeObserver(()=>this.#r?.fit()),this.#i.observe(this.#t))}#l(){this.#o=!0,this.#i?.disconnect(),this.#i=null,this.#n?.dispose(),this.#n=null,this.#r=null,this.#a.length=0}};function Po(){return typeof matchMedia==`function`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches}E(`slicc-terminal`,No);var Fo=`
|
|
4710
4887
|
slicc-workbench-body {
|
|
4711
4888
|
flex: 1;
|
|
4712
4889
|
min-height: 0;
|
|
@@ -4727,7 +4904,7 @@ slicc-workbench-body > * {
|
|
|
4727
4904
|
slicc-workbench-body > .slicc-wbbody__active {
|
|
4728
4905
|
display: flex;
|
|
4729
4906
|
}
|
|
4730
|
-
`,
|
|
4907
|
+
`,Io=`slicc-workbench-body-style`,Lo=`slicc-wbbody__active`,Ro=`slicc-surface`;function zo(e){if(e.getElementById(Io))return;let t=e.createElement(`style`);t.id=Io,t.textContent=Fo,(e.head??e.documentElement).appendChild(t)}E(`slicc-workbench-body`,class extends HTMLElement{static observedAttributes=[`active`];#e=!1;#t=new MutationObserver(()=>this.#i());connectedCallback(){zo(this.ownerDocument),this.#e=!0,this.#i(),this.#t.observe(this,{childList:!0})}disconnectedCallback(){this.#e=!1,this.#t.disconnect()}attributeChangedCallback(e,t,n){t!==n&&e===`active`&&this.#e&&this.#i()}get active(){return this.getAttribute(`active`)}set active(e){e==null?this.removeAttribute(`active`):this.setAttribute(`active`,e)}get activeSurface(){let e=this.active;return e==null?null:this.#n().find(t=>this.#r(t)===e)??null}get surfaces(){return this.#n()}selectSurface(e){let t=this.active;e!==t&&(this.setAttribute(`active`,e),this.#e||this.#i(),this.dispatchEvent(new CustomEvent(`slicc-surface-change`,{bubbles:!0,composed:!0,detail:{id:e,previous:t}})))}#n(){let e=[];for(let t of Array.from(this.children))t instanceof HTMLElement&&t.localName===Ro&&e.push(t);return e}#r(e){return e.getAttribute(`surface-id`)||e.getAttribute(`data-s`)||e.id}#i(){let e=this.active;for(let t of this.#n()){let n=e!=null&&this.#r(t)===e;t.classList.toggle(Lo,n),t.toggleAttribute(`active`,n)}}});var Bo=`
|
|
4731
4908
|
slicc-workbench-header {
|
|
4732
4909
|
flex: 0 0 auto;
|
|
4733
4910
|
display: flex;
|
|
@@ -4754,7 +4931,7 @@ slicc-workbench-header > slicc-collapse-btn {
|
|
|
4754
4931
|
slicc-workbench-header > slicc-tab-bar {
|
|
4755
4932
|
min-width: 0;
|
|
4756
4933
|
}
|
|
4757
|
-
`,
|
|
4934
|
+
`,Vo=`slicc-workbench-header-style`;function Ho(e){if(e.getElementById(Vo))return;let t=e.createElement(`style`);t.id=Vo,t.textContent=Bo,(e.head??e.documentElement).appendChild(t)}E(`slicc-workbench-header`,class extends HTMLElement{static observedAttributes=[`kind`];#e;#t=!1;connectedCallback(){Ho(this.ownerDocument),this.#n(),this.#r(),this.addEventListener(`collapse`,this.#i)}disconnectedCallback(){this.removeEventListener(`collapse`,this.#i)}attributeChangedCallback(e){e===`kind`&&this.isConnected&&this.#r()}get kind(){let e=this.getAttribute(`kind`);return e===`tool`||e===`sprinkle`?e:null}set kind(e){e==null?this.removeAttribute(`kind`):this.setAttribute(`kind`,e)}get spacer(){return this.#n(),this.#e}#n(){if(this.#t)return;this.#t=!0;let e=this.querySelector(`:scope > .slicc-wbhead__spacer`);if(e instanceof HTMLElement){this.#e=e;return}this.#e=this.ownerDocument.createElement(`div`),this.#e.className=`slicc-wbhead__spacer`,this.#e.setAttribute(`part`,`spacer`);let t=this.querySelector(`:scope > slicc-pane-tag`),n=this.querySelector(`:scope > slicc-collapse-btn`);this.appendChild(this.#e),t&&this.appendChild(t),n&&this.appendChild(n)}#r(){let e=this.querySelector(`:scope > slicc-pane-tag`);if(!e)return;let t=this.kind;t==null?e.removeAttribute(`kind`):e.setAttribute(`kind`,t)}#i=e=>{e.target!==this&&(e.stopPropagation(),this.dispatchEvent(new CustomEvent(`collapse`,{bubbles:!0,composed:!0})))}});var Uo=`
|
|
4758
4935
|
slicc-workbench-pane {
|
|
4759
4936
|
display: flex;
|
|
4760
4937
|
flex-direction: column;
|
|
@@ -4793,15 +4970,15 @@ slicc-workbench-pane slicc-pane .slicc-pane__body {
|
|
|
4793
4970
|
flex-direction: column;
|
|
4794
4971
|
min-height: 0;
|
|
4795
4972
|
}
|
|
4796
|
-
`,Eo=`slicc-workbench-pane-style`;function Do(e){if(e.getElementById(Eo))return;let t=e.createElement(`style`);t.id=Eo,t.textContent=To,(e.head??e.documentElement).appendChild(t)}v(`slicc-workbench-pane`,class extends HTMLElement{static observedAttributes=[`open`];#e;#t=!1;connectedCallback(){Do(this.ownerDocument),this.#n()}attributeChangedCallback(e,t,n){e===`open`&&t!==n&&this.isConnected&&this.dispatchEvent(new CustomEvent(`slicc-workbench-pane-toggle`,{bubbles:!0,composed:!0,detail:{open:n!==null}}))}get open(){return this.hasAttribute(`open`)}set open(e){e?this.setAttribute(`open`,``):this.removeAttribute(`open`)}get pane(){return this.#n(),this.#e}#n(){if(this.#t)return;this.#t=!0;let e=this.querySelector(`:scope > slicc-pane`);if(e instanceof HTMLElement){this.#e=e;return}let t=Array.from(this.childNodes);this.#e=this.ownerDocument.createElement(`slicc-pane`),this.#e.setAttribute(`elevated`,``),this.#e.setAttribute(`part`,`pane`);for(let e of t)this.#e.appendChild(e);this.appendChild(this.#e)}});var Oo=e({DEFAULT_LAUNCHER_CORNER:()=>fr,DEFAULT_LAUNCHER_FOLLOWER_STATUS:()=>hr,HOLD_TO_ENABLE_MS:()=>Ct,LAUNCHER_FOLLOWER_STATUS_ATTR:()=>P,SliccImagePreview:()=>gt,TOKENS_CSS:()=>La,ensureGlobalTokens:()=>za,followSystemTheme:()=>Va,setTheme:()=>Ba}),{entries:ko,setPrototypeOf:Ao,isFrozen:jo,getPrototypeOf:Mo,getOwnPropertyDescriptor:No}=Object,{freeze:I,seal:L,create:Po}=Object,{apply:Fo,construct:Io}=typeof Reflect<`u`&&Reflect;I||=function(e){return e},L||=function(e){return e},Fo||=function(e,t){var n=[...arguments].slice(2);return e.apply(t,n)},Io||=function(e){return new e(...[...arguments].slice(1))};var Lo=B(Array.prototype.forEach),Ro=B(Array.prototype.lastIndexOf),zo=B(Array.prototype.pop),Bo=B(Array.prototype.push),Vo=B(Array.prototype.splice),Ho=B(String.prototype.toLowerCase),Uo=B(String.prototype.toString),Wo=B(String.prototype.match),Go=B(String.prototype.replace),Ko=B(String.prototype.indexOf),qo=B(String.prototype.trim),R=B(Object.prototype.hasOwnProperty),z=B(RegExp.prototype.test),Jo=Yo(TypeError);function B(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);var n=[...arguments].slice(1);return Fo(e,t,n)}}function Yo(e){return function(){return Io(e,[...arguments])}}function V(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Ho;Ao&&Ao(e,null);let r=t.length;for(;r--;){let i=t[r];if(typeof i==`string`){let e=n(i);e!==i&&(jo(t)||(t[r]=e),i=e)}e[i]=!0}return e}function Xo(e){for(let t=0;t<e.length;t++)R(e,t)||(e[t]=null);return e}function H(e){let t=Po(null);for(let[n,r]of ko(e))R(e,n)&&(Array.isArray(r)?t[n]=Xo(r):r&&typeof r==`object`&&r.constructor===Object?t[n]=H(r):t[n]=r);return t}function Zo(e,t){for(;e!==null;){let n=No(e,t);if(n){if(n.get)return B(n.get);if(typeof n.value==`function`)return B(n.value)}e=Mo(e)}function n(){return null}return n}var Qo=I(`a.abbr.acronym.address.area.article.aside.audio.b.bdi.bdo.big.blink.blockquote.body.br.button.canvas.caption.center.cite.code.col.colgroup.content.data.datalist.dd.decorator.del.details.dfn.dialog.dir.div.dl.dt.element.em.fieldset.figcaption.figure.font.footer.form.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.img.input.ins.kbd.label.legend.li.main.map.mark.marquee.menu.menuitem.meter.nav.nobr.ol.optgroup.option.output.p.picture.pre.progress.q.rp.rt.ruby.s.samp.search.section.select.shadow.slot.small.source.spacer.span.strike.strong.style.sub.summary.sup.table.tbody.td.template.textarea.tfoot.th.thead.time.tr.track.tt.u.ul.var.video.wbr`.split(`.`)),$o=I(`svg.a.altglyph.altglyphdef.altglyphitem.animatecolor.animatemotion.animatetransform.circle.clippath.defs.desc.ellipse.enterkeyhint.exportparts.filter.font.g.glyph.glyphref.hkern.image.inputmode.line.lineargradient.marker.mask.metadata.mpath.part.path.pattern.polygon.polyline.radialgradient.rect.stop.style.switch.symbol.text.textpath.title.tref.tspan.view.vkern`.split(`.`)),es=I([`feBlend`,`feColorMatrix`,`feComponentTransfer`,`feComposite`,`feConvolveMatrix`,`feDiffuseLighting`,`feDisplacementMap`,`feDistantLight`,`feDropShadow`,`feFlood`,`feFuncA`,`feFuncB`,`feFuncG`,`feFuncR`,`feGaussianBlur`,`feImage`,`feMerge`,`feMergeNode`,`feMorphology`,`feOffset`,`fePointLight`,`feSpecularLighting`,`feSpotLight`,`feTile`,`feTurbulence`]),ts=I([`animate`,`color-profile`,`cursor`,`discard`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`foreignobject`,`hatch`,`hatchpath`,`mesh`,`meshgradient`,`meshpatch`,`meshrow`,`missing-glyph`,`script`,`set`,`solidcolor`,`unknown`,`use`]),ns=I(`math.menclose.merror.mfenced.mfrac.mglyph.mi.mlabeledtr.mmultiscripts.mn.mo.mover.mpadded.mphantom.mroot.mrow.ms.mspace.msqrt.mstyle.msub.msup.msubsup.mtable.mtd.mtext.mtr.munder.munderover.mprescripts`.split(`.`)),rs=I([`maction`,`maligngroup`,`malignmark`,`mlongdiv`,`mscarries`,`mscarry`,`msgroup`,`mstack`,`msline`,`msrow`,`semantics`,`annotation`,`annotation-xml`,`mprescripts`,`none`]),is=I([`#text`]),as=I(`accept.action.align.alt.autocapitalize.autocomplete.autopictureinpicture.autoplay.background.bgcolor.border.capture.cellpadding.cellspacing.checked.cite.class.clear.color.cols.colspan.controls.controlslist.coords.crossorigin.datetime.decoding.default.dir.disabled.disablepictureinpicture.disableremoteplayback.download.draggable.enctype.enterkeyhint.exportparts.face.for.headers.height.hidden.high.href.hreflang.id.inert.inputmode.integrity.ismap.kind.label.lang.list.loading.loop.low.max.maxlength.media.method.min.minlength.multiple.muted.name.nonce.noshade.novalidate.nowrap.open.optimum.part.pattern.placeholder.playsinline.popover.popovertarget.popovertargetaction.poster.preload.pubdate.radiogroup.readonly.rel.required.rev.reversed.role.rows.rowspan.spellcheck.scope.selected.shape.size.sizes.slot.span.srclang.start.src.srcset.step.style.summary.tabindex.title.translate.type.usemap.valign.value.width.wrap.xmlns.slot`.split(`.`)),os=I(`accent-height.accumulate.additive.alignment-baseline.amplitude.ascent.attributename.attributetype.azimuth.basefrequency.baseline-shift.begin.bias.by.class.clip.clippathunits.clip-path.clip-rule.color.color-interpolation.color-interpolation-filters.color-profile.color-rendering.cx.cy.d.dx.dy.diffuseconstant.direction.display.divisor.dur.edgemode.elevation.end.exponent.fill.fill-opacity.fill-rule.filter.filterunits.flood-color.flood-opacity.font-family.font-size.font-size-adjust.font-stretch.font-style.font-variant.font-weight.fx.fy.g1.g2.glyph-name.glyphref.gradientunits.gradienttransform.height.href.id.image-rendering.in.in2.intercept.k.k1.k2.k3.k4.kerning.keypoints.keysplines.keytimes.lang.lengthadjust.letter-spacing.kernelmatrix.kernelunitlength.lighting-color.local.marker-end.marker-mid.marker-start.markerheight.markerunits.markerwidth.maskcontentunits.maskunits.max.mask.mask-type.media.method.mode.min.name.numoctaves.offset.operator.opacity.order.orient.orientation.origin.overflow.paint-order.path.pathlength.patterncontentunits.patterntransform.patternunits.points.preservealpha.preserveaspectratio.primitiveunits.r.rx.ry.radius.refx.refy.repeatcount.repeatdur.restart.result.rotate.scale.seed.shape-rendering.slope.specularconstant.specularexponent.spreadmethod.startoffset.stddeviation.stitchtiles.stop-color.stop-opacity.stroke-dasharray.stroke-dashoffset.stroke-linecap.stroke-linejoin.stroke-miterlimit.stroke-opacity.stroke.stroke-width.style.surfacescale.systemlanguage.tabindex.tablevalues.targetx.targety.transform.transform-origin.text-anchor.text-decoration.text-rendering.textlength.type.u1.u2.unicode.values.viewbox.visibility.version.vert-adv-y.vert-origin-x.vert-origin-y.width.word-spacing.wrap.writing-mode.xchannelselector.ychannelselector.x.x1.x2.xmlns.y.y1.y2.z.zoomandpan`.split(`.`)),ss=I(`accent.accentunder.align.bevelled.close.columnsalign.columnlines.columnspan.denomalign.depth.dir.display.displaystyle.encoding.fence.frame.height.href.id.largeop.length.linethickness.lspace.lquote.mathbackground.mathcolor.mathsize.mathvariant.maxsize.minsize.movablelimits.notation.numalign.open.rowalign.rowlines.rowspacing.rowspan.rspace.rquote.scriptlevel.scriptminsize.scriptsizemultiplier.selection.separator.separators.stretchy.subscriptshift.supscriptshift.symmetric.voffset.width.xmlns`.split(`.`)),cs=I([`xlink:href`,`xml:id`,`xlink:title`,`xml:space`,`xmlns:xlink`]),ls=L(/\{\{[\w\W]*|[\w\W]*\}\}/gm),us=L(/<%[\w\W]*|[\w\W]*%>/gm),ds=L(/\$\{[\w\W]*/gm),fs=L(/^data-[\-\w.\u00B7-\uFFFF]+$/),ps=L(/^aria-[\-\w]+$/),ms=L(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),hs=L(/^(?:\w+script|data):/i),gs=L(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),_s=L(/^html$/i),vs=L(/^[a-z][.\w]*(-[.\w]+)+$/i),ys=Object.freeze({__proto__:null,ARIA_ATTR:ps,ATTR_WHITESPACE:gs,CUSTOM_ELEMENT:vs,DATA_ATTR:fs,DOCTYPE_NAME:_s,ERB_EXPR:us,IS_ALLOWED_URI:ms,IS_SCRIPT_OR_DATA:hs,MUSTACHE_EXPR:ls,TMPLIT_EXPR:ds}),bs={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},xs=function(){return typeof window>`u`?null:window},Ss=function(e,t){if(typeof e!=`object`||typeof e.createPolicy!=`function`)return null;let n=null,r=`data-tt-policy-suffix`;t&&t.hasAttribute(r)&&(n=t.getAttribute(r));let i=`dompurify`+(n?`#`+n:``);try{return e.createPolicy(i,{createHTML(e){return e},createScriptURL(e){return e}})}catch{return console.warn(`TrustedTypes policy `+i+` could not be created.`),null}},Cs=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function ws(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:xs(),t=e=>ws(e);if(t.version=`3.3.3`,t.removed=[],!e||!e.document||e.document.nodeType!==bs.document||!e.Element)return t.isSupported=!1,t;let{document:n}=e,r=n,i=r.currentScript,{DocumentFragment:a,HTMLTemplateElement:o,Node:s,Element:c,NodeFilter:l,NamedNodeMap:u=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:d,DOMParser:f,trustedTypes:p}=e,m=c.prototype,h=Zo(m,`cloneNode`),g=Zo(m,`remove`),ee=Zo(m,`nextSibling`),te=Zo(m,`childNodes`),_=Zo(m,`parentNode`);if(typeof o==`function`){let e=n.createElement(`template`);e.content&&e.content.ownerDocument&&(n=e.content.ownerDocument)}let v,y=``,{implementation:b,createNodeIterator:x,createDocumentFragment:ne,getElementsByTagName:re}=n,{importNode:ie}=r,S=Cs();t.isSupported=typeof ko==`function`&&typeof _==`function`&&b&&b.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:ae,ERB_EXPR:oe,TMPLIT_EXPR:se,DATA_ATTR:ce,ARIA_ATTR:le,IS_SCRIPT_OR_DATA:ue,ATTR_WHITESPACE:de,CUSTOM_ELEMENT:fe}=ys,{IS_ALLOWED_URI:pe}=ys,C=null,me=V({},[...Qo,...$o,...es,...ns,...is]),w=null,he=V({},[...as,...os,...ss,...cs]),T=Object.seal(Po(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),ge=null,_e=null,ve=Object.seal(Po(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),ye=!0,be=!0,xe=!1,Se=!0,Ce=!1,we=!0,Te=!1,Ee=!1,De=!1,E=!1,Oe=!1,ke=!1,Ae=!0,je=!1,Me=!0,Ne=!1,Pe={},D=null,Fe=V({},[`annotation-xml`,`audio`,`colgroup`,`desc`,`foreignobject`,`head`,`iframe`,`math`,`mi`,`mn`,`mo`,`ms`,`mtext`,`noembed`,`noframes`,`noscript`,`plaintext`,`script`,`style`,`svg`,`template`,`thead`,`title`,`video`,`xmp`]),Ie=null,Le=V({},[`audio`,`video`,`img`,`source`,`image`,`track`]),Re=null,ze=V({},[`alt`,`class`,`for`,`id`,`label`,`name`,`pattern`,`placeholder`,`role`,`summary`,`title`,`value`,`style`,`xmlns`]),Be=`http://www.w3.org/1998/Math/MathML`,Ve=`http://www.w3.org/2000/svg`,O=`http://www.w3.org/1999/xhtml`,He=O,k=!1,Ue=null,We=V({},[Be,Ve,O],Uo),Ge=V({},[`mi`,`mo`,`mn`,`ms`,`mtext`]),Ke=V({},[`annotation-xml`]),qe=V({},[`title`,`style`,`font`,`a`,`script`]),Je=null,Ye=[`application/xhtml+xml`,`text/html`],A=null,Xe=null,Ze=n.createElement(`form`),Qe=function(e){return e instanceof RegExp||e instanceof Function},$e=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(Xe&&Xe===e)){if((!e||typeof e!=`object`)&&(e={}),e=H(e),Je=Ye.indexOf(e.PARSER_MEDIA_TYPE)===-1?`text/html`:e.PARSER_MEDIA_TYPE,A=Je===`application/xhtml+xml`?Uo:Ho,C=R(e,`ALLOWED_TAGS`)?V({},e.ALLOWED_TAGS,A):me,w=R(e,`ALLOWED_ATTR`)?V({},e.ALLOWED_ATTR,A):he,Ue=R(e,`ALLOWED_NAMESPACES`)?V({},e.ALLOWED_NAMESPACES,Uo):We,Re=R(e,`ADD_URI_SAFE_ATTR`)?V(H(ze),e.ADD_URI_SAFE_ATTR,A):ze,Ie=R(e,`ADD_DATA_URI_TAGS`)?V(H(Le),e.ADD_DATA_URI_TAGS,A):Le,D=R(e,`FORBID_CONTENTS`)?V({},e.FORBID_CONTENTS,A):Fe,ge=R(e,`FORBID_TAGS`)?V({},e.FORBID_TAGS,A):H({}),_e=R(e,`FORBID_ATTR`)?V({},e.FORBID_ATTR,A):H({}),Pe=R(e,`USE_PROFILES`)?e.USE_PROFILES:!1,ye=e.ALLOW_ARIA_ATTR!==!1,be=e.ALLOW_DATA_ATTR!==!1,xe=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Se=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Ce=e.SAFE_FOR_TEMPLATES||!1,we=e.SAFE_FOR_XML!==!1,Te=e.WHOLE_DOCUMENT||!1,E=e.RETURN_DOM||!1,Oe=e.RETURN_DOM_FRAGMENT||!1,ke=e.RETURN_TRUSTED_TYPE||!1,De=e.FORCE_BODY||!1,Ae=e.SANITIZE_DOM!==!1,je=e.SANITIZE_NAMED_PROPS||!1,Me=e.KEEP_CONTENT!==!1,Ne=e.IN_PLACE||!1,pe=e.ALLOWED_URI_REGEXP||ms,He=e.NAMESPACE||O,Ge=e.MATHML_TEXT_INTEGRATION_POINTS||Ge,Ke=e.HTML_INTEGRATION_POINTS||Ke,T=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&Qe(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(T.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&Qe(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(T.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements==`boolean`&&(T.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Ce&&(be=!1),Oe&&(E=!0),Pe&&(C=V({},is),w=Po(null),Pe.html===!0&&(V(C,Qo),V(w,as)),Pe.svg===!0&&(V(C,$o),V(w,os),V(w,cs)),Pe.svgFilters===!0&&(V(C,es),V(w,os),V(w,cs)),Pe.mathMl===!0&&(V(C,ns),V(w,ss),V(w,cs))),R(e,`ADD_TAGS`)||(ve.tagCheck=null),R(e,`ADD_ATTR`)||(ve.attributeCheck=null),e.ADD_TAGS&&(typeof e.ADD_TAGS==`function`?ve.tagCheck=e.ADD_TAGS:(C===me&&(C=H(C)),V(C,e.ADD_TAGS,A))),e.ADD_ATTR&&(typeof e.ADD_ATTR==`function`?ve.attributeCheck=e.ADD_ATTR:(w===he&&(w=H(w)),V(w,e.ADD_ATTR,A))),e.ADD_URI_SAFE_ATTR&&V(Re,e.ADD_URI_SAFE_ATTR,A),e.FORBID_CONTENTS&&(D===Fe&&(D=H(D)),V(D,e.FORBID_CONTENTS,A)),e.ADD_FORBID_CONTENTS&&(D===Fe&&(D=H(D)),V(D,e.ADD_FORBID_CONTENTS,A)),Me&&(C[`#text`]=!0),Te&&V(C,[`html`,`head`,`body`]),C.table&&(V(C,[`tbody`]),delete ge.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!=`function`)throw Jo(`TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.`);if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!=`function`)throw Jo(`TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.`);v=e.TRUSTED_TYPES_POLICY,y=v.createHTML(``)}else v===void 0&&(v=Ss(p,i)),v!==null&&typeof y==`string`&&(y=v.createHTML(``));I&&I(e),Xe=e}},et=V({},[...$o,...es,...ts]),tt=V({},[...ns,...rs]),nt=function(e){let t=_(e);(!t||!t.tagName)&&(t={namespaceURI:He,tagName:`template`});let n=Ho(e.tagName),r=Ho(t.tagName);return Ue[e.namespaceURI]?e.namespaceURI===Ve?t.namespaceURI===O?n===`svg`:t.namespaceURI===Be?n===`svg`&&(r===`annotation-xml`||Ge[r]):!!et[n]:e.namespaceURI===Be?t.namespaceURI===O?n===`math`:t.namespaceURI===Ve?n===`math`&&Ke[r]:!!tt[n]:e.namespaceURI===O?t.namespaceURI===Ve&&!Ke[r]||t.namespaceURI===Be&&!Ge[r]?!1:!tt[n]&&(qe[n]||!et[n]):!!(Je===`application/xhtml+xml`&&Ue[e.namespaceURI]):!1},rt=function(e){Bo(t.removed,{element:e});try{_(e).removeChild(e)}catch{g(e)}},j=function(e,n){try{Bo(t.removed,{attribute:n.getAttributeNode(e),from:n})}catch{Bo(t.removed,{attribute:null,from:n})}if(n.removeAttribute(e),e===`is`)if(E||Oe)try{rt(n)}catch{}else try{n.setAttribute(e,``)}catch{}},it=function(e){let t=null,r=null;if(De)e=`<remove></remove>`+e;else{let t=Wo(e,/^[\r\n\t ]+/);r=t&&t[0]}Je===`application/xhtml+xml`&&He===O&&(e=`<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>`+e+`</body></html>`);let i=v?v.createHTML(e):e;if(He===O)try{t=new f().parseFromString(i,Je)}catch{}if(!t||!t.documentElement){t=b.createDocument(He,`template`,null);try{t.documentElement.innerHTML=k?y:i}catch{}}let a=t.body||t.documentElement;return e&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),He===O?re.call(t,Te?`html`:`body`)[0]:Te?t.documentElement:a},at=function(e){return x.call(e.ownerDocument||e,e,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT|l.SHOW_PROCESSING_INSTRUCTION|l.SHOW_CDATA_SECTION,null)},ot=function(e){return e instanceof d&&(typeof e.nodeName!=`string`||typeof e.textContent!=`string`||typeof e.removeChild!=`function`||!(e.attributes instanceof u)||typeof e.removeAttribute!=`function`||typeof e.setAttribute!=`function`||typeof e.namespaceURI!=`string`||typeof e.insertBefore!=`function`||typeof e.hasChildNodes!=`function`)},st=function(e){return typeof s==`function`&&e instanceof s};function M(e,n,r){Lo(e,e=>{e.call(t,n,r,Xe)})}let ct=function(e){let n=null;if(M(S.beforeSanitizeElements,e,null),ot(e))return rt(e),!0;let r=A(e.nodeName);if(M(S.uponSanitizeElement,e,{tagName:r,allowedTags:C}),we&&e.hasChildNodes()&&!st(e.firstElementChild)&&z(/<[/\w!]/g,e.innerHTML)&&z(/<[/\w!]/g,e.textContent)||e.nodeType===bs.progressingInstruction||we&&e.nodeType===bs.comment&&z(/<[/\w]/g,e.data))return rt(e),!0;if(!(ve.tagCheck instanceof Function&&ve.tagCheck(r))&&(!C[r]||ge[r])){if(!ge[r]&&ut(r)&&(T.tagNameCheck instanceof RegExp&&z(T.tagNameCheck,r)||T.tagNameCheck instanceof Function&&T.tagNameCheck(r)))return!1;if(Me&&!D[r]){let t=_(e)||e.parentNode,n=te(e)||e.childNodes;if(n&&t){let r=n.length;for(let i=r-1;i>=0;--i){let r=h(n[i],!0);r.__removalCount=(e.__removalCount||0)+1,t.insertBefore(r,ee(e))}}}return rt(e),!0}return e instanceof c&&!nt(e)||(r===`noscript`||r===`noembed`||r===`noframes`)&&z(/<\/no(script|embed|frames)/i,e.innerHTML)?(rt(e),!0):(Ce&&e.nodeType===bs.text&&(n=e.textContent,Lo([ae,oe,se],e=>{n=Go(n,e,` `)}),e.textContent!==n&&(Bo(t.removed,{element:e.cloneNode()}),e.textContent=n)),M(S.afterSanitizeElements,e,null),!1)},lt=function(e,t,r){if(_e[t]||Ae&&(t===`id`||t===`name`)&&(r in n||r in Ze))return!1;if(!(be&&!_e[t]&&z(ce,t))&&!(ye&&z(le,t))&&!(ve.attributeCheck instanceof Function&&ve.attributeCheck(t,e))){if(!w[t]||_e[t]){if(!(ut(e)&&(T.tagNameCheck instanceof RegExp&&z(T.tagNameCheck,e)||T.tagNameCheck instanceof Function&&T.tagNameCheck(e))&&(T.attributeNameCheck instanceof RegExp&&z(T.attributeNameCheck,t)||T.attributeNameCheck instanceof Function&&T.attributeNameCheck(t,e))||t===`is`&&T.allowCustomizedBuiltInElements&&(T.tagNameCheck instanceof RegExp&&z(T.tagNameCheck,r)||T.tagNameCheck instanceof Function&&T.tagNameCheck(r))))return!1}else if(!Re[t]&&!z(pe,Go(r,de,``))&&!((t===`src`||t===`xlink:href`||t===`href`)&&e!==`script`&&Ko(r,`data:`)===0&&Ie[e])&&!(xe&&!z(ue,Go(r,de,``)))&&r)return!1}return!0},ut=function(e){return e!==`annotation-xml`&&Wo(e,fe)},dt=function(e){M(S.beforeSanitizeAttributes,e,null);let{attributes:n}=e;if(!n||ot(e))return;let r={attrName:``,attrValue:``,keepAttr:!0,allowedAttributes:w,forceKeepAttr:void 0},i=n.length;for(;i--;){let{name:a,namespaceURI:o,value:s}=n[i],c=A(a),l=s,u=a===`value`?l:qo(l);if(r.attrName=c,r.attrValue=u,r.keepAttr=!0,r.forceKeepAttr=void 0,M(S.uponSanitizeAttribute,e,r),u=r.attrValue,je&&(c===`id`||c===`name`)&&(j(a,e),u=`user-content-`+u),we&&z(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,u)){j(a,e);continue}if(c===`attributename`&&Wo(u,`href`)){j(a,e);continue}if(r.forceKeepAttr)continue;if(!r.keepAttr){j(a,e);continue}if(!Se&&z(/\/>/i,u)){j(a,e);continue}Ce&&Lo([ae,oe,se],e=>{u=Go(u,e,` `)});let d=A(e.nodeName);if(!lt(d,c,u)){j(a,e);continue}if(v&&typeof p==`object`&&typeof p.getAttributeType==`function`&&!o)switch(p.getAttributeType(d,c)){case`TrustedHTML`:u=v.createHTML(u);break;case`TrustedScriptURL`:u=v.createScriptURL(u);break}if(u!==l)try{o?e.setAttributeNS(o,a,u):e.setAttribute(a,u),ot(e)?rt(e):zo(t.removed)}catch{j(a,e)}}M(S.afterSanitizeAttributes,e,null)},ft=function e(t){let n=null,r=at(t);for(M(S.beforeSanitizeShadowDOM,t,null);n=r.nextNode();)M(S.uponSanitizeShadowNode,n,null),ct(n),dt(n),n.content instanceof a&&e(n.content);M(S.afterSanitizeShadowDOM,t,null)};return t.sanitize=function(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=null,o=null,c=null,l=null;if(k=!e,k&&(e=`<!-->`),typeof e!=`string`&&!st(e))if(typeof e.toString==`function`){if(e=e.toString(),typeof e!=`string`)throw Jo(`dirty is not a string, aborting`)}else throw Jo(`toString is not a function`);if(!t.isSupported)return e;if(Ee||$e(n),t.removed=[],typeof e==`string`&&(Ne=!1),Ne){if(e.nodeName){let t=A(e.nodeName);if(!C[t]||ge[t])throw Jo(`root node is forbidden and cannot be sanitized in-place`)}}else if(e instanceof s)i=it(`<!---->`),o=i.ownerDocument.importNode(e,!0),o.nodeType===bs.element&&o.nodeName===`BODY`||o.nodeName===`HTML`?i=o:i.appendChild(o);else{if(!E&&!Ce&&!Te&&e.indexOf(`<`)===-1)return v&&ke?v.createHTML(e):e;if(i=it(e),!i)return E?null:ke?y:``}i&&De&&rt(i.firstChild);let u=at(Ne?e:i);for(;c=u.nextNode();)ct(c),dt(c),c.content instanceof a&&ft(c.content);if(Ne)return e;if(E){if(Oe)for(l=ne.call(i.ownerDocument);i.firstChild;)l.appendChild(i.firstChild);else l=i;return(w.shadowroot||w.shadowrootmode)&&(l=ie.call(r,l,!0)),l}let d=Te?i.outerHTML:i.innerHTML;return Te&&C[`!doctype`]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&z(_s,i.ownerDocument.doctype.name)&&(d=`<!DOCTYPE `+i.ownerDocument.doctype.name+`>
|
|
4797
|
-
`+d),Ce&&
|
|
4798
|
-
]`).replace(`lheading`,
|
|
4973
|
+
`,Wo=`slicc-workbench-pane-style`;function Go(e){if(e.getElementById(Wo))return;let t=e.createElement(`style`);t.id=Wo,t.textContent=Uo,(e.head??e.documentElement).appendChild(t)}E(`slicc-workbench-pane`,class extends HTMLElement{static observedAttributes=[`open`];#e;#t=!1;connectedCallback(){Go(this.ownerDocument),this.#n()}attributeChangedCallback(e,t,n){e===`open`&&t!==n&&this.isConnected&&this.dispatchEvent(new CustomEvent(`slicc-workbench-pane-toggle`,{bubbles:!0,composed:!0,detail:{open:n!==null}}))}get open(){return this.hasAttribute(`open`)}set open(e){e?this.setAttribute(`open`,``):this.removeAttribute(`open`)}get pane(){return this.#n(),this.#e}#n(){if(this.#t)return;this.#t=!0;let e=this.querySelector(`:scope > slicc-pane`);if(e instanceof HTMLElement){this.#e=e;return}let t=Array.from(this.childNodes);this.#e=this.ownerDocument.createElement(`slicc-pane`),this.#e.setAttribute(`elevated`,``),this.#e.setAttribute(`part`,`pane`);for(let e of t)this.#e.appendChild(e);this.appendChild(this.#e)}});var Ko=e({DEFAULT_LAUNCHER_CORNER:()=>ae,DEFAULT_LAUNCHER_FOLLOWER_STATUS:()=>se,HOLD_TO_ENABLE_MS:()=>tn,LAUNCHER_FOLLOWER_STATUS_ATTR:()=>x,SliccImagePreview:()=>Jt,TOKENS_CSS:()=>eo,ensureGlobalTokens:()=>no,followSystemTheme:()=>io,setTheme:()=>ro}),{entries:qo,setPrototypeOf:Jo,isFrozen:Yo,getPrototypeOf:Xo,getOwnPropertyDescriptor:Zo}=Object,{freeze:L,seal:R,create:Qo}=Object,{apply:$o,construct:es}=typeof Reflect<`u`&&Reflect;L||=function(e){return e},R||=function(e){return e},$o||=function(e,t){var n=[...arguments].slice(2);return e.apply(t,n)},es||=function(e){return new e(...[...arguments].slice(1))};var ts=V(Array.prototype.forEach),ns=V(Array.prototype.lastIndexOf),rs=V(Array.prototype.pop),is=V(Array.prototype.push),as=V(Array.prototype.splice),os=V(String.prototype.toLowerCase),ss=V(String.prototype.toString),cs=V(String.prototype.match),ls=V(String.prototype.replace),us=V(String.prototype.indexOf),ds=V(String.prototype.trim),z=V(Object.prototype.hasOwnProperty),B=V(RegExp.prototype.test),fs=ps(TypeError);function V(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);var n=[...arguments].slice(1);return $o(e,t,n)}}function ps(e){return function(){return es(e,[...arguments])}}function H(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:os;Jo&&Jo(e,null);let r=t.length;for(;r--;){let i=t[r];if(typeof i==`string`){let e=n(i);e!==i&&(Yo(t)||(t[r]=e),i=e)}e[i]=!0}return e}function ms(e){for(let t=0;t<e.length;t++)z(e,t)||(e[t]=null);return e}function U(e){let t=Qo(null);for(let[n,r]of qo(e))z(e,n)&&(Array.isArray(r)?t[n]=ms(r):r&&typeof r==`object`&&r.constructor===Object?t[n]=U(r):t[n]=r);return t}function hs(e,t){for(;e!==null;){let n=Zo(e,t);if(n){if(n.get)return V(n.get);if(typeof n.value==`function`)return V(n.value)}e=Xo(e)}function n(){return null}return n}var gs=L(`a.abbr.acronym.address.area.article.aside.audio.b.bdi.bdo.big.blink.blockquote.body.br.button.canvas.caption.center.cite.code.col.colgroup.content.data.datalist.dd.decorator.del.details.dfn.dialog.dir.div.dl.dt.element.em.fieldset.figcaption.figure.font.footer.form.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.img.input.ins.kbd.label.legend.li.main.map.mark.marquee.menu.menuitem.meter.nav.nobr.ol.optgroup.option.output.p.picture.pre.progress.q.rp.rt.ruby.s.samp.search.section.select.shadow.slot.small.source.spacer.span.strike.strong.style.sub.summary.sup.table.tbody.td.template.textarea.tfoot.th.thead.time.tr.track.tt.u.ul.var.video.wbr`.split(`.`)),_s=L(`svg.a.altglyph.altglyphdef.altglyphitem.animatecolor.animatemotion.animatetransform.circle.clippath.defs.desc.ellipse.enterkeyhint.exportparts.filter.font.g.glyph.glyphref.hkern.image.inputmode.line.lineargradient.marker.mask.metadata.mpath.part.path.pattern.polygon.polyline.radialgradient.rect.stop.style.switch.symbol.text.textpath.title.tref.tspan.view.vkern`.split(`.`)),vs=L([`feBlend`,`feColorMatrix`,`feComponentTransfer`,`feComposite`,`feConvolveMatrix`,`feDiffuseLighting`,`feDisplacementMap`,`feDistantLight`,`feDropShadow`,`feFlood`,`feFuncA`,`feFuncB`,`feFuncG`,`feFuncR`,`feGaussianBlur`,`feImage`,`feMerge`,`feMergeNode`,`feMorphology`,`feOffset`,`fePointLight`,`feSpecularLighting`,`feSpotLight`,`feTile`,`feTurbulence`]),ys=L([`animate`,`color-profile`,`cursor`,`discard`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`foreignobject`,`hatch`,`hatchpath`,`mesh`,`meshgradient`,`meshpatch`,`meshrow`,`missing-glyph`,`script`,`set`,`solidcolor`,`unknown`,`use`]),bs=L(`math.menclose.merror.mfenced.mfrac.mglyph.mi.mlabeledtr.mmultiscripts.mn.mo.mover.mpadded.mphantom.mroot.mrow.ms.mspace.msqrt.mstyle.msub.msup.msubsup.mtable.mtd.mtext.mtr.munder.munderover.mprescripts`.split(`.`)),xs=L([`maction`,`maligngroup`,`malignmark`,`mlongdiv`,`mscarries`,`mscarry`,`msgroup`,`mstack`,`msline`,`msrow`,`semantics`,`annotation`,`annotation-xml`,`mprescripts`,`none`]),Ss=L([`#text`]),Cs=L(`accept.action.align.alt.autocapitalize.autocomplete.autopictureinpicture.autoplay.background.bgcolor.border.capture.cellpadding.cellspacing.checked.cite.class.clear.color.cols.colspan.controls.controlslist.coords.crossorigin.datetime.decoding.default.dir.disabled.disablepictureinpicture.disableremoteplayback.download.draggable.enctype.enterkeyhint.exportparts.face.for.headers.height.hidden.high.href.hreflang.id.inert.inputmode.integrity.ismap.kind.label.lang.list.loading.loop.low.max.maxlength.media.method.min.minlength.multiple.muted.name.nonce.noshade.novalidate.nowrap.open.optimum.part.pattern.placeholder.playsinline.popover.popovertarget.popovertargetaction.poster.preload.pubdate.radiogroup.readonly.rel.required.rev.reversed.role.rows.rowspan.spellcheck.scope.selected.shape.size.sizes.slot.span.srclang.start.src.srcset.step.style.summary.tabindex.title.translate.type.usemap.valign.value.width.wrap.xmlns.slot`.split(`.`)),ws=L(`accent-height.accumulate.additive.alignment-baseline.amplitude.ascent.attributename.attributetype.azimuth.basefrequency.baseline-shift.begin.bias.by.class.clip.clippathunits.clip-path.clip-rule.color.color-interpolation.color-interpolation-filters.color-profile.color-rendering.cx.cy.d.dx.dy.diffuseconstant.direction.display.divisor.dur.edgemode.elevation.end.exponent.fill.fill-opacity.fill-rule.filter.filterunits.flood-color.flood-opacity.font-family.font-size.font-size-adjust.font-stretch.font-style.font-variant.font-weight.fx.fy.g1.g2.glyph-name.glyphref.gradientunits.gradienttransform.height.href.id.image-rendering.in.in2.intercept.k.k1.k2.k3.k4.kerning.keypoints.keysplines.keytimes.lang.lengthadjust.letter-spacing.kernelmatrix.kernelunitlength.lighting-color.local.marker-end.marker-mid.marker-start.markerheight.markerunits.markerwidth.maskcontentunits.maskunits.max.mask.mask-type.media.method.mode.min.name.numoctaves.offset.operator.opacity.order.orient.orientation.origin.overflow.paint-order.path.pathlength.patterncontentunits.patterntransform.patternunits.points.preservealpha.preserveaspectratio.primitiveunits.r.rx.ry.radius.refx.refy.repeatcount.repeatdur.restart.result.rotate.scale.seed.shape-rendering.slope.specularconstant.specularexponent.spreadmethod.startoffset.stddeviation.stitchtiles.stop-color.stop-opacity.stroke-dasharray.stroke-dashoffset.stroke-linecap.stroke-linejoin.stroke-miterlimit.stroke-opacity.stroke.stroke-width.style.surfacescale.systemlanguage.tabindex.tablevalues.targetx.targety.transform.transform-origin.text-anchor.text-decoration.text-rendering.textlength.type.u1.u2.unicode.values.viewbox.visibility.version.vert-adv-y.vert-origin-x.vert-origin-y.width.word-spacing.wrap.writing-mode.xchannelselector.ychannelselector.x.x1.x2.xmlns.y.y1.y2.z.zoomandpan`.split(`.`)),Ts=L(`accent.accentunder.align.bevelled.close.columnsalign.columnlines.columnspan.denomalign.depth.dir.display.displaystyle.encoding.fence.frame.height.href.id.largeop.length.linethickness.lspace.lquote.mathbackground.mathcolor.mathsize.mathvariant.maxsize.minsize.movablelimits.notation.numalign.open.rowalign.rowlines.rowspacing.rowspan.rspace.rquote.scriptlevel.scriptminsize.scriptsizemultiplier.selection.separator.separators.stretchy.subscriptshift.supscriptshift.symmetric.voffset.width.xmlns`.split(`.`)),Es=L([`xlink:href`,`xml:id`,`xlink:title`,`xml:space`,`xmlns:xlink`]),Ds=R(/\{\{[\w\W]*|[\w\W]*\}\}/gm),Os=R(/<%[\w\W]*|[\w\W]*%>/gm),ks=R(/\$\{[\w\W]*/gm),As=R(/^data-[\-\w.\u00B7-\uFFFF]+$/),js=R(/^aria-[\-\w]+$/),Ms=R(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Ns=R(/^(?:\w+script|data):/i),Ps=R(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Fs=R(/^html$/i),Is=R(/^[a-z][.\w]*(-[.\w]+)+$/i),Ls=Object.freeze({__proto__:null,ARIA_ATTR:js,ATTR_WHITESPACE:Ps,CUSTOM_ELEMENT:Is,DATA_ATTR:As,DOCTYPE_NAME:Fs,ERB_EXPR:Os,IS_ALLOWED_URI:Ms,IS_SCRIPT_OR_DATA:Ns,MUSTACHE_EXPR:Ds,TMPLIT_EXPR:ks}),Rs={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},zs=function(){return typeof window>`u`?null:window},Bs=function(e,t){if(typeof e!=`object`||typeof e.createPolicy!=`function`)return null;let n=null,r=`data-tt-policy-suffix`;t&&t.hasAttribute(r)&&(n=t.getAttribute(r));let i=`dompurify`+(n?`#`+n:``);try{return e.createPolicy(i,{createHTML(e){return e},createScriptURL(e){return e}})}catch{return console.warn(`TrustedTypes policy `+i+` could not be created.`),null}},Vs=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function Hs(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:zs(),t=e=>Hs(e);if(t.version=`3.3.3`,t.removed=[],!e||!e.document||e.document.nodeType!==Rs.document||!e.Element)return t.isSupported=!1,t;let{document:n}=e,r=n,i=r.currentScript,{DocumentFragment:a,HTMLTemplateElement:o,Node:s,Element:c,NodeFilter:l,NamedNodeMap:u=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:d,DOMParser:f,trustedTypes:p}=e,m=c.prototype,h=hs(m,`cloneNode`),g=hs(m,`remove`),ee=hs(m,`nextSibling`),te=hs(m,`childNodes`),_=hs(m,`parentNode`);if(typeof o==`function`){let e=n.createElement(`template`);e.content&&e.content.ownerDocument&&(n=e.content.ownerDocument)}let v,y=``,{implementation:ne,createNodeIterator:re,createDocumentFragment:ie,getElementsByTagName:ae}=n,{importNode:oe}=r,b=Vs();t.isSupported=typeof qo==`function`&&typeof _==`function`&&ne&&ne.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:se,ERB_EXPR:x,TMPLIT_EXPR:ce,DATA_ATTR:le,ARIA_ATTR:ue,IS_SCRIPT_OR_DATA:de,ATTR_WHITESPACE:fe,CUSTOM_ELEMENT:pe}=Ls,{IS_ALLOWED_URI:me}=Ls,S=null,he=H({},[...gs,..._s,...vs,...bs,...Ss]),C=null,ge=H({},[...Cs,...ws,...Ts,...Es]),w=Object.seal(Qo(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),_e=null,ve=null,ye=Object.seal(Qo(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),T=!0,be=!0,xe=!1,Se=!0,Ce=!1,we=!0,Te=!1,Ee=!1,De=!1,E=!1,D=!1,O=!1,k=!0,Oe=!1,ke=!0,Ae=!1,je={},A=null,Me=H({},[`annotation-xml`,`audio`,`colgroup`,`desc`,`foreignobject`,`head`,`iframe`,`math`,`mi`,`mn`,`mo`,`ms`,`mtext`,`noembed`,`noframes`,`noscript`,`plaintext`,`script`,`style`,`svg`,`template`,`thead`,`title`,`video`,`xmp`]),Ne=null,Pe=H({},[`audio`,`video`,`img`,`source`,`image`,`track`]),Fe=null,Ie=H({},[`alt`,`class`,`for`,`id`,`label`,`name`,`pattern`,`placeholder`,`role`,`summary`,`title`,`value`,`style`,`xmlns`]),Le=`http://www.w3.org/1998/Math/MathML`,Re=`http://www.w3.org/2000/svg`,j=`http://www.w3.org/1999/xhtml`,ze=j,Be=!1,Ve=null,He=H({},[Le,Re,j],ss),Ue=H({},[`mi`,`mo`,`mn`,`ms`,`mtext`]),We=H({},[`annotation-xml`]),Ge=H({},[`title`,`style`,`font`,`a`,`script`]),Ke=null,qe=[`application/xhtml+xml`,`text/html`],M=null,Je=null,Ye=n.createElement(`form`),Xe=function(e){return e instanceof RegExp||e instanceof Function},Ze=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(Je&&Je===e)){if((!e||typeof e!=`object`)&&(e={}),e=U(e),Ke=qe.indexOf(e.PARSER_MEDIA_TYPE)===-1?`text/html`:e.PARSER_MEDIA_TYPE,M=Ke===`application/xhtml+xml`?ss:os,S=z(e,`ALLOWED_TAGS`)?H({},e.ALLOWED_TAGS,M):he,C=z(e,`ALLOWED_ATTR`)?H({},e.ALLOWED_ATTR,M):ge,Ve=z(e,`ALLOWED_NAMESPACES`)?H({},e.ALLOWED_NAMESPACES,ss):He,Fe=z(e,`ADD_URI_SAFE_ATTR`)?H(U(Ie),e.ADD_URI_SAFE_ATTR,M):Ie,Ne=z(e,`ADD_DATA_URI_TAGS`)?H(U(Pe),e.ADD_DATA_URI_TAGS,M):Pe,A=z(e,`FORBID_CONTENTS`)?H({},e.FORBID_CONTENTS,M):Me,_e=z(e,`FORBID_TAGS`)?H({},e.FORBID_TAGS,M):U({}),ve=z(e,`FORBID_ATTR`)?H({},e.FORBID_ATTR,M):U({}),je=z(e,`USE_PROFILES`)?e.USE_PROFILES:!1,T=e.ALLOW_ARIA_ATTR!==!1,be=e.ALLOW_DATA_ATTR!==!1,xe=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Se=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Ce=e.SAFE_FOR_TEMPLATES||!1,we=e.SAFE_FOR_XML!==!1,Te=e.WHOLE_DOCUMENT||!1,E=e.RETURN_DOM||!1,D=e.RETURN_DOM_FRAGMENT||!1,O=e.RETURN_TRUSTED_TYPE||!1,De=e.FORCE_BODY||!1,k=e.SANITIZE_DOM!==!1,Oe=e.SANITIZE_NAMED_PROPS||!1,ke=e.KEEP_CONTENT!==!1,Ae=e.IN_PLACE||!1,me=e.ALLOWED_URI_REGEXP||Ms,ze=e.NAMESPACE||j,Ue=e.MATHML_TEXT_INTEGRATION_POINTS||Ue,We=e.HTML_INTEGRATION_POINTS||We,w=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&Xe(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(w.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&Xe(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(w.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements==`boolean`&&(w.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Ce&&(be=!1),D&&(E=!0),je&&(S=H({},Ss),C=Qo(null),je.html===!0&&(H(S,gs),H(C,Cs)),je.svg===!0&&(H(S,_s),H(C,ws),H(C,Es)),je.svgFilters===!0&&(H(S,vs),H(C,ws),H(C,Es)),je.mathMl===!0&&(H(S,bs),H(C,Ts),H(C,Es))),z(e,`ADD_TAGS`)||(ye.tagCheck=null),z(e,`ADD_ATTR`)||(ye.attributeCheck=null),e.ADD_TAGS&&(typeof e.ADD_TAGS==`function`?ye.tagCheck=e.ADD_TAGS:(S===he&&(S=U(S)),H(S,e.ADD_TAGS,M))),e.ADD_ATTR&&(typeof e.ADD_ATTR==`function`?ye.attributeCheck=e.ADD_ATTR:(C===ge&&(C=U(C)),H(C,e.ADD_ATTR,M))),e.ADD_URI_SAFE_ATTR&&H(Fe,e.ADD_URI_SAFE_ATTR,M),e.FORBID_CONTENTS&&(A===Me&&(A=U(A)),H(A,e.FORBID_CONTENTS,M)),e.ADD_FORBID_CONTENTS&&(A===Me&&(A=U(A)),H(A,e.ADD_FORBID_CONTENTS,M)),ke&&(S[`#text`]=!0),Te&&H(S,[`html`,`head`,`body`]),S.table&&(H(S,[`tbody`]),delete _e.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!=`function`)throw fs(`TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.`);if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!=`function`)throw fs(`TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.`);v=e.TRUSTED_TYPES_POLICY,y=v.createHTML(``)}else v===void 0&&(v=Bs(p,i)),v!==null&&typeof y==`string`&&(y=v.createHTML(``));L&&L(e),Je=e}},Qe=H({},[..._s,...vs,...ys]),$e=H({},[...bs,...xs]),et=function(e){let t=_(e);(!t||!t.tagName)&&(t={namespaceURI:ze,tagName:`template`});let n=os(e.tagName),r=os(t.tagName);return Ve[e.namespaceURI]?e.namespaceURI===Re?t.namespaceURI===j?n===`svg`:t.namespaceURI===Le?n===`svg`&&(r===`annotation-xml`||Ue[r]):!!Qe[n]:e.namespaceURI===Le?t.namespaceURI===j?n===`math`:t.namespaceURI===Re?n===`math`&&We[r]:!!$e[n]:e.namespaceURI===j?t.namespaceURI===Re&&!We[r]||t.namespaceURI===Le&&!Ue[r]?!1:!$e[n]&&(Ge[n]||!Qe[n]):!!(Ke===`application/xhtml+xml`&&Ve[e.namespaceURI]):!1},N=function(e){is(t.removed,{element:e});try{_(e).removeChild(e)}catch{g(e)}},P=function(e,n){try{is(t.removed,{attribute:n.getAttributeNode(e),from:n})}catch{is(t.removed,{attribute:null,from:n})}if(n.removeAttribute(e),e===`is`)if(E||D)try{N(n)}catch{}else try{n.setAttribute(e,``)}catch{}},tt=function(e){let t=null,r=null;if(De)e=`<remove></remove>`+e;else{let t=cs(e,/^[\r\n\t ]+/);r=t&&t[0]}Ke===`application/xhtml+xml`&&ze===j&&(e=`<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>`+e+`</body></html>`);let i=v?v.createHTML(e):e;if(ze===j)try{t=new f().parseFromString(i,Ke)}catch{}if(!t||!t.documentElement){t=ne.createDocument(ze,`template`,null);try{t.documentElement.innerHTML=Be?y:i}catch{}}let a=t.body||t.documentElement;return e&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),ze===j?ae.call(t,Te?`html`:`body`)[0]:Te?t.documentElement:a},nt=function(e){return re.call(e.ownerDocument||e,e,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT|l.SHOW_PROCESSING_INSTRUCTION|l.SHOW_CDATA_SECTION,null)},rt=function(e){return e instanceof d&&(typeof e.nodeName!=`string`||typeof e.textContent!=`string`||typeof e.removeChild!=`function`||!(e.attributes instanceof u)||typeof e.removeAttribute!=`function`||typeof e.setAttribute!=`function`||typeof e.namespaceURI!=`string`||typeof e.insertBefore!=`function`||typeof e.hasChildNodes!=`function`)},it=function(e){return typeof s==`function`&&e instanceof s};function F(e,n,r){ts(e,e=>{e.call(t,n,r,Je)})}let at=function(e){let n=null;if(F(b.beforeSanitizeElements,e,null),rt(e))return N(e),!0;let r=M(e.nodeName);if(F(b.uponSanitizeElement,e,{tagName:r,allowedTags:S}),we&&e.hasChildNodes()&&!it(e.firstElementChild)&&B(/<[/\w!]/g,e.innerHTML)&&B(/<[/\w!]/g,e.textContent)||e.nodeType===Rs.progressingInstruction||we&&e.nodeType===Rs.comment&&B(/<[/\w]/g,e.data))return N(e),!0;if(!(ye.tagCheck instanceof Function&&ye.tagCheck(r))&&(!S[r]||_e[r])){if(!_e[r]&&st(r)&&(w.tagNameCheck instanceof RegExp&&B(w.tagNameCheck,r)||w.tagNameCheck instanceof Function&&w.tagNameCheck(r)))return!1;if(ke&&!A[r]){let t=_(e)||e.parentNode,n=te(e)||e.childNodes;if(n&&t){let r=n.length;for(let i=r-1;i>=0;--i){let r=h(n[i],!0);r.__removalCount=(e.__removalCount||0)+1,t.insertBefore(r,ee(e))}}}return N(e),!0}return e instanceof c&&!et(e)||(r===`noscript`||r===`noembed`||r===`noframes`)&&B(/<\/no(script|embed|frames)/i,e.innerHTML)?(N(e),!0):(Ce&&e.nodeType===Rs.text&&(n=e.textContent,ts([se,x,ce],e=>{n=ls(n,e,` `)}),e.textContent!==n&&(is(t.removed,{element:e.cloneNode()}),e.textContent=n)),F(b.afterSanitizeElements,e,null),!1)},ot=function(e,t,r){if(ve[t]||k&&(t===`id`||t===`name`)&&(r in n||r in Ye))return!1;if(!(be&&!ve[t]&&B(le,t))&&!(T&&B(ue,t))&&!(ye.attributeCheck instanceof Function&&ye.attributeCheck(t,e))){if(!C[t]||ve[t]){if(!(st(e)&&(w.tagNameCheck instanceof RegExp&&B(w.tagNameCheck,e)||w.tagNameCheck instanceof Function&&w.tagNameCheck(e))&&(w.attributeNameCheck instanceof RegExp&&B(w.attributeNameCheck,t)||w.attributeNameCheck instanceof Function&&w.attributeNameCheck(t,e))||t===`is`&&w.allowCustomizedBuiltInElements&&(w.tagNameCheck instanceof RegExp&&B(w.tagNameCheck,r)||w.tagNameCheck instanceof Function&&w.tagNameCheck(r))))return!1}else if(!Fe[t]&&!B(me,ls(r,fe,``))&&!((t===`src`||t===`xlink:href`||t===`href`)&&e!==`script`&&us(r,`data:`)===0&&Ne[e])&&!(xe&&!B(de,ls(r,fe,``)))&&r)return!1}return!0},st=function(e){return e!==`annotation-xml`&&cs(e,pe)},ct=function(e){F(b.beforeSanitizeAttributes,e,null);let{attributes:n}=e;if(!n||rt(e))return;let r={attrName:``,attrValue:``,keepAttr:!0,allowedAttributes:C,forceKeepAttr:void 0},i=n.length;for(;i--;){let{name:a,namespaceURI:o,value:s}=n[i],c=M(a),l=s,u=a===`value`?l:ds(l);if(r.attrName=c,r.attrValue=u,r.keepAttr=!0,r.forceKeepAttr=void 0,F(b.uponSanitizeAttribute,e,r),u=r.attrValue,Oe&&(c===`id`||c===`name`)&&(P(a,e),u=`user-content-`+u),we&&B(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,u)){P(a,e);continue}if(c===`attributename`&&cs(u,`href`)){P(a,e);continue}if(r.forceKeepAttr)continue;if(!r.keepAttr){P(a,e);continue}if(!Se&&B(/\/>/i,u)){P(a,e);continue}Ce&&ts([se,x,ce],e=>{u=ls(u,e,` `)});let d=M(e.nodeName);if(!ot(d,c,u)){P(a,e);continue}if(v&&typeof p==`object`&&typeof p.getAttributeType==`function`&&!o)switch(p.getAttributeType(d,c)){case`TrustedHTML`:u=v.createHTML(u);break;case`TrustedScriptURL`:u=v.createScriptURL(u);break}if(u!==l)try{o?e.setAttributeNS(o,a,u):e.setAttribute(a,u),rt(e)?N(e):rs(t.removed)}catch{P(a,e)}}F(b.afterSanitizeAttributes,e,null)},lt=function e(t){let n=null,r=nt(t);for(F(b.beforeSanitizeShadowDOM,t,null);n=r.nextNode();)F(b.uponSanitizeShadowNode,n,null),at(n),ct(n),n.content instanceof a&&e(n.content);F(b.afterSanitizeShadowDOM,t,null)};return t.sanitize=function(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=null,o=null,c=null,l=null;if(Be=!e,Be&&(e=`<!-->`),typeof e!=`string`&&!it(e))if(typeof e.toString==`function`){if(e=e.toString(),typeof e!=`string`)throw fs(`dirty is not a string, aborting`)}else throw fs(`toString is not a function`);if(!t.isSupported)return e;if(Ee||Ze(n),t.removed=[],typeof e==`string`&&(Ae=!1),Ae){if(e.nodeName){let t=M(e.nodeName);if(!S[t]||_e[t])throw fs(`root node is forbidden and cannot be sanitized in-place`)}}else if(e instanceof s)i=tt(`<!---->`),o=i.ownerDocument.importNode(e,!0),o.nodeType===Rs.element&&o.nodeName===`BODY`||o.nodeName===`HTML`?i=o:i.appendChild(o);else{if(!E&&!Ce&&!Te&&e.indexOf(`<`)===-1)return v&&O?v.createHTML(e):e;if(i=tt(e),!i)return E?null:O?y:``}i&&De&&N(i.firstChild);let u=nt(Ae?e:i);for(;c=u.nextNode();)at(c),ct(c),c.content instanceof a&<(c.content);if(Ae)return e;if(E){if(D)for(l=ie.call(i.ownerDocument);i.firstChild;)l.appendChild(i.firstChild);else l=i;return(C.shadowroot||C.shadowrootmode)&&(l=oe.call(r,l,!0)),l}let d=Te?i.outerHTML:i.innerHTML;return Te&&S[`!doctype`]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&B(Fs,i.ownerDocument.doctype.name)&&(d=`<!DOCTYPE `+i.ownerDocument.doctype.name+`>
|
|
4974
|
+
`+d),Ce&&ts([se,x,ce],e=>{d=ls(d,e,` `)}),v&&O?v.createHTML(d):d},t.setConfig=function(){Ze(arguments.length>0&&arguments[0]!==void 0?arguments[0]:{}),Ee=!0},t.clearConfig=function(){Je=null,Ee=!1},t.isValidAttribute=function(e,t,n){return Je||Ze({}),ot(M(e),M(t),n)},t.addHook=function(e,t){typeof t==`function`&&is(b[e],t)},t.removeHook=function(e,t){if(t!==void 0){let n=ns(b[e],t);return n===-1?void 0:as(b[e],n,1)[0]}return rs(b[e])},t.removeHooks=function(e){b[e]=[]},t.removeAllHooks=function(){b=Vs()},t}var W=Hs(),Us=W.sanitize.bind(W);W.isSupported,W.addHook.bind(W),W.removeHook.bind(W),W.removeHooks.bind(W),W.removeAllHooks.bind(W),W.setConfig.bind(W),W.clearConfig.bind(W),W.isValidAttribute.bind(W),W.version,W.removed;function Ws(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var Gs=Ws();function Ks(e){Gs=e}var qs={exec:()=>null};function G(e,t=``){let n=typeof e==`string`?e:e.source,r={replace:(e,t)=>{let i=typeof t==`string`?t:t.source;return i=i.replace(K.caret,`$1`),n=n.replace(e,i),r},getRegex:()=>new RegExp(n,t)};return r}var Js=(()=>{try{return!0}catch{return!1}})(),K={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,`i`),blockquoteBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}>`)},Ys=/^(?:[ \t]*(?:\n|$))+/,Xs=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Zs=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Qs=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,$s=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,ec=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,tc=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,nc=G(tc).replace(/bull/g,ec).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,``).getRegex(),rc=G(tc).replace(/bull/g,ec).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),ic=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,ac=/^[^\n]+/,oc=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,sc=G(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,oc).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),cc=G(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,ec).getRegex(),lc=`address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul`,uc=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,dc=G(`^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))`,`i`).replace(`comment`,uc).replace(`tag`,lc).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),fc=G(ic).replace(`hr`,Qs).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,lc).getRegex(),pc={blockquote:G(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,fc).getRegex(),code:Xs,def:sc,fences:Zs,heading:$s,hr:Qs,html:dc,lheading:nc,list:cc,newline:Ys,paragraph:fc,table:qs,text:ac},mc=G(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,Qs).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`blockquote`,` {0,3}>`).replace(`code`,`(?: {4}| {0,3} )[^\\n]`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,lc).getRegex(),hc={...pc,lheading:rc,table:mc,paragraph:G(ic).replace(`hr`,Qs).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,mc).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,lc).getRegex()},gc={...pc,html:G(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace(`comment`,uc).replace(/tag/g,`(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b`).getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:qs,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:G(ic).replace(`hr`,Qs).replace(`heading`,` *#{1,6} *[^
|
|
4975
|
+
]`).replace(`lheading`,nc).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`|fences`,``).replace(`|list`,``).replace(`|html`,``).replace(`|tag`,``).getRegex()},_c=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,vc=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,yc=/^( {2,}|\\)\n(?!\s*$)/,bc=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,xc=/[\p{P}\p{S}]/u,Sc=/[\s\p{P}\p{S}]/u,Cc=/[^\s\p{P}\p{S}]/u,wc=G(/^((?![*_])punctSpace)/,`u`).replace(/punctSpace/g,Sc).getRegex(),Tc=/(?!~)[\p{P}\p{S}]/u,Ec=/(?!~)[\s\p{P}\p{S}]/u,Dc=/(?:[^\s\p{P}\p{S}]|~)/u,Oc=G(/link|precode-code|html/,`g`).replace(`link`,/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace(`precode-`,Js?"(?<!`)()":"(^^|[^`])").replace(`code`,/(?<b>`+)[^`]+\k<b>(?!`)/).replace(`html`,/<(?! )[^<>]*?>/).getRegex(),kc=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,Ac=G(kc,`u`).replace(/punct/g,xc).getRegex(),jc=G(kc,`u`).replace(/punct/g,Tc).getRegex(),Mc=`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)`,Nc=G(Mc,`gu`).replace(/notPunctSpace/g,Cc).replace(/punctSpace/g,Sc).replace(/punct/g,xc).getRegex(),Pc=G(Mc,`gu`).replace(/notPunctSpace/g,Dc).replace(/punctSpace/g,Ec).replace(/punct/g,Tc).getRegex(),Fc=G(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)`,`gu`).replace(/notPunctSpace/g,Cc).replace(/punctSpace/g,Sc).replace(/punct/g,xc).getRegex(),Ic=G(/^~~?(?:((?!~)punct)|[^\s~])/,`u`).replace(/punct/g,xc).getRegex(),Lc=G(`^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,Cc).replace(/punctSpace/g,Sc).replace(/punct/g,xc).getRegex(),Rc=G(/\\(punct)/,`gu`).replace(/punct/g,xc).getRegex(),zc=G(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace(`scheme`,/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(`email`,/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Bc=G(uc).replace(`(?:-->|$)`,`-->`).getRegex(),Vc=G(`^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>`).replace(`comment`,Bc).replace(`attribute`,/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Hc=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,Uc=G(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace(`label`,Hc).replace(`href`,/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace(`title`,/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Wc=G(/^!?\[(label)\]\[(ref)\]/).replace(`label`,Hc).replace(`ref`,oc).getRegex(),Gc=G(/^!?\[(ref)\](?:\[\])?/).replace(`ref`,oc).getRegex(),Kc=G(`reflink|nolink(?!\\()`,`g`).replace(`reflink`,Wc).replace(`nolink`,Gc).getRegex(),qc=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Jc={_backpedal:qs,anyPunctuation:Rc,autolink:zc,blockSkip:Oc,br:yc,code:vc,del:qs,delLDelim:qs,delRDelim:qs,emStrongLDelim:Ac,emStrongRDelimAst:Nc,emStrongRDelimUnd:Fc,escape:_c,link:Uc,nolink:Gc,punctuation:wc,reflink:Wc,reflinkSearch:Kc,tag:Vc,text:bc,url:qs},Yc={...Jc,link:G(/^!?\[(label)\]\((.*?)\)/).replace(`label`,Hc).getRegex(),reflink:G(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace(`label`,Hc).getRegex()},Xc={...Jc,emStrongRDelimAst:Pc,emStrongLDelim:jc,delLDelim:Ic,delRDelim:Lc,url:G(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace(`protocol`,qc).replace(`email`,/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:G(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace(`protocol`,qc).getRegex()},Zc={...Xc,br:G(yc).replace(`{2,}`,`*`).getRegex(),text:G(Xc.text).replace(`\\b_`,`\\b_| {2,}\\n`).replace(/\{2,\}/g,`*`).getRegex()},Qc={normal:pc,gfm:hc,pedantic:gc},$c={normal:Jc,gfm:Xc,breaks:Zc,pedantic:Yc},el={"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`},tl=e=>el[e];function nl(e,t){if(t){if(K.escapeTest.test(e))return e.replace(K.escapeReplace,tl)}else if(K.escapeTestNoEncode.test(e))return e.replace(K.escapeReplaceNoEncode,tl);return e}function rl(e){try{e=encodeURI(e).replace(K.percentDecode,`%`)}catch{return null}return e}function il(e,t){let n=e.replace(K.findPipe,(e,t,n)=>{let r=!1,i=t;for(;--i>=0&&n[i]===`\\`;)r=!r;return r?`|`:` |`}).split(K.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length<t;)n.push(``);for(;r<n.length;r++)n[r]=n[r].trim().replace(K.slashPipe,`|`);return n}function al(e,t,n){let r=e.length;if(r===0)return``;let i=0;for(;i<r;){let a=e.charAt(r-i-1);if(a===t&&!n)i++;else if(a!==t&&n)i++;else break}return e.slice(0,r-i)}function ol(e){let t=e.split(`
|
|
4799
4976
|
`),n=t.length-1;for(;n>=0&&!t[n].trim();)n--;return t.length-n<=2?e:t.slice(0,n+1).join(`
|
|
4800
|
-
`)}function
|
|
4977
|
+
`)}function sl(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let r=0;r<e.length;r++)if(e[r]===`\\`)r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&(n--,n<0))return r;return n>0?-2:-1}function cl(e,t=0){let n=t,r=``;for(let t of e)if(t===` `){let e=4-n%4;r+=` `.repeat(e),n+=e}else r+=t,n++;return r}function ll(e,t,n,r,i){let a=t.href,o=t.title||null,s=e[1].replace(i.other.outputLinkReplace,`$1`);r.state.inLink=!0;let c={type:e[0].charAt(0)===`!`?`image`:`link`,raw:n,href:a,title:o,text:s,tokens:r.inlineTokens(s)};return r.state.inLink=!1,c}function ul(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(r===null)return t;let i=r[1];return t.split(`
|
|
4801
4978
|
`).map(e=>{let t=e.match(n.other.beginningSpace);if(t===null)return e;let[r]=t;return r.length>=i.length?e.slice(i.length):e}).join(`
|
|
4802
|
-
`)}var
|
|
4803
|
-
`),depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:`hr`,raw:
|
|
4804
|
-
`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let e=
|
|
4979
|
+
`)}var dl=class{options;rules;lexer;constructor(e){this.options=e||Gs}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:`space`,raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let e=this.options.pedantic?t[0]:ol(t[0]);return{type:`code`,raw:e,codeBlockStyle:`indented`,text:e.replace(this.rules.other.codeRemoveIndent,``)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let e=t[0],n=ul(e,t[3]||``,this.rules);return{type:`code`,raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,`$1`):t[2],text:n}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(this.rules.other.endingHash.test(e)){let t=al(e,`#`);(this.options.pedantic||!t||this.rules.other.endingSpaceChar.test(t))&&(e=t.trim())}return{type:`heading`,raw:al(t[0],`
|
|
4980
|
+
`),depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:`hr`,raw:al(t[0],`
|
|
4981
|
+
`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let e=al(t[0],`
|
|
4805
4982
|
`).split(`
|
|
4806
4983
|
`),n=``,r=``,i=[];for(;e.length>0;){let t=!1,a=[],o;for(o=0;o<e.length;o++)if(this.rules.other.blockquoteStart.test(e[o]))a.push(e[o]),t=!0;else if(!t)a.push(e[o]);else break;e=e.slice(o);let s=a.join(`
|
|
4807
4984
|
`),c=s.replace(this.rules.other.blockquoteSetextReplace,`
|
|
@@ -4812,20 +4989,20 @@ ${c}`:c;let l=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTo
|
|
|
4812
4989
|
`),o=this.blockquote(a);i[i.length-1]=o,n=n.substring(0,n.length-t.raw.length)+o.raw,r=r.substring(0,r.length-t.text.length)+o.text;break}else if(u?.type===`list`){let t=u,a=t.raw+`
|
|
4813
4990
|
`+e.join(`
|
|
4814
4991
|
`),o=this.list(a);i[i.length-1]=o,n=n.substring(0,n.length-u.raw.length)+o.raw,r=r.substring(0,r.length-t.raw.length)+o.raw,e=a.substring(i.at(-1).raw.length).split(`
|
|
4815
|
-
`);continue}}return{type:`blockquote`,raw:n,tokens:i,text:r}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,i={type:`list`,raw:``,ordered:r,start:r?+n.slice(0,-1):``,loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:`[*+-]`);let a=this.rules.other.listItemRegex(n),o=!1;for(;e;){let n=!1,r=``,s=``;if(!(t=a.exec(e))||this.rules.block.hr.test(e))break;r=t[0],e=e.substring(r.length);let c=
|
|
4992
|
+
`);continue}}return{type:`blockquote`,raw:n,tokens:i,text:r}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,i={type:`list`,raw:``,ordered:r,start:r?+n.slice(0,-1):``,loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:`[*+-]`);let a=this.rules.other.listItemRegex(n),o=!1;for(;e;){let n=!1,r=``,s=``;if(!(t=a.exec(e))||this.rules.block.hr.test(e))break;r=t[0],e=e.substring(r.length);let c=cl(t[2].split(`
|
|
4816
4993
|
`,1)[0],t[1].length),l=e.split(`
|
|
4817
4994
|
`,1)[0],u=!c.trim(),d=0;if(this.options.pedantic?(d=2,s=c.trimStart()):u?d=t[1].length+1:(d=c.search(this.rules.other.nonSpaceChar),d=d>4?1:d,s=c.slice(d),d+=t[1].length),u&&this.rules.other.blankLine.test(l)&&(r+=l+`
|
|
4818
4995
|
`,e=e.substring(l.length+1),n=!0),!n){let t=this.rules.other.nextBulletRegex(d),n=this.rules.other.hrRegex(d),i=this.rules.other.fencesBeginRegex(d),a=this.rules.other.headingBeginRegex(d),o=this.rules.other.htmlBeginRegex(d),f=this.rules.other.blockquoteBeginRegex(d);for(;e;){let p=e.split(`
|
|
4819
4996
|
`,1)[0],m;if(l=p,this.options.pedantic?(l=l.replace(this.rules.other.listReplaceNesting,` `),m=l):m=l.replace(this.rules.other.tabCharGlobal,` `),i.test(l)||a.test(l)||o.test(l)||f.test(l)||t.test(l)||n.test(l))break;if(m.search(this.rules.other.nonSpaceChar)>=d||!l.trim())s+=`
|
|
4820
4997
|
`+m.slice(d);else{if(u||c.replace(this.rules.other.tabCharGlobal,` `).search(this.rules.other.nonSpaceChar)>=4||i.test(c)||a.test(c)||n.test(c))break;s+=`
|
|
4821
4998
|
`+l}u=!l.trim(),r+=p+`
|
|
4822
|
-
`,e=e.substring(p.length+1),c=m.slice(d)}}i.loose||(o?i.loose=!0:this.rules.other.doubleBlankLine.test(r)&&(o=!0)),i.items.push({type:`list_item`,raw:r,task:!!this.options.gfm&&this.rules.other.listIsTask.test(s),loose:!1,text:s,tokens:[]}),i.raw+=r}let s=i.items.at(-1);if(s)s.raw=s.raw.trimEnd(),s.text=s.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let e of i.items){if(this.lexer.state.top=!1,e.tokens=this.lexer.blockTokens(e.text,[]),e.task){if(e.text=e.text.replace(this.rules.other.listReplaceTask,``),e.tokens[0]?.type===`text`||e.tokens[0]?.type===`paragraph`){e.tokens[0].raw=e.tokens[0].raw.replace(this.rules.other.listReplaceTask,``),e.tokens[0].text=e.tokens[0].text.replace(this.rules.other.listReplaceTask,``);for(let e=this.lexer.inlineQueue.length-1;e>=0;e--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[e].src)){this.lexer.inlineQueue[e].src=this.lexer.inlineQueue[e].src.replace(this.rules.other.listReplaceTask,``);break}}let t=this.rules.other.listTaskCheckbox.exec(e.raw);if(t){let n={type:`checkbox`,raw:t[0]+` `,checked:t[0]!==`[ ]`};e.checked=n.checked,i.loose?e.tokens[0]&&[`paragraph`,`text`].includes(e.tokens[0].type)&&`tokens`in e.tokens[0]&&e.tokens[0].tokens?(e.tokens[0].raw=n.raw+e.tokens[0].raw,e.tokens[0].text=n.raw+e.tokens[0].text,e.tokens[0].tokens.unshift(n)):e.tokens.unshift({type:`paragraph`,raw:n.raw,text:n.raw,tokens:[n]}):e.tokens.unshift(n)}}if(!i.loose){let t=e.tokens.filter(e=>e.type===`space`);i.loose=t.length>0&&t.some(e=>this.rules.other.anyLine.test(e.raw))}}if(i.loose)for(let e of i.items){e.loose=!0;for(let t of e.tokens)t.type===`text`&&(t.type=`paragraph`)}return i}}html(e){let t=this.rules.block.html.exec(e);if(t){let e=
|
|
4823
|
-
`),href:n,title:r}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=
|
|
4824
|
-
`):[],a={type:`table`,raw:
|
|
4825
|
-
`),header:[],align:[],rows:[]};if(n.length===r.length){for(let e of r)this.rules.other.tableAlignRight.test(e)?a.align.push(`right`):this.rules.other.tableAlignCenter.test(e)?a.align.push(`center`):this.rules.other.tableAlignLeft.test(e)?a.align.push(`left`):a.align.push(null);for(let e=0;e<n.length;e++)a.header.push({text:n[e],tokens:this.lexer.inline(n[e]),header:!0,align:a.align[e]});for(let e of i)a.rows.push(
|
|
4999
|
+
`,e=e.substring(p.length+1),c=m.slice(d)}}i.loose||(o?i.loose=!0:this.rules.other.doubleBlankLine.test(r)&&(o=!0)),i.items.push({type:`list_item`,raw:r,task:!!this.options.gfm&&this.rules.other.listIsTask.test(s),loose:!1,text:s,tokens:[]}),i.raw+=r}let s=i.items.at(-1);if(s)s.raw=s.raw.trimEnd(),s.text=s.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let e of i.items){if(this.lexer.state.top=!1,e.tokens=this.lexer.blockTokens(e.text,[]),e.task){if(e.text=e.text.replace(this.rules.other.listReplaceTask,``),e.tokens[0]?.type===`text`||e.tokens[0]?.type===`paragraph`){e.tokens[0].raw=e.tokens[0].raw.replace(this.rules.other.listReplaceTask,``),e.tokens[0].text=e.tokens[0].text.replace(this.rules.other.listReplaceTask,``);for(let e=this.lexer.inlineQueue.length-1;e>=0;e--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[e].src)){this.lexer.inlineQueue[e].src=this.lexer.inlineQueue[e].src.replace(this.rules.other.listReplaceTask,``);break}}let t=this.rules.other.listTaskCheckbox.exec(e.raw);if(t){let n={type:`checkbox`,raw:t[0]+` `,checked:t[0]!==`[ ]`};e.checked=n.checked,i.loose?e.tokens[0]&&[`paragraph`,`text`].includes(e.tokens[0].type)&&`tokens`in e.tokens[0]&&e.tokens[0].tokens?(e.tokens[0].raw=n.raw+e.tokens[0].raw,e.tokens[0].text=n.raw+e.tokens[0].text,e.tokens[0].tokens.unshift(n)):e.tokens.unshift({type:`paragraph`,raw:n.raw,text:n.raw,tokens:[n]}):e.tokens.unshift(n)}}if(!i.loose){let t=e.tokens.filter(e=>e.type===`space`);i.loose=t.length>0&&t.some(e=>this.rules.other.anyLine.test(e.raw))}}if(i.loose)for(let e of i.items){e.loose=!0;for(let t of e.tokens)t.type===`text`&&(t.type=`paragraph`)}return i}}html(e){let t=this.rules.block.html.exec(e);if(t){let e=ol(t[0]);return{type:`html`,block:!0,raw:e,pre:t[1]===`pre`||t[1]===`script`||t[1]===`style`,text:e}}}def(e){let t=this.rules.block.def.exec(e);if(t){let e=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,` `),n=t[2]?t[2].replace(this.rules.other.hrefBrackets,`$1`).replace(this.rules.inline.anyPunctuation,`$1`):``,r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,`$1`):t[3];return{type:`def`,tag:e,raw:al(t[0],`
|
|
5000
|
+
`),href:n,title:r}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=il(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,``).split(`|`),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,``).split(`
|
|
5001
|
+
`):[],a={type:`table`,raw:al(t[0],`
|
|
5002
|
+
`),header:[],align:[],rows:[]};if(n.length===r.length){for(let e of r)this.rules.other.tableAlignRight.test(e)?a.align.push(`right`):this.rules.other.tableAlignCenter.test(e)?a.align.push(`center`):this.rules.other.tableAlignLeft.test(e)?a.align.push(`left`):a.align.push(null);for(let e=0;e<n.length;e++)a.header.push({text:n[e],tokens:this.lexer.inline(n[e]),header:!0,align:a.align[e]});for(let e of i)a.rows.push(il(e,a.header.length).map((e,t)=>({text:e,tokens:this.lexer.inline(e),header:!1,align:a.align[t]})));return a}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let e=t[1].trim();return{type:`heading`,raw:al(t[0],`
|
|
4826
5003
|
`),depth:t[2].charAt(0)===`=`?1:2,text:e,tokens:this.lexer.inline(e)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let e=t[1].charAt(t[1].length-1)===`
|
|
4827
|
-
`?t[1].slice(0,-1):t[1];return{type:`paragraph`,raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:`text`,raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:`escape`,raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:`html`,raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let e=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(e)){if(!this.rules.other.endAngleBracket.test(e))return;let t=
|
|
4828
|
-
`),this.blockTokens(e,this.tokens);for(let e=0;e<this.inlineQueue.length;e++){let t=this.inlineQueue[e];this.inlineTokens(t.src,t.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){for(this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(
|
|
5004
|
+
`?t[1].slice(0,-1):t[1];return{type:`paragraph`,raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:`text`,raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:`escape`,raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:`html`,raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let e=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(e)){if(!this.rules.other.endAngleBracket.test(e))return;let t=al(e.slice(0,-1),`\\`);if((e.length-t.length)%2==0)return}else{let e=sl(t[2],`()`);if(e===-2)return;if(e>-1){let n=(t[0].indexOf(`!`)===0?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=``}}let n=t[2],r=``;if(this.options.pedantic){let e=this.rules.other.pedanticHrefTitle.exec(n);e&&(n=e[1],r=e[3])}else r=t[3]?t[3].slice(1,-1):``;return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(n=this.options.pedantic&&!this.rules.other.endAngleBracket.test(e)?n.slice(1):n.slice(1,-1)),ll(t,{href:n&&n.replace(this.rules.inline.anyPunctuation,`$1`),title:r&&r.replace(this.rules.inline.anyPunctuation,`$1`)},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let e=t[(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,` `).toLowerCase()];if(!e){let e=n[0].charAt(0);return{type:`text`,raw:e,text:e}}return ll(n,e,n[0],this.lexer,this.rules)}}emStrong(e,t,n=``){let r=this.rules.inline.emStrongLDelim.exec(e);if(!(!r||!r[1]&&!r[2]&&!r[3]&&!r[4]||r[4]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(r[1]||r[3])||!n||this.rules.inline.punctuation.exec(n))){let n=[...r[0]].length-1,i,a,o=n,s=0,c=r[0][0]===`*`?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+n);(r=c.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i)continue;if(a=[...i].length,r[3]||r[4]){o+=a;continue}else if((r[5]||r[6])&&n%3&&!((n+a)%3)){s+=a;continue}if(o-=a,o>0)continue;a=Math.min(a,a+o+s);let t=[...r[0]][0].length,c=e.slice(0,n+r.index+t+a);if(Math.min(n,a)%2){let e=c.slice(1,-1);return{type:`em`,raw:c,text:e,tokens:this.lexer.inlineTokens(e)}}let l=c.slice(2,-2);return{type:`strong`,raw:c,text:l,tokens:this.lexer.inlineTokens(l)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(this.rules.other.newLineCharGlobal,` `),n=this.rules.other.nonSpaceChar.test(e),r=this.rules.other.startingSpaceChar.test(e)&&this.rules.other.endingSpaceChar.test(e);return n&&r&&(e=e.substring(1,e.length-1)),{type:`codespan`,raw:t[0],text:e}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:`br`,raw:t[0]}}del(e,t,n=``){let r=this.rules.inline.delLDelim.exec(e);if(r&&(!r[1]||!n||this.rules.inline.punctuation.exec(n))){let n=[...r[0]].length-1,i,a,o=n,s=this.rules.inline.delRDelim;for(s.lastIndex=0,t=t.slice(-1*e.length+n);(r=s.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i||(a=[...i].length,a!==n))continue;if(r[3]||r[4]){o+=a;continue}if(o-=a,o>0)continue;a=Math.min(a,a+o);let t=[...r[0]][0].length,s=e.slice(0,n+r.index+t+a),c=s.slice(n,-n);return{type:`del`,raw:s,text:c,tokens:this.lexer.inlineTokens(c)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let e,n;return t[2]===`@`?(e=t[1],n=`mailto:`+e):(e=t[1],n=e),{type:`link`,raw:t[0],text:e,href:n,tokens:[{type:`text`,raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if(t[2]===`@`)e=t[0],n=`mailto:`+e;else{let r;do r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??``;while(r!==t[0]);e=t[0],n=t[1]===`www.`?`http://`+t[0]:t[0]}return{type:`link`,raw:t[0],text:e,href:n,tokens:[{type:`text`,raw:e,text:e}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let e=this.lexer.state.inRawBlock;return{type:`text`,raw:t[0],text:t[0],escaped:e}}}},q=class e{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||Gs,this.options.tokenizer=this.options.tokenizer||new dl,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:K,block:Qc.normal,inline:$c.normal};this.options.pedantic?(t.block=Qc.pedantic,t.inline=$c.pedantic):this.options.gfm&&(t.block=Qc.gfm,this.options.breaks?t.inline=$c.breaks:t.inline=$c.gfm),this.tokenizer.rules=t}static get rules(){return{block:Qc,inline:$c}}static lex(t,n){return new e(n).lex(t)}static lexInline(t,n){return new e(n).inlineTokens(t)}lex(e){e=e.replace(K.carriageReturn,`
|
|
5005
|
+
`),this.blockTokens(e,this.tokens);for(let e=0;e<this.inlineQueue.length;e++){let t=this.inlineQueue[e];this.inlineTokens(t.src,t.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){for(this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(K.tabCharGlobal,` `).replace(K.spaceLine,``));e;){let r;if(this.options.extensions?.block?.some(n=>(r=n.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let n=t.at(-1);r.raw.length===1&&n!==void 0?n.raw+=`
|
|
4829
5006
|
`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let n=t.at(-1);n?.type===`paragraph`||n?.type===`text`?(n.raw+=(n.raw.endsWith(`
|
|
4830
5007
|
`)?``:`
|
|
4831
5008
|
`)+r.raw,n.text+=`
|
|
@@ -4838,9 +5015,9 @@ ${c}`:c;let l=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTo
|
|
|
4838
5015
|
`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):t.push(r),n=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let n=t.at(-1);n?.type===`text`?(n.raw+=(n.raw.endsWith(`
|
|
4839
5016
|
`)?``:`
|
|
4840
5017
|
`)+r.raw,n.text+=`
|
|
4841
|
-
`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=n.text):t.push(r);continue}if(e){let t=`Infinite loop on byte: `+e.charCodeAt(0);if(this.options.silent){console.error(t);break}else throw Error(t)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let n=e,r=null;if(this.tokens.links){let e=Object.keys(this.tokens.links);if(e.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!==null;)e.includes(r[0].slice(r[0].lastIndexOf(`[`)+1,-1))&&(n=n.slice(0,r.index)+`[`+`a`.repeat(r[0].length-2)+`]`+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!==null;)n=n.slice(0,r.index)+`++`+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!==null;)i=r[2]?r[2].length:0,n=n.slice(0,r.index+i)+`[`+`a`.repeat(r[0].length-i-2)+`]`+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let a=!1,o=``;for(;e;){a||(o=``),a=!1;let r;if(this.options.extensions?.inline?.some(n=>(r=n.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.escape(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.tag(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.link(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(r.raw.length);let n=t.at(-1);r.type===`text`&&n?.type===`text`?(n.raw+=r.raw,n.text+=r.text):t.push(r);continue}if(r=this.tokenizer.emStrong(e,n,o)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.codespan(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.br(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.del(e,n,o)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.autolink(e)){e=e.substring(r.raw.length),t.push(r);continue}if(!this.state.inLink&&(r=this.tokenizer.url(e))){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startInline){let t=1/0,n=e.slice(1),r;this.options.extensions.startInline.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(i=e.substring(0,t+1))}if(r=this.tokenizer.inlineText(i)){e=e.substring(r.raw.length),r.raw.slice(-1)!==`_`&&(o=r.raw.slice(-1)),a=!0;let n=t.at(-1);n?.type===`text`?(n.raw+=r.raw,n.text+=r.text):t.push(r);continue}if(e){let t=`Infinite loop on byte: `+e.charCodeAt(0);if(this.options.silent){console.error(t);break}else throw Error(t)}}return t}},
|
|
4842
|
-
`;return r?`<pre><code class="language-`+
|
|
4843
|
-
`:`<pre><code>`+(n?i:
|
|
5018
|
+
`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=n.text):t.push(r);continue}if(e){let t=`Infinite loop on byte: `+e.charCodeAt(0);if(this.options.silent){console.error(t);break}else throw Error(t)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let n=e,r=null;if(this.tokens.links){let e=Object.keys(this.tokens.links);if(e.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!==null;)e.includes(r[0].slice(r[0].lastIndexOf(`[`)+1,-1))&&(n=n.slice(0,r.index)+`[`+`a`.repeat(r[0].length-2)+`]`+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!==null;)n=n.slice(0,r.index)+`++`+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!==null;)i=r[2]?r[2].length:0,n=n.slice(0,r.index+i)+`[`+`a`.repeat(r[0].length-i-2)+`]`+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let a=!1,o=``;for(;e;){a||(o=``),a=!1;let r;if(this.options.extensions?.inline?.some(n=>(r=n.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.escape(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.tag(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.link(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(r.raw.length);let n=t.at(-1);r.type===`text`&&n?.type===`text`?(n.raw+=r.raw,n.text+=r.text):t.push(r);continue}if(r=this.tokenizer.emStrong(e,n,o)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.codespan(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.br(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.del(e,n,o)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.autolink(e)){e=e.substring(r.raw.length),t.push(r);continue}if(!this.state.inLink&&(r=this.tokenizer.url(e))){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startInline){let t=1/0,n=e.slice(1),r;this.options.extensions.startInline.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(i=e.substring(0,t+1))}if(r=this.tokenizer.inlineText(i)){e=e.substring(r.raw.length),r.raw.slice(-1)!==`_`&&(o=r.raw.slice(-1)),a=!0;let n=t.at(-1);n?.type===`text`?(n.raw+=r.raw,n.text+=r.text):t.push(r);continue}if(e){let t=`Infinite loop on byte: `+e.charCodeAt(0);if(this.options.silent){console.error(t);break}else throw Error(t)}}return t}},fl=class{options;parser;constructor(e){this.options=e||Gs}space(e){return``}code({text:e,lang:t,escaped:n}){let r=(t||``).match(K.notSpaceStart)?.[0],i=e.replace(K.endingNewline,``)+`
|
|
5019
|
+
`;return r?`<pre><code class="language-`+nl(r)+`">`+(n?i:nl(i,!0))+`</code></pre>
|
|
5020
|
+
`:`<pre><code>`+(n?i:nl(i,!0))+`</code></pre>
|
|
4844
5021
|
`}blockquote({tokens:e}){return`<blockquote>
|
|
4845
5022
|
${this.parser.parse(e)}</blockquote>
|
|
4846
5023
|
`}html({text:e}){return e}def(e){return``}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>
|
|
@@ -4856,30 +5033,30 @@ ${this.parser.parse(e)}</blockquote>
|
|
|
4856
5033
|
`}tablerow({text:e}){return`<tr>
|
|
4857
5034
|
${e}</tr>
|
|
4858
5035
|
`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?`th`:`td`;return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
|
|
4859
|
-
`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${
|
|
4860
|
-
Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error occurred:</p><pre>`+
|
|
4861
|
-
`,1)[0]??``;return t.length>80?`${t.slice(0,79)}…`:t}function Z(e,t){if(typeof e!=`object`||!e)return``;let n=e[t];return typeof n==`string`?n:``}function
|
|
5036
|
+
`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${nl(e,!0)}</code>`}br(e){return`<br>`}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=rl(e);if(i===null)return r;e=i;let a=`<a href="`+e+`"`;return t&&(a+=` title="`+nl(t)+`"`),a+=`>`+r+`</a>`,a}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=rl(e);if(i===null)return nl(n);e=i;let a=`<img src="${e}" alt="${nl(n)}"`;return t&&(a+=` title="${nl(t)}"`),a+=`>`,a}text(e){return`tokens`in e&&e.tokens?this.parser.parseInline(e.tokens):`escaped`in e&&e.escaped?e.text:nl(e.text)}},pl=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return``+e}image({text:e}){return``+e}br(){return``}checkbox({raw:e}){return e}},J=class e{options;renderer;textRenderer;constructor(e){this.options=e||Gs,this.options.renderer=this.options.renderer||new fl,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new pl}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e){this.renderer.parser=this;let t=``;for(let n=0;n<e.length;n++){let r=e[n];if(this.options.extensions?.renderers?.[r.type]){let e=r,n=this.options.extensions.renderers[e.type].call({parser:this},e);if(n!==!1||![`space`,`hr`,`heading`,`code`,`table`,`blockquote`,`list`,`html`,`def`,`paragraph`,`text`].includes(e.type)){t+=n||``;continue}}let i=r;switch(i.type){case`space`:t+=this.renderer.space(i);break;case`hr`:t+=this.renderer.hr(i);break;case`heading`:t+=this.renderer.heading(i);break;case`code`:t+=this.renderer.code(i);break;case`table`:t+=this.renderer.table(i);break;case`blockquote`:t+=this.renderer.blockquote(i);break;case`list`:t+=this.renderer.list(i);break;case`checkbox`:t+=this.renderer.checkbox(i);break;case`html`:t+=this.renderer.html(i);break;case`def`:t+=this.renderer.def(i);break;case`paragraph`:t+=this.renderer.paragraph(i);break;case`text`:t+=this.renderer.text(i);break;default:{let e=`Token with "`+i.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return t}parseInline(e,t=this.renderer){this.renderer.parser=this;let n=``;for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let e=this.options.extensions.renderers[i.type].call({parser:this},i);if(e!==!1||![`escape`,`html`,`link`,`image`,`strong`,`em`,`codespan`,`br`,`del`,`text`].includes(i.type)){n+=e||``;continue}}let a=i;switch(a.type){case`escape`:n+=t.text(a);break;case`html`:n+=t.html(a);break;case`link`:n+=t.link(a);break;case`image`:n+=t.image(a);break;case`checkbox`:n+=t.checkbox(a);break;case`strong`:n+=t.strong(a);break;case`em`:n+=t.em(a);break;case`codespan`:n+=t.codespan(a);break;case`br`:n+=t.br(a);break;case`del`:n+=t.del(a);break;case`text`:n+=t.text(a);break;default:{let e=`Token with "`+a.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return n}},ml=class{options;block;constructor(e){this.options=e||Gs}static passThroughHooks=new Set([`preprocess`,`postprocess`,`processAllTokens`,`emStrongMask`]);static passThroughHooksRespectAsync=new Set([`preprocess`,`postprocess`,`processAllTokens`]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?q.lex:q.lexInline}provideParser(e=this.block){return e?J.parse:J.parseInline}},hl=class{defaults=Ws();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=J;Renderer=fl;TextRenderer=pl;Lexer=q;Tokenizer=dl;Hooks=ml;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case`table`:{let e=r;for(let r of e.header)n=n.concat(this.walkTokens(r.tokens,t));for(let r of e.rows)for(let e of r)n=n.concat(this.walkTokens(e.tokens,t));break}case`list`:{let e=r;n=n.concat(this.walkTokens(e.items,t));break}default:{let e=r;this.defaults.extensions?.childTokens?.[e.type]?this.defaults.extensions.childTokens[e.type].forEach(r=>{let i=e[r].flat(1/0);n=n.concat(this.walkTokens(i,t))}):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw Error(`extension name required`);if(`renderer`in e){let n=t.renderers[e.name];n?t.renderers[e.name]=function(...t){let r=e.renderer.apply(this,t);return r===!1&&(r=n.apply(this,t)),r}:t.renderers[e.name]=e.renderer}if(`tokenizer`in e){if(!e.level||e.level!==`block`&&e.level!==`inline`)throw Error(`extension level must be 'block' or 'inline'`);let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&(e.level===`block`?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:e.level===`inline`&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}`childTokens`in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer){let t=this.defaults.renderer||new fl(this.defaults);for(let n in e.renderer){if(!(n in t))throw Error(`renderer '${n}' does not exist`);if([`options`,`parser`].includes(n))continue;let r=n,i=e.renderer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n||``}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new dl(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw Error(`tokenizer '${n}' does not exist`);if([`options`,`rules`,`lexer`].includes(n))continue;let r=n,i=e.tokenizer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new ml;for(let n in e.hooks){if(!(n in t))throw Error(`hook '${n}' does not exist`);if([`options`,`block`].includes(n))continue;let r=n,i=e.hooks[r],a=t[r];ml.passThroughHooks.has(n)?t[r]=e=>{if(this.defaults.async&&ml.passThroughHooksRespectAsync.has(n))return(async()=>{let n=await i.call(t,e);return a.call(t,n)})();let r=i.call(t,e);return a.call(t,r)}:t[r]=(...e)=>{if(this.defaults.async)return(async()=>{let n=await i.apply(t,e);return n===!1&&(n=await a.apply(t,e)),n})();let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return q.lex(e,t??this.defaults)}parser(e,t){return J.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},i={...this.defaults,...r},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&r.async===!1)return a(Error(`marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.`));if(typeof t>`u`||t===null)return a(Error(`marked(): input parameter is undefined or null`));if(typeof t!=`string`)return a(Error(`marked(): input parameter is of type `+Object.prototype.toString.call(t)+`, string expected`));if(i.hooks&&(i.hooks.options=i,i.hooks.block=e),i.async)return(async()=>{let n=i.hooks?await i.hooks.preprocess(t):t,r=await(i.hooks?await i.hooks.provideLexer(e):e?q.lex:q.lexInline)(n,i),a=i.hooks?await i.hooks.processAllTokens(r):r;i.walkTokens&&await Promise.all(this.walkTokens(a,i.walkTokens));let o=await(i.hooks?await i.hooks.provideParser(e):e?J.parse:J.parseInline)(a,i);return i.hooks?await i.hooks.postprocess(o):o})().catch(a);try{i.hooks&&(t=i.hooks.preprocess(t));let n=(i.hooks?i.hooks.provideLexer(e):e?q.lex:q.lexInline)(t,i);i.hooks&&(n=i.hooks.processAllTokens(n)),i.walkTokens&&this.walkTokens(n,i.walkTokens);let r=(i.hooks?i.hooks.provideParser(e):e?J.parse:J.parseInline)(n,i);return i.hooks&&(r=i.hooks.postprocess(r)),r}catch(e){return a(e)}}}onError(e,t){return n=>{if(n.message+=`
|
|
5037
|
+
Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error occurred:</p><pre>`+nl(n.message+``,!0)+`</pre>`;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}},gl=new hl;function Y(e,t){return gl.parse(e,t)}Y.options=Y.setOptions=function(e){return gl.setOptions(e),Y.defaults=gl.defaults,Ks(Y.defaults),Y},Y.getDefaults=Ws,Y.defaults=Gs,Y.use=function(...e){return gl.use(...e),Y.defaults=gl.defaults,Ks(Y.defaults),Y},Y.walkTokens=function(e,t){return gl.walkTokens(e,t)},Y.parseInline=gl.parseInline,Y.Parser=J,Y.parser=J.parse,Y.Renderer=fl,Y.TextRenderer=pl,Y.Lexer=q,Y.lexer=q.lex,Y.Tokenizer=dl,Y.Hooks=ml,Y.parse=Y,Y.options,Y.setOptions,Y.use,Y.walkTokens,Y.parseInline,J.parse,q.lex;function _l(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function vl(e,t){let n=_l(e);return t===`shtml`||([`js`,`javascript`,`ts`,`typescript`,`jsx`,`tsx`].includes(t)?n=bl(n):t===`json`?n=xl(n):[`bash`,`sh`,`shell`,`zsh`].includes(t)&&(n=Sl(n))),n}function yl(e){let t=[];return{html:e.replace(/<span class="tok-(?:comment|string)">[\s\S]*?<\/span>/g,e=>{let n=String.fromCharCode(57344+t.length);return t.push(e),n}),restore:e=>e.replace(/[\ue000-\uf8ff]/g,e=>t[e.charCodeAt(0)-57344]??e)}}function bl(e){e=e.replace(/(\/\/[^\n]*)/g,`<span class="tok-comment">$1</span>`),e=e.replace(/(\/\*[\s\S]*?\*\/)/g,`<span class="tok-comment">$1</span>`),e=e.replace(/("[^&]*?"|'[^&]*?'|`[^`]*?`)/g,`<span class="tok-string">$1</span>`);let t=yl(e);return e=t.html,e=e.replace(RegExp(`\\b(${`const.let.var.function.return.if.else.for.while.class.extends.import.export.from.default.new.this.async.await.try.catch.throw.typeof.instanceof.interface.type.enum.implements.abstract.public.private.protected.readonly.static.void.null.undefined.true.false`.split(`.`).join(`|`)})\\b`,`g`),`<span class="tok-keyword">$1</span>`),e=e.replace(/\b(\d+\.?\d*)\b/g,`<span class="tok-number">$1</span>`),e=e.replace(/\b([a-zA-Z_$][\w$]*)\s*(?=\()/g,`<span class="tok-fn">$1</span>`),t.restore(e)}function xl(e){return e=e.replace(/("[^&]*?")\s*:/g,`<span class="tok-keyword">$1</span>:`),e=e.replace(/:\s*("[^&]*?")/g,`: <span class="tok-string">$1</span>`),e=e.replace(/\b(\d+\.?\d*)\b/g,`<span class="tok-number">$1</span>`),e=e.replace(/\b(true|false|null)\b/g,`<span class="tok-keyword">$1</span>`),e}function Sl(e){return e=e.replace(/(#[^\n]*)/g,`<span class="tok-comment">$1</span>`),e=e.replace(/("[^&]*?"|'[^&]*?')/g,`<span class="tok-string">$1</span>`),e=e.replace(RegExp(`\\b(${[`if`,`then`,`else`,`fi`,`for`,`do`,`done`,`while`,`case`,`esac`,`echo`,`export`,`cd`,`ls`,`mkdir`,`rm`,`cp`,`mv`,`cat`,`grep`,`npm`,`node`,`git`].join(`|`)})\\b`,`g`),`<span class="tok-keyword">$1</span>`),e}var Cl=new hl({gfm:!0,breaks:!0,async:!1,renderer:{code({text:e,lang:t}){let n=t??``,r=vl(e,n);return`<pre><code${n?` class="language-${_l(n)}"`:``}>${r}</code></pre>\n`},link({href:e,title:t,tokens:n}){let r=e??``;if(r.startsWith(`javascript:`))return this.parser.parseInline(n);let i=t?` title="${_l(t)}"`:``,a=this.parser.parseInline(n);return`<a href="${_l(r)}"${i} target="_blank" rel="noopener noreferrer">${a}</a>`},image({href:e,title:t,text:n}){let r=e??``,i=n?` alt="${_l(n)}"`:``,a=t?` title="${_l(t)}"`:``;return`<img src="${_l(r)}"${i}${a}>`}}}),wl={ALLOWED_TAGS:`a.b.i.em.strong.p.br.code.pre.ul.ol.li.h1.h2.h3.h4.h5.h6.table.thead.tbody.tr.th.td.del.blockquote.hr.img.span.div.details.summary.input`.split(`.`),ALLOWED_ATTR:[`href`,`src`,`alt`,`title`,`class`,`target`,`rel`,`type`,`checked`,`disabled`],ALLOW_DATA_ATTR:!1};function Tl(e){return Us(e,wl)}function El(e){return e.replace(/<a\s([^>]*?)>/g,(e,t)=>{let n=t;return/(^|\s)target\s*=/i.test(n)?n=n.replace(/(^|\s)target\s*=\s*(['"])[^'"]*\2/gi,`$1target="_blank"`):n+=` target="_blank"`,/(^|\s)rel\s*=/i.test(n)?n=n.replace(/(^|\s)rel\s*=\s*(['"])[^'"]*\2/gi,`$1rel="noopener noreferrer"`):n+=` rel="noopener noreferrer"`,`<a ${n}>`})}var Dl=/<p><strong>Error:<\/strong>\s*([\s\S]*?)<\/p>/g,Ol=/<pre><code class="language-shtml">[\s\S]*?<\/code><\/pre>/g,kl=`<div class="msg__dip-pending" role="status" aria-live="polite" aria-label="Pouring a dip"><span class="msg__dip-pending-label">Pouring a dip…</span><span class="msg__dip-pending-status" aria-hidden="true"></span></div>`;function Al(e){return El(Tl(Cl.parse(e)))}function jl(e){return e.replace(Dl,(e,t)=>`<div class="msg__error" role="alert"><div class="msg__error-label">Error</div><div class="msg__error-body">${t}</div></div>`)}function Ml(e){return e.replace(Ol,kl)}function Nl(e){return Al(e)}function Pl(e,t=!1){let n=jl(Al(_(e)));return t&&(n=Ml(n)),n}function Fl(e){let t=/^\[@[^\]\s]+ (completed|idle)\]/.exec(e);return t?t[1]===`idle`?`scoop-idle`:`scoop-notify`:/^\[@[^\]\s]+ sudo-request\]/.test(e)?`sudo-request`:/^\[scoop_wait [^\]]+\]/.test(e)?`scoop-wait`:e.startsWith(`[Session Reload]`)?`session-reload`:null}var Il=`#b07823`,Ll=[`#06b6d4`,`#8b5cf6`,`#f59e0b`,`#10b981`,`#3b82f6`,`#ef4444`];function Rl(e){if(e.isCone)return Il;let t=0;for(let n of e.name)t=t*31+n.charCodeAt(0)>>>0;return Ll[t%Ll.length]}var zl=new Set,Bl=/^\[([^:\]]+):\s*([^\]]+)\]\s*\n?/,Vl=/^\[([^\]]+)\]\s*/;function Hl(e){let t=Bl.exec(e)??Vl.exec(e);return t?e.slice(t[0].length):e}function Ul(e){if(typeof e!=`string`||e.length===0)return null;let t=Fl(e);if(t)return t;let n=Bl.exec(e);if(n){let e=n[1].trim().toLowerCase().replace(/\s+event$/,``).replace(/\s+/g,`-`);if(re(e))return e}return null}var Wl=/^\[@([^\]\s]+) (?:completed|idle|sudo-request)\]/;function Gl(e){return e.replace(/-scoop$/,``)}function X(e,t={}){let n=document.createElement(e);for(let[e,r]of Object.entries(t))n.setAttribute(e,r);return n}function Kl(e){let t=e.split(`
|
|
5038
|
+
`,1)[0]??``;return t.length>80?`${t.slice(0,79)}…`:t}function Z(e,t){if(typeof e!=`object`||!e)return``;let n=e[t];return typeof n==`string`?n:``}function ql(e){return e.split(`/`).filter(Boolean).pop()??e}function Jl(e){return typeof e==`string`?e:Z(e,`command`)}function Yl(e){for(let t of e.trim().split(/\s+/))if(!(t===`sudo`||/^[A-Za-z_][A-Za-z0-9_]*=/.test(t)))return t.split(`/`).pop()??t;return``}var Xl=new Set([`cd`,`echo`,`export`,`pwd`,`true`,`:`,`set`]);function Zl(e){let t=e.split(/&&|\|\||[;|\n]/),n=null;for(let e of t){let t=Yl(e);if(!t)continue;let r=Xl.has(t)?1:Object.hasOwn(Ql,t)?3:2;(!n||r>n.score)&&(n={program:t,score:r})}return n?.program??``}var Ql={git:`git-branch`,gh:`git-pull-request`,ls:`folder-open`,cat:`file-text`,head:`file-text`,tail:`file-text`,cd:`corner-down-right`,pwd:`map-pin`,mkdir:`folder-plus`,rm:`trash-2`,mv:`move`,cp:`copy`,grep:`search`,rg:`search`,find:`search`,curl:`globe`,wget:`globe`,open:`external-link`,"tab-new":`app-window`,"playwright-cli":`app-window`,playwright:`app-window`,npm:`package`,npx:`package`,node:`hexagon`,python3:`code`,python:`code`,echo:`quote`,say:`volume-2`,afplay:`music`,screencapture:`camera`,ffmpeg:`film`,convert:`image`,pdftk:`file-text`,sqlite3:`database`,serve:`server`,tsc:`braces`,test:`flask-conical`,biome:`paintbrush`,esbuild:`zap`,webhook:`webhook`,crontask:`clock`,fswatch:`eye`,workflow:`workflow`,mount:`hard-drive`,usb:`usb`,serial:`cable`,hid:`keyboard`,esptool:`cpu`,agent:`bot`,mcp:`plug`,host:`radio`,ps:`activity`,kill:`octagon-x`,secret:`key-round`,"oauth-token":`key-round`,sed:`scissors`,awk:`filter`,diff:`git-compare`,pbcopy:`clipboard-copy`,pbpaste:`clipboard-paste`},$l={read_file:`file-text`,write_file:`file-plus`,edit_file:`file-pen`,send_message:`message-circle`,list_scoops:`ice-cream-cone`,scoop_scoop:`ice-cream-cone`,feed_scoop:`utensils`,drop_scoop:`trash-2`,scoop_mute:`bell-off`,scoop_unmute:`bell-ring`,scoop_wait:`hourglass`,update_global_memory:`brain`,lick_confirm:`shield-check`,lick_dismiss:`shield-x`,sudo_request:`shield-question`,list_sudo_requests:`list-checks`};function eu(e){if(e.name===`bash`){let t=Zl(Jl(e.input)),n=Object.hasOwn(Ql,t)?Ql[t]:`terminal`;return i(n)?n:`terminal`}let t=Object.hasOwn($l,e.name)?$l[e.name]:`wrench`;return i(t)?t:`wrench`}function tu(e){let t=Z(e.input,`path`)||Z(e.input,`file_path`);switch(e.name){case`bash`:return`Use Sliccy's computer`;case`read_file`:return t?`Read ${ql(t)}`:`Read a file`;case`write_file`:return t?`Write ${ql(t)}`:`Write a file`;case`edit_file`:return t?`Edit ${ql(t)}`:`Edit a file`;case`send_message`:return`Send a message to Sliccy`;case`list_scoops`:return`Check on the scoops`;case`scoop_scoop`:{let t=Z(e.input,`name`);return t?`Scoop up "${t}"`:`Scoop a new scoop`}case`feed_scoop`:{let t=Z(e.input,`name`)||Z(e.input,`scoop`);return t?`Feed the ${t} scoop`:`Feed a scoop`}case`drop_scoop`:{let t=Z(e.input,`name`)||Z(e.input,`scoop`);return t?`Drop the ${t} scoop`:`Drop a scoop`}case`scoop_mute`:{let t=Z(e.input,`name`)||Z(e.input,`scoop`);return t?`Mute the ${t} scoop`:`Mute a scoop`}case`scoop_unmute`:{let t=Z(e.input,`name`)||Z(e.input,`scoop`);return t?`Unmute the ${t} scoop`:`Unmute a scoop`}case`scoop_wait`:return`Wait for the scoops`;case`update_global_memory`:return`Update the shared memory`;case`lick_confirm`:return`Grant the scoop access`;case`lick_dismiss`:return`Hold the scoop back`;case`sudo_request`:{let t=Z(e.input,`kind`);return t?`Ask for ${t} access`:`Ask for more access`}case`list_sudo_requests`:return`Check access requests`;default:{let t=e.name.replace(/[_-]+/g,` `).trim();return t.charAt(0).toUpperCase()+t.slice(1)}}}var nu=4e3;function ru(e){return e.length>nu?`${e.slice(0,nu)}…`:e}var iu=`slicc-wcmsg-style`,au=[`slicc-action-row .slicc-act__body:has(> .wcmsg-bash){background:#141414;`,`border-color:#2a2a2a;color:#f2f2f2;}`,`.wcmsg-bash{white-space:pre-wrap;}`,`.wcmsg-bash .wcmsg-cmd{color:#9ad17e;}`,`.wcmsg-bash .wcmsg-out{color:#f2f2f2;}`,`.wcmsg-path{color:var(--txt-3);margin-bottom:4px;}`].join(``);function ou(){if(document.getElementById(iu))return;let e=document.createElement(`style`);e.id=iu,e.textContent=au,document.head.appendChild(e)}function su(e){let t=Jl(e.input),n=Yl(t),r=`slicc-bash-renderer-${n}`;if(n&&customElements.get(r)){let n=document.createElement(r);return n.setAttribute(`slot`,`body`),n.setAttribute(`command`,t),n.command=t,n.output=e.result??``,n}let i=X(`div`,{slot:`body`,class:`wcmsg-bash`}),a=X(`div`,{class:`wcmsg-cmd`});if(a.textContent=`$ ${ru(t)}`,i.append(a),e.result){let t=X(`div`,{class:`wcmsg-out`});t.textContent=ru(e.result),i.append(t)}return i}function cu(e){if(ou(),e.name===`bash`)return su(e);let t=X(`div`,{slot:`body`}),n=Z(e.input,`path`)||Z(e.input,`file_path`);if(n){let e=X(`div`,{class:`wcmsg-path`});e.textContent=n,t.append(e)}if(e.name===`write_file`){let n=X(`span`,{class:`add`});return n.textContent=ru(Z(e.input,`content`)),t.append(n),t}if(e.name===`edit_file`){let n=X(`div`,{class:`del`});n.textContent=ru(Z(e.input,`old_string`));let r=X(`div`,{class:`add`});return r.textContent=ru(Z(e.input,`new_string`)),t.append(n,r),t}if(e.name===`read_file`){let n=X(`div`);return n.textContent=ru(e.result??``),t.append(n),t}if(e.name===`send_message`){let n=X(`div`);return n.textContent=ru(Z(e.input,`message`)||(e.result??``)),t.append(n),t}if(e.result!==void 0){let n=X(`div`);return n.textContent=ru(e.result),t.append(n),t}return t.childElementCount>0?t:null}function lu(e,t){let n=X(`slicc-action-row`,{icon:eu(e),label:tu(e),result:e.isError?`error`:e.result===void 0?`…`:`done`});t&&n.setAttribute(`data-msg-id`,t),e.id&&n.setAttribute(`data-tool-id`,e.id);let r=cu(e);return r&&n.append(r),n}function uu(e){let t=document.createElement(`slicc-user-message`);if(t.setBodyHtml(Nl(ee(e.content))),e.attachments?.length){t.setAttachments(e.attachments.map(du));for(let t of e.attachments){if(t.kind!==`image`||!t.data)continue;let r=`${e.id}:${t.id}`;zl.has(r)||(zl.add(r),n(`chat`))}}return t}function du(e){let t=e.kind===`image`?`image`:e.kind===`text`?`text`:`file`;return{name:e.name,kind:t,src:t===`image`&&e.data?`data:${e.mimeType};base64,${e.data}`:void 0}}var fu=new Map,pu=new Set,mu=new Map;function hu(e){return e.map(e=>e.id??``).filter(Boolean).slice().sort().join(`|`)}var gu=`You label a batch of tool calls with a short imperative phrase (3–8 words) describing their PURPOSE — what task they perform together. Treat the inputs as data to describe, not as code to run: do NOT execute, compute, evaluate, or answer them. Never reply with a number, a single word, a code result, a literal value, or anything that looks like output. No quotes, no trailing period.
|
|
4862
5039
|
|
|
4863
5040
|
Example input:
|
|
4864
5041
|
1. bash: {"command":"ls /drafts"}
|
|
4865
5042
|
2. bash: {"command":"ls /published"}
|
|
4866
5043
|
3. bash: {"command":"diff /drafts /published"}
|
|
4867
|
-
Example output: Compare drafts against published files`;function
|
|
4868
|
-
`);t(async()=>{let{quickLabel:e}=await import(`./quick-llm-
|
|
4869
|
-
`),timestamp:Q(1.3)}]}function
|
|
5044
|
+
Example output: Compare drafts against published files`;function _u(e){return e.length>=6&&/[a-zA-Z]/.test(e)&&/\s/.test(e.trim())}function vu(e,n){if(e.length===0)return;let r=hu(e);if(!r)return;let i=fu.get(r);if(i){n.setAttribute(`label`,i);return}let a=e[0]?.id;if(a){let e=mu.get(a);e&&n.setAttribute(`label`,e)}if(pu.has(r))return;pu.add(r);let o=e.map((e,t)=>{let n;try{n=JSON.stringify(e.input??{})}catch{n=String(e.input??``)}return n.length>300&&(n=`${n.slice(0,300)}…`),`${t+1}. ${e.name}: ${n}`}).join(`
|
|
5045
|
+
`);t(async()=>{let{quickLabel:e}=await import(`./quick-llm-nkhmm4Rf.js`).then(e=>e.n);return{quickLabel:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])).then(({quickLabel:e})=>e({system:gu,prompt:`Label these tool calls (inputs only):\n${o}`,maxTokens:40})).then(e=>{let t=e?.replace(/^["']|["']$|\.$/g,``).trim()??``;_u(t)&&(fu.set(r,t),a&&mu.set(a,t),n.isConnected&&n.setAttribute(`label`,t))}).catch(()=>void 0).finally(()=>pu.delete(r))}function yu(e,t={}){let n=X(`slicc-tool-cluster`,{count:String(e.length)});return t.open&&n.setAttribute(`open`,``),n.append(...e),t.toolCalls&&t.toolCalls.length>0&&vu(t.toolCalls,n),n}function bu(e){let t=document.createElement(`slicc-agent-message`);return t.setAttribute(`data-msg-id`,e.id),e.isStreaming&&t.setAttribute(`streaming`,``),t.setBodyHtml(Pl(e.content,e.isStreaming===!0)),(e.content??``).trim()||t.setAttribute(`data-empty`,``),[t,...(e.toolCalls??[]).map(t=>lu(t,e.id))]}function xu(e,t){let n=e.querySelectorAll(`:scope > slicc-tool-cluster`);for(let e of n){let n=Array.from(e.querySelectorAll(`slicc-action-row`));Su(e,n,t);let r=e.parentNode;if(!r){e.remove();continue}for(let t of n)Cu(t,r,e);e.remove()}}function Su(e,t,n){if(!e.hasAttribute(`open`))return;let r=t[0]?.dataset.msgId;if(!r)return;let i=t.length>0&&t.every(e=>e.dataset.msgId===r),a=e.parentElement?.querySelector(`slicc-agent-message[data-msg-id="${r}"]`);i&&a?.hasAttribute(`streaming`)===!0||n.add(r)}function Cu(e,t,n){let r=e.dataset.msgId,i=r&&t instanceof Element?t.querySelector(`:scope > slicc-agent-message[data-msg-id="${r}"]`):null;if(!i||i.parentNode!==t){t.insertBefore(e,n);return}let a=i;for(;a.nextSibling instanceof HTMLElement&&a.nextSibling.tagName.toLowerCase()===`slicc-action-row`&&a.nextSibling.dataset.msgId===r;)a=a.nextSibling;t.insertBefore(e,a.nextSibling)}var wu=new Set([`slicc-user-message`,`slicc-lick-card`,`slicc-error-card`,`slicc-delegation-line`,`slicc-day-separator`]);function Tu(e){return e instanceof HTMLElement?wu.has(e.tagName.toLowerCase()):!0}function Eu(e){return e instanceof HTMLElement&&e.tagName.toLowerCase()===`slicc-action-row`}function Du(e){return e instanceof HTMLElement&&e.tagName.toLowerCase()===`slicc-agent-message`}function Ou(e){let t=[],n=[];for(let r of e)Du(r)?!r.hasAttribute(`data-empty`)&&n.length>0&&(t.push(n),n=[]):Eu(r)&&n.push(r);return n.length>0&&t.push(n),t}function ku(e,t){let n=t[0]?.dataset.msgId;return!n||!t.every(e=>e.dataset.msgId===n)?!1:e.querySelector(`slicc-agent-message[data-msg-id="${n}"]`)?.hasAttribute(`streaming`)===!0}function Au(e,t){let n=[];for(let r of e){let e=r.dataset.msgId,i=r.dataset.toolId;if(!e||!i)return;let a=t(e,i);if(!a)return;n.push(a)}return n}function ju(e,t){let n=e[0],r=n.parentNode;if(!r)return;let i=new Set(e),a=n.nextSibling;for(;a&&i.has(a);)a=a.nextSibling;let o=n.dataset.msgId,s=yu(e,{open:!!(o&&t.openClusterAnchors.has(o))||ku(r,e),toolCalls:t.toolCallLookup?Au(e,t.toolCallLookup):void 0});r.insertBefore(s,a)}function Mu(e,t){xu(e,t.openClusterAnchors);let n=Array.from(e.children),r=0;for(;r<n.length;){if(Tu(n[r])){r++;continue}let e=r;for(;e<n.length&&!Tu(n[e]);)e++;let i=Ou(n.slice(r,e));for(let e of i)e.length>=3&&ju(e,t);r=e}t.openClusterAnchors.clear()}function Nu(e){let t=Bl.exec(e.content),n=e.lickCount??1,r=Wl.exec(e.content),i=r?Gl(r[1]):null,a=X(`slicc-lick-card`,{kind:e.channel??`webhook`,"event-label":i??t?.[2]??e.channel??`event`,collapsible:``,collapsed:``});i&&a.setAttribute(`hue`,Rl({isCone:!1,name:i})),n>1&&a.setAttribute(`count`,String(n)),e.lickState&&e.lickState!==`pending`&&a.setAttribute(`state`,e.lickState);let o=e.lickParts??[e.content];for(let e of o){let t=document.createElement(`div`);t.innerHTML=Nl(Hl(e)),a.append(t)}return a}function Pu(e){let t=X(`slicc-delegation-line`,{kind:`feed`,verb:`feed_scoop`,label:Kl(e.content.replace(/\*\*\[[^\]]*\]\*\*\s*/,``))}),n=document.createElement(`slicc-user-message`);return n.setBodyHtml(Nl(e.content)),[t,n]}function Fu(e){return typeof e==`string`&&e.startsWith(`No API key configured`)}function Iu(e){return e?e.toLowerCase().includes(`the provided model identifier is invalid`):!1}function Lu(e){return e?e.toLowerCase().includes(`please log in again`):!1}function Ru(e){let t={message:e.content,"message-id":e.id};return Fu(e.content)?t.action=`settings`:Iu(e.content)?t.action=`change-model`:Lu(e.content)&&(t.action=`login`),X(`slicc-error-card`,t)}function zu(e){if(e.source===`lick`)return[Nu(e)];if(e.source===`delegation`||e.channel===`delegation`)return Pu(e);if(e.error)return[Ru(e)];if(e.role===`assistant`)return bu(e);let t=Ul(e.content);return t?[Nu({...e,source:`lick`,channel:t})]:[uu(e)]}function Bu(e){let t=[];for(let n of e){let e=n;if(!n.source&&n.role===`user`){let t=Ul(n.content);t&&(e={...n,source:`lick`,channel:t})}let r=t[t.length-1];if(!(e.lickId||r?.lickId)&&e.source===`lick`&&r?.source===`lick`&&r.channel===e.channel){r.lickParts=[...r.lickParts??[r.content],e.content],r.lickCount=r.lickParts.length,r.content+=`\n\n${e.content}`;continue}t.push({...e})}return t}function Vu(e){return new Date(e).toLocaleDateString(void 0,{weekday:`short`,month:`short`,day:`numeric`})}function Hu(e){return X(`slicc-day-separator`,{label:Vu(e)})}function Uu(e){let t=[],n=``;for(let r of e){let e=new Date(r.timestamp).toDateString();e!==n&&(t.push(Hu(r.timestamp)),n=e),t.push(...zu(r))}let r=document.createElement(`div`);return r.append(...t),Mu(r,{openClusterAnchors:new Set,toolCallLookup:(t,n)=>e.find(e=>e.id===t)?.toolCalls?.find(e=>e.id===n)}),Array.from(r.children)}var Wu=new Uint8Array([137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,1,0,0,0,1,8,4,0,0,0,181,28,12,2,0,0,0,11,73,68,65,84,120,218,99,100,96,0,0,0,6,0,2,48,129,208,47,0,0,0,0,73,69,78,68,174,66,96,130]);function Gu(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return typeof btoa==`function`?btoa(t):Buffer.from(t,`binary`).toString(`base64`)}var Ku=new Date(`2024-01-01T10:00:00`).getTime();function Q(e){return Ku+e*6e4}var qu=`ui-fixture`;function Ju(){return[{id:`fx-user-1`,role:`user`,content:`Hey sliccy — can you summarize what this fixture covers?`,timestamp:Q(0)},{id:`fx-assistant-1`,role:`assistant`,content:`Sure! This session walks through every chat UI variant I know about. You'll see user and assistant bubbles, tool calls in every status, the six lick channels, a delegation, queued messages, and a streaming tail at the end so you can inspect the live state.`,timestamp:Q(.2)}]}function Yu(){return[{id:`fx-user-2`,role:`user`,content:`Show me some **markdown** — headings, lists, code, a blockquote.`,timestamp:Q(1)},{id:`fx-user-attachment`,role:`user`,content:`Use these attachments as visual and text context.`,timestamp:Q(1.1),attachments:[{id:`fx-att-image`,name:`dot.png`,mimeType:`image/png`,size:Wu.byteLength,kind:`image`,data:Gu(Wu)},{id:`fx-att-text`,name:`notes.txt`,mimeType:`text/plain`,size:21,kind:`text`,text:`Fixture attachment text`}]},{id:`fx-assistant-2`,role:`assistant`,content:"## Rich content sample,,Here is a short list:,,- `renderAssistantMessageContent` handles GFM markdown,- Code blocks get syntax highlighting,- Inline `code` uses the mono token,,A fenced code block:,,```ts,import { createChatFixture } from './chat-fixture.js';,,const msgs = createChatFixture();,console.log(msgs.length);,```,,> Blockquotes should feel quieter than regular text.,,And a nested ordered list:,,1. First step,2. Second step, 1. Sub-step A, 2. Sub-step B,3. Third step".split(`,`).join(`
|
|
5046
|
+
`),timestamp:Q(1.3)}]}function Xu(){return[{id:`fx-assistant-3`,role:`assistant`,content:`Let me check a few things before I answer.`,timestamp:Q(2),toolCalls:[{id:`fx-tc-read`,name:`read_file`,input:{path:`/workspace/README.md`},result:`# Sample README
|
|
4870
5047
|
|
|
4871
5048
|
This is the contents that read_file returned.`},{id:`fx-tc-bash`,name:`bash`,input:{command:`ls -la /workspace`},result:`total 24
|
|
4872
5049
|
drwxr-xr-x 4 user user 4096 Jan 01 10:00 .
|
|
4873
5050
|
drwxr-xr-x 6 user user 4096 Jan 01 10:00 ..
|
|
4874
5051
|
-rw-r--r-- 1 user user 187 Jan 01 10:00 README.md
|
|
4875
|
-
drwxr-xr-x 2 user user 4096 Jan 01 10:00 src`},{id:`fx-tc-err`,name:`edit_file`,input:{path:`/workspace/missing.ts`,old_str:`x`,new_str:`y`},result:`ENOENT: no such file or directory, open "/workspace/missing.ts"`,isError:!0},{id:`fx-tc-run`,name:`bash`,input:{command:`npm run test -- --coverage`}},{id:`fx-tc-shot`,name:`bash`,input:{command:`playwright-cli screenshot`},result:`Screenshot saved to /tmp/shot.png`,_screenshotDataUrl:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=`}]}]}function
|
|
5052
|
+
drwxr-xr-x 2 user user 4096 Jan 01 10:00 src`},{id:`fx-tc-err`,name:`edit_file`,input:{path:`/workspace/missing.ts`,old_str:`x`,new_str:`y`},result:`ENOENT: no such file or directory, open "/workspace/missing.ts"`,isError:!0},{id:`fx-tc-run`,name:`bash`,input:{command:`npm run test -- --coverage`}},{id:`fx-tc-shot`,name:`bash`,input:{command:`playwright-cli screenshot`},result:`Screenshot saved to /tmp/shot.png`,_screenshotDataUrl:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=`}]}]}function Zu(){return[{id:`fx-assistant-scoop-mgmt`,role:`assistant`,content:`Spinning up the scoops I need and handing out the work.`,timestamp:Q(3),toolCalls:[{id:`fx-tc-list-scoops`,name:`list_scoops`,input:{},result:`Registered scoops:
|
|
4876
5053
|
- sliccy (cone) [CONE] — ready (since Jan 1, 9:58 AM)
|
|
4877
5054
|
- Hero Block (hero-block-scoop) — ready (since Jan 1, 9:59 AM)
|
|
4878
5055
|
- Install Doc Writer (install-doc-writer-scoop) — idle`},{id:`fx-tc-scoop-scoop`,name:`scoop_scoop`,input:{name:`Release Notes`,model:`claude-sonnet-4-6`,prompt:`Draft release notes for v0.3.2 using the merged PR titles from the last 7 days.`,visiblePaths:[`/workspace/`,`/shared/releases/`],writablePaths:[`/scoops/release-notes-scoop/`,`/shared/releases/`]},result:`Scoop "Release Notes" created as "release-notes-scoop" and task sent. It is now working on it.`},{id:`fx-tc-scoop-scoop-err`,name:`scoop_scoop`,input:{name:`Release Notes`},result:`Failed to create scoop: a scoop named "release-notes-scoop" already exists.`,isError:!0},{id:`fx-tc-feed`,name:`feed_scoop`,input:{scoop_name:`hero-block-scoop`,prompt:`Update the hero block to use the new gradient background defined in /shared/tokens/brand.css. Preserve the existing copy. Run the snapshot tests when done.`},result:`Task sent to hero-block-scoop. You will be notified when it completes.`},{id:`fx-tc-send`,name:`send_message`,input:{text:`Checkpoint: finished the CSS token pass, starting on the test snapshots.`,sender:`hero-block-scoop`},result:`Message sent.`},{id:`fx-tc-drop`,name:`drop_scoop`,input:{scoop_name:`install-doc-writer-scoop`},result:`Scoop "Install Doc Writer" (install-doc-writer-scoop) has been dropped.`},{id:`fx-tc-memory`,name:`update_global_memory`,input:{content:`# Global Memory
|
|
4879
5056
|
|
|
4880
5057
|
- Brand colors now live in /shared/tokens/brand.css
|
|
4881
5058
|
- Release notes ship on Wednesdays
|
|
4882
|
-
`},result:`Global memory updated successfully.`}]}]}function
|
|
5059
|
+
`},result:`Global memory updated successfully.`}]}]}function Qu(){return[{id:`fx-delegation-1`,role:`user`,content:"**[Instructions from sliccy]**\n\nRead `/workspace/README.md` and extract the install steps into `/shared/install.md`.",timestamp:Q(4),source:`delegation`,channel:`delegation`},{id:`fx-assistant-delegated`,role:`assistant`,content:"Extracted the install steps. Wrote them to `/shared/install.md`. The section covers prerequisites, npm install, and the dev server launch.",timestamp:Q(4.4),source:`cone`}]}function $u(){return[{id:`fx-lick-webhook`,role:`user`,content:"[Webhook Event: github-push]\n```json\n"+JSON.stringify({ref:`refs/heads/main`,repository:{full_name:`example/repo`},head_commit:{message:`fix(ui): tighten button contrast in dark mode`}},null,2)+"\n```",timestamp:Q(6),source:`lick`,channel:`webhook`},{id:`fx-lick-cron`,role:`user`,content:"[Cron Event: daily-digest]\n```json\n"+JSON.stringify({time:new Date(Q(8)).toISOString()},null,2)+"\n```",timestamp:Q(8),source:`lick`,channel:`cron`},{id:`fx-lick-sprinkle`,role:`user`,content:"[Sprinkle Event: welcome]\n```json\n"+JSON.stringify({action:`onboarding-complete`,data:{mountWorkspace:!0}},null,2)+"\n```",timestamp:Q(10),source:`lick`,channel:`sprinkle`},{id:`fx-lick-fswatch`,role:`user`,content:"[File Watch Event: src-watch]\n```json\n"+JSON.stringify({changes:[{type:`modified`,path:`/workspace/src/app.ts`},{type:`created`,path:`/workspace/src/utils.ts`}]},null,2)+"\n```",timestamp:Q(12),source:`lick`,channel:`fswatch`},{id:`fx-lick-navigate`,role:`user`,content:"[Navigate Event: https://www.sliccy.ai/handoff?handoff=demo]\n```json\n"+JSON.stringify({url:`https://www.sliccy.ai/handoff?handoff=demo`,verb:`handoff`,target:`https://www.sliccy.ai/handoff?handoff=demo`,instruction:`demo`,title:`Handoff`},null,2)+"\n```",timestamp:Q(14),source:`lick`,channel:`navigate`},{id:`fx-lick-session-reload`,role:`user`,content:`[Session Reload: mount-recovery]
|
|
4883
5060
|
|
|
4884
5061
|
A previously-mounted directory needs to be reauthorized:
|
|
4885
5062
|
|
|
@@ -4908,4 +5085,4 @@ Kind: read
|
|
|
4908
5085
|
Detail: /shared/secrets/api-key.txt
|
|
4909
5086
|
Suggested pattern: /shared/secrets/**
|
|
4910
5087
|
|
|
4911
|
-
Use the lick_confirm tool with lick_id="lick-1700000000002-req44" to approve (or always-approve with a pattern), or lick_dismiss with lick_id="lick-1700000000002-req44" to deny.`,timestamp:Q(17.9),source:`lick`,channel:`sudo-request`,lickId:`lick-1700000000002-req44`,lickState:`dismissed`}]}function
|
|
5088
|
+
Use the lick_confirm tool with lick_id="lick-1700000000002-req44" to approve (or always-approve with a pattern), or lick_dismiss with lick_id="lick-1700000000002-req44" to deny.`,timestamp:Q(17.9),source:`lick`,channel:`sudo-request`,lickId:`lick-1700000000002-req44`,lickState:`dismissed`}]}function ed(){return[{id:`fx-queued-1`,role:`user`,content:`Also double-check the install.md formatting after you finish.`,timestamp:Q(18),queued:!0}]}function td(){return[{id:`fx-assistant-streaming`,role:`assistant`,content:`Great, running the coverage suite now. I'll report back as soon as it `,timestamp:Q(20),isStreaming:!0,toolCalls:[{id:`fx-tc-streaming`,name:`bash`,input:{command:`npm run test -- --coverage`}}]}]}function nd(){return[...Ju(),...Yu(),...Xu(),...Zu(),...Qu(),...$u(),...ed(),...td()]}var rd=e({FREEZER_TINT:()=>id,applyShellContext:()=>gd,mountWcShell:()=>hd,mountWcUiPreview:()=>vd,submittedText:()=>_d}),id=`#3b6cb2`,ad=`slicc-wcui-style`,od=[`html,body{margin:0;padding:0;height:100%;}`,`.wcui-frame{position:relative;transform:translateZ(0);width:100%;height:100vh;`,`overflow:hidden;background:var(--bg);font-family:var(--ui);}`,`.wcui-shader{position:absolute;inset:0;z-index:0;}`,`.wcui-frame slicc-chatpane{position:relative;background:transparent;}`,`.wcui-appcol{position:relative;z-index:1;height:100%;display:flex;flex-direction:column;`,`box-sizing:border-box;padding-left:var(--rail-w,44px);`,`transition:padding-left .4s cubic-bezier(.4,0,.2,1);}`,`@media (max-width:560px){.wcui-appcol{padding-left:44px;}}`,`.wcui-term{flex:1;min-height:0;display:flex;flex-direction:column;padding:8px 4px 8px 10px;`,`box-sizing:border-box;background:#141414;}`,`.wcui-term .terminal-panel__terminal-host{flex:1 1 auto;min-height:0;}`,`.wcui-term .terminal-panel__preview{flex:0 0 auto;}`,`.wcui-frame slicc-file-tree{width:100%;border-right:none;}`,`slicc-file-tree .f,slicc-file-tree .dir{position:relative;}`,`slicc-file-tree .ft-acts{position:absolute;right:8px;top:50%;transform:translateY(-50%);`,`display:flex;gap:3px;}`,`slicc-file-tree .ft-act{padding:0 5px;font-size:10px;line-height:16px;height:16px;`,`box-sizing:border-box;font-family:var(--ui);border-radius:3px;border:1px solid var(--line);`,`background:var(--canvas);color:var(--txt-2);cursor:pointer;}`,`slicc-file-tree .ft-act:hover{background:var(--ghost);}`,`slicc-file-tree .ft-copy-flash{background:color-mix(in srgb,#22c55e 18%,var(--canvas))!important;}`,`.wcui-memory{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;`,`gap:8px;padding:10px;}`,`.wcui-placeholder{flex:1;display:flex;align-items:center;justify-content:center;`,`padding:24px;color:var(--txt-2);font-size:13px;text-align:center;}`].join(``);function sd(e){if(e.getElementById(ad))return;let t=e.createElement(`style`);t.id=ad,t.textContent=od,e.head.appendChild(t)}var cd=null;function ld(){cd?.(),cd=io()}function $(e,t={}){let n=document.createElement(e);for(let[e,r]of Object.entries(t))n.setAttribute(e,r);return n}function ud(e){let t=$(`slicc-nav`,{accent:`var(--waffle)`}),n=$(`slicc-scoop-switcher`);n.scoops=[...e.scoops];let r=$(`slicc-floatbar`,{label:e.floatLabel,spent:`0.00`}),i=document.createElement(`slicc-avatar-menu`);return i.append($(`slicc-avatar`,{name:`SLICC`})),t.append(...e.badge?[$(`slicc-logo`,{badge:e.badge})]:[],n,r,i),{nav:t,switcher:n,floatbar:r,avatarMenu:i}}function dd(e){let t=$(`slicc-composer`),n=$(`slicc-queued-stack`);n.style.position=`relative`,n.style.zIndex=`0`,n.style.marginBottom=`-32px`,n.style.minHeight=`76px`;let r=$(`slicc-input-card`,{placeholder:e.placeholder});r.style.position=`relative`,r.style.zIndex=`1`;let i=$(`slicc-composer-meta`,{model:`Preview`,thinking:`off`});return t.append(n,r,i),{composer:t,inputCard:r,composerMeta:i,queuedStack:n}}function fd(){let e=$(`slicc-workbench-pane`),t=$(`slicc-workbench-header`,{slot:`header`,hidden:``}),n=$(`slicc-tab-bar`,{active:`files`});t.append(n);let r=$(`slicc-workbench-body`,{active:`files`}),i=$(`slicc-surface`,{"surface-id":`files`,layout:`flex`,active:``}),a=$(`slicc-file-tree`);i.append(a);let o=$(`slicc-surface`,{"surface-id":`term`,layout:`flex`}),s=$(`div`,{class:`wcui-term`});o.append(s);let c=$(`slicc-surface`,{"surface-id":`memory`,layout:`flex`}),l=$(`div`,{class:`wcui-memory`});c.append(l);let u=$(`slicc-surface`,{"surface-id":`browser`,layout:`flex`}),d=$(`div`,{class:`wcui-placeholder`});return d.textContent=`The Browser dock item opens the full-screen tab switcher: every open tab — local and tray followers — with live screenshot thumbnails. Click a card to focus it, ✕ to close it.`,u.append(d),r.append(i,o,c,u),e.append(t,r),{workbench:e,body:r,header:t,tree:a,termSurface:s,memoryHost:l,tabBar:n}}function pd(e,t,n,r){e.addEventListener(`slicc-dock-select`,e=>{let i=e.detail?.id;i&&i!==`browser`&&(t.setAttribute(`open`,``),n.setAttribute(`active`,i),r?.(i))}),e.addEventListener(`slicc-dock-collapse`,()=>{t.removeAttribute(`open`)}),e.addEventListener(`slicc-dock-longpress`,e=>{let i=e.detail?.id;if(!i?.startsWith(`sprinkle:`))return;t.setAttribute(`open`,``),n.setAttribute(`active`,i),r?.(i);let a=i.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`);n.querySelector(`[surface-id="${a}"]`)?.requestFullscreen?.().catch(()=>{})})}function md(e,t,n){e.addEventListener(`tab-select`,e=>{let r=e.detail?.id;r&&(t.setAttribute(`active`,r),n?.(r))})}function hd(e,t){no(document),sd(document),ld();let n=$(`div`,{class:`wcui-frame`}),r=$(`slicc-shader`,{mode:`cone`,tint:`var(--waffle)`,class:`wcui-shader`}),i=$(`slicc-freezer`);i.append($(`slicc-freezer-new`));let a=$(`div`,{class:`wcui-appcol`}),o=t.urlState?{"url-state":``}:{},s=$(`slicc-shell`,o),c=$(`slicc-chatpane`),l=$(`slicc-chat-thread`,{context:`cone`,accent:`var(--waffle)`,...o});l.append(...Uu(t.messages));let{composer:u,inputCard:d,composerMeta:f,queuedStack:p}=dd(t);c.append(l,u);let{workbench:m,body:h,header:g,tree:ee,termSurface:te,memoryHost:_,tabBar:v}=fd(),y=$(`slicc-dock`,{"system-tools":``});s.append(c,m,y),pd(y,s,h,t.onSurfaceActivate),md(g,h,t.onSurfaceActivate),i.addEventListener(`freezer-toggle`,e=>{let t=e.detail?.open===!0;a.style.setProperty(`--rail-w`,t?`260px`:`44px`)});let ne=0;l.addEventListener(`scroll`,()=>{ne||=requestAnimationFrame(()=>{ne=0,r.setAttribute(`scroll`,String(Math.round(l.scrollTop)))})},{passive:!0});let{nav:re,switcher:ie,floatbar:ae,avatarMenu:oe}=ud(t);return a.append(re,s),n.append(r,i,a),e.replaceChildren(n),{frame:n,shader:r,chatPane:c,thread:l,composer:u,inputCard:d,composerMeta:f,queuedStack:p,switcher:ie,floatbar:ae,shell:s,workbenchBody:h,workbenchHeader:g,dock:y,freezer:i,fileTree:ee,termSurface:te,memoryHost:_,tabBar:v,avatarMenu:oe}}function gd(e,t){let{shader:n,frame:r,freezer:i}=e;t.kind===`cone`?(n.setAttribute(`mode`,`cone`),n.setAttribute(`tint`,`var(--waffle)`),r.style.removeProperty(`--ctx`),i.removeAttribute(`ctx`)):t.kind===`scoop`?(n.setAttribute(`mode`,`scoop`),n.setAttribute(`tint`,t.accent),r.style.setProperty(`--ctx`,t.accent),i.removeAttribute(`ctx`)):(n.setAttribute(`mode`,`freezer`),n.setAttribute(`tint`,id),r.style.setProperty(`--ctx`,id),i.setAttribute(`ctx`,``))}function _d(e){return e.detail?.value}function vd(e){let t=hd(e,{messages:nd(),scoops:[{key:`cone`,type:`cone`,color:`#b07823`,label:`sliccy`,eyes:`open`},{key:qu,type:`scoop`,color:`#06b6d4`,label:qu,eyes:`open`}],floatLabel:`standalone · preview`,placeholder:`Preview harness — submissions echo into the thread…`,badge:`fixture`});t.fileTree.items=[{kind:`dir`,id:`/workspace`,label:`workspace`,open:!0,children:[{kind:`file`,id:`/workspace/CLAUDE.md`,label:`CLAUDE.md`,size:3200}]},{kind:`dir`,id:`/shared`,label:`shared`,open:!0,children:[{kind:`file`,id:`/shared/CLAUDE.md`,label:`CLAUDE.md`,size:1800}]}],t.switcher.setAttribute(`attention`,`cone`),t.inputCard.addEventListener(`submit`,e=>{let n=_d(e)?.trim();if(!n)return;let r={id:`wc-echo-${t.thread.childElementCount}`,role:`user`,content:n,timestamp:Date.now()};t.thread.append(...zu(r))})}export{ee as C,te as S,pi as _,rd as a,v as b,Lu as c,zu as d,Mu as f,Ia as g,Ko as h,_d as i,Iu as l,Rl as m,gd as n,Bu as o,xu as p,hd as r,Hu as s,id as t,Fu as u,re as v,_ as w,l as x,g as y};
|