@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,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An element's drag transition (ADR-0016, *Amendment (#140)*), Solid-free (#209): what every release
|
|
3
|
+
* runs on, a Fling, a snap back to the origin, and a layout node's Release offset, in both bindings.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import type * as ProjectionSystem from "@wardic/dom/ProjectionSystem"
|
|
8
|
+
import * as Bool from "effect/Boolean"
|
|
9
|
+
import { identity } from "effect/Function"
|
|
10
|
+
import * as UndefinedOr from "effect/UndefinedOr"
|
|
11
|
+
import type { WardicDragTransition } from "./config.ts"
|
|
12
|
+
|
|
13
|
+
/** Motion's `dragElastic` default (`defaultElastic`, ADR-0016 *Amendment (#140)*). */
|
|
14
|
+
export const DEFAULT_DRAG_ELASTIC = 0.35
|
|
15
|
+
|
|
16
|
+
/** A drag's `dragElastic`, or Motion's default. */
|
|
17
|
+
export const elasticOf = (elastic: number | undefined): number =>
|
|
18
|
+
UndefinedOr.match(elastic, { onUndefined: () => DEFAULT_DRAG_ELASTIC, onDefined: identity })
|
|
19
|
+
|
|
20
|
+
/** Motion's release (`startAnimation`), in seconds: a 0.75 s time constant, power 0.8, at rest within 1 px and 10 px/s. */
|
|
21
|
+
const MOTION_RELEASE = { power: 0.8, timeConstant: 0.75, restDelta: 1, restSpeed: 10 } as const
|
|
22
|
+
/** The bounce with an elastic drag, Motion's `dragElastic ? 200 : …`. */
|
|
23
|
+
const ELASTIC_BOUNCE = { bounceStiffness: 200, bounceDamping: 40 } as const
|
|
24
|
+
/** The bounce with none, a wall: Motion's `… : 1000000` and `10000000`. */
|
|
25
|
+
const RIGID_BOUNCE = { bounceStiffness: 1e6, bounceDamping: 1e7 } as const
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* An element's drag transition, resolved (ADR-0016, *Amendment (#140)*): Motion's release, its bounce
|
|
29
|
+
* from `dragElastic` (a wall with none), then the element's own `dragTransition` over it, its
|
|
30
|
+
* `timeConstant` from milliseconds to seconds. What every release runs on: a Fling, a snap back to the
|
|
31
|
+
* origin, and a projection node's Release offset.
|
|
32
|
+
*/
|
|
33
|
+
export const dragTransitionOf = (elastic: number | undefined, own: WardicDragTransition | undefined): ProjectionSystem.DragTransition => ({
|
|
34
|
+
...MOTION_RELEASE,
|
|
35
|
+
...Bool.match(elasticOf(elastic) !== 0, { onTrue: () => ELASTIC_BOUNCE, onFalse: () => RIGID_BOUNCE }),
|
|
36
|
+
...UndefinedOr.match(own, {
|
|
37
|
+
onUndefined: () => ({}),
|
|
38
|
+
onDefined: ({ timeConstant, ...rest }) => ({
|
|
39
|
+
...rest,
|
|
40
|
+
...UndefinedOr.match(timeConstant, { onUndefined: () => ({}), onDefined: (ms) => ({ timeConstant: ms / 1000 }) }),
|
|
41
|
+
}),
|
|
42
|
+
}),
|
|
43
|
+
})
|
package/src/drag.ts
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `runDragTrack` (ADR-0004): the Solid 1 binding's drag track, the shared one (`drag-track.ts`), its
|
|
3
|
+
* watches run by `runWatch` in a Scope the caller's owner closes, and its responses forked on the
|
|
4
|
+
* provider runtime (#379). The track is the `drag` Feature's (#511): `runDragTrack` brings it.
|
|
5
|
+
*/
|
|
6
|
+
import * as InputSource from "@wardic/core/InputSource"
|
|
7
|
+
import * as Effect from "effect/Effect"
|
|
8
|
+
import { DEFAULT_DRAG_ELASTIC, dragTransitionOf } from "./drag-transition.ts"
|
|
9
|
+
import { driveDragTrack, type DragTrack, type DragTrackOptions } from "./drag-track.ts"
|
|
10
|
+
import type { Feature } from "./feature.ts"
|
|
11
|
+
import { drag } from "./features/drag.ts"
|
|
12
|
+
import { inputIn } from "./gesture-features.ts"
|
|
13
|
+
import { runWatch, useBrought } from "./provider.tsx"
|
|
14
|
+
import type { WardicRuntime } from "./runtime.ts"
|
|
15
|
+
import { type DragGesture } from "./features/keys.ts"
|
|
16
|
+
|
|
17
|
+
export { DEFAULT_DRAG_ELASTIC, dragTransitionOf }
|
|
18
|
+
export type { DragSnapshot, DragTrack, DragTrackConfig } from "./drag-track.ts"
|
|
19
|
+
|
|
20
|
+
/** `runDragTrack`'s options: the element, its drag config, the spine's snapshot and callbacks, and the provider's runtime. */
|
|
21
|
+
export interface RunDragTrackOptions extends Omit<DragTrackOptions, "watch" | "fork"> {
|
|
22
|
+
/** The provider runtime the track's watches and responses run on. */
|
|
23
|
+
readonly runtime: WardicRuntime
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Runs a drag on `opts.element` as a Wardic element's own drag runs: its gesture, constraints, elastic,
|
|
28
|
+
* release and drag claims, writing `x` and `y` through the element's snapshot. For an element of your
|
|
29
|
+
* own built on Wardic's drag. Stopped as the current owner is cleaned up. Brings the `drag` Feature.
|
|
30
|
+
* Solid 1 only.
|
|
31
|
+
*
|
|
32
|
+
* @see https://wardic.dev/reference/solid/advanced/run-drag-track
|
|
33
|
+
*/
|
|
34
|
+
// `drag-track.ts`, ADR-0004: its watches in a Scope of their own via `runWatch`, no fiber at rest, closed
|
|
35
|
+
// by the caller's owner, which stops the watches and an in-flight release (#379). Its hold on x/y goes
|
|
36
|
+
// to the spine (#340).
|
|
37
|
+
export const runDragTrack = (opts: RunDragTrackOptions): DragTrack => {
|
|
38
|
+
// The gestures' input, read as the track first watches, on the client: a server render runs no watch.
|
|
39
|
+
const services = useBrought(BRINGS)
|
|
40
|
+
const given = <A, E, R>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E, Exclude<R, InputSource.InputSource>> =>
|
|
41
|
+
Effect.provideService(effect, InputSource.InputSource, inputIn(services()))
|
|
42
|
+
return driveDragTrack({
|
|
43
|
+
...opts,
|
|
44
|
+
watch: (track) => runWatch(opts.runtime, (onDefect) => given(track(onDefect))),
|
|
45
|
+
fork: (response) => void opts.runtime.runFork(given(response)),
|
|
46
|
+
})
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** What {@link runDragTrack} brings (ADR-0067 decision 12): the `drag` Feature, whatever its section has (#511). */
|
|
50
|
+
const BRINGS: ReadonlyArray<Feature> = [drag]
|
|
51
|
+
|
|
52
|
+
/** {@link runDragTrack} through `drive`: an element's section's `drag` Feature's (#511), where `runDragTrack` brings it. Internal. */
|
|
53
|
+
export const runDragTrackWith = (drive: DragGesture["Service"]["drive"], opts: RunDragTrackOptions): DragTrack =>
|
|
54
|
+
drive({
|
|
55
|
+
...opts,
|
|
56
|
+
watch: (track) => runWatch(opts.runtime, track),
|
|
57
|
+
fork: (response) => void opts.runtime.runFork(response),
|
|
58
|
+
})
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `style` a Wardic element is rendered with, for a `createWard` spread and a
|
|
3
|
+
* `wardic.create(Component)` wrap (ADR-0021 decision 6, ADR-0034). The flush gate commits every
|
|
4
|
+
* frame onto the element, so `style` carries Wardic's values only until the first commit:
|
|
5
|
+
*
|
|
6
|
+
* - until then, the user's style with the Starting style on top: what a server renders, what
|
|
7
|
+
* hydration keeps, and what the element shows before its first frame;
|
|
8
|
+
* - from the first commit, the fallback: the user's style without the keys the gate holds on the
|
|
9
|
+
* element. Wardic writes those while it drives them; a key the gate lets go of comes back.
|
|
10
|
+
*
|
|
11
|
+
* The gate switches it through the sink's hooks, outside its commits: `beforeFirstCommit`, and
|
|
12
|
+
* `onHeld` whenever the keys it holds change. Only a change to a key the element's own style
|
|
13
|
+
* sets re-runs `style`, so a frame never does. A ward's element that comes after the last one left
|
|
14
|
+
* the page enters fresh (#414): `restart` puts a Starting style back on until its first commit.
|
|
15
|
+
*
|
|
16
|
+
* The user's routed keys (#130, ADR-0043: its Live values and transform keys) are never Solid's:
|
|
17
|
+
* the Starting style carries their values, and from mount the gate holds them. Each style the
|
|
18
|
+
* user gives is seen by the element's {@link LiveStyle} here, where it's read reactively.
|
|
19
|
+
*
|
|
20
|
+
* Solid-free (#209): its state is plain, and one {@link Trigger} re-runs `style`, so it reads the
|
|
21
|
+
* same under Solid 2, where a signal's read lags its write until the flush.
|
|
22
|
+
*/
|
|
23
|
+
import type * as Renderer from "@wardic/core/Renderer"
|
|
24
|
+
import type * as Values from "@wardic/core/Values"
|
|
25
|
+
import type * as FlushGate from "@wardic/dom/FlushGate"
|
|
26
|
+
import * as Style from "@wardic/dom/Style"
|
|
27
|
+
import * as Bool from "effect/Boolean"
|
|
28
|
+
import { constUndefined } from "effect/Function"
|
|
29
|
+
import * as Rec from "effect/Record"
|
|
30
|
+
import type { LiveStyle } from "./live-style.ts"
|
|
31
|
+
import type { Reactivity } from "./reactivity.ts"
|
|
32
|
+
|
|
33
|
+
/** What {@link createElementStyle} reads. */
|
|
34
|
+
export interface ElementStyleOptions {
|
|
35
|
+
/** The user's current style, read when the keys the gate holds change. */
|
|
36
|
+
readonly userStyle: () => object | string | undefined
|
|
37
|
+
/** The element's Starting style, with no routed key. */
|
|
38
|
+
readonly starting: Renderer.Patch
|
|
39
|
+
/** The element's Starting style with its routed keys at `routed` (#130). */
|
|
40
|
+
readonly startingWith: (routed: Values.Values) => Renderer.Patch
|
|
41
|
+
/** The element's routed `style` keys (#130). */
|
|
42
|
+
readonly live: LiveStyle
|
|
43
|
+
/** A drag element's defaults, under the user's style. */
|
|
44
|
+
readonly defaults: Style.DragDefaults | undefined
|
|
45
|
+
/** A `<Reorder>` item's base style, under the user's style. */
|
|
46
|
+
readonly base?: (() => object | undefined) | undefined
|
|
47
|
+
/** The binding's Solid (#209). */
|
|
48
|
+
readonly reactivity: Reactivity
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** An element's `style` and the sink hooks that switch it. */
|
|
52
|
+
export interface ElementStyle {
|
|
53
|
+
/** The element's style, given the user's: reactive, read inside the element's JSX. */
|
|
54
|
+
readonly style: (user: object | string | undefined) => Style.Style
|
|
55
|
+
/** The hooks the element's flush sink carries. */
|
|
56
|
+
readonly hooks: Required<Pick<FlushGate.Sink, "beforeFirstCommit" | "onHeld">>
|
|
57
|
+
/**
|
|
58
|
+
* Put `starting` on as the Starting style again, until the gate's next first commit: a new
|
|
59
|
+
* element entering fresh (#414), its sink registered after this call.
|
|
60
|
+
*/
|
|
61
|
+
readonly restart: (starting: Renderer.Patch) => void
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/** An element's `style`, switched by its flush sink's hooks. Call within a Solid owner. */
|
|
65
|
+
export const createElementStyle = (options: ElementStyleOptions): ElementStyle => {
|
|
66
|
+
const { userStyle, startingWith, live, defaults, base = constUndefined, reactivity } = options
|
|
67
|
+
const { untrack } = reactivity
|
|
68
|
+
// The Starting style: the element's first, or a fresh entry's (#414).
|
|
69
|
+
let starting = options.starting
|
|
70
|
+
// Whether the gate has committed: `style` re-runs once, at the first commit.
|
|
71
|
+
let committed = false
|
|
72
|
+
// Every key the gate holds, current whenever `style` runs. A change that touches the
|
|
73
|
+
// element's own style re-runs it; any other change waits for the next run.
|
|
74
|
+
let held: ReadonlyArray<string> = []
|
|
75
|
+
const changed = reactivity.trigger()
|
|
76
|
+
|
|
77
|
+
// The Starting style with the routed keys' values now: read before the first commit only.
|
|
78
|
+
const startingNow = (): Renderer.Patch => {
|
|
79
|
+
const routed = live.values()
|
|
80
|
+
return Bool.match(Rec.isEmptyRecord(routed), { onTrue: () => starting, onFalse: () => startingWith(routed) })
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const style = (user: object | string | undefined): Style.Style => {
|
|
84
|
+
changed.track()
|
|
85
|
+
const css = live.css(user)
|
|
86
|
+
return Bool.match(committed, {
|
|
87
|
+
onFalse: () => Style.over(Style.over(Style.over(startingNow(), css), base()), defaults),
|
|
88
|
+
onTrue: () => Style.without(Style.over(Style.over(css, base()), defaults), held),
|
|
89
|
+
})
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const onHeld = (next: ReadonlyArray<string>): void => {
|
|
93
|
+
const prev = held
|
|
94
|
+
held = next
|
|
95
|
+
if (!committed) return
|
|
96
|
+
const style = Style.over(Style.over(live.css(untrack(userStyle)), untrack(base)), defaults)
|
|
97
|
+
if (Style.heldTouches(style, prev, next)) changed.notify()
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const beforeFirstCommit = (): void => {
|
|
101
|
+
committed = true
|
|
102
|
+
changed.notify()
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const restart = (next: Renderer.Patch): void => {
|
|
106
|
+
starting = next
|
|
107
|
+
committed = false
|
|
108
|
+
changed.notify()
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
return { style, hooks: { beforeFirstCommit, onHeld }, restart }
|
|
112
|
+
}
|
package/src/element.tsx
ADDED
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What every Wardic element's component form shares, for the Solid 1 binding (#511): `createWith`,
|
|
3
|
+
* which makes `wardic.create`'s component and `w.create`'s, a Complete element's or a Slim one's by the
|
|
4
|
+
* `kind` it's given, and the forms' proxy. `wardic.tsx` holds the Complete forms, `w.tsx` the Slim ones;
|
|
5
|
+
* this module names no Feature, so a Slim element's app ships none it doesn't choose (ADR-0067).
|
|
6
|
+
*
|
|
7
|
+
* `create(tag)` returns a Solid component that accepts the element's own props PLUS Wardic's motion
|
|
8
|
+
* props (`initial` / `animate` / `whileHover` / ...), wires them through {@link createWardWith}, and
|
|
9
|
+
* renders the underlying element with the user's props passed through. The flush gate commits each
|
|
10
|
+
* frame onto the element (ADR-0034). `create(Component)` is the same over the component, which
|
|
11
|
+
* forwards its `ref` to its root element (#253).
|
|
12
|
+
*
|
|
13
|
+
* Locked merge policy (Option A) — the merge now lives in `ward()`
|
|
14
|
+
* ({@link createWardWith}); this HOC just forwards the user's `ref` + `style` into it:
|
|
15
|
+
* - Motion props are split off so none leak to the DOM (even ones not yet
|
|
16
|
+
* wired by {@link createWardWith}).
|
|
17
|
+
* - The user's `ref` AND Wardic's ref are both invoked (via `mergeRefs`).
|
|
18
|
+
* - Wardic's keys win: the Starting style goes over the user's `style` until the first
|
|
19
|
+
* commit; from then on the user's `style` is the fallback, without the keys the
|
|
20
|
+
* gate holds, which Wardic writes onto the element (ADR-0034). A reactive user
|
|
21
|
+
* `style` re-runs the spread's `style`; a frame never does.
|
|
22
|
+
*
|
|
23
|
+
* SSR-correct: {@link createWardWith} computes the Starting style synchronously, so the
|
|
24
|
+
* `<Dynamic>` renders with the merged Starting style on the very first render.
|
|
25
|
+
*
|
|
26
|
+
* REACTIVITY (component props): each motion prop is a plain VALUE, not an
|
|
27
|
+
* accessor. Solid's reactive prop getters already make a component prop tracked —
|
|
28
|
+
* reading `motion.animate` INSIDE {@link motionToConfig}'s config accessor
|
|
29
|
+
* subscribes to whatever signals back the prop. So write a TRACKED EXPRESSION as
|
|
30
|
+
* the value (`animate={open() ? { opacity: 1 } : { opacity: 0 }}`), NOT a function
|
|
31
|
+
* (`animate={() => expr}` is a type error — props are values, not accessors). A
|
|
32
|
+
* signal flip in that expression re-runs the config accessor and drives a Retarget.
|
|
33
|
+
*/
|
|
34
|
+
import { mergeRefs } from "@solid-primitives/refs"
|
|
35
|
+
import * as Arr from "effect/Array"
|
|
36
|
+
import * as Bool from "effect/Boolean"
|
|
37
|
+
import * as Option from "effect/Option"
|
|
38
|
+
import * as Predicate from "effect/Predicate"
|
|
39
|
+
import * as Rec from "effect/Record"
|
|
40
|
+
import * as UndefinedOr from "effect/UndefinedOr"
|
|
41
|
+
import { $PROXY, type Accessor, children, type Component, createComponent, createEffect, createRenderEffect, type JSX, sharedConfig, splitProps, untrack } from "solid-js"
|
|
42
|
+
import { assign, Dynamic, getNextElement, insert, spread, SVGElements, use } from "solid-js/web"
|
|
43
|
+
import { isServer } from "./server.ts"
|
|
44
|
+
import { GESTURE_KEYS } from "./gesture-callbacks.ts"
|
|
45
|
+
import { renderServerElement, serverAppearOfWard, createWardWith, type SpineInternals, type WardStyle, type WardUserProps } from "./create-ward.tsx"
|
|
46
|
+
import type { WardConfig, WardicVariantLabels } from "./config.ts"
|
|
47
|
+
import type { InferredMotion, TargetKey } from "./ward-keys.ts"
|
|
48
|
+
import { changesContext } from "./variant-tree.ts"
|
|
49
|
+
import { MOTION_PROPS, motionToConfig, type WardicMotionProps } from "./motion-props.ts"
|
|
50
|
+
import { droppedKeysOf, markWardic, routingTagOf, type WardicCreateOptions } from "./wardic-component.ts"
|
|
51
|
+
import { useWardicConfig } from "./wardic-config.tsx"
|
|
52
|
+
import { isValidPropOf } from "./wardic-config-value.ts"
|
|
53
|
+
|
|
54
|
+
export { MOTION_PROPS, motionToConfig, type WardicMotionProps } from "./motion-props.ts"
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Props for a `wardic.<tag>` element: the tag's intrinsic props + motion props `M`, with a `style`
|
|
58
|
+
* that takes the transform keys and Live values too ({@link WardStyle}). A `wardic.<tag>`
|
|
59
|
+
* component's `M` has its keys inferred ({@link WardicComponent}).
|
|
60
|
+
*/
|
|
61
|
+
export type WardicProps<Tag extends keyof JSX.IntrinsicElements, M = WardicMotionProps> =
|
|
62
|
+
// `onAnimationStart` is Motion's (#257), not the DOM's CSS `animationstart` event's, as on Motion.
|
|
63
|
+
& Omit<JSX.IntrinsicElements[Tag], "style" | "onAnimationStart" | "onDrag" | "onDragStart" | "onDragEnd">
|
|
64
|
+
& M
|
|
65
|
+
& { readonly style?: WardStyle | string | undefined }
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* A `wardic.<tag>` component: generic over the keys its targets set, so its `transition` takes
|
|
69
|
+
* entries for those keys, `default` and `layout`, and a target's own takes them and `default`
|
|
70
|
+
* ({@link InferredMotion}). A name an entry gives that the element doesn't animate is an error, and
|
|
71
|
+
* completion inside a `transition` offers the keys it drives.
|
|
72
|
+
*/
|
|
73
|
+
export type WardicComponent<Tag extends keyof JSX.IntrinsicElements> = <
|
|
74
|
+
K extends TargetKey = never,
|
|
75
|
+
N extends string = never,
|
|
76
|
+
LI extends WardicVariantLabels = never,
|
|
77
|
+
LA extends WardicVariantLabels = never,
|
|
78
|
+
D extends boolean | "x" | "y" = never,
|
|
79
|
+
>(props: WardicProps<Tag, InferredMotion<WardicMotionProps, K, N, LI, LA, D>>) => JSX.Element
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* The shape `wardic.create(Component)` requires of a wrapped component: it must
|
|
83
|
+
* forward `props.ref` to its single root DOM element so the spine can wire up
|
|
84
|
+
* (ADR-0008's ref-forwarding contract). All motion is committed through that
|
|
85
|
+
* ref, so the wrapped component owns its own root JSX.
|
|
86
|
+
*/
|
|
87
|
+
export type WardicWrappable = { ref?: (el: HTMLElement) => void }
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* A client element's config from its split-off motion props: their keys are fixed unless they're a
|
|
91
|
+
* proxy (over a reactive spread), so the gesture callbacks the element wasn't given are never read
|
|
92
|
+
* (#273).
|
|
93
|
+
*/
|
|
94
|
+
export const configOfMotion = (motion: WardicMotionProps): Accessor<WardConfig> => motionToConfig(motion, Bool.not($PROXY in motion))
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* `create(tag | Component)` of a form (`wardic.create`, `w.create`): a Wardic component, a Complete
|
|
98
|
+
* element's or a Slim one's as `kind` says (#511).
|
|
99
|
+
*
|
|
100
|
+
* Both are an element with a Ward on it, made by {@link createWardWith} (#253, as the Solid 2
|
|
101
|
+
* binding's `create` is, ADR-0045): the Starting style in `style` until the gate's first frame
|
|
102
|
+
* is committed (so on a server and in the hydration render), then the user's style (over the drag
|
|
103
|
+
* defaults) without the keys the gate holds (ADR-0034).
|
|
104
|
+
* - `create("div")` (element-string): renders `<Dynamic component={tag}>`.
|
|
105
|
+
* - `create(Component)` (a component function): the wrapped component must forward `props.ref`
|
|
106
|
+
* to its single root element, where the gate commits each frame; that is the only
|
|
107
|
+
* requirement. It also gets `style` and `draggable`: one that applies `props.style` renders
|
|
108
|
+
* its Starting style on a server, and one that doesn't still animates, the drag defaults
|
|
109
|
+
* set on its element at mount (ADR-0021, decision 6). One that never forwards its ref is a
|
|
110
|
+
* clear error once mounted (ADR-0008).
|
|
111
|
+
*
|
|
112
|
+
* `options` (#443, Motion's `motion.create` options): `forwardMotionProps` hands the motion props on
|
|
113
|
+
* to what it renders as well, and `type` says what its element is for its server render and Starting
|
|
114
|
+
* style ({@link WardicCreateOptions}).
|
|
115
|
+
*/
|
|
116
|
+
export function createWith(arg: string | Component<Record<string, unknown> & WardicWrappable>, options: WardicCreateOptions, kind: SpineInternals): Component<Record<string, unknown>> {
|
|
117
|
+
const forward = options.forwardMotionProps === true
|
|
118
|
+
const made = Bool.match(Predicate.isString(arg), {
|
|
119
|
+
onTrue: () => wardComponent(arg as string, { ...kind, tag: routingTagOf(arg as string, options.type) }, forward),
|
|
120
|
+
onFalse: () => wardComponent(arg as Component<Record<string, unknown> & WardicWrappable>, { ...WRAPPED, ...kind, tag: routingTagOf(undefined, options.type) }, forward),
|
|
121
|
+
})
|
|
122
|
+
// Marked with what it wraps (#443): `isWardicComponent`, `unwrapWardicComponent`.
|
|
123
|
+
return markWardic(made, arg)
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/** The `create` of a form: {@link createWith}'s overloads. */
|
|
127
|
+
export interface Create {
|
|
128
|
+
<Tag extends keyof JSX.IntrinsicElements>(tag: Tag, options?: WardicCreateOptions): WardicComponent<Tag>
|
|
129
|
+
// A component's stays a plain `Component`, its keys not inferred: a generic return type would stop
|
|
130
|
+
// TS carrying a generic component's own type parameters through (Kobalte's `<T extends ValidComponent>`).
|
|
131
|
+
<P>(component: Component<P & WardicWrappable>, options?: WardicCreateOptions): Component<P & WardicMotionProps>
|
|
132
|
+
(tag: string, options?: WardicCreateOptions): Component<WardicProps<keyof JSX.IntrinsicElements>>
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/** A form's `create`, its elements of `kind`. */
|
|
136
|
+
export const createOf =
|
|
137
|
+
(kind: SpineInternals): Create =>
|
|
138
|
+
((arg: string | Component<Record<string, unknown> & WardicWrappable>, options: WardicCreateOptions = {}) => createWith(arg, options, kind)) as Create
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* A form's proxy (`wardic`, `w`): called, it's the form's directive; `create` and the form's
|
|
142
|
+
* `extras` are its properties, and `<form>.<tag>` is `create(tag)`, cached so `wardic.div ===
|
|
143
|
+
* wardic.div` (stable component identity across reads). Any non-string key is `undefined`.
|
|
144
|
+
*/
|
|
145
|
+
export const formOf = <F,>(directive: (el: HTMLElement, value: Accessor<WardConfig>) => void, create: Create, extras: Readonly<Record<string, unknown>>): F => {
|
|
146
|
+
const cache = new Map<string, Component<WardicProps<keyof JSX.IntrinsicElements>>>()
|
|
147
|
+
return new Proxy(directive, {
|
|
148
|
+
get(_, prop) {
|
|
149
|
+
if (prop === "create") return create
|
|
150
|
+
if (Predicate.isString(prop)) {
|
|
151
|
+
if (Object.hasOwn(extras, prop)) return extras[prop]
|
|
152
|
+
return Option.getOrElse(Option.fromUndefinedOr(cache.get(prop)), () => {
|
|
153
|
+
const c = create(prop)
|
|
154
|
+
cache.set(prop, c)
|
|
155
|
+
return c
|
|
156
|
+
})
|
|
157
|
+
}
|
|
158
|
+
return undefined
|
|
159
|
+
},
|
|
160
|
+
}) as unknown as F
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/** What wraps a component tells {@link createWardWith}: its component may not pass `style` on. */
|
|
164
|
+
const WRAPPED: SpineInternals = { defaultsOnElement: true }
|
|
165
|
+
|
|
166
|
+
/** What a form's `create` renders: an element's tag, or the component it wraps. */
|
|
167
|
+
type Rendered = string | Component<Record<string, unknown> & WardicWrappable>
|
|
168
|
+
|
|
169
|
+
/** The namespace an svg tag's element is made in, as Solid's `createDynamic` makes it. */
|
|
170
|
+
const SVG_NAMESPACE = "http://www.w3.org/2000/svg"
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* What `<Dynamic component={component}>` renders, for a form's tag or component, which never changes
|
|
174
|
+
* (#525). Still a component boundary, as `Dynamic` is, so the hydration keys land where the server's
|
|
175
|
+
* `Dynamic` puts them. Without `Dynamic`'s `splitProps`, which copied every prop to take `component`
|
|
176
|
+
* out, and without `createDynamic`'s two memos over a component that can't change.
|
|
177
|
+
*/
|
|
178
|
+
const fixedElement = (component: Rendered): Component<Record<string, unknown>> => {
|
|
179
|
+
if (Predicate.isFunction(component)) return (props) => untrack(() => component(props))
|
|
180
|
+
const tag = component
|
|
181
|
+
const isSvg = SVGElements.has(tag)
|
|
182
|
+
return (props) => {
|
|
183
|
+
const el = tagElementOf(tag, isSvg, props)
|
|
184
|
+
spreadOnto(el, props, isSvg)
|
|
185
|
+
return el
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/** `tag`'s element: the server's while hydrating, else a new one, as `createDynamic` makes it. */
|
|
190
|
+
const tagElementOf = (tag: string, isSvg: boolean, props: Record<string, unknown>): Element => {
|
|
191
|
+
if (Predicate.isNotNullish(sharedConfig.context)) return getNextElement()
|
|
192
|
+
if (isSvg) return document.createElementNS(SVG_NAMESPACE, tag)
|
|
193
|
+
const is = untrack(() => props.is)
|
|
194
|
+
if (Predicate.isString(is)) return document.createElement(tag, { is })
|
|
195
|
+
return document.createElement(tag)
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Solid's `spread` for props whose keys are fixed (#525): their children's effect only when they have
|
|
200
|
+
* children, and their ref called once, as JSX calls its own `ref`, where `spread` gives each a render
|
|
201
|
+
* effect an element. A proxy's keys can change (a reactive spread), so it takes Solid's `spread`.
|
|
202
|
+
*/
|
|
203
|
+
const spreadOnto = (el: Element, props: Record<string, unknown>, isSvg: boolean): void => {
|
|
204
|
+
if ($PROXY in props) {
|
|
205
|
+
spread(el, props, isSvg)
|
|
206
|
+
return
|
|
207
|
+
}
|
|
208
|
+
if ("children" in props) insert(el, () => props.children)
|
|
209
|
+
untrack(() => {
|
|
210
|
+
const ref = props.ref
|
|
211
|
+
if (Predicate.isFunction(ref)) use(ref as (node: Element) => void, el)
|
|
212
|
+
})
|
|
213
|
+
const prev = {}
|
|
214
|
+
createRenderEffect(() => assign(el, props, isSvg, true, prev, true))
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* `<form>.<tag>` and `<form>.create(Component)`: the element, or the wrapped component, with a
|
|
219
|
+
* Ward from {@link createWardWith} spread on it, its variant context's Provider around it when it
|
|
220
|
+
* changes what its children read (#50). `forward`: its motion props are handed on too (#443).
|
|
221
|
+
*/
|
|
222
|
+
const wardComponent = (component: Rendered, internal: SpineInternals, forward: boolean): Component<Record<string, unknown>> => {
|
|
223
|
+
const Rendered = fixedElement(component)
|
|
224
|
+
// What an element that can never want a gesture runs with (#525): made once a form.
|
|
225
|
+
const gestureless: SpineInternals = { ...internal, gestureless: true }
|
|
226
|
+
return (props) => {
|
|
227
|
+
// The nearest `WardicConfig`'s `isValidProp`, as the element is made (#443).
|
|
228
|
+
const isValidProp = isValidPropOf(useWardicConfig())
|
|
229
|
+
// A server render takes the lean path (ADR-0021, decision 4).
|
|
230
|
+
if (isServer) return serverElement(component, internal, props, forward, isValidProp)
|
|
231
|
+
|
|
232
|
+
// 3-way split: motion props (consumed, and only handed on when forwarded, #443), then ref+style
|
|
233
|
+
// (merged), then everything else (rest) passes through to the element or component, but a tag's
|
|
234
|
+
// props a `WardicConfig`'s `isValidProp` keeps off it.
|
|
235
|
+
const [motion, refStyle, own] = splitProps(props as WardicProps<keyof JSX.IntrinsicElements>, MOTION_PROPS, ["ref", "style"])
|
|
236
|
+
const dropped = droppedKeysOf(() => Object.keys(own), isValidProp, Predicate.isString(component))
|
|
237
|
+
// Split again only when it keeps any off (most elements have no `isValidProp` above them).
|
|
238
|
+
const rest = Bool.match(Arr.isReadonlyArrayEmpty(dropped), {
|
|
239
|
+
onTrue: () => own,
|
|
240
|
+
onFalse: () => splitProps(own, dropped as Array<keyof typeof own>)[1],
|
|
241
|
+
})
|
|
242
|
+
const handedOn = Bool.match(forward, { onTrue: () => motion, onFalse: () => NO_PROPS })
|
|
243
|
+
|
|
244
|
+
// Reactive config accessor: motionToConfig reads each (reactive) prop getter
|
|
245
|
+
// inside the accessor, so a changed `animate` / `whileHover` / `transition`
|
|
246
|
+
// (a tracked expression) drives a Retarget. The tag lets an svg-inner element
|
|
247
|
+
// render its Starting style's attribute keys as attributes (ADR-0021).
|
|
248
|
+
const cfg = configOfMotion(motion)
|
|
249
|
+
// Its keys fixed (no reactive spread) and none of them a gesture's, it can never want one (#525).
|
|
250
|
+
let spineInternal = internal
|
|
251
|
+
if (Bool.not($PROXY in motion)) {
|
|
252
|
+
if (Bool.not(Arr.some(GESTURE_KEYS, (key) => key in motion))) spineInternal = gestureless
|
|
253
|
+
}
|
|
254
|
+
const ward = createWardWith(cfg, spineInternal)
|
|
255
|
+
|
|
256
|
+
// Delegate the ref + style merge entirely to ward(): it invokes both the
|
|
257
|
+
// user's ref and ward's internal ref, and gives the element its `style`: the
|
|
258
|
+
// Starting style over the user's, then the user's without the keys the gate
|
|
259
|
+
// holds (ADR-0034).
|
|
260
|
+
//
|
|
261
|
+
// `style` is threaded as a LIVE GETTER, not a value read once at setup:
|
|
262
|
+
// `refStyle.style` is a reactive `splitProps` getter, so a reactive user
|
|
263
|
+
// `style` prop (e.g. `style={{ left: pos() }}` on a non-animated key) is
|
|
264
|
+
// tracked by ward()'s reactive style getter and re-merged on change. Reading
|
|
265
|
+
// it into a `const` here would freeze it at its initial value. `ref` is wired
|
|
266
|
+
// once at mount (refs don't change), so it stays a one-time read.
|
|
267
|
+
const forwarding = forwardingOf(component, (refStyle as { ref?: (el: HTMLElement) => void }).ref)
|
|
268
|
+
const ref = forwarding.ref
|
|
269
|
+
const userProps: WardUserProps = {
|
|
270
|
+
...UndefinedOr.match(ref, { onUndefined: () => ({}), onDefined: (defined) => ({ ref: defined }) }),
|
|
271
|
+
get style() {
|
|
272
|
+
return (refStyle as { style?: JSX.CSSProperties }).style
|
|
273
|
+
},
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
// An element that changes what its children read renders its variant context's Provider
|
|
277
|
+
// around them (#50); any other renders none (`changesContext`, decided once, as on a server).
|
|
278
|
+
// The Ward's props, made once: a call spread in JSX compiles to a function source, which made
|
|
279
|
+
// `mergeProps` a proxy that the spread read every key through (#525). Their `style` is a getter.
|
|
280
|
+
const wardProps = ward(userProps)
|
|
281
|
+
const element = (): JSX.Element => <Rendered {...handedOn} {...rest} {...wardProps} />
|
|
282
|
+
return Bool.match(changesContext(untrack(cfg)), {
|
|
283
|
+
onFalse: () => forwarding.render(element),
|
|
284
|
+
onTrue: () => <ward.Provider>{forwarding.render(element)}</ward.Provider>,
|
|
285
|
+
})
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/** The user's ref, merged with what checks the Ward's, and how the element renders. */
|
|
290
|
+
interface Forwarding {
|
|
291
|
+
readonly ref: ((el: HTMLElement) => void) | undefined
|
|
292
|
+
readonly render: (element: () => JSX.Element) => JSX.Element
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/** A tag's: the user's ref, and its element as it is. */
|
|
296
|
+
const ownElement = (element: () => JSX.Element): JSX.Element => element()
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* The user's ref, and, for a wrapped component, the check that it forwards the Ward's (ADR-0008,
|
|
300
|
+
* narrowed by #414): one that renders an element and forwards its ref to none of what it renders
|
|
301
|
+
* leaves the gate no element to commit to, a clear error. One that renders nothing yet (a component
|
|
302
|
+
* library's part that shows only while open or selected) is waited on: its element is driven when it
|
|
303
|
+
* comes. Checked each time what it renders changes, inside the wrap's Provider (#50).
|
|
304
|
+
*/
|
|
305
|
+
const forwardingOf = (component: Rendered, userRef: ((el: HTMLElement) => void) | undefined): Forwarding => {
|
|
306
|
+
if (Predicate.isString(component)) return { ref: userRef, render: ownElement }
|
|
307
|
+
let reached: HTMLElement | undefined
|
|
308
|
+
const ref = mergeRefs(userRef, (el: HTMLElement) => {
|
|
309
|
+
reached = el
|
|
310
|
+
})
|
|
311
|
+
const render = (element: () => JSX.Element): JSX.Element => {
|
|
312
|
+
const rendered = children(element)
|
|
313
|
+
createEffect(() => {
|
|
314
|
+
const elements = Arr.filter(rendered.toArray(), isElement)
|
|
315
|
+
if (Arr.isArrayEmpty(elements)) return
|
|
316
|
+
if (Arr.some(elements, (inside) => Predicate.isNotUndefined(reached) && inside.contains(reached))) return
|
|
317
|
+
const name = component.name || "anonymous component"
|
|
318
|
+
throw new Error(
|
|
319
|
+
`wardic.create(${name}): the wrapped component rendered an element but did not forward its ref to it. ` +
|
|
320
|
+
"The component must forward props.ref to a single root DOM element " +
|
|
321
|
+
"(e.g. <div ref={props.ref}>...</div>). Element-only motion is wired through the ref.",
|
|
322
|
+
)
|
|
323
|
+
})
|
|
324
|
+
return rendered as unknown as JSX.Element
|
|
325
|
+
}
|
|
326
|
+
return { ref, render }
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/** Whether a rendered node is an element. */
|
|
330
|
+
const isElement = (node: unknown): node is Element => node instanceof Element
|
|
331
|
+
|
|
332
|
+
/** No props: what an element that doesn't forward its motion props hands on of them. */
|
|
333
|
+
const NO_PROPS: Readonly<Record<string, never>> = {}
|
|
334
|
+
|
|
335
|
+
/** The motion props, as a set for the server path's one pass. */
|
|
336
|
+
const MOTION_KEYS: ReadonlySet<string> = new Set(MOTION_PROPS)
|
|
337
|
+
|
|
338
|
+
/**
|
|
339
|
+
* Set each of `values` on `out` as a plain data property. A key copied from the user's props
|
|
340
|
+
* may be a getter (a reactive prop like `cx={cx()}`), which an assignment can't overwrite;
|
|
341
|
+
* Wardic's value wins, as `mergeProps` makes it on the client.
|
|
342
|
+
*/
|
|
343
|
+
const override = (out: Record<string, unknown>, values: Record<string, unknown>): void =>
|
|
344
|
+
Arr.forEach(Rec.keys(values), (key) => {
|
|
345
|
+
Object.defineProperty(out, key, { value: values[key], enumerable: true, configurable: true, writable: true })
|
|
346
|
+
})
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* Everything in `props` but `ref`, `style`, the motion props unless `forward`, and the keys `dropped`
|
|
350
|
+
* (#443), in one pass; getters stay getters.
|
|
351
|
+
*/
|
|
352
|
+
const passThrough = (props: Record<string, unknown>, forward: boolean, dropped: ReadonlyArray<string>): Record<string, unknown> => {
|
|
353
|
+
const descriptors = Object.getOwnPropertyDescriptors(props)
|
|
354
|
+
const out: Record<string, unknown> = {}
|
|
355
|
+
const off = new Set(dropped)
|
|
356
|
+
Arr.forEach(Rec.keys(descriptors), (key) => {
|
|
357
|
+
if (key === "ref" || key === "style" || off.has(key)) return
|
|
358
|
+
if (MOTION_KEYS.has(key) && !forward) return
|
|
359
|
+
Object.defineProperty(out, key, UndefinedOr.getOrThrow(descriptors[key]))
|
|
360
|
+
})
|
|
361
|
+
return out
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* `wardic.<tag>` and `wardic.create(Component)` during a server render (ADR-0021, decisions 4 and
|
|
366
|
+
* 6): the element, or the component, with its Starting style and static attributes, built in one
|
|
367
|
+
* pass over the props. Solid's server `splitProps` and `mergeProps` cost most of a wrapped
|
|
368
|
+
* element's server time, and none of their reactivity matters there. The client's
|
|
369
|
+
* `createUniqueId` (inside `createWardWith`) and its `Dynamic` boundary are kept, so every
|
|
370
|
+
* hydration key lands where the client's render puts it.
|
|
371
|
+
*/
|
|
372
|
+
const serverElement = (
|
|
373
|
+
component: Rendered,
|
|
374
|
+
internal: SpineInternals,
|
|
375
|
+
props: Record<string, unknown>,
|
|
376
|
+
forward: boolean,
|
|
377
|
+
isValidProp: ((key: string) => boolean) | undefined,
|
|
378
|
+
): JSX.Element => {
|
|
379
|
+
// A tag's props `isValidProp` keeps off it, as the client's (#443): of its own, the motion props, `ref` and `style` aside.
|
|
380
|
+
const ownKeys = (): ReadonlyArray<string> => Arr.filter(Object.keys(props), (key) => !MOTION_KEYS.has(key) && key !== "ref" && key !== "style")
|
|
381
|
+
const out = passThrough(props, forward, droppedKeysOf(ownKeys, isValidProp, Predicate.isString(component)))
|
|
382
|
+
const cfg = motionToConfig(props as WardicMotionProps)
|
|
383
|
+
const ward = createWardWith(cfg, internal)
|
|
384
|
+
override(out, { ...ward({ style: props.style as JSX.CSSProperties | undefined }), component })
|
|
385
|
+
// The client's nesting: the element's `ward.Provider` when it changes what its children read
|
|
386
|
+
// (#50), then the element; a late chunk's root then its chunk's style (#245).
|
|
387
|
+
const element = (): JSX.Element => createComponent(Dynamic, out as Parameters<typeof Dynamic>[0])
|
|
388
|
+
const render = (): JSX.Element =>
|
|
389
|
+
Bool.match(changesContext(cfg()), {
|
|
390
|
+
onFalse: element,
|
|
391
|
+
onTrue: () =>
|
|
392
|
+
createComponent(ward.Provider, {
|
|
393
|
+
get children() {
|
|
394
|
+
return element()
|
|
395
|
+
},
|
|
396
|
+
}),
|
|
397
|
+
})
|
|
398
|
+
return renderServerElement(serverAppearOfWard(ward), render)
|
|
399
|
+
}
|
|
400
|
+
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A section's **Features** (#511, ADR-0067), for the Solid 1 binding: the context each `LazyWardic`
|
|
3
|
+
* puts its section in (`feature.ts`'s `makeSection`), so a Slim element has its provider's Features
|
|
4
|
+
* and every `LazyWardic`'s between them (decision 2). A provider's own section isn't in it: the
|
|
5
|
+
* provider keeps it (`provider.tsx`), so a provider renders no second context, and every hydration
|
|
6
|
+
* key stays where it was.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
import type * as Cause from "effect/Cause"
|
|
11
|
+
import { createContext, onCleanup, useContext } from "solid-js"
|
|
12
|
+
import { type FeatureRegistry, type FeatureSection, type FeaturesProp, makeSection, type SectionHost } from "./feature.ts"
|
|
13
|
+
import { isServer } from "./server.ts"
|
|
14
|
+
import { reactivity } from "./solid-reactivity.ts"
|
|
15
|
+
|
|
16
|
+
const FeatureSectionContext = createContext<FeatureSection | undefined>(undefined)
|
|
17
|
+
|
|
18
|
+
/** The nearest `LazyWardic`'s section, or `undefined` under none: its provider's then. */
|
|
19
|
+
export const useLazySection = (): FeatureSection | undefined => useContext(FeatureSectionContext)
|
|
20
|
+
|
|
21
|
+
/** The Provider a `LazyWardic`'s subtree renders under. */
|
|
22
|
+
export const FeatureSectionProvider = FeatureSectionContext.Provider
|
|
23
|
+
|
|
24
|
+
const HOST: SectionHost = { reactivity, server: isServer, onCleanup }
|
|
25
|
+
|
|
26
|
+
/** A section under `parent`, made under the current owner (`feature.ts`'s `makeSection`). */
|
|
27
|
+
export const sectionUnder = (
|
|
28
|
+
parent: FeatureSection,
|
|
29
|
+
registry: FeatureRegistry,
|
|
30
|
+
prop: FeaturesProp | undefined,
|
|
31
|
+
strict: boolean,
|
|
32
|
+
report: (cause: Cause.Cause<unknown>) => void,
|
|
33
|
+
): FeatureSection => makeSection(parent, registry, prop, strict, report, HOST)
|