@vireo-ai/trellis-ui 0.1.54 → 0.1.56
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/README.md +1 -23
- package/package.json +23 -22
- package/packages/client/types/components/badge/contract.d.ts +1 -1
- package/packages/client/types/components/box/contract.d.ts +3 -3
- package/packages/client/types/components/button/contract.d.ts +1 -1
- package/packages/client/types/components/container/contract.d.ts +3 -3
- package/packages/client/types/components/date-picker/contract.d.ts +2 -2
- package/packages/client/types/components/date-picker/machine.d.ts +2 -2
- package/packages/client/types/components/flex/contract.d.ts +3 -3
- package/packages/client/types/components/frame/contract.d.ts +3 -3
- package/packages/client/types/components/grid/contract.d.ts +3 -3
- package/packages/client/types/components/input/contract.d.ts +2 -2
- package/packages/client/types/components/layout.d.ts +3 -3
- package/packages/client/types/components/modal/contract.d.ts +3 -2
- package/packages/client/types/components/modal/index.d.ts +1 -1
- package/packages/client/types/components/section/contract.d.ts +3 -3
- package/packages/client/types/components/select/contract.d.ts +1 -1
- package/packages/client/types/components/select/machine.d.ts +2 -2
- package/packages/client/types/components/stack/contract.d.ts +3 -3
- package/packages/client/types/components/table/contract.d.ts +1 -1
- package/packages/client/types/components/textarea/contract.d.ts +1 -1
- package/packages/client/types/runtime/focus-scope.d.ts +5 -6
- package/packages/client/types/runtime/focus.d.ts +9 -0
- package/packages/client/types/runtime/index.d.ts +2 -1
- 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 +828 -783
- 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-B7n3PcSH.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-B7n3PcSH.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-DZUQHJ3A.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-DZUQHJ3A.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-BgPVyFfh.js +5 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-BgPVyFfh.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-hTbwy6oQ.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-hTbwy6oQ.js.map +1 -0
- 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-CalXJ5hB.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{controller-CzqwFGEd.js.map → controller-CalXJ5hB.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-CYvnO__o.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-CogF8tNb.js.map → core-CYvnO__o.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-Do0FfF4Z.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-Do0FfF4Z.js.map +1 -0
- 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-B4lDxzh9.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CfkH92RS.js.map → entry.generated-B4lDxzh9.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/{entry2.generated-dkzHCN26.js → entry.generated-BQNpmLZO.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BQNpmLZO.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BXvp4vUv.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BXvp4vUv.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BlsLkwW8.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BlsLkwW8.js.map +1 -0
- 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-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-QV-az1in.js → entry.generated-CC-C5gQn.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-QV-az1in.js.map → entry.generated-CC-C5gQn.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-CheA8dXD.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CheA8dXD.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CwuIK_Zx.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CwuIK_Zx.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D-2vjhTV.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D-2vjhTV.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-DSWnCzSX.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DSWnCzSX.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DaC7gw-h.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DaC7gw-h.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Bqy0wCWo.js → entry.generated-DaXIKPN9.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Bqy0wCWo.js.map → entry.generated-DaXIKPN9.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-Dfm1775-.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BOk2j8j3.js.map → entry.generated-Dfm1775-.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DuY9bHje.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DuY9bHje.js.map +1 -0
- 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-QFVPoffg.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-QFVPoffg.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-d1MxpnFh.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-d1MxpnFh.js.map +1 -0
- 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-pfUkaGe1.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-pfUkaGe1.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xjydizn-.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xjydizn-.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/flip-BGTjVnQy.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/flip-BGTjVnQy.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-pk_lz9sg.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-pk_lz9sg.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-BrYxsrhc.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-BrYxsrhc.js.map +1 -0
- 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-fU4E5Q4w.js +3 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-fU4E5Q4w.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-B3f-Nt9P.js +4 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-B3f-Nt9P.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/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 +355 -338
- 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/client/types/runtime/focus-handoff.d.ts +0 -12
- 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-shortcut-CGpfLNL-.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-CGpfLNL-.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/collection-navigation-CfTZUJrL.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-CfTZUJrL.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/cursor-data-source-B2mQNyzN.js.map +0 -1
- 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 +0 -2
- 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-BMLdOzZs.js.map +0 -1
- 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-BMeqWpPy.js.map +0 -1
- 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-BhINWOfZ.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BhINWOfZ.js.map +0 -1
- 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-CnFggOc8.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CnFggOc8.js.map +0 -1
- 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-De9SwKec.js.map +0 -1
- 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/entry.generated-sKnD2JaT.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-x0moHcUM.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-x0moHcUM.js.map +0 -1
- 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/focus-handoff-BE3g0swK.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-handoff-BE3g0swK.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-DtaPVNl5.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-DtaPVNl5.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
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-BGfrCghL.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.generated-CfkH92RS.js","names":[],"sources":["../../../../../../../../client/src/components/tabs/contract.ts","../../../../../../../../client/src/components/tabs/machine.ts","../../../../../../../../client/src/components/tabs/index.ts","../../../../../../../../client/src/components/tabs/entry.generated.ts"],"sourcesContent":["import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n INTERACTION_TREATMENTS,\n LAYOUT_SPACES,\n ORIENTATIONS,\n SELECTION_COLORS,\n type ControlSize,\n type LayoutSpace,\n type Orientation,\n} from '../common';\n\nconst TABS_ACTIVATIONS = ['manual', 'automatic'] as const;\nconst TABS_ORIENTATIONS = ORIENTATIONS;\nconst TABS_LIST_ORIENTATIONS = ['inherit', ...TABS_ORIENTATIONS] as const;\nconst TABS_LIST_GAPS = ['auto', ...LAYOUT_SPACES] as const;\nconst TABS_VARIANTS = ['subtle', 'line', 'segmented', 'pills'] as const;\nconst TABS_SIZES = ['sm', 'md'] as const satisfies readonly ControlSize[];\nconst TABS_COLORS = SELECTION_COLORS;\nconst TABS_INTERACTIONS = INTERACTION_TREATMENTS;\n\nconst tabsSchema = {\n id: string.default('ui-tabs'),\n animate: bool,\n defaultValue: string,\n value: string,\n activation: oneOf(TABS_ACTIVATIONS, 'manual'),\n orientation: oneOf(TABS_ORIENTATIONS, 'horizontal'),\n gap: oneOf(TABS_LIST_GAPS, 'auto'),\n loop: bool.default(true),\n panels: string,\n class: string,\n};\n\ntype TabsActivation = typeof TABS_ACTIVATIONS[number];\ntype TabsOrientation = Orientation;\ntype TabsGap = 'auto' | LayoutSpace;\ntype TabsListOrientation = typeof TABS_LIST_ORIENTATIONS[number];\ntype TabsListGap = TabsGap;\ntype TabsVariant = typeof TABS_VARIANTS[number];\ntype TabsSize = typeof TABS_SIZES[number];\ntype TabsColor = typeof TABS_COLORS[number];\ntype TabsInteraction = typeof TABS_INTERACTIONS[number];\ntype TabsProps = SchemaToProps<typeof tabsSchema>;\n\nexport {\n TABS_ACTIVATIONS,\n TABS_COLORS,\n TABS_INTERACTIONS,\n TABS_LIST_ORIENTATIONS,\n TABS_LIST_GAPS,\n TABS_ORIENTATIONS,\n TABS_SIZES,\n TABS_VARIANTS,\n tabsSchema,\n};\nexport type {\n TabsActivation,\n TabsColor,\n TabsGap,\n TabsListOrientation,\n TabsInteraction,\n TabsListGap,\n TabsOrientation,\n TabsProps,\n TabsSize,\n TabsVariant,\n};\n","import {\n createMachine,\n propsChanged,\n propsChangedEvent,\n type Machine,\n type MachineEventObject,\n type MachineScope,\n} from '../../runtime/state-machine';\nimport {defineHook, type TransitionHookDefinition} from '../../runtime/transition-coordinator';\nimport type {TabsProps} from './contract';\n\ntype TabsContext = {\n selection: {value: string};\n change: {previousValue: string; value: string; panelId: string};\n collection: {values: string[]; disabledValues: string[]; panelIds: Record<string, string>};\n};\n\ntype TabsTransitionData = TabsContext['change'];\n\ntype TabsMachineEffects = {\n prepareSwitch(scope: MachineScope<TabsContext, TabsProps>): void;\n finishSwitch(scope: MachineScope<TabsContext, TabsProps>): void;\n syncDom(scope: MachineScope<TabsContext, TabsProps>): void;\n syncProps(scope: MachineScope<TabsContext, TabsProps>): void;\n syncItems(scope: MachineScope<TabsContext, TabsProps>): void;\n};\n\ntype CreateTabsMachineOptions = {\n props: TabsProps;\n context: TabsContext;\n effects: TabsMachineEffects;\n};\n\nconst switchingHook = defineHook({\n name: 'switching',\n state: 'switching',\n project: (snapshot) => snapshot.context.change,\n onDone: 'SWITCH_DONE',\n onError: 'SWITCH_ERROR',\n sends: {\n select: (value: string) => ({type: 'SELECT', value}),\n },\n} satisfies TransitionHookDefinition<TabsContext, TabsProps, TabsTransitionData, 'switching'>);\n\nconst tabsHooks = [switchingHook] as const;\n\nconst stringValue = (value: unknown): string => typeof value === 'string' ? value : '';\nconst stringValues = (value: unknown): string[] => Array.isArray(value)\n ? value.filter((item): item is string => typeof item === 'string')\n : [];\nconst panelIds = (value: unknown): Record<string, string> => {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return {};\n return Object.fromEntries(Object.entries(value).filter((entry): entry is [string, string] => (\n typeof entry[1] === 'string'\n )));\n};\n\nconst nextProps = (scope: MachineScope<TabsContext, TabsProps>): TabsProps => (\n propsChangedEvent<TabsProps>(scope.event)?.props ?? scope.props\n);\n\nconst nextCollection = (scope: MachineScope<TabsContext, TabsProps>): TabsContext['collection'] => {\n if (scope.event.type !== 'ITEMS_CHANGED') return scope.context.collection;\n return {\n values: stringValues(scope.event.values),\n disabledValues: stringValues(scope.event.disabledValues),\n panelIds: panelIds(scope.event.panelIds),\n };\n};\n\nconst normalizeValue = (value: string, collection: TabsContext['collection']): string => {\n if (value && collection.values.includes(value) && !collection.disabledValues.includes(value)) return value;\n return collection.values.find((item) => !collection.disabledValues.includes(item)) ?? '';\n};\n\nconst nextValue = (scope: MachineScope<TabsContext, TabsProps>): string => {\n const collection = nextCollection(scope);\n if (scope.event.type === 'SELECT') {\n const requested = stringValue(scope.event.value);\n return requested && collection.values.includes(requested) && !collection.disabledValues.includes(requested)\n ? requested\n : scope.context.selection.value;\n }\n if (scope.event.type === 'PROPS_CHANGED' && propsChanged<TabsProps>(scope.event, 'value')) {\n return normalizeValue(nextProps(scope).value, collection);\n }\n return normalizeValue(scope.context.selection.value, collection);\n};\n\nconst selectionChanges = (scope: MachineScope<TabsContext, TabsProps>): boolean => (\n scope.context.selection.value !== nextValue(scope)\n);\n\nconst transition = (target: 'switching', effects: 'prepareSwitch') => ({\n target,\n guard: selectionChanges,\n reduce: 'applySwitch',\n effects,\n} as const);\n\nconst createTabsMachine = ({\n props,\n context,\n effects,\n}: CreateTabsMachineOptions): Machine<TabsContext, TabsProps> => createMachine<TabsContext, TabsProps>({\n initial: 'stable',\n on: {\n DOM_INVALIDATED: {effects: 'syncDom'},\n },\n states: {\n stable: {\n tags: ['stable'],\n on: {\n SELECT: transition('switching', 'prepareSwitch'),\n PROPS_CHANGED: [\n transition('switching', 'prepareSwitch'),\n {reduce: 'reconcile', effects: 'syncProps'},\n ],\n ITEMS_CHANGED: [\n transition('switching', 'prepareSwitch'),\n {reduce: 'reconcile', effects: 'syncItems'},\n ],\n },\n },\n switching: {\n tags: ['switching', 'transitioning'],\n on: {\n SWITCH_DONE: {target: 'stable', effects: 'finishSwitch'},\n SWITCH_ERROR: {target: 'stable', effects: 'finishSwitch'},\n SELECT: transition('switching', 'prepareSwitch'),\n PROPS_CHANGED: [\n transition('switching', 'prepareSwitch'),\n {reduce: 'reconcile', effects: 'syncProps'},\n ],\n ITEMS_CHANGED: [\n transition('switching', 'prepareSwitch'),\n {reduce: 'reconcile', effects: 'syncItems'},\n ],\n },\n },\n },\n}, {\n context,\n props,\n reducers: {\n applySwitch: (scope) => {\n const collection = nextCollection(scope);\n const value = nextValue(scope);\n return {\n props: nextProps(scope),\n context: {\n ...scope.context,\n selection: {value},\n change: {\n previousValue: scope.context.selection.value,\n value,\n panelId: collection.panelIds[value] ?? '',\n },\n collection,\n },\n };\n },\n reconcile: (scope) => ({\n props: nextProps(scope),\n context: {\n ...scope.context,\n collection: nextCollection(scope),\n selection: {value: nextValue(scope)},\n },\n }),\n },\n effects: {\n prepareSwitch: effects.prepareSwitch,\n finishSwitch: effects.finishSwitch,\n syncDom: effects.syncDom,\n syncProps: effects.syncProps,\n syncItems: effects.syncItems,\n },\n});\n\nexport {createTabsMachine, tabsHooks};\nexport type {\n CreateTabsMachineOptions,\n TabsContext,\n TabsMachineEffects,\n TabsTransitionData,\n};\n","import type Alpine from 'alpinejs';\n\nimport {\n type AlpineMachine,\n type BindingObject,\n createAlpineMachine,\n createCollectionNavigation,\n type CollectionNavigation,\n defineAlpineData,\n type MachineSnapshot,\n observeSemanticChanges,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {\n flip,\n type MotionHandle,\n type MotionTransitionSubject,\n} from '@client/motion';\nimport {noopHandle} from '@client/motion/animate';\nimport {asBool, dispatch, isRtl, setPresence} from '@client/utils';\nimport {\n tabsSchema,\n type TabsOrientation,\n type TabsProps,\n type TabsSize,\n type TabsVariant,\n} from './contract';\nimport {\n createTabsMachine,\n type TabsContext,\n tabsHooks,\n type TabsTransitionData,\n} from './machine';\n\ntype TabsTransitionName = (typeof tabsHooks)[number]['name'];\ntype TabsTransition<TName extends TabsTransitionName = TabsTransitionName> = TransitionForHook<\n Extract<(typeof tabsHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\ntype IndicatorFrame = {indicator: HTMLElement; styles: {\n height: number;\n left: number;\n top: number;\n width: number;\n}};\n\ntype TabsTabElement = HTMLButtonElement | HTMLAnchorElement;\n\ntype TabsItem = {\n tab: TabsTabElement;\n value: string;\n disabled: boolean;\n panel: HTMLElement | null;\n};\n\ntype TabsProjection = {\n ownerId: string;\n primaryList: HTMLElement | null;\n panelsTarget: HTMLElement | null;\n panels: HTMLElement[];\n panelByValue: Map<string, HTMLElement>;\n items: TabsItem[];\n itemByValue: Map<string, TabsItem>;\n itemByTab: Map<TabsTabElement, TabsItem>;\n tabStop: TabsTabElement | null;\n};\n\ntype TabsChangeDetail = {value: string};\ntype TabsActivateDetail = {value: string; panelId: string};\n\n/**\n * Public Alpine API for `ui.tabs`.\n *\n * @public\n */\ninterface UiTabsApi {\n /** Currently selected tab value. */\n readonly value: string;\n\n /** Select an enabled tab that belongs to this Tabs owner. */\n select(value: string): void;\n\n /** Whether `value` is currently selected. */\n isActive(value: string): boolean;\n}\n\ntype TabsData = AlpineMachine<TabsContext, TabsProps, typeof tabsHooks> & UiTabsApi & {\n readonly root: BindingObject;\n init(): void;\n destroy(): void;\n transitionIndicator(transition: TabsMotionTransition): MotionHandle | Promise<void>;\n};\n\ntype TabsMotionTransition = MotionTransitionSubject & Readonly<{\n el: unknown;\n event: {motion?: boolean};\n props: {animate: boolean};\n}>;\n\nconst DEFAULT_OWNER = 'ui-tabs';\nconst stateFor = (active: boolean): 'active' | 'inactive' => active ? 'active' : 'inactive';\nconst safeIdPart = (value: string): string => {\n const sanitized = value.trim().toLowerCase().replace(/[^a-z0-9_-]+/g, '-').replace(/^-+|-+$/g, '');\n return sanitized || 'tab';\n};\nconst tabIdFor = (owner: string, value: string): string => `${owner}-tab-${safeIdPart(value)}`;\nconst panelIdFor = (owner: string, value: string): string => `${owner}-panel-${safeIdPart(value)}`;\nconst isTabElement = (element: Element | null): element is TabsTabElement => (\n element instanceof HTMLButtonElement || element instanceof HTMLAnchorElement\n);\nconst uniqueElements = <T extends HTMLElement>(elements: T[]): T[] => Array.from(new Set(elements));\n\nconst UiTabs = (): TrellisAlpineComponent<TabsData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let collection: CollectionNavigation | null = null;\n let disconnectObserver: (() => void) | null = null;\n let resizeObserver: ResizeObserver | null = null;\n let pointerFocusedTab: TabsTabElement | null = null;\n let pointerFocusReset: number | undefined;\n let connectingProps: TabsProps | null = null;\n\n const root = (): HTMLElement & Alpine.ElementWithXAttributes => {\n if (!rootEl) throw new Error('Tabs has not been initialized.');\n return rootEl;\n };\n const owner = (): string => root().id || root().dataset.id || root().dataset.owner || DEFAULT_OWNER;\n const owns = (element: Element): boolean => element.closest('[data-ui-tabs]') === root();\n const boolDataset = (value: string | undefined): boolean => asBool({value});\n\n const listVariant = (list: HTMLElement | null): TabsVariant => {\n const value = list?.dataset.variant;\n if (value === 'subtle' || value === 'segmented' || value === 'pills') return value;\n return 'line';\n };\n const listSize = (list: HTMLElement | null): TabsSize => (\n list?.dataset.size === 'sm' ? 'sm' : 'md'\n );\n const listOrientation = (list: HTMLElement | null): TabsOrientation => {\n const value = list?.dataset.orientation;\n return value === 'vertical' || value === 'horizontal' ? value : currentProps().orientation;\n };\n\n const createProjection = (selectedValue?: string): TabsProjection => {\n const ownerId = owner();\n const detached = (panel: HTMLElement): boolean => (\n panel.dataset.uiTabsOwner === ownerId || panel.dataset.owner === ownerId\n );\n const primaryList = Array.from(\n root().querySelectorAll<HTMLElement>('[data-ui-tabs-list]'),\n ).find(owns) ?? null;\n const foundPanels = Array.from(\n root().querySelectorAll<HTMLElement>('[data-ui-tabs-panel]'),\n ).filter(owns);\n const selector = currentProps().panels;\n const panelsTarget = selector ? document.querySelector<HTMLElement>(selector) : null;\n if (panelsTarget) {\n foundPanels.push(...Array.from(\n panelsTarget.querySelectorAll<HTMLElement>('[data-ui-tabs-panel]'),\n ).filter(detached));\n }\n foundPanels.push(...Array.from(document.querySelectorAll<HTMLElement>(\n `[data-ui-tabs-panel][data-ui-tabs-owner=\"${CSS.escape(ownerId)}\"]`,\n )).filter(detached));\n const panels = uniqueElements(foundPanels);\n const panelByValue = new Map<string, HTMLElement>();\n panels.forEach((panel) => {\n const value = panel.dataset.value || '';\n if (!panelByValue.has(value)) panelByValue.set(value, panel);\n });\n const items = Array.from(\n root().querySelectorAll<HTMLElement>('[data-ui-tabs-tab]'),\n ).filter(owns).map((element, index) => {\n if (!isTabElement(element)) return null;\n element.dataset.value ||= `tab-${index + 1}`;\n return {\n tab: element,\n value: element.dataset.value,\n disabled: boolDataset(element.dataset.disabled) || element.hasAttribute('disabled'),\n panel: panelByValue.get(element.dataset.value) ?? null,\n } satisfies TabsItem;\n }).filter((item): item is TabsItem => item !== null);\n const itemByValue = new Map<string, TabsItem>();\n const itemByTab = new Map<TabsTabElement, TabsItem>();\n items.forEach((item) => {\n if (!itemByValue.has(item.value)) itemByValue.set(item.value, item);\n itemByTab.set(item.tab, item);\n });\n const focused = items.find((item) => (\n document.activeElement === item.tab || item.tab.dataset.active === 'true'\n ));\n return {\n ownerId,\n primaryList,\n panelsTarget,\n panels,\n panelByValue,\n items,\n itemByValue,\n itemByTab,\n tabStop: focused?.tab ?? (selectedValue ? itemByValue.get(selectedValue)?.tab ?? null : null),\n };\n };\n\n const itemFrom = (target: EventTarget | null, projection: TabsProjection): TabsItem | null => {\n if (!(target instanceof Element)) return null;\n const tab = target.closest<HTMLElement>('[data-ui-tabs-tab]');\n return tab && isTabElement(tab) && owns(tab) ? projection.itemByTab.get(tab) ?? null : null;\n };\n\n const collectionContext = (projection: TabsProjection): TabsContext['collection'] => {\n const records = projection.items;\n return {\n values: records.map((item) => item.value),\n disabledValues: records.filter((item) => item.disabled).map((item) => item.value),\n panelIds: Object.fromEntries(records.map((item) => [\n item.value,\n item.panel?.id || panelIdFor(\n item.tab.dataset.uiTabsOwner || item.tab.dataset.owner || projection.ownerId,\n item.value,\n ),\n ])),\n };\n };\n\n const initialContext = (props: TabsProps): TabsContext => {\n const projection = createProjection();\n const collectionState = collectionContext(projection);\n const authoredTab = projection.items.find((item) => (\n boolDataset(item.tab.dataset.selected) || item.tab.getAttribute('aria-selected') === 'true'\n ));\n const authoredPanel = projection.panels.find((panel) => boolDataset(panel.dataset.selected));\n const requested = props.value || props.defaultValue || authoredTab?.value || authoredPanel?.dataset.value || '';\n const value = requested\n && collectionState.values.includes(requested)\n && !collectionState.disabledValues.includes(requested)\n ? requested\n : collectionState.values.find((item) => !collectionState.disabledValues.includes(item)) ?? '';\n return {\n selection: {value},\n change: {previousValue: '', value, panelId: collectionState.panelIds[value] ?? ''},\n collection: collectionState,\n };\n };\n\n const currentProps = (): Readonly<TabsProps> => (\n connectingProps ?? bridge.getCommittedSnapshot().props\n );\n const currentContext = (): Readonly<TabsContext> => bridge.getCommittedSnapshot().context;\n\n const activeValue = (): string => currentContext().selection.value;\n\n const indicatorFor = (list: HTMLElement): HTMLElement | null => (\n list.querySelector<HTMLElement>(':scope > [data-ui-tabs-indicator]')\n );\n const indicatorFrame = (tab: Element): IndicatorFrame | null => {\n if (!(tab instanceof HTMLElement)) return null;\n const list = tab.closest<HTMLElement>('[data-ui-tabs-list]');\n const indicator = list ? indicatorFor(list) : null;\n if (!list || !indicator) return null;\n indicator.hidden = false;\n const listRect = list.getBoundingClientRect();\n const tabRect = tab.getBoundingClientRect();\n const vertical = list.dataset.orientation === 'vertical';\n const line = list.dataset.variant === 'line';\n const width = line && vertical ? 2 : tabRect.width;\n const height = line && !vertical ? 2 : tabRect.height;\n const separatorWidth = line\n ? Number.parseFloat(getComputedStyle(list).getPropertyValue('--border-width-edge-separator')) || 1\n : 0;\n const targetLeft = line && vertical\n ? listRect.left - ((width - separatorWidth) / 2)\n : tabRect.left;\n const targetTop = line && !vertical\n ? listRect.bottom - ((height + separatorWidth) / 2)\n : tabRect.top;\n return {\n indicator,\n styles: {\n height,\n left: targetLeft - listRect.left,\n top: targetTop - listRect.top,\n width,\n },\n };\n };\n const applyIndicatorFrame = (frame: IndicatorFrame): void => {\n frame.indicator.style.height = `${frame.styles.height}px`;\n frame.indicator.style.left = `${frame.styles.left}px`;\n frame.indicator.style.top = `${frame.styles.top}px`;\n frame.indicator.style.width = `${frame.styles.width}px`;\n };\n const positionIndicator = (list: HTMLElement, projection: TabsProjection): void => {\n const indicator = indicatorFor(list);\n if (!indicator) return;\n const active = projection.items.find((item) => (\n item.value === activeValue() && item.tab.closest('[data-ui-tabs-list]') === list\n ));\n if (!active) {\n indicator.hidden = true;\n list.dataset.uiTabsReady = '';\n return;\n }\n const frame = indicatorFrame(active.tab);\n if (frame) applyIndicatorFrame(frame);\n list.dataset.uiTabsReady = '';\n };\n\n const syncRoot = (): void => {\n const props = currentProps();\n if (!root().id && props.id) root().id = props.id;\n root().dataset.orientation = props.orientation;\n root().dataset.activation = props.activation;\n root().dataset.value = activeValue();\n setPresence({el: root(), attr: 'data-animate', present: props.animate});\n };\n\n const syncList = (list: HTMLElement): void => {\n const orientation = listOrientation(list);\n list.setAttribute('role', 'tablist');\n list.dataset.orientation = orientation;\n if (orientation === 'vertical') list.setAttribute('aria-orientation', 'vertical');\n else list.removeAttribute('aria-orientation');\n };\n\n const syncTab = (item: TabsItem, projection: TabsProjection): void => {\n const active = item.value === activeValue();\n const list = item.tab.closest<HTMLElement>('[data-ui-tabs-list]');\n const orientation = listOrientation(list);\n const variant = listVariant(list);\n const size = listSize(list);\n const ownerId = item.tab.dataset.uiTabsOwner || item.tab.dataset.owner || owner();\n const selectedIcon = item.tab.querySelector<HTMLElement>('[data-ui-tabs-tab-selected-icon]');\n const state = stateFor(active);\n\n item.tab.id ||= tabIdFor(ownerId, item.value);\n item.tab.dataset.state = state;\n item.tab.dataset.orientation = orientation;\n item.tab.dataset.variant = variant;\n item.tab.dataset.size = size;\n item.tab.setAttribute('role', 'tab');\n item.tab.setAttribute('aria-selected', active ? 'true' : 'false');\n item.tab.setAttribute('aria-controls', item.panel?.id || panelIdFor(ownerId, item.value));\n item.tab.tabIndex = item.tab === projection.tabStop ? 0 : -1;\n setPresence({el: item.tab, attr: 'data-selected', present: active});\n if (selectedIcon) selectedIcon.style.visibility = active ? 'visible' : 'hidden';\n\n setPresence({el: item.tab, attr: 'data-disabled', present: item.disabled});\n if (item.disabled) {\n item.tab.setAttribute('aria-disabled', 'true');\n item.tab.tabIndex = -1;\n } else item.tab.removeAttribute('aria-disabled');\n if (item.tab instanceof HTMLButtonElement) item.tab.disabled = item.disabled;\n };\n\n const syncPanel = (panel: HTMLElement): void => {\n const value = panel.dataset.value || '';\n const active = value === activeValue();\n const ownerId = panel.dataset.uiTabsOwner || panel.dataset.owner || owner();\n const id = panelIdFor(ownerId, value);\n if (value && !panel.id) panel.id = id;\n if (value && !panel.hasAttribute('data-ui-key')) panel.setAttribute('data-ui-key', panel.id || id);\n panel.dataset.state = stateFor(active);\n panel.dataset.orientation = currentProps().orientation;\n panel.setAttribute('role', 'tabpanel');\n panel.setAttribute('aria-labelledby', tabIdFor(ownerId, value));\n if (!panel.hasAttribute('tabindex')) panel.tabIndex = 0;\n panel.hidden = !active;\n setPresence({el: panel, attr: 'data-selected', present: active});\n };\n\n const syncAll = ({indicator = false}: {indicator?: boolean} = {}): TabsProjection => {\n syncRoot();\n const projection = createProjection(activeValue());\n const tabList = projection.primaryList;\n if (tabList) syncList(tabList);\n projection.items.forEach((item) => syncTab(item, projection));\n projection.panels.forEach(syncPanel);\n if (indicator && tabList) positionIndicator(tabList, projection);\n return projection;\n };\n\n const emitChange = (): void => {\n dispatch<TabsChangeDetail>({el: root(), name: 'ui:change', detail: {value: activeValue()}});\n };\n const emitActivate = (tab: TabsTabElement, value: string, panelId: string): void => {\n dispatch<TabsActivateDetail>({\n el: tab,\n name: 'ui:tabs:activate',\n detail: {value, panelId},\n });\n };\n const syncDom = (): void => {\n const projection = syncAll({indicator: true});\n setupObservers(projection);\n setupResizeObserver(projection);\n };\n\n const bridge = createAlpineMachine({\n schema: tabsSchema,\n hooks: tabsHooks,\n resolveTransitionElement: ({data}) => (\n createProjection(activeValue()).itemByValue.get((data as TabsTransitionData).value)?.tab ?? null\n ),\n createMachine: ({props}) => {\n connectingProps = props;\n const context = initialContext(props);\n connectingProps = null;\n return createTabsMachine({\n props,\n context,\n effects: {\n prepareSwitch: ({event}) => {\n syncAll();\n if (event.type === 'SELECT') emitChange();\n },\n finishSwitch: () => syncAll(),\n syncDom,\n syncProps: syncDom,\n syncItems: () => {\n const projection = syncAll({indicator: true});\n setupResizeObserver(projection);\n },\n },\n });\n },\n });\n\n const collectionNav = (): CollectionNavigation => {\n if (!collection) throw new Error('Tabs navigation has not been initialized.');\n return collection;\n };\n\n const selectValue = (value: string, {tab, panel, motion = true}: {\n tab?: TabsTabElement;\n panel?: HTMLElement | null;\n motion?: boolean;\n } = {}): void => {\n const previous = activeValue();\n bridge.send({type: 'SELECT', value, motion});\n if (activeValue() !== previous && tab) emitActivate(tab, activeValue(), panel?.id ?? '');\n };\n\n const handleClick = (event: Event): void => {\n const item = itemFrom(event.target, createProjection(activeValue()));\n if (!item) return;\n if (item.disabled) {\n event.preventDefault();\n return;\n }\n selectValue(item.value, {tab: item.tab, panel: item.panel});\n };\n\n const handlePointerDown = (event: Event): void => {\n pointerFocusedTab = itemFrom(event.target, createProjection(activeValue()))?.tab ?? null;\n window.clearTimeout(pointerFocusReset);\n pointerFocusReset = window.setTimeout(() => {\n pointerFocusedTab = null;\n pointerFocusReset = undefined;\n });\n };\n\n const handleFocus = (event: Event): void => {\n const item = itemFrom(event.target, createProjection(activeValue()));\n if (!item || event.target !== item.tab || item.disabled) return;\n collectionNav().activateItem({el: item.tab});\n if (currentProps().activation === 'automatic' && pointerFocusedTab !== item.tab) {\n selectValue(item.value, {tab: item.tab, panel: item.panel, motion: false});\n } else syncAll();\n };\n\n const handleKeydown = (event: KeyboardEvent): void => {\n const item = itemFrom(event.target, createProjection(activeValue()));\n if (!item || event.target !== item.tab) return;\n if (event.key === ' ' && item.tab instanceof HTMLAnchorElement) {\n event.preventDefault();\n selectValue(item.value, {tab: item.tab, panel: item.panel, motion: false});\n return;\n }\n const orientation = listOrientation(item.tab.closest<HTMLElement>('[data-ui-tabs-list]'));\n if (event.key === 'Home') {\n event.preventDefault();\n collectionNav().focusFirst();\n return;\n }\n if (event.key === 'End') {\n event.preventDefault();\n collectionNav().focusLast();\n return;\n }\n if (orientation === 'vertical') {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n collectionNav().focusNext();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n collectionNav().focusPrevious();\n }\n return;\n }\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n if (isRtl({el: root()})) collectionNav().focusPrevious();\n else collectionNav().focusNext();\n } else if (event.key === 'ArrowLeft') {\n event.preventDefault();\n if (isRtl({el: root()})) collectionNav().focusNext();\n else collectionNav().focusPrevious();\n }\n };\n\n const sendItemsChanged = (next: TabsContext['collection']): void => {\n bridge.send({type: 'ITEMS_CHANGED', ...next});\n };\n\n const setupObservers = (projection: TabsProjection): void => {\n disconnectObserver?.();\n const targets = [root()];\n if (projection.panelsTarget) targets.push(projection.panelsTarget);\n disconnectObserver = observeSemanticChanges({\n targets: uniqueElements(targets),\n read: () => collectionContext(createProjection(activeValue())),\n onChange: sendItemsChanged,\n observer: {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: [\n 'data-value',\n 'data-disabled',\n 'disabled',\n 'data-ui-tabs-owner',\n 'data-owner',\n 'data-variant',\n 'data-size',\n 'data-orientation',\n 'data-gap',\n 'id',\n ],\n },\n });\n };\n\n const setupResizeObserver = (projection: TabsProjection): void => {\n resizeObserver?.disconnect();\n if (typeof ResizeObserver === 'undefined') return;\n resizeObserver = new ResizeObserver(() => {\n if (!rootEl) return;\n const next = createProjection(activeValue());\n if (next.primaryList) positionIndicator(next.primaryList, next);\n });\n if (projection.primaryList) resizeObserver.observe(projection.primaryList);\n projection.items.forEach((item) => resizeObserver?.observe(item.tab));\n };\n\n let component!: TrellisAlpineComponent<TabsData>;\n component = {\n ...bridge,\n get value(): string {\n return this.snapshot.current?.context.selection.value ?? '';\n },\n init(): void {\n rootEl = this.$el;\n bridge.connect(this.$el, this.snapshot);\n collection = createCollectionNavigation({\n root,\n itemSelector: '[data-ui-tabs-tab]',\n isDisabled: (element) => !owns(element)\n || boolDataset(element.dataset.disabled)\n || element.hasAttribute('disabled'),\n loop: () => currentProps().loop,\n });\n const projection = syncAll({indicator: true});\n setupObservers(projection);\n setupResizeObserver(projection);\n },\n destroy(): void {\n disconnectObserver?.();\n disconnectObserver = null;\n resizeObserver?.disconnect();\n resizeObserver = null;\n window.clearTimeout(pointerFocusReset);\n pointerFocusedTab = null;\n pointerFocusReset = undefined;\n bridge.disconnect();\n collection = null;\n rootEl = null;\n },\n transitionIndicator(transition: TabsMotionTransition): MotionHandle | Promise<void> {\n if (!(transition.el instanceof Element)) return Promise.resolve();\n const frame = indicatorFrame(transition.el);\n if (!frame) return Promise.resolve();\n if (!transition.props.animate || transition.event.motion === false) {\n applyIndicatorFrame(frame);\n return noopHandle();\n }\n\n return flip(transition, {\n target: frame.indicator,\n update: () => applyIndicatorFrame(frame),\n role: 'layoutSpring',\n transition: {bounce: 0},\n });\n },\n get root(): BindingObject {\n return {\n 'data-ui-tabs': '',\n ':data-orientation': () => currentProps().orientation,\n ':data-activation': () => currentProps().activation,\n ':data-animate': () => currentProps().animate ? '' : undefined,\n '@pointerdown': handlePointerDown,\n '@click': handleClick,\n '@focusin': handleFocus,\n '@keydown': (event: Event) => {\n if (event instanceof KeyboardEvent) handleKeydown(event);\n },\n };\n },\n select(value: string): void {\n selectValue(value);\n },\n isActive(value: string): boolean {\n return this.snapshot.current?.context.selection.value === value;\n },\n };\n\n return component;\n};\n\nconst registerTabs = defineAlpineData('UiTabs', UiTabs);\n\nexport {registerTabs, UiTabs};\nexport type {TabsActivateDetail, TabsChangeDetail, TabsTransition, UiTabsApi};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\nimport {registerMotionCapability} from '../../capabilities/motion';\nimport {registerTabs as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerTabs = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerTabs};\nexport default registerTabs;\nexport * from './index';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"entry.generated-B4lDxzh9.js","names":[],"sources":["../../../../../../../../client/src/components/tabs/contract.ts","../../../../../../../../client/src/components/tabs/machine.ts","../../../../../../../../client/src/components/tabs/index.ts","../../../../../../../../client/src/components/tabs/entry.generated.ts"],"sourcesContent":["import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n INTERACTION_TREATMENTS,\n LAYOUT_SPACES,\n ORIENTATIONS,\n SELECTION_COLORS,\n type ControlSize,\n type LayoutSpace,\n type Orientation,\n} from '../common';\n\nconst TABS_ACTIVATIONS = ['manual', 'automatic'] as const;\nconst TABS_ORIENTATIONS = ORIENTATIONS;\nconst TABS_LIST_ORIENTATIONS = ['inherit', ...TABS_ORIENTATIONS] as const;\nconst TABS_LIST_GAPS = ['auto', ...LAYOUT_SPACES] as const;\nconst TABS_VARIANTS = ['subtle', 'line', 'segmented', 'pills'] as const;\nconst TABS_SIZES = ['sm', 'md'] as const satisfies readonly ControlSize[];\nconst TABS_COLORS = SELECTION_COLORS;\nconst TABS_INTERACTIONS = INTERACTION_TREATMENTS;\n\nconst tabsSchema = {\n id: string.default('ui-tabs'),\n animate: bool,\n defaultValue: string,\n value: string,\n activation: oneOf(TABS_ACTIVATIONS, 'manual'),\n orientation: oneOf(TABS_ORIENTATIONS, 'horizontal'),\n gap: oneOf(TABS_LIST_GAPS, 'auto'),\n loop: bool.default(true),\n panels: string,\n class: string,\n};\n\ntype TabsActivation = typeof TABS_ACTIVATIONS[number];\ntype TabsOrientation = Orientation;\ntype TabsGap = 'auto' | LayoutSpace;\ntype TabsListOrientation = typeof TABS_LIST_ORIENTATIONS[number];\ntype TabsListGap = TabsGap;\ntype TabsVariant = typeof TABS_VARIANTS[number];\ntype TabsSize = typeof TABS_SIZES[number];\ntype TabsColor = typeof TABS_COLORS[number];\ntype TabsInteraction = typeof TABS_INTERACTIONS[number];\ntype TabsProps = SchemaToProps<typeof tabsSchema>;\n\nexport {\n TABS_ACTIVATIONS,\n TABS_COLORS,\n TABS_INTERACTIONS,\n TABS_LIST_ORIENTATIONS,\n TABS_LIST_GAPS,\n TABS_ORIENTATIONS,\n TABS_SIZES,\n TABS_VARIANTS,\n tabsSchema,\n};\nexport type {\n TabsActivation,\n TabsColor,\n TabsGap,\n TabsListOrientation,\n TabsInteraction,\n TabsListGap,\n TabsOrientation,\n TabsProps,\n TabsSize,\n TabsVariant,\n};\n","import {\n createMachine,\n propsChanged,\n propsChangedEvent,\n type Machine,\n type MachineEventObject,\n type MachineScope,\n} from '../../runtime/state-machine';\nimport {defineHook, type TransitionHookDefinition} from '../../runtime/transition-coordinator';\nimport type {TabsProps} from './contract';\n\ntype TabsContext = {\n selection: {value: string};\n change: {previousValue: string; value: string; panelId: string};\n collection: {values: string[]; disabledValues: string[]; panelIds: Record<string, string>};\n};\n\ntype TabsTransitionData = TabsContext['change'];\n\ntype TabsMachineEffects = {\n prepareSwitch(scope: MachineScope<TabsContext, TabsProps>): void;\n finishSwitch(scope: MachineScope<TabsContext, TabsProps>): void;\n syncDom(scope: MachineScope<TabsContext, TabsProps>): void;\n syncProps(scope: MachineScope<TabsContext, TabsProps>): void;\n syncItems(scope: MachineScope<TabsContext, TabsProps>): void;\n};\n\ntype CreateTabsMachineOptions = {\n props: TabsProps;\n context: TabsContext;\n effects: TabsMachineEffects;\n};\n\nconst switchingHook = defineHook({\n name: 'switching',\n state: 'switching',\n project: (snapshot) => snapshot.context.change,\n onDone: 'SWITCH_DONE',\n onError: 'SWITCH_ERROR',\n sends: {\n select: (value: string) => ({type: 'SELECT', value}),\n },\n} satisfies TransitionHookDefinition<TabsContext, TabsProps, TabsTransitionData, 'switching'>);\n\nconst tabsHooks = [switchingHook] as const;\n\nconst stringValue = (value: unknown): string => typeof value === 'string' ? value : '';\nconst stringValues = (value: unknown): string[] => Array.isArray(value)\n ? value.filter((item): item is string => typeof item === 'string')\n : [];\nconst panelIds = (value: unknown): Record<string, string> => {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return {};\n return Object.fromEntries(Object.entries(value).filter((entry): entry is [string, string] => (\n typeof entry[1] === 'string'\n )));\n};\n\nconst nextProps = (scope: MachineScope<TabsContext, TabsProps>): TabsProps => (\n propsChangedEvent<TabsProps>(scope.event)?.props ?? scope.props\n);\n\nconst nextCollection = (scope: MachineScope<TabsContext, TabsProps>): TabsContext['collection'] => {\n if (scope.event.type !== 'ITEMS_CHANGED') return scope.context.collection;\n return {\n values: stringValues(scope.event.values),\n disabledValues: stringValues(scope.event.disabledValues),\n panelIds: panelIds(scope.event.panelIds),\n };\n};\n\nconst normalizeValue = (value: string, collection: TabsContext['collection']): string => {\n if (value && collection.values.includes(value) && !collection.disabledValues.includes(value)) return value;\n return collection.values.find((item) => !collection.disabledValues.includes(item)) ?? '';\n};\n\nconst nextValue = (scope: MachineScope<TabsContext, TabsProps>): string => {\n const collection = nextCollection(scope);\n if (scope.event.type === 'SELECT') {\n const requested = stringValue(scope.event.value);\n return requested && collection.values.includes(requested) && !collection.disabledValues.includes(requested)\n ? requested\n : scope.context.selection.value;\n }\n if (scope.event.type === 'PROPS_CHANGED' && propsChanged<TabsProps>(scope.event, 'value')) {\n return normalizeValue(nextProps(scope).value, collection);\n }\n return normalizeValue(scope.context.selection.value, collection);\n};\n\nconst selectionChanges = (scope: MachineScope<TabsContext, TabsProps>): boolean => (\n scope.context.selection.value !== nextValue(scope)\n);\n\nconst transition = (target: 'switching', effects: 'prepareSwitch') => ({\n target,\n guard: selectionChanges,\n reduce: 'applySwitch',\n effects,\n} as const);\n\nconst createTabsMachine = ({\n props,\n context,\n effects,\n}: CreateTabsMachineOptions): Machine<TabsContext, TabsProps> => createMachine<TabsContext, TabsProps>({\n initial: 'stable',\n on: {\n DOM_INVALIDATED: {effects: 'syncDom'},\n },\n states: {\n stable: {\n tags: ['stable'],\n on: {\n SELECT: transition('switching', 'prepareSwitch'),\n PROPS_CHANGED: [\n transition('switching', 'prepareSwitch'),\n {reduce: 'reconcile', effects: 'syncProps'},\n ],\n ITEMS_CHANGED: [\n transition('switching', 'prepareSwitch'),\n {reduce: 'reconcile', effects: 'syncItems'},\n ],\n },\n },\n switching: {\n tags: ['switching', 'transitioning'],\n on: {\n SWITCH_DONE: {target: 'stable', effects: 'finishSwitch'},\n SWITCH_ERROR: {target: 'stable', effects: 'finishSwitch'},\n SELECT: transition('switching', 'prepareSwitch'),\n PROPS_CHANGED: [\n transition('switching', 'prepareSwitch'),\n {reduce: 'reconcile', effects: 'syncProps'},\n ],\n ITEMS_CHANGED: [\n transition('switching', 'prepareSwitch'),\n {reduce: 'reconcile', effects: 'syncItems'},\n ],\n },\n },\n },\n}, {\n context,\n props,\n reducers: {\n applySwitch: (scope) => {\n const collection = nextCollection(scope);\n const value = nextValue(scope);\n return {\n props: nextProps(scope),\n context: {\n ...scope.context,\n selection: {value},\n change: {\n previousValue: scope.context.selection.value,\n value,\n panelId: collection.panelIds[value] ?? '',\n },\n collection,\n },\n };\n },\n reconcile: (scope) => ({\n props: nextProps(scope),\n context: {\n ...scope.context,\n collection: nextCollection(scope),\n selection: {value: nextValue(scope)},\n },\n }),\n },\n effects: {\n prepareSwitch: effects.prepareSwitch,\n finishSwitch: effects.finishSwitch,\n syncDom: effects.syncDom,\n syncProps: effects.syncProps,\n syncItems: effects.syncItems,\n },\n});\n\nexport {createTabsMachine, tabsHooks};\nexport type {\n CreateTabsMachineOptions,\n TabsContext,\n TabsMachineEffects,\n TabsTransitionData,\n};\n","import type Alpine from 'alpinejs';\n\nimport {\n type AlpineMachine,\n type BindingObject,\n createAlpineMachine,\n createCollectionNavigation,\n type CollectionNavigation,\n defineAlpineData,\n type MachineSnapshot,\n observeSemanticChanges,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {\n flip,\n type MotionHandle,\n type MotionTransitionSubject,\n} from '@client/motion';\nimport {noopHandle} from '@client/motion/animate';\nimport {asBool, dispatch, isRtl, setPresence} from '@client/utils';\nimport {\n tabsSchema,\n type TabsOrientation,\n type TabsProps,\n type TabsSize,\n type TabsVariant,\n} from './contract';\nimport {\n createTabsMachine,\n type TabsContext,\n tabsHooks,\n type TabsTransitionData,\n} from './machine';\n\ntype TabsTransitionName = (typeof tabsHooks)[number]['name'];\ntype TabsTransition<TName extends TabsTransitionName = TabsTransitionName> = TransitionForHook<\n Extract<(typeof tabsHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\ntype IndicatorFrame = {indicator: HTMLElement; styles: {\n height: number;\n left: number;\n top: number;\n width: number;\n}};\n\ntype TabsTabElement = HTMLButtonElement | HTMLAnchorElement;\n\ntype TabsItem = {\n tab: TabsTabElement;\n value: string;\n disabled: boolean;\n panel: HTMLElement | null;\n};\n\ntype TabsProjection = {\n ownerId: string;\n primaryList: HTMLElement | null;\n panelsTarget: HTMLElement | null;\n panels: HTMLElement[];\n panelByValue: Map<string, HTMLElement>;\n items: TabsItem[];\n itemByValue: Map<string, TabsItem>;\n itemByTab: Map<TabsTabElement, TabsItem>;\n tabStop: TabsTabElement | null;\n};\n\ntype TabsChangeDetail = {value: string};\ntype TabsActivateDetail = {value: string; panelId: string};\n\n/**\n * Public Alpine API for `ui.tabs`.\n *\n * @public\n */\ninterface UiTabsApi {\n /** Currently selected tab value. */\n readonly value: string;\n\n /** Select an enabled tab that belongs to this Tabs owner. */\n select(value: string): void;\n\n /** Whether `value` is currently selected. */\n isActive(value: string): boolean;\n}\n\ntype TabsData = AlpineMachine<TabsContext, TabsProps, typeof tabsHooks> & UiTabsApi & {\n readonly root: BindingObject;\n init(): void;\n destroy(): void;\n transitionIndicator(transition: TabsMotionTransition): MotionHandle | Promise<void>;\n};\n\ntype TabsMotionTransition = MotionTransitionSubject & Readonly<{\n el: unknown;\n event: {motion?: boolean};\n props: {animate: boolean};\n}>;\n\nconst DEFAULT_OWNER = 'ui-tabs';\nconst stateFor = (active: boolean): 'active' | 'inactive' => active ? 'active' : 'inactive';\nconst safeIdPart = (value: string): string => {\n const sanitized = value.trim().toLowerCase().replace(/[^a-z0-9_-]+/g, '-').replace(/^-+|-+$/g, '');\n return sanitized || 'tab';\n};\nconst tabIdFor = (owner: string, value: string): string => `${owner}-tab-${safeIdPart(value)}`;\nconst panelIdFor = (owner: string, value: string): string => `${owner}-panel-${safeIdPart(value)}`;\nconst isTabElement = (element: Element | null): element is TabsTabElement => (\n element instanceof HTMLButtonElement || element instanceof HTMLAnchorElement\n);\nconst uniqueElements = <T extends HTMLElement>(elements: T[]): T[] => Array.from(new Set(elements));\n\nconst UiTabs = (): TrellisAlpineComponent<TabsData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let collection: CollectionNavigation | null = null;\n let disconnectObserver: (() => void) | null = null;\n let resizeObserver: ResizeObserver | null = null;\n let pointerFocusedTab: TabsTabElement | null = null;\n let pointerFocusReset: number | undefined;\n let connectingProps: TabsProps | null = null;\n\n const root = (): HTMLElement & Alpine.ElementWithXAttributes => {\n if (!rootEl) throw new Error('Tabs has not been initialized.');\n return rootEl;\n };\n const owner = (): string => root().id || root().dataset.id || root().dataset.owner || DEFAULT_OWNER;\n const owns = (element: Element): boolean => element.closest('[data-ui-tabs]') === root();\n const boolDataset = (value: string | undefined): boolean => asBool({value});\n\n const listVariant = (list: HTMLElement | null): TabsVariant => {\n const value = list?.dataset.variant;\n if (value === 'subtle' || value === 'segmented' || value === 'pills') return value;\n return 'line';\n };\n const listSize = (list: HTMLElement | null): TabsSize => (\n list?.dataset.size === 'sm' ? 'sm' : 'md'\n );\n const listOrientation = (list: HTMLElement | null): TabsOrientation => {\n const value = list?.dataset.orientation;\n return value === 'vertical' || value === 'horizontal' ? value : currentProps().orientation;\n };\n\n const createProjection = (selectedValue?: string): TabsProjection => {\n const ownerId = owner();\n const detached = (panel: HTMLElement): boolean => (\n panel.dataset.uiTabsOwner === ownerId || panel.dataset.owner === ownerId\n );\n const primaryList = Array.from(\n root().querySelectorAll<HTMLElement>('[data-ui-tabs-list]'),\n ).find(owns) ?? null;\n const foundPanels = Array.from(\n root().querySelectorAll<HTMLElement>('[data-ui-tabs-panel]'),\n ).filter(owns);\n const selector = currentProps().panels;\n const panelsTarget = selector ? document.querySelector<HTMLElement>(selector) : null;\n if (panelsTarget) {\n foundPanels.push(...Array.from(\n panelsTarget.querySelectorAll<HTMLElement>('[data-ui-tabs-panel]'),\n ).filter(detached));\n }\n foundPanels.push(...Array.from(document.querySelectorAll<HTMLElement>(\n `[data-ui-tabs-panel][data-ui-tabs-owner=\"${CSS.escape(ownerId)}\"]`,\n )).filter(detached));\n const panels = uniqueElements(foundPanels);\n const panelByValue = new Map<string, HTMLElement>();\n panels.forEach((panel) => {\n const value = panel.dataset.value || '';\n if (!panelByValue.has(value)) panelByValue.set(value, panel);\n });\n const items = Array.from(\n root().querySelectorAll<HTMLElement>('[data-ui-tabs-tab]'),\n ).filter(owns).map((element, index) => {\n if (!isTabElement(element)) return null;\n element.dataset.value ||= `tab-${index + 1}`;\n return {\n tab: element,\n value: element.dataset.value,\n disabled: boolDataset(element.dataset.disabled) || element.hasAttribute('disabled'),\n panel: panelByValue.get(element.dataset.value) ?? null,\n } satisfies TabsItem;\n }).filter((item): item is TabsItem => item !== null);\n const itemByValue = new Map<string, TabsItem>();\n const itemByTab = new Map<TabsTabElement, TabsItem>();\n items.forEach((item) => {\n if (!itemByValue.has(item.value)) itemByValue.set(item.value, item);\n itemByTab.set(item.tab, item);\n });\n const focused = items.find((item) => (\n document.activeElement === item.tab || item.tab.dataset.active === 'true'\n ));\n return {\n ownerId,\n primaryList,\n panelsTarget,\n panels,\n panelByValue,\n items,\n itemByValue,\n itemByTab,\n tabStop: focused?.tab ?? (selectedValue ? itemByValue.get(selectedValue)?.tab ?? null : null),\n };\n };\n\n const itemFrom = (target: EventTarget | null, projection: TabsProjection): TabsItem | null => {\n if (!(target instanceof Element)) return null;\n const tab = target.closest<HTMLElement>('[data-ui-tabs-tab]');\n return tab && isTabElement(tab) && owns(tab) ? projection.itemByTab.get(tab) ?? null : null;\n };\n\n const collectionContext = (projection: TabsProjection): TabsContext['collection'] => {\n const records = projection.items;\n return {\n values: records.map((item) => item.value),\n disabledValues: records.filter((item) => item.disabled).map((item) => item.value),\n panelIds: Object.fromEntries(records.map((item) => [\n item.value,\n item.panel?.id || panelIdFor(\n item.tab.dataset.uiTabsOwner || item.tab.dataset.owner || projection.ownerId,\n item.value,\n ),\n ])),\n };\n };\n\n const initialContext = (props: TabsProps): TabsContext => {\n const projection = createProjection();\n const collectionState = collectionContext(projection);\n const authoredTab = projection.items.find((item) => (\n boolDataset(item.tab.dataset.selected) || item.tab.getAttribute('aria-selected') === 'true'\n ));\n const authoredPanel = projection.panels.find((panel) => boolDataset(panel.dataset.selected));\n const requested = props.value || props.defaultValue || authoredTab?.value || authoredPanel?.dataset.value || '';\n const value = requested\n && collectionState.values.includes(requested)\n && !collectionState.disabledValues.includes(requested)\n ? requested\n : collectionState.values.find((item) => !collectionState.disabledValues.includes(item)) ?? '';\n return {\n selection: {value},\n change: {previousValue: '', value, panelId: collectionState.panelIds[value] ?? ''},\n collection: collectionState,\n };\n };\n\n const currentProps = (): Readonly<TabsProps> => (\n connectingProps ?? bridge.getCommittedSnapshot().props\n );\n const currentContext = (): Readonly<TabsContext> => bridge.getCommittedSnapshot().context;\n\n const activeValue = (): string => currentContext().selection.value;\n\n const indicatorFor = (list: HTMLElement): HTMLElement | null => (\n list.querySelector<HTMLElement>(':scope > [data-ui-tabs-indicator]')\n );\n const indicatorFrame = (tab: Element): IndicatorFrame | null => {\n if (!(tab instanceof HTMLElement)) return null;\n const list = tab.closest<HTMLElement>('[data-ui-tabs-list]');\n const indicator = list ? indicatorFor(list) : null;\n if (!list || !indicator) return null;\n indicator.hidden = false;\n const listRect = list.getBoundingClientRect();\n const tabRect = tab.getBoundingClientRect();\n const vertical = list.dataset.orientation === 'vertical';\n const line = list.dataset.variant === 'line';\n const width = line && vertical ? 2 : tabRect.width;\n const height = line && !vertical ? 2 : tabRect.height;\n const separatorWidth = line\n ? Number.parseFloat(getComputedStyle(list).getPropertyValue('--border-width-edge-separator')) || 1\n : 0;\n const targetLeft = line && vertical\n ? listRect.left - ((width - separatorWidth) / 2)\n : tabRect.left;\n const targetTop = line && !vertical\n ? listRect.bottom - ((height + separatorWidth) / 2)\n : tabRect.top;\n return {\n indicator,\n styles: {\n height,\n left: targetLeft - listRect.left,\n top: targetTop - listRect.top,\n width,\n },\n };\n };\n const applyIndicatorFrame = (frame: IndicatorFrame): void => {\n frame.indicator.style.height = `${frame.styles.height}px`;\n frame.indicator.style.left = `${frame.styles.left}px`;\n frame.indicator.style.top = `${frame.styles.top}px`;\n frame.indicator.style.width = `${frame.styles.width}px`;\n };\n const positionIndicator = (list: HTMLElement, projection: TabsProjection): void => {\n const indicator = indicatorFor(list);\n if (!indicator) return;\n const active = projection.items.find((item) => (\n item.value === activeValue() && item.tab.closest('[data-ui-tabs-list]') === list\n ));\n if (!active) {\n indicator.hidden = true;\n list.dataset.uiTabsReady = '';\n return;\n }\n const frame = indicatorFrame(active.tab);\n if (frame) applyIndicatorFrame(frame);\n list.dataset.uiTabsReady = '';\n };\n\n const syncRoot = (): void => {\n const props = currentProps();\n if (!root().id && props.id) root().id = props.id;\n root().dataset.orientation = props.orientation;\n root().dataset.activation = props.activation;\n root().dataset.value = activeValue();\n setPresence({el: root(), attr: 'data-animate', present: props.animate});\n };\n\n const syncList = (list: HTMLElement): void => {\n const orientation = listOrientation(list);\n list.setAttribute('role', 'tablist');\n list.dataset.orientation = orientation;\n if (orientation === 'vertical') list.setAttribute('aria-orientation', 'vertical');\n else list.removeAttribute('aria-orientation');\n };\n\n const syncTab = (item: TabsItem, projection: TabsProjection): void => {\n const active = item.value === activeValue();\n const list = item.tab.closest<HTMLElement>('[data-ui-tabs-list]');\n const orientation = listOrientation(list);\n const variant = listVariant(list);\n const size = listSize(list);\n const ownerId = item.tab.dataset.uiTabsOwner || item.tab.dataset.owner || owner();\n const selectedIcon = item.tab.querySelector<HTMLElement>('[data-ui-tabs-tab-selected-icon]');\n const state = stateFor(active);\n\n item.tab.id ||= tabIdFor(ownerId, item.value);\n item.tab.dataset.state = state;\n item.tab.dataset.orientation = orientation;\n item.tab.dataset.variant = variant;\n item.tab.dataset.size = size;\n item.tab.setAttribute('role', 'tab');\n item.tab.setAttribute('aria-selected', active ? 'true' : 'false');\n item.tab.setAttribute('aria-controls', item.panel?.id || panelIdFor(ownerId, item.value));\n item.tab.tabIndex = item.tab === projection.tabStop ? 0 : -1;\n setPresence({el: item.tab, attr: 'data-selected', present: active});\n if (selectedIcon) selectedIcon.style.visibility = active ? 'visible' : 'hidden';\n\n setPresence({el: item.tab, attr: 'data-disabled', present: item.disabled});\n if (item.disabled) {\n item.tab.setAttribute('aria-disabled', 'true');\n item.tab.tabIndex = -1;\n } else item.tab.removeAttribute('aria-disabled');\n if (item.tab instanceof HTMLButtonElement) item.tab.disabled = item.disabled;\n };\n\n const syncPanel = (panel: HTMLElement): void => {\n const value = panel.dataset.value || '';\n const active = value === activeValue();\n const ownerId = panel.dataset.uiTabsOwner || panel.dataset.owner || owner();\n const id = panelIdFor(ownerId, value);\n if (value && !panel.id) panel.id = id;\n if (value && !panel.hasAttribute('data-ui-key')) panel.setAttribute('data-ui-key', panel.id || id);\n panel.dataset.state = stateFor(active);\n panel.dataset.orientation = currentProps().orientation;\n panel.setAttribute('role', 'tabpanel');\n panel.setAttribute('aria-labelledby', tabIdFor(ownerId, value));\n if (!panel.hasAttribute('tabindex')) panel.tabIndex = 0;\n panel.hidden = !active;\n setPresence({el: panel, attr: 'data-selected', present: active});\n };\n\n const syncAll = ({indicator = false}: {indicator?: boolean} = {}): TabsProjection => {\n syncRoot();\n const projection = createProjection(activeValue());\n const tabList = projection.primaryList;\n if (tabList) syncList(tabList);\n projection.items.forEach((item) => syncTab(item, projection));\n projection.panels.forEach(syncPanel);\n if (indicator && tabList) positionIndicator(tabList, projection);\n return projection;\n };\n\n const emitChange = (): void => {\n dispatch<TabsChangeDetail>({el: root(), name: 'ui:change', detail: {value: activeValue()}});\n };\n const emitActivate = (tab: TabsTabElement, value: string, panelId: string): void => {\n dispatch<TabsActivateDetail>({\n el: tab,\n name: 'ui:tabs:activate',\n detail: {value, panelId},\n });\n };\n const syncDom = (): void => {\n const projection = syncAll({indicator: true});\n setupObservers(projection);\n setupResizeObserver(projection);\n };\n\n const bridge = createAlpineMachine({\n schema: tabsSchema,\n hooks: tabsHooks,\n resolveTransitionElement: ({data}) => (\n createProjection(activeValue()).itemByValue.get((data as TabsTransitionData).value)?.tab ?? null\n ),\n createMachine: ({props}) => {\n connectingProps = props;\n const context = initialContext(props);\n connectingProps = null;\n return createTabsMachine({\n props,\n context,\n effects: {\n prepareSwitch: ({event}) => {\n syncAll();\n if (event.type === 'SELECT') emitChange();\n },\n finishSwitch: () => syncAll(),\n syncDom,\n syncProps: syncDom,\n syncItems: () => {\n const projection = syncAll({indicator: true});\n setupResizeObserver(projection);\n },\n },\n });\n },\n });\n\n const collectionNav = (): CollectionNavigation => {\n if (!collection) throw new Error('Tabs navigation has not been initialized.');\n return collection;\n };\n\n const selectValue = (value: string, {tab, panel, motion = true}: {\n tab?: TabsTabElement;\n panel?: HTMLElement | null;\n motion?: boolean;\n } = {}): void => {\n const previous = activeValue();\n bridge.send({type: 'SELECT', value, motion});\n if (activeValue() !== previous && tab) emitActivate(tab, activeValue(), panel?.id ?? '');\n };\n\n const handleClick = (event: Event): void => {\n const item = itemFrom(event.target, createProjection(activeValue()));\n if (!item) return;\n if (item.disabled) {\n event.preventDefault();\n return;\n }\n selectValue(item.value, {tab: item.tab, panel: item.panel});\n };\n\n const handlePointerDown = (event: Event): void => {\n pointerFocusedTab = itemFrom(event.target, createProjection(activeValue()))?.tab ?? null;\n window.clearTimeout(pointerFocusReset);\n pointerFocusReset = window.setTimeout(() => {\n pointerFocusedTab = null;\n pointerFocusReset = undefined;\n });\n };\n\n const handleFocus = (event: Event): void => {\n const item = itemFrom(event.target, createProjection(activeValue()));\n if (!item || event.target !== item.tab || item.disabled) return;\n collectionNav().activateItem({el: item.tab});\n if (currentProps().activation === 'automatic' && pointerFocusedTab !== item.tab) {\n selectValue(item.value, {tab: item.tab, panel: item.panel, motion: false});\n } else syncAll();\n };\n\n const handleKeydown = (event: KeyboardEvent): void => {\n const item = itemFrom(event.target, createProjection(activeValue()));\n if (!item || event.target !== item.tab) return;\n if (event.key === ' ' && item.tab instanceof HTMLAnchorElement) {\n event.preventDefault();\n selectValue(item.value, {tab: item.tab, panel: item.panel, motion: false});\n return;\n }\n const orientation = listOrientation(item.tab.closest<HTMLElement>('[data-ui-tabs-list]'));\n if (event.key === 'Home') {\n event.preventDefault();\n collectionNav().focusFirst();\n return;\n }\n if (event.key === 'End') {\n event.preventDefault();\n collectionNav().focusLast();\n return;\n }\n if (orientation === 'vertical') {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n collectionNav().focusNext();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n collectionNav().focusPrevious();\n }\n return;\n }\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n if (isRtl({el: root()})) collectionNav().focusPrevious();\n else collectionNav().focusNext();\n } else if (event.key === 'ArrowLeft') {\n event.preventDefault();\n if (isRtl({el: root()})) collectionNav().focusNext();\n else collectionNav().focusPrevious();\n }\n };\n\n const sendItemsChanged = (next: TabsContext['collection']): void => {\n bridge.send({type: 'ITEMS_CHANGED', ...next});\n };\n\n const setupObservers = (projection: TabsProjection): void => {\n disconnectObserver?.();\n const targets = [root()];\n if (projection.panelsTarget) targets.push(projection.panelsTarget);\n disconnectObserver = observeSemanticChanges({\n targets: uniqueElements(targets),\n read: () => collectionContext(createProjection(activeValue())),\n onChange: sendItemsChanged,\n observer: {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: [\n 'data-value',\n 'data-disabled',\n 'disabled',\n 'data-ui-tabs-owner',\n 'data-owner',\n 'data-variant',\n 'data-size',\n 'data-orientation',\n 'data-gap',\n 'id',\n ],\n },\n });\n };\n\n const setupResizeObserver = (projection: TabsProjection): void => {\n resizeObserver?.disconnect();\n if (typeof ResizeObserver === 'undefined') return;\n resizeObserver = new ResizeObserver(() => {\n if (!rootEl) return;\n const next = createProjection(activeValue());\n if (next.primaryList) positionIndicator(next.primaryList, next);\n });\n if (projection.primaryList) resizeObserver.observe(projection.primaryList);\n projection.items.forEach((item) => resizeObserver?.observe(item.tab));\n };\n\n let component!: TrellisAlpineComponent<TabsData>;\n component = {\n ...bridge,\n get value(): string {\n return this.snapshot.current?.context.selection.value ?? '';\n },\n init(): void {\n rootEl = this.$el;\n bridge.connect(this.$el, this.snapshot);\n collection = createCollectionNavigation({\n root,\n itemSelector: '[data-ui-tabs-tab]',\n isDisabled: (element) => !owns(element)\n || boolDataset(element.dataset.disabled)\n || element.hasAttribute('disabled'),\n loop: () => currentProps().loop,\n });\n const projection = syncAll({indicator: true});\n setupObservers(projection);\n setupResizeObserver(projection);\n },\n destroy(): void {\n disconnectObserver?.();\n disconnectObserver = null;\n resizeObserver?.disconnect();\n resizeObserver = null;\n window.clearTimeout(pointerFocusReset);\n pointerFocusedTab = null;\n pointerFocusReset = undefined;\n bridge.disconnect();\n collection = null;\n rootEl = null;\n },\n transitionIndicator(transition: TabsMotionTransition): MotionHandle | Promise<void> {\n if (!(transition.el instanceof Element)) return Promise.resolve();\n const frame = indicatorFrame(transition.el);\n if (!frame) return Promise.resolve();\n if (!transition.props.animate || transition.event.motion === false) {\n applyIndicatorFrame(frame);\n return noopHandle();\n }\n\n return flip(transition, {\n target: frame.indicator,\n update: () => applyIndicatorFrame(frame),\n role: 'layoutSpring',\n transition: {bounce: 0},\n });\n },\n get root(): BindingObject {\n return {\n 'data-ui-tabs': '',\n ':data-orientation': () => currentProps().orientation,\n ':data-activation': () => currentProps().activation,\n ':data-animate': () => currentProps().animate ? '' : undefined,\n '@pointerdown': handlePointerDown,\n '@click': handleClick,\n '@focusin': handleFocus,\n '@keydown': (event: Event) => {\n if (event instanceof KeyboardEvent) handleKeydown(event);\n },\n };\n },\n select(value: string): void {\n selectValue(value);\n },\n isActive(value: string): boolean {\n return this.snapshot.current?.context.selection.value === value;\n },\n };\n\n return component;\n};\n\nconst registerTabs = defineAlpineData('UiTabs', UiTabs);\n\nexport {registerTabs, UiTabs};\nexport type {TabsActivateDetail, TabsChangeDetail, TabsTransition, UiTabsApi};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\nimport {registerMotionCapability} from '../../capabilities/motion';\nimport {registerTabs as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerTabs = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerTabs};\nexport default registerTabs;\nexport * from './index';\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.generated-BCTWp6Xu.js","names":[],"sources":["../../../../../../../../client/src/components/import-mapper/index.ts","../../../../../../../../client/src/components/import-mapper/entry.generated.ts"],"sourcesContent":["import type Alpine from 'alpinejs';\n\nimport {addListener, defineAlpineData, type TrellisAlpineComponent} from '@client/runtime';\nimport {cleanupManagerFor} from '@client/runtime/alpine-data';\nimport type {CleanupManager} from '@client/runtime/cleanup-manager';\n\ntype MappingProjectionRow = {\n source: string;\n target: string;\n deleted: boolean;\n};\n\ntype MappingProjection = {\n usedSources: ReadonlySet<string>;\n usedTargets: ReadonlySet<string>;\n sourceAvailable(current: string, candidate: string): boolean;\n targetAvailable(current: string, candidate: string): boolean;\n};\n\nconst mappingProjection = (rows: readonly MappingProjectionRow[]): MappingProjection => {\n const active = rows.filter((row) => !row.deleted);\n const usedSources = new Set(active.map((row) => row.source).filter(Boolean));\n const usedTargets = new Set(active.map((row) => row.target).filter(Boolean));\n return {\n usedSources,\n usedTargets,\n sourceAvailable: (current, candidate) => candidate === current || !usedSources.has(candidate),\n targetAvailable: (current, candidate) => candidate === current || !usedTargets.has(candidate),\n };\n};\n\ntype ImportMapperData = {\n activeSource: string;\n init(): void;\n destroy(): void;\n refresh(): void;\n selectSource(source: string): void;\n};\n\nconst UiImportMapper = (): TrellisAlpineComponent<ImportMapperData> => {\n let root: HTMLElement | null = null;\n let cleanup: CleanupManager;\n\n const selectValue = (element: HTMLElement | null): string => element?.dataset.value ?? '';\n const owns = (element: Element): boolean => element.closest('[data-ui-import-mapper]') === root;\n const owned = <T extends Element>(selector: string): T[] => Array.from(\n root?.querySelectorAll<T>(selector) ?? [],\n ).filter(owns);\n const ownedDescendant = <T extends Element>(element: Element, selector: string): T | null => (\n Array.from(element.querySelectorAll<T>(selector)).find(owns) ?? null\n );\n const rows = (): MappingProjectionRow[] => Array.from(\n owned<HTMLElement>('[data-ui-formset-item]'),\n ).map((item) => ({\n source: selectValue(ownedDescendant(item, '[data-ui-import-mapping-source]')),\n target: selectValue(ownedDescendant(item, '[data-ui-import-mapping-target]')),\n deleted: item.dataset.formState === 'deleted',\n }));\n\n const setAvailability = (\n select: HTMLElement,\n available: (current: string, candidate: string) => boolean,\n ): void => {\n const current = selectValue(select);\n select.querySelectorAll<HTMLElement>('[data-ui-select-option][data-value]').forEach((option) => {\n const enabled = available(current, option.dataset.value ?? '');\n option.toggleAttribute('data-disabled', !enabled);\n if (enabled) option.removeAttribute('aria-disabled');\n else option.setAttribute('aria-disabled', 'true');\n });\n };\n\n return {\n activeSource: '',\n init(): void {\n cleanup = cleanupManagerFor(this);\n root = this.$el;\n addListener({target: root, event: 'ui:formset-change', handler: () => this.refresh(), cleanup});\n addListener({\n target: root,\n event: 'ui:change',\n cleanup,\n handler: (event) => {\n const target = event.target instanceof Element\n ? event.target.closest<HTMLElement>('[data-ui-import-mapping-source]')\n : null;\n if (target && owns(target)) this.selectSource(selectValue(target));\n this.refresh();\n },\n });\n this.refresh();\n },\n destroy(): void {\n root = null;\n },\n refresh(): void {\n if (!root) return;\n const currentRows = rows();\n const projection = mappingProjection(currentRows);\n if (!this.activeSource || !projection.usedSources.has(this.activeSource)) {\n this.activeSource = currentRows.find((row) => !row.deleted && row.source)?.source ?? '';\n }\n owned<HTMLElement>('[data-ui-import-mapping-source]')\n .forEach((select) => setAvailability(select, projection.sourceAvailable));\n owned<HTMLElement>('[data-ui-import-mapping-target]')\n .forEach((select) => setAvailability(select, projection.targetAvailable));\n },\n selectSource(source: string): void {\n if (source) this.activeSource = source;\n },\n };\n};\n\nconst registerImportMapper = (AlpineInstance: Alpine.Alpine): void => {\n defineAlpineData('UiImportMapper', UiImportMapper)(AlpineInstance);\n};\n\nexport {mappingProjection, registerImportMapper, UiImportMapper};\nexport type {ImportMapperData, MappingProjection, MappingProjectionRow};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\n\nimport {registerImportMapper as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerImportMapper = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerImportMapper};\nexport default registerImportMapper;\nexport * from './index';\n"],"mappings":"2FAmBA,IAAM,EAAqB,GAA6D,CACpF,IAAM,EAAS,EAAK,OAAQ,GAAQ,CAAC,EAAI,OAAO,EAC1C,EAAc,IAAI,IAAI,EAAO,IAAK,GAAQ,EAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"entry.generated-BCTWp6Xu.js","names":[],"sources":["../../../../../../../../client/src/components/import-mapper/index.ts","../../../../../../../../client/src/components/import-mapper/entry.generated.ts"],"sourcesContent":["import type Alpine from 'alpinejs';\n\nimport {addListener, defineAlpineData, type TrellisAlpineComponent} from '@client/runtime';\nimport {cleanupManagerFor} from '@client/runtime/alpine-data';\nimport type {CleanupManager} from '@client/runtime/cleanup-manager';\n\ntype MappingProjectionRow = {\n source: string;\n target: string;\n deleted: boolean;\n};\n\ntype MappingProjection = {\n usedSources: ReadonlySet<string>;\n usedTargets: ReadonlySet<string>;\n sourceAvailable(current: string, candidate: string): boolean;\n targetAvailable(current: string, candidate: string): boolean;\n};\n\nconst mappingProjection = (rows: readonly MappingProjectionRow[]): MappingProjection => {\n const active = rows.filter((row) => !row.deleted);\n const usedSources = new Set(active.map((row) => row.source).filter(Boolean));\n const usedTargets = new Set(active.map((row) => row.target).filter(Boolean));\n return {\n usedSources,\n usedTargets,\n sourceAvailable: (current, candidate) => candidate === current || !usedSources.has(candidate),\n targetAvailable: (current, candidate) => candidate === current || !usedTargets.has(candidate),\n };\n};\n\ntype ImportMapperData = {\n activeSource: string;\n init(): void;\n destroy(): void;\n refresh(): void;\n selectSource(source: string): void;\n};\n\nconst UiImportMapper = (): TrellisAlpineComponent<ImportMapperData> => {\n let root: HTMLElement | null = null;\n let cleanup: CleanupManager;\n\n const selectValue = (element: HTMLElement | null): string => element?.dataset.value ?? '';\n const owns = (element: Element): boolean => element.closest('[data-ui-import-mapper]') === root;\n const owned = <T extends Element>(selector: string): T[] => Array.from(\n root?.querySelectorAll<T>(selector) ?? [],\n ).filter(owns);\n const ownedDescendant = <T extends Element>(element: Element, selector: string): T | null => (\n Array.from(element.querySelectorAll<T>(selector)).find(owns) ?? null\n );\n const rows = (): MappingProjectionRow[] => Array.from(\n owned<HTMLElement>('[data-ui-formset-item]'),\n ).map((item) => ({\n source: selectValue(ownedDescendant(item, '[data-ui-import-mapping-source]')),\n target: selectValue(ownedDescendant(item, '[data-ui-import-mapping-target]')),\n deleted: item.dataset.formState === 'deleted',\n }));\n\n const setAvailability = (\n select: HTMLElement,\n available: (current: string, candidate: string) => boolean,\n ): void => {\n const current = selectValue(select);\n select.querySelectorAll<HTMLElement>('[data-ui-select-option][data-value]').forEach((option) => {\n const enabled = available(current, option.dataset.value ?? '');\n option.toggleAttribute('data-disabled', !enabled);\n if (enabled) option.removeAttribute('aria-disabled');\n else option.setAttribute('aria-disabled', 'true');\n });\n };\n\n return {\n activeSource: '',\n init(): void {\n cleanup = cleanupManagerFor(this);\n root = this.$el;\n addListener({target: root, event: 'ui:formset-change', handler: () => this.refresh(), cleanup});\n addListener({\n target: root,\n event: 'ui:change',\n cleanup,\n handler: (event) => {\n const target = event.target instanceof Element\n ? event.target.closest<HTMLElement>('[data-ui-import-mapping-source]')\n : null;\n if (target && owns(target)) this.selectSource(selectValue(target));\n this.refresh();\n },\n });\n this.refresh();\n },\n destroy(): void {\n root = null;\n },\n refresh(): void {\n if (!root) return;\n const currentRows = rows();\n const projection = mappingProjection(currentRows);\n if (!this.activeSource || !projection.usedSources.has(this.activeSource)) {\n this.activeSource = currentRows.find((row) => !row.deleted && row.source)?.source ?? '';\n }\n owned<HTMLElement>('[data-ui-import-mapping-source]')\n .forEach((select) => setAvailability(select, projection.sourceAvailable));\n owned<HTMLElement>('[data-ui-import-mapping-target]')\n .forEach((select) => setAvailability(select, projection.targetAvailable));\n },\n selectSource(source: string): void {\n if (source) this.activeSource = source;\n },\n };\n};\n\nconst registerImportMapper = (AlpineInstance: Alpine.Alpine): void => {\n defineAlpineData('UiImportMapper', UiImportMapper)(AlpineInstance);\n};\n\nexport {mappingProjection, registerImportMapper, UiImportMapper};\nexport type {ImportMapperData, MappingProjection, MappingProjectionRow};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\n\nimport {registerImportMapper as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerImportMapper = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerImportMapper};\nexport default registerImportMapper;\nexport * from './index';\n"],"mappings":"2FAmBA,IAAM,EAAqB,GAA6D,CACpF,IAAM,EAAS,EAAK,OAAQ,GAAQ,CAAC,EAAI,OAAO,EAC1C,EAAc,IAAI,IAAI,EAAO,IAAK,GAAQ,EAAI,MAAM,CAAC,CAAC,OAAO,OAAO,CAAC,EACrE,EAAc,IAAI,IAAI,EAAO,IAAK,GAAQ,EAAI,MAAM,CAAC,CAAC,OAAO,OAAO,CAAC,EAC3E,MAAO,CACH,cACA,cACA,iBAAkB,EAAS,IAAc,IAAc,GAAW,CAAC,EAAY,IAAI,CAAS,EAC5F,iBAAkB,EAAS,IAAc,IAAc,GAAW,CAAC,EAAY,IAAI,CAAS,CAChG,CACJ,EAUM,MAAiE,CACnE,IAAI,EAA2B,KAC3B,EAEE,EAAe,GAAwC,GAAS,QAAQ,OAAS,GACjF,EAAQ,GAA8B,EAAQ,QAAQ,yBAAyB,IAAM,EACrF,EAA4B,GAA0B,MAAM,KAC9D,GAAM,iBAAoB,CAAQ,GAAK,CAAC,CAC5C,CAAC,CAAC,OAAO,CAAI,EACP,GAAsC,EAAkB,IAC1D,MAAM,KAAK,EAAQ,iBAAoB,CAAQ,CAAC,CAAC,CAAC,KAAK,CAAI,GAAK,KAE9D,MAAqC,MAAM,KAC7C,EAAmB,wBAAwB,CAC/C,CAAC,CAAC,IAAK,IAAU,CACb,OAAQ,EAAY,EAAgB,EAAM,iCAAiC,CAAC,EAC5E,OAAQ,EAAY,EAAgB,EAAM,iCAAiC,CAAC,EAC5E,QAAS,EAAK,QAAQ,YAAc,SACxC,EAAE,EAEI,GACF,EACA,IACO,CACP,IAAM,EAAU,EAAY,CAAM,EAClC,EAAO,iBAA8B,qCAAqC,CAAC,CAAC,QAAS,GAAW,CAC5F,IAAM,EAAU,EAAU,EAAS,EAAO,QAAQ,OAAS,EAAE,EAC7D,EAAO,gBAAgB,gBAAiB,CAAC,CAAO,EAC5C,EAAS,EAAO,gBAAgB,eAAe,EAC9C,EAAO,aAAa,gBAAiB,MAAM,CACpD,CAAC,CACL,EAEA,MAAO,CACH,aAAc,GACd,MAAa,CACT,EAAU,EAAkB,IAAI,EAChC,EAAO,KAAK,IACZ,EAAY,CAAC,OAAQ,EAAM,MAAO,oBAAqB,YAAe,KAAK,QAAQ,EAAG,SAAO,CAAC,EAC9F,EAAY,CACR,OAAQ,EACR,MAAO,YACP,UACA,QAAU,GAAU,CAChB,IAAM,EAAS,EAAM,kBAAkB,QACjC,EAAM,OAAO,QAAqB,iCAAiC,EACnE,KACF,GAAU,EAAK,CAAM,GAAG,KAAK,aAAa,EAAY,CAAM,CAAC,EACjE,KAAK,QAAQ,CACjB,CACJ,CAAC,EACD,KAAK,QAAQ,CACjB,EACA,SAAgB,CACZ,EAAO,IACX,EACA,SAAgB,CACZ,GAAI,CAAC,EAAM,OACX,IAAM,EAAc,EAAK,EACnB,EAAa,EAAkB,CAAW,GAC5C,CAAC,KAAK,cAAgB,CAAC,EAAW,YAAY,IAAI,KAAK,YAAY,KACnE,KAAK,aAAe,EAAY,KAAM,GAAQ,CAAC,EAAI,SAAW,EAAI,MAAM,CAAC,EAAE,QAAU,IAEzF,EAAmB,iCAAiC,CAAC,CAChD,QAAS,GAAW,EAAgB,EAAQ,EAAW,eAAe,CAAC,EAC5E,EAAmB,iCAAiC,CAAC,CAChD,QAAS,GAAW,EAAgB,EAAQ,EAAW,eAAe,CAAC,CAChF,EACA,aAAa,EAAsB,CAC3B,IAAQ,KAAK,aAAe,EACpC,CACJ,CACJ,EAEM,EAAwB,GAAwC,CAClE,EAAiB,iBAAkB,CAAc,CAAC,CAAC,CAAc,CACrE,EC7GM,EAAa,IAAI,QAEjB,EAAwB,GAAqC,CAC3D,EAAW,IAAI,CAAc,IACjC,EAAW,IAAI,CAAc,EAE7B,EAAkB,CAAc,EACpC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{o as e,s as t}from"./dom-DiTFTWeR.js";import{l as n,n as r,t as i}from"./codecs-
|
|
2
|
-
//# sourceMappingURL=entry.generated-
|
|
1
|
+
import{o as e,s as t}from"./dom-DiTFTWeR.js";import{l as n,n as r,t as i}from"./codecs-CQ7olTJL.js";import{t as a}from"./alpine-machine-CE2UN4Qu.js";import{n as o}from"./alpine-data-Dvc_bXq6.js";import{t as s}from"./machine-CNnHDbyo.js";import{n as c}from"./props-change-2xfsIAEN.js";import{F as l}from"./common-De1R7Xh6.js";var u=[`stack`,`grid`,`inline`];n(l,`vertical`),n(u,`stack`),n([`default`,`trailing`],`default`),n([`stack`,`row`,`grid`],`stack`),n(u,`stack`);var d={invalid:i(r,`prop-invalid`)},f=[],p=e=>({event:t})=>c(t)?.props.invalid===e,m=e=>{let t=c(e.event)?.props;return t?{props:t}:void 0},h=({props:e,effects:t})=>s({initial:e.invalid?`invalid`:`valid`,on:{PROPS_CHANGED:[{target:`invalid`,guard:p(!0),reduce:`reconcileProps`,effects:`sync`},{target:`valid`,guard:p(!1),reduce:`reconcileProps`,effects:`sync`}],CONTENT_CHANGED:{effects:`sync`}},states:{valid:{tags:[`valid`]},invalid:{tags:[`invalid`]}}},{context:{},props:e,reducers:{reconcileProps:m},effects:t}),g=`input:not([type="hidden"]), textarea, select, button, [data-ui-control-target]`,_=(e,t)=>{let n=new Set((e??``).split(/\s+/).filter(Boolean));return n.add(t),Array.from(n).join(` `)},v=(e,t)=>(e??``).split(/\s+/).filter(e=>e&&!t.has(e)).join(` `),y=(e,t)=>(e.id||=`ui-${t}-${crypto.randomUUID()}`,e.id),b=()=>{let n=null,r=null,i=new WeakMap,o=new WeakMap,s=()=>{if(!n)throw Error(`Field has not been initialized.`);return n},c=()=>m.getCommittedSnapshot(),l=(t,n)=>{let r=i.get(t)??new Set,a=v(t.getAttribute(`aria-describedby`),r);n.forEach(e=>{a=_(a,e)}),a?e({el:t,attr:`aria-describedby`,value:a}):t.removeAttribute(`aria-describedby`),i.set(t,new Set(n))},u=(e,t)=>{if(t){e.hasAttribute(`data-ui-field-aria-invalid`)||(o.set(e,e.getAttribute(`aria-invalid`)),e.setAttribute(`data-ui-field-aria-invalid`,``)),e.setAttribute(`aria-invalid`,`true`);return}if(!e.hasAttribute(`data-ui-field-aria-invalid`))return;let n=o.get(e)??null;n===null?e.removeAttribute(`aria-invalid`):e.setAttribute(`aria-invalid`,n),e.removeAttribute(`data-ui-field-aria-invalid`),o.delete(e)},p=()=>{let n=s(),r=c().props.invalid;t({el:n,attr:`data-invalid`,present:r,value:`true`});let i=Array.from(n.querySelectorAll(g)).filter(e=>!e.closest(`[data-ui-field], [data-ui-fieldset]`)||e.closest(`[data-ui-field], [data-ui-fieldset]`)===n)[0],a=n.querySelector(`:scope > [data-ui-field-label]`),o=n.querySelector(`:scope > [data-ui-fieldset-legend]`),d=Array.from(n.querySelectorAll(`:scope > [data-ui-field-description]`)),f=Array.from(n.querySelectorAll(`:scope > [data-ui-field-error]`)),p=[...d,...f].filter(e=>!e.hasAttribute(`hidden`)).map(e=>y(e,e.hasAttribute(`data-ui-field-error`)?`field-error`:`field-description`));if(i){let t=y(i,`control`);if(a&&!a.htmlFor&&(a.htmlFor=t),o){let t=y(o,`fieldset-legend`);e({el:i,attr:`aria-labelledby`,value:_(i.getAttribute(`aria-labelledby`),t)})}l(i,p),u(i,r)}n.matches(`fieldset`)&&l(n,p)},m=a({schema:d,hooks:f,createMachine:({props:e})=>h({props:e,effects:{sync:p}})});return{...m,init(){n=this.$el,m.connect(n,this.snapshot),r=new MutationObserver(()=>m.send(`CONTENT_CHANGED`)),r.observe(s(),{childList:!0,subtree:!0}),p()},destroy(){r?.disconnect(),r=null,m.disconnect(),n=null}}},x=o(`UiField`,b),S=new WeakSet,C=e=>{S.has(e)||(S.add(e),x(e))};export{b as n,C as t};
|
|
2
|
+
//# sourceMappingURL=entry.generated-BLduYCHm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.generated-CmvKWs0J.js","names":[],"sources":["../../../../../../../../client/src/components/field/contract.ts","../../../../../../../../client/src/components/field/machine.ts","../../../../../../../../client/src/components/field/index.ts","../../../../../../../../client/src/components/field/entry.generated.ts"],"sourcesContent":["import {attribute, bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {ORIENTATIONS, type Orientation} from '../common';\n\nconst FIELD_LAYOUTS = ['stack', 'grid', 'inline'] as const;\nconst FIELD_GROUP_LAYOUTS = ['stack', 'row', 'grid'] as const;\nconst FIELD_ORIENTATIONS = ORIENTATIONS;\n\ntype FieldLayout = typeof FIELD_LAYOUTS[number];\ntype FieldGroupLayout = typeof FIELD_GROUP_LAYOUTS[number];\ntype FieldOrientation = Orientation;\n\nconst fieldSchema = {\n name: string,\n controlId: string,\n label: string,\n description: string,\n descriptionTrailing: string,\n error: string,\n errors: string,\n badge: string,\n orientation: oneOf(FIELD_ORIENTATIONS, 'vertical' as FieldOrientation),\n layout: oneOf(FIELD_LAYOUTS, 'stack' as FieldLayout),\n disabled: bool,\n required: bool,\n invalid: bool,\n class: string,\n};\n\nconst fieldLabelSchema = {\n controlId: string,\n badge: string,\n required: bool,\n class: string,\n};\n\nconst fieldDescriptionSchema = {\n id: string,\n placement: oneOf(['default', 'trailing'] as const, 'default'),\n class: string,\n};\n\nconst fieldErrorSchema = {\n id: string,\n message: string,\n errors: string,\n class: string,\n};\n\nconst fieldGroupSchema = {\n layout: oneOf(FIELD_GROUP_LAYOUTS, 'stack' as FieldGroupLayout),\n class: string,\n};\n\nconst fieldsetSchema = {\n name: string,\n legend: string,\n description: string,\n error: string,\n errors: string,\n layout: oneOf(FIELD_LAYOUTS, 'stack' as FieldLayout),\n disabled: bool,\n required: bool,\n invalid: bool,\n class: string,\n};\n\nconst fieldsetLegendSchema = {\n badge: string,\n required: bool,\n class: string,\n};\n\nconst fieldRuntimeSchema = {\n invalid: attribute(bool, 'prop-invalid'),\n};\n\ntype FieldProps = SchemaToProps<typeof fieldSchema>;\ntype FieldGroupProps = SchemaToProps<typeof fieldGroupSchema>;\ntype FieldRuntimeProps = SchemaToProps<typeof fieldRuntimeSchema>;\ntype FieldsetProps = SchemaToProps<typeof fieldsetSchema>;\n\nexport {\n FIELD_GROUP_LAYOUTS,\n FIELD_LAYOUTS,\n FIELD_ORIENTATIONS,\n fieldDescriptionSchema,\n fieldErrorSchema,\n fieldGroupSchema,\n fieldLabelSchema,\n fieldRuntimeSchema,\n fieldSchema,\n fieldsetLegendSchema,\n fieldsetSchema,\n};\nexport type {FieldGroupLayout, FieldGroupProps, FieldLayout, FieldOrientation, FieldProps, FieldRuntimeProps, FieldsetProps};\n","import {createMachine, propsChangedEvent, type Machine, type MachineScope} from '../../runtime/state-machine';\nimport type {FieldRuntimeProps} from './contract';\n\ntype FieldContext = Record<string, never>;\ntype FieldEffects = {sync(scope: MachineScope<FieldContext, FieldRuntimeProps>): void};\nconst fieldHooks = [] as const;\nconst nextInvalidIs = (invalid: boolean) => ({event}: MachineScope<FieldContext, FieldRuntimeProps>): boolean => (\n propsChangedEvent<FieldRuntimeProps>(event)?.props.invalid === invalid\n);\nconst reconcileProps = (scope: MachineScope<FieldContext, FieldRuntimeProps>) => {\n const next = propsChangedEvent<FieldRuntimeProps>(scope.event)?.props;\n return next ? {props: next} : undefined;\n};\n\nconst createFieldMachine = ({props, effects}: {props: FieldRuntimeProps; effects: FieldEffects}): Machine<FieldContext, FieldRuntimeProps> => createMachine<FieldContext, FieldRuntimeProps>({\n initial: props.invalid ? 'invalid' : 'valid',\n on: {\n PROPS_CHANGED: [\n {target: 'invalid', guard: nextInvalidIs(true), reduce: 'reconcileProps', effects: 'sync'},\n {target: 'valid', guard: nextInvalidIs(false), reduce: 'reconcileProps', effects: 'sync'},\n ],\n CONTENT_CHANGED: {effects: 'sync'},\n },\n states: {valid: {tags: ['valid']}, invalid: {tags: ['invalid']}},\n}, {context: {}, props, reducers: {reconcileProps}, effects});\n\nexport {createFieldMachine, fieldHooks};\nexport type {FieldContext, FieldEffects};\n","import type Alpine from 'alpinejs';\n\nimport {type AlpineMachine, createAlpineMachine, defineAlpineData, type MachineSnapshot, type TrellisAlpineComponent} from '@client/runtime';\nimport {setAttribute, setPresence} from '@client/utils';\nimport {fieldRuntimeSchema, type FieldRuntimeProps} from './contract';\nimport {createFieldMachine, fieldHooks, type FieldContext} from './machine';\n\ntype FieldData = AlpineMachine<FieldContext, FieldRuntimeProps, typeof fieldHooks> & {\n init(): void;\n destroy(): void;\n};\n\nconst controlSelector = 'input:not([type=\"hidden\"]), textarea, select, button, [data-ui-control-target]';\nconst appendId = (value: string | null, id: string): string => {\n const tokens = new Set((value ?? '').split(/\\s+/).filter(Boolean));\n tokens.add(id);\n return Array.from(tokens).join(' ');\n};\nconst withoutIds = (value: string | null, ids: Set<string>): string => (\n (value ?? '').split(/\\s+/).filter((token) => token && !ids.has(token)).join(' ')\n);\nconst ensureId = (el: HTMLElement, prefix: string): string => {\n if (el.id) return el.id;\n el.id = `ui-${prefix}-${crypto.randomUUID()}`;\n return el.id;\n};\n\nconst UiField = (): TrellisAlpineComponent<FieldData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let observer: MutationObserver | null = null;\n const ownedDescriptions = new WeakMap<HTMLElement, Set<string>>();\n const originalInvalid = new WeakMap<HTMLElement, string | null>();\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Field has not been initialized.');\n return rootEl;\n };\n const snapshot = (): MachineSnapshot<FieldContext, FieldRuntimeProps> => bridge.getCommittedSnapshot();\n const applyDescriptions = (el: HTMLElement, ids: string[]): void => {\n const previous = ownedDescriptions.get(el) ?? new Set<string>();\n let value = withoutIds(el.getAttribute('aria-describedby'), previous);\n ids.forEach((id) => { value = appendId(value, id); });\n if (value) setAttribute({el, attr: 'aria-describedby', value});\n else el.removeAttribute('aria-describedby');\n ownedDescriptions.set(el, new Set(ids));\n };\n const applyInvalid = (control: HTMLElement, invalid: boolean): void => {\n if (invalid) {\n if (!control.hasAttribute('data-ui-field-aria-invalid')) {\n originalInvalid.set(control, control.getAttribute('aria-invalid'));\n control.setAttribute('data-ui-field-aria-invalid', '');\n }\n control.setAttribute('aria-invalid', 'true');\n return;\n }\n if (!control.hasAttribute('data-ui-field-aria-invalid')) return;\n const original = originalInvalid.get(control) ?? null;\n if (original === null) control.removeAttribute('aria-invalid');\n else control.setAttribute('aria-invalid', original);\n control.removeAttribute('data-ui-field-aria-invalid');\n originalInvalid.delete(control);\n };\n const syncDom = (): void => {\n const field = root();\n const invalid = snapshot().props.invalid;\n setPresence({el: field, attr: 'data-invalid', present: invalid, value: 'true'});\n\n const controls = Array.from(field.querySelectorAll<HTMLElement>(controlSelector)).filter((control) => (\n !control.closest('[data-ui-field], [data-ui-fieldset]')\n || control.closest('[data-ui-field], [data-ui-fieldset]') === field\n ));\n const control = controls[0];\n const label = field.querySelector<HTMLLabelElement>(':scope > [data-ui-field-label]');\n const legend = field.querySelector<HTMLElement>(':scope > [data-ui-fieldset-legend]');\n const descriptions = Array.from(field.querySelectorAll<HTMLElement>(':scope > [data-ui-field-description]'));\n const errors = Array.from(field.querySelectorAll<HTMLElement>(':scope > [data-ui-field-error]'));\n const describedBy = [...descriptions, ...errors]\n .filter((el) => !el.hasAttribute('hidden'))\n .map((el) => ensureId(el, el.hasAttribute('data-ui-field-error') ? 'field-error' : 'field-description'));\n\n if (control) {\n const controlId = ensureId(control, 'control');\n if (label && !label.htmlFor) label.htmlFor = controlId;\n if (legend) {\n const legendId = ensureId(legend, 'fieldset-legend');\n setAttribute({el: control, attr: 'aria-labelledby', value: appendId(control.getAttribute('aria-labelledby'), legendId)});\n }\n applyDescriptions(control, describedBy);\n applyInvalid(control, invalid);\n }\n if (field.matches('fieldset')) applyDescriptions(field, describedBy);\n };\n const bridge = createAlpineMachine({\n schema: fieldRuntimeSchema,\n hooks: fieldHooks,\n createMachine: ({props}) => createFieldMachine({props, effects: {sync: syncDom}}),\n });\n\n return {\n ...bridge,\n init(): void {\n rootEl = this.$el;\n bridge.connect(rootEl, this.snapshot);\n observer = new MutationObserver(() => bridge.send('CONTENT_CHANGED'));\n observer.observe(root(), {childList: true, subtree: true});\n syncDom();\n },\n destroy(): void {\n observer?.disconnect();\n observer = null;\n bridge.disconnect();\n rootEl = null;\n },\n };\n};\n\nconst registerField = defineAlpineData('UiField', UiField);\n\nexport {registerField, UiField};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\n\nimport {registerField as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerField = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerField};\nexport default registerField;\nexport * from './index';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"entry.generated-BLduYCHm.js","names":[],"sources":["../../../../../../../../client/src/components/field/contract.ts","../../../../../../../../client/src/components/field/machine.ts","../../../../../../../../client/src/components/field/index.ts","../../../../../../../../client/src/components/field/entry.generated.ts"],"sourcesContent":["import {attribute, bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {ORIENTATIONS, type Orientation} from '../common';\n\nconst FIELD_LAYOUTS = ['stack', 'grid', 'inline'] as const;\nconst FIELD_GROUP_LAYOUTS = ['stack', 'row', 'grid'] as const;\nconst FIELD_ORIENTATIONS = ORIENTATIONS;\n\ntype FieldLayout = typeof FIELD_LAYOUTS[number];\ntype FieldGroupLayout = typeof FIELD_GROUP_LAYOUTS[number];\ntype FieldOrientation = Orientation;\n\nconst fieldSchema = {\n name: string,\n controlId: string,\n label: string,\n description: string,\n descriptionTrailing: string,\n error: string,\n errors: string,\n badge: string,\n orientation: oneOf(FIELD_ORIENTATIONS, 'vertical' as FieldOrientation),\n layout: oneOf(FIELD_LAYOUTS, 'stack' as FieldLayout),\n disabled: bool,\n required: bool,\n invalid: bool,\n class: string,\n};\n\nconst fieldLabelSchema = {\n controlId: string,\n badge: string,\n required: bool,\n class: string,\n};\n\nconst fieldDescriptionSchema = {\n id: string,\n placement: oneOf(['default', 'trailing'] as const, 'default'),\n class: string,\n};\n\nconst fieldErrorSchema = {\n id: string,\n message: string,\n errors: string,\n class: string,\n};\n\nconst fieldGroupSchema = {\n layout: oneOf(FIELD_GROUP_LAYOUTS, 'stack' as FieldGroupLayout),\n class: string,\n};\n\nconst fieldsetSchema = {\n name: string,\n legend: string,\n description: string,\n error: string,\n errors: string,\n layout: oneOf(FIELD_LAYOUTS, 'stack' as FieldLayout),\n disabled: bool,\n required: bool,\n invalid: bool,\n class: string,\n};\n\nconst fieldsetLegendSchema = {\n badge: string,\n required: bool,\n class: string,\n};\n\nconst fieldRuntimeSchema = {\n invalid: attribute(bool, 'prop-invalid'),\n};\n\ntype FieldProps = SchemaToProps<typeof fieldSchema>;\ntype FieldGroupProps = SchemaToProps<typeof fieldGroupSchema>;\ntype FieldRuntimeProps = SchemaToProps<typeof fieldRuntimeSchema>;\ntype FieldsetProps = SchemaToProps<typeof fieldsetSchema>;\n\nexport {\n FIELD_GROUP_LAYOUTS,\n FIELD_LAYOUTS,\n FIELD_ORIENTATIONS,\n fieldDescriptionSchema,\n fieldErrorSchema,\n fieldGroupSchema,\n fieldLabelSchema,\n fieldRuntimeSchema,\n fieldSchema,\n fieldsetLegendSchema,\n fieldsetSchema,\n};\nexport type {FieldGroupLayout, FieldGroupProps, FieldLayout, FieldOrientation, FieldProps, FieldRuntimeProps, FieldsetProps};\n","import {createMachine, propsChangedEvent, type Machine, type MachineScope} from '../../runtime/state-machine';\nimport type {FieldRuntimeProps} from './contract';\n\ntype FieldContext = Record<string, never>;\ntype FieldEffects = {sync(scope: MachineScope<FieldContext, FieldRuntimeProps>): void};\nconst fieldHooks = [] as const;\nconst nextInvalidIs = (invalid: boolean) => ({event}: MachineScope<FieldContext, FieldRuntimeProps>): boolean => (\n propsChangedEvent<FieldRuntimeProps>(event)?.props.invalid === invalid\n);\nconst reconcileProps = (scope: MachineScope<FieldContext, FieldRuntimeProps>) => {\n const next = propsChangedEvent<FieldRuntimeProps>(scope.event)?.props;\n return next ? {props: next} : undefined;\n};\n\nconst createFieldMachine = ({props, effects}: {props: FieldRuntimeProps; effects: FieldEffects}): Machine<FieldContext, FieldRuntimeProps> => createMachine<FieldContext, FieldRuntimeProps>({\n initial: props.invalid ? 'invalid' : 'valid',\n on: {\n PROPS_CHANGED: [\n {target: 'invalid', guard: nextInvalidIs(true), reduce: 'reconcileProps', effects: 'sync'},\n {target: 'valid', guard: nextInvalidIs(false), reduce: 'reconcileProps', effects: 'sync'},\n ],\n CONTENT_CHANGED: {effects: 'sync'},\n },\n states: {valid: {tags: ['valid']}, invalid: {tags: ['invalid']}},\n}, {context: {}, props, reducers: {reconcileProps}, effects});\n\nexport {createFieldMachine, fieldHooks};\nexport type {FieldContext, FieldEffects};\n","import type Alpine from 'alpinejs';\n\nimport {type AlpineMachine, createAlpineMachine, defineAlpineData, type MachineSnapshot, type TrellisAlpineComponent} from '@client/runtime';\nimport {setAttribute, setPresence} from '@client/utils';\nimport {fieldRuntimeSchema, type FieldRuntimeProps} from './contract';\nimport {createFieldMachine, fieldHooks, type FieldContext} from './machine';\n\ntype FieldData = AlpineMachine<FieldContext, FieldRuntimeProps, typeof fieldHooks> & {\n init(): void;\n destroy(): void;\n};\n\nconst controlSelector = 'input:not([type=\"hidden\"]), textarea, select, button, [data-ui-control-target]';\nconst appendId = (value: string | null, id: string): string => {\n const tokens = new Set((value ?? '').split(/\\s+/).filter(Boolean));\n tokens.add(id);\n return Array.from(tokens).join(' ');\n};\nconst withoutIds = (value: string | null, ids: Set<string>): string => (\n (value ?? '').split(/\\s+/).filter((token) => token && !ids.has(token)).join(' ')\n);\nconst ensureId = (el: HTMLElement, prefix: string): string => {\n if (el.id) return el.id;\n el.id = `ui-${prefix}-${crypto.randomUUID()}`;\n return el.id;\n};\n\nconst UiField = (): TrellisAlpineComponent<FieldData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let observer: MutationObserver | null = null;\n const ownedDescriptions = new WeakMap<HTMLElement, Set<string>>();\n const originalInvalid = new WeakMap<HTMLElement, string | null>();\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Field has not been initialized.');\n return rootEl;\n };\n const snapshot = (): MachineSnapshot<FieldContext, FieldRuntimeProps> => bridge.getCommittedSnapshot();\n const applyDescriptions = (el: HTMLElement, ids: string[]): void => {\n const previous = ownedDescriptions.get(el) ?? new Set<string>();\n let value = withoutIds(el.getAttribute('aria-describedby'), previous);\n ids.forEach((id) => { value = appendId(value, id); });\n if (value) setAttribute({el, attr: 'aria-describedby', value});\n else el.removeAttribute('aria-describedby');\n ownedDescriptions.set(el, new Set(ids));\n };\n const applyInvalid = (control: HTMLElement, invalid: boolean): void => {\n if (invalid) {\n if (!control.hasAttribute('data-ui-field-aria-invalid')) {\n originalInvalid.set(control, control.getAttribute('aria-invalid'));\n control.setAttribute('data-ui-field-aria-invalid', '');\n }\n control.setAttribute('aria-invalid', 'true');\n return;\n }\n if (!control.hasAttribute('data-ui-field-aria-invalid')) return;\n const original = originalInvalid.get(control) ?? null;\n if (original === null) control.removeAttribute('aria-invalid');\n else control.setAttribute('aria-invalid', original);\n control.removeAttribute('data-ui-field-aria-invalid');\n originalInvalid.delete(control);\n };\n const syncDom = (): void => {\n const field = root();\n const invalid = snapshot().props.invalid;\n setPresence({el: field, attr: 'data-invalid', present: invalid, value: 'true'});\n\n const controls = Array.from(field.querySelectorAll<HTMLElement>(controlSelector)).filter((control) => (\n !control.closest('[data-ui-field], [data-ui-fieldset]')\n || control.closest('[data-ui-field], [data-ui-fieldset]') === field\n ));\n const control = controls[0];\n const label = field.querySelector<HTMLLabelElement>(':scope > [data-ui-field-label]');\n const legend = field.querySelector<HTMLElement>(':scope > [data-ui-fieldset-legend]');\n const descriptions = Array.from(field.querySelectorAll<HTMLElement>(':scope > [data-ui-field-description]'));\n const errors = Array.from(field.querySelectorAll<HTMLElement>(':scope > [data-ui-field-error]'));\n const describedBy = [...descriptions, ...errors]\n .filter((el) => !el.hasAttribute('hidden'))\n .map((el) => ensureId(el, el.hasAttribute('data-ui-field-error') ? 'field-error' : 'field-description'));\n\n if (control) {\n const controlId = ensureId(control, 'control');\n if (label && !label.htmlFor) label.htmlFor = controlId;\n if (legend) {\n const legendId = ensureId(legend, 'fieldset-legend');\n setAttribute({el: control, attr: 'aria-labelledby', value: appendId(control.getAttribute('aria-labelledby'), legendId)});\n }\n applyDescriptions(control, describedBy);\n applyInvalid(control, invalid);\n }\n if (field.matches('fieldset')) applyDescriptions(field, describedBy);\n };\n const bridge = createAlpineMachine({\n schema: fieldRuntimeSchema,\n hooks: fieldHooks,\n createMachine: ({props}) => createFieldMachine({props, effects: {sync: syncDom}}),\n });\n\n return {\n ...bridge,\n init(): void {\n rootEl = this.$el;\n bridge.connect(rootEl, this.snapshot);\n observer = new MutationObserver(() => bridge.send('CONTENT_CHANGED'));\n observer.observe(root(), {childList: true, subtree: true});\n syncDom();\n },\n destroy(): void {\n observer?.disconnect();\n observer = null;\n bridge.disconnect();\n rootEl = null;\n },\n };\n};\n\nconst registerField = defineAlpineData('UiField', UiField);\n\nexport {registerField, UiField};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\n\nimport {registerField as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerField = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerField};\nexport default registerField;\nexport * from './index';\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{n as e}from"./alpine-data-Dvc_bXq6.js";import{n as t,t as n}from"./cursor-data-source-
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{n as e}from"./alpine-data-Dvc_bXq6.js";import{n as t,t as n}from"./cursor-data-source-Do0FfF4Z.js";var r=e=>{let r=null,i=t(e,{cursor:n(()=>{if(!r)throw Error(`Cursor Virtualizer is not mounted.`);return r})}),a=i.init;return i.init=function(){r=this.$el,a.call(this)},i},i=n=>{e(`UiVirtualizer`,()=>t(n))(n),e(`UiCursorVirtualizer`,()=>r(n))(n)},a=new WeakSet,o=e=>{a.has(e)||(a.add(e),i(e))};export{r as n,o as t};
|
|
2
|
+
//# sourceMappingURL=entry.generated-BQNpmLZO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry.generated-BQNpmLZO.js","names":[],"sources":["../../../../../../../../client/src/components/virtualizer/index.ts","../../../../../../../../client/src/components/virtualizer/entry.generated.ts"],"sourcesContent":["import type Alpine from 'alpinejs';\n\nimport {defineAlpineData, type TrellisAlpineComponent} from '@client/runtime';\nimport {UiVirtualizer} from '../../runtime/virtualizer';\nimport type {\n UiVirtualizerApi,\n VirtualizerData,\n} from '../../runtime/virtualizer';\nimport {serverCursorOptions, type ServerCursorResponse} from '../../runtime/cursor-data-source';\n\nconst UiCursorVirtualizer = (\n AlpineInstance: Alpine.Alpine,\n): TrellisAlpineComponent<VirtualizerData<null>> & UiVirtualizerApi<null> => {\n let root: HTMLElement | null = null;\n const component = UiVirtualizer<null, ServerCursorResponse>(AlpineInstance, {\n cursor: serverCursorOptions(() => {\n if (!root) throw new Error('Cursor Virtualizer is not mounted.');\n return root;\n }),\n });\n const init = component.init;\n component.init = function initCursorVirtualizer(): void {\n root = (this as typeof this & {$el: HTMLElement}).$el;\n init.call(this);\n };\n return component;\n};\n\nconst registerVirtualizer = (AlpineInstance: Alpine.Alpine): void => {\n defineAlpineData('UiVirtualizer', () => UiVirtualizer(AlpineInstance))(AlpineInstance);\n defineAlpineData('UiCursorVirtualizer', () => UiCursorVirtualizer(AlpineInstance))(AlpineInstance);\n};\n\nexport {registerVirtualizer, UiCursorVirtualizer, UiVirtualizer};\nexport type {\n CursorContinuation,\n CursorDataSource,\n CursorFirstArgs,\n CursorMoveArgs,\n CursorPage,\n CursorResponseAdapter,\n CursorRenderPayload,\n CursorSeekArgs,\n SoughtCursorPage,\n CursorVirtualizerOptions,\n ResetOptions,\n SetUrlOptions,\n UiVirtualizerApi,\n VirtualizerOptions,\n VirtualizerData,\n VirtualScrollAlign,\n} from '../../runtime/virtualizer';\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\n\nimport {registerVirtualizer as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerVirtualizer = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerVirtualizer};\nexport default registerVirtualizer;\nexport * from './index';\n"],"mappings":"0GAUA,IAAM,EACF,GACyE,CACzE,IAAI,EAA2B,KACzB,EAAY,EAA0C,EAAgB,CACxE,OAAQ,MAA0B,CAC9B,GAAI,CAAC,EAAM,MAAU,MAAM,oCAAoC,EAC/D,OAAO,CACX,CAAC,CACL,CAAC,EACK,EAAO,EAAU,KAKvB,MAJA,GAAU,KAAO,UAAuC,CACpD,EAAQ,KAA0C,IAClD,EAAK,KAAK,IAAI,CAClB,EACO,CACX,EAEM,EAAuB,GAAwC,CACjE,EAAiB,oBAAuB,EAAc,CAAc,CAAC,CAAC,CAAC,CAAc,EACrF,EAAiB,0BAA6B,EAAoB,CAAc,CAAC,CAAC,CAAC,CAAc,CACrG,ECzBM,EAAa,IAAI,QAEjB,EAAuB,GAAqC,CAC1D,EAAW,IAAI,CAAc,IACjC,EAAW,IAAI,CAAc,EAE7B,EAAkB,CAAc,EACpC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{n as e,r as t,s as n,t as r}from"./dom-DiTFTWeR.js";import{s as i}from"./bridge-DMrvM3JE.js";import{t as a}from"./capability-motion-B7n3PcSH.js";import{c as o,f as s,l as c,n as l,s as u,u as d}from"./codecs-CQ7olTJL.js";import{i as f,t as p}from"./alpine-machine-CE2UN4Qu.js";import{t as m}from"./focus-pk_lz9sg.js";import{n as h,t as ee}from"./alpine-data-Dvc_bXq6.js";import{n as te}from"./anchored-popover-BwQbt4V2.js";import{n as ne,t as g}from"./styles-CX2j92ex.js";import{t as re}from"./merge-bindings-BtqW3UgP.js";import{t as _}from"./machine-CNnHDbyo.js";import{n as v,t as y}from"./props-change-2xfsIAEN.js";import{t as ie}from"./dismissable-layer-BROE-Ln2.js";import{i as b,n as ae,r as oe,t as se}from"./form-control-DL1Hkox3.js";import{I as x,L as ce,N as S,a as C,c as w,d as T,f as E,h as D,i as O,m as k,p as A,r as j,t as M,z as N}from"./common-De1R7Xh6.js";var P=null,F=e=>{typeof customElements>`u`||customElements.get(`calendar-date`)||(P??=i(()=>import(`./cally-B-msaaMx.js`),[]))},I=[`single`,`range`],L=[`enhanced`,`native`],R=w,z=[`auto`,`confirm`],B=[`neutral`,`accent`],V=j,H=[`left`,`right`,`top`,`bottom`],U=N,W=T,le={name:s,value:s,startName:s,endName:s,mode:c(I,`single`),placeholder:s,min:s,max:s,today:s,openTo:s,forceOpenTo:l,months:o.clamp(0,12).default(0),firstDayOfWeek:o.clamp(-1,6).default(0),locale:s,format:s.default(`%Y-%m-%d`),rangeSeparator:s.default(`/`),showOutsideDays:l,showWeekNumbers:l,fixedWeeks:l.default(!0),selectableHeader:l,withToday:l,clearable:l,disabled:l,readonly:l,required:l,invalid:l,side:c(ce,`bottom`),align:c(M,`start`),offset:o.clamp(-100,100).default(0),gap:o.clamp(0,50).default(4),implementation:c(L,`enhanced`),variant:c(R,`outline`),color:c(B,`neutral`),radius:c(V,`md`),surface:c(U,`+2`),elevation:c(W,`3`),close:c(z,`auto`),presets:u.array([]),presetsPosition:c(H,`left`),preset:s,presetName:s,triggerClass:s,inputClass:s,popoverClass:s,calendarClass:s,presetsClass:s,presetClass:s,class:s,form:s};c(R,`outline`),c(V,`md`),c(H,`left`);var ue=[f({name:`opening`,state:`disclosure.opening`,project:()=>({}),onDone:`OPENING_DONE`,onError:`OPENING_ERROR`,sends:{close:()=>({type:`CLOSE`})}}),f({name:`closing`,state:`disclosure.closing`,project:()=>({}),onDone:`CLOSING_DONE`,onError:`CLOSING_ERROR`,sends:{open:()=>({type:`OPEN`})}}),f({name:`parsing`,state:`feature.parsing`,project:e=>({input:e.context.input.value}),onDone:`PARSING_DONE`,onError:`PARSING_ERROR`,sends:{select:e=>({type:`SELECT`,value:e,source:`input`}),clear:()=>({type:`CLEAR`})}}),f({name:`selecting`,state:`feature.selecting`,project:e=>({value:e.context.selection.value,previousValue:e.context.selection.previousValue,source:e.context.selection.source,preset:e.context.preset.value}),onDone:`SELECTING_DONE`,onError:`SELECTING_ERROR`,sends:{select:e=>({type:`SELECT`,value:e,source:`input`}),clear:()=>({type:`CLEAR`}),close:()=>({type:`CLOSE`})}})],de=e=>v(e)?.props??null,fe=e=>e.disabled||e.readonly,G=(e,t)=>typeof e[t]==`string`?e[t]:``,pe=e=>{let t=G(e,`source`);return t===`calendar`||t===`input`||t===`preset`||t===`today`||t===`props`?t:`clear`},me=({event:e})=>{let t=de(e);return!!(t&&(y(e,`disabled`)&&t.disabled||y(e,`readonly`)&&t.readonly))},he=({props:e})=>e.close===`auto`,K=(e,t,n)=>({...e,selection:{value:n,pendingValue:n,previousValue:e.selection.value,source:pe(t)},input:{value:G(t,`input`),valid:!0},preset:{value:G(t,`preset`)}}),ge=({props:e,context:t,effects:n})=>_({type:`parallel`,states:{disclosure:{initial:`closed`,states:{closed:{tags:[`closed`],on:{OPEN:{target:`opening`,guard:`canOpen`,reduce:`beginOpen`,effects:`prepareOpen`},TOGGLE:{target:`opening`,guard:`canOpen`,reduce:`beginOpen`,effects:`prepareOpen`}}},opening:{tags:[`visible`,`expanded`,`interactive`,`transitioning`],on:{OPENING_DONE:{target:`open`,effects:`finishOpen`},OPENING_ERROR:{target:`open`,effects:`finishOpen`},CLOSE:{target:`closing`,effects:`prepareClose`},TOGGLE:{target:`closing`,effects:`prepareClose`},SELECT:{target:`closing`,guard:he,effects:`prepareClose`},APPLY:{target:`closing`,effects:`prepareClose`},PROPS_CHANGED:{target:`closing`,guard:me,effects:`prepareClose`}}},open:{tags:[`visible`,`expanded`,`interactive`,`open`],on:{CLOSE:{target:`closing`,effects:`prepareClose`},TOGGLE:{target:`closing`,effects:`prepareClose`},SELECT:{target:`closing`,guard:he,effects:`prepareClose`},APPLY:{target:`closing`,effects:`prepareClose`},PROPS_CHANGED:{target:`closing`,guard:me,effects:`prepareClose`}}},closing:{tags:[`visible`,`transitioning`],on:{CLOSING_DONE:{target:`closed`,effects:`finishClose`},CLOSING_ERROR:{target:`closed`,effects:`finishClose`},OPEN:{target:`opening`,guard:`canOpen`,reduce:`beginOpen`,effects:`prepareOpen`},TOGGLE:{target:`opening`,guard:`canOpen`,reduce:`beginOpen`,effects:`prepareOpen`}}}}},feature:{initial:`idle`,states:{idle:{on:{INPUT:{target:`editing`,reduce:`setInput`,effects:`syncInput`},PENDING:{target:`editing`,reduce:`setPending`,effects:`syncPending`},PARSE:{target:`parsing`,reduce:`setInvalidInput`,effects:`markInvalid`},SELECT:{target:`selecting`,reduce:`select`,effects:`commitSelection`},CLEAR:{target:`selecting`,reduce:`clear`,effects:`commitSelection`},APPLY:{target:`selecting`,reduce:`apply`,effects:`commitSelection`},PROPS_CHANGED:[{target:`selecting`,guard:`valueChanged`,reduce:`replaceProps`,effects:`commitSelection`},{reduce:`replaceProps`,effects:`syncProps`}],PRESETS_CHANGED:{effects:`syncPresets`}}},editing:{tags:[`editing`],on:{INPUT:{target:`editing`,reduce:`setInput`,effects:`syncInput`},PENDING:{target:`editing`,reduce:`setPending`,effects:`syncPending`},PARSE:{target:`parsing`,reduce:`setInvalidInput`,effects:`markInvalid`},SELECT:{target:`selecting`,reduce:`select`,effects:`commitSelection`},CLEAR:{target:`selecting`,reduce:`clear`,effects:`commitSelection`},APPLY:{target:`selecting`,reduce:`apply`,effects:`commitSelection`},CANCEL:{target:`idle`,reduce:`resetDraft`,effects:`syncPending`},CLOSE:{target:`idle`,reduce:`resetDraft`,effects:`syncPending`},PROPS_CHANGED:[{target:`selecting`,guard:`valueChanged`,reduce:`replaceProps`,effects:`commitSelection`},{reduce:`replaceProps`,effects:`syncProps`}],PRESETS_CHANGED:{effects:`syncPresets`}}},parsing:{tags:[`editing`,`parsing`],on:{SELECT:{target:`selecting`,reduce:`select`,effects:`commitSelection`},CLEAR:{target:`selecting`,reduce:`clear`,effects:`commitSelection`},APPLY:{target:`selecting`,reduce:`apply`,effects:`commitSelection`},INPUT:{target:`editing`,reduce:`setInput`,effects:`syncInput`},PARSING_DONE:`editing`,PARSING_ERROR:`editing`,CLOSE:{target:`idle`,reduce:`resetDraft`,effects:`syncPending`},PROPS_CHANGED:[{target:`selecting`,guard:`valueChanged`,reduce:`replaceProps`,effects:`commitSelection`},{target:`editing`,reduce:`replaceProps`,effects:`syncProps`}]}},selecting:{tags:[`selecting`],on:{SELECT:{target:`selecting`,reduce:`select`,effects:`commitSelection`},CLEAR:{target:`selecting`,reduce:`clear`,effects:`commitSelection`},APPLY:{target:`selecting`,reduce:`apply`,effects:`commitSelection`},SELECTING_DONE:`idle`,SELECTING_ERROR:`idle`,PROPS_CHANGED:[{target:`selecting`,guard:`valueChanged`,reduce:`replaceProps`,effects:`commitSelection`},{reduce:`replaceProps`,effects:`syncProps`}],PRESETS_CHANGED:{effects:`syncPresets`}}}}}}},{context:t,props:e,reducers:{beginOpen:({context:e})=>({context:{...e,selection:{...e.selection,pendingValue:e.selection.value}}}),setInput:({context:e,event:t})=>({context:{...e,input:{value:G(t,`input`),valid:!0}}}),setInvalidInput:({context:e,event:t})=>({context:{...e,input:{value:G(t,`input`),valid:!1}}}),setPending:({context:e,event:t})=>({context:{...e,selection:{...e.selection,pendingValue:G(t,`value`),source:pe(t)},preset:{value:G(t,`preset`)}}}),select:({context:e,event:t})=>({context:K(e,t,G(t,`value`))}),clear:({context:e})=>({context:K(e,{type:`CLEAR`},``)}),apply:({context:e})=>({context:K(e,{type:`SELECT`,source:e.selection.source},e.selection.pendingValue)}),resetDraft:({context:e})=>({context:{...e,selection:{...e.selection,pendingValue:e.selection.value},input:{value:``,valid:!0}}}),replaceProps:({context:e,event:t})=>{let n=de(t);if(n)return y(t,`value`)?{props:n,context:K(e,{type:`PROPS_CHANGED`,source:`props`},n.value)}:{props:n}}},guards:{canOpen:({props:e})=>!fe(e),valueChanged:({event:e})=>y(e,`value`)},effects:{prepareOpen:n.prepareOpen,finishOpen:n.finishOpen,prepareClose:n.prepareClose,finishClose:n.finishClose,syncInput:n.syncInput,syncPending:n.syncPending,markInvalid:n.markInvalid,commitSelection:n.commitSelection,syncProps:n.syncProps,syncPresets:n.syncPresets}}),_e=g({definition:{component:`ui.date-picker`,parts:{root:{base:`relative inline-grid w-full min-w-0`},trigger:{base:[D,O.lg,`text-left`],variants:{radius:C},defaults:{radius:`md`}},customTrigger:{base:[`inline-flex min-h-control-lg min-w-control-lg shrink-0 items-center justify-center gap-control-gap px-2 text-sm outline-none`],variants:{radius:C},defaults:{radius:`md`}},input:{base:[`min-w-0 flex-1 text-sm`,A]},icon:{base:`size-icon shrink-0 fill-current text-surface-ink-muted`},action:{base:E},popover:{base:[x,`max-h-lg overflow-hidden rounded-overlay-sm`]},panel:{base:`grid min-w-72 max-w-[calc(100vw-2rem)] gap-0 overflow-hidden`,variants:{hasPresets:{true:``,false:``},presetsPosition:{left:``,right:``,top:``,bottom:``}},compounds:[{when:{hasPresets:!0,presetsPosition:`left`},class:`sm:grid-cols-[minmax(9rem,11rem)_auto]`},{when:{hasPresets:!0,presetsPosition:`right`},class:`sm:grid-cols-[auto_minmax(9rem,11rem)]`}],defaults:{hasPresets:!1,presetsPosition:`left`}},calendarWrap:{base:`relative grid size-full place-items-center overflow-x-auto overflow-y-auto p-popover-padding`},calendar:{base:`grid max-w-full gap-2 text-sm`},presets:{base:[`grid content-start gap-1 p-popover-padding`]},preset:{base:S},footer:{base:`flex items-center justify-end gap-2 p-popover-padding`},nativeWrapper:{base:`relative w-full min-w-0`},native:{base:[k,O.lg],variants:{radius:C},defaults:{radius:`md`}}}}}),q=/^\d{4}-\d{2}-\d{2}$/,J=/^\d{4}-\d{2}-\d{2}\/\d{4}-\d{2}-\d{2}$/,ve=/%[Ymd]/g,ye=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),Y=e=>{let t=0,n=``;for(let r of e.matchAll(/[\s/-]+/g))n+=ye(e.slice(t,r.index)),n+=`(?:\\s|[/-])+`,t=(r.index??0)+r[0].length;return n+ye(e.slice(t))},be=e=>{let t=[],n=0,r=``;for(let i of e.matchAll(ve)){r+=Y(e.slice(n,i.index));let a=i[0];t.push(a),r+=a===`%Y`?`(\\d{4})`:`(\\d{2})`,n=(i.index??0)+a.length}return r+=Y(e.slice(n)),{source:r,tokens:t}},X=(e,t)=>{let n=Object.fromEntries(t.map((t,n)=>[t,e[n]??``])),r=Number(n[`%Y`]),i=Number(n[`%m`]),a=Number(n[`%d`]);if(!r||!i||!a||new Set(t).size!==3)return null;let o=new Date(Date.UTC(r,i-1,a));return o.getUTCFullYear()!==r||o.getUTCMonth()!==i-1||o.getUTCDate()!==a?null:`${String(r).padStart(4,`0`)}-${String(i).padStart(2,`0`)}-${String(a).padStart(2,`0`)}`},xe=({input:e,format:t,range:n,separator:r})=>{let i=be(t);if(!n){let t=e.trim().match(RegExp(`^${i.source}$`));return t?X(t.slice(1),i.tokens):null}let a=e.trim().match(RegExp(`^${i.source}${Y(r)}${i.source}$`));if(!a)return null;let o=i.tokens.length,s=X(a.slice(1,o+1),i.tokens),c=X(a.slice(o+1),i.tokens);return s&&c&&s<=c?`${s}/${c}`:null},Z=(e,t)=>{if(!q.test(e))return e;let[n=``,r=``,i=``]=e.split(`-`);return t.replaceAll(`%Y`,n).replaceAll(`%m`,r).replaceAll(`%d`,i)},Se=e=>e.replaceAll(`%Y`,`YYYY`).replaceAll(`%m`,`MM`).replaceAll(`%d`,`DD`),Ce=({input:e,format:t,separator:n})=>{let r=new Set(`${t.replace(ve,``)}${n}`);return Array.from(e).filter(e=>/[0-9]/.test(e)||/[\s/-]/.test(e)||r.has(e)).join(``)},we=({input:e,format:t,range:n,separator:r})=>{let i=t.replaceAll(`%Y`,`9999`).replaceAll(`%m`,`99`).replaceAll(`%d`,`99`),a=n?`${i}${r}${i}`:i,o=e.match(/[0-9]/g)??[],s=0,c=``;for(let e=0;e<a.length;e+=1){let t=a[e]??``;if(t===`9`){let e=o[s];if(e===void 0)break;c+=e,s+=1;continue}s>0&&a.slice(e+1).includes(`9`)&&(c+=t)}return c},Te=({value:e,format:t,range:n,separator:r})=>{if(!e)return``;if(!n)return Z(e,t);if(!J.test(e))return e;let[i=``,a=``]=e.split(`/`);return`${Z(i,t)}${r}${Z(a,t)}`},Ee=(e,t,n)=>(J.test(e)?e.split(`/`):[e]).every(e=>q.test(e)&&(!t||e>=t)&&(!n||e<=n)),De=100,Oe=10,Q=e=>{let[t=``,n=``]=e.split(`/`);return[t,n]},ke=()=>new Date().getFullYear(),Ae=()=>`${ke()-De}-01-01`,je=()=>`${ke()+Oe}-12-31`,$=()=>new Date().toISOString().slice(0,10),Me=(e,t)=>q.test(e)?new Intl.DateTimeFormat(t||void 0,{month:`long`,timeZone:`UTC`,year:`numeric`}).format(new Date(`${e}T00:00:00.000Z`)):``,Ne=t=>({value:t.dataset.value??``,label:t.dataset.label??t.textContent?.trim()??``,start:t.dataset.start??``,end:t.dataset.end??``,disabled:e({value:t.dataset.disabled})}),Pe=()=>{let e=null,i=``,a=``,o=null,s,c=``,l=``,u=``,f=``,h=!1,g=()=>{if(!e)throw Error(`Date picker has not been initialized.`);return e},_=()=>U.getCommittedSnapshot().props,v=()=>U.getCommittedSnapshot().context,y=()=>{let e=g().querySelector(`[data-ui-date-picker-trigger]`);if(!e)throw Error(`Date picker requires a trigger.`);return e},x=()=>{let e=g().querySelector(`[data-ui-date-picker-input]`);if(!e)throw Error(`Date picker requires an input.`);return e},ce=()=>g().querySelector(`[data-ui-date-picker-toggle]`),S=()=>{let e=g().querySelector(`[data-ui-date-picker-popover]`);if(!e)throw Error(`Date picker requires a popover.`);return e},C=()=>g().querySelector(`[data-ui-date-picker-calendar]`),w=()=>g().querySelector(`[data-ui-date-picker-hidden-inputs]`),T=()=>g().querySelector(`[data-ui-date-picker-preset-inputs]`),E=()=>_().mode===`range`,D=()=>_().months||(E()?2:1),O=()=>{let e=Array.from(g().querySelectorAll(`[data-ui-date-picker-preset]`)).map(Ne).filter(e=>e.value&&e.start&&e.end);return e.length?e:_().presets},k=e=>Te({value:e,format:_().format,range:E(),separator:_().rangeSeparator}),A=e=>{let t=O().find(t=>(E()?`${t.start}/${t.end}`:t.start)===e),n=O().find(e=>e.value===`custom`);return t?.value??(e&&n?`custom`:``)},j=e=>{let t=g().querySelector(`[data-ui-date-picker-calendar-heading]`);if(!t)return;let n=_();t.textContent=Me(e||Q(v().selection.value||n.openTo||n.today||$())[0],n.locale)},M=()=>{let e=C();if(!e)return;let t=_(),r=v(),i=r.selection.pendingValue;customElements.get(`calendar-date`)&&(e.value=i),e.setAttribute(`value`,i),n({el:e,attr:`tentative`,present:E()&&!!i&&!J.test(i)}),e.setAttribute(`months`,String(D())),e.style.setProperty(`--ui-date-picker-month-columns`,String(D())),e.setAttribute(`min`,t.min||Ae()),e.setAttribute(`max`,t.max||je()),t.today?e.setAttribute(`today`,t.today):e.removeAttribute(`today`);let a=t.forceOpenTo?t.openTo:r.selection.value||t.openTo||t.today||$();e.setAttribute(`focused-date`,Q(a)[0]),t.locale?e.setAttribute(`locale`,t.locale):e.removeAttribute(`locale`),t.firstDayOfWeek>=0&&e.setAttribute(`first-day-of-week`,String(t.firstDayOfWeek));let o=!t.selectableHeader&&D()===1;n({el:e,attr:`data-inline-heading`,present:o,value:`true`}),n({el:e,attr:`data-hide-month-heading`,present:t.selectableHeader&&!E()||o,value:`true`}),n({el:e,attr:`data-fixed-weeks`,present:t.fixedWeeks,value:`true`}),n({el:e,attr:`show-outside-days`,present:t.showOutsideDays||t.fixedWeeks}),n({el:e,attr:`show-week-numbers`,present:t.showWeekNumbers})},N=()=>{let e=v().selection.pendingValue||v().selection.value;g().querySelectorAll(`[data-ui-date-picker-preset]`).forEach(t=>{let r=Ne(t),i=E()?`${r.start}/${r.end}`:r.start;n({el:t,attr:`data-selected`,present:i===e,value:`true`}),n({el:t,attr:`data-disabled`,present:r.disabled??!1,value:`true`})})},P=()=>{let e=w();if(!e)return;let t=_(),n=v().selection.value;if(!E()){c=b({container:e,currentKey:c,state:{name:t.name,values:n?[n]:[],required:t.required,form:t.form,marker:`data-ui-date-picker-hidden-input`}});return}let[r,i]=Q(n);if(t.startName||t.endName){let n=JSON.stringify({startName:t.startName,endName:t.endName,start:r,end:i,form:t.form});if(n===c)return;e.replaceChildren(),[[t.startName,r],[t.endName,i]].forEach(([n,r])=>{if(!n)return;let i=document.createElement(`input`);i.type=`hidden`,i.name=n,i.value=r??``,i.setAttribute(`data-ui-date-picker-hidden-input`,``),t.form&&i.setAttribute(`form`,t.form),e.append(i)}),c=n;return}c=b({container:e,currentKey:c,state:{name:t.name,values:n?[n]:[],required:t.required,form:t.form,marker:`data-ui-date-picker-hidden-input`}})},F=()=>{let e=T();if(!e)return;let t=_(),n=A(v().selection.value);l=b({container:e,currentKey:l,state:{name:t.presetName,values:n?[n]:[],form:t.form,marker:`data-ui-date-picker-preset-input`}})},I=()=>{let e=_(),t=v(),n=U.hasTag(`visible`),r=U.hasTag(`expanded`),o=y(),s=x(),c=S();o.id=i,c.id=a,c.dataset.state=r?`open`:`closed`,c.hidden=!n,o.dataset.state=r?`open`:`closed`,ae({el:o,state:e,value:`true`});let l=ce()??o;l.setAttribute(`aria-haspopup`,`dialog`),l.setAttribute(`aria-expanded`,r?`true`:`false`),l.setAttribute(`aria-controls`,a),o instanceof HTMLButtonElement&&(o.disabled=e.disabled);let d=U.hasTag(`editing`)?t.input.value:k(t.selection.value);oe({input:s,state:{name:``,value:d,disabled:e.disabled,readonly:e.readonly,required:e.required&&e.mode===`single`,invalid:e.invalid||!t.input.valid}}),s.placeholder=W.effectivePlaceholder(),g().querySelectorAll(`[data-ui-date-picker-clear], [data-ui-date-picker-toggle]`).forEach(t=>{t.disabled=e.disabled}),f=d;let p=g().querySelector(`[data-ui-date-picker-live]`);p&&(p.textContent=u)},L=()=>{let e=g().querySelector(`[data-ui-date-picker-calendar-today]`),t=g().querySelector(`[data-ui-date-picker-today-day]`);if(!e||!t)return;let n=_().today||$(),r=q.test(n)?String(Number(n.slice(-2))):``;t.textContent=r,e.setAttribute(`aria-label`,r?`Go to today, ${n}`:`Go to today`)},R=()=>{let e=_(),t=S();t.dataset.uiSurface=e.surface,t.dataset.uiElevation=e.elevation},z=()=>{d({el:g(),schema:le,key:`value`,value:v().selection.value}),I(),M(),j(),L(),R(),P(),F(),N(),U.hasTag(`visible`)&&o?.sync()},B=()=>{se({container:w(),fallback:g(),marker:`data-ui-date-picker-hidden-input`}),t({el:g(),name:`ui:change`})},V=(e,t,n=``)=>{_().disabled||_().readonly||U.send({type:`SELECT`,value:e,source:t,preset:n})},H=e=>{let t=_(),n=xe({input:e,format:t.format,range:E(),separator:t.rangeSeparator});return n&&Ee(n,t.min,t.max)?n:null},U=p({schema:le,hooks:ue,createMachine:({props:e})=>ge({props:e,context:{selection:{value:e.value,pendingValue:e.value,previousValue:e.value,source:`props`},input:{value:``,valid:!0},preset:{value:e.preset}},effects:{prepareOpen:()=>{let e=S();e.hidden=!1,o?.open(),z()},finishOpen:()=>{h&&m(C(),{showIndicator:!1}),h=!1,t({el:g(),name:`ui:open`})},prepareClose:z,finishClose:()=>{let e=S();o?.close(),e.hidden=!0,h&&m(y(),{showIndicator:!1}),h=!1,z(),t({el:g(),name:`ui:close`})},syncInput:I,syncPending:()=>{I(),M(),N()},markInvalid:()=>{x().setCustomValidity(`Enter a date in ${_().format}`),I(),t({el:g(),name:`ui:invalid`})},commitSelection:()=>{x().setCustomValidity(``);let e=v();u=e.selection.value?E()?`Range selected`:`Date selected`:`Date cleared`,z(),B(),t({el:g(),name:e.selection.value?`ui:select`:`ui:clear`})},syncProps:z,syncPresets:()=>{N(),F()}}}),resolveTransitionElement:({name:e,root:t})=>e===`opening`||e===`closing`?t.querySelector(`[data-ui-date-picker-popover]`):e===`parsing`?t.querySelector(`[data-ui-date-picker-input]`):t}),W;return W={...U,get isOpen(){return U.hasTag(`expanded`)},get isEditing(){return U.hasTag(`editing`)},get value(){return U.getCommittedSnapshot().context.selection.value},get pendingValue(){return U.getCommittedSnapshot().context.selection.pendingValue},get preset(){return A(U.getCommittedSnapshot().context.selection.value)},get root(){return re({inputs:[ne({part:_e.parts.root,props:U.getCommittedSnapshot().props,className:U.getCommittedSnapshot().props.class}),{"data-ui-date-picker":``,":data-state":()=>W.isOpen?`open`:`closed`}]})},effectivePlaceholder(){let e=U.getCommittedSnapshot().props;if(e.placeholder)return e.placeholder;let t=Se(e.format);return e.mode===`range`?`${t}${e.rangeSeparator}${t}`:t},open(e){e?.preventDefault(),e instanceof KeyboardEvent&&(h=!0),U.send(`OPEN`)},close(e){e?.preventDefault(),e instanceof KeyboardEvent&&(h=!0),U.send(`CLOSE`)},toggle(e){e?.preventDefault(),U.send(`TOGGLE`)},select(e,t){t?.preventDefault(),Ee(e,_().min,_().max)&&(E()?J.test(e):q.test(e))&&V(e,`input`)},selectPreset(e,t){if(t?.preventDefault(),_().disabled||_().readonly)return;let n=O().find(t=>t.value===e);if(!n||n.disabled)return;let r=E()?`${n.start}/${n.end}`:n.start;_().close===`confirm`?U.send({type:`PENDING`,value:r,source:`preset`,preset:e}):V(r,`preset`,e)},selectToday(e){if(e?.preventDefault(),_().disabled||_().readonly)return;let t=_().today||$(),n=E()?`${t}/${t}`:t;_().close===`confirm`?U.send({type:`PENDING`,value:n,source:`today`}):V(n,`today`)},clear(e){e?.preventDefault(),!(_().disabled||_().readonly)&&U.send(`CLEAR`)},cancel(e){e?.preventDefault(),U.send(`CANCEL`),U.send(`CLOSE`)},init(){s=ee(this),e=this.$el,i=this.$id(`date-picker-trigger`),a=this.$id(`date-picker-popover`),U.connect(this.$el,this.snapshot),o=te({reference:y,floating:S,position:()=>_().side,align:()=>_().align,gap:()=>_().gap,offset:()=>_().offset,matchReferenceWidth:!1});let t=y(),n=x(),c=S();r({target:t,event:`click`,cleanup:s,handler:e=>{let t=e.target;t instanceof Element&&t.closest(`[data-ui-date-picker-clear]`)?W.clear(e):W.toggle(e)}}),r({target:t,event:`keydown`,cleanup:s,handler:e=>{let t=e;(t.key===`ArrowDown`||t.key===`Enter`||t.key===` `)&&!W.isOpen?W.open(t):t.key===`Escape`&&W.isOpen&&W.close(t)}}),r({target:g(),event:`keydown`,cleanup:s,handler:e=>{let t=e;t.key===`Escape`&&W.isOpen&&W.close(t)}}),r({target:n,event:`input`,cleanup:s,handler:()=>{let e=n.selectionStart??n.value.length,t=(n.value.slice(0,e).match(/[0-9]/g)??[]).length,r=Ce({input:n.value,format:_().format,separator:_().rangeSeparator});if(f.length-r.length!==1&&(r=we({input:r,format:_().format,range:E(),separator:_().rangeSeparator})),n.value!==r){n.value=r;let e=0,i=r.length;for(let n=0;n<r.length;n+=1)if(/[0-9]/.test(r[n]??``)&&(e+=1),e===t){for(i=n+1;i<r.length&&!/[0-9]/.test(r[i]??``);)i+=1;break}n.setSelectionRange(i,i)}f=r,U.send({type:`INPUT`,input:r});let i=H(r);i&&V(i,`input`)}}),r({target:n,event:`change`,cleanup:s,handler:()=>{let e=H(n.value);e?V(e,`input`):n.value.trim()?U.send({type:`PARSE`,input:n.value}):U.send(`CLEAR`)}}),r({target:c,event:`pointerdown`,cleanup:s,handler:e=>e.stopPropagation()}),r({target:c,event:`click`,cleanup:s,handler:e=>{let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`[data-ui-date-picker-preset]`);n?W.selectPreset(n.dataset.value??``,e):t.closest(`[data-ui-date-picker-clear]`)?W.clear(e):t.closest(`[data-ui-date-picker-cancel]`)?W.cancel(e):t.closest(`[data-ui-date-picker-apply]`)?U.send(`APPLY`):t.closest(`[data-ui-date-picker-today]`)&&W.selectToday(e)}});let l=C();l&&(customElements.whenDefined(`calendar-date`).then(()=>{e&&M()}),r({target:l,event:`change`,cleanup:s,handler:()=>{let e=l.value;E()&&!J.test(e)?(u=`Start date selected`,U.send({type:`PENDING`,value:e,source:`calendar`})):_().close===`confirm`?U.send({type:`PENDING`,value:e,source:`calendar`}):V(e,`calendar`)}}),r({target:l,event:`focusday`,cleanup:s,handler:e=>{let t=e.detail;t instanceof Date&&j(t.toISOString().slice(0,10))}})),s.add(ie({isEnabled:()=>W.isOpen,roots:()=>[g(),c],onDismiss:()=>W.close()}));let d=new MutationObserver(()=>U.send(`PRESETS_CHANGED`));d.observe(g(),{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`data-value`,`data-start`,`data-end`,`data-disabled`]}),s.add(()=>d.disconnect()),z()},destroy(){o?.destroy(),o=null,U.disconnect(),e=null}},W},Fe=h(`UiDatePicker`,Pe),Ie=new WeakSet,Le=e=>{Ie.has(e)||(Ie.add(e),a(e),F(e),Fe(e))};export{Pe as n,Le as t};
|
|
2
|
+
//# sourceMappingURL=entry.generated-BXvp4vUv.js.map
|