@flighthq/node 0.3.0-next.1032.e2b99fc → 0.3.0-next.1220.6982c21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/boundsRectangle.d.ts +11 -0
- package/dist/boundsRectangle.d.ts.map +1 -1
- package/dist/boundsRectangle.js +41 -1
- package/dist/boundsRectangle.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
- package/src/boundsRectangle.test.ts +40 -0
|
@@ -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): 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
|
|
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":"
|
|
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,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"}
|
package/dist/boundsRectangle.js
CHANGED
|
@@ -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';
|
|
@@ -39,6 +39,20 @@ export function computeNodeBoundsRectangle(out, source, targetCoordinateSpace) {
|
|
|
39
39
|
copyRectangle(out, bounds);
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Writes the tight bounds of `root` and its enabled descendants in a coordinate system where the
|
|
44
|
+
* root's own local transform is identity. A child's transform is still relative to the root and
|
|
45
|
+
* nested transforms compose normally.
|
|
46
|
+
*
|
|
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
|
|
50
|
+
* computeScene2DRenderTargetTransform so the root transform cancels exactly.
|
|
51
|
+
*/
|
|
52
|
+
export function computeNodeRootLocalBoundsRectangle(out, root) {
|
|
53
|
+
setEmptyRectangle(out);
|
|
54
|
+
mergeRootLocalBounds(out, root, null);
|
|
55
|
+
}
|
|
42
56
|
export function ensureNodeLocalBoundsRectangle(target) {
|
|
43
57
|
const runtime = getEntityRuntime(target);
|
|
44
58
|
if (runtime.localBoundsUsingLocalBoundsId !== runtime.localBoundsId) {
|
|
@@ -115,6 +129,31 @@ function recomputeNodeBoundsRectangle(target, runtime) {
|
|
|
115
129
|
runtime.boundsUsingLocalBoundsId = runtime.localBoundsId;
|
|
116
130
|
runtime.boundsUsingLocalTransformId = runtime.localTransformId;
|
|
117
131
|
}
|
|
132
|
+
function mergeRootLocalBounds(out, node, transform) {
|
|
133
|
+
const localBounds = getNodeLocalBoundsRectangle(node);
|
|
134
|
+
if (transform === null) {
|
|
135
|
+
copyRectangle(_rootLocalNodeBounds, localBounds);
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
matrixTransformRectangle(_rootLocalNodeBounds, transform, localBounds);
|
|
139
|
+
}
|
|
140
|
+
mergeRectangle(out, out, _rootLocalNodeBounds);
|
|
141
|
+
const children = getNodeRuntime(node).children;
|
|
142
|
+
if (children === null)
|
|
143
|
+
return;
|
|
144
|
+
for (const child of children) {
|
|
145
|
+
if (!child.enabled)
|
|
146
|
+
continue;
|
|
147
|
+
const childTransform = acquireMatrix();
|
|
148
|
+
const childLocal = getNodeLocalMatrix(child);
|
|
149
|
+
if (transform === null)
|
|
150
|
+
copyMatrix(childTransform, childLocal);
|
|
151
|
+
else
|
|
152
|
+
multiplyMatrix(childTransform, transform, childLocal);
|
|
153
|
+
mergeRootLocalBounds(out, child, childTransform);
|
|
154
|
+
releaseMatrix(childTransform);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
118
157
|
function recomputeLocalBoundsRectangle(target, runtime) {
|
|
119
158
|
if (runtime.localBoundsRectangle === null)
|
|
120
159
|
runtime.localBoundsRectangle = createRectangle();
|
|
@@ -157,4 +196,5 @@ function tryFastRecomputeWorldBoundsRectangle(target, runtime) {
|
|
|
157
196
|
return false;
|
|
158
197
|
}
|
|
159
198
|
const _tempBoundsRectangle = createRectangle();
|
|
199
|
+
const _rootLocalNodeBounds = createRectangle();
|
|
160
200
|
//# 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,aAAa,EACb,eAAe,EACf,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,aAAa,
|
|
1
|
+
{"version":3,"file":"boundsRectangle.js","sourceRoot":"","sources":["../src/boundsRectangle.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { addNodeChild, addNodeChildAt, addNodeChildren, addNodeColorAdjustment, computeNodeBoundsRectangle, computeScene2DFitAlignX, computeScene2DFitAlignY, computeScene2DFitFillScale, computeScene2DFitScale, computeScene2DFitTransform, containsNodeChild, convertNodeVector2GlobalToLocal, convertNodeVector2LocalToGlobal, convertNodeVector3GlobalToLocal, convertNodeVector3LocalToGlobal, createNode, createViewport, disposeNode, enableNodeSignals, findNode, findNodeByName, forEachNodeAncestor, forEachNodeChild, forEachNodeDescendant, getNodeAncestors, getNodeAppearanceRevision, getNodeChildAt, getNodeChildByName, getNodeChildCount, getNodeChildIndex, getNodeChildren, getNodeColorAdjustments, getNodeCommonAncestor, getNodeDepth, getNodeHeight, getNodeLocalBoundsRectangle, getNodeLocalBoundsRevision, getNodeLocalContentRevision, getNodeLocalMatrix, getNodeLocalMatrix4, getNodeLocalTransformRevision, getNodeNextSibling, getNodeParent, getNodeParentBoundsRectangle, getNodePreviousSibling, getNodeRoot, getNodeSignals, getNodeTransform2D, getNodeTransform3D, getNodeWidth, getNodeWorldBoundsRectangle, getNodeWorldMatrix, getNodeWorldMatrix4, getNodeWorldTransformRevision, getViewportAspect, invalidateNodeAppearance, invalidateNodeLocalTransform, invalidateNodeRender, isNodeAncestorOf, isNodeLocalMatrix4Detached, removeNodeChild, removeNodeChildAt, removeNodeChildren, reparentNode, replaceNodeChild, setNodeChildIndex, setNodeColorAdjustments, setNodeColorAdjustmentsTint, setNodeEnabled, setNodeHeight, setNodeLocalMatrix, setNodeLocalMatrix4, setNodeTransform2D, setNodeTransform3D, setNodeWidth, swapNodeChildren, swapNodeChildrenAt, walkNodeDescendants, } from './contract';
|
|
1
|
+
export { addNodeChild, addNodeChildAt, addNodeChildren, addNodeColorAdjustment, computeNodeBoundsRectangle, computeNodeRootLocalBoundsRectangle, computeScene2DFitAlignX, computeScene2DFitAlignY, computeScene2DFitFillScale, computeScene2DFitScale, computeScene2DFitTransform, containsNodeChild, convertNodeVector2GlobalToLocal, convertNodeVector2LocalToGlobal, convertNodeVector3GlobalToLocal, convertNodeVector3LocalToGlobal, createNode, createViewport, disposeNode, enableNodeSignals, findNode, findNodeByName, forEachNodeAncestor, forEachNodeChild, forEachNodeDescendant, getNodeAncestors, getNodeAppearanceRevision, getNodeChildAt, getNodeChildByName, getNodeChildCount, getNodeChildIndex, getNodeChildren, getNodeColorAdjustments, getNodeCommonAncestor, getNodeDepth, getNodeHeight, getNodeLocalBoundsRectangle, getNodeLocalBoundsRevision, getNodeLocalContentRevision, getNodeLocalMatrix, getNodeLocalMatrix4, getNodeLocalTransformRevision, getNodeNextSibling, getNodeParent, getNodeParentBoundsRectangle, getNodePreviousSibling, getNodeRoot, getNodeSignals, getNodeTransform2D, getNodeTransform3D, getNodeWidth, getNodeWorldBoundsRectangle, getNodeWorldMatrix, getNodeWorldMatrix4, getNodeWorldTransformRevision, getViewportAspect, invalidateNodeAppearance, invalidateNodeLocalTransform, invalidateNodeRender, isNodeAncestorOf, isNodeLocalMatrix4Detached, removeNodeChild, removeNodeChildAt, removeNodeChildren, reparentNode, replaceNodeChild, setNodeChildIndex, setNodeColorAdjustments, setNodeColorAdjustmentsTint, setNodeEnabled, setNodeHeight, setNodeLocalMatrix, setNodeLocalMatrix4, setNodeTransform2D, setNodeTransform3D, setNodeWidth, swapNodeChildren, swapNodeChildrenAt, walkNodeDescendants, } from './contract';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,0BAA0B,EAC1B,iBAAiB,EACjB,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,EAC/B,UAAU,EACV,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,yBAAyB,EACzB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,6BAA6B,EAC7B,kBAAkB,EAClB,aAAa,EACb,4BAA4B,EAC5B,sBAAsB,EACtB,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,6BAA6B,EAC7B,iBAAiB,EACjB,wBAAwB,EACxB,4BAA4B,EAC5B,oBAAoB,EACpB,gBAAgB,EAChB,0BAA0B,EAC1B,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,2BAA2B,EAC3B,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,0BAA0B,EAC1B,mCAAmC,EACnC,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,0BAA0B,EAC1B,iBAAiB,EACjB,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,EAC/B,UAAU,EACV,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,yBAAyB,EACzB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,6BAA6B,EAC7B,kBAAkB,EAClB,aAAa,EACb,4BAA4B,EAC5B,sBAAsB,EACtB,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,6BAA6B,EAC7B,iBAAiB,EACjB,wBAAwB,EACxB,4BAA4B,EAC5B,oBAAoB,EACpB,gBAAgB,EAChB,0BAA0B,EAC1B,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,2BAA2B,EAC3B,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { addNodeChild, addNodeChildAt, addNodeChildren, addNodeColorAdjustment, computeNodeBoundsRectangle, computeScene2DFitAlignX, computeScene2DFitAlignY, computeScene2DFitFillScale, computeScene2DFitScale, computeScene2DFitTransform, containsNodeChild, convertNodeVector2GlobalToLocal, convertNodeVector2LocalToGlobal, convertNodeVector3GlobalToLocal, convertNodeVector3LocalToGlobal, createNode, createViewport, disposeNode, enableNodeSignals, findNode, findNodeByName, forEachNodeAncestor, forEachNodeChild, forEachNodeDescendant, getNodeAncestors, getNodeAppearanceRevision, getNodeChildAt, getNodeChildByName, getNodeChildCount, getNodeChildIndex, getNodeChildren, getNodeColorAdjustments, getNodeCommonAncestor, getNodeDepth, getNodeHeight, getNodeLocalBoundsRectangle, getNodeLocalBoundsRevision, getNodeLocalContentRevision, getNodeLocalMatrix, getNodeLocalMatrix4, getNodeLocalTransformRevision, getNodeNextSibling, getNodeParent, getNodeParentBoundsRectangle, getNodePreviousSibling, getNodeRoot, getNodeSignals, getNodeTransform2D, getNodeTransform3D, getNodeWidth, getNodeWorldBoundsRectangle, getNodeWorldMatrix, getNodeWorldMatrix4, getNodeWorldTransformRevision, getViewportAspect, invalidateNodeAppearance, invalidateNodeLocalTransform, invalidateNodeRender, isNodeAncestorOf, isNodeLocalMatrix4Detached, removeNodeChild, removeNodeChildAt, removeNodeChildren, reparentNode, replaceNodeChild, setNodeChildIndex, setNodeColorAdjustments, setNodeColorAdjustmentsTint, setNodeEnabled, setNodeHeight, setNodeLocalMatrix, setNodeLocalMatrix4, setNodeTransform2D, setNodeTransform3D, setNodeWidth, swapNodeChildren, swapNodeChildrenAt, walkNodeDescendants, } from './contract';
|
|
1
|
+
export { addNodeChild, addNodeChildAt, addNodeChildren, addNodeColorAdjustment, computeNodeBoundsRectangle, computeNodeRootLocalBoundsRectangle, computeScene2DFitAlignX, computeScene2DFitAlignY, computeScene2DFitFillScale, computeScene2DFitScale, computeScene2DFitTransform, containsNodeChild, convertNodeVector2GlobalToLocal, convertNodeVector2LocalToGlobal, convertNodeVector3GlobalToLocal, convertNodeVector3LocalToGlobal, createNode, createViewport, disposeNode, enableNodeSignals, findNode, findNodeByName, forEachNodeAncestor, forEachNodeChild, forEachNodeDescendant, getNodeAncestors, getNodeAppearanceRevision, getNodeChildAt, getNodeChildByName, getNodeChildCount, getNodeChildIndex, getNodeChildren, getNodeColorAdjustments, getNodeCommonAncestor, getNodeDepth, getNodeHeight, getNodeLocalBoundsRectangle, getNodeLocalBoundsRevision, getNodeLocalContentRevision, getNodeLocalMatrix, getNodeLocalMatrix4, getNodeLocalTransformRevision, getNodeNextSibling, getNodeParent, getNodeParentBoundsRectangle, getNodePreviousSibling, getNodeRoot, getNodeSignals, getNodeTransform2D, getNodeTransform3D, getNodeWidth, getNodeWorldBoundsRectangle, getNodeWorldMatrix, getNodeWorldMatrix4, getNodeWorldTransformRevision, getViewportAspect, invalidateNodeAppearance, invalidateNodeLocalTransform, invalidateNodeRender, isNodeAncestorOf, isNodeLocalMatrix4Detached, removeNodeChild, removeNodeChildAt, removeNodeChildren, reparentNode, replaceNodeChild, setNodeChildIndex, setNodeColorAdjustments, setNodeColorAdjustmentsTint, setNodeEnabled, setNodeHeight, setNodeLocalMatrix, setNodeLocalMatrix4, setNodeTransform2D, setNodeTransform3D, setNodeWidth, swapNodeChildren, swapNodeChildrenAt, walkNodeDescendants, } from './contract';
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,0BAA0B,EAC1B,iBAAiB,EACjB,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,EAC/B,UAAU,EACV,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,yBAAyB,EACzB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,6BAA6B,EAC7B,kBAAkB,EAClB,aAAa,EACb,4BAA4B,EAC5B,sBAAsB,EACtB,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,6BAA6B,EAC7B,iBAAiB,EACjB,wBAAwB,EACxB,4BAA4B,EAC5B,oBAAoB,EACpB,gBAAgB,EAChB,0BAA0B,EAC1B,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,2BAA2B,EAC3B,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,0BAA0B,EAC1B,mCAAmC,EACnC,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,0BAA0B,EAC1B,iBAAiB,EACjB,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,EAC/B,UAAU,EACV,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,yBAAyB,EACzB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,6BAA6B,EAC7B,kBAAkB,EAClB,aAAa,EACb,4BAA4B,EAC5B,sBAAsB,EACtB,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,6BAA6B,EAC7B,iBAAiB,EACjB,wBAAwB,EACxB,4BAA4B,EAC5B,oBAAoB,EACpB,gBAAgB,EAChB,0BAA0B,EAC1B,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,2BAA2B,EAC3B,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/node",
|
|
3
|
-
"version": "0.3.0-next.
|
|
3
|
+
"version": "0.3.0-next.1220.6982c21",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/flighthq/flight.git",
|
|
@@ -36,12 +36,12 @@
|
|
|
36
36
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@flighthq/adjustments": "0.3.0-next.
|
|
40
|
-
"@flighthq/entity": "0.3.0-next.
|
|
41
|
-
"@flighthq/geometry": "0.3.0-next.
|
|
42
|
-
"@flighthq/materials": "0.3.0-next.
|
|
43
|
-
"@flighthq/signals": "0.3.0-next.
|
|
44
|
-
"@flighthq/types": "0.3.0-next.
|
|
39
|
+
"@flighthq/adjustments": "0.3.0-next.1220.6982c21",
|
|
40
|
+
"@flighthq/entity": "0.3.0-next.1220.6982c21",
|
|
41
|
+
"@flighthq/geometry": "0.3.0-next.1220.6982c21",
|
|
42
|
+
"@flighthq/materials": "0.3.0-next.1220.6982c21",
|
|
43
|
+
"@flighthq/signals": "0.3.0-next.1220.6982c21",
|
|
44
|
+
"@flighthq/types": "0.3.0-next.1220.6982c21"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"typescript": "^5.3.0"
|
|
@@ -26,6 +26,7 @@ import type {
|
|
|
26
26
|
|
|
27
27
|
import {
|
|
28
28
|
computeNodeBoundsRectangle,
|
|
29
|
+
computeNodeRootLocalBoundsRectangle,
|
|
29
30
|
ensureNodeLocalBoundsRectangle,
|
|
30
31
|
ensureNodeParentBoundsRectangle,
|
|
31
32
|
ensureNodeWorldBoundsRectangle,
|
|
@@ -159,6 +160,45 @@ describe('computeNodeBoundsRectangle', () => {
|
|
|
159
160
|
});
|
|
160
161
|
});
|
|
161
162
|
|
|
163
|
+
describe('computeNodeRootLocalBoundsRectangle', () => {
|
|
164
|
+
it('ignores the detached root transform while preserving negative local extents', () => {
|
|
165
|
+
const root = createTestNode();
|
|
166
|
+
root.x = 120;
|
|
167
|
+
root.y = -35;
|
|
168
|
+
root.rotation = 37;
|
|
169
|
+
root.scaleX = 2;
|
|
170
|
+
root.scaleY = 0.5;
|
|
171
|
+
setRectangle(getNodeLocalBoundsRectangle(root), -10, -5, 30, 20);
|
|
172
|
+
|
|
173
|
+
const out = createRectangle();
|
|
174
|
+
computeNodeRootLocalBoundsRectangle(out, root);
|
|
175
|
+
|
|
176
|
+
expect(out).toMatchObject({ x: -10, y: -5, width: 30, height: 20 });
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
it('composes nested transforms relative to an identity root', () => {
|
|
180
|
+
const root = createTestNode();
|
|
181
|
+
const child = createTestNode();
|
|
182
|
+
root.x = 500;
|
|
183
|
+
root.rotation = 90;
|
|
184
|
+
child.x = 20;
|
|
185
|
+
child.y = 3;
|
|
186
|
+
child.scaleX = 2;
|
|
187
|
+
child.scaleY = 3;
|
|
188
|
+
setRectangle(getNodeLocalBoundsRectangle(root), 0, 0, 10, 10);
|
|
189
|
+
setRectangle(getNodeLocalBoundsRectangle(child), -5, -2, 4, 8);
|
|
190
|
+
addNodeChild(root, child);
|
|
191
|
+
|
|
192
|
+
const out = createRectangle();
|
|
193
|
+
computeNodeRootLocalBoundsRectangle(out, root);
|
|
194
|
+
|
|
195
|
+
expect(out.x).toBeCloseTo(0);
|
|
196
|
+
expect(out.y).toBeCloseTo(-3);
|
|
197
|
+
expect(out.width).toBeCloseTo(18);
|
|
198
|
+
expect(out.height).toBeCloseTo(24);
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
|
|
162
202
|
describe('ensureNodeLocalBoundsRectangle', () => {
|
|
163
203
|
it('should ensure localBoundsRectangle is defined', () => {
|
|
164
204
|
const object = createTestNode();
|