@lightningtv/renderer 3.0.0-beta1 → 3.2.3
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/NOTICE +4 -0
- package/README.md +22 -28
- package/dist/exports/canvas-shaders.js +0 -16
- package/dist/exports/canvas-shaders.js.map +1 -1
- package/dist/exports/canvas.d.ts +1 -1
- package/dist/exports/canvas.js +1 -19
- package/dist/exports/canvas.js.map +1 -1
- package/dist/exports/index.d.ts +2 -5
- package/dist/exports/index.js +1 -23
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/inspector.js +0 -18
- package/dist/exports/inspector.js.map +1 -1
- package/dist/exports/utils.d.ts +2 -1
- package/dist/exports/utils.js +2 -19
- package/dist/exports/utils.js.map +1 -1
- package/dist/exports/webgl-shaders.js +0 -16
- package/dist/exports/webgl-shaders.js.map +1 -1
- package/dist/exports/webgl.d.ts +2 -1
- package/dist/exports/webgl.js +2 -19
- package/dist/exports/webgl.js.map +1 -1
- package/dist/src/common/CommonTypes.d.ts +15 -3
- package/dist/src/common/CommonTypes.js +0 -18
- package/dist/src/common/CommonTypes.js.map +1 -1
- package/dist/src/common/EventEmitter.js +0 -18
- package/dist/src/common/EventEmitter.js.map +1 -1
- package/dist/src/common/IEventEmitter.js +0 -16
- package/dist/src/common/IEventEmitter.js.map +1 -1
- package/dist/src/core/Autosizer.d.ts +35 -0
- package/dist/src/core/Autosizer.js +178 -0
- package/dist/src/core/Autosizer.js.map +1 -0
- package/dist/src/core/CoreNode.d.ts +140 -102
- package/dist/src/core/CoreNode.js +812 -528
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.d.ts +3 -3
- package/dist/src/core/CoreShaderManager.js +0 -18
- package/dist/src/core/CoreShaderManager.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +75 -87
- package/dist/src/core/CoreTextNode.js +380 -258
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +25 -14
- package/dist/src/core/CoreTextureManager.js +82 -139
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +102 -36
- package/dist/src/core/Stage.js +424 -191
- 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/TextureMemoryManager.d.ts +11 -4
- package/dist/src/core/TextureMemoryManager.js +114 -134
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/animations/AnimationManager.js +0 -18
- package/dist/src/core/animations/AnimationManager.js.map +1 -1
- package/dist/src/core/animations/CoreAnimation.d.ts +3 -3
- package/dist/src/core/animations/CoreAnimation.js +8 -24
- package/dist/src/core/animations/CoreAnimation.js.map +1 -1
- package/dist/src/core/animations/CoreAnimationController.d.ts +1 -0
- package/dist/src/core/animations/CoreAnimationController.js +11 -22
- package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
- package/dist/src/core/lib/ContextSpy.js +0 -18
- package/dist/src/core/lib/ContextSpy.js.map +1 -1
- package/dist/src/core/lib/ImageWorker.d.ts +2 -2
- package/dist/src/core/lib/ImageWorker.js +33 -31
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/Matrix3d.d.ts +1 -0
- package/dist/src/core/lib/Matrix3d.js +7 -19
- package/dist/src/core/lib/Matrix3d.js.map +1 -1
- package/dist/src/core/lib/RenderCoords.d.ts +9 -10
- package/dist/src/core/lib/RenderCoords.js +27 -55
- package/dist/src/core/lib/RenderCoords.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +83 -8
- package/dist/src/core/lib/WebGlContextWrapper.js +150 -25
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/lib/collectionUtils.d.ts +5 -0
- package/dist/src/core/lib/collectionUtils.js +82 -0
- package/dist/src/core/lib/collectionUtils.js.map +1 -0
- package/dist/src/core/lib/colorCache.d.ts +1 -0
- package/dist/src/core/lib/colorCache.js +19 -0
- package/dist/src/core/lib/colorCache.js.map +1 -0
- package/dist/src/core/{renderers/canvas/internal/ColorUtils.js → lib/colorParser.js} +1 -19
- package/dist/src/core/lib/colorParser.js.map +1 -0
- package/dist/src/core/lib/textureCompression.d.ts +14 -2
- package/dist/src/core/lib/textureCompression.js +320 -85
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/lib/textureSvg.js +0 -18
- package/dist/src/core/lib/textureSvg.js.map +1 -1
- package/dist/src/core/lib/utils.d.ts +8 -1
- package/dist/src/core/lib/utils.js +44 -20
- package/dist/src/core/lib/utils.js.map +1 -1
- package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
- package/dist/src/core/lib/validateImageBitmap.js +4 -4
- package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
- package/dist/src/core/platforms/Platform.d.ts +42 -0
- package/dist/src/core/platforms/Platform.js +4 -0
- package/dist/src/core/platforms/Platform.js.map +1 -0
- package/dist/src/core/platforms/web/WebPlatform.d.ts +10 -0
- package/dist/src/core/platforms/web/WebPlatform.js +90 -0
- package/dist/src/core/platforms/web/WebPlatform.js.map +1 -0
- package/dist/src/core/renderers/CoreContextTexture.d.ts +2 -1
- package/dist/src/core/renderers/CoreContextTexture.js +0 -18
- package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderOp.js +0 -18
- package/dist/src/core/renderers/CoreRenderOp.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +15 -3
- package/dist/src/core/renderers/CoreRenderer.js +1 -18
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderNode.d.ts +13 -3
- package/dist/src/core/renderers/CoreShaderNode.js +25 -2
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderProgram.js +0 -18
- package/dist/src/core/renderers/CoreShaderProgram.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +4 -5
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +89 -83
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +3 -21
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +3 -2
- package/dist/src/core/renderers/canvas/CanvasTexture.js +18 -31
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/SdfRenderOp.d.ts +33 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.js +80 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +2 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +14 -24
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +13 -0
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +34 -23
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +16 -6
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +102 -70
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +34 -20
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +319 -195
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +2 -3
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js +1 -4
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +9 -7
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +99 -48
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/BufferCollection.d.ts +1 -0
- package/dist/src/core/renderers/webgl/internal/BufferCollection.js +12 -21
- package/dist/src/core/renderers/webgl/internal/BufferCollection.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js +0 -18
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +0 -18
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/WebGlUtils.js +0 -18
- package/dist/src/core/renderers/webgl/internal/WebGlUtils.js.map +1 -1
- package/dist/src/core/shaders/canvas/Border.d.ts +8 -2
- package/dist/src/core/shaders/canvas/Border.js +67 -41
- package/dist/src/core/shaders/canvas/Border.js.map +1 -1
- package/dist/src/core/shaders/canvas/HolePunch.js +3 -19
- package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/canvas/LinearGradient.js +7 -21
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RadialGradient.js +14 -28
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/Rounded.js +1 -17
- package/dist/src/core/shaders/canvas/Rounded.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +6 -3
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js +44 -22
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +2 -3
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +47 -25
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +9 -21
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/Shadow.js +0 -16
- package/dist/src/core/shaders/canvas/Shadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/utils/render.d.ts +1 -1
- package/dist/src/core/shaders/canvas/utils/render.js +31 -34
- package/dist/src/core/shaders/canvas/utils/render.js.map +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.d.ts +12 -2
- package/dist/src/core/shaders/templates/BorderTemplate.js +31 -27
- package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +2 -2
- package/dist/src/core/shaders/templates/HolePunchTemplate.js +3 -19
- package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js +0 -16
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +8 -6
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js +2 -18
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedTemplate.js +1 -17
- package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +0 -16
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +4 -2
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +3 -17
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +0 -16
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/ShadowTemplate.js +0 -16
- package/dist/src/core/shaders/templates/ShadowTemplate.js.map +1 -1
- package/dist/src/core/shaders/{templates/shaderUtils.d.ts → utils.d.ts} +1 -1
- package/dist/src/core/shaders/utils.js +25 -0
- package/dist/src/core/shaders/utils.js.map +1 -0
- package/dist/src/core/shaders/webgl/Border.js +118 -51
- package/dist/src/core/shaders/webgl/Border.js.map +1 -1
- package/dist/src/core/shaders/webgl/Default.js +6 -41
- package/dist/src/core/shaders/webgl/Default.js.map +1 -1
- package/dist/src/core/shaders/webgl/HolePunch.js +4 -19
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/webgl/LinearGradient.js +73 -34
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RadialGradient.js +56 -48
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/Rounded.js +25 -23
- package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +160 -55
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +168 -58
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +73 -34
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -2
- package/dist/src/core/shaders/webgl/SdfShader.js +8 -36
- package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
- package/dist/src/core/shaders/webgl/Shadow.js +39 -34
- package/dist/src/core/shaders/webgl/Shadow.js.map +1 -1
- package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +59 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js +206 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +17 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js +139 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/SdfFontHandler.d.ts +167 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js +371 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +18 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js +301 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +18 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.js +380 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
- package/dist/src/core/text-rendering/TextRenderer.d.ts +384 -0
- package/dist/src/core/text-rendering/TextRenderer.js +2 -0
- package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/Utils.d.ts +30 -0
- package/dist/src/core/text-rendering/Utils.js +66 -0
- package/dist/src/core/text-rendering/Utils.js.map +1 -0
- package/dist/src/core/textures/ColorTexture.d.ts +1 -1
- package/dist/src/core/textures/ColorTexture.js +3 -22
- package/dist/src/core/textures/ColorTexture.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +13 -6
- package/dist/src/core/textures/ImageTexture.js +57 -66
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/NoiseTexture.d.ts +3 -3
- package/dist/src/core/textures/NoiseTexture.js +8 -26
- package/dist/src/core/textures/NoiseTexture.js.map +1 -1
- package/dist/src/core/textures/RenderTexture.d.ts +7 -7
- package/dist/src/core/textures/RenderTexture.js +12 -30
- package/dist/src/core/textures/RenderTexture.js.map +1 -1
- package/dist/src/core/textures/SubTexture.d.ts +6 -8
- package/dist/src/core/textures/SubTexture.js +19 -55
- package/dist/src/core/textures/SubTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +90 -12
- package/dist/src/core/textures/Texture.js +160 -35
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/core/utils.d.ts +2 -1
- package/dist/src/core/utils.js +1 -19
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/main-api/INode.js.map +1 -1
- package/dist/src/main-api/Inspector.d.ts +135 -2
- package/dist/src/main-api/Inspector.js +507 -30
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +294 -81
- package/dist/src/main-api/Renderer.js +225 -96
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/utils.d.ts +19 -6
- package/dist/src/utils.js +32 -27
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/exports/canvas-shaders.ts +0 -17
- package/exports/canvas.ts +1 -19
- package/exports/index.ts +6 -27
- package/exports/inspector.ts +0 -19
- package/exports/utils.ts +7 -19
- package/exports/webgl-shaders.ts +0 -16
- package/exports/webgl.ts +3 -20
- package/package.json +23 -22
- package/src/common/CommonTypes.ts +20 -22
- package/src/common/EventEmitter.ts +0 -19
- package/src/common/IAnimationController.ts +0 -18
- package/src/common/IEventEmitter.ts +0 -17
- package/src/core/Autosizer.ts +205 -0
- package/src/core/CoreNode.test.ts +376 -45
- package/src/core/CoreNode.ts +1015 -656
- package/src/core/CoreShaderManager.ts +3 -21
- package/src/core/CoreTextNode.ts +457 -314
- package/src/core/CoreTextureManager.ts +110 -167
- package/src/core/Stage.ts +526 -236
- package/src/core/TextureError.ts +46 -0
- package/src/core/TextureMemoryManager.ts +150 -167
- package/src/core/animations/AnimationManager.ts +0 -19
- package/src/core/animations/CoreAnimation.ts +15 -32
- package/src/core/animations/CoreAnimationController.ts +13 -23
- package/src/core/lib/ContextSpy.ts +0 -19
- package/src/core/lib/ImageWorker.ts +45 -32
- package/src/core/lib/Matrix3d.ts +7 -20
- package/src/core/lib/RenderCoords.ts +36 -67
- package/src/core/lib/WebGlContextWrapper.ts +196 -72
- package/src/core/lib/collectionUtils.ts +99 -0
- package/src/core/lib/colorCache.ts +20 -0
- package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +2 -21
- package/src/core/lib/textureCompression.ts +433 -93
- package/src/core/lib/textureSvg.ts +0 -19
- package/src/core/lib/utils.ts +58 -19
- package/src/core/lib/validateImageBitmap.ts +17 -6
- package/src/core/platforms/Platform.ts +64 -0
- package/src/core/platforms/web/WebPlatform.ts +132 -0
- package/src/core/renderers/CoreContextTexture.ts +2 -20
- package/src/core/renderers/CoreRenderOp.ts +0 -19
- package/src/core/renderers/CoreRenderer.ts +16 -23
- package/src/core/renderers/CoreShaderNode.ts +37 -6
- package/src/core/renderers/CoreShaderProgram.ts +0 -19
- package/src/core/renderers/canvas/CanvasRenderer.ts +108 -137
- package/src/core/renderers/canvas/CanvasShaderNode.ts +3 -23
- package/src/core/renderers/canvas/CanvasTexture.ts +25 -37
- package/src/core/renderers/webgl/SdfRenderOp.ts +88 -0
- package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +18 -34
- package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +50 -24
- package/src/core/renderers/webgl/WebGlCtxTexture.ts +134 -103
- package/src/core/renderers/webgl/WebGlRenderer.ts +368 -233
- package/src/core/renderers/webgl/WebGlShaderNode.ts +4 -7
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +122 -76
- package/src/core/renderers/webgl/internal/BufferCollection.ts +15 -23
- package/src/core/renderers/webgl/internal/RendererUtils.ts +0 -19
- package/src/core/renderers/webgl/internal/ShaderUtils.ts +0 -19
- package/src/core/renderers/webgl/internal/WebGlUtils.ts +0 -19
- package/src/core/shaders/canvas/Border.ts +91 -50
- package/src/core/shaders/canvas/HolePunch.ts +4 -28
- package/src/core/shaders/canvas/LinearGradient.ts +10 -25
- package/src/core/shaders/canvas/RadialGradient.ts +23 -54
- package/src/core/shaders/canvas/Rounded.ts +2 -19
- package/src/core/shaders/canvas/RoundedWithBorder.ts +72 -35
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +77 -47
- package/src/core/shaders/canvas/RoundedWithShadow.ts +21 -34
- package/src/core/shaders/canvas/Shadow.ts +0 -17
- package/src/core/shaders/canvas/utils/render.ts +45 -53
- package/src/core/shaders/templates/BorderTemplate.ts +42 -29
- package/src/core/shaders/templates/HolePunchTemplate.ts +5 -22
- package/src/core/shaders/templates/LinearGradientTemplate.ts +0 -17
- package/src/core/shaders/templates/RadialGradientTemplate.ts +10 -25
- package/src/core/shaders/templates/RoundedTemplate.ts +1 -18
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +1 -18
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +7 -19
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +1 -18
- package/src/core/shaders/templates/ShadowTemplate.ts +1 -18
- package/src/core/shaders/utils.ts +30 -0
- package/src/core/shaders/webgl/Border.ts +118 -55
- package/src/core/shaders/webgl/Default.ts +6 -43
- package/src/core/shaders/webgl/HolePunch.ts +4 -24
- package/src/core/shaders/webgl/LinearGradient.ts +73 -35
- package/src/core/shaders/webgl/RadialGradient.ts +58 -51
- package/src/core/shaders/webgl/Rounded.ts +25 -45
- package/src/core/shaders/webgl/RoundedWithBorder.ts +161 -63
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +169 -68
- package/src/core/shaders/webgl/RoundedWithShadow.ts +73 -39
- package/src/core/shaders/webgl/SdfShader.ts +8 -41
- package/src/core/shaders/webgl/Shadow.ts +39 -35
- package/src/core/text-rendering/CanvasFontHandler.ts +285 -0
- package/src/core/text-rendering/CanvasTextRenderer.ts +236 -0
- package/src/core/text-rendering/SdfFontHandler.ts +566 -0
- package/src/core/text-rendering/SdfTextRenderer.ts +406 -0
- package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
- package/src/core/text-rendering/TextRenderer.ts +426 -0
- package/src/core/text-rendering/Utils.ts +80 -0
- package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +434 -0
- package/src/core/textures/ColorTexture.ts +7 -24
- package/src/core/textures/ImageTexture.ts +110 -92
- package/src/core/textures/NoiseTexture.ts +14 -31
- package/src/core/textures/RenderTexture.ts +18 -35
- package/src/core/textures/SubTexture.ts +25 -65
- package/src/core/textures/Texture.ts +214 -46
- package/src/core/utils.ts +9 -26
- package/src/main-api/INode.ts +0 -18
- package/src/main-api/Inspector.ts +794 -38
- package/src/main-api/Renderer.ts +519 -159
- package/src/utils.ts +64 -29
- package/dist/src/core/platform.d.ts +0 -10
- package/dist/src/core/platform.js +0 -56
- package/dist/src/core/platform.js.map +0 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +0 -217
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +0 -1
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +0 -36
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +0 -107
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +0 -1
- package/dist/src/core/shaders/templates/shaderUtils.js +0 -41
- package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
- package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +0 -12
- package/dist/src/core/text-rendering/TextRenderingUtils.js +0 -14
- package/dist/src/core/text-rendering/TextRenderingUtils.js.map +0 -1
- package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +0 -72
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js +0 -217
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +0 -1
- package/dist/src/core/text-rendering/TrFontManager.d.ts +0 -26
- package/dist/src/core/text-rendering/TrFontManager.js +0 -131
- package/dist/src/core/text-rendering/TrFontManager.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +0 -39
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +0 -125
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +0 -103
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +0 -21
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +0 -62
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +0 -88
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +0 -118
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +0 -63
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +0 -14
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +0 -66
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/utils.d.ts +0 -1
- package/dist/src/core/text-rendering/font-face-types/utils.js +0 -38
- package/dist/src/core/text-rendering/font-face-types/utils.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +0 -59
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +0 -397
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -126
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +0 -551
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +0 -91
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -611
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +0 -12
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +0 -61
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +0 -33
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +0 -52
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +0 -13
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +0 -32
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +0 -23
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +0 -84
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +0 -4
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +0 -34
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +0 -20
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +0 -308
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +0 -10
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +0 -40
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +0 -26
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +0 -70
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +0 -16
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js +0 -39
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +0 -370
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -178
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +0 -1
- package/scripts/please-use-pnpm.js +0 -13
- package/src/core/platform.ts +0 -64
- package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -220
- package/src/core/renderers/webgl/WebGlRenderOp.ts +0 -145
- package/src/core/shaders/templates/shaderUtils.ts +0 -47
- package/src/core/shaders/webgl/DefaultBatched.ts +0 -129
- package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
- package/src/core/text-rendering/TextTextureRendererUtils.ts +0 -263
- package/src/core/text-rendering/TrFontManager.ts +0 -183
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
- package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
- package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
- package/src/core/text-rendering/font-face-types/utils.ts +0 -39
- package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -509
- package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -815
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -841
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +0 -48
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +0 -66
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +0 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +0 -32
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +0 -117
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +0 -133
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +0 -38
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +0 -408
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +0 -49
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +0 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +0 -205
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +0 -93
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +0 -40
- package/src/core/text-rendering/renderers/TextRenderer.ts +0 -550
- /package/dist/src/core/{renderers/canvas/internal/ColorUtils.d.ts → lib/colorParser.d.ts} +0 -0
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { CoreNode, } from '../core/CoreNode.js';
|
|
2
2
|
import {} from './Renderer.js';
|
|
3
3
|
import { isProductionEnvironment } from '../utils.js';
|
|
4
|
+
import { CoreTextNode } from '../core/CoreTextNode.js';
|
|
5
|
+
import { TextureType } from '../core/textures/Texture.js';
|
|
4
6
|
const stylePropertyMap = {
|
|
5
7
|
alpha: (v) => {
|
|
6
8
|
if (v === 1) {
|
|
@@ -14,15 +16,15 @@ const stylePropertyMap = {
|
|
|
14
16
|
y: (y) => {
|
|
15
17
|
return { prop: 'top', value: `${y}px` };
|
|
16
18
|
},
|
|
17
|
-
|
|
19
|
+
w: (w) => {
|
|
18
20
|
if (w === 0) {
|
|
19
|
-
return
|
|
21
|
+
return { prop: 'width', value: 'auto' };
|
|
20
22
|
}
|
|
21
23
|
return { prop: 'width', value: `${w}px` };
|
|
22
24
|
},
|
|
23
|
-
|
|
25
|
+
h: (h) => {
|
|
24
26
|
if (h === 0) {
|
|
25
|
-
return
|
|
27
|
+
return { prop: 'height', value: 'auto' };
|
|
26
28
|
}
|
|
27
29
|
return { prop: 'height', value: `${h}px` };
|
|
28
30
|
},
|
|
@@ -41,8 +43,6 @@ const stylePropertyMap = {
|
|
|
41
43
|
zIndex: () => 'z-index',
|
|
42
44
|
fontFamily: () => 'font-family',
|
|
43
45
|
fontStyle: () => 'font-style',
|
|
44
|
-
fontWeight: () => 'font-weight',
|
|
45
|
-
fontStretch: () => 'font-stretch',
|
|
46
46
|
letterSpacing: () => 'letter-spacing',
|
|
47
47
|
textAlign: () => 'text-align',
|
|
48
48
|
overflowSuffix: () => 'overflow-suffix',
|
|
@@ -106,6 +106,14 @@ const gradientColorPropertyMap = [
|
|
|
106
106
|
'colorBl',
|
|
107
107
|
'colorBr',
|
|
108
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
|
+
};
|
|
109
117
|
const knownProperties = new Set([
|
|
110
118
|
...Object.keys(stylePropertyMap),
|
|
111
119
|
...Object.keys(domPropertyMap),
|
|
@@ -113,20 +121,49 @@ const knownProperties = new Set([
|
|
|
113
121
|
'src',
|
|
114
122
|
'parent',
|
|
115
123
|
'data',
|
|
124
|
+
'text',
|
|
116
125
|
]);
|
|
117
126
|
export class Inspector {
|
|
118
127
|
root = null;
|
|
119
128
|
canvas = null;
|
|
129
|
+
mutationObserver = new MutationObserver(() => { });
|
|
130
|
+
resizeObserver = new ResizeObserver(() => { });
|
|
120
131
|
height = 1080;
|
|
121
132
|
width = 1920;
|
|
122
133
|
scaleX = 1;
|
|
123
134
|
scaleY = 1;
|
|
135
|
+
textureMetrics = new Map();
|
|
136
|
+
// Performance monitoring for frequent setter calls
|
|
137
|
+
static setterCallCount = new Map();
|
|
138
|
+
// Animation monitoring structures
|
|
139
|
+
static activeAnimations = new Map();
|
|
140
|
+
static animationHistory = [];
|
|
141
|
+
// Performance monitoring settings (configured via constructor)
|
|
142
|
+
performanceSettings = {
|
|
143
|
+
enablePerformanceMonitoring: false,
|
|
144
|
+
excessiveCallThreshold: 100,
|
|
145
|
+
resetInterval: 5000,
|
|
146
|
+
enableAnimationMonitoring: false,
|
|
147
|
+
maxAnimationHistory: 1000,
|
|
148
|
+
animationStatsInterval: 0,
|
|
149
|
+
};
|
|
150
|
+
// Animation stats printing timer
|
|
151
|
+
animationStatsTimer = null;
|
|
124
152
|
constructor(canvas, settings) {
|
|
125
|
-
if (isProductionEnvironment
|
|
153
|
+
if (isProductionEnvironment === true)
|
|
126
154
|
return;
|
|
127
155
|
if (!settings) {
|
|
128
156
|
throw new Error('settings is required');
|
|
129
157
|
}
|
|
158
|
+
// Initialize performance monitoring settings with defaults
|
|
159
|
+
this.performanceSettings = {
|
|
160
|
+
enablePerformanceMonitoring: settings.inspectorOptions?.enablePerformanceMonitoring ?? false,
|
|
161
|
+
excessiveCallThreshold: settings.inspectorOptions?.excessiveCallThreshold ?? 100,
|
|
162
|
+
resetInterval: settings.inspectorOptions?.resetInterval ?? 5000,
|
|
163
|
+
enableAnimationMonitoring: settings.inspectorOptions?.enableAnimationMonitoring ?? false,
|
|
164
|
+
maxAnimationHistory: settings.inspectorOptions?.maxAnimationHistory ?? 1000,
|
|
165
|
+
animationStatsInterval: settings.inspectorOptions?.animationStatsInterval ?? 0,
|
|
166
|
+
};
|
|
130
167
|
// calc dimensions based on the devicePixelRatio
|
|
131
168
|
this.height = Math.ceil(settings.appHeight ?? 1080 / (settings.deviceLogicalPixelRatio ?? 1));
|
|
132
169
|
this.width = Math.ceil(settings.appWidth ?? 1920 / (settings.deviceLogicalPixelRatio ?? 1));
|
|
@@ -137,19 +174,267 @@ export class Inspector {
|
|
|
137
174
|
this.setRootPosition();
|
|
138
175
|
document.body.appendChild(this.root);
|
|
139
176
|
//listen for changes on canvas
|
|
140
|
-
|
|
141
|
-
mutationObserver.observe(canvas, {
|
|
177
|
+
this.mutationObserver = new MutationObserver(this.setRootPosition.bind(this));
|
|
178
|
+
this.mutationObserver.observe(canvas, {
|
|
142
179
|
attributes: true,
|
|
143
180
|
childList: false,
|
|
144
181
|
subtree: false,
|
|
145
182
|
});
|
|
146
183
|
// Create a ResizeObserver to watch for changes in the element's size
|
|
147
|
-
|
|
148
|
-
resizeObserver.observe(canvas);
|
|
184
|
+
this.resizeObserver = new ResizeObserver(this.setRootPosition.bind(this));
|
|
185
|
+
this.resizeObserver.observe(canvas);
|
|
149
186
|
//listen for changes on window
|
|
150
187
|
window.addEventListener('resize', this.setRootPosition.bind(this));
|
|
188
|
+
// Start animation stats timer if enabled
|
|
189
|
+
this.startAnimationStatsTimer();
|
|
151
190
|
console.warn('Inspector is enabled, this will impact performance');
|
|
152
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* Track setter calls for performance monitoring
|
|
194
|
+
* Only active when Inspector is loaded
|
|
195
|
+
*/
|
|
196
|
+
trackSetterCall(nodeId, setterName) {
|
|
197
|
+
if (!this.performanceSettings.enablePerformanceMonitoring) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
const key = `${nodeId}_${setterName}`;
|
|
201
|
+
const now = Date.now();
|
|
202
|
+
const existing = Inspector.setterCallCount.get(key);
|
|
203
|
+
if (!existing) {
|
|
204
|
+
Inspector.setterCallCount.set(key, { count: 1, lastReset: now, nodeId });
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
// Reset counter if enough time has passed
|
|
208
|
+
if (now - existing.lastReset > this.performanceSettings.resetInterval) {
|
|
209
|
+
existing.count = 1;
|
|
210
|
+
existing.lastReset = now;
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
existing.count++;
|
|
214
|
+
// Log if threshold exceeded
|
|
215
|
+
if (existing.count === this.performanceSettings.excessiveCallThreshold) {
|
|
216
|
+
console.warn(`🚨 Inspector Performance Warning: Setter '${setterName}' called ${existing.count} times in ${this.performanceSettings.resetInterval}ms on node ${nodeId}`);
|
|
217
|
+
}
|
|
218
|
+
else if (existing.count > this.performanceSettings.excessiveCallThreshold &&
|
|
219
|
+
existing.count % 50 === 0) {
|
|
220
|
+
console.warn(`🚨 Inspector Performance Warning: Setter '${setterName}' called ${existing.count} times in ${this.performanceSettings.resetInterval}ms on node ${nodeId} (continuing...)`);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Get current performance monitoring statistics
|
|
225
|
+
*/
|
|
226
|
+
static getPerformanceStats() {
|
|
227
|
+
const stats = [];
|
|
228
|
+
const now = Date.now();
|
|
229
|
+
Inspector.setterCallCount.forEach((data, key) => {
|
|
230
|
+
const parts = key.split('_');
|
|
231
|
+
const nodeIdStr = parts[0];
|
|
232
|
+
const setterName = parts[1];
|
|
233
|
+
if (nodeIdStr && setterName) {
|
|
234
|
+
const timeWindow = now - data.lastReset;
|
|
235
|
+
stats.push({
|
|
236
|
+
nodeId: parseInt(nodeIdStr, 10),
|
|
237
|
+
setterName,
|
|
238
|
+
count: data.count,
|
|
239
|
+
timeWindow,
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
return stats.sort((a, b) => b.count - a.count);
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Clear performance monitoring statistics
|
|
247
|
+
*/
|
|
248
|
+
static clearPerformanceStats() {
|
|
249
|
+
Inspector.setterCallCount.clear();
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Generate a unique animation ID
|
|
253
|
+
*/
|
|
254
|
+
static generateAnimationId() {
|
|
255
|
+
return `anim_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Wrap animation controller with monitoring capabilities
|
|
259
|
+
*/
|
|
260
|
+
wrapAnimationController(controller, nodeId, props, settings, div) {
|
|
261
|
+
if (!this.performanceSettings.enableAnimationMonitoring) {
|
|
262
|
+
// Just add the basic DOM animation without tracking
|
|
263
|
+
const originalStart = controller.start.bind(controller);
|
|
264
|
+
controller.start = () => {
|
|
265
|
+
this.animateNode(div, props, settings);
|
|
266
|
+
return originalStart();
|
|
267
|
+
};
|
|
268
|
+
return controller;
|
|
269
|
+
}
|
|
270
|
+
const animationId = Inspector.generateAnimationId();
|
|
271
|
+
// Create wrapper controller
|
|
272
|
+
const wrappedController = {
|
|
273
|
+
start: () => {
|
|
274
|
+
this.trackAnimationStart(animationId, nodeId, props, settings, controller);
|
|
275
|
+
this.animateNode(div, props, settings);
|
|
276
|
+
return controller.start();
|
|
277
|
+
},
|
|
278
|
+
stop: () => {
|
|
279
|
+
this.trackAnimationEnd(animationId, 'stopped');
|
|
280
|
+
return controller.stop();
|
|
281
|
+
},
|
|
282
|
+
pause: () => {
|
|
283
|
+
this.updateAnimationState(animationId, 'paused');
|
|
284
|
+
return controller.pause();
|
|
285
|
+
},
|
|
286
|
+
restore: () => {
|
|
287
|
+
this.trackAnimationEnd(animationId, 'cancelled');
|
|
288
|
+
return controller.restore();
|
|
289
|
+
},
|
|
290
|
+
waitUntilStopped: () => {
|
|
291
|
+
return controller.waitUntilStopped().then(() => {
|
|
292
|
+
this.trackAnimationEnd(animationId, 'finished');
|
|
293
|
+
});
|
|
294
|
+
},
|
|
295
|
+
get state() {
|
|
296
|
+
return controller.state;
|
|
297
|
+
},
|
|
298
|
+
// Event emitter methods
|
|
299
|
+
on: controller.on.bind(controller),
|
|
300
|
+
off: controller.off.bind(controller),
|
|
301
|
+
once: controller.once.bind(controller),
|
|
302
|
+
emit: controller.emit.bind(controller),
|
|
303
|
+
};
|
|
304
|
+
// Track animation events
|
|
305
|
+
controller.on('animating', () => {
|
|
306
|
+
this.updateAnimationState(animationId, 'running');
|
|
307
|
+
});
|
|
308
|
+
controller.on('stopped', () => {
|
|
309
|
+
this.trackAnimationEnd(animationId, 'finished');
|
|
310
|
+
});
|
|
311
|
+
return wrappedController;
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Track animation start
|
|
315
|
+
*/
|
|
316
|
+
trackAnimationStart(animationId, nodeId, props, settings, controller) {
|
|
317
|
+
const startTime = Date.now();
|
|
318
|
+
Inspector.activeAnimations.set(animationId, {
|
|
319
|
+
nodeId,
|
|
320
|
+
animationId,
|
|
321
|
+
startTime,
|
|
322
|
+
props,
|
|
323
|
+
settings,
|
|
324
|
+
controller,
|
|
325
|
+
state: 'scheduled',
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Update animation state
|
|
330
|
+
*/
|
|
331
|
+
updateAnimationState(animationId, state) {
|
|
332
|
+
const animation = Inspector.activeAnimations.get(animationId);
|
|
333
|
+
if (animation) {
|
|
334
|
+
animation.state = state;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Track animation end
|
|
339
|
+
*/
|
|
340
|
+
trackAnimationEnd(animationId, completionType) {
|
|
341
|
+
const animation = Inspector.activeAnimations.get(animationId);
|
|
342
|
+
if (!animation)
|
|
343
|
+
return;
|
|
344
|
+
const endTime = Date.now();
|
|
345
|
+
const actualDuration = endTime - animation.startTime;
|
|
346
|
+
const expectedDuration = animation.settings.duration || 1000;
|
|
347
|
+
// Move to history
|
|
348
|
+
Inspector.animationHistory.unshift({
|
|
349
|
+
nodeId: animation.nodeId,
|
|
350
|
+
animationId: animation.animationId,
|
|
351
|
+
startTime: animation.startTime,
|
|
352
|
+
endTime,
|
|
353
|
+
duration: expectedDuration,
|
|
354
|
+
actualDuration,
|
|
355
|
+
props: animation.props,
|
|
356
|
+
settings: animation.settings,
|
|
357
|
+
completionType,
|
|
358
|
+
});
|
|
359
|
+
// Limit history size for performance
|
|
360
|
+
if (Inspector.animationHistory.length >
|
|
361
|
+
this.performanceSettings.maxAnimationHistory) {
|
|
362
|
+
Inspector.animationHistory.splice(this.performanceSettings.maxAnimationHistory);
|
|
363
|
+
}
|
|
364
|
+
// Remove from active animations
|
|
365
|
+
Inspector.activeAnimations.delete(animationId);
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Get currently active animations
|
|
369
|
+
*/
|
|
370
|
+
static getActiveAnimations() {
|
|
371
|
+
const now = Date.now();
|
|
372
|
+
const activeAnimations = [];
|
|
373
|
+
Inspector.activeAnimations.forEach((animation) => {
|
|
374
|
+
activeAnimations.push({
|
|
375
|
+
nodeId: animation.nodeId,
|
|
376
|
+
animationId: animation.animationId,
|
|
377
|
+
startTime: animation.startTime,
|
|
378
|
+
duration: animation.settings.duration || 1000,
|
|
379
|
+
elapsedTime: now - animation.startTime,
|
|
380
|
+
props: animation.props,
|
|
381
|
+
settings: animation.settings,
|
|
382
|
+
state: animation.state,
|
|
383
|
+
});
|
|
384
|
+
});
|
|
385
|
+
return activeAnimations.sort((a, b) => b.startTime - a.startTime);
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Get animation statistics
|
|
389
|
+
*/
|
|
390
|
+
static getAnimationStats() {
|
|
391
|
+
const totalAnimations = Inspector.animationHistory.length;
|
|
392
|
+
const activeCount = Inspector.activeAnimations.size;
|
|
393
|
+
// Calculate average duration from finished animations only
|
|
394
|
+
const finishedAnimations = Inspector.animationHistory.filter((anim) => anim.completionType === 'finished');
|
|
395
|
+
const averageDuration = finishedAnimations.length > 0
|
|
396
|
+
? finishedAnimations.reduce((sum, anim) => sum + anim.actualDuration, 0) / finishedAnimations.length
|
|
397
|
+
: 0;
|
|
398
|
+
return {
|
|
399
|
+
totalAnimations,
|
|
400
|
+
activeCount,
|
|
401
|
+
averageDuration,
|
|
402
|
+
};
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Clear animation monitoring data
|
|
406
|
+
*/
|
|
407
|
+
static clearAnimationStats() {
|
|
408
|
+
Inspector.activeAnimations.clear();
|
|
409
|
+
Inspector.animationHistory.length = 0;
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* Start the animation stats timer if enabled
|
|
413
|
+
*/
|
|
414
|
+
startAnimationStatsTimer() {
|
|
415
|
+
console.log(`Starting animation stats timer with interval: ${this.performanceSettings.animationStatsInterval} seconds`);
|
|
416
|
+
if (this.performanceSettings.animationStatsInterval > 0) {
|
|
417
|
+
this.animationStatsTimer = setInterval(() => {
|
|
418
|
+
this.printAnimationStats();
|
|
419
|
+
}, this.performanceSettings.animationStatsInterval * 1000);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Stop the animation stats timer
|
|
424
|
+
*/
|
|
425
|
+
stopAnimationStatsTimer() {
|
|
426
|
+
if (this.animationStatsTimer) {
|
|
427
|
+
clearInterval(this.animationStatsTimer);
|
|
428
|
+
this.animationStatsTimer = null;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* Print current animation statistics to console
|
|
433
|
+
*/
|
|
434
|
+
printAnimationStats() {
|
|
435
|
+
const stats = Inspector.getAnimationStats();
|
|
436
|
+
console.log(`🎬 Animation Stats: ${stats.activeCount} active, ${stats.totalAnimations} completed, ${Math.round(stats.averageDuration)}ms avg duration`);
|
|
437
|
+
}
|
|
153
438
|
setRootPosition() {
|
|
154
439
|
if (this.root === null || this.canvas === null) {
|
|
155
440
|
return;
|
|
@@ -181,6 +466,22 @@ export class Inspector {
|
|
|
181
466
|
}
|
|
182
467
|
return div;
|
|
183
468
|
}
|
|
469
|
+
createNodes(node) {
|
|
470
|
+
if (this.root === null) {
|
|
471
|
+
return false;
|
|
472
|
+
}
|
|
473
|
+
const div = this.root.querySelector(`[id="${node.id}"]`);
|
|
474
|
+
if (div === null && node instanceof CoreTextNode) {
|
|
475
|
+
this.createTextNode(node);
|
|
476
|
+
}
|
|
477
|
+
else if (div === null && node instanceof CoreNode) {
|
|
478
|
+
this.createNode(node);
|
|
479
|
+
}
|
|
480
|
+
for (const child of node.children) {
|
|
481
|
+
this.createNodes(child);
|
|
482
|
+
}
|
|
483
|
+
return true;
|
|
484
|
+
}
|
|
184
485
|
createNode(node) {
|
|
185
486
|
const div = this.createDiv(node.id, node.props);
|
|
186
487
|
div.node = node;
|
|
@@ -192,12 +493,84 @@ export class Inspector {
|
|
|
192
493
|
return this.createProxy(node, div);
|
|
193
494
|
}
|
|
194
495
|
createTextNode(node) {
|
|
195
|
-
|
|
496
|
+
// eslint-disable-next-line
|
|
497
|
+
// @ts-ignore - textProps is a private property and keeping it that way
|
|
498
|
+
// but we need it from the inspector to set the initial properties on the div element
|
|
499
|
+
const div = this.createDiv(node.id, node.textProps);
|
|
196
500
|
div.node = node;
|
|
197
501
|
node.div = div;
|
|
198
502
|
return this.createProxy(node, div);
|
|
199
503
|
}
|
|
200
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
|
+
};
|
|
201
574
|
// Define traps for each property in knownProperties
|
|
202
575
|
knownProperties.forEach((property) => {
|
|
203
576
|
let originalProp = Object.getOwnPropertyDescriptor(node, property);
|
|
@@ -209,14 +582,26 @@ export class Inspector {
|
|
|
209
582
|
if (originalProp === undefined) {
|
|
210
583
|
return;
|
|
211
584
|
}
|
|
585
|
+
if (property === 'text') {
|
|
586
|
+
setupCoreNodeListeners(node);
|
|
587
|
+
}
|
|
212
588
|
Object.defineProperty(node, property, {
|
|
213
589
|
get() {
|
|
214
590
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
215
591
|
return originalProp?.get?.call(node);
|
|
216
592
|
},
|
|
217
593
|
set: (value) => {
|
|
594
|
+
// Track setter call for performance monitoring
|
|
595
|
+
this.trackSetterCall(node.id, property);
|
|
218
596
|
originalProp?.set?.call(node, value);
|
|
219
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
|
+
}
|
|
220
605
|
},
|
|
221
606
|
configurable: true,
|
|
222
607
|
enumerable: true,
|
|
@@ -224,25 +609,108 @@ export class Inspector {
|
|
|
224
609
|
});
|
|
225
610
|
const originalDestroy = node.destroy;
|
|
226
611
|
Object.defineProperty(node, 'destroy', {
|
|
227
|
-
value: () => {
|
|
612
|
+
value: (isChild = false) => {
|
|
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();
|
|
228
626
|
this.destroyNode(node.id);
|
|
229
|
-
originalDestroy.call(node);
|
|
627
|
+
originalDestroy.call(node, isChild);
|
|
230
628
|
},
|
|
629
|
+
configurable: true,
|
|
231
630
|
});
|
|
232
631
|
const originalAnimate = node.animate;
|
|
233
632
|
Object.defineProperty(node, 'animate', {
|
|
234
633
|
value: (props, settings) => {
|
|
235
634
|
const animationController = originalAnimate.call(node, props, settings);
|
|
236
|
-
|
|
237
|
-
animationController.
|
|
238
|
-
this.animateNode(div, props, settings);
|
|
239
|
-
return originalStart();
|
|
240
|
-
};
|
|
241
|
-
return animationController;
|
|
635
|
+
// Wrap animation controller with monitoring
|
|
636
|
+
return this.wrapAnimationController(animationController, node.id, props, settings, div);
|
|
242
637
|
},
|
|
638
|
+
configurable: true,
|
|
243
639
|
});
|
|
244
640
|
return node;
|
|
245
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
|
+
}
|
|
700
|
+
destroy() {
|
|
701
|
+
// Stop animation stats timer
|
|
702
|
+
this.stopAnimationStatsTimer();
|
|
703
|
+
// Remove DOM observers
|
|
704
|
+
this.mutationObserver.disconnect();
|
|
705
|
+
this.resizeObserver.disconnect();
|
|
706
|
+
// Remove resize listener
|
|
707
|
+
window.removeEventListener('resize', this.setRootPosition.bind(this));
|
|
708
|
+
if (this.root && this.root.parentNode) {
|
|
709
|
+
this.root.remove();
|
|
710
|
+
}
|
|
711
|
+
// Clean up animation monitoring data
|
|
712
|
+
Inspector.clearAnimationStats();
|
|
713
|
+
}
|
|
246
714
|
destroyNode(id) {
|
|
247
715
|
const div = document.getElementById(id.toString());
|
|
248
716
|
div?.remove();
|
|
@@ -271,9 +739,11 @@ export class Inspector {
|
|
|
271
739
|
// special case for text
|
|
272
740
|
if (property === 'text') {
|
|
273
741
|
div.innerHTML = String(value);
|
|
274
|
-
//
|
|
275
|
-
//
|
|
276
|
-
div.style.
|
|
742
|
+
// Keep DOM text invisible without breaking visibility checks
|
|
743
|
+
// Use very low opacity (0.001) instead of 0 so Playwright still detects it
|
|
744
|
+
div.style.opacity = '0.001';
|
|
745
|
+
div.style.pointerEvents = 'none';
|
|
746
|
+
div.style.userSelect = 'none';
|
|
277
747
|
return;
|
|
278
748
|
}
|
|
279
749
|
// special case for images
|
|
@@ -308,14 +778,14 @@ export class Inspector {
|
|
|
308
778
|
let value = mappedStyleResponse.value;
|
|
309
779
|
if (property === 'x') {
|
|
310
780
|
const mount = props.mountX;
|
|
311
|
-
const width = props.
|
|
781
|
+
const width = props.w;
|
|
312
782
|
if (mount) {
|
|
313
783
|
value = `${parseInt(value) - width * mount}px`;
|
|
314
784
|
}
|
|
315
785
|
}
|
|
316
786
|
else if (property === 'y') {
|
|
317
787
|
const mount = props.mountY;
|
|
318
|
-
const height = props.
|
|
788
|
+
const height = props.h;
|
|
319
789
|
if (mount) {
|
|
320
790
|
value = `${parseInt(value) - height * mount}px`;
|
|
321
791
|
}
|
|
@@ -348,6 +818,13 @@ export class Inspector {
|
|
|
348
818
|
return;
|
|
349
819
|
}
|
|
350
820
|
}
|
|
821
|
+
updateViewport(width, height, deviceLogicalPixelRatio) {
|
|
822
|
+
this.scaleX = deviceLogicalPixelRatio ?? 1;
|
|
823
|
+
this.scaleY = deviceLogicalPixelRatio ?? 1;
|
|
824
|
+
this.width = width;
|
|
825
|
+
this.height = height;
|
|
826
|
+
this.setRootPosition();
|
|
827
|
+
}
|
|
351
828
|
// simple animation handler
|
|
352
829
|
animateNode(div, props, settings) {
|
|
353
830
|
const { duration = 1000, delay = 0,
|
|
@@ -356,14 +833,14 @@ export class Inspector {
|
|
|
356
833
|
// loop = false,
|
|
357
834
|
// stopMethod = false,
|
|
358
835
|
} = settings;
|
|
359
|
-
const { x, y,
|
|
836
|
+
const { x, y, w, h, alpha = 1, rotation = 0, scale = 1, color, mountX, mountY, } = props;
|
|
360
837
|
// ignoring loops and repeats for now, as that might be a bit too much for the inspector
|
|
361
838
|
function animate() {
|
|
362
839
|
setTimeout(() => {
|
|
363
|
-
div.style.top = `${y -
|
|
364
|
-
div.style.left = `${x -
|
|
365
|
-
div.style.width = `${
|
|
366
|
-
div.style.height = `${
|
|
840
|
+
div.style.top = `${y - h * mountY}px`;
|
|
841
|
+
div.style.left = `${x - w * mountX}px`;
|
|
842
|
+
div.style.width = `${w}px`;
|
|
843
|
+
div.style.height = `${h}px`;
|
|
367
844
|
div.style.opacity = `${alpha}`;
|
|
368
845
|
div.style.rotate = `${rotation}rad`;
|
|
369
846
|
div.style.scale = `${scale}`;
|