@kitlangton/solid-motion 0.1.0

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.
Files changed (135) hide show
  1. package/LICENSE +48 -0
  2. package/README.md +54 -0
  3. package/dist/animation/animate/index.d.ts +23 -0
  4. package/dist/animation/animate/resolve-subjects.d.ts +3 -0
  5. package/dist/animation/animate/sequence.d.ts +3 -0
  6. package/dist/animation/animate/subject.d.ts +7 -0
  7. package/dist/animation/sequence/create.d.ts +6 -0
  8. package/dist/animation/sequence/types.d.ts +51 -0
  9. package/dist/animation/sequence/utils/calc-repeat-duration.d.ts +1 -0
  10. package/dist/animation/sequence/utils/calc-time.d.ts +2 -0
  11. package/dist/animation/sequence/utils/edit.d.ts +5 -0
  12. package/dist/animation/sequence/utils/normalize-times.d.ts +1 -0
  13. package/dist/animation/sequence/utils/sort.d.ts +2 -0
  14. package/dist/animation/utils/create-visual-element.d.ts +2 -0
  15. package/dist/animation/utils/is-dom-keyframes.d.ts +2 -0
  16. package/dist/components/AnimatePresence.d.ts +27 -0
  17. package/dist/components/AnimatePresenceContext.d.ts +23 -0
  18. package/dist/components/AnimatePresenceTypes.d.ts +57 -0
  19. package/dist/components/MotionConfig.d.ts +16 -0
  20. package/dist/context/MotionContext/create.d.ts +3 -0
  21. package/dist/context/MotionContext/utils.d.ts +3 -0
  22. package/dist/context/MotionContext.d.ts +7 -0
  23. package/dist/context/PresenceContext.d.ts +13 -0
  24. package/dist/events/add-pointer-event.d.ts +2 -0
  25. package/dist/events/event-info.d.ts +4 -0
  26. package/dist/gestures/drag/VisualElementDragControls.d.ts +86 -0
  27. package/dist/gestures/drag/index.d.ts +11 -0
  28. package/dist/gestures/drag/utils/constraints.d.ts +77 -0
  29. package/dist/gestures/focus.d.ts +8 -0
  30. package/dist/gestures/hover.d.ts +5 -0
  31. package/dist/gestures/pan/PanSession.d.ts +102 -0
  32. package/dist/gestures/pan/index.d.ts +15 -0
  33. package/dist/gestures/press.d.ts +5 -0
  34. package/dist/index.d.ts +13 -0
  35. package/dist/index.js +2466 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/motion/features/animation/exit.d.ts +7 -0
  38. package/dist/motion/features/animation/index.d.ts +9 -0
  39. package/dist/motion/features/animations.d.ts +10 -0
  40. package/dist/motion/features/definitions.d.ts +3 -0
  41. package/dist/motion/features/feature-bundle.d.ts +34 -0
  42. package/dist/motion/features/gestures.d.ts +26 -0
  43. package/dist/motion/features/load-features.d.ts +1 -0
  44. package/dist/motion/index.d.ts +22 -0
  45. package/dist/motion/types.d.ts +27 -0
  46. package/dist/motion/utils/drag-projection.d.ts +3 -0
  47. package/dist/motion/utils/use-visual-state.d.ts +14 -0
  48. package/dist/motion/utils/valid-prop.d.ts +1 -0
  49. package/dist/render/dom/create-visual-element.d.ts +2 -0
  50. package/dist/render/dom/filter-props.d.ts +2 -0
  51. package/dist/render/dom/is-svg-component.d.ts +1 -0
  52. package/dist/render/dom/style.d.ts +1 -0
  53. package/dist/render/html/use-props.d.ts +7 -0
  54. package/dist/render/html/utils/create-render-state.d.ts +2 -0
  55. package/dist/render/svg/lowercase-elements.d.ts +1 -0
  56. package/dist/render/svg/use-props.d.ts +3 -0
  57. package/dist/render/svg/utils/create-render-state.d.ts +2 -0
  58. package/dist/render/types.d.ts +3 -0
  59. package/dist/server.js +2407 -0
  60. package/dist/server.js.map +1 -0
  61. package/dist/source/animation/animate/index.js +39 -0
  62. package/dist/source/animation/animate/resolve-subjects.js +19 -0
  63. package/dist/source/animation/animate/sequence.js +11 -0
  64. package/dist/source/animation/animate/subject.js +37 -0
  65. package/dist/source/animation/sequence/create.js +171 -0
  66. package/dist/source/animation/sequence/types.js +1 -0
  67. package/dist/source/animation/sequence/utils/calc-repeat-duration.js +3 -0
  68. package/dist/source/animation/sequence/utils/calc-time.js +17 -0
  69. package/dist/source/animation/sequence/utils/edit.js +21 -0
  70. package/dist/source/animation/sequence/utils/normalize-times.js +5 -0
  71. package/dist/source/animation/sequence/utils/sort.js +12 -0
  72. package/dist/source/animation/utils/create-visual-element.js +37 -0
  73. package/dist/source/animation/utils/is-dom-keyframes.js +3 -0
  74. package/dist/source/components/AnimatePresence.jsx +444 -0
  75. package/dist/source/components/AnimatePresenceContext.jsx +20 -0
  76. package/dist/source/components/AnimatePresenceTypes.js +1 -0
  77. package/dist/source/components/MotionConfig.jsx +13 -0
  78. package/dist/source/context/MotionContext/create.js +19 -0
  79. package/dist/source/context/MotionContext/utils.js +11 -0
  80. package/dist/source/context/MotionContext.js +2 -0
  81. package/dist/source/context/PresenceContext.js +2 -0
  82. package/dist/source/events/add-pointer-event.js +5 -0
  83. package/dist/source/events/event-info.js +16 -0
  84. package/dist/source/gestures/drag/VisualElementDragControls.js +531 -0
  85. package/dist/source/gestures/drag/index.js +47 -0
  86. package/dist/source/gestures/drag/utils/constraints.js +160 -0
  87. package/dist/source/gestures/focus.js +37 -0
  88. package/dist/source/gestures/hover.js +25 -0
  89. package/dist/source/gestures/pan/PanSession.js +273 -0
  90. package/dist/source/gestures/pan/index.js +46 -0
  91. package/dist/source/gestures/press.js +28 -0
  92. package/dist/source/index.js +11 -0
  93. package/dist/source/motion/features/animation/exit.js +33 -0
  94. package/dist/source/motion/features/animation/index.js +27 -0
  95. package/dist/source/motion/features/animations.js +10 -0
  96. package/dist/source/motion/features/definitions.js +29 -0
  97. package/dist/source/motion/features/feature-bundle.js +6 -0
  98. package/dist/source/motion/features/gestures.js +20 -0
  99. package/dist/source/motion/features/load-features.js +12 -0
  100. package/dist/source/motion/index.jsx +176 -0
  101. package/dist/source/motion/types.js +1 -0
  102. package/dist/source/motion/utils/drag-projection.js +16 -0
  103. package/dist/source/motion/utils/use-visual-state.js +53 -0
  104. package/dist/source/motion/utils/valid-prop.js +40 -0
  105. package/dist/source/render/dom/create-visual-element.js +10 -0
  106. package/dist/source/render/dom/filter-props.js +15 -0
  107. package/dist/source/render/dom/is-svg-component.js +10 -0
  108. package/dist/source/render/dom/style.js +12 -0
  109. package/dist/source/render/html/use-props.js +39 -0
  110. package/dist/source/render/html/utils/create-render-state.js +6 -0
  111. package/dist/source/render/svg/lowercase-elements.js +27 -0
  112. package/dist/source/render/svg/use-props.js +28 -0
  113. package/dist/source/render/svg/utils/create-render-state.js +5 -0
  114. package/dist/source/render/types.js +1 -0
  115. package/dist/source/utils/distance.js +7 -0
  116. package/dist/source/utils/get-context-window.js +4 -0
  117. package/dist/source/utils/is-ref-object.js +5 -0
  118. package/dist/source/utils/safe-react-types.js +1 -0
  119. package/dist/source/utils/use-reduced-motion.js +15 -0
  120. package/dist/source/value/use-motion-value-event.js +5 -0
  121. package/dist/source/value/use-motion-value.js +16 -0
  122. package/dist/source/value/use-spring.js +59 -0
  123. package/dist/source/value/use-transform.js +25 -0
  124. package/dist/source/value/use-velocity.js +17 -0
  125. package/dist/utils/distance.d.ts +3 -0
  126. package/dist/utils/get-context-window.d.ts +2 -0
  127. package/dist/utils/is-ref-object.d.ts +2 -0
  128. package/dist/utils/safe-react-types.d.ts +3 -0
  129. package/dist/utils/use-reduced-motion.d.ts +6 -0
  130. package/dist/value/use-motion-value-event.d.ts +3 -0
  131. package/dist/value/use-motion-value.d.ts +5 -0
  132. package/dist/value/use-spring.d.ts +5 -0
  133. package/dist/value/use-transform.d.ts +9 -0
  134. package/dist/value/use-velocity.d.ts +3 -0
  135. package/package.json +61 -0
