@rivetjs/cdk 0.0.0-stage → 0.1.0-alpha.1
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/LICENSE +21 -0
- package/NOTICE +483 -0
- package/README.md +10 -2
- package/_adapters/collection.d.ts +160 -0
- package/_adapters/collection.js +235 -0
- package/_adapters/collections.d.ts +325 -0
- package/_adapters/collections.js +934 -0
- package/_adapters/dom-collection.d.ts +42 -0
- package/_adapters/dom-collection.js +228 -0
- package/_adapters/grid-selection.d.ts +115 -0
- package/_adapters/grid-selection.js +436 -0
- package/_adapters/interactions.d.ts +19 -0
- package/_adapters/interactions.js +45 -0
- package/_adapters/intl.d.ts +8 -0
- package/_adapters/intl.js +106 -0
- package/_adapters/press.d.ts +22 -0
- package/_adapters/press.js +34 -0
- package/_adapters/selectable.d.ts +132 -0
- package/_adapters/selectable.js +599 -0
- package/_adapters/selection.d.ts +120 -0
- package/_adapters/selection.js +709 -0
- package/_adapters/type-select.d.ts +8 -0
- package/_adapters/type-select.js +59 -0
- package/a11y/aria-describer.d.ts +46 -0
- package/a11y/aria-describer.js +169 -0
- package/a11y/focus-monitor.d.ts +98 -0
- package/a11y/focus-monitor.js +321 -0
- package/a11y/focus-trap.d.ts +137 -0
- package/a11y/focus-trap.js +378 -0
- package/a11y/high-contrast.d.ts +26 -0
- package/a11y/high-contrast.js +84 -0
- package/a11y/index.d.ts +37 -0
- package/a11y/index.js +97 -0
- package/a11y/interactivity-checker.d.ts +18 -0
- package/a11y/interactivity-checker.js +126 -0
- package/a11y/key-manager.d.ts +152 -0
- package/a11y/key-manager.js +397 -0
- package/a11y/live-announcer.d.ts +53 -0
- package/a11y/live-announcer.js +143 -0
- package/accordion/index.d.ts +2 -0
- package/accordion/index.jsx +10 -0
- package/announcer/index.d.ts +8 -0
- package/announcer/index.jsx +22 -0
- package/announcer/live-announcer.d.ts +15 -0
- package/announcer/live-announcer.js +123 -0
- package/autocomplete/behaviour.d.ts +94 -0
- package/autocomplete/behaviour.jsx +423 -0
- package/autocomplete/contexts.d.ts +54 -0
- package/autocomplete/contexts.js +28 -0
- package/autocomplete/index.d.ts +12 -0
- package/autocomplete/index.jsx +31 -0
- package/autocomplete/intl.d.ts +2 -0
- package/autocomplete/intl.js +36 -0
- package/bidi/bidi-dir.d.ts +23 -0
- package/bidi/bidi-dir.jsx +36 -0
- package/bidi/index.d.ts +58 -0
- package/bidi/index.js +84 -0
- package/breadcrumbs/behaviour.d.ts +6 -0
- package/breadcrumbs/behaviour.js +17 -0
- package/breadcrumbs/index.d.ts +68 -0
- package/breadcrumbs/index.jsx +224 -0
- package/breadcrumbs/intl.d.ts +3 -0
- package/breadcrumbs/intl.js +104 -0
- package/button/behaviour.d.ts +61 -0
- package/button/behaviour.js +90 -0
- package/button/index.d.ts +38 -0
- package/button/index.jsx +376 -0
- package/button/press.d.ts +25 -0
- package/button/press.js +54 -0
- package/calendar/behaviour.d.ts +250 -0
- package/calendar/behaviour.jsx +939 -0
- package/calendar/index.d.ts +157 -0
- package/calendar/index.jsx +484 -0
- package/calendar/intl.d.ts +3 -0
- package/calendar/intl.js +36 -0
- package/carousel/behaviour.d.ts +50 -0
- package/carousel/behaviour.jsx +365 -0
- package/carousel/engine/Alignment.d.ts +5 -0
- package/carousel/engine/Alignment.js +24 -0
- package/carousel/engine/Animations.d.ts +13 -0
- package/carousel/engine/Animations.js +28 -0
- package/carousel/engine/Axis.d.ts +14 -0
- package/carousel/engine/Axis.js +35 -0
- package/carousel/engine/Counter.d.ts +7 -0
- package/carousel/engine/Counter.js +32 -0
- package/carousel/engine/DragHandler.d.ts +22 -0
- package/carousel/engine/DragHandler.js +141 -0
- package/carousel/engine/DragTracker.d.ts +10 -0
- package/carousel/engine/DragTracker.js +29 -0
- package/carousel/engine/EmblaCarousel.d.ts +32 -0
- package/carousel/engine/EmblaCarousel.js +177 -0
- package/carousel/engine/Engine.d.ts +64 -0
- package/carousel/engine/Engine.js +137 -0
- package/carousel/engine/EventHandler.d.ts +27 -0
- package/carousel/engine/EventHandler.js +33 -0
- package/carousel/engine/EventStore.d.ts +9 -0
- package/carousel/engine/EventStore.js +25 -0
- package/carousel/engine/NodeRects.d.ts +12 -0
- package/carousel/engine/NodeRects.js +18 -0
- package/carousel/engine/Options.d.ts +40 -0
- package/carousel/engine/Options.js +22 -0
- package/carousel/engine/OptionsHandler.d.ts +10 -0
- package/carousel/engine/OptionsHandler.js +26 -0
- package/carousel/engine/PercentOfView.d.ts +4 -0
- package/carousel/engine/PercentOfView.js +9 -0
- package/carousel/engine/Plugins.d.ts +16 -0
- package/carousel/engine/Plugins.js +1 -0
- package/carousel/engine/PluginsHandler.d.ts +8 -0
- package/carousel/engine/PluginsHandler.js +16 -0
- package/carousel/engine/ResizeHandler.d.ts +13 -0
- package/carousel/engine/ResizeHandler.js +51 -0
- package/carousel/engine/ScrollBounds.d.ts +10 -0
- package/carousel/engine/ScrollBounds.js +41 -0
- package/carousel/engine/ScrollContain.d.ts +7 -0
- package/carousel/engine/ScrollContain.js +52 -0
- package/carousel/engine/ScrollLimit.d.ts +5 -0
- package/carousel/engine/ScrollLimit.js +13 -0
- package/carousel/engine/ScrollLooper.d.ts +6 -0
- package/carousel/engine/ScrollLooper.js +26 -0
- package/carousel/engine/ScrollProgress.d.ts +5 -0
- package/carousel/engine/ScrollProgress.js +11 -0
- package/carousel/engine/ScrollSnaps.d.ts +9 -0
- package/carousel/engine/ScrollSnaps.js +26 -0
- package/carousel/engine/ScrollTarget.d.ts +12 -0
- package/carousel/engine/ScrollTarget.js +47 -0
- package/carousel/engine/ScrollTo.d.ts +11 -0
- package/carousel/engine/ScrollTo.js +36 -0
- package/carousel/engine/SlideFocus.d.ts +13 -0
- package/carousel/engine/SlideFocus.js +39 -0
- package/carousel/engine/SlideLooper.d.ts +18 -0
- package/carousel/engine/SlideLooper.js +78 -0
- package/carousel/engine/SlideRegistry.d.ts +7 -0
- package/carousel/engine/SlideRegistry.js +31 -0
- package/carousel/engine/SlideSizes.d.ts +10 -0
- package/carousel/engine/SlideSizes.js +41 -0
- package/carousel/engine/SlidesHandler.d.ts +10 -0
- package/carousel/engine/SlidesHandler.js +36 -0
- package/carousel/engine/SlidesInView.d.ts +8 -0
- package/carousel/engine/SlidesInView.js +59 -0
- package/carousel/engine/SlidesToScroll.d.ts +7 -0
- package/carousel/engine/SlidesToScroll.js +41 -0
- package/carousel/engine/Translate.d.ts +7 -0
- package/carousel/engine/Translate.js +38 -0
- package/carousel/engine/index.d.ts +11 -0
- package/carousel/engine/index.js +1 -0
- package/carousel/engine/utils.d.ts +15 -0
- package/carousel/engine/utils.js +45 -0
- package/carousel/index.d.ts +202 -0
- package/carousel/index.jsx +469 -0
- package/carousel/plugins/auto-height/AutoHeight.d.ts +14 -0
- package/carousel/plugins/auto-height/AutoHeight.js +43 -0
- package/carousel/plugins/auto-height/Options.d.ts +2 -0
- package/carousel/plugins/auto-height/Options.js +1 -0
- package/carousel/plugins/auto-height/index.d.ts +2 -0
- package/carousel/plugins/auto-height/index.js +1 -0
- package/carousel/plugins/auto-scroll/AutoScroll.d.ts +25 -0
- package/carousel/plugins/auto-scroll/AutoScroll.js +185 -0
- package/carousel/plugins/auto-scroll/Options.d.ts +13 -0
- package/carousel/plugins/auto-scroll/Options.js +12 -0
- package/carousel/plugins/auto-scroll/index.d.ts +2 -0
- package/carousel/plugins/auto-scroll/index.js +1 -0
- package/carousel/plugins/auto-scroll/utils.d.ts +3 -0
- package/carousel/plugins/auto-scroll/utils.js +4 -0
- package/carousel/plugins/autoplay/Autoplay.d.ts +29 -0
- package/carousel/plugins/autoplay/Autoplay.js +173 -0
- package/carousel/plugins/autoplay/Options.d.ts +14 -0
- package/carousel/plugins/autoplay/Options.js +12 -0
- package/carousel/plugins/autoplay/index.d.ts +2 -0
- package/carousel/plugins/autoplay/index.js +1 -0
- package/carousel/plugins/autoplay/utils.d.ts +4 -0
- package/carousel/plugins/autoplay/utils.js +11 -0
- package/carousel/plugins/class-names/ClassNames.d.ts +14 -0
- package/carousel/plugins/class-names/ClassNames.js +98 -0
- package/carousel/plugins/class-names/Options.d.ts +13 -0
- package/carousel/plugins/class-names/Options.js +9 -0
- package/carousel/plugins/class-names/index.d.ts +2 -0
- package/carousel/plugins/class-names/index.js +1 -0
- package/carousel/plugins/class-names/utils.d.ts +4 -0
- package/carousel/plugins/class-names/utils.js +14 -0
- package/carousel/plugins/fade/Fade.d.ts +14 -0
- package/carousel/plugins/fade/Fade.js +199 -0
- package/carousel/plugins/fade/Options.d.ts +2 -0
- package/carousel/plugins/fade/Options.js +1 -0
- package/carousel/plugins/fade/index.d.ts +2 -0
- package/carousel/plugins/fade/index.js +1 -0
- package/carousel/plugins/fade/utils.d.ts +2 -0
- package/carousel/plugins/fade/utils.js +8 -0
- package/carousel/state.d.ts +81 -0
- package/carousel/state.js +71 -0
- package/chat/index.d.ts +83 -0
- package/chat/index.jsx +287 -0
- package/checkbox/behaviour.d.ts +172 -0
- package/checkbox/behaviour.jsx +412 -0
- package/checkbox/index.d.ts +168 -0
- package/checkbox/index.jsx +310 -0
- package/clipboard/index.d.ts +49 -0
- package/clipboard/index.js +136 -0
- package/coercion/index.d.ts +36 -0
- package/coercion/index.js +58 -0
- package/collections/base.d.ts +115 -0
- package/collections/base.js +346 -0
- package/collections/builder.d.ts +44 -0
- package/collections/builder.js +283 -0
- package/collections/components.d.ts +252 -0
- package/collections/components.jsx +745 -0
- package/collections/data-source.d.ts +26 -0
- package/collections/data-source.js +27 -0
- package/collections/dom.d.ts +34 -0
- package/collections/dom.js +127 -0
- package/collections/grid.d.ts +45 -0
- package/collections/grid.js +125 -0
- package/collections/hidden.d.ts +4 -0
- package/collections/hidden.js +12 -0
- package/collections/index.d.ts +45 -0
- package/collections/index.js +105 -0
- package/collections/list-state.d.ts +99 -0
- package/collections/list-state.js +156 -0
- package/collections/list.d.ts +20 -0
- package/collections/list.js +77 -0
- package/collections/nodes.d.ts +17 -0
- package/collections/nodes.js +107 -0
- package/collections/row-stamps.d.ts +17 -0
- package/collections/row-stamps.js +108 -0
- package/collections/selection-model.d.ts +93 -0
- package/collections/selection-model.js +192 -0
- package/collections/server-dev.d.ts +6 -0
- package/collections/server-dev.js +18 -0
- package/collections/server-off.d.ts +6 -0
- package/collections/server-off.js +9 -0
- package/collections/server-on.d.ts +29 -0
- package/collections/server-on.jsx +86 -0
- package/collections/table.d.ts +114 -0
- package/collections/table.js +439 -0
- package/collections/tree-state.d.ts +47 -0
- package/collections/tree-state.js +73 -0
- package/collections/tree.d.ts +20 -0
- package/collections/tree.js +66 -0
- package/collections/types.d.ts +229 -0
- package/collections/types.js +4 -0
- package/collections/unique-selection-dispatcher.d.ts +10 -0
- package/collections/unique-selection-dispatcher.js +25 -0
- package/color/area-state.d.ts +99 -0
- package/color/area-state.js +160 -0
- package/color/aria-intl.d.ts +3 -0
- package/color/aria-intl.js +274 -0
- package/color/channel-field-state.d.ts +50 -0
- package/color/channel-field-state.jsx +87 -0
- package/color/color.d.ts +78 -0
- package/color/color.js +738 -0
- package/color/field-state.d.ts +66 -0
- package/color/field-state.jsx +159 -0
- package/color/index.d.ts +58 -0
- package/color/index.js +88 -0
- package/color/intl.d.ts +3 -0
- package/color/intl.js +1328 -0
- package/color/picker-state.d.ts +20 -0
- package/color/picker-state.js +19 -0
- package/color/slider-state.d.ts +78 -0
- package/color/slider-state.jsx +98 -0
- package/color/value.d.ts +27 -0
- package/color/value.js +36 -0
- package/color/wheel-state.d.ts +77 -0
- package/color/wheel-state.js +152 -0
- package/color-area/behaviour.d.ts +161 -0
- package/color-area/behaviour.jsx +454 -0
- package/color-area/index.d.ts +34 -0
- package/color-area/index.jsx +187 -0
- package/color-field/behaviour.d.ts +112 -0
- package/color-field/behaviour.jsx +262 -0
- package/color-field/index.d.ts +72 -0
- package/color-field/index.jsx +309 -0
- package/color-picker/index.d.ts +19 -0
- package/color-picker/index.jsx +49 -0
- package/color-slider/behaviour.d.ts +103 -0
- package/color-slider/behaviour.jsx +234 -0
- package/color-slider/index.d.ts +40 -0
- package/color-slider/index.jsx +162 -0
- package/color-swatch/behaviour.d.ts +40 -0
- package/color-swatch/behaviour.js +36 -0
- package/color-swatch/index.d.ts +29 -0
- package/color-swatch/index.jsx +82 -0
- package/color-swatch-picker/index.d.ts +62 -0
- package/color-swatch-picker/index.jsx +95 -0
- package/color-swatch-picker/intl.d.ts +3 -0
- package/color-swatch-picker/intl.js +104 -0
- package/color-thumb/index.d.ts +85 -0
- package/color-thumb/index.jsx +93 -0
- package/color-wheel/behaviour.d.ts +123 -0
- package/color-wheel/behaviour.jsx +301 -0
- package/color-wheel/index.d.ts +50 -0
- package/color-wheel/index.jsx +166 -0
- package/combobox/behaviour.d.ts +120 -0
- package/combobox/behaviour.jsx +588 -0
- package/combobox/index.d.ts +101 -0
- package/combobox/index.jsx +365 -0
- package/combobox/intl.d.ts +2 -0
- package/combobox/intl.js +240 -0
- package/compare/behaviour.d.ts +101 -0
- package/compare/behaviour.js +288 -0
- package/compare/index.d.ts +58 -0
- package/compare/index.jsx +129 -0
- package/data/async-list.d.ts +78 -0
- package/data/async-list.jsx +257 -0
- package/data/index.d.ts +3 -0
- package/data/index.jsx +6 -0
- package/data/list-data.d.ts +88 -0
- package/data/list-data.jsx +210 -0
- package/data/tree-data.d.ts +59 -0
- package/data/tree-data.jsx +278 -0
- package/data-grid/behaviour.d.ts +95 -0
- package/data-grid/behaviour.js +725 -0
- package/data-grid/index.d.ts +138 -0
- package/data-grid/index.jsx +452 -0
- package/data-grid/state.d.ts +131 -0
- package/data-grid/state.js +288 -0
- package/date/CalendarDate.d.ts +207 -0
- package/date/CalendarDate.js +374 -0
- package/date/DateFormatter.d.ts +24 -0
- package/date/DateFormatter.js +175 -0
- package/date/calendars/BuddhistCalendar.d.ts +16 -0
- package/date/calendars/BuddhistCalendar.js +46 -0
- package/date/calendars/EthiopicCalendar.d.ts +45 -0
- package/date/calendars/EthiopicCalendar.js +178 -0
- package/date/calendars/GregorianCalendar.d.ts +26 -0
- package/date/calendars/GregorianCalendar.js +122 -0
- package/date/calendars/HebrewCalendar.d.ts +21 -0
- package/date/calendars/HebrewCalendar.js +174 -0
- package/date/calendars/IndianCalendar.d.ts +17 -0
- package/date/calendars/IndianCalendar.js +111 -0
- package/date/calendars/IslamicCalendar.d.ts +51 -0
- package/date/calendars/IslamicCalendar.js +205 -0
- package/date/calendars/JapaneseCalendar.d.ts +22 -0
- package/date/calendars/JapaneseCalendar.js +148 -0
- package/date/calendars/PersianCalendar.d.ts +19 -0
- package/date/calendars/PersianCalendar.js +85 -0
- package/date/calendars/TaiwanCalendar.d.ts +19 -0
- package/date/calendars/TaiwanCalendar.js +70 -0
- package/date/conversion.d.ts +45 -0
- package/date/conversion.js +269 -0
- package/date/createCalendar.d.ts +3 -0
- package/date/createCalendar.js +55 -0
- package/date/index.d.ts +20 -0
- package/date/index.js +30 -0
- package/date/manipulation.d.ts +25 -0
- package/date/manipulation.js +399 -0
- package/date/queries.d.ts +93 -0
- package/date/queries.js +303 -0
- package/date/serialize.d.ts +18 -0
- package/date/serialize.js +55 -0
- package/date/string.d.ts +36 -0
- package/date/string.js +223 -0
- package/date/types.d.ts +136 -0
- package/date/types.js +14 -0
- package/date/utils.d.ts +4 -0
- package/date/utils.js +16 -0
- package/date/weekStartData.d.ts +1 -0
- package/date/weekStartData.js +112 -0
- package/date-field/behaviour.d.ts +188 -0
- package/date-field/behaviour.jsx +1025 -0
- package/date-field/index.d.ts +150 -0
- package/date-field/index.jsx +354 -0
- package/date-field/intl.d.ts +3 -0
- package/date-field/intl.js +36 -0
- package/date-field/live-value.d.ts +22 -0
- package/date-field/live-value.jsx +44 -0
- package/date-picker/behaviour.d.ts +95 -0
- package/date-picker/behaviour.jsx +343 -0
- package/date-picker/index.d.ts +66 -0
- package/date-picker/index.jsx +243 -0
- package/dialog/behaviour.d.ts +63 -0
- package/dialog/behaviour.jsx +90 -0
- package/dialog/contexts.d.ts +12 -0
- package/dialog/contexts.js +8 -0
- package/dialog/index.d.ts +48 -0
- package/dialog/index.jsx +301 -0
- package/disclosure/behaviour.d.ts +50 -0
- package/disclosure/behaviour.jsx +128 -0
- package/disclosure/details.d.ts +21 -0
- package/disclosure/details.jsx +14 -0
- package/disclosure/index.d.ts +92 -0
- package/disclosure/index.jsx +300 -0
- package/drag-drop/cdk-index.d.ts +22 -0
- package/drag-drop/cdk-index.jsx +25 -0
- package/drag-drop/directives/assertions.d.ts +6 -0
- package/drag-drop/directives/assertions.js +13 -0
- package/drag-drop/directives/config.d.ts +30 -0
- package/drag-drop/directives/config.js +7 -0
- package/drag-drop/directives/drag-handle.d.ts +10 -0
- package/drag-drop/directives/drag-handle.js +29 -0
- package/drag-drop/directives/drag.d.ts +210 -0
- package/drag-drop/directives/drag.js +550 -0
- package/drag-drop/directives/drop-list-group.d.ts +25 -0
- package/drag-drop/directives/drop-list-group.js +55 -0
- package/drag-drop/directives/drop-list.d.ts +163 -0
- package/drag-drop/directives/drop-list.js +396 -0
- package/drag-drop/directives/registry.d.ts +32 -0
- package/drag-drop/directives/registry.js +61 -0
- package/drag-drop/dom/clone-node.d.ts +2 -0
- package/drag-drop/dom/clone-node.js +58 -0
- package/drag-drop/dom/coerce.d.ts +6 -0
- package/drag-drop/dom/coerce.js +8 -0
- package/drag-drop/dom/dom-rect.d.ts +37 -0
- package/drag-drop/dom/dom-rect.js +71 -0
- package/drag-drop/dom/fake-event.d.ts +4 -0
- package/drag-drop/dom/fake-event.js +22 -0
- package/drag-drop/dom/inherited-text.d.ts +4 -0
- package/drag-drop/dom/inherited-text.js +44 -0
- package/drag-drop/dom/layout-shift.d.ts +8 -0
- package/drag-drop/dom/layout-shift.js +87 -0
- package/drag-drop/dom/mount-content.d.ts +2 -0
- package/drag-drop/dom/mount-content.js +7 -0
- package/drag-drop/dom/parent-position-tracker.d.ts +32 -0
- package/drag-drop/dom/parent-position-tracker.js +71 -0
- package/drag-drop/dom/root-node.d.ts +21 -0
- package/drag-drop/dom/root-node.js +41 -0
- package/drag-drop/dom/shadow-dom.d.ts +4 -0
- package/drag-drop/dom/shadow-dom.js +18 -0
- package/drag-drop/dom/styling.d.ts +52 -0
- package/drag-drop/dom/styling.js +86 -0
- package/drag-drop/dom/transition-duration.d.ts +2 -0
- package/drag-drop/dom/transition-duration.js +29 -0
- package/drag-drop/drag-drop-registry.d.ts +69 -0
- package/drag-drop/drag-drop-registry.js +224 -0
- package/drag-drop/drag-drop.d.ts +19 -0
- package/drag-drop/drag-drop.js +10 -0
- package/drag-drop/drag-events.d.ts +117 -0
- package/drag-drop/drag-events.js +1 -0
- package/drag-drop/drag-handle.d.ts +18 -0
- package/drag-drop/drag-handle.jsx +53 -0
- package/drag-drop/drag-placeholder.d.ts +8 -0
- package/drag-drop/drag-placeholder.jsx +25 -0
- package/drag-drop/drag-preview.d.ts +10 -0
- package/drag-drop/drag-preview.jsx +31 -0
- package/drag-drop/drag-ref.d.ts +476 -0
- package/drag-drop/drag-ref.js +1306 -0
- package/drag-drop/drag-utils.d.ts +25 -0
- package/drag-drop/drag-utils.js +53 -0
- package/drag-drop/drag.d.ts +23 -0
- package/drag-drop/drag.jsx +128 -0
- package/drag-drop/drop-list-group.d.ts +22 -0
- package/drag-drop/drop-list-group.jsx +19 -0
- package/drag-drop/drop-list-ref.d.ts +295 -0
- package/drag-drop/drop-list-ref.js +707 -0
- package/drag-drop/drop-list.d.ts +19 -0
- package/drag-drop/drop-list.jsx +87 -0
- package/drag-drop/index.d.ts +1 -0
- package/drag-drop/index.jsx +4 -0
- package/drag-drop/lazy-refs.d.ts +28 -0
- package/drag-drop/lazy-refs.js +144 -0
- package/drag-drop/preview-ref.d.ts +38 -0
- package/drag-drop/preview-ref.js +132 -0
- package/drag-drop/sorting/drop-list-sort-strategy.d.ts +29 -0
- package/drag-drop/sorting/drop-list-sort-strategy.js +1 -0
- package/drag-drop/sorting/mixed-sort-strategy.d.ts +99 -0
- package/drag-drop/sorting/mixed-sort-strategy.js +259 -0
- package/drag-drop/sorting/single-axis-sort-strategy.d.ts +112 -0
- package/drag-drop/sorting/single-axis-sort-strategy.js +343 -0
- package/file-trigger/index.d.ts +24 -0
- package/file-trigger/index.jsx +41 -0
- package/flip/index.d.ts +59 -0
- package/flip/index.js +124 -0
- package/focus/focus-ring.d.ts +42 -0
- package/focus/focus-ring.jsx +77 -0
- package/focus/focus-scope.d.ts +51 -0
- package/focus/focus-scope.jsx +431 -0
- package/focus/focusable.d.ts +33 -0
- package/focus/focusable.jsx +93 -0
- package/focus/index.d.ts +74 -0
- package/focus/index.js +274 -0
- package/form/behaviour.d.ts +29 -0
- package/form/behaviour.js +145 -0
- package/form/field-error.d.ts +38 -0
- package/form/field-error.jsx +67 -0
- package/form/index.d.ts +77 -0
- package/form/index.jsx +116 -0
- package/grid/behaviour.d.ts +290 -0
- package/grid/behaviour.js +683 -0
- package/grid/intl.d.ts +2 -0
- package/grid/intl.js +36 -0
- package/grid/keyboard-delegate.d.ts +56 -0
- package/grid/keyboard-delegate.js +316 -0
- package/grid-list/behaviour.d.ts +248 -0
- package/grid-list/behaviour.js +616 -0
- package/grid-list/index.d.ts +204 -0
- package/grid-list/index.jsx +721 -0
- package/grid-list/row.d.ts +24 -0
- package/grid-list/row.js +57 -0
- package/group/index.d.ts +48 -0
- package/group/index.jsx +126 -0
- package/header/index.d.ts +13 -0
- package/header/index.jsx +34 -0
- package/heading/index.d.ts +19 -0
- package/heading/index.jsx +55 -0
- package/highlight/index.d.ts +12 -0
- package/highlight/index.jsx +357 -0
- package/i18n/filter.d.ts +16 -0
- package/i18n/filter.js +66 -0
- package/i18n/i18n-provider.d.ts +10 -0
- package/i18n/i18n-provider.jsx +15 -0
- package/i18n/index.d.ts +27 -0
- package/i18n/index.js +115 -0
- package/i18n/intl-cache.d.ts +4 -0
- package/i18n/intl-cache.js +40 -0
- package/i18n/list-formatter.d.ts +2 -0
- package/i18n/list-formatter.js +11 -0
- package/input/index.d.ts +51 -0
- package/input/index.jsx +95 -0
- package/interactions/controllable.d.ts +42 -0
- package/interactions/controllable.js +67 -0
- package/interactions/focus-visible.d.ts +68 -0
- package/interactions/focus-visible.jsx +291 -0
- package/interactions/focus.d.ts +58 -0
- package/interactions/focus.jsx +152 -0
- package/interactions/hover.d.ts +54 -0
- package/interactions/hover.jsx +139 -0
- package/interactions/index.d.ts +1 -0
- package/interactions/index.js +3 -0
- package/interactions/interact-outside.d.ts +24 -0
- package/interactions/interact-outside.jsx +57 -0
- package/interactions/keyboard.d.ts +28 -0
- package/interactions/keyboard.jsx +51 -0
- package/interactions/long-press.d.ts +41 -0
- package/interactions/long-press.jsx +79 -0
- package/interactions/merge-props.d.ts +54 -0
- package/interactions/merge-props.jsx +257 -0
- package/interactions/move.d.ts +48 -0
- package/interactions/move.jsx +96 -0
- package/interactions/press.d.ts +129 -0
- package/interactions/press.jsx +539 -0
- package/interactions/pressable.d.ts +22 -0
- package/interactions/pressable.jsx +93 -0
- package/interactions/scroll-wheel.d.ts +20 -0
- package/interactions/scroll-wheel.jsx +40 -0
- package/interactions/utils.d.ts +52 -0
- package/interactions/utils.js +253 -0
- package/keyboard/index.d.ts +12 -0
- package/keyboard/index.jsx +34 -0
- package/keys/index.d.ts +68 -0
- package/keys/index.js +199 -0
- package/label/behaviour.d.ts +54 -0
- package/label/behaviour.js +60 -0
- package/label/index.d.ts +35 -0
- package/label/index.jsx +85 -0
- package/landmark/index.d.ts +10 -0
- package/landmark/index.jsx +35 -0
- package/landmark/manager.d.ts +50 -0
- package/landmark/manager.js +364 -0
- package/layout/index.d.ts +90 -0
- package/layout/index.js +207 -0
- package/lightbox/behaviour.d.ts +82 -0
- package/lightbox/behaviour.js +490 -0
- package/lightbox/captions/index.d.ts +39 -0
- package/lightbox/captions/index.jsx +44 -0
- package/lightbox/counter/index.d.ts +10 -0
- package/lightbox/counter/index.jsx +10 -0
- package/lightbox/download/index.d.ts +32 -0
- package/lightbox/download/index.jsx +89 -0
- package/lightbox/embed/index.d.ts +15 -0
- package/lightbox/embed/index.jsx +58 -0
- package/lightbox/fullscreen/index.d.ts +24 -0
- package/lightbox/fullscreen/index.jsx +80 -0
- package/lightbox/index.d.ts +129 -0
- package/lightbox/index.jsx +284 -0
- package/lightbox/inline/index.d.ts +18 -0
- package/lightbox/inline/index.jsx +15 -0
- package/lightbox/pdf/index.d.ts +18 -0
- package/lightbox/pdf/index.jsx +31 -0
- package/lightbox/share/index.d.ts +29 -0
- package/lightbox/share/index.jsx +43 -0
- package/lightbox/slideshow/index.d.ts +24 -0
- package/lightbox/slideshow/index.jsx +118 -0
- package/lightbox/state.d.ts +334 -0
- package/lightbox/state.js +192 -0
- package/lightbox/thumbnails/index.d.ts +54 -0
- package/lightbox/thumbnails/index.jsx +96 -0
- package/lightbox/video/index.d.ts +13 -0
- package/lightbox/video/index.jsx +42 -0
- package/lightbox/zoom/index.d.ts +67 -0
- package/lightbox/zoom/index.jsx +456 -0
- package/link/behaviour.d.ts +41 -0
- package/link/behaviour.js +58 -0
- package/link/index.d.ts +30 -0
- package/link/index.jsx +179 -0
- package/link/router.d.ts +1 -0
- package/link/router.js +5 -0
- package/listbox/behaviour.d.ts +175 -0
- package/listbox/behaviour.jsx +515 -0
- package/listbox/index.d.ts +129 -0
- package/listbox/index.jsx +632 -0
- package/markdown/index.d.ts +82 -0
- package/markdown/index.jsx +654 -0
- package/masonry/behaviour.d.ts +121 -0
- package/masonry/behaviour.js +676 -0
- package/masonry/flip.d.ts +27 -0
- package/masonry/flip.js +61 -0
- package/masonry/geometry.d.ts +44 -0
- package/masonry/geometry.js +184 -0
- package/masonry/index.d.ts +153 -0
- package/masonry/index.jsx +833 -0
- package/masonry/justified.d.ts +49 -0
- package/masonry/justified.js +250 -0
- package/masonry/layout.d.ts +200 -0
- package/masonry/layout.js +668 -0
- package/masonry/masonry-layout.d.ts +57 -0
- package/masonry/masonry-layout.js +159 -0
- package/masonry/masonry.css +29 -0
- package/menu/behaviour.d.ts +205 -0
- package/menu/behaviour.jsx +847 -0
- package/menu/index.d.ts +171 -0
- package/menu/index.jsx +702 -0
- package/menu/intl.d.ts +2 -0
- package/menu/intl.js +36 -0
- package/menu/safely-mouse-to-submenu.d.ts +12 -0
- package/menu/safely-mouse-to-submenu.js +128 -0
- package/meter/behaviour.d.ts +18 -0
- package/meter/behaviour.jsx +17 -0
- package/meter/index.d.ts +30 -0
- package/meter/index.jsx +85 -0
- package/modal/index.d.ts +79 -0
- package/modal/index.jsx +359 -0
- package/modal/provider.d.ts +47 -0
- package/modal/provider.jsx +105 -0
- package/morph/index.d.ts +91 -0
- package/morph/index.jsx +372 -0
- package/morph/item.d.ts +89 -0
- package/morph/item.jsx +546 -0
- package/motion/Animations.d.ts +17 -0
- package/motion/Animations.js +56 -0
- package/motion/DragRelease.d.ts +22 -0
- package/motion/DragRelease.js +26 -0
- package/motion/DragTracker.d.ts +7 -0
- package/motion/DragTracker.js +43 -0
- package/motion/Limit.d.ts +12 -0
- package/motion/Limit.js +37 -0
- package/motion/Motion1D.d.ts +38 -0
- package/motion/Motion1D.js +72 -0
- package/motion/ScrollBody.d.ts +13 -0
- package/motion/ScrollBody.js +75 -0
- package/motion/Vector1d.d.ts +8 -0
- package/motion/Vector1d.js +29 -0
- package/motion/index.d.ts +8 -0
- package/motion/index.js +12 -0
- package/motion/utils.d.ts +5 -0
- package/motion/utils.js +23 -0
- package/native-select/index.d.ts +46 -0
- package/native-select/index.jsx +99 -0
- package/navigation-tree/index.d.ts +43 -0
- package/navigation-tree/index.jsx +110 -0
- package/number/NumberFormatter.d.ts +28 -0
- package/number/NumberFormatter.js +144 -0
- package/number/NumberParser.d.ts +27 -0
- package/number/NumberParser.js +316 -0
- package/number/index.d.ts +5 -0
- package/number/index.jsx +17 -0
- package/number/number-field-state.d.ts +132 -0
- package/number/number-field-state.jsx +364 -0
- package/number-field/behaviour.d.ts +165 -0
- package/number-field/behaviour.jsx +512 -0
- package/number-field/index.d.ts +52 -0
- package/number-field/index.jsx +207 -0
- package/number-field/intl.d.ts +2 -0
- package/number-field/intl.js +36 -0
- package/observers/index.d.ts +70 -0
- package/observers/index.js +279 -0
- package/overflow/index.d.ts +93 -0
- package/overflow/index.jsx +267 -0
- package/overlay/aria-hide-outside.d.ts +12 -0
- package/overlay/aria-hide-outside.js +141 -0
- package/overlay/close-on-scroll.d.ts +1 -0
- package/overlay/close-on-scroll.js +6 -0
- package/overlay/contexts.d.ts +34 -0
- package/overlay/contexts.js +21 -0
- package/overlay/dismiss-button.d.ts +10 -0
- package/overlay/dismiss-button.jsx +18 -0
- package/overlay/hover-trigger.d.ts +54 -0
- package/overlay/hover-trigger.jsx +221 -0
- package/overlay/index.d.ts +40 -0
- package/overlay/index.js +139 -0
- package/overlay/modal-overlay.d.ts +16 -0
- package/overlay/modal-overlay.js +38 -0
- package/overlay/overlay-strings.d.ts +4 -0
- package/overlay/overlay-strings.js +52 -0
- package/overlay/overlay-trigger-state.d.ts +1 -0
- package/overlay/overlay-trigger-state.js +3 -0
- package/overlay/overlay-trigger.d.ts +27 -0
- package/overlay/overlay-trigger.jsx +50 -0
- package/overlay/position.d.ts +160 -0
- package/overlay/position.js +559 -0
- package/overlay/prevent-scroll-ios.d.ts +17 -0
- package/overlay/prevent-scroll-ios.js +331 -0
- package/overlay/prevent-scroll.d.ts +18 -0
- package/overlay/prevent-scroll.js +122 -0
- package/overlay/safe-area.d.ts +28 -0
- package/overlay/safe-area.js +108 -0
- package/overlay-arrow/index.d.ts +23 -0
- package/overlay-arrow/index.jsx +59 -0
- package/overlay-service/connected-position.d.ts +163 -0
- package/overlay-service/connected-position.js +661 -0
- package/overlay-service/global-position.d.ts +34 -0
- package/overlay-service/global-position.js +154 -0
- package/overlay-service/index.d.ts +15 -0
- package/overlay-service/index.js +27 -0
- package/overlay-service/overlay-container.d.ts +27 -0
- package/overlay-service/overlay-container.js +93 -0
- package/overlay-service/overlay-dispatchers.d.ts +44 -0
- package/overlay-service/overlay-dispatchers.js +149 -0
- package/overlay-service/overlay-position-builder.d.ts +8 -0
- package/overlay-service/overlay-position-builder.js +15 -0
- package/overlay-service/overlay-ref.d.ts +155 -0
- package/overlay-service/overlay-ref.js +436 -0
- package/overlay-service/overlay-strategy.d.ts +48 -0
- package/overlay-service/overlay-strategy.js +3 -0
- package/overlay-service/overlay-viewport.d.ts +85 -0
- package/overlay-service/overlay-viewport.js +192 -0
- package/overlay-service/overlay.css +94 -0
- package/overlay-service/scroll-strategies.d.ts +71 -0
- package/overlay-service/scroll-strategies.js +185 -0
- package/package.json +754 -4
- package/platform/index.d.ts +100 -0
- package/platform/index.js +304 -0
- package/popover/behaviour.d.ts +23 -0
- package/popover/behaviour.js +39 -0
- package/popover/index.d.ts +60 -0
- package/popover/index.jsx +285 -0
- package/popover/popover-overlay.d.ts +27 -0
- package/popover/popover-overlay.jsx +60 -0
- package/popover/use-popover.d.ts +57 -0
- package/popover/use-popover.js +92 -0
- package/portal/index.d.ts +55 -0
- package/portal/index.jsx +83 -0
- package/portal/portal-mount.d.ts +8 -0
- package/portal/portal-mount.js +7 -0
- package/portal/portal-outlet.d.ts +88 -0
- package/portal/portal-outlet.js +222 -0
- package/preview-trigger/behaviour.d.ts +70 -0
- package/preview-trigger/behaviour.jsx +258 -0
- package/preview-trigger/index.d.ts +12 -0
- package/preview-trigger/index.jsx +82 -0
- package/progress-bar/behaviour.d.ts +77 -0
- package/progress-bar/behaviour.jsx +75 -0
- package/progress-bar/context.d.ts +4 -0
- package/progress-bar/context.js +7 -0
- package/progress-bar/index.d.ts +38 -0
- package/progress-bar/index.jsx +90 -0
- package/radio-group/behaviour.d.ts +11 -0
- package/radio-group/behaviour.js +85 -0
- package/radio-group/index.d.ts +82 -0
- package/radio-group/index.jsx +142 -0
- package/radio-group/parts.d.ts +223 -0
- package/radio-group/parts.jsx +425 -0
- package/range-calendar/behaviour.d.ts +2 -0
- package/range-calendar/behaviour.jsx +5 -0
- package/range-calendar/index.d.ts +2 -0
- package/range-calendar/index.jsx +4 -0
- package/resizable/engine/components/group/auto-save/getStorageKey.d.ts +1 -0
- package/resizable/engine/components/group/auto-save/getStorageKey.js +5 -0
- package/resizable/engine/components/group/compareDocumentPosition.d.ts +5 -0
- package/resizable/engine/components/group/compareDocumentPosition.js +19 -0
- package/resizable/engine/components/group/readLegacyLayout.d.ts +16 -0
- package/resizable/engine/components/group/readLegacyLayout.js +48 -0
- package/resizable/engine/components/group/sortByElementOffset.d.ts +4 -0
- package/resizable/engine/components/group/sortByElementOffset.js +28 -0
- package/resizable/engine/components/group/types.d.ts +50 -0
- package/resizable/engine/components/group/types.js +1 -0
- package/resizable/engine/components/panel/types.d.ts +90 -0
- package/resizable/engine/components/panel/types.js +4 -0
- package/resizable/engine/constants.d.ts +15 -0
- package/resizable/engine/constants.js +27 -0
- package/resizable/engine/global/cursor/getCursorStyle.d.ts +7 -0
- package/resizable/engine/global/cursor/getCursorStyle.js +94 -0
- package/resizable/engine/global/cursor/supportsAdvancedCursorStyles.d.ts +5 -0
- package/resizable/engine/global/cursor/supportsAdvancedCursorStyles.js +20 -0
- package/resizable/engine/global/cursor/updateCursorStyle.d.ts +1 -0
- package/resizable/engine/global/cursor/updateCursorStyle.js +64 -0
- package/resizable/engine/global/dom/calculateAvailableAxisSize.d.ts +4 -0
- package/resizable/engine/global/dom/calculateAvailableAxisSize.js +10 -0
- package/resizable/engine/global/dom/calculateHitRegions.d.ts +13 -0
- package/resizable/engine/global/dom/calculateHitRegions.js +153 -0
- package/resizable/engine/global/dom/calculateItemConstraints.d.ts +2 -0
- package/resizable/engine/global/dom/calculateItemConstraints.js +82 -0
- package/resizable/engine/global/event-handlers/onDocumentContextMenu.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentContextMenu.js +9 -0
- package/resizable/engine/global/event-handlers/onDocumentDoubleClick.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentDoubleClick.js +28 -0
- package/resizable/engine/global/event-handlers/onDocumentKeyDown.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentKeyDown.js +97 -0
- package/resizable/engine/global/event-handlers/onDocumentLostPointerCapture.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentLostPointerCapture.js +18 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerCancel.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerCancel.js +8 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerDown.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerDown.js +54 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerLeave.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerLeave.js +22 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerMove.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerMove.js +69 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerOut.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerOut.js +20 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerUp.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerUp.js +15 -0
- package/resizable/engine/global/event-handlers/onWindowBlur.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onWindowBlur.js +11 -0
- package/resizable/engine/global/mountAxis.d.ts +2 -0
- package/resizable/engine/global/mountAxis.js +187 -0
- package/resizable/engine/global/mutable-state/axes.d.ts +37 -0
- package/resizable/engine/global/mutable-state/axes.js +52 -0
- package/resizable/engine/global/mutable-state/interactions.d.ts +17 -0
- package/resizable/engine/global/mutable-state/interactions.js +92 -0
- package/resizable/engine/global/mutable-state/types.d.ts +32 -0
- package/resizable/engine/global/mutable-state/types.js +1 -0
- package/resizable/engine/global/styles/convertEmToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertEmToPixels.js +7 -0
- package/resizable/engine/global/styles/convertRemToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertRemToPixels.js +7 -0
- package/resizable/engine/global/styles/convertVhToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertVhToPixels.js +5 -0
- package/resizable/engine/global/styles/convertVwToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertVwToPixels.js +5 -0
- package/resizable/engine/global/styles/parseSizeAndUnit.d.ts +2 -0
- package/resizable/engine/global/styles/parseSizeAndUnit.js +29 -0
- package/resizable/engine/global/styles/sizeStyleToPixels.d.ts +5 -0
- package/resizable/engine/global/styles/sizeStyleToPixels.js +38 -0
- package/resizable/engine/global/types.d.ts +120 -0
- package/resizable/engine/global/types.js +1 -0
- package/resizable/engine/global/utils/abortActivePointerResize.d.ts +9 -0
- package/resizable/engine/global/utils/abortActivePointerResize.js +52 -0
- package/resizable/engine/global/utils/adjustLayoutByDelta.d.ts +9 -0
- package/resizable/engine/global/utils/adjustLayoutByDelta.js +219 -0
- package/resizable/engine/global/utils/adjustLayoutForSeparator.d.ts +1 -0
- package/resizable/engine/global/utils/adjustLayoutForSeparator.js +48 -0
- package/resizable/engine/global/utils/calculateDefaultLayout.d.ts +2 -0
- package/resizable/engine/global/utils/calculateDefaultLayout.js +30 -0
- package/resizable/engine/global/utils/calculateResizePreviews.d.ts +3 -0
- package/resizable/engine/global/utils/calculateResizePreviews.js +39 -0
- package/resizable/engine/global/utils/calculateSeparatorAriaValues.d.ts +12 -0
- package/resizable/engine/global/utils/calculateSeparatorAriaValues.js +43 -0
- package/resizable/engine/global/utils/compareLayoutNumbers.d.ts +1 -0
- package/resizable/engine/global/utils/compareLayoutNumbers.js +11 -0
- package/resizable/engine/global/utils/completeActivePointerResize.d.ts +6 -0
- package/resizable/engine/global/utils/completeActivePointerResize.js +49 -0
- package/resizable/engine/global/utils/doRectsIntersect.d.ts +2 -0
- package/resizable/engine/global/utils/doRectsIntersect.js +3 -0
- package/resizable/engine/global/utils/expandHitTarget.d.ts +10 -0
- package/resizable/engine/global/utils/expandHitTarget.js +19 -0
- package/resizable/engine/global/utils/findClosestHitRegion.d.ts +9 -0
- package/resizable/engine/global/utils/findClosestHitRegion.js +35 -0
- package/resizable/engine/global/utils/findClosestRect.d.ts +6 -0
- package/resizable/engine/global/utils/findClosestRect.js +22 -0
- package/resizable/engine/global/utils/findMatchingHitRegions.d.ts +7 -0
- package/resizable/engine/global/utils/findMatchingHitRegions.js +29 -0
- package/resizable/engine/global/utils/findSeparatorAxis.d.ts +21 -0
- package/resizable/engine/global/utils/findSeparatorAxis.js +12 -0
- package/resizable/engine/global/utils/formatLayoutNumber.d.ts +1 -0
- package/resizable/engine/global/utils/formatLayoutNumber.js +5 -0
- package/resizable/engine/global/utils/getDefaultLayout.d.ts +5 -0
- package/resizable/engine/global/utils/getDefaultLayout.js +11 -0
- package/resizable/engine/global/utils/getDistanceBetweenPointAndRect.d.ts +5 -0
- package/resizable/engine/global/utils/getDistanceBetweenPointAndRect.js +6 -0
- package/resizable/engine/global/utils/getImperativeAxisMethods.d.ts +4 -0
- package/resizable/engine/global/utils/getImperativeAxisMethods.js +53 -0
- package/resizable/engine/global/utils/getImperativeItemMethods.d.ts +5 -0
- package/resizable/engine/global/utils/getImperativeItemMethods.js +169 -0
- package/resizable/engine/global/utils/isCoarsePointer.d.ts +4 -0
- package/resizable/engine/global/utils/isCoarsePointer.js +17 -0
- package/resizable/engine/global/utils/isModal.d.ts +1 -0
- package/resizable/engine/global/utils/isModal.js +11 -0
- package/resizable/engine/global/utils/isViableHitTarget.d.ts +5 -0
- package/resizable/engine/global/utils/isViableHitTarget.js +50 -0
- package/resizable/engine/global/utils/itemConstraintsEqual.d.ts +2 -0
- package/resizable/engine/global/utils/itemConstraintsEqual.js +9 -0
- package/resizable/engine/global/utils/layoutNumbersEqual.d.ts +1 -0
- package/resizable/engine/global/utils/layoutNumbersEqual.js +6 -0
- package/resizable/engine/global/utils/layoutsEqual.d.ts +2 -0
- package/resizable/engine/global/utils/layoutsEqual.js +15 -0
- package/resizable/engine/global/utils/normalizeLayout.d.ts +11 -0
- package/resizable/engine/global/utils/normalizeLayout.js +21 -0
- package/resizable/engine/global/utils/notifyItemOnResize.d.ts +2 -0
- package/resizable/engine/global/utils/notifyItemOnResize.js +23 -0
- package/resizable/engine/global/utils/objectsEqual.d.ts +1 -0
- package/resizable/engine/global/utils/objectsEqual.js +14 -0
- package/resizable/engine/global/utils/preserveFixedItemSizes.d.ts +7 -0
- package/resizable/engine/global/utils/preserveFixedItemSizes.js +53 -0
- package/resizable/engine/global/utils/recordAxisLayoutChange.d.ts +15 -0
- package/resizable/engine/global/utils/recordAxisLayoutChange.js +25 -0
- package/resizable/engine/global/utils/updateActiveHitRegion.d.ts +18 -0
- package/resizable/engine/global/utils/updateActiveHitRegion.js +119 -0
- package/resizable/engine/global/utils/validateAxisLayout.d.ts +5 -0
- package/resizable/engine/global/utils/validateAxisLayout.js +70 -0
- package/resizable/engine/global/utils/validateItemSize.d.ts +7 -0
- package/resizable/engine/global/utils/validateItemSize.js +31 -0
- package/resizable/engine/global/utils/validateLayoutKeys.d.ts +2 -0
- package/resizable/engine/global/utils/validateLayoutKeys.js +13 -0
- package/resizable/engine/types.d.ts +13 -0
- package/resizable/engine/types.js +1 -0
- package/resizable/engine/utils/EventEmitter.d.ts +11 -0
- package/resizable/engine/utils/EventEmitter.js +60 -0
- package/resizable/engine/utils/assert.d.ts +1 -0
- package/resizable/engine/utils/assert.js +7 -0
- package/resizable/engine/utils/isArrayEqual.d.ts +1 -0
- package/resizable/engine/utils/isArrayEqual.js +15 -0
- package/resizable/engine/utils/isHTMLElement.d.ts +1 -0
- package/resizable/engine/utils/isHTMLElement.js +6 -0
- package/resizable/engine/utils/isShadowRoot.d.ts +1 -0
- package/resizable/engine/utils/isShadowRoot.js +6 -0
- package/resizable/engine/vendor/stacking-order.d.ts +7 -0
- package/resizable/engine/vendor/stacking-order.js +122 -0
- package/resizable/index.d.ts +263 -0
- package/resizable/index.jsx +537 -0
- package/resizable/mount.d.ts +115 -0
- package/resizable/mount.js +540 -0
- package/scheduler/behaviour.d.ts +71 -0
- package/scheduler/behaviour.js +243 -0
- package/scheduler/context.d.ts +100 -0
- package/scheduler/context.jsx +7 -0
- package/scheduler/dates.d.ts +53 -0
- package/scheduler/dates.js +183 -0
- package/scheduler/drag.d.ts +20 -0
- package/scheduler/drag.js +361 -0
- package/scheduler/event.d.ts +26 -0
- package/scheduler/event.jsx +93 -0
- package/scheduler/index.d.ts +57 -0
- package/scheduler/index.jsx +303 -0
- package/scheduler/intl.d.ts +16 -0
- package/scheduler/intl.js +529 -0
- package/scheduler/keys-month.d.ts +7 -0
- package/scheduler/keys-month.js +110 -0
- package/scheduler/keys-time-grid.d.ts +9 -0
- package/scheduler/keys-time-grid.js +115 -0
- package/scheduler/keys.d.ts +103 -0
- package/scheduler/keys.js +527 -0
- package/scheduler/layout-index.d.ts +3 -0
- package/scheduler/layout-index.js +6 -0
- package/scheduler/layout.d.ts +285 -0
- package/scheduler/layout.js +378 -0
- package/scheduler/menus.d.ts +66 -0
- package/scheduler/menus.jsx +88 -0
- package/scheduler/month.d.ts +26 -0
- package/scheduler/month.jsx +215 -0
- package/scheduler/pointer.d.ts +64 -0
- package/scheduler/pointer.js +203 -0
- package/scheduler/select.d.ts +11 -0
- package/scheduler/select.js +64 -0
- package/scheduler/selection.d.ts +34 -0
- package/scheduler/selection.js +39 -0
- package/scheduler/state.d.ts +296 -0
- package/scheduler/state.js +496 -0
- package/scheduler/time-grid-client.d.ts +32 -0
- package/scheduler/time-grid-client.jsx +133 -0
- package/scheduler/time-grid.d.ts +26 -0
- package/scheduler/time-grid.jsx +266 -0
- package/scheduler/time.d.ts +35 -0
- package/scheduler/time.js +56 -0
- package/scheduler/toolbar.d.ts +43 -0
- package/scheduler/toolbar.jsx +38 -0
- package/scroll-area/dom.d.ts +11 -0
- package/scroll-area/dom.js +55 -0
- package/scroll-area/index.d.ts +96 -0
- package/scroll-area/index.jsx +884 -0
- package/scroll-area/presence.d.ts +12 -0
- package/scroll-area/presence.jsx +131 -0
- package/scrolling/auto-size-virtual-scroll.d.ts +53 -0
- package/scrolling/auto-size-virtual-scroll.js +213 -0
- package/scrolling/behaviour.d.ts +3 -0
- package/scrolling/behaviour.js +5 -0
- package/scrolling/emitter.d.ts +34 -0
- package/scrolling/emitter.js +144 -0
- package/scrolling/fixed-size-virtual-scroll.d.ts +28 -0
- package/scrolling/fixed-size-virtual-scroll.js +107 -0
- package/scrolling/index.d.ts +11 -0
- package/scrolling/index.jsx +13 -0
- package/scrolling/rtl.d.ts +16 -0
- package/scrolling/rtl.js +64 -0
- package/scrolling/scroll-dispatcher.d.ts +49 -0
- package/scrolling/scroll-dispatcher.js +107 -0
- package/scrolling/scrollable.d.ts +75 -0
- package/scrolling/scrollable.js +149 -0
- package/scrolling/scrolling.css +11 -0
- package/scrolling/state.d.ts +92 -0
- package/scrolling/state.js +94 -0
- package/scrolling/viewport-ruler.d.ts +47 -0
- package/scrolling/viewport-ruler.js +100 -0
- package/scrolling/viewport.d.ts +54 -0
- package/scrolling/viewport.jsx +105 -0
- package/scrolling/virtual-scroll-strategy.d.ts +41 -0
- package/scrolling/virtual-scroll-strategy.js +2 -0
- package/scrolling/virtual-scroll-viewport.d.ts +95 -0
- package/scrolling/virtual-scroll-viewport.js +370 -0
- package/search-field/behaviour.d.ts +62 -0
- package/search-field/behaviour.jsx +116 -0
- package/search-field/index.d.ts +57 -0
- package/search-field/index.jsx +158 -0
- package/search-field/intl.d.ts +2 -0
- package/search-field/intl.js +36 -0
- package/select/behaviour.d.ts +188 -0
- package/select/behaviour.jsx +445 -0
- package/select/hidden-select.d.ts +44 -0
- package/select/hidden-select.jsx +68 -0
- package/select/index.d.ts +123 -0
- package/select/index.jsx +255 -0
- package/select/intl.d.ts +2 -0
- package/select/intl.js +36 -0
- package/select/parts.d.ts +11 -0
- package/select/parts.jsx +12 -0
- package/select/select-parts.d.ts +73 -0
- package/select/select-parts.jsx +293 -0
- package/select/select-value.d.ts +58 -0
- package/select/select-value.jsx +142 -0
- package/selection/dom-utils.d.ts +25 -0
- package/selection/dom-utils.js +77 -0
- package/selection/keyed.d.ts +19 -0
- package/selection/keyed.js +66 -0
- package/selection/list-keyboard-delegate.d.ts +67 -0
- package/selection/list-keyboard-delegate.js +274 -0
- package/selection/manager.d.ts +112 -0
- package/selection/manager.js +340 -0
- package/selection/selectable-collection.d.ts +123 -0
- package/selection/selectable-collection.js +560 -0
- package/selection/selectable-item.d.ts +128 -0
- package/selection/selectable-item.js +486 -0
- package/selection/selectable-list.d.ts +42 -0
- package/selection/selectable-list.js +34 -0
- package/selection/state.d.ts +96 -0
- package/selection/state.js +131 -0
- package/selection/type-select.d.ts +37 -0
- package/selection/type-select.js +114 -0
- package/selection/utils.d.ts +23 -0
- package/selection/utils.js +38 -0
- package/selection-indicator/context.d.ts +10 -0
- package/selection-indicator/context.js +7 -0
- package/selection-indicator/index.d.ts +20 -0
- package/selection-indicator/index.jsx +25 -0
- package/separator/behaviour.d.ts +17 -0
- package/separator/behaviour.js +17 -0
- package/separator/index.d.ts +23 -0
- package/separator/index.jsx +64 -0
- package/shared-element-transition/index.d.ts +36 -0
- package/shared-element-transition/index.jsx +182 -0
- package/shared-element-transition/transition.d.ts +19 -0
- package/shared-element-transition/transition.jsx +20 -0
- package/sheet-motion/index.d.ts +82 -0
- package/sheet-motion/index.js +386 -0
- package/sidebar/index.d.ts +257 -0
- package/sidebar/index.jsx +625 -0
- package/sidebar/pages.d.ts +71 -0
- package/sidebar/pages.jsx +177 -0
- package/sidebar/resize.d.ts +69 -0
- package/sidebar/resize.js +237 -0
- package/sidebar/sheet-motion.d.ts +15 -0
- package/sidebar/sheet-motion.js +170 -0
- package/sidebar/state.d.ts +126 -0
- package/sidebar/state.js +204 -0
- package/slider/behaviour.d.ts +141 -0
- package/slider/behaviour.jsx +492 -0
- package/slider/index.d.ts +171 -0
- package/slider/index.jsx +392 -0
- package/slider/state.d.ts +203 -0
- package/slider/state.js +377 -0
- package/slots/index.d.ts +248 -0
- package/slots/index.jsx +473 -0
- package/spinbutton/behaviour.d.ts +66 -0
- package/spinbutton/behaviour.jsx +312 -0
- package/spinbutton/intl.d.ts +2 -0
- package/spinbutton/intl.js +36 -0
- package/state/autocomplete.d.ts +26 -0
- package/state/autocomplete.js +32 -0
- package/state/calendar.d.ts +284 -0
- package/state/calendar.js +755 -0
- package/state/checkbox-group.d.ts +67 -0
- package/state/checkbox-group.js +76 -0
- package/state/combobox.d.ts +238 -0
- package/state/combobox.js +708 -0
- package/state/date-field.d.ts +407 -0
- package/state/date-field.js +1117 -0
- package/state/date-intl.d.ts +3 -0
- package/state/date-intl.js +36 -0
- package/state/date-picker.d.ts +144 -0
- package/state/date-picker.js +387 -0
- package/state/disclosure.d.ts +90 -0
- package/state/disclosure.js +148 -0
- package/state/form-validation.d.ts +89 -0
- package/state/form-validation.js +158 -0
- package/state/grid.d.ts +62 -0
- package/state/grid.js +127 -0
- package/state/list.d.ts +58 -0
- package/state/list.js +124 -0
- package/state/menu.d.ts +162 -0
- package/state/menu.js +185 -0
- package/state/overlays.d.ts +35 -0
- package/state/overlays.js +29 -0
- package/state/radio-group.d.ts +58 -0
- package/state/radio-group.js +68 -0
- package/state/search-field.d.ts +20 -0
- package/state/search-field.js +21 -0
- package/state/select.d.ts +150 -0
- package/state/select.js +187 -0
- package/state/selection.d.ts +3 -0
- package/state/selection.js +5 -0
- package/state/table-column-resize.d.ts +58 -0
- package/state/table-column-resize.js +76 -0
- package/state/table.d.ts +81 -0
- package/state/table.js +114 -0
- package/state/tabs.d.ts +85 -0
- package/state/tabs.js +161 -0
- package/state/time-field.d.ts +32 -0
- package/state/time-field.js +34 -0
- package/state/toast.d.ts +80 -0
- package/state/toast.js +146 -0
- package/state/toggle-group.d.ts +70 -0
- package/state/toggle-group.js +110 -0
- package/state/toggle.d.ts +40 -0
- package/state/toggle.js +39 -0
- package/state/tooltip.d.ts +53 -0
- package/state/tooltip.js +153 -0
- package/stepper/index.d.ts +117 -0
- package/stepper/index.jsx +405 -0
- package/stepper/state.d.ts +200 -0
- package/stepper/state.js +325 -0
- package/switch/behaviour.d.ts +12 -0
- package/switch/behaviour.jsx +9 -0
- package/switch/index.d.ts +150 -0
- package/switch/index.jsx +186 -0
- package/table/behaviour.d.ts +181 -0
- package/table/behaviour.js +334 -0
- package/table/collection.d.ts +49 -0
- package/table/collection.js +259 -0
- package/table/column-resize.d.ts +48 -0
- package/table/column-resize.jsx +247 -0
- package/table/index.d.ts +339 -0
- package/table/index.jsx +1326 -0
- package/table/intl.d.ts +2 -0
- package/table/intl.js +36 -0
- package/table/keyboard-delegate.d.ts +21 -0
- package/table/keyboard-delegate.js +166 -0
- package/table/rac-intl.d.ts +2 -0
- package/table/rac-intl.js +36 -0
- package/tabs/behaviour.d.ts +49 -0
- package/tabs/behaviour.js +173 -0
- package/tabs/index.d.ts +248 -0
- package/tabs/index.jsx +577 -0
- package/tabs/keyboard-delegate.d.ts +17 -0
- package/tabs/keyboard-delegate.js +64 -0
- package/tag-group/behaviour.d.ts +59 -0
- package/tag-group/behaviour.js +112 -0
- package/tag-group/index.d.ts +138 -0
- package/tag-group/index.jsx +565 -0
- package/tag-group/intl.d.ts +2 -0
- package/tag-group/intl.js +36 -0
- package/tailwind.css +12 -0
- package/tests-components/app/src/routes/index.d.ts +4 -0
- package/tests-components/app/src/routes/index.jsx +7 -0
- package/text/index.d.ts +15 -0
- package/text/index.jsx +61 -0
- package/text-area/index.d.ts +19 -0
- package/text-area/index.jsx +76 -0
- package/text-field/autosize.d.ts +70 -0
- package/text-field/autosize.js +355 -0
- package/text-field/behaviour.d.ts +140 -0
- package/text-field/behaviour.jsx +260 -0
- package/text-field/fields.d.ts +12 -0
- package/text-field/fields.js +20 -0
- package/text-field/index.d.ts +50 -0
- package/text-field/index.jsx +174 -0
- package/text-field/text-field.css +45 -0
- package/theme.css +1006 -0
- package/time-wheels/behaviour.d.ts +29 -0
- package/time-wheels/behaviour.js +156 -0
- package/time-wheels/index.d.ts +27 -0
- package/time-wheels/index.jsx +91 -0
- package/toast/behaviour.d.ts +51 -0
- package/toast/behaviour.jsx +273 -0
- package/toast/index.d.ts +94 -0
- package/toast/index.jsx +256 -0
- package/toast/intl.d.ts +2 -0
- package/toast/intl.js +36 -0
- package/toggle-button/behaviour.d.ts +15 -0
- package/toggle-button/behaviour.js +37 -0
- package/toggle-button/index.d.ts +59 -0
- package/toggle-button/index.jsx +206 -0
- package/toggle-button-group/behaviour.d.ts +19 -0
- package/toggle-button-group/behaviour.jsx +13 -0
- package/toggle-button-group/context.d.ts +7 -0
- package/toggle-button-group/context.js +9 -0
- package/toggle-button-group/index.d.ts +39 -0
- package/toggle-button-group/index.jsx +85 -0
- package/toggle-button-group/item.d.ts +30 -0
- package/toggle-button-group/item.jsx +37 -0
- package/toolbar/behaviour.d.ts +22 -0
- package/toolbar/behaviour.js +89 -0
- package/toolbar/index.d.ts +16 -0
- package/toolbar/index.jsx +67 -0
- package/tooltip/behaviour.d.ts +93 -0
- package/tooltip/behaviour.jsx +299 -0
- package/tooltip/index.d.ts +59 -0
- package/tooltip/index.jsx +193 -0
- package/tree/behaviour.d.ts +51 -0
- package/tree/behaviour.jsx +51 -0
- package/tree/cdk-index.d.ts +2 -0
- package/tree/cdk-index.js +6 -0
- package/tree/collection.d.ts +16 -0
- package/tree/collection.js +138 -0
- package/tree/control.d.ts +125 -0
- package/tree/control.js +166 -0
- package/tree/index.d.ts +154 -0
- package/tree/index.jsx +837 -0
- package/tree/intl.d.ts +2 -0
- package/tree/intl.js +36 -0
- package/tree/navigation-context.d.ts +44 -0
- package/tree/navigation-context.jsx +63 -0
- package/tree/tree-key-manager.d.ts +149 -0
- package/tree/tree-key-manager.js +336 -0
- package/utils/animation.d.ts +32 -0
- package/utils/animation.jsx +236 -0
- package/utils/data-attrs.d.ts +73 -0
- package/utils/data-attrs.jsx +217 -0
- package/utils/dev-off.d.ts +3 -0
- package/utils/dev-off.js +7 -0
- package/utils/dev-on.d.ts +3 -0
- package/utils/dev-on.js +17 -0
- package/utils/dom-props.d.ts +44 -0
- package/utils/dom-props.js +73 -0
- package/utils/dom.d.ts +85 -0
- package/utils/dom.js +402 -0
- package/utils/id.d.ts +23 -0
- package/utils/id.js +100 -0
- package/utils/index.d.ts +43 -0
- package/utils/index.js +160 -0
- package/utils/link-state.d.ts +6 -0
- package/utils/link-state.js +6 -0
- package/utils/links.d.ts +82 -0
- package/utils/links.jsx +150 -0
- package/utils/live-element.d.ts +8 -0
- package/utils/live-element.jsx +76 -0
- package/utils/live.d.ts +53 -0
- package/utils/live.jsx +169 -0
- package/utils/load-more-sentinel.d.ts +28 -0
- package/utils/load-more-sentinel.jsx +52 -0
- package/utils/motion-token.d.ts +4 -0
- package/utils/motion-token.js +48 -0
- package/utils/render.d.ts +19 -0
- package/utils/render.js +18 -0
- package/utils/transitions.d.ts +15 -0
- package/utils/transitions.js +104 -0
- package/utils/types.d.ts +111 -0
- package/utils/types.js +1 -0
- package/virtualizer/behaviour.d.ts +129 -0
- package/virtualizer/behaviour.js +437 -0
- package/virtualizer/collection-renderer.d.ts +62 -0
- package/virtualizer/collection-renderer.jsx +190 -0
- package/virtualizer/collection.d.ts +103 -0
- package/virtualizer/collection.js +155 -0
- package/virtualizer/dom.d.ts +50 -0
- package/virtualizer/dom.js +233 -0
- package/virtualizer/engine.d.ts +21 -0
- package/virtualizer/engine.js +21 -0
- package/virtualizer/grid-layout.d.ts +50 -0
- package/virtualizer/grid-layout.js +247 -0
- package/virtualizer/index.d.ts +3 -0
- package/virtualizer/index.jsx +5 -0
- package/virtualizer/layout-info.d.ts +33 -0
- package/virtualizer/layout-info.js +54 -0
- package/virtualizer/layout.d.ts +44 -0
- package/virtualizer/layout.js +30 -0
- package/virtualizer/list-layout.d.ts +103 -0
- package/virtualizer/list-layout.js +510 -0
- package/virtualizer/overscan-manager.d.ts +9 -0
- package/virtualizer/overscan-manager.js +32 -0
- package/virtualizer/point.d.ts +13 -0
- package/virtualizer/point.js +23 -0
- package/virtualizer/rect.d.ts +49 -0
- package/virtualizer/rect.js +105 -0
- package/virtualizer/reusable-view.d.ts +29 -0
- package/virtualizer/reusable-view.js +56 -0
- package/virtualizer/scroll-anchor.d.ts +62 -0
- package/virtualizer/scroll-anchor.js +130 -0
- package/virtualizer/size.d.ts +11 -0
- package/virtualizer/size.js +21 -0
- package/virtualizer/state.d.ts +35 -0
- package/virtualizer/state.js +89 -0
- package/virtualizer/table-collection.d.ts +45 -0
- package/virtualizer/table-collection.js +80 -0
- package/virtualizer/table-column-layout.d.ts +44 -0
- package/virtualizer/table-column-layout.js +210 -0
- package/virtualizer/table-layout.d.ts +55 -0
- package/virtualizer/table-layout.js +482 -0
- package/virtualizer/types.d.ts +63 -0
- package/virtualizer/types.js +1 -0
- package/virtualizer/utils.d.ts +2 -0
- package/virtualizer/utils.js +12 -0
- package/virtualizer/virtualizer-core.d.ts +61 -0
- package/virtualizer/virtualizer-core.js +304 -0
- package/virtualizer/virtualizer.d.ts +64 -0
- package/virtualizer/virtualizer.jsx +91 -0
- package/virtualizer/waterfall-layout.d.ts +41 -0
- package/virtualizer/waterfall-layout.js +227 -0
- package/wheel-picker/behaviour.d.ts +94 -0
- package/wheel-picker/behaviour.js +482 -0
- package/wheel-picker/index.d.ts +33 -0
- package/wheel-picker/index.jsx +66 -0
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
import { type SchedulerDate } from "./dates.js";
|
|
2
|
+
/** Views shipped in phase 1. */
|
|
3
|
+
export type SchedulerView = "month" | "week" | "day";
|
|
4
|
+
/** Semantic event colour (malva `tone`; `info` → `accent`). */
|
|
5
|
+
export type SchedulerEventColor = "default" | "accent" | "success" | "warning" | "danger";
|
|
6
|
+
/** One calendar event. Dates are `@rivetjs/cdk/date` values or their `DateValueString` (resumable state: strings). */
|
|
7
|
+
export interface SchedulerEvent<T = unknown> {
|
|
8
|
+
/** Stable identity; used for keys, focus restoration and model updates. */
|
|
9
|
+
id: string;
|
|
10
|
+
/** Visible title and the base of the accessible name. */
|
|
11
|
+
title: string;
|
|
12
|
+
/** Inclusive start. Midnight of the first day when `allDay`. */
|
|
13
|
+
start: SchedulerDate;
|
|
14
|
+
/** Exclusive end. `end <= start` is repaired to `start + defaultEventDuration` (timed) or one day (all-day). */
|
|
15
|
+
end: SchedulerDate;
|
|
16
|
+
/** Time parts are ignored; the event spans `startOfDay(start)` → `startOfDay(end)` (exclusive). */
|
|
17
|
+
allDay?: boolean;
|
|
18
|
+
/** Semantic colour. */
|
|
19
|
+
color?: SchedulerEventColor;
|
|
20
|
+
/** Any CSS colour; wins over `color`. */
|
|
21
|
+
cssColor?: string;
|
|
22
|
+
/** Per-event override; the scheduler-level `isReadOnly` still wins. Default `true`. */
|
|
23
|
+
isDraggable?: boolean;
|
|
24
|
+
/** Per-event override; the scheduler-level `isReadOnly` still wins. Default `true`. */
|
|
25
|
+
isResizable?: boolean;
|
|
26
|
+
/** Consumer payload, passed through untouched. */
|
|
27
|
+
data?: T;
|
|
28
|
+
}
|
|
29
|
+
/** The dates a move, a resize or a veto hook is asked about (malva `MlvSchedulerNextRange`). */
|
|
30
|
+
export interface SchedulerRange<D = SchedulerDate> {
|
|
31
|
+
/** Inclusive start. Midnight of the first day when `allDay`. */
|
|
32
|
+
start: D;
|
|
33
|
+
/** Exclusive end. Midnight of the day **after** the last one when `allDay`. */
|
|
34
|
+
end: D;
|
|
35
|
+
/** `true` renders the event in a lane (month grid / all-day row) instead of on the time axis. */
|
|
36
|
+
allDay: boolean;
|
|
37
|
+
}
|
|
38
|
+
/** A `SchedulerRange` on the layout axis (wall minutes). */
|
|
39
|
+
export type SchedulerLayoutRange = SchedulerRange<number>;
|
|
40
|
+
/** What triggered a change. */
|
|
41
|
+
export type SchedulerChangeSource = "pointer" | "keyboard";
|
|
42
|
+
/** Payload of `onEventMove` and `onEventResize`. */
|
|
43
|
+
export interface SchedulerEventChange<T = unknown> {
|
|
44
|
+
/** The updated event — a new object with the same `id`, already written to `events`. */
|
|
45
|
+
event: SchedulerEvent<T>;
|
|
46
|
+
/** The event's dates before the change. */
|
|
47
|
+
previous: SchedulerRange;
|
|
48
|
+
/** Whether a pointer gesture or a keyboard shortcut produced the change. */
|
|
49
|
+
source: SchedulerChangeSource;
|
|
50
|
+
}
|
|
51
|
+
/** Payload of `onEventAction`, `onEventDoubleClick`, `onEventContextMenu` and `onEventDelete`. */
|
|
52
|
+
export interface SchedulerEventInteraction<T = unknown> {
|
|
53
|
+
/** The event the chip renders, straight out of the `events` model. */
|
|
54
|
+
event: SchedulerEvent<T>;
|
|
55
|
+
/** The chip element — anchor for consumer menus and popovers. */
|
|
56
|
+
element: HTMLElement;
|
|
57
|
+
/**
|
|
58
|
+
* The originating DOM event: the `click` / `dblclick` / `contextmenu` `MouseEvent`, or the `KeyboardEvent` of
|
|
59
|
+
* `Enter` / `Space` (action), of the ContextMenu key / `Shift+F10` (context menu) or of `Delete` / `Backspace`
|
|
60
|
+
* (`onEventDelete`, always prevented). On a `contextmenu` `MouseEvent`, `defaultPrevented` is `true` only when
|
|
61
|
+
* `renderEventMenu` opened the built-in menu on it. A context-menu `KeyboardEvent` is always prevented.
|
|
62
|
+
*/
|
|
63
|
+
nativeEvent: MouseEvent | KeyboardEvent;
|
|
64
|
+
}
|
|
65
|
+
/** Payload of `onSlotAction`, `onSlotDoubleClick` and `onSlotContextMenu`. */
|
|
66
|
+
export interface SchedulerSlotEvent<D = SchedulerDate> {
|
|
67
|
+
/** Slot start (time grid) or the day (month grid / all-day row). */
|
|
68
|
+
date: D;
|
|
69
|
+
/** `true` for a month cell or an all-day cell, `false` for a time slot. */
|
|
70
|
+
allDay: boolean;
|
|
71
|
+
/** The cell or slot element that was activated. */
|
|
72
|
+
element: HTMLElement;
|
|
73
|
+
/** The originating DOM event (see `SchedulerEventInteraction.nativeEvent`). */
|
|
74
|
+
nativeEvent: MouseEvent | KeyboardEvent;
|
|
75
|
+
}
|
|
76
|
+
/** Payload of `onRangeSelect`. */
|
|
77
|
+
export interface SchedulerRangeSelectEvent<D = SchedulerDate> {
|
|
78
|
+
/** Inclusive start of the first selected slot or day. */
|
|
79
|
+
start: D;
|
|
80
|
+
/** Exclusive: the end of the last selected slot, or midnight after the last selected day. */
|
|
81
|
+
end: D;
|
|
82
|
+
/** `true` when the selection ran over month cells or the all-day row. */
|
|
83
|
+
allDay: boolean;
|
|
84
|
+
/** Whether a pointer drag or `Shift+Arrow` + `Enter` produced the selection. */
|
|
85
|
+
source: SchedulerChangeSource;
|
|
86
|
+
}
|
|
87
|
+
/** Payload of `onExternalDrop` — a cdk drag-drop item from a list connected through `dropGroup`. */
|
|
88
|
+
export interface SchedulerExternalDropEvent<D = SchedulerDate, I = unknown> {
|
|
89
|
+
/** The dragged item's `data`; the scheduler never moves the item out of its own list. */
|
|
90
|
+
item: I;
|
|
91
|
+
/** Start of the slot or day the item was dropped on. */
|
|
92
|
+
start: D;
|
|
93
|
+
/** `start + defaultEventDuration` for a timed target, `start + 1 day` for an all-day target. */
|
|
94
|
+
end: D;
|
|
95
|
+
/** `true` when the drop landed on a month cell or the all-day row. */
|
|
96
|
+
allDay: boolean;
|
|
97
|
+
}
|
|
98
|
+
/** The rendered period. */
|
|
99
|
+
export interface SchedulerVisibleRange<D = SchedulerDate> {
|
|
100
|
+
/** The view the range was computed for. */
|
|
101
|
+
view: SchedulerView;
|
|
102
|
+
/** Inclusive start of the first rendered day. */
|
|
103
|
+
start: D;
|
|
104
|
+
/** Exclusive: start of the day after the last rendered day. */
|
|
105
|
+
end: D;
|
|
106
|
+
}
|
|
107
|
+
/** A `SchedulerVisibleRange` in day numbers. */
|
|
108
|
+
export type SchedulerDayRange = SchedulerVisibleRange<number>;
|
|
109
|
+
/** Working-hours shading for the time grid. */
|
|
110
|
+
export interface SchedulerBusinessHours {
|
|
111
|
+
/** `'HH:mm'`. */
|
|
112
|
+
start: string;
|
|
113
|
+
/** `'HH:mm'`; `'24:00'` allowed. */
|
|
114
|
+
end: string;
|
|
115
|
+
/** Weekdays (0 = Sunday). Default Monday–Friday. */
|
|
116
|
+
days?: readonly number[];
|
|
117
|
+
}
|
|
118
|
+
/** Veto hook for moves and resizes. Return `false` to snap back without emitting. */
|
|
119
|
+
export type SchedulerCanChange<T = unknown> = (event: SchedulerEvent<T>, next: SchedulerRange) => boolean;
|
|
120
|
+
/** Payload of `onMoreAction` (malva `moreClick`). */
|
|
121
|
+
export interface SchedulerMoreEvent<T = unknown, D = SchedulerDate> {
|
|
122
|
+
/** The day whose cell overflowed. */
|
|
123
|
+
date: D;
|
|
124
|
+
/**
|
|
125
|
+
* The day's hidden events (the ones behind the button), in render order. Deviation: malva's type doc says "hidden and
|
|
126
|
+
* visible alike"; its implementation and spec emit the hidden ones — kept.
|
|
127
|
+
*/
|
|
128
|
+
events: readonly SchedulerEvent<T>[];
|
|
129
|
+
}
|
|
130
|
+
/** An event with its dates read (wall minutes), repaired and all-day snapping applied. */
|
|
131
|
+
export interface SchedulerNormalizedEvent<T = unknown> {
|
|
132
|
+
readonly event: SchedulerEvent<T>;
|
|
133
|
+
/** Wall minutes. */
|
|
134
|
+
readonly start: number;
|
|
135
|
+
/** Wall minutes, exclusive, strictly after `start`. */
|
|
136
|
+
readonly end: number;
|
|
137
|
+
readonly allDay: boolean;
|
|
138
|
+
/** Set on the drag preview copy rendered while a pointer drag is in progress. */
|
|
139
|
+
readonly ghost?: boolean;
|
|
140
|
+
}
|
|
141
|
+
/** A run of consecutive visible days inside one row (month week row or the all-day row). */
|
|
142
|
+
export interface SchedulerRowSegment<T = unknown> {
|
|
143
|
+
/** `${event.id}:r${startIndex}` — stable per rendered segment. */
|
|
144
|
+
readonly key: string;
|
|
145
|
+
readonly normalized: SchedulerNormalizedEvent<T>;
|
|
146
|
+
/** Inclusive index into the visible-days array. */
|
|
147
|
+
readonly startIndex: number;
|
|
148
|
+
/** Inclusive. */
|
|
149
|
+
readonly endIndex: number;
|
|
150
|
+
/** The event started before this segment's first day. */
|
|
151
|
+
readonly continuesBefore: boolean;
|
|
152
|
+
/** The event ends after this segment's last day. */
|
|
153
|
+
readonly continuesAfter: boolean;
|
|
154
|
+
}
|
|
155
|
+
/** One day's slice of a timed event, clipped to the visible hours. */
|
|
156
|
+
export interface SchedulerColumnSegment<T = unknown> {
|
|
157
|
+
/** `${event.id}:c${dayIndex}`. */
|
|
158
|
+
readonly key: string;
|
|
159
|
+
readonly normalized: SchedulerNormalizedEvent<T>;
|
|
160
|
+
readonly dayIndex: number;
|
|
161
|
+
/** Minutes of day, already clipped to `[minMinutes, maxMinutes]`. */
|
|
162
|
+
readonly startMinutes: number;
|
|
163
|
+
readonly endMinutes: number;
|
|
164
|
+
readonly continuesBefore: boolean;
|
|
165
|
+
readonly continuesAfter: boolean;
|
|
166
|
+
}
|
|
167
|
+
/** Start (day number) of the week containing `day` (`firstDayOfWeek`: 0 = Sunday). */
|
|
168
|
+
export declare function startOfWeek(day: number, firstDayOfWeek: number): number;
|
|
169
|
+
/** The rendered period (day numbers) for `view` anchored at `day`. */
|
|
170
|
+
export declare function computeVisibleRange(view: SchedulerView, day: number, firstDayOfWeek: number): SchedulerDayRange;
|
|
171
|
+
/**
|
|
172
|
+
* The weekday indices in `hiddenDays` that can actually hide a rendered day: `dayOfWeek` only ever returns an
|
|
173
|
+
* integer `0`–`6`, so anything else is dropped. A set covering **every** weekday is ignored rather than rendering
|
|
174
|
+
* an empty grid — `visibleDays`, `rowLength`, `nextVisibleDate` and the month keyboard handler share this repair so
|
|
175
|
+
* they can never disagree about how wide a week row is or which columns exist.
|
|
176
|
+
*/
|
|
177
|
+
export declare function hiddenWeekdays(hiddenDays: readonly number[]): ReadonlySet<number>;
|
|
178
|
+
/** Every day in `range`, in order, minus the hidden weekdays. A `hiddenDays` covering all seven weekdays is ignored. */
|
|
179
|
+
export declare function visibleDays(range: SchedulerDayRange, hiddenDays: readonly number[]): readonly number[];
|
|
180
|
+
/** Visible days per week row; never `0`, so a row loop always terminates. */
|
|
181
|
+
export declare function rowLength(hiddenDays: readonly number[]): number;
|
|
182
|
+
/** Index of the visible day `day` (a day number), or `-1`. */
|
|
183
|
+
export declare function dayIndexOf(days: readonly number[], day: number): number;
|
|
184
|
+
/**
|
|
185
|
+
* Reads the event dates on the wall clock of `timeZone`, repairs `end <= start` and snaps all-day events to day
|
|
186
|
+
* boundaries. `null` when a date does not parse.
|
|
187
|
+
*/
|
|
188
|
+
export declare function normalizeEvent<T>(event: SchedulerEvent<T>, defaultEventDuration: number, timeZone?: string): SchedulerNormalizedEvent<T> | null;
|
|
189
|
+
/** `normalizeEvent` over a list, dropping events whose dates do not parse. */
|
|
190
|
+
export declare function normalizeEvents<T>(events: readonly SchedulerEvent<T>[], defaultEventDuration: number, timeZone?: string): SchedulerNormalizedEvent<T>[];
|
|
191
|
+
/**
|
|
192
|
+
* All-day events and timed events covering a full day or more live in lanes, not on the time axis. The span is
|
|
193
|
+
* measured on the wall clock (layout minutes are wall minutes), so a 00:00 → 24:00 event on a DST day still covers
|
|
194
|
+
* the whole day.
|
|
195
|
+
*/
|
|
196
|
+
export declare function isLaneEvent<T>(normalized: SchedulerNormalizedEvent<T>): boolean;
|
|
197
|
+
/** Last calendar day (day number) the event touches (an exclusive midnight end does not touch the next day). */
|
|
198
|
+
export declare function lastDayOf<T>(normalized: SchedulerNormalizedEvent<T>): number;
|
|
199
|
+
/** Whether the event touches more than one calendar day. */
|
|
200
|
+
export declare function spansMultipleDays<T>(normalized: SchedulerNormalizedEvent<T>): boolean;
|
|
201
|
+
/**
|
|
202
|
+
* Slices events into row segments over `days`, splitting at every `rowWidth` boundary (`rowLength(hiddenDays)` days
|
|
203
|
+
* for a month grid, `days.length` for a single row). `only: 'lane'` keeps all-day / ≥ 24 h events (the time grid's
|
|
204
|
+
* all-day row); `'all'` keeps every event (the month grid).
|
|
205
|
+
*/
|
|
206
|
+
export declare function sliceRows<T>(events: readonly SchedulerNormalizedEvent<T>[], days: readonly number[], rowWidth: number, only: "all" | "lane"): SchedulerRowSegment<T>[];
|
|
207
|
+
/** Slices timed (non-lane) events into per-day column segments clipped to `[minMinutes, maxMinutes]`. */
|
|
208
|
+
export declare function sliceColumns<T>(events: readonly SchedulerNormalizedEvent<T>[], days: readonly number[], minMinutes: number, maxMinutes: number): SchedulerColumnSegment<T>[];
|
|
209
|
+
/** A row segment with its lane assigned. */
|
|
210
|
+
export interface SchedulerLaneSegment<T = unknown> extends SchedulerRowSegment<T> {
|
|
211
|
+
readonly lane: number;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* First-fit lane packing. Segments are ordered by first day, then by **descending** span (the longest bar in a row
|
|
215
|
+
* takes the top lane), then all-day before timed, then by start time, then by event id — so the result is
|
|
216
|
+
* deterministic for any input order. The returned array is in that order, not the input's; the input is left
|
|
217
|
+
* untouched.
|
|
218
|
+
*/
|
|
219
|
+
export declare function assignLanes<T>(segments: readonly SchedulerRowSegment<T>[]): SchedulerLaneSegment<T>[];
|
|
220
|
+
/** What a row renders once lanes past `visibleLanes` collapse into "+N more". */
|
|
221
|
+
export interface SchedulerRowLayout<T = unknown> {
|
|
222
|
+
/** Segments the row draws, in `assignLanes` order. Empty when no lane fits. */
|
|
223
|
+
readonly visible: readonly SchedulerLaneSegment<T>[];
|
|
224
|
+
/** Day index → hidden segments covering that day (rendering order). Only days with hidden events are present. */
|
|
225
|
+
readonly hiddenByDay: ReadonlyMap<number, readonly SchedulerLaneSegment<T>[]>;
|
|
226
|
+
/** Lanes the row would need without a budget — `0` for an empty row. */
|
|
227
|
+
readonly laneCount: number;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Applies a per-row lane budget. When the row needs more lanes than `visibleLanes`, the last visible lane is given
|
|
231
|
+
* to the "+N more" button, so lanes `>= visibleLanes − 1` are hidden everywhere in the row.
|
|
232
|
+
*
|
|
233
|
+
* Precondition: `segments` carries the `lane` numbers `assignLanes` produced for **one** row — the budget is applied
|
|
234
|
+
* per row, and `hiddenByDay` is keyed by day index within that row. A `visibleLanes` of `1` or less hides
|
|
235
|
+
* everything, leaving the row to its "+N more" button alone.
|
|
236
|
+
*/
|
|
237
|
+
export declare function layoutRow<T>(segments: readonly SchedulerLaneSegment<T>[], visibleLanes: number): SchedulerRowLayout<T>;
|
|
238
|
+
/** A column segment with its side-by-side placement. */
|
|
239
|
+
export interface SchedulerClusteredSegment<T = unknown> extends SchedulerColumnSegment<T> {
|
|
240
|
+
/** Zero-based column inside the overlap cluster. */
|
|
241
|
+
readonly column: number;
|
|
242
|
+
/** Column count of the cluster (width = 100% / columns). */
|
|
243
|
+
readonly columns: number;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Sweep-line overlap clustering per day column. Touching segments do not overlap.
|
|
247
|
+
*
|
|
248
|
+
* Drag-preview ghosts (`normalized.ghost`) take no part in the packing and are appended last with `column: 0,
|
|
249
|
+
* columns: 1` — full width, over their siblings — so a preview never resizes the events it is dragged across, and
|
|
250
|
+
* the event being dragged keeps the geometry it had before the drag started.
|
|
251
|
+
*/
|
|
252
|
+
export declare function clusterColumns<T>(segments: readonly SchedulerColumnSegment<T>[]): SchedulerClusteredSegment<T>[];
|
|
253
|
+
/** Where a drag ended. */
|
|
254
|
+
export interface SchedulerDropTarget {
|
|
255
|
+
/** Index into the view's visible-days array; clamped into range by the resolvers. */
|
|
256
|
+
readonly dayIndex: number;
|
|
257
|
+
/**
|
|
258
|
+
* Snapped minutes of day for a time-column target, `null` for a day cell (a month cell or the all-day row), which
|
|
259
|
+
* keeps the event's own time of day.
|
|
260
|
+
*/
|
|
261
|
+
readonly minutes: number | null;
|
|
262
|
+
/** `true` / `false` convert the event's kind; `null` keeps the event's own kind. */
|
|
263
|
+
readonly allDay: boolean | null;
|
|
264
|
+
}
|
|
265
|
+
/** Whole calendar days an all-day event covers. */
|
|
266
|
+
export declare function daySpan<T>(normalized: SchedulerNormalizedEvent<T>): number;
|
|
267
|
+
/** Resolves a drop: keeps duration, converts kind when the target says so, keeps time-of-day for day-cell targets. */
|
|
268
|
+
export declare function resolveMove<T>(normalized: SchedulerNormalizedEvent<T>, target: SchedulerDropTarget, days: readonly number[], defaultEventDuration: number): SchedulerLayoutRange;
|
|
269
|
+
/** Which edge of an event a resize gesture drags. */
|
|
270
|
+
export type SchedulerResizeEdge = "start" | "end";
|
|
271
|
+
/**
|
|
272
|
+
* Resolves a resize of one edge. Lane targets (`minutes === null`) resize by whole days; time targets by minutes. The
|
|
273
|
+
* opposite edge never moves, and the result is clamped so the event keeps at least one snap step (one day for an
|
|
274
|
+
* all-day bar).
|
|
275
|
+
*/
|
|
276
|
+
export declare function resolveResize<T>(normalized: SchedulerNormalizedEvent<T>, target: {
|
|
277
|
+
readonly dayIndex: number;
|
|
278
|
+
readonly minutes: number | null;
|
|
279
|
+
}, days: readonly number[], snapDuration: number, edge?: SchedulerResizeEdge): SchedulerLayoutRange;
|
|
280
|
+
/**
|
|
281
|
+
* The next calendar day (day number) in `direction` that is not a hidden weekday (at most 7 steps away).
|
|
282
|
+
* `hiddenDays` goes through `hiddenWeekdays()`, so this agrees with what the grid renders: an all-seven set is
|
|
283
|
+
* ignored, out-of-range entries are dropped.
|
|
284
|
+
*/
|
|
285
|
+
export declare function nextVisibleDate(from: number, direction: -1 | 1, hiddenDays: readonly number[]): number;
|
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
// Ported from @malva-ui/scheduler (src/lib/layout/scheduler-layout.ts, src/lib/layout/scheduler-focus.ts
|
|
2
|
+
// `nextVisibleDate`, src/lib/scheduler/scheduler.types.ts), MIT, © 2026 Malva UI.
|
|
3
|
+
// Rivet:
|
|
4
|
+
// - Same functions and names minus the `Mlv` prefix, over integers instead of `MlvDateAdapter<D>` dates: days are
|
|
5
|
+
// day numbers (`dates.ts`), event times are wall minutes (`day * 1440 + minute`). Adapter calls map 1:1
|
|
6
|
+
// (`addCalendarDays` → `+ n`, `startOfDay` → `dayOf`, `compareDate*` → integer compare, `getDayOfWeek` →
|
|
7
|
+
// `dayOfWeek`, …; table in `scheduler/CLAUDE.md`), so the layout never touches a date object.
|
|
8
|
+
// - `normalizeEvent(event, defaultEventDuration, timeZone)` reads the event dates once (`toWallMinutes`); an
|
|
9
|
+
// unparsable date returns `null` (malva: Invalid Date propagates) and `normalizeEvents` drops it.
|
|
10
|
+
// - Sort keys are numeric (lane / cluster order unchanged: first day, span desc, all-day first, start, id).
|
|
11
|
+
// - Public types (malva `scheduler.types.ts`) live here: `SchedulerEvent.tone` → `color` (`info` → `accent`),
|
|
12
|
+
// `color` → `cssColor`, `draggable` / `resizable` → `isDraggable` / `isResizable` (RAC naming).
|
|
13
|
+
// Deviation: wall-clock arithmetic — a moved timed event keeps its wall-clock duration (malva: elapsed minutes;
|
|
14
|
+
// the two differ only across a DST shift inside the event).
|
|
15
|
+
import { dayOf, dayOfWeek, toWallMinutes, civilFromDay, dayFromCivil } from "./dates.js";
|
|
16
|
+
import { MINUTES_PER_DAY } from "./time.js";
|
|
17
|
+
/** Start (day number) of the week containing `day` (`firstDayOfWeek`: 0 = Sunday). */
|
|
18
|
+
export function startOfWeek(day, firstDayOfWeek) {
|
|
19
|
+
return day - ((dayOfWeek(day) - firstDayOfWeek + 7) % 7);
|
|
20
|
+
}
|
|
21
|
+
/** The rendered period (day numbers) for `view` anchored at `day`. */
|
|
22
|
+
export function computeVisibleRange(view, day, firstDayOfWeek) {
|
|
23
|
+
switch (view) {
|
|
24
|
+
case "month": {
|
|
25
|
+
const [year, month] = civilFromDay(day);
|
|
26
|
+
const first = dayFromCivil(year, month, 1);
|
|
27
|
+
const last = (month === 12 ? dayFromCivil(year + 1, 1, 1) : dayFromCivil(year, month + 1, 1)) - 1;
|
|
28
|
+
return { view, start: startOfWeek(first, firstDayOfWeek), end: startOfWeek(last, firstDayOfWeek) + 7 };
|
|
29
|
+
}
|
|
30
|
+
case "week": {
|
|
31
|
+
const start = startOfWeek(day, firstDayOfWeek);
|
|
32
|
+
return { view, start, end: start + 7 };
|
|
33
|
+
}
|
|
34
|
+
case "day":
|
|
35
|
+
return { view, start: day, end: day + 1 };
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The weekday indices in `hiddenDays` that can actually hide a rendered day: `dayOfWeek` only ever returns an
|
|
40
|
+
* integer `0`–`6`, so anything else is dropped. A set covering **every** weekday is ignored rather than rendering
|
|
41
|
+
* an empty grid — `visibleDays`, `rowLength`, `nextVisibleDate` and the month keyboard handler share this repair so
|
|
42
|
+
* they can never disagree about how wide a week row is or which columns exist.
|
|
43
|
+
*/
|
|
44
|
+
export function hiddenWeekdays(hiddenDays) {
|
|
45
|
+
const hidden = new Set(hiddenDays.filter((day) => Number.isInteger(day) && day >= 0 && day <= 6));
|
|
46
|
+
return hidden.size >= 7 ? new Set() : hidden;
|
|
47
|
+
}
|
|
48
|
+
/** Every day in `range`, in order, minus the hidden weekdays. A `hiddenDays` covering all seven weekdays is ignored. */
|
|
49
|
+
export function visibleDays(range, hiddenDays) {
|
|
50
|
+
const hidden = hiddenWeekdays(hiddenDays);
|
|
51
|
+
const days = [];
|
|
52
|
+
for (let cursor = range.start; cursor < range.end; cursor++)
|
|
53
|
+
if (!hidden.has(dayOfWeek(cursor)))
|
|
54
|
+
days.push(cursor);
|
|
55
|
+
return days;
|
|
56
|
+
}
|
|
57
|
+
/** Visible days per week row; never `0`, so a row loop always terminates. */
|
|
58
|
+
export function rowLength(hiddenDays) {
|
|
59
|
+
return 7 - hiddenWeekdays(hiddenDays).size;
|
|
60
|
+
}
|
|
61
|
+
/** Index of the visible day `day` (a day number), or `-1`. */
|
|
62
|
+
export function dayIndexOf(days, day) {
|
|
63
|
+
return days.indexOf(day);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Reads the event dates on the wall clock of `timeZone`, repairs `end <= start` and snaps all-day events to day
|
|
67
|
+
* boundaries. `null` when a date does not parse.
|
|
68
|
+
*/
|
|
69
|
+
export function normalizeEvent(event, defaultEventDuration, timeZone = "UTC") {
|
|
70
|
+
const s = toWallMinutes(event.start, timeZone);
|
|
71
|
+
const e = toWallMinutes(event.end, timeZone);
|
|
72
|
+
if (s === null || e === null)
|
|
73
|
+
return null;
|
|
74
|
+
if (event.allDay) {
|
|
75
|
+
const start = dayOf(s) * MINUTES_PER_DAY;
|
|
76
|
+
let end = dayOf(e) * MINUTES_PER_DAY;
|
|
77
|
+
if (end <= start)
|
|
78
|
+
end = start + MINUTES_PER_DAY;
|
|
79
|
+
return { event, start, end, allDay: true };
|
|
80
|
+
}
|
|
81
|
+
return { event, start: s, end: e <= s ? s + defaultEventDuration : e, allDay: false };
|
|
82
|
+
}
|
|
83
|
+
/** `normalizeEvent` over a list, dropping events whose dates do not parse. */
|
|
84
|
+
export function normalizeEvents(events, defaultEventDuration, timeZone = "UTC") {
|
|
85
|
+
const out = [];
|
|
86
|
+
for (const event of events) {
|
|
87
|
+
const normalized = normalizeEvent(event, defaultEventDuration, timeZone);
|
|
88
|
+
if (normalized)
|
|
89
|
+
out.push(normalized);
|
|
90
|
+
}
|
|
91
|
+
return out;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* All-day events and timed events covering a full day or more live in lanes, not on the time axis. The span is
|
|
95
|
+
* measured on the wall clock (layout minutes are wall minutes), so a 00:00 → 24:00 event on a DST day still covers
|
|
96
|
+
* the whole day.
|
|
97
|
+
*/
|
|
98
|
+
export function isLaneEvent(normalized) {
|
|
99
|
+
return normalized.allDay || normalized.end - normalized.start >= MINUTES_PER_DAY;
|
|
100
|
+
}
|
|
101
|
+
/** Last calendar day (day number) the event touches (an exclusive midnight end does not touch the next day). */
|
|
102
|
+
export function lastDayOf(normalized) {
|
|
103
|
+
return normalized.allDay ? dayOf(normalized.end) - 1 : dayOf(normalized.end - 1);
|
|
104
|
+
}
|
|
105
|
+
/** Whether the event touches more than one calendar day. */
|
|
106
|
+
export function spansMultipleDays(normalized) {
|
|
107
|
+
return lastDayOf(normalized) > dayOf(normalized.start);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Slices events into row segments over `days`, splitting at every `rowWidth` boundary (`rowLength(hiddenDays)` days
|
|
111
|
+
* for a month grid, `days.length` for a single row). `only: 'lane'` keeps all-day / ≥ 24 h events (the time grid's
|
|
112
|
+
* all-day row); `'all'` keeps every event (the month grid).
|
|
113
|
+
*/
|
|
114
|
+
export function sliceRows(events, days, rowWidth, only) {
|
|
115
|
+
const segments = [];
|
|
116
|
+
const count = days.length;
|
|
117
|
+
if (count === 0)
|
|
118
|
+
return segments;
|
|
119
|
+
const lastVisible = days[count - 1];
|
|
120
|
+
const firstVisible = days[0];
|
|
121
|
+
for (const normalized of events) {
|
|
122
|
+
if (only === "lane" && !isLaneEvent(normalized))
|
|
123
|
+
continue;
|
|
124
|
+
const firstDay = dayOf(normalized.start);
|
|
125
|
+
const lastDay = lastDayOf(normalized);
|
|
126
|
+
if (lastDay < firstVisible || firstDay > lastVisible)
|
|
127
|
+
continue;
|
|
128
|
+
let runStart = -1;
|
|
129
|
+
for (let index = 0; index < count; index++) {
|
|
130
|
+
const day = days[index];
|
|
131
|
+
if (day < firstDay || day > lastDay) {
|
|
132
|
+
if (runStart >= 0) {
|
|
133
|
+
segments.push(rowSegment(normalized, runStart, index - 1, firstDay, lastDay, days));
|
|
134
|
+
runStart = -1;
|
|
135
|
+
}
|
|
136
|
+
if (day > lastDay)
|
|
137
|
+
break;
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
if (runStart < 0)
|
|
141
|
+
runStart = index;
|
|
142
|
+
if (index % rowWidth === rowWidth - 1) {
|
|
143
|
+
segments.push(rowSegment(normalized, runStart, index, firstDay, lastDay, days));
|
|
144
|
+
runStart = -1;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
if (runStart >= 0)
|
|
148
|
+
segments.push(rowSegment(normalized, runStart, count - 1, firstDay, lastDay, days));
|
|
149
|
+
}
|
|
150
|
+
return segments;
|
|
151
|
+
}
|
|
152
|
+
function rowSegment(normalized, startIndex, endIndex, firstDay, lastDay, days) {
|
|
153
|
+
return {
|
|
154
|
+
key: normalized.event.id + ":r" + startIndex,
|
|
155
|
+
normalized,
|
|
156
|
+
startIndex,
|
|
157
|
+
endIndex,
|
|
158
|
+
continuesBefore: firstDay < days[startIndex],
|
|
159
|
+
continuesAfter: lastDay > days[endIndex],
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
/** Slices timed (non-lane) events into per-day column segments clipped to `[minMinutes, maxMinutes]`. */
|
|
163
|
+
export function sliceColumns(events, days, minMinutes, maxMinutes) {
|
|
164
|
+
const segments = [];
|
|
165
|
+
for (const normalized of events) {
|
|
166
|
+
if (isLaneEvent(normalized))
|
|
167
|
+
continue;
|
|
168
|
+
// The same "last day touched" the row slicer uses: an exclusive midnight end does not reach the next day, and
|
|
169
|
+
// no segment is produced there.
|
|
170
|
+
const lastDay = lastDayOf(normalized);
|
|
171
|
+
const startDay = dayOf(normalized.start);
|
|
172
|
+
const endDay = dayOf(normalized.end);
|
|
173
|
+
for (let dayIndex = 0; dayIndex < days.length; dayIndex++) {
|
|
174
|
+
const day = days[dayIndex];
|
|
175
|
+
if (startDay > day || endDay < day)
|
|
176
|
+
continue;
|
|
177
|
+
const segStart = startDay === day ? normalized.start - day * MINUTES_PER_DAY : 0;
|
|
178
|
+
const segEnd = endDay === day ? normalized.end - day * MINUTES_PER_DAY : MINUTES_PER_DAY;
|
|
179
|
+
if (segEnd <= segStart)
|
|
180
|
+
continue;
|
|
181
|
+
const startMinutes = Math.max(segStart, minMinutes);
|
|
182
|
+
const endMinutes = Math.min(segEnd, maxMinutes);
|
|
183
|
+
if (endMinutes <= startMinutes)
|
|
184
|
+
continue;
|
|
185
|
+
segments.push({
|
|
186
|
+
key: normalized.event.id + ":c" + dayIndex,
|
|
187
|
+
normalized,
|
|
188
|
+
dayIndex,
|
|
189
|
+
startMinutes,
|
|
190
|
+
endMinutes,
|
|
191
|
+
continuesBefore: startDay < day || segStart < startMinutes,
|
|
192
|
+
continuesAfter: lastDay > day || segEnd > endMinutes,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return segments;
|
|
197
|
+
}
|
|
198
|
+
function compareIds(a, b) {
|
|
199
|
+
return a < b ? -1 : a > b ? 1 : 0;
|
|
200
|
+
}
|
|
201
|
+
function laneSortKey(a, b) {
|
|
202
|
+
if (a.startIndex !== b.startIndex)
|
|
203
|
+
return a.startIndex - b.startIndex;
|
|
204
|
+
const spanA = a.endIndex - a.startIndex;
|
|
205
|
+
const spanB = b.endIndex - b.startIndex;
|
|
206
|
+
if (spanA !== spanB)
|
|
207
|
+
return spanB - spanA;
|
|
208
|
+
if (a.normalized.allDay !== b.normalized.allDay)
|
|
209
|
+
return a.normalized.allDay ? -1 : 1;
|
|
210
|
+
const byStart = a.normalized.start - b.normalized.start;
|
|
211
|
+
if (byStart !== 0)
|
|
212
|
+
return byStart;
|
|
213
|
+
return compareIds(a.normalized.event.id, b.normalized.event.id);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* First-fit lane packing. Segments are ordered by first day, then by **descending** span (the longest bar in a row
|
|
217
|
+
* takes the top lane), then all-day before timed, then by start time, then by event id — so the result is
|
|
218
|
+
* deterministic for any input order. The returned array is in that order, not the input's; the input is left
|
|
219
|
+
* untouched.
|
|
220
|
+
*/
|
|
221
|
+
export function assignLanes(segments) {
|
|
222
|
+
const sorted = [...segments].sort(laneSortKey);
|
|
223
|
+
// Per lane: the last occupied day index. Segments arrive by ascending start, so a lane is free for a segment
|
|
224
|
+
// exactly when its last occupied index lies before the segment's start (same verdict as malva's interval scan).
|
|
225
|
+
const laneEnds = [];
|
|
226
|
+
return sorted.map((segment) => {
|
|
227
|
+
let lane = 0;
|
|
228
|
+
while (lane < laneEnds.length && laneEnds[lane] >= segment.startIndex)
|
|
229
|
+
lane++;
|
|
230
|
+
laneEnds[lane] = segment.endIndex;
|
|
231
|
+
return { ...segment, lane };
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Applies a per-row lane budget. When the row needs more lanes than `visibleLanes`, the last visible lane is given
|
|
236
|
+
* to the "+N more" button, so lanes `>= visibleLanes − 1` are hidden everywhere in the row.
|
|
237
|
+
*
|
|
238
|
+
* Precondition: `segments` carries the `lane` numbers `assignLanes` produced for **one** row — the budget is applied
|
|
239
|
+
* per row, and `hiddenByDay` is keyed by day index within that row. A `visibleLanes` of `1` or less hides
|
|
240
|
+
* everything, leaving the row to its "+N more" button alone.
|
|
241
|
+
*/
|
|
242
|
+
export function layoutRow(segments, visibleLanes) {
|
|
243
|
+
let laneCount = 0;
|
|
244
|
+
for (const segment of segments)
|
|
245
|
+
if (segment.lane + 1 > laneCount)
|
|
246
|
+
laneCount = segment.lane + 1;
|
|
247
|
+
if (laneCount <= visibleLanes)
|
|
248
|
+
return { visible: segments, hiddenByDay: new Map(), laneCount };
|
|
249
|
+
const threshold = Math.max(0, visibleLanes - 1);
|
|
250
|
+
const visible = [];
|
|
251
|
+
const hiddenByDay = new Map();
|
|
252
|
+
for (const segment of segments) {
|
|
253
|
+
if (segment.lane < threshold) {
|
|
254
|
+
visible.push(segment);
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
257
|
+
for (let day = segment.startIndex; day <= segment.endIndex; day++) {
|
|
258
|
+
const list = hiddenByDay.get(day);
|
|
259
|
+
if (list)
|
|
260
|
+
list.push(segment);
|
|
261
|
+
else
|
|
262
|
+
hiddenByDay.set(day, [segment]);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
return { visible, hiddenByDay, laneCount };
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Sweep-line overlap clustering per day column. Touching segments do not overlap.
|
|
269
|
+
*
|
|
270
|
+
* Drag-preview ghosts (`normalized.ghost`) take no part in the packing and are appended last with `column: 0,
|
|
271
|
+
* columns: 1` — full width, over their siblings — so a preview never resizes the events it is dragged across, and
|
|
272
|
+
* the event being dragged keeps the geometry it had before the drag started.
|
|
273
|
+
*/
|
|
274
|
+
export function clusterColumns(segments) {
|
|
275
|
+
const ghosts = [];
|
|
276
|
+
const sorted = [];
|
|
277
|
+
for (const segment of segments)
|
|
278
|
+
(segment.normalized.ghost ? ghosts : sorted).push(segment);
|
|
279
|
+
sorted.sort((a, b) => a.dayIndex - b.dayIndex || a.startMinutes - b.startMinutes || b.endMinutes - a.endMinutes || compareIds(a.normalized.event.id, b.normalized.event.id));
|
|
280
|
+
const out = [];
|
|
281
|
+
let cluster = [];
|
|
282
|
+
let columnEnds = [];
|
|
283
|
+
let clusterDay = -1;
|
|
284
|
+
let clusterEnd = -Infinity;
|
|
285
|
+
const flush = () => {
|
|
286
|
+
const columns = columnEnds.length;
|
|
287
|
+
for (const { segment, column } of cluster)
|
|
288
|
+
out.push({ ...segment, column, columns });
|
|
289
|
+
cluster = [];
|
|
290
|
+
columnEnds = [];
|
|
291
|
+
clusterEnd = -Infinity;
|
|
292
|
+
};
|
|
293
|
+
for (const segment of sorted) {
|
|
294
|
+
if (cluster.length && (segment.dayIndex !== clusterDay || segment.startMinutes >= clusterEnd))
|
|
295
|
+
flush();
|
|
296
|
+
clusterDay = segment.dayIndex;
|
|
297
|
+
let column = columnEnds.findIndex((end) => end <= segment.startMinutes);
|
|
298
|
+
if (column < 0) {
|
|
299
|
+
column = columnEnds.length;
|
|
300
|
+
columnEnds.push(segment.endMinutes);
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
columnEnds[column] = segment.endMinutes;
|
|
304
|
+
}
|
|
305
|
+
cluster.push({ segment, column });
|
|
306
|
+
if (segment.endMinutes > clusterEnd)
|
|
307
|
+
clusterEnd = segment.endMinutes;
|
|
308
|
+
}
|
|
309
|
+
flush();
|
|
310
|
+
for (const segment of ghosts)
|
|
311
|
+
out.push({ ...segment, column: 0, columns: 1 });
|
|
312
|
+
return out;
|
|
313
|
+
}
|
|
314
|
+
/** Whole calendar days an all-day event covers. */
|
|
315
|
+
export function daySpan(normalized) {
|
|
316
|
+
return Math.max(1, dayOf(normalized.end) - dayOf(normalized.start));
|
|
317
|
+
}
|
|
318
|
+
function clampIndex(index, length) {
|
|
319
|
+
return Math.min(length - 1, Math.max(0, index));
|
|
320
|
+
}
|
|
321
|
+
/** Resolves a drop: keeps duration, converts kind when the target says so, keeps time-of-day for day-cell targets. */
|
|
322
|
+
export function resolveMove(normalized, target, days, defaultEventDuration) {
|
|
323
|
+
const day = days[clampIndex(target.dayIndex, days.length)] * MINUTES_PER_DAY;
|
|
324
|
+
const allDay = target.allDay ?? normalized.allDay;
|
|
325
|
+
if (allDay) {
|
|
326
|
+
const span = normalized.allDay ? daySpan(normalized) : 1;
|
|
327
|
+
return { start: day, end: day + span * MINUTES_PER_DAY, allDay: true };
|
|
328
|
+
}
|
|
329
|
+
if (normalized.allDay) {
|
|
330
|
+
const start = day + (target.minutes ?? 0);
|
|
331
|
+
return { start, end: start + defaultEventDuration, allDay: false };
|
|
332
|
+
}
|
|
333
|
+
const duration = normalized.end - normalized.start;
|
|
334
|
+
const start = target.minutes === null ? day + (normalized.start - dayOf(normalized.start) * MINUTES_PER_DAY) : day + target.minutes;
|
|
335
|
+
return { start, end: start + duration, allDay: false };
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Resolves a resize of one edge. Lane targets (`minutes === null`) resize by whole days; time targets by minutes. The
|
|
339
|
+
* opposite edge never moves, and the result is clamped so the event keeps at least one snap step (one day for an
|
|
340
|
+
* all-day bar).
|
|
341
|
+
*/
|
|
342
|
+
export function resolveResize(normalized, target, days, snapDuration, edge = "end") {
|
|
343
|
+
const day = days[clampIndex(target.dayIndex, days.length)] * MINUTES_PER_DAY;
|
|
344
|
+
const step = Math.max(1, snapDuration);
|
|
345
|
+
if (edge === "start") {
|
|
346
|
+
if (normalized.allDay) {
|
|
347
|
+
const maxStart = (dayOf(normalized.end) - 1) * MINUTES_PER_DAY;
|
|
348
|
+
return { start: Math.min(day, maxStart), end: normalized.end, allDay: true };
|
|
349
|
+
}
|
|
350
|
+
const start = target.minutes === null ? day + (normalized.start - dayOf(normalized.start) * MINUTES_PER_DAY) : day + target.minutes;
|
|
351
|
+
return { start: Math.min(start, normalized.end - step), end: normalized.end, allDay: false };
|
|
352
|
+
}
|
|
353
|
+
if (normalized.allDay) {
|
|
354
|
+
const minEnd = (dayOf(normalized.start) + 1) * MINUTES_PER_DAY;
|
|
355
|
+
return { start: normalized.start, end: Math.max(day + MINUTES_PER_DAY, minEnd), allDay: true };
|
|
356
|
+
}
|
|
357
|
+
let end;
|
|
358
|
+
if (target.minutes === null) {
|
|
359
|
+
const endMinutes = normalized.end - dayOf(normalized.end) * MINUTES_PER_DAY;
|
|
360
|
+
end = endMinutes === 0 ? day + MINUTES_PER_DAY : day + endMinutes;
|
|
361
|
+
}
|
|
362
|
+
else {
|
|
363
|
+
end = day + target.minutes;
|
|
364
|
+
}
|
|
365
|
+
return { start: normalized.start, end: Math.max(end, normalized.start + step), allDay: false };
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* The next calendar day (day number) in `direction` that is not a hidden weekday (at most 7 steps away).
|
|
369
|
+
* `hiddenDays` goes through `hiddenWeekdays()`, so this agrees with what the grid renders: an all-seven set is
|
|
370
|
+
* ignored, out-of-range entries are dropped.
|
|
371
|
+
*/
|
|
372
|
+
export function nextVisibleDate(from, direction, hiddenDays) {
|
|
373
|
+
const hidden = hiddenWeekdays(hiddenDays);
|
|
374
|
+
let date = from + direction;
|
|
375
|
+
for (let step = 0; step < 7 && hidden.has(dayOfWeek(date)); step++)
|
|
376
|
+
date += direction;
|
|
377
|
+
return date;
|
|
378
|
+
}
|