@flighthq/displayobject 0.1.0
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/bitmap.d.ts +8 -0
- package/dist/bitmap.d.ts.map +1 -0
- package/dist/bitmap.js +41 -0
- package/dist/bitmap.js.map +1 -0
- package/dist/displayContainer.d.ts +5 -0
- package/dist/displayContainer.d.ts.map +1 -0
- package/dist/displayContainer.js +12 -0
- package/dist/displayContainer.js.map +1 -0
- package/dist/displayObject.d.ts +8 -0
- package/dist/displayObject.d.ts.map +1 -0
- package/dist/displayObject.js +32 -0
- package/dist/displayObject.js.map +1 -0
- package/dist/htmlView.d.ts +8 -0
- package/dist/htmlView.d.ts.map +1 -0
- package/dist/htmlView.js +35 -0
- package/dist/htmlView.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/internal.d.ts +7 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +2 -0
- package/dist/internal.js.map +1 -0
- package/dist/renderView.d.ts +8 -0
- package/dist/renderView.d.ts.map +1 -0
- package/dist/renderView.js +35 -0
- package/dist/renderView.js.map +1 -0
- package/dist/stage.d.ts +12 -0
- package/dist/stage.d.ts.map +1 -0
- package/dist/stage.js +59 -0
- package/dist/stage.js.map +1 -0
- package/dist/video.d.ts +9 -0
- package/dist/video.d.ts.map +1 -0
- package/dist/video.js +41 -0
- package/dist/video.js.map +1 -0
- package/package.json +41 -0
- package/src/bitmap.test.ts +130 -0
- package/src/displayContainer.test.ts +37 -0
- package/src/displayObject.test.ts +174 -0
- package/src/htmlView.test.ts +111 -0
- package/src/renderView.test.ts +104 -0
- package/src/stage.test.ts +211 -0
- package/src/video.test.ts +112 -0
package/dist/bitmap.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Bitmap, BitmapData, BitmapRuntime, Node, PartialNode, Rectangle } from '@flighthq/types';
|
|
2
|
+
export declare function computeBitmapLocalBoundsRectangle(out: Rectangle, source: Readonly<Node>): void;
|
|
3
|
+
export declare function createBitmap(obj?: Readonly<PartialNode<Bitmap>>): Bitmap;
|
|
4
|
+
export declare function createBitmapData(data?: Readonly<Partial<BitmapData>>): BitmapData;
|
|
5
|
+
export declare function createBitmapRuntime(): BitmapRuntime;
|
|
6
|
+
export declare function getBitmapRuntime(source: Readonly<Bitmap>): Readonly<BitmapRuntime>;
|
|
7
|
+
export declare function setBitmapImage(source: Bitmap, value: BitmapData['image']): void;
|
|
8
|
+
//# sourceMappingURL=bitmap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bitmap.d.ts","sourceRoot":"","sources":["../src/bitmap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAa,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAKlH,wBAAgB,iCAAiC,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAS9F;AAED,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAExE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,UAAU,CAMjF;AAED,wBAAgB,mBAAmB,IAAI,aAAa,CAEnD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,CAElF;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI,CAM/E"}
|
package/dist/bitmap.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { invalidateNodeLocalBounds, invalidateNodeLocalContent } from '@flighthq/node';
|
|
2
|
+
import { BitmapKind } from '@flighthq/types';
|
|
3
|
+
import { createDisplayObjectGeneric, createDisplayObjectRuntime, getDisplayObjectRuntime } from './displayObject';
|
|
4
|
+
export function computeBitmapLocalBoundsRectangle(out, source) {
|
|
5
|
+
const bitmapData = source.data;
|
|
6
|
+
if (bitmapData.sourceRectangle !== null) {
|
|
7
|
+
out.width = bitmapData.sourceRectangle.width;
|
|
8
|
+
out.height = bitmapData.sourceRectangle.height;
|
|
9
|
+
}
|
|
10
|
+
else if (bitmapData.image) {
|
|
11
|
+
out.width = bitmapData.image.width;
|
|
12
|
+
out.height = bitmapData.image.height;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export function createBitmap(obj) {
|
|
16
|
+
return createDisplayObjectGeneric(BitmapKind, obj, createBitmapData, createBitmapRuntime);
|
|
17
|
+
}
|
|
18
|
+
export function createBitmapData(data) {
|
|
19
|
+
return {
|
|
20
|
+
image: data?.image ?? null,
|
|
21
|
+
smoothing: data?.smoothing ?? true,
|
|
22
|
+
sourceRectangle: data?.sourceRectangle ?? null,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export function createBitmapRuntime() {
|
|
26
|
+
return createDisplayObjectRuntime(defaultMethods);
|
|
27
|
+
}
|
|
28
|
+
export function getBitmapRuntime(source) {
|
|
29
|
+
return getDisplayObjectRuntime(source);
|
|
30
|
+
}
|
|
31
|
+
export function setBitmapImage(source, value) {
|
|
32
|
+
source.data.image = value;
|
|
33
|
+
// A different image is new pixels (content) and possibly new dimensions (bounds) — not a
|
|
34
|
+
// compositing change, so this no longer bumps appearance.
|
|
35
|
+
invalidateNodeLocalContent(source);
|
|
36
|
+
invalidateNodeLocalBounds(source);
|
|
37
|
+
}
|
|
38
|
+
const defaultMethods = {
|
|
39
|
+
computeLocalBoundsRectangle: computeBitmapLocalBoundsRectangle,
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=bitmap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bitmap.js","sourceRoot":"","sources":["../src/bitmap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAEvF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAElH,MAAM,UAAU,iCAAiC,CAAC,GAAc,EAAE,MAAsB;IACtF,MAAM,UAAU,GAAe,MAAM,CAAC,IAAkB,CAAC;IACzD,IAAI,UAAU,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;QACxC,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC;QAC7C,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC;IACjD,CAAC;SAAM,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QAC5B,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;QACnC,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;IACvC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAmC;IAC9D,OAAO,0BAA0B,CAAC,UAAU,EAAE,GAAG,EAAE,gBAAgB,EAAE,mBAAmB,CAAW,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAoC;IACnE,OAAO;QACL,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI;QAC1B,SAAS,EAAE,IAAI,EAAE,SAAS,IAAI,IAAI;QAClC,eAAe,EAAE,IAAI,EAAE,eAAe,IAAI,IAAI;KAC/C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,0BAA0B,CAAC,cAAc,CAAkB,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAwB;IACvD,OAAO,uBAAuB,CAAC,MAAM,CAAkB,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,KAA0B;IACvE,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAC1B,yFAAyF;IACzF,0DAA0D;IAC1D,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,yBAAyB,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,cAAc,GAAsC;IACxD,2BAA2B,EAAE,iCAAiC;CAC/D,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { DisplayContainer, DisplayContainerRuntime, PartialNode } from '@flighthq/types';
|
|
2
|
+
export declare function createDisplayContainer(obj?: Readonly<PartialNode<DisplayContainer>>): DisplayContainer;
|
|
3
|
+
export declare function createDisplayContainerRuntime(): DisplayContainerRuntime;
|
|
4
|
+
export declare function getDisplayContainerRuntime(source: Readonly<DisplayContainer>): Readonly<DisplayContainerRuntime>;
|
|
5
|
+
//# sourceMappingURL=displayContainer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"displayContainer.d.ts","sourceRoot":"","sources":["../src/displayContainer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAK9F,wBAAgB,sBAAsB,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,GAAG,gBAAgB,CAOtG;AAED,wBAAgB,6BAA6B,IAAI,uBAAuB,CAEvE;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC,uBAAuB,CAAC,CAEhH"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { DisplayObjectKind } from '@flighthq/types';
|
|
2
|
+
import { createDisplayObjectGeneric, createDisplayObjectRuntime, getDisplayObjectRuntime } from './displayObject';
|
|
3
|
+
export function createDisplayContainer(obj) {
|
|
4
|
+
return createDisplayObjectGeneric(DisplayObjectKind, obj, undefined, createDisplayContainerRuntime);
|
|
5
|
+
}
|
|
6
|
+
export function createDisplayContainerRuntime() {
|
|
7
|
+
return createDisplayObjectRuntime();
|
|
8
|
+
}
|
|
9
|
+
export function getDisplayContainerRuntime(source) {
|
|
10
|
+
return getDisplayObjectRuntime(source);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=displayContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"displayContainer.js","sourceRoot":"","sources":["../src/displayContainer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAElH,MAAM,UAAU,sBAAsB,CAAC,GAA6C;IAClF,OAAO,0BAA0B,CAC/B,iBAAiB,EACjB,GAAG,EACH,SAAS,EACT,6BAA6B,CACV,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,6BAA6B;IAC3C,OAAO,0BAA0B,EAA6B,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAkC;IAC3E,OAAO,uBAAuB,CAAC,MAAM,CAA4B,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ClipRegion, DisplayObject, DisplayObjectDataFactory, DisplayObjectRuntime, DisplayObjectRuntimeFactory, Kind, MethodsOf, NodeAny, PartialNode } from '@flighthq/types';
|
|
2
|
+
export declare function createDisplayObject(obj?: Readonly<PartialNode<DisplayObject>>): DisplayObject;
|
|
3
|
+
export declare function createDisplayObjectGeneric<R extends DisplayObjectRuntime>(kind: Kind, obj?: Readonly<PartialNode<DisplayObject>>, createData?: DisplayObjectDataFactory, createDisplayObjectRuntimeFactory?: DisplayObjectRuntimeFactory<R>): DisplayObject;
|
|
4
|
+
export declare function createDisplayObjectRuntime(methods?: Readonly<Partial<MethodsOf<DisplayObjectRuntime>>>): DisplayObjectRuntime;
|
|
5
|
+
export declare function getDisplayObjectRuntime(source: Readonly<DisplayObject>): Readonly<DisplayObjectRuntime>;
|
|
6
|
+
export declare function isDisplayObject(node: NodeAny): node is DisplayObject;
|
|
7
|
+
export declare function setDisplayObjectClip(source: DisplayObject, value: ClipRegion | null): void;
|
|
8
|
+
//# sourceMappingURL=displayObject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"displayObject.d.ts","sourceRoot":"","sources":["../src/displayObject.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,UAAU,EACV,aAAa,EACb,wBAAwB,EACxB,oBAAoB,EACpB,2BAA2B,EAC3B,IAAI,EACJ,SAAS,EACT,OAAO,EAEP,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAGzB,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,CAaf;AAED,wBAAgB,0BAA0B,CACxC,OAAO,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAC3D,oBAAoB,CAMtB;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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { createNode, createNodeRuntime, getNodeRuntime, initAppearanceTrait, initBoundsRectangleRuntimeTrait, initBoundsRectangleTrait, initClipTrait, initMaterialTrait, initTransform2DRuntimeTrait, initTransform2DTrait, invalidateNodeAppearance, } from '@flighthq/node';
|
|
2
|
+
import { DisplayObjectKind, DisplayObjectTraitsKey } from '@flighthq/types';
|
|
3
|
+
export function createDisplayObject(obj) {
|
|
4
|
+
return createDisplayObjectGeneric(DisplayObjectKind, obj);
|
|
5
|
+
}
|
|
6
|
+
export function createDisplayObjectGeneric(kind, obj, createData, createDisplayObjectRuntimeFactory) {
|
|
7
|
+
const out = createNode(kind, obj, createData, createDisplayObjectRuntimeFactory ?? createDisplayObjectRuntime);
|
|
8
|
+
initTransform2DTrait(out, obj);
|
|
9
|
+
initBoundsRectangleTrait(out, obj);
|
|
10
|
+
initAppearanceTrait(out, obj);
|
|
11
|
+
initMaterialTrait(out, obj);
|
|
12
|
+
initClipTrait(out, obj);
|
|
13
|
+
return out;
|
|
14
|
+
}
|
|
15
|
+
export function createDisplayObjectRuntime(methods) {
|
|
16
|
+
const out = createNodeRuntime(methods);
|
|
17
|
+
out.traits = DisplayObjectTraitsKey;
|
|
18
|
+
initTransform2DRuntimeTrait(out, methods);
|
|
19
|
+
initBoundsRectangleRuntimeTrait(out, methods);
|
|
20
|
+
return out;
|
|
21
|
+
}
|
|
22
|
+
export function getDisplayObjectRuntime(source) {
|
|
23
|
+
return getNodeRuntime(source);
|
|
24
|
+
}
|
|
25
|
+
export function isDisplayObject(node) {
|
|
26
|
+
return getNodeRuntime(node).traits === DisplayObjectTraitsKey;
|
|
27
|
+
}
|
|
28
|
+
export function setDisplayObjectClip(source, value) {
|
|
29
|
+
source.clip = value;
|
|
30
|
+
invalidateNodeAppearance(source);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=displayObject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"displayObject.js","sourceRoot":"","sources":["../src/displayObject.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,+BAA+B,EAC/B,wBAAwB,EACxB,aAAa,EACb,iBAAiB,EACjB,2BAA2B,EAC3B,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AAaxB,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE5E,MAAM,UAAU,mBAAmB,CAAC,GAA0C;IAC5E,OAAO,0BAA0B,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,IAAU,EACV,GAA0C,EAC1C,UAAqC,EACrC,iCAAkE;IAElE,MAAM,GAAG,GAAG,UAAU,CACpB,IAAI,EACJ,GAAG,EACH,UAAU,EACV,iCAAiC,IAAK,0BAA+D,CACrF,CAAC;IACnB,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/B,wBAAwB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9B,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC5B,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,OAA4D;IAE5D,MAAM,GAAG,GAAG,iBAAiB,CAAC,OAAO,CAAyB,CAAC;IAC/D,GAAG,CAAC,MAAM,GAAG,sBAAsB,CAAC;IACpC,2BAA2B,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC1C,+BAA+B,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC9C,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAA+B;IACrE,OAAO,cAAc,CAAC,MAAM,CAAyB,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,sBAAsB,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAqB,EAAE,KAAwB;IAClF,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;IACpB,wBAAwB,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { HtmlView, HtmlViewData, HtmlViewRuntime, Node, PartialNode, Rectangle } from '@flighthq/types';
|
|
2
|
+
export declare function computeHtmlViewLocalBoundsRectangle(out: Rectangle, source: Readonly<Node>): void;
|
|
3
|
+
export declare function createHtmlView(obj?: Readonly<PartialNode<HtmlView>>): HtmlView;
|
|
4
|
+
export declare function createHtmlViewData(data?: Readonly<Partial<HtmlViewData>>): HtmlViewData;
|
|
5
|
+
export declare function createHtmlViewRuntime(): HtmlViewRuntime;
|
|
6
|
+
export declare function getHtmlViewRuntime(source: Readonly<HtmlView>): Readonly<HtmlViewRuntime>;
|
|
7
|
+
export declare function setHtmlViewSize(source: HtmlView, width: number, height: number): void;
|
|
8
|
+
//# sourceMappingURL=htmlView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"htmlView.d.ts","sourceRoot":"","sources":["../src/htmlView.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAa,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAKxH,wBAAgB,mCAAmC,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAIhG;AAED,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAE9E;AAED,wBAAgB,kBAAkB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,YAAY,CAMvF;AAED,wBAAgB,qBAAqB,IAAI,eAAe,CAEvD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,CAExF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAKrF"}
|
package/dist/htmlView.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { invalidateNodeLocalBounds } from '@flighthq/node';
|
|
2
|
+
import { HtmlViewKind } from '@flighthq/types';
|
|
3
|
+
import { createDisplayObjectGeneric, createDisplayObjectRuntime, getDisplayObjectRuntime } from './displayObject';
|
|
4
|
+
export function computeHtmlViewLocalBoundsRectangle(out, source) {
|
|
5
|
+
const data = source.data;
|
|
6
|
+
out.width = data.width;
|
|
7
|
+
out.height = data.height;
|
|
8
|
+
}
|
|
9
|
+
export function createHtmlView(obj) {
|
|
10
|
+
return createDisplayObjectGeneric(HtmlViewKind, obj, createHtmlViewData, createHtmlViewRuntime);
|
|
11
|
+
}
|
|
12
|
+
export function createHtmlViewData(data) {
|
|
13
|
+
return {
|
|
14
|
+
element: data?.element ?? null,
|
|
15
|
+
height: data?.height ?? 100,
|
|
16
|
+
width: data?.width ?? 100,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function createHtmlViewRuntime() {
|
|
20
|
+
return createDisplayObjectRuntime(defaultMethods);
|
|
21
|
+
}
|
|
22
|
+
export function getHtmlViewRuntime(source) {
|
|
23
|
+
return getDisplayObjectRuntime(source);
|
|
24
|
+
}
|
|
25
|
+
export function setHtmlViewSize(source, width, height) {
|
|
26
|
+
if (source.data.width === width && source.data.height === height)
|
|
27
|
+
return;
|
|
28
|
+
source.data.width = width;
|
|
29
|
+
source.data.height = height;
|
|
30
|
+
invalidateNodeLocalBounds(source);
|
|
31
|
+
}
|
|
32
|
+
const defaultMethods = {
|
|
33
|
+
computeLocalBoundsRectangle: computeHtmlViewLocalBoundsRectangle,
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=htmlView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"htmlView.js","sourceRoot":"","sources":["../src/htmlView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAElH,MAAM,UAAU,mCAAmC,CAAC,GAAc,EAAE,MAAsB;IACxF,MAAM,IAAI,GAAI,MAAmB,CAAC,IAAI,CAAC;IACvC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACvB,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAqC;IAClE,OAAO,0BAA0B,CAAC,YAAY,EAAE,GAAG,EAAE,kBAAkB,EAAE,qBAAqB,CAAa,CAAC;AAC9G,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAsC;IACvE,OAAO;QACL,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,IAAI;QAC9B,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,GAAG;QAC3B,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,GAAG;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,0BAA0B,CAAC,cAAc,CAAoB,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAA0B;IAC3D,OAAO,uBAAuB,CAAC,MAAM,CAAoB,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAgB,EAAE,KAAa,EAAE,MAAc;IAC7E,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO;IACzE,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAC1B,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IAC5B,yBAAyB,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,cAAc,GAAwC;IAC1D,2BAA2B,EAAE,mCAAmC;CACjE,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Node, PartialNode, Rectangle, RenderView, RenderViewData, RenderViewRuntime } from '@flighthq/types';
|
|
2
|
+
export declare function computeRenderViewLocalBoundsRectangle(out: Rectangle, source: Readonly<Node>): void;
|
|
3
|
+
export declare function createRenderView(obj?: Readonly<PartialNode<RenderView>>): RenderView;
|
|
4
|
+
export declare function createRenderViewData(data?: Readonly<Partial<RenderViewData>>): RenderViewData;
|
|
5
|
+
export declare function createRenderViewRuntime(): RenderViewRuntime;
|
|
6
|
+
export declare function getRenderViewRuntime(source: Readonly<RenderView>): Readonly<RenderViewRuntime>;
|
|
7
|
+
export declare function setRenderViewSize(source: RenderView, width: number, height: number): void;
|
|
8
|
+
//# sourceMappingURL=renderView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderView.d.ts","sourceRoot":"","sources":["../src/renderView.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,IAAI,EACJ,WAAW,EACX,SAAS,EACT,UAAU,EACV,cAAc,EACd,iBAAiB,EAClB,MAAM,iBAAiB,CAAC;AAKzB,wBAAgB,qCAAqC,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAIlG;AAED,wBAAgB,gBAAgB,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,GAAG,UAAU,CAEpF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,cAAc,CAM7F;AAED,wBAAgB,uBAAuB,IAAI,iBAAiB,CAE3D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAE9F;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAKzF"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { invalidateNodeLocalBounds } from '@flighthq/node';
|
|
2
|
+
import { RenderViewKind } from '@flighthq/types';
|
|
3
|
+
import { createDisplayObjectGeneric, createDisplayObjectRuntime, getDisplayObjectRuntime } from './displayObject';
|
|
4
|
+
export function computeRenderViewLocalBoundsRectangle(out, source) {
|
|
5
|
+
const data = source.data;
|
|
6
|
+
out.width = data.width;
|
|
7
|
+
out.height = data.height;
|
|
8
|
+
}
|
|
9
|
+
export function createRenderView(obj) {
|
|
10
|
+
return createDisplayObjectGeneric(RenderViewKind, obj, createRenderViewData, createRenderViewRuntime);
|
|
11
|
+
}
|
|
12
|
+
export function createRenderViewData(data) {
|
|
13
|
+
return {
|
|
14
|
+
height: data?.height ?? 0,
|
|
15
|
+
renderer: data?.renderer ?? null,
|
|
16
|
+
width: data?.width ?? 0,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function createRenderViewRuntime() {
|
|
20
|
+
return createDisplayObjectRuntime(defaultMethods);
|
|
21
|
+
}
|
|
22
|
+
export function getRenderViewRuntime(source) {
|
|
23
|
+
return getDisplayObjectRuntime(source);
|
|
24
|
+
}
|
|
25
|
+
export function setRenderViewSize(source, width, height) {
|
|
26
|
+
if (source.data.width === width && source.data.height === height)
|
|
27
|
+
return;
|
|
28
|
+
source.data.width = width;
|
|
29
|
+
source.data.height = height;
|
|
30
|
+
invalidateNodeLocalBounds(source);
|
|
31
|
+
}
|
|
32
|
+
const defaultMethods = {
|
|
33
|
+
computeLocalBoundsRectangle: computeRenderViewLocalBoundsRectangle,
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=renderView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderView.js","sourceRoot":"","sources":["../src/renderView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAU3D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAElH,MAAM,UAAU,qCAAqC,CAAC,GAAc,EAAE,MAAsB;IAC1F,MAAM,IAAI,GAAI,MAAqB,CAAC,IAAI,CAAC;IACzC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACvB,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAuC;IACtE,OAAO,0BAA0B,CAAC,cAAc,EAAE,GAAG,EAAE,oBAAoB,EAAE,uBAAuB,CAAe,CAAC;AACtH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAwC;IAC3E,OAAO;QACL,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;QACzB,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,IAAI;QAChC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,0BAA0B,CAAC,cAAc,CAAsB,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAA4B;IAC/D,OAAO,uBAAuB,CAAC,MAAM,CAAsB,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAkB,EAAE,KAAa,EAAE,MAAc;IACjF,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO;IACzE,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAC1B,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IAC5B,yBAAyB,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,cAAc,GAA0C;IAC5D,2BAA2B,EAAE,qCAAqC;CACnE,CAAC"}
|
package/dist/stage.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { DisplayObject, Node, PartialNode, Rectangle, Stage, StageData, StageRuntime, StageSignals } from '@flighthq/types';
|
|
2
|
+
export declare function computeStageLocalBoundsRectangle(out: Rectangle, source: Readonly<Node>): void;
|
|
3
|
+
export declare function createStage(obj?: Readonly<PartialNode<Stage>>): Stage;
|
|
4
|
+
export declare function createStageData(data?: Readonly<Partial<StageData>>): StageData;
|
|
5
|
+
export declare function createStageRuntime(): StageRuntime;
|
|
6
|
+
export declare function createStageSignals(): StageSignals;
|
|
7
|
+
export declare function enableStageSignals(source: Stage): StageSignals;
|
|
8
|
+
export declare function getDisplayObjectStage(source: Readonly<DisplayObject>): Stage | null;
|
|
9
|
+
export declare function getStageRuntime(source: Readonly<Stage>): Readonly<StageRuntime>;
|
|
10
|
+
export declare function getStageSignals(source: Readonly<Stage>): StageSignals | null;
|
|
11
|
+
export declare function setStageSize(source: Stage, width: number, height: number): void;
|
|
12
|
+
//# sourceMappingURL=stage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stage.d.ts","sourceRoot":"","sources":["../src/stage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EAEb,IAAI,EACJ,WAAW,EACX,SAAS,EACT,KAAK,EACL,SAAS,EACT,YAAY,EACZ,YAAY,EACb,MAAM,iBAAiB,CAAC;AAKzB,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAI7F;AAED,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAErE;AAED,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,SAAS,CAM9E;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAIjD;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAMjD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,KAAK,GAAG,YAAY,CAG9D;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,KAAK,GAAG,IAAI,CAGnF;AAED,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,CAE5E;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAO/E"}
|
package/dist/stage.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { getNodeRoot, invalidateNodeLocalBounds } from '@flighthq/node';
|
|
2
|
+
import { createSignal, emitSignal } from '@flighthq/signals';
|
|
3
|
+
import { EntityRuntimeKey, StageKind } from '@flighthq/types';
|
|
4
|
+
import { createDisplayObjectGeneric, createDisplayObjectRuntime, getDisplayObjectRuntime } from './displayObject';
|
|
5
|
+
export function computeStageLocalBoundsRectangle(out, source) {
|
|
6
|
+
const data = source.data;
|
|
7
|
+
out.width = data.stageWidth;
|
|
8
|
+
out.height = data.stageHeight;
|
|
9
|
+
}
|
|
10
|
+
export function createStage(obj) {
|
|
11
|
+
return createDisplayObjectGeneric(StageKind, obj, createStageData, createStageRuntime);
|
|
12
|
+
}
|
|
13
|
+
export function createStageData(data) {
|
|
14
|
+
return {
|
|
15
|
+
color: data?.color ?? null,
|
|
16
|
+
stageHeight: data?.stageHeight ?? 550,
|
|
17
|
+
stageWidth: data?.stageWidth ?? 400,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export function createStageRuntime() {
|
|
21
|
+
const out = createDisplayObjectRuntime(defaultMethods);
|
|
22
|
+
out.stageSignals = null;
|
|
23
|
+
return out;
|
|
24
|
+
}
|
|
25
|
+
export function createStageSignals() {
|
|
26
|
+
return {
|
|
27
|
+
onFullscreenChanged: createSignal(),
|
|
28
|
+
onOrientationChanged: createSignal(),
|
|
29
|
+
onResize: createSignal(),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export function enableStageSignals(source) {
|
|
33
|
+
const runtime = source[EntityRuntimeKey];
|
|
34
|
+
return (runtime.stageSignals ??= createStageSignals());
|
|
35
|
+
}
|
|
36
|
+
export function getDisplayObjectStage(source) {
|
|
37
|
+
const root = getNodeRoot(source);
|
|
38
|
+
return root.kind === StageKind ? root : null;
|
|
39
|
+
}
|
|
40
|
+
export function getStageRuntime(source) {
|
|
41
|
+
return getDisplayObjectRuntime(source);
|
|
42
|
+
}
|
|
43
|
+
export function getStageSignals(source) {
|
|
44
|
+
return source[EntityRuntimeKey].stageSignals;
|
|
45
|
+
}
|
|
46
|
+
export function setStageSize(source, width, height) {
|
|
47
|
+
if (source.data.stageWidth === width && source.data.stageHeight === height)
|
|
48
|
+
return;
|
|
49
|
+
source.data.stageWidth = width;
|
|
50
|
+
source.data.stageHeight = height;
|
|
51
|
+
invalidateNodeLocalBounds(source);
|
|
52
|
+
const runtime = source[EntityRuntimeKey];
|
|
53
|
+
if (runtime.stageSignals)
|
|
54
|
+
emitSignal(runtime.stageSignals.onResize);
|
|
55
|
+
}
|
|
56
|
+
const defaultMethods = {
|
|
57
|
+
computeLocalBoundsRectangle: computeStageLocalBoundsRectangle,
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=stage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stage.js","sourceRoot":"","sources":["../src/stage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAY7D,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAElH,MAAM,UAAU,gCAAgC,CAAC,GAAc,EAAE,MAAsB;IACrF,MAAM,IAAI,GAAI,MAAgB,CAAC,IAAI,CAAC;IACpC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;IAC5B,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAkC;IAC5D,OAAO,0BAA0B,CAAC,SAAS,EAAE,GAAG,EAAE,eAAe,EAAE,kBAAkB,CAAU,CAAC;AAClG,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAmC;IACjE,OAAO;QACL,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI;QAC1B,WAAW,EAAE,IAAI,EAAE,WAAW,IAAI,GAAG;QACrC,UAAU,EAAE,IAAI,EAAE,UAAU,IAAI,GAAG;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,0BAA0B,CAAC,cAAc,CAAiB,CAAC;IACvE,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC;IACxB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,mBAAmB,EAAE,YAAY,EAAE;QACnC,oBAAoB,EAAE,YAAY,EAAE;QACpC,QAAQ,EAAE,YAAY,EAAE;KACzB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAa;IAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAiB,CAAC;IACzD,OAAO,CAAC,OAAO,CAAC,YAAY,KAAK,kBAAkB,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAA+B;IACnE,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAE,IAAc,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAuB;IACrD,OAAO,uBAAuB,CAAC,MAAM,CAAiB,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAuB;IACrD,OAAQ,MAAM,CAAC,gBAAgB,CAAkB,CAAC,YAAY,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAa,EAAE,KAAa,EAAE,MAAc;IACvE,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,KAAK,MAAM;QAAE,OAAO;IACnF,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC/B,MAAM,CAAC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;IACjC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAiB,CAAC;IACzD,IAAI,OAAO,CAAC,YAAY;QAAE,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,cAAc,GAAqC;IACvD,2BAA2B,EAAE,gCAAgC;CAC9D,CAAC"}
|
package/dist/video.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Node, PartialNode, Rectangle, Video, VideoData, VideoRuntime } from '@flighthq/types';
|
|
2
|
+
export declare function computeVideoLocalBoundsRectangle(out: Rectangle, source: Readonly<Node>): void;
|
|
3
|
+
export declare function createVideo(obj?: Readonly<PartialNode<Video>>): Video;
|
|
4
|
+
export declare function createVideoData(data?: Readonly<Partial<VideoData>>): VideoData;
|
|
5
|
+
export declare function createVideoRuntime(): VideoRuntime;
|
|
6
|
+
export declare function getVideoRuntime(source: Readonly<Video>): Readonly<VideoRuntime>;
|
|
7
|
+
export declare function setVideoSmoothing(source: Video, value: boolean): void;
|
|
8
|
+
export declare function setVideoSource(source: Video, value: VideoData['source']): void;
|
|
9
|
+
//# sourceMappingURL=video.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../src/video.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAa,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAK/G,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAM7F;AAED,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAErE;AAED,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,SAAS,CAK9E;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAEjD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAE/E;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAKrE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAK9E"}
|
package/dist/video.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { invalidateNodeLocalBounds, invalidateNodeLocalContent } from '@flighthq/node';
|
|
2
|
+
import { VideoKind } from '@flighthq/types';
|
|
3
|
+
import { createDisplayObjectGeneric, createDisplayObjectRuntime, getDisplayObjectRuntime } from './displayObject';
|
|
4
|
+
export function computeVideoLocalBoundsRectangle(out, source) {
|
|
5
|
+
const element = source.data.source?.element;
|
|
6
|
+
if (element !== undefined && element !== null) {
|
|
7
|
+
out.width = element.videoWidth;
|
|
8
|
+
out.height = element.videoHeight;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function createVideo(obj) {
|
|
12
|
+
return createDisplayObjectGeneric(VideoKind, obj, createVideoData, createVideoRuntime);
|
|
13
|
+
}
|
|
14
|
+
export function createVideoData(data) {
|
|
15
|
+
return {
|
|
16
|
+
smoothing: data?.smoothing ?? true,
|
|
17
|
+
source: data?.source ?? null,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export function createVideoRuntime() {
|
|
21
|
+
return createDisplayObjectRuntime(defaultMethods);
|
|
22
|
+
}
|
|
23
|
+
export function getVideoRuntime(source) {
|
|
24
|
+
return getDisplayObjectRuntime(source);
|
|
25
|
+
}
|
|
26
|
+
export function setVideoSmoothing(source, value) {
|
|
27
|
+
// Sampler filter mode is a content-rasterization concern, not a compositing one — same tier as a
|
|
28
|
+
// new image on a Bitmap, and it does not change the node's bounds.
|
|
29
|
+
source.data.smoothing = value;
|
|
30
|
+
invalidateNodeLocalContent(source);
|
|
31
|
+
}
|
|
32
|
+
export function setVideoSource(source, value) {
|
|
33
|
+
// A new source is new pixels (content) and possibly new dimensions (bounds).
|
|
34
|
+
source.data.source = value;
|
|
35
|
+
invalidateNodeLocalContent(source);
|
|
36
|
+
invalidateNodeLocalBounds(source);
|
|
37
|
+
}
|
|
38
|
+
const defaultMethods = {
|
|
39
|
+
computeLocalBoundsRectangle: computeVideoLocalBoundsRectangle,
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=video.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video.js","sourceRoot":"","sources":["../src/video.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAEvF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAElH,MAAM,UAAU,gCAAgC,CAAC,GAAc,EAAE,MAAsB;IACrF,MAAM,OAAO,GAAI,MAAM,CAAC,IAAkB,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3D,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAC9C,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;QAC/B,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IACnC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAkC;IAC5D,OAAO,0BAA0B,CAAC,SAAS,EAAE,GAAG,EAAE,eAAe,EAAE,kBAAkB,CAAU,CAAC;AAClG,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAmC;IACjE,OAAO;QACL,SAAS,EAAE,IAAI,EAAE,SAAS,IAAI,IAAI;QAClC,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI;KAC7B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,0BAA0B,CAAC,cAAc,CAAiB,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAuB;IACrD,OAAO,uBAAuB,CAAC,MAAM,CAAiB,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAa,EAAE,KAAc;IAC7D,iGAAiG;IACjG,mEAAmE;IACnE,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IAC9B,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAa,EAAE,KAA0B;IACtE,6EAA6E;IAC7E,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IAC3B,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,yBAAyB,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,cAAc,GAAqC;IACvD,2BAA2B,EAAE,gCAAgC;CAC9D,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@flighthq/displayobject",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"default": "./dist/index.js"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"dist",
|
|
15
|
+
"src/**/*.test.ts",
|
|
16
|
+
"!dist/**/*.test.js",
|
|
17
|
+
"!dist/**/*.test.d.ts",
|
|
18
|
+
"!dist/**/*.test.js.map",
|
|
19
|
+
"!dist/**/*.test.d.ts.map"
|
|
20
|
+
],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsc -b",
|
|
23
|
+
"clean": "tsc -b --clean",
|
|
24
|
+
"test": "vitest run --config vitest.config.ts",
|
|
25
|
+
"test:watch": "vitest --watch --config vitest.config.ts",
|
|
26
|
+
"prepack": "npm run clean && npm run clean:dist && npm run build",
|
|
27
|
+
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"@flighthq/geometry": "0.1.0",
|
|
31
|
+
"@flighthq/node": "0.1.0",
|
|
32
|
+
"@flighthq/signals": "0.1.0",
|
|
33
|
+
"@flighthq/types": "0.1.0"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"@flighthq/entity": "*",
|
|
37
|
+
"typescript": "^5.3.0"
|
|
38
|
+
},
|
|
39
|
+
"description": "Display object tree for composited 2D rendering: bitmaps, shapes, text, masks, blend modes",
|
|
40
|
+
"sideEffects": false
|
|
41
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { getEntityRuntime } from '@flighthq/entity';
|
|
2
|
+
import { createRectangle } from '@flighthq/geometry';
|
|
3
|
+
import type { Bitmap, BitmapRuntime, ImageResource, Node } from '@flighthq/types';
|
|
4
|
+
import { BitmapKind } from '@flighthq/types';
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
computeBitmapLocalBoundsRectangle,
|
|
8
|
+
createBitmap,
|
|
9
|
+
createBitmapData,
|
|
10
|
+
createBitmapRuntime,
|
|
11
|
+
getBitmapRuntime,
|
|
12
|
+
setBitmapImage,
|
|
13
|
+
} from './bitmap';
|
|
14
|
+
|
|
15
|
+
describe('computeBitmapLocalBoundsRectangle', () => {
|
|
16
|
+
it('sets out dimensions from image when image is present', () => {
|
|
17
|
+
const bitmap = createBitmap({ data: { image: { width: 100, height: 200 } as ImageResource } });
|
|
18
|
+
const out = createRectangle();
|
|
19
|
+
computeBitmapLocalBoundsRectangle(out, bitmap as unknown as Node);
|
|
20
|
+
expect(out.width).toBe(100);
|
|
21
|
+
expect(out.height).toBe(200);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
it('does not modify out when image is null', () => {
|
|
25
|
+
const bitmap = createBitmap();
|
|
26
|
+
const out = createRectangle(0, 0, 50, 60);
|
|
27
|
+
computeBitmapLocalBoundsRectangle(out, bitmap as unknown as Node);
|
|
28
|
+
expect(out.width).toBe(50);
|
|
29
|
+
expect(out.height).toBe(60);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
describe('createBitmap', () => {
|
|
34
|
+
let bitmap: Bitmap;
|
|
35
|
+
|
|
36
|
+
beforeEach(() => {
|
|
37
|
+
bitmap = createBitmap();
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it('initializes default values', () => {
|
|
41
|
+
expect(bitmap.data.image).toBeNull();
|
|
42
|
+
expect(bitmap.data.smoothing).toBe(true);
|
|
43
|
+
expect(bitmap.kind).toBe(BitmapKind);
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it('allows pre-defined values', () => {
|
|
47
|
+
const image = {} as ImageResource;
|
|
48
|
+
const base = {
|
|
49
|
+
data: {
|
|
50
|
+
image: image,
|
|
51
|
+
smoothing: false,
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
const obj = createBitmap(base);
|
|
55
|
+
expect(obj.data.image).toBe(image);
|
|
56
|
+
expect(obj.data.smoothing).toBe(false);
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it('returns a new object for better hidden-class performance', () => {
|
|
60
|
+
const base = {};
|
|
61
|
+
const obj = createBitmap(base);
|
|
62
|
+
expect(obj).not.toStrictEqual(base);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
describe('createBitmapData', () => {
|
|
67
|
+
it('returns default values', () => {
|
|
68
|
+
const data = createBitmapData();
|
|
69
|
+
expect(data.image).toBeNull();
|
|
70
|
+
expect(data.smoothing).toBe(true);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it('allows pre-defined values', () => {
|
|
74
|
+
const image = { width: 10, height: 10 } as ImageResource;
|
|
75
|
+
const data = createBitmapData({ image, smoothing: false });
|
|
76
|
+
expect(data.image).toBe(image);
|
|
77
|
+
expect(data.smoothing).toBe(false);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
describe('createBitmapRuntime', () => {
|
|
82
|
+
it('returns a non-null runtime', () => {
|
|
83
|
+
const runtime = createBitmapRuntime();
|
|
84
|
+
expect(runtime).not.toBeNull();
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
it('uses computeBitmapLocalBoundsRectangle', () => {
|
|
88
|
+
const runtime = createBitmapRuntime();
|
|
89
|
+
expect(runtime.computeLocalBoundsRectangle).toStrictEqual(computeBitmapLocalBoundsRectangle);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
describe('getBitmapRuntime', () => {
|
|
94
|
+
it('returns the runtime of the given Bitmap', () => {
|
|
95
|
+
const bitmap = createBitmap();
|
|
96
|
+
const runtime = getBitmapRuntime(bitmap);
|
|
97
|
+
expect(runtime).not.toBeNull();
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
describe('setBitmapImage', () => {
|
|
102
|
+
it('sets the image', () => {
|
|
103
|
+
const bitmap = createBitmap();
|
|
104
|
+
const image = { width: 64, height: 64 } as ImageResource;
|
|
105
|
+
setBitmapImage(bitmap, image);
|
|
106
|
+
expect(bitmap.data.image).toBe(image);
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
it('accepts null', () => {
|
|
110
|
+
const bitmap = createBitmap({ data: { image: { width: 1, height: 1 } as ImageResource } });
|
|
111
|
+
setBitmapImage(bitmap, null);
|
|
112
|
+
expect(bitmap.data.image).toBeNull();
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
it('invalidates local bounds', () => {
|
|
116
|
+
const bitmap = createBitmap();
|
|
117
|
+
const runtime = getEntityRuntime(bitmap) as BitmapRuntime;
|
|
118
|
+
const idBefore = runtime.localBoundsId;
|
|
119
|
+
setBitmapImage(bitmap, { width: 64, height: 64 } as ImageResource);
|
|
120
|
+
expect(runtime.localBoundsId).not.toBe(idBefore);
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
it('invalidates local content', () => {
|
|
124
|
+
const bitmap = createBitmap();
|
|
125
|
+
const runtime = getEntityRuntime(bitmap) as BitmapRuntime;
|
|
126
|
+
const idBefore = runtime.localContentId;
|
|
127
|
+
setBitmapImage(bitmap, { width: 64, height: 64 } as ImageResource);
|
|
128
|
+
expect(runtime.localContentId).not.toBe(idBefore);
|
|
129
|
+
});
|
|
130
|
+
});
|