@@ -0,0 +1,17 @@
1
+ import { cancelFrame, frame } from "motion-dom";
2
+ import { onCleanup } from "solid-js";
3
+ import { useMotionValue } from "./use-motion-value";
4
+ import { useMotionValueEvent } from "./use-motion-value-event";
5
+ /** Track velocity, including its return to zero after the source stops changing. */
6
+ export function useVelocity(value) {
7
+ const velocity = useMotionValue(value.getVelocity());
8
+ const update = () => {
9
+ const latest = value.getVelocity();
10
+ velocity.set(latest);
11
+ if (latest)
12
+ frame.update(update);
13
+ };
14
+ useMotionValueEvent(value, "change", () => frame.update(update, false, true));
15
+ onCleanup(() => cancelFrame(update));
16
+ return velocity;
17
+ }
@@ -0,0 +1,3 @@
1
+ import { Point } from "motion-utils";
2
+ export declare const distance: (a: number, b: number) => number;
3
+ export declare function distance2D(a: Point, b: Point): number;
@@ -0,0 +1,2 @@
1
+ import type { VisualElement } from "motion-dom";
2
+ export declare const getContextWindow: ({ current }: VisualElement<Element>) => (Window & typeof globalThis) | null;
@@ -0,0 +1,2 @@
1
+ import { MutableRefObject } from "./safe-react-types";
2
+ export declare function isRefObject<E = any>(ref: any): ref is MutableRefObject<E>;
@@ -0,0 +1,3 @@
1
+ export type MutableRefObject<T> = {
2
+ current: T;
3
+ };
@@ -0,0 +1,6 @@
1
+ import { type Accessor } from "solid-js";
2
+ /**
3
+ * Reactive device preference. Read as `shouldReduceMotion()` in tracked code.
4
+ * Returns null on the server or when matchMedia is unavailable.
5
+ */
6
+ export declare function useReducedMotion(): Accessor<boolean | null>;
@@ -0,0 +1,3 @@
1
+ import type { MotionValue, MotionValueEventCallbacks } from "motion-dom";
2
+ /** Subscribe during setup and unsubscribe when the Solid owner is disposed. */
3
+ export declare function useMotionValueEvent<V, EventName extends keyof MotionValueEventCallbacks<V>>(value: MotionValue<V>, event: EventName, callback: MotionValueEventCallbacks<V>[EventName]): void;
@@ -0,0 +1,5 @@
1
+ import { type MotionValue } from "motion-dom";
2
+ /**
3
+ * Creates a MotionValue to track state and velocity.
4
+ */
5
+ export declare function useMotionValue<T>(initial: T): MotionValue<T>;
@@ -0,0 +1,5 @@
1
+ import { MotionValue, SpringOptions } from "motion-dom";
2
+ export declare function useSpring(source: MotionValue<string>, options?: SpringOptions): MotionValue<string>;
3
+ export declare function useSpring(source: string, options?: SpringOptions): MotionValue<string>;
4
+ export declare function useSpring(source: MotionValue<number>, options?: SpringOptions): MotionValue<number>;
5
+ export declare function useSpring(source: number, options?: SpringOptions): MotionValue<number>;
@@ -0,0 +1,9 @@
1
+ import { AnyResolvedKeyframe, MotionValue, TransformOptions } from "motion-dom";
2
+ export type InputRange = number[];
3
+ type SingleTransformer<I, O> = (input: I) => O;
4
+ type MultiTransformer<I, O> = (input: I[]) => O;
5
+ export declare function useTransform<I, O>(value: MotionValue<number>, inputRange: InputRange, outputRange: O[], options?: TransformOptions<O>): MotionValue<O>;
6
+ export declare function useTransform<I, O>(input: MotionValue<I>, transformer: SingleTransformer<I, O>): MotionValue<O>;
7
+ export declare function useTransform<I, O>(input: MotionValue<string>[] | MotionValue<number>[] | MotionValue<AnyResolvedKeyframe>[], transformer: MultiTransformer<I, O>): MotionValue<O>;
8
+ export declare function useTransform<I, O>(transformer: () => O): MotionValue<O>;
9
+ export {};
@@ -0,0 +1,3 @@
1
+ import { type MotionValue } from "motion-dom";
2
+ /** Track velocity, including its return to zero after the source stops changing. */
3
+ export declare function useVelocity(value: MotionValue<number>): MotionValue<number>;
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@kitlangton/solid-motion",
3
+ "version": "0.1.0",
4
+ "description": "Motion for SolidJS: springs, presence, drag and gestures on Motion's engine.",
5
+ "license": "MIT",
6
+ "author": "Kit Langton",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/kitlangton/solid-motion.git",
10
+ "directory": "packages/solid-motion"
11
+ },
12
+ "keywords": [
13
+ "solid",
14
+ "solidjs",
15
+ "motion",
16
+ "animation",
17
+ "spring",
18
+ "presence",
19
+ "gestures",
20
+ "drag"
21
+ ],
22
+ "type": "module",
23
+ "main": "./dist/index.js",
24
+ "module": "./dist/index.js",
25
+ "types": "./dist/index.d.ts",
26
+ "exports": {
27
+ ".": {
28
+ "types": "./dist/index.d.ts",
29
+ "solid": "./dist/source/index.js",
30
+ "node": "./dist/server.js",
31
+ "default": "./dist/index.js"
32
+ }
33
+ },
34
+ "files": [
35
+ "dist",
36
+ "README.md",
37
+ "LICENSE"
38
+ ],
39
+ "sideEffects": false,
40
+ "publishConfig": {
41
+ "access": "public"
42
+ },
43
+ "scripts": {
44
+ "build": "rm -rf dist && tsc -p tsconfig.build.json && tsc -p tsconfig.source.json && vite build && SOLID_MOTION_TARGET=server vite build",
45
+ "typecheck": "tsc -p tsconfig.json --noEmit",
46
+ "prepublishOnly": "bun run typecheck && bun run build"
47
+ },
48
+ "dependencies": {
49
+ "motion-dom": "^12.30.0",
50
+ "motion-utils": "^12.29.2"
51
+ },
52
+ "peerDependencies": {
53
+ "solid-js": "^1.8.0"
54
+ },
55
+ "devDependencies": {
56
+ "solid-js": "^1.8.0",
57
+ "typescript": "^5.4.0",
58
+ "vite": "^6.4.2",
59
+ "vite-plugin-solid": "^2.11.0"
60
+ }
61
+ }