@flighthq/scene2d-dom 0.3.0-next.906.07cea63 → 0.3.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.
Files changed (74) hide show
  1. package/dist/contract.d.ts +7 -2
  2. package/dist/contract.d.ts.map +1 -1
  3. package/dist/contract.js +7 -2
  4. package/dist/contract.js.map +1 -1
  5. package/dist/domBitmapTextureResolver.d.ts +3 -0
  6. package/dist/domBitmapTextureResolver.d.ts.map +1 -0
  7. package/dist/domBitmapTextureResolver.js +23 -0
  8. package/dist/domBitmapTextureResolver.js.map +1 -0
  9. package/dist/domHtmlView.d.ts +1 -1
  10. package/dist/domHtmlView.d.ts.map +1 -1
  11. package/dist/domHtmlView.js +1 -1
  12. package/dist/domHtmlView.js.map +1 -1
  13. package/dist/domImageSource.d.ts +2 -3
  14. package/dist/domImageSource.d.ts.map +1 -1
  15. package/dist/domImageSource.js +5 -32
  16. package/dist/domImageSource.js.map +1 -1
  17. package/dist/domImageTextureResolver.d.ts +3 -0
  18. package/dist/domImageTextureResolver.d.ts.map +1 -0
  19. package/dist/domImageTextureResolver.js +10 -0
  20. package/dist/domImageTextureResolver.js.map +1 -0
  21. package/dist/domScale9Shape.d.ts +1 -1
  22. package/dist/domScale9Shape.d.ts.map +1 -1
  23. package/dist/domScale9Shape.js +21 -8
  24. package/dist/domScale9Shape.js.map +1 -1
  25. package/dist/domShape.d.ts +1 -0
  26. package/dist/domShape.d.ts.map +1 -1
  27. package/dist/domShape.js +22 -8
  28. package/dist/domShape.js.map +1 -1
  29. package/dist/domShapeRasterizer.d.ts +4 -0
  30. package/dist/domShapeRasterizer.d.ts.map +1 -0
  31. package/dist/domShapeRasterizer.js +11 -0
  32. package/dist/domShapeRasterizer.js.map +1 -0
  33. package/dist/domSprite.d.ts +4 -0
  34. package/dist/domSprite.d.ts.map +1 -0
  35. package/dist/domSprite.js +95 -0
  36. package/dist/domSprite.js.map +1 -0
  37. package/dist/domTextureResolver.d.ts +4 -0
  38. package/dist/domTextureResolver.d.ts.map +1 -0
  39. package/dist/domTextureResolver.js +26 -0
  40. package/dist/domTextureResolver.js.map +1 -0
  41. package/dist/enableDomTextureResolverGuards.d.ts +4 -0
  42. package/dist/enableDomTextureResolverGuards.d.ts.map +1 -0
  43. package/dist/enableDomTextureResolverGuards.js +8 -0
  44. package/dist/enableDomTextureResolverGuards.js.map +1 -0
  45. package/dist/explainDomTextureResolution.d.ts +3 -0
  46. package/dist/explainDomTextureResolution.d.ts.map +1 -0
  47. package/dist/explainDomTextureResolution.js +14 -0
  48. package/dist/explainDomTextureResolution.js.map +1 -0
  49. package/dist/index.d.ts +2 -1
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +2 -1
  52. package/dist/index.js.map +1 -1
  53. package/package.json +20 -14
  54. package/src/domBitmapTextureResolver.test.ts +17 -0
  55. package/src/domHtmlView.test.ts +5 -5
  56. package/src/domImageSource.test.ts +35 -28
  57. package/src/domImageTextureResolver.test.ts +24 -0
  58. package/src/domScale9Shape.test.ts +7 -0
  59. package/src/domShape.test.ts +9 -4
  60. package/src/domShapeRasterizer.test.ts +32 -0
  61. package/src/domSprite.test.ts +58 -0
  62. package/src/domTextureResolver.test.ts +28 -0
  63. package/src/enableDomTextureResolverGuards.test.ts +58 -0
  64. package/src/explainDomTextureResolution.test.ts +32 -0
  65. package/dist/domBitmap.d.ts +0 -4
  66. package/dist/domBitmap.d.ts.map +0 -1
  67. package/dist/domBitmap.js +0 -81
  68. package/dist/domBitmap.js.map +0 -1
  69. package/dist/domVideo.d.ts +0 -4
  70. package/dist/domVideo.d.ts.map +0 -1
  71. package/dist/domVideo.js +0 -27
  72. package/dist/domVideo.js.map +0 -1
  73. package/src/domBitmap.test.ts +0 -117
  74. package/src/domVideo.test.ts +0 -30
