@solidtv/renderer 1.0.0
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/LICENSE +202 -0
- package/NOTICE +7 -0
- package/README.md +137 -0
- package/dist/exports/canvas-shaders.d.ts +10 -0
- package/dist/exports/canvas-shaders.js +11 -0
- package/dist/exports/canvas-shaders.js.map +1 -0
- package/dist/exports/canvas.d.ts +26 -0
- package/dist/exports/canvas.js +27 -0
- package/dist/exports/canvas.js.map +1 -0
- package/dist/exports/index.d.ts +50 -0
- package/dist/exports/index.js +40 -0
- package/dist/exports/index.js.map +1 -0
- package/dist/exports/inspector.d.ts +4 -0
- package/dist/exports/inspector.js +5 -0
- package/dist/exports/inspector.js.map +1 -0
- package/dist/exports/utils.d.ts +27 -0
- package/dist/exports/utils.js +28 -0
- package/dist/exports/utils.js.map +1 -0
- package/dist/exports/webgl-shaders.d.ts +11 -0
- package/dist/exports/webgl-shaders.js +12 -0
- package/dist/exports/webgl-shaders.js.map +1 -0
- package/dist/exports/webgl.d.ts +28 -0
- package/dist/exports/webgl.js +29 -0
- package/dist/exports/webgl.js.map +1 -0
- package/dist/src/common/CommonTypes.d.ts +110 -0
- package/dist/src/common/CommonTypes.js +2 -0
- package/dist/src/common/CommonTypes.js.map +1 -0
- package/dist/src/common/EventEmitter.d.ts +12 -0
- package/dist/src/common/EventEmitter.js +48 -0
- package/dist/src/common/EventEmitter.js.map +1 -0
- package/dist/src/common/IAnimationController.d.ts +58 -0
- package/dist/src/common/IAnimationController.js +2 -0
- package/dist/src/common/IAnimationController.js.map +1 -0
- package/dist/src/common/IEventEmitter.d.ts +8 -0
- package/dist/src/common/IEventEmitter.js +2 -0
- package/dist/src/common/IEventEmitter.js.map +1 -0
- 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 +908 -0
- package/dist/src/core/CoreNode.js +1837 -0
- package/dist/src/core/CoreNode.js.map +1 -0
- package/dist/src/core/CoreShaderManager.d.ts +38 -0
- package/dist/src/core/CoreShaderManager.js +123 -0
- package/dist/src/core/CoreShaderManager.js.map +1 -0
- package/dist/src/core/CoreTextNode.d.ts +91 -0
- package/dist/src/core/CoreTextNode.js +440 -0
- package/dist/src/core/CoreTextNode.js.map +1 -0
- package/dist/src/core/CoreTextureManager.d.ts +264 -0
- package/dist/src/core/CoreTextureManager.js +318 -0
- package/dist/src/core/CoreTextureManager.js.map +1 -0
- package/dist/src/core/Stage.d.ts +238 -0
- package/dist/src/core/Stage.js +804 -0
- package/dist/src/core/Stage.js.map +1 -0
- 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 +150 -0
- package/dist/src/core/TextureMemoryManager.js +239 -0
- package/dist/src/core/TextureMemoryManager.js.map +1 -0
- package/dist/src/core/animations/AnimationManager.d.ts +33 -0
- package/dist/src/core/animations/AnimationManager.js +137 -0
- package/dist/src/core/animations/AnimationManager.js.map +1 -0
- package/dist/src/core/animations/CoreAnimation.d.ts +12 -0
- package/dist/src/core/animations/CoreAnimation.js +107 -0
- package/dist/src/core/animations/CoreAnimation.js.map +1 -0
- package/dist/src/core/lib/ContextSpy.d.ts +12 -0
- package/dist/src/core/lib/ContextSpy.js +20 -0
- package/dist/src/core/lib/ContextSpy.js.map +1 -0
- package/dist/src/core/lib/ImageWorker.d.ts +16 -0
- package/dist/src/core/lib/ImageWorker.js +202 -0
- package/dist/src/core/lib/ImageWorker.js.map +1 -0
- package/dist/src/core/lib/Matrix3d.d.ts +74 -0
- package/dist/src/core/lib/Matrix3d.js +218 -0
- package/dist/src/core/lib/Matrix3d.js.map +1 -0
- package/dist/src/core/lib/RenderCoords.d.ts +12 -0
- package/dist/src/core/lib/RenderCoords.js +35 -0
- package/dist/src/core/lib/RenderCoords.js.map +1 -0
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +782 -0
- package/dist/src/core/lib/WebGlContextWrapper.js +1143 -0
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -0
- 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/lib/colorParser.d.ts +21 -0
- package/dist/src/core/lib/colorParser.js +54 -0
- package/dist/src/core/lib/colorParser.js.map +1 -0
- package/dist/src/core/lib/textureCompression.d.ts +28 -0
- package/dist/src/core/lib/textureCompression.js +363 -0
- package/dist/src/core/lib/textureCompression.js.map +1 -0
- package/dist/src/core/lib/textureSvg.d.ts +16 -0
- package/dist/src/core/lib/textureSvg.js +45 -0
- package/dist/src/core/lib/textureSvg.js.map +1 -0
- package/dist/src/core/lib/utils.d.ts +66 -0
- package/dist/src/core/lib/utils.js +268 -0
- package/dist/src/core/lib/utils.js.map +1 -0
- package/dist/src/core/lib/validateImageBitmap.d.ts +7 -0
- package/dist/src/core/lib/validateImageBitmap.js +68 -0
- package/dist/src/core/lib/validateImageBitmap.js.map +1 -0
- 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 +13 -0
- package/dist/src/core/renderers/CoreContextTexture.js +16 -0
- package/dist/src/core/renderers/CoreContextTexture.js.map +1 -0
- package/dist/src/core/renderers/CoreRenderOp.d.ts +3 -0
- package/dist/src/core/renderers/CoreRenderOp.js +3 -0
- package/dist/src/core/renderers/CoreRenderOp.js.map +1 -0
- package/dist/src/core/renderers/CoreRenderer.d.ts +81 -0
- package/dist/src/core/renderers/CoreRenderer.js +14 -0
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -0
- package/dist/src/core/renderers/CoreShaderNode.d.ts +69 -0
- package/dist/src/core/renderers/CoreShaderNode.js +130 -0
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -0
- package/dist/src/core/renderers/CoreShaderProgram.d.ts +4 -0
- package/dist/src/core/renderers/CoreShaderProgram.js +2 -0
- package/dist/src/core/renderers/CoreShaderProgram.js.map +1 -0
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +36 -0
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +221 -0
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -0
- package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +21 -0
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +42 -0
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -0
- package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +17 -0
- package/dist/src/core/renderers/canvas/CanvasTexture.js +110 -0
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.d.ts +41 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.js +88 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +14 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +45 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +22 -0
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +49 -0
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +67 -0
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +259 -0
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +221 -0
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +1015 -0
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +213 -0
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js +331 -0
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +37 -0
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +240 -0
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -0
- package/dist/src/core/renderers/webgl/internal/BufferCollection.d.ts +28 -0
- package/dist/src/core/renderers/webgl/internal/BufferCollection.js +39 -0
- package/dist/src/core/renderers/webgl/internal/BufferCollection.js.map +1 -0
- package/dist/src/core/renderers/webgl/internal/RendererUtils.d.ts +55 -0
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js +88 -0
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -0
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +74 -0
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +83 -0
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -0
- package/dist/src/core/renderers/webgl/internal/WebGlUtils.d.ts +10 -0
- package/dist/src/core/renderers/webgl/internal/WebGlUtils.js +13 -0
- package/dist/src/core/renderers/webgl/internal/WebGlUtils.js.map +1 -0
- package/dist/src/core/shaders/canvas/Border.d.ts +15 -0
- package/dist/src/core/shaders/canvas/Border.js +83 -0
- package/dist/src/core/shaders/canvas/Border.js.map +1 -0
- package/dist/src/core/shaders/canvas/HolePunch.d.ts +7 -0
- package/dist/src/core/shaders/canvas/HolePunch.js +22 -0
- package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -0
- package/dist/src/core/shaders/canvas/LinearGradient.d.ts +10 -0
- package/dist/src/core/shaders/canvas/LinearGradient.js +32 -0
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -0
- package/dist/src/core/shaders/canvas/RadialGradient.d.ts +11 -0
- package/dist/src/core/shaders/canvas/RadialGradient.js +54 -0
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -0
- package/dist/src/core/shaders/canvas/Rounded.d.ts +7 -0
- package/dist/src/core/shaders/canvas/Rounded.js +17 -0
- package/dist/src/core/shaders/canvas/Rounded.js.map +1 -0
- package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +10 -0
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js +57 -0
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -0
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +7 -0
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +61 -0
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -0
- package/dist/src/core/shaders/canvas/RoundedWithShadow.d.ts +7 -0
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +26 -0
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -0
- package/dist/src/core/shaders/canvas/Shadow.d.ts +8 -0
- package/dist/src/core/shaders/canvas/Shadow.js +15 -0
- package/dist/src/core/shaders/canvas/Shadow.js.map +1 -0
- package/dist/src/core/shaders/canvas/utils/render.d.ts +5 -0
- package/dist/src/core/shaders/canvas/utils/render.js +81 -0
- package/dist/src/core/shaders/canvas/utils/render.js.map +1 -0
- package/dist/src/core/shaders/templates/BorderTemplate.d.ts +47 -0
- package/dist/src/core/shaders/templates/BorderTemplate.js +77 -0
- package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +46 -0
- package/dist/src/core/shaders/templates/HolePunchTemplate.js +19 -0
- package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/LinearGradientTemplate.d.ts +23 -0
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js +31 -0
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +33 -0
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js +33 -0
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/RoundedTemplate.d.ts +29 -0
- package/dist/src/core/shaders/templates/RoundedTemplate.js +51 -0
- package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +7 -0
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +8 -0
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +8 -0
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +9 -0
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +6 -0
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +7 -0
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +34 -0
- package/dist/src/core/shaders/templates/ShadowTemplate.js +50 -0
- package/dist/src/core/shaders/templates/ShadowTemplate.js.map +1 -0
- package/dist/src/core/shaders/utils.d.ts +5 -0
- 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.d.ts +3 -0
- package/dist/src/core/shaders/webgl/Border.js +153 -0
- package/dist/src/core/shaders/webgl/Border.js.map +1 -0
- package/dist/src/core/shaders/webgl/Default.d.ts +2 -0
- package/dist/src/core/shaders/webgl/Default.js +51 -0
- package/dist/src/core/shaders/webgl/Default.js.map +1 -0
- package/dist/src/core/shaders/webgl/HolePunch.d.ts +3 -0
- package/dist/src/core/shaders/webgl/HolePunch.js +49 -0
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -0
- package/dist/src/core/shaders/webgl/LinearGradient.d.ts +3 -0
- package/dist/src/core/shaders/webgl/LinearGradient.js +114 -0
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -0
- package/dist/src/core/shaders/webgl/RadialGradient.d.ts +3 -0
- package/dist/src/core/shaders/webgl/RadialGradient.js +81 -0
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -0
- package/dist/src/core/shaders/webgl/Rounded.d.ts +7 -0
- package/dist/src/core/shaders/webgl/Rounded.js +88 -0
- package/dist/src/core/shaders/webgl/Rounded.js.map +1 -0
- package/dist/src/core/shaders/webgl/RoundedWithBorder.d.ts +3 -0
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +202 -0
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -0
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.d.ts +3 -0
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +223 -0
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -0
- package/dist/src/core/shaders/webgl/RoundedWithShadow.d.ts +3 -0
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +123 -0
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -0
- package/dist/src/core/shaders/webgl/SdfShader.d.ts +13 -0
- package/dist/src/core/shaders/webgl/SdfShader.js +72 -0
- package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -0
- package/dist/src/core/shaders/webgl/Shadow.d.ts +3 -0
- package/dist/src/core/shaders/webgl/Shadow.js +115 -0
- package/dist/src/core/shaders/webgl/Shadow.js.map +1 -0
- 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 +17 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js +249 -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 +406 -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 +36 -0
- package/dist/src/core/textures/ColorTexture.js +57 -0
- package/dist/src/core/textures/ColorTexture.js.map +1 -0
- package/dist/src/core/textures/ImageTexture.d.ts +131 -0
- package/dist/src/core/textures/ImageTexture.js +211 -0
- package/dist/src/core/textures/ImageTexture.js.map +1 -0
- package/dist/src/core/textures/NoiseTexture.d.ts +43 -0
- package/dist/src/core/textures/NoiseTexture.js +50 -0
- package/dist/src/core/textures/NoiseTexture.js.map +1 -0
- package/dist/src/core/textures/RenderTexture.d.ts +29 -0
- package/dist/src/core/textures/RenderTexture.js +36 -0
- package/dist/src/core/textures/RenderTexture.js.map +1 -0
- package/dist/src/core/textures/SubTexture.d.ts +61 -0
- package/dist/src/core/textures/SubTexture.js +99 -0
- package/dist/src/core/textures/SubTexture.js.map +1 -0
- package/dist/src/core/textures/Texture.d.ts +275 -0
- package/dist/src/core/textures/Texture.js +326 -0
- package/dist/src/core/textures/Texture.js.map +1 -0
- package/dist/src/core/utils.d.ts +23 -0
- package/dist/src/core/utils.js +155 -0
- package/dist/src/core/utils.js.map +1 -0
- package/dist/src/main-api/INode.d.ts +65 -0
- package/dist/src/main-api/INode.js +2 -0
- package/dist/src/main-api/INode.js.map +1 -0
- package/dist/src/main-api/Inspector.d.ts +154 -0
- package/dist/src/main-api/Inspector.js +844 -0
- package/dist/src/main-api/Inspector.js.map +1 -0
- package/dist/src/main-api/Renderer.d.ts +629 -0
- package/dist/src/main-api/Renderer.js +471 -0
- package/dist/src/main-api/Renderer.js.map +1 -0
- package/dist/src/main-api/utils.d.ts +2 -0
- package/dist/src/main-api/utils.js +34 -0
- package/dist/src/main-api/utils.js.map +1 -0
- package/dist/src/utils.d.ts +123 -0
- package/dist/src/utils.js +234 -0
- package/dist/src/utils.js.map +1 -0
- package/dist/tsconfig.dist.tsbuildinfo +1 -0
- package/exports/canvas-shaders.ts +11 -0
- package/exports/canvas.ts +27 -0
- package/exports/index.ts +69 -0
- package/exports/inspector.ts +5 -0
- package/exports/utils.ts +32 -0
- package/exports/webgl-shaders.ts +12 -0
- package/exports/webgl.ts +33 -0
- package/package.json +99 -0
- package/src/common/CommonTypes.ts +145 -0
- package/src/common/EventEmitter.ts +58 -0
- package/src/common/IAnimationController.ts +65 -0
- package/src/common/IEventEmitter.ts +11 -0
- package/src/core/Autosizer.ts +205 -0
- package/src/core/CoreNode.test.ts +535 -0
- package/src/core/CoreNode.ts +2883 -0
- package/src/core/CoreShaderManager.ts +170 -0
- package/src/core/CoreTextNode.ts +573 -0
- package/src/core/CoreTextureManager.ts +552 -0
- package/src/core/Stage.ts +1037 -0
- package/src/core/TextureError.ts +46 -0
- package/src/core/TextureMemoryManager.ts +378 -0
- package/src/core/animations/AnimationManager.ts +178 -0
- package/src/core/animations/CoreAnimation.ts +138 -0
- package/src/core/lib/ContextSpy.ts +22 -0
- package/src/core/lib/ImageWorker.ts +292 -0
- package/src/core/lib/Matrix3d.ts +231 -0
- package/src/core/lib/RenderCoords.ts +55 -0
- package/src/core/lib/WebGlContextWrapper.ts +1448 -0
- package/src/core/lib/collectionUtils.ts +99 -0
- package/src/core/lib/colorCache.ts +20 -0
- package/src/core/lib/colorParser.ts +66 -0
- package/src/core/lib/textureCompression.ts +492 -0
- package/src/core/lib/textureSvg.ts +59 -0
- package/src/core/lib/utils.ts +400 -0
- package/src/core/lib/validateImageBitmap.ts +87 -0
- package/src/core/platforms/Platform.ts +64 -0
- package/src/core/platforms/web/WebPlatform.ts +132 -0
- package/src/core/renderers/CoreContextTexture.ts +25 -0
- package/src/core/renderers/CoreRenderOp.ts +3 -0
- package/src/core/renderers/CoreRenderer.ts +101 -0
- package/src/core/renderers/CoreShaderNode.ts +202 -0
- package/src/core/renderers/CoreShaderProgram.ts +4 -0
- package/src/core/renderers/canvas/CanvasRenderer.ts +274 -0
- package/src/core/renderers/canvas/CanvasShaderNode.ts +79 -0
- package/src/core/renderers/canvas/CanvasTexture.ts +141 -0
- package/src/core/renderers/webgl/SdfRenderOp.ts +103 -0
- package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +70 -0
- package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +76 -0
- package/src/core/renderers/webgl/WebGlCtxTexture.ts +332 -0
- package/src/core/renderers/webgl/WebGlRenderer.ts +1323 -0
- package/src/core/renderers/webgl/WebGlShaderNode.ts +423 -0
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +346 -0
- package/src/core/renderers/webgl/internal/BufferCollection.ts +46 -0
- package/src/core/renderers/webgl/internal/RendererUtils.ts +136 -0
- package/src/core/renderers/webgl/internal/ShaderUtils.ts +262 -0
- package/src/core/renderers/webgl/internal/WebGlUtils.ts +16 -0
- package/src/core/shaders/canvas/Border.ts +119 -0
- package/src/core/shaders/canvas/HolePunch.ts +38 -0
- package/src/core/shaders/canvas/LinearGradient.ts +54 -0
- package/src/core/shaders/canvas/RadialGradient.ts +82 -0
- package/src/core/shaders/canvas/Rounded.ts +38 -0
- package/src/core/shaders/canvas/RoundedWithBorder.ts +105 -0
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +118 -0
- package/src/core/shaders/canvas/RoundedWithShadow.ts +56 -0
- package/src/core/shaders/canvas/Shadow.ts +35 -0
- package/src/core/shaders/canvas/utils/render.ts +143 -0
- package/src/core/shaders/templates/BorderTemplate.ts +128 -0
- package/src/core/shaders/templates/HolePunchTemplate.ts +65 -0
- package/src/core/shaders/templates/LinearGradientTemplate.ts +54 -0
- package/src/core/shaders/templates/RadialGradientTemplate.ts +66 -0
- package/src/core/shaders/templates/RoundedTemplate.ts +81 -0
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +21 -0
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +23 -0
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +18 -0
- package/src/core/shaders/templates/ShadowTemplate.ts +89 -0
- package/src/core/shaders/utils.ts +30 -0
- package/src/core/shaders/webgl/Border.ts +158 -0
- package/src/core/shaders/webgl/Default.ts +52 -0
- package/src/core/shaders/webgl/HolePunch.ts +58 -0
- package/src/core/shaders/webgl/LinearGradient.ts +119 -0
- package/src/core/shaders/webgl/RadialGradient.ts +91 -0
- package/src/core/shaders/webgl/Rounded.ts +97 -0
- package/src/core/shaders/webgl/RoundedWithBorder.ts +212 -0
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +235 -0
- package/src/core/shaders/webgl/RoundedWithShadow.ts +132 -0
- package/src/core/shaders/webgl/SdfShader.ts +73 -0
- package/src/core/shaders/webgl/Shadow.ts +119 -0
- 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 +352 -0
- package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
- package/src/core/text-rendering/TextRenderer.ts +449 -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 +85 -0
- package/src/core/textures/ImageTexture.ts +394 -0
- package/src/core/textures/NoiseTexture.ts +87 -0
- package/src/core/textures/RenderTexture.ts +68 -0
- package/src/core/textures/SubTexture.ts +165 -0
- package/src/core/textures/Texture.ts +505 -0
- package/src/core/utils.ts +210 -0
- package/src/env.d.ts +7 -0
- package/src/main-api/INode.ts +92 -0
- package/src/main-api/Inspector.ts +1267 -0
- package/src/main-api/Renderer.ts +1011 -0
- package/src/main-api/utils.ts +45 -0
- package/src/utils.ts +302 -0
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import { ImageWorkerManager } from './lib/ImageWorker.js';
|
|
2
|
+
import type { CoreRenderer } from './renderers/CoreRenderer.js';
|
|
3
|
+
import { ColorTexture } from './textures/ColorTexture.js';
|
|
4
|
+
import { ImageTexture } from './textures/ImageTexture.js';
|
|
5
|
+
import { NoiseTexture } from './textures/NoiseTexture.js';
|
|
6
|
+
import { SubTexture } from './textures/SubTexture.js';
|
|
7
|
+
import { RenderTexture } from './textures/RenderTexture.js';
|
|
8
|
+
import { Texture } from './textures/Texture.js';
|
|
9
|
+
import { EventEmitter } from '../common/EventEmitter.js';
|
|
10
|
+
import type { Stage } from './Stage.js';
|
|
11
|
+
import type { Platform } from './platforms/Platform.js';
|
|
12
|
+
/**
|
|
13
|
+
* Augmentable map of texture class types
|
|
14
|
+
*
|
|
15
|
+
* @remarks
|
|
16
|
+
* This interface can be augmented by other modules/apps to add additional
|
|
17
|
+
* texture types. The ones included directly here are the ones that are
|
|
18
|
+
* included in the core library.
|
|
19
|
+
*/
|
|
20
|
+
export interface TextureMap {
|
|
21
|
+
ColorTexture: typeof ColorTexture;
|
|
22
|
+
ImageTexture: typeof ImageTexture;
|
|
23
|
+
NoiseTexture: typeof NoiseTexture;
|
|
24
|
+
SubTexture: typeof SubTexture;
|
|
25
|
+
RenderTexture: typeof RenderTexture;
|
|
26
|
+
}
|
|
27
|
+
export type ExtractProps<Type> = Type extends {
|
|
28
|
+
z$__type__Props: infer Props;
|
|
29
|
+
} ? Props : never;
|
|
30
|
+
/**
|
|
31
|
+
* Contains information about the texture manager's internal state
|
|
32
|
+
* for debugging purposes.
|
|
33
|
+
*/
|
|
34
|
+
export interface TextureManagerDebugInfo {
|
|
35
|
+
keyCacheSize: number;
|
|
36
|
+
}
|
|
37
|
+
export interface TextureManagerSettings {
|
|
38
|
+
numImageWorkers: number;
|
|
39
|
+
createImageBitmapSupport: 'auto' | 'basic' | 'options' | 'full';
|
|
40
|
+
maxRetryCount: number;
|
|
41
|
+
}
|
|
42
|
+
export type ResizeModeOptions = {
|
|
43
|
+
/**
|
|
44
|
+
* Specifies that the image should be resized to cover the specified dimensions.
|
|
45
|
+
*/
|
|
46
|
+
type: 'cover';
|
|
47
|
+
/**
|
|
48
|
+
* The horizontal clipping position
|
|
49
|
+
* To clip the left, set clipX to 0. To clip the right, set clipX to 1.
|
|
50
|
+
* clipX 0.5 will clip a equal amount from left and right
|
|
51
|
+
*
|
|
52
|
+
* @defaultValue 0.5
|
|
53
|
+
*/
|
|
54
|
+
clipX?: number;
|
|
55
|
+
/**
|
|
56
|
+
* The vertical clipping position
|
|
57
|
+
* To clip the top, set clipY to 0. To clip the bottom, set clipY to 1.
|
|
58
|
+
* clipY 0.5 will clip a equal amount from top and bottom
|
|
59
|
+
*
|
|
60
|
+
* @defaultValue 0.5
|
|
61
|
+
*/
|
|
62
|
+
clipY?: number;
|
|
63
|
+
} | {
|
|
64
|
+
/**
|
|
65
|
+
* Specifies that the image should be resized to fit within the specified dimensions.
|
|
66
|
+
*/
|
|
67
|
+
type: 'contain';
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Universal options for all texture types
|
|
71
|
+
*
|
|
72
|
+
* @remarks
|
|
73
|
+
* Texture Options provide a way to specify options that are relevant to the
|
|
74
|
+
* texture loading process (including caching) and specifically for how a
|
|
75
|
+
* texture is rendered within a specific Node (or set of Nodes).
|
|
76
|
+
*
|
|
77
|
+
* They are not used in determining the cache key for a texture (except if
|
|
78
|
+
* the `cacheKey` option is provided explicitly to oveerride the default
|
|
79
|
+
* cache key for the texture instance) nor are they stored/referenced within
|
|
80
|
+
* the texture instance itself. Instead, the options are stored/referenced
|
|
81
|
+
* within individual Nodes. So a single texture instance can be used in
|
|
82
|
+
* multiple Nodes each using a different set of options.
|
|
83
|
+
*/
|
|
84
|
+
export interface TextureOptions {
|
|
85
|
+
/**
|
|
86
|
+
* Preload the texture immediately even if it's not being rendered to the
|
|
87
|
+
* screen.
|
|
88
|
+
*
|
|
89
|
+
* @remarks
|
|
90
|
+
* This allows the texture to be used immediately without any delay when it
|
|
91
|
+
* is first needed for rendering. Otherwise the loading process will start
|
|
92
|
+
* when the texture is first rendered, which may cause a delay in that texture
|
|
93
|
+
* being shown properly.
|
|
94
|
+
*
|
|
95
|
+
* @defaultValue `false`
|
|
96
|
+
*/
|
|
97
|
+
preload?: boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Prevent clean up of the texture when it is no longer being used.
|
|
100
|
+
*
|
|
101
|
+
* @remarks
|
|
102
|
+
* This is useful when you want to keep the texture in memory for later use.
|
|
103
|
+
* Regardless of whether the texture is being used or not, it will not be
|
|
104
|
+
* cleaned up.
|
|
105
|
+
*
|
|
106
|
+
* @defaultValue `false`
|
|
107
|
+
*/
|
|
108
|
+
preventCleanup?: boolean;
|
|
109
|
+
/**
|
|
110
|
+
* Number of times to retry loading a failed texture
|
|
111
|
+
*
|
|
112
|
+
* @remarks
|
|
113
|
+
* When a texture fails to load, Lightning will retry up to this many times
|
|
114
|
+
* before permanently giving up. Each retry will clear the texture ownership
|
|
115
|
+
* and then re-establish it to trigger a new load attempt.
|
|
116
|
+
*
|
|
117
|
+
* Set to null to disable retries. Set to 0 to always try once and never retry.
|
|
118
|
+
* This is typically only used on ImageTexture instances.
|
|
119
|
+
*
|
|
120
|
+
*/
|
|
121
|
+
maxRetryCount?: number | null;
|
|
122
|
+
/**
|
|
123
|
+
* Flip the texture horizontally when rendering
|
|
124
|
+
*
|
|
125
|
+
* @defaultValue `false`
|
|
126
|
+
*/
|
|
127
|
+
flipX?: boolean;
|
|
128
|
+
/**
|
|
129
|
+
* Flip the texture vertically when rendering
|
|
130
|
+
*
|
|
131
|
+
* @defaultValue `false`
|
|
132
|
+
*/
|
|
133
|
+
flipY?: boolean;
|
|
134
|
+
/**
|
|
135
|
+
* You can use resizeMode to determine the clipping automatically from the width
|
|
136
|
+
* and height of the source texture. This can be convenient if you are unsure about
|
|
137
|
+
* the exact image sizes but want the image to cover a specific area.
|
|
138
|
+
*
|
|
139
|
+
* The resize modes cover and contain are supported
|
|
140
|
+
*/
|
|
141
|
+
resizeMode?: ResizeModeOptions;
|
|
142
|
+
}
|
|
143
|
+
export declare class CoreTextureManager extends EventEmitter {
|
|
144
|
+
/**
|
|
145
|
+
* Map of textures by cache key
|
|
146
|
+
*/
|
|
147
|
+
keyCache: Map<string, Texture>;
|
|
148
|
+
/**
|
|
149
|
+
* Map of cache keys by texture
|
|
150
|
+
*/
|
|
151
|
+
inverseKeyCache: WeakMap<Texture, string>;
|
|
152
|
+
/**
|
|
153
|
+
* Map of texture constructors by their type name
|
|
154
|
+
*/
|
|
155
|
+
txConstructors: Partial<TextureMap>;
|
|
156
|
+
maxRetryCount: number;
|
|
157
|
+
private uploadTextureQueue;
|
|
158
|
+
private initialized;
|
|
159
|
+
private stage;
|
|
160
|
+
private numImageWorkers;
|
|
161
|
+
platform: Platform;
|
|
162
|
+
imageWorkerManager: ImageWorkerManager | null;
|
|
163
|
+
hasCreateImageBitmap: boolean;
|
|
164
|
+
imageBitmapSupported: {
|
|
165
|
+
basic: boolean;
|
|
166
|
+
options: boolean;
|
|
167
|
+
full: boolean;
|
|
168
|
+
};
|
|
169
|
+
hasWorker: boolean;
|
|
170
|
+
/**
|
|
171
|
+
* Renderer that this texture manager is associated with
|
|
172
|
+
*
|
|
173
|
+
* @remarks
|
|
174
|
+
* This MUST be set before the texture manager is used. Otherwise errors
|
|
175
|
+
* will occur when using the texture manager.
|
|
176
|
+
*/
|
|
177
|
+
renderer: CoreRenderer;
|
|
178
|
+
/**
|
|
179
|
+
* The current frame time in milliseconds
|
|
180
|
+
*
|
|
181
|
+
* @remarks
|
|
182
|
+
* This is used to populate the `lastRenderableChangeTime` property of
|
|
183
|
+
* {@link Texture} instances when their renderable state changes.
|
|
184
|
+
*
|
|
185
|
+
* Set by stage via `updateFrameTime` method.
|
|
186
|
+
*/
|
|
187
|
+
frameTime: number;
|
|
188
|
+
constructor(stage: Stage, settings: TextureManagerSettings);
|
|
189
|
+
registerTextureType<Type extends keyof TextureMap>(textureType: Type, textureClass: TextureMap[Type]): void;
|
|
190
|
+
private initialize;
|
|
191
|
+
/**
|
|
192
|
+
* Enqueue a texture for uploading to the GPU.
|
|
193
|
+
*
|
|
194
|
+
* @param texture - The texture to upload
|
|
195
|
+
*/
|
|
196
|
+
enqueueUploadTexture(texture: Texture): void;
|
|
197
|
+
/**
|
|
198
|
+
* Create a texture
|
|
199
|
+
*
|
|
200
|
+
* @param textureType - The type of texture to create
|
|
201
|
+
* @param props - The properties to use for the texture
|
|
202
|
+
*/
|
|
203
|
+
createTexture<Type extends keyof TextureMap>(textureType: Type, props: ExtractProps<TextureMap[Type]>): InstanceType<TextureMap[Type]>;
|
|
204
|
+
/**
|
|
205
|
+
* Override loadTexture to use the batched approach.
|
|
206
|
+
*
|
|
207
|
+
* @param texture - The texture to load
|
|
208
|
+
* @param immediate - Whether to prioritize the texture for immediate loading
|
|
209
|
+
*/
|
|
210
|
+
loadTexture(texture: Texture, priority?: boolean): Promise<void>;
|
|
211
|
+
/**
|
|
212
|
+
* Upload a texture to the GPU
|
|
213
|
+
*
|
|
214
|
+
* @param texture Texture to upload
|
|
215
|
+
* @returns Promise that resolves when the texture is fully loaded
|
|
216
|
+
*/
|
|
217
|
+
uploadTexture(texture: Texture): Promise<void>;
|
|
218
|
+
/**
|
|
219
|
+
* Check if a texture is being processed
|
|
220
|
+
*/
|
|
221
|
+
isProcessingTexture(texture: Texture): boolean;
|
|
222
|
+
/**
|
|
223
|
+
* Process a limited number of uploads.
|
|
224
|
+
*
|
|
225
|
+
* @param maxProcessingTime - The maximum processing time in milliseconds
|
|
226
|
+
*/
|
|
227
|
+
processSome(maxProcessingTime: number): Promise<void>;
|
|
228
|
+
hasUpdates(): boolean;
|
|
229
|
+
/**
|
|
230
|
+
* Initialize a texture to the cache
|
|
231
|
+
*
|
|
232
|
+
* @param texture Texture to cache
|
|
233
|
+
* @param cacheKey Cache key for the texture
|
|
234
|
+
*/
|
|
235
|
+
initTextureToCache(texture: Texture, cacheKey: string): void;
|
|
236
|
+
/**
|
|
237
|
+
* Get a texture from the cache
|
|
238
|
+
*
|
|
239
|
+
* @param cacheKey
|
|
240
|
+
*/
|
|
241
|
+
getTextureFromCache(cacheKey: string): Texture | undefined;
|
|
242
|
+
/**
|
|
243
|
+
* Remove a texture from the cache
|
|
244
|
+
*
|
|
245
|
+
* @remarks
|
|
246
|
+
* Called by Texture Cleanup when a texture is freed.
|
|
247
|
+
*
|
|
248
|
+
* @param texture
|
|
249
|
+
*/
|
|
250
|
+
removeTextureFromCache(texture: Texture): void;
|
|
251
|
+
/**
|
|
252
|
+
* Remove texture from the upload queue
|
|
253
|
+
*
|
|
254
|
+
* @param texture - The texture to remove
|
|
255
|
+
*/
|
|
256
|
+
removeTextureFromQueue(texture: Texture): void;
|
|
257
|
+
/**
|
|
258
|
+
* Resolve a parent texture from the cache or fallback to the provided texture.
|
|
259
|
+
*
|
|
260
|
+
* @param texture - The provided texture to resolve.
|
|
261
|
+
* @returns The cached or provided texture.
|
|
262
|
+
*/
|
|
263
|
+
resolveParentTexture(texture: ImageTexture): Texture;
|
|
264
|
+
}
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
import { ImageWorkerManager } from './lib/ImageWorker.js';
|
|
2
|
+
import { ColorTexture } from './textures/ColorTexture.js';
|
|
3
|
+
import { ImageTexture } from './textures/ImageTexture.js';
|
|
4
|
+
import { NoiseTexture } from './textures/NoiseTexture.js';
|
|
5
|
+
import { SubTexture } from './textures/SubTexture.js';
|
|
6
|
+
import { RenderTexture } from './textures/RenderTexture.js';
|
|
7
|
+
import { Texture, TextureType } from './textures/Texture.js';
|
|
8
|
+
import { EventEmitter } from '../common/EventEmitter.js';
|
|
9
|
+
import { validateCreateImageBitmap, } from './lib/validateImageBitmap.js';
|
|
10
|
+
import { TextureError, TextureErrorCode } from './TextureError.js';
|
|
11
|
+
export class CoreTextureManager extends EventEmitter {
|
|
12
|
+
/**
|
|
13
|
+
* Map of textures by cache key
|
|
14
|
+
*/
|
|
15
|
+
keyCache = new Map();
|
|
16
|
+
/**
|
|
17
|
+
* Map of cache keys by texture
|
|
18
|
+
*/
|
|
19
|
+
inverseKeyCache = new WeakMap();
|
|
20
|
+
/**
|
|
21
|
+
* Map of texture constructors by their type name
|
|
22
|
+
*/
|
|
23
|
+
txConstructors = {};
|
|
24
|
+
maxRetryCount;
|
|
25
|
+
uploadTextureQueue = new Set();
|
|
26
|
+
initialized = false;
|
|
27
|
+
stage;
|
|
28
|
+
numImageWorkers;
|
|
29
|
+
platform;
|
|
30
|
+
imageWorkerManager = null;
|
|
31
|
+
hasCreateImageBitmap = false;
|
|
32
|
+
imageBitmapSupported = {
|
|
33
|
+
basic: false,
|
|
34
|
+
options: false,
|
|
35
|
+
full: false,
|
|
36
|
+
};
|
|
37
|
+
hasWorker = !!self.Worker;
|
|
38
|
+
/**
|
|
39
|
+
* Renderer that this texture manager is associated with
|
|
40
|
+
*
|
|
41
|
+
* @remarks
|
|
42
|
+
* This MUST be set before the texture manager is used. Otherwise errors
|
|
43
|
+
* will occur when using the texture manager.
|
|
44
|
+
*/
|
|
45
|
+
renderer;
|
|
46
|
+
/**
|
|
47
|
+
* The current frame time in milliseconds
|
|
48
|
+
*
|
|
49
|
+
* @remarks
|
|
50
|
+
* This is used to populate the `lastRenderableChangeTime` property of
|
|
51
|
+
* {@link Texture} instances when their renderable state changes.
|
|
52
|
+
*
|
|
53
|
+
* Set by stage via `updateFrameTime` method.
|
|
54
|
+
*/
|
|
55
|
+
frameTime = 0;
|
|
56
|
+
constructor(stage, settings) {
|
|
57
|
+
super();
|
|
58
|
+
const { numImageWorkers, createImageBitmapSupport, maxRetryCount } = settings;
|
|
59
|
+
this.stage = stage;
|
|
60
|
+
this.platform = stage.platform;
|
|
61
|
+
this.numImageWorkers = numImageWorkers;
|
|
62
|
+
this.maxRetryCount = maxRetryCount;
|
|
63
|
+
if (createImageBitmapSupport === 'auto') {
|
|
64
|
+
validateCreateImageBitmap(this.platform)
|
|
65
|
+
.then((result) => {
|
|
66
|
+
this.initialize(result);
|
|
67
|
+
})
|
|
68
|
+
.catch(() => {
|
|
69
|
+
console.warn('[Lightning] createImageBitmap is not supported on this browser. ImageTexture will be slower.');
|
|
70
|
+
// initialized without image worker manager and createImageBitmap
|
|
71
|
+
this.initialized = true;
|
|
72
|
+
this.emit('initialized');
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
this.initialize({
|
|
77
|
+
basic: createImageBitmapSupport === 'basic',
|
|
78
|
+
options: createImageBitmapSupport === 'options',
|
|
79
|
+
full: createImageBitmapSupport === 'full',
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
this.registerTextureType('ImageTexture', ImageTexture);
|
|
83
|
+
this.registerTextureType('ColorTexture', ColorTexture);
|
|
84
|
+
this.registerTextureType('NoiseTexture', NoiseTexture);
|
|
85
|
+
this.registerTextureType('SubTexture', SubTexture);
|
|
86
|
+
this.registerTextureType('RenderTexture', RenderTexture);
|
|
87
|
+
}
|
|
88
|
+
registerTextureType(textureType, textureClass) {
|
|
89
|
+
this.txConstructors[textureType] = textureClass;
|
|
90
|
+
}
|
|
91
|
+
initialize(support) {
|
|
92
|
+
this.hasCreateImageBitmap =
|
|
93
|
+
support.basic || support.options || support.full;
|
|
94
|
+
this.imageBitmapSupported = support;
|
|
95
|
+
if (this.hasCreateImageBitmap === false) {
|
|
96
|
+
console.warn('[Lightning] createImageBitmap is not supported on this browser. ImageTexture will be slower.');
|
|
97
|
+
}
|
|
98
|
+
if (this.hasCreateImageBitmap === true &&
|
|
99
|
+
this.hasWorker === true &&
|
|
100
|
+
this.numImageWorkers > 0) {
|
|
101
|
+
this.imageWorkerManager = new ImageWorkerManager(this.numImageWorkers, support);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
console.warn('[Lightning] Imageworker is 0 or not supported on this browser. Image loading will be slower.');
|
|
105
|
+
}
|
|
106
|
+
this.initialized = true;
|
|
107
|
+
this.emit('initialized');
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Enqueue a texture for uploading to the GPU.
|
|
111
|
+
*
|
|
112
|
+
* @param texture - The texture to upload
|
|
113
|
+
*/
|
|
114
|
+
enqueueUploadTexture(texture) {
|
|
115
|
+
this.uploadTextureQueue.add(texture);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Create a texture
|
|
119
|
+
*
|
|
120
|
+
* @param textureType - The type of texture to create
|
|
121
|
+
* @param props - The properties to use for the texture
|
|
122
|
+
*/
|
|
123
|
+
createTexture(textureType, props) {
|
|
124
|
+
let texture;
|
|
125
|
+
const TextureClass = this.txConstructors[textureType];
|
|
126
|
+
if (!TextureClass) {
|
|
127
|
+
throw new TextureError(TextureErrorCode.TEXTURE_TYPE_NOT_REGISTERED, `Texture type "${textureType}" is not registered`);
|
|
128
|
+
}
|
|
129
|
+
const resolvedProps = TextureClass.resolveDefaults(props);
|
|
130
|
+
const cacheKey = TextureClass.makeCacheKey(resolvedProps);
|
|
131
|
+
if (cacheKey && this.keyCache.has(cacheKey)) {
|
|
132
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
133
|
+
texture = this.keyCache.get(cacheKey);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any
|
|
137
|
+
texture = new TextureClass(this, resolvedProps);
|
|
138
|
+
if (cacheKey) {
|
|
139
|
+
this.initTextureToCache(texture, cacheKey);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return texture;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Override loadTexture to use the batched approach.
|
|
146
|
+
*
|
|
147
|
+
* @param texture - The texture to load
|
|
148
|
+
* @param immediate - Whether to prioritize the texture for immediate loading
|
|
149
|
+
*/
|
|
150
|
+
async loadTexture(texture, priority) {
|
|
151
|
+
this.stage.txMemManager.removeFromOrphanedTextures(texture);
|
|
152
|
+
if (texture.type === TextureType.subTexture) {
|
|
153
|
+
// ignore subtextures - they get loaded through their parent
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
if (texture.state === 'loaded') {
|
|
157
|
+
// if the texture is already loaded, just return
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
// if we're not initialized, just queue the texture into the upload queue
|
|
161
|
+
if (this.initialized === false) {
|
|
162
|
+
this.uploadTextureQueue.add(texture);
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
texture.setState('loading');
|
|
166
|
+
// Get texture data - early return on failure
|
|
167
|
+
const textureDataResult = await texture.getTextureData().catch((err) => {
|
|
168
|
+
console.error(err);
|
|
169
|
+
texture.setState('failed', new TextureError(TextureErrorCode.TEXTURE_DATA_NULL));
|
|
170
|
+
return null;
|
|
171
|
+
});
|
|
172
|
+
// Early return if texture data fetch failed
|
|
173
|
+
if (textureDataResult === null || texture.state === 'failed') {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
// Handle non-image textures: upload immediately
|
|
177
|
+
const shouldUploadImmediately = texture.type !== TextureType.image || priority === true;
|
|
178
|
+
if (shouldUploadImmediately === true) {
|
|
179
|
+
await this.uploadTexture(texture).catch((err) => {
|
|
180
|
+
console.error(`Failed to upload texture:`, err);
|
|
181
|
+
texture.setState('failed', new TextureError(TextureErrorCode.TEXTURE_DATA_NULL));
|
|
182
|
+
});
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
// Queue image textures for throttled upload
|
|
186
|
+
this.enqueueUploadTexture(texture);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Upload a texture to the GPU
|
|
190
|
+
*
|
|
191
|
+
* @param texture Texture to upload
|
|
192
|
+
* @returns Promise that resolves when the texture is fully loaded
|
|
193
|
+
*/
|
|
194
|
+
async uploadTexture(texture) {
|
|
195
|
+
if (this.stage.txMemManager.doNotExceedCriticalThreshold === true &&
|
|
196
|
+
this.stage.txMemManager.criticalCleanupRequested === true) {
|
|
197
|
+
// we're at a critical memory threshold, don't upload textures
|
|
198
|
+
texture.setState('failed', new TextureError(TextureErrorCode.MEMORY_THRESHOLD_EXCEEDED));
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
if (texture.state === 'failed' || texture.state === 'freed') {
|
|
202
|
+
// don't upload failed or freed textures
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
if (texture.state === 'loaded') {
|
|
206
|
+
// already loaded
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
if (texture.textureData === null) {
|
|
210
|
+
texture.setState('failed', new TextureError(TextureErrorCode.TEXTURE_DATA_NULL, 'Texture data is null, cannot upload texture'));
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
const coreContext = texture.loadCtxTexture();
|
|
214
|
+
if (coreContext !== null && coreContext.state === 'loaded') {
|
|
215
|
+
texture.setState('loaded');
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
await coreContext.load();
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Check if a texture is being processed
|
|
222
|
+
*/
|
|
223
|
+
isProcessingTexture(texture) {
|
|
224
|
+
return this.uploadTextureQueue.has(texture);
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Process a limited number of uploads.
|
|
228
|
+
*
|
|
229
|
+
* @param maxProcessingTime - The maximum processing time in milliseconds
|
|
230
|
+
*/
|
|
231
|
+
async processSome(maxProcessingTime) {
|
|
232
|
+
if (this.initialized === false) {
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
const platform = this.platform;
|
|
236
|
+
const startTime = platform.getTimeStamp();
|
|
237
|
+
// Process uploads - await each upload to prevent GPU overload
|
|
238
|
+
while (this.uploadTextureQueue.size > 0 &&
|
|
239
|
+
platform.getTimeStamp() - startTime < maxProcessingTime) {
|
|
240
|
+
const [texture] = this.uploadTextureQueue;
|
|
241
|
+
if (!texture)
|
|
242
|
+
break;
|
|
243
|
+
this.uploadTextureQueue.delete(texture);
|
|
244
|
+
try {
|
|
245
|
+
if (texture.textureData === null) {
|
|
246
|
+
await texture.getTextureData();
|
|
247
|
+
}
|
|
248
|
+
await this.uploadTexture(texture);
|
|
249
|
+
}
|
|
250
|
+
catch (error) {
|
|
251
|
+
console.error('Failed to upload texture:', error);
|
|
252
|
+
// Continue with next texture instead of stopping entire queue
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
hasUpdates() {
|
|
257
|
+
return this.uploadTextureQueue.size > 0;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Initialize a texture to the cache
|
|
261
|
+
*
|
|
262
|
+
* @param texture Texture to cache
|
|
263
|
+
* @param cacheKey Cache key for the texture
|
|
264
|
+
*/
|
|
265
|
+
initTextureToCache(texture, cacheKey) {
|
|
266
|
+
const { keyCache, inverseKeyCache } = this;
|
|
267
|
+
keyCache.set(cacheKey, texture);
|
|
268
|
+
inverseKeyCache.set(texture, cacheKey);
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Get a texture from the cache
|
|
272
|
+
*
|
|
273
|
+
* @param cacheKey
|
|
274
|
+
*/
|
|
275
|
+
getTextureFromCache(cacheKey) {
|
|
276
|
+
return this.keyCache.get(cacheKey);
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Remove a texture from the cache
|
|
280
|
+
*
|
|
281
|
+
* @remarks
|
|
282
|
+
* Called by Texture Cleanup when a texture is freed.
|
|
283
|
+
*
|
|
284
|
+
* @param texture
|
|
285
|
+
*/
|
|
286
|
+
removeTextureFromCache(texture) {
|
|
287
|
+
const { inverseKeyCache, keyCache } = this;
|
|
288
|
+
const cacheKey = inverseKeyCache.get(texture);
|
|
289
|
+
if (cacheKey) {
|
|
290
|
+
keyCache.delete(cacheKey);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Remove texture from the upload queue
|
|
295
|
+
*
|
|
296
|
+
* @param texture - The texture to remove
|
|
297
|
+
*/
|
|
298
|
+
removeTextureFromQueue(texture) {
|
|
299
|
+
this.uploadTextureQueue.delete(texture);
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Resolve a parent texture from the cache or fallback to the provided texture.
|
|
303
|
+
*
|
|
304
|
+
* @param texture - The provided texture to resolve.
|
|
305
|
+
* @returns The cached or provided texture.
|
|
306
|
+
*/
|
|
307
|
+
resolveParentTexture(texture) {
|
|
308
|
+
if (!texture?.props) {
|
|
309
|
+
return texture;
|
|
310
|
+
}
|
|
311
|
+
const cacheKey = ImageTexture.makeCacheKey(texture.props);
|
|
312
|
+
const cachedTexture = cacheKey
|
|
313
|
+
? this.getTextureFromCache(cacheKey)
|
|
314
|
+
: undefined;
|
|
315
|
+
return cachedTexture ?? texture;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
//# sourceMappingURL=CoreTextureManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CoreTextureManager.js","sourceRoot":"","sources":["../../../src/core/CoreTextureManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EACL,yBAAyB,GAE1B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAkJnE,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAClD;;OAEG;IACH,QAAQ,GAAyB,IAAI,GAAG,EAAE,CAAC;IAE3C;;OAEG;IACH,eAAe,GAA6B,IAAI,OAAO,EAAE,CAAC;IAE1D;;OAEG;IACH,cAAc,GAAwB,EAAE,CAAC;IAElC,aAAa,CAAS;IACrB,kBAAkB,GAAiB,IAAI,GAAG,EAAE,CAAC;IAC7C,WAAW,GAAG,KAAK,CAAC;IACpB,KAAK,CAAQ;IACb,eAAe,CAAS;IAEzB,QAAQ,CAAW;IAE1B,kBAAkB,GAA8B,IAAI,CAAC;IACrD,oBAAoB,GAAG,KAAK,CAAC;IAC7B,oBAAoB,GAAG;QACrB,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,KAAK;KACZ,CAAC;IAEF,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1B;;;;;;OAMG;IACH,QAAQ,CAAgB;IAExB;;;;;;;;OAQG;IACH,SAAS,GAAG,CAAC,CAAC;IAEd,YAAY,KAAY,EAAE,QAAgC;QACxD,KAAK,EAAE,CAAC;QAER,MAAM,EAAE,eAAe,EAAE,wBAAwB,EAAE,aAAa,EAAE,GAChE,QAAQ,CAAC;QAEX,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,IAAI,wBAAwB,KAAK,MAAM,EAAE,CAAC;YACxC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC;iBACrC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACf,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,EAAE;gBACV,OAAO,CAAC,IAAI,CACV,8FAA8F,CAC/F,CAAC;gBAEF,iEAAiE;gBACjE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,CAAC;gBACd,KAAK,EAAE,wBAAwB,KAAK,OAAO;gBAC3C,OAAO,EAAE,wBAAwB,KAAK,SAAS;gBAC/C,IAAI,EAAE,wBAAwB,KAAK,MAAM;aAC1C,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IAC3D,CAAC;IAED,mBAAmB,CACjB,WAAiB,EACjB,YAA8B;QAE9B,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC;IAClD,CAAC;IAEO,UAAU,CAAC,OAAiC;QAClD,IAAI,CAAC,oBAAoB;YACvB,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;QACnD,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC;QAEpC,IAAI,IAAI,CAAC,oBAAoB,KAAK,KAAK,EAAE,CAAC;YACxC,OAAO,CAAC,IAAI,CACV,8FAA8F,CAC/F,CAAC;QACJ,CAAC;QAED,IACE,IAAI,CAAC,oBAAoB,KAAK,IAAI;YAClC,IAAI,CAAC,SAAS,KAAK,IAAI;YACvB,IAAI,CAAC,eAAe,GAAG,CAAC,EACxB,CAAC;YACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,CAC9C,IAAI,CAAC,eAAe,EACpB,OAAO,CACR,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CACV,8FAA8F,CAC/F,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACH,oBAAoB,CAAC,OAAgB;QACnC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACH,aAAa,CACX,WAAiB,EACjB,KAAqC;QAErC,IAAI,OAA4B,CAAC;QACjC,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,YAAY,CACpB,gBAAgB,CAAC,2BAA2B,EAC5C,iBAAiB,WAAW,qBAAqB,CAClD,CAAC;QACJ,CAAC;QACD,MAAM,aAAa,GAAG,YAAY,CAAC,eAAe,CAAC,KAAY,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,aAAoB,CAAC,CAAC;QACjE,IAAI,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,oEAAoE;YACpE,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,qGAAqG;YACrG,OAAO,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,aAAoB,CAAC,CAAC;YAEvD,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,OAAO,OAAyC,CAAC;IACnD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW,CAAC,OAAgB,EAAE,QAAkB;QACpD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;QAE5D,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,UAAU,EAAE,CAAC;YAC5C,4DAA4D;YAC5D,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/B,gDAAgD;YAChD,OAAO;QACT,CAAC;QAED,yEAAyE;QACzE,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QAED,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAE5B,6CAA6C;QAC7C,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACrE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,OAAO,CAAC,QAAQ,CACd,QAAQ,EACR,IAAI,YAAY,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CACrD,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,4CAA4C;QAC5C,IAAI,iBAAiB,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,gDAAgD;QAChD,MAAM,uBAAuB,GAC3B,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,KAAK,IAAI,QAAQ,KAAK,IAAI,CAAC;QAC1D,IAAI,uBAAuB,KAAK,IAAI,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC9C,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;gBAChD,OAAO,CAAC,QAAQ,CACd,QAAQ,EACR,IAAI,YAAY,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CACrD,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,4CAA4C;QAC5C,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CAAC,OAAgB;QAClC,IACE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,4BAA4B,KAAK,IAAI;YAC7D,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,wBAAwB,KAAK,IAAI,EACzD,CAAC;YACD,8DAA8D;YAC9D,OAAO,CAAC,QAAQ,CACd,QAAQ,EACR,IAAI,YAAY,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,CAC7D,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YAC5D,wCAAwC;YACxC,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/B,iBAAiB;YACjB,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YACjC,OAAO,CAAC,QAAQ,CACd,QAAQ,EACR,IAAI,YAAY,CACd,gBAAgB,CAAC,iBAAiB,EAClC,6CAA6C,CAC9C,CACF,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;QAC7C,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,OAAgB;QAClC,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,iBAAyB;QACzC,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;QAE1C,8DAA8D;QAC9D,OACE,IAAI,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC;YAChC,QAAQ,CAAC,YAAY,EAAE,GAAG,SAAS,GAAG,iBAAiB,EACvD,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAC1C,IAAI,CAAC,OAAO;gBAAE,MAAM;YACpB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,CAAC;gBACH,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;oBACjC,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;gBACjC,CAAC;gBACD,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACpC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;gBAClD,8DAA8D;YAChE,CAAC;QACH,CAAC;IACH,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;OAKG;IACH,kBAAkB,CAAC,OAAgB,EAAE,QAAgB;QACnD,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QAC3C,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,QAAgB;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;;OAOG;IACH,sBAAsB,CAAC,OAAgB;QACrC,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAC3C,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,sBAAsB,CAAC,OAAgB;QACrC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;OAKG;IACH,oBAAoB,CAAC,OAAqB;QACxC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;YACpB,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,QAAQ;YAC5B,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;YACpC,CAAC,CAAC,SAAS,CAAC;QACd,OAAO,aAAa,IAAI,OAAO,CAAC;IAClC,CAAC;CACF"}
|