@vireo-ai/trellis-ui 0.1.52 → 0.1.54
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 +23 -1
- package/package.json +2 -2
- package/packages/client/src/components/keybinding/styles.css +18 -2
- package/packages/client/src/components/link/styles.css +42 -0
- package/packages/client/src/components/tooltip/styles.css +3 -8
- package/packages/client/src/styles/components.css +2 -0
- package/packages/client/src/styles/generated/theme-fonts.css +1 -1
- package/packages/client/src/styles/generated/theme-palette.css +5 -1
- package/packages/client/src/styles/generated/theme-runtime.css +425 -6
- package/packages/client/src/styles/generated-sources.css +1 -1
- package/packages/client/src/styles/layout-participation.css +17 -0
- package/packages/client/src/styles/recipes/intent.css +3 -3
- package/packages/client/types/assets/bridge.d.ts +2 -1
- package/packages/client/types/capabilities/sortable.d.ts +2 -2
- package/packages/client/types/component-api.d.ts +1 -1
- package/packages/client/types/components/box/contract.d.ts +19 -19
- package/packages/client/types/components/button/contract.d.ts +1 -1
- package/packages/client/types/components/checkbox/machine.d.ts +0 -3
- package/packages/client/types/components/common.d.ts +23 -2
- package/packages/client/types/components/container/contract.d.ts +11 -11
- package/packages/client/types/components/file-upload/contract.d.ts +1 -1
- package/packages/client/types/components/file-upload/machine.d.ts +10 -12
- package/packages/client/types/components/flex/contract.d.ts +9 -9
- package/packages/client/types/components/frame/contract.d.ts +27 -26
- package/packages/client/types/components/grid/contract.d.ts +9 -9
- package/packages/client/types/components/heading/contract.d.ts +2 -2
- package/packages/client/types/components/input/contract.d.ts +1 -1
- package/packages/client/types/components/keybinding/contract.d.ts +5 -2
- package/packages/client/types/components/layout.d.ts +303 -149
- package/packages/client/types/components/link/contract.d.ts +30 -0
- package/packages/client/types/components/link/index.d.ts +2 -0
- package/packages/client/types/components/menu/contract.d.ts +17 -4
- package/packages/client/types/components/panels/contract.d.ts +1 -1
- package/packages/client/types/components/panels/machine.d.ts +17 -10
- package/packages/client/types/components/runtime.d.ts +1 -1
- package/packages/client/types/components/section/contract.d.ts +9 -9
- package/packages/client/types/components/select/contract.d.ts +1 -1
- package/packages/client/types/components/select/machine.d.ts +8 -7
- package/packages/client/types/components/stack/contract.d.ts +9 -9
- package/packages/client/types/components/switch/machine.d.ts +1 -5
- package/packages/client/types/components/text/contract.d.ts +4 -4
- package/packages/client/types/components/toast/index.d.ts +0 -2
- package/packages/client/types/components/toast/machine.d.ts +6 -5
- package/packages/client/types/components/virtualizer/cursor.d.ts +1 -1
- package/packages/client/types/components/virtualizer/index.d.ts +1 -1
- package/packages/client/types/core.d.ts +2 -2
- package/packages/client/types/directives/sortable.d.ts +2 -1
- package/packages/client/types/motion/owned.d.ts +5 -3
- package/packages/client/types/runtime/alpine-data.d.ts +3 -1
- package/packages/client/types/runtime/cursor-data-source.d.ts +14 -19
- package/packages/client/types/runtime/drag-and-drop/index.d.ts +2 -2
- package/packages/client/types/runtime/drag-and-drop/sortable/contract.d.ts +12 -12
- package/packages/client/types/runtime/drag-and-drop/sortable/feedback.d.ts +3 -3
- package/packages/client/types/runtime/drag-and-drop/sortable/index.d.ts +2 -2
- package/packages/client/types/runtime/drag-and-drop/sortable/placement.d.ts +7 -7
- package/packages/client/types/runtime/drag-and-drop/sortable/registry.d.ts +9 -5
- package/packages/client/types/runtime/engine/navigation.d.ts +2 -1
- package/packages/client/types/runtime/engine/request.d.ts +29 -5
- package/packages/client/types/runtime/engine/stream.d.ts +6 -2
- package/packages/client/types/runtime/index.d.ts +4 -4
- package/packages/client/types/runtime/manifest.d.ts +31 -8
- package/packages/client/types/runtime/scroll-lock.d.ts +2 -3
- package/packages/client/types/runtime/theme.d.ts +2 -2
- package/packages/client/types/runtime/ui.d.ts +3 -3
- package/packages/client/types/runtime/virtualizer-fragment.d.ts +1 -1
- package/packages/client/types/runtime/virtualizer.d.ts +1 -1
- package/packages/client/types/utils/dom.d.ts +3 -3
- package/packages/client/types/utils/index.d.ts +2 -2
- package/packages/client/types/utils/object.d.ts +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +464 -26
- package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css +1 -1
- 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 +518 -489
- 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/sortable.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-data-Dvc_bXq6.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-data-Dvc_bXq6.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-9HwatUrm.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-9HwatUrm.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{anchored-popover-BXEMsLrA.js → anchored-popover-CSBqS_MK.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{anchored-popover-BXEMsLrA.js.map → anchored-popover-CSBqS_MK.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-TcE7HSvq.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-TcE7HSvq.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-DAUyPPWa.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-DQitxnHn.js.map → capability-motion-DAUyPPWa.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-BQgJCSHn.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-resizable-Bga8TngJ.js.map → capability-resizable-BQgJCSHn.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-BLyIVEh9.js +3 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-BLyIVEh9.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{alpine-data-CytyCyfk.js → cleanup-manager-D9QiZF_Q.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cleanup-manager-D9QiZF_Q.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-De1R7Xh6.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-De1R7Xh6.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-CzqwFGEd.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-CzqwFGEd.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-CogF8tNb.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-CogF8tNb.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-B2mQNyzN.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-B2mQNyzN.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dom-DiTFTWeR.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dom-DiTFTWeR.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/drag-and-drop-cns3DNcf.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{drag-and-drop-DHq3udf7.js.map → drag-and-drop-cns3DNcf.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B1wGmQth.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B1wGmQth.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B3hMqvMn.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B3hMqvMn.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BBuJrkhp.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BBuJrkhp.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BCTWp6Xu.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BCTWp6Xu.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BMLdOzZs.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BMLdOzZs.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BMeqWpPy.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BMeqWpPy.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BOk2j8j3.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BOk2j8j3.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BhINWOfZ.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BhINWOfZ.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-AFRarPro.js → entry.generated-Bqy0wCWo.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-AFRarPro.js.map → entry.generated-Bqy0wCWo.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C-4OkQdv.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C-4OkQdv.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CfkH92RS.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CfkH92RS.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CmvKWs0J.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BqEMECZx.js.map → entry.generated-CmvKWs0J.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CnFggOc8.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CnFggOc8.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CnY5J5bD.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CnY5J5bD.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CuZffmX3.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CuZffmX3.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DTRN8-Ks.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DTRN8-Ks.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-QspMEPHx.js → entry.generated-Da6pELhK.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-QspMEPHx.js.map → entry.generated-Da6pELhK.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-De9SwKec.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-De9SwKec.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DvvVMsQo.js → entry.generated-QV-az1in.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DvvVMsQo.js.map → entry.generated-QV-az1in.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-sKnD2JaT.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-sKnD2JaT.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-x0moHcUM.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-x0moHcUM.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-Bu7BMlbI.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-Bu7BMlbI.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-Bxu-sgBm.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-Bxu-sgBm.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry2.generated-DXDHgDsN.js → entry2.generated-dkzHCN26.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-dkzHCN26.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-g1AVE90L.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-g1AVE90L.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{form-control-DjbUb602.js → form-control-DL1Hkox3.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{form-control-DjbUb602.js.map → form-control-DL1Hkox3.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{fragment-Bl3Rq38L.js → fragment-BzHC-hAJ.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{fragment-Bl3Rq38L.js.map → fragment-BzHC-hAJ.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-DQfpKM3w.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-DQfpKM3w.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-mw9QhBgu.js +3 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-mw9QhBgu.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/object-SRW-YaCA.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/object-SRW-YaCA.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/scroll-lock-C5dQtr4Y.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/scroll-lock-C5dQtr4Y.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/semantic-observer-CIoriWtV.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{semantic-observer-CdRbZHir.js.map → semantic-observer-CIoriWtV.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{styles-CpTCQjY5.js → styles-BstOueoe.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{styles-CpTCQjY5.js.map → styles-BstOueoe.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-BGfrCghL.js +4 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-BGfrCghL.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/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/import-mapper.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 +397 -339
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +9 -9
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +9 -9
- package/packages/client/types/motion/registry.d.ts +0 -13
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-data-CytyCyfk.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-BTDXpEr6.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-BTDXpEr6.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-B4S_D6hV.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-B4S_D6hV.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-DQitxnHn.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-Bga8TngJ.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-Dzv1zWaL.js +0 -3
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-Dzv1zWaL.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-Dfj6NCjU.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-Dfj6NCjU.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-xDNH-xzt.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-xDNH-xzt.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-DMbnlSdM.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-DMbnlSdM.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-DvHNTjt1.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-DvHNTjt1.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dom-qAeVl7dc.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dom-qAeVl7dc.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/drag-and-drop-DHq3udf7.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-2QEJDMe-.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-2QEJDMe-.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BB7wWQfT.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BB7wWQfT.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BqEMECZx.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C07Tn0r-.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C07Tn0r-.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C2gP0OfV.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C2gP0OfV.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CRj4-Ef1.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CRj4-Ef1.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CirM6w9Q.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CirM6w9Q.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CvcufWkj.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CvcufWkj.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D3w3QaSO.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D3w3QaSO.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DCLIvEtJ.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DCLIvEtJ.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DVQaci6w.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DVQaci6w.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D_FlEfdN.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D_FlEfdN.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DwYIFLsE.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DwYIFLsE.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Rx9NofFi.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Rx9NofFi.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-gxr2-89M.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-gxr2-89M.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oz1RCU1b.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oz1RCU1b.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-payXlXhL.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-payXlXhL.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-wEt8LYAv.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-wEt8LYAv.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-CpoK52gE.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-CpoK52gE.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-D1X0sDop.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-D1X0sDop.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-DXDHgDsN.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-_UPpJlWp.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-_UPpJlWp.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-Dqut4h89.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-Dqut4h89.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-BDQdr83d.js +0 -3
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-BDQdr83d.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/scroll-lock-DOw7dmi1.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/scroll-lock-DOw7dmi1.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/semantic-observer-CdRbZHir.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-SdoiMWig.js +0 -4
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-SdoiMWig.js.map +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{c as e,f as t,l as n,n as r,u as i}from"./codecs-Cb1ns_47.js";import{s as a,t as o}from"./dom-qAeVl7dc.js";import{t as s}from"./alpine-machine-BTDXpEr6.js";import{t as c}from"./number-BCZdoG0B.js";import{t as l}from"./alpine-data-CytyCyfk.js";import{t as u}from"./machine-Dqut4h89.js";import{n as d,t as f}from"./props-change-2xfsIAEN.js";import{i as p,n as m,r as h}from"./form-control-DjbUb602.js";import{P as g,l as _,o as v}from"./common-Dfj6NCjU.js";var y=v,b=_,x=g,S={name:t,value:t,defaultValue:t.default(`0`),min:e.default(0),max:e.default(100),step:e.default(1),bigStep:e.default(10),minStepsBetween:e.default(0),range:r,orientation:n(x,`horizontal`),size:n(y,`md`),variant:n(b,`default`),disabled:r,required:r,invalid:r,label:t,description:t,descriptionTrailing:t,error:t,errors:t,badge:t,valueText:t,lowerLabel:t.default(`Minimum`),upperLabel:t.default(`Maximum`),lowerValueText:t,upperValueText:t,showValue:r,format:n([`number`,`percent`],`number`),fieldClass:t,rootClass:t,trackClass:t,rangeClass:t,thumbClass:t,tickClass:t,class:t};e.default(0);var C=[],w=(e,t,n)=>{if(!Number.isFinite(n)||n<=0)return e;let r=Math.round((e-t)/n)*n+t,i=Math.max(0,`${n}`.split(`.`)[1]?.length??0);return Number(r.toFixed(i))},T=e=>{let t=Math.min(e.min,e.max),n=Math.max(e.min,e.max),r=e.step>0?e.step:1;return{min:t,max:n,step:r,bigStep:e.bigStep>0?e.bigStep:r*10}},E=(e,t)=>{let n=typeof e==`number`?e:Number(e);return Number.isFinite(n)?n:t},D=(e,t,n)=>{let{min:r,max:i,step:a}=T(e),o=w(c(E(t.lower,r),r,i),r,a),s=w(c(E(t.upper,i),r,i),r,a);if(!e.range)return{lower:o,upper:o};o>s&&([o,s]=[s,o]);let l=Math.max(0,e.minStepsBetween)*a;return s-o<l&&(n===`lower`?o=c(w(s-l,r,a),r,i):s=c(w(o+l,r,a),r,i)),{lower:o,upper:s}},O=(e,t)=>{let{min:n,max:r}=T(e),i=t.split(`,`).map(e=>e.trim());return D(e,{lower:E(i[0],n),upper:e.range?E(i[1],r):E(i[0],n)})},k=e=>O(e,e.value||e.defaultValue||String(T(e).min)),A=e=>e.thumb===`single`||e.thumb===`lower`||e.thumb===`upper`?e.thumb:null,j=e=>{if(Array.isArray(e.event.values))return D(e.props,{lower:E(e.event.values[0],e.context.value.lower),upper:E(e.event.values[1],e.context.value.upper)},A(e.event));let t=A(e.event)??e.context.interaction.activeThumb??`single`,n=E(e.event.value,t===`upper`?e.context.value.upper:e.context.value.lower);return D(e.props,{lower:t===`upper`?e.context.value.lower:n,upper:t===`upper`?n:e.context.value.upper},t)},M=e=>{let t=d(e.event)?.props;return t?{...t,range:e.props.range,defaultValue:e.props.defaultValue}:e.props},N=e=>{let t=M(e);return f(e.event,`value`)?O(t,t.value||t.defaultValue||String(T(t).min)):D(t,e.context.value)},P=e=>({event:t})=>t.thumb===e,F=e=>M(e).disabled,I=({props:e,context:t,effects:n})=>u({initial:`idle`,on:{INPUT_CHANGED:{reduce:`setEventValue`,effects:`sync`},INPUT_COMMITTED:{reduce:`setEventValue`,effects:`sync`},KEY_STEPPED:{reduce:`setEventValue`,effects:[`sync`,`emitInput`,`emitChange`]},API_SET:{reduce:`setEventValue`,effects:[`sync`,`emitInput`,`emitChange`]}},states:{idle:{tags:[`idle`],on:{POINTER_STARTED:[{target:`dragging.single`,guard:P(`single`),reduce:`startDrag`,effects:[`beginDrag`,`sync`,`emitInput`]},{target:`dragging.lower`,guard:P(`lower`),reduce:`startDrag`,effects:[`beginDrag`,`sync`,`emitInput`]},{target:`dragging.upper`,guard:P(`upper`),reduce:`startDrag`,effects:[`beginDrag`,`sync`,`emitInput`]}],PROPS_CHANGED:{reduce:`reconcileProps`,effects:`sync`}}},dragging:{initial:`single`,tags:[`dragging`],on:{POINTER_MOVED:{reduce:`setEventValue`,effects:[`sync`,`emitInput`]},POINTER_ENDED:{target:`idle`,reduce:`endDrag`,effects:[`endDrag`,`sync`,`emitChange`]},PROPS_CHANGED:[{target:`idle`,guard:F,reduce:`reconcileProps`,effects:[`endDrag`,`sync`]},{reduce:`reconcileProps`,effects:`sync`}]},states:{single:{tags:[`dragging-single`]},lower:{tags:[`dragging-lower`]},upper:{tags:[`dragging-upper`]}}}}},{context:t,props:e,reducers:{setEventValue:e=>({context:{...e.context,value:j(e)}}),startDrag:e=>({context:{value:j(e),interaction:{activeThumb:A(e.event)}}}),endDrag:e=>({context:{...e.context,interaction:{activeThumb:null}}}),reconcileProps:e=>({props:M(e),context:{...e.context,value:N(e)}})},effects:n}),L=(e,t)=>{let n=Number(e);return Number.isFinite(n)?n:t},R=(e,t,n)=>n<=t?0:c((e-t)/(n-t)*100,0,100),z=(e,t)=>{let n=t=>e.format===`percent`?`${Math.round(t)}%`:String(t);return e.range?`${n(t.lower)} - ${n(t.upper)}`:n(t.lower)},B=(e,t,n)=>{let{min:r,max:i,step:a}=T(n),o=e.getBoundingClientRect(),s=c(r+c(n.orientation===`vertical`?1-(t.clientY-o.top)/Math.max(o.height,1):(t.clientX-o.left)/Math.max(o.width,1),0,1)*(i-r),r,i),l=Math.round((s-r)/a)*a+r,u=Math.max(0,`${a}`.split(`.`)[1]?.length??0);return Number(l.toFixed(u))},V=(e,t)=>Math.abs(e-t.lower)<=Math.abs(e-t.upper)?`lower`:`upper`,H=(e,t,n,r)=>{e&&(a({el:e,attr:`data-focus`,present:t}),a({el:e,attr:`data-disabled`,present:n}),a({el:e,attr:`data-invalid`,present:r}))},U=({input:e,props:t,value:n,min:r,max:i,label:a,valueText:o,nativeRequired:s})=>{e&&(e.min=String(r),e.max=String(i),e.step=String(t.step>0?t.step:1),h({input:e,state:{name:t.range?``:t.name,value:String(n),disabled:t.disabled,required:t.required,nativeRequired:s,invalid:t.invalid}}),e.setAttribute(`aria-valuemin`,String(r)),e.setAttribute(`aria-valuemax`,String(i)),e.setAttribute(`aria-valuenow`,String(n)),o?e.setAttribute(`aria-valuetext`,o):e.removeAttribute(`aria-valuetext`),a&&e.setAttribute(`aria-label`,a),t.orientation===`vertical`?e.setAttribute(`aria-orientation`,`vertical`):e.removeAttribute(`aria-orientation`))},W=(e,t,n)=>{let{min:r,max:i}=T(e),a=R(n.lower,r,i),o=R(n.upper,r,i),s=e.range?a:0,c=e.range?o:a;t.root.style.setProperty(`--ui-slider-lower-percent`,`${a}%`),t.root.style.setProperty(`--ui-slider-upper-percent`,`${o}%`),e.orientation===`vertical`?(t.range&&(t.range.style.bottom=`${s}%`,t.range.style.height=`${Math.max(0,c-s)}%`,t.range.style.left=``,t.range.style.width=``),t.singleThumb&&(t.singleThumb.style.bottom=`${a}%`),t.lowerThumb&&(t.lowerThumb.style.bottom=`${a}%`),t.upperThumb&&(t.upperThumb.style.bottom=`${o}%`)):(t.range&&(t.range.style.left=`${s}%`,t.range.style.width=`${Math.max(0,c-s)}%`,t.range.style.bottom=``,t.range.style.height=``),t.singleThumb&&(t.singleThumb.style.left=`${a}%`),t.lowerThumb&&(t.lowerThumb.style.left=`${a}%`),t.upperThumb&&(t.upperThumb.style.left=`${o}%`)),t.ticks.forEach(t=>{let n=R(L(t.dataset.value??``,r),r,i);e.orientation===`vertical`?(t.style.bottom=`${n}%`,t.style.left=``):(t.style.left=`${n}%`,t.style.bottom=``)})},G=()=>{let e=null,t=[],n=``,r=null,a=!1,c=()=>{if(!e)throw Error(`Slider has not been initialized.`);return e},l=()=>w.getCommittedSnapshot(),u=()=>l().props,d=()=>l().context.value,f=()=>{let e=c(),t=e.querySelector(`[data-ui-slider-root]`);if(!t)throw Error(`Slider requires a root element.`);return{root:t,track:t.querySelector(`[data-ui-slider-track]`),range:t.querySelector(`[data-ui-slider-range]`),lowerInput:t.querySelector(`[data-ui-slider-input][data-thumb="lower"]`),upperInput:t.querySelector(`[data-ui-slider-input][data-thumb="upper"]`),singleInput:t.querySelector(`[data-ui-slider-input][data-thumb="single"]`),lowerThumb:t.querySelector(`[data-ui-slider-thumb][data-thumb="lower"]`),upperThumb:t.querySelector(`[data-ui-slider-thumb][data-thumb="upper"]`),singleThumb:t.querySelector(`[data-ui-slider-thumb][data-thumb="single"]`),value:e.querySelector(`[data-ui-slider-value]`),hiddenInputs:e.querySelector(`[data-ui-slider-hidden-inputs]`),ticks:Array.from(e.querySelectorAll(`[data-ui-slider-tick]`))}},h=(e,t=f())=>e===`upper`?t.upperInput:e===`lower`?t.lowerInput:t.singleInput,g=e=>e.dataset.thumb===`upper`?`upper`:e.dataset.thumb===`lower`?`lower`:`single`,_=()=>{let e=u(),t=d(),r=f(),{min:a,max:o}=T(e);i({el:c(),schema:S,key:`value`,value:e.range?`${t.lower},${t.upper}`:String(t.lower)}),U({input:r.singleInput,props:e,value:t.lower,min:a,max:o,label:e.label,valueText:e.valueText,nativeRequired:e.required}),U({input:r.lowerInput,props:e,value:t.lower,min:a,max:e.range?t.upper:o,label:e.lowerLabel,valueText:e.lowerValueText,nativeRequired:!1}),U({input:r.upperInput,props:e,value:t.upper,min:e.range?t.lower:a,max:o,label:e.upperLabel,valueText:e.upperValueText,nativeRequired:!1}),W(e,r,t),r.value&&(r.value.textContent=z(e,t)),m({el:c(),state:e}),m({el:r.root,state:e}),r.track&&m({el:r.track,state:{disabled:e.disabled,invalid:e.invalid}}),r.range&&m({el:r.range,state:{disabled:e.disabled,invalid:e.invalid}}),H(r.singleThumb,r.singleInput===document.activeElement,e.disabled,e.invalid),H(r.lowerThumb,r.lowerInput===document.activeElement,e.disabled,e.invalid),H(r.upperThumb,r.upperInput===document.activeElement,e.disabled,e.invalid),e.range&&r.hiddenInputs?n=p({container:r.hiddenInputs,currentKey:n,state:{name:e.name,values:[String(t.lower),String(t.upper)],required:e.required,marker:`data-ui-slider-hidden-input`}}):r.hiddenInputs&&(n=p({container:r.hiddenInputs,currentKey:n,state:{name:``,values:[],marker:`data-ui-slider-hidden-input`}}))},v=e=>e.thumb===`single`||e.thumb===`lower`||e.thumb===`upper`?e.thumb:null,y=(e,t,n)=>{let r=f(),i=n.type===`API_SET`&&u().range?[r.lowerInput,r.upperInput]:[h(v(n)??t.context.interaction.activeThumb,r)];a=!0;try{i.forEach(t=>t?.dispatchEvent(new Event(e,{bubbles:!0})))}finally{a=!1}},b=(e,t)=>{let n=f(),i=e.context.interaction.activeThumb;if(h(i,n)?.focus(),r=typeof t.pointerId==`number`?t.pointerId:null,r!==null)try{n.root.setPointerCapture(r)}catch{w.send({type:`POINTER_ENDED`,thumb:i})}},x=()=>{if(r!==null){try{f().root.releasePointerCapture(r)}catch{}r=null}},w=s({schema:S,hooks:C,createMachine:({props:e})=>I({props:e,context:{value:k(e),interaction:{activeThumb:null}},effects:{sync:_,beginDrag:({snapshot:e,event:t})=>b(e,t),endDrag:x,emitInput:({snapshot:e,event:t})=>y(`input`,e,t),emitChange:({snapshot:e,event:t})=>y(`change`,e,t)}})}),E=(e,t)=>{a||!(e.target instanceof HTMLInputElement)||w.send({type:t?`INPUT_COMMITTED`:`INPUT_CHANGED`,thumb:g(e.target),value:e.target.value})},D=e=>{if(!(e.target instanceof HTMLInputElement)||![`PageUp`,`PageDown`].includes(e.key)&&!(e.shiftKey&&e.key.startsWith(`Arrow`)))return;e.preventDefault();let t=[`PageDown`,`ArrowDown`,`ArrowLeft`].includes(e.key)?-1:1,n=g(e.target);w.send({type:`KEY_STEPPED`,thumb:n,value:L(e.target.value,T(u()).min)+t*T(u()).bigStep})},O=e=>{if(u().disabled)return;let t=B(f().root,e,u()),n=u().range?V(t,d()):`single`;w.send({type:`POINTER_STARTED`,value:t,thumb:n,pointerId:e.pointerId}),e.preventDefault()},A=e=>{r!==e.pointerId||!w.hasTag(`dragging`)||w.send({type:`POINTER_MOVED`,value:B(f().root,e,u()),thumb:l().context.interaction.activeThumb})},j=e=>{r!==e.pointerId||!w.hasTag(`dragging`)||w.send({type:`POINTER_ENDED`,thumb:l().context.interaction.activeThumb})},M;return M={...w,get values(){let e=this.snapshot.current;return e?e.props.range?[e.context.value.lower,e.context.value.upper]:[e.context.value.lower]:[]},setValue(e){w.send({type:`API_SET`,values:Array.isArray(e)?e:[e]})},init(){e=this.$el,w.connect(this.$el,this.snapshot);let n=f();[n.singleInput,n.lowerInput,n.upperInput].forEach(e=>{e&&(o({target:e,event:`input`,handler:e=>E(e,!1),cleanup:t}),o({target:e,event:`change`,handler:e=>E(e,!0),cleanup:t}),o({target:e,event:`keydown`,handler:e=>{e instanceof KeyboardEvent&&D(e)},cleanup:t}),o({target:e,event:`focus`,handler:_,cleanup:t}),o({target:e,event:`blur`,handler:_,cleanup:t}))}),o({target:n.root,event:`pointerdown`,handler:e=>{e instanceof PointerEvent&&O(e)},cleanup:t}),o({target:n.root,event:`pointermove`,handler:e=>{e instanceof PointerEvent&&A(e)},cleanup:t}),o({target:n.root,event:`pointerup`,handler:e=>{e instanceof PointerEvent&&j(e)},cleanup:t}),o({target:n.root,event:`pointercancel`,handler:e=>{e instanceof PointerEvent&&j(e)},cleanup:t}),_()},destroy(){x(),t.splice(0).forEach(e=>e()),w.disconnect(),e=null}},M},K=l(`UiSlider`,G),q=new WeakSet,J=e=>{q.has(e)||(q.add(e),K(e))};export{G as n,J as t};
|
|
2
|
-
//# sourceMappingURL=entry.generated-CirM6w9Q.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"entry.generated-CirM6w9Q.js","names":[],"sources":["../../../../../../../../client/src/components/slider/contract.ts","../../../../../../../../client/src/components/slider/machine.ts","../../../../../../../../client/src/components/slider/index.ts","../../../../../../../../client/src/components/slider/entry.generated.ts"],"sourcesContent":["import {bool, number, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {CONTROL_SIZES, DEFAULT_VARIANTS, ORIENTATIONS, type ControlSize, type DefaultVariant, type Orientation} from '../common';\n\nconst SLIDER_SIZES = CONTROL_SIZES;\nconst SLIDER_VARIANTS = DEFAULT_VARIANTS;\nconst SLIDER_ORIENTATIONS = ORIENTATIONS;\nconst SLIDER_FORMATS = ['number', 'percent'] as const;\n\ntype SliderSize = ControlSize;\ntype SliderVariant = DefaultVariant;\ntype SliderOrientation = Orientation;\ntype SliderFormat = typeof SLIDER_FORMATS[number];\n\nconst sliderSchema = {\n name: string,\n value: string,\n defaultValue: string.default('0'),\n min: number.default(0),\n max: number.default(100),\n step: number.default(1),\n bigStep: number.default(10),\n minStepsBetween: number.default(0),\n range: bool,\n orientation: oneOf(SLIDER_ORIENTATIONS, 'horizontal' as SliderOrientation),\n size: oneOf(SLIDER_SIZES, 'md' as SliderSize),\n variant: oneOf(SLIDER_VARIANTS, 'default' as SliderVariant),\n disabled: bool,\n required: bool,\n invalid: bool,\n label: string,\n description: string,\n descriptionTrailing: string,\n error: string,\n errors: string,\n badge: string,\n valueText: string,\n lowerLabel: string.default('Minimum'),\n upperLabel: string.default('Maximum'),\n lowerValueText: string,\n upperValueText: string,\n showValue: bool,\n format: oneOf(SLIDER_FORMATS, 'number' as SliderFormat),\n fieldClass: string,\n rootClass: string,\n trackClass: string,\n rangeClass: string,\n thumbClass: string,\n tickClass: string,\n class: string,\n};\n\nconst sliderTickSchema = {\n value: number.default(0),\n label: string,\n class: string,\n};\n\ntype SliderProps = SchemaToProps<typeof sliderSchema>;\ntype SliderTickProps = SchemaToProps<typeof sliderTickSchema>;\n\nexport {\n SLIDER_FORMATS,\n SLIDER_ORIENTATIONS,\n SLIDER_SIZES,\n SLIDER_VARIANTS,\n sliderSchema,\n sliderTickSchema,\n};\nexport type {\n SliderFormat,\n SliderOrientation,\n SliderProps,\n SliderSize,\n SliderTickProps,\n SliderVariant,\n};\n","import {\n createMachine,\n propsChanged,\n propsChangedEvent,\n type Machine,\n type MachineEventObject,\n type MachineScope,\n} from '../../runtime/state-machine';\nimport {clamp} from '../../utils';\nimport type {SliderProps} from './contract';\n\ntype SliderThumbName = 'single' | 'lower' | 'upper';\ntype SliderValues = {lower: number; upper: number};\ntype SliderContext = {\n value: SliderValues;\n interaction: {activeThumb: SliderThumbName | null};\n};\n\ntype SliderMachineEffects = {\n sync(scope: MachineScope<SliderContext, SliderProps>): void;\n beginDrag(scope: MachineScope<SliderContext, SliderProps>): void;\n endDrag(scope: MachineScope<SliderContext, SliderProps>): void;\n emitInput(scope: MachineScope<SliderContext, SliderProps>): void;\n emitChange(scope: MachineScope<SliderContext, SliderProps>): void;\n};\n\ntype CreateSliderMachineOptions = {\n props: SliderProps;\n context: SliderContext;\n effects: SliderMachineEffects;\n};\n\nconst sliderHooks = [] as const;\n\nconst roundToStep = (value: number, min: number, step: number): number => {\n if (!Number.isFinite(step) || step <= 0) return value;\n const stepped = Math.round((value - min) / step) * step + min;\n const decimals = Math.max(0, `${step}`.split('.')[1]?.length ?? 0);\n return Number(stepped.toFixed(decimals));\n};\n\nconst sliderBounds = (props: SliderProps): {min: number; max: number; step: number; bigStep: number} => {\n const min = Math.min(props.min, props.max);\n const max = Math.max(props.min, props.max);\n const step = props.step > 0 ? props.step : 1;\n const bigStep = props.bigStep > 0 ? props.bigStep : step * 10;\n return {min, max, step, bigStep};\n};\n\nconst parseNumber = (value: unknown, fallback: number): number => {\n const parsed = typeof value === 'number' ? value : Number(value);\n return Number.isFinite(parsed) ? parsed : fallback;\n};\n\nconst normalizeSliderValues = (\n props: SliderProps,\n values: SliderValues,\n changedThumb?: SliderThumbName | null,\n): SliderValues => {\n const {min, max, step} = sliderBounds(props);\n let lower = roundToStep(clamp(parseNumber(values.lower, min), min, max), min, step);\n let upper = roundToStep(clamp(parseNumber(values.upper, max), min, max), min, step);\n if (!props.range) return {lower, upper: lower};\n if (lower > upper) [lower, upper] = [upper, lower];\n\n const minDistance = Math.max(0, props.minStepsBetween) * step;\n if (upper - lower < minDistance) {\n if (changedThumb === 'lower') lower = clamp(roundToStep(upper - minDistance, min, step), min, max);\n else upper = clamp(roundToStep(lower + minDistance, min, step), min, max);\n }\n return {lower, upper};\n};\n\nconst sliderValuesFromString = (props: SliderProps, value: string): SliderValues => {\n const {min, max} = sliderBounds(props);\n const parts = value.split(',').map((part) => part.trim());\n return normalizeSliderValues(props, {\n lower: parseNumber(parts[0], min),\n upper: props.range ? parseNumber(parts[1], max) : parseNumber(parts[0], min),\n });\n};\n\nconst initialSliderValues = (props: SliderProps): SliderValues => (\n sliderValuesFromString(props, props.value || props.defaultValue || String(sliderBounds(props).min))\n);\n\nconst eventThumb = (event: MachineEventObject): SliderThumbName | null => (\n event.thumb === 'single' || event.thumb === 'lower' || event.thumb === 'upper' ? event.thumb : null\n);\nconst eventValues = (scope: MachineScope<SliderContext, SliderProps>): SliderValues => {\n if (Array.isArray(scope.event.values)) {\n return normalizeSliderValues(scope.props, {\n lower: parseNumber(scope.event.values[0], scope.context.value.lower),\n upper: parseNumber(scope.event.values[1], scope.context.value.upper),\n }, eventThumb(scope.event));\n }\n const thumb = eventThumb(scope.event) ?? scope.context.interaction.activeThumb ?? 'single';\n const value = parseNumber(scope.event.value, thumb === 'upper' ? scope.context.value.upper : scope.context.value.lower);\n return normalizeSliderValues(scope.props, {\n lower: thumb === 'upper' ? scope.context.value.lower : value,\n upper: thumb === 'upper' ? value : scope.context.value.upper,\n }, thumb);\n};\nconst nextProps = (scope: MachineScope<SliderContext, SliderProps>): SliderProps => {\n const next = propsChangedEvent<SliderProps>(scope.event)?.props;\n return next ? {...next, range: scope.props.range, defaultValue: scope.props.defaultValue} : scope.props;\n};\nconst propsValues = (scope: MachineScope<SliderContext, SliderProps>): SliderValues => {\n const props = nextProps(scope);\n return propsChanged<SliderProps>(scope.event, 'value')\n ? sliderValuesFromString(props, props.value || props.defaultValue || String(sliderBounds(props).min))\n : normalizeSliderValues(props, scope.context.value);\n};\nconst thumbIs = (thumb: SliderThumbName) => ({event}: MachineScope<SliderContext, SliderProps>): boolean => event.thumb === thumb;\nconst becomesDisabled = (scope: MachineScope<SliderContext, SliderProps>): boolean => nextProps(scope).disabled;\n\nconst createSliderMachine = ({props, context, effects}: CreateSliderMachineOptions): Machine<SliderContext, SliderProps> => createMachine<SliderContext, SliderProps>({\n initial: 'idle',\n on: {\n INPUT_CHANGED: {reduce: 'setEventValue', effects: 'sync'},\n INPUT_COMMITTED: {reduce: 'setEventValue', effects: 'sync'},\n KEY_STEPPED: {reduce: 'setEventValue', effects: ['sync', 'emitInput', 'emitChange']},\n API_SET: {reduce: 'setEventValue', effects: ['sync', 'emitInput', 'emitChange']},\n },\n states: {\n idle: {\n tags: ['idle'],\n on: {\n POINTER_STARTED: [\n {target: 'dragging.single', guard: thumbIs('single'), reduce: 'startDrag', effects: ['beginDrag', 'sync', 'emitInput']},\n {target: 'dragging.lower', guard: thumbIs('lower'), reduce: 'startDrag', effects: ['beginDrag', 'sync', 'emitInput']},\n {target: 'dragging.upper', guard: thumbIs('upper'), reduce: 'startDrag', effects: ['beginDrag', 'sync', 'emitInput']},\n ],\n PROPS_CHANGED: {reduce: 'reconcileProps', effects: 'sync'},\n },\n },\n dragging: {\n initial: 'single',\n tags: ['dragging'],\n on: {\n POINTER_MOVED: {reduce: 'setEventValue', effects: ['sync', 'emitInput']},\n POINTER_ENDED: {target: 'idle', reduce: 'endDrag', effects: ['endDrag', 'sync', 'emitChange']},\n PROPS_CHANGED: [\n {target: 'idle', guard: becomesDisabled, reduce: 'reconcileProps', effects: ['endDrag', 'sync']},\n {reduce: 'reconcileProps', effects: 'sync'},\n ],\n },\n states: {\n single: {tags: ['dragging-single']},\n lower: {tags: ['dragging-lower']},\n upper: {tags: ['dragging-upper']},\n },\n },\n },\n}, {\n context,\n props,\n reducers: {\n setEventValue: (scope) => ({context: {...scope.context, value: eventValues(scope)}}),\n startDrag: (scope) => ({\n context: {\n value: eventValues(scope),\n interaction: {activeThumb: eventThumb(scope.event)},\n },\n }),\n endDrag: (scope) => ({context: {...scope.context, interaction: {activeThumb: null}}}),\n reconcileProps: (scope) => ({\n props: nextProps(scope),\n context: {...scope.context, value: propsValues(scope)},\n }),\n },\n effects,\n});\n\nexport {\n createSliderMachine,\n initialSliderValues,\n normalizeSliderValues,\n sliderBounds,\n sliderHooks,\n};\nexport type {\n CreateSliderMachineOptions,\n SliderContext,\n SliderMachineEffects,\n SliderThumbName,\n SliderValues,\n};\n","import type Alpine from 'alpinejs';\n\nimport {\n type AlpineMachine,\n createAlpineMachine,\n defineAlpineData,\n type MachineSnapshot,\n reflectSchemaProp,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {syncControlPresence, syncNativeControl, syncRepeatedHiddenInputs} from '@client/runtime/form-control';\nimport {addListener, clamp, setPresence, type CleanupStack} from '@client/utils';\nimport {sliderSchema, type SliderProps} from './contract';\nimport {\n createSliderMachine,\n initialSliderValues,\n sliderBounds,\n type SliderContext,\n sliderHooks,\n type SliderThumbName,\n type SliderValues,\n} from './machine';\n\ntype SliderElements = {\n root: HTMLElement;\n track: HTMLElement | null;\n range: HTMLElement | null;\n lowerInput: HTMLInputElement | null;\n upperInput: HTMLInputElement | null;\n singleInput: HTMLInputElement | null;\n lowerThumb: HTMLElement | null;\n upperThumb: HTMLElement | null;\n singleThumb: HTMLElement | null;\n value: HTMLElement | null;\n hiddenInputs: HTMLElement | null;\n ticks: HTMLElement[];\n};\n\n/**\n * Public Alpine API for `ui.slider`.\n *\n * @public\n */\ninterface UiSliderApi {\n /** Current normalized values: one item for single mode, lower and upper for range mode. */\n readonly values: readonly number[];\n /** Set and commit a normalized single value or lower/upper range. */\n setValue(value: number | readonly [number, number]): void;\n}\n\ntype SliderData = AlpineMachine<SliderContext, SliderProps, typeof sliderHooks> & UiSliderApi & {\n init(): void;\n destroy(): void;\n};\n\nconst parseValue = (value: string, fallback: number): number => {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : fallback;\n};\n\nconst percentFor = (value: number, min: number, max: number): number => {\n if (max <= min) return 0;\n return clamp(((value - min) / (max - min)) * 100, 0, 100);\n};\n\nconst formatValue = (props: SliderProps, values: SliderValues): string => {\n const formatOne = (value: number): string => props.format === 'percent' ? `${Math.round(value)}%` : String(value);\n return props.range ? `${formatOne(values.lower)} - ${formatOne(values.upper)}` : formatOne(values.lower);\n};\n\nconst valueFromPointer = (root: HTMLElement, event: PointerEvent, props: SliderProps): number => {\n const {min, max, step} = sliderBounds(props);\n const rect = root.getBoundingClientRect();\n const ratio = props.orientation === 'vertical'\n ? 1 - ((event.clientY - rect.top) / Math.max(rect.height, 1))\n : (event.clientX - rect.left) / Math.max(rect.width, 1);\n const value = clamp(min + clamp(ratio, 0, 1) * (max - min), min, max);\n const stepped = Math.round((value - min) / step) * step + min;\n const decimals = Math.max(0, `${step}`.split('.')[1]?.length ?? 0);\n return Number(stepped.toFixed(decimals));\n};\n\nconst nearestThumb = (value: number, values: SliderValues): SliderThumbName => (\n Math.abs(value - values.lower) <= Math.abs(value - values.upper) ? 'lower' : 'upper'\n);\n\nconst setThumbPresence = (thumb: HTMLElement | null, present: boolean, disabled: boolean, invalid: boolean): void => {\n if (!thumb) return;\n setPresence({el: thumb, attr: 'data-focus', present});\n setPresence({el: thumb, attr: 'data-disabled', present: disabled});\n setPresence({el: thumb, attr: 'data-invalid', present: invalid});\n};\n\nconst syncInput = ({\n input,\n props,\n value,\n min,\n max,\n label,\n valueText,\n nativeRequired,\n}: {\n input: HTMLInputElement | null;\n props: SliderProps;\n value: number;\n min: number;\n max: number;\n label: string;\n valueText: string;\n nativeRequired: boolean;\n}): void => {\n if (!input) return;\n input.min = String(min);\n input.max = String(max);\n input.step = String(props.step > 0 ? props.step : 1);\n syncNativeControl({input, state: {\n name: props.range ? '' : props.name,\n value: String(value),\n disabled: props.disabled,\n required: props.required,\n nativeRequired,\n invalid: props.invalid,\n }});\n input.setAttribute('aria-valuemin', String(min));\n input.setAttribute('aria-valuemax', String(max));\n input.setAttribute('aria-valuenow', String(value));\n if (valueText) input.setAttribute('aria-valuetext', valueText);\n else input.removeAttribute('aria-valuetext');\n if (label) input.setAttribute('aria-label', label);\n if (props.orientation === 'vertical') input.setAttribute('aria-orientation', 'vertical');\n else input.removeAttribute('aria-orientation');\n};\n\nconst writeGeometry = (props: SliderProps, elements: SliderElements, values: SliderValues): void => {\n const {min, max} = sliderBounds(props);\n const lowerPercent = percentFor(values.lower, min, max);\n const upperPercent = percentFor(values.upper, min, max);\n const start = props.range ? lowerPercent : 0;\n const end = props.range ? upperPercent : lowerPercent;\n\n elements.root.style.setProperty('--ui-slider-lower-percent', `${lowerPercent}%`);\n elements.root.style.setProperty('--ui-slider-upper-percent', `${upperPercent}%`);\n if (props.orientation === 'vertical') {\n if (elements.range) {\n elements.range.style.bottom = `${start}%`;\n elements.range.style.height = `${Math.max(0, end - start)}%`;\n elements.range.style.left = '';\n elements.range.style.width = '';\n }\n if (elements.singleThumb) elements.singleThumb.style.bottom = `${lowerPercent}%`;\n if (elements.lowerThumb) elements.lowerThumb.style.bottom = `${lowerPercent}%`;\n if (elements.upperThumb) elements.upperThumb.style.bottom = `${upperPercent}%`;\n } else {\n if (elements.range) {\n elements.range.style.left = `${start}%`;\n elements.range.style.width = `${Math.max(0, end - start)}%`;\n elements.range.style.bottom = '';\n elements.range.style.height = '';\n }\n if (elements.singleThumb) elements.singleThumb.style.left = `${lowerPercent}%`;\n if (elements.lowerThumb) elements.lowerThumb.style.left = `${lowerPercent}%`;\n if (elements.upperThumb) elements.upperThumb.style.left = `${upperPercent}%`;\n }\n\n elements.ticks.forEach((tick) => {\n const tickPercent = percentFor(parseValue(tick.dataset.value ?? '', min), min, max);\n if (props.orientation === 'vertical') {\n tick.style.bottom = `${tickPercent}%`;\n tick.style.left = '';\n } else {\n tick.style.left = `${tickPercent}%`;\n tick.style.bottom = '';\n }\n });\n};\n\nconst UiSlider = (): TrellisAlpineComponent<SliderData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let listeners: CleanupStack = [];\n let hiddenInputsKey = '';\n let pointerId: number | null = null;\n let dispatchingNative = false;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Slider has not been initialized.');\n return rootEl;\n };\n const currentSnapshot = (): MachineSnapshot<SliderContext, SliderProps> => bridge.getCommittedSnapshot();\n const currentProps = (): Readonly<SliderProps> => currentSnapshot().props;\n const currentValues = (): Readonly<SliderValues> => currentSnapshot().context.value;\n const elements = (): SliderElements => {\n const slider = root();\n const interactiveRoot = slider.querySelector<HTMLElement>('[data-ui-slider-root]');\n if (!interactiveRoot) throw new Error('Slider requires a root element.');\n return {\n root: interactiveRoot,\n track: interactiveRoot.querySelector<HTMLElement>('[data-ui-slider-track]'),\n range: interactiveRoot.querySelector<HTMLElement>('[data-ui-slider-range]'),\n lowerInput: interactiveRoot.querySelector<HTMLInputElement>('[data-ui-slider-input][data-thumb=\"lower\"]'),\n upperInput: interactiveRoot.querySelector<HTMLInputElement>('[data-ui-slider-input][data-thumb=\"upper\"]'),\n singleInput: interactiveRoot.querySelector<HTMLInputElement>('[data-ui-slider-input][data-thumb=\"single\"]'),\n lowerThumb: interactiveRoot.querySelector<HTMLElement>('[data-ui-slider-thumb][data-thumb=\"lower\"]'),\n upperThumb: interactiveRoot.querySelector<HTMLElement>('[data-ui-slider-thumb][data-thumb=\"upper\"]'),\n singleThumb: interactiveRoot.querySelector<HTMLElement>('[data-ui-slider-thumb][data-thumb=\"single\"]'),\n value: slider.querySelector<HTMLElement>('[data-ui-slider-value]'),\n hiddenInputs: slider.querySelector<HTMLElement>('[data-ui-slider-hidden-inputs]'),\n ticks: Array.from(slider.querySelectorAll<HTMLElement>('[data-ui-slider-tick]')),\n };\n };\n const inputFor = (thumb: SliderThumbName | null, parts = elements()): HTMLInputElement | null => {\n if (thumb === 'upper') return parts.upperInput;\n if (thumb === 'lower') return parts.lowerInput;\n return parts.singleInput;\n };\n const thumbFromInput = (input: HTMLInputElement): SliderThumbName => {\n if (input.dataset.thumb === 'upper') return 'upper';\n if (input.dataset.thumb === 'lower') return 'lower';\n return 'single';\n };\n\n const syncDom = (): void => {\n const props = currentProps();\n const values = currentValues();\n const parts = elements();\n const {min, max} = sliderBounds(props);\n reflectSchemaProp({\n el: root(),\n schema: sliderSchema,\n key: 'value',\n value: props.range ? `${values.lower},${values.upper}` : String(values.lower),\n });\n syncInput({\n input: parts.singleInput,\n props,\n value: values.lower,\n min,\n max,\n label: props.label,\n valueText: props.valueText,\n nativeRequired: props.required,\n });\n syncInput({\n input: parts.lowerInput,\n props,\n value: values.lower,\n min,\n max: props.range ? values.upper : max,\n label: props.lowerLabel,\n valueText: props.lowerValueText,\n nativeRequired: false,\n });\n syncInput({\n input: parts.upperInput,\n props,\n value: values.upper,\n min: props.range ? values.lower : min,\n max,\n label: props.upperLabel,\n valueText: props.upperValueText,\n nativeRequired: false,\n });\n writeGeometry(props, parts, values as SliderValues);\n if (parts.value) parts.value.textContent = formatValue(props, values as SliderValues);\n syncControlPresence({el: root(), state: props});\n syncControlPresence({el: parts.root, state: props});\n if (parts.track) syncControlPresence({el: parts.track, state: {disabled: props.disabled, invalid: props.invalid}});\n if (parts.range) syncControlPresence({el: parts.range, state: {disabled: props.disabled, invalid: props.invalid}});\n setThumbPresence(parts.singleThumb, parts.singleInput === document.activeElement, props.disabled, props.invalid);\n setThumbPresence(parts.lowerThumb, parts.lowerInput === document.activeElement, props.disabled, props.invalid);\n setThumbPresence(parts.upperThumb, parts.upperInput === document.activeElement, props.disabled, props.invalid);\n if (props.range && parts.hiddenInputs) {\n hiddenInputsKey = syncRepeatedHiddenInputs({container: parts.hiddenInputs, currentKey: hiddenInputsKey, state: {\n name: props.name,\n values: [String(values.lower), String(values.upper)],\n required: props.required,\n marker: 'data-ui-slider-hidden-input',\n }});\n } else if (parts.hiddenInputs) {\n hiddenInputsKey = syncRepeatedHiddenInputs({container: parts.hiddenInputs, currentKey: hiddenInputsKey, state: {\n name: '',\n values: [],\n marker: 'data-ui-slider-hidden-input',\n }});\n }\n };\n\n const eventThumb = (event: {thumb?: unknown}): SliderThumbName | null => (\n event.thumb === 'single' || event.thumb === 'lower' || event.thumb === 'upper' ? event.thumb : null\n );\n const emitNative = (name: 'input' | 'change', snapshot: MachineSnapshot<SliderContext, SliderProps>, event: {thumb?: unknown; type: string}): void => {\n const parts = elements();\n const inputs = event.type === 'API_SET' && currentProps().range\n ? [parts.lowerInput, parts.upperInput]\n : [inputFor(eventThumb(event) ?? snapshot.context.interaction.activeThumb, parts)];\n dispatchingNative = true;\n try {\n inputs.forEach((input) => input?.dispatchEvent(new Event(name, {bubbles: true})));\n } finally {\n dispatchingNative = false;\n }\n };\n const beginDrag = (snapshot: MachineSnapshot<SliderContext, SliderProps>, event: {type: string; [key: string]: unknown}): void => {\n const parts = elements();\n const thumb = snapshot.context.interaction.activeThumb;\n inputFor(thumb, parts)?.focus();\n pointerId = typeof event.pointerId === 'number' ? event.pointerId : null;\n if (pointerId === null) return;\n try {\n parts.root.setPointerCapture(pointerId);\n } catch {\n bridge.send({type: 'POINTER_ENDED', thumb});\n }\n };\n const endDrag = (): void => {\n if (pointerId === null) return;\n try {\n elements().root.releasePointerCapture(pointerId);\n } catch {\n // Capture cleanup is best-effort after interruption.\n }\n pointerId = null;\n };\n\n const bridge = createAlpineMachine({\n schema: sliderSchema,\n hooks: sliderHooks,\n createMachine: ({props}) => createSliderMachine({\n props,\n context: {value: initialSliderValues(props), interaction: {activeThumb: null}},\n effects: {\n sync: syncDom,\n beginDrag: ({snapshot, event}) => beginDrag(snapshot, event),\n endDrag,\n emitInput: ({snapshot, event}) => emitNative('input', snapshot, event),\n emitChange: ({snapshot, event}) => emitNative('change', snapshot, event),\n },\n }),\n });\n\n const handleInput = (event: Event, committed: boolean): void => {\n if (dispatchingNative || !(event.target instanceof HTMLInputElement)) return;\n bridge.send({\n type: committed ? 'INPUT_COMMITTED' : 'INPUT_CHANGED',\n thumb: thumbFromInput(event.target),\n value: event.target.value,\n });\n };\n const handleKeydown = (event: KeyboardEvent): void => {\n if (!(event.target instanceof HTMLInputElement)) return;\n if (!['PageUp', 'PageDown'].includes(event.key) && !(event.shiftKey && event.key.startsWith('Arrow'))) return;\n event.preventDefault();\n const direction = ['PageDown', 'ArrowDown', 'ArrowLeft'].includes(event.key) ? -1 : 1;\n const thumb = thumbFromInput(event.target);\n bridge.send({\n type: 'KEY_STEPPED',\n thumb,\n value: parseValue(event.target.value, sliderBounds(currentProps()).min) + direction * sliderBounds(currentProps()).bigStep,\n });\n };\n const handlePointerDown = (event: PointerEvent): void => {\n if (currentProps().disabled) return;\n const value = valueFromPointer(elements().root, event, currentProps());\n const thumb = currentProps().range ? nearestThumb(value, currentValues() as SliderValues) : 'single';\n bridge.send({type: 'POINTER_STARTED', value, thumb, pointerId: event.pointerId});\n event.preventDefault();\n };\n const handlePointerMove = (event: PointerEvent): void => {\n if (pointerId !== event.pointerId || !bridge.hasTag('dragging')) return;\n bridge.send({\n type: 'POINTER_MOVED',\n value: valueFromPointer(elements().root, event, currentProps()),\n thumb: currentSnapshot().context.interaction.activeThumb,\n });\n };\n const handlePointerUp = (event: PointerEvent): void => {\n if (pointerId !== event.pointerId || !bridge.hasTag('dragging')) return;\n bridge.send({type: 'POINTER_ENDED', thumb: currentSnapshot().context.interaction.activeThumb});\n };\n\n let component!: TrellisAlpineComponent<SliderData>;\n component = {\n ...bridge,\n get values(): readonly number[] {\n const snapshot = this.snapshot.current;\n if (!snapshot) return [];\n return snapshot.props.range\n ? [snapshot.context.value.lower, snapshot.context.value.upper]\n : [snapshot.context.value.lower];\n },\n setValue(value: number | readonly [number, number]): void {\n bridge.send({type: 'API_SET', values: Array.isArray(value) ? value : [value]});\n },\n init(): void {\n rootEl = this.$el;\n bridge.connect(this.$el, this.snapshot);\n const parts = elements();\n [parts.singleInput, parts.lowerInput, parts.upperInput].forEach((input) => {\n if (!input) return;\n addListener({target: input, event: 'input', handler: (event) => handleInput(event, false), cleanup: listeners});\n addListener({target: input, event: 'change', handler: (event) => handleInput(event, true), cleanup: listeners});\n addListener({target: input, event: 'keydown', handler: (event) => {\n if (event instanceof KeyboardEvent) handleKeydown(event);\n }, cleanup: listeners});\n addListener({target: input, event: 'focus', handler: syncDom, cleanup: listeners});\n addListener({target: input, event: 'blur', handler: syncDom, cleanup: listeners});\n });\n addListener({target: parts.root, event: 'pointerdown', handler: (event) => {\n if (event instanceof PointerEvent) handlePointerDown(event);\n }, cleanup: listeners});\n addListener({target: parts.root, event: 'pointermove', handler: (event) => {\n if (event instanceof PointerEvent) handlePointerMove(event);\n }, cleanup: listeners});\n addListener({target: parts.root, event: 'pointerup', handler: (event) => {\n if (event instanceof PointerEvent) handlePointerUp(event);\n }, cleanup: listeners});\n addListener({target: parts.root, event: 'pointercancel', handler: (event) => {\n if (event instanceof PointerEvent) handlePointerUp(event);\n }, cleanup: listeners});\n syncDom();\n },\n destroy(): void {\n endDrag();\n listeners.splice(0).forEach((cleanup) => cleanup());\n bridge.disconnect();\n rootEl = null;\n },\n };\n return component;\n};\n\nconst registerSlider = defineAlpineData('UiSlider', UiSlider);\n\nexport {registerSlider, UiSlider};\nexport type {SliderData, SliderElements, SliderThumbName, SliderValues, UiSliderApi};\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 {registerSlider as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerSlider = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerSlider};\nexport default registerSlider;\nexport * from './index';\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./capability-motion-DQitxnHn.js";import{c as t,f as n,l as r,n as i,u as a}from"./codecs-Cb1ns_47.js";import{n as o,r as s,t as c}from"./dom-qAeVl7dc.js";import{i as l,t as u}from"./alpine-machine-BTDXpEr6.js";import{t as d}from"./alpine-data-CytyCyfk.js";import{n as f}from"./anchored-popover-BXEMsLrA.js";import{t as p}from"./collection-navigation-CfTZUJrL.js";import{n as m,t as h}from"./styles-TfvwVPGw.js";import{t as g}from"./merge-bindings-C8ewA_FD.js";import{t as _}from"./machine-Dqut4h89.js";import{t as v}from"./dismissable-layer-BROE-Ln2.js";import{F as y,I as b,N as x,j as S,t as C}from"./common-Dfj6NCjU.js";import{t as w}from"./controlled-open-Hy4-OT-6.js";var ee=h({definition:{component:`ui.menu`,parts:{menu:{base:[y,`auto-rows-min content-start min-w-48 gap-1 overflow-hidden rounded-overlay-sm p-popover-padding`]},item:{base:[x],variants:{variant:{default:``,subtle:``,filled:``,ghost:``},color:{neutral:``,accent:``,success:``,warning:``,danger:``}},defaults:{variant:`default`,color:`neutral`}},itemLabel:{base:`min-w-0 flex-1`},itemMeta:{base:`ml-auto font-metadata text-metadata [font-weight:var(--font-weight-metadata)] text-current opacity-70`},itemIcon:{base:S,variants:{position:{leading:``,trailing:`ml-auto`}},defaults:{position:`leading`}},submenu:{base:`contents`},submenuPanel:{base:``},group:{base:`grid auto-rows-min content-start gap-1`},label:{base:`px-menu-item-padding-inline py-1 font-label text-label [font-weight:var(--font-weight-label)]`},separatorRoot:{variants:{orientation:{vertical:`self-stretch self-center`,horizontal:`-mx-popover my-popover h-[var(--border-width-edge-separator)]`}},defaults:{orientation:`horizontal`}},separatorRule:{variants:{orientation:{vertical:`h-full w-[var(--border-width-edge-separator)] border-0`,horizontal:`h-[var(--border-width-edge-separator)] w-full border-0`}},defaults:{orientation:`horizontal`}}}}}),T=(e,t,n)=>(e.x-n.x)*(t.y-n.y)-(t.x-n.x)*(e.y-n.y),E=({origin:e,panel:t})=>{let n=t.left>=e.x?t.left:t.right,r={x:n,y:t.top},i={x:n,y:t.bottom},a=Math.min(e.x,n),o=Math.max(e.x,n);return{contains(t){if(t.x<=a||t.x>=o)return!1;let n=T(t,e,r),s=T(t,r,i),c=T(t,i,e);return!((n<0||s<0||c<0)&&(n>0||s>0||c>0))}}},D=b,O=C,k={side:r(D,`bottom`),align:r(O,`start`),offset:t.clamp(-100,100).default(0),gap:t.clamp(0,50).default(4),open:i,disabled:i,class:n},A=[l({name:`opening`,state:`opening`,project:()=>({}),onDone:`OPENING_DONE`,onError:`OPENING_ERROR`}),l({name:`closing`,state:`closing`,project:()=>({}),onDone:`CLOSING_DONE`,onError:`CLOSING_ERROR`})],j=w(),M=e=>e.focus===`first`?`first`:`menu`,N=e=>e.restoreFocus===!0,P=e=>Array.isArray(e.path)?e.path.filter(e=>typeof e==`string`):[],F=({props:e,effects:t})=>_({initial:`closed`,states:{closed:{tags:[`closed`],on:{OPEN:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},TOGGLE:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},PROPS_CHANGED:[{target:`opening`,guard:j.shouldOpen,reduce:`replaceProps`,effects:[`syncProps`,`prepareOpen`]},{reduce:`replaceProps`,effects:`syncProps`}]}},opening:{tags:[`visible`,`expanded`,`interactive`,`transitioning`],on:{OPENING_DONE:{target:`open`,effects:`finishOpen`},OPENING_ERROR:{target:`open`,effects:`finishOpen`},CLOSE:{target:`closing`,reduce:`clearSubmenus`,effects:[`syncSubmenus`,`prepareClose`]},TOGGLE:{target:`closing`,reduce:`clearSubmenus`,effects:[`syncSubmenus`,`prepareClose`]},SUBMENU_PATH_CHANGED:{reduce:`replaceSubmenuPath`,effects:`syncSubmenus`},PROPS_CHANGED:[{target:`closing`,guard:j.shouldClose,reduce:`replacePropsAndClearSubmenus`,effects:[`syncSubmenus`,`prepareClose`,`syncProps`]},{reduce:`replaceProps`,effects:`syncProps`}]}},open:{tags:[`visible`,`expanded`,`interactive`,`open`],on:{CLOSE:{target:`closing`,reduce:`clearSubmenus`,effects:[`syncSubmenus`,`prepareClose`]},TOGGLE:{target:`closing`,reduce:`clearSubmenus`,effects:[`syncSubmenus`,`prepareClose`]},SUBMENU_PATH_CHANGED:{reduce:`replaceSubmenuPath`,effects:`syncSubmenus`},PROPS_CHANGED:[{target:`closing`,guard:j.shouldClose,reduce:`replacePropsAndClearSubmenus`,effects:[`syncSubmenus`,`prepareClose`,`syncProps`]},{reduce:`replaceProps`,effects:`syncProps`}]}},closing:{tags:[`visible`,`transitioning`],on:{CLOSING_DONE:{target:`closed`,effects:`finishClose`},CLOSING_ERROR:{target:`closed`,effects:`finishClose`},OPEN:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},TOGGLE:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},PROPS_CHANGED:[{target:`opening`,guard:j.shouldOpen,reduce:`replaceProps`,effects:[`syncProps`,`prepareOpen`]},{reduce:`replaceProps`,effects:`syncProps`}]}}}},{context:{openSubmenuIds:[]},props:e,reducers:{replaceProps:j.replace,replaceSubmenuPath:e=>({context:{...e.context,openSubmenuIds:P(e.event)}}),clearSubmenus:e=>({context:{...e.context,openSubmenuIds:[]}}),replacePropsAndClearSubmenus:e=>{let t=j.replace(e);return t?{...t,context:{...e.context,openSubmenuIds:[]}}:void 0}},guards:{canOpen:({props:e})=>!e.disabled},effects:{prepareOpen:({event:e})=>t.prepareOpen(M(e)),finishOpen:t.finishOpen,prepareClose:({event:e})=>t.prepareClose(N(e),e.type!==`PROPS_CHANGED`),finishClose:t.finishClose,syncProps:t.syncProps,syncSubmenus:({context:e})=>t.syncSubmenus(e.openSubmenuIds)}}),I=h({definition:{component:`ui.dropdown`,parts:{root:{base:`contents`}}}}),L=0,R=()=>{let e=null,t=!1,n=!0,r=``,i=``,l=null,d=null,h=null,_=new Map,y=null,b=[],x=()=>{if(!e)throw Error(`Dropdown has not been initialized.`);return e},S=()=>{let e=Array.from(x().children).find(e=>e instanceof HTMLElement&&!e.matches(`[data-ui-menu]`));if(!(e instanceof HTMLElement))throw Error(`Dropdown requires a trigger element before the menu.`);return e},C=()=>{let e=Array.from(x().children).find(e=>e instanceof HTMLElement&&e.matches(`[data-ui-menu]`));if(!(e instanceof HTMLElement))throw Error(`Dropdown requires a menu element.`);return e},w=()=>X.getSnapshot().props,T=()=>X.hasTag(`expanded`),D=()=>X.hasTag(`visible`),O=e=>{if(!(e instanceof Element))return null;let t=e.closest(`[data-ui-menu-item]`);return t&&x().contains(t)?t:null},j=e=>o({value:e.dataset.disabled})||e.getAttribute(`aria-disabled`)===`true`||e.hasAttribute(`disabled`),M=()=>{if(!d)throw Error(`Dropdown navigation has not been initialized.`);return d},N=()=>{[M(),...Array.from(_.values(),({collection:e})=>e)].forEach(e=>e.allItems().forEach(e=>{e.hasAttribute(`role`)||e.setAttribute(`role`,`menuitem`),e.tabIndex=-1,j(e)&&e.setAttribute(`aria-disabled`,`true`)}))},P=e=>e?Array.from(_.values()).find(({trigger:t})=>t===e)??null:null,R=e=>e?Array.from(_.values()).find(({panel:t})=>t===e)??null:null,z=e=>R(e.root.parentElement?.closest(`[data-ui-menu-submenu-panel]`)??null),B=e=>{let t=[],n=e;for(;n;)t.unshift(n.id),n=z(n);return t},V=()=>X.getSnapshot().context.openSubmenuIds,H=e=>{y=null,_.forEach((t,n)=>{let r=e.includes(n);t.root.dataset.state=r?`open`:`closed`,t.trigger.dataset.state=r?`open`:`closed`,t.trigger.setAttribute(`aria-expanded`,r?`true`:`false`),t.panel.dataset.state=r?`open`:`closed`,t.panel.hidden=!r,r?t.popover.open():(t.collection.clearActiveItem(),t.popover.close())})},U=e=>{let t=e.items().find(e=>e.hasAttribute(`data-selected`)||[`true`,`mixed`].includes(e.getAttribute(`aria-checked`)??``));return t?(e.activateItem({el:t}),!0):!1},W=(e,t=!1)=>{j(e.trigger)||(X.send({type:`SUBMENU_PATH_CHANGED`,path:B(e)}),queueMicrotask(()=>{t?e.collection.focusFirst():U(e.collection)}))},G=(e,t=!1)=>{let n=B(e);X.send({type:`SUBMENU_PATH_CHANGED`,path:n.slice(0,-1)}),t&&e.trigger.focus({preventScroll:!0})},K=()=>{let e=S(),t=e.getAttribute(`tabindex`);l={ariaDisabled:e.getAttribute(`aria-disabled`),dataDisabled:e.getAttribute(`data-disabled`),disabled:e instanceof HTMLButtonElement?e.disabled:null,tabIndex:t??(e.tabIndex<0?`0`:null)}},q=(e,t,n)=>{n===null?e.removeAttribute(t):e.setAttribute(t,n)},J=()=>{t&&(T()||n)&&a({el:x(),schema:k,key:`open`,value:T()});let e=S(),o=l;if(o){if(e.id||=r,e.setAttribute(`data-ui-dropdown-trigger`,``),e.setAttribute(`aria-expanded`,T()?`true`:`false`),e.setAttribute(`aria-controls`,i),e.setAttribute(`data-state`,T()?`open`:`closed`),w().disabled){e.setAttribute(`aria-disabled`,`true`),e.setAttribute(`data-disabled`,``),e.tabIndex=-1,e instanceof HTMLButtonElement&&(e.disabled=!0);return}q(e,`aria-disabled`,o.ariaDisabled),q(e,`data-disabled`,o.dataDisabled),q(e,`tabindex`,o.tabIndex),e instanceof HTMLButtonElement&&o.disabled!==null&&(e.disabled=o.disabled)}},Y=()=>{let e=C();e.id=i,e.setAttribute(`popover`,`manual`),e.setAttribute(`role`,`menu`),e.tabIndex=-1,e.hidden=!D(),e.setAttribute(`data-state`,T()?`open`:`closed`),N()},te=e=>{n=!0,J(),Y(),h?.open(),queueMicrotask(()=>{X.hasTag(`interactive`)&&(e===`first`?M().focusFirst():(U(M()),C().focus({preventScroll:!0})))})},ne=()=>{J(),Y(),s({el:x(),name:`ui:open`})},re=(e,t)=>{n=t,M().clearActiveItem(),J(),Y(),e&&S().focus({preventScroll:!0})},ie=()=>{h?.close(),J(),Y(),n=!0,s({el:x(),name:`ui:close`})},ae=()=>{J(),Y(),h?.sync()},X=u({schema:k,hooks:A,createMachine:({props:e})=>F({props:e,effects:{prepareOpen:te,finishOpen:ne,prepareClose:re,finishClose:ie,syncProps:ae,syncSubmenus:H}})}),Z=(e=`menu`,t)=>{if(t?.preventDefault(),!w().disabled){if(X.hasTag(`expanded`)){e===`first`&&M().focusFirst();return}X.send({type:`OPEN`,focus:e})}},Q=(e,t)=>{t?.preventDefault(),X.send({type:`CLOSE`,restoreFocus:e})},oe=(e,t)=>{if(j(e)){t.preventDefault();return}let n=o({value:C().dataset.keepOpen});(e.dataset.keepOpen===void 0||e.dataset.keepOpen===``?n:o({value:e.dataset.keepOpen}))||Q(!1)},se=e=>{let t=O(e.target);if(t){let n=P(t);if(n){e.preventDefault(),W(n);return}oe(t,e);return}let n=e.target;n instanceof Node&&S().contains(n)&&(e.preventDefault(),w().disabled||X.send(`TOGGLE`))},ce=e=>{if(!(e instanceof KeyboardEvent))return;if(e.key===`Escape`&&D()){e.preventDefault(),e.stopPropagation();let t=_.get(V().at(-1)??``);if(t){G(t,!0);return}Q(!0);return}let t=e.target;if(t instanceof Node&&S().contains(t)){if(e.key===`ArrowDown`){Z(`first`,e);return}let t=S();!(t instanceof HTMLButtonElement)&&!(t instanceof HTMLAnchorElement)&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),w().disabled||X.send(`TOGGLE`));return}let n=O(e.target),r=P(n);if(r&&(e.key===`ArrowRight`||e.key===`Enter`||e.key===` `)){e.preventDefault(),W(r,!0);return}let i=R(e.target instanceof Element?e.target.closest(`[data-ui-menu-submenu-panel]`):null);if(i&&e.key===`ArrowLeft`){e.preventDefault(),G(i,!0);return}if(n&&(e.key===`Enter`||e.key===` `)&&n.matches(`[role="menuitemcheckbox"], [role="menuitemradio"]`)){e.preventDefault(),n.querySelector(`input[type="checkbox"], input[type="radio"]`)?.click();return}i?i.collection.handleKeydown({event:e}):C().contains(e.target)&&M().handleKeydown({event:e})},le=e=>{let t=O(e.target);t&&!j(t)&&M().activateItem({el:t})},ue=e=>{if(!(e instanceof PointerEvent)||y?.contains({x:e.clientX,y:e.clientY}))return;let t=O(e.target);if(!t||j(t))return;y=null;let n=P(t),r=R(t.closest(`[data-ui-menu-submenu-panel]`));if((r?.collection??M()).activateItem({el:t}),n){W(n);return}X.send({type:`SUBMENU_PATH_CHANGED`,path:r?B(r):[]})},de=e=>{if(!(e instanceof PointerEvent)||!window.matchMedia(`(hover: hover) and (pointer: fine)`).matches)return;let t=P(O(e.target));if(!t||!V().includes(t.id)||e.relatedTarget instanceof Node&&t.panel.contains(e.relatedTarget))return;let n=t.panel.getBoundingClientRect();y=E({origin:{x:e.clientX,y:e.clientY},panel:{left:n.left,right:n.right,top:n.top,bottom:n.bottom}})},fe=e=>{if(`newState`in e){if(e.newState===`open`){D()||X.send(`OPEN`);return}D()&&X.send(`CLOSE`)}},$;return $={...X,get isOpen(){return this.snapshot.current?.tags.includes(`expanded`)??!1},init(){e=this.$el,X.connect(this.$el,this.snapshot),r=S().id||this.$id(`dropdown-trigger`),i=C().id||this.$id(`dropdown-menu`),K(),d=p({root:()=>C(),itemSelector:`[data-ui-menu-item]`,ownsItem:e=>e.closest(`[data-ui-menu]`)===C(),isDisabled:j,loop:()=>o({value:C().dataset.loop})}),h=f({reference:S,floating:C,position:()=>w().side,align:()=>w().align,gap:()=>w().gap,offset:()=>w().offset}),x().querySelectorAll(`[data-ui-menu-submenu]`).forEach(e=>{let t=e.querySelector(`:scope > [data-ui-submenu-trigger]`),n=e.querySelector(`:scope > [data-ui-menu-submenu-panel]`);if(!t||!n)throw Error(`Menu submenu requires a trigger and nested menu panel.`);let r=e.dataset.submenuId||`ui-submenu-${++L}`,i=t.id||`${r}-trigger`,a=n.id||`${r}-menu`;e.dataset.submenuId=r,t.id=i,t.setAttribute(`aria-controls`,a),n.id=a,n.setAttribute(`aria-labelledby`,i),n.setAttribute(`popover`,`manual`),n.setAttribute(`role`,`menu`),n.tabIndex=-1;let s=p({root:()=>n,itemSelector:`[data-ui-menu-item]`,ownsItem:e=>e.closest(`[data-ui-menu]`)===n,isDisabled:j,loop:()=>o({value:n.dataset.loop})}),c=f({reference:()=>t,floating:()=>n,position:()=>`right`,align:()=>`start`,gap:()=>4,offset:()=>0});_.set(r,{id:r,root:e,trigger:t,panel:n,popover:c,collection:s})}),b.push(v({isEnabled:()=>X.hasTag(`interactive`),roots:()=>[x(),C()],onDismiss:()=>Q(!1)}));let n=()=>{y=null};c({target:window,event:`blur`,handler:n,cleanup:b}),c({target:window,event:`resize`,handler:n,cleanup:b}),c({target:window,event:`scroll`,handler:n,cleanup:b,options:{capture:!0}}),J(),Y(),H([]),t=!0,w().open&&queueMicrotask(()=>X.send(`OPEN`))},destroy(){b.forEach(e=>e()),b=[],X.disconnect(),h?.destroy(),_.forEach(({popover:e})=>e.destroy()),_.clear(),y=null,h=null,d=null,l=null,e=null},get root(){let e=this.snapshot.current?.props??w();return g({inputs:[m({part:I.parts.root,props:e,className:e.class}),{"data-ui-dropdown":``,":data-state":()=>X.hasTag(`expanded`)?`open`:`closed`,"@click":se,"@keydown":ce,"@focusin":le,"@pointermove":ue,"@pointerout":de}]})},get menu(){let e=C();return g({inputs:[m({part:ee.parts.menu,props:{},className:e.dataset.class}),{id:i,popover:`manual`,role:`menu`,tabindex:`-1`,"data-ui-menu":``,":hidden":()=>!X.hasTag(`visible`),":data-state":()=>X.hasTag(`expanded`)?`open`:`closed`,"@toggle":fe}]})},open(e){Z(`menu`,e)},close(e){Q(e instanceof KeyboardEvent,e)},toggle(e){e?.preventDefault(),!w().disabled&&X.send({type:`TOGGLE`,restoreFocus:e instanceof KeyboardEvent})}},$},z=d(`UiDropdown`,R),B=new WeakSet,V=t=>{B.has(t)||(B.add(t),e(t),z(t))};export{R as n,V as t};
|
|
2
|
-
//# sourceMappingURL=entry.generated-CvcufWkj.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"entry.generated-CvcufWkj.js","names":[],"sources":["../../../../../../../../client/src/components/menu/styles.ts","../../../../../../../../client/src/components/dropdown/safe-area.ts","../../../../../../../../client/src/components/dropdown/contract.ts","../../../../../../../../client/src/components/dropdown/machine.ts","../../../../../../../../client/src/components/dropdown/styles.ts","../../../../../../../../client/src/components/dropdown/index.ts","../../../../../../../../client/src/components/dropdown/entry.generated.ts"],"sourcesContent":["import {defineStyles} from '../../runtime';\nimport {OPTION_ICON_CLASSES, OPTION_ITEM_CLASSES, POPOVER_GEOMETRY_CLASSES} from '../common';\n\nconst menuStyles = defineStyles({definition: {\n component: 'ui.menu',\n parts: {\n menu: {\n base: [\n POPOVER_GEOMETRY_CLASSES,\n 'auto-rows-min content-start min-w-48 gap-1 overflow-hidden rounded-overlay-sm p-popover-padding',\n ],\n },\n item: {\n base: [\n OPTION_ITEM_CLASSES,\n ],\n variants: {\n variant: {\n default: '',\n subtle: '',\n filled: '',\n ghost: '',\n },\n color: {\n neutral: '',\n accent: '',\n success: '',\n warning: '',\n danger: '',\n },\n },\n defaults: {\n variant: 'default',\n color: 'neutral',\n },\n },\n itemLabel: {\n base: 'min-w-0 flex-1',\n },\n itemMeta: {\n base: 'ml-auto font-metadata text-metadata [font-weight:var(--font-weight-metadata)] text-current opacity-70',\n },\n itemIcon: {\n base: OPTION_ICON_CLASSES,\n variants: {\n position: {\n leading: '',\n trailing: 'ml-auto',\n },\n },\n defaults: {\n position: 'leading',\n },\n },\n submenu: {\n base: 'contents',\n },\n submenuPanel: {\n base: '',\n },\n group: {\n base: 'grid auto-rows-min content-start gap-1',\n },\n label: {\n base: 'px-menu-item-padding-inline py-1 font-label text-label [font-weight:var(--font-weight-label)]',\n },\n separatorRoot: {\n variants: {\n orientation: {\n vertical: 'self-stretch self-center',\n horizontal: '-mx-popover my-popover h-[var(--border-width-edge-separator)]',\n },\n },\n defaults: {\n orientation: 'horizontal',\n },\n },\n separatorRule: {\n variants: {\n orientation: {\n vertical: 'h-full w-[var(--border-width-edge-separator)] border-0',\n horizontal: 'h-[var(--border-width-edge-separator)] w-full border-0',\n },\n },\n defaults: {\n orientation: 'horizontal',\n },\n },\n },\n}});\n\nexport {menuStyles};\n","type Point = {x: number; y: number};\ntype PanelRect = {left: number; right: number; top: number; bottom: number};\ntype SubmenuSafeArea = {contains(point: Point): boolean};\n\nconst edge = (point: Point, start: Point, end: Point): number => (\n (point.x - end.x) * (start.y - end.y) - (start.x - end.x) * (point.y - end.y)\n);\n\nconst createSubmenuSafeArea = ({origin, panel}: {origin: Point; panel: PanelRect}): SubmenuSafeArea => {\n const nearX = panel.left >= origin.x ? panel.left : panel.right;\n const top = {x: nearX, y: panel.top};\n const bottom = {x: nearX, y: panel.bottom};\n const minX = Math.min(origin.x, nearX);\n const maxX = Math.max(origin.x, nearX);\n\n return {\n contains(point): boolean {\n if (point.x <= minX || point.x >= maxX) return false;\n const first = edge(point, origin, top);\n const second = edge(point, top, bottom);\n const third = edge(point, bottom, origin);\n const hasNegative = first < 0 || second < 0 || third < 0;\n const hasPositive = first > 0 || second > 0 || third > 0;\n return !(hasNegative && hasPositive);\n },\n };\n};\n\nexport {createSubmenuSafeArea};\nexport type {PanelRect, Point, SubmenuSafeArea};\n","import {bool, number, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {ALIGNMENTS, POSITIONS, type Alignment, type Position} from '../common';\n\nconst DROPDOWN_SIDES = POSITIONS;\n\nconst DROPDOWN_ALIGNS = ALIGNMENTS;\n\ntype DropdownSide = Position;\ntype DropdownAlign = Alignment;\n\nconst dropdownSchema = {\n side: oneOf(DROPDOWN_SIDES, 'bottom' as DropdownSide),\n align: oneOf(DROPDOWN_ALIGNS, 'start' as DropdownAlign),\n offset: number.clamp(-100, 100).default(0),\n gap: number.clamp(0, 50).default(4),\n open: bool,\n disabled: bool,\n class: string,\n};\n\ntype DropdownProps = SchemaToProps<typeof dropdownSchema>;\n\nexport {\n DROPDOWN_ALIGNS,\n DROPDOWN_SIDES,\n dropdownSchema,\n};\nexport type {DropdownAlign, DropdownSide, DropdownProps};\n","import {\n createMachine,\n type Machine,\n type MachineEventObject,\n} from '../../runtime/state-machine';\nimport {defineHook, type TransitionHookDefinition} from '../../runtime/transition-coordinator';\nimport {defineControlledOpenProps} from '../shared/controlled-open';\nimport type {DropdownProps} from './contract';\n\ntype DropdownContext = {openSubmenuIds: string[]};\ntype DropdownFocus = 'menu' | 'first';\n\ntype DropdownMachineEffects = {\n prepareOpen(focus: DropdownFocus): void;\n finishOpen(): void;\n prepareClose(restoreFocus: boolean, reflectOpen: boolean): void;\n finishClose(): void;\n syncProps(): void;\n syncSubmenus(openSubmenuIds: string[]): void;\n};\n\ntype CreateDropdownMachineOptions = {\n props: DropdownProps;\n effects: DropdownMachineEffects;\n};\n\nconst openingHook = defineHook({\n name: 'opening',\n state: 'opening',\n project: () => ({}),\n onDone: 'OPENING_DONE',\n onError: 'OPENING_ERROR',\n} satisfies TransitionHookDefinition<DropdownContext, DropdownProps, Record<string, never>, 'opening'>);\n\nconst closingHook = defineHook({\n name: 'closing',\n state: 'closing',\n project: () => ({}),\n onDone: 'CLOSING_DONE',\n onError: 'CLOSING_ERROR',\n} satisfies TransitionHookDefinition<DropdownContext, DropdownProps, Record<string, never>, 'closing'>);\n\nconst dropdownHooks = [openingHook, closingHook] as const;\nconst controlledOpenProps = defineControlledOpenProps<DropdownContext, DropdownProps>();\n\nconst focusFrom = (event: MachineEventObject): DropdownFocus => event.focus === 'first' ? 'first' : 'menu';\nconst shouldRestoreFocus = (event: MachineEventObject): boolean => event.restoreFocus === true;\nconst submenuPathFrom = (event: MachineEventObject): string[] => (\n Array.isArray(event.path) ? event.path.filter((value): value is string => typeof value === 'string') : []\n);\n\nconst createDropdownMachine = ({\n props,\n effects,\n}: CreateDropdownMachineOptions): Machine<DropdownContext, DropdownProps> => createMachine<DropdownContext, DropdownProps>({\n initial: 'closed',\n states: {\n closed: {\n tags: ['closed'],\n on: {\n OPEN: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n TOGGLE: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n PROPS_CHANGED: [\n {\n target: 'opening',\n guard: controlledOpenProps.shouldOpen,\n reduce: 'replaceProps',\n effects: ['syncProps', 'prepareOpen'],\n },\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n opening: {\n tags: ['visible', 'expanded', 'interactive', 'transitioning'],\n on: {\n OPENING_DONE: {target: 'open', effects: 'finishOpen'},\n OPENING_ERROR: {target: 'open', effects: 'finishOpen'},\n CLOSE: {target: 'closing', reduce: 'clearSubmenus', effects: ['syncSubmenus', 'prepareClose']},\n TOGGLE: {target: 'closing', reduce: 'clearSubmenus', effects: ['syncSubmenus', 'prepareClose']},\n SUBMENU_PATH_CHANGED: {reduce: 'replaceSubmenuPath', effects: 'syncSubmenus'},\n PROPS_CHANGED: [\n {\n target: 'closing',\n guard: controlledOpenProps.shouldClose,\n reduce: 'replacePropsAndClearSubmenus',\n effects: ['syncSubmenus', 'prepareClose', 'syncProps'],\n },\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n open: {\n tags: ['visible', 'expanded', 'interactive', 'open'],\n on: {\n CLOSE: {target: 'closing', reduce: 'clearSubmenus', effects: ['syncSubmenus', 'prepareClose']},\n TOGGLE: {target: 'closing', reduce: 'clearSubmenus', effects: ['syncSubmenus', 'prepareClose']},\n SUBMENU_PATH_CHANGED: {reduce: 'replaceSubmenuPath', effects: 'syncSubmenus'},\n PROPS_CHANGED: [\n {\n target: 'closing',\n guard: controlledOpenProps.shouldClose,\n reduce: 'replacePropsAndClearSubmenus',\n effects: ['syncSubmenus', 'prepareClose', 'syncProps'],\n },\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n closing: {\n tags: ['visible', 'transitioning'],\n on: {\n CLOSING_DONE: {target: 'closed', effects: 'finishClose'},\n CLOSING_ERROR: {target: 'closed', effects: 'finishClose'},\n OPEN: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n TOGGLE: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n PROPS_CHANGED: [\n {\n target: 'opening',\n guard: controlledOpenProps.shouldOpen,\n reduce: 'replaceProps',\n effects: ['syncProps', 'prepareOpen'],\n },\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n },\n}, {\n context: {openSubmenuIds: []},\n props,\n reducers: {\n replaceProps: controlledOpenProps.replace,\n replaceSubmenuPath: (scope) => ({context: {...scope.context, openSubmenuIds: submenuPathFrom(scope.event)}}),\n clearSubmenus: (scope) => ({context: {...scope.context, openSubmenuIds: []}}),\n replacePropsAndClearSubmenus: (scope) => {\n const next = controlledOpenProps.replace(scope);\n return next ? {...next, context: {...scope.context, openSubmenuIds: []}} : undefined;\n },\n },\n guards: {\n canOpen: ({props: currentProps}) => !currentProps.disabled,\n },\n effects: {\n prepareOpen: ({event}) => effects.prepareOpen(focusFrom(event)),\n finishOpen: effects.finishOpen,\n prepareClose: ({event}) => effects.prepareClose(\n shouldRestoreFocus(event),\n event.type !== 'PROPS_CHANGED',\n ),\n finishClose: effects.finishClose,\n syncProps: effects.syncProps,\n syncSubmenus: ({context}) => effects.syncSubmenus(context.openSubmenuIds),\n },\n});\n\nexport {createDropdownMachine, dropdownHooks};\nexport type {\n CreateDropdownMachineOptions,\n DropdownContext,\n DropdownFocus,\n DropdownMachineEffects,\n};\n","import {defineStyles} from '../../runtime';\n\nconst dropdownStyles = defineStyles({definition: {\n component: 'ui.dropdown',\n parts: {\n root: {\n base: 'contents',\n },\n },\n}});\n\nexport {dropdownStyles};\n","import type Alpine from 'alpinejs';\n\nimport {menuStyles} from '@client/components/menu/styles';\nimport {\n type AlpineMachine,\n createAlpineMachine,\n defineAlpineData,\n reflectSchemaProp,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {createAnchoredPopoverSurface, type AnchoredPopoverSurface} from '@client/runtime/anchored-popover';\nimport {createCollectionNavigation, type CollectionNavigation} from '@client/runtime/collection-navigation';\nimport {addDismissableLayer} from '@client/runtime/dismissable-layer';\nimport {mergeBindings, type BindingObject} from '@client/runtime/merge-bindings';\nimport {resolveStyle} from '@client/runtime/styles';\nimport {addListener, asBool, dispatch, type CleanupStack} from '@client/utils';\nimport {createSubmenuSafeArea, type SubmenuSafeArea} from './safe-area';\nimport {dropdownSchema, type DropdownProps} from './contract';\nimport {\n createDropdownMachine,\n dropdownHooks,\n type DropdownContext,\n type DropdownFocus,\n} from './machine';\nimport {dropdownStyles} from './styles';\n\ntype DropdownTransitionName = (typeof dropdownHooks)[number]['name'];\ntype DropdownTransition<TName extends DropdownTransitionName = DropdownTransitionName> = TransitionForHook<\n Extract<(typeof dropdownHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\ntype PopoverElement = HTMLElement & {\n showPopover(): void;\n hidePopover(): void;\n};\n\ntype TriggerBaseline = {\n ariaDisabled: string | null;\n dataDisabled: string | null;\n disabled: boolean | null;\n tabIndex: string | null;\n};\n\ntype SubmenuResource = {\n id: string;\n root: HTMLElement;\n trigger: HTMLElement;\n panel: PopoverElement;\n popover: AnchoredPopoverSurface;\n collection: CollectionNavigation;\n};\n\nlet submenuId = 0;\n\n/**\n * Public Alpine API for `ui.dropdown`.\n *\n * @public\n */\ninterface UiDropdownApi {\n /** Whether the dropdown is opening or fully open. */\n readonly isOpen: boolean;\n\n /** Opens the dropdown unless it is disabled. */\n open(event?: Event): void;\n\n /** Closes the dropdown. Keyboard dismissal restores focus to the trigger. */\n close(event?: Event): void;\n\n /** Reverses the current dropdown lifecycle, including an in-flight transition. */\n toggle(event?: Event): void;\n}\n\ntype DropdownData = AlpineMachine<DropdownContext, DropdownProps, typeof dropdownHooks> & UiDropdownApi & {\n readonly root: BindingObject;\n readonly menu: BindingObject;\n init(): void;\n destroy(): void;\n};\n\nconst UiDropdown = (): TrellisAlpineComponent<DropdownData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let canReflectOpen = false;\n let reflectTransitionOpen = true;\n let triggerId = '';\n let menuId = '';\n let triggerBaseline: TriggerBaseline | null = null;\n let collection: CollectionNavigation | null = null;\n let popover: AnchoredPopoverSurface | null = null;\n const submenus = new Map<string, SubmenuResource>();\n let safeArea: SubmenuSafeArea | null = null;\n let cleanup: CleanupStack = [];\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Dropdown has not been initialized.');\n return rootEl;\n };\n\n const triggerEl = (): HTMLElement => {\n const trigger = Array.from(root().children)\n .find((el) => el instanceof HTMLElement && !el.matches('[data-ui-menu]'));\n if (!(trigger instanceof HTMLElement)) throw new Error('Dropdown requires a trigger element before the menu.');\n return trigger;\n };\n\n const menuEl = (): PopoverElement => {\n const menu = Array.from(root().children).find((element) => element instanceof HTMLElement && element.matches('[data-ui-menu]'));\n if (!(menu instanceof HTMLElement)) throw new Error('Dropdown requires a menu element.');\n return menu as PopoverElement;\n };\n\n const currentProps = (): Readonly<DropdownProps> => bridge.getSnapshot().props;\n const isExpanded = (): boolean => bridge.hasTag('expanded');\n const isVisible = (): boolean => bridge.hasTag('visible');\n\n const itemFrom = (target: EventTarget | null): HTMLElement | null => {\n if (!(target instanceof Element)) return null;\n const item = target.closest<HTMLElement>('[data-ui-menu-item]');\n return item && root().contains(item) ? item : null;\n };\n\n const itemDisabled = (item: HTMLElement): boolean => (\n asBool({value: item.dataset.disabled})\n || item.getAttribute('aria-disabled') === 'true'\n || item.hasAttribute('disabled')\n );\n\n const collectionNav = (): CollectionNavigation => {\n if (!collection) throw new Error('Dropdown navigation has not been initialized.');\n return collection;\n };\n\n const syncMenuItems = (): void => {\n const items = [collectionNav(), ...Array.from(submenus.values(), ({collection: nested}) => nested)];\n items.forEach((navigation) => navigation.allItems().forEach((item) => {\n if (!item.hasAttribute('role')) item.setAttribute('role', 'menuitem');\n item.tabIndex = -1;\n if (itemDisabled(item)) item.setAttribute('aria-disabled', 'true');\n }));\n };\n\n const submenuForTrigger = (item: HTMLElement | null): SubmenuResource | null => {\n if (!item) return null;\n return Array.from(submenus.values()).find(({trigger}) => trigger === item) ?? null;\n };\n\n const submenuForPanel = (panel: Element | null): SubmenuResource | null => {\n if (!panel) return null;\n return Array.from(submenus.values()).find(({panel: candidate}) => candidate === panel) ?? null;\n };\n\n const parentSubmenu = (resource: SubmenuResource): SubmenuResource | null => {\n const parentPanel = resource.root.parentElement?.closest<HTMLElement>('[data-ui-menu-submenu-panel]') ?? null;\n return submenuForPanel(parentPanel);\n };\n\n const pathTo = (resource: SubmenuResource): string[] => {\n const path: string[] = [];\n let current: SubmenuResource | null = resource;\n while (current) {\n path.unshift(current.id);\n current = parentSubmenu(current);\n }\n return path;\n };\n\n const currentSubmenuPath = (): string[] => bridge.getSnapshot().context.openSubmenuIds;\n\n const syncSubmenus = (openIds: string[]): void => {\n safeArea = null;\n submenus.forEach((resource, id) => {\n const open = openIds.includes(id);\n resource.root.dataset.state = open ? 'open' : 'closed';\n resource.trigger.dataset.state = open ? 'open' : 'closed';\n resource.trigger.setAttribute('aria-expanded', open ? 'true' : 'false');\n resource.panel.dataset.state = open ? 'open' : 'closed';\n resource.panel.hidden = !open;\n if (open) resource.popover.open();\n else {\n resource.collection.clearActiveItem();\n resource.popover.close();\n }\n });\n };\n\n const activateCommittedItem = (navigation: CollectionNavigation): boolean => {\n const selected = navigation.items().find((item) => (\n item.hasAttribute('data-selected')\n || ['true', 'mixed'].includes(item.getAttribute('aria-checked') ?? '')\n ));\n if (!selected) return false;\n navigation.activateItem({el: selected});\n return true;\n };\n\n const openSubmenu = (resource: SubmenuResource, focusFirst = false): void => {\n if (itemDisabled(resource.trigger)) return;\n bridge.send({type: 'SUBMENU_PATH_CHANGED', path: pathTo(resource)});\n queueMicrotask(() => {\n if (focusFirst) resource.collection.focusFirst();\n else activateCommittedItem(resource.collection);\n });\n };\n\n const closeSubmenu = (resource: SubmenuResource, restoreFocus = false): void => {\n const path = pathTo(resource);\n bridge.send({type: 'SUBMENU_PATH_CHANGED', path: path.slice(0, -1)});\n if (restoreFocus) resource.trigger.focus({preventScroll: true});\n };\n\n const captureTriggerBaseline = (): void => {\n const trigger = triggerEl();\n const explicitTabIndex = trigger.getAttribute('tabindex');\n triggerBaseline = {\n ariaDisabled: trigger.getAttribute('aria-disabled'),\n dataDisabled: trigger.getAttribute('data-disabled'),\n disabled: trigger instanceof HTMLButtonElement ? trigger.disabled : null,\n tabIndex: explicitTabIndex ?? (trigger.tabIndex < 0 ? '0' : null),\n };\n };\n\n const restoreAttribute = (el: HTMLElement, name: string, value: string | null): void => {\n if (value === null) el.removeAttribute(name);\n else el.setAttribute(name, value);\n };\n\n const syncTrigger = (): void => {\n if (canReflectOpen && (isExpanded() || reflectTransitionOpen)) {\n reflectSchemaProp({el: root(), schema: dropdownSchema, key: 'open', value: isExpanded()});\n }\n const trigger = triggerEl();\n const baseline = triggerBaseline;\n if (!baseline) return;\n\n trigger.id ||= triggerId;\n trigger.setAttribute('data-ui-dropdown-trigger', '');\n trigger.setAttribute('aria-expanded', isExpanded() ? 'true' : 'false');\n trigger.setAttribute('aria-controls', menuId);\n trigger.setAttribute('data-state', isExpanded() ? 'open' : 'closed');\n\n if (currentProps().disabled) {\n trigger.setAttribute('aria-disabled', 'true');\n trigger.setAttribute('data-disabled', '');\n trigger.tabIndex = -1;\n if (trigger instanceof HTMLButtonElement) trigger.disabled = true;\n return;\n }\n\n restoreAttribute(trigger, 'aria-disabled', baseline.ariaDisabled);\n restoreAttribute(trigger, 'data-disabled', baseline.dataDisabled);\n restoreAttribute(trigger, 'tabindex', baseline.tabIndex);\n if (trigger instanceof HTMLButtonElement && baseline.disabled !== null) trigger.disabled = baseline.disabled;\n };\n\n const syncMenu = (): void => {\n const menu = menuEl();\n menu.id = menuId;\n menu.setAttribute('popover', 'manual');\n menu.setAttribute('role', 'menu');\n menu.tabIndex = -1;\n menu.hidden = !isVisible();\n menu.setAttribute('data-state', isExpanded() ? 'open' : 'closed');\n syncMenuItems();\n };\n\n const prepareOpen = (focus: DropdownFocus): void => {\n reflectTransitionOpen = true;\n syncTrigger();\n syncMenu();\n popover?.open();\n queueMicrotask(() => {\n if (!bridge.hasTag('interactive')) return;\n if (focus === 'first') collectionNav().focusFirst();\n else {\n activateCommittedItem(collectionNav());\n menuEl().focus({preventScroll: true});\n }\n });\n };\n\n const finishOpen = (): void => {\n syncTrigger();\n syncMenu();\n dispatch({el: root(), name: 'ui:open'});\n };\n\n const prepareClose = (restoreFocus: boolean, reflectOpen: boolean): void => {\n reflectTransitionOpen = reflectOpen;\n collectionNav().clearActiveItem();\n syncTrigger();\n syncMenu();\n if (restoreFocus) triggerEl().focus({preventScroll: true});\n };\n\n const finishClose = (): void => {\n popover?.close();\n syncTrigger();\n syncMenu();\n reflectTransitionOpen = true;\n dispatch({el: root(), name: 'ui:close'});\n };\n\n const syncProps = (): void => {\n syncTrigger();\n syncMenu();\n popover?.sync();\n };\n\n const bridge = createAlpineMachine({\n schema: dropdownSchema,\n hooks: dropdownHooks,\n createMachine: ({props}) => createDropdownMachine({\n props,\n effects: {prepareOpen, finishOpen, prepareClose, finishClose, syncProps, syncSubmenus},\n }),\n });\n\n const open = (focus: DropdownFocus = 'menu', event?: Event): void => {\n event?.preventDefault();\n if (currentProps().disabled) return;\n if (bridge.hasTag('expanded')) {\n if (focus === 'first') collectionNav().focusFirst();\n return;\n }\n bridge.send({type: 'OPEN', focus});\n };\n\n const close = (restoreFocus: boolean, event?: Event): void => {\n event?.preventDefault();\n bridge.send({type: 'CLOSE', restoreFocus});\n };\n\n const selectItem = (item: HTMLElement, event: Event): void => {\n if (itemDisabled(item)) {\n event.preventDefault();\n return;\n }\n\n const menuKeepOpen = asBool({value: menuEl().dataset.keepOpen});\n const itemKeepOpen = item.dataset.keepOpen === undefined || item.dataset.keepOpen === ''\n ? menuKeepOpen\n : asBool({value: item.dataset.keepOpen});\n if (!itemKeepOpen) close(false);\n };\n\n const handleClick = (event: Event): void => {\n const item = itemFrom(event.target);\n if (item) {\n const submenu = submenuForTrigger(item);\n if (submenu) {\n event.preventDefault();\n openSubmenu(submenu);\n return;\n }\n selectItem(item, event);\n return;\n }\n\n const target = event.target;\n if (target instanceof Node && triggerEl().contains(target)) {\n event.preventDefault();\n if (!currentProps().disabled) bridge.send('TOGGLE');\n }\n };\n\n const handleKeydown = (event: Event): void => {\n if (!(event instanceof KeyboardEvent)) return;\n if (event.key === 'Escape' && isVisible()) {\n event.preventDefault();\n event.stopPropagation();\n const deepest = submenus.get(currentSubmenuPath().at(-1) ?? '');\n if (deepest) {\n closeSubmenu(deepest, true);\n return;\n }\n close(true);\n return;\n }\n\n const target = event.target;\n if (target instanceof Node && triggerEl().contains(target)) {\n if (event.key === 'ArrowDown') {\n open('first', event);\n return;\n }\n const trigger = triggerEl();\n if (!(trigger instanceof HTMLButtonElement) && !(trigger instanceof HTMLAnchorElement)\n && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault();\n if (!currentProps().disabled) bridge.send('TOGGLE');\n }\n return;\n }\n\n const item = itemFrom(event.target);\n const submenu = submenuForTrigger(item);\n if (submenu && (event.key === 'ArrowRight' || event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault();\n openSubmenu(submenu, true);\n return;\n }\n\n const containingPanel = event.target instanceof Element\n ? event.target.closest<HTMLElement>('[data-ui-menu-submenu-panel]')\n : null;\n const containingSubmenu = submenuForPanel(containingPanel);\n if (containingSubmenu && event.key === 'ArrowLeft') {\n event.preventDefault();\n closeSubmenu(containingSubmenu, true);\n return;\n }\n\n if (item && (event.key === 'Enter' || event.key === ' ')\n && item.matches('[role=\"menuitemcheckbox\"], [role=\"menuitemradio\"]')) {\n event.preventDefault();\n item.querySelector<HTMLInputElement>('input[type=\"checkbox\"], input[type=\"radio\"]')?.click();\n return;\n }\n\n if (containingSubmenu) containingSubmenu.collection.handleKeydown({event});\n else if (menuEl().contains(event.target as Node)) collectionNav().handleKeydown({event});\n };\n\n const handleFocus = (event: Event): void => {\n const item = itemFrom(event.target);\n if (item && !itemDisabled(item)) collectionNav().activateItem({el: item});\n };\n\n const handlePointer = (event: Event): void => {\n if (!(event instanceof PointerEvent)) return;\n if (safeArea?.contains({x: event.clientX, y: event.clientY})) return;\n const item = itemFrom(event.target);\n if (!item || itemDisabled(item)) return;\n safeArea = null;\n const submenu = submenuForTrigger(item);\n const containingPanel = item.closest<HTMLElement>('[data-ui-menu-submenu-panel]');\n const containingSubmenu = submenuForPanel(containingPanel);\n const navigation = containingSubmenu?.collection ?? collectionNav();\n navigation.activateItem({el: item});\n if (submenu) {\n openSubmenu(submenu);\n return;\n }\n bridge.send({type: 'SUBMENU_PATH_CHANGED', path: containingSubmenu ? pathTo(containingSubmenu) : []});\n };\n\n const handlePointerOut = (event: Event): void => {\n if (!(event instanceof PointerEvent)) return;\n if (!window.matchMedia('(hover: hover) and (pointer: fine)').matches) return;\n const item = itemFrom(event.target);\n const submenu = submenuForTrigger(item);\n if (!submenu || !currentSubmenuPath().includes(submenu.id)) return;\n if (event.relatedTarget instanceof Node && submenu.panel.contains(event.relatedTarget)) return;\n const panel = submenu.panel.getBoundingClientRect();\n safeArea = createSubmenuSafeArea({\n origin: {x: event.clientX, y: event.clientY},\n panel: {left: panel.left, right: panel.right, top: panel.top, bottom: panel.bottom},\n });\n };\n\n const handleNativeToggle = (event: Event): void => {\n if (!('newState' in event)) return;\n if (event.newState === 'open') {\n if (!isVisible()) bridge.send('OPEN');\n return;\n }\n if (isVisible()) bridge.send('CLOSE');\n };\n\n let component!: TrellisAlpineComponent<DropdownData>;\n component = {\n ...bridge,\n get isOpen(): boolean {\n return this.snapshot.current?.tags.includes('expanded') ?? false;\n },\n init(): void {\n rootEl = this.$el;\n bridge.connect(this.$el, this.snapshot);\n triggerId = triggerEl().id || this.$id('dropdown-trigger');\n menuId = menuEl().id || this.$id('dropdown-menu');\n captureTriggerBaseline();\n collection = createCollectionNavigation({\n root: () => menuEl(),\n itemSelector: '[data-ui-menu-item]',\n ownsItem: (item) => item.closest('[data-ui-menu]') === menuEl(),\n isDisabled: itemDisabled,\n loop: () => asBool({value: menuEl().dataset.loop}),\n });\n popover = createAnchoredPopoverSurface({\n reference: triggerEl,\n floating: menuEl,\n position: () => currentProps().side,\n align: () => currentProps().align,\n gap: () => currentProps().gap,\n offset: () => currentProps().offset,\n });\n root().querySelectorAll<HTMLElement>('[data-ui-menu-submenu]').forEach((submenuRoot) => {\n const trigger = submenuRoot.querySelector<HTMLElement>(':scope > [data-ui-submenu-trigger]');\n const panel = submenuRoot.querySelector<HTMLElement>(':scope > [data-ui-menu-submenu-panel]');\n if (!trigger || !panel) throw new Error('Menu submenu requires a trigger and nested menu panel.');\n const id = submenuRoot.dataset.submenuId || `ui-submenu-${++submenuId}`;\n const triggerIdForSubmenu = trigger.id || `${id}-trigger`;\n const panelId = panel.id || `${id}-menu`;\n submenuRoot.dataset.submenuId = id;\n trigger.id = triggerIdForSubmenu;\n trigger.setAttribute('aria-controls', panelId);\n panel.id = panelId;\n panel.setAttribute('aria-labelledby', triggerIdForSubmenu);\n panel.setAttribute('popover', 'manual');\n panel.setAttribute('role', 'menu');\n panel.tabIndex = -1;\n const navigation = createCollectionNavigation({\n root: () => panel,\n itemSelector: '[data-ui-menu-item]',\n ownsItem: (item) => item.closest('[data-ui-menu]') === panel,\n isDisabled: itemDisabled,\n loop: () => asBool({value: panel.dataset.loop}),\n });\n const nestedPopover = createAnchoredPopoverSurface({\n reference: () => trigger,\n floating: () => panel,\n position: () => 'right',\n align: () => 'start',\n gap: () => 4,\n offset: () => 0,\n });\n submenus.set(id, {\n id,\n root: submenuRoot,\n trigger,\n panel: panel as PopoverElement,\n popover: nestedPopover,\n collection: navigation,\n });\n });\n cleanup.push(addDismissableLayer({\n isEnabled: () => bridge.hasTag('interactive'),\n roots: () => [root(), menuEl()],\n onDismiss: () => close(false),\n }));\n const clearSafeArea = (): void => { safeArea = null; };\n addListener({target: window, event: 'blur', handler: clearSafeArea, cleanup});\n addListener({target: window, event: 'resize', handler: clearSafeArea, cleanup});\n addListener({target: window, event: 'scroll', handler: clearSafeArea, cleanup, options: {capture: true}});\n syncTrigger();\n syncMenu();\n syncSubmenus([]);\n canReflectOpen = true;\n if (currentProps().open) queueMicrotask(() => bridge.send('OPEN'));\n },\n destroy(): void {\n cleanup.forEach((dispose) => dispose());\n cleanup = [];\n bridge.disconnect();\n popover?.destroy();\n submenus.forEach(({popover: nestedPopover}) => nestedPopover.destroy());\n submenus.clear();\n safeArea = null;\n popover = null;\n collection = null;\n triggerBaseline = null;\n rootEl = null;\n },\n get root(): BindingObject {\n const props = this.snapshot.current?.props ?? currentProps();\n return mergeBindings({inputs: [\n resolveStyle({part: dropdownStyles.parts.root, props, className: props.class}),\n {\n 'data-ui-dropdown': '',\n ':data-state': () => (bridge.hasTag('expanded') ? 'open' : 'closed'),\n '@click': handleClick,\n '@keydown': handleKeydown,\n '@focusin': handleFocus,\n '@pointermove': handlePointer,\n '@pointerout': handlePointerOut,\n },\n ]});\n },\n get menu(): BindingObject {\n const menu = menuEl();\n return mergeBindings({inputs: [\n resolveStyle({part: menuStyles.parts.menu, props: {}, className: menu.dataset.class}),\n {\n id: menuId,\n popover: 'manual',\n role: 'menu',\n tabindex: '-1',\n 'data-ui-menu': '',\n ':hidden': () => !bridge.hasTag('visible'),\n ':data-state': () => (bridge.hasTag('expanded') ? 'open' : 'closed'),\n '@toggle': handleNativeToggle,\n },\n ]});\n },\n open(event?: Event): void {\n open('menu', event);\n },\n close(event?: Event): void {\n close(event instanceof KeyboardEvent, event);\n },\n toggle(event?: Event): void {\n event?.preventDefault();\n if (currentProps().disabled) return;\n bridge.send({type: 'TOGGLE', restoreFocus: event instanceof KeyboardEvent});\n },\n };\n\n return component;\n};\n\nconst registerDropdown = defineAlpineData('UiDropdown', UiDropdown);\n\nexport {registerDropdown, UiDropdown};\nexport type {DropdownData, DropdownTransition, UiDropdownApi};\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 {registerDropdown as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerDropdown = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerDropdown};\nexport default registerDropdown;\nexport * from './index';\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./bridge-B4S_D6hV.js";import{t}from"./capability-motion-DQitxnHn.js";import{c as n,f as r,l as i,n as a,s as o,u as s}from"./codecs-Cb1ns_47.js";import{n as c,r as l,s as u,t as d}from"./dom-qAeVl7dc.js";import{i as f,t as p}from"./alpine-machine-BTDXpEr6.js";import{t as m}from"./alpine-data-CytyCyfk.js";import{n as ee}from"./anchored-popover-BXEMsLrA.js";import{n as te,t as h}from"./styles-TfvwVPGw.js";import{t as ne}from"./merge-bindings-C8ewA_FD.js";import{t as g}from"./machine-Dqut4h89.js";import{n as _,t as v}from"./props-change-2xfsIAEN.js";import{t as re}from"./dismissable-layer-BROE-Ln2.js";import{i as y,n as ie,r as ae,t as oe}from"./form-control-DjbUb602.js";import{F as b,I as x,N as S,R as C,a as w,c as T,d as E,f as D,h as O,i as k,m as A,p as j,r as M,t as N}from"./common-Dfj6NCjU.js";var se=null,P=t=>{typeof customElements>`u`||customElements.get(`calendar-date`)||(se??=e(()=>import(`./cally-Z6G-rzr-.js`),[]))},F=[`single`,`range`],ce=[`enhanced`,`native`],I=T,L=[`auto`,`confirm`],R=[`neutral`,`accent`],z=M,B=[`left`,`right`,`top`,`bottom`],V=C,H=E,U={name:r,value:r,startName:r,endName:r,mode:i(F,`single`),placeholder:r,min:r,max:r,today:r,openTo:r,forceOpenTo:a,months:n.clamp(0,12).default(0),firstDayOfWeek:n.clamp(-1,6).default(0),locale:r,format:r.default(`%Y-%m-%d`),rangeSeparator:r.default(`/`),showOutsideDays:a,showWeekNumbers:a,fixedWeeks:a.default(!0),selectableHeader:a,withToday:a,clearable:a,disabled:a,readonly:a,required:a,invalid:a,side:i(x,`bottom`),align:i(N,`start`),offset:n.clamp(-100,100).default(0),gap:n.clamp(0,50).default(4),implementation:i(ce,`enhanced`),variant:i(I,`outline`),color:i(R,`neutral`),radius:i(z,`md`),surface:i(V,`+2`),elevation:i(H,`3`),close:i(L,`auto`),presets:o.array([]),presetsPosition:i(B,`left`),preset:r,presetName:r,triggerClass:r,inputClass:r,popoverClass:r,calendarClass:r,presetsClass:r,presetClass:r,class:r,form:r};i(I,`outline`),i(z,`md`),i(B,`left`);var le=[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`})}})],W=e=>_(e)?.props??null,ue=e=>e.disabled||e.readonly,G=(e,t)=>typeof e[t]==`string`?e[t]:``,de=e=>{let t=G(e,`source`);return t===`calendar`||t===`input`||t===`preset`||t===`today`||t===`props`?t:`clear`},fe=({event:e})=>{let t=W(e);return!!(t&&(v(e,`disabled`)&&t.disabled||v(e,`readonly`)&&t.readonly))},pe=({props:e})=>e.close===`auto`,K=(e,t,n)=>({...e,selection:{value:n,pendingValue:n,previousValue:e.selection.value,source:de(t)},input:{value:G(t,`input`),valid:!0},preset:{value:G(t,`preset`)}}),me=({props:e,context:t,effects:n})=>g({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:pe,effects:`prepareClose`},APPLY:{target:`closing`,effects:`prepareClose`},PROPS_CHANGED:{target:`closing`,guard:fe,effects:`prepareClose`}}},open:{tags:[`visible`,`expanded`,`interactive`,`open`],on:{CLOSE:{target:`closing`,effects:`prepareClose`},TOGGLE:{target:`closing`,effects:`prepareClose`},SELECT:{target:`closing`,guard:pe,effects:`prepareClose`},APPLY:{target:`closing`,effects:`prepareClose`},PROPS_CHANGED:{target:`closing`,guard:fe,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:de(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=W(t);if(n)return v(t,`value`)?{props:n,context:K(e,{type:`PROPS_CHANGED`,source:`props`},n.value)}:{props:n}}},guards:{canOpen:({props:e})=>!ue(e),valueChanged:({event:e})=>v(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}}),he=h({definition:{component:`ui.date-picker`,parts:{root:{base:`relative inline-grid w-full min-w-0`},trigger:{base:[O,k.lg,`text-left`],variants:{radius:w},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:w},defaults:{radius:`md`}},input:{base:[`min-w-0 flex-1 text-sm`,j]},icon:{base:`size-icon shrink-0 fill-current text-surface-ink-muted`},action:{base:D},popover:{base:[b,`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:[A,k.lg],variants:{radius:w},defaults:{radius:`md`}}}}}),q=/^\d{4}-\d{2}-\d{2}$/,J=/^\d{4}-\d{2}-\d{2}\/\d{4}-\d{2}-\d{2}$/,ge=/%[Ymd]/g,_e=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),Y=e=>{let t=0,n=``;for(let r of e.matchAll(/[\s/-]+/g))n+=_e(e.slice(t,r.index)),n+=`(?:\\s|[/-])+`,t=(r.index??0)+r[0].length;return n+_e(e.slice(t))},ve=e=>{let t=[],n=0,r=``;for(let i of e.matchAll(ge)){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`)}`},ye=({input:e,format:t,range:n,separator:r})=>{let i=ve(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)},be=e=>e.replaceAll(`%Y`,`YYYY`).replaceAll(`%m`,`MM`).replaceAll(`%d`,`DD`),xe=({input:e,format:t,separator:n})=>{let r=new Set(`${t.replace(ge,``)}${n}`);return Array.from(e).filter(e=>/[0-9]/.test(e)||/[\s/-]/.test(e)||r.has(e)).join(``)},Se=({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},Ce=({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)}`},we=(e,t,n)=>(J.test(e)?e.split(`/`):[e]).every(e=>q.test(e)&&(!t||e>=t)&&(!n||e<=n)),Te=100,Ee=10,Q=e=>{let[t=``,n=``]=e.split(`/`);return[t,n]},De=()=>new Date().getFullYear(),Oe=()=>`${De()-Te}-01-01`,ke=()=>`${De()+Ee}-12-31`,$=()=>new Date().toISOString().slice(0,10),Ae=(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`)):``,je=e=>({value:e.dataset.value??``,label:e.dataset.label??e.textContent?.trim()??``,start:e.dataset.start??``,end:e.dataset.end??``,disabled:c({value:e.dataset.disabled})}),Me=()=>{let e=null,t=``,n=``,r=null,i=[],a=``,o=``,c=``,f=``,m=!1,h=()=>{if(!e)throw Error(`Date picker has not been initialized.`);return e},g=()=>V.getCommittedSnapshot().props,_=()=>V.getCommittedSnapshot().context,v=()=>{let e=h().querySelector(`[data-ui-date-picker-trigger]`);if(!e)throw Error(`Date picker requires a trigger.`);return e},b=()=>{let e=h().querySelector(`[data-ui-date-picker-input]`);if(!e)throw Error(`Date picker requires an input.`);return e},x=()=>h().querySelector(`[data-ui-date-picker-toggle]`),S=()=>{let e=h().querySelector(`[data-ui-date-picker-popover]`);if(!e)throw Error(`Date picker requires a popover.`);return e},C=()=>h().querySelector(`[data-ui-date-picker-calendar]`),w=()=>h().querySelector(`[data-ui-date-picker-hidden-inputs]`),T=()=>h().querySelector(`[data-ui-date-picker-preset-inputs]`),E=()=>g().mode===`range`,D=()=>g().months||(E()?2:1),O=()=>{let e=Array.from(h().querySelectorAll(`[data-ui-date-picker-preset]`)).map(je).filter(e=>e.value&&e.start&&e.end);return e.length?e:g().presets},k=e=>Ce({value:e,format:g().format,range:E(),separator:g().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=h().querySelector(`[data-ui-date-picker-calendar-heading]`);if(!t)return;let n=g();t.textContent=Ae(e||Q(_().selection.value||n.openTo||n.today||$())[0],n.locale)},M=()=>{let e=C();if(!e)return;let t=g(),n=_(),r=n.selection.pendingValue;customElements.get(`calendar-date`)&&(e.value=r),e.setAttribute(`value`,r),u({el:e,attr:`tentative`,present:E()&&!!r&&!J.test(r)}),e.setAttribute(`months`,String(D())),e.style.setProperty(`--ui-date-picker-month-columns`,String(D())),e.setAttribute(`min`,t.min||Oe()),e.setAttribute(`max`,t.max||ke()),t.today?e.setAttribute(`today`,t.today):e.removeAttribute(`today`);let i=t.forceOpenTo?t.openTo:n.selection.value||t.openTo||t.today||$();e.setAttribute(`focused-date`,Q(i)[0]),t.locale?e.setAttribute(`locale`,t.locale):e.removeAttribute(`locale`),t.firstDayOfWeek>=0&&e.setAttribute(`first-day-of-week`,String(t.firstDayOfWeek));let a=!t.selectableHeader&&D()===1;u({el:e,attr:`data-inline-heading`,present:a,value:`true`}),u({el:e,attr:`data-hide-month-heading`,present:t.selectableHeader&&!E()||a,value:`true`}),u({el:e,attr:`data-fixed-weeks`,present:t.fixedWeeks,value:`true`}),u({el:e,attr:`show-outside-days`,present:t.showOutsideDays||t.fixedWeeks}),u({el:e,attr:`show-week-numbers`,present:t.showWeekNumbers})},N=()=>{let e=_().selection.pendingValue||_().selection.value;h().querySelectorAll(`[data-ui-date-picker-preset]`).forEach(t=>{let n=je(t);u({el:t,attr:`data-selected`,present:(E()?`${n.start}/${n.end}`:n.start)===e,value:`true`}),u({el:t,attr:`data-disabled`,present:n.disabled??!1,value:`true`})})},se=()=>{let e=w();if(!e)return;let t=g(),n=_().selection.value;if(!E()){a=y({container:e,currentKey:a,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===a)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)}),a=n;return}a=y({container:e,currentKey:a,state:{name:t.name,values:n?[n]:[],required:t.required,form:t.form,marker:`data-ui-date-picker-hidden-input`}})},P=()=>{let e=T();if(!e)return;let t=g(),n=A(_().selection.value);o=y({container:e,currentKey:o,state:{name:t.presetName,values:n?[n]:[],form:t.form,marker:`data-ui-date-picker-preset-input`}})},F=()=>{let e=g(),r=_(),i=V.hasTag(`visible`),a=V.hasTag(`expanded`),o=v(),s=b(),l=S();o.id=t,l.id=n,l.dataset.state=a?`open`:`closed`,l.hidden=!i,o.dataset.state=a?`open`:`closed`,ie({el:o,state:e,value:`true`});let u=x()??o;u.setAttribute(`aria-haspopup`,`dialog`),u.setAttribute(`aria-expanded`,a?`true`:`false`),u.setAttribute(`aria-controls`,n),o instanceof HTMLButtonElement&&(o.disabled=e.disabled);let d=V.hasTag(`editing`)?r.input.value:k(r.selection.value);ae({input:s,state:{name:``,value:d,disabled:e.disabled,readonly:e.readonly,required:e.required&&e.mode===`single`,invalid:e.invalid||!r.input.valid}}),s.placeholder=H.effectivePlaceholder(),h().querySelectorAll(`[data-ui-date-picker-clear], [data-ui-date-picker-toggle]`).forEach(t=>{t.disabled=e.disabled}),f=d;let p=h().querySelector(`[data-ui-date-picker-live]`);p&&(p.textContent=c)},ce=()=>{let e=h().querySelector(`[data-ui-date-picker-calendar-today]`),t=h().querySelector(`[data-ui-date-picker-today-day]`);if(!e||!t)return;let n=g().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`)},I=()=>{let e=g(),t=S();t.dataset.uiSurface=e.surface,t.dataset.uiElevation=e.elevation},L=()=>{s({el:h(),schema:U,key:`value`,value:_().selection.value}),F(),M(),j(),ce(),I(),se(),P(),N(),V.hasTag(`visible`)&&r?.sync()},R=()=>{oe({container:w(),fallback:h(),marker:`data-ui-date-picker-hidden-input`}),l({el:h(),name:`ui:change`})},z=(e,t,n=``)=>{g().disabled||g().readonly||V.send({type:`SELECT`,value:e,source:t,preset:n})},B=e=>{let t=g(),n=ye({input:e,format:t.format,range:E(),separator:t.rangeSeparator});return n&&we(n,t.min,t.max)?n:null},V=p({schema:U,hooks:le,createMachine:({props:e})=>me({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,r?.open(),L()},finishOpen:()=>{m&&C()?.focus({preventScroll:!0}),m=!1,l({el:h(),name:`ui:open`})},prepareClose:L,finishClose:()=>{let e=S();r?.close(),e.hidden=!0,m&&v().focus({preventScroll:!0}),m=!1,L(),l({el:h(),name:`ui:close`})},syncInput:F,syncPending:()=>{F(),M(),N()},markInvalid:()=>{b().setCustomValidity(`Enter a date in ${g().format}`),F(),l({el:h(),name:`ui:invalid`})},commitSelection:()=>{b().setCustomValidity(``);let e=_();c=e.selection.value?E()?`Range selected`:`Date selected`:`Date cleared`,L(),R(),l({el:h(),name:e.selection.value?`ui:select`:`ui:clear`})},syncProps:L,syncPresets:()=>{N(),P()}}}),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}),H;return H={...V,get isOpen(){return V.hasTag(`expanded`)},get isEditing(){return V.hasTag(`editing`)},get value(){return V.getCommittedSnapshot().context.selection.value},get pendingValue(){return V.getCommittedSnapshot().context.selection.pendingValue},get preset(){return A(V.getCommittedSnapshot().context.selection.value)},get root(){return ne({inputs:[te({part:he.parts.root,props:V.getCommittedSnapshot().props,className:V.getCommittedSnapshot().props.class}),{"data-ui-date-picker":``,":data-state":()=>H.isOpen?`open`:`closed`}]})},effectivePlaceholder(){let e=V.getCommittedSnapshot().props;if(e.placeholder)return e.placeholder;let t=be(e.format);return e.mode===`range`?`${t}${e.rangeSeparator}${t}`:t},open(e){e?.preventDefault(),e instanceof KeyboardEvent&&(m=!0),V.send(`OPEN`)},close(e){e?.preventDefault(),e instanceof KeyboardEvent&&(m=!0),V.send(`CLOSE`)},toggle(e){e?.preventDefault(),V.send(`TOGGLE`)},select(e,t){t?.preventDefault(),we(e,g().min,g().max)&&(E()?J.test(e):q.test(e))&&z(e,`input`)},selectPreset(e,t){if(t?.preventDefault(),g().disabled||g().readonly)return;let n=O().find(t=>t.value===e);if(!n||n.disabled)return;let r=E()?`${n.start}/${n.end}`:n.start;g().close===`confirm`?V.send({type:`PENDING`,value:r,source:`preset`,preset:e}):z(r,`preset`,e)},selectToday(e){if(e?.preventDefault(),g().disabled||g().readonly)return;let t=g().today||$(),n=E()?`${t}/${t}`:t;g().close===`confirm`?V.send({type:`PENDING`,value:n,source:`today`}):z(n,`today`)},clear(e){e?.preventDefault(),!(g().disabled||g().readonly)&&V.send(`CLEAR`)},cancel(e){e?.preventDefault(),V.send(`CANCEL`),V.send(`CLOSE`)},init(){e=this.$el,t=this.$id(`date-picker-trigger`),n=this.$id(`date-picker-popover`),V.connect(this.$el,this.snapshot),r=ee({reference:v,floating:S,position:()=>g().side,align:()=>g().align,gap:()=>g().gap,offset:()=>g().offset,matchReferenceWidth:!1});let a=v(),o=b(),s=S();d({target:a,event:`click`,cleanup:i,handler:e=>{let t=e.target;t instanceof Element&&t.closest(`[data-ui-date-picker-clear]`)?H.clear(e):H.toggle(e)}}),d({target:a,event:`keydown`,cleanup:i,handler:e=>{let t=e;(t.key===`ArrowDown`||t.key===`Enter`||t.key===` `)&&!H.isOpen?H.open(t):t.key===`Escape`&&H.isOpen&&H.close(t)}}),d({target:h(),event:`keydown`,cleanup:i,handler:e=>{let t=e;t.key===`Escape`&&H.isOpen&&H.close(t)}}),d({target:o,event:`input`,cleanup:i,handler:()=>{let e=o.selectionStart??o.value.length,t=(o.value.slice(0,e).match(/[0-9]/g)??[]).length,n=xe({input:o.value,format:g().format,separator:g().rangeSeparator});if(f.length-n.length!==1&&(n=Se({input:n,format:g().format,range:E(),separator:g().rangeSeparator})),o.value!==n){o.value=n;let e=0,r=n.length;for(let i=0;i<n.length;i+=1)if(/[0-9]/.test(n[i]??``)&&(e+=1),e===t){for(r=i+1;r<n.length&&!/[0-9]/.test(n[r]??``);)r+=1;break}o.setSelectionRange(r,r)}f=n,V.send({type:`INPUT`,input:n});let r=B(n);r&&z(r,`input`)}}),d({target:o,event:`change`,cleanup:i,handler:()=>{let e=B(o.value);e?z(e,`input`):o.value.trim()?V.send({type:`PARSE`,input:o.value}):V.send(`CLEAR`)}}),d({target:s,event:`pointerdown`,cleanup:i,handler:e=>e.stopPropagation()}),d({target:s,event:`click`,cleanup:i,handler:e=>{let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`[data-ui-date-picker-preset]`);n?H.selectPreset(n.dataset.value??``,e):t.closest(`[data-ui-date-picker-clear]`)?H.clear(e):t.closest(`[data-ui-date-picker-cancel]`)?H.cancel(e):t.closest(`[data-ui-date-picker-apply]`)?V.send(`APPLY`):t.closest(`[data-ui-date-picker-today]`)&&H.selectToday(e)}});let l=C();l&&(customElements.whenDefined(`calendar-date`).then(()=>{e&&M()}),d({target:l,event:`change`,cleanup:i,handler:()=>{let e=l.value;E()&&!J.test(e)?(c=`Start date selected`,V.send({type:`PENDING`,value:e,source:`calendar`})):g().close===`confirm`?V.send({type:`PENDING`,value:e,source:`calendar`}):z(e,`calendar`)}}),d({target:l,event:`focusday`,cleanup:i,handler:e=>{let t=e.detail;t instanceof Date&&j(t.toISOString().slice(0,10))}})),i.push(re({isEnabled:()=>H.isOpen,roots:()=>[h(),s],onDismiss:()=>H.close()}));let u=new MutationObserver(()=>V.send(`PRESETS_CHANGED`));u.observe(h(),{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`data-value`,`data-start`,`data-end`,`data-disabled`]}),i.push(()=>u.disconnect()),L()},destroy(){i.forEach(e=>e()),i=[],r?.destroy(),r=null,V.disconnect(),e=null}},H},Ne=m(`UiDatePicker`,Me),Pe=new WeakSet,Fe=e=>{Pe.has(e)||(Pe.add(e),t(e),P(e),Ne(e))};export{Me as n,Fe as t};
|
|
2
|
-
//# sourceMappingURL=entry.generated-D3w3QaSO.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"mappings":"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","names":[],"ignoreList":[],"sources":["../../../../../../../../client/src/capabilities/calendar.ts","../../../../../../../../client/src/components/date-picker/contract.ts","../../../../../../../../client/src/components/date-picker/machine.ts","../../../../../../../../client/src/components/date-picker/styles.ts","../../../../../../../../client/src/components/date-picker/value.ts","../../../../../../../../client/src/components/date-picker/index.ts","../../../../../../../../client/src/components/date-picker/entry.generated.ts"],"sourcesContent":["import type {Alpine as AlpineType} from 'alpinejs';\n\nlet registration: Promise<unknown> | null = null;\n\nconst registerCalendarCapability = (_AlpineInstance: AlpineType): void => {\n if (typeof customElements === 'undefined' || customElements.get('calendar-date')) return;\n registration ??= import('cally');\n};\n\nexport {registerCalendarCapability};\n","import {bool, json, number, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n ALIGNMENTS,\n COMPONENT_RADII,\n CONTROL_VARIANTS,\n ELEVATION_REFERENCES,\n POSITIONS,\n SURFACE_REFERENCES,\n type Alignment,\n type ComponentRadius,\n type ControlVariant,\n type ElevationReference,\n type Position,\n type SurfaceReference,\n} from '../common';\n\nconst DATE_PICKER_MODES = ['single', 'range'] as const;\nconst DATE_PICKER_IMPLEMENTATIONS = ['enhanced', 'native'] as const;\nconst DATE_PICKER_VARIANTS = CONTROL_VARIANTS;\nconst DATE_PICKER_CLOSE = ['auto', 'confirm'] as const;\nconst DATE_PICKER_COLORS = ['neutral', 'accent'] as const;\nconst DATE_PICKER_RADII = COMPONENT_RADII;\nconst DATE_PICKER_PRESETS_POSITIONS = ['left', 'right', 'top', 'bottom'] as const;\nconst DATE_PICKER_SURFACES = SURFACE_REFERENCES;\nconst DATE_PICKER_ELEVATIONS = ELEVATION_REFERENCES;\n\ntype DatePickerMode = typeof DATE_PICKER_MODES[number];\ntype DatePickerImplementation = typeof DATE_PICKER_IMPLEMENTATIONS[number];\ntype DatePickerVariant = ControlVariant;\ntype DatePickerClose = typeof DATE_PICKER_CLOSE[number];\ntype DatePickerColor = typeof DATE_PICKER_COLORS[number];\ntype DatePickerRadius = ComponentRadius;\ntype DatePickerPresetsPosition = typeof DATE_PICKER_PRESETS_POSITIONS[number];\ntype DatePickerSide = Position;\ntype DatePickerAlign = Alignment;\ntype DatePickerSurface = SurfaceReference;\ntype DatePickerElevation = ElevationReference;\n\ntype DatePickerPreset = {\n value: string;\n label: string;\n start: string;\n end: string;\n disabled?: boolean;\n};\n\nconst datePickerSchema = {\n name: string,\n value: string,\n startName: string,\n endName: string,\n mode: oneOf(DATE_PICKER_MODES, 'single' as DatePickerMode),\n placeholder: string,\n min: string,\n max: string,\n today: string,\n openTo: string,\n forceOpenTo: bool,\n months: number.clamp(0, 12).default(0),\n firstDayOfWeek: number.clamp(-1, 6).default(0),\n locale: string,\n format: string.default('%Y-%m-%d'),\n rangeSeparator: string.default('/'),\n showOutsideDays: bool,\n showWeekNumbers: bool,\n fixedWeeks: bool.default(true),\n selectableHeader: bool,\n withToday: bool,\n clearable: bool,\n disabled: bool,\n readonly: bool,\n required: bool,\n invalid: bool,\n side: oneOf(POSITIONS, 'bottom' as DatePickerSide),\n align: oneOf(ALIGNMENTS, 'start' as DatePickerAlign),\n offset: number.clamp(-100, 100).default(0),\n gap: number.clamp(0, 50).default(4),\n implementation: oneOf(DATE_PICKER_IMPLEMENTATIONS, 'enhanced' as DatePickerImplementation),\n variant: oneOf(DATE_PICKER_VARIANTS, 'outline' as DatePickerVariant),\n color: oneOf(DATE_PICKER_COLORS, 'neutral' as DatePickerColor),\n radius: oneOf(DATE_PICKER_RADII, 'md' as DatePickerRadius),\n surface: oneOf(DATE_PICKER_SURFACES, '+2' as DatePickerSurface),\n elevation: oneOf(DATE_PICKER_ELEVATIONS, '3' as DatePickerElevation),\n close: oneOf(DATE_PICKER_CLOSE, 'auto' as DatePickerClose),\n presets: json.array<DatePickerPreset>([]),\n presetsPosition: oneOf(DATE_PICKER_PRESETS_POSITIONS, 'left' as DatePickerPresetsPosition),\n preset: string,\n presetName: string,\n triggerClass: string,\n inputClass: string,\n popoverClass: string,\n calendarClass: string,\n presetsClass: string,\n presetClass: string,\n class: string,\n form: string,\n};\n\nconst datePickerPresetSchema = {\n value: string,\n label: string,\n start: string,\n end: string,\n disabled: bool,\n class: string,\n};\n\nconst datePickerTriggerSchema = {\n variant: oneOf(DATE_PICKER_VARIANTS, 'outline' as DatePickerVariant),\n radius: oneOf(DATE_PICKER_RADII, 'md' as DatePickerRadius),\n class: string,\n};\n\nconst datePickerPresetsSchema = {\n position: oneOf(DATE_PICKER_PRESETS_POSITIONS, 'left' as DatePickerPresetsPosition),\n class: string,\n};\n\ntype DatePickerProps = SchemaToProps<typeof datePickerSchema>;\ntype DatePickerPresetProps = SchemaToProps<typeof datePickerPresetSchema>;\ntype DatePickerPresetsProps = SchemaToProps<typeof datePickerPresetsSchema>;\ntype DatePickerTriggerProps = SchemaToProps<typeof datePickerTriggerSchema>;\n\nexport {\n DATE_PICKER_CLOSE,\n DATE_PICKER_COLORS,\n DATE_PICKER_ELEVATIONS,\n DATE_PICKER_IMPLEMENTATIONS,\n DATE_PICKER_MODES,\n DATE_PICKER_PRESETS_POSITIONS,\n DATE_PICKER_RADII,\n DATE_PICKER_SURFACES,\n DATE_PICKER_VARIANTS,\n datePickerPresetSchema,\n datePickerPresetsSchema,\n datePickerSchema,\n datePickerTriggerSchema,\n};\nexport type {\n DatePickerAlign,\n DatePickerClose,\n DatePickerColor,\n DatePickerElevation,\n DatePickerImplementation,\n DatePickerMode,\n DatePickerPreset,\n DatePickerPresetProps,\n DatePickerPresetsPosition,\n DatePickerPresetsProps,\n DatePickerProps,\n DatePickerRadius,\n DatePickerSide,\n DatePickerSurface,\n DatePickerTriggerProps,\n DatePickerVariant,\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 {DatePickerProps} from './contract';\n\ntype SelectionSource = 'calendar' | 'input' | 'preset' | 'today' | 'clear' | 'props';\n\ntype DatePickerContext = {\n selection: {\n value: string;\n pendingValue: string;\n previousValue: string;\n source: SelectionSource;\n };\n input: {value: string; valid: boolean};\n preset: {value: string};\n};\n\ntype DatePickerMachineEffects = {\n prepareOpen(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n finishOpen(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n prepareClose(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n finishClose(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n syncInput(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n syncPending(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n markInvalid(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n commitSelection(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n syncProps(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n syncPresets(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n};\n\ntype CreateDatePickerMachineOptions = {\n props: DatePickerProps;\n context: DatePickerContext;\n effects: DatePickerMachineEffects;\n};\n\nconst openingHook = defineHook({\n name: 'opening',\n state: 'disclosure.opening',\n project: () => ({}),\n onDone: 'OPENING_DONE',\n onError: 'OPENING_ERROR',\n sends: {close: () => ({type: 'CLOSE'})},\n} satisfies TransitionHookDefinition<DatePickerContext, DatePickerProps, Record<string, never>, 'opening'>);\n\nconst closingHook = defineHook({\n name: 'closing',\n state: 'disclosure.closing',\n project: () => ({}),\n onDone: 'CLOSING_DONE',\n onError: 'CLOSING_ERROR',\n sends: {open: () => ({type: 'OPEN'})},\n} satisfies TransitionHookDefinition<DatePickerContext, DatePickerProps, Record<string, never>, 'closing'>);\n\nconst parsingHook = defineHook({\n name: 'parsing',\n state: 'feature.parsing',\n project: (snapshot) => ({input: snapshot.context.input.value}),\n onDone: 'PARSING_DONE',\n onError: 'PARSING_ERROR',\n sends: {\n select: (value: string) => ({type: 'SELECT', value, source: 'input'}),\n clear: () => ({type: 'CLEAR'}),\n },\n} satisfies TransitionHookDefinition<DatePickerContext, DatePickerProps, {input: string}, 'parsing'>);\n\nconst selectingHook = defineHook({\n name: 'selecting',\n state: 'feature.selecting',\n project: (snapshot) => ({\n value: snapshot.context.selection.value,\n previousValue: snapshot.context.selection.previousValue,\n source: snapshot.context.selection.source,\n preset: snapshot.context.preset.value,\n }),\n onDone: 'SELECTING_DONE',\n onError: 'SELECTING_ERROR',\n sends: {\n select: (value: string) => ({type: 'SELECT', value, source: 'input'}),\n clear: () => ({type: 'CLEAR'}),\n close: () => ({type: 'CLOSE'}),\n },\n} satisfies TransitionHookDefinition<DatePickerContext, DatePickerProps, {\n value: string;\n previousValue: string;\n source: SelectionSource;\n preset: string;\n}, 'selecting'>);\n\nconst datePickerHooks = [openingHook, closingHook, parsingHook, selectingHook] as const;\n\nconst nextProps = (event: MachineEventObject): DatePickerProps | null => propsChangedEvent<DatePickerProps>(event)?.props ?? null;\nconst blocked = (props: DatePickerProps): boolean => props.disabled || props.readonly;\nconst eventString = (event: MachineEventObject, key: string): string => (\n typeof event[key] === 'string' ? event[key] : ''\n);\nconst sourceFrom = (event: MachineEventObject): SelectionSource => {\n const source = eventString(event, 'source');\n return source === 'calendar' || source === 'input' || source === 'preset' || source === 'today' || source === 'props'\n ? source\n : 'clear';\n};\n\nconst shouldCloseFromProps = ({event}: MachineScope<DatePickerContext, DatePickerProps>): boolean => {\n const props = nextProps(event);\n return Boolean(props && (\n (propsChanged<DatePickerProps>(event, 'disabled') && props.disabled)\n || (propsChanged<DatePickerProps>(event, 'readonly') && props.readonly)\n ));\n};\n\nconst shouldAutoClose = ({props}: MachineScope<DatePickerContext, DatePickerProps>): boolean => props.close === 'auto';\n\nconst selectionUpdate = (\n context: DatePickerContext,\n event: MachineEventObject,\n value: string,\n): DatePickerContext => ({\n ...context,\n selection: {\n value,\n pendingValue: value,\n previousValue: context.selection.value,\n source: sourceFrom(event),\n },\n input: {value: eventString(event, 'input'), valid: true},\n preset: {value: eventString(event, 'preset')},\n});\n\nconst createDatePickerMachine = ({\n props,\n context,\n effects,\n}: CreateDatePickerMachineOptions): Machine<DatePickerContext, DatePickerProps> => createMachine({\n type: 'parallel',\n states: {\n disclosure: {\n initial: 'closed',\n states: {\n closed: {\n tags: ['closed'],\n on: {\n OPEN: {target: 'opening', guard: 'canOpen', reduce: 'beginOpen', effects: 'prepareOpen'},\n TOGGLE: {target: 'opening', guard: 'canOpen', reduce: 'beginOpen', effects: 'prepareOpen'},\n },\n },\n opening: {\n tags: ['visible', 'expanded', 'interactive', 'transitioning'],\n on: {\n OPENING_DONE: {target: 'open', effects: 'finishOpen'},\n OPENING_ERROR: {target: 'open', effects: 'finishOpen'},\n CLOSE: {target: 'closing', effects: 'prepareClose'},\n TOGGLE: {target: 'closing', effects: 'prepareClose'},\n SELECT: {target: 'closing', guard: shouldAutoClose, effects: 'prepareClose'},\n APPLY: {target: 'closing', effects: 'prepareClose'},\n PROPS_CHANGED: {target: 'closing', guard: shouldCloseFromProps, effects: 'prepareClose'},\n },\n },\n open: {\n tags: ['visible', 'expanded', 'interactive', 'open'],\n on: {\n CLOSE: {target: 'closing', effects: 'prepareClose'},\n TOGGLE: {target: 'closing', effects: 'prepareClose'},\n SELECT: {target: 'closing', guard: shouldAutoClose, effects: 'prepareClose'},\n APPLY: {target: 'closing', effects: 'prepareClose'},\n PROPS_CHANGED: {target: 'closing', guard: shouldCloseFromProps, effects: 'prepareClose'},\n },\n },\n closing: {\n tags: ['visible', 'transitioning'],\n on: {\n CLOSING_DONE: {target: 'closed', effects: 'finishClose'},\n CLOSING_ERROR: {target: 'closed', effects: 'finishClose'},\n OPEN: {target: 'opening', guard: 'canOpen', reduce: 'beginOpen', effects: 'prepareOpen'},\n TOGGLE: {target: 'opening', guard: 'canOpen', reduce: 'beginOpen', effects: 'prepareOpen'},\n },\n },\n },\n },\n feature: {\n initial: 'idle',\n states: {\n idle: {\n on: {\n INPUT: {target: 'editing', reduce: 'setInput', effects: 'syncInput'},\n PENDING: {target: 'editing', reduce: 'setPending', effects: 'syncPending'},\n PARSE: {target: 'parsing', reduce: 'setInvalidInput', effects: 'markInvalid'},\n SELECT: {target: 'selecting', reduce: 'select', effects: 'commitSelection'},\n CLEAR: {target: 'selecting', reduce: 'clear', effects: 'commitSelection'},\n APPLY: {target: 'selecting', reduce: 'apply', effects: 'commitSelection'},\n PROPS_CHANGED: [\n {target: 'selecting', guard: 'valueChanged', reduce: 'replaceProps', effects: 'commitSelection'},\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n PRESETS_CHANGED: {effects: 'syncPresets'},\n },\n },\n editing: {\n tags: ['editing'],\n on: {\n INPUT: {target: 'editing', reduce: 'setInput', effects: 'syncInput'},\n PENDING: {target: 'editing', reduce: 'setPending', effects: 'syncPending'},\n PARSE: {target: 'parsing', reduce: 'setInvalidInput', effects: 'markInvalid'},\n SELECT: {target: 'selecting', reduce: 'select', effects: 'commitSelection'},\n CLEAR: {target: 'selecting', reduce: 'clear', effects: 'commitSelection'},\n APPLY: {target: 'selecting', reduce: 'apply', effects: 'commitSelection'},\n CANCEL: {target: 'idle', reduce: 'resetDraft', effects: 'syncPending'},\n CLOSE: {target: 'idle', reduce: 'resetDraft', effects: 'syncPending'},\n PROPS_CHANGED: [\n {target: 'selecting', guard: 'valueChanged', reduce: 'replaceProps', effects: 'commitSelection'},\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n PRESETS_CHANGED: {effects: 'syncPresets'},\n },\n },\n parsing: {\n tags: ['editing', 'parsing'],\n on: {\n SELECT: {target: 'selecting', reduce: 'select', effects: 'commitSelection'},\n CLEAR: {target: 'selecting', reduce: 'clear', effects: 'commitSelection'},\n APPLY: {target: 'selecting', reduce: 'apply', effects: 'commitSelection'},\n INPUT: {target: 'editing', reduce: 'setInput', effects: 'syncInput'},\n PARSING_DONE: 'editing',\n PARSING_ERROR: 'editing',\n CLOSE: {target: 'idle', reduce: 'resetDraft', effects: 'syncPending'},\n PROPS_CHANGED: [\n {target: 'selecting', guard: 'valueChanged', reduce: 'replaceProps', effects: 'commitSelection'},\n {target: 'editing', reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n selecting: {\n tags: ['selecting'],\n on: {\n SELECT: {target: 'selecting', reduce: 'select', effects: 'commitSelection'},\n CLEAR: {target: 'selecting', reduce: 'clear', effects: 'commitSelection'},\n APPLY: {target: 'selecting', reduce: 'apply', effects: 'commitSelection'},\n SELECTING_DONE: 'idle',\n SELECTING_ERROR: 'idle',\n PROPS_CHANGED: [\n {target: 'selecting', guard: 'valueChanged', reduce: 'replaceProps', effects: 'commitSelection'},\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n PRESETS_CHANGED: {effects: 'syncPresets'},\n },\n },\n },\n },\n },\n}, {\n context,\n props,\n reducers: {\n beginOpen: ({context: current}) => ({context: {\n ...current,\n selection: {...current.selection, pendingValue: current.selection.value},\n }}),\n setInput: ({context: current, event}) => ({context: {\n ...current,\n input: {value: eventString(event, 'input'), valid: true},\n }}),\n setInvalidInput: ({context: current, event}) => ({context: {\n ...current,\n input: {value: eventString(event, 'input'), valid: false},\n }}),\n setPending: ({context: current, event}) => ({context: {\n ...current,\n selection: {\n ...current.selection,\n pendingValue: eventString(event, 'value'),\n source: sourceFrom(event),\n },\n preset: {value: eventString(event, 'preset')},\n }}),\n select: ({context: current, event}) => ({context: selectionUpdate(\n current,\n event,\n eventString(event, 'value'),\n )}),\n clear: ({context: current}) => ({context: selectionUpdate(current, {type: 'CLEAR'}, '')}),\n apply: ({context: current}) => ({context: selectionUpdate(\n current,\n {type: 'SELECT', source: current.selection.source},\n current.selection.pendingValue,\n )}),\n resetDraft: ({context: current}) => ({context: {\n ...current,\n selection: {...current.selection, pendingValue: current.selection.value},\n input: {value: '', valid: true},\n }}),\n replaceProps: ({context: current, event}) => {\n const next = nextProps(event);\n if (!next) return undefined;\n if (!propsChanged<DatePickerProps>(event, 'value')) return {props: next};\n return {\n props: next,\n context: selectionUpdate(current, {type: 'PROPS_CHANGED', source: 'props'}, next.value),\n };\n },\n },\n guards: {\n canOpen: ({props: current}) => !blocked(current),\n valueChanged: ({event}) => propsChanged<DatePickerProps>(event, 'value'),\n },\n effects: {\n prepareOpen: effects.prepareOpen,\n finishOpen: effects.finishOpen,\n prepareClose: effects.prepareClose,\n finishClose: effects.finishClose,\n syncInput: effects.syncInput,\n syncPending: effects.syncPending,\n markInvalid: effects.markInvalid,\n commitSelection: effects.commitSelection,\n syncProps: effects.syncProps,\n syncPresets: effects.syncPresets,\n },\n});\n\nexport {createDatePickerMachine, datePickerHooks};\nexport type {\n CreateDatePickerMachineOptions,\n DatePickerContext,\n DatePickerMachineEffects,\n SelectionSource,\n};\n","import {defineStyles} from '../../runtime';\nimport {\n CONTROL_MIN_SIZE_CLASSES,\n CONTROL_RADIUS_CLASSES,\n FIELD_CONTROL_ACTION_CLASSES,\n FIELD_CONTROL_INPUT_CLASSES,\n FIELD_CONTROL_NATIVE_CLASSES,\n FIELD_CONTROL_ROOT_CLASSES,\n OPTION_ITEM_CLASSES,\n POPOVER_GEOMETRY_CLASSES,\n} from '../common';\n\nconst datePickerStyles = defineStyles({definition: {\n component: 'ui.date-picker',\n parts: {\n root: {\n base: 'relative inline-grid w-full min-w-0',\n },\n trigger: {\n base: [\n FIELD_CONTROL_ROOT_CLASSES,\n CONTROL_MIN_SIZE_CLASSES.lg,\n 'text-left',\n ],\n variants: {\n radius: CONTROL_RADIUS_CLASSES,\n },\n defaults: {\n radius: 'md',\n },\n },\n customTrigger: {\n base: [\n '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',\n ],\n variants: {\n radius: CONTROL_RADIUS_CLASSES,\n },\n defaults: {\n radius: 'md',\n },\n },\n input: {\n base: [\n 'min-w-0 flex-1 text-sm',\n FIELD_CONTROL_INPUT_CLASSES,\n ],\n },\n icon: {\n base: 'size-icon shrink-0 fill-current text-surface-ink-muted',\n },\n action: {\n base: FIELD_CONTROL_ACTION_CLASSES,\n },\n popover: {\n base: [\n POPOVER_GEOMETRY_CLASSES,\n 'max-h-lg overflow-hidden rounded-overlay-sm',\n ],\n },\n panel: {\n base: 'grid min-w-72 max-w-[calc(100vw-2rem)] gap-0 overflow-hidden',\n variants: {\n hasPresets: {\n true: '',\n false: '',\n },\n presetsPosition: {\n left: '',\n right: '',\n top: '',\n bottom: '',\n },\n },\n compounds: [\n {when: {hasPresets: true, presetsPosition: 'left'}, class: 'sm:grid-cols-[minmax(9rem,11rem)_auto]'},\n {when: {hasPresets: true, presetsPosition: 'right'}, class: 'sm:grid-cols-[auto_minmax(9rem,11rem)]'},\n ],\n defaults: {\n hasPresets: false,\n presetsPosition: 'left',\n },\n },\n calendarWrap: {\n base: 'relative grid size-full place-items-center overflow-x-auto overflow-y-auto p-popover-padding',\n },\n calendar: {\n base: 'grid max-w-full gap-2 text-sm',\n },\n presets: {\n base: [\n 'grid content-start gap-1 p-popover-padding',\n ],\n },\n preset: {\n base: OPTION_ITEM_CLASSES,\n },\n footer: {\n base: 'flex items-center justify-end gap-2 p-popover-padding',\n },\n nativeWrapper: {\n base: 'relative w-full min-w-0',\n },\n native: {\n base: [\n FIELD_CONTROL_NATIVE_CLASSES,\n CONTROL_MIN_SIZE_CLASSES.lg,\n ],\n variants: {\n radius: CONTROL_RADIUS_CLASSES,\n },\n defaults: {\n radius: 'md',\n },\n },\n },\n}});\n\nexport {datePickerStyles};\n","type DateFormatToken = '%Y' | '%m' | '%d';\n\ntype CompiledFormat = {\n source: string;\n tokens: DateFormatToken[];\n};\n\nconst ISO_DATE = /^\\d{4}-\\d{2}-\\d{2}$/;\nconst ISO_RANGE = /^\\d{4}-\\d{2}-\\d{2}\\/\\d{4}-\\d{2}-\\d{2}$/;\nconst TOKEN_PATTERN = /%[Ymd]/g;\n\nconst escapeRegex = (value: string): string => value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\nconst compileLiteral = (value: string): string => {\n let cursor = 0;\n let source = '';\n for (const match of value.matchAll(/[\\s/-]+/g)) {\n source += escapeRegex(value.slice(cursor, match.index));\n source += '(?:\\\\s|[/-])+';\n cursor = (match.index ?? 0) + match[0].length;\n }\n return source + escapeRegex(value.slice(cursor));\n};\n\nconst compileFormat = (format: string): CompiledFormat => {\n const tokens: DateFormatToken[] = [];\n let cursor = 0;\n let source = '';\n for (const match of format.matchAll(TOKEN_PATTERN)) {\n source += compileLiteral(format.slice(cursor, match.index));\n const token = match[0] as DateFormatToken;\n tokens.push(token);\n source += token === '%Y' ? '(\\\\d{4})' : '(\\\\d{2})';\n cursor = (match.index ?? 0) + token.length;\n }\n source += compileLiteral(format.slice(cursor));\n return {source, tokens};\n};\n\nconst isoFromGroups = (groups: string[], tokens: DateFormatToken[]): string | null => {\n const values = Object.fromEntries(tokens.map((token, index) => [token, groups[index] ?? '']));\n const year = Number(values['%Y']);\n const month = Number(values['%m']);\n const day = Number(values['%d']);\n if (!year || !month || !day || new Set(tokens).size !== 3) return null;\n const date = new Date(Date.UTC(year, month - 1, day));\n if (date.getUTCFullYear() !== year || date.getUTCMonth() !== month - 1 || date.getUTCDate() !== day) return null;\n return `${String(year).padStart(4, '0')}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`;\n};\n\nconst parseDateValue = ({\n input,\n format,\n range,\n separator,\n}: {\n input: string;\n format: string;\n range: boolean;\n separator: string;\n}): string | null => {\n const compiled = compileFormat(format);\n if (!range) {\n const match = input.trim().match(new RegExp(`^${compiled.source}$`));\n return match ? isoFromGroups(match.slice(1), compiled.tokens) : null;\n }\n const match = input.trim().match(new RegExp(\n `^${compiled.source}${compileLiteral(separator)}${compiled.source}$`,\n ));\n if (!match) return null;\n const width = compiled.tokens.length;\n const start = isoFromGroups(match.slice(1, width + 1), compiled.tokens);\n const end = isoFromGroups(match.slice(width + 1), compiled.tokens);\n return start && end && start <= end ? `${start}/${end}` : null;\n};\n\nconst formatIsoDate = (value: string, format: string): string => {\n if (!ISO_DATE.test(value)) return value;\n const [year = '', month = '', day = ''] = value.split('-');\n return format.replaceAll('%Y', year).replaceAll('%m', month).replaceAll('%d', day);\n};\n\nconst formatDatePlaceholder = (format: string): string => format\n .replaceAll('%Y', 'YYYY')\n .replaceAll('%m', 'MM')\n .replaceAll('%d', 'DD');\n\nconst sanitizeDateInput = ({\n input,\n format,\n separator,\n}: {\n input: string;\n format: string;\n separator: string;\n}): string => {\n const configuredLiterals = new Set(`${format.replace(TOKEN_PATTERN, '')}${separator}`);\n return Array.from(input).filter((character) => (\n /[0-9]/.test(character)\n || /[\\s/-]/.test(character)\n || configuredLiterals.has(character)\n )).join('');\n};\n\nconst maskDateInput = ({\n input,\n format,\n range,\n separator,\n}: {\n input: string;\n format: string;\n range: boolean;\n separator: string;\n}): string => {\n const endpointMask = format\n .replaceAll('%Y', '9999')\n .replaceAll('%m', '99')\n .replaceAll('%d', '99');\n const mask = range ? `${endpointMask}${separator}${endpointMask}` : endpointMask;\n const digits = input.match(/[0-9]/g) ?? [];\n let digitIndex = 0;\n let output = '';\n\n for (let index = 0; index < mask.length; index += 1) {\n const character = mask[index] ?? '';\n if (character === '9') {\n const digit = digits[digitIndex];\n if (digit === undefined) break;\n output += digit;\n digitIndex += 1;\n continue;\n }\n if (digitIndex > 0 && mask.slice(index + 1).includes('9')) output += character;\n }\n return output;\n};\n\nconst formatDateValue = ({\n value,\n format,\n range,\n separator,\n}: {\n value: string;\n format: string;\n range: boolean;\n separator: string;\n}): string => {\n if (!value) return '';\n if (!range) return formatIsoDate(value, format);\n if (!ISO_RANGE.test(value)) return value;\n const [start = '', end = ''] = value.split('/');\n return `${formatIsoDate(start, format)}${separator}${formatIsoDate(end, format)}`;\n};\n\nconst withinDateBounds = (value: string, min: string, max: string): boolean => {\n const dates = ISO_RANGE.test(value) ? value.split('/') : [value];\n return dates.every((date) => ISO_DATE.test(date) && (!min || date >= min) && (!max || date <= max));\n};\n\nexport {\n formatDatePlaceholder,\n formatDateValue,\n ISO_DATE,\n ISO_RANGE,\n maskDateInput,\n parseDateValue,\n sanitizeDateInput,\n withinDateBounds,\n};\n","import type Alpine from 'alpinejs';\n\nimport {\n type AlpineMachine,\n createAlpineMachine,\n defineAlpineData,\n type MachineSnapshot,\n reflectSchemaProp,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {createAnchoredPopoverSurface, type AnchoredPopoverSurface} from '@client/runtime/anchored-popover';\nimport {addDismissableLayer} from '@client/runtime/dismissable-layer';\nimport {\n dispatchNativeControlChange,\n syncControlPresence,\n syncNativeControl,\n syncRepeatedHiddenInputs,\n} from '@client/runtime/form-control';\nimport {mergeBindings, type BindingObject} from '@client/runtime/merge-bindings';\nimport {resolveStyle} from '@client/runtime/styles';\nimport {addListener, asBool, dispatch, type CleanupStack, setPresence} from '@client/utils';\nimport {datePickerSchema, type DatePickerPreset, type DatePickerProps} from './contract';\nimport {\n createDatePickerMachine,\n type DatePickerContext,\n datePickerHooks,\n type SelectionSource,\n} from './machine';\nimport {datePickerStyles} from './styles';\nimport {\n formatDatePlaceholder,\n formatDateValue,\n ISO_DATE,\n ISO_RANGE,\n maskDateInput,\n parseDateValue,\n sanitizeDateInput,\n withinDateBounds,\n} from './value';\n\ntype DatePickerTransitionName = (typeof datePickerHooks)[number]['name'];\ntype DatePickerTransition<TName extends DatePickerTransitionName = DatePickerTransitionName> = TransitionForHook<\n Extract<(typeof datePickerHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\ntype CalendarElement = HTMLElement & {\n value: string;\n focus(options?: FocusOptions & {target?: 'day' | 'next' | 'previous'}): void;\n};\n\ntype PopoverElement = HTMLElement & {showPopover(): void; hidePopover(): void};\n\n/**\n * Public Alpine API for `ui.datePicker`.\n *\n * @public\n */\ninterface UiDatePickerApi {\n /** Whether the picker is opening or fully open. */\n readonly isOpen: boolean;\n /** Whether the user is editing an uncommitted value. */\n readonly isEditing: boolean;\n /** Canonical ISO date or ISO date range. */\n readonly value: string;\n /** Canonical value currently staged in confirm mode. */\n readonly pendingValue: string;\n /** Identifier of the selected preset, when one matches. */\n readonly preset: string;\n /** Opens the calendar unless the picker is disabled or readonly. */\n open(event?: Event): void;\n /** Closes the calendar and restores focus after keyboard dismissal. */\n close(event?: Event): void;\n /** Reverses the current disclosure lifecycle. */\n toggle(event?: Event): void;\n /** Selects a canonical ISO date or ISO range. */\n select(value: string, event?: Event): void;\n /** Selects the preset identified by its stable value. */\n selectPreset(value: string, event?: Event): void;\n /** Selects the configured today value. */\n selectToday(event?: Event): void;\n /** Clears the committed date, preset, and submitted controls. */\n clear(event?: Event): void;\n /** Discards a pending confirm-mode selection and closes the calendar. */\n cancel(event?: Event): void;\n}\n\ntype DatePickerData = AlpineMachine<DatePickerContext, DatePickerProps, typeof datePickerHooks>\n & UiDatePickerApi\n & {\n readonly root: BindingObject;\n effectivePlaceholder(): string;\n init(): void;\n destroy(): void;\n };\n\nconst YEAR_OPTION_PAST_OFFSET = 100;\nconst YEAR_OPTION_FUTURE_OFFSET = 10;\n\nconst splitRange = (value: string): [string, string] => {\n const [start = '', end = ''] = value.split('/');\n return [start, end];\n};\nconst currentYear = (): number => new Date().getFullYear();\nconst defaultMinDate = (): string => `${currentYear() - YEAR_OPTION_PAST_OFFSET}-01-01`;\nconst defaultMaxDate = (): string => `${currentYear() + YEAR_OPTION_FUTURE_OFFSET}-12-31`;\nconst todayIsoDate = (): string => new Date().toISOString().slice(0, 10);\n\nconst formatMonthHeading = (value: string, locale: string): string => {\n if (!ISO_DATE.test(value)) return '';\n return new Intl.DateTimeFormat(locale || undefined, {\n month: 'long',\n timeZone: 'UTC',\n year: 'numeric',\n }).format(new Date(`${value}T00:00:00.000Z`));\n};\n\nconst presetFromElement = (el: HTMLElement): DatePickerPreset => ({\n value: el.dataset.value ?? '',\n label: el.dataset.label ?? el.textContent?.trim() ?? '',\n start: el.dataset.start ?? '',\n end: el.dataset.end ?? '',\n disabled: asBool({value: el.dataset.disabled}),\n});\n\nconst UiDatePicker = (): TrellisAlpineComponent<DatePickerData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let triggerId = '';\n let popoverId = '';\n let popover: AnchoredPopoverSurface | null = null;\n let cleanup: CleanupStack = [];\n let hiddenInputsKey = '';\n let presetInputKey = '';\n let liveMessage = '';\n let lastInputValue = '';\n let restoreFocusAfterClose = false;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Date picker has not been initialized.');\n return rootEl;\n };\n const currentProps = (): Readonly<DatePickerProps> => bridge.getCommittedSnapshot().props;\n const currentContext = (): Readonly<DatePickerContext> => bridge.getCommittedSnapshot().context;\n const trigger = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-date-picker-trigger]');\n if (!el) throw new Error('Date picker requires a trigger.');\n return el;\n };\n const input = (): HTMLInputElement => {\n const el = root().querySelector<HTMLInputElement>('[data-ui-date-picker-input]');\n if (!el) throw new Error('Date picker requires an input.');\n return el;\n };\n const toggleButton = (): HTMLButtonElement | null => root().querySelector('[data-ui-date-picker-toggle]');\n const popoverEl = (): PopoverElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-date-picker-popover]');\n if (!el) throw new Error('Date picker requires a popover.');\n return el as PopoverElement;\n };\n const calendar = (): CalendarElement | null => root().querySelector('[data-ui-date-picker-calendar]');\n const hiddenInputsEl = (): HTMLElement | null => root().querySelector('[data-ui-date-picker-hidden-inputs]');\n const presetInputsEl = (): HTMLElement | null => root().querySelector('[data-ui-date-picker-preset-inputs]');\n const isRange = (): boolean => currentProps().mode === 'range';\n const effectiveMonths = (): number => currentProps().months || (isRange() ? 2 : 1);\n const presetItems = (): DatePickerPreset[] => {\n const items = Array.from(root().querySelectorAll<HTMLElement>('[data-ui-date-picker-preset]'))\n .map(presetFromElement)\n .filter((preset) => preset.value && preset.start && preset.end);\n return items.length ? items : currentProps().presets;\n };\n const formatted = (value: string): string => formatDateValue({\n value,\n format: currentProps().format,\n range: isRange(),\n separator: currentProps().rangeSeparator,\n });\n const selectedPreset = (value: string): string => {\n const match = presetItems().find((preset) => (\n isRange() ? `${preset.start}/${preset.end}` : preset.start\n ) === value);\n const custom = presetItems().find((preset) => preset.value === 'custom');\n return match?.value ?? (value && custom ? 'custom' : '');\n };\n const syncCalendarHeading = (focusedDate?: string): void => {\n const heading = root().querySelector<HTMLElement>('[data-ui-date-picker-calendar-heading]');\n if (!heading) return;\n const props = currentProps();\n const value = focusedDate || splitRange(currentContext().selection.value || props.openTo || props.today || todayIsoDate())[0];\n heading.textContent = formatMonthHeading(value, props.locale);\n };\n const syncCalendar = (): void => {\n const el = calendar();\n if (!el) return;\n const props = currentProps();\n const context = currentContext();\n const value = context.selection.pendingValue;\n if (customElements.get('calendar-date')) el.value = value;\n el.setAttribute('value', value);\n setPresence({el, attr: 'tentative', present: isRange() && Boolean(value) && !ISO_RANGE.test(value)});\n el.setAttribute('months', String(effectiveMonths()));\n el.style.setProperty('--ui-date-picker-month-columns', String(effectiveMonths()));\n el.setAttribute('min', props.min || defaultMinDate());\n el.setAttribute('max', props.max || defaultMaxDate());\n if (props.today) el.setAttribute('today', props.today); else el.removeAttribute('today');\n const focused = props.forceOpenTo ? props.openTo : context.selection.value || props.openTo || props.today || todayIsoDate();\n el.setAttribute('focused-date', splitRange(focused)[0]);\n if (props.locale) el.setAttribute('locale', props.locale); else el.removeAttribute('locale');\n if (props.firstDayOfWeek >= 0) el.setAttribute('first-day-of-week', String(props.firstDayOfWeek));\n const inlineHeading = !props.selectableHeader && effectiveMonths() === 1;\n setPresence({el, attr: 'data-inline-heading', present: inlineHeading, value: 'true'});\n setPresence({el, attr: 'data-hide-month-heading', present: (props.selectableHeader && !isRange()) || inlineHeading, value: 'true'});\n setPresence({el, attr: 'data-fixed-weeks', present: props.fixedWeeks, value: 'true'});\n setPresence({el, attr: 'show-outside-days', present: props.showOutsideDays || props.fixedWeeks});\n setPresence({el, attr: 'show-week-numbers', present: props.showWeekNumbers});\n };\n const syncPresets = (): void => {\n const value = currentContext().selection.pendingValue || currentContext().selection.value;\n root().querySelectorAll<HTMLElement>('[data-ui-date-picker-preset]').forEach((el) => {\n const preset = presetFromElement(el);\n const presetValue = isRange() ? `${preset.start}/${preset.end}` : preset.start;\n setPresence({el, attr: 'data-selected', present: presetValue === value, value: 'true'});\n setPresence({el, attr: 'data-disabled', present: preset.disabled ?? false, value: 'true'});\n });\n };\n const syncHiddenInputs = (): void => {\n const container = hiddenInputsEl();\n if (!container) return;\n const props = currentProps();\n const value = currentContext().selection.value;\n if (!isRange()) {\n hiddenInputsKey = syncRepeatedHiddenInputs({container, currentKey: hiddenInputsKey, state: {\n name: props.name,\n values: value ? [value] : [],\n required: props.required,\n form: props.form,\n marker: 'data-ui-date-picker-hidden-input',\n }});\n return;\n }\n const [start, end] = splitRange(value);\n if (props.startName || props.endName) {\n const key = JSON.stringify({startName: props.startName, endName: props.endName, start, end, form: props.form});\n if (key === hiddenInputsKey) return;\n container.replaceChildren();\n [[props.startName, start], [props.endName, end]].forEach(([name, itemValue]) => {\n if (!name) return;\n const hidden = document.createElement('input');\n hidden.type = 'hidden'; hidden.name = name; hidden.value = itemValue ?? '';\n hidden.setAttribute('data-ui-date-picker-hidden-input', '');\n if (props.form) hidden.setAttribute('form', props.form);\n container.append(hidden);\n });\n hiddenInputsKey = key;\n return;\n }\n hiddenInputsKey = syncRepeatedHiddenInputs({container, currentKey: hiddenInputsKey, state: {\n name: props.name, values: value ? [value] : [], required: props.required, form: props.form,\n marker: 'data-ui-date-picker-hidden-input',\n }});\n };\n const syncPresetInput = (): void => {\n const container = presetInputsEl();\n if (!container) return;\n const props = currentProps();\n const value = selectedPreset(currentContext().selection.value);\n presetInputKey = syncRepeatedHiddenInputs({container, currentKey: presetInputKey, state: {\n name: props.presetName, values: value ? [value] : [], form: props.form,\n marker: 'data-ui-date-picker-preset-input',\n }});\n };\n const syncControl = (): void => {\n const props = currentProps();\n const context = currentContext();\n const visible = bridge.hasTag('visible');\n const expanded = bridge.hasTag('expanded');\n const triggerEl = trigger();\n const inputEl = input();\n const floating = popoverEl();\n triggerEl.id = triggerId;\n floating.id = popoverId;\n floating.dataset.state = expanded ? 'open' : 'closed';\n floating.hidden = !visible;\n triggerEl.dataset.state = expanded ? 'open' : 'closed';\n syncControlPresence({el: triggerEl, state: props, value: 'true'});\n const toggle = toggleButton();\n const ariaOwner = toggle ?? triggerEl;\n ariaOwner.setAttribute('aria-haspopup', 'dialog');\n ariaOwner.setAttribute('aria-expanded', expanded ? 'true' : 'false');\n ariaOwner.setAttribute('aria-controls', popoverId);\n if (triggerEl instanceof HTMLButtonElement) triggerEl.disabled = props.disabled;\n const displayValue = bridge.hasTag('editing')\n ? context.input.value\n : formatted(context.selection.value);\n syncNativeControl({input: inputEl, state: {\n name: '',\n value: displayValue,\n disabled: props.disabled,\n readonly: props.readonly,\n required: props.required && props.mode === 'single',\n invalid: props.invalid || !context.input.valid,\n }});\n inputEl.placeholder = component.effectivePlaceholder();\n root().querySelectorAll<HTMLButtonElement>('[data-ui-date-picker-clear], [data-ui-date-picker-toggle]')\n .forEach((button) => { button.disabled = props.disabled; });\n lastInputValue = displayValue;\n const live = root().querySelector<HTMLElement>('[data-ui-date-picker-live]');\n if (live) live.textContent = liveMessage;\n };\n const syncToday = (): void => {\n const button = root().querySelector<HTMLElement>('[data-ui-date-picker-calendar-today]');\n const dayEl = root().querySelector<HTMLElement>('[data-ui-date-picker-today-day]');\n if (!button || !dayEl) return;\n const today = currentProps().today || todayIsoDate();\n const day = ISO_DATE.test(today) ? String(Number(today.slice(-2))) : '';\n dayEl.textContent = day;\n button.setAttribute('aria-label', day ? `Go to today, ${today}` : 'Go to today');\n };\n const syncSurface = (): void => {\n const props = currentProps();\n const floating = popoverEl();\n floating.dataset.uiSurface = props.surface;\n floating.dataset.uiElevation = props.elevation;\n };\n const syncAll = (): void => {\n reflectSchemaProp({\n el: root(),\n schema: datePickerSchema,\n key: 'value',\n value: currentContext().selection.value,\n });\n syncControl(); syncCalendar(); syncCalendarHeading(); syncToday(); syncSurface();\n syncHiddenInputs(); syncPresetInput(); syncPresets();\n if (bridge.hasTag('visible')) popover?.sync();\n };\n const notifyChange = (): void => {\n dispatchNativeControlChange({\n container: hiddenInputsEl(), fallback: root(), marker: 'data-ui-date-picker-hidden-input',\n });\n dispatch({el: root(), name: 'ui:change'});\n };\n const commit = (value: string, source: SelectionSource, preset = ''): void => {\n if (currentProps().disabled || currentProps().readonly) return;\n bridge.send({type: 'SELECT', value, source, preset});\n };\n const parseInput = (raw: string): string | null => {\n const props = currentProps();\n const value = parseDateValue({input: raw, format: props.format, range: isRange(), separator: props.rangeSeparator});\n return value && withinDateBounds(value, props.min, props.max) ? value : null;\n };\n\n const bridge = createAlpineMachine({\n schema: datePickerSchema,\n hooks: datePickerHooks,\n createMachine: ({props}) => createDatePickerMachine({\n props,\n context: {\n selection: {value: props.value, pendingValue: props.value, previousValue: props.value, source: 'props'},\n input: {value: '', valid: true},\n preset: {value: props.preset},\n },\n effects: {\n prepareOpen: () => {\n const floating = popoverEl();\n floating.hidden = false;\n popover?.open();\n syncAll();\n },\n finishOpen: () => {\n if (restoreFocusAfterClose) calendar()?.focus({preventScroll: true});\n restoreFocusAfterClose = false;\n dispatch({el: root(), name: 'ui:open'});\n },\n prepareClose: syncAll,\n finishClose: () => {\n const floating = popoverEl();\n popover?.close();\n floating.hidden = true;\n if (restoreFocusAfterClose) trigger().focus({preventScroll: true});\n restoreFocusAfterClose = false;\n syncAll();\n dispatch({el: root(), name: 'ui:close'});\n },\n syncInput: syncControl,\n syncPending: () => { syncControl(); syncCalendar(); syncPresets(); },\n markInvalid: () => {\n input().setCustomValidity(`Enter a date in ${currentProps().format}`);\n syncControl();\n dispatch({el: root(), name: 'ui:invalid'});\n },\n commitSelection: () => {\n input().setCustomValidity('');\n const context = currentContext();\n liveMessage = context.selection.value ? (isRange() ? 'Range selected' : 'Date selected') : 'Date cleared';\n syncAll();\n notifyChange();\n dispatch({el: root(), name: context.selection.value ? 'ui:select' : 'ui:clear'});\n },\n syncProps: syncAll,\n syncPresets: () => { syncPresets(); syncPresetInput(); },\n },\n }),\n resolveTransitionElement: ({name, root: owner}) => {\n if (name === 'opening' || name === 'closing') return owner.querySelector('[data-ui-date-picker-popover]');\n if (name === 'parsing') return owner.querySelector('[data-ui-date-picker-input]');\n return owner;\n },\n });\n\n let component!: TrellisAlpineComponent<DatePickerData>;\n component = {\n ...bridge,\n get isOpen(): boolean { return bridge.hasTag('expanded'); },\n get isEditing(): boolean { return bridge.hasTag('editing'); },\n get value(): string { return bridge.getCommittedSnapshot().context.selection.value; },\n get pendingValue(): string { return bridge.getCommittedSnapshot().context.selection.pendingValue; },\n get preset(): string { return selectedPreset(bridge.getCommittedSnapshot().context.selection.value); },\n get root(): BindingObject {\n return mergeBindings({inputs: [resolveStyle({\n part: datePickerStyles.parts.root,\n props: bridge.getCommittedSnapshot().props,\n className: bridge.getCommittedSnapshot().props.class,\n }), {'data-ui-date-picker': '', ':data-state': () => (component.isOpen ? 'open' : 'closed')}]});\n },\n effectivePlaceholder(): string {\n const props = bridge.getCommittedSnapshot().props;\n if (props.placeholder) return props.placeholder;\n const placeholder = formatDatePlaceholder(props.format);\n return props.mode === 'range'\n ? `${placeholder}${props.rangeSeparator}${placeholder}`\n : placeholder;\n },\n open(event?: Event): void {\n event?.preventDefault();\n if (event instanceof KeyboardEvent) restoreFocusAfterClose = true;\n bridge.send('OPEN');\n },\n close(event?: Event): void {\n event?.preventDefault();\n if (event instanceof KeyboardEvent) restoreFocusAfterClose = true;\n bridge.send('CLOSE');\n },\n toggle(event?: Event): void {\n event?.preventDefault();\n bridge.send('TOGGLE');\n },\n select(value: string, event?: Event): void {\n event?.preventDefault();\n if (!withinDateBounds(value, currentProps().min, currentProps().max)) return;\n const valid = isRange() ? ISO_RANGE.test(value) : ISO_DATE.test(value);\n if (valid) commit(value, 'input');\n },\n selectPreset(value: string, event?: Event): void {\n event?.preventDefault();\n if (currentProps().disabled || currentProps().readonly) return;\n const preset = presetItems().find((item) => item.value === value);\n if (!preset || preset.disabled) return;\n const next = isRange() ? `${preset.start}/${preset.end}` : preset.start;\n if (currentProps().close === 'confirm') bridge.send({type: 'PENDING', value: next, source: 'preset', preset: value});\n else commit(next, 'preset', value);\n },\n selectToday(event?: Event): void {\n event?.preventDefault();\n if (currentProps().disabled || currentProps().readonly) return;\n const today = currentProps().today || todayIsoDate();\n const value = isRange() ? `${today}/${today}` : today;\n if (currentProps().close === 'confirm') bridge.send({type: 'PENDING', value, source: 'today'});\n else commit(value, 'today');\n },\n clear(event?: Event): void {\n event?.preventDefault();\n if (currentProps().disabled || currentProps().readonly) return;\n bridge.send('CLEAR');\n },\n cancel(event?: Event): void { event?.preventDefault(); bridge.send('CANCEL'); bridge.send('CLOSE'); },\n init(): void {\n rootEl = this.$el;\n triggerId = this.$id('date-picker-trigger');\n popoverId = this.$id('date-picker-popover');\n bridge.connect(this.$el, this.snapshot);\n popover = createAnchoredPopoverSurface({\n reference: trigger,\n floating: popoverEl,\n position: () => currentProps().side,\n align: () => currentProps().align,\n gap: () => currentProps().gap,\n offset: () => currentProps().offset,\n matchReferenceWidth: false,\n });\n const triggerEl = trigger();\n const inputEl = input();\n const floating = popoverEl();\n addListener({target: triggerEl, event: 'click', cleanup, handler: (event) => {\n const target = event.target;\n if (target instanceof Element && target.closest('[data-ui-date-picker-clear]')) component.clear(event);\n else component.toggle(event);\n }});\n addListener({target: triggerEl, event: 'keydown', cleanup, handler: (raw) => {\n const event = raw as KeyboardEvent;\n if ((event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') && !component.isOpen) component.open(event);\n else if (event.key === 'Escape' && component.isOpen) component.close(event);\n }});\n addListener({target: root(), event: 'keydown', cleanup, handler: (raw) => {\n const event = raw as KeyboardEvent;\n if (event.key === 'Escape' && component.isOpen) component.close(event);\n }});\n addListener({target: inputEl, event: 'input', cleanup, handler: () => {\n const cursor = inputEl.selectionStart ?? inputEl.value.length;\n const digitsBeforeCursor = (inputEl.value.slice(0, cursor).match(/[0-9]/g) ?? []).length;\n let raw = sanitizeDateInput({\n input: inputEl.value,\n format: currentProps().format,\n separator: currentProps().rangeSeparator,\n });\n const deleting = lastInputValue.length - raw.length === 1;\n if (!deleting) raw = maskDateInput({\n input: raw,\n format: currentProps().format,\n range: isRange(),\n separator: currentProps().rangeSeparator,\n });\n if (inputEl.value !== raw) {\n inputEl.value = raw;\n let digitsSeen = 0;\n let nextCursor = raw.length;\n for (let index = 0; index < raw.length; index += 1) {\n if (/[0-9]/.test(raw[index] ?? '')) digitsSeen += 1;\n if (digitsSeen !== digitsBeforeCursor) continue;\n nextCursor = index + 1;\n while (nextCursor < raw.length && !/[0-9]/.test(raw[nextCursor] ?? '')) nextCursor += 1;\n break;\n }\n inputEl.setSelectionRange(nextCursor, nextCursor);\n }\n lastInputValue = raw;\n bridge.send({type: 'INPUT', input: raw});\n const parsed = parseInput(raw);\n if (parsed) commit(parsed, 'input');\n }});\n addListener({target: inputEl, event: 'change', cleanup, handler: () => {\n const parsed = parseInput(inputEl.value);\n if (parsed) commit(parsed, 'input');\n else if (inputEl.value.trim()) bridge.send({type: 'PARSE', input: inputEl.value});\n else bridge.send('CLEAR');\n }});\n addListener({target: floating, event: 'pointerdown', cleanup, handler: (event) => event.stopPropagation()});\n addListener({target: floating, event: 'click', cleanup, handler: (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n const preset = target.closest<HTMLElement>('[data-ui-date-picker-preset]');\n if (preset) component.selectPreset(preset.dataset.value ?? '', event);\n else if (target.closest('[data-ui-date-picker-clear]')) component.clear(event);\n else if (target.closest('[data-ui-date-picker-cancel]')) component.cancel(event);\n else if (target.closest('[data-ui-date-picker-apply]')) bridge.send('APPLY');\n else if (target.closest('[data-ui-date-picker-today]')) component.selectToday(event);\n }});\n const calendarEl = calendar();\n if (calendarEl) {\n void customElements.whenDefined('calendar-date').then(() => {\n if (rootEl) syncCalendar();\n });\n addListener({target: calendarEl, event: 'change', cleanup, handler: () => {\n const value = calendarEl.value;\n if (isRange() && !ISO_RANGE.test(value)) {\n liveMessage = 'Start date selected';\n bridge.send({type: 'PENDING', value, source: 'calendar'});\n } else if (currentProps().close === 'confirm') {\n bridge.send({type: 'PENDING', value, source: 'calendar'});\n } else commit(value, 'calendar');\n }});\n addListener({target: calendarEl, event: 'focusday', cleanup, handler: (event) => {\n const detail = (event as CustomEvent<Date>).detail;\n if (detail instanceof Date) syncCalendarHeading(detail.toISOString().slice(0, 10));\n }});\n }\n cleanup.push(addDismissableLayer({\n isEnabled: () => component.isOpen,\n roots: () => [root(), floating],\n onDismiss: () => component.close(),\n }));\n const presetObserver = new MutationObserver(() => bridge.send('PRESETS_CHANGED'));\n presetObserver.observe(root(), {childList: true, subtree: true, attributes: true, attributeFilter: ['data-value', 'data-start', 'data-end', 'data-disabled']});\n cleanup.push(() => presetObserver.disconnect());\n syncAll();\n },\n destroy(): void {\n cleanup.forEach((dispose) => dispose());\n cleanup = [];\n popover?.destroy();\n popover = null;\n bridge.disconnect();\n rootEl = null;\n },\n };\n return component;\n};\n\nconst registerDatePicker = defineAlpineData('UiDatePicker', UiDatePicker);\n\nexport {registerDatePicker, UiDatePicker};\nexport type {DatePickerData, DatePickerTransition, UiDatePickerApi};\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 {registerCalendarCapability} from '../../capabilities/calendar';\nimport {registerDatePicker as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerDatePicker = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerCalendarCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerDatePicker};\nexport default registerDatePicker;\nexport * from './index';\n"],"file":"entry.generated-D3w3QaSO.js"}
|