@wardic/solid 0.0.0-stage → 1.0.0-rc.2
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/README.md +26 -2
- package/THIRD_PARTY_NOTICES.md +145 -0
- package/dist/browser/animation-controls.js +150 -0
- package/dist/browser/animation-controls.js.map +1 -0
- package/dist/browser/animation-frame.js +29 -0
- package/dist/browser/animation-frame.js.map +1 -0
- package/dist/browser/appear.js +727 -0
- package/dist/browser/appear.js.map +1 -0
- package/dist/browser/arc.js +21 -0
- package/dist/browser/arc.js.map +1 -0
- package/dist/browser/bridge.js +69 -0
- package/dist/browser/bridge.js.map +1 -0
- package/dist/browser/complete.js +30 -0
- package/dist/browser/complete.js.map +1 -0
- package/dist/browser/config.js +2 -0
- package/dist/browser/config.js.map +1 -0
- package/dist/browser/create-animate.js +41 -0
- package/dist/browser/create-animate.js.map +1 -0
- package/dist/browser/create-ward.js +1001 -0
- package/dist/browser/create-ward.js.map +1 -0
- package/dist/browser/cycle-index.js +17 -0
- package/dist/browser/cycle-index.js.map +1 -0
- package/dist/browser/cycle.js +31 -0
- package/dist/browser/cycle.js.map +1 -0
- package/dist/browser/directive.js +80 -0
- package/dist/browser/directive.js.map +1 -0
- package/dist/browser/drag-constraints.js +76 -0
- package/dist/browser/drag-constraints.js.map +1 -0
- package/dist/browser/drag-controls.js +51 -0
- package/dist/browser/drag-controls.js.map +1 -0
- package/dist/browser/drag-samples.js +40 -0
- package/dist/browser/drag-samples.js.map +1 -0
- package/dist/browser/drag-sensor.js +35 -0
- package/dist/browser/drag-sensor.js.map +1 -0
- package/dist/browser/drag-track.js +817 -0
- package/dist/browser/drag-track.js.map +1 -0
- package/dist/browser/drag-transition.js +56 -0
- package/dist/browser/drag-transition.js.map +1 -0
- package/dist/browser/drag.js +44 -0
- package/dist/browser/drag.js.map +1 -0
- package/dist/browser/element-style.js +67 -0
- package/dist/browser/element-style.js.map +1 -0
- package/dist/browser/element.js +353 -0
- package/dist/browser/element.js.map +1 -0
- package/dist/browser/feature-section.js +17 -0
- package/dist/browser/feature-section.js.map +1 -0
- package/dist/browser/feature.js +261 -0
- package/dist/browser/feature.js.map +1 -0
- package/dist/browser/features/all.js +10 -0
- package/dist/browser/features/all.js.map +1 -0
- package/dist/browser/features/colors.js +33 -0
- package/dist/browser/features/colors.js.map +1 -0
- package/dist/browser/features/dom-animation.js +7 -0
- package/dist/browser/features/dom-animation.js.map +1 -0
- package/dist/browser/features/dom-max.js +4 -0
- package/dist/browser/features/dom-max.js.map +1 -0
- package/dist/browser/features/drag.js +28 -0
- package/dist/browser/features/drag.js.map +1 -0
- package/dist/browser/features/focus.js +18 -0
- package/dist/browser/features/focus.js.map +1 -0
- package/dist/browser/features/hover.js +18 -0
- package/dist/browser/features/hover.js.map +1 -0
- package/dist/browser/features/in-view.js +18 -0
- package/dist/browser/features/in-view.js.map +1 -0
- package/dist/browser/features/input.js +30 -0
- package/dist/browser/features/input.js.map +1 -0
- package/dist/browser/features/keys.js +19 -0
- package/dist/browser/features/keys.js.map +1 -0
- package/dist/browser/features/layout.js +33 -0
- package/dist/browser/features/layout.js.map +1 -0
- package/dist/browser/features/pan.js +18 -0
- package/dist/browser/features/pan.js.map +1 -0
- package/dist/browser/features/press.js +12 -0
- package/dist/browser/features/press.js.map +1 -0
- package/dist/browser/focus-sensor.js +23 -0
- package/dist/browser/focus-sensor.js.map +1 -0
- package/dist/browser/frame-time.js +40 -0
- package/dist/browser/frame-time.js.map +1 -0
- package/dist/browser/gesture-callbacks.js +172 -0
- package/dist/browser/gesture-callbacks.js.map +1 -0
- package/dist/browser/gesture-features.js +29 -0
- package/dist/browser/gesture-features.js.map +1 -0
- package/dist/browser/gesture-info.js +43 -0
- package/dist/browser/gesture-info.js.map +1 -0
- package/dist/browser/hover-sensor.js +29 -0
- package/dist/browser/hover-sensor.js.map +1 -0
- package/dist/browser/imperative.js +614 -0
- package/dist/browser/imperative.js.map +1 -0
- package/dist/browser/index.js +165 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/instant.js +51 -0
- package/dist/browser/instant.js.map +1 -0
- package/dist/browser/layout-group.js +27 -0
- package/dist/browser/layout-group.js.map +1 -0
- package/dist/browser/layout-member.js +362 -0
- package/dist/browser/layout-member.js.map +1 -0
- package/dist/browser/layout-projection.js +19 -0
- package/dist/browser/layout-projection.js.map +1 -0
- package/dist/browser/layout.js +91 -0
- package/dist/browser/layout.js.map +1 -0
- package/dist/browser/live-style.js +313 -0
- package/dist/browser/live-style.js.map +1 -0
- package/dist/browser/live-value.js +252 -0
- package/dist/browser/live-value.js.map +1 -0
- package/dist/browser/motion-props.js +172 -0
- package/dist/browser/motion-props.js.map +1 -0
- package/dist/browser/owner-scope.js +29 -0
- package/dist/browser/owner-scope.js.map +1 -0
- package/dist/browser/page-point.js +92 -0
- package/dist/browser/page-point.js.map +1 -0
- package/dist/browser/presence-controller.js +1324 -0
- package/dist/browser/presence-controller.js.map +1 -0
- package/dist/browser/presence-record.js +27 -0
- package/dist/browser/presence-record.js.map +1 -0
- package/dist/browser/presence.js +207 -0
- package/dist/browser/presence.js.map +1 -0
- package/dist/browser/press-sensor.js +30 -0
- package/dist/browser/press-sensor.js.map +1 -0
- package/dist/browser/press.js +24 -0
- package/dist/browser/press.js.map +1 -0
- package/dist/browser/provider.js +445 -0
- package/dist/browser/provider.js.map +1 -0
- package/dist/browser/reactivity.js +9 -0
- package/dist/browser/reactivity.js.map +1 -0
- package/dist/browser/reorder-input.js +46 -0
- package/dist/browser/reorder-input.js.map +1 -0
- package/dist/browser/reorder.js +543 -0
- package/dist/browser/reorder.js.map +1 -0
- package/dist/browser/retarget-legs.js +1019 -0
- package/dist/browser/retarget-legs.js.map +1 -0
- package/dist/browser/runtime.js +249 -0
- package/dist/browser/runtime.js.map +1 -0
- package/dist/browser/sensors.js +172 -0
- package/dist/browser/sensors.js.map +1 -0
- package/dist/browser/server-interpolators.js +20 -0
- package/dist/browser/server-interpolators.js.map +1 -0
- package/dist/browser/server.js +20 -0
- package/dist/browser/server.js.map +1 -0
- package/dist/browser/solid-reactivity.js +26 -0
- package/dist/browser/solid-reactivity.js.map +1 -0
- package/dist/browser/spine.js +2939 -0
- package/dist/browser/spine.js.map +1 -0
- package/dist/browser/stagger.js +13 -0
- package/dist/browser/stagger.js.map +1 -0
- package/dist/browser/unstable/v2/bridge.js +76 -0
- package/dist/browser/unstable/v2/bridge.js.map +1 -0
- package/dist/browser/unstable/v2/complete.js +29 -0
- package/dist/browser/unstable/v2/complete.js.map +1 -0
- package/dist/browser/unstable/v2/config-view.js +111 -0
- package/dist/browser/unstable/v2/config-view.js.map +1 -0
- package/dist/browser/unstable/v2/create-animate.js +102 -0
- package/dist/browser/unstable/v2/create-animate.js.map +1 -0
- package/dist/browser/unstable/v2/cycle.js +30 -0
- package/dist/browser/unstable/v2/cycle.js.map +1 -0
- package/dist/browser/unstable/v2/drag-sensor.js +34 -0
- package/dist/browser/unstable/v2/drag-sensor.js.map +1 -0
- package/dist/browser/unstable/v2/element.js +393 -0
- package/dist/browser/unstable/v2/element.js.map +1 -0
- package/dist/browser/unstable/v2/feature-section.js +27 -0
- package/dist/browser/unstable/v2/feature-section.js.map +1 -0
- package/dist/browser/unstable/v2/focus-sensor.js +23 -0
- package/dist/browser/unstable/v2/focus-sensor.js.map +1 -0
- package/dist/browser/unstable/v2/hover-sensor.js +28 -0
- package/dist/browser/unstable/v2/hover-sensor.js.map +1 -0
- package/dist/browser/unstable/v2/index.js +114 -0
- package/dist/browser/unstable/v2/index.js.map +1 -0
- package/dist/browser/unstable/v2/layout-projection.js +18 -0
- package/dist/browser/unstable/v2/layout-projection.js.map +1 -0
- package/dist/browser/unstable/v2/layout.js +71 -0
- package/dist/browser/unstable/v2/layout.js.map +1 -0
- package/dist/browser/unstable/v2/lifecycle.js +455 -0
- package/dist/browser/unstable/v2/lifecycle.js.map +1 -0
- package/dist/browser/unstable/v2/live-value.js +264 -0
- package/dist/browser/unstable/v2/live-value.js.map +1 -0
- package/dist/browser/unstable/v2/presence-handle.js +146 -0
- package/dist/browser/unstable/v2/presence-handle.js.map +1 -0
- package/dist/browser/unstable/v2/presence-hooks.js +142 -0
- package/dist/browser/unstable/v2/presence-hooks.js.map +1 -0
- package/dist/browser/unstable/v2/presence.js +124 -0
- package/dist/browser/unstable/v2/presence.js.map +1 -0
- package/dist/browser/unstable/v2/press-sensor.js +29 -0
- package/dist/browser/unstable/v2/press-sensor.js.map +1 -0
- package/dist/browser/unstable/v2/provider.js +457 -0
- package/dist/browser/unstable/v2/provider.js.map +1 -0
- package/dist/browser/unstable/v2/reorder.js +663 -0
- package/dist/browser/unstable/v2/reorder.js.map +1 -0
- package/dist/browser/unstable/v2/sensors.js +138 -0
- package/dist/browser/unstable/v2/sensors.js.map +1 -0
- package/dist/browser/unstable/v2/solid-reactivity.js +82 -0
- package/dist/browser/unstable/v2/solid-reactivity.js.map +1 -0
- package/dist/browser/unstable/v2/variant-node.js +395 -0
- package/dist/browser/unstable/v2/variant-node.js.map +1 -0
- package/dist/browser/unstable/v2/w.js +23 -0
- package/dist/browser/unstable/v2/w.js.map +1 -0
- package/dist/browser/unstable/v2/waiters.js +185 -0
- package/dist/browser/unstable/v2/waiters.js.map +1 -0
- package/dist/browser/unstable/v2/ward.js +1620 -0
- package/dist/browser/unstable/v2/ward.js.map +1 -0
- package/dist/browser/unstable/v2/wardic-config.js +40 -0
- package/dist/browser/unstable/v2/wardic-config.js.map +1 -0
- package/dist/browser/unstable/v2/wardic.js +16 -0
- package/dist/browser/unstable/v2/wardic.js.map +1 -0
- package/dist/browser/variant-node.js +308 -0
- package/dist/browser/variant-node.js.map +1 -0
- package/dist/browser/variant-target.js +224 -0
- package/dist/browser/variant-target.js.map +1 -0
- package/dist/browser/variant-tree.js +394 -0
- package/dist/browser/variant-tree.js.map +1 -0
- package/dist/browser/variants.js +43 -0
- package/dist/browser/variants.js.map +1 -0
- package/dist/browser/w.js +25 -0
- package/dist/browser/w.js.map +1 -0
- package/dist/browser/ward-keys.js +2 -0
- package/dist/browser/ward-keys.js.map +1 -0
- package/dist/browser/wardic-component.js +74 -0
- package/dist/browser/wardic-component.js.map +1 -0
- package/dist/browser/wardic-config-value.js +91 -0
- package/dist/browser/wardic-config-value.js.map +1 -0
- package/dist/browser/wardic-config.js +42 -0
- package/dist/browser/wardic-config.js.map +1 -0
- package/dist/browser/wardic.js +31 -0
- package/dist/browser/wardic.js.map +1 -0
- package/dist/server/animation-controls.js +150 -0
- package/dist/server/animation-controls.js.map +1 -0
- package/dist/server/animation-frame.js +29 -0
- package/dist/server/animation-frame.js.map +1 -0
- package/dist/server/appear.js +727 -0
- package/dist/server/appear.js.map +1 -0
- package/dist/server/arc.js +21 -0
- package/dist/server/arc.js.map +1 -0
- package/dist/server/bridge.js +69 -0
- package/dist/server/bridge.js.map +1 -0
- package/dist/server/complete.js +30 -0
- package/dist/server/complete.js.map +1 -0
- package/dist/server/config.js +2 -0
- package/dist/server/config.js.map +1 -0
- package/dist/server/create-animate.js +41 -0
- package/dist/server/create-animate.js.map +1 -0
- package/dist/server/create-ward.js +1001 -0
- package/dist/server/create-ward.js.map +1 -0
- package/dist/server/cycle-index.js +17 -0
- package/dist/server/cycle-index.js.map +1 -0
- package/dist/server/cycle.js +31 -0
- package/dist/server/cycle.js.map +1 -0
- package/dist/server/directive.js +80 -0
- package/dist/server/directive.js.map +1 -0
- package/dist/server/drag-constraints.js +76 -0
- package/dist/server/drag-constraints.js.map +1 -0
- package/dist/server/drag-controls.js +51 -0
- package/dist/server/drag-controls.js.map +1 -0
- package/dist/server/drag-samples.js +40 -0
- package/dist/server/drag-samples.js.map +1 -0
- package/dist/server/drag-sensor.js +35 -0
- package/dist/server/drag-sensor.js.map +1 -0
- package/dist/server/drag-track.js +817 -0
- package/dist/server/drag-track.js.map +1 -0
- package/dist/server/drag-transition.js +56 -0
- package/dist/server/drag-transition.js.map +1 -0
- package/dist/server/drag.js +44 -0
- package/dist/server/drag.js.map +1 -0
- package/dist/server/element-style.js +67 -0
- package/dist/server/element-style.js.map +1 -0
- package/dist/server/element.js +353 -0
- package/dist/server/element.js.map +1 -0
- package/dist/server/feature-section.js +17 -0
- package/dist/server/feature-section.js.map +1 -0
- package/dist/server/feature.js +261 -0
- package/dist/server/feature.js.map +1 -0
- package/dist/server/features/all.js +10 -0
- package/dist/server/features/all.js.map +1 -0
- package/dist/server/features/colors.js +33 -0
- package/dist/server/features/colors.js.map +1 -0
- package/dist/server/features/dom-animation.js +7 -0
- package/dist/server/features/dom-animation.js.map +1 -0
- package/dist/server/features/dom-max.js +4 -0
- package/dist/server/features/dom-max.js.map +1 -0
- package/dist/server/features/drag.js +28 -0
- package/dist/server/features/drag.js.map +1 -0
- package/dist/server/features/focus.js +18 -0
- package/dist/server/features/focus.js.map +1 -0
- package/dist/server/features/hover.js +18 -0
- package/dist/server/features/hover.js.map +1 -0
- package/dist/server/features/in-view.js +18 -0
- package/dist/server/features/in-view.js.map +1 -0
- package/dist/server/features/input.js +30 -0
- package/dist/server/features/input.js.map +1 -0
- package/dist/server/features/keys.js +19 -0
- package/dist/server/features/keys.js.map +1 -0
- package/dist/server/features/layout.js +33 -0
- package/dist/server/features/layout.js.map +1 -0
- package/dist/server/features/pan.js +18 -0
- package/dist/server/features/pan.js.map +1 -0
- package/dist/server/features/press.js +12 -0
- package/dist/server/features/press.js.map +1 -0
- package/dist/server/focus-sensor.js +23 -0
- package/dist/server/focus-sensor.js.map +1 -0
- package/dist/server/frame-time.js +40 -0
- package/dist/server/frame-time.js.map +1 -0
- package/dist/server/gesture-callbacks.js +172 -0
- package/dist/server/gesture-callbacks.js.map +1 -0
- package/dist/server/gesture-features.js +29 -0
- package/dist/server/gesture-features.js.map +1 -0
- package/dist/server/gesture-info.js +43 -0
- package/dist/server/gesture-info.js.map +1 -0
- package/dist/server/hover-sensor.js +29 -0
- package/dist/server/hover-sensor.js.map +1 -0
- package/dist/server/imperative.js +614 -0
- package/dist/server/imperative.js.map +1 -0
- package/dist/server/index.js +165 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/instant.js +51 -0
- package/dist/server/instant.js.map +1 -0
- package/dist/server/layout-group.js +27 -0
- package/dist/server/layout-group.js.map +1 -0
- package/dist/server/layout-member.js +362 -0
- package/dist/server/layout-member.js.map +1 -0
- package/dist/server/layout-projection.js +19 -0
- package/dist/server/layout-projection.js.map +1 -0
- package/dist/server/layout.js +90 -0
- package/dist/server/layout.js.map +1 -0
- package/dist/server/live-style.js +313 -0
- package/dist/server/live-style.js.map +1 -0
- package/dist/server/live-value.js +252 -0
- package/dist/server/live-value.js.map +1 -0
- package/dist/server/motion-props.js +172 -0
- package/dist/server/motion-props.js.map +1 -0
- package/dist/server/owner-scope.js +29 -0
- package/dist/server/owner-scope.js.map +1 -0
- package/dist/server/page-point.js +92 -0
- package/dist/server/page-point.js.map +1 -0
- package/dist/server/presence-controller.js +1324 -0
- package/dist/server/presence-controller.js.map +1 -0
- package/dist/server/presence-record.js +27 -0
- package/dist/server/presence-record.js.map +1 -0
- package/dist/server/presence.js +207 -0
- package/dist/server/presence.js.map +1 -0
- package/dist/server/press-sensor.js +30 -0
- package/dist/server/press-sensor.js.map +1 -0
- package/dist/server/press.js +24 -0
- package/dist/server/press.js.map +1 -0
- package/dist/server/provider.js +439 -0
- package/dist/server/provider.js.map +1 -0
- package/dist/server/reactivity.js +9 -0
- package/dist/server/reactivity.js.map +1 -0
- package/dist/server/reorder-input.js +46 -0
- package/dist/server/reorder-input.js.map +1 -0
- package/dist/server/reorder.js +543 -0
- package/dist/server/reorder.js.map +1 -0
- package/dist/server/retarget-legs.js +1019 -0
- package/dist/server/retarget-legs.js.map +1 -0
- package/dist/server/runtime.js +249 -0
- package/dist/server/runtime.js.map +1 -0
- package/dist/server/sensors.js +172 -0
- package/dist/server/sensors.js.map +1 -0
- package/dist/server/server-interpolators.js +20 -0
- package/dist/server/server-interpolators.js.map +1 -0
- package/dist/server/server.js +20 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/solid-reactivity.js +26 -0
- package/dist/server/solid-reactivity.js.map +1 -0
- package/dist/server/spine.js +2939 -0
- package/dist/server/spine.js.map +1 -0
- package/dist/server/stagger.js +13 -0
- package/dist/server/stagger.js.map +1 -0
- package/dist/server/unstable/v2/bridge.js +76 -0
- package/dist/server/unstable/v2/bridge.js.map +1 -0
- package/dist/server/unstable/v2/complete.js +29 -0
- package/dist/server/unstable/v2/complete.js.map +1 -0
- package/dist/server/unstable/v2/config-view.js +111 -0
- package/dist/server/unstable/v2/config-view.js.map +1 -0
- package/dist/server/unstable/v2/create-animate.js +102 -0
- package/dist/server/unstable/v2/create-animate.js.map +1 -0
- package/dist/server/unstable/v2/cycle.js +30 -0
- package/dist/server/unstable/v2/cycle.js.map +1 -0
- package/dist/server/unstable/v2/drag-sensor.js +34 -0
- package/dist/server/unstable/v2/drag-sensor.js.map +1 -0
- package/dist/server/unstable/v2/element.js +402 -0
- package/dist/server/unstable/v2/element.js.map +1 -0
- package/dist/server/unstable/v2/feature-section.js +27 -0
- package/dist/server/unstable/v2/feature-section.js.map +1 -0
- package/dist/server/unstable/v2/focus-sensor.js +23 -0
- package/dist/server/unstable/v2/focus-sensor.js.map +1 -0
- package/dist/server/unstable/v2/hover-sensor.js +28 -0
- package/dist/server/unstable/v2/hover-sensor.js.map +1 -0
- package/dist/server/unstable/v2/index.js +114 -0
- package/dist/server/unstable/v2/index.js.map +1 -0
- package/dist/server/unstable/v2/layout-projection.js +18 -0
- package/dist/server/unstable/v2/layout-projection.js.map +1 -0
- package/dist/server/unstable/v2/layout.js +88 -0
- package/dist/server/unstable/v2/layout.js.map +1 -0
- package/dist/server/unstable/v2/lifecycle.js +455 -0
- package/dist/server/unstable/v2/lifecycle.js.map +1 -0
- package/dist/server/unstable/v2/live-value.js +264 -0
- package/dist/server/unstable/v2/live-value.js.map +1 -0
- package/dist/server/unstable/v2/presence-handle.js +146 -0
- package/dist/server/unstable/v2/presence-handle.js.map +1 -0
- package/dist/server/unstable/v2/presence-hooks.js +142 -0
- package/dist/server/unstable/v2/presence-hooks.js.map +1 -0
- package/dist/server/unstable/v2/presence.js +142 -0
- package/dist/server/unstable/v2/presence.js.map +1 -0
- package/dist/server/unstable/v2/press-sensor.js +29 -0
- package/dist/server/unstable/v2/press-sensor.js.map +1 -0
- package/dist/server/unstable/v2/provider.js +475 -0
- package/dist/server/unstable/v2/provider.js.map +1 -0
- package/dist/server/unstable/v2/reorder.js +733 -0
- package/dist/server/unstable/v2/reorder.js.map +1 -0
- package/dist/server/unstable/v2/sensors.js +138 -0
- package/dist/server/unstable/v2/sensors.js.map +1 -0
- package/dist/server/unstable/v2/solid-reactivity.js +82 -0
- package/dist/server/unstable/v2/solid-reactivity.js.map +1 -0
- package/dist/server/unstable/v2/variant-node.js +395 -0
- package/dist/server/unstable/v2/variant-node.js.map +1 -0
- package/dist/server/unstable/v2/w.js +23 -0
- package/dist/server/unstable/v2/w.js.map +1 -0
- package/dist/server/unstable/v2/waiters.js +185 -0
- package/dist/server/unstable/v2/waiters.js.map +1 -0
- package/dist/server/unstable/v2/ward.js +1653 -0
- package/dist/server/unstable/v2/ward.js.map +1 -0
- package/dist/server/unstable/v2/wardic-config.js +49 -0
- package/dist/server/unstable/v2/wardic-config.js.map +1 -0
- package/dist/server/unstable/v2/wardic.js +16 -0
- package/dist/server/unstable/v2/wardic.js.map +1 -0
- package/dist/server/variant-node.js +308 -0
- package/dist/server/variant-node.js.map +1 -0
- package/dist/server/variant-target.js +224 -0
- package/dist/server/variant-target.js.map +1 -0
- package/dist/server/variant-tree.js +394 -0
- package/dist/server/variant-tree.js.map +1 -0
- package/dist/server/variants.js +43 -0
- package/dist/server/variants.js.map +1 -0
- package/dist/server/w.js +25 -0
- package/dist/server/w.js.map +1 -0
- package/dist/server/ward-keys.js +2 -0
- package/dist/server/ward-keys.js.map +1 -0
- package/dist/server/wardic-component.js +74 -0
- package/dist/server/wardic-component.js.map +1 -0
- package/dist/server/wardic-config-value.js +91 -0
- package/dist/server/wardic-config-value.js.map +1 -0
- package/dist/server/wardic-config.js +42 -0
- package/dist/server/wardic-config.js.map +1 -0
- package/dist/server/wardic.js +31 -0
- package/dist/server/wardic.js.map +1 -0
- package/dist/solid/animation-controls.d.ts +104 -0
- package/dist/solid/animation-controls.d.ts.map +1 -0
- package/dist/solid/animation-controls.js +129 -0
- package/dist/solid/animation-controls.js.map +1 -0
- package/dist/solid/animation-frame.d.ts +11 -0
- package/dist/solid/animation-frame.d.ts.map +1 -0
- package/dist/solid/animation-frame.js +31 -0
- package/dist/solid/animation-frame.js.map +1 -0
- package/dist/solid/appear.d.ts +205 -0
- package/dist/solid/appear.d.ts.map +1 -0
- package/dist/solid/appear.js +519 -0
- package/dist/solid/appear.js.map +1 -0
- package/dist/solid/arc.d.ts +25 -0
- package/dist/solid/arc.d.ts.map +1 -0
- package/dist/solid/arc.js +21 -0
- package/dist/solid/arc.js.map +1 -0
- package/dist/solid/bridge.d.ts +53 -0
- package/dist/solid/bridge.d.ts.map +1 -0
- package/dist/solid/bridge.js +66 -0
- package/dist/solid/bridge.js.map +1 -0
- package/dist/solid/complete.d.ts +31 -0
- package/dist/solid/complete.d.ts.map +1 -0
- package/dist/solid/complete.js +27 -0
- package/dist/solid/complete.js.map +1 -0
- package/dist/solid/config.d.ts +693 -0
- package/dist/solid/config.d.ts.map +1 -0
- package/dist/solid/config.js +2 -0
- package/dist/solid/config.js.map +1 -0
- package/dist/solid/create-animate.d.ts +17 -0
- package/dist/solid/create-animate.d.ts.map +1 -0
- package/dist/solid/create-animate.js +42 -0
- package/dist/solid/create-animate.js.map +1 -0
- package/dist/solid/create-ward.d.ts +278 -0
- package/dist/solid/create-ward.d.ts.map +1 -0
- package/dist/solid/create-ward.jsx +874 -0
- package/dist/solid/create-ward.jsx.map +1 -0
- package/dist/solid/cycle-index.d.ts +7 -0
- package/dist/solid/cycle-index.d.ts.map +1 -0
- package/dist/solid/cycle-index.js +17 -0
- package/dist/solid/cycle-index.js.map +1 -0
- package/dist/solid/cycle.d.ts +21 -0
- package/dist/solid/cycle.d.ts.map +1 -0
- package/dist/solid/cycle.js +31 -0
- package/dist/solid/cycle.js.map +1 -0
- package/dist/solid/directive.d.ts +21 -0
- package/dist/solid/directive.d.ts.map +1 -0
- package/dist/solid/directive.js +76 -0
- package/dist/solid/directive.js.map +1 -0
- package/dist/solid/drag-constraints.d.ts +46 -0
- package/dist/solid/drag-constraints.d.ts.map +1 -0
- package/dist/solid/drag-constraints.js +49 -0
- package/dist/solid/drag-constraints.js.map +1 -0
- package/dist/solid/drag-controls.d.ts +50 -0
- package/dist/solid/drag-controls.d.ts.map +1 -0
- package/dist/solid/drag-controls.js +51 -0
- package/dist/solid/drag-controls.js.map +1 -0
- package/dist/solid/drag-samples.d.ts +34 -0
- package/dist/solid/drag-samples.d.ts.map +1 -0
- package/dist/solid/drag-samples.js +28 -0
- package/dist/solid/drag-samples.js.map +1 -0
- package/dist/solid/drag-sensor.d.ts +23 -0
- package/dist/solid/drag-sensor.d.ts.map +1 -0
- package/dist/solid/drag-sensor.js +33 -0
- package/dist/solid/drag-sensor.js.map +1 -0
- package/dist/solid/drag-track.d.ts +227 -0
- package/dist/solid/drag-track.d.ts.map +1 -0
- package/dist/solid/drag-track.js +631 -0
- package/dist/solid/drag-track.js.map +1 -0
- package/dist/solid/drag-transition.d.ts +20 -0
- package/dist/solid/drag-transition.d.ts.map +1 -0
- package/dist/solid/drag-transition.js +31 -0
- package/dist/solid/drag-transition.js.map +1 -0
- package/dist/solid/drag.d.ts +23 -0
- package/dist/solid/drag.d.ts.map +1 -0
- package/dist/solid/drag.js +44 -0
- package/dist/solid/drag.js.map +1 -0
- package/dist/solid/element-style.d.ts +60 -0
- package/dist/solid/element-style.d.ts.map +1 -0
- package/dist/solid/element-style.js +50 -0
- package/dist/solid/element-style.js.map +1 -0
- package/dist/solid/element.d.ts +73 -0
- package/dist/solid/element.d.ts.map +1 -0
- package/dist/solid/element.jsx +326 -0
- package/dist/solid/element.jsx.map +1 -0
- package/dist/solid/feature-section.d.ts +18 -0
- package/dist/solid/feature-section.d.ts.map +1 -0
- package/dist/solid/feature-section.js +13 -0
- package/dist/solid/feature-section.js.map +1 -0
- package/dist/solid/feature.d.ts +114 -0
- package/dist/solid/feature.d.ts.map +1 -0
- package/dist/solid/feature.js +248 -0
- package/dist/solid/feature.js.map +1 -0
- package/dist/solid/features/all.d.ts +10 -0
- package/dist/solid/features/all.d.ts.map +1 -0
- package/dist/solid/features/all.js +10 -0
- package/dist/solid/features/all.js.map +1 -0
- package/dist/solid/features/colors.d.ts +12 -0
- package/dist/solid/features/colors.d.ts.map +1 -0
- package/dist/solid/features/colors.js +34 -0
- package/dist/solid/features/colors.js.map +1 -0
- package/dist/solid/features/dom-animation.d.ts +11 -0
- package/dist/solid/features/dom-animation.d.ts.map +1 -0
- package/dist/solid/features/dom-animation.js +7 -0
- package/dist/solid/features/dom-animation.js.map +1 -0
- package/dist/solid/features/dom-max.d.ts +10 -0
- package/dist/solid/features/dom-max.d.ts.map +1 -0
- package/dist/solid/features/dom-max.js +4 -0
- package/dist/solid/features/dom-max.js.map +1 -0
- package/dist/solid/features/drag.d.ts +5 -0
- package/dist/solid/features/drag.d.ts.map +1 -0
- package/dist/solid/features/drag.js +28 -0
- package/dist/solid/features/drag.js.map +1 -0
- package/dist/solid/features/focus.d.ts +5 -0
- package/dist/solid/features/focus.d.ts.map +1 -0
- package/dist/solid/features/focus.js +16 -0
- package/dist/solid/features/focus.js.map +1 -0
- package/dist/solid/features/hover.d.ts +5 -0
- package/dist/solid/features/hover.d.ts.map +1 -0
- package/dist/solid/features/hover.js +16 -0
- package/dist/solid/features/hover.js.map +1 -0
- package/dist/solid/features/in-view.d.ts +5 -0
- package/dist/solid/features/in-view.d.ts.map +1 -0
- package/dist/solid/features/in-view.js +16 -0
- package/dist/solid/features/in-view.js.map +1 -0
- package/dist/solid/features/input.d.ts +26 -0
- package/dist/solid/features/input.d.ts.map +1 -0
- package/dist/solid/features/input.js +31 -0
- package/dist/solid/features/input.js.map +1 -0
- package/dist/solid/features/keys.d.ts +70 -0
- package/dist/solid/features/keys.d.ts.map +1 -0
- package/dist/solid/features/keys.js +26 -0
- package/dist/solid/features/keys.js.map +1 -0
- package/dist/solid/features/layout.d.ts +32 -0
- package/dist/solid/features/layout.d.ts.map +1 -0
- package/dist/solid/features/layout.js +34 -0
- package/dist/solid/features/layout.js.map +1 -0
- package/dist/solid/features/pan.d.ts +5 -0
- package/dist/solid/features/pan.d.ts.map +1 -0
- package/dist/solid/features/pan.js +16 -0
- package/dist/solid/features/pan.js.map +1 -0
- package/dist/solid/features/press.d.ts +11 -0
- package/dist/solid/features/press.d.ts.map +1 -0
- package/dist/solid/features/press.js +10 -0
- package/dist/solid/features/press.js.map +1 -0
- package/dist/solid/focus-sensor.d.ts +19 -0
- package/dist/solid/focus-sensor.d.ts.map +1 -0
- package/dist/solid/focus-sensor.js +23 -0
- package/dist/solid/focus-sensor.js.map +1 -0
- package/dist/solid/frame-time.d.ts +21 -0
- package/dist/solid/frame-time.d.ts.map +1 -0
- package/dist/solid/frame-time.js +41 -0
- package/dist/solid/frame-time.js.map +1 -0
- package/dist/solid/gesture-callbacks.d.ts +53 -0
- package/dist/solid/gesture-callbacks.d.ts.map +1 -0
- package/dist/solid/gesture-callbacks.js +184 -0
- package/dist/solid/gesture-callbacks.js.map +1 -0
- package/dist/solid/gesture-features.d.ts +28 -0
- package/dist/solid/gesture-features.d.ts.map +1 -0
- package/dist/solid/gesture-features.js +29 -0
- package/dist/solid/gesture-features.js.map +1 -0
- package/dist/solid/gesture-info.d.ts +59 -0
- package/dist/solid/gesture-info.d.ts.map +1 -0
- package/dist/solid/gesture-info.js +23 -0
- package/dist/solid/gesture-info.js.map +1 -0
- package/dist/solid/hover-sensor.d.ts +19 -0
- package/dist/solid/hover-sensor.d.ts.map +1 -0
- package/dist/solid/hover-sensor.js +23 -0
- package/dist/solid/hover-sensor.js.map +1 -0
- package/dist/solid/imperative.d.ts +195 -0
- package/dist/solid/imperative.d.ts.map +1 -0
- package/dist/solid/imperative.js +536 -0
- package/dist/solid/imperative.js.map +1 -0
- package/dist/solid/index.d.ts +180 -0
- package/dist/solid/index.d.ts.map +1 -0
- package/dist/solid/index.js +165 -0
- package/dist/solid/index.js.map +1 -0
- package/dist/solid/instant.d.ts +44 -0
- package/dist/solid/instant.d.ts.map +1 -0
- package/dist/solid/instant.js +49 -0
- package/dist/solid/instant.js.map +1 -0
- package/dist/solid/layout-group.d.ts +14 -0
- package/dist/solid/layout-group.d.ts.map +1 -0
- package/dist/solid/layout-group.js +27 -0
- package/dist/solid/layout-group.js.map +1 -0
- package/dist/solid/layout-member.d.ts +117 -0
- package/dist/solid/layout-member.d.ts.map +1 -0
- package/dist/solid/layout-member.js +164 -0
- package/dist/solid/layout-member.js.map +1 -0
- package/dist/solid/layout-projection.d.ts +22 -0
- package/dist/solid/layout-projection.d.ts.map +1 -0
- package/dist/solid/layout-projection.js +19 -0
- package/dist/solid/layout-projection.js.map +1 -0
- package/dist/solid/layout.d.ts +76 -0
- package/dist/solid/layout.d.ts.map +1 -0
- package/dist/solid/layout.jsx +80 -0
- package/dist/solid/layout.jsx.map +1 -0
- package/dist/solid/live-style.d.ts +147 -0
- package/dist/solid/live-style.d.ts.map +1 -0
- package/dist/solid/live-style.js +304 -0
- package/dist/solid/live-style.js.map +1 -0
- package/dist/solid/live-value.d.ts +144 -0
- package/dist/solid/live-value.d.ts.map +1 -0
- package/dist/solid/live-value.js +223 -0
- package/dist/solid/live-value.js.map +1 -0
- package/dist/solid/motion-props.d.ts +75 -0
- package/dist/solid/motion-props.d.ts.map +1 -0
- package/dist/solid/motion-props.js +314 -0
- package/dist/solid/motion-props.js.map +1 -0
- package/dist/solid/owner-scope.d.ts +16 -0
- package/dist/solid/owner-scope.d.ts.map +1 -0
- package/dist/solid/owner-scope.js +31 -0
- package/dist/solid/owner-scope.js.map +1 -0
- package/dist/solid/page-point.d.ts +35 -0
- package/dist/solid/page-point.d.ts.map +1 -0
- package/dist/solid/page-point.js +87 -0
- package/dist/solid/page-point.js.map +1 -0
- package/dist/solid/presence-controller.d.ts +122 -0
- package/dist/solid/presence-controller.d.ts.map +1 -0
- package/dist/solid/presence-controller.js +1207 -0
- package/dist/solid/presence-controller.js.map +1 -0
- package/dist/solid/presence-record.d.ts +167 -0
- package/dist/solid/presence-record.d.ts.map +1 -0
- package/dist/solid/presence-record.js +26 -0
- package/dist/solid/presence-record.js.map +1 -0
- package/dist/solid/presence.d.ts +95 -0
- package/dist/solid/presence.d.ts.map +1 -0
- package/dist/solid/presence.jsx +195 -0
- package/dist/solid/presence.jsx.map +1 -0
- package/dist/solid/press-sensor.d.ts +20 -0
- package/dist/solid/press-sensor.d.ts.map +1 -0
- package/dist/solid/press-sensor.js +24 -0
- package/dist/solid/press-sensor.js.map +1 -0
- package/dist/solid/press.d.ts +24 -0
- package/dist/solid/press.d.ts.map +1 -0
- package/dist/solid/press.js +19 -0
- package/dist/solid/press.js.map +1 -0
- package/dist/solid/provider.d.ts +263 -0
- package/dist/solid/provider.d.ts.map +1 -0
- package/dist/solid/provider.jsx +411 -0
- package/dist/solid/provider.jsx.map +1 -0
- package/dist/solid/reactivity.d.ts +27 -0
- package/dist/solid/reactivity.d.ts.map +1 -0
- package/dist/solid/reactivity.js +9 -0
- package/dist/solid/reactivity.js.map +1 -0
- package/dist/solid/reorder-input.d.ts +22 -0
- package/dist/solid/reorder-input.d.ts.map +1 -0
- package/dist/solid/reorder-input.js +45 -0
- package/dist/solid/reorder-input.js.map +1 -0
- package/dist/solid/reorder.d.ts +241 -0
- package/dist/solid/reorder.d.ts.map +1 -0
- package/dist/solid/reorder.jsx +427 -0
- package/dist/solid/reorder.jsx.map +1 -0
- package/dist/solid/retarget-legs.d.ts +189 -0
- package/dist/solid/retarget-legs.d.ts.map +1 -0
- package/dist/solid/retarget-legs.js +825 -0
- package/dist/solid/retarget-legs.js.map +1 -0
- package/dist/solid/runtime.d.ts +179 -0
- package/dist/solid/runtime.d.ts.map +1 -0
- package/dist/solid/runtime.js +237 -0
- package/dist/solid/runtime.js.map +1 -0
- package/dist/solid/sensors.d.ts +95 -0
- package/dist/solid/sensors.d.ts.map +1 -0
- package/dist/solid/sensors.js +154 -0
- package/dist/solid/sensors.js.map +1 -0
- package/dist/solid/server-interpolators.d.ts +13 -0
- package/dist/solid/server-interpolators.d.ts.map +1 -0
- package/dist/solid/server-interpolators.js +20 -0
- package/dist/solid/server-interpolators.js.map +1 -0
- package/dist/solid/server.d.ts +9 -0
- package/dist/solid/server.d.ts.map +1 -0
- package/dist/solid/server.js +20 -0
- package/dist/solid/server.js.map +1 -0
- package/dist/solid/solid-reactivity.d.ts +3 -0
- package/dist/solid/solid-reactivity.d.ts.map +1 -0
- package/dist/solid/solid-reactivity.js +19 -0
- package/dist/solid/solid-reactivity.js.map +1 -0
- package/dist/solid/spine.d.ts +597 -0
- package/dist/solid/spine.d.ts.map +1 -0
- package/dist/solid/spine.js +2761 -0
- package/dist/solid/spine.js.map +1 -0
- package/dist/solid/stagger.d.ts +29 -0
- package/dist/solid/stagger.d.ts.map +1 -0
- package/dist/solid/stagger.js +13 -0
- package/dist/solid/stagger.js.map +1 -0
- package/dist/solid/unstable/v2/bridge.d.ts +33 -0
- package/dist/solid/unstable/v2/bridge.d.ts.map +1 -0
- package/dist/solid/unstable/v2/bridge.js +76 -0
- package/dist/solid/unstable/v2/bridge.js.map +1 -0
- package/dist/solid/unstable/v2/complete.d.ts +21 -0
- package/dist/solid/unstable/v2/complete.d.ts.map +1 -0
- package/dist/solid/unstable/v2/complete.js +27 -0
- package/dist/solid/unstable/v2/complete.js.map +1 -0
- package/dist/solid/unstable/v2/config-view.d.ts +49 -0
- package/dist/solid/unstable/v2/config-view.d.ts.map +1 -0
- package/dist/solid/unstable/v2/config-view.js +114 -0
- package/dist/solid/unstable/v2/config-view.js.map +1 -0
- package/dist/solid/unstable/v2/create-animate.d.ts +31 -0
- package/dist/solid/unstable/v2/create-animate.d.ts.map +1 -0
- package/dist/solid/unstable/v2/create-animate.js +102 -0
- package/dist/solid/unstable/v2/create-animate.js.map +1 -0
- package/dist/solid/unstable/v2/cycle.d.ts +20 -0
- package/dist/solid/unstable/v2/cycle.d.ts.map +1 -0
- package/dist/solid/unstable/v2/cycle.js +30 -0
- package/dist/solid/unstable/v2/cycle.js.map +1 -0
- package/dist/solid/unstable/v2/drag-sensor.d.ts +23 -0
- package/dist/solid/unstable/v2/drag-sensor.d.ts.map +1 -0
- package/dist/solid/unstable/v2/drag-sensor.js +32 -0
- package/dist/solid/unstable/v2/drag-sensor.js.map +1 -0
- package/dist/solid/unstable/v2/element.d.ts +178 -0
- package/dist/solid/unstable/v2/element.d.ts.map +1 -0
- package/dist/solid/unstable/v2/element.jsx +325 -0
- package/dist/solid/unstable/v2/element.jsx.map +1 -0
- package/dist/solid/unstable/v2/feature-section.d.ts +12 -0
- package/dist/solid/unstable/v2/feature-section.d.ts.map +1 -0
- package/dist/solid/unstable/v2/feature-section.js +23 -0
- package/dist/solid/unstable/v2/feature-section.js.map +1 -0
- package/dist/solid/unstable/v2/focus-sensor.d.ts +13 -0
- package/dist/solid/unstable/v2/focus-sensor.d.ts.map +1 -0
- package/dist/solid/unstable/v2/focus-sensor.js +23 -0
- package/dist/solid/unstable/v2/focus-sensor.js.map +1 -0
- package/dist/solid/unstable/v2/hover-sensor.d.ts +12 -0
- package/dist/solid/unstable/v2/hover-sensor.d.ts.map +1 -0
- package/dist/solid/unstable/v2/hover-sensor.js +22 -0
- package/dist/solid/unstable/v2/hover-sensor.js.map +1 -0
- package/dist/solid/unstable/v2/index.d.ts +131 -0
- package/dist/solid/unstable/v2/index.d.ts.map +1 -0
- package/dist/solid/unstable/v2/index.js +114 -0
- package/dist/solid/unstable/v2/index.js.map +1 -0
- package/dist/solid/unstable/v2/layout-projection.d.ts +21 -0
- package/dist/solid/unstable/v2/layout-projection.d.ts.map +1 -0
- package/dist/solid/unstable/v2/layout-projection.js +18 -0
- package/dist/solid/unstable/v2/layout-projection.js.map +1 -0
- package/dist/solid/unstable/v2/layout.d.ts +47 -0
- package/dist/solid/unstable/v2/layout.d.ts.map +1 -0
- package/dist/solid/unstable/v2/layout.jsx +62 -0
- package/dist/solid/unstable/v2/layout.jsx.map +1 -0
- package/dist/solid/unstable/v2/lifecycle.d.ts +267 -0
- package/dist/solid/unstable/v2/lifecycle.d.ts.map +1 -0
- package/dist/solid/unstable/v2/lifecycle.js +457 -0
- package/dist/solid/unstable/v2/lifecycle.js.map +1 -0
- package/dist/solid/unstable/v2/live-value.d.ts +146 -0
- package/dist/solid/unstable/v2/live-value.d.ts.map +1 -0
- package/dist/solid/unstable/v2/live-value.js +235 -0
- package/dist/solid/unstable/v2/live-value.js.map +1 -0
- package/dist/solid/unstable/v2/presence-handle.d.ts +55 -0
- package/dist/solid/unstable/v2/presence-handle.d.ts.map +1 -0
- package/dist/solid/unstable/v2/presence-handle.js +119 -0
- package/dist/solid/unstable/v2/presence-handle.js.map +1 -0
- package/dist/solid/unstable/v2/presence-hooks.d.ts +51 -0
- package/dist/solid/unstable/v2/presence-hooks.d.ts.map +1 -0
- package/dist/solid/unstable/v2/presence-hooks.js +115 -0
- package/dist/solid/unstable/v2/presence-hooks.js.map +1 -0
- package/dist/solid/unstable/v2/presence.d.ts +89 -0
- package/dist/solid/unstable/v2/presence.d.ts.map +1 -0
- package/dist/solid/unstable/v2/presence.jsx +107 -0
- package/dist/solid/unstable/v2/presence.jsx.map +1 -0
- package/dist/solid/unstable/v2/press-sensor.d.ts +13 -0
- package/dist/solid/unstable/v2/press-sensor.d.ts.map +1 -0
- package/dist/solid/unstable/v2/press-sensor.js +23 -0
- package/dist/solid/unstable/v2/press-sensor.js.map +1 -0
- package/dist/solid/unstable/v2/provider.d.ts +239 -0
- package/dist/solid/unstable/v2/provider.d.ts.map +1 -0
- package/dist/solid/unstable/v2/provider.jsx +423 -0
- package/dist/solid/unstable/v2/provider.jsx.map +1 -0
- package/dist/solid/unstable/v2/reorder.d.ts +292 -0
- package/dist/solid/unstable/v2/reorder.d.ts.map +1 -0
- package/dist/solid/unstable/v2/reorder.jsx +525 -0
- package/dist/solid/unstable/v2/reorder.jsx.map +1 -0
- package/dist/solid/unstable/v2/sensors.d.ts +91 -0
- package/dist/solid/unstable/v2/sensors.d.ts.map +1 -0
- package/dist/solid/unstable/v2/sensors.js +124 -0
- package/dist/solid/unstable/v2/sensors.js.map +1 -0
- package/dist/solid/unstable/v2/solid-reactivity.d.ts +61 -0
- package/dist/solid/unstable/v2/solid-reactivity.d.ts.map +1 -0
- package/dist/solid/unstable/v2/solid-reactivity.js +62 -0
- package/dist/solid/unstable/v2/solid-reactivity.js.map +1 -0
- package/dist/solid/unstable/v2/variant-node.d.ts +51 -0
- package/dist/solid/unstable/v2/variant-node.d.ts.map +1 -0
- package/dist/solid/unstable/v2/variant-node.js +336 -0
- package/dist/solid/unstable/v2/variant-node.js.map +1 -0
- package/dist/solid/unstable/v2/w.d.ts +42 -0
- package/dist/solid/unstable/v2/w.d.ts.map +1 -0
- package/dist/solid/unstable/v2/w.jsx +22 -0
- package/dist/solid/unstable/v2/w.jsx.map +1 -0
- package/dist/solid/unstable/v2/waiters.d.ts +72 -0
- package/dist/solid/unstable/v2/waiters.d.ts.map +1 -0
- package/dist/solid/unstable/v2/waiters.js +175 -0
- package/dist/solid/unstable/v2/waiters.js.map +1 -0
- package/dist/solid/unstable/v2/ward.d.ts +393 -0
- package/dist/solid/unstable/v2/ward.d.ts.map +1 -0
- package/dist/solid/unstable/v2/ward.jsx +1475 -0
- package/dist/solid/unstable/v2/ward.jsx.map +1 -0
- package/dist/solid/unstable/v2/wardic-config.d.ts +68 -0
- package/dist/solid/unstable/v2/wardic-config.d.ts.map +1 -0
- package/dist/solid/unstable/v2/wardic-config.jsx +28 -0
- package/dist/solid/unstable/v2/wardic-config.jsx.map +1 -0
- package/dist/solid/unstable/v2/wardic.d.ts +28 -0
- package/dist/solid/unstable/v2/wardic.d.ts.map +1 -0
- package/dist/solid/unstable/v2/wardic.jsx +16 -0
- package/dist/solid/unstable/v2/wardic.jsx.map +1 -0
- package/dist/solid/variant-node.d.ts +32 -0
- package/dist/solid/variant-node.d.ts.map +1 -0
- package/dist/solid/variant-node.js +257 -0
- package/dist/solid/variant-node.js.map +1 -0
- package/dist/solid/variant-target.d.ts +102 -0
- package/dist/solid/variant-target.d.ts.map +1 -0
- package/dist/solid/variant-target.js +180 -0
- package/dist/solid/variant-target.js.map +1 -0
- package/dist/solid/variant-tree.d.ts +349 -0
- package/dist/solid/variant-tree.d.ts.map +1 -0
- package/dist/solid/variant-tree.js +358 -0
- package/dist/solid/variant-tree.js.map +1 -0
- package/dist/solid/variants.d.ts +21 -0
- package/dist/solid/variants.d.ts.map +1 -0
- package/dist/solid/variants.js +43 -0
- package/dist/solid/variants.js.map +1 -0
- package/dist/solid/w.d.ts +42 -0
- package/dist/solid/w.d.ts.map +1 -0
- package/dist/solid/w.jsx +23 -0
- package/dist/solid/w.jsx.map +1 -0
- package/dist/solid/ward-keys.d.ts +236 -0
- package/dist/solid/ward-keys.d.ts.map +1 -0
- package/dist/solid/ward-keys.js +2 -0
- package/dist/solid/ward-keys.js.map +1 -0
- package/dist/solid/wardic-component.d.ts +50 -0
- package/dist/solid/wardic-component.d.ts.map +1 -0
- package/dist/solid/wardic-component.js +74 -0
- package/dist/solid/wardic-component.js.map +1 -0
- package/dist/solid/wardic-config-value.d.ts +87 -0
- package/dist/solid/wardic-config-value.d.ts.map +1 -0
- package/dist/solid/wardic-config-value.js +106 -0
- package/dist/solid/wardic-config-value.js.map +1 -0
- package/dist/solid/wardic-config.d.ts +69 -0
- package/dist/solid/wardic-config.d.ts.map +1 -0
- package/dist/solid/wardic-config.jsx +30 -0
- package/dist/solid/wardic-config.jsx.map +1 -0
- package/dist/solid/wardic.d.ts +45 -0
- package/dist/solid/wardic.d.ts.map +1 -0
- package/dist/solid/wardic.jsx +31 -0
- package/dist/solid/wardic.jsx.map +1 -0
- package/package.json +98 -4
- package/src/animation-controls.ts +204 -0
- package/src/animation-frame.ts +32 -0
- package/src/appear.ts +804 -0
- package/src/arc.ts +34 -0
- package/src/bridge.ts +98 -0
- package/src/complete.ts +45 -0
- package/src/config.ts +805 -0
- package/src/create-animate.ts +41 -0
- package/src/create-ward.tsx +1271 -0
- package/src/cycle-index.ts +18 -0
- package/src/cycle.ts +34 -0
- package/src/directive.ts +87 -0
- package/src/drag-constraints.ts +103 -0
- package/src/drag-controls.ts +94 -0
- package/src/drag-samples.ts +54 -0
- package/src/drag-sensor.ts +46 -0
- package/src/drag-track.ts +937 -0
- package/src/drag-transition.ts +43 -0
- package/src/drag.ts +58 -0
- package/src/element-style.ts +112 -0
- package/src/element.tsx +400 -0
- package/src/feature-section.ts +33 -0
- package/src/feature.ts +342 -0
- package/src/features/all.ts +18 -0
- package/src/features/colors.ts +36 -0
- package/src/features/dom-animation.ts +15 -0
- package/src/features/dom-max.ts +11 -0
- package/src/features/drag.ts +30 -0
- package/src/features/focus.ts +17 -0
- package/src/features/hover.ts +17 -0
- package/src/features/in-view.ts +17 -0
- package/src/features/input.ts +42 -0
- package/src/features/keys.ts +89 -0
- package/src/features/layout.ts +54 -0
- package/src/features/pan.ts +17 -0
- package/src/features/press.ts +17 -0
- package/src/focus-sensor.ts +32 -0
- package/src/frame-time.ts +45 -0
- package/src/gesture-callbacks.ts +212 -0
- package/src/gesture-features.ts +35 -0
- package/src/gesture-info.ts +81 -0
- package/src/hover-sensor.ts +32 -0
- package/src/imperative.ts +782 -0
- package/src/index.ts +334 -0
- package/src/instant.ts +90 -0
- package/src/layout-group.ts +32 -0
- package/src/layout-member.ts +300 -0
- package/src/layout-projection.ts +28 -0
- package/src/layout.tsx +127 -0
- package/src/live-style.ts +449 -0
- package/src/live-value.ts +378 -0
- package/src/motion-props.ts +325 -0
- package/src/owner-scope.ts +31 -0
- package/src/page-point.ts +98 -0
- package/src/presence-controller.ts +1483 -0
- package/src/presence-record.ts +189 -0
- package/src/presence.tsx +269 -0
- package/src/press-sensor.ts +33 -0
- package/src/press.ts +40 -0
- package/src/provider.tsx +526 -0
- package/src/reactivity.ts +29 -0
- package/src/reorder-input.ts +53 -0
- package/src/reorder.tsx +703 -0
- package/src/retarget-legs.ts +1048 -0
- package/src/runtime.ts +388 -0
- package/src/sensors.ts +189 -0
- package/src/server-interpolators.ts +33 -0
- package/src/server.ts +21 -0
- package/src/solid-reactivity.ts +21 -0
- package/src/spine.ts +3385 -0
- package/src/stagger.ts +31 -0
- package/src/unstable/v2/bridge.ts +79 -0
- package/src/unstable/v2/complete.ts +47 -0
- package/src/unstable/v2/config-view.ts +156 -0
- package/src/unstable/v2/create-animate.ts +123 -0
- package/src/unstable/v2/cycle.ts +33 -0
- package/src/unstable/v2/drag-sensor.ts +44 -0
- package/src/unstable/v2/element.tsx +478 -0
- package/src/unstable/v2/feature-section.ts +32 -0
- package/src/unstable/v2/focus-sensor.ts +31 -0
- package/src/unstable/v2/hover-sensor.ts +30 -0
- package/src/unstable/v2/index.ts +270 -0
- package/src/unstable/v2/layout-projection.ts +27 -0
- package/src/unstable/v2/layout.tsx +89 -0
- package/src/unstable/v2/lifecycle.ts +612 -0
- package/src/unstable/v2/live-value.ts +414 -0
- package/src/unstable/v2/presence-handle.ts +159 -0
- package/src/unstable/v2/presence-hooks.ts +157 -0
- package/src/unstable/v2/presence.tsx +174 -0
- package/src/unstable/v2/press-sensor.ts +31 -0
- package/src/unstable/v2/provider.tsx +524 -0
- package/src/unstable/v2/reorder.tsx +880 -0
- package/src/unstable/v2/sensors.ts +169 -0
- package/src/unstable/v2/solid-reactivity.ts +69 -0
- package/src/unstable/v2/variant-node.ts +446 -0
- package/src/unstable/v2/w.tsx +49 -0
- package/src/unstable/v2/waiters.ts +212 -0
- package/src/unstable/v2/ward.tsx +2068 -0
- package/src/unstable/v2/wardic-config.tsx +84 -0
- package/src/unstable/v2/wardic.tsx +41 -0
- package/src/variant-node.ts +368 -0
- package/src/variant-target.ts +234 -0
- package/src/variant-tree.ts +638 -0
- package/src/variants.ts +47 -0
- package/src/w.tsx +59 -0
- package/src/ward-keys.ts +343 -0
- package/src/wardic-component.ts +96 -0
- package/src/wardic-config-value.ts +150 -0
- package/src/wardic-config.tsx +78 -0
- package/src/wardic.tsx +59 -0
|
@@ -0,0 +1,880 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `<Reorder>` on Solid 2 (#209 PR 3b, ADR-0020, ADR-0037, ADR-0045): drag items to reorder a list,
|
|
3
|
+
* or reorder it by keyboard. `reorderGroup(config)` and `reorderItem(list, config)` are refs that
|
|
4
|
+
* carry their props, as a ward is; `Reorder.Group` and `Reorder.Item` are built on them.
|
|
5
|
+
*
|
|
6
|
+
* ```tsx
|
|
7
|
+
* const list = reorderGroup({ values: items, onReorder: setItems })
|
|
8
|
+
* <ul {...list}>
|
|
9
|
+
* <For each={items()}>
|
|
10
|
+
* {(item) => {
|
|
11
|
+
* const row = reorderItem(list, { value: item, whileDrag: { scale: 1.05 } })
|
|
12
|
+
* return <li {...row}>{item.name}</li>
|
|
13
|
+
* }}
|
|
14
|
+
* </For>
|
|
15
|
+
* </ul>
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* The **Reorder group** is `@wardic/dom`'s `ReorderController` (core's `Reorder.Group` underneath),
|
|
19
|
+
* as on the Solid 1 binding: it reads each item's slot and drag offset from its projection node,
|
|
20
|
+
* runs the **Crossover** on each drag sample, calls the app's `onReorder`, runs **Auto-scroll**,
|
|
21
|
+
* detects the axis after every Measure pass, and speaks the **Keyboard reorder** through the
|
|
22
|
+
* Environment's `Announcer`. This file adds Solid 2's half: the reactive config, the lifecycle, the
|
|
23
|
+
* props and the components. The app owns `values` and keys its items with `<For>`. The group flushes
|
|
24
|
+
* Solid right after the app's `onReorder`, so the DOM follows within the controller's call, as
|
|
25
|
+
* Solid 1's synchronous updates have it.
|
|
26
|
+
*
|
|
27
|
+
* - **The group** spreads `overflow-anchor: none` under the config's `style` (Motion's
|
|
28
|
+
* Group.tsx:187-195 at 16c6122), so the browser's scroll anchoring doesn't shift the page as items
|
|
29
|
+
* move; given to `ref` alone it sets it on the element. `list.move(value, toIndex)` moves a value
|
|
30
|
+
* in code, announced.
|
|
31
|
+
* - **An item** is a ward (`row.read`, `row.atom`, `row.Provider`): a `layout` node whose drag the
|
|
32
|
+
* group's axis decides per gesture, raised while dragged, whose `touch-action` follows the group's
|
|
33
|
+
* axis. Its `value` is read once. Its spread carries the keyboard reorder's `tabindex="0"` and
|
|
34
|
+
* `aria-describedby` (the group's instructions); an app's own `tabindex` and `aria-describedby`
|
|
35
|
+
* go in the item's config, as a ward's `style` does: its `tabindex` wins, its ids come first
|
|
36
|
+
* (#209 PR 3b's R2). Written in JSX after the spread, they'd replace the item's (Solid's rule).
|
|
37
|
+
*
|
|
38
|
+
* @module
|
|
39
|
+
*/
|
|
40
|
+
import * as InputSource from "@wardic/core/InputSource"
|
|
41
|
+
import type * as CoreReorder from "@wardic/core/Reorder"
|
|
42
|
+
import * as DomAnnouncer from "@wardic/dom/DomAnnouncer"
|
|
43
|
+
import * as ReorderController from "@wardic/dom/ReorderController"
|
|
44
|
+
import * as Style from "@wardic/dom/Style"
|
|
45
|
+
import * as Arr from "effect/Array"
|
|
46
|
+
import * as Bool from "effect/Boolean"
|
|
47
|
+
import * as Effect from "effect/Effect"
|
|
48
|
+
import { constUndefined, identity, pipe } from "effect/Function"
|
|
49
|
+
import * as Match from "effect/Match"
|
|
50
|
+
import * as Option from "effect/Option"
|
|
51
|
+
import * as Predicate from "effect/Predicate"
|
|
52
|
+
import * as Scope from "effect/Scope"
|
|
53
|
+
import * as UndefinedOr from "effect/UndefinedOr"
|
|
54
|
+
import { isServer, type JSX } from "@solidjs/web"
|
|
55
|
+
import { type Accessor, type Component, createContext, createEffect, createMemo, createSignal, flush, omit, onCleanup, untrack, useContext } from "solid-js"
|
|
56
|
+
import { MOTION_PROPS_V2 as MOTION_PROPS, type WardicMotionPropsV2 as WardicMotionProps } from "../../motion-props.ts"
|
|
57
|
+
import type { Feature } from "../../feature.ts"
|
|
58
|
+
import { drag } from "../../features/drag.ts"
|
|
59
|
+
import { focus } from "../../features/focus.ts"
|
|
60
|
+
import { hover } from "../../features/hover.ts"
|
|
61
|
+
import { inView } from "../../features/in-view.ts"
|
|
62
|
+
import { layout } from "../../features/layout.ts"
|
|
63
|
+
import { pan } from "../../features/pan.ts"
|
|
64
|
+
import { press } from "../../features/press.ts"
|
|
65
|
+
import { inputIn } from "../../gesture-features.ts"
|
|
66
|
+
import * as OwnerScope from "../../owner-scope.ts"
|
|
67
|
+
import { watchItemInput } from "../../reorder-input.ts"
|
|
68
|
+
import { changesContext } from "../../variant-tree.ts"
|
|
69
|
+
import { configView, type PerKey } from "./config-view.ts"
|
|
70
|
+
import { useBrought, useWardicRuntime } from "./provider.tsx"
|
|
71
|
+
import { useLayoutServices } from "./layout-projection.ts"
|
|
72
|
+
import { type AnyWard, spreadPropsOf, type Ward, withSpreadProps, type WardConfig, type WardConfigValues, wardConfigView, type WardOptions, type WardShare, type WardStyle, wardWith } from "./ward.tsx"
|
|
73
|
+
import { drivenWard, type GivenWard, givenOf, handOver, listOf, refsOf, sets, setKeysOf, staticElementOf, type WardicBeside, type WardicMotion, type WardRefCallback, type WardSetKey } from "./element.tsx"
|
|
74
|
+
import { w } from "./w.tsx"
|
|
75
|
+
import { CLIENT_ONLY, CLIENT_ONLY_DEFERRED } from "./solid-reactivity.ts"
|
|
76
|
+
import { eachOf, neverLands, NO_EVENTS, serverWhen, Waiters, whenOf } from "./waiters.ts"
|
|
77
|
+
|
|
78
|
+
/** A Reorder group's config, each key read as a value. */
|
|
79
|
+
export interface ReorderGroupConfigValues<V> {
|
|
80
|
+
/** The list's values, in order. Your app owns them. */
|
|
81
|
+
readonly values: ReadonlyArray<V>
|
|
82
|
+
/** Given each new order, as an item crosses another: set `values` from it. */
|
|
83
|
+
readonly onReorder: (values: Array<V>) => void
|
|
84
|
+
/** The list's direction: `"y"`, a column, or `"x"`, a row. Left out, it's found from the items' boxes. */
|
|
85
|
+
readonly axis?: CoreReorder.Axis | undefined
|
|
86
|
+
/** The keyboard reorder: on unless `false`. Off, the items have no keys, no tab stop and no instructions. */
|
|
87
|
+
// ADR-0037.
|
|
88
|
+
readonly keyboard?: boolean | undefined
|
|
89
|
+
/**
|
|
90
|
+
* What a screen reader hears at each step of a keyboard reorder, over the English defaults: `lift`,
|
|
91
|
+
* `step`, `drop`, `cancel`, and `move` for a move in code, each a function of the item's `label`,
|
|
92
|
+
* `position` and the list's `count`.
|
|
93
|
+
*/
|
|
94
|
+
readonly announcements?: Partial<CoreReorder.Announcements<V>> | undefined
|
|
95
|
+
/** What each item's `aria-describedby` reads, over the English default. */
|
|
96
|
+
readonly instructions?: string | undefined
|
|
97
|
+
/** The list element's style, over `overflow-anchor: none`. */
|
|
98
|
+
readonly style?: JSX.CSSProperties | string | undefined
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* A Reorder group's config: its `values` in order, `onReorder`, given each new order to set them from,
|
|
103
|
+
* and its options. Each key is a value or an accessor of it, such as a signal, a getter, a store's
|
|
104
|
+
* property or a component's prop; `onReorder` is a function.
|
|
105
|
+
*/
|
|
106
|
+
// Read per key (#259).
|
|
107
|
+
export type ReorderGroupConfig<V> = PerKey<ReorderGroupConfigValues<V>, "onReorder">
|
|
108
|
+
|
|
109
|
+
/** A group's config read per key (#259). */
|
|
110
|
+
const GROUP_VIEW = configView<ReorderGroupConfigValues<unknown>>(["values", "onReorder", "axis", "keyboard", "announcements", "instructions", "style"], ["onReorder"])
|
|
111
|
+
/** A group's config as a view of `config`. */
|
|
112
|
+
const groupViewOf = <V,>(config: ReorderGroupConfig<V>, beside: object): ReorderGroupConfigValues<V> => GROUP_VIEW.of(config, beside) as ReorderGroupConfigValues<V>
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* A group's config as made, and the layer a `Reorder.Group` it's given to lays its element's props in
|
|
116
|
+
* (#398): empty until then, each key it fixes read through the element's prop.
|
|
117
|
+
*/
|
|
118
|
+
interface GroupLayer {
|
|
119
|
+
readonly config: object
|
|
120
|
+
readonly beside: object
|
|
121
|
+
}
|
|
122
|
+
// Module state (#460, Q7): a cache held weakly by the object it's for, so it goes with it.
|
|
123
|
+
const GROUP_LAYERS = new WeakMap<object, GroupLayer>()
|
|
124
|
+
|
|
125
|
+
/** A Reorder group's events, as a ward's: `list.next(name)`, `list.each(name)` and `list.when(name)`. */
|
|
126
|
+
// #257 item 3, ADR-0046.
|
|
127
|
+
export interface ReorderGroupEvents<V> {
|
|
128
|
+
/**
|
|
129
|
+
* Once at the end of a reorder that changed the order: a drag let go, or a keyboard lift dropped,
|
|
130
|
+
* with the order, the item that moved, and its index `from` and `to`. What an app saves. Not for a
|
|
131
|
+
* keyboard cancel, nor for `list.move`.
|
|
132
|
+
*/
|
|
133
|
+
readonly reorderEnd: ReorderController.End<V>
|
|
134
|
+
/**
|
|
135
|
+
* As an item is taken in hand, by a drag starting (past its threshold, not at the press) or a
|
|
136
|
+
* keyboard lift, with its index then.
|
|
137
|
+
*/
|
|
138
|
+
// A Reorder hold's start (#348, ADR-0020 *Amendment (#348)*).
|
|
139
|
+
readonly holdStart: ReorderController.HoldStart<V>
|
|
140
|
+
/**
|
|
141
|
+
* Once as an item in hand is let go, however: let go or dropped (`how: "drop"`), put back with Escape
|
|
142
|
+
* (`"cancel"`), or unmounted (`"unmount"`). After `reorderEnd` when it moved.
|
|
143
|
+
*/
|
|
144
|
+
// A Reorder hold's end (#348).
|
|
145
|
+
readonly holdEnd: ReorderController.HoldEnd<V>
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/** The `AbortError`'s message for a group's `next` its disposal cut off. */
|
|
149
|
+
const GROUP_GONE = "The Reorder group was disposed before its next event."
|
|
150
|
+
|
|
151
|
+
/** What a group's spread gives its element: its `ref`, and its `style` over `overflow-anchor: none`. */
|
|
152
|
+
export interface ReorderGroupProps {
|
|
153
|
+
/** The group: Solid calls it with the element. */
|
|
154
|
+
readonly ref: (element: HTMLElement) => void
|
|
155
|
+
/** The config's `style` over `overflow-anchor: none`. */
|
|
156
|
+
readonly style: JSX.CSSProperties
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* A **Reorder group**'s mark (#349): what tells a group given to `Reorder.Group`'s `groupRef` from a
|
|
161
|
+
* function handed the component's own. Internal.
|
|
162
|
+
*/
|
|
163
|
+
export const REORDER_GROUP: unique symbol = Symbol("wardic.reorderGroup")
|
|
164
|
+
|
|
165
|
+
/** A Reorder group of `V`, whatever its config: what `Reorder.Group`'s `groupRef` takes. */
|
|
166
|
+
// #349.
|
|
167
|
+
export interface AnyReorderGroup<V> {
|
|
168
|
+
readonly [REORDER_GROUP]: V
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* `reorderGroup()`'s group: spread it on the list's element, `<ul {...list}>`, or give it to `ref`.
|
|
173
|
+
* Its items join it, and it gives its direction, `move`, and its events.
|
|
174
|
+
*/
|
|
175
|
+
export interface ReorderGroup<V> extends ReorderGroupProps, AnyReorderGroup<V> {
|
|
176
|
+
/** Attaches the group to `element`: Solid calls it as a ref. */
|
|
177
|
+
(element: HTMLElement): void
|
|
178
|
+
/**
|
|
179
|
+
* Its spread's props alone (#495): what Solid 2's `merge` reads when the group is spread, calling it
|
|
180
|
+
* as a function source, on no prototype, so none of the group's own names shadows the element's props.
|
|
181
|
+
*/
|
|
182
|
+
(previous?: unknown): ReorderGroupProps
|
|
183
|
+
/** The group's state: `@wardic/core`'s `Reorder.Group`. */
|
|
184
|
+
readonly group: CoreReorder.Group<V>
|
|
185
|
+
/** The list's direction: the config's, else the one found from the items' boxes. */
|
|
186
|
+
readonly axis: Accessor<CoreReorder.Axis>
|
|
187
|
+
/** Moves `value` to `toIndex`, as a button of your own would, and announces it to a screen reader. */
|
|
188
|
+
readonly move: (value: V, toIndex: number) => void
|
|
189
|
+
/** A promise of the group's next `name` after the call. It rejects with an `AbortError` once the group is gone. */
|
|
190
|
+
readonly next: <E extends keyof ReorderGroupEvents<V>>(name: E) => Promise<ReorderGroupEvents<V>[E]>
|
|
191
|
+
/**
|
|
192
|
+
* Every `name` from the call on, as an async iterable, for a `for await`: each step waits for the
|
|
193
|
+
* next one, so one that comes while a step's work runs is missed. It ends once the group is gone. To
|
|
194
|
+
* act on each one in an effect, use {@link when}.
|
|
195
|
+
*/
|
|
196
|
+
readonly each: <E extends keyof ReorderGroupEvents<V>>(name: E) => AsyncIterable<ReorderGroupEvents<V>[E]>
|
|
197
|
+
/**
|
|
198
|
+
* Every `name`, as a memo for an effect, as a ward's `when` is: pending until the first, so the
|
|
199
|
+
* effect runs at each one, on any page. An optimistic save at each reorder:
|
|
200
|
+
*
|
|
201
|
+
* ```tsx
|
|
202
|
+
* const [tasks, setTasks] = createOptimisticStore<Task[]>(() => api.listTasks(), [])
|
|
203
|
+
* const [order, setOrder] = createSignal(() => [...tasks]) // follows tasks; the drag writes it
|
|
204
|
+
* const save = action(function* (ids: string[]) {
|
|
205
|
+
* setTasks((list) => ids.map((id) => list.find((task) => task.id === id)!)) // optimistic
|
|
206
|
+
* yield api.saveOrder(ids)
|
|
207
|
+
* refresh(tasks)
|
|
208
|
+
* })
|
|
209
|
+
* const list = reorderGroup({ values: order, onReorder: setOrder })
|
|
210
|
+
* const reordered = list.when("reorderEnd")
|
|
211
|
+
* createEffect(() => reordered().values.map((task) => task.id), (ids) => {
|
|
212
|
+
* save(ids).catch(setSaveError)
|
|
213
|
+
* })
|
|
214
|
+
* ```
|
|
215
|
+
*/
|
|
216
|
+
readonly when: <E extends keyof ReorderGroupEvents<V>>(name: E) => Accessor<ReorderGroupEvents<V>[E]>
|
|
217
|
+
/** Whether the items reorder from the keyboard. */
|
|
218
|
+
readonly keyboard: Accessor<boolean>
|
|
219
|
+
/** The instructions the items' `aria-describedby` reads. */
|
|
220
|
+
readonly instructions: Accessor<string>
|
|
221
|
+
/** @internal for the items: the group's controller. */
|
|
222
|
+
readonly controller: ReorderController.ReorderController<V>
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* A `<Reorder>` item's `layout`: `true`, its place and size animating (the default), or `"position"`,
|
|
227
|
+
* its place alone, its size changing at once, as Motion's `Reorder.Item` takes.
|
|
228
|
+
*/
|
|
229
|
+
// Its Layout mode (ADR-0009, *Amendment (#42)*).
|
|
230
|
+
export type ReorderItemLayout = true | "position"
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* A `<Reorder>` item's config: its `value`, read once, its `layout`, your own `tabindex` and
|
|
234
|
+
* `aria-describedby`, kept beside the keyboard reorder's, and any motion prop but `layoutId` and
|
|
235
|
+
* `drag`, which the group sets.
|
|
236
|
+
*/
|
|
237
|
+
export type ReorderItemConfig<V> =
|
|
238
|
+
& PerKey<ReorderItemOwn<V>>
|
|
239
|
+
& Omit<WardConfig, "layout" | "layoutId" | "drag">
|
|
240
|
+
|
|
241
|
+
/** A `<Reorder>` item's own keys, beside a ward's. */
|
|
242
|
+
interface ReorderItemOwn<V> {
|
|
243
|
+
/** Its value in the group's `values`. Read once. */
|
|
244
|
+
readonly value: V
|
|
245
|
+
/** `true`, its place and size animating (the default), or `"position"`, its place alone. */
|
|
246
|
+
readonly layout?: ReorderItemLayout
|
|
247
|
+
/** The app's own tab stop (Solid 2's attribute spelling): it wins over the keyboard reorder's `0`. */
|
|
248
|
+
readonly tabindex?: number | undefined
|
|
249
|
+
/** The app's own ids: kept, before the instructions'. */
|
|
250
|
+
readonly "aria-describedby"?: string | undefined
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/** An item's own keys read per key (#259); the rest are its ward's, which reads them itself. */
|
|
254
|
+
/**
|
|
255
|
+
* What an item brings (ADR-0067 decision 12), whatever its section has (#511): its layout node, its
|
|
256
|
+
* drag, and every other gesture, so `whileHover` or `whileTap` on an item works as on Motion's, for
|
|
257
|
+
* about 0.5 KB gzipped beside the drag's.
|
|
258
|
+
*/
|
|
259
|
+
const ITEM_BRINGS: ReadonlyArray<Feature> = [layout, drag, hover, press, focus, inView, pan]
|
|
260
|
+
|
|
261
|
+
const ITEM_VIEW = configView<ReorderItemOwn<unknown>>(["value", "layout", "tabindex", "aria-describedby"], [])
|
|
262
|
+
|
|
263
|
+
/** An item's `layout` as its Layout mode: `"position"`, else `true` (ADR-0009, *Amendment (#42)*). */
|
|
264
|
+
const itemLayoutOf = (layout: unknown): ReorderItemLayout =>
|
|
265
|
+
Bool.match(layout === "position", { onTrue: (): ReorderItemLayout => "position", onFalse: (): ReorderItemLayout => true })
|
|
266
|
+
|
|
267
|
+
/** A config given whole as an accessor, which the Solid 2 binding no longer reads (#259). */
|
|
268
|
+
const WHOLE_GROUP_ACCESSOR =
|
|
269
|
+
"reorderGroup(config) takes its config as an object, read per key (#259): make a key reactive with an accessor " +
|
|
270
|
+
"(`reorderGroup({ values: items, onReorder: setItems })`), a getter, a store or a component's props."
|
|
271
|
+
const WHOLE_ITEM_ACCESSOR =
|
|
272
|
+
"reorderItem(list, config) takes its config as an object, read per key (#259): `reorderItem(list, { value })`, " +
|
|
273
|
+
"a key made reactive with an accessor, a getter, a store or a component's props."
|
|
274
|
+
|
|
275
|
+
/** Whether a call is Solid applying a ref. */
|
|
276
|
+
const isElement = (value: unknown): value is HTMLElement => Predicate.hasProperty(value, "nodeType")
|
|
277
|
+
|
|
278
|
+
/** The group's keyboard reorder settings, as accessors (ADR-0037). */
|
|
279
|
+
const keyboardOf = <V,>(cfg: Accessor<ReorderGroupConfigValues<V>>) => ({
|
|
280
|
+
keyboard: (): boolean => cfg().keyboard !== false,
|
|
281
|
+
instructions: (): string => UndefinedOr.match(cfg().instructions, { onUndefined: () => ReorderController.DEFAULT_INSTRUCTIONS, onDefined: identity }),
|
|
282
|
+
})
|
|
283
|
+
|
|
284
|
+
/** The group element's style: the config's over `overflow-anchor: none`. */
|
|
285
|
+
const groupStyleOf = (style: JSX.CSSProperties | string | undefined): JSX.CSSProperties =>
|
|
286
|
+
pipe(style, Style.over(ReorderController.GROUP_STYLE)) as JSX.CSSProperties
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* A ref carrying `props` and `reads`: `props` enumerable (a spread applies them), `reads` not. Called
|
|
290
|
+
* with nothing, as Solid 2's `merge` calls a spread's function source, it gives `ref` and `props` alone
|
|
291
|
+
* (#495), so none of its own names (`name`, `length`, its reads) shadows the element's props.
|
|
292
|
+
*/
|
|
293
|
+
const refCarrying = <G,>(attach: (element: HTMLElement) => void, props: PropertyDescriptorMap, reads: object): G => {
|
|
294
|
+
const self = ((value?: unknown): object | undefined => {
|
|
295
|
+
if (isElement(value)) {
|
|
296
|
+
attach(value)
|
|
297
|
+
return undefined
|
|
298
|
+
}
|
|
299
|
+
return spread
|
|
300
|
+
}) as unknown as G
|
|
301
|
+
const spreadProps: PropertyDescriptorMap = { ref: { value: self, enumerable: true }, ...props }
|
|
302
|
+
const spread = spreadPropsOf<object>(spreadProps)
|
|
303
|
+
Object.defineProperties(self, { [REORDER_GROUP]: { value: true }, ...spreadProps })
|
|
304
|
+
return Object.assign(self as object, reads) as G
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* Makes a list of your own elements reorderable, by dragging or from the keyboard: spread the group on
|
|
309
|
+
* the list's element, and make each item with `reorderItem`, keyed with `<For>`. Your app owns
|
|
310
|
+
* `values`, and sets them from `onReorder`; a reorder it makes itself animates too. Call it where you'd
|
|
311
|
+
* make a signal, under a `WardicProvider`. `Reorder.Group` is built on it.
|
|
312
|
+
*
|
|
313
|
+
* @example
|
|
314
|
+
* const list = reorderGroup({ values: items, onReorder: setItems })
|
|
315
|
+
* <ul {...list}>
|
|
316
|
+
* <For each={items()}>
|
|
317
|
+
* {(item) => {
|
|
318
|
+
* const row = reorderItem(list, { value: item })
|
|
319
|
+
* return <li {...row}>{item.name}</li>
|
|
320
|
+
* }}
|
|
321
|
+
* </For>
|
|
322
|
+
* </ul>
|
|
323
|
+
* @see https://wardic.dev/reference/solid/reorder/reorder-group
|
|
324
|
+
*/
|
|
325
|
+
// ADR-0020. Given to `ref` alone, it's client-only. Its axis is the config's, else detected from the
|
|
326
|
+
// items' boxes after every Measure pass (for their touch-action); a drag resolves its own at its start.
|
|
327
|
+
// A `values` change re-measures. On a server it renders the element's style and nothing else: no
|
|
328
|
+
// controller, no runtime; its `group`, `move` and `controller` do nothing (ADR-0021).
|
|
329
|
+
export function reorderGroup<V>(config: ReorderGroupConfig<V>): ReorderGroup<V> {
|
|
330
|
+
if (Predicate.isFunction(config)) throw new Error(WHOLE_GROUP_ACCESSOR)
|
|
331
|
+
const beside = {}
|
|
332
|
+
const view = groupViewOf(config, beside)
|
|
333
|
+
const cfg = (): ReorderGroupConfigValues<V> => view
|
|
334
|
+
const runtime = useWardicRuntime()
|
|
335
|
+
if (isServer) return layered(serverReorderGroup(cfg), config, beside)
|
|
336
|
+
const [detected, setDetected] = createSignal<CoreReorder.Axis>("y")
|
|
337
|
+
// Its events (#257 item 3), ended with it.
|
|
338
|
+
const events = new Waiters<ReorderGroupEvents<V>>(GROUP_GONE)
|
|
339
|
+
onCleanup(() => events.dispose())
|
|
340
|
+
// Whether the app's `move` is the call under way: its reorder isn't flushed.
|
|
341
|
+
let moving = false
|
|
342
|
+
// The group's controller, over the provider's projection system and the Environment's channel to
|
|
343
|
+
// assistive technology (ADR-0037), in a Scope of the group's own, closed with its owner: set before
|
|
344
|
+
// the controller is built, so one that fails as it's built leaves nothing (#618).
|
|
345
|
+
const scope = OwnerScope.open(runtime)
|
|
346
|
+
onCleanup(() => OwnerScope.close(runtime, scope, CLOSE_FAILED))
|
|
347
|
+
const controller = runtime.runSync(
|
|
348
|
+
ReorderController.make<V>({
|
|
349
|
+
values: () => untrack(() => cfg().values),
|
|
350
|
+
// The DOM follows a reorder within the controller's call, as on Solid 1, whose updates are
|
|
351
|
+
// synchronous: the controller keeps focus on a lifted item right after (moving a focused node
|
|
352
|
+
// can blur it), and Solid 2 would otherwise move the node at its next flush, after that.
|
|
353
|
+
// A `move` the app calls doesn't: nothing reads the DOM after it, and the app may call it inside
|
|
354
|
+
// an `action`, where Solid refuses a flush (FLUSH_IN_ACTION, #257 item 12).
|
|
355
|
+
onReorder: (values) => {
|
|
356
|
+
const onReorder = untrack(() => cfg().onReorder)
|
|
357
|
+
if (moving) return onReorder(values)
|
|
358
|
+
flush(() => onReorder(values))
|
|
359
|
+
},
|
|
360
|
+
onReorderEnd: (end) => events.tell("reorderEnd", () => end),
|
|
361
|
+
onHoldStart: (start) => events.tell("holdStart", () => start),
|
|
362
|
+
onHoldEnd: (end) => events.tell("holdEnd", () => end),
|
|
363
|
+
axis: () => Option.fromUndefinedOr(untrack(() => cfg().axis)),
|
|
364
|
+
onAxis: setDetected,
|
|
365
|
+
keyedWith: "<For>",
|
|
366
|
+
keyboard: () => untrack(() => cfg().keyboard) !== false,
|
|
367
|
+
announcements: () => Option.fromUndefinedOr(untrack(() => cfg().announcements)),
|
|
368
|
+
}).pipe(Effect.provide(useLayoutServices()), Scope.provide(scope)),
|
|
369
|
+
)
|
|
370
|
+
// The app's axis, else the detected one. When the app's is cleared, detected here, from the boxes the
|
|
371
|
+
// engine holds, so the items' touch-action follows in the same flush (#257's audit: an effect that
|
|
372
|
+
// detected it wrote a signal the items read a flush late, EFFECT_RELAY_TEAR). A Measure pass's change
|
|
373
|
+
// comes through `onAxis`. Lazy: read first by an item, so a given group's `axis` beside it, laid
|
|
374
|
+
// over its config by the `Reorder.Group` the items render in, is the one it tracks (#398).
|
|
375
|
+
const axis: Accessor<CoreReorder.Axis> = createMemo(
|
|
376
|
+
() =>
|
|
377
|
+
UndefinedOr.match(cfg().axis, {
|
|
378
|
+
onDefined: identity,
|
|
379
|
+
onUndefined: () => {
|
|
380
|
+
detected()
|
|
381
|
+
return controller.detect()
|
|
382
|
+
},
|
|
383
|
+
}),
|
|
384
|
+
AXIS_MEMO,
|
|
385
|
+
)
|
|
386
|
+
|
|
387
|
+
// A `values` change re-measures, so the items animate to their new slots whoever reordered them.
|
|
388
|
+
createEffect(
|
|
389
|
+
() => cfg().values,
|
|
390
|
+
() => {
|
|
391
|
+
controller.valuesChanged()
|
|
392
|
+
},
|
|
393
|
+
CLIENT_ONLY_DEFERRED,
|
|
394
|
+
)
|
|
395
|
+
|
|
396
|
+
const attach = (element: HTMLElement): void => {
|
|
397
|
+
// Given to `ref` alone, the element has no spread's style: the group sets its own.
|
|
398
|
+
if (element.style.getPropertyValue("overflow-anchor") === "") element.style.setProperty("overflow-anchor", "none")
|
|
399
|
+
controller.attach(element)
|
|
400
|
+
}
|
|
401
|
+
return layered(refCarrying<ReorderGroup<V>>(
|
|
402
|
+
attach,
|
|
403
|
+
{ style: { get: () => groupStyleOf(cfg().style), enumerable: true } },
|
|
404
|
+
{
|
|
405
|
+
group: controller.group,
|
|
406
|
+
axis,
|
|
407
|
+
move: (value: V, toIndex: number) => {
|
|
408
|
+
moving = true
|
|
409
|
+
try {
|
|
410
|
+
controller.move(value, toIndex)
|
|
411
|
+
} finally {
|
|
412
|
+
moving = false
|
|
413
|
+
}
|
|
414
|
+
},
|
|
415
|
+
next: <E extends keyof ReorderGroupEvents<V>>(name: E) => events.wait(name),
|
|
416
|
+
each: <E extends keyof ReorderGroupEvents<V>>(name: E) => eachOf<ReorderGroupEvents<V>, E>(events, name),
|
|
417
|
+
when: <E extends keyof ReorderGroupEvents<V>>(name: E) => whenOf<ReorderGroupEvents<V>, E>(events, name),
|
|
418
|
+
controller,
|
|
419
|
+
...keyboardOf(cfg),
|
|
420
|
+
},
|
|
421
|
+
), config, beside)
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
/** The group's axis memo's options: client-only, and lazy (#398). */
|
|
425
|
+
const AXIS_MEMO = { ...CLIENT_ONLY, lazy: true } as const
|
|
426
|
+
|
|
427
|
+
/** `group`, its config and its layer kept for a `Reorder.Group` it's given to (#398). */
|
|
428
|
+
const layered = <G extends object,>(group: G, config: object, beside: object): G => {
|
|
429
|
+
GROUP_LAYERS.set(group, { config, beside })
|
|
430
|
+
return group
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
/**
|
|
434
|
+
* A given group's element props (#398): each config key its `Reorder.Group` sets, laid over the
|
|
435
|
+
* group's config, read through the element's prop. A key the group's config sets too is an error.
|
|
436
|
+
*/
|
|
437
|
+
const besideGroup = (local: object, group: object): void => {
|
|
438
|
+
const layer = UndefinedOr.getOrThrow(GROUP_LAYERS.get(group))
|
|
439
|
+
const given = setKeysOf(local, GROUP_CONFIG)
|
|
440
|
+
const twice = setKeysOf(layer.config, given)
|
|
441
|
+
if (twice.length > 0) {
|
|
442
|
+
throw new Error(
|
|
443
|
+
`Reorder.Group: ${listOf(twice)} set both in the group given to groupRef and on the element (#398). ` +
|
|
444
|
+
"Set each key in one place: in reorderGroup({ … }), or on the element.",
|
|
445
|
+
)
|
|
446
|
+
}
|
|
447
|
+
Arr.forEach(given, (key) =>
|
|
448
|
+
Object.defineProperty(layer.beside, key, { enumerable: true, configurable: true, get: () => (local as Readonly<Record<string, unknown>>)[key] }))
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
/** What a group's Scope reports when one of its finalizers fails as its owner goes. */
|
|
452
|
+
const CLOSE_FAILED = "wardic.reorder: a finalizer failed"
|
|
453
|
+
|
|
454
|
+
/**
|
|
455
|
+
* {@link reorderGroup} during a server render (ADR-0021): the group element's style and the app's
|
|
456
|
+
* axis, else `"y"`; its `group`, `move` and `controller` do nothing.
|
|
457
|
+
*/
|
|
458
|
+
const serverReorderGroup = <V,>(cfg: Accessor<ReorderGroupConfigValues<V>>): ReorderGroup<V> => {
|
|
459
|
+
const controller = ReorderController.inert as unknown as ReorderController.ReorderController<V>
|
|
460
|
+
const axis = (): CoreReorder.Axis => UndefinedOr.match(cfg().axis, { onUndefined: (): CoreReorder.Axis => "y", onDefined: identity })
|
|
461
|
+
return refCarrying<ReorderGroup<V>>(
|
|
462
|
+
constUndefined,
|
|
463
|
+
{ style: { value: groupStyleOf(untrack(() => cfg().style)), enumerable: true } },
|
|
464
|
+
{ group: controller.group, axis, move: constUndefined, next: neverLands, each: () => NO_EVENTS, when: serverWhen, controller, ...keyboardOf(cfg) },
|
|
465
|
+
)
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
/** A Reorder item's drag axis for its gesture's axis: a grid's `xy` is a free drag. Built once, at module load. */
|
|
469
|
+
const dragAxisFor: (axis: CoreReorder.Axis) => true | "x" | "y" = Match.type<CoreReorder.Axis>().pipe(
|
|
470
|
+
Match.when("xy", (): true => true),
|
|
471
|
+
Match.orElse((axis) => axis as "x" | "y"),
|
|
472
|
+
)
|
|
473
|
+
|
|
474
|
+
/**
|
|
475
|
+
* What an item adds to its spread for the keyboard reorder (ADR-0037): `tabindex="0"` while the
|
|
476
|
+
* group's keyboard is on and the app gave no `tabindex`, and `aria-describedby` with the group's
|
|
477
|
+
* instructions (`describedBy`, set on the client) after the app's own ids.
|
|
478
|
+
*/
|
|
479
|
+
const keyboardAttributes = <V,>(
|
|
480
|
+
list: Pick<ReorderGroup<V>, "keyboard">,
|
|
481
|
+
cfg: Accessor<ReorderItemOwn<V>>,
|
|
482
|
+
describedBy: Accessor<string | undefined>,
|
|
483
|
+
): PropertyDescriptorMap => ({
|
|
484
|
+
tabindex: {
|
|
485
|
+
get: (): number | undefined =>
|
|
486
|
+
UndefinedOr.match(cfg().tabindex, {
|
|
487
|
+
onDefined: identity,
|
|
488
|
+
onUndefined: () => Bool.match(list.keyboard(), { onTrue: () => 0, onFalse: constUndefined }),
|
|
489
|
+
}),
|
|
490
|
+
enumerable: true,
|
|
491
|
+
},
|
|
492
|
+
"aria-describedby": {
|
|
493
|
+
get: (): string | undefined => {
|
|
494
|
+
const ids = Arr.filter([cfg()["aria-describedby"], Bool.match(list.keyboard(), { onTrue: describedBy, onFalse: constUndefined })], Predicate.isNotUndefined)
|
|
495
|
+
return Bool.match(ids.length === 0, { onTrue: constUndefined, onFalse: () => ids.join(" ") })
|
|
496
|
+
},
|
|
497
|
+
enumerable: true,
|
|
498
|
+
},
|
|
499
|
+
})
|
|
500
|
+
|
|
501
|
+
/**
|
|
502
|
+
* Makes an element an item of a Reorder group: a ward, spread on the element, `<li {...row}>`, or given
|
|
503
|
+
* to `Reorder.Item`'s `wardRef`. `value` is its value in the group's `values`, read once; the rest is a
|
|
504
|
+
* ward's config, but `layout` (`true` or `"position"`), `layoutId` and `drag`, which the group sets. It's
|
|
505
|
+
* a tab stop for the keyboard reorder: your own `tabindex` and `aria-describedby` go in its config.
|
|
506
|
+
* Call it where you'd make a signal: in a `<For>` callback.
|
|
507
|
+
*
|
|
508
|
+
* @example
|
|
509
|
+
* const row = reorderItem(list, { value: item, whileDrag: { scale: 1.05 } })
|
|
510
|
+
* <li {...row}>{item.name}</li>
|
|
511
|
+
* @see https://wardic.dev/reference/solid/reorder/reorder-item
|
|
512
|
+
*/
|
|
513
|
+
// ADR-0020. Given to `ref` alone, it's client-only. The element takes the drag defaults, with the
|
|
514
|
+
// group's axis's touch-action, which its `style` can override.
|
|
515
|
+
export function reorderItem<V, const C extends ReorderItemConfig<V>>(list: ReorderGroup<V>, config: C, options?: WardOptions): ReorderItem<V, C> {
|
|
516
|
+
return reorderItemWith(list, config as ReorderItemConfig<V>, UndefinedOr.map(options, (o) => o.parent), undefined) as unknown as ReorderItem<V, C>
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
/** A `<Reorder>` item's mark (#349): the group it's in. Internal. */
|
|
520
|
+
export const REORDER_ITEM: unique symbol = Symbol("wardic.reorderItem")
|
|
521
|
+
|
|
522
|
+
/** A `<Reorder>` item of `V`, whatever its config: what `Reorder.Item`'s `wardRef` takes. */
|
|
523
|
+
// #349.
|
|
524
|
+
export interface AnyReorderItem<V> extends AnyWard {
|
|
525
|
+
readonly [REORDER_ITEM]: V
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
/**
|
|
529
|
+
* `reorderItem()`'s item: a ward in its group. Spread it on the item's element, or give it to
|
|
530
|
+
* `Reorder.Item`'s `wardRef`.
|
|
531
|
+
*/
|
|
532
|
+
export type ReorderItem<V, C extends ReorderItemConfig<V> = ReorderItemConfig<V>> = Ward<C> & AnyReorderItem<V>
|
|
533
|
+
|
|
534
|
+
/** {@link reorderItem} for `tag` (`Reorder.Item`'s `as`). Internal. */
|
|
535
|
+
const reorderItemWith = <V,>(list: ReorderGroup<V>, config: ReorderItemConfig<V>, parent: AnyWard | undefined, tag: string | undefined): Ward => {
|
|
536
|
+
if (Predicate.isFunction(config)) throw new Error(WHOLE_ITEM_ACCESSOR)
|
|
537
|
+
// Its own keys read per key (#259); the rest are its ward's config, read by the ward. Its `layout`
|
|
538
|
+
// is its Layout mode, `true` or `"position"` whatever the config gives, read at each layout
|
|
539
|
+
// animation's start as any ward's is (ADR-0009, *Amendment (#42)*).
|
|
540
|
+
const own = ITEM_VIEW.of(config) as ReorderItemOwn<V>
|
|
541
|
+
const cfg = (): ReorderItemOwn<V> => own
|
|
542
|
+
const fixed = { layout: (): ReorderItemLayout => itemLayoutOf(own.layout) }
|
|
543
|
+
const wardConfig = config as unknown as WardConfig
|
|
544
|
+
// Its group's axis's `touch-action`, under its style: none when its own presses don't drag it
|
|
545
|
+
// (`dragListener={false}`, #431), as with its other drag defaults, so a list dragged by handles scrolls by touch.
|
|
546
|
+
const touchAction = Bool.match(untrack(() => wardConfig.dragListener) !== false, {
|
|
547
|
+
onTrue: () => (): object => ({ "touch-action": Style.reorderTouchAction(list.axis()) }),
|
|
548
|
+
onFalse: constUndefined,
|
|
549
|
+
})
|
|
550
|
+
// On a server the item renders the drag defaults with its group's touch-action, and joins no
|
|
551
|
+
// controller (ADR-0021); the instructions element exists on the client only.
|
|
552
|
+
if (isServer) {
|
|
553
|
+
const row = wardWith(wardConfig, { tag, brings: ITEM_BRINGS, dragAxis: () => true, baseStyle: touchAction, fixed, group: list, parent })
|
|
554
|
+
return withSpreadProps(Object.defineProperties(row, { [REORDER_ITEM]: { value: list } }), keyboardAttributes(list, cfg, constUndefined))
|
|
555
|
+
}
|
|
556
|
+
const runtime = useWardicRuntime()
|
|
557
|
+
// Its keys' input, the `drag` Feature's it brings (#511).
|
|
558
|
+
const services = useBrought(ITEM_BRINGS)
|
|
559
|
+
const value = untrack(() => own.value)
|
|
560
|
+
// A keyboard lift turns the item's `whileDrag` on (ADR-0037).
|
|
561
|
+
const [lifted, setLifted] = createSignal(false)
|
|
562
|
+
let element: HTMLElement | undefined
|
|
563
|
+
const driver = list.controller.item(value, () => Option.fromUndefinedOr(element), setLifted)
|
|
564
|
+
// An item unmounted mid-gesture gets no end sample: its disposal ends the gesture (and a lift).
|
|
565
|
+
onCleanup(driver.dispose)
|
|
566
|
+
// The instructions' id (ADR-0037), derived, so the element is rendered with its `aria-describedby`:
|
|
567
|
+
// the page's document's, until the element's own replaces it (an iframe's). An effect adds the
|
|
568
|
+
// instructions element, writing nothing. An effect that wrote the id after the mount relayed
|
|
569
|
+
// through four effects, each flush showing the item without it (#320).
|
|
570
|
+
const [document, setDocument] = createSignal<Document>(globalThis.document)
|
|
571
|
+
const describedBy = createMemo(() => DomAnnouncer.instructionsIdOf(document(), list.instructions()), CLIENT_ONLY)
|
|
572
|
+
createEffect(
|
|
573
|
+
() => ({ doc: document(), text: list.instructions() }),
|
|
574
|
+
({ doc, text }) => DomAnnouncer.showInstructions(doc, text),
|
|
575
|
+
CLIENT_ONLY,
|
|
576
|
+
)
|
|
577
|
+
const row = wardWith(wardConfig, {
|
|
578
|
+
tag,
|
|
579
|
+
brings: ITEM_BRINGS,
|
|
580
|
+
fixed,
|
|
581
|
+
group: list,
|
|
582
|
+
parent,
|
|
583
|
+
dragAxis: () => dragAxisFor(driver.dragAxis()),
|
|
584
|
+
onDragSample: driver.onSample,
|
|
585
|
+
onLayoutHandle: driver.register,
|
|
586
|
+
raiseWhileDragged: true,
|
|
587
|
+
keysTaken: true,
|
|
588
|
+
lifted,
|
|
589
|
+
baseStyle: touchAction,
|
|
590
|
+
onMount: (el, watch) => {
|
|
591
|
+
element = el
|
|
592
|
+
setDocument(DomAnnouncer.documentOf(el))
|
|
593
|
+
// Its keys, blurs and presses (ADR-0037), watched in the ward's watch Scope, with no fiber at rest (#379).
|
|
594
|
+
watch((onDefect) => Effect.provideService(watchItemInput(el, driver, (effect) => void runtime.runFork(effect), onDefect), InputSource.InputSource, inputIn(services())))
|
|
595
|
+
return () => {
|
|
596
|
+
element = undefined
|
|
597
|
+
}
|
|
598
|
+
},
|
|
599
|
+
})
|
|
600
|
+
// eslint-disable-next-line solid/reactivity -- handed to getters, which read it where the spread tracks them
|
|
601
|
+
return withSpreadProps(Object.defineProperties(row, { [REORDER_ITEM]: { value: list } }), keyboardAttributes(list, cfg, describedBy))
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
// --- Components (ADR-0020: built on the factories) ---------------------------------------------
|
|
605
|
+
|
|
606
|
+
/** The nearest `Reorder.Group`'s group, for its items: `null` for none (Solid 2's contexts). */
|
|
607
|
+
const GroupContext = createContext<ReorderGroup<unknown> | null>(null)
|
|
608
|
+
|
|
609
|
+
/** An element tag a `<Reorder>` group or item can render. */
|
|
610
|
+
export type ReorderElementTag = keyof JSX.IntrinsicElements
|
|
611
|
+
|
|
612
|
+
/**
|
|
613
|
+
* `Reorder.Group`'s group: its config as props, `groupRef` handing the group out, or a group made with
|
|
614
|
+
* `reorderGroup` given to `groupRef`, with the options its config doesn't set beside it. A key given
|
|
615
|
+
* both ways is an error.
|
|
616
|
+
*/
|
|
617
|
+
// #349, #398. A key set twice is caught at setup; in the types only for `values` and `onReorder`, which
|
|
618
|
+
// every group sets: a group's type doesn't carry its config.
|
|
619
|
+
export type ReorderGroupOf<V> =
|
|
620
|
+
| {
|
|
621
|
+
readonly values: ReadonlyArray<V>
|
|
622
|
+
readonly onReorder: (values: Array<V>) => void
|
|
623
|
+
readonly axis?: CoreReorder.Axis | undefined
|
|
624
|
+
readonly keyboard?: boolean | undefined
|
|
625
|
+
readonly announcements?: Partial<CoreReorder.Announcements<V>> | undefined
|
|
626
|
+
readonly instructions?: string | undefined
|
|
627
|
+
/**
|
|
628
|
+
* Given the group once, as it's made, as `wardRef` is given a ward: for its `next(name)`,
|
|
629
|
+
* `when(name)` and `move`.
|
|
630
|
+
*/
|
|
631
|
+
readonly groupRef?: GroupRefCallback<V> | undefined
|
|
632
|
+
}
|
|
633
|
+
| {
|
|
634
|
+
/**
|
|
635
|
+
* A group made with `reorderGroup`, which the component renders, with the options its config
|
|
636
|
+
* doesn't set beside it: never `values` or `onReorder`, which a group is made with.
|
|
637
|
+
*/
|
|
638
|
+
readonly groupRef: AnyReorderGroup<V>
|
|
639
|
+
readonly values?: never
|
|
640
|
+
readonly onReorder?: never
|
|
641
|
+
readonly axis?: CoreReorder.Axis | undefined
|
|
642
|
+
readonly keyboard?: boolean | undefined
|
|
643
|
+
readonly announcements?: Partial<CoreReorder.Announcements<V>> | undefined
|
|
644
|
+
readonly instructions?: string | undefined
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
/** A function `groupRef` gives the component's group: never a group, which it would take instead. */
|
|
648
|
+
export type GroupRefCallback<V> = ((list: ReorderGroup<V>) => void) & { readonly [REORDER_GROUP]?: never }
|
|
649
|
+
|
|
650
|
+
/**
|
|
651
|
+
* `Reorder.Group`'s props: its group ({@link ReorderGroupOf}), `as`, the element it renders (`"ul"` by
|
|
652
|
+
* default, read once), and that element's own props and motion props.
|
|
653
|
+
*/
|
|
654
|
+
export type ReorderGroupComponentProps<V, Tag extends ReorderElementTag = "ul"> =
|
|
655
|
+
& ReorderGroupOf<V>
|
|
656
|
+
& { readonly as?: Tag }
|
|
657
|
+
& Omit<JSX.IntrinsicElements[Tag], "style" | "onReorder">
|
|
658
|
+
& { readonly style?: WardStyle | string | undefined }
|
|
659
|
+
& WardicMotion
|
|
660
|
+
|
|
661
|
+
/** A `<Reorder>` item's motion props: any but `layoutId` and `drag`, its `layout` a Layout mode. */
|
|
662
|
+
type ItemMotionProps = Omit<WardicMotionProps, "layout" | "layoutId" | "drag">
|
|
663
|
+
|
|
664
|
+
/**
|
|
665
|
+
* `Reorder.Item`'s item: its `value`, its `layout` and its motion props, `wardRef` handing its ward out,
|
|
666
|
+
* or an item made with `reorderItem` given to `wardRef`, with the keys its config `C` doesn't set
|
|
667
|
+
* beside it, as beside a ward: never `value`, which an item is made with.
|
|
668
|
+
*/
|
|
669
|
+
// #349, #398.
|
|
670
|
+
export type ReorderItemOf<V, C = {}> =
|
|
671
|
+
| (ItemMotionProps & { readonly value: V; readonly layout?: ReorderItemLayout; readonly wardRef?: WardRefCallback | undefined })
|
|
672
|
+
| (WardicBeside<C, ItemMotionProps> & {
|
|
673
|
+
readonly wardRef: AnyReorderItem<V> & GivenWard<C>
|
|
674
|
+
readonly value?: never
|
|
675
|
+
readonly layout?: "layout" extends WardSetKey<C> ? never : ReorderItemLayout
|
|
676
|
+
readonly tabindex?: "tabindex" extends WardSetKey<C> ? never : number
|
|
677
|
+
readonly "aria-describedby"?: "aria-describedby" extends WardSetKey<C> ? never : string
|
|
678
|
+
})
|
|
679
|
+
|
|
680
|
+
/**
|
|
681
|
+
* `Reorder.Item`'s props: its item ({@link ReorderItemOf}), `as`, the element it renders (`"li"` by
|
|
682
|
+
* default, read once), and that element's own props.
|
|
683
|
+
*/
|
|
684
|
+
export type ReorderItemComponentProps<V, Tag extends ReorderElementTag = "li", C = {}> =
|
|
685
|
+
& ReorderItemOf<V, C>
|
|
686
|
+
& { readonly as?: Tag }
|
|
687
|
+
& Omit<JSX.IntrinsicElements[Tag], "style">
|
|
688
|
+
& { readonly style?: WardStyle | string | undefined }
|
|
689
|
+
|
|
690
|
+
/**
|
|
691
|
+
* The props a component body reads, as plain records: instantiating the public prop types over
|
|
692
|
+
* every element tag makes a type checker build a union of every element's props.
|
|
693
|
+
*/
|
|
694
|
+
interface GroupLocal<V> {
|
|
695
|
+
readonly values: ReadonlyArray<V>
|
|
696
|
+
readonly onReorder: (values: Array<V>) => void
|
|
697
|
+
readonly groupRef?: unknown
|
|
698
|
+
readonly axis?: CoreReorder.Axis | undefined
|
|
699
|
+
readonly keyboard?: boolean | undefined
|
|
700
|
+
readonly announcements?: Partial<CoreReorder.Announcements<V>> | undefined
|
|
701
|
+
readonly instructions?: string | undefined
|
|
702
|
+
readonly as?: string | undefined
|
|
703
|
+
readonly ref?: unknown
|
|
704
|
+
readonly style?: WardStyle | string | undefined
|
|
705
|
+
readonly children?: JSX.Element
|
|
706
|
+
}
|
|
707
|
+
interface ItemLocal<V> {
|
|
708
|
+
readonly value: V
|
|
709
|
+
readonly as?: string | undefined
|
|
710
|
+
readonly ref?: unknown
|
|
711
|
+
readonly style?: WardStyle | string | undefined
|
|
712
|
+
readonly children?: JSX.Element
|
|
713
|
+
readonly tabindex?: number | undefined
|
|
714
|
+
readonly "aria-describedby"?: string | undefined
|
|
715
|
+
readonly wardRef?: unknown
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
const GROUP_OWN = ["values", "onReorder", "axis", "keyboard", "announcements", "instructions", "as", "ref", "style", "children", "groupRef"] as const
|
|
719
|
+
const ITEM_OWN = [...MOTION_PROPS, "value", "as", "ref", "style", "children", "tabindex", "aria-describedby", "wardRef"] as const
|
|
720
|
+
/** A group's config keys: beside a given group, each it doesn't set (#398). */
|
|
721
|
+
const GROUP_CONFIG = ["values", "onReorder", "axis", "keyboard", "announcements", "instructions"] as const
|
|
722
|
+
/** An item's config keys, its motion props and its own: beside a given item, each it doesn't set (#398). */
|
|
723
|
+
const ITEM_CONFIG = [...MOTION_PROPS, "value", "tabindex", "aria-describedby"] as const
|
|
724
|
+
/** A `<Reorder>` item's keyboard reorder attributes (ADR-0037), which a given item's element carries (#349). */
|
|
725
|
+
const KEYBOARD_ATTRIBUTES = ["tabindex", "aria-describedby"] as const
|
|
726
|
+
|
|
727
|
+
/**
|
|
728
|
+
* The Wardic element for `tag`, as a plain component: a Slim element's (`w[tag]`, #511), so a Reorder
|
|
729
|
+
* brings no Feature but its own (ADR-0067 decision 12) and renders under a `strict` section.
|
|
730
|
+
*/
|
|
731
|
+
const wardicTag = (tag: string): Component<Record<string, unknown>> =>
|
|
732
|
+
UndefinedOr.getOrThrow((w as unknown as Record<string, Component<Record<string, unknown>> | undefined>)[tag])
|
|
733
|
+
|
|
734
|
+
/** The group given to `groupRef` (#349), or `undefined` for a function or none: read once, untracked, as `ref` is. */
|
|
735
|
+
const givenGroupOf = <V,>(local: GroupLocal<V>): ReorderGroup<V> | undefined => {
|
|
736
|
+
const ref = untrack(() => local.groupRef)
|
|
737
|
+
return Bool.match(Predicate.hasProperty(ref, REORDER_GROUP), { onTrue: () => ref as ReorderGroup<V>, onFalse: constUndefined })
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
/**
|
|
741
|
+
* A list put in order by dragging its items, or from the keyboard, rendered as `as`, `"ul"` by
|
|
742
|
+
* default. Your app owns `values`, and sets them from `onReorder`; or give it a group made with
|
|
743
|
+
* `reorderGroup` as `groupRef`. Key its `Reorder.Item`s with `<For>`.
|
|
744
|
+
*
|
|
745
|
+
* @see https://wardic.dev/reference/solid/reorder/reorder
|
|
746
|
+
*/
|
|
747
|
+
// ADR-0020, #349: a `reorderGroup` on `w[as]`, the group in context for its items.
|
|
748
|
+
function Group<V, Tag extends ReorderElementTag = "ul">(props: ReorderGroupComponentProps<V, Tag>): JSX.Element {
|
|
749
|
+
const local = props as unknown as GroupLocal<V>
|
|
750
|
+
const given = givenGroupOf(local)
|
|
751
|
+
const list = UndefinedOr.match(given, {
|
|
752
|
+
onUndefined: () => {
|
|
753
|
+
// Its props are its config, read per key (#259).
|
|
754
|
+
const made = reorderGroup<V>(local as unknown as ReorderGroupConfig<V>)
|
|
755
|
+
// The group, to its `groupRef` (#257 item 3), read once, untracked, as `ref` is.
|
|
756
|
+
const give = untrack(() => local.groupRef)
|
|
757
|
+
if (Predicate.isFunction(give)) give(made)
|
|
758
|
+
return made
|
|
759
|
+
},
|
|
760
|
+
onDefined: (group) => {
|
|
761
|
+
besideGroup(local, group)
|
|
762
|
+
return group
|
|
763
|
+
},
|
|
764
|
+
})
|
|
765
|
+
const Tag = wardicTag(UndefinedOr.match(untrack(() => local.as), { onUndefined: () => "ul", onDefined: identity }))
|
|
766
|
+
const rest = omit(props as unknown as Record<string, unknown>, ...GROUP_OWN)
|
|
767
|
+
// Its element's style over the group's: `overflow-anchor: none`, under a given group's config (#349).
|
|
768
|
+
const styleOf: () => JSX.CSSProperties = UndefinedOr.match(given, {
|
|
769
|
+
onUndefined: () => () => pipe(local.style, Style.over(ReorderController.GROUP_STYLE)) as JSX.CSSProperties,
|
|
770
|
+
onDefined: (group) => () => pipe(local.style, Style.over(group.style)) as JSX.CSSProperties,
|
|
771
|
+
})
|
|
772
|
+
return (
|
|
773
|
+
<GroupContext value={list as ReorderGroup<unknown>}>
|
|
774
|
+
<Tag {...rest} style={styleOf()} ref={refsOf(local, [list])}>
|
|
775
|
+
{local.children}
|
|
776
|
+
</Tag>
|
|
777
|
+
</GroupContext>
|
|
778
|
+
)
|
|
779
|
+
}
|
|
780
|
+
|
|
781
|
+
/**
|
|
782
|
+
* A `<Reorder>` item given to `Reorder.Item`'s `wardRef` (#349): one of `list`'s, made with
|
|
783
|
+
* {@link reorderItem}. Its element is driven by a ward of the component's, and carries the item's
|
|
784
|
+
* keyboard reorder attributes.
|
|
785
|
+
*/
|
|
786
|
+
const givenItem = <V,>(list: ReorderGroup<V>, local: ItemLocal<V>, share: WardShare, tag: string): { readonly row: Ward; readonly keys: object; readonly setup: WardConfigValues } => {
|
|
787
|
+
if (Predicate.isUndefined(share.internal.group)) {
|
|
788
|
+
throw new Error("Reorder.Item: the ward in wardRef isn't a Reorder item (#349). Make it with reorderItem(list, { value }), list the group it's in.")
|
|
789
|
+
}
|
|
790
|
+
if (share.internal.group !== list) {
|
|
791
|
+
throw new Error("Reorder.Item: the item in wardRef is another group's (#349). Make it with reorderItem(list, …), list the Reorder.Group it renders in.")
|
|
792
|
+
}
|
|
793
|
+
const item = untrack(() => local.wardRef) as object
|
|
794
|
+
const { ward: row, setup } = drivenWard("Reorder.Item", local, share, { tag }, ITEM_CONFIG)
|
|
795
|
+
// Its keyboard attributes: the item's, or the element's where it sets one the item doesn't (#398).
|
|
796
|
+
const keys = Object.defineProperties(
|
|
797
|
+
{},
|
|
798
|
+
Object.fromEntries(
|
|
799
|
+
Arr.map(KEYBOARD_ATTRIBUTES, (key) => [
|
|
800
|
+
key,
|
|
801
|
+
Bool.match(sets(local, key), {
|
|
802
|
+
onTrue: (): PropertyDescriptor => ({ enumerable: true, get: () => (local as unknown as Readonly<Record<string, unknown>>)[key] }),
|
|
803
|
+
onFalse: () => UndefinedOr.getOrThrow(Object.getOwnPropertyDescriptor(item, key)),
|
|
804
|
+
}),
|
|
805
|
+
]),
|
|
806
|
+
),
|
|
807
|
+
)
|
|
808
|
+
return { row, keys, setup }
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
/**
|
|
812
|
+
* An item of the `Reorder.Group` around it, rendered as `as`, `"li"` by default: made from its props,
|
|
813
|
+
* or an item made with `reorderItem` given as `wardRef`. Outside a group it throws, as Motion's does.
|
|
814
|
+
*
|
|
815
|
+
* @see https://wardic.dev/reference/solid/reorder/reorder
|
|
816
|
+
*/
|
|
817
|
+
// ADR-0020, #349: a `reorderItem` on the nearest group.
|
|
818
|
+
function Item<V, Tag extends ReorderElementTag = "li", C = {}>(props: ReorderItemComponentProps<V, Tag, C>): JSX.Element {
|
|
819
|
+
const list = useContext(GroupContext) as ReorderGroup<V> | null
|
|
820
|
+
if (Predicate.isNull(list)) throw new Error("Reorder.Item must be a child of Reorder.Group")
|
|
821
|
+
const local = props as unknown as ItemLocal<V> & WardicMotionProps
|
|
822
|
+
const tag = UndefinedOr.match(untrack(() => local.as), { onUndefined: () => "li", onDefined: identity })
|
|
823
|
+
const given = givenOf(local)
|
|
824
|
+
// One plain element a tag, as every Wardic element's (#618, M3).
|
|
825
|
+
const Element = staticElementOf(tag)
|
|
826
|
+
const rest = omit(props as unknown as Record<string, unknown>, ...ITEM_OWN)
|
|
827
|
+
const element = UndefinedOr.match(given, {
|
|
828
|
+
onUndefined: () => {
|
|
829
|
+
// Its props are its config, read per key (#259); its `layout` is read as a Layout mode.
|
|
830
|
+
const row = reorderItemWith<V>(list, local as unknown as ReorderItemConfig<V>, undefined, tag)
|
|
831
|
+
// Its ward, to the item's `wardRef` (#257).
|
|
832
|
+
handOver(local, row)
|
|
833
|
+
// The ward's spread props, as an object: spread as the function it is, it's a source `merge`
|
|
834
|
+
// calls in a computation, whose keys `spread` can't know, so it inserts children too (#525, #618 M3).
|
|
835
|
+
const rowProps = row()
|
|
836
|
+
return {
|
|
837
|
+
row,
|
|
838
|
+
setup: undefined,
|
|
839
|
+
render: (): JSX.Element => (
|
|
840
|
+
<Element {...rest} {...rowProps} ref={refsOf(local, [row])}>
|
|
841
|
+
{local.children}
|
|
842
|
+
</Element>
|
|
843
|
+
),
|
|
844
|
+
}
|
|
845
|
+
},
|
|
846
|
+
onDefined: (share) => {
|
|
847
|
+
const { row, keys, setup } = givenItem(list, local, share, tag)
|
|
848
|
+
return {
|
|
849
|
+
row,
|
|
850
|
+
setup,
|
|
851
|
+
render: (): JSX.Element => (
|
|
852
|
+
<Element {...rest} {...row.with({ style: local.style })} {...keys} ref={refsOf(local, [row])}>
|
|
853
|
+
{local.children}
|
|
854
|
+
</Element>
|
|
855
|
+
),
|
|
856
|
+
}
|
|
857
|
+
},
|
|
858
|
+
})
|
|
859
|
+
// An item that changes what its children read renders its variant context's Provider around them
|
|
860
|
+
// (#50), as every Wardic element does; any other renders none.
|
|
861
|
+
const config = UndefinedOr.match(element.setup, { onUndefined: () => wardConfigView(local as unknown as WardConfig), onDefined: identity })
|
|
862
|
+
return Bool.match(untrack(() => changesContext(config)), {
|
|
863
|
+
onFalse: element.render,
|
|
864
|
+
onTrue: () => <element.row.Provider>{element.render()}</element.row.Provider>,
|
|
865
|
+
})
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
/**
|
|
869
|
+
* A list put in order by dragging its items, or from the keyboard: `Reorder.Group` and `Reorder.Item`.
|
|
870
|
+
* Your app owns the order: the group takes it as `values`, and `onReorder` hands each new one back.
|
|
871
|
+
* Motion's `Reorder`.
|
|
872
|
+
*
|
|
873
|
+
* @example
|
|
874
|
+
* <Reorder.Group values={items()} onReorder={setItems}>
|
|
875
|
+
* <For each={items()}>{(item) => <Reorder.Item value={item}>{item}</Reorder.Item>}</For>
|
|
876
|
+
* </Reorder.Group>
|
|
877
|
+
* @see https://wardic.dev/reference/solid/reorder/reorder
|
|
878
|
+
*/
|
|
879
|
+
// ADR-0020.
|
|
880
|
+
export const Reorder = { Group, Item } as const
|