@vpxa/aikit 0.1.199 → 0.1.200
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/package.json
CHANGED
|
@@ -2110,14 +2110,14 @@ container holding the app. Specify either width or maxWidth, and either height o
|
|
|
2110
2110
|
.sort-list { list-style: none; padding: 0; margin: 0; }
|
|
2111
2111
|
.sort-item { display: flex; align-items: center; gap: 10px; padding: 10px 14px; margin: 4px 0;
|
|
2112
2112
|
background: var(--aikit-surface, #252526); border: 1px solid var(--aikit-border, #3c3c3c);
|
|
2113
|
-
border-radius: 6px; cursor: grab; transition:
|
|
2113
|
+
border-radius: 6px; cursor: grab; transition: background 0.15s, border-color 0.15s, opacity 0.15s; }
|
|
2114
2114
|
.sort-item:hover { border-color: var(--aikit-accent, #0078d4); }
|
|
2115
2115
|
.sort-item.dragging { opacity: 0.4; }
|
|
2116
2116
|
.sort-item.drag-over { border-color: var(--aikit-accent, #0078d4); background: color-mix(in srgb, var(--aikit-accent, #0078d4) 10%, transparent); }
|
|
2117
2117
|
.drag-handle { font-size: 18px; color: var(--aikit-muted, #858585); cursor: grab; user-select: none; }
|
|
2118
2118
|
.sort-label { flex: 1; color: var(--aikit-text, #ccc); }
|
|
2119
2119
|
.sort-pos { font-size: 12px; color: var(--aikit-muted, #858585); font-variant-numeric: tabular-nums; }
|
|
2120
|
-
`,Ew={name:`list-sort`,label:`Sortable List`,detect(e){if(typeof e!=`object`||!e||Array.isArray(e))return 0;let t=e;return t.items&&Array.isArray(t.items)&&!t.categories?.8:0},render(e,t,n){let r=t,i=Q(`div`,`block tpl-list-sort`);ew(`tpl-list-sort`,Tw);function a(e){i.innerHTML=``;let t=Q(`ul`,`sort-list`),r=-1;for(let i=0;i<e.length;i++){let o=e[i],s=document.createElement(`li`);s.className=`sort-item`,s.draggable=!0,s.dataset.idx=String(i);let c=Q(`span`,`drag-handle`,`⠿`),l=Q(`span`,`sort-label`,o.label),u=Q(`span`,`sort-pos`,`#${i+1}`);s.appendChild(c),s.appendChild(l),s.appendChild(u),s.addEventListener(`dragstart`,()=>{r=Number(s.dataset.idx),s.classList.add(`dragging`)}),s.addEventListener(`dragend`,()=>{s.classList.remove(`dragging`)}),s.addEventListener(`dragover`,e=>{e.preventDefault(),s.classList.add(`drag-over`)}),s.addEventListener(`dragleave`,()=>{s.classList.remove(`drag-over`)}),s.addEventListener(`drop`,t=>{t.preventDefault(),s.classList.remove(`drag-over`);let i=Number(s.dataset.idx);if(r>=0&&r!==i){let t=[...e],[o]=t.splice(r,1);t.splice(i,0,o),a(t),n.emitAction({type:`button`,id:`reorder`,label:`Reorder`},JSON.stringify(t.map(e=>e.id)))}}),t.appendChild(s)}i.appendChild(t)}a([...r.items??[]]),e.appendChild(i)},styles(){return Tw}},Dw=document.getElementById(`app`);if(!Dw)throw Error(`Missing #app element`);var $=Dw,Ow=XC(),kw=Ow?void 0:new uC({name:`AI Kit Present`,version:`1.0.0`}),Aw=new uw;Aw.register(Ew),Aw.register(Sw),Aw.register(yw),Aw.register(ww);var jw=GC(kw),Mw={app:kw,data:ZC(kw),emitAction:jw},Nw=new _w,Pw=new iw,Fw=kw?new QC(kw):void 0,Iw=null;function Lw(){Iw?.(),Iw=null,Uw?.destroy&&Uw.destroy(),Uw=null}function Rw(e,t){let n=new Map,r=e=>{n.set(o(e.id),e)};for(let e of t??[])r(e);for(let t of e)if(!(t.type!==`actions`||!Array.isArray(t.value)))for(let e of t.value)e&&typeof e==`object`&&`id`in e&&r(e);return n}function zw(e,t,n){let r=Rw(t,n);Iw=WC(e,t,(e,t)=>{jw(r.get(e)??{type:t===void 0?`button`:`select`,id:e,label:e},t)})}function Bw(e,t,n){let r=document.documentElement.dir,i=JC(e,t,{colorScheme:Nw.getTheme(),lang:document.documentElement.lang||void 0,dir:r===`ltr`||r===`rtl`||r===`auto`?r:void 0});return i?{blocks:i.blocks,actions:n.actions}:null}var Vw;function Hw(e){Lw(),$.innerHTML=``;let t=lw(e);if(e.title){let t=Q(`div`,`header`);t.appendChild(Q(`h1`,``,e.title)),t.appendChild(Q(`span`,`badge streaming`,`⟳`)),$.appendChild(t)}let n=Q(`div`,`content`);zw(n,t.blocks??[]),$.appendChild(n)}var Uw=null;function Ww(e,t){$.innerHTML=``;let n=Q(`div`,`error-panel`);n.appendChild(Q(`h3`,``,`⚠ ${e}`)),n.appendChild(Q(`pre`,``,t instanceof Error?t.message:String(t))),$.appendChild(n)}function Gw(e){Lw(),$.innerHTML=``;let t=lw(e),n=t.data;if(!n){$.innerHTML=`<p class="no-data">No content data received.</p>`;return}if(e.title){let t=Q(`div`,`header`);t.appendChild(Q(`h1`,``,e.title)),t.appendChild(Q(`span`,`badge`,`AI KIT`)),$.appendChild(t)}let r=t.template?Aw.get(t.template):Aw.detect(n),i=Q(`div`,`content`);if(r)Uw=r,r.render(i,n,Mw);else if(t.template){let r=Bw(t.template,n,e);r?zw(i,r.blocks,r.actions):zw(i,t.blocks??[],e.actions)}else zw(i,t.blocks??[],e.actions);if($.appendChild(i),e.actions?.length){let t=Q(`div`,`actions-shell`),n=WC(t,[{type:`actions`,value:e.actions}],(t,n)=>{jw(e.actions?.find(e=>o(e.id)===t)??{type:n===void 0?`button`:`select`,id:t,label:t},n)}),r=Iw;Iw=()=>{r?.(),n()},$.appendChild(t)}let a=Q(`div`,`footer`);a.innerHTML=`<span class="footer-brand">Powered by <strong>AI Kit</strong></span>`,$.appendChild(a)}kw?(kw.connect().then(()=>{let e=kw.getHostContext();e&&(Nw.apply(e),Pw.apply(e),Fw?.apply(e))}),kw.onhostcontextchanged=e=>{Nw.apply(e),Pw.apply(e),Fw?.apply(e),Uw?.onThemeChange&&Uw.onThemeChange(Nw.getTheme())},kw.ontoolinputpartial=e=>{let t=e.arguments;t&&($.dataset.streaming=`true`,clearTimeout(Vw),Vw=setTimeout(()=>{try{let e=t.content;if(!e)return;Hw({title:t.title,template:t.template,content:e})}catch{}},80))},kw.ontoolinput=()=>{clearTimeout(Vw),delete $.dataset.streaming},kw.ontoolresult=e=>{if(clearTimeout(Vw),delete $.dataset.streaming,e.structuredContent)try{Gw(e.structuredContent);return}catch(e){Ww(`Render error`,e);return}let t=e.content?.find(e=>e.type===`text`)?.text;if(!t){$.innerHTML=`<p>No data received.</p>`;return}try{Gw(JSON.parse(t))}catch{Gw({content:t})}}):Ow&&(document.documentElement.dataset.theme=`dark`,Gw(Ow));</script>
|
|
2120
|
+
`,Ew={name:`list-sort`,label:`Sortable List`,detect(e){if(typeof e!=`object`||!e||Array.isArray(e))return 0;let t=e;return t.items&&Array.isArray(t.items)&&!t.categories?.8:0},render(e,t,n){let r=t,i=Q(`div`,`block tpl-list-sort`);ew(`tpl-list-sort`,Tw);function a(e){i.innerHTML=``;let t=Q(`ul`,`sort-list`),r=-1;for(let i=0;i<e.length;i++){let o=e[i],s=document.createElement(`li`);s.className=`sort-item`,s.draggable=!0,s.dataset.idx=String(i);let c=Q(`span`,`drag-handle`,`⠿`),l=Q(`span`,`sort-label`,o.label),u=Q(`span`,`sort-pos`,`#${i+1}`);s.appendChild(c),s.appendChild(l),s.appendChild(u),s.addEventListener(`dragstart`,()=>{r=Number(s.dataset.idx),s.classList.add(`dragging`)}),s.addEventListener(`dragend`,()=>{s.classList.remove(`dragging`)}),s.addEventListener(`dragenter`,e=>{e.preventDefault()}),s.addEventListener(`dragover`,e=>{e.preventDefault(),s.classList.add(`drag-over`)}),s.addEventListener(`dragleave`,()=>{s.classList.remove(`drag-over`)}),s.addEventListener(`drop`,t=>{t.preventDefault(),s.classList.remove(`drag-over`);let i=Number(s.dataset.idx);if(r>=0&&r!==i){let t=[...e],[o]=t.splice(r,1);t.splice(i,0,o),a(t),n.emitAction({type:`button`,id:`reorder`,label:`Reorder`},JSON.stringify(t.map(e=>e.id)))}}),t.appendChild(s)}i.appendChild(t)}a([...r.items??[]]),e.appendChild(i)},styles(){return Tw}},Dw=document.getElementById(`app`);if(!Dw)throw Error(`Missing #app element`);var $=Dw,Ow=XC(),kw=Ow?void 0:new uC({name:`AI Kit Present`,version:`1.0.0`}),Aw=new uw;Aw.register(Ew),Aw.register(Sw),Aw.register(yw),Aw.register(ww);var jw=GC(kw),Mw={app:kw,data:ZC(kw),emitAction:jw},Nw=new _w,Pw=new iw,Fw=kw?new QC(kw):void 0,Iw=null;function Lw(){Iw?.(),Iw=null,Uw?.destroy&&Uw.destroy(),Uw=null}function Rw(e,t){let n=new Map,r=e=>{n.set(o(e.id),e)};for(let e of t??[])r(e);for(let t of e)if(!(t.type!==`actions`||!Array.isArray(t.value)))for(let e of t.value)e&&typeof e==`object`&&`id`in e&&r(e);return n}function zw(e,t,n){let r=Rw(t,n);Iw=WC(e,t,(e,t)=>{jw(r.get(e)??{type:t===void 0?`button`:`select`,id:e,label:e},t)})}function Bw(e,t,n){let r=document.documentElement.dir,i=JC(e,t,{colorScheme:Nw.getTheme(),lang:document.documentElement.lang||void 0,dir:r===`ltr`||r===`rtl`||r===`auto`?r:void 0});return i?{blocks:i.blocks,actions:n.actions}:null}var Vw;function Hw(e){Lw(),$.innerHTML=``;let t=lw(e);if(e.title){let t=Q(`div`,`header`);t.appendChild(Q(`h1`,``,e.title)),t.appendChild(Q(`span`,`badge streaming`,`⟳`)),$.appendChild(t)}let n=Q(`div`,`content`);zw(n,t.blocks??[]),$.appendChild(n)}var Uw=null;function Ww(e,t){$.innerHTML=``;let n=Q(`div`,`error-panel`);n.appendChild(Q(`h3`,``,`⚠ ${e}`)),n.appendChild(Q(`pre`,``,t instanceof Error?t.message:String(t))),$.appendChild(n)}function Gw(e){Lw(),$.innerHTML=``;let t=lw(e),n=t.data;if(!n){$.innerHTML=`<p class="no-data">No content data received.</p>`;return}if(e.title){let t=Q(`div`,`header`);t.appendChild(Q(`h1`,``,e.title)),t.appendChild(Q(`span`,`badge`,`AI KIT`)),$.appendChild(t)}let r=t.template?Aw.get(t.template):Aw.detect(n),i=Q(`div`,`content`);if(r)Uw=r,r.render(i,n,Mw);else if(t.template){let r=Bw(t.template,n,e);r?zw(i,r.blocks,r.actions):zw(i,t.blocks??[],e.actions)}else zw(i,t.blocks??[],e.actions);if($.appendChild(i),e.actions?.length){let t=Q(`div`,`actions-shell`),n=WC(t,[{type:`actions`,value:e.actions}],(t,n)=>{jw(e.actions?.find(e=>o(e.id)===t)??{type:n===void 0?`button`:`select`,id:t,label:t},n)}),r=Iw;Iw=()=>{r?.(),n()},$.appendChild(t)}let a=Q(`div`,`footer`);a.innerHTML=`<span class="footer-brand">Powered by <strong>AI Kit</strong></span>`,$.appendChild(a)}kw?(kw.connect().then(()=>{let e=kw.getHostContext();e&&(Nw.apply(e),Pw.apply(e),Fw?.apply(e))}),kw.onhostcontextchanged=e=>{Nw.apply(e),Pw.apply(e),Fw?.apply(e),Uw?.onThemeChange&&Uw.onThemeChange(Nw.getTheme())},kw.ontoolinputpartial=e=>{let t=e.arguments;t&&($.dataset.streaming=`true`,clearTimeout(Vw),Vw=setTimeout(()=>{try{let e=t.content;if(!e)return;Hw({title:t.title,template:t.template,content:e})}catch{}},80))},kw.ontoolinput=()=>{clearTimeout(Vw),delete $.dataset.streaming},kw.ontoolresult=e=>{if(clearTimeout(Vw),delete $.dataset.streaming,e.structuredContent)try{Gw(e.structuredContent);return}catch(e){Ww(`Render error`,e);return}let t=e.content?.find(e=>e.type===`text`)?.text;if(!t){$.innerHTML=`<p>No data received.</p>`;return}try{Gw(JSON.parse(t))}catch{Gw({content:t})}}):Ow&&(document.documentElement.dataset.theme=`dark`,Gw(Ow));</script>
|
|
2121
2121
|
</head>
|
|
2122
2122
|
<body>
|
|
2123
2123
|
<div id="app">
|