@flighthq/displayobject-dom 0.1.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.
Files changed (40) hide show
  1. package/dist/domBitmap.d.ts.map +1 -1
  2. package/dist/domBitmap.js +6 -2
  3. package/dist/domBitmap.js.map +1 -1
  4. package/dist/domCSSFilterBinding.d.ts +1 -10
  5. package/dist/domCSSFilterBinding.d.ts.map +1 -1
  6. package/dist/domCSSFilterBinding.js +0 -20
  7. package/dist/domCSSFilterBinding.js.map +1 -1
  8. package/dist/domImageSource.d.ts +5 -0
  9. package/dist/domImageSource.d.ts.map +1 -0
  10. package/dist/domImageSource.js +36 -0
  11. package/dist/domImageSource.js.map +1 -0
  12. package/dist/domMaterials.d.ts.map +1 -1
  13. package/dist/domMaterials.js +26 -20
  14. package/dist/domMaterials.js.map +1 -1
  15. package/dist/domNativeText.d.ts.map +1 -1
  16. package/dist/domNativeText.js +24 -1
  17. package/dist/domNativeText.js.map +1 -1
  18. package/dist/domRichText.d.ts.map +1 -1
  19. package/dist/domRichText.js +2 -1
  20. package/dist/domRichText.js.map +1 -1
  21. package/dist/domTextInput.js +1 -1
  22. package/dist/domTextInput.js.map +1 -1
  23. package/dist/domTextLabel.d.ts.map +1 -1
  24. package/dist/domTextLabel.js +2 -1
  25. package/dist/domTextLabel.js.map +1 -1
  26. package/dist/index.d.ts +1 -1
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +1 -1
  29. package/dist/index.js.map +1 -1
  30. package/package.json +19 -13
  31. package/src/domCSSFilterBinding.test.ts +2 -44
  32. package/src/domImageSource.test.ts +47 -0
  33. package/src/domMaterials.test.ts +10 -21
  34. package/src/domNativeText.test.ts +31 -0
  35. package/src/domRichText.test.ts +6 -2
  36. package/dist/domSvgFilter.d.ts +0 -27
  37. package/dist/domSvgFilter.d.ts.map +0 -1
  38. package/dist/domSvgFilter.js +0 -88
  39. package/dist/domSvgFilter.js.map +0 -1
  40. package/src/domSvgFilter.test.ts +0 -116
