@lightningjs/renderer 3.0.0-beta21 → 3.0.0-beta22

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 (60) hide show
  1. package/dist/exports/index.d.ts +1 -0
  2. package/dist/exports/index.js +1 -0
  3. package/dist/exports/index.js.map +1 -1
  4. package/dist/src/common/CommonTypes.d.ts +2 -1
  5. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +3 -2
  6. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +3 -1
  7. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
  8. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +8 -24
  9. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -1
  10. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +8 -25
  11. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -1
  12. package/dist/src/core/shaders/webgl/Border.js +7 -13
  13. package/dist/src/core/shaders/webgl/Border.js.map +1 -1
  14. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +6 -17
  15. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
  16. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +4 -8
  17. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
  18. package/dist/src/core/text-rendering/CanvasFont.d.ts +14 -0
  19. package/dist/src/core/text-rendering/CanvasFont.js +115 -0
  20. package/dist/src/core/text-rendering/CanvasFont.js.map +1 -0
  21. package/dist/src/core/text-rendering/CoreFont.d.ts +33 -0
  22. package/dist/src/core/text-rendering/CoreFont.js +48 -0
  23. package/dist/src/core/text-rendering/CoreFont.js.map +1 -0
  24. package/dist/src/core/text-rendering/FontManager.d.ts +11 -0
  25. package/dist/src/core/text-rendering/FontManager.js +41 -0
  26. package/dist/src/core/text-rendering/FontManager.js.map +1 -0
  27. package/dist/src/core/text-rendering/SdfFont.d.ts +29 -0
  28. package/dist/src/core/text-rendering/SdfFont.js +142 -0
  29. package/dist/src/core/text-rendering/SdfFont.js.map +1 -0
  30. package/dist/src/core/textures/Texture.d.ts +4 -3
  31. package/dist/src/core/textures/Texture.js.map +1 -1
  32. package/dist/src/core/utils.d.ts +1 -1
  33. package/dist/src/main-api/Inspector.d.ts +4 -0
  34. package/dist/src/main-api/Inspector.js +160 -0
  35. package/dist/src/main-api/Inspector.js.map +1 -1
  36. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  37. package/exports/index.ts +5 -0
  38. package/package.json +1 -1
  39. package/src/common/CommonTypes.ts +2 -1
  40. package/src/core/shaders/webgl/Border.ts +7 -13
  41. package/src/core/shaders/webgl/RoundedWithBorder.ts +6 -17
  42. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +4 -8
  43. package/src/core/textures/Texture.ts +10 -6
  44. package/src/main-api/Inspector.ts +215 -0
  45. package/dist/src/core/animations/Animation.d.ts +0 -21
  46. package/dist/src/core/animations/Animation.js +0 -194
  47. package/dist/src/core/animations/Animation.js.map +0 -1
  48. package/dist/src/core/animations/Playback.d.ts +0 -64
  49. package/dist/src/core/animations/Playback.js +0 -169
  50. package/dist/src/core/animations/Playback.js.map +0 -1
  51. package/dist/src/core/animations/Transition.d.ts +0 -27
  52. package/dist/src/core/animations/Transition.js +0 -52
  53. package/dist/src/core/animations/Transition.js.map +0 -1
  54. package/dist/src/core/animations/utils.d.ts +0 -2
  55. package/dist/src/core/animations/utils.js +0 -136
  56. package/dist/src/core/animations/utils.js.map +0 -1
  57. package/dist/src/core/shaders/webgl/SdfShadowShader.d.ts +0 -9
  58. package/dist/src/core/shaders/webgl/SdfShadowShader.js +0 -100
  59. package/dist/src/core/shaders/webgl/SdfShadowShader.js.map +0 -1
  60. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,41 @@
