@vireo-ai/trellis-ui 0.1.21 → 0.1.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +37 -11
- package/packages/client/types/assets/bridge.d.ts +27 -0
- package/packages/client/types/assets/full-runtime.generated.d.ts +2 -0
- package/packages/client/types/capabilities/calendar.d.ts +3 -0
- package/packages/client/types/capabilities/motion.d.ts +5 -0
- package/packages/client/types/capabilities/resizable.d.ts +5 -0
- package/packages/client/types/capabilities/sortable.d.ts +6 -0
- package/packages/client/types/components/accordion/entry.generated.d.ts +5 -0
- package/packages/client/types/components/app/contract.d.ts +8 -8
- package/packages/client/types/components/badge/contract.d.ts +2 -2
- package/packages/client/types/components/box/contract.d.ts +9 -9
- package/packages/client/types/components/button/contract.d.ts +3 -3
- package/packages/client/types/components/button/entry.generated.d.ts +4 -0
- package/packages/client/types/components/card/contract.d.ts +3 -3
- package/packages/client/types/components/checkbox/entry.generated.d.ts +5 -0
- package/packages/client/types/components/container/contract.d.ts +5 -5
- package/packages/client/types/components/date-picker/contract.d.ts +6 -6
- package/packages/client/types/components/date-picker/entry.generated.d.ts +5 -0
- package/packages/client/types/components/date-picker/index.d.ts +0 -1
- package/packages/client/types/components/date-picker/machine.d.ts +40 -40
- package/packages/client/types/components/dropdown/contract.d.ts +2 -2
- package/packages/client/types/components/dropdown/entry.generated.d.ts +5 -0
- package/packages/client/types/components/dropdown/machine.d.ts +8 -8
- package/packages/client/types/components/entry.generated.d.ts +28 -0
- package/packages/client/types/components/field/entry.generated.d.ts +5 -0
- package/packages/client/types/components/file-upload/contract.d.ts +1 -1
- package/packages/client/types/components/file-upload/entry.generated.d.ts +5 -0
- package/packages/client/types/components/file-upload/machine.d.ts +2 -2
- package/packages/client/types/components/flex/contract.d.ts +7 -7
- package/packages/client/types/components/frame/contract.d.ts +6 -6
- package/packages/client/types/components/grid/contract.d.ts +11 -11
- package/packages/client/types/components/image/contract.d.ts +2 -2
- package/packages/client/types/components/input/entry.generated.d.ts +5 -0
- package/packages/client/types/components/layout.d.ts +6 -6
- package/packages/client/types/components/menu/contract.d.ts +3 -3
- package/packages/client/types/components/modal/contract.d.ts +3 -3
- package/packages/client/types/components/modal/entry.generated.d.ts +5 -0
- package/packages/client/types/components/modal/machine.d.ts +12 -12
- package/packages/client/types/components/panels/contract.d.ts +1 -1
- package/packages/client/types/components/panels/entry.generated.d.ts +5 -0
- package/packages/client/types/components/radio/entry.generated.d.ts +5 -0
- package/packages/client/types/components/scroll-area/entry.generated.d.ts +5 -0
- package/packages/client/types/components/section/contract.d.ts +4 -4
- package/packages/client/types/components/select/contract.d.ts +4 -4
- package/packages/client/types/components/select/entry.generated.d.ts +5 -0
- package/packages/client/types/components/select/machine.d.ts +32 -32
- package/packages/client/types/components/sidebar/contract.d.ts +5 -5
- package/packages/client/types/components/sidebar/entry.generated.d.ts +5 -0
- package/packages/client/types/components/sidebar/index.d.ts +1 -1
- package/packages/client/types/components/slider/entry.generated.d.ts +5 -0
- package/packages/client/types/components/stack/contract.d.ts +7 -7
- package/packages/client/types/components/switch/entry.generated.d.ts +5 -0
- package/packages/client/types/components/table/contract.d.ts +9 -9
- package/packages/client/types/components/table/entry.generated.d.ts +5 -0
- package/packages/client/types/components/tabs/contract.d.ts +1 -1
- package/packages/client/types/components/tabs/entry.generated.d.ts +5 -0
- package/packages/client/types/components/tabs/machine.d.ts +2 -2
- package/packages/client/types/components/toast/contract.d.ts +2 -2
- package/packages/client/types/components/toast/entry.generated.d.ts +5 -0
- package/packages/client/types/components/toast/machine.d.ts +8 -8
- package/packages/client/types/core.d.ts +10 -0
- package/packages/client/types/directives/sortable.d.ts +1 -1
- package/packages/client/types/index.d.ts +3 -11
- package/packages/client/types/motion/animate.d.ts +1 -1
- package/packages/client/types/motion/controller.d.ts +1 -1
- package/packages/client/types/motion/index.d.ts +1 -1
- package/packages/client/types/motion/owned.d.ts +1 -1
- package/packages/client/types/motion/plan.d.ts +1 -1
- package/packages/client/types/motion/recipe.d.ts +1 -1
- package/packages/client/types/motion/reduced-motion.d.ts +1 -1
- package/packages/client/types/motion/targets.d.ts +1 -6
- package/packages/client/types/motion/view.d.ts +1 -1
- package/packages/client/types/runtime/engine/stream.d.ts +9 -3
- package/packages/client/types/runtime/layout-participant.d.ts +9 -0
- package/packages/client/types/runtime/ui.d.ts +10 -4
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +1268 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/anchored-popover-BXEMsLrA.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/anchored-popover-BXEMsLrA.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-B4S_D6hV.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-B4S_D6hV.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cally-Z6G-rzr-.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cally-Z6G-rzr-.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/codecs-Cb1ns_47.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/codecs-Cb1ns_47.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-CtNDGKcQ.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-CtNDGKcQ.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-DAxHCzB-.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-DAxHCzB-.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controlled-open-Hy4-OT-6.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controlled-open-Hy4-OT-6.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-DjoX4J-6.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-DjoX4J-6.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-BROE-Ln2.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-BROE-Ln2.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dom-qAeVl7dc.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dom-qAeVl7dc.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/element-adapter-native-data-key-CW8suC9A.js +6 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/element-adapter-native-data-key-CW8suC9A.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-5kNpQFGr.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-5kNpQFGr.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B85L90Qp.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B85L90Qp.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BGCM6LAW.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BGCM6LAW.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bc-uE56r.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bc-uE56r.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C-lyYGbo.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C-lyYGbo.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C6ldtrmy.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C6ldtrmy.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CPWoMIwn.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CPWoMIwn.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Co0bLLZE.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Co0bLLZE.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CtyXH8zf.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CtyXH8zf.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DGrOItIx.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DGrOItIx.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DHMRhcYF.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DHMRhcYF.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-De12QrT5.js +3 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-De12QrT5.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DgmqZx_W.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DgmqZx_W.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Dn6MRCe0.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Dn6MRCe0.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DoOgk6l4.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DoOgk6l4.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DxUOcPkU.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DxUOcPkU.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DyIjCOhT.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DyIjCOhT.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-K6qKowpw.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-K6qKowpw.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oAIExc1V.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oAIExc1V.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xcXw-cEl.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xcXw-cEl.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-DtaPVNl5.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-DtaPVNl5.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/form-control-BkVb2Qed.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/form-control-BkVb2Qed.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CX3wFSoV.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CX3wFSoV.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/merge-bindings-C8ewA_FD.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/merge-bindings-C8ewA_FD.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-Bpttk6iZ.js +3 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-Bpttk6iZ.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/number-BCZdoG0B.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/number-BCZdoG0B.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/props-change-2xfsIAEN.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/props-change-2xfsIAEN.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resizable-BixtYF9M.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resizable-BixtYF9M.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/scroll-lock-DOw7dmi1.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/scroll-lock-DOw7dmi1.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/semantic-observer-9VxzbQBi.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/semantic-observer-9VxzbQBi.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/styles-TfvwVPGw.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/styles-TfvwVPGw.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-xTjuF3uC.js +4 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-xTjuF3uC.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +1 -22146
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +395 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +9 -9
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +9 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry.generated-De12QrT5.js","names":["_state","ownKeys","_objectSpread"],"sources":["../../../../../../../../client/src/runtime/drag-and-drop/sortable/contract.ts","../../../../../../../../client/src/runtime/drag-and-drop/sortable/placement.ts","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop@2.0.1/node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/public-utils/reorder.js","../../../../../../../../client/src/runtime/drag-and-drop/sortable/feedback.ts","../../../../../../../../client/src/runtime/drag-and-drop/sortable/ghost.ts","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop-live-region@2.0.0/node_modules/@atlaskit/pragmatic-drag-and-drop-live-region/dist/esm/constants.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop-live-region@2.0.0/node_modules/@atlaskit/pragmatic-drag-and-drop-live-region/dist/esm/index.js","../../../../../../../../client/src/runtime/drag-and-drop/sortable/registry.ts","../../../../../../../../client/src/runtime/drag-and-drop/sortable/cursor.ts","../../../../../../../../client/src/runtime/drag-and-drop/sortable/source-machine.ts","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop-auto-scroll@3.0.0/node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/shared/engagement-history.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop-auto-scroll@3.0.0/node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/shared/scheduler.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop-auto-scroll@3.0.0/node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/over-element/data-attributes.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop-auto-scroll@3.0.0/node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/shared/configuration.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop-auto-scroll@3.0.0/node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/shared/can-scroll-on-edge.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop-auto-scroll@3.0.0/node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/shared/edges.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop-auto-scroll@3.0.0/node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/shared/axis.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop-auto-scroll@3.0.0/node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/shared/side.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop-auto-scroll@3.0.0/node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/shared/get-over-element-hitbox.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop-auto-scroll@3.0.0/node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/shared/get-percentage-in-range.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop-auto-scroll@3.0.0/node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/shared/get-scroll-change.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop-auto-scroll@3.0.0/node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/shared/is-axis-allowed.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop-auto-scroll@3.0.0/node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/shared/is-within.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop-auto-scroll@3.0.0/node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/over-element/get-scroll-by.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop-auto-scroll@3.0.0/node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/over-element/try-scroll.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop-auto-scroll@3.0.0/node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/over-element/make-api.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop-auto-scroll@3.0.0/node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/entry-point/element.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop@2.0.1/node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/public-utils/prevent-unhandled.js","../../../../../../../../client/src/directives/sortable.ts","../../../../../../../../client/src/capabilities/sortable.ts","../../../../../../../../client/src/components/entry.generated.ts"],"sourcesContent":["type SortableOperation = 'insert' | 'move';\ntype SortableCancelReason = 'escape' | 'outside' | 'disabled' | 'removed';\ntype SortableOrientation = 'vertical' | 'horizontal' | 'grid';\ntype SortableFeedback = 'indicator' | 'reorder';\ntype SortableEdge = 'before' | 'after';\ntype SortableDirection = 'ltr' | 'rtl';\n\ntype SortableFrame = Readonly<{\n left: number;\n top: number;\n right: number;\n bottom: number;\n width: number;\n height: number;\n}>;\n\ntype SortableInput = Readonly<{\n clientX: number;\n clientY: number;\n}>;\n\ntype SortableDragDetail = Readonly<{\n source: SortableSource;\n input: SortableInput;\n previousInput: SortableInput;\n delta: Readonly<{x: number; y: number}>;\n velocity: Readonly<{x: number; y: number}>;\n ghostFrame: Readonly<{x: number; y: number; width: number; height: number}>;\n}>;\n\ntype SortableSourceFields = Readonly<{\n scopeId: string;\n id: string;\n type: string;\n label?: string;\n data?: Readonly<Record<string, unknown>>;\n}>;\ntype SortableInsertSource = SortableSourceFields & Readonly<{\n operation: 'insert';\n groupId: null;\n}>;\ntype SortableMoveSource = SortableSourceFields & Readonly<{\n operation: 'move';\n groupId: string;\n}>;\ntype SortableSource = SortableInsertSource | SortableMoveSource;\n\ntype SortableAnchor = Readonly<{\n id: string;\n edge: SortableEdge;\n}>;\n\ntype SortablePlacement = Readonly<{\n destination: Readonly<{groupId: string}>;\n anchor: SortableAnchor | null;\n index?: number;\n}>;\n\ntype SortableGroup = Readonly<{\n scopeId: string;\n id: string;\n orientation: SortableOrientation;\n columns: number | null;\n accepts: readonly string[];\n disabled: boolean;\n readOnly: boolean;\n feedback: SortableFeedback;\n sourceOpacity: number;\n ghostOpacity: number;\n dragCursor: string;\n data?: Readonly<Record<string, unknown>>;\n label?: string;\n}>;\n\ntype SortableCanDropContext = Readonly<{\n source: SortableSource;\n destination: SortableGroup;\n itemIds: readonly string[];\n input: SortableInput | null;\n}>;\n\ntype SortableDropPlacement = Readonly<{\n destination: Readonly<{groupId: string}>;\n anchor: SortableAnchor | null;\n index?: number;\n}>;\ntype SortableDropDetail =\n | (SortableDropPlacement & Readonly<{operation: 'insert'; source: SortableInsertSource}>)\n | (SortableDropPlacement & Readonly<{operation: 'move'; source: SortableMoveSource}>);\n\ntype SortableMoveOptions = Readonly<{\n scope: string;\n sourceId: string;\n destinationGroupId?: string;\n}>;\n\ntype SortableMoveRelativeOptions = SortableMoveOptions & Readonly<{anchorId: string}>;\n\ninterface UiSortableService {\n moveBefore(options: SortableMoveRelativeOptions): boolean;\n moveAfter(options: SortableMoveRelativeOptions): boolean;\n moveToStart(options: SortableMoveOptions & {destinationGroupId: string}): boolean;\n moveToEnd(options: SortableMoveOptions & {destinationGroupId: string}): boolean;\n}\n\nconst isValidGridColumns = (columns: number | null): columns is number => (\n columns !== null && Number.isInteger(columns) && columns > 0\n);\n\ntype SortableItemGeometry = Readonly<{\n id: string;\n rect: SortableFrame;\n}>;\n\ntype ResolveSortablePlacementOptions = Readonly<{\n groupId: string;\n orientation: SortableOrientation;\n direction: SortableDirection;\n columns: number | null;\n groupRect: SortableFrame;\n items: readonly SortableItemGeometry[];\n input: SortableInput;\n}>;\n\nexport type {\n ResolveSortablePlacementOptions,\n SortableAnchor,\n SortableCancelReason,\n SortableCanDropContext,\n SortableDirection,\n SortableDragDetail,\n SortableEdge,\n SortableFeedback,\n SortableFrame,\n SortableGroup,\n SortableDropDetail,\n SortableInput,\n SortableInsertSource,\n SortableItemGeometry,\n SortableOperation,\n SortableOrientation,\n SortablePlacement,\n SortableMoveSource,\n SortableSource,\n SortableMoveOptions,\n SortableMoveRelativeOptions,\n UiSortableService,\n};\n\nexport {isValidGridColumns};\n","import type {\n ResolveSortablePlacementOptions,\n SortableItemGeometry,\n SortablePlacement,\n} from './contract';\nimport {isValidGridColumns} from './contract';\n\ntype Boundary = Readonly<{\n anchor: SortablePlacement['anchor'];\n index: number;\n distance(input: ResolveSortablePlacementOptions['input']): number;\n}>;\n\ntype SortableIndicatorFrame = Readonly<{\n x: number;\n y: number;\n width: number;\n height: number;\n kind: 'inline-boundary' | 'block-boundary';\n}>;\n\nconst OUTER_INDICATOR_OFFSET = 4;\n\nconst isSameSortablePlacement = (\n left: SortablePlacement | null,\n right: SortablePlacement | null,\n): boolean => left === right || Boolean(\n left && right\n && left.destination.groupId === right.destination.groupId\n && left.anchor?.id === right.anchor?.id\n && left.anchor?.edge === right.anchor?.edge,\n);\n\nconst distanceToSegment = ({\n point,\n start,\n end,\n}: {\n point: {x: number; y: number};\n start: {x: number; y: number};\n end: {x: number; y: number};\n}): number => {\n const dx = end.x - start.x;\n const dy = end.y - start.y;\n const lengthSquared = dx * dx + dy * dy;\n if (lengthSquared === 0) return Math.hypot(point.x - start.x, point.y - start.y);\n const progress = Math.max(0, Math.min(1, (\n (point.x - start.x) * dx + (point.y - start.y) * dy\n ) / lengthSquared));\n return Math.hypot(point.x - (start.x + progress * dx), point.y - (start.y + progress * dy));\n};\n\nconst verticalBoundaries = (items: readonly SortableItemGeometry[]): Boundary[] => items.length === 0 ? [] : [\n {\n anchor: {id: items[0]!.id, edge: 'before'},\n index: 0,\n distance: (input) => Math.abs(input.clientY - items[0]!.rect.top),\n },\n ...items.slice(1).map((item, index) => {\n const previous = items[index]!;\n const y = (previous.rect.bottom + item.rect.top) / 2;\n return {\n anchor: {id: item.id, edge: 'before'} as const,\n index: index + 1,\n distance: (input: ResolveSortablePlacementOptions['input']) => Math.abs(input.clientY - y),\n };\n }),\n {\n anchor: {id: items.at(-1)!.id, edge: 'after'},\n index: items.length,\n distance: (input) => Math.abs(input.clientY - items.at(-1)!.rect.bottom),\n },\n];\n\nconst horizontalBoundaries = (\n items: readonly SortableItemGeometry[],\n direction: ResolveSortablePlacementOptions['direction'],\n): Boundary[] => {\n if (items.length === 0) return [];\n const inlineStart = (item: SortableItemGeometry): number => (\n direction === 'rtl' ? item.rect.right : item.rect.left\n );\n const inlineEnd = (item: SortableItemGeometry): number => (\n direction === 'rtl' ? item.rect.left : item.rect.right\n );\n return [\n {\n anchor: {id: items[0]!.id, edge: 'before'},\n index: 0,\n distance: (input) => Math.abs(input.clientX - inlineStart(items[0]!)),\n },\n ...items.slice(1).map((item, index) => {\n const previous = items[index]!;\n const x = (inlineEnd(previous) + inlineStart(item)) / 2;\n return {\n anchor: {id: item.id, edge: 'before'} as const,\n index: index + 1,\n distance: (input: ResolveSortablePlacementOptions['input']) => Math.abs(input.clientX - x),\n };\n }),\n {\n anchor: {id: items.at(-1)!.id, edge: 'after'},\n index: items.length,\n distance: (input) => Math.abs(input.clientX - inlineEnd(items.at(-1)!)),\n },\n ];\n};\n\nconst gridBoundaries = ({\n columns,\n direction,\n groupRect,\n items,\n}: Pick<ResolveSortablePlacementOptions, 'columns' | 'direction' | 'groupRect' | 'items'>): Boundary[] => {\n if (!isValidGridColumns(columns)) {\n throw new TypeError('Grid sortable groups require a positive integer columns value.');\n }\n if (items.length === 0) return [];\n\n const inlineStart = (item: SortableItemGeometry): number => (\n direction === 'rtl' ? item.rect.right : item.rect.left\n );\n const inlineEnd = (item: SortableItemGeometry): number => (\n direction === 'rtl' ? item.rect.left : item.rect.right\n );\n const rowItems = (row: number): readonly SortableItemGeometry[] => (\n items.slice(row * columns, (row + 1) * columns)\n );\n const rowTop = (row: number): number => Math.min(...rowItems(row).map((item) => item.rect.top));\n const rowBottom = (row: number): number => Math.max(...rowItems(row).map((item) => item.rect.bottom));\n const verticalBoundary = (\n x: number,\n row: number,\n anchor: SortablePlacement['anchor'],\n index: number,\n ): Boundary => ({\n anchor,\n index,\n distance: (input) => distanceToSegment({\n point: {x: input.clientX, y: input.clientY},\n start: {x, y: rowTop(row)},\n end: {x, y: rowBottom(row)},\n }),\n });\n const horizontalBoundary = (\n y: number,\n anchor: SortablePlacement['anchor'],\n index: number,\n ): Boundary => ({\n anchor,\n index,\n distance: (input) => distanceToSegment({\n point: {x: input.clientX, y: input.clientY},\n start: {x: groupRect.left, y},\n end: {x: groupRect.right, y},\n }),\n });\n\n const boundaries: Boundary[] = [verticalBoundary(\n inlineStart(items[0]!),\n 0,\n {id: items[0]!.id, edge: 'before'},\n 0,\n )];\n\n for (let index = 1; index < items.length; index += 1) {\n const item = items[index]!;\n const previous = items[index - 1]!;\n if (index % columns === 0) {\n const row = index / columns;\n boundaries.push(horizontalBoundary(\n (rowBottom(row - 1) + rowTop(row)) / 2,\n {id: item.id, edge: 'before'},\n index,\n ));\n } else {\n const row = Math.floor(index / columns);\n boundaries.push(verticalBoundary(\n (inlineEnd(previous) + inlineStart(item)) / 2,\n row,\n {id: item.id, edge: 'before'},\n index,\n ));\n }\n }\n\n const lastIndex = items.length - 1;\n const last = items[lastIndex]!;\n const lastRow = Math.floor(lastIndex / columns);\n const finalRowCount = items.length % columns;\n if (finalRowCount === 0) {\n boundaries.push(horizontalBoundary(\n rowBottom(lastRow),\n {id: last.id, edge: 'after'},\n items.length,\n ));\n } else {\n const exemplar = items[finalRowCount];\n const x = exemplar === undefined\n ? inlineEnd(last)\n : (inlineEnd(last) + inlineStart(exemplar)) / 2;\n boundaries.push(verticalBoundary(\n x,\n lastRow,\n {id: last.id, edge: 'after'},\n items.length,\n ));\n }\n\n return boundaries;\n};\n\nconst nearestBoundary = (\n boundaries: readonly Boundary[],\n input: ResolveSortablePlacementOptions['input'],\n): Boundary => boundaries.reduce((nearest, boundary) => (\n boundary.distance(input) < nearest.distance(input) ? boundary : nearest\n));\n\nconst resolveSortablePlacement = (options: ResolveSortablePlacementOptions): SortablePlacement => {\n if (options.items.length === 0) {\n return {destination: {groupId: options.groupId}, anchor: null, index: 0};\n }\n\n const boundaries = options.orientation === 'horizontal'\n ? horizontalBoundaries(options.items, options.direction)\n : options.orientation === 'grid'\n ? gridBoundaries(options)\n : verticalBoundaries(options.items);\n const boundary = nearestBoundary(boundaries, options.input);\n return {\n destination: {groupId: options.groupId},\n anchor: boundary.anchor,\n index: boundary.index,\n };\n};\n\nconst resolveSortableReorderPlacement = (options: ResolveSortablePlacementOptions): SortablePlacement => {\n if (options.items.length === 0 || options.orientation === 'grid') {\n return resolveSortablePlacement(options);\n }\n const coordinate = options.orientation === 'vertical'\n ? options.input.clientY\n : options.input.clientX * (options.direction === 'rtl' ? -1 : 1);\n const index = options.items.findIndex(({rect}) => {\n const midpoint = options.orientation === 'vertical'\n ? rect.top + rect.height / 2\n : (rect.left + rect.width / 2) * (options.direction === 'rtl' ? -1 : 1);\n return coordinate < midpoint;\n });\n const insertionIndex = index < 0 ? options.items.length : index;\n const anchor = insertionIndex === options.items.length\n ? {id: options.items.at(-1)!.id, edge: 'after' as const}\n : {id: options.items[insertionIndex]!.id, edge: 'before' as const};\n return {destination: {groupId: options.groupId}, anchor, index: insertionIndex};\n};\n\nconst projectSortablePlacement = ({\n placement,\n sourceId,\n sourceGroupId,\n itemIds,\n}: {\n placement: SortablePlacement;\n sourceId: string;\n sourceGroupId: string | null;\n itemIds: readonly string[];\n}): SortablePlacement => {\n if (sourceGroupId !== placement.destination.groupId) return placement;\n const sourceIndex = itemIds.indexOf(sourceId);\n if (sourceIndex < 0) return placement;\n const projectedIds = itemIds.filter((id) => id !== sourceId);\n const rawIndex = placement.index ?? 0;\n const index = Math.max(0, Math.min(projectedIds.length, rawIndex > sourceIndex ? rawIndex - 1 : rawIndex));\n const anchor = projectedIds.length === 0\n ? null\n : index === projectedIds.length\n ? {id: projectedIds.at(-1)!, edge: 'after' as const}\n : {id: projectedIds[index]!, edge: 'before' as const};\n return {destination: placement.destination, anchor, index};\n};\n\nconst resolveSortableIndicatorFrame = (\n options: Omit<ResolveSortablePlacementOptions, 'input'>,\n placement: SortablePlacement,\n): SortableIndicatorFrame => {\n const {groupRect, items, orientation, direction} = options;\n if (items.length === 0 || placement.anchor === null) {\n if (orientation === 'horizontal') {\n const x = direction === 'rtl'\n ? groupRect.right - OUTER_INDICATOR_OFFSET\n : groupRect.left + OUTER_INDICATOR_OFFSET;\n return {x, y: groupRect.top, width: 0, height: groupRect.height, kind: 'inline-boundary'};\n }\n return {\n x: groupRect.left,\n y: groupRect.top + OUTER_INDICATOR_OFFSET,\n width: groupRect.width,\n height: 0,\n kind: 'block-boundary',\n };\n }\n const index = placement.index ?? 0;\n const previous = index > 0 ? items[index - 1] : undefined;\n const next = index < items.length ? items[index] : undefined;\n if (orientation === 'vertical') {\n const y = previous && next ? (previous.rect.bottom + next.rect.top) / 2\n : next ? next.rect.top - OUTER_INDICATOR_OFFSET : previous!.rect.bottom + OUTER_INDICATOR_OFFSET;\n return {x: groupRect.left, y, width: groupRect.width, height: 0, kind: 'block-boundary'};\n }\n const inlineStart = (item: SortableItemGeometry): number => direction === 'rtl' ? item.rect.right : item.rect.left;\n const inlineEnd = (item: SortableItemGeometry): number => direction === 'rtl' ? item.rect.left : item.rect.right;\n if (orientation === 'horizontal') {\n const x = previous && next ? (inlineEnd(previous) + inlineStart(next)) / 2\n : next ? inlineStart(next) + (direction === 'rtl' ? OUTER_INDICATOR_OFFSET : -OUTER_INDICATOR_OFFSET)\n : inlineEnd(previous!) + (direction === 'rtl' ? -OUTER_INDICATOR_OFFSET : OUTER_INDICATOR_OFFSET);\n return {x, y: groupRect.top, width: 0, height: groupRect.height, kind: 'inline-boundary'};\n }\n const columns = options.columns;\n if (!isValidGridColumns(columns)) {\n throw new TypeError('Grid sortable groups require a positive integer columns value.');\n }\n const isRowBoundary = index > 0 && index % columns === 0;\n if (isRowBoundary) {\n const y = next ? (previous!.rect.bottom + next.rect.top) / 2 : previous!.rect.bottom + OUTER_INDICATOR_OFFSET;\n return {x: groupRect.left, y, width: groupRect.width, height: 0, kind: 'block-boundary'};\n }\n let x: number;\n if (previous && next) x = (inlineEnd(previous) + inlineStart(next)) / 2;\n else if (next) x = inlineStart(next) + (direction === 'rtl' ? OUTER_INDICATOR_OFFSET : -OUTER_INDICATOR_OFFSET);\n else {\n const finalRowCount = items.length % columns;\n const exemplar = finalRowCount === 0 ? undefined : items[finalRowCount];\n x = exemplar ? (inlineEnd(previous!) + inlineStart(exemplar)) / 2\n : inlineEnd(previous!) + (direction === 'rtl' ? -OUTER_INDICATOR_OFFSET : OUTER_INDICATOR_OFFSET);\n }\n const rowStart = Math.floor(Math.min(index, items.length - 1) / columns) * columns;\n const row = items.slice(rowStart, rowStart + columns);\n return {\n x,\n y: Math.min(...row.map((item) => item.rect.top)),\n width: 0,\n height: Math.max(...row.map((item) => item.rect.bottom)) - Math.min(...row.map((item) => item.rect.top)),\n kind: 'inline-boundary',\n };\n};\n\nexport {\n distanceToSegment,\n isSameSortablePlacement,\n projectSortablePlacement,\n resolveSortableIndicatorFrame,\n resolveSortablePlacement,\n resolveSortableReorderPlacement,\n};\nexport type {SortableIndicatorFrame};\n","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\n/**\n * A function that will reorder an array (`list`).\n * `reorder` returns a new array with reordered items and does not\n * modify the original array. The items in the array are also not modified.\n */\nexport function reorder(_ref) {\n var list = _ref.list,\n startIndex = _ref.startIndex,\n finishIndex = _ref.finishIndex;\n if (startIndex === -1 || finishIndex === -1) {\n // Making this function consistently return a new array reference.\n // This is consistent with .toSorted() which always returns a new array\n // even when it does not do anything\n return Array.from(list);\n }\n var result = Array.from(list);\n var _result$splice = result.splice(startIndex, 1),\n _result$splice2 = _slicedToArray(_result$splice, 1),\n removed = _result$splice2[0];\n result.splice(finishIndex, 0, removed);\n return result;\n}","import {reorder} from '@atlaskit/pragmatic-drag-and-drop/reorder';\n\nimport type {\n SortableDirection,\n SortableFrame,\n SortableItemGeometry,\n SortableOrientation,\n SortablePlacement,\n} from './contract';\n\ntype SortableReorderLayout = Readonly<{\n groupId: string;\n orientation: SortableOrientation;\n direction: SortableDirection;\n columns: number | null;\n groupRect: SortableFrame;\n items: readonly SortableItemGeometry[];\n}>;\n\ntype SortableReorderOffset = Readonly<{\n groupId: string;\n id: string;\n x: number;\n y: number;\n}>;\n\nconst translate = (\n groupId: string,\n item: SortableItemGeometry,\n slot: SortableFrame,\n): SortableReorderOffset => ({\n groupId,\n id: item.id,\n x: slot.left - item.rect.left,\n y: slot.top - item.rect.top,\n});\nconst moved = ({x, y}: SortableReorderOffset): boolean => x !== 0 || y !== 0;\n\nconst moveFrame = (frame: SortableFrame, x: number, y: number): SortableFrame => ({\n left: frame.left + x,\n top: frame.top + y,\n right: frame.right + x,\n bottom: frame.bottom + y,\n width: frame.width,\n height: frame.height,\n});\n\nconst nextSlot = (layout: SortableReorderLayout): SortableFrame | null => {\n const {items, orientation, direction, columns} = layout;\n const last = items.at(-1);\n if (!last) return null;\n const previous = items.at(-2);\n if (orientation === 'vertical') {\n const step = previous ? last.rect.top - previous.rect.top : last.rect.height + 8;\n return moveFrame(last.rect, 0, step);\n }\n if (orientation === 'horizontal') {\n const step = previous\n ? last.rect.left - previous.rect.left\n : (last.rect.width + 8) * (direction === 'rtl' ? -1 : 1);\n return moveFrame(last.rect, step, 0);\n }\n if (columns && items.length >= columns) {\n const previousRow = items[items.length - columns]!;\n return moveFrame(previousRow.rect, 0, last.rect.top - previousRow.rect.top || last.rect.height + 8);\n }\n const step = previous\n ? last.rect.left - previous.rect.left\n : (last.rect.width + 8) * (direction === 'rtl' ? -1 : 1);\n return moveFrame(last.rect, step, 0);\n};\n\nconst slotsWithEnd = (layout: SortableReorderLayout): readonly SortableFrame[] => {\n const end = nextSlot(layout);\n return end ? [...layout.items.map(({rect}) => rect), end] : [];\n};\n\nconst projectSortableReorderLayout = (\n layout: SortableReorderLayout,\n offsets: readonly SortableReorderOffset[],\n): SortableReorderLayout => {\n const byItem = new Map(offsets\n .filter(({groupId}) => groupId === layout.groupId)\n .map((offset) => [offset.id, offset]));\n return {\n ...layout,\n items: layout.items.map((item) => {\n const offset = byItem.get(item.id);\n return offset ? {...item, rect: moveFrame(item.rect, offset.x, offset.y)} : item;\n }),\n };\n};\n\nconst resolveSortableDropFrame = ({\n source,\n placement,\n sourceLayout,\n destinationLayout = sourceLayout,\n}: {\n source: Readonly<{id: string; groupId: string | null}>;\n placement: SortablePlacement;\n sourceLayout: SortableReorderLayout | null;\n destinationLayout?: SortableReorderLayout | null;\n}): SortableFrame | null => {\n if (!destinationLayout) return null;\n const destinationIndex = Math.max(0, Math.min(\n destinationLayout.items.length,\n placement.index ?? destinationLayout.items.length,\n ));\n if (source.groupId === destinationLayout.groupId && sourceLayout) {\n return sourceLayout.items[Math.min(destinationIndex, sourceLayout.items.length - 1)]?.rect\n ?? destinationLayout.groupRect;\n }\n return slotsWithEnd(destinationLayout)[destinationIndex] ?? destinationLayout.groupRect;\n};\n\nconst resolveSortableReorderOffsets = ({\n source,\n placement,\n sourceLayout,\n destinationLayout = sourceLayout,\n}: {\n source: Readonly<{id: string; groupId: string | null}>;\n placement: SortablePlacement;\n sourceLayout: SortableReorderLayout | null;\n destinationLayout?: SortableReorderLayout | null;\n}): readonly SortableReorderOffset[] => {\n if (!destinationLayout) return [];\n const destinationIndex = Math.max(0, Math.min(\n destinationLayout.items.length,\n placement.index ?? destinationLayout.items.length,\n ));\n\n if (source.groupId === destinationLayout.groupId && sourceLayout) {\n const sourceIndex = sourceLayout.items.findIndex(({id}) => id === source.id);\n if (sourceIndex < 0) return [];\n const reordered = reorder({list: [...sourceLayout.items], startIndex: sourceIndex, finishIndex: destinationIndex});\n return sourceLayout.items\n .map((item) => translate(\n sourceLayout.groupId,\n item,\n sourceLayout.items[reordered.findIndex(({id}) => id === item.id)]!.rect,\n ))\n .filter(moved);\n }\n\n const destinationSlots = slotsWithEnd(destinationLayout);\n const offsets: SortableReorderOffset[] = destinationLayout.items\n .map((item, index) => translate(\n destinationLayout.groupId,\n item,\n destinationSlots[index < destinationIndex ? index : index + 1]!,\n ))\n .filter(moved);\n\n if (!sourceLayout || source.groupId === null) return offsets;\n const sourceIndex = sourceLayout.items.findIndex(({id}) => id === source.id);\n if (sourceIndex < 0) return offsets;\n const sourceItem = sourceLayout.items[sourceIndex]!;\n const sourceOffset = translate(\n sourceLayout.groupId,\n sourceItem,\n destinationSlots[destinationIndex] ?? destinationLayout.groupRect,\n );\n if (moved(sourceOffset)) offsets.push(sourceOffset);\n sourceLayout.items.slice(sourceIndex + 1).forEach((item, index) => {\n offsets.push(translate(sourceLayout.groupId, item, sourceLayout.items[sourceIndex + index]!.rect));\n });\n return offsets;\n};\n\nexport {projectSortableReorderLayout, resolveSortableDropFrame, resolveSortableReorderOffsets};\nexport type {SortableReorderLayout, SortableReorderOffset};\n","import type {SortableInput} from './contract';\nimport {motion} from '../../../motion';\n\ntype ManagedGhostFrame = Readonly<{x: number; y: number; width: number; height: number}>;\n\ntype SortableGhost = Readonly<{\n positioner: HTMLElement;\n visual: HTMLElement;\n frame(): ManagedGhostFrame;\n projectedFrame(input: SortableInput): ManagedGhostFrame;\n move(input: SortableInput): void;\n finish(to: ManagedGhostFrame | null): Promise<void>;\n remove(): void;\n}>;\n\nconst sanitizeClone = (root: HTMLElement): void => {\n root.setAttribute('x-ignore', '');\n [root, ...root.querySelectorAll<HTMLElement>('*')].forEach((element) => {\n element.removeAttribute('id');\n if (element instanceof HTMLInputElement || element instanceof HTMLButtonElement) element.disabled = true;\n if (element instanceof HTMLSelectElement || element instanceof HTMLTextAreaElement) element.disabled = true;\n });\n};\n\nconst copyControlValues = (source: HTMLElement, clone: HTMLElement): void => {\n const sourceControls = [source, ...source.querySelectorAll<HTMLElement>('input, textarea, select')];\n const cloneControls = [clone, ...clone.querySelectorAll<HTMLElement>('input, textarea, select')];\n sourceControls.forEach((control, index) => {\n const cloned = cloneControls[index];\n if (control instanceof HTMLInputElement && cloned instanceof HTMLInputElement) {\n cloned.value = control.value;\n cloned.checked = control.checked;\n } else if (control instanceof HTMLTextAreaElement && cloned instanceof HTMLTextAreaElement) {\n cloned.value = control.value;\n } else if (control instanceof HTMLSelectElement && cloned instanceof HTMLSelectElement) {\n cloned.selectedIndex = control.selectedIndex;\n }\n });\n};\n\nconst frameFromRect = (rect: DOMRect | DOMRectReadOnly): ManagedGhostFrame => ({\n x: rect.left,\n y: rect.top,\n width: rect.width,\n height: rect.height,\n});\n\nconst createSortableGhost = ({source, input, preview, opacity = 0.92}: {\n source: HTMLElement;\n input: SortableInput;\n preview?: HTMLTemplateElement | null;\n opacity?: number;\n}): SortableGhost => {\n const sourceRect = source.getBoundingClientRect();\n const overlay = document.createElement('div');\n const positioner = document.createElement('div');\n const visual = document.createElement('div');\n const previewNode = preview?.content.firstElementChild?.cloneNode(true);\n const content = previewNode instanceof HTMLElement ? previewNode : source.cloneNode(true) as HTMLElement;\n if (!previewNode) copyControlValues(source, content);\n sanitizeClone(content);\n\n overlay.setAttribute('data-ui-sortable-overlay', '');\n positioner.setAttribute('data-ui-sortable-ghost-positioner', '');\n visual.setAttribute('data-ui-sortable-ghost', '');\n visual.setAttribute('aria-hidden', 'true');\n visual.setAttribute('inert', '');\n const themeOwner = source.closest<HTMLElement>('[data-theme], .dark, .light');\n if (themeOwner?.classList.contains('dark')) overlay.classList.add('dark');\n if (themeOwner?.classList.contains('light')) overlay.classList.add('light');\n if (themeOwner?.dataset.theme) overlay.dataset.theme = themeOwner.dataset.theme;\n Object.assign(overlay.style, {\n position: 'fixed', inset: '0', overflow: 'clip', contain: 'strict', zIndex: '2147483647',\n pointerEvents: 'none',\n });\n Object.assign(positioner.style, {\n position: 'absolute', left: '0', top: '0', width: `${sourceRect.width}px`, height: `${sourceRect.height}px`,\n pointerEvents: 'none',\n });\n Object.assign(visual.style, {\n width: '100%', height: '100%', opacity: `${opacity}`, pointerEvents: 'none',\n filter: 'drop-shadow(0 10px 18px rgb(0 0 0 / 0.16))',\n });\n visual.append(content);\n positioner.append(visual);\n overlay.append(positioner);\n document.body.append(overlay);\n\n const offset = {x: input.clientX - sourceRect.left, y: input.clientY - sourceRect.top};\n const movement = motion.createController({\n values: {\n x: {initial: sourceRect.left, transition: {...motion.speeds.moderate, ease: motion.easings.out}},\n y: {initial: sourceRect.top, transition: {...motion.speeds.moderate, ease: motion.easings.out}},\n },\n style: ({x, y}) => ({transform: `translate3d(${x}px, ${y}px, 0)`}),\n });\n movement.mount(positioner);\n\n return {\n positioner,\n visual,\n frame: () => ({...movement.current(), width: sourceRect.width, height: sourceRect.height}),\n projectedFrame: (nextInput) => ({\n x: nextInput.clientX - offset.x,\n y: nextInput.clientY - offset.y,\n width: sourceRect.width,\n height: sourceRect.height,\n }),\n move(nextInput) {\n movement.set({x: nextInput.clientX - offset.x, y: nextInput.clientY - offset.y});\n },\n async finish(to) {\n if (to) await movement.animate({x: to.x, y: to.y}).finished;\n },\n remove: () => {\n movement.destroy();\n overlay.remove();\n },\n };\n};\n\nexport {createSortableGhost, frameFromRect, sanitizeClone};\nexport type {ManagedGhostFrame, SortableGhost};\n","/**\n * Delay until the text content of the live region is updated.\n *\n * This value was reached through some experimentation, and may need tweaking in the future.\n */\nexport var announceDelay = 1000;","import { announceDelay } from './constants';\nvar node = null;\nvar size = '1px';\nvar visuallyHiddenStyles = {\n // Standard visually hidden styles.\n // Copied from our VisuallyHidden (react) package.\n width: size,\n height: size,\n padding: '0',\n position: 'absolute',\n border: '0',\n clip: \"rect(\".concat(size, \", \").concat(size, \", \").concat(size, \", \").concat(size, \")\"),\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n // Pulling upwards slightly to prevent the page\n // from growing when appended to a body that contains\n // an element with height:100%\n marginTop: \"-\".concat(size),\n // Just being safe and letting this element not interfere with hitboxes\n pointerEvents: 'none'\n};\n\n/**\n * Creates a live region node, appends it to the body, and returns it.\n */\nfunction createNode() {\n var node = document.createElement('div');\n /**\n * Using `role=\"status\"` instead of `role=\"alert\"` so that the message\n * can be queued and read when able.\n *\n * We found with `role=\"alert\"` the message was not reliably read when\n * focus changed.\n */\n node.setAttribute('role', 'status');\n Object.assign(node.style, visuallyHiddenStyles);\n document.body.append(node);\n return node;\n}\n\n/**\n * Returns the live region node, creating one if necessary.\n */\nfunction getNode() {\n if (node === null) {\n node = createNode();\n }\n return node;\n}\nvar timerId = null;\nfunction tryClearTimer() {\n if (timerId !== null) {\n clearTimeout(timerId);\n }\n timerId = null;\n}\n\n/**\n * Announces the provided message to assistive technology.\n */\nexport function announce(message) {\n /**\n * Calling this immediately to ensure a node exists and has time to be parsed\n * and exposed in the accessibility tree.\n */\n getNode();\n\n /**\n * Updating the message in a timeout so that it's less likely to be interrupted.\n *\n * This function is often called right before focus changes,\n * because the user has just taken an action.\n * This focus change would often cause the message to be skipped / interrupted.\n */\n tryClearTimer();\n timerId = setTimeout(function () {\n timerId = null;\n var node = getNode();\n node.textContent = message;\n }, announceDelay);\n return;\n}\n\n/**\n * Removes the created live region. If there is no live region this is a no-op.\n */\nexport function cleanup() {\n var _node;\n tryClearTimer();\n (_node = node) === null || _node === void 0 || _node.remove();\n node = null;\n}","import {announce} from '@atlaskit/pragmatic-drag-and-drop-live-region';\nimport {dispatch} from '../../../utils';\n\nimport type {\n SortableCanDropContext,\n SortableDropDetail,\n SortableGroup,\n SortablePlacement,\n SortableSource,\n SortableInput,\n UiSortableService,\n} from './contract';\nimport {isValidGridColumns} from './contract';\n\ntype GroupRecord = Readonly<{\n element: HTMLElement;\n getGroup(): SortableGroup;\n getItemIds(): readonly string[];\n canDrop?(context: SortableCanDropContext): boolean;\n}>;\n\ntype SourceRecord = Readonly<{\n element: HTMLElement;\n getSource(): SortableSource;\n isDisabled(): boolean;\n}>;\n\ntype SortableRegistration = (() => void) & Readonly<{\n refresh(): void;\n}>;\n\ntype SortableRegistry = UiSortableService & Readonly<{\n registerGroup(record: GroupRecord): SortableRegistration;\n registerSource(record: SourceRecord): SortableRegistration;\n group(scopeId: string, groupId: string): GroupRecord | null;\n source(scopeId: string, sourceId: string): SourceRecord | null;\n canDrop(source: SortableSource, destinationGroupId: string, input?: SortableInput | null): boolean;\n isNoop(source: SortableSource, placement: SortablePlacement): boolean;\n emitDrop(source: SortableSource, placement: SortablePlacement, input?: SortableInput | null): boolean;\n}>;\n\nconst keyFor = (scope: string, id: string): string => `${scope}\\u0000${id}`;\n\nconst frozenDropDetail = (source: SortableSource, placement: SortablePlacement): SortableDropDetail => {\n const placementDetail = {\n destination: Object.freeze({...placement.destination}),\n anchor: placement.anchor === null ? null : Object.freeze({...placement.anchor}),\n ...(placement.index === undefined ? {} : {index: placement.index}),\n };\n return source.operation === 'insert'\n ? Object.freeze({operation: 'insert', source: Object.freeze({...source}), ...placementDetail})\n : Object.freeze({operation: 'move', source: Object.freeze({...source}), ...placementDetail});\n};\n\nconst createSortableRegistry = (): SortableRegistry => {\n const groups = new Map<string, GroupRecord>();\n const sources = new Map<string, SourceRecord>();\n\n const register = <T>(\n records: Map<string, T>,\n initialKey: string,\n currentKey: () => string,\n value: T,\n kind: string,\n ): SortableRegistration => {\n let key = initialKey;\n let active = true;\n if (records.has(key)) throw new Error(`Duplicate sortable ${kind} identity: ${key.replace('\\u0000', '/')}`);\n records.set(key, value);\n const unregister = (): void => {\n if (!active) return;\n active = false;\n if (records.get(key) === value) records.delete(key);\n };\n const refresh = (): void => {\n if (!active) return;\n const nextKey = currentKey();\n if (nextKey === key) return;\n const existing = records.get(nextKey);\n if (existing && existing !== value) {\n throw new Error(`Duplicate sortable ${kind} identity: ${nextKey.replace('\\u0000', '/')}`);\n }\n if (records.get(key) === value) records.delete(key);\n records.set(nextKey, value);\n key = nextKey;\n };\n return Object.assign(unregister, {refresh});\n };\n\n const group = (scopeId: string, groupId: string): GroupRecord | null => (\n groups.get(keyFor(scopeId, groupId)) ?? null\n );\n const source = (scopeId: string, sourceId: string): SourceRecord | null => (\n sources.get(keyFor(scopeId, sourceId)) ?? null\n );\n\n const canDrop = (\n sortableSource: SortableSource,\n destinationGroupId: string,\n input: SortableInput | null = null,\n ): boolean => {\n const destination = group(sortableSource.scopeId, destinationGroupId);\n const sourceRecord = source(sortableSource.scopeId, sortableSource.id);\n if (!destination || !sourceRecord || sourceRecord.isDisabled()) return false;\n const destinationGroup = destination.getGroup();\n if (destinationGroup.disabled || destinationGroup.readOnly) return false;\n if (destinationGroup.orientation === 'grid' && !isValidGridColumns(destinationGroup.columns)) return false;\n if (!destinationGroup.accepts.includes(sortableSource.type)) return false;\n const itemIds = destination.getItemIds().filter((id) => (\n sortableSource.operation !== 'move'\n || sortableSource.groupId !== destinationGroupId\n || id !== sortableSource.id\n ));\n const context: SortableCanDropContext = Object.freeze({\n source: sortableSource,\n destination: destinationGroup,\n itemIds: Object.freeze(itemIds),\n input: input === null ? null : Object.freeze({...input}),\n });\n return destination.canDrop?.(context) !== false;\n };\n\n const projectedInsertion = (sortableSource: SortableSource, placement: SortablePlacement): {\n originalIds: readonly string[];\n insertionIndex: number;\n } | null => {\n const destination = group(sortableSource.scopeId, placement.destination.groupId);\n if (!destination) return null;\n const originalIds = destination.getItemIds();\n const projectedIds = sortableSource.operation === 'move' && sortableSource.groupId === placement.destination.groupId\n ? originalIds.filter((id) => id !== sortableSource.id)\n : [...originalIds];\n if (placement.anchor !== null && !projectedIds.includes(placement.anchor.id)) return null;\n const insertionIndex = placement.anchor === null\n ? 0\n : projectedIds.indexOf(placement.anchor.id) + (placement.anchor.edge === 'after' ? 1 : 0);\n return {originalIds, insertionIndex};\n };\n\n const isNoop = (sortableSource: SortableSource, placement: SortablePlacement): boolean => {\n if (sortableSource.operation !== 'move' || sortableSource.groupId !== placement.destination.groupId) return false;\n const projected = projectedInsertion(sortableSource, placement);\n return projected !== null && projected.originalIds.indexOf(sortableSource.id) === projected.insertionIndex;\n };\n\n const emitDrop = (\n sortableSource: SortableSource,\n placement: SortablePlacement,\n input: SortableInput | null = null,\n ): boolean => {\n const destination = group(sortableSource.scopeId, placement.destination.groupId);\n if (!destination || !canDrop(sortableSource, placement.destination.groupId, input)) return false;\n const destinationGroup = destination.getGroup();\n\n const projected = projectedInsertion(sortableSource, placement);\n if (!projected || isNoop(sortableSource, placement)) return false;\n\n const normalized = {...placement, index: projected.insertionIndex};\n dispatch({\n el: destination.element,\n name: 'ui:sortable-drop',\n composed: true,\n detail: frozenDropDetail(sortableSource, normalized),\n });\n if (sortableSource.label && destinationGroup.label) {\n announce(`${sortableSource.label} moved to ${destinationGroup.label}.`);\n }\n return true;\n };\n\n const moveRelative = (edge: 'before' | 'after', options: {\n scope: string;\n sourceId: string;\n anchorId: string;\n destinationGroupId?: string;\n }): boolean => {\n const sourceRecord = source(options.scope, options.sourceId);\n if (!sourceRecord) return false;\n const sortableSource = sourceRecord.getSource();\n const destinationGroupId = options.destinationGroupId ?? sortableSource.groupId;\n if (!destinationGroupId || options.anchorId === options.sourceId) return false;\n return emitDrop(sortableSource, {\n destination: {groupId: destinationGroupId},\n anchor: {id: options.anchorId, edge},\n });\n };\n\n const moveToEdge = (edge: 'start' | 'end', options: {\n scope: string;\n sourceId: string;\n destinationGroupId: string;\n }): boolean => {\n const sourceRecord = source(options.scope, options.sourceId);\n const destination = group(options.scope, options.destinationGroupId);\n if (!sourceRecord || !destination) return false;\n const sortableSource = sourceRecord.getSource();\n const ids = destination.getItemIds().filter((id) => (\n sortableSource.groupId !== options.destinationGroupId || id !== sortableSource.id\n ));\n const anchor = ids.length === 0\n ? null\n : edge === 'start'\n ? {id: ids[0]!, edge: 'before' as const}\n : {id: ids.at(-1)!, edge: 'after' as const};\n return emitDrop(sortableSource, {destination: {groupId: options.destinationGroupId}, anchor});\n };\n\n return {\n registerGroup: (record) => {\n const value = record.getGroup();\n return register(\n groups,\n keyFor(value.scopeId, value.id),\n () => {\n const current = record.getGroup();\n return keyFor(current.scopeId, current.id);\n },\n record,\n 'group',\n );\n },\n registerSource: (record) => {\n const value = record.getSource();\n return register(\n sources,\n keyFor(value.scopeId, value.id),\n () => {\n const current = record.getSource();\n return keyFor(current.scopeId, current.id);\n },\n record,\n 'source',\n );\n },\n group,\n source,\n canDrop,\n isNoop,\n emitDrop,\n moveBefore: (options) => moveRelative('before', options),\n moveAfter: (options) => moveRelative('after', options),\n moveToStart: (options) => moveToEdge('start', options),\n moveToEnd: (options) => moveToEdge('end', options),\n };\n};\n\nconst sortable = createSortableRegistry();\n\nexport {createSortableRegistry, sortable};\nexport type {GroupRecord, SortableRegistration, SortableRegistry, SourceRecord};\n","const CURSOR_PROPERTY = '--ui-sortable-drag-cursor';\nconst DRAGGING_ATTRIBUTE = 'data-ui-sortable-dragging';\n\nconst activateSortableCursor = (cursor: string): (() => void) => {\n const root = document.documentElement;\n const previousAttribute = root.getAttribute(DRAGGING_ATTRIBUTE);\n const previousCursor = root.style.getPropertyValue(CURSOR_PROPERTY);\n root.setAttribute(DRAGGING_ATTRIBUTE, '');\n root.style.setProperty(CURSOR_PROPERTY, cursor.trim() || 'default');\n\n return () => {\n if (previousAttribute === null) root.removeAttribute(DRAGGING_ATTRIBUTE);\n else root.setAttribute(DRAGGING_ATTRIBUTE, previousAttribute);\n if (previousCursor) root.style.setProperty(CURSOR_PROPERTY, previousCursor);\n else root.style.removeProperty(CURSOR_PROPERTY);\n };\n};\n\nexport {activateSortableCursor};\n","import {createMachine, type Machine, type MachineScope} from '../../state-machine';\n\ntype SortablePointerSnapshot = Readonly<{\n destinationId: string | null;\n input: Readonly<{clientX: number; clientY: number}>;\n}>;\ntype SortableSourceMachineContext = {\n data: Record<string, unknown>;\n pointer: SortablePointerSnapshot | null;\n};\ntype SortableSourceMachineEffects<TProps> = Readonly<{\n resolvePlacement(scope: MachineScope<SortableSourceMachineContext, TProps>): void;\n synced(scope: MachineScope<SortableSourceMachineContext, TProps>): void;\n complete(scope: MachineScope<SortableSourceMachineContext, TProps>): void;\n reconcile(scope: MachineScope<SortableSourceMachineContext, TProps>): void;\n}>;\n\nconst createSortableSourceMachine = <TProps>({props, effects}: {\n props: TProps;\n effects: SortableSourceMachineEffects<TProps>;\n}): Machine<SortableSourceMachineContext, TProps> => createMachine<SortableSourceMachineContext, TProps>({\n type: 'parallel',\n on: {\n PROPS_CHANGED: {reduce: 'props', effects: 'reconcile'},\n DOM_INVALIDATED: {effects: 'reconcile'},\n },\n states: {\n interaction: {\n initial: 'idle',\n on: {POINTER_MOVED: {reduce: 'pointer'}},\n states: {\n idle: {on: {START: {target: 'starting', reduce: 'start'}}},\n starting: {on: {\n STARTING_DONE: {target: 'dragging'},\n END: {target: 'ending', reduce: 'data'},\n }},\n dragging: {on: {END: {target: 'ending', reduce: 'data'}}},\n ending: {on: {ENDING_DONE: {target: 'idle', effects: 'complete'}}},\n },\n },\n layout: {\n initial: 'inactive',\n states: {\n inactive: {on: {START: {target: 'calculating'}}},\n calculating: {\n entry: 'resolvePlacement',\n on: {\n POINTER_MOVED: {effects: 'resolvePlacement'},\n LAYOUT_PROPOSED: {target: 'syncing', reduce: 'data'},\n END: {target: 'inactive'},\n },\n },\n syncing: {on: {\n RECTS_SYNCED: {target: 'calculating', effects: 'synced'},\n END: {target: 'inactive', effects: 'synced'},\n }},\n },\n },\n },\n}, {\n props,\n context: {data: {}, pointer: null},\n reducers: {\n start: ({event}) => ({context: {\n data: event.data as Record<string, unknown>,\n pointer: null,\n }}),\n data: ({context, event}) => ({context: {...context, data: event.data as Record<string, unknown>}}),\n pointer: ({context, event}) => ({context: {\n ...context,\n pointer: event.pointer as SortablePointerSnapshot,\n }}),\n props: ({context, event}) => ({context, props: event.props as TProps}),\n },\n effects,\n});\n\nexport {createSortableSourceMachine};\nexport type {SortablePointerSnapshot, SortableSourceMachineContext, SortableSourceMachineEffects};\n","var ledger = new Map();\nvar requested = new Set();\nexport function markAndGetEngagement(element) {\n markEngagement(element);\n var entry = ledger.get(element);\n if (entry) {\n return entry;\n }\n var fresh = {\n timeOfEngagementStart: Date.now()\n };\n ledger.set(element, fresh);\n return fresh;\n}\nexport function markEngagement(element) {\n requested.add(element);\n}\nexport function clearUnusedEngagements(fn) {\n // make sure previous engagement requests don't linger\n requested.clear();\n\n // perform the required work\n fn();\n\n // if engagements where not requested, purge it\n ledger.forEach(function (_, element) {\n if (!requested.has(element)) {\n ledger.delete(element);\n }\n });\n\n // cleaning up after ourselves\n requested.clear();\n}\nexport function clearEngagementHistory() {\n ledger.clear();\n}","import { getElementFromPointWithoutHoneypot } from '@atlaskit/pragmatic-drag-and-drop/private/get-element-from-point-without-honey-pot';\nimport { clearEngagementHistory, clearUnusedEngagements } from './engagement-history';\n// We keep this map so that \"over element\" scrolling and \"overflow\" scrolling\n// can leverage the same scheduler.\n// The 'monitor' is the key for looking up schedulers\nvar schedulers = new Map();\nexport function getScheduler(monitor) {\n var scheduler = schedulers.get(monitor);\n if (scheduler) {\n // @ts-expect-error: I don't know how to link the DragType generic between the key and the value when the\n // monitor itself is the key\n return scheduler;\n }\n var created = makeScheduler(monitor);\n schedulers.set(monitor, created);\n return created;\n}\nfunction makeScheduler(monitor) {\n var state = {\n type: 'idle'\n };\n var callbacks = [];\n function loop(timeLastFrameFinished) {\n if (state.type !== 'running') {\n return;\n }\n var timeSinceLastFrame = timeLastFrameFinished - state.timeLastFrameFinished;\n var _state = state,\n latestArgs = _state.latestArgs;\n\n // A common starting lookup point for determining\n // which auto scroller should be used, and what should be scrolled.\n var underUsersPointer = getElementFromPointWithoutHoneypot({\n x: latestArgs.location.current.input.clientX,\n y: latestArgs.location.current.input.clientY\n });\n clearUnusedEngagements(function () {\n callbacks.forEach(function (onFrame) {\n return onFrame({\n underUsersPointer: underUsersPointer,\n latestArgs: latestArgs,\n timeSinceLastFrame: timeSinceLastFrame\n });\n });\n });\n state.timeLastFrameFinished = timeLastFrameFinished;\n state.frameId = requestAnimationFrame(loop);\n }\n function reset() {\n if (state.type === 'idle') {\n return;\n }\n cancelAnimationFrame(state.frameId);\n clearEngagementHistory();\n state = {\n type: 'idle'\n };\n }\n function start(args) {\n if (state.type !== 'idle') {\n return;\n }\n state = {\n // Waiting a frame so we can accurately determine `timeSinceLastFrame`.\n type: 'initializing',\n latestArgs: args,\n frameId: requestAnimationFrame(function (timeLastFrameFinished) {\n if (state.type !== 'initializing') {\n return;\n }\n state = {\n type: 'running',\n timeLastFrameFinished: timeLastFrameFinished,\n latestArgs: state.latestArgs,\n frameId: requestAnimationFrame(loop)\n };\n })\n };\n }\n\n // this module might have been imported after a drag has started\n // We are starting the auto scroller if we get an update event and\n // the auto scroller has not started yet\n function update(args) {\n if (state.type === 'idle') {\n start(args);\n return;\n }\n state.latestArgs = args;\n }\n\n // Not exposing a way to stop listening\n monitor({\n onDragStart: start,\n onDropTargetChange: update,\n onDrag: update,\n onDrop: reset\n });\n var api = {\n onFrame: function onFrame(fn) {\n callbacks.push(fn);\n }\n };\n return api;\n}","export var dataAttribute = 'data-auto-scrollable';\nexport var selector = \"[\".concat(dataAttribute, \"=\\\"true\\\"]\");\nexport function addScrollableAttribute(element) {\n element.setAttribute(dataAttribute, 'true');\n return function () {\n return element.removeAttribute(dataAttribute);\n };\n}","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar baseConfig = {\n startHitboxAtPercentageRemainingOfElement: {\n top: 0.25,\n right: 0.25,\n bottom: 0.25,\n left: 0.25\n },\n maxScrollAtPercentageRemainingOfHitbox: {\n top: 0.5,\n right: 0.5,\n bottom: 0.5,\n left: 0.5\n },\n timeDampeningDurationMs: 400,\n // Too big and it's too easy to trigger auto scrolling\n // Too small and it's too hard 😅\n maxMainAxisHitboxSize: 180\n};\n\n/** What the max scroll should be per second. Using \"per second\" rather than \"per frame\"\n * as we want a consistent scroll speed regardless of frame rate.\n *\n *\n * I explored trying to make the max scroll speed dynamic based on particular factors.\n * However, it ended up being difficult to find a _perfect_ formula.\n *\n * Likely the perfect answer would involve:\n * - the size of the scrollable element\n * - the size of the scrollable element relative to the screen size\n * - the size of the drag preview\n * - the size of elements being scrolled in scrollable elements (expensive and difficult to compute)\n */\nvar maxPixelScrollPerSecond = {\n // What the value would be if we were scrolling at 15px per frame at 60fps.\n // This is the default as it works well for most experiences.\n // In certain scenarios though it can feel a bit slow.\n standard: 15 * 60,\n // What the value would be if we were scrolling at 25px per frame at 60fps.\n // This is not the default as it feels too fast for a lot of experiences.\n fast: 25 * 60\n};\nexport function getInternalConfig(provided) {\n var _provided$maxScrollSp;\n return _objectSpread(_objectSpread({}, baseConfig), {}, {\n // only allowing limited control over the config at this stage\n maxPixelScrollPerSecond: maxPixelScrollPerSecond[(_provided$maxScrollSp = provided === null || provided === void 0 ? void 0 : provided.maxScrollSpeed) !== null && _provided$maxScrollSp !== void 0 ? _provided$maxScrollSp : 'standard']\n });\n}","export var canScrollOnEdge = {\n // Notes:\n //\n // 🌏 Chrome 115.0: uses fractional units for `scrollLeft` and `scrollTop`\n // (and fractional units don't reach true integer maximum when zoomed in / out)\n // 🍎 Safari 16.5.2: no fractional units\n // 🦊 Firefox 115.0: no fractional units\n\n // we have some scroll we can move backwards into\n top: function top(element) {\n return element.scrollTop > 0;\n },\n // We have some scroll we can move forward into\n right: function right(element) {\n return Math.ceil(element.scrollLeft) + element.clientWidth < element.scrollWidth;\n },\n // We have some scroll we can move forwards into\n bottom: function bottom(element) {\n return Math.ceil(element.scrollTop) + element.clientHeight < element.scrollHeight;\n },\n // we have some scroll we can move back into.\n left: function left(element) {\n return element.scrollLeft > 0;\n }\n};","export var edges = ['top', 'right', 'bottom', 'left'];\nexport var edgeAxisLookup = {\n top: 'vertical',\n right: 'horizontal',\n bottom: 'vertical',\n left: 'horizontal'\n};","var vertical = {\n start: 'top',\n end: 'bottom',\n point: 'y',\n size: 'height'\n};\nvar horizontal = {\n start: 'left',\n end: 'right',\n point: 'x',\n size: 'width'\n};\nexport var axisLookup = {\n vertical: {\n mainAxis: vertical,\n crossAxis: horizontal\n },\n horizontal: {\n mainAxis: horizontal,\n crossAxis: vertical\n }\n};","export var mainAxisSideLookup = {\n top: 'start',\n right: 'end',\n bottom: 'end',\n left: 'start'\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { axisLookup } from './axis';\nimport { mainAxisSideLookup } from './side';\nfunction makeGetHitbox(_ref) {\n var edge = _ref.edge,\n axis = _ref.axis;\n return function hitbox(_ref2) {\n var clientRect = _ref2.clientRect,\n config = _ref2.config;\n var _axisLookup$axis = axisLookup[axis],\n mainAxis = _axisLookup$axis.mainAxis,\n crossAxis = _axisLookup$axis.crossAxis;\n var side = mainAxisSideLookup[edge];\n var mainAxisHitboxSize = Math.min(\n // scale the size of the hitbox down for smaller elements\n config.startHitboxAtPercentageRemainingOfElement[edge] * clientRect[mainAxis.size],\n // Don't let the hitbox grow too big for big elements\n config.maxMainAxisHitboxSize);\n return DOMRect.fromRect(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, mainAxis.point, side === 'start' ?\n // begin from the start edge and grow inwards\n clientRect[mainAxis.point] :\n // begin from inside the end edge and grow towards the end edge\n clientRect[mainAxis.point] + clientRect[mainAxis.size] - mainAxisHitboxSize), crossAxis.point, clientRect[crossAxis.point]), mainAxis.size, mainAxisHitboxSize), crossAxis.size, clientRect[crossAxis.size]));\n };\n}\nexport var getOverElementHitbox = {\n top: makeGetHitbox({\n axis: 'vertical',\n edge: 'top'\n }),\n right: makeGetHitbox({\n axis: 'horizontal',\n edge: 'right'\n }),\n bottom: makeGetHitbox({\n axis: 'vertical',\n edge: 'bottom'\n }),\n left: makeGetHitbox({\n axis: 'horizontal',\n edge: 'left'\n })\n};","export function getPercentageInRange(_ref) {\n var startOfRange = _ref.startOfRange,\n endOfRange = _ref.endOfRange,\n value = _ref.value;\n // checking inputs\n var isValid = startOfRange < endOfRange;\n if (!isValid) {\n return 0;\n }\n if (value < startOfRange) {\n return 0;\n }\n if (value > endOfRange) {\n return 1;\n }\n var range = endOfRange - startOfRange;\n return (value - startOfRange) / range;\n}","import { axisLookup } from './axis';\nimport { getPercentageInRange } from './get-percentage-in-range';\nimport { mainAxisSideLookup } from './side';\n\n// We want a consistent scroll speed across devices, regardless of framerate\nfunction getMaxScrollChange(_ref) {\n var timeSinceLastFrame = _ref.timeSinceLastFrame,\n config = _ref.config;\n var targetScrollPerMs = config.maxPixelScrollPerSecond / 1000;\n\n // Adjusting out target scroll rate to match the frame rate of the target device\n // This will pull the scroll speed down on high frame rate devices\n // so we get a consistent visual scroll speed regardless of device.\n var proposed = Math.ceil(targetScrollPerMs * timeSinceLastFrame);\n\n // If lots of time as passed since that last frame (such on lower frame rate devices)\n // we don't want the scroll speed to be too fast, otherwise it can feel jumpy\n // We are capping the scroll speed at what it would be if we were hitting 60fps\n var maximum = config.maxPixelScrollPerSecond / 60;\n return Math.min(proposed, maximum);\n}\nfunction getDistanceDampening(_ref2) {\n var client = _ref2.client,\n axis = _ref2.axis,\n edge = _ref2.edge,\n hitbox = _ref2.hitbox,\n config = _ref2.config;\n var mainAxis = axisLookup[axis].mainAxis;\n var side = mainAxisSideLookup[edge];\n\n // We want to hit the max speed before the edge of the hitbox\n var maxSpeedBuffer = hitbox[mainAxis.size] * config.maxScrollAtPercentageRemainingOfHitbox[edge];\n if (side === 'end') {\n return getPercentageInRange({\n startOfRange: hitbox[mainAxis.start],\n endOfRange: hitbox[mainAxis.end] - maxSpeedBuffer,\n value: client[mainAxis.point]\n });\n }\n\n // Moving towards start edge\n\n var raw = getPercentageInRange({\n startOfRange: hitbox[mainAxis.start] + maxSpeedBuffer,\n endOfRange: hitbox[mainAxis.end],\n value: client[mainAxis.point]\n });\n // When moving near start edge\n // - the 'end' edge is where we start scrolling\n // - the 'start' edge is where we reach max speed\n // So we need to invert the percentage when moving backwards\n return 1 - raw;\n}\nexport function getScrollChange(_ref3) {\n var client = _ref3.client,\n timeSinceLastFrame = _ref3.timeSinceLastFrame,\n engagement = _ref3.engagement,\n axis = _ref3.axis,\n hitbox = _ref3.hitbox,\n edge = _ref3.edge,\n isDistanceDampeningEnabled = _ref3.isDistanceDampeningEnabled,\n config = _ref3.config;\n // We have two forms of speed dampening:\n // 1. 🗺️ Distance\n // The closer you are to a hitbox edge, the faster the scroll speed will be\n // 2. ⏱️ Time\n // When first entering a scroll container we want to dampening all scrolling\n // This is to prevent super fast auto scrolling when first entering into\n // a scroll container, or when lifting in a scroll container\n\n var maxScroll = getMaxScrollChange({\n timeSinceLastFrame: timeSinceLastFrame,\n config: config\n });\n var percentageDistanceDampening = isDistanceDampeningEnabled ? getDistanceDampening({\n client: client,\n edge: edge,\n hitbox: hitbox,\n axis: axis,\n config: config\n }) : 1;\n\n // Dampen speed by time\n var percentageThroughTimeDampening = getPercentageInRange({\n startOfRange: engagement.timeOfEngagementStart,\n endOfRange: engagement.timeOfEngagementStart + config.timeDampeningDurationMs,\n value: Date.now()\n });\n\n // Calculate how much of the max scroll we should apply based on dampening\n var percentageOfMaxScroll = percentageDistanceDampening * percentageThroughTimeDampening;\n\n // We _could_ ease this update (`Math.pow(percentageOfMaxSpeed, 2)`)\n // But linear is feeling really good\n // Always scrolling by at least one pixel, otherwise the scroll does nothing\n var scroll = Math.max(maxScroll * percentageOfMaxScroll, 1);\n var side = mainAxisSideLookup[edge];\n\n // When moving backwards, we will be scrolling backwards\n return side === 'end' ? scroll : -1 * scroll;\n}","export function isAxisAllowed(axis, allowedAxis) {\n return allowedAxis === 'all' || axis === allowedAxis;\n}","export function isWithin(_ref) {\n var client = _ref.client,\n clientRect = _ref.clientRect;\n return (\n // is within horizontal bounds\n client.x >= clientRect.x && client.x <= clientRect.x + clientRect.width &&\n // is within vertical bounds\n client.y >= clientRect.y && client.y <= clientRect.y + clientRect.height\n );\n}","import { canScrollOnEdge } from '../shared/can-scroll-on-edge';\nimport { edgeAxisLookup, edges } from '../shared/edges';\nimport { getOverElementHitbox } from '../shared/get-over-element-hitbox';\nimport { getScrollChange } from '../shared/get-scroll-change';\nimport { isAxisAllowed } from '../shared/is-axis-allowed';\nimport { isWithin } from '../shared/is-within';\nfunction getRectDefault(element) {\n return element.getBoundingClientRect();\n}\nexport function getScrollBy(_ref) {\n var element = _ref.element,\n input = _ref.input,\n timeSinceLastFrame = _ref.timeSinceLastFrame,\n engagement = _ref.engagement,\n config = _ref.config,\n allowedAxis = _ref.allowedAxis,\n _ref$getRect = _ref.getRect,\n getRect = _ref$getRect === void 0 ? getRectDefault : _ref$getRect;\n var client = {\n x: input.clientX,\n y: input.clientY\n };\n var clientRect = getRect(element);\n var scrollableEdges = edges.reduce(function (map, edge) {\n var hitbox = getOverElementHitbox[edge]({\n clientRect: clientRect,\n config: config\n });\n var axis = edgeAxisLookup[edge];\n\n // Note: changing the allowed axis during a drag will not\n // reset time dampening. It was decided it would be too\n // complex to implement initially, and we can add it\n // later if needed.\n if (!isAxisAllowed(axis, allowedAxis)) {\n return map;\n }\n if (!isWithin({\n client: client,\n clientRect: hitbox\n })) {\n return map;\n }\n if (!canScrollOnEdge[edge](element)) {\n return map;\n }\n map.set(edge, {\n edge: edge,\n hitbox: hitbox\n });\n return map;\n }, new Map());\n var left = function () {\n var axis = 'horizontal';\n var leftEdge = scrollableEdges.get('left');\n if (leftEdge) {\n return getScrollChange({\n client: client,\n edge: leftEdge.edge,\n hitbox: leftEdge.hitbox,\n axis: axis,\n timeSinceLastFrame: timeSinceLastFrame,\n engagement: engagement,\n isDistanceDampeningEnabled: true,\n config: config\n });\n }\n var rightEdge = scrollableEdges.get('right');\n if (rightEdge) {\n return getScrollChange({\n client: client,\n edge: rightEdge.edge,\n hitbox: rightEdge.hitbox,\n axis: axis,\n timeSinceLastFrame: timeSinceLastFrame,\n engagement: engagement,\n isDistanceDampeningEnabled: true,\n config: config\n });\n }\n return 0;\n }();\n var top = function () {\n var axis = 'vertical';\n var bottomEdge = scrollableEdges.get('bottom');\n if (bottomEdge) {\n return getScrollChange({\n client: client,\n edge: bottomEdge.edge,\n hitbox: bottomEdge.hitbox,\n axis: axis,\n timeSinceLastFrame: timeSinceLastFrame,\n engagement: engagement,\n isDistanceDampeningEnabled: true,\n config: config\n });\n }\n var topEdge = scrollableEdges.get('top');\n if (topEdge) {\n return getScrollChange({\n client: client,\n edge: topEdge.edge,\n hitbox: topEdge.hitbox,\n axis: axis,\n timeSinceLastFrame: timeSinceLastFrame,\n engagement: engagement,\n isDistanceDampeningEnabled: true,\n config: config\n });\n }\n return 0;\n }();\n return {\n left: left,\n top: top\n };\n}","function _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nimport { getInternalConfig } from '../shared/configuration';\nimport { markAndGetEngagement } from '../shared/engagement-history';\nimport { selector } from './data-attributes';\nimport { getScrollBy } from './get-scroll-by';\nfunction isScrollingAvailable(value) {\n return Boolean(value.top || value.left);\n}\nfunction tryScrollElements(_ref) {\n var _container$getConfigu, _container$getAllowed, _container$getAllowed2;\n var target = _ref.target,\n input = _ref.input,\n source = _ref.source,\n findEntry = _ref.findEntry,\n timeSinceLastFrame = _ref.timeSinceLastFrame,\n _ref$available = _ref.available,\n available = _ref$available === void 0 ? {\n top: true,\n left: true\n } : _ref$available;\n // we cannot do any more scrolling\n if (!isScrollingAvailable(available)) {\n return available;\n }\n\n // run out of parents to search\n if (!target) {\n return available;\n }\n var element = target.closest(selector);\n\n // cannot find any more scroll containers\n if (!element) {\n return available;\n }\n var container = findEntry(element);\n\n // cannot find registration, this is bad.\n // fail and just exit\n if (!container) {\n return available;\n }\n function continueSearchUp() {\n var _element$parentElemen;\n return tryScrollElements({\n target: (_element$parentElemen = element === null || element === void 0 ? void 0 : element.parentElement) !== null && _element$parentElemen !== void 0 ? _element$parentElemen : null,\n findEntry: findEntry,\n source: source,\n timeSinceLastFrame: timeSinceLastFrame,\n input: input,\n available: available\n });\n }\n var feedback = {\n input: input,\n source: source,\n element: element\n };\n\n // Engagement is not marked if scrolling is explicitly not allowed\n if (container.canScroll && !container.canScroll(feedback)) {\n return continueSearchUp();\n }\n\n // Marking engagement even if no edges are scrollable.\n // We are marking engagement as soon as the element is scrolled over\n var engagement = markAndGetEngagement(element);\n var config = getInternalConfig((_container$getConfigu = container.getConfiguration) === null || _container$getConfigu === void 0 ? void 0 : _container$getConfigu.call(container, feedback));\n var allowedAxis = (_container$getAllowed = (_container$getAllowed2 = container.getAllowedAxis) === null || _container$getAllowed2 === void 0 ? void 0 : _container$getAllowed2.call(container, feedback)) !== null && _container$getAllowed !== void 0 ? _container$getAllowed : 'all';\n var scrollBy = getScrollBy({\n element: element,\n engagement: engagement,\n input: input,\n timeSinceLastFrame: timeSinceLastFrame,\n allowedAxis: allowedAxis,\n config: config\n });\n\n // Only allow scrolling in directions that have not already been used\n var scroll = {\n top: 0,\n left: 0\n };\n if (available.top && scrollBy.top !== 0) {\n scroll.top = scrollBy.top;\n // can no longer scroll on the top after this\n available.top = false;\n }\n if (available.left && scrollBy.left !== 0) {\n scroll.left = scrollBy.left;\n // can no longer scroll on the left after this\n available.left = false;\n }\n\n // Only scroll if there is something to scroll\n if (scroll.top !== 0 || scroll.left !== 0) {\n element.scrollBy(scroll);\n }\n return continueSearchUp();\n}\nfunction tryScrollWindow(_ref2) {\n var input = _ref2.input,\n timeSinceLastFrame = _ref2.timeSinceLastFrame,\n available = _ref2.available,\n source = _ref2.source,\n entries = _ref2.entries;\n var element = document.documentElement;\n var feedback = {\n input: input,\n source: source,\n element: element\n };\n var _iterator = _createForOfIteratorHelper(entries),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _entry$getConfigurati, _entry$getAllowedAxis, _entry$getAllowedAxis2;\n var entry = _step.value;\n // this entry is not allowing scrolling, we need to look for another\n if (entry.canScroll && !entry.canScroll(feedback)) {\n continue;\n }\n\n // Note: if we had an event for when the user is leaving a tab\n // we _could_ conceptually reset the engagement\n var engagement = markAndGetEngagement(element);\n var config = getInternalConfig((_entry$getConfigurati = entry.getConfiguration) === null || _entry$getConfigurati === void 0 ? void 0 : _entry$getConfigurati.call(entry, feedback));\n var allowedAxis = (_entry$getAllowedAxis = (_entry$getAllowedAxis2 = entry.getAllowedAxis) === null || _entry$getAllowedAxis2 === void 0 ? void 0 : _entry$getAllowedAxis2.call(entry, feedback)) !== null && _entry$getAllowedAxis !== void 0 ? _entry$getAllowedAxis : 'all';\n var scrollBy = getScrollBy({\n element: element,\n engagement: engagement,\n input: input,\n config: config,\n allowedAxis: allowedAxis,\n getRect: function getRect(element) {\n return DOMRect.fromRect({\n y: 0,\n x: 0,\n width: element.clientWidth,\n height: element.clientHeight\n });\n },\n timeSinceLastFrame: timeSinceLastFrame\n });\n var scroll = {\n top: available.top ? scrollBy.top : 0,\n left: available.left ? scrollBy.left : 0\n };\n\n // only trigger a scroll if we are actually scrolling\n if (scroll.top !== 0 || scroll.left !== 0) {\n element.scrollBy(scroll);\n }\n\n // We only want the window to scroll once\n break;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n}\nexport function tryScroll(_ref3) {\n var input = _ref3.input,\n findEntry = _ref3.findEntry,\n timeSinceLastFrame = _ref3.timeSinceLastFrame,\n source = _ref3.source,\n getWindowScrollEntries = _ref3.getWindowScrollEntries,\n underUsersPointer = _ref3.underUsersPointer;\n // We are matching browser behaviour and scrolling inner elements\n // before outer ones. So we try to scroll scroller containers before\n // the window.\n var remainder = tryScrollElements({\n target: underUsersPointer,\n timeSinceLastFrame: timeSinceLastFrame,\n input: input,\n source: source,\n findEntry: findEntry\n });\n\n // Check if we can do any window scrolling\n if (!isScrollingAvailable(remainder)) {\n return;\n }\n tryScrollWindow({\n input: input,\n source: source,\n entries: getWindowScrollEntries(),\n timeSinceLastFrame: timeSinceLastFrame,\n available: remainder\n });\n}","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';\nimport { once } from '@atlaskit/pragmatic-drag-and-drop/once';\nimport { getScheduler } from '../shared/scheduler';\nimport { addScrollableAttribute } from './data-attributes';\nimport { tryScroll } from './try-scroll';\nexport function makeApi(_ref) {\n var monitor = _ref.monitor;\n var elementRegistry = new Map();\n var windowRegistry = new Set();\n function autoScroll(args) {\n // Warn during development if trying to add auto scroll to an element\n // that is not scrollable.\n // Note: this can produce a false positive when a scroll container is not\n // scrollable initially, but becomes scrollable during a drag.\n // I thought of adding the warning as I think it would be a more common pitfall\n // to accidentally register auto scrolling on the wrong element\n // If requested, we could provide a mechanism to opt out of this warning\n if (process.env.NODE_ENV !== 'production') {\n var _window$getComputedSt = window.getComputedStyle(args.element),\n overflowX = _window$getComputedSt.overflowX,\n overflowY = _window$getComputedSt.overflowY;\n var isScrollable = overflowX === 'auto' || overflowX === 'scroll' || overflowY === 'auto' || overflowY === 'scroll';\n if (!isScrollable) {\n // eslint-disable-next-line no-console\n console.warn('Auto scrolling has been attached to an element that appears not to be scrollable', {\n element: args.element,\n overflowX: overflowX,\n overflowY: overflowY\n });\n }\n }\n\n // Warn if there is an existing registration\n if (process.env.NODE_ENV !== 'production') {\n var existing = elementRegistry.get(args.element);\n if (existing) {\n // eslint-disable-next-line no-console\n console.warn('You have already registered autoScrolling on the same element', {\n existing: existing,\n proposed: args\n });\n }\n }\n elementRegistry.set(args.element, args);\n var cleanup = combine(addScrollableAttribute(args.element), function () {\n return elementRegistry.delete(args.element);\n });\n return once(cleanup);\n }\n function autoScrollWindow() {\n var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Putting `args` in a unique object so that\n // each call will create a unique entry, even if a consumer\n // shares the `args` object between calls.\n // Just being safe here.\n var unique = _objectSpread({}, args);\n windowRegistry.add(unique);\n function cleanup() {\n windowRegistry.delete(unique);\n }\n return once(cleanup);\n }\n function findEntry(element) {\n var _elementRegistry$get;\n return (_elementRegistry$get = elementRegistry.get(element)) !== null && _elementRegistry$get !== void 0 ? _elementRegistry$get : null;\n }\n function getWindowScrollEntries() {\n return Array.from(windowRegistry);\n }\n function onFrame(_ref2) {\n var latestArgs = _ref2.latestArgs,\n underUsersPointer = _ref2.underUsersPointer,\n timeSinceLastFrame = _ref2.timeSinceLastFrame;\n tryScroll({\n input: latestArgs.location.current.input,\n source: latestArgs.source,\n findEntry: findEntry,\n underUsersPointer: underUsersPointer,\n timeSinceLastFrame: timeSinceLastFrame,\n getWindowScrollEntries: getWindowScrollEntries\n });\n }\n getScheduler(monitor).onFrame(onFrame);\n return {\n autoScroll: autoScroll,\n autoScrollWindow: autoScrollWindow\n };\n}","import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { makeApi } from '../over-element/make-api';\nvar api = makeApi({\n monitor: monitorForElements\n});\nexport var autoScrollForElements = api.autoScroll;\nexport var autoScrollWindowForElements = api.autoScrollWindow;","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport { bindAll } from 'bind-event-listener';\nimport { getBindingsForBrokenDrags } from '../util/detect-broken-drag';\nfunction acceptDrop(event) {\n // if the event is already prevented the event we don't need to do anything\n if (event.defaultPrevented) {\n return;\n }\n // Using \"move\" as the drop effect as that uses the standard\n // cursor. Doing this so the user doesn't think they are dropping\n // on the page\n // Note: using \"none\" will not allow a \"drop\" to occur, so we are using \"move\"\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = 'move';\n }\n // cancel the default browser behaviour\n // doing this will tell the browser that we have handled the drop\n event.preventDefault();\n}\nvar unbindEvents = null;\n\n/**\n * Block drag operations outside of `@atlaskit/pragmatic-drag-and-drop`\n */\nfunction start() {\n cleanup();\n unbindEvents = bindAll(window, [{\n type: 'dragover',\n listener: acceptDrop\n }, {\n type: 'dragenter',\n listener: acceptDrop\n }, {\n type: 'drop',\n listener: function listener(event) {\n // our lifecycle manager already prevents events, but just being super safe\n event.preventDefault();\n\n // not setting dropEffect, as `drop.dropEffect` has already been published to the user\n // (lifecycle-manager binds events in the capture phase)\n\n // we don't need to wait for \"dragend\", and \"dragend\" might not even happen,\n // such as when the draggable has been removed during a drag.\n cleanup();\n }\n }, {\n type: 'dragend',\n listener: cleanup\n }].concat(_toConsumableArray(getBindingsForBrokenDrags({\n onDragEnd: cleanup\n }))),\n // being clear that these are added in the bubble phase\n {\n capture: false\n });\n}\nfunction cleanup() {\n var _unbindEvents;\n (_unbindEvents = unbindEvents) === null || _unbindEvents === void 0 || _unbindEvents();\n unbindEvents = null;\n}\n\n/**\n * TODO: for next major, we could look at do the following:\n *\n * ```diff\n * - preventUnhandled.start();\n * - preventUnhandled.stop();\n * + const stop = preventUnhandled();\n * ```\n */\n\nfunction stop() {\n var _window$event;\n /**\n * if `stop()` is called in a `\"drop\"` event, then `event.preventDefault()` won't be called.\n * Our `\"drop\"` listener calls `event.preventDefault()` for handled drop events\n * (\"drop\" events caused by dropping over a drop target)\n * `preventUnhandled()` causes every element to become a drop target (according to the browser)\n *\n * To opt out of the default behaviour for a `\"drop\"` event, we need to make sure\n * that we cancel it.\n *\n * The `\"drop\"` event listener in core is in the `capture` phase, so people calling\n * `preventUnhandled.stop()` in `onDrop()` will remove the `\"drop\"` event listener in this\n * file before it has the chance to cancel the event.\n *\n * Being sneaky and using the `window.event` global to sniff out the current event\n */\n if (((_window$event = window.event) === null || _window$event === void 0 ? void 0 : _window$event.type) === 'drop') {\n var _window$event2;\n (_window$event2 = window.event) === null || _window$event2 === void 0 || _window$event2.preventDefault();\n }\n cleanup();\n}\nexport var preventUnhandled = {\n start: start,\n stop: stop\n};","import {autoScrollForElements, autoScrollWindowForElements} from '@atlaskit/pragmatic-drag-and-drop-auto-scroll/element';\nimport {\n draggable,\n dropTargetForElements,\n} from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport {disableNativeDragPreview} from '@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview';\nimport {preventUnhandled} from '@atlaskit/pragmatic-drag-and-drop/prevent-unhandled';\nimport type Alpine from 'alpinejs';\n\nimport {motion, type MotionHandle} from '@client/motion';\nimport {createAlpineMachine} from '@client/runtime/alpine-machine';\nimport {bool, defineProps, json, number, oneOf, string, type SchemaToProps} from '@client/runtime/codecs';\nimport {registerDomInvalidationOwner} from '@client/runtime/dom-invalidation';\nimport {declareMorphAttributes} from '@client/runtime/morph';\nimport {defineHook} from '@client/runtime/transition-coordinator';\nimport {bindDragEffectAllowed, currentDragInput, initialDragInput} from '@client/runtime/drag-and-drop/pdd';\nimport {\n createSortableGhost,\n createSortableSourceMachine,\n activateSortableCursor,\n frameFromRect,\n isSameSortablePlacement,\n isValidGridColumns,\n projectSortablePlacement,\n resolveSortableDropFrame,\n resolveSortableReorderOffsets,\n resolveSortableIndicatorFrame,\n resolveSortablePlacement,\n resolveSortableReorderPlacement,\n sortable,\n type SortableGroup,\n type SortableIndicatorFrame,\n type SortablePlacement,\n type SortableReorderLayout,\n type SortableReorderOffset,\n type SortableCancelReason,\n type SortableCanDropContext,\n type SortableSource,\n} from '@client/runtime/drag-and-drop/sortable';\nimport {dispatch, warn} from '@client/utils';\n\nconst GROUP_SELECTOR = '[data-ui-sortable]';\nconst ITEM_SELECTOR = '[data-ui-sortable-item]';\nconst SOURCE_SELECTOR = '[data-ui-sortable-source]';\nconst HANDLE_SELECTOR = '[x-ui-sortable\\\\:handle], [data-ui-sortable-handle]';\nconst PREVIEW_SELECTOR = '[x-ui-sortable\\\\:preview], [data-ui-sortable-preview]';\nconst INDICATOR_SELECTOR = '[x-ui-sortable\\\\:indicator], [data-ui-sortable-indicator]';\nconst MARKER = 'ui-sortable';\nconst INDICATOR_THICKNESS = 2;\nconst INTERACTIVE_SELECTOR = 'a, button, input, select, textarea, summary, [contenteditable], [role=\"button\"], [role=\"link\"]';\n\nconst groupSchema = {\n sortableScope: string.trim,\n sortableId: string.trim,\n orientation: oneOf(['vertical', 'horizontal', 'grid'] as const, 'vertical'),\n columns: number.default(0),\n accepts: json.array<string>([]),\n disabled: bool,\n readonly: bool,\n feedback: oneOf(['indicator', 'reorder'] as const, 'indicator'),\n sourceOpacity: number.clamp(0, 1).default(0.4),\n ghostOpacity: number.clamp(0, 1).default(0.92),\n dragCursor: string.trim.default('default'),\n label: string.trim,\n sortableData: json.object<Record<string, unknown>>({}),\n};\nconst sourceSchema = {\n sortableScope: string.trim,\n sortableId: string.trim,\n sortableType: string.trim,\n label: string.trim,\n disabled: bool,\n sortableData: json.object<Record<string, unknown>>({}),\n sourceOpacity: number.clamp(0, 1).default(0.4),\n ghostOpacity: number.clamp(0, 1).default(0.92),\n dragCursor: string.trim.default('default'),\n};\ntype SourceProps = SchemaToProps<typeof sourceSchema>;\ntype SourceTransitionContext = {data: Record<string, unknown>};\ntype PlacingTransitionData = Readonly<{\n source: SortableSource;\n previous: SortablePlacement | null;\n placement: SortablePlacement;\n feedback: 'indicator' | 'reorder';\n offsets: readonly SortableReorderOffset[];\n indicatorFrame: SortableIndicatorFrame | null;\n noop: boolean;\n}>;\ntype CanDropPolicy = (context: SortableCanDropContext) => boolean;\nconst startingHook = defineHook<SourceTransitionContext, SourceProps, Record<string, unknown>, 'starting'>({\n name: 'starting', state: 'interaction.starting', project: ({context}) => context.data,\n onDone: 'STARTING_DONE', onError: 'STARTING_DONE',\n});\nconst placingHook = defineHook<SourceTransitionContext, SourceProps, PlacingTransitionData, 'placing'>({\n name: 'placing', state: 'layout.syncing', project: ({context}) => context.data as PlacingTransitionData,\n onDone: 'RECTS_SYNCED', onError: 'RECTS_SYNCED',\n});\nconst endingHook = defineHook<SourceTransitionContext, SourceProps, Record<string, unknown>, 'ending'>({\n name: 'ending', state: 'interaction.ending', project: ({context}) => context.data,\n onDone: 'ENDING_DONE', onError: 'ENDING_DONE',\n});\nconst sourceHooks = [startingHook, placingHook, endingHook] as const;\n\ntype GroupController = {\n el: HTMLElement;\n group(): SortableGroup;\n itemIds(): readonly string[];\n indicator(): HTMLElement | null;\n refresh(): void;\n};\ntype GroupLayoutSnapshot = Readonly<{controller: GroupController; layout: SortableReorderLayout}>;\ntype ReorderProjection = {\n baseline: string;\n target: string;\n handle: MotionHandle | null;\n};\ntype SourceController = {\n el: HTMLElement;\n owner(): HTMLElement | null;\n source(): SortableSource;\n disabled(): boolean;\n appearance(): Readonly<{sourceOpacity: number; ghostOpacity: number; dragCursor: string}>;\n refresh(): void;\n restoreAppearance(): void;\n machine: ReturnType<typeof createAlpineMachine<SourceTransitionContext, typeof sourceSchema, typeof sourceHooks>>;\n ghost: ReturnType<typeof createSortableGhost> | null;\n afterEnd: (() => void) | null;\n previousOpacity: string | null;\n};\n\nconst groups = new WeakMap<HTMLElement, GroupController>();\nconst groupControllers = new Set<GroupController>();\nconst canDropPolicies = new WeakMap<HTMLElement, CanDropPolicy>();\nlet active: {\n controller: SourceController;\n source: SortableSource;\n ghost: ReturnType<typeof createSortableGhost>;\n placement: SortablePlacement | null;\n group: GroupController | null;\n layouts: ReadonlyMap<string, GroupLayoutSnapshot>;\n projections: Map<HTMLElement, ReorderProjection>;\n input: Readonly<{clientX: number; clientY: number}>;\n timestamp: number;\n restoreCursor: () => void;\n} | null = null;\n\nconst directOwner = (element: Element, selector: string): HTMLElement | null => element.closest<HTMLElement>(selector);\nconst directItems = (group: HTMLElement): HTMLElement[] => [...group.querySelectorAll<HTMLElement>(ITEM_SELECTOR)]\n .filter((item) => directOwner(item.parentElement ?? item, GROUP_SELECTOR) === group);\n\nconst captureLayout = (controller: GroupController): GroupLayoutSnapshot => {\n const group = controller.group();\n return {\n controller,\n layout: {\n groupId: group.id,\n orientation: group.orientation,\n direction: getComputedStyle(controller.el).direction === 'rtl' ? 'rtl' : 'ltr',\n columns: group.columns,\n groupRect: controller.el.getBoundingClientRect(),\n items: directItems(controller.el).map((item) => ({\n id: item.dataset.sortableId ?? '',\n rect: item.getBoundingClientRect(),\n })),\n },\n };\n};\n\nconst currentLayout = (snapshot: GroupLayoutSnapshot): SortableReorderLayout => {\n const group = snapshot.controller.group();\n const groupRect = snapshot.controller.el.getBoundingClientRect();\n const x = groupRect.left - snapshot.layout.groupRect.left;\n const y = groupRect.top - snapshot.layout.groupRect.top;\n const move = (rect: SortableReorderLayout['groupRect']) => ({\n left: rect.left + x, right: rect.right + x,\n top: rect.top + y, bottom: rect.bottom + y,\n width: rect.width, height: rect.height,\n });\n return {\n ...snapshot.layout,\n orientation: group.orientation,\n columns: group.columns,\n groupRect,\n items: snapshot.layout.items.map((item) => ({...item, rect: move(item.rect)})),\n };\n};\n\nconst animateProjection = (element: HTMLElement, state: ReorderProjection, target: string): MotionHandle | null => {\n if (state.target === target) return null;\n state.target = target;\n const handle = motion(element)\n .animate({translate: target || 'none'})\n .speed('moderate')\n .transition({ease: motion.easings.inOut})\n .play();\n state.handle = handle;\n void handle.finished.then(() => {\n if (state.handle !== handle) return;\n state.handle = null;\n element.style.translate = state.target;\n });\n return handle;\n};\n\nconst settleReorderProjection = (): void => {\n const current = active;\n if (!current) return;\n const elements = [...current.projections.keys()];\n current.projections.forEach((state, element) => {\n state.handle = null;\n element.style.translate = state.target;\n if (state.target !== state.baseline) return;\n element.removeAttribute('data-reordering');\n current.projections.delete(element);\n });\n elements.forEach((element) => element.getBoundingClientRect());\n};\n\nconst clearReorderProjection = (immediate = false): MotionHandle[] => {\n const current = active;\n if (!current) return [];\n const handles: MotionHandle[] = [];\n current.projections.forEach((state, element) => {\n if (immediate) {\n state.handle?.stop();\n element.style.translate = state.baseline;\n } else {\n const handle = animateProjection(element, state, state.baseline);\n if (handle) handles.push(handle);\n }\n element.removeAttribute('data-reordering');\n });\n if (immediate) current.projections.clear();\n groupControllers.forEach(({el}) => el.removeAttribute('data-reordering'));\n return handles;\n};\n\nconst clearRejectedTargets = (hovered: HTMLElement | null = null): void => {\n groupControllers.forEach(({el}) => {\n if (el !== hovered) el.removeAttribute('data-drag-rejected');\n });\n};\n\nconst applyReorderProjection = (offsets: readonly SortableReorderOffset[]): MotionHandle[] => {\n const current = active;\n if (!current) return [];\n const handles: MotionHandle[] = [];\n const projected = new Map<HTMLElement, Readonly<{x: number; y: number; group: GroupController}>>();\n offsets.forEach(({groupId, id, x, y}) => {\n const snapshot = current.layouts.get(groupId);\n const element = snapshot && directItems(snapshot.controller.el)\n .find((item) => item.dataset.sortableId === id);\n if (!element) return;\n projected.set(element, {x, y, group: snapshot.controller});\n });\n current.projections.forEach((state, element) => {\n if (projected.has(element)) return;\n const handle = animateProjection(element, state, state.baseline);\n if (handle) handles.push(handle);\n element.removeAttribute('data-reordering');\n });\n const activeGroups = new Set<GroupController>();\n projected.forEach(({x, y, group}, element) => {\n let state = current.projections.get(element);\n if (!state) {\n state = {\n baseline: element.style.translate,\n target: element.style.translate,\n handle: null,\n };\n current.projections.set(element, state);\n }\n const translate = `${x}px ${y}px`;\n const handle = animateProjection(element, state, translate);\n if (handle) handles.push(handle);\n element.setAttribute('data-reordering', '');\n activeGroups.add(group);\n });\n groupControllers.forEach((controller) => controller.el.toggleAttribute('data-reordering', activeGroups.has(controller)));\n return handles;\n};\n\nconst setIndicator = (\n controller: GroupController,\n placement: SortablePlacement | null,\n operation?: string,\n frame: SortableIndicatorFrame | null = null,\n): void => {\n const indicator = controller.indicator();\n if (!indicator) return;\n if (!placement || !frame) {\n indicator.hidden = true;\n return;\n }\n Object.assign(indicator.style, {position: 'absolute', left: '0', top: '0'});\n indicator.hidden = false;\n const edge = placement.anchor?.edge ?? 'empty';\n const offsetParent = indicator.offsetParent;\n const offsetRect = offsetParent instanceof Element\n ? offsetParent.getBoundingClientRect()\n : {left: -window.scrollX, top: -window.scrollY};\n const scrollLeft = offsetParent instanceof HTMLElement ? offsetParent.scrollLeft : 0;\n const scrollTop = offsetParent instanceof HTMLElement ? offsetParent.scrollTop : 0;\n const inlineBoundary = frame.kind === 'inline-boundary';\n const blockBoundary = frame.kind === 'block-boundary';\n const x = frame.x - offsetRect.left + scrollLeft - (inlineBoundary ? INDICATOR_THICKNESS / 2 : 0);\n const y = frame.y - offsetRect.top + scrollTop - (blockBoundary ? INDICATOR_THICKNESS / 2 : 0);\n Object.assign(indicator.style, {\n transform: `translate3d(${x}px, ${y}px, 0)`,\n width: `${inlineBoundary ? INDICATOR_THICKNESS : frame.width}px`,\n height: `${blockBoundary ? INDICATOR_THICKNESS : frame.height}px`,\n pointerEvents: 'none',\n zIndex: '2147483646',\n });\n indicator.dataset.orientation = controller.group().orientation;\n indicator.dataset.edge = edge;\n indicator.dataset.operation = operation ?? '';\n indicator.dataset.indicatorKind = frame.kind;\n};\n\nconst clearActiveGroupSurface = (): void => {\n if (!active?.group) return;\n active.group.el.removeAttribute('data-drag-over');\n active.group.el.removeAttribute('data-drop-edge');\n active.group.el.removeAttribute('data-drop-effect');\n active.group.el.removeAttribute('data-drop-noop');\n active.group.el.removeAttribute('data-placing');\n setIndicator(active.group, null);\n active.group = null;\n};\n\nconst clearActiveGroup = (immediate = false): MotionHandle[] => {\n if (!active) return [];\n const handles = clearReorderProjection(immediate);\n clearActiveGroupSurface();\n active.placement = null;\n return handles;\n};\n\nconst finish = (\n outcome: 'drop' | 'cancel',\n reason: SortableCancelReason = 'outside',\n): void => {\n const current = active;\n if (!current) return;\n preventUnhandled.stop();\n const placement = current.placement;\n const sourceSnapshot = current.source.groupId === null ? null : current.layouts.get(current.source.groupId) ?? null;\n const destinationSnapshot = placement ? current.layouts.get(placement.destination.groupId) ?? null : null;\n const targetSlot = outcome === 'drop' && placement && destinationSnapshot\n ? resolveSortableDropFrame({\n source: current.source,\n placement,\n sourceLayout: sourceSnapshot ? currentLayout(sourceSnapshot) : null,\n destinationLayout: currentLayout(destinationSnapshot),\n })\n : null;\n const targetFrame = targetSlot\n ? {x: targetSlot.left, y: targetSlot.top, width: targetSlot.width, height: targetSlot.height}\n : frameFromRect(current.controller.el.getBoundingClientRect());\n clearActiveGroup(true);\n active = null;\n current.controller.el.removeAttribute('data-dragging');\n current.controller.el.removeAttribute('data-drag-operation');\n current.controller.el.removeAttribute('data-sortable-phase');\n current.controller.restoreAppearance();\n current.restoreCursor();\n clearRejectedTargets();\n if (outcome === 'cancel') dispatch({\n el: current.controller.el,\n name: 'ui:sortable-cancel',\n composed: true,\n detail: Object.freeze({source: current.source, reason}),\n });\n const fromFrame = current.ghost.frame();\n current.controller.afterEnd = () => {\n current.ghost.remove();\n current.controller.ghost = null;\n current.controller.afterEnd = null;\n };\n current.controller.machine.send({\n type: 'END',\n data: {\n outcome,\n source: current.source,\n placement: outcome === 'drop' ? placement : null,\n ...(outcome === 'cancel' ? {reason} : {}),\n fromFrame,\n toFrame: targetFrame ?? fromFrame,\n fromTransform: current.ghost.positioner.style.transform,\n toTransform: targetFrame\n ? `translate3d(${targetFrame.x}px, ${targetFrame.y}px, 0)`\n : current.ghost.positioner.style.transform,\n },\n });\n};\n\nconst updatePlacement = (\n controller: GroupController,\n input: {clientX: number; clientY: number},\n): void => {\n if (!active) return;\n const previous = active.placement;\n const destinationChanged = active.group !== controller;\n if (destinationChanged) clearActiveGroupSurface();\n const group = controller.group();\n const feedback = active.source.operation === 'insert' ? 'indicator' : group.feedback;\n const layout = captureLayout(controller).layout;\n const items = layout.items;\n const itemIds = items.map(({id}) => id);\n const sourceId = active.source.id;\n const placementItems = feedback === 'reorder' && group.id === active.source.groupId\n ? items.filter(({id}) => id !== sourceId)\n : items;\n const geometry = {\n groupId: group.id,\n orientation: group.orientation,\n direction: layout.direction,\n columns: group.columns,\n groupRect: layout.groupRect,\n items: placementItems,\n } as const;\n const ghostFrame = active.ghost.projectedFrame(input);\n const placementInput = feedback !== 'reorder' ? input : {\n clientX: group.orientation === 'vertical' ? input.clientX : ghostFrame.x + ghostFrame.width / 2,\n clientY: group.orientation === 'horizontal' ? input.clientY : ghostFrame.y + ghostFrame.height / 2,\n };\n const rawPlacement = (feedback === 'reorder'\n ? resolveSortableReorderPlacement\n : resolveSortablePlacement)({\n ...geometry,\n input: placementInput,\n });\n const indicatorFrame = feedback === 'indicator'\n ? resolveSortableIndicatorFrame({...geometry, items}, rawPlacement)\n : null;\n const placement = feedback !== 'reorder' ? projectSortablePlacement({\n placement: rawPlacement, sourceId: active.source.id, sourceGroupId: active.source.groupId, itemIds,\n }) : rawPlacement;\n if (!destinationChanged && isSameSortablePlacement(previous, placement)) return;\n const sourceSnapshot = active.source.groupId === null ? null : active.layouts.get(active.source.groupId) ?? null;\n const destinationSnapshot = active.layouts.get(group.id);\n const noop = sortable.isNoop(active.source, placement);\n const offsets = feedback === 'reorder' && !noop ? resolveSortableReorderOffsets({\n source: active.source,\n placement,\n sourceLayout: sourceSnapshot ? currentLayout(sourceSnapshot) : null,\n destinationLayout: destinationSnapshot ? currentLayout(destinationSnapshot) : null,\n }) : [];\n active.group = controller;\n active.placement = placement;\n controller.el.setAttribute('data-drag-over', '');\n controller.el.dataset.dropEdge = placement.anchor?.edge ?? 'empty';\n controller.el.dataset.dropEffect = active.source.operation === 'insert' ? 'copy' : 'move';\n controller.el.toggleAttribute('data-drop-noop', noop);\n dispatch({\n el: controller.el,\n name: 'ui:sortable-placement-change',\n composed: true,\n detail: Object.freeze({source: active.source, previous, placement}),\n });\n active.controller.machine.send({\n type: 'LAYOUT_PROPOSED',\n data: {\n source: active.source,\n previous,\n placement,\n feedback,\n offsets,\n indicatorFrame,\n noop,\n } satisfies PlacingTransitionData,\n });\n};\n\nconst applyPlacementFeedback = (data: PlacingTransitionData): void | Promise<void> => {\n const current = active;\n if (!current?.group || !isSameSortablePlacement(current.placement, data.placement)) return;\n current.controller.el.dataset.sortablePhase = 'placing';\n current.group.el.setAttribute('data-placing', '');\n const handles = data.feedback === 'reorder' && !data.noop\n ? applyReorderProjection(data.offsets)\n : clearReorderProjection();\n if (data.feedback === 'reorder' && !data.noop) {\n setIndicator(current.group, null);\n } else {\n setIndicator(\n current.group,\n data.noop ? null : data.placement,\n current.source.operation,\n data.indicatorFrame,\n );\n }\n const settle = (): void => {\n if (active !== current) return;\n settleReorderProjection();\n };\n if (handles.length === 0) {\n settle();\n return;\n }\n return Promise.allSettled(handles.map(({finished}) => finished)).then(settle);\n};\n\nconst registerGroup = (el: HTMLElement, utilities: Alpine.DirectiveUtilities): void => {\n el.setAttribute('data-ui-sortable', '');\n declareMorphAttributes(el, 'data-ui-sortable');\n let refresh = (): void => undefined;\n const props = defineProps({el, schema: groupSchema, onChange: () => refresh()});\n const controller: GroupController = {\n el,\n group: () => Object.freeze({\n scopeId: props.sortableScope, id: props.sortableId, orientation: props.orientation,\n columns: props.orientation === 'grid' ? props.columns : null, accepts: props.accepts,\n disabled: props.disabled, readOnly: props.readonly, ...(props.label ? {label: props.label} : {}),\n feedback: props.feedback, sourceOpacity: props.sourceOpacity, ghostOpacity: props.ghostOpacity,\n dragCursor: props.dragCursor,\n ...(Object.keys(props.sortableData).length ? {data: Object.freeze({...props.sortableData})} : {}),\n }),\n itemIds: () => directItems(el).map((item) => item.dataset.sortableId ?? '').filter(Boolean),\n indicator: () => [...el.querySelectorAll<HTMLElement>(INDICATOR_SELECTOR)]\n .find((item) => directOwner(item.parentElement ?? item, GROUP_SELECTOR) === el) ?? null,\n refresh: () => refresh(),\n };\n if (!props.sortableScope || !props.sortableId || props.accepts.length === 0) warn('Invalid sortable group props', el);\n if (props.orientation === 'grid' && !isValidGridColumns(props.columns)) warn('Grid sortable groups require positive data-columns', el);\n groups.set(el, controller);\n groupControllers.add(controller);\n const registration = sortable.registerGroup({\n element: el,\n getGroup: controller.group,\n getItemIds: controller.itemIds,\n canDrop: (context) => canDropPolicies.get(el)?.(context) !== false,\n });\n refresh = () => {\n if (active?.group === controller) finish('cancel', 'removed');\n registration.refresh();\n };\n const unregisterInvalidationOwner = registerDomInvalidationOwner(el, {\n invalidateDom: controller.refresh,\n });\n const cleanupTarget = dropTargetForElements({\n element: el,\n canDrop: ({source, input}) => {\n const current = active;\n const relevant = source.data.marker === MARKER && current !== null;\n const accepted = relevant && sortable.canDrop(current.source, controller.group().id, {\n clientX: input.clientX,\n clientY: input.clientY,\n });\n el.toggleAttribute('data-drag-rejected', relevant && !accepted);\n return accepted;\n },\n getDropEffect: () => 'move',\n onDrop: () => {\n if (!active || active.group !== controller) return;\n if (!active.placement) return;\n const accepted = sortable.emitDrop(active.source, active.placement, active.input);\n const group = controller.group();\n finish(accepted ? 'drop' : 'cancel', group.disabled || group.readOnly ? 'disabled' : 'outside');\n },\n });\n const cleanupScroll = autoScrollForElements({element: el});\n utilities.cleanup(() => {\n if (active?.group === controller) clearActiveGroup(true);\n cleanupScroll();\n cleanupTarget();\n unregisterInvalidationOwner();\n registration();\n props.disconnect();\n groups.delete(el);\n groupControllers.delete(controller);\n el.removeAttribute('data-drag-rejected');\n });\n};\n\nconst registerSource = (el: HTMLElement, role: 'item' | 'source', utilities: Alpine.DirectiveUtilities): void => {\n const marker = role === 'item' ? 'data-ui-sortable-item' : 'data-ui-sortable-source';\n el.setAttribute(marker, '');\n declareMorphAttributes(el, marker, 'draggable');\n const owner = (): HTMLElement | null => (\n role === 'item' ? directOwner(el.parentElement ?? el, GROUP_SELECTOR) : null\n );\n let controller!: SourceController;\n const machine = createAlpineMachine<SourceTransitionContext, typeof sourceSchema, typeof sourceHooks>({\n schema: sourceSchema,\n hooks: sourceHooks,\n createMachine: ({props}) => createSortableSourceMachine<SourceProps>({\n props,\n effects: {\n resolvePlacement: ({context}) => {\n const current = active;\n const pointer = context.pointer;\n if (!current || !pointer) return;\n const destination = pointer.destinationId === null\n ? null\n : current.layouts.get(pointer.destinationId)?.controller ?? null;\n if (destination) updatePlacement(destination, pointer.input);\n },\n synced: () => {\n el.removeAttribute('data-sortable-phase');\n active?.group?.el.removeAttribute('data-placing');\n },\n complete: () => controller.afterEnd?.(),\n reconcile: () => controller.refresh(),\n },\n }),\n resolveTransitionElement: ({name}) => {\n if (name === 'starting') return controller.ghost?.visual as Alpine.ElementWithXAttributes | null;\n if (name === 'placing') return active?.group?.el as Alpine.ElementWithXAttributes | null;\n return controller.ghost?.positioner as Alpine.ElementWithXAttributes | null;\n },\n });\n machine.connect(el as HTMLElement & Alpine.ElementWithXAttributes);\n const props = (): SourceProps => machine.getCommittedSnapshot().props;\n controller = {\n el,\n owner,\n source: () => {\n const sourceProps = props();\n const groupOwner = owner();\n const group = groupOwner ? groups.get(groupOwner)?.group() : null;\n const details = {\n scopeId: role === 'item' ? group?.scopeId ?? '' : sourceProps.sortableScope,\n id: sourceProps.sortableId, type: sourceProps.sortableType,\n ...(sourceProps.label ? {label: sourceProps.label} : {}),\n ...(Object.keys(sourceProps.sortableData).length\n ? {data: Object.freeze({...sourceProps.sortableData})}\n : {}),\n };\n return Object.freeze(role === 'item'\n ? {operation: 'move', groupId: group?.id ?? '', ...details}\n : {operation: 'insert', groupId: null, ...details});\n },\n disabled: () => {\n const groupOwner = owner();\n const group = groupOwner ? groups.get(groupOwner)?.group() : null;\n return props().disabled || group?.disabled === true || group?.readOnly === true;\n },\n appearance: () => {\n const sourceProps = props();\n const groupOwner = owner();\n const group = groupOwner ? groups.get(groupOwner)?.group() : null;\n return {\n sourceOpacity: group?.sourceOpacity ?? sourceProps.sourceOpacity,\n ghostOpacity: group?.ghostOpacity ?? sourceProps.ghostOpacity,\n dragCursor: group?.dragCursor ?? sourceProps.dragCursor,\n };\n },\n refresh: () => undefined,\n restoreAppearance: () => {\n if (controller.previousOpacity === null) return;\n el.style.opacity = controller.previousOpacity;\n controller.previousOpacity = null;\n },\n machine,\n ghost: null,\n afterEnd: null,\n previousOpacity: null,\n };\n const cleanupDefaultPlacing = machine.onTransition('placing', (transition) => (\n applyPlacementFeedback(transition.data as PlacingTransitionData)\n ));\n const hasCustomEnding = el.getAttributeNames().some((name) => name === 'x-ui-transition:ending');\n const cleanupDefaultEnding = hasCustomEnding ? () => undefined : machine.onTransition('ending', (transition) => {\n const toFrame = (transition.data as {toFrame?: ReturnType<typeof frameFromRect>}).toFrame ?? null;\n return controller.ghost?.finish(toFrame);\n });\n const initial = controller.source();\n if (!initial.scopeId || !initial.id || !initial.type) warn('Invalid sortable source props', el);\n const registration = sortable.registerSource({element: el, getSource: controller.source, isDisabled: controller.disabled});\n controller.refresh = () => {\n if (active?.controller === controller) finish('cancel', 'removed');\n registration.refresh();\n };\n const handle = [...el.querySelectorAll<HTMLElement>(HANDLE_SELECTOR)]\n .find((candidate) => directOwner(candidate, `${ITEM_SELECTOR}, ${SOURCE_SELECTOR}`) === el);\n const preview = [...el.querySelectorAll<HTMLTemplateElement>(PREVIEW_SELECTOR)]\n .find((candidate) => directOwner(candidate, `${ITEM_SELECTOR}, ${SOURCE_SELECTOR}`) === el);\n // PDD owns target dropEffect, but intentionally does not constrain the source effectAllowed.\n // Publish it before PDD's document-level dragstart handler so the browser never advertises copy.\n const cleanupNativeEffect = bindDragEffectAllowed(el, 'move');\n const cleanupDrag = draggable({\n element: el,\n ...(handle ? {dragHandle: handle} : {}),\n canDrag: ({input}) => {\n const target = document.elementFromPoint(input.clientX, input.clientY);\n const interactive = target?.closest(INTERACTIVE_SELECTOR) ?? null;\n return !controller.disabled() && (Boolean(handle) || interactive === null || interactive === el);\n },\n getInitialData: () => {\n const source = controller.source();\n return {marker: MARKER, scopeId: source.scopeId, sortableId: source.id, sortableType: source.type};\n },\n onGenerateDragPreview: disableNativeDragPreview,\n onDragStart: (event) => {\n preventUnhandled.start();\n const source = controller.source();\n const input = currentDragInput(event);\n const appearance = controller.appearance();\n const ghost = createSortableGhost({\n source: el,\n input: initialDragInput(event),\n preview: preview ?? null,\n opacity: appearance.ghostOpacity,\n });\n ghost.move(input);\n controller.ghost = ghost;\n controller.previousOpacity = el.style.opacity;\n el.style.opacity = `${appearance.sourceOpacity}`;\n const restoreCursor = activateSortableCursor(appearance.dragCursor);\n active = {\n controller, source, ghost, placement: null, group: null,\n layouts: new Map([...groupControllers].flatMap((groupController) => {\n const group = groupController.group();\n return group.scopeId === source.scopeId\n ? [[group.id, captureLayout(groupController)] as const]\n : [];\n })),\n projections: new Map(), input, timestamp: performance.now(), restoreCursor,\n };\n el.setAttribute('data-dragging', '');\n el.dataset.dragOperation = source.operation;\n dispatch({\n el,\n name: 'ui:sortable-start',\n composed: true,\n detail: Object.freeze({source}),\n });\n machine.send({\n type: 'START',\n data: {source, sourceFrame: frameFromRect(el.getBoundingClientRect()), ghostFrame: ghost.frame()},\n });\n },\n onDrag: (event) => {\n if (active?.controller !== controller) return;\n const input = currentDragInput(event);\n const previousInput = active.input;\n const timestamp = performance.now();\n const elapsed = Math.max(timestamp - active.timestamp, 1);\n active.input = input;\n active.timestamp = timestamp;\n active.ghost.move(input);\n const destination = event.location.current.dropTargets\n .map(({element}) => element instanceof HTMLElement ? groups.get(element) : undefined)\n .find((candidate) => candidate !== undefined);\n machine.send({\n type: 'POINTER_MOVED',\n pointer: {\n destinationId: destination?.group().id ?? null,\n input,\n },\n });\n const hovered = document.elementFromPoint(input.clientX, input.clientY)?.closest<HTMLElement>(GROUP_SELECTOR) ?? null;\n clearRejectedTargets(hovered);\n dispatch({\n el,\n name: 'ui:sortable-drag',\n composed: true,\n detail: Object.freeze({\n source: active.source,\n input: Object.freeze(input),\n previousInput: Object.freeze(previousInput),\n delta: Object.freeze({\n x: input.clientX - previousInput.clientX,\n y: input.clientY - previousInput.clientY,\n }),\n velocity: Object.freeze({\n x: (input.clientX - previousInput.clientX) / elapsed,\n y: (input.clientY - previousInput.clientY) / elapsed,\n }),\n ghostFrame: Object.freeze({...active.ghost.frame()}),\n }),\n });\n },\n onDrop: () => queueMicrotask(() => {\n if (active?.controller === controller) finish('cancel', controller.disabled() ? 'disabled' : 'outside');\n }),\n });\n utilities.cleanup(() => {\n if (active?.controller === controller) {\n const current = active;\n preventUnhandled.stop();\n clearActiveGroup(true);\n active = null;\n el.removeAttribute('data-dragging');\n el.removeAttribute('data-drag-operation');\n el.removeAttribute('data-sortable-phase');\n dispatch({\n el,\n name: 'ui:sortable-cancel',\n composed: true,\n detail: Object.freeze({source: current.source, reason: 'removed'}),\n });\n current.ghost.remove();\n current.restoreCursor();\n clearRejectedTargets();\n controller.restoreAppearance();\n controller.ghost = null;\n controller.afterEnd = null;\n }\n cleanupDrag();\n cleanupNativeEffect();\n cleanupDefaultPlacing();\n cleanupDefaultEnding();\n registration();\n machine.disconnect();\n // Cross-group drops can remove the source directive before its ending\n // transition completes. The ghost is owned by this directive, so its\n // teardown must not depend on the drag still being globally active.\n controller.afterEnd?.();\n controller.ghost?.remove();\n controller.ghost = null;\n controller.afterEnd = null;\n });\n};\n\nlet windowAutoScrollCleanup: (() => void) | null = null;\nconst registerSortableDirective = (AlpineInstance: Alpine.Alpine): void => {\n AlpineInstance.addInitSelector(() => '[x-ui-sortable], [x-ui-sortable\\\\:item], [x-ui-sortable\\\\:source]');\n windowAutoScrollCleanup ??= autoScrollWindowForElements();\n AlpineInstance.directive('ui-sortable', AlpineInstance.skipDuringClone((el, {value, expression}, utilities) => {\n if (!(el instanceof HTMLElement)) return;\n if (!value) registerGroup(el, utilities);\n else if (value === 'item' || value === 'source') registerSource(el, value, utilities);\n else if (value === 'handle') {\n el.setAttribute('data-ui-sortable-handle', '');\n declareMorphAttributes(el, 'data-ui-sortable-handle');\n }\n else if (value === 'indicator') {\n el.setAttribute('data-ui-sortable-indicator', '');\n declareMorphAttributes(el, 'data-ui-sortable-indicator', 'aria-hidden', 'hidden');\n el.setAttribute('aria-hidden', 'true');\n (el as HTMLElement).hidden = true;\n } else if (value === 'preview') {\n el.setAttribute('data-ui-sortable-preview', '');\n declareMorphAttributes(el, 'data-ui-sortable-preview');\n }\n else if (value === 'can-drop' && expression?.trim()) {\n canDropPolicies.set(el, (context) => utilities.evaluate(expression, {scope: {$sortable: context}}) !== false);\n utilities.cleanup(() => canDropPolicies.delete(el));\n }\n }));\n};\n\nexport {groupSchema, registerSortableDirective, sourceSchema};\n","import type {Alpine as AlpineType} from 'alpinejs';\n\nimport {registerSortableDirective} from '../directives/sortable';\nimport {createSortableRegistry, sortable} from '../runtime/drag-and-drop';\nimport {registerUiSortable} from '../runtime/ui';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerSortableCapability = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerUiSortable(sortable);\n registerSortableDirective(AlpineInstance);\n};\n\nexport {createSortableRegistry, registerSortableCapability, registerSortableDirective, sortable};\nexport type * from '../runtime/drag-and-drop/sortable';\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 {registerAccordion} from './accordion/entry.generated';\nimport {registerButton} from './button/entry.generated';\nimport {registerCheckbox} from './checkbox/entry.generated';\nimport {registerDatePicker} from './date-picker/entry.generated';\nimport {registerDropdown} from './dropdown/entry.generated';\nimport {registerField} from './field/entry.generated';\nimport {registerFileUpload} from './file-upload/entry.generated';\nimport {registerInput} from './input/entry.generated';\nimport {registerModal} from './modal/entry.generated';\nimport {registerPanels} from './panels/entry.generated';\nimport {registerRadio} from './radio/entry.generated';\nimport {registerScrollArea} from './scroll-area/entry.generated';\nimport {registerSelect} from './select/entry.generated';\nimport {registerSidebar} from './sidebar/entry.generated';\nimport {registerSlider} from './slider/entry.generated';\nimport {registerSwitch} from './switch/entry.generated';\nimport {registerTabs} from './tabs/entry.generated';\nimport {registerToast} from './toast/entry.generated';\nimport {registerTable} from './table/entry.generated';\nimport {registerMotionCapability} from '../capabilities/motion';\nimport {registerResizableCapability} from '../capabilities/resizable';\nimport {registerSortableCapability} from '../capabilities/sortable';\n\ntype ComponentsPlugin = (AlpineInstance: AlpineType) => void;\nconst registered = new WeakSet<AlpineType>();\n\nconst components: ComponentsPlugin = (AlpineInstance): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerResizableCapability(AlpineInstance);\n registerSortableCapability(AlpineInstance);\n registerAccordion(AlpineInstance);\n registerButton();\n registerCheckbox(AlpineInstance);\n registerDatePicker(AlpineInstance);\n registerDropdown(AlpineInstance);\n registerField(AlpineInstance);\n registerFileUpload(AlpineInstance);\n registerInput(AlpineInstance);\n registerModal(AlpineInstance);\n registerPanels(AlpineInstance);\n registerRadio(AlpineInstance);\n registerScrollArea(AlpineInstance);\n registerSelect(AlpineInstance);\n registerSidebar(AlpineInstance);\n registerSlider(AlpineInstance);\n registerSwitch(AlpineInstance);\n registerTabs(AlpineInstance);\n registerToast(AlpineInstance);\n registerTable(AlpineInstance);\n};\n\nexport {components};\nexport default components;\nexport type {ComponentsPlugin};\nexport * from './accordion/entry.generated';\nexport * from './button/entry.generated';\nexport * from './checkbox/entry.generated';\nexport * from './date-picker/entry.generated';\nexport * from './dropdown/entry.generated';\nexport * from './field/entry.generated';\nexport * from './file-upload/entry.generated';\nexport * from './input/entry.generated';\nexport * from './modal/entry.generated';\nexport * from './panels/entry.generated';\nexport * from './radio/entry.generated';\nexport * from './scroll-area/entry.generated';\nexport * from './select/entry.generated';\nexport * from './sidebar/entry.generated';\nexport * from './slider/entry.generated';\nexport * from './switch/entry.generated';\nexport * from './tabs/entry.generated';\nexport * from './toast/entry.generated';\nexport * from './table/entry.generated';\nexport * from '../capabilities/motion';\nexport * from '../capabilities/resizable';\nexport * from '../capabilities/sortable';\n"],"x_google_ignoreList":[2,5,6,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{f as e,l as t,n,t as r}from"./codecs-Cb1ns_47.js";import{o as i,s as a,t as o}from"./dom-qAeVl7dc.js";import{n as s,t as c}from"./machine-CX3wFSoV.js";import{n as l,t as u}from"./props-change-2xfsIAEN.js";import{n as d,r as f}from"./form-control-BkVb2Qed.js";import{c as p,o as m}from"./common-DAxHCzB-.js";var h=[`trailing`,`leading`],g=m,_=p,v={value:e.default(`on`),name:e,label:e,description:e,checked:r(n,`prop-checked`),disabled:r(n,`prop-disabled`),required:r(n,`prop-required`),invalid:r(n,`prop-invalid`),placement:t(h,`trailing`),variant:t(_,`default`),size:t(g,`md`),inputClass:e,trackClass:e,thumbClass:e,contentClass:e,labelClass:e,descriptionClass:e,class:e};({...v});var y=[],b=e=>e.checked===!0,x=e=>({event:t})=>b(t)===e,S=({event:e})=>u(e,`checked`),C=e=>t=>{let n=l(t.event)?.props;return S(t)&&n?.checked===e},w=e=>({context:{...e.context,selection:{checked:b(e.event)}}}),T=e=>({context:{...e.context,selection:{checked:!e.context.selection.checked}}}),E=e=>{let t=l(e.event)?.props;if(t)return{props:t,context:S(e)?{...e.context,selection:{checked:t.checked}}:e.context}},D=({props:e,effects:t})=>c({initial:e.checked?`checked`:`unchecked`,on:{NATIVE_CHANGED:[{target:`checked`,guard:x(!0),reduce:`setChecked`,effects:`sync`},{target:`unchecked`,guard:x(!1),reduce:`setChecked`,effects:`sync`}],SET_CHECKED:[{target:`checked`,guard:x(!0),reduce:`setChecked`,effects:[`sync`,`emitInput`,`emitChange`]},{target:`unchecked`,guard:x(!1),reduce:`setChecked`,effects:[`sync`,`emitInput`,`emitChange`]}],TOGGLE:[{target:`checked`,guard:({context:e})=>!e.selection.checked,reduce:`toggle`,effects:[`sync`,`emitInput`,`emitChange`]},{target:`unchecked`,guard:({context:e})=>e.selection.checked,reduce:`toggle`,effects:[`sync`,`emitInput`,`emitChange`]}],PROPS_CHANGED:[{target:`checked`,guard:C(!0),reduce:`reconcileProps`,effects:`sync`},{target:`unchecked`,guard:C(!1),reduce:`reconcileProps`,effects:`sync`},{reduce:`reconcileProps`,effects:`sync`}]},states:{unchecked:{tags:[`unchecked`]},checked:{tags:[`checked`]}}},{context:{selection:{checked:e.checked}},props:e,reducers:{setChecked:w,toggle:T,reconcileProps:E},effects:t}),O=()=>{let e=null,t=null,n=[],r=!1,c=()=>{if(!e)throw Error(`Switch has not been initialized.`);return e},l=()=>{if(!t)throw Error(`Switch requires a native checkbox input.`);return t},u=()=>h.getCommittedSnapshot(),p=()=>{let e=u(),t=e.props,n=e.context.selection.checked,r=n?`checked`:`unchecked`,o=l();o.checked=n,t.name||o.removeAttribute(`name`),f({input:o,state:{name:t.name,value:t.value,disabled:t.disabled,required:t.required,invalid:t.invalid}}),o.setAttribute(`role`,`switch`),i({el:o,attr:`aria-checked`,value:n?`true`:`false`}),i({el:c(),attr:`data-state`,value:r}),a({el:c(),attr:`data-checked`,present:n}),d({el:c(),state:t}),i({el:o,attr:`data-state`,value:r}),a({el:o,attr:`data-checked`,present:n});let s=c().querySelector(`[data-ui-switch-track]`);s&&(i({el:s,attr:`data-state`,value:r}),a({el:s,attr:`data-checked`,present:n}),d({el:s,state:{disabled:t.disabled,invalid:t.invalid}}));let p=c().querySelector(`[data-ui-switch-thumb]`);p&&(i({el:p,attr:`data-state`,value:r}),a({el:p,attr:`data-checked`,present:n}),a({el:p,attr:`data-disabled`,present:t.disabled}),a({el:p,attr:`data-invalid`,present:t.invalid}))},m=e=>{r=!0;try{l().dispatchEvent(new Event(e,{bubbles:!0}))}finally{r=!1}},h=s({schema:v,hooks:y,createMachine:({props:e})=>D({props:e,effects:{sync:p,emitInput:()=>m(`input`),emitChange:()=>m(`change`)}})});return{...h,init(){if(e=this.$el,t=c().querySelector(`[data-ui-switch-input]`),!t)throw Error(`Switch requires a native checkbox input.`);h.connect(e,this.snapshot),o({target:t,event:`change`,handler:()=>{r||h.send({type:`NATIVE_CHANGED`,checked:l().checked})},cleanup:n}),o({target:t,event:`keydown`,handler:e=>{!(e instanceof KeyboardEvent)||e.key!==`Enter`||l().disabled||(e.preventDefault(),h.send(`TOGGLE`))},cleanup:n}),p()},destroy(){n.splice(0).reverse().forEach(e=>e()),h.disconnect(),e=null,t=null},get checked(){return h.getCommittedSnapshot().context.selection.checked},setChecked(e){e!==h.getCommittedSnapshot().context.selection.checked&&h.send({type:`SET_CHECKED`,checked:e})}}},k=e=>{e.data(`UiSwitch`,()=>O())},A=new WeakSet,j=e=>{A.has(e)||(A.add(e),k(e))};export{O as n,j as t};
|
|
2
|
+
//# sourceMappingURL=entry.generated-DgmqZx_W.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry.generated-DgmqZx_W.js","names":[],"sources":["../../../../../../../../client/src/components/switch/contract.ts","../../../../../../../../client/src/components/switch/machine.ts","../../../../../../../../client/src/components/switch/index.ts","../../../../../../../../client/src/components/switch/entry.generated.ts"],"sourcesContent":["import {attribute, bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {CONTROL_SIZES, DEFAULT_VARIANTS, type ControlSize, type DefaultVariant} from '../common';\n\nconst SWITCH_PLACEMENTS = ['trailing', 'leading'] as const;\nconst SWITCH_SIZES = CONTROL_SIZES;\nconst SWITCH_VARIANTS = DEFAULT_VARIANTS;\n\ntype SwitchPlacement = typeof SWITCH_PLACEMENTS[number];\ntype SwitchSize = ControlSize;\ntype SwitchVariant = DefaultVariant;\n\nconst switchControlSchema = {\n value: string.default('on'),\n name: string,\n label: string,\n description: string,\n checked: attribute(bool, 'prop-checked'),\n disabled: attribute(bool, 'prop-disabled'),\n required: attribute(bool, 'prop-required'),\n invalid: attribute(bool, 'prop-invalid'),\n placement: oneOf(SWITCH_PLACEMENTS, 'trailing' as SwitchPlacement),\n variant: oneOf(SWITCH_VARIANTS, 'default' as SwitchVariant),\n size: oneOf(SWITCH_SIZES, 'md' as SwitchSize),\n inputClass: string,\n trackClass: string,\n thumbClass: string,\n contentClass: string,\n labelClass: string,\n descriptionClass: string,\n class: string,\n};\n\nconst switchSchema = {\n ...switchControlSchema,\n label: string,\n description: string,\n descriptionTrailing: string,\n error: string,\n errors: string,\n badge: string,\n fieldClass: string,\n};\n\ntype SwitchControlProps = SchemaToProps<typeof switchControlSchema>;\ntype SwitchProps = SchemaToProps<typeof switchSchema>;\n\nexport {\n SWITCH_PLACEMENTS,\n SWITCH_SIZES,\n SWITCH_VARIANTS,\n switchControlSchema,\n switchSchema,\n};\nexport type {\n SwitchPlacement,\n SwitchControlProps,\n SwitchProps,\n SwitchSize,\n SwitchVariant,\n};\n","import {createMachine, propsChanged, propsChangedEvent, type Machine, type MachineEventObject, type MachineScope} from '../../runtime/state-machine';\nimport type {SwitchControlProps} from './contract';\n\ntype SwitchContext = {selection: {checked: boolean}};\ntype SwitchEffects = {\n sync(scope: MachineScope<SwitchContext, SwitchControlProps>): void;\n emitInput(scope: MachineScope<SwitchContext, SwitchControlProps>): void;\n emitChange(scope: MachineScope<SwitchContext, SwitchControlProps>): void;\n};\nconst switchHooks = [] as const;\nconst eventChecked = (event: MachineEventObject): boolean => event.checked === true;\nconst eventIs = (checked: boolean) => ({event}: MachineScope<SwitchContext, SwitchControlProps>): boolean => (\n eventChecked(event) === checked\n);\nconst checkedPropChanged = ({event}: MachineScope<SwitchContext, SwitchControlProps>): boolean => (\n propsChanged<SwitchControlProps>(event, 'checked')\n);\nconst nextPropsAre = (checked: boolean) => (scope: MachineScope<SwitchContext, SwitchControlProps>): boolean => {\n const next = propsChangedEvent<SwitchControlProps>(scope.event)?.props;\n return checkedPropChanged(scope) && next?.checked === checked;\n};\nconst setChecked = (scope: MachineScope<SwitchContext, SwitchControlProps>) => ({\n context: {...scope.context, selection: {checked: eventChecked(scope.event)}},\n});\nconst toggle = (scope: MachineScope<SwitchContext, SwitchControlProps>) => ({\n context: {...scope.context, selection: {checked: !scope.context.selection.checked}},\n});\nconst reconcileProps = (scope: MachineScope<SwitchContext, SwitchControlProps>) => {\n const next = propsChangedEvent<SwitchControlProps>(scope.event)?.props;\n if (!next) return;\n return {\n props: next,\n context: checkedPropChanged(scope)\n ? {...scope.context, selection: {checked: next.checked}}\n : scope.context,\n };\n};\n\nconst createSwitchMachine = ({props, effects}: {props: SwitchControlProps; effects: SwitchEffects}): Machine<SwitchContext, SwitchControlProps> => createMachine<SwitchContext, SwitchControlProps>({\n initial: props.checked ? 'checked' : 'unchecked',\n on: {\n NATIVE_CHANGED: [\n {target: 'checked', guard: eventIs(true), reduce: 'setChecked', effects: 'sync'},\n {target: 'unchecked', guard: eventIs(false), reduce: 'setChecked', effects: 'sync'},\n ],\n SET_CHECKED: [\n {target: 'checked', guard: eventIs(true), reduce: 'setChecked', effects: ['sync', 'emitInput', 'emitChange']},\n {target: 'unchecked', guard: eventIs(false), reduce: 'setChecked', effects: ['sync', 'emitInput', 'emitChange']},\n ],\n TOGGLE: [\n {target: 'checked', guard: ({context}) => !context.selection.checked, reduce: 'toggle', effects: ['sync', 'emitInput', 'emitChange']},\n {target: 'unchecked', guard: ({context}) => context.selection.checked, reduce: 'toggle', effects: ['sync', 'emitInput', 'emitChange']},\n ],\n PROPS_CHANGED: [\n {target: 'checked', guard: nextPropsAre(true), reduce: 'reconcileProps', effects: 'sync'},\n {target: 'unchecked', guard: nextPropsAre(false), reduce: 'reconcileProps', effects: 'sync'},\n {reduce: 'reconcileProps', effects: 'sync'},\n ],\n },\n states: {unchecked: {tags: ['unchecked']}, checked: {tags: ['checked']}},\n}, {\n context: {selection: {checked: props.checked}},\n props,\n reducers: {setChecked, toggle, reconcileProps},\n effects,\n});\n\nexport {createSwitchMachine, switchHooks};\nexport type {SwitchContext, SwitchEffects};\n","import type Alpine from 'alpinejs';\n\nimport {type AlpineMachine, createAlpineMachine, type MachineSnapshot, type TrellisAlpineComponent} from '@client/runtime';\nimport {syncControlPresence, syncNativeControl} from '@client/runtime/form-control';\nimport {addListener, setAttribute, setPresence, type CleanupStack} from '@client/utils';\nimport {switchControlSchema, type SwitchControlProps} from './contract';\nimport {createSwitchMachine, switchHooks, type SwitchContext} from './machine';\n\n/** Public Alpine API for `ui.switch` and `ui.switch.control`. @public */\ninterface UiSwitchApi {\n /** Current settled checked state. */\n readonly checked: boolean;\n /** Set and commit the checked state. */\n setChecked(checked: boolean): void;\n}\n\ntype SwitchData = AlpineMachine<SwitchContext, SwitchControlProps, typeof switchHooks> & UiSwitchApi & {\n init(): void;\n destroy(): void;\n};\n\nconst UiSwitch = (): TrellisAlpineComponent<SwitchData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let inputEl: HTMLInputElement | null = null;\n let listeners: CleanupStack = [];\n let dispatching = false;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Switch has not been initialized.');\n return rootEl;\n };\n const input = (): HTMLInputElement => {\n if (!inputEl) throw new Error('Switch requires a native checkbox input.');\n return inputEl;\n };\n const snapshot = (): MachineSnapshot<SwitchContext, SwitchControlProps> => bridge.getCommittedSnapshot();\n const syncDom = (): void => {\n const current = snapshot();\n const props = current.props;\n const checked = current.context.selection.checked;\n const state = checked ? 'checked' : 'unchecked';\n const native = input();\n\n native.checked = checked;\n if (!props.name) native.removeAttribute('name');\n syncNativeControl({input: native, state: {\n name: props.name,\n value: props.value,\n disabled: props.disabled,\n required: props.required,\n invalid: props.invalid,\n }});\n native.setAttribute('role', 'switch');\n setAttribute({el: native, attr: 'aria-checked', value: checked ? 'true' : 'false'});\n\n setAttribute({el: root(), attr: 'data-state', value: state});\n setPresence({el: root(), attr: 'data-checked', present: checked});\n syncControlPresence({el: root(), state: props});\n setAttribute({el: native, attr: 'data-state', value: state});\n setPresence({el: native, attr: 'data-checked', present: checked});\n\n const track = root().querySelector<HTMLElement>('[data-ui-switch-track]');\n if (track) {\n setAttribute({el: track, attr: 'data-state', value: state});\n setPresence({el: track, attr: 'data-checked', present: checked});\n syncControlPresence({el: track, state: {disabled: props.disabled, invalid: props.invalid}});\n }\n const thumb = root().querySelector<HTMLElement>('[data-ui-switch-thumb]');\n if (thumb) {\n setAttribute({el: thumb, attr: 'data-state', value: state});\n setPresence({el: thumb, attr: 'data-checked', present: checked});\n setPresence({el: thumb, attr: 'data-disabled', present: props.disabled});\n setPresence({el: thumb, attr: 'data-invalid', present: props.invalid});\n }\n };\n const dispatchNative = (type: 'input' | 'change'): void => {\n dispatching = true;\n try { input().dispatchEvent(new Event(type, {bubbles: true})); } finally { dispatching = false; }\n };\n const bridge = createAlpineMachine({\n schema: switchControlSchema,\n hooks: switchHooks,\n createMachine: ({props}) => createSwitchMachine({props, effects: {\n sync: syncDom,\n emitInput: () => dispatchNative('input'),\n emitChange: () => dispatchNative('change'),\n }}),\n });\n\n return {\n ...bridge,\n init(): void {\n rootEl = this.$el;\n inputEl = root().querySelector<HTMLInputElement>('[data-ui-switch-input]');\n if (!inputEl) throw new Error('Switch requires a native checkbox input.');\n bridge.connect(rootEl, this.snapshot);\n addListener({target: inputEl, event: 'change', handler: () => {\n if (!dispatching) bridge.send({type: 'NATIVE_CHANGED', checked: input().checked});\n }, cleanup: listeners});\n addListener({target: inputEl, event: 'keydown', handler: (event) => {\n if (!(event instanceof KeyboardEvent) || event.key !== 'Enter' || input().disabled) return;\n event.preventDefault();\n bridge.send('TOGGLE');\n }, cleanup: listeners});\n syncDom();\n },\n destroy(): void {\n listeners.splice(0).reverse().forEach((cleanup) => cleanup());\n bridge.disconnect();\n rootEl = null;\n inputEl = null;\n },\n get checked(): boolean {\n return bridge.getCommittedSnapshot().context.selection.checked;\n },\n setChecked(checked: boolean): void {\n if (checked === bridge.getCommittedSnapshot().context.selection.checked) return;\n bridge.send({type: 'SET_CHECKED', checked});\n },\n };\n};\n\nconst registerSwitch = (AlpineInstance: Alpine.Alpine): void => {\n AlpineInstance.data('UiSwitch', () => UiSwitch());\n};\n\nexport {registerSwitch, UiSwitch};\nexport type {SwitchData, UiSwitchApi};\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 {registerSwitch as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerSwitch = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerSwitch};\nexport default registerSwitch;\nexport * from './index';\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{f as e,l as t,n,t as r}from"./codecs-Cb1ns_47.js";import{a as i,o as a,s as o,t as s}from"./dom-qAeVl7dc.js";import{n as c,t as l}from"./machine-CX3wFSoV.js";import{n as u,t as d}from"./props-change-2xfsIAEN.js";import{n as f,r as p}from"./form-control-BkVb2Qed.js";import{S as m,_ as h,c as g,o as _}from"./common-DAxHCzB-.js";var v=m,y=g,b=h,x=_,S=g,C={value:e.default(`on`),name:e,label:e,description:e,checked:r(n,`prop-checked`),indeterminate:r(n,`prop-indeterminate`),disabled:r(n,`prop-disabled`),required:r(n,`prop-required`),invalid:r(n,`prop-invalid`),indicator:n.default(!0),placement:t(b,`leading`),icon:e,variant:t(S,`default`),size:t(x,`md`),inputClass:e,indicatorClass:e,indicatorIconClass:e,iconClass:e,contentClass:e,labelClass:e,descriptionClass:e,class:e};({...C});var w={name:e,orientation:t(v,`vertical`),variant:t(y,`default`),indicator:n.default(!0),placement:t(b,`leading`),disabled:r(n,`prop-disabled`),required:r(n,`prop-required`),invalid:r(n,`prop-invalid`),class:e};t(x,`md`);var T=[],E=[],D={name:``,disabled:!1,required:!1,invalid:!1},O=e=>e.indeterminate?`indeterminate`:e.checked?`checked`:`unchecked`,k=e=>e.state===`checked`||e.state===`indeterminate`?e.state:`unchecked`,A=({event:e})=>d(e,`checked`,`indeterminate`),j=e=>t=>{let n=u(t.event)?.props;return A(t)&&!!n&&O(n)===e},M=e=>({event:t})=>k(t)===e,N=e=>({context:{...e.context,selection:{state:k(e.event)}}}),P=e=>{let t=u(e.event)?.props;if(t)return{props:t,context:A(e)?{...e.context,selection:{state:O(t)}}:e.context}},F=e=>[{target:`unchecked`,guard:M(`unchecked`),reduce:`setSelection`,effects:e},{target:`checked`,guard:M(`checked`),reduce:`setSelection`,effects:e},{target:`indeterminate`,guard:M(`indeterminate`),reduce:`setSelection`,effects:e}],I=({props:e,inherited:t=D,effects:n})=>{let r=O(e);return l({initial:r,on:{NATIVE_CHANGED:F([`sync`]),API_SET:F([`sync`,`emitInput`,`emitChange`]),INHERITANCE_CHANGED:{reduce:`setInheritance`,effects:`sync`},PROPS_CHANGED:[{target:`unchecked`,guard:j(`unchecked`),reduce:`reconcileProps`,effects:`sync`},{target:`checked`,guard:j(`checked`),reduce:`reconcileProps`,effects:`sync`},{target:`indeterminate`,guard:j(`indeterminate`),reduce:`reconcileProps`,effects:`sync`},{reduce:`reconcileProps`,effects:`sync`}]},states:{unchecked:{tags:[`unchecked`]},checked:{tags:[`checked`]},indeterminate:{tags:[`indeterminate`]}}},{context:{selection:{state:r},inherited:{...t}},props:e,reducers:{setSelection:N,reconcileProps:P,setInheritance:e=>({context:{...e.context,inherited:{name:typeof e.event.name==`string`?e.event.name:``,disabled:e.event.disabled===!0,required:e.event.required===!0,invalid:e.event.invalid===!0}}})},effects:n})},L=e=>({name:e.name,disabled:e.disabled,required:e.required,invalid:e.invalid}),R=({props:e,effects:t})=>l({initial:`ready`,states:{ready:{tags:[`ready`],on:{PROPS_CHANGED:{reduce:`reconcileProps`,effects:`sync`}}}}},{context:{inherited:L(e)},props:e,reducers:{reconcileProps:e=>{let t=u(e.event)?.props;return t?{props:t,context:{inherited:L(t)}}:void 0}},effects:t}),z=new WeakMap,B=e=>{let t=e.parentElement?.closest(`[data-ui-checkbox-group]`)??null;return t?z.get(t)??null:null},V=()=>{let e=null,t=null,n=[],r=null,l=!1,u=()=>{if(!e)throw Error(`Checkbox has not been initialized.`);return e},d=()=>{if(!t)throw Error(`Checkbox requires a native checkbox input.`);return t},m=()=>_.getCommittedSnapshot(),h=()=>{let e=u(),t=d(),n=m(),r=n.props,s=n.context.inherited,c=n.context.selection.state,l=c===`checked`,h=c===`indeterminate`,g=r.disabled||s.disabled,_=r.required||s.required,v=r.invalid||s.invalid,y=r.name||s.name;t.checked=l,t.indeterminate=h,y||t.removeAttribute(`name`),p({input:t,state:{name:y,value:r.value,disabled:g,required:_,invalid:v}}),h?t.setAttribute(`aria-checked`,`mixed`):t.removeAttribute(`aria-checked`),a({el:e,attr:`data-state`,value:c}),o({el:e,attr:`data-checked`,present:l}),o({el:e,attr:`data-indeterminate`,present:h}),f({el:e,state:{disabled:g,required:_,invalid:v}}),o({el:t,attr:`data-checked`,present:l}),o({el:t,attr:`data-indeterminate`,present:h});let b=e.querySelector(`[data-ui-checkbox-indicator]`);b&&(a({el:b,attr:`data-state`,value:c}),o({el:b,attr:`data-checked`,present:l}),o({el:b,attr:`data-indeterminate`,present:h}),o({el:b,attr:`data-disabled`,present:g}),o({el:b,attr:`data-invalid`,present:v}));let x=e.querySelector(`[data-ui-checkbox-indicator-icon="checked"]`);x&&(o({el:x,attr:`data-checked`,present:l}),i({el:x,attr:`data-indeterminate`}));let S=e.querySelector(`[data-ui-checkbox-indicator-icon="indeterminate"]`);S&&(o({el:S,attr:`data-indeterminate`,present:h}),i({el:S,attr:`data-checked`}))},g=e=>{l=!0;try{d().dispatchEvent(new Event(e,{bubbles:!0}))}finally{l=!1}},_=c({schema:C,hooks:T,createMachine:({props:e})=>I({props:e,effects:{sync:h,emitInput:()=>g(`input`),emitChange:()=>g(`change`)}})}),v={setInheritance(e){_.send({type:`INHERITANCE_CHANGED`,...e})}};return{..._,init(){if(e=this.$el,t=u().querySelector(`[data-ui-checkbox-input]`),!t)throw Error(`Checkbox requires a native checkbox input.`);_.connect(e,this.snapshot),s({target:t,event:`input`,handler:()=>{l||_.send({type:`NATIVE_CHANGED`,state:d().checked?`checked`:`unchecked`})},cleanup:n}),s({target:t,event:`change`,handler:()=>{l||_.send({type:`NATIVE_CHANGED`,state:d().checked?`checked`:`unchecked`})},cleanup:n});let i=B(u());i&&(r=i.register(v)),h()},destroy(){r?.(),r=null,n.splice(0).reverse().forEach(e=>e()),_.disconnect(),e=null,t=null},get state(){return _.getCommittedSnapshot().context.selection.state},setState(e){if(![`unchecked`,`checked`,`indeterminate`].includes(e))throw Error(`Unknown checkbox state: ${String(e)}`);e!==_.getCommittedSnapshot().context.selection.state&&_.send({type:`API_SET`,state:e})}}},H=()=>{let e=null,t=new Set,n=()=>{if(!e)throw Error(`Checkbox group has not been initialized.`);return e},r=()=>o.getCommittedSnapshot(),i=()=>{let e=r();a({el:n(),attr:`data-orientation`,value:e.props.orientation}),a({el:n(),attr:`data-variant`,value:e.props.variant}),f({el:n(),state:e.context.inherited}),t.forEach(t=>t.setInheritance(e.context.inherited))},o=c({schema:w,hooks:E,createMachine:({props:e})=>R({props:e,effects:{sync:i}})}),s={register(e){return t.add(e),e.setInheritance(r().context.inherited),()=>t.delete(e)},inherited:()=>r().context.inherited};return{...o,init(){e=this.$el,o.connect(e,this.snapshot),z.set(n(),s),i()},destroy(){z.delete(n()),t.clear(),o.disconnect(),e=null}}},U=e=>{e.data(`UiCheckbox`,()=>V()),e.data(`UiCheckboxGroup`,()=>H())},W=new WeakSet,G=e=>{W.has(e)||(W.add(e),U(e))};export{V as n,H as r,G as t};
|
|
2
|
+
//# sourceMappingURL=entry.generated-Dn6MRCe0.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry.generated-Dn6MRCe0.js","names":[],"sources":["../../../../../../../../client/src/components/checkbox/contract.ts","../../../../../../../../client/src/components/checkbox/machine.ts","../../../../../../../../client/src/components/checkbox/index.ts","../../../../../../../../client/src/components/checkbox/entry.generated.ts"],"sourcesContent":["import {attribute, bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n CONTROL_SIZES,\n DEFAULT_VARIANTS,\n INDICATOR_PLACEMENTS,\n ORIENTATIONS,\n type ControlSize,\n type DefaultVariant,\n type IndicatorPlacement,\n type Orientation,\n} from '../common';\n\nconst CHECKBOX_GROUP_ORIENTATIONS = ORIENTATIONS;\nconst CHECKBOX_GROUP_VARIANTS = DEFAULT_VARIANTS;\nconst CHECKBOX_PLACEMENTS = INDICATOR_PLACEMENTS;\nconst CHECKBOX_SIZES = CONTROL_SIZES;\nconst CHECKBOX_VARIANTS = DEFAULT_VARIANTS;\n\ntype CheckboxGroupOrientation = Orientation;\ntype CheckboxGroupVariant = DefaultVariant;\ntype CheckboxPlacement = IndicatorPlacement;\ntype CheckboxSize = ControlSize;\ntype CheckboxVariant = DefaultVariant;\n\nconst checkboxControlSchema = {\n value: string.default('on'),\n name: string,\n label: string,\n description: string,\n checked: attribute(bool, 'prop-checked'),\n indeterminate: attribute(bool, 'prop-indeterminate'),\n disabled: attribute(bool, 'prop-disabled'),\n required: attribute(bool, 'prop-required'),\n invalid: attribute(bool, 'prop-invalid'),\n indicator: bool.default(true),\n placement: oneOf(CHECKBOX_PLACEMENTS, 'leading' as CheckboxPlacement),\n icon: string,\n variant: oneOf(CHECKBOX_VARIANTS, 'default' as CheckboxVariant),\n size: oneOf(CHECKBOX_SIZES, 'md' as CheckboxSize),\n inputClass: string,\n indicatorClass: string,\n indicatorIconClass: string,\n iconClass: string,\n contentClass: string,\n labelClass: string,\n descriptionClass: string,\n class: string,\n};\n\nconst checkboxSchema = {\n ...checkboxControlSchema,\n label: string,\n description: string,\n descriptionTrailing: string,\n error: string,\n errors: string,\n badge: string,\n fieldClass: string,\n};\n\nconst checkboxGroupSchema = {\n name: string,\n orientation: oneOf(CHECKBOX_GROUP_ORIENTATIONS, 'vertical' as CheckboxGroupOrientation),\n variant: oneOf(CHECKBOX_GROUP_VARIANTS, 'default' as CheckboxGroupVariant),\n indicator: bool.default(true),\n placement: oneOf(CHECKBOX_PLACEMENTS, 'leading' as CheckboxPlacement),\n disabled: attribute(bool, 'prop-disabled'),\n required: attribute(bool, 'prop-required'),\n invalid: attribute(bool, 'prop-invalid'),\n class: string,\n};\n\nconst checkboxIndicatorSchema = {\n size: oneOf(CHECKBOX_SIZES, 'md' as CheckboxSize),\n class: string,\n};\n\ntype CheckboxControlProps = SchemaToProps<typeof checkboxControlSchema>;\ntype CheckboxGroupProps = SchemaToProps<typeof checkboxGroupSchema>;\ntype CheckboxProps = SchemaToProps<typeof checkboxSchema>;\n\nexport {\n CHECKBOX_GROUP_ORIENTATIONS,\n CHECKBOX_GROUP_VARIANTS,\n CHECKBOX_PLACEMENTS,\n CHECKBOX_SIZES,\n CHECKBOX_VARIANTS,\n checkboxControlSchema,\n checkboxGroupSchema,\n checkboxIndicatorSchema,\n checkboxSchema,\n};\nexport type {\n CheckboxControlProps,\n CheckboxGroupOrientation,\n CheckboxGroupProps,\n CheckboxGroupVariant,\n CheckboxPlacement,\n CheckboxProps,\n CheckboxSize,\n CheckboxVariant,\n};\n","import {\n createMachine,\n propsChanged,\n propsChangedEvent,\n type Machine,\n type MachineEventObject,\n type MachineScope,\n} from '../../runtime/state-machine';\nimport type {CheckboxControlProps, CheckboxGroupProps} from './contract';\n\ntype CheckboxState = 'unchecked' | 'checked' | 'indeterminate';\ntype CheckboxInheritance = {name: string; disabled: boolean; required: boolean; invalid: boolean};\ntype CheckboxContext = {\n selection: {state: CheckboxState};\n inherited: CheckboxInheritance;\n};\ntype CheckboxGroupContext = {inherited: CheckboxInheritance};\n\ntype CheckboxMachineEffects = {\n sync(scope: MachineScope<CheckboxContext, CheckboxControlProps>): void;\n emitInput(scope: MachineScope<CheckboxContext, CheckboxControlProps>): void;\n emitChange(scope: MachineScope<CheckboxContext, CheckboxControlProps>): void;\n};\ntype CheckboxGroupMachineEffects = {\n sync(scope: MachineScope<CheckboxGroupContext, CheckboxGroupProps>): void;\n};\n\nconst checkboxHooks = [] as const;\nconst checkboxGroupHooks = [] as const;\nconst EMPTY_INHERITANCE: CheckboxInheritance = {name: '', disabled: false, required: false, invalid: false};\n\nconst checkboxStateFromProps = (props: CheckboxControlProps): CheckboxState => {\n if (props.indeterminate) return 'indeterminate';\n return props.checked ? 'checked' : 'unchecked';\n};\n\nconst stateFromEvent = (event: MachineEventObject): CheckboxState => {\n if (event.state === 'checked' || event.state === 'indeterminate') return event.state;\n return 'unchecked';\n};\n\nconst selectionPropsChanged = ({event}: MachineScope<CheckboxContext, CheckboxControlProps>): boolean => (\n propsChanged<CheckboxControlProps>(event, 'checked', 'indeterminate')\n);\nconst nextSelectionIs = (state: CheckboxState) => (scope: MachineScope<CheckboxContext, CheckboxControlProps>): boolean => {\n const next = propsChangedEvent<CheckboxControlProps>(scope.event)?.props;\n return selectionPropsChanged(scope) && Boolean(next) && checkboxStateFromProps(next as CheckboxControlProps) === state;\n};\nconst eventStateIs = (state: CheckboxState) => ({event}: MachineScope<CheckboxContext, CheckboxControlProps>): boolean => (\n stateFromEvent(event) === state\n);\n\nconst setSelection = (scope: MachineScope<CheckboxContext, CheckboxControlProps>) => ({\n context: {...scope.context, selection: {state: stateFromEvent(scope.event)}},\n});\nconst reconcileProps = (scope: MachineScope<CheckboxContext, CheckboxControlProps>) => {\n const next = propsChangedEvent<CheckboxControlProps>(scope.event)?.props;\n if (!next) return;\n return {\n props: next,\n context: selectionPropsChanged(scope)\n ? {...scope.context, selection: {state: checkboxStateFromProps(next)}}\n : scope.context,\n };\n};\n\nconst selectionTransitions = (effects: string[]) => [\n {target: 'unchecked', guard: eventStateIs('unchecked'), reduce: 'setSelection', effects},\n {target: 'checked', guard: eventStateIs('checked'), reduce: 'setSelection', effects},\n {target: 'indeterminate', guard: eventStateIs('indeterminate'), reduce: 'setSelection', effects},\n];\n\nconst createCheckboxMachine = ({\n props,\n inherited = EMPTY_INHERITANCE,\n effects,\n}: {\n props: CheckboxControlProps;\n inherited?: CheckboxInheritance;\n effects: CheckboxMachineEffects;\n}): Machine<CheckboxContext, CheckboxControlProps> => {\n const initial = checkboxStateFromProps(props);\n return createMachine<CheckboxContext, CheckboxControlProps>({\n initial,\n on: {\n NATIVE_CHANGED: selectionTransitions(['sync']),\n API_SET: selectionTransitions(['sync', 'emitInput', 'emitChange']),\n INHERITANCE_CHANGED: {reduce: 'setInheritance', effects: 'sync'},\n PROPS_CHANGED: [\n {target: 'unchecked', guard: nextSelectionIs('unchecked'), reduce: 'reconcileProps', effects: 'sync'},\n {target: 'checked', guard: nextSelectionIs('checked'), reduce: 'reconcileProps', effects: 'sync'},\n {target: 'indeterminate', guard: nextSelectionIs('indeterminate'), reduce: 'reconcileProps', effects: 'sync'},\n {reduce: 'reconcileProps', effects: 'sync'},\n ],\n },\n states: {\n unchecked: {tags: ['unchecked']},\n checked: {tags: ['checked']},\n indeterminate: {tags: ['indeterminate']},\n },\n }, {\n context: {selection: {state: initial}, inherited: {...inherited}},\n props,\n reducers: {\n setSelection,\n reconcileProps,\n setInheritance: (scope) => ({\n context: {\n ...scope.context,\n inherited: {\n name: typeof scope.event.name === 'string' ? scope.event.name : '',\n disabled: scope.event.disabled === true,\n required: scope.event.required === true,\n invalid: scope.event.invalid === true,\n },\n },\n }),\n },\n effects,\n });\n};\n\nconst inheritanceFromGroupProps = (props: CheckboxGroupProps): CheckboxInheritance => ({\n name: props.name,\n disabled: props.disabled,\n required: props.required,\n invalid: props.invalid,\n});\n\nconst createCheckboxGroupMachine = ({\n props,\n effects,\n}: {\n props: CheckboxGroupProps;\n effects: CheckboxGroupMachineEffects;\n}): Machine<CheckboxGroupContext, CheckboxGroupProps> => createMachine<CheckboxGroupContext, CheckboxGroupProps>({\n initial: 'ready',\n states: {\n ready: {\n tags: ['ready'],\n on: {\n PROPS_CHANGED: {reduce: 'reconcileProps', effects: 'sync'},\n },\n },\n },\n}, {\n context: {inherited: inheritanceFromGroupProps(props)},\n props,\n reducers: {\n reconcileProps: (scope) => {\n const next = propsChangedEvent<CheckboxGroupProps>(scope.event)?.props;\n return next ? {props: next, context: {inherited: inheritanceFromGroupProps(next)}} : undefined;\n },\n },\n effects,\n});\n\nexport {\n checkboxGroupHooks,\n checkboxHooks,\n checkboxStateFromProps,\n createCheckboxGroupMachine,\n createCheckboxMachine,\n EMPTY_INHERITANCE,\n};\nexport type {\n CheckboxContext,\n CheckboxGroupContext,\n CheckboxGroupMachineEffects,\n CheckboxInheritance,\n CheckboxMachineEffects,\n CheckboxState,\n};\n","import type Alpine from 'alpinejs';\n\nimport {\n type AlpineMachine,\n createAlpineMachine,\n type MachineSnapshot,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {syncControlPresence, syncNativeControl} from '@client/runtime/form-control';\nimport {addListener, removeAttribute, setAttribute, setPresence, type CleanupStack} from '@client/utils';\nimport {checkboxControlSchema, checkboxGroupSchema, type CheckboxControlProps, type CheckboxGroupProps} from './contract';\nimport {\n checkboxGroupHooks,\n checkboxHooks,\n createCheckboxGroupMachine,\n createCheckboxMachine,\n type CheckboxContext,\n type CheckboxGroupContext,\n type CheckboxInheritance,\n type CheckboxState,\n} from './machine';\n\n/**\n * Public Alpine API for `ui.checkbox` and `ui.checkbox.control`.\n *\n * @public\n */\ninterface UiCheckboxApi {\n /** Current semantic checkbox state. */\n readonly state: CheckboxState;\n /** Set and commit the semantic checkbox state. */\n setState(state: CheckboxState): void;\n}\n\ntype CheckboxData = AlpineMachine<CheckboxContext, CheckboxControlProps, typeof checkboxHooks> & UiCheckboxApi & {\n init(): void;\n destroy(): void;\n};\ntype CheckboxGroupData = AlpineMachine<CheckboxGroupContext, CheckboxGroupProps, typeof checkboxGroupHooks> & {\n init(): void;\n destroy(): void;\n};\n\ntype CheckboxOwner = {setInheritance(inherited: CheckboxInheritance): void};\ntype CheckboxGroupOwner = {\n register(owner: CheckboxOwner): () => void;\n inherited(): CheckboxInheritance;\n};\n\nconst groupOwners = new WeakMap<HTMLElement, CheckboxGroupOwner>();\n\nconst closestGroupOwner = (element: HTMLElement): CheckboxGroupOwner | null => {\n const group = element.parentElement?.closest<HTMLElement>('[data-ui-checkbox-group]') ?? null;\n return group ? groupOwners.get(group) ?? null : null;\n};\n\nconst UiCheckbox = (): TrellisAlpineComponent<CheckboxData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let inputEl: HTMLInputElement | null = null;\n let listeners: CleanupStack = [];\n let unregisterGroup: (() => void) | null = null;\n let dispatchingNative = false;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Checkbox has not been initialized.');\n return rootEl;\n };\n const input = (): HTMLInputElement => {\n if (!inputEl) throw new Error('Checkbox requires a native checkbox input.');\n return inputEl;\n };\n const currentSnapshot = (): MachineSnapshot<CheckboxContext, CheckboxControlProps> => bridge.getCommittedSnapshot();\n\n const syncDom = (): void => {\n const checkbox = root();\n const native = input();\n const snapshot = currentSnapshot();\n const props = snapshot.props;\n const inherited = snapshot.context.inherited;\n const state = snapshot.context.selection.state;\n const checked = state === 'checked';\n const indeterminate = state === 'indeterminate';\n const disabled = props.disabled || inherited.disabled;\n const required = props.required || inherited.required;\n const invalid = props.invalid || inherited.invalid;\n const name = props.name || inherited.name;\n\n native.checked = checked;\n native.indeterminate = indeterminate;\n if (!name) native.removeAttribute('name');\n syncNativeControl({input: native, state: {name, value: props.value, disabled, required, invalid}});\n if (indeterminate) native.setAttribute('aria-checked', 'mixed');\n else native.removeAttribute('aria-checked');\n\n setAttribute({el: checkbox, attr: 'data-state', value: state});\n setPresence({el: checkbox, attr: 'data-checked', present: checked});\n setPresence({el: checkbox, attr: 'data-indeterminate', present: indeterminate});\n syncControlPresence({el: checkbox, state: {disabled, required, invalid}});\n setPresence({el: native, attr: 'data-checked', present: checked});\n setPresence({el: native, attr: 'data-indeterminate', present: indeterminate});\n\n const indicator = checkbox.querySelector<HTMLElement>('[data-ui-checkbox-indicator]');\n if (indicator) {\n setAttribute({el: indicator, attr: 'data-state', value: state});\n setPresence({el: indicator, attr: 'data-checked', present: checked});\n setPresence({el: indicator, attr: 'data-indeterminate', present: indeterminate});\n setPresence({el: indicator, attr: 'data-disabled', present: disabled});\n setPresence({el: indicator, attr: 'data-invalid', present: invalid});\n }\n const checkedIcon = checkbox.querySelector<HTMLElement>('[data-ui-checkbox-indicator-icon=\"checked\"]');\n if (checkedIcon) {\n setPresence({el: checkedIcon, attr: 'data-checked', present: checked});\n removeAttribute({el: checkedIcon, attr: 'data-indeterminate'});\n }\n const indeterminateIcon = checkbox.querySelector<HTMLElement>('[data-ui-checkbox-indicator-icon=\"indeterminate\"]');\n if (indeterminateIcon) {\n setPresence({el: indeterminateIcon, attr: 'data-indeterminate', present: indeterminate});\n removeAttribute({el: indeterminateIcon, attr: 'data-checked'});\n }\n };\n\n const dispatchNative = (type: 'input' | 'change'): void => {\n dispatchingNative = true;\n try { input().dispatchEvent(new Event(type, {bubbles: true})); } finally { dispatchingNative = false; }\n };\n\n const bridge = createAlpineMachine({\n schema: checkboxControlSchema,\n hooks: checkboxHooks,\n createMachine: ({props}) => createCheckboxMachine({\n props,\n effects: {\n sync: syncDom,\n emitInput: () => dispatchNative('input'),\n emitChange: () => dispatchNative('change'),\n },\n }),\n });\n\n const owner: CheckboxOwner = {\n setInheritance(inherited): void {\n bridge.send({type: 'INHERITANCE_CHANGED', ...inherited});\n },\n };\n\n return {\n ...bridge,\n init(): void {\n rootEl = this.$el;\n inputEl = root().querySelector<HTMLInputElement>('[data-ui-checkbox-input]');\n if (!inputEl) throw new Error('Checkbox requires a native checkbox input.');\n bridge.connect(rootEl, this.snapshot);\n addListener({target: inputEl, event: 'input', handler: () => {\n if (dispatchingNative) return;\n bridge.send({type: 'NATIVE_CHANGED', state: input().checked ? 'checked' : 'unchecked'});\n }, cleanup: listeners});\n addListener({target: inputEl, event: 'change', handler: () => {\n if (dispatchingNative) return;\n bridge.send({type: 'NATIVE_CHANGED', state: input().checked ? 'checked' : 'unchecked'});\n }, cleanup: listeners});\n const group = closestGroupOwner(root());\n if (group) unregisterGroup = group.register(owner);\n syncDom();\n },\n destroy(): void {\n unregisterGroup?.();\n unregisterGroup = null;\n listeners.splice(0).reverse().forEach((cleanup) => cleanup());\n bridge.disconnect();\n rootEl = null;\n inputEl = null;\n },\n get state(): CheckboxState {\n return bridge.getCommittedSnapshot().context.selection.state;\n },\n setState(state: CheckboxState): void {\n if (!['unchecked', 'checked', 'indeterminate'].includes(state)) {\n throw new Error(`Unknown checkbox state: ${String(state)}`);\n }\n if (state === bridge.getCommittedSnapshot().context.selection.state) return;\n bridge.send({type: 'API_SET', state});\n },\n };\n};\n\nconst UiCheckboxGroup = (): TrellisAlpineComponent<CheckboxGroupData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n const members = new Set<CheckboxOwner>();\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Checkbox group has not been initialized.');\n return rootEl;\n };\n const currentSnapshot = (): MachineSnapshot<CheckboxGroupContext, CheckboxGroupProps> => bridge.getCommittedSnapshot();\n const syncDom = (): void => {\n const snapshot = currentSnapshot();\n setAttribute({el: root(), attr: 'data-orientation', value: snapshot.props.orientation});\n setAttribute({el: root(), attr: 'data-variant', value: snapshot.props.variant});\n syncControlPresence({el: root(), state: snapshot.context.inherited});\n members.forEach((member) => member.setInheritance(snapshot.context.inherited));\n };\n const bridge = createAlpineMachine({\n schema: checkboxGroupSchema,\n hooks: checkboxGroupHooks,\n createMachine: ({props}) => createCheckboxGroupMachine({\n props,\n effects: {sync: syncDom},\n }),\n });\n const owner: CheckboxGroupOwner = {\n register(member): () => void {\n members.add(member);\n member.setInheritance(currentSnapshot().context.inherited);\n return () => members.delete(member);\n },\n inherited: () => currentSnapshot().context.inherited,\n };\n\n return {\n ...bridge,\n init(): void {\n rootEl = this.$el;\n bridge.connect(rootEl, this.snapshot);\n groupOwners.set(root(), owner);\n syncDom();\n },\n destroy(): void {\n groupOwners.delete(root());\n members.clear();\n bridge.disconnect();\n rootEl = null;\n },\n };\n};\n\nconst registerCheckbox = (AlpineInstance: Alpine.Alpine): void => {\n AlpineInstance.data('UiCheckbox', () => UiCheckbox());\n AlpineInstance.data('UiCheckboxGroup', () => UiCheckboxGroup());\n};\n\nexport {registerCheckbox, UiCheckbox, UiCheckboxGroup};\nexport type {CheckboxData, CheckboxGroupData, CheckboxState, UiCheckboxApi};\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 {registerCheckbox as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerCheckbox = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerCheckbox};\nexport default registerCheckbox;\nexport * from './index';\n"],"mappings":"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"}
|