@flighthq/displayobject 0.2.0 → 0.2.1-next.410.a23f189
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/displayObject.d.ts.map +1 -1
- package/dist/displayObject.js +3 -1
- package/dist/displayObject.js.map +1 -1
- package/dist/stage.d.ts +2 -4
- package/dist/stage.d.ts.map +1 -1
- package/dist/stage.js +39 -30
- package/dist/stage.js.map +1 -1
- package/package.json +7 -7
- package/src/stage.test.ts +22 -68
- package/dist/internal.d.ts +0 -7
- package/dist/internal.d.ts.map +0 -1
- package/dist/internal.js +0 -2
- package/dist/internal.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"displayObject.d.ts","sourceRoot":"","sources":["../src/displayObject.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"displayObject.d.ts","sourceRoot":"","sources":["../src/displayObject.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,cAAc,EACd,aAAa,EACb,wBAAwB,EACxB,oBAAoB,EACpB,2BAA2B,EAC3B,IAAI,EACJ,SAAS,EACT,OAAO,EAEP,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAMzB,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAMnG;AAED,wBAAgB,mBAAmB,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,GAAG,aAAa,CAE7F;AAED,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,oBAAoB,EACvE,IAAI,EAAE,IAAI,EACV,GAAG,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,EAC1C,UAAU,CAAC,EAAE,wBAAwB,EACrC,iCAAiC,CAAC,EAAE,2BAA2B,CAAC,CAAC,CAAC,GACjE,aAAa,CAcf;AAED,wBAAgB,0BAA0B,CACxC,OAAO,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAC3D,oBAAoB,CAOtB;AAID,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,SAAS,UAAU,EAAE,GAAG,IAAI,CAE9G;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAEvG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,aAAa,CAEpE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI,CAG1F;AAMD,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,IAAI,GAAG,IAAI,CAKjH;AAKD,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,aAAa,EACrB,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,GAC9C,IAAI,CAKN"}
|
package/dist/displayObject.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { COLOR_ADJUSTMENT_CHANNEL_MIXING, COLOR_ADJUSTMENT_NONE, createColorTransformAdjustment, resolveColorAdjustmentsColorTransform, } from '@flighthq/adjustments';
|
|
2
2
|
import { createColorTransform } from '@flighthq/materials';
|
|
3
|
-
import { createNode, createNodeRuntime, getNodeRuntime, initAppearanceTrait, initBoundsRectangleRuntimeTrait, initBoundsRectangleTrait, initClipTrait, initMaterialTrait, initTransform2DRuntimeTrait, initTransform2DTrait, invalidateNodeAppearance, } from '@flighthq/node';
|
|
3
|
+
import { createNode, createNodeRuntime, getNodeRuntime, initAppearanceTrait, initBlendModeTrait, initBoundsRectangleRuntimeTrait, initBoundsRectangleTrait, initClipTrait, initMaterialTrait, initTransform2DRuntimeTrait, initTransform2DTrait, invalidateNodeAppearance, } from '@flighthq/node';
|
|
4
4
|
import { DisplayObjectKind, DisplayObjectTraitsKey } from '@flighthq/types';
|
|
5
5
|
// Appends one pointwise color adjustment to this object's stack (creating the stack if absent), re-fuses
|
|
6
6
|
// the resolved cache, and invalidates appearance so the render walk hands the fold the new value.
|
|
@@ -20,6 +20,7 @@ export function createDisplayObjectGeneric(kind, obj, createData, createDisplayO
|
|
|
20
20
|
initTransform2DTrait(out, obj);
|
|
21
21
|
initBoundsRectangleTrait(out, obj);
|
|
22
22
|
initAppearanceTrait(out, obj);
|
|
23
|
+
initBlendModeTrait(out, obj);
|
|
23
24
|
initMaterialTrait(out, obj);
|
|
24
25
|
initClipTrait(out, obj);
|
|
25
26
|
return out;
|
|
@@ -27,6 +28,7 @@ export function createDisplayObjectGeneric(kind, obj, createData, createDisplayO
|
|
|
27
28
|
export function createDisplayObjectRuntime(methods) {
|
|
28
29
|
const out = createNodeRuntime(methods);
|
|
29
30
|
out.traits = DisplayObjectTraitsKey;
|
|
31
|
+
out.stage = null;
|
|
30
32
|
initTransform2DRuntimeTrait(out, methods);
|
|
31
33
|
initBoundsRectangleRuntimeTrait(out, methods);
|
|
32
34
|
return out;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"displayObject.js","sourceRoot":"","sources":["../src/displayObject.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"displayObject.js","sourceRoot":"","sources":["../src/displayObject.ts"],"names":[],"mappings":"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"}
|
package/dist/stage.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import type { DisplayObject,
|
|
2
|
-
export declare function
|
|
3
|
-
export declare function createStage(obj?: Readonly<PartialNode<Stage>>): Stage;
|
|
4
|
-
export declare function createStageData(data?: Readonly<Partial<StageData>>): StageData;
|
|
1
|
+
import type { DisplayObject, Stage, StageRuntime, StageSignals } from '@flighthq/types';
|
|
2
|
+
export declare function createStage(obj?: Readonly<Partial<Pick<Stage, 'align' | 'color' | 'scaleMode' | 'stageHeight' | 'stageWidth'>>>): Stage;
|
|
5
3
|
export declare function createStageRuntime(): StageRuntime;
|
|
6
4
|
export declare function createStageSignals(): StageSignals;
|
|
7
5
|
export declare function enableStageSignals(source: Stage): StageSignals;
|
package/dist/stage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stage.d.ts","sourceRoot":"","sources":["../src/stage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,
|
|
1
|
+
{"version":3,"file":"stage.d.ts","sourceRoot":"","sources":["../src/stage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EAGb,KAAK,EACL,YAAY,EACZ,YAAY,EACb,MAAM,iBAAiB,CAAC;AAUzB,wBAAgB,WAAW,CACzB,GAAG,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,WAAW,GAAG,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,GACnG,KAAK,CAQP;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAKjD;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAMjD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,KAAK,GAAG,YAAY,CAG9D;AAID,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,KAAK,GAAG,IAAI,CAGnF;AAID,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAE/E;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,YAAY,GAAG,IAAI,CAG5E;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAM/E"}
|
package/dist/stage.js
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import { getNodeRoot,
|
|
1
|
+
import { createViewport, getNodeRoot, getNodeRuntime } from '@flighthq/node';
|
|
2
2
|
import { createSignal, emitSignal } from '@flighthq/signals';
|
|
3
|
-
import { EntityRuntimeKey
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
import { EntityRuntimeKey } from '@flighthq/types';
|
|
4
|
+
import { createDisplayObject } from './displayObject';
|
|
5
|
+
// Allocates a Stage: a presentation-context Entity that owns a display-object `root` (allocated here), not a
|
|
6
|
+
// node in the tree. Composes createViewport for the shared root/align/scaleMode base, then layers on the
|
|
7
|
+
// stage-only view dimensions and background color. The entity runtime stays unbound (createViewport →
|
|
8
|
+
// createEntity); the root's runtime carries a back-pointer so getDisplayObjectStage resolves membership by a
|
|
9
|
+
// lazy walk to the root.
|
|
10
10
|
export function createStage(obj) {
|
|
11
|
-
|
|
11
|
+
const root = createDisplayObject();
|
|
12
|
+
const stage = createViewport({ align: obj?.align, root, scaleMode: obj?.scaleMode });
|
|
13
|
+
stage.color = obj?.color ?? null;
|
|
14
|
+
stage.stageHeight = obj?.stageHeight ?? 550;
|
|
15
|
+
stage.stageWidth = obj?.stageWidth ?? 400;
|
|
16
|
+
getNodeRuntime(root).stage = stage;
|
|
17
|
+
return stage;
|
|
12
18
|
}
|
|
13
|
-
export function
|
|
19
|
+
export function createStageRuntime() {
|
|
14
20
|
return {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
stageWidth: data?.stageWidth ?? 400,
|
|
21
|
+
binding: null,
|
|
22
|
+
stageSignals: null,
|
|
18
23
|
};
|
|
19
24
|
}
|
|
20
|
-
export function createStageRuntime() {
|
|
21
|
-
const out = createDisplayObjectRuntime(defaultMethods);
|
|
22
|
-
out.stageSignals = null;
|
|
23
|
-
return out;
|
|
24
|
-
}
|
|
25
25
|
export function createStageSignals() {
|
|
26
26
|
return {
|
|
27
27
|
onFullscreenChanged: createSignal(),
|
|
@@ -30,30 +30,39 @@ export function createStageSignals() {
|
|
|
30
30
|
};
|
|
31
31
|
}
|
|
32
32
|
export function enableStageSignals(source) {
|
|
33
|
-
const runtime = source
|
|
33
|
+
const runtime = ensureStageRuntime(source);
|
|
34
34
|
return (runtime.stageSignals ??= createStageSignals());
|
|
35
35
|
}
|
|
36
|
+
// Resolves the Stage a display object belongs to, or null when its root is not owned by a stage. Walks to the
|
|
37
|
+
// root (a cheap parent walk) and reads the stage back-pointer the root runtime carries.
|
|
36
38
|
export function getDisplayObjectStage(source) {
|
|
37
39
|
const root = getNodeRoot(source);
|
|
38
|
-
return root.
|
|
40
|
+
return getNodeRuntime(root).stage;
|
|
39
41
|
}
|
|
42
|
+
// The stage's runtime, allocated on first access (the entity is created unbound). Callers that only read
|
|
43
|
+
// enabled signals should use getStageSignals, which does not allocate.
|
|
40
44
|
export function getStageRuntime(source) {
|
|
41
|
-
return
|
|
45
|
+
return ensureStageRuntime(source);
|
|
42
46
|
}
|
|
43
47
|
export function getStageSignals(source) {
|
|
44
|
-
|
|
48
|
+
const runtime = source[EntityRuntimeKey];
|
|
49
|
+
return runtime?.stageSignals ?? null;
|
|
45
50
|
}
|
|
46
51
|
export function setStageSize(source, width, height) {
|
|
47
|
-
if (source.
|
|
52
|
+
if (source.stageWidth === width && source.stageHeight === height)
|
|
48
53
|
return;
|
|
49
|
-
source.
|
|
50
|
-
source.
|
|
51
|
-
invalidateNodeLocalBounds(source);
|
|
54
|
+
source.stageWidth = width;
|
|
55
|
+
source.stageHeight = height;
|
|
52
56
|
const runtime = source[EntityRuntimeKey];
|
|
53
|
-
if (runtime
|
|
57
|
+
if (runtime?.stageSignals)
|
|
54
58
|
emitSignal(runtime.stageSignals.onResize);
|
|
55
59
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
60
|
+
function ensureStageRuntime(source) {
|
|
61
|
+
const existing = source[EntityRuntimeKey];
|
|
62
|
+
if (existing !== undefined)
|
|
63
|
+
return existing;
|
|
64
|
+
const runtime = createStageRuntime();
|
|
65
|
+
source[EntityRuntimeKey] = runtime;
|
|
66
|
+
return runtime;
|
|
67
|
+
}
|
|
59
68
|
//# sourceMappingURL=stage.js.map
|
package/dist/stage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stage.js","sourceRoot":"","sources":["../src/stage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"stage.js","sourceRoot":"","sources":["../src/stage.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/displayobject",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1-next.410.a23f189",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/flighthq/flight.git",
|
|
@@ -32,12 +32,12 @@
|
|
|
32
32
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@flighthq/adjustments": "0.2.
|
|
36
|
-
"@flighthq/geometry": "0.2.
|
|
37
|
-
"@flighthq/materials": "0.2.
|
|
38
|
-
"@flighthq/node": "0.2.
|
|
39
|
-
"@flighthq/signals": "0.2.
|
|
40
|
-
"@flighthq/types": "0.2.
|
|
35
|
+
"@flighthq/adjustments": "0.2.1-next.410.a23f189",
|
|
36
|
+
"@flighthq/geometry": "0.2.1-next.410.a23f189",
|
|
37
|
+
"@flighthq/materials": "0.2.1-next.410.a23f189",
|
|
38
|
+
"@flighthq/node": "0.2.1-next.410.a23f189",
|
|
39
|
+
"@flighthq/signals": "0.2.1-next.410.a23f189",
|
|
40
|
+
"@flighthq/types": "0.2.1-next.410.a23f189"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@flighthq/entity": "*",
|
package/src/stage.test.ts
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
import { createRectangle } from '@flighthq/geometry';
|
|
2
1
|
import { addNodeChild } from '@flighthq/node';
|
|
3
2
|
import { connectSignal } from '@flighthq/signals';
|
|
4
|
-
import type {
|
|
5
|
-
import { StageKind } from '@flighthq/types';
|
|
3
|
+
import type { Stage } from '@flighthq/types';
|
|
6
4
|
|
|
7
5
|
import { createDisplayObject } from './displayObject';
|
|
8
6
|
import {
|
|
9
|
-
computeStageLocalBoundsRectangle,
|
|
10
7
|
createStage,
|
|
11
|
-
createStageData,
|
|
12
8
|
createStageRuntime,
|
|
13
9
|
createStageSignals,
|
|
14
10
|
enableStageSignals,
|
|
@@ -18,16 +14,6 @@ import {
|
|
|
18
14
|
setStageSize,
|
|
19
15
|
} from './stage';
|
|
20
16
|
|
|
21
|
-
describe('computeStageLocalBoundsRectangle', () => {
|
|
22
|
-
it('sets out dimensions from stageWidth and stageHeight', () => {
|
|
23
|
-
const stage = createStage({ data: { stageWidth: 800, stageHeight: 600 } });
|
|
24
|
-
const out = createRectangle();
|
|
25
|
-
computeStageLocalBoundsRectangle(out, stage as unknown as Node);
|
|
26
|
-
expect(out.width).toBe(800);
|
|
27
|
-
expect(out.height).toBe(600);
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
|
|
31
17
|
describe('createStage', () => {
|
|
32
18
|
let stage: Stage;
|
|
33
19
|
|
|
@@ -36,58 +22,31 @@ describe('createStage', () => {
|
|
|
36
22
|
});
|
|
37
23
|
|
|
38
24
|
it('initializes default values', () => {
|
|
39
|
-
expect(stage.
|
|
40
|
-
expect(stage.
|
|
41
|
-
expect(stage.
|
|
42
|
-
expect(stage.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
it('allows pre-defined values', () => {
|
|
46
|
-
const base: PartialNode<Stage> = {
|
|
47
|
-
data: {
|
|
48
|
-
color: 0xff0000ff,
|
|
49
|
-
stageHeight: 1000,
|
|
50
|
-
stageWidth: 2000,
|
|
51
|
-
},
|
|
52
|
-
};
|
|
53
|
-
const obj = createStage(base);
|
|
54
|
-
const data = base.data!;
|
|
55
|
-
expect(obj.data.color).toStrictEqual(data.color);
|
|
56
|
-
expect(obj.data.stageHeight).toStrictEqual(data.stageHeight);
|
|
57
|
-
expect(obj.data.stageWidth).toStrictEqual(data.stageWidth);
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
it('returns a new object for better hidden-class performance', () => {
|
|
61
|
-
const base = {};
|
|
62
|
-
const obj = createStage(base);
|
|
63
|
-
expect(obj).not.toStrictEqual(base);
|
|
25
|
+
expect(stage.color).toBe(null);
|
|
26
|
+
expect(stage.stageHeight).toBe(550);
|
|
27
|
+
expect(stage.stageWidth).toBe(400);
|
|
28
|
+
expect(stage.align).toBe('topleft');
|
|
29
|
+
expect(stage.scaleMode).toBe('noscale');
|
|
64
30
|
});
|
|
65
|
-
});
|
|
66
31
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
expect(data.stageWidth).toBe(400);
|
|
71
|
-
expect(data.stageHeight).toBe(550);
|
|
72
|
-
expect(data.color).toBe(null);
|
|
32
|
+
it('allocates a display-object root the stage points back to', () => {
|
|
33
|
+
expect(stage.root).toBeDefined();
|
|
34
|
+
expect(getDisplayObjectStage(stage.root)).toBe(stage);
|
|
73
35
|
});
|
|
74
36
|
|
|
75
37
|
it('allows pre-defined values', () => {
|
|
76
|
-
const
|
|
77
|
-
expect(
|
|
78
|
-
expect(
|
|
38
|
+
const obj = createStage({ color: 0xff0000ff, stageHeight: 1000, stageWidth: 2000 });
|
|
39
|
+
expect(obj.color).toStrictEqual(0xff0000ff);
|
|
40
|
+
expect(obj.stageHeight).toStrictEqual(1000);
|
|
41
|
+
expect(obj.stageWidth).toStrictEqual(2000);
|
|
79
42
|
});
|
|
80
43
|
});
|
|
81
44
|
|
|
82
45
|
describe('createStageRuntime', () => {
|
|
83
|
-
it('returns a non-null runtime', () => {
|
|
46
|
+
it('returns a non-null runtime with stageSignals initialized to null', () => {
|
|
84
47
|
const runtime = createStageRuntime();
|
|
85
48
|
expect(runtime).not.toBeNull();
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
it('uses computeStageLocalBoundsRectangle', () => {
|
|
89
|
-
const runtime = createStageRuntime();
|
|
90
|
-
expect(runtime.computeLocalBoundsRectangle).toStrictEqual(computeStageLocalBoundsRectangle);
|
|
49
|
+
expect(runtime.stageSignals).toBeNull();
|
|
91
50
|
});
|
|
92
51
|
});
|
|
93
52
|
|
|
@@ -126,17 +85,17 @@ describe('getDisplayObjectStage', () => {
|
|
|
126
85
|
expect(getDisplayObjectStage(obj)).toBeNull();
|
|
127
86
|
});
|
|
128
87
|
|
|
129
|
-
it('returns null when the root is not a Stage', () => {
|
|
88
|
+
it('returns null when the root is not owned by a Stage', () => {
|
|
130
89
|
const root = createDisplayObject();
|
|
131
90
|
const child = createDisplayObject();
|
|
132
91
|
addNodeChild(root, child);
|
|
133
92
|
expect(getDisplayObjectStage(child)).toBeNull();
|
|
134
93
|
});
|
|
135
94
|
|
|
136
|
-
it('returns the Stage when
|
|
95
|
+
it('returns the Stage when a child is added under its root', () => {
|
|
137
96
|
const stage = createStage();
|
|
138
97
|
const child = createDisplayObject();
|
|
139
|
-
addNodeChild(stage, child);
|
|
98
|
+
addNodeChild(stage.root, child);
|
|
140
99
|
expect(getDisplayObjectStage(child)).toBe(stage);
|
|
141
100
|
});
|
|
142
101
|
|
|
@@ -144,7 +103,7 @@ describe('getDisplayObjectStage', () => {
|
|
|
144
103
|
const stage = createStage();
|
|
145
104
|
const mid = createDisplayObject();
|
|
146
105
|
const leaf = createDisplayObject();
|
|
147
|
-
addNodeChild(stage, mid);
|
|
106
|
+
addNodeChild(stage.root, mid);
|
|
148
107
|
addNodeChild(mid, leaf);
|
|
149
108
|
expect(getDisplayObjectStage(leaf)).toBe(stage);
|
|
150
109
|
});
|
|
@@ -156,11 +115,6 @@ describe('getStageRuntime', () => {
|
|
|
156
115
|
const runtime = getStageRuntime(stage);
|
|
157
116
|
expect(runtime).not.toBeNull();
|
|
158
117
|
});
|
|
159
|
-
|
|
160
|
-
it('initializes stageSignals to null', () => {
|
|
161
|
-
const runtime = createStageRuntime();
|
|
162
|
-
expect(runtime.stageSignals).toBeNull();
|
|
163
|
-
});
|
|
164
118
|
});
|
|
165
119
|
|
|
166
120
|
describe('getStageSignals', () => {
|
|
@@ -180,8 +134,8 @@ describe('setStageSize', () => {
|
|
|
180
134
|
it('updates stageWidth and stageHeight', () => {
|
|
181
135
|
const stage = createStage();
|
|
182
136
|
setStageSize(stage, 1920, 1080);
|
|
183
|
-
expect(stage.
|
|
184
|
-
expect(stage.
|
|
137
|
+
expect(stage.stageWidth).toBe(1920);
|
|
138
|
+
expect(stage.stageHeight).toBe(1080);
|
|
185
139
|
});
|
|
186
140
|
|
|
187
141
|
it('emits onResize when dimensions change', () => {
|
|
@@ -195,7 +149,7 @@ describe('setStageSize', () => {
|
|
|
195
149
|
});
|
|
196
150
|
|
|
197
151
|
it('does not emit onResize when dimensions are unchanged', () => {
|
|
198
|
-
const stage = createStage({
|
|
152
|
+
const stage = createStage({ stageWidth: 400, stageHeight: 300 });
|
|
199
153
|
let called = false;
|
|
200
154
|
connectSignal(enableStageSignals(stage).onResize, () => {
|
|
201
155
|
called = true;
|
package/dist/internal.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { DisplayObject, Stage } from '@flighthq/types';
|
|
2
|
-
export type DisplayObjectInternal = Omit<DisplayObject, 'children' | 'parent' | 'stage'> & {
|
|
3
|
-
children: DisplayObject[] | null;
|
|
4
|
-
parent: DisplayObject | null;
|
|
5
|
-
stage: Stage | null;
|
|
6
|
-
};
|
|
7
|
-
//# sourceMappingURL=internal.d.ts.map
|
package/dist/internal.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE5D,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,aAAa,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC,GAAG;IACzF,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB,CAAC"}
|
package/dist/internal.js
DELETED
package/dist/internal.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":""}
|