@rivetjs/cdk 0.0.0-stage → 0.1.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/NOTICE +483 -0
- package/README.md +10 -2
- package/_adapters/collection.d.ts +160 -0
- package/_adapters/collection.js +235 -0
- package/_adapters/collections.d.ts +325 -0
- package/_adapters/collections.js +934 -0
- package/_adapters/dom-collection.d.ts +42 -0
- package/_adapters/dom-collection.js +228 -0
- package/_adapters/grid-selection.d.ts +115 -0
- package/_adapters/grid-selection.js +436 -0
- package/_adapters/interactions.d.ts +19 -0
- package/_adapters/interactions.js +45 -0
- package/_adapters/intl.d.ts +8 -0
- package/_adapters/intl.js +106 -0
- package/_adapters/press.d.ts +22 -0
- package/_adapters/press.js +34 -0
- package/_adapters/selectable.d.ts +132 -0
- package/_adapters/selectable.js +599 -0
- package/_adapters/selection.d.ts +120 -0
- package/_adapters/selection.js +709 -0
- package/_adapters/type-select.d.ts +8 -0
- package/_adapters/type-select.js +59 -0
- package/a11y/aria-describer.d.ts +46 -0
- package/a11y/aria-describer.js +169 -0
- package/a11y/focus-monitor.d.ts +98 -0
- package/a11y/focus-monitor.js +321 -0
- package/a11y/focus-trap.d.ts +137 -0
- package/a11y/focus-trap.js +378 -0
- package/a11y/high-contrast.d.ts +26 -0
- package/a11y/high-contrast.js +84 -0
- package/a11y/index.d.ts +37 -0
- package/a11y/index.js +97 -0
- package/a11y/interactivity-checker.d.ts +18 -0
- package/a11y/interactivity-checker.js +126 -0
- package/a11y/key-manager.d.ts +152 -0
- package/a11y/key-manager.js +397 -0
- package/a11y/live-announcer.d.ts +53 -0
- package/a11y/live-announcer.js +143 -0
- package/accordion/index.d.ts +2 -0
- package/accordion/index.jsx +10 -0
- package/announcer/index.d.ts +8 -0
- package/announcer/index.jsx +22 -0
- package/announcer/live-announcer.d.ts +15 -0
- package/announcer/live-announcer.js +123 -0
- package/autocomplete/behaviour.d.ts +94 -0
- package/autocomplete/behaviour.jsx +423 -0
- package/autocomplete/contexts.d.ts +54 -0
- package/autocomplete/contexts.js +28 -0
- package/autocomplete/index.d.ts +12 -0
- package/autocomplete/index.jsx +31 -0
- package/autocomplete/intl.d.ts +2 -0
- package/autocomplete/intl.js +36 -0
- package/bidi/bidi-dir.d.ts +23 -0
- package/bidi/bidi-dir.jsx +36 -0
- package/bidi/index.d.ts +58 -0
- package/bidi/index.js +84 -0
- package/breadcrumbs/behaviour.d.ts +6 -0
- package/breadcrumbs/behaviour.js +17 -0
- package/breadcrumbs/index.d.ts +68 -0
- package/breadcrumbs/index.jsx +224 -0
- package/breadcrumbs/intl.d.ts +3 -0
- package/breadcrumbs/intl.js +104 -0
- package/button/behaviour.d.ts +61 -0
- package/button/behaviour.js +90 -0
- package/button/index.d.ts +38 -0
- package/button/index.jsx +376 -0
- package/button/press.d.ts +25 -0
- package/button/press.js +54 -0
- package/calendar/behaviour.d.ts +250 -0
- package/calendar/behaviour.jsx +939 -0
- package/calendar/index.d.ts +157 -0
- package/calendar/index.jsx +484 -0
- package/calendar/intl.d.ts +3 -0
- package/calendar/intl.js +36 -0
- package/carousel/behaviour.d.ts +50 -0
- package/carousel/behaviour.jsx +365 -0
- package/carousel/engine/Alignment.d.ts +5 -0
- package/carousel/engine/Alignment.js +24 -0
- package/carousel/engine/Animations.d.ts +13 -0
- package/carousel/engine/Animations.js +28 -0
- package/carousel/engine/Axis.d.ts +14 -0
- package/carousel/engine/Axis.js +35 -0
- package/carousel/engine/Counter.d.ts +7 -0
- package/carousel/engine/Counter.js +32 -0
- package/carousel/engine/DragHandler.d.ts +22 -0
- package/carousel/engine/DragHandler.js +141 -0
- package/carousel/engine/DragTracker.d.ts +10 -0
- package/carousel/engine/DragTracker.js +29 -0
- package/carousel/engine/EmblaCarousel.d.ts +32 -0
- package/carousel/engine/EmblaCarousel.js +177 -0
- package/carousel/engine/Engine.d.ts +64 -0
- package/carousel/engine/Engine.js +137 -0
- package/carousel/engine/EventHandler.d.ts +27 -0
- package/carousel/engine/EventHandler.js +33 -0
- package/carousel/engine/EventStore.d.ts +9 -0
- package/carousel/engine/EventStore.js +25 -0
- package/carousel/engine/NodeRects.d.ts +12 -0
- package/carousel/engine/NodeRects.js +18 -0
- package/carousel/engine/Options.d.ts +40 -0
- package/carousel/engine/Options.js +22 -0
- package/carousel/engine/OptionsHandler.d.ts +10 -0
- package/carousel/engine/OptionsHandler.js +26 -0
- package/carousel/engine/PercentOfView.d.ts +4 -0
- package/carousel/engine/PercentOfView.js +9 -0
- package/carousel/engine/Plugins.d.ts +16 -0
- package/carousel/engine/Plugins.js +1 -0
- package/carousel/engine/PluginsHandler.d.ts +8 -0
- package/carousel/engine/PluginsHandler.js +16 -0
- package/carousel/engine/ResizeHandler.d.ts +13 -0
- package/carousel/engine/ResizeHandler.js +51 -0
- package/carousel/engine/ScrollBounds.d.ts +10 -0
- package/carousel/engine/ScrollBounds.js +41 -0
- package/carousel/engine/ScrollContain.d.ts +7 -0
- package/carousel/engine/ScrollContain.js +52 -0
- package/carousel/engine/ScrollLimit.d.ts +5 -0
- package/carousel/engine/ScrollLimit.js +13 -0
- package/carousel/engine/ScrollLooper.d.ts +6 -0
- package/carousel/engine/ScrollLooper.js +26 -0
- package/carousel/engine/ScrollProgress.d.ts +5 -0
- package/carousel/engine/ScrollProgress.js +11 -0
- package/carousel/engine/ScrollSnaps.d.ts +9 -0
- package/carousel/engine/ScrollSnaps.js +26 -0
- package/carousel/engine/ScrollTarget.d.ts +12 -0
- package/carousel/engine/ScrollTarget.js +47 -0
- package/carousel/engine/ScrollTo.d.ts +11 -0
- package/carousel/engine/ScrollTo.js +36 -0
- package/carousel/engine/SlideFocus.d.ts +13 -0
- package/carousel/engine/SlideFocus.js +39 -0
- package/carousel/engine/SlideLooper.d.ts +18 -0
- package/carousel/engine/SlideLooper.js +78 -0
- package/carousel/engine/SlideRegistry.d.ts +7 -0
- package/carousel/engine/SlideRegistry.js +31 -0
- package/carousel/engine/SlideSizes.d.ts +10 -0
- package/carousel/engine/SlideSizes.js +41 -0
- package/carousel/engine/SlidesHandler.d.ts +10 -0
- package/carousel/engine/SlidesHandler.js +36 -0
- package/carousel/engine/SlidesInView.d.ts +8 -0
- package/carousel/engine/SlidesInView.js +59 -0
- package/carousel/engine/SlidesToScroll.d.ts +7 -0
- package/carousel/engine/SlidesToScroll.js +41 -0
- package/carousel/engine/Translate.d.ts +7 -0
- package/carousel/engine/Translate.js +38 -0
- package/carousel/engine/index.d.ts +11 -0
- package/carousel/engine/index.js +1 -0
- package/carousel/engine/utils.d.ts +15 -0
- package/carousel/engine/utils.js +45 -0
- package/carousel/index.d.ts +202 -0
- package/carousel/index.jsx +469 -0
- package/carousel/plugins/auto-height/AutoHeight.d.ts +14 -0
- package/carousel/plugins/auto-height/AutoHeight.js +43 -0
- package/carousel/plugins/auto-height/Options.d.ts +2 -0
- package/carousel/plugins/auto-height/Options.js +1 -0
- package/carousel/plugins/auto-height/index.d.ts +2 -0
- package/carousel/plugins/auto-height/index.js +1 -0
- package/carousel/plugins/auto-scroll/AutoScroll.d.ts +25 -0
- package/carousel/plugins/auto-scroll/AutoScroll.js +185 -0
- package/carousel/plugins/auto-scroll/Options.d.ts +13 -0
- package/carousel/plugins/auto-scroll/Options.js +12 -0
- package/carousel/plugins/auto-scroll/index.d.ts +2 -0
- package/carousel/plugins/auto-scroll/index.js +1 -0
- package/carousel/plugins/auto-scroll/utils.d.ts +3 -0
- package/carousel/plugins/auto-scroll/utils.js +4 -0
- package/carousel/plugins/autoplay/Autoplay.d.ts +29 -0
- package/carousel/plugins/autoplay/Autoplay.js +173 -0
- package/carousel/plugins/autoplay/Options.d.ts +14 -0
- package/carousel/plugins/autoplay/Options.js +12 -0
- package/carousel/plugins/autoplay/index.d.ts +2 -0
- package/carousel/plugins/autoplay/index.js +1 -0
- package/carousel/plugins/autoplay/utils.d.ts +4 -0
- package/carousel/plugins/autoplay/utils.js +11 -0
- package/carousel/plugins/class-names/ClassNames.d.ts +14 -0
- package/carousel/plugins/class-names/ClassNames.js +98 -0
- package/carousel/plugins/class-names/Options.d.ts +13 -0
- package/carousel/plugins/class-names/Options.js +9 -0
- package/carousel/plugins/class-names/index.d.ts +2 -0
- package/carousel/plugins/class-names/index.js +1 -0
- package/carousel/plugins/class-names/utils.d.ts +4 -0
- package/carousel/plugins/class-names/utils.js +14 -0
- package/carousel/plugins/fade/Fade.d.ts +14 -0
- package/carousel/plugins/fade/Fade.js +199 -0
- package/carousel/plugins/fade/Options.d.ts +2 -0
- package/carousel/plugins/fade/Options.js +1 -0
- package/carousel/plugins/fade/index.d.ts +2 -0
- package/carousel/plugins/fade/index.js +1 -0
- package/carousel/plugins/fade/utils.d.ts +2 -0
- package/carousel/plugins/fade/utils.js +8 -0
- package/carousel/state.d.ts +81 -0
- package/carousel/state.js +71 -0
- package/chat/index.d.ts +83 -0
- package/chat/index.jsx +287 -0
- package/checkbox/behaviour.d.ts +172 -0
- package/checkbox/behaviour.jsx +412 -0
- package/checkbox/index.d.ts +168 -0
- package/checkbox/index.jsx +310 -0
- package/clipboard/index.d.ts +49 -0
- package/clipboard/index.js +136 -0
- package/coercion/index.d.ts +36 -0
- package/coercion/index.js +58 -0
- package/collections/base.d.ts +115 -0
- package/collections/base.js +346 -0
- package/collections/builder.d.ts +44 -0
- package/collections/builder.js +283 -0
- package/collections/components.d.ts +252 -0
- package/collections/components.jsx +745 -0
- package/collections/data-source.d.ts +26 -0
- package/collections/data-source.js +27 -0
- package/collections/dom.d.ts +34 -0
- package/collections/dom.js +127 -0
- package/collections/grid.d.ts +45 -0
- package/collections/grid.js +125 -0
- package/collections/hidden.d.ts +4 -0
- package/collections/hidden.js +12 -0
- package/collections/index.d.ts +45 -0
- package/collections/index.js +105 -0
- package/collections/list-state.d.ts +99 -0
- package/collections/list-state.js +156 -0
- package/collections/list.d.ts +20 -0
- package/collections/list.js +77 -0
- package/collections/nodes.d.ts +17 -0
- package/collections/nodes.js +107 -0
- package/collections/row-stamps.d.ts +17 -0
- package/collections/row-stamps.js +108 -0
- package/collections/selection-model.d.ts +93 -0
- package/collections/selection-model.js +192 -0
- package/collections/server-dev.d.ts +6 -0
- package/collections/server-dev.js +18 -0
- package/collections/server-off.d.ts +6 -0
- package/collections/server-off.js +9 -0
- package/collections/server-on.d.ts +29 -0
- package/collections/server-on.jsx +86 -0
- package/collections/table.d.ts +114 -0
- package/collections/table.js +439 -0
- package/collections/tree-state.d.ts +47 -0
- package/collections/tree-state.js +73 -0
- package/collections/tree.d.ts +20 -0
- package/collections/tree.js +66 -0
- package/collections/types.d.ts +229 -0
- package/collections/types.js +4 -0
- package/collections/unique-selection-dispatcher.d.ts +10 -0
- package/collections/unique-selection-dispatcher.js +25 -0
- package/color/area-state.d.ts +99 -0
- package/color/area-state.js +160 -0
- package/color/aria-intl.d.ts +3 -0
- package/color/aria-intl.js +274 -0
- package/color/channel-field-state.d.ts +50 -0
- package/color/channel-field-state.jsx +87 -0
- package/color/color.d.ts +78 -0
- package/color/color.js +738 -0
- package/color/field-state.d.ts +66 -0
- package/color/field-state.jsx +159 -0
- package/color/index.d.ts +58 -0
- package/color/index.js +88 -0
- package/color/intl.d.ts +3 -0
- package/color/intl.js +1328 -0
- package/color/picker-state.d.ts +20 -0
- package/color/picker-state.js +19 -0
- package/color/slider-state.d.ts +78 -0
- package/color/slider-state.jsx +98 -0
- package/color/value.d.ts +27 -0
- package/color/value.js +36 -0
- package/color/wheel-state.d.ts +77 -0
- package/color/wheel-state.js +152 -0
- package/color-area/behaviour.d.ts +161 -0
- package/color-area/behaviour.jsx +454 -0
- package/color-area/index.d.ts +34 -0
- package/color-area/index.jsx +187 -0
- package/color-field/behaviour.d.ts +112 -0
- package/color-field/behaviour.jsx +262 -0
- package/color-field/index.d.ts +72 -0
- package/color-field/index.jsx +309 -0
- package/color-picker/index.d.ts +19 -0
- package/color-picker/index.jsx +49 -0
- package/color-slider/behaviour.d.ts +103 -0
- package/color-slider/behaviour.jsx +234 -0
- package/color-slider/index.d.ts +40 -0
- package/color-slider/index.jsx +162 -0
- package/color-swatch/behaviour.d.ts +40 -0
- package/color-swatch/behaviour.js +36 -0
- package/color-swatch/index.d.ts +29 -0
- package/color-swatch/index.jsx +82 -0
- package/color-swatch-picker/index.d.ts +62 -0
- package/color-swatch-picker/index.jsx +95 -0
- package/color-swatch-picker/intl.d.ts +3 -0
- package/color-swatch-picker/intl.js +104 -0
- package/color-thumb/index.d.ts +85 -0
- package/color-thumb/index.jsx +93 -0
- package/color-wheel/behaviour.d.ts +123 -0
- package/color-wheel/behaviour.jsx +301 -0
- package/color-wheel/index.d.ts +50 -0
- package/color-wheel/index.jsx +166 -0
- package/combobox/behaviour.d.ts +120 -0
- package/combobox/behaviour.jsx +588 -0
- package/combobox/index.d.ts +101 -0
- package/combobox/index.jsx +365 -0
- package/combobox/intl.d.ts +2 -0
- package/combobox/intl.js +240 -0
- package/compare/behaviour.d.ts +101 -0
- package/compare/behaviour.js +288 -0
- package/compare/index.d.ts +58 -0
- package/compare/index.jsx +129 -0
- package/data/async-list.d.ts +78 -0
- package/data/async-list.jsx +257 -0
- package/data/index.d.ts +3 -0
- package/data/index.jsx +6 -0
- package/data/list-data.d.ts +88 -0
- package/data/list-data.jsx +210 -0
- package/data/tree-data.d.ts +59 -0
- package/data/tree-data.jsx +278 -0
- package/data-grid/behaviour.d.ts +95 -0
- package/data-grid/behaviour.js +725 -0
- package/data-grid/index.d.ts +138 -0
- package/data-grid/index.jsx +452 -0
- package/data-grid/state.d.ts +131 -0
- package/data-grid/state.js +288 -0
- package/date/CalendarDate.d.ts +207 -0
- package/date/CalendarDate.js +374 -0
- package/date/DateFormatter.d.ts +24 -0
- package/date/DateFormatter.js +175 -0
- package/date/calendars/BuddhistCalendar.d.ts +16 -0
- package/date/calendars/BuddhistCalendar.js +46 -0
- package/date/calendars/EthiopicCalendar.d.ts +45 -0
- package/date/calendars/EthiopicCalendar.js +178 -0
- package/date/calendars/GregorianCalendar.d.ts +26 -0
- package/date/calendars/GregorianCalendar.js +122 -0
- package/date/calendars/HebrewCalendar.d.ts +21 -0
- package/date/calendars/HebrewCalendar.js +174 -0
- package/date/calendars/IndianCalendar.d.ts +17 -0
- package/date/calendars/IndianCalendar.js +111 -0
- package/date/calendars/IslamicCalendar.d.ts +51 -0
- package/date/calendars/IslamicCalendar.js +205 -0
- package/date/calendars/JapaneseCalendar.d.ts +22 -0
- package/date/calendars/JapaneseCalendar.js +148 -0
- package/date/calendars/PersianCalendar.d.ts +19 -0
- package/date/calendars/PersianCalendar.js +85 -0
- package/date/calendars/TaiwanCalendar.d.ts +19 -0
- package/date/calendars/TaiwanCalendar.js +70 -0
- package/date/conversion.d.ts +45 -0
- package/date/conversion.js +269 -0
- package/date/createCalendar.d.ts +3 -0
- package/date/createCalendar.js +55 -0
- package/date/index.d.ts +20 -0
- package/date/index.js +30 -0
- package/date/manipulation.d.ts +25 -0
- package/date/manipulation.js +399 -0
- package/date/queries.d.ts +93 -0
- package/date/queries.js +303 -0
- package/date/serialize.d.ts +18 -0
- package/date/serialize.js +55 -0
- package/date/string.d.ts +36 -0
- package/date/string.js +223 -0
- package/date/types.d.ts +136 -0
- package/date/types.js +14 -0
- package/date/utils.d.ts +4 -0
- package/date/utils.js +16 -0
- package/date/weekStartData.d.ts +1 -0
- package/date/weekStartData.js +112 -0
- package/date-field/behaviour.d.ts +188 -0
- package/date-field/behaviour.jsx +1025 -0
- package/date-field/index.d.ts +150 -0
- package/date-field/index.jsx +354 -0
- package/date-field/intl.d.ts +3 -0
- package/date-field/intl.js +36 -0
- package/date-field/live-value.d.ts +22 -0
- package/date-field/live-value.jsx +44 -0
- package/date-picker/behaviour.d.ts +95 -0
- package/date-picker/behaviour.jsx +343 -0
- package/date-picker/index.d.ts +66 -0
- package/date-picker/index.jsx +243 -0
- package/dialog/behaviour.d.ts +63 -0
- package/dialog/behaviour.jsx +90 -0
- package/dialog/contexts.d.ts +12 -0
- package/dialog/contexts.js +8 -0
- package/dialog/index.d.ts +48 -0
- package/dialog/index.jsx +301 -0
- package/disclosure/behaviour.d.ts +50 -0
- package/disclosure/behaviour.jsx +128 -0
- package/disclosure/details.d.ts +21 -0
- package/disclosure/details.jsx +14 -0
- package/disclosure/index.d.ts +92 -0
- package/disclosure/index.jsx +300 -0
- package/drag-drop/cdk-index.d.ts +22 -0
- package/drag-drop/cdk-index.jsx +25 -0
- package/drag-drop/directives/assertions.d.ts +6 -0
- package/drag-drop/directives/assertions.js +13 -0
- package/drag-drop/directives/config.d.ts +30 -0
- package/drag-drop/directives/config.js +7 -0
- package/drag-drop/directives/drag-handle.d.ts +10 -0
- package/drag-drop/directives/drag-handle.js +29 -0
- package/drag-drop/directives/drag.d.ts +210 -0
- package/drag-drop/directives/drag.js +550 -0
- package/drag-drop/directives/drop-list-group.d.ts +25 -0
- package/drag-drop/directives/drop-list-group.js +55 -0
- package/drag-drop/directives/drop-list.d.ts +163 -0
- package/drag-drop/directives/drop-list.js +396 -0
- package/drag-drop/directives/registry.d.ts +32 -0
- package/drag-drop/directives/registry.js +61 -0
- package/drag-drop/dom/clone-node.d.ts +2 -0
- package/drag-drop/dom/clone-node.js +58 -0
- package/drag-drop/dom/coerce.d.ts +6 -0
- package/drag-drop/dom/coerce.js +8 -0
- package/drag-drop/dom/dom-rect.d.ts +37 -0
- package/drag-drop/dom/dom-rect.js +71 -0
- package/drag-drop/dom/fake-event.d.ts +4 -0
- package/drag-drop/dom/fake-event.js +22 -0
- package/drag-drop/dom/inherited-text.d.ts +4 -0
- package/drag-drop/dom/inherited-text.js +44 -0
- package/drag-drop/dom/layout-shift.d.ts +8 -0
- package/drag-drop/dom/layout-shift.js +87 -0
- package/drag-drop/dom/mount-content.d.ts +2 -0
- package/drag-drop/dom/mount-content.js +7 -0
- package/drag-drop/dom/parent-position-tracker.d.ts +32 -0
- package/drag-drop/dom/parent-position-tracker.js +71 -0
- package/drag-drop/dom/root-node.d.ts +21 -0
- package/drag-drop/dom/root-node.js +41 -0
- package/drag-drop/dom/shadow-dom.d.ts +4 -0
- package/drag-drop/dom/shadow-dom.js +18 -0
- package/drag-drop/dom/styling.d.ts +52 -0
- package/drag-drop/dom/styling.js +86 -0
- package/drag-drop/dom/transition-duration.d.ts +2 -0
- package/drag-drop/dom/transition-duration.js +29 -0
- package/drag-drop/drag-drop-registry.d.ts +69 -0
- package/drag-drop/drag-drop-registry.js +224 -0
- package/drag-drop/drag-drop.d.ts +19 -0
- package/drag-drop/drag-drop.js +10 -0
- package/drag-drop/drag-events.d.ts +117 -0
- package/drag-drop/drag-events.js +1 -0
- package/drag-drop/drag-handle.d.ts +18 -0
- package/drag-drop/drag-handle.jsx +53 -0
- package/drag-drop/drag-placeholder.d.ts +8 -0
- package/drag-drop/drag-placeholder.jsx +25 -0
- package/drag-drop/drag-preview.d.ts +10 -0
- package/drag-drop/drag-preview.jsx +31 -0
- package/drag-drop/drag-ref.d.ts +476 -0
- package/drag-drop/drag-ref.js +1306 -0
- package/drag-drop/drag-utils.d.ts +25 -0
- package/drag-drop/drag-utils.js +53 -0
- package/drag-drop/drag.d.ts +23 -0
- package/drag-drop/drag.jsx +128 -0
- package/drag-drop/drop-list-group.d.ts +22 -0
- package/drag-drop/drop-list-group.jsx +19 -0
- package/drag-drop/drop-list-ref.d.ts +295 -0
- package/drag-drop/drop-list-ref.js +707 -0
- package/drag-drop/drop-list.d.ts +19 -0
- package/drag-drop/drop-list.jsx +87 -0
- package/drag-drop/index.d.ts +1 -0
- package/drag-drop/index.jsx +4 -0
- package/drag-drop/lazy-refs.d.ts +28 -0
- package/drag-drop/lazy-refs.js +144 -0
- package/drag-drop/preview-ref.d.ts +38 -0
- package/drag-drop/preview-ref.js +132 -0
- package/drag-drop/sorting/drop-list-sort-strategy.d.ts +29 -0
- package/drag-drop/sorting/drop-list-sort-strategy.js +1 -0
- package/drag-drop/sorting/mixed-sort-strategy.d.ts +99 -0
- package/drag-drop/sorting/mixed-sort-strategy.js +259 -0
- package/drag-drop/sorting/single-axis-sort-strategy.d.ts +112 -0
- package/drag-drop/sorting/single-axis-sort-strategy.js +343 -0
- package/file-trigger/index.d.ts +24 -0
- package/file-trigger/index.jsx +41 -0
- package/flip/index.d.ts +59 -0
- package/flip/index.js +124 -0
- package/focus/focus-ring.d.ts +42 -0
- package/focus/focus-ring.jsx +77 -0
- package/focus/focus-scope.d.ts +51 -0
- package/focus/focus-scope.jsx +431 -0
- package/focus/focusable.d.ts +33 -0
- package/focus/focusable.jsx +93 -0
- package/focus/index.d.ts +74 -0
- package/focus/index.js +274 -0
- package/form/behaviour.d.ts +29 -0
- package/form/behaviour.js +145 -0
- package/form/field-error.d.ts +38 -0
- package/form/field-error.jsx +67 -0
- package/form/index.d.ts +77 -0
- package/form/index.jsx +116 -0
- package/grid/behaviour.d.ts +290 -0
- package/grid/behaviour.js +683 -0
- package/grid/intl.d.ts +2 -0
- package/grid/intl.js +36 -0
- package/grid/keyboard-delegate.d.ts +56 -0
- package/grid/keyboard-delegate.js +316 -0
- package/grid-list/behaviour.d.ts +248 -0
- package/grid-list/behaviour.js +616 -0
- package/grid-list/index.d.ts +204 -0
- package/grid-list/index.jsx +721 -0
- package/grid-list/row.d.ts +24 -0
- package/grid-list/row.js +57 -0
- package/group/index.d.ts +48 -0
- package/group/index.jsx +126 -0
- package/header/index.d.ts +13 -0
- package/header/index.jsx +34 -0
- package/heading/index.d.ts +19 -0
- package/heading/index.jsx +55 -0
- package/highlight/index.d.ts +12 -0
- package/highlight/index.jsx +357 -0
- package/i18n/filter.d.ts +16 -0
- package/i18n/filter.js +66 -0
- package/i18n/i18n-provider.d.ts +10 -0
- package/i18n/i18n-provider.jsx +15 -0
- package/i18n/index.d.ts +27 -0
- package/i18n/index.js +115 -0
- package/i18n/intl-cache.d.ts +4 -0
- package/i18n/intl-cache.js +40 -0
- package/i18n/list-formatter.d.ts +2 -0
- package/i18n/list-formatter.js +11 -0
- package/input/index.d.ts +51 -0
- package/input/index.jsx +95 -0
- package/interactions/controllable.d.ts +42 -0
- package/interactions/controllable.js +67 -0
- package/interactions/focus-visible.d.ts +68 -0
- package/interactions/focus-visible.jsx +291 -0
- package/interactions/focus.d.ts +58 -0
- package/interactions/focus.jsx +152 -0
- package/interactions/hover.d.ts +54 -0
- package/interactions/hover.jsx +139 -0
- package/interactions/index.d.ts +1 -0
- package/interactions/index.js +3 -0
- package/interactions/interact-outside.d.ts +24 -0
- package/interactions/interact-outside.jsx +57 -0
- package/interactions/keyboard.d.ts +28 -0
- package/interactions/keyboard.jsx +51 -0
- package/interactions/long-press.d.ts +41 -0
- package/interactions/long-press.jsx +79 -0
- package/interactions/merge-props.d.ts +54 -0
- package/interactions/merge-props.jsx +257 -0
- package/interactions/move.d.ts +48 -0
- package/interactions/move.jsx +96 -0
- package/interactions/press.d.ts +129 -0
- package/interactions/press.jsx +539 -0
- package/interactions/pressable.d.ts +22 -0
- package/interactions/pressable.jsx +93 -0
- package/interactions/scroll-wheel.d.ts +20 -0
- package/interactions/scroll-wheel.jsx +40 -0
- package/interactions/utils.d.ts +52 -0
- package/interactions/utils.js +253 -0
- package/keyboard/index.d.ts +12 -0
- package/keyboard/index.jsx +34 -0
- package/keys/index.d.ts +68 -0
- package/keys/index.js +199 -0
- package/label/behaviour.d.ts +54 -0
- package/label/behaviour.js +60 -0
- package/label/index.d.ts +35 -0
- package/label/index.jsx +85 -0
- package/landmark/index.d.ts +10 -0
- package/landmark/index.jsx +35 -0
- package/landmark/manager.d.ts +50 -0
- package/landmark/manager.js +364 -0
- package/layout/index.d.ts +90 -0
- package/layout/index.js +207 -0
- package/lightbox/behaviour.d.ts +82 -0
- package/lightbox/behaviour.js +490 -0
- package/lightbox/captions/index.d.ts +39 -0
- package/lightbox/captions/index.jsx +44 -0
- package/lightbox/counter/index.d.ts +10 -0
- package/lightbox/counter/index.jsx +10 -0
- package/lightbox/download/index.d.ts +32 -0
- package/lightbox/download/index.jsx +89 -0
- package/lightbox/embed/index.d.ts +15 -0
- package/lightbox/embed/index.jsx +58 -0
- package/lightbox/fullscreen/index.d.ts +24 -0
- package/lightbox/fullscreen/index.jsx +80 -0
- package/lightbox/index.d.ts +129 -0
- package/lightbox/index.jsx +284 -0
- package/lightbox/inline/index.d.ts +18 -0
- package/lightbox/inline/index.jsx +15 -0
- package/lightbox/pdf/index.d.ts +18 -0
- package/lightbox/pdf/index.jsx +31 -0
- package/lightbox/share/index.d.ts +29 -0
- package/lightbox/share/index.jsx +43 -0
- package/lightbox/slideshow/index.d.ts +24 -0
- package/lightbox/slideshow/index.jsx +118 -0
- package/lightbox/state.d.ts +334 -0
- package/lightbox/state.js +192 -0
- package/lightbox/thumbnails/index.d.ts +54 -0
- package/lightbox/thumbnails/index.jsx +96 -0
- package/lightbox/video/index.d.ts +13 -0
- package/lightbox/video/index.jsx +42 -0
- package/lightbox/zoom/index.d.ts +67 -0
- package/lightbox/zoom/index.jsx +456 -0
- package/link/behaviour.d.ts +41 -0
- package/link/behaviour.js +58 -0
- package/link/index.d.ts +30 -0
- package/link/index.jsx +179 -0
- package/link/router.d.ts +1 -0
- package/link/router.js +5 -0
- package/listbox/behaviour.d.ts +175 -0
- package/listbox/behaviour.jsx +515 -0
- package/listbox/index.d.ts +129 -0
- package/listbox/index.jsx +632 -0
- package/markdown/index.d.ts +82 -0
- package/markdown/index.jsx +654 -0
- package/masonry/behaviour.d.ts +121 -0
- package/masonry/behaviour.js +676 -0
- package/masonry/flip.d.ts +27 -0
- package/masonry/flip.js +61 -0
- package/masonry/geometry.d.ts +44 -0
- package/masonry/geometry.js +184 -0
- package/masonry/index.d.ts +153 -0
- package/masonry/index.jsx +833 -0
- package/masonry/justified.d.ts +49 -0
- package/masonry/justified.js +250 -0
- package/masonry/layout.d.ts +200 -0
- package/masonry/layout.js +668 -0
- package/masonry/masonry-layout.d.ts +57 -0
- package/masonry/masonry-layout.js +159 -0
- package/masonry/masonry.css +29 -0
- package/menu/behaviour.d.ts +205 -0
- package/menu/behaviour.jsx +847 -0
- package/menu/index.d.ts +171 -0
- package/menu/index.jsx +702 -0
- package/menu/intl.d.ts +2 -0
- package/menu/intl.js +36 -0
- package/menu/safely-mouse-to-submenu.d.ts +12 -0
- package/menu/safely-mouse-to-submenu.js +128 -0
- package/meter/behaviour.d.ts +18 -0
- package/meter/behaviour.jsx +17 -0
- package/meter/index.d.ts +30 -0
- package/meter/index.jsx +85 -0
- package/modal/index.d.ts +79 -0
- package/modal/index.jsx +359 -0
- package/modal/provider.d.ts +47 -0
- package/modal/provider.jsx +105 -0
- package/morph/index.d.ts +91 -0
- package/morph/index.jsx +372 -0
- package/morph/item.d.ts +89 -0
- package/morph/item.jsx +546 -0
- package/motion/Animations.d.ts +17 -0
- package/motion/Animations.js +56 -0
- package/motion/DragRelease.d.ts +22 -0
- package/motion/DragRelease.js +26 -0
- package/motion/DragTracker.d.ts +7 -0
- package/motion/DragTracker.js +43 -0
- package/motion/Limit.d.ts +12 -0
- package/motion/Limit.js +37 -0
- package/motion/Motion1D.d.ts +38 -0
- package/motion/Motion1D.js +72 -0
- package/motion/ScrollBody.d.ts +13 -0
- package/motion/ScrollBody.js +75 -0
- package/motion/Vector1d.d.ts +8 -0
- package/motion/Vector1d.js +29 -0
- package/motion/index.d.ts +8 -0
- package/motion/index.js +12 -0
- package/motion/utils.d.ts +5 -0
- package/motion/utils.js +23 -0
- package/native-select/index.d.ts +46 -0
- package/native-select/index.jsx +99 -0
- package/navigation-tree/index.d.ts +43 -0
- package/navigation-tree/index.jsx +110 -0
- package/number/NumberFormatter.d.ts +28 -0
- package/number/NumberFormatter.js +144 -0
- package/number/NumberParser.d.ts +27 -0
- package/number/NumberParser.js +316 -0
- package/number/index.d.ts +5 -0
- package/number/index.jsx +17 -0
- package/number/number-field-state.d.ts +132 -0
- package/number/number-field-state.jsx +364 -0
- package/number-field/behaviour.d.ts +165 -0
- package/number-field/behaviour.jsx +512 -0
- package/number-field/index.d.ts +52 -0
- package/number-field/index.jsx +207 -0
- package/number-field/intl.d.ts +2 -0
- package/number-field/intl.js +36 -0
- package/observers/index.d.ts +70 -0
- package/observers/index.js +279 -0
- package/overflow/index.d.ts +93 -0
- package/overflow/index.jsx +267 -0
- package/overlay/aria-hide-outside.d.ts +12 -0
- package/overlay/aria-hide-outside.js +141 -0
- package/overlay/close-on-scroll.d.ts +1 -0
- package/overlay/close-on-scroll.js +6 -0
- package/overlay/contexts.d.ts +34 -0
- package/overlay/contexts.js +21 -0
- package/overlay/dismiss-button.d.ts +10 -0
- package/overlay/dismiss-button.jsx +18 -0
- package/overlay/hover-trigger.d.ts +54 -0
- package/overlay/hover-trigger.jsx +221 -0
- package/overlay/index.d.ts +40 -0
- package/overlay/index.js +139 -0
- package/overlay/modal-overlay.d.ts +16 -0
- package/overlay/modal-overlay.js +38 -0
- package/overlay/overlay-strings.d.ts +4 -0
- package/overlay/overlay-strings.js +52 -0
- package/overlay/overlay-trigger-state.d.ts +1 -0
- package/overlay/overlay-trigger-state.js +3 -0
- package/overlay/overlay-trigger.d.ts +27 -0
- package/overlay/overlay-trigger.jsx +50 -0
- package/overlay/position.d.ts +160 -0
- package/overlay/position.js +559 -0
- package/overlay/prevent-scroll-ios.d.ts +17 -0
- package/overlay/prevent-scroll-ios.js +331 -0
- package/overlay/prevent-scroll.d.ts +18 -0
- package/overlay/prevent-scroll.js +122 -0
- package/overlay/safe-area.d.ts +28 -0
- package/overlay/safe-area.js +108 -0
- package/overlay-arrow/index.d.ts +23 -0
- package/overlay-arrow/index.jsx +59 -0
- package/overlay-service/connected-position.d.ts +163 -0
- package/overlay-service/connected-position.js +661 -0
- package/overlay-service/global-position.d.ts +34 -0
- package/overlay-service/global-position.js +154 -0
- package/overlay-service/index.d.ts +15 -0
- package/overlay-service/index.js +27 -0
- package/overlay-service/overlay-container.d.ts +27 -0
- package/overlay-service/overlay-container.js +93 -0
- package/overlay-service/overlay-dispatchers.d.ts +44 -0
- package/overlay-service/overlay-dispatchers.js +149 -0
- package/overlay-service/overlay-position-builder.d.ts +8 -0
- package/overlay-service/overlay-position-builder.js +15 -0
- package/overlay-service/overlay-ref.d.ts +155 -0
- package/overlay-service/overlay-ref.js +436 -0
- package/overlay-service/overlay-strategy.d.ts +48 -0
- package/overlay-service/overlay-strategy.js +3 -0
- package/overlay-service/overlay-viewport.d.ts +85 -0
- package/overlay-service/overlay-viewport.js +192 -0
- package/overlay-service/overlay.css +94 -0
- package/overlay-service/scroll-strategies.d.ts +71 -0
- package/overlay-service/scroll-strategies.js +185 -0
- package/package.json +754 -4
- package/platform/index.d.ts +100 -0
- package/platform/index.js +304 -0
- package/popover/behaviour.d.ts +23 -0
- package/popover/behaviour.js +39 -0
- package/popover/index.d.ts +60 -0
- package/popover/index.jsx +285 -0
- package/popover/popover-overlay.d.ts +27 -0
- package/popover/popover-overlay.jsx +60 -0
- package/popover/use-popover.d.ts +57 -0
- package/popover/use-popover.js +92 -0
- package/portal/index.d.ts +55 -0
- package/portal/index.jsx +83 -0
- package/portal/portal-mount.d.ts +8 -0
- package/portal/portal-mount.js +7 -0
- package/portal/portal-outlet.d.ts +88 -0
- package/portal/portal-outlet.js +222 -0
- package/preview-trigger/behaviour.d.ts +70 -0
- package/preview-trigger/behaviour.jsx +258 -0
- package/preview-trigger/index.d.ts +12 -0
- package/preview-trigger/index.jsx +82 -0
- package/progress-bar/behaviour.d.ts +77 -0
- package/progress-bar/behaviour.jsx +75 -0
- package/progress-bar/context.d.ts +4 -0
- package/progress-bar/context.js +7 -0
- package/progress-bar/index.d.ts +38 -0
- package/progress-bar/index.jsx +90 -0
- package/radio-group/behaviour.d.ts +11 -0
- package/radio-group/behaviour.js +85 -0
- package/radio-group/index.d.ts +82 -0
- package/radio-group/index.jsx +142 -0
- package/radio-group/parts.d.ts +223 -0
- package/radio-group/parts.jsx +425 -0
- package/range-calendar/behaviour.d.ts +2 -0
- package/range-calendar/behaviour.jsx +5 -0
- package/range-calendar/index.d.ts +2 -0
- package/range-calendar/index.jsx +4 -0
- package/resizable/engine/components/group/auto-save/getStorageKey.d.ts +1 -0
- package/resizable/engine/components/group/auto-save/getStorageKey.js +5 -0
- package/resizable/engine/components/group/compareDocumentPosition.d.ts +5 -0
- package/resizable/engine/components/group/compareDocumentPosition.js +19 -0
- package/resizable/engine/components/group/readLegacyLayout.d.ts +16 -0
- package/resizable/engine/components/group/readLegacyLayout.js +48 -0
- package/resizable/engine/components/group/sortByElementOffset.d.ts +4 -0
- package/resizable/engine/components/group/sortByElementOffset.js +28 -0
- package/resizable/engine/components/group/types.d.ts +50 -0
- package/resizable/engine/components/group/types.js +1 -0
- package/resizable/engine/components/panel/types.d.ts +90 -0
- package/resizable/engine/components/panel/types.js +4 -0
- package/resizable/engine/constants.d.ts +15 -0
- package/resizable/engine/constants.js +27 -0
- package/resizable/engine/global/cursor/getCursorStyle.d.ts +7 -0
- package/resizable/engine/global/cursor/getCursorStyle.js +94 -0
- package/resizable/engine/global/cursor/supportsAdvancedCursorStyles.d.ts +5 -0
- package/resizable/engine/global/cursor/supportsAdvancedCursorStyles.js +20 -0
- package/resizable/engine/global/cursor/updateCursorStyle.d.ts +1 -0
- package/resizable/engine/global/cursor/updateCursorStyle.js +64 -0
- package/resizable/engine/global/dom/calculateAvailableAxisSize.d.ts +4 -0
- package/resizable/engine/global/dom/calculateAvailableAxisSize.js +10 -0
- package/resizable/engine/global/dom/calculateHitRegions.d.ts +13 -0
- package/resizable/engine/global/dom/calculateHitRegions.js +153 -0
- package/resizable/engine/global/dom/calculateItemConstraints.d.ts +2 -0
- package/resizable/engine/global/dom/calculateItemConstraints.js +82 -0
- package/resizable/engine/global/event-handlers/onDocumentContextMenu.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentContextMenu.js +9 -0
- package/resizable/engine/global/event-handlers/onDocumentDoubleClick.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentDoubleClick.js +28 -0
- package/resizable/engine/global/event-handlers/onDocumentKeyDown.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentKeyDown.js +97 -0
- package/resizable/engine/global/event-handlers/onDocumentLostPointerCapture.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentLostPointerCapture.js +18 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerCancel.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerCancel.js +8 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerDown.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerDown.js +54 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerLeave.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerLeave.js +22 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerMove.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerMove.js +69 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerOut.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerOut.js +20 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerUp.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerUp.js +15 -0
- package/resizable/engine/global/event-handlers/onWindowBlur.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onWindowBlur.js +11 -0
- package/resizable/engine/global/mountAxis.d.ts +2 -0
- package/resizable/engine/global/mountAxis.js +187 -0
- package/resizable/engine/global/mutable-state/axes.d.ts +37 -0
- package/resizable/engine/global/mutable-state/axes.js +52 -0
- package/resizable/engine/global/mutable-state/interactions.d.ts +17 -0
- package/resizable/engine/global/mutable-state/interactions.js +92 -0
- package/resizable/engine/global/mutable-state/types.d.ts +32 -0
- package/resizable/engine/global/mutable-state/types.js +1 -0
- package/resizable/engine/global/styles/convertEmToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertEmToPixels.js +7 -0
- package/resizable/engine/global/styles/convertRemToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertRemToPixels.js +7 -0
- package/resizable/engine/global/styles/convertVhToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertVhToPixels.js +5 -0
- package/resizable/engine/global/styles/convertVwToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertVwToPixels.js +5 -0
- package/resizable/engine/global/styles/parseSizeAndUnit.d.ts +2 -0
- package/resizable/engine/global/styles/parseSizeAndUnit.js +29 -0
- package/resizable/engine/global/styles/sizeStyleToPixels.d.ts +5 -0
- package/resizable/engine/global/styles/sizeStyleToPixels.js +38 -0
- package/resizable/engine/global/types.d.ts +120 -0
- package/resizable/engine/global/types.js +1 -0
- package/resizable/engine/global/utils/abortActivePointerResize.d.ts +9 -0
- package/resizable/engine/global/utils/abortActivePointerResize.js +52 -0
- package/resizable/engine/global/utils/adjustLayoutByDelta.d.ts +9 -0
- package/resizable/engine/global/utils/adjustLayoutByDelta.js +219 -0
- package/resizable/engine/global/utils/adjustLayoutForSeparator.d.ts +1 -0
- package/resizable/engine/global/utils/adjustLayoutForSeparator.js +48 -0
- package/resizable/engine/global/utils/calculateDefaultLayout.d.ts +2 -0
- package/resizable/engine/global/utils/calculateDefaultLayout.js +30 -0
- package/resizable/engine/global/utils/calculateResizePreviews.d.ts +3 -0
- package/resizable/engine/global/utils/calculateResizePreviews.js +39 -0
- package/resizable/engine/global/utils/calculateSeparatorAriaValues.d.ts +12 -0
- package/resizable/engine/global/utils/calculateSeparatorAriaValues.js +43 -0
- package/resizable/engine/global/utils/compareLayoutNumbers.d.ts +1 -0
- package/resizable/engine/global/utils/compareLayoutNumbers.js +11 -0
- package/resizable/engine/global/utils/completeActivePointerResize.d.ts +6 -0
- package/resizable/engine/global/utils/completeActivePointerResize.js +49 -0
- package/resizable/engine/global/utils/doRectsIntersect.d.ts +2 -0
- package/resizable/engine/global/utils/doRectsIntersect.js +3 -0
- package/resizable/engine/global/utils/expandHitTarget.d.ts +10 -0
- package/resizable/engine/global/utils/expandHitTarget.js +19 -0
- package/resizable/engine/global/utils/findClosestHitRegion.d.ts +9 -0
- package/resizable/engine/global/utils/findClosestHitRegion.js +35 -0
- package/resizable/engine/global/utils/findClosestRect.d.ts +6 -0
- package/resizable/engine/global/utils/findClosestRect.js +22 -0
- package/resizable/engine/global/utils/findMatchingHitRegions.d.ts +7 -0
- package/resizable/engine/global/utils/findMatchingHitRegions.js +29 -0
- package/resizable/engine/global/utils/findSeparatorAxis.d.ts +21 -0
- package/resizable/engine/global/utils/findSeparatorAxis.js +12 -0
- package/resizable/engine/global/utils/formatLayoutNumber.d.ts +1 -0
- package/resizable/engine/global/utils/formatLayoutNumber.js +5 -0
- package/resizable/engine/global/utils/getDefaultLayout.d.ts +5 -0
- package/resizable/engine/global/utils/getDefaultLayout.js +11 -0
- package/resizable/engine/global/utils/getDistanceBetweenPointAndRect.d.ts +5 -0
- package/resizable/engine/global/utils/getDistanceBetweenPointAndRect.js +6 -0
- package/resizable/engine/global/utils/getImperativeAxisMethods.d.ts +4 -0
- package/resizable/engine/global/utils/getImperativeAxisMethods.js +53 -0
- package/resizable/engine/global/utils/getImperativeItemMethods.d.ts +5 -0
- package/resizable/engine/global/utils/getImperativeItemMethods.js +169 -0
- package/resizable/engine/global/utils/isCoarsePointer.d.ts +4 -0
- package/resizable/engine/global/utils/isCoarsePointer.js +17 -0
- package/resizable/engine/global/utils/isModal.d.ts +1 -0
- package/resizable/engine/global/utils/isModal.js +11 -0
- package/resizable/engine/global/utils/isViableHitTarget.d.ts +5 -0
- package/resizable/engine/global/utils/isViableHitTarget.js +50 -0
- package/resizable/engine/global/utils/itemConstraintsEqual.d.ts +2 -0
- package/resizable/engine/global/utils/itemConstraintsEqual.js +9 -0
- package/resizable/engine/global/utils/layoutNumbersEqual.d.ts +1 -0
- package/resizable/engine/global/utils/layoutNumbersEqual.js +6 -0
- package/resizable/engine/global/utils/layoutsEqual.d.ts +2 -0
- package/resizable/engine/global/utils/layoutsEqual.js +15 -0
- package/resizable/engine/global/utils/normalizeLayout.d.ts +11 -0
- package/resizable/engine/global/utils/normalizeLayout.js +21 -0
- package/resizable/engine/global/utils/notifyItemOnResize.d.ts +2 -0
- package/resizable/engine/global/utils/notifyItemOnResize.js +23 -0
- package/resizable/engine/global/utils/objectsEqual.d.ts +1 -0
- package/resizable/engine/global/utils/objectsEqual.js +14 -0
- package/resizable/engine/global/utils/preserveFixedItemSizes.d.ts +7 -0
- package/resizable/engine/global/utils/preserveFixedItemSizes.js +53 -0
- package/resizable/engine/global/utils/recordAxisLayoutChange.d.ts +15 -0
- package/resizable/engine/global/utils/recordAxisLayoutChange.js +25 -0
- package/resizable/engine/global/utils/updateActiveHitRegion.d.ts +18 -0
- package/resizable/engine/global/utils/updateActiveHitRegion.js +119 -0
- package/resizable/engine/global/utils/validateAxisLayout.d.ts +5 -0
- package/resizable/engine/global/utils/validateAxisLayout.js +70 -0
- package/resizable/engine/global/utils/validateItemSize.d.ts +7 -0
- package/resizable/engine/global/utils/validateItemSize.js +31 -0
- package/resizable/engine/global/utils/validateLayoutKeys.d.ts +2 -0
- package/resizable/engine/global/utils/validateLayoutKeys.js +13 -0
- package/resizable/engine/types.d.ts +13 -0
- package/resizable/engine/types.js +1 -0
- package/resizable/engine/utils/EventEmitter.d.ts +11 -0
- package/resizable/engine/utils/EventEmitter.js +60 -0
- package/resizable/engine/utils/assert.d.ts +1 -0
- package/resizable/engine/utils/assert.js +7 -0
- package/resizable/engine/utils/isArrayEqual.d.ts +1 -0
- package/resizable/engine/utils/isArrayEqual.js +15 -0
- package/resizable/engine/utils/isHTMLElement.d.ts +1 -0
- package/resizable/engine/utils/isHTMLElement.js +6 -0
- package/resizable/engine/utils/isShadowRoot.d.ts +1 -0
- package/resizable/engine/utils/isShadowRoot.js +6 -0
- package/resizable/engine/vendor/stacking-order.d.ts +7 -0
- package/resizable/engine/vendor/stacking-order.js +122 -0
- package/resizable/index.d.ts +263 -0
- package/resizable/index.jsx +537 -0
- package/resizable/mount.d.ts +115 -0
- package/resizable/mount.js +540 -0
- package/scheduler/behaviour.d.ts +71 -0
- package/scheduler/behaviour.js +243 -0
- package/scheduler/context.d.ts +100 -0
- package/scheduler/context.jsx +7 -0
- package/scheduler/dates.d.ts +53 -0
- package/scheduler/dates.js +183 -0
- package/scheduler/drag.d.ts +20 -0
- package/scheduler/drag.js +361 -0
- package/scheduler/event.d.ts +26 -0
- package/scheduler/event.jsx +93 -0
- package/scheduler/index.d.ts +57 -0
- package/scheduler/index.jsx +303 -0
- package/scheduler/intl.d.ts +16 -0
- package/scheduler/intl.js +529 -0
- package/scheduler/keys-month.d.ts +7 -0
- package/scheduler/keys-month.js +110 -0
- package/scheduler/keys-time-grid.d.ts +9 -0
- package/scheduler/keys-time-grid.js +115 -0
- package/scheduler/keys.d.ts +103 -0
- package/scheduler/keys.js +527 -0
- package/scheduler/layout-index.d.ts +3 -0
- package/scheduler/layout-index.js +6 -0
- package/scheduler/layout.d.ts +285 -0
- package/scheduler/layout.js +378 -0
- package/scheduler/menus.d.ts +66 -0
- package/scheduler/menus.jsx +88 -0
- package/scheduler/month.d.ts +26 -0
- package/scheduler/month.jsx +215 -0
- package/scheduler/pointer.d.ts +64 -0
- package/scheduler/pointer.js +203 -0
- package/scheduler/select.d.ts +11 -0
- package/scheduler/select.js +64 -0
- package/scheduler/selection.d.ts +34 -0
- package/scheduler/selection.js +39 -0
- package/scheduler/state.d.ts +296 -0
- package/scheduler/state.js +496 -0
- package/scheduler/time-grid-client.d.ts +32 -0
- package/scheduler/time-grid-client.jsx +133 -0
- package/scheduler/time-grid.d.ts +26 -0
- package/scheduler/time-grid.jsx +266 -0
- package/scheduler/time.d.ts +35 -0
- package/scheduler/time.js +56 -0
- package/scheduler/toolbar.d.ts +43 -0
- package/scheduler/toolbar.jsx +38 -0
- package/scroll-area/dom.d.ts +11 -0
- package/scroll-area/dom.js +55 -0
- package/scroll-area/index.d.ts +96 -0
- package/scroll-area/index.jsx +884 -0
- package/scroll-area/presence.d.ts +12 -0
- package/scroll-area/presence.jsx +131 -0
- package/scrolling/auto-size-virtual-scroll.d.ts +53 -0
- package/scrolling/auto-size-virtual-scroll.js +213 -0
- package/scrolling/behaviour.d.ts +3 -0
- package/scrolling/behaviour.js +5 -0
- package/scrolling/emitter.d.ts +34 -0
- package/scrolling/emitter.js +144 -0
- package/scrolling/fixed-size-virtual-scroll.d.ts +28 -0
- package/scrolling/fixed-size-virtual-scroll.js +107 -0
- package/scrolling/index.d.ts +11 -0
- package/scrolling/index.jsx +13 -0
- package/scrolling/rtl.d.ts +16 -0
- package/scrolling/rtl.js +64 -0
- package/scrolling/scroll-dispatcher.d.ts +49 -0
- package/scrolling/scroll-dispatcher.js +107 -0
- package/scrolling/scrollable.d.ts +75 -0
- package/scrolling/scrollable.js +149 -0
- package/scrolling/scrolling.css +11 -0
- package/scrolling/state.d.ts +92 -0
- package/scrolling/state.js +94 -0
- package/scrolling/viewport-ruler.d.ts +47 -0
- package/scrolling/viewport-ruler.js +100 -0
- package/scrolling/viewport.d.ts +54 -0
- package/scrolling/viewport.jsx +105 -0
- package/scrolling/virtual-scroll-strategy.d.ts +41 -0
- package/scrolling/virtual-scroll-strategy.js +2 -0
- package/scrolling/virtual-scroll-viewport.d.ts +95 -0
- package/scrolling/virtual-scroll-viewport.js +370 -0
- package/search-field/behaviour.d.ts +62 -0
- package/search-field/behaviour.jsx +116 -0
- package/search-field/index.d.ts +57 -0
- package/search-field/index.jsx +158 -0
- package/search-field/intl.d.ts +2 -0
- package/search-field/intl.js +36 -0
- package/select/behaviour.d.ts +188 -0
- package/select/behaviour.jsx +445 -0
- package/select/hidden-select.d.ts +44 -0
- package/select/hidden-select.jsx +68 -0
- package/select/index.d.ts +123 -0
- package/select/index.jsx +255 -0
- package/select/intl.d.ts +2 -0
- package/select/intl.js +36 -0
- package/select/parts.d.ts +11 -0
- package/select/parts.jsx +12 -0
- package/select/select-parts.d.ts +73 -0
- package/select/select-parts.jsx +293 -0
- package/select/select-value.d.ts +58 -0
- package/select/select-value.jsx +142 -0
- package/selection/dom-utils.d.ts +25 -0
- package/selection/dom-utils.js +77 -0
- package/selection/keyed.d.ts +19 -0
- package/selection/keyed.js +66 -0
- package/selection/list-keyboard-delegate.d.ts +67 -0
- package/selection/list-keyboard-delegate.js +274 -0
- package/selection/manager.d.ts +112 -0
- package/selection/manager.js +340 -0
- package/selection/selectable-collection.d.ts +123 -0
- package/selection/selectable-collection.js +560 -0
- package/selection/selectable-item.d.ts +128 -0
- package/selection/selectable-item.js +486 -0
- package/selection/selectable-list.d.ts +42 -0
- package/selection/selectable-list.js +34 -0
- package/selection/state.d.ts +96 -0
- package/selection/state.js +131 -0
- package/selection/type-select.d.ts +37 -0
- package/selection/type-select.js +114 -0
- package/selection/utils.d.ts +23 -0
- package/selection/utils.js +38 -0
- package/selection-indicator/context.d.ts +10 -0
- package/selection-indicator/context.js +7 -0
- package/selection-indicator/index.d.ts +20 -0
- package/selection-indicator/index.jsx +25 -0
- package/separator/behaviour.d.ts +17 -0
- package/separator/behaviour.js +17 -0
- package/separator/index.d.ts +23 -0
- package/separator/index.jsx +64 -0
- package/shared-element-transition/index.d.ts +36 -0
- package/shared-element-transition/index.jsx +182 -0
- package/shared-element-transition/transition.d.ts +19 -0
- package/shared-element-transition/transition.jsx +20 -0
- package/sheet-motion/index.d.ts +82 -0
- package/sheet-motion/index.js +386 -0
- package/sidebar/index.d.ts +257 -0
- package/sidebar/index.jsx +625 -0
- package/sidebar/pages.d.ts +71 -0
- package/sidebar/pages.jsx +177 -0
- package/sidebar/resize.d.ts +69 -0
- package/sidebar/resize.js +237 -0
- package/sidebar/sheet-motion.d.ts +15 -0
- package/sidebar/sheet-motion.js +170 -0
- package/sidebar/state.d.ts +126 -0
- package/sidebar/state.js +204 -0
- package/slider/behaviour.d.ts +141 -0
- package/slider/behaviour.jsx +492 -0
- package/slider/index.d.ts +171 -0
- package/slider/index.jsx +392 -0
- package/slider/state.d.ts +203 -0
- package/slider/state.js +377 -0
- package/slots/index.d.ts +248 -0
- package/slots/index.jsx +473 -0
- package/spinbutton/behaviour.d.ts +66 -0
- package/spinbutton/behaviour.jsx +312 -0
- package/spinbutton/intl.d.ts +2 -0
- package/spinbutton/intl.js +36 -0
- package/state/autocomplete.d.ts +26 -0
- package/state/autocomplete.js +32 -0
- package/state/calendar.d.ts +284 -0
- package/state/calendar.js +755 -0
- package/state/checkbox-group.d.ts +67 -0
- package/state/checkbox-group.js +76 -0
- package/state/combobox.d.ts +238 -0
- package/state/combobox.js +708 -0
- package/state/date-field.d.ts +407 -0
- package/state/date-field.js +1117 -0
- package/state/date-intl.d.ts +3 -0
- package/state/date-intl.js +36 -0
- package/state/date-picker.d.ts +144 -0
- package/state/date-picker.js +387 -0
- package/state/disclosure.d.ts +90 -0
- package/state/disclosure.js +148 -0
- package/state/form-validation.d.ts +89 -0
- package/state/form-validation.js +158 -0
- package/state/grid.d.ts +62 -0
- package/state/grid.js +127 -0
- package/state/list.d.ts +58 -0
- package/state/list.js +124 -0
- package/state/menu.d.ts +162 -0
- package/state/menu.js +185 -0
- package/state/overlays.d.ts +35 -0
- package/state/overlays.js +29 -0
- package/state/radio-group.d.ts +58 -0
- package/state/radio-group.js +68 -0
- package/state/search-field.d.ts +20 -0
- package/state/search-field.js +21 -0
- package/state/select.d.ts +150 -0
- package/state/select.js +187 -0
- package/state/selection.d.ts +3 -0
- package/state/selection.js +5 -0
- package/state/table-column-resize.d.ts +58 -0
- package/state/table-column-resize.js +76 -0
- package/state/table.d.ts +81 -0
- package/state/table.js +114 -0
- package/state/tabs.d.ts +85 -0
- package/state/tabs.js +161 -0
- package/state/time-field.d.ts +32 -0
- package/state/time-field.js +34 -0
- package/state/toast.d.ts +80 -0
- package/state/toast.js +146 -0
- package/state/toggle-group.d.ts +70 -0
- package/state/toggle-group.js +110 -0
- package/state/toggle.d.ts +40 -0
- package/state/toggle.js +39 -0
- package/state/tooltip.d.ts +53 -0
- package/state/tooltip.js +153 -0
- package/stepper/index.d.ts +117 -0
- package/stepper/index.jsx +405 -0
- package/stepper/state.d.ts +200 -0
- package/stepper/state.js +325 -0
- package/switch/behaviour.d.ts +12 -0
- package/switch/behaviour.jsx +9 -0
- package/switch/index.d.ts +150 -0
- package/switch/index.jsx +186 -0
- package/table/behaviour.d.ts +181 -0
- package/table/behaviour.js +334 -0
- package/table/collection.d.ts +49 -0
- package/table/collection.js +259 -0
- package/table/column-resize.d.ts +48 -0
- package/table/column-resize.jsx +247 -0
- package/table/index.d.ts +339 -0
- package/table/index.jsx +1326 -0
- package/table/intl.d.ts +2 -0
- package/table/intl.js +36 -0
- package/table/keyboard-delegate.d.ts +21 -0
- package/table/keyboard-delegate.js +166 -0
- package/table/rac-intl.d.ts +2 -0
- package/table/rac-intl.js +36 -0
- package/tabs/behaviour.d.ts +49 -0
- package/tabs/behaviour.js +173 -0
- package/tabs/index.d.ts +248 -0
- package/tabs/index.jsx +577 -0
- package/tabs/keyboard-delegate.d.ts +17 -0
- package/tabs/keyboard-delegate.js +64 -0
- package/tag-group/behaviour.d.ts +59 -0
- package/tag-group/behaviour.js +112 -0
- package/tag-group/index.d.ts +138 -0
- package/tag-group/index.jsx +565 -0
- package/tag-group/intl.d.ts +2 -0
- package/tag-group/intl.js +36 -0
- package/tailwind.css +12 -0
- package/tests-components/app/src/routes/index.d.ts +4 -0
- package/tests-components/app/src/routes/index.jsx +7 -0
- package/text/index.d.ts +15 -0
- package/text/index.jsx +61 -0
- package/text-area/index.d.ts +19 -0
- package/text-area/index.jsx +76 -0
- package/text-field/autosize.d.ts +70 -0
- package/text-field/autosize.js +355 -0
- package/text-field/behaviour.d.ts +140 -0
- package/text-field/behaviour.jsx +260 -0
- package/text-field/fields.d.ts +12 -0
- package/text-field/fields.js +20 -0
- package/text-field/index.d.ts +50 -0
- package/text-field/index.jsx +174 -0
- package/text-field/text-field.css +45 -0
- package/theme.css +1006 -0
- package/time-wheels/behaviour.d.ts +29 -0
- package/time-wheels/behaviour.js +156 -0
- package/time-wheels/index.d.ts +27 -0
- package/time-wheels/index.jsx +91 -0
- package/toast/behaviour.d.ts +51 -0
- package/toast/behaviour.jsx +273 -0
- package/toast/index.d.ts +94 -0
- package/toast/index.jsx +256 -0
- package/toast/intl.d.ts +2 -0
- package/toast/intl.js +36 -0
- package/toggle-button/behaviour.d.ts +15 -0
- package/toggle-button/behaviour.js +37 -0
- package/toggle-button/index.d.ts +59 -0
- package/toggle-button/index.jsx +206 -0
- package/toggle-button-group/behaviour.d.ts +19 -0
- package/toggle-button-group/behaviour.jsx +13 -0
- package/toggle-button-group/context.d.ts +7 -0
- package/toggle-button-group/context.js +9 -0
- package/toggle-button-group/index.d.ts +39 -0
- package/toggle-button-group/index.jsx +85 -0
- package/toggle-button-group/item.d.ts +30 -0
- package/toggle-button-group/item.jsx +37 -0
- package/toolbar/behaviour.d.ts +22 -0
- package/toolbar/behaviour.js +89 -0
- package/toolbar/index.d.ts +16 -0
- package/toolbar/index.jsx +67 -0
- package/tooltip/behaviour.d.ts +93 -0
- package/tooltip/behaviour.jsx +299 -0
- package/tooltip/index.d.ts +59 -0
- package/tooltip/index.jsx +193 -0
- package/tree/behaviour.d.ts +51 -0
- package/tree/behaviour.jsx +51 -0
- package/tree/cdk-index.d.ts +2 -0
- package/tree/cdk-index.js +6 -0
- package/tree/collection.d.ts +16 -0
- package/tree/collection.js +138 -0
- package/tree/control.d.ts +125 -0
- package/tree/control.js +166 -0
- package/tree/index.d.ts +154 -0
- package/tree/index.jsx +837 -0
- package/tree/intl.d.ts +2 -0
- package/tree/intl.js +36 -0
- package/tree/navigation-context.d.ts +44 -0
- package/tree/navigation-context.jsx +63 -0
- package/tree/tree-key-manager.d.ts +149 -0
- package/tree/tree-key-manager.js +336 -0
- package/utils/animation.d.ts +32 -0
- package/utils/animation.jsx +236 -0
- package/utils/data-attrs.d.ts +73 -0
- package/utils/data-attrs.jsx +217 -0
- package/utils/dev-off.d.ts +3 -0
- package/utils/dev-off.js +7 -0
- package/utils/dev-on.d.ts +3 -0
- package/utils/dev-on.js +17 -0
- package/utils/dom-props.d.ts +44 -0
- package/utils/dom-props.js +73 -0
- package/utils/dom.d.ts +85 -0
- package/utils/dom.js +402 -0
- package/utils/id.d.ts +23 -0
- package/utils/id.js +100 -0
- package/utils/index.d.ts +43 -0
- package/utils/index.js +160 -0
- package/utils/link-state.d.ts +6 -0
- package/utils/link-state.js +6 -0
- package/utils/links.d.ts +82 -0
- package/utils/links.jsx +150 -0
- package/utils/live-element.d.ts +8 -0
- package/utils/live-element.jsx +76 -0
- package/utils/live.d.ts +53 -0
- package/utils/live.jsx +169 -0
- package/utils/load-more-sentinel.d.ts +28 -0
- package/utils/load-more-sentinel.jsx +52 -0
- package/utils/motion-token.d.ts +4 -0
- package/utils/motion-token.js +48 -0
- package/utils/render.d.ts +19 -0
- package/utils/render.js +18 -0
- package/utils/transitions.d.ts +15 -0
- package/utils/transitions.js +104 -0
- package/utils/types.d.ts +111 -0
- package/utils/types.js +1 -0
- package/virtualizer/behaviour.d.ts +129 -0
- package/virtualizer/behaviour.js +437 -0
- package/virtualizer/collection-renderer.d.ts +62 -0
- package/virtualizer/collection-renderer.jsx +190 -0
- package/virtualizer/collection.d.ts +103 -0
- package/virtualizer/collection.js +155 -0
- package/virtualizer/dom.d.ts +50 -0
- package/virtualizer/dom.js +233 -0
- package/virtualizer/engine.d.ts +21 -0
- package/virtualizer/engine.js +21 -0
- package/virtualizer/grid-layout.d.ts +50 -0
- package/virtualizer/grid-layout.js +247 -0
- package/virtualizer/index.d.ts +3 -0
- package/virtualizer/index.jsx +5 -0
- package/virtualizer/layout-info.d.ts +33 -0
- package/virtualizer/layout-info.js +54 -0
- package/virtualizer/layout.d.ts +44 -0
- package/virtualizer/layout.js +30 -0
- package/virtualizer/list-layout.d.ts +103 -0
- package/virtualizer/list-layout.js +510 -0
- package/virtualizer/overscan-manager.d.ts +9 -0
- package/virtualizer/overscan-manager.js +32 -0
- package/virtualizer/point.d.ts +13 -0
- package/virtualizer/point.js +23 -0
- package/virtualizer/rect.d.ts +49 -0
- package/virtualizer/rect.js +105 -0
- package/virtualizer/reusable-view.d.ts +29 -0
- package/virtualizer/reusable-view.js +56 -0
- package/virtualizer/scroll-anchor.d.ts +62 -0
- package/virtualizer/scroll-anchor.js +130 -0
- package/virtualizer/size.d.ts +11 -0
- package/virtualizer/size.js +21 -0
- package/virtualizer/state.d.ts +35 -0
- package/virtualizer/state.js +89 -0
- package/virtualizer/table-collection.d.ts +45 -0
- package/virtualizer/table-collection.js +80 -0
- package/virtualizer/table-column-layout.d.ts +44 -0
- package/virtualizer/table-column-layout.js +210 -0
- package/virtualizer/table-layout.d.ts +55 -0
- package/virtualizer/table-layout.js +482 -0
- package/virtualizer/types.d.ts +63 -0
- package/virtualizer/types.js +1 -0
- package/virtualizer/utils.d.ts +2 -0
- package/virtualizer/utils.js +12 -0
- package/virtualizer/virtualizer-core.d.ts +61 -0
- package/virtualizer/virtualizer-core.js +304 -0
- package/virtualizer/virtualizer.d.ts +64 -0
- package/virtualizer/virtualizer.jsx +91 -0
- package/virtualizer/waterfall-layout.d.ts +41 -0
- package/virtualizer/waterfall-layout.js +227 -0
- package/wheel-picker/behaviour.d.ts +94 -0
- package/wheel-picker/behaviour.js +482 -0
- package/wheel-picker/index.d.ts +33 -0
- package/wheel-picker/index.jsx +66 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// Live props (P5, docs/design/specs/2026-10-07-live-props-design.md §8): the live path of the plain text parts (Label,
|
|
2
|
+
// Text, Header, Heading). Their static path destructures `class` / `style` / `children` into compiled templates;
|
|
3
|
+
// with a live prop (own getter) this path renders one `Dynamic` element whose `class` / `style` / children read the
|
|
4
|
+
// props inside bindings, and forwards every other prop through the spread unread.
|
|
5
|
+
import { untrack } from "@rivetjs/reactivity";
|
|
6
|
+
import { Dynamic } from "@rivetjs/runtime/dom";
|
|
7
|
+
import { renderSlot } from "@rivetjs/runtime/slot";
|
|
8
|
+
import { liveOmit } from "./live.jsx";
|
|
9
|
+
import { liveRenderProps } from "../slots/index.jsx";
|
|
10
|
+
const OWN = ["elementType", "children", "class", "style", "slot", "render", "ref"];
|
|
11
|
+
/** `class` of live props (a returned arrow: resumable). */
|
|
12
|
+
function liveClass(props, defaultClassName) {
|
|
13
|
+
// A function `class` (an accessor, e.g. ui's render-class) is called, as the static path's attribute binding does.
|
|
14
|
+
return () => {
|
|
15
|
+
const className = props.class;
|
|
16
|
+
return (typeof className === "function" ? className() : className) ?? defaultClassName;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/** `style` of live props: a value, or an accessor (a returned arrow: resumable). */
|
|
20
|
+
function liveStyle(props) {
|
|
21
|
+
return () => {
|
|
22
|
+
const style = props.style;
|
|
23
|
+
return (typeof style === "function" ? style() : style);
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The element of a live-props text part: `elementType` (read once), `class` / `style` / children live, the other
|
|
28
|
+
* props forwarded through the spread (`omit`: extra own keys of the part). `style` is a key only when it was set at
|
|
29
|
+
* creation (the server `Dynamic` rejects a `style` attribute name).
|
|
30
|
+
*/
|
|
31
|
+
export function liveElement(props, ref, elementType, defaultClassName, omit = []) {
|
|
32
|
+
const dom = liveOmit(props, [...OWN, ...omit]);
|
|
33
|
+
// Closures capture one narrow view per key, never the whole props object (a children function capturing a class
|
|
34
|
+
// instance must not reach the class / style bindings on a resumed page).
|
|
35
|
+
const [classView, styleView, childrenView] = liveRenderProps(props);
|
|
36
|
+
const hasStyle = untrack(() => props.style) !== undefined;
|
|
37
|
+
const slot = untrack(() => props.slot) ?? undefined;
|
|
38
|
+
const attrs = hasStyle
|
|
39
|
+
? { class: liveClass(classView, defaultClassName), style: liveStyle(styleView) }
|
|
40
|
+
: { class: liveClass(classView, defaultClassName) };
|
|
41
|
+
const r = ref;
|
|
42
|
+
// Compiled templates for the parts' usual elements (a `Dynamic` element costs more on both targets).
|
|
43
|
+
switch (elementType) {
|
|
44
|
+
case "span":
|
|
45
|
+
return (<span {...dom} {...attrs} slot={slot} ref={r}>
|
|
46
|
+
{() => renderSlot(childrenView.children)}
|
|
47
|
+
</span>);
|
|
48
|
+
case "label":
|
|
49
|
+
return (<label {...dom} {...attrs} slot={slot} ref={r}>
|
|
50
|
+
{() => renderSlot(childrenView.children)}
|
|
51
|
+
</label>);
|
|
52
|
+
case "div":
|
|
53
|
+
return (<div {...dom} {...attrs} slot={slot} ref={r}>
|
|
54
|
+
{() => renderSlot(childrenView.children)}
|
|
55
|
+
</div>);
|
|
56
|
+
case "p":
|
|
57
|
+
return (<p {...dom} {...attrs} slot={slot} ref={r}>
|
|
58
|
+
{() => renderSlot(childrenView.children)}
|
|
59
|
+
</p>);
|
|
60
|
+
case "header":
|
|
61
|
+
return (<header {...dom} {...attrs} slot={slot} ref={r}>
|
|
62
|
+
{() => renderSlot(childrenView.children)}
|
|
63
|
+
</header>);
|
|
64
|
+
case "h2":
|
|
65
|
+
return (<h2 {...dom} {...attrs} slot={slot} ref={r}>
|
|
66
|
+
{() => renderSlot(childrenView.children)}
|
|
67
|
+
</h2>);
|
|
68
|
+
case "h3":
|
|
69
|
+
return (<h3 {...dom} {...attrs} slot={slot} ref={r}>
|
|
70
|
+
{() => renderSlot(childrenView.children)}
|
|
71
|
+
</h3>);
|
|
72
|
+
}
|
|
73
|
+
return (<Dynamic component={elementType} {...dom} {...attrs} slot={slot} ref={r}>
|
|
74
|
+
{() => renderSlot(childrenView.children)}
|
|
75
|
+
</Dynamic>);
|
|
76
|
+
}
|
package/utils/live.d.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/** Whether `object[key]` is an own getter (a live prop; a proxied spread source reports getters too). */
|
|
2
|
+
export declare function isLive(object: object | null | undefined, key: PropertyKey): boolean;
|
|
3
|
+
/** Whether any own enumerable key of `object` is a getter (live props present). */
|
|
4
|
+
export declare function hasLive(object: object | null | undefined): boolean;
|
|
5
|
+
/**
|
|
6
|
+
* A narrow view of `props` for the `keys` a part reads in bindings / handlers: a plain object of the present values
|
|
7
|
+
* when none of them is live (static path: a small data copy, serializes like locals), else a `splitProps` part that
|
|
8
|
+
* forwards every key to `props` unread (live path; on a resumed page it encodes as forwards, not values). Read
|
|
9
|
+
* `view.key` inside the binding.
|
|
10
|
+
*/
|
|
11
|
+
export declare function liveView<T extends object, const K extends readonly (keyof T)[]>(props: T, keys: K): Pick<T, K[number]>;
|
|
12
|
+
/**
|
|
13
|
+
* A `MaybeAccessor` slot from a prop (cdk state factories / behaviour options read `read(v)` at use time): an
|
|
14
|
+
* accessor `() => read(view[key])` when `view[key]` is live, else the value itself (static path unchanged). Pass a
|
|
15
|
+
* `liveView` (narrow), not the whole props object: the accessor captures it.
|
|
16
|
+
*/
|
|
17
|
+
export declare function liveAt<T extends object, K extends keyof T>(view: T, key: K): T[K] | (() => Unwrap<T[K]>);
|
|
18
|
+
/**
|
|
19
|
+
* A string `class` attribute of a live `class` prop (parts that take a plain `class`, not a render-prop one): an
|
|
20
|
+
* accessor over a narrow view (a function `class` is called), default `defaultClassName`. Goes into the element's
|
|
21
|
+
* spread bag (a function attribute value outside a spread is not a server binding).
|
|
22
|
+
*/
|
|
23
|
+
export declare function liveClass(props: object, defaultClassName: string): () => string;
|
|
24
|
+
type Unwrap<V> = V extends () => infer R ? R : V;
|
|
25
|
+
/**
|
|
26
|
+
* The accessor boundary of a part (cdk accessor rule: state-like props are `T | (() => T)`, read with `read(v)` in
|
|
27
|
+
* bindings / at event time): every live key of `keys` becomes an accessor data value (`liveAt`), so the part's
|
|
28
|
+
* copies (`{ ...props }`, destructures, state factories, behaviour bags) carry the accessor instead of a snapshot.
|
|
29
|
+
* `controlled` keys (a controlled value: `isSelected`, `value`, `isOpen`, …) become accessors only when defined at
|
|
30
|
+
* creation — an `undefined` one stays uncontrolled (React: switching between controlled and uncontrolled is
|
|
31
|
+
* unsupported); a controlled key holding a two-way Signal passes the Signal itself (stays two-way). Other keys forward unread. No live key → `props` itself (static path, 0 cost).
|
|
32
|
+
*/
|
|
33
|
+
export declare function liveOptions<T extends object>(props: T, keys: readonly (keyof T)[], controlled?: readonly (keyof T)[]): T;
|
|
34
|
+
/**
|
|
35
|
+
* A controlled collection-selection prop (`selectedKeys` / `expandedKeys`: `"all"` or an iterable of keys) for a
|
|
36
|
+
* selection state: when live and defined at creation, an accessor that reads it and normalises it to a `Set` (or
|
|
37
|
+
* `"all"`) — the state treats a plain function as a controlled, never-written value; a forwarded two-way Signal, an
|
|
38
|
+
* `undefined` (uncontrolled) or a static value is returned as is (static path unchanged).
|
|
39
|
+
*/
|
|
40
|
+
export declare function liveKeys<T extends object, K extends keyof T>(props: T, key: K): T[K];
|
|
41
|
+
/**
|
|
42
|
+
* `props` without `keys` (a rest destructure `const { a, ...rest } = props`, which reads every getter): a `splitProps`
|
|
43
|
+
* rest part when a prop is live (forwarding unread), else a plain copy (static path).
|
|
44
|
+
*/
|
|
45
|
+
export declare function liveOmit<T extends object, const K extends readonly (keyof T)[]>(props: T, keys: K): Omit<T, K[number]>;
|
|
46
|
+
/** `removeDataAttributes` (RAC) for live props: the `data-*` keys split off unread when a prop is live. */
|
|
47
|
+
export declare function liveWithoutData<T extends object>(props: T): T;
|
|
48
|
+
/** The current values of `keys`, read untracked (read-once props in a part body: no region dependency on a resumed page). */
|
|
49
|
+
export declare function readOnce<T extends object, const K extends readonly (keyof T)[]>(props: T, keys: K): Pick<T, K[number]>;
|
|
50
|
+
/** `{ ...base, ...extra }` without reading `base`'s getters when a prop is live (runtime `mergeProps`: a defined `extra`
|
|
51
|
+
* value wins), else the plain spread (static path). */
|
|
52
|
+
export declare function liveAssign<T extends object, U extends object>(base: T, extra: U): T & U;
|
|
53
|
+
export {};
|
package/utils/live.jsx
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
// Rivet-only (no React Aria counterpart): live component props in the cdk (live props P5,
|
|
2
|
+
// docs/design/specs/2026-10-07-live-props-design.md §8). The compiler passes a prop whose value reads state as an own
|
|
3
|
+
// getter (`<Button aria-pressed={on()}>` → `{ get "aria-pressed"() { return on(); } }`); a static prop is a data
|
|
4
|
+
// property. A cdk part runs once, so it must not copy a getter's value at creation: these helpers keep getters
|
|
5
|
+
// unread (runtime `splitProps` forwards) and read them where React re-renders — inside bindings and at event time.
|
|
6
|
+
// Static props (no getter, every server render) take the copy path: same objects, same cost as before.
|
|
7
|
+
// A `.tsx` module (resume-compiled): the accessor `liveAt` returns is a resumable symbol over its narrow view.
|
|
8
|
+
import { untrack } from "@rivetjs/reactivity";
|
|
9
|
+
import { mergeProps as mergeLive, splitProps } from "@rivetjs/runtime/props";
|
|
10
|
+
/** Whether `object[key]` is an own getter (a live prop; a proxied spread source reports getters too). */
|
|
11
|
+
export function isLive(object, key) {
|
|
12
|
+
return !!object && Object.getOwnPropertyDescriptor(object, key)?.get !== undefined;
|
|
13
|
+
}
|
|
14
|
+
/** Whether any own enumerable key of `object` is a getter (live props present). */
|
|
15
|
+
export function hasLive(object) {
|
|
16
|
+
if (!object)
|
|
17
|
+
return false;
|
|
18
|
+
const keys = Object.keys(object);
|
|
19
|
+
for (let i = 0; i < keys.length; i++)
|
|
20
|
+
if (Object.getOwnPropertyDescriptor(object, keys[i])?.get !== undefined)
|
|
21
|
+
return true;
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* A narrow view of `props` for the `keys` a part reads in bindings / handlers: a plain object of the present values
|
|
26
|
+
* when none of them is live (static path: a small data copy, serializes like locals), else a `splitProps` part that
|
|
27
|
+
* forwards every key to `props` unread (live path; on a resumed page it encodes as forwards, not values). Read
|
|
28
|
+
* `view.key` inside the binding.
|
|
29
|
+
*/
|
|
30
|
+
export function liveView(props, keys) {
|
|
31
|
+
const out = {};
|
|
32
|
+
for (let i = 0; i < keys.length; i++) {
|
|
33
|
+
const key = keys[i];
|
|
34
|
+
const desc = Object.getOwnPropertyDescriptor(props, key);
|
|
35
|
+
if (desc === undefined)
|
|
36
|
+
continue;
|
|
37
|
+
if (desc.get !== undefined)
|
|
38
|
+
return splitProps(props, keys)[0];
|
|
39
|
+
out[key] = desc.value;
|
|
40
|
+
}
|
|
41
|
+
return out;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* A `MaybeAccessor` slot from a prop (cdk state factories / behaviour options read `read(v)` at use time): an
|
|
45
|
+
* accessor `() => read(view[key])` when `view[key]` is live, else the value itself (static path unchanged). Pass a
|
|
46
|
+
* `liveView` (narrow), not the whole props object: the accessor captures it.
|
|
47
|
+
*/
|
|
48
|
+
export function liveAt(view, key) {
|
|
49
|
+
if (Object.getOwnPropertyDescriptor(view, key)?.get === undefined)
|
|
50
|
+
return view[key];
|
|
51
|
+
return () => {
|
|
52
|
+
const value = view[key];
|
|
53
|
+
return (typeof value === "function" ? value() : value);
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* A string `class` attribute of a live `class` prop (parts that take a plain `class`, not a render-prop one): an
|
|
58
|
+
* accessor over a narrow view (a function `class` is called), default `defaultClassName`. Goes into the element's
|
|
59
|
+
* spread bag (a function attribute value outside a spread is not a server binding).
|
|
60
|
+
*/
|
|
61
|
+
export function liveClass(props, defaultClassName) {
|
|
62
|
+
const view = liveView(props, ["class"]);
|
|
63
|
+
return () => {
|
|
64
|
+
const value = view.class;
|
|
65
|
+
return (typeof value === "function" ? value() : value) ?? defaultClassName;
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
const isSignal = (v) => typeof v === "function" && typeof v.set === "function";
|
|
69
|
+
/**
|
|
70
|
+
* The accessor boundary of a part (cdk accessor rule: state-like props are `T | (() => T)`, read with `read(v)` in
|
|
71
|
+
* bindings / at event time): every live key of `keys` becomes an accessor data value (`liveAt`), so the part's
|
|
72
|
+
* copies (`{ ...props }`, destructures, state factories, behaviour bags) carry the accessor instead of a snapshot.
|
|
73
|
+
* `controlled` keys (a controlled value: `isSelected`, `value`, `isOpen`, …) become accessors only when defined at
|
|
74
|
+
* creation — an `undefined` one stays uncontrolled (React: switching between controlled and uncontrolled is
|
|
75
|
+
* unsupported); a controlled key holding a two-way Signal passes the Signal itself (stays two-way). Other keys forward unread. No live key → `props` itself (static path, 0 cost).
|
|
76
|
+
*/
|
|
77
|
+
export function liveOptions(props, keys, controlled = []) {
|
|
78
|
+
let over;
|
|
79
|
+
let view;
|
|
80
|
+
// `keys` then `controlled` by index: the joined list is built only for the live view (static path: no array).
|
|
81
|
+
const n = keys.length, total = n + controlled.length;
|
|
82
|
+
for (let i = 0; i < total; i++) {
|
|
83
|
+
const key = i < n ? keys[i] : controlled[i - n];
|
|
84
|
+
if (!isLive(props, key))
|
|
85
|
+
continue;
|
|
86
|
+
if (i >= n) {
|
|
87
|
+
const now = untrack(() => props[key]);
|
|
88
|
+
if (now === undefined)
|
|
89
|
+
continue;
|
|
90
|
+
// A forwarded two-way Signal (`isSelected={sig}` through a wrapper's getter) stays two-way: pass the Signal itself.
|
|
91
|
+
if (isSignal(now)) {
|
|
92
|
+
(over ??= {})[key] = now;
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
view ??= splitProps(props, (controlled.length ? [...keys, ...controlled] : keys))[0];
|
|
97
|
+
(over ??= {})[key] = liveAt(view, key);
|
|
98
|
+
}
|
|
99
|
+
return over ? mergeLive(props, over) : props;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* A controlled collection-selection prop (`selectedKeys` / `expandedKeys`: `"all"` or an iterable of keys) for a
|
|
103
|
+
* selection state: when live and defined at creation, an accessor that reads it and normalises it to a `Set` (or
|
|
104
|
+
* `"all"`) — the state treats a plain function as a controlled, never-written value; a forwarded two-way Signal, an
|
|
105
|
+
* `undefined` (uncontrolled) or a static value is returned as is (static path unchanged).
|
|
106
|
+
*/
|
|
107
|
+
export function liveKeys(props, key) {
|
|
108
|
+
if (!isLive(props, key))
|
|
109
|
+
return props[key];
|
|
110
|
+
const now = untrack(() => props[key]);
|
|
111
|
+
if (now == null || isSignal(now))
|
|
112
|
+
return now;
|
|
113
|
+
const view = splitProps(props, [key])[0];
|
|
114
|
+
return (() => {
|
|
115
|
+
const value = view[key];
|
|
116
|
+
return value === "all" || value instanceof Set ? value : new Set(value);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* `props` without `keys` (a rest destructure `const { a, ...rest } = props`, which reads every getter): a `splitProps`
|
|
121
|
+
* rest part when a prop is live (forwarding unread), else a plain copy (static path).
|
|
122
|
+
*/
|
|
123
|
+
export function liveOmit(props, keys) {
|
|
124
|
+
if (hasLive(props))
|
|
125
|
+
return splitProps(props, keys)[1];
|
|
126
|
+
const out = {};
|
|
127
|
+
for (const key in props)
|
|
128
|
+
if (!keys.includes(key))
|
|
129
|
+
out[key] = props[key];
|
|
130
|
+
return out;
|
|
131
|
+
}
|
|
132
|
+
/** `removeDataAttributes` (RAC) for live props: the `data-*` keys split off unread when a prop is live. */
|
|
133
|
+
export function liveWithoutData(props) {
|
|
134
|
+
if (hasLive(props)) {
|
|
135
|
+
const data = [];
|
|
136
|
+
for (const key in props)
|
|
137
|
+
if (key.startsWith("data-"))
|
|
138
|
+
data.push(key);
|
|
139
|
+
return splitProps(props, data)[1];
|
|
140
|
+
}
|
|
141
|
+
// Static path: stop at the first `data-*` key (no key list).
|
|
142
|
+
let found = false;
|
|
143
|
+
for (const key in props)
|
|
144
|
+
if (key.startsWith("data-")) {
|
|
145
|
+
found = true;
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
if (!found)
|
|
149
|
+
return { ...props };
|
|
150
|
+
const out = {};
|
|
151
|
+
for (const key in props)
|
|
152
|
+
if (!key.startsWith("data-"))
|
|
153
|
+
out[key] = props[key];
|
|
154
|
+
return out;
|
|
155
|
+
}
|
|
156
|
+
/** The current values of `keys`, read untracked (read-once props in a part body: no region dependency on a resumed page). */
|
|
157
|
+
export function readOnce(props, keys) {
|
|
158
|
+
return untrack(() => {
|
|
159
|
+
const out = {};
|
|
160
|
+
for (const key of keys)
|
|
161
|
+
out[key] = props[key];
|
|
162
|
+
return out;
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
/** `{ ...base, ...extra }` without reading `base`'s getters when a prop is live (runtime `mergeProps`: a defined `extra`
|
|
166
|
+
* value wins), else the plain spread (static path). */
|
|
167
|
+
export function liveAssign(base, extra) {
|
|
168
|
+
return (hasLive(base) ? mergeLive(base, extra) : { ...base, ...extra });
|
|
169
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Collection } from "../collections/types.js";
|
|
2
|
+
type MaybeAccessor<T> = T | (() => T);
|
|
3
|
+
export interface LoadMoreSentinelProps {
|
|
4
|
+
/** The collection the sentinel trails; the observer is re-created whenever it changes. */
|
|
5
|
+
collection: MaybeAccessor<Collection<any> | null | undefined>;
|
|
6
|
+
/** Handler that is called when more items should be loaded, e.g. while scrolling near the bottom. */
|
|
7
|
+
onLoadMore?: () => any;
|
|
8
|
+
/**
|
|
9
|
+
* The amount of offset from the bottom of your scrollable region that should trigger load more.
|
|
10
|
+
* Uses a percentage value relative to the scroll body's client height. Load more is then
|
|
11
|
+
* triggered when your current scroll position's distance from the bottom of the currently loaded
|
|
12
|
+
* list of items is less than or equal to the provided value. (e.g. 1 = 100% of the scroll
|
|
13
|
+
* region's height).
|
|
14
|
+
*
|
|
15
|
+
* @default 1
|
|
16
|
+
*/
|
|
17
|
+
scrollOffset?: MaybeAccessor<number | undefined>;
|
|
18
|
+
/**
|
|
19
|
+
* The scroll direction that triggers load more. Use 'start' for reversed layouts where older
|
|
20
|
+
* content loads when scrolling toward the top.
|
|
21
|
+
*
|
|
22
|
+
* @default 'end'
|
|
23
|
+
*/
|
|
24
|
+
direction?: MaybeAccessor<"start" | "end" | undefined>;
|
|
25
|
+
}
|
|
26
|
+
/** Calls `props.onLoadMore` whenever the sentinel element `ref` scrolls within `scrollOffset` of its scroll parent's viewport. */
|
|
27
|
+
export declare function loadMoreSentinel(props: LoadMoreSentinelProps, ref: () => HTMLElement | null | undefined): void;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// Ported from packages/react-aria/src/utils/useLoadMoreSentinel.ts, Apache-2.0, © Adobe.
|
|
2
|
+
// Rivet:
|
|
3
|
+
// - Name: `useLoadMoreSentinel` → `loadMoreSentinel(props, ref)` (no `use*` exports).
|
|
4
|
+
// - `.tsx` (no JSX): `.ts` modules are not server-rewritten, and this one calls `clientEffect`.
|
|
5
|
+
// - `useLayoutEffect(…, [collection, ref, scrollOffset, direction])` → `clientEffect` that tracks the
|
|
6
|
+
// same inputs: `ref` is an element accessor (`ref()` from `@rivetjs/runtime/dom`), `collection`,
|
|
7
|
+
// `scrollOffset` and `direction` a value or an accessor. Any change tears the observer down and sets up
|
|
8
|
+
// a new one, as upstream.
|
|
9
|
+
// - `useEffectEvent(triggerLoadMore)` → `props.onLoadMore` read when the observer fires (always the latest).
|
|
10
|
+
import { untrack } from "@rivetjs/reactivity";
|
|
11
|
+
import { clientEffect } from "@rivetjs/runtime/dom";
|
|
12
|
+
import { getScrollParent } from "./dom.js";
|
|
13
|
+
const read = (value) => (typeof value === "function" ? value() : value);
|
|
14
|
+
/** Calls `props.onLoadMore` whenever the sentinel element `ref` scrolls within `scrollOffset` of its scroll parent's viewport. */
|
|
15
|
+
export function loadMoreSentinel(props, ref) {
|
|
16
|
+
const triggerLoadMore = (entries) => {
|
|
17
|
+
// Use "isIntersecting" over an equality check of 0 since it seems like there is cases where
|
|
18
|
+
// a intersection ratio of 0 can be reported when isIntersecting is actually true
|
|
19
|
+
for (const entry of entries) {
|
|
20
|
+
// Note that this will be called if the collection changes, even if onLoadMore was already called and is being processed.
|
|
21
|
+
// Up to user discretion as to how to handle these multiple onLoadMore calls
|
|
22
|
+
const onLoadMore = props.onLoadMore;
|
|
23
|
+
if (entry.isIntersecting && onLoadMore)
|
|
24
|
+
untrack(() => onLoadMore());
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
clientEffect(() => {
|
|
28
|
+
// Dependencies: collection, ref, scrollOffset, direction.
|
|
29
|
+
read(props.collection);
|
|
30
|
+
const element = ref();
|
|
31
|
+
const scrollOffset = read(props.scrollOffset) ?? 1;
|
|
32
|
+
const direction = read(props.direction) ?? "end";
|
|
33
|
+
let sentinelObserver = null;
|
|
34
|
+
if (element) {
|
|
35
|
+
// Tear down and set up a new IntersectionObserver when the collection changes so that we can properly trigger additional loadMores if there is room for more items
|
|
36
|
+
// Need to do this tear down and set up since using a large rootMargin will mean the observer's callback isn't called even when scrolling the item into view beause its visibility hasn't actually changed
|
|
37
|
+
// https://codesandbox.io/p/sandbox/magical-swanson-dhgp89?file=%2Fsrc%2FApp.js%3A21%2C21
|
|
38
|
+
const margin = 100 * scrollOffset;
|
|
39
|
+
// For direction='start', right/left margins have no affect for vertical scroll containers. We are not supporting reverse horizontal scroll containers for now.
|
|
40
|
+
const rootMargin = direction === "start" ? `${margin}% 0px 0px 0px` : `0px ${margin}% ${margin}% ${margin}%`;
|
|
41
|
+
sentinelObserver = new IntersectionObserver(triggerLoadMore, {
|
|
42
|
+
root: getScrollParent(element),
|
|
43
|
+
rootMargin,
|
|
44
|
+
});
|
|
45
|
+
sentinelObserver.observe(element);
|
|
46
|
+
}
|
|
47
|
+
return () => {
|
|
48
|
+
if (sentinelObserver)
|
|
49
|
+
sentinelObserver.disconnect();
|
|
50
|
+
};
|
|
51
|
+
});
|
|
52
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Spring (visualDuration, bounce: Motion's parameters, mass 1) → `linear()` points + settling time. */
|
|
2
|
+
export declare function springCurve(visualDuration: number, bounce: number): readonly [easing: string, duration: string];
|
|
3
|
+
/** Apply the motion token read from `element` (call once per open, element in the document). */
|
|
4
|
+
export declare function applyMotionToken(element: HTMLElement): void;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// Motion token (motion spec D17): `--rv-motion-spring: <visualDuration s> <bounce>` (e.g. `0.3 0.2`) on an overlay or an
|
|
2
|
+
// ancestor switches its enter / exit animations to a spring: CSS `linear()` easing + the spring's settling time, set
|
|
3
|
+
// inline (beats the theme's classes). Read once per open; unset (the default) or reduced motion = no change. No JS
|
|
4
|
+
// animation engine: the overlay's own CSS keyframes / transitions run on the spring curve.
|
|
5
|
+
const curves = new Map();
|
|
6
|
+
/** Spring (visualDuration, bounce: Motion's parameters, mass 1) → `linear()` points + settling time. */
|
|
7
|
+
export function springCurve(visualDuration, bounce) {
|
|
8
|
+
const k = ((2 * Math.PI) / (visualDuration * 1.2)) ** 2;
|
|
9
|
+
const w = Math.sqrt(k);
|
|
10
|
+
const zeta = 1 - Math.min(Math.max(bounce, 0), 1);
|
|
11
|
+
const x = zeta < 1
|
|
12
|
+
? (t) => {
|
|
13
|
+
const wd = w * Math.sqrt(1 - zeta * zeta);
|
|
14
|
+
return 1 - Math.exp(-zeta * w * t) * (Math.cos(wd * t) + ((zeta * w) / wd) * Math.sin(wd * t));
|
|
15
|
+
}
|
|
16
|
+
: (t) => 1 - Math.exp(-w * t) * (1 + w * t);
|
|
17
|
+
// Settled: within 0.1 % of the target for the rest of the curve (capped at 2 s).
|
|
18
|
+
let end = 2;
|
|
19
|
+
for (let t = 2; t > 0; t -= 0.01)
|
|
20
|
+
if (Math.abs(1 - x(t)) > 0.001)
|
|
21
|
+
break;
|
|
22
|
+
else
|
|
23
|
+
end = t;
|
|
24
|
+
const points = [];
|
|
25
|
+
for (let i = 0; i <= 40; i++)
|
|
26
|
+
points.push(String(Math.round(x((end * i) / 40) * 1000) / 1000));
|
|
27
|
+
points[40] = "1";
|
|
28
|
+
return [`linear(${points.join(",")})`, Math.round(end * 1000) + "ms"];
|
|
29
|
+
}
|
|
30
|
+
/** Apply the motion token read from `element` (call once per open, element in the document). */
|
|
31
|
+
export function applyMotionToken(element) {
|
|
32
|
+
const token = getComputedStyle(element).getPropertyValue("--rv-motion-spring").trim();
|
|
33
|
+
if (!token || matchMedia("(prefers-reduced-motion: reduce)").matches)
|
|
34
|
+
return;
|
|
35
|
+
let curve = curves.get(token);
|
|
36
|
+
if (curve === undefined) {
|
|
37
|
+
const [duration, bounce] = token.split(/\s+/).map(Number);
|
|
38
|
+
curve = duration > 0 ? springCurve(duration, bounce || 0) : null;
|
|
39
|
+
curves.set(token, curve);
|
|
40
|
+
}
|
|
41
|
+
if (!curve)
|
|
42
|
+
return;
|
|
43
|
+
const style = element.style;
|
|
44
|
+
style.setProperty("animation-timing-function", curve[0]);
|
|
45
|
+
style.setProperty("animation-duration", curve[1]);
|
|
46
|
+
style.setProperty("transition-timing-function", curve[0]);
|
|
47
|
+
style.setProperty("transition-duration", curve[1]);
|
|
48
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { JSX } from "@rivetjs/runtime/jsx-runtime";
|
|
2
|
+
export type DOMRenderFunction<E extends keyof JSX.IntrinsicElements, T> = (props: JSX.IntrinsicElements[E], renderProps: T) => JSX.Element;
|
|
3
|
+
export interface DOMRenderProps<E extends keyof JSX.IntrinsicElements, T> {
|
|
4
|
+
/** Overrides the default DOM element with a custom render function; spread the received props onto the element you render. */
|
|
5
|
+
render?: DOMRenderFunction<E, T>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* The part's attributes go to `render` when given, else to the default element (`fallback`).
|
|
9
|
+
* Rivet parts do NOT use this with a JSX `fallback` arrow: a compiled element in a callback loses the part's
|
|
10
|
+
* resumable bindings (reactive `children`, adopted server nodes). Parts write `if (render) return render(attrs, rp);`
|
|
11
|
+
* before their compiled element instead; this stays for non-JSX fallbacks and as the documented contract.
|
|
12
|
+
*/
|
|
13
|
+
export declare function renderElement<E extends keyof JSX.IntrinsicElements, T>(render: DOMRenderFunction<E, T> | undefined, props: JSX.IntrinsicElements[E], renderProps: T, fallback: (props: JSX.IntrinsicElements[E]) => JSX.Element): JSX.Element;
|
|
14
|
+
/**
|
|
15
|
+
* Client/SSR fresh-render only (a new arrow in a `.ts` module is not resumable): used only on the `render` path, which never
|
|
16
|
+
* adopts server nodes. `children` for a part's attributes object: lazy JSX content is resolved once; a user function is reactive
|
|
17
|
+
* content, so it stays an accessor (the element's spread re-renders the content when its reads change).
|
|
18
|
+
*/
|
|
19
|
+
export declare function slotChildren<T>(children: T | (() => T)): unknown;
|
package/utils/render.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { isSlot, renderSlot } from "@rivetjs/runtime/slot";
|
|
2
|
+
/**
|
|
3
|
+
* The part's attributes go to `render` when given, else to the default element (`fallback`).
|
|
4
|
+
* Rivet parts do NOT use this with a JSX `fallback` arrow: a compiled element in a callback loses the part's
|
|
5
|
+
* resumable bindings (reactive `children`, adopted server nodes). Parts write `if (render) return render(attrs, rp);`
|
|
6
|
+
* before their compiled element instead; this stays for non-JSX fallbacks and as the documented contract.
|
|
7
|
+
*/
|
|
8
|
+
export function renderElement(render, props, renderProps, fallback) {
|
|
9
|
+
return render ? render(props, renderProps) : fallback(props);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Client/SSR fresh-render only (a new arrow in a `.ts` module is not resumable): used only on the `render` path, which never
|
|
13
|
+
* adopts server nodes. `children` for a part's attributes object: lazy JSX content is resolved once; a user function is reactive
|
|
14
|
+
* content, so it stays an accessor (the element's spread re-renders the content when its reads change).
|
|
15
|
+
*/
|
|
16
|
+
export function slotChildren(children) {
|
|
17
|
+
return typeof children === "function" && !isSlot(children) ? () => renderSlot(children) : renderSlot(children);
|
|
18
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Focus `element` without scrolling it into view (`focus({ preventScroll: true })`, Baseline). */
|
|
2
|
+
export declare function focusWithoutScrolling(element: HTMLElement | SVGElement): void;
|
|
3
|
+
/**
|
|
4
|
+
* Start tracking transitions in `doc` (react-aria does this at import; Rivet modules have no
|
|
5
|
+
* import-time effects, so the first `runAfterTransition` call does it). Transitions already running
|
|
6
|
+
* then are picked up from `document.getAnimations()`.
|
|
7
|
+
*/
|
|
8
|
+
export declare function trackTransitions(doc?: Document): void;
|
|
9
|
+
/** Test hook: stop tracking and forget running transitions and queued callbacks. */
|
|
10
|
+
export declare function _resetTransitions(): void;
|
|
11
|
+
/**
|
|
12
|
+
* Run `fn` once every running CSS transition in the document finished (`fn(true)`), or on the next
|
|
13
|
+
* frame when none runs (`fn(false)`; one frame lets a transition on mount start). Returns a cancel function.
|
|
14
|
+
*/
|
|
15
|
+
export declare function runAfterTransition(fn: (isTransition: boolean) => void): () => void;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
// react-aria `focusWithoutScrolling` + `runAfterTransition` (Apache-2.0, © Adobe; ported in `./index.ts` before
|
|
2
|
+
// DOCS-COLD 2026-10-20). A leaf module: no imports, so the focus / overlay helpers that need these two do not reach
|
|
3
|
+
// `./index.ts` (which re-exports `merge-props`); `./index.ts` re-exports them.
|
|
4
|
+
/** Focus `element` without scrolling it into view (`focus({ preventScroll: true })`, Baseline). */
|
|
5
|
+
export function focusWithoutScrolling(element) {
|
|
6
|
+
element.focus({ preventScroll: true });
|
|
7
|
+
}
|
|
8
|
+
// --- runAfterTransition ---------------------------------------------------------------------------
|
|
9
|
+
// Elements currently transitioning → their transitioning CSS properties (a set, not a count: Chrome
|
|
10
|
+
// sometimes fires both transitionend and transitioncancel).
|
|
11
|
+
const transitionsByElement = new Map();
|
|
12
|
+
const transitionCallbacks = new Set();
|
|
13
|
+
let tracking = null;
|
|
14
|
+
const isTransitionEvent = (event) => "propertyName" in event;
|
|
15
|
+
const eventTarget = (event) => {
|
|
16
|
+
try {
|
|
17
|
+
return event.composedPath?.()[0] ?? event.target;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return event.target;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
function onTransitionStart(event) {
|
|
24
|
+
const target = eventTarget(event);
|
|
25
|
+
if (!isTransitionEvent(event) || !target)
|
|
26
|
+
return;
|
|
27
|
+
let transitions = transitionsByElement.get(target);
|
|
28
|
+
if (!transitions) {
|
|
29
|
+
transitionsByElement.set(target, (transitions = new Set()));
|
|
30
|
+
// On the element itself: it must fire even when the node is removed mid-transition.
|
|
31
|
+
target.addEventListener("transitioncancel", onTransitionEnd, { once: true });
|
|
32
|
+
}
|
|
33
|
+
transitions.add(event.propertyName);
|
|
34
|
+
}
|
|
35
|
+
function onTransitionEnd(event) {
|
|
36
|
+
const target = eventTarget(event);
|
|
37
|
+
if (!isTransitionEvent(event) || !target)
|
|
38
|
+
return;
|
|
39
|
+
const properties = transitionsByElement.get(target);
|
|
40
|
+
if (!properties)
|
|
41
|
+
return;
|
|
42
|
+
properties.delete(event.propertyName);
|
|
43
|
+
if (properties.size === 0) {
|
|
44
|
+
target.removeEventListener("transitioncancel", onTransitionEnd);
|
|
45
|
+
transitionsByElement.delete(target);
|
|
46
|
+
}
|
|
47
|
+
if (transitionsByElement.size === 0) {
|
|
48
|
+
for (const callback of transitionCallbacks) {
|
|
49
|
+
callback(true);
|
|
50
|
+
transitionCallbacks.delete(callback);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Start tracking transitions in `doc` (react-aria does this at import; Rivet modules have no
|
|
56
|
+
* import-time effects, so the first `runAfterTransition` call does it). Transitions already running
|
|
57
|
+
* then are picked up from `document.getAnimations()`.
|
|
58
|
+
*/
|
|
59
|
+
export function trackTransitions(doc = document) {
|
|
60
|
+
if (tracking === doc)
|
|
61
|
+
return;
|
|
62
|
+
tracking = doc;
|
|
63
|
+
doc.addEventListener("transitionrun", onTransitionStart);
|
|
64
|
+
doc.addEventListener("transitionend", onTransitionEnd);
|
|
65
|
+
try {
|
|
66
|
+
for (const animation of doc.getAnimations?.() ?? []) {
|
|
67
|
+
const css = animation;
|
|
68
|
+
const target = css.effect?.target;
|
|
69
|
+
if (css.transitionProperty && target && animation.playState === "running")
|
|
70
|
+
onTransitionStart(Object.assign(new Event("transitionrun"), { propertyName: css.transitionProperty, composedPath: () => [target] }));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
catch { }
|
|
74
|
+
}
|
|
75
|
+
/** Test hook: stop tracking and forget running transitions and queued callbacks. */
|
|
76
|
+
export function _resetTransitions() {
|
|
77
|
+
tracking?.removeEventListener("transitionrun", onTransitionStart);
|
|
78
|
+
tracking?.removeEventListener("transitionend", onTransitionEnd);
|
|
79
|
+
tracking = null;
|
|
80
|
+
transitionsByElement.clear();
|
|
81
|
+
transitionCallbacks.clear();
|
|
82
|
+
}
|
|
83
|
+
function cleanupDetachedElements() {
|
|
84
|
+
for (const [target] of transitionsByElement)
|
|
85
|
+
if ("isConnected" in target && !target.isConnected)
|
|
86
|
+
transitionsByElement.delete(target);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Run `fn` once every running CSS transition in the document finished (`fn(true)`), or on the next
|
|
90
|
+
* frame when none runs (`fn(false)`; one frame lets a transition on mount start). Returns a cancel function.
|
|
91
|
+
*/
|
|
92
|
+
export function runAfterTransition(fn) {
|
|
93
|
+
trackTransitions();
|
|
94
|
+
const frame = requestAnimationFrame(() => {
|
|
95
|
+
cleanupDetachedElements();
|
|
96
|
+
if (transitionsByElement.size === 0)
|
|
97
|
+
return fn(false);
|
|
98
|
+
transitionCallbacks.add(fn);
|
|
99
|
+
});
|
|
100
|
+
return () => {
|
|
101
|
+
cancelAnimationFrame(frame);
|
|
102
|
+
transitionCallbacks.delete(fn);
|
|
103
|
+
};
|
|
104
|
+
}
|