sliccy 5.57.1 → 5.57.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ui/assets/{account-store-B70B-Xy1.js → account-store-BYbcAgX7.js} +2 -2
- package/dist/ui/assets/{account-store-BqI_bdKc.js → account-store-EkiJZvDb.js} +1 -1
- package/dist/ui/assets/{adobe-xeGFGZpC.js → adobe-DMuIRBCQ.js} +1 -1
- package/dist/ui/assets/{adobe-DkCnsZQc.js → adobe-igqMI1_L.js} +1 -1
- package/dist/ui/assets/{adobe-oauth-state-DPaR8NRp.js → adobe-oauth-state-eyWQK3Db.js} +1 -1
- package/dist/ui/assets/{agent-message-to-chat-DzRXXJel.js → agent-message-to-chat-CdGdh6Me.js} +1 -1
- package/dist/ui/assets/{apps-DpqSNSYV.js → apps-Emj7UfBa.js} +1 -1
- package/dist/ui/assets/{azure-openai-Bn3boHbY.js → azure-openai-CEn91GJx.js} +1 -1
- package/dist/ui/assets/{azure-openai-DEBv7yQp.js → azure-openai-DQWYUC5j.js} +1 -1
- package/dist/ui/assets/{cerebras-DWHxltur.js → cerebras-DLspT9p8.js} +1 -1
- package/dist/ui/assets/{cerebras-BwqdpIyz.js → cerebras-DjKubgMp.js} +1 -1
- package/dist/ui/assets/clipboard-DFF1k7iL.js +1 -0
- package/dist/ui/assets/{connect-surface-D6odnHkh.js → connect-surface-x3n9svUp.js} +1 -1
- package/dist/ui/assets/dip-Ew0wNwe6.js +1 -0
- package/dist/ui/assets/{dist-Dny1G18y.js → dist-BraUFRGP.js} +1 -1
- package/dist/ui/assets/{dist-CSrZL2G5.js → dist-C0XFYJFy.js} +1 -1
- package/dist/ui/assets/{ensure-speech-assets-W5QPk6uQ.js → ensure-speech-assets-B7Ss5vVA.js} +1 -1
- package/dist/ui/assets/{fs-D-5giB0a.js → fs-BnnBRngY.js} +1 -1
- package/dist/ui/assets/{fs-CnhmusOG.js → fs-VHevPF88.js} +2 -2
- package/dist/ui/assets/{github-DzM3FtVD.js → github-Bko-qYFj.js} +2 -2
- package/dist/ui/assets/{github-copilot-C7aAJAqW.js → github-copilot-B5DGMnJQ.js} +1 -1
- package/dist/ui/assets/{github-copilot-n309ImF7.js → github-copilot-xTbOqOvQ.js} +1 -1
- package/dist/ui/assets/{github-B29ZCKQg.js → github-ut2NnHeQ.js} +1 -1
- package/dist/ui/assets/{hear-0Tswpuv7.js → hear-C2OS428l.js} +1 -1
- package/dist/ui/assets/{kernel-worker-BCW_QlyZ.js → kernel-worker-BcsAuImy.js} +1008 -1009
- package/dist/ui/assets/{kokoro-engine-CRs8ZEvx.js → kokoro-engine-CNvfDdFE.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-D2LfSdTD.js → lick-ws-bridge-DZSVTsLH.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-8McAeIbO.js → lick-ws-bridge-rLyxnHzf.js} +1 -1
- package/dist/ui/assets/{local-llm-Dl9iXPsJ.js → local-llm-BwofnZP_.js} +1 -1
- package/dist/ui/assets/{main-6Q7Fb4tw.js → main-Dn8bgiA6.js} +4 -4
- package/dist/ui/assets/{mount-NSmYg9GU.js → mount-B2oKVbNo.js} +1 -1
- package/dist/ui/assets/{mount-BtjScgjq.js → mount-DnReidtr.js} +2 -2
- package/dist/ui/assets/{new-session-CLta1Lj7.js → new-session-BMIV1D1R.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-D-yvRHGz.js → oauth-bootstrap-rk54U1XV.js} +2 -2
- package/dist/ui/assets/{openai-codex-CB6PdYqU.js → openai-codex-BgAN6_Qw.js} +1 -1
- package/dist/ui/assets/{openai-codex-ZCmj450m.js → openai-codex-Wx21S4UT.js} +1 -1
- package/dist/ui/assets/{page-follower-tray-TKZCNKRZ.js → page-follower-tray-Df7PCTWs.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-RRddFZTk.js → panel-rpc-handlers-DYskdWzQ.js} +2 -2
- package/dist/ui/assets/{provider-DOjCml56.js → provider-C1hd8MrJ.js} +2 -2
- package/dist/ui/assets/{provider-BWME-twj.js → provider-lwmBuH_H.js} +1 -1
- package/dist/ui/assets/{provider-settings-B2s5vgom.js → provider-settings-c9dGiKca.js} +1 -1
- package/dist/ui/assets/provider-store-access-CkEGo_9g.js +1 -0
- package/dist/ui/assets/provider-store-access-D-x4-dcp.js +1 -0
- package/dist/ui/assets/{providers-BQomGz9R.js → providers-6RSF12nO.js} +2 -2
- package/dist/ui/assets/{providers-uyxOwwt4.js → providers-CsEVgN3c.js} +1 -1
- package/dist/ui/assets/{quick-llm-DHtKMD9z.js → quick-llm-Dc_7dVli.js} +1 -1
- package/dist/ui/assets/session-freezer-IBnu6nM1.js +1 -0
- package/dist/ui/assets/{speak-D5G7KiTT.js → speak-DC8ptVJL.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-nP3g46qO.js → sprinkle-manager-DoYhlu8O.js} +1 -1
- package/dist/ui/assets/sprinkle-renderer-Bk_e6Kbr.js +192 -0
- package/dist/ui/assets/{store-BZTffu8V.js → store-DGSI1qzi.js} +1 -1
- package/dist/ui/assets/{sudo-CsZ2DlSz.js → sudo-wMWKNcpq.js} +1 -1
- package/dist/ui/assets/{transformers-env-DHJa4RCf.js → transformers-env-dWV6LRaJ.js} +1 -1
- package/dist/ui/assets/{tray-leader-DgTG9H-w.js → tray-leader-X9_I01bE.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-uZUZNHVX.js → tray-leave-runtime-Dmyhw5vM.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-i5f6luyi.js → upgrade-detection-DfVhb93y.js} +1 -1
- package/dist/ui/assets/{voice-reply-C-3rH9oC.js → voice-reply-Dkrp4bDM.js} +1 -1
- package/dist/ui/assets/{wc-attach-BQzDqdAQ.js → wc-attach-BUJpM91I.js} +2 -2
- package/dist/ui/assets/{wc-extension-DA4ER47a.js → wc-extension-Vn2_Lt9D.js} +2 -2
- package/dist/ui/assets/{wc-follower-CsQZCsua.js → wc-follower-C9lTIhGW.js} +3 -3
- package/dist/ui/assets/{wc-live-C04ItfnZ.js → wc-live-TXJxtPKc.js} +5 -5
- package/dist/ui/assets/{wc-nav-DgqufJsO.js → wc-nav-XMX7q2dM.js} +2 -2
- package/dist/ui/assets/{wc-onboarding-BR7HaQPL.js → wc-onboarding-DbGx3EvO.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-D36A-bB6.js → wc-placeholder-BjPMYGhP.js} +3 -3
- package/dist/ui/assets/{wc-settings-CaxJcNwg.js → wc-settings-BW0hO_kO.js} +3 -3
- package/dist/ui/assets/{wc-shell-B7yKyiZ2.js → wc-shell-D1_4xP-C.js} +3 -3
- package/dist/ui/assets/{wc-sprinkles-j5hfmEtl.js → wc-sprinkles-B_2bqTmh.js} +2 -2
- package/dist/ui/assets/{wc-tray-CofjfW_1.js → wc-tray-DKOXOmlH.js} +2 -2
- package/dist/ui/assets/{whisper-engine-rP8D81pe.js → whisper-engine-GZAusomQ.js} +1 -1
- package/dist/ui/assets/{xai-grok-BPagp879.js → xai-grok-C1FhJfKh.js} +1 -1
- package/dist/ui/assets/{xai-grok-D80aaxGn.js → xai-grok-DqdH-Jr1.js} +1 -1
- package/dist/ui/index.html +3 -3
- package/dist/ui/packages/webapp/index.html +3 -3
- package/package.json +1 -1
- package/dist/ui/assets/clipboard-CSEDRfgj.js +0 -1
- package/dist/ui/assets/dip-Bwzg4JXD.js +0 -1
- package/dist/ui/assets/provider-store-access-CjY49bAL.js +0 -1
- package/dist/ui/assets/provider-store-access-DQ3kqRuy.js +0 -1
- package/dist/ui/assets/session-freezer-D-7ulfYc.js +0 -1
- package/dist/ui/assets/sprinkle-renderer-CTKWW81m.js +0 -192
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./provider-settings-B2s5vgom.js";export{e as copyTextToClipboard};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{m as e}from"./wc-live-C04ItfnZ.js";export{e as setDipExecHandler};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./provider-DOjCml56.js";export{e as readMcpAuthEntries};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./store-BZTffu8V.js";import"./provider-BWME-twj.js";export{e as readMcpAuthEntries};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as e}from"./wc-live-C04ItfnZ.js";export{e as readSessionsIndex};
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/slicc-editor-DKckizoI.js","assets/preload-helper-CZgWQFsJ.js","assets/dist-BHXb30bf.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./preload-helper-CZgWQFsJ.js";import{n as t}from"./runtime-env-DH4NDw4t.js";import{a as n,n as r,r as i}from"./theme-C8b_iQ_9.js";function a(){try{return window.self!==window.top}catch{return!0}}var o=new WeakSet;function s(e,t){if(o.has(e)){t?.();return}let n=!1;c(e,t,()=>{n=!0}),setTimeout(()=>{n||e.isConnected&&c(e)},500)}function c(e,t,n){if(o.has(e)){t?.();return}o.add(e);let r=e.style.display;e.style.display=`none`;let i=!1,a=a=>{i||(i=!0,e.style.display=r,o.delete(e),a&&n?.(),t?.())};requestAnimationFrame(()=>{requestAnimationFrame(()=>a(!0))}),setTimeout(()=>a(!1),100)}var l=t(),u=/<script\b([^>]*)\bsrc\s*=\s*["'](https?:\/\/[^"']+)["']([^>]*)><\/script>/gi;async function d(e){let t=[],n;for(;(n=u.exec(e))!==null;)t.push({full:n[0],url:n[2],index:n.index});if(u.lastIndex=0,t.length===0)return e;let r=await Promise.all(t.map(async e=>{try{let t=await fetch(e.url);if(!t.ok)throw Error(`HTTP ${t.status}`);return{...e,text:await t.text()}}catch(t){let n=t instanceof Error?t.message:String(t);return{...e,text:`console.error('[sprinkle] Failed to load ${e.url}: ${n}')`}}})),i=e;for(let e=r.length-1;e>=0;e--){let{full:t,text:n}=r[e],a=n.replace(/<\/script/gi,`<\\/script`);i=i.replace(t,()=>`<script>${a}<\/script>`)}return i}function f(e){let t=e.trimStart().toLowerCase();return t.startsWith(`<!doctype`)||t.startsWith(`<html`)}function p(e,t,n,r={}){e.contentWindow?.postMessage({type:t,id:n,...r},`*`)}function m(e,t,n,r,i){r.then(r=>p(e,t,n,i(r)),r=>p(e,t,n,{error:r instanceof Error?r.message:String(r)}))}function h(e){return{"sprinkle-lick":(t,n)=>e.lick({action:n.action,data:n.data}),"sprinkle-set-state":(t,n)=>e.setState(n.data),"sprinkle-close":()=>e.close(),"sprinkle-minimize":()=>e.minimize(),"sprinkle-stop-cone":()=>e.stopCone(),"sprinkle-attach-image":(t,n)=>e.attachImage(n.base64,n.name,n.mimeType),"sprinkle-readfile":(t,n)=>m(t,`sprinkle-readfile-response`,n.id,e.readFile(n.path),e=>({content:e})),"sprinkle-writefile":(t,n)=>m(t,`sprinkle-writefile-response`,n.id,e.writeFile(n.path,n.content),()=>({})),"sprinkle-readdir":(t,n)=>m(t,`sprinkle-readdir-response`,n.id,e.readDir(n.path),e=>({entries:e})),"sprinkle-exists":(t,n)=>m(t,`sprinkle-exists-response`,n.id,e.exists(n.path),e=>({exists:e})),"sprinkle-stat":(t,n)=>m(t,`sprinkle-stat-response`,n.id,e.stat(n.path),e=>({stat:e})),"sprinkle-mkdir":(t,n)=>m(t,`sprinkle-mkdir-response`,n.id,e.mkdir(n.path),()=>({})),"sprinkle-rm":(t,n)=>m(t,`sprinkle-rm-response`,n.id,e.rm(n.path),()=>({})),"sprinkle-capture-screen":(t,n)=>m(t,`sprinkle-capture-screen-response`,n.id,e.captureScreen(),e=>({base64:e.base64,width:e.width,height:e.height,mimeType:e.mimeType})),"sprinkle-exec":(t,n)=>m(t,`sprinkle-exec-response`,n.id,e.exec(n.cmd),e=>({result:e})),"sprinkle-agent":(t,n)=>m(t,`sprinkle-agent-response`,n.id,e.agent(n.prompt,n.opts),e=>({result:e})),"sprinkle-jsh":(t,n)=>m(t,`sprinkle-jsh-response`,n.id,e._jsh(n.op,n.args),e=>({result:e})),"sprinkle-device-op":(t,n)=>m(t,`sprinkle-device-op-response`,n.id,e._device(n.channel,n.op,n.args??[]),e=>({result:e}))}}function g(e,t){return n=>{if(n.source!==e.contentWindow)return;let r=n.data;r?.type&&t[r.type]?.(e,r)}}function _(t){if(t.includes(`<slicc-editor`)&&!customElements.get(`slicc-editor`)&&e(()=>import(`./slicc-editor-DKckizoI.js`),__vite__mapDeps([0,1,2])),t.includes(`<slicc-diff`)&&!customElements.get(`slicc-diff`)){let e=document.createElement(`script`);e.src=`/slicc-diff.js`,document.head.appendChild(e)}}function v(e){for(let t of e.querySelectorAll(`.fill[data-value]`)){let e=parseFloat(t.dataset.value||`0`);e>=0&&e<=100&&(t.style.width=`${e}%`)}}function y(e,t){let n=`window.__slicc_sprinkles[${JSON.stringify(t)}]`;for(let t of e.querySelectorAll(`[onclick]`)){let e=t.getAttribute(`onclick`)||``;/\b(slicc|bridge)\b/.test(e)&&t.setAttribute(`onclick`,e.replace(/\b(slicc|bridge)\b/g,n))}return n}function b(e){let t=new Set;for(let n of e.querySelectorAll(`[onclick]`)){let e=n.getAttribute(`onclick`)||``;for(let n of e.matchAll(/\b(\w+)\s*\(/g)){let e=n[1];[`slicc`,`bridge`,`lick`,`close`,`exec`,`agent`].includes(e)||t.add(e)}}return t}function x(e,t){let n=[];for(let r of Array.from(e.querySelectorAll(`script`))){r.remove();let i=document.createElement(`script`);for(let e of r.attributes)i.setAttribute(e.name,e.value);if(!r.src){let n=[...b(e)].map(e=>`if (typeof ${e} === 'function') window.${e} = ${e};`).join(`
|
|
3
|
-
`);i.textContent=`(function() { var slicc = ${t}; var bridge = slicc;\n`+r.textContent+(n?`
|
|
4
|
-
`+n:``)+`
|
|
5
|
-
})();`}e.appendChild(i),n.push(i)}return n}var S=class e{container;bridge;scripts=[];iframe=null;static cachedLucideScript=null;static lucideScriptPromise=null;messageHandler=null;visibilityObserver=null;constructor(e,t){this.container=e,this.bridge=t}async render(e,t){this.dispose(),l?await this.renderInSandbox(e,t,f(e)):f(e)?await this.renderFullDoc(e,t):this.renderInline(e,t)}async renderInSandbox(e,t,n=!1){let o=document.createElement(`iframe`);o.src=chrome.runtime.getURL(`sprinkle-sandbox.html`),o.style.cssText=`width: 100%; flex: 1; border: none; min-height: 0;`+(a()?` transform: translateZ(0);`:``),this.iframe=o,console.log(`[sprinkle-renderer] creating sandbox iframe`,o.src),await new Promise((e,t)=>{let n=setTimeout(()=>{console.error(`[sprinkle-renderer] iframe load timed out after 5s`),t(Error(`sprinkle sandbox iframe load timed out`))},5e3);o.addEventListener(`load`,()=>{clearTimeout(n),console.log(`[sprinkle-renderer] iframe loaded, contentWindow:`,!!o.contentWindow),i(o.contentWindow),a()&&s(o),e()},{once:!0}),o.addEventListener(`error`,e=>{clearTimeout(n),console.error(`[sprinkle-renderer] iframe error:`,e),t(Error(`sprinkle sandbox iframe failed to load`))},{once:!0}),this.container.appendChild(o)}),this.messageHandler=g(o,{...h(this.bridge),"sprinkle-storage-set":(e,n)=>{try{localStorage.setItem(`slicc-sprinkle-ls:${t}:${n.key}`,n.value)}catch(e){console.warn(`[sprinkle-renderer] localStorage setItem failed:`,n.key,e)}},"sprinkle-storage-remove":(e,n)=>{try{localStorage.removeItem(`slicc-sprinkle-ls:${t}:${n.key}`)}catch(e){console.warn(`[sprinkle-renderer] localStorage removeItem failed:`,n.key,e)}},"sprinkle-storage-clear":()=>{let e=`slicc-sprinkle-ls:${t}:`;for(let t=localStorage.length-1;t>=0;t--){let n=localStorage.key(t);n?.startsWith(e)&&localStorage.removeItem(n)}},"sprinkle-open":(e,t)=>this.bridge.open(t.path,t.projectRoot?{projectRoot:t.projectRoot}:void 0),"sprinkle-fetch-script":(e,t)=>{let n=t.url,r=t.id;fetch(n).then(e=>e.ok?e.text():Promise.reject(Error(`HTTP ${e.status}`))).then(t=>p(e,`sprinkle-fetch-script-response`,r,{url:n,text:t})).catch(t=>p(e,`sprinkle-fetch-script-response`,r,{url:n,error:t instanceof Error?t.message:String(t)}))}}),window.addEventListener(`message`,this.messageHandler);let c=this.collectThemeCSS(),l={},u=`slicc-sprinkle-ls:${t}:`;for(let e=0;e<localStorage.length;e++){let t=localStorage.key(e);t?.startsWith(u)&&(l[t.slice(u.length)]=localStorage.getItem(t)??``)}let f=this.bridge.getState(),m=``,_=``;if(n){let t=[];e.includes(`<slicc-editor`)&&t.push(fetch(chrome.runtime.getURL(`slicc-editor.js`)).then(e=>e.ok?e.text():``).then(e=>{m=e}).catch(()=>{})),e.includes(`<slicc-diff`)&&t.push(fetch(chrome.runtime.getURL(`slicc-diff.js`)).then(e=>e.ok?e.text():``).then(e=>{_=e}).catch(()=>{})),await Promise.all(t)}let v=await this.getLucideScript(),y=n?await d(e):e;o.contentWindow.postMessage({type:`sprinkle-render`,content:y,name:t,themeCSS:c,savedState:f,savedStorage:l,fullDoc:n,editorScript:m,diffScript:_,lucideScript:v,isLight:r()},`*`)}pushUpdate(e){this.iframe?.contentWindow&&this.iframe.contentWindow.postMessage({type:`sprinkle-update`,data:e},`*`)}pushDeviceEvent(e,t){this.iframe?.contentWindow&&this.iframe.contentWindow.postMessage({type:`sprinkle-device-event`,channel:e,payload:t},`*`)}collectThemeCSS(){return w()}generateBridgeScript(){return`(function() {
|
|
6
|
-
var _updateListeners = new Set();
|
|
7
|
-
var _hidInputReportListeners = new Set();
|
|
8
|
-
var _sprinkleName = '';
|
|
9
|
-
var _state = null;
|
|
10
|
-
var _cbId = 0;
|
|
11
|
-
var _callbacks = {};
|
|
12
|
-
|
|
13
|
-
window.addEventListener('message', function(event) {
|
|
14
|
-
var msg = event.data;
|
|
15
|
-
if (!msg || !msg.type) return;
|
|
16
|
-
if (msg.type === 'sprinkle-init') {
|
|
17
|
-
_sprinkleName = msg.name || '';
|
|
18
|
-
_state = msg.savedState || null;
|
|
19
|
-
if (window.slicc) window.slicc.name = _sprinkleName;
|
|
20
|
-
} else if (msg.type === 'sprinkle-update') {
|
|
21
|
-
_updateListeners.forEach(function(cb) { try { cb(msg.data); } catch(e) { console.error(e); } });
|
|
22
|
-
} else if (msg.type === 'sprinkle-device-event') {
|
|
23
|
-
if (msg.channel === 'hid:inputreport') {
|
|
24
|
-
_hidInputReportListeners.forEach(function(cb) {
|
|
25
|
-
try { cb(msg.payload); } catch(e) { console.error(e); }
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
} else if (msg.type === 'slicc-theme') {
|
|
29
|
-
document.documentElement.classList.toggle('theme-light', !!msg.isLight);
|
|
30
|
-
} else if (msg.id && _callbacks[msg.id]) {
|
|
31
|
-
var cb = _callbacks[msg.id];
|
|
32
|
-
delete _callbacks[msg.id];
|
|
33
|
-
cb(msg);
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
function _vfsCall(type, params, extractResult) {
|
|
38
|
-
return new Promise(function(resolve, reject) {
|
|
39
|
-
var id = ++_cbId;
|
|
40
|
-
_callbacks[id] = function(msg) {
|
|
41
|
-
if (msg.error) reject(new Error(msg.error));
|
|
42
|
-
else resolve(extractResult ? extractResult(msg) : undefined);
|
|
43
|
-
};
|
|
44
|
-
var m = { type: type, id: id };
|
|
45
|
-
if (params) { for (var k in params) m[k] = params[k]; }
|
|
46
|
-
parent.postMessage(m, '*');
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
function _jshCall(op, args) {
|
|
51
|
-
return _vfsCall('sprinkle-jsh', { op: op, args: args }, function(m) { return m.result; });
|
|
52
|
-
}
|
|
53
|
-
function _deviceCall(channel, op, args) {
|
|
54
|
-
return _vfsCall('sprinkle-device-op', { channel: channel, op: op, args: args || [] },
|
|
55
|
-
function(m) { return m.result; });
|
|
56
|
-
}
|
|
57
|
-
function _b64ToU8(b64) {
|
|
58
|
-
var bin = atob(b64); var u8 = new Uint8Array(bin.length);
|
|
59
|
-
for (var i = 0; i < bin.length; i++) u8[i] = bin.charCodeAt(i);
|
|
60
|
-
return u8;
|
|
61
|
-
}
|
|
62
|
-
function _u8ToB64(bytes) {
|
|
63
|
-
var bin = ''; for (var i = 0; i < bytes.length; i++) bin += String.fromCharCode(bytes[i]);
|
|
64
|
-
return btoa(bin);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
var api = {
|
|
68
|
-
lick: function(event) {
|
|
69
|
-
var action, data;
|
|
70
|
-
if (typeof event === 'string') { action = event; } else { action = event.action; data = event.data; }
|
|
71
|
-
parent.postMessage({ type: 'sprinkle-lick', action: action, data: data }, '*');
|
|
72
|
-
},
|
|
73
|
-
on: function(event, callback) { if (event === 'update') _updateListeners.add(callback); },
|
|
74
|
-
off: function(event, callback) { if (event === 'update') _updateListeners.delete(callback); },
|
|
75
|
-
readFile: function(path) {
|
|
76
|
-
return _vfsCall('sprinkle-readfile', { path: path }, function(m) { return m.content; });
|
|
77
|
-
},
|
|
78
|
-
writeFile: function(path, content) {
|
|
79
|
-
return _vfsCall('sprinkle-writefile', { path: path, content: content });
|
|
80
|
-
},
|
|
81
|
-
readDir: function(path) {
|
|
82
|
-
return _vfsCall('sprinkle-readdir', { path: path }, function(m) { return m.entries; });
|
|
83
|
-
},
|
|
84
|
-
exists: function(path) {
|
|
85
|
-
return _vfsCall('sprinkle-exists', { path: path }, function(m) { return m.exists; });
|
|
86
|
-
},
|
|
87
|
-
stat: function(path) {
|
|
88
|
-
return _vfsCall('sprinkle-stat', { path: path }, function(m) { return m.stat; });
|
|
89
|
-
},
|
|
90
|
-
mkdir: function(path) {
|
|
91
|
-
return _vfsCall('sprinkle-mkdir', { path: path });
|
|
92
|
-
},
|
|
93
|
-
rm: function(path) {
|
|
94
|
-
return _vfsCall('sprinkle-rm', { path: path });
|
|
95
|
-
},
|
|
96
|
-
screenshot: function(selector) {
|
|
97
|
-
return new Promise(function(resolve, reject) {
|
|
98
|
-
try {
|
|
99
|
-
var target = selector ? document.querySelector(selector) : document.body;
|
|
100
|
-
if (!target) { reject(new Error('Element not found: ' + selector)); return; }
|
|
101
|
-
var rect = target.getBoundingClientRect();
|
|
102
|
-
var w = Math.ceil(rect.width);
|
|
103
|
-
var h = Math.ceil(rect.height);
|
|
104
|
-
if (w === 0 || h === 0) { reject(new Error('Element has zero dimensions')); return; }
|
|
105
|
-
var canvas = document.createElement('canvas');
|
|
106
|
-
var dpr = window.devicePixelRatio || 1;
|
|
107
|
-
canvas.width = w * dpr;
|
|
108
|
-
canvas.height = h * dpr;
|
|
109
|
-
var ctx = canvas.getContext('2d');
|
|
110
|
-
ctx.scale(dpr, dpr);
|
|
111
|
-
var clone = target.cloneNode(true);
|
|
112
|
-
var svg = '<svg xmlns="http://www.w3.org/2000/svg" width="' + w + '" height="' + h + '">' +
|
|
113
|
-
'<foreignObject width="100%" height="100%">' +
|
|
114
|
-
new XMLSerializer().serializeToString(clone) +
|
|
115
|
-
'</foreignObject></svg>';
|
|
116
|
-
var img = new Image();
|
|
117
|
-
img.onload = function() { ctx.drawImage(img, 0, 0); resolve(canvas.toDataURL('image/png')); };
|
|
118
|
-
img.onerror = function() { reject(new Error('Screenshot rendering failed')); };
|
|
119
|
-
img.src = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg);
|
|
120
|
-
} catch(e) { reject(e); }
|
|
121
|
-
});
|
|
122
|
-
},
|
|
123
|
-
setState: function(data) { _state = data; parent.postMessage({ type: 'sprinkle-set-state', data: data }, '*'); },
|
|
124
|
-
getState: function() { return _state; },
|
|
125
|
-
close: function() { parent.postMessage({ type: 'sprinkle-close' }, '*'); },
|
|
126
|
-
minimize: function() { parent.postMessage({ type: 'sprinkle-minimize' }, '*'); },
|
|
127
|
-
stopCone: function() { parent.postMessage({ type: 'sprinkle-stop-cone' }, '*'); },
|
|
128
|
-
attachImage: function(base64, name, mimeType) { parent.postMessage({ type: 'sprinkle-attach-image', base64: base64, name: name, mimeType: mimeType }, '*'); },
|
|
129
|
-
captureScreen: function() {
|
|
130
|
-
return _vfsCall('sprinkle-capture-screen', {}, function(m) {
|
|
131
|
-
return { base64: m.base64, width: m.width, height: m.height, mimeType: m.mimeType };
|
|
132
|
-
});
|
|
133
|
-
},
|
|
134
|
-
exec: Object.assign(function(cmd) {
|
|
135
|
-
return _vfsCall('sprinkle-exec', { cmd: cmd }, function(m) { return m.result; });
|
|
136
|
-
}, { spawn: function(argv) { return _jshCall('spawn', [argv]); } }),
|
|
137
|
-
agent: function(prompt, opts) {
|
|
138
|
-
return _vfsCall('sprinkle-agent', { prompt: prompt, opts: opts }, function(m) { return m.result; });
|
|
139
|
-
},
|
|
140
|
-
fetch: function(url, init) { return _jshCall('fetch', [url, init || null]); },
|
|
141
|
-
http: {
|
|
142
|
-
client: function(cfg) {
|
|
143
|
-
function mk(method) { return function(path, opts) { return _jshCall('http', [cfg, method, path, opts || null]); }; }
|
|
144
|
-
return { get: mk('get'), post: mk('post'), put: mk('put'), patch: mk('patch'), 'delete': mk('delete') };
|
|
145
|
-
}
|
|
146
|
-
},
|
|
147
|
-
browser: {
|
|
148
|
-
findTab: function(q) { return _jshCall('browser', ['findTab', q]); },
|
|
149
|
-
ensureTab: function(url, options) { return _jshCall('browser', ['ensureTab', url, options || {}]); },
|
|
150
|
-
eval: function(tab, code) { return _jshCall('browser', ['eval', tab, code]); },
|
|
151
|
-
evalAsync: function(tab, code) { return _jshCall('browser', ['evalAsync', tab, code]); },
|
|
152
|
-
cookie: function(tab, name) { return _jshCall('browser', ['cookie', tab, name]); },
|
|
153
|
-
localStorage: function(tab, key) { return _jshCall('browser', ['localStorage', tab, key]); },
|
|
154
|
-
fetch: function(tab, url, opts) { return _jshCall('browser', ['fetch', tab, url, opts || {}]); }
|
|
155
|
-
},
|
|
156
|
-
hid: {
|
|
157
|
-
list: function() { return _deviceCall('hid', 'list', []); },
|
|
158
|
-
request: function(filters) { return _deviceCall('hid', 'request', [filters || []]); },
|
|
159
|
-
open: function(handle) { return _deviceCall('hid', 'open', [handle]).then(function() {}); },
|
|
160
|
-
close: function(handle) { return _deviceCall('hid', 'close', [handle]).then(function() {}); },
|
|
161
|
-
sendReport: function(handle, reportId, data) {
|
|
162
|
-
return _deviceCall('hid', 'sendReport', [handle, reportId, data]).then(function() {});
|
|
163
|
-
},
|
|
164
|
-
on: function(event, cb) { if (event === 'inputreport') _hidInputReportListeners.add(cb); },
|
|
165
|
-
off: function(event, cb) { if (event === 'inputreport') _hidInputReportListeners['delete'](cb); }
|
|
166
|
-
},
|
|
167
|
-
serial: {
|
|
168
|
-
list: function() { return _deviceCall('serial', 'list', []); },
|
|
169
|
-
request: function(filters) { return _deviceCall('serial', 'request', [filters || []]); },
|
|
170
|
-
open: function(handle, options) { return _deviceCall('serial', 'open', [handle, options]).then(function() {}); },
|
|
171
|
-
close: function(handle) { return _deviceCall('serial', 'close', [handle]).then(function() {}); }
|
|
172
|
-
},
|
|
173
|
-
usb: {
|
|
174
|
-
list: function() { return _deviceCall('usb', 'list', []); },
|
|
175
|
-
request: function(filters) { return _deviceCall('usb', 'request', [filters || []]); },
|
|
176
|
-
open: function(handle) { return _deviceCall('usb', 'open', [handle]).then(function() {}); },
|
|
177
|
-
close: function(handle) { return _deviceCall('usb', 'close', [handle]).then(function() {}); }
|
|
178
|
-
},
|
|
179
|
-
readFileBinary: function(path) { return _jshCall('readFileBinary', [path]).then(function(r) { return _b64ToU8(r.base64); }); },
|
|
180
|
-
writeFileBinary: function(path, bytes) { return _jshCall('writeFileBinary', [path, _u8ToB64(bytes)]); },
|
|
181
|
-
fetchToFile: function(url, path) { return _jshCall('fetchToFile', [url, path]); },
|
|
182
|
-
_jsh: function(op, args) { return _jshCall(op, args); },
|
|
183
|
-
name: ''
|
|
184
|
-
};
|
|
185
|
-
window.slicc = api;
|
|
186
|
-
window.bridge = api;
|
|
187
|
-
})();`}async renderFullDoc(e,t){let n=`<script>${this.generateBridgeScript()}<\/script>`,o=this.collectThemeCSS(),c=o?`<style>${o}</style>`:``,l=e.includes(`<slicc-editor`)?`<script src="/slicc-editor.js"><\/script>`:``,u=e.includes(`<slicc-diff`)?`<script src="/slicc-diff.js"><\/script>`:``,d=`<script>(function(){try{if(${r()?`true`:`false`})document.documentElement.classList.add('theme-light');}catch(e){}})();<\/script>`+n+c+l+u+`<script src="/lucide-icons.js"><\/script>`,f,p=e.match(/<head\b[^>]*>/i);if(p){let t=p.index+p[0].length;f=e.slice(0,t)+d+e.slice(t)}else{let t=e.match(/<script\b/i);if(t)f=e.slice(0,t.index)+d+e.slice(t.index);else{let t=e.match(/<html\b[^>]*>/i);if(t){let n=t.index+t[0].length;f=e.slice(0,n)+d+e.slice(n)}else f=d+e}}let m=document.createElement(`iframe`),_=a()?`allow-scripts allow-same-origin allow-popups`:`allow-scripts allow-same-origin`;if(m.setAttribute(`sandbox`,_),m.style.cssText=`width: 100%; flex: 1; border: none; min-height: 0;`+(a()?` transform: translateZ(0);`:``),m.srcdoc=f,this.iframe=m,await new Promise((e,n)=>{let r=setTimeout(()=>{n(Error(`full-doc iframe load timed out`))},5e3);m.addEventListener(`load`,()=>{clearTimeout(r),i(m.contentWindow);let n=this.bridge.getState();m.contentWindow?.postMessage({type:`sprinkle-init`,name:t,savedState:n},`*`),a()&&s(m),e()},{once:!0}),m.addEventListener(`error`,e=>{clearTimeout(r),n(Error(`full-doc iframe failed to load`))},{once:!0}),this.container.appendChild(m)}),this.messageHandler=g(m,h(this.bridge)),window.addEventListener(`message`,this.messageHandler),a()&&typeof IntersectionObserver<`u`){let e=!1,t=new IntersectionObserver(n=>{if(n[n.length-1].isIntersecting){if(e){e=!1;return}t.unobserve(m),s(m,()=>{e=!0,t.observe(m)})}});this.visibilityObserver=t,t.observe(m)}}renderInline(e,t){_(e),window.__slicc_sprinkles||(window.__slicc_sprinkles={}),window.__slicc_sprinkles[t]=this.bridge,this.bridge._container=this.container;let n=document.createElement(`div`);n.className=`sprinkle-content`,n.innerHTML=e,this.container.appendChild(n),v(n);let r=y(n,t);this.scripts=x(n,r)}dispose(){this.visibilityObserver&&=(this.visibilityObserver.disconnect(),null),this.messageHandler&&=(window.removeEventListener(`message`,this.messageHandler),null),this.iframe&&=(n(this.iframe.contentWindow),this.iframe.remove(),null);for(let e of this.scripts)e.remove();this.scripts=[];let e=this.container.querySelector(`.sprinkle-content`);e&&e.remove(),window.__slicc_sprinkles&&delete window.__slicc_sprinkles[this.bridge.name]}async getLucideScript(){return e.cachedLucideScript===null?(e.lucideScriptPromise===null&&(e.lucideScriptPromise=(async()=>{try{let t=await fetch(chrome.runtime.getURL(`lucide-icons.js`));if(t.ok){let n=await t.text();return e.cachedLucideScript=n,n}console.warn(`[sprinkle-renderer] lucide-icons.js fetch returned non-ok status:`,t.status)}catch(e){console.warn(`[sprinkle-renderer] lucide-icons.js fetch failed:`,e)}finally{e.lucideScriptPromise=null}return``})()),e.lucideScriptPromise):e.cachedLucideScript}};function C(e,t){return e.replace(/url\(\s*['"]?([^'")]+)['"]?\s*\)/g,(e,n)=>{if(/^(https?:|data:|blob:)/i.test(n))return`url('${n}')`;try{return`url('${new URL(n,t).href}')`}catch{return`url('${n}')`}})}function w(){if(typeof getComputedStyle!=`function`)return``;let e=[],t=[],n=[],r=location.href,i=e=>e===`:root`||e===`:root.theme-light`||e.startsWith(`.theme-light `)||e===`.theme-light`||e.split(`,`).some(e=>{let t=e.trim();return t===`:root`||t===`:root.theme-light`||t.startsWith(`.theme-light `)||t===`.theme-light`});for(let a of document.styleSheets)try{for(let o of a.cssRules)if(o instanceof CSSFontFaceRule)e.push(C(o.cssText,r));else if(o instanceof CSSStyleRule){let e=o.selectorText;i(e)&&t.push(o.cssText),(e.includes(`.sprinkle-`)||e.includes(`.fill`))&&n.push(o.cssText)}}catch{}return e.join(`
|
|
188
|
-
`)+`
|
|
189
|
-
`+t.join(`
|
|
190
|
-
`)+`
|
|
191
|
-
`+n.join(`
|
|
192
|
-
`)}export{s as i,w as n,a as r,S as t};
|