@@ -1 +1 @@
1
- {"version":3,"file":"domBitmap.d.ts","sourceRoot":"","sources":["../src/domBitmap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,qBAAqB,EACrB,cAAc,EAGd,aAAa,EAEd,MAAM,iBAAiB,CAAC;AAczB,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CAgBrF;AAoFD,eAAO,MAAM,wBAAwB,EAAE,qBAGtC,CAAC"}
1
+ {"version":3,"file":"domBitmap.d.ts","sourceRoot":"","sources":["../src/domBitmap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,qBAAqB,EACrB,cAAc,EAGd,aAAa,EAEd,MAAM,iBAAiB,CAAC;AAezB,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CAkBrF;AAoFD,eAAO,MAAM,wBAAwB,EAAE,qBAGtC,CAAC"}
package/dist/domBitmap.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { createEntity } from '@flighthq/entity';
2
+ import { resolveDomImageSource } from './domImageSource';
2
3
  import { applyDomStyle, prepareDomElement, setDomRendererElement } from './domStyle';
3
4
  function createDomBitmapData(_state, _source) {
4
5
  return createEntity({ canvas: null, context: null, image: null });
@@ -9,9 +10,12 @@ export function drawDomBitmap(state, renderProxy) {
9
10
  return;
10
11
  const source = renderProxy.source;
11
12
  const imageSource = source.data.image;
12
- if (imageSource === null || imageSource.source === null)
13
+ if (imageSource === null)
14
+ return;
15
+ // Resolve to a drawable element, materializing one from raw pixels for a data-only Surface.
16
+ const src = resolveDomImageSource(state, imageSource);
17
+ if (src === null)
13
18
  return;
14
- const src = imageSource.source;
15
19
  const sr = source.data.sourceRectangle ?? null;
16
20
  if (sr === null && src instanceof HTMLImageElement) {
17
21
  renderBitmapAsImage(state, renderProxy, data, src);
@@ -1 +1 @@
1
- {"version":3,"file":"domBitmap.js","sourceRoot":"","sources":["../src/domBitmap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domBitmap.js","sourceRoot":"","sources":["../src/domBitmap.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { BitmapFilter, DisplayObject, DomRenderState, RenderProxy2D } from '@flighthq/types';
1
+ import type { DisplayObject, DomRenderState, RenderProxy2D } from '@flighthq/types';
2
2
  /**
3
3
  * Enables CSS filter support for the render state by installing the resolver the
4
4
  * draw path consults. Bindings made via setDomCssFilter only apply once this is
@@ -8,15 +8,6 @@ import type { BitmapFilter, DisplayObject, DomRenderState, RenderProxy2D } from
8
8
  */
9
9
  export declare function enableDomCssFilterSupport(state: DomRenderState): void;
10
10
  export declare function getDomCssFilter(renderProxy: RenderProxy2D): string | undefined;
11
- /**
12
- * Returns true when the filter has a native CSS `filter` equivalent supported by the DOM
13
- * backend. Filters not in this set cannot be expressed directly as a CSS filter string.
14
- *
15
- * Callers that need a raster fallback for unsupported filters should route the subtree
16
- * through the render-cache path (ensureDomRenderCacheTarget) instead of calling
17
- * setDomCssFilter.
18
- */
19
- export declare function hasDomCssFilterEquivalent(filter: Readonly<BitmapFilter>): boolean;
20
11
  /**
21
12
  * Binds a CSS filter string (e.g. "blur(4px)") to a display object for the given
22
13
  * DOM render state, or clears it when filter is null. The binding lives on the
@@ -1 +1 @@
1
- {"version":3,"file":"domCSSFilterBinding.d.ts","sourceRoot":"","sources":["../src/domCSSFilterBinding.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAElG;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAErE;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAE9E;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,OAAO,CAEjF;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAOvG"}
1
+ {"version":3,"file":"domCSSFilterBinding.d.ts","sourceRoot":"","sources":["../src/domCSSFilterBinding.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEpF;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAErE;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAE9E;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAOvG"}
@@ -12,17 +12,6 @@ export function enableDomCssFilterSupport(state) {
12
12
  export function getDomCssFilter(renderProxy) {
13
13
  return _cssFilterBindings.get(renderProxy);
14
14
  }
15
- /**
16
- * Returns true when the filter has a native CSS `filter` equivalent supported by the DOM
17
- * backend. Filters not in this set cannot be expressed directly as a CSS filter string.
18
- *
19
- * Callers that need a raster fallback for unsupported filters should route the subtree
20
- * through the render-cache path (ensureDomRenderCacheTarget) instead of calling
21
- * setDomCssFilter.
22
- */
23
- export function hasDomCssFilterEquivalent(filter) {
24
- return DOM_CSS_FILTER_KINDS.has(filter.kind);
25
- }
26
15
  /**
27
16
  * Binds a CSS filter string (e.g. "blur(4px)") to a display object for the given
28
17
  * DOM render state, or clears it when filter is null. The binding lives on the
@@ -44,13 +33,4 @@ export function setDomCssFilter(state, node, filter) {
44
33
  // invisible to any other state that renders the same display object. This mirrors
45
34
  // the per-state canvas CSS filter and Gl shader bindings.
46
35
  const _cssFilterBindings = new WeakMap();
47
- // Filter kinds that have a native CSS filter equivalent in the DOM backend.
48
- // All other filter kinds require rasterization (e.g. via the render-cache path)
49
- // or are silently unsupported. This set drives hasDomCssFilterEquivalent.
50
- //
51
- // Mapping notes:
52
- // BlurFilter → filter: blur(…px)
53
- // DropShadowFilter → filter: drop-shadow(offsetX offsetY blur color)
54
- // OuterGlowFilter → filter: drop-shadow(0 0 blur color) [approximate: glow = shadow with 0 offset]
55
- const DOM_CSS_FILTER_KINDS = new Set(['BlurFilter', 'DropShadowFilter', 'OuterGlowFilter']);
56
36
  //# sourceMappingURL=domCSSFilterBinding.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"domCSSFilterBinding.js","sourceRoot":"","sources":["../src/domCSSFilterBinding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAG5D;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAqB;IAC7D,KAAK,CAAC,oBAAoB,GAAG,eAAe,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,WAA0B;IACxD,OAAO,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAA8B;IACtE,OAAO,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,KAAqB,EAAE,IAAmB,EAAE,MAAqB;IAC/F,MAAM,WAAW,GAAG,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1D,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACvC,OAAO;IACT,CAAC;IACD,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED,gFAAgF;AAChF,kFAAkF;AAClF,0EAA0E;AAC1E,kFAAkF;AAClF,0DAA0D;AAC1D,MAAM,kBAAkB,GAAG,IAAI,OAAO,EAAyB,CAAC;AAEhE,4EAA4E;AAC5E,gFAAgF;AAChF,0EAA0E;AAC1E,EAAE;AACF,iBAAiB;AACjB,yCAAyC;AACzC,uEAAuE;AACvE,uGAAuG;AACvG,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"domCSSFilterBinding.js","sourceRoot":"","sources":["../src/domCSSFilterBinding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAG5D;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAqB;IAC7D,KAAK,CAAC,oBAAoB,GAAG,eAAe,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,WAA0B;IACxD,OAAO,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,KAAqB,EAAE,IAAmB,EAAE,MAAqB;IAC/F,MAAM,WAAW,GAAG,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1D,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACvC,OAAO;IACT,CAAC;IACD,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED,gFAAgF;AAChF,kFAAkF;AAClF,0EAA0E;AAC1E,kFAAkF;AAClF,0DAA0D;AAC1D,MAAM,kBAAkB,GAAG,IAAI,OAAO,EAAyB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { DomRenderState, ImageResource } from '@flighthq/types';
2
+ export type DomImageSourceKind = 'data' | 'element' | 'none';
3
+ export declare function explainDomImageSource(image: Readonly<ImageResource>): DomImageSourceKind;
4
+ export declare function resolveDomImageSource(state: DomRenderState, image: Readonly<ImageResource>): CanvasImageSource | null;
5
+ //# sourceMappingURL=domImageSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domImageSource.d.ts","sourceRoot":"","sources":["../src/domImageSource.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAOrE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAG7D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,kBAAkB,CAIxF;AAQD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,iBAAiB,GAAG,IAAI,CAkBrH"}
@@ -0,0 +1,36 @@
1
+ import { createCanvasFromImageResource } from '@flighthq/image';
2
+ import { getDomRenderStateRuntime } from './domRenderState';
3
+ // Reports how a resource resolves on the DOM backend without materializing anything.
4
+ export function explainDomImageSource(image) {
5
+ if (image.source !== null)
6
+ return 'element';
7
+ if (image.data !== null)
8
+ return 'data';
9
+ return 'none';
10
+ }
11
+ // Resolves a (possibly data-only) ImageResource to a CanvasImageSource the DOM bitmap path can draw
12
+ // into its per-node canvas. An element-backed resource returns its host `source` directly; a data-only
13
+ // Surface materializes an HTMLCanvasElement from its pixels and caches it per render state, rebuilding
14
+ // only on a `version` bump. The DOM twin of resolveCanvasImageSource — same renderer-owned,
15
+ // version-keyed derived cache, never written back onto the shared resource. Returns null when the
16
+ // resource has neither pixel form.
17
+ export function resolveDomImageSource(state, image) {
18
+ if (image.source !== null)
19
+ return image.source;
20
+ if (image.data === null)
21
+ return null;
22
+ const runtime = getDomRenderStateRuntime(state);
23
+ let cache = runtime.imageResourceElementCache;
24
+ if (cache === undefined) {
25
+ cache = new WeakMap();
26
+ runtime.imageResourceElementCache = cache;
27
+ }
28
+ let entry = cache.get(image);
29
+ if (entry === undefined || entry.version !== image.version) {
30
+ // data is non-null here, so the transcode never returns null.
31
+ entry = { element: createCanvasFromImageResource(image), version: image.version };
32
+ cache.set(image, entry);
33
+ }
34
+ return entry.element;
35
+ }
36
+ //# sourceMappingURL=domImageSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domImageSource.js","sourceRoot":"","sources":["../src/domImageSource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAGhE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAO5D,qFAAqF;AACrF,MAAM,UAAU,qBAAqB,CAAC,KAA8B;IAClE,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IACvC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,oGAAoG;AACpG,uGAAuG;AACvG,uGAAuG;AACvG,4FAA4F;AAC5F,kGAAkG;AAClG,mCAAmC;AACnC,MAAM,UAAU,qBAAqB,CAAC,KAAqB,EAAE,KAA8B;IACzF,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC;IAC/C,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAErC,MAAM,OAAO,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,KAAK,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAC9C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,KAAK,GAAG,IAAI,OAAO,EAAE,CAAC;QACtB,OAAO,CAAC,yBAAyB,GAAG,KAAK,CAAC;IAC5C,CAAC;IAED,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3D,8DAA8D;QAC9D,KAAK,GAAG,EAAE,OAAO,EAAE,6BAA6B,CAAC,KAAK,CAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QACnF,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC;AACvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"domMaterials.d.ts","sourceRoot":"","sources":["../src/domMaterials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AA8C5C,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,CAErF;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAErE;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,GAAG,oBAAoB,CAElF"}
1
+ {"version":3,"file":"domMaterials.d.ts","sourceRoot":"","sources":["../src/domMaterials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAqB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAoD/D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,CAErF;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAErE;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,GAAG,oBAAoB,CAElF"}
@@ -1,23 +1,27 @@
1
- import { BlendMode } from '@flighthq/types';
1
+ import { AdvancedBlendMode, BlendMode } from '@flighthq/types';
2
2
  // Auditable map from a blend-mode intent to the CSS mix-blend-mode value that realizes
3
3
  // it. `null` means there is no faithful CSS equivalent, so the mode degrades to normal
4
- // compositing (the empty string, i.e. mix-blend-mode: normal).
4
+ // compositing (the empty string, i.e. mix-blend-mode: normal). Like Canvas2D, DOM natively realizes the
5
+ // AdvancedBlendMode set (CSS mix-blend-mode covers the full W3C set), so those keys are carried here too;
6
+ // only the fixed-function BlendMode set is exposed as a node property.
5
7
  const DOM_BLEND_MODE = {
6
8
  [BlendMode.Add]: 'screen',
7
- [BlendMode.Alpha]: null,
8
9
  [BlendMode.Darken]: 'darken',
9
- [BlendMode.Difference]: 'difference',
10
- [BlendMode.Erase]: null,
11
- [BlendMode.Hardlight]: 'hard-light',
12
- [BlendMode.Invert]: null,
13
- [BlendMode.Layer]: '',
14
10
  [BlendMode.Lighten]: 'lighten',
15
11
  [BlendMode.Multiply]: 'multiply',
16
12
  [BlendMode.Normal]: '',
17
- [BlendMode.Overlay]: 'overlay',
18
13
  [BlendMode.Screen]: 'screen',
19
- [BlendMode.Shader]: null,
20
- [BlendMode.Subtract]: null,
14
+ [AdvancedBlendMode.Color]: 'color',
15
+ [AdvancedBlendMode.ColorBurn]: 'color-burn',
16
+ [AdvancedBlendMode.ColorDodge]: 'color-dodge',
17
+ [AdvancedBlendMode.Difference]: 'difference',
18
+ [AdvancedBlendMode.Exclusion]: 'exclusion',
19
+ [AdvancedBlendMode.HardLight]: 'hard-light',
20
+ [AdvancedBlendMode.Hue]: 'hue',
21
+ [AdvancedBlendMode.Luminosity]: 'luminosity',
22
+ [AdvancedBlendMode.Overlay]: 'overlay',
23
+ [AdvancedBlendMode.Saturation]: 'saturation',
24
+ [AdvancedBlendMode.SoftLight]: 'soft-light',
21
25
  };
22
26
  // Fidelity classification for each blend mode in the DOM backend.
23
27
  // 'exact' — CSS mix-blend-mode maps faithfully to the OpenFL/Flash mode.
@@ -26,20 +30,22 @@ const DOM_BLEND_MODE = {
26
30
  // 'unsupported' — no CSS equivalent; falls back to normal compositing.
27
31
  const DOM_BLEND_MODE_FIDELITY = {
28
32
  [BlendMode.Add]: 'approximate', // screen ≈ add for moderate values; clamps differently
29
- [BlendMode.Alpha]: 'unsupported',
30
33
  [BlendMode.Darken]: 'exact',
31
- [BlendMode.Difference]: 'exact',
32
- [BlendMode.Erase]: 'unsupported',
33
- [BlendMode.Hardlight]: 'exact',
34
- [BlendMode.Invert]: 'unsupported',
35
- [BlendMode.Layer]: 'exact', // normal compositing within a stacking context
36
34
  [BlendMode.Lighten]: 'exact',
37
35
  [BlendMode.Multiply]: 'exact',
38
36
  [BlendMode.Normal]: 'exact',
39
- [BlendMode.Overlay]: 'exact',
40
37
  [BlendMode.Screen]: 'exact',
41
- [BlendMode.Shader]: 'unsupported',
42
- [BlendMode.Subtract]: 'unsupported',
38
+ [AdvancedBlendMode.Color]: 'exact',
39
+ [AdvancedBlendMode.ColorBurn]: 'exact',
40
+ [AdvancedBlendMode.ColorDodge]: 'exact',
41
+ [AdvancedBlendMode.Difference]: 'exact',
42
+ [AdvancedBlendMode.Exclusion]: 'exact',
43
+ [AdvancedBlendMode.HardLight]: 'exact',
44
+ [AdvancedBlendMode.Hue]: 'exact',
45
+ [AdvancedBlendMode.Luminosity]: 'exact',
46
+ [AdvancedBlendMode.Overlay]: 'exact',
47
+ [AdvancedBlendMode.Saturation]: 'exact',
48
+ [AdvancedBlendMode.SoftLight]: 'exact',
43
49
  };
44
50
  export function applyDomBlendMode(element, value) {
45
51
  element.style.mixBlendMode = (value !== null ? DOM_BLEND_MODE[value] : null) ?? '';
@@ -1 +1 @@
1
- {"version":3,"file":"domMaterials.js","sourceRoot":"","sources":["../src/domMaterials.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,uFAAuF;AACvF,uFAAuF;AACvF,+DAA+D;AAC/D,MAAM,cAAc,GAAqC;IACvD,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,QAAQ;IACzB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI;IACvB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,QAAQ;IAC5B,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,YAAY;IACpC,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI;IACvB,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,YAAY;IACnC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI;IACxB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE;IACrB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,SAAS;IAC9B,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,UAAU;IAChC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE;IACtB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,SAAS;IAC9B,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,QAAQ;IAC5B,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI;IACxB,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,IAAI;CAC3B,CAAC;AAEF,kEAAkE;AAClE,+EAA+E;AAC/E,6EAA6E;AAC7E,kGAAkG;AAClG,uEAAuE;AACvE,MAAM,uBAAuB,GAA4C;IACvE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,uDAAuD;IACvF,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,aAAa;IAChC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO;IAC3B,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,OAAO;IAC/B,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,aAAa;IAChC,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,OAAO;IAC9B,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,aAAa;IACjC,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,+CAA+C;IAC3E,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO;IAC5B,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,OAAO;IAC7B,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO;IAC3B,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO;IAC5B,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO;IAC3B,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,aAAa;IACjC,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,aAAa;CACpC,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,OAAoB,EAAE,KAAuB;IAC7E,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAqB;IAC7D,KAAK,CAAC,cAAc,GAAG,iBAAiB,CAAC;AAC3C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CAAC,SAAoB;IAC1D,OAAO,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"domMaterials.js","sourceRoot":"","sources":["../src/domMaterials.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE/D,uFAAuF;AACvF,uFAAuF;AACvF,wGAAwG;AACxG,0GAA0G;AAC1G,uEAAuE;AACvE,MAAM,cAAc,GAAqC;IACvD,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,QAAQ;IACzB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,QAAQ;IAC5B,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,SAAS;IAC9B,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,UAAU;IAChC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE;IACtB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,QAAQ;IAC5B,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,OAAO;IAClC,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,YAAY;IAC3C,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,aAAa;IAC7C,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,YAAY;IAC5C,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,WAAW;IAC1C,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,YAAY;IAC3C,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,KAAK;IAC9B,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,YAAY;IAC5C,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,SAAS;IACtC,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,YAAY;IAC5C,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,YAAY;CAC5C,CAAC;AAEF,kEAAkE;AAClE,+EAA+E;AAC/E,6EAA6E;AAC7E,kGAAkG;AAClG,uEAAuE;AACvE,MAAM,uBAAuB,GAA4C;IACvE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,uDAAuD;IACvF,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO;IAC3B,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO;IAC5B,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,OAAO;IAC7B,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO;IAC3B,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO;IAC3B,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,OAAO;IAClC,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,OAAO;IACtC,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,OAAO;IACvC,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,OAAO;IACvC,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,OAAO;IACtC,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,OAAO;IACtC,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,OAAO;IAChC,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,OAAO;IACvC,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,OAAO;IACpC,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,OAAO;IACvC,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,OAAO;CACvC,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,OAAoB,EAAE,KAAuB;IAC7E,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAqB;IAC7D,KAAK,CAAC,cAAc,GAAG,iBAAiB,CAAC;AAC3C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CAAC,SAAoB;IAC1D,OAAO,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAC5C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"domNativeText.d.ts","sourceRoot":"","sources":["../src/domNativeText.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EAMd,aAAa,EAEd,MAAM,iBAAiB,CAAC;AAczB,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CAoCzF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CAE7F;AAED,eAAO,MAAM,4BAA4B,EAAE,qBAG1C,CAAC"}
1
+ {"version":3,"file":"domNativeText.d.ts","sourceRoot":"","sources":["../src/domNativeText.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EAMd,aAAa,EAGd,MAAM,iBAAiB,CAAC;AAczB,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CA8CzF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CAE7F;AAED,eAAO,MAAM,4BAA4B,EAAE,qBAG1C,CAAC"}
@@ -1,4 +1,4 @@
1
- import { computeRgbHexString } from '@flighthq/materials';
1
+ import { computeRgbHexString } from '@flighthq/color';
2
2
  import { getNativeTextRuntime } from '@flighthq/text';
3
3
  import { applyDomStyle, prepareDomElement, setDomRendererElement } from './domStyle';
4
4
  // DOM is the backend for which a native text element makes sense; other backends either no-op or
@@ -23,16 +23,26 @@ export function drawDomNativeText(state, renderProxy) {
23
23
  }
24
24
  applyNativeTextStyle(element, data.style);
25
25
  if (data.autoSize === 'none') {
26
+ // A fixed-height box frames the text; a column flexbox positions the block vertically within the
27
+ // leftover height (justify-content), leaving textAlign to handle the horizontal axis. Cross-axis
28
+ // stretch is the flexbox default, so the text item keeps the full width and textAlign still applies.
26
29
  element.style.whiteSpace = 'normal';
27
30
  element.style.width = `${data.width}px`;
28
31
  element.style.height = `${data.height}px`;
29
32
  element.style.overflow = 'hidden';
33
+ element.style.display = 'flex';
34
+ element.style.flexDirection = 'column';
35
+ element.style.justifyContent = _verticalAlignToJustifyContent(data.verticalAlign);
30
36
  }
31
37
  else {
38
+ // The box hugs the content, so there is no slack to align within — drop the flexbox framing.
32
39
  element.style.whiteSpace = 'nowrap';
33
40
  element.style.width = '';
34
41
  element.style.height = '';
35
42
  element.style.overflow = '';
43
+ element.style.display = '';
44
+ element.style.flexDirection = '';
45
+ element.style.justifyContent = '';
36
46
  }
37
47
  element.textContent = data.text;
38
48
  // Write the platform measurement back so DOM-free bounds (computeNativeTextLocalBoundsRectangle) can
@@ -50,6 +60,19 @@ export const defaultDomNativeTextRenderer = {
50
60
  createData: createDomNativeTextData,
51
61
  submit: drawDomNativeText,
52
62
  };
63
+ // Maps the field's vertical alignment onto the column flexbox's main-axis distribution. 'top' is the
64
+ // CSS default (flex-start); 'baseline'/'justify' are reserved TextVerticalAlign values with no faithful
65
+ // CSS block-frame mapping yet, so they fall back to the top of the box.
66
+ function _verticalAlignToJustifyContent(verticalAlign) {
67
+ switch (verticalAlign) {
68
+ case 'bottom':
69
+ return 'flex-end';
70
+ case 'middle':
71
+ return 'center';
72
+ default:
73
+ return 'flex-start';
74
+ }
75
+ }
53
76
  function applyNativeTextStyle(element, style) {
54
77
  const size = style.size ?? 12;
55
78
  const family = style.font ?? 'sans-serif';
@@ -1 +1 @@
1
- {"version":3,"file":"domNativeText.js","sourceRoot":"","sources":["../src/domNativeText.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domNativeText.js","sourceRoot":"","sources":["../src/domNativeText.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"domRichText.d.ts","sourceRoot":"","sources":["../src/domRichText.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EAGd,aAAa,EAMd,MAAM,iBAAiB,CAAC;AAuBzB,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CAQvF;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,KAAK,IAAI,CAAC;AAE9F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CAE3F;AAwKD,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAE9E;AAED,eAAO,MAAM,0BAA0B,EAAE,qBAGxC,CAAC"}
1
+ {"version":3,"file":"domRichText.d.ts","sourceRoot":"","sources":["../src/domRichText.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EAGd,aAAa,EAMd,MAAM,iBAAiB,CAAC;AAuBzB,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CAQvF;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,KAAK,IAAI,CAAC;AAE9F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CAE3F;AAyKD,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAE9E;AAED,eAAO,MAAM,0BAA0B,EAAE,qBAGxC,CAAC"}
@@ -1,5 +1,5 @@
1
+ import { computeRgbHexString } from '@flighthq/color';
1
2
  import { createEntity } from '@flighthq/entity';
2
- import { computeRgbHexString } from '@flighthq/materials';
3
3
  import { computeTextFormatFontString } from '@flighthq/text';
4
4
  import { getRichTextPasswordCharacter, getRichTextRuntime } from '@flighthq/text';
5
5
  import { computeRichTextContent, computeTextBoundsHeight, computeTextBoundsWidth, computeTextLayout, getRichTextContent, getRichTextScrollYOffset, getRichTextSelectionRectangles, getTextLayoutResult, } from '@flighthq/textlayout';
@@ -58,6 +58,7 @@ function drawDomRichTextField(state, renderProxy) {
58
58
  height: source.data.height,
59
59
  measure,
60
60
  multiline,
61
+ verticalAlign: source.data.autoSize === 'none' ? source.data.verticalAlign : 'top',
61
62
  wordWrap,
62
63
  });
63
64
  const fieldW = computeTextBoundsWidth(source.data, result);
@@ -1 +1 @@
1
- {"version":3,"file":"domRichText.js","sourceRoot":"","sources":["../src/domRichText.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domRichText.js","sourceRoot":"","sources":["../src/domRichText.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { computeRgbHexString } from '@flighthq/materials';
1
+ import { computeRgbHexString } from '@flighthq/color';
2
2
  import { getRichTextRuntime } from '@flighthq/text';
3
3
  import { getTextInputCaretRectangle, getTextInputSelectionBeginIndex, getTextInputSelectionEndIndex, getTextInputSelectionRectangles, getTextInputState, } from '@flighthq/textinput';
4
4
  import { getRichTextScrollYOffset } from '@flighthq/textlayout';
@@ -1 +1 @@
1
- {"version":3,"file":"domTextInput.js","sourceRoot":"","sources":["../src/domTextInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,EAC/B,6BAA6B,EAC7B,+BAA+B,EAC/B,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGhE,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAE5D,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAM/B,oGAAoG;AACpG,8FAA8F;AAC9F,MAAM,UAAU,uBAAuB,CAAC,MAAsB,EAAE,WAA0B;IACxF,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,yBAAyB,EAAE,CAAC;QAC5B,kBAAkB,GAAG,IAAI,CAAC;IAC5B,CAAC;IACD,MAAM,MAAM,GAAG,WAAW,CAAC,MAAkB,CAAC;IAC9C,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO;IAC3B,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC;IACrD,MAAM,IAAI,GAAG,WAAW,CAAC,YAAuC,CAAC;IACjE,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,MAAM,KAAK,IAAI,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI;QAAE,OAAO;IAEnG,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,MAAM,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChH,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;IAC1C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC;IACtC,IAAI,IAAI,GAAG,EAAE,CAAC;IAEd,+BAA+B,CAAC,mBAAmB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrE,KAAK,MAAM,IAAI,IAAI,mBAAmB,EAAE,CAAC;QACvC,IAAI,IAAI,yDAAyD,IAAI,CAAC,CAAC,GAAG,aAAa,UAAU,IAAI,CAAC,CAAC,GAAG,aAAa,YAAY,IAAI,CAAC,KAAK,aAAa,IAAI,CAAC,MAAM,iBAAiB,QAAQ,YAAY,QAAQ,+BAA+B,CAAC;IACpP,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,IAAI,+BAA+B,CAAC,MAAM,CAAC,KAAK,6BAA6B,CAAC,MAAM,CAAC,EAAE,CAAC;QACvG,0BAA0B,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3D,IAAI,IAAI,yDAAyD,cAAc,CAAC,CAAC,GAAG,aAAa,UAAU,cAAc,CAAC,CAAC,GAAG,aAAa,YAAY,KAAK,CAAC,UAAU,aAAa,cAAc,CAAC,MAAM,iBAAiB,mBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC,iFAAiF,CAAC;IACnV,CAAC;IAED,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,sBAAsB,CAAC;QAAE,EAAE,CAAC,MAAM,EAAE,CAAC;IAChF,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,uGAAuG;AACvG,8FAA8F;AAC9F,MAAM,UAAU,kBAAkB;IAChC,2BAA2B,CAAC,uBAAuB,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,yBAAyB;IAChC,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO;IAC5C,MAAM,EAAE,GAAG,0BAA0B,CAAC;IACtC,IAAI,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAAE,OAAO;IACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;IACd,KAAK,CAAC,WAAW,GAAG,iEAAiE,CAAC;IACtF,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,cAAc,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACzE,MAAM,mBAAmB,GAA6B,EAAE,CAAC"}
1
+ {"version":3,"file":"domTextInput.js","sourceRoot":"","sources":["../src/domTextInput.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"domTextLabel.d.ts","sourceRoot":"","sources":["../src/domTextLabel.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EAGd,aAAa,EAKd,MAAM,iBAAiB,CAAC;AAsBzB,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CAyDxF;AAED,eAAO,MAAM,2BAA2B,EAAE,qBAGzC,CAAC"}
1
+ {"version":3,"file":"domTextLabel.d.ts","sourceRoot":"","sources":["../src/domTextLabel.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EAGd,aAAa,EAKd,MAAM,iBAAiB,CAAC;AAsBzB,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CA0DxF;AAED,eAAO,MAAM,2BAA2B,EAAE,qBAGzC,CAAC"}
@@ -1,5 +1,5 @@
1
+ import { computeRgbHexString } from '@flighthq/color';
1
2
  import { createEntity } from '@flighthq/entity';
2
- import { computeRgbHexString } from '@flighthq/materials';
3
3
  import { computeTextFormatFontString } from '@flighthq/text';
4
4
  import { getTextLabelRuntime } from '@flighthq/text';
5
5
  import { computeTextLayout, createTextFormatRange, getTextLayoutResult } from '@flighthq/textlayout';
@@ -42,6 +42,7 @@ export function drawDomTextLabel(state, renderProxy) {
42
42
  width: source.data.width,
43
43
  height: source.data.height,
44
44
  measure,
45
+ verticalAlign: source.data.autoSize === 'none' ? source.data.verticalAlign : 'top',
45
46
  });
46
47
  let divWidth = 0;
47
48
  for (const group of result.groups) {
@@ -1 +1 @@
1
- {"version":3,"file":"domTextLabel.js","sourceRoot":"","sources":["../src/domTextLabel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domTextLabel.js","sourceRoot":"","sources":["../src/domTextLabel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAarG,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAMvD,SAAS,iBAAiB,CAAC,MAAmB,EAAE,OAAmB;IACjE,OAAO,YAAY,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,IAAI,WAAW,GAAoC,IAAI,CAAC;AAExD,SAAS,aAAa;IACpB,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACzB,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAqB,EAAE,WAA0B;IAChF,MAAM,IAAI,GAAG,WAAW,CAAC,YAAkC,CAAC;IAC5D,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO;IAE1B,MAAM,MAAM,GAAG,WAAW,CAAC,MAAmB,CAAC;IAC/C,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IACzC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAE9B,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO;IAEzB,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACrC,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,MAAkB,EAAU,EAAE;QACxD,GAAG,CAAC,IAAI,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAClC,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,MAAM,CAAqB,CAAC,CAAC;IACpF,iBAAiB,CAAC,MAAM,EAAE;QACxB,IAAI;QACJ,YAAY,EAAE,CAAC,qBAAqB,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACjE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK;QACxB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;QAC1B,OAAO;QACP,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK;KACnF,CAAC,CAAC;IAEH,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1C,IAAI,KAAK,GAAG,QAAQ;YAAE,QAAQ,GAAG,KAAK,CAAC;IACzC,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,QAAQ,IAAI,CAAC;IACvC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC;IAEjD,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;QACzB,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QACpF,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;QACxB,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;QAExB,IAAI,KAAK,GAAG,0BAA0B,CAAC,UAAU,CAAC,WAAW,2BAA2B,CAAC,GAAG,CAAC,GAAG,CAAC;QACjG,KAAK,IAAI,SAAS,mBAAmB,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,sBAAsB,CAAC;QAC5E,IAAI,GAAG,CAAC,SAAS;YAAE,KAAK,IAAI,4BAA4B,CAAC;QAEzD,IAAI,IAAI,eAAe,KAAK,KAAK,KAAK,QAAQ,CAAC;IACjD,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;IAE1B,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC5C,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,MAAM,2BAA2B,GAA0B;IAChE,UAAU,EAAE,iBAAiB;IAC7B,MAAM,EAAE,gBAAgB;CACzB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -6,6 +6,7 @@ export * from './domClipRectangle';
6
6
  export * from './domCSSFilterBinding';
7
7
  export * from './domDisplayObject';
8
8
  export { invalidateDomFontResource } from './domFontSource';
9
+ export * from './domImageSource';
9
10
  export * from './domMaterials';
10
11
  export * from './domNativeText';
11
12
  export * from './domRenderState';
@@ -14,7 +15,6 @@ export * from './domRichText';
14
15
  export * from './domScale9Shape';
15
16
  export * from './domShape';
16
17
  export * from './domStyle';
17
- export * from './domSvgFilter';
18
18
  export { escapeDomHtmlString } from './domTextHelpers';
19
19
  export * from './domTextInput';
20
20
  export * from './domTextLabel';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -6,6 +6,7 @@ export * from './domClipRectangle';
6
6
  export * from './domCSSFilterBinding';
7
7
  export * from './domDisplayObject';
8
8
  export { invalidateDomFontResource } from './domFontSource';
9
+ export * from './domImageSource';
9
10
  export * from './domMaterials';
10
11
  export * from './domNativeText';
11
12
  export * from './domRenderState';
@@ -14,7 +15,6 @@ export * from './domRichText';
14
15
  export * from './domScale9Shape';
15
16
  export * from './domShape';
16
17
  export * from './domStyle';
17
- export * from './domSvgFilter';
18
18
  export { escapeDomHtmlString } from './domTextHelpers';
19
19
  export * from './domTextInput';
20
20
  export * from './domTextLabel';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,11 @@
1
1
  {
2
2
  "name": "@flighthq/displayobject-dom",
3
- "version": "0.1.0",
3
+ "version": "0.2.1-next.410.a23f189",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "https://github.com/flighthq/flight.git",
7
+ "directory": "packages/displayobject-dom"
8
+ },
4
9
  "type": "module",
5
10
  "main": "dist/index.js",
6
11
  "types": "dist/index.d.ts",
@@ -27,18 +32,19 @@
27
32
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
28
33
  },
29
34
  "dependencies": {
30
- "@flighthq/displayobject": "0.1.0",
31
- "@flighthq/entity": "0.1.0",
32
- "@flighthq/geometry": "0.1.0",
33
- "@flighthq/materials": "0.1.0",
34
- "@flighthq/node": "0.1.0",
35
- "@flighthq/render": "0.1.0",
36
- "@flighthq/displayobject-canvas": "0.1.0",
37
- "@flighthq/shape": "0.1.0",
38
- "@flighthq/text": "0.1.0",
39
- "@flighthq/textinput": "0.1.0",
40
- "@flighthq/textlayout": "0.1.0",
41
- "@flighthq/types": "0.1.0"
35
+ "@flighthq/color": "0.2.1-next.410.a23f189",
36
+ "@flighthq/displayobject": "0.2.1-next.410.a23f189",
37
+ "@flighthq/displayobject-canvas": "0.2.1-next.410.a23f189",
38
+ "@flighthq/entity": "0.2.1-next.410.a23f189",
39
+ "@flighthq/geometry": "0.2.1-next.410.a23f189",
40
+ "@flighthq/image": "0.2.1-next.410.a23f189",
41
+ "@flighthq/node": "0.2.1-next.410.a23f189",
42
+ "@flighthq/render": "0.2.1-next.410.a23f189",
43
+ "@flighthq/shape": "0.2.1-next.410.a23f189",
44
+ "@flighthq/text": "0.2.1-next.410.a23f189",
45
+ "@flighthq/textinput": "0.2.1-next.410.a23f189",
46
+ "@flighthq/textlayout": "0.2.1-next.410.a23f189",
47
+ "@flighthq/types": "0.2.1-next.410.a23f189"
42
48
  },
43
49
  "devDependencies": {
44
50
  "@flighthq/image": "*",
@@ -1,12 +1,7 @@
1
1
  import { getOrCreateRenderProxy2D } from '@flighthq/render';
2
- import type { BitmapFilter, DisplayObject } from '@flighthq/types';
2
+ import type { DisplayObject } from '@flighthq/types';
3
3
 
4
- import {
5
- enableDomCssFilterSupport,
6
- getDomCssFilter,
7
- hasDomCssFilterEquivalent,
8
- setDomCssFilter,
9
- } from './domCSSFilterBinding';
4
+ import { enableDomCssFilterSupport, getDomCssFilter, setDomCssFilter } from './domCSSFilterBinding';
10
5
  import { createDomRenderState } from './domRenderState';
11
6
 
12
7
  function makeState() {
@@ -38,43 +33,6 @@ describe('getDomCssFilter', () => {
38
33
  });
39
34
  });
40
35
 
41
- describe('hasDomCssFilterEquivalent', () => {
42
- it('returns true for BlurFilter', () => {
43
- const filter = { kind: 'BlurFilter' } as BitmapFilter;
44
- expect(hasDomCssFilterEquivalent(filter)).toBe(true);
45
- });
46
-
47
- it('returns true for DropShadowFilter', () => {
48
- const filter = { kind: 'DropShadowFilter' } as BitmapFilter;
49
- expect(hasDomCssFilterEquivalent(filter)).toBe(true);
50
- });
51
-
52
- it('returns true for OuterGlowFilter (approximated as drop-shadow with 0 offset)', () => {
53
- const filter = { kind: 'OuterGlowFilter' } as BitmapFilter;
54
- expect(hasDomCssFilterEquivalent(filter)).toBe(true);
55
- });
56
-
57
- it('returns false for ConvolutionFilter', () => {
58
- const filter = { kind: 'ConvolutionFilter' } as BitmapFilter;
59
- expect(hasDomCssFilterEquivalent(filter)).toBe(false);
60
- });
61
-
62
- it('returns false for DisplacementMapFilter', () => {
63
- const filter = { kind: 'DisplacementMapFilter' } as BitmapFilter;
64
- expect(hasDomCssFilterEquivalent(filter)).toBe(false);
65
- });
66
-
67
- it('returns false for ColorMatrixFilter (use getDomSvgColorMatrixFilter for SVG-filter path)', () => {
68
- const filter = { kind: 'ColorMatrixFilter' } as BitmapFilter;
69
- expect(hasDomCssFilterEquivalent(filter)).toBe(false);
70
- });
71
-
72
- it('returns false for an unknown filter kind', () => {
73
- const filter = { kind: 'UnknownFilter' } as unknown as BitmapFilter;
74
- expect(hasDomCssFilterEquivalent(filter)).toBe(false);
75
- });
76
- });
77
-
78
36
  describe('setDomCssFilter', () => {
79
37
  it('stores a filter keyed by the per-state render node', () => {
80
38
  const state = makeState();
@@ -0,0 +1,47 @@
1
+ import { createImageResource, invalidateImageResource } from '@flighthq/image';
2
+ import type { ImageResource } from '@flighthq/types';
3
+
4
+ import { explainDomImageSource, resolveDomImageSource } from './domImageSource';
5
+ import { createDomRenderState } from './domRenderState';
6
+
7
+ function makeState() {
8
+ return createDomRenderState(document.createElement('div'));
9
+ }
10
+
11
+ function makeDataOnlyResource(width = 4, height = 4): ImageResource {
12
+ const resource = createImageResource();
13
+ resource.width = width;
14
+ resource.height = height;
15
+ resource.data = new Uint8ClampedArray(width * height * 4).fill(255);
16
+ return resource;
17
+ }
18
+
19
+ describe('explainDomImageSource', () => {
20
+ it('reports element, data, and none for the three representations', () => {
21
+ expect(explainDomImageSource(createImageResource(document.createElement('img')))).toBe('element');
22
+ expect(explainDomImageSource(makeDataOnlyResource())).toBe('data');
23
+ expect(explainDomImageSource(createImageResource())).toBe('none');
24
+ });
25
+ });
26
+
27
+ describe('resolveDomImageSource', () => {
28
+ it('returns the host source element directly', () => {
29
+ const state = makeState();
30
+ const img = document.createElement('img');
31
+ expect(resolveDomImageSource(state, createImageResource(img))).toBe(img);
32
+ });
33
+
34
+ it('materializes and caches a canvas for a data-only resource, rebuilding on version bump', () => {
35
+ const state = makeState();
36
+ const resource = makeDataOnlyResource();
37
+ const first = resolveDomImageSource(state, resource);
38
+ expect(first).toBeInstanceOf(HTMLCanvasElement);
39
+ expect(resolveDomImageSource(state, resource)).toBe(first);
40
+ invalidateImageResource(resource);
41
+ expect(resolveDomImageSource(state, resource)).not.toBe(first);
42
+ });
43
+
44
+ it('returns null when the resource carries neither pixels form', () => {
45
+ expect(resolveDomImageSource(makeState(), createImageResource())).toBeNull();
46
+ });
47
+ });
@@ -1,4 +1,4 @@
1
- import { BlendMode } from '@flighthq/types';
1
+ import { AdvancedBlendMode, BlendMode } from '@flighthq/types';
2
2
 
3
3
  import { applyDomBlendMode, enableDomBlendModeSupport, getDomBlendModeFidelity } from './domMaterials';
4
4
  import { createDomRenderState } from './domRenderState';
@@ -20,13 +20,13 @@ describe('applyDomBlendMode', () => {
20
20
  expect(el.style.mixBlendMode).toBe('darken');
21
21
  });
22
22
 
23
- it('sets mixBlendMode to "difference" for BlendMode.Difference', () => {
24
- applyDomBlendMode(el, BlendMode.Difference);
23
+ it('sets mixBlendMode to "difference" for AdvancedBlendMode.Difference', () => {
24
+ applyDomBlendMode(el, AdvancedBlendMode.Difference);
25
25
  expect(el.style.mixBlendMode).toBe('difference');
26
26
  });
27
27
 
28
- it('sets mixBlendMode to "hard-light" for BlendMode.Hardlight', () => {
29
- applyDomBlendMode(el, BlendMode.Hardlight);
28
+ it('sets mixBlendMode to "hard-light" for AdvancedBlendMode.HardLight', () => {
29
+ applyDomBlendMode(el, AdvancedBlendMode.HardLight);
30
30
  expect(el.style.mixBlendMode).toBe('hard-light');
31
31
  });
32
32
 
@@ -40,8 +40,8 @@ describe('applyDomBlendMode', () => {
40
40
  expect(el.style.mixBlendMode).toBe('multiply');
41
41
  });
42
42
 
43
- it('sets mixBlendMode to "overlay" for BlendMode.Overlay', () => {
44
- applyDomBlendMode(el, BlendMode.Overlay);
43
+ it('sets mixBlendMode to "overlay" for AdvancedBlendMode.Overlay', () => {
44
+ applyDomBlendMode(el, AdvancedBlendMode.Overlay);
45
45
  expect(el.style.mixBlendMode).toBe('overlay');
46
46
  });
47
47
 
@@ -93,19 +93,8 @@ describe('getDomBlendModeFidelity', () => {
93
93
  expect(getDomBlendModeFidelity(BlendMode.Normal)).toBe('exact');
94
94
  });
95
95
 
96
- it('returns "unsupported" for BlendMode.Alpha', () => {
97
- expect(getDomBlendModeFidelity(BlendMode.Alpha)).toBe('unsupported');
98
- });
99
-
100
- it('returns "unsupported" for BlendMode.Erase', () => {
101
- expect(getDomBlendModeFidelity(BlendMode.Erase)).toBe('unsupported');
102
- });
103
-
104
- it('returns "unsupported" for BlendMode.Invert', () => {
105
- expect(getDomBlendModeFidelity(BlendMode.Invert)).toBe('unsupported');
106
- });
107
-
108
- it('returns "unsupported" for BlendMode.Subtract', () => {
109
- expect(getDomBlendModeFidelity(BlendMode.Subtract)).toBe('unsupported');
96
+ it('returns "exact" for the advanced modes CSS realizes natively', () => {
97
+ expect(getDomBlendModeFidelity(AdvancedBlendMode.Overlay)).toBe('exact');
98
+ expect(getDomBlendModeFidelity(AdvancedBlendMode.SoftLight)).toBe('exact');
110
99
  });
111
100
  });
@@ -59,6 +59,37 @@ describe('drawDomNativeText', () => {
59
59
  expect(div.style.height).toBe('40px');
60
60
  expect(div.style.overflow).toBe('hidden');
61
61
  });
62
+
63
+ it('positions the block vertically via the flexbox on a fixed box', () => {
64
+ const state = makeState();
65
+ const node = createNativeText({ data: { text: 'hi', verticalAlign: 'middle' } });
66
+ const renderProxy = getOrCreateRenderProxy2D(state, node);
67
+
68
+ const div = drawGetEl(state, () => drawDomNativeText(state, renderProxy))!;
69
+ expect(div.style.display).toBe('flex');
70
+ expect(div.style.flexDirection).toBe('column');
71
+ expect(div.style.justifyContent).toBe('center');
72
+ });
73
+
74
+ it('maps top and bottom to the box ends', () => {
75
+ const state = makeState();
76
+ const top = createNativeText({ data: { text: 'hi', verticalAlign: 'top' } });
77
+ const bottom = createNativeText({ data: { text: 'hi', verticalAlign: 'bottom' } });
78
+ const topDiv = drawGetEl(state, () => drawDomNativeText(state, getOrCreateRenderProxy2D(state, top)))!;
79
+ const bottomDiv = drawGetEl(state, () => drawDomNativeText(state, getOrCreateRenderProxy2D(state, bottom)))!;
80
+ expect(topDiv.style.justifyContent).toBe('flex-start');
81
+ expect(bottomDiv.style.justifyContent).toBe('flex-end');
82
+ });
83
+
84
+ it('drops the flexbox framing under autoSize (no slack to align within)', () => {
85
+ const state = makeState();
86
+ const node = createNativeText({ data: { text: 'hi', autoSize: 'left', verticalAlign: 'middle' } });
87
+ const renderProxy = getOrCreateRenderProxy2D(state, node);
88
+
89
+ const div = drawGetEl(state, () => drawDomNativeText(state, renderProxy))!;
90
+ expect(div.style.display).toBe('');
91
+ expect(div.style.justifyContent).toBe('');
92
+ });
62
93
  });
63
94
 
64
95
  describe('drawDomNativeTextMask', () => {
@@ -100,10 +100,14 @@ describe('drawDomRichText', () => {
100
100
  expect(div.innerHTML).toContain('world');
101
101
  });
102
102
 
103
- it('renders resolved htmlText spans', () => {
103
+ it('renders resolved multi-format spans', () => {
104
104
  const state = makeState();
105
105
  const node = createRichText();
106
- node.data.htmlText = '<b>Bold</b><font color="#00ff00">Green</font>';
106
+ node.data.text = 'BoldGreen';
107
+ node.data.textFormatRanges = [
108
+ { start: 0, end: 4, format: { bold: true } },
109
+ { start: 4, end: 9, format: { color: 0x00ff00 } },
110
+ ];
107
111
  const renderProxy = getOrCreateRenderProxy2D(state, node);
108
112
 
109
113
  const div = drawGetEl(state, () => drawDomRichText(state, renderProxy))!;
@@ -1,27 +0,0 @@
1
- import type { ColorMatrixFilter } from '@flighthq/types';
2
- /**
3
- * Builds a CSS `filter: url(#id)` string for a ColorMatrixFilter by injecting an inline SVG
4
- * `<feColorMatrix>` element into a shared hidden SVG container. Callers pass the returned
5
- * CSS string directly to `setDomCssFilter`.
6
- *
7
- * The Flash/OpenFL 4×5 color matrix uses offsets in the 0–255 range; SVG `feColorMatrix`
8
- * expects values in the 0–1 range. This function divides offset columns (indices 4, 9, 14, 19)
9
- * by 255 before writing the `values` attribute.
10
- *
11
- * The returned CSS string references a `<filter>` element owned by this module. Call
12
- * `releaseDomSvgColorMatrixFilter` with the id portion when the filter is no longer needed to
13
- * remove the SVG element from the DOM; not doing so leaks `<filter>` nodes.
14
- *
15
- * Returns null if called outside a document context (SSR / headless without DOM).
16
- */
17
- export declare function getDomSvgColorMatrixFilter(filter: Readonly<ColorMatrixFilter>): string | null;
18
- /**
19
- * Removes the SVG `<filter>` element registered under the given id from the shared container.
20
- * The `id` is the fragment portion of the string returned by `getDomSvgColorMatrixFilter`
21
- * (strip the leading `url(#` and trailing `)`).
22
- *
23
- * Call this when the filter is no longer needed to avoid leaking `<filter>` DOM nodes.
24
- * No-op if the id is not found or outside a document context.
25
- */
26
- export declare function releaseDomSvgColorMatrixFilter(id: string): void;
27
- //# sourceMappingURL=domSvgFilter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"domSvgFilter.d.ts","sourceRoot":"","sources":["../src/domSvgFilter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,MAAM,GAAG,IAAI,CAa7F;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAK/D"}
@@ -1,88 +0,0 @@
1
- /**
2
- * Builds a CSS `filter: url(#id)` string for a ColorMatrixFilter by injecting an inline SVG
3
- * `<feColorMatrix>` element into a shared hidden SVG container. Callers pass the returned
4
- * CSS string directly to `setDomCssFilter`.
5
- *
6
- * The Flash/OpenFL 4×5 color matrix uses offsets in the 0–255 range; SVG `feColorMatrix`
7
- * expects values in the 0–1 range. This function divides offset columns (indices 4, 9, 14, 19)
8
- * by 255 before writing the `values` attribute.
9
- *
10
- * The returned CSS string references a `<filter>` element owned by this module. Call
11
- * `releaseDomSvgColorMatrixFilter` with the id portion when the filter is no longer needed to
12
- * remove the SVG element from the DOM; not doing so leaks `<filter>` nodes.
13
- *
14
- * Returns null if called outside a document context (SSR / headless without DOM).
15
- */
16
- export function getDomSvgColorMatrixFilter(filter) {
17
- const container = ensureSvgContainer();
18
- if (container === null)
19
- return null;
20
- const id = `flighthq-cm-${_nextFilterId++}`;
21
- const svgFilter = document.createElementNS('http://www.w3.org/2000/svg', 'filter');
22
- svgFilter.id = id;
23
- svgFilter.setAttribute('color-interpolation-filters', 'sRGB');
24
- const feColorMatrix = document.createElementNS('http://www.w3.org/2000/svg', 'feColorMatrix');
25
- feColorMatrix.setAttribute('type', 'matrix');
26
- feColorMatrix.setAttribute('values', buildFeColorMatrixValues(filter.matrix));
27
- svgFilter.appendChild(feColorMatrix);
28
- container.appendChild(svgFilter);
29
- return `url(#${id})`;
30
- }
31
- /**
32
- * Removes the SVG `<filter>` element registered under the given id from the shared container.
33
- * The `id` is the fragment portion of the string returned by `getDomSvgColorMatrixFilter`
34
- * (strip the leading `url(#` and trailing `)`).
35
- *
36
- * Call this when the filter is no longer needed to avoid leaking `<filter>` DOM nodes.
37
- * No-op if the id is not found or outside a document context.
38
- */
39
- export function releaseDomSvgColorMatrixFilter(id) {
40
- const container = _svgContainer;
41
- if (container === null)
42
- return;
43
- const el = container.querySelector(`#${CSS.escape(id)}`);
44
- if (el !== null)
45
- container.removeChild(el);
46
- }
47
- // Builds the SVG feColorMatrix `values` attribute string from a Flash/OpenFL 4×5 color matrix.
48
- // SVG expects values in the 0–1 range; the offset column (every 5th value starting at index 4)
49
- // is divided by 255 to convert from Flash's 0–255 convention.
50
- function buildFeColorMatrixValues(matrix) {
51
- const out = new Array(20);
52
- for (let row = 0; row < 4; row++) {
53
- const base = row * 5;
54
- out[base + 0] = matrix[base + 0];
55
- out[base + 1] = matrix[base + 1];
56
- out[base + 2] = matrix[base + 2];
57
- out[base + 3] = matrix[base + 3];
58
- // Offset column: divide by 255 (Flash 0–255 → SVG 0–1).
59
- out[base + 4] = matrix[base + 4] / 255;
60
- }
61
- return out.join(' ');
62
- }
63
- // Returns (or lazily creates) the shared hidden SVG container appended to document.body.
64
- // Returns null when no document is available (SSR context).
65
- function ensureSvgContainer() {
66
- if (_svgContainer !== null)
67
- return _svgContainer;
68
- if (typeof document === 'undefined')
69
- return null;
70
- const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
71
- svg.setAttribute('aria-hidden', 'true');
72
- svg.style.position = 'absolute';
73
- svg.style.width = '0';
74
- svg.style.height = '0';
75
- svg.style.overflow = 'hidden';
76
- svg.style.pointerEvents = 'none';
77
- // The container lives outside the render root so clip-path / overflow:hidden cannot hide it.
78
- document.body.appendChild(svg);
79
- _svgContainer = svg;
80
- return svg;
81
- }
82
- // SVG filter elements are appended to a shared hidden <svg> container at the document root so
83
- // every element with `filter: url(#id)` can reference them regardless of placement in the DOM.
84
- // Each filter gets a unique id derived from a monotonically incrementing counter so concurrent
85
- // filters do not collide.
86
- let _svgContainer = null;
87
- let _nextFilterId = 0;
88
- //# sourceMappingURL=domSvgFilter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"domSvgFilter.js","sourceRoot":"","sources":["../src/domSvgFilter.ts"],"names":[],"mappings":"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"}
@@ -1,116 +0,0 @@
1
- import { getDomSvgColorMatrixFilter, releaseDomSvgColorMatrixFilter } from './domSvgFilter';
2
-
3
- // A simple identity color matrix (Flash 0–255 offset convention).
4
- const IDENTITY_MATRIX = [
5
- 1,
6
- 0,
7
- 0,
8
- 0,
9
- 0, // R row
10
- 0,
11
- 1,
12
- 0,
13
- 0,
14
- 0, // G row
15
- 0,
16
- 0,
17
- 1,
18
- 0,
19
- 0, // B row
20
- 0,
21
- 0,
22
- 0,
23
- 1,
24
- 0, // A row
25
- ];
26
-
27
- describe('getDomSvgColorMatrixFilter', () => {
28
- it('returns a css url(#id) reference string', () => {
29
- const filter = { kind: 'ColorMatrixFilter' as const, matrix: IDENTITY_MATRIX };
30
- const css = getDomSvgColorMatrixFilter(filter);
31
- expect(css).toMatch(/^url\(#flighthq-cm-\d+\)$/);
32
- });
33
-
34
- it('injects a <filter> element into the document', () => {
35
- const filter = { kind: 'ColorMatrixFilter' as const, matrix: IDENTITY_MATRIX };
36
- const css = getDomSvgColorMatrixFilter(filter)!;
37
- const id = css.slice('url(#'.length, -1);
38
- const el = document.getElementById(id);
39
- expect(el).not.toBeNull();
40
- expect(el!.tagName.toLowerCase()).toBe('filter');
41
- });
42
-
43
- it('injects a feColorMatrix child with type=matrix', () => {
44
- const filter = { kind: 'ColorMatrixFilter' as const, matrix: IDENTITY_MATRIX };
45
- const css = getDomSvgColorMatrixFilter(filter)!;
46
- const id = css.slice('url(#'.length, -1);
47
- const filterEl = document.getElementById(id)!;
48
- const feEl = filterEl.querySelector('feColorMatrix');
49
- expect(feEl).not.toBeNull();
50
- expect(feEl!.getAttribute('type')).toBe('matrix');
51
- });
52
-
53
- it('divides offset column by 255 in the feColorMatrix values', () => {
54
- // Matrix with offset 255 in the red channel (index 4), which should become 1.0 in SVG.
55
- const matrix = [
56
- 1,
57
- 0,
58
- 0,
59
- 0,
60
- 255, // R: offset 255 → should map to 1 in SVG
61
- 0,
62
- 1,
63
- 0,
64
- 0,
65
- 0,
66
- 0,
67
- 0,
68
- 1,
69
- 0,
70
- 0,
71
- 0,
72
- 0,
73
- 0,
74
- 1,
75
- 0,
76
- ];
77
- const filter = { kind: 'ColorMatrixFilter' as const, matrix };
78
- const css = getDomSvgColorMatrixFilter(filter)!;
79
- const id = css.slice('url(#'.length, -1);
80
- const filterEl = document.getElementById(id)!;
81
- const feEl = filterEl.querySelector('feColorMatrix')!;
82
- const values = feEl.getAttribute('values')!.split(' ').map(Number);
83
- // Index 4 is the R-row offset; should be 255/255 = 1
84
- expect(values[4]).toBeCloseTo(1, 5);
85
- });
86
-
87
- it('each call produces a unique id', () => {
88
- const filter = { kind: 'ColorMatrixFilter' as const, matrix: IDENTITY_MATRIX };
89
- const css1 = getDomSvgColorMatrixFilter(filter);
90
- const css2 = getDomSvgColorMatrixFilter(filter);
91
- expect(css1).not.toBe(css2);
92
- });
93
-
94
- it('sets color-interpolation-filters to sRGB on the filter element', () => {
95
- const filter = { kind: 'ColorMatrixFilter' as const, matrix: IDENTITY_MATRIX };
96
- const css = getDomSvgColorMatrixFilter(filter)!;
97
- const id = css.slice('url(#'.length, -1);
98
- const filterEl = document.getElementById(id)!;
99
- expect(filterEl.getAttribute('color-interpolation-filters')).toBe('sRGB');
100
- });
101
- });
102
-
103
- describe('releaseDomSvgColorMatrixFilter', () => {
104
- it('removes the injected filter element from the document', () => {
105
- const filter = { kind: 'ColorMatrixFilter' as const, matrix: IDENTITY_MATRIX };
106
- const css = getDomSvgColorMatrixFilter(filter)!;
107
- const id = css.slice('url(#'.length, -1);
108
- expect(document.getElementById(id)).not.toBeNull();
109
- releaseDomSvgColorMatrixFilter(id);
110
- expect(document.getElementById(id)).toBeNull();
111
- });
112
-
113
- it('is a no-op for an unknown id', () => {
114
- expect(() => releaseDomSvgColorMatrixFilter('nonexistent-filter-id')).not.toThrow();
115
- });
116
- });