@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,745 @@
|
|
|
1
|
+
// Ported from react-aria (src/collections/CollectionBuilder.tsx, src/collections/Hidden.tsx,
|
|
2
|
+
// src/collections/useCachedChildren.ts) and react-aria-components (src/Collection.tsx), Apache-2.0,
|
|
3
|
+
// © Adobe.
|
|
4
|
+
//
|
|
5
|
+
// The RAC collection API over Rivet: `createLeafComponent` / `createBranchComponent` define collection
|
|
6
|
+
// parts (ListBoxItem, ListBoxSection, MenuItem, TreeItem, Row, …), `Collection` renders static or
|
|
7
|
+
// `items`-driven children, `CollectionBuilder` builds a `BaseCollection` from JSX.
|
|
8
|
+
//
|
|
9
|
+
// Rivet: two render modes instead of React's hidden portal render + real render.
|
|
10
|
+
// - Live (default): parts render their real DOM in place, inside the host's DOM (`data-key` on the
|
|
11
|
+
// item element); the host's state reads the collection back from the DOM at event time
|
|
12
|
+
// (`./dom.ts` `domCollection`). Server HTML = final markup, resumed pages need no item model, and a
|
|
13
|
+
// host that never needs a built collection pays nothing (ListBox).
|
|
14
|
+
// - Build (`buildCollection` / `CollectionBuilder` / `collectionOf`): the content runs once in build
|
|
15
|
+
// mode — parts register `CollectionNodeSpec`s (with a `render` thunk) and render nothing — and the
|
|
16
|
+
// specs commit into a frozen `BaseCollection`. Used where upstream needs the collection before /
|
|
17
|
+
// without the item DOM: closed Select / ComboBox popovers (selected item text, filtered size),
|
|
18
|
+
// flattened trees (Tree / Table: `CollectionRoot` renders `node.render(node)` per node), virtualizers.
|
|
19
|
+
// Inside a `computed`, so a signal read by the content (items, filters) rebuilds it — also inside the
|
|
20
|
+
// (untracked) component bodies of nested parts, which re-enter the build's observer (`tracked`); a resumed
|
|
21
|
+
// handler capturing the computed rebuilds it in the browser from its recipe. Built rows render through
|
|
22
|
+
// `renderNodeAt`: a rebuilt node that renders the same keeps its DOM (`sameRender`).
|
|
23
|
+
// Deviation: `CollectionBuilder` children get an accessor `() => C` (reactive), not a value.
|
|
24
|
+
// Deviation: in live mode a part's `node` has key / type / value / textValue / props / level /
|
|
25
|
+
// parentKey; index / prevKey / nextKey / firstChildKey are unset (no siblings known) — read them from
|
|
26
|
+
// a built collection. Never capture `node` (class instance) in a resumable handler: capture `node.key`.
|
|
27
|
+
// Deviation: branch nodes carry `content` (Rivet field): the branch's lazy children; the default
|
|
28
|
+
// `CollectionBranch` renders it in live mode.
|
|
29
|
+
// Deviation: `dependencies` is accepted and ignored (signals re-render; no item cache to invalidate).
|
|
30
|
+
// Deviation: React hook names → Rivet (`useIsHidden` → `isHidden`, `usePersistedKeys` →
|
|
31
|
+
// `persistedKeys`, `useCachedChildren` → `collectionChildren`).
|
|
32
|
+
import { _observer, _regionState, _reobserve, _scoped, _trackReads, computed, createContext, provide, runWithOwner, untrack, useContext, } from "@rivetjs/reactivity";
|
|
33
|
+
import { For, Provider } from "@rivetjs/runtime/dom";
|
|
34
|
+
import { _rUnrecorded, resumableContext } from "@rivetjs/runtime/resume-format";
|
|
35
|
+
import { isSlot } from "@rivetjs/runtime/slot";
|
|
36
|
+
import { HiddenContext } from "./hidden.js";
|
|
37
|
+
import { domRowItem } from "#server";
|
|
38
|
+
import { rowKey, stampSet, stamp } from "./row-stamps.js";
|
|
39
|
+
import { hasLive } from "../utils/live.jsx";
|
|
40
|
+
import { mergeProps as mergeLive, splitProps } from "@rivetjs/runtime/props";
|
|
41
|
+
import { BaseCollection, buildCollection, collectionNodeClass, } from "./base.js";
|
|
42
|
+
const BuildContext = createContext(null);
|
|
43
|
+
/** Provided by collection hosts (`CollectionRoot`) and branches; `null` outside any collection. */
|
|
44
|
+
export const CollectionScopeContext = resumableContext(createContext(null, { id: "rv-collection-scope" }));
|
|
45
|
+
const CollectionItemContext = resumableContext(createContext(null, { id: "rv-collection-item" }));
|
|
46
|
+
/**
|
|
47
|
+
* RAC `addIdAndValue` clones the ONE element a row renders: only the first part of a row takes the
|
|
48
|
+
* row's id / value (a fragment's other parts, e.g. a trailing load-more item, keep their own / auto
|
|
49
|
+
* ids). Tracked outside the (serialized) context value so a re-created region starts fresh.
|
|
50
|
+
*/
|
|
51
|
+
const consumedDefaults = new WeakSet();
|
|
52
|
+
function takeItemDefaults() {
|
|
53
|
+
const defaults = useContext(CollectionItemContext);
|
|
54
|
+
if (!defaults || consumedDefaults.has(defaults))
|
|
55
|
+
return null;
|
|
56
|
+
consumedDefaults.add(defaults);
|
|
57
|
+
return defaults;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Rivet: the `id` an `items` row assigns to a part that is not a collection node (RAC useCachedChildren clones
|
|
61
|
+
* the rendered element with `id`: TabPanel inside `<TabPanels items>`), or `undefined` outside a row / when a part
|
|
62
|
+
* of the row already took it. Call once, at the start of the part's body.
|
|
63
|
+
*/
|
|
64
|
+
export function collectionItemId() {
|
|
65
|
+
return resolveId({}, takeItemDefaults(), useContext(CollectionContext));
|
|
66
|
+
}
|
|
67
|
+
const CollectionContext = resumableContext(createContext(null, { id: "rv-collection" }));
|
|
68
|
+
/**
|
|
69
|
+
* Run `fn` tracked by the build pass that `build` belongs to. Component bodies run untracked (runtime
|
|
70
|
+
* component creation untracks), so a part re-enters the build's observer before evaluating user content
|
|
71
|
+
* (`items` accessors, function children, nested `Collection`s): a signal read there rebuilds the
|
|
72
|
+
* collection, like React re-rendering RAC's hidden tree. Reads in component *props* expressions stay
|
|
73
|
+
* snapshots (as in live mode).
|
|
74
|
+
*/
|
|
75
|
+
const tracked = (build, fn) => _reobserve(build.run.o, fn);
|
|
76
|
+
/** RAC `useIsHidden`: whether the caller renders in build mode (render nothing visible, register only). */
|
|
77
|
+
export function isHidden() {
|
|
78
|
+
return useContext(HiddenContext) || useContext(BuildContext) != null;
|
|
79
|
+
}
|
|
80
|
+
// ---------------------------------------------------------------------------------------------
|
|
81
|
+
// Building
|
|
82
|
+
// ---------------------------------------------------------------------------------------------
|
|
83
|
+
/**
|
|
84
|
+
* Run `content` in build mode and commit the registered nodes into a collection (RAC
|
|
85
|
+
* `CollectionBuilder`'s hidden render + `Document.getCollection`). Tracks the signals `content`
|
|
86
|
+
* reads; call inside a `computed` (`collectionOf`) to rebuild on change.
|
|
87
|
+
*/
|
|
88
|
+
export function buildCollectionFrom(content, createCollection) {
|
|
89
|
+
const run = { o: _observer() };
|
|
90
|
+
const scope = { specs: [], parentKey: null, ids: { n: 0 }, run };
|
|
91
|
+
// The build pass renders nothing: keep the resume recorder out of it (no dead regions/ids).
|
|
92
|
+
try {
|
|
93
|
+
_rUnrecorded(() => provide(BuildContext, scope, () => provide(HiddenContext, true, () => tracked(scope, () => evaluate(content)))));
|
|
94
|
+
}
|
|
95
|
+
finally {
|
|
96
|
+
run.o = null;
|
|
97
|
+
}
|
|
98
|
+
const keyed = typeof content === "function" || (typeof content === "object" && content !== null);
|
|
99
|
+
try {
|
|
100
|
+
const built = buildCollection(scope.specs, createCollection);
|
|
101
|
+
if (keyed)
|
|
102
|
+
(lastBuilt ??= new WeakMap()).set(content, built);
|
|
103
|
+
return built;
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
// A rebuild between two unbatched writes (an item moved from one `items` signal to another: added to the first, not
|
|
107
|
+
// yet removed from the second) sees a key twice; RAC never builds that state (React batches the renders). Keep the
|
|
108
|
+
// content's last collection: the build read every source, so the second write rebuilds it. A first build throws.
|
|
109
|
+
const last = keyed ? lastBuilt?.get(content) : undefined;
|
|
110
|
+
if (last !== undefined && error instanceof Error && error.message.startsWith("Duplicate key "))
|
|
111
|
+
return last;
|
|
112
|
+
throw error;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/** The last collection each content built (`buildCollectionFrom`'s duplicate-key tolerance on rebuilds). */
|
|
116
|
+
let lastBuilt;
|
|
117
|
+
/**
|
|
118
|
+
* Rivet (server): evaluate `content` in build mode registering nothing, so the collection root in it (ListBox / Menu /
|
|
119
|
+
* …, `isCollectionProbe`) merges its own `id` into the `SelectableCollectionContext` `MergedId` (`contextProps`) before
|
|
120
|
+
* the parent's input renders `aria-controls`. RA merges the ids after the first render (mergeIds re-renders the
|
|
121
|
+
* `useId` holder); a resumed page never re-renders, so its server markup has to carry the merged id. Hideable parts
|
|
122
|
+
* (SearchField, Input, …) render nothing in build mode.
|
|
123
|
+
*/
|
|
124
|
+
export function probeCollection(content) {
|
|
125
|
+
const scope = { specs: [], parentKey: null, ids: { n: 0 }, run: { o: null }, probe: true };
|
|
126
|
+
_rUnrecorded(() => provide(BuildContext, scope, () => provide(HiddenContext, true, () => untrack(() => evaluate(content)))));
|
|
127
|
+
}
|
|
128
|
+
const COMPILED = Symbol.for("rivet.compiled");
|
|
129
|
+
const TEMPLATE = Symbol.for("rivet.template");
|
|
130
|
+
const SCOPED = Symbol.for("rivet.server.scoped");
|
|
131
|
+
/**
|
|
132
|
+
* @internal Server slot probe walk (`probeSlots`, `./server-on.tsx`): `probeCollection` that also walks the server output
|
|
133
|
+
* as the server renderer does (lazy slots and 0-arity children called, compiled / template records' slots, scoped
|
|
134
|
+
* records under their owner), so a Description in a render-function child or nested in another part's lazy children (a
|
|
135
|
+
* card's ItemContent) is reached. Attribute / spread records and handlers are not called. Cheap because the parts it
|
|
136
|
+
* reaches return early while `slotProbing` is on (ui wrappers, Label / Input / FieldError, nested field owners).
|
|
137
|
+
*/
|
|
138
|
+
export function _probeTree(content) {
|
|
139
|
+
const scope = { specs: [], parentKey: null, ids: { n: 0 }, run: { o: null }, probe: true };
|
|
140
|
+
// No HiddenContext: the hideable parts check `slotProbing` first; `isHidden()` sees the build scope.
|
|
141
|
+
provide(BuildContext, scope, () => probeWalk(evaluate(content), 0));
|
|
142
|
+
}
|
|
143
|
+
function probeWalk(value, depth) {
|
|
144
|
+
if (value == null || depth > 200)
|
|
145
|
+
return;
|
|
146
|
+
if (typeof value === "function") {
|
|
147
|
+
if (isSlot(value) || value.length === 0)
|
|
148
|
+
probeWalk(value(), depth + 1);
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
if (typeof value !== "object")
|
|
152
|
+
return;
|
|
153
|
+
if (Array.isArray(value)) {
|
|
154
|
+
for (const item of value)
|
|
155
|
+
probeWalk(item, depth + 1);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
const record = value;
|
|
159
|
+
if (record[COMPILED] || record[TEMPLATE]) {
|
|
160
|
+
for (const slot of record.slots ?? [])
|
|
161
|
+
probeWalk(slot, depth + 1);
|
|
162
|
+
}
|
|
163
|
+
else if (record[SCOPED]) {
|
|
164
|
+
const inner = record.value;
|
|
165
|
+
runWithOwner(record.owner ?? null, () => probeWalk(inner, depth + 1));
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/** Whether the caller renders inside `probeCollection`: a collection root merges the context id and renders nothing. */
|
|
169
|
+
export function isCollectionProbe() {
|
|
170
|
+
return useContext(BuildContext)?.probe === true;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* A reactive collection accessor for `content` (lazy JSX / slot / render function): the Rivet
|
|
174
|
+
* equivalent of reading `CollectionBuilder`'s collection before the item DOM exists (closed
|
|
175
|
+
* popovers). Server: built on first read. Browser: rebuilt when a signal the content reads changes.
|
|
176
|
+
*/
|
|
177
|
+
export function collectionOf(content, createCollection) {
|
|
178
|
+
return computed(() => buildCollectionFrom(content, createCollection));
|
|
179
|
+
}
|
|
180
|
+
let builtCollections;
|
|
181
|
+
/**
|
|
182
|
+
* Rivet: the built collection of a virtualized host's `content` (RAC: a collection inside a `Virtualizer` renders
|
|
183
|
+
* from its built collection, only the visible window has parts). One `collectionOf` computed per `instance` (a plain
|
|
184
|
+
* object the host creates in its body: serialized as data, so a resumed page rebuilds the computed from `content` on
|
|
185
|
+
* its first read). Created detached from the reading owner: the first read may be a binding that re-runs (the
|
|
186
|
+
* virtualizer's rows), which would dispose a computed it owns.
|
|
187
|
+
*/
|
|
188
|
+
export function builtCollectionOf(instance, content, createCollection) {
|
|
189
|
+
let built = (builtCollections ??= new WeakMap()).get(instance);
|
|
190
|
+
if (!built)
|
|
191
|
+
builtCollections.set(instance, (built = runWithOwner(null, () => collectionOf(content, createCollection))));
|
|
192
|
+
return built();
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Builds a `Collection` from the `content` and passes it to `children` (RAC `CollectionBuilder`).
|
|
196
|
+
* Inside another builder's build pass it only renders the content (registers into that build).
|
|
197
|
+
*/
|
|
198
|
+
export function CollectionBuilder(props) {
|
|
199
|
+
const { content, children, createCollection } = props;
|
|
200
|
+
const build = useContext(BuildContext);
|
|
201
|
+
if (build)
|
|
202
|
+
return tracked(build, () => evaluate(content));
|
|
203
|
+
return children(collectionOf(content, createCollection));
|
|
204
|
+
}
|
|
205
|
+
/** Call lazy content / thunks; arrays element-wise. Results are discarded in build mode. */
|
|
206
|
+
function evaluate(content) {
|
|
207
|
+
if (typeof content === "function" && (isSlot(content) || content.length === 0))
|
|
208
|
+
return evaluate(content());
|
|
209
|
+
if (Array.isArray(content)) {
|
|
210
|
+
if (!isServer && hasThunk(content)) {
|
|
211
|
+
const build = useContext(BuildContext);
|
|
212
|
+
if (build)
|
|
213
|
+
return evaluateInOrder(content, build.specs);
|
|
214
|
+
}
|
|
215
|
+
return content.map(evaluate);
|
|
216
|
+
}
|
|
217
|
+
return content;
|
|
218
|
+
}
|
|
219
|
+
// Build-pass order (browser). A children array is built eagerly: its parts register while JSX builds the array, and a
|
|
220
|
+
// `{() => …}` / `<Show>` / `<For>` child (an accessor) registers only when `evaluate` calls it, after its siblings. In
|
|
221
|
+
// build mode, parts return a per-spec mark (an empty comment: renders nothing; a node, so array copies — the dev
|
|
222
|
+
// runtime maps component output — keep it), so the array says where each eager part's spec belongs; an accessor's
|
|
223
|
+
// specs go where the accessor sits. Server: the build calls everything in document order already.
|
|
224
|
+
let marks;
|
|
225
|
+
/** The value a part returns in build mode: `null` on the server, a mark of its spec in the browser. */
|
|
226
|
+
const buildMark = (spec) => {
|
|
227
|
+
if (isServer)
|
|
228
|
+
return null;
|
|
229
|
+
// `globalThis.document`: the compiler rejects bare browser globals in a server-rendered module (RV2001).
|
|
230
|
+
const mark = globalThis.document.createComment("");
|
|
231
|
+
(marks ??= new WeakMap()).set(mark, spec);
|
|
232
|
+
return mark;
|
|
233
|
+
};
|
|
234
|
+
const isThunk = (value) => typeof value === "function" && (isSlot(value) || value.length === 0);
|
|
235
|
+
function hasThunk(content) {
|
|
236
|
+
for (const value of content)
|
|
237
|
+
if (isThunk(value) || (Array.isArray(value) && hasThunk(value)))
|
|
238
|
+
return true;
|
|
239
|
+
return false;
|
|
240
|
+
}
|
|
241
|
+
function evaluateInOrder(content, list) {
|
|
242
|
+
const listed = new Set(list);
|
|
243
|
+
const order = [];
|
|
244
|
+
const walk = (value) => {
|
|
245
|
+
if (Array.isArray(value))
|
|
246
|
+
for (const item of value)
|
|
247
|
+
walk(item);
|
|
248
|
+
else if (isThunk(value)) {
|
|
249
|
+
const start = list.length;
|
|
250
|
+
evaluate(value);
|
|
251
|
+
for (const spec of list.splice(start))
|
|
252
|
+
order.push(spec);
|
|
253
|
+
}
|
|
254
|
+
else if (value !== null && typeof value === "object") {
|
|
255
|
+
const spec = marks?.get(value);
|
|
256
|
+
if (spec && listed.has(spec))
|
|
257
|
+
order.push(spec);
|
|
258
|
+
}
|
|
259
|
+
};
|
|
260
|
+
walk(content);
|
|
261
|
+
const placed = new Set(order);
|
|
262
|
+
let at = 0;
|
|
263
|
+
for (const spec of list)
|
|
264
|
+
if (!placed.has(spec))
|
|
265
|
+
list[at++] = spec;
|
|
266
|
+
list.length = at;
|
|
267
|
+
for (const spec of order)
|
|
268
|
+
list.push(spec);
|
|
269
|
+
return null;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Live (rendered) content of a host / branch / row, placed inside the caller's providers: slots run now; any other
|
|
273
|
+
* 0-arity function — a `{() => …}` render-function child or a DOM v2 structural accessor (`<For>` / `<Show>` /
|
|
274
|
+
* dynamic fragment child) — stays a reactive child, each read in a scope under the current owner (`_scoped`: context
|
|
275
|
+
* lookups see these providers). Calling it here would read it once, untracked: v2 rows / filtered options would never
|
|
276
|
+
* update. Server: everything now (`evaluate`, see `serverNow`).
|
|
277
|
+
*/
|
|
278
|
+
function place(content) {
|
|
279
|
+
if (isServer)
|
|
280
|
+
return evaluate(content);
|
|
281
|
+
if (isSlot(content))
|
|
282
|
+
return place(content());
|
|
283
|
+
if (typeof content === "function" && content.length === 0)
|
|
284
|
+
return _scoped(() => place(content()));
|
|
285
|
+
if (Array.isArray(content))
|
|
286
|
+
return content.map(place);
|
|
287
|
+
return content;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* `textValue` default (RAC Document): string / number children, else "" (the caller then falls back to
|
|
291
|
+
* `aria-label`). Lazy JSX children are NEVER evaluated here: that would render the part's content a second
|
|
292
|
+
* time outside its providers (stray overlays, double Text / Keyboard). Live mode: the DOM collection reads the
|
|
293
|
+
* item element's text at event time (`./dom.ts` `domTextValue`). Build mode: give `textValue` for non-string
|
|
294
|
+
* children (RAC's warning).
|
|
295
|
+
*/
|
|
296
|
+
function defaultTextValue(props) {
|
|
297
|
+
const children = props.children;
|
|
298
|
+
if (typeof children === "string")
|
|
299
|
+
return children;
|
|
300
|
+
if (typeof children === "number")
|
|
301
|
+
return String(children);
|
|
302
|
+
return "";
|
|
303
|
+
}
|
|
304
|
+
function resolveId(props, defaults, scope) {
|
|
305
|
+
if (props.id != null)
|
|
306
|
+
return props.id;
|
|
307
|
+
const id = defaults?.id;
|
|
308
|
+
return id != null && scope?.idScope != null ? `${String(scope.idScope)}:${String(id)}` : id;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Id of a part without `id` (RAC: generated by the collection document): `$.<n>` per parent in
|
|
312
|
+
* document order (`<parentKey>.$.<n>` below a branch), the same in build and live mode, so keys read
|
|
313
|
+
* from the DOM match a built collection's.
|
|
314
|
+
*/
|
|
315
|
+
function generatedId(parentKey, ids) {
|
|
316
|
+
return (parentKey == null ? "" : String(parentKey) + ".") + "$." + ids.n++;
|
|
317
|
+
}
|
|
318
|
+
/** Live-mode node of a part (see header: no sibling links). */
|
|
319
|
+
function liveNode(NodeClass, props, id, value, scope) {
|
|
320
|
+
const node = new NodeClass(id);
|
|
321
|
+
const [textValue, rest] = nodeProps(props);
|
|
322
|
+
node.props = rest;
|
|
323
|
+
node.value = (value ?? null);
|
|
324
|
+
node.textValue = textValue || defaultTextValue(props) || props["aria-label"] || "";
|
|
325
|
+
if (props["aria-label"])
|
|
326
|
+
node["aria-label"] = props["aria-label"];
|
|
327
|
+
node.level = scope?.level ?? 0;
|
|
328
|
+
node.parentKey = scope?.parentKey ?? null;
|
|
329
|
+
if (rest.colSpan != null)
|
|
330
|
+
node.colSpan = rest.colSpan;
|
|
331
|
+
return node;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* A part's node props (`{ id, value, textValue, ...rest } = props`) and whether a prop is live (P5): with an own getter
|
|
335
|
+
* the rest forwards unread (`splitProps`), so the build pass does not depend on a live prop and `node.props.isDisabled`
|
|
336
|
+
* / `class` / … stay live for the selection manager and the part (no node rebuild, no item re-creation). The rest is a
|
|
337
|
+
* fresh object either way (spec `ownProps`: `buildCollection` uses it without a copy).
|
|
338
|
+
*/
|
|
339
|
+
function nodeProps(props) {
|
|
340
|
+
if (!hasLive(props)) {
|
|
341
|
+
const { id: _id, value: _value, textValue, ...rest } = props;
|
|
342
|
+
return [textValue, rest, false];
|
|
343
|
+
}
|
|
344
|
+
return [untrack(() => props.textValue), splitProps(props, ["id", "value", "textValue"])[1], true];
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* The props a built part renders with: `node.props` plus its key / value. Live: the part's own props when no `items`
|
|
348
|
+
* row supplied id / value (they already carry both; no per-render merge), else a merge that keeps the getters.
|
|
349
|
+
*/
|
|
350
|
+
const withNode = (all, direct, props, live, extra) => direct ? all : live ? mergeLive(props, extra) : { ...props, ...extra };
|
|
351
|
+
/**
|
|
352
|
+
* Defines a collection leaf part (RAC `createLeafComponent`): outside a collection it renders
|
|
353
|
+
* `render(props, ref)` (a render taking `node` throws there, as upstream); inside a collection host
|
|
354
|
+
* it renders `render(props, ref, node)` in place (live) or registers a node (build mode).
|
|
355
|
+
*/
|
|
356
|
+
export function createLeafComponent(CollectionNodeClass, render) {
|
|
357
|
+
const NodeClass = collectionNodeClass(CollectionNodeClass);
|
|
358
|
+
const name = render.name || "Component";
|
|
359
|
+
return function CollectionLeaf(props) {
|
|
360
|
+
const p = props;
|
|
361
|
+
const build = useContext(BuildContext);
|
|
362
|
+
const defaults = takeItemDefaults();
|
|
363
|
+
if (build) {
|
|
364
|
+
const collectionCtx = useContext(CollectionContext);
|
|
365
|
+
const all = p;
|
|
366
|
+
const [textValue, rest, live] = nodeProps(all);
|
|
367
|
+
const value = all.value ?? defaults?.value;
|
|
368
|
+
// RAC passes node.props as given: `id` only when the user (or an `items` row) supplied one.
|
|
369
|
+
const explicitId = resolveId(all, defaults, collectionCtx);
|
|
370
|
+
const spec = {
|
|
371
|
+
type: NodeClass,
|
|
372
|
+
id: explicitId ?? generatedId(build.parentKey, build.ids),
|
|
373
|
+
value: value,
|
|
374
|
+
textValue: textValue || defaultTextValue(all),
|
|
375
|
+
"aria-label": all["aria-label"],
|
|
376
|
+
rendered: all.children,
|
|
377
|
+
props: rest,
|
|
378
|
+
ownProps: true,
|
|
379
|
+
render: (node) => render(withNode(all, live && !defaults, node.props, live, explicitId == null ? { value: node.value } : { id: node.key, value: node.value }), p.ref, node),
|
|
380
|
+
};
|
|
381
|
+
build.specs.push(spec);
|
|
382
|
+
return buildMark(spec);
|
|
383
|
+
}
|
|
384
|
+
const scope = useContext(CollectionScopeContext);
|
|
385
|
+
if (!scope) {
|
|
386
|
+
if (render.length >= 3)
|
|
387
|
+
throw new Error(name + " cannot be rendered outside a collection.");
|
|
388
|
+
return render(props, p.ref);
|
|
389
|
+
}
|
|
390
|
+
const id = resolveId(p, defaults, useContext(CollectionContext)) ?? generatedId(scope.parentKey, scope.ids);
|
|
391
|
+
const value = p.value ?? defaults?.value;
|
|
392
|
+
const node = liveNode(NodeClass, p, id, value, scope);
|
|
393
|
+
return render(defaults ? { ...props, id, value } : props, p.ref, node);
|
|
394
|
+
};
|
|
395
|
+
}
|
|
396
|
+
/** RAC useCachedChildren: a branch's `useChildren` sees the explicit / item-default id as `id` (never a generated `$.n` id). */
|
|
397
|
+
const childProps = (props, all, id) => (id == null || all.id === id ? props : { ...props, id });
|
|
398
|
+
/**
|
|
399
|
+
* Defines a collection branch part (RAC `createBranchComponent`: sections, tree items, rows with
|
|
400
|
+
* cells). `useChildren(props)` returns the branch's collection children (default: `Collection`
|
|
401
|
+
* semantics over `props.children` / `props.items`). The render gets `node`; render the children with
|
|
402
|
+
* the renderer's `CollectionBranch` (`<CollectionBranch collection={…} parent={node} />`).
|
|
403
|
+
*/
|
|
404
|
+
export function createBranchComponent(CollectionNodeClass, render, useChildren = (props) => collectionChildren(props)) {
|
|
405
|
+
const NodeClass = collectionNodeClass(CollectionNodeClass);
|
|
406
|
+
return function CollectionBranchPart(props) {
|
|
407
|
+
const p = props;
|
|
408
|
+
const all = p;
|
|
409
|
+
const build = useContext(BuildContext);
|
|
410
|
+
const defaults = takeItemDefaults();
|
|
411
|
+
const collectionCtx = useContext(CollectionContext);
|
|
412
|
+
const id = resolveId(all, defaults, collectionCtx);
|
|
413
|
+
const value = all.value ?? defaults?.value;
|
|
414
|
+
if (build) {
|
|
415
|
+
// Live props (P5): getters forwarded unread (as `nodeProps` for leaves); `children` is the branch's own.
|
|
416
|
+
const [textValue, rest, live] = nodeProps(all);
|
|
417
|
+
const key = id ?? generatedId(build.parentKey, build.ids);
|
|
418
|
+
const spec = {
|
|
419
|
+
type: NodeClass,
|
|
420
|
+
id: key,
|
|
421
|
+
value: value,
|
|
422
|
+
textValue: textValue || "",
|
|
423
|
+
"aria-label": all["aria-label"],
|
|
424
|
+
rendered: null,
|
|
425
|
+
props: rest,
|
|
426
|
+
ownProps: true,
|
|
427
|
+
render: (node) => render(withNode(all, live && !defaults, node.props, live, id == null ? { value: node.value } : { id: node.key, value: node.value }), p.ref, node),
|
|
428
|
+
children: [],
|
|
429
|
+
};
|
|
430
|
+
build.specs.push(spec);
|
|
431
|
+
provide(BuildContext, { specs: spec.children, parentKey: key, ids: { n: 0 }, run: build.run }, () => provide(CollectionItemContext, null, () => tracked(build, () => evaluate(() => useChildren(childProps(props, all, id))))));
|
|
432
|
+
return buildMark(spec);
|
|
433
|
+
}
|
|
434
|
+
const scope = useContext(CollectionScopeContext);
|
|
435
|
+
const key = id ?? generatedId(scope?.parentKey, scope?.ids ?? { n: 0 });
|
|
436
|
+
const node = liveNode(NodeClass, all, key, value, scope);
|
|
437
|
+
node.hasChildNodes = true;
|
|
438
|
+
const childScope = {
|
|
439
|
+
parentKey: key,
|
|
440
|
+
level: (scope?.level ?? 0) + (NodeClass.type === "item" ? 1 : 0),
|
|
441
|
+
idScope: scope?.idScope,
|
|
442
|
+
ids: { n: 0 },
|
|
443
|
+
};
|
|
444
|
+
node.content = () => (<Provider token={CollectionScopeContext} value={childScope}>
|
|
445
|
+
<Provider token={CollectionItemContext} value={null}>
|
|
446
|
+
{place(useChildren(childProps(props, all, id)))}
|
|
447
|
+
</Provider>
|
|
448
|
+
</Provider>);
|
|
449
|
+
return render(defaults ? { ...props, id: key, value } : props, p.ref, node);
|
|
450
|
+
};
|
|
451
|
+
}
|
|
452
|
+
const toArray = (items) => {
|
|
453
|
+
const value = typeof items === "function" ? items() : items;
|
|
454
|
+
return Array.isArray(value) ? value : [...value];
|
|
455
|
+
};
|
|
456
|
+
/** Default id of an item object (`item.key ?? item.id`). */
|
|
457
|
+
const itemId = (item) => {
|
|
458
|
+
if (item == null || typeof item !== "object")
|
|
459
|
+
return undefined;
|
|
460
|
+
const o = item;
|
|
461
|
+
return o.key ?? o.id;
|
|
462
|
+
};
|
|
463
|
+
/**
|
|
464
|
+
* The children of a collection or branch (RAC `useCachedChildren` with `addIdAndValue`): static
|
|
465
|
+
* content as is; `items` + renderer → one row per item, its part defaulting `id` to `item.key ??
|
|
466
|
+
* item.id` and `value` to the item.
|
|
467
|
+
*/
|
|
468
|
+
export function collectionChildren(props) {
|
|
469
|
+
const { items, children } = props;
|
|
470
|
+
// A per-item renderer (`(item) => …`, arity ≥ 1) without items renders nothing (RAC useCachedChildren). Told
|
|
471
|
+
// apart from lazy content: compiler slots and 0-arity thunks (`{() => …}` render-function children, kept for
|
|
472
|
+
// resumability) are content and render as is.
|
|
473
|
+
if (items == null)
|
|
474
|
+
return typeof children === "function" && !isSlot(children) && children.length > 0 ? null : children;
|
|
475
|
+
if (typeof children !== "function" || isSlot(children))
|
|
476
|
+
return children;
|
|
477
|
+
const render = children;
|
|
478
|
+
const build = useContext(BuildContext);
|
|
479
|
+
if (build) {
|
|
480
|
+
// Build mode: synchronous loop, tracked by the build (an `items` signal / accessor rebuilds the collection).
|
|
481
|
+
return tracked(build, () => toArray(items).map((item) => provide(CollectionItemContext, { id: itemId(item), value: item }, () => evaluate(render(item)))));
|
|
482
|
+
}
|
|
483
|
+
const each = () => toArray(items);
|
|
484
|
+
return (<For each={each} by={(item, index) => itemId(item) ?? index}>
|
|
485
|
+
{(item) => {
|
|
486
|
+
// Reactive row: a new item object under the same key (or index) re-renders the row's part.
|
|
487
|
+
const row = () => {
|
|
488
|
+
const value = item(); // tracked here: component bodies run untracked
|
|
489
|
+
return (<Provider token={CollectionItemContext} value={{ id: itemId(value), value }}>
|
|
490
|
+
{place(render(value))}
|
|
491
|
+
</Provider>);
|
|
492
|
+
};
|
|
493
|
+
// A function child is a dynamic region (re-runs when `item()` changes). Server: evaluated in the row
|
|
494
|
+
// (see `serverNow`).
|
|
495
|
+
return serverNow(row);
|
|
496
|
+
}}
|
|
497
|
+
</For>);
|
|
498
|
+
}
|
|
499
|
+
const isServer = typeof document === "undefined";
|
|
500
|
+
/**
|
|
501
|
+
* A dynamic row region (`For` row callback returning a function) as the row's content. Server: evaluated right
|
|
502
|
+
* away — a function value is otherwise rendered after the row's resume scope closed, so the part's bindings would
|
|
503
|
+
* belong to the page root instead of the row region and outlive a row the resumed list drops ("Missing resumable
|
|
504
|
+
* element", stale computeds reading a removed key). Runtime gap: function children are not server resume regions.
|
|
505
|
+
*/
|
|
506
|
+
const serverNow = (row) => (isServer ? row() : row);
|
|
507
|
+
/** A Collection renders a list of items, automatically managing ids and values (RAC `Collection`). */
|
|
508
|
+
export function Collection(props) {
|
|
509
|
+
const ctx = useContext(CollectionContext);
|
|
510
|
+
const idScope = props.idScope ?? ctx?.idScope;
|
|
511
|
+
// Build mode: synchronous (a server `Provider` defers its children; the build must register now).
|
|
512
|
+
const build = useContext(BuildContext);
|
|
513
|
+
if (build)
|
|
514
|
+
return provide(CollectionContext, { idScope }, () => tracked(build, () => evaluate(collectionChildren(props))));
|
|
515
|
+
return (<Provider token={CollectionContext} value={{ idScope }}>
|
|
516
|
+
{place(collectionChildren(props))}
|
|
517
|
+
</Provider>);
|
|
518
|
+
}
|
|
519
|
+
/** The collection of a `CollectionInput` (reads the accessor). */
|
|
520
|
+
export const resolveCollection = (collection) => typeof collection === "function" ? collection() : (collection ?? null);
|
|
521
|
+
const isPlain = (v) => {
|
|
522
|
+
if (v === null || typeof v !== "object")
|
|
523
|
+
return false;
|
|
524
|
+
const proto = Object.getPrototypeOf(v);
|
|
525
|
+
return proto === Object.prototype || proto === null;
|
|
526
|
+
};
|
|
527
|
+
/**
|
|
528
|
+
* Two values render the same: identical, or two functions of the same source (lazy children / render
|
|
529
|
+
* functions re-created by a rebuild: what they capture comes from the node's props / value, compared alongside;
|
|
530
|
+
* signals they read stay live bindings).
|
|
531
|
+
*/
|
|
532
|
+
const sameField = (a, b) => Object.is(a, b) || (typeof a === "function" && typeof b === "function" && isSlot(a) === isSlot(b) && a.length === b.length && String(a) === String(b));
|
|
533
|
+
/** Shallow equality of plain objects (props, item values), skipping the `live` keys. */
|
|
534
|
+
function sameShallow(a, b, live) {
|
|
535
|
+
if (Object.is(a, b))
|
|
536
|
+
return true;
|
|
537
|
+
if (!isPlain(a) || !isPlain(b))
|
|
538
|
+
return false;
|
|
539
|
+
const keys = Object.keys(a);
|
|
540
|
+
if (keys.length !== Object.keys(b).length)
|
|
541
|
+
return false;
|
|
542
|
+
for (const k of keys)
|
|
543
|
+
if (!(k in b) || (!live?.includes(k) && !sameField(a[k], b[k])))
|
|
544
|
+
return false;
|
|
545
|
+
return true;
|
|
546
|
+
}
|
|
547
|
+
/**
|
|
548
|
+
* Whether a rebuilt node renders like the previous one (Rivet: RAC keeps the DOM through React's reconciliation;
|
|
549
|
+
* a Rivet part is re-created): same class / key / text, render inputs (`rendered`, shallow `props` and item `value`)
|
|
550
|
+
* equal. Sibling links / index / level are not compared: parts read those live from the collection by key.
|
|
551
|
+
*/
|
|
552
|
+
export function sameRender(a, b) {
|
|
553
|
+
if (a === b)
|
|
554
|
+
return true;
|
|
555
|
+
if (!a || !b || a.constructor !== b.constructor || a.key !== b.key || a.textValue !== b.textValue || a["aria-label"] !== b["aria-label"])
|
|
556
|
+
return false;
|
|
557
|
+
const live = a.constructor.liveProps;
|
|
558
|
+
return sameField(a.rendered, b.rendered) && sameShallow(a.props, b.props, live) && sameShallow(a.value, b.value, live);
|
|
559
|
+
}
|
|
560
|
+
/**
|
|
561
|
+
* Renders the node at `key` of a built collection (a keyed row of `CollectionRoot` / `CollectionBranch` and the
|
|
562
|
+
* hosts' own node loops): a dynamic region that keeps the rendered part (DOM, focus) across rebuilds while the
|
|
563
|
+
* node renders the same (`sameRender`) and re-renders it when its render inputs changed, or when `depends` (read in the
|
|
564
|
+
* region) changes: a part whose content renders from its parent's value (TreeItemContent).
|
|
565
|
+
*/
|
|
566
|
+
export function renderNodeAt(collection, key, depends) {
|
|
567
|
+
// Server: rendered once, untracked. `depends` / the cut-off `node` are the browser region's re-render triggers; read
|
|
568
|
+
// in a resumable row they would count as the row's own reads, so the resumed For re-created the row on every re-run
|
|
569
|
+
// of its region (a sort re-created the table header and body: focus lost) instead of keeping it like a client rebuild.
|
|
570
|
+
if (isServer)
|
|
571
|
+
return untrack(() => {
|
|
572
|
+
const n = collection()?.getItem(rowKey(key())) ?? null;
|
|
573
|
+
// DOM-DATA servers: the row's data object (the For iterates keys), registered with the row (`domRowItem`).
|
|
574
|
+
if (n !== null)
|
|
575
|
+
domRowItem(n.value);
|
|
576
|
+
return n?.render ? n.render(n) : null;
|
|
577
|
+
});
|
|
578
|
+
const node = computed(() => collection()?.getItem(rowKey(key())) ?? null, { equals: sameRender });
|
|
579
|
+
return serverNow(() => {
|
|
580
|
+
depends?.();
|
|
581
|
+
node();
|
|
582
|
+
// The current node (the cut-off computed keeps the first of equal ones; `depends` re-renders with the latest).
|
|
583
|
+
const n = untrack(() => collection()?.getItem(rowKey(key())) ?? null);
|
|
584
|
+
return n?.render ? untrack(() => n.render(n)) : null;
|
|
585
|
+
});
|
|
586
|
+
}
|
|
587
|
+
/**
|
|
588
|
+
* Lazy collection rows (`resume.lazyRows`, LAZY-T6): a loop over container nodes — a section, a table's header / body (nodes
|
|
589
|
+
* whose children have children) — is not the lazy `For`; the rows below it are (a lazy row is one option / table row, not a
|
|
590
|
+
* whole table body). Read by the server's lazy rows only.
|
|
591
|
+
*/
|
|
592
|
+
function leafNodes(collection, parent) {
|
|
593
|
+
const c = resolveCollection(collection);
|
|
594
|
+
if (!c?.getChildren)
|
|
595
|
+
return true;
|
|
596
|
+
for (const n of parent ? c.getChildren(parent.key) : c) {
|
|
597
|
+
if (n.type === "content")
|
|
598
|
+
continue;
|
|
599
|
+
if (n.type === "section")
|
|
600
|
+
return false;
|
|
601
|
+
// No children (built nodes keep `firstChildKey`): no iterator per leaf (LAZY-COST-2: 1000 options ≈ 0.5 ms / render).
|
|
602
|
+
if (n.firstChildKey === null)
|
|
603
|
+
continue;
|
|
604
|
+
for (const child of c.getChildren(n.key)) {
|
|
605
|
+
for (const _ of c.getChildren(child.key))
|
|
606
|
+
return false;
|
|
607
|
+
break;
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
return true;
|
|
611
|
+
}
|
|
612
|
+
/**
|
|
613
|
+
* The nodes a row of `n` renders (its stamp covers them): `n`, and a section's items / a table row's cells — a nested `For`
|
|
614
|
+
* inside the row (`CollectionBranch`) that keeps no baseline of its own (`serverRows`).
|
|
615
|
+
*/
|
|
616
|
+
function rowNodes(c, n) {
|
|
617
|
+
const row = [n];
|
|
618
|
+
if (n.firstChildKey != null && c.getChildren)
|
|
619
|
+
for (const child of c.getChildren(n.key))
|
|
620
|
+
if (n.type === "section" || child.type === "cell")
|
|
621
|
+
row.push(child);
|
|
622
|
+
return row;
|
|
623
|
+
}
|
|
624
|
+
/** The stamp of a row's nodes (`row-stamps.ts`). */
|
|
625
|
+
const rowStamp = (row) => stamp(row[0], row.length > 1 ? row.slice(1) : null);
|
|
626
|
+
/**
|
|
627
|
+
* Server baseline of a resumed For over collection keys (ROW-RERENDER): `_regionState` with the stamps of the rows the server
|
|
628
|
+
* renders (`row-stamps.ts`) when the collection is an accessor whose build read signals (a static collection never rebuilds:
|
|
629
|
+
* null), recorded with the For's region; none (no slot) for the children of a section / table row (`parentType`). Called by the server and the browser alike (one `_regionState` slot per accessor
|
|
630
|
+
* collection, so the region's other slots keep their positions); the browser gets the server's value back when it
|
|
631
|
+
* re-creates that region (adopting the rows), null otherwise.
|
|
632
|
+
*/
|
|
633
|
+
export function serverRows(collection, keys, parentType) {
|
|
634
|
+
// The rows of a section / a table row: covered by the stamp of the row holding them (`rowNodes`). Decided by the
|
|
635
|
+
// parent node's type alone (the same on the server and in the browser: the `_regionState` slot is positional).
|
|
636
|
+
if (typeof collection !== "function" || parentType === "section" || parentType === "item")
|
|
637
|
+
return null;
|
|
638
|
+
return _regionState(() => {
|
|
639
|
+
if (!isServer)
|
|
640
|
+
return null;
|
|
641
|
+
return untrack(() => {
|
|
642
|
+
const c = _trackReads(collection);
|
|
643
|
+
if (!c.signals.length || !c.value)
|
|
644
|
+
return null;
|
|
645
|
+
let out = "";
|
|
646
|
+
for (const k of keys()) {
|
|
647
|
+
const n = c.value.getItem(k);
|
|
648
|
+
out += n ? rowStamp(rowNodes(c.value, n)) : stamp(null);
|
|
649
|
+
}
|
|
650
|
+
return out || null;
|
|
651
|
+
});
|
|
652
|
+
});
|
|
653
|
+
}
|
|
654
|
+
/**
|
|
655
|
+
* The keys of a resumed For over collection keys (`renderNodeAt` rows), given the server baseline (`serverRows`): an adopted
|
|
656
|
+
* server row keeps its key while its node renders like the server's (stamp in the baseline; then `sameRender` against the
|
|
657
|
+
* last node checked), else its key is boxed (`RowBox`, one box per key for good) — a key the adopted list does not know, so
|
|
658
|
+
* the For re-creates that row (rows read `rowKey(key())`). Rows the server did not render get a box too (created anyway).
|
|
659
|
+
* Without a baseline: `keys` itself.
|
|
660
|
+
*/
|
|
661
|
+
export function resumedKeys(collection, base, keys) {
|
|
662
|
+
if (base === null || isServer)
|
|
663
|
+
return keys;
|
|
664
|
+
let set = null;
|
|
665
|
+
const boxes = new Map(),
|
|
666
|
+
// The last node (`rowNodes`: + its items / cells) found to render like the server's, per key.
|
|
667
|
+
seen = new Map();
|
|
668
|
+
return () => {
|
|
669
|
+
const list = keys(), c = resolveCollection(collection);
|
|
670
|
+
return untrack(() => {
|
|
671
|
+
set ??= stampSet(base);
|
|
672
|
+
let out = null;
|
|
673
|
+
for (let i = 0; i < list.length; i++) {
|
|
674
|
+
const k = list[i];
|
|
675
|
+
let box = boxes.get(k);
|
|
676
|
+
if (box === undefined) {
|
|
677
|
+
const n = c?.getItem(k) ?? null;
|
|
678
|
+
if (n === null)
|
|
679
|
+
continue;
|
|
680
|
+
const row = rowNodes(c, n), last = seen.get(k);
|
|
681
|
+
// Unchanged since the last check (`sameRender`, node by node): no stamp.
|
|
682
|
+
if (last !== undefined && last.length === row.length && row.every((x, j) => sameRender(last[j], x)))
|
|
683
|
+
continue;
|
|
684
|
+
if (set.has(rowStamp(row))) {
|
|
685
|
+
seen.set(k, row);
|
|
686
|
+
continue;
|
|
687
|
+
}
|
|
688
|
+
seen.delete(k);
|
|
689
|
+
boxes.set(k, (box = { k }));
|
|
690
|
+
}
|
|
691
|
+
(out ??= list.slice())[i] = box;
|
|
692
|
+
}
|
|
693
|
+
return out ?? list;
|
|
694
|
+
});
|
|
695
|
+
};
|
|
696
|
+
}
|
|
697
|
+
function renderNodes(collection, parent, parentType) {
|
|
698
|
+
// Rows are keyed by primitive keys (stable across rebuilds) so an adopted (resumed) row survives a
|
|
699
|
+
// collection rebuild; a row re-renders only when its node's render inputs changed (`renderNodeAt`) and parts
|
|
700
|
+
// read live data by key. An adopted row whose node changed since the server render is re-created (`resumedKeys`).
|
|
701
|
+
const keys = () => {
|
|
702
|
+
const c = resolveCollection(collection);
|
|
703
|
+
const keys = [];
|
|
704
|
+
for (const n of parent ? c.getChildren(parent.key) : c)
|
|
705
|
+
if (n.type !== "content")
|
|
706
|
+
keys.push(n.key);
|
|
707
|
+
return keys;
|
|
708
|
+
};
|
|
709
|
+
const each = resumedKeys(collection, serverRows(collection, keys, parentType), keys);
|
|
710
|
+
return (<For each={each} by={(key) => key} lazy={() => leafNodes(collection, parent)}>
|
|
711
|
+
{(key) => renderNodeAt(() => resolveCollection(collection), key)}
|
|
712
|
+
</For>);
|
|
713
|
+
}
|
|
714
|
+
/** RAC `DefaultCollectionRenderer`: built collections render node by node; live mode renders content in place. */
|
|
715
|
+
export const DefaultCollectionRenderer = {
|
|
716
|
+
CollectionRoot(props) {
|
|
717
|
+
const { collection, content, idScope } = props;
|
|
718
|
+
if (collection)
|
|
719
|
+
return renderNodes(collection, null);
|
|
720
|
+
return (<Provider token={CollectionScopeContext} value={{ parentKey: null, level: 0, idScope, ids: { n: 0 } }}>
|
|
721
|
+
{place(content)}
|
|
722
|
+
</Provider>);
|
|
723
|
+
},
|
|
724
|
+
CollectionBranch(props) {
|
|
725
|
+
const { collection, parent } = props;
|
|
726
|
+
// `parent` may be row data (`{ key }`, a resumable capture), not the node: its type comes from the collection.
|
|
727
|
+
const node = collection ? untrack(() => resolveCollection(collection)?.getItem(parent.key)) : null;
|
|
728
|
+
if (node)
|
|
729
|
+
return renderNodes(collection, parent, node.type);
|
|
730
|
+
return (parent.content?.() ?? null);
|
|
731
|
+
},
|
|
732
|
+
};
|
|
733
|
+
/** RAC `CollectionRendererContext` (Virtualizer provides its own renderer). */
|
|
734
|
+
export const CollectionRendererContext = createContext(DefaultCollectionRenderer);
|
|
735
|
+
/** RAC `usePersistedKeys`: the focused key stays rendered (virtualizers). */
|
|
736
|
+
export function persistedKeys(focusedKey) {
|
|
737
|
+
return focusedKey != null ? new Set([focusedKey]) : null;
|
|
738
|
+
}
|
|
739
|
+
/** Provided by hosts so a generic `<Section>` renders as their section part (RAC `SectionContext`). */
|
|
740
|
+
export const SectionContext = createContext(null);
|
|
741
|
+
/** @deprecated Use the collection's section part (`ListBoxSection`, `MenuSection`, …). */
|
|
742
|
+
export const Section = /* @__PURE__ */ createBranchComponent("section", function Section(props, ref, section) {
|
|
743
|
+
const ctx = useContext(SectionContext);
|
|
744
|
+
return ctx.render(props, ref, section, "rv-Section");
|
|
745
|
+
});
|