@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,76 @@
|
|
|
1
|
+
// Ported from @react-stately/table (useTableColumnResizeState.ts), Apache-2.0, © Adobe. The column
|
|
2
|
+
// width math (TableColumnLayout.ts + TableUtils.ts) is the shared port in
|
|
3
|
+
// `../virtualizer/table-column-layout.ts`.
|
|
4
|
+
//
|
|
5
|
+
// Rivet:
|
|
6
|
+
// - `createTableColumnResizeState(props)` returns the serializable part (signals: table width, the
|
|
7
|
+
// resizing column, the uncontrolled widths `Map` + the column keys they belong to);
|
|
8
|
+
// `tableColumnResizeState(data, state)` derives react-stately's `TableColumnResizeState` view over a
|
|
9
|
+
// `TableState` view (`./table.ts`): widths are rebuilt per use from the collection's columns
|
|
10
|
+
// (`TableColumnLayout.buildColumnWidths`, O(columns)).
|
|
11
|
+
// - Upstream resets the uncontrolled widths when the columns change (by key, during render); here the
|
|
12
|
+
// stored widths are used only while the column keys match, else the initial widths apply (no write
|
|
13
|
+
// during a read); the next `updateResizedColumns` stores widths for the new columns.
|
|
14
|
+
// - `getDefaultWidth` / `getDefaultMinWidth` must be resumable functions (inline arrows / local consts).
|
|
15
|
+
import { batch, signal, untrack } from "@rivetjs/reactivity";
|
|
16
|
+
import { TableColumnLayout } from "../virtualizer/table-column-layout.js";
|
|
17
|
+
/** Column width state for a table with column resizing (react-stately `useTableColumnResizeState`). */
|
|
18
|
+
export function createTableColumnResizeState(props) {
|
|
19
|
+
return {
|
|
20
|
+
tableWidth: props.tableWidth ?? 0,
|
|
21
|
+
getDefaultWidth: props.getDefaultWidth,
|
|
22
|
+
getDefaultMinWidth: props.getDefaultMinWidth,
|
|
23
|
+
resizingColumn: signal(null),
|
|
24
|
+
uncontrolled: signal(null),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
const readWidth = (w) => (typeof w === "function" ? w() : w) ?? 0;
|
|
28
|
+
const columnsId = (columns) => columns.map((c) => typeof c.key + ":" + String(c.key)).join("\u0000");
|
|
29
|
+
/** The uncontrolled widths in effect for `columns` (stored ones while the column keys match, else initial). */
|
|
30
|
+
function uncontrolledWidths(data, layout, columns) {
|
|
31
|
+
const [, uncontrolledColumns] = layout.splitColumnsIntoControlledAndUncontrolled(columns);
|
|
32
|
+
const stored = data.uncontrolled();
|
|
33
|
+
if (stored && stored.columns === columnsId(columns))
|
|
34
|
+
return stored.widths;
|
|
35
|
+
return layout.getInitialUncontrolledWidths(uncontrolledColumns);
|
|
36
|
+
}
|
|
37
|
+
/** `startResize(key)`. */
|
|
38
|
+
export function startColumnResize(data, key) {
|
|
39
|
+
data.resizingColumn.set(key);
|
|
40
|
+
}
|
|
41
|
+
/** `endResize()`. */
|
|
42
|
+
export function endColumnResize(data) {
|
|
43
|
+
data.resizingColumn.set(null);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The react-stately `TableColumnResizeState` view over a `TableState` view: current column widths
|
|
47
|
+
* for the table width, min / max widths, resizing column, and the update callbacks.
|
|
48
|
+
*/
|
|
49
|
+
export function tableColumnResizeState(data, state) {
|
|
50
|
+
const layout = new TableColumnLayout({ getDefaultWidth: data.getDefaultWidth, getDefaultMinWidth: data.getDefaultMinWidth });
|
|
51
|
+
const columns = state.collection.columns;
|
|
52
|
+
const [controlledColumns, uncontrolledColumns] = layout.splitColumnsIntoControlledAndUncontrolled(columns);
|
|
53
|
+
const widths = uncontrolledWidths(data, layout, columns);
|
|
54
|
+
// combine columns back into one map that maintains same order as the columns
|
|
55
|
+
const colWidths = layout.recombineColumns(columns, widths, uncontrolledColumns, controlledColumns);
|
|
56
|
+
const columnWidths = layout.buildColumnWidths(readWidth(data.tableWidth), state.collection, colWidths);
|
|
57
|
+
const updateResizedColumns = (key, width) => {
|
|
58
|
+
const current = untrack(() => uncontrolledWidths(data, layout, columns));
|
|
59
|
+
const newSizes = layout.resizeColumnWidth(state.collection, current, key, width);
|
|
60
|
+
const map = new Map(Array.from(uncontrolledColumns).map(([key]) => [key, newSizes.get(key)]));
|
|
61
|
+
map.set(key, width);
|
|
62
|
+
batch(() => data.uncontrolled.set({ columns: columnsId(columns), widths: map }));
|
|
63
|
+
return newSizes;
|
|
64
|
+
};
|
|
65
|
+
return {
|
|
66
|
+
resizingColumn: data.resizingColumn(),
|
|
67
|
+
updateResizedColumns,
|
|
68
|
+
startResize: (key) => startColumnResize(data, key),
|
|
69
|
+
endResize: () => endColumnResize(data),
|
|
70
|
+
getColumnWidth: (key) => layout.getColumnWidth(key),
|
|
71
|
+
getColumnMinWidth: (key) => layout.getColumnMinWidth(key),
|
|
72
|
+
getColumnMaxWidth: (key) => layout.getColumnMaxWidth(key),
|
|
73
|
+
tableState: state,
|
|
74
|
+
columnWidths,
|
|
75
|
+
};
|
|
76
|
+
}
|
package/state/table.d.ts
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { type Signal } from "@rivetjs/reactivity";
|
|
2
|
+
import { type ControlledState } from "../interactions/controllable.js";
|
|
3
|
+
import { type ITableCollection } from "../collections/table.js";
|
|
4
|
+
import type { CollectionChildren, Key, Node, SortDescriptor, SortDirection } from "../collections/types.js";
|
|
5
|
+
import type { SelectionManagerOptions } from "../selection/manager.js";
|
|
6
|
+
import { type GridState, type GridStateData, type GridStateOptions } from "./grid.js";
|
|
7
|
+
export type { ITableCollection } from "../collections/table.js";
|
|
8
|
+
export interface TableState<T> extends GridState<T, ITableCollection<T>> {
|
|
9
|
+
/** A collection of rows and columns in the table. */
|
|
10
|
+
collection: ITableCollection<T>;
|
|
11
|
+
/** Whether the row selection checkboxes should be displayed. */
|
|
12
|
+
showSelectionCheckboxes: boolean;
|
|
13
|
+
/** The current sorted column and direction. */
|
|
14
|
+
sortDescriptor: SortDescriptor | null;
|
|
15
|
+
/** Calls the provided onSortChange handler with the provided column key and sort direction. */
|
|
16
|
+
sort(columnKey: Key, direction?: "ascending" | "descending"): void;
|
|
17
|
+
/** Whether keyboard navigation is disabled, such as when the arrow keys should be handled by a component within a cell. */
|
|
18
|
+
isKeyboardNavigationDisabled: boolean;
|
|
19
|
+
/** Set whether keyboard navigation is disabled, such as when the arrow keys should be handled by a component within a cell. */
|
|
20
|
+
setKeyboardNavigationDisabled: (val: boolean) => void;
|
|
21
|
+
/** A set of keys for items that are expanded. */
|
|
22
|
+
expandedKeys: Set<Key>;
|
|
23
|
+
/** Toggles the expanded state for a row by its key. */
|
|
24
|
+
toggleKey(key: Key): void;
|
|
25
|
+
/** The id of the column that displays hierarchical data. */
|
|
26
|
+
treeColumn: Key | null;
|
|
27
|
+
}
|
|
28
|
+
export interface TableStateProps<T> extends GridStateOptions {
|
|
29
|
+
/** The elements that make up the table (react-stately builders: TableHeader, TableBody, Column, Row, Cell). */
|
|
30
|
+
children?: CollectionChildren<T> | undefined;
|
|
31
|
+
/** A pre-constructed collection to use instead of building one from children. */
|
|
32
|
+
collection?: ITableCollection<T> | undefined;
|
|
33
|
+
/** Whether the row selection checkboxes should be displayed. */
|
|
34
|
+
showSelectionCheckboxes?: boolean | undefined;
|
|
35
|
+
/** @private Whether the row drag button should be displayed. */
|
|
36
|
+
showDragButtons?: boolean | undefined;
|
|
37
|
+
/** The id of the column that displays hierarchical data. */
|
|
38
|
+
treeColumn?: Key | undefined;
|
|
39
|
+
/** The current sorted column and direction (plain: controlled; Signal: two-way). */
|
|
40
|
+
sortDescriptor?: SortDescriptor | Signal<SortDescriptor | null> | null | undefined;
|
|
41
|
+
/** Handler that is called when the sorted column or direction changes. */
|
|
42
|
+
onSortChange?: ((descriptor: SortDescriptor) => any) | undefined;
|
|
43
|
+
/** The currently expanded keys in the collection (controlled). */
|
|
44
|
+
expandedKeys?: Iterable<Key> | Signal<Set<Key>> | undefined;
|
|
45
|
+
/** The initial expanded keys in the collection (uncontrolled). */
|
|
46
|
+
defaultExpandedKeys?: Iterable<Key> | undefined;
|
|
47
|
+
/** Handler that is called when items are expanded or collapsed. */
|
|
48
|
+
onExpandedChange?: ((keys: Set<Key>) => any) | undefined;
|
|
49
|
+
}
|
|
50
|
+
/** The serializable part of a table state. */
|
|
51
|
+
export interface TableStateData extends GridStateData {
|
|
52
|
+
readonly showSelectionCheckboxes: boolean;
|
|
53
|
+
readonly showDragButtons: boolean;
|
|
54
|
+
readonly treeColumn: Key | null;
|
|
55
|
+
readonly sortDescriptor: ControlledState<SortDescriptor | null, SortDescriptor>;
|
|
56
|
+
readonly expandedKeys: ControlledState<Set<Key>>;
|
|
57
|
+
readonly keyboardNavigationDisabled: Signal<boolean>;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Provides state management for a table component (react-stately `useTableState`): row selection,
|
|
61
|
+
* sort order changes, expanded rows, keyboard-navigation-disabled flag.
|
|
62
|
+
*/
|
|
63
|
+
export declare function createTableState<T>(props?: TableStateProps<T>): TableStateData;
|
|
64
|
+
/** `state.sort(columnKey, direction?)`: calls `onSortChange` (and writes a Signal `sortDescriptor`). */
|
|
65
|
+
export declare function sortTable(data: TableStateData, columnKey: Key, direction?: SortDirection): void;
|
|
66
|
+
/** `state.toggleKey(key)`: toggles the expanded state of a row. */
|
|
67
|
+
export declare function toggleTableKey(data: TableStateData, key: Key): void;
|
|
68
|
+
/** `state.setKeyboardNavigationDisabled(val)`. */
|
|
69
|
+
export declare function setTableKeyboardNavigationDisabled(data: TableStateData, val: boolean): void;
|
|
70
|
+
/** The react-stately `TableState` view over `collection` (build per handler / binding; reads signals). */
|
|
71
|
+
export declare function tableState<T>(data: TableStateData, collection: ITableCollection<T>, options?: SelectionManagerOptions): TableState<T>;
|
|
72
|
+
/**
|
|
73
|
+
* Builds the table collection of `useTableState` from `children` (react-stately builders) unless a
|
|
74
|
+
* `collection` is given. Pass the same `cache` object across calls to reuse cached nodes.
|
|
75
|
+
*/
|
|
76
|
+
export declare function tableCollection<T>(props: TableStateProps<T>, cache?: object): ITableCollection<T>;
|
|
77
|
+
/**
|
|
78
|
+
* Filters a collection using the provided filter function and returns a new TableState
|
|
79
|
+
* (react-stately `UNSTABLE_useFilteredTableState`).
|
|
80
|
+
*/
|
|
81
|
+
export declare function filteredTableState<T>(state: TableState<T>, filterFn: ((nodeValue: string, node: Node<T>) => boolean) | null | undefined): TableState<T>;
|
package/state/table.js
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
// Ported from @react-stately/table (useTableState.ts: useTableState, UNSTABLE_useFilteredTableState),
|
|
2
|
+
// Apache-2.0, © Adobe.
|
|
3
|
+
//
|
|
4
|
+
// Rivet:
|
|
5
|
+
// - Split like `./grid.ts`: `createTableState(props)` returns the serializable part (grid data +
|
|
6
|
+
// sort / expansion controlled states + keyboard-navigation-disabled signal); `tableState(data,
|
|
7
|
+
// collection)` derives react-stately's `TableState` view per use (collection + SelectionManager are
|
|
8
|
+
// class instances). `sort`, `toggleKey`, `setKeyboardNavigationDisabled` on the view call the free
|
|
9
|
+
// functions `sortTable`, `toggleTableKey`, `setTableKeyboardNavigationDisabled`.
|
|
10
|
+
// - `sortDescriptor` / `expandedKeys`: plain value (controlled: only `onSortChange` /
|
|
11
|
+
// `onExpandedChange` are called) or Signal (two-way) — `../interactions/controllable.ts`.
|
|
12
|
+
// Upstream `sortDescriptor` is controlled only (no `defaultSortDescriptor`); same here.
|
|
13
|
+
// - Collection: `props.collection`, or built from `children` with the react-stately builders of
|
|
14
|
+
// `../collections/table.ts` (`TableHeader` / `Column` / `TableBody` / `Row` / `Cell`) —
|
|
15
|
+
// `tableCollection(props)`.
|
|
16
|
+
// - `UNSTABLE_useTreeGridState` (feature-flagged Spectrum treegrid) is not ported: RAC tables expand
|
|
17
|
+
// rows through `expandedKeys` on this state (RAC `TableInner`).
|
|
18
|
+
import { signal, untrack } from "@rivetjs/reactivity";
|
|
19
|
+
import { controllable, controlledValue, setControlledValue } from "../interactions/controllable.js";
|
|
20
|
+
import { CollectionBuilder } from "../collections/builder.js";
|
|
21
|
+
import { TableCollection as StatelyTableCollection, tableBuilderContext } from "../collections/table.js";
|
|
22
|
+
import { createGridState, gridState } from "./grid.js";
|
|
23
|
+
const isSignal = (v) => typeof v === "function" && typeof v.set === "function";
|
|
24
|
+
/**
|
|
25
|
+
* Provides state management for a table component (react-stately `useTableState`): row selection,
|
|
26
|
+
* sort order changes, expanded rows, keyboard-navigation-disabled flag.
|
|
27
|
+
*/
|
|
28
|
+
export function createTableState(props = {}) {
|
|
29
|
+
const grid = createGridState({ ...props, disabledBehavior: props.disabledBehavior || "selection" });
|
|
30
|
+
const expanded = props.expandedKeys;
|
|
31
|
+
return {
|
|
32
|
+
...grid,
|
|
33
|
+
showSelectionCheckboxes: props.showSelectionCheckboxes || false,
|
|
34
|
+
showDragButtons: !!props.showDragButtons,
|
|
35
|
+
treeColumn: props.treeColumn ?? null,
|
|
36
|
+
sortDescriptor: controllable(props.sortDescriptor ?? null, null, props.onSortChange),
|
|
37
|
+
expandedKeys: controllable(
|
|
38
|
+
// A Signal is two-way; an accessor (live prop, `liveKeys`: a Set) is controlled, read live.
|
|
39
|
+
expanded == null ? undefined : typeof expanded === "function" ? expanded : new Set(expanded), props.defaultExpandedKeys ? new Set(props.defaultExpandedKeys) : new Set(), props.onExpandedChange),
|
|
40
|
+
keyboardNavigationDisabled: signal(false),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
const OPPOSITE_SORT_DIRECTION = { ascending: "descending", descending: "ascending" };
|
|
44
|
+
/** `state.sort(columnKey, direction?)`: calls `onSortChange` (and writes a Signal `sortDescriptor`). */
|
|
45
|
+
export function sortTable(data, columnKey, direction) {
|
|
46
|
+
const current = untrack(() => controlledValue(data.sortDescriptor));
|
|
47
|
+
setControlledValue(data.sortDescriptor, {
|
|
48
|
+
column: columnKey,
|
|
49
|
+
direction: direction ?? (current?.column === columnKey ? OPPOSITE_SORT_DIRECTION[current.direction] : "ascending"),
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/** `state.toggleKey(key)`: toggles the expanded state of a row. */
|
|
53
|
+
export function toggleTableKey(data, key) {
|
|
54
|
+
setControlledValue(data.expandedKeys, (keys) => {
|
|
55
|
+
const newKeys = new Set(keys);
|
|
56
|
+
if (newKeys.has(key))
|
|
57
|
+
newKeys.delete(key);
|
|
58
|
+
else
|
|
59
|
+
newKeys.add(key);
|
|
60
|
+
return newKeys;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
/** `state.setKeyboardNavigationDisabled(val)`. */
|
|
64
|
+
export function setTableKeyboardNavigationDisabled(data, val) {
|
|
65
|
+
data.keyboardNavigationDisabled.set(val);
|
|
66
|
+
}
|
|
67
|
+
/** The react-stately `TableState` view over `collection` (build per handler / binding; reads signals). */
|
|
68
|
+
export function tableState(data, collection, options) {
|
|
69
|
+
const grid = gridState(data, collection, options);
|
|
70
|
+
return {
|
|
71
|
+
...grid,
|
|
72
|
+
collection,
|
|
73
|
+
showSelectionCheckboxes: data.showSelectionCheckboxes,
|
|
74
|
+
sortDescriptor: data.sortDescriptor.value() ?? null,
|
|
75
|
+
isKeyboardNavigationDisabled: collection.size === 0 || data.keyboardNavigationDisabled(),
|
|
76
|
+
setKeyboardNavigationDisabled: (val) => setTableKeyboardNavigationDisabled(data, val),
|
|
77
|
+
sort: (columnKey, direction) => sortTable(data, columnKey, direction),
|
|
78
|
+
expandedKeys: data.expandedKeys.value(),
|
|
79
|
+
toggleKey: (key) => toggleTableKey(data, key),
|
|
80
|
+
treeColumn: data.treeColumn,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
const builders = new WeakMap();
|
|
84
|
+
/**
|
|
85
|
+
* Builds the table collection of `useTableState` from `children` (react-stately builders) unless a
|
|
86
|
+
* `collection` is given. Pass the same `cache` object across calls to reuse cached nodes.
|
|
87
|
+
*/
|
|
88
|
+
export function tableCollection(props, cache) {
|
|
89
|
+
if (props.collection)
|
|
90
|
+
return props.collection;
|
|
91
|
+
const context = tableBuilderContext({
|
|
92
|
+
showSelectionCheckboxes: props.showSelectionCheckboxes,
|
|
93
|
+
showDragButtons: props.showDragButtons,
|
|
94
|
+
selectionMode: props.selectionMode,
|
|
95
|
+
});
|
|
96
|
+
let builder = cache ? builders.get(cache) : undefined;
|
|
97
|
+
if (!builder) {
|
|
98
|
+
builder = new CollectionBuilder();
|
|
99
|
+
if (cache)
|
|
100
|
+
builders.set(cache, builder);
|
|
101
|
+
}
|
|
102
|
+
const nodes = builder.build({ children: (props.children ?? null) }, context);
|
|
103
|
+
return new StatelyTableCollection(nodes, null, context);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Filters a collection using the provided filter function and returns a new TableState
|
|
107
|
+
* (react-stately `UNSTABLE_useFilteredTableState`).
|
|
108
|
+
*/
|
|
109
|
+
export function filteredTableState(state, filterFn) {
|
|
110
|
+
const collection = (filterFn ? state.collection.filter?.(filterFn) ?? state.collection : state.collection);
|
|
111
|
+
const selectionManager = state.selectionManager.withCollection(collection);
|
|
112
|
+
// TODO (upstream): handle focus key reset? That logic is in useGridState
|
|
113
|
+
return { ...state, collection, selectionManager };
|
|
114
|
+
}
|
package/state/tabs.d.ts
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { type Signal } from "@rivetjs/reactivity";
|
|
2
|
+
import { type MultipleSelectionState } from "../_adapters/grid-selection.js";
|
|
3
|
+
import type { Key, Orientation } from "../_adapters/collection.js";
|
|
4
|
+
export type { Key } from "../_adapters/collection.js";
|
|
5
|
+
/** A tab the state knows of at creation (default selection): its key and whether it is disabled. */
|
|
6
|
+
export interface TabKey {
|
|
7
|
+
readonly id: Key;
|
|
8
|
+
readonly isDisabled?: boolean | undefined;
|
|
9
|
+
}
|
|
10
|
+
export type KeyboardActivation = "automatic" | "manual";
|
|
11
|
+
export interface TabListStateOptions {
|
|
12
|
+
/** Base of the generated ids (tabs `<id>-tab-<key>`, panels `<id>-tabpanel-<key>`); default a fresh id. */
|
|
13
|
+
id?: string | undefined;
|
|
14
|
+
/** The currently selected key: a two-way signal, a plain value or an accessor (controlled; live props). */
|
|
15
|
+
selectedKey?: Key | null | Signal<Key | null> | Signal<Key> | (() => Key | null) | undefined;
|
|
16
|
+
/** The initial selected key (uncontrolled). */
|
|
17
|
+
defaultSelectedKey?: Key | undefined;
|
|
18
|
+
/** Handler that is called when the selection changes (also on re-selecting the selected tab). */
|
|
19
|
+
onSelectionChange?: ((key: Key) => void) | undefined;
|
|
20
|
+
/** The item keys that are disabled. These items cannot be selected, focused, or otherwise interacted with. An accessor stays live (read through `tabsDisabledKeys`). */
|
|
21
|
+
disabledKeys?: Iterable<Key> | (() => Iterable<Key> | undefined) | undefined;
|
|
22
|
+
/** Whether the whole tab list is disabled (an accessor: live props, read at use through `isTabsDisabled`). */
|
|
23
|
+
isDisabled?: boolean | (() => boolean | undefined) | undefined;
|
|
24
|
+
/** @default "horizontal". An accessor stays live (read through `tabsOrientation`). */
|
|
25
|
+
orientation?: Orientation | (() => Orientation | undefined) | undefined;
|
|
26
|
+
/** @default "automatic". An accessor stays live (read through `tabsKeyboardActivation`). */
|
|
27
|
+
keyboardActivation?: KeyboardActivation | (() => KeyboardActivation | undefined) | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Rivet: the tabs in order, for the default selection (first enabled tab, else the first tab) when no tab is
|
|
30
|
+
* selected or the selected key is not a tab (not for a plain controlled `selectedKey`). Read once, at creation;
|
|
31
|
+
* omit to keep the given selection as is.
|
|
32
|
+
*/
|
|
33
|
+
tabs?: (() => readonly TabKey[]) | undefined;
|
|
34
|
+
}
|
|
35
|
+
export interface TabListState {
|
|
36
|
+
/** Base id: tabs are `<id>-tab-<key>`, panels `<id>-tabpanel-<key>`. */
|
|
37
|
+
readonly id: string;
|
|
38
|
+
/** The selected key (a read-only cell for a plain controlled value, the accessor for a live one: `controlled`, never written). */
|
|
39
|
+
readonly selectedKey: Signal<Key | null>;
|
|
40
|
+
/** A plain controlled `selectedKey`: never written. */
|
|
41
|
+
readonly controlled: boolean;
|
|
42
|
+
readonly focusedKey: Signal<Key | null>;
|
|
43
|
+
/** Selection the focused key was set under (see effectiveFocusedKey). */
|
|
44
|
+
readonly focusedSelection: Signal<Key | null>;
|
|
45
|
+
readonly isFocused: Signal<boolean>;
|
|
46
|
+
readonly disabledKeys: Set<Key>;
|
|
47
|
+
/** Whether the whole tab list was disabled at creation; read `isTabsDisabled(state)` (follows a live `disabled`). */
|
|
48
|
+
readonly isDisabled: boolean;
|
|
49
|
+
/** A live `isDisabled` (live props). */
|
|
50
|
+
readonly disabled?: (() => boolean | undefined) | undefined;
|
|
51
|
+
readonly orientation: Orientation;
|
|
52
|
+
readonly keyboardActivation: KeyboardActivation;
|
|
53
|
+
/** Rivet (live props): accessors of a live `orientation` / `keyboardActivation` / `disabledKeys` (the fields above
|
|
54
|
+
* hold the creation values); read through `tabsOrientation` / `tabsKeyboardActivation` / `tabsDisabledKeys`. */
|
|
55
|
+
readonly live?: TabListLive | undefined;
|
|
56
|
+
readonly onSelectionChange?: ((key: Key) => void) | undefined;
|
|
57
|
+
}
|
|
58
|
+
/** Live accessors of a tab list state (live props). */
|
|
59
|
+
export interface TabListLive {
|
|
60
|
+
readonly orientation?: () => Orientation | undefined;
|
|
61
|
+
readonly keyboardActivation?: () => KeyboardActivation | undefined;
|
|
62
|
+
readonly disabledKeys?: () => Iterable<Key> | undefined;
|
|
63
|
+
}
|
|
64
|
+
/** The tab list's current orientation (a live one, else the creation value). */
|
|
65
|
+
export declare const tabsOrientation: (state: TabListState) => Orientation;
|
|
66
|
+
/** The tab list's current keyboard activation. */
|
|
67
|
+
export declare const tabsKeyboardActivation: (state: TabListState) => KeyboardActivation;
|
|
68
|
+
/** The tab list's current disabled keys (a live one is read into a new Set). */
|
|
69
|
+
export declare const tabsDisabledKeys: (state: TabListState) => Set<Key>;
|
|
70
|
+
/** Whether the whole tab list is disabled (reads a live `isDisabled`). */
|
|
71
|
+
export declare const isTabsDisabled: (state: TabListState) => boolean;
|
|
72
|
+
/** react-stately findDefaultSelectedKey: first enabled tab, else the first tab. */
|
|
73
|
+
export declare function findDefaultSelectedKey(tabs: readonly TabKey[], disabledKeys: Set<Key>, isDisabled?: boolean): Key | null;
|
|
74
|
+
export declare function createTabListState(options: TabListStateOptions): TabListState;
|
|
75
|
+
/** The key that is the tab stop (reads signals): the focused key, or the selection when it changed from outside while unfocused. */
|
|
76
|
+
export declare function effectiveFocusedKey(state: TabListState): Key | null;
|
|
77
|
+
/** Select `key` (and focus it), firing `onSelectionChange` (always, like useSingleSelectListState). */
|
|
78
|
+
export declare function selectTab(state: TabListState, key: Key): void;
|
|
79
|
+
/** Set the focused tab (records the selection it was set under). */
|
|
80
|
+
export declare function setTabFocusedKey(state: TabListState, key: Key | null): void;
|
|
81
|
+
/**
|
|
82
|
+
* Transient MultipleSelectionState view of the tabs state for the SelectionManager
|
|
83
|
+
* (useSingleSelectListState: single, disallowEmptySelection, duplicate events allowed). Event time only.
|
|
84
|
+
*/
|
|
85
|
+
export declare function tabsSelectionState(state: TabListState): MultipleSelectionState;
|
package/state/tabs.js
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
// Tabs state (react-stately useTabListState over useSingleSelectListState): the selected key, the
|
|
2
|
+
// focused key, disabled keys, orientation and keyboard activation. Serializable (signals + JSON).
|
|
3
|
+
// Ported from react-spectrum (Apache-2.0, © Adobe): packages/react-stately/src/tabs/useTabListState.ts,
|
|
4
|
+
// list/useSingleSelectListState.ts.
|
|
5
|
+
//
|
|
6
|
+
// Rivet:
|
|
7
|
+
// - `selectedKey` is the source of truth: a two-way `Signal<Key | null>`, a plain value (RAC controlled:
|
|
8
|
+
// never written, `onSelectionChange` still fires) or absent (uncontrolled, `defaultSelectedKey`). The
|
|
9
|
+
// SelectionManager runs on a transient lens (`tabsSelectionState`) at event time.
|
|
10
|
+
// - useTabListState's effect "a tab is always selected" runs once, at creation, over the tab keys the
|
|
11
|
+
// caller found (`TabListStateOptions.tabs`: `Tabs` builds them from its children, the `items` preset
|
|
12
|
+
// from its items). It writes the selection without calling `onSelectionChange` (the original fires it
|
|
13
|
+
// from a mount effect; Rivet creates the state on the server).
|
|
14
|
+
// - Its second effect (focus follows selection while the tablist is not focused) is the
|
|
15
|
+
// `effectiveFocusedKey` read: `focusedSelection` remembers the selection the focused key was set
|
|
16
|
+
// under, so a selection change from outside moves the tab stop like the original's effect.
|
|
17
|
+
import { signal, untrack } from "@rivetjs/reactivity";
|
|
18
|
+
import { createId } from "@rivetjs/cdk/id";
|
|
19
|
+
import { hasKey } from "../_adapters/grid-selection.js";
|
|
20
|
+
/** The tab list's current orientation (a live one, else the creation value). */
|
|
21
|
+
export const tabsOrientation = (state) => (state.live?.orientation ? (state.live.orientation() ?? "horizontal") : state.orientation);
|
|
22
|
+
/** The tab list's current keyboard activation. */
|
|
23
|
+
export const tabsKeyboardActivation = (state) => state.live?.keyboardActivation ? (state.live.keyboardActivation() ?? "automatic") : state.keyboardActivation;
|
|
24
|
+
/** The tab list's current disabled keys (a live one is read into a new Set). */
|
|
25
|
+
export const tabsDisabledKeys = (state) => state.live?.disabledKeys ? new Set(state.live.disabledKeys() ?? []) : state.disabledKeys;
|
|
26
|
+
const isSignal = (value) => typeof value === "function" && typeof value.set === "function";
|
|
27
|
+
/** Whether the whole tab list is disabled (reads a live `isDisabled`). */
|
|
28
|
+
export const isTabsDisabled = (state) => (state.disabled ? !!state.disabled() : state.isDisabled);
|
|
29
|
+
/** react-stately findDefaultSelectedKey: first enabled tab, else the first tab. */
|
|
30
|
+
export function findDefaultSelectedKey(tabs, disabledKeys, isDisabled = false) {
|
|
31
|
+
if (!tabs.length)
|
|
32
|
+
return null;
|
|
33
|
+
const enabled = isDisabled ? undefined : tabs.find((tab) => !tab.isDisabled && !hasKey(disabledKeys, tab.id));
|
|
34
|
+
return (enabled ?? tabs[0]).id;
|
|
35
|
+
}
|
|
36
|
+
const sameKey = (a, b) => (a == null || b == null ? a == b : String(a) === String(b));
|
|
37
|
+
export function createTabListState(options) {
|
|
38
|
+
// Rivet (live props): an accessor `orientation` / `keyboardActivation` / `disabledKeys` stays live (`live`).
|
|
39
|
+
let live;
|
|
40
|
+
const now = (key) => {
|
|
41
|
+
const v = options[key];
|
|
42
|
+
if (typeof v !== "function")
|
|
43
|
+
return v;
|
|
44
|
+
(live ??= {})[key] = v;
|
|
45
|
+
return untrack(v);
|
|
46
|
+
};
|
|
47
|
+
const disabledKeys = new Set(now("disabledKeys") ?? []);
|
|
48
|
+
const orientation = now("orientation") ?? "horizontal";
|
|
49
|
+
const keyboardActivation = now("keyboardActivation") ?? "automatic";
|
|
50
|
+
const disabled = typeof options.isDisabled === "function" ? options.isDisabled : undefined;
|
|
51
|
+
const isDisabled = disabled ? !!untrack(disabled) : !!options.isDisabled;
|
|
52
|
+
const given = options.selectedKey;
|
|
53
|
+
const controlled = given !== undefined && !isSignal(given);
|
|
54
|
+
let selectedKey;
|
|
55
|
+
if (isSignal(given))
|
|
56
|
+
selectedKey = given;
|
|
57
|
+
// A live controlled value (accessor; live props): kept as is (resumable), only read — `controlled` writes nothing.
|
|
58
|
+
else if (typeof given === "function")
|
|
59
|
+
selectedKey = given;
|
|
60
|
+
else if (controlled) {
|
|
61
|
+
const value = given;
|
|
62
|
+
// A plain controlled value: a read-only cell (useControlledState: writes only call onSelectionChange).
|
|
63
|
+
const cell = Object.assign(() => value, { set: () => value, update: () => value });
|
|
64
|
+
selectedKey = cell;
|
|
65
|
+
}
|
|
66
|
+
else
|
|
67
|
+
selectedKey = signal(options.defaultSelectedKey ?? null);
|
|
68
|
+
// "Ensure a tab is always selected": none selected / the selected key is not a tab → first enabled tab.
|
|
69
|
+
const tabs = options.tabs;
|
|
70
|
+
if (tabs && !controlled) {
|
|
71
|
+
const current = untrack(selectedKey);
|
|
72
|
+
const list = tabs();
|
|
73
|
+
if (current == null || !list.some((tab) => sameKey(tab.id, current))) {
|
|
74
|
+
const key = findDefaultSelectedKey(list, disabledKeys, isDisabled);
|
|
75
|
+
if (key != null)
|
|
76
|
+
selectedKey.set(key);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const initial = untrack(selectedKey);
|
|
80
|
+
return {
|
|
81
|
+
id: options.id ?? createId(),
|
|
82
|
+
selectedKey,
|
|
83
|
+
controlled,
|
|
84
|
+
focusedKey: signal(initial),
|
|
85
|
+
focusedSelection: signal(initial),
|
|
86
|
+
isFocused: signal(false),
|
|
87
|
+
disabledKeys,
|
|
88
|
+
isDisabled,
|
|
89
|
+
disabled,
|
|
90
|
+
orientation,
|
|
91
|
+
keyboardActivation,
|
|
92
|
+
...(live ? { live: live } : {}),
|
|
93
|
+
onSelectionChange: options.onSelectionChange,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/** The key that is the tab stop (reads signals): the focused key, or the selection when it changed from outside while unfocused. */
|
|
97
|
+
export function effectiveFocusedKey(state) {
|
|
98
|
+
const selected = state.selectedKey(), focused = state.focusedKey();
|
|
99
|
+
if (!state.isFocused() && !sameKey(selected, state.focusedSelection()))
|
|
100
|
+
return selected;
|
|
101
|
+
return focused;
|
|
102
|
+
}
|
|
103
|
+
/** Select `key` (and focus it), firing `onSelectionChange` (always, like useSingleSelectListState). */
|
|
104
|
+
export function selectTab(state, key) {
|
|
105
|
+
if (!state.controlled)
|
|
106
|
+
state.selectedKey.set(key);
|
|
107
|
+
setTabFocusedKey(state, key);
|
|
108
|
+
state.onSelectionChange?.(key);
|
|
109
|
+
}
|
|
110
|
+
/** Set the focused tab (records the selection it was set under). */
|
|
111
|
+
export function setTabFocusedKey(state, key) {
|
|
112
|
+
state.focusedKey.set(key);
|
|
113
|
+
state.focusedSelection.set(untrack(state.selectedKey));
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Transient MultipleSelectionState view of the tabs state for the SelectionManager
|
|
117
|
+
* (useSingleSelectListState: single, disallowEmptySelection, duplicate events allowed). Event time only.
|
|
118
|
+
*/
|
|
119
|
+
export function tabsSelectionState(state) {
|
|
120
|
+
const keys = () => {
|
|
121
|
+
const key = state.selectedKey();
|
|
122
|
+
return new Set(key == null ? [] : [key]);
|
|
123
|
+
};
|
|
124
|
+
const lens = Object.assign(keys, {
|
|
125
|
+
set(value) {
|
|
126
|
+
if (value === "all")
|
|
127
|
+
return value;
|
|
128
|
+
const key = value.values().next().value ?? null;
|
|
129
|
+
if (key != null)
|
|
130
|
+
selectTab(state, key);
|
|
131
|
+
return value;
|
|
132
|
+
},
|
|
133
|
+
update(fn) {
|
|
134
|
+
return lens.set(fn(untrack(keys)));
|
|
135
|
+
},
|
|
136
|
+
});
|
|
137
|
+
const focusLens = Object.assign(() => state.focusedKey(), {
|
|
138
|
+
set(value) {
|
|
139
|
+
setTabFocusedKey(state, value);
|
|
140
|
+
return value;
|
|
141
|
+
},
|
|
142
|
+
update(fn) {
|
|
143
|
+
return focusLens.set(fn(untrack(state.focusedKey)));
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
return {
|
|
147
|
+
selectionMode: "single",
|
|
148
|
+
disallowEmptySelection: true,
|
|
149
|
+
selectionBehaviorProp: "toggle",
|
|
150
|
+
selectionBehavior: signal("toggle"),
|
|
151
|
+
selectedKeys: lens,
|
|
152
|
+
anchorKey: signal(null),
|
|
153
|
+
currentKey: signal(null),
|
|
154
|
+
disabledKeys: tabsDisabledKeys(state),
|
|
155
|
+
disabledBehavior: "all",
|
|
156
|
+
allowDuplicateSelectionEvents: true,
|
|
157
|
+
isFocused: state.isFocused,
|
|
158
|
+
focusedKey: focusLens,
|
|
159
|
+
childFocusStrategy: signal(null),
|
|
160
|
+
};
|
|
161
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type DateValueString, type Time } from "@rivetjs/cdk/date";
|
|
2
|
+
import type { ValidationFunction } from "./form-validation.js";
|
|
3
|
+
import { type DateFieldBaseOptions, type DateValueProp, type MappedTimeValue, type StandaloneDateFieldState, type TimeValue } from "./date-field.js";
|
|
4
|
+
export type { MappedTimeValue, TimeValue } from "./date-field.js";
|
|
5
|
+
/** useTimeFieldState props (TimePickerProps + `locale`). */
|
|
6
|
+
export interface TimeFieldStateOptions<T extends TimeValue = TimeValue> extends Omit<DateFieldBaseOptions, "minValue" | "maxValue" | "placeholderValue" | "granularity" | "createCalendar"> {
|
|
7
|
+
/** Controlled value: a time value, or a two-way signal of its string form. */
|
|
8
|
+
value?: DateValueProp<T>;
|
|
9
|
+
/** Uncontrolled initial value. */
|
|
10
|
+
defaultValue?: T | DateValueString | null;
|
|
11
|
+
/** Handler that is called when the value changes. */
|
|
12
|
+
onChange?: (value: MappedTimeValue<T> | null) => void;
|
|
13
|
+
/** The minimum allowed time that a user may select. */
|
|
14
|
+
minValue?: TimeValue | DateValueString | null;
|
|
15
|
+
/** The maximum allowed time that a user may select. */
|
|
16
|
+
maxValue?: TimeValue | DateValueString | null;
|
|
17
|
+
/** A placeholder time that influences the format of the placeholder shown when no value is selected. Defaults to 12:00 AM or 00:00 depending on the hour cycle. */
|
|
18
|
+
placeholderValue?: TimeValue | DateValueString | null;
|
|
19
|
+
/** Determines the smallest unit that is displayed in the time picker. @default 'minute' */
|
|
20
|
+
granularity?: "hour" | "minute" | "second";
|
|
21
|
+
/** Custom client validation of the value (a time object). */
|
|
22
|
+
validate?: ValidationFunction<MappedTimeValue<T>>;
|
|
23
|
+
id?: string;
|
|
24
|
+
}
|
|
25
|
+
/** A TimeField's state (DateFieldState with `kind: "time"`). */
|
|
26
|
+
export type TimeFieldState = StandaloneDateFieldState;
|
|
27
|
+
/**
|
|
28
|
+
* `useTimeFieldState`: state of a time field (time values entered and edited segment by segment).
|
|
29
|
+
*/
|
|
30
|
+
export declare function createTimeFieldState<T extends TimeValue = TimeValue>(options?: TimeFieldStateOptions<T>): TimeFieldState;
|
|
31
|
+
/** The current time value (React Stately `state.timeValue`). Reads. */
|
|
32
|
+
export declare function timeValue(state: TimeFieldState): Time | null;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Ported from react-stately (react-spectrum) src/datepicker/useTimeFieldState.ts, Apache-2.0, © Adobe.
|
|
2
|
+
// Rivet:
|
|
3
|
+
// - The state is a standalone date field state (`./date-field.ts`) with `kind: "time"`: `value`
|
|
4
|
+
// holds the TimeValue's string form (`Time` "11:45:00", or a date-time when it has a date);
|
|
5
|
+
// the field edits it as a date-time on the value's date (else today), as React Stately's
|
|
6
|
+
// `convertValue` does, and emits a `Time` unless the value / placeholder has a date or the
|
|
7
|
+
// default value has a time zone.
|
|
8
|
+
// - Methods are the date field's functions (`increment(state, "hour")` …); `timeValue(state)` is
|
|
9
|
+
// React Stately's `state.timeValue`.
|
|
10
|
+
// Deviation: none in behaviour; the date-time conversion runs on read instead of per render.
|
|
11
|
+
import { parseDateValue, toTime } from "@rivetjs/cdk/date";
|
|
12
|
+
import { dateValueSignal, fieldState, } from "./date-field.js";
|
|
13
|
+
/**
|
|
14
|
+
* `useTimeFieldState`: state of a time field (time values entered and edited segment by segment).
|
|
15
|
+
*/
|
|
16
|
+
export function createTimeFieldState(options = {}) {
|
|
17
|
+
const value = dateValueSignal(options.value, options.defaultValue);
|
|
18
|
+
const defaultValue = typeof options.defaultValue === "string" ? parseDateValue(options.defaultValue) : options.defaultValue;
|
|
19
|
+
const defaultTimeZone = defaultValue && "timeZone" in defaultValue ? defaultValue.timeZone : undefined;
|
|
20
|
+
return fieldState({
|
|
21
|
+
...options,
|
|
22
|
+
granularity: options.granularity || "minute",
|
|
23
|
+
maxGranularity: "hour",
|
|
24
|
+
...(defaultTimeZone ? { defaultTimeZone } : {}),
|
|
25
|
+
}, value, "time");
|
|
26
|
+
}
|
|
27
|
+
/** The current time value (React Stately `state.timeValue`). Reads. */
|
|
28
|
+
export function timeValue(state) {
|
|
29
|
+
const text = state.value();
|
|
30
|
+
if (!text)
|
|
31
|
+
return null;
|
|
32
|
+
const value = parseDateValue(text);
|
|
33
|
+
return "day" in value ? toTime(value) : value;
|
|
34
|
+
}
|