@flighthq/node 0.3.0 → 0.3.1-next.1050.9114695

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 (60) hide show
  1. package/dist/boundsRectangle.d.ts +3 -3
  2. package/dist/boundsRectangle.d.ts.map +1 -1
  3. package/dist/boundsRectangle.js +63 -11
  4. package/dist/boundsRectangle.js.map +1 -1
  5. package/dist/contract.d.ts +1 -0
  6. package/dist/contract.d.ts.map +1 -1
  7. package/dist/contract.js +1 -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.map +1 -1
  18. package/dist/hasBoundsRectangle.js +4 -0
  19. package/dist/hasBoundsRectangle.js.map +1 -1
  20. package/dist/hasTransform3d.d.ts.map +1 -1
  21. package/dist/hasTransform3d.js +11 -4
  22. package/dist/hasTransform3d.js.map +1 -1
  23. package/dist/hierarchy.d.ts +15 -7
  24. package/dist/hierarchy.d.ts.map +1 -1
  25. package/dist/hierarchy.js +46 -25
  26. package/dist/hierarchy.js.map +1 -1
  27. package/dist/index.d.ts +1 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +1 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/nodeColorAdjustment.d.ts.map +1 -1
  32. package/dist/nodeColorAdjustment.js +1 -7
  33. package/dist/nodeColorAdjustment.js.map +1 -1
  34. package/dist/nodeOrderList.d.ts.map +1 -1
  35. package/dist/nodeOrderList.js +9 -2
  36. package/dist/nodeOrderList.js.map +1 -1
  37. package/dist/nodeTransform2d.d.ts.map +1 -1
  38. package/dist/nodeTransform2d.js +1 -1
  39. package/dist/nodeTransform2d.js.map +1 -1
  40. package/dist/revision.d.ts +2 -1
  41. package/dist/revision.d.ts.map +1 -1
  42. package/dist/revision.js +9 -4
  43. package/dist/revision.js.map +1 -1
  44. package/dist/stageFit.d.ts.map +1 -1
  45. package/dist/stageFit.js +8 -2
  46. package/dist/stageFit.js.map +1 -1
  47. package/package.json +9 -7
  48. package/src/boundsRectangle.test.ts +320 -7
  49. package/src/enableNodeGuards.test.ts +78 -0
  50. package/src/hasAppearance.test.ts +33 -3
  51. package/src/hasTransform2d.test.ts +6 -0
  52. package/src/hasTransform3d.test.ts +40 -8
  53. package/src/hierarchy.test.ts +223 -3
  54. package/src/node.test.ts +11 -1
  55. package/src/nodeColorAdjustment.test.ts +11 -0
  56. package/src/nodeOrderList.test.ts +84 -18
  57. package/src/nodeTransform2d.test.ts +45 -0
  58. package/src/revision.test.ts +26 -0
  59. package/src/stageFit.test.ts +56 -1
  60. package/src/traversal.test.ts +32 -2
