@rivetjs/cdk 0.0.0-stage → 0.1.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/NOTICE +483 -0
- package/README.md +10 -2
- package/_adapters/collection.d.ts +160 -0
- package/_adapters/collection.js +235 -0
- package/_adapters/collections.d.ts +325 -0
- package/_adapters/collections.js +934 -0
- package/_adapters/dom-collection.d.ts +42 -0
- package/_adapters/dom-collection.js +228 -0
- package/_adapters/grid-selection.d.ts +115 -0
- package/_adapters/grid-selection.js +436 -0
- package/_adapters/interactions.d.ts +19 -0
- package/_adapters/interactions.js +45 -0
- package/_adapters/intl.d.ts +8 -0
- package/_adapters/intl.js +106 -0
- package/_adapters/press.d.ts +22 -0
- package/_adapters/press.js +34 -0
- package/_adapters/selectable.d.ts +132 -0
- package/_adapters/selectable.js +599 -0
- package/_adapters/selection.d.ts +120 -0
- package/_adapters/selection.js +709 -0
- package/_adapters/type-select.d.ts +8 -0
- package/_adapters/type-select.js +59 -0
- package/a11y/aria-describer.d.ts +46 -0
- package/a11y/aria-describer.js +169 -0
- package/a11y/focus-monitor.d.ts +98 -0
- package/a11y/focus-monitor.js +321 -0
- package/a11y/focus-trap.d.ts +137 -0
- package/a11y/focus-trap.js +378 -0
- package/a11y/high-contrast.d.ts +26 -0
- package/a11y/high-contrast.js +84 -0
- package/a11y/index.d.ts +37 -0
- package/a11y/index.js +97 -0
- package/a11y/interactivity-checker.d.ts +18 -0
- package/a11y/interactivity-checker.js +126 -0
- package/a11y/key-manager.d.ts +152 -0
- package/a11y/key-manager.js +397 -0
- package/a11y/live-announcer.d.ts +53 -0
- package/a11y/live-announcer.js +143 -0
- package/accordion/index.d.ts +2 -0
- package/accordion/index.jsx +10 -0
- package/announcer/index.d.ts +8 -0
- package/announcer/index.jsx +22 -0
- package/announcer/live-announcer.d.ts +15 -0
- package/announcer/live-announcer.js +123 -0
- package/autocomplete/behaviour.d.ts +94 -0
- package/autocomplete/behaviour.jsx +423 -0
- package/autocomplete/contexts.d.ts +54 -0
- package/autocomplete/contexts.js +28 -0
- package/autocomplete/index.d.ts +12 -0
- package/autocomplete/index.jsx +31 -0
- package/autocomplete/intl.d.ts +2 -0
- package/autocomplete/intl.js +36 -0
- package/bidi/bidi-dir.d.ts +23 -0
- package/bidi/bidi-dir.jsx +36 -0
- package/bidi/index.d.ts +58 -0
- package/bidi/index.js +84 -0
- package/breadcrumbs/behaviour.d.ts +6 -0
- package/breadcrumbs/behaviour.js +17 -0
- package/breadcrumbs/index.d.ts +68 -0
- package/breadcrumbs/index.jsx +224 -0
- package/breadcrumbs/intl.d.ts +3 -0
- package/breadcrumbs/intl.js +104 -0
- package/button/behaviour.d.ts +61 -0
- package/button/behaviour.js +90 -0
- package/button/index.d.ts +38 -0
- package/button/index.jsx +376 -0
- package/button/press.d.ts +25 -0
- package/button/press.js +54 -0
- package/calendar/behaviour.d.ts +250 -0
- package/calendar/behaviour.jsx +939 -0
- package/calendar/index.d.ts +157 -0
- package/calendar/index.jsx +484 -0
- package/calendar/intl.d.ts +3 -0
- package/calendar/intl.js +36 -0
- package/carousel/behaviour.d.ts +50 -0
- package/carousel/behaviour.jsx +365 -0
- package/carousel/engine/Alignment.d.ts +5 -0
- package/carousel/engine/Alignment.js +24 -0
- package/carousel/engine/Animations.d.ts +13 -0
- package/carousel/engine/Animations.js +28 -0
- package/carousel/engine/Axis.d.ts +14 -0
- package/carousel/engine/Axis.js +35 -0
- package/carousel/engine/Counter.d.ts +7 -0
- package/carousel/engine/Counter.js +32 -0
- package/carousel/engine/DragHandler.d.ts +22 -0
- package/carousel/engine/DragHandler.js +141 -0
- package/carousel/engine/DragTracker.d.ts +10 -0
- package/carousel/engine/DragTracker.js +29 -0
- package/carousel/engine/EmblaCarousel.d.ts +32 -0
- package/carousel/engine/EmblaCarousel.js +177 -0
- package/carousel/engine/Engine.d.ts +64 -0
- package/carousel/engine/Engine.js +137 -0
- package/carousel/engine/EventHandler.d.ts +27 -0
- package/carousel/engine/EventHandler.js +33 -0
- package/carousel/engine/EventStore.d.ts +9 -0
- package/carousel/engine/EventStore.js +25 -0
- package/carousel/engine/NodeRects.d.ts +12 -0
- package/carousel/engine/NodeRects.js +18 -0
- package/carousel/engine/Options.d.ts +40 -0
- package/carousel/engine/Options.js +22 -0
- package/carousel/engine/OptionsHandler.d.ts +10 -0
- package/carousel/engine/OptionsHandler.js +26 -0
- package/carousel/engine/PercentOfView.d.ts +4 -0
- package/carousel/engine/PercentOfView.js +9 -0
- package/carousel/engine/Plugins.d.ts +16 -0
- package/carousel/engine/Plugins.js +1 -0
- package/carousel/engine/PluginsHandler.d.ts +8 -0
- package/carousel/engine/PluginsHandler.js +16 -0
- package/carousel/engine/ResizeHandler.d.ts +13 -0
- package/carousel/engine/ResizeHandler.js +51 -0
- package/carousel/engine/ScrollBounds.d.ts +10 -0
- package/carousel/engine/ScrollBounds.js +41 -0
- package/carousel/engine/ScrollContain.d.ts +7 -0
- package/carousel/engine/ScrollContain.js +52 -0
- package/carousel/engine/ScrollLimit.d.ts +5 -0
- package/carousel/engine/ScrollLimit.js +13 -0
- package/carousel/engine/ScrollLooper.d.ts +6 -0
- package/carousel/engine/ScrollLooper.js +26 -0
- package/carousel/engine/ScrollProgress.d.ts +5 -0
- package/carousel/engine/ScrollProgress.js +11 -0
- package/carousel/engine/ScrollSnaps.d.ts +9 -0
- package/carousel/engine/ScrollSnaps.js +26 -0
- package/carousel/engine/ScrollTarget.d.ts +12 -0
- package/carousel/engine/ScrollTarget.js +47 -0
- package/carousel/engine/ScrollTo.d.ts +11 -0
- package/carousel/engine/ScrollTo.js +36 -0
- package/carousel/engine/SlideFocus.d.ts +13 -0
- package/carousel/engine/SlideFocus.js +39 -0
- package/carousel/engine/SlideLooper.d.ts +18 -0
- package/carousel/engine/SlideLooper.js +78 -0
- package/carousel/engine/SlideRegistry.d.ts +7 -0
- package/carousel/engine/SlideRegistry.js +31 -0
- package/carousel/engine/SlideSizes.d.ts +10 -0
- package/carousel/engine/SlideSizes.js +41 -0
- package/carousel/engine/SlidesHandler.d.ts +10 -0
- package/carousel/engine/SlidesHandler.js +36 -0
- package/carousel/engine/SlidesInView.d.ts +8 -0
- package/carousel/engine/SlidesInView.js +59 -0
- package/carousel/engine/SlidesToScroll.d.ts +7 -0
- package/carousel/engine/SlidesToScroll.js +41 -0
- package/carousel/engine/Translate.d.ts +7 -0
- package/carousel/engine/Translate.js +38 -0
- package/carousel/engine/index.d.ts +11 -0
- package/carousel/engine/index.js +1 -0
- package/carousel/engine/utils.d.ts +15 -0
- package/carousel/engine/utils.js +45 -0
- package/carousel/index.d.ts +202 -0
- package/carousel/index.jsx +469 -0
- package/carousel/plugins/auto-height/AutoHeight.d.ts +14 -0
- package/carousel/plugins/auto-height/AutoHeight.js +43 -0
- package/carousel/plugins/auto-height/Options.d.ts +2 -0
- package/carousel/plugins/auto-height/Options.js +1 -0
- package/carousel/plugins/auto-height/index.d.ts +2 -0
- package/carousel/plugins/auto-height/index.js +1 -0
- package/carousel/plugins/auto-scroll/AutoScroll.d.ts +25 -0
- package/carousel/plugins/auto-scroll/AutoScroll.js +185 -0
- package/carousel/plugins/auto-scroll/Options.d.ts +13 -0
- package/carousel/plugins/auto-scroll/Options.js +12 -0
- package/carousel/plugins/auto-scroll/index.d.ts +2 -0
- package/carousel/plugins/auto-scroll/index.js +1 -0
- package/carousel/plugins/auto-scroll/utils.d.ts +3 -0
- package/carousel/plugins/auto-scroll/utils.js +4 -0
- package/carousel/plugins/autoplay/Autoplay.d.ts +29 -0
- package/carousel/plugins/autoplay/Autoplay.js +173 -0
- package/carousel/plugins/autoplay/Options.d.ts +14 -0
- package/carousel/plugins/autoplay/Options.js +12 -0
- package/carousel/plugins/autoplay/index.d.ts +2 -0
- package/carousel/plugins/autoplay/index.js +1 -0
- package/carousel/plugins/autoplay/utils.d.ts +4 -0
- package/carousel/plugins/autoplay/utils.js +11 -0
- package/carousel/plugins/class-names/ClassNames.d.ts +14 -0
- package/carousel/plugins/class-names/ClassNames.js +98 -0
- package/carousel/plugins/class-names/Options.d.ts +13 -0
- package/carousel/plugins/class-names/Options.js +9 -0
- package/carousel/plugins/class-names/index.d.ts +2 -0
- package/carousel/plugins/class-names/index.js +1 -0
- package/carousel/plugins/class-names/utils.d.ts +4 -0
- package/carousel/plugins/class-names/utils.js +14 -0
- package/carousel/plugins/fade/Fade.d.ts +14 -0
- package/carousel/plugins/fade/Fade.js +199 -0
- package/carousel/plugins/fade/Options.d.ts +2 -0
- package/carousel/plugins/fade/Options.js +1 -0
- package/carousel/plugins/fade/index.d.ts +2 -0
- package/carousel/plugins/fade/index.js +1 -0
- package/carousel/plugins/fade/utils.d.ts +2 -0
- package/carousel/plugins/fade/utils.js +8 -0
- package/carousel/state.d.ts +81 -0
- package/carousel/state.js +71 -0
- package/chat/index.d.ts +83 -0
- package/chat/index.jsx +287 -0
- package/checkbox/behaviour.d.ts +172 -0
- package/checkbox/behaviour.jsx +412 -0
- package/checkbox/index.d.ts +168 -0
- package/checkbox/index.jsx +310 -0
- package/clipboard/index.d.ts +49 -0
- package/clipboard/index.js +136 -0
- package/coercion/index.d.ts +36 -0
- package/coercion/index.js +58 -0
- package/collections/base.d.ts +115 -0
- package/collections/base.js +346 -0
- package/collections/builder.d.ts +44 -0
- package/collections/builder.js +283 -0
- package/collections/components.d.ts +252 -0
- package/collections/components.jsx +745 -0
- package/collections/data-source.d.ts +26 -0
- package/collections/data-source.js +27 -0
- package/collections/dom.d.ts +34 -0
- package/collections/dom.js +127 -0
- package/collections/grid.d.ts +45 -0
- package/collections/grid.js +125 -0
- package/collections/hidden.d.ts +4 -0
- package/collections/hidden.js +12 -0
- package/collections/index.d.ts +45 -0
- package/collections/index.js +105 -0
- package/collections/list-state.d.ts +99 -0
- package/collections/list-state.js +156 -0
- package/collections/list.d.ts +20 -0
- package/collections/list.js +77 -0
- package/collections/nodes.d.ts +17 -0
- package/collections/nodes.js +107 -0
- package/collections/row-stamps.d.ts +17 -0
- package/collections/row-stamps.js +108 -0
- package/collections/selection-model.d.ts +93 -0
- package/collections/selection-model.js +192 -0
- package/collections/server-dev.d.ts +6 -0
- package/collections/server-dev.js +18 -0
- package/collections/server-off.d.ts +6 -0
- package/collections/server-off.js +9 -0
- package/collections/server-on.d.ts +29 -0
- package/collections/server-on.jsx +86 -0
- package/collections/table.d.ts +114 -0
- package/collections/table.js +439 -0
- package/collections/tree-state.d.ts +47 -0
- package/collections/tree-state.js +73 -0
- package/collections/tree.d.ts +20 -0
- package/collections/tree.js +66 -0
- package/collections/types.d.ts +229 -0
- package/collections/types.js +4 -0
- package/collections/unique-selection-dispatcher.d.ts +10 -0
- package/collections/unique-selection-dispatcher.js +25 -0
- package/color/area-state.d.ts +99 -0
- package/color/area-state.js +160 -0
- package/color/aria-intl.d.ts +3 -0
- package/color/aria-intl.js +274 -0
- package/color/channel-field-state.d.ts +50 -0
- package/color/channel-field-state.jsx +87 -0
- package/color/color.d.ts +78 -0
- package/color/color.js +738 -0
- package/color/field-state.d.ts +66 -0
- package/color/field-state.jsx +159 -0
- package/color/index.d.ts +58 -0
- package/color/index.js +88 -0
- package/color/intl.d.ts +3 -0
- package/color/intl.js +1328 -0
- package/color/picker-state.d.ts +20 -0
- package/color/picker-state.js +19 -0
- package/color/slider-state.d.ts +78 -0
- package/color/slider-state.jsx +98 -0
- package/color/value.d.ts +27 -0
- package/color/value.js +36 -0
- package/color/wheel-state.d.ts +77 -0
- package/color/wheel-state.js +152 -0
- package/color-area/behaviour.d.ts +161 -0
- package/color-area/behaviour.jsx +454 -0
- package/color-area/index.d.ts +34 -0
- package/color-area/index.jsx +187 -0
- package/color-field/behaviour.d.ts +112 -0
- package/color-field/behaviour.jsx +262 -0
- package/color-field/index.d.ts +72 -0
- package/color-field/index.jsx +309 -0
- package/color-picker/index.d.ts +19 -0
- package/color-picker/index.jsx +49 -0
- package/color-slider/behaviour.d.ts +103 -0
- package/color-slider/behaviour.jsx +234 -0
- package/color-slider/index.d.ts +40 -0
- package/color-slider/index.jsx +162 -0
- package/color-swatch/behaviour.d.ts +40 -0
- package/color-swatch/behaviour.js +36 -0
- package/color-swatch/index.d.ts +29 -0
- package/color-swatch/index.jsx +82 -0
- package/color-swatch-picker/index.d.ts +62 -0
- package/color-swatch-picker/index.jsx +95 -0
- package/color-swatch-picker/intl.d.ts +3 -0
- package/color-swatch-picker/intl.js +104 -0
- package/color-thumb/index.d.ts +85 -0
- package/color-thumb/index.jsx +93 -0
- package/color-wheel/behaviour.d.ts +123 -0
- package/color-wheel/behaviour.jsx +301 -0
- package/color-wheel/index.d.ts +50 -0
- package/color-wheel/index.jsx +166 -0
- package/combobox/behaviour.d.ts +120 -0
- package/combobox/behaviour.jsx +588 -0
- package/combobox/index.d.ts +101 -0
- package/combobox/index.jsx +365 -0
- package/combobox/intl.d.ts +2 -0
- package/combobox/intl.js +240 -0
- package/compare/behaviour.d.ts +101 -0
- package/compare/behaviour.js +288 -0
- package/compare/index.d.ts +58 -0
- package/compare/index.jsx +129 -0
- package/data/async-list.d.ts +78 -0
- package/data/async-list.jsx +257 -0
- package/data/index.d.ts +3 -0
- package/data/index.jsx +6 -0
- package/data/list-data.d.ts +88 -0
- package/data/list-data.jsx +210 -0
- package/data/tree-data.d.ts +59 -0
- package/data/tree-data.jsx +278 -0
- package/data-grid/behaviour.d.ts +95 -0
- package/data-grid/behaviour.js +725 -0
- package/data-grid/index.d.ts +138 -0
- package/data-grid/index.jsx +452 -0
- package/data-grid/state.d.ts +131 -0
- package/data-grid/state.js +288 -0
- package/date/CalendarDate.d.ts +207 -0
- package/date/CalendarDate.js +374 -0
- package/date/DateFormatter.d.ts +24 -0
- package/date/DateFormatter.js +175 -0
- package/date/calendars/BuddhistCalendar.d.ts +16 -0
- package/date/calendars/BuddhistCalendar.js +46 -0
- package/date/calendars/EthiopicCalendar.d.ts +45 -0
- package/date/calendars/EthiopicCalendar.js +178 -0
- package/date/calendars/GregorianCalendar.d.ts +26 -0
- package/date/calendars/GregorianCalendar.js +122 -0
- package/date/calendars/HebrewCalendar.d.ts +21 -0
- package/date/calendars/HebrewCalendar.js +174 -0
- package/date/calendars/IndianCalendar.d.ts +17 -0
- package/date/calendars/IndianCalendar.js +111 -0
- package/date/calendars/IslamicCalendar.d.ts +51 -0
- package/date/calendars/IslamicCalendar.js +205 -0
- package/date/calendars/JapaneseCalendar.d.ts +22 -0
- package/date/calendars/JapaneseCalendar.js +148 -0
- package/date/calendars/PersianCalendar.d.ts +19 -0
- package/date/calendars/PersianCalendar.js +85 -0
- package/date/calendars/TaiwanCalendar.d.ts +19 -0
- package/date/calendars/TaiwanCalendar.js +70 -0
- package/date/conversion.d.ts +45 -0
- package/date/conversion.js +269 -0
- package/date/createCalendar.d.ts +3 -0
- package/date/createCalendar.js +55 -0
- package/date/index.d.ts +20 -0
- package/date/index.js +30 -0
- package/date/manipulation.d.ts +25 -0
- package/date/manipulation.js +399 -0
- package/date/queries.d.ts +93 -0
- package/date/queries.js +303 -0
- package/date/serialize.d.ts +18 -0
- package/date/serialize.js +55 -0
- package/date/string.d.ts +36 -0
- package/date/string.js +223 -0
- package/date/types.d.ts +136 -0
- package/date/types.js +14 -0
- package/date/utils.d.ts +4 -0
- package/date/utils.js +16 -0
- package/date/weekStartData.d.ts +1 -0
- package/date/weekStartData.js +112 -0
- package/date-field/behaviour.d.ts +188 -0
- package/date-field/behaviour.jsx +1025 -0
- package/date-field/index.d.ts +150 -0
- package/date-field/index.jsx +354 -0
- package/date-field/intl.d.ts +3 -0
- package/date-field/intl.js +36 -0
- package/date-field/live-value.d.ts +22 -0
- package/date-field/live-value.jsx +44 -0
- package/date-picker/behaviour.d.ts +95 -0
- package/date-picker/behaviour.jsx +343 -0
- package/date-picker/index.d.ts +66 -0
- package/date-picker/index.jsx +243 -0
- package/dialog/behaviour.d.ts +63 -0
- package/dialog/behaviour.jsx +90 -0
- package/dialog/contexts.d.ts +12 -0
- package/dialog/contexts.js +8 -0
- package/dialog/index.d.ts +48 -0
- package/dialog/index.jsx +301 -0
- package/disclosure/behaviour.d.ts +50 -0
- package/disclosure/behaviour.jsx +128 -0
- package/disclosure/details.d.ts +21 -0
- package/disclosure/details.jsx +14 -0
- package/disclosure/index.d.ts +92 -0
- package/disclosure/index.jsx +300 -0
- package/drag-drop/cdk-index.d.ts +22 -0
- package/drag-drop/cdk-index.jsx +25 -0
- package/drag-drop/directives/assertions.d.ts +6 -0
- package/drag-drop/directives/assertions.js +13 -0
- package/drag-drop/directives/config.d.ts +30 -0
- package/drag-drop/directives/config.js +7 -0
- package/drag-drop/directives/drag-handle.d.ts +10 -0
- package/drag-drop/directives/drag-handle.js +29 -0
- package/drag-drop/directives/drag.d.ts +210 -0
- package/drag-drop/directives/drag.js +550 -0
- package/drag-drop/directives/drop-list-group.d.ts +25 -0
- package/drag-drop/directives/drop-list-group.js +55 -0
- package/drag-drop/directives/drop-list.d.ts +163 -0
- package/drag-drop/directives/drop-list.js +396 -0
- package/drag-drop/directives/registry.d.ts +32 -0
- package/drag-drop/directives/registry.js +61 -0
- package/drag-drop/dom/clone-node.d.ts +2 -0
- package/drag-drop/dom/clone-node.js +58 -0
- package/drag-drop/dom/coerce.d.ts +6 -0
- package/drag-drop/dom/coerce.js +8 -0
- package/drag-drop/dom/dom-rect.d.ts +37 -0
- package/drag-drop/dom/dom-rect.js +71 -0
- package/drag-drop/dom/fake-event.d.ts +4 -0
- package/drag-drop/dom/fake-event.js +22 -0
- package/drag-drop/dom/inherited-text.d.ts +4 -0
- package/drag-drop/dom/inherited-text.js +44 -0
- package/drag-drop/dom/layout-shift.d.ts +8 -0
- package/drag-drop/dom/layout-shift.js +87 -0
- package/drag-drop/dom/mount-content.d.ts +2 -0
- package/drag-drop/dom/mount-content.js +7 -0
- package/drag-drop/dom/parent-position-tracker.d.ts +32 -0
- package/drag-drop/dom/parent-position-tracker.js +71 -0
- package/drag-drop/dom/root-node.d.ts +21 -0
- package/drag-drop/dom/root-node.js +41 -0
- package/drag-drop/dom/shadow-dom.d.ts +4 -0
- package/drag-drop/dom/shadow-dom.js +18 -0
- package/drag-drop/dom/styling.d.ts +52 -0
- package/drag-drop/dom/styling.js +86 -0
- package/drag-drop/dom/transition-duration.d.ts +2 -0
- package/drag-drop/dom/transition-duration.js +29 -0
- package/drag-drop/drag-drop-registry.d.ts +69 -0
- package/drag-drop/drag-drop-registry.js +224 -0
- package/drag-drop/drag-drop.d.ts +19 -0
- package/drag-drop/drag-drop.js +10 -0
- package/drag-drop/drag-events.d.ts +117 -0
- package/drag-drop/drag-events.js +1 -0
- package/drag-drop/drag-handle.d.ts +18 -0
- package/drag-drop/drag-handle.jsx +53 -0
- package/drag-drop/drag-placeholder.d.ts +8 -0
- package/drag-drop/drag-placeholder.jsx +25 -0
- package/drag-drop/drag-preview.d.ts +10 -0
- package/drag-drop/drag-preview.jsx +31 -0
- package/drag-drop/drag-ref.d.ts +476 -0
- package/drag-drop/drag-ref.js +1306 -0
- package/drag-drop/drag-utils.d.ts +25 -0
- package/drag-drop/drag-utils.js +53 -0
- package/drag-drop/drag.d.ts +23 -0
- package/drag-drop/drag.jsx +128 -0
- package/drag-drop/drop-list-group.d.ts +22 -0
- package/drag-drop/drop-list-group.jsx +19 -0
- package/drag-drop/drop-list-ref.d.ts +295 -0
- package/drag-drop/drop-list-ref.js +707 -0
- package/drag-drop/drop-list.d.ts +19 -0
- package/drag-drop/drop-list.jsx +87 -0
- package/drag-drop/index.d.ts +1 -0
- package/drag-drop/index.jsx +4 -0
- package/drag-drop/lazy-refs.d.ts +28 -0
- package/drag-drop/lazy-refs.js +144 -0
- package/drag-drop/preview-ref.d.ts +38 -0
- package/drag-drop/preview-ref.js +132 -0
- package/drag-drop/sorting/drop-list-sort-strategy.d.ts +29 -0
- package/drag-drop/sorting/drop-list-sort-strategy.js +1 -0
- package/drag-drop/sorting/mixed-sort-strategy.d.ts +99 -0
- package/drag-drop/sorting/mixed-sort-strategy.js +259 -0
- package/drag-drop/sorting/single-axis-sort-strategy.d.ts +112 -0
- package/drag-drop/sorting/single-axis-sort-strategy.js +343 -0
- package/file-trigger/index.d.ts +24 -0
- package/file-trigger/index.jsx +41 -0
- package/flip/index.d.ts +59 -0
- package/flip/index.js +124 -0
- package/focus/focus-ring.d.ts +42 -0
- package/focus/focus-ring.jsx +77 -0
- package/focus/focus-scope.d.ts +51 -0
- package/focus/focus-scope.jsx +431 -0
- package/focus/focusable.d.ts +33 -0
- package/focus/focusable.jsx +93 -0
- package/focus/index.d.ts +74 -0
- package/focus/index.js +274 -0
- package/form/behaviour.d.ts +29 -0
- package/form/behaviour.js +145 -0
- package/form/field-error.d.ts +38 -0
- package/form/field-error.jsx +67 -0
- package/form/index.d.ts +77 -0
- package/form/index.jsx +116 -0
- package/grid/behaviour.d.ts +290 -0
- package/grid/behaviour.js +683 -0
- package/grid/intl.d.ts +2 -0
- package/grid/intl.js +36 -0
- package/grid/keyboard-delegate.d.ts +56 -0
- package/grid/keyboard-delegate.js +316 -0
- package/grid-list/behaviour.d.ts +248 -0
- package/grid-list/behaviour.js +616 -0
- package/grid-list/index.d.ts +204 -0
- package/grid-list/index.jsx +721 -0
- package/grid-list/row.d.ts +24 -0
- package/grid-list/row.js +57 -0
- package/group/index.d.ts +48 -0
- package/group/index.jsx +126 -0
- package/header/index.d.ts +13 -0
- package/header/index.jsx +34 -0
- package/heading/index.d.ts +19 -0
- package/heading/index.jsx +55 -0
- package/highlight/index.d.ts +12 -0
- package/highlight/index.jsx +357 -0
- package/i18n/filter.d.ts +16 -0
- package/i18n/filter.js +66 -0
- package/i18n/i18n-provider.d.ts +10 -0
- package/i18n/i18n-provider.jsx +15 -0
- package/i18n/index.d.ts +27 -0
- package/i18n/index.js +115 -0
- package/i18n/intl-cache.d.ts +4 -0
- package/i18n/intl-cache.js +40 -0
- package/i18n/list-formatter.d.ts +2 -0
- package/i18n/list-formatter.js +11 -0
- package/input/index.d.ts +51 -0
- package/input/index.jsx +95 -0
- package/interactions/controllable.d.ts +42 -0
- package/interactions/controllable.js +67 -0
- package/interactions/focus-visible.d.ts +68 -0
- package/interactions/focus-visible.jsx +291 -0
- package/interactions/focus.d.ts +58 -0
- package/interactions/focus.jsx +152 -0
- package/interactions/hover.d.ts +54 -0
- package/interactions/hover.jsx +139 -0
- package/interactions/index.d.ts +1 -0
- package/interactions/index.js +3 -0
- package/interactions/interact-outside.d.ts +24 -0
- package/interactions/interact-outside.jsx +57 -0
- package/interactions/keyboard.d.ts +28 -0
- package/interactions/keyboard.jsx +51 -0
- package/interactions/long-press.d.ts +41 -0
- package/interactions/long-press.jsx +79 -0
- package/interactions/merge-props.d.ts +54 -0
- package/interactions/merge-props.jsx +257 -0
- package/interactions/move.d.ts +48 -0
- package/interactions/move.jsx +96 -0
- package/interactions/press.d.ts +129 -0
- package/interactions/press.jsx +539 -0
- package/interactions/pressable.d.ts +22 -0
- package/interactions/pressable.jsx +93 -0
- package/interactions/scroll-wheel.d.ts +20 -0
- package/interactions/scroll-wheel.jsx +40 -0
- package/interactions/utils.d.ts +52 -0
- package/interactions/utils.js +253 -0
- package/keyboard/index.d.ts +12 -0
- package/keyboard/index.jsx +34 -0
- package/keys/index.d.ts +68 -0
- package/keys/index.js +199 -0
- package/label/behaviour.d.ts +54 -0
- package/label/behaviour.js +60 -0
- package/label/index.d.ts +35 -0
- package/label/index.jsx +85 -0
- package/landmark/index.d.ts +10 -0
- package/landmark/index.jsx +35 -0
- package/landmark/manager.d.ts +50 -0
- package/landmark/manager.js +364 -0
- package/layout/index.d.ts +90 -0
- package/layout/index.js +207 -0
- package/lightbox/behaviour.d.ts +82 -0
- package/lightbox/behaviour.js +490 -0
- package/lightbox/captions/index.d.ts +39 -0
- package/lightbox/captions/index.jsx +44 -0
- package/lightbox/counter/index.d.ts +10 -0
- package/lightbox/counter/index.jsx +10 -0
- package/lightbox/download/index.d.ts +32 -0
- package/lightbox/download/index.jsx +89 -0
- package/lightbox/embed/index.d.ts +15 -0
- package/lightbox/embed/index.jsx +58 -0
- package/lightbox/fullscreen/index.d.ts +24 -0
- package/lightbox/fullscreen/index.jsx +80 -0
- package/lightbox/index.d.ts +129 -0
- package/lightbox/index.jsx +284 -0
- package/lightbox/inline/index.d.ts +18 -0
- package/lightbox/inline/index.jsx +15 -0
- package/lightbox/pdf/index.d.ts +18 -0
- package/lightbox/pdf/index.jsx +31 -0
- package/lightbox/share/index.d.ts +29 -0
- package/lightbox/share/index.jsx +43 -0
- package/lightbox/slideshow/index.d.ts +24 -0
- package/lightbox/slideshow/index.jsx +118 -0
- package/lightbox/state.d.ts +334 -0
- package/lightbox/state.js +192 -0
- package/lightbox/thumbnails/index.d.ts +54 -0
- package/lightbox/thumbnails/index.jsx +96 -0
- package/lightbox/video/index.d.ts +13 -0
- package/lightbox/video/index.jsx +42 -0
- package/lightbox/zoom/index.d.ts +67 -0
- package/lightbox/zoom/index.jsx +456 -0
- package/link/behaviour.d.ts +41 -0
- package/link/behaviour.js +58 -0
- package/link/index.d.ts +30 -0
- package/link/index.jsx +179 -0
- package/link/router.d.ts +1 -0
- package/link/router.js +5 -0
- package/listbox/behaviour.d.ts +175 -0
- package/listbox/behaviour.jsx +515 -0
- package/listbox/index.d.ts +129 -0
- package/listbox/index.jsx +632 -0
- package/markdown/index.d.ts +82 -0
- package/markdown/index.jsx +654 -0
- package/masonry/behaviour.d.ts +121 -0
- package/masonry/behaviour.js +676 -0
- package/masonry/flip.d.ts +27 -0
- package/masonry/flip.js +61 -0
- package/masonry/geometry.d.ts +44 -0
- package/masonry/geometry.js +184 -0
- package/masonry/index.d.ts +153 -0
- package/masonry/index.jsx +833 -0
- package/masonry/justified.d.ts +49 -0
- package/masonry/justified.js +250 -0
- package/masonry/layout.d.ts +200 -0
- package/masonry/layout.js +668 -0
- package/masonry/masonry-layout.d.ts +57 -0
- package/masonry/masonry-layout.js +159 -0
- package/masonry/masonry.css +29 -0
- package/menu/behaviour.d.ts +205 -0
- package/menu/behaviour.jsx +847 -0
- package/menu/index.d.ts +171 -0
- package/menu/index.jsx +702 -0
- package/menu/intl.d.ts +2 -0
- package/menu/intl.js +36 -0
- package/menu/safely-mouse-to-submenu.d.ts +12 -0
- package/menu/safely-mouse-to-submenu.js +128 -0
- package/meter/behaviour.d.ts +18 -0
- package/meter/behaviour.jsx +17 -0
- package/meter/index.d.ts +30 -0
- package/meter/index.jsx +85 -0
- package/modal/index.d.ts +79 -0
- package/modal/index.jsx +359 -0
- package/modal/provider.d.ts +47 -0
- package/modal/provider.jsx +105 -0
- package/morph/index.d.ts +91 -0
- package/morph/index.jsx +372 -0
- package/morph/item.d.ts +89 -0
- package/morph/item.jsx +546 -0
- package/motion/Animations.d.ts +17 -0
- package/motion/Animations.js +56 -0
- package/motion/DragRelease.d.ts +22 -0
- package/motion/DragRelease.js +26 -0
- package/motion/DragTracker.d.ts +7 -0
- package/motion/DragTracker.js +43 -0
- package/motion/Limit.d.ts +12 -0
- package/motion/Limit.js +37 -0
- package/motion/Motion1D.d.ts +38 -0
- package/motion/Motion1D.js +72 -0
- package/motion/ScrollBody.d.ts +13 -0
- package/motion/ScrollBody.js +75 -0
- package/motion/Vector1d.d.ts +8 -0
- package/motion/Vector1d.js +29 -0
- package/motion/index.d.ts +8 -0
- package/motion/index.js +12 -0
- package/motion/utils.d.ts +5 -0
- package/motion/utils.js +23 -0
- package/native-select/index.d.ts +46 -0
- package/native-select/index.jsx +99 -0
- package/navigation-tree/index.d.ts +43 -0
- package/navigation-tree/index.jsx +110 -0
- package/number/NumberFormatter.d.ts +28 -0
- package/number/NumberFormatter.js +144 -0
- package/number/NumberParser.d.ts +27 -0
- package/number/NumberParser.js +316 -0
- package/number/index.d.ts +5 -0
- package/number/index.jsx +17 -0
- package/number/number-field-state.d.ts +132 -0
- package/number/number-field-state.jsx +364 -0
- package/number-field/behaviour.d.ts +165 -0
- package/number-field/behaviour.jsx +512 -0
- package/number-field/index.d.ts +52 -0
- package/number-field/index.jsx +207 -0
- package/number-field/intl.d.ts +2 -0
- package/number-field/intl.js +36 -0
- package/observers/index.d.ts +70 -0
- package/observers/index.js +279 -0
- package/overflow/index.d.ts +93 -0
- package/overflow/index.jsx +267 -0
- package/overlay/aria-hide-outside.d.ts +12 -0
- package/overlay/aria-hide-outside.js +141 -0
- package/overlay/close-on-scroll.d.ts +1 -0
- package/overlay/close-on-scroll.js +6 -0
- package/overlay/contexts.d.ts +34 -0
- package/overlay/contexts.js +21 -0
- package/overlay/dismiss-button.d.ts +10 -0
- package/overlay/dismiss-button.jsx +18 -0
- package/overlay/hover-trigger.d.ts +54 -0
- package/overlay/hover-trigger.jsx +221 -0
- package/overlay/index.d.ts +40 -0
- package/overlay/index.js +139 -0
- package/overlay/modal-overlay.d.ts +16 -0
- package/overlay/modal-overlay.js +38 -0
- package/overlay/overlay-strings.d.ts +4 -0
- package/overlay/overlay-strings.js +52 -0
- package/overlay/overlay-trigger-state.d.ts +1 -0
- package/overlay/overlay-trigger-state.js +3 -0
- package/overlay/overlay-trigger.d.ts +27 -0
- package/overlay/overlay-trigger.jsx +50 -0
- package/overlay/position.d.ts +160 -0
- package/overlay/position.js +559 -0
- package/overlay/prevent-scroll-ios.d.ts +17 -0
- package/overlay/prevent-scroll-ios.js +331 -0
- package/overlay/prevent-scroll.d.ts +18 -0
- package/overlay/prevent-scroll.js +122 -0
- package/overlay/safe-area.d.ts +28 -0
- package/overlay/safe-area.js +108 -0
- package/overlay-arrow/index.d.ts +23 -0
- package/overlay-arrow/index.jsx +59 -0
- package/overlay-service/connected-position.d.ts +163 -0
- package/overlay-service/connected-position.js +661 -0
- package/overlay-service/global-position.d.ts +34 -0
- package/overlay-service/global-position.js +154 -0
- package/overlay-service/index.d.ts +15 -0
- package/overlay-service/index.js +27 -0
- package/overlay-service/overlay-container.d.ts +27 -0
- package/overlay-service/overlay-container.js +93 -0
- package/overlay-service/overlay-dispatchers.d.ts +44 -0
- package/overlay-service/overlay-dispatchers.js +149 -0
- package/overlay-service/overlay-position-builder.d.ts +8 -0
- package/overlay-service/overlay-position-builder.js +15 -0
- package/overlay-service/overlay-ref.d.ts +155 -0
- package/overlay-service/overlay-ref.js +436 -0
- package/overlay-service/overlay-strategy.d.ts +48 -0
- package/overlay-service/overlay-strategy.js +3 -0
- package/overlay-service/overlay-viewport.d.ts +85 -0
- package/overlay-service/overlay-viewport.js +192 -0
- package/overlay-service/overlay.css +94 -0
- package/overlay-service/scroll-strategies.d.ts +71 -0
- package/overlay-service/scroll-strategies.js +185 -0
- package/package.json +754 -4
- package/platform/index.d.ts +100 -0
- package/platform/index.js +304 -0
- package/popover/behaviour.d.ts +23 -0
- package/popover/behaviour.js +39 -0
- package/popover/index.d.ts +60 -0
- package/popover/index.jsx +285 -0
- package/popover/popover-overlay.d.ts +27 -0
- package/popover/popover-overlay.jsx +60 -0
- package/popover/use-popover.d.ts +57 -0
- package/popover/use-popover.js +92 -0
- package/portal/index.d.ts +55 -0
- package/portal/index.jsx +83 -0
- package/portal/portal-mount.d.ts +8 -0
- package/portal/portal-mount.js +7 -0
- package/portal/portal-outlet.d.ts +88 -0
- package/portal/portal-outlet.js +222 -0
- package/preview-trigger/behaviour.d.ts +70 -0
- package/preview-trigger/behaviour.jsx +258 -0
- package/preview-trigger/index.d.ts +12 -0
- package/preview-trigger/index.jsx +82 -0
- package/progress-bar/behaviour.d.ts +77 -0
- package/progress-bar/behaviour.jsx +75 -0
- package/progress-bar/context.d.ts +4 -0
- package/progress-bar/context.js +7 -0
- package/progress-bar/index.d.ts +38 -0
- package/progress-bar/index.jsx +90 -0
- package/radio-group/behaviour.d.ts +11 -0
- package/radio-group/behaviour.js +85 -0
- package/radio-group/index.d.ts +82 -0
- package/radio-group/index.jsx +142 -0
- package/radio-group/parts.d.ts +223 -0
- package/radio-group/parts.jsx +425 -0
- package/range-calendar/behaviour.d.ts +2 -0
- package/range-calendar/behaviour.jsx +5 -0
- package/range-calendar/index.d.ts +2 -0
- package/range-calendar/index.jsx +4 -0
- package/resizable/engine/components/group/auto-save/getStorageKey.d.ts +1 -0
- package/resizable/engine/components/group/auto-save/getStorageKey.js +5 -0
- package/resizable/engine/components/group/compareDocumentPosition.d.ts +5 -0
- package/resizable/engine/components/group/compareDocumentPosition.js +19 -0
- package/resizable/engine/components/group/readLegacyLayout.d.ts +16 -0
- package/resizable/engine/components/group/readLegacyLayout.js +48 -0
- package/resizable/engine/components/group/sortByElementOffset.d.ts +4 -0
- package/resizable/engine/components/group/sortByElementOffset.js +28 -0
- package/resizable/engine/components/group/types.d.ts +50 -0
- package/resizable/engine/components/group/types.js +1 -0
- package/resizable/engine/components/panel/types.d.ts +90 -0
- package/resizable/engine/components/panel/types.js +4 -0
- package/resizable/engine/constants.d.ts +15 -0
- package/resizable/engine/constants.js +27 -0
- package/resizable/engine/global/cursor/getCursorStyle.d.ts +7 -0
- package/resizable/engine/global/cursor/getCursorStyle.js +94 -0
- package/resizable/engine/global/cursor/supportsAdvancedCursorStyles.d.ts +5 -0
- package/resizable/engine/global/cursor/supportsAdvancedCursorStyles.js +20 -0
- package/resizable/engine/global/cursor/updateCursorStyle.d.ts +1 -0
- package/resizable/engine/global/cursor/updateCursorStyle.js +64 -0
- package/resizable/engine/global/dom/calculateAvailableAxisSize.d.ts +4 -0
- package/resizable/engine/global/dom/calculateAvailableAxisSize.js +10 -0
- package/resizable/engine/global/dom/calculateHitRegions.d.ts +13 -0
- package/resizable/engine/global/dom/calculateHitRegions.js +153 -0
- package/resizable/engine/global/dom/calculateItemConstraints.d.ts +2 -0
- package/resizable/engine/global/dom/calculateItemConstraints.js +82 -0
- package/resizable/engine/global/event-handlers/onDocumentContextMenu.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentContextMenu.js +9 -0
- package/resizable/engine/global/event-handlers/onDocumentDoubleClick.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentDoubleClick.js +28 -0
- package/resizable/engine/global/event-handlers/onDocumentKeyDown.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentKeyDown.js +97 -0
- package/resizable/engine/global/event-handlers/onDocumentLostPointerCapture.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentLostPointerCapture.js +18 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerCancel.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerCancel.js +8 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerDown.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerDown.js +54 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerLeave.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerLeave.js +22 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerMove.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerMove.js +69 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerOut.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerOut.js +20 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerUp.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerUp.js +15 -0
- package/resizable/engine/global/event-handlers/onWindowBlur.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onWindowBlur.js +11 -0
- package/resizable/engine/global/mountAxis.d.ts +2 -0
- package/resizable/engine/global/mountAxis.js +187 -0
- package/resizable/engine/global/mutable-state/axes.d.ts +37 -0
- package/resizable/engine/global/mutable-state/axes.js +52 -0
- package/resizable/engine/global/mutable-state/interactions.d.ts +17 -0
- package/resizable/engine/global/mutable-state/interactions.js +92 -0
- package/resizable/engine/global/mutable-state/types.d.ts +32 -0
- package/resizable/engine/global/mutable-state/types.js +1 -0
- package/resizable/engine/global/styles/convertEmToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertEmToPixels.js +7 -0
- package/resizable/engine/global/styles/convertRemToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertRemToPixels.js +7 -0
- package/resizable/engine/global/styles/convertVhToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertVhToPixels.js +5 -0
- package/resizable/engine/global/styles/convertVwToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertVwToPixels.js +5 -0
- package/resizable/engine/global/styles/parseSizeAndUnit.d.ts +2 -0
- package/resizable/engine/global/styles/parseSizeAndUnit.js +29 -0
- package/resizable/engine/global/styles/sizeStyleToPixels.d.ts +5 -0
- package/resizable/engine/global/styles/sizeStyleToPixels.js +38 -0
- package/resizable/engine/global/types.d.ts +120 -0
- package/resizable/engine/global/types.js +1 -0
- package/resizable/engine/global/utils/abortActivePointerResize.d.ts +9 -0
- package/resizable/engine/global/utils/abortActivePointerResize.js +52 -0
- package/resizable/engine/global/utils/adjustLayoutByDelta.d.ts +9 -0
- package/resizable/engine/global/utils/adjustLayoutByDelta.js +219 -0
- package/resizable/engine/global/utils/adjustLayoutForSeparator.d.ts +1 -0
- package/resizable/engine/global/utils/adjustLayoutForSeparator.js +48 -0
- package/resizable/engine/global/utils/calculateDefaultLayout.d.ts +2 -0
- package/resizable/engine/global/utils/calculateDefaultLayout.js +30 -0
- package/resizable/engine/global/utils/calculateResizePreviews.d.ts +3 -0
- package/resizable/engine/global/utils/calculateResizePreviews.js +39 -0
- package/resizable/engine/global/utils/calculateSeparatorAriaValues.d.ts +12 -0
- package/resizable/engine/global/utils/calculateSeparatorAriaValues.js +43 -0
- package/resizable/engine/global/utils/compareLayoutNumbers.d.ts +1 -0
- package/resizable/engine/global/utils/compareLayoutNumbers.js +11 -0
- package/resizable/engine/global/utils/completeActivePointerResize.d.ts +6 -0
- package/resizable/engine/global/utils/completeActivePointerResize.js +49 -0
- package/resizable/engine/global/utils/doRectsIntersect.d.ts +2 -0
- package/resizable/engine/global/utils/doRectsIntersect.js +3 -0
- package/resizable/engine/global/utils/expandHitTarget.d.ts +10 -0
- package/resizable/engine/global/utils/expandHitTarget.js +19 -0
- package/resizable/engine/global/utils/findClosestHitRegion.d.ts +9 -0
- package/resizable/engine/global/utils/findClosestHitRegion.js +35 -0
- package/resizable/engine/global/utils/findClosestRect.d.ts +6 -0
- package/resizable/engine/global/utils/findClosestRect.js +22 -0
- package/resizable/engine/global/utils/findMatchingHitRegions.d.ts +7 -0
- package/resizable/engine/global/utils/findMatchingHitRegions.js +29 -0
- package/resizable/engine/global/utils/findSeparatorAxis.d.ts +21 -0
- package/resizable/engine/global/utils/findSeparatorAxis.js +12 -0
- package/resizable/engine/global/utils/formatLayoutNumber.d.ts +1 -0
- package/resizable/engine/global/utils/formatLayoutNumber.js +5 -0
- package/resizable/engine/global/utils/getDefaultLayout.d.ts +5 -0
- package/resizable/engine/global/utils/getDefaultLayout.js +11 -0
- package/resizable/engine/global/utils/getDistanceBetweenPointAndRect.d.ts +5 -0
- package/resizable/engine/global/utils/getDistanceBetweenPointAndRect.js +6 -0
- package/resizable/engine/global/utils/getImperativeAxisMethods.d.ts +4 -0
- package/resizable/engine/global/utils/getImperativeAxisMethods.js +53 -0
- package/resizable/engine/global/utils/getImperativeItemMethods.d.ts +5 -0
- package/resizable/engine/global/utils/getImperativeItemMethods.js +169 -0
- package/resizable/engine/global/utils/isCoarsePointer.d.ts +4 -0
- package/resizable/engine/global/utils/isCoarsePointer.js +17 -0
- package/resizable/engine/global/utils/isModal.d.ts +1 -0
- package/resizable/engine/global/utils/isModal.js +11 -0
- package/resizable/engine/global/utils/isViableHitTarget.d.ts +5 -0
- package/resizable/engine/global/utils/isViableHitTarget.js +50 -0
- package/resizable/engine/global/utils/itemConstraintsEqual.d.ts +2 -0
- package/resizable/engine/global/utils/itemConstraintsEqual.js +9 -0
- package/resizable/engine/global/utils/layoutNumbersEqual.d.ts +1 -0
- package/resizable/engine/global/utils/layoutNumbersEqual.js +6 -0
- package/resizable/engine/global/utils/layoutsEqual.d.ts +2 -0
- package/resizable/engine/global/utils/layoutsEqual.js +15 -0
- package/resizable/engine/global/utils/normalizeLayout.d.ts +11 -0
- package/resizable/engine/global/utils/normalizeLayout.js +21 -0
- package/resizable/engine/global/utils/notifyItemOnResize.d.ts +2 -0
- package/resizable/engine/global/utils/notifyItemOnResize.js +23 -0
- package/resizable/engine/global/utils/objectsEqual.d.ts +1 -0
- package/resizable/engine/global/utils/objectsEqual.js +14 -0
- package/resizable/engine/global/utils/preserveFixedItemSizes.d.ts +7 -0
- package/resizable/engine/global/utils/preserveFixedItemSizes.js +53 -0
- package/resizable/engine/global/utils/recordAxisLayoutChange.d.ts +15 -0
- package/resizable/engine/global/utils/recordAxisLayoutChange.js +25 -0
- package/resizable/engine/global/utils/updateActiveHitRegion.d.ts +18 -0
- package/resizable/engine/global/utils/updateActiveHitRegion.js +119 -0
- package/resizable/engine/global/utils/validateAxisLayout.d.ts +5 -0
- package/resizable/engine/global/utils/validateAxisLayout.js +70 -0
- package/resizable/engine/global/utils/validateItemSize.d.ts +7 -0
- package/resizable/engine/global/utils/validateItemSize.js +31 -0
- package/resizable/engine/global/utils/validateLayoutKeys.d.ts +2 -0
- package/resizable/engine/global/utils/validateLayoutKeys.js +13 -0
- package/resizable/engine/types.d.ts +13 -0
- package/resizable/engine/types.js +1 -0
- package/resizable/engine/utils/EventEmitter.d.ts +11 -0
- package/resizable/engine/utils/EventEmitter.js +60 -0
- package/resizable/engine/utils/assert.d.ts +1 -0
- package/resizable/engine/utils/assert.js +7 -0
- package/resizable/engine/utils/isArrayEqual.d.ts +1 -0
- package/resizable/engine/utils/isArrayEqual.js +15 -0
- package/resizable/engine/utils/isHTMLElement.d.ts +1 -0
- package/resizable/engine/utils/isHTMLElement.js +6 -0
- package/resizable/engine/utils/isShadowRoot.d.ts +1 -0
- package/resizable/engine/utils/isShadowRoot.js +6 -0
- package/resizable/engine/vendor/stacking-order.d.ts +7 -0
- package/resizable/engine/vendor/stacking-order.js +122 -0
- package/resizable/index.d.ts +263 -0
- package/resizable/index.jsx +537 -0
- package/resizable/mount.d.ts +115 -0
- package/resizable/mount.js +540 -0
- package/scheduler/behaviour.d.ts +71 -0
- package/scheduler/behaviour.js +243 -0
- package/scheduler/context.d.ts +100 -0
- package/scheduler/context.jsx +7 -0
- package/scheduler/dates.d.ts +53 -0
- package/scheduler/dates.js +183 -0
- package/scheduler/drag.d.ts +20 -0
- package/scheduler/drag.js +361 -0
- package/scheduler/event.d.ts +26 -0
- package/scheduler/event.jsx +93 -0
- package/scheduler/index.d.ts +57 -0
- package/scheduler/index.jsx +303 -0
- package/scheduler/intl.d.ts +16 -0
- package/scheduler/intl.js +529 -0
- package/scheduler/keys-month.d.ts +7 -0
- package/scheduler/keys-month.js +110 -0
- package/scheduler/keys-time-grid.d.ts +9 -0
- package/scheduler/keys-time-grid.js +115 -0
- package/scheduler/keys.d.ts +103 -0
- package/scheduler/keys.js +527 -0
- package/scheduler/layout-index.d.ts +3 -0
- package/scheduler/layout-index.js +6 -0
- package/scheduler/layout.d.ts +285 -0
- package/scheduler/layout.js +378 -0
- package/scheduler/menus.d.ts +66 -0
- package/scheduler/menus.jsx +88 -0
- package/scheduler/month.d.ts +26 -0
- package/scheduler/month.jsx +215 -0
- package/scheduler/pointer.d.ts +64 -0
- package/scheduler/pointer.js +203 -0
- package/scheduler/select.d.ts +11 -0
- package/scheduler/select.js +64 -0
- package/scheduler/selection.d.ts +34 -0
- package/scheduler/selection.js +39 -0
- package/scheduler/state.d.ts +296 -0
- package/scheduler/state.js +496 -0
- package/scheduler/time-grid-client.d.ts +32 -0
- package/scheduler/time-grid-client.jsx +133 -0
- package/scheduler/time-grid.d.ts +26 -0
- package/scheduler/time-grid.jsx +266 -0
- package/scheduler/time.d.ts +35 -0
- package/scheduler/time.js +56 -0
- package/scheduler/toolbar.d.ts +43 -0
- package/scheduler/toolbar.jsx +38 -0
- package/scroll-area/dom.d.ts +11 -0
- package/scroll-area/dom.js +55 -0
- package/scroll-area/index.d.ts +96 -0
- package/scroll-area/index.jsx +884 -0
- package/scroll-area/presence.d.ts +12 -0
- package/scroll-area/presence.jsx +131 -0
- package/scrolling/auto-size-virtual-scroll.d.ts +53 -0
- package/scrolling/auto-size-virtual-scroll.js +213 -0
- package/scrolling/behaviour.d.ts +3 -0
- package/scrolling/behaviour.js +5 -0
- package/scrolling/emitter.d.ts +34 -0
- package/scrolling/emitter.js +144 -0
- package/scrolling/fixed-size-virtual-scroll.d.ts +28 -0
- package/scrolling/fixed-size-virtual-scroll.js +107 -0
- package/scrolling/index.d.ts +11 -0
- package/scrolling/index.jsx +13 -0
- package/scrolling/rtl.d.ts +16 -0
- package/scrolling/rtl.js +64 -0
- package/scrolling/scroll-dispatcher.d.ts +49 -0
- package/scrolling/scroll-dispatcher.js +107 -0
- package/scrolling/scrollable.d.ts +75 -0
- package/scrolling/scrollable.js +149 -0
- package/scrolling/scrolling.css +11 -0
- package/scrolling/state.d.ts +92 -0
- package/scrolling/state.js +94 -0
- package/scrolling/viewport-ruler.d.ts +47 -0
- package/scrolling/viewport-ruler.js +100 -0
- package/scrolling/viewport.d.ts +54 -0
- package/scrolling/viewport.jsx +105 -0
- package/scrolling/virtual-scroll-strategy.d.ts +41 -0
- package/scrolling/virtual-scroll-strategy.js +2 -0
- package/scrolling/virtual-scroll-viewport.d.ts +95 -0
- package/scrolling/virtual-scroll-viewport.js +370 -0
- package/search-field/behaviour.d.ts +62 -0
- package/search-field/behaviour.jsx +116 -0
- package/search-field/index.d.ts +57 -0
- package/search-field/index.jsx +158 -0
- package/search-field/intl.d.ts +2 -0
- package/search-field/intl.js +36 -0
- package/select/behaviour.d.ts +188 -0
- package/select/behaviour.jsx +445 -0
- package/select/hidden-select.d.ts +44 -0
- package/select/hidden-select.jsx +68 -0
- package/select/index.d.ts +123 -0
- package/select/index.jsx +255 -0
- package/select/intl.d.ts +2 -0
- package/select/intl.js +36 -0
- package/select/parts.d.ts +11 -0
- package/select/parts.jsx +12 -0
- package/select/select-parts.d.ts +73 -0
- package/select/select-parts.jsx +293 -0
- package/select/select-value.d.ts +58 -0
- package/select/select-value.jsx +142 -0
- package/selection/dom-utils.d.ts +25 -0
- package/selection/dom-utils.js +77 -0
- package/selection/keyed.d.ts +19 -0
- package/selection/keyed.js +66 -0
- package/selection/list-keyboard-delegate.d.ts +67 -0
- package/selection/list-keyboard-delegate.js +274 -0
- package/selection/manager.d.ts +112 -0
- package/selection/manager.js +340 -0
- package/selection/selectable-collection.d.ts +123 -0
- package/selection/selectable-collection.js +560 -0
- package/selection/selectable-item.d.ts +128 -0
- package/selection/selectable-item.js +486 -0
- package/selection/selectable-list.d.ts +42 -0
- package/selection/selectable-list.js +34 -0
- package/selection/state.d.ts +96 -0
- package/selection/state.js +131 -0
- package/selection/type-select.d.ts +37 -0
- package/selection/type-select.js +114 -0
- package/selection/utils.d.ts +23 -0
- package/selection/utils.js +38 -0
- package/selection-indicator/context.d.ts +10 -0
- package/selection-indicator/context.js +7 -0
- package/selection-indicator/index.d.ts +20 -0
- package/selection-indicator/index.jsx +25 -0
- package/separator/behaviour.d.ts +17 -0
- package/separator/behaviour.js +17 -0
- package/separator/index.d.ts +23 -0
- package/separator/index.jsx +64 -0
- package/shared-element-transition/index.d.ts +36 -0
- package/shared-element-transition/index.jsx +182 -0
- package/shared-element-transition/transition.d.ts +19 -0
- package/shared-element-transition/transition.jsx +20 -0
- package/sheet-motion/index.d.ts +82 -0
- package/sheet-motion/index.js +386 -0
- package/sidebar/index.d.ts +257 -0
- package/sidebar/index.jsx +625 -0
- package/sidebar/pages.d.ts +71 -0
- package/sidebar/pages.jsx +177 -0
- package/sidebar/resize.d.ts +69 -0
- package/sidebar/resize.js +237 -0
- package/sidebar/sheet-motion.d.ts +15 -0
- package/sidebar/sheet-motion.js +170 -0
- package/sidebar/state.d.ts +126 -0
- package/sidebar/state.js +204 -0
- package/slider/behaviour.d.ts +141 -0
- package/slider/behaviour.jsx +492 -0
- package/slider/index.d.ts +171 -0
- package/slider/index.jsx +392 -0
- package/slider/state.d.ts +203 -0
- package/slider/state.js +377 -0
- package/slots/index.d.ts +248 -0
- package/slots/index.jsx +473 -0
- package/spinbutton/behaviour.d.ts +66 -0
- package/spinbutton/behaviour.jsx +312 -0
- package/spinbutton/intl.d.ts +2 -0
- package/spinbutton/intl.js +36 -0
- package/state/autocomplete.d.ts +26 -0
- package/state/autocomplete.js +32 -0
- package/state/calendar.d.ts +284 -0
- package/state/calendar.js +755 -0
- package/state/checkbox-group.d.ts +67 -0
- package/state/checkbox-group.js +76 -0
- package/state/combobox.d.ts +238 -0
- package/state/combobox.js +708 -0
- package/state/date-field.d.ts +407 -0
- package/state/date-field.js +1117 -0
- package/state/date-intl.d.ts +3 -0
- package/state/date-intl.js +36 -0
- package/state/date-picker.d.ts +144 -0
- package/state/date-picker.js +387 -0
- package/state/disclosure.d.ts +90 -0
- package/state/disclosure.js +148 -0
- package/state/form-validation.d.ts +89 -0
- package/state/form-validation.js +158 -0
- package/state/grid.d.ts +62 -0
- package/state/grid.js +127 -0
- package/state/list.d.ts +58 -0
- package/state/list.js +124 -0
- package/state/menu.d.ts +162 -0
- package/state/menu.js +185 -0
- package/state/overlays.d.ts +35 -0
- package/state/overlays.js +29 -0
- package/state/radio-group.d.ts +58 -0
- package/state/radio-group.js +68 -0
- package/state/search-field.d.ts +20 -0
- package/state/search-field.js +21 -0
- package/state/select.d.ts +150 -0
- package/state/select.js +187 -0
- package/state/selection.d.ts +3 -0
- package/state/selection.js +5 -0
- package/state/table-column-resize.d.ts +58 -0
- package/state/table-column-resize.js +76 -0
- package/state/table.d.ts +81 -0
- package/state/table.js +114 -0
- package/state/tabs.d.ts +85 -0
- package/state/tabs.js +161 -0
- package/state/time-field.d.ts +32 -0
- package/state/time-field.js +34 -0
- package/state/toast.d.ts +80 -0
- package/state/toast.js +146 -0
- package/state/toggle-group.d.ts +70 -0
- package/state/toggle-group.js +110 -0
- package/state/toggle.d.ts +40 -0
- package/state/toggle.js +39 -0
- package/state/tooltip.d.ts +53 -0
- package/state/tooltip.js +153 -0
- package/stepper/index.d.ts +117 -0
- package/stepper/index.jsx +405 -0
- package/stepper/state.d.ts +200 -0
- package/stepper/state.js +325 -0
- package/switch/behaviour.d.ts +12 -0
- package/switch/behaviour.jsx +9 -0
- package/switch/index.d.ts +150 -0
- package/switch/index.jsx +186 -0
- package/table/behaviour.d.ts +181 -0
- package/table/behaviour.js +334 -0
- package/table/collection.d.ts +49 -0
- package/table/collection.js +259 -0
- package/table/column-resize.d.ts +48 -0
- package/table/column-resize.jsx +247 -0
- package/table/index.d.ts +339 -0
- package/table/index.jsx +1326 -0
- package/table/intl.d.ts +2 -0
- package/table/intl.js +36 -0
- package/table/keyboard-delegate.d.ts +21 -0
- package/table/keyboard-delegate.js +166 -0
- package/table/rac-intl.d.ts +2 -0
- package/table/rac-intl.js +36 -0
- package/tabs/behaviour.d.ts +49 -0
- package/tabs/behaviour.js +173 -0
- package/tabs/index.d.ts +248 -0
- package/tabs/index.jsx +577 -0
- package/tabs/keyboard-delegate.d.ts +17 -0
- package/tabs/keyboard-delegate.js +64 -0
- package/tag-group/behaviour.d.ts +59 -0
- package/tag-group/behaviour.js +112 -0
- package/tag-group/index.d.ts +138 -0
- package/tag-group/index.jsx +565 -0
- package/tag-group/intl.d.ts +2 -0
- package/tag-group/intl.js +36 -0
- package/tailwind.css +12 -0
- package/tests-components/app/src/routes/index.d.ts +4 -0
- package/tests-components/app/src/routes/index.jsx +7 -0
- package/text/index.d.ts +15 -0
- package/text/index.jsx +61 -0
- package/text-area/index.d.ts +19 -0
- package/text-area/index.jsx +76 -0
- package/text-field/autosize.d.ts +70 -0
- package/text-field/autosize.js +355 -0
- package/text-field/behaviour.d.ts +140 -0
- package/text-field/behaviour.jsx +260 -0
- package/text-field/fields.d.ts +12 -0
- package/text-field/fields.js +20 -0
- package/text-field/index.d.ts +50 -0
- package/text-field/index.jsx +174 -0
- package/text-field/text-field.css +45 -0
- package/theme.css +1006 -0
- package/time-wheels/behaviour.d.ts +29 -0
- package/time-wheels/behaviour.js +156 -0
- package/time-wheels/index.d.ts +27 -0
- package/time-wheels/index.jsx +91 -0
- package/toast/behaviour.d.ts +51 -0
- package/toast/behaviour.jsx +273 -0
- package/toast/index.d.ts +94 -0
- package/toast/index.jsx +256 -0
- package/toast/intl.d.ts +2 -0
- package/toast/intl.js +36 -0
- package/toggle-button/behaviour.d.ts +15 -0
- package/toggle-button/behaviour.js +37 -0
- package/toggle-button/index.d.ts +59 -0
- package/toggle-button/index.jsx +206 -0
- package/toggle-button-group/behaviour.d.ts +19 -0
- package/toggle-button-group/behaviour.jsx +13 -0
- package/toggle-button-group/context.d.ts +7 -0
- package/toggle-button-group/context.js +9 -0
- package/toggle-button-group/index.d.ts +39 -0
- package/toggle-button-group/index.jsx +85 -0
- package/toggle-button-group/item.d.ts +30 -0
- package/toggle-button-group/item.jsx +37 -0
- package/toolbar/behaviour.d.ts +22 -0
- package/toolbar/behaviour.js +89 -0
- package/toolbar/index.d.ts +16 -0
- package/toolbar/index.jsx +67 -0
- package/tooltip/behaviour.d.ts +93 -0
- package/tooltip/behaviour.jsx +299 -0
- package/tooltip/index.d.ts +59 -0
- package/tooltip/index.jsx +193 -0
- package/tree/behaviour.d.ts +51 -0
- package/tree/behaviour.jsx +51 -0
- package/tree/cdk-index.d.ts +2 -0
- package/tree/cdk-index.js +6 -0
- package/tree/collection.d.ts +16 -0
- package/tree/collection.js +138 -0
- package/tree/control.d.ts +125 -0
- package/tree/control.js +166 -0
- package/tree/index.d.ts +154 -0
- package/tree/index.jsx +837 -0
- package/tree/intl.d.ts +2 -0
- package/tree/intl.js +36 -0
- package/tree/navigation-context.d.ts +44 -0
- package/tree/navigation-context.jsx +63 -0
- package/tree/tree-key-manager.d.ts +149 -0
- package/tree/tree-key-manager.js +336 -0
- package/utils/animation.d.ts +32 -0
- package/utils/animation.jsx +236 -0
- package/utils/data-attrs.d.ts +73 -0
- package/utils/data-attrs.jsx +217 -0
- package/utils/dev-off.d.ts +3 -0
- package/utils/dev-off.js +7 -0
- package/utils/dev-on.d.ts +3 -0
- package/utils/dev-on.js +17 -0
- package/utils/dom-props.d.ts +44 -0
- package/utils/dom-props.js +73 -0
- package/utils/dom.d.ts +85 -0
- package/utils/dom.js +402 -0
- package/utils/id.d.ts +23 -0
- package/utils/id.js +100 -0
- package/utils/index.d.ts +43 -0
- package/utils/index.js +160 -0
- package/utils/link-state.d.ts +6 -0
- package/utils/link-state.js +6 -0
- package/utils/links.d.ts +82 -0
- package/utils/links.jsx +150 -0
- package/utils/live-element.d.ts +8 -0
- package/utils/live-element.jsx +76 -0
- package/utils/live.d.ts +53 -0
- package/utils/live.jsx +169 -0
- package/utils/load-more-sentinel.d.ts +28 -0
- package/utils/load-more-sentinel.jsx +52 -0
- package/utils/motion-token.d.ts +4 -0
- package/utils/motion-token.js +48 -0
- package/utils/render.d.ts +19 -0
- package/utils/render.js +18 -0
- package/utils/transitions.d.ts +15 -0
- package/utils/transitions.js +104 -0
- package/utils/types.d.ts +111 -0
- package/utils/types.js +1 -0
- package/virtualizer/behaviour.d.ts +129 -0
- package/virtualizer/behaviour.js +437 -0
- package/virtualizer/collection-renderer.d.ts +62 -0
- package/virtualizer/collection-renderer.jsx +190 -0
- package/virtualizer/collection.d.ts +103 -0
- package/virtualizer/collection.js +155 -0
- package/virtualizer/dom.d.ts +50 -0
- package/virtualizer/dom.js +233 -0
- package/virtualizer/engine.d.ts +21 -0
- package/virtualizer/engine.js +21 -0
- package/virtualizer/grid-layout.d.ts +50 -0
- package/virtualizer/grid-layout.js +247 -0
- package/virtualizer/index.d.ts +3 -0
- package/virtualizer/index.jsx +5 -0
- package/virtualizer/layout-info.d.ts +33 -0
- package/virtualizer/layout-info.js +54 -0
- package/virtualizer/layout.d.ts +44 -0
- package/virtualizer/layout.js +30 -0
- package/virtualizer/list-layout.d.ts +103 -0
- package/virtualizer/list-layout.js +510 -0
- package/virtualizer/overscan-manager.d.ts +9 -0
- package/virtualizer/overscan-manager.js +32 -0
- package/virtualizer/point.d.ts +13 -0
- package/virtualizer/point.js +23 -0
- package/virtualizer/rect.d.ts +49 -0
- package/virtualizer/rect.js +105 -0
- package/virtualizer/reusable-view.d.ts +29 -0
- package/virtualizer/reusable-view.js +56 -0
- package/virtualizer/scroll-anchor.d.ts +62 -0
- package/virtualizer/scroll-anchor.js +130 -0
- package/virtualizer/size.d.ts +11 -0
- package/virtualizer/size.js +21 -0
- package/virtualizer/state.d.ts +35 -0
- package/virtualizer/state.js +89 -0
- package/virtualizer/table-collection.d.ts +45 -0
- package/virtualizer/table-collection.js +80 -0
- package/virtualizer/table-column-layout.d.ts +44 -0
- package/virtualizer/table-column-layout.js +210 -0
- package/virtualizer/table-layout.d.ts +55 -0
- package/virtualizer/table-layout.js +482 -0
- package/virtualizer/types.d.ts +63 -0
- package/virtualizer/types.js +1 -0
- package/virtualizer/utils.d.ts +2 -0
- package/virtualizer/utils.js +12 -0
- package/virtualizer/virtualizer-core.d.ts +61 -0
- package/virtualizer/virtualizer-core.js +304 -0
- package/virtualizer/virtualizer.d.ts +64 -0
- package/virtualizer/virtualizer.jsx +91 -0
- package/virtualizer/waterfall-layout.d.ts +41 -0
- package/virtualizer/waterfall-layout.js +227 -0
- package/wheel-picker/behaviour.d.ts +94 -0
- package/wheel-picker/behaviour.js +482 -0
- package/wheel-picker/index.d.ts +33 -0
- package/wheel-picker/index.jsx +66 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
// Ported from React Spectrum (react-stately/src/virtualizer/Rect.ts), Apache-2.0, © Adobe.
|
|
2
|
+
// Rivet: `intersects` has no jsdom test-environment shortcut (Rivet tests run real layout math).
|
|
3
|
+
import { Point } from "./point.js";
|
|
4
|
+
/** Represents a rectangle. */
|
|
5
|
+
export class Rect {
|
|
6
|
+
/** The x-coordinate of the rectangle. */
|
|
7
|
+
x;
|
|
8
|
+
/** The y-coordinate of the rectangle. */
|
|
9
|
+
y;
|
|
10
|
+
/** The width of the rectangle. */
|
|
11
|
+
width;
|
|
12
|
+
/** The height of the rectangle. */
|
|
13
|
+
height;
|
|
14
|
+
constructor(x = 0, y = 0, width = 0, height = 0) {
|
|
15
|
+
this.x = x;
|
|
16
|
+
this.y = y;
|
|
17
|
+
this.width = width;
|
|
18
|
+
this.height = height;
|
|
19
|
+
}
|
|
20
|
+
/** The maximum x-coordinate in the rectangle. */
|
|
21
|
+
get maxX() {
|
|
22
|
+
return this.x + this.width;
|
|
23
|
+
}
|
|
24
|
+
/** The maximum y-coordinate in the rectangle. */
|
|
25
|
+
get maxY() {
|
|
26
|
+
return this.y + this.height;
|
|
27
|
+
}
|
|
28
|
+
/** The area of the rectangle. */
|
|
29
|
+
get area() {
|
|
30
|
+
return this.width * this.height;
|
|
31
|
+
}
|
|
32
|
+
/** The top left corner of the rectangle. */
|
|
33
|
+
get topLeft() {
|
|
34
|
+
return new Point(this.x, this.y);
|
|
35
|
+
}
|
|
36
|
+
/** The top right corner of the rectangle. */
|
|
37
|
+
get topRight() {
|
|
38
|
+
return new Point(this.maxX, this.y);
|
|
39
|
+
}
|
|
40
|
+
/** The bottom left corner of the rectangle. */
|
|
41
|
+
get bottomLeft() {
|
|
42
|
+
return new Point(this.x, this.maxY);
|
|
43
|
+
}
|
|
44
|
+
/** The bottom right corner of the rectangle. */
|
|
45
|
+
get bottomRight() {
|
|
46
|
+
return new Point(this.maxX, this.maxY);
|
|
47
|
+
}
|
|
48
|
+
/** Returns whether this rectangle intersects another rectangle (both need a non-zero area). */
|
|
49
|
+
intersects(rect) {
|
|
50
|
+
return (this.area > 0 &&
|
|
51
|
+
rect.area > 0 &&
|
|
52
|
+
this.x <= rect.x + rect.width &&
|
|
53
|
+
rect.x <= this.x + this.width &&
|
|
54
|
+
this.y <= rect.y + rect.height &&
|
|
55
|
+
rect.y <= this.y + this.height);
|
|
56
|
+
}
|
|
57
|
+
/** Returns whether this rectangle fully contains another rectangle. */
|
|
58
|
+
containsRect(rect) {
|
|
59
|
+
return this.x <= rect.x && this.y <= rect.y && this.maxX >= rect.maxX && this.maxY >= rect.maxY;
|
|
60
|
+
}
|
|
61
|
+
/** Returns whether the rectangle contains the given point. */
|
|
62
|
+
containsPoint(point) {
|
|
63
|
+
return this.x <= point.x && this.y <= point.y && this.maxX >= point.x && this.maxY >= point.y;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Returns the first corner of this rectangle (from top to bottom, left to right)
|
|
67
|
+
* that is contained in the given rectangle, or null of the rectangles do not intersect.
|
|
68
|
+
*/
|
|
69
|
+
getCornerInRect(rect) {
|
|
70
|
+
for (const key of ["topLeft", "topRight", "bottomLeft", "bottomRight"]) {
|
|
71
|
+
if (rect.containsPoint(this[key]))
|
|
72
|
+
return key;
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
equals(rect) {
|
|
77
|
+
return rect.x === this.x && rect.y === this.y && rect.width === this.width && rect.height === this.height;
|
|
78
|
+
}
|
|
79
|
+
pointEquals(point) {
|
|
80
|
+
return this.x === point.x && this.y === point.y;
|
|
81
|
+
}
|
|
82
|
+
sizeEquals(size) {
|
|
83
|
+
return this.width === size.width && this.height === size.height;
|
|
84
|
+
}
|
|
85
|
+
/** Returns the union of this Rect and another. */
|
|
86
|
+
union(other) {
|
|
87
|
+
const x = Math.min(this.x, other.x);
|
|
88
|
+
const y = Math.min(this.y, other.y);
|
|
89
|
+
const width = Math.max(this.maxX, other.maxX) - x;
|
|
90
|
+
const height = Math.max(this.maxY, other.maxY) - y;
|
|
91
|
+
return new Rect(x, y, width, height);
|
|
92
|
+
}
|
|
93
|
+
/** Returns the intersection of this Rect with another; an all zero Rect if they do not intersect. */
|
|
94
|
+
intersection(other) {
|
|
95
|
+
if (!this.intersects(other))
|
|
96
|
+
return new Rect(0, 0, 0, 0);
|
|
97
|
+
const x = Math.max(this.x, other.x);
|
|
98
|
+
const y = Math.max(this.y, other.y);
|
|
99
|
+
return new Rect(x, y, Math.min(this.maxX, other.maxX) - x, Math.min(this.maxY, other.maxY) - y);
|
|
100
|
+
}
|
|
101
|
+
/** Returns a copy of this rectangle. */
|
|
102
|
+
copy() {
|
|
103
|
+
return new Rect(this.x, this.y, this.width, this.height);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Key } from "../collections/index.js";
|
|
2
|
+
import type { LayoutInfo } from "./layout-info.js";
|
|
3
|
+
import type { Virtualizer } from "./virtualizer-core.js";
|
|
4
|
+
/** `Virtualizer` creates instances of the `ReusableView` class to represent views currently being displayed. */
|
|
5
|
+
export declare class ReusableView<T extends object, V> {
|
|
6
|
+
/** The Virtualizer this view is a part of. */
|
|
7
|
+
virtualizer: Virtualizer<T, V>;
|
|
8
|
+
/** The LayoutInfo this view is currently representing. */
|
|
9
|
+
layoutInfo: LayoutInfo | null;
|
|
10
|
+
/** The content currently being displayed by this view, set by the virtualizer. */
|
|
11
|
+
content: T | null;
|
|
12
|
+
rendered: V | null;
|
|
13
|
+
viewType: string;
|
|
14
|
+
key: Key;
|
|
15
|
+
children: Set<ChildView<T, V>>;
|
|
16
|
+
reusableViews: Map<string, ChildView<T, V>[]>;
|
|
17
|
+
constructor(virtualizer: Virtualizer<T, V>, viewType: string);
|
|
18
|
+
/** Prepares the view for reuse. Called just before the view is removed from the DOM. */
|
|
19
|
+
prepareForReuse(): void;
|
|
20
|
+
getReusableView(reuseType: string): ChildView<T, V>;
|
|
21
|
+
reuseChild(child: ChildView<T, V>): void;
|
|
22
|
+
}
|
|
23
|
+
export declare class RootView<T extends object, V> extends ReusableView<T, V> {
|
|
24
|
+
constructor(virtualizer: Virtualizer<T, V>);
|
|
25
|
+
}
|
|
26
|
+
export declare class ChildView<T extends object, V> extends ReusableView<T, V> {
|
|
27
|
+
parent: ReusableView<T, V>;
|
|
28
|
+
constructor(virtualizer: Virtualizer<T, V>, parent: ReusableView<T, V>, viewType: string);
|
|
29
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/** `Virtualizer` creates instances of the `ReusableView` class to represent views currently being displayed. */
|
|
2
|
+
export class ReusableView {
|
|
3
|
+
/** The Virtualizer this view is a part of. */
|
|
4
|
+
virtualizer;
|
|
5
|
+
/** The LayoutInfo this view is currently representing. */
|
|
6
|
+
layoutInfo;
|
|
7
|
+
/** The content currently being displayed by this view, set by the virtualizer. */
|
|
8
|
+
content;
|
|
9
|
+
rendered;
|
|
10
|
+
viewType;
|
|
11
|
+
key;
|
|
12
|
+
children;
|
|
13
|
+
reusableViews;
|
|
14
|
+
constructor(virtualizer, viewType) {
|
|
15
|
+
this.virtualizer = virtualizer;
|
|
16
|
+
this.key = virtualizer._nextViewKey();
|
|
17
|
+
this.viewType = viewType;
|
|
18
|
+
this.children = new Set();
|
|
19
|
+
this.reusableViews = new Map();
|
|
20
|
+
this.layoutInfo = null;
|
|
21
|
+
this.content = null;
|
|
22
|
+
this.rendered = null;
|
|
23
|
+
}
|
|
24
|
+
/** Prepares the view for reuse. Called just before the view is removed from the DOM. */
|
|
25
|
+
prepareForReuse() {
|
|
26
|
+
this.content = null;
|
|
27
|
+
this.rendered = null;
|
|
28
|
+
this.layoutInfo = null;
|
|
29
|
+
}
|
|
30
|
+
getReusableView(reuseType) {
|
|
31
|
+
// FIFO so that DOM order remains consistent during scrolling (cells of a reused row keep their order).
|
|
32
|
+
const reusable = this.reusableViews.get(reuseType);
|
|
33
|
+
return reusable && reusable.length > 0 ? reusable.shift() : new ChildView(this.virtualizer, this, reuseType);
|
|
34
|
+
}
|
|
35
|
+
reuseChild(child) {
|
|
36
|
+
child.prepareForReuse();
|
|
37
|
+
let reusable = this.reusableViews.get(child.viewType);
|
|
38
|
+
if (!reusable) {
|
|
39
|
+
reusable = [];
|
|
40
|
+
this.reusableViews.set(child.viewType, reusable);
|
|
41
|
+
}
|
|
42
|
+
reusable.push(child);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export class RootView extends ReusableView {
|
|
46
|
+
constructor(virtualizer) {
|
|
47
|
+
super(virtualizer, "root");
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export class ChildView extends ReusableView {
|
|
51
|
+
parent;
|
|
52
|
+
constructor(virtualizer, parent, viewType) {
|
|
53
|
+
super(virtualizer, viewType);
|
|
54
|
+
this.parent = parent;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { Key } from "../collections/index.js";
|
|
2
|
+
import type { LayoutInfo } from "./layout-info.js";
|
|
3
|
+
import { Rect, type RectCorner } from "./rect.js";
|
|
4
|
+
import type { Size } from "./size.js";
|
|
5
|
+
export type ScrollAnchorAxis = "x" | "y";
|
|
6
|
+
export type ScrollAnchorEdge = "start" | "end";
|
|
7
|
+
export interface ScrollAnchor {
|
|
8
|
+
key: Key;
|
|
9
|
+
corner: RectCorner;
|
|
10
|
+
offset: number;
|
|
11
|
+
}
|
|
12
|
+
export interface ScrollAnchorInfo {
|
|
13
|
+
/** Which edge of the content the viewport should stay anchored to. */
|
|
14
|
+
edge: "start" | "end";
|
|
15
|
+
/** Which axis `edge` refers to — 'y' for vertical lists, 'x' for horizontal. */
|
|
16
|
+
axis: "x" | "y";
|
|
17
|
+
/** Distance (px) from `edge` within which the viewport is considered "following" it. */
|
|
18
|
+
threshold: number;
|
|
19
|
+
/** Excludes structural/ephemeral layout infos (e.g. loaders) from being the anchor. Default: any. */
|
|
20
|
+
isAnchorable?: (layoutInfo: LayoutInfo) => boolean;
|
|
21
|
+
}
|
|
22
|
+
/** Viewport coordinate (along `axis`) that keeps a previously captured anchor at the same offset from the viewport start. */
|
|
23
|
+
export declare function computeScrollAnchorTarget(anchor: ScrollAnchor, axis: ScrollAnchorAxis, getLayoutInfo: (key: Key) => LayoutInfo | null, visibleRect: Rect, contentSize: Size): number | null;
|
|
24
|
+
/**
|
|
25
|
+
* Picks the item to anchor scroll to: nearest the top of the viewport when anchoring to 'end', nearest the
|
|
26
|
+
* bottom when anchoring to 'start'. `isAnchorable` excludes items (like loaders).
|
|
27
|
+
*/
|
|
28
|
+
export declare function captureScrollAnchor(edge: ScrollAnchorEdge, axis: ScrollAnchorAxis, visibleRect: Rect, visibleLayoutInfos: Iterable<[Key, LayoutInfo]>, isAnchorable?: (layoutInfo: LayoutInfo) => boolean): ScrollAnchor | null;
|
|
29
|
+
/** Viewport coordinate (along `axis`) that pins the viewport to `edge` of the content. */
|
|
30
|
+
export declare function getEdgeSnapTarget(edge: ScrollAnchorEdge, axis: ScrollAnchorAxis, contentSize: Size, previousVisibleRect: Rect): number;
|
|
31
|
+
/** Whether the viewport is within `threshold` px of the anchored edge. */
|
|
32
|
+
export declare function isNearEdge(visibleRect: Rect, contentSize: Size, edge: ScrollAnchorEdge, axis: ScrollAnchorAxis, threshold: number): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* New scroll position after content changes: keep the anchor item where it was; else stick to the edge, but
|
|
35
|
+
* only if the viewport was near it and the user is not scrolling away.
|
|
36
|
+
*/
|
|
37
|
+
export declare function resolveScrollAdjustment(edge: ScrollAnchorEdge, axis: ScrollAnchorAxis, anchor: ScrollAnchor | null, wasNearAnchorEdge: boolean, isScrolling: boolean, itemSizeChanged: boolean, contentSizeDelta: number, getLayoutInfo: (key: Key) => LayoutInfo | null, previousVisibleRect: Rect, contentSize: Size): Rect | null;
|
|
38
|
+
export interface ResolveAfterLayoutOptions {
|
|
39
|
+
anchorInfo: ScrollAnchorInfo | null;
|
|
40
|
+
/** The anchor captured by `captureBeforeLayout` before this pass's `layout.update()` ran. */
|
|
41
|
+
anchor: ScrollAnchor | null;
|
|
42
|
+
/** The full post-layout visible layout infos, i.e. `virtualizer.getVisibleLayoutInfos()`. */
|
|
43
|
+
postLayoutInfos: Map<Key, LayoutInfo>;
|
|
44
|
+
previousVisibleRect: Rect;
|
|
45
|
+
previousContentSize: Size;
|
|
46
|
+
contentSize: Size;
|
|
47
|
+
itemSizeChanged: boolean;
|
|
48
|
+
isScrolling: boolean;
|
|
49
|
+
getLayoutInfo: (key: Key) => LayoutInfo | null;
|
|
50
|
+
}
|
|
51
|
+
/** Cross-pass state needed to keep the viewport anchored to a layout's edge across relayouts. */
|
|
52
|
+
export declare class ScrollAnchorTracker {
|
|
53
|
+
private hasSnappedToEdge;
|
|
54
|
+
private hadEstimatedVisibleItems;
|
|
55
|
+
private wasNearAnchorEdge;
|
|
56
|
+
/** Resets all tracked state, e.g. when the virtualizer's layout instance changes. */
|
|
57
|
+
reset(): void;
|
|
58
|
+
/** Captures the anchor from pre-layout view positions. */
|
|
59
|
+
captureBeforeLayout(anchorInfo: ScrollAnchorInfo | null, preLayoutInfos: Iterable<[Key, LayoutInfo]>, visibleRect: Rect): ScrollAnchor | null;
|
|
60
|
+
/** Post-layout decision: updates the tracked state for the next pass and returns the scroll target, or null. */
|
|
61
|
+
resolveAfterLayout(options: ResolveAfterLayoutOptions): Rect | null;
|
|
62
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { Rect } from "./rect.js";
|
|
2
|
+
/** Minimum overlap (along the scroll axis) an item needs with the viewport to be eligible as a scroll anchor. */
|
|
3
|
+
const MIN_ANCHOR_OVERLAP = 4;
|
|
4
|
+
const dimensionForAxis = (axis) => (axis === "x" ? "width" : "height");
|
|
5
|
+
/** Viewport coordinate (along `axis`) that keeps a previously captured anchor at the same offset from the viewport start. */
|
|
6
|
+
export function computeScrollAnchorTarget(anchor, axis, getLayoutInfo, visibleRect, contentSize) {
|
|
7
|
+
const finalInfo = getLayoutInfo(anchor.key);
|
|
8
|
+
if (!finalInfo)
|
|
9
|
+
return null;
|
|
10
|
+
const adjustment = finalInfo.rect[anchor.corner][axis] - visibleRect[axis] - anchor.offset;
|
|
11
|
+
if (adjustment === 0)
|
|
12
|
+
return null;
|
|
13
|
+
const target = visibleRect[axis] + adjustment;
|
|
14
|
+
const dimension = dimensionForAxis(axis);
|
|
15
|
+
const max = Math.max(0, contentSize[dimension] - visibleRect[dimension]);
|
|
16
|
+
const clamped = Math.max(0, Math.min(max, target));
|
|
17
|
+
return clamped !== visibleRect[axis] ? clamped : null;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Picks the item to anchor scroll to: nearest the top of the viewport when anchoring to 'end', nearest the
|
|
21
|
+
* bottom when anchoring to 'start'. `isAnchorable` excludes items (like loaders).
|
|
22
|
+
*/
|
|
23
|
+
export function captureScrollAnchor(edge, axis, visibleRect, visibleLayoutInfos, isAnchorable = () => true) {
|
|
24
|
+
const dimension = dimensionForAxis(axis);
|
|
25
|
+
let best = null;
|
|
26
|
+
for (const [key, layoutInfo] of visibleLayoutInfos) {
|
|
27
|
+
if (!layoutInfo || !isAnchorable(layoutInfo))
|
|
28
|
+
continue;
|
|
29
|
+
const overlap = layoutInfo.rect.intersection(visibleRect)[dimension];
|
|
30
|
+
if (layoutInfo.rect.area > 0 && overlap >= MIN_ANCHOR_OVERLAP) {
|
|
31
|
+
const corner = layoutInfo.rect.getCornerInRect(visibleRect) ?? "topLeft";
|
|
32
|
+
const offset = layoutInfo.rect[corner][axis] - visibleRect[axis];
|
|
33
|
+
const isBetter = !best || (edge === "end" ? offset < best.offset : offset > best.offset);
|
|
34
|
+
if (isBetter)
|
|
35
|
+
best = { key, corner, offset };
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return best;
|
|
39
|
+
}
|
|
40
|
+
/** Viewport coordinate (along `axis`) that pins the viewport to `edge` of the content. */
|
|
41
|
+
export function getEdgeSnapTarget(edge, axis, contentSize, previousVisibleRect) {
|
|
42
|
+
if (edge === "start")
|
|
43
|
+
return 0;
|
|
44
|
+
const dimension = dimensionForAxis(axis);
|
|
45
|
+
return Math.max(0, contentSize[dimension] - previousVisibleRect[dimension]);
|
|
46
|
+
}
|
|
47
|
+
/** Whether the viewport is within `threshold` px of the anchored edge. */
|
|
48
|
+
export function isNearEdge(visibleRect, contentSize, edge, axis, threshold) {
|
|
49
|
+
if (edge === "start")
|
|
50
|
+
return visibleRect[axis] <= threshold;
|
|
51
|
+
const dimension = dimensionForAxis(axis);
|
|
52
|
+
const distanceFromEnd = contentSize[dimension] - (visibleRect[axis] + visibleRect[dimension]);
|
|
53
|
+
return distanceFromEnd <= threshold;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* New scroll position after content changes: keep the anchor item where it was; else stick to the edge, but
|
|
57
|
+
* only if the viewport was near it and the user is not scrolling away.
|
|
58
|
+
*/
|
|
59
|
+
export function resolveScrollAdjustment(edge, axis, anchor, wasNearAnchorEdge, isScrolling, itemSizeChanged, contentSizeDelta, getLayoutInfo, previousVisibleRect, contentSize) {
|
|
60
|
+
const withTarget = (target) => axis === "x"
|
|
61
|
+
? new Rect(target, previousVisibleRect.y, previousVisibleRect.width, previousVisibleRect.height)
|
|
62
|
+
: new Rect(previousVisibleRect.x, target, previousVisibleRect.width, previousVisibleRect.height);
|
|
63
|
+
if (anchor) {
|
|
64
|
+
const target = computeScrollAnchorTarget(anchor, axis, getLayoutInfo, previousVisibleRect, contentSize);
|
|
65
|
+
if (target != null)
|
|
66
|
+
return withTarget(target);
|
|
67
|
+
}
|
|
68
|
+
if (wasNearAnchorEdge && !isScrolling && (!itemSizeChanged || contentSizeDelta > 0)) {
|
|
69
|
+
const target = withTarget(getEdgeSnapTarget(edge, axis, contentSize, previousVisibleRect));
|
|
70
|
+
return target.equals(previousVisibleRect) ? null : target;
|
|
71
|
+
}
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
/** Cross-pass state needed to keep the viewport anchored to a layout's edge across relayouts. */
|
|
75
|
+
export class ScrollAnchorTracker {
|
|
76
|
+
hasSnappedToEdge = false;
|
|
77
|
+
hadEstimatedVisibleItems = false;
|
|
78
|
+
wasNearAnchorEdge = false;
|
|
79
|
+
/** Resets all tracked state, e.g. when the virtualizer's layout instance changes. */
|
|
80
|
+
reset() {
|
|
81
|
+
this.hasSnappedToEdge = false;
|
|
82
|
+
this.hadEstimatedVisibleItems = false;
|
|
83
|
+
this.wasNearAnchorEdge = false;
|
|
84
|
+
}
|
|
85
|
+
/** Captures the anchor from pre-layout view positions. */
|
|
86
|
+
captureBeforeLayout(anchorInfo, preLayoutInfos, visibleRect) {
|
|
87
|
+
if (!anchorInfo)
|
|
88
|
+
return null;
|
|
89
|
+
return captureScrollAnchor(anchorInfo.edge, anchorInfo.axis, visibleRect, preLayoutInfos, anchorInfo.isAnchorable);
|
|
90
|
+
}
|
|
91
|
+
/** Post-layout decision: updates the tracked state for the next pass and returns the scroll target, or null. */
|
|
92
|
+
resolveAfterLayout(options) {
|
|
93
|
+
const { anchorInfo, anchor, postLayoutInfos, previousVisibleRect, previousContentSize, contentSize, itemSizeChanged, isScrolling, getLayoutInfo } = options;
|
|
94
|
+
if (!anchorInfo)
|
|
95
|
+
return null;
|
|
96
|
+
// Read the previous pass's state into locals before any writes below overwrite it.
|
|
97
|
+
const wasSettlingLastPass = this.hadEstimatedVisibleItems;
|
|
98
|
+
const wasNearAnchorEdgeLastPass = this.wasNearAnchorEdge;
|
|
99
|
+
let hasEstimated = false;
|
|
100
|
+
for (const layoutInfo of postLayoutInfos.values()) {
|
|
101
|
+
if (layoutInfo.estimatedSize) {
|
|
102
|
+
hasEstimated = true;
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
this.hadEstimatedVisibleItems = hasEstimated;
|
|
107
|
+
// Don't recheck "near edge?" mid-resize (it could look like a scroll that never happened).
|
|
108
|
+
if (!wasSettlingLastPass) {
|
|
109
|
+
this.wasNearAnchorEdge = isNearEdge(previousVisibleRect, previousContentSize, anchorInfo.edge, anchorInfo.axis, anchorInfo.threshold);
|
|
110
|
+
}
|
|
111
|
+
if (previousVisibleRect.area === 0)
|
|
112
|
+
return null;
|
|
113
|
+
const dimension = anchorInfo.axis === "x" ? "width" : "height";
|
|
114
|
+
const contentSizeDelta = contentSize[dimension] - previousContentSize[dimension];
|
|
115
|
+
const isFirstAnchoredLayout = !this.hasSnappedToEdge;
|
|
116
|
+
this.hasSnappedToEdge = true;
|
|
117
|
+
// Only modify scroll when content actually changed (or this is the first layout, which always snaps).
|
|
118
|
+
if (!(isFirstAnchoredLayout || contentSizeDelta !== 0 || itemSizeChanged))
|
|
119
|
+
return null;
|
|
120
|
+
const wasNearAnchorEdge = isFirstAnchoredLayout ||
|
|
121
|
+
(wasSettlingLastPass && wasNearAnchorEdgeLastPass) ||
|
|
122
|
+
isNearEdge(previousVisibleRect, previousContentSize, anchorInfo.edge, anchorInfo.axis, anchorInfo.threshold);
|
|
123
|
+
// A first-ever layout always snaps: save that decision so later passes of this cascade reuse it.
|
|
124
|
+
if (!wasSettlingLastPass)
|
|
125
|
+
this.wasNearAnchorEdge = wasNearAnchorEdge;
|
|
126
|
+
// While still resizing, items above the anchor are also growing: following it would fall short of the edge.
|
|
127
|
+
const effectiveAnchor = isFirstAnchoredLayout || (wasSettlingLastPass && wasNearAnchorEdgeLastPass) ? null : anchor;
|
|
128
|
+
return resolveScrollAdjustment(anchorInfo.edge, anchorInfo.axis, effectiveAnchor, wasNearAnchorEdge, isScrolling, itemSizeChanged, contentSizeDelta, getLayoutInfo, previousVisibleRect, contentSize);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare class Size {
|
|
2
|
+
width: number;
|
|
3
|
+
height: number;
|
|
4
|
+
constructor(width?: number, height?: number);
|
|
5
|
+
/** Returns a copy of this size. */
|
|
6
|
+
copy(): Size;
|
|
7
|
+
/** Returns whether this size is equal to another one. */
|
|
8
|
+
equals(other: Size): boolean;
|
|
9
|
+
/** The total area of the Size. */
|
|
10
|
+
get area(): number;
|
|
11
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Ported from React Spectrum (react-stately/src/virtualizer/Size.ts), Apache-2.0, © Adobe.
|
|
2
|
+
export class Size {
|
|
3
|
+
width;
|
|
4
|
+
height;
|
|
5
|
+
constructor(width = 0, height = 0) {
|
|
6
|
+
this.width = Math.max(width, 0);
|
|
7
|
+
this.height = Math.max(height, 0);
|
|
8
|
+
}
|
|
9
|
+
/** Returns a copy of this size. */
|
|
10
|
+
copy() {
|
|
11
|
+
return new Size(this.width, this.height);
|
|
12
|
+
}
|
|
13
|
+
/** Returns whether this size is equal to another one. */
|
|
14
|
+
equals(other) {
|
|
15
|
+
return this.width === other.width && this.height === other.height;
|
|
16
|
+
}
|
|
17
|
+
/** The total area of the Size. */
|
|
18
|
+
get area() {
|
|
19
|
+
return this.width * this.height;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Key } from "../collections/index.js";
|
|
2
|
+
import type { Collection } from "./collection.js";
|
|
3
|
+
import type { Layout } from "./layout.js";
|
|
4
|
+
import { Rect } from "./rect.js";
|
|
5
|
+
import type { ReusableView } from "./reusable-view.js";
|
|
6
|
+
import { Size } from "./size.js";
|
|
7
|
+
import { Virtualizer } from "./virtualizer-core.js";
|
|
8
|
+
/** A value or an accessor (read inside the render effect, so signals in it re-render). */
|
|
9
|
+
export type MaybeAccessor<T> = T | (() => T);
|
|
10
|
+
export interface VirtualizerStateOptions<T extends object, V, O> {
|
|
11
|
+
renderView(type: string, content: T | null): V;
|
|
12
|
+
layout: MaybeAccessor<Layout<T>>;
|
|
13
|
+
collection: MaybeAccessor<Collection<T>>;
|
|
14
|
+
onVisibleRectChange(rect: Rect): void;
|
|
15
|
+
persistedKeys?: MaybeAccessor<Set<Key> | null | undefined>;
|
|
16
|
+
layoutOptions?: MaybeAccessor<O | undefined>;
|
|
17
|
+
allowsWindowScrolling?: boolean;
|
|
18
|
+
/** Rivet: start from a measured rect (default empty, like the original) so the first render keeps its views. */
|
|
19
|
+
initialVisibleRect?: Rect;
|
|
20
|
+
}
|
|
21
|
+
export interface VirtualizerState<T extends object, V> {
|
|
22
|
+
/** Root views (each with `children`), re-read after every render. */
|
|
23
|
+
visibleViews(): ReusableView<T, V>[];
|
|
24
|
+
setVisibleRect(rect: Rect): void;
|
|
25
|
+
size(): Size;
|
|
26
|
+
setSize(size: Size): void;
|
|
27
|
+
contentSize(): Size;
|
|
28
|
+
virtualizer: Virtualizer<T, V>;
|
|
29
|
+
isScrolling(): boolean;
|
|
30
|
+
startScrolling(): void;
|
|
31
|
+
endScrolling(): void;
|
|
32
|
+
/** Stop the render effect. */
|
|
33
|
+
dispose(): void;
|
|
34
|
+
}
|
|
35
|
+
export declare function createVirtualizerState<T extends object, V, O = any>(opts: VirtualizerStateOptions<T, V, O>): VirtualizerState<T, V>;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// Ported from React Spectrum (react-stately/src/virtualizer/useVirtualizerState.ts), Apache-2.0, © Adobe.
|
|
2
|
+
// Rivet: signals instead of hooks — `createVirtualizerState` owns one effect that renders the engine whenever
|
|
3
|
+
// the visible rect, size, scrolling flag, invalidation context or a reactive option changes. Browser-side
|
|
4
|
+
// (or test) only: the state holds class instances, never serialize it.
|
|
5
|
+
import { createRoot, effect, signal, untrack } from "@rivetjs/reactivity";
|
|
6
|
+
import { Rect } from "./rect.js";
|
|
7
|
+
import { Size } from "./size.js";
|
|
8
|
+
import { Virtualizer } from "./virtualizer-core.js";
|
|
9
|
+
const read = (value) => (typeof value === "function" ? value() : value);
|
|
10
|
+
export function createVirtualizerState(opts) {
|
|
11
|
+
const sameRect = { equals: (a, b) => a.equals(b) };
|
|
12
|
+
const visibleRect = signal(opts.initialVisibleRect ?? new Rect(0, 0, 0, 0), sameRect);
|
|
13
|
+
const size = signal(opts.initialVisibleRect ? new Size(opts.initialVisibleRect.width, opts.initialVisibleRect.height) : new Size(), {
|
|
14
|
+
equals: (a, b) => a.equals(b),
|
|
15
|
+
});
|
|
16
|
+
const isScrolling = signal(false);
|
|
17
|
+
const invalidationContext = signal({});
|
|
18
|
+
const visibleViews = signal([], { equals: false });
|
|
19
|
+
const contentSize = signal(new Size(), { equals: (a, b) => a.equals(b) });
|
|
20
|
+
let visibleRectChanged = false;
|
|
21
|
+
const virtualizer = new Virtualizer({
|
|
22
|
+
collection: untrack(() => read(opts.collection)),
|
|
23
|
+
layout: untrack(() => read(opts.layout)),
|
|
24
|
+
delegate: {
|
|
25
|
+
setVisibleRect(rect) {
|
|
26
|
+
visibleRect.set(rect);
|
|
27
|
+
visibleRectChanged = true;
|
|
28
|
+
},
|
|
29
|
+
renderView: opts.renderView,
|
|
30
|
+
invalidate: (ctx) => invalidationContext.set(ctx),
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
// Merged invalidation context: a new object only when the context or the layout options change.
|
|
34
|
+
let lastContext = null;
|
|
35
|
+
let lastOptions;
|
|
36
|
+
let merged = {};
|
|
37
|
+
const { dispose } = createRoot((dispose) => {
|
|
38
|
+
effect(() => {
|
|
39
|
+
const layoutOptions = read(opts.layoutOptions);
|
|
40
|
+
const context = invalidationContext();
|
|
41
|
+
if (context !== lastContext || layoutOptions !== lastOptions) {
|
|
42
|
+
lastContext = context;
|
|
43
|
+
lastOptions = layoutOptions;
|
|
44
|
+
merged = layoutOptions != null ? { ...context, layoutOptions } : context;
|
|
45
|
+
}
|
|
46
|
+
let rect = visibleRect();
|
|
47
|
+
const render = () => virtualizer.render({
|
|
48
|
+
layout: read(opts.layout),
|
|
49
|
+
collection: read(opts.collection),
|
|
50
|
+
persistedKeys: read(opts.persistedKeys) ?? null,
|
|
51
|
+
layoutOptions,
|
|
52
|
+
visibleRect: rect,
|
|
53
|
+
size: opts.allowsWindowScrolling ? size() : rect,
|
|
54
|
+
invalidationContext: merged,
|
|
55
|
+
isScrolling: isScrolling(),
|
|
56
|
+
});
|
|
57
|
+
let views = render();
|
|
58
|
+
// A render that moved the visible rect (the layout clamped the scroll offset, or a scroll anchor) laid out no
|
|
59
|
+
// subviews: render again at the new rect before publishing, as the original's `setVisibleRect` (a state update
|
|
60
|
+
// during render) re-renders before commit. Publishing the empty pass emptied the rows' `For` once — on a resumed
|
|
61
|
+
// page that dropped every adopted server row (a first click that scrolled the scroller 4px past its clamped
|
|
62
|
+
// offset re-created all rows and lost focus; resume fuzz `/list-data`, 2026-10-20).
|
|
63
|
+
for (let pass = 0; pass < 3 && visibleRectChanged && !untrack(visibleRect).equals(rect); pass++) {
|
|
64
|
+
rect = untrack(visibleRect);
|
|
65
|
+
views = render();
|
|
66
|
+
}
|
|
67
|
+
visibleViews.set(views);
|
|
68
|
+
contentSize.set(virtualizer.contentSize);
|
|
69
|
+
// onVisibleRectChange runs after the render (a layout effect in the original).
|
|
70
|
+
if (visibleRectChanged) {
|
|
71
|
+
visibleRectChanged = false;
|
|
72
|
+
untrack(() => opts.onVisibleRectChange(visibleRect()));
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
return dispose;
|
|
76
|
+
});
|
|
77
|
+
return {
|
|
78
|
+
virtualizer,
|
|
79
|
+
visibleViews,
|
|
80
|
+
setVisibleRect: (rect) => visibleRect.set(rect),
|
|
81
|
+
size,
|
|
82
|
+
setSize: (value) => size.set(value),
|
|
83
|
+
contentSize,
|
|
84
|
+
isScrolling,
|
|
85
|
+
startScrolling: () => isScrolling.set(true),
|
|
86
|
+
endScrolling: () => isScrolling.set(false),
|
|
87
|
+
dispose,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { Key } from "../collections/index.js";
|
|
2
|
+
import { type Collection, type Node } from "./collection.js";
|
|
3
|
+
export interface GridNode<T> extends Node<T> {
|
|
4
|
+
column?: GridNode<T>;
|
|
5
|
+
/** The number of columns spanned by this cell. */
|
|
6
|
+
colSpan?: number | null;
|
|
7
|
+
/** The column index of this cell, accounting for any colSpans. */
|
|
8
|
+
colIndex?: number | null;
|
|
9
|
+
/** The index of this node within its parent, ignoring sibling nodes that aren't of the same type. */
|
|
10
|
+
indexOfType?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface TableCollection<T> extends Collection<GridNode<T>> {
|
|
13
|
+
/** The header row nodes (one per tier of nested columns). */
|
|
14
|
+
headerRows: GridNode<T>[];
|
|
15
|
+
/** The column nodes. */
|
|
16
|
+
columns: GridNode<T>[];
|
|
17
|
+
/** Column keys that serve as row headers. */
|
|
18
|
+
rowHeaderColumnKeys: Set<Key>;
|
|
19
|
+
/** The node that makes up the header of the table. */
|
|
20
|
+
head?: GridNode<T>;
|
|
21
|
+
/** The node that makes up the body of the table. */
|
|
22
|
+
body: GridNode<T>;
|
|
23
|
+
}
|
|
24
|
+
export interface TableColumn {
|
|
25
|
+
key: Key;
|
|
26
|
+
/** Header text. */
|
|
27
|
+
label?: string;
|
|
28
|
+
width?: number | string;
|
|
29
|
+
defaultWidth?: number | string;
|
|
30
|
+
minWidth?: number | string;
|
|
31
|
+
maxWidth?: number | string;
|
|
32
|
+
isRowHeader?: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface TableCollectionOptions<R> {
|
|
35
|
+
/** Row key (default: `row.key ?? row.id`). */
|
|
36
|
+
getKey?: (row: R, index: number) => Key;
|
|
37
|
+
/** Cell value of `row` in `column` (default `row[column.key]`). */
|
|
38
|
+
getCell?: (row: R, column: TableColumn) => unknown;
|
|
39
|
+
/** Footer rows (`tablefooter` row group). */
|
|
40
|
+
footer?: readonly R[];
|
|
41
|
+
/** Append a "load more" loader row to the body; `true` reserves its height. */
|
|
42
|
+
loader?: boolean;
|
|
43
|
+
}
|
|
44
|
+
/** A table collection: `tableheader` (one `headerrow` of `column`s), `tablebody` rows of `cell`s, optional footer. */
|
|
45
|
+
export declare function createTableCollection<R>(columns: readonly TableColumn[], rows: readonly R[], options?: TableCollectionOptions<R>): TableCollection<R>;
|