@vireo-ai/trellis-ui 0.1.54 → 0.1.55
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 +22 -22
- package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +413 -1077
- package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +823 -793
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-data-Dvc_bXq6.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{alpine-machine-9HwatUrm.js → alpine-machine-CE2UN4Qu.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{alpine-machine-9HwatUrm.js.map → alpine-machine-CE2UN4Qu.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/anchored-popover-BwQbt4V2.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/anchored-popover-BwQbt4V2.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-DMrvM3JE.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{bridge-TcE7HSvq.js.map → bridge-DMrvM3JE.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cally-B-msaaMx.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cally-B-msaaMx.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-C3q5Xzv2.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-C3q5Xzv2.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-ByUbMIHF.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-ByUbMIHF.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-shortcut-CGpfLNL-.js → capability-shortcut-BwvEqEbL.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-shortcut-CGpfLNL-.js.map → capability-shortcut-BwvEqEbL.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-Bh6pkITu.js +5 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-Bh6pkITu.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cleanup-manager-D9QiZF_Q.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{codecs-Cb1ns_47.js → codecs-CQ7olTJL.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{codecs-Cb1ns_47.js.map → codecs-CQ7olTJL.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{collection-navigation-CfTZUJrL.js → collection-navigation-BbxUBQFs.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{collection-navigation-CfTZUJrL.js.map → collection-navigation-BbxUBQFs.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controlled-open-Hy4-OT-6.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{controller-CzqwFGEd.js → controller-crMEr9_l.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{controller-CzqwFGEd.js.map → controller-crMEr9_l.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-DOHj5fa1.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-CogF8tNb.js.map → core-DOHj5fa1.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-FA9FLGtB.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{cursor-data-source-B2mQNyzN.js.map → cursor-data-source-FA9FLGtB.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-BROE-Ln2.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dom-DiTFTWeR.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/element-adapter-native-data-key-DrqJDAVH.js +6 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/element-adapter-native-data-key-DrqJDAVH.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B41qiwNq.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B41qiwNq.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-x0moHcUM.js → entry.generated-B7n4iFyw.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-x0moHcUM.js.map → entry.generated-B7n4iFyw.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BCTWp6Xu.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CmvKWs0J.js → entry.generated-BLduYCHm.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CmvKWs0J.js.map → entry.generated-BLduYCHm.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-QV-az1in.js → entry.generated-BeNK2EFl.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-QV-az1in.js.map → entry.generated-BeNK2EFl.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BmVGptdJ.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BOk2j8j3.js.map → entry.generated-BmVGptdJ.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BnqcHAaF.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DTRN8-Ks.js.map → entry.generated-BnqcHAaF.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CnFggOc8.js → entry.generated-Bq2KAnfO.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CnFggOc8.js.map → entry.generated-Bq2KAnfO.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BBuJrkhp.js → entry.generated-C3cRWutN.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C3cRWutN.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CnY5J5bD.js → entry.generated-C3y5qBcc.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CnY5J5bD.js.map → entry.generated-C3y5qBcc.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-B3hMqvMn.js → entry.generated-CC6pQ0nu.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-B3hMqvMn.js.map → entry.generated-CC6pQ0nu.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CGasYxmV.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-De9SwKec.js.map → entry.generated-CGasYxmV.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CvL196IN.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CvL196IN.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CyynUmGS.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CyynUmGS.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry2.generated-dkzHCN26.js → entry.generated-D8iA1e6i.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D8iA1e6i.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-C-4OkQdv.js → entry.generated-DDJEGHq-.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DDJEGHq-.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DScbsE6-.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DScbsE6-.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Bqy0wCWo.js → entry.generated-DVOBR4CK.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Bqy0wCWo.js.map → entry.generated-DVOBR4CK.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Dcm3s3ey.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CuZffmX3.js.map → entry.generated-Dcm3s3ey.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DjKX5KuB.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BMLdOzZs.js.map → entry.generated-DjKX5KuB.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Da6pELhK.js → entry.generated-O0hEhk-2.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Da6pELhK.js.map → entry.generated-O0hEhk-2.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-R1BlPlZW.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BMeqWpPy.js.map → entry.generated-R1BlPlZW.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BhINWOfZ.js → entry.generated-iMJrYzAB.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BhINWOfZ.js.map → entry.generated-iMJrYzAB.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-n_t4T8XC.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-sKnD2JaT.js.map → entry.generated-n_t4T8XC.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-C-lyYGbo.js → entry.generated-oJwO9fIY.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-C-lyYGbo.js.map → entry.generated-oJwO9fIY.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-ollD3I52.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CfkH92RS.js.map → entry.generated-ollD3I52.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/flip-XeJ05afl.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/flip-XeJ05afl.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-handoff-BE3g0swK.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-DtaPVNl5.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{fragment-BzHC-hAJ.js → fragment-9OT0mn7F.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{fragment-BzHC-hAJ.js.map → fragment-9OT0mn7F.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CNnHDbyo.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{machine-DQfpKM3w.js.map → machine-CNnHDbyo.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{merge-bindings-C8ewA_FD.js → merge-bindings-BtqW3UgP.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{merge-bindings-C8ewA_FD.js.map → merge-bindings-BtqW3UgP.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/morph-Cq3V_23_.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-CbwLBhMt.js +3 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-CbwLBhMt.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/object-SRW-YaCA.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/pdd-BG5sXFGF.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/pdd-BG5sXFGF.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/props-change-2xfsIAEN.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/semantic-observer-CIoriWtV.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{styles-BstOueoe.js → styles-C9PrQrca.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{styles-BstOueoe.js.map → styles-C9PrQrca.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/styles-CX2j92ex.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{styles-TfvwVPGw.js.map → styles-CX2j92ex.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CGwc8KXJ.js +4 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{ui-BGfrCghL.js.map → ui-CGwc8KXJ.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +327 -324
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +11 -9
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +11 -9
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/anchored-popover-CSBqS_MK.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/anchored-popover-CSBqS_MK.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-TcE7HSvq.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cally-Z6G-rzr-.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cally-Z6G-rzr-.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-DAUyPPWa.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-DAUyPPWa.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-BQgJCSHn.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-BQgJCSHn.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-BLyIVEh9.js +0 -3
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-BLyIVEh9.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-CogF8tNb.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-B2mQNyzN.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/drag-and-drop-cns3DNcf.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/drag-and-drop-cns3DNcf.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/element-adapter-native-data-key-CW8suC9A.js +0 -6
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/element-adapter-native-data-key-CW8suC9A.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B1wGmQth.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B1wGmQth.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BBuJrkhp.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BMLdOzZs.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BMeqWpPy.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BOk2j8j3.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C-4OkQdv.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CfkH92RS.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CuZffmX3.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DTRN8-Ks.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-De9SwKec.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-sKnD2JaT.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-Bu7BMlbI.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-Bu7BMlbI.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-Bxu-sgBm.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-Bxu-sgBm.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-dkzHCN26.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-g1AVE90L.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-g1AVE90L.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-DQfpKM3w.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-mw9QhBgu.js +0 -3
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-mw9QhBgu.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/styles-TfvwVPGw.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-BGfrCghL.js +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup-manager-D9QiZF_Q.js","names":[],"sources":["../../../../../../../../client/src/runtime/cleanup-manager.ts"],"sourcesContent":["type CleanupFn = () => void;\nconst noop = (): void => {};\n\nclass CleanupManager {\n private cleanups: CleanupFn[] = [];\n private children = new Set<CleanupManager>();\n private parent: CleanupManager | null = null;\n private active = true;\n\n add(cleanup: CleanupFn): CleanupFn {\n if (!this.active) {\n cleanup();\n return noop;\n }\n this.cleanups.push(cleanup);\n return () => {\n const index = this.cleanups.indexOf(cleanup);\n if (index >= 0) this.cleanups.splice(index, 1);\n };\n }\n\n addChild(child: CleanupManager): CleanupFn {\n if (!child.active) return noop;\n if (!this.active) {\n child.run();\n return noop;\n }\n child.detach();\n this.children.add(child);\n child.parent = this;\n return () => {\n if (child.parent !== this) return;\n this.children.delete(child);\n child.parent = null;\n };\n }\n\n run(): void {\n if (!this.active) return;\n this.active = false;\n this.detach();\n\n const children = [...this.children];\n const cleanups = this.cleanups.splice(0).reverse();\n this.children.clear();\n const errors: unknown[] = [];\n\n children.forEach((child) => {\n try { child.run(); } catch (error) { errors.push(error); }\n });\n cleanups.forEach((cleanup) => {\n try { cleanup(); } catch (error) { errors.push(error); }\n });\n\n if (errors.length === 1) throw errors[0];\n if (errors.length > 1) throw new AggregateError(errors, 'Cleanup failed.');\n }\n\n private detach(): void {\n this.parent?.children.delete(this);\n this.parent = null;\n }\n}\n\nexport {CleanupManager};\nexport type {CleanupFn};\n"],"mappings":"AACA,IAAM,MAAmB,CAAC,EAEpB,EAAN,KAAqB,CACjB,SAAgC,CAAC,EACjC,SAAmB,IAAI,IACvB,OAAwC,KACxC,OAAiB,GAEjB,IAAI,EAA+B,CAM/B,OALK,KAAK,QAIV,KAAK,SAAS,KAAK,CAAO,MACb,CACT,IAAM,EAAQ,KAAK,SAAS,QAAQ,CAAO,EACvC,GAAS,GAAG,KAAK,SAAS,OAAO,EAAO,CAAC,CACjD,IAPI,EAAQ,EACD,EAOf,CAEA,SAAS,EAAkC,CASvC,OARK,EAAM,OACN,KAAK,QAIV,EAAM,OAAO,EACb,KAAK,SAAS,IAAI,CAAK,EACvB,EAAM,OAAS,SACF,CACL,EAAM,SAAW,OACrB,KAAK,SAAS,OAAO,CAAK,EAC1B,EAAM,OAAS,KACnB,IAVI,EAAM,IAAI,EACH,GAHe,CAa9B,CAEA,KAAY,CACR,GAAI,CAAC,KAAK,OAAQ,OAClB,KAAK,OAAS,GACd,KAAK,OAAO,EAEZ,IAAM,EAAW,CAAC,GAAG,KAAK,QAAQ,EAC5B,EAAW,KAAK,SAAS,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"cleanup-manager-D9QiZF_Q.js","names":[],"sources":["../../../../../../../../client/src/runtime/cleanup-manager.ts"],"sourcesContent":["type CleanupFn = () => void;\nconst noop = (): void => {};\n\nclass CleanupManager {\n private cleanups: CleanupFn[] = [];\n private children = new Set<CleanupManager>();\n private parent: CleanupManager | null = null;\n private active = true;\n\n add(cleanup: CleanupFn): CleanupFn {\n if (!this.active) {\n cleanup();\n return noop;\n }\n this.cleanups.push(cleanup);\n return () => {\n const index = this.cleanups.indexOf(cleanup);\n if (index >= 0) this.cleanups.splice(index, 1);\n };\n }\n\n addChild(child: CleanupManager): CleanupFn {\n if (!child.active) return noop;\n if (!this.active) {\n child.run();\n return noop;\n }\n child.detach();\n this.children.add(child);\n child.parent = this;\n return () => {\n if (child.parent !== this) return;\n this.children.delete(child);\n child.parent = null;\n };\n }\n\n run(): void {\n if (!this.active) return;\n this.active = false;\n this.detach();\n\n const children = [...this.children];\n const cleanups = this.cleanups.splice(0).reverse();\n this.children.clear();\n const errors: unknown[] = [];\n\n children.forEach((child) => {\n try { child.run(); } catch (error) { errors.push(error); }\n });\n cleanups.forEach((cleanup) => {\n try { cleanup(); } catch (error) { errors.push(error); }\n });\n\n if (errors.length === 1) throw errors[0];\n if (errors.length > 1) throw new AggregateError(errors, 'Cleanup failed.');\n }\n\n private detach(): void {\n this.parent?.children.delete(this);\n this.parent = null;\n }\n}\n\nexport {CleanupManager};\nexport type {CleanupFn};\n"],"mappings":"AACA,IAAM,MAAmB,CAAC,EAEpB,EAAN,KAAqB,CACjB,SAAgC,CAAC,EACjC,SAAmB,IAAI,IACvB,OAAwC,KACxC,OAAiB,GAEjB,IAAI,EAA+B,CAM/B,OALK,KAAK,QAIV,KAAK,SAAS,KAAK,CAAO,MACb,CACT,IAAM,EAAQ,KAAK,SAAS,QAAQ,CAAO,EACvC,GAAS,GAAG,KAAK,SAAS,OAAO,EAAO,CAAC,CACjD,IAPI,EAAQ,EACD,EAOf,CAEA,SAAS,EAAkC,CASvC,OARK,EAAM,OACN,KAAK,QAIV,EAAM,OAAO,EACb,KAAK,SAAS,IAAI,CAAK,EACvB,EAAM,OAAS,SACF,CACL,EAAM,SAAW,OACrB,KAAK,SAAS,OAAO,CAAK,EAC1B,EAAM,OAAS,KACnB,IAVI,EAAM,IAAI,EACH,GAHe,CAa9B,CAEA,KAAY,CACR,GAAI,CAAC,KAAK,OAAQ,OAClB,KAAK,OAAS,GACd,KAAK,OAAO,EAEZ,IAAM,EAAW,CAAC,GAAG,KAAK,QAAQ,EAC5B,EAAW,KAAK,SAAS,OAAO,CAAC,CAAC,CAAC,QAAQ,EACjD,KAAK,SAAS,MAAM,EACpB,IAAM,EAAoB,CAAC,EAS3B,GAPA,EAAS,QAAS,GAAU,CACxB,GAAI,CAAE,EAAM,IAAI,CAAG,OAAS,EAAO,CAAE,EAAO,KAAK,CAAK,CAAG,CAC7D,CAAC,EACD,EAAS,QAAS,GAAY,CAC1B,GAAI,CAAE,EAAQ,CAAG,OAAS,EAAO,CAAE,EAAO,KAAK,CAAK,CAAG,CAC3D,CAAC,EAEG,EAAO,SAAW,EAAG,MAAM,EAAO,GACtC,GAAI,EAAO,OAAS,EAAG,MAAU,eAAe,EAAQ,iBAAiB,CAC7E,CAEA,QAAuB,CACnB,KAAK,QAAQ,SAAS,OAAO,IAAI,EACjC,KAAK,OAAS,IAClB,CACJ"}
|
|
@@ -1,2 +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
|
|
2
|
-
//# sourceMappingURL=codecs-
|
|
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===``||[`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-CQ7olTJL.js.map
|
|
@@ -1 +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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"}
|
|
1
|
+
{"version":3,"file":"codecs-CQ7olTJL.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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"}
|
|
@@ -1,2 +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,ownsItem:i=()=>!0,activeAttribute:a=`data-active`,isDisabled:o=e,loop:s})=>{let c=()=>{let e=n();return e?Array.from(e.querySelectorAll(r)).filter(i):[]},l=()=>c().filter(e=>!o(e)),u=()=>{c().forEach(e=>{e.removeAttribute(a)})},d=({items:e=l()}={})=>{let t=e.find(e=>e.getAttribute(a)===`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},f=({el:e})=>{l().includes(e)&&(u(),e.setAttribute(a,`true`))},p=({el:e})=>{f({el:e}),e.focus()},m=(e,n)=>e<0?0:e<n-1?e+1:t(s)?0:n-1,h=(e,n)=>e<0?n-1:e>0?e-1:t(s)?n-1:0,g=e=>{let t=l()[e];t&&p({el:t})},_=()=>{let e=l();e.length!==0&&p({el:e[m(d({items:e}),e.length)]})},v=()=>{let e=l();e.length!==0&&p({el:e[h(d({items:e}),e.length)]})},y=()=>g(0),b=()=>{
|
|
2
|
-
//# sourceMappingURL=collection-navigation-
|
|
1
|
+
var e=e=>e.dataset.disabled===`true`||e.hasAttribute(`disabled`),t=e=>typeof e==`function`?e():e!==!1,n=({root:n,itemSelector:r,ownsItem:i=()=>!0,activeAttribute:a=`data-active`,isDisabled:o=e,loop:s})=>{let c=()=>{let e=n();return e?Array.from(e.querySelectorAll(r)).filter(i):[]},l=()=>c().filter(e=>!o(e)),u=()=>{c().forEach(e=>{e.removeAttribute(a)})},d=({items:e=l()}={})=>{let t=e.find(e=>e.getAttribute(a)===`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},f=({el:e})=>{l().includes(e)&&(u(),e.setAttribute(a,`true`))},p=({el:e})=>{f({el:e}),e.focus()},m=(e,n)=>e<0?0:e<n-1?e+1:t(s)?0:n-1,h=(e,n)=>e<0?n-1:e>0?e-1:t(s)?n-1:0,g=e=>{let t=l()[e];t&&p({el:t})},_=()=>{let e=l();e.length!==0&&p({el:e[m(d({items:e}),e.length)]})},v=()=>{let e=l();e.length!==0&&p({el:e[h(d({items:e}),e.length)]})},y=()=>g(0),b=()=>{let e=l();g(e.length-1)};return{allItems:c,items:l,currentActiveIndex:d,activateItem:f,clearActiveItem:u,focusItem:p,focusNext:_,focusPrevious:v,focusFirst:y,focusLast:b,handleKeydown:({event:e})=>e.key===`ArrowDown`?(e.preventDefault(),_(),!0):e.key===`ArrowUp`?(e.preventDefault(),v(),!0):e.key===`Home`?(e.preventDefault(),y(),!0):e.key===`End`&&(e.preventDefault(),b(),!0)}};export{n as t};
|
|
2
|
+
//# sourceMappingURL=collection-navigation-BbxUBQFs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-navigation-
|
|
1
|
+
{"version":3,"file":"collection-navigation-BbxUBQFs.js","names":[],"sources":["../../../../../../../../client/src/runtime/collection-navigation.ts"],"sourcesContent":["type CollectionRoot = HTMLElement | null;\n\ntype CollectionNavigationOptions = {\n root: () => CollectionRoot;\n itemSelector: string;\n ownsItem?: (el: HTMLElement) => boolean;\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 ownsItem = () => true,\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)).filter(ownsItem);\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":"AAqCA,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,eAAiB,GACjB,kBAAkB,cAClB,aAAa,EACb,UACqD,CACrD,IAAM,MAAgC,CAClC,IAAM,EAAO,EAAQ,EAGrB,OAFK,EAEE,MAAM,KAAK,EAAK,iBAA8B,CAAY,CAAC,CAAC,CAAC,OAAO,CAAQ,EAFjE,CAAC,CAGvB,EAEM,MAA6B,EAAS,CAAC,CAAC,OAAQ,GAAO,CAAC,EAAW,CAAE,CAAC,EAEtE,MAA8B,CAChC,EAAS,CAAC,CAAC,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,CAAC,CAAC,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,CAAA,CAAe,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,CAC1B,IAAM,EAAiB,EAAM,EAC7B,EAAa,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,QACd,EAAM,eAAe,EACrB,EAAU,EACH,GAkBf,CACJ"}
|
|
@@ -1 +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,
|
|
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,CAAC,EAAE,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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{n as e,t}from"./styles-
|
|
2
|
-
//# sourceMappingURL=controller-
|
|
1
|
+
import{n as e,t}from"./styles-CX2j92ex.js";import{i as n,r}from"./capability-shortcut-BwvEqEbL.js";var i=t({definition:{component:`ui.keybinding`,parts:{root:{base:`inline-flex shrink-0 items-center gap-1 whitespace-nowrap text-inherit`,variants:{presentation:{keycap:`font-body text-1 [font-weight:var(--font-weight-normal)]`,plain:``}},defaults:{presentation:`keycap`}},key:{base:`inline-flex items-center justify-center bg-transparent text-current`},separator:{base:`[font:inherit] text-current`}}}}),a=t=>{let a=``,o=new Set,s=()=>{t.querySelectorAll(`[data-ui-keybinding-key]`).forEach(e=>{e.toggleAttribute(`data-pressed`,o.has(e.dataset.key??``))})},c=()=>{t.replaceChildren(),r(a).forEach((n,r)=>{if(r>0){let n=t.ownerDocument.createElement(`span`);n.textContent=`then`,n.setAttribute(`data-ui-keybinding-separator`,``),n.className=e({part:i.parts.separator}),t.append(n)}n.forEach(({label:n,token:r})=>{let a=t.ownerDocument.createElement(`kbd`);a.setAttribute(`data-ui-keybinding-key`,``),a.dataset.key=r,a.className=e({part:i.parts.key}),a.textContent=n,t.append(a)})}),t.hidden=t.childElementCount===0,s()};return{setValue(e){let n=typeof e==`string`?e.trim():``;n===a&&t.childElementCount>0||(a=n,c())},destroy:n(t.ownerDocument,e=>{o=e,s()})}};export{i as n,a as t};
|
|
2
|
+
//# sourceMappingURL=controller-crMEr9_l.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller-
|
|
1
|
+
{"version":3,"file":"controller-crMEr9_l.js","names":[],"sources":["../../../../../../../../client/src/components/keybinding/styles.ts","../../../../../../../../client/src/components/keybinding/controller.ts"],"sourcesContent":["import {defineStyles} from '../../runtime';\n\nconst keybindingStyles = defineStyles({definition: {\n component: 'ui.keybinding',\n parts: {\n root: {\n base: 'inline-flex shrink-0 items-center gap-1 whitespace-nowrap text-inherit',\n variants: {\n presentation: {\n keycap: 'font-body text-1 [font-weight:var(--font-weight-normal)]',\n plain: '',\n },\n },\n defaults: {presentation: 'keycap'},\n },\n key: {\n base: 'inline-flex items-center justify-center bg-transparent text-current',\n },\n separator: {\n base: '[font:inherit] text-current',\n },\n },\n}});\n\nexport {keybindingStyles};\n","import {formatShortcutKeys, observePressedShortcutKeys} from '@client/capabilities/shortcut';\nimport {resolveStyle} from '@client/runtime/styles';\nimport {keybindingStyles} from './styles';\n\ntype KeybindingController = {\n setValue(value: unknown): void;\n destroy(): void;\n};\n\nconst createKeybindingController = (root: HTMLElement): KeybindingController => {\n let value = '';\n let pressedKeys: ReadonlySet<string> = new Set();\n\n const syncPressed = (): void => {\n root.querySelectorAll<HTMLElement>('[data-ui-keybinding-key]').forEach((key) => {\n key.toggleAttribute('data-pressed', pressedKeys.has(key.dataset.key ?? ''));\n });\n };\n const render = (): void => {\n root.replaceChildren();\n formatShortcutKeys(value).forEach((step, index) => {\n if (index > 0) {\n const separator = root.ownerDocument.createElement('span');\n separator.textContent = 'then';\n separator.setAttribute('data-ui-keybinding-separator', '');\n separator.className = resolveStyle({part: keybindingStyles.parts.separator});\n root.append(separator);\n }\n step.forEach(({label, token}) => {\n const key = root.ownerDocument.createElement('kbd');\n key.setAttribute('data-ui-keybinding-key', '');\n key.dataset.key = token;\n key.className = resolveStyle({part: keybindingStyles.parts.key});\n key.textContent = label;\n root.append(key);\n });\n });\n root.hidden = root.childElementCount === 0;\n syncPressed();\n };\n const stopObserving = observePressedShortcutKeys(root.ownerDocument, (keys) => {\n pressedKeys = keys;\n syncPressed();\n });\n\n return {\n setValue(nextValue): void {\n const next = typeof nextValue === 'string' ? nextValue.trim() : '';\n if (next === value && root.childElementCount > 0) return;\n value = next;\n render();\n },\n destroy: stopObserving,\n };\n};\n\nexport {createKeybindingController};\nexport type {KeybindingController};\n"],"mappings":"mGAEA,IAAM,EAAmB,EAAa,CAAC,WAAY,CAC/C,UAAW,gBACX,MAAO,CACH,KAAM,CACF,KAAM,yEACN,SAAU,CACN,aAAc,CACV,OAAQ,2DACR,MAAO,EACX,CACJ,EACA,SAAU,CAAC,aAAc,QAAQ,CACrC,EACA,IAAK,CACD,KAAM,qEACV,EACA,UAAW,CACP,KAAM,6BACV,CACJ,CACJ,CAAC,CAAC,ECbI,EAA8B,GAA4C,CAC5E,IAAI,EAAQ,GACR,EAAmC,IAAI,IAErC,MAA0B,CAC5B,EAAK,iBAA8B,0BAA0B,CAAC,CAAC,QAAS,GAAQ,CAC5E,EAAI,gBAAgB,eAAgB,EAAY,IAAI,EAAI,QAAQ,KAAO,EAAE,CAAC,CAC9E,CAAC,CACL,EACM,MAAqB,CACvB,EAAK,gBAAgB,EACrB,EAAmB,CAAK,CAAC,CAAC,SAAS,EAAM,IAAU,CAC/C,GAAI,EAAQ,EAAG,CACX,IAAM,EAAY,EAAK,cAAc,cAAc,MAAM,EACzD,EAAU,YAAc,OACxB,EAAU,aAAa,+BAAgC,EAAE,EACzD,EAAU,UAAY,EAAa,CAAC,KAAM,EAAiB,MAAM,SAAS,CAAC,EAC3E,EAAK,OAAO,CAAS,CACzB,CACA,EAAK,SAAS,CAAC,QAAO,WAAW,CAC7B,IAAM,EAAM,EAAK,cAAc,cAAc,KAAK,EAClD,EAAI,aAAa,yBAA0B,EAAE,EAC7C,EAAI,QAAQ,IAAM,EAClB,EAAI,UAAY,EAAa,CAAC,KAAM,EAAiB,MAAM,GAAG,CAAC,EAC/D,EAAI,YAAc,EAClB,EAAK,OAAO,CAAG,CACnB,CAAC,CACL,CAAC,EACD,EAAK,OAAS,EAAK,oBAAsB,EACzC,EAAY,CAChB,EAMA,MAAO,CACH,SAAS,EAAiB,CACtB,IAAM,EAAO,OAAO,GAAc,SAAW,EAAU,KAAK,EAAI,GAC5D,IAAS,GAAS,EAAK,kBAAoB,IAC/C,EAAQ,EACR,EAAO,EACX,EACA,QAZkB,EAA2B,EAAK,cAAgB,GAAS,CAC3E,EAAc,EACd,EAAY,CAChB,CASa,CACb,CACJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{n as e}from"./object-SRW-YaCA.js";import{a as t,c as n,f as r,g as i,l as a,m as o,o as s,p as c,s as l,t as u,u as d}from"./ui-CGwc8KXJ.js";import{n as f}from"./morph-Cq3V_23_.js";import{d as p}from"./codecs-CQ7olTJL.js";import{n as m}from"./alpine-machine-CE2UN4Qu.js";var h=`Are you sure?`,ee=null,g=new WeakSet,te=e=>e instanceof HTMLButtonElement||e instanceof HTMLInputElement,ne=({form:e,submitter:t})=>{let n=t?.dataset.uiConfirm;if(n!==void 0)return n||h;let r=e.dataset.uiConfirm;return r===void 0?null:r||h},re=({form:e,submitter:t})=>{window.setTimeout(()=>{if(!(!e.isConnected||t&&t.form!==e)){g.add(e);try{e.requestSubmit(t??void 0)}finally{g.delete(e)}}},0)},_=e=>{let t=e.target;if(!(t instanceof HTMLFormElement))return;if(g.has(t)){g.delete(t);return}let n=te(e.submitter)?e.submitter:null,r=ne({form:t,submitter:n});if(r===null)return;e.preventDefault();let i=!1,a=()=>{i||(i=!0,re({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())},ie=({root:e=document}={})=>{ee||=(e.addEventListener(`submit`,_,{capture:!0}),()=>e.removeEventListener(`submit`,_,{capture:!0}))},ae=e=>e.replace(/([A-Z])/g,`_$1`).toLowerCase(),oe=({manifest:e})=>{if(`propSchema`in e)throw Error(`Manual manifests cannot supply propSchema.`);return Object.freeze(e)},v=({schema:e,details:t})=>{let n={};return Object.entries(e).forEach(([e,r])=>{let i=t[e]??{},a=r.meta,o=i.name??ae(e);if(o in n)throw Error(`Schema property ${e} resolves to duplicate manifest property ${o}.`);let s={type:a.type,default:a.default};a.values&&(s.values=a.values),i.description&&(s.description=i.description),i.initialOnly&&(s.initialOnly=!0),n[o]=s}),n},y=({schema:e,details:t,templateProps:n={},templatePropsPosition:r=`after`,manifest:i})=>{let a=v({schema:e,details:t});Object.keys(n).forEach(e=>{if(e in a)throw Error(`Template prop ${e} collides with schema property ${e}.`)});let o=r===`before`?{...n,...a}:{...a,...n},{name:s,title:c,description:l,meta:u,...d}=i,f={name:s,title:c,description:l,...u?{meta:u}:{},propSchema:e,props:o,...d};return Object.freeze(f)},se=[`light`,`dark`,`system`],ce=e=>typeof e==`string`&&se.includes(e),b=e=>ce(e)?e:`system`,x=()=>document.documentElement.dataset.themeStorageKey||`trellis-ui-theme`,S=()=>b(document.documentElement.dataset.theme),C=()=>{try{return b(window.localStorage.getItem(x())||S())}catch{return S()}},w=e=>{try{window.localStorage.setItem(x(),e)}catch{}},le=()=>window.matchMedia(`(prefers-color-scheme: dark)`).matches,ue=e=>e===`dark`||e===`system`&&le(),T=e=>{let t=ue(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}},de=()=>{let e=T(C());return{mode:e.mode,resolved:e.resolved,get dark(){return this.resolved===`dark`},get on(){return this.dark},set(e){let t=b(e);w(t);let n=T(t);this.mode=n.mode,this.resolved=n.resolved},toggle(){this.set(this.resolved===`dark`?`light`:`dark`)}}},fe=e=>{if(typeof e.store!=`function`)return;let t=e.store(`theme`)??de();e.store(`theme`,t),window.matchMedia(`(prefers-color-scheme: dark)`).addEventListener(`change`,()=>{if(t.mode!==`system`)return;let e=T(`system`);t.resolved=e.resolved})},pe=(e,t)=>{if(e&&typeof t.evaluate==`function`)return t.evaluate(e)},me=e=>{if(typeof e==`string`)return{key:e};if(typeof e==`object`&&e){let t=e.key??e.id;return t?{key:t}:{}}return{}},E=e=>{e.directive(`ui-layout`,(e,{expression:t},n)=>{if(!(e instanceof Element))return;let i=pe(t,n),a=o(e,me(i));f(e,r,c),n.cleanup?.(()=>{a()})})},D=`[x-ui-request], [x-ui-request\\.navigate]`,O=new Set([`data`,`extra`,`headers`,`history`,`method`]),k=[`altKey`,`ctrlKey`,`metaKey`,`shiftKey`],A=new WeakSet,j=(t,{expression:n},r)=>{if(!n?.trim())return{};let a=r.Alpine.evaluate(t,n);return e(a)?(Object.keys(a).forEach(e=>{O.has(e)||i(`x-ui-request: unknown option key`,e)}),a):(i(`x-ui-request: expression must evaluate to an object`),null)},M=e=>e.submitter instanceof HTMLElement?e.submitter:null,N=(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,P=e=>e.hash!==``&&e.origin===window.location.origin&&e.pathname===window.location.pathname&&e.search===window.location.search,F=(e,t,n)=>{if(t.defaultPrevented||t.button!==0||n&&k.some(e=>t[e])||e.hasAttribute(`download`)||e.getAttribute(`target`))return null;let r=new URL(e.href,document.baseURI);return r.origin===window.location.origin?P(r)?n?{destination:r,type:`native-fragment`}:null:{destination:r,type:`enhance`}:null},I=(e,n,r,o,s)=>{let c=c=>{if(A.delete(n))return;let l=M(c);if(!N(n,c,l))return;let u=j(n,r,o);if(u){if(c.preventDefault(),s.navigate){t(e,n.action,n,{...u,source:n,submitter:l});return}a(e,void 0,{...u,source:n,submitter:l}).then(e=>{e.type===`unavailable`&&(A.add(n),n.requestSubmit(l??void 0))}).catch(e=>i(`x-ui-request: request failed`,e))}};n.addEventListener(`submit`,c),o.cleanup?.(()=>n.removeEventListener(`submit`,c))},L=(e,n,r,o,c)=>{let l=l=>{let u=F(n,l,c.navigate);if(!u)return;if(u.type===`native-fragment`){s(u.destination);return}let d=j(n,r,o);if(d){if(l.preventDefault(),c.navigate){t(e,u.destination,n,d);return}a(e,n.href,{...d,method:d.method??`GET`,source:n}).then(e=>{e.type===`unavailable`&&window.location.assign(n.href)}).catch(e=>i(`x-ui-request: request failed`,e))}};n.addEventListener(`click`,l),o.cleanup?.(()=>n.removeEventListener(`click`,l))},R=e=>{e.addRootSelector(()=>D),n(e),l(e),e.directive(`ui-request`,(t,{expression:n,modifiers:r},a)=>{let o={expression:n};if(t instanceof HTMLFormElement){I(e,t,o,a,{navigate:r.includes(`navigate`)});return}if(t instanceof HTMLAnchorElement){L(e,t,o,a,{navigate:r.includes(`navigate`)});return}i(`x-ui-request: directive only supports forms and anchors`,t)})},z=(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},B=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=m(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?z(s,e):void 0,t);a.cleanup(c)}))},V=()=>{},H,U=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}},W=(e,t)=>e instanceof U?e.nextNode(t):t.nextSibling,he=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},ge=(e,t)=>{t.namespaceURI?e.setAttributeNodeNS(t.cloneNode()):t.name.includes(`@`)?e.setAttributeNode(t.cloneNode()):e.setAttribute(t.name,t.value)},G=(e,t)=>{let n=!1;return e(t,()=>{n=!0}),n},K=e=>e?.nodeType===Node.COMMENT_NODE&&e.textContent===`[if BLOCK]><![endif]`,q=e=>e?.nodeType===Node.COMMENT_NODE&&e.textContent===`[if ENDBLOCK]><![endif]`,J=(e,t)=>{let n=0,r=t;for(;r=W(e,r);)if(K(r))n+=1;else if(q(r)&&n>0)--n;else if(q(r))return r;throw Error(`Unclosed conditional morph block.`)},Y=e=>{let t=e;if(e._x_lastRenderedEl)t=e._x_lastRenderedEl;else if(e._x_currentIfEl)t=Y(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=Y(r).end,r=t.nextSibling}return{start:e,end:t}},X=(e,t)=>W(e,t.end),Z=(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&&Z(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(!Z(n,r))return!1;n=Y(n).end.nextSibling,r=r.nextSibling}return n===null&&r===null},_e=(e,t,n)=>{if(t.start===n||X(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}},ve=(e,t)=>{let n=t?._x_bindings?.id;n&&e instanceof Element&&(e.setAttribute(`id`,n),e.id=n)},ye=(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},Q=(e={})=>{let t={key:e.key??(e=>e.getAttribute(`key`)),lookahead:e.lookahead??!1,updating:e.updating??V,updated:e.updated??V,removing:e.removing??V,removed:e.removed??V,adding:e.adding??V,added:e.added??V,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)||e instanceof Element&&t instanceof Element&&e.getAttribute(`x-data`)!==t.getAttribute(`x-data`),i=(e,n,r)=>{if(G(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=>!G(t.removing,e)&&(e.parentNode?.removeChild(e),t.removed(e),!0),o=e=>!G(t.removing,e.start)&&(e.start.parentNode?.removeChild(e.start),t.removed(e.start),!0),s=(e,n)=>{if(G(t.removing,e))return!1;let r=n.cloneNode(!0);return!G(t.adding,r)&&(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&&(ge(e,r),n=!0)}return n},l,u=(e,n,i)=>{if(e instanceof Element&&e.hasAttribute(`data-ui-ignore-morph`))return!1;if(r(e,n))return s(e,n);if(i===`before-descendant-hook`&&e.nodeType!==Node.COMMENT_NODE&&Z(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||Z(e,n))return!1;let f=!1;return e.nodeType===Node.ELEMENT_NODE&&H&&(H.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&&(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=ye(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(ve(h,m),t.skipUntilCondition){let n=!m||t.skipUntilCondition(m),i=t.skipUntilCondition(h);if(n&&i)t.skipUntilCondition=null;else{!n&&m&&(m=X(e,Y(m))),i||(h=W(r,h));continue}}if(!m){p=i(e,h,null).inserted||p,h=W(r,h);continue}if(K(m)&&K(h)){let t=J(e,m),n=J(r,h);p=l(new U(m,t),new U(h,n))||p,m=W(e,t),h=W(r,n);continue}{if(t.lookahead&&m instanceof Element&&!m.isEqualNode(h)){let t=W(r,h);for(;t;){if(t instanceof Element&&m.isEqualNode(t)){let t=i(e,h,m);if(!t.inserted){h=W(r,h);continue incoming}m=t.node,p=!0;break}t=W(r,t)}}let n=u(h),a=u(m);if(n!==a){let t=n?f.get(n):void 0;if(t)_e(e,Y(t),m),m=t,p=!0;else if(n||a){let t=i(e,h,m);if(!t.inserted){h=W(r,h);continue}m=t.node,p=!0}}let o=X(e,Y(m));p=d(m,h)||p,m=o}h=W(r,h)}for(;m;){let t=Y(m),n=X(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`)}},be=(e,t,n={})=>{let r=typeof t==`string`?he(t):t,i=e;return H?.closestDataStack&&!i._x_dataStack&&(r._x_dataStack=H.closestDataStack(i),r._x_dataStack&&H.cloneNode(i,r)),Q(n).patchRoot(i,r),e},xe=(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),H?.closestDataStack&&(a._x_dataStack=H.closestDataStack(i),a._x_dataStack&&H.cloneNode(i,a)),Q(r).patchChildren(new U(e,t),new U(o,s))},Se=e=>{let t=e;H=t,t.morph=be,t.morphBetween=xe},$=new WeakSet,Ce=e=>{$.has(e)||($.add(e),p(e.reactive),e.plugin(Se),E(e),u(e),B(e),fe(e),ie(),R(e),d(e))};export{v as a,y as i,B as n,oe as r,Ce as t};
|
|
2
|
+
//# sourceMappingURL=core-DOHj5fa1.js.map
|