1
+ export class CoreFontManager {
2
+ fonts = Object.create(null);
3
+ renderers = Object.create(null);
4
+ constructor(stage, textRenderers) {
5
+ for (let i = 0; i < textRenderers.length; i++) {
6
+ const renderer = textRenderers[i];
7
+ this.renderers[renderer.type] = renderer;
8
+ renderer.init(stage, this);
9
+ }
10
+ }
11
+ loadFont(type, options) {
12
+ const targetRenderer = this.renderers[type];
13
+ if (targetRenderer === undefined) {
14
+ console.error('renderer type for this font does not exist');
15
+ return;
16
+ }
17
+ const font = targetRenderer.createFont(options);
18
+ if (font === undefined) {
19
+ return;
20
+ }
21
+ font.load();
22
+ this.fonts[options.fontFamily] = font;
23
+ }
24
+ unloadFont(fontFamily) {
25
+ const targetFont = this.fonts[fontFamily];
26
+ if (targetFont === undefined) {
27
+ return;
28
+ }
29
+ targetFont.destroy();
30
+ delete this.fonts[fontFamily];
31
+ }
32
+ getFont(fontFamily) {
33
+ const font = this.fonts[fontFamily];
34
+ if (font === undefined) {
35
+ console.warn('fontFamily not registered');
36
+ return;
37
+ }
38
+ return font;
39
+ }
40
+ }
41
+ //# sourceMappingURL=FontManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FontManager.js","sourceRoot":"","sources":["../../../../src/core/text-rendering/FontManager.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,eAAe;IAClB,KAAK,GAA6B,MAAM,CAAC,MAAM,CAAC,IAAI,CAG3D,CAAC;IACM,SAAS,GAAiC,MAAM,CAAC,MAAM,CAC7D,IAAI,CAC2B,CAAC;IAElC,YAAY,KAAY,EAAE,aAA6B;QACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;YACzC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,IAAmB,EAAE,OAAwB;QACpD,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IACxC,CAAC;IAED,UAAU,CAAC,UAAkB;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,UAAU,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,UAAkB;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,29 @@
1
+ import type { Stage } from '../Stage.js';
2
+ import type { ImageTexture } from '../textures/ImageTexture.js';
3
+ import { CoreFont, type CoreFontProps } from './CoreFont.js';
4
+ import { type SdfFontData } from './SdfFontHandler.js';
5
+ import type { NormalizedFontMetrics, TextRenderer } from './TextRenderer.js';
6
+ export type SdfFontProps = CoreFontProps & {
7
+ atlasUrl: string;
8
+ atlasDataUrl: string;
9
+ };
10
+ export declare class SdfFont extends CoreFont {
11
+ private stage;
12
+ type: string;
13
+ atlasUrl: string;
14
+ atlasDataUrl: string;
15
+ atlasTexture?: ImageTexture;
16
+ private glyphMap?;
17
+ private kerningTable?;
18
+ private data?;
19
+ constructor(textRenderer: TextRenderer, props: SdfFontProps, stage: Stage);
20
+ load(): void;
21
+ private hardFail;
22
+ private processFontData;
23
+ measureText(text: string, letterSpacing: number): number;
24
+ getMetrics(fontSize: number): NormalizedFontMetrics;
25
+ getGlyph(codepoint: number): import("./SdfFontHandler.js").SdfGlyph | null;
26
+ getKerning(firstGlyph: number, secondGlyph: number): number;
27
+ getAtlas(): ImageTexture;
28
+ getData(): SdfFontData;
29
+ }
@@ -0,0 +1,142 @@
1
+ /*
2
+ * If not stated otherwise in this file or this component's LICENSE file the
3
+ * following copyright and licenses apply:
4
+ *
5
+ * Copyright 2025 Comcast Cable Communications Management, LLC.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the License);
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ */
19
+ import { CoreFont, FontState } from './CoreFont.js';
20
+ import { buildGlyphMap, buildKerningTable, } from './SdfFontHandler.js';
21
+ import { normalizeFontMetrics } from './TextLayoutEngine.js';
22
+ import { hasZeroWidthSpace } from './Utils.js';
23
+ export class SdfFont extends CoreFont {
24
+ stage;
25
+ type = 'sdf';
26
+ atlasUrl;
27
+ atlasDataUrl;
28
+ atlasTexture;
29
+ glyphMap;
30
+ kerningTable;
31
+ data;
32
+ constructor(textRenderer, props, stage) {
33
+ super(textRenderer, props);
34
+ this.stage = stage;
35
+ this.atlasUrl = props.atlasUrl;
36
+ this.atlasDataUrl = props.atlasDataUrl;
37
+ }
38
+ load() {
39
+ new Promise(async () => {
40
+ const atlasData = await fetch(this.atlasDataUrl);
41
+ if (atlasData.ok === false) {
42
+ this.hardFail(`Failed to load font data: ${atlasData.statusText}`);
43
+ }
44
+ const fontData = (await atlasData.json());
45
+ if (fontData.chars === undefined) {
46
+ this.hardFail('Invalid SDF font data format');
47
+ }
48
+ const atlasTexture = this.stage.txManager.createTexture('ImageTexture', {
49
+ src: this.atlasUrl,
50
+ premultiplyAlpha: false,
51
+ });
52
+ atlasTexture.setRenderableOwner(this.family, true);
53
+ atlasTexture.preventCleanup = true;
54
+ atlasTexture.on('loaded', () => {
55
+ this.onLoaded();
56
+ });
57
+ atlasTexture.on('failed', (error) => {
58
+ console.error(`Failed to load SDF font: ${this.family}`, error);
59
+ this.emit('failed');
60
+ });
61
+ this.atlasTexture = atlasTexture;
62
+ this.processFontData(fontData);
63
+ });
64
+ }
65
+ hardFail(message) {
66
+ this.state = FontState.Failed;
67
+ throw new Error(message);
68
+ }
69
+ processFontData(fontData) {
70
+ this.glyphMap = buildGlyphMap(fontData.chars);
71
+ this.kerningTable = buildKerningTable(fontData.kernings);
72
+ this.metrics = this.metrics ||
73
+ fontData.lightningMetrics || {
74
+ ascender: 800,
75
+ descender: -200,
76
+ lineGap: 200,
77
+ unitsPerEm: 1000,
78
+ };
79
+ this.data = fontData;
80
+ }
81
+ measureText(text, letterSpacing) {
82
+ if (text.length === 1) {
83
+ const char = text.charAt(0);
84
+ const codepoint = text.codePointAt(0);
85
+ if (codepoint === undefined)
86
+ return 0;
87
+ if (hasZeroWidthSpace(char) === true)
88
+ return 0;
89
+ const glyph = this.getGlyph(codepoint);
90
+ if (glyph === null)
91
+ return 0;
92
+ return glyph.xadvance + letterSpacing;
93
+ }
94
+ let width = 0;
95
+ let prevCodepoint = 0;
96
+ for (let i = 0; i < text.length; i++) {
97
+ const char = text.charAt(i);
98
+ const codepoint = text.codePointAt(i);
99
+ if (codepoint === undefined)
100
+ continue;
101
+ // Skip zero-width spaces in width calculations
102
+ if (hasZeroWidthSpace(char)) {
103
+ continue;
104
+ }
105
+ const glyph = this.getGlyph(codepoint);
106
+ if (glyph === null)
107
+ continue;
108
+ let advance = glyph.xadvance;
109
+ // Add kerning if there's a previous character
110
+ if (prevCodepoint !== 0) {
111
+ const kerning = this.getKerning(prevCodepoint, codepoint);
112
+ advance += kerning;
113
+ }
114
+ width += advance + letterSpacing;
115
+ prevCodepoint = codepoint;
116
+ }
117
+ return width;
118
+ }
119
+ getMetrics(fontSize) {
120
+ let m = this.normalizedMetrics[fontSize];
121
+ if (m !== undefined) {
122
+ return m;
123
+ }
124
+ m = this.normalizedMetrics[fontSize] = normalizeFontMetrics(this.metrics, fontSize);
125
+ return m;
126
+ }
127
+ getGlyph(codepoint) {
128
+ const gm = this.glyphMap;
129
+ return gm[codepoint] || gm[63] || null;
130
+ }
131
+ getKerning(firstGlyph, secondGlyph) {
132
+ const seconds = this.kerningTable[secondGlyph];
133
+ return (seconds !== undefined && seconds[firstGlyph]) || 0;
134
+ }
135
+ getAtlas() {
136
+ return this.atlasTexture;
137
+ }
138
+ getData() {
139
+ return this.data;
140
+ }
141
+ }
142
+ //# sourceMappingURL=SdfFont.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SdfFont.js","sourceRoot":"","sources":["../../../../src/core/text-rendering/SdfFont.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import type { Dimensions } from '../../common/CommonTypes.js';
4
4
  import { EventEmitter } from '../../common/EventEmitter.js';
