@flighthq/node 0.3.0-next.906.07cea63 → 0.3.1-next.1041.35b950c

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 (70) hide show
  1. package/dist/boundsRectangle.d.ts +11 -0
  2. package/dist/boundsRectangle.d.ts.map +1 -1
  3. package/dist/boundsRectangle.js +110 -12
  4. package/dist/boundsRectangle.js.map +1 -1
  5. package/dist/contract.d.ts +2 -0
  6. package/dist/contract.d.ts.map +1 -1
  7. package/dist/contract.js +2 -0
  8. package/dist/contract.js.map +1 -1
  9. package/dist/enableNodeGuards.d.ts +4 -0
  10. package/dist/enableNodeGuards.d.ts.map +1 -0
  11. package/dist/enableNodeGuards.js +29 -0
  12. package/dist/enableNodeGuards.js.map +1 -0
  13. package/dist/hasAppearance.d.ts +2 -1
  14. package/dist/hasAppearance.d.ts.map +1 -1
  15. package/dist/hasAppearance.js +10 -0
  16. package/dist/hasAppearance.js.map +1 -1
  17. package/dist/hasBoundsRectangle.d.ts +1 -1
  18. package/dist/hasBoundsRectangle.d.ts.map +1 -1
  19. package/dist/hasBoundsRectangle.js +5 -0
  20. package/dist/hasBoundsRectangle.js.map +1 -1
  21. package/dist/hasTransform3d.d.ts.map +1 -1
  22. package/dist/hasTransform3d.js +11 -4
  23. package/dist/hasTransform3d.js.map +1 -1
  24. package/dist/hierarchy.d.ts +15 -7
  25. package/dist/hierarchy.d.ts.map +1 -1
  26. package/dist/hierarchy.js +65 -28
  27. package/dist/hierarchy.js.map +1 -1
  28. package/dist/index.d.ts +1 -1
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +1 -1
  31. package/dist/index.js.map +1 -1
  32. package/dist/node.d.ts.map +1 -1
  33. package/dist/node.js +2 -0
  34. package/dist/node.js.map +1 -1
  35. package/dist/nodeColorAdjustment.d.ts.map +1 -1
  36. package/dist/nodeColorAdjustment.js +1 -7
  37. package/dist/nodeColorAdjustment.js.map +1 -1
  38. package/dist/nodeOrderList.d.ts +88 -0
  39. package/dist/nodeOrderList.d.ts.map +1 -0
  40. package/dist/nodeOrderList.js +257 -0
  41. package/dist/nodeOrderList.js.map +1 -0
  42. package/dist/nodeTransform2d.d.ts.map +1 -1
  43. package/dist/nodeTransform2d.js +1 -1
  44. package/dist/nodeTransform2d.js.map +1 -1
  45. package/dist/revision.d.ts +5 -2
  46. package/dist/revision.d.ts.map +1 -1
  47. package/dist/revision.js +17 -5
  48. package/dist/revision.js.map +1 -1
  49. package/dist/stageFit.d.ts.map +1 -1
  50. package/dist/stageFit.js +8 -4
  51. package/dist/stageFit.js.map +1 -1
  52. package/dist/traversal.d.ts +1 -1
  53. package/dist/traversal.d.ts.map +1 -1
  54. package/dist/traversal.js +1 -1
  55. package/dist/traversal.js.map +1 -1
  56. package/package.json +11 -7
  57. package/src/boundsRectangle.test.ts +378 -7
  58. package/src/enableNodeGuards.test.ts +78 -0
  59. package/src/hasAppearance.test.ts +33 -3
  60. package/src/hasBoundsRectangle.test.ts +8 -0
  61. package/src/hasTransform2d.test.ts +6 -0
  62. package/src/hasTransform3d.test.ts +40 -8
  63. package/src/hierarchy.test.ts +298 -4
  64. package/src/node.test.ts +11 -1
  65. package/src/nodeColorAdjustment.test.ts +11 -0
  66. package/src/nodeOrderList.test.ts +683 -0
  67. package/src/nodeTransform2d.test.ts +45 -0
  68. package/src/revision.test.ts +51 -0
  69. package/src/stageFit.test.ts +56 -1
  70. package/src/traversal.test.ts +32 -3
@@ -4,6 +4,17 @@ import type { BoundsNode, Rectangle, RectangleLike, Spatial2DNode } from '@fligh
4
4
  * relative to the coordinate system of the `targetCoordinateSpace` object.
5
5
  **/
6
6
  export declare function computeNodeBoundsRectangle<Traits extends object>(out: RectangleLike, source: Spatial2DNode<Traits>, targetCoordinateSpace: Spatial2DNode<Traits> | null | undefined): void;