@@ -9,9 +9,9 @@ export declare function computeNodeBoundsRectangle<Traits extends object>(out: R
9
9
  * root's own local transform is identity. A child's transform is still relative to the root and
10
10
  * nested transforms compose normally.
11
11
  *
12
- * This differs intentionally from computeNodeBoundsRectangle(out, root, root): a detached root takes
13
- * that helper's world-bounds branch, whose axis-aligned world box cannot be inverted tightly after a
14
- * root rotation. Offscreen subtree capture uses this contract together with
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
15
  * computeScene2DRenderTargetTransform so the root transform cancels exactly.
16
16
  */
17
17
  export declare function computeNodeRootLocalBoundsRectangle<Traits extends object>(out: RectangleLike, root: Spatial2DNode<Traits>): void;
@@ -1 +1 @@
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,CA0BN;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,CAezG;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"}
@@ -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
@@ -44,9 +40,9 @@ export function computeNodeBoundsRectangle(out, source, targetCoordinateSpace) {
44
40
  * root's own local transform is identity. A child's transform is still relative to the root and
45
41
  * nested transforms compose normally.
46
42
  *
47
- * This differs intentionally from computeNodeBoundsRectangle(out, root, root): a detached root takes
48
- * that helper's world-bounds branch, whose axis-aligned world box cannot be inverted tightly after a
49
- * root rotation. Offscreen subtree capture uses this contract together with
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
50
46
  * computeScene2DRenderTargetTransform so the root transform cancels exactly.
51
47
  */
52
48
  export function computeNodeRootLocalBoundsRectangle(out, root) {
@@ -79,7 +75,11 @@ export function ensureNodeWorldBoundsRectangle(target) {
79
75
  forceRecompute = true;
80
76
  }
81
77
  ensureNodeWorldMatrix(target);
82
- 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) {
83
83
  recomputeWorldBoundsRectangle(target, runtime);
84
84
  }
85
85
  }
@@ -115,13 +115,37 @@ export function getNodeWorldBoundsRectangle(target) {
115
115
  export function setNodeHeight(target, value) {
116
116
  if (target.scaleY === 0)
117
117
  return;
118
- 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));
119
131
  invalidateNodeLocalTransform(target);
120
132
  }
121
133
  export function setNodeWidth(target, value) {
122
134
  if (target.scaleX === 0)
123
135
  return;
124
- 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));
125
149
  invalidateNodeLocalTransform(target);
126
150
  }
