@motionscript/react 0.1.0-alpha.0 → 0.1.0-alpha.5

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.
@@ -1,4 +1,4 @@
1
- import { BuildError, Engine, NodeBox, Node3DFrame, NodeOverride, NodeState, NodeTextLayout, ProjectDocument, SceneDocument, Session, Size2D, TrackSpan, TreeState, Vector2, Vector3 } from '@motionscript/core';
1
+ import { BuildError, Engine, NodeBox, NodeHandle, Node3DFrame, NodeOverride, NodeState, NodeTextLayout, ProjectDocument, ReparentPlacement, VisualDocument, Session, Size2D, TrackSpan, TreeState, Vector2, Vector3 } from '@motionscript/core';
2
2
  import { PlayheadStore } from './playhead';
3
3
  /**
4
4
  * How far background discovery has got. Only the tracks on frame 0 are
@@ -14,14 +14,16 @@ export interface PrecompProgress {
14
14
  /** True once every track has been discovered. */
15
15
  complete: boolean;
16
16
  }
17
+ /** @internal Whether `session` was disposed by a player. Not exported from the package. */
18
+ export declare function isSessionDisposed(session: Session): boolean;
17
19
  export interface MotionPlayerOptions {
18
20
  /**
19
21
  * The engine this player opens its session on.
20
22
  *
21
23
  * Nullable on purpose: building one is asynchronous
22
- * (`await createBrowserEngine(...)`), so a host holds it in state and it is
23
- * `null` for the first render or two. The player no-ops until it arrives,
24
- * which is what keeps the hook out of a conditional.
24
+ * (`await createBrowserEngine(...)`), so a host gets it from {@link useEngine}
25
+ * and it is `null` for the first render or two. The player no-ops until it
26
+ * arrives, which is what keeps the hook out of a conditional.
25
27
  *
26
28
  * **Create it once, and share it.** It holds CanvasKit and the exporter, so
27
29
  * a fresh one per render rebuilds the WebGL surface behind every player on
@@ -47,7 +49,7 @@ export interface MotionPlayerOptions {
47
49
  * (clamped when the timeline got shorter), and playback carries on if it was
48
50
  * running. Seek or pause yourself when a swap means "start over".
49
51
  */
50
- document?: ProjectDocument | SceneDocument;
52
+ document?: ProjectDocument | VisualDocument;
51
53
  /** Overrides the engine's, for a source that carries none. */
52
54
  viewport?: Size2D;
53
55
  /** Overrides the engine's, for a source that carries none. */
@@ -118,6 +120,8 @@ export interface Player {
118
120
  repaint(): void;
119
121
  getTreeState(): TreeState | null;
120
122
  getNodeProps(nodeId: string): NodeState | null;
123
+ /** The node's props before any command has acted on it: the same at every frame, and answered while it is off screen. */
124
+ getNodeInitialProps(nodeId: string): NodeState["properties"] | null;
121
125
  /** Where each track sits on the timeline, in document order. */
122
126
  getTrackSpans(): readonly TrackSpan[];
123
127
  /**
@@ -137,6 +141,24 @@ export interface Player {
137
141
  * node sits in a 2.5D space.
138
142
  */
139
143
  parentPlanePoint(path: string, point: Vector2): Vector2 | null;
144
+ /**
145
+ * Where `point` lands in the coordinates the node at `path` positions its
146
+ * children in (a graph's units), or `null` when those are pixels: the
147
+ * `x`/`y` to give a node dropped or pasted there.
148
+ */
149
+ childPlanePoint(path: string, point: Vector2): Vector2 | null;
150
+ /**
151
+ * What keeps the node at `path` looking as it does once it moves under the
152
+ * node at `parentPath`: `offsets` (`x`/`y` values it takes under its parent
153
+ * now) as the ones that put it at the same place there, and the turn to add
154
+ * and the factor to scale by. `null` when that parent arranges its children
155
+ * itself.
156
+ */
157
+ reparentPlacement(path: string, parentPath: string, offsets: readonly Vector2[]): ReparentPlacement | null;
158
+ /** The points an editor may drag on the node at `path` (an arrow's ends), in viewport space. */
159
+ nodeHandles(path: string): NodeHandle[] | null;
160
+ /** The value of `prop` that puts its handle under `point`, or `null`. */
161
+ handleValue(path: string, prop: string, point: Vector2): Vector2 | null;
140
162
  getTextLayout(path: string): NodeTextLayout | null;
141
163
  /** `tolerance` is grab-slop in scene units. */
142
164
  pickNode(point: Vector2, tolerance?: number): NodeBox | null;
@@ -1 +1 @@
1
- {"version":3,"file":"use-motion-player.d.ts","sourceRoot":"","sources":["../../src/ui/use-motion-player.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-motion-player.d.ts","sourceRoot":"","sources":["../../src/ui/use-motion-player.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@motionscript/react",
3
- "version": "0.1.0-alpha.0",
3
+ "version": "0.1.0-alpha.5",
4
4
  "type": "module",
5
5
  "description": "React bindings for Motion Script.",
6
6
  "repository": {
@@ -18,6 +18,7 @@
18
18
  "access": "public"
19
19
  },
20
20
  "files": [
21
+ "NOTICE",
21
22
  "dist",
22
23
  "CHANGELOG.md",
23
24
  "!dist/**/*.tsbuildinfo"
@@ -31,9 +32,9 @@
31
32
  }
32
33
  },
33
34
  "peerDependencies": {
34
- "react": "^19.2.3",
35
- "react-dom": "^19.2.3",
36
- "@motionscript/core": "^0.1.0-alpha.0"
35
+ "react": "^18.2.0 || ^19.0.0",
36
+ "react-dom": "^18.2.0 || ^19.0.0",
37
+ "@motionscript/core": "^0.1.0-alpha.5"
37
38
  },
38
39
  "devDependencies": {
39
40
  "@eslint/js": "^9.39.1",
@@ -41,6 +42,8 @@
41
42
  "@types/react": "^19.2.3",
42
43
  "@types/react-dom": "^19.2.3",
43
44
  "@vitejs/plugin-react": "^6.0.1",
45
+ "@vitest/browser": "4.1.7",
46
+ "@vitest/browser-playwright": "^4.1.7",
44
47
  "eslint": "^9.39.4",
45
48
  "eslint-plugin-react-hooks": "^7.0.1",
46
49
  "eslint-plugin-react-refresh": "^0.4.24",
@@ -48,12 +51,14 @@
48
51
  "globals": "^16.5.0",
49
52
  "react-dom": "^19.2.3",
50
53
  "typescript": "^6.0.3",
54
+ "playwright": "^1.60.0",
51
55
  "typescript-eslint": "^8.48.0",
52
56
  "vite": "^8.0.11",
53
57
  "vite-plugin-dts": "5.0.0",
54
- "@motionscript/core": "0.1.0-alpha.0",
55
- "@motionscript/browser": "0.1.0-alpha.0",
56
- "@motionscript/canvaskit": "0.1.0-alpha.0"
58
+ "vitest": "^4.1.5",
59
+ "@motionscript/core": "0.1.0-alpha.5",
60
+ "@motionscript/browser": "0.1.0-alpha.5",
61
+ "@motionscript/canvaskit": "0.1.0-alpha.5"
57
62
  },
58
63
  "scripts": {
59
64
  "dev": "vite",
@@ -61,6 +66,7 @@
61
66
  "lint": "eslint .",
62
67
  "typecheck": "tsc -b --noEmit",
63
68
  "clean": "rimraf --glob dist .turbo *.tsbuildinfo",
64
- "preview": "vite preview"
69
+ "preview": "vite preview",
70
+ "test": "vitest run"
65
71
  }
66
72
  }