@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
package/utils/types.d.ts
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import type { Content } from "@rivetjs/runtime/jsx-runtime";
|
|
2
|
+
import type { RivetKeyboardEvent } from "../interactions/keyboard.jsx";
|
|
3
|
+
import type { ValidationResult } from "../state/form-validation.js";
|
|
4
|
+
export type { PressEvent, PressEvents, PointerType } from "../interactions/press.jsx";
|
|
5
|
+
export type { HoverEvent, HoverEvents } from "../interactions/hover.jsx";
|
|
6
|
+
export type { RivetKeyboardEvent as KeyboardEvent } from "../interactions/keyboard.jsx";
|
|
7
|
+
export type { Key, Selection, SelectionMode, SelectionBehavior, FocusStrategy, DisabledBehavior, Orientation, Direction, LoadingState, SortDescriptor, SortDirection, } from "../collections/types.js";
|
|
8
|
+
export type { Href, RouterOptions, LinkDOMProps } from "./links.jsx";
|
|
9
|
+
export type { ValidationResult, ValidationErrors, ValidationFunction, ValidationBehavior } from "../state/form-validation.js";
|
|
10
|
+
export type { GlobalDOMAttributes, GlobalDOMEvents } from "./dom-props.js";
|
|
11
|
+
export interface KeyboardEvents {
|
|
12
|
+
/** Handler that is called when a key is pressed. */
|
|
13
|
+
onKeyDown?: (e: RivetKeyboardEvent) => void;
|
|
14
|
+
/** Handler that is called when a key is released. */
|
|
15
|
+
onKeyUp?: (e: RivetKeyboardEvent) => void;
|
|
16
|
+
}
|
|
17
|
+
export interface FocusEvents<Target extends Element = Element> {
|
|
18
|
+
/** Handler that is called when the element receives focus. */
|
|
19
|
+
onFocus?: (e: FocusEvent & {
|
|
20
|
+
currentTarget: Target;
|
|
21
|
+
}) => void;
|
|
22
|
+
/** Handler that is called when the element loses focus. */
|
|
23
|
+
onBlur?: (e: FocusEvent & {
|
|
24
|
+
currentTarget: Target;
|
|
25
|
+
}) => void;
|
|
26
|
+
/** Handler that is called when the element's focus status changes. */
|
|
27
|
+
onFocusChange?: (isFocused: boolean) => void;
|
|
28
|
+
}
|
|
29
|
+
export interface FocusableProps<Target extends Element = Element> extends FocusEvents<Target>, KeyboardEvents {
|
|
30
|
+
/** Whether the element should receive focus on render. */
|
|
31
|
+
autoFocus?: boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface AriaLabelingProps {
|
|
34
|
+
/** Defines a string value that labels the current element. */
|
|
35
|
+
"aria-label"?: string;
|
|
36
|
+
/** Identifies the element (or elements) that labels the current element. */
|
|
37
|
+
"aria-labelledby"?: string;
|
|
38
|
+
/** Identifies the element (or elements) that describes the object. */
|
|
39
|
+
"aria-describedby"?: string;
|
|
40
|
+
/** Identifies the element (or elements) that provide a detailed, extended description for the object. */
|
|
41
|
+
"aria-details"?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface AriaValidationProps {
|
|
44
|
+
/** Identifies the element that provides an error message for the object. */
|
|
45
|
+
"aria-errormessage"?: string;
|
|
46
|
+
}
|
|
47
|
+
/** Common DOM props allowed on any component. */
|
|
48
|
+
export interface DOMProps {
|
|
49
|
+
/** The element's unique identifier. */
|
|
50
|
+
id?: string;
|
|
51
|
+
}
|
|
52
|
+
export interface FocusableDOMProps extends DOMProps {
|
|
53
|
+
/** Whether to exclude the element from the sequential tab order. */
|
|
54
|
+
excludeFromTabOrder?: boolean;
|
|
55
|
+
}
|
|
56
|
+
/** Inline style object (`style` prop of every component; render-prop form in `StyleRenderProps`). */
|
|
57
|
+
export type StyleObject = Record<string, string | number | undefined>;
|
|
58
|
+
export type ValidationState = "valid" | "invalid";
|
|
59
|
+
export type ValidationError = string | string[];
|
|
60
|
+
export interface Validation<T = unknown> {
|
|
61
|
+
/** Whether user input is required on the input before form submission. */
|
|
62
|
+
isRequired?: boolean;
|
|
63
|
+
/** Whether the input value is invalid. */
|
|
64
|
+
isInvalid?: boolean;
|
|
65
|
+
/** @deprecated upstream: use `isInvalid`. */
|
|
66
|
+
validationState?: ValidationState;
|
|
67
|
+
/** `native` blocks form submission and shows native errors; `aria` only marks the field invalid. @default "native" (RAC) */
|
|
68
|
+
validationBehavior?: "aria" | "native";
|
|
69
|
+
/** Custom validation: error message(s), or `true` / `null` / `undefined` when valid. */
|
|
70
|
+
validate?: (value: T) => ValidationError | true | null | undefined;
|
|
71
|
+
}
|
|
72
|
+
export interface InputBase {
|
|
73
|
+
/** Whether the input is disabled. */
|
|
74
|
+
isDisabled?: boolean;
|
|
75
|
+
/** Whether the input can be selected but not changed by the user. */
|
|
76
|
+
isReadOnly?: boolean;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Value props. Rivet: `value` is a plain value OR a two-way `Signal` (see `controllable`).
|
|
80
|
+
*/
|
|
81
|
+
export interface ValueBase<T, C = T> {
|
|
82
|
+
/** The current value (controlled): a plain value or a Signal. */
|
|
83
|
+
value?: T | import("@rivetjs/reactivity").Signal<T>;
|
|
84
|
+
/** The default value (uncontrolled). */
|
|
85
|
+
defaultValue?: T;
|
|
86
|
+
/** Handler that is called when the value changes. */
|
|
87
|
+
onChange?: (value: C) => void;
|
|
88
|
+
}
|
|
89
|
+
export interface TextInputBase {
|
|
90
|
+
/** Temporary text that occupies the text input when it is empty. */
|
|
91
|
+
placeholder?: string;
|
|
92
|
+
}
|
|
93
|
+
export interface RangeValue<T> {
|
|
94
|
+
start: T;
|
|
95
|
+
end: T;
|
|
96
|
+
}
|
|
97
|
+
export interface RangeInputBase<T> {
|
|
98
|
+
minValue?: T;
|
|
99
|
+
maxValue?: T;
|
|
100
|
+
step?: T;
|
|
101
|
+
}
|
|
102
|
+
export interface HelpTextProps {
|
|
103
|
+
/** A description for the field. */
|
|
104
|
+
description?: Content;
|
|
105
|
+
/** An error message for the field. */
|
|
106
|
+
errorMessage?: Content | ((v: ValidationResult) => Content);
|
|
107
|
+
}
|
|
108
|
+
export interface LabelableProps {
|
|
109
|
+
/** The content to display as the label. */
|
|
110
|
+
label?: Content;
|
|
111
|
+
}
|
package/utils/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { type Signal } from "@rivetjs/reactivity";
|
|
2
|
+
import type { StyleObject } from "@rivetjs/runtime/style";
|
|
3
|
+
import type { Key } from "../collections/index.js";
|
|
4
|
+
import { type Collection, type CollectionOptions, type Node } from "./collection.js";
|
|
5
|
+
import { type ScrollView } from "./dom.js";
|
|
6
|
+
import { Layout } from "./layout.js";
|
|
7
|
+
import type { LayoutInfo } from "./layout-info.js";
|
|
8
|
+
import type { ReusableView } from "./reusable-view.js";
|
|
9
|
+
import { type VirtualizerState } from "./state.js";
|
|
10
|
+
import type { Direction } from "./types.js";
|
|
11
|
+
/** Key of the loader sentinel node the component appends when `isLoading` / `onLoadMore` are given. */
|
|
12
|
+
export declare const LOADER_KEY = "rv-virtualizer-loader";
|
|
13
|
+
/** One rendered view: JSON-serializable (server window) projection of a ReusableView + its LayoutInfo. */
|
|
14
|
+
export interface VirtualView<T = unknown> {
|
|
15
|
+
/** Collection key (rows are keyed by it: kept keys keep their DOM). */
|
|
16
|
+
key: Key;
|
|
17
|
+
/** View type (`item`, `section`, `header`, `loader`, `row`, `cell`, …). */
|
|
18
|
+
type: string;
|
|
19
|
+
/** The data item (node value), or null (loaders, layout-generated views). */
|
|
20
|
+
item: T | null;
|
|
21
|
+
/** Index of the node within its parent. */
|
|
22
|
+
index: number;
|
|
23
|
+
level: number;
|
|
24
|
+
parentKey: Key | null;
|
|
25
|
+
x: number;
|
|
26
|
+
y: number;
|
|
27
|
+
width: number;
|
|
28
|
+
height: number;
|
|
29
|
+
/** Size not measured yet (the browser measures it after rendering). */
|
|
30
|
+
estimated: boolean;
|
|
31
|
+
/** Position style relative to the parent view. */
|
|
32
|
+
style: StyleObject;
|
|
33
|
+
/** Child views (sections: header + items; tables: rows / cells). */
|
|
34
|
+
children: VirtualView<T>[];
|
|
35
|
+
}
|
|
36
|
+
export type MaybeAccessor<T> = T | (() => T);
|
|
37
|
+
/** A layout class (`ListLayout`, `TableLayout`, …) or a factory (`() => new ListLayout()`): resumable, never an instance. */
|
|
38
|
+
export type LayoutInput<O> = (new () => Layout<Node<any>, O>) | (() => Layout<Node<any>, O>);
|
|
39
|
+
/** A layout instance from a class or a factory (RAC `Virtualizer` takes a class or an instance). */
|
|
40
|
+
export declare function createLayout<O>(layout: LayoutInput<O>): Layout<Node<any>, O>;
|
|
41
|
+
/** Serializable component state. */
|
|
42
|
+
export interface VirtualizerModel<T, O> {
|
|
43
|
+
id: string;
|
|
44
|
+
/** Standalone `<Virtualizer items>`: the data (collection mode: unused, `source` holds the host's collection). */
|
|
45
|
+
items: MaybeAccessor<readonly T[]>;
|
|
46
|
+
/**
|
|
47
|
+
* Collection mode (a collection component inside `<Virtualizer layout>`, RAC CollectionRenderer): the host's built
|
|
48
|
+
* collection (an accessor: a rebuilt collection re-renders the window).
|
|
49
|
+
*/
|
|
50
|
+
source?: (() => Collection<Node<T>> | null | undefined) | undefined;
|
|
51
|
+
/** Collection mode: the host's focused key (persisted, RAC `usePersistedKeys`). */
|
|
52
|
+
focus?: (() => Key | null) | undefined;
|
|
53
|
+
/** Collection mode: the host's scroll container (a ref accessor; standalone: the element with `id`). */
|
|
54
|
+
scrollRef?: (() => Element | null | undefined) | undefined;
|
|
55
|
+
/** Layout factory (`() => new ListLayout()`) or class (`ListLayout`), instantiated on the server and once in the browser. */
|
|
56
|
+
layout: LayoutInput<O>;
|
|
57
|
+
layoutOptions?: O;
|
|
58
|
+
collection: CollectionOptions<T>;
|
|
59
|
+
initialSize: {
|
|
60
|
+
width: number;
|
|
61
|
+
height: number;
|
|
62
|
+
};
|
|
63
|
+
dir?: Direction;
|
|
64
|
+
isLoading?: MaybeAccessor<boolean>;
|
|
65
|
+
onLoadMore?: () => void;
|
|
66
|
+
loadMoreOffset: number;
|
|
67
|
+
shouldObserveItemSize: boolean;
|
|
68
|
+
/** Caller-persisted keys (plus the focused view). */
|
|
69
|
+
persistedKeys: readonly Key[];
|
|
70
|
+
focusedKey: Signal<Key | null>;
|
|
71
|
+
views: Signal<VirtualView<T>[]>;
|
|
72
|
+
contentSize: Signal<{
|
|
73
|
+
width: number;
|
|
74
|
+
height: number;
|
|
75
|
+
}>;
|
|
76
|
+
isScrolling: Signal<boolean>;
|
|
77
|
+
onScroll?: (event: Event) => void;
|
|
78
|
+
}
|
|
79
|
+
/** Views of the engine as JSON; unchanged views keep their previous object (resumed rows stay adopted). */
|
|
80
|
+
export declare function projectViews<T>(views: Iterable<ReusableView<Node<T>, unknown>>, dir: Direction | undefined, previous: Map<Key, VirtualView<T>>, parent?: LayoutInfo | null): VirtualView<T>[];
|
|
81
|
+
/** First window for the server render (and client-rendered mounts): the engine at `initialSize`, scrolled to 0. */
|
|
82
|
+
export declare function initialWindow<T, O>(model: VirtualizerModel<T, O>): {
|
|
83
|
+
views: VirtualView<T>[];
|
|
84
|
+
contentSize: {
|
|
85
|
+
width: number;
|
|
86
|
+
height: number;
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
interface Driver {
|
|
90
|
+
state: VirtualizerState<Node<unknown>, unknown>;
|
|
91
|
+
scrollView: ScrollView;
|
|
92
|
+
loadingMore: boolean;
|
|
93
|
+
lastItems: unknown;
|
|
94
|
+
}
|
|
95
|
+
/** The browser driver of `model` (created on first use: engine, scroll view, measurement). */
|
|
96
|
+
export declare function driverOf<T, O>(model: VirtualizerModel<T, O>, element?: Element | null): Driver | null;
|
|
97
|
+
/** Rows of the model: the server window, or (browser) the driver's projection; reads `items` for reactivity. */
|
|
98
|
+
export declare function visibleViews<T, O>(model: VirtualizerModel<T, O>): VirtualView<T>[];
|
|
99
|
+
/** Keys of `views`: the rows' `For` items. Keys keep their identity across windows, so resumed server rows are
|
|
100
|
+
* adopted and kept (a `For` re-creates an adopted row whose item changed; view descriptors change on every move). */
|
|
101
|
+
export declare const viewKeys: <T>(views: readonly VirtualView<T>[]) => Key[];
|
|
102
|
+
/** Keys in layout order (top to bottom, then start to end); the engine's reusable views come in recycling order. */
|
|
103
|
+
export declare const orderedViewKeys: <T>(views: readonly VirtualView<T>[]) => Key[];
|
|
104
|
+
/** `rowOrder` parent of the root views. */
|
|
105
|
+
export declare const ROOT_VIEW: {};
|
|
106
|
+
/**
|
|
107
|
+
* The keyed rows' order: layout order (top to bottom) — except while DOM focus is inside the collection, when kept
|
|
108
|
+
* keys keep their DOM order and new ones go last. A keyed list moves (detaches) a kept row to reorder it, and a
|
|
109
|
+
* detached focused option / cell loses focus (keyboard navigation across the window edge inserts rows before the
|
|
110
|
+
* focused one). Positions are absolute: DOM order is not visual order; options carry `aria-posinset`, rows
|
|
111
|
+
* `aria-rowindex` (RAC renders in the engine's recycling order).
|
|
112
|
+
*/
|
|
113
|
+
export declare function rowOrder(model: VirtualizerModel<unknown, unknown>, parent: unknown, views: readonly VirtualView<unknown>[]): Key[];
|
|
114
|
+
/** The view with `key` in `views` (a row's descriptor); a row being removed keeps its last descriptor. */
|
|
115
|
+
export declare function viewOf<T, O>(model: VirtualizerModel<T, O>, views: readonly VirtualView<T>[], key: Key): VirtualView<T>;
|
|
116
|
+
/**
|
|
117
|
+
* Collection mode: the child views of the view with key `parentKey` (a host part's `CollectionBranch`: section items,
|
|
118
|
+
* table header rows / columns, body rows, cells), from the whole projected tree; `[]` when it is not rendered.
|
|
119
|
+
*/
|
|
120
|
+
export declare function childViews<T, O>(model: VirtualizerModel<T, O>, parentKey: Key): VirtualView<T>[];
|
|
121
|
+
/** Scroll handler of the scroller: drive the engine, load more near the end, then the caller's `onScroll`. */
|
|
122
|
+
export declare function virtualizerScroll<T, O>(model: VirtualizerModel<T, O>, event: Event): void;
|
|
123
|
+
/** focusin: the focused view stays rendered (persisted) while scrolled out of view. */
|
|
124
|
+
export declare function virtualizerFocusIn<T, O>(model: VirtualizerModel<T, O>, event: FocusEvent): void;
|
|
125
|
+
/** Style of the content element (size of the scrollable content; no pointer events while scrolling). */
|
|
126
|
+
export declare function contentStyle<T, O>(model: VirtualizerModel<T, O>): StyleObject;
|
|
127
|
+
/** Style of the scroller: overflow per scroll direction, padding reset (padding is done by the layout). */
|
|
128
|
+
export declare function scrollerStyle(scrollDirection: "horizontal" | "vertical" | "both"): StyleObject;
|
|
129
|
+
export {};
|
|
@@ -0,0 +1,437 @@
|
|
|
1
|
+
// Virtualizer component behaviour: serializable model, server first window, and the browser driver that
|
|
2
|
+
// runs the engine (createVirtualizerState + createScrollView) once the visitor scrolls. Semantics follow
|
|
3
|
+
// react-aria/src/virtualizer/Virtualizer.tsx and react-aria-components/src/Virtualizer.tsx (React Spectrum,
|
|
4
|
+
// Apache-2.0, © Adobe): layout + layoutOptions, persisted keys, item measurement, load more.
|
|
5
|
+
// Resume: the model is plain signals + JSON + resumable functions; engine instances live only in the browser
|
|
6
|
+
// (one driver per scroller element, in a lazily created WeakMap).
|
|
7
|
+
import { computed, createRoot, effect, runWithOwner, untrack } from "@rivetjs/reactivity";
|
|
8
|
+
import { direction as directionOf } from "../bidi/index.js";
|
|
9
|
+
import { createCollection, loaderNode } from "./collection.js";
|
|
10
|
+
import { createScrollView, getScrollLeft, layoutInfoToStyle, measureItem, setScrollLeft } from "./dom.js";
|
|
11
|
+
import { Layout } from "./layout.js";
|
|
12
|
+
import { Rect } from "./rect.js";
|
|
13
|
+
import { Size } from "./size.js";
|
|
14
|
+
import { createVirtualizerState } from "./state.js";
|
|
15
|
+
import { Virtualizer } from "./virtualizer-core.js";
|
|
16
|
+
/** Key of the loader sentinel node the component appends when `isLoading` / `onLoadMore` are given. */
|
|
17
|
+
export const LOADER_KEY = "rv-virtualizer-loader";
|
|
18
|
+
/** A layout instance from a class or a factory (RAC `Virtualizer` takes a class or an instance). */
|
|
19
|
+
export function createLayout(layout) {
|
|
20
|
+
const fn = layout;
|
|
21
|
+
return fn.prototype instanceof Layout ? new layout() : layout();
|
|
22
|
+
}
|
|
23
|
+
const read = (value) => (typeof value === "function" ? value() : value);
|
|
24
|
+
function collectionOf(model) {
|
|
25
|
+
if (model.source)
|
|
26
|
+
return (model.source() ?? createCollection([], {}));
|
|
27
|
+
const loading = model.isLoading === undefined && !model.onLoadMore ? null : !!read(model.isLoading ?? false);
|
|
28
|
+
return createCollection(read(model.items), model.collection, loading === null ? [] : [loaderNode(LOADER_KEY, loading)]);
|
|
29
|
+
}
|
|
30
|
+
const persistedOf = (model) => {
|
|
31
|
+
const keys = new Set(model.persistedKeys);
|
|
32
|
+
const focused = model.focusedKey();
|
|
33
|
+
if (focused != null)
|
|
34
|
+
keys.add(focused);
|
|
35
|
+
const hostFocused = model.focus?.();
|
|
36
|
+
if (hostFocused != null)
|
|
37
|
+
keys.add(hostFocused);
|
|
38
|
+
// Collection mode: the view holding DOM focus stays until focus moves on — the focused key changes before its
|
|
39
|
+
// item renders (and before the engine sees the scroll that brings it in), and removing the focused element
|
|
40
|
+
// would blur the collection (fast keyboard navigation across the window edge).
|
|
41
|
+
if (model.focus) {
|
|
42
|
+
const active = activeViewKey(model);
|
|
43
|
+
if (active != null)
|
|
44
|
+
keys.add(active);
|
|
45
|
+
}
|
|
46
|
+
return keys;
|
|
47
|
+
};
|
|
48
|
+
function activeViewKey(model) {
|
|
49
|
+
if (typeof document === "undefined")
|
|
50
|
+
return null;
|
|
51
|
+
const scroller = scrollerOf(model);
|
|
52
|
+
const active = document.activeElement;
|
|
53
|
+
const view = active && scroller?.contains(active) ? active.closest("[data-rv-view]") : null;
|
|
54
|
+
return view && scroller.contains(view) ? keyOfView(untrack(model.views), view.dataset.rvView) : null;
|
|
55
|
+
}
|
|
56
|
+
/** The view key whose `String(key)` is `text` (keys render as `data-rv-view` text), at any depth. */
|
|
57
|
+
function keyOfView(views, text) {
|
|
58
|
+
for (const view of views) {
|
|
59
|
+
if (String(view.key) === text)
|
|
60
|
+
return view.key;
|
|
61
|
+
const nested = view.children.length ? keyOfView(view.children, text) : null;
|
|
62
|
+
if (nested != null)
|
|
63
|
+
return nested;
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
const sameStyle = (a, b) => {
|
|
68
|
+
const ka = Object.keys(a).filter((k) => a[k] != null), kb = Object.keys(b).filter((k) => b[k] != null);
|
|
69
|
+
return ka.length === kb.length && ka.every((k) => a[k] === b[k]);
|
|
70
|
+
};
|
|
71
|
+
/** Views of the engine as JSON; unchanged views keep their previous object (resumed rows stay adopted). */
|
|
72
|
+
export function projectViews(views, dir, previous, parent = null) {
|
|
73
|
+
const out = [];
|
|
74
|
+
for (const view of views) {
|
|
75
|
+
const li = view.layoutInfo;
|
|
76
|
+
if (!li)
|
|
77
|
+
continue;
|
|
78
|
+
const node = view.content;
|
|
79
|
+
const children = projectViews(view.children, dir, previous, li);
|
|
80
|
+
const next = {
|
|
81
|
+
key: li.key,
|
|
82
|
+
type: li.type,
|
|
83
|
+
item: (node?.value ?? null),
|
|
84
|
+
index: node?.index ?? 0,
|
|
85
|
+
level: node?.level ?? 0,
|
|
86
|
+
parentKey: li.parentKey,
|
|
87
|
+
x: li.rect.x,
|
|
88
|
+
y: li.rect.y,
|
|
89
|
+
width: li.rect.width,
|
|
90
|
+
height: li.rect.height,
|
|
91
|
+
estimated: li.estimatedSize,
|
|
92
|
+
style: layoutInfoToStyle(li, dir, parent),
|
|
93
|
+
children,
|
|
94
|
+
};
|
|
95
|
+
const old = previous.get(li.key);
|
|
96
|
+
const same = old &&
|
|
97
|
+
old.type === next.type &&
|
|
98
|
+
old.item === next.item &&
|
|
99
|
+
old.index === next.index &&
|
|
100
|
+
old.level === next.level &&
|
|
101
|
+
old.parentKey === next.parentKey &&
|
|
102
|
+
old.x === next.x &&
|
|
103
|
+
old.y === next.y &&
|
|
104
|
+
old.width === next.width &&
|
|
105
|
+
old.height === next.height &&
|
|
106
|
+
old.estimated === next.estimated &&
|
|
107
|
+
sameStyle(old.style, next.style) &&
|
|
108
|
+
old.children.length === children.length &&
|
|
109
|
+
old.children.every((c, i) => c === children[i]);
|
|
110
|
+
out.push(same ? old : next);
|
|
111
|
+
}
|
|
112
|
+
return out;
|
|
113
|
+
}
|
|
114
|
+
const flatten = (views, into = new Map()) => {
|
|
115
|
+
for (const view of views) {
|
|
116
|
+
into.set(view.key, view);
|
|
117
|
+
flatten(view.children, into);
|
|
118
|
+
}
|
|
119
|
+
return into;
|
|
120
|
+
};
|
|
121
|
+
const sizeOfContent = (size) => ({ width: size.width, height: size.height });
|
|
122
|
+
/** First window for the server render (and client-rendered mounts): the engine at `initialSize`, scrolled to 0. */
|
|
123
|
+
export function initialWindow(model) {
|
|
124
|
+
return untrack(() => {
|
|
125
|
+
const collection = collectionOf(model);
|
|
126
|
+
const layout = createLayout(model.layout);
|
|
127
|
+
const virtualizer = new Virtualizer({
|
|
128
|
+
collection,
|
|
129
|
+
layout,
|
|
130
|
+
delegate: { setVisibleRect() { }, renderView: (_type, content) => content, invalidate() { } },
|
|
131
|
+
});
|
|
132
|
+
const { width, height } = model.initialSize;
|
|
133
|
+
const views = virtualizer.render({
|
|
134
|
+
layout,
|
|
135
|
+
collection,
|
|
136
|
+
persistedKeys: persistedOf(model),
|
|
137
|
+
visibleRect: new Rect(0, 0, width, height),
|
|
138
|
+
size: new Size(width, height),
|
|
139
|
+
invalidationContext: model.layoutOptions != null ? { layoutOptions: model.layoutOptions } : {},
|
|
140
|
+
isScrolling: false,
|
|
141
|
+
layoutOptions: model.layoutOptions,
|
|
142
|
+
});
|
|
143
|
+
return { views: projectViews(views, model.dir, new Map()), contentSize: sizeOfContent(virtualizer.contentSize) };
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
let drivers;
|
|
147
|
+
/** The scroll container of `model`: the host's `scrollRef` (collection mode), else the element with `model.id`. */
|
|
148
|
+
function scrollerOf(model) {
|
|
149
|
+
if (typeof document === "undefined")
|
|
150
|
+
return null;
|
|
151
|
+
return (model.scrollRef ? model.scrollRef() : document.getElementById(model.id)) ?? null;
|
|
152
|
+
}
|
|
153
|
+
const viewElement = (root, key) => {
|
|
154
|
+
for (const el of root.querySelectorAll("[data-rv-view]"))
|
|
155
|
+
if (el.dataset.rvView === String(key))
|
|
156
|
+
return el;
|
|
157
|
+
return null;
|
|
158
|
+
};
|
|
159
|
+
/** The browser driver of `model` (created on first use: engine, scroll view, measurement). */
|
|
160
|
+
export function driverOf(model, element) {
|
|
161
|
+
const el = (element ?? scrollerOf(model));
|
|
162
|
+
// Not in the document yet (a client render's first pass): no size to start from.
|
|
163
|
+
if (!el || !el.isConnected)
|
|
164
|
+
return null;
|
|
165
|
+
drivers ??= new WeakMap();
|
|
166
|
+
const existing = drivers.get(el);
|
|
167
|
+
if (existing)
|
|
168
|
+
return existing;
|
|
169
|
+
// Detached from the caller's owner: `createRoot` attaches to the current owner, and the first caller may be the
|
|
170
|
+
// rows' `For` binding (`visibleViews` on a resumed page's first projection), which disposes its children on its
|
|
171
|
+
// next run — the cached driver then kept dead effects and an items change no longer reached the engine
|
|
172
|
+
// (cdk-docs `virtualizer-items`, cold scroll then filter, 2026-10-19). The driver lives with its element.
|
|
173
|
+
return runWithOwner(null, () => createDriver(model, el));
|
|
174
|
+
}
|
|
175
|
+
function createDriver(model, el) {
|
|
176
|
+
const dir = () => model.dir ?? directionOf(el);
|
|
177
|
+
const collection = computed(() => collectionOf(model));
|
|
178
|
+
const layout = untrack(() => createLayout(model.layout));
|
|
179
|
+
let state;
|
|
180
|
+
const scrollView = createScrollView(el, {
|
|
181
|
+
contentSize: () => untrack(() => state?.contentSize() ?? new Size(model.contentSize().width, model.contentSize().height)),
|
|
182
|
+
onVisibleRectChange: (rect) => state?.setVisibleRect(rect),
|
|
183
|
+
onScrollStart: () => {
|
|
184
|
+
state?.startScrolling();
|
|
185
|
+
model.isScrolling.set(true);
|
|
186
|
+
},
|
|
187
|
+
onScrollEnd: () => {
|
|
188
|
+
state?.endScrolling();
|
|
189
|
+
model.isScrolling.set(false);
|
|
190
|
+
},
|
|
191
|
+
direction: dir,
|
|
192
|
+
});
|
|
193
|
+
state = createVirtualizerState({
|
|
194
|
+
layout,
|
|
195
|
+
collection,
|
|
196
|
+
renderView: (_type, content) => content,
|
|
197
|
+
onVisibleRectChange(rect) {
|
|
198
|
+
setScrollLeft(el, dir(), rect.x);
|
|
199
|
+
el.scrollTop = rect.y;
|
|
200
|
+
},
|
|
201
|
+
persistedKeys: () => persistedOf(model),
|
|
202
|
+
layoutOptions: model.layoutOptions,
|
|
203
|
+
initialVisibleRect: new Rect(getScrollLeft(el, dir()), el.scrollTop, el.clientWidth, el.clientHeight),
|
|
204
|
+
});
|
|
205
|
+
const driver = { state, scrollView, loadingMore: false, lastItems: undefined };
|
|
206
|
+
drivers.set(el, driver);
|
|
207
|
+
scrollView.updateSize();
|
|
208
|
+
// Project engine views into the model (the rows' For), then measure estimated views once rendered.
|
|
209
|
+
let observer = null;
|
|
210
|
+
const observed = new WeakSet();
|
|
211
|
+
const measureQueue = new Set();
|
|
212
|
+
let scheduled = false;
|
|
213
|
+
const measure = () => {
|
|
214
|
+
scheduled = false;
|
|
215
|
+
for (const key of measureQueue) {
|
|
216
|
+
const element = viewElement(el, key);
|
|
217
|
+
if (element)
|
|
218
|
+
measureItem(state.virtualizer, key, element);
|
|
219
|
+
}
|
|
220
|
+
measureQueue.clear();
|
|
221
|
+
};
|
|
222
|
+
const schedule = (key) => {
|
|
223
|
+
measureQueue.add(key);
|
|
224
|
+
if (!scheduled) {
|
|
225
|
+
scheduled = true;
|
|
226
|
+
queueMicrotask(measure);
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
if (model.shouldObserveItemSize && typeof ResizeObserver !== "undefined") {
|
|
230
|
+
observer = new ResizeObserver((entries) => {
|
|
231
|
+
for (const entry of entries) {
|
|
232
|
+
const key = entry.target.parentElement?.closest("[data-rv-view]")?.dataset.rvView;
|
|
233
|
+
const view = key == null ? undefined : [...flatten(untrack(model.views)).values()].find((v) => String(v.key) === key);
|
|
234
|
+
if (view)
|
|
235
|
+
schedule(view.key);
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
computedEffect(() => {
|
|
240
|
+
const views = state.visibleViews();
|
|
241
|
+
const contentSize = state.contentSize();
|
|
242
|
+
untrack(() => {
|
|
243
|
+
const previous = flatten(model.views());
|
|
244
|
+
// Rows leaving the window read their last descriptor (viewOf); on a resumed page no row accessor ran
|
|
245
|
+
// before this first projection, so the replaced (server) views seed that cache.
|
|
246
|
+
remember(model, previous);
|
|
247
|
+
const next = projectViews(views, model.dir, previous);
|
|
248
|
+
model.views.set(next);
|
|
249
|
+
const size = model.contentSize();
|
|
250
|
+
if (size.width !== contentSize.width || size.height !== contentSize.height)
|
|
251
|
+
model.contentSize.set(sizeOfContent(contentSize));
|
|
252
|
+
const visit = (list) => {
|
|
253
|
+
for (const view of list) {
|
|
254
|
+
if (view.estimated)
|
|
255
|
+
schedule(view.key);
|
|
256
|
+
visit(view.children);
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
visit(next);
|
|
260
|
+
if (observer)
|
|
261
|
+
queueMicrotask(() => {
|
|
262
|
+
for (const element of el.querySelectorAll("[data-rv-view]"))
|
|
263
|
+
for (const child of element.children)
|
|
264
|
+
if (!observed.has(child))
|
|
265
|
+
(observed.add(child), observer.observe(child));
|
|
266
|
+
});
|
|
267
|
+
});
|
|
268
|
+
});
|
|
269
|
+
return driver;
|
|
270
|
+
}
|
|
271
|
+
// The driver's projection effect: its own root (created under the detached driver, so it outlives region re-creation).
|
|
272
|
+
function computedEffect(fn) {
|
|
273
|
+
createRoot(() => effect(fn));
|
|
274
|
+
}
|
|
275
|
+
/** Rows of the model: the server window, or (browser) the driver's projection; reads `items` for reactivity. */
|
|
276
|
+
export function visibleViews(model) {
|
|
277
|
+
if (model.source) {
|
|
278
|
+
// Collection mode: a rebuilt collection or a focus move (persisted key) starts the driver on a resumed page.
|
|
279
|
+
model.source();
|
|
280
|
+
model.focus?.();
|
|
281
|
+
}
|
|
282
|
+
else if (typeof model.items === "function")
|
|
283
|
+
model.items();
|
|
284
|
+
if (typeof model.isLoading === "function")
|
|
285
|
+
model.isLoading();
|
|
286
|
+
if (typeof document !== "undefined")
|
|
287
|
+
untrack(() => driverOf(model) ?? (model.source && startWhenMounted(model)));
|
|
288
|
+
return model.views();
|
|
289
|
+
}
|
|
290
|
+
let mounting;
|
|
291
|
+
/**
|
|
292
|
+
* Collection mode, client render: the host element exists but is not in the document during its first pass. Start
|
|
293
|
+
* the engine once it is (RAC measures the scroll view on mount); the server window stays until then.
|
|
294
|
+
*/
|
|
295
|
+
function startWhenMounted(model) {
|
|
296
|
+
if ((mounting ??= new WeakSet()).has(model) || !scrollerOf(model))
|
|
297
|
+
return null;
|
|
298
|
+
mounting.add(model);
|
|
299
|
+
queueMicrotask(() => {
|
|
300
|
+
mounting.delete(model);
|
|
301
|
+
untrack(() => driverOf(model));
|
|
302
|
+
});
|
|
303
|
+
return null;
|
|
304
|
+
}
|
|
305
|
+
/** Keys of `views`: the rows' `For` items. Keys keep their identity across windows, so resumed server rows are
|
|
306
|
+
* adopted and kept (a `For` re-creates an adopted row whose item changed; view descriptors change on every move). */
|
|
307
|
+
export const viewKeys = (views) => views.map((view) => view.key);
|
|
308
|
+
const byLayoutOrder = (a, b) => a.y - b.y || a.x - b.x;
|
|
309
|
+
/** Keys in layout order (top to bottom, then start to end); the engine's reusable views come in recycling order. */
|
|
310
|
+
export const orderedViewKeys = (views) => views
|
|
311
|
+
.slice()
|
|
312
|
+
.sort(byLayoutOrder)
|
|
313
|
+
.map((view) => view.key);
|
|
314
|
+
/** `rowOrder` parent of the root views. */
|
|
315
|
+
export const ROOT_VIEW = {};
|
|
316
|
+
let orders;
|
|
317
|
+
/**
|
|
318
|
+
* The keyed rows' order: layout order (top to bottom) — except while DOM focus is inside the collection, when kept
|
|
319
|
+
* keys keep their DOM order and new ones go last. A keyed list moves (detaches) a kept row to reorder it, and a
|
|
320
|
+
* detached focused option / cell loses focus (keyboard navigation across the window edge inserts rows before the
|
|
321
|
+
* focused one). Positions are absolute: DOM order is not visual order; options carry `aria-posinset`, rows
|
|
322
|
+
* `aria-rowindex` (RAC renders in the engine's recycling order).
|
|
323
|
+
*/
|
|
324
|
+
export function rowOrder(model, parent, views) {
|
|
325
|
+
const next = orderedViewKeys(views);
|
|
326
|
+
if (typeof document === "undefined")
|
|
327
|
+
return next;
|
|
328
|
+
const byParent = (orders ??= new WeakMap()).get(model) ?? new Map();
|
|
329
|
+
orders.set(model, byParent);
|
|
330
|
+
const prev = byParent.get(parent);
|
|
331
|
+
const scroller = model.scrollRef?.();
|
|
332
|
+
if (prev && scroller?.contains(document.activeElement)) {
|
|
333
|
+
const present = new Set(next);
|
|
334
|
+
const kept = prev.filter((key) => present.has(key));
|
|
335
|
+
const known = new Set(kept);
|
|
336
|
+
for (const key of next)
|
|
337
|
+
if (!known.has(key))
|
|
338
|
+
kept.push(key);
|
|
339
|
+
byParent.set(parent, kept);
|
|
340
|
+
return kept;
|
|
341
|
+
}
|
|
342
|
+
byParent.set(parent, next);
|
|
343
|
+
return next;
|
|
344
|
+
}
|
|
345
|
+
let indexes;
|
|
346
|
+
let last;
|
|
347
|
+
const seenOf = (model) => {
|
|
348
|
+
let seen = (last ??= new WeakMap()).get(model);
|
|
349
|
+
if (!seen)
|
|
350
|
+
last.set(model, (seen = new Map()));
|
|
351
|
+
return seen;
|
|
352
|
+
};
|
|
353
|
+
// The views a projection replaces: rows removed by it still find their descriptor.
|
|
354
|
+
function remember(model, views) {
|
|
355
|
+
const seen = seenOf(model);
|
|
356
|
+
for (const [key, view] of views)
|
|
357
|
+
seen.set(key, view);
|
|
358
|
+
}
|
|
359
|
+
/** The view with `key` in `views` (a row's descriptor); a row being removed keeps its last descriptor. */
|
|
360
|
+
export function viewOf(model, views, key) {
|
|
361
|
+
let index = (indexes ??= new WeakMap()).get(views);
|
|
362
|
+
if (!index)
|
|
363
|
+
indexes.set(views, (index = new Map(views.map((view) => [view.key, view]))));
|
|
364
|
+
const seen = seenOf(model);
|
|
365
|
+
const view = index.get(key);
|
|
366
|
+
if (!view)
|
|
367
|
+
return seen.get(key);
|
|
368
|
+
seen.set(key, view);
|
|
369
|
+
return view;
|
|
370
|
+
}
|
|
371
|
+
let trees;
|
|
372
|
+
/**
|
|
373
|
+
* Collection mode: the child views of the view with key `parentKey` (a host part's `CollectionBranch`: section items,
|
|
374
|
+
* table header rows / columns, body rows, cells), from the whole projected tree; `[]` when it is not rendered.
|
|
375
|
+
*/
|
|
376
|
+
export function childViews(model, parentKey) {
|
|
377
|
+
const views = model.views();
|
|
378
|
+
let tree = (trees ??= new WeakMap()).get(views);
|
|
379
|
+
if (!tree)
|
|
380
|
+
trees.set(views, (tree = flatten(views)));
|
|
381
|
+
return (tree.get(parentKey)?.children ?? EMPTY);
|
|
382
|
+
}
|
|
383
|
+
const EMPTY = [];
|
|
384
|
+
/** Scroll handler of the scroller: drive the engine, load more near the end, then the caller's `onScroll`. */
|
|
385
|
+
export function virtualizerScroll(model, event) {
|
|
386
|
+
const el = event.currentTarget;
|
|
387
|
+
const driver = driverOf(model, el);
|
|
388
|
+
if (!driver)
|
|
389
|
+
return;
|
|
390
|
+
driver.scrollView.onScroll(event);
|
|
391
|
+
loadMore(model, driver, el);
|
|
392
|
+
model.onScroll?.(event);
|
|
393
|
+
}
|
|
394
|
+
function loadMore(model, driver, el) {
|
|
395
|
+
if (!model.onLoadMore)
|
|
396
|
+
return;
|
|
397
|
+
const items = untrack(() => read(model.items));
|
|
398
|
+
const loading = untrack(() => !!read(model.isLoading ?? false));
|
|
399
|
+
// A finished load (new items or loading flag reset) re-arms the trigger.
|
|
400
|
+
if (items !== driver.lastItems || loading)
|
|
401
|
+
driver.loadingMore = loading;
|
|
402
|
+
driver.lastItems = items;
|
|
403
|
+
if (driver.loadingMore)
|
|
404
|
+
return;
|
|
405
|
+
if (el.scrollHeight - el.scrollTop - el.clientHeight < el.clientHeight * model.loadMoreOffset) {
|
|
406
|
+
driver.loadingMore = true;
|
|
407
|
+
model.onLoadMore();
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
/** focusin: the focused view stays rendered (persisted) while scrolled out of view. */
|
|
411
|
+
export function virtualizerFocusIn(model, event) {
|
|
412
|
+
const key = event.target?.closest?.("[data-rv-view]")?.dataset.rvView;
|
|
413
|
+
if (key == null)
|
|
414
|
+
return;
|
|
415
|
+
const view = [...flatten(untrack(model.views)).values()].find((v) => String(v.key) === key);
|
|
416
|
+
if (view && untrack(model.focusedKey) !== view.key)
|
|
417
|
+
model.focusedKey.set(view.key);
|
|
418
|
+
driverOf(model, event.currentTarget);
|
|
419
|
+
}
|
|
420
|
+
/** Style of the content element (size of the scrollable content; no pointer events while scrolling). */
|
|
421
|
+
export function contentStyle(model) {
|
|
422
|
+
const { width, height } = model.contentSize();
|
|
423
|
+
return {
|
|
424
|
+
position: "relative",
|
|
425
|
+
width: Number.isFinite(width) && width > 0 ? width + "px" : undefined,
|
|
426
|
+
height: Number.isFinite(height) ? height + "px" : undefined,
|
|
427
|
+
"pointer-events": model.isScrolling() ? "none" : undefined,
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
/** Style of the scroller: overflow per scroll direction, padding reset (padding is done by the layout). */
|
|
431
|
+
export function scrollerStyle(scrollDirection) {
|
|
432
|
+
return scrollDirection === "horizontal"
|
|
433
|
+
? { padding: "0", "overflow-x": "auto", "overflow-y": "hidden" }
|
|
434
|
+
: scrollDirection === "vertical"
|
|
435
|
+
? { padding: "0", "overflow-y": "auto", "overflow-x": "hidden" }
|
|
436
|
+
: { padding: "0", overflow: "auto" };
|
|
437
|
+
}
|