5
5
  import type { CoreContextTexture } from '../renderers/CoreContextTexture.js';
6
6
  import type { Bound } from '../lib/utils.js';
7
+ import type { TextureError } from '../TextureError.js';
7
8
  /**
8
9
  * Event handler for when a Texture is freed
9
10
  */
@@ -54,7 +55,7 @@ export interface CompressedData {
54
55
  /**
55
56
  * Event handler for when a Texture fails to load
56
57
  */
57
- export type TextureFailedEventHandler = (target: any, error: Error) => void;
58
+ export type TextureFailedEventHandler = (target: any, error: TextureError) => void;
58
59
  /**
59
60
  * TextureData that is used to populate a CoreContextTexture
60
61
  */
@@ -135,7 +136,7 @@ export declare abstract class Texture extends EventEmitter {
135
136
  private static readonly STARTUP_GRACE_PERIOD;
136
137
  constructor(txManager: CoreTextureManager);
137
138
  get dimensions(): Dimensions | null;
138
- get error(): Error | null;
139
+ get error(): TextureError | null;
139
140
  /**
140
141
  * Checks if the texture is within the startup grace period.
141
142
  * During this period, textures are protected from cleanup to prevent
@@ -210,7 +211,7 @@ export declare abstract class Texture extends EventEmitter {
210
211
  * e.g. ImageData that is downloaded from a URL.
211
212
  */
212
213
  freeTextureData(): void;
213
- setState(state: TextureState, errorOrDimensions?: Error | Dimensions): void;
214
+ setState(state: TextureState, errorOrDimensions?: TextureError | Dimensions): void;
214
215
  /**
215
216
  * Get the texture data for this texture.
216
217
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Texture.js","sourceRoot":"","sources":["../../../../src/core/textures/Texture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Texture.js","sourceRoot":"","sources":["../../../../src/core/textures/Texture.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * @module
5
5
  */
6
6
  export declare const EPSILON = 0.000001;
7
- export declare let ARRAY_TYPE: Float32ArrayConstructor | ArrayConstructor;
7
+ export declare let ARRAY_TYPE: ArrayConstructor | Float32ArrayConstructor;
8
8
  export declare const RANDOM: () => number;
9
9
  export declare const ANGLE_ORDER = "zyx";
10
10
  export type TimingFunction = (t: number) => number;
@@ -3,6 +3,7 @@ import { type RendererMainSettings } from './Renderer.js';
3
3
  import type { AnimationSettings } from '../core/animations/CoreAnimation.js';
4
4
  import type { AnimationControllerState } from '../common/IAnimationController.js';
5
5
  import { CoreTextNode, type CoreTextNodeProps } from '../core/CoreTextNode.js';
6
+ import type { Texture } from '../core/textures/Texture.js';
6
7
  /**
7
8
  * Inspector Options
8
9
  *
@@ -55,6 +56,7 @@ export declare class Inspector {
55
56
  private width;
56
57
  private scaleX;
57
58
  private scaleY;
59
+ private textureMetrics;
58
60
  private static setterCallCount;
59
61
  private static activeAnimations;
60
62
  private static animationHistory;
@@ -142,6 +144,8 @@ export declare class Inspector {
142
144
  createNode(node: CoreNode): CoreNode;
143
145
  createTextNode(node: CoreTextNode): CoreTextNode;
144
146
  createProxy(node: CoreNode | CoreTextNode, div: HTMLElement): CoreNode | CoreTextNode;
147
+ updateTextNodeDimensions(div: HTMLElement, node: CoreTextNode): void;
148
+ updateTextureAttributes(div: HTMLElement, texture: Texture): void;
145
149
  destroy(): void;
146
150
  destroyNode(id: number): void;
147
151
  updateNodeProperty(div: HTMLElement, property: keyof CoreNodeProps | keyof CoreTextNodeProps, value: any, props: CoreNodeProps | CoreTextNodeProps): void;
@@ -2,6 +2,7 @@ import { CoreNode, } from '../core/CoreNode.js';
2
2
  import {} from './Renderer.js';
3
3
  import { isProductionEnvironment } from '../utils.js';
4
4
  import { CoreTextNode } from '../core/CoreTextNode.js';
5
+ import { TextureType } from '../core/textures/Texture.js';
5
6
  const stylePropertyMap = {
6
7
  alpha: (v) => {
7
8
  if (v === 1) {
@@ -105,6 +106,14 @@ const gradientColorPropertyMap = [
105
106
  'colorBl',
106
107
  'colorBr',
107
108
  ];
109
+ const textureTypeNames = {
110
+ [TextureType.generic]: 'generic',
111
+ [TextureType.color]: 'color',
112
+ [TextureType.image]: 'image',
113
+ [TextureType.noise]: 'noise',
114
+ [TextureType.renderToTexture]: 'renderToTexture',
115
+ [TextureType.subTexture]: 'subTexture',
116
+ };
108
117
  const knownProperties = new Set([
109
118
  ...Object.keys(stylePropertyMap),
110
119
  ...Object.keys(domPropertyMap),
@@ -123,6 +132,7 @@ export class Inspector {
123
132
  width = 1920;
124
133
  scaleX = 1;
125
134
  scaleY = 1;
135
+ textureMetrics = new Map();
126
136
  // Performance monitoring for frequent setter calls
127
137
  static setterCallCount = new Map();
128
138
  // Animation monitoring structures
@@ -492,6 +502,75 @@ export class Inspector {
492
502
  return this.createProxy(node, div);
493
503
  }
494
504
  createProxy(node, div) {
505
+ // Store texture event listeners for cleanup
506
+ const textureListeners = new Map();
507
+ const coreNodeListeners = new Map();
508
+ const setupCoreNodeListeners = (coreNode) => {
509
+ const onLoaded = () => {
510
+ this.updateTextNodeDimensions(div, coreNode);
511
+ };
512
+ coreNode.on('loaded', onLoaded);
513
+ coreNodeListeners.set(coreNode, { onLoaded });
514
+ };
515
+ // Helper function to setup texture event listeners
516
+ const setupTextureListeners = (texture) => {
517
+ // Clean up existing listeners first
518
+ textureListeners.forEach((listeners, oldTexture) => {
519
+ oldTexture.off('loaded', listeners.onLoaded);
520
+ oldTexture.off('failed', listeners.onFailed);
521
+ oldTexture.off('freed', listeners.onFreed);
522
+ });
523
+ textureListeners.clear();
524
+ // Setup new listeners if texture exists
525
+ if (texture) {
526
+ // Initialize metrics if not exists
527
+ if (!this.textureMetrics.has(texture)) {
528
+ this.textureMetrics.set(texture, {
529
+ previousState: texture.state,
530
+ loadedCount: 0,
531
+ failedCount: 0,
532
+ freedCount: 0,
533
+ });
534
+ }
535
+ const onLoaded = () => {
536
+ const metrics = this.textureMetrics.get(texture);
537
+ if (metrics) {
538
+ metrics.previousState =
539
+ metrics.previousState !== texture.state
540
+ ? metrics.previousState
541
+ : 'loading';
542
+ metrics.loadedCount++;
543
+ }
544
+ this.updateTextureAttributes(div, texture);
545
+ };
546
+ const onFailed = () => {
547
+ const metrics = this.textureMetrics.get(texture);
548
+ if (metrics) {
549
+ metrics.previousState =
550
+ metrics.previousState !== texture.state
551
+ ? metrics.previousState
552
+ : 'loading';
553
+ metrics.failedCount++;
554
+ }
555
+ this.updateTextureAttributes(div, texture);
556
+ };
557
+ const onFreed = () => {
558
+ const metrics = this.textureMetrics.get(texture);
559
+ if (metrics) {
560
+ metrics.previousState =
561
+ metrics.previousState !== texture.state
562
+ ? metrics.previousState
563
+ : texture.state;
564
+ metrics.freedCount++;
565
+ }
566
+ this.updateTextureAttributes(div, texture);
567
+ };
568
+ texture.on('loaded', onLoaded);
569
+ texture.on('failed', onFailed);
570
+ texture.on('freed', onFreed);
571
+ textureListeners.set(texture, { onLoaded, onFailed, onFreed });
572
+ }
573
+ };
495
574
  // Define traps for each property in knownProperties
496
575
  knownProperties.forEach((property) => {
497
576
  let originalProp = Object.getOwnPropertyDescriptor(node, property);
@@ -503,6 +582,9 @@ export class Inspector {
503
582
  if (originalProp === undefined) {
504
583
  return;
505
584
  }
585
+ if (property === 'text') {
586
+ setupCoreNodeListeners(node);
587
+ }
506
588
  Object.defineProperty(node, property, {
507
589
  get() {
508
590
  // eslint-disable-next-line @typescript-eslint/no-unsafe-return
@@ -513,6 +595,13 @@ export class Inspector {
513
595
  this.trackSetterCall(node.id, property);
514
596
  originalProp?.set?.call(node, value);
515
597
  this.updateNodeProperty(div, property, value, node.props);
598
+ // Setup texture event listeners if this is a texture property
599
+ if (property === 'texture') {
600
+ const textureValue = value && typeof value === 'object' && 'state' in value
601
+ ? value
602
+ : null;
603
+ setupTextureListeners(textureValue);
604
+ }
516
605
  },
517
606
  configurable: true,
518
607
  enumerable: true,
@@ -521,6 +610,19 @@ export class Inspector {
521
610
  const originalDestroy = node.destroy;
522
611
  Object.defineProperty(node, 'destroy', {
523
612
  value: () => {
613
+ // Clean up texture event listeners and metrics
614
+ textureListeners.forEach((listeners, texture) => {
615
+ texture.off('loaded', listeners.onLoaded);
616
+ texture.off('failed', listeners.onFailed);
617
+ texture.off('freed', listeners.onFreed);
618
+ // Clean up metrics for this texture
619
+ this.textureMetrics.delete(texture);
620
+ });
621
+ textureListeners.clear();
622
+ coreNodeListeners.forEach((listeners, coreNode) => {
623
+ coreNode.off('loaded', listeners.onLoaded);
624
+ });
625
+ coreNodeListeners.clear();
524
626
  this.destroyNode(node.id);
525
627
  originalDestroy.call(node);
526
628
  },
@@ -537,6 +639,64 @@ export class Inspector {
537
639
  });
538
640
  return node;
539
641
  }
642
+ updateTextNodeDimensions(div, node) {
643
+ const textMetrics = node.renderInfo;
644
+ if (textMetrics) {
645
+ div.style.width = `${textMetrics.width}px`;
646
+ div.style.height = `${textMetrics.height}px`;
647
+ }
648
+ else {
649
+ div.style.removeProperty('width');
650
+ div.style.removeProperty('height');
651
+ }
652
+ }
653
+ updateTextureAttributes(div, texture) {
654
+ // Update texture state
655
+ div.setAttribute('data-texture-state', texture.state);
656
+ // Update texture type
657
+ div.setAttribute('data-texture-type', textureTypeNames[texture.type] || 'unknown');
658
+ // Update texture dimensions if available
659
+ if (texture.dimensions) {
660
+ div.setAttribute('data-texture-width', String(texture.dimensions.w));
661
+ div.setAttribute('data-texture-height', String(texture.dimensions.h));
662
+ }
663
+ else {
664
+ div.removeAttribute('data-texture-width');
665
+ div.removeAttribute('data-texture-height');
666
+ }
667
+ // Update renderable owners count
668
+ div.setAttribute('data-texture-owners', String(texture.renderableOwners.length));
669
+ // Update retry count
670
+ div.setAttribute('data-texture-retry-count', String(texture.retryCount));
671
+ // Update max retry count if available
672
+ if (texture.maxRetryCount !== null) {
673
+ div.setAttribute('data-texture-max-retry-count', String(texture.maxRetryCount));
674
+ }
675
+ else {
676
+ div.removeAttribute('data-texture-max-retry-count');
677
+ }
678
+ // Update metrics if available
679
+ const metrics = this.textureMetrics.get(texture);
680
+ if (metrics) {
681
+ div.setAttribute('data-texture-previous-state', metrics.previousState);
682
+ div.setAttribute('data-texture-loaded-count', String(metrics.loadedCount));
683
+ div.setAttribute('data-texture-failed-count', String(metrics.failedCount));
684
+ div.setAttribute('data-texture-freed-count', String(metrics.freedCount));
685
+ }
686
+ else {
687
+ div.removeAttribute('data-texture-previous-state');
688
+ div.removeAttribute('data-texture-loaded-count');
689
+ div.removeAttribute('data-texture-failed-count');
690
+ div.removeAttribute('data-texture-freed-count');
691
+ }
692
+ // Update error information if present
693
+ if (texture.error) {
694
+ div.setAttribute('data-texture-error', texture.error.code || texture.error.message);
695
+ }
696
+ else {
697
+ div.removeAttribute('data-texture-error');
698
+ }
699
+ }
540
700
  destroy() {
541
701
  // Stop animation stats timer
542
702
  this.stopAnimationStatsTimer();