127
151
  function recomputeNodeBoundsRectangle(target, runtime) {
@@ -135,6 +159,33 @@ function isNodeLocalBoundsRectangleValid(target, runtime) {
135
159
  return (runtime.localBoundsUsingLocalBoundsId === runtime.localBoundsId &&
136
160
  (runtime.isLocalBoundsRectangleValid?.(target) ?? true));
137
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
+ }
138
189
  function mergeRootLocalBounds(out, node, transform) {
139
190
  const localBounds = getNodeLocalBoundsRectangle(node);
140
191
  if (transform === null) {
@@ -203,4 +254,5 @@ function tryFastRecomputeWorldBoundsRectangle(target, runtime) {
203
254
  }
204
255
  const _tempBoundsRectangle = createRectangle();
205
256
  const _rootLocalNodeBounds = createRectangle();
257
+ const SINGULAR_AXIS_EPSILON = 1e-12;
206
258
  //# sourceMappingURL=boundsRectangle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"boundsRectangle.js","sourceRoot":"","sources":["../src/boundsRectangle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACL,aAAa,EACb,UAAU,EACV,aAAa,EACb,eAAe,EACf,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAYrC,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAClG,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAE1D;;;IAGI;AACJ,MAAM,UAAU,0BAA0B,CACxC,GAAkB,EAClB,MAA6B,EAC7B,qBAA+D;IAE/D,IAAI,CAAC,qBAAqB;QAAE,qBAAqB,GAAG,MAAM,CAAC;IAC3D,IAAI,MAAM,CAAC;IACX,IAAI,aAAa,CAAC,qBAAqB,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,4CAA4C;QAC5C,MAAM,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;SAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,uCAAuC;QACvC,IAAI,qBAAqB,KAAK,MAAM,EAAE,CAAC;YACrC,0CAA0C;YAC1C,MAAM,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,qBAAqB,KAAM,aAAa,CAAC,MAAM,CAAkC,EAAE,CAAC;YAC7F,sCAAsC;YACtC,MAAM,GAAG,4BAA4B,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,sDAAsD;QACtD,MAAM,WAAW,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,aAAa,CAAC,SAAS,EAAE,kBAAkB,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACpE,wBAAwB,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACtD,aAAa,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mCAAmC,CACjD,GAAkB,EAClB,IAA2B;IAE3B,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACvB,oBAAoB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAwB,MAA0B;IAC9F,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAoD,CAAC;IAC5F,IAAI,CAAC,+BAA+B,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;QACtD,6BAA6B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAwB,MAA6B;IAClG,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAoD,CAAC;IAC5F,IACE,CAAC,+BAA+B,CAAC,MAAM,EAAE,OAAO,CAAC;QACjD,OAAO,CAAC,wBAAwB,KAAK,OAAO,CAAC,aAAa;QAC1D,OAAO,CAAC,2BAA2B,KAAK,OAAO,CAAC,gBAAgB,EAChE,CAAC;QACD,4BAA4B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAwB,MAA6B;IACjG,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAA4E,CAAC;IACpH,MAAM,kBAAkB,GACtB,CAAC,+BAA+B,CAAC,MAAM,EAAE,OAAO,CAAC;QACjD,OAAO,CAAC,6BAA6B,KAAK,OAAO,CAAC,aAAa,CAAC;IAClE,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,CAAC,WAAW,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxC,IAAI,oCAAoC,CAAC,MAAM,EAAE,OAAO,CAAC;YAAE,OAAO;QAClE,cAAc,GAAG,IAAI,CAAC;IACxB,CAAC;IACD,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,cAAc,IAAI,kBAAkB,IAAI,OAAO,CAAC,gCAAgC,KAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAClH,6BAA6B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAwB,MAA6B;IAChF,0BAA0B,CACxB,oBAAoB,EACpB,MAAM,EACN,aAAa,CAAC,MAAM,CAA4C,CACjE,CAAC;IACF,OAAO,oBAAoB,CAAC,MAAM,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAwB,MAA0B;IAC3F,8BAA8B,CAAC,MAAM,CAAC,CAAC;IACvC,OAAQ,gBAAgB,CAAC,MAAM,CAA+B,CAAC,oBAAqB,CAAC;AACvF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC1C,MAA6B;IAE7B,+BAA+B,CAAC,MAAM,CAAC,CAAC;IACxC,OAAQ,gBAAgB,CAAC,MAAM,CAA+B,CAAC,eAAgB,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,YAAY,CAAwB,MAA6B;IAC/E,0BAA0B,CACxB,oBAAoB,EACpB,MAAM,EACN,aAAa,CAAC,MAAM,CAA4C,CACjE,CAAC;IACF,OAAO,oBAAoB,CAAC,KAAK,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAwB,MAA6B;IAC9F,8BAA8B,CAAC,MAAM,CAAC,CAAC;IACvC,OAAQ,gBAAgB,CAAC,MAAM,CAA+B,CAAC,oBAAqB,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,aAAa,CAAwB,MAA6B,EAAE,KAAa;IAC/F,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAChC,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAChE,4BAA4B,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,YAAY,CAAwB,MAA6B,EAAE,KAAa;IAC9F,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAChC,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAC/D,4BAA4B,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,4BAA4B,CACnC,MAA6B,EAC7B,OAAwD;IAExD,IAAI,OAAO,CAAC,eAAe,KAAK,IAAI;QAAE,OAAO,CAAC,eAAe,GAAG,eAAe,EAAE,CAAC;IAClF,wBAAwB,CAAC,OAAO,CAAC,eAAe,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC;IACnH,OAAO,CAAC,wBAAwB,GAAG,OAAO,CAAC,aAAa,CAAC;IACzD,OAAO,CAAC,2BAA2B,GAAG,OAAO,CAAC,gBAAgB,CAAC;AACjE,CAAC;AAED,SAAS,+BAA+B,CACtC,MAA0B,EAC1B,OAAwD;IAExD,OAAO,CACL,OAAO,CAAC,6BAA6B,KAAK,OAAO,CAAC,aAAa;QAC/D,CAAC,OAAO,CAAC,2BAA2B,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CACxD,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,GAAkB,EAClB,IAA2B,EAC3B,SAAkC;IAElC,MAAM,WAAW,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,aAAa,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,wBAAwB,CAAC,oBAAoB,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IACzE,CAAC;IACD,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;IAC/C,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO;IAC9B,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,SAAS;QAC7B,MAAM,cAAc,GAAG,aAAa,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAA8B,CAAC,CAAC;QACtE,IAAI,SAAS,KAAK,IAAI;YAAE,UAAU,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;;YAC1D,cAAc,CAAC,cAAc,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAC3D,oBAAoB,CAAC,GAAG,EAAE,KAA8B,EAAE,cAAc,CAAC,CAAC;QAC1E,aAAa,CAAC,cAAc,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,SAAS,6BAA6B,CACpC,MAA0B,EAC1B,OAAwD;IAExD,IAAI,OAAO,CAAC,oBAAoB,KAAK,IAAI;QAAE,OAAO,CAAC,oBAAoB,GAAG,eAAe,EAAE,CAAC;IAC5F,OAAO,CAAC,2BAA2B,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IAC1E,OAAO,CAAC,6BAA6B,GAAG,OAAO,CAAC,aAAa,CAAC;AAChE,CAAC;AAED,SAAS,6BAA6B,CACpC,MAA6B,EAC7B,OAAgF;IAEhF,IAAI,OAAO,CAAC,oBAAoB,KAAK,IAAI;QAAE,OAAO,CAAC,oBAAoB,GAAG,eAAe,EAAE,CAAC;IAC5F,wBAAwB,CACtB,OAAO,CAAC,oBAAoB,EAC5B,kBAAkB,CAAC,MAAM,CAAC,EAC1B,2BAA2B,CAAC,MAAM,CAAC,CACpC,CAAC;IACF,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;IACjD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,OAAO;gBAAE,SAAS;YAC7B,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,KAA8B,CAAC,CAAC;YACrF,IAAI,gBAAgB,CAAC,KAAK,KAAK,CAAC,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClE,cAAc,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;YAC/F,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,gCAAgC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IACpE,OAAO,CAAC,6BAA6B,GAAG,OAAO,CAAC,aAAa,CAAC;AAChE,CAAC;AAED,SAAS,oCAAoC,CAC3C,MAA6B,EAC7B,OAA0D;IAE1D,IAAI,OAAO,CAAC,oBAAoB,KAAK,IAAI,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QAC1E,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;QAC7E,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;QACnD,yCAAyC;QACzC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YACjD,cAAc;YACd,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBAC7B,OAAO,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC;gBAC3C,OAAO,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC;YAC7C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,oBAAoB,GAAG,eAAe,EAAE,CAAC;AAC/C,MAAM,oBAAoB,GAAG,eAAe,EAAE,CAAC"}
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';
@@ -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,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"}
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';
@@ -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,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"}
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 +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,CAChB,OAAO,CAAC,SAAS,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,yBAAyB,EAAE,6BAA6B,CAAC,CAAC,CAC/G,GACA,IAAI,CAMN;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"}
@@ -6,5 +6,9 @@ export function initBoundsRectangleRuntimeTrait(target, methods) {
6
6
  target.computeLocalBoundsRectangle = methods?.computeLocalBoundsRectangle ?? defaultComputeLocalBoundsRectangle;
7
7
  target.isLocalBoundsRectangleValid = methods?.isLocalBoundsRectangleValid ?? null;
8
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.
9
13
  export function initBoundsRectangleTrait(_target, _obj) { }
10
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,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,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":"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"}
1
+ {"version":3,"file":"hierarchy.d.ts","sourceRoot":"","sources":["../src/hierarchy.ts"],"names":[],"mappings":"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"}
package/dist/hierarchy.js CHANGED
@@ -1,8 +1,8 @@
1
- import { acquireMatrix, copyMatrix, inverseMatrix, multiplyMatrix, releaseMatrix } from '@flighthq/geometry/contract';
1
+ import { acquireMatrix, copyMatrix, decomposeMatrixToTransform2D, inverseMatrix, multiplyMatrix, releaseMatrix, } from '@flighthq/geometry/contract';
2
2
  import { emitSignal } from '@flighthq/signals/contract';
3
3
  import { getNodeRuntime } from './node';
4
4
  import { ensureNodeWorldMatrix, getNodeWorldMatrix } from './nodeTransform2d';
5
- import { invalidateNodeLocalTransform, invalidateNodeParentReference } from './revision';
5
+ import { invalidateNodeLocalTransform, invalidateNodeParentReference, invalidateNodeWorldBounds } from './revision';
6
6
  /**
7
7
  * Adds a child Node instance to this Node
8
8
  * instance. The child is added to the front (top) of all other children in
@@ -26,6 +26,9 @@ export function addNodeChildAt(target, child, index) {
26
26
  else if (child === target) {
27
27
  throw new TypeError('An object cannot be added as a child of itself');
28
28
  }
29
+ else if (isNodeAncestorOf(child, target)) {
30
+ throw new TypeError('An ancestor cannot be added as a child of its descendant');
31
+ }
29
32
  else if (index < 0 || (children !== null && index > children.length) || (children === null && index > 0)) {
30
33
  throwOutOfBoundsError();
31
34
  }
@@ -37,9 +40,11 @@ export function addNodeChildAt(target, child, index) {
37
40
  }
38
41
  const childRuntime = getNodeRuntime(child);
39
42
  const parent = childRuntime.parent;
43
+ let wasChild = false;
40
44
  if (parent === target) {
41
45
  const i = children.indexOf(child);
42
46
  if (i !== -1) {
47
+ wasChild = true;
43
48
  // `index === children.length` means append. An already-last child is therefore unchanged.
44
49
  if (i === Math.min(index, children.length - 1))
45
50
  return child;
@@ -53,6 +58,8 @@ export function addNodeChildAt(target, child, index) {
53
58
  }
54
59
  children.splice(index, 0, child);
55
60
  invalidateNodeChildren(targetRuntime);
61
+ if (!wasChild)
62
+ invalidateNodeWorldBounds(target);
56
63
  const targetSignals = targetRuntime.nodeSignals;
57
64
  if (targetSignals !== null)
58
65
  emitSignal(targetSignals.onChildrenChanged);
@@ -230,6 +237,7 @@ export function removeNodeChild(target, child) {
230
237
  if (i !== -1) {
231
238
  children.splice(i, 1);
232
239
  invalidateNodeChildren(targetRuntime);
240
+ invalidateNodeWorldBounds(target);
233
241
  }
234
242
  const targetSignals = targetRuntime.nodeSignals;
235
243
  if (targetSignals !== null) {
@@ -278,43 +286,51 @@ export function removeNodeChildren(target, beginIndex = 0, endIndex) {
278
286
  }
279
287
  }
280
288
  /**
281
- * Moves a child to a new parent while preserving its world-space position.
282
- * The child's local TRS fields (x, y, rotation, scaleX, scaleY) are recomputed
283
- * so its visual position, rotation, and scale remain unchanged. Existing skewX/skewY
284
- * values are preserved (skew is not decomposable from a general affine matrix).
289
+ * Moves a child to a new parent while preserving its world-space position, and reports whether it
290
+ * did. The child's local transform fields are recomputed so its effective world transform remains
291
+ * unchanged. Its pivot is preserved; rotation and skew may be reparameterized because a general
292
+ * affine matrix has multiple equivalent decompositions.
293
+ *
294
+ * Returns `false`, having changed NOTHING — neither the attachment nor the transform — when
295
+ * `newParent`'s world matrix has no inverse (a zero scale anywhere in its ancestry). This is not a
296
+ * computation that went wrong: under a singular parent there EXISTS no local transform that would
297
+ * preserve the child's world transform, so there is no right answer to write and inventing one is
298
+ * the defect. Declining whole is what keeps the caller out of a half-applied state it would have to
299
+ * untangle without being told which half happened.
285
300
  *
286
- * To reparent without preserving world position (keeping local TRS unchanged),
287
- * use addNodeChild instead.
301
+ * To reparent without preserving world position (keeping local TRS unchanged), use addNodeChild
302
+ * instead that is also the composition to reach for when a caller wants the attachment regardless.
288
303
  */
289
304
  export function reparentNode(child, newParent) {
290
305
  ensureNodeWorldMatrix(child);
306
+ ensureNodeWorldMatrix(newParent);
291
307
  const oldWorld = acquireMatrix();
292
308
  const localM = acquireMatrix();
293
309
  try {
294
310
  copyMatrix(oldWorld, getNodeWorldMatrix(child));
311
+ // Inverted BEFORE attaching, which is what makes "no mutation at all" achievable rather than a
312
+ // rollback: the parent's world transform does not depend on the child, so this is the same matrix
313
+ // it would be afterwards.
314
+ if (!inverseMatrix(localM, getNodeWorldMatrix(newParent))) {
315
+ reparentNodeGuard?.(child, newParent);
316
+ return false;
317
+ }
295
318
  addNodeChild(newParent, child);
296
- inverseMatrix(localM, getNodeWorldMatrix(newParent));
297
319
  multiplyMatrix(localM, localM, oldWorld);
298
- const a = localM.a;
299
- const b = localM.b;
300
- const c = localM.c;
301
- const d = localM.d;
302
- child.scaleX = Math.sqrt(a * a + b * b);
303
- child.scaleY = Math.sqrt(c * c + d * d);
304
- if (a * d - b * c < 0) {
305
- child.scaleY = -child.scaleY;
306
- }
307
- const skewYRad = child.skewY * DEG_TO_RAD;
308
- child.rotation = (Math.atan2(b, a) - skewYRad) * RAD_TO_DEG;
309
- child.x = localM.tx + (a * child.pivotX + c * child.pivotY);
310
- child.y = localM.ty + (b * child.pivotX + d * child.pivotY);
320
+ const pivotX = child.pivotX;
321
+ const pivotY = child.pivotY;
322
+ decomposeMatrixToTransform2D(child, localM);
323
+ child.pivotX = pivotX;
324
+ child.pivotY = pivotY;
325
+ child.x = localM.tx + (localM.a * pivotX + localM.c * pivotY);
326
+ child.y = localM.ty + (localM.b * pivotX + localM.d * pivotY);
311
327
  invalidateNodeLocalTransform(child);
312
328
  }
313
329
  finally {
314
330
  releaseMatrix(oldWorld);
315
331
  releaseMatrix(localM);
316
332
  }
317
- return child;
333
+ return true;
318
334
  }
319
335
  /**
320
336
  * Replaces `oldChild` with `newChild` at the same index position in `target`'s children. If
@@ -350,6 +366,11 @@ export function setNodeChildIndex(target, child, index) {
350
366
  }
351
367
  }
352
368
  }
369
+ // The seam the guard layer installs into; `null` keeps this module free of message text and of any
370
+ // dependency on @flighthq/log.
371
+ export function setReparentNodeGuard(guard) {
372
+ reparentNodeGuard = guard;
373
+ }
353
374
  /**
354
375
  * Recursively stops the timeline execution of all MovieClips rooted at this object.
355
376
  **/
@@ -407,6 +428,6 @@ function invalidateNodeChildren(runtime) {
407
428
  function throwOutOfBoundsError() {
408
429
  throw new RangeError('The supplied index is out of bounds.');
409
430
  }
410
- const DEG_TO_RAD = Math.PI / 180;
411
- const RAD_TO_DEG = 180 / Math.PI;
431
+ // Module state for the opt-in guard seam above; see enableNodeGuards.
432
+ let reparentNodeGuard = null;
412
433
  //# sourceMappingURL=hierarchy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hierarchy.js","sourceRoot":"","sources":["../src/hierarchy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hierarchy.js","sourceRoot":"","sources":["../src/hierarchy.ts"],"names":[],"mappings":"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"}