@vireo-ai/trellis-ui 0.1.40 → 0.1.41
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 +1 -1
- package/packages/client/types/components/common.d.ts +3 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +217 -217
- 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/sortable.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-VFYcNVM5.js → capability-motion-C_8mc71v.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-VFYcNVM5.js.map → capability-motion-C_8mc71v.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-Ds2wQEQq.js +3 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-Ds2wQEQq.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-BOd_thC-.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-Bmzg6DLB.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-Bmzg6DLB.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-LUzMUcng.js → entry.generated-51hjJ_lu.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-LUzMUcng.js.map → entry.generated-51hjJ_lu.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-C35Q-qoz.js → entry.generated-BLloDlP5.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-C35Q-qoz.js.map → entry.generated-BLloDlP5.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-UHQD4FyC.js → entry.generated-BO0EDjBb.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-UHQD4FyC.js.map → entry.generated-BO0EDjBb.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-2VgVfygk.js → entry.generated-BPZeXRC3.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-2VgVfygk.js.map → entry.generated-BPZeXRC3.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-D91HRlIV.js → entry.generated-BoOsILKj.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-D91HRlIV.js.map → entry.generated-BoOsILKj.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-C7Kas-N2.js → entry.generated-C1JdfrdC.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-C7Kas-N2.js.map → entry.generated-C1JdfrdC.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BVBXXN6t.js → entry.generated-C8pt5QeK.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BVBXXN6t.js.map → entry.generated-C8pt5QeK.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-bERshNT6.js → entry.generated-DJMDdEtO.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-bERshNT6.js.map → entry.generated-DJMDdEtO.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Cc5mRBBS.js → entry.generated-DjMJNzy1.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Cc5mRBBS.js.map → entry.generated-DjMJNzy1.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-B7ROYMLZ.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-B7ROYMLZ.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{motion-D44EkjK3.js → motion-BhADgUVd.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{motion-D44EkjK3.js.map → motion-BhADgUVd.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{ui-BWVDkV-D.js → ui-egQWc4ws.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{ui-BWVDkV-D.js.map → ui-egQWc4ws.js.map} +1 -1
- 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/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/dropdown.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/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/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/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/logical-entry-manifest.json +78 -78
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-BU1g9uTC.js +0 -3
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-BU1g9uTC.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-LsAXy99P.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-LsAXy99P.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-C5DAZC4R.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-C5DAZC4R.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import{t as e}from"./bridge-B4S_D6hV.js";import{a as t,n}from"./alpine-machine-BS13dbK4.js";import{n as r}from"./fragment-Bl3Rq38L.js";var i=(e,t)=>typeof t==`string`&&t?t:e.getAttribute(`data-ui-key`)||e.id||null,a=`data-ui-motion-key`,o=`data-ui-motion-layout`,s=e=>typeof e==`object`&&!!e&&Symbol.iterator in e,c=(e=document)=>typeof e==`string`?Array.from(document.querySelectorAll(e)):e instanceof Document||e instanceof Element?[e]:s(e)?Array.from(e):[document],l=(e=document,t={})=>{let n=c(e).filter(e=>e instanceof Element),r=[],s=(e,t,n)=>{r.push({element:e,attr:t,previous:e.getAttribute(t)}),e.setAttribute(t,n)};return n.forEach(e=>{(t.layout??!0)&&s(e,o,``);let n=i(e,t.key);n&&!e.hasAttribute(`data-ui-motion-key`)&&s(e,a,n)}),()=>{r.reverse().forEach(({element:e,attr:t,previous:n})=>{if(n===null){e.removeAttribute(t);return}e.setAttribute(t,n)})}},u=(e,...t)=>{typeof console<`u`&&console.warn(e,...t)},d=new WeakMap,f=(e,t)=>{let n=d.get(e)??new Set;return n.add(t),d.set(e,n),()=>{n.delete(t),n.size===0&&d.delete(e)}},p=e=>{let t=e;for(;t;){let e=d.get(t);if(e?.size)return Array.from(e);t=t.parentElement}return[]},m=`data-ui-preserve-attr`,ee=(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(m,Array.from(n).join(` `))},h=(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(m,Array.from(n).join(` `));for(let r of n)e.hasAttribute(r)?t.setAttribute(r,e.getAttribute(r)??``):t.removeAttribute(r)}},g=new Set,_=!1,v=null,y=null,b=null,te=Promise.resolve(),x=0,S=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))},ne=(e,t)=>t||e.getAttribute(`x-merge`)||`replace`,re=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)},E=(e,t,a)=>{let o=ne(t,a.mode);if(o===`remove`){t.remove();return}if(!a.html){u(`x-ui-stream: received patch with no html`);return}if(o===`morph`||o===`outer`){if(typeof e.morph==`function`){let r=new Set;e.morph(t,a.html,{key(e){return i(e)},updating(e,t,n,r){if(e instanceof Element&&y?.(a.requestId??null,e)){r?.();return}h(e,t)},updated(t){if(!(t instanceof Element))return;let i=n(e,t);i&&r.add(i),p(t).forEach(e=>{r.add(e)})}}),S(r);return}u(`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){u(`x-ui-stream: replace mode produced no element`);return}t.replaceWith(n),e.initTree(n);return}if(o===`update`){r(e,t,a.html);return}let s=C(a.html),c=Array.from(s.content.children).filter(e=>e instanceof HTMLElement);if(o===`append`){t.append(s.content),T(e,c);return}if(o===`prepend`){t.prepend(s.content),T(e,c);return}if(o===`before`){t.before(s.content),T(e,c);return}o===`after`&&(t.after(s.content),T(e,c))},D=(e,t)=>{let n=re(t);if(n){E(e,n,t);return}if(t.selector||t.target){u(`x-ui-stream: target not found`,t.selector??t.target);return}if(!t.html){u(`x-ui-stream: received patch with no html`);return}w(t.html).forEach(n=>{if(!n.id){u(`x-ui-stream: top-level element has no id, skipping`,n);return}let r=document.getElementById(n.id);r&&E(e,r,{...t,html:n.outerHTML})})},O=(t,n)=>{let r=Array.isArray(n)?n:[n],i=()=>{r.forEach(e=>D(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&&x===0){a();return}x+=1;let s=async()=>{o.length>0&&await e(o,t),a()};te=te.then(s,s).catch(()=>void 0).finally(()=>{--x})},k=e=>{b=e},A=e=>{document.dispatchEvent(new CustomEvent(e.event,{detail:e.detail??{},bubbles:!0,composed:!0}))},ie=e=>{let t=new Map;for(let n of e.data.split(`
|
|
2
2
|
`)){let e=n.indexOf(` `),r=e>0,i=r?n.slice(0,e):n;if(!r&&i!==`html`)return u(`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},j=(e,t)=>{let n=e.get(t);if(n?.length)return n.length>1&&u(`x-ui-stream: duplicate SSE command, using last value`,t),n.at(-1)},ae=(e,t)=>{let n=ie(t);if(!n||n.size===0)return;let r=j(n,`request-id`);if(v&&!v(r??null))return;let i,a=j(n,`assets`);if(a)try{let e=JSON.parse(a);if(!Array.isArray(e))throw TypeError(`assets must be an array`);i=e}catch{u(`x-ui-stream: invalid patch assets JSON`,a);return}O(e,{mode:j(n,`mode`)??`replace`,target:j(n,`target`)??null,selector:j(n,`selector`)??null,html:n.get(`html`)?.join(`
|
|
3
|
-
`)??null,requestId:r??null,viewTransition:j(n,`view-transition`)===`true`,...i?{assets:i}:{}})},oe=e=>{let n=ie(e);if(!n)return;let r=j(n,`request-id`);if(v&&!v(r??null))return;let i=j(n,`event`);if(!i){u(`x-ui-stream: dispatch SSE frame missing event`);return}let a=j(n,`detail`),o={};if(a)try{let e=JSON.parse(a);t(e)&&(o=e)}catch{u(`x-ui-stream: invalid dispatch detail JSON`,a);return}A({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)&&u(`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()}}},M=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,N=(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`,P=(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=P(t,n),i=null,a,o=null,s,c,l=!1,d=``,f=0,p=0,m=!1,h=!1,g=new Map,_=new Set,v=be(t),y=()=>!m&&(v||document.visibilityState===`visible`),b=()=>{window.clearTimeout(s),s=void 0},te=()=>{t.dispatchEvent(new CustomEvent(`ui:stream:resumed`,{bubbles:!0,composed:!0}))},x=a=>{i?.abort(),b();let o=++f;r=P(t,n),N(t,`connecting`),i=de(e,n,t.dataset.uiStreamScopes,a,{lastEventId:d,open:()=>{if(o!==f)return;let e=l;l=!0,p=0,N(t,`open`),e&&te()},disconnected:()=>{if(o!==f||h||(i=null,A.controller=null,N(t,`disconnected`),!y()))return;let e=Math.min(_e*2**p,ve);p+=1;let n=Math.floor(Math.random()*e);s=window.setTimeout(()=>{s=void 0,T()},n)},reset:e=>N(t,`reset`,{data:e}),eventId:e=>{o===f&&(d=e)},error:e=>{o!==f||h||(m=!0,i=null,A.controller=null,b(),N(t,`error`,{data:e}))}}),A.controller=i,A.configuration=r,S()},S=()=>{if(window.clearTimeout(a),a=void 0,!y())return;let e=Number(t.dataset.uiStreamClientExpires);if(!Number.isFinite(e)||e<=0)return;let n=e-Date.now()-me;if(n<=0){w();return}a=window.setTimeout(()=>void w(),n)},C=()=>{if(h)return Promise.resolve(null);if(o)return o;let e=t.dataset.uiStreamClientRefresh;return e?(o=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 h?null:(t.dataset.uiStreamClient=n.token,t.dataset.uiStreamClientExpires=String(n.expiresAt),n.token)}).catch(e=>{u(`x-ui-stream: could not refresh ClientSession`,e);let n=Number(t.dataset.uiStreamClientExpires);return!Number.isFinite(n)||n<=Date.now()?(N(t,`error`,{error:e}),null):(y()&&(a=window.setTimeout(()=>void w(),5e3)),t.dataset.uiStreamClient??null)}).finally(()=>{o=null}),o):(N(t,`error`,{reason:`missing-refresh-url`}),Promise.resolve(null))},w=async()=>{if(!y())return;let e=await C();e&&y()&&!h&&x(e)},T=async()=>{if(h||!y()||i)return;let e=Number(t.dataset.uiStreamClientExpires),n=t.dataset.uiStreamClient??``,r=Number.isFinite(e)&&e>0&&e-Date.now()<=me?await C():n;r&&y()&&!h&&!i&&x(r)},ne=()=>{c=void 0,!(h||v||document.visibilityState!==`hidden`)&&(_.size>0||(g.forEach(e=>e.abort(`Document suspended`)),g.clear(),window.clearTimeout(a),a=void 0,b(),i?.abort(),i=null,N(t,`suspended`),A.controller=null))},re=e=>{window.clearTimeout(c),c=void 0,!(v||document.visibilityState!==`hidden`)&&(c=window.setTimeout(ne,e))},E=()=>{m||w()},D=e=>{let t=xe(e);if(t){if(t.method===`GET`){g.set(t.requestId,t.controller);return}_.add(t.requestId),document.visibilityState===`hidden`&&!v&&(window.clearTimeout(c),c=void 0)}},O=e=>{let t=xe(e);if(t){if(t.method===`GET`){g.delete(t.requestId);return}_.delete(t.requestId),document.visibilityState===`hidden`&&!v&&_.size===0&&re(ge)}},k=()=>{if(!(v||m)){if(document.visibilityState===`hidden`){if(_.size>0)return;re(he);return}window.clearTimeout(c),c=void 0,i||T()}},A={configuration:r,controller:null,element:t,dispose(){h||(h=!0,window.clearTimeout(a),window.clearTimeout(c),b(),t.removeEventListener(`ui:stream:refresh`,E),document.removeEventListener(`visibilitychange`,k),document.removeEventListener(`ui:request:start`,D),document.removeEventListener(`ui:request:finish`,O),i?.abort())},rescheduleRefresh:S};return ee(t,`data-ui-stream-state`),t.addEventListener(`ui:stream:refresh`,E),document.addEventListener(`visibilitychange`,k),document.addEventListener(`ui:request:start`,D),document.addEventListener(`ui:request:finish`,O),y()?T():N(t,`suspended`),A},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){u(`x-ui-stream: missing signed ClientSession capability`);return}let a=pe(t),o=M.get(a),s=P(t,n);if(o?.configuration===s){t.dataset.uiStreamState=o.element.dataset.uiStreamState??`connecting`,ee(t,`data-ui-stream-state`),queueMicrotask(()=>o.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=M.get(a),i=P(t,n);if(r?.configuration===i){r.rescheduleRefresh();return}r?.dispose(),M.set(a,Se(e,t,n))}));return}o?.dispose(),M.set(a,Se(e,t,n)),r(()=>{let e=M.get(a);e?.element===t&&(e.dispose(),M.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`,F=`[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`,Re=`application/x-www-form-urlencoded`,ze=`multipart/form-data`,Be=new Set([`GET`]),Ve=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(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`,Re),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||Re,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:Re},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 Be.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===ze)?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}),I=(e,t,n,r)=>at(t).dispatchEvent(ot(e,n,r)),L=new WeakMap,st=e=>{if(!e)return;let t=L.get(e)??0;L.set(e,t+1),e.setAttribute(`aria-busy`,`true`),e.setAttribute(Le,`true`)},ct=e=>{if(!e)return;let t=(L.get(e)??1)-1;if(t>0){L.set(e,t);return}L.delete(e),e.removeAttribute(`aria-busy`),e.removeAttribute(Le)},lt=e=>e.headers.get(`Content-Type`)?.toLowerCase().includes(Ie)??!1,ut=async e=>{let t=e.headers.get(ke);if(t){let n=e.headers.get(Ae)??`auto`;return n!==`auto`&&n!==`push`&&n!==`replace`?(u(`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}):(u(`x-ui-request: expected an empty response`,e),{response:e,type:`other`,url:e.url})},dt=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},ft=()=>{let e=document.querySelector(F),t=e?R(e):null;return!e||!t||e.dataset.uiStreamState!==`open`?null:{token:t}},pt=e=>{let t=Number(e.dataset.uiStreamTimeout);return Number.isFinite(t)&&t>=0?t:5e3},mt=e=>{let t=document.querySelector(F),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=dt.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=R(t);n(e?{token:e}:null)},i=()=>n(null),a=window.setTimeout(i,pt(t));t.addEventListener(je,r,{once:!0}),t.addEventListener(Me,i,{once:!0}),t.addEventListener(Ne,i,{once:!0})}).finally(()=>{dt.delete(t)});return r||dt.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)})})},ht=async e=>{let t=ft();if(t)return t;let n=document.querySelector(F);if(!n)return null;if(!R(n)){n.dispatchEvent(new CustomEvent(Pe));let e=ft();if(e)return e}return mt(e)},gt=(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)}},_t=(e,t)=>t.aborted||e instanceof DOMException&&e.name===`AbortError`||e instanceof Error&&e.name===`AbortError`,vt=async(e,t,n={})=>{let r=n.source,i=new AbortController,a=n.requestId??crypto.randomUUID(),o=it(t,n),s=gt(i,n.signal),c=s.signal;o.init.signal=c,o.init.headers.set(Oe,a);let l=ft()??await ht(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(!I(`ui:request:before`,r,u,{cancelable:!0}))return s.cleanup(),{requestId:a,response:null,type:`cancelled`,url:o.url.toString()};st(r),I(`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`?I(`ui:request:success`,r,u):I(`ui:request:error`,r,u);let n={...t,requestId:a};return n.navigation&&He?.(n),n}catch(e){if(_t(e,c))return u.responseType=`aborted`,{requestId:a,response:null,type:`aborted`,url:o.url.toString()};throw u.error=e,I(`ui:request:error`,r,u),e}finally{s.cleanup(),ct(r),I(`ui:request:finish`,r,u)}},yt=()=>{if(!Ve)throw Error(`Trellis request runtime has not been registered with Alpine.`);return Ve},z=(e,t={})=>vt(yt(),e,t),bt=(e,t={})=>z(e,{...t,method:`GET`}),xt=(e,t={})=>z(e,{...t,method:`POST`}),St=(e,t={})=>z(e,{...t,method:`PUT`}),Ct=(e,t={})=>z(e,{...t,method:`DELETE`}),wt=e=>{Ve=e},Tt=e=>{He=e},Et=`__trellis`,Dt=`[data-ui-scroll-restoration]`,Ot=20,kt=100,At=!1,B=null,V=0,H=!1,U=null,W=new Map,G=new Set,K=new Map,q=()=>crypto.randomUUID(),jt=()=>({containers:{},window:{x:0,y:0}}),Mt=e=>e.getAttribute(`data-ui-scroll-restoration`)?.trim()||e.id||null,Nt=()=>{let e={};return document.querySelectorAll(Dt).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[Et];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},Pt=e=>{let n=t(window.history.state)?window.history.state:{},r=t(n.__trellis)?n[Et]:{};return{...n,[Et]:{...r,navigate:e}}},Y=(e,t=e.url)=>{window.history.replaceState(Pt(e),``,t)},Ft=()=>{let e=J(window.history.state);if(!e)return;let t=Nt();W.set(e.id,t),Y({...e,scroll:t})},It=()=>{U!==null&&(cancelAnimationFrame(U),U=null),Ft()},Lt=()=>{let e=J(window.history.state);e&&(W.set(e.id,Nt()),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})})))},Rt=e=>{requestAnimationFrame(()=>{window.scrollTo({left:e.window.x,top:e.window.y,behavior:`instant`}),document.querySelectorAll(Dt).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}}))},zt=e=>{for(K.set(e.requestId,e);K.size>Ot;){let e=K.keys().next().value;if(!e)break;K.delete(e)}},Bt=e=>{for(G.add(e);G.size>kt;){let e=G.values().next().value;if(!e)break;G.delete(e)}},Vt=()=>{B&&=(Bt(B.requestId),B.controller.abort(`Superseded by a newer Trellis navigation`),null)},Ht=()=>{Vt(),K.forEach(e=>Bt(e.requestId)),K.clear()},Z=e=>{window.location.assign(e.href)},Ut=e=>{let t=new URL(e,document.baseURI);return t.origin===window.location.origin?t:null},Wt=e=>{It();let t={id:q(),index:V+1,scroll:jt(),url:e.destination.href};return V=t.index,window.history.pushState(Pt(t),``,e.destination),e.entryId=t.id,t},Gt=e=>{let t={id:q(),index:V,scroll:jt(),url:e.destination.href};return Y(t,e.destination),e.entryId=t.id,t},Kt=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},qt=(e,t)=>{t?.type===`aborted`||t?.type===`cancelled`||t?.type===`redirect`||Z(e.destination)},Jt=(e,t,n)=>{if(G.has(e.requestId))return;if(t.type!==`empty`){qt(e,t);return}let r=n??(Kt(e)?Gt(e):Wt(e));if(n&&e.destination.href!==n.url){let t={...n,url:e.destination.href};Y(t,e.destination),e.entryId=t.id}Rt(r.scroll),X(`ui:navigated`,e)},Yt=(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();Ht(),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 vt(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=Ut(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&&!K.has(r.requestId)||Jt(r,e,n.restoredState)}).catch(e=>{r.controller.signal.aborted||(u(`x-ui-request.navigate: restoration failed`,e),qt(r))}).finally(()=>{B?.requestId===r.requestId&&(B=null),G.has(r.requestId)||zt(r)})},Xt=()=>{let e=J(window.history.state);e?V=e.index:Y({id:q(),index:0,scroll:Nt(),url:window.location.href}),`scrollRestoration`in window.history&&(window.history.scrollRestoration=`manual`)},Zt=e=>{At||(At=!0,Xt(),we(e=>!e||!G.has(e)),Te((e,t)=>t.matches(`[data-ui-stream]`)&&!!(e&&(B?.requestId===e||K.has(e)))),Tt(t=>{if(!t.navigation)return!1;if(G.has(t.requestId)||B?.requestId===t.requestId)return!0;let n=Ut(t.navigation.url);return n?(Yt(e,n,{history:!1,disposition:t.navigation.history}),!0):(Z(new URL(t.navigation.url,document.baseURI)),!0)}),window.addEventListener(`scroll`,Lt,{passive:!0}),document.addEventListener(`scroll`,Lt,{capture:!0,passive:!0}),window.addEventListener(`pagehide`,It),window.addEventListener(`popstate`,t=>{if(H){H=!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=Ut(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:q()},!0)){H=!0,window.history.go(o-n.index),V=o;return}Yt(e,a,{history:!0,preflight:!1,restoredState:i})}))},Qt=(e,t,n,r)=>{let{history:i=`auto`,...a}=r??{};return Yt(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 bt(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&&u(`$ui.${e}: navigate is only supported for GET requests`),t(n,a)},an={get:nn,post:rn(`post`,xt),put:rn(`put`,St),delete:rn(`delete`,Ct),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,vt as c,ee as d,f,l as g,o as h,an as i,Ce as l,a as m,cn as n,Zt as o,u as p,ln as r,wt as s,sn as t,k as u};
|
|
4
|
-
//# sourceMappingURL=ui-
|
|
3
|
+
`)??null,requestId:r??null,viewTransition:j(n,`view-transition`)===`true`,...i?{assets:i}:{}})},oe=e=>{let n=ie(e);if(!n)return;let r=j(n,`request-id`);if(v&&!v(r??null))return;let i=j(n,`event`);if(!i){u(`x-ui-stream: dispatch SSE frame missing event`);return}let a=j(n,`detail`),o={};if(a)try{let e=JSON.parse(a);t(e)&&(o=e)}catch{u(`x-ui-stream: invalid dispatch detail JSON`,a);return}A({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)&&u(`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()}}},M=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,N=(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`,P=(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=P(t,n),i=null,a,o=null,s,c,l=!1,d=``,f=0,p=0,m=!1,h=!1,g=new Map,_=new Set,v=be(t),y=()=>!m&&(v||document.visibilityState===`visible`),b=()=>{window.clearTimeout(s),s=void 0},te=()=>{t.dispatchEvent(new CustomEvent(`ui:stream:resumed`,{bubbles:!0,composed:!0}))},x=a=>{i?.abort(),b();let o=++f;r=P(t,n),N(t,`connecting`),i=de(e,n,t.dataset.uiStreamScopes,a,{lastEventId:d,open:()=>{if(o!==f)return;let e=l;l=!0,p=0,N(t,`open`),e&&te()},disconnected:()=>{if(o!==f||h||(i=null,A.controller=null,N(t,`disconnected`),!y()))return;let e=Math.min(_e*2**p,ve);p+=1;let n=Math.floor(Math.random()*e);s=window.setTimeout(()=>{s=void 0,T()},n)},reset:e=>N(t,`reset`,{data:e}),eventId:e=>{o===f&&(d=e)},error:e=>{o!==f||h||(m=!0,i=null,A.controller=null,b(),N(t,`error`,{data:e}))}}),A.controller=i,A.configuration=r,S()},S=()=>{if(window.clearTimeout(a),a=void 0,!y())return;let e=Number(t.dataset.uiStreamClientExpires);if(!Number.isFinite(e)||e<=0)return;let n=e-Date.now()-me;if(n<=0){w();return}a=window.setTimeout(()=>void w(),n)},C=()=>{if(h)return Promise.resolve(null);if(o)return o;let e=t.dataset.uiStreamClientRefresh;return e?(o=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 h?null:(t.dataset.uiStreamClient=n.token,t.dataset.uiStreamClientExpires=String(n.expiresAt),n.token)}).catch(e=>{u(`x-ui-stream: could not refresh ClientSession`,e);let n=Number(t.dataset.uiStreamClientExpires);return!Number.isFinite(n)||n<=Date.now()?(N(t,`error`,{error:e}),null):(y()&&(a=window.setTimeout(()=>void w(),5e3)),t.dataset.uiStreamClient??null)}).finally(()=>{o=null}),o):(N(t,`error`,{reason:`missing-refresh-url`}),Promise.resolve(null))},w=async()=>{if(!y())return;let e=await C();e&&y()&&!h&&x(e)},T=async()=>{if(h||!y()||i)return;let e=Number(t.dataset.uiStreamClientExpires),n=t.dataset.uiStreamClient??``,r=Number.isFinite(e)&&e>0&&e-Date.now()<=me?await C():n;r&&y()&&!h&&!i&&x(r)},ne=()=>{c=void 0,!(h||v||document.visibilityState!==`hidden`)&&(_.size>0||(g.forEach(e=>e.abort(`Document suspended`)),g.clear(),window.clearTimeout(a),a=void 0,b(),i?.abort(),i=null,N(t,`suspended`),A.controller=null))},re=e=>{window.clearTimeout(c),c=void 0,!(v||document.visibilityState!==`hidden`)&&(c=window.setTimeout(ne,e))},E=()=>{m||w()},D=e=>{let t=xe(e);if(t){if(t.method===`GET`){g.set(t.requestId,t.controller);return}_.add(t.requestId),document.visibilityState===`hidden`&&!v&&(window.clearTimeout(c),c=void 0)}},O=e=>{let t=xe(e);if(t){if(t.method===`GET`){g.delete(t.requestId);return}_.delete(t.requestId),document.visibilityState===`hidden`&&!v&&_.size===0&&re(ge)}},k=()=>{if(!(v||m)){if(document.visibilityState===`hidden`){if(_.size>0)return;re(he);return}window.clearTimeout(c),c=void 0,i||T()}},A={configuration:r,controller:null,element:t,dispose(){h||(h=!0,window.clearTimeout(a),window.clearTimeout(c),b(),t.removeEventListener(`ui:stream:refresh`,E),document.removeEventListener(`visibilitychange`,k),document.removeEventListener(`ui:request:start`,D),document.removeEventListener(`ui:request:finish`,O),i?.abort())},rescheduleRefresh:S};return ee(t,`data-ui-stream-state`),t.addEventListener(`ui:stream:refresh`,E),document.addEventListener(`visibilitychange`,k),document.addEventListener(`ui:request:start`,D),document.addEventListener(`ui:request:finish`,O),y()?T():N(t,`suspended`),A},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){u(`x-ui-stream: missing signed ClientSession capability`);return}let a=pe(t),o=M.get(a),s=P(t,n);if(o?.configuration===s){t.dataset.uiStreamState=o.element.dataset.uiStreamState??`connecting`,ee(t,`data-ui-stream-state`),queueMicrotask(()=>o.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=M.get(a),i=P(t,n);if(r?.configuration===i){r.rescheduleRefresh();return}r?.dispose(),M.set(a,Se(e,t,n))}));return}o?.dispose(),M.set(a,Se(e,t,n)),r(()=>{let e=M.get(a);e?.element===t&&(e.dispose(),M.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`,F=`[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`,Re=`application/x-www-form-urlencoded`,ze=`multipart/form-data`,Be=new Set([`GET`]),Ve=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(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`,Re),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||Re,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:Re},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 Be.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===ze)?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}),I=(e,t,n,r)=>at(t).dispatchEvent(ot(e,n,r)),L=new WeakMap,st=e=>{if(!e)return;let t=L.get(e)??0;L.set(e,t+1),e.setAttribute(`aria-busy`,`true`),e.setAttribute(Le,`true`)},ct=e=>{if(!e)return;let t=(L.get(e)??1)-1;if(t>0){L.set(e,t);return}L.delete(e),e.removeAttribute(`aria-busy`),e.removeAttribute(Le)},lt=e=>e.headers.get(`Content-Type`)?.toLowerCase().includes(Ie)??!1,ut=async e=>{let t=e.headers.get(ke);if(t){let n=e.headers.get(Ae)??`auto`;return n!==`auto`&&n!==`push`&&n!==`replace`?(u(`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}):(u(`x-ui-request: expected an empty response`,e),{response:e,type:`other`,url:e.url})},dt=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},ft=()=>{let e=document.querySelector(F),t=e?R(e):null;return!e||!t||e.dataset.uiStreamState!==`open`?null:{token:t}},pt=e=>{let t=Number(e.dataset.uiStreamTimeout);return Number.isFinite(t)&&t>=0?t:5e3},mt=e=>{let t=document.querySelector(F),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=dt.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=R(t);n(e?{token:e}:null)},i=()=>n(null),a=window.setTimeout(i,pt(t));t.addEventListener(je,r,{once:!0}),t.addEventListener(Me,i,{once:!0}),t.addEventListener(Ne,i,{once:!0})}).finally(()=>{dt.delete(t)});return r||dt.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)})})},ht=async e=>{let t=ft();if(t)return t;let n=document.querySelector(F);if(!n)return null;if(!R(n)){n.dispatchEvent(new CustomEvent(Pe));let e=ft();if(e)return e}return mt(e)},gt=(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)}},_t=(e,t)=>t.aborted||e instanceof DOMException&&e.name===`AbortError`||e instanceof Error&&e.name===`AbortError`,vt=async(e,t,n={})=>{let r=n.source,i=new AbortController,a=n.requestId??crypto.randomUUID(),o=it(t,n),s=gt(i,n.signal),c=s.signal;o.init.signal=c,o.init.headers.set(Oe,a);let l=ft()??await ht(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(!I(`ui:request:before`,r,u,{cancelable:!0}))return s.cleanup(),{requestId:a,response:null,type:`cancelled`,url:o.url.toString()};st(r),I(`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`?I(`ui:request:success`,r,u):I(`ui:request:error`,r,u);let n={...t,requestId:a};return n.navigation&&He?.(n),n}catch(e){if(_t(e,c))return u.responseType=`aborted`,{requestId:a,response:null,type:`aborted`,url:o.url.toString()};throw u.error=e,I(`ui:request:error`,r,u),e}finally{s.cleanup(),ct(r),I(`ui:request:finish`,r,u)}},yt=()=>{if(!Ve)throw Error(`Trellis request runtime has not been registered with Alpine.`);return Ve},z=(e,t={})=>vt(yt(),e,t),bt=(e,t={})=>z(e,{...t,method:`GET`}),xt=(e,t={})=>z(e,{...t,method:`POST`}),St=(e,t={})=>z(e,{...t,method:`PUT`}),Ct=(e,t={})=>z(e,{...t,method:`DELETE`}),wt=e=>{Ve=e},Tt=e=>{He=e},Et=`__trellis`,Dt=`[data-ui-scroll-restoration]`,Ot=20,kt=100,At=!1,B=null,V=0,H=!1,U=null,W=new Map,G=new Set,K=new Map,q=()=>crypto.randomUUID(),jt=()=>({containers:{},window:{x:0,y:0}}),Mt=e=>e.getAttribute(`data-ui-scroll-restoration`)?.trim()||e.id||null,Nt=()=>{let e={};return document.querySelectorAll(Dt).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[Et];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},Pt=e=>{let n=t(window.history.state)?window.history.state:{},r=t(n.__trellis)?n[Et]:{};return{...n,[Et]:{...r,navigate:e}}},Y=(e,t=e.url)=>{window.history.replaceState(Pt(e),``,t)},Ft=()=>{let e=J(window.history.state);if(!e)return;let t=Nt();W.set(e.id,t),Y({...e,scroll:t})},It=()=>{U!==null&&(cancelAnimationFrame(U),U=null),Ft()},Lt=()=>{let e=J(window.history.state);e&&(W.set(e.id,Nt()),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})})))},Rt=e=>{requestAnimationFrame(()=>{window.scrollTo({left:e.window.x,top:e.window.y,behavior:`instant`}),document.querySelectorAll(Dt).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}}))},zt=e=>{for(K.set(e.requestId,e);K.size>Ot;){let e=K.keys().next().value;if(!e)break;K.delete(e)}},Bt=e=>{for(G.add(e);G.size>kt;){let e=G.values().next().value;if(!e)break;G.delete(e)}},Vt=()=>{B&&=(Bt(B.requestId),B.controller.abort(`Superseded by a newer Trellis navigation`),null)},Ht=()=>{Vt(),K.forEach(e=>Bt(e.requestId)),K.clear()},Z=e=>{window.location.assign(e.href)},Ut=e=>{let t=new URL(e,document.baseURI);return t.origin===window.location.origin?t:null},Wt=e=>{It();let t={id:q(),index:V+1,scroll:jt(),url:e.destination.href};return V=t.index,window.history.pushState(Pt(t),``,e.destination),e.entryId=t.id,t},Gt=e=>{let t={id:q(),index:V,scroll:jt(),url:e.destination.href};return Y(t,e.destination),e.entryId=t.id,t},Kt=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},qt=(e,t)=>{t?.type===`aborted`||t?.type===`cancelled`||t?.type===`redirect`||Z(e.destination)},Jt=(e,t,n)=>{if(G.has(e.requestId))return;if(t.type!==`empty`){qt(e,t);return}let r=n??(Kt(e)?Gt(e):Wt(e));if(n&&e.destination.href!==n.url){let t={...n,url:e.destination.href};Y(t,e.destination),e.entryId=t.id}Rt(r.scroll),X(`ui:navigated`,e)},Yt=(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();Ht(),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 vt(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=Ut(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&&!K.has(r.requestId)||Jt(r,e,n.restoredState)}).catch(e=>{r.controller.signal.aborted||(u(`x-ui-request.navigate: restoration failed`,e),qt(r))}).finally(()=>{B?.requestId===r.requestId&&(B=null),G.has(r.requestId)||zt(r)})},Xt=()=>{let e=J(window.history.state);e?V=e.index:Y({id:q(),index:0,scroll:Nt(),url:window.location.href}),`scrollRestoration`in window.history&&(window.history.scrollRestoration=`manual`)},Zt=e=>{At||(At=!0,Xt(),we(e=>!e||!G.has(e)),Te((e,t)=>t.matches(`[data-ui-stream]`)&&!!(e&&(B?.requestId===e||K.has(e)))),Tt(t=>{if(!t.navigation)return!1;if(G.has(t.requestId)||B?.requestId===t.requestId)return!0;let n=Ut(t.navigation.url);return n?(Yt(e,n,{history:!1,disposition:t.navigation.history}),!0):(Z(new URL(t.navigation.url,document.baseURI)),!0)}),window.addEventListener(`scroll`,Lt,{passive:!0}),document.addEventListener(`scroll`,Lt,{capture:!0,passive:!0}),window.addEventListener(`pagehide`,It),window.addEventListener(`popstate`,t=>{if(H){H=!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=Ut(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:q()},!0)){H=!0,window.history.go(o-n.index),V=o;return}Yt(e,a,{history:!0,preflight:!1,restoredState:i})}))},Qt=(e,t,n,r)=>{let{history:i=`auto`,...a}=r??{};return Yt(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 bt(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&&u(`$ui.${e}: navigate is only supported for GET requests`),t(n,a)},an={get:nn,post:rn(`post`,xt),put:rn(`put`,St),delete:rn(`delete`,Ct),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{i as _,Qt as a,vt as c,ee as d,f,l as g,o as h,an as i,Ce as l,a as m,cn as n,Zt as o,u as p,ln as r,wt as s,sn as t,k as u};
|
|
4
|
+
//# sourceMappingURL=ui-egQWc4ws.js.map
|