@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry.generated-B1wGmQth.js","names":[],"sources":["../../../../../../../../client/src/runtime/option-data.ts","../../../../../../../../client/src/components/badge/contract.ts","../../../../../../../../client/src/components/select/contract.ts","../../../../../../../../client/src/components/select/machine.ts","../../../../../../../../client/src/components/select/presentation.ts","../../../../../../../../client/src/components/select/styles.ts","../../../../../../../../client/src/components/select/index.ts","../../../../../../../../client/src/components/select/entry.generated.ts"],"sourcesContent":["const normalizeOptionText = (value: string): string => value.trim().toLowerCase();\n\nconst splitControlValues = (value: string): string[] => value\n .split(',')\n .map((item) => item.trim())\n .filter(Boolean);\n\nconst parseItemData = (raw: string | undefined): unknown => {\n if (!raw) return undefined;\n\n try {\n return JSON.parse(raw);\n } catch {\n return undefined;\n }\n};\n\nconst getPathValue = (item: unknown, path: string): unknown => {\n if (!path || item === null || item === undefined) return undefined;\n\n return path.split('.').reduce<unknown>((value, key) => {\n if (value === null || value === undefined || typeof value !== 'object') return undefined;\n return (value as Record<string, unknown>)[key];\n }, item);\n};\n\nexport {getPathValue, normalizeOptionText, parseItemData, splitControlValues};\n","import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n BUTTON_TYPES,\n COMPONENT_RADII,\n CONTROL_SIZES,\n ICON_VARIANTS,\n type CommonButtonType,\n type ComponentRadius,\n type ControlSize,\n type IconVariant,\n} from '../common';\n\nconst BADGE_VARIANTS = ['soft', 'surface', 'outline', 'solid'] as const;\nconst BADGE_COLORS = ['neutral', 'accent', 'success', 'warning', 'danger'] as const;\nconst BADGE_SIZES = CONTROL_SIZES;\nconst BADGE_AS_VALUES = ['span', 'button'] as const;\nconst BADGE_TYPES = BUTTON_TYPES;\nconst BADGE_ICON_VARIANTS = ICON_VARIANTS;\nconst BADGE_RADII = COMPONENT_RADII;\n\nconst badgeSchema = {\n variant: oneOf(BADGE_VARIANTS, 'soft'),\n color: oneOf(BADGE_COLORS, 'neutral'),\n size: oneOf(BADGE_SIZES, 'sm'),\n radius: oneOf(BADGE_RADII, 'sm'),\n href: string,\n as: oneOf(BADGE_AS_VALUES, 'span'),\n type: oneOf(BADGE_TYPES, 'button'),\n disabled: bool,\n icon: string,\n iconTrailing: string,\n iconVariant: oneOf(BADGE_ICON_VARIANTS, 'mini'),\n inset: string,\n class: string,\n};\n\nconst badgeCloseSchema = {\n type: oneOf(BADGE_TYPES, 'button'),\n disabled: bool,\n icon: string.default('close'),\n iconVariant: oneOf(BADGE_ICON_VARIANTS, 'mini'),\n size: oneOf(BADGE_SIZES, 'sm'),\n label: string.default('Remove'),\n class: string,\n};\n\ntype BadgeVariant = typeof BADGE_VARIANTS[number];\ntype BadgeColor = typeof BADGE_COLORS[number];\ntype BadgeSize = ControlSize;\ntype BadgeRadius = ComponentRadius;\ntype BadgeAs = typeof BADGE_AS_VALUES[number];\ntype BadgeType = CommonButtonType;\ntype BadgeIconVariant = IconVariant;\ntype BadgeProps = SchemaToProps<typeof badgeSchema>;\ntype BadgeCloseProps = SchemaToProps<typeof badgeCloseSchema>;\n\nexport {\n BADGE_AS_VALUES,\n BADGE_COLORS,\n BADGE_ICON_VARIANTS,\n BADGE_RADII,\n BADGE_SIZES,\n BADGE_TYPES,\n BADGE_VARIANTS,\n badgeCloseSchema,\n badgeSchema,\n};\nexport type {\n BadgeAs,\n BadgeCloseProps,\n BadgeColor,\n BadgeIconVariant,\n BadgeProps,\n BadgeRadius,\n BadgeSize,\n BadgeType,\n BadgeVariant,\n};\n","import {bool, json, number, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n ALIGNMENTS,\n COMPONENT_RADII,\n CONTROL_SIZES,\n CONTROL_VARIANTS,\n ELEVATION_REFERENCES,\n ICON_VARIANTS,\n POSITIONS,\n SURFACE_REFERENCES,\n type Alignment,\n type ComponentRadius,\n type ControlSize,\n type ControlVariant,\n type ElevationReference,\n type IconVariant,\n type Position,\n type SurfaceReference,\n} from '../common';\nimport {\n BADGE_COLORS,\n BADGE_VARIANTS,\n type BadgeColor,\n type BadgeVariant,\n} from '../badge/contract';\n\nconst SELECT_MODES = ['listbox', 'combobox', 'pillbox', 'native'] as const;\nconst SELECT_VARIANTS = CONTROL_VARIANTS;\nconst SELECT_SIZES = CONTROL_SIZES;\nconst SELECT_RADII = COMPONENT_RADII;\nconst SELECT_SIDES = POSITIONS;\nconst SELECT_ALIGNS = ALIGNMENTS;\nconst SELECT_ICON_VARIANTS = ICON_VARIANTS;\nconst SELECT_CLEARS = ['stay', 'close'] as const;\nconst SELECT_MARKS = ['check', 'checkbox', 'none'] as const;\nconst SELECT_SURFACES = SURFACE_REFERENCES;\nconst SELECT_ELEVATIONS = ELEVATION_REFERENCES;\n\ntype SelectMode = typeof SELECT_MODES[number];\ntype SelectVariant = ControlVariant;\ntype SelectSize = ControlSize;\ntype SelectRadius = ComponentRadius;\ntype SelectSide = Position;\ntype SelectAlign = Alignment;\ntype SelectIconVariant = IconVariant;\ntype SelectClear = typeof SELECT_CLEARS[number];\ntype SelectMark = typeof SELECT_MARKS[number];\ntype SelectSurface = SurfaceReference;\ntype SelectElevation = ElevationReference;\ntype SelectChipVariant = BadgeVariant;\ntype SelectChipColor = BadgeColor;\n\nconst selectSchema = {\n name: string,\n optionsId: string,\n value: string,\n values: json.array<string>([]),\n placeholder: string,\n mode: oneOf(SELECT_MODES, 'listbox' as SelectMode),\n multiple: bool,\n searchable: bool,\n searchMinItems: number.min(0).default(5),\n virtualized: bool,\n optionsFetchUrl: string,\n optionsTotalItems: number.min(0).default(0),\n optionItemSize: number.min(Number.EPSILON).default(36),\n optionBufferSize: number.min(1).default(50),\n optionOverscan: number.min(0).default(0),\n optionSearchParam: string.default('q'),\n optionSearchDebounce: number.min(0).default(150),\n selectedLabelMap: json.object<Record<string, string>>({}),\n creatable: bool,\n filter: bool.default(true),\n clearable: bool,\n clear: oneOf(SELECT_CLEARS, 'stay' as SelectClear),\n suffix: string.default('selected'),\n mark: oneOf(SELECT_MARKS, 'check' as SelectMark),\n open: bool,\n disabled: bool,\n readonly: bool,\n required: bool,\n invalid: bool,\n autoHighlight: bool.default(true),\n loop: bool.default(true),\n path: string,\n size: oneOf(SELECT_SIZES, 'lg' as SelectSize),\n variant: oneOf(SELECT_VARIANTS, 'outline' as SelectVariant),\n radius: oneOf(SELECT_RADII, 'md' as SelectRadius),\n surface: oneOf(SELECT_SURFACES, '+2' as SelectSurface),\n elevation: oneOf(SELECT_ELEVATIONS, '3' as SelectElevation),\n side: oneOf(SELECT_SIDES, 'bottom' as SelectSide),\n align: oneOf(SELECT_ALIGNS, 'start' as SelectAlign),\n offset: number.clamp(-100, 100).default(0),\n gap: number.clamp(0, 50).default(4),\n empty: string.default('No results found.'),\n icon: string,\n iconTrailing: string.default('chevron__down'),\n iconVariant: oneOf(SELECT_ICON_VARIANTS, 'outline' as SelectIconVariant),\n buttonClass: string,\n inputClass: string,\n listboxClass: string,\n optionClass: string,\n chipVariant: oneOf(BADGE_VARIANTS, 'soft' as SelectChipVariant),\n chipColor: oneOf(BADGE_COLORS, 'neutral' as SelectChipColor),\n chipClass: string,\n class: string,\n};\n\nconst selectOptionSchema = {\n value: string,\n label: string,\n selectedLabel: string,\n textValue: string,\n disabled: bool,\n selected: bool,\n item: string,\n icon: string,\n iconTrailing: string,\n iconVariant: oneOf(SELECT_ICON_VARIANTS, 'outline' as SelectIconVariant),\n suffix: string,\n class: string,\n};\n\nconst selectCreateOptionSchema = {\n minLength: number.clamp(0, 100).default(0),\n modal: string,\n disabled: bool,\n value: string,\n class: string,\n};\n\ntype SelectProps = SchemaToProps<typeof selectSchema>;\ntype SelectOptionProps = SchemaToProps<typeof selectOptionSchema>;\ntype SelectCreateOptionProps = SchemaToProps<typeof selectCreateOptionSchema>;\n\nexport {\n SELECT_ALIGNS,\n SELECT_CLEARS,\n SELECT_ELEVATIONS,\n BADGE_COLORS as SELECT_CHIP_COLORS,\n BADGE_VARIANTS as SELECT_CHIP_VARIANTS,\n SELECT_ICON_VARIANTS,\n SELECT_MARKS,\n SELECT_MODES,\n SELECT_RADII,\n SELECT_SIDES,\n SELECT_SIZES,\n SELECT_SURFACES,\n SELECT_VARIANTS,\n selectCreateOptionSchema,\n selectOptionSchema,\n selectSchema,\n};\nexport type {\n SelectAlign,\n SelectClear,\n SelectChipColor,\n SelectChipVariant,\n SelectCreateOptionProps,\n SelectElevation,\n SelectIconVariant,\n SelectMark,\n SelectOptionProps,\n SelectSide,\n SelectProps,\n SelectRadius,\n SelectSize,\n SelectSurface,\n SelectMode,\n SelectVariant,\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 {SelectProps} from './contract';\n\ntype SelectedOption = {\n value: string;\n label: string;\n};\n\ntype SelectContext = {\n selection: SelectedOption[];\n search: {query: string; optionsId: string};\n navigation: {activeValue: string};\n creation: {value: string};\n};\n\ntype SelectMachineEffects = {\n prepareOpen(scope: MachineScope<SelectContext, SelectProps>): void;\n finishOpen(scope: MachineScope<SelectContext, SelectProps>): void;\n prepareClose(scope: MachineScope<SelectContext, SelectProps>): void;\n finishClose(scope: MachineScope<SelectContext, SelectProps>): void;\n commitSelection(scope: MachineScope<SelectContext, SelectProps>): void;\n commitSearch(scope: MachineScope<SelectContext, SelectProps>): void;\n prepareCreate(scope: MachineScope<SelectContext, SelectProps>): void;\n syncProps(scope: MachineScope<SelectContext, SelectProps>): void;\n syncOptions(scope: MachineScope<SelectContext, SelectProps>): void;\n syncActive(scope: MachineScope<SelectContext, SelectProps>): void;\n syncDom(scope: MachineScope<SelectContext, SelectProps>): void;\n};\n\ntype CreateSelectMachineOptions = {\n props: SelectProps;\n context: SelectContext;\n effects: SelectMachineEffects;\n};\n\nconst openingHook = defineHook({\n name: 'opening',\n state: 'disclosure.opening',\n project: () => ({}),\n onDone: 'OPENING_DONE',\n onError: 'OPENING_ERROR',\n sends: {\n close: () => ({type: 'CLOSE'}),\n },\n} satisfies TransitionHookDefinition<SelectContext, SelectProps, 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: {\n open: () => ({type: 'OPEN'}),\n },\n} satisfies TransitionHookDefinition<SelectContext, SelectProps, Record<string, never>, 'closing'>);\n\nconst searchingHook = defineHook({\n name: 'searching',\n state: 'feature.searching',\n project: (snapshot) => ({\n query: snapshot.context.search.query,\n optionsId: snapshot.context.search.optionsId,\n }),\n onDone: 'SEARCHING_DONE',\n onError: 'SEARCHING_ERROR',\n sends: {\n search: (query: string) => ({type: 'SEARCH', query}),\n close: () => ({type: 'CLOSE'}),\n },\n} satisfies TransitionHookDefinition<\n SelectContext,\n SelectProps,\n {query: string; optionsId: string},\n 'searching'\n>);\n\nconst creatingHook = defineHook({\n name: 'creating',\n state: 'feature.creating',\n project: (snapshot) => ({\n query: snapshot.context.search.query,\n value: snapshot.context.creation.value,\n }),\n onDone: 'CREATING_DONE',\n onError: 'CREATING_ERROR',\n sends: {\n close: () => ({type: 'CLOSE'}),\n },\n} satisfies TransitionHookDefinition<\n SelectContext,\n SelectProps,\n {query: string; value: string},\n 'creating'\n>);\n\nconst selectHooks = [openingHook, closingHook, searchingHook, creatingHook] as const;\n\nconst nextProps = (event: MachineEventObject): SelectProps | null => propsChangedEvent<SelectProps>(event)?.props ?? null;\nconst blocked = (props: SelectProps): boolean => props.disabled || props.readonly;\n\nconst shouldOpenFromProps = ({event}: MachineScope<SelectContext, SelectProps>): boolean => {\n const props = nextProps(event);\n if (!props || blocked(props) || !props.open) return false;\n return propsChanged<SelectProps>(event, 'open', 'disabled', 'readonly');\n};\n\nconst shouldCloseFromProps = ({event}: MachineScope<SelectContext, SelectProps>): boolean => {\n const props = nextProps(event);\n if (!props) return false;\n return (propsChanged<SelectProps>(event, 'open') && !props.open)\n || (propsChanged<SelectProps>(event, 'disabled') && props.disabled)\n || (propsChanged<SelectProps>(event, 'readonly') && props.readonly);\n};\n\nconst shouldStopFeatureFromProps = ({event}: MachineScope<SelectContext, SelectProps>): boolean => {\n const props = nextProps(event);\n return Boolean(props && (\n (propsChanged<SelectProps>(event, 'disabled') && props.disabled)\n || (propsChanged<SelectProps>(event, 'readonly') && props.readonly)\n || (propsChanged<SelectProps>(event, 'searchable') && !props.searchable)\n ));\n};\n\nconst nextSelection = (event: MachineEventObject): SelectContext['selection'] | null => {\n if (!Array.isArray(event.selection)) return null;\n if (!event.selection.every((option): option is SelectedOption => (\n typeof option === 'object'\n && option !== null\n && typeof option.value === 'string'\n && typeof option.label === 'string'\n ))) return null;\n return event.selection.map(({value, label}) => ({value, label}));\n};\n\nconst createSelectMachine = ({\n props,\n context,\n effects,\n}: CreateSelectMachineOptions): Machine<SelectContext, SelectProps> => createMachine<SelectContext, SelectProps>({\n type: 'parallel',\n on: {\n DOM_INVALIDATED: {effects: 'syncDom'},\n },\n states: {\n disclosure: {\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 SEARCH: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n PROPS_CHANGED: {target: 'opening', guard: shouldOpenFromProps, 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 CREATE: {target: 'closing', effects: 'prepareClose'},\n SELECT: {target: 'closing', guard: 'single', effects: 'prepareClose'},\n CLEAR: {target: 'closing', guard: 'clearCloses', 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 CREATE: {target: 'closing', effects: 'prepareClose'},\n SELECT: {target: 'closing', guard: 'single', effects: 'prepareClose'},\n CLEAR: {target: 'closing', guard: 'clearCloses', 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', effects: 'prepareOpen'},\n TOGGLE: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n SEARCH: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n PROPS_CHANGED: {target: 'opening', guard: shouldOpenFromProps, effects: 'prepareOpen'},\n },\n },\n },\n },\n feature: {\n initial: 'idle',\n on: {\n SELECT: {reduce: 'replaceSelection', effects: 'commitSelection'},\n DESELECT: {reduce: 'replaceSelection', effects: 'commitSelection'},\n SELECT_ALL: {reduce: 'replaceSelection', effects: 'commitSelection'},\n RECONCILE_SELECTION: {reduce: 'replaceSelection', effects: 'syncActive'},\n CLEAR: {reduce: 'clear', effects: 'commitSelection'},\n ACTIVE: {reduce: 'setActive', effects: 'syncActive'},\n OPTIONS_CHANGED: {effects: 'syncOptions'},\n CLOSING_DONE: {reduce: 'resetTransient', effects: 'syncActive'},\n CLOSING_ERROR: {reduce: 'resetTransient', effects: 'syncActive'},\n },\n states: {\n idle: {\n on: {\n CLOSE: {},\n SEARCH: {target: 'searching', reduce: 'setSearch', effects: 'commitSearch'},\n CREATE: {target: 'creating', reduce: 'setCreation', effects: 'prepareCreate'},\n PROPS_CHANGED: {reduce: 'replaceProps', effects: 'syncProps'},\n },\n },\n searching: {\n tags: ['searching'],\n on: {\n SEARCH: {target: 'searching', reduce: 'setSearch', effects: 'commitSearch'},\n CREATE: {target: 'creating', reduce: 'setCreation', effects: 'prepareCreate'},\n CLOSE: {target: 'idle'},\n SEARCHING_DONE: 'idle',\n SEARCHING_ERROR: 'idle',\n PROPS_CHANGED: [\n {target: 'idle', guard: shouldStopFeatureFromProps, reduce: 'replaceProps', effects: 'syncProps'},\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n creating: {\n tags: ['creating'],\n on: {\n SEARCH: {target: 'searching', reduce: 'setSearch', effects: 'commitSearch'},\n CREATE: {target: 'creating', reduce: 'setCreation', effects: 'prepareCreate'},\n CLOSE: {target: 'idle'},\n CREATING_DONE: {target: 'idle'},\n CREATING_ERROR: {target: 'idle'},\n PROPS_CHANGED: [\n {target: 'idle', guard: shouldStopFeatureFromProps, reduce: 'replaceProps', effects: 'syncProps'},\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n },\n },\n },\n}, {\n context,\n props,\n reducers: {\n replaceProps: ({event}) => {\n const next = nextProps(event);\n return next ? {props: next} : undefined;\n },\n replaceSelection: ({context: current, event}) => {\n const selection = nextSelection(event);\n if (!selection) return undefined;\n return {context: {\n ...current,\n selection,\n }};\n },\n clear: ({context: current}) => ({context: {\n ...current,\n selection: [],\n search: {...current.search, query: ''},\n navigation: {activeValue: ''},\n }}),\n setSearch: ({context: current, event}) => ({context: {\n ...current,\n search: {\n query: typeof event.query === 'string' ? event.query : '',\n optionsId: typeof event.optionsId === 'string' ? event.optionsId : current.search.optionsId,\n },\n navigation: {\n activeValue: typeof event.activeValue === 'string'\n ? event.activeValue\n : current.navigation.activeValue,\n },\n }}),\n setActive: ({context: current, event}) => ({context: {\n ...current,\n navigation: {activeValue: typeof event.value === 'string' ? event.value : ''},\n }}),\n setCreation: ({context: current, event}) => ({context: {\n ...current,\n creation: {value: typeof event.value === 'string' ? event.value : current.search.query},\n }}),\n resetTransient: ({context: current}) => ({context: {\n ...current,\n search: {...current.search, query: ''},\n navigation: {activeValue: ''},\n creation: {value: ''},\n }}),\n },\n guards: {\n canOpen: ({props: current}) => !blocked(current),\n single: ({props: current}) => !current.multiple,\n clearCloses: ({props: current}) => current.clear === 'close',\n },\n effects: {\n prepareOpen: effects.prepareOpen,\n finishOpen: effects.finishOpen,\n prepareClose: effects.prepareClose,\n finishClose: effects.finishClose,\n commitSelection: effects.commitSelection,\n commitSearch: effects.commitSearch,\n prepareCreate: effects.prepareCreate,\n syncProps: effects.syncProps,\n syncOptions: effects.syncOptions,\n syncActive: effects.syncActive,\n syncDom: effects.syncDom,\n },\n});\n\nexport {createSelectMachine, selectHooks};\nexport type {\n CreateSelectMachineOptions,\n SelectedOption,\n SelectContext,\n SelectMachineEffects,\n};\n","import {\n createAnchoredPopover,\n type AnchoredPopoverOptions,\n} from '@client/runtime/anchored-popover';\nimport {acquireDocumentScrollLock} from '@client/runtime/scroll-lock';\n\ntype SelectPresentation = 'anchored' | 'dialog' | 'fullscreen';\n\ntype SelectPresentationMetrics = {\n viewportWidth: number;\n viewportHeight: number;\n layoutViewportHeight: number;\n referenceTop: number;\n referenceBottom: number;\n touch: boolean;\n};\n\ntype SelectSurfaceOptions = AnchoredPopoverOptions & {\n labelId: () => string;\n};\n\ntype SelectSurface = {\n opened(): boolean;\n open(): void;\n close(): void;\n sync(): void;\n destroy(): void;\n presentation(): SelectPresentation;\n};\n\ntype PopoverElement = HTMLElement & {\n showPopover(): void;\n hidePopover(): void;\n};\n\nconst PHONE_MAX_WIDTH = 640;\nconst MIN_ANCHORED_RESULTS_HEIGHT = 256;\nconst TABLET_KEYBOARD_HEIGHT = 520;\nconst KEYBOARD_VIEWPORT_RATIO = 0.72;\nconst FULLSCREEN_DIALOG_MARGIN = 12;\nconst DIALOG_MARGIN = 16;\nconst DIALOG_MAX_WIDTH = 720;\nconst DIALOG_MAX_HEIGHT = 720;\n\nconst resolveSelectPresentation = ({\n viewportWidth,\n viewportHeight,\n layoutViewportHeight,\n referenceTop,\n referenceBottom,\n touch,\n}: SelectPresentationMetrics): SelectPresentation => {\n if (viewportWidth <= PHONE_MAX_WIDTH) return 'fullscreen';\n\n const keyboardConstrained = viewportHeight < TABLET_KEYBOARD_HEIGHT\n || viewportHeight < layoutViewportHeight * KEYBOARD_VIEWPORT_RATIO;\n if (touch && keyboardConstrained) return 'fullscreen';\n if (touch) return 'dialog';\n\n const spaceAbove = Math.max(0, referenceTop);\n const spaceBelow = Math.max(0, viewportHeight - referenceBottom);\n return Math.max(spaceAbove, spaceBelow) < MIN_ANCHORED_RESULTS_HEIGHT ? 'dialog' : 'anchored';\n};\n\nconst viewportMetrics = (): {\n width: number;\n height: number;\n offsetTop: number;\n offsetLeft: number;\n} => {\n const viewport = window.visualViewport;\n return viewport\n ? {\n width: viewport.width,\n height: viewport.height,\n offsetTop: viewport.offsetTop,\n offsetLeft: viewport.offsetLeft,\n }\n : {width: window.innerWidth, height: window.innerHeight, offsetTop: 0, offsetLeft: 0};\n};\n\nconst hasTouchPointer = (): boolean => (\n window.matchMedia?.('(any-pointer: coarse)').matches === true\n || navigator.maxTouchPoints > 0\n);\n\nconst createSelectSurface = (options: SelectSurfaceOptions): SelectSurface => {\n const anchored = createAnchoredPopover(options);\n let open = false;\n let currentPresentation: SelectPresentation = 'anchored';\n let releaseScrollLock: (() => void) | null = null;\n let stopViewportListeners: (() => void) | null = null;\n\n const surface = (): PopoverElement => options.floating() as PopoverElement;\n\n const setScrollLock = (locked: boolean): void => {\n if (locked) releaseScrollLock ??= acquireDocumentScrollLock(surface().ownerDocument);\n else {\n releaseScrollLock?.();\n releaseScrollLock = null;\n }\n };\n\n const clearModalGeometry = (element: HTMLElement): void => {\n element.style.removeProperty('border-radius');\n element.style.removeProperty('height');\n element.style.removeProperty('inset');\n element.style.removeProperty('max-height');\n element.style.removeProperty('max-width');\n element.style.removeProperty('position');\n element.style.removeProperty('transform-origin');\n element.style.removeProperty('width');\n };\n\n const applyDialogGeometry = (\n element: HTMLElement,\n presentation: Exclude<SelectPresentation, 'anchored'>,\n ): void => {\n const viewport = viewportMetrics();\n const margin = presentation === 'dialog'\n ? DIALOG_MARGIN\n : FULLSCREEN_DIALOG_MARGIN;\n const maxWidth = presentation === 'dialog' ? DIALOG_MAX_WIDTH : Number.POSITIVE_INFINITY;\n const maxHeight = presentation === 'dialog' ? DIALOG_MAX_HEIGHT : Number.POSITIVE_INFINITY;\n const width = Math.min(maxWidth, Math.max(0, viewport.width - margin * 2));\n const height = Math.min(maxHeight, Math.max(0, viewport.height - margin * 2));\n const left = viewport.offsetLeft + (viewport.width - width) / 2;\n const top = viewport.offsetTop + (viewport.height - height) / 2;\n\n Object.assign(element.style, {\n borderRadius: 'var(--radius-overlay-md)',\n position: 'fixed',\n inset: `${top}px auto auto ${left}px`,\n width: `${width}px`,\n height: `${height}px`,\n maxWidth: 'none',\n maxHeight: 'none',\n transformOrigin: 'center',\n });\n };\n\n const resolveCurrentPresentation = (): SelectPresentation => {\n const viewport = viewportMetrics();\n const reference = options.reference().getBoundingClientRect();\n return resolveSelectPresentation({\n viewportWidth: viewport.width,\n viewportHeight: viewport.height,\n layoutViewportHeight: window.innerHeight,\n referenceTop: reference.top - viewport.offsetTop,\n referenceBottom: reference.bottom - viewport.offsetTop,\n touch: hasTouchPointer(),\n });\n };\n\n const applyPresentation = (): void => {\n if (!open) return;\n const element = surface();\n const next = resolveCurrentPresentation();\n currentPresentation = next;\n element.dataset.presentation = next;\n const heading = element.querySelector<HTMLElement>('[data-ui-select-sheet-heading]');\n if (heading) heading.style.display = next === 'anchored' ? 'none' : 'flex';\n\n if (next === 'anchored') {\n element.removeAttribute('aria-modal');\n element.removeAttribute('aria-labelledby');\n element.removeAttribute('role');\n setScrollLock(false);\n clearModalGeometry(element);\n anchored.mount();\n return;\n }\n\n anchored.unmount();\n element.setAttribute('role', 'dialog');\n element.setAttribute('aria-modal', 'true');\n element.setAttribute('aria-labelledby', options.labelId());\n setScrollLock(true);\n applyDialogGeometry(element, next);\n };\n\n const listenToViewport = (): (() => void) => {\n const update = (): void => applyPresentation();\n const viewport = window.visualViewport;\n const pointer = window.matchMedia?.('(any-pointer: coarse)');\n window.addEventListener('resize', update);\n window.addEventListener('orientationchange', update);\n viewport?.addEventListener('resize', update);\n viewport?.addEventListener('scroll', update);\n pointer?.addEventListener('change', update);\n return () => {\n window.removeEventListener('resize', update);\n window.removeEventListener('orientationchange', update);\n viewport?.removeEventListener('resize', update);\n viewport?.removeEventListener('scroll', update);\n pointer?.removeEventListener('change', update);\n };\n };\n\n const show = (): void => {\n if (open) return;\n open = true;\n try {\n surface().showPopover();\n } catch {\n // Reversal may find the native surface already in the top layer.\n }\n applyPresentation();\n stopViewportListeners = listenToViewport();\n };\n\n const hide = (): void => {\n if (!open) return;\n open = false;\n stopViewportListeners?.();\n stopViewportListeners = null;\n anchored.unmount();\n setScrollLock(false);\n try {\n surface().hidePopover();\n } catch {\n // Native teardown may already have removed the surface from the top layer.\n }\n };\n\n return {\n opened: () => open,\n open: show,\n close: hide,\n sync: applyPresentation,\n destroy: hide,\n presentation: () => currentPresentation,\n };\n};\n\nexport {createSelectSurface, resolveSelectPresentation};\nexport type {SelectPresentation, SelectPresentationMetrics, SelectSurface};\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_ICON_CLASSES,\n OPTION_INDICATOR_CLASSES,\n OPTION_ITEM_CLASSES,\n OPTION_META_CLASSES,\n POPOVER_GEOMETRY_CLASSES,\n} from '../common';\n\nconst selectStyles = defineStyles({definition: {\n component: 'ui.select',\n parts: {\n root: {\n base: 'relative inline-grid w-full min-w-0',\n },\n control: {\n base: FIELD_CONTROL_ROOT_CLASSES,\n variants: {\n size: CONTROL_MIN_SIZE_CLASSES,\n radius: CONTROL_RADIUS_CLASSES,\n variant: {\n outline: '',\n filled: '',\n plain: '',\n },\n mode: {\n listbox: '',\n combobox: '',\n pillbox: 'flex-wrap gap-1 py-0.5',\n native: '',\n },\n empty: {\n true: '',\n false: '',\n },\n },\n compounds: [\n {when: {mode: 'pillbox', empty: false}, class: '!pl-1.5'},\n ],\n defaults: {\n size: 'lg',\n variant: 'outline',\n radius: 'md',\n mode: 'listbox',\n empty: false,\n },\n },\n button: {\n base: [\n 'flex min-w-0 flex-1 items-center gap-2 border-0 bg-transparent p-0 text-left text-inherit outline-none',\n ],\n },\n pillboxTrigger: {\n base: 'min-w-16 self-stretch',\n },\n value: {\n base: 'min-w-0 flex-1 truncate',\n },\n placeholder: {\n base: 'min-w-0 flex-1 truncate text-surface-ink-muted',\n },\n input: {\n base: [\n 'w-full min-w-16 flex-1',\n FIELD_CONTROL_INPUT_CLASSES,\n ],\n },\n search: {\n base: [\n 'flex min-h-control-xlg shrink-0 items-center gap-2 px-3',\n 'text-sm',\n ],\n },\n searchInput: {\n base: [\n 'min-w-0 flex-1 text-sm',\n FIELD_CONTROL_INPUT_CLASSES,\n ],\n },\n sheetHeader: {\n base: '',\n },\n sheetHeading: {\n base: 'min-w-0 items-center gap-3 px-4 pt-4',\n },\n sheetTitle: {\n base: 'min-w-0 flex-1 truncate text-base font-medium',\n },\n sheetClose: {\n base: [\n 'inline-flex size-control-md shrink-0 items-center justify-center rounded-control-sm border-0 bg-transparent',\n 'text-surface-ink-muted outline-none focus-visible:ui-focus-ring',\n ],\n },\n chips: {\n base: 'flex min-w-0 flex-wrap items-center gap-1',\n },\n chip: {\n base: [\n 'max-w-64',\n ],\n },\n chipLabel: {\n base: 'block min-w-0 flex-1 truncate',\n },\n chipRemove: {\n base: '',\n },\n icon: {\n base: 'size-icon shrink-0 fill-current text-surface-ink-muted',\n variants: {\n position: {\n leading: '',\n trailing: '',\n },\n },\n defaults: {\n position: 'leading',\n },\n },\n action: {\n base: FIELD_CONTROL_ACTION_CLASSES,\n },\n popover: {\n base: [\n POPOVER_GEOMETRY_CLASSES,\n 'overflow-hidden rounded-overlay-sm',\n ],\n },\n listbox: {\n base: 'min-h-0 min-w-0 max-w-full overflow-hidden outline-none',\n },\n viewport: {\n base: 'min-h-0 min-w-0 max-w-full',\n },\n options: {\n base: 'grid w-full min-w-0 max-w-full auto-rows-min content-start gap-1 p-popover-padding',\n },\n virtualOptions: {\n base: 'grid w-full min-w-0 max-w-full auto-rows-min content-start gap-1 px-popover-padding',\n },\n create: {\n base: 'shrink-0 p-popover-padding',\n },\n option: {\n base: [\n OPTION_ITEM_CLASSES,\n 'min-w-0 max-w-full overflow-hidden',\n '[&:has([data-ui-select-option-label]>*+*)]:h-auto',\n '[&:has([data-ui-select-option-label]>*+*)]:items-start',\n '[&:has([data-ui-select-option-label]>*+*)]:py-2',\n ],\n },\n optionLabel: {\n base: 'min-w-0 flex-1 truncate',\n },\n optionMeta: {\n base: OPTION_META_CLASSES,\n },\n optionIcon: {\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 optionIndicator: {\n base: OPTION_INDICATOR_CLASSES,\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',\n },\n empty: {\n base: 'px-menu-item-padding-inline py-2 text-sm text-surface-ink-muted',\n },\n separatorRoot: {\n base: '-mx-popover my-popover h-[var(--border-width-edge-separator)]',\n },\n separatorRule: {\n base: 'h-[var(--border-width-edge-separator)] w-full border-0',\n },\n nativeWrapper: {\n base: 'relative w-full min-w-0',\n },\n native: {\n base: [\n FIELD_CONTROL_NATIVE_CLASSES,\n 'appearance-none pe-10',\n ],\n variants: {\n size: CONTROL_MIN_SIZE_CLASSES,\n radius: CONTROL_RADIUS_CLASSES,\n },\n defaults: {\n size: 'lg',\n radius: 'md',\n },\n },\n nativeIcon: {\n base: 'pointer-events-none absolute right-3 top-1/2 size-icon -translate-y-1/2 fill-current text-icon',\n },\n },\n}});\n\nexport {selectStyles};\n","import type Alpine from 'alpinejs';\n\nimport {badgeStyles} from '@client/components/badge/styles';\nimport {\n type AlpineMachine,\n createAlpineMachine,\n defineAlpineData,\n type MachineSnapshot,\n reflectSchemaProp,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {cleanupManagerFor} from '@client/runtime/alpine-data';\nimport type {CleanupManager} from '@client/runtime/cleanup-manager';\nimport {addDismissableLayer} from '@client/runtime/dismissable-layer';\nimport {trapFocus} from '@client/runtime/focus-scope';\nimport {focusWithoutIndicator} from '@client/runtime/focus-handoff';\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 {declareMorphAttributes} from '@client/runtime/morph';\nimport {getPathValue, normalizeOptionText, parseItemData} from '@client/runtime/option-data';\nimport {observeSemanticChanges} from '@client/runtime/semantic-observer';\nimport {resolveStyle} from '@client/runtime/styles';\nimport {addListener, asBool, dispatch, setPresence} from '@client/utils';\nimport {selectSchema, type SelectProps} from './contract';\nimport {\n createSelectMachine,\n type SelectContext,\n type SelectedOption,\n selectHooks,\n} from './machine';\nimport {createSelectSurface, type SelectSurface} from './presentation';\nimport {selectStyles} from './styles';\n\ntype SelectTransitionName = (typeof selectHooks)[number]['name'];\ntype SelectTransition<TName extends SelectTransitionName = SelectTransitionName> = TransitionForHook<\n Extract<(typeof selectHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\ntype PopoverElement = HTMLElement & {\n showPopover(): void;\n hidePopover(): void;\n};\n\ntype SelectOption = {\n el: HTMLElement;\n id: string;\n value: string;\n label: string;\n selectedLabel: string;\n disabled: boolean;\n selected: boolean;\n visible: boolean;\n create: boolean;\n};\n\ntype CatalogOption = Omit<SelectOption, 'selected' | 'visible'> & {\n minLength: number;\n suffix: string;\n};\n\ntype OptionProjection = {\n options: SelectOption[];\n enabled: SelectOption[];\n firstByValue: ReadonlyMap<string, SelectOption>;\n byElement: ReadonlyMap<HTMLElement, SelectOption>;\n};\n\nclass OptionCatalog {\n readonly ordinaryCount: number;\n\n private readonly filter: boolean;\n private readonly records: CatalogOption[];\n private readonly projections = new Map<string, OptionProjection>();\n\n constructor({\n root,\n listboxId,\n props,\n resolveLabel,\n rememberLabel,\n }: {\n root: HTMLElement;\n listboxId: string;\n props: Readonly<SelectProps>;\n resolveLabel(el: HTMLElement, props: Readonly<SelectProps>): string;\n rememberLabel(value: string, label: string): void;\n }) {\n this.filter = props.filter;\n this.records = Array.from(root.querySelectorAll<HTMLElement>(optionSelector)).map((el, index) => {\n const label = resolveLabel(el, props);\n const value = el.dataset.value || label;\n const create = el.hasAttribute('data-ui-select-option-create');\n const record = {\n el,\n id: el.id || `${listboxId}-option-${index}`,\n value,\n label,\n selectedLabel: el.dataset.selectedLabel || label,\n disabled: asBool({value: el.dataset.disabled}),\n create,\n minLength: Number(el.dataset.minLength ?? '0'),\n suffix: el.dataset.suffix ?? '',\n };\n return record;\n });\n const remembered = new Set<string>();\n this.records.forEach((option) => {\n if (option.create || remembered.has(option.value)) return;\n remembered.add(option.value);\n rememberLabel(option.value, option.selectedLabel);\n });\n this.ordinaryCount = this.records.filter((option) => !option.create).length;\n }\n\n project(query: string, selection: readonly SelectedOption[]): OptionProjection {\n const selectedValues = selection.map(({value}) => value);\n const key = JSON.stringify([query, selectedValues]);\n const cached = this.projections.get(key);\n if (cached) return cached;\n\n const normalizedQuery = normalizeOptionText(query);\n const exact = normalizedQuery !== '' && this.records.some((option) => (\n !option.create && normalizeOptionText(option.label) === normalizedQuery\n ));\n const options = this.records.map((option) => {\n const matches = !normalizedQuery\n || normalizeOptionText(`${option.label} ${option.suffix}`).includes(normalizedQuery);\n return {\n ...option,\n value: option.create ? option.el.dataset.value || query : option.value,\n selected: selectedValues.includes(option.value),\n visible: option.create\n ? !exact && query.length >= option.minLength\n : !this.filter || normalizedQuery === '' || matches,\n };\n });\n const firstByValue = new Map<string, SelectOption>();\n const byElement = new Map<HTMLElement, SelectOption>();\n options.forEach((option) => {\n if (!firstByValue.has(option.value)) firstByValue.set(option.value, option);\n byElement.set(option.el, option);\n });\n const projection = {\n options,\n enabled: options.filter((option) => option.visible && !option.disabled && !option.create),\n firstByValue,\n byElement,\n };\n this.projections.set(key, projection);\n return projection;\n }\n}\n\ntype NestedVirtualizerApi = {\n setUrl(url: string, options?: {reset?: boolean}): void;\n setTotalItems(count: number): void;\n};\n\ntype NestedVirtualizerElement = HTMLElement & {\n _x_dataStack?: Array<Partial<NestedVirtualizerApi>>;\n};\n\n/**\n * Public Alpine API for `ui.select`.\n *\n * @public\n */\ninterface UiSelectApi {\n /** Whether the select is opening or fully open. */\n readonly isOpen: boolean;\n\n /** Whether a searching transition hook is pending. */\n readonly isSearching: boolean;\n\n /** First selected value, or an empty string. */\n readonly value: string;\n\n /** Selected values in committed order. */\n readonly values: readonly string[];\n\n /** Display labels corresponding to the selected values. */\n readonly selectedLabels: readonly string[];\n\n /** Current search query. */\n readonly search: string;\n\n /** Value of the currently highlighted option. */\n readonly activeValue: string;\n\n /** Opens the listbox unless the select is disabled or readonly. */\n open(event?: Event): void;\n\n /** Closes the listbox. Keyboard dismissal restores focus to the trigger. */\n close(event?: Event): void;\n\n /** Reverses the current disclosure lifecycle. */\n toggle(event?: Event): void;\n\n /** Selects the rendered option with this value. */\n select(value: string, event?: Event): void;\n\n /** Removes a selected value. */\n deselect(value: string, event?: Event): void;\n\n /** Selects every rendered, visible, enabled option in multiple mode. */\n selectAll(event?: Event): void;\n\n /** Clears search, selection, highlight, and submitted values. */\n clear(event?: Event): void;\n\n /** Sets the query and enters the searching feature state. */\n setSearch(query: string): void;\n}\n\ntype SelectData = AlpineMachine<SelectContext, SelectProps, typeof selectHooks> & UiSelectApi & {\n readonly root: BindingObject;\n init(): void;\n destroy(): void;\n};\n\nconst optionSelector = '[data-ui-select-option], [data-ui-select-option-create]';\nconst selectedTemplateSelector = 'template[data-ui-select-option-selected-template]';\n\nconst projectedInteractiveElements = new Set([\n 'A', 'AREA', 'BUTTON', 'DETAILS', 'EMBED', 'IFRAME', 'INPUT', 'OBJECT', 'OPTION', 'SELECT', 'SUMMARY', 'TEXTAREA',\n]);\nconst projectedExecutableElements = new Set(['SCRIPT', 'STYLE']);\nconst projectedInteractionAttributes = new Set([\n 'autofocus',\n 'contenteditable',\n 'controls',\n 'download',\n 'draggable',\n 'form',\n 'formaction',\n 'formenctype',\n 'formmethod',\n 'formnovalidate',\n 'formtarget',\n 'href',\n 'id',\n 'name',\n 'popover',\n 'popovertarget',\n 'popovertargetaction',\n 'role',\n 'tabindex',\n 'target',\n]);\n\nconst isProjectedInteractionAttribute = (name: string): boolean => (\n projectedInteractionAttributes.has(name)\n || (name.startsWith('aria-') && name !== 'aria-hidden')\n || name.startsWith('data-ui-select')\n || name === 'data-ui-interactive'\n || name.startsWith('data-ui-action')\n || name.startsWith('data-selected')\n || name.startsWith('data-highlighted')\n || name.startsWith('data-disabled')\n || name.startsWith('x-')\n || name.startsWith('hx-')\n || name.startsWith('v-')\n || name.startsWith('wire:')\n || name.startsWith('@')\n || name.startsWith(':')\n || name.startsWith('on')\n);\n\nconst sanitizeSelectedContent = (node: Node): Node | null => {\n if (!(node instanceof Element)) return node;\n const elementName = node.localName.toUpperCase();\n if (projectedExecutableElements.has(elementName)) return null;\n\n let projected = node;\n if (projectedInteractiveElements.has(elementName) || node.hasAttribute('contenteditable')) {\n projected = document.createElement('span');\n Array.from(node.attributes).forEach((attribute) => {\n if (!isProjectedInteractionAttribute(attribute.name)) {\n projected.setAttribute(attribute.name, attribute.value);\n }\n });\n projected.append(...Array.from(node.childNodes));\n }\n\n Array.from(projected.attributes).forEach((attribute) => {\n if (isProjectedInteractionAttribute(attribute.name)) projected.removeAttribute(attribute.name);\n });\n\n Array.from(projected.childNodes).forEach((child) => {\n const sanitized = sanitizeSelectedContent(child);\n if (!sanitized) child.remove();\n else if (sanitized !== child) child.replaceWith(sanitized);\n });\n projected.setAttribute('x-ignore', 'true');\n return projected;\n};\n\nconst cloneSelectedNodes = (nodes: Iterable<Node>): DocumentFragment => {\n const fragment = document.createDocumentFragment();\n Array.from(nodes).forEach((node) => {\n if (node instanceof HTMLTemplateElement && node.matches(selectedTemplateSelector)) return;\n const clone = node.cloneNode(true);\n const sanitized = sanitizeSelectedContent(clone);\n if (sanitized) fragment.append(sanitized);\n });\n return fragment;\n};\n\nconst sameStrings = (left: readonly string[], right: readonly string[]): boolean => (\n left.length === right.length && left.every((value, index) => value === right[index])\n);\n\nconst UiSelect = (): TrellisAlpineComponent<SelectData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let reflectControlledState = false;\n let buttonId = '';\n let inputId = '';\n let listboxId = '';\n let optionsId = '';\n let popover: SelectSurface | null = null;\n let disconnectObserver: (() => void) | null = null;\n let disconnectSelectedTemplateObservers: (() => void) | null = null;\n let cleanup: CleanupManager;\n let hiddenInputsKey = '';\n let chipsKey = '';\n let inputSearching = false;\n let restoreFocusAfterClose = false;\n let lastOptionEl: HTMLElement | null = null;\n let typeahead = '';\n let typeaheadTimer = 0;\n let virtualSearchTimer = 0;\n let virtualTotal = 0;\n let virtualSearchPopulation = 0;\n let synchronizedVirtualizerUrl: string | null = null;\n let activeOptionCatalog: OptionCatalog | null = null;\n let optionRevision = 0;\n const selectedLabelCache = new Map<string, string>();\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Select has not been initialized.');\n return rootEl;\n };\n\n const control = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-control]');\n if (!el) throw new Error('Select requires a control element.');\n return el;\n };\n\n const trigger = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-trigger], [data-ui-select-button], [data-ui-select-input]');\n if (!el) throw new Error('Select requires a trigger element.');\n return el;\n };\n\n const input = (): HTMLInputElement | null => root().querySelector<HTMLInputElement>('[data-ui-select-input]');\n const searchInput = (): HTMLInputElement | null => root().querySelector<HTMLInputElement>('[data-ui-select-search-input]');\n const sheetTitle = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-sheet-title]');\n if (!el) throw new Error('Select requires an adaptive picker title.');\n return el;\n };\n\n const popoverEl = (): PopoverElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-popover]');\n if (!el) throw new Error('Select requires a popover element.');\n return el as PopoverElement;\n };\n\n const listbox = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-listbox]');\n if (!el) throw new Error('Select requires a listbox element.');\n return el;\n };\n\n const optionsEl = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-options]');\n if (!el) throw new Error('Select requires an options element.');\n return el;\n };\n\n const virtualizerEl = (): NestedVirtualizerElement | null => (\n root().querySelector<NestedVirtualizerElement>('[data-ui-select-virtualizer]')\n );\n\n const virtualizerApi = (): NestedVirtualizerApi | null => {\n const scope = virtualizerEl()?._x_dataStack?.find((candidate) => (\n typeof candidate.setUrl === 'function' && typeof candidate.setTotalItems === 'function'\n ));\n return scope as NestedVirtualizerApi | undefined ?? null;\n };\n\n const chipsEl = (): HTMLElement | null => root().querySelector<HTMLElement>('[data-ui-select-chips]');\n const hiddenInputsEl = (): HTMLElement | null => root().querySelector<HTMLElement>('[data-ui-select-hidden-inputs]');\n const currentProps = (): Readonly<SelectProps> => bridge.getCommittedSnapshot().props;\n const currentContext = (): Readonly<SelectContext> => bridge.getCommittedSnapshot().context;\n const isExpanded = (): boolean => bridge.hasTag('expanded');\n const isVisible = (): boolean => bridge.hasTag('visible');\n\n const resolveOptionLabel = (el: HTMLElement, props: Readonly<SelectProps>): string => {\n const explicit = el.dataset.label || el.getAttribute('aria-label') || '';\n if (explicit) return explicit;\n if (el.dataset.textValue) return el.dataset.textValue;\n const itemValue = getPathValue(parseItemData(el.dataset.item), props.path);\n if (itemValue !== undefined && itemValue !== null) return String(itemValue);\n const label = el.querySelector<HTMLElement>('[data-ui-select-option-label]');\n return (label?.textContent ?? el.textContent ?? '').trim();\n };\n\n const createOptionCatalog = (props: Readonly<SelectProps> = currentProps()): OptionCatalog => new OptionCatalog({\n root: root(),\n listboxId,\n props,\n resolveLabel: resolveOptionLabel,\n rememberLabel: (value, label) => selectedLabelCache.set(value, label),\n });\n\n const withOptionCatalog = <T>(operation: (catalog: OptionCatalog) => T, props?: Readonly<SelectProps>): T => {\n if (activeOptionCatalog) return operation(activeOptionCatalog);\n activeOptionCatalog = createOptionCatalog(props);\n try {\n return operation(activeOptionCatalog);\n } finally {\n activeOptionCatalog = null;\n }\n };\n\n const selectionValues = (selection: readonly SelectedOption[] = currentContext().selection): string[] => (\n selection.map(({value}) => value)\n );\n const selectionLabels = (selection: readonly SelectedOption[] = currentContext().selection): string[] => (\n selection.map(({label}) => label)\n );\n const optionProjection = (\n catalog: OptionCatalog,\n query = currentContext().search.query,\n selection: readonly SelectedOption[] = currentContext().selection,\n ): OptionProjection => catalog.project(query, selection);\n\n const fixedSearchAvailable = (catalog: OptionCatalog): boolean => {\n const props = currentProps();\n if (!searchInput()) return false;\n if (props.mode === 'combobox') return true;\n const mountedOptions = catalog.ordinaryCount;\n const optionCount = props.virtualized\n ? Math.max(mountedOptions, props.optionsTotalItems, virtualSearchPopulation)\n : mountedOptions;\n return optionCount >= props.searchMinItems;\n };\n\n const selectionForValues = (\n values: readonly string[],\n catalog: OptionCatalog,\n props: Readonly<SelectProps> = currentProps(),\n ): SelectContext['selection'] => {\n const unique = Array.from(new Set(values.filter(Boolean)));\n const normalized = props.multiple ? unique : unique.slice(0, 1);\n const projection = catalog.project('', []);\n return normalized.map((value) => ({\n value,\n label: projection.firstByValue.get(value)?.selectedLabel\n ?? selectedLabelCache.get(value)\n ?? (typeof props.selectedLabelMap[value] === 'string' ? props.selectedLabelMap[value] : undefined)\n ?? value,\n }));\n };\n\n const valuesFromProps = (props: Readonly<SelectProps>): string[] => (\n props.multiple\n ? Array.from(new Set([...props.values, ...(props.value ? [props.value] : [])]))\n : props.value ? [props.value] : props.values.slice(0, 1)\n );\n\n const initialContext = (props: SelectProps): SelectContext => {\n return withOptionCatalog((catalog) => {\n const explicit = valuesFromProps(props);\n const selectedFromOptions = catalog.project('', [])\n .options.filter((option) => asBool({value: option.el.dataset.selected}))\n .map((option) => option.value);\n return {\n selection: selectionForValues(explicit.length > 0 ? explicit : selectedFromOptions, catalog, props),\n search: {query: '', optionsId: ''},\n navigation: {activeValue: ''},\n creation: {value: ''},\n };\n }, props);\n };\n\n const selectedSummary = (): string => {\n const {selection} = currentContext();\n const props = currentProps();\n if (selection.length === 0 || (props.mode === 'pillbox' && props.multiple)) return '';\n if (props.multiple && selection.length > 1) return `${selection.length} ${props.suffix}`;\n return selection[0]?.label ?? selection[0]?.value ?? '';\n };\n\n const explicitSelectedContent = (option: SelectOption): DocumentFragment | null => {\n const template = option.el.querySelector<HTMLTemplateElement>(selectedTemplateSelector);\n return template ? cloneSelectedNodes(template.content.childNodes) : null;\n };\n\n const selectedContent = (option: SelectOption): DocumentFragment => {\n const explicit = explicitSelectedContent(option);\n if (explicit) return explicit;\n const source = option.el.querySelector<HTMLElement>('[data-ui-select-option-selected-content]')\n ?? option.el.querySelector<HTMLElement>('[data-ui-select-option-label]');\n if (source) return cloneSelectedNodes(source.childNodes);\n const fragment = document.createDocumentFragment();\n fragment.append(document.createTextNode(option.selectedLabel));\n return fragment;\n };\n\n const syncRoot = (): void => {\n const props = currentProps();\n if (reflectControlledState) {\n const values = selectionValues();\n if (isExpanded() || !props.open || (!props.disabled && !props.readonly)) {\n reflectSchemaProp({el: root(), schema: selectSchema, key: 'open', value: isExpanded()});\n }\n reflectSchemaProp({\n el: root(),\n schema: selectSchema,\n key: 'value',\n value: props.multiple ? '' : values[0] ?? '',\n });\n reflectSchemaProp({\n el: root(),\n schema: selectSchema,\n key: 'values',\n value: props.multiple ? [...values] : [],\n });\n }\n root().dataset.state = isExpanded() ? 'open' : 'closed';\n root().dataset.mark = props.mark;\n syncControlPresence({el: root(), state: {\n disabled: props.disabled,\n required: props.required,\n invalid: props.invalid,\n }, value: 'true'});\n };\n\n const isPillbox = (): boolean => currentProps().mode === 'pillbox' && currentProps().multiple;\n\n const syncControl = (): void => {\n const props = currentProps();\n const empty = isPillbox() && currentContext().selection.length === 0;\n const el = control();\n el.className = resolveStyle({\n part: selectStyles.parts.control,\n props: {...props, mode: isPillbox() ? 'pillbox' : props.mode === 'combobox' ? 'combobox' : 'listbox', empty},\n });\n el.dataset.state = isExpanded() ? 'open' : 'closed';\n el.dataset.mode = isPillbox() ? 'pillbox' : props.mode;\n setPresence({el, attr: 'data-ui-select-pillbox-control', present: isPillbox(), value: ''});\n setPresence({el, attr: 'data-empty', present: empty, value: 'true'});\n syncControlPresence({el, state: {disabled: props.disabled, invalid: props.invalid}, value: 'true'});\n };\n\n const syncTrigger = (catalog: OptionCatalog): void => {\n const props = currentProps();\n const el = trigger();\n el.id ||= buttonId;\n el.dataset.state = isExpanded() ? 'open' : 'closed';\n el.setAttribute('aria-haspopup', 'listbox');\n el.setAttribute('aria-expanded', isExpanded() ? 'true' : 'false');\n el.setAttribute('aria-controls', listboxId);\n setPresence({el, attr: 'aria-invalid', present: props.invalid, value: 'true'});\n if (el instanceof HTMLButtonElement) el.disabled = props.disabled;\n\n const summary = selectedSummary();\n const valueEl = root().querySelector<HTMLElement>('[data-ui-select-button-value]');\n const placeholder = root().querySelector<HTMLElement>('[data-ui-select-button-placeholder]');\n if (valueEl) {\n valueEl.replaceChildren();\n const selected = currentContext().selection.length === 1 && summary\n ? catalog.project('', currentContext().selection).firstByValue.get(currentContext().selection[0]?.value ?? '')\n : undefined;\n if (selected) valueEl.append(selectedContent(selected));\n else valueEl.textContent = summary;\n valueEl.hidden = summary === '';\n }\n if (placeholder) {\n placeholder.hidden = isPillbox()\n ? currentContext().selection.length > 0\n : summary !== '';\n }\n\n root().querySelectorAll<HTMLElement>('[data-ui-select-clear], [data-ui-select-button-clear]').forEach((clear) => {\n clear.hidden = props.disabled || !props.clearable || currentContext().selection.length === 0;\n if (clear instanceof HTMLButtonElement) clear.disabled = props.disabled;\n });\n root().querySelectorAll<HTMLElement>('[data-ui-select-search-clear]').forEach((clear) => {\n clear.hidden = props.disabled || !currentContext().search.query;\n if (clear instanceof HTMLButtonElement) clear.disabled = props.disabled;\n });\n };\n\n const syncInputs = (catalog: OptionCatalog): void => {\n const props = currentProps();\n const context = currentContext();\n const inputEl = input();\n if (inputEl) {\n inputEl.id ||= inputId;\n inputEl.className = resolveStyle({part: selectStyles.parts.input, className: props.inputClass});\n inputEl.value = isPillbox()\n ? context.search.query\n : isExpanded() && inputSearching ? context.search.query : selectedSummary();\n inputEl.placeholder = isPillbox() && context.selection.length > 0 ? '' : props.placeholder;\n inputEl.setAttribute('role', 'combobox');\n inputEl.setAttribute('autocomplete', 'off');\n inputEl.setAttribute('aria-autocomplete', 'list');\n inputEl.setAttribute('aria-expanded', isExpanded() ? 'true' : 'false');\n inputEl.setAttribute('aria-controls', listboxId);\n syncNativeControl({input: inputEl, state: {\n disabled: props.disabled,\n readonly: props.readonly,\n required: props.required,\n nativeRequired: false,\n invalid: props.invalid,\n ariaRequired: props.required,\n }});\n }\n\n const search = searchInput();\n if (search) {\n const searchRow = search.closest<HTMLElement>('[data-ui-select-search]');\n if (searchRow) searchRow.hidden = !fixedSearchAvailable(catalog);\n search.value = context.search.query;\n search.disabled = props.disabled;\n search.readOnly = props.readonly;\n }\n\n const active = optionProjection(catalog).firstByValue.get(context.navigation.activeValue);\n [trigger(), inputEl, search, listbox()].forEach((element) => {\n if (active?.id) element?.setAttribute('aria-activedescendant', active.id);\n else element?.removeAttribute('aria-activedescendant');\n });\n };\n\n const syncListbox = (): void => {\n const props = currentProps();\n const surface = popoverEl();\n const box = listbox();\n surface.id = `${listboxId}-popover`;\n surface.className = resolveStyle({part: selectStyles.parts.popover, props, className: props.listboxClass});\n surface.dataset.uiSurface = props.surface;\n surface.dataset.uiElevation = props.elevation;\n surface.setAttribute('popover', 'manual');\n surface.dataset.state = isExpanded() ? 'open' : 'closed';\n surface.hidden = !isVisible();\n box.id = listboxId;\n box.setAttribute('role', 'listbox');\n box.tabIndex = -1;\n box.setAttribute('aria-labelledby', trigger().id);\n setPresence({el: box, attr: 'aria-multiselectable', present: props.multiple, value: 'true'});\n };\n\n const syncOptions = (catalog: OptionCatalog): void => {\n const props = currentProps();\n const context = currentContext();\n root().querySelectorAll<HTMLElement>('[data-ui-select-create-query]').forEach((query) => {\n query.textContent = context.search.query;\n });\n const records = optionProjection(catalog).options;\n records.forEach((option) => {\n option.el.id = option.id;\n option.el.hidden = !option.visible;\n option.el.setAttribute('role', 'option');\n option.el.setAttribute('aria-selected', option.selected ? 'true' : 'false');\n if (!option.create) option.el.dataset.value = option.value;\n if (!option.create) option.el.dataset.label = option.label;\n setPresence({el: option.el, attr: 'data-selected', present: option.selected, value: 'true'});\n setPresence({el: option.el, attr: 'data-highlighted', present: option.value === context.navigation.activeValue, value: 'true'});\n setPresence({el: option.el, attr: 'data-disabled', present: option.disabled, value: 'true'});\n setPresence({el: option.el, attr: 'aria-disabled', present: option.disabled, value: 'true'});\n option.el.querySelectorAll<HTMLElement>('[data-ui-select-option-indicator]').forEach((indicator) => {\n setPresence({el: indicator, attr: 'data-selected', present: option.selected, value: 'true'});\n });\n });\n const empty = root().querySelector<HTMLElement>('[data-ui-select-option-empty]');\n if (empty) {\n empty.hidden = props.virtualized && props.optionsFetchUrl\n ? virtualTotal !== 0\n : records.some((option) => option.visible && !option.create);\n }\n };\n\n const optionDomSignature = (): string => JSON.stringify(\n Array.from(root().querySelectorAll<HTMLElement>(optionSelector)).map((option) => ({\n create: option.hasAttribute('data-ui-select-option-create'),\n value: option.dataset.value ?? '',\n label: option.hasAttribute('data-ui-select-option-create')\n ? option.textContent?.trim() ?? ''\n : option.dataset.label ?? option.textContent?.trim() ?? '',\n disabled: option.dataset.disabled ?? '',\n selected: option.dataset.selected ?? '',\n selectedContent: option.querySelector<HTMLTemplateElement>(selectedTemplateSelector)?.innerHTML ?? null,\n })),\n );\n\n const syncChips = (catalog: OptionCatalog): void => {\n const container = chipsEl();\n if (!container) return;\n const props = currentProps();\n const context = currentContext();\n const records = catalog.project('', context.selection);\n const chips = context.selection.map(({value, label}) => ({\n value,\n label,\n disabled: records.firstByValue.get(value)?.disabled ?? false,\n option: records.firstByValue.get(value),\n }));\n const chipSize = props.size === 'xs' || props.size === 'sm' ? 'xs' : 'sm';\n const key = JSON.stringify({chips: chips.map(({value, label, disabled}) => ({value, label, disabled})), optionRevision,\n pillbox: isPillbox(), disabled: props.disabled, readonly: props.readonly,\n variant: props.chipVariant, color: props.chipColor, size: chipSize, className: props.chipClass});\n if (key === chipsKey) return;\n chipsKey = key;\n container.replaceChildren();\n container.hidden = !isPillbox() || chips.length === 0;\n if (container.hidden) return;\n\n const chipClass = resolveStyle({\n part: badgeStyles.parts.root,\n props: {variant: props.chipVariant, color: props.chipColor, size: chipSize, radius: 'sm'},\n className: resolveStyle({part: selectStyles.parts.chip, props: {}, className: props.chipClass}),\n });\n const labelClass = resolveStyle({part: selectStyles.parts.chipLabel});\n const removeClass = resolveStyle({\n part: badgeStyles.parts.close,\n props: {size: chipSize},\n className: resolveStyle({part: selectStyles.parts.chipRemove}),\n });\n\n chips.forEach((chipData) => {\n const plainLabel = chipData.label || chipData.value;\n const chip = document.createElement('span');\n chip.className = chipClass;\n chip.setAttribute('data-ui-badge', '');\n chip.setAttribute('data-ui-action-recipe', 'badge');\n chip.setAttribute('data-ui-select-chip', '');\n chip.dataset.value = chipData.value;\n chip.dataset.variant = props.chipVariant;\n chip.dataset.color = props.chipColor;\n chip.dataset.size = chipSize;\n chip.dataset.radius = 'sm';\n const label = document.createElement('span');\n label.className = labelClass;\n label.setAttribute('data-ui-select-chip-label', '');\n const selected = chipData.option ? explicitSelectedContent(chipData.option) : null;\n if (selected) label.append(selected);\n else label.textContent = plainLabel;\n chip.append(label);\n const remove = document.createElement('button');\n remove.type = 'button';\n remove.className = removeClass;\n remove.setAttribute('data-ui-badge-close', '');\n remove.setAttribute('data-ui-select-chip-remove', '');\n remove.dataset.value = chipData.value;\n remove.setAttribute('aria-label', `Remove ${plainLabel}`);\n remove.disabled = props.disabled || props.readonly || chipData.disabled;\n const icon = root().querySelector<HTMLTemplateElement>('[data-ui-select-chip-remove-icon]');\n if (icon) remove.append(icon.content.cloneNode(true));\n else remove.textContent = 'x';\n chip.append(remove);\n container.append(chip);\n });\n };\n\n const syncHiddenInputs = (): void => {\n const container = hiddenInputsEl();\n if (!container) return;\n const props = currentProps();\n hiddenInputsKey = syncRepeatedHiddenInputs({container, state: {\n name: props.name,\n required: props.required,\n values: props.disabled ? [] : selectionValues(),\n form: root().dataset.form ?? '',\n marker: 'data-ui-select-hidden-input',\n }, currentKey: hiddenInputsKey});\n };\n\n const syncAll = (): void => withOptionCatalog((catalog) => {\n syncRoot();\n syncControl();\n syncTrigger(catalog);\n syncInputs(catalog);\n syncListbox();\n syncOptions(catalog);\n syncChips(catalog);\n syncHiddenInputs();\n });\n\n const focusForOpen = (): void => {\n if (!rootEl) return;\n withOptionCatalog((catalog) => {\n if (!bridge.hasTag('interactive')) return;\n const props = currentProps();\n if (popover?.presentation() !== 'anchored') {\n const target = (fixedSearchAvailable(catalog) ? searchInput() : null)\n ?? root().querySelector<HTMLElement>('[data-ui-select-sheet-close]')\n ?? listbox();\n target.focus({preventScroll: true});\n } else if (props.mode === 'combobox') input()?.focus({preventScroll: true});\n else if (fixedSearchAvailable(catalog)) searchInput()?.focus({preventScroll: true});\n else trigger().focus({preventScroll: true});\n });\n };\n\n const activateCommittedOption = (): void => withOptionCatalog((catalog) => {\n if (currentContext().navigation.activeValue) return;\n const enabled = optionProjection(catalog).enabled;\n const selected = selectionValues()\n .map((value) => enabled.find((option) => option.value === value))\n .find((option): option is SelectOption => option !== undefined);\n if (selected) setActive(selected.value);\n });\n\n const reconcileOptions = (): void => withOptionCatalog((catalog) => {\n const context = currentContext();\n const selection = selectionForValues(selectionValues(context.selection), catalog);\n if (!sameStrings(selectionLabels(selection), selectionLabels(context.selection))) {\n bridge.send({type: 'RECONCILE_SELECTION', selection});\n }\n const enabled = optionProjection(catalog).enabled;\n if (context.navigation.activeValue && !enabled.some((option) => option.value === context.navigation.activeValue)) {\n bridge.send({type: 'ACTIVE', value: currentProps().autoHighlight ? enabled[0]?.value ?? '' : ''});\n }\n syncAll();\n });\n\n const propsChanged = (event: Record<string, unknown>): void => withOptionCatalog((catalog) => {\n const changes = Array.isArray(event.changes) ? event.changes : [];\n const keys = changes.flatMap((change) => (\n change && typeof change === 'object' && 'key' in change ? [String(change.key)] : []\n ));\n if (keys.some((key) => key === 'value' || key === 'values' || key === 'multiple' || key === 'selectedLabelMap')) {\n const selection = selectionForValues(valuesFromProps(currentProps()), catalog);\n bridge.send({type: 'RECONCILE_SELECTION', selection});\n }\n if (keys.includes('optionsTotalItems')) {\n virtualTotal = currentProps().optionsTotalItems;\n virtualSearchPopulation = virtualTotal;\n virtualizerApi()?.setTotalItems(virtualTotal);\n }\n if (keys.includes('optionsFetchUrl')) {\n syncVirtualizerUrl();\n queueMicrotask(syncVirtualizerUrl);\n }\n syncAll();\n });\n\n const virtualizedOptionsUrl = (query: string): string => {\n const props = currentProps();\n const url = new URL(props.optionsFetchUrl, document.baseURI);\n if (query) url.searchParams.set(props.optionSearchParam, query);\n else url.searchParams.delete(props.optionSearchParam);\n return /^[a-z][a-z\\d+.-]*:/i.test(props.optionsFetchUrl) || props.optionsFetchUrl.startsWith('//')\n ? url.href\n : `${url.pathname}${url.search}${url.hash}`;\n };\n\n const syncVirtualizerUrl = (): void => {\n if (!rootEl) return;\n const props = currentProps();\n if (!props.virtualized) return;\n const desired = props.optionsFetchUrl\n ? virtualizedOptionsUrl(currentContext().search.query)\n : '';\n const virtualizer = virtualizerEl();\n if (!virtualizer) return;\n if (virtualizer.dataset.fetchUrl === desired) {\n synchronizedVirtualizerUrl = desired;\n return;\n }\n if (synchronizedVirtualizerUrl === desired) return;\n const api = virtualizerApi();\n if (!api) return;\n synchronizedVirtualizerUrl = desired;\n api.setUrl(desired, {reset: true});\n };\n\n const scheduleVirtualSearch = (): void => {\n window.clearTimeout(virtualSearchTimer);\n const props = currentProps();\n if (\n !props.virtualized\n || !props.optionsFetchUrl\n || (!props.searchable && props.mode !== 'combobox')\n ) return;\n virtualSearchTimer = window.setTimeout(() => {\n syncVirtualizerUrl();\n const api = virtualizerApi();\n if (!api) return;\n if (virtualTotal === 0 && props.optionsTotalItems > 0) {\n virtualTotal = props.optionsTotalItems;\n api.setTotalItems(virtualTotal);\n }\n }, props.optionSearchDebounce);\n };\n\n const bridge = createAlpineMachine({\n schema: selectSchema,\n hooks: selectHooks,\n createMachine: ({props}) => createSelectMachine({\n props,\n context: initialContext(props),\n effects: {\n prepareOpen: () => withOptionCatalog(() => {\n restoreFocusAfterClose = false;\n popover?.open();\n activateCommittedOption();\n syncAll();\n queueMicrotask(focusForOpen);\n }),\n finishOpen: () => {\n syncAll();\n dispatch({el: root(), name: 'ui:open'});\n },\n prepareClose: ({event}) => {\n inputSearching = false;\n restoreFocusAfterClose = event.restoreFocus === true\n || event.type === 'SELECT'\n || event.type === 'CREATE';\n if (restoreFocusAfterClose) trigger().focus({preventScroll: true});\n syncAll();\n },\n finishClose: () => {\n popover?.close();\n syncAll();\n if (restoreFocusAfterClose) trigger().focus({preventScroll: true});\n restoreFocusAfterClose = false;\n dispatch({el: root(), name: 'ui:close'});\n },\n commitSelection: ({event}) => {\n syncAll();\n declareMorphAttributes(root(), 'data-value', 'data-values');\n dispatchNativeControlChange({\n container: hiddenInputsEl(),\n fallback: root(),\n marker: 'data-ui-select-hidden-input',\n });\n const {selection} = currentContext();\n if (event.type === 'CLEAR') dispatch({el: root(), name: 'ui:clear'});\n dispatch({el: root(), name: 'ui:change', detail: {\n value: selection[0]?.value ?? '',\n values: selectionValues(selection),\n label: selection[0]?.label ?? '',\n labels: selectionLabels(selection),\n option: lastOptionEl,\n }});\n lastOptionEl = null;\n },\n commitSearch: () => {\n syncAll();\n dispatch({el: root(), name: 'ui:search', detail: {search: currentContext().search.query}});\n scheduleVirtualSearch();\n },\n prepareCreate: ({event}) => {\n syncAll();\n dispatch({el: root(), name: 'ui:create', detail: {\n search: currentContext().search.query,\n value: currentContext().creation.value,\n modal: typeof event.modal === 'string' ? event.modal : '',\n }});\n },\n syncProps: ({event}) => propsChanged(event),\n syncOptions: reconcileOptions,\n syncActive: syncAll,\n syncDom: syncAll,\n },\n }),\n });\n\n const sendSelection = (\n type: 'SELECT' | 'DESELECT' | 'SELECT_ALL',\n selection: SelectContext['selection'],\n ): void => bridge.send({type, selection});\n\n const selectOption = (option: SelectOption, catalog: OptionCatalog, event?: Event): void => {\n event?.preventDefault();\n const props = currentProps();\n if (props.disabled || props.readonly || option.disabled) return;\n if (option.create) {\n bridge.send({\n type: 'CREATE',\n value: option.value || currentContext().search.query,\n modal: option.el.dataset.modal ?? '',\n });\n return;\n }\n\n lastOptionEl = option.el;\n inputSearching = false;\n const currentValues = selectionValues();\n const values = props.multiple\n ? currentValues.includes(option.value)\n ? currentValues.filter((value) => value !== option.value)\n : [...currentValues, option.value]\n : [option.value];\n sendSelection('SELECT', selectionForValues(values, catalog));\n };\n\n const setActive = (value: string): void => withOptionCatalog((catalog) => {\n if (value === currentContext().navigation.activeValue) return;\n bridge.send({type: 'ACTIVE', value});\n const option = optionProjection(catalog).firstByValue.get(value);\n dispatch({el: root(), name: 'ui:highlight', detail: {value, option: option?.el ?? null}});\n });\n\n const moveActive = (delta: 1 | -1): void => withOptionCatalog((catalog) => {\n const records = optionProjection(catalog).enabled;\n if (records.length === 0) return;\n const current = records.findIndex((option) => option.value === currentContext().navigation.activeValue);\n let index = current < 0 ? delta > 0 ? 0 : records.length - 1 : current + delta;\n if (index >= records.length) index = currentProps().loop ? 0 : records.length - 1;\n if (index < 0) index = currentProps().loop ? records.length - 1 : 0;\n setActive(records[index]?.value ?? '');\n });\n\n const setSearch = (query: string): void => withOptionCatalog((catalog) => {\n const props = currentProps();\n if (props.disabled || props.readonly) return;\n inputSearching = true;\n const first = props.autoHighlight ? optionProjection(catalog, query).enabled[0]?.value ?? '' : '';\n bridge.send({type: 'SEARCH', query, optionsId, activeValue: first});\n });\n\n const handleKeydown = (event: KeyboardEvent): void => withOptionCatalog((catalog) => {\n if (event.key === 'Tab' && popover?.presentation() !== 'anchored') {\n trapFocus(event, popoverEl());\n return;\n }\n const textInput = event.target instanceof HTMLInputElement;\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n if (!isExpanded()) bridge.send({type: 'OPEN'});\n moveActive(event.key === 'ArrowDown' ? 1 : -1);\n return;\n }\n if (!textInput && isExpanded() && (event.key === 'Home' || event.key === 'End')) {\n event.preventDefault();\n const records = optionProjection(catalog).enabled;\n setActive(event.key === 'Home' ? records[0]?.value ?? '' : records.at(-1)?.value ?? '');\n return;\n }\n if (isExpanded() && (event.key === 'Enter' || (!textInput && event.key === ' '))) {\n const option = optionProjection(catalog).firstByValue.get(currentContext().navigation.activeValue);\n if (option) selectOption(option, catalog, event);\n return;\n }\n if ((event.key === 'Backspace' || event.key === 'Delete') && isPillbox() && !currentContext().search.query) {\n const inputEl = input();\n if (inputEl && (inputEl.selectionStart !== 0 || inputEl.selectionEnd !== 0)) return;\n const unfiltered = catalog.project('', currentContext().selection);\n const value = [...selectionValues()].reverse().find((candidate) => (\n !unfiltered.firstByValue.get(candidate)?.disabled\n ));\n if (value) {\n event.preventDefault();\n component.deselect(value, event);\n }\n return;\n }\n if (event.key === 'Escape' && isVisible()) {\n event.preventDefault();\n event.stopPropagation();\n bridge.send({type: 'CLOSE', restoreFocus: true});\n return;\n }\n if (!textInput && !fixedSearchAvailable(catalog) && event.key.length === 1 && !event.metaKey && !event.ctrlKey && !event.altKey) {\n typeahead += event.key.toLowerCase();\n window.clearTimeout(typeaheadTimer);\n typeaheadTimer = window.setTimeout(() => { typeahead = ''; }, 500);\n const match = optionProjection(catalog).enabled.find((option) => normalizeOptionText(option.label).startsWith(typeahead));\n if (match) setActive(match.value);\n }\n });\n\n const setup = (): void => {\n const el = root();\n const activateControl = (event: Event, target: Element): boolean => {\n if (!target.closest('[data-ui-select-trigger], [data-ui-select-icon=\"trailing\"], [data-ui-select-control]')) {\n return false;\n }\n event.preventDefault();\n if (event instanceof PointerEvent || (event instanceof MouseEvent && event.detail > 0)) {\n focusWithoutIndicator(trigger());\n } else trigger().focus({preventScroll: true});\n if (trigger() instanceof HTMLInputElement) {\n if (!isExpanded()) bridge.send({type: 'OPEN'});\n } else component.toggle(event);\n return true;\n };\n\n addListener({target: el, event: 'click', cleanup, handler: (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n if (target.closest('[data-ui-select-sheet-close]')) {\n component.close(event);\n return;\n }\n const searchClear = target.closest('[data-ui-select-search-clear]');\n if (searchClear) {\n event.preventDefault();\n setSearch('');\n return;\n }\n const clear = target.closest('[data-ui-select-clear], [data-ui-select-button-clear]');\n if (clear) {\n component.clear(event);\n return;\n }\n const chipRemove = target.closest<HTMLElement>('[data-ui-select-chip-remove]');\n if (chipRemove) {\n component.deselect(chipRemove.dataset.value ?? '', event);\n return;\n }\n const optionEl = target.closest<HTMLElement>(optionSelector);\n if (optionEl) {\n withOptionCatalog((catalog) => {\n const option = optionProjection(catalog).byElement.get(optionEl);\n if (option) selectOption(option, catalog, event);\n });\n return;\n }\n if (!(event instanceof MouseEvent) || event.detail === 0) activateControl(event, target);\n }});\n addListener({target: el, event: 'input', cleanup, handler: (event) => {\n const target = event.target;\n if (!(target instanceof HTMLInputElement)) return;\n if (target.matches('[data-ui-select-input], [data-ui-select-search-input]')) setSearch(target.value);\n }});\n addListener({target: el, event: 'keydown', cleanup, handler: (event) => {\n if (event instanceof KeyboardEvent) handleKeydown(event);\n }});\n addListener({target: el, event: 'pointerdown', cleanup, handler: (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n if (\n target.closest(optionSelector)\n || target.closest('[data-ui-select-search-clear]')\n || target.closest('[data-ui-select-clear], [data-ui-select-button-clear], [data-ui-select-chip-remove]')\n ) {\n event.preventDefault();\n return;\n }\n activateControl(event, target);\n }});\n addListener({target: el, event: 'pointerover', cleanup, handler: (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n const optionEl = target.closest<HTMLElement>(optionSelector);\n if (!optionEl) return;\n withOptionCatalog((catalog) => {\n const option = optionProjection(catalog).byElement.get(optionEl);\n if (option && option.visible && !option.disabled) setActive(option.value);\n });\n }});\n addListener({target: el, event: 'focusout', cleanup, handler: (event) => {\n if (!(event instanceof FocusEvent)) return;\n const next = event.relatedTarget;\n if (next instanceof Node && el.contains(next)) return;\n if (isVisible()) bridge.send({type: 'CLOSE'});\n }});\n addListener({target: el, event: 'ui:virtualizer-total-change', cleanup, handler: (event) => {\n if (!(event instanceof CustomEvent) || !virtualizerEl()?.contains(event.target as Node)) return;\n const total = Number(event.detail?.totalItems);\n if (Number.isFinite(total) && total >= 0) {\n virtualTotal = Math.floor(total);\n virtualSearchPopulation = Math.max(virtualSearchPopulation, virtualTotal);\n }\n bridge.send({type: 'OPTIONS_CHANGED'});\n }});\n addListener({target: el, event: 'ui:virtualizer-load', cleanup, handler: (event) => {\n if (!virtualizerEl()?.contains(event.target as Node)) return;\n bridge.send({type: 'OPTIONS_CHANGED'});\n }});\n addListener({target: popoverEl(), event: 'toggle', cleanup, handler: (event) => {\n if (!('newState' in event) || event.newState !== 'closed' || !isVisible()) return;\n bridge.send({type: 'CLOSE'});\n }});\n cleanup.add(addDismissableLayer({\n isEnabled: () => bridge.hasTag('interactive'),\n roots: () => [root(), popoverEl()],\n onDismiss: () => bridge.send({type: 'CLOSE'}),\n }));\n\n const observeSelectedTemplates = (): void => {\n disconnectSelectedTemplateObservers?.();\n const observers = Array.from(root().querySelectorAll<HTMLTemplateElement>(selectedTemplateSelector))\n .map((template) => {\n const observer = new MutationObserver(() => {\n optionRevision += 1;\n bridge.send({type: 'OPTIONS_CHANGED'});\n });\n observer.observe(template.content, {\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true,\n });\n return observer;\n });\n disconnectSelectedTemplateObservers = () => observers.forEach((observer) => observer.disconnect());\n };\n\n disconnectObserver = observeSemanticChanges({\n targets: listbox(),\n read: optionDomSignature,\n onChange: () => {\n optionRevision += 1;\n observeSelectedTemplates();\n bridge.send({type: 'OPTIONS_CHANGED'});\n },\n observer: {\n attributes: true,\n attributeFilter: [\n 'data-disabled',\n 'data-item',\n 'data-label',\n 'data-selected',\n 'data-selected-label',\n 'data-text-value',\n 'data-ui-select-option-selected-template',\n 'data-value',\n ],\n characterData: true,\n childList: true,\n subtree: true,\n },\n });\n observeSelectedTemplates();\n };\n\n let component!: TrellisAlpineComponent<SelectData>;\n component = {\n ...bridge,\n get isOpen(): boolean {\n return this.snapshot.current?.tags.includes('expanded') ?? false;\n },\n get isSearching(): boolean {\n return this.snapshot.current?.tags.includes('searching') ?? false;\n },\n get value(): string {\n return this.snapshot.current?.context.selection[0]?.value ?? '';\n },\n get values(): readonly string[] {\n return this.snapshot.current?.context.selection.map(({value}) => value) ?? [];\n },\n get selectedLabels(): readonly string[] {\n return this.snapshot.current?.context.selection.map(({label}) => label) ?? [];\n },\n get search(): string {\n return this.snapshot.current?.context.search.query ?? '';\n },\n get activeValue(): string {\n return this.snapshot.current?.context.navigation.activeValue ?? '';\n },\n init(): void {\n cleanup = cleanupManagerFor(this);\n rootEl = this.$el;\n buttonId = this.$id('select-button');\n inputId = this.$id('select-input');\n listboxId = this.$id('select-listbox');\n optionsId = optionsEl().id || root().dataset.optionsId || this.$id('select-options');\n optionsEl().id = optionsId;\n bridge.connect(this.$el, this.snapshot);\n virtualTotal = currentProps().optionsTotalItems;\n virtualSearchPopulation = virtualTotal;\n sheetTitle().id ||= `${listboxId}-title`;\n popover = createSelectSurface({\n reference: control,\n floating: popoverEl,\n labelId: () => sheetTitle().id,\n position: () => currentProps().side,\n align: () => currentProps().align,\n gap: () => currentProps().gap,\n offset: () => currentProps().offset,\n matchReferenceWidth: true,\n });\n setup();\n syncAll();\n queueMicrotask(syncVirtualizerUrl);\n reflectControlledState = true;\n if (currentProps().open && !currentProps().disabled && !currentProps().readonly) {\n queueMicrotask(() => bridge.send({type: 'OPEN'}));\n }\n },\n destroy(): void {\n window.clearTimeout(typeaheadTimer);\n window.clearTimeout(virtualSearchTimer);\n disconnectObserver?.();\n disconnectObserver = null;\n disconnectSelectedTemplateObservers?.();\n disconnectSelectedTemplateObservers = null;\n popover?.destroy();\n popover = null;\n bridge.disconnect();\n rootEl = null;\n },\n get root(): BindingObject {\n const props = this.snapshot.current?.props ?? currentProps();\n return mergeBindings({inputs: [\n resolveStyle({part: selectStyles.parts.root, props, className: props.class}),\n {\n 'data-ui-select': '',\n ':data-state': () => (bridge.hasTag('expanded') ? 'open' : 'closed'),\n },\n ]});\n },\n open(event?: Event): void {\n event?.preventDefault();\n if (currentProps().disabled || currentProps().readonly) return;\n bridge.send({type: 'OPEN'});\n },\n close(event?: Event): void {\n event?.preventDefault();\n bridge.send({type: 'CLOSE', restoreFocus: event instanceof KeyboardEvent});\n },\n toggle(event?: Event): void {\n event?.preventDefault();\n if (currentProps().disabled || currentProps().readonly) return;\n bridge.send({type: 'TOGGLE'});\n },\n select(value: string, event?: Event): void {\n withOptionCatalog((catalog) => {\n const option = catalog.project('', currentContext().selection).firstByValue.get(value);\n if (option && !option.create) selectOption(option, catalog, event);\n });\n },\n deselect(value: string, event?: Event): void {\n withOptionCatalog((catalog) => {\n event?.preventDefault();\n if (currentProps().disabled || currentProps().readonly) return;\n const option = catalog.project('', currentContext().selection).firstByValue.get(value);\n if (option?.disabled) return;\n sendSelection('DESELECT', selectionForValues(\n selectionValues().filter((candidate) => candidate !== value),\n catalog,\n ));\n });\n },\n selectAll(event?: Event): void {\n withOptionCatalog((catalog) => {\n event?.preventDefault();\n if (!currentProps().multiple || currentProps().disabled || currentProps().readonly) return;\n const records = optionProjection(catalog).enabled;\n sendSelection('SELECT_ALL', records.map((option) => ({\n value: option.value,\n label: option.selectedLabel,\n })));\n });\n },\n clear(event?: Event): void {\n event?.preventDefault();\n event?.stopPropagation();\n if (currentProps().disabled || currentProps().readonly) return;\n inputSearching = false;\n const resetRemoteSearch = currentContext().search.query !== '';\n bridge.send({type: 'CLEAR'});\n if (resetRemoteSearch) scheduleVirtualSearch();\n },\n setSearch,\n };\n\n return component;\n};\n\nconst registerSelect = defineAlpineData('UiSelect', UiSelect);\n\nexport {registerSelect, UiSelect};\nexport type {SelectData, SelectTransition, UiSelectApi};\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 {registerSelect as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerSelect = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerSelect};\nexport default registerSelect;\nexport * from './index';\n"],"mappings":"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CN,KAAM,KACN,QAAS,UACT,OAAQ,KACR,KAAM,UACN,MAAO,EACX,CACJ,EACA,OAAQ,CACJ,KAAM,CACF,wGACJ,CACJ,EACA,eAAgB,CACZ,KAAM,uBACV,EACA,MAAO,CACH,KAAM,yBACV,EACA,YAAa,CACT,KAAM,gDACV,EACA,MAAO,CACH,KAAM,CACF,yBACA,CACJ,CACJ,EACA,OAAQ,CACJ,KAAM,CACF,0DACA,SACJ,CACJ,EACA,YAAa,CACT,KAAM,CACF,yBACA,CACJ,CACJ,EACA,YAAa,CACT,KAAM,EACV,EACA,aAAc,CACV,KAAM,sCACV,EACA,WAAY,CACR,KAAM,+CACV,EACA,WAAY,CACR,KAAM,CACF,8GACA,iEACJ,CACJ,EACA,MAAO,CACH,KAAM,2CACV,EACA,KAAM,CACF,KAAM,CACF,UACJ,CACJ,EACA,UAAW,CACP,KAAM,+BACV,EACA,WAAY,CACR,KAAM,EACV,EACA,KAAM,CACF,KAAM,yDACN,SAAU,CACN,SAAU,CACN,QAAS,GACT,SAAU,EACd,CACJ,EACA,SAAU,CACN,SAAU,SACd,CACJ,EACA,OAAQ,CACJ,KAAM,EACV,EACA,QAAS,CACL,KAAM,CACF,GACA,oCACJ,CACJ,EACA,QAAS,CACL,KAAM,yDACV,EACA,SAAU,CACN,KAAM,4BACV,EACA,QAAS,CACL,KAAM,oFACV,EACA,eAAgB,CACZ,KAAM,qFACV,EACA,OAAQ,CACJ,KAAM,4BACV,EACA,OAAQ,CACJ,KAAM,CACF,GACA,qCACA,oDACA,yDACA,iDACJ,CACJ,EACA,YAAa,CACT,KAAM,yBACV,EACA,WAAY,CACR,KAAM,CACV,EACA,WAAY,CACR,KAAM,EACN,SAAU,CACN,SAAU,CACN,QAAS,GACT,SAAU,SACd,CACJ,EACA,SAAU,CACN,SAAU,SACd,CACJ,EACA,gBAAiB,CACb,KAAM,EACV,EACA,MAAO,CACH,KAAM,wCACV,EACA,MAAO,CACH,KAAM,kCACV,EACA,MAAO,CACH,KAAM,iEACV,EACA,cAAe,CACX,KAAM,+DACV,EACA,cAAe,CACX,KAAM,wDACV,EACA,cAA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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e}from"./dom-DiTFTWeR.js";import{f as t}from"./codecs-Cb1ns_47.js";import{t as n}from"./alpine-machine-9HwatUrm.js";import{n as r}from"./alpine-data-Dvc_bXq6.js";import{t as i}from"./machine-DQfpKM3w.js";var a={startUrl:t,completeUrl:t,purpose:t},o=[],s=(e,t)=>({status:e,uploadId:typeof t.event.uploadId==`string`?t.event.uploadId:t.context.uploadId,error:typeof t.event.error==`string`?t.event.error:``}),c=e=>t=>({context:s(e,t)}),l=({props:e,effects:t})=>i({initial:`idle`,states:{idle:{on:{START:{target:`starting`,reduce:`starting`,effects:`sync`}}},starting:{on:{TRANSFER:{target:`transferring`,reduce:`transferring`,effects:`sync`},FAIL:{target:`failed`,reduce:`failed`,effects:`sync`},CANCEL:{target:`canceled`,reduce:`canceled`,effects:`sync`}}},transferring:{on:{COMPLETE:{target:`completing`,reduce:`completing`,effects:`sync`},FAIL:{target:`failed`,reduce:`failed`,effects:`sync`},CANCEL:{target:`canceled`,reduce:`canceled`,effects:`sync`}}},completing:{on:{SUCCEED:{target:`complete`,reduce:`complete`,effects:`sync`},FAIL:{target:`failed`,reduce:`failed`,effects:`sync`},CANCEL:{target:`canceled`,reduce:`canceled`,effects:`sync`}}},complete:{on:{START:{target:`starting`,reduce:`starting`,effects:`sync`},CLEAR:{target:`idle`,reduce:`idle`,effects:`sync`}}},failed:{on:{START:{target:`starting`,reduce:`starting`,effects:`sync`},CLEAR:{target:`idle`,reduce:`idle`,effects:`sync`}}},canceled:{on:{START:{target:`starting`,reduce:`starting`,effects:`sync`},CLEAR:{target:`idle`,reduce:`idle`,effects:`sync`}}}}},{context:{status:`idle`,uploadId:``,error:``},props:e,reducers:{idle:c(`idle`),starting:c(`starting`),transferring:c(`transferring`),completing:c(`completing`),complete:c(`complete`),failed:c(`failed`),canceled:c(`canceled`)},effects:t}),u=()=>document.querySelector(`meta[name="csrf-token"]`)?.content??``,d=(e,t)=>{if(!e||typeof e!=`object`)return t;let n=Reflect.get(e,`errors`);if(!n||typeof n!=`object`)return t;let r=Object.values(n)[0];if(typeof r==`string`)return r;if(Array.isArray(r)&&r.length>0){let e=r[0];if(typeof e==`string`)return e;if(e&&typeof e==`object`&&typeof Reflect.get(e,`message`)==`string`)return Reflect.get(e,`message`)}return t},f=async(e,t,n={})=>{let r=new FormData;Object.entries(t).forEach(([e,t])=>r.append(e,String(t)));let i=new Headers,a=u();a&&i.set(`X-CSRFToken`,a);let o=await fetch(e,{method:`POST`,body:r,headers:i,credentials:`same-origin`,...n.signal?{signal:n.signal}:{}}),s=await o.json().catch(()=>null);if(!o.ok)throw Error(d(s,`Upload request failed (${o.status}).`));if(s===null)throw Error(`Upload request returned no data.`);return s},p=(e,t,n={})=>new Promise((r,i)=>{let a=new XMLHttpRequest,o=new FormData;Object.entries(e.fields).forEach(([e,t])=>o.append(e,t));let s=new URL(e.url,document.baseURI);if(s.origin===window.location.origin){let e=u();if(e&&o.append(`csrfmiddlewaretoken`,e),!n.capability){i(Error(`A same-origin direct upload requires its upload capability.`));return}o.append(`capability`,n.capability)}o.append(e.file_field,t);let c=()=>n.signal?.removeEventListener(`abort`,l),l=()=>a.abort();if(a.upload.addEventListener(`progress`,e=>{e.lengthComputable&&n.onProgress?.(e.loaded,e.total)}),a.addEventListener(`load`,()=>{if(c(),a.status>=200&&a.status<300){r();return}let e=null;try{e=JSON.parse(a.responseText)}catch{}i(Error(d(e,`Object transfer failed (${a.status}).`)))}),a.addEventListener(`error`,()=>{c(),i(Error(`Object transfer failed.`))}),a.addEventListener(`abort`,()=>{c(),i(new DOMException(`Upload canceled.`,`AbortError`))}),n.signal?.addEventListener(`abort`,l,{once:!0}),n.signal?.aborted){l();return}a.open(e.method,s.toString()),a.send(o)}),m=()=>{let t=null,r=null,i=null,s=new Set,c=!1,u=new Map,d=()=>{if(!t)throw Error(`Direct upload has not been initialized.`);return t},m=()=>{let e=d().querySelector(`[data-ui-direct-upload-values]`);if(!e)throw Error(`Direct upload requires a hidden values container.`);return e},h=()=>{let e=m(),t=[...e.querySelectorAll(`[data-ui-direct-upload-value]`)].map(e=>e.value).filter(Boolean),n=[...u.values()];if(t.length===n.length&&t.every((e,t)=>e===n[t]))return!1;let r=[...u.entries()].map(([e,t])=>{let n=document.createElement(`input`);return n.type=`hidden`,n.name=d().dataset.name??``,n.value=t,n.dataset.uiDirectUploadValue=``,n.dataset.uploadKey=e,n});if(r.length===0){let e=document.createElement(`input`);e.type=`hidden`,e.name=d().dataset.name??``,e.dataset.uiDirectUploadValue=``,r.push(e)}e.replaceChildren(...r);let i=r[0];return i&&(i.dispatchEvent(new Event(`input`,{bubbles:!0})),i.dispatchEvent(new Event(`change`,{bubbles:!0}))),!0},g=()=>{let e=v.getCommittedSnapshot();d().dataset.uploadState=e.context.status,e.context.error?d().dataset.uploadError=e.context.error:delete d().dataset.uploadError},_=()=>{r?.abort(),r=null,u.clear(),s.clear(),c=!1;let t=h(),n=d().querySelector(`[data-ui-file-upload-root]`);n?.querySelector(`[data-ui-file-upload-item][data-existing-file]:not([hidden])`)&&n.dispatchEvent(new CustomEvent(`trellis:file-upload-clear-existing`)),v.send(`CLEAR`),t&&e({el:d(),name:`ui:direct-upload-clear`})},v=n({schema:a,hooks:o,createMachine:({props:e})=>l({props:e,effects:{sync:g}})});return{...v,init(){t=this.$el,v.connect(t,this.snapshot),t.querySelectorAll(`[data-ui-direct-upload-value]`).forEach((e,t)=>{e.value&&u.set(e.dataset.uploadKey??`existing-${t}`,e.value)});let e=e=>{if(!(e instanceof CustomEvent))return;let t=e.detail,n=new Set((t?.files??[]).flatMap(({id:e})=>typeof e==`string`?[e]:[])),r=Array.isArray(t?.removedExistingIds)?t.removedExistingIds.filter(e=>typeof e==`string`):[];if(r.length>0){r.forEach(e=>u.delete(e)),s=n,h(),u.size===0&&n.size===0&&v.send(`CLEAR`);return}if(t?.source===`picker`||t?.source===`drop`){if(n.size===0){s.clear(),c=!1;return}let e=[...u.keys()].some(e=>e.startsWith(`existing-`));c=t.source===`picker`||Number(d().dataset.maxItems??`1`)===1||e,s=n;return}[...s].filter(e=>!n.has(e)).forEach(e=>u.delete(e)),s=n,h(),u.size===0&&n.size===0&&v.send(`CLEAR`)};t.addEventListener(`ui:file-upload-change`,e),i=()=>t?.removeEventListener(`ui:file-upload-change`,e),g()},destroy(){r?.abort(),r=null,i?.(),i=null,u.clear(),s.clear(),c=!1,v.disconnect(),t=null},clear(){_()},async upload(t,n){let i=t.data.files;if(i.length===0)return;r?.abort();let a=new AbortController;r=a;let o=()=>a.abort();t.signal.addEventListener(`abort`,o,{once:!0});try{let r=v.getCommittedSnapshot().props,o=[];for(let e of i){let i=n(e.id);if(!i)throw Error(`The selected file is no longer available.`);v.send(`START`);let s=await f(r.startUrl,{purpose:r.purpose,original_name:i.name,content_type:i.type||`application/octet-stream`,size:i.size},{signal:a.signal});v.send({type:`TRANSFER`,uploadId:s.upload_id}),await p(s.instructions,i,{signal:a.signal,capability:s.capability,onProgress:(n,r)=>t.send.progress(e.id,n,r)}),v.send(`COMPLETE`);let c=await f(r.completeUrl,{capability:s.capability},{signal:a.signal});t.send.progress(e.id,e.bytes,e.bytes),v.send({type:`SUCCEED`,uploadId:c.upload_id}),o.push({recordId:e.id,capability:s.capability,completed:c})}c&&u.clear(),o.forEach(({recordId:e,capability:t})=>u.set(e,t)),c=!1,h(),e({el:d(),name:`ui:direct-upload-complete`,detail:{uploads:o.map(({completed:e})=>e)}})}catch(n){if(a.signal.aborted)v.send(`CANCEL`);else{let r=n instanceof Error?n.message:String(n);v.send({type:`FAIL`,error:r}),t.send.fail(n),e({el:d(),name:`ui:direct-upload-error`,detail:{error:r}})}throw n}finally{t.signal.removeEventListener(`abort`,o),r===a&&(r=null)}}}},h=r(`UiDirectUpload`,m),g=new WeakSet,_=e=>{g.has(e)||(g.add(e),h(e))};export{m as n,_ as t};
|
|
2
|
+
//# sourceMappingURL=entry.generated-B3hMqvMn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry.generated-B3hMqvMn.js","names":[],"sources":["../../../../../../../../client/src/components/direct-upload/contract.ts","../../../../../../../../client/src/components/direct-upload/machine.ts","../../../../../../../../client/src/components/direct-upload/transport.ts","../../../../../../../../client/src/components/direct-upload/index.ts","../../../../../../../../client/src/components/direct-upload/entry.generated.ts"],"sourcesContent":["import {string, type SchemaToProps} from '../../runtime';\n\nconst directUploadSchema = {\n startUrl: string,\n completeUrl: string,\n purpose: string,\n};\n\ntype DirectUploadProps = SchemaToProps<typeof directUploadSchema>;\n\nexport {directUploadSchema};\nexport type {DirectUploadProps};\n","import {createMachine, type Machine, type MachineScope} from '../../runtime/state-machine';\nimport type {DirectUploadProps} from './contract';\n\ntype DirectUploadStatus = 'idle' | 'starting' | 'transferring' | 'completing' | 'complete' | 'failed' | 'canceled';\ntype DirectUploadContext = {status: DirectUploadStatus; uploadId: string; error: string};\ntype DirectUploadEffects = {sync(scope: MachineScope<DirectUploadContext, DirectUploadProps>): void};\n\nconst directUploadHooks = [] as const;\nconst contextFor = (\n status: DirectUploadStatus,\n scope: MachineScope<DirectUploadContext, DirectUploadProps>,\n): DirectUploadContext => ({\n status,\n uploadId: typeof scope.event.uploadId === 'string' ? scope.event.uploadId : scope.context.uploadId,\n error: typeof scope.event.error === 'string' ? scope.event.error : '',\n});\nconst reducerFor = (status: DirectUploadStatus) => (\n scope: MachineScope<DirectUploadContext, DirectUploadProps>,\n) => ({context: contextFor(status, scope)});\n\nconst createDirectUploadMachine = ({\n props,\n effects,\n}: {\n props: DirectUploadProps;\n effects: DirectUploadEffects;\n}): Machine<DirectUploadContext, DirectUploadProps> => createMachine<DirectUploadContext, DirectUploadProps>({\n initial: 'idle',\n states: {\n idle: {on: {START: {target: 'starting', reduce: 'starting', effects: 'sync'}}},\n starting: {\n on: {\n TRANSFER: {target: 'transferring', reduce: 'transferring', effects: 'sync'},\n FAIL: {target: 'failed', reduce: 'failed', effects: 'sync'},\n CANCEL: {target: 'canceled', reduce: 'canceled', effects: 'sync'},\n },\n },\n transferring: {\n on: {\n COMPLETE: {target: 'completing', reduce: 'completing', effects: 'sync'},\n FAIL: {target: 'failed', reduce: 'failed', effects: 'sync'},\n CANCEL: {target: 'canceled', reduce: 'canceled', effects: 'sync'},\n },\n },\n completing: {\n on: {\n SUCCEED: {target: 'complete', reduce: 'complete', effects: 'sync'},\n FAIL: {target: 'failed', reduce: 'failed', effects: 'sync'},\n CANCEL: {target: 'canceled', reduce: 'canceled', effects: 'sync'},\n },\n },\n complete: {on: {START: {target: 'starting', reduce: 'starting', effects: 'sync'}, CLEAR: {target: 'idle', reduce: 'idle', effects: 'sync'}}},\n failed: {on: {START: {target: 'starting', reduce: 'starting', effects: 'sync'}, CLEAR: {target: 'idle', reduce: 'idle', effects: 'sync'}}},\n canceled: {on: {START: {target: 'starting', reduce: 'starting', effects: 'sync'}, CLEAR: {target: 'idle', reduce: 'idle', effects: 'sync'}}},\n },\n}, {\n context: {status: 'idle', uploadId: '', error: ''},\n props,\n reducers: {\n idle: reducerFor('idle'),\n starting: reducerFor('starting'),\n transferring: reducerFor('transferring'),\n completing: reducerFor('completing'),\n complete: reducerFor('complete'),\n failed: reducerFor('failed'),\n canceled: reducerFor('canceled'),\n },\n effects,\n});\n\nexport {createDirectUploadMachine, directUploadHooks};\nexport type {DirectUploadContext, DirectUploadEffects, DirectUploadStatus};\n","type DirectUploadInstructions = {\n transport: string;\n method: 'POST';\n url: string;\n fields: Record<string, string>;\n file_field: string;\n};\n\ntype TransferOptions = {\n signal?: AbortSignal;\n onProgress?: (loaded: number, total: number) => void;\n capability?: string;\n};\n\nconst csrfToken = (): string => document.querySelector<HTMLMetaElement>('meta[name=\"csrf-token\"]')?.content ?? '';\nconst errorMessage = (payload: unknown, fallback: string): string => {\n if (!payload || typeof payload !== 'object') return fallback;\n const errors = Reflect.get(payload, 'errors');\n if (!errors || typeof errors !== 'object') return fallback;\n const first = Object.values(errors)[0];\n if (typeof first === 'string') return first;\n if (Array.isArray(first) && first.length > 0) {\n const value = first[0];\n if (typeof value === 'string') return value;\n if (value && typeof value === 'object' && typeof Reflect.get(value, 'message') === 'string') {\n return Reflect.get(value, 'message') as string;\n }\n }\n return fallback;\n};\n\nconst postDirectUpload = async <T>(\n url: string,\n data: Record<string, string | number>,\n options: {signal?: AbortSignal} = {},\n): Promise<T> => {\n const body = new FormData();\n Object.entries(data).forEach(([key, value]) => body.append(key, String(value)));\n const headers = new Headers();\n const csrf = csrfToken();\n if (csrf) headers.set('X-CSRFToken', csrf);\n const response = await fetch(url, {\n method: 'POST',\n body,\n headers,\n credentials: 'same-origin',\n ...(options.signal ? {signal: options.signal} : {}),\n });\n const payload = await response.json().catch(() => null) as T | null;\n if (!response.ok) throw new Error(errorMessage(payload, `Upload request failed (${response.status}).`));\n if (payload === null) throw new Error('Upload request returned no data.');\n return payload;\n};\n\nconst transferDirectUpload = (\n instructions: DirectUploadInstructions,\n file: File,\n options: TransferOptions = {},\n): Promise<void> => new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n const body = new FormData();\n Object.entries(instructions.fields).forEach(([key, value]) => body.append(key, value));\n const target = new URL(instructions.url, document.baseURI);\n const sameOrigin = target.origin === window.location.origin;\n if (sameOrigin) {\n const csrf = csrfToken();\n if (csrf) body.append('csrfmiddlewaretoken', csrf);\n if (!options.capability) {\n reject(new Error('A same-origin direct upload requires its upload capability.'));\n return;\n }\n body.append('capability', options.capability);\n }\n body.append(instructions.file_field, file);\n\n const cleanup = (): void => options.signal?.removeEventListener('abort', abort);\n const abort = (): void => request.abort();\n request.upload.addEventListener('progress', (event) => {\n if (event.lengthComputable) options.onProgress?.(event.loaded, event.total);\n });\n request.addEventListener('load', () => {\n cleanup();\n if (request.status >= 200 && request.status < 300) {\n resolve();\n return;\n }\n let payload: unknown = null;\n try { payload = JSON.parse(request.responseText); } catch { /* response may be XML or empty */ }\n reject(new Error(errorMessage(payload, `Object transfer failed (${request.status}).`)));\n });\n request.addEventListener('error', () => { cleanup(); reject(new Error('Object transfer failed.')); });\n request.addEventListener('abort', () => { cleanup(); reject(new DOMException('Upload canceled.', 'AbortError')); });\n options.signal?.addEventListener('abort', abort, {once: true});\n if (options.signal?.aborted) {\n abort();\n return;\n }\n request.open(instructions.method, target.toString());\n request.send(body);\n});\n\nexport {postDirectUpload, transferDirectUpload};\nexport type {DirectUploadInstructions, TransferOptions};\n","import type Alpine from 'alpinejs';\n\nimport {\n createAlpineMachine,\n defineAlpineData,\n dispatch,\n type AlpineMachine,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport type {FileUploadTransition} from '../file-upload';\nimport {directUploadSchema, type DirectUploadProps} from './contract';\nimport {\n createDirectUploadMachine,\n directUploadHooks,\n type DirectUploadContext,\n} from './machine';\nimport {\n postDirectUpload,\n transferDirectUpload,\n type DirectUploadInstructions,\n} from './transport';\n\ntype ResolveFile = (id: string) => File | null;\ntype StartResponse = {upload_id: string; capability: string; instructions: DirectUploadInstructions};\ntype CompleteResponse = {upload_id: string; key: string};\n\ninterface UiDirectUploadApi {\n clear(): void;\n upload(transition: FileUploadTransition<'uploading'>, resolveFile: ResolveFile): Promise<void>;\n}\n\ntype DirectUploadData = AlpineMachine<DirectUploadContext, DirectUploadProps, typeof directUploadHooks>\n & UiDirectUploadApi\n & {init(): void; destroy(): void};\n\nconst UiDirectUpload = (): TrellisAlpineComponent<DirectUploadData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let activeController: AbortController | null = null;\n let disconnectFileUpload: (() => void) | null = null;\n let selectedFileIds = new Set<string>();\n let replaceOnCommit = false;\n const capabilities = new Map<string, string>();\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Direct upload has not been initialized.');\n return rootEl;\n };\n const valuesRoot = (): HTMLElement => {\n const container = root().querySelector<HTMLElement>('[data-ui-direct-upload-values]');\n if (!container) throw new Error('Direct upload requires a hidden values container.');\n return container;\n };\n const syncValues = (): boolean => {\n const container = valuesRoot();\n const current = [...container.querySelectorAll<HTMLInputElement>('[data-ui-direct-upload-value]')]\n .map((input) => input.value)\n .filter(Boolean);\n const next = [...capabilities.values()];\n if (current.length === next.length && current.every((value, index) => value === next[index])) return false;\n const inputs = [...capabilities.entries()].map(([key, capability]) => {\n const input = document.createElement('input');\n input.type = 'hidden';\n input.name = root().dataset.name ?? '';\n input.value = capability;\n input.dataset.uiDirectUploadValue = '';\n input.dataset.uploadKey = key;\n return input;\n });\n if (inputs.length === 0) {\n const input = document.createElement('input');\n input.type = 'hidden';\n input.name = root().dataset.name ?? '';\n input.dataset.uiDirectUploadValue = '';\n inputs.push(input);\n }\n container.replaceChildren(...inputs);\n const changed = inputs[0];\n if (changed) {\n changed.dispatchEvent(new Event('input', {bubbles: true}));\n changed.dispatchEvent(new Event('change', {bubbles: true}));\n }\n return true;\n };\n const syncDom = (): void => {\n const snapshot = bridge.getCommittedSnapshot();\n root().dataset.uploadState = snapshot.context.status;\n if (snapshot.context.error) root().dataset.uploadError = snapshot.context.error;\n else delete root().dataset.uploadError;\n };\n const clearUpload = (): void => {\n activeController?.abort();\n activeController = null;\n capabilities.clear();\n selectedFileIds.clear();\n replaceOnCommit = false;\n const changed = syncValues();\n const fileUpload = root().querySelector<HTMLElement>('[data-ui-file-upload-root]');\n if (fileUpload?.querySelector('[data-ui-file-upload-item][data-existing-file]:not([hidden])')) {\n fileUpload.dispatchEvent(new CustomEvent('trellis:file-upload-clear-existing'));\n }\n bridge.send('CLEAR');\n if (changed) dispatch({el: root(), name: 'ui:direct-upload-clear'});\n };\n const bridge = createAlpineMachine({\n schema: directUploadSchema,\n hooks: directUploadHooks,\n createMachine: ({props}) => createDirectUploadMachine({props, effects: {sync: syncDom}}),\n });\n\n return {\n ...bridge,\n init(): void {\n rootEl = this.$el;\n bridge.connect(rootEl, this.snapshot);\n rootEl.querySelectorAll<HTMLInputElement>('[data-ui-direct-upload-value]')\n .forEach((input, index) => {\n if (input.value) capabilities.set(input.dataset.uploadKey ?? `existing-${index}`, input.value);\n });\n const handleFileChange = (event: Event): void => {\n if (!(event instanceof CustomEvent)) return;\n const detail = event.detail as {\n files?: Array<{id?: unknown}>;\n removedExistingIds?: unknown;\n source?: unknown;\n } | undefined;\n const fileIds = new Set(\n (detail?.files ?? []).flatMap(({id}) => typeof id === 'string' ? [id] : []),\n );\n const removedExistingIds = Array.isArray(detail?.removedExistingIds)\n ? detail.removedExistingIds.filter((id): id is string => typeof id === 'string')\n : [];\n if (removedExistingIds.length > 0) {\n removedExistingIds.forEach((id) => capabilities.delete(id));\n selectedFileIds = fileIds;\n syncValues();\n if (capabilities.size === 0 && fileIds.size === 0) bridge.send('CLEAR');\n return;\n }\n if (detail?.source === 'picker' || detail?.source === 'drop') {\n if (fileIds.size === 0) {\n selectedFileIds.clear();\n replaceOnCommit = false;\n return;\n }\n const replacesExisting = [...capabilities.keys()].some((key) => key.startsWith('existing-'));\n replaceOnCommit = detail.source === 'picker'\n || Number(root().dataset.maxItems ?? '1') === 1\n || replacesExisting;\n selectedFileIds = fileIds;\n return;\n }\n const removedIds = [...selectedFileIds].filter((id) => !fileIds.has(id));\n removedIds.forEach((id) => capabilities.delete(id));\n selectedFileIds = fileIds;\n syncValues();\n if (capabilities.size === 0 && fileIds.size === 0) bridge.send('CLEAR');\n };\n rootEl.addEventListener('ui:file-upload-change', handleFileChange);\n disconnectFileUpload = () => rootEl?.removeEventListener('ui:file-upload-change', handleFileChange);\n syncDom();\n },\n destroy(): void {\n activeController?.abort();\n activeController = null;\n disconnectFileUpload?.();\n disconnectFileUpload = null;\n capabilities.clear();\n selectedFileIds.clear();\n replaceOnCommit = false;\n bridge.disconnect();\n rootEl = null;\n },\n clear(): void {\n clearUpload();\n },\n async upload(transition, resolveFile): Promise<void> {\n const records = transition.data.files;\n if (records.length === 0) return;\n\n activeController?.abort();\n const controller = new AbortController();\n activeController = controller;\n const cancel = (): void => controller.abort();\n transition.signal.addEventListener('abort', cancel, {once: true});\n try {\n const props = bridge.getCommittedSnapshot().props;\n const completedBatch: Array<{recordId: string; capability: string; completed: CompleteResponse}> = [];\n for (const record of records) {\n const file = resolveFile(record.id);\n if (!file) throw new Error('The selected file is no longer available.');\n bridge.send('START');\n const started = await postDirectUpload<StartResponse>(props.startUrl, {\n purpose: props.purpose,\n original_name: file.name,\n content_type: file.type || 'application/octet-stream',\n size: file.size,\n }, {signal: controller.signal});\n bridge.send({type: 'TRANSFER', uploadId: started.upload_id});\n await transferDirectUpload(started.instructions, file, {\n signal: controller.signal,\n capability: started.capability,\n onProgress: (loaded, total) => transition.send.progress(record.id, loaded, total),\n });\n bridge.send('COMPLETE');\n const completed = await postDirectUpload<CompleteResponse>(props.completeUrl, {\n capability: started.capability,\n }, {signal: controller.signal});\n transition.send.progress(record.id, record.bytes, record.bytes);\n bridge.send({type: 'SUCCEED', uploadId: completed.upload_id});\n completedBatch.push({recordId: record.id, capability: started.capability, completed});\n }\n if (replaceOnCommit) capabilities.clear();\n completedBatch.forEach(({recordId, capability}) => capabilities.set(recordId, capability));\n replaceOnCommit = false;\n syncValues();\n dispatch({\n el: root(),\n name: 'ui:direct-upload-complete',\n detail: {uploads: completedBatch.map(({completed}) => completed)},\n });\n } catch (error) {\n if (controller.signal.aborted) {\n bridge.send('CANCEL');\n } else {\n const reason = error instanceof Error ? error.message : String(error);\n bridge.send({type: 'FAIL', error: reason});\n transition.send.fail(error);\n dispatch({el: root(), name: 'ui:direct-upload-error', detail: {error: reason}});\n }\n throw error;\n } finally {\n transition.signal.removeEventListener('abort', cancel);\n if (activeController === controller) activeController = null;\n }\n },\n };\n};\n\nconst registerDirectUpload = defineAlpineData('UiDirectUpload', UiDirectUpload);\n\nexport {registerDirectUpload, UiDirectUpload};\nexport type {DirectUploadData, UiDirectUploadApi};\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 {registerDirectUpload as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerDirectUpload = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerDirectUpload};\nexport default registerDirectUpload;\nexport * from './index';\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{n as e,r as t,s as n,t as r}from"./dom-DiTFTWeR.js";import{s as i}from"./bridge-TcE7HSvq.js";import{t as a}from"./capability-motion-DAUyPPWa.js";import{c as o,f as s,l as c,n as l,s as u,u as d}from"./codecs-Cb1ns_47.js";import{i as f,t as p}from"./alpine-machine-9HwatUrm.js";import{n as m,t as ee}from"./alpine-data-Dvc_bXq6.js";import{n as te}from"./anchored-popover-CSBqS_MK.js";import{n as ne,t as h}from"./styles-TfvwVPGw.js";import{t as re}from"./merge-bindings-C8ewA_FD.js";import{t as g}from"./machine-DQfpKM3w.js";import{n as _,t as v}from"./props-change-2xfsIAEN.js";import{t as ie}from"./dismissable-layer-BROE-Ln2.js";import{i as y,n as ae,r as oe,t as se}from"./form-control-DL1Hkox3.js";import{I as b,L as x,N as S,a as C,c as w,d as ce,f as T,h as E,i as D,m as le,p as O,r as k,t as A,z as j}from"./common-De1R7Xh6.js";var ue=null,M=e=>{typeof customElements>`u`||customElements.get(`calendar-date`)||(ue??=i(()=>import(`./cally-Z6G-rzr-.js`),[]))},N=[`single`,`range`],de=[`enhanced`,`native`],P=w,F=[`auto`,`confirm`],fe=[`neutral`,`accent`],I=k,L=[`left`,`right`,`top`,`bottom`],R=j,z=ce,B={name:s,value:s,startName:s,endName:s,mode:c(N,`single`),placeholder:s,min:s,max:s,today:s,openTo:s,forceOpenTo:l,months:o.clamp(0,12).default(0),firstDayOfWeek:o.clamp(-1,6).default(0),locale:s,format:s.default(`%Y-%m-%d`),rangeSeparator:s.default(`/`),showOutsideDays:l,showWeekNumbers:l,fixedWeeks:l.default(!0),selectableHeader:l,withToday:l,clearable:l,disabled:l,readonly:l,required:l,invalid:l,side:c(x,`bottom`),align:c(A,`start`),offset:o.clamp(-100,100).default(0),gap:o.clamp(0,50).default(4),implementation:c(de,`enhanced`),variant:c(P,`outline`),color:c(fe,`neutral`),radius:c(I,`md`),surface:c(R,`+2`),elevation:c(z,`3`),close:c(F,`auto`),presets:u.array([]),presetsPosition:c(L,`left`),preset:s,presetName:s,triggerClass:s,inputClass:s,popoverClass:s,calendarClass:s,presetsClass:s,presetClass:s,class:s,form:s};c(P,`outline`),c(I,`md`),c(L,`left`);var pe=[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`})}})],V=e=>_(e)?.props??null,me=e=>e.disabled||e.readonly,H=(e,t)=>typeof e[t]==`string`?e[t]:``,U=e=>{let t=H(e,`source`);return t===`calendar`||t===`input`||t===`preset`||t===`today`||t===`props`?t:`clear`},W=({event:e})=>{let t=V(e);return!!(t&&(v(e,`disabled`)&&t.disabled||v(e,`readonly`)&&t.readonly))},he=({props:e})=>e.close===`auto`,G=(e,t,n)=>({...e,selection:{value:n,pendingValue:n,previousValue:e.selection.value,source:U(t)},input:{value:H(t,`input`),valid:!0},preset:{value:H(t,`preset`)}}),ge=({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:he,effects:`prepareClose`},APPLY:{target:`closing`,effects:`prepareClose`},PROPS_CHANGED:{target:`closing`,guard:W,effects:`prepareClose`}}},open:{tags:[`visible`,`expanded`,`interactive`,`open`],on:{CLOSE:{target:`closing`,effects:`prepareClose`},TOGGLE:{target:`closing`,effects:`prepareClose`},SELECT:{target:`closing`,guard:he,effects:`prepareClose`},APPLY:{target:`closing`,effects:`prepareClose`},PROPS_CHANGED:{target:`closing`,guard:W,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:H(t,`input`),valid:!0}}}),setInvalidInput:({context:e,event:t})=>({context:{...e,input:{value:H(t,`input`),valid:!1}}}),setPending:({context:e,event:t})=>({context:{...e,selection:{...e.selection,pendingValue:H(t,`value`),source:U(t)},preset:{value:H(t,`preset`)}}}),select:({context:e,event:t})=>({context:G(e,t,H(t,`value`))}),clear:({context:e})=>({context:G(e,{type:`CLEAR`},``)}),apply:({context:e})=>({context:G(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=V(t);if(n)return v(t,`value`)?{props:n,context:G(e,{type:`PROPS_CHANGED`,source:`props`},n.value)}:{props:n}}},guards:{canOpen:({props:e})=>!me(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}}),_e=h({definition:{component:`ui.date-picker`,parts:{root:{base:`relative inline-grid w-full min-w-0`},trigger:{base:[E,D.lg,`text-left`],variants:{radius:C},defaults:{radius:`md`}},customTrigger:{base:[`inline-flex min-h-control-lg min-w-control-lg shrink-0 items-center justify-center gap-control-gap px-2 text-sm outline-none`],variants:{radius:C},defaults:{radius:`md`}},input:{base:[`min-w-0 flex-1 text-sm`,O]},icon:{base:`size-icon shrink-0 fill-current text-surface-ink-muted`},action:{base:T},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:[le,D.lg],variants:{radius:C},defaults:{radius:`md`}}}}}),K=/^\d{4}-\d{2}-\d{2}$/,q=/^\d{4}-\d{2}-\d{2}\/\d{4}-\d{2}-\d{2}$/,ve=/%[Ymd]/g,ye=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),J=e=>{let t=0,n=``;for(let r of e.matchAll(/[\s/-]+/g))n+=ye(e.slice(t,r.index)),n+=`(?:\\s|[/-])+`,t=(r.index??0)+r[0].length;return n+ye(e.slice(t))},be=e=>{let t=[],n=0,r=``;for(let i of e.matchAll(ve)){r+=J(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+=J(e.slice(n)),{source:r,tokens:t}},Y=(e,t)=>{let n=Object.fromEntries(t.map((t,n)=>[t,e[n]??``])),r=Number(n[`%Y`]),i=Number(n[`%m`]),a=Number(n[`%d`]);if(!r||!i||!a||new Set(t).size!==3)return null;let o=new Date(Date.UTC(r,i-1,a));return o.getUTCFullYear()!==r||o.getUTCMonth()!==i-1||o.getUTCDate()!==a?null:`${String(r).padStart(4,`0`)}-${String(i).padStart(2,`0`)}-${String(a).padStart(2,`0`)}`},xe=({input:e,format:t,range:n,separator:r})=>{let i=be(t);if(!n){let t=e.trim().match(RegExp(`^${i.source}$`));return t?Y(t.slice(1),i.tokens):null}let a=e.trim().match(RegExp(`^${i.source}${J(r)}${i.source}$`));if(!a)return null;let o=i.tokens.length,s=Y(a.slice(1,o+1),i.tokens),c=Y(a.slice(o+1),i.tokens);return s&&c&&s<=c?`${s}/${c}`:null},X=(e,t)=>{if(!K.test(e))return e;let[n=``,r=``,i=``]=e.split(`-`);return t.replaceAll(`%Y`,n).replaceAll(`%m`,r).replaceAll(`%d`,i)},Se=e=>e.replaceAll(`%Y`,`YYYY`).replaceAll(`%m`,`MM`).replaceAll(`%d`,`DD`),Ce=({input:e,format:t,separator:n})=>{let r=new Set(`${t.replace(ve,``)}${n}`);return Array.from(e).filter(e=>/[0-9]/.test(e)||/[\s/-]/.test(e)||r.has(e)).join(``)},we=({input:e,format:t,range:n,separator:r})=>{let i=t.replaceAll(`%Y`,`9999`).replaceAll(`%m`,`99`).replaceAll(`%d`,`99`),a=n?`${i}${r}${i}`:i,o=e.match(/[0-9]/g)??[],s=0,c=``;for(let e=0;e<a.length;e+=1){let t=a[e]??``;if(t===`9`){let e=o[s];if(e===void 0)break;c+=e,s+=1;continue}s>0&&a.slice(e+1).includes(`9`)&&(c+=t)}return c},Te=({value:e,format:t,range:n,separator:r})=>{if(!e)return``;if(!n)return X(e,t);if(!q.test(e))return e;let[i=``,a=``]=e.split(`/`);return`${X(i,t)}${r}${X(a,t)}`},Ee=(e,t,n)=>(q.test(e)?e.split(`/`):[e]).every(e=>K.test(e)&&(!t||e>=t)&&(!n||e<=n)),De=100,Oe=10,Z=e=>{let[t=``,n=``]=e.split(`/`);return[t,n]},ke=()=>new Date().getFullYear(),Ae=()=>`${ke()-De}-01-01`,je=()=>`${ke()+Oe}-12-31`,Q=()=>new Date().toISOString().slice(0,10),Me=(e,t)=>K.test(e)?new Intl.DateTimeFormat(t||void 0,{month:`long`,timeZone:`UTC`,year:`numeric`}).format(new Date(`${e}T00:00:00.000Z`)):``,Ne=t=>({value:t.dataset.value??``,label:t.dataset.label??t.textContent?.trim()??``,start:t.dataset.start??``,end:t.dataset.end??``,disabled:e({value:t.dataset.disabled})}),Pe=()=>{let e=null,i=``,a=``,o=null,s,c=``,l=``,u=``,f=``,m=!1,h=()=>{if(!e)throw Error(`Date picker has not been initialized.`);return e},g=()=>R.getCommittedSnapshot().props,_=()=>R.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]`),ce=()=>h().querySelector(`[data-ui-date-picker-preset-inputs]`),T=()=>g().mode===`range`,E=()=>g().months||(T()?2:1),D=()=>{let e=Array.from(h().querySelectorAll(`[data-ui-date-picker-preset]`)).map(Ne).filter(e=>e.value&&e.start&&e.end);return e.length?e:g().presets},le=e=>Te({value:e,format:g().format,range:T(),separator:g().rangeSeparator}),O=e=>{let t=D().find(t=>(T()?`${t.start}/${t.end}`:t.start)===e),n=D().find(e=>e.value===`custom`);return t?.value??(e&&n?`custom`:``)},k=e=>{let t=h().querySelector(`[data-ui-date-picker-calendar-heading]`);if(!t)return;let n=g();t.textContent=Me(e||Z(_().selection.value||n.openTo||n.today||Q())[0],n.locale)},A=()=>{let e=C();if(!e)return;let t=g(),r=_(),i=r.selection.pendingValue;customElements.get(`calendar-date`)&&(e.value=i),e.setAttribute(`value`,i),n({el:e,attr:`tentative`,present:T()&&!!i&&!q.test(i)}),e.setAttribute(`months`,String(E())),e.style.setProperty(`--ui-date-picker-month-columns`,String(E())),e.setAttribute(`min`,t.min||Ae()),e.setAttribute(`max`,t.max||je()),t.today?e.setAttribute(`today`,t.today):e.removeAttribute(`today`);let a=t.forceOpenTo?t.openTo:r.selection.value||t.openTo||t.today||Q();e.setAttribute(`focused-date`,Z(a)[0]),t.locale?e.setAttribute(`locale`,t.locale):e.removeAttribute(`locale`),t.firstDayOfWeek>=0&&e.setAttribute(`first-day-of-week`,String(t.firstDayOfWeek));let o=!t.selectableHeader&&E()===1;n({el:e,attr:`data-inline-heading`,present:o,value:`true`}),n({el:e,attr:`data-hide-month-heading`,present:t.selectableHeader&&!T()||o,value:`true`}),n({el:e,attr:`data-fixed-weeks`,present:t.fixedWeeks,value:`true`}),n({el:e,attr:`show-outside-days`,present:t.showOutsideDays||t.fixedWeeks}),n({el:e,attr:`show-week-numbers`,present:t.showWeekNumbers})},j=()=>{let e=_().selection.pendingValue||_().selection.value;h().querySelectorAll(`[data-ui-date-picker-preset]`).forEach(t=>{let r=Ne(t);n({el:t,attr:`data-selected`,present:(T()?`${r.start}/${r.end}`:r.start)===e,value:`true`}),n({el:t,attr:`data-disabled`,present:r.disabled??!1,value:`true`})})},ue=()=>{let e=w();if(!e)return;let t=g(),n=_().selection.value;if(!T()){c=y({container:e,currentKey:c,state:{name:t.name,values:n?[n]:[],required:t.required,form:t.form,marker:`data-ui-date-picker-hidden-input`}});return}let[r,i]=Z(n);if(t.startName||t.endName){let n=JSON.stringify({startName:t.startName,endName:t.endName,start:r,end:i,form:t.form});if(n===c)return;e.replaceChildren(),[[t.startName,r],[t.endName,i]].forEach(([n,r])=>{if(!n)return;let i=document.createElement(`input`);i.type=`hidden`,i.name=n,i.value=r??``,i.setAttribute(`data-ui-date-picker-hidden-input`,``),t.form&&i.setAttribute(`form`,t.form),e.append(i)}),c=n;return}c=y({container:e,currentKey:c,state:{name:t.name,values:n?[n]:[],required:t.required,form:t.form,marker:`data-ui-date-picker-hidden-input`}})},M=()=>{let e=ce();if(!e)return;let t=g(),n=O(_().selection.value);l=y({container:e,currentKey:l,state:{name:t.presetName,values:n?[n]:[],form:t.form,marker:`data-ui-date-picker-preset-input`}})},N=()=>{let e=g(),t=_(),n=R.hasTag(`visible`),r=R.hasTag(`expanded`),o=v(),s=b(),c=S();o.id=i,c.id=a,c.dataset.state=r?`open`:`closed`,c.hidden=!n,o.dataset.state=r?`open`:`closed`,ae({el:o,state:e,value:`true`});let l=x()??o;l.setAttribute(`aria-haspopup`,`dialog`),l.setAttribute(`aria-expanded`,r?`true`:`false`),l.setAttribute(`aria-controls`,a),o instanceof HTMLButtonElement&&(o.disabled=e.disabled);let d=R.hasTag(`editing`)?t.input.value:le(t.selection.value);oe({input:s,state:{name:``,value:d,disabled:e.disabled,readonly:e.readonly,required:e.required&&e.mode===`single`,invalid:e.invalid||!t.input.valid}}),s.placeholder=z.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=u)},de=()=>{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||Q(),r=K.test(n)?String(Number(n.slice(-2))):``;t.textContent=r,e.setAttribute(`aria-label`,r?`Go to today, ${n}`:`Go to today`)},P=()=>{let e=g(),t=S();t.dataset.uiSurface=e.surface,t.dataset.uiElevation=e.elevation},F=()=>{d({el:h(),schema:B,key:`value`,value:_().selection.value}),N(),A(),k(),de(),P(),ue(),M(),j(),R.hasTag(`visible`)&&o?.sync()},fe=()=>{se({container:w(),fallback:h(),marker:`data-ui-date-picker-hidden-input`}),t({el:h(),name:`ui:change`})},I=(e,t,n=``)=>{g().disabled||g().readonly||R.send({type:`SELECT`,value:e,source:t,preset:n})},L=e=>{let t=g(),n=xe({input:e,format:t.format,range:T(),separator:t.rangeSeparator});return n&&Ee(n,t.min,t.max)?n:null},R=p({schema:B,hooks:pe,createMachine:({props:e})=>ge({props:e,context:{selection:{value:e.value,pendingValue:e.value,previousValue:e.value,source:`props`},input:{value:``,valid:!0},preset:{value:e.preset}},effects:{prepareOpen:()=>{let e=S();e.hidden=!1,o?.open(),F()},finishOpen:()=>{m&&C()?.focus({preventScroll:!0}),m=!1,t({el:h(),name:`ui:open`})},prepareClose:F,finishClose:()=>{let e=S();o?.close(),e.hidden=!0,m&&v().focus({preventScroll:!0}),m=!1,F(),t({el:h(),name:`ui:close`})},syncInput:N,syncPending:()=>{N(),A(),j()},markInvalid:()=>{b().setCustomValidity(`Enter a date in ${g().format}`),N(),t({el:h(),name:`ui:invalid`})},commitSelection:()=>{b().setCustomValidity(``);let e=_();u=e.selection.value?T()?`Range selected`:`Date selected`:`Date cleared`,F(),fe(),t({el:h(),name:e.selection.value?`ui:select`:`ui:clear`})},syncProps:F,syncPresets:()=>{j(),M()}}}),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}),z;return z={...R,get isOpen(){return R.hasTag(`expanded`)},get isEditing(){return R.hasTag(`editing`)},get value(){return R.getCommittedSnapshot().context.selection.value},get pendingValue(){return R.getCommittedSnapshot().context.selection.pendingValue},get preset(){return O(R.getCommittedSnapshot().context.selection.value)},get root(){return re({inputs:[ne({part:_e.parts.root,props:R.getCommittedSnapshot().props,className:R.getCommittedSnapshot().props.class}),{"data-ui-date-picker":``,":data-state":()=>z.isOpen?`open`:`closed`}]})},effectivePlaceholder(){let e=R.getCommittedSnapshot().props;if(e.placeholder)return e.placeholder;let t=Se(e.format);return e.mode===`range`?`${t}${e.rangeSeparator}${t}`:t},open(e){e?.preventDefault(),e instanceof KeyboardEvent&&(m=!0),R.send(`OPEN`)},close(e){e?.preventDefault(),e instanceof KeyboardEvent&&(m=!0),R.send(`CLOSE`)},toggle(e){e?.preventDefault(),R.send(`TOGGLE`)},select(e,t){t?.preventDefault(),Ee(e,g().min,g().max)&&(T()?q.test(e):K.test(e))&&I(e,`input`)},selectPreset(e,t){if(t?.preventDefault(),g().disabled||g().readonly)return;let n=D().find(t=>t.value===e);if(!n||n.disabled)return;let r=T()?`${n.start}/${n.end}`:n.start;g().close===`confirm`?R.send({type:`PENDING`,value:r,source:`preset`,preset:e}):I(r,`preset`,e)},selectToday(e){if(e?.preventDefault(),g().disabled||g().readonly)return;let t=g().today||Q(),n=T()?`${t}/${t}`:t;g().close===`confirm`?R.send({type:`PENDING`,value:n,source:`today`}):I(n,`today`)},clear(e){e?.preventDefault(),!(g().disabled||g().readonly)&&R.send(`CLEAR`)},cancel(e){e?.preventDefault(),R.send(`CANCEL`),R.send(`CLOSE`)},init(){s=ee(this),e=this.$el,i=this.$id(`date-picker-trigger`),a=this.$id(`date-picker-popover`),R.connect(this.$el,this.snapshot),o=te({reference:v,floating:S,position:()=>g().side,align:()=>g().align,gap:()=>g().gap,offset:()=>g().offset,matchReferenceWidth:!1});let t=v(),n=b(),c=S();r({target:t,event:`click`,cleanup:s,handler:e=>{let t=e.target;t instanceof Element&&t.closest(`[data-ui-date-picker-clear]`)?z.clear(e):z.toggle(e)}}),r({target:t,event:`keydown`,cleanup:s,handler:e=>{let t=e;(t.key===`ArrowDown`||t.key===`Enter`||t.key===` `)&&!z.isOpen?z.open(t):t.key===`Escape`&&z.isOpen&&z.close(t)}}),r({target:h(),event:`keydown`,cleanup:s,handler:e=>{let t=e;t.key===`Escape`&&z.isOpen&&z.close(t)}}),r({target:n,event:`input`,cleanup:s,handler:()=>{let e=n.selectionStart??n.value.length,t=(n.value.slice(0,e).match(/[0-9]/g)??[]).length,r=Ce({input:n.value,format:g().format,separator:g().rangeSeparator});if(f.length-r.length!==1&&(r=we({input:r,format:g().format,range:T(),separator:g().rangeSeparator})),n.value!==r){n.value=r;let e=0,i=r.length;for(let n=0;n<r.length;n+=1)if(/[0-9]/.test(r[n]??``)&&(e+=1),e===t){for(i=n+1;i<r.length&&!/[0-9]/.test(r[i]??``);)i+=1;break}n.setSelectionRange(i,i)}f=r,R.send({type:`INPUT`,input:r});let i=L(r);i&&I(i,`input`)}}),r({target:n,event:`change`,cleanup:s,handler:()=>{let e=L(n.value);e?I(e,`input`):n.value.trim()?R.send({type:`PARSE`,input:n.value}):R.send(`CLEAR`)}}),r({target:c,event:`pointerdown`,cleanup:s,handler:e=>e.stopPropagation()}),r({target:c,event:`click`,cleanup:s,handler:e=>{let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`[data-ui-date-picker-preset]`);n?z.selectPreset(n.dataset.value??``,e):t.closest(`[data-ui-date-picker-clear]`)?z.clear(e):t.closest(`[data-ui-date-picker-cancel]`)?z.cancel(e):t.closest(`[data-ui-date-picker-apply]`)?R.send(`APPLY`):t.closest(`[data-ui-date-picker-today]`)&&z.selectToday(e)}});let l=C();l&&(customElements.whenDefined(`calendar-date`).then(()=>{e&&A()}),r({target:l,event:`change`,cleanup:s,handler:()=>{let e=l.value;T()&&!q.test(e)?(u=`Start date selected`,R.send({type:`PENDING`,value:e,source:`calendar`})):g().close===`confirm`?R.send({type:`PENDING`,value:e,source:`calendar`}):I(e,`calendar`)}}),r({target:l,event:`focusday`,cleanup:s,handler:e=>{let t=e.detail;t instanceof Date&&k(t.toISOString().slice(0,10))}})),s.add(ie({isEnabled:()=>z.isOpen,roots:()=>[h(),c],onDismiss:()=>z.close()}));let d=new MutationObserver(()=>R.send(`PRESETS_CHANGED`));d.observe(h(),{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`data-value`,`data-start`,`data-end`,`data-disabled`]}),s.add(()=>d.disconnect()),F()},destroy(){o?.destroy(),o=null,R.disconnect(),e=null}},z},Fe=m(`UiDatePicker`,Pe),$=new WeakSet,Ie=e=>{$.has(e)||($.add(e),a(e),M(e),Fe(e))};export{Pe as n,Ie as t};
|
|
2
|
+
//# sourceMappingURL=entry.generated-BBuJrkhp.js.map
|