@vireo-ai/trellis-ui 0.1.48 → 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.
Files changed (103) hide show
  1. package/package.json +5 -5
  2. package/packages/client/src/styles/generated/theme-fonts.css +1 -1
  3. package/packages/client/src/styles/generated/theme-palette.css +1 -1
  4. package/packages/client/src/styles/generated/theme-runtime.css +13 -13
  5. package/packages/client/types/component-api.d.ts +3 -1
  6. package/packages/client/types/components/data-grid/contract.d.ts +1 -0
  7. package/packages/client/types/components/data-grid/index.d.ts +28 -4
  8. package/packages/client/types/components/runtime.d.ts +1 -1
  9. package/packages/client/types/components/virtualizer/contract.d.ts +1 -29
  10. package/packages/client/types/components/virtualizer/cursor.d.ts +1 -0
  11. package/packages/client/types/components/virtualizer/index.d.ts +2 -28
  12. package/packages/client/types/runtime/cursor-data-source.d.ts +45 -0
  13. package/packages/client/types/runtime/focus-handoff.d.ts +11 -0
  14. package/packages/client/types/runtime/virtualizer-schema.d.ts +29 -0
  15. package/packages/client/types/runtime/virtualizer.d.ts +41 -0
  16. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +12 -12
  17. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css +1 -1
  18. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +306 -289
  19. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js +1 -1
  20. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut.js +1 -1
  21. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js +1 -1
  22. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-C8JwDQHB.js → capability-motion-DoZROkFD.js} +2 -2
  23. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-C8JwDQHB.js.map → capability-motion-DoZROkFD.js.map} +1 -1
  24. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-BoDF_wQX.js +2 -0
  25. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-BoDF_wQX.js.map +1 -0
  26. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-sortable-Ms02uATJ.js → capability-sortable-DtSghTO8.js} +2 -2
  27. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-sortable-Ms02uATJ.js.map → capability-sortable-DtSghTO8.js.map} +1 -1
  28. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{controller-BOf7dxV2.js → controller-qWtZCkAC.js} +2 -2
  29. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{controller-BOf7dxV2.js.map → controller-qWtZCkAC.js.map} +1 -1
  30. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-D_APohl9.js → core-BgbZXaDN.js} +2 -2
  31. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-D_APohl9.js.map → core-BgbZXaDN.js.map} +1 -1
  32. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-1meMFJbq.js +2 -0
  33. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-1meMFJbq.js.map +1 -0
  34. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DckTWjSU.js → entry.generated-B-wVMxe6.js} +2 -2
  35. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DckTWjSU.js.map → entry.generated-B-wVMxe6.js.map} +1 -1
  36. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BNM7EWpC.js → entry.generated-BYDBzadH.js} +2 -2
  37. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BNM7EWpC.js.map → entry.generated-BYDBzadH.js.map} +1 -1
  38. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DRZyI4u3.js → entry.generated-B_q7LVNv.js} +2 -2
  39. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DRZyI4u3.js.map → entry.generated-B_q7LVNv.js.map} +1 -1
  40. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DcCdeWRk.js → entry.generated-BhtgeSTa.js} +2 -2
  41. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DcCdeWRk.js.map → entry.generated-BhtgeSTa.js.map} +1 -1
  42. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-6GztwKjx.js → entry.generated-CJuVLJw9.js} +2 -2
  43. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-6GztwKjx.js.map → entry.generated-CJuVLJw9.js.map} +1 -1
  44. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry2.generated-jxSblEo7.js → entry.generated-CQGhCt9y.js} +2 -2
  45. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CQGhCt9y.js.map +1 -0
  46. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-RR5GZAgO.js → entry.generated-CRhvZ0DI.js} +2 -2
  47. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-RR5GZAgO.js.map → entry.generated-CRhvZ0DI.js.map} +1 -1
  48. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-C5kjUnFe.js → entry.generated-CkBblBv9.js} +2 -2
  49. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-C5kjUnFe.js.map → entry.generated-CkBblBv9.js.map} +1 -1
  50. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Bl38ruYD.js → entry.generated-Des-gEaR.js} +2 -2
  51. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Des-gEaR.js.map +1 -0
  52. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-ZcYuKSSI.js +2 -0
  53. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-ZcYuKSSI.js.map +1 -0
  54. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BK8q8vxJ.js → entry.generated-u0Ueamvw.js} +2 -2
  55. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BK8q8vxJ.js.map → entry.generated-u0Ueamvw.js.map} +1 -1
  56. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CPbvsglm.js → entry2.generated-CPbvsglm.js} +1 -1
  57. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-CPbvsglm.js.map +1 -0
  58. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-Dzq4GSqn.js +2 -0
  59. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-Dzq4GSqn.js.map +1 -0
  60. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-handoff-DzEyK-Fp.js +2 -0
  61. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-handoff-DzEyK-Fp.js.map +1 -0
  62. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{motion-BlyJpJAE.js → motion-BQk-uLaI.js} +2 -2
  63. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{motion-BlyJpJAE.js.map → motion-BQk-uLaI.js.map} +1 -1
  64. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-DuGUQhxd.js +4 -0
  65. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{ui-CfByjNaO.js.map → ui-DuGUQhxd.js.map} +1 -1
  66. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/virtualizer-CSk2RJEN.js +2 -0
  67. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/virtualizer-CSk2RJEN.js.map +1 -0
  68. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +1 -1
  69. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid.js +1 -1
  70. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +1 -1
  71. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +1 -1
  72. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +1 -1
  73. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js.map +1 -1
  74. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding.js +1 -1
  75. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +1 -1
  76. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +1 -1
  77. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area.js +1 -1
  78. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +1 -1
  79. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +1 -1
  80. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +1 -1
  81. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +1 -1
  82. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip.js +1 -1
  83. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer.js +1 -1
  84. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +1 -1
  85. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +1 -1
  86. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js.map +1 -1
  87. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +112 -106
  88. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +9 -9
  89. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +9 -9
  90. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-Z-__iteD.js +0 -2
  91. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-Z-__iteD.js.map +0 -1
  92. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B2rTvkxi.js +0 -2
  93. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B2rTvkxi.js.map +0 -1
  94. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bl38ruYD.js.map +0 -1
  95. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C0kdsGqX.js +0 -2
  96. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C0kdsGqX.js.map +0 -1
  97. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CPbvsglm.js.map +0 -1
  98. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DldFffYN.js +0 -2
  99. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DldFffYN.js.map +0 -1
  100. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-jxSblEo7.js.map +0 -1
  101. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CfByjNaO.js +0 -4
  102. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/virtual-window-BHdOw3Pi.js +0 -2
  103. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/virtual-window-BHdOw3Pi.js.map +0 -1
