@lightningjs/renderer 3.0.0-beta14 → 3.0.0-beta15
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/exports/index.d.ts +1 -0
- package/dist/exports/index.js.map +1 -1
- package/dist/src/core/CoreNode.d.ts +1 -1
- package/dist/src/core/CoreTextNode.d.ts +0 -2
- package/dist/src/core/CoreTextNode.js +4 -16
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/Stage.js +2 -3
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureError.d.ts +11 -0
- package/dist/src/core/TextureError.js +37 -0
- package/dist/src/core/TextureError.js.map +1 -0
- package/dist/src/core/animations/CoreAnimation.d.ts +3 -2
- package/dist/src/core/animations/CoreAnimation.js +3 -2
- package/dist/src/core/animations/CoreAnimation.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +5 -5
- package/dist/src/core/lib/textureCompression.js +1 -1
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/platform.d.ts +10 -0
- package/dist/src/core/platform.js +81 -0
- package/dist/src/core/platform.js.map +1 -0
- package/dist/src/core/renderers/CoreShader.d.ts +9 -0
- package/{src/core/text-rendering/sdf/index.ts → dist/src/core/renderers/CoreShader.js} +11 -3
- package/dist/src/core/renderers/CoreShader.js.map +1 -0
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +33 -0
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +250 -0
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -0
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +17 -0
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +125 -0
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -0
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +14 -0
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +138 -0
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -0
- package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +19 -0
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js +58 -0
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -0
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +10 -0
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +43 -0
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +12 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +58 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +9 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +38 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +65 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +269 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +34 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +114 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +133 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +616 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +83 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +233 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +9 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +87 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +10 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +119 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +29 -0
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +413 -0
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +28 -0
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +131 -0
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +47 -0
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +160 -0
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +31 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +30 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +58 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +31 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +31 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +31 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +9 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +136 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +36 -0
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +85 -0
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +45 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +104 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +22 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +45 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +58 -0
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +80 -0
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +35 -0
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +129 -0
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +39 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +116 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +61 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +127 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +40 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +115 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +61 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +1 -0
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/LinearGradient.js +26 -3
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RadialGradient.js +49 -27
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -2
- package/dist/src/core/shaders/webgl/SdfShader.js +1 -10
- package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
- package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +21 -3
- package/dist/src/core/text-rendering/CanvasFontHandler.js +94 -32
- package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -1
- package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +2 -7
- package/dist/src/core/text-rendering/CanvasTextRenderer.js +51 -260
- package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/SdfFontHandler.d.ts +35 -5
- package/dist/src/core/text-rendering/SdfFontHandler.js +76 -56
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -1
- package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +1 -1
- package/dist/src/core/text-rendering/SdfTextRenderer.js +38 -82
- package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +19 -0
- package/dist/src/core/text-rendering/{sdf/Utils.js → TextLayoutEngine.js} +125 -105
- package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
- package/dist/src/core/text-rendering/TextRenderer.d.ts +30 -13
- package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +12 -0
- package/dist/src/core/text-rendering/TextRenderingUtils.js +14 -0
- package/dist/src/core/text-rendering/TextRenderingUtils.js.map +1 -0
- package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +72 -0
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js +217 -0
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -0
- package/dist/src/core/text-rendering/TrFontManager.d.ts +26 -0
- package/dist/src/core/text-rendering/TrFontManager.js +131 -0
- package/dist/src/core/text-rendering/TrFontManager.js.map +1 -0
- package/dist/src/core/text-rendering/Utils.d.ts +1 -42
- package/dist/src/core/text-rendering/Utils.js +4 -132
- package/dist/src/core/text-rendering/Utils.js.map +1 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +39 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +125 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +103 -0
- package/dist/src/core/text-rendering/{sdf/index.js → font-face-types/SdfTrFontFace/internal/FontShaper.js} +4 -3
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +62 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +88 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +118 -0
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +63 -0
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +14 -0
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +66 -0
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/utils.d.ts +1 -0
- package/dist/src/core/text-rendering/font-face-types/utils.js +38 -0
- package/dist/src/core/text-rendering/font-face-types/utils.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +59 -0
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +397 -0
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +120 -0
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +551 -0
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +92 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +607 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +12 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +61 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +33 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +52 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +13 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +32 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +23 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +84 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +4 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +34 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +20 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +308 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +10 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +40 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +26 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +70 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +16 -0
- package/dist/src/core/text-rendering/{canvas/Settings.js → renderers/SdfTextRenderer/internal/util.js} +22 -3
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +373 -0
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +178 -0
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -0
- package/dist/src/core/utils.d.ts +2 -1
- package/dist/src/core/utils.js +1 -1
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/main-api/DynamicShaderController.d.ts +29 -0
- package/dist/src/main-api/DynamicShaderController.js +58 -0
- package/dist/src/main-api/DynamicShaderController.js.map +1 -0
- package/dist/src/main-api/Inspector.d.ts +124 -0
- package/dist/src/main-api/Inspector.js +283 -8
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +150 -26
- package/dist/src/main-api/Renderer.js +27 -25
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/main-api/ShaderController.d.ts +31 -0
- package/dist/src/main-api/ShaderController.js +37 -0
- package/dist/src/main-api/ShaderController.js.map +1 -0
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/exports/index.ts +1 -0
- package/package.json +14 -15
- package/src/core/CoreTextNode.ts +4 -22
- package/src/core/Stage.ts +2 -3
- package/src/core/animations/CoreAnimation.ts +8 -7
- package/src/core/lib/textureCompression.ts +4 -2
- package/src/core/shaders/canvas/RoundedWithBorder.ts +1 -1
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +1 -1
- package/src/core/shaders/webgl/LinearGradient.ts +26 -3
- package/src/core/shaders/webgl/RadialGradient.ts +50 -28
- package/src/core/shaders/webgl/SdfShader.ts +1 -12
- package/src/core/text-rendering/CanvasFontHandler.ts +136 -39
- package/src/core/text-rendering/CanvasTextRenderer.ts +75 -440
- package/src/core/text-rendering/SdfFontHandler.ts +94 -60
- package/src/core/text-rendering/SdfTextRenderer.ts +62 -116
- package/src/core/text-rendering/{sdf/Utils.ts → TextLayoutEngine.ts} +209 -143
- package/src/core/text-rendering/TextRenderer.ts +36 -13
- package/src/core/text-rendering/Utils.ts +5 -163
- package/src/core/text-rendering/{sdf/Utils.test.ts → tests/Canvas.test.ts} +98 -122
- package/src/core/text-rendering/tests/SdfTests.test.ts +414 -0
- package/src/core/utils.ts +9 -7
- package/src/main-api/Inspector.ts +502 -12
- package/src/main-api/Renderer.ts +158 -26
- package/dist/src/core/text-rendering/canvas/Settings.d.ts +0 -64
- package/dist/src/core/text-rendering/canvas/Settings.js.map +0 -1
- package/dist/src/core/text-rendering/canvas/Utils.d.ts +0 -20
- package/dist/src/core/text-rendering/canvas/Utils.js +0 -144
- package/dist/src/core/text-rendering/canvas/Utils.js.map +0 -1
- package/dist/src/core/text-rendering/canvas/calculateRenderInfo.d.ts +0 -60
- package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js +0 -183
- package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js.map +0 -1
- package/dist/src/core/text-rendering/canvas/draw.d.ts +0 -5
- package/dist/src/core/text-rendering/canvas/draw.js +0 -132
- package/dist/src/core/text-rendering/canvas/draw.js.map +0 -1
- package/dist/src/core/text-rendering/sdf/Utils.d.ts +0 -26
- package/dist/src/core/text-rendering/sdf/Utils.js.map +0 -1
- package/dist/src/core/text-rendering/sdf/index.d.ts +0 -1
- package/dist/src/core/text-rendering/sdf/index.js.map +0 -1
- package/src/core/text-rendering/canvas/Settings.ts +0 -99
- package/src/core/text-rendering/canvas/Utils.test.ts +0 -206
- package/src/core/text-rendering/canvas/Utils.ts +0 -178
- package/src/core/text-rendering/canvas/calculateRenderInfo.ts +0 -299
- package/src/core/text-rendering/canvas/draw.ts +0 -165
|
@@ -5,10 +5,62 @@ import {
|
|
|
5
5
|
} from '../core/CoreNode.js';
|
|
6
6
|
import { type RendererMainSettings } from './Renderer.js';
|
|
7
7
|
import type { AnimationSettings } from '../core/animations/CoreAnimation.js';
|
|
8
|
-
import type {
|
|
8
|
+
import type {
|
|
9
|
+
IAnimationController,
|
|
10
|
+
AnimationControllerState,
|
|
11
|
+
} from '../common/IAnimationController.js';
|
|
9
12
|
import { isProductionEnvironment } from '../utils.js';
|
|
10
13
|
import { CoreTextNode, type CoreTextNodeProps } from '../core/CoreTextNode.js';
|
|
11
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Inspector Options
|
|
17
|
+
*
|
|
18
|
+
* Configuration options for the Inspector's performance monitoring features.
|
|
19
|
+
*/
|
|
20
|
+
export interface InspectorOptions {
|
|
21
|
+
/**
|
|
22
|
+
* Enable performance monitoring for setter calls
|
|
23
|
+
*
|
|
24
|
+
* @defaultValue true
|
|
25
|
+
*/
|
|
26
|
+
enablePerformanceMonitoring: boolean;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Threshold for excessive setter calls before logging a warning
|
|
30
|
+
*
|
|
31
|
+
* @defaultValue 100
|
|
32
|
+
*/
|
|
33
|
+
excessiveCallThreshold: number;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Time interval in milliseconds to reset the setter call counters
|
|
37
|
+
*
|
|
38
|
+
* @defaultValue 5000
|
|
39
|
+
*/
|
|
40
|
+
resetInterval: number;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Enable animation monitoring and statistics tracking
|
|
44
|
+
*
|
|
45
|
+
* @defaultValue true
|
|
46
|
+
*/
|
|
47
|
+
enableAnimationMonitoring: boolean;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Maximum number of animations to keep in history for statistics
|
|
51
|
+
*
|
|
52
|
+
* @defaultValue 1000
|
|
53
|
+
*/
|
|
54
|
+
maxAnimationHistory: number;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Automatically print animation statistics every X seconds (0 to disable)
|
|
58
|
+
*
|
|
59
|
+
* @defaultValue 0
|
|
60
|
+
*/
|
|
61
|
+
animationStatsInterval: number;
|
|
62
|
+
}
|
|
63
|
+
|
|
12
64
|
/**
|
|
13
65
|
* Inspector
|
|
14
66
|
*
|
|
@@ -48,14 +100,14 @@ const stylePropertyMap: {
|
|
|
48
100
|
y: (y) => {
|
|
49
101
|
return { prop: 'top', value: `${y}px` };
|
|
50
102
|
},
|
|
51
|
-
|
|
103
|
+
w: (w) => {
|
|
52
104
|
if (w === 0) {
|
|
53
105
|
return null;
|
|
54
106
|
}
|
|
55
107
|
|
|
56
108
|
return { prop: 'width', value: `${w}px` };
|
|
57
109
|
},
|
|
58
|
-
|
|
110
|
+
h: (h) => {
|
|
59
111
|
if (h === 0) {
|
|
60
112
|
return null;
|
|
61
113
|
}
|
|
@@ -171,6 +223,51 @@ export class Inspector {
|
|
|
171
223
|
private scaleX = 1;
|
|
172
224
|
private scaleY = 1;
|
|
173
225
|
|
|
226
|
+
// Performance monitoring for frequent setter calls
|
|
227
|
+
private static setterCallCount = new Map<
|
|
228
|
+
string,
|
|
229
|
+
{ count: number; lastReset: number; nodeId: number }
|
|
230
|
+
>();
|
|
231
|
+
|
|
232
|
+
// Animation monitoring structures
|
|
233
|
+
private static activeAnimations = new Map<
|
|
234
|
+
string,
|
|
235
|
+
{
|
|
236
|
+
nodeId: number;
|
|
237
|
+
animationId: string;
|
|
238
|
+
startTime: number;
|
|
239
|
+
props: CoreNodeAnimateProps;
|
|
240
|
+
settings: AnimationSettings;
|
|
241
|
+
controller: IAnimationController;
|
|
242
|
+
state: AnimationControllerState;
|
|
243
|
+
}
|
|
244
|
+
>();
|
|
245
|
+
|
|
246
|
+
private static animationHistory: Array<{
|
|
247
|
+
nodeId: number;
|
|
248
|
+
animationId: string;
|
|
249
|
+
startTime: number;
|
|
250
|
+
endTime: number;
|
|
251
|
+
duration: number;
|
|
252
|
+
actualDuration: number;
|
|
253
|
+
props: CoreNodeAnimateProps;
|
|
254
|
+
settings: AnimationSettings;
|
|
255
|
+
completionType: 'finished' | 'stopped' | 'cancelled';
|
|
256
|
+
}> = [];
|
|
257
|
+
|
|
258
|
+
// Performance monitoring settings (configured via constructor)
|
|
259
|
+
private performanceSettings: InspectorOptions = {
|
|
260
|
+
enablePerformanceMonitoring: false,
|
|
261
|
+
excessiveCallThreshold: 100,
|
|
262
|
+
resetInterval: 5000,
|
|
263
|
+
enableAnimationMonitoring: false,
|
|
264
|
+
maxAnimationHistory: 1000,
|
|
265
|
+
animationStatsInterval: 0,
|
|
266
|
+
};
|
|
267
|
+
|
|
268
|
+
// Animation stats printing timer
|
|
269
|
+
private animationStatsTimer: number | null = null;
|
|
270
|
+
|
|
174
271
|
constructor(canvas: HTMLCanvasElement, settings: RendererMainSettings) {
|
|
175
272
|
if (isProductionEnvironment === true) return;
|
|
176
273
|
|
|
@@ -178,6 +275,21 @@ export class Inspector {
|
|
|
178
275
|
throw new Error('settings is required');
|
|
179
276
|
}
|
|
180
277
|
|
|
278
|
+
// Initialize performance monitoring settings with defaults
|
|
279
|
+
this.performanceSettings = {
|
|
280
|
+
enablePerformanceMonitoring:
|
|
281
|
+
settings.inspectorOptions?.enablePerformanceMonitoring ?? false,
|
|
282
|
+
excessiveCallThreshold:
|
|
283
|
+
settings.inspectorOptions?.excessiveCallThreshold ?? 100,
|
|
284
|
+
resetInterval: settings.inspectorOptions?.resetInterval ?? 5000,
|
|
285
|
+
enableAnimationMonitoring:
|
|
286
|
+
settings.inspectorOptions?.enableAnimationMonitoring ?? false,
|
|
287
|
+
maxAnimationHistory:
|
|
288
|
+
settings.inspectorOptions?.maxAnimationHistory ?? 1000,
|
|
289
|
+
animationStatsInterval:
|
|
290
|
+
settings.inspectorOptions?.animationStatsInterval ?? 0,
|
|
291
|
+
};
|
|
292
|
+
|
|
181
293
|
// calc dimensions based on the devicePixelRatio
|
|
182
294
|
this.height = Math.ceil(
|
|
183
295
|
settings.appHeight ?? 1080 / (settings.deviceLogicalPixelRatio ?? 1),
|
|
@@ -212,9 +324,379 @@ export class Inspector {
|
|
|
212
324
|
//listen for changes on window
|
|
213
325
|
window.addEventListener('resize', this.setRootPosition.bind(this));
|
|
214
326
|
|
|
327
|
+
// Start animation stats timer if enabled
|
|
328
|
+
this.startAnimationStatsTimer();
|
|
329
|
+
|
|
215
330
|
console.warn('Inspector is enabled, this will impact performance');
|
|
216
331
|
}
|
|
217
332
|
|
|
333
|
+
/**
|
|
334
|
+
* Track setter calls for performance monitoring
|
|
335
|
+
* Only active when Inspector is loaded
|
|
336
|
+
*/
|
|
337
|
+
private trackSetterCall(nodeId: number, setterName: string): void {
|
|
338
|
+
if (!this.performanceSettings.enablePerformanceMonitoring) {
|
|
339
|
+
return;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
const key = `${nodeId}_${setterName}`;
|
|
343
|
+
const now = Date.now();
|
|
344
|
+
const existing = Inspector.setterCallCount.get(key);
|
|
345
|
+
|
|
346
|
+
if (!existing) {
|
|
347
|
+
Inspector.setterCallCount.set(key, { count: 1, lastReset: now, nodeId });
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
// Reset counter if enough time has passed
|
|
352
|
+
if (now - existing.lastReset > this.performanceSettings.resetInterval) {
|
|
353
|
+
existing.count = 1;
|
|
354
|
+
existing.lastReset = now;
|
|
355
|
+
return;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
existing.count++;
|
|
359
|
+
|
|
360
|
+
// Log if threshold exceeded
|
|
361
|
+
if (existing.count === this.performanceSettings.excessiveCallThreshold) {
|
|
362
|
+
console.warn(
|
|
363
|
+
`🚨 Inspector Performance Warning: Setter '${setterName}' called ${existing.count} times in ${this.performanceSettings.resetInterval}ms on node ${nodeId}`,
|
|
364
|
+
);
|
|
365
|
+
} else if (
|
|
366
|
+
existing.count > this.performanceSettings.excessiveCallThreshold &&
|
|
367
|
+
existing.count % 50 === 0
|
|
368
|
+
) {
|
|
369
|
+
console.warn(
|
|
370
|
+
`🚨 Inspector Performance Warning: Setter '${setterName}' called ${existing.count} times in ${this.performanceSettings.resetInterval}ms on node ${nodeId} (continuing...)`,
|
|
371
|
+
);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* Get current performance monitoring statistics
|
|
377
|
+
*/
|
|
378
|
+
public static getPerformanceStats(): Array<{
|
|
379
|
+
nodeId: number;
|
|
380
|
+
setterName: string;
|
|
381
|
+
count: number;
|
|
382
|
+
timeWindow: number;
|
|
383
|
+
}> {
|
|
384
|
+
const stats: Array<{
|
|
385
|
+
nodeId: number;
|
|
386
|
+
setterName: string;
|
|
387
|
+
count: number;
|
|
388
|
+
timeWindow: number;
|
|
389
|
+
}> = [];
|
|
390
|
+
const now = Date.now();
|
|
391
|
+
|
|
392
|
+
Inspector.setterCallCount.forEach((data, key) => {
|
|
393
|
+
const parts = key.split('_');
|
|
394
|
+
const nodeIdStr = parts[0];
|
|
395
|
+
const setterName = parts[1];
|
|
396
|
+
|
|
397
|
+
if (nodeIdStr && setterName) {
|
|
398
|
+
const timeWindow = now - data.lastReset;
|
|
399
|
+
|
|
400
|
+
stats.push({
|
|
401
|
+
nodeId: parseInt(nodeIdStr, 10),
|
|
402
|
+
setterName,
|
|
403
|
+
count: data.count,
|
|
404
|
+
timeWindow,
|
|
405
|
+
});
|
|
406
|
+
}
|
|
407
|
+
});
|
|
408
|
+
|
|
409
|
+
return stats.sort((a, b) => b.count - a.count);
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
/**
|
|
413
|
+
* Clear performance monitoring statistics
|
|
414
|
+
*/
|
|
415
|
+
public static clearPerformanceStats(): void {
|
|
416
|
+
Inspector.setterCallCount.clear();
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
/**
|
|
420
|
+
* Generate a unique animation ID
|
|
421
|
+
*/
|
|
422
|
+
private static generateAnimationId(): string {
|
|
423
|
+
return `anim_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
/**
|
|
427
|
+
* Wrap animation controller with monitoring capabilities
|
|
428
|
+
*/
|
|
429
|
+
private wrapAnimationController(
|
|
430
|
+
controller: IAnimationController,
|
|
431
|
+
nodeId: number,
|
|
432
|
+
props: CoreNodeAnimateProps,
|
|
433
|
+
settings: AnimationSettings,
|
|
434
|
+
div: HTMLElement,
|
|
435
|
+
): IAnimationController {
|
|
436
|
+
if (!this.performanceSettings.enableAnimationMonitoring) {
|
|
437
|
+
// Just add the basic DOM animation without tracking
|
|
438
|
+
const originalStart = controller.start.bind(controller);
|
|
439
|
+
controller.start = () => {
|
|
440
|
+
this.animateNode(div, props, settings);
|
|
441
|
+
return originalStart();
|
|
442
|
+
};
|
|
443
|
+
return controller;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
const animationId = Inspector.generateAnimationId();
|
|
447
|
+
|
|
448
|
+
// Create wrapper controller
|
|
449
|
+
const wrappedController: IAnimationController = {
|
|
450
|
+
start: () => {
|
|
451
|
+
this.trackAnimationStart(
|
|
452
|
+
animationId,
|
|
453
|
+
nodeId,
|
|
454
|
+
props,
|
|
455
|
+
settings,
|
|
456
|
+
controller,
|
|
457
|
+
);
|
|
458
|
+
this.animateNode(div, props, settings);
|
|
459
|
+
return controller.start();
|
|
460
|
+
},
|
|
461
|
+
|
|
462
|
+
stop: () => {
|
|
463
|
+
this.trackAnimationEnd(animationId, 'stopped');
|
|
464
|
+
return controller.stop();
|
|
465
|
+
},
|
|
466
|
+
|
|
467
|
+
pause: () => {
|
|
468
|
+
this.updateAnimationState(animationId, 'paused');
|
|
469
|
+
return controller.pause();
|
|
470
|
+
},
|
|
471
|
+
|
|
472
|
+
restore: () => {
|
|
473
|
+
this.trackAnimationEnd(animationId, 'cancelled');
|
|
474
|
+
return controller.restore();
|
|
475
|
+
},
|
|
476
|
+
|
|
477
|
+
waitUntilStopped: () => {
|
|
478
|
+
return controller.waitUntilStopped().then(() => {
|
|
479
|
+
this.trackAnimationEnd(animationId, 'finished');
|
|
480
|
+
});
|
|
481
|
+
},
|
|
482
|
+
|
|
483
|
+
get state() {
|
|
484
|
+
return controller.state;
|
|
485
|
+
},
|
|
486
|
+
|
|
487
|
+
// Event emitter methods
|
|
488
|
+
on: controller.on.bind(controller),
|
|
489
|
+
off: controller.off.bind(controller),
|
|
490
|
+
once: controller.once.bind(controller),
|
|
491
|
+
emit: controller.emit.bind(controller),
|
|
492
|
+
};
|
|
493
|
+
|
|
494
|
+
// Track animation events
|
|
495
|
+
controller.on('animating', () => {
|
|
496
|
+
this.updateAnimationState(animationId, 'running');
|
|
497
|
+
});
|
|
498
|
+
|
|
499
|
+
controller.on('stopped', () => {
|
|
500
|
+
this.trackAnimationEnd(animationId, 'finished');
|
|
501
|
+
});
|
|
502
|
+
|
|
503
|
+
return wrappedController;
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
/**
|
|
507
|
+
* Track animation start
|
|
508
|
+
*/
|
|
509
|
+
private trackAnimationStart(
|
|
510
|
+
animationId: string,
|
|
511
|
+
nodeId: number,
|
|
512
|
+
props: CoreNodeAnimateProps,
|
|
513
|
+
settings: AnimationSettings,
|
|
514
|
+
controller: IAnimationController,
|
|
515
|
+
): void {
|
|
516
|
+
const startTime = Date.now();
|
|
517
|
+
|
|
518
|
+
Inspector.activeAnimations.set(animationId, {
|
|
519
|
+
nodeId,
|
|
520
|
+
animationId,
|
|
521
|
+
startTime,
|
|
522
|
+
props,
|
|
523
|
+
settings,
|
|
524
|
+
controller,
|
|
525
|
+
state: 'scheduled',
|
|
526
|
+
});
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
/**
|
|
530
|
+
* Update animation state
|
|
531
|
+
*/
|
|
532
|
+
private updateAnimationState(
|
|
533
|
+
animationId: string,
|
|
534
|
+
state: AnimationControllerState,
|
|
535
|
+
): void {
|
|
536
|
+
const animation = Inspector.activeAnimations.get(animationId);
|
|
537
|
+
if (animation) {
|
|
538
|
+
animation.state = state;
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
/**
|
|
543
|
+
* Track animation end
|
|
544
|
+
*/
|
|
545
|
+
private trackAnimationEnd(
|
|
546
|
+
animationId: string,
|
|
547
|
+
completionType: 'finished' | 'stopped' | 'cancelled',
|
|
548
|
+
): void {
|
|
549
|
+
const animation = Inspector.activeAnimations.get(animationId);
|
|
550
|
+
if (!animation) return;
|
|
551
|
+
|
|
552
|
+
const endTime = Date.now();
|
|
553
|
+
const actualDuration = endTime - animation.startTime;
|
|
554
|
+
const expectedDuration = animation.settings.duration || 1000;
|
|
555
|
+
|
|
556
|
+
// Move to history
|
|
557
|
+
Inspector.animationHistory.unshift({
|
|
558
|
+
nodeId: animation.nodeId,
|
|
559
|
+
animationId: animation.animationId,
|
|
560
|
+
startTime: animation.startTime,
|
|
561
|
+
endTime,
|
|
562
|
+
duration: expectedDuration,
|
|
563
|
+
actualDuration,
|
|
564
|
+
props: animation.props,
|
|
565
|
+
settings: animation.settings,
|
|
566
|
+
completionType,
|
|
567
|
+
});
|
|
568
|
+
|
|
569
|
+
// Limit history size for performance
|
|
570
|
+
if (
|
|
571
|
+
Inspector.animationHistory.length >
|
|
572
|
+
this.performanceSettings.maxAnimationHistory
|
|
573
|
+
) {
|
|
574
|
+
Inspector.animationHistory.splice(
|
|
575
|
+
this.performanceSettings.maxAnimationHistory,
|
|
576
|
+
);
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
// Remove from active animations
|
|
580
|
+
Inspector.activeAnimations.delete(animationId);
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
/**
|
|
584
|
+
* Get currently active animations
|
|
585
|
+
*/
|
|
586
|
+
public static getActiveAnimations(): Array<{
|
|
587
|
+
nodeId: number;
|
|
588
|
+
animationId: string;
|
|
589
|
+
startTime: number;
|
|
590
|
+
duration: number;
|
|
591
|
+
elapsedTime: number;
|
|
592
|
+
props: CoreNodeAnimateProps;
|
|
593
|
+
settings: AnimationSettings;
|
|
594
|
+
state: AnimationControllerState;
|
|
595
|
+
}> {
|
|
596
|
+
const now = Date.now();
|
|
597
|
+
const activeAnimations: Array<{
|
|
598
|
+
nodeId: number;
|
|
599
|
+
animationId: string;
|
|
600
|
+
startTime: number;
|
|
601
|
+
duration: number;
|
|
602
|
+
elapsedTime: number;
|
|
603
|
+
props: CoreNodeAnimateProps;
|
|
604
|
+
settings: AnimationSettings;
|
|
605
|
+
state: AnimationControllerState;
|
|
606
|
+
}> = [];
|
|
607
|
+
|
|
608
|
+
Inspector.activeAnimations.forEach((animation) => {
|
|
609
|
+
activeAnimations.push({
|
|
610
|
+
nodeId: animation.nodeId,
|
|
611
|
+
animationId: animation.animationId,
|
|
612
|
+
startTime: animation.startTime,
|
|
613
|
+
duration: animation.settings.duration || 1000,
|
|
614
|
+
elapsedTime: now - animation.startTime,
|
|
615
|
+
props: animation.props,
|
|
616
|
+
settings: animation.settings,
|
|
617
|
+
state: animation.state,
|
|
618
|
+
});
|
|
619
|
+
});
|
|
620
|
+
|
|
621
|
+
return activeAnimations.sort((a, b) => b.startTime - a.startTime);
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
/**
|
|
625
|
+
* Get animation statistics
|
|
626
|
+
*/
|
|
627
|
+
public static getAnimationStats(): {
|
|
628
|
+
totalAnimations: number;
|
|
629
|
+
activeCount: number;
|
|
630
|
+
averageDuration: number;
|
|
631
|
+
} {
|
|
632
|
+
const totalAnimations = Inspector.animationHistory.length;
|
|
633
|
+
const activeCount = Inspector.activeAnimations.size;
|
|
634
|
+
|
|
635
|
+
// Calculate average duration from finished animations only
|
|
636
|
+
const finishedAnimations = Inspector.animationHistory.filter(
|
|
637
|
+
(anim) => anim.completionType === 'finished',
|
|
638
|
+
);
|
|
639
|
+
|
|
640
|
+
const averageDuration =
|
|
641
|
+
finishedAnimations.length > 0
|
|
642
|
+
? finishedAnimations.reduce(
|
|
643
|
+
(sum, anim) => sum + anim.actualDuration,
|
|
644
|
+
0,
|
|
645
|
+
) / finishedAnimations.length
|
|
646
|
+
: 0;
|
|
647
|
+
|
|
648
|
+
return {
|
|
649
|
+
totalAnimations,
|
|
650
|
+
activeCount,
|
|
651
|
+
averageDuration,
|
|
652
|
+
};
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
/**
|
|
656
|
+
* Clear animation monitoring data
|
|
657
|
+
*/
|
|
658
|
+
public static clearAnimationStats(): void {
|
|
659
|
+
Inspector.activeAnimations.clear();
|
|
660
|
+
Inspector.animationHistory.length = 0;
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
/**
|
|
664
|
+
* Start the animation stats timer if enabled
|
|
665
|
+
*/
|
|
666
|
+
private startAnimationStatsTimer(): void {
|
|
667
|
+
console.log(
|
|
668
|
+
`Starting animation stats timer with interval: ${this.performanceSettings.animationStatsInterval} seconds`,
|
|
669
|
+
);
|
|
670
|
+
|
|
671
|
+
if (this.performanceSettings.animationStatsInterval > 0) {
|
|
672
|
+
this.animationStatsTimer = setInterval(() => {
|
|
673
|
+
this.printAnimationStats();
|
|
674
|
+
}, this.performanceSettings.animationStatsInterval * 1000) as unknown as number;
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
/**
|
|
679
|
+
* Stop the animation stats timer
|
|
680
|
+
*/
|
|
681
|
+
private stopAnimationStatsTimer(): void {
|
|
682
|
+
if (this.animationStatsTimer) {
|
|
683
|
+
clearInterval(this.animationStatsTimer);
|
|
684
|
+
this.animationStatsTimer = null;
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
/**
|
|
689
|
+
* Print current animation statistics to console
|
|
690
|
+
*/
|
|
691
|
+
private printAnimationStats(): void {
|
|
692
|
+
const stats = Inspector.getAnimationStats();
|
|
693
|
+
|
|
694
|
+
console.log(
|
|
695
|
+
`🎬 Animation Stats: ${stats.activeCount} active, ${
|
|
696
|
+
stats.totalAnimations
|
|
697
|
+
} completed, ${Math.round(stats.averageDuration)}ms avg duration`,
|
|
698
|
+
);
|
|
699
|
+
}
|
|
218
700
|
setRootPosition() {
|
|
219
701
|
if (this.root === null || this.canvas === null) {
|
|
220
702
|
return;
|
|
@@ -322,6 +804,9 @@ export class Inspector {
|
|
|
322
804
|
return originalProp?.get?.call(node);
|
|
323
805
|
},
|
|
324
806
|
set: (value) => {
|
|
807
|
+
// Track setter call for performance monitoring
|
|
808
|
+
this.trackSetterCall(node.id, property);
|
|
809
|
+
|
|
325
810
|
originalProp?.set?.call(node, value);
|
|
326
811
|
this.updateNodeProperty(
|
|
327
812
|
div,
|
|
@@ -352,15 +837,14 @@ export class Inspector {
|
|
|
352
837
|
): IAnimationController => {
|
|
353
838
|
const animationController = originalAnimate.call(node, props, settings);
|
|
354
839
|
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
return animationController;
|
|
840
|
+
// Wrap animation controller with monitoring
|
|
841
|
+
return this.wrapAnimationController(
|
|
842
|
+
animationController,
|
|
843
|
+
node.id,
|
|
844
|
+
props,
|
|
845
|
+
settings,
|
|
846
|
+
div,
|
|
847
|
+
);
|
|
364
848
|
},
|
|
365
849
|
configurable: true,
|
|
366
850
|
});
|
|
@@ -369,6 +853,9 @@ export class Inspector {
|
|
|
369
853
|
}
|
|
370
854
|
|
|
371
855
|
public destroy() {
|
|
856
|
+
// Stop animation stats timer
|
|
857
|
+
this.stopAnimationStatsTimer();
|
|
858
|
+
|
|
372
859
|
// Remove DOM observers
|
|
373
860
|
this.mutationObserver.disconnect();
|
|
374
861
|
this.resizeObserver.disconnect();
|
|
@@ -378,6 +865,9 @@ export class Inspector {
|
|
|
378
865
|
if (this.root && this.root.parentNode) {
|
|
379
866
|
this.root.remove();
|
|
380
867
|
}
|
|
868
|
+
|
|
869
|
+
// Clean up animation monitoring data
|
|
870
|
+
Inspector.clearAnimationStats();
|
|
381
871
|
}
|
|
382
872
|
|
|
383
873
|
destroyNode(id: number) {
|