sliccy 5.27.1 → 5.27.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-BYtS_MJG.js → account-store-BFup3fQv.js} +2 -2
- package/dist/ui/assets/{account-store-UcO7qfdF.js → account-store-CyTIxjml.js} +1 -1
- package/dist/ui/assets/{adobe-n4YtxkW-.js → adobe-C3ICTjkQ.js} +1 -1
- package/dist/ui/assets/{adobe-fHh_r5ek.js → adobe-Cwn9LSa3.js} +1 -1
- package/dist/ui/assets/{adobe-oauth-state-1V78_tmU.js → adobe-oauth-state-CJxatA-w.js} +1 -1
- package/dist/ui/assets/{agent-message-to-chat-CcPpGXUQ.js → agent-message-to-chat-Cnwu7Uug.js} +1 -1
- package/dist/ui/assets/{apps-DLUcfmty.js → apps-_Ru-zeOq.js} +1 -1
- package/dist/ui/assets/{azure-openai-B6d_3N1t.js → azure-openai-C5BnoYfB.js} +1 -1
- package/dist/ui/assets/{azure-openai-BTCz80Nk.js → azure-openai-GOAwvC0d.js} +1 -1
- package/dist/ui/assets/{cerebras-D79VbZTh.js → cerebras-DnmvEnzf.js} +1 -1
- package/dist/ui/assets/{cerebras-Db1ZGIBL.js → cerebras-kkt6JWkZ.js} +1 -1
- package/dist/ui/assets/{connect-surface-BC2h7KGD.js → connect-surface-xExKp6k4.js} +1 -1
- package/dist/ui/assets/dip-vOI0dNhU.js +1 -0
- package/dist/ui/assets/{dist-BLXRMmLi.js → dist-rO_zI7c5.js} +1 -1
- package/dist/ui/assets/{dist-CbZGMa0z.js → dist-wcq5kRyy.js} +1 -1
- package/dist/ui/assets/{ensure-speech-assets-221hqA0v.js → ensure-speech-assets-DVNIpxHE.js} +1 -1
- package/dist/ui/assets/esp8266-J41qncWu.js +1 -0
- package/dist/ui/assets/{esptool-operations-D9FK25dN.js → esptool-operations-BMcyf6lU.js} +2 -2
- package/dist/ui/assets/{fs-kEkBPguN.js → fs-Djs11fgL.js} +1 -1
- package/dist/ui/assets/{fs-pcubAdbg.js → fs-IUJNLCle.js} +2 -2
- package/dist/ui/assets/{github-APF01zSC.js → github-B2Q7d9d9.js} +1 -1
- package/dist/ui/assets/{github-CzMUNwD2.js → github-V9F2Kwc3.js} +2 -2
- package/dist/ui/assets/{github-copilot-DSpVbWJK.js → github-copilot-DrbeG1qM.js} +1 -1
- package/dist/ui/assets/{github-copilot-CRqJKdlV.js → github-copilot-_wD9vWLP.js} +1 -1
- package/dist/ui/assets/{hear-DfCn4f-T.js → hear-B6wdzPMD.js} +1 -1
- package/dist/ui/assets/{kernel-worker-t64MUE9M.js → kernel-worker-D6FiY4In.js} +18 -18
- package/dist/ui/assets/{kokoro-engine-DcBeTbNQ.js → kokoro-engine-CdpBgmxP.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-wcIP1fCX.js → lick-ws-bridge-Cstvd5df.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-Cfb9Jd6Z.js → lick-ws-bridge-DUmVUuCv.js} +1 -1
- package/dist/ui/assets/{local-llm-kRU-0KTk.js → local-llm-COSrJK26.js} +1 -1
- package/dist/ui/assets/{main-lcRuHUVm.js → main-C--nD5g7.js} +4 -4
- package/dist/ui/assets/{mount-yBLV9qpb.js → mount-CKi0fTDP.js} +2 -2
- package/dist/ui/assets/{mount-CbT9t0SK.js → mount-CihzCUsg.js} +1 -1
- package/dist/ui/assets/{new-session-D2IjdWrR.js → new-session-AM3XtlDe.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-vVyyX-79.js → oauth-bootstrap-Bh2RA718.js} +2 -2
- package/dist/ui/assets/{openai-codex-DHKUKnWs.js → openai-codex-DetPrslk.js} +1 -1
- package/dist/ui/assets/{openai-codex-deus7kuD.js → openai-codex-IbPQB6G0.js} +1 -1
- package/dist/ui/assets/{page-follower-tray-Cef2ySsq.js → page-follower-tray-C6-y2wCt.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-D6y4zlvT.js → panel-rpc-handlers-BR7koM3e.js} +2 -2
- package/dist/ui/assets/{provider-Cv8J_qMJ.js → provider-C2DK-tou.js} +2 -2
- package/dist/ui/assets/{provider-DCydPYzn.js → provider-Kdt5mnJz.js} +1 -1
- package/dist/ui/assets/provider-store-access-BILn3hmx.js +1 -0
- package/dist/ui/assets/provider-store-access-CbFUIJuP.js +1 -0
- package/dist/ui/assets/{providers-03UqTQOI.js → providers-D-lbA45B.js} +2 -2
- package/dist/ui/assets/{providers-CgaiwwNp.js → providers-uxcBDh6N.js} +1 -1
- package/dist/ui/assets/{quick-llm-D6tM1_V9.js → quick-llm-4arXh_DA.js} +1 -1
- package/dist/ui/assets/session-freezer-DpwXCapf.js +1 -0
- package/dist/ui/assets/{speak-BFnsda0B.js → speak-BdzRzg-l.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-BUiDPhHv.js → sprinkle-manager-CRspU-wp.js} +1 -1
- package/dist/ui/assets/sprinkle-renderer-Ck9jaWXg.js +192 -0
- package/dist/ui/assets/{store-K-xvBi8w.js → store-AZEbHS5U.js} +1 -1
- package/dist/ui/assets/{sudo-BumyrB7W.js → sudo-CTuXr4DQ.js} +1 -1
- package/dist/ui/assets/{transformers-env-DVdKu5st.js → transformers-env-DLkBUkpw.js} +1 -1
- package/dist/ui/assets/{tray-leader-BJj1yP2r.js → tray-leader-DM9rswbl.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-BcQSXe-W.js → tray-leave-runtime-BtIR6gOV.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-M985riEk.js → upgrade-detection-DxQBYy82.js} +1 -1
- package/dist/ui/assets/{voice-reply-CIAcTu5o.js → voice-reply-fuBAYbo5.js} +1 -1
- package/dist/ui/assets/{wc-attach-BC5WlTU0.js → wc-attach-CzeWLPFm.js} +2 -2
- package/dist/ui/assets/{wc-extension-D39k7fk8.js → wc-extension-CQkPmWB-.js} +2 -2
- package/dist/ui/assets/{wc-follower-CmV-WqsR.js → wc-follower-6OLDQClB.js} +3 -3
- package/dist/ui/assets/{wc-live-BqY1FhFp.js → wc-live-DBfgEvvH.js} +5 -5
- package/dist/ui/assets/{wc-nav-WmgHBpu1.js → wc-nav-DpdrDmzV.js} +2 -2
- package/dist/ui/assets/{wc-onboarding-CZlfk8jg.js → wc-onboarding-Dl8IrgMO.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-BHPJ-0Nm.js → wc-placeholder-9KOVYHkL.js} +3 -3
- package/dist/ui/assets/{wc-settings-ClF67RP6.js → wc-settings-DK6xQJ9c.js} +2 -2
- package/dist/ui/assets/{wc-shell-DmihvKaj.js → wc-shell-BEzti5I0.js} +3 -3
- package/dist/ui/assets/{wc-sprinkles-DkhHXeWh.js → wc-sprinkles-BwQjnMOV.js} +2 -2
- package/dist/ui/assets/{wc-tray-DfUsCYsC.js → wc-tray-Bfd9GvZL.js} +2 -2
- package/dist/ui/assets/{whisper-engine-DrT9kVGM.js → whisper-engine-Dbg5R3v1.js} +1 -1
- package/dist/ui/assets/{xai-grok-BiHP46gq.js → xai-grok-BSlNsl2K.js} +1 -1
- package/dist/ui/assets/{xai-grok-DhFS8EgP.js → xai-grok-COz57XiQ.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/dip-CzCatNyu.js +0 -1
- package/dist/ui/assets/esp8266-CbV1uXa4.js +0 -1
- package/dist/ui/assets/provider-store-access-CBrTIXMl.js +0 -1
- package/dist/ui/assets/provider-store-access-DDneicDp.js +0 -1
- package/dist/ui/assets/session-freezer-BJKV5uQH.js +0 -1
- package/dist/ui/assets/sprinkle-renderer-BMzJnQXh.js +0 -192
|
@@ -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{a as t,n,r}from"./theme-Bgsl5v2i.js";var i=typeof chrome<`u`&&!!chrome?.runtime?.id,a=/<script\b([^>]*)\bsrc\s*=\s*["'](https?:\/\/[^"']+)["']([^>]*)><\/script>/gi;async function o(e){let t=[],n;for(;(n=a.exec(e))!==null;)t.push({full:n[0],url:n[2],index:n.index});if(a.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 s(e){let t=e.trimStart().toLowerCase();return t.startsWith(`<!doctype`)||t.startsWith(`<html`)}var c=class a{container;bridge;scripts=[];iframe=null;static cachedLucideScript=null;static lucideScriptPromise=null;messageHandler=null;constructor(e,t){this.container=e,this.bridge=t}async render(e,t){this.dispose(),i?await this.renderInSandbox(e,t,s(e)):s(e)?await this.renderFullDoc(e,t):this.renderInline(e,t)}async renderInSandbox(e,t,i=!1){let a=document.createElement(`iframe`);a.src=chrome.runtime.getURL(`sprinkle-sandbox.html`),a.style.cssText=`width: 100%; flex: 1; border: none; min-height: 0;`,this.iframe=a,console.log(`[sprinkle-renderer] creating sandbox iframe`,a.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);a.addEventListener(`load`,()=>{clearTimeout(n),console.log(`[sprinkle-renderer] iframe loaded, contentWindow:`,!!a.contentWindow),r(a.contentWindow),e()},{once:!0}),a.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(a)}),this.messageHandler=e=>{if(e.source!==a.contentWindow)return;let n=e.data;if(n?.type){if(n.type===`sprinkle-lick`)this.bridge.lick({action:n.action,data:n.data});else if(n.type===`sprinkle-set-state`)this.bridge.setState(n.data);else if(n.type===`sprinkle-close`)this.bridge.close();else if(n.type===`sprinkle-minimize`)this.bridge.minimize();else if(n.type===`sprinkle-stop-cone`)this.bridge.stopCone();else if(n.type===`sprinkle-storage-set`)try{localStorage.setItem(`slicc-sprinkle-ls:${t}:${n.key}`,n.value)}catch(e){console.warn(`[sprinkle-renderer] localStorage setItem failed:`,n.key,e)}else if(n.type===`sprinkle-storage-remove`)try{localStorage.removeItem(`slicc-sprinkle-ls:${t}:${n.key}`)}catch(e){console.warn(`[sprinkle-renderer] localStorage removeItem failed:`,n.key,e)}else if(n.type===`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)}}else if(n.type===`sprinkle-attach-image`)this.bridge.attachImage(n.base64,n.name,n.mimeType);else if(n.type===`sprinkle-open`)this.bridge.open(n.path,n.projectRoot?{projectRoot:n.projectRoot}:void 0);else if(n.type===`sprinkle-readfile`)this.bridge.readFile(n.path).then(e=>a.contentWindow?.postMessage({type:`sprinkle-readfile-response`,id:n.id,content:e},`*`),e=>a.contentWindow?.postMessage({type:`sprinkle-readfile-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-writefile`)this.bridge.writeFile(n.path,n.content).then(()=>a.contentWindow?.postMessage({type:`sprinkle-writefile-response`,id:n.id},`*`),e=>a.contentWindow?.postMessage({type:`sprinkle-writefile-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-readdir`)this.bridge.readDir(n.path).then(e=>a.contentWindow?.postMessage({type:`sprinkle-readdir-response`,id:n.id,entries:e},`*`),e=>a.contentWindow?.postMessage({type:`sprinkle-readdir-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-exists`)this.bridge.exists(n.path).then(e=>a.contentWindow?.postMessage({type:`sprinkle-exists-response`,id:n.id,exists:e},`*`),e=>a.contentWindow?.postMessage({type:`sprinkle-exists-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-stat`)this.bridge.stat(n.path).then(e=>a.contentWindow?.postMessage({type:`sprinkle-stat-response`,id:n.id,stat:e},`*`),e=>a.contentWindow?.postMessage({type:`sprinkle-stat-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-mkdir`)this.bridge.mkdir(n.path).then(()=>a.contentWindow?.postMessage({type:`sprinkle-mkdir-response`,id:n.id},`*`),e=>a.contentWindow?.postMessage({type:`sprinkle-mkdir-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-rm`)this.bridge.rm(n.path).then(()=>a.contentWindow?.postMessage({type:`sprinkle-rm-response`,id:n.id},`*`),e=>a.contentWindow?.postMessage({type:`sprinkle-rm-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-capture-screen`)this.bridge.captureScreen().then(e=>a.contentWindow?.postMessage({type:`sprinkle-capture-screen-response`,id:n.id,base64:e.base64,width:e.width,height:e.height,mimeType:e.mimeType},`*`),e=>a.contentWindow?.postMessage({type:`sprinkle-capture-screen-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-exec`)this.bridge.exec(n.cmd).then(e=>a.contentWindow?.postMessage({type:`sprinkle-exec-response`,id:n.id,result:e},`*`),e=>a.contentWindow?.postMessage({type:`sprinkle-exec-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-agent`)this.bridge.agent(n.prompt,n.opts).then(e=>a.contentWindow?.postMessage({type:`sprinkle-agent-response`,id:n.id,result:e},`*`),e=>a.contentWindow?.postMessage({type:`sprinkle-agent-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-jsh`)this.bridge._jsh(n.op,n.args).then(e=>a.contentWindow?.postMessage({type:`sprinkle-jsh-response`,id:n.id,result:e},`*`),e=>a.contentWindow?.postMessage({type:`sprinkle-jsh-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-device-op`)this.bridge._device(n.channel,n.op,n.args??[]).then(e=>a.contentWindow?.postMessage({type:`sprinkle-device-op-response`,id:n.id,result:e},`*`),e=>a.contentWindow?.postMessage({type:`sprinkle-device-op-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-fetch-script`){let e=n.url,t=n.id;fetch(e).then(e=>e.ok?e.text():Promise.reject(Error(`HTTP ${e.status}`))).then(n=>{a.contentWindow?.postMessage({type:`sprinkle-fetch-script-response`,id:t,url:e,text:n},`*`)}).catch(n=>{a.contentWindow?.postMessage({type:`sprinkle-fetch-script-response`,id:t,url:e,error:n instanceof Error?n.message:String(n)},`*`)})}}},window.addEventListener(`message`,this.messageHandler);let s=this.collectThemeCSS(),c={},l=`slicc-sprinkle-ls:${t}:`;for(let e=0;e<localStorage.length;e++){let t=localStorage.key(e);t?.startsWith(l)&&(c[t.slice(l.length)]=localStorage.getItem(t)??``)}let u=this.bridge.getState(),d=``,f=``;if(i){let t=[];e.includes(`<slicc-editor`)&&t.push(fetch(chrome.runtime.getURL(`slicc-editor.js`)).then(e=>e.ok?e.text():``).then(e=>{d=e}).catch(()=>{})),e.includes(`<slicc-diff`)&&t.push(fetch(chrome.runtime.getURL(`slicc-diff.js`)).then(e=>e.ok?e.text():``).then(e=>{f=e}).catch(()=>{})),await Promise.all(t)}let p=await this.getLucideScript(),m=i?await o(e):e;a.contentWindow.postMessage({type:`sprinkle-render`,content:m,name:t,themeCSS:s,savedState:u,savedStorage:c,fullDoc:i,editorScript:d,diffScript:f,lucideScript:p,isLight:n()},`*`)}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 u()}generateBridgeScript(){return`(function() {
|
|
3
|
-
var _updateListeners = new Set();
|
|
4
|
-
var _hidInputReportListeners = new Set();
|
|
5
|
-
var _sprinkleName = '';
|
|
6
|
-
var _state = null;
|
|
7
|
-
var _cbId = 0;
|
|
8
|
-
var _callbacks = {};
|
|
9
|
-
|
|
10
|
-
window.addEventListener('message', function(event) {
|
|
11
|
-
var msg = event.data;
|
|
12
|
-
if (!msg || !msg.type) return;
|
|
13
|
-
if (msg.type === 'sprinkle-init') {
|
|
14
|
-
_sprinkleName = msg.name || '';
|
|
15
|
-
_state = msg.savedState || null;
|
|
16
|
-
if (window.slicc) window.slicc.name = _sprinkleName;
|
|
17
|
-
} else if (msg.type === 'sprinkle-update') {
|
|
18
|
-
_updateListeners.forEach(function(cb) { try { cb(msg.data); } catch(e) { console.error(e); } });
|
|
19
|
-
} else if (msg.type === 'sprinkle-device-event') {
|
|
20
|
-
if (msg.channel === 'hid:inputreport') {
|
|
21
|
-
_hidInputReportListeners.forEach(function(cb) {
|
|
22
|
-
try { cb(msg.payload); } catch(e) { console.error(e); }
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
} else if (msg.type === 'slicc-theme') {
|
|
26
|
-
document.documentElement.classList.toggle('theme-light', !!msg.isLight);
|
|
27
|
-
} else if (msg.id && _callbacks[msg.id]) {
|
|
28
|
-
var cb = _callbacks[msg.id];
|
|
29
|
-
delete _callbacks[msg.id];
|
|
30
|
-
cb(msg);
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
function _vfsCall(type, params, extractResult) {
|
|
35
|
-
return new Promise(function(resolve, reject) {
|
|
36
|
-
var id = ++_cbId;
|
|
37
|
-
_callbacks[id] = function(msg) {
|
|
38
|
-
if (msg.error) reject(new Error(msg.error));
|
|
39
|
-
else resolve(extractResult ? extractResult(msg) : undefined);
|
|
40
|
-
};
|
|
41
|
-
var m = { type: type, id: id };
|
|
42
|
-
if (params) { for (var k in params) m[k] = params[k]; }
|
|
43
|
-
parent.postMessage(m, '*');
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
function _jshCall(op, args) {
|
|
48
|
-
return _vfsCall('sprinkle-jsh', { op: op, args: args }, function(m) { return m.result; });
|
|
49
|
-
}
|
|
50
|
-
function _deviceCall(channel, op, args) {
|
|
51
|
-
return _vfsCall('sprinkle-device-op', { channel: channel, op: op, args: args || [] },
|
|
52
|
-
function(m) { return m.result; });
|
|
53
|
-
}
|
|
54
|
-
function _b64ToU8(b64) {
|
|
55
|
-
var bin = atob(b64); var u8 = new Uint8Array(bin.length);
|
|
56
|
-
for (var i = 0; i < bin.length; i++) u8[i] = bin.charCodeAt(i);
|
|
57
|
-
return u8;
|
|
58
|
-
}
|
|
59
|
-
function _u8ToB64(bytes) {
|
|
60
|
-
var bin = ''; for (var i = 0; i < bytes.length; i++) bin += String.fromCharCode(bytes[i]);
|
|
61
|
-
return btoa(bin);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
var api = {
|
|
65
|
-
lick: function(event) {
|
|
66
|
-
var action, data;
|
|
67
|
-
if (typeof event === 'string') { action = event; } else { action = event.action; data = event.data; }
|
|
68
|
-
parent.postMessage({ type: 'sprinkle-lick', action: action, data: data }, '*');
|
|
69
|
-
},
|
|
70
|
-
on: function(event, callback) { if (event === 'update') _updateListeners.add(callback); },
|
|
71
|
-
off: function(event, callback) { if (event === 'update') _updateListeners.delete(callback); },
|
|
72
|
-
readFile: function(path) {
|
|
73
|
-
return _vfsCall('sprinkle-readfile', { path: path }, function(m) { return m.content; });
|
|
74
|
-
},
|
|
75
|
-
writeFile: function(path, content) {
|
|
76
|
-
return _vfsCall('sprinkle-writefile', { path: path, content: content });
|
|
77
|
-
},
|
|
78
|
-
readDir: function(path) {
|
|
79
|
-
return _vfsCall('sprinkle-readdir', { path: path }, function(m) { return m.entries; });
|
|
80
|
-
},
|
|
81
|
-
exists: function(path) {
|
|
82
|
-
return _vfsCall('sprinkle-exists', { path: path }, function(m) { return m.exists; });
|
|
83
|
-
},
|
|
84
|
-
stat: function(path) {
|
|
85
|
-
return _vfsCall('sprinkle-stat', { path: path }, function(m) { return m.stat; });
|
|
86
|
-
},
|
|
87
|
-
mkdir: function(path) {
|
|
88
|
-
return _vfsCall('sprinkle-mkdir', { path: path });
|
|
89
|
-
},
|
|
90
|
-
rm: function(path) {
|
|
91
|
-
return _vfsCall('sprinkle-rm', { path: path });
|
|
92
|
-
},
|
|
93
|
-
screenshot: function(selector) {
|
|
94
|
-
return new Promise(function(resolve, reject) {
|
|
95
|
-
try {
|
|
96
|
-
var target = selector ? document.querySelector(selector) : document.body;
|
|
97
|
-
if (!target) { reject(new Error('Element not found: ' + selector)); return; }
|
|
98
|
-
var rect = target.getBoundingClientRect();
|
|
99
|
-
var w = Math.ceil(rect.width);
|
|
100
|
-
var h = Math.ceil(rect.height);
|
|
101
|
-
if (w === 0 || h === 0) { reject(new Error('Element has zero dimensions')); return; }
|
|
102
|
-
var canvas = document.createElement('canvas');
|
|
103
|
-
var dpr = window.devicePixelRatio || 1;
|
|
104
|
-
canvas.width = w * dpr;
|
|
105
|
-
canvas.height = h * dpr;
|
|
106
|
-
var ctx = canvas.getContext('2d');
|
|
107
|
-
ctx.scale(dpr, dpr);
|
|
108
|
-
var clone = target.cloneNode(true);
|
|
109
|
-
var svg = '<svg xmlns="http://www.w3.org/2000/svg" width="' + w + '" height="' + h + '">' +
|
|
110
|
-
'<foreignObject width="100%" height="100%">' +
|
|
111
|
-
new XMLSerializer().serializeToString(clone) +
|
|
112
|
-
'</foreignObject></svg>';
|
|
113
|
-
var img = new Image();
|
|
114
|
-
img.onload = function() { ctx.drawImage(img, 0, 0); resolve(canvas.toDataURL('image/png')); };
|
|
115
|
-
img.onerror = function() { reject(new Error('Screenshot rendering failed')); };
|
|
116
|
-
img.src = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg);
|
|
117
|
-
} catch(e) { reject(e); }
|
|
118
|
-
});
|
|
119
|
-
},
|
|
120
|
-
setState: function(data) { _state = data; parent.postMessage({ type: 'sprinkle-set-state', data: data }, '*'); },
|
|
121
|
-
getState: function() { return _state; },
|
|
122
|
-
close: function() { parent.postMessage({ type: 'sprinkle-close' }, '*'); },
|
|
123
|
-
minimize: function() { parent.postMessage({ type: 'sprinkle-minimize' }, '*'); },
|
|
124
|
-
stopCone: function() { parent.postMessage({ type: 'sprinkle-stop-cone' }, '*'); },
|
|
125
|
-
attachImage: function(base64, name, mimeType) { parent.postMessage({ type: 'sprinkle-attach-image', base64: base64, name: name, mimeType: mimeType }, '*'); },
|
|
126
|
-
captureScreen: function() {
|
|
127
|
-
return _vfsCall('sprinkle-capture-screen', {}, function(m) {
|
|
128
|
-
return { base64: m.base64, width: m.width, height: m.height, mimeType: m.mimeType };
|
|
129
|
-
});
|
|
130
|
-
},
|
|
131
|
-
exec: Object.assign(function(cmd) {
|
|
132
|
-
return _vfsCall('sprinkle-exec', { cmd: cmd }, function(m) { return m.result; });
|
|
133
|
-
}, { spawn: function(argv) { return _jshCall('spawn', [argv]); } }),
|
|
134
|
-
agent: function(prompt, opts) {
|
|
135
|
-
return _vfsCall('sprinkle-agent', { prompt: prompt, opts: opts }, function(m) { return m.result; });
|
|
136
|
-
},
|
|
137
|
-
fetch: function(url, init) { return _jshCall('fetch', [url, init || null]); },
|
|
138
|
-
http: {
|
|
139
|
-
client: function(cfg) {
|
|
140
|
-
function mk(method) { return function(path, opts) { return _jshCall('http', [cfg, method, path, opts || null]); }; }
|
|
141
|
-
return { get: mk('get'), post: mk('post'), put: mk('put'), patch: mk('patch'), 'delete': mk('delete') };
|
|
142
|
-
}
|
|
143
|
-
},
|
|
144
|
-
browser: {
|
|
145
|
-
findTab: function(q) { return _jshCall('browser', ['findTab', q]); },
|
|
146
|
-
ensureTab: function(url, options) { return _jshCall('browser', ['ensureTab', url, options || {}]); },
|
|
147
|
-
eval: function(tab, code) { return _jshCall('browser', ['eval', tab, code]); },
|
|
148
|
-
evalAsync: function(tab, code) { return _jshCall('browser', ['evalAsync', tab, code]); },
|
|
149
|
-
cookie: function(tab, name) { return _jshCall('browser', ['cookie', tab, name]); },
|
|
150
|
-
localStorage: function(tab, key) { return _jshCall('browser', ['localStorage', tab, key]); },
|
|
151
|
-
fetch: function(tab, url, opts) { return _jshCall('browser', ['fetch', tab, url, opts || {}]); }
|
|
152
|
-
},
|
|
153
|
-
hid: {
|
|
154
|
-
list: function() { return _deviceCall('hid', 'list', []); },
|
|
155
|
-
request: function(filters) { return _deviceCall('hid', 'request', [filters || []]); },
|
|
156
|
-
open: function(handle) { return _deviceCall('hid', 'open', [handle]).then(function() {}); },
|
|
157
|
-
close: function(handle) { return _deviceCall('hid', 'close', [handle]).then(function() {}); },
|
|
158
|
-
sendReport: function(handle, reportId, data) {
|
|
159
|
-
return _deviceCall('hid', 'sendReport', [handle, reportId, data]).then(function() {});
|
|
160
|
-
},
|
|
161
|
-
on: function(event, cb) { if (event === 'inputreport') _hidInputReportListeners.add(cb); },
|
|
162
|
-
off: function(event, cb) { if (event === 'inputreport') _hidInputReportListeners['delete'](cb); }
|
|
163
|
-
},
|
|
164
|
-
serial: {
|
|
165
|
-
list: function() { return _deviceCall('serial', 'list', []); },
|
|
166
|
-
request: function(filters) { return _deviceCall('serial', 'request', [filters || []]); },
|
|
167
|
-
open: function(handle, options) { return _deviceCall('serial', 'open', [handle, options]).then(function() {}); },
|
|
168
|
-
close: function(handle) { return _deviceCall('serial', 'close', [handle]).then(function() {}); }
|
|
169
|
-
},
|
|
170
|
-
usb: {
|
|
171
|
-
list: function() { return _deviceCall('usb', 'list', []); },
|
|
172
|
-
request: function(filters) { return _deviceCall('usb', 'request', [filters || []]); },
|
|
173
|
-
open: function(handle) { return _deviceCall('usb', 'open', [handle]).then(function() {}); },
|
|
174
|
-
close: function(handle) { return _deviceCall('usb', 'close', [handle]).then(function() {}); }
|
|
175
|
-
},
|
|
176
|
-
readFileBinary: function(path) { return _jshCall('readFileBinary', [path]).then(function(r) { return _b64ToU8(r.base64); }); },
|
|
177
|
-
writeFileBinary: function(path, bytes) { return _jshCall('writeFileBinary', [path, _u8ToB64(bytes)]); },
|
|
178
|
-
fetchToFile: function(url, path) { return _jshCall('fetchToFile', [url, path]); },
|
|
179
|
-
_jsh: function(op, args) { return _jshCall(op, args); },
|
|
180
|
-
name: ''
|
|
181
|
-
};
|
|
182
|
-
window.slicc = api;
|
|
183
|
-
window.bridge = api;
|
|
184
|
-
})();`}async renderFullDoc(e,t){let i=`<script>${this.generateBridgeScript()}<\/script>`,a=this.collectThemeCSS(),o=a?`<style>${a}</style>`:``,s=e.includes(`<slicc-editor`)?`<script src="/slicc-editor.js"><\/script>`:``,c=e.includes(`<slicc-diff`)?`<script src="/slicc-diff.js"><\/script>`:``,l=`<script>(function(){try{if(${n()?`true`:`false`})document.documentElement.classList.add('theme-light');}catch(e){}})();<\/script>`+i+o+s+c+`<script src="/lucide-icons.js"><\/script>`,u,d=e.match(/<head\b[^>]*>/i);if(d){let t=d.index+d[0].length;u=e.slice(0,t)+l+e.slice(t)}else{let t=e.match(/<script\b/i);if(t)u=e.slice(0,t.index)+l+e.slice(t.index);else{let t=e.match(/<html\b[^>]*>/i);if(t){let n=t.index+t[0].length;u=e.slice(0,n)+l+e.slice(n)}else u=l+e}}let f=document.createElement(`iframe`);f.setAttribute(`sandbox`,`allow-scripts allow-same-origin`),f.style.cssText=`width: 100%; flex: 1; border: none; min-height: 0;`,f.srcdoc=u,this.iframe=f,await new Promise((e,n)=>{let i=setTimeout(()=>{n(Error(`full-doc iframe load timed out`))},5e3);f.addEventListener(`load`,()=>{clearTimeout(i),r(f.contentWindow);let n=this.bridge.getState();f.contentWindow?.postMessage({type:`sprinkle-init`,name:t,savedState:n},`*`),e()},{once:!0}),f.addEventListener(`error`,e=>{clearTimeout(i),n(Error(`full-doc iframe failed to load`))},{once:!0}),this.container.appendChild(f)}),this.messageHandler=e=>{if(e.source!==f.contentWindow)return;let t=e.data;t?.type&&(t.type===`sprinkle-lick`?this.bridge.lick({action:t.action,data:t.data}):t.type===`sprinkle-set-state`?this.bridge.setState(t.data):t.type===`sprinkle-close`?this.bridge.close():t.type===`sprinkle-minimize`?this.bridge.minimize():t.type===`sprinkle-stop-cone`?this.bridge.stopCone():t.type===`sprinkle-attach-image`?this.bridge.attachImage(t.base64,t.name,t.mimeType):t.type===`sprinkle-readfile`?this.bridge.readFile(t.path).then(e=>f.contentWindow?.postMessage({type:`sprinkle-readfile-response`,id:t.id,content:e},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-readfile-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-writefile`?this.bridge.writeFile(t.path,t.content).then(()=>f.contentWindow?.postMessage({type:`sprinkle-writefile-response`,id:t.id},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-writefile-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-readdir`?this.bridge.readDir(t.path).then(e=>f.contentWindow?.postMessage({type:`sprinkle-readdir-response`,id:t.id,entries:e},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-readdir-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-exists`?this.bridge.exists(t.path).then(e=>f.contentWindow?.postMessage({type:`sprinkle-exists-response`,id:t.id,exists:e},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-exists-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-stat`?this.bridge.stat(t.path).then(e=>f.contentWindow?.postMessage({type:`sprinkle-stat-response`,id:t.id,stat:e},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-stat-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-mkdir`?this.bridge.mkdir(t.path).then(()=>f.contentWindow?.postMessage({type:`sprinkle-mkdir-response`,id:t.id},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-mkdir-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-rm`?this.bridge.rm(t.path).then(()=>f.contentWindow?.postMessage({type:`sprinkle-rm-response`,id:t.id},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-rm-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-capture-screen`?this.bridge.captureScreen().then(e=>f.contentWindow?.postMessage({type:`sprinkle-capture-screen-response`,id:t.id,base64:e.base64,width:e.width,height:e.height,mimeType:e.mimeType},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-capture-screen-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-exec`?this.bridge.exec(t.cmd).then(e=>f.contentWindow?.postMessage({type:`sprinkle-exec-response`,id:t.id,result:e},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-exec-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-agent`?this.bridge.agent(t.prompt,t.opts).then(e=>f.contentWindow?.postMessage({type:`sprinkle-agent-response`,id:t.id,result:e},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-agent-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-jsh`?this.bridge._jsh(t.op,t.args).then(e=>f.contentWindow?.postMessage({type:`sprinkle-jsh-response`,id:t.id,result:e},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-jsh-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-device-op`&&this.bridge._device(t.channel,t.op,t.args??[]).then(e=>f.contentWindow?.postMessage({type:`sprinkle-device-op-response`,id:t.id,result:e},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-device-op-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)))},window.addEventListener(`message`,this.messageHandler)}renderInline(t,n){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)}window.__slicc_sprinkles||(window.__slicc_sprinkles={}),window.__slicc_sprinkles[n]=this.bridge,this.bridge._container=this.container;let r=document.createElement(`div`);r.className=`sprinkle-content`,r.innerHTML=t,this.container.appendChild(r);for(let e of r.querySelectorAll(`.fill[data-value]`)){let t=parseFloat(e.dataset.value||`0`);t>=0&&t<=100&&(e.style.width=`${t}%`)}let i=`window.__slicc_sprinkles[${JSON.stringify(n)}]`;for(let e of r.querySelectorAll(`[onclick]`)){let t=e.getAttribute(`onclick`)||``;/\b(slicc|bridge)\b/.test(t)&&e.setAttribute(`onclick`,t.replace(/\b(slicc|bridge)\b/g,i))}let a=Array.from(r.querySelectorAll(`script`));for(let e of a){e.remove();let t=document.createElement(`script`);for(let n of e.attributes)t.setAttribute(n.name,n.value);if(!e.src){let n=new Set;for(let e of r.querySelectorAll(`[onclick]`)){let t=e.getAttribute(`onclick`)||``;for(let e of t.matchAll(/\b(\w+)\s*\(/g)){let t=e[1];[`slicc`,`bridge`,`lick`,`close`,`exec`,`agent`].includes(t)||n.add(t)}}let a=[...n].map(e=>`if (typeof ${e} === 'function') window.${e} = ${e};`).join(`
|
|
185
|
-
`);t.textContent=`(function() { var slicc = ${i}; var bridge = slicc;\n`+e.textContent+(a?`
|
|
186
|
-
`+a:``)+`
|
|
187
|
-
})();`}r.appendChild(t),this.scripts.push(t)}}dispose(){this.messageHandler&&=(window.removeEventListener(`message`,this.messageHandler),null),this.iframe&&=(t(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 a.cachedLucideScript===null?(a.lucideScriptPromise===null&&(a.lucideScriptPromise=(async()=>{try{let e=await fetch(chrome.runtime.getURL(`lucide-icons.js`));if(e.ok){let t=await e.text();return a.cachedLucideScript=t,t}}catch{}return a.cachedLucideScript=``,``})()),a.lucideScriptPromise):a.cachedLucideScript}};function l(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 u(){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(l(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{u as n,c as t};
|