@flighthq/displayobject-dom 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/domBackground.d.ts +3 -0
- package/dist/domBackground.d.ts.map +1 -0
- package/dist/domBackground.js +9 -0
- package/dist/domBackground.js.map +1 -0
- package/dist/domBitmap.d.ts +4 -0
- package/dist/domBitmap.d.ts.map +1 -0
- package/dist/domBitmap.js +77 -0
- package/dist/domBitmap.js.map +1 -0
- package/dist/domCSSFilterBinding.d.ts +28 -0
- package/dist/domCSSFilterBinding.d.ts.map +1 -0
- package/dist/domCSSFilterBinding.js +56 -0
- package/dist/domCSSFilterBinding.js.map +1 -0
- package/dist/domCache.d.ts +14 -0
- package/dist/domCache.d.ts.map +1 -0
- package/dist/domCache.js +64 -0
- package/dist/domCache.js.map +1 -0
- package/dist/domClip.d.ts +3 -0
- package/dist/domClip.d.ts.map +1 -0
- package/dist/domClip.js +38 -0
- package/dist/domClip.js.map +1 -0
- package/dist/domClipContours.d.ts +6 -0
- package/dist/domClipContours.d.ts.map +1 -0
- package/dist/domClipContours.js +48 -0
- package/dist/domClipContours.js.map +1 -0
- package/dist/domClipRectangle.d.ts +6 -0
- package/dist/domClipRectangle.d.ts.map +1 -0
- package/dist/domClipRectangle.js +148 -0
- package/dist/domClipRectangle.js.map +1 -0
- package/dist/domDisplayObject.d.ts +5 -0
- package/dist/domDisplayObject.d.ts.map +1 -0
- package/dist/domDisplayObject.js +60 -0
- package/dist/domDisplayObject.js.map +1 -0
- package/dist/domFontSource.d.ts +5 -0
- package/dist/domFontSource.d.ts.map +1 -0
- package/dist/domFontSource.js +18 -0
- package/dist/domFontSource.js.map +1 -0
- package/dist/domMaterials.d.ts +15 -0
- package/dist/domMaterials.d.ts.map +1 -0
- package/dist/domMaterials.js +62 -0
- package/dist/domMaterials.js.map +1 -0
- package/dist/domNativeText.d.ts +5 -0
- package/dist/domNativeText.d.ts.map +1 -0
- package/dist/domNativeText.js +65 -0
- package/dist/domNativeText.js.map +1 -0
- package/dist/domReconcile.d.ts +9 -0
- package/dist/domReconcile.d.ts.map +1 -0
- package/dist/domReconcile.js +69 -0
- package/dist/domReconcile.js.map +1 -0
- package/dist/domRenderState.d.ts +5 -0
- package/dist/domRenderState.d.ts.map +1 -0
- package/dist/domRenderState.js +43 -0
- package/dist/domRenderState.js.map +1 -0
- package/dist/domRenderView.d.ts +4 -0
- package/dist/domRenderView.d.ts.map +1 -0
- package/dist/domRenderView.js +24 -0
- package/dist/domRenderView.js.map +1 -0
- package/dist/domRichText.d.ts +7 -0
- package/dist/domRichText.d.ts.map +1 -0
- package/dist/domRichText.js +183 -0
- package/dist/domRichText.js.map +1 -0
- package/dist/domScale9Mapper.d.ts +3 -0
- package/dist/domScale9Mapper.d.ts.map +1 -0
- package/dist/domScale9Mapper.js +37 -0
- package/dist/domScale9Mapper.js.map +1 -0
- package/dist/domScale9Shape.d.ts +10 -0
- package/dist/domScale9Shape.d.ts.map +1 -0
- package/dist/domScale9Shape.js +59 -0
- package/dist/domScale9Shape.js.map +1 -0
- package/dist/domShape.d.ts +4 -0
- package/dist/domShape.d.ts.map +1 -0
- package/dist/domShape.js +45 -0
- package/dist/domShape.js.map +1 -0
- package/dist/domStyle.d.ts +9 -0
- package/dist/domStyle.d.ts.map +1 -0
- package/dist/domStyle.js +25 -0
- package/dist/domStyle.js.map +1 -0
- package/dist/domSvgFilter.d.ts +27 -0
- package/dist/domSvgFilter.d.ts.map +1 -0
- package/dist/domSvgFilter.js +88 -0
- package/dist/domSvgFilter.js.map +1 -0
- package/dist/domTextHelpers.d.ts +6 -0
- package/dist/domTextHelpers.d.ts.map +1 -0
- package/dist/domTextHelpers.js +8 -0
- package/dist/domTextHelpers.js.map +1 -0
- package/dist/domTextInput.d.ts +4 -0
- package/dist/domTextInput.d.ts.map +1 -0
- package/dist/domTextInput.js +60 -0
- package/dist/domTextInput.js.map +1 -0
- package/dist/domTextLabel.d.ts +4 -0
- package/dist/domTextLabel.d.ts.map +1 -0
- package/dist/domTextLabel.js +74 -0
- package/dist/domTextLabel.js.map +1 -0
- package/dist/domTransform.d.ts +4 -0
- package/dist/domTransform.d.ts.map +1 -0
- package/dist/domTransform.js +16 -0
- package/dist/domTransform.js.map +1 -0
- package/dist/domVideo.d.ts +4 -0
- package/dist/domVideo.d.ts.map +1 -0
- package/dist/domVideo.js +27 -0
- package/dist/domVideo.js.map +1 -0
- package/dist/htmlView.d.ts +4 -0
- package/dist/htmlView.d.ts.map +1 -0
- package/dist/htmlView.js +28 -0
- package/dist/htmlView.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/package.json +49 -0
- package/src/domBackground.test.ts +35 -0
- package/src/domBitmap.test.ts +117 -0
- package/src/domCSSFilterBinding.test.ts +104 -0
- package/src/domCache.test.ts +93 -0
- package/src/domClip.test.ts +12 -0
- package/src/domClipContours.test.ts +62 -0
- package/src/domClipRectangle.test.ts +81 -0
- package/src/domDisplayObject.test.ts +236 -0
- package/src/domFontSource.test.ts +30 -0
- package/src/domMaterials.test.ts +111 -0
- package/src/domNativeText.test.ts +71 -0
- package/src/domReconcile.test.ts +158 -0
- package/src/domRenderState.test.ts +87 -0
- package/src/domRenderView.test.ts +69 -0
- package/src/domRichText.test.ts +165 -0
- package/src/domScale9Mapper.test.ts +20 -0
- package/src/domScale9Shape.test.ts +76 -0
- package/src/domShape.test.ts +85 -0
- package/src/domStyle.test.ts +130 -0
- package/src/domSvgFilter.test.ts +116 -0
- package/src/domTextHelpers.test.ts +27 -0
- package/src/domTextInput.test.ts +61 -0
- package/src/domTextLabel.test.ts +92 -0
- package/src/domTransform.test.ts +68 -0
- package/src/domVideo.test.ts +30 -0
- package/src/htmlView.test.ts +117 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { createHtmlView } from '@flighthq/displayobject';
|
|
2
|
+
import { registerRenderer } from '@flighthq/render';
|
|
3
|
+
import { getOrCreateRenderProxy2D } from '@flighthq/render';
|
|
4
|
+
import { HtmlViewKind } from '@flighthq/types';
|
|
5
|
+
|
|
6
|
+
import { createDomRenderState, getDomRenderStateRuntime } from './domRenderState';
|
|
7
|
+
import { defaultHtmlViewRenderer, drawDomHtmlView } from './htmlView';
|
|
8
|
+
|
|
9
|
+
function makeState() {
|
|
10
|
+
const container = document.createElement('div');
|
|
11
|
+
const state = createDomRenderState(container);
|
|
12
|
+
registerRenderer(state, HtmlViewKind, defaultHtmlViewRenderer);
|
|
13
|
+
return state;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function drawGetEl(state: ReturnType<typeof makeState>, drawFn: () => void): HTMLElement | null {
|
|
17
|
+
getDomRenderStateRuntime(state).domCurrentElement = null;
|
|
18
|
+
drawFn();
|
|
19
|
+
return getDomRenderStateRuntime(state).domCurrentElement;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
describe('defaultHtmlViewRenderer', () => {
|
|
23
|
+
it('has submit, and createData', () => {
|
|
24
|
+
expect(typeof defaultHtmlViewRenderer.submit).toBe('function');
|
|
25
|
+
expect(typeof defaultHtmlViewRenderer.createData).toBe('function');
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
describe('drawDomHtmlView', () => {
|
|
30
|
+
it('produces no element when source element is null', () => {
|
|
31
|
+
const state = makeState();
|
|
32
|
+
const node = createHtmlView();
|
|
33
|
+
node.data.element = null;
|
|
34
|
+
const renderProxy = getOrCreateRenderProxy2D(state, node);
|
|
35
|
+
|
|
36
|
+
const el = drawGetEl(state, () => drawDomHtmlView(state, renderProxy));
|
|
37
|
+
|
|
38
|
+
expect(el).toBeNull();
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it('produces the source element', () => {
|
|
42
|
+
const state = makeState();
|
|
43
|
+
const inner = document.createElement('span');
|
|
44
|
+
const node = createHtmlView({ data: { element: inner } });
|
|
45
|
+
const renderProxy = getOrCreateRenderProxy2D(state, node);
|
|
46
|
+
|
|
47
|
+
const el = drawGetEl(state, () => drawDomHtmlView(state, renderProxy));
|
|
48
|
+
|
|
49
|
+
expect(el).toBe(inner);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
it('initializes position and overflow styles on first draw', () => {
|
|
53
|
+
const state = makeState();
|
|
54
|
+
const inner = document.createElement('div');
|
|
55
|
+
const node = createHtmlView({ data: { element: inner } });
|
|
56
|
+
const renderProxy = getOrCreateRenderProxy2D(state, node);
|
|
57
|
+
|
|
58
|
+
drawDomHtmlView(state, renderProxy);
|
|
59
|
+
|
|
60
|
+
expect(inner.style.position).toBe('absolute');
|
|
61
|
+
expect(inner.style.left).toBe('0px');
|
|
62
|
+
expect(inner.style.top).toBe('0px');
|
|
63
|
+
expect(inner.style.transformOrigin).toBe('0 0');
|
|
64
|
+
expect(inner.style.overflow).toBe('hidden');
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it('does not reset position styles on subsequent draws when already absolute', () => {
|
|
68
|
+
const state = makeState();
|
|
69
|
+
const inner = document.createElement('div');
|
|
70
|
+
inner.style.position = 'absolute';
|
|
71
|
+
inner.style.left = '50px';
|
|
72
|
+
const node = createHtmlView({ data: { element: inner } });
|
|
73
|
+
const renderProxy = getOrCreateRenderProxy2D(state, node);
|
|
74
|
+
|
|
75
|
+
drawDomHtmlView(state, renderProxy);
|
|
76
|
+
|
|
77
|
+
expect(inner.style.left).toBe('50px');
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
it('applies width and height from data', () => {
|
|
81
|
+
const state = makeState();
|
|
82
|
+
const inner = document.createElement('div');
|
|
83
|
+
const node = createHtmlView({ data: { element: inner, width: 320, height: 240 } });
|
|
84
|
+
const renderProxy = getOrCreateRenderProxy2D(state, node);
|
|
85
|
+
|
|
86
|
+
drawDomHtmlView(state, renderProxy);
|
|
87
|
+
|
|
88
|
+
expect(inner.style.width).toBe('320px');
|
|
89
|
+
expect(inner.style.height).toBe('240px');
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
it('updates width and height when data changes between draws', () => {
|
|
93
|
+
const state = makeState();
|
|
94
|
+
const inner = document.createElement('div');
|
|
95
|
+
const node = createHtmlView({ data: { element: inner, width: 100, height: 100 } });
|
|
96
|
+
const renderProxy = getOrCreateRenderProxy2D(state, node);
|
|
97
|
+
|
|
98
|
+
drawDomHtmlView(state, renderProxy);
|
|
99
|
+
node.data.width = 640;
|
|
100
|
+
node.data.height = 480;
|
|
101
|
+
drawDomHtmlView(state, renderProxy);
|
|
102
|
+
|
|
103
|
+
expect(inner.style.width).toBe('640px');
|
|
104
|
+
expect(inner.style.height).toBe('480px');
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
it('applies transform from the render node', () => {
|
|
108
|
+
const state = makeState();
|
|
109
|
+
const inner = document.createElement('div');
|
|
110
|
+
const node = createHtmlView({ data: { element: inner } });
|
|
111
|
+
const renderProxy = getOrCreateRenderProxy2D(state, node);
|
|
112
|
+
|
|
113
|
+
drawDomHtmlView(state, renderProxy);
|
|
114
|
+
|
|
115
|
+
expect(inner.style.transform).toMatch(/^matrix\(/);
|
|
116
|
+
});
|
|
117
|
+
});
|