@vireo-ai/trellis-ui 0.1.21 → 0.1.23
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 +37 -11
- package/packages/client/types/assets/bridge.d.ts +27 -0
- package/packages/client/types/assets/full-runtime.generated.d.ts +2 -0
- package/packages/client/types/capabilities/calendar.d.ts +3 -0
- package/packages/client/types/capabilities/motion.d.ts +5 -0
- package/packages/client/types/capabilities/resizable.d.ts +5 -0
- package/packages/client/types/capabilities/sortable.d.ts +6 -0
- package/packages/client/types/components/accordion/entry.generated.d.ts +5 -0
- package/packages/client/types/components/app/contract.d.ts +8 -8
- package/packages/client/types/components/badge/contract.d.ts +2 -2
- package/packages/client/types/components/box/contract.d.ts +9 -9
- package/packages/client/types/components/button/contract.d.ts +3 -3
- package/packages/client/types/components/button/entry.generated.d.ts +4 -0
- package/packages/client/types/components/card/contract.d.ts +3 -3
- package/packages/client/types/components/checkbox/entry.generated.d.ts +5 -0
- package/packages/client/types/components/container/contract.d.ts +5 -5
- package/packages/client/types/components/date-picker/contract.d.ts +6 -6
- package/packages/client/types/components/date-picker/entry.generated.d.ts +5 -0
- package/packages/client/types/components/date-picker/index.d.ts +0 -1
- package/packages/client/types/components/date-picker/machine.d.ts +40 -40
- package/packages/client/types/components/dropdown/contract.d.ts +2 -2
- package/packages/client/types/components/dropdown/entry.generated.d.ts +5 -0
- package/packages/client/types/components/dropdown/machine.d.ts +8 -8
- package/packages/client/types/components/entry.generated.d.ts +28 -0
- package/packages/client/types/components/field/entry.generated.d.ts +5 -0
- package/packages/client/types/components/file-upload/contract.d.ts +1 -1
- package/packages/client/types/components/file-upload/entry.generated.d.ts +5 -0
- package/packages/client/types/components/file-upload/machine.d.ts +2 -2
- package/packages/client/types/components/flex/contract.d.ts +7 -7
- package/packages/client/types/components/frame/contract.d.ts +6 -6
- package/packages/client/types/components/grid/contract.d.ts +11 -11
- package/packages/client/types/components/image/contract.d.ts +2 -2
- package/packages/client/types/components/input/entry.generated.d.ts +5 -0
- package/packages/client/types/components/layout.d.ts +6 -6
- package/packages/client/types/components/menu/contract.d.ts +3 -3
- package/packages/client/types/components/modal/contract.d.ts +3 -3
- package/packages/client/types/components/modal/entry.generated.d.ts +5 -0
- package/packages/client/types/components/modal/machine.d.ts +12 -12
- package/packages/client/types/components/panels/contract.d.ts +1 -1
- package/packages/client/types/components/panels/entry.generated.d.ts +5 -0
- package/packages/client/types/components/radio/entry.generated.d.ts +5 -0
- package/packages/client/types/components/scroll-area/entry.generated.d.ts +5 -0
- package/packages/client/types/components/section/contract.d.ts +4 -4
- package/packages/client/types/components/select/contract.d.ts +4 -4
- package/packages/client/types/components/select/entry.generated.d.ts +5 -0
- package/packages/client/types/components/select/machine.d.ts +32 -32
- package/packages/client/types/components/sidebar/contract.d.ts +5 -5
- package/packages/client/types/components/sidebar/entry.generated.d.ts +5 -0
- package/packages/client/types/components/sidebar/index.d.ts +1 -1
- package/packages/client/types/components/slider/entry.generated.d.ts +5 -0
- package/packages/client/types/components/stack/contract.d.ts +7 -7
- package/packages/client/types/components/switch/entry.generated.d.ts +5 -0
- package/packages/client/types/components/table/contract.d.ts +9 -9
- package/packages/client/types/components/table/entry.generated.d.ts +5 -0
- package/packages/client/types/components/tabs/contract.d.ts +1 -1
- package/packages/client/types/components/tabs/entry.generated.d.ts +5 -0
- package/packages/client/types/components/tabs/machine.d.ts +2 -2
- package/packages/client/types/components/toast/contract.d.ts +2 -2
- package/packages/client/types/components/toast/entry.generated.d.ts +5 -0
- package/packages/client/types/components/toast/machine.d.ts +8 -8
- package/packages/client/types/core.d.ts +10 -0
- package/packages/client/types/directives/sortable.d.ts +1 -1
- package/packages/client/types/index.d.ts +3 -11
- package/packages/client/types/motion/animate.d.ts +1 -1
- package/packages/client/types/motion/controller.d.ts +1 -1
- package/packages/client/types/motion/index.d.ts +1 -1
- package/packages/client/types/motion/owned.d.ts +1 -1
- package/packages/client/types/motion/plan.d.ts +1 -1
- package/packages/client/types/motion/recipe.d.ts +1 -1
- package/packages/client/types/motion/reduced-motion.d.ts +1 -1
- package/packages/client/types/motion/targets.d.ts +1 -6
- package/packages/client/types/motion/view.d.ts +1 -1
- package/packages/client/types/runtime/engine/stream.d.ts +9 -3
- package/packages/client/types/runtime/layout-participant.d.ts +9 -0
- package/packages/client/types/runtime/ui.d.ts +10 -4
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +1268 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/anchored-popover-BXEMsLrA.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/anchored-popover-BXEMsLrA.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-B4S_D6hV.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-B4S_D6hV.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cally-Z6G-rzr-.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cally-Z6G-rzr-.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/codecs-Cb1ns_47.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/codecs-Cb1ns_47.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-CtNDGKcQ.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-CtNDGKcQ.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-DAxHCzB-.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-DAxHCzB-.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controlled-open-Hy4-OT-6.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controlled-open-Hy4-OT-6.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-DjoX4J-6.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-DjoX4J-6.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-BROE-Ln2.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-BROE-Ln2.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dom-qAeVl7dc.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dom-qAeVl7dc.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/element-adapter-native-data-key-CW8suC9A.js +6 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/element-adapter-native-data-key-CW8suC9A.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-5kNpQFGr.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-5kNpQFGr.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B85L90Qp.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B85L90Qp.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BGCM6LAW.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BGCM6LAW.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bc-uE56r.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bc-uE56r.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C-lyYGbo.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C-lyYGbo.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C6ldtrmy.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C6ldtrmy.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CPWoMIwn.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CPWoMIwn.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Co0bLLZE.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Co0bLLZE.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CtyXH8zf.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CtyXH8zf.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DGrOItIx.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DGrOItIx.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DHMRhcYF.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DHMRhcYF.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-De12QrT5.js +3 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-De12QrT5.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DgmqZx_W.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DgmqZx_W.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Dn6MRCe0.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Dn6MRCe0.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DoOgk6l4.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DoOgk6l4.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DxUOcPkU.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DxUOcPkU.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DyIjCOhT.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DyIjCOhT.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-K6qKowpw.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-K6qKowpw.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oAIExc1V.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oAIExc1V.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xcXw-cEl.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xcXw-cEl.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-DtaPVNl5.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-DtaPVNl5.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/form-control-BkVb2Qed.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/form-control-BkVb2Qed.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CX3wFSoV.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CX3wFSoV.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/merge-bindings-C8ewA_FD.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/merge-bindings-C8ewA_FD.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-Bpttk6iZ.js +3 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-Bpttk6iZ.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/number-BCZdoG0B.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/number-BCZdoG0B.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/props-change-2xfsIAEN.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/props-change-2xfsIAEN.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resizable-BixtYF9M.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resizable-BixtYF9M.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/scroll-lock-DOw7dmi1.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/scroll-lock-DOw7dmi1.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/semantic-observer-9VxzbQBi.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/semantic-observer-9VxzbQBi.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/styles-TfvwVPGw.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/styles-TfvwVPGw.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-xTjuF3uC.js +4 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-xTjuF3uC.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +1 -22146
- 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 +395 -0
- 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
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=e=>e.replace(/([A-Z])/g,`-$1`).toLowerCase(),t=t=>`data-${e(t)}`,n=(e,t)=>t.meta.attribute??e,r=(e,r)=>t(n(e,r)),i=e=>e.replace(/([A-Z])/g,`-$1`).toLowerCase().replace(/[\s_]+/g,`-`),a=e=>e.replace(/[-_\s]+([a-z])/g,(e,t)=>t.toUpperCase()),o=e=>e.replace(/([A-Z])/g,`_$1`).toLowerCase().replace(/[\s-]+/g,`_`),s=(e,n)=>e.getAttribute(t(n))??void 0,c=(e,n)=>e.hasAttribute(t(n)),l=(e,t,n)=>Math.min(n,Math.max(t,e)),u=(e,t)=>Number.isFinite(t)&&t>0?Math.round(e/t)*t:e,d=(e,t,n,r=1)=>l(u(e,r),t,n),f=(e,t)=>(Object.defineProperty(e,"meta",{value:Object.freeze(t),enumerable:!1}),e),p=(e,t)=>f((n=>e(n,t)),{...e.meta,attribute:t});function m(e,t,n=`default`){let r=((r,i)=>{let a=s(r,i);return a===void 0||a===``&&n==="default"?t:e.reduce((e,t)=>t(e),a)});return Object.defineProperties(r,{trim:{get:()=>m([...e,e=>e.trim()],t,n)},lower:{get:()=>m([...e,e=>e.toLowerCase()],t,n)},upper:{get:()=>m([...e,e=>e.toUpperCase()],t,n)},kebab:{get:()=>m([...e,i],t,n)},camel:{get:()=>m([...e,a],t,n)},snake:{get:()=>m([...e,o],t,n)},default:{value:t=>m(e,t,n)},emptyAsValue:{get:()=>m(e,t,`value`)},emptyAsDefault:{get:()=>m(e,t,`default`)},maxLength:{value:r=>m([...e,e=>e.slice(0,r)],t,n)},prefix:{value:r=>m([...e,e=>e.startsWith(r)?e:`${r}${e}`],t,n)},suffix:{value:r=>m([...e,e=>e.endsWith(r)?e:`${e}${r}`],t,n)}}),f(r,{type:`string`,default:t,emptyString:n})}function h(e,t){let n=((n,r)=>{let i=s(n,r);if(i===void 0||i===``)return t;let a=Number(i);return Number.isFinite(a)?e.reduce((e,t)=>t(e),a):t});return Object.defineProperties(n,{clamp:{value:(n,r)=>h([...e,e=>l(e,n,r)],t)},snap:{value:n=>h([...e,e=>u(e,n)],t)},bounded:{value:(n,r,i=1)=>h([...e,e=>d(e,n,r,i)],t)},min:{value:n=>h([...e,e=>Math.max(n,e)],t)},max:{value:n=>h([...e,e=>Math.min(n,e)],t)},step:{value:n=>h([...e,e=>u(e,n)],t)},default:{value:t=>h(e,t)}}),f(n,{type:`number`,default:t})}function g(e){let t=((t,n)=>{let r=s(t,n);return r===void 0?c(t,n)||e:r===``?!0:[`true`,`1`,`yes`,`on`].includes(r.toLowerCase())});return Object.defineProperties(t,{default:{value:e=>g(e)}}),f(t,{type:`boolean`,default:e})}function _(e,t){let n=((n,r)=>{let i=s(n,r);return i!==void 0&&e.includes(i)?i:t});return Object.defineProperties(n,{default:{value:t=>_(e,t)}}),f(n,{type:`enum`,default:t,values:e})}function v(e){let t=((t,n)=>{let r=s(t,n);if(r===void 0||r===``)return e;try{return JSON.parse(r)}catch{return e}});return Object.defineProperties(t,{default:{value:e=>v(e)}}),f(t,{type:`json`,default:e})}var y=({el:e,schema:t})=>Object.fromEntries(Object.entries(t).map(([t,r])=>[t,r(e,n(t,r))])),b=({el:e,schema:t,key:n,value:i})=>{let a=t[n],o=r(n,a),s=a.meta.type===`json`?JSON.stringify(i):String(i);e.getAttribute(o)!==s&&e.setAttribute(o,s)},x=(e,t)=>{let n=[];return Object.keys(t).forEach(r=>{let i=r;if(!Object.is(e[i],t[i])){let r=e[i];e[i]=t[i],n.push({key:i,previous:r,value:t[i]})}}),n},S=e=>e,C=e=>{S=e},w=({el:e,schema:t,onChange:n})=>{let i=new Set(Object.keys(t)),a=S(y({el:e,schema:t})),o=null,s=!1,c=e=>{e.length>0&&n?.(o,e)};o=new Proxy(a,{set(e,t,n,r){if(typeof t!=`string`||!i.has(t))return Reflect.set(e,t,n,r);let a=t,o=e[a];if(Object.is(o,n))return!0;let l=Reflect.set(e,t,n,r);return l&&!s&&c([{key:a,previous:o,value:e[a],source:`property`}]),l}});let l=new MutationObserver(()=>{s=!0;let n=x(a,y({el:e,schema:t})).map(e=>({...e,source:`attribute`}));s=!1,c(n)});return l.observe(e,{attributes:!0,attributeFilter:Object.entries(t).map(([e,t])=>r(e,t))}),Object.defineProperty(o,"disconnect",{value:()=>l.disconnect(),enumerable:!1}),o},T=m([],``),E=h([],0),D=g(!1),O=Object.assign(e=>v(e),{object:e=>v(e),array:e=>v(e)}),k=(e,t)=>_(e,t);export{y as a,E as c,C as d,T as f,r as i,k as l,D as n,w as o,d as r,O as s,p as t,b as u};
|
|
2
|
+
//# sourceMappingURL=codecs-Cb1ns_47.js.map
|
package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/codecs-Cb1ns_47.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codecs-Cb1ns_47.js","names":[],"sources":["../../../../../../../../client/src/runtime/codecs.ts"],"sourcesContent":["type CodecKind = 'string' | 'number' | 'boolean' | 'enum' | 'json';\n\ntype CodecMeta<T> = {\n type: CodecKind;\n default: T;\n values?: readonly string[];\n emptyString?: 'default' | 'value';\n attribute?: string;\n};\n\ninterface CodecFn<T> {\n (el: HTMLElement, attr: string): T;\n readonly meta: CodecMeta<T>;\n}\n\ntype SchemaToProps<T extends Record<string, CodecFn<unknown>>> = {\n [K in keyof T]: ReturnType<T[K]>;\n};\n\ntype SchemaPropKey<T extends Record<string, CodecFn<unknown>>> = Extract<keyof SchemaToProps<T>, string>;\n\ntype PropState<T extends Record<string, CodecFn<unknown>>> = SchemaToProps<T> & {\n readonly disconnect: () => void;\n};\n\ntype PropChangeSource = 'attribute' | 'property';\n\ntype PropChange<T extends Record<string, CodecFn<unknown>>> = {\n key: SchemaPropKey<T>;\n previous: SchemaToProps<T>[keyof SchemaToProps<T>];\n value: SchemaToProps<T>[keyof SchemaToProps<T>];\n source: PropChangeSource;\n};\n\ntype DefinePropsOptions<T extends Record<string, CodecFn<unknown>>> = {\n el: HTMLElement;\n schema: T;\n onChange?: (state: PropState<T>, changes: Array<PropChange<T>>) => void;\n};\n\ntype DecodePropsOptions<T extends Record<string, CodecFn<unknown>>> = {\n el: HTMLElement;\n schema: T;\n};\n\ntype ReflectSchemaPropOptions<\n T extends Record<string, CodecFn<unknown>>,\n K extends SchemaPropKey<T>,\n> = {\n el: HTMLElement;\n schema: T;\n key: K;\n value: SchemaToProps<T>[K];\n};\n\ntype ReactiveFn = <T>(value: T) => T;\n\ninterface StringCodec extends CodecFn<string> {\n trim: StringCodec;\n lower: StringCodec;\n upper: StringCodec;\n kebab: StringCodec;\n camel: StringCodec;\n snake: StringCodec;\n default(val: string): StringCodec;\n emptyAsValue: StringCodec;\n emptyAsDefault: StringCodec;\n maxLength(n: number): StringCodec;\n prefix(p: string): StringCodec;\n suffix(s: string): StringCodec;\n}\n\ninterface NumberCodec extends CodecFn<number> {\n clamp(min: number, max: number): NumberCodec;\n snap(step: number): NumberCodec;\n bounded(min: number, max: number, step?: number): NumberCodec;\n min(n: number): NumberCodec;\n max(n: number): NumberCodec;\n step(n: number): NumberCodec;\n default(val: number): NumberCodec;\n}\n\ninterface BoolCodec extends CodecFn<boolean> {\n default(val: boolean): BoolCodec;\n}\n\ninterface OneOfCodec<T extends string> extends CodecFn<T> {\n default(val: T): OneOfCodec<T>;\n}\n\ninterface JsonCodec<T> extends CodecFn<T> {\n default(val: T): JsonCodec<T>;\n}\n\ninterface JsonCodecFactory {\n <T>(fallback: T): JsonCodec<T>;\n object<T extends Record<string, unknown>>(fallback: T): JsonCodec<T>;\n array<T>(fallback: T[]): JsonCodec<T[]>;\n}\n\nconst toKebab = (str: string): string => str.replace(/([A-Z])/g, '-$1').toLowerCase();\nconst dataAttributeForProp = (key: string): string => `data-${toKebab(key)}`;\nconst attributeForSchemaProp = (key: string, codec: CodecFn<unknown>): string => codec.meta.attribute ?? key;\nconst dataAttributeForSchemaProp = (key: string, codec: CodecFn<unknown>): string => (\n dataAttributeForProp(attributeForSchemaProp(key, codec))\n);\nconst toKebabStr = (str: string): string => str.replace(/([A-Z])/g, '-$1').toLowerCase().replace(/[\\s_]+/g, '-');\nconst toCamelStr = (str: string): string => str.replace(/[-_\\s]+([a-z])/g, (_, c: string) => c.toUpperCase());\nconst toSnakeStr = (str: string): string => str.replace(/([A-Z])/g, '_$1').toLowerCase().replace(/[\\s-]+/g, '_');\n\nconst readAttr = (el: HTMLElement, key: string): string | undefined => (\n el.getAttribute(dataAttributeForProp(key)) ?? undefined\n);\nconst hasAttr = (el: HTMLElement, camelKey: string): boolean => el.hasAttribute(dataAttributeForProp(camelKey));\n\nconst clampNumber = (value: number, min: number, max: number): number => Math.min(max, Math.max(min, value));\nconst snapNumber = (value: number, step: number): number => (\n Number.isFinite(step) && step > 0 ? Math.round(value / step) * step : value\n);\nconst boundNumber = (value: number, min: number, max: number, step = 1): number => (\n clampNumber(snapNumber(value, step), min, max)\n);\n\nconst attachMeta = <TCodec extends CodecFn<unknown>>(\n codec: TCodec,\n meta: CodecMeta<ReturnType<TCodec>>,\n): TCodec => {\n Object.defineProperty(codec, 'meta', {\n value: Object.freeze(meta),\n enumerable: false,\n });\n return codec;\n};\n\nconst attribute = <T>(codec: CodecFn<T>, name: string): CodecFn<T> => attachMeta(\n ((el: HTMLElement): T => codec(el, name)) as unknown as CodecFn<T>,\n {...codec.meta, attribute: name},\n);\n\nfunction makeStringCodec(\n transforms: Array<(s: string) => string>,\n fallback: string,\n emptyString: 'default' | 'value' = 'default',\n): StringCodec {\n const codec = ((el: HTMLElement, attr: string): string => {\n const raw = readAttr(el, attr);\n if (raw === undefined || (raw === '' && emptyString === 'default')) return fallback;\n return transforms.reduce((value, fn) => fn(value), raw);\n }) as StringCodec;\n\n Object.defineProperties(codec, {\n trim: {get: () => makeStringCodec([...transforms, (s) => s.trim()], fallback, emptyString)},\n lower: {get: () => makeStringCodec([...transforms, (s) => s.toLowerCase()], fallback, emptyString)},\n upper: {get: () => makeStringCodec([...transforms, (s) => s.toUpperCase()], fallback, emptyString)},\n kebab: {get: () => makeStringCodec([...transforms, toKebabStr], fallback, emptyString)},\n camel: {get: () => makeStringCodec([...transforms, toCamelStr], fallback, emptyString)},\n snake: {get: () => makeStringCodec([...transforms, toSnakeStr], fallback, emptyString)},\n default: {value: (val: string) => makeStringCodec(transforms, val, emptyString)},\n emptyAsValue: {get: () => makeStringCodec(transforms, fallback, 'value')},\n emptyAsDefault: {get: () => makeStringCodec(transforms, fallback, 'default')},\n maxLength: {value: (n: number) => makeStringCodec([...transforms, (s) => s.slice(0, n)], fallback, emptyString)},\n prefix: {value: (p: string) => makeStringCodec([...transforms, (s) => (s.startsWith(p) ? s : `${p}${s}`)], fallback, emptyString)},\n suffix: {value: (sfx: string) => makeStringCodec([...transforms, (s) => (s.endsWith(sfx) ? s : `${s}${sfx}`)], fallback, emptyString)},\n });\n\n return attachMeta(codec, {type: 'string', default: fallback, emptyString});\n}\n\nfunction makeNumberCodec(transforms: Array<(n: number) => number>, fallback: number): NumberCodec {\n const codec = ((el: HTMLElement, attr: string): number => {\n const raw = readAttr(el, attr);\n if (raw === undefined || raw === '') return fallback;\n const parsed = Number(raw);\n if (!Number.isFinite(parsed)) return fallback;\n return transforms.reduce((value, fn) => fn(value), parsed);\n }) as NumberCodec;\n\n Object.defineProperties(codec, {\n clamp: {value: (min: number, max: number) => makeNumberCodec([...transforms, (n) => clampNumber(n, min, max)], fallback)},\n snap: {value: (step: number) => makeNumberCodec([...transforms, (value) => snapNumber(value, step)], fallback)},\n bounded: {value: (min: number, max: number, step = 1) => makeNumberCodec([...transforms, (value) => boundNumber(value, min, max, step)], fallback)},\n min: {value: (n: number) => makeNumberCodec([...transforms, (v) => Math.max(n, v)], fallback)},\n max: {value: (n: number) => makeNumberCodec([...transforms, (v) => Math.min(n, v)], fallback)},\n step: {value: (n: number) => makeNumberCodec([...transforms, (value) => snapNumber(value, n)], fallback)},\n default: {value: (val: number) => makeNumberCodec(transforms, val)},\n });\n\n return attachMeta(codec, {type: 'number', default: fallback});\n}\n\nfunction makeBoolCodec(fallback: boolean): BoolCodec {\n const codec = ((el: HTMLElement, attr: string): boolean => {\n const raw = readAttr(el, attr);\n if (raw === undefined) return hasAttr(el, attr) || fallback;\n if (raw === '') return true;\n return ['true', '1', 'yes', 'on'].includes(raw.toLowerCase());\n }) as BoolCodec;\n\n Object.defineProperties(codec, {\n default: {value: (val: boolean) => makeBoolCodec(val)},\n });\n\n return attachMeta(codec, {type: 'boolean', default: fallback});\n}\n\nfunction makeOneOfCodec<T extends string>(allowed: readonly T[], fallback: T): OneOfCodec<T> {\n const codec = ((el: HTMLElement, attr: string): T => {\n const raw = readAttr(el, attr) as T | undefined;\n return raw !== undefined && allowed.includes(raw) ? raw : fallback;\n }) as OneOfCodec<T>;\n\n Object.defineProperties(codec, {\n default: {value: (val: T) => makeOneOfCodec(allowed, val)},\n });\n\n return attachMeta(codec, {type: 'enum', default: fallback, values: allowed});\n}\n\nfunction makeJsonCodec<T>(fallback: T): JsonCodec<T> {\n const codec = ((el: HTMLElement, attr: string): T => {\n const raw = readAttr(el, attr);\n if (raw === undefined || raw === '') return fallback;\n\n try {\n return JSON.parse(raw) as T;\n } catch {\n return fallback;\n }\n }) as JsonCodec<T>;\n\n Object.defineProperties(codec, {\n default: {value: (val: T) => makeJsonCodec(val)},\n });\n\n return attachMeta(codec, {type: 'json', default: fallback});\n}\n\nconst decodeProps = <T extends Record<string, CodecFn<unknown>>>({\n el,\n schema,\n}: DecodePropsOptions<T>): SchemaToProps<T> => (\n Object.fromEntries(\n Object.entries(schema).map(([key, codec]) => [key, codec(el, attributeForSchemaProp(key, codec))]),\n ) as SchemaToProps<T>\n);\n\nconst reflectSchemaProp = <\n T extends Record<string, CodecFn<unknown>>,\n K extends SchemaPropKey<T>,\n>({\n el,\n schema,\n key,\n value,\n}: ReflectSchemaPropOptions<T, K>): void => {\n const codec = schema[key] as CodecFn<SchemaToProps<T>[K]>;\n const attributeName = dataAttributeForSchemaProp(key, codec);\n const serialized = codec.meta.type === 'json' ? JSON.stringify(value) : String(value);\n if (el.getAttribute(attributeName) !== serialized) el.setAttribute(attributeName, serialized);\n};\n\nconst assignFreshValues = <T extends Record<string, CodecFn<unknown>>>(\n state: SchemaToProps<T>,\n fresh: SchemaToProps<T>,\n): Array<Omit<PropChange<T>, 'source'>> => {\n const changes: Array<Omit<PropChange<T>, 'source'>> = [];\n Object.keys(fresh).forEach((key) => {\n const typedKey = key as SchemaPropKey<T>;\n if (!Object.is(state[typedKey], fresh[typedKey])) {\n const previous = state[typedKey];\n state[typedKey] = fresh[typedKey];\n changes.push({\n key: typedKey,\n previous,\n value: fresh[typedKey],\n });\n }\n });\n return changes;\n};\n\nlet reactive: ReactiveFn = (value) => value;\n\nconst setPropReactivity = (nextReactive: ReactiveFn): void => {\n reactive = nextReactive;\n};\n\nconst defineProps = <T extends Record<string, CodecFn<unknown>>>({\n el,\n schema,\n onChange,\n}: DefinePropsOptions<T>): PropState<T> => {\n const schemaKeys = new Set(Object.keys(schema));\n const state = reactive(decodeProps({el, schema})) as PropState<T>;\n let props = null as unknown as PropState<T>;\n let assigningFromAttributes = false;\n\n const notify = (changes: Array<PropChange<T>>): void => {\n if (changes.length > 0) onChange?.(props, changes);\n };\n\n props = new Proxy(state, {\n set(target, key, value, receiver): boolean {\n if (typeof key !== 'string' || !schemaKeys.has(key)) {\n return Reflect.set(target, key, value, receiver);\n }\n\n const typedKey = key as SchemaPropKey<T>;\n const previous = target[typedKey];\n if (Object.is(previous, value)) return true;\n\n const ok = Reflect.set(target, key, value, receiver);\n if (ok && !assigningFromAttributes) {\n notify([{\n key: typedKey,\n previous,\n value: target[typedKey],\n source: 'property',\n }]);\n }\n return ok;\n },\n }) as PropState<T>;\n\n const observer = new MutationObserver(() => {\n assigningFromAttributes = true;\n const changes = assignFreshValues(state, decodeProps({el, schema}))\n .map((change) => ({...change, source: 'attribute' as const}));\n assigningFromAttributes = false;\n notify(changes);\n });\n\n observer.observe(el, {\n attributes: true,\n attributeFilter: Object.entries(schema).map(([key, codec]) => dataAttributeForSchemaProp(key, codec)),\n });\n\n Object.defineProperty(props, 'disconnect', {\n value: () => observer.disconnect(),\n enumerable: false,\n });\n\n return props;\n};\n\nconst string = makeStringCodec([], '');\nconst number = makeNumberCodec([], 0);\nconst bool = makeBoolCodec(false);\nconst json = Object.assign(\n <T>(fallback: T): JsonCodec<T> => makeJsonCodec<T>(fallback),\n {\n object: <T extends Record<string, unknown>>(fallback: T): JsonCodec<T> => makeJsonCodec<T>(fallback),\n array: <T>(fallback: T[]): JsonCodec<T[]> => makeJsonCodec<T[]>(fallback),\n },\n) as JsonCodecFactory;\nconst oneOf = <T extends string>(allowed: readonly T[], fallback: T): OneOfCodec<T> => makeOneOfCodec<T>(allowed, fallback);\n\nexport {\n attribute,\n boundNumber,\n clampNumber,\n decodeProps,\n dataAttributeForProp,\n dataAttributeForSchemaProp,\n defineProps,\n reflectSchemaProp,\n setPropReactivity,\n snapNumber,\n string,\n number,\n bool,\n json,\n oneOf,\n};\nexport type {\n BoolCodec,\n CodecFn,\n CodecKind,\n CodecMeta,\n DecodePropsOptions,\n DefinePropsOptions,\n JsonCodec,\n JsonCodecFactory,\n NumberCodec,\n OneOfCodec,\n PropChange,\n ReflectSchemaPropOptions,\n PropChangeSource,\n PropState,\n ReactiveFn,\n SchemaToProps,\n StringCodec,\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=e=>e.dataset.disabled===`true`||e.hasAttribute(`disabled`),t=e=>typeof e==`function`?e():e!==!1,n=({root:n,itemSelector:r,activeAttribute:i=`data-active`,isDisabled:a=e,loop:o})=>{let s=()=>{let e=n();return e?Array.from(e.querySelectorAll(r)):[]},c=()=>s().filter(e=>!a(e)),l=()=>{s().forEach(e=>{e.removeAttribute(i)})},u=({items:e=c()}={})=>{let t=e.find(e=>e.getAttribute(i)===`true`);if(t)return e.indexOf(t);let n=document.activeElement,r=n instanceof HTMLElement?e.find(e=>e===n||e.contains(n)):void 0;return r?e.indexOf(r):-1},d=({el:e})=>{c().includes(e)&&(l(),e.setAttribute(i,`true`))},f=({el:e})=>{d({el:e}),e.focus()},p=(e,n)=>e<0?0:e<n-1?e+1:t(o)?0:n-1,m=(e,n)=>e<0?n-1:e>0?e-1:t(o)?n-1:0,h=e=>{let t=c()[e];t&&f({el:t})},g=()=>{let e=c();e.length!==0&&f({el:e[p(u({items:e}),e.length)]})},_=()=>{let e=c();e.length!==0&&f({el:e[m(u({items:e}),e.length)]})},v=()=>h(0),y=()=>{h(c().length-1)};return{allItems:s,items:c,currentActiveIndex:u,activateItem:d,clearActiveItem:l,focusItem:f,focusNext:g,focusPrevious:_,focusFirst:v,focusLast:y,handleKeydown:({event:e})=>e.key===`ArrowDown`?(e.preventDefault(),g(),!0):e.key===`ArrowUp`?(e.preventDefault(),_(),!0):e.key===`Home`?(e.preventDefault(),v(),!0):e.key===`End`?(e.preventDefault(),y(),!0):!1}};export{n as t};
|
|
2
|
+
//# sourceMappingURL=collection-navigation-CtNDGKcQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection-navigation-CtNDGKcQ.js","names":[],"sources":["../../../../../../../../client/src/runtime/collection-navigation.ts"],"sourcesContent":["type CollectionRoot = HTMLElement | null;\n\ntype CollectionNavigationOptions = {\n root: () => CollectionRoot;\n itemSelector: string;\n activeAttribute?: string;\n isDisabled?: (el: HTMLElement) => boolean;\n loop?: boolean | (() => boolean);\n};\n\ntype CollectionItemsOptions = {\n items?: HTMLElement[];\n};\n\ntype CollectionElementOptions = {\n el: HTMLElement;\n};\n\ntype CollectionKeydownOptions = {\n event: KeyboardEvent;\n};\n\ntype CollectionNavigation = {\n allItems(): HTMLElement[];\n items(): HTMLElement[];\n currentActiveIndex(options?: CollectionItemsOptions): number;\n activateItem(options: CollectionElementOptions): void;\n clearActiveItem(): void;\n focusItem(options: CollectionElementOptions): void;\n focusNext(): void;\n focusPrevious(): void;\n focusFirst(): void;\n focusLast(): void;\n handleKeydown(options: CollectionKeydownOptions): boolean;\n};\n\nconst defaultIsDisabled = (el: HTMLElement): boolean => (\n el.dataset.disabled === 'true' || el.hasAttribute('disabled')\n);\n\nconst resolveLoop = (loop: CollectionNavigationOptions['loop']): boolean => (\n typeof loop === 'function' ? loop() : loop !== false\n);\n\nconst createCollectionNavigation = ({\n root: getRoot,\n itemSelector,\n activeAttribute = 'data-active',\n isDisabled = defaultIsDisabled,\n loop,\n}: CollectionNavigationOptions): CollectionNavigation => {\n const allItems = (): HTMLElement[] => {\n const root = getRoot();\n if (!root) return [];\n\n return Array.from(root.querySelectorAll<HTMLElement>(itemSelector));\n };\n\n const items = (): HTMLElement[] => allItems().filter((el) => !isDisabled(el));\n\n const clearActiveItem = (): void => {\n allItems().forEach((item) => {\n item.removeAttribute(activeAttribute);\n });\n };\n\n const currentActiveIndex = ({items: candidateItems = items()}: CollectionItemsOptions = {}): number => {\n const activeItem = candidateItems.find((item) => item.getAttribute(activeAttribute) === 'true');\n if (activeItem) return candidateItems.indexOf(activeItem);\n\n const activeElement = document.activeElement;\n const focusedItem = activeElement instanceof HTMLElement\n ? candidateItems.find((item) => item === activeElement || item.contains(activeElement))\n : undefined;\n\n return focusedItem ? candidateItems.indexOf(focusedItem) : -1;\n };\n\n const activateItem = ({el}: CollectionElementOptions): void => {\n if (!items().includes(el)) return;\n\n clearActiveItem();\n el.setAttribute(activeAttribute, 'true');\n };\n\n const focusItem = ({el}: CollectionElementOptions): void => {\n activateItem({el});\n el.focus();\n };\n\n const nextIndex = (currentIndex: number, itemCount: number): number => {\n if (currentIndex < 0) return 0;\n if (currentIndex < itemCount - 1) return currentIndex + 1;\n return resolveLoop(loop) ? 0 : itemCount - 1;\n };\n\n const previousIndex = (currentIndex: number, itemCount: number): number => {\n if (currentIndex < 0) return itemCount - 1;\n if (currentIndex > 0) return currentIndex - 1;\n return resolveLoop(loop) ? itemCount - 1 : 0;\n };\n\n const focusByIndex = (index: number): void => {\n const candidateItems = items();\n const item = candidateItems[index];\n if (item) focusItem({el: item});\n };\n\n const focusNext = (): void => {\n const candidateItems = items();\n if (candidateItems.length === 0) return;\n\n focusItem({\n el: candidateItems[\n nextIndex(currentActiveIndex({items: candidateItems}), candidateItems.length)\n ] as HTMLElement,\n });\n };\n\n const focusPrevious = (): void => {\n const candidateItems = items();\n if (candidateItems.length === 0) return;\n\n focusItem({\n el: candidateItems[\n previousIndex(currentActiveIndex({items: candidateItems}), candidateItems.length)\n ] as HTMLElement,\n });\n };\n\n const focusFirst = (): void => focusByIndex(0);\n\n const focusLast = (): void => {\n const candidateItems = items();\n focusByIndex(candidateItems.length - 1);\n };\n\n const handleKeydown = ({event}: CollectionKeydownOptions): boolean => {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n focusNext();\n return true;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n focusPrevious();\n return true;\n }\n\n if (event.key === 'Home') {\n event.preventDefault();\n focusFirst();\n return true;\n }\n\n if (event.key === 'End') {\n event.preventDefault();\n focusLast();\n return true;\n }\n\n return false;\n };\n\n return {\n allItems,\n items,\n currentActiveIndex,\n activateItem,\n clearActiveItem,\n focusItem,\n focusNext,\n focusPrevious,\n focusFirst,\n focusLast,\n handleKeydown,\n };\n};\n\nexport {createCollectionNavigation};\nexport type {\n CollectionElementOptions,\n CollectionItemsOptions,\n CollectionKeydownOptions,\n CollectionNavigation,\n CollectionNavigationOptions,\n};\n"],"mappings":"AAoCA,IAAM,EAAqB,GACvB,EAAG,QAAQ,WAAa,QAAU,EAAG,aAAa,UAAU,EAG1D,EAAe,GACjB,OAAO,GAAS,WAAa,EAAK,EAAI,IAAS,GAG7C,GAA8B,CAChC,KAAM,EACN,eACA,kBAAkB,cAClB,aAAa,EACb,UACqD,CACrD,IAAM,MAAgC,CAClC,IAAM,EAAO,EAAQ,EAGrB,OAFK,EAEE,MAAM,KAAK,EAAK,iBAA8B,CAAY,CAAC,EAFhD,CAAC,CAGvB,EAEM,MAA6B,EAAS,EAAE,OAAQ,GAAO,CAAC,EAAW,CAAE,CAAC,EAEtE,MAA8B,CAChC,EAAS,EAAE,QAAS,GAAS,CACzB,EAAK,gBAAgB,CAAe,CACxC,CAAC,CACL,EAEM,GAAsB,CAAC,MAAO,EAAiB,EAAM,GAA6B,CAAC,IAAc,CACnG,IAAM,EAAa,EAAe,KAAM,GAAS,EAAK,aAAa,CAAe,IAAM,MAAM,EAC9F,GAAI,EAAY,OAAO,EAAe,QAAQ,CAAU,EAExD,IAAM,EAAgB,SAAS,cACzB,EAAc,aAAyB,YACvC,EAAe,KAAM,GAAS,IAAS,GAAiB,EAAK,SAAS,CAAa,CAAC,EACpF,IAAA,GAEN,OAAO,EAAc,EAAe,QAAQ,CAAW,EAAI,EAC/D,EAEM,GAAgB,CAAC,QAAwC,CACtD,EAAM,EAAE,SAAS,CAAE,IAExB,EAAgB,EAChB,EAAG,aAAa,EAAiB,MAAM,EAC3C,EAEM,GAAa,CAAC,QAAwC,CACxD,EAAa,CAAC,IAAE,CAAC,EACjB,EAAG,MAAM,CACb,EAEM,GAAa,EAAsB,IACjC,EAAe,EAAU,EACzB,EAAe,EAAY,EAAU,EAAe,EACjD,EAAY,CAAI,EAAI,EAAI,EAAY,EAGzC,GAAiB,EAAsB,IACrC,EAAe,EAAU,EAAY,EACrC,EAAe,EAAU,EAAe,EACrC,EAAY,CAAI,EAAI,EAAY,EAAI,EAGzC,EAAgB,GAAwB,CAE1C,IAAM,EADiB,EACV,EAAe,GACxB,GAAM,EAAU,CAAC,GAAI,CAAI,CAAC,CAClC,EAEM,MAAwB,CAC1B,IAAM,EAAiB,EAAM,EACzB,EAAe,SAAW,GAE9B,EAAU,CACN,GAAI,EACA,EAAU,EAAmB,CAAC,MAAO,CAAc,CAAC,EAAG,EAAe,MAAM,EAEpF,CAAC,CACL,EAEM,MAA4B,CAC9B,IAAM,EAAiB,EAAM,EACzB,EAAe,SAAW,GAE9B,EAAU,CACN,GAAI,EACA,EAAc,EAAmB,CAAC,MAAO,CAAc,CAAC,EAAG,EAAe,MAAM,EAExF,CAAC,CACL,EAEM,MAAyB,EAAa,CAAC,EAEvC,MAAwB,CAE1B,EADuB,EACV,EAAe,OAAS,CAAC,CAC1C,EA8BA,MAAO,CACH,WACA,QACA,qBACA,eACA,kBACA,YACA,YACA,gBACA,aACA,YACA,eAvCmB,CAAC,WAChB,EAAM,MAAQ,aACd,EAAM,eAAe,EACrB,EAAU,EACH,IAGP,EAAM,MAAQ,WACd,EAAM,eAAe,EACrB,EAAc,EACP,IAGP,EAAM,MAAQ,QACd,EAAM,eAAe,EACrB,EAAW,EACJ,IAGP,EAAM,MAAQ,OACd,EAAM,eAAe,EACrB,EAAU,EACH,IAGJ,EAeX,CACJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=[`xs`,`sm`,`md`,`lg`,`xlg`],t=[`outline`,`filled`],n=[`outline`,`solid`,`mini`,`micro`],r=[`button`,`submit`,`reset`],i=[`start`,`center`,`end`],a=[`bottom`,`top`,`left`,`right`],o=[`top`,`right`,`bottom`,`left`],s=[`vertical`,`horizontal`],c=[`leading`,`trailing`,`center`,`top-leading`,`top-trailing`,`bottom-leading`,`bottom-trailing`],l=[`default`],u=[`h1`,`h2`,`h3`,`h4`,`h5`,`h6`],d={inherit:`text-inherit`,muted:`text-surface-ink-muted`,subtle:`text-surface-ink-muted`,accent:`text-intent-accent-text`,danger:`text-intent-danger-text`};d.muted,d.subtle,d.accent,d.danger;var f=[`0`,`0.5`,`1`,`1.5`,`2`,`2.5`,`3`,`3.5`,`4`,`4.5`,`5`,`5.5`,`6`,`6.5`,`7`,`7.5`,`8`,`8.5`,`9`,`9.5`,`10`,`10.5`,`11`,`11.5`,`12`],p=e=>Object.fromEntries(f.map(t=>[t,t===`0`?``:`${e}-${t}`]));p(`gap`),p(`gap-x`),p(`gap-y`),p(`p`),p(`px`),p(`py`),p(`m`),p(`mx`),p(`my`);var m=[`none`,`xs`,`sm`,`md`,`lg`,`full`],h=[`inherit`,`0`,`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`+1`,`+2`,`+3`,`+4`,`+5`,`+6`,`+7`,`+8`],g=[`none`,`match`,`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`],_=e=>Object.fromEntries(g.map(t=>[t,`[${e}:${t===`none`?`var(--shadow-elevation-0)`:t===`match`?`var(--ui-matched-elevation)`:`var(--shadow-elevation-${t})`}]`])),v={none:``,xs:`rounded-control-xs`,sm:`rounded-control-sm`,md:`rounded-control-md`,lg:`rounded-control-lg`,full:`rounded-full`},y={xs:`font-control text-control-xs [font-weight:var(--font-weight-control-xs)]`,sm:`font-control text-control-sm [font-weight:var(--font-weight-control-sm)]`,md:`font-control text-control-md [font-weight:var(--font-weight-control-md)]`,lg:`font-control text-control-lg [font-weight:var(--font-weight-control-lg)]`,xlg:`font-control text-control-xlg [font-weight:var(--font-weight-control-xlg)]`};`${y.xs}`,`${y.sm}`,`${y.md}`,`${y.lg}`,`${y.xlg}`;var b={xs:`min-h-control-xs px-control-padding-xs ${y.xs}`,sm:`min-h-control-sm px-control-padding-sm ${y.sm}`,md:`min-h-control-md px-control-padding-md ${y.md}`,lg:`min-h-control-lg px-control-padding-lg ${y.lg}`,xlg:`min-h-control-xlg px-control-padding-xlg ${y.xlg}`};`${y.xs}`,`${y.sm}`,`${y.md}`,`${y.lg}`,`${y.xlg}`;var x=[`flex w-full min-w-0 items-center gap-control-gap outline-none`],S=[`border-0 bg-transparent p-0 text-inherit outline-none`],C=[`inline-flex size-control-xs shrink-0 items-center justify-center rounded-control-sm border-0 bg-transparent`,`text-current outline-none`],w=[`w-full border-0 bg-transparent text-inherit outline-none`],T=[`absolute left-0 top-0 z-popover m-0 grid h-auto`,`outline-none`],E=[`flex h-menu-item w-full cursor-default select-none items-center gap-2 rounded-control-sm px-menu-item-padding-inline`,`text-left font-menu-item text-menu-item [font-weight:var(--font-weight-menu-item)] outline-none`,`data-disabled:pointer-events-none`],D=`size-icon shrink-0 fill-current text-current opacity-70`,O=`ml-auto size-icon shrink-0 fill-current text-current opacity-0 data-selected:opacity-100`;export{T as C,_ as E,s as S,h as T,c as _,v as a,O as b,l as c,C as d,S as f,n as g,u as h,b as i,o as l,x as m,r as n,e as o,w as p,m as r,t as s,i as t,g as u,f as v,a as w,E as x,D as y};
|
|
2
|
+
//# sourceMappingURL=common-DAxHCzB-.js.map
|
package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-DAxHCzB-.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common-DAxHCzB-.js","names":[],"sources":["../../../../../../../../client/src/components/common.ts"],"sourcesContent":["const CONTROL_SIZES = ['xs', 'sm', 'md', 'lg', 'xlg'] as const;\nconst CONTROL_VARIANTS = ['outline', 'filled'] as const;\nconst ICON_VARIANTS = ['outline', 'solid', 'mini', 'micro'] as const;\nconst BUTTON_TYPES = ['button', 'submit', 'reset'] as const;\nconst ALIGNMENTS = ['start', 'center', 'end'] as const;\nconst POSITIONS = ['bottom', 'top', 'left', 'right'] as const;\nconst EDGE_POSITIONS = ['top', 'right', 'bottom', 'left'] as const;\nconst ORIENTATIONS = ['vertical', 'horizontal'] as const;\nconst INDICATOR_PLACEMENTS = ['leading', 'trailing', 'center', 'top-leading', 'top-trailing', 'bottom-leading', 'bottom-trailing'] as const;\nconst DEFAULT_VARIANTS = ['default'] as const;\nconst HEADING_LEVELS = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] as const;\nconst TYPOGRAPHY_COLORS = ['inherit', 'muted', 'subtle', 'accent', 'danger'] as const;\nconst ICON_COLORS = TYPOGRAPHY_COLORS;\ntype TypographyColor = typeof TYPOGRAPHY_COLORS[number];\ntype IconColor = typeof ICON_COLORS[number];\nconst TYPOGRAPHY_COLOR_CLASSES = {\n inherit: 'text-inherit',\n muted: 'text-surface-ink-muted',\n subtle: 'text-surface-ink-muted',\n accent: 'text-intent-accent-text',\n danger: 'text-intent-danger-text',\n} as const satisfies Record<TypographyColor, string>;\nconst ICON_COLOR_CLASSES = {\n inherit: 'text-current',\n muted: TYPOGRAPHY_COLOR_CLASSES.muted,\n subtle: TYPOGRAPHY_COLOR_CLASSES.subtle,\n accent: TYPOGRAPHY_COLOR_CLASSES.accent,\n danger: TYPOGRAPHY_COLOR_CLASSES.danger,\n} as const satisfies Record<IconColor, string>;\nconst LAYOUT_SPACES = [\n '0', '0.5', '1', '1.5', '2', '2.5', '3', '3.5', '4', '4.5', '5', '5.5', '6', '6.5',\n '7', '7.5', '8', '8.5', '9', '9.5', '10', '10.5', '11', '11.5', '12',\n] as const;\ntype LayoutSpace = typeof LAYOUT_SPACES[number];\nconst layoutSpaceClasses = (prefix: string): Record<LayoutSpace, string> => Object.fromEntries(\n LAYOUT_SPACES.map((space) => [space, space === '0' ? '' : `${prefix}-${space}`]),\n) as Record<LayoutSpace, string>;\nconst LAYOUT_GAP_CLASSES = layoutSpaceClasses('gap');\nconst LAYOUT_GAP_X_CLASSES = layoutSpaceClasses('gap-x');\nconst LAYOUT_GAP_Y_CLASSES = layoutSpaceClasses('gap-y');\nconst LAYOUT_PADDING_CLASSES = layoutSpaceClasses('p');\nconst LAYOUT_PADDING_X_CLASSES = layoutSpaceClasses('px');\nconst LAYOUT_PADDING_Y_CLASSES = layoutSpaceClasses('py');\nconst LAYOUT_MARGIN_CLASSES = layoutSpaceClasses('m');\nconst LAYOUT_MARGIN_X_CLASSES = layoutSpaceClasses('mx');\nconst LAYOUT_MARGIN_Y_CLASSES = layoutSpaceClasses('my');\nconst COMPONENT_RADII = ['none', 'xs', 'sm', 'md', 'lg', 'full'] as const;\nconst ABSOLUTE_SURFACE_REFERENCES = ['0', '1', '2', '3', '4', '5', '6', '7', '8'] as const;\nconst SURFACE_REFERENCES = [\n 'inherit', ...ABSOLUTE_SURFACE_REFERENCES,\n '+1', '+2', '+3', '+4', '+5', '+6', '+7', '+8',\n] as const;\nconst ELEVATION_REFERENCES = ['none', 'match', '1', '2', '3', '4', '5', '6', '7', '8'] as const;\ntype SurfaceReference = typeof SURFACE_REFERENCES[number];\ntype AbsoluteSurfaceReference = typeof ABSOLUTE_SURFACE_REFERENCES[number];\ntype ElevationReference = typeof ELEVATION_REFERENCES[number];\nconst elevationReferenceClasses = (property: `--${string}`): Record<ElevationReference, string> => Object.fromEntries(\n ELEVATION_REFERENCES.map((reference) => {\n const value = reference === 'none'\n ? 'var(--shadow-elevation-0)'\n : reference === 'match'\n ? 'var(--ui-matched-elevation)'\n : `var(--shadow-elevation-${reference})`;\n return [reference, `[${property}:${value}]`];\n }),\n) as Record<ElevationReference, string>;\nconst SURFACE_RADIUS_CLASSES = {\n none: '',\n xs: 'rounded-surface-xs',\n sm: 'rounded-surface-sm',\n md: 'rounded-surface-md',\n lg: 'rounded-surface-lg',\n full: 'rounded-full',\n} as const satisfies Record<typeof COMPONENT_RADII[number], string>;\nconst CONTROL_RADIUS_CLASSES = {\n none: '',\n xs: 'rounded-control-xs',\n sm: 'rounded-control-sm',\n md: 'rounded-control-md',\n lg: 'rounded-control-lg',\n full: 'rounded-full',\n} as const satisfies Record<typeof COMPONENT_RADII[number], string>;\nconst CONTROL_TYPOGRAPHY_CLASSES = {\n xs: 'font-control text-control-xs [font-weight:var(--font-weight-control-xs)]',\n sm: 'font-control text-control-sm [font-weight:var(--font-weight-control-sm)]',\n md: 'font-control text-control-md [font-weight:var(--font-weight-control-md)]',\n lg: 'font-control text-control-lg [font-weight:var(--font-weight-control-lg)]',\n xlg: 'font-control text-control-xlg [font-weight:var(--font-weight-control-xlg)]',\n} as const;\nconst CONTROL_SIZE_CLASSES = {\n xs: `h-control-xs px-control-padding-xs ${CONTROL_TYPOGRAPHY_CLASSES.xs}`,\n sm: `h-control-sm px-control-padding-sm ${CONTROL_TYPOGRAPHY_CLASSES.sm}`,\n md: `h-control-md px-control-padding-md ${CONTROL_TYPOGRAPHY_CLASSES.md}`,\n lg: `h-control-lg px-control-padding-lg ${CONTROL_TYPOGRAPHY_CLASSES.lg}`,\n xlg: `h-control-xlg px-control-padding-xlg ${CONTROL_TYPOGRAPHY_CLASSES.xlg}`,\n};\nconst CONTROL_MIN_SIZE_CLASSES = {\n xs: `min-h-control-xs px-control-padding-xs ${CONTROL_TYPOGRAPHY_CLASSES.xs}`,\n sm: `min-h-control-sm px-control-padding-sm ${CONTROL_TYPOGRAPHY_CLASSES.sm}`,\n md: `min-h-control-md px-control-padding-md ${CONTROL_TYPOGRAPHY_CLASSES.md}`,\n lg: `min-h-control-lg px-control-padding-lg ${CONTROL_TYPOGRAPHY_CLASSES.lg}`,\n xlg: `min-h-control-xlg px-control-padding-xlg ${CONTROL_TYPOGRAPHY_CLASSES.xlg}`,\n};\nconst CONTROL_MULTILINE_SIZE_CLASSES = {\n xs: `min-h-control-multiline-xs px-control-padding-xs py-1 ${CONTROL_TYPOGRAPHY_CLASSES.xs}`,\n sm: `min-h-control-multiline-sm px-control-padding-sm py-1.5 ${CONTROL_TYPOGRAPHY_CLASSES.sm}`,\n md: `min-h-control-multiline-md px-control-padding-md py-2 ${CONTROL_TYPOGRAPHY_CLASSES.md}`,\n lg: `min-h-control-multiline-lg px-control-padding-lg py-2 ${CONTROL_TYPOGRAPHY_CLASSES.lg}`,\n xlg: `min-h-control-multiline-xlg px-control-padding-xlg py-2 ${CONTROL_TYPOGRAPHY_CLASSES.xlg}`,\n};\nconst FIELD_CONTROL_ROOT_CLASSES = [\n 'flex w-full min-w-0 items-center gap-control-gap outline-none',\n];\nconst FIELD_CONTROL_MULTILINE_ROOT_CLASSES = [\n 'flex w-full min-w-0 gap-control-gap outline-none',\n];\nconst FIELD_CONTROL_INPUT_CLASSES = [\n 'border-0 bg-transparent p-0 text-inherit outline-none',\n];\nconst FIELD_CONTROL_ACTION_CLASSES = [\n 'inline-flex size-control-xs shrink-0 items-center justify-center rounded-control-sm border-0 bg-transparent',\n 'text-current outline-none',\n];\nconst FIELD_CONTROL_NATIVE_CLASSES = [\n 'w-full border-0 bg-transparent text-inherit outline-none',\n];\nconst POPOVER_GEOMETRY_CLASSES = [\n 'absolute left-0 top-0 z-popover m-0 grid h-auto',\n 'outline-none',\n];\nconst INTERACTIVE_ITEM_CLASSES = [\n 'ui-interactive:hover:bg-interaction-hover',\n 'ui-interactive:ui-active:bg-interaction-pressed',\n 'ui-interactive:ui-selected:bg-interaction-selected',\n 'ui-interactive:ui-selected:hover:bg-interaction-selected-hover',\n];\nconst OPTION_ITEM_CLASSES = [\n 'flex h-menu-item w-full cursor-default select-none items-center gap-2 rounded-control-sm px-menu-item-padding-inline',\n 'text-left font-menu-item text-menu-item [font-weight:var(--font-weight-menu-item)] outline-none',\n 'data-disabled:pointer-events-none',\n];\nconst OPTION_ICON_CLASSES = 'size-icon shrink-0 fill-current text-current opacity-70';\nconst OPTION_INDICATOR_CLASSES = 'ml-auto size-icon shrink-0 fill-current text-current opacity-0 data-selected:opacity-100';\n\ntype ControlSize = typeof CONTROL_SIZES[number];\ntype ControlVariant = typeof CONTROL_VARIANTS[number];\ntype IconVariant = typeof ICON_VARIANTS[number];\ntype CommonButtonType = typeof BUTTON_TYPES[number];\ntype Alignment = typeof ALIGNMENTS[number];\ntype Position = typeof POSITIONS[number];\ntype EdgePosition = typeof EDGE_POSITIONS[number];\ntype Orientation = typeof ORIENTATIONS[number];\ntype IndicatorPlacement = typeof INDICATOR_PLACEMENTS[number];\ntype DefaultVariant = typeof DEFAULT_VARIANTS[number];\ntype HeadingLevel = typeof HEADING_LEVELS[number];\ntype ComponentRadius = typeof COMPONENT_RADII[number];\n\nexport {\n ABSOLUTE_SURFACE_REFERENCES,\n ALIGNMENTS,\n BUTTON_TYPES,\n COMPONENT_RADII,\n CONTROL_RADIUS_CLASSES,\n CONTROL_MIN_SIZE_CLASSES,\n CONTROL_MULTILINE_SIZE_CLASSES,\n CONTROL_SIZES,\n CONTROL_SIZE_CLASSES,\n CONTROL_TYPOGRAPHY_CLASSES,\n CONTROL_VARIANTS,\n DEFAULT_VARIANTS,\n EDGE_POSITIONS,\n ELEVATION_REFERENCES,\n FIELD_CONTROL_ACTION_CLASSES,\n FIELD_CONTROL_INPUT_CLASSES,\n FIELD_CONTROL_MULTILINE_ROOT_CLASSES,\n FIELD_CONTROL_NATIVE_CLASSES,\n FIELD_CONTROL_ROOT_CLASSES,\n elevationReferenceClasses,\n HEADING_LEVELS,\n ICON_COLORS,\n ICON_COLOR_CLASSES,\n ICON_VARIANTS,\n INDICATOR_PLACEMENTS,\n INTERACTIVE_ITEM_CLASSES,\n LAYOUT_GAP_CLASSES,\n LAYOUT_GAP_X_CLASSES,\n LAYOUT_GAP_Y_CLASSES,\n LAYOUT_MARGIN_CLASSES,\n LAYOUT_MARGIN_X_CLASSES,\n LAYOUT_MARGIN_Y_CLASSES,\n LAYOUT_PADDING_CLASSES,\n LAYOUT_PADDING_X_CLASSES,\n LAYOUT_PADDING_Y_CLASSES,\n LAYOUT_SPACES,\n OPTION_ICON_CLASSES,\n OPTION_INDICATOR_CLASSES,\n OPTION_ITEM_CLASSES,\n ORIENTATIONS,\n POPOVER_GEOMETRY_CLASSES,\n POSITIONS,\n SURFACE_RADIUS_CLASSES,\n SURFACE_REFERENCES,\n TYPOGRAPHY_COLOR_CLASSES,\n TYPOGRAPHY_COLORS,\n};\nexport type {\n AbsoluteSurfaceReference,\n Alignment,\n CommonButtonType,\n ComponentRadius,\n ControlSize,\n ControlVariant,\n DefaultVariant,\n EdgePosition,\n ElevationReference,\n HeadingLevel,\n IconColor,\n IconVariant,\n IndicatorPlacement,\n LayoutSpace,\n Orientation,\n Position,\n SurfaceReference,\n TypographyColor,\n};\n"],"mappings":"AAAA,IAAM,EAAgB,CAAC,KAAM,KAAM,KAAM,KAAM,KAAK,EAC9C,EAAmB,CAAC,UAAW,QAAQ,EACvC,EAAgB,CAAC,UAAW,QAAS,OAAQ,OAAO,EACpD,EAAe,CAAC,SAAU,SAAU,OAAO,EAC3C,EAAa,CAAC,QAAS,SAAU,KAAK,EACtC,EAAY,CAAC,SAAU,MAAO,OAAQ,OAAO,EAC7C,EAAiB,CAAC,MAAO,QAAS,SAAU,MAAM,EAClD,EAAe,CAAC,WAAY,YAAY,EACxC,EAAuB,CAAC,UAAW,WAAY,SAAU,cAAe,eAAgB,iBAAkB,iBAAiB,EAC3H,EAAmB,CAAC,SAAS,EAC7B,EAAiB,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EAKpD,EAA2B,CAC7B,QAAS,eACT,MAAO,yBACP,OAAQ,yBACR,OAAQ,0BACR,OAAQ,yBACZ,EAGW,EAAyB,MACxB,EAAyB,OACzB,EAAyB,OACzB,EAAyB,OAErC,IAAM,EAAgB,CAClB,IAAK,MAAO,IAAK,MAAO,IAAK,MAAO,IAAK,MAAO,IAAK,MAAO,IAAK,MAAO,IAAK,MAC7E,IAAK,MAAO,IAAK,MAAO,IAAK,MAAO,KAAM,OAAQ,KAAM,OAAQ,IACpE,EAEM,EAAsB,GAAgD,OAAO,YAC/E,EAAc,IAAK,GAAU,CAAC,EAAO,IAAU,IAAM,GAAK,GAAG,EAAO,GAAG,GAAO,CAAC,CACnF,EAC2B,EAAmB,KAAK,EACtB,EAAmB,OAAO,EAC1B,EAAmB,OAAO,EACxB,EAAmB,GAAG,EACpB,EAAmB,IAAI,EACvB,EAAmB,IAAI,EAC1B,EAAmB,GAAG,EACpB,EAAmB,IAAI,EACvB,EAAmB,IAAI,EACvD,IAAM,EAAkB,CAAC,OAAQ,KAAM,KAAM,KAAM,KAAM,MAAM,EAEzD,EAAqB,CACvB,UAFiC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAGzE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAC9C,EACM,EAAuB,CAAC,OAAQ,QAAS,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAI/E,EAA6B,GAAgE,OAAO,YACtG,EAAqB,IAAK,GAMf,CAAC,EAAW,IAAI,EAAS,GALlB,IAAc,OACtB,4BACA,IAAc,QACV,8BACA,0BAA0B,EAAU,GACL,EAAE,CAC9C,CACL,EASM,EAAyB,CAC3B,KAAM,GACN,GAAI,qBACJ,GAAI,qBACJ,GAAI,qBACJ,GAAI,qBACJ,KAAM,cACV,EACM,EAA6B,CAC/B,GAAI,2EACJ,GAAI,2EACJ,GAAI,2EACJ,GAAI,2EACJ,IAAK,4EACT,EAEQ,GAAsC,EAA2B,GAAjE,EACA,GAAsC,EAA2B,GAAjE,EACA,GAAsC,EAA2B,GAAjE,EACA,GAAsC,EAA2B,GAAjE,EACC,GAAwC,EAA2B,IAAnE,EAET,IAAM,EAA2B,CAC7B,GAAI,0CAA0C,EAA2B,KACzE,GAAI,0CAA0C,EAA2B,KACzE,GAAI,0CAA0C,EAA2B,KACzE,GAAI,0CAA0C,EAA2B,KACzE,IAAK,4CAA4C,EAA2B,KAChF,EAEQ,GAAyD,EAA2B,GAApF,EACA,GAA2D,EAA2B,GAAtF,EACA,GAAyD,EAA2B,GAApF,EACA,GAAyD,EAA2B,GAApF,EACC,GAA2D,EAA2B,IAAtF,EAET,IAAM,EAA6B,CAC/B,+DACJ,EAIM,EAA8B,CAChC,uDACJ,EACM,EAA+B,CACjC,8GACA,2BACJ,EACM,EAA+B,CACjC,0DACJ,EACM,EAA2B,CAC7B,kDACA,cACJ,EAOM,EAAsB,CACxB,uHACA,kGACA,mCACJ,EACM,EAAsB,0DACtB,EAA2B"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{n as e,t}from"./props-change-2xfsIAEN.js";var n=()=>{let n=t=>e(t)?.props??null;return{shouldOpen({event:e}){let r=n(e);return!r||r.disabled||!r.open?!1:t(e,`open`,`disabled`)},shouldClose({event:e}){let r=n(e);return r?t(e,`open`)&&!r.open||t(e,`disabled`)&&r.disabled:!1},replace({event:e}){let t=n(e);return t?{props:t}:void 0}}};export{n as t};
|
|
2
|
+
//# sourceMappingURL=controlled-open-Hy4-OT-6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controlled-open-Hy4-OT-6.js","names":[],"sources":["../../../../../../../../client/src/components/shared/controlled-open.ts"],"sourcesContent":["import type {\n MachineEventObject,\n MachineScope,\n MachineUpdate,\n} from '../../runtime/state-machine';\nimport {propsChanged, propsChangedEvent} from '../../runtime/state-machine';\n\ntype ControlledOpenProps = {\n disabled: boolean;\n open: boolean;\n};\n\nconst defineControlledOpenProps = <TContext, TProps extends ControlledOpenProps>() => {\n const next = (event: MachineEventObject): TProps | null => propsChangedEvent<TProps>(event)?.props ?? null;\n\n return {\n shouldOpen({event}: MachineScope<TContext, TProps>): boolean {\n const props = next(event);\n if (!props || props.disabled || !props.open) return false;\n return propsChanged<TProps>(event, 'open', 'disabled');\n },\n shouldClose({event}: MachineScope<TContext, TProps>): boolean {\n const props = next(event);\n if (!props) return false;\n return (propsChanged<TProps>(event, 'open') && !props.open)\n || (propsChanged<TProps>(event, 'disabled') && props.disabled);\n },\n replace({event}: MachineScope<TContext, TProps>): MachineUpdate<TContext, TProps> | undefined {\n const props = next(event);\n return props ? {props} : undefined;\n },\n };\n};\n\nexport {defineControlledOpenProps};\n"],"mappings":"iDAYA,IAAM,MAAgF,CAClF,IAAM,EAAQ,GAA6C,EAA0B,CAAK,GAAG,OAAS,KAEtG,MAAO,CACH,WAAW,CAAC,SAAiD,CACzD,IAAM,EAAQ,EAAK,CAAK,EAExB,MADI,CAAC,GAAS,EAAM,UAAY,CAAC,EAAM,KAAa,GAC7C,EAAqB,EAAO,OAAQ,UAAU,CACzD,EACA,YAAY,CAAC,SAAiD,CAC1D,IAAM,EAAQ,EAAK,CAAK,EAExB,OADK,EACG,EAAqB,EAAO,MAAM,GAAK,CAAC,EAAM,MAC9C,EAAqB,EAAO,UAAU,GAAK,EAAM,SAFtC,EAGvB,EACA,QAAQ,CAAC,SAAqF,CAC1F,IAAM,EAAQ,EAAK,CAAK,EACxB,OAAO,EAAQ,CAAC,OAAK,EAAI,IAAA,EAC7B,CACJ,CACJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{_ as e,a as t,d as n,l as r,m as i,o as a,s as o,t as s,u as c}from"./ui-xTjuF3uC.js";import{d as l}from"./codecs-Cb1ns_47.js";import{o as u,r as d}from"./machine-CX3wFSoV.js";var f=`Are you sure?`,p=null,m=new WeakSet,h=e=>e instanceof HTMLButtonElement||e instanceof HTMLInputElement,ee=({form:e,submitter:t})=>{let n=t?.dataset.uiConfirm;if(n!==void 0)return n||f;let r=e.dataset.uiConfirm;return r===void 0?null:r||f},te=({form:e,submitter:t})=>{window.setTimeout(()=>{if(!(!e.isConnected||t&&t.form!==e)){m.add(e);try{e.requestSubmit(t??void 0)}finally{m.delete(e)}}},0)},g=e=>{let t=e.target;if(!(t instanceof HTMLFormElement))return;if(m.has(t)){m.delete(t);return}let n=h(e.submitter)?e.submitter:null,r=ee({form:t,submitter:n});if(r===null)return;e.preventDefault();let i=!1,a=()=>{i||(i=!0,te({form:t,submitter:n}))},o=()=>{i=!0},s=new CustomEvent(`ui:confirm`,{bubbles:!0,cancelable:!0,detail:{form:t,message:r,submitter:n,triggeringEvent:e,proceed:a,cancel:o}});t.dispatchEvent(s),!s.defaultPrevented&&(window.confirm(r)?a():o())},ne=({root:e=document}={})=>{p||=(e.addEventListener(`submit`,g,{capture:!0}),()=>e.removeEventListener(`submit`,g,{capture:!0}))},re=e=>e.replace(/([A-Z])/g,`_$1`).toLowerCase(),ie=({manifest:e})=>Object.freeze(e),ae=({schema:e,details:t})=>Object.fromEntries(Object.entries(e).map(([e,n])=>{let r=t[e]??{},i=n.meta,a={type:i.type,default:i.default};return i.values&&(a.values=i.values),r.description&&(a.description=r.description),r.initialOnly&&(a.initialOnly=!0),[r.name??re(e),a]})),oe=[`light`,`dark`,`system`],se=e=>typeof e==`string`&&oe.includes(e),_=e=>se(e)?e:`system`,ce=()=>document.documentElement.dataset.themeStorageKey||`trellis-ui-theme`,le=()=>_(document.documentElement.dataset.theme),ue=()=>{try{return _(window.localStorage.getItem(ce())||le())}catch{return le()}},de=e=>{try{window.localStorage.setItem(ce(),e)}catch{}},fe=()=>window.matchMedia(`(prefers-color-scheme: dark)`).matches,pe=e=>e===`dark`||e===`system`&&fe(),v=e=>{let t=pe(e),n=t?`dark`:`light`,r=document.documentElement;return r.classList.toggle(`dark`,t),r.dataset.theme=e,r.dataset.resolvedTheme=n,r.dispatchEvent(new CustomEvent(`ui:theme-change`,{detail:{mode:e,resolved:n,dark:t,on:t},bubbles:!0})),{mode:e,resolved:n,dark:t,on:t}},me=()=>{let e=v(ue());return{mode:e.mode,resolved:e.resolved,dark:e.dark,on:e.on,set(e){let t=_(e);de(t);let n=v(t);this.mode=n.mode,this.resolved=n.resolved,this.dark=n.dark,this.on=n.on},toggle(){this.set(this.dark?`light`:`dark`)}}},he=e=>{if(typeof e.store!=`function`)return;let t=e.store(`theme`)??me();e.store(`theme`,t),window.matchMedia(`(prefers-color-scheme: dark)`).addEventListener(`change`,()=>{if(t.mode!==`system`)return;let e=v(`system`);t.mode=e.mode,t.resolved=e.resolved,t.dark=e.dark,t.on=e.on})},ge=(e,t)=>{if(!(!e||typeof t.evaluate!=`function`))return t.evaluate(e)},_e=e=>{if(typeof e==`string`)return{key:e};if(typeof e==`object`&&e){let t=e.key??e.id;return t?{key:t}:{}}return{}},ve=t=>{t.directive(`ui-layout`,(t,{expression:n},r)=>{if(!(t instanceof Element))return;let i=e(t,_e(ge(n,r)));r.cleanup?.(()=>{i()})})},y=`__trellis`,b=`[data-ui-scroll-restoration]`,ye=20,be=100,x=!1,S=null,C=0,w=!1,T=null,E=new Map,D=new Set,O=new Map,k=()=>crypto.randomUUID(),xe=()=>({containers:{},window:{x:0,y:0}}),A=e=>e.getAttribute(`data-ui-scroll-restoration`)?.trim()||e.id||null,j=()=>{let e={};return document.querySelectorAll(b).forEach(t=>{let n=A(t);n&&(e[n]={x:t.scrollLeft,y:t.scrollTop})}),{containers:e,window:{x:window.scrollX,y:window.scrollY}}},M=e=>{if(!u(e))return null;let t=e[y];if(!u(t))return null;let n=t.navigate;return!u(n)||typeof n.id!=`string`||typeof n.index!=`number`||typeof n.url!=`string`||!u(n.scroll)?null:n},N=e=>{let t=u(window.history.state)?window.history.state:{},n=u(t.__trellis)?t[y]:{};return{...t,[y]:{...n,navigate:e}}},P=(e,t=e.url)=>{window.history.replaceState(N(e),``,t)},Se=()=>{let e=M(window.history.state);if(!e)return;let t=j();E.set(e.id,t),P({...e,scroll:t})},F=()=>{T!==null&&(cancelAnimationFrame(T),T=null),Se()},I=()=>{let e=M(window.history.state);e&&(E.set(e.id,j()),T===null&&(T=requestAnimationFrame(()=>{T=null;let e=M(window.history.state);if(!e)return;let t=E.get(e.id);t&&P({...e,scroll:t})})))},Ce=e=>{requestAnimationFrame(()=>{window.scrollTo({left:e.window.x,top:e.window.y,behavior:`instant`}),document.querySelectorAll(b).forEach(t=>{let n=A(t),r=n?e.containers[n]:void 0;t.scrollTo({left:r?.x??0,top:r?.y??0,behavior:`instant`})})})},L=(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}}))},we=e=>{for(O.set(e.requestId,e);O.size>ye;){let e=O.keys().next().value;if(!e)break;O.delete(e)}},R=e=>{for(D.add(e);D.size>be;){let e=D.values().next().value;if(!e)break;D.delete(e)}},Te=()=>{S&&=(R(S.requestId),S.controller.abort(`Superseded by a newer Trellis navigation`),null)},Ee=()=>{Te(),O.forEach(e=>R(e.requestId)),O.clear()},z=e=>{window.location.assign(e.href)},B=e=>{let t=new URL(e,document.baseURI);return t.origin===window.location.origin?t:null},De=(e,t)=>{if(t.mode===`assign`)return z(new URL(t.url,document.baseURI)),!0;let n=B(t.url);if(!n)return z(new URL(t.url,document.baseURI)),!0;if(e.destination=n,!e.entryId)return!0;let r=M(window.history.state);return!r||r.id!==e.entryId||P({...r,url:n.href},n),!0},Oe=e=>{if(!e.requestId)return!1;if(D.has(e.requestId))return!0;let t=S?.requestId===e.requestId?S:O.get(e.requestId);return t?De(t,e):!1},ke=e=>{F();let t={id:k(),index:C+1,scroll:xe(),url:e.destination.href};return C=t.index,window.history.pushState(N(t),``,e.destination),e.entryId=t.id,t},V=(e,t)=>{t?.type===`aborted`||t?.type===`cancelled`||t?.type===`redirect`||z(e.destination)},Ae=(e,t,n)=>{if(D.has(e.requestId))return;if(t.type!==`empty`){V(e,t);return}let r=n??ke(e);if(n&&e.destination.href!==n.url){let t={...n,url:e.destination.href};P(t,e.destination),e.entryId=t.id}Ce(r.scroll),L(`ui:navigated`,e)},H=(e,t,n)=>{let r={controller:new AbortController,destination:t,entryId:n.restoredState?.id??null,history:n.history,requestId:k(),...n.requestOptions?{requestOptions:n.requestOptions}:{},...n.source?{source:n.source}:{}};if(n.preflight!==!1&&!L(`ui:navigate`,r,!0))return;Ee(),S=r,L(`ui:navigating`,r);let o=new Headers(r.requestOptions?.headers);o.set(`X-Trellis-Navigation`,r.history?`restore`:`navigate`),a(e,t,{...r.requestOptions,headers:o,method:`GET`,requestId:r.requestId,signal:r.controller.signal,...r.source?{source:r.source}:{}}).then(e=>{S?.requestId!==r.requestId&&!O.has(r.requestId)||Ae(r,e,n.restoredState)}).catch(e=>{r.controller.signal.aborted||(i(`x-ui-request.navigate: restoration failed`,e),V(r))}).finally(()=>{S?.requestId===r.requestId&&(S=null),D.has(r.requestId)||we(r)})},je=()=>{let e=M(window.history.state);e?C=e.index:P({id:k(),index:0,scroll:j(),url:window.location.href}),`scrollRestoration`in window.history&&(window.history.scrollRestoration=`manual`)},Me=e=>{x||(x=!0,je(),r(e=>!e||!D.has(e)),n((e,t)=>t.matches(`[data-ui-stream]`)&&!!(e&&(S?.requestId===e||O.has(e)))),c(Oe),window.addEventListener(`scroll`,I,{passive:!0}),document.addEventListener(`scroll`,I,{capture:!0,passive:!0}),window.addEventListener(`pagehide`,F),window.addEventListener(`popstate`,t=>{if(w){w=!1;return}let n=M(t.state);if(!n){z(new URL(window.location.href));return}let r=E.get(n.id),i=r?{...n,scroll:r}:n,a=B(n.url);if(!a||a.href!==window.location.href){z(new URL(window.location.href));return}let o=C;if(C=n.index,!L(`ui:navigate`,{controller:new AbortController,destination:a,entryId:n.id,history:!0,requestId:k()},!0)){w=!0,window.history.go(o-n.index),C=o;return}H(e,a,{history:!0,preflight:!1,restoredState:i})}))},Ne=(e,t,n,r)=>{H(e,new URL(t,document.baseURI),{history:!1,...r?{requestOptions:r}:{},...n?{source:n}:{}})},Pe=`[x-ui-request], [x-ui-request\\.navigate]`,Fe=new Set([`data`,`extra`,`headers`,`method`]),Ie=[`altKey`,`ctrlKey`,`metaKey`,`shiftKey`],U=new WeakSet,Le=(e,{expression:t},n)=>{if(!t?.trim())return{};let r=n.Alpine.evaluate(e,t);return u(r)?(Object.keys(r).forEach(e=>{Fe.has(e)||i(`x-ui-request: unknown option key`,e)}),r):(i(`x-ui-request: expression must evaluate to an object`),null)},Re=e=>e.submitter instanceof HTMLElement?e.submitter:null,ze=(e,t,n)=>t.defaultPrevented||(n?.getAttribute(`formmethod`)||e.getAttribute(`method`))?.toLowerCase()===`dialog`||e.getAttribute(`target`)||n?.getAttribute(`formtarget`)?!1:!e.noValidate&&!e.checkValidity()?(e.reportValidity(),!1):!0,Be=e=>e.hash!==``&&e.origin===window.location.origin&&e.pathname===window.location.pathname&&e.search===window.location.search,Ve=(e,t,n)=>{if(t.defaultPrevented||t.button!==0||n&&Ie.some(e=>t[e])||e.hasAttribute(`download`)||e.getAttribute(`target`))return!1;let r=new URL(e.href,document.baseURI);return r.origin===window.location.origin?!Be(r):!1},He=(e,t,n,r)=>{let o=o=>{if(U.delete(t))return;let s=Re(o);if(!ze(t,o,s))return;let c=Le(t,n,r);c&&(o.preventDefault(),a(e,void 0,{...c,source:t,submitter:s}).then(e=>{e.type===`unavailable`&&(U.add(t),t.requestSubmit(s??void 0))}).catch(e=>i(`x-ui-request: request failed`,e)))};t.addEventListener(`submit`,o),r.cleanup?.(()=>t.removeEventListener(`submit`,o))},Ue=(e,t,n,r,o)=>{let s=s=>{if(!Ve(t,s,o.navigate))return;let c=Le(t,n,r);if(c){if(s.preventDefault(),o.navigate){Ne(e,t.href,t,c);return}a(e,t.href,{...c,method:c.method??`GET`,source:t}).then(e=>{e.type===`unavailable`&&window.location.assign(t.href)}).catch(e=>i(`x-ui-request: request failed`,e))}};t.addEventListener(`click`,s),r.cleanup?.(()=>t.removeEventListener(`click`,s))},We=e=>{e.addRootSelector(()=>Pe),t(e),Me(e),e.directive(`ui-request`,(t,{expression:n,modifiers:r},a)=>{let o={expression:n};if(t instanceof HTMLFormElement){He(e,t,o,a);return}if(t instanceof HTMLAnchorElement){Ue(e,t,o,a,{navigate:r.includes(`navigate`)});return}i(`x-ui-request: directive only supports forms and anchors`,t)})},Ge=(e,t)=>{let n=!0,r=!1,i,a,o=new Promise(e=>{a=e});return e(e=>{if(n){r=!0,i=e;return}a(e)},{scope:{$transition:t}}),n=!1,r?i:o},Ke=e=>{e.directive(`ui-transition`,e.skipDuringClone((t,{value:n,expression:r},a)=>{if(!n){i(`x-ui-transition requires a transition name`,t);return}let o=d(e,t);if(!o){i(`x-ui-transition:${n} requires an owning Trellis machine`,t);return}let s=r?.trim()?a.evaluateLater(r):null,c=o.onTransition(n,e=>s?Ge(s,e):void 0,t);a.cleanup(c)}))},W=()=>{},G,K=class{startComment;endComment;constructor(e,t){this.startComment=e,this.endComment=t}get children(){let e=[],t=this.startComment.nextSibling;for(;t&&t!==this.endComment;)t instanceof Element&&e.push(t),t=t.nextSibling;return e}get firstChild(){let e=this.startComment.nextSibling;return e===this.endComment?null:e}appendChild(e){return this.endComment.before(e),e}insertBefore(e,t){return(t??this.endComment).before(e),e}nextNode(e){let t=e.nextSibling;return t===this.endComment?null:t}},q=(e,t)=>e instanceof K?e.nextNode(t):t.nextSibling,qe=e=>{let t=document.createElement(`template`);t.innerHTML=e;let n=t.content.firstElementChild;if(!n)throw Error(`Morph HTML must contain a root element.`);return n},Je=(e,t)=>{t.namespaceURI?e.setAttributeNodeNS(t.cloneNode()):t.name.includes(`@`)?e.setAttributeNode(t.cloneNode()):e.setAttribute(t.name,t.value)},J=(e,t)=>{let n=!1;return e(t,()=>{n=!0}),n},Y=e=>e?.nodeType===Node.COMMENT_NODE&&e.textContent===`[if BLOCK]><![endif]`,Ye=e=>e?.nodeType===Node.COMMENT_NODE&&e.textContent===`[if ENDBLOCK]><![endif]`,Xe=(e,t)=>{let n=0,r=t;for(;r=q(e,r);)if(Y(r))n+=1;else if(Ye(r)&&n>0)--n;else if(Ye(r))return r;throw Error(`Unclosed conditional morph block.`)},X=e=>{let t=e;if(e._x_lastRenderedEl)t=e._x_lastRenderedEl;else if(e._x_currentIfEl)t=X(e._x_currentIfEl).end;else if(e._x_lookup?.size){let n=new Set(e._x_lookup.values()),r=e.nextSibling;for(;r&&n.has(r);)t=X(r).end,r=t.nextSibling}return{start:e,end:t}},Z=(e,t)=>q(e,t.end),Q=(e,t)=>{if(e.nodeType!==t.nodeType||e.nodeName!==t.nodeName)return!1;if(e.nodeType===Node.TEXT_NODE||e.nodeType===Node.COMMENT_NODE)return e.nodeValue===t.nodeValue;if(e instanceof HTMLTemplateElement&&t instanceof HTMLTemplateElement){let n=e,r=t;if(n._x_teleport){let e=r._x_teleport??t.content.firstElementChild;return!!(e&&Q(n._x_teleport,e))}return e.isEqualNode(t)}if(e instanceof Element&&t instanceof Element){if(e.attributes.length!==t.attributes.length)return!1;for(let{name:n,value:r}of e.attributes)if(t.getAttribute(n)!==r)return!1}let n=e.firstChild,r=t.firstChild;for(;n&&r;){if(!Q(n,r))return!1;n=X(n).end.nextSibling,r=r.nextSibling}return n===null&&r===null},Ze=(e,t,n)=>{if(t.start===n||Z(e,t)===n)return;let r=t.start;for(;r;){let i=r.nextSibling;if(e.insertBefore(r,n),r===t.end)break;r=i}},Qe=(e,t)=>{let n=t?._x_bindings?.id;!n||!(e instanceof Element)||(e.setAttribute(`id`,n),e.id=n)},$e=(e,t,n)=>{let r=new WeakMap,i=e.map(n).filter(Boolean),a=t.map(n).filter(Boolean);if(!(i.length>=2&&i.length===a.length&&new Set(i).size===i.length&&i.some((e,t)=>e!==a[t])&&i.every(e=>a.includes(e))))return r;let o=e=>{let t=new Map,n=e=>{e.id&&t.set(e.id,(t.get(e.id)??0)+1)};for(let t of e)n(t),t.querySelectorAll(`[id]`).forEach(n);return t},s=o(e),c=o(t),l=new Map;for(let[e,t]of s)t===1&&c.get(e)===1&&l.set(e,Symbol(e));let u=e=>{if(!n(e))for(let t of e.querySelectorAll(`[id]`)){let n=l.get(t.id);if(n){r.set(e,n);return}}};return e.forEach(u),t.forEach(u),r},et=(e={})=>{let t={key:e.key??(e=>e.getAttribute(`key`)),lookahead:e.lookahead??!1,updating:e.updating??W,updated:e.updated??W,removing:e.removing??W,removed:e.removed??W,adding:e.adding??W,added:e.added??W,skipUntilCondition:null},n=e=>e instanceof Element?t.key(e):null,r=(e,t)=>e.nodeType!==t.nodeType||e.nodeName!==t.nodeName||n(e)!==n(t),i=(e,n,r)=>{if(J(t.adding,n))return{inserted:!1,node:null};let i=n.cloneNode(!0);return e.insertBefore(i,r),t.added(i),{inserted:!0,node:i}},a=e=>J(t.removing,e)?!1:(e.parentNode?.removeChild(e),t.removed(e),!0),o=e=>J(t.removing,e.start)?!1:(e.start.parentNode?.removeChild(e.start),t.removed(e.start),!0),s=(e,n)=>{if(J(t.removing,e))return!1;let r=n.cloneNode(!0);return J(t.adding,r)?!1:(e.parentNode?.replaceChild(r,e),t.removed(e),t.added(r),!0)},c=(e,t)=>{if(e._x_transitioning||e._x_isShown&&!t._x_isShown||!e._x_isShown&&t._x_isShown)return!1;let n=!1,r=Array.from(e.attributes);for(let i=r.length-1;i>=0;--i){let a=r[i].name;t.hasAttribute(a)||(a===`open`&&e instanceof HTMLDialogElement&&e.open?e.close():e.removeAttribute(a),n=!0)}let i=Array.from(t.attributes);for(let t=i.length-1;t>=0;--t){let r=i[t],{name:a,value:o}=r;e.getAttribute(a)!==o&&(Je(e,r),n=!0)}return n},l,u=(e,n,i)=>{if(r(e,n))return s(e,n);if(i===`before-descendant-hook`&&e.nodeType!==Node.COMMENT_NODE&&Q(e,n))return!1;let a=!1,o=!1,u=!1;if(t.updating(e,n,()=>{a=!0},()=>{u=!0},()=>{o=!0},e=>{t.skipUntilCondition=e}),u||Q(e,n))return!1;let f=!1;return e.nodeType===Node.ELEMENT_NODE&&G&&(G.cloneNode(e,n),e._x_teleport&&n._x_teleport&&(f=d(e._x_teleport,n._x_teleport)||f)),n.nodeType===Node.TEXT_NODE||n.nodeType===Node.COMMENT_NODE?e.nodeValue===n.nodeValue?!1:(e.nodeValue=n.nodeValue,t.updated(e,n),!0):(a||(f=c(e,n)||f),o||(f=l(e,n)||f),f&&t.updated(e,n),f)},d=(e,t)=>u(e,t,`before-descendant-hook`);return l=(e,r)=>{let s=Array.from(e.children),c=$e(s,Array.from(r.children),n),u=e=>e?n(e)||c.get(e):null,f=new Map;for(let e of s){let t=u(e);t&&f.set(t,e)}let p=!1,m=e.firstChild,h=r.firstChild;incoming:for(;h;){if(Qe(h,m),t.skipUntilCondition){let n=!m||t.skipUntilCondition(m),i=t.skipUntilCondition(h);if(n&&i)t.skipUntilCondition=null;else{!n&&m&&(m=Z(e,X(m))),i||(h=q(r,h));continue}}if(!m){p=i(e,h,null).inserted||p,h=q(r,h);continue}if(Y(m)&&Y(h)){let t=Xe(e,m),n=Xe(r,h);p=l(new K(m,t),new K(h,n))||p,m=q(e,t),h=q(r,n);continue}else{if(t.lookahead&&m instanceof Element&&!m.isEqualNode(h)){let t=q(r,h);for(;t;){if(t instanceof Element&&m.isEqualNode(t)){let t=i(e,h,m);if(!t.inserted){h=q(r,h);continue incoming}m=t.node,p=!0;break}t=q(r,t)}}let n=u(h),a=u(m);if(n!==a){let t=n?f.get(n):void 0;if(t)Ze(e,X(t),m),m=t,p=!0;else if(n||a){let t=i(e,h,m);if(!t.inserted){h=q(r,h);continue}m=t.node,p=!0}}let o=Z(e,X(m));p=d(m,h)||p,m=o}h=q(r,h)}for(;m;){let t=X(m),n=Z(e,t);p=(t.end===t.start?a(m):o(t))||p,m=n}return p},{patchChildren:l,patchRoot:(e,t)=>u(e,t,`after-root-hook`)}},tt=(e,t,n={})=>{let r=typeof t==`string`?qe(t):t,i=e;return G?.closestDataStack&&!i._x_dataStack&&(r._x_dataStack=G.closestDataStack(i),r._x_dataStack&&G.cloneNode(i,r)),et(n).patchRoot(i,r),e},nt=(e,t,n,r={})=>{let i=e.parentNode,a=typeof n==`string`?(()=>{let e=document.createElement(`div`);return e.insertAdjacentHTML(`beforeend`,n),e})():n,o=document.createComment(`[morph-start]`),s=document.createComment(`[morph-end]`);a.insertBefore(o,a.firstChild),a.appendChild(s),G?.closestDataStack&&(a._x_dataStack=G.closestDataStack(i),a._x_dataStack&&G.cloneNode(i,a)),et(r).patchChildren(new K(e,t),new K(o,s))},rt=e=>{let t=e;G=t,t.morph=tt,t.morphBetween=nt},$=new WeakSet,it=e=>{$.has(e)||($.add(e),l(e.reactive),e.plugin(rt),ve(e),s(e),Ke(e),he(e),ne(),We(e),o(e))};export{ae as i,Ke as n,ie as r,it as t};
|
|
2
|
+
//# sourceMappingURL=core-DjoX4J-6.js.map
|
package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-DjoX4J-6.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-DjoX4J-6.js","names":[],"sources":["../../../../../../../../client/src/runtime/confirm.ts","../../../../../../../../client/src/runtime/manifest.ts","../../../../../../../../client/src/runtime/theme.ts","../../../../../../../../client/src/directives/layout.ts","../../../../../../../../client/src/runtime/engine/navigation.ts","../../../../../../../../client/src/directives/request.ts","../../../../../../../../client/src/directives/transition.ts","../../../../../../../../client/src/runtime/morph-engine.ts","../../../../../../../../client/src/core.ts"],"sourcesContent":["type SubmitterElement = HTMLButtonElement | HTMLInputElement;\n\ntype ConfirmProceed = () => void;\ntype ConfirmCancel = () => void;\n\ntype ConfirmEventDetail = {\n form: HTMLFormElement;\n message: string;\n submitter: SubmitterElement | null;\n triggeringEvent: SubmitEvent;\n proceed: ConfirmProceed;\n cancel: ConfirmCancel;\n};\n\ntype ConfirmRuntimeOptions = {\n root?: Document;\n};\n\nconst DEFAULT_CONFIRM_MESSAGE = 'Are you sure?';\n\nlet removeSubmitListener: (() => void) | null = null;\nconst bypassedForms = new WeakSet<HTMLFormElement>();\n\nconst isSubmitterElement = (value: unknown): value is SubmitterElement => (\n value instanceof HTMLButtonElement || value instanceof HTMLInputElement\n);\n\nconst confirmMessageFor = ({form, submitter}: {\n form: HTMLFormElement;\n submitter: SubmitterElement | null;\n}): string | null => {\n const submitterMessage = submitter?.dataset.uiConfirm;\n if (submitterMessage !== undefined) return submitterMessage || DEFAULT_CONFIRM_MESSAGE;\n\n const formMessage = form.dataset.uiConfirm;\n if (formMessage !== undefined) return formMessage || DEFAULT_CONFIRM_MESSAGE;\n\n return null;\n};\n\nconst queueConfirmedSubmit = ({form, submitter}: {\n form: HTMLFormElement;\n submitter: SubmitterElement | null;\n}): void => {\n // Chromium can retain the form's submission guard through the current microtask checkpoint.\n window.setTimeout(() => {\n if (!form.isConnected || (submitter && submitter.form !== form)) return;\n\n bypassedForms.add(form);\n try {\n form.requestSubmit(submitter ?? undefined);\n } finally {\n bypassedForms.delete(form);\n }\n }, 0);\n};\n\nconst handleSubmit = (event: SubmitEvent): void => {\n const form = event.target;\n if (!(form instanceof HTMLFormElement)) return;\n\n if (bypassedForms.has(form)) {\n bypassedForms.delete(form);\n return;\n }\n\n const submitter = isSubmitterElement(event.submitter) ? event.submitter : null;\n const message = confirmMessageFor({form, submitter});\n if (message === null) return;\n\n event.preventDefault();\n\n let settled = false;\n const proceed = (): void => {\n if (settled) return;\n settled = true;\n queueConfirmedSubmit({form, submitter});\n };\n const cancel = (): void => {\n settled = true;\n };\n const confirmEvent = new CustomEvent<ConfirmEventDetail>('ui:confirm', {\n bubbles: true,\n cancelable: true,\n detail: {\n form,\n message,\n submitter,\n triggeringEvent: event,\n proceed,\n cancel,\n },\n });\n\n form.dispatchEvent(confirmEvent);\n if (confirmEvent.defaultPrevented) return;\n\n if (window.confirm(message)) {\n proceed();\n } else {\n cancel();\n }\n};\n\nconst registerConfirm = ({root = document}: ConfirmRuntimeOptions = {}): void => {\n if (removeSubmitListener) return;\n\n root.addEventListener('submit', handleSubmit as EventListener, {capture: true});\n removeSubmitListener = (): void => root.removeEventListener('submit', handleSubmit as EventListener, {capture: true});\n};\n\nconst unregisterConfirm = (): void => {\n removeSubmitListener?.();\n removeSubmitListener = null;\n};\n\nexport {registerConfirm, unregisterConfirm};\nexport type {ConfirmCancel, ConfirmEventDetail, ConfirmProceed, ConfirmRuntimeOptions};\n","import type {CodecFn} from './codecs';\n\ntype PropKind = 'string' | 'number' | 'boolean' | 'enum' | 'json';\n\ntype ManifestProp = {\n type: PropKind;\n default?: unknown;\n values?: readonly string[];\n description?: string;\n initialOnly?: boolean;\n};\n\ntype ManifestPart = {\n selector: string;\n description: string;\n};\n\ntype ManifestToken = {\n name: string;\n description: string;\n};\n\ntype ManifestAcceptedEvent = {\n description: string;\n detail?: Record<string, string>;\n};\n\ntype ComponentManifestMeta = {\n group?: string;\n};\n\ntype ComponentManifest = {\n name: string;\n title: string;\n description: string;\n meta?: ComponentManifestMeta;\n props?: Record<string, ManifestProp>;\n propSchema?: Record<string, CodecFn<unknown>>;\n slots?: Record<string, string>;\n events?: Record<string, string>;\n acceptedEvents?: Record<string, ManifestAcceptedEvent>;\n parts?: Record<string, ManifestPart>;\n tokens?: readonly ManifestToken[];\n};\n\ntype ManifestPropDetails = Pick<ManifestProp, 'description'> & {\n name?: string;\n initialOnly?: boolean;\n};\n\ntype SchemaPropDetails<T extends Record<string, CodecFn<unknown>>> = {\n [K in keyof T]?: ManifestPropDetails;\n};\n\ntype DefineManifestOptions<T extends ComponentManifest> = {\n manifest: T;\n};\n\ntype PropsFromSchemaOptions<T extends Record<string, CodecFn<unknown>>> = {\n schema: T;\n details: SchemaPropDetails<T>;\n};\n\nconst toSnake = (value: string): string => value.replace(/([A-Z])/g, '_$1').toLowerCase();\n\nconst defineManifest = <const T extends ComponentManifest>({manifest}: DefineManifestOptions<T>): Readonly<T> => Object.freeze(manifest);\n\nconst propsFromSchema = <const T extends Record<string, CodecFn<unknown>>>({\n schema,\n details,\n}: PropsFromSchemaOptions<T>): Record<string, ManifestProp> => Object.fromEntries(\n Object.entries(schema).map(([schemaKey, codec]) => {\n const propDetails = details[schemaKey as keyof T] ?? {};\n const meta = codec.meta;\n const prop: ManifestProp = {\n type: meta.type,\n default: meta.default,\n };\n\n if (meta.values) prop.values = meta.values;\n if (propDetails.description) prop.description = propDetails.description;\n if (propDetails.initialOnly) prop.initialOnly = true;\n\n return [propDetails.name ?? toSnake(schemaKey), prop];\n }),\n );\n\nexport {defineManifest, propsFromSchema};\nexport type {\n ComponentManifest,\n DefineManifestOptions,\n ManifestPart,\n ManifestProp,\n ManifestPropDetails,\n ManifestAcceptedEvent,\n ComponentManifestMeta,\n ManifestToken,\n PropsFromSchemaOptions,\n PropKind,\n SchemaPropDetails,\n};\n","import type {Alpine as AlpineType} from 'alpinejs';\n\nconst THEME_VALUES = ['light', 'dark', 'system'] as const;\ntype ThemeMode = typeof THEME_VALUES[number];\ntype ResolvedThemeMode = Exclude<ThemeMode, 'system'>;\n\ntype ThemeChangeDetail = {\n mode: ThemeMode;\n resolved: ResolvedThemeMode;\n dark: boolean;\n on: boolean;\n};\n\ntype ThemeStore = {\n mode: ThemeMode;\n resolved: ResolvedThemeMode;\n dark: boolean;\n on: boolean;\n set: (mode: ThemeMode) => void;\n toggle: () => void;\n};\n\nconst isThemeMode = (value: unknown): value is ThemeMode => (\n typeof value === 'string' && THEME_VALUES.includes(value as ThemeMode)\n);\n\nconst normalizeThemeMode = (value: unknown): ThemeMode => (\n isThemeMode(value) ? value : 'system'\n);\n\nconst storageKey = (): string => (\n document.documentElement.dataset.themeStorageKey || 'trellis-ui-theme'\n);\n\nconst fallbackMode = (): ThemeMode => normalizeThemeMode(document.documentElement.dataset.theme);\n\nconst storedMode = (): ThemeMode => {\n try {\n return normalizeThemeMode(window.localStorage.getItem(storageKey()) || fallbackMode());\n } catch {\n return fallbackMode();\n }\n};\n\nconst persistMode = (mode: ThemeMode): void => {\n try {\n window.localStorage.setItem(storageKey(), mode);\n } catch {\n // Keep theme controls usable in private or restricted browsing contexts.\n }\n};\n\nconst prefersDark = (): boolean => (\n window.matchMedia('(prefers-color-scheme: dark)').matches\n);\n\nconst resolveDark = (mode: ThemeMode): boolean => (\n mode === 'dark' || (mode === 'system' && prefersDark())\n);\n\nconst applyThemeMode = (mode: ThemeMode): ThemeChangeDetail => {\n const dark = resolveDark(mode);\n const resolved: ResolvedThemeMode = dark ? 'dark' : 'light';\n const root = document.documentElement;\n\n root.classList.toggle('dark', dark);\n root.dataset.theme = mode;\n root.dataset.resolvedTheme = resolved;\n root.dispatchEvent(new CustomEvent<ThemeChangeDetail>('ui:theme-change', {\n detail: {mode, resolved, dark, on: dark},\n bubbles: true,\n }));\n\n return {mode, resolved, dark, on: dark};\n};\n\nconst createThemeStore = (): ThemeStore => {\n const initial = applyThemeMode(storedMode());\n\n return {\n mode: initial.mode,\n resolved: initial.resolved,\n dark: initial.dark,\n on: initial.on,\n set(mode: ThemeMode): void {\n const nextMode = normalizeThemeMode(mode);\n persistMode(nextMode);\n const next = applyThemeMode(nextMode);\n this.mode = next.mode;\n this.resolved = next.resolved;\n this.dark = next.dark;\n this.on = next.on;\n },\n toggle(): void {\n this.set(this.dark ? 'light' : 'dark');\n },\n };\n};\n\nconst registerThemeStore = (AlpineInstance: AlpineType): void => {\n if (typeof AlpineInstance.store !== 'function') return;\n\n const existingStore = AlpineInstance.store('theme') as ThemeStore | undefined;\n const store = existingStore ?? createThemeStore();\n\n AlpineInstance.store('theme', store);\n\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {\n if (store.mode !== 'system') return;\n const next = applyThemeMode('system');\n store.mode = next.mode;\n store.resolved = next.resolved;\n store.dark = next.dark;\n store.on = next.on;\n });\n};\n\nexport {\n applyThemeMode,\n createThemeStore,\n registerThemeStore,\n type ResolvedThemeMode,\n type ThemeChangeDetail,\n type ThemeStore,\n type ThemeMode,\n};\n","import type Alpine from 'alpinejs';\nimport {markLayoutParticipant} from '@client/runtime/layout-participant';\n\ntype LayoutDirectiveValue = string | {\n id?: string;\n key?: string;\n};\n\nconst readExpression = <T>(expression: string | undefined, utilities: Alpine.DirectiveUtilities): T | undefined => {\n if (!expression || typeof utilities.evaluate !== 'function') return undefined;\n return utilities.evaluate(expression) as T;\n};\n\nconst layoutOptions = (value: LayoutDirectiveValue | undefined): {key?: string} => {\n if (typeof value === 'string') return {key: value};\n if (typeof value === 'object' && value) {\n const key = value.key ?? value.id;\n return key ? {key} : {};\n }\n return {};\n};\n\nconst registerLayoutDirective = (Alpine: Alpine.Alpine): void => {\n Alpine.directive('ui-layout', (el, {expression}, utilities) => {\n if (!(el instanceof Element)) return;\n\n const value = readExpression<LayoutDirectiveValue>(expression, utilities);\n const cleanup = markLayoutParticipant(el, layoutOptions(value));\n\n utilities.cleanup?.(() => {\n cleanup();\n });\n });\n};\n\nexport {registerLayoutDirective};\n","import type Alpine from 'alpinejs';\nimport {requestWithAlpine, type RequestOptions, type RequestResult} from './request';\nimport {\n setEffectRequestFilter,\n setLocationEffectHandler,\n setMorphExclusionFilter,\n type LocationPayload,\n type StreamAlpine,\n} from './stream';\nimport {isRecord, warn} from '../../utils';\n\ntype ScrollPosition = {x: number; y: number};\ntype ScrollState = {\n containers: Record<string, ScrollPosition>;\n window: ScrollPosition;\n};\ntype NavigateHistoryState = {\n id: string;\n index: number;\n scroll: ScrollState;\n url: string;\n};\ntype TrellisHistoryState = {\n navigate: NavigateHistoryState;\n};\ntype NavigationDetail = {\n history: boolean;\n source: Element | Document;\n url: URL;\n};\ntype NavigationSession = {\n controller: AbortController;\n destination: URL;\n entryId: string | null;\n history: boolean;\n requestId: string;\n requestOptions?: RequestOptions;\n source?: Element;\n};\n\nconst HISTORY_NAMESPACE = '__trellis';\nconst SCROLL_CONTAINER_SELECTOR = '[data-ui-scroll-restoration]';\nconst COMPLETED_SESSION_LIMIT = 20;\nconst CANCELLED_REQUEST_LIMIT = 100;\n\nlet registered = false;\nlet activeSession: NavigationSession | null = null;\nlet currentIndex = 0;\nlet ignoreNextPopstate = false;\nlet scrollSaveFrame: number | null = null;\nconst scrollSnapshots = new Map<string, ScrollState>();\nconst cancelledRequestIds = new Set<string>();\nconst completedSessions = new Map<string, NavigationSession>();\n\nconst navigationId = (): string => crypto.randomUUID();\n\nconst emptyScrollState = (): ScrollState => ({\n containers: {},\n window: {x: 0, y: 0},\n});\n\nconst scrollContainerKey = (element: Element): string | null => {\n const declared = element.getAttribute('data-ui-scroll-restoration')?.trim();\n if (declared) return declared;\n return element.id || null;\n};\n\nconst captureScroll = (): ScrollState => {\n const containers: Record<string, ScrollPosition> = {};\n document.querySelectorAll<HTMLElement>(SCROLL_CONTAINER_SELECTOR).forEach((element) => {\n const key = scrollContainerKey(element);\n if (!key) return;\n containers[key] = {x: element.scrollLeft, y: element.scrollTop};\n });\n return {\n containers,\n window: {x: window.scrollX, y: window.scrollY},\n };\n};\n\nconst navigateStateFrom = (state: unknown): NavigateHistoryState | null => {\n if (!isRecord(state)) return null;\n const trellis = state[HISTORY_NAMESPACE];\n if (!isRecord(trellis)) return null;\n const navigate = trellis.navigate;\n if (!isRecord(navigate)) return null;\n if (\n typeof navigate.id !== 'string'\n || typeof navigate.index !== 'number'\n || typeof navigate.url !== 'string'\n || !isRecord(navigate.scroll)\n ) return null;\n return navigate as NavigateHistoryState;\n};\n\nconst mergedHistoryState = (navigate: NavigateHistoryState): Record<string, unknown> => {\n const state = isRecord(window.history.state) ? window.history.state : {};\n const namespace = isRecord(state[HISTORY_NAMESPACE])\n ? state[HISTORY_NAMESPACE] as Record<string, unknown>\n : {};\n return {\n ...state,\n [HISTORY_NAMESPACE]: {\n ...namespace,\n navigate,\n } satisfies TrellisHistoryState,\n };\n};\n\nconst replaceEntry = (navigate: NavigateHistoryState, url: string | URL = navigate.url): void => {\n window.history.replaceState(mergedHistoryState(navigate), '', url);\n};\n\nconst saveCurrentScroll = (): void => {\n const navigate = navigateStateFrom(window.history.state);\n if (!navigate) return;\n const scroll = captureScroll();\n scrollSnapshots.set(navigate.id, scroll);\n replaceEntry({...navigate, scroll});\n};\n\nconst flushCurrentScroll = (): void => {\n if (scrollSaveFrame !== null) {\n cancelAnimationFrame(scrollSaveFrame);\n scrollSaveFrame = null;\n }\n saveCurrentScroll();\n};\n\nconst scheduleCurrentScroll = (): void => {\n const navigate = navigateStateFrom(window.history.state);\n if (!navigate) return;\n scrollSnapshots.set(navigate.id, captureScroll());\n if (scrollSaveFrame !== null) return;\n scrollSaveFrame = requestAnimationFrame(() => {\n scrollSaveFrame = null;\n const current = navigateStateFrom(window.history.state);\n if (!current) return;\n const scroll = scrollSnapshots.get(current.id);\n if (scroll) replaceEntry({...current, scroll});\n });\n};\n\nconst restoreScroll = (scroll: ScrollState): void => {\n requestAnimationFrame(() => {\n window.scrollTo({left: scroll.window.x, top: scroll.window.y, behavior: 'instant'});\n document.querySelectorAll<HTMLElement>(SCROLL_CONTAINER_SELECTOR).forEach((element) => {\n const key = scrollContainerKey(element);\n const position = key ? scroll.containers[key] : undefined;\n element.scrollTo({\n left: position?.x ?? 0,\n top: position?.y ?? 0,\n behavior: 'instant',\n });\n });\n });\n};\n\nconst dispatchNavigation = (\n name: string,\n session: Pick<NavigationSession, 'destination' | 'history' | 'source'>,\n cancelable = false,\n): boolean => {\n const source = session.source?.isConnected ? session.source : document;\n return source.dispatchEvent(new CustomEvent<NavigationDetail>(name, {\n bubbles: true,\n cancelable,\n composed: true,\n detail: {\n history: session.history,\n source,\n url: session.destination,\n },\n }));\n};\n\nconst rememberCompleted = (session: NavigationSession): void => {\n completedSessions.set(session.requestId, session);\n while (completedSessions.size > COMPLETED_SESSION_LIMIT) {\n const oldest = completedSessions.keys().next().value as string | undefined;\n if (!oldest) break;\n completedSessions.delete(oldest);\n }\n};\n\nconst rejectRequestId = (requestId: string): void => {\n cancelledRequestIds.add(requestId);\n while (cancelledRequestIds.size > CANCELLED_REQUEST_LIMIT) {\n const oldest = cancelledRequestIds.values().next().value as string | undefined;\n if (!oldest) break;\n cancelledRequestIds.delete(oldest);\n }\n};\n\nconst cancelActive = (): void => {\n if (!activeSession) return;\n rejectRequestId(activeSession.requestId);\n activeSession.controller.abort('Superseded by a newer Trellis navigation');\n activeSession = null;\n};\n\nconst supersedePriorNavigations = (): void => {\n cancelActive();\n completedSessions.forEach((session) => rejectRequestId(session.requestId));\n completedSessions.clear();\n};\n\nconst nativeNavigate = (url: URL): void => {\n window.location.assign(url.href);\n};\n\nconst internalUrl = (value: string): URL | null => {\n const url = new URL(value, document.baseURI);\n return url.origin === window.location.origin ? url : null;\n};\n\nconst updateSessionDestination = (session: NavigationSession, payload: LocationPayload): boolean => {\n if (payload.mode === 'assign') {\n nativeNavigate(new URL(payload.url, document.baseURI));\n return true;\n }\n const destination = internalUrl(payload.url);\n if (!destination) {\n nativeNavigate(new URL(payload.url, document.baseURI));\n return true;\n }\n session.destination = destination;\n if (!session.entryId) return true;\n\n const current = navigateStateFrom(window.history.state);\n if (!current || current.id !== session.entryId) return true;\n replaceEntry({...current, url: destination.href}, destination);\n return true;\n};\n\nconst handleLocationEffect = (payload: LocationPayload): boolean => {\n if (!payload.requestId) return false;\n if (cancelledRequestIds.has(payload.requestId)) return true;\n const session = activeSession?.requestId === payload.requestId\n ? activeSession\n : completedSessions.get(payload.requestId);\n return session ? updateSessionDestination(session, payload) : false;\n};\n\nconst pushDestination = (session: NavigationSession): NavigateHistoryState => {\n flushCurrentScroll();\n const navigate: NavigateHistoryState = {\n id: navigationId(),\n index: currentIndex + 1,\n scroll: emptyScrollState(),\n url: session.destination.href,\n };\n currentIndex = navigate.index;\n window.history.pushState(mergedHistoryState(navigate), '', session.destination);\n session.entryId = navigate.id;\n return navigate;\n};\n\nconst fallbackFor = (session: NavigationSession, result?: RequestResult): void => {\n if (\n result?.type === 'aborted'\n || result?.type === 'cancelled'\n || result?.type === 'redirect'\n ) return;\n nativeNavigate(session.destination);\n};\n\nconst finishSession = (\n session: NavigationSession,\n result: RequestResult,\n restoredState?: NavigateHistoryState,\n): void => {\n if (cancelledRequestIds.has(session.requestId)) return;\n if (result.type !== 'empty') {\n fallbackFor(session, result);\n return;\n }\n\n const destinationState = restoredState ?? pushDestination(session);\n if (restoredState && session.destination.href !== restoredState.url) {\n const redirected = {...restoredState, url: session.destination.href};\n replaceEntry(redirected, session.destination);\n session.entryId = redirected.id;\n }\n restoreScroll(destinationState.scroll);\n dispatchNavigation('ui:navigated', session);\n};\n\nconst performNavigation = (\n AlpineInstance: StreamAlpine,\n destination: URL,\n options: {\n history: boolean;\n preflight?: boolean;\n requestOptions?: RequestOptions;\n source?: Element;\n restoredState?: NavigateHistoryState;\n },\n): void => {\n const session: NavigationSession = {\n controller: new AbortController(),\n destination,\n entryId: options.restoredState?.id ?? null,\n history: options.history,\n requestId: navigationId(),\n ...(options.requestOptions ? {requestOptions: options.requestOptions} : {}),\n ...(options.source ? {source: options.source} : {}),\n };\n\n if (options.preflight !== false && !dispatchNavigation('ui:navigate', session, true)) return;\n supersedePriorNavigations();\n activeSession = session;\n dispatchNavigation('ui:navigating', session);\n\n const headers = new Headers(session.requestOptions?.headers);\n headers.set('X-Trellis-Navigation', session.history ? 'restore' : 'navigate');\n void requestWithAlpine(AlpineInstance, destination, {\n ...session.requestOptions,\n headers,\n method: 'GET',\n requestId: session.requestId,\n signal: session.controller.signal,\n ...(session.source ? {source: session.source} : {}),\n }).then((result) => {\n if (activeSession?.requestId !== session.requestId && !completedSessions.has(session.requestId)) return;\n finishSession(session, result, options.restoredState);\n }).catch((error: unknown) => {\n if (!session.controller.signal.aborted) {\n warn('x-ui-request.navigate: restoration failed', error);\n fallbackFor(session);\n }\n }).finally(() => {\n if (activeSession?.requestId === session.requestId) activeSession = null;\n if (!cancelledRequestIds.has(session.requestId)) rememberCompleted(session);\n });\n};\n\nconst initializeHistory = (): void => {\n const existing = navigateStateFrom(window.history.state);\n if (existing) {\n currentIndex = existing.index;\n } else {\n const navigate: NavigateHistoryState = {\n id: navigationId(),\n index: 0,\n scroll: captureScroll(),\n url: window.location.href,\n };\n replaceEntry(navigate);\n }\n if ('scrollRestoration' in window.history) window.history.scrollRestoration = 'manual';\n};\n\nconst registerNavigationRuntime = (AlpineInstance: Alpine.Alpine | StreamAlpine): void => {\n if (registered) return;\n registered = true;\n initializeHistory();\n setEffectRequestFilter((requestId) => !requestId || !cancelledRequestIds.has(requestId));\n setMorphExclusionFilter((requestId, element) => (\n element.matches('[data-ui-stream]')\n && Boolean(\n requestId\n && (\n activeSession?.requestId === requestId\n || completedSessions.has(requestId)\n )\n )\n ));\n setLocationEffectHandler(handleLocationEffect);\n\n window.addEventListener('scroll', scheduleCurrentScroll, {passive: true});\n document.addEventListener('scroll', scheduleCurrentScroll, {capture: true, passive: true});\n window.addEventListener('pagehide', flushCurrentScroll);\n window.addEventListener('popstate', (event) => {\n if (ignoreNextPopstate) {\n ignoreNextPopstate = false;\n return;\n }\n const restoredState = navigateStateFrom(event.state);\n if (!restoredState) {\n nativeNavigate(new URL(window.location.href));\n return;\n }\n const restoredScroll = scrollSnapshots.get(restoredState.id);\n const effectiveState = restoredScroll\n ? {...restoredState, scroll: restoredScroll}\n : restoredState;\n const destination = internalUrl(restoredState.url);\n if (!destination || destination.href !== window.location.href) {\n nativeNavigate(new URL(window.location.href));\n return;\n }\n\n const previousIndex = currentIndex;\n currentIndex = restoredState.index;\n const probe: NavigationSession = {\n controller: new AbortController(),\n destination,\n entryId: restoredState.id,\n history: true,\n requestId: navigationId(),\n };\n if (!dispatchNavigation('ui:navigate', probe, true)) {\n ignoreNextPopstate = true;\n window.history.go(previousIndex - restoredState.index);\n currentIndex = previousIndex;\n return;\n }\n performNavigation(AlpineInstance as StreamAlpine, destination, {\n history: true,\n preflight: false,\n restoredState: effectiveState,\n });\n });\n};\n\nconst navigateWithAlpine = (\n AlpineInstance: Alpine.Alpine | StreamAlpine,\n url: string | URL,\n source?: Element,\n requestOptions?: RequestOptions,\n): void => {\n performNavigation(AlpineInstance as StreamAlpine, new URL(url, document.baseURI), {\n history: false,\n ...(requestOptions ? {requestOptions} : {}),\n ...(source ? {source} : {}),\n });\n};\n\nexport {\n HISTORY_NAMESPACE,\n SCROLL_CONTAINER_SELECTOR,\n navigateWithAlpine,\n registerNavigationRuntime,\n};\n","import type Alpine from 'alpinejs';\nimport {registerRequestRuntime, requestWithAlpine, type RequestOptions} from '@client/runtime/engine/request';\nimport {navigateWithAlpine, registerNavigationRuntime} from '@client/runtime/engine/navigation';\nimport {isRecord, warn} from '../utils';\n\ntype RequestDirectiveContext = Pick<Alpine.DirectiveData, 'expression'>;\ntype RequestDirectiveOptions = RequestOptions & Record<string, unknown>;\n\nconst REQUEST_ROOT_SELECTOR = '[x-ui-request], [x-ui-request\\\\.navigate]';\nconst OPTION_KEYS = new Set(['data', 'extra', 'headers', 'method']);\nconst CLICK_MODIFIER_KEYS: Array<keyof MouseEvent> = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'];\nconst nativeFormSubmissions = new WeakSet<HTMLFormElement>();\n\nconst readOptions = (\n el: Element,\n {expression}: RequestDirectiveContext,\n utilities: Alpine.DirectiveUtilities,\n): RequestDirectiveOptions | null => {\n if (!expression?.trim()) return {};\n\n const evaluated = utilities.Alpine.evaluate(el, expression);\n if (!isRecord(evaluated)) {\n warn('x-ui-request: expression must evaluate to an object');\n return null;\n }\n\n Object.keys(evaluated).forEach((key) => {\n if (!OPTION_KEYS.has(key)) warn('x-ui-request: unknown option key', key);\n });\n\n return evaluated as RequestDirectiveOptions;\n};\n\nconst submitterFrom = (event: SubmitEvent): HTMLElement | null => (\n event.submitter instanceof HTMLElement ? event.submitter : null\n);\n\nconst shouldEnhanceFormSubmit = (form: HTMLFormElement, event: SubmitEvent, submitter: HTMLElement | null): boolean => {\n if (event.defaultPrevented) return false;\n if ((submitter?.getAttribute('formmethod') || form.getAttribute('method'))?.toLowerCase() === 'dialog') return false;\n if (form.getAttribute('target')) return false;\n if (submitter?.getAttribute('formtarget')) return false;\n\n if (!form.noValidate && !form.checkValidity()) {\n form.reportValidity();\n return false;\n }\n\n return true;\n};\n\nconst samePageHashOnly = (url: URL): boolean => (\n url.hash !== ''\n && url.origin === window.location.origin\n && url.pathname === window.location.pathname\n && url.search === window.location.search\n);\n\nconst shouldEnhanceAnchorClick = (anchor: HTMLAnchorElement, event: MouseEvent, navigate: boolean): boolean => {\n if (event.defaultPrevented) return false;\n if (event.button !== 0) return false;\n if (navigate && CLICK_MODIFIER_KEYS.some((key) => event[key])) return false;\n if (anchor.hasAttribute('download')) return false;\n if (anchor.getAttribute('target')) return false;\n\n const url = new URL(anchor.href, document.baseURI);\n if (url.origin !== window.location.origin) return false;\n return !samePageHashOnly(url);\n};\n\nconst registerFormDirective = (\n AlpineInstance: Alpine.Alpine,\n form: HTMLFormElement,\n directive: RequestDirectiveContext,\n utilities: Alpine.DirectiveUtilities,\n): void => {\n const onSubmit = (event: SubmitEvent): void => {\n if (nativeFormSubmissions.delete(form)) return;\n const submitter = submitterFrom(event);\n if (!shouldEnhanceFormSubmit(form, event, submitter)) return;\n\n const options = readOptions(form, directive, utilities);\n if (!options) return;\n\n event.preventDefault();\n void requestWithAlpine(AlpineInstance, undefined, {\n ...options,\n source: form,\n submitter,\n }).then((result) => {\n if (result.type !== 'unavailable') return;\n nativeFormSubmissions.add(form);\n form.requestSubmit(submitter ?? undefined);\n }).catch((error: unknown) => warn('x-ui-request: request failed', error));\n };\n\n form.addEventListener('submit', onSubmit);\n utilities.cleanup?.(() => form.removeEventListener('submit', onSubmit));\n};\n\nconst registerAnchorDirective = (\n AlpineInstance: Alpine.Alpine,\n anchor: HTMLAnchorElement,\n directive: RequestDirectiveContext,\n utilities: Alpine.DirectiveUtilities,\n behavior: {navigate: boolean},\n): void => {\n const onClick = (event: MouseEvent): void => {\n if (!shouldEnhanceAnchorClick(anchor, event, behavior.navigate)) return;\n\n const options = readOptions(anchor, directive, utilities);\n if (!options) return;\n\n event.preventDefault();\n if (behavior.navigate) {\n navigateWithAlpine(AlpineInstance, anchor.href, anchor, options);\n return;\n }\n void requestWithAlpine(AlpineInstance, anchor.href, {\n ...options,\n method: options.method ?? 'GET',\n source: anchor,\n }).then((result) => {\n if (result.type === 'unavailable') window.location.assign(anchor.href);\n }).catch((error: unknown) => warn('x-ui-request: request failed', error));\n };\n\n anchor.addEventListener('click', onClick);\n utilities.cleanup?.(() => anchor.removeEventListener('click', onClick));\n};\n\nconst registerRequestDirective = (AlpineInstance: Alpine.Alpine): void => {\n AlpineInstance.addRootSelector(() => REQUEST_ROOT_SELECTOR);\n registerRequestRuntime(AlpineInstance);\n registerNavigationRuntime(AlpineInstance);\n\n AlpineInstance.directive('ui-request', (el, {expression, modifiers}, utilities) => {\n const directive = {expression};\n\n if (el instanceof HTMLFormElement) {\n registerFormDirective(AlpineInstance, el, directive, utilities);\n return;\n }\n\n if (el instanceof HTMLAnchorElement) {\n registerAnchorDirective(AlpineInstance, el, directive, utilities, {\n navigate: modifiers.includes('navigate'),\n });\n return;\n }\n\n warn('x-ui-request: directive only supports forms and anchors', el);\n });\n};\n\nexport {REQUEST_ROOT_SELECTOR, registerRequestDirective};\n","import type Alpine from 'alpinejs';\nimport {\n findAlpineMachineOwner,\n type AlpineMachineOwner,\n} from '@client/runtime/alpine-machine';\nimport type {TransitionContext} from '@client/runtime/transition-coordinator';\nimport {warn} from '@client/utils';\n\ntype TransitionEvaluator = ReturnType<Alpine.DirectiveUtilities['evaluateLater']>;\n\nconst evaluateTransition = <TProps, TData, TElement>(\n evaluator: TransitionEvaluator,\n transition: TransitionContext<TProps, TData, TElement>,\n): unknown => {\n let synchronous = true;\n let completedSynchronously = false;\n let result: unknown;\n let resolve!: (value: unknown) => void;\n const pending = new Promise<unknown>((resolvePromise) => {\n resolve = resolvePromise;\n });\n\n evaluator((value) => {\n if (synchronous) {\n completedSynchronously = true;\n result = value;\n return;\n }\n resolve(value);\n }, {scope: {$transition: transition}});\n synchronous = false;\n\n return completedSynchronously ? result : pending;\n};\n\nconst registerTransitionDirective = (AlpineInstance: Alpine.Alpine): void => {\n AlpineInstance.directive(\n 'ui-transition',\n AlpineInstance.skipDuringClone((el, {value: name, expression}, utilities) => {\n if (!name) {\n warn('x-ui-transition requires a transition name', el);\n return;\n }\n\n const owner = findAlpineMachineOwner(AlpineInstance, el);\n if (!owner) {\n warn(`x-ui-transition:${name} requires an owning Trellis machine`, el);\n return;\n }\n\n const evaluator = expression?.trim() ? utilities.evaluateLater(expression) : null;\n const unregister = owner.onTransition(name, (transition) => (\n evaluator ? evaluateTransition(evaluator, transition) : undefined\n ), el as Parameters<AlpineMachineOwner['onTransition']>[2]);\n utilities.cleanup(unregister);\n }),\n );\n};\n\nexport {registerTransitionDirective};\n","import type Alpine from 'alpinejs';\n\n// This engine adapts behavior and matching ideas from Alpine Morph, Morphlex, Idiomorph, and Datastar.\n// See THIRD_PARTY_NOTICES.md for provenance and license notices.\n\ntype Skip = () => void;\ntype ChildrenOnly = () => void;\ntype SkipChildren = () => void;\ntype SkipUntil = (predicate: (node: Node) => boolean) => void;\ntype UpdatingHook = (\n from: Node,\n to: Node,\n childrenOnly: ChildrenOnly,\n skip: Skip,\n skipChildren: SkipChildren,\n skipUntil: SkipUntil,\n) => void;\ntype SkippableNodeHook = (node: Node, skip: Skip) => void;\ntype PruningPolicy = 'after-root-hook' | 'before-descendant-hook';\n\ntype MorphOptions = {\n key?: (element: Element) => unknown;\n lookahead?: boolean;\n updating?: UpdatingHook;\n updated?: (from: Node, to: Node) => void;\n removing?: SkippableNodeHook;\n removed?: (node: Node) => void;\n adding?: SkippableNodeHook;\n added?: (node: Node) => void;\n};\n\ntype MorphAlpine = Omit<Alpine.Alpine, 'cloneNode' | 'closestDataStack'> & {\n cloneNode(from: Element, to: Element): void;\n closestDataStack(node: Node): unknown;\n morph(from: Element, toHtml: Element | string, options?: MorphOptions): Element;\n morphBetween(\n startMarker: Comment,\n endMarker: Comment,\n toHtml: Element | string,\n options?: MorphOptions,\n ): void;\n};\n\ntype AlpineNode = Node & {\n _x_bindings?: {id?: string};\n _x_dataStack?: unknown;\n _x_currentIfEl?: AlpineNode;\n _x_lastRenderedEl?: AlpineNode;\n _x_lookup?: Map<unknown, AlpineNode>;\n _x_teleport?: AlpineNode;\n _x_transitioning?: unknown;\n _x_isShown?: boolean;\n};\n\ntype Parent = Node & {\n children: Iterable<Element>;\n firstChild: ChildNode | null;\n insertBefore(node: Node, before: Node | null): Node;\n};\n\nconst noop = (): void => {};\nlet alpineInstance: MorphAlpine | undefined;\n\nclass Block {\n constructor(\n readonly startComment: Comment,\n readonly endComment: Comment,\n ) {}\n\n get children(): Element[] {\n const children: Element[] = [];\n let node = this.startComment.nextSibling;\n while (node && node !== this.endComment) {\n if (node instanceof Element) children.push(node);\n node = node.nextSibling;\n }\n return children;\n }\n\n get firstChild(): ChildNode | null {\n const first = this.startComment.nextSibling;\n return first === this.endComment ? null : first;\n }\n\n appendChild(node: Node): Node {\n this.endComment.before(node);\n return node;\n }\n\n insertBefore(node: Node, reference: Node | null): Node {\n ((reference ?? this.endComment) as ChildNode).before(node);\n return node;\n }\n\n nextNode(reference: Node): ChildNode | null {\n const next = reference.nextSibling;\n return next === this.endComment ? null : next;\n }\n}\n\nconst nextSibling = (parent: Parent | Block, node: Node): ChildNode | null => (\n parent instanceof Block ? parent.nextNode(node) : node.nextSibling\n);\n\nconst createElement = (html: string): Element => {\n const template = document.createElement('template');\n template.innerHTML = html;\n const element = template.content.firstElementChild;\n if (!element) throw new Error('Morph HTML must contain a root element.');\n return element;\n};\n\nconst setIncomingAttribute = (target: Element, incoming: Attr): void => {\n if (incoming.namespaceURI) {\n target.setAttributeNodeNS(incoming.cloneNode() as Attr);\n } else if (incoming.name.includes('@')) {\n target.setAttributeNode(incoming.cloneNode() as Attr);\n } else {\n target.setAttribute(incoming.name, incoming.value);\n }\n};\n\nconst shouldSkip = (hook: SkippableNodeHook, node: Node): boolean => {\n let skip = false;\n hook(node, () => { skip = true; });\n return skip;\n};\n\nconst isConditionalStart = (node: Node | null): boolean => (\n node?.nodeType === Node.COMMENT_NODE && node.textContent === '[if BLOCK]><![endif]'\n);\n\nconst isConditionalEnd = (node: Node | null): boolean => (\n node?.nodeType === Node.COMMENT_NODE && node.textContent === '[if ENDBLOCK]><![endif]'\n);\n\nconst conditionalEnd = (parent: Parent | Block, start: Node): Comment => {\n let depth = 0;\n let node: Node | null = start;\n while ((node = nextSibling(parent, node))) {\n if (isConditionalStart(node)) depth += 1;\n else if (isConditionalEnd(node) && depth > 0) depth -= 1;\n else if (isConditionalEnd(node)) return node as Comment;\n }\n throw new Error('Unclosed conditional morph block.');\n};\n\ntype OwnedRange = {\n start: AlpineNode;\n end: AlpineNode;\n};\n\nconst ownedRange = (start: AlpineNode): OwnedRange => {\n let end = start;\n if (start._x_lastRenderedEl) end = start._x_lastRenderedEl;\n else if (start._x_currentIfEl) end = ownedRange(start._x_currentIfEl).end;\n else if (start._x_lookup?.size) {\n const owned = new Set(start._x_lookup.values());\n let sibling = start.nextSibling as AlpineNode | null;\n while (sibling && owned.has(sibling)) {\n end = ownedRange(sibling).end;\n sibling = end.nextSibling as AlpineNode | null;\n }\n }\n return {start, end};\n};\n\nconst afterOwnedRange = (parent: Parent | Block, range: OwnedRange): AlpineNode | null => (\n nextSibling(parent, range.end) as AlpineNode | null\n);\n\nconst isServerEqual = (from: AlpineNode, to: AlpineNode): boolean => {\n if (from.nodeType !== to.nodeType || from.nodeName !== to.nodeName) return false;\n if (from.nodeType === Node.TEXT_NODE || from.nodeType === Node.COMMENT_NODE) {\n return from.nodeValue === to.nodeValue;\n }\n if (from instanceof HTMLTemplateElement && to instanceof HTMLTemplateElement) {\n const fromTemplate = from as HTMLTemplateElement & AlpineNode;\n const toTemplate = to as HTMLTemplateElement & AlpineNode;\n if (fromTemplate._x_teleport) {\n const incomingTeleport = toTemplate._x_teleport ?? to.content.firstElementChild;\n return Boolean(incomingTeleport && isServerEqual(fromTemplate._x_teleport, incomingTeleport as AlpineNode));\n }\n return from.isEqualNode(to);\n }\n if (from instanceof Element && to instanceof Element) {\n if (from.attributes.length !== to.attributes.length) return false;\n for (const {name, value} of from.attributes) {\n if (to.getAttribute(name) !== value) return false;\n }\n }\n\n let fromChild = from.firstChild as AlpineNode | null;\n let toChild = to.firstChild as AlpineNode | null;\n while (fromChild && toChild) {\n if (!isServerEqual(fromChild, toChild)) return false;\n fromChild = ownedRange(fromChild).end.nextSibling as AlpineNode | null;\n toChild = toChild.nextSibling as AlpineNode | null;\n }\n return fromChild === null && toChild === null;\n};\n\nconst moveOwnedRangeBefore = (parent: Parent | Block, range: OwnedRange, before: Node | null): void => {\n if (range.start === before || afterOwnedRange(parent, range) === before) return;\n let node: Node | null = range.start;\n while (node) {\n const next: ChildNode | null = node.nextSibling;\n parent.insertBefore(node, before);\n if (node === range.end) break;\n node = next;\n }\n};\n\nconst seedDynamicId = (to: AlpineNode, from: AlpineNode | null): void => {\n const id = from?._x_bindings?.id;\n if (!id || !(to instanceof Element)) return;\n to.setAttribute('id', id);\n (to as HTMLElement).id = id;\n};\n\nconst buildDescendantCorrespondence = (\n fromElements: Element[],\n toElements: Element[],\n getKey: (node: Node | null) => unknown,\n): WeakMap<Node, symbol> => {\n const correspondence = new WeakMap<Node, symbol>();\n const fromDirectKeys = fromElements.map(getKey).filter(Boolean);\n const toDirectKeys = toElements.map(getKey).filter(Boolean);\n const directKeysReordered = fromDirectKeys.length >= 2\n && fromDirectKeys.length === toDirectKeys.length\n && new Set(fromDirectKeys).size === fromDirectKeys.length\n && fromDirectKeys.some((key, index) => key !== toDirectKeys[index])\n && fromDirectKeys.every((key) => toDirectKeys.includes(key));\n if (!directKeysReordered) return correspondence;\n\n const idCounts = (elements: Element[]): Map<string, number> => {\n const counts = new Map<string, number>();\n const count = (element: Element): void => {\n if (element.id) counts.set(element.id, (counts.get(element.id) ?? 0) + 1);\n };\n for (const element of elements) {\n count(element);\n element.querySelectorAll('[id]').forEach(count);\n }\n return counts;\n };\n const fromIdCounts = idCounts(fromElements);\n const toIdCounts = idCounts(toElements);\n const tokens = new Map<string, symbol>();\n for (const [id, count] of fromIdCounts) {\n if (count === 1 && toIdCounts.get(id) === 1) tokens.set(id, Symbol(id));\n }\n\n const indexDescendant = (element: Element): void => {\n if (getKey(element)) return;\n for (const descendant of element.querySelectorAll('[id]')) {\n const token = tokens.get(descendant.id);\n if (!token) continue;\n correspondence.set(element, token);\n return;\n }\n };\n fromElements.forEach(indexDescendant);\n toElements.forEach(indexDescendant);\n return correspondence;\n};\n\nconst createContext = (options: MorphOptions = {}) => {\n const context = {\n key: options.key ?? ((element: Element) => element.getAttribute('key')),\n lookahead: options.lookahead ?? false,\n updating: options.updating ?? noop,\n updated: options.updated ?? noop,\n removing: options.removing ?? noop,\n removed: options.removed ?? noop,\n adding: options.adding ?? noop,\n added: options.added ?? noop,\n skipUntilCondition: null as ((node: Node) => boolean) | null,\n };\n\n const getKey = (node: Node | null): unknown => (\n node instanceof Element ? context.key(node) : null\n );\n\n const requiresReplacement = (from: Node, to: Node): boolean => (\n from.nodeType !== to.nodeType\n || from.nodeName !== to.nodeName\n || getKey(from) !== getKey(to)\n );\n\n const insertNodeBefore = (\n parent: Parent | Block,\n source: Node,\n before: Node | null,\n ): {inserted: false; node: null} | {inserted: true; node: AlpineNode} => {\n if (shouldSkip(context.adding, source)) return {inserted: false, node: null};\n const clone = source.cloneNode(true);\n parent.insertBefore(clone, before);\n context.added(clone);\n return {inserted: true, node: clone as AlpineNode};\n };\n\n const removeNode = (node: Node): boolean => {\n if (shouldSkip(context.removing, node)) return false;\n node.parentNode?.removeChild(node);\n context.removed(node);\n return true;\n };\n\n const removeOwnedRange = (range: OwnedRange): boolean => {\n if (shouldSkip(context.removing, range.start)) return false;\n range.start.parentNode?.removeChild(range.start);\n context.removed(range.start);\n return true;\n };\n\n const replaceNode = (from: Node, to: Node): boolean => {\n if (shouldSkip(context.removing, from)) return false;\n const clone = to.cloneNode(true);\n if (shouldSkip(context.adding, clone)) return false;\n from.parentNode?.replaceChild(clone, from);\n context.removed(from);\n context.added(clone);\n return true;\n };\n\n const patchAttributes = (from: AlpineNode & Element, to: Element): boolean => {\n if (from._x_transitioning) return false;\n if ((from._x_isShown && !(to as AlpineNode)._x_isShown)\n || (!from._x_isShown && (to as AlpineNode)._x_isShown)) return false;\n\n let changed = false;\n const existing = Array.from(from.attributes);\n for (let index = existing.length - 1; index >= 0; index -= 1) {\n const name = existing[index]!.name;\n if (to.hasAttribute(name)) continue;\n if (name === 'open' && from instanceof HTMLDialogElement && from.open) from.close();\n else from.removeAttribute(name);\n changed = true;\n }\n const incoming = Array.from(to.attributes);\n for (let index = incoming.length - 1; index >= 0; index -= 1) {\n const attribute = incoming[index]!;\n const {name, value} = attribute;\n if (from.getAttribute(name) === value) continue;\n setIncomingAttribute(from, attribute);\n changed = true;\n }\n return changed;\n };\n\n let patchChildren: (from: Parent | Block, to: Parent | Block) => boolean;\n\n const patchNode = (from: AlpineNode, to: AlpineNode, pruning: PruningPolicy): boolean => {\n if (requiresReplacement(from, to)) return replaceNode(from, to);\n if (pruning === 'before-descendant-hook'\n && from.nodeType !== Node.COMMENT_NODE\n && isServerEqual(from, to)) return false;\n\n let childrenOnly = false;\n let skipChildren = false;\n let skip = false;\n const skipUntil = (predicate: (node: Node) => boolean): void => {\n context.skipUntilCondition = predicate;\n };\n context.updating(\n from,\n to,\n () => { childrenOnly = true; },\n () => { skip = true; },\n () => { skipChildren = true; },\n skipUntil,\n );\n if (skip) return false;\n\n // Descendants that are server-identical are opaque. The root is checked only\n // after its hook has had the opportunity to mutate the incoming tree.\n if (isServerEqual(from, to)) return false;\n\n let changed = false;\n if (from.nodeType === Node.ELEMENT_NODE && alpineInstance) {\n alpineInstance.cloneNode(from as Element, to as Element);\n if (from._x_teleport && to._x_teleport) {\n changed = patch(from._x_teleport, to._x_teleport) || changed;\n }\n }\n\n if (to.nodeType === Node.TEXT_NODE || to.nodeType === Node.COMMENT_NODE) {\n if (from.nodeValue === to.nodeValue) return false;\n from.nodeValue = to.nodeValue;\n context.updated(from, to);\n return true;\n }\n\n if (!childrenOnly) changed = patchAttributes(from as AlpineNode & Element, to as Element) || changed;\n if (!skipChildren) changed = patchChildren(from as unknown as Parent, to as unknown as Parent) || changed;\n if (changed) context.updated(from, to);\n return changed;\n };\n\n const patch = (from: AlpineNode, to: AlpineNode): boolean => (\n patchNode(from, to, 'before-descendant-hook')\n );\n const patchRoot = (from: AlpineNode, to: AlpineNode): boolean => (\n patchNode(from, to, 'after-root-hook')\n );\n\n patchChildren = (from: Parent | Block, to: Parent | Block): boolean => {\n const fromElements = Array.from(from.children);\n const toElements = Array.from(to.children);\n const correspondence = buildDescendantCorrespondence(fromElements, toElements, getKey);\n\n const childKey = (node: Node | null): unknown => (\n node ? getKey(node) || correspondence.get(node) : null\n );\n const keyed = new Map<unknown, AlpineNode>();\n for (const element of fromElements) {\n const key = childKey(element);\n if (key) keyed.set(key, element as AlpineNode);\n }\n\n let changed = false;\n let currentFrom = from.firstChild as AlpineNode | null;\n let currentTo = to.firstChild as AlpineNode | null;\n\n incoming: while (currentTo) {\n seedDynamicId(currentTo, currentFrom);\n\n if (context.skipUntilCondition) {\n const fromDone = !currentFrom || context.skipUntilCondition(currentFrom);\n const toDone = context.skipUntilCondition(currentTo);\n if (fromDone && toDone) context.skipUntilCondition = null;\n else {\n if (!fromDone && currentFrom) currentFrom = afterOwnedRange(from, ownedRange(currentFrom));\n if (!toDone) currentTo = nextSibling(to, currentTo) as AlpineNode | null;\n continue;\n }\n }\n\n if (!currentFrom) {\n const addition = insertNodeBefore(from, currentTo, null);\n changed = addition.inserted || changed;\n currentTo = nextSibling(to, currentTo) as AlpineNode | null;\n continue;\n }\n\n if (isConditionalStart(currentFrom) && isConditionalStart(currentTo)) {\n const fromEnd = conditionalEnd(from, currentFrom);\n const toEnd = conditionalEnd(to, currentTo);\n changed = patchChildren(new Block(currentFrom as Comment, fromEnd), new Block(currentTo as Comment, toEnd)) || changed;\n currentFrom = nextSibling(from, fromEnd) as AlpineNode | null;\n currentTo = nextSibling(to, toEnd) as AlpineNode | null;\n continue;\n } else {\n if (context.lookahead\n && currentFrom instanceof Element\n && !currentFrom.isEqualNode(currentTo)) {\n let lookahead = nextSibling(to, currentTo) as AlpineNode | null;\n while (lookahead) {\n if (lookahead instanceof Element && currentFrom.isEqualNode(lookahead)) {\n const addition = insertNodeBefore(from, currentTo, currentFrom);\n if (!addition.inserted) {\n currentTo = nextSibling(to, currentTo) as AlpineNode | null;\n continue incoming;\n }\n currentFrom = addition.node;\n changed = true;\n break;\n }\n lookahead = nextSibling(to, lookahead) as AlpineNode | null;\n }\n }\n\n const toKey = childKey(currentTo);\n const fromKey = childKey(currentFrom);\n if (toKey !== fromKey) {\n const keyedMatch = toKey ? keyed.get(toKey) : undefined;\n if (keyedMatch) {\n moveOwnedRangeBefore(from, ownedRange(keyedMatch), currentFrom);\n currentFrom = keyedMatch;\n changed = true;\n } else if (toKey || fromKey) {\n const addition = insertNodeBefore(from, currentTo, currentFrom);\n if (!addition.inserted) {\n currentTo = nextSibling(to, currentTo) as AlpineNode | null;\n continue;\n }\n currentFrom = addition.node;\n changed = true;\n }\n }\n\n const afterFrom = afterOwnedRange(from, ownedRange(currentFrom));\n changed = patch(currentFrom, currentTo) || changed;\n currentFrom = afterFrom;\n }\n\n currentTo = nextSibling(to, currentTo) as AlpineNode | null;\n }\n\n while (currentFrom) {\n const range = ownedRange(currentFrom);\n const after = afterOwnedRange(from, range);\n changed = (range.end === range.start ? removeNode(currentFrom) : removeOwnedRange(range)) || changed;\n currentFrom = after;\n }\n return changed;\n };\n\n return {patchChildren, patchRoot};\n};\n\nconst morph = (from: Element, toHtml: Element | string, options: MorphOptions = {}): Element => {\n const to = (typeof toHtml === 'string' ? createElement(toHtml) : toHtml) as AlpineNode & Element;\n const source = from as AlpineNode & Element;\n if (alpineInstance?.closestDataStack && !source._x_dataStack) {\n to._x_dataStack = alpineInstance.closestDataStack(source);\n if (to._x_dataStack) alpineInstance.cloneNode(source, to);\n }\n createContext(options).patchRoot(source, to);\n return from;\n};\n\nconst morphBetween = (\n startMarker: Comment,\n endMarker: Comment,\n toHtml: Element | string,\n options: MorphOptions = {},\n): void => {\n const fromContainer = startMarker.parentNode as AlpineNode & Parent;\n const toContainer = typeof toHtml === 'string'\n ? (() => {\n const container = document.createElement('div');\n container.insertAdjacentHTML('beforeend', toHtml);\n return container;\n })()\n : toHtml;\n const toStart = document.createComment('[morph-start]');\n const toEnd = document.createComment('[morph-end]');\n toContainer.insertBefore(toStart, toContainer.firstChild);\n toContainer.appendChild(toEnd);\n if (alpineInstance?.closestDataStack) {\n (toContainer as AlpineNode)._x_dataStack = alpineInstance.closestDataStack(fromContainer);\n if ((toContainer as AlpineNode)._x_dataStack) alpineInstance.cloneNode(fromContainer as unknown as Element, toContainer);\n }\n createContext(options).patchChildren(\n new Block(startMarker, endMarker),\n new Block(toStart, toEnd),\n );\n};\n\nconst trellisMorph = (AlpineInstance: Alpine.Alpine): void => {\n const instance = AlpineInstance as MorphAlpine;\n alpineInstance = instance;\n instance.morph = morph;\n instance.morphBetween = morphBetween;\n};\n\nexport {morph, morphBetween};\nexport default trellisMorph;\n","import type {Alpine as AlpineType} from 'alpinejs';\n\nimport {registerLayoutDirective} from './directives/layout';\nimport {registerRequestDirective} from './directives/request';\nimport {registerTransitionDirective} from './directives/transition';\nimport morph from './runtime/morph-engine';\nimport {setPropReactivity} from './runtime/codecs';\nimport {registerConfirm} from './runtime/confirm';\nimport {registerStream} from './runtime/engine/stream';\nimport {registerThemeStore} from './runtime/theme';\nimport {registerUiMagic, ui} from './runtime/ui';\n\ntype CoreRuntimePlugin = (AlpineInstance: AlpineType) => void;\nconst registered = new WeakSet<AlpineType>();\n\nconst coreRuntime: CoreRuntimePlugin = (AlpineInstance): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n setPropReactivity(AlpineInstance.reactive);\n AlpineInstance.plugin(morph);\n registerLayoutDirective(AlpineInstance);\n registerUiMagic(AlpineInstance);\n registerTransitionDirective(AlpineInstance);\n registerThemeStore(AlpineInstance);\n registerConfirm();\n registerRequestDirective(AlpineInstance);\n registerStream(AlpineInstance);\n};\n\nexport {coreRuntime, ui};\nexport default coreRuntime;\nexport type {CoreRuntimePlugin};\nexport {\n bool,\n createAlpineMachine,\n createMachine,\n decodeProps,\n defineManifest,\n defineProps,\n defineStyles,\n json,\n mergeBindings,\n number,\n oneOf,\n propsFromSchema,\n resolveStyle,\n string,\n createTransitionCoordinator,\n defineHook,\n} from './runtime';\nexport type {\n AlpineMachine,\n AlpineMachineOwner,\n AlpinePropsChangedEvent,\n CodecFn,\n ComponentManifest,\n CreateAlpineMachineOptions,\n DecodePropsOptions,\n Machine,\n MachineConfig,\n MachineEffect,\n MachineEffectList,\n MachineEffectRef,\n MachineEntry,\n MachineEvent,\n MachineEventObject,\n MachineGuard,\n MachineOptions,\n MachineReducer,\n MachineReducerList,\n MachineReducerRef,\n MachineScope,\n MachineSnapshot,\n MachineStateConfig,\n MachineStateValue,\n MachineTransition,\n MachineTransitionDefinition,\n MachineUpdate,\n DefineManifestOptions,\n DefineStylesOptions,\n ManifestPart,\n ManifestProp,\n ManifestPropDetails,\n ManifestToken,\n MachineFactoryScope,\n BindingInput,\n PropState,\n PropsFromSchemaOptions,\n MergeBindingsOptions,\n ResolveStyleOptions,\n SchemaPropDetails,\n SchemaToProps,\n StyleDefinition,\n StylePart,\n StyleProps,\n TrellisAlpineComponent,\n AnyTransitionHook,\n TransitionCallback,\n TransitionContext,\n TransitionCoordinator,\n TransitionCoordinatorOptions,\n TransitionEventCreator,\n TransitionHookDefinition,\n UiRuntime,\n} from './runtime';\nexport {registerTransitionDirective} from './directives/transition';\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=(e,t)=>e.includes(t),t=({isEnabled:t,roots:n,onDismiss:r})=>{let i=i=>{if(!t())return;let a=i.composedPath();n().filter(e=>e!=null).some(t=>e(a,t))||r(i)};return document.addEventListener(`pointerdown`,i,{capture:!0}),()=>{document.removeEventListener(`pointerdown`,i,{capture:!0})}};export{t};
|
|
2
|
+
//# sourceMappingURL=dismissable-layer-BROE-Ln2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dismissable-layer-BROE-Ln2.js","names":[],"sources":["../../../../../../../../client/src/runtime/dismissable-layer.ts"],"sourcesContent":["type DismissableLayerOptions = {\n isEnabled: () => boolean;\n roots: () => Array<EventTarget | null | undefined>;\n onDismiss: (event: PointerEvent) => void;\n};\n\nconst eventPathIncludes = (path: EventTarget[], root: EventTarget): boolean => path.includes(root);\n\nconst addDismissableLayer = ({\n isEnabled,\n roots,\n onDismiss,\n}: DismissableLayerOptions): (() => void) => {\n const handlePointerDown = (event: PointerEvent): void => {\n if (!isEnabled()) return;\n\n const path = event.composedPath();\n const isInsideLayer = roots()\n .filter((root): root is EventTarget => root !== null && root !== undefined)\n .some((root) => eventPathIncludes(path, root));\n\n if (!isInsideLayer) onDismiss(event);\n };\n\n document.addEventListener('pointerdown', handlePointerDown, {capture: true});\n\n return () => {\n document.removeEventListener('pointerdown', handlePointerDown, {capture: true});\n };\n};\n\nexport {addDismissableLayer};\nexport type {DismissableLayerOptions};\n"],"mappings":"AAMA,IAAM,GAAqB,EAAqB,IAA+B,EAAK,SAAS,CAAI,EAE3F,GAAuB,CACzB,YACA,QACA,eACyC,CACzC,IAAM,EAAqB,GAA8B,CACrD,GAAI,CAAC,EAAU,EAAG,OAElB,IAAM,EAAO,EAAM,aAAa,EACV,EAAM,EACvB,OAAQ,GAA8B,GAAS,IAA0B,EACzE,KAAM,GAAS,EAAkB,EAAM,CAAI,CAE3C,GAAe,EAAU,CAAK,CACvC,EAIA,OAFA,SAAS,iBAAiB,cAAe,EAAmB,CAAC,QAAS,EAAI,CAAC,MAE9D,CACT,SAAS,oBAAoB,cAAe,EAAmB,CAAC,QAAS,EAAI,CAAC,CAClF,CACJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=[`true`,`1`,`yes`,`on`],t=({value:t})=>t!==void 0&&(t===``||e.includes(t.toLowerCase())),n=({el:e,name:t,detail:n,composed:r=!1})=>{let i={bubbles:!0,composed:r};n!==void 0&&(i.detail=n),e.dispatchEvent(new CustomEvent(t,i))},r=({target:e,event:t,handler:n,cleanup:r,options:i})=>{e.addEventListener(t,n,i);let a=()=>e.removeEventListener(t,n,i);return r?.push(a),a},i=({el:e,attr:t,present:n,value:r=``})=>{if(n){e.getAttribute(t)!==r&&e.setAttribute(t,r);return}e.removeAttribute(t)},a=({el:e,attr:t,value:n})=>{e.getAttribute(t)!==n&&e.setAttribute(t,n)},o=({el:e,attr:t})=>{e.hasAttribute(t)&&e.removeAttribute(t)},s=({el:e})=>(e.closest(`[dir]`)?.dir||document.dir).toLowerCase()===`rtl`;export{o as a,s as i,t as n,a as o,n as r,i as s,r as t};
|
|
2
|
+
//# sourceMappingURL=dom-qAeVl7dc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dom-qAeVl7dc.js","names":[],"sources":["../../../../../../../../client/src/utils/dom.ts"],"sourcesContent":["type CleanupStack = Array<() => void>;\n\ntype DispatchOptions<T> = {\n el: HTMLElement;\n name: string;\n detail?: T;\n composed?: boolean;\n};\n\ntype AddListenerOptions = {\n target: EventTarget;\n event: string;\n handler: EventListener;\n cleanup?: CleanupStack;\n options?: globalThis.AddEventListenerOptions;\n};\n\ntype PresenceOptions = {\n el: HTMLElement;\n attr: string;\n present: boolean;\n value?: string;\n};\n\ntype AttributeOptions = {\n el: HTMLElement;\n attr: string;\n value: string;\n};\n\ntype ElementOptions = {\n el: HTMLElement;\n};\n\ntype BoolOptions = {\n value: string | undefined;\n};\n\nconst TRUE_STRINGS = ['true', '1', 'yes', 'on'];\n\nconst asBool = ({value}: BoolOptions): boolean => (\n value !== undefined && (value === '' || TRUE_STRINGS.includes(value.toLowerCase()))\n);\n\nconst dispatch = <T = unknown>({el, name, detail, composed = false}: DispatchOptions<T>): void => {\n const eventInit: CustomEventInit<T> = {bubbles: true, composed};\n if (detail !== undefined) eventInit.detail = detail;\n el.dispatchEvent(new CustomEvent(name, eventInit));\n};\n\nconst addListener = ({\n target,\n event,\n handler,\n cleanup,\n options,\n}: AddListenerOptions): (() => void) => {\n target.addEventListener(event, handler, options);\n const remove = (): void => target.removeEventListener(event, handler, options);\n cleanup?.push(remove);\n return remove;\n};\n\nconst setPresence = ({el, attr, present, value = ''}: PresenceOptions): void => {\n if (present) {\n if (el.getAttribute(attr) !== value) el.setAttribute(attr, value);\n return;\n }\n\n el.removeAttribute(attr);\n};\n\nconst setAttribute = ({el, attr, value}: AttributeOptions): void => {\n if (el.getAttribute(attr) !== value) el.setAttribute(attr, value);\n};\n\nconst removeAttribute = ({el, attr}: Omit<AttributeOptions, 'value'>): void => {\n if (el.hasAttribute(attr)) el.removeAttribute(attr);\n};\n\nconst isRtl = ({el}: ElementOptions): boolean => {\n const closestDir = el.closest<HTMLElement>('[dir]');\n return (closestDir?.dir || document.dir).toLowerCase() === 'rtl';\n};\n\nexport {addListener, asBool, dispatch, isRtl, removeAttribute, setAttribute, setPresence};\nexport type {AddListenerOptions, AttributeOptions, BoolOptions, CleanupStack, DispatchOptions, ElementOptions, PresenceOptions};\n"],"mappings":"AAsCA,IAAM,EAAe,CAAC,OAAQ,IAAK,MAAO,IAAI,EAExC,GAAU,CAAC,WACb,IAAU,IAAA,KAAc,IAAU,IAAM,EAAa,SAAS,EAAM,YAAY,CAAC,GAG/E,GAAyB,CAAC,KAAI,OAAM,SAAQ,WAAW,MAAqC,CAC9F,IAAM,EAAgC,CAAC,QAAS,GAAM,UAAQ,EAC1D,IAAW,IAAA,KAAW,EAAU,OAAS,GAC7C,EAAG,cAAc,IAAI,YAAY,EAAM,CAAS,CAAC,CACrD,EAEM,GAAe,CACjB,SACA,QACA,UACA,UACA,aACoC,CACpC,EAAO,iBAAiB,EAAO,EAAS,CAAO,EAC/C,IAAM,MAAqB,EAAO,oBAAoB,EAAO,EAAS,CAAO,EAE7E,OADA,GAAS,KAAK,CAAM,EACb,CACX,EAEM,GAAe,CAAC,KAAI,OAAM,UAAS,QAAQ,MAA+B,CAC5E,GAAI,EAAS,CACL,EAAG,aAAa,CAAI,IAAM,GAAO,EAAG,aAAa,EAAM,CAAK,EAChE,MACJ,CAEA,EAAG,gBAAgB,CAAI,CAC3B,EAEM,GAAgB,CAAC,KAAI,OAAM,WAAmC,CAC5D,EAAG,aAAa,CAAI,IAAM,GAAO,EAAG,aAAa,EAAM,CAAK,CACpE,EAEM,GAAmB,CAAC,KAAI,UAAiD,CACvE,EAAG,aAAa,CAAI,GAAG,EAAG,gBAAgB,CAAI,CACtD,EAEM,GAAS,CAAC,SACO,EAAG,QAAqB,OACnC,GAAY,KAAO,SAAS,KAAK,YAAY,IAAM"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
var e=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports);function t(e){if(Array.isArray(e))return e}function n(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t===0){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function r(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function i(e,t){if(e){if(typeof e==`string`)return r(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}function a(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
2
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function o(e,r){return t(e)||n(e,r)||i(e,r)||a()}var s=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.bind=void 0;function t(e,t){var n=t.type,r=t.listener,i=t.options;return e.addEventListener(n,r,i),function(){e.removeEventListener(n,r,i)}}e.bind=t})),c=e((e=>{var t=e&&e.__assign||function(){return t=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},t.apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0}),e.bindAll=void 0;var n=s();function r(e){if(e!==void 0)return typeof e==`boolean`?{capture:e}:e}function i(e,n){return n==null?e:t(t({},e),{options:t(t({},r(n)),r(e.options))})}function a(e,t,r){var a=t.map(function(t){var a=i(t,r);return(0,n.bind)(e,a)});return function(){a.forEach(function(e){return e()})}}e.bindAll=a})),l=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.bindAll=e.bind=void 0;var t=s();Object.defineProperty(e,"bind",{enumerable:!0,get:function(){return t.bind}});var n=c();Object.defineProperty(e,"bindAll",{enumerable:!0,get:function(){return n.bindAll}})})),u=l(),d=`data-pdnd-honey-pot`;function f(e){return e instanceof Element&&e.hasAttribute(`data-pdnd-honey-pot`)}function p(e){var t=o(document.elementsFromPoint(e.x,e.y),2),n=t[0],r=t[1];return n?f(n)?r??null:n:null}function m(e){"@babel/helpers - typeof";return m=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},m(e)}function h(e,t){if(m(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(m(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function g(e){var t=h(e,`string`);return m(t)==`symbol`?t:t+``}function _(e,t,n){return(t=g(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function v(e){var t=null;return function(){if(!t){var n=[...arguments];t={result:e.apply(this,n)}}return t.result}}function y(e){if(Array.isArray(e))return r(e)}function ee(e){if(typeof Symbol<`u`&&e[Symbol.iterator]!=null||e[`@@iterator`]!=null)return Array.from(e)}function b(){throw TypeError(`Invalid attempt to spread non-iterable instance.
|
|
3
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function x(e){return y(e)||ee(e)||i(e)||b()}var S=v(function(){return navigator.userAgent.includes(`Firefox`)}),C=v(function(){var e=navigator.userAgent;return e.includes(`AppleWebKit`)&&!e.includes(`Chrome`)}),w={isLeavingWindow:Symbol(`leaving`),isEnteringWindow:Symbol(`entering`)};function T(e){var t=e.dragEnter;return C()?t.hasOwnProperty(w.isEnteringWindow):!1}function E(e){var t=e.dragLeave;return C()?t.hasOwnProperty(w.isLeavingWindow):!1}(function(){if(typeof window>`u`||!C())return;function e(){return{enterCount:0,isOverWindow:!1}}var t=e();function n(){t=e()}(0,u.bindAll)(window,[{type:`dragstart`,listener:function(){t.enterCount=0,t.isOverWindow=!0}},{type:`drop`,listener:n},{type:`dragend`,listener:n},{type:`dragenter`,listener:function(e){!t.isOverWindow&&t.enterCount===0&&(e[w.isEnteringWindow]=!0),t.isOverWindow=!0,t.enterCount++}},{type:`dragleave`,listener:function(e){t.enterCount--,t.isOverWindow&&t.enterCount===0&&(e[w.isLeavingWindow]=!0,t.isOverWindow=!1)}}],{capture:!0})})();function D(e){return`nodeName`in e}function O(e){return D(e)&&e.ownerDocument!==document}function k(e){var t=e.dragLeave,n=t.type,r=t.relatedTarget;return n===`dragleave`?C()?E({dragLeave:t}):r==null?!0:S()?O(r):r instanceof HTMLIFrameElement:!1}function A(e){var t=e.onDragEnd;return[{type:`pointermove`,listener:function(){var e=0;return function(){if(e<20){e++;return}t()}}()},{type:`pointerdown`,listener:t}]}function j(e){return{altKey:e.altKey,button:e.button,buttons:e.buttons,ctrlKey:e.ctrlKey,metaKey:e.metaKey,shiftKey:e.shiftKey,clientX:e.clientX,clientY:e.clientY,pageX:e.pageX,pageY:e.pageY}}var M=function(e){var t=[],n=null,r=function(){t=[...arguments],!n&&(n=requestAnimationFrame(function(){n=null,e.apply(void 0,t)}))};return r.cancel=function(){n&&=(cancelAnimationFrame(n),null)},r}(function(e){return e()}),N=function(){var e=null;function t(t){e={frameId:requestAnimationFrame(function(){e=null,t()}),fn:t}}function n(){e&&=(cancelAnimationFrame(e.frameId),e.fn(),null)}return{schedule:t,flush:n}}();function te(e){var t=e.source,n=e.initial,r=e.dispatchEvent,i={dropTargets:[]};function a(e){r(e),i={dropTargets:e.payload.location.current.dropTargets}}return{start:function(e){var r=e.nativeSetDragImage,o={current:n,previous:i,initial:n};a({eventName:`onGenerateDragPreview`,payload:{source:t,location:o,nativeSetDragImage:r}}),N.schedule(function(){a({eventName:`onDragStart`,payload:{source:t,location:o}})})},dragUpdate:function(e){var r=e.current;N.flush(),M.cancel(),a({eventName:`onDropTargetChange`,payload:{source:t,location:{initial:n,previous:i,current:r}}})},drag:function(e){var r=e.current;M(function(){N.flush(),a({eventName:`onDrag`,payload:{source:t,location:{initial:n,previous:i,current:r}}})})},drop:function(e){var r=e.current,o=e.updatedSourcePayload;N.flush(),M.cancel(),a({eventName:`onDrop`,payload:{source:o??t,location:{current:r,previous:i,initial:n}}})}}}var P={isActive:!1};function F(){return!P.isActive}function I(e){return e.dataTransfer?e.dataTransfer.setDragImage.bind(e.dataTransfer):null}function L(e){var t=e.current,n=e.next;if(t.length!==n.length)return!0;for(var r=0;r<t.length;r++)if(t[r].element!==n[r].element)return!0;return!1}function R(e){var t=e.event,n=e.dragType,r=e.getDropTargetsOver,i=e.dispatchEvent;if(!F())return;var a=ne({event:t,dragType:n,getDropTargetsOver:r});P.isActive=!0;var o={current:a};z({event:t,current:a.dropTargets});var s=te({source:n.payload,dispatchEvent:i,initial:a});function c(e){var t=L({current:o.current.dropTargets,next:e.dropTargets});o.current=e,t&&s.dragUpdate({current:o.current})}function l(e){var t=j(e),i=r({target:f(e.target)?p({x:t.clientX,y:t.clientY}):e.target,input:t,source:n.payload,current:o.current.dropTargets});i.length&&(e.preventDefault(),z({event:e,current:i})),c({dropTargets:i,input:t})}function d(){o.current.dropTargets.length&&c({dropTargets:[],input:o.current.input}),s.drop({current:o.current,updatedSourcePayload:null}),m()}function m(){P.isActive=!1,h()}var h=(0,u.bindAll)(window,[{type:`dragover`,listener:function(e){l(e),s.drag({current:o.current})}},{type:`dragenter`,listener:l},{type:`dragleave`,listener:function(e){k({dragLeave:e})&&(c({input:o.current.input,dropTargets:[]}),n.startedFrom===`external`&&d())}},{type:`drop`,listener:function(e){if(o.current={dropTargets:o.current.dropTargets,input:j(e)},!o.current.dropTargets.length){d();return}e.preventDefault(),z({event:e,current:o.current.dropTargets}),s.drop({current:o.current,updatedSourcePayload:n.type===`external`?n.getDropPayload(e):null}),m()}},{type:`dragend`,listener:function(e){o.current={dropTargets:o.current.dropTargets,input:j(e)},d()}}].concat(x(A({onDragEnd:d}))),{capture:!0});s.start({nativeSetDragImage:I(t)})}function z(e){var t=e.event,n=e.current[0]?.dropEffect;n!=null&&t.dataTransfer&&(t.dataTransfer.dropEffect=n)}function ne(e){var t=e.event,n=e.dragType,r=e.getDropTargetsOver,i=j(t);return n.startedFrom===`external`?{input:i,dropTargets:[]}:{input:i,dropTargets:r({input:i,source:n.payload,target:t.target,current:[]})}}var B={canStart:F,start:R},V=new Map;function H(e){var t=e.typeKey,n=e.mount,r=V.get(t);if(r)return r.usageCount++,r;var i={typeKey:t,unmount:n(),usageCount:1};return V.set(t,i),i}function U(e){var t=H(e);return function(){t.usageCount--,!(t.usageCount>0)&&(t.unmount(),V.delete(e.typeKey))}}function W(){var e=[...arguments];return function(){e.forEach(function(e){return e()})}}function G(e,t){var n=t.attribute,r=t.value;return e.setAttribute(n,r),function(){return e.removeAttribute(n)}}function K(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function q(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?K(Object(n),!0).forEach(function(t){_(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):K(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function J(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(!n){if(Array.isArray(e)||(n=Y(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
4
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var a,o=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||n.return==null||n.return()}finally{if(s)throw a}}}}function Y(e,t){if(e){if(typeof e==`string`)return X(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?X(e,t):void 0}}function X(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function Z(e){return e.slice(0).reverse()}function re(e){var t=e.typeKey,n=e.defaultDropEffect,r=new WeakMap,i=`data-drop-target-for-${t}`,a=`[${i}]`;function o(e){return r.set(e.element,e),function(){return r.delete(e.element)}}function s(e){return v(W(G(e.element,{attribute:i,value:`true`}),o(e)))}function c(e){var t=e.source,i=e.target,o=e.input,s=e.result,l=s===void 0?[]:s;if(i==null)return l;if(!(i instanceof Element))return i instanceof Node?c({source:t,target:i.parentElement,input:o,result:l}):l;var u=i.closest(a);if(u==null)return l;var d=r.get(u);if(d==null)return l;var f={input:o,source:t,element:d.element};if(d.canDrop&&!d.canDrop(f))return c({source:t,target:d.element.parentElement,input:o,result:l});var p=d.getData?.call(d,f)??{},m=d.getDropEffect?.call(d,f)??n,h={data:p,element:d.element,dropEffect:m,isActiveDueToStickiness:!1};return c({source:t,target:d.element.parentElement,input:o,result:[].concat(x(l),[h])})}function l(e){var t=e.eventName,n=e.payload,i=J(n.location.current.dropTargets),a;try{for(i.s();!(a=i.n()).done;){var o,s=a.value,c=r.get(s.element),l=q(q({},n),{},{self:s});c==null||(o=c[t])==null||o.call(c,l)}}catch(e){i.e(e)}finally{i.f()}}var u={onGenerateDragPreview:l,onDrag:l,onDragStart:l,onDrop:l,onDropTargetChange:function(e){var t=e.payload,n=new Set(t.location.current.dropTargets.map(function(e){return e.element})),i=new Set,a=J(t.location.previous.dropTargets),o;try{for(a.s();!(o=a.n()).done;){var s,c=o.value;i.add(c.element);var l=r.get(c.element),u=n.has(c.element),d=q(q({},t),{},{self:c});if(l==null||(s=l.onDropTargetChange)==null||s.call(l,d),!u){var f;l==null||(f=l.onDragLeave)==null||f.call(l,d)}}}catch(e){a.e(e)}finally{a.f()}var p=J(t.location.current.dropTargets),m;try{for(p.s();!(m=p.n()).done;){var h,g,_=m.value;if(!i.has(_.element)){var v=q(q({},t),{},{self:_}),y=r.get(_.element);y==null||(h=y.onDropTargetChange)==null||h.call(y,v),y==null||(g=y.onDragEnter)==null||g.call(y,v)}}}catch(e){p.e(e)}finally{p.f()}}};function d(e){u[e.eventName](e)}function f(e){var t=e.source,n=e.target,i=e.input,a=e.current,o=c({source:t,target:n,input:i});if(o.length>=a.length)return o;for(var s=Z(a),l=Z(o),u=[],d=0;d<s.length;d++){var f,p=s[d],m=l[d];if(m!=null){u.push(m);continue}var h=u[d-1],g=s[d-1];if(h?.element!==g?.element)break;var _=r.get(p.element);if(!_)break;var v={input:i,source:t,element:_.element};if(_.canDrop&&!_.canDrop(v)||!((f=_.getIsSticky)!=null&&f.call(_,v)))break;u.push(q(q({},p),{},{isActiveDueToStickiness:!0}))}return Z(u)}return{dropTargetForConsumers:s,getIsOver:f,dispatchEvent:d}}function ie(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(!n){if(Array.isArray(e)||(n=ae(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
5
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var a,o=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||n.return==null||n.return()}finally{if(s)throw a}}}}function ae(e,t){if(e){if(typeof e==`string`)return Q(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Q(e,t):void 0}}function Q(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function $(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function oe(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?$(Object(n),!0).forEach(function(t){_(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function se(){var e=new Set,t=null;function n(e){t&&(!e.canMonitor||e.canMonitor(t.canMonitorArgs))&&t.active.add(e)}function r(r){var i=oe({},r);e.add(i),n(i);function a(){e.delete(i),t&&t.active.delete(i)}return v(a)}function i(r){var i=r.eventName,a=r.payload;if(i===`onGenerateDragPreview`){t={canMonitorArgs:{initial:a.location.initial,source:a.source},active:new Set};var o=ie(e),s;try{for(o.s();!(s=o.n()).done;){var c=s.value;n(c)}}catch(e){o.e(e)}finally{o.f()}}if(t){for(var l=Array.from(t.active),u=0,d=l;u<d.length;u++){var f=d[u];if(t.active.has(f)){var p;(p=f[i])==null||p.call(f,a)}}i===`onDrop`&&(t.active.clear(),t=null)}}return{dispatchEvent:i,monitorForConsumers:r}}function ce(e){var t=e.typeKey,n=e.mount,r=e.dispatchEventToSource,i=e.onPostDispatch,a=e.defaultDropEffect,o=se(),s=re({typeKey:t,defaultDropEffect:a});function c(e){r?.(e),s.dispatchEvent(e),o.dispatchEvent(e),i?.(e)}function l(e){var t=e.event,n=e.dragType;B.start({event:t,dragType:n,getDropTargetsOver:s.getIsOver,dispatchEvent:c})}function u(){function e(){return n({canStart:B.canStart,start:l})}return U({typeKey:t,mount:e})}return{registerUsage:u,dropTarget:s.dropTargetForConsumers,monitor:o.monitorForConsumers}}var le=v(function(){return navigator.userAgent.toLocaleLowerCase().includes(`android`)}),ue=`pdnd:android-fallback`,de=`text/plain`,fe=`application/vnd.pdnd`;export{p as _,ce as a,o as b,j as c,T as d,C as f,_ as g,v as h,le as i,A as l,x as m,de as n,G as o,S as p,ue as r,W as s,fe as t,O as u,d as v,l as y};
|
|
6
|
+
//# sourceMappingURL=element-adapter-native-data-key-CW8suC9A.js.map
|