@@ -1 +0,0 @@
1
- {"version":3,"file":"domBitmap.js","sourceRoot":"","sources":["../src/domBitmap.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import type { Scene2DRenderer, DomRenderState, RenderProxy2D } from '@flighthq/types/contract';
2
- export declare function drawDomVideo(state: DomRenderState, renderProxy: RenderProxy2D): void;
3
- export declare const defaultDomVideoRenderer: Scene2DRenderer;
4
- //# sourceMappingURL=domVideo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"domVideo.d.ts","sourceRoot":"","sources":["../src/domVideo.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EAGd,aAAa,EAGd,MAAM,0BAA0B,CAAC;AAYlC,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CAkBpF;AAED,eAAO,MAAM,uBAAuB,EAAE,eAGrC,CAAC"}
package/dist/domVideo.js DELETED
@@ -1,27 +0,0 @@
1
- import { createEntity } from '@flighthq/entity/contract';
2
- import { applyDomStyle, prepareDomElement, setDomRendererElement } from './domStyle';
3
- function createDomVideoData(_state, _source) {
4
- return createEntity({ element: null });
5
- }
6
- export function drawDomVideo(state, renderProxy) {
7
- const data = renderProxy.rendererData;
8
- if (data === null)
9
- return;
10
- const source = renderProxy.source;
11
- const element = source.data.source?.element ?? null;
12
- if (element === null || element.videoWidth === 0 || element.videoHeight === 0)
13
- return;
14
- if (data.element !== element) {
15
- data.element = element;
16
- prepareDomElement(element);
17
- }
18
- element.style.width = `${element.videoWidth}px`;
19
- element.style.height = `${element.videoHeight}px`;
20
- applyDomStyle(state, element, renderProxy);
21
- setDomRendererElement(state, element);
22
- }
23
- export const defaultDomVideoRenderer = {
24
- createData: createDomVideoData,
25
- submit: drawDomVideo,
26
- };
27
- //# sourceMappingURL=domVideo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"domVideo.js","sourceRoot":"","sources":["../src/domVideo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAWzD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAMrF,SAAS,kBAAkB,CAAC,MAAmB,EAAE,OAAmB;IAClE,OAAO,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAqB,EAAE,WAA0B;IAC5E,MAAM,IAAI,GAAG,WAAW,CAAC,YAAmC,CAAC;IAC7D,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO;IAE1B,MAAM,MAAM,GAAG,WAAW,CAAC,MAAe,CAAC;IAC3C,MAAM,OAAO,GAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAA+C,IAAI,IAAI,CAAC;IAC7F,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,UAAU,KAAK,CAAC,IAAI,OAAO,CAAC,WAAW,KAAK,CAAC;QAAE,OAAO;IAEtF,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC;IAChD,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC;IAElD,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAC3C,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAoB;IACtD,UAAU,EAAE,kBAAkB;IAC9B,MAAM,EAAE,YAAY;CACrB,CAAC"}
@@ -1,117 +0,0 @@
1
- import { createImageResource, createImageResourceFromCanvas } from '@flighthq/image/contract';
2
- import { registerRenderer } from '@flighthq/render/contract';
3
- import { getOrCreateRenderProxy2D } from '@flighthq/render/contract';
4
- import { createBitmap } from '@flighthq/scene2d/contract';
5
- import { BitmapKind } from '@flighthq/types/contract';
6
-
7
- import { defaultDomBitmapRenderer, drawDomBitmap } from './domBitmap';
8
- import { createDomRenderState, getDomRenderStateRuntime } from './domRenderState';
9
-
10
- function makeState(pixelRatio = 1) {
11
- const container = document.createElement('div');
12
- const state = createDomRenderState(container, { pixelRatio });
13
- registerRenderer(state, BitmapKind, defaultDomBitmapRenderer);
14
- return state;
15
- }
16
-
17
- function drawGetEl(state: ReturnType<typeof makeState>, drawFn: () => void): HTMLElement | null {
18
- getDomRenderStateRuntime(state).domCurrentElement = null;
19
- drawFn();
20
- return getDomRenderStateRuntime(state).domCurrentElement;
21
- }
22
-
23
- function makeHtmlImageSource() {
24
- const img = document.createElement('img') as HTMLImageElement;
25
- img.src = 'test.png';
26
- const source = createImageResource(img);
27
- source.width = 64;
28
- source.height = 64;
29
- return source;
30
- }
31
-
32
- function makeCanvasImageSource() {
33
- const canvas = document.createElement('canvas');
34
- canvas.width = 64;
35
- canvas.height = 64;
36
- return createImageResourceFromCanvas(canvas);
37
- }
38
-
39
- describe('defaultDomBitmapRenderer', () => {
40
- it('has submit, and createData', () => {
41
- expect(typeof defaultDomBitmapRenderer.submit).toBe('function');
42
- expect(typeof defaultDomBitmapRenderer.createData).toBe('function');
43
- });
44
- });
45
-
46
- describe('drawDomBitmap', () => {
47
- it('does nothing when imageSource is null', () => {
48
- const state = makeState();
49
- const bitmap = createBitmap();
50
- bitmap.data.image = null;
51
- const renderProxy = getOrCreateRenderProxy2D(state, bitmap);
52
-
53
- const el = drawGetEl(state, () => drawDomBitmap(state, renderProxy));
54
-
55
- expect(el).toBeNull();
56
- });
57
-
58
- it('produces an img element when source is HTMLImageElement', () => {
59
- const state = makeState();
60
- const bitmap = createBitmap();
61
- bitmap.data.image = makeHtmlImageSource();
62
- const renderProxy = getOrCreateRenderProxy2D(state, bitmap);
63
-
64
- const el = drawGetEl(state, () => drawDomBitmap(state, renderProxy));
65
-
66
- expect(el).not.toBeNull();
67
- expect(el!.tagName).toBe('IMG');
68
- });
69
-
70
- it('produces a canvas element when source is not HTMLImageElement', () => {
71
- const state = makeState();
72
- const bitmap = createBitmap();
73
- bitmap.data.image = makeCanvasImageSource();
74
- const renderProxy = getOrCreateRenderProxy2D(state, bitmap);
75
-
76
- const el = drawGetEl(state, () => drawDomBitmap(state, renderProxy));
77
-
78
- expect(el).not.toBeNull();
79
- expect(el!.tagName).toBe('CANVAS');
80
- });
81
-
82
- it('reuses the same img element across multiple draws', () => {
83
- const state = makeState();
84
- const bitmap = createBitmap();
85
- bitmap.data.image = makeHtmlImageSource();
86
- const renderProxy = getOrCreateRenderProxy2D(state, bitmap);
87
-
88
- const firstImg = drawGetEl(state, () => drawDomBitmap(state, renderProxy));
89
- const secondImg = drawGetEl(state, () => drawDomBitmap(state, renderProxy));
90
-
91
- expect(firstImg).toBe(secondImg);
92
- });
93
-
94
- it('sets canvas dimensions to match image source', () => {
95
- const state = makeState();
96
- const bitmap = createBitmap();
97
- bitmap.data.image = makeCanvasImageSource();
98
- const renderProxy = getOrCreateRenderProxy2D(state, bitmap);
99
-
100
- const canvas = drawGetEl(state, () => drawDomBitmap(state, renderProxy)) as HTMLCanvasElement;
101
- expect(canvas.width).toBe(64);
102
- expect(canvas.height).toBe(64);
103
- });
104
-
105
- it('sizes the backing canvas at physical pixels and constrains layout to logical pixels on HiDPI', () => {
106
- const state = makeState(2);
107
- const bitmap = createBitmap();
108
- bitmap.data.image = makeCanvasImageSource();
109
- const renderProxy = getOrCreateRenderProxy2D(state, bitmap);
110
-
111
- const canvas = drawGetEl(state, () => drawDomBitmap(state, renderProxy)) as HTMLCanvasElement;
112
- expect(canvas.width).toBe(128);
113
- expect(canvas.height).toBe(128);
114
- expect(canvas.style.width).toBe('64px');
115
- expect(canvas.style.height).toBe('64px');
116
- });
117
- });
@@ -1,30 +0,0 @@
1
- import { registerRenderer } from '@flighthq/render/contract';
2
- import { getOrCreateRenderProxy2D } from '@flighthq/render/contract';
3
- import { createVideo } from '@flighthq/scene2d/contract';
4
- import { VideoKind } from '@flighthq/types/contract';
5
-
6
- import { createDomRenderState } from './domRenderState';
7
- import { defaultDomVideoRenderer, drawDomVideo } from './domVideo';
8
-
9
- function makeState() {
10
- const container = document.createElement('div');
11
- const state = createDomRenderState(container);
12
- registerRenderer(state, VideoKind, defaultDomVideoRenderer);
13
- return state;
14
- }
15
-
16
- describe('defaultDomVideoRenderer', () => {
17
- it('has submit, and createData functions', () => {
18
- expect(typeof defaultDomVideoRenderer.submit).toBe('function');
19
- expect(typeof defaultDomVideoRenderer.createData).toBe('function');
20
- });
21
- });
22
-
23
- describe('drawDomVideo', () => {
24
- it('does not throw when source element is null', () => {
25
- const state = makeState();
26
- const video = createVideo();
27
- const renderProxy = getOrCreateRenderProxy2D(state, video);
28
- expect(() => drawDomVideo(state, renderProxy)).not.toThrow();
29
- });
30
- });