@@ -0,0 +1,4 @@
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},ae=e=>{document.dispatchEvent(new CustomEvent(e.event,{detail:e.detail??{},bubbles:!0,composed:!0}))},O=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},k=(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)},oe=(e,t)=>{let n=O(t);if(!n||n.size===0)return;let r=k(n,`request-id`);if(v&&!v(r??null))return;let i,a=k(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:k(n,`mode`)??`replace`,target:k(n,`target`)??null,selector:k(n,`selector`)??null,html:n.get(`html`)?.join(`
3
+ `)??null,requestId:r??null,viewTransition:k(n,`view-transition`)===`true`,...i?{assets:i}:{}})},se=e=>{let n=O(e);if(!n)return;let r=k(n,`request-id`);if(v&&!v(r??null))return;let i=k(n,`event`);if(!i){h(`x-ui-stream: dispatch SSE frame missing event`);return}let a=k(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}ae({event:i,detail:o})},ce={"trellis-ui-patch":oe,"trellis-ui-dispatch":(e,t)=>se(t)},le=`trellis-ui-`,ue=(e,t)=>{let n=ce[t.event];if(!n){t.event.startsWith(le)&&h(`x-ui-stream: unsupported SSE event`,t.event);return}n(e,t)},de=(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}`},fe=(e,t,n=``,r=``,i={})=>{let a=new EventSource(de(t,n,r,i.lastEventId)),o=!0,s=e=>{e.lastEventId&&i.eventId?.(e.lastEventId)};return Object.keys(ce).forEach(t=>{a.addEventListener(t,t=>{!o||!(t instanceof MessageEvent)||(s(t),ue(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()}}},A=new Map,pe=new Set,me=e=>e instanceof HTMLElement&&e.id?e.id:e,he=6e4,ge=1e3,_e=2e3,ve=1e3,ye=3e4,j=(e,t,n={})=>{t!==`reset`&&(e.dataset.uiStreamState=t),e.dispatchEvent(new CustomEvent(`ui:stream:${t}`,{bubbles:!0,composed:!0,detail:{source:e,...n}}))},be=(e,t)=>de(t,e.dataset.uiStreamScopes,e.dataset.uiStreamClient),xe=e=>e.dataset.uiStreamOpenWhenHidden===`true`,M=(e,t)=>JSON.stringify({openWhenHidden:xe(e),url:be(e,t)}),Se=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},Ce=(e,t,n)=>{let r=M(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=xe(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=M(t,n),j(t,`connecting`),i=fe(e,n,t.dataset.uiStreamScopes,a,{lastEventId:d,open:()=>{if(o!==f)return;let e=u;u=!0,p=0,j(t,`open`),e&&S()},disconnected:()=>{if(o!==f||g||(i=null,O.controller=null,j(t,`disconnected`),!b()))return;let e=Math.min(ve*2**p,ye);p+=1;let n=Math.floor(Math.random()*e);c=window.setTimeout(()=>{c=void 0,E()},n)},reset:e=>j(t,`reset`,{data:e}),eventId:e=>{o===f&&(d=e)},error:e=>{o!==f||g||(m=!0,i=null,O.controller=null,x(),j(t,`error`,{data:e}))}}),O.controller=i,O.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()-he;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()?(j(t,`error`,{error:e}),null):(b()&&(a=window.setTimeout(()=>void T(),5e3)),t.dataset.uiStreamClient??null)}).finally(()=>{s=null}),s):(j(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()<=he?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,j(t,`suspended`),O.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=Se(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=Se(e);if(t){if(t.method===`GET`){_.delete(t.requestId);return}v.delete(t.requestId),document.visibilityState===`hidden`&&!y&&v.size===0&&D(_e)}},ae=()=>{if(!(y||m)){if(document.visibilityState===`hidden`){if(v.size>0)return;D(ge);return}window.clearTimeout(l),l=void 0,i||E()}},O={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`,ae),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`,ae),document.addEventListener(`ui:request:start`,re),document.addEventListener(`ui:request:finish`,ie),b()?E():j(t,`suspended`),O},we=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=me(t),s=A.get(a),c=M(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`){pe.has(a)||(pe.add(a),queueMicrotask(()=>{pe.delete(a);let t=document.getElementById(a);if(!t)return;let r=A.get(a),i=M(t,n);if(r?.configuration===i){r.rescheduleRefresh();return}r?.dispose(),A.set(a,Ce(e,t,n))}));return}s?.dispose(),A.set(a,Ce(e,t,n)),r(()=>{let e=A.get(a);e?.element===t&&(e.dispose(),A.delete(a))})})},Te=e=>{v=e},Ee=e=>{y=e},De=`X-Trellis-UI-Request`,Oe=`X-Trellis-Client`,ke=`X-Trellis-Request-ID`,Ae=`X-Trellis-Navigate`,je=`X-Trellis-Navigate-History`,Me=`[data-ui-stream][data-ui-stream-client]`,Ne=`ui:stream:open`,Pe=`ui:stream:error`,Fe=`ui:stream:disconnected`,Ie=`ui:stream:refresh`,Le=`meta[name="csrf-token"]`,Re=`text/event-stream`,ze=`data-ui-request-pending`,N=`application/x-www-form-urlencoded`,Be=`multipart/form-data`,Ve=new Set([`GET`]),P=null,He=null,Ue=e=>{let t=(e||`GET`).toUpperCase();return t===`POST`||t===`PUT`||t===`PATCH`||t===`DELETE`?t:`GET`},We=(e,t,n)=>{if(e instanceof FormData){e.append(t,n);return}e.append(t,n instanceof File?n.name:String(n))},Ge=(e,t,n)=>{if(Array.isArray(n)){n.forEach(n=>Ge(e,t,n));return}n!=null&&We(e,t,n instanceof Blob?n:String(n))},Ke=(e,t)=>{Object.entries(t).forEach(([t,n])=>Ge(e,t,n))},qe=(e,t)=>{if(t){if(t instanceof FormData||t instanceof URLSearchParams){for(let[n,r]of t.entries())We(e,n,r);return}Ke(e,t)}},Je=(e,t)=>{let n=new Headers(e);n.set(De,`true`);let r=document.querySelector(Le)?.content;return r&&n.set(`X-CSRFToken`,r),t instanceof URLSearchParams&&!n.has(`Content-Type`)&&n.set(`Content-Type`,N),n},Ye=(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)},Xe=(e,t)=>t?.getAttribute(`formenctype`)||e.enctype||N,Ze=e=>{if(!(e instanceof HTMLButtonElement||e instanceof HTMLInputElement))return null;let t=e.getAttribute(`name`);return t?[t,e.value]:null},Qe=(e,t)=>{let n=new FormData(e),r=Ze(t);return r&&n.append(...r),n},$e=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},et=(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 Ke(n,e),{payload:n,explicit:!0}},tt=(e,t)=>{if(!t)return e;if(e instanceof FormData||e instanceof URLSearchParams)return qe(e,t),e;let n=new URLSearchParams;return typeof e==`string`&&n.append(`data`,e),qe(n,t),n},nt=(e,t)=>e instanceof HTMLFormElement?{payload:Qe(e,t),enctype:Xe(e,t)}:{payload:new URLSearchParams,enctype:N},rt=(e,t,n)=>t?Ue(t):e instanceof HTMLFormElement?Ue(n?.getAttribute(`formmethod`)||e.getAttribute(`method`)):`GET`,it=(e,t={})=>{let n=t.source,r=t.submitter??null,i=rt(n,t.method,r),a=Ye(e,n,r),o=nt(n,r),s=et(t.data,o.payload),c=tt(s.payload,t.extra),l={method:i,...t.cache?{cache:t.cache}:{}},u=null;return Ve.has(i)?c instanceof FormData||c instanceof URLSearchParams?$e(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===Be)?c:c instanceof FormData?$e(c):c,l.headers=Je(t.headers,u),u!=null&&(l.body=u),{url:a,method:i,init:l}},at=e=>e?.isConnected?e:document,ot=(e,t,n={})=>new CustomEvent(e,{bubbles:!0,composed:!0,cancelable:n.cancelable??!1,detail:t}),F=(e,t,n,r)=>at(t).dispatchEvent(ot(e,n,r)),I=new WeakMap,st=e=>{if(!e)return;let t=I.get(e)??0;I.set(e,t+1),e.setAttribute(`aria-busy`,`true`),e.setAttribute(ze,`true`)},ct=e=>{if(!e)return;let t=(I.get(e)??1)-1;if(t>0){I.set(e,t);return}I.delete(e),e.removeAttribute(`aria-busy`),e.removeAttribute(ze)},lt=e=>e.headers.get(`Content-Type`)?.toLowerCase().includes(Re)??!1,ut=async e=>{let t=e.headers.get(Ae);if(t){let n=e.headers.get(je)??`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&&!lt(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})},L=new WeakMap,R=e=>{let t=e.dataset.uiStreamClient,n=Number(e.dataset.uiStreamClientExpires);return!t||Number.isFinite(n)&&n>0&&n<=Date.now()?null:t},dt=()=>{let e=document.querySelector(Me),t=e?R(e):null;return!e||!t||e.dataset.uiStreamState!==`open`?null:{token:t}},ft=e=>{let t=Number(e.dataset.uiStreamTimeout);return Number.isFinite(t)&&t>=0?t:5e3},pt=e=>{let t=document.querySelector(Me),n=t?R(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=L.get(t),i=r??new Promise(e=>{let n=n=>{window.clearTimeout(a),t.removeEventListener(Ne,r),t.removeEventListener(Pe,i),t.removeEventListener(Fe,i),e(n)},r=()=>{let e=R(t);n(e?{token:e}:null)},i=()=>n(null),a=window.setTimeout(i,ft(t));t.addEventListener(Ne,r,{once:!0}),t.addEventListener(Pe,i,{once:!0}),t.addEventListener(Fe,i,{once:!0})}).finally(()=>{L.delete(t)});return r||L.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)})})},mt=async e=>{let t=dt();if(t)return t;let n=document.querySelector(Me);if(!n)return null;if(!R(n)){n.dispatchEvent(new CustomEvent(Ie));let e=dt();if(e)return e}return pt(e)},ht=(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)}},gt=(e,t)=>t.aborted||e instanceof DOMException&&e.name===`AbortError`||e instanceof Error&&e.name===`AbortError`,_t=async(e,t,n={})=>{let r=n.source,i=new AbortController,a=n.requestId??crypto.randomUUID(),o=it(t,n),s=ht(i,n.signal),c=s.signal;o.init.signal=c,o.init.headers.set(ke,a);let l=dt()??await mt(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(Oe,l.token);let u={source:r??document,url:o.url.toString(),method:o.method,requestInit:o.init,requestId:a,controller:i,signal:c};if(!F(`ui:request:before`,r,u,{cancelable:!0}))return s.cleanup(),{requestId:a,response:null,type:`cancelled`,url:o.url.toString()};st(r),F(`ui:request:start`,r,u);try{let e=await fetch(o.url.toString(),o.init),t=await ut(e);u.response=e,u.responseType=t.type,e.ok&&t.type!==`other`||t.type===`redirect`?F(`ui:request:success`,r,u):F(`ui:request:error`,r,u);let n={...t,requestId:a};return n.navigation&&He?.(n),n}catch(e){if(gt(e,c))return u.responseType=`aborted`,{requestId:a,response:null,type:`aborted`,url:o.url.toString()};throw u.error=e,F(`ui:request:error`,r,u),e}finally{s.cleanup(),ct(r),F(`ui:request:finish`,r,u)}},vt=()=>{if(!P)throw Error(`Trellis request runtime has not been registered with Alpine.`);return P},z=(e,t={})=>_t(vt(),e,t),yt=(e,t={})=>z(e,{...t,method:`GET`}),bt=(e,t={})=>z(e,{...t,method:`POST`}),xt=(e,t={})=>z(e,{...t,method:`PUT`}),St=(e,t={})=>z(e,{...t,method:`DELETE`}),Ct=e=>{P=e},wt=e=>{He=e},Tt=`__trellis`,Et=`[data-ui-scroll-restoration]`,Dt=20,Ot=100,kt=!1,B=null,V=0,At=!1,H=null,U=new Map,W=new Set,G=new Map,K=()=>crypto.randomUUID(),jt=()=>({containers:{},window:{x:0,y:0}}),Mt=e=>e.getAttribute(`data-ui-scroll-restoration`)?.trim()||e.id||null,q=()=>{let e={};return document.querySelectorAll(Et).forEach(t=>{let n=Mt(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[Tt];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[Tt]:{};return{...n,[Tt]:{...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=q();U.set(e.id,t),Y({...e,scroll:t})},Ft=()=>{H!==null&&(cancelAnimationFrame(H),H=null),Pt()},It=()=>{let e=J(window.history.state);e&&(U.set(e.id,q()),H===null&&(H=requestAnimationFrame(()=>{H=null;let e=J(window.history.state);if(!e)return;let t=U.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(Et).forEach(t=>{let n=Mt(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(G.set(e.requestId,e);G.size>Dt;){let e=G.keys().next().value;if(!e)break;G.delete(e)}},zt=e=>{for(W.add(e);W.size>Ot;){let e=W.values().next().value;if(!e)break;W.delete(e)}},Bt=()=>{B&&=(zt(B.requestId),B.controller.abort(`Superseded by a newer Trellis navigation`),null)},Vt=()=>{Bt(),G.forEach(e=>zt(e.requestId)),G.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:K(),index:V+1,scroll:jt(),url:e.destination.href};return V=t.index,window.history.pushState(Nt(t),``,e.destination),e.entryId=t.id,t},Wt=e=>{let t={id:K(),index:V,scroll:jt(),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(W.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:K(),...n.requestOptions?{requestOptions:n.requestOptions}:{},...n.source?{source:n.source}:{}};if(n.preflight!==!1&&!X(`ui:navigate`,r,!0))return Promise.resolve();Vt(),B=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 _t(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=>{B?.requestId!==r.requestId&&!G.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(()=>{B?.requestId===r.requestId&&(B=null),W.has(r.requestId)||Rt(r)})},Yt=()=>{let e=J(window.history.state);e?V=e.index:Y({id:K(),index:0,scroll:q(),url:window.location.href}),`scrollRestoration`in window.history&&(window.history.scrollRestoration=`manual`)},Xt=()=>{if(J(window.history.state))return;let e={id:K(),index:V+1,scroll:q(),url:window.location.href};V=e.index,Y(e)},Zt=e=>{kt||(kt=!0,Yt(),Te(e=>!e||!W.has(e)),Ee((e,t)=>t.matches(`[data-ui-stream]`)&&!!(e&&(B?.requestId===e||G.has(e)))),wt(t=>{if(!t.navigation)return!1;if(W.has(t.requestId)||B?.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(`hashchange`,Xt),window.addEventListener(`popstate`,t=>{if(At){At=!1;return}let n=J(t.state);if(!n){Xt();return}let r=U.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=V;if(V=n.index,!X(`ui:navigate`,{controller:new AbortController,destination:a,entryId:n.id,history:!0,disposition:`replace`,requestId:K()},!0)){At=!0,window.history.go(o-n.index),V=o;return}Jt(e,a,{history:!0,preflight:!1,restoredState:i})}))},Qt=(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},$t=!1,en=!1,$={},tn=null,nn=(e,t={})=>{let{history:n,navigate:r=!1,...i}=t;if(!r)return yt(e,i);if(!tn)throw Error(`Trellis UI runtime has not been registered with Alpine.`);let{source:a,...o}=i;return Qt(tn,e,a,{...o,...n?{history:n}:{}})},rn=(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)},an={get:nn,post:rn(`post`,bt),put:rn(`put`,xt),delete:rn(`delete`,St),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}},on=()=>{en||(en=!0,document.addEventListener(`ui:request:start`,()=>{Q.activeRequests+=1}),document.addEventListener(`ui:request:finish`,()=>{Q.activeRequests=Math.max(0,Q.activeRequests-1)}))},sn=e=>{tn=e,$t||=(Q=e.reactive(Q),!0),on(),e.magic(`ui`,()=>an)},cn=e=>{$.motion=e},ln=e=>{$.sortable=e};export{Qt as a,_t as c,h as d,u as f,o as g,l as h,an as i,we as l,m,cn as n,Zt as o,d as p,ln as r,Ct as s,sn as t,ie as u};
4
+ //# sourceMappingURL=ui-DuGUQhxd.js.map