@vireo-ai/trellis-ui 0.1.47 → 0.1.49
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 +5 -5
- package/packages/client/src/components/checkbox/styles.css +5 -0
- package/packages/client/src/components/sidebar/styles.css +8 -0
- package/packages/client/src/styles/generated/theme-fonts.css +1 -1
- package/packages/client/src/styles/generated/theme-palette.css +1 -1
- package/packages/client/src/styles/generated/theme-runtime.css +49 -49
- package/packages/client/src/styles/generated-sources.css +1 -1
- package/packages/client/src/styles/recipes/selection.css +0 -4
- package/packages/client/types/component-api.d.ts +3 -1
- package/packages/client/types/components/data-grid/contract.d.ts +1 -0
- package/packages/client/types/components/data-grid/index.d.ts +28 -4
- package/packages/client/types/components/runtime.d.ts +1 -1
- package/packages/client/types/components/sidebar/machine.d.ts +3 -3
- package/packages/client/types/components/virtualizer/contract.d.ts +1 -29
- package/packages/client/types/components/virtualizer/cursor.d.ts +1 -0
- package/packages/client/types/components/virtualizer/index.d.ts +2 -28
- package/packages/client/types/motion/flip.d.ts +2 -2
- package/packages/client/types/runtime/cursor-data-source.d.ts +45 -0
- package/packages/client/types/runtime/focus-handoff.d.ts +11 -0
- package/packages/client/types/runtime/virtualizer-schema.d.ts +29 -0
- package/packages/client/types/runtime/virtualizer.d.ts +41 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +55 -54
- package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +332 -315
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-DCacA4wj.js → capability-motion-DoZROkFD.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-DCacA4wj.js.map → capability-motion-DoZROkFD.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-BoDF_wQX.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-BoDF_wQX.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-sortable-BnB9Wz0E.js → capability-sortable-DtSghTO8.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-sortable-BnB9Wz0E.js.map → capability-sortable-DtSghTO8.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{controller-BOf7dxV2.js → controller-qWtZCkAC.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{controller-BOf7dxV2.js.map → controller-qWtZCkAC.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-DBX5qDXb.js → core-BgbZXaDN.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-DBX5qDXb.js.map → core-BgbZXaDN.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-1meMFJbq.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-1meMFJbq.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Dqyot6vM.js → entry.generated-B-wVMxe6.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Dqyot6vM.js.map → entry.generated-B-wVMxe6.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BdiyPh0p.js → entry.generated-BYDBzadH.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BdiyPh0p.js.map → entry.generated-BYDBzadH.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-F2czAXCg.js → entry.generated-B_q7LVNv.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-F2czAXCg.js.map → entry.generated-B_q7LVNv.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-C0S3uZrm.js → entry.generated-BhtgeSTa.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-C0S3uZrm.js.map → entry.generated-BhtgeSTa.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-By9j8PrV.js → entry.generated-CJuVLJw9.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-By9j8PrV.js.map → entry.generated-CJuVLJw9.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CQGhCt9y.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CQGhCt9y.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-EAAmcnsg.js → entry.generated-CRhvZ0DI.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-EAAmcnsg.js.map → entry.generated-CRhvZ0DI.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CZWpqP88.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CZWpqP88.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-C5kjUnFe.js → entry.generated-CkBblBv9.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-C5kjUnFe.js.map → entry.generated-CkBblBv9.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D6qaa8bk.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D6qaa8bk.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DeXEkXMW.js → entry.generated-Des-gEaR.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Des-gEaR.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BV49EHah.js → entry.generated-OqzkZfIu.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BV49EHah.js.map → entry.generated-OqzkZfIu.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-ZcYuKSSI.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-ZcYuKSSI.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-dyQ_HJ8D.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-dyQ_HJ8D.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DcXzHGIV.js → entry.generated-u0Ueamvw.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DcXzHGIV.js.map → entry.generated-u0Ueamvw.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CPbvsglm.js → entry2.generated-CPbvsglm.js} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-CPbvsglm.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-Dzq4GSqn.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-Dzq4GSqn.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-handoff-DzEyK-Fp.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-handoff-DzEyK-Fp.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-BQk-uLaI.js +3 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{motion-DT-Hq9qe.js.map → motion-BQk-uLaI.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-DuGUQhxd.js +4 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{ui-CfByjNaO.js.map → ui-DuGUQhxd.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/virtualizer-CSk2RJEN.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/virtualizer-CSk2RJEN.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +124 -118
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +9 -9
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +9 -9
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-Z-__iteD.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-Z-__iteD.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B2rTvkxi.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B2rTvkxi.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B8aXTJK6.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B8aXTJK6.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BEjAV5NT.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BEjAV5NT.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BUbxiHwA.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BUbxiHwA.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B_xTkYSB.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B_xTkYSB.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CPbvsglm.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CSgqcIg6.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CSgqcIg6.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DeXEkXMW.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-a2NebZsn.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-a2NebZsn.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-DT-Hq9qe.js +0 -3
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CfByjNaO.js +0 -4
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/virtual-window-BHdOw3Pi.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/virtual-window-BHdOw3Pi.js.map +0 -1
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./bridge-B4S_D6hV.js";import{a as t,n}from"./alpine-machine-BS13dbK4.js";import{t as r}from"./dom-invalidation-Dw6clnS4.js";import{n as i}from"./fragment-Bl3Rq38L.js";var a=`data-ui-preserve-attr`,o=(e,...t)=>{let n=new Set((e.getAttribute(`data-ui-preserve-attr`)??``).split(/\s+/).filter(Boolean));t.filter(Boolean).forEach(e=>n.add(e)),n.size>0&&e.setAttribute(a,Array.from(n).join(` `))},s=(e,t)=>{if(!(e instanceof Element)||!(t instanceof Element))return;let n=new Set([...(e.getAttribute(`data-ui-preserve-attr`)??``).split(/\s+/),...(t.getAttribute(`data-ui-preserve-attr`)??``).split(/\s+/)].filter(Boolean));if(n.size!==0){t.setAttribute(a,Array.from(n).join(` `));for(let r of n)e.hasAttribute(r)?t.setAttribute(r,e.getAttribute(r)??``):t.removeAttribute(r)}},c=`single-child`,l=(e,t)=>{if(typeof t==`string`&&t)return t;let n=e.getAttribute(`data-ui-key`)||e.id;if(n)return n;let r=e.parentElement;if(r?.getAttribute(`data-ui-key-scope`)!==c)return null;let i=r.getAttribute(`data-ui-key`)||r.id;return i?`${i}:single-child`:null},u=`data-ui-motion-key`,d=`data-ui-motion-layout`,f=e=>typeof e==`object`&&!!e&&Symbol.iterator in e,p=(e=document)=>typeof e==`string`?Array.from(document.querySelectorAll(e)):e instanceof Document||e instanceof Element?[e]:f(e)?Array.from(e):[document],m=(e=document,t={})=>{let n=p(e).filter(e=>e instanceof Element),r=[],i=(e,t,n)=>{r.push({element:e,attr:t,previous:e.getAttribute(t)}),e.setAttribute(t,n)};return n.forEach(e=>{(t.layout??!0)&&i(e,d,``);let n=l(e,t.key);n&&!e.hasAttribute(`data-ui-motion-key`)&&i(e,u,n)}),()=>{r.reverse().forEach(({element:e,attr:t,previous:n})=>{if(n===null){e.removeAttribute(t);return}e.setAttribute(t,n)})}},h=(e,...t)=>{typeof console<`u`&&console.warn(e,...t)},g=new Set,_=!1,v=null,y=null,b=null,x=Promise.resolve(),S=0,ee=e=>{for(let t of e)g.add(t);_||g.size===0||(_=!0,queueMicrotask(()=>{_=!1;let e=Array.from(g);g.clear(),e.forEach(e=>e.invalidateDom())}))},C=e=>{let t=document.createElement(`template`);return t.innerHTML=e,t},w=e=>Array.from(C(e).content.children).filter(e=>e instanceof HTMLElement),T=(e,t)=>{t.forEach(t=>e.initTree(t))},E=(e,t)=>t||e.getAttribute(`x-merge`)||`replace`,te=e=>{if(e.selector)return document.querySelector(e.selector);if(!e.target)return null;let t=e.target.startsWith(`#`)?e.target.slice(1):e.target;return document.getElementById(t)},D=(e,t,a)=>{let o=E(t,a.mode);if(o===`remove`){t.remove();return}if(!a.html){h(`x-ui-stream: received patch with no html`);return}if(o===`morph`||o===`outer`){if(typeof e.morph==`function`){let i=new Set;e.morph(t,a.html,{key(e){return l(e)},updating(e,t,n,r){if(e instanceof Element&&y?.(a.requestId??null,e)){r?.();return}s(e,t)},updated(t){if(!(t instanceof Element))return;let a=n(e,t);a&&i.add(a),r(t).forEach(e=>{i.add(e)})}}),ee(i);return}h(`x-ui-stream: morph mode requires an Alpine morph implementation; falling back to replace`)}if(o===`replace`||o===`morph`||o===`outer`){let[n]=w(a.html);if(!n){h(`x-ui-stream: replace mode produced no element`);return}t.replaceWith(n),e.initTree(n);return}if(o===`update`){i(e,t,a.html);return}let c=C(a.html),u=Array.from(c.content.children).filter(e=>e instanceof HTMLElement);if(o===`append`){t.append(c.content),T(e,u);return}if(o===`prepend`){t.prepend(c.content),T(e,u);return}if(o===`before`){t.before(c.content),T(e,u);return}o===`after`&&(t.after(c.content),T(e,u))},ne=(e,t)=>{let n=te(t);if(n){D(e,n,t);return}if(t.selector||t.target){h(`x-ui-stream: target not found`,t.selector??t.target);return}if(!t.html){h(`x-ui-stream: received patch with no html`);return}w(t.html).forEach(n=>{if(!n.id){h(`x-ui-stream: top-level element has no id, skipping`,n);return}let r=document.getElementById(n.id);r&&D(e,r,{...t,html:n.outerHTML})})},re=(t,n)=>{let r=Array.isArray(n)?n:[n],i=()=>{r.forEach(e=>ne(t,e))},a=()=>{let e=r.filter(e=>e.viewTransition===!0);if(e.length===0){i();return}b?b(t,e,i):i()},o=r.flatMap(e=>e.assets??[]);if(o.length===0&&S===0){a();return}S+=1;let s=async()=>{o.length>0&&await e(o,t),a()};x=x.then(s,s).catch(()=>void 0).finally(()=>{--S})},ie=e=>{b=e},O=e=>{document.dispatchEvent(new CustomEvent(e.event,{detail:e.detail??{},bubbles:!0,composed:!0}))},k=e=>{let t=new Map;for(let n of e.data.split(`
|
|
2
|
-
`)){let e=n.indexOf(` `),r=e>0,i=r?n.slice(0,e):n;if(!r&&i!==`html`)return h(`x-ui-stream: invalid SSE command line`,i),null;let a=r?n.slice(e+1):``,o=t.get(i);o?o.push(a):t.set(i,[a])}return t},A=(e,t)=>{let n=e.get(t);if(n?.length)return n.length>1&&h(`x-ui-stream: duplicate SSE command, using last value`,t),n.at(-1)},ae=(e,t)=>{let n=k(t);if(!n||n.size===0)return;let r=A(n,`request-id`);if(v&&!v(r??null))return;let i,a=A(n,`assets`);if(a)try{let e=JSON.parse(a);if(!Array.isArray(e))throw TypeError(`assets must be an array`);i=e}catch{h(`x-ui-stream: invalid patch assets JSON`,a);return}re(e,{mode:A(n,`mode`)??`replace`,target:A(n,`target`)??null,selector:A(n,`selector`)??null,html:n.get(`html`)?.join(`
|
|
3
|
-
`)??null,requestId:r??null,viewTransition:A(n,`view-transition`)===`true`,...i?{assets:i}:{}})},oe=e=>{let n=k(e);if(!n)return;let r=A(n,`request-id`);if(v&&!v(r??null))return;let i=A(n,`event`);if(!i){h(`x-ui-stream: dispatch SSE frame missing event`);return}let a=A(n,`detail`),o={};if(a)try{let e=JSON.parse(a);t(e)&&(o=e)}catch{h(`x-ui-stream: invalid dispatch detail JSON`,a);return}O({event:i,detail:o})},se={"trellis-ui-patch":ae,"trellis-ui-dispatch":(e,t)=>oe(t)},ce=`trellis-ui-`,le=(e,t)=>{let n=se[t.event];if(!n){t.event.startsWith(ce)&&h(`x-ui-stream: unsupported SSE event`,t.event);return}n(e,t)},ue=(e,t=``,n=``,r=``)=>{let i=new URL(e,document.baseURI),a=[...new Set(t.split(/\s+/).filter(Boolean))];return n&&i.searchParams.set(`client`,n),r&&i.searchParams.set(`lastEventId`,r),a.length>0&&(i.searchParams.delete(`channel`),a.forEach(e=>i.searchParams.append(`channel`,e))),/^[a-z][a-z\d+.-]*:/i.test(e)||e.startsWith(`//`)?i.href:`${i.pathname}${i.search}${i.hash}`},de=(e,t,n=``,r=``,i={})=>{let a=new EventSource(ue(t,n,r,i.lastEventId)),o=!0,s=e=>{e.lastEventId&&i.eventId?.(e.lastEventId)};return Object.keys(se).forEach(t=>{a.addEventListener(t,t=>{!o||!(t instanceof MessageEvent)||(s(t),le(e,{event:t.type,data:String(t.data)}))})}),a.addEventListener(`stream-open`,()=>{o&&i.open?.()}),a.addEventListener(`stream-reset`,e=>{o&&(e instanceof MessageEvent&&s(e),i.reset?.(e instanceof MessageEvent?String(e.data):``))}),a.addEventListener(`stream-error`,e=>{o&&(o=!1,a.close(),i.error?.(e instanceof MessageEvent?String(e.data):``))}),a.addEventListener(`error`,()=>{o&&(o=!1,a.close(),i.disconnected?.())}),{abort(){o=!1,a.close()}}},j=new Map,fe=new Set,pe=e=>e instanceof HTMLElement&&e.id?e.id:e,me=6e4,he=1e3,ge=2e3,_e=1e3,ve=3e4,M=(e,t,n={})=>{t!==`reset`&&(e.dataset.uiStreamState=t),e.dispatchEvent(new CustomEvent(`ui:stream:${t}`,{bubbles:!0,composed:!0,detail:{source:e,...n}}))},ye=(e,t)=>ue(t,e.dataset.uiStreamScopes,e.dataset.uiStreamClient),be=e=>e.dataset.uiStreamOpenWhenHidden===`true`,N=(e,t)=>JSON.stringify({openWhenHidden:be(e),url:ye(e,t)}),xe=e=>{if(!(e instanceof CustomEvent))return null;let t=e.detail;return!t||typeof t.requestId!=`string`||typeof t.method!=`string`||!(t.controller instanceof AbortController)?null:t},Se=(e,t,n)=>{let r=N(t,n),i=null,a,s=null,c,l,u=!1,d=``,f=0,p=0,m=!1,g=!1,_=new Map,v=new Set,y=be(t),b=()=>!m&&(y||document.visibilityState===`visible`),x=()=>{window.clearTimeout(c),c=void 0},S=()=>{t.dispatchEvent(new CustomEvent(`ui:stream:resumed`,{bubbles:!0,composed:!0}))},ee=a=>{i?.abort(),x();let o=++f;r=N(t,n),M(t,`connecting`),i=de(e,n,t.dataset.uiStreamScopes,a,{lastEventId:d,open:()=>{if(o!==f)return;let e=u;u=!0,p=0,M(t,`open`),e&&S()},disconnected:()=>{if(o!==f||g||(i=null,k.controller=null,M(t,`disconnected`),!b()))return;let e=Math.min(_e*2**p,ve);p+=1;let n=Math.floor(Math.random()*e);c=window.setTimeout(()=>{c=void 0,E()},n)},reset:e=>M(t,`reset`,{data:e}),eventId:e=>{o===f&&(d=e)},error:e=>{o!==f||g||(m=!0,i=null,k.controller=null,x(),M(t,`error`,{data:e}))}}),k.controller=i,k.configuration=r,C()},C=()=>{if(window.clearTimeout(a),a=void 0,!b())return;let e=Number(t.dataset.uiStreamClientExpires);if(!Number.isFinite(e)||e<=0)return;let n=e-Date.now()-me;if(n<=0){T();return}a=window.setTimeout(()=>void T(),n)},w=()=>{if(g)return Promise.resolve(null);if(s)return s;let e=t.dataset.uiStreamClientRefresh;return e?(s=fetch(e,{headers:{Accept:`application/json`,"X-Trellis-Client":t.dataset.uiStreamClient??``}}).then(async e=>{if(!e.ok)throw Error(`ClientSession refresh failed (${e.status})`);let n=await e.json();if(typeof n.token!=`string`||typeof n.expiresAt!=`number`)throw Error(`ClientSession refresh returned an invalid payload`);return g?null:(t.dataset.uiStreamClient=n.token,t.dataset.uiStreamClientExpires=String(n.expiresAt),n.token)}).catch(e=>{h(`x-ui-stream: could not refresh ClientSession`,e);let n=Number(t.dataset.uiStreamClientExpires);return!Number.isFinite(n)||n<=Date.now()?(M(t,`error`,{error:e}),null):(b()&&(a=window.setTimeout(()=>void T(),5e3)),t.dataset.uiStreamClient??null)}).finally(()=>{s=null}),s):(M(t,`error`,{reason:`missing-refresh-url`}),Promise.resolve(null))},T=async()=>{if(!b())return;let e=await w();e&&b()&&!g&&ee(e)},E=async()=>{if(g||!b()||i)return;let e=Number(t.dataset.uiStreamClientExpires),n=t.dataset.uiStreamClient??``,r=Number.isFinite(e)&&e>0&&e-Date.now()<=me?await w():n;r&&b()&&!g&&!i&&ee(r)},te=()=>{l=void 0,!(g||y||document.visibilityState!==`hidden`)&&(v.size>0||(_.forEach(e=>e.abort(`Document suspended`)),_.clear(),window.clearTimeout(a),a=void 0,x(),i?.abort(),i=null,M(t,`suspended`),k.controller=null))},D=e=>{window.clearTimeout(l),l=void 0,!(y||document.visibilityState!==`hidden`)&&(l=window.setTimeout(te,e))},ne=()=>{m||T()},re=e=>{let t=xe(e);if(t){if(t.method===`GET`){_.set(t.requestId,t.controller);return}v.add(t.requestId),document.visibilityState===`hidden`&&!y&&(window.clearTimeout(l),l=void 0)}},ie=e=>{let t=xe(e);if(t){if(t.method===`GET`){_.delete(t.requestId);return}v.delete(t.requestId),document.visibilityState===`hidden`&&!y&&v.size===0&&D(ge)}},O=()=>{if(!(y||m)){if(document.visibilityState===`hidden`){if(v.size>0)return;D(he);return}window.clearTimeout(l),l=void 0,i||E()}},k={configuration:r,controller:null,element:t,dispose(){g||(g=!0,window.clearTimeout(a),window.clearTimeout(l),x(),t.removeEventListener(`ui:stream:refresh`,ne),document.removeEventListener(`visibilitychange`,O),document.removeEventListener(`ui:request:start`,re),document.removeEventListener(`ui:request:finish`,ie),i?.abort())},rescheduleRefresh:C};return o(t,`data-ui-stream-state`),t.addEventListener(`ui:stream:refresh`,ne),document.addEventListener(`visibilitychange`,O),document.addEventListener(`ui:request:start`,re),document.addEventListener(`ui:request:finish`,ie),b()?E():M(t,`suspended`),k},Ce=e=>{typeof e.directive==`function`&&e.directive(`ui-stream`,(t,{expression:n},{cleanup:r})=>{if(!n)return;let i=t instanceof HTMLElement?t.dataset.uiStreamClient:``;if(!(t instanceof HTMLElement)||!i){h(`x-ui-stream: missing signed ClientSession capability`);return}let a=pe(t),s=j.get(a),c=N(t,n);if(s?.configuration===c){t.dataset.uiStreamState=s.element.dataset.uiStreamState??`connecting`,o(t,`data-ui-stream-state`),queueMicrotask(()=>s.rescheduleRefresh());return}if(!t.isConnected&&typeof a==`string`){fe.has(a)||(fe.add(a),queueMicrotask(()=>{fe.delete(a);let t=document.getElementById(a);if(!t)return;let r=j.get(a),i=N(t,n);if(r?.configuration===i){r.rescheduleRefresh();return}r?.dispose(),j.set(a,Se(e,t,n))}));return}s?.dispose(),j.set(a,Se(e,t,n)),r(()=>{let e=j.get(a);e?.element===t&&(e.dispose(),j.delete(a))})})},we=e=>{v=e},Te=e=>{y=e},Ee=`X-Trellis-UI-Request`,De=`X-Trellis-Client`,Oe=`X-Trellis-Request-ID`,ke=`X-Trellis-Navigate`,Ae=`X-Trellis-Navigate-History`,P=`[data-ui-stream][data-ui-stream-client]`,je=`ui:stream:open`,Me=`ui:stream:error`,Ne=`ui:stream:disconnected`,Pe=`ui:stream:refresh`,Fe=`meta[name="csrf-token"]`,Ie=`text/event-stream`,Le=`data-ui-request-pending`,F=`application/x-www-form-urlencoded`,Re=`multipart/form-data`,ze=new Set([`GET`]),I=null,Be=null,Ve=e=>{let t=(e||`GET`).toUpperCase();return t===`POST`||t===`PUT`||t===`PATCH`||t===`DELETE`?t:`GET`},He=(e,t,n)=>{if(e instanceof FormData){e.append(t,n);return}e.append(t,n instanceof File?n.name:String(n))},Ue=(e,t,n)=>{if(Array.isArray(n)){n.forEach(n=>Ue(e,t,n));return}n!=null&&He(e,t,n instanceof Blob?n:String(n))},We=(e,t)=>{Object.entries(t).forEach(([t,n])=>Ue(e,t,n))},Ge=(e,t)=>{if(t){if(t instanceof FormData||t instanceof URLSearchParams){for(let[n,r]of t.entries())He(e,n,r);return}We(e,t)}},Ke=(e,t)=>{let n=new Headers(e);n.set(Ee,`true`);let r=document.querySelector(Fe)?.content;return r&&n.set(`X-CSRFToken`,r),t instanceof URLSearchParams&&!n.has(`Content-Type`)&&n.set(`Content-Type`,F),n},qe=(e,t,n)=>{if(e)return new URL(e,document.baseURI);if(t instanceof HTMLFormElement){let e=n?.getAttribute(`formaction`)||t.getAttribute(`action`)||window.location.href;return new URL(e,document.baseURI)}return t instanceof HTMLAnchorElement?new URL(t.href,document.baseURI):new URL(window.location.href)},Je=(e,t)=>t?.getAttribute(`formenctype`)||e.enctype||F,Ye=e=>{if(!(e instanceof HTMLButtonElement||e instanceof HTMLInputElement))return null;let t=e.getAttribute(`name`);return t?[t,e.value]:null},Xe=(e,t)=>{let n=new FormData(e),r=Ye(t);return r&&n.append(...r),n},Ze=e=>{let t=new URLSearchParams;for(let[n,r]of e.entries())r instanceof File?t.append(n,r.name):t.append(n,r);return t},Qe=(e,t)=>{if(e===void 0)return{payload:t,explicit:!1};if(e instanceof HTMLFormElement)return{payload:new FormData(e),explicit:!0};if(e instanceof FormData||e instanceof URLSearchParams||typeof e==`string`||e instanceof Blob||e instanceof ArrayBuffer)return{payload:e,explicit:!0};let n=new URLSearchParams;return We(n,e),{payload:n,explicit:!0}},$e=(e,t)=>{if(!t)return e;if(e instanceof FormData||e instanceof URLSearchParams)return Ge(e,t),e;let n=new URLSearchParams;return typeof e==`string`&&n.append(`data`,e),Ge(n,t),n},et=(e,t)=>e instanceof HTMLFormElement?{payload:Xe(e,t),enctype:Je(e,t)}:{payload:new URLSearchParams,enctype:F},tt=(e,t,n)=>t?Ve(t):e instanceof HTMLFormElement?Ve(n?.getAttribute(`formmethod`)||e.getAttribute(`method`)):`GET`,nt=(e,t={})=>{let n=t.source,r=t.submitter??null,i=tt(n,t.method,r),a=qe(e,n,r),o=et(n,r),s=Qe(t.data,o.payload),c=$e(s.payload,t.extra),l={method:i,...t.cache?{cache:t.cache}:{}},u=null;return ze.has(i)?c instanceof FormData||c instanceof URLSearchParams?Ze(c).forEach((e,t)=>a.searchParams.append(t,e)):typeof c==`string`&&a.searchParams.append(`data`,c):u=c instanceof FormData&&(s.explicit||o.enctype===Re)?c:c instanceof FormData?Ze(c):c,l.headers=Ke(t.headers,u),u!=null&&(l.body=u),{url:a,method:i,init:l}},rt=e=>e?.isConnected?e:document,it=(e,t,n={})=>new CustomEvent(e,{bubbles:!0,composed:!0,cancelable:n.cancelable??!1,detail:t}),L=(e,t,n,r)=>rt(t).dispatchEvent(it(e,n,r)),R=new WeakMap,at=e=>{if(!e)return;let t=R.get(e)??0;R.set(e,t+1),e.setAttribute(`aria-busy`,`true`),e.setAttribute(Le,`true`)},ot=e=>{if(!e)return;let t=(R.get(e)??1)-1;if(t>0){R.set(e,t);return}R.delete(e),e.removeAttribute(`aria-busy`),e.removeAttribute(Le)},st=e=>e.headers.get(`Content-Type`)?.toLowerCase().includes(Ie)??!1,ct=async e=>{let t=e.headers.get(ke);if(t){let n=e.headers.get(Ae)??`auto`;return n!==`auto`&&n!==`push`&&n!==`replace`?(h(`x-ui-request: invalid navigation history`,n),{response:e,type:`other`,url:e.url}):{response:e,type:`navigate`,url:e.url,navigation:{history:n,url:t}}}return e.status===204||e.body===null||e.headers.get(`X-Trellis-UI-Response`)===`empty`?{response:e,type:`empty`,url:e.url}:e.redirected&&!st(e)?(window.location.assign(e.url),{response:e,type:`redirect`,url:e.url}):(h(`x-ui-request: expected an empty response`,e),{response:e,type:`other`,url:e.url})},lt=new WeakMap,z=e=>{let t=e.dataset.uiStreamClient,n=Number(e.dataset.uiStreamClientExpires);return!t||Number.isFinite(n)&&n>0&&n<=Date.now()?null:t},ut=()=>{let e=document.querySelector(P),t=e?z(e):null;return!e||!t||e.dataset.uiStreamState!==`open`?null:{token:t}},dt=e=>{let t=Number(e.dataset.uiStreamTimeout);return Number.isFinite(t)&&t>=0?t:5e3},ft=e=>{let t=document.querySelector(P),n=t?z(t):null;if(!t)return Promise.resolve(null);if(n&&t.dataset.uiStreamState===`open`)return Promise.resolve({token:n});if(t.dataset.uiStreamState===`error`||t.dataset.uiStreamState===`disconnected`||e.aborted)return Promise.resolve(null);let r=lt.get(t),i=r??new Promise(e=>{let n=n=>{window.clearTimeout(a),t.removeEventListener(je,r),t.removeEventListener(Me,i),t.removeEventListener(Ne,i),e(n)},r=()=>{let e=z(t);n(e?{token:e}:null)},i=()=>n(null),a=window.setTimeout(i,dt(t));t.addEventListener(je,r,{once:!0}),t.addEventListener(Me,i,{once:!0}),t.addEventListener(Ne,i,{once:!0})}).finally(()=>{lt.delete(t)});return r||lt.set(t,i),new Promise(t=>{let n=()=>t(null);e.addEventListener(`abort`,n,{once:!0}),i.then(r=>{e.removeEventListener(`abort`,n),t(r)})})},pt=async e=>{let t=ut();if(t)return t;let n=document.querySelector(P);if(!n)return null;if(!z(n)){n.dispatchEvent(new CustomEvent(Pe));let e=ut();if(e)return e}return ft(e)},mt=(e,t)=>{if(!t)return{signal:e.signal,cleanup:()=>void 0};let n=()=>e.abort(t.reason);return t.aborted?n():t.addEventListener(`abort`,n,{once:!0}),{signal:e.signal,cleanup:()=>t.removeEventListener(`abort`,n)}},ht=(e,t)=>t.aborted||e instanceof DOMException&&e.name===`AbortError`||e instanceof Error&&e.name===`AbortError`,gt=async(e,t,n={})=>{let r=n.source,i=new AbortController,a=n.requestId??crypto.randomUUID(),o=nt(t,n),s=mt(i,n.signal),c=s.signal;o.init.signal=c,o.init.headers.set(Oe,a);let l=ut()??await pt(c);if(c.aborted)return s.cleanup(),{requestId:a,response:null,type:`aborted`,url:o.url.toString()};if(!l)return s.cleanup(),{requestId:a,response:null,type:c.aborted?`aborted`:`unavailable`,url:o.url.toString()};o.init.headers.set(De,l.token);let u={source:r??document,url:o.url.toString(),method:o.method,requestInit:o.init,requestId:a,controller:i,signal:c};if(!L(`ui:request:before`,r,u,{cancelable:!0}))return s.cleanup(),{requestId:a,response:null,type:`cancelled`,url:o.url.toString()};at(r),L(`ui:request:start`,r,u);try{let e=await fetch(o.url.toString(),o.init),t=await ct(e);u.response=e,u.responseType=t.type,e.ok&&t.type!==`other`||t.type===`redirect`?L(`ui:request:success`,r,u):L(`ui:request:error`,r,u);let n={...t,requestId:a};return n.navigation&&Be?.(n),n}catch(e){if(ht(e,c))return u.responseType=`aborted`,{requestId:a,response:null,type:`aborted`,url:o.url.toString()};throw u.error=e,L(`ui:request:error`,r,u),e}finally{s.cleanup(),ot(r),L(`ui:request:finish`,r,u)}},_t=()=>{if(!I)throw Error(`Trellis request runtime has not been registered with Alpine.`);return I},B=(e,t={})=>gt(_t(),e,t),vt=(e,t={})=>B(e,{...t,method:`GET`}),yt=(e,t={})=>B(e,{...t,method:`POST`}),bt=(e,t={})=>B(e,{...t,method:`PUT`}),xt=(e,t={})=>B(e,{...t,method:`DELETE`}),St=e=>{I=e},Ct=e=>{Be=e},wt=`__trellis`,Tt=`[data-ui-scroll-restoration]`,Et=20,Dt=100,Ot=!1,V=null,H=0,kt=!1,U=null,W=new Map,G=new Set,K=new Map,q=()=>crypto.randomUUID(),At=()=>({containers:{},window:{x:0,y:0}}),jt=e=>e.getAttribute(`data-ui-scroll-restoration`)?.trim()||e.id||null,Mt=()=>{let e={};return document.querySelectorAll(Tt).forEach(t=>{let n=jt(t);n&&(e[n]={x:t.scrollLeft,y:t.scrollTop})}),{containers:e,window:{x:window.scrollX,y:window.scrollY}}},J=e=>{if(!t(e))return null;let n=e[wt];if(!t(n))return null;let r=n.navigate;return!t(r)||typeof r.id!=`string`||typeof r.index!=`number`||typeof r.url!=`string`||!t(r.scroll)?null:r},Nt=e=>{let n=t(window.history.state)?window.history.state:{},r=t(n.__trellis)?n[wt]:{};return{...n,[wt]:{...r,navigate:e}}},Y=(e,t=e.url)=>{window.history.replaceState(Nt(e),``,t)},Pt=()=>{let e=J(window.history.state);if(!e)return;let t=Mt();W.set(e.id,t),Y({...e,scroll:t})},Ft=()=>{U!==null&&(cancelAnimationFrame(U),U=null),Pt()},It=()=>{let e=J(window.history.state);e&&(W.set(e.id,Mt()),U===null&&(U=requestAnimationFrame(()=>{U=null;let e=J(window.history.state);if(!e)return;let t=W.get(e.id);t&&Y({...e,scroll:t})})))},Lt=e=>{requestAnimationFrame(()=>{window.scrollTo({left:e.window.x,top:e.window.y,behavior:`instant`}),document.querySelectorAll(Tt).forEach(t=>{let n=jt(t),r=n?e.containers[n]:void 0;t.scrollTo({left:r?.x??0,top:r?.y??0,behavior:`instant`})})})},X=(e,t,n=!1)=>{let r=t.source?.isConnected?t.source:document;return r.dispatchEvent(new CustomEvent(e,{bubbles:!0,cancelable:n,composed:!0,detail:{history:t.history,source:r,url:t.destination}}))},Rt=e=>{for(K.set(e.requestId,e);K.size>Et;){let e=K.keys().next().value;if(!e)break;K.delete(e)}},zt=e=>{for(G.add(e);G.size>Dt;){let e=G.values().next().value;if(!e)break;G.delete(e)}},Bt=()=>{V&&=(zt(V.requestId),V.controller.abort(`Superseded by a newer Trellis navigation`),null)},Vt=()=>{Bt(),K.forEach(e=>zt(e.requestId)),K.clear()},Z=e=>{window.location.assign(e.href)},Ht=e=>{let t=new URL(e,document.baseURI);return t.origin===window.location.origin?t:null},Ut=e=>{Ft();let t={id:q(),index:H+1,scroll:At(),url:e.destination.href};return H=t.index,window.history.pushState(Nt(t),``,e.destination),e.entryId=t.id,t},Wt=e=>{let t={id:q(),index:H,scroll:At(),url:e.destination.href};return Y(t,e.destination),e.entryId=t.id,t},Gt=e=>{if(e.disposition===`replace`)return!0;if(e.disposition===`push`)return!1;let t=new URL(window.location.href);return t.origin===e.destination.origin&&t.pathname===e.destination.pathname},Kt=(e,t)=>{t?.type===`aborted`||t?.type===`cancelled`||t?.type===`redirect`||Z(e.destination)},qt=(e,t,n)=>{if(G.has(e.requestId))return;if(t.type!==`empty`){Kt(e,t);return}let r=n??(Gt(e)?Wt(e):Ut(e));if(n&&e.destination.href!==n.url){let t={...n,url:e.destination.href};Y(t,e.destination),e.entryId=t.id}Lt(r.scroll),X(`ui:navigated`,e)},Jt=(e,t,n)=>{let r={controller:new AbortController,destination:t,entryId:n.restoredState?.id??null,history:n.history,disposition:n.disposition??`auto`,requestId:q(),...n.requestOptions?{requestOptions:n.requestOptions}:{},...n.source?{source:n.source}:{}};if(n.preflight!==!1&&!X(`ui:navigate`,r,!0))return Promise.resolve();Vt(),V=r,X(`ui:navigating`,r);let i=new Headers(r.requestOptions?.headers);i.set(`X-Trellis-Navigation`,r.history?`restore`:`navigate`);let a=!0,o=async()=>{let t=a?r.requestOptions:void 0,n=a?r.source:void 0;a=!1;let s=await gt(e,r.destination,{...t,headers:i,method:`GET`,requestId:r.requestId,signal:r.controller.signal,...n?{source:n}:{}});if(r.destination=new URL(s.url,document.baseURI),!s.navigation)return s;let c=Ht(s.navigation.url);return c?(r.destination=c,s.navigation.history!==`auto`&&(r.disposition=s.navigation.history),o()):(Z(new URL(s.navigation.url,document.baseURI)),{...s,type:`redirect`})};return o().then(e=>{V?.requestId!==r.requestId&&!K.has(r.requestId)||qt(r,e,n.restoredState)}).catch(e=>{r.controller.signal.aborted||(h(`x-ui-request.navigate: restoration failed`,e),Kt(r))}).finally(()=>{V?.requestId===r.requestId&&(V=null),G.has(r.requestId)||Rt(r)})},Yt=()=>{let e=J(window.history.state);e?H=e.index:Y({id:q(),index:0,scroll:Mt(),url:window.location.href}),`scrollRestoration`in window.history&&(window.history.scrollRestoration=`manual`)},Xt=e=>{Ot||(Ot=!0,Yt(),we(e=>!e||!G.has(e)),Te((e,t)=>t.matches(`[data-ui-stream]`)&&!!(e&&(V?.requestId===e||K.has(e)))),Ct(t=>{if(!t.navigation)return!1;if(G.has(t.requestId)||V?.requestId===t.requestId)return!0;let n=Ht(t.navigation.url);return n?(Jt(e,n,{history:!1,disposition:t.navigation.history}),!0):(Z(new URL(t.navigation.url,document.baseURI)),!0)}),window.addEventListener(`scroll`,It,{passive:!0}),document.addEventListener(`scroll`,It,{capture:!0,passive:!0}),window.addEventListener(`pagehide`,Ft),window.addEventListener(`popstate`,t=>{if(kt){kt=!1;return}let n=J(t.state);if(!n){Z(new URL(window.location.href));return}let r=W.get(n.id),i=r?{...n,scroll:r}:n,a=Ht(n.url);if(!a||a.href!==window.location.href){Z(new URL(window.location.href));return}let o=H;if(H=n.index,!X(`ui:navigate`,{controller:new AbortController,destination:a,entryId:n.id,history:!0,disposition:`replace`,requestId:q()},!0)){kt=!0,window.history.go(o-n.index),H=o;return}Jt(e,a,{history:!0,preflight:!1,restoredState:i})}))},Zt=(e,t,n,r)=>{let{history:i=`auto`,...a}=r??{};return Jt(e,new URL(t,document.baseURI),{history:!1,disposition:i,requestOptions:a,...n?{source:n}:{}})},Q={activeRequests:0},Qt=!1,$t=!1,$={},en=null,tn=(e,t={})=>{let{history:n,navigate:r=!1,...i}=t;if(!r)return vt(e,i);if(!en)throw Error(`Trellis UI runtime has not been registered with Alpine.`);let{source:a,...o}=i;return Zt(en,e,a,{...o,...n?{history:n}:{}})},nn=(e,t)=>(n,r={})=>{let{navigate:i=!1,...a}=r;return i&&h(`$ui.${e}: navigate is only supported for GET requests`),t(n,a)},rn={get:tn,post:nn(`post`,yt),put:nn(`put`,bt),delete:nn(`delete`,xt),get motion(){if(!$.motion)throw Error(`Trellis Motion capability is not registered.`);return $.motion},get sortable(){if(!$.sortable)throw Error(`Trellis Sortable capability is not registered.`);return $.sortable},get isFetching(){return Q.activeRequests>0}},an=()=>{$t||($t=!0,document.addEventListener(`ui:request:start`,()=>{Q.activeRequests+=1}),document.addEventListener(`ui:request:finish`,()=>{Q.activeRequests=Math.max(0,Q.activeRequests-1)}))},on=e=>{en=e,Qt||=(Q=e.reactive(Q),!0),an(),e.magic(`ui`,()=>rn)},sn=e=>{$.motion=e},cn=e=>{$.sortable=e};export{Zt as a,gt as c,h as d,u as f,o as g,l as h,rn as i,Ce as l,m,sn as n,Xt as o,d as p,cn as r,St as s,on as t,ie as u};
|
|
4
|
-
//# sourceMappingURL=ui-CfByjNaO.js.map
|
package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/virtual-window-BHdOw3Pi.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var e=e=>Math.max(0,Math.floor(e)),t=e=>{if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`object`&&!!e&&typeof e.id==`string`&&typeof e.src==`string`):[]}catch{return[]}},n=async(n,r)=>{let i=n.status===204?``:await n.text(),a=document.createElement(`template`);a.innerHTML=i;let o=null,s=n.headers.get(r.totalHeader),c=s===null||s.trim()===``?NaN:Number(s);Number.isFinite(c)&&c>=0&&(o=e(c));let l=a.content.querySelector(r.metaSelector);if(l){if(o===null)try{let t=JSON.parse(l.innerHTML),n=Number(t.totalItems);Number.isFinite(n)&&n>=0&&(o=e(n))}catch{}l.remove()}let u=document.createElement(`div`);return u.append(a.content),{html:u.innerHTML,assets:t(n.headers.get(r.assetsHeader)),totalItems:o}},r=(e,t=0)=>Number.isFinite(e)?e:t,i=e=>Math.max(0,Math.floor(r(e))),a=(e,t=1)=>Math.max(2**-52,r(e,t)),o=(e,t,n)=>Math.min(n,Math.max(t,e)),s=(e,t)=>{let n=i(t.total),s=a(t.itemSize),c=Math.max(0,r(t.viewportSize)),l=i(t.buffer),u=Math.min(n,Math.max(1,Math.ceil(c/s))),d=Math.max(0,n-u),f=o(Math.max(0,r(t.scrollOffset)),0,Math.max(0,n*s-c)),p=o(Math.floor(f/s),0,d),m=Math.min(n,u+l*2),h=o(p-l,0,Math.max(0,n-m));return{axis:e,start:h,count:m,total:n,itemSize:s,viewportSize:c,scrollOffset:f,buffer:l,visibleStart:p,visibleCount:u,guardStart:Math.min(n,h+l),guardEnd:Math.max(0,h+m-l),translateOffset:h*s,spacerSize:n*s}},c={compute(e){let t={};return e.axes.x&&(t.x=s(`x`,e.axes.x)),e.axes.y&&(t.y=s(`y`,e.axes.y)),{kind:`fixed-axis`,key:[`x`,`y`].map(e=>{let n=t[e];return n?`${e}:${n.start}:${n.count}:${n.total}`:``}).filter(Boolean).join(`|`),axes:t}},covers(e,t){return[`x`,`y`].every(n=>{let r=t.axes[n];if(!r)return!0;let i=e.axes[n];if(!i||i.total!==r.total||i.itemSize!==r.itemSize)return!1;let a=r.visibleStart+r.visibleCount;return r.visibleStart>=i.guardStart&&a<=i.guardEnd})},serialize(e){let t={};return[`x`,`y`].forEach(n=>{let r=e.axes[n];r&&(t[n]={start:r.start,count:r.count,total:r.total})}),{window:JSON.stringify(t)}},spacerSize(e,t){return e.axes[t]?.spacerSize??0},translateOffset(e,t){return e.axes[t]?.translateOffset??0},setAxisTotal(e,t,n){let r=e.axes[t];return r?{...e,axes:{...e.axes,[t]:{...r,total:i(n)}}}:e},scrollTo(e,t){let n=i(e.total),s=a(e.itemSize),c=Math.max(0,r(e.viewportSize)),l=o(i(t.index),0,Math.max(0,n-1))*s,u=l+s,d=Math.max(0,n*s-c),f=l;if(t.align===`center`)f=l-(c-s)/2;else if(t.align===`end`)f=u-c;else if(t.align===`auto`){let t=Math.max(0,r(e.scrollOffset));if(l>=t&&u<=t+c)return o(t,0,d);f=l<t?l:u-c}return o(f,0,d)}},l=(e,t={})=>{let n=0,r=0,i=new Map,a=new Map,o=new Map,s=()=>({generation:n,mounted:new Map(i),pending:new Map(a),latestDesired:new Map(o)}),c=()=>t.onChange?.(s()),l=e=>{let t=a.get(e.block);return e.generation===n&&t?.requestGeneration===e.requestGeneration};return{computeWindow:t=>e.compute(t),shouldLoad:(t,n)=>!n||!e.covers(n,t),begin(e,t){if(o.set(e,t),a.has(e)||!this.shouldLoad(t,i.get(e)))return c(),null;let s={block:e,window:t,generation:n,requestGeneration:++r};return a.set(e,s),c(),s},commit(e,t=e.window){return l(e)?(a.delete(e.block),i.set(e.block,t),c(),!0):!1},fail(e){return l(e)?(a.delete(e.block),c(),!0):!1},next(t){if(a.has(t))return null;let n=o.get(t);if(!n)return null;let r=i.get(t);return r&&e.covers(r,n)?null:n},mounted:e=>i.get(e)??null,pending:e=>a.get(e)??null,invalidate(){n+=1,i.clear(),a.clear(),o.clear(),c()},snapshot:s}};export{c as n,n as r,l as t};
|
|
2
|
-
//# sourceMappingURL=virtual-window-BHdOw3Pi.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"virtual-window-BHdOw3Pi.js","names":[],"sources":["../../../../../../../../client/src/runtime/virtualizer-fragment.ts","../../../../../../../../client/src/runtime/virtual-window.ts"],"sourcesContent":["import type {AssetDescriptor} from '../assets/bridge';\n\ntype VirtualizerFragmentOptions = {\n totalHeader: string;\n assetsHeader: string;\n metaSelector: string;\n};\n\ntype VirtualizerFragmentPayload = {\n html: string;\n assets: AssetDescriptor[];\n totalItems: number | null;\n};\n\nconst integer = (value: number): number => Math.max(0, Math.floor(value));\n\nconst parseAssets = (raw: string | null): AssetDescriptor[] => {\n if (!raw) return [];\n try {\n const parsed: unknown = JSON.parse(raw);\n if (!Array.isArray(parsed)) return [];\n return parsed.filter((value): value is AssetDescriptor => (\n typeof value === 'object'\n && value !== null\n && typeof (value as Partial<AssetDescriptor>).id === 'string'\n && typeof (value as Partial<AssetDescriptor>).src === 'string'\n ));\n } catch {\n return [];\n }\n};\n\nconst parseVirtualizerFragmentResponse = async (\n response: Response,\n options: VirtualizerFragmentOptions,\n): Promise<VirtualizerFragmentPayload> => {\n const html = response.status === 204 ? '' : await response.text();\n const template = document.createElement('template');\n template.innerHTML = html;\n let totalItems: number | null = null;\n const rawHeaderTotal = response.headers.get(options.totalHeader);\n const headerTotal = rawHeaderTotal === null || rawHeaderTotal.trim() === ''\n ? Number.NaN\n : Number(rawHeaderTotal);\n if (Number.isFinite(headerTotal) && headerTotal >= 0) totalItems = integer(headerTotal);\n\n const meta = template.content.querySelector<HTMLTemplateElement>(options.metaSelector);\n if (meta) {\n if (totalItems === null) {\n try {\n const parsed = JSON.parse(meta.innerHTML) as {totalItems?: unknown};\n const inlineTotal = Number(parsed.totalItems);\n if (Number.isFinite(inlineTotal) && inlineTotal >= 0) totalItems = integer(inlineTotal);\n } catch {\n // Invalid optional metadata does not invalidate otherwise usable fragment HTML.\n }\n }\n meta.remove();\n }\n\n const container = document.createElement('div');\n container.append(template.content);\n return {\n html: container.innerHTML,\n assets: parseAssets(response.headers.get(options.assetsHeader)),\n totalItems,\n };\n};\n\nexport {parseVirtualizerFragmentResponse};\nexport type {VirtualizerFragmentOptions, VirtualizerFragmentPayload};\n","type VirtualWindowKind = string;\n\ntype VirtualWindowBase = {\n kind: VirtualWindowKind;\n key: string;\n};\n\ntype VirtualWindowAdapter<Input, Window extends VirtualWindowBase> = {\n compute(input: Input): Window;\n covers(mounted: Window, desired: Window): boolean;\n serialize(window: Window): Record<string, string>;\n};\n\ntype VirtualAxis = 'x' | 'y';\ntype VirtualScrollAlign = 'start' | 'center' | 'end' | 'auto';\n\ntype FixedAxisInputDetail = {\n total: number;\n itemSize: number;\n viewportSize: number;\n scrollOffset: number;\n buffer: number;\n overscan?: number;\n};\n\ntype FixedAxisWindowInput = {\n axes: Partial<Record<VirtualAxis, FixedAxisInputDetail>>;\n};\n\ntype VirtualAxisWindow = {\n axis: VirtualAxis;\n start: number;\n count: number;\n total: number;\n itemSize: number;\n viewportSize: number;\n scrollOffset: number;\n buffer: number;\n visibleStart: number;\n visibleCount: number;\n guardStart: number;\n guardEnd: number;\n translateOffset: number;\n spacerSize: number;\n};\n\ntype FixedAxisWindow = VirtualWindowBase & {\n kind: 'fixed-axis';\n axes: Partial<Record<VirtualAxis, VirtualAxisWindow>>;\n};\n\ntype FixedAxisScrollTarget = {\n axis: VirtualAxis;\n index: number;\n align?: VirtualScrollAlign;\n};\n\ntype FixedAxisWindowAdapter = VirtualWindowAdapter<FixedAxisWindowInput, FixedAxisWindow> & {\n spacerSize(window: FixedAxisWindow, axis: VirtualAxis): number;\n translateOffset(window: FixedAxisWindow, axis: VirtualAxis): number;\n setAxisTotal(input: FixedAxisWindowInput, axis: VirtualAxis, total: number): FixedAxisWindowInput;\n scrollTo(input: FixedAxisInputDetail, target: FixedAxisScrollTarget): number;\n};\n\ntype VirtualWindowRequest<Window extends VirtualWindowBase> = {\n block: string;\n window: Window;\n generation: number;\n requestGeneration: number;\n};\n\ntype VirtualWindowSnapshot<Window extends VirtualWindowBase> = {\n generation: number;\n mounted: ReadonlyMap<string, Window>;\n pending: ReadonlyMap<string, VirtualWindowRequest<Window>>;\n latestDesired: ReadonlyMap<string, Window>;\n};\n\ntype VirtualWindowControllerOptions<Window extends VirtualWindowBase> = {\n onChange?(snapshot: VirtualWindowSnapshot<Window>): void;\n};\n\ntype VirtualWindowController<Input, Window extends VirtualWindowBase> = {\n computeWindow(input: Input): Window;\n shouldLoad(desired: Window, mounted?: Window | null): boolean;\n begin(block: string, desired: Window): VirtualWindowRequest<Window> | null;\n commit(request: VirtualWindowRequest<Window>, mounted?: Window): boolean;\n fail(request: VirtualWindowRequest<Window>): boolean;\n next(block: string): Window | null;\n mounted(block: string): Window | null;\n pending(block: string): VirtualWindowRequest<Window> | null;\n invalidate(): void;\n snapshot(): VirtualWindowSnapshot<Window>;\n};\n\nconst finite = (value: number, fallback = 0): number => (\n Number.isFinite(value) ? value : fallback\n);\n\nconst nonNegativeInteger = (value: number): number => (\n Math.max(0, Math.floor(finite(value)))\n);\n\nconst positive = (value: number, fallback = 1): number => (\n Math.max(Number.EPSILON, finite(value, fallback))\n);\n\nconst clamp = (value: number, minimum: number, maximum: number): number => (\n Math.min(maximum, Math.max(minimum, value))\n);\n\nconst computeAxis = (axis: VirtualAxis, input: FixedAxisInputDetail): VirtualAxisWindow => {\n const total = nonNegativeInteger(input.total);\n const itemSize = positive(input.itemSize);\n const viewportSize = Math.max(0, finite(input.viewportSize));\n const buffer = nonNegativeInteger(input.buffer);\n const visibleCount = Math.min(total, Math.max(1, Math.ceil(viewportSize / itemSize)));\n const maximumVisibleStart = Math.max(0, total - visibleCount);\n const scrollOffset = clamp(\n Math.max(0, finite(input.scrollOffset)),\n 0,\n Math.max(0, total * itemSize - viewportSize),\n );\n const visibleStart = clamp(Math.floor(scrollOffset / itemSize), 0, maximumVisibleStart);\n const count = Math.min(total, visibleCount + (buffer * 2));\n const start = clamp(visibleStart - buffer, 0, Math.max(0, total - count));\n\n return {\n axis,\n start,\n count,\n total,\n itemSize,\n viewportSize,\n scrollOffset,\n buffer,\n visibleStart,\n visibleCount,\n guardStart: Math.min(total, start + buffer),\n guardEnd: Math.max(0, start + count - buffer),\n translateOffset: start * itemSize,\n spacerSize: total * itemSize,\n };\n};\n\nconst fixedAxisWindowAdapter: FixedAxisWindowAdapter = {\n compute(input: FixedAxisWindowInput): FixedAxisWindow {\n const axes: FixedAxisWindow['axes'] = {};\n if (input.axes.x) axes.x = computeAxis('x', input.axes.x);\n if (input.axes.y) axes.y = computeAxis('y', input.axes.y);\n const key = (['x', 'y'] as const)\n .map((axis) => {\n const detail = axes[axis];\n return detail ? `${axis}:${detail.start}:${detail.count}:${detail.total}` : '';\n })\n .filter(Boolean)\n .join('|');\n return {kind: 'fixed-axis', key, axes};\n },\n\n covers(mounted: FixedAxisWindow, desired: FixedAxisWindow): boolean {\n return (['x', 'y'] as const).every((axis) => {\n const wanted = desired.axes[axis];\n if (!wanted) return true;\n const current = mounted.axes[axis];\n if (!current || current.total !== wanted.total || current.itemSize !== wanted.itemSize) return false;\n const desiredEnd = wanted.visibleStart + wanted.visibleCount;\n return wanted.visibleStart >= current.guardStart && desiredEnd <= current.guardEnd;\n });\n },\n\n serialize(window: FixedAxisWindow): Record<string, string> {\n const axes: Record<string, {start: number; count: number; total: number}> = {};\n (['x', 'y'] as const).forEach((axis) => {\n const detail = window.axes[axis];\n if (detail) axes[axis] = {start: detail.start, count: detail.count, total: detail.total};\n });\n return {window: JSON.stringify(axes)};\n },\n\n spacerSize(window: FixedAxisWindow, axis: VirtualAxis): number {\n return window.axes[axis]?.spacerSize ?? 0;\n },\n\n translateOffset(window: FixedAxisWindow, axis: VirtualAxis): number {\n return window.axes[axis]?.translateOffset ?? 0;\n },\n\n setAxisTotal(input: FixedAxisWindowInput, axis: VirtualAxis, total: number): FixedAxisWindowInput {\n const current = input.axes[axis];\n if (!current) return input;\n return {...input, axes: {...input.axes, [axis]: {...current, total: nonNegativeInteger(total)}}};\n },\n\n scrollTo(input: FixedAxisInputDetail, target: FixedAxisScrollTarget): number {\n const total = nonNegativeInteger(input.total);\n const itemSize = positive(input.itemSize);\n const viewportSize = Math.max(0, finite(input.viewportSize));\n const index = clamp(nonNegativeInteger(target.index), 0, Math.max(0, total - 1));\n const itemStart = index * itemSize;\n const itemEnd = itemStart + itemSize;\n const maximum = Math.max(0, total * itemSize - viewportSize);\n let offset = itemStart;\n if (target.align === 'center') offset = itemStart - ((viewportSize - itemSize) / 2);\n else if (target.align === 'end') offset = itemEnd - viewportSize;\n else if (target.align === 'auto') {\n const current = Math.max(0, finite(input.scrollOffset));\n if (itemStart >= current && itemEnd <= current + viewportSize) return clamp(current, 0, maximum);\n offset = itemStart < current ? itemStart : itemEnd - viewportSize;\n }\n return clamp(offset, 0, maximum);\n },\n};\n\nconst createVirtualWindowController = <Input, Window extends VirtualWindowBase>(\n adapter: VirtualWindowAdapter<Input, Window>,\n options: VirtualWindowControllerOptions<Window> = {},\n): VirtualWindowController<Input, Window> => {\n let generation = 0;\n let requestGeneration = 0;\n const mountedWindows = new Map<string, Window>();\n const pendingWindows = new Map<string, VirtualWindowRequest<Window>>();\n const latestDesired = new Map<string, Window>();\n\n const snapshot = (): VirtualWindowSnapshot<Window> => ({\n generation,\n mounted: new Map(mountedWindows),\n pending: new Map(pendingWindows),\n latestDesired: new Map(latestDesired),\n });\n const notify = (): void => options.onChange?.(snapshot());\n const isCurrent = (request: VirtualWindowRequest<Window>): boolean => {\n const pending = pendingWindows.get(request.block);\n return request.generation === generation\n && pending?.requestGeneration === request.requestGeneration;\n };\n\n return {\n computeWindow: (input) => adapter.compute(input),\n shouldLoad: (desired, mounted) => !mounted || !adapter.covers(mounted, desired),\n begin(block, desired) {\n latestDesired.set(block, desired);\n if (pendingWindows.has(block) || !this.shouldLoad(desired, mountedWindows.get(block))) {\n notify();\n return null;\n }\n const request = {\n block,\n window: desired,\n generation,\n requestGeneration: ++requestGeneration,\n };\n pendingWindows.set(block, request);\n notify();\n return request;\n },\n commit(request, mounted = request.window) {\n if (!isCurrent(request)) return false;\n pendingWindows.delete(request.block);\n mountedWindows.set(request.block, mounted);\n notify();\n return true;\n },\n fail(request) {\n if (!isCurrent(request)) return false;\n pendingWindows.delete(request.block);\n notify();\n return true;\n },\n next(block) {\n if (pendingWindows.has(block)) return null;\n const desired = latestDesired.get(block);\n if (!desired) return null;\n const mounted = mountedWindows.get(block);\n if (mounted && adapter.covers(mounted, desired)) return null;\n return desired;\n },\n mounted: (block) => mountedWindows.get(block) ?? null,\n pending: (block) => pendingWindows.get(block) ?? null,\n invalidate() {\n generation += 1;\n mountedWindows.clear();\n pendingWindows.clear();\n latestDesired.clear();\n notify();\n },\n snapshot,\n };\n};\n\nexport {\n createVirtualWindowController,\n fixedAxisWindowAdapter,\n};\nexport type {\n FixedAxisInputDetail,\n FixedAxisScrollTarget,\n FixedAxisWindowAdapter,\n FixedAxisWindow,\n FixedAxisWindowInput,\n VirtualAxis,\n VirtualAxisWindow,\n VirtualScrollAlign,\n VirtualWindowAdapter,\n VirtualWindowBase,\n VirtualWindowController,\n VirtualWindowControllerOptions,\n VirtualWindowKind,\n VirtualWindowRequest,\n VirtualWindowSnapshot,\n};\n"],"mappings":"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"}
|