@lightningjs/renderer 3.0.0-beta7 → 3.0.0-beta9
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/utils.d.ts +2 -1
- package/dist/exports/utils.js +2 -1
- package/dist/exports/utils.js.map +1 -1
- package/dist/src/core/CoreNode.d.ts +24 -49
- package/dist/src/core/CoreNode.js +257 -255
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +1 -1
- package/dist/src/core/CoreTextNode.js +14 -15
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +4 -9
- package/dist/src/core/CoreTextureManager.js +41 -78
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +12 -27
- package/dist/src/core/Stage.js +50 -37
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureMemoryManager.d.ts +10 -1
- package/dist/src/core/TextureMemoryManager.js +103 -50
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/animations/CoreAnimation.js +5 -0
- 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 -4
- package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +19 -2
- package/dist/src/core/lib/WebGlContextWrapper.js +56 -25
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +1 -0
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderNode.d.ts +1 -0
- package/dist/src/core/renderers/CoreShaderNode.js +9 -0
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +1 -0
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +3 -0
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +1 -4
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +0 -3
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +1 -0
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +56 -54
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- 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 +4 -2
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +31 -13
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
- package/dist/src/core/shaders/canvas/LinearGradient.js +5 -3
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RadialGradient.js +13 -11
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js +7 -5
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +10 -8
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +7 -5
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.js +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/HolePunchTemplate.js +1 -1
- package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedTemplate.js +1 -1
- 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/RoundedWithBorderTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/{templates/shaderUtils.d.ts → utils.d.ts} +1 -1
- package/dist/src/core/shaders/{templates/shaderUtils.js → utils.js} +2 -2
- package/dist/src/core/shaders/utils.js.map +1 -0
- package/dist/src/core/shaders/webgl/HolePunch.js +4 -3
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/webgl/LinearGradient.js +5 -4
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RadialGradient.js +6 -5
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +18 -7
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +30 -17
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -50
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +1 -1
- package/dist/src/core/textures/ImageTexture.js +1 -1
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +12 -0
- package/dist/src/core/textures/Texture.js +19 -0
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/core/utils.d.ts +1 -1
- package/dist/src/main-api/Inspector.d.ts +6 -1
- package/dist/src/main-api/Inspector.js +42 -4
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +62 -43
- package/dist/src/main-api/Renderer.js +119 -31
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/exports/utils.ts +7 -1
- package/package.json +1 -1
- package/src/core/CoreNode.ts +307 -313
- package/src/core/CoreTextNode.ts +23 -20
- package/src/core/CoreTextureManager.ts +40 -99
- package/src/core/Stage.ts +68 -65
- package/src/core/TextureMemoryManager.ts +135 -67
- package/src/core/animations/CoreAnimation.ts +7 -0
- package/src/core/animations/CoreAnimationController.ts +13 -4
- package/src/core/lib/WebGlContextWrapper.ts +69 -75
- package/src/core/renderers/CoreRenderer.ts +1 -0
- package/src/core/renderers/CoreShaderNode.ts +10 -0
- package/src/core/renderers/canvas/CanvasRenderer.ts +4 -0
- package/src/core/renderers/canvas/CanvasShaderNode.ts +1 -4
- package/src/core/renderers/webgl/WebGlCtxTexture.ts +0 -3
- package/src/core/renderers/webgl/WebGlRenderer.ts +64 -65
- package/src/core/renderers/webgl/WebGlShaderNode.ts +2 -4
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +37 -14
- package/src/core/shaders/canvas/LinearGradient.ts +8 -6
- package/src/core/shaders/canvas/RadialGradient.ts +22 -36
- package/src/core/shaders/canvas/RoundedWithBorder.ts +10 -8
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +14 -12
- package/src/core/shaders/canvas/RoundedWithShadow.ts +8 -7
- package/src/core/shaders/templates/BorderTemplate.ts +1 -1
- package/src/core/shaders/templates/HolePunchTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +1 -1
- package/src/core/shaders/templates/ShadowTemplate.ts +1 -1
- package/src/core/shaders/{templates/shaderUtils.ts → utils.ts} +2 -3
- package/src/core/shaders/webgl/HolePunch.ts +4 -7
- package/src/core/shaders/webgl/LinearGradient.ts +5 -4
- package/src/core/shaders/webgl/RadialGradient.ts +7 -6
- package/src/core/shaders/webgl/RoundedWithBorder.ts +18 -7
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +30 -21
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +2 -58
- package/src/core/textures/ImageTexture.ts +17 -16
- package/src/core/textures/Texture.ts +23 -0
- package/src/main-api/Inspector.ts +52 -5
- package/src/main-api/Renderer.ts +222 -77
- 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/CoreShader.d.ts +0 -9
- package/dist/src/core/renderers/CoreShader.js +0 -28
- package/dist/src/core/renderers/CoreShader.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +0 -33
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +0 -250
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -16
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +0 -123
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +0 -1
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +0 -10
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +0 -43
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +0 -12
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +0 -55
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +0 -9
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +0 -38
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -57
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +0 -227
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +0 -34
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +0 -114
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +0 -133
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +0 -613
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +0 -83
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +0 -231
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +0 -9
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +0 -87
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +0 -10
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -119
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +0 -29
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +0 -413
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +0 -28
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +0 -131
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +0 -47
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -160
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +0 -30
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +0 -58
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +0 -9
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +0 -136
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +0 -36
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +0 -85
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +0 -45
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +0 -104
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +0 -22
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +0 -45
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +0 -58
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +0 -80
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +0 -35
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +0 -129
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +0 -39
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +0 -116
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +0 -61
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +0 -127
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +0 -40
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +0 -115
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +0 -61
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +0 -1
- package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
- package/dist/src/core/temp.d.ts +0 -1
- package/dist/src/core/temp.js +0 -77
- package/dist/src/core/temp.js.map +0 -1
- package/dist/src/main-api/DynamicShaderController.d.ts +0 -29
- package/dist/src/main-api/DynamicShaderController.js +0 -58
- package/dist/src/main-api/DynamicShaderController.js.map +0 -1
- package/dist/src/main-api/ShaderController.d.ts +0 -31
- package/dist/src/main-api/ShaderController.js +0 -37
- package/dist/src/main-api/ShaderController.js.map +0 -1
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
import type { CoreShaderType } from '../../renderers/CoreShaderNode.js';
|
|
19
19
|
import type { Vec4 } from '../../renderers/webgl/internal/ShaderUtils.js';
|
|
20
|
-
import { validateArrayLength4 } from '
|
|
20
|
+
import { validateArrayLength4 } from '../utils.js';
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* Properties of the {@link RoundedRectangle} shader
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
import type { CoreShaderType } from '../../renderers/CoreShaderNode.js';
|
|
19
19
|
import { getBorderProps, type BorderProps } from './BorderTemplate.js';
|
|
20
20
|
import { RoundedTemplate, type RoundedProps } from './RoundedTemplate.js';
|
|
21
|
-
import type { PrefixedType } from '
|
|
21
|
+
import type { PrefixedType } from '../utils.js';
|
|
22
22
|
import { getShadowProps, type ShadowProps } from './ShadowTemplate.js';
|
|
23
23
|
|
|
24
24
|
export type RoundedWithBorderAndShadowProps = RoundedProps &
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
import type { CoreShaderType } from '../../renderers/CoreShaderNode.js';
|
|
19
19
|
import { getBorderProps, type BorderProps } from './BorderTemplate.js';
|
|
20
20
|
import { RoundedTemplate, type RoundedProps } from './RoundedTemplate.js';
|
|
21
|
-
import type { PrefixedType } from '
|
|
21
|
+
import type { PrefixedType } from '../utils.js';
|
|
22
22
|
|
|
23
23
|
export type RoundedWithBorderProps = RoundedProps &
|
|
24
24
|
PrefixedType<BorderProps, 'border'>;
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
import type { CoreShaderType } from '../../renderers/CoreShaderNode.js';
|
|
19
19
|
import { RoundedTemplate, type RoundedProps } from './RoundedTemplate.js';
|
|
20
|
-
import type { PrefixedType } from '
|
|
20
|
+
import type { PrefixedType } from '../utils.js';
|
|
21
21
|
import { getShadowProps, type ShadowProps } from './ShadowTemplate.js';
|
|
22
22
|
|
|
23
23
|
export type RoundedWithShadowProps = RoundedProps &
|
|
@@ -14,9 +14,8 @@
|
|
|
14
14
|
*
|
|
15
15
|
* SPDX-License-Identifier: Apache-2.0
|
|
16
16
|
*/
|
|
17
|
-
|
|
18
|
-
import {
|
|
19
|
-
import type { Vec4 } from '../../renderers/webgl/internal/ShaderUtils.js';
|
|
17
|
+
import { assertTruthy } from '../../utils.js';
|
|
18
|
+
import type { Vec4 } from '../renderers/webgl/internal/ShaderUtils.js';
|
|
20
19
|
|
|
21
20
|
export const validateArrayLength4 = (value: number | number[]): Vec4 => {
|
|
22
21
|
if (!Array.isArray(value)) {
|
|
@@ -26,17 +26,14 @@ import type { WebGlShaderType } from '../../renderers/webgl/WebGlShaderNode.js';
|
|
|
26
26
|
export const HolePunch: WebGlShaderType<HolePunchProps> = {
|
|
27
27
|
props: HolePunchTemplate.props,
|
|
28
28
|
update() {
|
|
29
|
-
|
|
29
|
+
const props = this.props!;
|
|
30
|
+
this.uniform2f('u_pos', props.x, props.y);
|
|
30
31
|
//precalculate to halfSize once instead of for every pixel
|
|
31
|
-
this.uniform2f('u_size',
|
|
32
|
+
this.uniform2f('u_size', props.width * 0.5, props.height * 0.5);
|
|
32
33
|
|
|
33
34
|
this.uniform4fa(
|
|
34
35
|
'u_radius',
|
|
35
|
-
calcFactoredRadiusArray(
|
|
36
|
-
this.props!.radius as Vec4,
|
|
37
|
-
this.props!.width,
|
|
38
|
-
this.props!.height,
|
|
39
|
-
),
|
|
36
|
+
calcFactoredRadiusArray(props.radius as Vec4, props.width, props.height),
|
|
40
37
|
);
|
|
41
38
|
},
|
|
42
39
|
getCacheMarkers(props: HolePunchProps) {
|
|
@@ -27,11 +27,12 @@ import type { WebGlShaderType } from '../../renderers/webgl/WebGlShaderNode.js';
|
|
|
27
27
|
export const LinearGradient: WebGlShaderType<LinearGradientProps> = {
|
|
28
28
|
props: LinearGradientTemplate.props,
|
|
29
29
|
update() {
|
|
30
|
-
|
|
31
|
-
this.
|
|
30
|
+
const props = this.props!;
|
|
31
|
+
this.uniform1f('u_angle', props.angle - (Math.PI / 180) * 90);
|
|
32
|
+
this.uniform1fv('u_stops', new Float32Array(props.stops));
|
|
32
33
|
const colors: number[] = [];
|
|
33
|
-
for (let i = 0; i <
|
|
34
|
-
const norm = getNormalizedRgbaComponents(
|
|
34
|
+
for (let i = 0; i < props.colors.length; i++) {
|
|
35
|
+
const norm = getNormalizedRgbaComponents(props.colors[i]!);
|
|
35
36
|
colors.push(norm[0], norm[1], norm[2], norm[3]);
|
|
36
37
|
}
|
|
37
38
|
this.uniform4fv('u_colors', new Float32Array(colors));
|
|
@@ -28,16 +28,17 @@ import type { WebGlShaderType } from '../../renderers/webgl/WebGlShaderNode.js';
|
|
|
28
28
|
export const RadialGradient: WebGlShaderType<RadialGradientProps> = {
|
|
29
29
|
props: RadialGradientTemplate.props,
|
|
30
30
|
update(node: CoreNode) {
|
|
31
|
+
const props = this.props!;
|
|
31
32
|
this.uniform2f(
|
|
32
33
|
'u_projection',
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
props.pivot[0] * node.width,
|
|
35
|
+
props.pivot[1] * node.height,
|
|
35
36
|
);
|
|
36
|
-
this.uniform2f('u_size',
|
|
37
|
-
this.uniform1fv('u_stops', new Float32Array(
|
|
37
|
+
this.uniform2f('u_size', props.width * 0.5, props.height * 0.5);
|
|
38
|
+
this.uniform1fv('u_stops', new Float32Array(props.stops));
|
|
38
39
|
const colors: number[] = [];
|
|
39
|
-
for (let i = 0; i <
|
|
40
|
-
const norm = getNormalizedRgbaComponents(
|
|
40
|
+
for (let i = 0; i < props.colors.length; i++) {
|
|
41
|
+
const norm = getNormalizedRgbaComponents(props.colors[i]!);
|
|
41
42
|
colors.push(norm[0], norm[1], norm[2], norm[3]);
|
|
42
43
|
}
|
|
43
44
|
this.uniform4fv('u_colors', new Float32Array(colors));
|
|
@@ -65,6 +65,7 @@ export const RoundedWithBorder: WebGlShaderType<RoundedWithBorderProps> = {
|
|
|
65
65
|
varying vec4 v_innerRadius;
|
|
66
66
|
varying vec2 v_innerSize;
|
|
67
67
|
varying vec2 v_halfDimensions;
|
|
68
|
+
varying float v_borderZero;
|
|
68
69
|
|
|
69
70
|
void main() {
|
|
70
71
|
vec2 normalized = a_position * u_pixelRatio;
|
|
@@ -76,14 +77,18 @@ export const RoundedWithBorder: WebGlShaderType<RoundedWithBorderProps> = {
|
|
|
76
77
|
|
|
77
78
|
v_halfDimensions = u_dimensions * 0.5;
|
|
78
79
|
|
|
79
|
-
|
|
80
|
-
max(0.0, u_radius.x - max(u_borderWidth.x, u_borderWidth.w) - 0.5),
|
|
81
|
-
max(0.0, u_radius.y - max(u_borderWidth.x, u_borderWidth.y) - 0.5),
|
|
82
|
-
max(0.0, u_radius.z - max(u_borderWidth.z, u_borderWidth.y) - 0.5),
|
|
83
|
-
max(0.0, u_radius.w - max(u_borderWidth.z, u_borderWidth.w) - 0.5)
|
|
84
|
-
);
|
|
80
|
+
v_borderZero = u_borderWidth == vec4(0.0) ? 1.0 : 0.0;
|
|
85
81
|
|
|
86
|
-
|
|
82
|
+
if(v_borderZero == 0.0) {
|
|
83
|
+
v_innerRadius = vec4(
|
|
84
|
+
max(0.0, u_radius.x - max(u_borderWidth.x, u_borderWidth.w) - 0.5),
|
|
85
|
+
max(0.0, u_radius.y - max(u_borderWidth.x, u_borderWidth.y) - 0.5),
|
|
86
|
+
max(0.0, u_radius.z - max(u_borderWidth.z, u_borderWidth.y) - 0.5),
|
|
87
|
+
max(0.0, u_radius.w - max(u_borderWidth.z, u_borderWidth.w) - 0.5)
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
v_innerSize = (vec2(u_dimensions.x - (u_borderWidth[3] + u_borderWidth[1]) + 1.0, u_dimensions.y - (u_borderWidth[0] + u_borderWidth[2])) - 2.0) * 0.5;
|
|
91
|
+
}
|
|
87
92
|
|
|
88
93
|
gl_Position = vec4(normalized.x * screenSpace.x - 1.0, normalized.y * -abs(screenSpace.y) + 1.0, 0.0, 1.0);
|
|
89
94
|
gl_Position.y = -sign(screenSpace.y) * gl_Position.y;
|
|
@@ -114,6 +119,7 @@ export const RoundedWithBorder: WebGlShaderType<RoundedWithBorderProps> = {
|
|
|
114
119
|
varying vec2 v_halfDimensions;
|
|
115
120
|
varying vec4 v_innerRadius;
|
|
116
121
|
varying vec2 v_innerSize;
|
|
122
|
+
varying float v_borderZero;
|
|
117
123
|
|
|
118
124
|
float roundedBox(vec2 p, vec2 s, vec4 r) {
|
|
119
125
|
r.xy = (p.x > 0.0) ? r.yz : r.xw;
|
|
@@ -130,6 +136,11 @@ export const RoundedWithBorder: WebGlShaderType<RoundedWithBorderProps> = {
|
|
|
130
136
|
|
|
131
137
|
float outerAlpha = 1.0 - smoothstep(0.0, 1.0, outerDist);
|
|
132
138
|
|
|
139
|
+
if(v_borderZero == 1.0) {
|
|
140
|
+
gl_FragColor = mix(vec4(0.0), color, outerAlpha) * u_alpha;
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
|
|
133
144
|
boxUv.x += u_borderWidth.y > u_borderWidth.w ? (u_borderWidth.y - u_borderWidth.w) * 0.5 : -(u_borderWidth.w - u_borderWidth.y) * 0.5;
|
|
134
145
|
boxUv.y += u_borderWidth.z > u_borderWidth.x ? ((u_borderWidth.z - u_borderWidth.x) * 0.5 + 0.5) : -(u_borderWidth.x - u_borderWidth.z) * 0.5;
|
|
135
146
|
|
|
@@ -28,19 +28,16 @@ export const RoundedWithBorderAndShadow: WebGlShaderType<RoundedWithBorderAndSha
|
|
|
28
28
|
{
|
|
29
29
|
props: RoundedWithBorderAndShadowTemplate.props,
|
|
30
30
|
update(node: CoreNode) {
|
|
31
|
-
|
|
32
|
-
this.
|
|
31
|
+
const props = this.props!;
|
|
32
|
+
this.uniformRGBA('u_borderColor', props['border-color']);
|
|
33
|
+
this.uniform4fa('u_borderWidth', props['border-width'] as Vec4);
|
|
33
34
|
|
|
34
|
-
this.uniformRGBA('u_shadowColor',
|
|
35
|
-
this.uniform4fa('u_shadow',
|
|
35
|
+
this.uniformRGBA('u_shadowColor', props['shadow-color']);
|
|
36
|
+
this.uniform4fa('u_shadow', props['shadow-projection']);
|
|
36
37
|
|
|
37
38
|
this.uniform4fa(
|
|
38
39
|
'u_radius',
|
|
39
|
-
calcFactoredRadiusArray(
|
|
40
|
-
this.props!.radius as Vec4,
|
|
41
|
-
node.width,
|
|
42
|
-
node.height,
|
|
43
|
-
),
|
|
40
|
+
calcFactoredRadiusArray(props.radius as Vec4, node.width, node.height),
|
|
44
41
|
);
|
|
45
42
|
},
|
|
46
43
|
vertex: `
|
|
@@ -71,6 +68,7 @@ export const RoundedWithBorderAndShadow: WebGlShaderType<RoundedWithBorderAndSha
|
|
|
71
68
|
varying vec4 v_innerRadius;
|
|
72
69
|
varying vec2 v_innerSize;
|
|
73
70
|
varying vec2 v_halfDimensions;
|
|
71
|
+
varying float v_borderZero;
|
|
74
72
|
|
|
75
73
|
void main() {
|
|
76
74
|
vec2 screenSpace = vec2(2.0 / u_resolution.x, -2.0 / u_resolution.y);
|
|
@@ -84,18 +82,23 @@ export const RoundedWithBorderAndShadow: WebGlShaderType<RoundedWithBorderAndSha
|
|
|
84
82
|
|
|
85
83
|
v_halfDimensions = u_dimensions * 0.5;
|
|
86
84
|
|
|
87
|
-
v_innerRadius = vec4(
|
|
88
|
-
max(0.0, u_radius.x - max(u_borderWidth.x, u_borderWidth.w) - 0.5),
|
|
89
|
-
max(0.0, u_radius.y - max(u_borderWidth.x, u_borderWidth.y) - 0.5),
|
|
90
|
-
max(0.0, u_radius.z - max(u_borderWidth.z, u_borderWidth.y) - 0.5),
|
|
91
|
-
max(0.0, u_radius.w - max(u_borderWidth.z, u_borderWidth.w) - 0.5)
|
|
92
|
-
);
|
|
93
|
-
|
|
94
|
-
v_innerSize = (vec2(u_dimensions.x - (u_borderWidth[3] + u_borderWidth[1]) - 1.0, u_dimensions.y - (u_borderWidth[0] + u_borderWidth[2])) - 2.0) * 0.5;
|
|
95
|
-
|
|
96
85
|
v_color = a_color;
|
|
97
86
|
v_nodeCoords = a_nodeCoords + (screenSpace + shadowEdge) / (u_dimensions);
|
|
98
87
|
v_textureCoords = a_textureCoords + (screenSpace + shadowEdge) / (u_dimensions);
|
|
88
|
+
|
|
89
|
+
v_borderZero = u_borderWidth == vec4(0.0) ? 1.0 : 0.0;
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
if(v_borderZero == 0.0) {
|
|
93
|
+
v_innerRadius = vec4(
|
|
94
|
+
max(0.0, u_radius.x - max(u_borderWidth.x, u_borderWidth.w) - 0.5),
|
|
95
|
+
max(0.0, u_radius.y - max(u_borderWidth.x, u_borderWidth.y) - 0.5),
|
|
96
|
+
max(0.0, u_radius.z - max(u_borderWidth.z, u_borderWidth.y) - 0.5),
|
|
97
|
+
max(0.0, u_radius.w - max(u_borderWidth.z, u_borderWidth.w) - 0.5)
|
|
98
|
+
);
|
|
99
|
+
|
|
100
|
+
v_innerSize = (vec2(u_dimensions.x - (u_borderWidth[3] + u_borderWidth[1]) - 1.0, u_dimensions.y - (u_borderWidth[0] + u_borderWidth[2])) - 2.0) * 0.5;
|
|
101
|
+
}
|
|
99
102
|
}
|
|
100
103
|
`,
|
|
101
104
|
fragment: `
|
|
@@ -125,6 +128,7 @@ export const RoundedWithBorderAndShadow: WebGlShaderType<RoundedWithBorderAndSha
|
|
|
125
128
|
varying vec2 v_halfDimensions;
|
|
126
129
|
varying vec4 v_innerRadius;
|
|
127
130
|
varying vec2 v_innerSize;
|
|
131
|
+
varying float v_borderZero;
|
|
128
132
|
|
|
129
133
|
float roundedBox(vec2 p, vec2 s, vec4 r) {
|
|
130
134
|
r.xy = (p.x > 0.0) ? r.yz : r.xw;
|
|
@@ -149,15 +153,20 @@ export const RoundedWithBorderAndShadow: WebGlShaderType<RoundedWithBorderAndSha
|
|
|
149
153
|
|
|
150
154
|
float outerAlpha = 1.0 - smoothstep(0.0, 1.0, outerDist);
|
|
151
155
|
|
|
156
|
+
float shadowAlpha = shadowBox(boxUv - u_shadow.xy, v_halfDimensions + u_shadow.w, u_radius + u_shadow.z);
|
|
157
|
+
vec4 shadow = mix(vec4(0.0), u_shadowColor, shadowAlpha);
|
|
158
|
+
|
|
159
|
+
if(v_borderZero == 1.0) {
|
|
160
|
+
gl_FragColor = mix(shadow, color, outerAlpha) * u_alpha;
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
|
|
152
164
|
boxUv.x += u_borderWidth.y > u_borderWidth.w ? (u_borderWidth.y - u_borderWidth.w) * 0.5 : -(u_borderWidth.w - u_borderWidth.y) * 0.5;
|
|
153
165
|
boxUv.y += u_borderWidth.z > u_borderWidth.x ? ((u_borderWidth.z - u_borderWidth.x) * 0.5 + 0.5) : -(u_borderWidth.x - u_borderWidth.z) * 0.5;
|
|
154
166
|
|
|
155
167
|
float innerDist = roundedBox(boxUv, v_innerSize, v_innerRadius);
|
|
156
168
|
float innerAlpha = 1.0 - smoothstep(0.0, 1.0, innerDist);
|
|
157
169
|
|
|
158
|
-
float shadowAlpha = shadowBox(boxUv - u_shadow.xy, v_halfDimensions + u_shadow.w, u_radius + u_shadow.z);
|
|
159
|
-
|
|
160
|
-
vec4 shadow = mix(vec4(0.0), u_shadowColor, shadowAlpha);
|
|
161
170
|
vec4 resColor = mix(u_borderColor, color, innerAlpha);
|
|
162
171
|
resColor = mix(shadow, resColor, outerAlpha);
|
|
163
172
|
gl_FragColor = resColor * u_alpha;
|
|
@@ -659,7 +659,6 @@ export class SdfTextRenderer extends TextRenderer<SdfTextRendererState> {
|
|
|
659
659
|
},
|
|
660
660
|
]);
|
|
661
661
|
state.bufferUploaded = false;
|
|
662
|
-
assertTruthy(state.webGlBuffers);
|
|
663
662
|
webGlBuffers = state.webGlBuffers;
|
|
664
663
|
}
|
|
665
664
|
|
|
@@ -671,9 +670,7 @@ export class SdfTextRenderer extends TextRenderer<SdfTextRendererState> {
|
|
|
671
670
|
state.bufferUploaded = true;
|
|
672
671
|
}
|
|
673
672
|
|
|
674
|
-
assertTruthy(trFontFace);
|
|
675
673
|
if (scrollable && contain === 'both') {
|
|
676
|
-
assertTruthy(elementBounds.valid);
|
|
677
674
|
const elementRect = convertBoundToRect(elementBounds, tmpRect);
|
|
678
675
|
|
|
679
676
|
if (node.clippingRect.valid) {
|
|
@@ -695,7 +692,7 @@ export class SdfTextRenderer extends TextRenderer<SdfTextRendererState> {
|
|
|
695
692
|
sdfShaderProps: {
|
|
696
693
|
transform: node.globalTransform!.getFloatArr(),
|
|
697
694
|
color: mergeColorAlpha(color, node.worldAlpha),
|
|
698
|
-
size: fontSize / (trFontFace
|
|
695
|
+
size: fontSize / (trFontFace!.data?.info.size || 0),
|
|
699
696
|
scrollY,
|
|
700
697
|
distanceRange,
|
|
701
698
|
debug: debug.sdfShaderDebug,
|
|
@@ -717,65 +714,12 @@ export class SdfTextRenderer extends TextRenderer<SdfTextRendererState> {
|
|
|
717
714
|
);
|
|
718
715
|
|
|
719
716
|
const texture = state.trFontFace?.texture;
|
|
720
|
-
|
|
721
|
-
const ctxTexture = texture.ctxTexture;
|
|
717
|
+
const ctxTexture = texture!.ctxTexture;
|
|
722
718
|
|
|
723
719
|
renderOp.addTexture(ctxTexture as WebGlCtxTexture);
|
|
724
720
|
renderOp.numQuads = state.bufferNumQuads;
|
|
725
721
|
|
|
726
722
|
renderer.addRenderOp(renderOp);
|
|
727
|
-
|
|
728
|
-
// if (!debug.disableScissor) {
|
|
729
|
-
// renderer.enableScissor(
|
|
730
|
-
// visibleRect.x,
|
|
731
|
-
// visibleRect.y,
|
|
732
|
-
// visibleRect.w,
|
|
733
|
-
// visibleRect.h,
|
|
734
|
-
// );
|
|
735
|
-
// }
|
|
736
|
-
|
|
737
|
-
// Draw the arrays
|
|
738
|
-
// gl.drawArrays(
|
|
739
|
-
// gl.TRIANGLES, // Primitive type
|
|
740
|
-
// 0,
|
|
741
|
-
// bufferNumVertices, // Number of verticies
|
|
742
|
-
// );
|
|
743
|
-
|
|
744
|
-
// renderer.disableScissor();
|
|
745
|
-
|
|
746
|
-
// if (debug.showElementRect) {
|
|
747
|
-
// this.renderer.drawBorder(
|
|
748
|
-
// Colors.Blue,
|
|
749
|
-
// elementRect.x,
|
|
750
|
-
// elementRect.y,
|
|
751
|
-
// elementRect.w,
|
|
752
|
-
// elementRect.h,
|
|
753
|
-
// );
|
|
754
|
-
// }
|
|
755
|
-
|
|
756
|
-
// if (debug.showVisibleRect) {
|
|
757
|
-
// this.renderer.drawBorder(
|
|
758
|
-
// Colors.Green,
|
|
759
|
-
// visibleRect.x,
|
|
760
|
-
// visibleRect.y,
|
|
761
|
-
// visibleRect.w,
|
|
762
|
-
// visibleRect.h,
|
|
763
|
-
// );
|
|
764
|
-
// }
|
|
765
|
-
|
|
766
|
-
// if (debug.showRenderWindow && renderWindow) {
|
|
767
|
-
// this.renderer.drawBorder(
|
|
768
|
-
// Colors.Red,
|
|
769
|
-
// x + renderWindow.x1,
|
|
770
|
-
// y + renderWindow.y1 - scrollY,
|
|
771
|
-
// x + renderWindow.x2 - (x + renderWindow.x1),
|
|
772
|
-
// y + renderWindow.y2 - scrollY - (y + renderWindow.y1 - scrollY),
|
|
773
|
-
// );
|
|
774
|
-
// }
|
|
775
|
-
// if (debug.printLayoutTime) {
|
|
776
|
-
// debugData.drawSum += performance.now() - drawStartTime;
|
|
777
|
-
// debugData.drawCount++;
|
|
778
|
-
// }
|
|
779
723
|
}
|
|
780
724
|
|
|
781
725
|
override setIsRenderable(
|
|
@@ -149,24 +149,25 @@ export class ImageTexture extends Texture {
|
|
|
149
149
|
img.crossOrigin = 'anonymous';
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
-
return new Promise<{
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
152
|
+
return new Promise<{
|
|
153
|
+
data: HTMLImageElement | null;
|
|
154
|
+
premultiplyAlpha: boolean;
|
|
155
|
+
}>((resolve) => {
|
|
156
|
+
img.onload = () => {
|
|
157
|
+
resolve({ data: img, premultiplyAlpha: hasAlpha });
|
|
158
|
+
};
|
|
157
159
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
160
|
+
img.onerror = () => {
|
|
161
|
+
console.warn('Image loading failed, returning fallback object.');
|
|
162
|
+
resolve({ data: null, premultiplyAlpha: hasAlpha });
|
|
163
|
+
};
|
|
162
164
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
);
|
|
165
|
+
if (src instanceof Blob) {
|
|
166
|
+
img.src = URL.createObjectURL(src);
|
|
167
|
+
} else {
|
|
168
|
+
img.src = src;
|
|
169
|
+
}
|
|
170
|
+
});
|
|
170
171
|
}
|
|
171
172
|
|
|
172
173
|
async createImageBitmap(
|
|
@@ -144,6 +144,12 @@ export abstract class Texture extends EventEmitter {
|
|
|
144
144
|
private _dimensions: Dimensions | null = null;
|
|
145
145
|
private _error: Error | null = null;
|
|
146
146
|
|
|
147
|
+
/**
|
|
148
|
+
* Texture states that are considered transitional and should be skipped during cleanup
|
|
149
|
+
*/
|
|
150
|
+
public static readonly TRANSITIONAL_TEXTURE_STATES: readonly TextureState[] =
|
|
151
|
+
['fetching', 'fetched', 'loading'];
|
|
152
|
+
|
|
147
153
|
// aggregate state
|
|
148
154
|
public state: TextureState = 'initial';
|
|
149
155
|
|
|
@@ -250,6 +256,23 @@ export abstract class Texture extends EventEmitter {
|
|
|
250
256
|
this.ctxTexture?.free();
|
|
251
257
|
}
|
|
252
258
|
|
|
259
|
+
/**
|
|
260
|
+
* Destroy the texture.
|
|
261
|
+
*
|
|
262
|
+
* @remarks
|
|
263
|
+
* This method is called when the texture is no longer needed and should be
|
|
264
|
+
* cleaned up.
|
|
265
|
+
*/
|
|
266
|
+
destroy(): void {
|
|
267
|
+
// Only free GPU resources if we're in a state where they exist
|
|
268
|
+
if (this.state === 'loaded') {
|
|
269
|
+
this.free();
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
// Always free texture data regardless of state
|
|
273
|
+
this.freeTextureData();
|
|
274
|
+
}
|
|
275
|
+
|
|
253
276
|
/**
|
|
254
277
|
* Free the source texture data for this Texture.
|
|
255
278
|
*
|
|
@@ -7,7 +7,7 @@ import { type RendererMainSettings } from './Renderer.js';
|
|
|
7
7
|
import type { AnimationSettings } from '../core/animations/CoreAnimation.js';
|
|
8
8
|
import type { IAnimationController } from '../common/IAnimationController.js';
|
|
9
9
|
import { isProductionEnvironment } from '../utils.js';
|
|
10
|
-
import
|
|
10
|
+
import { CoreTextNode, type CoreTextNodeProps } from '../core/CoreTextNode.js';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Inspector
|
|
@@ -166,6 +166,8 @@ const knownProperties = new Set<string>([
|
|
|
166
166
|
export class Inspector {
|
|
167
167
|
private root: HTMLElement | null = null;
|
|
168
168
|
private canvas: HTMLCanvasElement | null = null;
|
|
169
|
+
private mutationObserver: MutationObserver = new MutationObserver(() => {});
|
|
170
|
+
private resizeObserver: ResizeObserver = new ResizeObserver(() => {});
|
|
169
171
|
private height = 1080;
|
|
170
172
|
private width = 1920;
|
|
171
173
|
private scaleX = 1;
|
|
@@ -196,18 +198,18 @@ export class Inspector {
|
|
|
196
198
|
document.body.appendChild(this.root);
|
|
197
199
|
|
|
198
200
|
//listen for changes on canvas
|
|
199
|
-
|
|
201
|
+
this.mutationObserver = new MutationObserver(
|
|
200
202
|
this.setRootPosition.bind(this),
|
|
201
203
|
);
|
|
202
|
-
mutationObserver.observe(canvas, {
|
|
204
|
+
this.mutationObserver.observe(canvas, {
|
|
203
205
|
attributes: true,
|
|
204
206
|
childList: false,
|
|
205
207
|
subtree: false,
|
|
206
208
|
});
|
|
207
209
|
|
|
208
210
|
// Create a ResizeObserver to watch for changes in the element's size
|
|
209
|
-
|
|
210
|
-
resizeObserver.observe(canvas);
|
|
211
|
+
this.resizeObserver = new ResizeObserver(this.setRootPosition.bind(this));
|
|
212
|
+
this.resizeObserver.observe(canvas);
|
|
211
213
|
|
|
212
214
|
//listen for changes on window
|
|
213
215
|
window.addEventListener('resize', this.setRootPosition.bind(this));
|
|
@@ -259,6 +261,24 @@ export class Inspector {
|
|
|
259
261
|
return div;
|
|
260
262
|
}
|
|
261
263
|
|
|
264
|
+
createNodes(node: CoreNode): boolean {
|
|
265
|
+
if (this.root === null) {
|
|
266
|
+
return false;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
const div = this.root.querySelector(`[id="${node.id}"]`);
|
|
270
|
+
if (div === null && node instanceof CoreTextNode) {
|
|
271
|
+
this.createTextNode(node);
|
|
272
|
+
} else if (div === null && node instanceof CoreNode) {
|
|
273
|
+
this.createNode(node);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
for (const child of node.children) {
|
|
277
|
+
this.createNodes(child);
|
|
278
|
+
}
|
|
279
|
+
return true;
|
|
280
|
+
}
|
|
281
|
+
|
|
262
282
|
createNode(node: CoreNode): CoreNode {
|
|
263
283
|
const div = this.createDiv(node.id, node.props);
|
|
264
284
|
(div as HTMLElement & { node: CoreNode }).node = node;
|
|
@@ -323,6 +343,7 @@ export class Inspector {
|
|
|
323
343
|
this.destroyNode(node.id);
|
|
324
344
|
originalDestroy.call(node);
|
|
325
345
|
},
|
|
346
|
+
configurable: true,
|
|
326
347
|
});
|
|
327
348
|
|
|
328
349
|
const originalAnimate = node.animate;
|
|
@@ -343,11 +364,24 @@ export class Inspector {
|
|
|
343
364
|
|
|
344
365
|
return animationController;
|
|
345
366
|
},
|
|
367
|
+
configurable: true,
|
|
346
368
|
});
|
|
347
369
|
|
|
348
370
|
return node;
|
|
349
371
|
}
|
|
350
372
|
|
|
373
|
+
public destroy() {
|
|
374
|
+
// Remove DOM observers
|
|
375
|
+
this.mutationObserver.disconnect();
|
|
376
|
+
this.resizeObserver.disconnect();
|
|
377
|
+
|
|
378
|
+
// Remove resize listener
|
|
379
|
+
window.removeEventListener('resize', this.setRootPosition.bind(this));
|
|
380
|
+
if (this.root && this.root.parentNode) {
|
|
381
|
+
this.root.remove();
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
|
|
351
385
|
destroyNode(id: number) {
|
|
352
386
|
const div = document.getElementById(id.toString());
|
|
353
387
|
div?.remove();
|
|
@@ -475,6 +509,19 @@ export class Inspector {
|
|
|
475
509
|
}
|
|
476
510
|
}
|
|
477
511
|
|
|
512
|
+
updateViewport(
|
|
513
|
+
width: number,
|
|
514
|
+
height: number,
|
|
515
|
+
deviceLogicalPixelRatio: number,
|
|
516
|
+
) {
|
|
517
|
+
this.scaleX = deviceLogicalPixelRatio ?? 1;
|
|
518
|
+
this.scaleY = deviceLogicalPixelRatio ?? 1;
|
|
519
|
+
|
|
520
|
+
this.width = width;
|
|
521
|
+
this.height = height;
|
|
522
|
+
this.setRootPosition();
|
|
523
|
+
}
|
|
524
|
+
|
|
478
525
|
// simple animation handler
|
|
479
526
|
animateNode(
|
|
480
527
|
div: HTMLElement,
|