7
+ /**
8
+ * Writes the tight bounds of `root` and its enabled descendants in a coordinate system where the
9
+ * root's own local transform is identity. A child's transform is still relative to the root and
10
+ * nested transforms compose normally.
11
+ *
12
+ * This differs intentionally from computeNodeBoundsRectangle(out, root, root): that helper transforms
13
+ * an axis-aligned world box back into root space, which cannot recover tight bounds after a root
14
+ * rotation. Offscreen subtree capture uses this contract together with
15
+ * computeScene2DRenderTargetTransform so the root transform cancels exactly.
16
+ */
17
+ export declare function computeNodeRootLocalBoundsRectangle<Traits extends object>(out: RectangleLike, root: Spatial2DNode<Traits>): void;
7
18
  export declare function ensureNodeLocalBoundsRectangle<Traits extends object>(target: BoundsNode<Traits>): void;
8
19
  export declare function ensureNodeParentBoundsRectangle<Traits extends object>(target: Spatial2DNode<Traits>): void;
9
20
  export declare function ensureNodeWorldBoundsRectangle<Traits extends object>(target: Spatial2DNode<Traits>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"boundsRectangle.d.ts","sourceRoot":"","sources":["../src/boundsRectangle.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,UAAU,EAIV,SAAS,EACT,aAAa,EACb,aAAa,EACd,MAAM,0BAA0B,CAAC;AAOlC;;;IAGI;AACJ,wBAAgB,0BAA0B,CAAC,MAAM,SAAS,MAAM,EAC9D,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAC7B,qBAAqB,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,GAC9D,IAAI,CA0BN;AAED,wBAAgB,8BAA8B,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAKtG;AAED,wBAAgB,+BAA+B,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAQ1G;AAED,wBAAgB,8BAA8B,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAazG;AAED,wBAAgB,aAAa,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAO1F;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAGlH;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,SAAS,MAAM,EAChE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAC5B,QAAQ,CAAC,SAAS,CAAC,CAGrB;AAED,wBAAgB,YAAY,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAOzF;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAGrH;AAED,wBAAgB,aAAa,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAIvG;AAED,wBAAgB,YAAY,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAItG"}
1
+ {"version":3,"file":"boundsRectangle.d.ts","sourceRoot":"","sources":["../src/boundsRectangle.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,UAAU,EAKV,SAAS,EACT,aAAa,EACb,aAAa,EACd,MAAM,0BAA0B,CAAC;AAOlC;;;IAGI;AACJ,wBAAgB,0BAA0B,CAAC,MAAM,SAAS,MAAM,EAC9D,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAC7B,qBAAqB,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,GAC9D,IAAI,CAuBN;AAED;;;;;;;;;GASG;AACH,wBAAgB,mCAAmC,CAAC,MAAM,SAAS,MAAM,EACvE,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAC1B,IAAI,CAGN;AAED,wBAAgB,8BAA8B,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAKtG;AAED,wBAAgB,+BAA+B,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAS1G;AAED,wBAAgB,8BAA8B,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAqBzG;AAED,wBAAgB,aAAa,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAO1F;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAGlH;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,SAAS,MAAM,EAChE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAC5B,QAAQ,CAAC,SAAS,CAAC,CAGrB;AAED,wBAAgB,YAAY,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAOzF;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAGrH;AAED,wBAAgB,aAAa,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAcvG;AAED,wBAAgB,YAAY,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CActG"}
@@ -1,5 +1,5 @@
1
1
  import { getEntityRuntime } from '@flighthq/entity/contract';
2
- import { acquireMatrix, copyRectangle, createRectangle, inverseMatrix, matrixTransformRectangle, mergeRectangle, releaseMatrix, } from '@flighthq/geometry/contract';
2
+ import { acquireMatrix, copyMatrix, copyRectangle, createRectangle, inverseMatrix, matrixTransformRectangle, mergeRectangle, multiplyMatrix, releaseMatrix, setEmptyRectangle, } from '@flighthq/geometry/contract';
3
3
  import { getNodeChildCount, getNodeParent } from './hierarchy';
4
4
  import { getNodeRuntime } from './node';
5
5
  import { ensureNodeWorldMatrix, getNodeLocalMatrix, getNodeWorldMatrix } from './nodeTransform2d';
@@ -12,11 +12,7 @@ export function computeNodeBoundsRectangle(out, source, targetCoordinateSpace) {
12
12
  if (!targetCoordinateSpace)
13
13
  targetCoordinateSpace = source;
14
14
  let bounds;
15
- if (getNodeParent(targetCoordinateSpace) === null) {
16
- // if target has no parent, use world bounds
17
- bounds = getNodeWorldBoundsRectangle(source);
18
- }
19
- else if (getNodeChildCount(source) === 0) {
15
+ if (getNodeChildCount(source) === 0) {
20
16
  // only world bounds considers children
21
17
  if (targetCoordinateSpace === source) {
22
18
  // fast path, return local bounds for self
@@ -39,22 +35,38 @@ export function computeNodeBoundsRectangle(out, source, targetCoordinateSpace) {
39
35
  copyRectangle(out, bounds);
40
36
  }
41
37
  }
38
+ /**
39
+ * Writes the tight bounds of `root` and its enabled descendants in a coordinate system where the
40
+ * root's own local transform is identity. A child's transform is still relative to the root and
41
+ * nested transforms compose normally.
42
+ *
43
+ * This differs intentionally from computeNodeBoundsRectangle(out, root, root): that helper transforms
44
+ * an axis-aligned world box back into root space, which cannot recover tight bounds after a root
45
+ * rotation. Offscreen subtree capture uses this contract together with
46
+ * computeScene2DRenderTargetTransform so the root transform cancels exactly.
47
+ */
48
+ export function computeNodeRootLocalBoundsRectangle(out, root) {
49
+ setEmptyRectangle(out);
50
+ mergeRootLocalBounds(out, root, null);
51
+ }
42
52
  export function ensureNodeLocalBoundsRectangle(target) {
43
53
  const runtime = getEntityRuntime(target);
44
- if (runtime.localBoundsUsingLocalBoundsId !== runtime.localBoundsId) {
54
+ if (!isNodeLocalBoundsRectangleValid(target, runtime)) {
45
55
  recomputeLocalBoundsRectangle(target, runtime);
46
56
  }
47
57
  }
48
58
  export function ensureNodeParentBoundsRectangle(target) {
49
59
  const runtime = getEntityRuntime(target);
50
- if (runtime.boundsUsingLocalBoundsId !== runtime.localBoundsId ||
60
+ if (!isNodeLocalBoundsRectangleValid(target, runtime) ||
61
+ runtime.boundsUsingLocalBoundsId !== runtime.localBoundsId ||
51
62
  runtime.boundsUsingLocalTransformId !== runtime.localTransformId) {
52
63
  recomputeNodeBoundsRectangle(target, runtime);
53
64
  }
54
65
  }
55
66
  export function ensureNodeWorldBoundsRectangle(target) {
56
67
  const runtime = getEntityRuntime(target);
57
- const localBoundsInvalid = runtime.worldBoundsUsingLocalBoundsId !== runtime.localBoundsId;
68
+ const localBoundsInvalid = !isNodeLocalBoundsRectangleValid(target, runtime) ||
69
+ runtime.worldBoundsUsingLocalBoundsId !== runtime.localBoundsId;
58
70
  const hasChildren = getNodeChildCount(target) !== 0;
59
71
  let forceRecompute = false;
60
72
  if (!hasChildren && !localBoundsInvalid) {
@@ -63,7 +75,11 @@ export function ensureNodeWorldBoundsRectangle(target) {
63
75
  forceRecompute = true;
64
76
  }
65
77
  ensureNodeWorldMatrix(target);
66
- if (forceRecompute || localBoundsInvalid || runtime.worldBoundsUsingWorldTransformId !== runtime.worldTransformId) {
78
+ const childBoundsChanged = hasChildren && ensureNodeChildWorldBoundsRectangles(target);
79
+ if (forceRecompute ||
80
+ localBoundsInvalid ||
81
+ childBoundsChanged ||
82
+ runtime.worldBoundsUsingWorldTransformId !== runtime.worldTransformId) {
67
83
  recomputeWorldBoundsRectangle(target, runtime);
68
84
  }
69
85
  }
@@ -99,13 +115,37 @@ export function getNodeWorldBoundsRectangle(target) {
99
115
  export function setNodeHeight(target, value) {
100
116
  if (target.scaleY === 0)
101
117
  return;
102
- target.scaleY = (value * target.scaleY) / getNodeHeight(target);
118
+ const bounds = getNodeLocalBoundsRectangle(target);
119
+ const matrix = getNodeLocalMatrix(target);
120
+ const scaleYFactor = Math.abs(matrix.d / target.scaleY);
121
+ const localHeight = Math.abs(bounds.height);
122
+ // This setter is the inverse of getNodeHeight's parent-space AABB measurement. The perpendicular
123
+ // scale contributes a fixed term, so width/height setters intentionally do not commute.
124
+ if (scaleYFactor <= SINGULAR_AXIS_EPSILON || localHeight === 0)
125
+ return;
126
+ const fixedXTerm = Math.abs(matrix.b) * Math.abs(bounds.width);
127
+ const adjustableHeight = value - fixedXTerm;
128
+ if (adjustableHeight < 0)
129
+ return;
130
+ target.scaleY = Math.sign(target.scaleY) * (adjustableHeight / (scaleYFactor * localHeight));
103
131
  invalidateNodeLocalTransform(target);
104
132
  }
105
133
  export function setNodeWidth(target, value) {
106
134
  if (target.scaleX === 0)
107
135
  return;
108
- target.scaleX = (value * target.scaleX) / getNodeWidth(target);
136
+ const bounds = getNodeLocalBoundsRectangle(target);
137
+ const matrix = getNodeLocalMatrix(target);
138
+ const scaleXFactor = Math.abs(matrix.a / target.scaleX);
139
+ const localWidth = Math.abs(bounds.width);
140
+ // This setter is the inverse of getNodeWidth's parent-space AABB measurement. The perpendicular
141
+ // scale contributes a fixed term, so width/height setters intentionally do not commute.
142
+ if (scaleXFactor <= SINGULAR_AXIS_EPSILON || localWidth === 0)
143
+ return;
144
+ const fixedYTerm = Math.abs(matrix.c) * Math.abs(bounds.height);
145
+ const adjustableWidth = value - fixedYTerm;
146
+ if (adjustableWidth < 0)
147
+ return;
148
+ target.scaleX = Math.sign(target.scaleX) * (adjustableWidth / (scaleXFactor * localWidth));
109
149
  invalidateNodeLocalTransform(target);
110
150
  }
111
151
  function recomputeNodeBoundsRectangle(target, runtime) {
@@ -115,6 +155,62 @@ function recomputeNodeBoundsRectangle(target, runtime) {
115
155
  runtime.boundsUsingLocalBoundsId = runtime.localBoundsId;
116
156
  runtime.boundsUsingLocalTransformId = runtime.localTransformId;
117
157
  }
158
+ function isNodeLocalBoundsRectangleValid(target, runtime) {
159
+ return (runtime.localBoundsUsingLocalBoundsId === runtime.localBoundsId &&
160
+ (runtime.isLocalBoundsRectangleValid?.(target) ?? true));
161
+ }
162
+ function ensureNodeChildWorldBoundsRectangles(target) {
163
+ const children = getNodeRuntime(target).children;
164
+ if (children === null)
165
+ return false;
166
+ let changed = false;
167
+ for (const child of children) {
168
+ if (!child.enabled)
169
+ continue;
170
+ const childNode = child;
171
+ const runtime = getNodeRuntime(childNode);
172
+ const previous = runtime.worldBoundsRectangle;
173
+ const previousX = previous?.x;
174
+ const previousY = previous?.y;
175
+ const previousWidth = previous?.width;
176
+ const previousHeight = previous?.height;
177
+ ensureNodeWorldBoundsRectangle(childNode);
178
+ const current = runtime.worldBoundsRectangle;
179
+ if (previous === null ||
180
+ current.x !== previousX ||
181
+ current.y !== previousY ||
182
+ current.width !== previousWidth ||
183
+ current.height !== previousHeight) {
184
+ changed = true;
185
+ }
186
+ }
187
+ return changed;
188
+ }
189
+ function mergeRootLocalBounds(out, node, transform) {
190
+ const localBounds = getNodeLocalBoundsRectangle(node);
191
+ if (transform === null) {
192
+ copyRectangle(_rootLocalNodeBounds, localBounds);
193
+ }
194
+ else {
195
+ matrixTransformRectangle(_rootLocalNodeBounds, transform, localBounds);
196
+ }
197
+ mergeRectangle(out, out, _rootLocalNodeBounds);
198
+ const children = getNodeRuntime(node).children;
199
+ if (children === null)
200
+ return;
201
+ for (const child of children) {
202
+ if (!child.enabled)
203
+ continue;
204
+ const childTransform = acquireMatrix();
205
+ const childLocal = getNodeLocalMatrix(child);
206
+ if (transform === null)
207
+ copyMatrix(childTransform, childLocal);
208
+ else
209
+ multiplyMatrix(childTransform, transform, childLocal);
210
+ mergeRootLocalBounds(out, child, childTransform);
211
+ releaseMatrix(childTransform);
212
+ }
213
+ }
118
214
  function recomputeLocalBoundsRectangle(target, runtime) {
119
215
  if (runtime.localBoundsRectangle === null)
120
216
  runtime.localBoundsRectangle = createRectangle();
@@ -157,4 +253,6 @@ function tryFastRecomputeWorldBoundsRectangle(target, runtime) {
157
253
  return false;
158
254
  }
159
255
  const _tempBoundsRectangle = createRectangle();
256
+ const _rootLocalNodeBounds = createRectangle();
257
+ const SINGULAR_AXIS_EPSILON = 1e-12;
160
258
  //# sourceMappingURL=boundsRectangle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"boundsRectangle.js","sourceRoot":"","sources":["../src/boundsRectangle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"boundsRectangle.js","sourceRoot":"","sources":["../src/boundsRectangle.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export * from './boundsRectangle';
2
+ export * from './enableNodeGuards';
2
3
  export * from './hasAppearance';
3
4
  export * from './hasBlendMode';
4
5
  export * from './hasBoundsRectangle';
@@ -9,6 +10,7 @@ export * from './hasTransform3d';
9
10
  export * from './hierarchy';
10
11
  export * from './node';
11
12
  export * from './nodeColorAdjustment';
13
+ export * from './nodeOrderList';
12
14
  export * from './revision';
13
15
  export * from './nodeTransform2d';
14
16
  export * from './stageFit';
@@ -1 +1 @@
1
- {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
package/dist/contract.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './boundsRectangle';
2
+ export * from './enableNodeGuards';
2
3
  export * from './hasAppearance';
3
4
  export * from './hasBlendMode';
4
5
  export * from './hasBoundsRectangle';
@@ -9,6 +10,7 @@ export * from './hasTransform3d';
9
10
  export * from './hierarchy';
10
11
  export * from './node';
11
12
  export * from './nodeColorAdjustment';
13
+ export * from './nodeOrderList';
12
14
  export * from './revision';
13
15
  export * from './nodeTransform2d';
14
16
  export * from './stageFit';
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function areNodeGuardsEnabled(): boolean;
2
+ export declare function disableNodeGuards(): void;
3
+ export declare function enableNodeGuards(): void;
4
+ //# sourceMappingURL=enableNodeGuards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enableNodeGuards.d.ts","sourceRoot":"","sources":["../src/enableNodeGuards.ts"],"names":[],"mappings":"AAMA,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC;AAKD,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC"}
@@ -0,0 +1,29 @@
1
+ import { logOnce } from '@flighthq/log/contract';
2
+ import { LogLevel } from '@flighthq/types/contract';
3
+ import { setReparentNodeGuard } from './hierarchy';
4
+ export function areNodeGuardsEnabled() {
5
+ return nodeGuardsEnabled;
6
+ }
7
+ export function disableNodeGuards() {
8
+ setReparentNodeGuard(null);
9
+ nodeGuardsEnabled = false;
10
+ }
11
+ // Installs opt-in diagnostics for graph operations that decline rather than invent a result. The core
12
+ // modules stay message-free, so an application that omits this one sheds both the text and
13
+ // @flighthq/log.
14
+ export function enableNodeGuards() {
15
+ setReparentNodeGuard(warnOnDeclinedReparent);
16
+ nodeGuardsEnabled = true;
17
+ }
18
+ // `reparentNode` returning false is a complete no-op, so a caller that ignores the return sees a child
19
+ // that simply did not move — no error, no partial state, and nothing to attribute it to. That silence
20
+ // is the point of the design and the reason it needs a guard.
21
+ function warnOnDeclinedReparent(child, newParent) {
22
+ logOnce(`node:reparent-singular-parent:${newParent.name ?? '<unnamed>'}`, LogLevel.Warn, {
23
+ child: child.name ?? '<unnamed>',
24
+ message: 'reparentNode: the new parent has no invertible world matrix, so no local transform could preserve the child’s world transform — nothing was changed. A zero scale on the parent or an ancestor is the usual cause; use addNodeChild to attach without preserving world position.',
25
+ newParent: newParent.name ?? '<unnamed>',
26
+ });
27
+ }
28
+ let nodeGuardsEnabled = false;
29
+ //# sourceMappingURL=enableNodeGuards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enableNodeGuards.js","sourceRoot":"","sources":["../src/enableNodeGuards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,UAAU,oBAAoB;IAClC,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC3B,iBAAiB,GAAG,KAAK,CAAC;AAC5B,CAAC;AAED,sGAAsG;AACtG,2FAA2F;AAC3F,iBAAiB;AACjB,MAAM,UAAU,gBAAgB;IAC9B,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;IAC7C,iBAAiB,GAAG,IAAI,CAAC;AAC3B,CAAC;AAED,uGAAuG;AACvG,sGAAsG;AACtG,8DAA8D;AAC9D,SAAS,sBAAsB,CAAC,KAAW,EAAE,SAAe;IAC1D,OAAO,CAAC,iCAAiC,SAAS,CAAC,IAAI,IAAI,WAAW,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE;QACvF,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,WAAW;QAChC,OAAO,EACL,kRAAkR;QACpR,SAAS,EAAE,SAAS,CAAC,IAAI,IAAI,WAAW;KACzC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,iBAAiB,GAAG,KAAK,CAAC"}
@@ -1,3 +1,4 @@
1
- import type { HasAppearance } from '@flighthq/types/contract';
1
+ import type { HasAppearance, HasAppearanceRuntime } from '@flighthq/types/contract';
2
+ export declare function initAppearanceRuntimeTrait(target: HasAppearanceRuntime): void;
2
3
  export declare function initAppearanceTrait(target: HasAppearance, obj?: Readonly<Partial<HasAppearance>>): void;
3
4
  //# sourceMappingURL=hasAppearance.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hasAppearance.d.ts","sourceRoot":"","sources":["../src/hasAppearance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,IAAI,CAGvG"}
1
+ {"version":3,"file":"hasAppearance.d.ts","sourceRoot":"","sources":["../src/hasAppearance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAMpF,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAK7E;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,IAAI,CAGvG"}
@@ -1,3 +1,13 @@
1
+ // Resets the resolved-appearance cache for graph families that resolve appearance on the node (the 3D
2
+ // scene graph — see ensureNode3DWorldAlpha). The `-1` stamps are sentinels no live revision takes, so
3
+ // the first resolve always recomputes; `worldAppearanceId` starts at 0, the fresh-runtime value a
4
+ // child stores before its parent has ever resolved.
5
+ export function initAppearanceRuntimeTrait(target) {
6
+ target.worldAlpha = null;
7
+ target.worldAlphaUsingAppearanceId = -1;
8
+ target.worldAlphaUsingParentAppearanceId = -1;
9
+ target.worldAppearanceId = 0;
10
+ }
1
11
  export function initAppearanceTrait(target, obj) {
2
12
  target.alpha = obj?.alpha ?? 1;
3
13
  target.visible = obj?.visible ?? true;
@@ -1 +1 @@
1
- {"version":3,"file":"hasAppearance.js","sourceRoot":"","sources":["../src/hasAppearance.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,mBAAmB,CAAC,MAAqB,EAAE,GAAsC;IAC/F,MAAM,CAAC,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,IAAI,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"hasAppearance.js","sourceRoot":"","sources":["../src/hasAppearance.ts"],"names":[],"mappings":"AAEA,sGAAsG;AACtG,sGAAsG;AACtG,kGAAkG;AAClG,oDAAoD;AACpD,MAAM,UAAU,0BAA0B,CAAC,MAA4B;IACrE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,2BAA2B,GAAG,CAAC,CAAC,CAAC;IACxC,MAAM,CAAC,iCAAiC,GAAG,CAAC,CAAC,CAAC;IAC9C,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAqB,EAAE,GAAsC;IAC/F,MAAM,CAAC,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,IAAI,CAAC;AACxC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { BoundsNodeAny, HasBoundsRectangle, HasBoundsRectangleRuntime, MethodsOf, Rectangle } from '@flighthq/types/contract';
2
2
  export declare function defaultComputeLocalBoundsRectangle(_out: Rectangle, _source: Readonly<BoundsNodeAny>): void;
3
- export declare function initBoundsRectangleRuntimeTrait(target: HasBoundsRectangleRuntime, methods?: Readonly<Partial<MethodsOf<HasBoundsRectangleRuntime>>>): void;
3
+ export declare function initBoundsRectangleRuntimeTrait(target: HasBoundsRectangleRuntime, methods?: Readonly<Partial<MethodsOf<HasBoundsRectangleRuntime> & Pick<HasBoundsRectangleRuntime, 'isLocalBoundsRectangleValid'>>>): void;
4
4
  export declare function initBoundsRectangleTrait(_target: HasBoundsRectangle, _obj?: Readonly<Partial<HasBoundsRectangle>>): void;
5
5
  //# sourceMappingURL=hasBoundsRectangle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hasBoundsRectangle.d.ts","sourceRoot":"","sources":["../src/hasBoundsRectangle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,yBAAyB,EACzB,SAAS,EACT,SAAS,EACV,MAAM,0BAA0B,CAAC;AAElC,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,QAAI;AAExG,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,yBAAyB,EACjC,OAAO,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC,CAAC,GAChE,IAAI,CAKN;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,kBAAkB,EAC3B,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAC3C,IAAI,CAAG"}
1
+ {"version":3,"file":"hasBoundsRectangle.d.ts","sourceRoot":"","sources":["../src/hasBoundsRectangle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,yBAAyB,EACzB,SAAS,EACT,SAAS,EACV,MAAM,0BAA0B,CAAC;AAElC,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,QAAI;AAExG,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,yBAAyB,EACjC,OAAO,CAAC,EAAE,QAAQ,CAChB,OAAO,CAAC,SAAS,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,yBAAyB,EAAE,6BAA6B,CAAC,CAAC,CAC/G,GACA,IAAI,CAMN;AAMD,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,kBAAkB,EAC3B,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAC3C,IAAI,CAAG"}
@@ -4,6 +4,11 @@ export function initBoundsRectangleRuntimeTrait(target, methods) {
4
4
  target.localBoundsRectangle = null;
5
5
  target.worldBoundsRectangle = null;
6
6
  target.computeLocalBoundsRectangle = methods?.computeLocalBoundsRectangle ?? defaultComputeLocalBoundsRectangle;
7
+ target.isLocalBoundsRectangleValid = methods?.isLocalBoundsRectangleValid ?? null;
7
8
  }
9
+ // Deliberately empty: `HasBoundsRectangle` carries no entity fields today (its state lives entirely on
10
+ // the runtime tier). Kept rather than deleted as dead code so every trait has a real init to call — a
11
+ // composition site that hand-inlines a trait's setup instead of calling its init is how a trait's
12
+ // sentinels drift out of sync with the package that owns them.
8
13
  export function initBoundsRectangleTrait(_target, _obj) { }
9
14
  //# sourceMappingURL=hasBoundsRectangle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hasBoundsRectangle.js","sourceRoot":"","sources":["../src/hasBoundsRectangle.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,kCAAkC,CAAC,IAAe,EAAE,OAAgC,IAAG,CAAC;AAExG,MAAM,UAAU,+BAA+B,CAC7C,MAAiC,EACjC,OAAiE;IAEjE,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,2BAA2B,GAAG,OAAO,EAAE,2BAA2B,IAAI,kCAAkC,CAAC;AAClH,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,OAA2B,EAC3B,IAA4C,IACrC,CAAC"}
1
+ {"version":3,"file":"hasBoundsRectangle.js","sourceRoot":"","sources":["../src/hasBoundsRectangle.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,kCAAkC,CAAC,IAAe,EAAE,OAAgC,IAAG,CAAC;AAExG,MAAM,UAAU,+BAA+B,CAC7C,MAAiC,EACjC,OAEC;IAED,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,2BAA2B,GAAG,OAAO,EAAE,2BAA2B,IAAI,kCAAkC,CAAC;IAChH,MAAM,CAAC,2BAA2B,GAAG,OAAO,EAAE,2BAA2B,IAAI,IAAI,CAAC;AACpF,CAAC;AAED,uGAAuG;AACvG,sGAAsG;AACtG,kGAAkG;AAClG,+DAA+D;AAC/D,MAAM,UAAU,wBAAwB,CACtC,OAA2B,EAC3B,IAA4C,IACrC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"hasTransform3d.d.ts","sourceRoot":"","sources":["../src/hasTransform3d.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEtF,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAI/E;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAI1G"}
1
+ {"version":3,"file":"hasTransform3d.d.ts","sourceRoot":"","sources":["../src/hasTransform3d.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEtF,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAI/E;AAMD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAO1G"}
@@ -1,12 +1,19 @@
1
- import { createQuaternion, createVector3 } from '@flighthq/geometry/contract';
1
+ import { cloneQuaternion, cloneVector3, createQuaternion, createVector3 } from '@flighthq/geometry/contract';
2
2
  export function initTransform3DRuntimeTrait(target) {
3
3
  target.localMatrix4 = null;
4
4
  target.localMatrix4Detached = false;
5
5
  target.worldMatrix4 = null;
6
6
  }
7
+ // The node owns its position/rotation/scale storage: values are copied out of `obj` rather than
8
+ // retained, so one options object can seed many nodes and later transform writes (which mutate these
9
+ // in place) never reach back into the caller's `Readonly` input. Mirrors the value semantics of the
10
+ // primitive-field 2D sibling.
7
11
  export function initTransform3DTrait(target, obj) {
8
- target.rotation = obj?.rotation ?? createQuaternion();
9
- target.scale = obj?.scale ?? createVector3(1, 1, 1);
10
- target.position = obj?.position ?? createVector3();
12
+ const position = obj?.position;
13
+ const rotation = obj?.rotation;
14
+ const scale = obj?.scale;
15
+ target.position = position !== undefined ? cloneVector3(position) : createVector3();
16
+ target.rotation = rotation !== undefined ? cloneQuaternion(rotation) : createQuaternion();
17
+ target.scale = scale !== undefined ? cloneVector3(scale) : createVector3(1, 1, 1);
11
18
  }
12
19
  //# sourceMappingURL=hasTransform3d.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hasTransform3d.js","sourceRoot":"","sources":["../src/hasTransform3d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG9E,MAAM,UAAU,2BAA2B,CAAC,MAA6B;IACvE,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,MAAM,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACpC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAsB,EAAE,GAAuC;IAClG,MAAM,CAAC,QAAQ,GAAG,GAAG,EAAE,QAAQ,IAAI,gBAAgB,EAAE,CAAC;IACtD,MAAM,CAAC,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,MAAM,CAAC,QAAQ,GAAG,GAAG,EAAE,QAAQ,IAAI,aAAa,EAAE,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"hasTransform3d.js","sourceRoot":"","sources":["../src/hasTransform3d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG7G,MAAM,UAAU,2BAA2B,CAAC,MAA6B;IACvE,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,MAAM,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACpC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;AAC7B,CAAC;AAED,gGAAgG;AAChG,qGAAqG;AACrG,oGAAoG;AACpG,8BAA8B;AAC9B,MAAM,UAAU,oBAAoB,CAAC,MAAsB,EAAE,GAAuC;IAClG,MAAM,QAAQ,GAAG,GAAG,EAAE,QAAQ,CAAC;IAC/B,MAAM,QAAQ,GAAG,GAAG,EAAE,QAAQ,CAAC;IAC/B,MAAM,KAAK,GAAG,GAAG,EAAE,KAAK,CAAC;IACzB,MAAM,CAAC,QAAQ,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACpF,MAAM,CAAC,QAAQ,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC1F,MAAM,CAAC,KAAK,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpF,CAAC"}
@@ -89,15 +89,22 @@ export declare function removeNodeChildAt<Traits extends object>(target: Node<Tr
89
89
  **/
90
90
  export declare function removeNodeChildren<Traits extends object>(target: Node<Traits>, beginIndex?: number, endIndex?: number): void;
91
91
  /**
92
- * Moves a child to a new parent while preserving its world-space position.
93
- * The child's local TRS fields (x, y, rotation, scaleX, scaleY) are recomputed
94
- * so its visual position, rotation, and scale remain unchanged. Existing skewX/skewY
95
- * values are preserved (skew is not decomposable from a general affine matrix).
92
+ * Moves a child to a new parent while preserving its world-space position, and reports whether it
93
+ * did. The child's local transform fields are recomputed so its effective world transform remains
94
+ * unchanged. Its pivot is preserved; rotation and skew may be reparameterized because a general
95
+ * affine matrix has multiple equivalent decompositions.
96
96
  *
97
- * To reparent without preserving world position (keeping local TRS unchanged),
98
- * use addNodeChild instead.
97
+ * Returns `false`, having changed NOTHING neither the attachment nor the transform — when
98
+ * `newParent`'s world matrix has no inverse (a zero scale anywhere in its ancestry). This is not a
99
+ * computation that went wrong: under a singular parent there EXISTS no local transform that would
100
+ * preserve the child's world transform, so there is no right answer to write and inventing one is
101
+ * the defect. Declining whole is what keeps the caller out of a half-applied state it would have to
102
+ * untangle without being told which half happened.
103
+ *
104
+ * To reparent without preserving world position (keeping local TRS unchanged), use addNodeChild
105
+ * instead — that is also the composition to reach for when a caller wants the attachment regardless.
99
106
  */
100
- export declare function reparentNode<Traits extends object>(child: Transform2DNode<Traits>, newParent: Transform2DNode<Traits>): NodeOf<Traits>;
107
+ export declare function reparentNode<Traits extends object>(child: Transform2DNode<Traits>, newParent: Transform2DNode<Traits>): boolean;
101
108
  /**
102
109
  * Replaces `oldChild` with `newChild` at the same index position in `target`'s children. If
103
110
  * `oldChild` is not a child of `target`, this is a no-op. If `newChild` is already a child of
@@ -109,6 +116,7 @@ export declare function replaceNodeChild<Traits extends object>(target: Node<Tra
109
116
  * This affects the layering of child objects.
110
117
  **/
111
118
  export declare function setNodeChildIndex<Traits extends object>(target: Node<Traits>, child: Node<Traits>, index: number): void;
119
+ export declare function setReparentNodeGuard(guard: ((child: Node, newParent: Node) => void) | null): void;
112
120
  /**
113
121
  * Recursively stops the timeline execution of all MovieClips rooted at this object.
114
122
  **/
@@ -1 +1 @@
1
- {"version":3,"file":"hierarchy.d.ts","sourceRoot":"","sources":["../src/hierarchy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAe,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAM3F;;;;IAII;AACJ,wBAAgB,YAAY,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAE7G;AAED;;;;;IAKI;AACJ,wBAAgB,cAAc,CAAC,MAAM,SAAS,MAAM,EAClD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EACpB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EACnB,KAAK,EAAE,MAAM,GACZ,MAAM,CAAC,MAAM,CAAC,CAgDhB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAI9G;AAED;;;IAGI;AACJ,wBAAgB,iBAAiB,CAAC,MAAM,SAAS,MAAM,EACrD,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAC9B,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAC5B,OAAO,CAMT;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,SAAS,MAAM,EACpD,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAC9B,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,GAC/D,IAAI,CAMN;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,MAAM,CAAC,MAAM,CAAC,EAAE,CAQjH;AAED;;;IAGI;AACJ,wBAAgB,cAAc,CAAC,MAAM,SAAS,MAAM,EAClD,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAC9B,KAAK,EAAE,MAAM,GACZ,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAMvB;AAED;;;;IAII;AACJ,wBAAgB,kBAAkB,CAAC,MAAM,SAAS,MAAM,EACtD,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAC9B,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAQvB;AAED,wBAAgB,iBAAiB,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAG/F;AAED;;IAEI;AACJ,wBAAgB,iBAAiB,CAAC,MAAM,SAAS,MAAM,EACrD,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAC9B,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAC5B,MAAM,CAQR;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,SAAS,MAAM,EACzD,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EACzB,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GACxB,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAevB;AAED,wBAAgB,aAAa,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAE1G;AAED;;;IAGI;AACJ,wBAAgB,WAAW,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAQjG;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,SAAS,MAAM,EACpD,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAChC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GACjC,OAAO,CAOT;AAED;;;;;;;IAOI;AACJ,wBAAgB,eAAe,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAqBhH;AAED;;;;;;;IAOI;AACJ,wBAAgB,iBAAiB,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAMnH;AAED;;;;IAII;AACJ,wBAAgB,kBAAkB,CAAC,MAAM,SAAS,MAAM,EACtD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EACpB,UAAU,GAAE,MAAU,EACtB,QAAQ,CAAC,EAAE,MAAM,GAChB,IAAI,CAkBN;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,MAAM,SAAS,MAAM,EAChD,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,EAC9B,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,GACjC,MAAM,CAAC,MAAM,CAAC,CAkChB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,SAAS,MAAM,EACpD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EACpB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EACtB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,GACrB,IAAI,CAKN;AAED;;;IAGI;AACJ,wBAAgB,iBAAiB,CAAC,MAAM,SAAS,MAAM,EACrD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EACpB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EACnB,KAAK,EAAE,MAAM,GACZ,IAAI,CAaN;AAED;;IAEI;AAGJ;;;;IAII;AACJ,wBAAgB,gBAAgB,CAAC,MAAM,SAAS,MAAM,EACpD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EACpB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EACpB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GACnB,IAAI,CAWN;AAED;;;;IAII;AACJ,wBAAgB,kBAAkB,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAapH"}
1
+ {"version":3,"file":"hierarchy.d.ts","sourceRoot":"","sources":["../src/hierarchy.ts"],"names":[],"mappings":"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"}