From 1698765c27df17b81cf0cfe4cba26eedfcd48de4 Mon Sep 17 00:00:00 2001 From: webseon Date: Thu, 11 Jun 2026 11:00:59 +0900 Subject: [PATCH 1/2] =?UTF-8?q?GitHub=20Actions=20=EC=9B=8C=ED=81=AC?= =?UTF-8?q?=ED=94=8C=EB=A1=9C=EC=9A=B0=20=EC=88=98=EC=A0=95:=20Root=20?= =?UTF-8?q?=EC=82=AC=EC=9D=B4=ED=8A=B8=EB=A7=B5=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=EB=AA=85=20=EB=B3=80=EA=B2=BD=20=EB=B0=98=EC=98=81=20(`sitemap?= =?UTF-8?q?.xml`=20=E2=86=92=20`sitemap=5Fv2.xml`)=20=EB=B0=8F=20=EA=B8=B0?= =?UTF-8?q?=EC=A1=B4=20=ED=8C=8C=EC=9D=BC=20=EC=82=AD=EC=A0=9C=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/gh-pages-docs.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/gh-pages-docs.yml b/.github/workflows/gh-pages-docs.yml index 9ad3780fef..eda9fc71e4 100644 --- a/.github/workflows/gh-pages-docs.yml +++ b/.github/workflows/gh-pages-docs.yml @@ -48,11 +48,11 @@ jobs: git config --local user.email "github-actions[bot]@users.noreply.github.com" git config --local user.name "github-actions[bot]" - # docs 폴더 삭제 반영 (존재할 경우에만) - git rm -rf --ignore-unmatch docs/ sitemap/ + # docs 폴더 및 기존 sitemap.xml 삭제 반영 (존재할 경우에만) + git rm -rf --ignore-unmatch docs/ sitemap/ sitemap.xml # 빌드 결과물 및 사이트맵 파일 추가 - git add dist/ manual/ examples/ sitemap.xml sitemap-examples.xml -f + git add dist/ manual/ examples/ sitemap_v2.xml sitemap-examples.xml -f # sitemap 폴더가 있을 경우 추가 (없을 수도 있음) git add sitemap/ -f || true From 55e90e51376f5f69ee96c8519cf647483d35bbf6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 11 Jun 2026 02:02:45 +0000 Subject: [PATCH 2/2] chore: update build, inspector and examples --- examples/2d/blendMode/basic/index.html | 9 +++++---- examples/2d/blendMode/basic/index.js | 4 ++-- examples/2d/group2D/basic/index.html | 9 +++++---- examples/2d/group2D/basic/index.js | 4 ++-- examples/2d/helloWorld2D/index.html | 9 +++++---- examples/2d/helloWorld2D/index.js | 4 ++-- examples/2d/interaction/keyboardEvent/index.html | 9 +++++---- examples/2d/interaction/keyboardEvent/index.js | 4 ++-- .../2d/interaction/mouseEvent/sprite2D/index.html | 9 +++++---- .../2d/interaction/mouseEvent/sprite2D/index.js | 6 +++--- .../mouseEvent/spriteSheet2D/index.html | 9 +++++---- .../interaction/mouseEvent/spriteSheet2D/index.js | 6 +++--- .../interaction/mouseEvent/textField2D/index.html | 9 +++++---- .../2d/interaction/mouseEvent/textField2D/index.js | 6 +++--- examples/2d/line2D/linear/index.html | 9 +++++---- examples/2d/line2D/linear/index.js | 4 ++-- examples/2d/opacity/basic/index.html | 9 +++++---- examples/2d/opacity/basic/index.js | 4 ++-- examples/2d/sprite2D/basic/index.html | 9 +++++---- examples/2d/sprite2D/basic/index.js | 4 ++-- examples/2d/sprite2D/childMethod/index.html | 9 +++++---- examples/2d/sprite2D/childMethod/index.js | 4 ++-- examples/2d/sprite2D/hierarchy/index.html | 9 +++++---- examples/2d/sprite2D/hierarchy/index.js | 4 ++-- examples/2d/sprite2D/pivot/index.html | 9 +++++---- examples/2d/sprite2D/pivot/index.js | 4 ++-- examples/2d/spriteSheet2D/basic/index.html | 9 +++++---- examples/2d/spriteSheet2D/basic/index.js | 4 ++-- examples/2d/textField2D/basic/index.html | 9 +++++---- examples/2d/textField2D/basic/index.js | 4 ++-- examples/2d/tint/2dObjectTint/index.html | 9 +++++---- examples/2d/tint/2dObjectTint/index.js | 4 ++-- examples/2d/tint/basic/index.html | 9 +++++---- examples/2d/tint/basic/index.js | 4 ++-- examples/2d/view/multiView/index.html | 9 +++++---- examples/2d/view/multiView/index.js | 4 ++-- examples/2d/view/multiViewWith3D/index.html | 9 +++++---- examples/2d/view/multiViewWith3D/index.js | 4 ++-- examples/3d/controller/followController/index.html | 9 +++++---- examples/3d/controller/followController/index.js | 4 ++-- examples/3d/controller/freeController/index.html | 9 +++++---- examples/3d/controller/freeController/index.js | 4 ++-- .../3d/controller/isometricController/index.html | 9 +++++---- .../3d/controller/isometricController/index.js | 4 ++-- examples/3d/controller/orbitController/index.html | 9 +++++---- examples/3d/controller/orbitController/index.js | 4 ++-- .../screenToWorld/index.html | 9 +++++---- .../screenToWorld/index.js | 4 ++-- .../worldToLocal/index.html | 9 +++++---- .../coordinateTransformation/worldToLocal/index.js | 4 ++-- examples/3d/drawDebugger/basic/index.html | 9 +++++---- examples/3d/drawDebugger/basic/index.js | 4 ++-- .../3d/frustumCulling/distanceCulling/index.html | 9 +++++---- .../3d/frustumCulling/distanceCulling/index.js | 4 ++-- .../3d/frustumCulling/frustumCulling/index.html | 9 +++++---- examples/3d/frustumCulling/frustumCulling/index.js | 4 ++-- examples/3d/group3D/basic/index.html | 9 +++++---- examples/3d/group3D/basic/index.js | 4 ++-- examples/3d/helloWorld/index.html | 9 +++++---- examples/3d/helloWorld/index.js | 4 ++-- examples/3d/indirectDrawTest/index.html | 9 +++++---- examples/3d/indirectDrawTest/index.js | 4 ++-- examples/3d/instancedMesh/simple/index.html | 9 +++++---- examples/3d/instancedMesh/simple/index.js | 4 ++-- examples/3d/instancedMesh/sphere/index.html | 9 +++++---- examples/3d/instancedMesh/sphere/index.js | 4 ++-- examples/3d/interaction/keyboardEvent/index.html | 9 +++++---- examples/3d/interaction/keyboardEvent/index.js | 4 ++-- examples/3d/interaction/mouseEvent/mesh/index.html | 9 +++++---- examples/3d/interaction/mouseEvent/mesh/index.js | 6 +++--- .../interaction/mouseEvent/raycasting/index.html | 9 +++++---- .../3d/interaction/mouseEvent/raycasting/index.js | 6 +++--- .../3d/interaction/mouseEvent/sprite3D/index.html | 9 +++++---- .../3d/interaction/mouseEvent/sprite3D/index.js | 6 +++--- .../mouseEvent/spriteSheet3D/index.html | 9 +++++---- .../interaction/mouseEvent/spriteSheet3D/index.js | 6 +++--- .../interaction/mouseEvent/textField3D/index.html | 9 +++++---- .../3d/interaction/mouseEvent/textField3D/index.js | 6 +++--- examples/3d/light/directionalLight/index.html | 9 +++++---- examples/3d/light/directionalLight/index.js | 4 ++-- examples/3d/light/pointLight/index.html | 9 +++++---- examples/3d/light/pointLight/index.js | 4 ++-- examples/3d/light/pointLightPerformance/index.html | 9 +++++---- examples/3d/light/pointLightPerformance/index.js | 4 ++-- examples/3d/light/pointLightWithGltf/index.html | 9 +++++---- examples/3d/light/pointLightWithGltf/index.js | 4 ++-- examples/3d/light/spotLight/index.html | 9 +++++---- examples/3d/light/spotLight/index.js | 4 ++-- examples/3d/light/spotLightPerformance/index.html | 9 +++++---- examples/3d/light/spotLightPerformance/index.js | 4 ++-- examples/3d/light/spotLightWithGltf/index.html | 9 +++++---- examples/3d/light/spotLightWithGltf/index.js | 4 ++-- examples/3d/line3D/bezier/index.html | 9 +++++---- examples/3d/line3D/bezier/index.js | 4 ++-- examples/3d/line3D/catmullRom/index.html | 9 +++++---- examples/3d/line3D/catmullRom/index.js | 4 ++-- examples/3d/line3D/linear/index.html | 9 +++++---- examples/3d/line3D/linear/index.js | 4 ++-- examples/3d/lod/InstanceMeshGPULOD/index.html | 9 +++++---- examples/3d/lod/InstanceMeshGPULOD/index.js | 4 ++-- .../3d/lod/InstanceMeshGPULOD_material/index.html | 9 +++++---- .../3d/lod/InstanceMeshGPULOD_material/index.js | 4 ++-- examples/3d/lod/MeshCPULOD/index.html | 9 +++++---- examples/3d/lod/MeshCPULOD/index.js | 4 ++-- examples/3d/lod/MeshCPULOD_material/index.html | 9 +++++---- examples/3d/lod/MeshCPULOD_material/index.js | 4 ++-- examples/3d/material/bitmapMaterial/index.html | 9 +++++---- examples/3d/material/bitmapMaterial/index.js | 4 ++-- examples/3d/material/colorMaterial/index.html | 9 +++++---- examples/3d/material/colorMaterial/index.js | 4 ++-- .../3d/material/fragmentVariantTest/index.html | 9 +++++---- examples/3d/material/fragmentVariantTest/index.js | 4 ++-- examples/3d/material/opacity/index.html | 9 +++++---- examples/3d/material/opacity/index.js | 4 ++-- examples/3d/material/phongMaterial/index.html | 9 +++++---- examples/3d/material/phongMaterial/index.js | 4 ++-- .../3d/material/phongMaterialTextures/index.html | 9 +++++---- .../3d/material/phongMaterialTextures/index.js | 4 ++-- examples/3d/material/uvTransform/index.html | 9 +++++---- examples/3d/material/uvTransform/index.js | 4 ++-- examples/3d/mesh/basicMesh/index.html | 9 +++++---- examples/3d/mesh/basicMesh/index.js | 4 ++-- .../3d/mesh/boundBox/meshAABBIntersects/index.html | 9 +++++---- .../3d/mesh/boundBox/meshAABBIntersects/index.js | 4 ++-- examples/3d/mesh/boundBox/meshBoundBox/index.html | 9 +++++---- examples/3d/mesh/boundBox/meshBoundBox/index.js | 4 ++-- .../3d/mesh/boundBox/meshOBBIntersects/index.html | 9 +++++---- .../3d/mesh/boundBox/meshOBBIntersects/index.js | 4 ++-- examples/3d/mesh/childMethod/index.html | 9 +++++---- examples/3d/mesh/childMethod/index.js | 4 ++-- examples/3d/mesh/hierarchy/index.html | 9 +++++---- examples/3d/mesh/hierarchy/index.js | 4 ++-- examples/3d/mesh/lookAt/index.html | 9 +++++---- examples/3d/mesh/lookAt/index.js | 4 ++-- examples/3d/mesh/pivot/index.html | 9 +++++---- examples/3d/mesh/pivot/index.js | 4 ++-- examples/3d/noiseTexture/simplex/basic/index.html | 9 +++++---- examples/3d/noiseTexture/simplex/basic/index.js | 4 ++-- .../noiseTexture/simplex/displacement/index.html | 9 +++++---- .../3d/noiseTexture/simplex/displacement/index.js | 4 ++-- examples/3d/noiseTexture/simplex/fire/index.html | 9 +++++---- examples/3d/noiseTexture/simplex/fire/index.js | 4 ++-- examples/3d/noiseTexture/voronoi/basic/index.html | 9 +++++---- examples/3d/noiseTexture/voronoi/basic/index.js | 4 ++-- examples/3d/particle/basic/index.html | 9 +++++---- examples/3d/particle/basic/index.js | 4 ++-- examples/3d/particle/performance/index.html | 9 +++++---- examples/3d/particle/performance/index.js | 4 ++-- examples/3d/primitive/box/index.html | 9 +++++---- examples/3d/primitive/box/index.js | 4 ++-- examples/3d/primitive/capsule/index.html | 9 +++++---- examples/3d/primitive/capsule/index.js | 4 ++-- examples/3d/primitive/circle/index.html | 9 +++++---- examples/3d/primitive/circle/index.js | 4 ++-- examples/3d/primitive/cone/index.html | 9 +++++---- examples/3d/primitive/cone/index.js | 4 ++-- examples/3d/primitive/cylinder/index.html | 9 +++++---- examples/3d/primitive/cylinder/index.js | 4 ++-- examples/3d/primitive/ground/index.html | 9 +++++---- examples/3d/primitive/ground/index.js | 4 ++-- examples/3d/primitive/plane/index.html | 9 +++++---- examples/3d/primitive/plane/index.js | 4 ++-- examples/3d/primitive/primitives/index.html | 9 +++++---- examples/3d/primitive/primitives/index.js | 4 ++-- examples/3d/primitive/ring/index.html | 9 +++++---- examples/3d/primitive/ring/index.js | 4 ++-- examples/3d/primitive/roundedBox/index.html | 9 +++++---- examples/3d/primitive/roundedBox/index.js | 4 ++-- examples/3d/primitive/sphere/index.html | 9 +++++---- examples/3d/primitive/sphere/index.js | 4 ++-- examples/3d/primitive/torus/index.html | 9 +++++---- examples/3d/primitive/torus/index.js | 4 ++-- examples/3d/primitive/torusKnot/index.html | 9 +++++---- examples/3d/primitive/torusKnot/index.js | 4 ++-- examples/3d/scene/index.html | 9 +++++---- examples/3d/scene/index.js | 4 ++-- examples/3d/shadow/directionalShadow/index.html | 9 +++++---- examples/3d/shadow/directionalShadow/index.js | 4 ++-- .../3d/shadow/gltfDirectionalShadow/index.html | 9 +++++---- examples/3d/shadow/gltfDirectionalShadow/index.js | 4 ++-- examples/3d/skyAtmosphere/generator/index.html | 9 +++++---- examples/3d/skyAtmosphere/generator/index.js | 4 ++-- examples/3d/skyAtmosphere/gltf/index.html | 9 +++++---- examples/3d/skyAtmosphere/gltf/index.js | 4 ++-- .../3d/skyAtmosphere/scatteringTest/index.html | 9 +++++---- examples/3d/skyAtmosphere/scatteringTest/index.js | 4 ++-- examples/3d/skyAtmosphere/skyAtmosphere/index.html | 9 +++++---- examples/3d/skyAtmosphere/skyAtmosphere/index.js | 4 ++-- examples/3d/skybox/ibl/brdfLutTest/index.html | 9 +++++---- examples/3d/skybox/ibl/brdfLutTest/index.js | 4 ++-- examples/3d/skybox/ibl/iblTest/index.html | 9 +++++---- examples/3d/skybox/ibl/iblTest/index.js | 4 ++-- examples/3d/skybox/ibl/iblTextureSize/index.html | 9 +++++---- examples/3d/skybox/ibl/iblTextureSize/index.js | 4 ++-- examples/3d/skybox/ibl/irradianceTest/index.html | 9 +++++---- examples/3d/skybox/ibl/irradianceTest/index.js | 4 ++-- examples/3d/skybox/ibl/skyboxWithIbl/index.html | 9 +++++---- examples/3d/skybox/ibl/skyboxWithIbl/index.js | 4 ++-- examples/3d/skybox/skybox/index.html | 9 +++++---- examples/3d/skybox/skybox/index.js | 4 ++-- .../skybox/transition/skyboxTransition/index.html | 9 +++++---- .../3d/skybox/transition/skyboxTransition/index.js | 4 ++-- .../skyboxTransitionWithNoiseTexture/index.html | 9 +++++---- .../skyboxTransitionWithNoiseTexture/index.js | 4 ++-- examples/3d/sprite/sprite3D/index.html | 9 +++++---- examples/3d/sprite/sprite3D/index.js | 4 ++-- examples/3d/sprite/sprite3DCompare/index.html | 9 +++++---- examples/3d/sprite/sprite3DCompare/index.js | 4 ++-- examples/3d/sprite/spriteSheet3D/index.html | 9 +++++---- examples/3d/sprite/spriteSheet3D/index.js | 4 ++-- examples/3d/sprite/spriteSheet3DCompare/index.html | 9 +++++---- examples/3d/sprite/spriteSheet3DCompare/index.js | 4 ++-- examples/3d/textField/textField3D/index.html | 9 +++++---- examples/3d/textField/textField3D/index.js | 4 ++-- .../3d/textField/textField3DCompare/index.html | 9 +++++---- examples/3d/textField/textField3DCompare/index.js | 4 ++-- .../3d/texture/bitmapTextureSampler/index.html | 9 +++++---- examples/3d/texture/bitmapTextureSampler/index.js | 4 ++-- examples/3d/texture/maxAnisotropy/index.html | 9 +++++---- examples/3d/texture/maxAnisotropy/index.js | 4 ++-- examples/3d/texture/samplerAddressMode/index.html | 9 +++++---- examples/3d/texture/samplerAddressMode/index.js | 4 ++-- examples/3d/texture/samplerCombination/index.html | 9 +++++---- examples/3d/texture/samplerCombination/index.js | 4 ++-- examples/3d/tint/basic/index.html | 9 +++++---- examples/3d/tint/basic/index.js | 4 ++-- examples/3d/transparentSort/index.html | 9 +++++---- examples/3d/transparentSort/index.js | 4 ++-- examples/3d/view/multiView/index.html | 9 +++++---- examples/3d/view/multiView/index.js | 4 ++-- examples/3d/view/singleView/index.html | 9 +++++---- examples/3d/view/singleView/index.js | 4 ++-- examples/exampleHelper/dist/GuiPanel-D7hqjzkr.js | 2 +- examples/exampleHelper/dist/IconButton-D8-442jY.js | 2 +- .../exampleHelper/dist/exampleList-B00YxcCV.js | 2 +- examples/exampleHelper/dist/examples.js | 2 +- examples/exampleHelper/dist/index.js | 10 +++++----- examples/exampleHelper/dist/store-2JcZHIgY.js | 2 +- .../exampleHelper/dist/vendor-react-BwJpJ84T.js | 2 +- examples/gltf/animation/basicAnimations/index.html | 9 +++++---- examples/gltf/animation/basicAnimations/index.js | 4 ++-- examples/gltf/animation/brainStem/index.html | 9 +++++---- examples/gltf/animation/brainStem/index.js | 4 ++-- examples/gltf/animation/cesiumMan/index.html | 9 +++++---- examples/gltf/animation/cesiumMan/index.js | 4 ++-- .../gltf/animation/interpolationTest/index.html | 9 +++++---- examples/gltf/animation/interpolationTest/index.js | 4 ++-- examples/gltf/animation/morphStressTest/index.html | 9 +++++---- examples/gltf/animation/morphStressTest/index.js | 4 ++-- .../performance/highMorphTarget/index.html | 9 +++++---- .../animation/performance/highMorphTarget/index.js | 4 ++-- .../performance/highVertexLoadSkinning/index.html | 9 +++++---- .../performance/highVertexLoadSkinning/index.js | 4 ++-- .../performance/mediumLoadSkinning/index.html | 9 +++++---- .../performance/mediumLoadSkinning/index.js | 4 ++-- .../gltf/animation/recursiveSkeletons/index.html | 9 +++++---- .../gltf/animation/recursiveSkeletons/index.js | 4 ++-- examples/gltf/animation/riggedFigure/index.html | 9 +++++---- examples/gltf/animation/riggedFigure/index.js | 4 ++-- examples/gltf/animation/riggedSimple/index.html | 9 +++++---- examples/gltf/animation/riggedSimple/index.js | 4 ++-- examples/gltf/animation/simpleMorph/index.html | 9 +++++---- examples/gltf/animation/simpleMorph/index.js | 4 ++-- examples/gltf/animation/simpleSkin/index.html | 9 +++++---- examples/gltf/animation/simpleSkin/index.js | 4 ++-- examples/gltf/basic/alphaBlendModeTest/index.html | 9 +++++---- examples/gltf/basic/alphaBlendModeTest/index.js | 4 ++-- examples/gltf/basic/boxVertexColors/index.html | 9 +++++---- examples/gltf/basic/boxVertexColors/index.js | 4 ++-- .../gltf/basic/compareAlphaCoverage/index.html | 9 +++++---- examples/gltf/basic/compareAlphaCoverage/index.js | 4 ++-- .../gltf/basic/compareAmbientOcclusion/index.html | 9 +++++---- .../gltf/basic/compareAmbientOcclusion/index.js | 4 ++-- examples/gltf/basic/compareBaseColor/index.html | 9 +++++---- examples/gltf/basic/compareBaseColor/index.js | 4 ++-- examples/gltf/basic/compareMetallic/index.html | 9 +++++---- examples/gltf/basic/compareMetallic/index.js | 4 ++-- examples/gltf/basic/compareNormal/index.html | 9 +++++---- examples/gltf/basic/compareNormal/index.js | 4 ++-- examples/gltf/basic/compareRoughness/index.html | 9 +++++---- examples/gltf/basic/compareRoughness/index.js | 4 ++-- examples/gltf/basic/environmentTest/index.html | 9 +++++---- examples/gltf/basic/environmentTest/index.js | 4 ++-- examples/gltf/basic/generateNormalTest/index.html | 9 +++++---- examples/gltf/basic/generateNormalTest/index.js | 4 ++-- examples/gltf/basic/metalRoughSpheres/index.html | 9 +++++---- examples/gltf/basic/metalRoughSpheres/index.js | 4 ++-- .../basic/metalRoughSpheresNoTextures/index.html | 9 +++++---- .../basic/metalRoughSpheresNoTextures/index.js | 4 ++-- examples/gltf/basic/multiUVTest/index.html | 9 +++++---- examples/gltf/basic/multiUVTest/index.js | 4 ++-- examples/gltf/basic/negativeScaleTest/index.html | 9 +++++---- examples/gltf/basic/negativeScaleTest/index.js | 4 ++-- .../gltf/basic/normalTangentMirrorTest/index.html | 9 +++++---- .../gltf/basic/normalTangentMirrorTest/index.js | 4 ++-- examples/gltf/basic/normalTangentTest/index.html | 9 +++++---- examples/gltf/basic/normalTangentTest/index.js | 4 ++-- examples/gltf/basic/orientationTest/index.html | 9 +++++---- examples/gltf/basic/orientationTest/index.js | 4 ++-- .../gltf/basic/textureCoordinateTest/index.html | 9 +++++---- examples/gltf/basic/textureCoordinateTest/index.js | 4 ++-- examples/gltf/basic/textureEncodingTest/index.html | 9 +++++---- examples/gltf/basic/textureEncodingTest/index.js | 4 ++-- .../textureLinearInterpolationTest/index.html | 9 +++++---- .../basic/textureLinearInterpolationTest/index.js | 4 ++-- examples/gltf/basic/textureSettingsTest/index.html | 9 +++++---- examples/gltf/basic/textureSettingsTest/index.js | 4 ++-- examples/gltf/basic/vertexColorTest/index.html | 9 +++++---- examples/gltf/basic/vertexColorTest/index.js | 4 ++-- examples/gltf/basic/waterBottle/index.html | 9 +++++---- examples/gltf/basic/waterBottle/index.js | 4 ++-- .../anisotropy/anisotropyBarnLamp/index.html | 9 +++++---- .../anisotropy/anisotropyBarnLamp/index.js | 4 ++-- .../anisotropy/anisotropyDiscTest/index.html | 9 +++++---- .../anisotropy/anisotropyDiscTest/index.js | 4 ++-- .../anisotropy/anisotropyRotationTest/index.html | 9 +++++---- .../anisotropy/anisotropyRotationTest/index.js | 4 ++-- .../anisotropy/anisotropyStrengthTest/index.html | 9 +++++---- .../anisotropy/anisotropyStrengthTest/index.js | 4 ++-- .../anisotropy/compareAnisotropy/index.html | 9 +++++---- .../anisotropy/compareAnisotropy/index.js | 4 ++-- .../clearcoat/clearCoatCarPaint/index.html | 9 +++++---- .../clearcoat/clearCoatCarPaint/index.js | 4 ++-- .../clearcoat/clearCoatTest/index.html | 9 +++++---- .../clearcoat/clearCoatTest/index.js | 4 ++-- .../clearcoat/clearcoatWicker/index.html | 9 +++++---- .../clearcoat/clearcoatWicker/index.js | 4 ++-- .../clearcoat/compareClearcoat/index.html | 9 +++++---- .../clearcoat/compareClearcoat/index.js | 4 ++-- .../diffuseTransmissionTeacup/index.html | 9 +++++---- .../diffuseTransmissionTeacup/index.js | 4 ++-- .../diffuseTransmissionTest/index.html | 9 +++++---- .../diffuseTransmissionTest/index.js | 4 ++-- .../dispersion/compareDispersion/index.html | 9 +++++---- .../dispersion/compareDispersion/index.js | 4 ++-- .../dispersion/dispersionTest/index.html | 9 +++++---- .../dispersion/dispersionTest/index.js | 4 ++-- .../dispersion/dragonDispersion/index.html | 9 +++++---- .../dispersion/dragonDispersion/index.js | 4 ++-- .../compareEmissiveStrength/index.html | 9 +++++---- .../compareEmissiveStrength/index.js | 4 ++-- .../emissiveStrengthTest/index.html | 9 +++++---- .../emissiveStrength/emissiveStrengthTest/index.js | 4 ++-- .../iridescence/compareIridescence/index.html | 9 +++++---- .../iridescence/compareIridescence/index.js | 4 ++-- .../iridescenceDielectricSpheres/index.html | 9 +++++---- .../iridescenceDielectricSpheres/index.js | 4 ++-- .../iridescence/iridescenceLamp/index.html | 9 +++++---- .../iridescence/iridescenceLamp/index.js | 4 ++-- .../iridescenceMetallicSpheres/index.html | 9 +++++---- .../iridescenceMetallicSpheres/index.js | 4 ++-- .../iridescence/iridescenceSuzanne/index.html | 9 +++++---- .../iridescence/iridescenceSuzanne/index.js | 4 ++-- .../iridescentDishWithOlives/index.html | 9 +++++---- .../iridescence/iridescentDishWithOlives/index.js | 4 ++-- .../iridescence/sunglassesKhronos/index.html | 9 +++++---- .../iridescence/sunglassesKhronos/index.js | 4 ++-- .../sheen/chairDamaskPurplegold/index.html | 9 +++++---- .../sheen/chairDamaskPurplegold/index.js | 4 ++-- .../gltfExtensions/sheen/compareSheen/index.html | 9 +++++---- .../gltfExtensions/sheen/compareSheen/index.js | 4 ++-- .../gltfExtensions/sheen/glamVelvetSofa/index.html | 9 +++++---- .../gltfExtensions/sheen/glamVelvetSofa/index.js | 4 ++-- .../gltfExtensions/sheen/sheenChair/index.html | 9 +++++---- .../gltf/gltfExtensions/sheen/sheenChair/index.js | 4 ++-- .../gltfExtensions/sheen/sheenCloth/index.html | 9 +++++---- .../gltf/gltfExtensions/sheen/sheenCloth/index.js | 4 ++-- .../gltfExtensions/sheen/sheenTestGrid/index.html | 9 +++++---- .../gltfExtensions/sheen/sheenTestGrid/index.js | 4 ++-- .../sheen/sheenWoodLeatherSofa/index.html | 9 +++++---- .../sheen/sheenWoodLeatherSofa/index.js | 4 ++-- .../specular/compareSpecular/index.html | 9 +++++---- .../specular/compareSpecular/index.js | 4 ++-- .../specular/specularSilkPouf/index.html | 9 +++++---- .../specular/specularSilkPouf/index.js | 4 ++-- .../specular/specularTest/index.html | 9 +++++---- .../gltfExtensions/specular/specularTest/index.js | 4 ++-- .../textureTransformMultiTest/index.html | 9 +++++---- .../textureTransformMultiTest/index.js | 4 ++-- .../textureTransformTest/index.html | 9 +++++---- .../textureTransform/textureTransformTest/index.js | 4 ++-- .../transmission/chronographWatch/index.html | 9 +++++---- .../transmission/chronographWatch/index.js | 4 ++-- .../transmission/commercialRefrigerator/index.html | 9 +++++---- .../transmission/commercialRefrigerator/index.js | 4 ++-- .../transmission/compareTransmission/index.html | 9 +++++---- .../transmission/compareTransmission/index.js | 4 ++-- .../transmission/mosquitoInAmber/index.html | 9 +++++---- .../transmission/mosquitoInAmber/index.js | 4 ++-- .../transmission/stainedGlassLamp/index.html | 9 +++++---- .../transmission/stainedGlassLamp/index.js | 4 ++-- .../transmissionRoughnessTest/index.html | 9 +++++---- .../transmissionRoughnessTest/index.js | 4 ++-- .../transmission/transmissionTest/index.html | 9 +++++---- .../transmission/transmissionTest/index.js | 4 ++-- .../gltf/gltfExtensions/unlit/unlitTest/index.html | 9 +++++---- .../gltf/gltfExtensions/unlit/unlitTest/index.js | 4 ++-- .../gltfExtensions/volume/IORTestGrid/index.html | 9 +++++---- .../gltfExtensions/volume/IORTestGrid/index.js | 4 ++-- .../volume/attenuationTest/index.html | 9 +++++---- .../gltfExtensions/volume/attenuationTest/index.js | 4 ++-- .../gltfExtensions/volume/compareIor/index.html | 9 +++++---- .../gltf/gltfExtensions/volume/compareIor/index.js | 4 ++-- .../gltfExtensions/volume/compareVolume/index.html | 9 +++++---- .../gltfExtensions/volume/compareVolume/index.js | 4 ++-- .../volume/dragonAttenuation/index.html | 9 +++++---- .../volume/dragonAttenuation/index.js | 4 ++-- .../volume/glassBrokenWindow/index.html | 9 +++++---- .../volume/glassBrokenWindow/index.js | 4 ++-- .../volume/glassHurricaneCandleHolder/index.html | 9 +++++---- .../volume/glassHurricaneCandleHolder/index.js | 4 ++-- .../volume/glassVaseFlowers/index.html | 9 +++++---- .../volume/glassVaseFlowers/index.js | 4 ++-- .../volume/transmissionThinwallTestGrid/index.html | 9 +++++---- .../volume/transmissionThinwallTestGrid/index.js | 4 ++-- examples/gltf/models/aBeautifulGame/index.html | 9 +++++---- examples/gltf/models/aBeautifulGame/index.js | 4 ++-- examples/gltf/models/corset/index.html | 9 +++++---- examples/gltf/models/corset/index.js | 4 ++-- examples/gltf/models/helmets/index.html | 9 +++++---- examples/gltf/models/helmets/index.js | 4 ++-- examples/gltf/models/sponza/index.html | 9 +++++---- examples/gltf/models/sponza/index.js | 4 ++-- examples/gltf/models/texcooredNTest/index.html | 9 +++++---- examples/gltf/models/texcooredNTest/index.js | 4 ++-- examples/gltf/models/tokyo/index.html | 9 +++++---- examples/gltf/models/tokyo/index.js | 4 ++-- examples/index.html | 14 +++++++------- .../physics/advancedCharacterController/index.html | 9 +++++---- .../physics/advancedCharacterController/index.js | 6 +++--- examples/physics/basic/index.html | 9 +++++---- examples/physics/basic/index.js | 6 +++--- examples/physics/bowling/index.html | 9 +++++---- examples/physics/bowling/index.js | 6 +++--- examples/physics/buoyancy/index.html | 9 +++++---- examples/physics/buoyancy/index.js | 6 +++--- examples/physics/characterController/index.html | 9 +++++---- examples/physics/characterController/index.js | 6 +++--- examples/physics/collisionEvents/index.html | 9 +++++---- examples/physics/collisionEvents/index.js | 6 +++--- examples/physics/collisionFiltering/index.html | 9 +++++---- examples/physics/collisionFiltering/index.js | 6 +++--- examples/physics/compound/index.html | 9 +++++---- examples/physics/compound/index.js | 6 +++--- examples/physics/explosion/index.html | 9 +++++---- examples/physics/explosion/index.js | 6 +++--- examples/physics/galton/index.html | 9 +++++---- examples/physics/galton/index.js | 6 +++--- examples/physics/gltfPhysics/index.html | 9 +++++---- examples/physics/gltfPhysics/index.js | 6 +++--- examples/physics/heightField/index.html | 9 +++++---- examples/physics/heightField/index.js | 6 +++--- examples/physics/joints/index.html | 9 +++++---- examples/physics/joints/index.js | 6 +++--- examples/physics/kinematic/index.html | 9 +++++---- examples/physics/kinematic/index.js | 6 +++--- examples/physics/meshCollider/index.html | 9 +++++---- examples/physics/meshCollider/index.js | 6 +++--- examples/physics/prismaticJoint/index.html | 9 +++++---- examples/physics/prismaticJoint/index.js | 6 +++--- examples/physics/ragdoll/index.html | 9 +++++---- examples/physics/ragdoll/index.js | 6 +++--- examples/physics/raycast/index.html | 9 +++++---- examples/physics/raycast/index.js | 6 +++--- examples/physics/revoluteJoint/index.html | 9 +++++---- examples/physics/revoluteJoint/index.js | 6 +++--- examples/physics/shapes/index.html | 9 +++++---- examples/physics/shapes/index.js | 6 +++--- examples/physics/softBody/index.html | 9 +++++---- examples/physics/softBody/index.js | 6 +++--- examples/physics/springJoint/index.html | 9 +++++---- examples/physics/springJoint/index.js | 6 +++--- examples/physics/stressTest/index.html | 9 +++++---- examples/physics/stressTest/index.js | 6 +++--- examples/physics/surfaceVelocity/index.html | 9 +++++---- examples/physics/surfaceVelocity/index.js | 6 +++--- examples/physics/triggers/index.html | 9 +++++---- examples/physics/triggers/index.js | 6 +++--- .../adjustments/brightnessContrast/index.html | 9 +++++---- .../adjustments/brightnessContrast/index.js | 4 ++-- .../postEffect/adjustments/colorBalance/index.html | 9 +++++---- .../postEffect/adjustments/colorBalance/index.js | 4 ++-- .../adjustments/colorTemperatureTint/index.html | 9 +++++---- .../adjustments/colorTemperatureTint/index.js | 4 ++-- .../postEffect/adjustments/grayscale/index.html | 9 +++++---- examples/postEffect/adjustments/grayscale/index.js | 4 ++-- .../adjustments/hueSaturation/index.html | 9 +++++---- .../postEffect/adjustments/hueSaturation/index.js | 4 ++-- examples/postEffect/adjustments/invert/index.html | 9 +++++---- examples/postEffect/adjustments/invert/index.js | 4 ++-- .../postEffect/adjustments/threshold/index.html | 9 +++++---- examples/postEffect/adjustments/threshold/index.js | 4 ++-- .../postEffect/adjustments/vibrance/index.html | 9 +++++---- examples/postEffect/adjustments/vibrance/index.js | 4 ++-- examples/postEffect/blur/blur/index.html | 9 +++++---- examples/postEffect/blur/blur/index.js | 4 ++-- examples/postEffect/blur/blurX/index.html | 9 +++++---- examples/postEffect/blur/blurX/index.js | 4 ++-- examples/postEffect/blur/blurY/index.html | 9 +++++---- examples/postEffect/blur/blurY/index.js | 4 ++-- .../postEffect/blur/directionalBlur/index.html | 9 +++++---- examples/postEffect/blur/directionalBlur/index.js | 4 ++-- examples/postEffect/blur/gaussianBlur/index.html | 9 +++++---- examples/postEffect/blur/gaussianBlur/index.js | 4 ++-- examples/postEffect/blur/radialBlur/index.html | 9 +++++---- examples/postEffect/blur/radialBlur/index.js | 4 ++-- examples/postEffect/blur/zoomBlur/index.html | 9 +++++---- examples/postEffect/blur/zoomBlur/index.js | 4 ++-- examples/postEffect/convolution/index.html | 9 +++++---- examples/postEffect/convolution/index.js | 4 ++-- examples/postEffect/filmGrain/index.html | 9 +++++---- examples/postEffect/filmGrain/index.js | 4 ++-- examples/postEffect/fog/fog/index.html | 9 +++++---- examples/postEffect/fog/fog/index.js | 4 ++-- examples/postEffect/fog/heightFog/index.html | 9 +++++---- examples/postEffect/fog/heightFog/index.js | 4 ++-- .../postEffect/lens/chromaticAberration/index.html | 9 +++++---- .../postEffect/lens/chromaticAberration/index.js | 4 ++-- examples/postEffect/lens/dof/index.html | 9 +++++---- examples/postEffect/lens/dof/index.js | 4 ++-- examples/postEffect/lens/lensDistortion/index.html | 9 +++++---- examples/postEffect/lens/lensDistortion/index.js | 4 ++-- examples/postEffect/lens/vignetting/index.html | 9 +++++---- examples/postEffect/lens/vignetting/index.js | 4 ++-- examples/postEffect/oldBloom/index.html | 9 +++++---- examples/postEffect/oldBloom/index.js | 4 ++-- examples/postEffect/sharpen/index.html | 9 +++++---- examples/postEffect/sharpen/index.js | 4 ++-- examples/postEffect/ssao/index.html | 9 +++++---- examples/postEffect/ssao/index.js | 4 ++-- examples/postEffect/ssr/index.html | 9 +++++---- examples/postEffect/ssr/index.js | 4 ++-- 532 files changed, 1885 insertions(+), 1623 deletions(-) diff --git a/examples/2d/blendMode/basic/index.html b/examples/2d/blendMode/basic/index.html index eaf5e9fd6c..88350d3453 100644 --- a/examples/2d/blendMode/basic/index.html +++ b/examples/2d/blendMode/basic/index.html @@ -39,12 +39,12 @@ } - - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -58,5 +58,6 @@

- - + + - - + + @@ -58,5 +58,6 @@

- - + + - - + + @@ -58,5 +58,6 @@

- - + + - - + + @@ -58,5 +58,6 @@

- - + + - - + + @@ -58,5 +58,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

{const s=t[n],r=e[n];return l(s)&&l(r)?Object.assign(Object.assign({},i),{[n]:h(s,r)}):Object.assign(Object.assign({},i),{[n]:n in e?r:s})},{})}function c(t){return!!a(t)&&"target"in t}var d={alreadydisposed:()=>"View has been already disposed",invalidparams:t=>`Invalid parameters for '${t.name}'`,nomatchingcontroller:t=>`No matching controller for '${t.key}'`,nomatchingview:t=>`No matching view for '${JSON.stringify(t.params)}'`,notbindable:()=>"Value is not bindable",notcompatible:t=>`Not compatible with plugin '${t.id}'`,propertynotfound:t=>`Property '${t.name}' not found`,shouldneverhappen:()=>"This error should never happen"},u=class t{static alreadyDisposed(){return new t({type:"alreadydisposed"})}static notBindable(){return new t({type:"notbindable"})}static notCompatible(e,i){return new t({type:"notcompatible",context:{id:`${e}.${i}`}})}static propertyNotFound(e){return new t({type:"propertynotfound",context:{name:e}})}static shouldNeverHappen(){return new t({type:"shouldneverhappen"})}constructor(t){var e;this.message=null!==(e=d[t.type](t.context))&&void 0!==e?e:"Unexpected error",this.name=this.constructor.name,this.stack=new Error(this.message).stack,this.type=t.type}toString(){return this.message}},v=class t{constructor(t,e){this.obj_=t,this.key=e}static isBindable(t){return null!==t&&("object"==typeof t||"function"==typeof t)}read(){return this.obj_[this.key]}write(t){this.obj_[this.key]=t}writeProperty(e,i){const n=this.read();if(!t.isBindable(n))throw u.notBindable();if(!(e in n))throw u.propertyNotFound(e);n[e]=i}},m=class{constructor(){this.observers_={}}on(t,e,i){var n;let s=this.observers_[t];return s||(s=this.observers_[t]=[]),s.push({handler:e,key:null!==(n=null==i?void 0:i.key)&&void 0!==n?n:e}),this}off(t,e){const i=this.observers_[t];return i&&(this.observers_[t]=i.filter(t=>t.key!==e)),this}emit(t,e){const i=this.observers_[t];i&&i.forEach(t=>{t.handler(e)})}},b=class{constructor(t,e){var i;this.constraint_=null==e?void 0:e.constraint,this.equals_=null!==(i=null==e?void 0:e.equals)&&void 0!==i?i:(t,e)=>t===e,this.emitter=new m,this.rawValue_=t}get constraint(){return this.constraint_}get rawValue(){return this.rawValue_}set rawValue(t){this.setRawValue(t,{forceEmit:!1,last:!0})}setRawValue(t,e){const i=null!=e?e:{forceEmit:!1,last:!0},n=this.constraint_?this.constraint_.constrain(t):t,s=this.rawValue_;this.equals_(s,n)&&!i.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=n,this.emitter.emit("change",{options:i,previousRawValue:s,rawValue:n,sender:this}))}},g=class{constructor(t){this.emitter=new m,this.value_=t}get rawValue(){return this.value_}set rawValue(t){this.setRawValue(t,{forceEmit:!1,last:!0})}setRawValue(t,e){const i=null!=e?e:{forceEmit:!1,last:!0},n=this.value_;(n!==t||i.forceEmit)&&(this.emitter.emit("beforechange",{sender:this}),this.value_=t,this.emitter.emit("change",{options:i,previousRawValue:n,rawValue:this.value_,sender:this}))}},w=class{constructor(t){this.emitter=new m,this.onValueBeforeChange_=this.onValueBeforeChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.value_=t,this.value_.emitter.on("beforechange",this.onValueBeforeChange_),this.value_.emitter.on("change",this.onValueChange_)}get rawValue(){return this.value_.rawValue}onValueBeforeChange_(t){this.emitter.emit("beforechange",Object.assign(Object.assign({},t),{sender:this}))}onValueChange_(t){this.emitter.emit("change",Object.assign(Object.assign({},t),{sender:this}))}};function _(t,e){const i=null==e?void 0:e.constraint,n=null==e?void 0:e.equals;return i||n?new b(t,e):new g(t)}var f=class t{constructor(t){this.emitter=new m,this.valMap_=t;for(const e in this.valMap_)this.valMap_[e].emitter.on("change",()=>{this.emitter.emit("change",{key:e,sender:this})})}static createCore(t){return Object.keys(t).reduce((e,i)=>Object.assign(e,{[i]:_(t[i])}),{})}static fromObject(e){return new t(this.createCore(e))}get(t){return this.valMap_[t].rawValue}set(t,e){this.valMap_[t].rawValue=e}value(t){return this.valMap_[t]}},x=class{constructor(t){this.values=f.fromObject({max:t.max,min:t.min})}constrain(t){const e=this.values.get("max"),i=this.values.get("min");return Math.min(Math.max(t,i),e)}},C=class{constructor(t){this.values=f.fromObject({max:t.max,min:t.min})}constrain(t){const e=this.values.get("max"),i=this.values.get("min");let n=t;return o(i)||(n=Math.max(n,i)),o(e)||(n=Math.min(n,e)),n}},y=class{constructor(t,e=0){this.step=t,this.origin=e}constrain(t){const e=this.origin%this.step;return e+Math.round((t-e)/this.step)*this.step}},P=class{constructor(t){this.text=t}evaluate(){return Number(this.text)}toString(){return this.text}},E={"**":(t,e)=>Math.pow(t,e),"*":(t,e)=>t*e,"/":(t,e)=>t/e,"%":(t,e)=>t%e,"+":(t,e)=>t+e,"-":(t,e)=>t-e,"<<":(t,e)=>t<>":(t,e)=>t>>e,">>>":(t,e)=>t>>>e,"&":(t,e)=>t&e,"^":(t,e)=>t^e,"|":(t,e)=>t|e},k=class{constructor(t,e,i){this.left=e,this.operator=t,this.right=i}evaluate(){const t=E[this.operator];if(!t)throw new Error(`unexpected binary operator: '${this.operator}`);return t(this.left.evaluate(),this.right.evaluate())}toString(){return["b(",this.left.toString(),this.operator,this.right.toString(),")"].join(" ")}},V={"+":t=>t,"-":t=>-t,"~":t=>~t},L=class{constructor(t,e){this.operator=t,this.expression=e}evaluate(){const t=V[this.operator];if(!t)throw new Error(`unexpected unary operator: '${this.operator}`);return t(this.expression.evaluate())}toString(){return["u(",this.operator,this.expression.toString(),")"].join(" ")}};function M(t){return(e,i)=>{for(let n=0;ne.startsWith(t,i))[0];return n?(i+=n.length,{cursor:i+=S(e,i).length,operator:n}):null}var z=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((t,e)=>function(t,e){return(i,n)=>{const s=t(i,n);if(!s)return null;n=s.cursor;let r=s.evaluable;for(;;){const s=T(e,i,n);if(!s)break;n=s.cursor;const o=t(i,n);if(!o)return null;n=o.cursor,r=new k(s.operator,r,o.evaluable)}return r?{cursor:n,evaluable:r}:null}}(t,e),function t(e,i){const n=function(t,e){var i;return null!==(i=function(t,e){const i=B(t,e);return e+=i.length,""===i?null:{evaluable:new P(i),cursor:e}}(t,e))&&void 0!==i?i:function(t,e){const i=t.substr(e,1);if(e+=i.length,"("!==i)return null;const n=R(t,e);if(!n)return null;e=n.cursor,e+=S(t,e).length;const s=t.substr(e,1);return e+=s.length,")"!==s?null:{evaluable:n.evaluable,cursor:e}}(t,e)}(e,i);if(n)return n;const s=e.substr(i,1);if(i+=s.length,"+"!==s&&"-"!==s&&"~"!==s)return null;const r=t(e,i);return r?{cursor:i=r.cursor,evaluable:new L(s,r.evaluable)}:null});function R(t,e){return e+=S(t,e).length,z(t,e)}function N(t){var e;const i=function(t){const e=R(t,0);return e?e.cursor+S(t,e.cursor).length!==t.length?null:e.evaluable:null}(t);return null!==(e=null==i?void 0:i.evaluate())&&void 0!==e?e:null}function K(t){if("number"==typeof t)return t;if("string"==typeof t){const e=N(t);if(!o(e))return e}return 0}function I(t){return String(t)}function U(t){return e=>e.toFixed(Math.max(Math.min(t,20),0))}function F(t,e,i,n,s){return n+(t-e)/(i-e)*(s-n)}function $(t){return String(t.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function q(t,e,i){return Math.min(Math.max(t,e),i)}function H(t,e){return(t%e+e)%e}function G(t,e){return o(t.step)?Math.max($(e),2):$(t.step)}function Y(t){var e;return null!==(e=t.step)&&void 0!==e?e:1}function X(t,e){var i;const n=Math.abs(null!==(i=t.step)&&void 0!==i?i:e);return 0===n?.1:Math.pow(10,Math.floor(Math.log10(n))-1)}function W(t,e){return o(t.step)?null:new y(t.step,e)}function Q(t){return o(t.max)||o(t.min)?o(t.max)&&o(t.min)?null:new C({max:t.max,min:t.min}):new x({max:t.max,min:t.min})}function J(t,e){var i,n,s;return{formatter:null!==(i=t.format)&&void 0!==i?i:U(G(t,e)),keyScale:null!==(n=t.keyScale)&&void 0!==n?n:Y(t),pointerScale:null!==(s=t.pointerScale)&&void 0!==s?s:X(t,e)}}function Z(t){return{format:t.optional.function,keyScale:t.optional.number,max:t.optional.number,min:t.optional.number,pointerScale:t.optional.number,step:t.optional.number}}function tt(t){return{constraint:t.constraint,textProps:f.fromObject(J(t.params,t.initialValue))}}var et=class{constructor(t){this.controller=t}get element(){return this.controller.view.element}get disabled(){return this.controller.viewProps.get("disabled")}set disabled(t){this.controller.viewProps.set("disabled",t)}get hidden(){return this.controller.viewProps.get("hidden")}set hidden(t){this.controller.viewProps.set("hidden",t)}dispose(){this.controller.viewProps.set("disposed",!0)}importState(t){return this.controller.importState(t)}exportState(){return this.controller.exportState()}},it=class{constructor(t){this.target=t}},nt=class extends it{constructor(t,e,i){super(t),this.value=e,this.last=null==i||i}},st=class extends it{constructor(t,e){super(t),this.expanded=e}},rt=class extends it{constructor(t,e){super(t),this.index=e}},ot=class extends it{constructor(t,e){super(t),this.native=e}},at=class extends et{constructor(t){super(t),this.onValueChange_=this.onValueChange_.bind(this),this.emitter_=new m,this.controller.value.emitter.on("change",this.onValueChange_)}get label(){return this.controller.labelController.props.get("label")}set label(t){this.controller.labelController.props.set("label",t)}get key(){return this.controller.value.binding.target.key}get tag(){return this.controller.tag}set tag(t){this.controller.tag=t}on(t,e){const i=e.bind(this);return this.emitter_.on(t,t=>{i(t)},{key:e}),this}off(t,e){return this.emitter_.off(t,e),this}refresh(){this.controller.value.fetch()}onValueChange_(t){const e=this.controller.value;this.emitter_.emit("change",new nt(this,e.binding.target.read(),t.options.last))}},lt=class{constructor(t,e){this.onValueBeforeChange_=this.onValueBeforeChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.binding=e,this.value_=t,this.value_.emitter.on("beforechange",this.onValueBeforeChange_),this.value_.emitter.on("change",this.onValueChange_),this.emitter=new m}get rawValue(){return this.value_.rawValue}set rawValue(t){this.value_.rawValue=t}setRawValue(t,e){this.value_.setRawValue(t,e)}fetch(){this.value_.rawValue=this.binding.read()}push(){this.binding.write(this.value_.rawValue)}onValueBeforeChange_(t){this.emitter.emit("beforechange",Object.assign(Object.assign({},t),{sender:this}))}onValueChange_(t){this.push(),this.emitter.emit("change",Object.assign(Object.assign({},t),{sender:this}))}};function pt(t){return e=>i=>{if(!e&&void 0===i)return{succeeded:!1,value:void 0};if(e&&void 0===i)return{succeeded:!0,value:void 0};const n=t(i);return void 0!==n?{succeeded:!0,value:n}:{succeeded:!1,value:void 0}}}function ht(t){return{custom:e=>pt(e)(t),boolean:pt(t=>"boolean"==typeof t?t:void 0)(t),number:pt(t=>"number"==typeof t?t:void 0)(t),string:pt(t=>"string"==typeof t?t:void 0)(t),function:pt(t=>"function"==typeof t?t:void 0)(t),constant:e=>pt(t=>t===e?e:void 0)(t),raw:pt(t=>t)(t),object:e=>pt(t=>{var i;if(null!==(i=t)&&"object"==typeof i)return function(t,e){return Object.keys(e).reduce((i,n)=>{if(void 0===i)return;const s=(0,e[n])(t[n]);return s.succeeded?Object.assign(Object.assign({},i),{[n]:s.value}):void 0},{})}(t,e)})(t),array:e=>pt(t=>{var i;if(Array.isArray(t))return i=e,t.reduce((t,e)=>{if(void 0===t)return;const n=i(e);return n.succeeded&&void 0!==n.value?[...t,n.value]:void 0},[])})(t)}}var ct={optional:ht(!0),required:ht(!1)};function dt(t,e){const i=e(ct),n=ct.required.object(i)(t);return n.succeeded?n.value:void 0}function ut(t,e,i,n){if(e&&!e(t))return!1;const s=dt(t,i);return!!s&&n(s)}function vt(t,e){var i;return h(null!==(i=null==t?void 0:t())&&void 0!==i?i:{},e)}function mt(t){return"value"in t}function bt(t){return!(!a(t)||!("binding"in t))&&c(t.binding)}var gt="http://www.w3.org/2000/svg";function wt(t){t.offsetHeight}function _t(t){return void 0!==t.ontouchstart}var ft={check:'',dropdown:'',p2dpad:''};function xt(t,e){const i=t.createElementNS(gt,"svg");return i.innerHTML=ft[e],i}function Ct(t,e,i){t.insertBefore(e,t.children[i])}function yt(t){t.parentElement&&t.parentElement.removeChild(t)}function Pt(t){for(;t.children.length>0;)t.removeChild(t.children[0])}function Et(t){return t.relatedTarget?t.relatedTarget:"explicitOriginalTarget"in t?t.explicitOriginalTarget:null}function kt(t,e){t.emitter.on("change",t=>{e(t.rawValue)}),e(t.rawValue)}function Vt(t,e,i){kt(t.value(e),i)}var Lt="tp";function Mt(t){return(e,i)=>[Lt,"-",t,"v",e?`_${e}`:"",i?`-${i}`:""].join("")}var St=Mt("lbl"),jt=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(St()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(St("l")),Vt(e.props,"label",e=>{o(e)?this.element.classList.add(St(void 0,"nol")):(this.element.classList.remove(St(void 0,"nol")),function(t){for(;t.childNodes.length>0;)t.removeChild(t.childNodes[0])}(i),i.appendChild(function(t,e){const i=t.createDocumentFragment();return e.split("\n").map(e=>t.createTextNode(e)).forEach((e,n)=>{n>0&&i.appendChild(t.createElement("br")),i.appendChild(e)}),i}(t,e)))}),this.element.appendChild(i),this.labelElement=i;const n=t.createElement("div");n.classList.add(St("v")),this.element.appendChild(n),this.valueElement=n}},Dt=class{constructor(t,e){this.props=e.props,this.valueController=e.valueController,this.viewProps=e.valueController.viewProps,this.view=new jt(t,{props:e.props,viewProps:this.viewProps}),this.view.valueElement.appendChild(this.valueController.view.element)}importProps(t){return ut(t,null,t=>({label:t.optional.string}),t=>(this.props.set("label",t.label),!0))}exportProps(){return vt(null,{label:this.props.get("label")})}},At=Mt(""),Ot={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"},Bt=class{constructor(t){this.parent_=null,this.blade=t.blade,this.view=t.view,this.viewProps=t.viewProps;const e=this.view.element;this.blade.value("positions").emitter.on("change",()=>{["veryfirst","first","last","verylast"].forEach(t=>{e.classList.remove(At(void 0,Ot[t]))}),this.blade.get("positions").forEach(t=>{e.classList.add(At(void 0,Ot[t]))})}),this.viewProps.handleDispose(()=>{yt(e)})}get parent(){return this.parent_}set parent(t){this.parent_=t,this.viewProps.set("parent",this.parent_?this.parent_.viewProps:null)}importState(t){return ut(t,null,t=>({disabled:t.required.boolean,hidden:t.required.boolean}),t=>(this.viewProps.importState(t),!0))}exportState(){return vt(null,Object.assign({},this.viewProps.exportState()))}},Tt=class extends Bt{constructor(t,e){if(e.value!==e.valueController.value)throw u.shouldNeverHappen();const i=e.valueController.viewProps,n=new Dt(t,{blade:e.blade,props:e.props,valueController:e.valueController});super(Object.assign(Object.assign({},e),{view:new jt(t,{props:e.props,viewProps:i}),viewProps:i})),this.labelController=n,this.value=e.value,this.valueController=e.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}importState(t){return ut(t,e=>{var i,n,s;return super.importState(e)&&this.labelController.importProps(e)&&(null===(s=null===(n=(i=this.valueController).importProps)||void 0===n?void 0:n.call(i,t))||void 0===s||s)},t=>({value:t.optional.raw}),t=>(t.value&&(this.value.rawValue=t.value),!0))}exportState(){var t,e,i;return vt(()=>super.exportState(),Object.assign(Object.assign({value:this.value.rawValue},this.labelController.exportProps()),null!==(i=null===(e=(t=this.valueController).exportProps)||void 0===e?void 0:e.call(t))&&void 0!==i?i:{}))}};function zt(t){const e=Object.assign({},t);return delete e.value,e}var Rt=class extends Tt{constructor(t,e){super(t,e),this.tag=e.tag}importState(t){return ut(t,e=>super.importState(zt(t)),t=>({tag:t.optional.string}),t=>(this.tag=t.tag,!0))}exportState(){return vt(()=>zt(super.exportState()),{binding:{key:this.value.binding.target.key,value:this.value.binding.target.read()},tag:this.tag})}},Nt=class extends Rt{importState(t){return ut(t,t=>super.importState(t),t=>({binding:t.required.object({value:t.required.raw})}),t=>(this.value.binding.inject(t.binding.value),this.value.fetch(),!0))}};function Kt(t,e){for(;t.lengtht.length?i.splice(0,i.length-t.length):Kt(i,t.length),i}(this.value_.rawValue,this.binding.read())}onTick_(){this.fetch()}onValueBeforeChange_(t){this.emitter.emit("beforechange",Object.assign(Object.assign({},t),{sender:this}))}onValueChange_(t){this.emitter.emit("change",Object.assign(Object.assign({},t),{sender:this}))}},Ft=class extends Rt{exportState(){return vt(()=>super.exportState(),{binding:{readonly:!0}})}};var $t=class extends et{get label(){return this.controller.labelController.props.get("label")}set label(t){this.controller.labelController.props.set("label",t)}get title(){var t;return null!==(t=this.controller.buttonController.props.get("title"))&&void 0!==t?t:""}set title(t){this.controller.buttonController.props.set("title",t)}on(t,e){const i=e.bind(this);return this.controller.buttonController.emitter.on(t,t=>{i(new ot(this,t.nativeEvent))}),this}off(t,e){return this.controller.buttonController.emitter.off(t,e),this}};function qt(t,e){return i=>{!function(t,e,i){i?t.classList.add(e):t.classList.remove(e)}(t,e,i)}}function Ht(t,e){kt(t,t=>{e.textContent=null!=t?t:""})}var Gt=Mt("btn"),Yt=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Gt()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("button");i.classList.add(Gt("b")),e.viewProps.bindDisabled(i),this.element.appendChild(i),this.buttonElement=i;const n=t.createElement("div");n.classList.add(Gt("t")),Ht(e.props.value("title"),n),this.buttonElement.appendChild(n)}},Xt=class{constructor(t,e){this.emitter=new m,this.onClick_=this.onClick_.bind(this),this.props=e.props,this.viewProps=e.viewProps,this.view=new Yt(t,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}importProps(t){return ut(t,null,t=>({title:t.optional.string}),t=>(this.props.set("title",t.title),!0))}exportProps(){return vt(null,{title:this.props.get("title")})}onClick_(t){this.emitter.emit("click",{nativeEvent:t,sender:this})}},Wt=class extends Bt{constructor(t,e){const i=new Xt(t,{props:e.buttonProps,viewProps:e.viewProps}),n=new Dt(t,{blade:e.blade,props:e.labelProps,valueController:i});super({blade:e.blade,view:n.view,viewProps:e.viewProps}),this.buttonController=i,this.labelController=n}importState(t){return ut(t,t=>super.importState(t)&&this.buttonController.importProps(t)&&this.labelController.importProps(t),()=>({}),()=>!0)}exportState(){return vt(()=>super.exportState(),Object.assign(Object.assign({},this.buttonController.exportProps()),this.labelController.exportProps()))}},Qt=class{constructor(t){const[e,i]=t.split("-"),n=e.split(".");this.major=parseInt(n[0],10),this.minor=parseInt(n[1],10),this.patch=parseInt(n[2],10),this.prerelease=null!=i?i:null}toString(){const t=[this.major,this.minor,this.patch].join(".");return null!==this.prerelease?[t,this.prerelease].join("-"):t}},Jt=new Qt("2.0.5");function Zt(t){return Object.assign({core:Jt},t)}var te=Zt({id:"button",type:"blade",accept(t){const e=dt(t,t=>({title:t.required.string,view:t.required.constant("button"),label:t.optional.string}));return e?{params:e}:null},controller:t=>new Wt(t.document,{blade:t.blade,buttonProps:f.fromObject({title:t.params.title}),labelProps:f.fromObject({label:t.params.label}),viewProps:t.viewProps}),api:t=>t.controller instanceof Wt?new $t(t.controller):null}),ee=class{constructor(t,e){this.onRackValueChange_=this.onRackValueChange_.bind(this),this.controller_=t,this.emitter_=new m,this.pool_=e,this.controller_.rack.emitter.on("valuechange",this.onRackValueChange_)}get children(){return this.controller_.rack.children.map(t=>this.pool_.createApi(t))}addBinding(t,e,i){const n=null!=i?i:{},s=this.controller_.element.ownerDocument,r=this.pool_.createBinding(s,function(t,e){if(!v.isBindable(t))throw u.notBindable();return new v(t,e)}(t,e),n),o=this.pool_.createBindingApi(r);return this.add(o,n.index)}addFolder(t){return function(t,e){return t.addBlade(Object.assign(Object.assign({},e),{view:"folder"}))}(this,t)}addButton(t){return function(t,e){return t.addBlade(Object.assign(Object.assign({},e),{view:"button"}))}(this,t)}addTab(t){return function(t,e){return t.addBlade(Object.assign(Object.assign({},e),{view:"tab"}))}(this,t)}add(t,e){const i=t.controller;return this.controller_.rack.add(i,e),t}remove(t){this.controller_.rack.remove(t.controller)}addBlade(t){const e=this.controller_.element.ownerDocument,i=this.pool_.createBlade(e,t),n=this.pool_.createApi(i);return this.add(n,t.index)}on(t,e){const i=e.bind(this);return this.emitter_.on(t,t=>{i(t)},{key:e}),this}off(t,e){return this.emitter_.off(t,e),this}refresh(){this.children.forEach(t=>{var e;a(e=t)&&"refresh"in e&&"function"==typeof e.refresh&&t.refresh()})}onRackValueChange_(t){const e=t.bladeController,i=this.pool_.createApi(e),n=bt(e.value)?e.value.binding:null;this.emitter_.emit("change",new nt(i,n?n.target.read():e.value.rawValue,t.options.last))}},ie=class extends et{constructor(t,e){super(t),this.rackApi_=new ee(t.rackController,e)}refresh(){this.rackApi_.refresh()}},ne=class extends Bt{constructor(t){super({blade:t.blade,view:t.view,viewProps:t.rackController.viewProps}),this.rackController=t.rackController}importState(t){return ut(t,t=>super.importState(t),t=>({children:t.required.array(t.required.raw)}),t=>this.rackController.rack.children.every((e,i)=>e.importState(t.children[i])))}exportState(){return vt(()=>super.exportState(),{children:this.rackController.rack.children.map(t=>t.exportState())})}};function se(t){return"rackController"in t}var re=class{constructor(t){this.emitter=new m,this.items_=[],this.cache_=new Set,this.onSubListAdd_=this.onSubListAdd_.bind(this),this.onSubListRemove_=this.onSubListRemove_.bind(this),this.extract_=t}get items(){return this.items_}allItems(){return Array.from(this.cache_)}find(t){for(const e of this.allItems())if(t(e))return e;return null}includes(t){return this.cache_.has(t)}add(t,e){if(this.includes(t))throw u.shouldNeverHappen();const i=void 0!==e?e:this.items_.length;this.items_.splice(i,0,t),this.cache_.add(t);const n=this.extract_(t);n&&(n.emitter.on("add",this.onSubListAdd_),n.emitter.on("remove",this.onSubListRemove_),n.allItems().forEach(t=>{this.cache_.add(t)})),this.emitter.emit("add",{index:i,item:t,root:this,target:this})}remove(t){const e=this.items_.indexOf(t);if(e<0)return;this.items_.splice(e,1),this.cache_.delete(t);const i=this.extract_(t);i&&(i.allItems().forEach(t=>{this.cache_.delete(t)}),i.emitter.off("add",this.onSubListAdd_),i.emitter.off("remove",this.onSubListRemove_)),this.emitter.emit("remove",{index:e,item:t,root:this,target:this})}onSubListAdd_(t){this.cache_.add(t.item),this.emitter.emit("add",{index:t.index,item:t.item,root:this,target:t.target})}onSubListRemove_(t){this.cache_.delete(t.item),this.emitter.emit("remove",{index:t.index,item:t.item,root:this,target:t.target})}};function oe(t){return se(t)?t.rackController.rack.bcSet_:null}var ae=class{constructor(t){var e,i;this.emitter=new m,this.onBladePositionsChange_=this.onBladePositionsChange_.bind(this),this.onSetAdd_=this.onSetAdd_.bind(this),this.onSetRemove_=this.onSetRemove_.bind(this),this.onChildDispose_=this.onChildDispose_.bind(this),this.onChildPositionsChange_=this.onChildPositionsChange_.bind(this),this.onChildValueChange_=this.onChildValueChange_.bind(this),this.onChildViewPropsChange_=this.onChildViewPropsChange_.bind(this),this.onRackLayout_=this.onRackLayout_.bind(this),this.onRackValueChange_=this.onRackValueChange_.bind(this),this.blade_=null!==(e=t.blade)&&void 0!==e?e:null,null===(i=this.blade_)||void 0===i||i.value("positions").emitter.on("change",this.onBladePositionsChange_),this.viewProps=t.viewProps,this.bcSet_=new re(oe),this.bcSet_.emitter.on("add",this.onSetAdd_),this.bcSet_.emitter.on("remove",this.onSetRemove_)}get children(){return this.bcSet_.items}add(t,e){var i;null===(i=t.parent)||void 0===i||i.remove(t),t.parent=this,this.bcSet_.add(t,e)}remove(t){t.parent=null,this.bcSet_.remove(t)}find(t){return this.bcSet_.allItems().filter(t)}onSetAdd_(t){this.updatePositions_();const e=t.target===t.root;if(this.emitter.emit("add",{bladeController:t.item,index:t.index,root:e,sender:this}),!e)return;const i=t.item;if(i.viewProps.emitter.on("change",this.onChildViewPropsChange_),i.blade.value("positions").emitter.on("change",this.onChildPositionsChange_),i.viewProps.handleDispose(this.onChildDispose_),mt(i))i.value.emitter.on("change",this.onChildValueChange_);else if(se(i)){const t=i.rackController.rack;if(t){const e=t.emitter;e.on("layout",this.onRackLayout_),e.on("valuechange",this.onRackValueChange_)}}}onSetRemove_(t){this.updatePositions_();const e=t.target===t.root;if(this.emitter.emit("remove",{bladeController:t.item,root:e,sender:this}),!e)return;const i=t.item;if(mt(i))i.value.emitter.off("change",this.onChildValueChange_);else if(se(i)){const t=i.rackController.rack;if(t){const e=t.emitter;e.off("layout",this.onRackLayout_),e.off("valuechange",this.onRackValueChange_)}}}updatePositions_(){const t=this.bcSet_.items.filter(t=>!t.viewProps.get("hidden")),e=t[0],i=t[t.length-1];this.bcSet_.items.forEach(t=>{const n=[];t===e&&(n.push("first"),this.blade_&&!this.blade_.get("positions").includes("veryfirst")||n.push("veryfirst")),t===i&&(n.push("last"),this.blade_&&!this.blade_.get("positions").includes("verylast")||n.push("verylast")),t.blade.set("positions",n)})}onChildPositionsChange_(){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildViewPropsChange_(t){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildDispose_(){this.bcSet_.items.filter(t=>t.viewProps.get("disposed")).forEach(t=>{this.bcSet_.remove(t)})}onChildValueChange_(t){const e=function(t,e){for(let i=0;i{for(let t=this.rack.children.length-1;t>=0;t--)this.rack.children[t].viewProps.set("disposed",!0)})}onRackAdd_(t){t.root&&Ct(this.element,t.bladeController.view.element,t.index)}onRackRemove_(t){t.root&&yt(t.bladeController.view.element)}};function pe(){return new f({positions:_([],{equals:p})})}var he=class t extends f{constructor(t){super(t)}static create(e){const i={completed:!0,expanded:e,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null};return new t(f.createCore(i))}get styleExpanded(){var t;return null!==(t=this.get("temporaryExpanded"))&&void 0!==t?t:this.get("expanded")}get styleHeight(){if(!this.styleExpanded)return"0";const t=this.get("expandedHeight");return this.get("shouldFixHeight")&&!o(t)?`${t}px`:"auto"}bindExpandedClass(t,e){const i=()=>{this.styleExpanded?t.classList.add(e):t.classList.remove(e)};Vt(this,"expanded",i),Vt(this,"temporaryExpanded",i)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}};function ce(t,e){e.style.height=t.styleHeight}function de(t,e){t.value("expanded").emitter.on("beforechange",()=>{if(t.set("completed",!1),o(t.get("expandedHeight"))){const i=function(t,e){let i=0;return function(n){const s=n.style.transition;n.style.transition="none",t.set("expandedHeight",null),t.set("temporaryExpanded",!0),wt(e),i=e.clientHeight,t.set("temporaryExpanded",null),wt(e),n.style.transition=s}(e),i}(t,e);i>0&&t.set("expandedHeight",i)}t.set("shouldFixHeight",!0),wt(e)}),t.emitter.on("change",()=>{ce(t,e)}),ce(t,e),e.addEventListener("transitionend",e=>{"height"===e.propertyName&&t.cleanUpTransition()})}var ue=class extends ie{constructor(t,e){super(t,e),this.emitter_=new m,this.controller.foldable.value("expanded").emitter.on("change",t=>{this.emitter_.emit("fold",new st(this,t.sender.rawValue))}),this.rackApi_.on("change",t=>{this.emitter_.emit("change",t)})}get expanded(){return this.controller.foldable.get("expanded")}set expanded(t){this.controller.foldable.set("expanded",t)}get title(){return this.controller.props.get("title")}set title(t){this.controller.props.set("title",t)}get children(){return this.rackApi_.children}addBinding(t,e,i){return this.rackApi_.addBinding(t,e,i)}addFolder(t){return this.rackApi_.addFolder(t)}addButton(t){return this.rackApi_.addButton(t)}addTab(t){return this.rackApi_.addTab(t)}add(t,e){return this.rackApi_.add(t,e)}remove(t){this.rackApi_.remove(t)}addBlade(t){return this.rackApi_.addBlade(t)}on(t,e){const i=e.bind(this);return this.emitter_.on(t,t=>{i(t)},{key:e}),this}off(t,e){return this.emitter_.off(t,e),this}},ve=Mt("cnt"),me=class{constructor(t,e){var i;this.className_=Mt(null!==(i=e.viewName)&&void 0!==i?i:"fld"),this.element=t.createElement("div"),this.element.classList.add(this.className_(),ve()),e.viewProps.bindClassModifiers(this.element),this.foldable_=e.foldable,this.foldable_.bindExpandedClass(this.element,this.className_(void 0,"expanded")),Vt(this.foldable_,"completed",qt(this.element,this.className_(void 0,"cpl")));const n=t.createElement("button");n.classList.add(this.className_("b")),Vt(e.props,"title",t=>{o(t)?this.element.classList.add(this.className_(void 0,"not")):this.element.classList.remove(this.className_(void 0,"not"))}),e.viewProps.bindDisabled(n),this.element.appendChild(n),this.buttonElement=n;const s=t.createElement("div");s.classList.add(this.className_("i")),this.element.appendChild(s);const r=t.createElement("div");r.classList.add(this.className_("t")),Ht(e.props.value("title"),r),this.buttonElement.appendChild(r),this.titleElement=r;const a=t.createElement("div");a.classList.add(this.className_("m")),this.buttonElement.appendChild(a);const l=t.createElement("div");l.classList.add(this.className_("c")),this.element.appendChild(l),this.containerElement=l}},be=class extends ne{constructor(t,e){var i;const n=he.create(null===(i=e.expanded)||void 0===i||i),s=new me(t,{foldable:n,props:e.props,viewName:e.root?"rot":void 0,viewProps:e.viewProps});super(Object.assign(Object.assign({},e),{rackController:new le({blade:e.blade,element:s.containerElement,root:e.root,viewProps:e.viewProps}),view:s})),this.onTitleClick_=this.onTitleClick_.bind(this),this.props=e.props,this.foldable=n,de(this.foldable,this.view.containerElement),this.rackController.rack.emitter.on("add",()=>{this.foldable.cleanUpTransition()}),this.rackController.rack.emitter.on("remove",()=>{this.foldable.cleanUpTransition()}),this.view.buttonElement.addEventListener("click",this.onTitleClick_)}get document(){return this.view.element.ownerDocument}importState(t){return ut(t,t=>super.importState(t),t=>({expanded:t.required.boolean,title:t.optional.string}),t=>(this.foldable.set("expanded",t.expanded),this.props.set("title",t.title),!0))}exportState(){return vt(()=>super.exportState(),{expanded:this.foldable.get("expanded"),title:this.props.get("title")})}onTitleClick_(){this.foldable.set("expanded",!this.foldable.get("expanded"))}},ge=Zt({id:"folder",type:"blade",accept(t){const e=dt(t,t=>({title:t.required.string,view:t.required.constant("folder"),expanded:t.optional.boolean}));return e?{params:e}:null},controller:t=>new be(t.document,{blade:t.blade,expanded:t.params.expanded,props:f.fromObject({title:t.params.title}),viewProps:t.viewProps}),api:t=>t.controller instanceof be?new ue(t.controller,t.pool):null}),we=Mt("");function _e(t,e){return qt(t,we(void 0,e))}var fe=class t extends f{constructor(t){var e,i;super(t),this.onDisabledChange_=this.onDisabledChange_.bind(this),this.onParentChange_=this.onParentChange_.bind(this),this.onParentGlobalDisabledChange_=this.onParentGlobalDisabledChange_.bind(this),[this.globalDisabled_,this.setGlobalDisabled_]=(i=_(this.getGlobalDisabled_()),[new w(i),(t,e)=>{i.setRawValue(t,e)}]),this.value("disabled").emitter.on("change",this.onDisabledChange_),this.value("parent").emitter.on("change",this.onParentChange_),null===(e=this.get("parent"))||void 0===e||e.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_)}static create(e){var i,n,s;const r=null!=e?e:{};return new t(f.createCore({disabled:null!==(i=r.disabled)&&void 0!==i&&i,disposed:!1,hidden:null!==(n=r.hidden)&&void 0!==n&&n,parent:null!==(s=r.parent)&&void 0!==s?s:null}))}get globalDisabled(){return this.globalDisabled_}bindClassModifiers(t){kt(this.globalDisabled_,_e(t,"disabled")),Vt(this,"hidden",_e(t,"hidden"))}bindDisabled(t){kt(this.globalDisabled_,e=>{t.disabled=e})}bindTabIndex(t){kt(this.globalDisabled_,e=>{t.tabIndex=e?-1:0})}handleDispose(t){this.value("disposed").emitter.on("change",e=>{e&&t()})}importState(t){this.set("disabled",t.disabled),this.set("hidden",t.hidden)}exportState(){return{disabled:this.get("disabled"),hidden:this.get("hidden")}}getGlobalDisabled_(){const t=this.get("parent");return!!t&&t.globalDisabled.rawValue||this.get("disabled")}updateGlobalDisabled_(){this.setGlobalDisabled_(this.getGlobalDisabled_())}onDisabledChange_(){this.updateGlobalDisabled_()}onParentGlobalDisabledChange_(){this.updateGlobalDisabled_()}onParentChange_(t){var e;const i=t.previousRawValue;null==i||i.globalDisabled.emitter.off("change",this.onParentGlobalDisabledChange_),null===(e=this.get("parent"))||void 0===e||e.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_),this.updateGlobalDisabled_()}},xe=Mt("tbp"),Ce=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(xe()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(xe("c")),this.element.appendChild(i),this.containerElement=i}},ye=Mt("tbi"),Pe=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(ye()),e.viewProps.bindClassModifiers(this.element),Vt(e.props,"selected",t=>{t?this.element.classList.add(ye(void 0,"sel")):this.element.classList.remove(ye(void 0,"sel"))});const i=t.createElement("button");i.classList.add(ye("b")),e.viewProps.bindDisabled(i),this.element.appendChild(i),this.buttonElement=i;const n=t.createElement("div");n.classList.add(ye("t")),Ht(e.props.value("title"),n),this.buttonElement.appendChild(n),this.titleElement=n}},Ee=class{constructor(t,e){this.emitter=new m,this.onClick_=this.onClick_.bind(this),this.props=e.props,this.viewProps=e.viewProps,this.view=new Pe(t,{props:e.props,viewProps:e.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}},ke=class extends ne{constructor(t,e){const i=new Ce(t,{viewProps:e.viewProps});super(Object.assign(Object.assign({},e),{rackController:new le({blade:e.blade,element:i.containerElement,viewProps:e.viewProps}),view:i})),this.onItemClick_=this.onItemClick_.bind(this),this.ic_=new Ee(t,{props:e.itemProps,viewProps:fe.create()}),this.ic_.emitter.on("click",this.onItemClick_),this.props=e.props,Vt(this.props,"selected",t=>{this.itemController.props.set("selected",t),this.viewProps.set("hidden",!t)})}get itemController(){return this.ic_}importState(t){return ut(t,t=>super.importState(t),t=>({selected:t.required.boolean,title:t.required.string}),t=>(this.ic_.props.set("selected",t.selected),this.ic_.props.set("title",t.title),!0))}exportState(){return vt(()=>super.exportState(),{selected:this.ic_.props.get("selected"),title:this.ic_.props.get("title")})}onItemClick_(){this.props.set("selected",!0)}},Ve=class extends ie{constructor(t,e){super(t,e),this.emitter_=new m,this.onSelect_=this.onSelect_.bind(this),this.pool_=e,this.rackApi_.on("change",t=>{this.emitter_.emit("change",t)}),this.controller.tab.selectedIndex.emitter.on("change",this.onSelect_)}get pages(){return this.rackApi_.children}addPage(t){const e=this.controller.view.element.ownerDocument,i=new ke(e,{blade:pe(),itemProps:f.fromObject({selected:!1,title:t.title}),props:f.fromObject({selected:!1}),viewProps:fe.create()}),n=this.pool_.createApi(i);return this.rackApi_.add(n,t.index)}removePage(t){this.rackApi_.remove(this.rackApi_.children[t])}on(t,e){const i=e.bind(this);return this.emitter_.on(t,t=>{i(t)},{key:e}),this}off(t,e){return this.emitter_.off(t,e),this}onSelect_(t){this.emitter_.emit("select",new rt(this,t.rawValue))}},Le=class extends ie{get title(){var t;return null!==(t=this.controller.itemController.props.get("title"))&&void 0!==t?t:""}set title(t){this.controller.itemController.props.set("title",t)}get selected(){return this.controller.props.get("selected")}set selected(t){this.controller.props.set("selected",t)}get children(){return this.rackApi_.children}addButton(t){return this.rackApi_.addButton(t)}addFolder(t){return this.rackApi_.addFolder(t)}addTab(t){return this.rackApi_.addTab(t)}add(t,e){this.rackApi_.add(t,e)}remove(t){this.rackApi_.remove(t)}addBinding(t,e,i){return this.rackApi_.addBinding(t,e,i)}addBlade(t){return this.rackApi_.addBlade(t)}},Me=class{constructor(){this.onItemSelectedChange_=this.onItemSelectedChange_.bind(this),this.empty=_(!0),this.selectedIndex=_(-1),this.items_=[]}add(t,e){const i=null!=e?e:this.items_.length;this.items_.splice(i,0,t),t.emitter.on("change",this.onItemSelectedChange_),this.keepSelection_()}remove(t){const e=this.items_.indexOf(t);e<0||(this.items_.splice(e,1),t.emitter.off("change",this.onItemSelectedChange_),this.keepSelection_())}keepSelection_(){if(0===this.items_.length)return this.selectedIndex.rawValue=-1,void(this.empty.rawValue=!0);const t=this.items_.findIndex(t=>t.rawValue);t<0?(this.items_.forEach((t,e)=>{t.rawValue=0===e}),this.selectedIndex.rawValue=0):(this.items_.forEach((e,i)=>{e.rawValue=i===t}),this.selectedIndex.rawValue=t),this.empty.rawValue=!1}onItemSelectedChange_(t){if(t.rawValue){const e=this.items_.findIndex(e=>e===t.sender);this.items_.forEach((t,i)=>{t.rawValue=i===e}),this.selectedIndex.rawValue=e}else this.keepSelection_()}},Se=Mt("tab"),je=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Se(),ve()),e.viewProps.bindClassModifiers(this.element),kt(e.empty,qt(this.element,Se(void 0,"nop")));const i=t.createElement("div");i.classList.add(Se("t")),this.element.appendChild(i),this.itemsElement=i;const n=t.createElement("div");n.classList.add(Se("i")),this.element.appendChild(n);const s=t.createElement("div");s.classList.add(Se("c")),this.element.appendChild(s),this.contentsElement=s}},De=class extends ne{constructor(t,e){const i=new Me,n=new je(t,{empty:i.empty,viewProps:e.viewProps});super({blade:e.blade,rackController:new le({blade:e.blade,element:n.contentsElement,viewProps:e.viewProps}),view:n}),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this);const s=this.rackController.rack;s.emitter.on("add",this.onRackAdd_),s.emitter.on("remove",this.onRackRemove_),this.tab=i}add(t,e){this.rackController.rack.add(t,e)}remove(t){this.rackController.rack.remove(this.rackController.rack.children[t])}onRackAdd_(t){if(!t.root)return;const e=t.bladeController;Ct(this.view.itemsElement,e.itemController.view.element,t.index),e.itemController.viewProps.set("parent",this.viewProps),this.tab.add(e.props.value("selected"))}onRackRemove_(t){if(!t.root)return;const e=t.bladeController;yt(e.itemController.view.element),e.itemController.viewProps.set("parent",null),this.tab.remove(e.props.value("selected"))}},Ae=Zt({id:"tab",type:"blade",accept(t){const e=dt(t,t=>({pages:t.required.array(t.required.object({title:t.required.string})),view:t.required.constant("tab")}));return e&&0!==e.pages.length?{params:e}:null},controller(t){const e=new De(t.document,{blade:t.blade,viewProps:t.viewProps});return t.params.pages.forEach(i=>{const n=new ke(t.document,{blade:pe(),itemProps:f.fromObject({selected:!1,title:i.title}),props:f.fromObject({selected:!1}),viewProps:fe.create()});e.add(n)}),e},api:t=>t.controller instanceof De?new Ve(t.controller,t.pool):t.controller instanceof ke?new Le(t.controller,t.pool):null}),Oe=class extends at{get options(){return this.controller.valueController.props.get("options")}set options(t){this.controller.valueController.props.set("options",t)}},Be=class{constructor(){this.disabled=!1,this.emitter=new m}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}},Te=class{constructor(t,e){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=t,this.emitter=new m,this.interval_=e,this.setTimer_()}get disabled(){return this.disabled_}set disabled(t){this.disabled_=t,this.disabled_?this.clearTimer_():this.setTimer_()}dispose(){this.clearTimer_()}clearTimer_(){if(null===this.timerId_)return;const t=this.doc_.defaultView;t&&t.clearInterval(this.timerId_),this.timerId_=null}setTimer_(){if(this.clearTimer_(),this.interval_<=0)return;const t=this.doc_.defaultView;t&&(this.timerId_=t.setInterval(this.onTick_,this.interval_))}onTick_(){this.disabled_||this.emitter.emit("tick",{sender:this})}},ze=class{constructor(t){this.constraints=t}constrain(t){return this.constraints.reduce((t,e)=>e.constrain(t),t)}};function Re(t,e){if(t instanceof e)return t;if(t instanceof ze){const i=t.constraints.reduce((t,i)=>t||(i instanceof e?i:null),null);if(i)return i}return null}var Ne=class{constructor(t){this.values=f.fromObject({options:t})}constrain(t){const e=this.values.get("options");return 0===e.length||e.filter(e=>e.value===t).length>0?t:e[0].value}};function Ke(t){var e;const i=ct;return Array.isArray(t)?null===(e=dt({items:t},t=>({items:t.required.array(t.required.object({text:t.required.string,value:t.required.raw}))})))||void 0===e?void 0:e.items:"object"==typeof t?i.required.raw(t).value:void 0}function Ie(t){if(Array.isArray(t))return t;const e=[];return Object.keys(t).forEach(i=>{e.push({text:i,value:t[i]})}),e}function Ue(t){return o(t)?null:new Ne(Ie(t))}var Fe=Mt("lst"),$e=class{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.props_=e.props,this.element=t.createElement("div"),this.element.classList.add(Fe()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("select");i.classList.add(Fe("s")),e.viewProps.bindDisabled(i),this.element.appendChild(i),this.selectElement=i;const n=t.createElement("div");n.classList.add(Fe("m")),n.appendChild(xt(t,"dropdown")),this.element.appendChild(n),e.value.emitter.on("change",this.onValueChange_),this.value_=e.value,Vt(this.props_,"options",e=>{Pt(this.selectElement),e.forEach(e=>{const i=t.createElement("option");i.textContent=e.text,this.selectElement.appendChild(i)}),this.update_()})}update_(){const t=this.props_.get("options").map(t=>t.value);this.selectElement.selectedIndex=t.indexOf(this.value_.rawValue)}onValueChange_(){this.update_()}},qe=class{constructor(t,e){this.onSelectChange_=this.onSelectChange_.bind(this),this.props=e.props,this.value=e.value,this.viewProps=e.viewProps,this.view=new $e(t,{props:this.props,value:this.value,viewProps:this.viewProps}),this.view.selectElement.addEventListener("change",this.onSelectChange_)}onSelectChange_(t){const e=t.currentTarget;this.value.rawValue=this.props.get("options")[e.selectedIndex].value}importProps(t){return ut(t,null,t=>({options:t.required.custom(Ke)}),t=>(this.props.set("options",Ie(t.options)),!0))}exportProps(){return vt(null,{options:this.props.get("options")})}},He=Mt("pop"),Ge=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(He()),e.viewProps.bindClassModifiers(this.element),kt(e.shows,qt(this.element,He(void 0,"v")))}},Ye=class{constructor(t,e){this.shows=_(!1),this.viewProps=e.viewProps,this.view=new Ge(t,{shows:this.shows,viewProps:this.viewProps})}},Xe=Mt("txt"),We=class{constructor(t,e){this.onChange_=this.onChange_.bind(this),this.element=t.createElement("div"),this.element.classList.add(Xe()),e.viewProps.bindClassModifiers(this.element),this.props_=e.props,this.props_.emitter.on("change",this.onChange_);const i=t.createElement("input");i.classList.add(Xe("i")),i.type="text",e.viewProps.bindDisabled(i),this.element.appendChild(i),this.inputElement=i,e.value.emitter.on("change",this.onChange_),this.value_=e.value,this.refresh()}refresh(){const t=this.props_.get("formatter");this.inputElement.value=t(this.value_.rawValue)}onChange_(){this.refresh()}},Qe=class{constructor(t,e){this.onInputChange_=this.onInputChange_.bind(this),this.parser_=e.parser,this.props=e.props,this.value=e.value,this.viewProps=e.viewProps,this.view=new We(t,{props:e.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(t){const e=t.currentTarget.value,i=this.parser_(e);o(i)||(this.value.rawValue=i),this.view.refresh()}};function Je(t){return"false"!==t&&!!t}function Ze(t){return function(t){return String(t)}(t)}var ti=U(0);function ei(t){return ti(t)+"%"}function ii(t){return String(t)}function ni(t){return t}function si({primary:t,secondary:e,forward:i,backward:n}){let s=!1;function r(t){s||(s=!0,t(),s=!1)}t.emitter.on("change",n=>{r(()=>{e.setRawValue(i(t.rawValue,e.rawValue),n.options)})}),e.emitter.on("change",s=>{r(()=>{t.setRawValue(n(t.rawValue,e.rawValue),s.options)}),r(()=>{e.setRawValue(i(t.rawValue,e.rawValue),s.options)})}),r(()=>{e.setRawValue(i(t.rawValue,e.rawValue),{forceEmit:!1,last:!0})})}function ri(t,e){const i=t*(e.altKey?.1:1)*(e.shiftKey?10:1);return e.upKey?+i:e.downKey?-i:0}function oi(t){return{altKey:t.altKey,downKey:"ArrowDown"===t.key,shiftKey:t.shiftKey,upKey:"ArrowUp"===t.key}}function ai(t){return{altKey:t.altKey,downKey:"ArrowLeft"===t.key,shiftKey:t.shiftKey,upKey:"ArrowRight"===t.key}}function li(t){return function(t){return"ArrowUp"===t||"ArrowDown"===t}(t)||"ArrowLeft"===t||"ArrowRight"===t}function pi(t,e){var i,n;const s=e.ownerDocument.defaultView,r=e.getBoundingClientRect();return{x:t.pageX-((null!==(i=s&&s.scrollX)&&void 0!==i?i:0)+r.left),y:t.pageY-((null!==(n=s&&s.scrollY)&&void 0!==n?n:0)+r.top)}}var hi=class{constructor(t){this.lastTouch_=null,this.onDocumentMouseMove_=this.onDocumentMouseMove_.bind(this),this.onDocumentMouseUp_=this.onDocumentMouseUp_.bind(this),this.onMouseDown_=this.onMouseDown_.bind(this),this.onTouchEnd_=this.onTouchEnd_.bind(this),this.onTouchMove_=this.onTouchMove_.bind(this),this.onTouchStart_=this.onTouchStart_.bind(this),this.elem_=t,this.emitter=new m,t.addEventListener("touchstart",this.onTouchStart_,{passive:!1}),t.addEventListener("touchmove",this.onTouchMove_,{passive:!0}),t.addEventListener("touchend",this.onTouchEnd_),t.addEventListener("mousedown",this.onMouseDown_)}computePosition_(t){const e=this.elem_.getBoundingClientRect();return{bounds:{width:e.width,height:e.height},point:t?{x:t.x,y:t.y}:null}}onMouseDown_(t){var e;t.preventDefault(),null===(e=t.currentTarget)||void 0===e||e.focus();const i=this.elem_.ownerDocument;i.addEventListener("mousemove",this.onDocumentMouseMove_),i.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:t.altKey,data:this.computePosition_(pi(t,this.elem_)),sender:this,shiftKey:t.shiftKey})}onDocumentMouseMove_(t){this.emitter.emit("move",{altKey:t.altKey,data:this.computePosition_(pi(t,this.elem_)),sender:this,shiftKey:t.shiftKey})}onDocumentMouseUp_(t){const e=this.elem_.ownerDocument;e.removeEventListener("mousemove",this.onDocumentMouseMove_),e.removeEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("up",{altKey:t.altKey,data:this.computePosition_(pi(t,this.elem_)),sender:this,shiftKey:t.shiftKey})}onTouchStart_(t){t.preventDefault();const e=t.targetTouches.item(0),i=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:t.altKey,data:this.computePosition_(e?{x:e.clientX-i.left,y:e.clientY-i.top}:void 0),sender:this,shiftKey:t.shiftKey}),this.lastTouch_=e}onTouchMove_(t){const e=t.targetTouches.item(0),i=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:t.altKey,data:this.computePosition_(e?{x:e.clientX-i.left,y:e.clientY-i.top}:void 0),sender:this,shiftKey:t.shiftKey}),this.lastTouch_=e}onTouchEnd_(t){var e;const i=null!==(e=t.targetTouches.item(0))&&void 0!==e?e:this.lastTouch_,n=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:t.altKey,data:this.computePosition_(i?{x:i.clientX-n.left,y:i.clientY-n.top}:void 0),sender:this,shiftKey:t.shiftKey})}},ci=Mt("txt"),di=class{constructor(t,e){this.onChange_=this.onChange_.bind(this),this.props_=e.props,this.props_.emitter.on("change",this.onChange_),this.element=t.createElement("div"),this.element.classList.add(ci(),ci(void 0,"num")),e.arrayPosition&&this.element.classList.add(ci(void 0,e.arrayPosition)),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("input");i.classList.add(ci("i")),i.type="text",e.viewProps.bindDisabled(i),this.element.appendChild(i),this.inputElement=i,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=e.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add(ci()),this.inputElement.classList.add(ci("i"));const n=t.createElement("div");n.classList.add(ci("k")),this.element.appendChild(n),this.knobElement=n;const s=t.createElementNS(gt,"svg");s.classList.add(ci("g")),this.knobElement.appendChild(s);const r=t.createElementNS(gt,"path");r.classList.add(ci("gb")),s.appendChild(r),this.guideBodyElem_=r;const o=t.createElementNS(gt,"path");o.classList.add(ci("gh")),s.appendChild(o),this.guideHeadElem_=o;const a=t.createElement("div");a.classList.add(Mt("tt")()),this.knobElement.appendChild(a),this.tooltipElem_=a,e.value.emitter.on("change",this.onChange_),this.value=e.value,this.refresh()}onDraggingChange_(t){if(null===t.rawValue)return void this.element.classList.remove(ci(void 0,"drg"));this.element.classList.add(ci(void 0,"drg"));const e=t.rawValue/this.props_.get("pointerScale"),i=e+(e>0?-1:e<0?1:0),n=q(-i,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${i+n},0 L${i},4 L${i+n},8`,`M ${e},-1 L${e},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${e},4`);const s=this.props_.get("formatter");this.tooltipElem_.textContent=s(this.value.rawValue),this.tooltipElem_.style.left=`${e}px`}refresh(){const t=this.props_.get("formatter");this.inputElement.value=t(this.value.rawValue)}onChange_(){this.refresh()}},ui=class{constructor(t,e){var i;this.originRawValue_=0,this.onInputChange_=this.onInputChange_.bind(this),this.onInputKeyDown_=this.onInputKeyDown_.bind(this),this.onInputKeyUp_=this.onInputKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.parser_=e.parser,this.props=e.props,this.sliderProps_=null!==(i=e.sliderProps)&&void 0!==i?i:null,this.value=e.value,this.viewProps=e.viewProps,this.dragging_=_(null),this.view=new di(t,{arrayPosition:e.arrayPosition,dragging:this.dragging_,props:this.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.inputElement.addEventListener("keydown",this.onInputKeyDown_),this.view.inputElement.addEventListener("keyup",this.onInputKeyUp_);const n=new hi(this.view.knobElement);n.emitter.on("down",this.onPointerDown_),n.emitter.on("move",this.onPointerMove_),n.emitter.on("up",this.onPointerUp_)}constrainValue_(t){var e,i;const n=null===(e=this.sliderProps_)||void 0===e?void 0:e.get("min"),s=null===(i=this.sliderProps_)||void 0===i?void 0:i.get("max");let r=t;return void 0!==n&&(r=Math.max(r,n)),void 0!==s&&(r=Math.min(r,s)),r}onInputChange_(t){const e=t.currentTarget.value,i=this.parser_(e);o(i)||(this.value.rawValue=this.constrainValue_(i)),this.view.refresh()}onInputKeyDown_(t){const e=ri(this.props.get("keyScale"),oi(t));0!==e&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+e),{forceEmit:!1,last:!1})}onInputKeyUp_(t){0!==ri(this.props.get("keyScale"),oi(t))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}onPointerDown_(){this.originRawValue_=this.value.rawValue,this.dragging_.rawValue=0}computeDraggingValue_(t){if(!t.point)return null;const e=t.point.x-t.bounds.width/2;return this.constrainValue_(this.originRawValue_+e*this.props.get("pointerScale"))}onPointerMove_(t){const e=this.computeDraggingValue_(t.data);null!==e&&(this.value.setRawValue(e,{forceEmit:!1,last:!1}),this.dragging_.rawValue=this.value.rawValue-this.originRawValue_)}onPointerUp_(t){const e=this.computeDraggingValue_(t.data);null!==e&&(this.value.setRawValue(e,{forceEmit:!0,last:!0}),this.dragging_.rawValue=null)}},vi=Mt("sld"),mi=class{constructor(t,e){this.onChange_=this.onChange_.bind(this),this.props_=e.props,this.props_.emitter.on("change",this.onChange_),this.element=t.createElement("div"),this.element.classList.add(vi()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(vi("t")),e.viewProps.bindTabIndex(i),this.element.appendChild(i),this.trackElement=i;const n=t.createElement("div");n.classList.add(vi("k")),this.trackElement.appendChild(n),this.knobElement=n,e.value.emitter.on("change",this.onChange_),this.value=e.value,this.update_()}update_(){const t=q(F(this.value.rawValue,this.props_.get("min"),this.props_.get("max"),0,100),0,100);this.knobElement.style.width=`${t}%`}onChange_(){this.update_()}},bi=class{constructor(t,e){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDownOrMove_=this.onPointerDownOrMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.props=e.props,this.view=new mi(t,{props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new hi(this.view.trackElement),this.ptHandler_.emitter.on("down",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("move",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.trackElement.addEventListener("keydown",this.onKeyDown_),this.view.trackElement.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(t,e){t.point&&this.value.setRawValue(F(q(t.point.x,0,t.bounds.width),0,t.bounds.width,this.props.get("min"),this.props.get("max")),e)}onPointerDownOrMove_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerUp_(t){this.handlePointerEvent_(t.data,{forceEmit:!0,last:!0})}onKeyDown_(t){const e=ri(this.props.get("keyScale"),ai(t));0!==e&&this.value.setRawValue(this.value.rawValue+e,{forceEmit:!1,last:!1})}onKeyUp_(t){0!==ri(this.props.get("keyScale"),ai(t))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}},gi=Mt("sldtxt"),wi=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(gi());const i=t.createElement("div");i.classList.add(gi("s")),this.sliderView_=e.sliderView,i.appendChild(this.sliderView_.element),this.element.appendChild(i);const n=t.createElement("div");n.classList.add(gi("t")),this.textView_=e.textView,n.appendChild(this.textView_.element),this.element.appendChild(n)}},_i=class{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.sliderC_=new bi(t,{props:e.sliderProps,value:e.value,viewProps:this.viewProps}),this.textC_=new ui(t,{parser:e.parser,props:e.textProps,sliderProps:e.sliderProps,value:e.value,viewProps:e.viewProps}),this.view=new wi(t,{sliderView:this.sliderC_.view,textView:this.textC_.view})}get sliderController(){return this.sliderC_}get textController(){return this.textC_}importProps(t){return ut(t,null,t=>({max:t.required.number,min:t.required.number}),t=>{const e=this.sliderC_.props;return e.set("max",t.max),e.set("min",t.min),!0})}exportProps(){const t=this.sliderC_.props;return vt(null,{max:t.get("max"),min:t.get("min")})}};function fi(t){return{sliderProps:new f({keyScale:t.keyScale,max:t.max,min:t.min}),textProps:new f({formatter:_(t.formatter),keyScale:t.keyScale,pointerScale:_(t.pointerScale)})}}var xi={containerUnitSize:"cnt-usz"};function Ci(t){return`--${xi[t]}`}function yi(t){return Z(t)}function Pi(t){if(l(t))return dt(t,yi)}function Ei(t,e){if(!t)return;const i=[],n=W(t,e);n&&i.push(n);const s=Q(t);return s&&i.push(s),new ze(i)}function ki(t){if("inline"===t||"popup"===t)return t}function Vi(t,e){t.write(e)}var Li=Mt("ckb"),Mi=class{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.element=t.createElement("div"),this.element.classList.add(Li()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("label");i.classList.add(Li("l")),this.element.appendChild(i),this.labelElement=i;const n=t.createElement("input");n.classList.add(Li("i")),n.type="checkbox",this.labelElement.appendChild(n),this.inputElement=n,e.viewProps.bindDisabled(this.inputElement);const s=t.createElement("div");s.classList.add(Li("w")),this.labelElement.appendChild(s);const r=xt(t,"check");s.appendChild(r),e.value.emitter.on("change",this.onValueChange_),this.value=e.value,this.update_()}update_(){this.inputElement.checked=this.value.rawValue}onValueChange_(){this.update_()}},Si=class{constructor(t,e){this.onInputChange_=this.onInputChange_.bind(this),this.onLabelMouseDown_=this.onLabelMouseDown_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.view=new Mi(t,{value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.labelElement.addEventListener("mousedown",this.onLabelMouseDown_)}onInputChange_(t){const e=t.currentTarget;this.value.rawValue=e.checked,t.preventDefault(),t.stopPropagation()}onLabelMouseDown_(t){t.preventDefault()}},ji=Zt({id:"input-bool",type:"input",accept:(t,e)=>{if("boolean"!=typeof t)return null;const i=dt(e,t=>({options:t.optional.custom(Ke),readonly:t.optional.constant(!1)}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>Je,constraint:t=>function(t){const e=[],i=Ue(t.options);return i&&e.push(i),new ze(e)}(t.params),writer:t=>Vi},controller:t=>{const e=t.document,i=t.value,n=t.constraint,s=n&&Re(n,Ne);return s?new qe(e,{props:new f({options:s.values.value("options")}),value:i,viewProps:t.viewProps}):new Si(e,{value:i,viewProps:t.viewProps})},api:t=>"boolean"!=typeof t.controller.value.rawValue?null:t.controller.valueController instanceof qe?new Oe(t.controller):null}),Di=Mt("col"),Ai=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Di()),e.foldable.bindExpandedClass(this.element,Di(void 0,"expanded")),Vt(e.foldable,"completed",qt(this.element,Di(void 0,"cpl")));const i=t.createElement("div");i.classList.add(Di("h")),this.element.appendChild(i);const n=t.createElement("div");n.classList.add(Di("s")),i.appendChild(n),this.swatchElement=n;const s=t.createElement("div");if(s.classList.add(Di("t")),i.appendChild(s),this.textElement=s,"inline"===e.pickerLayout){const e=t.createElement("div");e.classList.add(Di("p")),this.element.appendChild(e),this.pickerElement=e}else this.pickerElement=null}};function Oi(t,e,i){const n=H(t,360),s=q(e/100,0,1),r=q(i/100,0,1),o=r*s,a=o*(1-Math.abs(n/60%2-1)),l=r-o;let p,h,c;return[p,h,c]=n>=0&&n<60?[o,a,0]:n>=60&&n<120?[a,o,0]:n>=120&&n<180?[0,o,a]:n>=180&&n<240?[0,a,o]:n>=240&&n<300?[a,0,o]:[o,0,a],[255*(p+l),255*(h+l),255*(c+l)]}function Bi(t){return[t[0],t[1],t[2]]}function Ti(t,e){return[t[0],t[1],t[2],e]}var zi={hsl:{hsl:(t,e,i)=>[t,e,i],hsv:function(t,e,i){const n=i+e*(100-Math.abs(2*i-100))/200;return[t,0!==n?e*(100-Math.abs(2*i-100))/n:0,i+e*(100-Math.abs(2*i-100))/200]},rgb:function(t,e,i){const n=(t%360+360)%360,s=q(e/100,0,1),r=q(i/100,0,1),o=(1-Math.abs(2*r-1))*s,a=o*(1-Math.abs(n/60%2-1)),l=r-o/2;let p,h,c;return[p,h,c]=n>=0&&n<60?[o,a,0]:n>=60&&n<120?[a,o,0]:n>=120&&n<180?[0,o,a]:n>=180&&n<240?[0,a,o]:n>=240&&n<300?[a,0,o]:[o,0,a],[255*(p+l),255*(h+l),255*(c+l)]}},hsv:{hsl:function(t,e,i){const n=100-Math.abs(i*(200-e)/100-100);return[t,0!==n?e*i/n:0,i*(200-e)/200]},hsv:(t,e,i)=>[t,e,i],rgb:Oi},rgb:{hsl:function(t,e,i){const n=q(t/255,0,1),s=q(e/255,0,1),r=q(i/255,0,1),o=Math.max(n,s,r),a=Math.min(n,s,r),l=o-a;let p=0,h=0;const c=(a+o)/2;return 0!==l&&(h=l/(1-Math.abs(o+a-1)),p=n===o?(s-r)/l:s===o?2+(r-n)/l:4+(n-s)/l,p=p/6+(p<0?1:0)),[360*p,100*h,100*c]},hsv:function(t,e,i){const n=q(t/255,0,1),s=q(e/255,0,1),r=q(i/255,0,1),o=Math.max(n,s,r),a=o-Math.min(n,s,r);let l;return l=0===a?0:o===n?((s-r)/a%6+6)%6*60:o===s?60*((r-n)/a+2):60*((n-s)/a+4),[l,100*(0===o?0:a/o),100*o]},rgb:(t,e,i)=>[t,e,i]}};function Ri(t,e){return["float"===e?1:"rgb"===t?255:360,"float"===e?1:"rgb"===t?255:100,"float"===e?1:"rgb"===t?255:100]}function Ni(t,e,i){var n;const s=Ri(e,i);return["rgb"===e?q(t[0],0,s[0]):(r=t[0],o=s[0],r===o?o:H(r,o)),q(t[1],0,s[1]),q(t[2],0,s[2]),q(null!==(n=t[3])&&void 0!==n?n:1,0,1)];var r,o}function Ki(t,e,i,n){const s=Ri(e,i),r=Ri(e,n);return t.map((t,e)=>t/s[e]*r[e])}function Ii(t,e,i){const n=Ki(t,e.mode,e.type,"int");return Ki(zi[e.mode][i.mode](...n),i.mode,"int",i.type)}var Ui=class t{static black(){return new t([0,0,0],"rgb")}constructor(t,e){this.type="int",this.mode=e,this.comps_=Ni(t,e,this.type)}getComponents(t){return Ti(Ii(Bi(this.comps_),{mode:this.mode,type:this.type},{mode:null!=t?t:this.mode,type:this.type}),this.comps_[3])}toRgbaObject(){const t=this.getComponents("rgb");return{r:t[0],g:t[1],b:t[2],a:t[3]}}},Fi=Mt("colp"),$i=class{constructor(t,e){this.alphaViews_=null,this.element=t.createElement("div"),this.element.classList.add(Fi()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(Fi("hsv"));const n=t.createElement("div");n.classList.add(Fi("sv")),this.svPaletteView_=e.svPaletteView,n.appendChild(this.svPaletteView_.element),i.appendChild(n);const s=t.createElement("div");s.classList.add(Fi("h")),this.hPaletteView_=e.hPaletteView,s.appendChild(this.hPaletteView_.element),i.appendChild(s),this.element.appendChild(i);const r=t.createElement("div");if(r.classList.add(Fi("rgb")),this.textsView_=e.textsView,r.appendChild(this.textsView_.element),this.element.appendChild(r),e.alphaViews){this.alphaViews_={palette:e.alphaViews.palette,text:e.alphaViews.text};const i=t.createElement("div");i.classList.add(Fi("a"));const n=t.createElement("div");n.classList.add(Fi("ap")),n.appendChild(this.alphaViews_.palette.element),i.appendChild(n);const s=t.createElement("div");s.classList.add(Fi("at")),s.appendChild(this.alphaViews_.text.element),i.appendChild(s),this.element.appendChild(i)}}get allFocusableElements(){const t=[this.svPaletteView_.element,this.hPaletteView_.element,this.textsView_.modeSelectElement,...this.textsView_.inputViews.map(t=>t.inputElement)];return this.alphaViews_&&t.push(this.alphaViews_.palette.element,this.alphaViews_.text.inputElement),t}};function qi(t){return"int"===t?"int":"float"===t?"float":void 0}function Hi(t){return dt(t,t=>({color:t.optional.object({alpha:t.optional.boolean,type:t.optional.custom(qi)}),expanded:t.optional.boolean,picker:t.optional.custom(ki),readonly:t.optional.constant(!1)}))}function Gi(t){return t?.1:1}function Yi(t){var e;return null===(e=t.color)||void 0===e?void 0:e.type}var Xi=class{constructor(t,e){this.type="float",this.mode=e,this.comps_=Ni(t,e,this.type)}getComponents(t){return Ti(Ii(Bi(this.comps_),{mode:this.mode,type:this.type},{mode:null!=t?t:this.mode,type:this.type}),this.comps_[3])}toRgbaObject(){const t=this.getComponents("rgb");return{r:t[0],g:t[1],b:t[2],a:t[3]}}},Wi={int:(t,e)=>new Ui(t,e),float:(t,e)=>new Xi(t,e)};function Qi(t,e,i){return Wi[i](t,e)}function Ji(t,e){if(t.type===e)return t;if(function(t){return"int"===t.type}(t)&&"float"===e)return function(t){const e=t.getComponents(),i=Ri(t.mode,"int");return new Xi([F(e[0],0,i[0],0,1),F(e[1],0,i[1],0,1),F(e[2],0,i[2],0,1),e[3]],t.mode)}(t);if(function(t){return"float"===t.type}(t)&&"int"===e)return function(t){const e=t.getComponents(),i=Ri(t.mode,"int");return new Ui([Math.round(F(e[0],0,1,0,i[0])),Math.round(F(e[1],0,1,0,i[1])),Math.round(F(e[2],0,1,0,i[2])),e[3]],t.mode)}(t);throw u.shouldNeverHappen()}function Zi(t,e){const i=t.match(/^(.+)%$/);return i?Math.min(.01*parseFloat(i[1])*e,e):Math.min(parseFloat(t),e)}var tn={deg:t=>t,grad:t=>360*t/400,rad:t=>360*t/(2*Math.PI),turn:t=>360*t};function en(t){const e=t.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);if(!e)return parseFloat(t);const i=parseFloat(e[1]);return tn[e[2]](i)}function nn(t){const e=t.match(/^rgb\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const i=[Zi(e[1],255),Zi(e[2],255),Zi(e[3],255)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])?null:i}function sn(t){const e=nn(t);return e?new Ui(e,"rgb"):null}function rn(t){const e=t.match(/^rgba\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const i=[Zi(e[1],255),Zi(e[2],255),Zi(e[3],255),Zi(e[4],1)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])||isNaN(i[3])?null:i}function on(t){const e=rn(t);return e?new Ui(e,"rgb"):null}function an(t){const e=t.match(/^hsl\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const i=[en(e[1]),Zi(e[2],100),Zi(e[3],100)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])?null:i}function ln(t){const e=an(t);return e?new Ui(e,"hsl"):null}function pn(t){const e=t.match(/^hsla\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const i=[en(e[1]),Zi(e[2],100),Zi(e[3],100),Zi(e[4],1)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])||isNaN(i[3])?null:i}function hn(t){const e=pn(t);return e?new Ui(e,"hsl"):null}function cn(t){const e=t.match(/^#([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(e)return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)];const i=t.match(/^(?:#|0x)([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return i?[parseInt(i[1],16),parseInt(i[2],16),parseInt(i[3],16)]:null}function dn(t){const e=cn(t);return e?new Ui(e,"rgb"):null}function un(t){const e=t.match(/^#([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(e)return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16),F(parseInt(e[4]+e[4],16),0,255,0,1)];const i=t.match(/^(?:#|0x)?([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return i?[parseInt(i[1],16),parseInt(i[2],16),parseInt(i[3],16),F(parseInt(i[4],16),0,255,0,1)]:null}function vn(t){const e=un(t);return e?new Ui(e,"rgb"):null}function mn(t){const e=t.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!e)return null;const i=[parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3])];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])?null:i}function bn(t){return e=>{const i=mn(e);return i?Qi(i,"rgb",t):null}}function gn(t){const e=t.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*a\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!e)return null;const i=[parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3]),parseFloat(e[4])];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])||isNaN(i[3])?null:i}function wn(t){return e=>{const i=gn(e);return i?Qi(i,"rgb",t):null}}var _n=[{parser:cn,result:{alpha:!1,mode:"rgb",notation:"hex"}},{parser:un,result:{alpha:!0,mode:"rgb",notation:"hex"}},{parser:nn,result:{alpha:!1,mode:"rgb",notation:"func"}},{parser:rn,result:{alpha:!0,mode:"rgb",notation:"func"}},{parser:an,result:{alpha:!1,mode:"hsl",notation:"func"}},{parser:pn,result:{alpha:!0,mode:"hsl",notation:"func"}},{parser:mn,result:{alpha:!1,mode:"rgb",notation:"object"}},{parser:gn,result:{alpha:!0,mode:"rgb",notation:"object"}}];function fn(t){const e=[dn,vn,sn,on,ln,hn];"int"===t&&e.push(bn("int"),wn("int")),"float"===t&&e.push(bn("float"),wn("float"));const i=function(t){return e=>t.reduce((t,i)=>null!==t?t:i(e),null)}(e);return e=>{const n=i(e);return n?Ji(n,t):null}}function xn(t){const e=fn("int");if("string"!=typeof t)return Ui.black();const i=e(t);return null!=i?i:Ui.black()}function Cn(t){const e=q(Math.floor(t),0,255).toString(16);return 1===e.length?`0${e}`:e}function yn(t,e="#"){return`${e}${Bi(t.getComponents("rgb")).map(Cn).join("")}`}function Pn(t,e="#"){const i=t.getComponents("rgb");return`${e}${[i[0],i[1],i[2],255*i[3]].map(Cn).join("")}`}function En(t){const e=U(0);return`rgb(${Bi(Ji(t,"int").getComponents("rgb")).map(t=>e(t)).join(", ")})`}function kn(t){const e=U(2),i=U(0);return`rgba(${Ji(t,"int").getComponents("rgb").map((t,n)=>(3===n?e:i)(t)).join(", ")})`}function Vn(t,e){const i=U("float"===e?2:0),n=["r","g","b"];return`{${Bi(Ji(t,e).getComponents("rgb")).map((t,e)=>`${n[e]}: ${i(t)}`).join(", ")}}`}function Ln(t){return e=>Vn(e,t)}function Mn(t,e){const i=U(2),n=U("float"===e?2:0),s=["r","g","b","a"];return`{${Ji(t,e).getComponents("rgb").map((t,e)=>`${s[e]}: ${(3===e?i:n)(t)}`).join(", ")}}`}function Sn(t){return e=>Mn(e,t)}var jn=[{format:{alpha:!1,mode:"rgb",notation:"hex",type:"int"},stringifier:yn},{format:{alpha:!0,mode:"rgb",notation:"hex",type:"int"},stringifier:Pn},{format:{alpha:!1,mode:"rgb",notation:"func",type:"int"},stringifier:En},{format:{alpha:!0,mode:"rgb",notation:"func",type:"int"},stringifier:kn},{format:{alpha:!1,mode:"hsl",notation:"func",type:"int"},stringifier:function(t){const e=[U(0),ei,ei];return`hsl(${Bi(Ji(t,"int").getComponents("hsl")).map((t,i)=>e[i](t)).join(", ")})`}},{format:{alpha:!0,mode:"hsl",notation:"func",type:"int"},stringifier:function(t){const e=[U(0),ei,ei,U(2)];return`hsla(${Ji(t,"int").getComponents("hsl").map((t,i)=>e[i](t)).join(", ")})`}},...["int","float"].reduce((t,e)=>[...t,{format:{alpha:!1,mode:"rgb",notation:"object",type:e},stringifier:Ln(e)},{format:{alpha:!0,mode:"rgb",notation:"object",type:e},stringifier:Sn(e)}],[])];function Dn(t){return jn.reduce((e,i)=>{return e||(n=i.format,s=t,n.alpha===s.alpha&&n.mode===s.mode&&n.notation===s.notation&&n.type===s.type?i.stringifier:null);var n,s},null)}var An=Mt("apl"),On=class{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.value=e.value,this.value.emitter.on("change",this.onValueChange_),this.element=t.createElement("div"),this.element.classList.add(An()),e.viewProps.bindClassModifiers(this.element),e.viewProps.bindTabIndex(this.element);const i=t.createElement("div");i.classList.add(An("b")),this.element.appendChild(i);const n=t.createElement("div");n.classList.add(An("c")),i.appendChild(n),this.colorElem_=n;const s=t.createElement("div");s.classList.add(An("m")),this.element.appendChild(s),this.markerElem_=s;const r=t.createElement("div");r.classList.add(An("p")),this.markerElem_.appendChild(r),this.previewElem_=r,this.update_()}update_(){const t=this.value.rawValue,e=t.getComponents("rgb"),i=new Ui([e[0],e[1],e[2],0],"rgb"),n=new Ui([e[0],e[1],e[2],255],"rgb"),s=["to right",kn(i),kn(n)];this.colorElem_.style.background=`linear-gradient(${s.join(",")})`,this.previewElem_.style.backgroundColor=kn(t);const r=F(e[3],0,1,0,100);this.markerElem_.style.left=`${r}%`}onValueChange_(){this.update_()}},Bn=class{constructor(t,e){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.view=new On(t,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new hi(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(t,e){if(!t.point)return;const i=t.point.x/t.bounds.width,[n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new Ui([n,s,r,i],"hsv"),e)}onPointerDown_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerMove_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerUp_(t){this.handlePointerEvent_(t.data,{forceEmit:!0,last:!0})}onKeyDown_(t){const e=ri(Gi(!0),ai(t));if(0===e)return;const[i,n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new Ui([i,n,s,r+e],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(t){0!==ri(Gi(!0),ai(t))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}},Tn=Mt("coltxt"),zn=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Tn()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(Tn("m")),this.modeElem_=function(t){const e=t.createElement("select");return e.appendChild([{text:"RGB",value:"rgb"},{text:"HSL",value:"hsl"},{text:"HSV",value:"hsv"},{text:"HEX",value:"hex"}].reduce((e,i)=>{const n=t.createElement("option");return n.textContent=i.text,n.value=i.value,e.appendChild(n),e},t.createDocumentFragment())),e}(t),this.modeElem_.classList.add(Tn("ms")),i.appendChild(this.modeSelectElement),e.viewProps.bindDisabled(this.modeElem_);const n=t.createElement("div");n.classList.add(Tn("mm")),n.appendChild(xt(t,"dropdown")),i.appendChild(n),this.element.appendChild(i);const s=t.createElement("div");s.classList.add(Tn("w")),this.element.appendChild(s),this.inputsElem_=s,this.inputViews_=e.inputViews,this.applyInputViews_(),kt(e.mode,t=>{this.modeElem_.value=t})}get modeSelectElement(){return this.modeElem_}get inputViews(){return this.inputViews_}set inputViews(t){this.inputViews_=t,this.applyInputViews_()}applyInputViews_(){Pt(this.inputsElem_);const t=this.element.ownerDocument;this.inputViews_.forEach(e=>{const i=t.createElement("div");i.classList.add(Tn("c")),i.appendChild(e.element),this.inputsElem_.appendChild(i)})}};function Rn(t,e,i){const n=Ri(t,e)[i];return new x({min:0,max:n})}var Nn=class{constructor(t,e){this.onModeSelectChange_=this.onModeSelectChange_.bind(this),this.colorType_=e.colorType,this.value=e.value,this.viewProps=e.viewProps,this.colorMode=_(this.value.rawValue.mode),this.ccs_=this.createComponentControllers_(t),this.view=new zn(t,{mode:this.colorMode,inputViews:[this.ccs_[0].view,this.ccs_[1].view,this.ccs_[2].view],viewProps:this.viewProps}),this.view.modeSelectElement.addEventListener("change",this.onModeSelectChange_)}createComponentControllers_(t){const e=this.colorMode.rawValue;return function(t){return"hex"!==t}(e)?function(t,e){const i={colorMode:e.colorMode,colorType:e.colorType,parser:N,viewProps:e.viewProps};return[0,1,2].map(n=>{const s=function(t,e,i){return new ui(t,{arrayPosition:0===i?"fst":2===i?"lst":"mid",parser:e.parser,props:f.fromObject({formatter:(n=e.colorType,U("float"===n?2:0)),keyScale:Gi(!1),pointerScale:"float"===e.colorType?.01:1}),value:_(0,{constraint:Rn(e.colorMode,e.colorType,i)}),viewProps:e.viewProps});var n}(t,i,n);return si({primary:e.value,secondary:s.value,forward:t=>Ji(t,e.colorType).getComponents(e.colorMode)[n],backward(t,i){const s=e.colorMode,r=Ji(t,e.colorType).getComponents(s);return r[n]=i,Ji(Qi(Ti(Bi(r),r[3]),s,e.colorType),"int")}}),s})}(t,{colorMode:e,colorType:this.colorType_,value:this.value,viewProps:this.viewProps}):function(t,e){const i=new Qe(t,{parser:fn("int"),props:f.fromObject({formatter:yn}),value:_(Ui.black()),viewProps:e.viewProps});return si({primary:e.value,secondary:i.value,forward:t=>new Ui(Bi(t.getComponents()),t.mode),backward:(t,e)=>new Ui(Ti(Bi(e.getComponents(t.mode)),t.getComponents()[3]),t.mode)}),[i]}(t,{value:this.value,viewProps:this.viewProps})}onModeSelectChange_(t){const e=t.currentTarget;this.colorMode.rawValue=e.value,this.ccs_=this.createComponentControllers_(this.view.element.ownerDocument),this.view.inputViews=this.ccs_.map(t=>t.view)}},Kn=Mt("hpl"),In=class{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.value=e.value,this.value.emitter.on("change",this.onValueChange_),this.element=t.createElement("div"),this.element.classList.add(Kn()),e.viewProps.bindClassModifiers(this.element),e.viewProps.bindTabIndex(this.element);const i=t.createElement("div");i.classList.add(Kn("c")),this.element.appendChild(i);const n=t.createElement("div");n.classList.add(Kn("m")),this.element.appendChild(n),this.markerElem_=n,this.update_()}update_(){const[t]=this.value.rawValue.getComponents("hsv");this.markerElem_.style.backgroundColor=En(new Ui([t,100,100],"hsv"));const e=F(t,0,360,0,100);this.markerElem_.style.left=`${e}%`}onValueChange_(){this.update_()}},Un=class{constructor(t,e){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.view=new In(t,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new hi(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(t,e){if(!t.point)return;const i=F(q(t.point.x,0,t.bounds.width),0,t.bounds.width,0,360),[,n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new Ui([i,n,s,r],"hsv"),e)}onPointerDown_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerMove_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerUp_(t){this.handlePointerEvent_(t.data,{forceEmit:!0,last:!0})}onKeyDown_(t){const e=ri(Gi(!1),ai(t));if(0===e)return;const[i,n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new Ui([i+e,n,s,r],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(t){0!==ri(Gi(!1),ai(t))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}},Fn=Mt("svp"),$n=class{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.value=e.value,this.value.emitter.on("change",this.onValueChange_),this.element=t.createElement("div"),this.element.classList.add(Fn()),e.viewProps.bindClassModifiers(this.element),e.viewProps.bindTabIndex(this.element);const i=t.createElement("canvas");i.height=64,i.width=64,i.classList.add(Fn("c")),this.element.appendChild(i),this.canvasElement=i;const n=t.createElement("div");n.classList.add(Fn("m")),this.element.appendChild(n),this.markerElem_=n,this.update_()}update_(){const t=function(t){const e=t.ownerDocument.defaultView;return e&&"document"in e?t.getContext("2d",{willReadFrequently:!0}):null}(this.canvasElement);if(!t)return;const e=this.value.rawValue.getComponents("hsv"),i=this.canvasElement.width,n=this.canvasElement.height,s=t.getImageData(0,0,i,n),r=s.data;for(let l=0;lt.getComponents()[3],backward:(t,e)=>{const i=t.getComponents();return i[3]=e,new Ui(i,t.mode)}}),this.textsC_=new Nn(t,{colorType:e.colorType,value:this.value,viewProps:this.viewProps}),this.view=new $i(t,{alphaViews:this.alphaIcs_?{palette:this.alphaIcs_.palette.view,text:this.alphaIcs_.text.view}:null,hPaletteView:this.hPaletteC_.view,supportsAlpha:e.supportsAlpha,svPaletteView:this.svPaletteC_.view,textsView:this.textsC_.view,viewProps:this.viewProps})}get textsController(){return this.textsC_}},Gn=Mt("colsw"),Yn=class{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),e.value.emitter.on("change",this.onValueChange_),this.value=e.value,this.element=t.createElement("div"),this.element.classList.add(Gn()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(Gn("sw")),this.element.appendChild(i),this.swatchElem_=i;const n=t.createElement("button");n.classList.add(Gn("b")),e.viewProps.bindDisabled(n),this.element.appendChild(n),this.buttonElement=n,this.update_()}update_(){const t=this.value.rawValue;this.swatchElem_.style.backgroundColor=Pn(t)}onValueChange_(){this.update_()}},Xn=class{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.view=new Yn(t,{value:this.value,viewProps:this.viewProps})}},Wn=class{constructor(t,e){this.onButtonBlur_=this.onButtonBlur_.bind(this),this.onButtonClick_=this.onButtonClick_.bind(this),this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.foldable_=he.create(e.expanded),this.swatchC_=new Xn(t,{value:this.value,viewProps:this.viewProps});const i=this.swatchC_.view.buttonElement;i.addEventListener("blur",this.onButtonBlur_),i.addEventListener("click",this.onButtonClick_),this.textC_=new Qe(t,{parser:e.parser,props:f.fromObject({formatter:e.formatter}),value:this.value,viewProps:this.viewProps}),this.view=new Ai(t,{foldable:this.foldable_,pickerLayout:e.pickerLayout}),this.view.swatchElement.appendChild(this.swatchC_.view.element),this.view.textElement.appendChild(this.textC_.view.element),this.popC_="popup"===e.pickerLayout?new Ye(t,{viewProps:this.viewProps}):null;const n=new Hn(t,{colorType:e.colorType,supportsAlpha:e.supportsAlpha,value:this.value,viewProps:this.viewProps});n.view.allFocusableElements.forEach(t=>{t.addEventListener("blur",this.onPopupChildBlur_),t.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=n,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(n.view.element),si({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:t=>t,backward:(t,e)=>e})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),de(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onButtonBlur_(t){if(!this.popC_)return;const e=this.view.element,i=t.relatedTarget;i&&e.contains(i)||(this.popC_.shows.rawValue=!1)}onButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(t){if(!this.popC_)return;const e=this.popC_.view.element,i=Et(t);i&&e.contains(i)||i&&i===this.swatchC_.view.buttonElement&&!_t(e.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(t){this.popC_?"Escape"===t.key&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&"Escape"===t.key&&this.swatchC_.view.buttonElement.focus()}};function Qn(t){return Bi(t.getComponents("rgb")).reduce((t,e)=>t<<8|255&Math.floor(e),0)}function Jn(t){return t.getComponents("rgb").reduce((t,e,i)=>t<<8|255&Math.floor(3===i?255*e:e),0)>>>0}function Zn(t){return"number"!=typeof t?Ui.black():new Ui([(e=t)>>16&255,e>>8&255,255&e],"rgb");var e}function ts(t){return"number"!=typeof t?Ui.black():new Ui([(e=t)>>24&255,e>>16&255,e>>8&255,F(255&e,0,255,0,1)],"rgb");var e}function es(t,e){return"object"==typeof t&&!o(t)&&e in t&&"number"==typeof t[e]}function is(t){return es(t,"r")&&es(t,"g")&&es(t,"b")}function ns(t){return is(t)&&es(t,"a")}function ss(t){return is(t)}function rs(t,e){if(t.mode!==e.mode)return!1;if(t.type!==e.type)return!1;const i=t.getComponents(),n=e.getComponents();for(let s=0;s{if("number"!=typeof t)return null;if(!function(t){return"color"in t||"color"===t.view}(e))return null;const i=Hi(e);return i?{initialValue:t,params:Object.assign(Object.assign({},i),{supportsAlpha:(n=e,!!(null===(s=null==n?void 0:n.color)||void 0===s?void 0:s.alpha))})}:null;var n,s},binding:{reader:t=>t.params.supportsAlpha?ts:Zn,equals:rs,writer:t=>function(t){const e=t?Jn:Qn;return(t,i)=>{Vi(t,e(i))}}(t.params.supportsAlpha)},controller:t=>{var e,i,n;return new Wn(t.document,{colorType:"int",expanded:null!==(e=t.params.expanded)&&void 0!==e&&e,formatter:(n=t.params.supportsAlpha,n?t=>Pn(t,"0x"):t=>yn(t,"0x")),parser:fn("int"),pickerLayout:null!==(i=t.params.picker)&&void 0!==i?i:"popup",supportsAlpha:t.params.supportsAlpha,value:t.value,viewProps:t.viewProps})}});function ls(t,e){return i=>t?Mn(i,e):Vn(i,e)}var ps=Zt({id:"input-color-object",type:"input",accept:(t,e)=>{var i;if(!ss(t))return null;const n=Hi(e);return n?{initialValue:t,params:Object.assign(Object.assign({},n),{colorType:null!==(i=Yi(e))&&void 0!==i?i:"int"})}:null},binding:{reader:t=>{return e=t.params.colorType,t=>Ji(function(t,e){return ss(t)?"int"===e?new Ui(os(t),"rgb"):"float"===e?new Xi(os(t),"rgb"):Ji(Ui.black(),"int"):Ji(Ui.black(),e)}(t,e),"int");var e},equals:rs,writer:t=>{return e=ns(t.initialValue),i=t.params.colorType,(t,n)=>{e?function(t,e,i){const n=Ji(e,i).toRgbaObject();t.writeProperty("r",n.r),t.writeProperty("g",n.g),t.writeProperty("b",n.b),t.writeProperty("a",n.a)}(t,n,i):function(t,e,i){const n=Ji(e,i).toRgbaObject();t.writeProperty("r",n.r),t.writeProperty("g",n.g),t.writeProperty("b",n.b)}(t,n,i)};var e,i}},controller:t=>{var e,i;const n=ns(t.initialValue);return new Wn(t.document,{colorType:t.params.colorType,expanded:null!==(e=t.params.expanded)&&void 0!==e&&e,formatter:ls(n,t.params.colorType),parser:fn("int"),pickerLayout:null!==(i=t.params.picker)&&void 0!==i?i:"popup",supportsAlpha:n,value:t.value,viewProps:t.viewProps})}}),hs=Zt({id:"input-color-string",type:"input",accept:(t,e)=>{if("string"!=typeof t)return null;if("text"===e.view)return null;const i=function(t,e="int"){const i=function(t){return _n.reduce((e,{parser:i,result:n})=>e||(i(t)?n:null),null)}(t);return i?"hex"===i.notation&&"float"!==e?Object.assign(Object.assign({},i),{type:"int"}):"func"===i.notation?Object.assign(Object.assign({},i),{type:e}):null:null}(t,Yi(e));if(!i)return null;const n=Dn(i);if(!n)return null;const s=Hi(e);return s?{initialValue:t,params:Object.assign(Object.assign({},s),{format:i,stringifier:n})}:null},binding:{reader:()=>xn,equals:rs,writer:t=>{const e=function(t){const e=Dn(t);return e?(t,i)=>{Vi(t,e(i))}:null}(t.params.format);if(!e)throw u.notBindable();return e}},controller:t=>{var e,i;return new Wn(t.document,{colorType:t.params.format.type,expanded:null!==(e=t.params.expanded)&&void 0!==e&&e,formatter:t.params.stringifier,parser:fn("int"),pickerLayout:null!==(i=t.params.picker)&&void 0!==i?i:"popup",supportsAlpha:t.params.format.alpha,value:t.value,viewProps:t.viewProps})}}),cs=class{constructor(t){this.components=t.components,this.asm_=t.assembly}constrain(t){const e=this.asm_.toComponents(t).map((t,e)=>{var i,n;return null!==(n=null===(i=this.components[e])||void 0===i?void 0:i.constrain(t))&&void 0!==n?n:t});return this.asm_.fromComponents(e)}},ds=Mt("pndtxt"),us=class{constructor(t,e){this.textViews=e.textViews,this.element=t.createElement("div"),this.element.classList.add(ds()),this.textViews.forEach(e=>{const i=t.createElement("div");i.classList.add(ds("a")),i.appendChild(e.element),this.element.appendChild(i)})}},vs=class{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.acs_=e.axes.map((i,n)=>function(t,e,i){return new ui(t,{arrayPosition:0===i?"fst":i===e.axes.length-1?"lst":"mid",parser:e.parser,props:e.axes[i].textProps,value:_(0,{constraint:e.axes[i].constraint}),viewProps:e.viewProps})}(t,e,n)),this.acs_.forEach((t,i)=>{si({primary:this.value,secondary:t.value,forward:t=>e.assembly.toComponents(t)[i],backward:(t,n)=>{const s=e.assembly.toComponents(t);return s[i]=n,e.assembly.fromComponents(s)}})}),this.view=new us(t,{textViews:this.acs_.map(t=>t.view)})}get textControllers(){return this.acs_}},ms=class extends at{get max(){return this.controller.valueController.sliderController.props.get("max")}set max(t){this.controller.valueController.sliderController.props.set("max",t)}get min(){return this.controller.valueController.sliderController.props.get("min")}set min(t){this.controller.valueController.sliderController.props.set("min",t)}},bs=Zt({id:"input-number",type:"input",accept:(t,e)=>{if("number"!=typeof t)return null;const i=dt(e,t=>Object.assign(Object.assign({},Z(t)),{options:t.optional.custom(Ke),readonly:t.optional.constant(!1)}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>K,constraint:t=>function(t,e){const i=[],n=W(t,e);n&&i.push(n);const s=Q(t);s&&i.push(s);const r=Ue(t.options);return r&&i.push(r),new ze(i)}(t.params,t.initialValue),writer:t=>Vi},controller:t=>{const e=t.value,i=t.constraint,n=i&&Re(i,Ne);if(n)return new qe(t.document,{props:new f({options:n.values.value("options")}),value:e,viewProps:t.viewProps});const s=J(t.params,e.rawValue),r=i&&Re(i,x);return r?new _i(t.document,Object.assign(Object.assign({},fi(Object.assign(Object.assign({},s),{keyScale:_(s.keyScale),max:r.values.value("max"),min:r.values.value("min")}))),{parser:N,value:e,viewProps:t.viewProps})):new ui(t.document,{parser:N,props:f.fromObject(s),value:e,viewProps:t.viewProps})},api:t=>"number"!=typeof t.controller.value.rawValue?null:t.controller.valueController instanceof _i?new ms(t.controller):t.controller.valueController instanceof qe?new Oe(t.controller):null}),gs=class{constructor(t=0,e=0){this.x=t,this.y=e}getComponents(){return[this.x,this.y]}static isObject(t){if(o(t))return!1;const e=t.x,i=t.y;return"number"==typeof e&&"number"==typeof i}static equals(t,e){return t.x===e.x&&t.y===e.y}toObject(){return{x:this.x,y:this.y}}},ws={toComponents:t=>t.getComponents(),fromComponents:t=>new gs(...t)},_s=Mt("p2d"),fs=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(_s()),e.viewProps.bindClassModifiers(this.element),kt(e.expanded,qt(this.element,_s(void 0,"expanded")));const i=t.createElement("div");i.classList.add(_s("h")),this.element.appendChild(i);const n=t.createElement("button");n.classList.add(_s("b")),n.appendChild(xt(t,"p2dpad")),e.viewProps.bindDisabled(n),i.appendChild(n),this.buttonElement=n;const s=t.createElement("div");if(s.classList.add(_s("t")),i.appendChild(s),this.textElement=s,"inline"===e.pickerLayout){const e=t.createElement("div");e.classList.add(_s("p")),this.element.appendChild(e),this.pickerElement=e}else this.pickerElement=null}},xs=Mt("p2dp"),Cs=class{constructor(t,e){this.onFoldableChange_=this.onFoldableChange_.bind(this),this.onPropsChange_=this.onPropsChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.props_=e.props,this.props_.emitter.on("change",this.onPropsChange_),this.element=t.createElement("div"),this.element.classList.add(xs()),"popup"===e.layout&&this.element.classList.add(xs(void 0,"p")),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(xs("p")),e.viewProps.bindTabIndex(i),this.element.appendChild(i),this.padElement=i;const n=t.createElementNS(gt,"svg");n.classList.add(xs("g")),this.padElement.appendChild(n),this.svgElem_=n;const s=t.createElementNS(gt,"line");s.classList.add(xs("ax")),s.setAttributeNS(null,"x1","0"),s.setAttributeNS(null,"y1","50%"),s.setAttributeNS(null,"x2","100%"),s.setAttributeNS(null,"y2","50%"),this.svgElem_.appendChild(s);const r=t.createElementNS(gt,"line");r.classList.add(xs("ax")),r.setAttributeNS(null,"x1","50%"),r.setAttributeNS(null,"y1","0"),r.setAttributeNS(null,"x2","50%"),r.setAttributeNS(null,"y2","100%"),this.svgElem_.appendChild(r);const o=t.createElementNS(gt,"line");o.classList.add(xs("l")),o.setAttributeNS(null,"x1","50%"),o.setAttributeNS(null,"y1","50%"),this.svgElem_.appendChild(o),this.lineElem_=o;const a=t.createElement("div");a.classList.add(xs("m")),this.padElement.appendChild(a),this.markerElem_=a,e.value.emitter.on("change",this.onValueChange_),this.value=e.value,this.update_()}get allFocusableElements(){return[this.padElement]}update_(){const[t,e]=this.value.rawValue.getComponents(),i=this.props_.get("max"),n=F(t,-i,+i,0,100),s=F(e,-i,+i,0,100),r=this.props_.get("invertsY")?100-s:s;this.lineElem_.setAttributeNS(null,"x2",`${n}%`),this.lineElem_.setAttributeNS(null,"y2",`${r}%`),this.markerElem_.style.left=`${n}%`,this.markerElem_.style.top=`${r}%`}onValueChange_(){this.update_()}onPropsChange_(){this.update_()}onFoldableChange_(){this.update_()}};function ys(t,e,i){return[ri(e[0],ai(t)),ri(e[1],oi(t))*(i?1:-1)]}var Ps=class{constructor(t,e){this.onPadKeyDown_=this.onPadKeyDown_.bind(this),this.onPadKeyUp_=this.onPadKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.props=e.props,this.value=e.value,this.viewProps=e.viewProps,this.view=new Cs(t,{layout:e.layout,props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new hi(this.view.padElement),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.padElement.addEventListener("keydown",this.onPadKeyDown_),this.view.padElement.addEventListener("keyup",this.onPadKeyUp_)}handlePointerEvent_(t,e){if(!t.point)return;const i=this.props.get("max"),n=F(t.point.x,0,t.bounds.width,-i,+i),s=F(this.props.get("invertsY")?t.bounds.height-t.point.y:t.point.y,0,t.bounds.height,-i,+i);this.value.setRawValue(new gs(n,s),e)}onPointerDown_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerMove_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerUp_(t){this.handlePointerEvent_(t.data,{forceEmit:!0,last:!0})}onPadKeyDown_(t){li(t.key)&&t.preventDefault();const[e,i]=ys(t,[this.props.get("xKeyScale"),this.props.get("yKeyScale")],this.props.get("invertsY"));0===e&&0===i||this.value.setRawValue(new gs(this.value.rawValue.x+e,this.value.rawValue.y+i),{forceEmit:!1,last:!1})}onPadKeyUp_(t){const[e,i]=ys(t,[this.props.get("xKeyScale"),this.props.get("yKeyScale")],this.props.get("invertsY"));0===e&&0===i||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}},Es=class{constructor(t,e){var i,n;this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.onPadButtonBlur_=this.onPadButtonBlur_.bind(this),this.onPadButtonClick_=this.onPadButtonClick_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.foldable_=he.create(e.expanded),this.popC_="popup"===e.pickerLayout?new Ye(t,{viewProps:this.viewProps}):null;const s=new Ps(t,{layout:e.pickerLayout,props:new f({invertsY:_(e.invertsY),max:_(e.max),xKeyScale:e.axes[0].textProps.value("keyScale"),yKeyScale:e.axes[1].textProps.value("keyScale")}),value:this.value,viewProps:this.viewProps});s.view.allFocusableElements.forEach(t=>{t.addEventListener("blur",this.onPopupChildBlur_),t.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=s,this.textC_=new vs(t,{assembly:ws,axes:e.axes,parser:e.parser,value:this.value,viewProps:this.viewProps}),this.view=new fs(t,{expanded:this.foldable_.value("expanded"),pickerLayout:e.pickerLayout,viewProps:this.viewProps}),this.view.textElement.appendChild(this.textC_.view.element),null===(i=this.view.buttonElement)||void 0===i||i.addEventListener("blur",this.onPadButtonBlur_),null===(n=this.view.buttonElement)||void 0===n||n.addEventListener("click",this.onPadButtonClick_),this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),si({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:t=>t,backward:(t,e)=>e})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),de(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onPadButtonBlur_(t){if(!this.popC_)return;const e=this.view.element,i=t.relatedTarget;i&&e.contains(i)||(this.popC_.shows.rawValue=!1)}onPadButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(t){if(!this.popC_)return;const e=this.popC_.view.element,i=Et(t);i&&e.contains(i)||i&&i===this.view.buttonElement&&!_t(e.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(t){this.popC_?"Escape"===t.key&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&"Escape"===t.key&&this.view.buttonElement.focus()}};function ks(t){return gs.isObject(t)?new gs(t.x,t.y):new gs}function Vs(t,e){t.writeProperty("x",e.x),t.writeProperty("y",e.y)}function Ls(t,e){var i,n;if(!o(t.min)||!o(t.max))return Math.max(Math.abs(null!==(i=t.min)&&void 0!==i?i:0),Math.abs(null!==(n=t.max)&&void 0!==n?n:0));const s=Y(t);return Math.max(10*Math.abs(s),10*Math.abs(e))}function Ms(t,e){var i,n;const s=Ls(h(t,null!==(i=t.x)&&void 0!==i?i:{}),e.x),r=Ls(h(t,null!==(n=t.y)&&void 0!==n?n:{}),e.y);return Math.max(s,r)}function Ss(t){if(!("y"in t))return!1;const e=t.y;return!!e&&"inverted"in e&&!!e.inverted}var js=Zt({id:"input-point2d",type:"input",accept:(t,e)=>{if(!gs.isObject(t))return null;const i=dt(e,t=>Object.assign(Object.assign({},yi(t)),{expanded:t.optional.boolean,picker:t.optional.custom(ki),readonly:t.optional.constant(!1),x:t.optional.custom(Pi),y:t.optional.object(Object.assign(Object.assign({},yi(t)),{inverted:t.optional.boolean}))}));return i?{initialValue:t,params:i}:null},binding:{reader:()=>ks,constraint:t=>{return e=t.params,i=t.initialValue,new cs({assembly:ws,components:[Ei(Object.assign(Object.assign({},e),e.x),i.x),Ei(Object.assign(Object.assign({},e),e.y),i.y)]});var e,i},equals:gs.equals,writer:()=>Vs},controller:t=>{var e,i;const n=t.document,s=t.value,r=t.constraint,o=[t.params.x,t.params.y];return new Es(n,{axes:s.rawValue.getComponents().map((e,i)=>{var n;return tt({constraint:r.components[i],initialValue:e,params:h(t.params,null!==(n=o[i])&&void 0!==n?n:{})})}),expanded:null!==(e=t.params.expanded)&&void 0!==e&&e,invertsY:Ss(t.params),max:Ms(t.params,s.rawValue),parser:N,pickerLayout:null!==(i=t.params.picker)&&void 0!==i?i:"popup",value:s,viewProps:t.viewProps})}}),Ds=class{constructor(t=0,e=0,i=0){this.x=t,this.y=e,this.z=i}getComponents(){return[this.x,this.y,this.z]}static isObject(t){if(o(t))return!1;const e=t.x,i=t.y,n=t.z;return"number"==typeof e&&"number"==typeof i&&"number"==typeof n}static equals(t,e){return t.x===e.x&&t.y===e.y&&t.z===e.z}toObject(){return{x:this.x,y:this.y,z:this.z}}},As={toComponents:t=>t.getComponents(),fromComponents:t=>new Ds(...t)};function Os(t){return Ds.isObject(t)?new Ds(t.x,t.y,t.z):new Ds}function Bs(t,e){t.writeProperty("x",e.x),t.writeProperty("y",e.y),t.writeProperty("z",e.z)}var Ts=Zt({id:"input-point3d",type:"input",accept:(t,e)=>{if(!Ds.isObject(t))return null;const i=dt(e,t=>Object.assign(Object.assign({},yi(t)),{readonly:t.optional.constant(!1),x:t.optional.custom(Pi),y:t.optional.custom(Pi),z:t.optional.custom(Pi)}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>Os,constraint:t=>{return e=t.params,i=t.initialValue,new cs({assembly:As,components:[Ei(Object.assign(Object.assign({},e),e.x),i.x),Ei(Object.assign(Object.assign({},e),e.y),i.y),Ei(Object.assign(Object.assign({},e),e.z),i.z)]});var e,i},equals:Ds.equals,writer:t=>Bs},controller:t=>{const e=t.value,i=t.constraint,n=[t.params.x,t.params.y,t.params.z];return new vs(t.document,{assembly:As,axes:e.rawValue.getComponents().map((e,s)=>{var r;return tt({constraint:i.components[s],initialValue:e,params:h(t.params,null!==(r=n[s])&&void 0!==r?r:{})})}),parser:N,value:e,viewProps:t.viewProps})}}),zs=class{constructor(t=0,e=0,i=0,n=0){this.x=t,this.y=e,this.z=i,this.w=n}getComponents(){return[this.x,this.y,this.z,this.w]}static isObject(t){if(o(t))return!1;const e=t.x,i=t.y,n=t.z,s=t.w;return"number"==typeof e&&"number"==typeof i&&"number"==typeof n&&"number"==typeof s}static equals(t,e){return t.x===e.x&&t.y===e.y&&t.z===e.z&&t.w===e.w}toObject(){return{x:this.x,y:this.y,z:this.z,w:this.w}}},Rs={toComponents:t=>t.getComponents(),fromComponents:t=>new zs(...t)};function Ns(t){return zs.isObject(t)?new zs(t.x,t.y,t.z,t.w):new zs}function Ks(t,e){t.writeProperty("x",e.x),t.writeProperty("y",e.y),t.writeProperty("z",e.z),t.writeProperty("w",e.w)}var Is=Zt({id:"input-point4d",type:"input",accept:(t,e)=>{if(!zs.isObject(t))return null;const i=dt(e,t=>Object.assign(Object.assign({},yi(t)),{readonly:t.optional.constant(!1),w:t.optional.custom(Pi),x:t.optional.custom(Pi),y:t.optional.custom(Pi),z:t.optional.custom(Pi)}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>Ns,constraint:t=>{return e=t.params,i=t.initialValue,new cs({assembly:Rs,components:[Ei(Object.assign(Object.assign({},e),e.x),i.x),Ei(Object.assign(Object.assign({},e),e.y),i.y),Ei(Object.assign(Object.assign({},e),e.z),i.z),Ei(Object.assign(Object.assign({},e),e.w),i.w)]});var e,i},equals:zs.equals,writer:t=>Ks},controller:t=>{const e=t.value,i=t.constraint,n=[t.params.x,t.params.y,t.params.z,t.params.w];return new vs(t.document,{assembly:Rs,axes:e.rawValue.getComponents().map((e,s)=>{var r;return tt({constraint:i.components[s],initialValue:e,params:h(t.params,null!==(r=n[s])&&void 0!==r?r:{})})}),parser:N,value:e,viewProps:t.viewProps})}}),Us=Zt({id:"input-string",type:"input",accept:(t,e)=>{if("string"!=typeof t)return null;const i=dt(e,t=>({readonly:t.optional.constant(!1),options:t.optional.custom(Ke)}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>ii,constraint:t=>function(t){const e=[],i=Ue(t.options);return i&&e.push(i),new ze(e)}(t.params),writer:t=>Vi},controller:t=>{const e=t.document,i=t.value,n=t.constraint,s=n&&Re(n,Ne);return s?new qe(e,{props:new f({options:s.values.value("options")}),value:i,viewProps:t.viewProps}):new Qe(e,{parser:t=>t,props:f.fromObject({formatter:ni}),value:i,viewProps:t.viewProps})},api:t=>"string"!=typeof t.controller.value.rawValue?null:t.controller.valueController instanceof qe?new Oe(t.controller):null}),Fs=200,$s=3,qs=Mt("mll"),Hs=class{constructor(t,e){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=e.formatter,this.element=t.createElement("div"),this.element.classList.add(qs()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("textarea");i.classList.add(qs("i")),i.style.height=`calc(var(${Ci("containerUnitSize")}) * ${e.rows})`,i.readOnly=!0,e.viewProps.bindDisabled(i),this.element.appendChild(i),this.textareaElem_=i,e.value.emitter.on("change",this.onValueUpdate_),this.value=e.value,this.update_()}update_(){const t=this.textareaElem_,e=t.scrollTop===t.scrollHeight-t.clientHeight,i=[];this.value.rawValue.forEach(t=>{void 0!==t&&i.push(this.formatter_(t))}),t.textContent=i.join("\n"),e&&(t.scrollTop=t.scrollHeight)}onValueUpdate_(){this.update_()}},Gs=class{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.view=new Hs(t,{formatter:e.formatter,rows:e.rows,value:this.value,viewProps:this.viewProps})}},Ys=Mt("sgl"),Xs=class{constructor(t,e){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=e.formatter,this.element=t.createElement("div"),this.element.classList.add(Ys()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("input");i.classList.add(Ys("i")),i.readOnly=!0,i.type="text",e.viewProps.bindDisabled(i),this.element.appendChild(i),this.inputElement=i,e.value.emitter.on("change",this.onValueUpdate_),this.value=e.value,this.update_()}update_(){const t=this.value.rawValue,e=t[t.length-1];this.inputElement.value=void 0!==e?this.formatter_(e):""}onValueUpdate_(){this.update_()}},Ws=class{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.view=new Xs(t,{formatter:e.formatter,value:this.value,viewProps:this.viewProps})}},Qs=Zt({id:"monitor-bool",type:"monitor",accept:(t,e)=>{if("boolean"!=typeof t)return null;const i=dt(e,t=>({readonly:t.required.constant(!0),rows:t.optional.number}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>Je},controller:t=>{var e;return 1===t.value.rawValue.length?new Ws(t.document,{formatter:Ze,value:t.value,viewProps:t.viewProps}):new Gs(t.document,{formatter:Ze,rows:null!==(e=t.params.rows)&&void 0!==e?e:$s,value:t.value,viewProps:t.viewProps})}}),Js=class extends at{get max(){return this.controller.valueController.props.get("max")}set max(t){this.controller.valueController.props.set("max",t)}get min(){return this.controller.valueController.props.get("min")}set min(t){this.controller.valueController.props.set("min",t)}},Zs=Mt("grl"),tr=class{constructor(t,e){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=t.createElement("div"),this.element.classList.add(Zs()),e.viewProps.bindClassModifiers(this.element),this.formatter_=e.formatter,this.props_=e.props,this.cursor_=e.cursor,this.cursor_.emitter.on("change",this.onCursorChange_);const i=t.createElementNS(gt,"svg");i.classList.add(Zs("g")),i.style.height=`calc(var(${Ci("containerUnitSize")}) * ${e.rows})`,this.element.appendChild(i),this.svgElem_=i;const n=t.createElementNS(gt,"polyline");this.svgElem_.appendChild(n),this.lineElem_=n;const s=t.createElement("div");s.classList.add(Zs("t"),Mt("tt")()),this.element.appendChild(s),this.tooltipElem_=s,e.value.emitter.on("change",this.onValueUpdate_),this.value=e.value,this.update_()}get graphElement(){return this.svgElem_}update_(){const{clientWidth:t,clientHeight:e}=this.element,i=this.value.rawValue.length-1,n=this.props_.get("min"),s=this.props_.get("max"),r=[];this.value.rawValue.forEach((o,a)=>{if(void 0===o)return;const l=F(a,0,i,0,t),p=F(o,n,s,e,0);r.push([l,p].join(","))}),this.lineElem_.setAttributeNS(null,"points",r.join(" "));const o=this.tooltipElem_,a=this.value.rawValue[this.cursor_.rawValue];if(void 0===a)return void o.classList.remove(Zs("t","a"));const l=F(this.cursor_.rawValue,0,i,0,t),p=F(a,n,s,e,0);o.style.left=`${l}px`,o.style.top=`${p}px`,o.textContent=`${this.formatter_(a)}`,o.classList.contains(Zs("t","a"))||(o.classList.add(Zs("t","a"),Zs("t","in")),wt(o),o.classList.remove(Zs("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}},er=class{constructor(t,e){if(this.onGraphMouseMove_=this.onGraphMouseMove_.bind(this),this.onGraphMouseLeave_=this.onGraphMouseLeave_.bind(this),this.onGraphPointerDown_=this.onGraphPointerDown_.bind(this),this.onGraphPointerMove_=this.onGraphPointerMove_.bind(this),this.onGraphPointerUp_=this.onGraphPointerUp_.bind(this),this.props=e.props,this.value=e.value,this.viewProps=e.viewProps,this.cursor_=_(-1),this.view=new tr(t,{cursor:this.cursor_,formatter:e.formatter,rows:e.rows,props:this.props,value:this.value,viewProps:this.viewProps}),_t(t)){const t=new hi(this.view.element);t.emitter.on("down",this.onGraphPointerDown_),t.emitter.on("move",this.onGraphPointerMove_),t.emitter.on("up",this.onGraphPointerUp_)}else this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_)}importProps(t){return ut(t,null,t=>({max:t.required.number,min:t.required.number}),t=>(this.props.set("max",t.max),this.props.set("min",t.min),!0))}exportProps(){return vt(null,{max:this.props.get("max"),min:this.props.get("min")})}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(t){const{clientWidth:e}=this.view.element;this.cursor_.rawValue=Math.floor(F(t.offsetX,0,e,0,this.value.rawValue.length))}onGraphPointerDown_(t){this.onGraphPointerMove_(t)}onGraphPointerMove_(t){t.data.point?this.cursor_.rawValue=Math.floor(F(t.data.point.x,0,t.data.bounds.width,0,this.value.rawValue.length)):this.cursor_.rawValue=-1}onGraphPointerUp_(){this.cursor_.rawValue=-1}};function ir(t){return o(t.format)?U(2):t.format}function nr(t){return"graph"===t.view}var sr=Zt({id:"monitor-number",type:"monitor",accept:(t,e)=>{if("number"!=typeof t)return null;const i=dt(e,t=>({format:t.optional.function,max:t.optional.number,min:t.optional.number,readonly:t.required.constant(!0),rows:t.optional.number,view:t.optional.string}));return i?{initialValue:t,params:i}:null},binding:{defaultBufferSize:t=>nr(t)?64:1,reader:t=>K},controller:t=>nr(t.params)?function(t){var e,i,n;return new er(t.document,{formatter:ir(t.params),rows:null!==(e=t.params.rows)&&void 0!==e?e:$s,props:f.fromObject({max:null!==(i=t.params.max)&&void 0!==i?i:100,min:null!==(n=t.params.min)&&void 0!==n?n:0}),value:t.value,viewProps:t.viewProps})}(t):function(t){var e;return 1===t.value.rawValue.length?new Ws(t.document,{formatter:ir(t.params),value:t.value,viewProps:t.viewProps}):new Gs(t.document,{formatter:ir(t.params),rows:null!==(e=t.params.rows)&&void 0!==e?e:$s,value:t.value,viewProps:t.viewProps})}(t),api:t=>t.controller.valueController instanceof er?new Js(t.controller):null}),rr=Zt({id:"monitor-string",type:"monitor",accept:(t,e)=>{if("string"!=typeof t)return null;const i=dt(e,t=>({multiline:t.optional.boolean,readonly:t.required.constant(!0),rows:t.optional.number}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>ii},controller:t=>{var e;const i=t.value;return i.rawValue.length>1||t.params.multiline?new Gs(t.document,{formatter:ni,rows:null!==(e=t.params.rows)&&void 0!==e?e:$s,value:i,viewProps:t.viewProps}):new Ws(t.document,{formatter:ni,value:i,viewProps:t.viewProps})}}),or=class{constructor(t){this.target=t.target,this.reader_=t.reader,this.writer_=t.writer}read(){return this.reader_(this.target.read())}write(t){this.writer_(this.target,t)}inject(t){this.write(this.reader_(t))}},ar=class{constructor(t){this.target=t.target,this.reader_=t.reader}read(){return this.reader_(this.target.read())}},lr=class{constructor(t){this.pluginsMap_={blades:[],inputs:[],monitors:[]},this.apiCache_=t}getAll(){return[...this.pluginsMap_.blades,...this.pluginsMap_.inputs,...this.pluginsMap_.monitors]}register(t,e){if(!(i=e.core)||i.major!==Jt.major)throw u.notCompatible(t,e.id);var i;"blade"===e.type?this.pluginsMap_.blades.unshift(e):"input"===e.type?this.pluginsMap_.inputs.unshift(e):"monitor"===e.type&&this.pluginsMap_.monitors.unshift(e)}createInput_(t,e,i){return this.pluginsMap_.inputs.reduce((n,s)=>null!=n?n:function(t,e){var i;const n=t.accept(e.target.read(),e.params);if(o(n))return null;const s={target:e.target,initialValue:n.initialValue,params:n.params},r=dt(e.params,t=>({disabled:t.optional.boolean,hidden:t.optional.boolean,label:t.optional.string,tag:t.optional.string})),a=t.binding.reader(s),l=t.binding.constraint?t.binding.constraint(s):void 0,p=new or({reader:a,target:e.target,writer:t.binding.writer(s)}),h=new lt(_(a(n.initialValue),{constraint:l,equals:t.binding.equals}),p),c=t.controller({constraint:l,document:e.document,initialValue:n.initialValue,params:n.params,value:h,viewProps:fe.create({disabled:null==r?void 0:r.disabled,hidden:null==r?void 0:r.hidden})});return new Nt(e.document,{blade:pe(),props:f.fromObject({label:"label"in e.params?null!==(i=null==r?void 0:r.label)&&void 0!==i?i:null:e.target.key}),tag:null==r?void 0:r.tag,value:h,valueController:c})}(s,{document:t,target:e,params:i}),null)}createMonitor_(t,e,i){return this.pluginsMap_.monitors.reduce((n,s)=>null!=n?n:function(t,e){var i,n,s;const r=t.accept(e.target.read(),e.params);if(o(r))return null;const a={target:e.target,initialValue:r.initialValue,params:r.params},l=dt(e.params,t=>({bufferSize:t.optional.number,disabled:t.optional.boolean,hidden:t.optional.boolean,interval:t.optional.number,label:t.optional.string})),p=t.binding.reader(a),h=null!==(n=null!==(i=null==l?void 0:l.bufferSize)&&void 0!==i?i:t.binding.defaultBufferSize&&t.binding.defaultBufferSize(r.params))&&void 0!==n?n:1,c=new Ut({binding:new ar({reader:p,target:e.target}),bufferSize:h,ticker:(d=e.document,u=null==l?void 0:l.interval,0===u?new Be:new Te(d,null!=u?u:Fs))});var d,u;const v=t.controller({document:e.document,params:r.params,value:c,viewProps:fe.create({disabled:null==l?void 0:l.disabled,hidden:null==l?void 0:l.hidden})});return v.viewProps.bindDisabled(c.ticker),v.viewProps.handleDispose(()=>{c.ticker.dispose()}),new Ft(e.document,{blade:pe(),props:f.fromObject({label:"label"in e.params?null!==(s=null==l?void 0:l.label)&&void 0!==s?s:null:e.target.key}),value:c,valueController:v})}(s,{document:t,params:i,target:e}),null)}createBinding(t,e,i){if(o(e.read()))throw new u({context:{key:e.key},type:"nomatchingcontroller"});const n=this.createInput_(t,e,i);if(n)return n;const s=this.createMonitor_(t,e,i);if(s)return s;throw new u({context:{key:e.key},type:"nomatchingcontroller"})}createBlade(t,e){const i=this.pluginsMap_.blades.reduce((i,n)=>null!=i?i:function(t,e){const i=t.accept(e.params);if(!i)return null;const n=dt(e.params,t=>({disabled:t.optional.boolean,hidden:t.optional.boolean}));return t.controller({blade:pe(),document:e.document,params:Object.assign(Object.assign({},i.params),{disabled:null==n?void 0:n.disabled,hidden:null==n?void 0:n.hidden}),viewProps:fe.create({disabled:null==n?void 0:n.disabled,hidden:null==n?void 0:n.hidden})})}(n,{document:t,params:e}),null);if(!i)throw new u({type:"nomatchingview",context:{params:e}});return i}createInputBindingApi_(t){const e=this.pluginsMap_.inputs.reduce((e,i)=>{var n,s;return e||(null!==(s=null===(n=i.api)||void 0===n?void 0:n.call(i,{controller:t}))&&void 0!==s?s:null)},null);return this.apiCache_.add(t,null!=e?e:new at(t))}createMonitorBindingApi_(t){const e=this.pluginsMap_.monitors.reduce((e,i)=>{var n,s;return e||(null!==(s=null===(n=i.api)||void 0===n?void 0:n.call(i,{controller:t}))&&void 0!==s?s:null)},null);return this.apiCache_.add(t,null!=e?e:new at(t))}createBindingApi(t){if(this.apiCache_.has(t))return this.apiCache_.get(t);if(function(t){return mt(t)&&function(t){if(!("binding"in t))return!1;const e=t.binding;return c(e)&&"read"in e&&"write"in e}(t.value)}(t))return this.createInputBindingApi_(t);if(function(t){return mt(t)&&function(t){if(!("binding"in t))return!1;const e=t.binding;return c(e)&&"read"in e&&!("write"in e)}(t.value)}(t))return this.createMonitorBindingApi_(t);throw u.shouldNeverHappen()}createApi(t){if(this.apiCache_.has(t))return this.apiCache_.get(t);if(function(t){return mt(t)&&bt(t.value)}(t))return this.createBindingApi(t);const e=this.pluginsMap_.blades.reduce((e,i)=>null!=e?e:i.api({controller:t,pool:this}),null);if(!e)throw u.shouldNeverHappen();return this.apiCache_.add(t,e)}},pr=new class{constructor(){this.map_=new Map}get(t){var e;return null!==(e=this.map_.get(t))&&void 0!==e?e:null}has(t){return this.map_.has(t)}add(t,e){return this.map_.set(t,e),t.viewProps.handleDispose(()=>{this.map_.delete(t)}),e}},hr=class extends et{constructor(t){super(t),this.emitter_=new m,this.controller.value.emitter.on("change",t=>{this.emitter_.emit("change",new nt(this,t.rawValue))})}get label(){return this.controller.labelController.props.get("label")}set label(t){this.controller.labelController.props.set("label",t)}get options(){return this.controller.valueController.props.get("options")}set options(t){this.controller.valueController.props.set("options",t)}get value(){return this.controller.value.rawValue}set value(t){this.controller.value.rawValue=t}on(t,e){const i=e.bind(this);return this.emitter_.on(t,t=>{i(t)},{key:e}),this}off(t,e){return this.emitter_.off(t,e),this}},cr=class extends et{},dr=class extends et{constructor(t){super(t),this.emitter_=new m,this.controller.value.emitter.on("change",t=>{this.emitter_.emit("change",new nt(this,t.rawValue))})}get label(){return this.controller.labelController.props.get("label")}set label(t){this.controller.labelController.props.set("label",t)}get max(){return this.controller.valueController.sliderController.props.get("max")}set max(t){this.controller.valueController.sliderController.props.set("max",t)}get min(){return this.controller.valueController.sliderController.props.get("min")}set min(t){this.controller.valueController.sliderController.props.set("min",t)}get value(){return this.controller.value.rawValue}set value(t){this.controller.value.rawValue=t}on(t,e){const i=e.bind(this);return this.emitter_.on(t,t=>{i(t)},{key:e}),this}off(t,e){return this.emitter_.off(t,e),this}},ur=class extends et{constructor(t){super(t),this.emitter_=new m,this.controller.value.emitter.on("change",t=>{this.emitter_.emit("change",new nt(this,t.rawValue))})}get label(){return this.controller.labelController.props.get("label")}set label(t){this.controller.labelController.props.set("label",t)}get formatter(){return this.controller.valueController.props.get("formatter")}set formatter(t){this.controller.valueController.props.set("formatter",t)}get value(){return this.controller.value.rawValue}set value(t){this.controller.value.rawValue=t}on(t,e){const i=e.bind(this);return this.emitter_.on(t,t=>{i(t)},{key:e}),this}off(t,e){return this.emitter_.off(t,e),this}},vr={id:"list",type:"blade",core:Jt,accept(t){const e=dt(t,t=>({options:t.required.custom(Ke),value:t.required.raw,view:t.required.constant("list"),label:t.optional.string}));return e?{params:e}:null},controller(t){const e=new Ne(Ie(t.params.options)),i=_(t.params.value,{constraint:e}),n=new qe(t.document,{props:new f({options:e.values.value("options")}),value:i,viewProps:t.viewProps});return new Tt(t.document,{blade:t.blade,props:f.fromObject({label:t.params.label}),value:i,valueController:n})},api:t=>t.controller instanceof Tt&&t.controller.valueController instanceof qe?new hr(t.controller):null},mr=class extends ue{constructor(t,e){super(t,e)}get element(){return this.controller.view.element}},br=class extends be{constructor(t,e){super(t,{expanded:e.expanded,blade:e.blade,props:e.props,root:!0,viewProps:e.viewProps})}},gr=Mt("spr"),wr=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(gr()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("hr");i.classList.add(gr("r")),this.element.appendChild(i)}},_r=class extends Bt{constructor(t,e){super(Object.assign(Object.assign({},e),{view:new wr(t,{viewProps:e.viewProps})}))}},fr={id:"separator",type:"blade",core:Jt,accept(t){const e=dt(t,t=>({view:t.required.constant("separator")}));return e?{params:e}:null},controller:t=>new _r(t.document,{blade:t.blade,viewProps:t.viewProps}),api:t=>t.controller instanceof _r?new cr(t.controller):null},xr={id:"slider",type:"blade",core:Jt,accept(t){const e=dt(t,t=>({max:t.required.number,min:t.required.number,view:t.required.constant("slider"),format:t.optional.function,label:t.optional.string,value:t.optional.number}));return e?{params:e}:null},controller(t){var e,i;const n=null!==(e=t.params.value)&&void 0!==e?e:0,s=new x({max:t.params.max,min:t.params.min}),r=_(n,{constraint:s}),o=new _i(t.document,Object.assign(Object.assign({},fi({formatter:null!==(i=t.params.format)&&void 0!==i?i:I,keyScale:_(1),max:s.values.value("max"),min:s.values.value("min"),pointerScale:X(t.params,n)})),{parser:N,value:r,viewProps:t.viewProps}));return new Tt(t.document,{blade:t.blade,props:f.fromObject({label:t.params.label}),value:r,valueController:o})},api:t=>t.controller instanceof Tt&&t.controller.valueController instanceof _i?new dr(t.controller):null},Cr={id:"text",type:"blade",core:Jt,accept(t){const e=dt(t,t=>({parse:t.required.function,value:t.required.raw,view:t.required.constant("text"),format:t.optional.function,label:t.optional.string}));return e?{params:e}:null},controller(t){var e;const i=_(t.params.value),n=new Qe(t.document,{parser:t.params.parse,props:f.fromObject({formatter:null!==(e=t.params.format)&&void 0!==e?e:t=>String(t)}),value:i,viewProps:t.viewProps});return new Tt(t.document,{blade:t.blade,props:f.fromObject({label:t.params.label}),value:i,valueController:n})},api:t=>t.controller instanceof Tt&&t.controller.valueController instanceof Qe?new ur(t.controller):null},yr=class extends mr{constructor(t){var e,i;const n=null!=t?t:{},s=null!==(e=n.document)&&void 0!==e?e:globalThis.document,r=function(){const t=new lr(pr);return[js,Ts,Is,Us,bs,hs,ps,as,ji,Qs,rr,sr,te,ge,Ae].forEach(e=>{t.register("core",e)}),t}();super(new br(s,{expanded:n.expanded,blade:pe(),props:f.fromObject({title:n.title}),viewProps:fe.create()}),r),this.pool_=r,this.containerElem_=null!==(i=n.container)&&void 0!==i?i:function(t){const e=t.createElement("div");return e.classList.add(Mt("dfw")()),t.body&&t.body.appendChild(e),e}(s),this.containerElem_.appendChild(this.element),this.doc_=s,this.usesDefaultWrapper_=!n.container,this.setUpDefaultPlugins_()}get document(){if(!this.doc_)throw u.alreadyDisposed();return this.doc_}dispose(){const t=this.containerElem_;if(!t)throw u.alreadyDisposed();if(this.usesDefaultWrapper_){const e=t.parentElement;e&&e.removeChild(t)}this.containerElem_=null,this.doc_=null,super.dispose()}registerPlugin(t){t.css&&function(t,e,i){if(t.querySelector(`style[data-tp-style=${e}]`))return;const n=t.createElement("style");n.dataset.tpStyle=e,n.textContent=i,t.head.appendChild(n)}(this.document,`plugin-${t.id}`,t.css),("plugin"in t?[t.plugin]:"plugins"in t?t.plugins:[]).forEach(e=>{this.pool_.register(t.id,e)})}setUpDefaultPlugins_(){this.registerPlugin({id:"default",css:'.tp-tbiv_b,.tp-coltxtv_ms,.tp-colswv_b,.tp-ckbv_i,.tp-sglv_i,.tp-mllv_i,.tp-grlv_g,.tp-txtv_i,.tp-p2dpv_p,.tp-colswv_sw,.tp-rotv_b,.tp-fldv_b,.tp-p2dv_b,.tp-btnv_b,.tp-lstv_s{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-p2dv_b,.tp-btnv_b,.tp-lstv_s{background-color:var(--btn-bg);border-radius:var(--bld-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--cnt-usz);line-height:var(--cnt-usz);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-p2dv_b:hover,.tp-btnv_b:hover,.tp-lstv_s:hover{background-color:var(--btn-bg-h)}.tp-p2dv_b:focus,.tp-btnv_b:focus,.tp-lstv_s:focus{background-color:var(--btn-bg-f)}.tp-p2dv_b:active,.tp-btnv_b:active,.tp-lstv_s:active{background-color:var(--btn-bg-a)}.tp-p2dv_b:disabled,.tp-btnv_b:disabled,.tp-lstv_s:disabled{opacity:.5}.tp-rotv_c>.tp-cntv.tp-v-lst,.tp-tbpv_c>.tp-cntv.tp-v-lst,.tp-fldv_c>.tp-cntv.tp-v-lst{margin-bottom:calc(-1*var(--cnt-vp))}.tp-rotv_c>.tp-fldv.tp-v-lst .tp-fldv_c,.tp-tbpv_c>.tp-fldv.tp-v-lst .tp-fldv_c,.tp-fldv_c>.tp-fldv.tp-v-lst .tp-fldv_c{border-bottom-left-radius:0}.tp-rotv_c>.tp-fldv.tp-v-lst .tp-fldv_b,.tp-tbpv_c>.tp-fldv.tp-v-lst .tp-fldv_b,.tp-fldv_c>.tp-fldv.tp-v-lst .tp-fldv_b{border-bottom-left-radius:0}.tp-rotv_c>*:not(.tp-v-fst),.tp-tbpv_c>*:not(.tp-v-fst),.tp-fldv_c>*:not(.tp-v-fst){margin-top:var(--cnt-usp)}.tp-rotv_c>.tp-sprv:not(.tp-v-fst),.tp-tbpv_c>.tp-sprv:not(.tp-v-fst),.tp-fldv_c>.tp-sprv:not(.tp-v-fst),.tp-rotv_c>.tp-cntv:not(.tp-v-fst),.tp-tbpv_c>.tp-cntv:not(.tp-v-fst),.tp-fldv_c>.tp-cntv:not(.tp-v-fst){margin-top:var(--cnt-vp)}.tp-rotv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-tbpv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-fldv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-rotv_c>.tp-cntv+*:not(.tp-v-hidden),.tp-tbpv_c>.tp-cntv+*:not(.tp-v-hidden),.tp-fldv_c>.tp-cntv+*:not(.tp-v-hidden){margin-top:var(--cnt-vp)}.tp-rotv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-tbpv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-fldv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-rotv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv,.tp-tbpv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv,.tp-fldv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv{margin-top:0}.tp-tbpv_c>.tp-cntv,.tp-fldv_c>.tp-cntv{margin-left:4px}.tp-tbpv_c>.tp-fldv>.tp-fldv_b,.tp-fldv_c>.tp-fldv>.tp-fldv_b{border-top-left-radius:var(--bld-br);border-bottom-left-radius:var(--bld-br)}.tp-tbpv_c>.tp-fldv.tp-fldv-expanded>.tp-fldv_b,.tp-fldv_c>.tp-fldv.tp-fldv-expanded>.tp-fldv_b{border-bottom-left-radius:0}.tp-tbpv_c .tp-fldv>.tp-fldv_c,.tp-fldv_c .tp-fldv>.tp-fldv_c{border-bottom-left-radius:var(--bld-br)}.tp-tbpv_c>.tp-cntv+.tp-fldv>.tp-fldv_b,.tp-fldv_c>.tp-cntv+.tp-fldv>.tp-fldv_b{border-top-left-radius:0}.tp-tbpv_c>.tp-cntv+.tp-tabv>.tp-tabv_t,.tp-fldv_c>.tp-cntv+.tp-tabv>.tp-tabv_t{border-top-left-radius:0}.tp-tbpv_c>.tp-tabv>.tp-tabv_t,.tp-fldv_c>.tp-tabv>.tp-tabv_t{border-top-left-radius:var(--bld-br)}.tp-tbpv_c .tp-tabv>.tp-tabv_c,.tp-fldv_c .tp-tabv>.tp-tabv_c{border-bottom-left-radius:var(--bld-br)}.tp-rotv_b,.tp-fldv_b{background-color:var(--cnt-bg);color:var(--cnt-fg);cursor:pointer;display:block;height:calc(var(--cnt-usz) + 4px);line-height:calc(var(--cnt-usz) + 4px);overflow:hidden;padding-left:var(--cnt-hp);padding-right:calc(4px + var(--cnt-usz) + var(--cnt-hp));position:relative;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%;transition:border-radius .2s ease-in-out .2s}.tp-rotv_b:hover,.tp-fldv_b:hover{background-color:var(--cnt-bg-h)}.tp-rotv_b:focus,.tp-fldv_b:focus{background-color:var(--cnt-bg-f)}.tp-rotv_b:active,.tp-fldv_b:active{background-color:var(--cnt-bg-a)}.tp-rotv_b:disabled,.tp-fldv_b:disabled{opacity:.5}.tp-rotv_m,.tp-fldv_m{background:linear-gradient(to left, var(--cnt-fg), var(--cnt-fg) 2px, transparent 2px, transparent 4px, var(--cnt-fg) 4px);border-radius:2px;bottom:0;content:"";display:block;height:6px;right:calc(var(--cnt-hp) + (var(--cnt-usz) + 4px - 6px)/2 - 2px);margin:auto;opacity:.5;position:absolute;top:0;transform:rotate(90deg);transition:transform .2s ease-in-out;width:6px}.tp-rotv.tp-rotv-expanded .tp-rotv_m,.tp-fldv.tp-fldv-expanded>.tp-fldv_b>.tp-fldv_m{transform:none}.tp-rotv_c,.tp-fldv_c{box-sizing:border-box;height:0;opacity:0;overflow:hidden;padding-bottom:0;padding-top:0;position:relative;transition:height .2s ease-in-out,opacity .2s linear,padding .2s ease-in-out}.tp-rotv.tp-rotv-cpl:not(.tp-rotv-expanded) .tp-rotv_c,.tp-fldv.tp-fldv-cpl:not(.tp-fldv-expanded)>.tp-fldv_c{display:none}.tp-rotv.tp-rotv-expanded .tp-rotv_c,.tp-fldv.tp-fldv-expanded>.tp-fldv_c{opacity:1;padding-bottom:var(--cnt-vp);padding-top:var(--cnt-vp);transform:none;overflow:visible;transition:height .2s ease-in-out,opacity .2s linear .2s,padding .2s ease-in-out}.tp-txtv_i,.tp-p2dpv_p,.tp-colswv_sw{background-color:var(--in-bg);border-radius:var(--bld-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--cnt-usz);line-height:var(--cnt-usz);min-width:0;width:100%}.tp-txtv_i:hover,.tp-p2dpv_p:hover,.tp-colswv_sw:hover{background-color:var(--in-bg-h)}.tp-txtv_i:focus,.tp-p2dpv_p:focus,.tp-colswv_sw:focus{background-color:var(--in-bg-f)}.tp-txtv_i:active,.tp-p2dpv_p:active,.tp-colswv_sw:active{background-color:var(--in-bg-a)}.tp-txtv_i:disabled,.tp-p2dpv_p:disabled,.tp-colswv_sw:disabled{opacity:.5}.tp-lstv,.tp-coltxtv_m{position:relative}.tp-lstv_s{padding:0 20px 0 4px;width:100%}.tp-lstv_m,.tp-coltxtv_mm{bottom:0;margin:auto;pointer-events:none;position:absolute;right:2px;top:0}.tp-lstv_m svg,.tp-coltxtv_mm svg{bottom:0;height:16px;margin:auto;position:absolute;right:0;top:0;width:16px}.tp-lstv_m svg path,.tp-coltxtv_mm svg path{fill:currentColor}.tp-sglv_i,.tp-mllv_i,.tp-grlv_g{background-color:var(--mo-bg);border-radius:var(--bld-br);box-sizing:border-box;color:var(--mo-fg);height:var(--cnt-usz);scrollbar-color:currentColor rgba(0,0,0,0);scrollbar-width:thin;width:100%}.tp-sglv_i::-webkit-scrollbar,.tp-mllv_i::-webkit-scrollbar,.tp-grlv_g::-webkit-scrollbar{height:8px;width:8px}.tp-sglv_i::-webkit-scrollbar-corner,.tp-mllv_i::-webkit-scrollbar-corner,.tp-grlv_g::-webkit-scrollbar-corner{background-color:rgba(0,0,0,0)}.tp-sglv_i::-webkit-scrollbar-thumb,.tp-mllv_i::-webkit-scrollbar-thumb,.tp-grlv_g::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:currentColor;border:rgba(0,0,0,0) solid 2px;border-radius:4px}.tp-pndtxtv,.tp-coltxtv_w{display:flex}.tp-pndtxtv_a,.tp-coltxtv_c{width:100%}.tp-pndtxtv_a+.tp-pndtxtv_a,.tp-coltxtv_c+.tp-pndtxtv_a,.tp-pndtxtv_a+.tp-coltxtv_c,.tp-coltxtv_c+.tp-coltxtv_c{margin-left:2px}.tp-rotv{--bs-bg: var(--tp-base-background-color, hsl(230, 7%, 17%));--bs-br: var(--tp-base-border-radius, 6px);--bs-ff: var(--tp-base-font-family, Roboto Mono, Source Code Pro, Menlo, Courier, monospace);--bs-sh: var(--tp-base-shadow-color, rgba(0, 0, 0, 0.2));--bld-br: var(--tp-blade-border-radius, 2px);--bld-hp: var(--tp-blade-horizontal-padding, 4px);--bld-vw: var(--tp-blade-value-width, 160px);--btn-bg: var(--tp-button-background-color, hsl(230, 7%, 70%));--btn-bg-a: var(--tp-button-background-color-active, #d6d7db);--btn-bg-f: var(--tp-button-background-color-focus, #c8cad0);--btn-bg-h: var(--tp-button-background-color-hover, #bbbcc4);--btn-fg: var(--tp-button-foreground-color, hsl(230, 7%, 17%));--cnt-bg: var(--tp-container-background-color, rgba(187, 188, 196, 0.1));--cnt-bg-a: var(--tp-container-background-color-active, rgba(187, 188, 196, 0.25));--cnt-bg-f: var(--tp-container-background-color-focus, rgba(187, 188, 196, 0.2));--cnt-bg-h: var(--tp-container-background-color-hover, rgba(187, 188, 196, 0.15));--cnt-fg: var(--tp-container-foreground-color, hsl(230, 7%, 75%));--cnt-hp: var(--tp-container-horizontal-padding, 4px);--cnt-vp: var(--tp-container-vertical-padding, 4px);--cnt-usp: var(--tp-container-unit-spacing, 4px);--cnt-usz: var(--tp-container-unit-size, 20px);--in-bg: var(--tp-input-background-color, rgba(187, 188, 196, 0.1));--in-bg-a: var(--tp-input-background-color-active, rgba(187, 188, 196, 0.25));--in-bg-f: var(--tp-input-background-color-focus, rgba(187, 188, 196, 0.2));--in-bg-h: var(--tp-input-background-color-hover, rgba(187, 188, 196, 0.15));--in-fg: var(--tp-input-foreground-color, hsl(230, 7%, 75%));--lbl-fg: var(--tp-label-foreground-color, rgba(187, 188, 196, 0.7));--mo-bg: var(--tp-monitor-background-color, rgba(0, 0, 0, 0.2));--mo-fg: var(--tp-monitor-foreground-color, rgba(187, 188, 196, 0.7));--grv-fg: var(--tp-groove-foreground-color, rgba(187, 188, 196, 0.1))}.tp-btnv_b{width:100%}.tp-btnv_t{text-align:center}.tp-ckbv_l{display:block;position:relative}.tp-ckbv_i{left:0;opacity:0;position:absolute;top:0}.tp-ckbv_w{background-color:var(--in-bg);border-radius:var(--bld-br);cursor:pointer;display:block;height:var(--cnt-usz);position:relative;width:var(--cnt-usz)}.tp-ckbv_w svg{display:block;height:16px;inset:0;margin:auto;opacity:0;position:absolute;width:16px}.tp-ckbv_w svg path{fill:none;stroke:var(--in-fg);stroke-width:2}.tp-ckbv_i:hover+.tp-ckbv_w{background-color:var(--in-bg-h)}.tp-ckbv_i:focus+.tp-ckbv_w{background-color:var(--in-bg-f)}.tp-ckbv_i:active+.tp-ckbv_w{background-color:var(--in-bg-a)}.tp-ckbv_i:checked+.tp-ckbv_w svg{opacity:1}.tp-ckbv.tp-v-disabled .tp-ckbv_w{opacity:.5}.tp-colv{position:relative}.tp-colv_h{display:flex}.tp-colv_s{flex-grow:0;flex-shrink:0;width:var(--cnt-usz)}.tp-colv_t{flex:1;margin-left:4px}.tp-colv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-colv.tp-colv-expanded.tp-colv-cpl .tp-colv_p{overflow:visible}.tp-colv.tp-colv-expanded .tp-colv_p{margin-top:var(--cnt-usp);opacity:1}.tp-colv .tp-popv{left:calc(-1*var(--cnt-hp));right:calc(-1*var(--cnt-hp));top:var(--cnt-usz)}.tp-colpv_h,.tp-colpv_ap{margin-left:6px;margin-right:6px}.tp-colpv_h{margin-top:var(--cnt-usp)}.tp-colpv_rgb{display:flex;margin-top:var(--cnt-usp);width:100%}.tp-colpv_a{display:flex;margin-top:var(--cnt-vp);padding-top:calc(var(--cnt-vp) + 2px);position:relative}.tp-colpv_a::before{background-color:var(--grv-fg);content:"";height:2px;left:calc(-1*var(--cnt-hp));position:absolute;right:calc(-1*var(--cnt-hp));top:0}.tp-colpv.tp-v-disabled .tp-colpv_a::before{opacity:.5}.tp-colpv_ap{align-items:center;display:flex;flex:3}.tp-colpv_at{flex:1;margin-left:4px}.tp-svpv{border-radius:var(--bld-br);outline:none;overflow:hidden;position:relative}.tp-svpv.tp-v-disabled{opacity:.5}.tp-svpv_c{cursor:crosshair;display:block;height:calc(var(--cnt-usz)*4);width:100%}.tp-svpv_m{border-radius:100%;border:rgba(255,255,255,.75) solid 2px;box-sizing:border-box;filter:drop-shadow(0 0 1px rgba(0, 0, 0, 0.3));height:12px;margin-left:-6px;margin-top:-6px;pointer-events:none;position:absolute;width:12px}.tp-svpv:focus .tp-svpv_m{border-color:#fff}.tp-hplv{cursor:pointer;height:var(--cnt-usz);outline:none;position:relative}.tp-hplv.tp-v-disabled{opacity:.5}.tp-hplv_c{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAABCAYAAABubagXAAAAQ0lEQVQoU2P8z8Dwn0GCgQEDi2OK/RBgYHjBgIpfovFh8j8YBIgzFGQxuqEgPhaDOT5gOhPkdCxOZeBg+IDFZZiGAgCaSSMYtcRHLgAAAABJRU5ErkJggg==);background-position:left top;background-repeat:no-repeat;background-size:100% 100%;border-radius:2px;display:block;height:4px;left:0;margin-top:-2px;position:absolute;top:50%;width:100%}.tp-hplv_m{border-radius:var(--bld-br);border:rgba(255,255,255,.75) solid 2px;box-shadow:0 0 2px rgba(0,0,0,.1);box-sizing:border-box;height:12px;left:50%;margin-left:-6px;margin-top:-6px;position:absolute;top:50%;width:12px}.tp-hplv:focus .tp-hplv_m{border-color:#fff}.tp-aplv{cursor:pointer;height:var(--cnt-usz);outline:none;position:relative;width:100%}.tp-aplv.tp-v-disabled{opacity:.5}.tp-aplv_b{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:4px 4px;background-position:0 0,2px 2px;border-radius:2px;display:block;height:4px;left:0;margin-top:-2px;overflow:hidden;position:absolute;top:50%;width:100%}.tp-aplv_c{inset:0;position:absolute}.tp-aplv_m{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:12px 12px;background-position:0 0,6px 6px;border-radius:var(--bld-br);box-shadow:0 0 2px rgba(0,0,0,.1);height:12px;left:50%;margin-left:-6px;margin-top:-6px;overflow:hidden;position:absolute;top:50%;width:12px}.tp-aplv_p{border-radius:var(--bld-br);border:rgba(255,255,255,.75) solid 2px;box-sizing:border-box;inset:0;position:absolute}.tp-aplv:focus .tp-aplv_p{border-color:#fff}.tp-colswv{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:10px 10px;background-position:0 0,5px 5px;border-radius:var(--bld-br);overflow:hidden}.tp-colswv.tp-v-disabled{opacity:.5}.tp-colswv_sw{border-radius:0}.tp-colswv_b{cursor:pointer;display:block;height:var(--cnt-usz);left:0;position:absolute;top:0;width:var(--cnt-usz)}.tp-colswv_b:focus::after{border:rgba(255,255,255,.75) solid 2px;border-radius:var(--bld-br);content:"";display:block;inset:0;position:absolute}.tp-coltxtv{display:flex;width:100%}.tp-coltxtv_m{margin-right:4px}.tp-coltxtv_ms{border-radius:var(--bld-br);color:var(--lbl-fg);cursor:pointer;height:var(--cnt-usz);line-height:var(--cnt-usz);padding:0 18px 0 4px}.tp-coltxtv_ms:hover{background-color:var(--in-bg-h)}.tp-coltxtv_ms:focus{background-color:var(--in-bg-f)}.tp-coltxtv_ms:active{background-color:var(--in-bg-a)}.tp-coltxtv_mm{color:var(--lbl-fg)}.tp-coltxtv.tp-v-disabled .tp-coltxtv_mm{opacity:.5}.tp-coltxtv_w{flex:1}.tp-dfwv{position:absolute;top:8px;right:8px;width:256px}.tp-fldv{position:relative}.tp-fldv_t{padding-left:4px}.tp-fldv_b:disabled .tp-fldv_m{display:none}.tp-fldv_c{padding-left:4px}.tp-fldv_i{bottom:0;color:var(--cnt-bg);left:0;overflow:hidden;position:absolute;top:calc(var(--cnt-usz) + 4px);width:max(var(--bs-br),4px)}.tp-fldv_i::before{background-color:currentColor;bottom:0;content:"";left:0;position:absolute;top:0;width:4px}.tp-fldv_b:hover+.tp-fldv_i{color:var(--cnt-bg-h)}.tp-fldv_b:focus+.tp-fldv_i{color:var(--cnt-bg-f)}.tp-fldv_b:active+.tp-fldv_i{color:var(--cnt-bg-a)}.tp-fldv.tp-v-disabled>.tp-fldv_i{opacity:.5}.tp-grlv{position:relative}.tp-grlv_g{display:block;height:calc(var(--cnt-usz)*3)}.tp-grlv_g polyline{fill:none;stroke:var(--mo-fg);stroke-linejoin:round}.tp-grlv_t{margin-top:-4px;transition:left .05s,top .05s;visibility:hidden}.tp-grlv_t.tp-grlv_t-a{visibility:visible}.tp-grlv_t.tp-grlv_t-in{transition:none}.tp-grlv.tp-v-disabled .tp-grlv_g{opacity:.5}.tp-grlv .tp-ttv{background-color:var(--mo-fg)}.tp-grlv .tp-ttv::before{border-top-color:var(--mo-fg)}.tp-lblv{align-items:center;display:flex;line-height:1.3;padding-left:var(--cnt-hp);padding-right:var(--cnt-hp)}.tp-lblv.tp-lblv-nol{display:block}.tp-lblv_l{color:var(--lbl-fg);flex:1;-webkit-hyphens:auto;hyphens:auto;overflow:hidden;padding-left:4px;padding-right:16px}.tp-lblv.tp-v-disabled .tp-lblv_l{opacity:.5}.tp-lblv.tp-lblv-nol .tp-lblv_l{display:none}.tp-lblv_v{align-self:flex-start;flex-grow:0;flex-shrink:0;width:var(--bld-vw)}.tp-lblv.tp-lblv-nol .tp-lblv_v{width:100%}.tp-lstv_s{padding:0 20px 0 var(--bld-hp);width:100%}.tp-lstv_m{color:var(--btn-fg)}.tp-sglv_i{padding-left:var(--bld-hp);padding-right:var(--bld-hp)}.tp-sglv.tp-v-disabled .tp-sglv_i{opacity:.5}.tp-mllv_i{display:block;height:calc(var(--cnt-usz)*3);line-height:var(--cnt-usz);padding-left:var(--bld-hp);padding-right:var(--bld-hp);resize:none;white-space:pre}.tp-mllv.tp-v-disabled .tp-mllv_i{opacity:.5}.tp-p2dv{position:relative}.tp-p2dv_h{display:flex}.tp-p2dv_b{height:var(--cnt-usz);margin-right:4px;position:relative;width:var(--cnt-usz)}.tp-p2dv_b svg{display:block;height:16px;left:50%;margin-left:-8px;margin-top:-8px;position:absolute;top:50%;width:16px}.tp-p2dv_b svg path{stroke:currentColor;stroke-width:2}.tp-p2dv_b svg circle{fill:currentColor}.tp-p2dv_t{flex:1}.tp-p2dv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-p2dv.tp-p2dv-expanded .tp-p2dv_p{margin-top:var(--cnt-usp);opacity:1}.tp-p2dv .tp-popv{left:calc(-1*var(--cnt-hp));right:calc(-1*var(--cnt-hp));top:var(--cnt-usz)}.tp-p2dpv{padding-left:calc(var(--cnt-usz) + 4px)}.tp-p2dpv_p{cursor:crosshair;height:0;overflow:hidden;padding-bottom:100%;position:relative}.tp-p2dpv.tp-v-disabled .tp-p2dpv_p{opacity:.5}.tp-p2dpv_g{display:block;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}.tp-p2dpv_ax{opacity:.1;stroke:var(--in-fg);stroke-dasharray:1}.tp-p2dpv_l{opacity:.5;stroke:var(--in-fg);stroke-dasharray:1}.tp-p2dpv_m{border:var(--in-fg) solid 1px;border-radius:50%;box-sizing:border-box;height:4px;margin-left:-2px;margin-top:-2px;position:absolute;width:4px}.tp-p2dpv_p:focus .tp-p2dpv_m{background-color:var(--in-fg);border-width:0}.tp-popv{background-color:var(--bs-bg);border-radius:var(--bs-br);box-shadow:0 2px 4px var(--bs-sh);display:none;max-width:var(--bld-vw);padding:var(--cnt-vp) var(--cnt-hp);position:absolute;visibility:hidden;z-index:1000}.tp-popv.tp-popv-v{display:block;visibility:visible}.tp-sldv.tp-v-disabled{opacity:.5}.tp-sldv_t{box-sizing:border-box;cursor:pointer;height:var(--cnt-usz);margin:0 6px;outline:none;position:relative}.tp-sldv_t::before{background-color:var(--in-bg);border-radius:1px;content:"";display:block;height:2px;inset:0;margin:auto;position:absolute}.tp-sldv_k{height:100%;left:0;position:absolute;top:0}.tp-sldv_k::before{background-color:var(--in-fg);border-radius:1px;content:"";display:block;height:2px;inset:0;margin-bottom:auto;margin-top:auto;position:absolute}.tp-sldv_k::after{background-color:var(--btn-bg);border-radius:var(--bld-br);bottom:0;content:"";display:block;height:12px;margin-bottom:auto;margin-top:auto;position:absolute;right:-6px;top:0;width:12px}.tp-sldv_t:hover .tp-sldv_k::after{background-color:var(--btn-bg-h)}.tp-sldv_t:focus .tp-sldv_k::after{background-color:var(--btn-bg-f)}.tp-sldv_t:active .tp-sldv_k::after{background-color:var(--btn-bg-a)}.tp-sldtxtv{display:flex}.tp-sldtxtv_s{flex:2}.tp-sldtxtv_t{flex:1;margin-left:4px}.tp-tabv{position:relative}.tp-tabv_t{align-items:flex-end;color:var(--cnt-bg);display:flex;overflow:hidden;position:relative}.tp-tabv_t:hover{color:var(--cnt-bg-h)}.tp-tabv_t:has(*:focus){color:var(--cnt-bg-f)}.tp-tabv_t:has(*:active){color:var(--cnt-bg-a)}.tp-tabv_t::before{background-color:currentColor;bottom:0;content:"";height:2px;left:0;pointer-events:none;position:absolute;right:0}.tp-tabv.tp-v-disabled .tp-tabv_t::before{opacity:.5}.tp-tabv.tp-tabv-nop .tp-tabv_t{height:calc(var(--cnt-usz) + 4px);position:relative}.tp-tabv.tp-tabv-nop .tp-tabv_t::before{background-color:var(--cnt-bg);bottom:0;content:"";height:2px;left:0;position:absolute;right:0}.tp-tabv_i{bottom:0;color:var(--cnt-bg);left:0;overflow:hidden;position:absolute;top:calc(var(--cnt-usz) + 4px);width:max(var(--bs-br),4px)}.tp-tabv_i::before{background-color:currentColor;bottom:0;content:"";left:0;position:absolute;top:0;width:4px}.tp-tabv_t:hover+.tp-tabv_i{color:var(--cnt-bg-h)}.tp-tabv_t:has(*:focus)+.tp-tabv_i{color:var(--cnt-bg-f)}.tp-tabv_t:has(*:active)+.tp-tabv_i{color:var(--cnt-bg-a)}.tp-tabv.tp-v-disabled>.tp-tabv_i{opacity:.5}.tp-tbiv{flex:1;min-width:0;position:relative}.tp-tbiv+.tp-tbiv{margin-left:2px}.tp-tbiv+.tp-tbiv.tp-v-disabled::before{opacity:.5}.tp-tbiv_b{display:block;padding-left:calc(var(--cnt-hp) + 4px);padding-right:calc(var(--cnt-hp) + 4px);position:relative;width:100%}.tp-tbiv_b:disabled{opacity:.5}.tp-tbiv_b::before{background-color:var(--cnt-bg);content:"";inset:0 0 2px;pointer-events:none;position:absolute}.tp-tbiv_b:hover::before{background-color:var(--cnt-bg-h)}.tp-tbiv_b:focus::before{background-color:var(--cnt-bg-f)}.tp-tbiv_b:active::before{background-color:var(--cnt-bg-a)}.tp-tbiv_t{color:var(--cnt-fg);height:calc(var(--cnt-usz) + 4px);line-height:calc(var(--cnt-usz) + 4px);opacity:.5;overflow:hidden;position:relative;text-overflow:ellipsis}.tp-tbiv.tp-tbiv-sel .tp-tbiv_t{opacity:1}.tp-tbpv_c{padding-bottom:var(--cnt-vp);padding-left:4px;padding-top:var(--cnt-vp)}.tp-txtv{position:relative}.tp-txtv_i{padding-left:var(--bld-hp);padding-right:var(--bld-hp)}.tp-txtv.tp-txtv-fst .tp-txtv_i{border-bottom-right-radius:0;border-top-right-radius:0}.tp-txtv.tp-txtv-mid .tp-txtv_i{border-radius:0}.tp-txtv.tp-txtv-lst .tp-txtv_i{border-bottom-left-radius:0;border-top-left-radius:0}.tp-txtv.tp-txtv-num .tp-txtv_i{text-align:right}.tp-txtv.tp-txtv-drg .tp-txtv_i{opacity:.3}.tp-txtv_k{cursor:pointer;height:100%;left:calc(var(--bld-hp) - 5px);position:absolute;top:0;width:12px}.tp-txtv_k::before{background-color:var(--in-fg);border-radius:1px;bottom:0;content:"";height:calc(var(--cnt-usz) - 4px);left:50%;margin-bottom:auto;margin-left:-1px;margin-top:auto;opacity:.1;position:absolute;top:0;transition:border-radius .1s,height .1s,transform .1s,width .1s;width:2px}.tp-txtv_k:hover::before,.tp-txtv.tp-txtv-drg .tp-txtv_k::before{opacity:1}.tp-txtv.tp-txtv-drg .tp-txtv_k::before{border-radius:50%;height:4px;transform:translateX(-1px);width:4px}.tp-txtv_g{bottom:0;display:block;height:8px;left:50%;margin:auto;overflow:visible;pointer-events:none;position:absolute;top:0;visibility:hidden;width:100%}.tp-txtv.tp-txtv-drg .tp-txtv_g{visibility:visible}.tp-txtv_gb{fill:none;stroke:var(--in-fg);stroke-dasharray:1}.tp-txtv_gh{fill:none;stroke:var(--in-fg)}.tp-txtv .tp-ttv{margin-left:6px;visibility:hidden}.tp-txtv.tp-txtv-drg .tp-ttv{visibility:visible}.tp-ttv{background-color:var(--in-fg);border-radius:var(--bld-br);color:var(--bs-bg);padding:2px 4px;pointer-events:none;position:absolute;transform:translate(-50%, -100%)}.tp-ttv::before{border-color:var(--in-fg) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);border-style:solid;border-width:2px;box-sizing:border-box;content:"";font-size:.9em;height:4px;left:50%;margin-left:-2px;position:absolute;top:100%;width:4px}.tp-rotv{background-color:var(--bs-bg);border-radius:var(--bs-br);box-shadow:0 2px 4px var(--bs-sh);font-family:var(--bs-ff);font-size:11px;font-weight:500;line-height:1;text-align:left}.tp-rotv_b{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br);border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br);padding-left:calc(4px + var(--cnt-usz) + var(--cnt-hp));text-align:center}.tp-rotv.tp-rotv-expanded .tp-rotv_b{border-bottom-left-radius:0;border-bottom-right-radius:0;transition-delay:0s;transition-duration:0s}.tp-rotv.tp-rotv-not>.tp-rotv_b{display:none}.tp-rotv_b:disabled .tp-rotv_m{display:none}.tp-rotv_c>.tp-fldv.tp-v-lst>.tp-fldv_c{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c>.tp-fldv.tp-v-lst>.tp-fldv_i{border-bottom-left-radius:var(--bs-br)}.tp-rotv_c>.tp-fldv.tp-v-lst:not(.tp-fldv-expanded)>.tp-fldv_b{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c>.tp-fldv.tp-v-lst.tp-fldv-expanded>.tp-fldv_b{transition-delay:0s;transition-duration:0s}.tp-rotv_c .tp-fldv.tp-v-vlst:not(.tp-fldv-expanded)>.tp-fldv_b{border-bottom-right-radius:var(--bs-br)}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-fldv.tp-v-fst{margin-top:calc(-1*var(--cnt-vp))}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-fldv.tp-v-fst>.tp-fldv_b{border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br)}.tp-rotv_c>.tp-tabv.tp-v-lst>.tp-tabv_c{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c>.tp-tabv.tp-v-lst>.tp-tabv_i{border-bottom-left-radius:var(--bs-br)}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst{margin-top:calc(-1*var(--cnt-vp))}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst>.tp-tabv_t{border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br)}.tp-rotv.tp-v-disabled,.tp-rotv .tp-v-disabled{pointer-events:none}.tp-rotv.tp-v-hidden,.tp-rotv .tp-v-hidden{display:none}.tp-sprv_r{background-color:var(--grv-fg);border-width:0;display:block;height:2px;margin:0;width:100%}.tp-sprv.tp-v-disabled .tp-sprv_r{opacity:.5}',plugins:[vr,fr,xr,Ae,Cr]})}},Pr=(new Qt("4.0.5"),t({ButtonCellApi:()=>tc,ButtonGridApi:()=>ic,ButtonGridController:()=>nc,CubicBezier:()=>pc,CubicBezierApi:()=>oc,CubicBezierAssembly:()=>hc,CubicBezierController:()=>kc,CubicBezierGraphController:()=>Pc,CubicBezierGraphView:()=>fc,CubicBezierPickerController:()=>Ec,CubicBezierPickerView:()=>gc,CubicBezierPreviewView:()=>Cc,CubicBezierView:()=>mc,FpsGraphBladeApi:()=>Lc,FpsGraphController:()=>Dc,FpsView:()=>jc,Fpswatch:()=>Mc,Interval:()=>Tc,IntervalAssembly:()=>zc,IntervalConstraint:()=>Rc,RadioCellApi:()=>Yc,RadioController:()=>Zc,RadioGridApi:()=>Wc,RadioGridController:()=>td,RadioView:()=>Jc,RangeSliderController:()=>Fc,RangeSliderTextController:()=>$c,RangeSliderTextView:()=>Kc,RangeSliderView:()=>Uc,TpRadioGridChangeEvent:()=>Xc,css:()=>ad,id:()=>od,plugins:()=>ld}));function Er(t){return null==t}function kr(t){return null!==t&&"object"==typeof t}function Vr(t){return null!==t&&"object"==typeof t}function Lr(t,e){if(t.length!==e.length)return!1;for(let i=0;i{const s=t[n],r=e[n];return Vr(s)&&Vr(r)?Object.assign(Object.assign({},i),{[n]:Mr(s,r)}):Object.assign(Object.assign({},i),{[n]:n in e?r:s})},{})}var Sr={alreadydisposed:()=>"View has been already disposed",invalidparams:t=>`Invalid parameters for '${t.name}'`,nomatchingcontroller:t=>`No matching controller for '${t.key}'`,nomatchingview:t=>`No matching view for '${JSON.stringify(t.params)}'`,notbindable:()=>"Value is not bindable",notcompatible:t=>`Not compatible with plugin '${t.id}'`,propertynotfound:t=>`Property '${t.name}' not found`,shouldneverhappen:()=>"This error should never happen"},jr=class t{static alreadyDisposed(){return new t({type:"alreadydisposed"})}static notBindable(){return new t({type:"notbindable"})}static notCompatible(e,i){return new t({type:"notcompatible",context:{id:`${e}.${i}`}})}static propertyNotFound(e){return new t({type:"propertynotfound",context:{name:e}})}static shouldNeverHappen(){return new t({type:"shouldneverhappen"})}constructor(t){var e;this.message=null!==(e=Sr[t.type](t.context))&&void 0!==e?e:"Unexpected error",this.name=this.constructor.name,this.stack=new Error(this.message).stack,this.type=t.type}toString(){return this.message}},Dr=class t{constructor(t,e){this.obj_=t,this.key=e}static isBindable(t){return null!==t&&("object"==typeof t||"function"==typeof t)}read(){return this.obj_[this.key]}write(t){this.obj_[this.key]=t}writeProperty(e,i){const n=this.read();if(!t.isBindable(n))throw jr.notBindable();if(!(e in n))throw jr.propertyNotFound(e);n[e]=i}},Ar=class{constructor(){this.observers_={}}on(t,e){let i=this.observers_[t];return i||(i=this.observers_[t]=[]),i.push({handler:e}),this}off(t,e){const i=this.observers_[t];return i&&(this.observers_[t]=i.filter(t=>t.handler!==e)),this}emit(t,e){const i=this.observers_[t];i&&i.forEach(t=>{t.handler(e)})}},Or=class{constructor(t,e){var i;this.constraint_=null==e?void 0:e.constraint,this.equals_=null!==(i=null==e?void 0:e.equals)&&void 0!==i?i:(t,e)=>t===e,this.emitter=new Ar,this.rawValue_=t}get constraint(){return this.constraint_}get rawValue(){return this.rawValue_}set rawValue(t){this.setRawValue(t,{forceEmit:!1,last:!0})}setRawValue(t,e){const i=null!=e?e:{forceEmit:!1,last:!0},n=this.constraint_?this.constraint_.constrain(t):t,s=this.rawValue_;this.equals_(s,n)&&!i.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=n,this.emitter.emit("change",{options:i,previousRawValue:s,rawValue:n,sender:this}))}},Br=class{constructor(t){this.emitter=new Ar,this.value_=t}get rawValue(){return this.value_}set rawValue(t){this.setRawValue(t,{forceEmit:!1,last:!0})}setRawValue(t,e){const i=null!=e?e:{forceEmit:!1,last:!0},n=this.value_;(n!==t||i.forceEmit)&&(this.emitter.emit("beforechange",{sender:this}),this.value_=t,this.emitter.emit("change",{options:i,previousRawValue:n,rawValue:this.value_,sender:this}))}},Tr=class{constructor(t){this.emitter=new Ar,this.onValueBeforeChange_=this.onValueBeforeChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.value_=t,this.value_.emitter.on("beforechange",this.onValueBeforeChange_),this.value_.emitter.on("change",this.onValueChange_)}get rawValue(){return this.value_.rawValue}onValueBeforeChange_(t){this.emitter.emit("beforechange",Object.assign(Object.assign({},t),{sender:this}))}onValueChange_(t){this.emitter.emit("change",Object.assign(Object.assign({},t),{sender:this}))}};function zr(t,e){const i=null==e?void 0:e.constraint,n=null==e?void 0:e.equals;return i||n?new Or(t,e):new Br(t)}var Rr=class t{constructor(t){this.emitter=new Ar,this.valMap_=t;for(const e in this.valMap_)this.valMap_[e].emitter.on("change",()=>{this.emitter.emit("change",{key:e,sender:this})})}static createCore(t){return Object.keys(t).reduce((e,i)=>Object.assign(e,{[i]:zr(t[i])}),{})}static fromObject(e){return new t(this.createCore(e))}get(t){return this.valMap_[t].rawValue}set(t,e){this.valMap_[t].rawValue=e}value(t){return this.valMap_[t]}},Nr=class{constructor(t){this.values=Rr.fromObject({max:t.max,min:t.min})}constrain(t){const e=this.values.get("max"),i=this.values.get("min");return Math.min(Math.max(t,i),e)}},Kr=class{constructor(t){this.values=Rr.fromObject({max:t.max,min:t.min})}constrain(t){const e=this.values.get("max"),i=this.values.get("min");let n=t;return Er(i)||(n=Math.max(n,i)),Er(e)||(n=Math.min(n,e)),n}},Ir=class{constructor(t,e=0){this.step=t,this.origin=e}constrain(t){const e=this.origin%this.step;return e+Math.round((t-e)/this.step)*this.step}},Ur=class{constructor(t){this.text=t}evaluate(){return Number(this.text)}toString(){return this.text}},Fr={"**":(t,e)=>Math.pow(t,e),"*":(t,e)=>t*e,"/":(t,e)=>t/e,"%":(t,e)=>t%e,"+":(t,e)=>t+e,"-":(t,e)=>t-e,"<<":(t,e)=>t<>":(t,e)=>t>>e,">>>":(t,e)=>t>>>e,"&":(t,e)=>t&e,"^":(t,e)=>t^e,"|":(t,e)=>t|e},$r=class{constructor(t,e,i){this.left=e,this.operator=t,this.right=i}evaluate(){const t=Fr[this.operator];if(!t)throw new Error(`unexpected binary operator: '${this.operator}`);return t(this.left.evaluate(),this.right.evaluate())}toString(){return["b(",this.left.toString(),this.operator,this.right.toString(),")"].join(" ")}},qr={"+":t=>t,"-":t=>-t,"~":t=>~t},Hr=class{constructor(t,e){this.operator=t,this.expression=e}evaluate(){const t=qr[this.operator];if(!t)throw new Error(`unexpected unary operator: '${this.operator}`);return t(this.expression.evaluate())}toString(){return["u(",this.operator,this.expression.toString(),")"].join(" ")}};function Gr(t){return(e,i)=>{for(let n=0;ne.startsWith(t,i))[0];return n?(i+=n.length,{cursor:i+=Yr(e,i).length,operator:n}):null}var eo=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((t,e)=>function(t,e){return(i,n)=>{const s=t(i,n);if(!s)return null;n=s.cursor;let r=s.evaluable;for(;;){const s=to(e,i,n);if(!s)break;n=s.cursor;const o=t(i,n);if(!o)return null;n=o.cursor,r=new $r(s.operator,r,o.evaluable)}return r?{cursor:n,evaluable:r}:null}}(t,e),function t(e,i){const n=function(t,e){var i;return null!==(i=function(t,e){const i=Zr(t,e);return e+=i.length,""===i?null:{evaluable:new Ur(i),cursor:e}}(t,e))&&void 0!==i?i:function(t,e){const i=t.substr(e,1);if(e+=i.length,"("!==i)return null;const n=io(t,e);if(!n)return null;e=n.cursor,e+=Yr(t,e).length;const s=t.substr(e,1);return e+=s.length,")"!==s?null:{evaluable:n.evaluable,cursor:e}}(t,e)}(e,i);if(n)return n;const s=e.substr(i,1);if(i+=s.length,"+"!==s&&"-"!==s&&"~"!==s)return null;const r=t(e,i);return r?{cursor:i=r.cursor,evaluable:new Hr(s,r.evaluable)}:null});function io(t,e){return e+=Yr(t,e).length,eo(t,e)}function no(t){var e;const i=function(t){const e=io(t,0);return e?e.cursor+Yr(t,e.cursor).length!==t.length?null:e.evaluable:null}(t);return null!==(e=null==i?void 0:i.evaluate())&&void 0!==e?e:null}function so(t){if("number"==typeof t)return t;if("string"==typeof t){const e=no(t);if(!Er(e))return e}return 0}function ro(t){return e=>e.toFixed(Math.max(Math.min(t,20),0))}function oo(t,e,i,n,s){return n+(t-e)/(i-e)*(s-n)}function ao(t){return String(t.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function lo(t,e,i){return Math.min(Math.max(t,e),i)}function po(t,e){return(t%e+e)%e}function ho(t,e){return Er(t.step)?Math.max(ao(e),2):ao(t.step)}function co(t){var e;return null!==(e=t.step)&&void 0!==e?e:1}function uo(t,e){var i;const n=Math.abs(null!==(i=t.step)&&void 0!==i?i:e);return 0===n?.1:Math.pow(10,Math.floor(Math.log10(n))-1)}function vo(t,e){return Er(t.step)?null:new Ir(t.step,e)}function mo(t){return Er(t.max)||Er(t.min)?Er(t.max)&&Er(t.min)?null:new Kr({max:t.max,min:t.min}):new Nr({max:t.max,min:t.min})}function bo(t,e){var i,n,s;return{formatter:null!==(i=t.format)&&void 0!==i?i:ro(ho(t,e)),keyScale:null!==(n=t.keyScale)&&void 0!==n?n:co(t),pointerScale:null!==(s=t.pointerScale)&&void 0!==s?s:uo(t,e)}}function go(t){return{format:t.optional.function,keyScale:t.optional.number,max:t.optional.number,min:t.optional.number,pointerScale:t.optional.number,step:t.optional.number}}function wo(t){return{constraint:t.constraint,textProps:Rr.fromObject(bo(t.params,t.initialValue))}}var _o=class{constructor(t){this.controller=t}get element(){return this.controller.view.element}get disabled(){return this.controller.viewProps.get("disabled")}set disabled(t){this.controller.viewProps.set("disabled",t)}get hidden(){return this.controller.viewProps.get("hidden")}set hidden(t){this.controller.viewProps.set("hidden",t)}dispose(){this.controller.viewProps.set("disposed",!0)}importState(t){return this.controller.importState(t)}exportState(){return this.controller.exportState()}},fo=class{constructor(t){this.target=t}},xo=class extends fo{constructor(t,e,i){super(t),this.value=e,this.last=null==i||i}},Co=class extends fo{constructor(t,e){super(t),this.expanded=e}},yo=class extends fo{constructor(t,e){super(t),this.index=e}},Po=class extends _o{constructor(t){super(t),this.onValueChange_=this.onValueChange_.bind(this),this.emitter_=new Ar,this.controller.value.emitter.on("change",this.onValueChange_)}get label(){return this.controller.labelController.props.get("label")}set label(t){this.controller.labelController.props.set("label",t)}get key(){return this.controller.value.binding.target.key}get tag(){return this.controller.tag}set tag(t){this.controller.tag=t}on(t,e){const i=e.bind(this);return this.emitter_.on(t,t=>{i(t)}),this}refresh(){this.controller.value.fetch()}onValueChange_(t){const e=this.controller.value;this.emitter_.emit("change",new xo(this,e.binding.target.read(),t.options.last))}};function Eo(t){return e=>i=>{if(!e&&void 0===i)return{succeeded:!1,value:void 0};if(e&&void 0===i)return{succeeded:!0,value:void 0};const n=t(i);return void 0!==n?{succeeded:!0,value:n}:{succeeded:!1,value:void 0}}}function ko(t){return{custom:e=>Eo(e)(t),boolean:Eo(t=>"boolean"==typeof t?t:void 0)(t),number:Eo(t=>"number"==typeof t?t:void 0)(t),string:Eo(t=>"string"==typeof t?t:void 0)(t),function:Eo(t=>"function"==typeof t?t:void 0)(t),constant:e=>Eo(t=>t===e?e:void 0)(t),raw:Eo(t=>t)(t),object:e=>Eo(t=>{var i;if(null!==(i=t)&&"object"==typeof i)return function(t,e){return Object.keys(e).reduce((i,n)=>{if(void 0===i)return;const s=(0,e[n])(t[n]);return s.succeeded?Object.assign(Object.assign({},i),{[n]:s.value}):void 0},{})}(t,e)})(t),array:e=>Eo(t=>{var i;if(Array.isArray(t))return i=e,t.reduce((t,e)=>{if(void 0===t)return;const n=i(e);return n.succeeded&&void 0!==n.value?[...t,n.value]:void 0},[])})(t)}}var Vo={optional:ko(!0),required:ko(!1)};function Lo(t,e){const i=e(Vo),n=Vo.required.object(i)(t);return n.succeeded?n.value:void 0}function Mo(t,e,i,n){if(e&&!e(t))return!1;const s=Lo(t,i);return!!s&&n(s)}function So(t,e){var i;return Mr(null!==(i=null==t?void 0:t())&&void 0!==i?i:{},e)}function jo(t){return"value"in t}var Do="http://www.w3.org/2000/svg";function Ao(t){t.offsetHeight}function Oo(t){return void 0!==t.ontouchstart}var Bo={check:'',dropdown:'',p2dpad:''};function To(t,e){const i=t.createElementNS(Do,"svg");return i.innerHTML=Bo[e],i}function zo(t,e,i){t.insertBefore(e,t.children[i])}function Ro(t){t.parentElement&&t.parentElement.removeChild(t)}function No(t){for(;t.children.length>0;)t.removeChild(t.children[0])}function Ko(t){return t.relatedTarget?t.relatedTarget:"explicitOriginalTarget"in t?t.explicitOriginalTarget:null}function Io(t,e){t.emitter.on("change",t=>{e(t.rawValue)}),e(t.rawValue)}function Uo(t,e,i){Io(t.value(e),i)}var Fo="tp";function $o(t){return(e,i)=>[Fo,"-",t,"v",e?`_${e}`:"",i?`-${i}`:""].join("")}var qo=$o("lbl"),Ho=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(qo()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(qo("l")),Uo(e.props,"label",e=>{Er(e)?this.element.classList.add(qo(void 0,"nol")):(this.element.classList.remove(qo(void 0,"nol")),function(t){for(;t.childNodes.length>0;)t.removeChild(t.childNodes[0])}(i),i.appendChild(function(t,e){const i=t.createDocumentFragment();return e.split("\n").map(e=>t.createTextNode(e)).forEach((e,n)=>{n>0&&i.appendChild(t.createElement("br")),i.appendChild(e)}),i}(t,e)))}),this.element.appendChild(i),this.labelElement=i;const n=t.createElement("div");n.classList.add(qo("v")),this.element.appendChild(n),this.valueElement=n}},Go=class{constructor(t,e){this.props=e.props,this.valueController=e.valueController,this.viewProps=e.valueController.viewProps,this.view=new Ho(t,{props:e.props,viewProps:this.viewProps}),this.view.valueElement.appendChild(this.valueController.view.element)}importProps(t){return Mo(t,null,t=>({label:t.optional.string}),t=>(this.props.set("label",t.label),!0))}exportProps(){return So(null,{label:this.props.get("label")})}},Yo=$o(""),Xo={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"},Wo=class{constructor(t){this.parent_=null,this.blade=t.blade,this.view=t.view,this.viewProps=t.viewProps;const e=this.view.element;this.blade.value("positions").emitter.on("change",()=>{["veryfirst","first","last","verylast"].forEach(t=>{e.classList.remove(Yo(void 0,Xo[t]))}),this.blade.get("positions").forEach(t=>{e.classList.add(Yo(void 0,Xo[t]))})}),this.viewProps.handleDispose(()=>{Ro(e)})}get parent(){return this.parent_}set parent(t){this.parent_=t,this.viewProps.set("parent",this.parent_?this.parent_.viewProps:null)}importState(t){return Mo(t,null,t=>({disabled:t.required.boolean,hidden:t.required.boolean}),t=>(this.viewProps.importState(t),!0))}exportState(){return So(null,Object.assign({},this.viewProps.exportState()))}},Qo=class extends Wo{constructor(t,e){if(e.value!==e.valueController.value)throw jr.shouldNeverHappen();const i=e.valueController.viewProps,n=new Go(t,{blade:e.blade,props:e.props,valueController:e.valueController});super(Object.assign(Object.assign({},e),{view:new Ho(t,{props:e.props,viewProps:i}),viewProps:i})),this.labelController=n,this.value=e.value,this.valueController=e.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}importState(t){return Mo(t,e=>{var i,n,s;return super.importState(e)&&this.labelController.importProps(e)&&(null===(s=null===(n=(i=this.valueController).importProps)||void 0===n?void 0:n.call(i,t))||void 0===s||s)},t=>({value:t.optional.raw}),t=>(t.value&&(this.value.rawValue=t.value),!0))}exportState(){var t,e,i;return So(()=>super.exportState(),Object.assign(Object.assign({value:this.value.rawValue},this.labelController.exportProps()),null!==(i=null===(e=(t=this.valueController).exportProps)||void 0===e?void 0:e.call(t))&&void 0!==i?i:{}))}};function Jo(t,e){for(;t.length{i(new fo(this))}),this}};function ia(t,e){return i=>{!function(t,e,i){i?t.classList.add(e):t.classList.remove(e)}(t,e,i)}}function na(t,e){Io(t,t=>{e.textContent=null!=t?t:""})}var sa=$o("btn"),ra=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(sa()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("button");i.classList.add(sa("b")),e.viewProps.bindDisabled(i),this.element.appendChild(i),this.buttonElement=i;const n=t.createElement("div");n.classList.add(sa("t")),na(e.props.value("title"),n),this.buttonElement.appendChild(n)}},oa=class{constructor(t,e){this.emitter=new Ar,this.onClick_=this.onClick_.bind(this),this.props=e.props,this.viewProps=e.viewProps,this.view=new ra(t,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}importProps(t){return Mo(t,null,t=>({title:t.optional.string}),t=>(this.props.set("title",t.title),!0))}exportProps(){return So(null,{title:this.props.get("title")})}onClick_(){this.emitter.emit("click",{sender:this})}},aa=class extends Wo{constructor(t,e){const i=new oa(t,{props:e.buttonProps,viewProps:e.viewProps}),n=new Go(t,{blade:e.blade,props:e.labelProps,valueController:i});super({blade:e.blade,view:n.view,viewProps:e.viewProps}),this.buttonController=i,this.labelController=n}importState(t){return Mo(t,t=>super.importState(t)&&this.buttonController.importProps(t)&&this.labelController.importProps(t),()=>({}),()=>!0)}exportState(){return So(()=>super.exportState(),Object.assign(Object.assign({},this.buttonController.exportProps()),this.labelController.exportProps()))}},la=new class{constructor(t){const[e,i]=t.split("-"),n=e.split(".");this.major=parseInt(n[0],10),this.minor=parseInt(n[1],10),this.patch=parseInt(n[2],10),this.prerelease=null!=i?i:null}toString(){const t=[this.major,this.minor,this.patch].join(".");return null!==this.prerelease?[t,this.prerelease].join("-"):t}}("2.0.0-beta.2");function pa(t){return Object.assign({core:la},t)}pa({id:"button",type:"blade",accept(t){const e=Lo(t,t=>({title:t.required.string,view:t.required.constant("button"),label:t.optional.string}));return e?{params:e}:null},controller:t=>new aa(t.document,{blade:t.blade,buttonProps:Rr.fromObject({title:t.params.title}),labelProps:Rr.fromObject({label:t.params.label}),viewProps:t.viewProps}),api:t=>t.controller instanceof aa?new ea(t.controller):null});var ha=class{constructor(t,e){this.onRackValueChange_=this.onRackValueChange_.bind(this),this.controller_=t,this.emitter_=new Ar,this.pool_=e,this.controller_.rack.emitter.on("valuechange",this.onRackValueChange_)}get children(){return this.controller_.rack.children.map(t=>this.pool_.createApi(t))}addBinding(t,e,i){const n=null!=i?i:{},s=this.controller_.element.ownerDocument,r=this.pool_.createBinding(s,function(t,e){if(!Dr.isBindable(t))throw jr.notBindable();return new Dr(t,e)}(t,e),n),o=this.pool_.createBindingApi(r);return this.add(o,n.index)}addFolder(t){return function(t,e){return t.addBlade(Object.assign(Object.assign({},e),{view:"folder"}))}(this,t)}addButton(t){return function(t,e){return t.addBlade(Object.assign(Object.assign({},e),{view:"button"}))}(this,t)}addTab(t){return function(t,e){return t.addBlade(Object.assign(Object.assign({},e),{view:"tab"}))}(this,t)}add(t,e){const i=t.controller;return this.controller_.rack.add(i,e),t}remove(t){this.controller_.rack.remove(t.controller)}addBlade(t){const e=this.controller_.element.ownerDocument,i=this.pool_.createBlade(e,t),n=this.pool_.createApi(i);return this.add(n,t.index)}on(t,e){const i=e.bind(this);return this.emitter_.on(t,t=>{i(t)}),this}refresh(){this.children.forEach(t=>{var e;kr(e=t)&&"refresh"in e&&"function"==typeof e.refresh&&t.refresh()})}onRackValueChange_(t){const e=t.bladeController,i=this.pool_.createApi(e),n=kr(s=e.value)&&"binding"in s&&kr(r=s.binding)&&"target"in r?e.value.binding:null;var s,r;this.emitter_.emit("change",new xo(i,n?n.target.read():e.value.rawValue,t.options.last))}},ca=class extends _o{constructor(t,e){super(t),this.rackApi_=new ha(t.rackController,e)}},da=class extends Wo{constructor(t){super({blade:t.blade,view:t.view,viewProps:t.rackController.viewProps}),this.rackController=t.rackController}importState(t){return Mo(t,t=>super.importState(t),t=>({children:t.required.array(t.required.raw)}),t=>this.rackController.rack.children.every((e,i)=>e.importState(t.children[i])))}exportState(){return So(()=>super.exportState(),{children:this.rackController.rack.children.map(t=>t.exportState())})}};function ua(t){return"rackController"in t}var va=class{constructor(t){this.emitter=new Ar,this.items_=[],this.cache_=new Set,this.onSubListAdd_=this.onSubListAdd_.bind(this),this.onSubListRemove_=this.onSubListRemove_.bind(this),this.extract_=t}get items(){return this.items_}allItems(){return Array.from(this.cache_)}find(t){for(const e of this.allItems())if(t(e))return e;return null}includes(t){return this.cache_.has(t)}add(t,e){if(this.includes(t))throw jr.shouldNeverHappen();const i=void 0!==e?e:this.items_.length;this.items_.splice(i,0,t),this.cache_.add(t);const n=this.extract_(t);n&&(n.emitter.on("add",this.onSubListAdd_),n.emitter.on("remove",this.onSubListRemove_),n.allItems().forEach(t=>{this.cache_.add(t)})),this.emitter.emit("add",{index:i,item:t,root:this,target:this})}remove(t){const e=this.items_.indexOf(t);if(e<0)return;this.items_.splice(e,1),this.cache_.delete(t);const i=this.extract_(t);i&&(i.allItems().forEach(t=>{this.cache_.delete(t)}),i.emitter.off("add",this.onSubListAdd_),i.emitter.off("remove",this.onSubListRemove_)),this.emitter.emit("remove",{index:e,item:t,root:this,target:this})}onSubListAdd_(t){this.cache_.add(t.item),this.emitter.emit("add",{index:t.index,item:t.item,root:this,target:t.target})}onSubListRemove_(t){this.cache_.delete(t.item),this.emitter.emit("remove",{index:t.index,item:t.item,root:this,target:t.target})}};function ma(t){return ua(t)?t.rackController.rack.bcSet_:null}var ba=class{constructor(t){var e,i;this.emitter=new Ar,this.onBladePositionsChange_=this.onBladePositionsChange_.bind(this),this.onSetAdd_=this.onSetAdd_.bind(this),this.onSetRemove_=this.onSetRemove_.bind(this),this.onChildDispose_=this.onChildDispose_.bind(this),this.onChildPositionsChange_=this.onChildPositionsChange_.bind(this),this.onChildValueChange_=this.onChildValueChange_.bind(this),this.onChildViewPropsChange_=this.onChildViewPropsChange_.bind(this),this.onRackLayout_=this.onRackLayout_.bind(this),this.onRackValueChange_=this.onRackValueChange_.bind(this),this.blade_=null!==(e=t.blade)&&void 0!==e?e:null,null===(i=this.blade_)||void 0===i||i.value("positions").emitter.on("change",this.onBladePositionsChange_),this.viewProps=t.viewProps,this.bcSet_=new va(ma),this.bcSet_.emitter.on("add",this.onSetAdd_),this.bcSet_.emitter.on("remove",this.onSetRemove_)}get children(){return this.bcSet_.items}add(t,e){var i;null===(i=t.parent)||void 0===i||i.remove(t),t.parent=this,this.bcSet_.add(t,e)}remove(t){t.parent=null,this.bcSet_.remove(t)}find(t){return this.bcSet_.allItems().filter(t)}onSetAdd_(t){this.updatePositions_();const e=t.target===t.root;if(this.emitter.emit("add",{bladeController:t.item,index:t.index,root:e,sender:this}),!e)return;const i=t.item;if(i.viewProps.emitter.on("change",this.onChildViewPropsChange_),i.blade.value("positions").emitter.on("change",this.onChildPositionsChange_),i.viewProps.handleDispose(this.onChildDispose_),jo(i))i.value.emitter.on("change",this.onChildValueChange_);else if(ua(i)){const t=i.rackController.rack;if(t){const e=t.emitter;e.on("layout",this.onRackLayout_),e.on("valuechange",this.onRackValueChange_)}}}onSetRemove_(t){this.updatePositions_();const e=t.target===t.root;if(this.emitter.emit("remove",{bladeController:t.item,root:e,sender:this}),!e)return;const i=t.item;if(jo(i))i.value.emitter.off("change",this.onChildValueChange_);else if(ua(i)){const t=i.rackController.rack;if(t){const e=t.emitter;e.off("layout",this.onRackLayout_),e.off("valuechange",this.onRackValueChange_)}}}updatePositions_(){const t=this.bcSet_.items.filter(t=>!t.viewProps.get("hidden")),e=t[0],i=t[t.length-1];this.bcSet_.items.forEach(t=>{const n=[];t===e&&(n.push("first"),this.blade_&&!this.blade_.get("positions").includes("veryfirst")||n.push("veryfirst")),t===i&&(n.push("last"),this.blade_&&!this.blade_.get("positions").includes("verylast")||n.push("verylast")),t.blade.set("positions",n)})}onChildPositionsChange_(){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildViewPropsChange_(t){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildDispose_(){this.bcSet_.items.filter(t=>t.viewProps.get("disposed")).forEach(t=>{this.bcSet_.remove(t)})}onChildValueChange_(t){const e=function(t,e){for(let i=0;i{for(let t=this.rack.children.length-1;t>=0;t--)this.rack.children[t].viewProps.set("disposed",!0)})}onRackAdd_(t){t.root&&zo(this.element,t.bladeController.view.element,t.index)}onRackRemove_(t){t.root&&Ro(t.bladeController.view.element)}};function wa(){return new Rr({positions:zr([],{equals:Lr})})}var _a=class t extends Rr{constructor(t){super(t)}static create(e){const i={completed:!0,expanded:e,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null};return new t(Rr.createCore(i))}get styleExpanded(){var t;return null!==(t=this.get("temporaryExpanded"))&&void 0!==t?t:this.get("expanded")}get styleHeight(){if(!this.styleExpanded)return"0";const t=this.get("expandedHeight");return this.get("shouldFixHeight")&&!Er(t)?`${t}px`:"auto"}bindExpandedClass(t,e){const i=()=>{this.styleExpanded?t.classList.add(e):t.classList.remove(e)};Uo(this,"expanded",i),Uo(this,"temporaryExpanded",i)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}};function fa(t,e){e.style.height=t.styleHeight}function xa(t,e){t.value("expanded").emitter.on("beforechange",()=>{if(t.set("completed",!1),Er(t.get("expandedHeight"))){const i=function(t,e){let i=0;return function(n){const s=n.style.transition;n.style.transition="none",t.set("expandedHeight",null),t.set("temporaryExpanded",!0),Ao(e),i=e.clientHeight,t.set("temporaryExpanded",null),Ao(e),n.style.transition=s}(e),i}(t,e);i>0&&t.set("expandedHeight",i)}t.set("shouldFixHeight",!0),Ao(e)}),t.emitter.on("change",()=>{fa(t,e)}),fa(t,e),e.addEventListener("transitionend",e=>{"height"===e.propertyName&&t.cleanUpTransition()})}var Ca=class extends ca{constructor(t,e){super(t,e),this.emitter_=new Ar,this.controller.foldable.value("expanded").emitter.on("change",t=>{this.emitter_.emit("fold",new Co(this,t.sender.rawValue))}),this.rackApi_.on("change",t=>{this.emitter_.emit("change",t)})}get expanded(){return this.controller.foldable.get("expanded")}set expanded(t){this.controller.foldable.set("expanded",t)}get title(){return this.controller.props.get("title")}set title(t){this.controller.props.set("title",t)}get children(){return this.rackApi_.children}addBinding(t,e,i){return this.rackApi_.addBinding(t,e,i)}addFolder(t){return this.rackApi_.addFolder(t)}addButton(t){return this.rackApi_.addButton(t)}addTab(t){return this.rackApi_.addTab(t)}add(t,e){return this.rackApi_.add(t,e)}remove(t){this.rackApi_.remove(t)}addBlade(t){return this.rackApi_.addBlade(t)}on(t,e){const i=e.bind(this);return this.emitter_.on(t,t=>{i(t)}),this}refresh(){this.rackApi_.refresh()}},ya=$o("cnt"),Pa=class{constructor(t,e){var i;this.className_=$o(null!==(i=e.viewName)&&void 0!==i?i:"fld"),this.element=t.createElement("div"),this.element.classList.add(this.className_(),ya()),e.viewProps.bindClassModifiers(this.element),this.foldable_=e.foldable,this.foldable_.bindExpandedClass(this.element,this.className_(void 0,"expanded")),Uo(this.foldable_,"completed",ia(this.element,this.className_(void 0,"cpl")));const n=t.createElement("button");n.classList.add(this.className_("b")),Uo(e.props,"title",t=>{Er(t)?this.element.classList.add(this.className_(void 0,"not")):this.element.classList.remove(this.className_(void 0,"not"))}),e.viewProps.bindDisabled(n),this.element.appendChild(n),this.buttonElement=n;const s=t.createElement("div");s.classList.add(this.className_("i")),this.element.appendChild(s);const r=t.createElement("div");r.classList.add(this.className_("t")),na(e.props.value("title"),r),this.buttonElement.appendChild(r),this.titleElement=r;const o=t.createElement("div");o.classList.add(this.className_("m")),this.buttonElement.appendChild(o);const a=t.createElement("div");a.classList.add(this.className_("c")),this.element.appendChild(a),this.containerElement=a}},Ea=class extends da{constructor(t,e){var i;const n=_a.create(null===(i=e.expanded)||void 0===i||i),s=new Pa(t,{foldable:n,props:e.props,viewName:e.root?"rot":void 0,viewProps:e.viewProps});super(Object.assign(Object.assign({},e),{rackController:new ga({blade:e.blade,element:s.containerElement,root:e.root,viewProps:e.viewProps}),view:s})),this.onTitleClick_=this.onTitleClick_.bind(this),this.props=e.props,this.foldable=n,xa(this.foldable,this.view.containerElement),this.rackController.rack.emitter.on("add",()=>{this.foldable.cleanUpTransition()}),this.rackController.rack.emitter.on("remove",()=>{this.foldable.cleanUpTransition()}),this.view.buttonElement.addEventListener("click",this.onTitleClick_)}get document(){return this.view.element.ownerDocument}importState(t){return Mo(t,t=>super.importState(t),t=>({expanded:t.required.boolean,title:t.optional.string}),t=>(this.foldable.set("expanded",t.expanded),this.props.set("title",t.title),!0))}exportState(){return So(()=>super.exportState(),{expanded:this.foldable.get("expanded"),title:this.props.get("title")})}onTitleClick_(){this.foldable.set("expanded",!this.foldable.get("expanded"))}};pa({id:"folder",type:"blade",accept(t){const e=Lo(t,t=>({title:t.required.string,view:t.required.constant("folder"),expanded:t.optional.boolean}));return e?{params:e}:null},controller:t=>new Ea(t.document,{blade:t.blade,expanded:t.params.expanded,props:Rr.fromObject({title:t.params.title}),viewProps:t.viewProps}),api:t=>t.controller instanceof Ea?new Ca(t.controller,t.pool):null});var ka=$o("");function Va(t,e){return ia(t,ka(void 0,e))}var La=class t extends Rr{constructor(t){var e,i;super(t),this.onDisabledChange_=this.onDisabledChange_.bind(this),this.onParentChange_=this.onParentChange_.bind(this),this.onParentGlobalDisabledChange_=this.onParentGlobalDisabledChange_.bind(this),[this.globalDisabled_,this.setGlobalDisabled_]=(i=zr(this.getGlobalDisabled_()),[new Tr(i),(t,e)=>{i.setRawValue(t,e)}]),this.value("disabled").emitter.on("change",this.onDisabledChange_),this.value("parent").emitter.on("change",this.onParentChange_),null===(e=this.get("parent"))||void 0===e||e.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_)}static create(e){var i,n,s;const r=null!=e?e:{};return new t(Rr.createCore({disabled:null!==(i=r.disabled)&&void 0!==i&&i,disposed:!1,hidden:null!==(n=r.hidden)&&void 0!==n&&n,parent:null!==(s=r.parent)&&void 0!==s?s:null}))}get globalDisabled(){return this.globalDisabled_}bindClassModifiers(t){Io(this.globalDisabled_,Va(t,"disabled")),Uo(this,"hidden",Va(t,"hidden"))}bindDisabled(t){Io(this.globalDisabled_,e=>{t.disabled=e})}bindTabIndex(t){Io(this.globalDisabled_,e=>{t.tabIndex=e?-1:0})}handleDispose(t){this.value("disposed").emitter.on("change",e=>{e&&t()})}importState(t){this.set("disabled",t.disabled),this.set("hidden",t.hidden)}exportState(){return{disabled:this.get("disabled"),hidden:this.get("hidden")}}getGlobalDisabled_(){const t=this.get("parent");return!!t&&t.globalDisabled.rawValue||this.get("disabled")}updateGlobalDisabled_(){this.setGlobalDisabled_(this.getGlobalDisabled_())}onDisabledChange_(){this.updateGlobalDisabled_()}onParentGlobalDisabledChange_(){this.updateGlobalDisabled_()}onParentChange_(t){var e;const i=t.previousRawValue;null==i||i.globalDisabled.emitter.off("change",this.onParentGlobalDisabledChange_),null===(e=this.get("parent"))||void 0===e||e.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_),this.updateGlobalDisabled_()}},Ma=$o("tbp"),Sa=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Ma()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(Ma("c")),this.element.appendChild(i),this.containerElement=i}},ja=$o("tbi"),Da=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(ja()),e.viewProps.bindClassModifiers(this.element),Uo(e.props,"selected",t=>{t?this.element.classList.add(ja(void 0,"sel")):this.element.classList.remove(ja(void 0,"sel"))});const i=t.createElement("button");i.classList.add(ja("b")),e.viewProps.bindDisabled(i),this.element.appendChild(i),this.buttonElement=i;const n=t.createElement("div");n.classList.add(ja("t")),na(e.props.value("title"),n),this.buttonElement.appendChild(n),this.titleElement=n}},Aa=class{constructor(t,e){this.emitter=new Ar,this.onClick_=this.onClick_.bind(this),this.props=e.props,this.viewProps=e.viewProps,this.view=new Da(t,{props:e.props,viewProps:e.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}},Oa=class extends da{constructor(t,e){const i=new Sa(t,{viewProps:e.viewProps});super(Object.assign(Object.assign({},e),{rackController:new ga({blade:e.blade,element:i.containerElement,viewProps:e.viewProps}),view:i})),this.onItemClick_=this.onItemClick_.bind(this),this.ic_=new Aa(t,{props:e.itemProps,viewProps:La.create()}),this.ic_.emitter.on("click",this.onItemClick_),this.props=e.props,Uo(this.props,"selected",t=>{this.itemController.props.set("selected",t),this.viewProps.set("hidden",!t)})}get itemController(){return this.ic_}importState(t){return Mo(t,t=>super.importState(t),t=>({selected:t.required.boolean,title:t.required.string}),t=>(this.ic_.props.set("selected",t.selected),this.ic_.props.set("title",t.title),!0))}exportState(){return So(()=>super.exportState(),{selected:this.ic_.props.get("selected"),title:this.ic_.props.get("title")})}onItemClick_(){this.props.set("selected",!0)}},Ba=class extends ca{constructor(t,e){super(t,e),this.emitter_=new Ar,this.onSelect_=this.onSelect_.bind(this),this.pool_=e,this.rackApi_.on("change",t=>{this.emitter_.emit("change",t)}),this.controller.tab.selectedIndex.emitter.on("change",this.onSelect_)}get pages(){return this.rackApi_.children}addPage(t){const e=this.controller.view.element.ownerDocument,i=new Oa(e,{blade:wa(),itemProps:Rr.fromObject({selected:!1,title:t.title}),props:Rr.fromObject({selected:!1}),viewProps:La.create()}),n=this.pool_.createApi(i);return this.rackApi_.add(n,t.index)}removePage(t){this.rackApi_.remove(this.rackApi_.children[t])}on(t,e){const i=e.bind(this);return this.emitter_.on(t,t=>{i(t)}),this}onSelect_(t){this.emitter_.emit("select",new yo(this,t.rawValue))}},Ta=class extends ca{get title(){var t;return null!==(t=this.controller.itemController.props.get("title"))&&void 0!==t?t:""}set title(t){this.controller.itemController.props.set("title",t)}get selected(){return this.controller.props.get("selected")}set selected(t){this.controller.props.set("selected",t)}get children(){return this.rackApi_.children}addButton(t){return this.rackApi_.addButton(t)}addFolder(t){return this.rackApi_.addFolder(t)}addTab(t){return this.rackApi_.addTab(t)}add(t,e){this.rackApi_.add(t,e)}remove(t){this.rackApi_.remove(t)}addBinding(t,e,i){return this.rackApi_.addBinding(t,e,i)}addBlade(t){return this.rackApi_.addBlade(t)}refresh(){this.rackApi_.refresh()}},za=class{constructor(){this.onItemSelectedChange_=this.onItemSelectedChange_.bind(this),this.empty=zr(!0),this.selectedIndex=zr(-1),this.items_=[]}add(t,e){const i=null!=e?e:this.items_.length;this.items_.splice(i,0,t),t.emitter.on("change",this.onItemSelectedChange_),this.keepSelection_()}remove(t){const e=this.items_.indexOf(t);e<0||(this.items_.splice(e,1),t.emitter.off("change",this.onItemSelectedChange_),this.keepSelection_())}keepSelection_(){if(0===this.items_.length)return this.selectedIndex.rawValue=-1,void(this.empty.rawValue=!0);const t=this.items_.findIndex(t=>t.rawValue);t<0?(this.items_.forEach((t,e)=>{t.rawValue=0===e}),this.selectedIndex.rawValue=0):(this.items_.forEach((e,i)=>{e.rawValue=i===t}),this.selectedIndex.rawValue=t),this.empty.rawValue=!1}onItemSelectedChange_(t){if(t.rawValue){const e=this.items_.findIndex(e=>e===t.sender);this.items_.forEach((t,i)=>{t.rawValue=i===e}),this.selectedIndex.rawValue=e}else this.keepSelection_()}},Ra=$o("tab"),Na=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Ra(),ya()),e.viewProps.bindClassModifiers(this.element),Io(e.empty,ia(this.element,Ra(void 0,"nop")));const i=t.createElement("div");i.classList.add(Ra("t")),this.element.appendChild(i),this.itemsElement=i;const n=t.createElement("div");n.classList.add(Ra("i")),this.element.appendChild(n);const s=t.createElement("div");s.classList.add(Ra("c")),this.element.appendChild(s),this.contentsElement=s}},Ka=class extends da{constructor(t,e){const i=new za,n=new Na(t,{empty:i.empty,viewProps:e.viewProps});super({blade:e.blade,rackController:new ga({blade:e.blade,element:n.contentsElement,viewProps:e.viewProps}),view:n}),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this);const s=this.rackController.rack;s.emitter.on("add",this.onRackAdd_),s.emitter.on("remove",this.onRackRemove_),this.tab=i}add(t,e){this.rackController.rack.add(t,e)}remove(t){this.rackController.rack.remove(this.rackController.rack.children[t])}onRackAdd_(t){if(!t.root)return;const e=t.bladeController;zo(this.view.itemsElement,e.itemController.view.element,t.index),e.itemController.viewProps.set("parent",this.viewProps),this.tab.add(e.props.value("selected"))}onRackRemove_(t){if(!t.root)return;const e=t.bladeController;Ro(e.itemController.view.element),e.itemController.viewProps.set("parent",null),this.tab.remove(e.props.value("selected"))}};pa({id:"tab",type:"blade",accept(t){const e=Lo(t,t=>({pages:t.required.array(t.required.object({title:t.required.string})),view:t.required.constant("tab")}));return e&&0!==e.pages.length?{params:e}:null},controller(t){const e=new Ka(t.document,{blade:t.blade,viewProps:t.viewProps});return t.params.pages.forEach(i=>{const n=new Oa(t.document,{blade:wa(),itemProps:Rr.fromObject({selected:!1,title:i.title}),props:Rr.fromObject({selected:!1}),viewProps:La.create()});e.add(n)}),e},api:t=>t.controller instanceof Ka?new Ba(t.controller,t.pool):t.controller instanceof Oa?new Ta(t.controller,t.pool):null});var Ia=class extends Po{get options(){return this.controller.valueController.props.get("options")}set options(t){this.controller.valueController.props.set("options",t)}},Ua=class{constructor(){this.disabled=!1,this.emitter=new Ar}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}},Fa=class{constructor(t,e){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=t,this.emitter=new Ar,this.interval_=e,this.setTimer_()}get disabled(){return this.disabled_}set disabled(t){this.disabled_=t,this.disabled_?this.clearTimer_():this.setTimer_()}dispose(){this.clearTimer_()}clearTimer_(){if(null===this.timerId_)return;const t=this.doc_.defaultView;t&&t.clearInterval(this.timerId_),this.timerId_=null}setTimer_(){if(this.clearTimer_(),this.interval_<=0)return;const t=this.doc_.defaultView;t&&(this.timerId_=t.setInterval(this.onTick_,this.interval_))}onTick_(){this.disabled_||this.emitter.emit("tick",{sender:this})}},$a=class{constructor(t){this.constraints=t}constrain(t){return this.constraints.reduce((t,e)=>e.constrain(t),t)}};function qa(t,e){if(t instanceof e)return t;if(t instanceof $a){const i=t.constraints.reduce((t,i)=>t||(i instanceof e?i:null),null);if(i)return i}return null}var Ha=class{constructor(t){this.values=Rr.fromObject({options:t})}constrain(t){const e=this.values.get("options");return 0===e.length||e.filter(e=>e.value===t).length>0?t:e[0].value}};function Ga(t){var e;const i=Vo;return Array.isArray(t)?null===(e=Lo({items:t},t=>({items:t.required.array(t.required.object({text:t.required.string,value:t.required.raw}))})))||void 0===e?void 0:e.items:"object"==typeof t?i.required.raw(t).value:void 0}function Ya(t){if(Array.isArray(t))return t;const e=[];return Object.keys(t).forEach(i=>{e.push({text:i,value:t[i]})}),e}function Xa(t){return Er(t)?null:new Ha(Ya(t))}var Wa=$o("lst"),Qa=class{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.props_=e.props,this.element=t.createElement("div"),this.element.classList.add(Wa()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("select");i.classList.add(Wa("s")),e.viewProps.bindDisabled(i),this.element.appendChild(i),this.selectElement=i;const n=t.createElement("div");n.classList.add(Wa("m")),n.appendChild(To(t,"dropdown")),this.element.appendChild(n),e.value.emitter.on("change",this.onValueChange_),this.value_=e.value,Uo(this.props_,"options",e=>{No(this.selectElement),e.forEach(e=>{const i=t.createElement("option");i.textContent=e.text,this.selectElement.appendChild(i)}),this.update_()})}update_(){const t=this.props_.get("options").map(t=>t.value);this.selectElement.selectedIndex=t.indexOf(this.value_.rawValue)}onValueChange_(){this.update_()}},Ja=class{constructor(t,e){this.onSelectChange_=this.onSelectChange_.bind(this),this.props=e.props,this.value=e.value,this.viewProps=e.viewProps,this.view=new Qa(t,{props:this.props,value:this.value,viewProps:this.viewProps}),this.view.selectElement.addEventListener("change",this.onSelectChange_)}onSelectChange_(t){const e=t.currentTarget;this.value.rawValue=this.props.get("options")[e.selectedIndex].value}importProps(t){return Mo(t,null,t=>({options:t.required.custom(Ga)}),t=>(this.props.set("options",Ya(t.options)),!0))}exportProps(){return So(null,{options:this.props.get("options")})}},Za=$o("pop"),tl=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Za()),e.viewProps.bindClassModifiers(this.element),Io(e.shows,ia(this.element,Za(void 0,"v")))}},el=class{constructor(t,e){this.shows=zr(!1),this.viewProps=e.viewProps,this.view=new tl(t,{shows:this.shows,viewProps:this.viewProps})}},il=$o("txt"),nl=class{constructor(t,e){this.onChange_=this.onChange_.bind(this),this.element=t.createElement("div"),this.element.classList.add(il()),e.viewProps.bindClassModifiers(this.element),this.props_=e.props,this.props_.emitter.on("change",this.onChange_);const i=t.createElement("input");i.classList.add(il("i")),i.type="text",e.viewProps.bindDisabled(i),this.element.appendChild(i),this.inputElement=i,e.value.emitter.on("change",this.onChange_),this.value_=e.value,this.refresh()}refresh(){const t=this.props_.get("formatter");this.inputElement.value=t(this.value_.rawValue)}onChange_(){this.refresh()}},sl=class{constructor(t,e){this.onInputChange_=this.onInputChange_.bind(this),this.parser_=e.parser,this.props=e.props,this.value=e.value,this.viewProps=e.viewProps,this.view=new nl(t,{props:e.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(t){const e=t.currentTarget.value,i=this.parser_(e);Er(i)||(this.value.rawValue=i),this.view.refresh()}};function rl(t){return"false"!==t&&!!t}function ol(t){return function(t){return String(t)}(t)}var al=ro(0);function ll(t){return al(t)+"%"}function pl(t){return String(t)}function hl(t){return t}function cl({primary:t,secondary:e,forward:i,backward:n}){let s=!1;function r(t){s||(s=!0,t(),s=!1)}t.emitter.on("change",n=>{r(()=>{e.setRawValue(i(t.rawValue,e.rawValue),n.options)})}),e.emitter.on("change",s=>{r(()=>{t.setRawValue(n(t.rawValue,e.rawValue),s.options)}),r(()=>{e.setRawValue(i(t.rawValue,e.rawValue),s.options)})}),r(()=>{e.setRawValue(i(t.rawValue,e.rawValue),{forceEmit:!1,last:!0})})}function dl(t,e){const i=t*(e.altKey?.1:1)*(e.shiftKey?10:1);return e.upKey?+i:e.downKey?-i:0}function ul(t){return{altKey:t.altKey,downKey:"ArrowDown"===t.key,shiftKey:t.shiftKey,upKey:"ArrowUp"===t.key}}function vl(t){return{altKey:t.altKey,downKey:"ArrowLeft"===t.key,shiftKey:t.shiftKey,upKey:"ArrowRight"===t.key}}function ml(t){return function(t){return"ArrowUp"===t||"ArrowDown"===t}(t)||"ArrowLeft"===t||"ArrowRight"===t}function bl(t,e){var i,n;const s=e.ownerDocument.defaultView,r=e.getBoundingClientRect();return{x:t.pageX-((null!==(i=s&&s.scrollX)&&void 0!==i?i:0)+r.left),y:t.pageY-((null!==(n=s&&s.scrollY)&&void 0!==n?n:0)+r.top)}}var gl=class{constructor(t){this.lastTouch_=null,this.onDocumentMouseMove_=this.onDocumentMouseMove_.bind(this),this.onDocumentMouseUp_=this.onDocumentMouseUp_.bind(this),this.onMouseDown_=this.onMouseDown_.bind(this),this.onTouchEnd_=this.onTouchEnd_.bind(this),this.onTouchMove_=this.onTouchMove_.bind(this),this.onTouchStart_=this.onTouchStart_.bind(this),this.elem_=t,this.emitter=new Ar,t.addEventListener("touchstart",this.onTouchStart_,{passive:!1}),t.addEventListener("touchmove",this.onTouchMove_,{passive:!0}),t.addEventListener("touchend",this.onTouchEnd_),t.addEventListener("mousedown",this.onMouseDown_)}computePosition_(t){const e=this.elem_.getBoundingClientRect();return{bounds:{width:e.width,height:e.height},point:t?{x:t.x,y:t.y}:null}}onMouseDown_(t){var e;t.preventDefault(),null===(e=t.currentTarget)||void 0===e||e.focus();const i=this.elem_.ownerDocument;i.addEventListener("mousemove",this.onDocumentMouseMove_),i.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:t.altKey,data:this.computePosition_(bl(t,this.elem_)),sender:this,shiftKey:t.shiftKey})}onDocumentMouseMove_(t){this.emitter.emit("move",{altKey:t.altKey,data:this.computePosition_(bl(t,this.elem_)),sender:this,shiftKey:t.shiftKey})}onDocumentMouseUp_(t){const e=this.elem_.ownerDocument;e.removeEventListener("mousemove",this.onDocumentMouseMove_),e.removeEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("up",{altKey:t.altKey,data:this.computePosition_(bl(t,this.elem_)),sender:this,shiftKey:t.shiftKey})}onTouchStart_(t){t.preventDefault();const e=t.targetTouches.item(0),i=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:t.altKey,data:this.computePosition_(e?{x:e.clientX-i.left,y:e.clientY-i.top}:void 0),sender:this,shiftKey:t.shiftKey}),this.lastTouch_=e}onTouchMove_(t){const e=t.targetTouches.item(0),i=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:t.altKey,data:this.computePosition_(e?{x:e.clientX-i.left,y:e.clientY-i.top}:void 0),sender:this,shiftKey:t.shiftKey}),this.lastTouch_=e}onTouchEnd_(t){var e;const i=null!==(e=t.targetTouches.item(0))&&void 0!==e?e:this.lastTouch_,n=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:t.altKey,data:this.computePosition_(i?{x:i.clientX-n.left,y:i.clientY-n.top}:void 0),sender:this,shiftKey:t.shiftKey})}},wl=$o("txt"),_l=class{constructor(t,e){this.onChange_=this.onChange_.bind(this),this.props_=e.props,this.props_.emitter.on("change",this.onChange_),this.element=t.createElement("div"),this.element.classList.add(wl(),wl(void 0,"num")),e.arrayPosition&&this.element.classList.add(wl(void 0,e.arrayPosition)),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("input");i.classList.add(wl("i")),i.type="text",e.viewProps.bindDisabled(i),this.element.appendChild(i),this.inputElement=i,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=e.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add(wl()),this.inputElement.classList.add(wl("i"));const n=t.createElement("div");n.classList.add(wl("k")),this.element.appendChild(n),this.knobElement=n;const s=t.createElementNS(Do,"svg");s.classList.add(wl("g")),this.knobElement.appendChild(s);const r=t.createElementNS(Do,"path");r.classList.add(wl("gb")),s.appendChild(r),this.guideBodyElem_=r;const o=t.createElementNS(Do,"path");o.classList.add(wl("gh")),s.appendChild(o),this.guideHeadElem_=o;const a=t.createElement("div");a.classList.add($o("tt")()),this.knobElement.appendChild(a),this.tooltipElem_=a,e.value.emitter.on("change",this.onChange_),this.value=e.value,this.refresh()}onDraggingChange_(t){if(null===t.rawValue)return void this.element.classList.remove(wl(void 0,"drg"));this.element.classList.add(wl(void 0,"drg"));const e=t.rawValue/this.props_.get("pointerScale"),i=e+(e>0?-1:e<0?1:0),n=lo(-i,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${i+n},0 L${i},4 L${i+n},8`,`M ${e},-1 L${e},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${e},4`);const s=this.props_.get("formatter");this.tooltipElem_.textContent=s(this.value.rawValue),this.tooltipElem_.style.left=`${e}px`}refresh(){const t=this.props_.get("formatter");this.inputElement.value=t(this.value.rawValue)}onChange_(){this.refresh()}},fl=class{constructor(t,e){var i;this.originRawValue_=0,this.onInputChange_=this.onInputChange_.bind(this),this.onInputKeyDown_=this.onInputKeyDown_.bind(this),this.onInputKeyUp_=this.onInputKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.parser_=e.parser,this.props=e.props,this.sliderProps_=null!==(i=e.sliderProps)&&void 0!==i?i:null,this.value=e.value,this.viewProps=e.viewProps,this.dragging_=zr(null),this.view=new _l(t,{arrayPosition:e.arrayPosition,dragging:this.dragging_,props:this.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.inputElement.addEventListener("keydown",this.onInputKeyDown_),this.view.inputElement.addEventListener("keyup",this.onInputKeyUp_);const n=new gl(this.view.knobElement);n.emitter.on("down",this.onPointerDown_),n.emitter.on("move",this.onPointerMove_),n.emitter.on("up",this.onPointerUp_)}constrainValue_(t){var e,i;const n=null===(e=this.sliderProps_)||void 0===e?void 0:e.get("min"),s=null===(i=this.sliderProps_)||void 0===i?void 0:i.get("max");let r=t;return void 0!==n&&(r=Math.max(r,n)),void 0!==s&&(r=Math.min(r,s)),r}onInputChange_(t){const e=t.currentTarget.value,i=this.parser_(e);Er(i)||(this.value.rawValue=this.constrainValue_(i)),this.view.refresh()}onInputKeyDown_(t){const e=dl(this.props.get("keyScale"),ul(t));0!==e&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+e),{forceEmit:!1,last:!1})}onInputKeyUp_(t){0!==dl(this.props.get("keyScale"),ul(t))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}onPointerDown_(){this.originRawValue_=this.value.rawValue,this.dragging_.rawValue=0}computeDraggingValue_(t){if(!t.point)return null;const e=t.point.x-t.bounds.width/2;return this.constrainValue_(this.originRawValue_+e*this.props.get("pointerScale"))}onPointerMove_(t){const e=this.computeDraggingValue_(t.data);null!==e&&(this.value.setRawValue(e,{forceEmit:!1,last:!1}),this.dragging_.rawValue=this.value.rawValue-this.originRawValue_)}onPointerUp_(t){const e=this.computeDraggingValue_(t.data);null!==e&&(this.value.setRawValue(e,{forceEmit:!0,last:!0}),this.dragging_.rawValue=null)}},xl=$o("sld"),Cl=class{constructor(t,e){this.onChange_=this.onChange_.bind(this),this.props_=e.props,this.props_.emitter.on("change",this.onChange_),this.element=t.createElement("div"),this.element.classList.add(xl()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(xl("t")),e.viewProps.bindTabIndex(i),this.element.appendChild(i),this.trackElement=i;const n=t.createElement("div");n.classList.add(xl("k")),this.trackElement.appendChild(n),this.knobElement=n,e.value.emitter.on("change",this.onChange_),this.value=e.value,this.update_()}update_(){const t=lo(oo(this.value.rawValue,this.props_.get("min"),this.props_.get("max"),0,100),0,100);this.knobElement.style.width=`${t}%`}onChange_(){this.update_()}},yl=class{constructor(t,e){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDownOrMove_=this.onPointerDownOrMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.props=e.props,this.view=new Cl(t,{props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new gl(this.view.trackElement),this.ptHandler_.emitter.on("down",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("move",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.trackElement.addEventListener("keydown",this.onKeyDown_),this.view.trackElement.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(t,e){t.point&&this.value.setRawValue(oo(lo(t.point.x,0,t.bounds.width),0,t.bounds.width,this.props.get("min"),this.props.get("max")),e)}onPointerDownOrMove_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerUp_(t){this.handlePointerEvent_(t.data,{forceEmit:!0,last:!0})}onKeyDown_(t){const e=dl(this.props.get("keyScale"),vl(t));0!==e&&this.value.setRawValue(this.value.rawValue+e,{forceEmit:!1,last:!1})}onKeyUp_(t){0!==dl(this.props.get("keyScale"),vl(t))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}},Pl=$o("sldtxt"),El=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Pl());const i=t.createElement("div");i.classList.add(Pl("s")),this.sliderView_=e.sliderView,i.appendChild(this.sliderView_.element),this.element.appendChild(i);const n=t.createElement("div");n.classList.add(Pl("t")),this.textView_=e.textView,n.appendChild(this.textView_.element),this.element.appendChild(n)}},kl=class{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.sliderC_=new yl(t,{props:e.sliderProps,value:e.value,viewProps:this.viewProps}),this.textC_=new fl(t,{parser:e.parser,props:e.textProps,sliderProps:e.sliderProps,value:e.value,viewProps:e.viewProps}),this.view=new El(t,{sliderView:this.sliderC_.view,textView:this.textC_.view})}get sliderController(){return this.sliderC_}get textController(){return this.textC_}importProps(t){return Mo(t,null,t=>({max:t.required.number,min:t.required.number}),t=>{const e=this.sliderC_.props;return e.set("max",t.max),e.set("min",t.min),!0})}exportProps(){const t=this.sliderC_.props;return So(null,{max:t.get("max"),min:t.get("min")})}},Vl={containerUnitSize:"cnt-usz"};function Ll(t){return`--${Vl[t]}`}var Ml=class{constructor(t,e){const i=$o(e.viewName);this.element=t.createElement("div"),this.element.classList.add(i()),e.viewProps.bindClassModifiers(this.element)}};function Sl(t){return go(t)}function jl(t){if(Vr(t))return Lo(t,Sl)}function Dl(t,e){if(!t)return;const i=[],n=vo(t,e);n&&i.push(n);const s=mo(t);return s&&i.push(s),new $a(i)}function Al(t){if("inline"===t||"popup"===t)return t}function Ol(t,e){t.write(e)}var Bl=$o("ckb"),Tl=class{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.element=t.createElement("div"),this.element.classList.add(Bl()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("label");i.classList.add(Bl("l")),this.element.appendChild(i);const n=t.createElement("input");n.classList.add(Bl("i")),n.type="checkbox",i.appendChild(n),this.inputElement=n,e.viewProps.bindDisabled(this.inputElement);const s=t.createElement("div");s.classList.add(Bl("w")),i.appendChild(s);const r=To(t,"check");s.appendChild(r),e.value.emitter.on("change",this.onValueChange_),this.value=e.value,this.update_()}update_(){this.inputElement.checked=this.value.rawValue}onValueChange_(){this.update_()}},zl=class{constructor(t,e){this.onInputChange_=this.onInputChange_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.view=new Tl(t,{value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(t){const e=t.currentTarget;this.value.rawValue=e.checked}};pa({id:"input-bool",type:"input",accept:(t,e)=>{if("boolean"!=typeof t)return null;const i=Lo(e,t=>({options:t.optional.custom(Ga),readonly:t.optional.constant(!1)}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>rl,constraint:t=>function(t){const e=[],i=Xa(t.options);return i&&e.push(i),new $a(e)}(t.params),writer:t=>Ol},controller:t=>{const e=t.document,i=t.value,n=t.constraint,s=n&&qa(n,Ha);return s?new Ja(e,{props:new Rr({options:s.values.value("options")}),value:i,viewProps:t.viewProps}):new zl(e,{value:i,viewProps:t.viewProps})},api:t=>"boolean"!=typeof t.controller.value.rawValue?null:t.controller.valueController instanceof Ja?new Ia(t.controller):null});var Rl=$o("col"),Nl=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Rl()),e.foldable.bindExpandedClass(this.element,Rl(void 0,"expanded")),Uo(e.foldable,"completed",ia(this.element,Rl(void 0,"cpl")));const i=t.createElement("div");i.classList.add(Rl("h")),this.element.appendChild(i);const n=t.createElement("div");n.classList.add(Rl("s")),i.appendChild(n),this.swatchElement=n;const s=t.createElement("div");if(s.classList.add(Rl("t")),i.appendChild(s),this.textElement=s,"inline"===e.pickerLayout){const e=t.createElement("div");e.classList.add(Rl("p")),this.element.appendChild(e),this.pickerElement=e}else this.pickerElement=null}};function Kl(t,e,i){const n=po(t,360),s=lo(e/100,0,1),r=lo(i/100,0,1),o=r*s,a=o*(1-Math.abs(n/60%2-1)),l=r-o;let p,h,c;return[p,h,c]=n>=0&&n<60?[o,a,0]:n>=60&&n<120?[a,o,0]:n>=120&&n<180?[0,o,a]:n>=180&&n<240?[0,a,o]:n>=240&&n<300?[a,0,o]:[o,0,a],[255*(p+l),255*(h+l),255*(c+l)]}function Il(t){return[t[0],t[1],t[2]]}function Ul(t,e){return[t[0],t[1],t[2],e]}var Fl={hsl:{hsl:(t,e,i)=>[t,e,i],hsv:function(t,e,i){const n=i+e*(100-Math.abs(2*i-100))/200;return[t,0!==n?e*(100-Math.abs(2*i-100))/n:0,i+e*(100-Math.abs(2*i-100))/200]},rgb:function(t,e,i){const n=(t%360+360)%360,s=lo(e/100,0,1),r=lo(i/100,0,1),o=(1-Math.abs(2*r-1))*s,a=o*(1-Math.abs(n/60%2-1)),l=r-o/2;let p,h,c;return[p,h,c]=n>=0&&n<60?[o,a,0]:n>=60&&n<120?[a,o,0]:n>=120&&n<180?[0,o,a]:n>=180&&n<240?[0,a,o]:n>=240&&n<300?[a,0,o]:[o,0,a],[255*(p+l),255*(h+l),255*(c+l)]}},hsv:{hsl:function(t,e,i){const n=100-Math.abs(i*(200-e)/100-100);return[t,0!==n?e*i/n:0,i*(200-e)/200]},hsv:(t,e,i)=>[t,e,i],rgb:Kl},rgb:{hsl:function(t,e,i){const n=lo(t/255,0,1),s=lo(e/255,0,1),r=lo(i/255,0,1),o=Math.max(n,s,r),a=Math.min(n,s,r),l=o-a;let p=0,h=0;const c=(a+o)/2;return 0!==l&&(h=l/(1-Math.abs(o+a-1)),p=n===o?(s-r)/l:s===o?2+(r-n)/l:4+(n-s)/l,p=p/6+(p<0?1:0)),[360*p,100*h,100*c]},hsv:function(t,e,i){const n=lo(t/255,0,1),s=lo(e/255,0,1),r=lo(i/255,0,1),o=Math.max(n,s,r),a=o-Math.min(n,s,r);let l;return l=0===a?0:o===n?((s-r)/a%6+6)%6*60:o===s?60*((r-n)/a+2):60*((n-s)/a+4),[l,100*(0===o?0:a/o),100*o]},rgb:(t,e,i)=>[t,e,i]}};function $l(t,e){return["float"===e?1:"rgb"===t?255:360,"float"===e?1:"rgb"===t?255:100,"float"===e?1:"rgb"===t?255:100]}function ql(t,e,i){var n;const s=$l(e,i);return["rgb"===e?lo(t[0],0,s[0]):(r=t[0],o=s[0],r===o?o:po(r,o)),lo(t[1],0,s[1]),lo(t[2],0,s[2]),lo(null!==(n=t[3])&&void 0!==n?n:1,0,1)];var r,o}function Hl(t,e,i,n){const s=$l(e,i),r=$l(e,n);return t.map((t,e)=>t/s[e]*r[e])}function Gl(t,e,i){const n=Hl(t,e.mode,e.type,"int");return Hl(Fl[e.mode][i.mode](...n),i.mode,"int",i.type)}var Yl=class t{static black(){return new t([0,0,0],"rgb")}constructor(t,e){this.type="int",this.mode=e,this.comps_=ql(t,e,this.type)}getComponents(t){return Ul(Gl(Il(this.comps_),{mode:this.mode,type:this.type},{mode:null!=t?t:this.mode,type:this.type}),this.comps_[3])}toRgbaObject(){const t=this.getComponents("rgb");return{r:t[0],g:t[1],b:t[2],a:t[3]}}},Xl=$o("colp"),Wl=class{constructor(t,e){this.alphaViews_=null,this.element=t.createElement("div"),this.element.classList.add(Xl()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(Xl("hsv"));const n=t.createElement("div");n.classList.add(Xl("sv")),this.svPaletteView_=e.svPaletteView,n.appendChild(this.svPaletteView_.element),i.appendChild(n);const s=t.createElement("div");s.classList.add(Xl("h")),this.hPaletteView_=e.hPaletteView,s.appendChild(this.hPaletteView_.element),i.appendChild(s),this.element.appendChild(i);const r=t.createElement("div");if(r.classList.add(Xl("rgb")),this.textsView_=e.textsView,r.appendChild(this.textsView_.element),this.element.appendChild(r),e.alphaViews){this.alphaViews_={palette:e.alphaViews.palette,text:e.alphaViews.text};const i=t.createElement("div");i.classList.add(Xl("a"));const n=t.createElement("div");n.classList.add(Xl("ap")),n.appendChild(this.alphaViews_.palette.element),i.appendChild(n);const s=t.createElement("div");s.classList.add(Xl("at")),s.appendChild(this.alphaViews_.text.element),i.appendChild(s),this.element.appendChild(i)}}get allFocusableElements(){const t=[this.svPaletteView_.element,this.hPaletteView_.element,this.textsView_.modeSelectElement,...this.textsView_.inputViews.map(t=>t.inputElement)];return this.alphaViews_&&t.push(this.alphaViews_.palette.element,this.alphaViews_.text.inputElement),t}};function Ql(t){return"int"===t?"int":"float"===t?"float":void 0}function Jl(t){return Lo(t,t=>({color:t.optional.object({alpha:t.optional.boolean,type:t.optional.custom(Ql)}),expanded:t.optional.boolean,picker:t.optional.custom(Al),readonly:t.optional.constant(!1)}))}function Zl(t){return t?.1:1}function tp(t){var e;return null===(e=t.color)||void 0===e?void 0:e.type}var ep=class{constructor(t,e){this.type="float",this.mode=e,this.comps_=ql(t,e,this.type)}getComponents(t){return Ul(Gl(Il(this.comps_),{mode:this.mode,type:this.type},{mode:null!=t?t:this.mode,type:this.type}),this.comps_[3])}toRgbaObject(){const t=this.getComponents("rgb");return{r:t[0],g:t[1],b:t[2],a:t[3]}}},ip={int:(t,e)=>new Yl(t,e),float:(t,e)=>new ep(t,e)};function np(t,e,i){return ip[i](t,e)}function sp(t,e){if(t.type===e)return t;if(function(t){return"int"===t.type}(t)&&"float"===e)return function(t){const e=t.getComponents(),i=$l(t.mode,"int");return new ep([oo(e[0],0,i[0],0,1),oo(e[1],0,i[1],0,1),oo(e[2],0,i[2],0,1),e[3]],t.mode)}(t);if(function(t){return"float"===t.type}(t)&&"int"===e)return function(t){const e=t.getComponents(),i=$l(t.mode,"int");return new Yl([Math.round(oo(e[0],0,1,0,i[0])),Math.round(oo(e[1],0,1,0,i[1])),Math.round(oo(e[2],0,1,0,i[2])),e[3]],t.mode)}(t);throw jr.shouldNeverHappen()}function rp(t,e){const i=t.match(/^(.+)%$/);return i?Math.min(.01*parseFloat(i[1])*e,e):Math.min(parseFloat(t),e)}var op={deg:t=>t,grad:t=>360*t/400,rad:t=>360*t/(2*Math.PI),turn:t=>360*t};function ap(t){const e=t.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);if(!e)return parseFloat(t);const i=parseFloat(e[1]);return op[e[2]](i)}function lp(t){const e=t.match(/^rgb\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const i=[rp(e[1],255),rp(e[2],255),rp(e[3],255)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])?null:i}function pp(t){const e=lp(t);return e?new Yl(e,"rgb"):null}function hp(t){const e=t.match(/^rgba\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const i=[rp(e[1],255),rp(e[2],255),rp(e[3],255),rp(e[4],1)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])||isNaN(i[3])?null:i}function cp(t){const e=hp(t);return e?new Yl(e,"rgb"):null}function dp(t){const e=t.match(/^hsl\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const i=[ap(e[1]),rp(e[2],100),rp(e[3],100)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])?null:i}function up(t){const e=dp(t);return e?new Yl(e,"hsl"):null}function vp(t){const e=t.match(/^hsla\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const i=[ap(e[1]),rp(e[2],100),rp(e[3],100),rp(e[4],1)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])||isNaN(i[3])?null:i}function mp(t){const e=vp(t);return e?new Yl(e,"hsl"):null}function bp(t){const e=t.match(/^#([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(e)return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)];const i=t.match(/^(?:#|0x)([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return i?[parseInt(i[1],16),parseInt(i[2],16),parseInt(i[3],16)]:null}function gp(t){const e=bp(t);return e?new Yl(e,"rgb"):null}function wp(t){const e=t.match(/^#?([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(e)return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16),oo(parseInt(e[4]+e[4],16),0,255,0,1)];const i=t.match(/^(?:#|0x)?([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return i?[parseInt(i[1],16),parseInt(i[2],16),parseInt(i[3],16),oo(parseInt(i[4],16),0,255,0,1)]:null}function _p(t){const e=wp(t);return e?new Yl(e,"rgb"):null}function fp(t){const e=t.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!e)return null;const i=[parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3])];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])?null:i}function xp(t){return e=>{const i=fp(e);return i?np(i,"rgb",t):null}}function Cp(t){const e=t.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*a\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!e)return null;const i=[parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3]),parseFloat(e[4])];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])||isNaN(i[3])?null:i}function yp(t){return e=>{const i=Cp(e);return i?np(i,"rgb",t):null}}var Pp=[{parser:bp,result:{alpha:!1,mode:"rgb",notation:"hex"}},{parser:wp,result:{alpha:!0,mode:"rgb",notation:"hex"}},{parser:lp,result:{alpha:!1,mode:"rgb",notation:"func"}},{parser:hp,result:{alpha:!0,mode:"rgb",notation:"func"}},{parser:dp,result:{alpha:!1,mode:"hsl",notation:"func"}},{parser:vp,result:{alpha:!0,mode:"hsl",notation:"func"}},{parser:fp,result:{alpha:!1,mode:"rgb",notation:"object"}},{parser:Cp,result:{alpha:!0,mode:"rgb",notation:"object"}}];function Ep(t){const e=[gp,_p,pp,cp,up,mp];"int"===t&&e.push(xp("int"),yp("int")),"float"===t&&e.push(xp("float"),yp("float"));const i=function(t){return e=>t.reduce((t,i)=>null!==t?t:i(e),null)}(e);return e=>{const n=i(e);return n?sp(n,t):null}}function kp(t){const e=Ep("int");if("string"!=typeof t)return Yl.black();const i=e(t);return null!=i?i:Yl.black()}function Vp(t){const e=lo(Math.floor(t),0,255).toString(16);return 1===e.length?`0${e}`:e}function Lp(t,e="#"){return`${e}${Il(t.getComponents("rgb")).map(Vp).join("")}`}function Mp(t,e="#"){const i=t.getComponents("rgb");return`${e}${[i[0],i[1],i[2],255*i[3]].map(Vp).join("")}`}function Sp(t){const e=ro(0);return`rgb(${Il(sp(t,"int").getComponents("rgb")).map(t=>e(t)).join(", ")})`}function jp(t){const e=ro(2),i=ro(0);return`rgba(${sp(t,"int").getComponents("rgb").map((t,n)=>(3===n?e:i)(t)).join(", ")})`}function Dp(t,e){const i=ro("float"===e?2:0),n=["r","g","b"];return`{${Il(sp(t,e).getComponents("rgb")).map((t,e)=>`${n[e]}: ${i(t)}`).join(", ")}}`}function Ap(t){return e=>Dp(e,t)}function Op(t,e){const i=ro(2),n=ro("float"===e?2:0),s=["r","g","b","a"];return`{${sp(t,e).getComponents("rgb").map((t,e)=>`${s[e]}: ${(3===e?i:n)(t)}`).join(", ")}}`}function Bp(t){return e=>Op(e,t)}var Tp=[{format:{alpha:!1,mode:"rgb",notation:"hex",type:"int"},stringifier:Lp},{format:{alpha:!0,mode:"rgb",notation:"hex",type:"int"},stringifier:Mp},{format:{alpha:!1,mode:"rgb",notation:"func",type:"int"},stringifier:Sp},{format:{alpha:!0,mode:"rgb",notation:"func",type:"int"},stringifier:jp},{format:{alpha:!1,mode:"hsl",notation:"func",type:"int"},stringifier:function(t){const e=[ro(0),ll,ll];return`hsl(${Il(sp(t,"int").getComponents("hsl")).map((t,i)=>e[i](t)).join(", ")})`}},{format:{alpha:!0,mode:"hsl",notation:"func",type:"int"},stringifier:function(t){const e=[ro(0),ll,ll,ro(2)];return`hsla(${sp(t,"int").getComponents("hsl").map((t,i)=>e[i](t)).join(", ")})`}},...["int","float"].reduce((t,e)=>[...t,{format:{alpha:!1,mode:"rgb",notation:"object",type:e},stringifier:Ap(e)},{format:{alpha:!0,mode:"rgb",notation:"object",type:e},stringifier:Bp(e)}],[])];function zp(t){return Tp.reduce((e,i)=>{return e||(n=i.format,s=t,n.alpha===s.alpha&&n.mode===s.mode&&n.notation===s.notation&&n.type===s.type?i.stringifier:null);var n,s},null)}var Rp=$o("apl"),Np=class{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.value=e.value,this.value.emitter.on("change",this.onValueChange_),this.element=t.createElement("div"),this.element.classList.add(Rp()),e.viewProps.bindClassModifiers(this.element),e.viewProps.bindTabIndex(this.element);const i=t.createElement("div");i.classList.add(Rp("b")),this.element.appendChild(i);const n=t.createElement("div");n.classList.add(Rp("c")),i.appendChild(n),this.colorElem_=n;const s=t.createElement("div");s.classList.add(Rp("m")),this.element.appendChild(s),this.markerElem_=s;const r=t.createElement("div");r.classList.add(Rp("p")),this.markerElem_.appendChild(r),this.previewElem_=r,this.update_()}update_(){const t=this.value.rawValue,e=t.getComponents("rgb"),i=new Yl([e[0],e[1],e[2],0],"rgb"),n=new Yl([e[0],e[1],e[2],255],"rgb"),s=["to right",jp(i),jp(n)];this.colorElem_.style.background=`linear-gradient(${s.join(",")})`,this.previewElem_.style.backgroundColor=jp(t);const r=oo(e[3],0,1,0,100);this.markerElem_.style.left=`${r}%`}onValueChange_(){this.update_()}},Kp=class{constructor(t,e){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.view=new Np(t,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new gl(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(t,e){if(!t.point)return;const i=t.point.x/t.bounds.width,[n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new Yl([n,s,r,i],"hsv"),e)}onPointerDown_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerMove_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerUp_(t){this.handlePointerEvent_(t.data,{forceEmit:!0,last:!0})}onKeyDown_(t){const e=dl(Zl(!0),vl(t));if(0===e)return;const[i,n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new Yl([i,n,s,r+e],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(t){0!==dl(Zl(!0),vl(t))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}},Ip=$o("coltxt"),Up=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Ip()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(Ip("m")),this.modeElem_=function(t){const e=t.createElement("select");return e.appendChild([{text:"RGB",value:"rgb"},{text:"HSL",value:"hsl"},{text:"HSV",value:"hsv"},{text:"HEX",value:"hex"}].reduce((e,i)=>{const n=t.createElement("option");return n.textContent=i.text,n.value=i.value,e.appendChild(n),e},t.createDocumentFragment())),e}(t),this.modeElem_.classList.add(Ip("ms")),i.appendChild(this.modeSelectElement),e.viewProps.bindDisabled(this.modeElem_);const n=t.createElement("div");n.classList.add(Ip("mm")),n.appendChild(To(t,"dropdown")),i.appendChild(n),this.element.appendChild(i);const s=t.createElement("div");s.classList.add(Ip("w")),this.element.appendChild(s),this.inputsElem_=s,this.inputViews_=e.inputViews,this.applyInputViews_(),Io(e.mode,t=>{this.modeElem_.value=t})}get modeSelectElement(){return this.modeElem_}get inputViews(){return this.inputViews_}set inputViews(t){this.inputViews_=t,this.applyInputViews_()}applyInputViews_(){No(this.inputsElem_);const t=this.element.ownerDocument;this.inputViews_.forEach(e=>{const i=t.createElement("div");i.classList.add(Ip("c")),i.appendChild(e.element),this.inputsElem_.appendChild(i)})}};function Fp(t,e,i){const n=$l(t,e)[i];return new Nr({min:0,max:n})}var $p=class{constructor(t,e){this.onModeSelectChange_=this.onModeSelectChange_.bind(this),this.colorType_=e.colorType,this.value=e.value,this.viewProps=e.viewProps,this.colorMode=zr(this.value.rawValue.mode),this.ccs_=this.createComponentControllers_(t),this.view=new Up(t,{mode:this.colorMode,inputViews:[this.ccs_[0].view,this.ccs_[1].view,this.ccs_[2].view],viewProps:this.viewProps}),this.view.modeSelectElement.addEventListener("change",this.onModeSelectChange_)}createComponentControllers_(t){const e=this.colorMode.rawValue;return function(t){return"hex"!==t}(e)?function(t,e){const i={colorMode:e.colorMode,colorType:e.colorType,parser:no,viewProps:e.viewProps};return[0,1,2].map(n=>{const s=function(t,e,i){return new fl(t,{arrayPosition:0===i?"fst":2===i?"lst":"mid",parser:e.parser,props:Rr.fromObject({formatter:(n=e.colorType,ro("float"===n?2:0)),keyScale:Zl(!1),pointerScale:"float"===e.colorType?.01:1}),value:zr(0,{constraint:Fp(e.colorMode,e.colorType,i)}),viewProps:e.viewProps});var n}(t,i,n);return cl({primary:e.value,secondary:s.value,forward:t=>sp(t,e.colorType).getComponents(e.colorMode)[n],backward(t,i){const s=e.colorMode,r=sp(t,e.colorType).getComponents(s);return r[n]=i,sp(np(Ul(Il(r),r[3]),s,e.colorType),"int")}}),s})}(t,{colorMode:e,colorType:this.colorType_,value:this.value,viewProps:this.viewProps}):function(t,e){const i=new sl(t,{parser:Ep("int"),props:Rr.fromObject({formatter:Lp}),value:zr(Yl.black()),viewProps:e.viewProps});return cl({primary:e.value,secondary:i.value,forward:t=>new Yl(Il(t.getComponents()),t.mode),backward:(t,e)=>new Yl(Ul(Il(e.getComponents(t.mode)),t.getComponents()[3]),t.mode)}),[i]}(t,{value:this.value,viewProps:this.viewProps})}onModeSelectChange_(t){const e=t.currentTarget;this.colorMode.rawValue=e.value,this.ccs_=this.createComponentControllers_(this.view.element.ownerDocument),this.view.inputViews=this.ccs_.map(t=>t.view)}},qp=$o("hpl"),Hp=class{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.value=e.value,this.value.emitter.on("change",this.onValueChange_),this.element=t.createElement("div"),this.element.classList.add(qp()),e.viewProps.bindClassModifiers(this.element),e.viewProps.bindTabIndex(this.element);const i=t.createElement("div");i.classList.add(qp("c")),this.element.appendChild(i);const n=t.createElement("div");n.classList.add(qp("m")),this.element.appendChild(n),this.markerElem_=n,this.update_()}update_(){const[t]=this.value.rawValue.getComponents("hsv");this.markerElem_.style.backgroundColor=Sp(new Yl([t,100,100],"hsv"));const e=oo(t,0,360,0,100);this.markerElem_.style.left=`${e}%`}onValueChange_(){this.update_()}},Gp=class{constructor(t,e){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.view=new Hp(t,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new gl(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(t,e){if(!t.point)return;const i=oo(lo(t.point.x,0,t.bounds.width),0,t.bounds.width,0,360),[,n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new Yl([i,n,s,r],"hsv"),e)}onPointerDown_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerMove_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerUp_(t){this.handlePointerEvent_(t.data,{forceEmit:!0,last:!0})}onKeyDown_(t){const e=dl(Zl(!1),vl(t));if(0===e)return;const[i,n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new Yl([i+e,n,s,r],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(t){0!==dl(Zl(!1),vl(t))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}},Yp=$o("svp"),Xp=class{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.value=e.value,this.value.emitter.on("change",this.onValueChange_),this.element=t.createElement("div"),this.element.classList.add(Yp()),e.viewProps.bindClassModifiers(this.element),e.viewProps.bindTabIndex(this.element);const i=t.createElement("canvas");i.height=64,i.width=64,i.classList.add(Yp("c")),this.element.appendChild(i),this.canvasElement=i;const n=t.createElement("div");n.classList.add(Yp("m")),this.element.appendChild(n),this.markerElem_=n,this.update_()}update_(){const t=function(t){const e=t.ownerDocument.defaultView;return e&&"document"in e?t.getContext("2d",{willReadFrequently:!0}):null}(this.canvasElement);if(!t)return;const e=this.value.rawValue.getComponents("hsv"),i=this.canvasElement.width,n=this.canvasElement.height,s=t.getImageData(0,0,i,n),r=s.data;for(let l=0;lt.getComponents()[3],backward:(t,e)=>{const i=t.getComponents();return i[3]=e,new Yl(i,t.mode)}}),this.textsC_=new $p(t,{colorType:e.colorType,value:this.value,viewProps:this.viewProps}),this.view=new Wl(t,{alphaViews:this.alphaIcs_?{palette:this.alphaIcs_.palette.view,text:this.alphaIcs_.text.view}:null,hPaletteView:this.hPaletteC_.view,supportsAlpha:e.supportsAlpha,svPaletteView:this.svPaletteC_.view,textsView:this.textsC_.view,viewProps:this.viewProps})}get textsController(){return this.textsC_}},Jp=$o("colsw"),Zp=class{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),e.value.emitter.on("change",this.onValueChange_),this.value=e.value,this.element=t.createElement("div"),this.element.classList.add(Jp()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(Jp("sw")),this.element.appendChild(i),this.swatchElem_=i;const n=t.createElement("button");n.classList.add(Jp("b")),e.viewProps.bindDisabled(n),this.element.appendChild(n),this.buttonElement=n,this.update_()}update_(){const t=this.value.rawValue;this.swatchElem_.style.backgroundColor=Mp(t)}onValueChange_(){this.update_()}},th=class{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.view=new Zp(t,{value:this.value,viewProps:this.viewProps})}},eh=class{constructor(t,e){this.onButtonBlur_=this.onButtonBlur_.bind(this),this.onButtonClick_=this.onButtonClick_.bind(this),this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.foldable_=_a.create(e.expanded),this.swatchC_=new th(t,{value:this.value,viewProps:this.viewProps});const i=this.swatchC_.view.buttonElement;i.addEventListener("blur",this.onButtonBlur_),i.addEventListener("click",this.onButtonClick_),this.textC_=new sl(t,{parser:e.parser,props:Rr.fromObject({formatter:e.formatter}),value:this.value,viewProps:this.viewProps}),this.view=new Nl(t,{foldable:this.foldable_,pickerLayout:e.pickerLayout}),this.view.swatchElement.appendChild(this.swatchC_.view.element),this.view.textElement.appendChild(this.textC_.view.element),this.popC_="popup"===e.pickerLayout?new el(t,{viewProps:this.viewProps}):null;const n=new Qp(t,{colorType:e.colorType,supportsAlpha:e.supportsAlpha,value:this.value,viewProps:this.viewProps});n.view.allFocusableElements.forEach(t=>{t.addEventListener("blur",this.onPopupChildBlur_),t.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=n,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(n.view.element),cl({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:t=>t,backward:(t,e)=>e})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),xa(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onButtonBlur_(t){if(!this.popC_)return;const e=this.view.element,i=t.relatedTarget;i&&e.contains(i)||(this.popC_.shows.rawValue=!1)}onButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(t){if(!this.popC_)return;const e=this.popC_.view.element,i=Ko(t);i&&e.contains(i)||i&&i===this.swatchC_.view.buttonElement&&!Oo(e.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(t){this.popC_?"Escape"===t.key&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&"Escape"===t.key&&this.swatchC_.view.buttonElement.focus()}};function ih(t){return Il(t.getComponents("rgb")).reduce((t,e)=>t<<8|255&Math.floor(e),0)}function nh(t){return t.getComponents("rgb").reduce((t,e,i)=>t<<8|255&Math.floor(3===i?255*e:e),0)>>>0}function sh(t){return"number"!=typeof t?Yl.black():new Yl([(e=t)>>16&255,e>>8&255,255&e],"rgb");var e}function rh(t){return"number"!=typeof t?Yl.black():new Yl([(e=t)>>24&255,e>>16&255,e>>8&255,oo(255&e,0,255,0,1)],"rgb");var e}function oh(t,e){return"object"==typeof t&&!Er(t)&&e in t&&"number"==typeof t[e]}function ah(t){return oh(t,"r")&&oh(t,"g")&&oh(t,"b")}function lh(t){return ah(t)&&oh(t,"a")}function ph(t){return ah(t)}function hh(t,e){if(t.mode!==e.mode)return!1;if(t.type!==e.type)return!1;const i=t.getComponents(),n=e.getComponents();for(let s=0;st?Op(i,e):Dp(i,e)}pa({id:"input-color-number",type:"input",accept:(t,e)=>{if("number"!=typeof t)return null;if(!function(t){return"color"in t||"color"===t.view}(e))return null;const i=Jl(e);return i?{initialValue:t,params:Object.assign(Object.assign({},i),{supportsAlpha:(n=e,!!(null===(s=null==n?void 0:n.color)||void 0===s?void 0:s.alpha))})}:null;var n,s},binding:{reader:t=>t.params.supportsAlpha?rh:sh,equals:hh,writer:t=>function(t){const e=t?nh:ih;return(t,i)=>{Ol(t,e(i))}}(t.params.supportsAlpha)},controller:t=>{var e,i,n;return new eh(t.document,{colorType:"int",expanded:null!==(e=t.params.expanded)&&void 0!==e&&e,formatter:(n=t.params.supportsAlpha,n?t=>Mp(t,"0x"):t=>Lp(t,"0x")),parser:Ep("int"),pickerLayout:null!==(i=t.params.picker)&&void 0!==i?i:"popup",supportsAlpha:t.params.supportsAlpha,value:t.value,viewProps:t.viewProps})}}),pa({id:"input-color-object",type:"input",accept:(t,e)=>{var i;if(!ph(t))return null;const n=Jl(e);return n?{initialValue:t,params:Object.assign(Object.assign({},n),{colorType:null!==(i=tp(e))&&void 0!==i?i:"int"})}:null},binding:{reader:t=>{return e=t.params.colorType,t=>sp(function(t,e){return ph(t)?"int"===e?new Yl(ch(t),"rgb"):"float"===e?new ep(ch(t),"rgb"):sp(Yl.black(),"int"):sp(Yl.black(),e)}(t,e),"int");var e},equals:hh,writer:t=>{return e=lh(t.initialValue),i=t.params.colorType,(t,n)=>{e?function(t,e,i){const n=sp(e,i).toRgbaObject();t.writeProperty("r",n.r),t.writeProperty("g",n.g),t.writeProperty("b",n.b),t.writeProperty("a",n.a)}(t,n,i):function(t,e,i){const n=sp(e,i).toRgbaObject();t.writeProperty("r",n.r),t.writeProperty("g",n.g),t.writeProperty("b",n.b)}(t,n,i)};var e,i}},controller:t=>{var e,i;const n=lh(t.initialValue);return new eh(t.document,{colorType:t.params.colorType,expanded:null!==(e=t.params.expanded)&&void 0!==e&&e,formatter:dh(n,t.params.colorType),parser:Ep("int"),pickerLayout:null!==(i=t.params.picker)&&void 0!==i?i:"popup",supportsAlpha:n,value:t.value,viewProps:t.viewProps})}}),pa({id:"input-color-string",type:"input",accept:(t,e)=>{if("string"!=typeof t)return null;if("text"===e.view)return null;const i=function(t,e="int"){const i=function(t){return Pp.reduce((e,{parser:i,result:n})=>e||(i(t)?n:null),null)}(t);return i?"hex"===i.notation&&"float"!==e?Object.assign(Object.assign({},i),{type:"int"}):"func"===i.notation?Object.assign(Object.assign({},i),{type:e}):null:null}(t,tp(e));if(!i)return null;const n=zp(i);if(!n)return null;const s=Jl(e);return s?{initialValue:t,params:Object.assign(Object.assign({},s),{format:i,stringifier:n})}:null},binding:{reader:()=>kp,equals:hh,writer:t=>{const e=function(t){const e=zp(t);return e?(t,i)=>{Ol(t,e(i))}:null}(t.params.format);if(!e)throw jr.notBindable();return e}},controller:t=>{var e,i;return new eh(t.document,{colorType:t.params.format.type,expanded:null!==(e=t.params.expanded)&&void 0!==e&&e,formatter:t.params.stringifier,parser:Ep("int"),pickerLayout:null!==(i=t.params.picker)&&void 0!==i?i:"popup",supportsAlpha:t.params.format.alpha,value:t.value,viewProps:t.viewProps})}});var uh=class{constructor(t){this.components=t.components,this.asm_=t.assembly}constrain(t){const e=this.asm_.toComponents(t).map((t,e)=>{var i,n;return null!==(n=null===(i=this.components[e])||void 0===i?void 0:i.constrain(t))&&void 0!==n?n:t});return this.asm_.fromComponents(e)}},vh=$o("pndtxt"),mh=class{constructor(t,e){this.textViews=e.textViews,this.element=t.createElement("div"),this.element.classList.add(vh()),this.textViews.forEach(e=>{const i=t.createElement("div");i.classList.add(vh("a")),i.appendChild(e.element),this.element.appendChild(i)})}},bh=class{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.acs_=e.axes.map((i,n)=>function(t,e,i){return new fl(t,{arrayPosition:0===i?"fst":i===e.axes.length-1?"lst":"mid",parser:e.parser,props:e.axes[i].textProps,value:zr(0,{constraint:e.axes[i].constraint}),viewProps:e.viewProps})}(t,e,n)),this.acs_.forEach((t,i)=>{cl({primary:this.value,secondary:t.value,forward:t=>e.assembly.toComponents(t)[i],backward:(t,n)=>{const s=e.assembly.toComponents(t);return s[i]=n,e.assembly.fromComponents(s)}})}),this.view=new mh(t,{textViews:this.acs_.map(t=>t.view)})}get textControllers(){return this.acs_}},gh=class extends Po{get max(){return this.controller.valueController.sliderController.props.get("max")}set max(t){this.controller.valueController.sliderController.props.set("max",t)}get min(){return this.controller.valueController.sliderController.props.get("min")}set min(t){this.controller.valueController.sliderController.props.set("min",t)}};pa({id:"input-number",type:"input",accept:(t,e)=>{if("number"!=typeof t)return null;const i=Lo(e,t=>Object.assign(Object.assign({},go(t)),{options:t.optional.custom(Ga),readonly:t.optional.constant(!1)}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>so,constraint:t=>function(t,e){const i=[],n=vo(t,e);n&&i.push(n);const s=mo(t);s&&i.push(s);const r=Xa(t.options);return r&&i.push(r),new $a(i)}(t.params,t.initialValue),writer:t=>Ol},controller:t=>{const e=t.value,i=t.constraint,n=i&&qa(i,Ha);if(n)return new Ja(t.document,{props:new Rr({options:n.values.value("options")}),value:e,viewProps:t.viewProps});const s=bo(t.params,e.rawValue),r=i&&qa(i,Nr);return r?new kl(t.document,Object.assign(Object.assign({},(o=Object.assign(Object.assign({},s),{keyScale:zr(s.keyScale),max:r.values.value("max"),min:r.values.value("min")}),{sliderProps:new Rr({keyScale:o.keyScale,max:o.max,min:o.min}),textProps:new Rr({formatter:zr(o.formatter),keyScale:o.keyScale,pointerScale:zr(o.pointerScale)})})),{parser:no,value:e,viewProps:t.viewProps})):new fl(t.document,{parser:no,props:Rr.fromObject(s),value:e,viewProps:t.viewProps});var o},api:t=>"number"!=typeof t.controller.value.rawValue?null:t.controller.valueController instanceof kl?new gh(t.controller):t.controller.valueController instanceof Ja?new Ia(t.controller):null});var wh=class{constructor(t=0,e=0){this.x=t,this.y=e}getComponents(){return[this.x,this.y]}static isObject(t){if(Er(t))return!1;const e=t.x,i=t.y;return"number"==typeof e&&"number"==typeof i}static equals(t,e){return t.x===e.x&&t.y===e.y}toObject(){return{x:this.x,y:this.y}}},_h={toComponents:t=>t.getComponents(),fromComponents:t=>new wh(...t)},fh=$o("p2d"),xh=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(fh()),e.viewProps.bindClassModifiers(this.element),Io(e.expanded,ia(this.element,fh(void 0,"expanded")));const i=t.createElement("div");i.classList.add(fh("h")),this.element.appendChild(i);const n=t.createElement("button");n.classList.add(fh("b")),n.appendChild(To(t,"p2dpad")),e.viewProps.bindDisabled(n),i.appendChild(n),this.buttonElement=n;const s=t.createElement("div");if(s.classList.add(fh("t")),i.appendChild(s),this.textElement=s,"inline"===e.pickerLayout){const e=t.createElement("div");e.classList.add(fh("p")),this.element.appendChild(e),this.pickerElement=e}else this.pickerElement=null}},Ch=$o("p2dp"),yh=class{constructor(t,e){this.onFoldableChange_=this.onFoldableChange_.bind(this),this.onPropsChange_=this.onPropsChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.props_=e.props,this.props_.emitter.on("change",this.onPropsChange_),this.element=t.createElement("div"),this.element.classList.add(Ch()),"popup"===e.layout&&this.element.classList.add(Ch(void 0,"p")),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(Ch("p")),e.viewProps.bindTabIndex(i),this.element.appendChild(i),this.padElement=i;const n=t.createElementNS(Do,"svg");n.classList.add(Ch("g")),this.padElement.appendChild(n),this.svgElem_=n;const s=t.createElementNS(Do,"line");s.classList.add(Ch("ax")),s.setAttributeNS(null,"x1","0"),s.setAttributeNS(null,"y1","50%"),s.setAttributeNS(null,"x2","100%"),s.setAttributeNS(null,"y2","50%"),this.svgElem_.appendChild(s);const r=t.createElementNS(Do,"line");r.classList.add(Ch("ax")),r.setAttributeNS(null,"x1","50%"),r.setAttributeNS(null,"y1","0"),r.setAttributeNS(null,"x2","50%"),r.setAttributeNS(null,"y2","100%"),this.svgElem_.appendChild(r);const o=t.createElementNS(Do,"line");o.classList.add(Ch("l")),o.setAttributeNS(null,"x1","50%"),o.setAttributeNS(null,"y1","50%"),this.svgElem_.appendChild(o),this.lineElem_=o;const a=t.createElement("div");a.classList.add(Ch("m")),this.padElement.appendChild(a),this.markerElem_=a,e.value.emitter.on("change",this.onValueChange_),this.value=e.value,this.update_()}get allFocusableElements(){return[this.padElement]}update_(){const[t,e]=this.value.rawValue.getComponents(),i=this.props_.get("max"),n=oo(t,-i,+i,0,100),s=oo(e,-i,+i,0,100),r=this.props_.get("invertsY")?100-s:s;this.lineElem_.setAttributeNS(null,"x2",`${n}%`),this.lineElem_.setAttributeNS(null,"y2",`${r}%`),this.markerElem_.style.left=`${n}%`,this.markerElem_.style.top=`${r}%`}onValueChange_(){this.update_()}onPropsChange_(){this.update_()}onFoldableChange_(){this.update_()}};function Ph(t,e,i){return[dl(e[0],vl(t)),dl(e[1],ul(t))*(i?1:-1)]}var Eh=class{constructor(t,e){this.onPadKeyDown_=this.onPadKeyDown_.bind(this),this.onPadKeyUp_=this.onPadKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.props=e.props,this.value=e.value,this.viewProps=e.viewProps,this.view=new yh(t,{layout:e.layout,props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new gl(this.view.padElement),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.padElement.addEventListener("keydown",this.onPadKeyDown_),this.view.padElement.addEventListener("keyup",this.onPadKeyUp_)}handlePointerEvent_(t,e){if(!t.point)return;const i=this.props.get("max"),n=oo(t.point.x,0,t.bounds.width,-i,+i),s=oo(this.props.get("invertsY")?t.bounds.height-t.point.y:t.point.y,0,t.bounds.height,-i,+i);this.value.setRawValue(new wh(n,s),e)}onPointerDown_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerMove_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerUp_(t){this.handlePointerEvent_(t.data,{forceEmit:!0,last:!0})}onPadKeyDown_(t){ml(t.key)&&t.preventDefault();const[e,i]=Ph(t,[this.props.get("xKeyScale"),this.props.get("yKeyScale")],this.props.get("invertsY"));0===e&&0===i||this.value.setRawValue(new wh(this.value.rawValue.x+e,this.value.rawValue.y+i),{forceEmit:!1,last:!1})}onPadKeyUp_(t){const[e,i]=Ph(t,[this.props.get("xKeyScale"),this.props.get("yKeyScale")],this.props.get("invertsY"));0===e&&0===i||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}},kh=class{constructor(t,e){var i,n;this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.onPadButtonBlur_=this.onPadButtonBlur_.bind(this),this.onPadButtonClick_=this.onPadButtonClick_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.foldable_=_a.create(e.expanded),this.popC_="popup"===e.pickerLayout?new el(t,{viewProps:this.viewProps}):null;const s=new Eh(t,{layout:e.pickerLayout,props:new Rr({invertsY:zr(e.invertsY),max:zr(e.max),xKeyScale:e.axes[0].textProps.value("keyScale"),yKeyScale:e.axes[1].textProps.value("keyScale")}),value:this.value,viewProps:this.viewProps});s.view.allFocusableElements.forEach(t=>{t.addEventListener("blur",this.onPopupChildBlur_),t.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=s,this.textC_=new bh(t,{assembly:_h,axes:e.axes,parser:e.parser,value:this.value,viewProps:this.viewProps}),this.view=new xh(t,{expanded:this.foldable_.value("expanded"),pickerLayout:e.pickerLayout,viewProps:this.viewProps}),this.view.textElement.appendChild(this.textC_.view.element),null===(i=this.view.buttonElement)||void 0===i||i.addEventListener("blur",this.onPadButtonBlur_),null===(n=this.view.buttonElement)||void 0===n||n.addEventListener("click",this.onPadButtonClick_),this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),cl({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:t=>t,backward:(t,e)=>e})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),xa(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onPadButtonBlur_(t){if(!this.popC_)return;const e=this.view.element,i=t.relatedTarget;i&&e.contains(i)||(this.popC_.shows.rawValue=!1)}onPadButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(t){if(!this.popC_)return;const e=this.popC_.view.element,i=Ko(t);i&&e.contains(i)||i&&i===this.view.buttonElement&&!Oo(e.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(t){this.popC_?"Escape"===t.key&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&"Escape"===t.key&&this.view.buttonElement.focus()}};function Vh(t){return wh.isObject(t)?new wh(t.x,t.y):new wh}function Lh(t,e){t.writeProperty("x",e.x),t.writeProperty("y",e.y)}function Mh(t,e){var i,n;if(!Er(t.min)||!Er(t.max))return Math.max(Math.abs(null!==(i=t.min)&&void 0!==i?i:0),Math.abs(null!==(n=t.max)&&void 0!==n?n:0));const s=co(t);return Math.max(10*Math.abs(s),10*Math.abs(e))}function Sh(t,e){var i,n;const s=Mh(Mr(t,null!==(i=t.x)&&void 0!==i?i:{}),e.x),r=Mh(Mr(t,null!==(n=t.y)&&void 0!==n?n:{}),e.y);return Math.max(s,r)}function jh(t){if(!("y"in t))return!1;const e=t.y;return!!e&&"inverted"in e&&!!e.inverted}pa({id:"input-point2d",type:"input",accept:(t,e)=>{if(!wh.isObject(t))return null;const i=Lo(e,t=>Object.assign(Object.assign({},Sl(t)),{expanded:t.optional.boolean,picker:t.optional.custom(Al),readonly:t.optional.constant(!1),x:t.optional.custom(jl),y:t.optional.object(Object.assign(Object.assign({},Sl(t)),{inverted:t.optional.boolean}))}));return i?{initialValue:t,params:i}:null},binding:{reader:()=>Vh,constraint:t=>{return e=t.params,i=t.initialValue,new uh({assembly:_h,components:[Dl(Object.assign(Object.assign({},e),e.x),i.x),Dl(Object.assign(Object.assign({},e),e.y),i.y)]});var e,i},equals:wh.equals,writer:()=>Lh},controller:t=>{var e,i;const n=t.document,s=t.value,r=t.constraint,o=[t.params.x,t.params.y];return new kh(n,{axes:s.rawValue.getComponents().map((e,i)=>{var n;return wo({constraint:r.components[i],initialValue:e,params:Mr(t.params,null!==(n=o[i])&&void 0!==n?n:{})})}),expanded:null!==(e=t.params.expanded)&&void 0!==e&&e,invertsY:jh(t.params),max:Sh(t.params,s.rawValue),parser:no,pickerLayout:null!==(i=t.params.picker)&&void 0!==i?i:"popup",value:s,viewProps:t.viewProps})}});var Dh=class{constructor(t=0,e=0,i=0){this.x=t,this.y=e,this.z=i}getComponents(){return[this.x,this.y,this.z]}static isObject(t){if(Er(t))return!1;const e=t.x,i=t.y,n=t.z;return"number"==typeof e&&"number"==typeof i&&"number"==typeof n}static equals(t,e){return t.x===e.x&&t.y===e.y&&t.z===e.z}toObject(){return{x:this.x,y:this.y,z:this.z}}},Ah={toComponents:t=>t.getComponents(),fromComponents:t=>new Dh(...t)};function Oh(t){return Dh.isObject(t)?new Dh(t.x,t.y,t.z):new Dh}function Bh(t,e){t.writeProperty("x",e.x),t.writeProperty("y",e.y),t.writeProperty("z",e.z)}pa({id:"input-point3d",type:"input",accept:(t,e)=>{if(!Dh.isObject(t))return null;const i=Lo(e,t=>Object.assign(Object.assign({},Sl(t)),{readonly:t.optional.constant(!1),x:t.optional.custom(jl),y:t.optional.custom(jl),z:t.optional.custom(jl)}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>Oh,constraint:t=>{return e=t.params,i=t.initialValue,new uh({assembly:Ah,components:[Dl(Object.assign(Object.assign({},e),e.x),i.x),Dl(Object.assign(Object.assign({},e),e.y),i.y),Dl(Object.assign(Object.assign({},e),e.z),i.z)]});var e,i},equals:Dh.equals,writer:t=>Bh},controller:t=>{const e=t.value,i=t.constraint,n=[t.params.x,t.params.y,t.params.z];return new bh(t.document,{assembly:Ah,axes:e.rawValue.getComponents().map((e,s)=>{var r;return wo({constraint:i.components[s],initialValue:e,params:Mr(t.params,null!==(r=n[s])&&void 0!==r?r:{})})}),parser:no,value:e,viewProps:t.viewProps})}});var Th=class{constructor(t=0,e=0,i=0,n=0){this.x=t,this.y=e,this.z=i,this.w=n}getComponents(){return[this.x,this.y,this.z,this.w]}static isObject(t){if(Er(t))return!1;const e=t.x,i=t.y,n=t.z,s=t.w;return"number"==typeof e&&"number"==typeof i&&"number"==typeof n&&"number"==typeof s}static equals(t,e){return t.x===e.x&&t.y===e.y&&t.z===e.z&&t.w===e.w}toObject(){return{x:this.x,y:this.y,z:this.z,w:this.w}}},zh={toComponents:t=>t.getComponents(),fromComponents:t=>new Th(...t)};function Rh(t){return Th.isObject(t)?new Th(t.x,t.y,t.z,t.w):new Th}function Nh(t,e){t.writeProperty("x",e.x),t.writeProperty("y",e.y),t.writeProperty("z",e.z),t.writeProperty("w",e.w)}pa({id:"input-point4d",type:"input",accept:(t,e)=>{if(!Th.isObject(t))return null;const i=Lo(e,t=>Object.assign(Object.assign({},Sl(t)),{readonly:t.optional.constant(!1),w:t.optional.custom(jl),x:t.optional.custom(jl),y:t.optional.custom(jl),z:t.optional.custom(jl)}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>Rh,constraint:t=>{return e=t.params,i=t.initialValue,new uh({assembly:zh,components:[Dl(Object.assign(Object.assign({},e),e.x),i.x),Dl(Object.assign(Object.assign({},e),e.y),i.y),Dl(Object.assign(Object.assign({},e),e.z),i.z),Dl(Object.assign(Object.assign({},e),e.w),i.w)]});var e,i},equals:Th.equals,writer:t=>Nh},controller:t=>{const e=t.value,i=t.constraint,n=[t.params.x,t.params.y,t.params.z,t.params.w];return new bh(t.document,{assembly:zh,axes:e.rawValue.getComponents().map((e,s)=>{var r;return wo({constraint:i.components[s],initialValue:e,params:Mr(t.params,null!==(r=n[s])&&void 0!==r?r:{})})}),parser:no,value:e,viewProps:t.viewProps})}}),pa({id:"input-string",type:"input",accept:(t,e)=>{if("string"!=typeof t)return null;const i=Lo(e,t=>({readonly:t.optional.constant(!1),options:t.optional.custom(Ga)}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>pl,constraint:t=>function(t){const e=[],i=Xa(t.options);return i&&e.push(i),new $a(e)}(t.params),writer:t=>Ol},controller:t=>{const e=t.document,i=t.value,n=t.constraint,s=n&&qa(n,Ha);return s?new Ja(e,{props:new Rr({options:s.values.value("options")}),value:i,viewProps:t.viewProps}):new sl(e,{parser:t=>t,props:Rr.fromObject({formatter:hl}),value:i,viewProps:t.viewProps})},api:t=>"string"!=typeof t.controller.value.rawValue?null:t.controller.valueController instanceof Ja?new Ia(t.controller):null});var Kh=200,Ih=3,Uh=$o("mll"),Fh=class{constructor(t,e){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=e.formatter,this.element=t.createElement("div"),this.element.classList.add(Uh()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("textarea");i.classList.add(Uh("i")),i.style.height=`calc(var(${Ll("containerUnitSize")}) * ${e.rows})`,i.readOnly=!0,e.viewProps.bindDisabled(i),this.element.appendChild(i),this.textareaElem_=i,e.value.emitter.on("change",this.onValueUpdate_),this.value=e.value,this.update_()}update_(){const t=this.textareaElem_,e=t.scrollTop===t.scrollHeight-t.clientHeight,i=[];this.value.rawValue.forEach(t=>{void 0!==t&&i.push(this.formatter_(t))}),t.textContent=i.join("\n"),e&&(t.scrollTop=t.scrollHeight)}onValueUpdate_(){this.update_()}},$h=class{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.view=new Fh(t,{formatter:e.formatter,rows:e.rows,value:this.value,viewProps:this.viewProps})}},qh=$o("sgl"),Hh=class{constructor(t,e){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=e.formatter,this.element=t.createElement("div"),this.element.classList.add(qh()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("input");i.classList.add(qh("i")),i.readOnly=!0,i.type="text",e.viewProps.bindDisabled(i),this.element.appendChild(i),this.inputElement=i,e.value.emitter.on("change",this.onValueUpdate_),this.value=e.value,this.update_()}update_(){const t=this.value.rawValue,e=t[t.length-1];this.inputElement.value=void 0!==e?this.formatter_(e):""}onValueUpdate_(){this.update_()}},Gh=class{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.view=new Hh(t,{formatter:e.formatter,value:this.value,viewProps:this.viewProps})}};pa({id:"monitor-bool",type:"monitor",accept:(t,e)=>{if("boolean"!=typeof t)return null;const i=Lo(e,t=>({readonly:t.required.constant(!0),rows:t.optional.number}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>rl},controller:t=>{var e;return 1===t.value.rawValue.length?new Gh(t.document,{formatter:ol,value:t.value,viewProps:t.viewProps}):new $h(t.document,{formatter:ol,rows:null!==(e=t.params.rows)&&void 0!==e?e:Ih,value:t.value,viewProps:t.viewProps})}});var Yh=class extends Po{get max(){return this.controller.valueController.props.get("max")}set max(t){this.controller.valueController.props.set("max",t)}get min(){return this.controller.valueController.props.get("min")}set min(t){this.controller.valueController.props.set("min",t)}},Xh=$o("grl"),Wh=class{constructor(t,e){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=t.createElement("div"),this.element.classList.add(Xh()),e.viewProps.bindClassModifiers(this.element),this.formatter_=e.formatter,this.props_=e.props,this.cursor_=e.cursor,this.cursor_.emitter.on("change",this.onCursorChange_);const i=t.createElementNS(Do,"svg");i.classList.add(Xh("g")),i.style.height=`calc(var(${Ll("containerUnitSize")}) * ${e.rows})`,this.element.appendChild(i),this.svgElem_=i;const n=t.createElementNS(Do,"polyline");this.svgElem_.appendChild(n),this.lineElem_=n;const s=t.createElement("div");s.classList.add(Xh("t"),$o("tt")()),this.element.appendChild(s),this.tooltipElem_=s,e.value.emitter.on("change",this.onValueUpdate_),this.value=e.value,this.update_()}get graphElement(){return this.svgElem_}update_(){const t=this.svgElem_.getBoundingClientRect(),e=this.value.rawValue.length-1,i=this.props_.get("min"),n=this.props_.get("max"),s=[];this.value.rawValue.forEach((r,o)=>{if(void 0===r)return;const a=oo(o,0,e,0,t.width),l=oo(r,i,n,t.height,0);s.push([a,l].join(","))}),this.lineElem_.setAttributeNS(null,"points",s.join(" "));const r=this.tooltipElem_,o=this.value.rawValue[this.cursor_.rawValue];if(void 0===o)return void r.classList.remove(Xh("t","a"));const a=oo(this.cursor_.rawValue,0,e,0,t.width),l=oo(o,i,n,t.height,0);r.style.left=`${a}px`,r.style.top=`${l}px`,r.textContent=`${this.formatter_(o)}`,r.classList.contains(Xh("t","a"))||(r.classList.add(Xh("t","a"),Xh("t","in")),Ao(r),r.classList.remove(Xh("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}},Qh=class{constructor(t,e){if(this.onGraphMouseMove_=this.onGraphMouseMove_.bind(this),this.onGraphMouseLeave_=this.onGraphMouseLeave_.bind(this),this.onGraphPointerDown_=this.onGraphPointerDown_.bind(this),this.onGraphPointerMove_=this.onGraphPointerMove_.bind(this),this.onGraphPointerUp_=this.onGraphPointerUp_.bind(this),this.props=e.props,this.value=e.value,this.viewProps=e.viewProps,this.cursor_=zr(-1),this.view=new Wh(t,{cursor:this.cursor_,formatter:e.formatter,rows:e.rows,props:this.props,value:this.value,viewProps:this.viewProps}),Oo(t)){const t=new gl(this.view.element);t.emitter.on("down",this.onGraphPointerDown_),t.emitter.on("move",this.onGraphPointerMove_),t.emitter.on("up",this.onGraphPointerUp_)}else this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_)}importProps(t){return Mo(t,null,t=>({max:t.required.number,min:t.required.number}),t=>(this.props.set("max",t.max),this.props.set("min",t.min),!0))}exportProps(){return So(null,{max:this.props.get("max"),min:this.props.get("min")})}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(t){const e=this.view.element.getBoundingClientRect();this.cursor_.rawValue=Math.floor(oo(t.offsetX,0,e.width,0,this.value.rawValue.length))}onGraphPointerDown_(t){this.onGraphPointerMove_(t)}onGraphPointerMove_(t){t.data.point?this.cursor_.rawValue=Math.floor(oo(t.data.point.x,0,t.data.bounds.width,0,this.value.rawValue.length)):this.cursor_.rawValue=-1}onGraphPointerUp_(){this.cursor_.rawValue=-1}};function Jh(t){return Er(t.format)?ro(2):t.format}function Zh(t){return"graph"===t.view}pa({id:"monitor-number",type:"monitor",accept:(t,e)=>{if("number"!=typeof t)return null;const i=Lo(e,t=>({format:t.optional.function,max:t.optional.number,min:t.optional.number,readonly:t.required.constant(!0),rows:t.optional.number,view:t.optional.string}));return i?{initialValue:t,params:i}:null},binding:{defaultBufferSize:t=>Zh(t)?64:1,reader:t=>so},controller:t=>Zh(t.params)?function(t){var e,i,n;return new Qh(t.document,{formatter:Jh(t.params),rows:null!==(e=t.params.rows)&&void 0!==e?e:Ih,props:Rr.fromObject({max:null!==(i=t.params.max)&&void 0!==i?i:100,min:null!==(n=t.params.min)&&void 0!==n?n:0}),value:t.value,viewProps:t.viewProps})}(t):function(t){var e;return 1===t.value.rawValue.length?new Gh(t.document,{formatter:Jh(t.params),value:t.value,viewProps:t.viewProps}):new $h(t.document,{formatter:Jh(t.params),rows:null!==(e=t.params.rows)&&void 0!==e?e:Ih,value:t.value,viewProps:t.viewProps})}(t),api:t=>t.controller.valueController instanceof Qh?new Yh(t.controller):null}),pa({id:"monitor-string",type:"monitor",accept:(t,e)=>{if("string"!=typeof t)return null;const i=Lo(e,t=>({multiline:t.optional.boolean,readonly:t.required.constant(!0),rows:t.optional.number}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>pl},controller:t=>{var e;const i=t.value;return i.rawValue.length>1||t.params.multiline?new $h(t.document,{formatter:hl,rows:null!==(e=t.params.rows)&&void 0!==e?e:Ih,value:i,viewProps:t.viewProps}):new Gh(t.document,{formatter:hl,value:i,viewProps:t.viewProps})}});var tc=class{constructor(t){this.controller_=t}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(t){this.controller_.viewProps.set("disabled",t)}get title(){var t;return null!==(t=this.controller_.props.get("title"))&&void 0!==t?t:""}set title(t){this.controller_.props.set("title",t)}on(t,e){const i=e.bind(this);return this.controller_.emitter.on(t,()=>{i(new fo(this))}),this}},ec=class extends fo{constructor(t,e,i){super(t),this.cell=e,this.index=i}},ic=class extends _o{constructor(t){super(t),this.cellToApiMap_=new Map,this.emitter_=new Ar;const e=this.controller.valueController;e.cellControllers.forEach((t,i)=>{const n=new tc(t);this.cellToApiMap_.set(t,n),t.emitter.on("click",()=>{const t=i%e.size[0],s=Math.floor(i/e.size[0]);this.emitter_.emit("click",{event:new ec(this,n,[t,s])})})})}cell(t,e){const i=this.controller.valueController,n=i.cellControllers[e*i.size[0]+t];return this.cellToApiMap_.get(n)}on(t,e){const i=e.bind(this);return this.emitter_.on(t,t=>{i(t.event)}),this}},nc=class{constructor(t,e){this.size=e.size;const[i,n]=this.size,s=[];for(let r=0;r{this.cellCs_.forEach(t=>{t.viewProps.set("disposed",!0)})}),this.view=new Ml(t,{viewProps:this.viewProps,viewName:"btngrid"}),this.view.element.style.gridTemplateColumns=`repeat(${i}, 1fr)`,this.cellCs_.forEach(t=>{this.view.element.appendChild(t.view.element)})}get cellControllers(){return this.cellCs_}},sc=class extends Wo{constructor(t,e){const i=e.valueController,n=new Go(t,{blade:e.blade,props:e.labelProps,valueController:i});super({blade:e.blade,view:n.view,viewProps:i.viewProps}),this.valueController=i,this.labelController=n}},rc=pa({id:"buttongrid",type:"blade",accept(t){const e=Lo(t,t=>({cells:t.required.function,size:t.required.array(t.required.number),view:t.required.constant("buttongrid"),label:t.optional.string}));return e?{params:e}:null},controller:t=>new sc(t.document,{blade:t.blade,labelProps:Rr.fromObject({label:t.params.label}),valueController:new nc(t.document,{cellConfig:t.params.cells,size:t.params.size})}),api:t=>t.controller instanceof sc?new ic(t.controller):null}),oc=class extends _o{get label(){return this.controller.labelController.props.get("label")}set label(t){this.controller.labelController.props.set("label",t)}get value(){return this.controller.valueController.value.rawValue}set value(t){this.controller.valueController.value.rawValue=t}on(t,e){const i=e.bind(this);return this.controller.valueController.value.emitter.on(t,t=>{i(new xo(this,t.rawValue,t.options.last))}),this}};function ac(t,e,i){return t*(1-i)+e*i}function lc(t,e){let i=.25,n=.5,s=-1;for(let r=0;r<20;r++){const[r,o]=t.curve(n);if(n+=i*(rt.toObject(),fromComponents:t=>new pc(...t)};function cc(t){const e=ro(2);return`cubic-bezier(${t.toObject().map(t=>e(t)).join(", ")})`}var dc=[0,.5,.5,1];function uc(t){const e=t.match(/^cubic-bezier\s*\(\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)\s*\)$/);if(!e)return new pc(...dc);const i=[e[1],e[2],e[3],e[4]].reduce((t,e)=>{if(!t)return null;const i=Number(e);return isNaN(i)?null:[...t,i]},[]);return new pc(...null!=i?i:dc)}var vc=$o("cbz"),mc=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(vc()),e.viewProps.bindClassModifiers(this.element),e.foldable.bindExpandedClass(this.element,vc(void 0,"expanded")),Uo(e.foldable,"completed",ia(this.element,vc(void 0,"cpl")));const i=t.createElement("div");i.classList.add(vc("h")),this.element.appendChild(i);const n=t.createElement("button");n.classList.add(vc("b")),e.viewProps.bindDisabled(n);const s=t.createElementNS(Do,"svg");s.innerHTML='',n.appendChild(s),i.appendChild(n),this.buttonElement=n;const r=t.createElement("div");if(r.classList.add(vc("t")),i.appendChild(r),this.textElement=r,"inline"===e.pickerLayout){const e=t.createElement("div");e.classList.add(vc("p")),this.element.appendChild(e),this.pickerElement=e}else this.pickerElement=null}},bc=$o("cbzp"),gc=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(bc()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(bc("g")),this.element.appendChild(i),this.graphElement=i;const n=t.createElement("div");n.classList.add(bc("t")),this.element.appendChild(n),this.textElement=n}};function wc(t,e){const i=new MutationObserver(t=>{for(const n of t)"childList"===n.type&&n.addedNodes.forEach(t=>{t.contains(t)&&(e(),i.disconnect())})}),n=t.ownerDocument;i.observe(n.body,{attributes:!0,childList:!0,subtree:!0})}var _c=$o("cbzg"),fc=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(_c()),e.viewProps.bindClassModifiers(this.element),e.viewProps.bindTabIndex(this.element);const i=t.createElement("div");i.classList.add(_c("p")),this.element.appendChild(i),this.previewElement=i;const n=t.createElementNS(Do,"svg");n.classList.add(_c("g")),this.element.appendChild(n),this.svgElem_=n;const s=t.createElementNS(Do,"path");s.classList.add(_c("u")),this.svgElem_.appendChild(s),this.guideElem_=s;const r=t.createElementNS(Do,"polyline");r.classList.add(_c("l")),this.svgElem_.appendChild(r),this.lineElem_=r,this.handleElems_=[t.createElement("div"),t.createElement("div")],this.handleElems_.forEach(t=>{t.classList.add(_c("h")),this.element.appendChild(t)}),this.vectorElems_=[t.createElementNS(Do,"line"),t.createElementNS(Do,"line")],this.vectorElems_.forEach(t=>{t.classList.add(_c("v")),this.svgElem_.appendChild(t)}),this.value_=e.value,this.value_.emitter.on("change",this.onValueChange_.bind(this)),this.sel_=e.selection,this.handleElems_.forEach((t,e)=>{var i,n;Io(this.sel_,(i=t=>t===e,n=ia(t,_c("h","sel")),t=>n(i(t))))}),wc(this.element,()=>{this.refresh()})}getVertMargin_(t){return.25*t}valueToPosition(t,e){const{clientWidth:i,clientHeight:n}=this.element,s=this.getVertMargin_(n);return{x:oo(t,0,1,0,i),y:oo(e,0,1,n-s,s)}}positionToValue(t,e){const i=this.element.getBoundingClientRect(),n=i.width,s=i.height,r=this.getVertMargin_(s);return{x:lo(oo(t,0,n,0,1),0,1),y:oo(e,s-r,r,0,1)}}refresh(){this.guideElem_.setAttributeNS(null,"d",[0,1].map(t=>{const e=this.valueToPosition(0,t),i=this.valueToPosition(1,t);return[`M ${e.x},${e.y}`,`L ${i.x},${i.y}`].join(" ")}).join(" "));const t=this.value_.rawValue,e=[];let i=0;for(;;){const n=this.valueToPosition(...t.curve(i));if(e.push([n.x,n.y].join(",")),i>=1)break;i=Math.min(i+.05,1)}this.lineElem_.setAttributeNS(null,"points",e.join(" "));const n=t.toObject();[0,1].forEach(t=>{const e=this.valueToPosition(t,t),i=this.valueToPosition(n[2*t],n[2*t+1]),s=this.vectorElems_[t];s.setAttributeNS(null,"x1",String(e.x)),s.setAttributeNS(null,"y1",String(e.y)),s.setAttributeNS(null,"x2",String(i.x)),s.setAttributeNS(null,"y2",String(i.y));const r=this.handleElems_[t];r.style.left=`${i.x}px`,r.style.top=`${i.y}px`})}onValueChange_(){this.refresh()}},xc=$o("cbzprv"),Cc=class{constructor(t,e){this.stopped_=!0,this.startTime_=-1,this.onDispose_=this.onDispose_.bind(this),this.onTimer_=this.onTimer_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.element=t.createElement("div"),this.element.classList.add(xc()),e.viewProps.bindClassModifiers(this.element);const i=t.createElementNS(Do,"svg");i.classList.add(xc("g")),this.element.appendChild(i),this.svgElem_=i;const n=t.createElementNS(Do,"path");n.classList.add(xc("t")),this.svgElem_.appendChild(n),this.ticksElem_=n;const s=t.createElement("div");s.classList.add(xc("m")),this.element.appendChild(s),this.markerElem_=s,this.value_=e.value,this.value_.emitter.on("change",this.onValueChange_),e.viewProps.handleDispose(this.onDispose_),wc(this.element,()=>{this.refresh()})}play(){this.stop(),this.updateMarker_(0),this.markerElem_.classList.add(xc("m","a")),this.startTime_=(new Date).getTime()+400,this.stopped_=!1,requestAnimationFrame(this.onTimer_)}stop(){this.stopped_=!0,this.markerElem_.classList.remove(xc("m","a"))}onDispose_(){this.stop()}updateMarker_(t){const e=this.value_.rawValue.y(lo(t,0,1));this.markerElem_.style.left=100*e+"%"}refresh(){const{clientWidth:t,clientHeight:e}=this.svgElem_,i=[],n=this.value_.rawValue;for(let s=0;s<24;s++){const r=oo(s,0,23,0,1),o=oo(n.y(r),0,1,0,t);i.push(`M ${o},0 v${e}`)}this.ticksElem_.setAttributeNS(null,"d",i.join(" "))}onTimer_(){if(null===this.startTime_)return;const t=(new Date).getTime()-this.startTime_,e=t/1e3;this.updateMarker_(e),t>1400&&this.stop(),this.stopped_||requestAnimationFrame(this.onTimer_)}onValueChange_(){this.refresh(),this.play()}};function yc(t,e,i,n){const s=i-t,r=n-e;return Math.sqrt(s*s+r*r)}var Pc=class{constructor(t,e){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.keyScale_=e.keyScale,this.value=e.value,this.sel_=zr(0),this.viewProps=e.viewProps,this.view=new fc(t,{selection:this.sel_,value:this.value,viewProps:this.viewProps}),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_),this.prevView_=new Cc(t,{value:this.value,viewProps:this.viewProps}),this.prevView_.element.addEventListener("mousedown",t=>{t.stopImmediatePropagation(),t.preventDefault(),this.prevView_.play()}),this.view.previewElement.appendChild(this.prevView_.element);const i=new gl(this.view.element);i.emitter.on("down",this.onPointerDown_),i.emitter.on("move",this.onPointerMove_),i.emitter.on("up",this.onPointerUp_)}refresh(){this.view.refresh(),this.prevView_.refresh(),this.prevView_.play()}updateValue_(t,e,i){const n=this.sel_.rawValue,s=this.value.rawValue.toObject(),r=this.view.positionToValue(t.x,t.y),o=e?function(t,e,i,n){const s=yc(t,e,i,n),r=Math.atan2(n-e,i-t),o=Math.round(r/(Math.PI/4))*Math.PI/4;return{x:t+Math.cos(o)*s,y:e+Math.sin(o)*s}}(n,n,r.x,r.y):r;s[2*n]=o.x,s[2*n+1]=o.y,this.value.setRawValue(new pc(...s),i)}onPointerDown_(t){const e=t.data;if(!e.point)return;const i=this.value.rawValue,n=this.view.valueToPosition(i.x1,i.y1),s=yc(e.point.x,e.point.y,n.x,n.y),r=this.view.valueToPosition(i.x2,i.y2),o=yc(e.point.x,e.point.y,r.x,r.y);this.sel_.rawValue=s<=o?0:1,this.updateValue_(e.point,t.shiftKey,{forceEmit:!1,last:!1})}onPointerMove_(t){const e=t.data;e.point&&this.updateValue_(e.point,t.shiftKey,{forceEmit:!1,last:!1})}onPointerUp_(t){const e=t.data;e.point&&this.updateValue_(e.point,t.shiftKey,{forceEmit:!0,last:!0})}onKeyDown_(t){ml(t.key)&&t.preventDefault();const e=this.sel_.rawValue,i=this.value.rawValue.toObject(),n=this.keyScale_.rawValue;i[2*e]+=dl(n,vl(t)),i[2*e+1]+=dl(n,ul(t)),this.value.setRawValue(new pc(...i),{forceEmit:!1,last:!1})}onKeyUp_(t){ml(t.key)&&t.preventDefault();const e=this.keyScale_.rawValue,i=dl(e,vl(t)),n=dl(e,ul(t));0===i&&0===n||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}},Ec=class{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.view=new gc(t,{viewProps:this.viewProps}),this.gc_=new Pc(t,{keyScale:e.axis.textProps.value("keyScale"),value:this.value,viewProps:this.viewProps}),this.view.graphElement.appendChild(this.gc_.view.element);const i=Object.assign(Object.assign({},e.axis),{constraint:new Kr({max:1,min:0})}),n=Object.assign(Object.assign({},e.axis),{constraint:void 0});this.tc_=new bh(t,{assembly:hc,axes:[i,n,i,n],parser:no,value:this.value,viewProps:this.viewProps}),this.view.textElement.appendChild(this.tc_.view.element)}get allFocusableElements(){return[this.gc_.view.element,...this.tc_.view.textViews.map(t=>t.inputElement)]}refresh(){this.gc_.refresh()}},kc=class{constructor(t,e){this.onButtonBlur_=this.onButtonBlur_.bind(this),this.onButtonClick_=this.onButtonClick_.bind(this),this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.foldable_=_a.create(e.expanded),this.view=new mc(t,{foldable:this.foldable_,pickerLayout:e.pickerLayout,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("blur",this.onButtonBlur_),this.view.buttonElement.addEventListener("click",this.onButtonClick_),this.tc_=new sl(t,{parser:uc,props:Rr.fromObject({formatter:cc}),value:this.value,viewProps:this.viewProps}),this.view.textElement.appendChild(this.tc_.view.element),this.popC_="popup"===e.pickerLayout?new el(t,{viewProps:this.viewProps}):null;const i=new Ec(t,{axis:e.axis,value:this.value,viewProps:this.viewProps});i.allFocusableElements.forEach(t=>{t.addEventListener("blur",this.onPopupChildBlur_),t.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=i,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),Io(this.popC_.shows,t=>{t&&i.refresh()}),cl({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:t=>t,backward:(t,e)=>e})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),xa(this.foldable_,this.view.pickerElement))}onButtonBlur_(t){if(!this.popC_)return;const e=t.relatedTarget;e&&this.popC_.view.element.contains(e)||(this.popC_.shows.rawValue=!1)}onButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.allFocusableElements[0].focus()}onPopupChildBlur_(t){if(!this.popC_)return;const e=this.popC_.view.element,i=Ko(t);i&&e.contains(i)||i&&i===this.view.buttonElement&&!Oo(e.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(t){this.popC_&&"Escape"===t.key&&(this.popC_.shows.rawValue=!1)}},Vc=pa({id:"cubicbezier",type:"blade",accept(t){const e=Lo(t,t=>({value:t.required.array(t.required.number),view:t.required.constant("cubicbezier"),expanded:t.optional.boolean,label:t.optional.string,picker:t.optional.custom(t=>"inline"===t||"popup"===t?t:void 0)}));return e?{params:e}:null},controller(t){var e,i;const n=zr(new pc(...t.params.value),{constraint:new uh({assembly:hc,components:[0,1,2,3].map(t=>t%2==0?new Kr({min:0,max:1}):void 0)}),equals:pc.equals}),s=new kc(t.document,{axis:{textProps:Rr.fromObject({keyScale:.1,pointerScale:.01,formatter:ro(2)})},expanded:null!==(e=t.params.expanded)&&void 0!==e&&e,pickerLayout:null!==(i=t.params.picker)&&void 0!==i?i:"popup",value:n,viewProps:t.viewProps});return new Qo(t.document,{blade:t.blade,props:Rr.fromObject({label:t.params.label}),value:n,valueController:s})},api:t=>t.controller instanceof Qo&&t.controller.valueController instanceof kc?new oc(t.controller):null}),Lc=class extends _o{get fps(){return this.controller.valueController.fps}get max(){return this.controller.valueController.props.get("max")}set max(t){this.controller.valueController.props.set("max",t)}get min(){return this.controller.valueController.props.get("min")}set min(t){this.controller.valueController.props.set("min",t)}begin(){this.controller.valueController.begin()}end(){this.controller.valueController.end()}on(t,e){const i=e.bind(this);return this.controller.valueController.ticker.emitter.on(t,()=>{i(new fo(this))}),this}},Mc=class{constructor(){this.start_=null,this.duration_=0,this.fps_=null,this.frameCount_=0,this.timestamps_=[]}get duration(){return this.duration_}get fps(){return this.fps_}begin(t){this.start_=t.getTime()}calculateFps_(t){if(0===this.timestamps_.length)return null;const e=this.timestamps_[0];return 1e3*(this.frameCount_-e.frameCount)/(t-e.time)}compactTimestamps_(){if(this.timestamps_.length<=20)return;const t=this.timestamps_.length-20;this.timestamps_.splice(0,t);const e=this.timestamps_[0].frameCount;this.timestamps_.forEach(t=>{t.frameCount-=e}),this.frameCount_-=e}end(t){if(null===this.start_)return;const e=t.getTime();this.duration_=e-this.start_,this.start_=null,this.fps_=this.calculateFps_(e),this.timestamps_.push({frameCount:this.frameCount_,time:e}),++this.frameCount_,this.compactTimestamps_()}},Sc=$o("fps"),jc=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Sc()),e.viewProps.bindClassModifiers(this.element),this.graphElement=t.createElement("div"),this.graphElement.classList.add(Sc("g")),this.element.appendChild(this.graphElement);const i=t.createElement("div");i.classList.add(Sc("l")),this.element.appendChild(i);const n=t.createElement("span");n.classList.add(Sc("v")),n.textContent="--",i.appendChild(n),this.valueElement=n;const s=t.createElement("span");s.classList.add(Sc("u")),s.textContent="FPS",i.appendChild(s)}},Dc=class{constructor(t,e){this.stopwatch_=new Mc,this.onTick_=this.onTick_.bind(this),this.ticker=e.ticker,this.ticker.emitter.on("tick",this.onTick_),this.props=e.props,this.value_=e.value,this.viewProps=e.viewProps,this.view=new jc(t,{viewProps:this.viewProps}),this.graphC_=new Qh(t,{formatter:ro(0),props:this.props,rows:e.rows,value:this.value_,viewProps:this.viewProps}),this.view.graphElement.appendChild(this.graphC_.view.element),this.viewProps.handleDispose(()=>{this.graphC_.viewProps.set("disposed",!0),this.ticker.dispose()})}get fps(){return this.stopwatch_.fps}begin(){this.stopwatch_.begin(new Date)}end(){this.stopwatch_.end(new Date)}onTick_(){const t=this.fps;if(null!==t){const e=this.value_.rawValue;this.value_.rawValue=function(t,e){const i=[...ta(t),e];return i.length>t.length?i.splice(0,i.length-t.length):Jo(i,t.length),i}(e,t),this.view.valueElement.textContent=t.toFixed(0)}}},Ac=class extends Wo{constructor(t,e){const i=e.valueController,n=new Go(t,{blade:e.blade,props:e.labelProps,valueController:i});super({blade:e.blade,view:n.view,viewProps:i.viewProps}),this.valueController=i,this.labelController=n}};function Oc(t,e){return 0===e?new Ua:new Fa(t,null!=e?e:Kh)}var Bc=pa({id:"fpsgraph",type:"blade",accept(t){const e=Lo(t,t=>({view:t.required.constant("fpsgraph"),interval:t.optional.number,label:t.optional.string,rows:t.optional.number,max:t.optional.number,min:t.optional.number}));return e?{params:e}:null},controller(t){var e,i,n,s;const r=null!==(e=t.params.interval)&&void 0!==e?e:500;return new Ac(t.document,{blade:t.blade,labelProps:Rr.fromObject({label:t.params.label}),valueController:new Dc(t.document,{props:Rr.fromObject({max:null!==(i=t.params.max)&&void 0!==i?i:90,min:null!==(n=t.params.min)&&void 0!==n?n:0}),rows:null!==(s=t.params.rows)&&void 0!==s?s:2,ticker:Oc(t.document,r),value:zr(Zo(80)),viewProps:t.viewProps})})},api:t=>t.controller instanceof Ac?new Lc(t.controller):null}),Tc=class{constructor(t,e){this.min=t,this.max=e}static isObject(t){if("object"!=typeof t||null===t)return!1;const e=t.min,i=t.max;return"number"==typeof e&&"number"==typeof i}static equals(t,e){return t.min===e.min&&t.max===e.max}get length(){return this.max-this.min}toObject(){return{min:this.min,max:this.max}}},zc={fromComponents:t=>new Tc(t[0],t[1]),toComponents:t=>[t.min,t.max]},Rc=class{constructor(t){this.edge=t}constrain(t){var e,i,n,s,r,o,a,l;if(t.min<=t.max)return new Tc(null!==(i=null===(e=this.edge)||void 0===e?void 0:e.constrain(t.min))&&void 0!==i?i:t.min,null!==(s=null===(n=this.edge)||void 0===n?void 0:n.constrain(t.max))&&void 0!==s?s:t.max);const p=(t.min+t.max)/2;return new Tc(null!==(o=null===(r=this.edge)||void 0===r?void 0:r.constrain(p))&&void 0!==o?o:p,null!==(l=null===(a=this.edge)||void 0===a?void 0:a.constrain(p))&&void 0!==l?l:p)}},Nc=$o("rsltxt"),Kc=class{constructor(t,e){this.sliderView_=e.sliderView,this.textView_=e.textView,this.element=t.createElement("div"),this.element.classList.add(Nc());const i=t.createElement("div");i.classList.add(Nc("s")),i.appendChild(this.sliderView_.element),this.element.appendChild(i);const n=t.createElement("div");n.classList.add(Nc("t")),n.appendChild(this.textView_.element),this.element.appendChild(n)}},Ic=$o("rsl"),Uc=class{constructor(t,e){this.onSliderPropsChange_=this.onSliderPropsChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.sliderProps_=e.sliderProps,this.sliderProps_.emitter.on("change",this.onSliderPropsChange_),this.element=t.createElement("div"),this.element.classList.add(Ic()),e.viewProps.bindClassModifiers(this.element),this.value_=e.value,this.value_.emitter.on("change",this.onValueChange_);const i=t.createElement("div");i.classList.add(Ic("t")),this.element.appendChild(i),this.trackElement=i;const n=t.createElement("div");n.classList.add(Ic("b")),i.appendChild(n),this.barElement=n;const s=["min","max"].map(e=>{const n=t.createElement("div");return n.classList.add(Ic("k"),Ic("k",e)),i.appendChild(n),n});this.knobElements=[s[0],s[1]],this.update_()}valueToX_(t){return 100*lo(oo(t,this.sliderProps_.get("min"),this.sliderProps_.get("max"),0,1),0,1)}update_(){const t=this.value_.rawValue;0===t.length?this.element.classList.add(Ic(void 0,"zero")):this.element.classList.remove(Ic(void 0,"zero"));const e=[this.valueToX_(t.min),this.valueToX_(t.max)];this.barElement.style.left=`${e[0]}%`,this.barElement.style.right=100-e[1]+"%",this.knobElements.forEach((t,i)=>{t.style.left=`${e[i]}%`})}onSliderPropsChange_(){this.update_()}onValueChange_(){this.update_()}},Fc=class{constructor(t,e){this.grabbing_=null,this.grabOffset_=0,this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.sliderProps=e.sliderProps,this.viewProps=e.viewProps,this.value=e.value,this.view=new Uc(t,{sliderProps:this.sliderProps,value:this.value,viewProps:e.viewProps});const i=new gl(this.view.trackElement);i.emitter.on("down",this.onPointerDown_),i.emitter.on("move",this.onPointerMove_),i.emitter.on("up",this.onPointerUp_)}ofs_(){return"min"===this.grabbing_?this.view.knobElements[0].getBoundingClientRect().width/2:"max"===this.grabbing_?-this.view.knobElements[1].getBoundingClientRect().width/2:0}valueFromData_(t){return t.point?oo((t.point.x+this.ofs_())/t.bounds.width,0,1,this.sliderProps.get("min"),this.sliderProps.get("max")):null}onPointerDown_(t){if(!t.data.point)return;const e=t.data.point.x/t.data.bounds.width,i=this.value.rawValue,n=this.sliderProps.get("min"),s=this.sliderProps.get("max"),r=oo(i.min,n,s,0,1),o=oo(i.max,n,s,0,1);Math.abs(o-e)<=.025?this.grabbing_="max":Math.abs(r-e)<=.025?this.grabbing_="min":e>=r&&e<=o?(this.grabbing_="length",this.grabOffset_=oo(e-r,0,1,0,s-n)):eo&&(this.grabbing_="max",this.onPointerMove_(t))}applyPointToValue_(t,e){const i=this.valueFromData_(t);if(null===i)return;const n=this.sliderProps.get("min"),s=this.sliderProps.get("max");if("min"===this.grabbing_)this.value.setRawValue(new Tc(i,this.value.rawValue.max),e);else if("max"===this.grabbing_)this.value.setRawValue(new Tc(this.value.rawValue.min,i),e);else if("length"===this.grabbing_){const t=this.value.rawValue.length;let r=i-this.grabOffset_,o=r+t;rs&&(r=s-t,o=s),this.value.setRawValue(new Tc(r,o),e)}}onPointerMove_(t){this.applyPointToValue_(t.data,{forceEmit:!1,last:!1})}onPointerUp_(t){this.applyPointToValue_(t.data,{forceEmit:!0,last:!0}),this.grabbing_=null}},$c=class{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.sc_=new Fc(t,e);const i={constraint:e.constraint,textProps:e.textProps};this.tc_=new bh(t,{assembly:zc,axes:[i,i],parser:e.parser,value:this.value,viewProps:e.viewProps}),this.view=new Kc(t,{sliderView:this.sc_.view,textView:this.tc_.view})}get textController(){return this.tc_}};function qc(t){return Tc.isObject(t)?new Tc(t.min,t.max):new Tc(0,0)}function Hc(t,e){t.writeProperty("max",e.max),t.writeProperty("min",e.min)}var Gc=pa({id:"input-interval",type:"input",accept:(t,e)=>{if(!Tc.isObject(t))return null;const i=Lo(e,t=>Object.assign(Object.assign({},go(t)),{readonly:t.optional.constant(!1)}));return i?{initialValue:new Tc(t.min,t.max),params:i}:null},binding:{reader:t=>qc,constraint:t=>function(t){const e=[],i=mo(t);i&&e.push(i);const n=vo(t);return n&&e.push(n),new Rc(new $a(e))}(t.params),equals:Tc.equals,writer:t=>Hc},controller(t){const e=t.value,i=t.constraint;if(!(i instanceof Rc))throw jr.shouldNeverHappen();const n=(e.rawValue.min+e.rawValue.max)/2,s=Rr.fromObject(bo(t.params,n)),r=i.edge&&qa(i.edge,Nr);if(r)return new $c(t.document,{constraint:i.edge,parser:no,sliderProps:new Rr({keyScale:s.value("keyScale"),max:r.values.value("max"),min:r.values.value("min")}),textProps:s,value:e,viewProps:t.viewProps});const o={constraint:i.edge,textProps:s};return new bh(t.document,{assembly:zc,axes:[o,o],parser:no,value:e,viewProps:t.viewProps})}}),Yc=class{constructor(t){this.controller_=t}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(t){this.controller_.viewProps.set("disabled",t)}get title(){var t;return null!==(t=this.controller_.props.get("title"))&&void 0!==t?t:""}set title(t){this.controller_.props.set("title",t)}},Xc=class extends xo{constructor(t,e,i,n,s){super(t,n,s),this.cell=e,this.index=i}},Wc=class extends _o{constructor(t){super(t),this.cellToApiMap_=new Map,this.controller.valueController.cellControllers.forEach(t=>{const e=new Yc(t);this.cellToApiMap_.set(t,e)})}get value(){return this.controller.value}cell(t,e){const i=this.controller.valueController,n=i.cellControllers[e*i.size[0]+t];return this.cellToApiMap_.get(n)}on(t,e){const i=e.bind(this);this.controller.value.emitter.on(t,t=>{const e=this.controller.valueController,n=e.findCellByValue(t.rawValue);if(!n)return;const s=this.cellToApiMap_.get(n);if(!s)return;const r=e.cellControllers.indexOf(n);i(new Xc(this,s,[r%e.size[0],Math.floor(r/e.size[0])],t.rawValue))})}},Qc=$o("rad"),Jc=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Qc()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("label");i.classList.add(Qc("l")),this.element.appendChild(i);const n=t.createElement("input");n.classList.add(Qc("i")),n.name=e.name,n.type="radio",e.viewProps.bindDisabled(n),i.appendChild(n),this.inputElement=n;const s=t.createElement("div");s.classList.add(Qc("b")),i.appendChild(s);const r=t.createElement("div");r.classList.add(Qc("t")),s.appendChild(r),Uo(e.props,"title",t=>{r.textContent=t})}},Zc=class{constructor(t,e){this.props=e.props,this.viewProps=e.viewProps,this.view=new Jc(t,{name:e.name,props:this.props,viewProps:this.viewProps})}},td=class{constructor(t,e){this.cellCs_=[],this.cellValues_=[],this.onCellInputChange_=this.onCellInputChange_.bind(this),this.size=e.size;const[i,n]=this.size;for(let s=0;s{const e=this.findCellByValue(t);e&&(e.view.inputElement.checked=!0)}),this.viewProps=La.create(),this.view=new Ml(t,{viewProps:this.viewProps,viewName:"radgrid"}),this.view.element.style.gridTemplateColumns=`repeat(${i}, 1fr)`,this.cellCs_.forEach(t=>{t.view.inputElement.addEventListener("change",this.onCellInputChange_),this.view.element.appendChild(t.view.element)})}get cellControllers(){return this.cellCs_}findCellByValue(t){const e=this.cellValues_.findIndex(e=>e===t);return e<0?null:this.cellCs_[e]}onCellInputChange_(t){const e=t.currentTarget,i=this.cellCs_.findIndex(t=>t.view.inputElement===e);i<0||(this.value.rawValue=this.cellValues_[i])}},ed=pa({id:"radiogrid",type:"blade",accept(t){const e=Lo(t,t=>({cells:t.required.function,groupName:t.required.string,size:t.required.array(t.required.number),value:t.required.raw,view:t.required.constant("radiogrid"),label:t.optional.string}));return e?{params:e}:null},controller(t){const e=zr(t.params.value);return new Qo(t.document,{blade:t.blade,props:Rr.fromObject({label:t.params.label}),value:e,valueController:new td(t.document,{groupName:t.params.groupName,cellConfig:t.params.cells,size:t.params.size,value:e})})},api:t=>t.controller instanceof Qo&&t.controller.valueController instanceof td?new Wc(t.controller):null});function id(t){return pa({id:"input-radiogrid",type:"input",accept(e,i){if(!t.isType(e))return null;const n=Lo(i,t=>({cells:t.required.function,groupName:t.required.string,size:t.required.array(t.required.number),view:t.required.constant("radiogrid")}));return n?{initialValue:e,params:n}:null},binding:t.binding,controller:t=>new td(t.document,{cellConfig:t.params.cells,groupName:t.params.groupName,size:t.params.size,value:t.value})})}var nd=id({isType:t=>"number"==typeof t,binding:{reader:t=>so,writer:t=>Ol}}),sd=id({isType:t=>"string"==typeof t,binding:{reader:t=>pl,writer:t=>Ol}}),rd=id({isType:t=>"boolean"==typeof t,binding:{reader:t=>rl,writer:t=>Ol}}),od="essentials",ad='.tp-cbzgv,.tp-radv_b,.tp-rslv_k,.tp-cbzv_b{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-radv_b,.tp-rslv_k,.tp-cbzv_b{background-color:var(--btn-bg);border-radius:var(--bld-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--cnt-usz);line-height:var(--cnt-usz);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-radv_b:hover,.tp-rslv_k:hover,.tp-cbzv_b:hover{background-color:var(--btn-bg-h)}.tp-radv_b:focus,.tp-rslv_k:focus,.tp-cbzv_b:focus{background-color:var(--btn-bg-f)}.tp-radv_b:active,.tp-rslv_k:active,.tp-cbzv_b:active{background-color:var(--btn-bg-a)}.tp-radv_b:disabled,.tp-rslv_k:disabled,.tp-cbzv_b:disabled{opacity:.5}.tp-cbzgv{background-color:var(--in-bg);border-radius:var(--bld-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--cnt-usz);line-height:var(--cnt-usz);min-width:0;width:100%}.tp-cbzgv:hover{background-color:var(--in-bg-h)}.tp-cbzgv:focus{background-color:var(--in-bg-f)}.tp-cbzgv:active{background-color:var(--in-bg-a)}.tp-cbzgv:disabled{opacity:.5}.tp-btngridv{border-radius:var(--bld-br);display:grid;overflow:hidden;gap:2px}.tp-btngridv.tp-v-disabled{opacity:.5}.tp-btngridv .tp-btnv_b:disabled{opacity:1}.tp-btngridv .tp-btnv_b:disabled .tp-btnv_t{opacity:.5}.tp-btngridv .tp-btnv_b{border-radius:0}.tp-cbzv{position:relative}.tp-cbzv_h{display:flex}.tp-cbzv_b{margin-right:4px;position:relative;width:var(--cnt-usz)}.tp-cbzv_b svg{display:block;height:16px;left:50%;margin-left:-8px;margin-top:-8px;position:absolute;top:50%;width:16px}.tp-cbzv_b svg path{stroke:var(--bs-bg);stroke-width:2}.tp-cbzv_t{flex:1}.tp-cbzv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-cbzv.tp-cbzv-expanded .tp-cbzv_p{margin-top:var(--cnt-usp);opacity:1}.tp-cbzv.tp-cbzv-cpl .tp-cbzv_p{overflow:visible}.tp-cbzv .tp-popv{left:calc(-1 * var(--cnt-hp));position:absolute;right:calc(-1 * var(--cnt-hp));top:var(--cnt-usz)}.tp-cbzpv_t{margin-top:var(--cnt-usp)}.tp-cbzgv{height:auto;overflow:hidden;position:relative}.tp-cbzgv.tp-v-disabled{opacity:.5}.tp-cbzgv_p{left:16px;position:absolute;right:16px;top:0}.tp-cbzgv_g{cursor:pointer;display:block;height:calc(var(--cnt-usz) * 5);width:100%}.tp-cbzgv_u{opacity:.1;stroke:var(--in-fg);stroke-dasharray:1}.tp-cbzgv_l{fill:rgba(0,0,0,0);stroke:var(--in-fg)}.tp-cbzgv_v{opacity:.5;stroke:var(--in-fg);stroke-dasharray:1}.tp-cbzgv_h{border:var(--in-fg) solid 1px;border-radius:50%;box-sizing:border-box;height:4px;margin-left:-2px;margin-top:-2px;pointer-events:none;position:absolute;width:4px}.tp-cbzgv:focus .tp-cbzgv_h-sel{background-color:var(--in-fg);border-width:0}.tp-cbzprvv{cursor:pointer;height:4px;padding:4px 0;position:relative}.tp-cbzprvv_g{display:block;height:100%;overflow:visible;width:100%}.tp-cbzprvv_t{opacity:.5;stroke:var(--mo-fg)}.tp-cbzprvv_m{background-color:var(--mo-fg);border-radius:50%;height:4px;margin-left:-2px;margin-top:-2px;opacity:0;position:absolute;top:50%;transition:opacity .2s ease-out;width:4px}.tp-cbzprvv_m.tp-cbzprvv_m-a{opacity:1}.tp-fpsv{position:relative}.tp-fpsv_l{bottom:4px;color:var(--mo-fg);line-height:1;right:4px;pointer-events:none;position:absolute}.tp-fpsv_u{margin-left:.2em;opacity:.7}.tp-rslv{cursor:pointer;padding-left:8px;padding-right:8px}.tp-rslv.tp-v-disabled{opacity:.5}.tp-rslv_t{height:calc(var(--cnt-usz));position:relative}.tp-rslv_t::before{background-color:var(--in-bg);border-radius:1px;content:"";height:2px;margin-top:-1px;position:absolute;top:50%;left:-4px;right:-4px}.tp-rslv_b{bottom:0;top:0;position:absolute}.tp-rslv_b::before{background-color:var(--in-fg);content:"";height:2px;margin-top:-1px;position:absolute;top:50%;left:0;right:0}.tp-rslv_k{height:calc(var(--cnt-usz) - 8px);margin-top:calc((var(--cnt-usz) - 8px)/-2);position:absolute;top:50%;width:8px}.tp-rslv_k.tp-rslv_k-min{margin-left:-8px}.tp-rslv_k.tp-rslv_k-max{margin-left:0}.tp-rslv.tp-rslv-zero .tp-rslv_k.tp-rslv_k-min{border-bottom-right-radius:0;border-top-right-radius:0}.tp-rslv.tp-rslv-zero .tp-rslv_k.tp-rslv_k-max{border-bottom-left-radius:0;border-top-left-radius:0}.tp-rsltxtv{display:flex}.tp-rsltxtv_s{flex:1}.tp-rsltxtv_t{flex:1;margin-left:4px}.tp-radv_l{display:block;position:relative}.tp-radv_i{left:0;opacity:0;position:absolute;top:0}.tp-radv_b{opacity:.5}.tp-radv_i:hover+.tp-radv_b{background-color:var(--btn-bg-h)}.tp-radv_i:focus+.tp-radv_b{background-color:var(--btn-bg-f)}.tp-radv_i:active+.tp-radv_b{background-color:var(--btn-bg-a)}.tp-radv_i:checked+.tp-radv_b{opacity:1}.tp-radv_t{bottom:0;color:inherit;left:0;overflow:hidden;position:absolute;right:0;text-align:center;text-overflow:ellipsis;top:0}.tp-radv_i:disabled+.tp-radv_b>.tp-radv_t{opacity:.5}.tp-radgridv{border-radius:var(--bld-br);display:grid;overflow:hidden;gap:2px}.tp-radgridv.tp-v-disabled{opacity:.5}.tp-radgridv .tp-radv_b{border-radius:0}',ld=[rc,Vc,Bc,Gc,ed,rd,nd,sd],pd=(t,e,i="BG")=>{const n="a"in e;t.addBinding({get color(){return e.hex},set color(t){e.setColorByHEX(t)}},"color",{label:`${i} Color`,picker:"inline",expanded:!0}),n&&t.addBinding(e,"a",{min:0,max:1,step:.01,label:`${i} Alpha`})},hd=t=>{const e=(()=>{const t=window.location.pathname.split("/"),e=t.indexOf("examples"),i=Math.max(0,t.length-e-2);return"../".repeat(i)})(),i=t=>e+t;return Array.isArray(t)?t.map(i):i(t)},cd=t=>{if("number"==typeof t)return{value:t,unit:"number"};const e=String(t);return e.endsWith("%")?{value:parseFloat(e),unit:"%"}:(e.endsWith("px"),{value:parseFloat(e),unit:"px"})},dd=({gui:t,redGPUContext:e})=>((0,r.useEffect)(()=>{const i=t.addFolder({title:"RedGPUContext"});i.addBinding(e,"renderScale",{min:.01,max:1,step:.01}),i.addBlade({view:"separator"}),e.backgroundColor&&(pd(i,e.backgroundColor),i.addBlade({view:"separator"})),i.addBinding(e,"alphaMode",{options:{opaque:"opaque",premultiplied:"premultiplied"}}),i.addBlade({view:"separator"});const n=cd(e.width),s=cd(e.height),r={width:n.value,widthUnit:n.unit,height:s.value,heightUnit:s.unit},o=i.addFolder({title:"Size"}),a=()=>{e.width="number"===r.widthUnit?r.width:`${r.width}${r.widthUnit}`};o.addBinding(r,"width",{min:0,max:"%"===n.unit?200:4096,step:.01}).on("change",a),o.addBinding(r,"widthUnit",{options:{"%":"%",px:"px",number:"number"}}).on("change",t=>{a()});const l=()=>{e.height="number"===r.heightUnit?r.height:`${r.height}${r.heightUnit}`};o.addBinding(r,"height",{min:0,max:"%"===s.unit?200:4096,step:.01}).on("change",l),o.addBinding(r,"heightUnit",{options:{"%":"%",px:"px",number:"number"}}).on("change",()=>{l()});const p=i.addFolder({title:"setSize method test",expanded:!1});[["300","300"],["600","300"],["50%","300"],["300","50%"],["100%","100%"]].forEach(([t,i])=>{const n=`setSize(${t}, ${i})`;p.addButton({title:n}).on("click",()=>e.setSize(t,i))}),i.addBlade({view:"separator"});const h=i.addFolder({title:"Rect Info",expanded:!0});h.addBinding({get dpr(){return window.devicePixelRatio}},"dpr",{readonly:!0,label:"DPR",interval:500});const c={get screen(){const t=e.screenRectObject;return`x: ${t.x.toFixed(2)}, y: ${t.y.toFixed(2)}\nw: ${t.width.toFixed(2)}, h: ${t.height.toFixed(2)}`},get pixel(){const t=e.pixelRectObject;return`x: ${t.x}, y: ${t.y}\nw: ${t.width}, h: ${t.height}`}};return h.addBinding(c,"screen",{readonly:!0,label:"Screen Rect",multiline:!0,rows:2,interval:32}),h.addBinding(c,"pixel",{readonly:!0,label:"Pixel Rect",multiline:!0,rows:2,interval:32}),()=>{i.dispose()}},[t,e]),null),ud=(t,e)=>{e.addBinding(t,"useBackgroundColor"),t.backgroundColor&&pd(e,t.backgroundColor)},vd=({gui:t,scene:e})=>((0,r.useEffect)(()=>{if(!e)return;const i=e.name||"Scene",n=t.addFolder({title:i});return ud(e,n),()=>{n.dispose()}},[t,e]),null),md=({gui:t,redGPUContext:e})=>((0,r.useEffect)(()=>{const i=e.viewList;if(0===i.length)return;const n=1===i.length?i[0].name?.replace(/Instance/g,"")||"View 0":"ViewList",s=t.addFolder({title:n}),r=(t,e)=>{if("View3D"===t.constructor.name){e.addBinding(t,"useFrustumCulling"),e.addBinding(t,"useDistanceCulling"),e.addBinding(t,"distanceCulling",{min:0,max:1e3,step:1}),e.addBlade({view:"separator"});const i=e.addFolder({title:"Debug Helpers"}),n={get grid(){return!!t.grid},set grid(e){t.grid=e},get axis(){return!!t.axis},set axis(e){t.axis=e}};i.addBinding(n,"grid",{label:"Show Grid"}),i.addBinding(n,"axis",{label:"Show Axis"}),e.addBlade({view:"separator"})}const i={width:cd(t.width).value,widthUnit:cd(t.width).unit,height:cd(t.height).value,heightUnit:cd(t.height).unit,x:cd(t.x).value,xUnit:cd(t.x).unit,y:cd(t.y).value,yUnit:cd(t.y).unit},n=e.addFolder({title:"Size & Position"}),s=e=>{const n=i[e],s=i[`${e}Unit`];t[e]="number"===s?n:`${n}${s}`};if(["width","height","x","y"].forEach(t=>{const e=t,r=`${e}Unit`;n.addBinding(i,e,{min:0,max:"%"===i[r]?200:4096,step:.01}).on("change",()=>s(e)),n.addBinding(i,r,{label:`${e} Unit`,options:{"%":"%",px:"px",number:"number"}}).on("change",()=>s(e))}),t.scene){e.addBlade({view:"separator"});const i=e.addFolder({title:t.scene.name||"Scene",expanded:!0});ud(t.scene,i)}};if(1===i.length)r(i[0],s);else{const t=s.addTab({pages:i.map((t,e)=>({title:t.name?.replace(/Instance/g,"")||`View ${e}`}))});i.forEach((e,i)=>{r(e,t.pages[i])})}return()=>{s.dispose()}},[t,e]),null),bd=[{name:"2K - the sky is on fire",path:"assets/hdr/2k/the_sky_is_on_fire_2k.hdr",nit:3e4},{name:"Cannon_Exterior",path:"assets/hdr/Cannon_Exterior.hdr",nit:25e3},{name:"field",path:"assets/hdr/field.hdr",nit:3e4},{name:"neutral.37290948",path:"assets/hdr/neutral.37290948.hdr",nit:2e4},{name:"pisa",path:"assets/hdr/pisa.hdr",nit:25e3},{name:"6 cube face asset",path:["assets/skybox/px.jpg","assets/skybox/nx.jpg","assets/skybox/py.jpg","assets/skybox/ny.jpg","assets/skybox/pz.jpg","assets/skybox/nz.jpg"],nit:100}],gd=({gui:t,view:e})=>{const i=s(t=>t.RedGPU);return(0,r.useEffect)(()=>{if(!e)return;const n=t.addFolder({title:"Lighting",expanded:!0}),s={texture:bd[0].name,useLight:e.scene.lightManager.directionalLights.length>0,lux:e.scene.lightManager.directionalLights[0]?.lux||1e5,useIBL:!0,intensityMultiplier:e.ibl?.intensityMultiplier||1},r={finalPath:""};let o;const a=n=>{if(!s.useIBL)return;const a=bd.find(t=>t.name===n);if(!a)return;const l=a.path;(t=>{const e=t=>t.split("/").pop()||t;r.finalPath=Array.isArray(t)?t.map(e).join("\n"):e(t),o&&o.refresh()})(l);const p=hd(l),h=a.nit||2e4;if(i){const t=new i.Resource.IBL(e.redGPUContext,p,h);t.intensityMultiplier=s.intensityMultiplier,e.ibl=t}t.refresh()},l=n=>{if(n){if(0===e.scene.lightManager.directionalLights.length&&i){const t=new i.Light.DirectionalLight;t.lux=s.lux,e.scene.lightManager.addDirectionalLight(t)}}else e.scene.lightManager.removeAllLight();t.refresh()};n.addBinding(s,"useLight").on("change",t=>l(t.value)),n.addBinding(s,"lux",{min:0,max:1e5,step:1}).on("change",t=>{const i=e.scene.lightManager.directionalLights;i.length>0&&(i[0].lux=t.value)}),n.addBinding(s,"useIBL").on("change",t=>{t.value?(a(s.texture),p.disabled=!1):(e.ibl=null,p.disabled=!0)});const p=n.addFolder({title:"IBL Settings",expanded:!0});return p.addBinding(s,"texture",{options:bd.reduce((t,e)=>({...t,[e.name]:e.name}),{})}).on("change",t=>a(t.value)),p.addBinding(s,"intensityMultiplier",{min:0,max:5,step:.1}).on("change",t=>{e.ibl&&(e.ibl.intensityMultiplier=t.value)}),p.addBinding({get luminance(){return e.ibl?e.ibl.luminance:0},set luminance(t){e.ibl&&(e.ibl.luminance=t)}},"luminance",{min:0,max:1e5,step:100}),o=p.addBinding(r,"finalPath",{readonly:!0,label:"source",multiline:!0,rows:2}),l(s.useLight),s.useIBL?a(s.texture):p.disabled=!0,()=>{n.dispose()}},[t,e,i]),null},wd=({gui:t,view:e})=>{const i=s(t=>t.RedGPU);return(0,r.useEffect)(()=>{if(!e)return;const n=t.addFolder({title:"SkyBox",expanded:!0}),s={useSkyBox:!0,texture:bd[0].name,blur:e.skybox?.blur||0,intensityMultiplier:e.skybox?.intensityMultiplier||1,opacity:e.skybox?.opacity||1},r={finalPath:""};let o;const a=n=>{if(!s.useSkyBox)return;const a=bd.find(t=>t.name===n);if(!a)return;const l=a.path;(t=>{const e=t=>t.split("/").pop()||t;r.finalPath=Array.isArray(t)?t.map(e).join("\n"):e(t),o&&o.refresh()})(l);const p=hd(l),h=a.nit||2e4;if(i){const t="string"==typeof l&&l.toLowerCase().endsWith(".hdr")?new i.Resource.IBL(e.redGPUContext,p,h).environmentTexture:new i.Resource.CubeTexture(e.redGPUContext,p,!0);e.skybox?(e.skybox.texture=t,e.skybox.luminance=h):e.skybox=new i.Display.SkyBox(e.redGPUContext,t,h),e.skybox.blur=s.blur,e.skybox.intensityMultiplier=s.intensityMultiplier,e.skybox.opacity=s.opacity}t.refresh()};n.addBinding(s,"useSkyBox").on("change",t=>{t.value?(a(s.texture),l.disabled=!1):(e.skybox=null,l.disabled=!0)});const l=n.addFolder({title:"SkyBox Settings",expanded:!0});return l.addBinding(s,"texture",{options:bd.reduce((t,e)=>({...t,[e.name]:e.name}),{})}).on("change",t=>a(t.value)),l.addBinding(s,"blur",{min:0,max:1,step:.01}).on("change",t=>{e.skybox&&(e.skybox.blur=t.value)}),l.addBinding(s,"intensityMultiplier",{min:0,max:5,step:.1}).on("change",t=>{e.skybox&&(e.skybox.intensityMultiplier=t.value)}),l.addBinding(s,"opacity",{min:0,max:1,step:.01}).on("change",t=>{e.skybox&&(e.skybox.opacity=t.value)}),l.addBinding({get luminance(){return e.skybox?e.skybox.luminance:0},set luminance(t){e.skybox&&(e.skybox.luminance=t)}},"luminance",{min:0,max:1e5,step:100}),o=l.addBinding(r,"finalPath",{readonly:!0,label:"source",multiline:!0,rows:2}),s.useSkyBox?a(s.texture):l.disabled=!0,()=>{n.dispose()}},[t,e,i]),null},_d=n(),fd=()=>{const t=s(t=>t.guiConfig),e=s(t=>t.redGPUContext),i=(0,r.useRef)(null),[n,o]=(0,r.useState)(null);return(0,r.useEffect)(()=>{if(i.current&&t){const n=new yr({container:i.current});if(n.registerPlugin(Pr),o(n),t.gui)try{t.gui(n)}catch(e){console.error("Error in custom GUI callback:",e)}return()=>{n.dispose(),o(null)}}},[t]),t? (0,_d.jsxs)(_d.Fragment,{children:[ +import{n as t,r as e}from"./rolldown-runtime-BztV3taV.js?t=1781143364605";import{r as i,t as n}from"./vendor-react-BwJpJ84T.js?t=1781143364605";import{t as s}from"./store-2JcZHIgY.js?t=1781143364605";var r=e(i(),1);function o(t){return null==t}function a(t){return null!==t&&"object"==typeof t}function l(t){return null!==t&&"object"==typeof t}function p(t,e){if(t.length!==e.length)return!1;for(let i=0;i{const s=t[n],r=e[n];return l(s)&&l(r)?Object.assign(Object.assign({},i),{[n]:h(s,r)}):Object.assign(Object.assign({},i),{[n]:n in e?r:s})},{})}function c(t){return!!a(t)&&"target"in t}var d={alreadydisposed:()=>"View has been already disposed",invalidparams:t=>`Invalid parameters for '${t.name}'`,nomatchingcontroller:t=>`No matching controller for '${t.key}'`,nomatchingview:t=>`No matching view for '${JSON.stringify(t.params)}'`,notbindable:()=>"Value is not bindable",notcompatible:t=>`Not compatible with plugin '${t.id}'`,propertynotfound:t=>`Property '${t.name}' not found`,shouldneverhappen:()=>"This error should never happen"},u=class t{static alreadyDisposed(){return new t({type:"alreadydisposed"})}static notBindable(){return new t({type:"notbindable"})}static notCompatible(e,i){return new t({type:"notcompatible",context:{id:`${e}.${i}`}})}static propertyNotFound(e){return new t({type:"propertynotfound",context:{name:e}})}static shouldNeverHappen(){return new t({type:"shouldneverhappen"})}constructor(t){var e;this.message=null!==(e=d[t.type](t.context))&&void 0!==e?e:"Unexpected error",this.name=this.constructor.name,this.stack=new Error(this.message).stack,this.type=t.type}toString(){return this.message}},v=class t{constructor(t,e){this.obj_=t,this.key=e}static isBindable(t){return null!==t&&("object"==typeof t||"function"==typeof t)}read(){return this.obj_[this.key]}write(t){this.obj_[this.key]=t}writeProperty(e,i){const n=this.read();if(!t.isBindable(n))throw u.notBindable();if(!(e in n))throw u.propertyNotFound(e);n[e]=i}},m=class{constructor(){this.observers_={}}on(t,e,i){var n;let s=this.observers_[t];return s||(s=this.observers_[t]=[]),s.push({handler:e,key:null!==(n=null==i?void 0:i.key)&&void 0!==n?n:e}),this}off(t,e){const i=this.observers_[t];return i&&(this.observers_[t]=i.filter(t=>t.key!==e)),this}emit(t,e){const i=this.observers_[t];i&&i.forEach(t=>{t.handler(e)})}},b=class{constructor(t,e){var i;this.constraint_=null==e?void 0:e.constraint,this.equals_=null!==(i=null==e?void 0:e.equals)&&void 0!==i?i:(t,e)=>t===e,this.emitter=new m,this.rawValue_=t}get constraint(){return this.constraint_}get rawValue(){return this.rawValue_}set rawValue(t){this.setRawValue(t,{forceEmit:!1,last:!0})}setRawValue(t,e){const i=null!=e?e:{forceEmit:!1,last:!0},n=this.constraint_?this.constraint_.constrain(t):t,s=this.rawValue_;this.equals_(s,n)&&!i.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=n,this.emitter.emit("change",{options:i,previousRawValue:s,rawValue:n,sender:this}))}},g=class{constructor(t){this.emitter=new m,this.value_=t}get rawValue(){return this.value_}set rawValue(t){this.setRawValue(t,{forceEmit:!1,last:!0})}setRawValue(t,e){const i=null!=e?e:{forceEmit:!1,last:!0},n=this.value_;(n!==t||i.forceEmit)&&(this.emitter.emit("beforechange",{sender:this}),this.value_=t,this.emitter.emit("change",{options:i,previousRawValue:n,rawValue:this.value_,sender:this}))}},w=class{constructor(t){this.emitter=new m,this.onValueBeforeChange_=this.onValueBeforeChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.value_=t,this.value_.emitter.on("beforechange",this.onValueBeforeChange_),this.value_.emitter.on("change",this.onValueChange_)}get rawValue(){return this.value_.rawValue}onValueBeforeChange_(t){this.emitter.emit("beforechange",Object.assign(Object.assign({},t),{sender:this}))}onValueChange_(t){this.emitter.emit("change",Object.assign(Object.assign({},t),{sender:this}))}};function _(t,e){const i=null==e?void 0:e.constraint,n=null==e?void 0:e.equals;return i||n?new b(t,e):new g(t)}var f=class t{constructor(t){this.emitter=new m,this.valMap_=t;for(const e in this.valMap_)this.valMap_[e].emitter.on("change",()=>{this.emitter.emit("change",{key:e,sender:this})})}static createCore(t){return Object.keys(t).reduce((e,i)=>Object.assign(e,{[i]:_(t[i])}),{})}static fromObject(e){return new t(this.createCore(e))}get(t){return this.valMap_[t].rawValue}set(t,e){this.valMap_[t].rawValue=e}value(t){return this.valMap_[t]}},x=class{constructor(t){this.values=f.fromObject({max:t.max,min:t.min})}constrain(t){const e=this.values.get("max"),i=this.values.get("min");return Math.min(Math.max(t,i),e)}},C=class{constructor(t){this.values=f.fromObject({max:t.max,min:t.min})}constrain(t){const e=this.values.get("max"),i=this.values.get("min");let n=t;return o(i)||(n=Math.max(n,i)),o(e)||(n=Math.min(n,e)),n}},y=class{constructor(t,e=0){this.step=t,this.origin=e}constrain(t){const e=this.origin%this.step;return e+Math.round((t-e)/this.step)*this.step}},P=class{constructor(t){this.text=t}evaluate(){return Number(this.text)}toString(){return this.text}},E={"**":(t,e)=>Math.pow(t,e),"*":(t,e)=>t*e,"/":(t,e)=>t/e,"%":(t,e)=>t%e,"+":(t,e)=>t+e,"-":(t,e)=>t-e,"<<":(t,e)=>t<>":(t,e)=>t>>e,">>>":(t,e)=>t>>>e,"&":(t,e)=>t&e,"^":(t,e)=>t^e,"|":(t,e)=>t|e},k=class{constructor(t,e,i){this.left=e,this.operator=t,this.right=i}evaluate(){const t=E[this.operator];if(!t)throw new Error(`unexpected binary operator: '${this.operator}`);return t(this.left.evaluate(),this.right.evaluate())}toString(){return["b(",this.left.toString(),this.operator,this.right.toString(),")"].join(" ")}},V={"+":t=>t,"-":t=>-t,"~":t=>~t},L=class{constructor(t,e){this.operator=t,this.expression=e}evaluate(){const t=V[this.operator];if(!t)throw new Error(`unexpected unary operator: '${this.operator}`);return t(this.expression.evaluate())}toString(){return["u(",this.operator,this.expression.toString(),")"].join(" ")}};function M(t){return(e,i)=>{for(let n=0;ne.startsWith(t,i))[0];return n?(i+=n.length,{cursor:i+=S(e,i).length,operator:n}):null}var z=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((t,e)=>function(t,e){return(i,n)=>{const s=t(i,n);if(!s)return null;n=s.cursor;let r=s.evaluable;for(;;){const s=T(e,i,n);if(!s)break;n=s.cursor;const o=t(i,n);if(!o)return null;n=o.cursor,r=new k(s.operator,r,o.evaluable)}return r?{cursor:n,evaluable:r}:null}}(t,e),function t(e,i){const n=function(t,e){var i;return null!==(i=function(t,e){const i=B(t,e);return e+=i.length,""===i?null:{evaluable:new P(i),cursor:e}}(t,e))&&void 0!==i?i:function(t,e){const i=t.substr(e,1);if(e+=i.length,"("!==i)return null;const n=R(t,e);if(!n)return null;e=n.cursor,e+=S(t,e).length;const s=t.substr(e,1);return e+=s.length,")"!==s?null:{evaluable:n.evaluable,cursor:e}}(t,e)}(e,i);if(n)return n;const s=e.substr(i,1);if(i+=s.length,"+"!==s&&"-"!==s&&"~"!==s)return null;const r=t(e,i);return r?{cursor:i=r.cursor,evaluable:new L(s,r.evaluable)}:null});function R(t,e){return e+=S(t,e).length,z(t,e)}function N(t){var e;const i=function(t){const e=R(t,0);return e?e.cursor+S(t,e.cursor).length!==t.length?null:e.evaluable:null}(t);return null!==(e=null==i?void 0:i.evaluate())&&void 0!==e?e:null}function K(t){if("number"==typeof t)return t;if("string"==typeof t){const e=N(t);if(!o(e))return e}return 0}function I(t){return String(t)}function U(t){return e=>e.toFixed(Math.max(Math.min(t,20),0))}function F(t,e,i,n,s){return n+(t-e)/(i-e)*(s-n)}function $(t){return String(t.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function q(t,e,i){return Math.min(Math.max(t,e),i)}function H(t,e){return(t%e+e)%e}function G(t,e){return o(t.step)?Math.max($(e),2):$(t.step)}function Y(t){var e;return null!==(e=t.step)&&void 0!==e?e:1}function X(t,e){var i;const n=Math.abs(null!==(i=t.step)&&void 0!==i?i:e);return 0===n?.1:Math.pow(10,Math.floor(Math.log10(n))-1)}function W(t,e){return o(t.step)?null:new y(t.step,e)}function Q(t){return o(t.max)||o(t.min)?o(t.max)&&o(t.min)?null:new C({max:t.max,min:t.min}):new x({max:t.max,min:t.min})}function J(t,e){var i,n,s;return{formatter:null!==(i=t.format)&&void 0!==i?i:U(G(t,e)),keyScale:null!==(n=t.keyScale)&&void 0!==n?n:Y(t),pointerScale:null!==(s=t.pointerScale)&&void 0!==s?s:X(t,e)}}function Z(t){return{format:t.optional.function,keyScale:t.optional.number,max:t.optional.number,min:t.optional.number,pointerScale:t.optional.number,step:t.optional.number}}function tt(t){return{constraint:t.constraint,textProps:f.fromObject(J(t.params,t.initialValue))}}var et=class{constructor(t){this.controller=t}get element(){return this.controller.view.element}get disabled(){return this.controller.viewProps.get("disabled")}set disabled(t){this.controller.viewProps.set("disabled",t)}get hidden(){return this.controller.viewProps.get("hidden")}set hidden(t){this.controller.viewProps.set("hidden",t)}dispose(){this.controller.viewProps.set("disposed",!0)}importState(t){return this.controller.importState(t)}exportState(){return this.controller.exportState()}},it=class{constructor(t){this.target=t}},nt=class extends it{constructor(t,e,i){super(t),this.value=e,this.last=null==i||i}},st=class extends it{constructor(t,e){super(t),this.expanded=e}},rt=class extends it{constructor(t,e){super(t),this.index=e}},ot=class extends it{constructor(t,e){super(t),this.native=e}},at=class extends et{constructor(t){super(t),this.onValueChange_=this.onValueChange_.bind(this),this.emitter_=new m,this.controller.value.emitter.on("change",this.onValueChange_)}get label(){return this.controller.labelController.props.get("label")}set label(t){this.controller.labelController.props.set("label",t)}get key(){return this.controller.value.binding.target.key}get tag(){return this.controller.tag}set tag(t){this.controller.tag=t}on(t,e){const i=e.bind(this);return this.emitter_.on(t,t=>{i(t)},{key:e}),this}off(t,e){return this.emitter_.off(t,e),this}refresh(){this.controller.value.fetch()}onValueChange_(t){const e=this.controller.value;this.emitter_.emit("change",new nt(this,e.binding.target.read(),t.options.last))}},lt=class{constructor(t,e){this.onValueBeforeChange_=this.onValueBeforeChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.binding=e,this.value_=t,this.value_.emitter.on("beforechange",this.onValueBeforeChange_),this.value_.emitter.on("change",this.onValueChange_),this.emitter=new m}get rawValue(){return this.value_.rawValue}set rawValue(t){this.value_.rawValue=t}setRawValue(t,e){this.value_.setRawValue(t,e)}fetch(){this.value_.rawValue=this.binding.read()}push(){this.binding.write(this.value_.rawValue)}onValueBeforeChange_(t){this.emitter.emit("beforechange",Object.assign(Object.assign({},t),{sender:this}))}onValueChange_(t){this.push(),this.emitter.emit("change",Object.assign(Object.assign({},t),{sender:this}))}};function pt(t){return e=>i=>{if(!e&&void 0===i)return{succeeded:!1,value:void 0};if(e&&void 0===i)return{succeeded:!0,value:void 0};const n=t(i);return void 0!==n?{succeeded:!0,value:n}:{succeeded:!1,value:void 0}}}function ht(t){return{custom:e=>pt(e)(t),boolean:pt(t=>"boolean"==typeof t?t:void 0)(t),number:pt(t=>"number"==typeof t?t:void 0)(t),string:pt(t=>"string"==typeof t?t:void 0)(t),function:pt(t=>"function"==typeof t?t:void 0)(t),constant:e=>pt(t=>t===e?e:void 0)(t),raw:pt(t=>t)(t),object:e=>pt(t=>{var i;if(null!==(i=t)&&"object"==typeof i)return function(t,e){return Object.keys(e).reduce((i,n)=>{if(void 0===i)return;const s=(0,e[n])(t[n]);return s.succeeded?Object.assign(Object.assign({},i),{[n]:s.value}):void 0},{})}(t,e)})(t),array:e=>pt(t=>{var i;if(Array.isArray(t))return i=e,t.reduce((t,e)=>{if(void 0===t)return;const n=i(e);return n.succeeded&&void 0!==n.value?[...t,n.value]:void 0},[])})(t)}}var ct={optional:ht(!0),required:ht(!1)};function dt(t,e){const i=e(ct),n=ct.required.object(i)(t);return n.succeeded?n.value:void 0}function ut(t,e,i,n){if(e&&!e(t))return!1;const s=dt(t,i);return!!s&&n(s)}function vt(t,e){var i;return h(null!==(i=null==t?void 0:t())&&void 0!==i?i:{},e)}function mt(t){return"value"in t}function bt(t){return!(!a(t)||!("binding"in t))&&c(t.binding)}var gt="http://www.w3.org/2000/svg";function wt(t){t.offsetHeight}function _t(t){return void 0!==t.ontouchstart}var ft={check:'',dropdown:'',p2dpad:''};function xt(t,e){const i=t.createElementNS(gt,"svg");return i.innerHTML=ft[e],i}function Ct(t,e,i){t.insertBefore(e,t.children[i])}function yt(t){t.parentElement&&t.parentElement.removeChild(t)}function Pt(t){for(;t.children.length>0;)t.removeChild(t.children[0])}function Et(t){return t.relatedTarget?t.relatedTarget:"explicitOriginalTarget"in t?t.explicitOriginalTarget:null}function kt(t,e){t.emitter.on("change",t=>{e(t.rawValue)}),e(t.rawValue)}function Vt(t,e,i){kt(t.value(e),i)}var Lt="tp";function Mt(t){return(e,i)=>[Lt,"-",t,"v",e?`_${e}`:"",i?`-${i}`:""].join("")}var St=Mt("lbl"),jt=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(St()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(St("l")),Vt(e.props,"label",e=>{o(e)?this.element.classList.add(St(void 0,"nol")):(this.element.classList.remove(St(void 0,"nol")),function(t){for(;t.childNodes.length>0;)t.removeChild(t.childNodes[0])}(i),i.appendChild(function(t,e){const i=t.createDocumentFragment();return e.split("\n").map(e=>t.createTextNode(e)).forEach((e,n)=>{n>0&&i.appendChild(t.createElement("br")),i.appendChild(e)}),i}(t,e)))}),this.element.appendChild(i),this.labelElement=i;const n=t.createElement("div");n.classList.add(St("v")),this.element.appendChild(n),this.valueElement=n}},Dt=class{constructor(t,e){this.props=e.props,this.valueController=e.valueController,this.viewProps=e.valueController.viewProps,this.view=new jt(t,{props:e.props,viewProps:this.viewProps}),this.view.valueElement.appendChild(this.valueController.view.element)}importProps(t){return ut(t,null,t=>({label:t.optional.string}),t=>(this.props.set("label",t.label),!0))}exportProps(){return vt(null,{label:this.props.get("label")})}},At=Mt(""),Ot={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"},Bt=class{constructor(t){this.parent_=null,this.blade=t.blade,this.view=t.view,this.viewProps=t.viewProps;const e=this.view.element;this.blade.value("positions").emitter.on("change",()=>{["veryfirst","first","last","verylast"].forEach(t=>{e.classList.remove(At(void 0,Ot[t]))}),this.blade.get("positions").forEach(t=>{e.classList.add(At(void 0,Ot[t]))})}),this.viewProps.handleDispose(()=>{yt(e)})}get parent(){return this.parent_}set parent(t){this.parent_=t,this.viewProps.set("parent",this.parent_?this.parent_.viewProps:null)}importState(t){return ut(t,null,t=>({disabled:t.required.boolean,hidden:t.required.boolean}),t=>(this.viewProps.importState(t),!0))}exportState(){return vt(null,Object.assign({},this.viewProps.exportState()))}},Tt=class extends Bt{constructor(t,e){if(e.value!==e.valueController.value)throw u.shouldNeverHappen();const i=e.valueController.viewProps,n=new Dt(t,{blade:e.blade,props:e.props,valueController:e.valueController});super(Object.assign(Object.assign({},e),{view:new jt(t,{props:e.props,viewProps:i}),viewProps:i})),this.labelController=n,this.value=e.value,this.valueController=e.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}importState(t){return ut(t,e=>{var i,n,s;return super.importState(e)&&this.labelController.importProps(e)&&(null===(s=null===(n=(i=this.valueController).importProps)||void 0===n?void 0:n.call(i,t))||void 0===s||s)},t=>({value:t.optional.raw}),t=>(t.value&&(this.value.rawValue=t.value),!0))}exportState(){var t,e,i;return vt(()=>super.exportState(),Object.assign(Object.assign({value:this.value.rawValue},this.labelController.exportProps()),null!==(i=null===(e=(t=this.valueController).exportProps)||void 0===e?void 0:e.call(t))&&void 0!==i?i:{}))}};function zt(t){const e=Object.assign({},t);return delete e.value,e}var Rt=class extends Tt{constructor(t,e){super(t,e),this.tag=e.tag}importState(t){return ut(t,e=>super.importState(zt(t)),t=>({tag:t.optional.string}),t=>(this.tag=t.tag,!0))}exportState(){return vt(()=>zt(super.exportState()),{binding:{key:this.value.binding.target.key,value:this.value.binding.target.read()},tag:this.tag})}},Nt=class extends Rt{importState(t){return ut(t,t=>super.importState(t),t=>({binding:t.required.object({value:t.required.raw})}),t=>(this.value.binding.inject(t.binding.value),this.value.fetch(),!0))}};function Kt(t,e){for(;t.lengtht.length?i.splice(0,i.length-t.length):Kt(i,t.length),i}(this.value_.rawValue,this.binding.read())}onTick_(){this.fetch()}onValueBeforeChange_(t){this.emitter.emit("beforechange",Object.assign(Object.assign({},t),{sender:this}))}onValueChange_(t){this.emitter.emit("change",Object.assign(Object.assign({},t),{sender:this}))}},Ft=class extends Rt{exportState(){return vt(()=>super.exportState(),{binding:{readonly:!0}})}};var $t=class extends et{get label(){return this.controller.labelController.props.get("label")}set label(t){this.controller.labelController.props.set("label",t)}get title(){var t;return null!==(t=this.controller.buttonController.props.get("title"))&&void 0!==t?t:""}set title(t){this.controller.buttonController.props.set("title",t)}on(t,e){const i=e.bind(this);return this.controller.buttonController.emitter.on(t,t=>{i(new ot(this,t.nativeEvent))}),this}off(t,e){return this.controller.buttonController.emitter.off(t,e),this}};function qt(t,e){return i=>{!function(t,e,i){i?t.classList.add(e):t.classList.remove(e)}(t,e,i)}}function Ht(t,e){kt(t,t=>{e.textContent=null!=t?t:""})}var Gt=Mt("btn"),Yt=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Gt()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("button");i.classList.add(Gt("b")),e.viewProps.bindDisabled(i),this.element.appendChild(i),this.buttonElement=i;const n=t.createElement("div");n.classList.add(Gt("t")),Ht(e.props.value("title"),n),this.buttonElement.appendChild(n)}},Xt=class{constructor(t,e){this.emitter=new m,this.onClick_=this.onClick_.bind(this),this.props=e.props,this.viewProps=e.viewProps,this.view=new Yt(t,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}importProps(t){return ut(t,null,t=>({title:t.optional.string}),t=>(this.props.set("title",t.title),!0))}exportProps(){return vt(null,{title:this.props.get("title")})}onClick_(t){this.emitter.emit("click",{nativeEvent:t,sender:this})}},Wt=class extends Bt{constructor(t,e){const i=new Xt(t,{props:e.buttonProps,viewProps:e.viewProps}),n=new Dt(t,{blade:e.blade,props:e.labelProps,valueController:i});super({blade:e.blade,view:n.view,viewProps:e.viewProps}),this.buttonController=i,this.labelController=n}importState(t){return ut(t,t=>super.importState(t)&&this.buttonController.importProps(t)&&this.labelController.importProps(t),()=>({}),()=>!0)}exportState(){return vt(()=>super.exportState(),Object.assign(Object.assign({},this.buttonController.exportProps()),this.labelController.exportProps()))}},Qt=class{constructor(t){const[e,i]=t.split("-"),n=e.split(".");this.major=parseInt(n[0],10),this.minor=parseInt(n[1],10),this.patch=parseInt(n[2],10),this.prerelease=null!=i?i:null}toString(){const t=[this.major,this.minor,this.patch].join(".");return null!==this.prerelease?[t,this.prerelease].join("-"):t}},Jt=new Qt("2.0.5");function Zt(t){return Object.assign({core:Jt},t)}var te=Zt({id:"button",type:"blade",accept(t){const e=dt(t,t=>({title:t.required.string,view:t.required.constant("button"),label:t.optional.string}));return e?{params:e}:null},controller:t=>new Wt(t.document,{blade:t.blade,buttonProps:f.fromObject({title:t.params.title}),labelProps:f.fromObject({label:t.params.label}),viewProps:t.viewProps}),api:t=>t.controller instanceof Wt?new $t(t.controller):null}),ee=class{constructor(t,e){this.onRackValueChange_=this.onRackValueChange_.bind(this),this.controller_=t,this.emitter_=new m,this.pool_=e,this.controller_.rack.emitter.on("valuechange",this.onRackValueChange_)}get children(){return this.controller_.rack.children.map(t=>this.pool_.createApi(t))}addBinding(t,e,i){const n=null!=i?i:{},s=this.controller_.element.ownerDocument,r=this.pool_.createBinding(s,function(t,e){if(!v.isBindable(t))throw u.notBindable();return new v(t,e)}(t,e),n),o=this.pool_.createBindingApi(r);return this.add(o,n.index)}addFolder(t){return function(t,e){return t.addBlade(Object.assign(Object.assign({},e),{view:"folder"}))}(this,t)}addButton(t){return function(t,e){return t.addBlade(Object.assign(Object.assign({},e),{view:"button"}))}(this,t)}addTab(t){return function(t,e){return t.addBlade(Object.assign(Object.assign({},e),{view:"tab"}))}(this,t)}add(t,e){const i=t.controller;return this.controller_.rack.add(i,e),t}remove(t){this.controller_.rack.remove(t.controller)}addBlade(t){const e=this.controller_.element.ownerDocument,i=this.pool_.createBlade(e,t),n=this.pool_.createApi(i);return this.add(n,t.index)}on(t,e){const i=e.bind(this);return this.emitter_.on(t,t=>{i(t)},{key:e}),this}off(t,e){return this.emitter_.off(t,e),this}refresh(){this.children.forEach(t=>{var e;a(e=t)&&"refresh"in e&&"function"==typeof e.refresh&&t.refresh()})}onRackValueChange_(t){const e=t.bladeController,i=this.pool_.createApi(e),n=bt(e.value)?e.value.binding:null;this.emitter_.emit("change",new nt(i,n?n.target.read():e.value.rawValue,t.options.last))}},ie=class extends et{constructor(t,e){super(t),this.rackApi_=new ee(t.rackController,e)}refresh(){this.rackApi_.refresh()}},ne=class extends Bt{constructor(t){super({blade:t.blade,view:t.view,viewProps:t.rackController.viewProps}),this.rackController=t.rackController}importState(t){return ut(t,t=>super.importState(t),t=>({children:t.required.array(t.required.raw)}),t=>this.rackController.rack.children.every((e,i)=>e.importState(t.children[i])))}exportState(){return vt(()=>super.exportState(),{children:this.rackController.rack.children.map(t=>t.exportState())})}};function se(t){return"rackController"in t}var re=class{constructor(t){this.emitter=new m,this.items_=[],this.cache_=new Set,this.onSubListAdd_=this.onSubListAdd_.bind(this),this.onSubListRemove_=this.onSubListRemove_.bind(this),this.extract_=t}get items(){return this.items_}allItems(){return Array.from(this.cache_)}find(t){for(const e of this.allItems())if(t(e))return e;return null}includes(t){return this.cache_.has(t)}add(t,e){if(this.includes(t))throw u.shouldNeverHappen();const i=void 0!==e?e:this.items_.length;this.items_.splice(i,0,t),this.cache_.add(t);const n=this.extract_(t);n&&(n.emitter.on("add",this.onSubListAdd_),n.emitter.on("remove",this.onSubListRemove_),n.allItems().forEach(t=>{this.cache_.add(t)})),this.emitter.emit("add",{index:i,item:t,root:this,target:this})}remove(t){const e=this.items_.indexOf(t);if(e<0)return;this.items_.splice(e,1),this.cache_.delete(t);const i=this.extract_(t);i&&(i.allItems().forEach(t=>{this.cache_.delete(t)}),i.emitter.off("add",this.onSubListAdd_),i.emitter.off("remove",this.onSubListRemove_)),this.emitter.emit("remove",{index:e,item:t,root:this,target:this})}onSubListAdd_(t){this.cache_.add(t.item),this.emitter.emit("add",{index:t.index,item:t.item,root:this,target:t.target})}onSubListRemove_(t){this.cache_.delete(t.item),this.emitter.emit("remove",{index:t.index,item:t.item,root:this,target:t.target})}};function oe(t){return se(t)?t.rackController.rack.bcSet_:null}var ae=class{constructor(t){var e,i;this.emitter=new m,this.onBladePositionsChange_=this.onBladePositionsChange_.bind(this),this.onSetAdd_=this.onSetAdd_.bind(this),this.onSetRemove_=this.onSetRemove_.bind(this),this.onChildDispose_=this.onChildDispose_.bind(this),this.onChildPositionsChange_=this.onChildPositionsChange_.bind(this),this.onChildValueChange_=this.onChildValueChange_.bind(this),this.onChildViewPropsChange_=this.onChildViewPropsChange_.bind(this),this.onRackLayout_=this.onRackLayout_.bind(this),this.onRackValueChange_=this.onRackValueChange_.bind(this),this.blade_=null!==(e=t.blade)&&void 0!==e?e:null,null===(i=this.blade_)||void 0===i||i.value("positions").emitter.on("change",this.onBladePositionsChange_),this.viewProps=t.viewProps,this.bcSet_=new re(oe),this.bcSet_.emitter.on("add",this.onSetAdd_),this.bcSet_.emitter.on("remove",this.onSetRemove_)}get children(){return this.bcSet_.items}add(t,e){var i;null===(i=t.parent)||void 0===i||i.remove(t),t.parent=this,this.bcSet_.add(t,e)}remove(t){t.parent=null,this.bcSet_.remove(t)}find(t){return this.bcSet_.allItems().filter(t)}onSetAdd_(t){this.updatePositions_();const e=t.target===t.root;if(this.emitter.emit("add",{bladeController:t.item,index:t.index,root:e,sender:this}),!e)return;const i=t.item;if(i.viewProps.emitter.on("change",this.onChildViewPropsChange_),i.blade.value("positions").emitter.on("change",this.onChildPositionsChange_),i.viewProps.handleDispose(this.onChildDispose_),mt(i))i.value.emitter.on("change",this.onChildValueChange_);else if(se(i)){const t=i.rackController.rack;if(t){const e=t.emitter;e.on("layout",this.onRackLayout_),e.on("valuechange",this.onRackValueChange_)}}}onSetRemove_(t){this.updatePositions_();const e=t.target===t.root;if(this.emitter.emit("remove",{bladeController:t.item,root:e,sender:this}),!e)return;const i=t.item;if(mt(i))i.value.emitter.off("change",this.onChildValueChange_);else if(se(i)){const t=i.rackController.rack;if(t){const e=t.emitter;e.off("layout",this.onRackLayout_),e.off("valuechange",this.onRackValueChange_)}}}updatePositions_(){const t=this.bcSet_.items.filter(t=>!t.viewProps.get("hidden")),e=t[0],i=t[t.length-1];this.bcSet_.items.forEach(t=>{const n=[];t===e&&(n.push("first"),this.blade_&&!this.blade_.get("positions").includes("veryfirst")||n.push("veryfirst")),t===i&&(n.push("last"),this.blade_&&!this.blade_.get("positions").includes("verylast")||n.push("verylast")),t.blade.set("positions",n)})}onChildPositionsChange_(){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildViewPropsChange_(t){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildDispose_(){this.bcSet_.items.filter(t=>t.viewProps.get("disposed")).forEach(t=>{this.bcSet_.remove(t)})}onChildValueChange_(t){const e=function(t,e){for(let i=0;i{for(let t=this.rack.children.length-1;t>=0;t--)this.rack.children[t].viewProps.set("disposed",!0)})}onRackAdd_(t){t.root&&Ct(this.element,t.bladeController.view.element,t.index)}onRackRemove_(t){t.root&&yt(t.bladeController.view.element)}};function pe(){return new f({positions:_([],{equals:p})})}var he=class t extends f{constructor(t){super(t)}static create(e){const i={completed:!0,expanded:e,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null};return new t(f.createCore(i))}get styleExpanded(){var t;return null!==(t=this.get("temporaryExpanded"))&&void 0!==t?t:this.get("expanded")}get styleHeight(){if(!this.styleExpanded)return"0";const t=this.get("expandedHeight");return this.get("shouldFixHeight")&&!o(t)?`${t}px`:"auto"}bindExpandedClass(t,e){const i=()=>{this.styleExpanded?t.classList.add(e):t.classList.remove(e)};Vt(this,"expanded",i),Vt(this,"temporaryExpanded",i)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}};function ce(t,e){e.style.height=t.styleHeight}function de(t,e){t.value("expanded").emitter.on("beforechange",()=>{if(t.set("completed",!1),o(t.get("expandedHeight"))){const i=function(t,e){let i=0;return function(n){const s=n.style.transition;n.style.transition="none",t.set("expandedHeight",null),t.set("temporaryExpanded",!0),wt(e),i=e.clientHeight,t.set("temporaryExpanded",null),wt(e),n.style.transition=s}(e),i}(t,e);i>0&&t.set("expandedHeight",i)}t.set("shouldFixHeight",!0),wt(e)}),t.emitter.on("change",()=>{ce(t,e)}),ce(t,e),e.addEventListener("transitionend",e=>{"height"===e.propertyName&&t.cleanUpTransition()})}var ue=class extends ie{constructor(t,e){super(t,e),this.emitter_=new m,this.controller.foldable.value("expanded").emitter.on("change",t=>{this.emitter_.emit("fold",new st(this,t.sender.rawValue))}),this.rackApi_.on("change",t=>{this.emitter_.emit("change",t)})}get expanded(){return this.controller.foldable.get("expanded")}set expanded(t){this.controller.foldable.set("expanded",t)}get title(){return this.controller.props.get("title")}set title(t){this.controller.props.set("title",t)}get children(){return this.rackApi_.children}addBinding(t,e,i){return this.rackApi_.addBinding(t,e,i)}addFolder(t){return this.rackApi_.addFolder(t)}addButton(t){return this.rackApi_.addButton(t)}addTab(t){return this.rackApi_.addTab(t)}add(t,e){return this.rackApi_.add(t,e)}remove(t){this.rackApi_.remove(t)}addBlade(t){return this.rackApi_.addBlade(t)}on(t,e){const i=e.bind(this);return this.emitter_.on(t,t=>{i(t)},{key:e}),this}off(t,e){return this.emitter_.off(t,e),this}},ve=Mt("cnt"),me=class{constructor(t,e){var i;this.className_=Mt(null!==(i=e.viewName)&&void 0!==i?i:"fld"),this.element=t.createElement("div"),this.element.classList.add(this.className_(),ve()),e.viewProps.bindClassModifiers(this.element),this.foldable_=e.foldable,this.foldable_.bindExpandedClass(this.element,this.className_(void 0,"expanded")),Vt(this.foldable_,"completed",qt(this.element,this.className_(void 0,"cpl")));const n=t.createElement("button");n.classList.add(this.className_("b")),Vt(e.props,"title",t=>{o(t)?this.element.classList.add(this.className_(void 0,"not")):this.element.classList.remove(this.className_(void 0,"not"))}),e.viewProps.bindDisabled(n),this.element.appendChild(n),this.buttonElement=n;const s=t.createElement("div");s.classList.add(this.className_("i")),this.element.appendChild(s);const r=t.createElement("div");r.classList.add(this.className_("t")),Ht(e.props.value("title"),r),this.buttonElement.appendChild(r),this.titleElement=r;const a=t.createElement("div");a.classList.add(this.className_("m")),this.buttonElement.appendChild(a);const l=t.createElement("div");l.classList.add(this.className_("c")),this.element.appendChild(l),this.containerElement=l}},be=class extends ne{constructor(t,e){var i;const n=he.create(null===(i=e.expanded)||void 0===i||i),s=new me(t,{foldable:n,props:e.props,viewName:e.root?"rot":void 0,viewProps:e.viewProps});super(Object.assign(Object.assign({},e),{rackController:new le({blade:e.blade,element:s.containerElement,root:e.root,viewProps:e.viewProps}),view:s})),this.onTitleClick_=this.onTitleClick_.bind(this),this.props=e.props,this.foldable=n,de(this.foldable,this.view.containerElement),this.rackController.rack.emitter.on("add",()=>{this.foldable.cleanUpTransition()}),this.rackController.rack.emitter.on("remove",()=>{this.foldable.cleanUpTransition()}),this.view.buttonElement.addEventListener("click",this.onTitleClick_)}get document(){return this.view.element.ownerDocument}importState(t){return ut(t,t=>super.importState(t),t=>({expanded:t.required.boolean,title:t.optional.string}),t=>(this.foldable.set("expanded",t.expanded),this.props.set("title",t.title),!0))}exportState(){return vt(()=>super.exportState(),{expanded:this.foldable.get("expanded"),title:this.props.get("title")})}onTitleClick_(){this.foldable.set("expanded",!this.foldable.get("expanded"))}},ge=Zt({id:"folder",type:"blade",accept(t){const e=dt(t,t=>({title:t.required.string,view:t.required.constant("folder"),expanded:t.optional.boolean}));return e?{params:e}:null},controller:t=>new be(t.document,{blade:t.blade,expanded:t.params.expanded,props:f.fromObject({title:t.params.title}),viewProps:t.viewProps}),api:t=>t.controller instanceof be?new ue(t.controller,t.pool):null}),we=Mt("");function _e(t,e){return qt(t,we(void 0,e))}var fe=class t extends f{constructor(t){var e,i;super(t),this.onDisabledChange_=this.onDisabledChange_.bind(this),this.onParentChange_=this.onParentChange_.bind(this),this.onParentGlobalDisabledChange_=this.onParentGlobalDisabledChange_.bind(this),[this.globalDisabled_,this.setGlobalDisabled_]=(i=_(this.getGlobalDisabled_()),[new w(i),(t,e)=>{i.setRawValue(t,e)}]),this.value("disabled").emitter.on("change",this.onDisabledChange_),this.value("parent").emitter.on("change",this.onParentChange_),null===(e=this.get("parent"))||void 0===e||e.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_)}static create(e){var i,n,s;const r=null!=e?e:{};return new t(f.createCore({disabled:null!==(i=r.disabled)&&void 0!==i&&i,disposed:!1,hidden:null!==(n=r.hidden)&&void 0!==n&&n,parent:null!==(s=r.parent)&&void 0!==s?s:null}))}get globalDisabled(){return this.globalDisabled_}bindClassModifiers(t){kt(this.globalDisabled_,_e(t,"disabled")),Vt(this,"hidden",_e(t,"hidden"))}bindDisabled(t){kt(this.globalDisabled_,e=>{t.disabled=e})}bindTabIndex(t){kt(this.globalDisabled_,e=>{t.tabIndex=e?-1:0})}handleDispose(t){this.value("disposed").emitter.on("change",e=>{e&&t()})}importState(t){this.set("disabled",t.disabled),this.set("hidden",t.hidden)}exportState(){return{disabled:this.get("disabled"),hidden:this.get("hidden")}}getGlobalDisabled_(){const t=this.get("parent");return!!t&&t.globalDisabled.rawValue||this.get("disabled")}updateGlobalDisabled_(){this.setGlobalDisabled_(this.getGlobalDisabled_())}onDisabledChange_(){this.updateGlobalDisabled_()}onParentGlobalDisabledChange_(){this.updateGlobalDisabled_()}onParentChange_(t){var e;const i=t.previousRawValue;null==i||i.globalDisabled.emitter.off("change",this.onParentGlobalDisabledChange_),null===(e=this.get("parent"))||void 0===e||e.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_),this.updateGlobalDisabled_()}},xe=Mt("tbp"),Ce=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(xe()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(xe("c")),this.element.appendChild(i),this.containerElement=i}},ye=Mt("tbi"),Pe=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(ye()),e.viewProps.bindClassModifiers(this.element),Vt(e.props,"selected",t=>{t?this.element.classList.add(ye(void 0,"sel")):this.element.classList.remove(ye(void 0,"sel"))});const i=t.createElement("button");i.classList.add(ye("b")),e.viewProps.bindDisabled(i),this.element.appendChild(i),this.buttonElement=i;const n=t.createElement("div");n.classList.add(ye("t")),Ht(e.props.value("title"),n),this.buttonElement.appendChild(n),this.titleElement=n}},Ee=class{constructor(t,e){this.emitter=new m,this.onClick_=this.onClick_.bind(this),this.props=e.props,this.viewProps=e.viewProps,this.view=new Pe(t,{props:e.props,viewProps:e.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}},ke=class extends ne{constructor(t,e){const i=new Ce(t,{viewProps:e.viewProps});super(Object.assign(Object.assign({},e),{rackController:new le({blade:e.blade,element:i.containerElement,viewProps:e.viewProps}),view:i})),this.onItemClick_=this.onItemClick_.bind(this),this.ic_=new Ee(t,{props:e.itemProps,viewProps:fe.create()}),this.ic_.emitter.on("click",this.onItemClick_),this.props=e.props,Vt(this.props,"selected",t=>{this.itemController.props.set("selected",t),this.viewProps.set("hidden",!t)})}get itemController(){return this.ic_}importState(t){return ut(t,t=>super.importState(t),t=>({selected:t.required.boolean,title:t.required.string}),t=>(this.ic_.props.set("selected",t.selected),this.ic_.props.set("title",t.title),!0))}exportState(){return vt(()=>super.exportState(),{selected:this.ic_.props.get("selected"),title:this.ic_.props.get("title")})}onItemClick_(){this.props.set("selected",!0)}},Ve=class extends ie{constructor(t,e){super(t,e),this.emitter_=new m,this.onSelect_=this.onSelect_.bind(this),this.pool_=e,this.rackApi_.on("change",t=>{this.emitter_.emit("change",t)}),this.controller.tab.selectedIndex.emitter.on("change",this.onSelect_)}get pages(){return this.rackApi_.children}addPage(t){const e=this.controller.view.element.ownerDocument,i=new ke(e,{blade:pe(),itemProps:f.fromObject({selected:!1,title:t.title}),props:f.fromObject({selected:!1}),viewProps:fe.create()}),n=this.pool_.createApi(i);return this.rackApi_.add(n,t.index)}removePage(t){this.rackApi_.remove(this.rackApi_.children[t])}on(t,e){const i=e.bind(this);return this.emitter_.on(t,t=>{i(t)},{key:e}),this}off(t,e){return this.emitter_.off(t,e),this}onSelect_(t){this.emitter_.emit("select",new rt(this,t.rawValue))}},Le=class extends ie{get title(){var t;return null!==(t=this.controller.itemController.props.get("title"))&&void 0!==t?t:""}set title(t){this.controller.itemController.props.set("title",t)}get selected(){return this.controller.props.get("selected")}set selected(t){this.controller.props.set("selected",t)}get children(){return this.rackApi_.children}addButton(t){return this.rackApi_.addButton(t)}addFolder(t){return this.rackApi_.addFolder(t)}addTab(t){return this.rackApi_.addTab(t)}add(t,e){this.rackApi_.add(t,e)}remove(t){this.rackApi_.remove(t)}addBinding(t,e,i){return this.rackApi_.addBinding(t,e,i)}addBlade(t){return this.rackApi_.addBlade(t)}},Me=class{constructor(){this.onItemSelectedChange_=this.onItemSelectedChange_.bind(this),this.empty=_(!0),this.selectedIndex=_(-1),this.items_=[]}add(t,e){const i=null!=e?e:this.items_.length;this.items_.splice(i,0,t),t.emitter.on("change",this.onItemSelectedChange_),this.keepSelection_()}remove(t){const e=this.items_.indexOf(t);e<0||(this.items_.splice(e,1),t.emitter.off("change",this.onItemSelectedChange_),this.keepSelection_())}keepSelection_(){if(0===this.items_.length)return this.selectedIndex.rawValue=-1,void(this.empty.rawValue=!0);const t=this.items_.findIndex(t=>t.rawValue);t<0?(this.items_.forEach((t,e)=>{t.rawValue=0===e}),this.selectedIndex.rawValue=0):(this.items_.forEach((e,i)=>{e.rawValue=i===t}),this.selectedIndex.rawValue=t),this.empty.rawValue=!1}onItemSelectedChange_(t){if(t.rawValue){const e=this.items_.findIndex(e=>e===t.sender);this.items_.forEach((t,i)=>{t.rawValue=i===e}),this.selectedIndex.rawValue=e}else this.keepSelection_()}},Se=Mt("tab"),je=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Se(),ve()),e.viewProps.bindClassModifiers(this.element),kt(e.empty,qt(this.element,Se(void 0,"nop")));const i=t.createElement("div");i.classList.add(Se("t")),this.element.appendChild(i),this.itemsElement=i;const n=t.createElement("div");n.classList.add(Se("i")),this.element.appendChild(n);const s=t.createElement("div");s.classList.add(Se("c")),this.element.appendChild(s),this.contentsElement=s}},De=class extends ne{constructor(t,e){const i=new Me,n=new je(t,{empty:i.empty,viewProps:e.viewProps});super({blade:e.blade,rackController:new le({blade:e.blade,element:n.contentsElement,viewProps:e.viewProps}),view:n}),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this);const s=this.rackController.rack;s.emitter.on("add",this.onRackAdd_),s.emitter.on("remove",this.onRackRemove_),this.tab=i}add(t,e){this.rackController.rack.add(t,e)}remove(t){this.rackController.rack.remove(this.rackController.rack.children[t])}onRackAdd_(t){if(!t.root)return;const e=t.bladeController;Ct(this.view.itemsElement,e.itemController.view.element,t.index),e.itemController.viewProps.set("parent",this.viewProps),this.tab.add(e.props.value("selected"))}onRackRemove_(t){if(!t.root)return;const e=t.bladeController;yt(e.itemController.view.element),e.itemController.viewProps.set("parent",null),this.tab.remove(e.props.value("selected"))}},Ae=Zt({id:"tab",type:"blade",accept(t){const e=dt(t,t=>({pages:t.required.array(t.required.object({title:t.required.string})),view:t.required.constant("tab")}));return e&&0!==e.pages.length?{params:e}:null},controller(t){const e=new De(t.document,{blade:t.blade,viewProps:t.viewProps});return t.params.pages.forEach(i=>{const n=new ke(t.document,{blade:pe(),itemProps:f.fromObject({selected:!1,title:i.title}),props:f.fromObject({selected:!1}),viewProps:fe.create()});e.add(n)}),e},api:t=>t.controller instanceof De?new Ve(t.controller,t.pool):t.controller instanceof ke?new Le(t.controller,t.pool):null}),Oe=class extends at{get options(){return this.controller.valueController.props.get("options")}set options(t){this.controller.valueController.props.set("options",t)}},Be=class{constructor(){this.disabled=!1,this.emitter=new m}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}},Te=class{constructor(t,e){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=t,this.emitter=new m,this.interval_=e,this.setTimer_()}get disabled(){return this.disabled_}set disabled(t){this.disabled_=t,this.disabled_?this.clearTimer_():this.setTimer_()}dispose(){this.clearTimer_()}clearTimer_(){if(null===this.timerId_)return;const t=this.doc_.defaultView;t&&t.clearInterval(this.timerId_),this.timerId_=null}setTimer_(){if(this.clearTimer_(),this.interval_<=0)return;const t=this.doc_.defaultView;t&&(this.timerId_=t.setInterval(this.onTick_,this.interval_))}onTick_(){this.disabled_||this.emitter.emit("tick",{sender:this})}},ze=class{constructor(t){this.constraints=t}constrain(t){return this.constraints.reduce((t,e)=>e.constrain(t),t)}};function Re(t,e){if(t instanceof e)return t;if(t instanceof ze){const i=t.constraints.reduce((t,i)=>t||(i instanceof e?i:null),null);if(i)return i}return null}var Ne=class{constructor(t){this.values=f.fromObject({options:t})}constrain(t){const e=this.values.get("options");return 0===e.length||e.filter(e=>e.value===t).length>0?t:e[0].value}};function Ke(t){var e;const i=ct;return Array.isArray(t)?null===(e=dt({items:t},t=>({items:t.required.array(t.required.object({text:t.required.string,value:t.required.raw}))})))||void 0===e?void 0:e.items:"object"==typeof t?i.required.raw(t).value:void 0}function Ie(t){if(Array.isArray(t))return t;const e=[];return Object.keys(t).forEach(i=>{e.push({text:i,value:t[i]})}),e}function Ue(t){return o(t)?null:new Ne(Ie(t))}var Fe=Mt("lst"),$e=class{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.props_=e.props,this.element=t.createElement("div"),this.element.classList.add(Fe()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("select");i.classList.add(Fe("s")),e.viewProps.bindDisabled(i),this.element.appendChild(i),this.selectElement=i;const n=t.createElement("div");n.classList.add(Fe("m")),n.appendChild(xt(t,"dropdown")),this.element.appendChild(n),e.value.emitter.on("change",this.onValueChange_),this.value_=e.value,Vt(this.props_,"options",e=>{Pt(this.selectElement),e.forEach(e=>{const i=t.createElement("option");i.textContent=e.text,this.selectElement.appendChild(i)}),this.update_()})}update_(){const t=this.props_.get("options").map(t=>t.value);this.selectElement.selectedIndex=t.indexOf(this.value_.rawValue)}onValueChange_(){this.update_()}},qe=class{constructor(t,e){this.onSelectChange_=this.onSelectChange_.bind(this),this.props=e.props,this.value=e.value,this.viewProps=e.viewProps,this.view=new $e(t,{props:this.props,value:this.value,viewProps:this.viewProps}),this.view.selectElement.addEventListener("change",this.onSelectChange_)}onSelectChange_(t){const e=t.currentTarget;this.value.rawValue=this.props.get("options")[e.selectedIndex].value}importProps(t){return ut(t,null,t=>({options:t.required.custom(Ke)}),t=>(this.props.set("options",Ie(t.options)),!0))}exportProps(){return vt(null,{options:this.props.get("options")})}},He=Mt("pop"),Ge=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(He()),e.viewProps.bindClassModifiers(this.element),kt(e.shows,qt(this.element,He(void 0,"v")))}},Ye=class{constructor(t,e){this.shows=_(!1),this.viewProps=e.viewProps,this.view=new Ge(t,{shows:this.shows,viewProps:this.viewProps})}},Xe=Mt("txt"),We=class{constructor(t,e){this.onChange_=this.onChange_.bind(this),this.element=t.createElement("div"),this.element.classList.add(Xe()),e.viewProps.bindClassModifiers(this.element),this.props_=e.props,this.props_.emitter.on("change",this.onChange_);const i=t.createElement("input");i.classList.add(Xe("i")),i.type="text",e.viewProps.bindDisabled(i),this.element.appendChild(i),this.inputElement=i,e.value.emitter.on("change",this.onChange_),this.value_=e.value,this.refresh()}refresh(){const t=this.props_.get("formatter");this.inputElement.value=t(this.value_.rawValue)}onChange_(){this.refresh()}},Qe=class{constructor(t,e){this.onInputChange_=this.onInputChange_.bind(this),this.parser_=e.parser,this.props=e.props,this.value=e.value,this.viewProps=e.viewProps,this.view=new We(t,{props:e.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(t){const e=t.currentTarget.value,i=this.parser_(e);o(i)||(this.value.rawValue=i),this.view.refresh()}};function Je(t){return"false"!==t&&!!t}function Ze(t){return function(t){return String(t)}(t)}var ti=U(0);function ei(t){return ti(t)+"%"}function ii(t){return String(t)}function ni(t){return t}function si({primary:t,secondary:e,forward:i,backward:n}){let s=!1;function r(t){s||(s=!0,t(),s=!1)}t.emitter.on("change",n=>{r(()=>{e.setRawValue(i(t.rawValue,e.rawValue),n.options)})}),e.emitter.on("change",s=>{r(()=>{t.setRawValue(n(t.rawValue,e.rawValue),s.options)}),r(()=>{e.setRawValue(i(t.rawValue,e.rawValue),s.options)})}),r(()=>{e.setRawValue(i(t.rawValue,e.rawValue),{forceEmit:!1,last:!0})})}function ri(t,e){const i=t*(e.altKey?.1:1)*(e.shiftKey?10:1);return e.upKey?+i:e.downKey?-i:0}function oi(t){return{altKey:t.altKey,downKey:"ArrowDown"===t.key,shiftKey:t.shiftKey,upKey:"ArrowUp"===t.key}}function ai(t){return{altKey:t.altKey,downKey:"ArrowLeft"===t.key,shiftKey:t.shiftKey,upKey:"ArrowRight"===t.key}}function li(t){return function(t){return"ArrowUp"===t||"ArrowDown"===t}(t)||"ArrowLeft"===t||"ArrowRight"===t}function pi(t,e){var i,n;const s=e.ownerDocument.defaultView,r=e.getBoundingClientRect();return{x:t.pageX-((null!==(i=s&&s.scrollX)&&void 0!==i?i:0)+r.left),y:t.pageY-((null!==(n=s&&s.scrollY)&&void 0!==n?n:0)+r.top)}}var hi=class{constructor(t){this.lastTouch_=null,this.onDocumentMouseMove_=this.onDocumentMouseMove_.bind(this),this.onDocumentMouseUp_=this.onDocumentMouseUp_.bind(this),this.onMouseDown_=this.onMouseDown_.bind(this),this.onTouchEnd_=this.onTouchEnd_.bind(this),this.onTouchMove_=this.onTouchMove_.bind(this),this.onTouchStart_=this.onTouchStart_.bind(this),this.elem_=t,this.emitter=new m,t.addEventListener("touchstart",this.onTouchStart_,{passive:!1}),t.addEventListener("touchmove",this.onTouchMove_,{passive:!0}),t.addEventListener("touchend",this.onTouchEnd_),t.addEventListener("mousedown",this.onMouseDown_)}computePosition_(t){const e=this.elem_.getBoundingClientRect();return{bounds:{width:e.width,height:e.height},point:t?{x:t.x,y:t.y}:null}}onMouseDown_(t){var e;t.preventDefault(),null===(e=t.currentTarget)||void 0===e||e.focus();const i=this.elem_.ownerDocument;i.addEventListener("mousemove",this.onDocumentMouseMove_),i.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:t.altKey,data:this.computePosition_(pi(t,this.elem_)),sender:this,shiftKey:t.shiftKey})}onDocumentMouseMove_(t){this.emitter.emit("move",{altKey:t.altKey,data:this.computePosition_(pi(t,this.elem_)),sender:this,shiftKey:t.shiftKey})}onDocumentMouseUp_(t){const e=this.elem_.ownerDocument;e.removeEventListener("mousemove",this.onDocumentMouseMove_),e.removeEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("up",{altKey:t.altKey,data:this.computePosition_(pi(t,this.elem_)),sender:this,shiftKey:t.shiftKey})}onTouchStart_(t){t.preventDefault();const e=t.targetTouches.item(0),i=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:t.altKey,data:this.computePosition_(e?{x:e.clientX-i.left,y:e.clientY-i.top}:void 0),sender:this,shiftKey:t.shiftKey}),this.lastTouch_=e}onTouchMove_(t){const e=t.targetTouches.item(0),i=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:t.altKey,data:this.computePosition_(e?{x:e.clientX-i.left,y:e.clientY-i.top}:void 0),sender:this,shiftKey:t.shiftKey}),this.lastTouch_=e}onTouchEnd_(t){var e;const i=null!==(e=t.targetTouches.item(0))&&void 0!==e?e:this.lastTouch_,n=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:t.altKey,data:this.computePosition_(i?{x:i.clientX-n.left,y:i.clientY-n.top}:void 0),sender:this,shiftKey:t.shiftKey})}},ci=Mt("txt"),di=class{constructor(t,e){this.onChange_=this.onChange_.bind(this),this.props_=e.props,this.props_.emitter.on("change",this.onChange_),this.element=t.createElement("div"),this.element.classList.add(ci(),ci(void 0,"num")),e.arrayPosition&&this.element.classList.add(ci(void 0,e.arrayPosition)),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("input");i.classList.add(ci("i")),i.type="text",e.viewProps.bindDisabled(i),this.element.appendChild(i),this.inputElement=i,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=e.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add(ci()),this.inputElement.classList.add(ci("i"));const n=t.createElement("div");n.classList.add(ci("k")),this.element.appendChild(n),this.knobElement=n;const s=t.createElementNS(gt,"svg");s.classList.add(ci("g")),this.knobElement.appendChild(s);const r=t.createElementNS(gt,"path");r.classList.add(ci("gb")),s.appendChild(r),this.guideBodyElem_=r;const o=t.createElementNS(gt,"path");o.classList.add(ci("gh")),s.appendChild(o),this.guideHeadElem_=o;const a=t.createElement("div");a.classList.add(Mt("tt")()),this.knobElement.appendChild(a),this.tooltipElem_=a,e.value.emitter.on("change",this.onChange_),this.value=e.value,this.refresh()}onDraggingChange_(t){if(null===t.rawValue)return void this.element.classList.remove(ci(void 0,"drg"));this.element.classList.add(ci(void 0,"drg"));const e=t.rawValue/this.props_.get("pointerScale"),i=e+(e>0?-1:e<0?1:0),n=q(-i,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${i+n},0 L${i},4 L${i+n},8`,`M ${e},-1 L${e},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${e},4`);const s=this.props_.get("formatter");this.tooltipElem_.textContent=s(this.value.rawValue),this.tooltipElem_.style.left=`${e}px`}refresh(){const t=this.props_.get("formatter");this.inputElement.value=t(this.value.rawValue)}onChange_(){this.refresh()}},ui=class{constructor(t,e){var i;this.originRawValue_=0,this.onInputChange_=this.onInputChange_.bind(this),this.onInputKeyDown_=this.onInputKeyDown_.bind(this),this.onInputKeyUp_=this.onInputKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.parser_=e.parser,this.props=e.props,this.sliderProps_=null!==(i=e.sliderProps)&&void 0!==i?i:null,this.value=e.value,this.viewProps=e.viewProps,this.dragging_=_(null),this.view=new di(t,{arrayPosition:e.arrayPosition,dragging:this.dragging_,props:this.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.inputElement.addEventListener("keydown",this.onInputKeyDown_),this.view.inputElement.addEventListener("keyup",this.onInputKeyUp_);const n=new hi(this.view.knobElement);n.emitter.on("down",this.onPointerDown_),n.emitter.on("move",this.onPointerMove_),n.emitter.on("up",this.onPointerUp_)}constrainValue_(t){var e,i;const n=null===(e=this.sliderProps_)||void 0===e?void 0:e.get("min"),s=null===(i=this.sliderProps_)||void 0===i?void 0:i.get("max");let r=t;return void 0!==n&&(r=Math.max(r,n)),void 0!==s&&(r=Math.min(r,s)),r}onInputChange_(t){const e=t.currentTarget.value,i=this.parser_(e);o(i)||(this.value.rawValue=this.constrainValue_(i)),this.view.refresh()}onInputKeyDown_(t){const e=ri(this.props.get("keyScale"),oi(t));0!==e&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+e),{forceEmit:!1,last:!1})}onInputKeyUp_(t){0!==ri(this.props.get("keyScale"),oi(t))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}onPointerDown_(){this.originRawValue_=this.value.rawValue,this.dragging_.rawValue=0}computeDraggingValue_(t){if(!t.point)return null;const e=t.point.x-t.bounds.width/2;return this.constrainValue_(this.originRawValue_+e*this.props.get("pointerScale"))}onPointerMove_(t){const e=this.computeDraggingValue_(t.data);null!==e&&(this.value.setRawValue(e,{forceEmit:!1,last:!1}),this.dragging_.rawValue=this.value.rawValue-this.originRawValue_)}onPointerUp_(t){const e=this.computeDraggingValue_(t.data);null!==e&&(this.value.setRawValue(e,{forceEmit:!0,last:!0}),this.dragging_.rawValue=null)}},vi=Mt("sld"),mi=class{constructor(t,e){this.onChange_=this.onChange_.bind(this),this.props_=e.props,this.props_.emitter.on("change",this.onChange_),this.element=t.createElement("div"),this.element.classList.add(vi()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(vi("t")),e.viewProps.bindTabIndex(i),this.element.appendChild(i),this.trackElement=i;const n=t.createElement("div");n.classList.add(vi("k")),this.trackElement.appendChild(n),this.knobElement=n,e.value.emitter.on("change",this.onChange_),this.value=e.value,this.update_()}update_(){const t=q(F(this.value.rawValue,this.props_.get("min"),this.props_.get("max"),0,100),0,100);this.knobElement.style.width=`${t}%`}onChange_(){this.update_()}},bi=class{constructor(t,e){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDownOrMove_=this.onPointerDownOrMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.props=e.props,this.view=new mi(t,{props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new hi(this.view.trackElement),this.ptHandler_.emitter.on("down",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("move",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.trackElement.addEventListener("keydown",this.onKeyDown_),this.view.trackElement.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(t,e){t.point&&this.value.setRawValue(F(q(t.point.x,0,t.bounds.width),0,t.bounds.width,this.props.get("min"),this.props.get("max")),e)}onPointerDownOrMove_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerUp_(t){this.handlePointerEvent_(t.data,{forceEmit:!0,last:!0})}onKeyDown_(t){const e=ri(this.props.get("keyScale"),ai(t));0!==e&&this.value.setRawValue(this.value.rawValue+e,{forceEmit:!1,last:!1})}onKeyUp_(t){0!==ri(this.props.get("keyScale"),ai(t))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}},gi=Mt("sldtxt"),wi=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(gi());const i=t.createElement("div");i.classList.add(gi("s")),this.sliderView_=e.sliderView,i.appendChild(this.sliderView_.element),this.element.appendChild(i);const n=t.createElement("div");n.classList.add(gi("t")),this.textView_=e.textView,n.appendChild(this.textView_.element),this.element.appendChild(n)}},_i=class{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.sliderC_=new bi(t,{props:e.sliderProps,value:e.value,viewProps:this.viewProps}),this.textC_=new ui(t,{parser:e.parser,props:e.textProps,sliderProps:e.sliderProps,value:e.value,viewProps:e.viewProps}),this.view=new wi(t,{sliderView:this.sliderC_.view,textView:this.textC_.view})}get sliderController(){return this.sliderC_}get textController(){return this.textC_}importProps(t){return ut(t,null,t=>({max:t.required.number,min:t.required.number}),t=>{const e=this.sliderC_.props;return e.set("max",t.max),e.set("min",t.min),!0})}exportProps(){const t=this.sliderC_.props;return vt(null,{max:t.get("max"),min:t.get("min")})}};function fi(t){return{sliderProps:new f({keyScale:t.keyScale,max:t.max,min:t.min}),textProps:new f({formatter:_(t.formatter),keyScale:t.keyScale,pointerScale:_(t.pointerScale)})}}var xi={containerUnitSize:"cnt-usz"};function Ci(t){return`--${xi[t]}`}function yi(t){return Z(t)}function Pi(t){if(l(t))return dt(t,yi)}function Ei(t,e){if(!t)return;const i=[],n=W(t,e);n&&i.push(n);const s=Q(t);return s&&i.push(s),new ze(i)}function ki(t){if("inline"===t||"popup"===t)return t}function Vi(t,e){t.write(e)}var Li=Mt("ckb"),Mi=class{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.element=t.createElement("div"),this.element.classList.add(Li()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("label");i.classList.add(Li("l")),this.element.appendChild(i),this.labelElement=i;const n=t.createElement("input");n.classList.add(Li("i")),n.type="checkbox",this.labelElement.appendChild(n),this.inputElement=n,e.viewProps.bindDisabled(this.inputElement);const s=t.createElement("div");s.classList.add(Li("w")),this.labelElement.appendChild(s);const r=xt(t,"check");s.appendChild(r),e.value.emitter.on("change",this.onValueChange_),this.value=e.value,this.update_()}update_(){this.inputElement.checked=this.value.rawValue}onValueChange_(){this.update_()}},Si=class{constructor(t,e){this.onInputChange_=this.onInputChange_.bind(this),this.onLabelMouseDown_=this.onLabelMouseDown_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.view=new Mi(t,{value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.labelElement.addEventListener("mousedown",this.onLabelMouseDown_)}onInputChange_(t){const e=t.currentTarget;this.value.rawValue=e.checked,t.preventDefault(),t.stopPropagation()}onLabelMouseDown_(t){t.preventDefault()}},ji=Zt({id:"input-bool",type:"input",accept:(t,e)=>{if("boolean"!=typeof t)return null;const i=dt(e,t=>({options:t.optional.custom(Ke),readonly:t.optional.constant(!1)}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>Je,constraint:t=>function(t){const e=[],i=Ue(t.options);return i&&e.push(i),new ze(e)}(t.params),writer:t=>Vi},controller:t=>{const e=t.document,i=t.value,n=t.constraint,s=n&&Re(n,Ne);return s?new qe(e,{props:new f({options:s.values.value("options")}),value:i,viewProps:t.viewProps}):new Si(e,{value:i,viewProps:t.viewProps})},api:t=>"boolean"!=typeof t.controller.value.rawValue?null:t.controller.valueController instanceof qe?new Oe(t.controller):null}),Di=Mt("col"),Ai=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Di()),e.foldable.bindExpandedClass(this.element,Di(void 0,"expanded")),Vt(e.foldable,"completed",qt(this.element,Di(void 0,"cpl")));const i=t.createElement("div");i.classList.add(Di("h")),this.element.appendChild(i);const n=t.createElement("div");n.classList.add(Di("s")),i.appendChild(n),this.swatchElement=n;const s=t.createElement("div");if(s.classList.add(Di("t")),i.appendChild(s),this.textElement=s,"inline"===e.pickerLayout){const e=t.createElement("div");e.classList.add(Di("p")),this.element.appendChild(e),this.pickerElement=e}else this.pickerElement=null}};function Oi(t,e,i){const n=H(t,360),s=q(e/100,0,1),r=q(i/100,0,1),o=r*s,a=o*(1-Math.abs(n/60%2-1)),l=r-o;let p,h,c;return[p,h,c]=n>=0&&n<60?[o,a,0]:n>=60&&n<120?[a,o,0]:n>=120&&n<180?[0,o,a]:n>=180&&n<240?[0,a,o]:n>=240&&n<300?[a,0,o]:[o,0,a],[255*(p+l),255*(h+l),255*(c+l)]}function Bi(t){return[t[0],t[1],t[2]]}function Ti(t,e){return[t[0],t[1],t[2],e]}var zi={hsl:{hsl:(t,e,i)=>[t,e,i],hsv:function(t,e,i){const n=i+e*(100-Math.abs(2*i-100))/200;return[t,0!==n?e*(100-Math.abs(2*i-100))/n:0,i+e*(100-Math.abs(2*i-100))/200]},rgb:function(t,e,i){const n=(t%360+360)%360,s=q(e/100,0,1),r=q(i/100,0,1),o=(1-Math.abs(2*r-1))*s,a=o*(1-Math.abs(n/60%2-1)),l=r-o/2;let p,h,c;return[p,h,c]=n>=0&&n<60?[o,a,0]:n>=60&&n<120?[a,o,0]:n>=120&&n<180?[0,o,a]:n>=180&&n<240?[0,a,o]:n>=240&&n<300?[a,0,o]:[o,0,a],[255*(p+l),255*(h+l),255*(c+l)]}},hsv:{hsl:function(t,e,i){const n=100-Math.abs(i*(200-e)/100-100);return[t,0!==n?e*i/n:0,i*(200-e)/200]},hsv:(t,e,i)=>[t,e,i],rgb:Oi},rgb:{hsl:function(t,e,i){const n=q(t/255,0,1),s=q(e/255,0,1),r=q(i/255,0,1),o=Math.max(n,s,r),a=Math.min(n,s,r),l=o-a;let p=0,h=0;const c=(a+o)/2;return 0!==l&&(h=l/(1-Math.abs(o+a-1)),p=n===o?(s-r)/l:s===o?2+(r-n)/l:4+(n-s)/l,p=p/6+(p<0?1:0)),[360*p,100*h,100*c]},hsv:function(t,e,i){const n=q(t/255,0,1),s=q(e/255,0,1),r=q(i/255,0,1),o=Math.max(n,s,r),a=o-Math.min(n,s,r);let l;return l=0===a?0:o===n?((s-r)/a%6+6)%6*60:o===s?60*((r-n)/a+2):60*((n-s)/a+4),[l,100*(0===o?0:a/o),100*o]},rgb:(t,e,i)=>[t,e,i]}};function Ri(t,e){return["float"===e?1:"rgb"===t?255:360,"float"===e?1:"rgb"===t?255:100,"float"===e?1:"rgb"===t?255:100]}function Ni(t,e,i){var n;const s=Ri(e,i);return["rgb"===e?q(t[0],0,s[0]):(r=t[0],o=s[0],r===o?o:H(r,o)),q(t[1],0,s[1]),q(t[2],0,s[2]),q(null!==(n=t[3])&&void 0!==n?n:1,0,1)];var r,o}function Ki(t,e,i,n){const s=Ri(e,i),r=Ri(e,n);return t.map((t,e)=>t/s[e]*r[e])}function Ii(t,e,i){const n=Ki(t,e.mode,e.type,"int");return Ki(zi[e.mode][i.mode](...n),i.mode,"int",i.type)}var Ui=class t{static black(){return new t([0,0,0],"rgb")}constructor(t,e){this.type="int",this.mode=e,this.comps_=Ni(t,e,this.type)}getComponents(t){return Ti(Ii(Bi(this.comps_),{mode:this.mode,type:this.type},{mode:null!=t?t:this.mode,type:this.type}),this.comps_[3])}toRgbaObject(){const t=this.getComponents("rgb");return{r:t[0],g:t[1],b:t[2],a:t[3]}}},Fi=Mt("colp"),$i=class{constructor(t,e){this.alphaViews_=null,this.element=t.createElement("div"),this.element.classList.add(Fi()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(Fi("hsv"));const n=t.createElement("div");n.classList.add(Fi("sv")),this.svPaletteView_=e.svPaletteView,n.appendChild(this.svPaletteView_.element),i.appendChild(n);const s=t.createElement("div");s.classList.add(Fi("h")),this.hPaletteView_=e.hPaletteView,s.appendChild(this.hPaletteView_.element),i.appendChild(s),this.element.appendChild(i);const r=t.createElement("div");if(r.classList.add(Fi("rgb")),this.textsView_=e.textsView,r.appendChild(this.textsView_.element),this.element.appendChild(r),e.alphaViews){this.alphaViews_={palette:e.alphaViews.palette,text:e.alphaViews.text};const i=t.createElement("div");i.classList.add(Fi("a"));const n=t.createElement("div");n.classList.add(Fi("ap")),n.appendChild(this.alphaViews_.palette.element),i.appendChild(n);const s=t.createElement("div");s.classList.add(Fi("at")),s.appendChild(this.alphaViews_.text.element),i.appendChild(s),this.element.appendChild(i)}}get allFocusableElements(){const t=[this.svPaletteView_.element,this.hPaletteView_.element,this.textsView_.modeSelectElement,...this.textsView_.inputViews.map(t=>t.inputElement)];return this.alphaViews_&&t.push(this.alphaViews_.palette.element,this.alphaViews_.text.inputElement),t}};function qi(t){return"int"===t?"int":"float"===t?"float":void 0}function Hi(t){return dt(t,t=>({color:t.optional.object({alpha:t.optional.boolean,type:t.optional.custom(qi)}),expanded:t.optional.boolean,picker:t.optional.custom(ki),readonly:t.optional.constant(!1)}))}function Gi(t){return t?.1:1}function Yi(t){var e;return null===(e=t.color)||void 0===e?void 0:e.type}var Xi=class{constructor(t,e){this.type="float",this.mode=e,this.comps_=Ni(t,e,this.type)}getComponents(t){return Ti(Ii(Bi(this.comps_),{mode:this.mode,type:this.type},{mode:null!=t?t:this.mode,type:this.type}),this.comps_[3])}toRgbaObject(){const t=this.getComponents("rgb");return{r:t[0],g:t[1],b:t[2],a:t[3]}}},Wi={int:(t,e)=>new Ui(t,e),float:(t,e)=>new Xi(t,e)};function Qi(t,e,i){return Wi[i](t,e)}function Ji(t,e){if(t.type===e)return t;if(function(t){return"int"===t.type}(t)&&"float"===e)return function(t){const e=t.getComponents(),i=Ri(t.mode,"int");return new Xi([F(e[0],0,i[0],0,1),F(e[1],0,i[1],0,1),F(e[2],0,i[2],0,1),e[3]],t.mode)}(t);if(function(t){return"float"===t.type}(t)&&"int"===e)return function(t){const e=t.getComponents(),i=Ri(t.mode,"int");return new Ui([Math.round(F(e[0],0,1,0,i[0])),Math.round(F(e[1],0,1,0,i[1])),Math.round(F(e[2],0,1,0,i[2])),e[3]],t.mode)}(t);throw u.shouldNeverHappen()}function Zi(t,e){const i=t.match(/^(.+)%$/);return i?Math.min(.01*parseFloat(i[1])*e,e):Math.min(parseFloat(t),e)}var tn={deg:t=>t,grad:t=>360*t/400,rad:t=>360*t/(2*Math.PI),turn:t=>360*t};function en(t){const e=t.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);if(!e)return parseFloat(t);const i=parseFloat(e[1]);return tn[e[2]](i)}function nn(t){const e=t.match(/^rgb\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const i=[Zi(e[1],255),Zi(e[2],255),Zi(e[3],255)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])?null:i}function sn(t){const e=nn(t);return e?new Ui(e,"rgb"):null}function rn(t){const e=t.match(/^rgba\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const i=[Zi(e[1],255),Zi(e[2],255),Zi(e[3],255),Zi(e[4],1)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])||isNaN(i[3])?null:i}function on(t){const e=rn(t);return e?new Ui(e,"rgb"):null}function an(t){const e=t.match(/^hsl\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const i=[en(e[1]),Zi(e[2],100),Zi(e[3],100)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])?null:i}function ln(t){const e=an(t);return e?new Ui(e,"hsl"):null}function pn(t){const e=t.match(/^hsla\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const i=[en(e[1]),Zi(e[2],100),Zi(e[3],100),Zi(e[4],1)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])||isNaN(i[3])?null:i}function hn(t){const e=pn(t);return e?new Ui(e,"hsl"):null}function cn(t){const e=t.match(/^#([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(e)return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)];const i=t.match(/^(?:#|0x)([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return i?[parseInt(i[1],16),parseInt(i[2],16),parseInt(i[3],16)]:null}function dn(t){const e=cn(t);return e?new Ui(e,"rgb"):null}function un(t){const e=t.match(/^#([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(e)return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16),F(parseInt(e[4]+e[4],16),0,255,0,1)];const i=t.match(/^(?:#|0x)?([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return i?[parseInt(i[1],16),parseInt(i[2],16),parseInt(i[3],16),F(parseInt(i[4],16),0,255,0,1)]:null}function vn(t){const e=un(t);return e?new Ui(e,"rgb"):null}function mn(t){const e=t.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!e)return null;const i=[parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3])];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])?null:i}function bn(t){return e=>{const i=mn(e);return i?Qi(i,"rgb",t):null}}function gn(t){const e=t.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*a\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!e)return null;const i=[parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3]),parseFloat(e[4])];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])||isNaN(i[3])?null:i}function wn(t){return e=>{const i=gn(e);return i?Qi(i,"rgb",t):null}}var _n=[{parser:cn,result:{alpha:!1,mode:"rgb",notation:"hex"}},{parser:un,result:{alpha:!0,mode:"rgb",notation:"hex"}},{parser:nn,result:{alpha:!1,mode:"rgb",notation:"func"}},{parser:rn,result:{alpha:!0,mode:"rgb",notation:"func"}},{parser:an,result:{alpha:!1,mode:"hsl",notation:"func"}},{parser:pn,result:{alpha:!0,mode:"hsl",notation:"func"}},{parser:mn,result:{alpha:!1,mode:"rgb",notation:"object"}},{parser:gn,result:{alpha:!0,mode:"rgb",notation:"object"}}];function fn(t){const e=[dn,vn,sn,on,ln,hn];"int"===t&&e.push(bn("int"),wn("int")),"float"===t&&e.push(bn("float"),wn("float"));const i=function(t){return e=>t.reduce((t,i)=>null!==t?t:i(e),null)}(e);return e=>{const n=i(e);return n?Ji(n,t):null}}function xn(t){const e=fn("int");if("string"!=typeof t)return Ui.black();const i=e(t);return null!=i?i:Ui.black()}function Cn(t){const e=q(Math.floor(t),0,255).toString(16);return 1===e.length?`0${e}`:e}function yn(t,e="#"){return`${e}${Bi(t.getComponents("rgb")).map(Cn).join("")}`}function Pn(t,e="#"){const i=t.getComponents("rgb");return`${e}${[i[0],i[1],i[2],255*i[3]].map(Cn).join("")}`}function En(t){const e=U(0);return`rgb(${Bi(Ji(t,"int").getComponents("rgb")).map(t=>e(t)).join(", ")})`}function kn(t){const e=U(2),i=U(0);return`rgba(${Ji(t,"int").getComponents("rgb").map((t,n)=>(3===n?e:i)(t)).join(", ")})`}function Vn(t,e){const i=U("float"===e?2:0),n=["r","g","b"];return`{${Bi(Ji(t,e).getComponents("rgb")).map((t,e)=>`${n[e]}: ${i(t)}`).join(", ")}}`}function Ln(t){return e=>Vn(e,t)}function Mn(t,e){const i=U(2),n=U("float"===e?2:0),s=["r","g","b","a"];return`{${Ji(t,e).getComponents("rgb").map((t,e)=>`${s[e]}: ${(3===e?i:n)(t)}`).join(", ")}}`}function Sn(t){return e=>Mn(e,t)}var jn=[{format:{alpha:!1,mode:"rgb",notation:"hex",type:"int"},stringifier:yn},{format:{alpha:!0,mode:"rgb",notation:"hex",type:"int"},stringifier:Pn},{format:{alpha:!1,mode:"rgb",notation:"func",type:"int"},stringifier:En},{format:{alpha:!0,mode:"rgb",notation:"func",type:"int"},stringifier:kn},{format:{alpha:!1,mode:"hsl",notation:"func",type:"int"},stringifier:function(t){const e=[U(0),ei,ei];return`hsl(${Bi(Ji(t,"int").getComponents("hsl")).map((t,i)=>e[i](t)).join(", ")})`}},{format:{alpha:!0,mode:"hsl",notation:"func",type:"int"},stringifier:function(t){const e=[U(0),ei,ei,U(2)];return`hsla(${Ji(t,"int").getComponents("hsl").map((t,i)=>e[i](t)).join(", ")})`}},...["int","float"].reduce((t,e)=>[...t,{format:{alpha:!1,mode:"rgb",notation:"object",type:e},stringifier:Ln(e)},{format:{alpha:!0,mode:"rgb",notation:"object",type:e},stringifier:Sn(e)}],[])];function Dn(t){return jn.reduce((e,i)=>{return e||(n=i.format,s=t,n.alpha===s.alpha&&n.mode===s.mode&&n.notation===s.notation&&n.type===s.type?i.stringifier:null);var n,s},null)}var An=Mt("apl"),On=class{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.value=e.value,this.value.emitter.on("change",this.onValueChange_),this.element=t.createElement("div"),this.element.classList.add(An()),e.viewProps.bindClassModifiers(this.element),e.viewProps.bindTabIndex(this.element);const i=t.createElement("div");i.classList.add(An("b")),this.element.appendChild(i);const n=t.createElement("div");n.classList.add(An("c")),i.appendChild(n),this.colorElem_=n;const s=t.createElement("div");s.classList.add(An("m")),this.element.appendChild(s),this.markerElem_=s;const r=t.createElement("div");r.classList.add(An("p")),this.markerElem_.appendChild(r),this.previewElem_=r,this.update_()}update_(){const t=this.value.rawValue,e=t.getComponents("rgb"),i=new Ui([e[0],e[1],e[2],0],"rgb"),n=new Ui([e[0],e[1],e[2],255],"rgb"),s=["to right",kn(i),kn(n)];this.colorElem_.style.background=`linear-gradient(${s.join(",")})`,this.previewElem_.style.backgroundColor=kn(t);const r=F(e[3],0,1,0,100);this.markerElem_.style.left=`${r}%`}onValueChange_(){this.update_()}},Bn=class{constructor(t,e){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.view=new On(t,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new hi(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(t,e){if(!t.point)return;const i=t.point.x/t.bounds.width,[n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new Ui([n,s,r,i],"hsv"),e)}onPointerDown_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerMove_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerUp_(t){this.handlePointerEvent_(t.data,{forceEmit:!0,last:!0})}onKeyDown_(t){const e=ri(Gi(!0),ai(t));if(0===e)return;const[i,n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new Ui([i,n,s,r+e],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(t){0!==ri(Gi(!0),ai(t))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}},Tn=Mt("coltxt"),zn=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Tn()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(Tn("m")),this.modeElem_=function(t){const e=t.createElement("select");return e.appendChild([{text:"RGB",value:"rgb"},{text:"HSL",value:"hsl"},{text:"HSV",value:"hsv"},{text:"HEX",value:"hex"}].reduce((e,i)=>{const n=t.createElement("option");return n.textContent=i.text,n.value=i.value,e.appendChild(n),e},t.createDocumentFragment())),e}(t),this.modeElem_.classList.add(Tn("ms")),i.appendChild(this.modeSelectElement),e.viewProps.bindDisabled(this.modeElem_);const n=t.createElement("div");n.classList.add(Tn("mm")),n.appendChild(xt(t,"dropdown")),i.appendChild(n),this.element.appendChild(i);const s=t.createElement("div");s.classList.add(Tn("w")),this.element.appendChild(s),this.inputsElem_=s,this.inputViews_=e.inputViews,this.applyInputViews_(),kt(e.mode,t=>{this.modeElem_.value=t})}get modeSelectElement(){return this.modeElem_}get inputViews(){return this.inputViews_}set inputViews(t){this.inputViews_=t,this.applyInputViews_()}applyInputViews_(){Pt(this.inputsElem_);const t=this.element.ownerDocument;this.inputViews_.forEach(e=>{const i=t.createElement("div");i.classList.add(Tn("c")),i.appendChild(e.element),this.inputsElem_.appendChild(i)})}};function Rn(t,e,i){const n=Ri(t,e)[i];return new x({min:0,max:n})}var Nn=class{constructor(t,e){this.onModeSelectChange_=this.onModeSelectChange_.bind(this),this.colorType_=e.colorType,this.value=e.value,this.viewProps=e.viewProps,this.colorMode=_(this.value.rawValue.mode),this.ccs_=this.createComponentControllers_(t),this.view=new zn(t,{mode:this.colorMode,inputViews:[this.ccs_[0].view,this.ccs_[1].view,this.ccs_[2].view],viewProps:this.viewProps}),this.view.modeSelectElement.addEventListener("change",this.onModeSelectChange_)}createComponentControllers_(t){const e=this.colorMode.rawValue;return function(t){return"hex"!==t}(e)?function(t,e){const i={colorMode:e.colorMode,colorType:e.colorType,parser:N,viewProps:e.viewProps};return[0,1,2].map(n=>{const s=function(t,e,i){return new ui(t,{arrayPosition:0===i?"fst":2===i?"lst":"mid",parser:e.parser,props:f.fromObject({formatter:(n=e.colorType,U("float"===n?2:0)),keyScale:Gi(!1),pointerScale:"float"===e.colorType?.01:1}),value:_(0,{constraint:Rn(e.colorMode,e.colorType,i)}),viewProps:e.viewProps});var n}(t,i,n);return si({primary:e.value,secondary:s.value,forward:t=>Ji(t,e.colorType).getComponents(e.colorMode)[n],backward(t,i){const s=e.colorMode,r=Ji(t,e.colorType).getComponents(s);return r[n]=i,Ji(Qi(Ti(Bi(r),r[3]),s,e.colorType),"int")}}),s})}(t,{colorMode:e,colorType:this.colorType_,value:this.value,viewProps:this.viewProps}):function(t,e){const i=new Qe(t,{parser:fn("int"),props:f.fromObject({formatter:yn}),value:_(Ui.black()),viewProps:e.viewProps});return si({primary:e.value,secondary:i.value,forward:t=>new Ui(Bi(t.getComponents()),t.mode),backward:(t,e)=>new Ui(Ti(Bi(e.getComponents(t.mode)),t.getComponents()[3]),t.mode)}),[i]}(t,{value:this.value,viewProps:this.viewProps})}onModeSelectChange_(t){const e=t.currentTarget;this.colorMode.rawValue=e.value,this.ccs_=this.createComponentControllers_(this.view.element.ownerDocument),this.view.inputViews=this.ccs_.map(t=>t.view)}},Kn=Mt("hpl"),In=class{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.value=e.value,this.value.emitter.on("change",this.onValueChange_),this.element=t.createElement("div"),this.element.classList.add(Kn()),e.viewProps.bindClassModifiers(this.element),e.viewProps.bindTabIndex(this.element);const i=t.createElement("div");i.classList.add(Kn("c")),this.element.appendChild(i);const n=t.createElement("div");n.classList.add(Kn("m")),this.element.appendChild(n),this.markerElem_=n,this.update_()}update_(){const[t]=this.value.rawValue.getComponents("hsv");this.markerElem_.style.backgroundColor=En(new Ui([t,100,100],"hsv"));const e=F(t,0,360,0,100);this.markerElem_.style.left=`${e}%`}onValueChange_(){this.update_()}},Un=class{constructor(t,e){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.view=new In(t,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new hi(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(t,e){if(!t.point)return;const i=F(q(t.point.x,0,t.bounds.width),0,t.bounds.width,0,360),[,n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new Ui([i,n,s,r],"hsv"),e)}onPointerDown_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerMove_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerUp_(t){this.handlePointerEvent_(t.data,{forceEmit:!0,last:!0})}onKeyDown_(t){const e=ri(Gi(!1),ai(t));if(0===e)return;const[i,n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new Ui([i+e,n,s,r],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(t){0!==ri(Gi(!1),ai(t))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}},Fn=Mt("svp"),$n=class{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.value=e.value,this.value.emitter.on("change",this.onValueChange_),this.element=t.createElement("div"),this.element.classList.add(Fn()),e.viewProps.bindClassModifiers(this.element),e.viewProps.bindTabIndex(this.element);const i=t.createElement("canvas");i.height=64,i.width=64,i.classList.add(Fn("c")),this.element.appendChild(i),this.canvasElement=i;const n=t.createElement("div");n.classList.add(Fn("m")),this.element.appendChild(n),this.markerElem_=n,this.update_()}update_(){const t=function(t){const e=t.ownerDocument.defaultView;return e&&"document"in e?t.getContext("2d",{willReadFrequently:!0}):null}(this.canvasElement);if(!t)return;const e=this.value.rawValue.getComponents("hsv"),i=this.canvasElement.width,n=this.canvasElement.height,s=t.getImageData(0,0,i,n),r=s.data;for(let l=0;lt.getComponents()[3],backward:(t,e)=>{const i=t.getComponents();return i[3]=e,new Ui(i,t.mode)}}),this.textsC_=new Nn(t,{colorType:e.colorType,value:this.value,viewProps:this.viewProps}),this.view=new $i(t,{alphaViews:this.alphaIcs_?{palette:this.alphaIcs_.palette.view,text:this.alphaIcs_.text.view}:null,hPaletteView:this.hPaletteC_.view,supportsAlpha:e.supportsAlpha,svPaletteView:this.svPaletteC_.view,textsView:this.textsC_.view,viewProps:this.viewProps})}get textsController(){return this.textsC_}},Gn=Mt("colsw"),Yn=class{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),e.value.emitter.on("change",this.onValueChange_),this.value=e.value,this.element=t.createElement("div"),this.element.classList.add(Gn()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(Gn("sw")),this.element.appendChild(i),this.swatchElem_=i;const n=t.createElement("button");n.classList.add(Gn("b")),e.viewProps.bindDisabled(n),this.element.appendChild(n),this.buttonElement=n,this.update_()}update_(){const t=this.value.rawValue;this.swatchElem_.style.backgroundColor=Pn(t)}onValueChange_(){this.update_()}},Xn=class{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.view=new Yn(t,{value:this.value,viewProps:this.viewProps})}},Wn=class{constructor(t,e){this.onButtonBlur_=this.onButtonBlur_.bind(this),this.onButtonClick_=this.onButtonClick_.bind(this),this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.foldable_=he.create(e.expanded),this.swatchC_=new Xn(t,{value:this.value,viewProps:this.viewProps});const i=this.swatchC_.view.buttonElement;i.addEventListener("blur",this.onButtonBlur_),i.addEventListener("click",this.onButtonClick_),this.textC_=new Qe(t,{parser:e.parser,props:f.fromObject({formatter:e.formatter}),value:this.value,viewProps:this.viewProps}),this.view=new Ai(t,{foldable:this.foldable_,pickerLayout:e.pickerLayout}),this.view.swatchElement.appendChild(this.swatchC_.view.element),this.view.textElement.appendChild(this.textC_.view.element),this.popC_="popup"===e.pickerLayout?new Ye(t,{viewProps:this.viewProps}):null;const n=new Hn(t,{colorType:e.colorType,supportsAlpha:e.supportsAlpha,value:this.value,viewProps:this.viewProps});n.view.allFocusableElements.forEach(t=>{t.addEventListener("blur",this.onPopupChildBlur_),t.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=n,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(n.view.element),si({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:t=>t,backward:(t,e)=>e})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),de(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onButtonBlur_(t){if(!this.popC_)return;const e=this.view.element,i=t.relatedTarget;i&&e.contains(i)||(this.popC_.shows.rawValue=!1)}onButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(t){if(!this.popC_)return;const e=this.popC_.view.element,i=Et(t);i&&e.contains(i)||i&&i===this.swatchC_.view.buttonElement&&!_t(e.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(t){this.popC_?"Escape"===t.key&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&"Escape"===t.key&&this.swatchC_.view.buttonElement.focus()}};function Qn(t){return Bi(t.getComponents("rgb")).reduce((t,e)=>t<<8|255&Math.floor(e),0)}function Jn(t){return t.getComponents("rgb").reduce((t,e,i)=>t<<8|255&Math.floor(3===i?255*e:e),0)>>>0}function Zn(t){return"number"!=typeof t?Ui.black():new Ui([(e=t)>>16&255,e>>8&255,255&e],"rgb");var e}function ts(t){return"number"!=typeof t?Ui.black():new Ui([(e=t)>>24&255,e>>16&255,e>>8&255,F(255&e,0,255,0,1)],"rgb");var e}function es(t,e){return"object"==typeof t&&!o(t)&&e in t&&"number"==typeof t[e]}function is(t){return es(t,"r")&&es(t,"g")&&es(t,"b")}function ns(t){return is(t)&&es(t,"a")}function ss(t){return is(t)}function rs(t,e){if(t.mode!==e.mode)return!1;if(t.type!==e.type)return!1;const i=t.getComponents(),n=e.getComponents();for(let s=0;s{if("number"!=typeof t)return null;if(!function(t){return"color"in t||"color"===t.view}(e))return null;const i=Hi(e);return i?{initialValue:t,params:Object.assign(Object.assign({},i),{supportsAlpha:(n=e,!!(null===(s=null==n?void 0:n.color)||void 0===s?void 0:s.alpha))})}:null;var n,s},binding:{reader:t=>t.params.supportsAlpha?ts:Zn,equals:rs,writer:t=>function(t){const e=t?Jn:Qn;return(t,i)=>{Vi(t,e(i))}}(t.params.supportsAlpha)},controller:t=>{var e,i,n;return new Wn(t.document,{colorType:"int",expanded:null!==(e=t.params.expanded)&&void 0!==e&&e,formatter:(n=t.params.supportsAlpha,n?t=>Pn(t,"0x"):t=>yn(t,"0x")),parser:fn("int"),pickerLayout:null!==(i=t.params.picker)&&void 0!==i?i:"popup",supportsAlpha:t.params.supportsAlpha,value:t.value,viewProps:t.viewProps})}});function ls(t,e){return i=>t?Mn(i,e):Vn(i,e)}var ps=Zt({id:"input-color-object",type:"input",accept:(t,e)=>{var i;if(!ss(t))return null;const n=Hi(e);return n?{initialValue:t,params:Object.assign(Object.assign({},n),{colorType:null!==(i=Yi(e))&&void 0!==i?i:"int"})}:null},binding:{reader:t=>{return e=t.params.colorType,t=>Ji(function(t,e){return ss(t)?"int"===e?new Ui(os(t),"rgb"):"float"===e?new Xi(os(t),"rgb"):Ji(Ui.black(),"int"):Ji(Ui.black(),e)}(t,e),"int");var e},equals:rs,writer:t=>{return e=ns(t.initialValue),i=t.params.colorType,(t,n)=>{e?function(t,e,i){const n=Ji(e,i).toRgbaObject();t.writeProperty("r",n.r),t.writeProperty("g",n.g),t.writeProperty("b",n.b),t.writeProperty("a",n.a)}(t,n,i):function(t,e,i){const n=Ji(e,i).toRgbaObject();t.writeProperty("r",n.r),t.writeProperty("g",n.g),t.writeProperty("b",n.b)}(t,n,i)};var e,i}},controller:t=>{var e,i;const n=ns(t.initialValue);return new Wn(t.document,{colorType:t.params.colorType,expanded:null!==(e=t.params.expanded)&&void 0!==e&&e,formatter:ls(n,t.params.colorType),parser:fn("int"),pickerLayout:null!==(i=t.params.picker)&&void 0!==i?i:"popup",supportsAlpha:n,value:t.value,viewProps:t.viewProps})}}),hs=Zt({id:"input-color-string",type:"input",accept:(t,e)=>{if("string"!=typeof t)return null;if("text"===e.view)return null;const i=function(t,e="int"){const i=function(t){return _n.reduce((e,{parser:i,result:n})=>e||(i(t)?n:null),null)}(t);return i?"hex"===i.notation&&"float"!==e?Object.assign(Object.assign({},i),{type:"int"}):"func"===i.notation?Object.assign(Object.assign({},i),{type:e}):null:null}(t,Yi(e));if(!i)return null;const n=Dn(i);if(!n)return null;const s=Hi(e);return s?{initialValue:t,params:Object.assign(Object.assign({},s),{format:i,stringifier:n})}:null},binding:{reader:()=>xn,equals:rs,writer:t=>{const e=function(t){const e=Dn(t);return e?(t,i)=>{Vi(t,e(i))}:null}(t.params.format);if(!e)throw u.notBindable();return e}},controller:t=>{var e,i;return new Wn(t.document,{colorType:t.params.format.type,expanded:null!==(e=t.params.expanded)&&void 0!==e&&e,formatter:t.params.stringifier,parser:fn("int"),pickerLayout:null!==(i=t.params.picker)&&void 0!==i?i:"popup",supportsAlpha:t.params.format.alpha,value:t.value,viewProps:t.viewProps})}}),cs=class{constructor(t){this.components=t.components,this.asm_=t.assembly}constrain(t){const e=this.asm_.toComponents(t).map((t,e)=>{var i,n;return null!==(n=null===(i=this.components[e])||void 0===i?void 0:i.constrain(t))&&void 0!==n?n:t});return this.asm_.fromComponents(e)}},ds=Mt("pndtxt"),us=class{constructor(t,e){this.textViews=e.textViews,this.element=t.createElement("div"),this.element.classList.add(ds()),this.textViews.forEach(e=>{const i=t.createElement("div");i.classList.add(ds("a")),i.appendChild(e.element),this.element.appendChild(i)})}},vs=class{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.acs_=e.axes.map((i,n)=>function(t,e,i){return new ui(t,{arrayPosition:0===i?"fst":i===e.axes.length-1?"lst":"mid",parser:e.parser,props:e.axes[i].textProps,value:_(0,{constraint:e.axes[i].constraint}),viewProps:e.viewProps})}(t,e,n)),this.acs_.forEach((t,i)=>{si({primary:this.value,secondary:t.value,forward:t=>e.assembly.toComponents(t)[i],backward:(t,n)=>{const s=e.assembly.toComponents(t);return s[i]=n,e.assembly.fromComponents(s)}})}),this.view=new us(t,{textViews:this.acs_.map(t=>t.view)})}get textControllers(){return this.acs_}},ms=class extends at{get max(){return this.controller.valueController.sliderController.props.get("max")}set max(t){this.controller.valueController.sliderController.props.set("max",t)}get min(){return this.controller.valueController.sliderController.props.get("min")}set min(t){this.controller.valueController.sliderController.props.set("min",t)}},bs=Zt({id:"input-number",type:"input",accept:(t,e)=>{if("number"!=typeof t)return null;const i=dt(e,t=>Object.assign(Object.assign({},Z(t)),{options:t.optional.custom(Ke),readonly:t.optional.constant(!1)}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>K,constraint:t=>function(t,e){const i=[],n=W(t,e);n&&i.push(n);const s=Q(t);s&&i.push(s);const r=Ue(t.options);return r&&i.push(r),new ze(i)}(t.params,t.initialValue),writer:t=>Vi},controller:t=>{const e=t.value,i=t.constraint,n=i&&Re(i,Ne);if(n)return new qe(t.document,{props:new f({options:n.values.value("options")}),value:e,viewProps:t.viewProps});const s=J(t.params,e.rawValue),r=i&&Re(i,x);return r?new _i(t.document,Object.assign(Object.assign({},fi(Object.assign(Object.assign({},s),{keyScale:_(s.keyScale),max:r.values.value("max"),min:r.values.value("min")}))),{parser:N,value:e,viewProps:t.viewProps})):new ui(t.document,{parser:N,props:f.fromObject(s),value:e,viewProps:t.viewProps})},api:t=>"number"!=typeof t.controller.value.rawValue?null:t.controller.valueController instanceof _i?new ms(t.controller):t.controller.valueController instanceof qe?new Oe(t.controller):null}),gs=class{constructor(t=0,e=0){this.x=t,this.y=e}getComponents(){return[this.x,this.y]}static isObject(t){if(o(t))return!1;const e=t.x,i=t.y;return"number"==typeof e&&"number"==typeof i}static equals(t,e){return t.x===e.x&&t.y===e.y}toObject(){return{x:this.x,y:this.y}}},ws={toComponents:t=>t.getComponents(),fromComponents:t=>new gs(...t)},_s=Mt("p2d"),fs=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(_s()),e.viewProps.bindClassModifiers(this.element),kt(e.expanded,qt(this.element,_s(void 0,"expanded")));const i=t.createElement("div");i.classList.add(_s("h")),this.element.appendChild(i);const n=t.createElement("button");n.classList.add(_s("b")),n.appendChild(xt(t,"p2dpad")),e.viewProps.bindDisabled(n),i.appendChild(n),this.buttonElement=n;const s=t.createElement("div");if(s.classList.add(_s("t")),i.appendChild(s),this.textElement=s,"inline"===e.pickerLayout){const e=t.createElement("div");e.classList.add(_s("p")),this.element.appendChild(e),this.pickerElement=e}else this.pickerElement=null}},xs=Mt("p2dp"),Cs=class{constructor(t,e){this.onFoldableChange_=this.onFoldableChange_.bind(this),this.onPropsChange_=this.onPropsChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.props_=e.props,this.props_.emitter.on("change",this.onPropsChange_),this.element=t.createElement("div"),this.element.classList.add(xs()),"popup"===e.layout&&this.element.classList.add(xs(void 0,"p")),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(xs("p")),e.viewProps.bindTabIndex(i),this.element.appendChild(i),this.padElement=i;const n=t.createElementNS(gt,"svg");n.classList.add(xs("g")),this.padElement.appendChild(n),this.svgElem_=n;const s=t.createElementNS(gt,"line");s.classList.add(xs("ax")),s.setAttributeNS(null,"x1","0"),s.setAttributeNS(null,"y1","50%"),s.setAttributeNS(null,"x2","100%"),s.setAttributeNS(null,"y2","50%"),this.svgElem_.appendChild(s);const r=t.createElementNS(gt,"line");r.classList.add(xs("ax")),r.setAttributeNS(null,"x1","50%"),r.setAttributeNS(null,"y1","0"),r.setAttributeNS(null,"x2","50%"),r.setAttributeNS(null,"y2","100%"),this.svgElem_.appendChild(r);const o=t.createElementNS(gt,"line");o.classList.add(xs("l")),o.setAttributeNS(null,"x1","50%"),o.setAttributeNS(null,"y1","50%"),this.svgElem_.appendChild(o),this.lineElem_=o;const a=t.createElement("div");a.classList.add(xs("m")),this.padElement.appendChild(a),this.markerElem_=a,e.value.emitter.on("change",this.onValueChange_),this.value=e.value,this.update_()}get allFocusableElements(){return[this.padElement]}update_(){const[t,e]=this.value.rawValue.getComponents(),i=this.props_.get("max"),n=F(t,-i,+i,0,100),s=F(e,-i,+i,0,100),r=this.props_.get("invertsY")?100-s:s;this.lineElem_.setAttributeNS(null,"x2",`${n}%`),this.lineElem_.setAttributeNS(null,"y2",`${r}%`),this.markerElem_.style.left=`${n}%`,this.markerElem_.style.top=`${r}%`}onValueChange_(){this.update_()}onPropsChange_(){this.update_()}onFoldableChange_(){this.update_()}};function ys(t,e,i){return[ri(e[0],ai(t)),ri(e[1],oi(t))*(i?1:-1)]}var Ps=class{constructor(t,e){this.onPadKeyDown_=this.onPadKeyDown_.bind(this),this.onPadKeyUp_=this.onPadKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.props=e.props,this.value=e.value,this.viewProps=e.viewProps,this.view=new Cs(t,{layout:e.layout,props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new hi(this.view.padElement),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.padElement.addEventListener("keydown",this.onPadKeyDown_),this.view.padElement.addEventListener("keyup",this.onPadKeyUp_)}handlePointerEvent_(t,e){if(!t.point)return;const i=this.props.get("max"),n=F(t.point.x,0,t.bounds.width,-i,+i),s=F(this.props.get("invertsY")?t.bounds.height-t.point.y:t.point.y,0,t.bounds.height,-i,+i);this.value.setRawValue(new gs(n,s),e)}onPointerDown_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerMove_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerUp_(t){this.handlePointerEvent_(t.data,{forceEmit:!0,last:!0})}onPadKeyDown_(t){li(t.key)&&t.preventDefault();const[e,i]=ys(t,[this.props.get("xKeyScale"),this.props.get("yKeyScale")],this.props.get("invertsY"));0===e&&0===i||this.value.setRawValue(new gs(this.value.rawValue.x+e,this.value.rawValue.y+i),{forceEmit:!1,last:!1})}onPadKeyUp_(t){const[e,i]=ys(t,[this.props.get("xKeyScale"),this.props.get("yKeyScale")],this.props.get("invertsY"));0===e&&0===i||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}},Es=class{constructor(t,e){var i,n;this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.onPadButtonBlur_=this.onPadButtonBlur_.bind(this),this.onPadButtonClick_=this.onPadButtonClick_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.foldable_=he.create(e.expanded),this.popC_="popup"===e.pickerLayout?new Ye(t,{viewProps:this.viewProps}):null;const s=new Ps(t,{layout:e.pickerLayout,props:new f({invertsY:_(e.invertsY),max:_(e.max),xKeyScale:e.axes[0].textProps.value("keyScale"),yKeyScale:e.axes[1].textProps.value("keyScale")}),value:this.value,viewProps:this.viewProps});s.view.allFocusableElements.forEach(t=>{t.addEventListener("blur",this.onPopupChildBlur_),t.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=s,this.textC_=new vs(t,{assembly:ws,axes:e.axes,parser:e.parser,value:this.value,viewProps:this.viewProps}),this.view=new fs(t,{expanded:this.foldable_.value("expanded"),pickerLayout:e.pickerLayout,viewProps:this.viewProps}),this.view.textElement.appendChild(this.textC_.view.element),null===(i=this.view.buttonElement)||void 0===i||i.addEventListener("blur",this.onPadButtonBlur_),null===(n=this.view.buttonElement)||void 0===n||n.addEventListener("click",this.onPadButtonClick_),this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),si({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:t=>t,backward:(t,e)=>e})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),de(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onPadButtonBlur_(t){if(!this.popC_)return;const e=this.view.element,i=t.relatedTarget;i&&e.contains(i)||(this.popC_.shows.rawValue=!1)}onPadButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(t){if(!this.popC_)return;const e=this.popC_.view.element,i=Et(t);i&&e.contains(i)||i&&i===this.view.buttonElement&&!_t(e.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(t){this.popC_?"Escape"===t.key&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&"Escape"===t.key&&this.view.buttonElement.focus()}};function ks(t){return gs.isObject(t)?new gs(t.x,t.y):new gs}function Vs(t,e){t.writeProperty("x",e.x),t.writeProperty("y",e.y)}function Ls(t,e){var i,n;if(!o(t.min)||!o(t.max))return Math.max(Math.abs(null!==(i=t.min)&&void 0!==i?i:0),Math.abs(null!==(n=t.max)&&void 0!==n?n:0));const s=Y(t);return Math.max(10*Math.abs(s),10*Math.abs(e))}function Ms(t,e){var i,n;const s=Ls(h(t,null!==(i=t.x)&&void 0!==i?i:{}),e.x),r=Ls(h(t,null!==(n=t.y)&&void 0!==n?n:{}),e.y);return Math.max(s,r)}function Ss(t){if(!("y"in t))return!1;const e=t.y;return!!e&&"inverted"in e&&!!e.inverted}var js=Zt({id:"input-point2d",type:"input",accept:(t,e)=>{if(!gs.isObject(t))return null;const i=dt(e,t=>Object.assign(Object.assign({},yi(t)),{expanded:t.optional.boolean,picker:t.optional.custom(ki),readonly:t.optional.constant(!1),x:t.optional.custom(Pi),y:t.optional.object(Object.assign(Object.assign({},yi(t)),{inverted:t.optional.boolean}))}));return i?{initialValue:t,params:i}:null},binding:{reader:()=>ks,constraint:t=>{return e=t.params,i=t.initialValue,new cs({assembly:ws,components:[Ei(Object.assign(Object.assign({},e),e.x),i.x),Ei(Object.assign(Object.assign({},e),e.y),i.y)]});var e,i},equals:gs.equals,writer:()=>Vs},controller:t=>{var e,i;const n=t.document,s=t.value,r=t.constraint,o=[t.params.x,t.params.y];return new Es(n,{axes:s.rawValue.getComponents().map((e,i)=>{var n;return tt({constraint:r.components[i],initialValue:e,params:h(t.params,null!==(n=o[i])&&void 0!==n?n:{})})}),expanded:null!==(e=t.params.expanded)&&void 0!==e&&e,invertsY:Ss(t.params),max:Ms(t.params,s.rawValue),parser:N,pickerLayout:null!==(i=t.params.picker)&&void 0!==i?i:"popup",value:s,viewProps:t.viewProps})}}),Ds=class{constructor(t=0,e=0,i=0){this.x=t,this.y=e,this.z=i}getComponents(){return[this.x,this.y,this.z]}static isObject(t){if(o(t))return!1;const e=t.x,i=t.y,n=t.z;return"number"==typeof e&&"number"==typeof i&&"number"==typeof n}static equals(t,e){return t.x===e.x&&t.y===e.y&&t.z===e.z}toObject(){return{x:this.x,y:this.y,z:this.z}}},As={toComponents:t=>t.getComponents(),fromComponents:t=>new Ds(...t)};function Os(t){return Ds.isObject(t)?new Ds(t.x,t.y,t.z):new Ds}function Bs(t,e){t.writeProperty("x",e.x),t.writeProperty("y",e.y),t.writeProperty("z",e.z)}var Ts=Zt({id:"input-point3d",type:"input",accept:(t,e)=>{if(!Ds.isObject(t))return null;const i=dt(e,t=>Object.assign(Object.assign({},yi(t)),{readonly:t.optional.constant(!1),x:t.optional.custom(Pi),y:t.optional.custom(Pi),z:t.optional.custom(Pi)}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>Os,constraint:t=>{return e=t.params,i=t.initialValue,new cs({assembly:As,components:[Ei(Object.assign(Object.assign({},e),e.x),i.x),Ei(Object.assign(Object.assign({},e),e.y),i.y),Ei(Object.assign(Object.assign({},e),e.z),i.z)]});var e,i},equals:Ds.equals,writer:t=>Bs},controller:t=>{const e=t.value,i=t.constraint,n=[t.params.x,t.params.y,t.params.z];return new vs(t.document,{assembly:As,axes:e.rawValue.getComponents().map((e,s)=>{var r;return tt({constraint:i.components[s],initialValue:e,params:h(t.params,null!==(r=n[s])&&void 0!==r?r:{})})}),parser:N,value:e,viewProps:t.viewProps})}}),zs=class{constructor(t=0,e=0,i=0,n=0){this.x=t,this.y=e,this.z=i,this.w=n}getComponents(){return[this.x,this.y,this.z,this.w]}static isObject(t){if(o(t))return!1;const e=t.x,i=t.y,n=t.z,s=t.w;return"number"==typeof e&&"number"==typeof i&&"number"==typeof n&&"number"==typeof s}static equals(t,e){return t.x===e.x&&t.y===e.y&&t.z===e.z&&t.w===e.w}toObject(){return{x:this.x,y:this.y,z:this.z,w:this.w}}},Rs={toComponents:t=>t.getComponents(),fromComponents:t=>new zs(...t)};function Ns(t){return zs.isObject(t)?new zs(t.x,t.y,t.z,t.w):new zs}function Ks(t,e){t.writeProperty("x",e.x),t.writeProperty("y",e.y),t.writeProperty("z",e.z),t.writeProperty("w",e.w)}var Is=Zt({id:"input-point4d",type:"input",accept:(t,e)=>{if(!zs.isObject(t))return null;const i=dt(e,t=>Object.assign(Object.assign({},yi(t)),{readonly:t.optional.constant(!1),w:t.optional.custom(Pi),x:t.optional.custom(Pi),y:t.optional.custom(Pi),z:t.optional.custom(Pi)}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>Ns,constraint:t=>{return e=t.params,i=t.initialValue,new cs({assembly:Rs,components:[Ei(Object.assign(Object.assign({},e),e.x),i.x),Ei(Object.assign(Object.assign({},e),e.y),i.y),Ei(Object.assign(Object.assign({},e),e.z),i.z),Ei(Object.assign(Object.assign({},e),e.w),i.w)]});var e,i},equals:zs.equals,writer:t=>Ks},controller:t=>{const e=t.value,i=t.constraint,n=[t.params.x,t.params.y,t.params.z,t.params.w];return new vs(t.document,{assembly:Rs,axes:e.rawValue.getComponents().map((e,s)=>{var r;return tt({constraint:i.components[s],initialValue:e,params:h(t.params,null!==(r=n[s])&&void 0!==r?r:{})})}),parser:N,value:e,viewProps:t.viewProps})}}),Us=Zt({id:"input-string",type:"input",accept:(t,e)=>{if("string"!=typeof t)return null;const i=dt(e,t=>({readonly:t.optional.constant(!1),options:t.optional.custom(Ke)}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>ii,constraint:t=>function(t){const e=[],i=Ue(t.options);return i&&e.push(i),new ze(e)}(t.params),writer:t=>Vi},controller:t=>{const e=t.document,i=t.value,n=t.constraint,s=n&&Re(n,Ne);return s?new qe(e,{props:new f({options:s.values.value("options")}),value:i,viewProps:t.viewProps}):new Qe(e,{parser:t=>t,props:f.fromObject({formatter:ni}),value:i,viewProps:t.viewProps})},api:t=>"string"!=typeof t.controller.value.rawValue?null:t.controller.valueController instanceof qe?new Oe(t.controller):null}),Fs=200,$s=3,qs=Mt("mll"),Hs=class{constructor(t,e){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=e.formatter,this.element=t.createElement("div"),this.element.classList.add(qs()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("textarea");i.classList.add(qs("i")),i.style.height=`calc(var(${Ci("containerUnitSize")}) * ${e.rows})`,i.readOnly=!0,e.viewProps.bindDisabled(i),this.element.appendChild(i),this.textareaElem_=i,e.value.emitter.on("change",this.onValueUpdate_),this.value=e.value,this.update_()}update_(){const t=this.textareaElem_,e=t.scrollTop===t.scrollHeight-t.clientHeight,i=[];this.value.rawValue.forEach(t=>{void 0!==t&&i.push(this.formatter_(t))}),t.textContent=i.join("\n"),e&&(t.scrollTop=t.scrollHeight)}onValueUpdate_(){this.update_()}},Gs=class{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.view=new Hs(t,{formatter:e.formatter,rows:e.rows,value:this.value,viewProps:this.viewProps})}},Ys=Mt("sgl"),Xs=class{constructor(t,e){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=e.formatter,this.element=t.createElement("div"),this.element.classList.add(Ys()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("input");i.classList.add(Ys("i")),i.readOnly=!0,i.type="text",e.viewProps.bindDisabled(i),this.element.appendChild(i),this.inputElement=i,e.value.emitter.on("change",this.onValueUpdate_),this.value=e.value,this.update_()}update_(){const t=this.value.rawValue,e=t[t.length-1];this.inputElement.value=void 0!==e?this.formatter_(e):""}onValueUpdate_(){this.update_()}},Ws=class{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.view=new Xs(t,{formatter:e.formatter,value:this.value,viewProps:this.viewProps})}},Qs=Zt({id:"monitor-bool",type:"monitor",accept:(t,e)=>{if("boolean"!=typeof t)return null;const i=dt(e,t=>({readonly:t.required.constant(!0),rows:t.optional.number}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>Je},controller:t=>{var e;return 1===t.value.rawValue.length?new Ws(t.document,{formatter:Ze,value:t.value,viewProps:t.viewProps}):new Gs(t.document,{formatter:Ze,rows:null!==(e=t.params.rows)&&void 0!==e?e:$s,value:t.value,viewProps:t.viewProps})}}),Js=class extends at{get max(){return this.controller.valueController.props.get("max")}set max(t){this.controller.valueController.props.set("max",t)}get min(){return this.controller.valueController.props.get("min")}set min(t){this.controller.valueController.props.set("min",t)}},Zs=Mt("grl"),tr=class{constructor(t,e){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=t.createElement("div"),this.element.classList.add(Zs()),e.viewProps.bindClassModifiers(this.element),this.formatter_=e.formatter,this.props_=e.props,this.cursor_=e.cursor,this.cursor_.emitter.on("change",this.onCursorChange_);const i=t.createElementNS(gt,"svg");i.classList.add(Zs("g")),i.style.height=`calc(var(${Ci("containerUnitSize")}) * ${e.rows})`,this.element.appendChild(i),this.svgElem_=i;const n=t.createElementNS(gt,"polyline");this.svgElem_.appendChild(n),this.lineElem_=n;const s=t.createElement("div");s.classList.add(Zs("t"),Mt("tt")()),this.element.appendChild(s),this.tooltipElem_=s,e.value.emitter.on("change",this.onValueUpdate_),this.value=e.value,this.update_()}get graphElement(){return this.svgElem_}update_(){const{clientWidth:t,clientHeight:e}=this.element,i=this.value.rawValue.length-1,n=this.props_.get("min"),s=this.props_.get("max"),r=[];this.value.rawValue.forEach((o,a)=>{if(void 0===o)return;const l=F(a,0,i,0,t),p=F(o,n,s,e,0);r.push([l,p].join(","))}),this.lineElem_.setAttributeNS(null,"points",r.join(" "));const o=this.tooltipElem_,a=this.value.rawValue[this.cursor_.rawValue];if(void 0===a)return void o.classList.remove(Zs("t","a"));const l=F(this.cursor_.rawValue,0,i,0,t),p=F(a,n,s,e,0);o.style.left=`${l}px`,o.style.top=`${p}px`,o.textContent=`${this.formatter_(a)}`,o.classList.contains(Zs("t","a"))||(o.classList.add(Zs("t","a"),Zs("t","in")),wt(o),o.classList.remove(Zs("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}},er=class{constructor(t,e){if(this.onGraphMouseMove_=this.onGraphMouseMove_.bind(this),this.onGraphMouseLeave_=this.onGraphMouseLeave_.bind(this),this.onGraphPointerDown_=this.onGraphPointerDown_.bind(this),this.onGraphPointerMove_=this.onGraphPointerMove_.bind(this),this.onGraphPointerUp_=this.onGraphPointerUp_.bind(this),this.props=e.props,this.value=e.value,this.viewProps=e.viewProps,this.cursor_=_(-1),this.view=new tr(t,{cursor:this.cursor_,formatter:e.formatter,rows:e.rows,props:this.props,value:this.value,viewProps:this.viewProps}),_t(t)){const t=new hi(this.view.element);t.emitter.on("down",this.onGraphPointerDown_),t.emitter.on("move",this.onGraphPointerMove_),t.emitter.on("up",this.onGraphPointerUp_)}else this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_)}importProps(t){return ut(t,null,t=>({max:t.required.number,min:t.required.number}),t=>(this.props.set("max",t.max),this.props.set("min",t.min),!0))}exportProps(){return vt(null,{max:this.props.get("max"),min:this.props.get("min")})}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(t){const{clientWidth:e}=this.view.element;this.cursor_.rawValue=Math.floor(F(t.offsetX,0,e,0,this.value.rawValue.length))}onGraphPointerDown_(t){this.onGraphPointerMove_(t)}onGraphPointerMove_(t){t.data.point?this.cursor_.rawValue=Math.floor(F(t.data.point.x,0,t.data.bounds.width,0,this.value.rawValue.length)):this.cursor_.rawValue=-1}onGraphPointerUp_(){this.cursor_.rawValue=-1}};function ir(t){return o(t.format)?U(2):t.format}function nr(t){return"graph"===t.view}var sr=Zt({id:"monitor-number",type:"monitor",accept:(t,e)=>{if("number"!=typeof t)return null;const i=dt(e,t=>({format:t.optional.function,max:t.optional.number,min:t.optional.number,readonly:t.required.constant(!0),rows:t.optional.number,view:t.optional.string}));return i?{initialValue:t,params:i}:null},binding:{defaultBufferSize:t=>nr(t)?64:1,reader:t=>K},controller:t=>nr(t.params)?function(t){var e,i,n;return new er(t.document,{formatter:ir(t.params),rows:null!==(e=t.params.rows)&&void 0!==e?e:$s,props:f.fromObject({max:null!==(i=t.params.max)&&void 0!==i?i:100,min:null!==(n=t.params.min)&&void 0!==n?n:0}),value:t.value,viewProps:t.viewProps})}(t):function(t){var e;return 1===t.value.rawValue.length?new Ws(t.document,{formatter:ir(t.params),value:t.value,viewProps:t.viewProps}):new Gs(t.document,{formatter:ir(t.params),rows:null!==(e=t.params.rows)&&void 0!==e?e:$s,value:t.value,viewProps:t.viewProps})}(t),api:t=>t.controller.valueController instanceof er?new Js(t.controller):null}),rr=Zt({id:"monitor-string",type:"monitor",accept:(t,e)=>{if("string"!=typeof t)return null;const i=dt(e,t=>({multiline:t.optional.boolean,readonly:t.required.constant(!0),rows:t.optional.number}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>ii},controller:t=>{var e;const i=t.value;return i.rawValue.length>1||t.params.multiline?new Gs(t.document,{formatter:ni,rows:null!==(e=t.params.rows)&&void 0!==e?e:$s,value:i,viewProps:t.viewProps}):new Ws(t.document,{formatter:ni,value:i,viewProps:t.viewProps})}}),or=class{constructor(t){this.target=t.target,this.reader_=t.reader,this.writer_=t.writer}read(){return this.reader_(this.target.read())}write(t){this.writer_(this.target,t)}inject(t){this.write(this.reader_(t))}},ar=class{constructor(t){this.target=t.target,this.reader_=t.reader}read(){return this.reader_(this.target.read())}},lr=class{constructor(t){this.pluginsMap_={blades:[],inputs:[],monitors:[]},this.apiCache_=t}getAll(){return[...this.pluginsMap_.blades,...this.pluginsMap_.inputs,...this.pluginsMap_.monitors]}register(t,e){if(!(i=e.core)||i.major!==Jt.major)throw u.notCompatible(t,e.id);var i;"blade"===e.type?this.pluginsMap_.blades.unshift(e):"input"===e.type?this.pluginsMap_.inputs.unshift(e):"monitor"===e.type&&this.pluginsMap_.monitors.unshift(e)}createInput_(t,e,i){return this.pluginsMap_.inputs.reduce((n,s)=>null!=n?n:function(t,e){var i;const n=t.accept(e.target.read(),e.params);if(o(n))return null;const s={target:e.target,initialValue:n.initialValue,params:n.params},r=dt(e.params,t=>({disabled:t.optional.boolean,hidden:t.optional.boolean,label:t.optional.string,tag:t.optional.string})),a=t.binding.reader(s),l=t.binding.constraint?t.binding.constraint(s):void 0,p=new or({reader:a,target:e.target,writer:t.binding.writer(s)}),h=new lt(_(a(n.initialValue),{constraint:l,equals:t.binding.equals}),p),c=t.controller({constraint:l,document:e.document,initialValue:n.initialValue,params:n.params,value:h,viewProps:fe.create({disabled:null==r?void 0:r.disabled,hidden:null==r?void 0:r.hidden})});return new Nt(e.document,{blade:pe(),props:f.fromObject({label:"label"in e.params?null!==(i=null==r?void 0:r.label)&&void 0!==i?i:null:e.target.key}),tag:null==r?void 0:r.tag,value:h,valueController:c})}(s,{document:t,target:e,params:i}),null)}createMonitor_(t,e,i){return this.pluginsMap_.monitors.reduce((n,s)=>null!=n?n:function(t,e){var i,n,s;const r=t.accept(e.target.read(),e.params);if(o(r))return null;const a={target:e.target,initialValue:r.initialValue,params:r.params},l=dt(e.params,t=>({bufferSize:t.optional.number,disabled:t.optional.boolean,hidden:t.optional.boolean,interval:t.optional.number,label:t.optional.string})),p=t.binding.reader(a),h=null!==(n=null!==(i=null==l?void 0:l.bufferSize)&&void 0!==i?i:t.binding.defaultBufferSize&&t.binding.defaultBufferSize(r.params))&&void 0!==n?n:1,c=new Ut({binding:new ar({reader:p,target:e.target}),bufferSize:h,ticker:(d=e.document,u=null==l?void 0:l.interval,0===u?new Be:new Te(d,null!=u?u:Fs))});var d,u;const v=t.controller({document:e.document,params:r.params,value:c,viewProps:fe.create({disabled:null==l?void 0:l.disabled,hidden:null==l?void 0:l.hidden})});return v.viewProps.bindDisabled(c.ticker),v.viewProps.handleDispose(()=>{c.ticker.dispose()}),new Ft(e.document,{blade:pe(),props:f.fromObject({label:"label"in e.params?null!==(s=null==l?void 0:l.label)&&void 0!==s?s:null:e.target.key}),value:c,valueController:v})}(s,{document:t,params:i,target:e}),null)}createBinding(t,e,i){if(o(e.read()))throw new u({context:{key:e.key},type:"nomatchingcontroller"});const n=this.createInput_(t,e,i);if(n)return n;const s=this.createMonitor_(t,e,i);if(s)return s;throw new u({context:{key:e.key},type:"nomatchingcontroller"})}createBlade(t,e){const i=this.pluginsMap_.blades.reduce((i,n)=>null!=i?i:function(t,e){const i=t.accept(e.params);if(!i)return null;const n=dt(e.params,t=>({disabled:t.optional.boolean,hidden:t.optional.boolean}));return t.controller({blade:pe(),document:e.document,params:Object.assign(Object.assign({},i.params),{disabled:null==n?void 0:n.disabled,hidden:null==n?void 0:n.hidden}),viewProps:fe.create({disabled:null==n?void 0:n.disabled,hidden:null==n?void 0:n.hidden})})}(n,{document:t,params:e}),null);if(!i)throw new u({type:"nomatchingview",context:{params:e}});return i}createInputBindingApi_(t){const e=this.pluginsMap_.inputs.reduce((e,i)=>{var n,s;return e||(null!==(s=null===(n=i.api)||void 0===n?void 0:n.call(i,{controller:t}))&&void 0!==s?s:null)},null);return this.apiCache_.add(t,null!=e?e:new at(t))}createMonitorBindingApi_(t){const e=this.pluginsMap_.monitors.reduce((e,i)=>{var n,s;return e||(null!==(s=null===(n=i.api)||void 0===n?void 0:n.call(i,{controller:t}))&&void 0!==s?s:null)},null);return this.apiCache_.add(t,null!=e?e:new at(t))}createBindingApi(t){if(this.apiCache_.has(t))return this.apiCache_.get(t);if(function(t){return mt(t)&&function(t){if(!("binding"in t))return!1;const e=t.binding;return c(e)&&"read"in e&&"write"in e}(t.value)}(t))return this.createInputBindingApi_(t);if(function(t){return mt(t)&&function(t){if(!("binding"in t))return!1;const e=t.binding;return c(e)&&"read"in e&&!("write"in e)}(t.value)}(t))return this.createMonitorBindingApi_(t);throw u.shouldNeverHappen()}createApi(t){if(this.apiCache_.has(t))return this.apiCache_.get(t);if(function(t){return mt(t)&&bt(t.value)}(t))return this.createBindingApi(t);const e=this.pluginsMap_.blades.reduce((e,i)=>null!=e?e:i.api({controller:t,pool:this}),null);if(!e)throw u.shouldNeverHappen();return this.apiCache_.add(t,e)}},pr=new class{constructor(){this.map_=new Map}get(t){var e;return null!==(e=this.map_.get(t))&&void 0!==e?e:null}has(t){return this.map_.has(t)}add(t,e){return this.map_.set(t,e),t.viewProps.handleDispose(()=>{this.map_.delete(t)}),e}},hr=class extends et{constructor(t){super(t),this.emitter_=new m,this.controller.value.emitter.on("change",t=>{this.emitter_.emit("change",new nt(this,t.rawValue))})}get label(){return this.controller.labelController.props.get("label")}set label(t){this.controller.labelController.props.set("label",t)}get options(){return this.controller.valueController.props.get("options")}set options(t){this.controller.valueController.props.set("options",t)}get value(){return this.controller.value.rawValue}set value(t){this.controller.value.rawValue=t}on(t,e){const i=e.bind(this);return this.emitter_.on(t,t=>{i(t)},{key:e}),this}off(t,e){return this.emitter_.off(t,e),this}},cr=class extends et{},dr=class extends et{constructor(t){super(t),this.emitter_=new m,this.controller.value.emitter.on("change",t=>{this.emitter_.emit("change",new nt(this,t.rawValue))})}get label(){return this.controller.labelController.props.get("label")}set label(t){this.controller.labelController.props.set("label",t)}get max(){return this.controller.valueController.sliderController.props.get("max")}set max(t){this.controller.valueController.sliderController.props.set("max",t)}get min(){return this.controller.valueController.sliderController.props.get("min")}set min(t){this.controller.valueController.sliderController.props.set("min",t)}get value(){return this.controller.value.rawValue}set value(t){this.controller.value.rawValue=t}on(t,e){const i=e.bind(this);return this.emitter_.on(t,t=>{i(t)},{key:e}),this}off(t,e){return this.emitter_.off(t,e),this}},ur=class extends et{constructor(t){super(t),this.emitter_=new m,this.controller.value.emitter.on("change",t=>{this.emitter_.emit("change",new nt(this,t.rawValue))})}get label(){return this.controller.labelController.props.get("label")}set label(t){this.controller.labelController.props.set("label",t)}get formatter(){return this.controller.valueController.props.get("formatter")}set formatter(t){this.controller.valueController.props.set("formatter",t)}get value(){return this.controller.value.rawValue}set value(t){this.controller.value.rawValue=t}on(t,e){const i=e.bind(this);return this.emitter_.on(t,t=>{i(t)},{key:e}),this}off(t,e){return this.emitter_.off(t,e),this}},vr={id:"list",type:"blade",core:Jt,accept(t){const e=dt(t,t=>({options:t.required.custom(Ke),value:t.required.raw,view:t.required.constant("list"),label:t.optional.string}));return e?{params:e}:null},controller(t){const e=new Ne(Ie(t.params.options)),i=_(t.params.value,{constraint:e}),n=new qe(t.document,{props:new f({options:e.values.value("options")}),value:i,viewProps:t.viewProps});return new Tt(t.document,{blade:t.blade,props:f.fromObject({label:t.params.label}),value:i,valueController:n})},api:t=>t.controller instanceof Tt&&t.controller.valueController instanceof qe?new hr(t.controller):null},mr=class extends ue{constructor(t,e){super(t,e)}get element(){return this.controller.view.element}},br=class extends be{constructor(t,e){super(t,{expanded:e.expanded,blade:e.blade,props:e.props,root:!0,viewProps:e.viewProps})}},gr=Mt("spr"),wr=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(gr()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("hr");i.classList.add(gr("r")),this.element.appendChild(i)}},_r=class extends Bt{constructor(t,e){super(Object.assign(Object.assign({},e),{view:new wr(t,{viewProps:e.viewProps})}))}},fr={id:"separator",type:"blade",core:Jt,accept(t){const e=dt(t,t=>({view:t.required.constant("separator")}));return e?{params:e}:null},controller:t=>new _r(t.document,{blade:t.blade,viewProps:t.viewProps}),api:t=>t.controller instanceof _r?new cr(t.controller):null},xr={id:"slider",type:"blade",core:Jt,accept(t){const e=dt(t,t=>({max:t.required.number,min:t.required.number,view:t.required.constant("slider"),format:t.optional.function,label:t.optional.string,value:t.optional.number}));return e?{params:e}:null},controller(t){var e,i;const n=null!==(e=t.params.value)&&void 0!==e?e:0,s=new x({max:t.params.max,min:t.params.min}),r=_(n,{constraint:s}),o=new _i(t.document,Object.assign(Object.assign({},fi({formatter:null!==(i=t.params.format)&&void 0!==i?i:I,keyScale:_(1),max:s.values.value("max"),min:s.values.value("min"),pointerScale:X(t.params,n)})),{parser:N,value:r,viewProps:t.viewProps}));return new Tt(t.document,{blade:t.blade,props:f.fromObject({label:t.params.label}),value:r,valueController:o})},api:t=>t.controller instanceof Tt&&t.controller.valueController instanceof _i?new dr(t.controller):null},Cr={id:"text",type:"blade",core:Jt,accept(t){const e=dt(t,t=>({parse:t.required.function,value:t.required.raw,view:t.required.constant("text"),format:t.optional.function,label:t.optional.string}));return e?{params:e}:null},controller(t){var e;const i=_(t.params.value),n=new Qe(t.document,{parser:t.params.parse,props:f.fromObject({formatter:null!==(e=t.params.format)&&void 0!==e?e:t=>String(t)}),value:i,viewProps:t.viewProps});return new Tt(t.document,{blade:t.blade,props:f.fromObject({label:t.params.label}),value:i,valueController:n})},api:t=>t.controller instanceof Tt&&t.controller.valueController instanceof Qe?new ur(t.controller):null},yr=class extends mr{constructor(t){var e,i;const n=null!=t?t:{},s=null!==(e=n.document)&&void 0!==e?e:globalThis.document,r=function(){const t=new lr(pr);return[js,Ts,Is,Us,bs,hs,ps,as,ji,Qs,rr,sr,te,ge,Ae].forEach(e=>{t.register("core",e)}),t}();super(new br(s,{expanded:n.expanded,blade:pe(),props:f.fromObject({title:n.title}),viewProps:fe.create()}),r),this.pool_=r,this.containerElem_=null!==(i=n.container)&&void 0!==i?i:function(t){const e=t.createElement("div");return e.classList.add(Mt("dfw")()),t.body&&t.body.appendChild(e),e}(s),this.containerElem_.appendChild(this.element),this.doc_=s,this.usesDefaultWrapper_=!n.container,this.setUpDefaultPlugins_()}get document(){if(!this.doc_)throw u.alreadyDisposed();return this.doc_}dispose(){const t=this.containerElem_;if(!t)throw u.alreadyDisposed();if(this.usesDefaultWrapper_){const e=t.parentElement;e&&e.removeChild(t)}this.containerElem_=null,this.doc_=null,super.dispose()}registerPlugin(t){t.css&&function(t,e,i){if(t.querySelector(`style[data-tp-style=${e}]`))return;const n=t.createElement("style");n.dataset.tpStyle=e,n.textContent=i,t.head.appendChild(n)}(this.document,`plugin-${t.id}`,t.css),("plugin"in t?[t.plugin]:"plugins"in t?t.plugins:[]).forEach(e=>{this.pool_.register(t.id,e)})}setUpDefaultPlugins_(){this.registerPlugin({id:"default",css:'.tp-tbiv_b,.tp-coltxtv_ms,.tp-colswv_b,.tp-ckbv_i,.tp-sglv_i,.tp-mllv_i,.tp-grlv_g,.tp-txtv_i,.tp-p2dpv_p,.tp-colswv_sw,.tp-rotv_b,.tp-fldv_b,.tp-p2dv_b,.tp-btnv_b,.tp-lstv_s{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-p2dv_b,.tp-btnv_b,.tp-lstv_s{background-color:var(--btn-bg);border-radius:var(--bld-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--cnt-usz);line-height:var(--cnt-usz);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-p2dv_b:hover,.tp-btnv_b:hover,.tp-lstv_s:hover{background-color:var(--btn-bg-h)}.tp-p2dv_b:focus,.tp-btnv_b:focus,.tp-lstv_s:focus{background-color:var(--btn-bg-f)}.tp-p2dv_b:active,.tp-btnv_b:active,.tp-lstv_s:active{background-color:var(--btn-bg-a)}.tp-p2dv_b:disabled,.tp-btnv_b:disabled,.tp-lstv_s:disabled{opacity:.5}.tp-rotv_c>.tp-cntv.tp-v-lst,.tp-tbpv_c>.tp-cntv.tp-v-lst,.tp-fldv_c>.tp-cntv.tp-v-lst{margin-bottom:calc(-1*var(--cnt-vp))}.tp-rotv_c>.tp-fldv.tp-v-lst .tp-fldv_c,.tp-tbpv_c>.tp-fldv.tp-v-lst .tp-fldv_c,.tp-fldv_c>.tp-fldv.tp-v-lst .tp-fldv_c{border-bottom-left-radius:0}.tp-rotv_c>.tp-fldv.tp-v-lst .tp-fldv_b,.tp-tbpv_c>.tp-fldv.tp-v-lst .tp-fldv_b,.tp-fldv_c>.tp-fldv.tp-v-lst .tp-fldv_b{border-bottom-left-radius:0}.tp-rotv_c>*:not(.tp-v-fst),.tp-tbpv_c>*:not(.tp-v-fst),.tp-fldv_c>*:not(.tp-v-fst){margin-top:var(--cnt-usp)}.tp-rotv_c>.tp-sprv:not(.tp-v-fst),.tp-tbpv_c>.tp-sprv:not(.tp-v-fst),.tp-fldv_c>.tp-sprv:not(.tp-v-fst),.tp-rotv_c>.tp-cntv:not(.tp-v-fst),.tp-tbpv_c>.tp-cntv:not(.tp-v-fst),.tp-fldv_c>.tp-cntv:not(.tp-v-fst){margin-top:var(--cnt-vp)}.tp-rotv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-tbpv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-fldv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-rotv_c>.tp-cntv+*:not(.tp-v-hidden),.tp-tbpv_c>.tp-cntv+*:not(.tp-v-hidden),.tp-fldv_c>.tp-cntv+*:not(.tp-v-hidden){margin-top:var(--cnt-vp)}.tp-rotv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-tbpv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-fldv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-rotv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv,.tp-tbpv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv,.tp-fldv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv{margin-top:0}.tp-tbpv_c>.tp-cntv,.tp-fldv_c>.tp-cntv{margin-left:4px}.tp-tbpv_c>.tp-fldv>.tp-fldv_b,.tp-fldv_c>.tp-fldv>.tp-fldv_b{border-top-left-radius:var(--bld-br);border-bottom-left-radius:var(--bld-br)}.tp-tbpv_c>.tp-fldv.tp-fldv-expanded>.tp-fldv_b,.tp-fldv_c>.tp-fldv.tp-fldv-expanded>.tp-fldv_b{border-bottom-left-radius:0}.tp-tbpv_c .tp-fldv>.tp-fldv_c,.tp-fldv_c .tp-fldv>.tp-fldv_c{border-bottom-left-radius:var(--bld-br)}.tp-tbpv_c>.tp-cntv+.tp-fldv>.tp-fldv_b,.tp-fldv_c>.tp-cntv+.tp-fldv>.tp-fldv_b{border-top-left-radius:0}.tp-tbpv_c>.tp-cntv+.tp-tabv>.tp-tabv_t,.tp-fldv_c>.tp-cntv+.tp-tabv>.tp-tabv_t{border-top-left-radius:0}.tp-tbpv_c>.tp-tabv>.tp-tabv_t,.tp-fldv_c>.tp-tabv>.tp-tabv_t{border-top-left-radius:var(--bld-br)}.tp-tbpv_c .tp-tabv>.tp-tabv_c,.tp-fldv_c .tp-tabv>.tp-tabv_c{border-bottom-left-radius:var(--bld-br)}.tp-rotv_b,.tp-fldv_b{background-color:var(--cnt-bg);color:var(--cnt-fg);cursor:pointer;display:block;height:calc(var(--cnt-usz) + 4px);line-height:calc(var(--cnt-usz) + 4px);overflow:hidden;padding-left:var(--cnt-hp);padding-right:calc(4px + var(--cnt-usz) + var(--cnt-hp));position:relative;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%;transition:border-radius .2s ease-in-out .2s}.tp-rotv_b:hover,.tp-fldv_b:hover{background-color:var(--cnt-bg-h)}.tp-rotv_b:focus,.tp-fldv_b:focus{background-color:var(--cnt-bg-f)}.tp-rotv_b:active,.tp-fldv_b:active{background-color:var(--cnt-bg-a)}.tp-rotv_b:disabled,.tp-fldv_b:disabled{opacity:.5}.tp-rotv_m,.tp-fldv_m{background:linear-gradient(to left, var(--cnt-fg), var(--cnt-fg) 2px, transparent 2px, transparent 4px, var(--cnt-fg) 4px);border-radius:2px;bottom:0;content:"";display:block;height:6px;right:calc(var(--cnt-hp) + (var(--cnt-usz) + 4px - 6px)/2 - 2px);margin:auto;opacity:.5;position:absolute;top:0;transform:rotate(90deg);transition:transform .2s ease-in-out;width:6px}.tp-rotv.tp-rotv-expanded .tp-rotv_m,.tp-fldv.tp-fldv-expanded>.tp-fldv_b>.tp-fldv_m{transform:none}.tp-rotv_c,.tp-fldv_c{box-sizing:border-box;height:0;opacity:0;overflow:hidden;padding-bottom:0;padding-top:0;position:relative;transition:height .2s ease-in-out,opacity .2s linear,padding .2s ease-in-out}.tp-rotv.tp-rotv-cpl:not(.tp-rotv-expanded) .tp-rotv_c,.tp-fldv.tp-fldv-cpl:not(.tp-fldv-expanded)>.tp-fldv_c{display:none}.tp-rotv.tp-rotv-expanded .tp-rotv_c,.tp-fldv.tp-fldv-expanded>.tp-fldv_c{opacity:1;padding-bottom:var(--cnt-vp);padding-top:var(--cnt-vp);transform:none;overflow:visible;transition:height .2s ease-in-out,opacity .2s linear .2s,padding .2s ease-in-out}.tp-txtv_i,.tp-p2dpv_p,.tp-colswv_sw{background-color:var(--in-bg);border-radius:var(--bld-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--cnt-usz);line-height:var(--cnt-usz);min-width:0;width:100%}.tp-txtv_i:hover,.tp-p2dpv_p:hover,.tp-colswv_sw:hover{background-color:var(--in-bg-h)}.tp-txtv_i:focus,.tp-p2dpv_p:focus,.tp-colswv_sw:focus{background-color:var(--in-bg-f)}.tp-txtv_i:active,.tp-p2dpv_p:active,.tp-colswv_sw:active{background-color:var(--in-bg-a)}.tp-txtv_i:disabled,.tp-p2dpv_p:disabled,.tp-colswv_sw:disabled{opacity:.5}.tp-lstv,.tp-coltxtv_m{position:relative}.tp-lstv_s{padding:0 20px 0 4px;width:100%}.tp-lstv_m,.tp-coltxtv_mm{bottom:0;margin:auto;pointer-events:none;position:absolute;right:2px;top:0}.tp-lstv_m svg,.tp-coltxtv_mm svg{bottom:0;height:16px;margin:auto;position:absolute;right:0;top:0;width:16px}.tp-lstv_m svg path,.tp-coltxtv_mm svg path{fill:currentColor}.tp-sglv_i,.tp-mllv_i,.tp-grlv_g{background-color:var(--mo-bg);border-radius:var(--bld-br);box-sizing:border-box;color:var(--mo-fg);height:var(--cnt-usz);scrollbar-color:currentColor rgba(0,0,0,0);scrollbar-width:thin;width:100%}.tp-sglv_i::-webkit-scrollbar,.tp-mllv_i::-webkit-scrollbar,.tp-grlv_g::-webkit-scrollbar{height:8px;width:8px}.tp-sglv_i::-webkit-scrollbar-corner,.tp-mllv_i::-webkit-scrollbar-corner,.tp-grlv_g::-webkit-scrollbar-corner{background-color:rgba(0,0,0,0)}.tp-sglv_i::-webkit-scrollbar-thumb,.tp-mllv_i::-webkit-scrollbar-thumb,.tp-grlv_g::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:currentColor;border:rgba(0,0,0,0) solid 2px;border-radius:4px}.tp-pndtxtv,.tp-coltxtv_w{display:flex}.tp-pndtxtv_a,.tp-coltxtv_c{width:100%}.tp-pndtxtv_a+.tp-pndtxtv_a,.tp-coltxtv_c+.tp-pndtxtv_a,.tp-pndtxtv_a+.tp-coltxtv_c,.tp-coltxtv_c+.tp-coltxtv_c{margin-left:2px}.tp-rotv{--bs-bg: var(--tp-base-background-color, hsl(230, 7%, 17%));--bs-br: var(--tp-base-border-radius, 6px);--bs-ff: var(--tp-base-font-family, Roboto Mono, Source Code Pro, Menlo, Courier, monospace);--bs-sh: var(--tp-base-shadow-color, rgba(0, 0, 0, 0.2));--bld-br: var(--tp-blade-border-radius, 2px);--bld-hp: var(--tp-blade-horizontal-padding, 4px);--bld-vw: var(--tp-blade-value-width, 160px);--btn-bg: var(--tp-button-background-color, hsl(230, 7%, 70%));--btn-bg-a: var(--tp-button-background-color-active, #d6d7db);--btn-bg-f: var(--tp-button-background-color-focus, #c8cad0);--btn-bg-h: var(--tp-button-background-color-hover, #bbbcc4);--btn-fg: var(--tp-button-foreground-color, hsl(230, 7%, 17%));--cnt-bg: var(--tp-container-background-color, rgba(187, 188, 196, 0.1));--cnt-bg-a: var(--tp-container-background-color-active, rgba(187, 188, 196, 0.25));--cnt-bg-f: var(--tp-container-background-color-focus, rgba(187, 188, 196, 0.2));--cnt-bg-h: var(--tp-container-background-color-hover, rgba(187, 188, 196, 0.15));--cnt-fg: var(--tp-container-foreground-color, hsl(230, 7%, 75%));--cnt-hp: var(--tp-container-horizontal-padding, 4px);--cnt-vp: var(--tp-container-vertical-padding, 4px);--cnt-usp: var(--tp-container-unit-spacing, 4px);--cnt-usz: var(--tp-container-unit-size, 20px);--in-bg: var(--tp-input-background-color, rgba(187, 188, 196, 0.1));--in-bg-a: var(--tp-input-background-color-active, rgba(187, 188, 196, 0.25));--in-bg-f: var(--tp-input-background-color-focus, rgba(187, 188, 196, 0.2));--in-bg-h: var(--tp-input-background-color-hover, rgba(187, 188, 196, 0.15));--in-fg: var(--tp-input-foreground-color, hsl(230, 7%, 75%));--lbl-fg: var(--tp-label-foreground-color, rgba(187, 188, 196, 0.7));--mo-bg: var(--tp-monitor-background-color, rgba(0, 0, 0, 0.2));--mo-fg: var(--tp-monitor-foreground-color, rgba(187, 188, 196, 0.7));--grv-fg: var(--tp-groove-foreground-color, rgba(187, 188, 196, 0.1))}.tp-btnv_b{width:100%}.tp-btnv_t{text-align:center}.tp-ckbv_l{display:block;position:relative}.tp-ckbv_i{left:0;opacity:0;position:absolute;top:0}.tp-ckbv_w{background-color:var(--in-bg);border-radius:var(--bld-br);cursor:pointer;display:block;height:var(--cnt-usz);position:relative;width:var(--cnt-usz)}.tp-ckbv_w svg{display:block;height:16px;inset:0;margin:auto;opacity:0;position:absolute;width:16px}.tp-ckbv_w svg path{fill:none;stroke:var(--in-fg);stroke-width:2}.tp-ckbv_i:hover+.tp-ckbv_w{background-color:var(--in-bg-h)}.tp-ckbv_i:focus+.tp-ckbv_w{background-color:var(--in-bg-f)}.tp-ckbv_i:active+.tp-ckbv_w{background-color:var(--in-bg-a)}.tp-ckbv_i:checked+.tp-ckbv_w svg{opacity:1}.tp-ckbv.tp-v-disabled .tp-ckbv_w{opacity:.5}.tp-colv{position:relative}.tp-colv_h{display:flex}.tp-colv_s{flex-grow:0;flex-shrink:0;width:var(--cnt-usz)}.tp-colv_t{flex:1;margin-left:4px}.tp-colv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-colv.tp-colv-expanded.tp-colv-cpl .tp-colv_p{overflow:visible}.tp-colv.tp-colv-expanded .tp-colv_p{margin-top:var(--cnt-usp);opacity:1}.tp-colv .tp-popv{left:calc(-1*var(--cnt-hp));right:calc(-1*var(--cnt-hp));top:var(--cnt-usz)}.tp-colpv_h,.tp-colpv_ap{margin-left:6px;margin-right:6px}.tp-colpv_h{margin-top:var(--cnt-usp)}.tp-colpv_rgb{display:flex;margin-top:var(--cnt-usp);width:100%}.tp-colpv_a{display:flex;margin-top:var(--cnt-vp);padding-top:calc(var(--cnt-vp) + 2px);position:relative}.tp-colpv_a::before{background-color:var(--grv-fg);content:"";height:2px;left:calc(-1*var(--cnt-hp));position:absolute;right:calc(-1*var(--cnt-hp));top:0}.tp-colpv.tp-v-disabled .tp-colpv_a::before{opacity:.5}.tp-colpv_ap{align-items:center;display:flex;flex:3}.tp-colpv_at{flex:1;margin-left:4px}.tp-svpv{border-radius:var(--bld-br);outline:none;overflow:hidden;position:relative}.tp-svpv.tp-v-disabled{opacity:.5}.tp-svpv_c{cursor:crosshair;display:block;height:calc(var(--cnt-usz)*4);width:100%}.tp-svpv_m{border-radius:100%;border:rgba(255,255,255,.75) solid 2px;box-sizing:border-box;filter:drop-shadow(0 0 1px rgba(0, 0, 0, 0.3));height:12px;margin-left:-6px;margin-top:-6px;pointer-events:none;position:absolute;width:12px}.tp-svpv:focus .tp-svpv_m{border-color:#fff}.tp-hplv{cursor:pointer;height:var(--cnt-usz);outline:none;position:relative}.tp-hplv.tp-v-disabled{opacity:.5}.tp-hplv_c{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAABCAYAAABubagXAAAAQ0lEQVQoU2P8z8Dwn0GCgQEDi2OK/RBgYHjBgIpfovFh8j8YBIgzFGQxuqEgPhaDOT5gOhPkdCxOZeBg+IDFZZiGAgCaSSMYtcRHLgAAAABJRU5ErkJggg==);background-position:left top;background-repeat:no-repeat;background-size:100% 100%;border-radius:2px;display:block;height:4px;left:0;margin-top:-2px;position:absolute;top:50%;width:100%}.tp-hplv_m{border-radius:var(--bld-br);border:rgba(255,255,255,.75) solid 2px;box-shadow:0 0 2px rgba(0,0,0,.1);box-sizing:border-box;height:12px;left:50%;margin-left:-6px;margin-top:-6px;position:absolute;top:50%;width:12px}.tp-hplv:focus .tp-hplv_m{border-color:#fff}.tp-aplv{cursor:pointer;height:var(--cnt-usz);outline:none;position:relative;width:100%}.tp-aplv.tp-v-disabled{opacity:.5}.tp-aplv_b{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:4px 4px;background-position:0 0,2px 2px;border-radius:2px;display:block;height:4px;left:0;margin-top:-2px;overflow:hidden;position:absolute;top:50%;width:100%}.tp-aplv_c{inset:0;position:absolute}.tp-aplv_m{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:12px 12px;background-position:0 0,6px 6px;border-radius:var(--bld-br);box-shadow:0 0 2px rgba(0,0,0,.1);height:12px;left:50%;margin-left:-6px;margin-top:-6px;overflow:hidden;position:absolute;top:50%;width:12px}.tp-aplv_p{border-radius:var(--bld-br);border:rgba(255,255,255,.75) solid 2px;box-sizing:border-box;inset:0;position:absolute}.tp-aplv:focus .tp-aplv_p{border-color:#fff}.tp-colswv{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:10px 10px;background-position:0 0,5px 5px;border-radius:var(--bld-br);overflow:hidden}.tp-colswv.tp-v-disabled{opacity:.5}.tp-colswv_sw{border-radius:0}.tp-colswv_b{cursor:pointer;display:block;height:var(--cnt-usz);left:0;position:absolute;top:0;width:var(--cnt-usz)}.tp-colswv_b:focus::after{border:rgba(255,255,255,.75) solid 2px;border-radius:var(--bld-br);content:"";display:block;inset:0;position:absolute}.tp-coltxtv{display:flex;width:100%}.tp-coltxtv_m{margin-right:4px}.tp-coltxtv_ms{border-radius:var(--bld-br);color:var(--lbl-fg);cursor:pointer;height:var(--cnt-usz);line-height:var(--cnt-usz);padding:0 18px 0 4px}.tp-coltxtv_ms:hover{background-color:var(--in-bg-h)}.tp-coltxtv_ms:focus{background-color:var(--in-bg-f)}.tp-coltxtv_ms:active{background-color:var(--in-bg-a)}.tp-coltxtv_mm{color:var(--lbl-fg)}.tp-coltxtv.tp-v-disabled .tp-coltxtv_mm{opacity:.5}.tp-coltxtv_w{flex:1}.tp-dfwv{position:absolute;top:8px;right:8px;width:256px}.tp-fldv{position:relative}.tp-fldv_t{padding-left:4px}.tp-fldv_b:disabled .tp-fldv_m{display:none}.tp-fldv_c{padding-left:4px}.tp-fldv_i{bottom:0;color:var(--cnt-bg);left:0;overflow:hidden;position:absolute;top:calc(var(--cnt-usz) + 4px);width:max(var(--bs-br),4px)}.tp-fldv_i::before{background-color:currentColor;bottom:0;content:"";left:0;position:absolute;top:0;width:4px}.tp-fldv_b:hover+.tp-fldv_i{color:var(--cnt-bg-h)}.tp-fldv_b:focus+.tp-fldv_i{color:var(--cnt-bg-f)}.tp-fldv_b:active+.tp-fldv_i{color:var(--cnt-bg-a)}.tp-fldv.tp-v-disabled>.tp-fldv_i{opacity:.5}.tp-grlv{position:relative}.tp-grlv_g{display:block;height:calc(var(--cnt-usz)*3)}.tp-grlv_g polyline{fill:none;stroke:var(--mo-fg);stroke-linejoin:round}.tp-grlv_t{margin-top:-4px;transition:left .05s,top .05s;visibility:hidden}.tp-grlv_t.tp-grlv_t-a{visibility:visible}.tp-grlv_t.tp-grlv_t-in{transition:none}.tp-grlv.tp-v-disabled .tp-grlv_g{opacity:.5}.tp-grlv .tp-ttv{background-color:var(--mo-fg)}.tp-grlv .tp-ttv::before{border-top-color:var(--mo-fg)}.tp-lblv{align-items:center;display:flex;line-height:1.3;padding-left:var(--cnt-hp);padding-right:var(--cnt-hp)}.tp-lblv.tp-lblv-nol{display:block}.tp-lblv_l{color:var(--lbl-fg);flex:1;-webkit-hyphens:auto;hyphens:auto;overflow:hidden;padding-left:4px;padding-right:16px}.tp-lblv.tp-v-disabled .tp-lblv_l{opacity:.5}.tp-lblv.tp-lblv-nol .tp-lblv_l{display:none}.tp-lblv_v{align-self:flex-start;flex-grow:0;flex-shrink:0;width:var(--bld-vw)}.tp-lblv.tp-lblv-nol .tp-lblv_v{width:100%}.tp-lstv_s{padding:0 20px 0 var(--bld-hp);width:100%}.tp-lstv_m{color:var(--btn-fg)}.tp-sglv_i{padding-left:var(--bld-hp);padding-right:var(--bld-hp)}.tp-sglv.tp-v-disabled .tp-sglv_i{opacity:.5}.tp-mllv_i{display:block;height:calc(var(--cnt-usz)*3);line-height:var(--cnt-usz);padding-left:var(--bld-hp);padding-right:var(--bld-hp);resize:none;white-space:pre}.tp-mllv.tp-v-disabled .tp-mllv_i{opacity:.5}.tp-p2dv{position:relative}.tp-p2dv_h{display:flex}.tp-p2dv_b{height:var(--cnt-usz);margin-right:4px;position:relative;width:var(--cnt-usz)}.tp-p2dv_b svg{display:block;height:16px;left:50%;margin-left:-8px;margin-top:-8px;position:absolute;top:50%;width:16px}.tp-p2dv_b svg path{stroke:currentColor;stroke-width:2}.tp-p2dv_b svg circle{fill:currentColor}.tp-p2dv_t{flex:1}.tp-p2dv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-p2dv.tp-p2dv-expanded .tp-p2dv_p{margin-top:var(--cnt-usp);opacity:1}.tp-p2dv .tp-popv{left:calc(-1*var(--cnt-hp));right:calc(-1*var(--cnt-hp));top:var(--cnt-usz)}.tp-p2dpv{padding-left:calc(var(--cnt-usz) + 4px)}.tp-p2dpv_p{cursor:crosshair;height:0;overflow:hidden;padding-bottom:100%;position:relative}.tp-p2dpv.tp-v-disabled .tp-p2dpv_p{opacity:.5}.tp-p2dpv_g{display:block;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}.tp-p2dpv_ax{opacity:.1;stroke:var(--in-fg);stroke-dasharray:1}.tp-p2dpv_l{opacity:.5;stroke:var(--in-fg);stroke-dasharray:1}.tp-p2dpv_m{border:var(--in-fg) solid 1px;border-radius:50%;box-sizing:border-box;height:4px;margin-left:-2px;margin-top:-2px;position:absolute;width:4px}.tp-p2dpv_p:focus .tp-p2dpv_m{background-color:var(--in-fg);border-width:0}.tp-popv{background-color:var(--bs-bg);border-radius:var(--bs-br);box-shadow:0 2px 4px var(--bs-sh);display:none;max-width:var(--bld-vw);padding:var(--cnt-vp) var(--cnt-hp);position:absolute;visibility:hidden;z-index:1000}.tp-popv.tp-popv-v{display:block;visibility:visible}.tp-sldv.tp-v-disabled{opacity:.5}.tp-sldv_t{box-sizing:border-box;cursor:pointer;height:var(--cnt-usz);margin:0 6px;outline:none;position:relative}.tp-sldv_t::before{background-color:var(--in-bg);border-radius:1px;content:"";display:block;height:2px;inset:0;margin:auto;position:absolute}.tp-sldv_k{height:100%;left:0;position:absolute;top:0}.tp-sldv_k::before{background-color:var(--in-fg);border-radius:1px;content:"";display:block;height:2px;inset:0;margin-bottom:auto;margin-top:auto;position:absolute}.tp-sldv_k::after{background-color:var(--btn-bg);border-radius:var(--bld-br);bottom:0;content:"";display:block;height:12px;margin-bottom:auto;margin-top:auto;position:absolute;right:-6px;top:0;width:12px}.tp-sldv_t:hover .tp-sldv_k::after{background-color:var(--btn-bg-h)}.tp-sldv_t:focus .tp-sldv_k::after{background-color:var(--btn-bg-f)}.tp-sldv_t:active .tp-sldv_k::after{background-color:var(--btn-bg-a)}.tp-sldtxtv{display:flex}.tp-sldtxtv_s{flex:2}.tp-sldtxtv_t{flex:1;margin-left:4px}.tp-tabv{position:relative}.tp-tabv_t{align-items:flex-end;color:var(--cnt-bg);display:flex;overflow:hidden;position:relative}.tp-tabv_t:hover{color:var(--cnt-bg-h)}.tp-tabv_t:has(*:focus){color:var(--cnt-bg-f)}.tp-tabv_t:has(*:active){color:var(--cnt-bg-a)}.tp-tabv_t::before{background-color:currentColor;bottom:0;content:"";height:2px;left:0;pointer-events:none;position:absolute;right:0}.tp-tabv.tp-v-disabled .tp-tabv_t::before{opacity:.5}.tp-tabv.tp-tabv-nop .tp-tabv_t{height:calc(var(--cnt-usz) + 4px);position:relative}.tp-tabv.tp-tabv-nop .tp-tabv_t::before{background-color:var(--cnt-bg);bottom:0;content:"";height:2px;left:0;position:absolute;right:0}.tp-tabv_i{bottom:0;color:var(--cnt-bg);left:0;overflow:hidden;position:absolute;top:calc(var(--cnt-usz) + 4px);width:max(var(--bs-br),4px)}.tp-tabv_i::before{background-color:currentColor;bottom:0;content:"";left:0;position:absolute;top:0;width:4px}.tp-tabv_t:hover+.tp-tabv_i{color:var(--cnt-bg-h)}.tp-tabv_t:has(*:focus)+.tp-tabv_i{color:var(--cnt-bg-f)}.tp-tabv_t:has(*:active)+.tp-tabv_i{color:var(--cnt-bg-a)}.tp-tabv.tp-v-disabled>.tp-tabv_i{opacity:.5}.tp-tbiv{flex:1;min-width:0;position:relative}.tp-tbiv+.tp-tbiv{margin-left:2px}.tp-tbiv+.tp-tbiv.tp-v-disabled::before{opacity:.5}.tp-tbiv_b{display:block;padding-left:calc(var(--cnt-hp) + 4px);padding-right:calc(var(--cnt-hp) + 4px);position:relative;width:100%}.tp-tbiv_b:disabled{opacity:.5}.tp-tbiv_b::before{background-color:var(--cnt-bg);content:"";inset:0 0 2px;pointer-events:none;position:absolute}.tp-tbiv_b:hover::before{background-color:var(--cnt-bg-h)}.tp-tbiv_b:focus::before{background-color:var(--cnt-bg-f)}.tp-tbiv_b:active::before{background-color:var(--cnt-bg-a)}.tp-tbiv_t{color:var(--cnt-fg);height:calc(var(--cnt-usz) + 4px);line-height:calc(var(--cnt-usz) + 4px);opacity:.5;overflow:hidden;position:relative;text-overflow:ellipsis}.tp-tbiv.tp-tbiv-sel .tp-tbiv_t{opacity:1}.tp-tbpv_c{padding-bottom:var(--cnt-vp);padding-left:4px;padding-top:var(--cnt-vp)}.tp-txtv{position:relative}.tp-txtv_i{padding-left:var(--bld-hp);padding-right:var(--bld-hp)}.tp-txtv.tp-txtv-fst .tp-txtv_i{border-bottom-right-radius:0;border-top-right-radius:0}.tp-txtv.tp-txtv-mid .tp-txtv_i{border-radius:0}.tp-txtv.tp-txtv-lst .tp-txtv_i{border-bottom-left-radius:0;border-top-left-radius:0}.tp-txtv.tp-txtv-num .tp-txtv_i{text-align:right}.tp-txtv.tp-txtv-drg .tp-txtv_i{opacity:.3}.tp-txtv_k{cursor:pointer;height:100%;left:calc(var(--bld-hp) - 5px);position:absolute;top:0;width:12px}.tp-txtv_k::before{background-color:var(--in-fg);border-radius:1px;bottom:0;content:"";height:calc(var(--cnt-usz) - 4px);left:50%;margin-bottom:auto;margin-left:-1px;margin-top:auto;opacity:.1;position:absolute;top:0;transition:border-radius .1s,height .1s,transform .1s,width .1s;width:2px}.tp-txtv_k:hover::before,.tp-txtv.tp-txtv-drg .tp-txtv_k::before{opacity:1}.tp-txtv.tp-txtv-drg .tp-txtv_k::before{border-radius:50%;height:4px;transform:translateX(-1px);width:4px}.tp-txtv_g{bottom:0;display:block;height:8px;left:50%;margin:auto;overflow:visible;pointer-events:none;position:absolute;top:0;visibility:hidden;width:100%}.tp-txtv.tp-txtv-drg .tp-txtv_g{visibility:visible}.tp-txtv_gb{fill:none;stroke:var(--in-fg);stroke-dasharray:1}.tp-txtv_gh{fill:none;stroke:var(--in-fg)}.tp-txtv .tp-ttv{margin-left:6px;visibility:hidden}.tp-txtv.tp-txtv-drg .tp-ttv{visibility:visible}.tp-ttv{background-color:var(--in-fg);border-radius:var(--bld-br);color:var(--bs-bg);padding:2px 4px;pointer-events:none;position:absolute;transform:translate(-50%, -100%)}.tp-ttv::before{border-color:var(--in-fg) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);border-style:solid;border-width:2px;box-sizing:border-box;content:"";font-size:.9em;height:4px;left:50%;margin-left:-2px;position:absolute;top:100%;width:4px}.tp-rotv{background-color:var(--bs-bg);border-radius:var(--bs-br);box-shadow:0 2px 4px var(--bs-sh);font-family:var(--bs-ff);font-size:11px;font-weight:500;line-height:1;text-align:left}.tp-rotv_b{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br);border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br);padding-left:calc(4px + var(--cnt-usz) + var(--cnt-hp));text-align:center}.tp-rotv.tp-rotv-expanded .tp-rotv_b{border-bottom-left-radius:0;border-bottom-right-radius:0;transition-delay:0s;transition-duration:0s}.tp-rotv.tp-rotv-not>.tp-rotv_b{display:none}.tp-rotv_b:disabled .tp-rotv_m{display:none}.tp-rotv_c>.tp-fldv.tp-v-lst>.tp-fldv_c{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c>.tp-fldv.tp-v-lst>.tp-fldv_i{border-bottom-left-radius:var(--bs-br)}.tp-rotv_c>.tp-fldv.tp-v-lst:not(.tp-fldv-expanded)>.tp-fldv_b{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c>.tp-fldv.tp-v-lst.tp-fldv-expanded>.tp-fldv_b{transition-delay:0s;transition-duration:0s}.tp-rotv_c .tp-fldv.tp-v-vlst:not(.tp-fldv-expanded)>.tp-fldv_b{border-bottom-right-radius:var(--bs-br)}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-fldv.tp-v-fst{margin-top:calc(-1*var(--cnt-vp))}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-fldv.tp-v-fst>.tp-fldv_b{border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br)}.tp-rotv_c>.tp-tabv.tp-v-lst>.tp-tabv_c{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c>.tp-tabv.tp-v-lst>.tp-tabv_i{border-bottom-left-radius:var(--bs-br)}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst{margin-top:calc(-1*var(--cnt-vp))}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst>.tp-tabv_t{border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br)}.tp-rotv.tp-v-disabled,.tp-rotv .tp-v-disabled{pointer-events:none}.tp-rotv.tp-v-hidden,.tp-rotv .tp-v-hidden{display:none}.tp-sprv_r{background-color:var(--grv-fg);border-width:0;display:block;height:2px;margin:0;width:100%}.tp-sprv.tp-v-disabled .tp-sprv_r{opacity:.5}',plugins:[vr,fr,xr,Ae,Cr]})}},Pr=(new Qt("4.0.5"),t({ButtonCellApi:()=>tc,ButtonGridApi:()=>ic,ButtonGridController:()=>nc,CubicBezier:()=>pc,CubicBezierApi:()=>oc,CubicBezierAssembly:()=>hc,CubicBezierController:()=>kc,CubicBezierGraphController:()=>Pc,CubicBezierGraphView:()=>fc,CubicBezierPickerController:()=>Ec,CubicBezierPickerView:()=>gc,CubicBezierPreviewView:()=>Cc,CubicBezierView:()=>mc,FpsGraphBladeApi:()=>Lc,FpsGraphController:()=>Dc,FpsView:()=>jc,Fpswatch:()=>Mc,Interval:()=>Tc,IntervalAssembly:()=>zc,IntervalConstraint:()=>Rc,RadioCellApi:()=>Yc,RadioController:()=>Zc,RadioGridApi:()=>Wc,RadioGridController:()=>td,RadioView:()=>Jc,RangeSliderController:()=>Fc,RangeSliderTextController:()=>$c,RangeSliderTextView:()=>Kc,RangeSliderView:()=>Uc,TpRadioGridChangeEvent:()=>Xc,css:()=>ad,id:()=>od,plugins:()=>ld}));function Er(t){return null==t}function kr(t){return null!==t&&"object"==typeof t}function Vr(t){return null!==t&&"object"==typeof t}function Lr(t,e){if(t.length!==e.length)return!1;for(let i=0;i{const s=t[n],r=e[n];return Vr(s)&&Vr(r)?Object.assign(Object.assign({},i),{[n]:Mr(s,r)}):Object.assign(Object.assign({},i),{[n]:n in e?r:s})},{})}var Sr={alreadydisposed:()=>"View has been already disposed",invalidparams:t=>`Invalid parameters for '${t.name}'`,nomatchingcontroller:t=>`No matching controller for '${t.key}'`,nomatchingview:t=>`No matching view for '${JSON.stringify(t.params)}'`,notbindable:()=>"Value is not bindable",notcompatible:t=>`Not compatible with plugin '${t.id}'`,propertynotfound:t=>`Property '${t.name}' not found`,shouldneverhappen:()=>"This error should never happen"},jr=class t{static alreadyDisposed(){return new t({type:"alreadydisposed"})}static notBindable(){return new t({type:"notbindable"})}static notCompatible(e,i){return new t({type:"notcompatible",context:{id:`${e}.${i}`}})}static propertyNotFound(e){return new t({type:"propertynotfound",context:{name:e}})}static shouldNeverHappen(){return new t({type:"shouldneverhappen"})}constructor(t){var e;this.message=null!==(e=Sr[t.type](t.context))&&void 0!==e?e:"Unexpected error",this.name=this.constructor.name,this.stack=new Error(this.message).stack,this.type=t.type}toString(){return this.message}},Dr=class t{constructor(t,e){this.obj_=t,this.key=e}static isBindable(t){return null!==t&&("object"==typeof t||"function"==typeof t)}read(){return this.obj_[this.key]}write(t){this.obj_[this.key]=t}writeProperty(e,i){const n=this.read();if(!t.isBindable(n))throw jr.notBindable();if(!(e in n))throw jr.propertyNotFound(e);n[e]=i}},Ar=class{constructor(){this.observers_={}}on(t,e){let i=this.observers_[t];return i||(i=this.observers_[t]=[]),i.push({handler:e}),this}off(t,e){const i=this.observers_[t];return i&&(this.observers_[t]=i.filter(t=>t.handler!==e)),this}emit(t,e){const i=this.observers_[t];i&&i.forEach(t=>{t.handler(e)})}},Or=class{constructor(t,e){var i;this.constraint_=null==e?void 0:e.constraint,this.equals_=null!==(i=null==e?void 0:e.equals)&&void 0!==i?i:(t,e)=>t===e,this.emitter=new Ar,this.rawValue_=t}get constraint(){return this.constraint_}get rawValue(){return this.rawValue_}set rawValue(t){this.setRawValue(t,{forceEmit:!1,last:!0})}setRawValue(t,e){const i=null!=e?e:{forceEmit:!1,last:!0},n=this.constraint_?this.constraint_.constrain(t):t,s=this.rawValue_;this.equals_(s,n)&&!i.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=n,this.emitter.emit("change",{options:i,previousRawValue:s,rawValue:n,sender:this}))}},Br=class{constructor(t){this.emitter=new Ar,this.value_=t}get rawValue(){return this.value_}set rawValue(t){this.setRawValue(t,{forceEmit:!1,last:!0})}setRawValue(t,e){const i=null!=e?e:{forceEmit:!1,last:!0},n=this.value_;(n!==t||i.forceEmit)&&(this.emitter.emit("beforechange",{sender:this}),this.value_=t,this.emitter.emit("change",{options:i,previousRawValue:n,rawValue:this.value_,sender:this}))}},Tr=class{constructor(t){this.emitter=new Ar,this.onValueBeforeChange_=this.onValueBeforeChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.value_=t,this.value_.emitter.on("beforechange",this.onValueBeforeChange_),this.value_.emitter.on("change",this.onValueChange_)}get rawValue(){return this.value_.rawValue}onValueBeforeChange_(t){this.emitter.emit("beforechange",Object.assign(Object.assign({},t),{sender:this}))}onValueChange_(t){this.emitter.emit("change",Object.assign(Object.assign({},t),{sender:this}))}};function zr(t,e){const i=null==e?void 0:e.constraint,n=null==e?void 0:e.equals;return i||n?new Or(t,e):new Br(t)}var Rr=class t{constructor(t){this.emitter=new Ar,this.valMap_=t;for(const e in this.valMap_)this.valMap_[e].emitter.on("change",()=>{this.emitter.emit("change",{key:e,sender:this})})}static createCore(t){return Object.keys(t).reduce((e,i)=>Object.assign(e,{[i]:zr(t[i])}),{})}static fromObject(e){return new t(this.createCore(e))}get(t){return this.valMap_[t].rawValue}set(t,e){this.valMap_[t].rawValue=e}value(t){return this.valMap_[t]}},Nr=class{constructor(t){this.values=Rr.fromObject({max:t.max,min:t.min})}constrain(t){const e=this.values.get("max"),i=this.values.get("min");return Math.min(Math.max(t,i),e)}},Kr=class{constructor(t){this.values=Rr.fromObject({max:t.max,min:t.min})}constrain(t){const e=this.values.get("max"),i=this.values.get("min");let n=t;return Er(i)||(n=Math.max(n,i)),Er(e)||(n=Math.min(n,e)),n}},Ir=class{constructor(t,e=0){this.step=t,this.origin=e}constrain(t){const e=this.origin%this.step;return e+Math.round((t-e)/this.step)*this.step}},Ur=class{constructor(t){this.text=t}evaluate(){return Number(this.text)}toString(){return this.text}},Fr={"**":(t,e)=>Math.pow(t,e),"*":(t,e)=>t*e,"/":(t,e)=>t/e,"%":(t,e)=>t%e,"+":(t,e)=>t+e,"-":(t,e)=>t-e,"<<":(t,e)=>t<>":(t,e)=>t>>e,">>>":(t,e)=>t>>>e,"&":(t,e)=>t&e,"^":(t,e)=>t^e,"|":(t,e)=>t|e},$r=class{constructor(t,e,i){this.left=e,this.operator=t,this.right=i}evaluate(){const t=Fr[this.operator];if(!t)throw new Error(`unexpected binary operator: '${this.operator}`);return t(this.left.evaluate(),this.right.evaluate())}toString(){return["b(",this.left.toString(),this.operator,this.right.toString(),")"].join(" ")}},qr={"+":t=>t,"-":t=>-t,"~":t=>~t},Hr=class{constructor(t,e){this.operator=t,this.expression=e}evaluate(){const t=qr[this.operator];if(!t)throw new Error(`unexpected unary operator: '${this.operator}`);return t(this.expression.evaluate())}toString(){return["u(",this.operator,this.expression.toString(),")"].join(" ")}};function Gr(t){return(e,i)=>{for(let n=0;ne.startsWith(t,i))[0];return n?(i+=n.length,{cursor:i+=Yr(e,i).length,operator:n}):null}var eo=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((t,e)=>function(t,e){return(i,n)=>{const s=t(i,n);if(!s)return null;n=s.cursor;let r=s.evaluable;for(;;){const s=to(e,i,n);if(!s)break;n=s.cursor;const o=t(i,n);if(!o)return null;n=o.cursor,r=new $r(s.operator,r,o.evaluable)}return r?{cursor:n,evaluable:r}:null}}(t,e),function t(e,i){const n=function(t,e){var i;return null!==(i=function(t,e){const i=Zr(t,e);return e+=i.length,""===i?null:{evaluable:new Ur(i),cursor:e}}(t,e))&&void 0!==i?i:function(t,e){const i=t.substr(e,1);if(e+=i.length,"("!==i)return null;const n=io(t,e);if(!n)return null;e=n.cursor,e+=Yr(t,e).length;const s=t.substr(e,1);return e+=s.length,")"!==s?null:{evaluable:n.evaluable,cursor:e}}(t,e)}(e,i);if(n)return n;const s=e.substr(i,1);if(i+=s.length,"+"!==s&&"-"!==s&&"~"!==s)return null;const r=t(e,i);return r?{cursor:i=r.cursor,evaluable:new Hr(s,r.evaluable)}:null});function io(t,e){return e+=Yr(t,e).length,eo(t,e)}function no(t){var e;const i=function(t){const e=io(t,0);return e?e.cursor+Yr(t,e.cursor).length!==t.length?null:e.evaluable:null}(t);return null!==(e=null==i?void 0:i.evaluate())&&void 0!==e?e:null}function so(t){if("number"==typeof t)return t;if("string"==typeof t){const e=no(t);if(!Er(e))return e}return 0}function ro(t){return e=>e.toFixed(Math.max(Math.min(t,20),0))}function oo(t,e,i,n,s){return n+(t-e)/(i-e)*(s-n)}function ao(t){return String(t.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function lo(t,e,i){return Math.min(Math.max(t,e),i)}function po(t,e){return(t%e+e)%e}function ho(t,e){return Er(t.step)?Math.max(ao(e),2):ao(t.step)}function co(t){var e;return null!==(e=t.step)&&void 0!==e?e:1}function uo(t,e){var i;const n=Math.abs(null!==(i=t.step)&&void 0!==i?i:e);return 0===n?.1:Math.pow(10,Math.floor(Math.log10(n))-1)}function vo(t,e){return Er(t.step)?null:new Ir(t.step,e)}function mo(t){return Er(t.max)||Er(t.min)?Er(t.max)&&Er(t.min)?null:new Kr({max:t.max,min:t.min}):new Nr({max:t.max,min:t.min})}function bo(t,e){var i,n,s;return{formatter:null!==(i=t.format)&&void 0!==i?i:ro(ho(t,e)),keyScale:null!==(n=t.keyScale)&&void 0!==n?n:co(t),pointerScale:null!==(s=t.pointerScale)&&void 0!==s?s:uo(t,e)}}function go(t){return{format:t.optional.function,keyScale:t.optional.number,max:t.optional.number,min:t.optional.number,pointerScale:t.optional.number,step:t.optional.number}}function wo(t){return{constraint:t.constraint,textProps:Rr.fromObject(bo(t.params,t.initialValue))}}var _o=class{constructor(t){this.controller=t}get element(){return this.controller.view.element}get disabled(){return this.controller.viewProps.get("disabled")}set disabled(t){this.controller.viewProps.set("disabled",t)}get hidden(){return this.controller.viewProps.get("hidden")}set hidden(t){this.controller.viewProps.set("hidden",t)}dispose(){this.controller.viewProps.set("disposed",!0)}importState(t){return this.controller.importState(t)}exportState(){return this.controller.exportState()}},fo=class{constructor(t){this.target=t}},xo=class extends fo{constructor(t,e,i){super(t),this.value=e,this.last=null==i||i}},Co=class extends fo{constructor(t,e){super(t),this.expanded=e}},yo=class extends fo{constructor(t,e){super(t),this.index=e}},Po=class extends _o{constructor(t){super(t),this.onValueChange_=this.onValueChange_.bind(this),this.emitter_=new Ar,this.controller.value.emitter.on("change",this.onValueChange_)}get label(){return this.controller.labelController.props.get("label")}set label(t){this.controller.labelController.props.set("label",t)}get key(){return this.controller.value.binding.target.key}get tag(){return this.controller.tag}set tag(t){this.controller.tag=t}on(t,e){const i=e.bind(this);return this.emitter_.on(t,t=>{i(t)}),this}refresh(){this.controller.value.fetch()}onValueChange_(t){const e=this.controller.value;this.emitter_.emit("change",new xo(this,e.binding.target.read(),t.options.last))}};function Eo(t){return e=>i=>{if(!e&&void 0===i)return{succeeded:!1,value:void 0};if(e&&void 0===i)return{succeeded:!0,value:void 0};const n=t(i);return void 0!==n?{succeeded:!0,value:n}:{succeeded:!1,value:void 0}}}function ko(t){return{custom:e=>Eo(e)(t),boolean:Eo(t=>"boolean"==typeof t?t:void 0)(t),number:Eo(t=>"number"==typeof t?t:void 0)(t),string:Eo(t=>"string"==typeof t?t:void 0)(t),function:Eo(t=>"function"==typeof t?t:void 0)(t),constant:e=>Eo(t=>t===e?e:void 0)(t),raw:Eo(t=>t)(t),object:e=>Eo(t=>{var i;if(null!==(i=t)&&"object"==typeof i)return function(t,e){return Object.keys(e).reduce((i,n)=>{if(void 0===i)return;const s=(0,e[n])(t[n]);return s.succeeded?Object.assign(Object.assign({},i),{[n]:s.value}):void 0},{})}(t,e)})(t),array:e=>Eo(t=>{var i;if(Array.isArray(t))return i=e,t.reduce((t,e)=>{if(void 0===t)return;const n=i(e);return n.succeeded&&void 0!==n.value?[...t,n.value]:void 0},[])})(t)}}var Vo={optional:ko(!0),required:ko(!1)};function Lo(t,e){const i=e(Vo),n=Vo.required.object(i)(t);return n.succeeded?n.value:void 0}function Mo(t,e,i,n){if(e&&!e(t))return!1;const s=Lo(t,i);return!!s&&n(s)}function So(t,e){var i;return Mr(null!==(i=null==t?void 0:t())&&void 0!==i?i:{},e)}function jo(t){return"value"in t}var Do="http://www.w3.org/2000/svg";function Ao(t){t.offsetHeight}function Oo(t){return void 0!==t.ontouchstart}var Bo={check:'',dropdown:'',p2dpad:''};function To(t,e){const i=t.createElementNS(Do,"svg");return i.innerHTML=Bo[e],i}function zo(t,e,i){t.insertBefore(e,t.children[i])}function Ro(t){t.parentElement&&t.parentElement.removeChild(t)}function No(t){for(;t.children.length>0;)t.removeChild(t.children[0])}function Ko(t){return t.relatedTarget?t.relatedTarget:"explicitOriginalTarget"in t?t.explicitOriginalTarget:null}function Io(t,e){t.emitter.on("change",t=>{e(t.rawValue)}),e(t.rawValue)}function Uo(t,e,i){Io(t.value(e),i)}var Fo="tp";function $o(t){return(e,i)=>[Fo,"-",t,"v",e?`_${e}`:"",i?`-${i}`:""].join("")}var qo=$o("lbl"),Ho=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(qo()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(qo("l")),Uo(e.props,"label",e=>{Er(e)?this.element.classList.add(qo(void 0,"nol")):(this.element.classList.remove(qo(void 0,"nol")),function(t){for(;t.childNodes.length>0;)t.removeChild(t.childNodes[0])}(i),i.appendChild(function(t,e){const i=t.createDocumentFragment();return e.split("\n").map(e=>t.createTextNode(e)).forEach((e,n)=>{n>0&&i.appendChild(t.createElement("br")),i.appendChild(e)}),i}(t,e)))}),this.element.appendChild(i),this.labelElement=i;const n=t.createElement("div");n.classList.add(qo("v")),this.element.appendChild(n),this.valueElement=n}},Go=class{constructor(t,e){this.props=e.props,this.valueController=e.valueController,this.viewProps=e.valueController.viewProps,this.view=new Ho(t,{props:e.props,viewProps:this.viewProps}),this.view.valueElement.appendChild(this.valueController.view.element)}importProps(t){return Mo(t,null,t=>({label:t.optional.string}),t=>(this.props.set("label",t.label),!0))}exportProps(){return So(null,{label:this.props.get("label")})}},Yo=$o(""),Xo={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"},Wo=class{constructor(t){this.parent_=null,this.blade=t.blade,this.view=t.view,this.viewProps=t.viewProps;const e=this.view.element;this.blade.value("positions").emitter.on("change",()=>{["veryfirst","first","last","verylast"].forEach(t=>{e.classList.remove(Yo(void 0,Xo[t]))}),this.blade.get("positions").forEach(t=>{e.classList.add(Yo(void 0,Xo[t]))})}),this.viewProps.handleDispose(()=>{Ro(e)})}get parent(){return this.parent_}set parent(t){this.parent_=t,this.viewProps.set("parent",this.parent_?this.parent_.viewProps:null)}importState(t){return Mo(t,null,t=>({disabled:t.required.boolean,hidden:t.required.boolean}),t=>(this.viewProps.importState(t),!0))}exportState(){return So(null,Object.assign({},this.viewProps.exportState()))}},Qo=class extends Wo{constructor(t,e){if(e.value!==e.valueController.value)throw jr.shouldNeverHappen();const i=e.valueController.viewProps,n=new Go(t,{blade:e.blade,props:e.props,valueController:e.valueController});super(Object.assign(Object.assign({},e),{view:new Ho(t,{props:e.props,viewProps:i}),viewProps:i})),this.labelController=n,this.value=e.value,this.valueController=e.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}importState(t){return Mo(t,e=>{var i,n,s;return super.importState(e)&&this.labelController.importProps(e)&&(null===(s=null===(n=(i=this.valueController).importProps)||void 0===n?void 0:n.call(i,t))||void 0===s||s)},t=>({value:t.optional.raw}),t=>(t.value&&(this.value.rawValue=t.value),!0))}exportState(){var t,e,i;return So(()=>super.exportState(),Object.assign(Object.assign({value:this.value.rawValue},this.labelController.exportProps()),null!==(i=null===(e=(t=this.valueController).exportProps)||void 0===e?void 0:e.call(t))&&void 0!==i?i:{}))}};function Jo(t,e){for(;t.length{i(new fo(this))}),this}};function ia(t,e){return i=>{!function(t,e,i){i?t.classList.add(e):t.classList.remove(e)}(t,e,i)}}function na(t,e){Io(t,t=>{e.textContent=null!=t?t:""})}var sa=$o("btn"),ra=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(sa()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("button");i.classList.add(sa("b")),e.viewProps.bindDisabled(i),this.element.appendChild(i),this.buttonElement=i;const n=t.createElement("div");n.classList.add(sa("t")),na(e.props.value("title"),n),this.buttonElement.appendChild(n)}},oa=class{constructor(t,e){this.emitter=new Ar,this.onClick_=this.onClick_.bind(this),this.props=e.props,this.viewProps=e.viewProps,this.view=new ra(t,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}importProps(t){return Mo(t,null,t=>({title:t.optional.string}),t=>(this.props.set("title",t.title),!0))}exportProps(){return So(null,{title:this.props.get("title")})}onClick_(){this.emitter.emit("click",{sender:this})}},aa=class extends Wo{constructor(t,e){const i=new oa(t,{props:e.buttonProps,viewProps:e.viewProps}),n=new Go(t,{blade:e.blade,props:e.labelProps,valueController:i});super({blade:e.blade,view:n.view,viewProps:e.viewProps}),this.buttonController=i,this.labelController=n}importState(t){return Mo(t,t=>super.importState(t)&&this.buttonController.importProps(t)&&this.labelController.importProps(t),()=>({}),()=>!0)}exportState(){return So(()=>super.exportState(),Object.assign(Object.assign({},this.buttonController.exportProps()),this.labelController.exportProps()))}},la=new class{constructor(t){const[e,i]=t.split("-"),n=e.split(".");this.major=parseInt(n[0],10),this.minor=parseInt(n[1],10),this.patch=parseInt(n[2],10),this.prerelease=null!=i?i:null}toString(){const t=[this.major,this.minor,this.patch].join(".");return null!==this.prerelease?[t,this.prerelease].join("-"):t}}("2.0.0-beta.2");function pa(t){return Object.assign({core:la},t)}pa({id:"button",type:"blade",accept(t){const e=Lo(t,t=>({title:t.required.string,view:t.required.constant("button"),label:t.optional.string}));return e?{params:e}:null},controller:t=>new aa(t.document,{blade:t.blade,buttonProps:Rr.fromObject({title:t.params.title}),labelProps:Rr.fromObject({label:t.params.label}),viewProps:t.viewProps}),api:t=>t.controller instanceof aa?new ea(t.controller):null});var ha=class{constructor(t,e){this.onRackValueChange_=this.onRackValueChange_.bind(this),this.controller_=t,this.emitter_=new Ar,this.pool_=e,this.controller_.rack.emitter.on("valuechange",this.onRackValueChange_)}get children(){return this.controller_.rack.children.map(t=>this.pool_.createApi(t))}addBinding(t,e,i){const n=null!=i?i:{},s=this.controller_.element.ownerDocument,r=this.pool_.createBinding(s,function(t,e){if(!Dr.isBindable(t))throw jr.notBindable();return new Dr(t,e)}(t,e),n),o=this.pool_.createBindingApi(r);return this.add(o,n.index)}addFolder(t){return function(t,e){return t.addBlade(Object.assign(Object.assign({},e),{view:"folder"}))}(this,t)}addButton(t){return function(t,e){return t.addBlade(Object.assign(Object.assign({},e),{view:"button"}))}(this,t)}addTab(t){return function(t,e){return t.addBlade(Object.assign(Object.assign({},e),{view:"tab"}))}(this,t)}add(t,e){const i=t.controller;return this.controller_.rack.add(i,e),t}remove(t){this.controller_.rack.remove(t.controller)}addBlade(t){const e=this.controller_.element.ownerDocument,i=this.pool_.createBlade(e,t),n=this.pool_.createApi(i);return this.add(n,t.index)}on(t,e){const i=e.bind(this);return this.emitter_.on(t,t=>{i(t)}),this}refresh(){this.children.forEach(t=>{var e;kr(e=t)&&"refresh"in e&&"function"==typeof e.refresh&&t.refresh()})}onRackValueChange_(t){const e=t.bladeController,i=this.pool_.createApi(e),n=kr(s=e.value)&&"binding"in s&&kr(r=s.binding)&&"target"in r?e.value.binding:null;var s,r;this.emitter_.emit("change",new xo(i,n?n.target.read():e.value.rawValue,t.options.last))}},ca=class extends _o{constructor(t,e){super(t),this.rackApi_=new ha(t.rackController,e)}},da=class extends Wo{constructor(t){super({blade:t.blade,view:t.view,viewProps:t.rackController.viewProps}),this.rackController=t.rackController}importState(t){return Mo(t,t=>super.importState(t),t=>({children:t.required.array(t.required.raw)}),t=>this.rackController.rack.children.every((e,i)=>e.importState(t.children[i])))}exportState(){return So(()=>super.exportState(),{children:this.rackController.rack.children.map(t=>t.exportState())})}};function ua(t){return"rackController"in t}var va=class{constructor(t){this.emitter=new Ar,this.items_=[],this.cache_=new Set,this.onSubListAdd_=this.onSubListAdd_.bind(this),this.onSubListRemove_=this.onSubListRemove_.bind(this),this.extract_=t}get items(){return this.items_}allItems(){return Array.from(this.cache_)}find(t){for(const e of this.allItems())if(t(e))return e;return null}includes(t){return this.cache_.has(t)}add(t,e){if(this.includes(t))throw jr.shouldNeverHappen();const i=void 0!==e?e:this.items_.length;this.items_.splice(i,0,t),this.cache_.add(t);const n=this.extract_(t);n&&(n.emitter.on("add",this.onSubListAdd_),n.emitter.on("remove",this.onSubListRemove_),n.allItems().forEach(t=>{this.cache_.add(t)})),this.emitter.emit("add",{index:i,item:t,root:this,target:this})}remove(t){const e=this.items_.indexOf(t);if(e<0)return;this.items_.splice(e,1),this.cache_.delete(t);const i=this.extract_(t);i&&(i.allItems().forEach(t=>{this.cache_.delete(t)}),i.emitter.off("add",this.onSubListAdd_),i.emitter.off("remove",this.onSubListRemove_)),this.emitter.emit("remove",{index:e,item:t,root:this,target:this})}onSubListAdd_(t){this.cache_.add(t.item),this.emitter.emit("add",{index:t.index,item:t.item,root:this,target:t.target})}onSubListRemove_(t){this.cache_.delete(t.item),this.emitter.emit("remove",{index:t.index,item:t.item,root:this,target:t.target})}};function ma(t){return ua(t)?t.rackController.rack.bcSet_:null}var ba=class{constructor(t){var e,i;this.emitter=new Ar,this.onBladePositionsChange_=this.onBladePositionsChange_.bind(this),this.onSetAdd_=this.onSetAdd_.bind(this),this.onSetRemove_=this.onSetRemove_.bind(this),this.onChildDispose_=this.onChildDispose_.bind(this),this.onChildPositionsChange_=this.onChildPositionsChange_.bind(this),this.onChildValueChange_=this.onChildValueChange_.bind(this),this.onChildViewPropsChange_=this.onChildViewPropsChange_.bind(this),this.onRackLayout_=this.onRackLayout_.bind(this),this.onRackValueChange_=this.onRackValueChange_.bind(this),this.blade_=null!==(e=t.blade)&&void 0!==e?e:null,null===(i=this.blade_)||void 0===i||i.value("positions").emitter.on("change",this.onBladePositionsChange_),this.viewProps=t.viewProps,this.bcSet_=new va(ma),this.bcSet_.emitter.on("add",this.onSetAdd_),this.bcSet_.emitter.on("remove",this.onSetRemove_)}get children(){return this.bcSet_.items}add(t,e){var i;null===(i=t.parent)||void 0===i||i.remove(t),t.parent=this,this.bcSet_.add(t,e)}remove(t){t.parent=null,this.bcSet_.remove(t)}find(t){return this.bcSet_.allItems().filter(t)}onSetAdd_(t){this.updatePositions_();const e=t.target===t.root;if(this.emitter.emit("add",{bladeController:t.item,index:t.index,root:e,sender:this}),!e)return;const i=t.item;if(i.viewProps.emitter.on("change",this.onChildViewPropsChange_),i.blade.value("positions").emitter.on("change",this.onChildPositionsChange_),i.viewProps.handleDispose(this.onChildDispose_),jo(i))i.value.emitter.on("change",this.onChildValueChange_);else if(ua(i)){const t=i.rackController.rack;if(t){const e=t.emitter;e.on("layout",this.onRackLayout_),e.on("valuechange",this.onRackValueChange_)}}}onSetRemove_(t){this.updatePositions_();const e=t.target===t.root;if(this.emitter.emit("remove",{bladeController:t.item,root:e,sender:this}),!e)return;const i=t.item;if(jo(i))i.value.emitter.off("change",this.onChildValueChange_);else if(ua(i)){const t=i.rackController.rack;if(t){const e=t.emitter;e.off("layout",this.onRackLayout_),e.off("valuechange",this.onRackValueChange_)}}}updatePositions_(){const t=this.bcSet_.items.filter(t=>!t.viewProps.get("hidden")),e=t[0],i=t[t.length-1];this.bcSet_.items.forEach(t=>{const n=[];t===e&&(n.push("first"),this.blade_&&!this.blade_.get("positions").includes("veryfirst")||n.push("veryfirst")),t===i&&(n.push("last"),this.blade_&&!this.blade_.get("positions").includes("verylast")||n.push("verylast")),t.blade.set("positions",n)})}onChildPositionsChange_(){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildViewPropsChange_(t){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildDispose_(){this.bcSet_.items.filter(t=>t.viewProps.get("disposed")).forEach(t=>{this.bcSet_.remove(t)})}onChildValueChange_(t){const e=function(t,e){for(let i=0;i{for(let t=this.rack.children.length-1;t>=0;t--)this.rack.children[t].viewProps.set("disposed",!0)})}onRackAdd_(t){t.root&&zo(this.element,t.bladeController.view.element,t.index)}onRackRemove_(t){t.root&&Ro(t.bladeController.view.element)}};function wa(){return new Rr({positions:zr([],{equals:Lr})})}var _a=class t extends Rr{constructor(t){super(t)}static create(e){const i={completed:!0,expanded:e,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null};return new t(Rr.createCore(i))}get styleExpanded(){var t;return null!==(t=this.get("temporaryExpanded"))&&void 0!==t?t:this.get("expanded")}get styleHeight(){if(!this.styleExpanded)return"0";const t=this.get("expandedHeight");return this.get("shouldFixHeight")&&!Er(t)?`${t}px`:"auto"}bindExpandedClass(t,e){const i=()=>{this.styleExpanded?t.classList.add(e):t.classList.remove(e)};Uo(this,"expanded",i),Uo(this,"temporaryExpanded",i)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}};function fa(t,e){e.style.height=t.styleHeight}function xa(t,e){t.value("expanded").emitter.on("beforechange",()=>{if(t.set("completed",!1),Er(t.get("expandedHeight"))){const i=function(t,e){let i=0;return function(n){const s=n.style.transition;n.style.transition="none",t.set("expandedHeight",null),t.set("temporaryExpanded",!0),Ao(e),i=e.clientHeight,t.set("temporaryExpanded",null),Ao(e),n.style.transition=s}(e),i}(t,e);i>0&&t.set("expandedHeight",i)}t.set("shouldFixHeight",!0),Ao(e)}),t.emitter.on("change",()=>{fa(t,e)}),fa(t,e),e.addEventListener("transitionend",e=>{"height"===e.propertyName&&t.cleanUpTransition()})}var Ca=class extends ca{constructor(t,e){super(t,e),this.emitter_=new Ar,this.controller.foldable.value("expanded").emitter.on("change",t=>{this.emitter_.emit("fold",new Co(this,t.sender.rawValue))}),this.rackApi_.on("change",t=>{this.emitter_.emit("change",t)})}get expanded(){return this.controller.foldable.get("expanded")}set expanded(t){this.controller.foldable.set("expanded",t)}get title(){return this.controller.props.get("title")}set title(t){this.controller.props.set("title",t)}get children(){return this.rackApi_.children}addBinding(t,e,i){return this.rackApi_.addBinding(t,e,i)}addFolder(t){return this.rackApi_.addFolder(t)}addButton(t){return this.rackApi_.addButton(t)}addTab(t){return this.rackApi_.addTab(t)}add(t,e){return this.rackApi_.add(t,e)}remove(t){this.rackApi_.remove(t)}addBlade(t){return this.rackApi_.addBlade(t)}on(t,e){const i=e.bind(this);return this.emitter_.on(t,t=>{i(t)}),this}refresh(){this.rackApi_.refresh()}},ya=$o("cnt"),Pa=class{constructor(t,e){var i;this.className_=$o(null!==(i=e.viewName)&&void 0!==i?i:"fld"),this.element=t.createElement("div"),this.element.classList.add(this.className_(),ya()),e.viewProps.bindClassModifiers(this.element),this.foldable_=e.foldable,this.foldable_.bindExpandedClass(this.element,this.className_(void 0,"expanded")),Uo(this.foldable_,"completed",ia(this.element,this.className_(void 0,"cpl")));const n=t.createElement("button");n.classList.add(this.className_("b")),Uo(e.props,"title",t=>{Er(t)?this.element.classList.add(this.className_(void 0,"not")):this.element.classList.remove(this.className_(void 0,"not"))}),e.viewProps.bindDisabled(n),this.element.appendChild(n),this.buttonElement=n;const s=t.createElement("div");s.classList.add(this.className_("i")),this.element.appendChild(s);const r=t.createElement("div");r.classList.add(this.className_("t")),na(e.props.value("title"),r),this.buttonElement.appendChild(r),this.titleElement=r;const o=t.createElement("div");o.classList.add(this.className_("m")),this.buttonElement.appendChild(o);const a=t.createElement("div");a.classList.add(this.className_("c")),this.element.appendChild(a),this.containerElement=a}},Ea=class extends da{constructor(t,e){var i;const n=_a.create(null===(i=e.expanded)||void 0===i||i),s=new Pa(t,{foldable:n,props:e.props,viewName:e.root?"rot":void 0,viewProps:e.viewProps});super(Object.assign(Object.assign({},e),{rackController:new ga({blade:e.blade,element:s.containerElement,root:e.root,viewProps:e.viewProps}),view:s})),this.onTitleClick_=this.onTitleClick_.bind(this),this.props=e.props,this.foldable=n,xa(this.foldable,this.view.containerElement),this.rackController.rack.emitter.on("add",()=>{this.foldable.cleanUpTransition()}),this.rackController.rack.emitter.on("remove",()=>{this.foldable.cleanUpTransition()}),this.view.buttonElement.addEventListener("click",this.onTitleClick_)}get document(){return this.view.element.ownerDocument}importState(t){return Mo(t,t=>super.importState(t),t=>({expanded:t.required.boolean,title:t.optional.string}),t=>(this.foldable.set("expanded",t.expanded),this.props.set("title",t.title),!0))}exportState(){return So(()=>super.exportState(),{expanded:this.foldable.get("expanded"),title:this.props.get("title")})}onTitleClick_(){this.foldable.set("expanded",!this.foldable.get("expanded"))}};pa({id:"folder",type:"blade",accept(t){const e=Lo(t,t=>({title:t.required.string,view:t.required.constant("folder"),expanded:t.optional.boolean}));return e?{params:e}:null},controller:t=>new Ea(t.document,{blade:t.blade,expanded:t.params.expanded,props:Rr.fromObject({title:t.params.title}),viewProps:t.viewProps}),api:t=>t.controller instanceof Ea?new Ca(t.controller,t.pool):null});var ka=$o("");function Va(t,e){return ia(t,ka(void 0,e))}var La=class t extends Rr{constructor(t){var e,i;super(t),this.onDisabledChange_=this.onDisabledChange_.bind(this),this.onParentChange_=this.onParentChange_.bind(this),this.onParentGlobalDisabledChange_=this.onParentGlobalDisabledChange_.bind(this),[this.globalDisabled_,this.setGlobalDisabled_]=(i=zr(this.getGlobalDisabled_()),[new Tr(i),(t,e)=>{i.setRawValue(t,e)}]),this.value("disabled").emitter.on("change",this.onDisabledChange_),this.value("parent").emitter.on("change",this.onParentChange_),null===(e=this.get("parent"))||void 0===e||e.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_)}static create(e){var i,n,s;const r=null!=e?e:{};return new t(Rr.createCore({disabled:null!==(i=r.disabled)&&void 0!==i&&i,disposed:!1,hidden:null!==(n=r.hidden)&&void 0!==n&&n,parent:null!==(s=r.parent)&&void 0!==s?s:null}))}get globalDisabled(){return this.globalDisabled_}bindClassModifiers(t){Io(this.globalDisabled_,Va(t,"disabled")),Uo(this,"hidden",Va(t,"hidden"))}bindDisabled(t){Io(this.globalDisabled_,e=>{t.disabled=e})}bindTabIndex(t){Io(this.globalDisabled_,e=>{t.tabIndex=e?-1:0})}handleDispose(t){this.value("disposed").emitter.on("change",e=>{e&&t()})}importState(t){this.set("disabled",t.disabled),this.set("hidden",t.hidden)}exportState(){return{disabled:this.get("disabled"),hidden:this.get("hidden")}}getGlobalDisabled_(){const t=this.get("parent");return!!t&&t.globalDisabled.rawValue||this.get("disabled")}updateGlobalDisabled_(){this.setGlobalDisabled_(this.getGlobalDisabled_())}onDisabledChange_(){this.updateGlobalDisabled_()}onParentGlobalDisabledChange_(){this.updateGlobalDisabled_()}onParentChange_(t){var e;const i=t.previousRawValue;null==i||i.globalDisabled.emitter.off("change",this.onParentGlobalDisabledChange_),null===(e=this.get("parent"))||void 0===e||e.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_),this.updateGlobalDisabled_()}},Ma=$o("tbp"),Sa=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Ma()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(Ma("c")),this.element.appendChild(i),this.containerElement=i}},ja=$o("tbi"),Da=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(ja()),e.viewProps.bindClassModifiers(this.element),Uo(e.props,"selected",t=>{t?this.element.classList.add(ja(void 0,"sel")):this.element.classList.remove(ja(void 0,"sel"))});const i=t.createElement("button");i.classList.add(ja("b")),e.viewProps.bindDisabled(i),this.element.appendChild(i),this.buttonElement=i;const n=t.createElement("div");n.classList.add(ja("t")),na(e.props.value("title"),n),this.buttonElement.appendChild(n),this.titleElement=n}},Aa=class{constructor(t,e){this.emitter=new Ar,this.onClick_=this.onClick_.bind(this),this.props=e.props,this.viewProps=e.viewProps,this.view=new Da(t,{props:e.props,viewProps:e.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}},Oa=class extends da{constructor(t,e){const i=new Sa(t,{viewProps:e.viewProps});super(Object.assign(Object.assign({},e),{rackController:new ga({blade:e.blade,element:i.containerElement,viewProps:e.viewProps}),view:i})),this.onItemClick_=this.onItemClick_.bind(this),this.ic_=new Aa(t,{props:e.itemProps,viewProps:La.create()}),this.ic_.emitter.on("click",this.onItemClick_),this.props=e.props,Uo(this.props,"selected",t=>{this.itemController.props.set("selected",t),this.viewProps.set("hidden",!t)})}get itemController(){return this.ic_}importState(t){return Mo(t,t=>super.importState(t),t=>({selected:t.required.boolean,title:t.required.string}),t=>(this.ic_.props.set("selected",t.selected),this.ic_.props.set("title",t.title),!0))}exportState(){return So(()=>super.exportState(),{selected:this.ic_.props.get("selected"),title:this.ic_.props.get("title")})}onItemClick_(){this.props.set("selected",!0)}},Ba=class extends ca{constructor(t,e){super(t,e),this.emitter_=new Ar,this.onSelect_=this.onSelect_.bind(this),this.pool_=e,this.rackApi_.on("change",t=>{this.emitter_.emit("change",t)}),this.controller.tab.selectedIndex.emitter.on("change",this.onSelect_)}get pages(){return this.rackApi_.children}addPage(t){const e=this.controller.view.element.ownerDocument,i=new Oa(e,{blade:wa(),itemProps:Rr.fromObject({selected:!1,title:t.title}),props:Rr.fromObject({selected:!1}),viewProps:La.create()}),n=this.pool_.createApi(i);return this.rackApi_.add(n,t.index)}removePage(t){this.rackApi_.remove(this.rackApi_.children[t])}on(t,e){const i=e.bind(this);return this.emitter_.on(t,t=>{i(t)}),this}onSelect_(t){this.emitter_.emit("select",new yo(this,t.rawValue))}},Ta=class extends ca{get title(){var t;return null!==(t=this.controller.itemController.props.get("title"))&&void 0!==t?t:""}set title(t){this.controller.itemController.props.set("title",t)}get selected(){return this.controller.props.get("selected")}set selected(t){this.controller.props.set("selected",t)}get children(){return this.rackApi_.children}addButton(t){return this.rackApi_.addButton(t)}addFolder(t){return this.rackApi_.addFolder(t)}addTab(t){return this.rackApi_.addTab(t)}add(t,e){this.rackApi_.add(t,e)}remove(t){this.rackApi_.remove(t)}addBinding(t,e,i){return this.rackApi_.addBinding(t,e,i)}addBlade(t){return this.rackApi_.addBlade(t)}refresh(){this.rackApi_.refresh()}},za=class{constructor(){this.onItemSelectedChange_=this.onItemSelectedChange_.bind(this),this.empty=zr(!0),this.selectedIndex=zr(-1),this.items_=[]}add(t,e){const i=null!=e?e:this.items_.length;this.items_.splice(i,0,t),t.emitter.on("change",this.onItemSelectedChange_),this.keepSelection_()}remove(t){const e=this.items_.indexOf(t);e<0||(this.items_.splice(e,1),t.emitter.off("change",this.onItemSelectedChange_),this.keepSelection_())}keepSelection_(){if(0===this.items_.length)return this.selectedIndex.rawValue=-1,void(this.empty.rawValue=!0);const t=this.items_.findIndex(t=>t.rawValue);t<0?(this.items_.forEach((t,e)=>{t.rawValue=0===e}),this.selectedIndex.rawValue=0):(this.items_.forEach((e,i)=>{e.rawValue=i===t}),this.selectedIndex.rawValue=t),this.empty.rawValue=!1}onItemSelectedChange_(t){if(t.rawValue){const e=this.items_.findIndex(e=>e===t.sender);this.items_.forEach((t,i)=>{t.rawValue=i===e}),this.selectedIndex.rawValue=e}else this.keepSelection_()}},Ra=$o("tab"),Na=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Ra(),ya()),e.viewProps.bindClassModifiers(this.element),Io(e.empty,ia(this.element,Ra(void 0,"nop")));const i=t.createElement("div");i.classList.add(Ra("t")),this.element.appendChild(i),this.itemsElement=i;const n=t.createElement("div");n.classList.add(Ra("i")),this.element.appendChild(n);const s=t.createElement("div");s.classList.add(Ra("c")),this.element.appendChild(s),this.contentsElement=s}},Ka=class extends da{constructor(t,e){const i=new za,n=new Na(t,{empty:i.empty,viewProps:e.viewProps});super({blade:e.blade,rackController:new ga({blade:e.blade,element:n.contentsElement,viewProps:e.viewProps}),view:n}),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this);const s=this.rackController.rack;s.emitter.on("add",this.onRackAdd_),s.emitter.on("remove",this.onRackRemove_),this.tab=i}add(t,e){this.rackController.rack.add(t,e)}remove(t){this.rackController.rack.remove(this.rackController.rack.children[t])}onRackAdd_(t){if(!t.root)return;const e=t.bladeController;zo(this.view.itemsElement,e.itemController.view.element,t.index),e.itemController.viewProps.set("parent",this.viewProps),this.tab.add(e.props.value("selected"))}onRackRemove_(t){if(!t.root)return;const e=t.bladeController;Ro(e.itemController.view.element),e.itemController.viewProps.set("parent",null),this.tab.remove(e.props.value("selected"))}};pa({id:"tab",type:"blade",accept(t){const e=Lo(t,t=>({pages:t.required.array(t.required.object({title:t.required.string})),view:t.required.constant("tab")}));return e&&0!==e.pages.length?{params:e}:null},controller(t){const e=new Ka(t.document,{blade:t.blade,viewProps:t.viewProps});return t.params.pages.forEach(i=>{const n=new Oa(t.document,{blade:wa(),itemProps:Rr.fromObject({selected:!1,title:i.title}),props:Rr.fromObject({selected:!1}),viewProps:La.create()});e.add(n)}),e},api:t=>t.controller instanceof Ka?new Ba(t.controller,t.pool):t.controller instanceof Oa?new Ta(t.controller,t.pool):null});var Ia=class extends Po{get options(){return this.controller.valueController.props.get("options")}set options(t){this.controller.valueController.props.set("options",t)}},Ua=class{constructor(){this.disabled=!1,this.emitter=new Ar}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}},Fa=class{constructor(t,e){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=t,this.emitter=new Ar,this.interval_=e,this.setTimer_()}get disabled(){return this.disabled_}set disabled(t){this.disabled_=t,this.disabled_?this.clearTimer_():this.setTimer_()}dispose(){this.clearTimer_()}clearTimer_(){if(null===this.timerId_)return;const t=this.doc_.defaultView;t&&t.clearInterval(this.timerId_),this.timerId_=null}setTimer_(){if(this.clearTimer_(),this.interval_<=0)return;const t=this.doc_.defaultView;t&&(this.timerId_=t.setInterval(this.onTick_,this.interval_))}onTick_(){this.disabled_||this.emitter.emit("tick",{sender:this})}},$a=class{constructor(t){this.constraints=t}constrain(t){return this.constraints.reduce((t,e)=>e.constrain(t),t)}};function qa(t,e){if(t instanceof e)return t;if(t instanceof $a){const i=t.constraints.reduce((t,i)=>t||(i instanceof e?i:null),null);if(i)return i}return null}var Ha=class{constructor(t){this.values=Rr.fromObject({options:t})}constrain(t){const e=this.values.get("options");return 0===e.length||e.filter(e=>e.value===t).length>0?t:e[0].value}};function Ga(t){var e;const i=Vo;return Array.isArray(t)?null===(e=Lo({items:t},t=>({items:t.required.array(t.required.object({text:t.required.string,value:t.required.raw}))})))||void 0===e?void 0:e.items:"object"==typeof t?i.required.raw(t).value:void 0}function Ya(t){if(Array.isArray(t))return t;const e=[];return Object.keys(t).forEach(i=>{e.push({text:i,value:t[i]})}),e}function Xa(t){return Er(t)?null:new Ha(Ya(t))}var Wa=$o("lst"),Qa=class{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.props_=e.props,this.element=t.createElement("div"),this.element.classList.add(Wa()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("select");i.classList.add(Wa("s")),e.viewProps.bindDisabled(i),this.element.appendChild(i),this.selectElement=i;const n=t.createElement("div");n.classList.add(Wa("m")),n.appendChild(To(t,"dropdown")),this.element.appendChild(n),e.value.emitter.on("change",this.onValueChange_),this.value_=e.value,Uo(this.props_,"options",e=>{No(this.selectElement),e.forEach(e=>{const i=t.createElement("option");i.textContent=e.text,this.selectElement.appendChild(i)}),this.update_()})}update_(){const t=this.props_.get("options").map(t=>t.value);this.selectElement.selectedIndex=t.indexOf(this.value_.rawValue)}onValueChange_(){this.update_()}},Ja=class{constructor(t,e){this.onSelectChange_=this.onSelectChange_.bind(this),this.props=e.props,this.value=e.value,this.viewProps=e.viewProps,this.view=new Qa(t,{props:this.props,value:this.value,viewProps:this.viewProps}),this.view.selectElement.addEventListener("change",this.onSelectChange_)}onSelectChange_(t){const e=t.currentTarget;this.value.rawValue=this.props.get("options")[e.selectedIndex].value}importProps(t){return Mo(t,null,t=>({options:t.required.custom(Ga)}),t=>(this.props.set("options",Ya(t.options)),!0))}exportProps(){return So(null,{options:this.props.get("options")})}},Za=$o("pop"),tl=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Za()),e.viewProps.bindClassModifiers(this.element),Io(e.shows,ia(this.element,Za(void 0,"v")))}},el=class{constructor(t,e){this.shows=zr(!1),this.viewProps=e.viewProps,this.view=new tl(t,{shows:this.shows,viewProps:this.viewProps})}},il=$o("txt"),nl=class{constructor(t,e){this.onChange_=this.onChange_.bind(this),this.element=t.createElement("div"),this.element.classList.add(il()),e.viewProps.bindClassModifiers(this.element),this.props_=e.props,this.props_.emitter.on("change",this.onChange_);const i=t.createElement("input");i.classList.add(il("i")),i.type="text",e.viewProps.bindDisabled(i),this.element.appendChild(i),this.inputElement=i,e.value.emitter.on("change",this.onChange_),this.value_=e.value,this.refresh()}refresh(){const t=this.props_.get("formatter");this.inputElement.value=t(this.value_.rawValue)}onChange_(){this.refresh()}},sl=class{constructor(t,e){this.onInputChange_=this.onInputChange_.bind(this),this.parser_=e.parser,this.props=e.props,this.value=e.value,this.viewProps=e.viewProps,this.view=new nl(t,{props:e.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(t){const e=t.currentTarget.value,i=this.parser_(e);Er(i)||(this.value.rawValue=i),this.view.refresh()}};function rl(t){return"false"!==t&&!!t}function ol(t){return function(t){return String(t)}(t)}var al=ro(0);function ll(t){return al(t)+"%"}function pl(t){return String(t)}function hl(t){return t}function cl({primary:t,secondary:e,forward:i,backward:n}){let s=!1;function r(t){s||(s=!0,t(),s=!1)}t.emitter.on("change",n=>{r(()=>{e.setRawValue(i(t.rawValue,e.rawValue),n.options)})}),e.emitter.on("change",s=>{r(()=>{t.setRawValue(n(t.rawValue,e.rawValue),s.options)}),r(()=>{e.setRawValue(i(t.rawValue,e.rawValue),s.options)})}),r(()=>{e.setRawValue(i(t.rawValue,e.rawValue),{forceEmit:!1,last:!0})})}function dl(t,e){const i=t*(e.altKey?.1:1)*(e.shiftKey?10:1);return e.upKey?+i:e.downKey?-i:0}function ul(t){return{altKey:t.altKey,downKey:"ArrowDown"===t.key,shiftKey:t.shiftKey,upKey:"ArrowUp"===t.key}}function vl(t){return{altKey:t.altKey,downKey:"ArrowLeft"===t.key,shiftKey:t.shiftKey,upKey:"ArrowRight"===t.key}}function ml(t){return function(t){return"ArrowUp"===t||"ArrowDown"===t}(t)||"ArrowLeft"===t||"ArrowRight"===t}function bl(t,e){var i,n;const s=e.ownerDocument.defaultView,r=e.getBoundingClientRect();return{x:t.pageX-((null!==(i=s&&s.scrollX)&&void 0!==i?i:0)+r.left),y:t.pageY-((null!==(n=s&&s.scrollY)&&void 0!==n?n:0)+r.top)}}var gl=class{constructor(t){this.lastTouch_=null,this.onDocumentMouseMove_=this.onDocumentMouseMove_.bind(this),this.onDocumentMouseUp_=this.onDocumentMouseUp_.bind(this),this.onMouseDown_=this.onMouseDown_.bind(this),this.onTouchEnd_=this.onTouchEnd_.bind(this),this.onTouchMove_=this.onTouchMove_.bind(this),this.onTouchStart_=this.onTouchStart_.bind(this),this.elem_=t,this.emitter=new Ar,t.addEventListener("touchstart",this.onTouchStart_,{passive:!1}),t.addEventListener("touchmove",this.onTouchMove_,{passive:!0}),t.addEventListener("touchend",this.onTouchEnd_),t.addEventListener("mousedown",this.onMouseDown_)}computePosition_(t){const e=this.elem_.getBoundingClientRect();return{bounds:{width:e.width,height:e.height},point:t?{x:t.x,y:t.y}:null}}onMouseDown_(t){var e;t.preventDefault(),null===(e=t.currentTarget)||void 0===e||e.focus();const i=this.elem_.ownerDocument;i.addEventListener("mousemove",this.onDocumentMouseMove_),i.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:t.altKey,data:this.computePosition_(bl(t,this.elem_)),sender:this,shiftKey:t.shiftKey})}onDocumentMouseMove_(t){this.emitter.emit("move",{altKey:t.altKey,data:this.computePosition_(bl(t,this.elem_)),sender:this,shiftKey:t.shiftKey})}onDocumentMouseUp_(t){const e=this.elem_.ownerDocument;e.removeEventListener("mousemove",this.onDocumentMouseMove_),e.removeEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("up",{altKey:t.altKey,data:this.computePosition_(bl(t,this.elem_)),sender:this,shiftKey:t.shiftKey})}onTouchStart_(t){t.preventDefault();const e=t.targetTouches.item(0),i=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:t.altKey,data:this.computePosition_(e?{x:e.clientX-i.left,y:e.clientY-i.top}:void 0),sender:this,shiftKey:t.shiftKey}),this.lastTouch_=e}onTouchMove_(t){const e=t.targetTouches.item(0),i=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:t.altKey,data:this.computePosition_(e?{x:e.clientX-i.left,y:e.clientY-i.top}:void 0),sender:this,shiftKey:t.shiftKey}),this.lastTouch_=e}onTouchEnd_(t){var e;const i=null!==(e=t.targetTouches.item(0))&&void 0!==e?e:this.lastTouch_,n=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:t.altKey,data:this.computePosition_(i?{x:i.clientX-n.left,y:i.clientY-n.top}:void 0),sender:this,shiftKey:t.shiftKey})}},wl=$o("txt"),_l=class{constructor(t,e){this.onChange_=this.onChange_.bind(this),this.props_=e.props,this.props_.emitter.on("change",this.onChange_),this.element=t.createElement("div"),this.element.classList.add(wl(),wl(void 0,"num")),e.arrayPosition&&this.element.classList.add(wl(void 0,e.arrayPosition)),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("input");i.classList.add(wl("i")),i.type="text",e.viewProps.bindDisabled(i),this.element.appendChild(i),this.inputElement=i,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=e.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add(wl()),this.inputElement.classList.add(wl("i"));const n=t.createElement("div");n.classList.add(wl("k")),this.element.appendChild(n),this.knobElement=n;const s=t.createElementNS(Do,"svg");s.classList.add(wl("g")),this.knobElement.appendChild(s);const r=t.createElementNS(Do,"path");r.classList.add(wl("gb")),s.appendChild(r),this.guideBodyElem_=r;const o=t.createElementNS(Do,"path");o.classList.add(wl("gh")),s.appendChild(o),this.guideHeadElem_=o;const a=t.createElement("div");a.classList.add($o("tt")()),this.knobElement.appendChild(a),this.tooltipElem_=a,e.value.emitter.on("change",this.onChange_),this.value=e.value,this.refresh()}onDraggingChange_(t){if(null===t.rawValue)return void this.element.classList.remove(wl(void 0,"drg"));this.element.classList.add(wl(void 0,"drg"));const e=t.rawValue/this.props_.get("pointerScale"),i=e+(e>0?-1:e<0?1:0),n=lo(-i,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${i+n},0 L${i},4 L${i+n},8`,`M ${e},-1 L${e},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${e},4`);const s=this.props_.get("formatter");this.tooltipElem_.textContent=s(this.value.rawValue),this.tooltipElem_.style.left=`${e}px`}refresh(){const t=this.props_.get("formatter");this.inputElement.value=t(this.value.rawValue)}onChange_(){this.refresh()}},fl=class{constructor(t,e){var i;this.originRawValue_=0,this.onInputChange_=this.onInputChange_.bind(this),this.onInputKeyDown_=this.onInputKeyDown_.bind(this),this.onInputKeyUp_=this.onInputKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.parser_=e.parser,this.props=e.props,this.sliderProps_=null!==(i=e.sliderProps)&&void 0!==i?i:null,this.value=e.value,this.viewProps=e.viewProps,this.dragging_=zr(null),this.view=new _l(t,{arrayPosition:e.arrayPosition,dragging:this.dragging_,props:this.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.inputElement.addEventListener("keydown",this.onInputKeyDown_),this.view.inputElement.addEventListener("keyup",this.onInputKeyUp_);const n=new gl(this.view.knobElement);n.emitter.on("down",this.onPointerDown_),n.emitter.on("move",this.onPointerMove_),n.emitter.on("up",this.onPointerUp_)}constrainValue_(t){var e,i;const n=null===(e=this.sliderProps_)||void 0===e?void 0:e.get("min"),s=null===(i=this.sliderProps_)||void 0===i?void 0:i.get("max");let r=t;return void 0!==n&&(r=Math.max(r,n)),void 0!==s&&(r=Math.min(r,s)),r}onInputChange_(t){const e=t.currentTarget.value,i=this.parser_(e);Er(i)||(this.value.rawValue=this.constrainValue_(i)),this.view.refresh()}onInputKeyDown_(t){const e=dl(this.props.get("keyScale"),ul(t));0!==e&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+e),{forceEmit:!1,last:!1})}onInputKeyUp_(t){0!==dl(this.props.get("keyScale"),ul(t))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}onPointerDown_(){this.originRawValue_=this.value.rawValue,this.dragging_.rawValue=0}computeDraggingValue_(t){if(!t.point)return null;const e=t.point.x-t.bounds.width/2;return this.constrainValue_(this.originRawValue_+e*this.props.get("pointerScale"))}onPointerMove_(t){const e=this.computeDraggingValue_(t.data);null!==e&&(this.value.setRawValue(e,{forceEmit:!1,last:!1}),this.dragging_.rawValue=this.value.rawValue-this.originRawValue_)}onPointerUp_(t){const e=this.computeDraggingValue_(t.data);null!==e&&(this.value.setRawValue(e,{forceEmit:!0,last:!0}),this.dragging_.rawValue=null)}},xl=$o("sld"),Cl=class{constructor(t,e){this.onChange_=this.onChange_.bind(this),this.props_=e.props,this.props_.emitter.on("change",this.onChange_),this.element=t.createElement("div"),this.element.classList.add(xl()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(xl("t")),e.viewProps.bindTabIndex(i),this.element.appendChild(i),this.trackElement=i;const n=t.createElement("div");n.classList.add(xl("k")),this.trackElement.appendChild(n),this.knobElement=n,e.value.emitter.on("change",this.onChange_),this.value=e.value,this.update_()}update_(){const t=lo(oo(this.value.rawValue,this.props_.get("min"),this.props_.get("max"),0,100),0,100);this.knobElement.style.width=`${t}%`}onChange_(){this.update_()}},yl=class{constructor(t,e){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDownOrMove_=this.onPointerDownOrMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.props=e.props,this.view=new Cl(t,{props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new gl(this.view.trackElement),this.ptHandler_.emitter.on("down",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("move",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.trackElement.addEventListener("keydown",this.onKeyDown_),this.view.trackElement.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(t,e){t.point&&this.value.setRawValue(oo(lo(t.point.x,0,t.bounds.width),0,t.bounds.width,this.props.get("min"),this.props.get("max")),e)}onPointerDownOrMove_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerUp_(t){this.handlePointerEvent_(t.data,{forceEmit:!0,last:!0})}onKeyDown_(t){const e=dl(this.props.get("keyScale"),vl(t));0!==e&&this.value.setRawValue(this.value.rawValue+e,{forceEmit:!1,last:!1})}onKeyUp_(t){0!==dl(this.props.get("keyScale"),vl(t))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}},Pl=$o("sldtxt"),El=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Pl());const i=t.createElement("div");i.classList.add(Pl("s")),this.sliderView_=e.sliderView,i.appendChild(this.sliderView_.element),this.element.appendChild(i);const n=t.createElement("div");n.classList.add(Pl("t")),this.textView_=e.textView,n.appendChild(this.textView_.element),this.element.appendChild(n)}},kl=class{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.sliderC_=new yl(t,{props:e.sliderProps,value:e.value,viewProps:this.viewProps}),this.textC_=new fl(t,{parser:e.parser,props:e.textProps,sliderProps:e.sliderProps,value:e.value,viewProps:e.viewProps}),this.view=new El(t,{sliderView:this.sliderC_.view,textView:this.textC_.view})}get sliderController(){return this.sliderC_}get textController(){return this.textC_}importProps(t){return Mo(t,null,t=>({max:t.required.number,min:t.required.number}),t=>{const e=this.sliderC_.props;return e.set("max",t.max),e.set("min",t.min),!0})}exportProps(){const t=this.sliderC_.props;return So(null,{max:t.get("max"),min:t.get("min")})}},Vl={containerUnitSize:"cnt-usz"};function Ll(t){return`--${Vl[t]}`}var Ml=class{constructor(t,e){const i=$o(e.viewName);this.element=t.createElement("div"),this.element.classList.add(i()),e.viewProps.bindClassModifiers(this.element)}};function Sl(t){return go(t)}function jl(t){if(Vr(t))return Lo(t,Sl)}function Dl(t,e){if(!t)return;const i=[],n=vo(t,e);n&&i.push(n);const s=mo(t);return s&&i.push(s),new $a(i)}function Al(t){if("inline"===t||"popup"===t)return t}function Ol(t,e){t.write(e)}var Bl=$o("ckb"),Tl=class{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.element=t.createElement("div"),this.element.classList.add(Bl()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("label");i.classList.add(Bl("l")),this.element.appendChild(i);const n=t.createElement("input");n.classList.add(Bl("i")),n.type="checkbox",i.appendChild(n),this.inputElement=n,e.viewProps.bindDisabled(this.inputElement);const s=t.createElement("div");s.classList.add(Bl("w")),i.appendChild(s);const r=To(t,"check");s.appendChild(r),e.value.emitter.on("change",this.onValueChange_),this.value=e.value,this.update_()}update_(){this.inputElement.checked=this.value.rawValue}onValueChange_(){this.update_()}},zl=class{constructor(t,e){this.onInputChange_=this.onInputChange_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.view=new Tl(t,{value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(t){const e=t.currentTarget;this.value.rawValue=e.checked}};pa({id:"input-bool",type:"input",accept:(t,e)=>{if("boolean"!=typeof t)return null;const i=Lo(e,t=>({options:t.optional.custom(Ga),readonly:t.optional.constant(!1)}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>rl,constraint:t=>function(t){const e=[],i=Xa(t.options);return i&&e.push(i),new $a(e)}(t.params),writer:t=>Ol},controller:t=>{const e=t.document,i=t.value,n=t.constraint,s=n&&qa(n,Ha);return s?new Ja(e,{props:new Rr({options:s.values.value("options")}),value:i,viewProps:t.viewProps}):new zl(e,{value:i,viewProps:t.viewProps})},api:t=>"boolean"!=typeof t.controller.value.rawValue?null:t.controller.valueController instanceof Ja?new Ia(t.controller):null});var Rl=$o("col"),Nl=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Rl()),e.foldable.bindExpandedClass(this.element,Rl(void 0,"expanded")),Uo(e.foldable,"completed",ia(this.element,Rl(void 0,"cpl")));const i=t.createElement("div");i.classList.add(Rl("h")),this.element.appendChild(i);const n=t.createElement("div");n.classList.add(Rl("s")),i.appendChild(n),this.swatchElement=n;const s=t.createElement("div");if(s.classList.add(Rl("t")),i.appendChild(s),this.textElement=s,"inline"===e.pickerLayout){const e=t.createElement("div");e.classList.add(Rl("p")),this.element.appendChild(e),this.pickerElement=e}else this.pickerElement=null}};function Kl(t,e,i){const n=po(t,360),s=lo(e/100,0,1),r=lo(i/100,0,1),o=r*s,a=o*(1-Math.abs(n/60%2-1)),l=r-o;let p,h,c;return[p,h,c]=n>=0&&n<60?[o,a,0]:n>=60&&n<120?[a,o,0]:n>=120&&n<180?[0,o,a]:n>=180&&n<240?[0,a,o]:n>=240&&n<300?[a,0,o]:[o,0,a],[255*(p+l),255*(h+l),255*(c+l)]}function Il(t){return[t[0],t[1],t[2]]}function Ul(t,e){return[t[0],t[1],t[2],e]}var Fl={hsl:{hsl:(t,e,i)=>[t,e,i],hsv:function(t,e,i){const n=i+e*(100-Math.abs(2*i-100))/200;return[t,0!==n?e*(100-Math.abs(2*i-100))/n:0,i+e*(100-Math.abs(2*i-100))/200]},rgb:function(t,e,i){const n=(t%360+360)%360,s=lo(e/100,0,1),r=lo(i/100,0,1),o=(1-Math.abs(2*r-1))*s,a=o*(1-Math.abs(n/60%2-1)),l=r-o/2;let p,h,c;return[p,h,c]=n>=0&&n<60?[o,a,0]:n>=60&&n<120?[a,o,0]:n>=120&&n<180?[0,o,a]:n>=180&&n<240?[0,a,o]:n>=240&&n<300?[a,0,o]:[o,0,a],[255*(p+l),255*(h+l),255*(c+l)]}},hsv:{hsl:function(t,e,i){const n=100-Math.abs(i*(200-e)/100-100);return[t,0!==n?e*i/n:0,i*(200-e)/200]},hsv:(t,e,i)=>[t,e,i],rgb:Kl},rgb:{hsl:function(t,e,i){const n=lo(t/255,0,1),s=lo(e/255,0,1),r=lo(i/255,0,1),o=Math.max(n,s,r),a=Math.min(n,s,r),l=o-a;let p=0,h=0;const c=(a+o)/2;return 0!==l&&(h=l/(1-Math.abs(o+a-1)),p=n===o?(s-r)/l:s===o?2+(r-n)/l:4+(n-s)/l,p=p/6+(p<0?1:0)),[360*p,100*h,100*c]},hsv:function(t,e,i){const n=lo(t/255,0,1),s=lo(e/255,0,1),r=lo(i/255,0,1),o=Math.max(n,s,r),a=o-Math.min(n,s,r);let l;return l=0===a?0:o===n?((s-r)/a%6+6)%6*60:o===s?60*((r-n)/a+2):60*((n-s)/a+4),[l,100*(0===o?0:a/o),100*o]},rgb:(t,e,i)=>[t,e,i]}};function $l(t,e){return["float"===e?1:"rgb"===t?255:360,"float"===e?1:"rgb"===t?255:100,"float"===e?1:"rgb"===t?255:100]}function ql(t,e,i){var n;const s=$l(e,i);return["rgb"===e?lo(t[0],0,s[0]):(r=t[0],o=s[0],r===o?o:po(r,o)),lo(t[1],0,s[1]),lo(t[2],0,s[2]),lo(null!==(n=t[3])&&void 0!==n?n:1,0,1)];var r,o}function Hl(t,e,i,n){const s=$l(e,i),r=$l(e,n);return t.map((t,e)=>t/s[e]*r[e])}function Gl(t,e,i){const n=Hl(t,e.mode,e.type,"int");return Hl(Fl[e.mode][i.mode](...n),i.mode,"int",i.type)}var Yl=class t{static black(){return new t([0,0,0],"rgb")}constructor(t,e){this.type="int",this.mode=e,this.comps_=ql(t,e,this.type)}getComponents(t){return Ul(Gl(Il(this.comps_),{mode:this.mode,type:this.type},{mode:null!=t?t:this.mode,type:this.type}),this.comps_[3])}toRgbaObject(){const t=this.getComponents("rgb");return{r:t[0],g:t[1],b:t[2],a:t[3]}}},Xl=$o("colp"),Wl=class{constructor(t,e){this.alphaViews_=null,this.element=t.createElement("div"),this.element.classList.add(Xl()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(Xl("hsv"));const n=t.createElement("div");n.classList.add(Xl("sv")),this.svPaletteView_=e.svPaletteView,n.appendChild(this.svPaletteView_.element),i.appendChild(n);const s=t.createElement("div");s.classList.add(Xl("h")),this.hPaletteView_=e.hPaletteView,s.appendChild(this.hPaletteView_.element),i.appendChild(s),this.element.appendChild(i);const r=t.createElement("div");if(r.classList.add(Xl("rgb")),this.textsView_=e.textsView,r.appendChild(this.textsView_.element),this.element.appendChild(r),e.alphaViews){this.alphaViews_={palette:e.alphaViews.palette,text:e.alphaViews.text};const i=t.createElement("div");i.classList.add(Xl("a"));const n=t.createElement("div");n.classList.add(Xl("ap")),n.appendChild(this.alphaViews_.palette.element),i.appendChild(n);const s=t.createElement("div");s.classList.add(Xl("at")),s.appendChild(this.alphaViews_.text.element),i.appendChild(s),this.element.appendChild(i)}}get allFocusableElements(){const t=[this.svPaletteView_.element,this.hPaletteView_.element,this.textsView_.modeSelectElement,...this.textsView_.inputViews.map(t=>t.inputElement)];return this.alphaViews_&&t.push(this.alphaViews_.palette.element,this.alphaViews_.text.inputElement),t}};function Ql(t){return"int"===t?"int":"float"===t?"float":void 0}function Jl(t){return Lo(t,t=>({color:t.optional.object({alpha:t.optional.boolean,type:t.optional.custom(Ql)}),expanded:t.optional.boolean,picker:t.optional.custom(Al),readonly:t.optional.constant(!1)}))}function Zl(t){return t?.1:1}function tp(t){var e;return null===(e=t.color)||void 0===e?void 0:e.type}var ep=class{constructor(t,e){this.type="float",this.mode=e,this.comps_=ql(t,e,this.type)}getComponents(t){return Ul(Gl(Il(this.comps_),{mode:this.mode,type:this.type},{mode:null!=t?t:this.mode,type:this.type}),this.comps_[3])}toRgbaObject(){const t=this.getComponents("rgb");return{r:t[0],g:t[1],b:t[2],a:t[3]}}},ip={int:(t,e)=>new Yl(t,e),float:(t,e)=>new ep(t,e)};function np(t,e,i){return ip[i](t,e)}function sp(t,e){if(t.type===e)return t;if(function(t){return"int"===t.type}(t)&&"float"===e)return function(t){const e=t.getComponents(),i=$l(t.mode,"int");return new ep([oo(e[0],0,i[0],0,1),oo(e[1],0,i[1],0,1),oo(e[2],0,i[2],0,1),e[3]],t.mode)}(t);if(function(t){return"float"===t.type}(t)&&"int"===e)return function(t){const e=t.getComponents(),i=$l(t.mode,"int");return new Yl([Math.round(oo(e[0],0,1,0,i[0])),Math.round(oo(e[1],0,1,0,i[1])),Math.round(oo(e[2],0,1,0,i[2])),e[3]],t.mode)}(t);throw jr.shouldNeverHappen()}function rp(t,e){const i=t.match(/^(.+)%$/);return i?Math.min(.01*parseFloat(i[1])*e,e):Math.min(parseFloat(t),e)}var op={deg:t=>t,grad:t=>360*t/400,rad:t=>360*t/(2*Math.PI),turn:t=>360*t};function ap(t){const e=t.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);if(!e)return parseFloat(t);const i=parseFloat(e[1]);return op[e[2]](i)}function lp(t){const e=t.match(/^rgb\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const i=[rp(e[1],255),rp(e[2],255),rp(e[3],255)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])?null:i}function pp(t){const e=lp(t);return e?new Yl(e,"rgb"):null}function hp(t){const e=t.match(/^rgba\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const i=[rp(e[1],255),rp(e[2],255),rp(e[3],255),rp(e[4],1)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])||isNaN(i[3])?null:i}function cp(t){const e=hp(t);return e?new Yl(e,"rgb"):null}function dp(t){const e=t.match(/^hsl\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const i=[ap(e[1]),rp(e[2],100),rp(e[3],100)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])?null:i}function up(t){const e=dp(t);return e?new Yl(e,"hsl"):null}function vp(t){const e=t.match(/^hsla\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const i=[ap(e[1]),rp(e[2],100),rp(e[3],100),rp(e[4],1)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])||isNaN(i[3])?null:i}function mp(t){const e=vp(t);return e?new Yl(e,"hsl"):null}function bp(t){const e=t.match(/^#([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(e)return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)];const i=t.match(/^(?:#|0x)([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return i?[parseInt(i[1],16),parseInt(i[2],16),parseInt(i[3],16)]:null}function gp(t){const e=bp(t);return e?new Yl(e,"rgb"):null}function wp(t){const e=t.match(/^#?([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(e)return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16),oo(parseInt(e[4]+e[4],16),0,255,0,1)];const i=t.match(/^(?:#|0x)?([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return i?[parseInt(i[1],16),parseInt(i[2],16),parseInt(i[3],16),oo(parseInt(i[4],16),0,255,0,1)]:null}function _p(t){const e=wp(t);return e?new Yl(e,"rgb"):null}function fp(t){const e=t.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!e)return null;const i=[parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3])];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])?null:i}function xp(t){return e=>{const i=fp(e);return i?np(i,"rgb",t):null}}function Cp(t){const e=t.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*a\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!e)return null;const i=[parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3]),parseFloat(e[4])];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])||isNaN(i[3])?null:i}function yp(t){return e=>{const i=Cp(e);return i?np(i,"rgb",t):null}}var Pp=[{parser:bp,result:{alpha:!1,mode:"rgb",notation:"hex"}},{parser:wp,result:{alpha:!0,mode:"rgb",notation:"hex"}},{parser:lp,result:{alpha:!1,mode:"rgb",notation:"func"}},{parser:hp,result:{alpha:!0,mode:"rgb",notation:"func"}},{parser:dp,result:{alpha:!1,mode:"hsl",notation:"func"}},{parser:vp,result:{alpha:!0,mode:"hsl",notation:"func"}},{parser:fp,result:{alpha:!1,mode:"rgb",notation:"object"}},{parser:Cp,result:{alpha:!0,mode:"rgb",notation:"object"}}];function Ep(t){const e=[gp,_p,pp,cp,up,mp];"int"===t&&e.push(xp("int"),yp("int")),"float"===t&&e.push(xp("float"),yp("float"));const i=function(t){return e=>t.reduce((t,i)=>null!==t?t:i(e),null)}(e);return e=>{const n=i(e);return n?sp(n,t):null}}function kp(t){const e=Ep("int");if("string"!=typeof t)return Yl.black();const i=e(t);return null!=i?i:Yl.black()}function Vp(t){const e=lo(Math.floor(t),0,255).toString(16);return 1===e.length?`0${e}`:e}function Lp(t,e="#"){return`${e}${Il(t.getComponents("rgb")).map(Vp).join("")}`}function Mp(t,e="#"){const i=t.getComponents("rgb");return`${e}${[i[0],i[1],i[2],255*i[3]].map(Vp).join("")}`}function Sp(t){const e=ro(0);return`rgb(${Il(sp(t,"int").getComponents("rgb")).map(t=>e(t)).join(", ")})`}function jp(t){const e=ro(2),i=ro(0);return`rgba(${sp(t,"int").getComponents("rgb").map((t,n)=>(3===n?e:i)(t)).join(", ")})`}function Dp(t,e){const i=ro("float"===e?2:0),n=["r","g","b"];return`{${Il(sp(t,e).getComponents("rgb")).map((t,e)=>`${n[e]}: ${i(t)}`).join(", ")}}`}function Ap(t){return e=>Dp(e,t)}function Op(t,e){const i=ro(2),n=ro("float"===e?2:0),s=["r","g","b","a"];return`{${sp(t,e).getComponents("rgb").map((t,e)=>`${s[e]}: ${(3===e?i:n)(t)}`).join(", ")}}`}function Bp(t){return e=>Op(e,t)}var Tp=[{format:{alpha:!1,mode:"rgb",notation:"hex",type:"int"},stringifier:Lp},{format:{alpha:!0,mode:"rgb",notation:"hex",type:"int"},stringifier:Mp},{format:{alpha:!1,mode:"rgb",notation:"func",type:"int"},stringifier:Sp},{format:{alpha:!0,mode:"rgb",notation:"func",type:"int"},stringifier:jp},{format:{alpha:!1,mode:"hsl",notation:"func",type:"int"},stringifier:function(t){const e=[ro(0),ll,ll];return`hsl(${Il(sp(t,"int").getComponents("hsl")).map((t,i)=>e[i](t)).join(", ")})`}},{format:{alpha:!0,mode:"hsl",notation:"func",type:"int"},stringifier:function(t){const e=[ro(0),ll,ll,ro(2)];return`hsla(${sp(t,"int").getComponents("hsl").map((t,i)=>e[i](t)).join(", ")})`}},...["int","float"].reduce((t,e)=>[...t,{format:{alpha:!1,mode:"rgb",notation:"object",type:e},stringifier:Ap(e)},{format:{alpha:!0,mode:"rgb",notation:"object",type:e},stringifier:Bp(e)}],[])];function zp(t){return Tp.reduce((e,i)=>{return e||(n=i.format,s=t,n.alpha===s.alpha&&n.mode===s.mode&&n.notation===s.notation&&n.type===s.type?i.stringifier:null);var n,s},null)}var Rp=$o("apl"),Np=class{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.value=e.value,this.value.emitter.on("change",this.onValueChange_),this.element=t.createElement("div"),this.element.classList.add(Rp()),e.viewProps.bindClassModifiers(this.element),e.viewProps.bindTabIndex(this.element);const i=t.createElement("div");i.classList.add(Rp("b")),this.element.appendChild(i);const n=t.createElement("div");n.classList.add(Rp("c")),i.appendChild(n),this.colorElem_=n;const s=t.createElement("div");s.classList.add(Rp("m")),this.element.appendChild(s),this.markerElem_=s;const r=t.createElement("div");r.classList.add(Rp("p")),this.markerElem_.appendChild(r),this.previewElem_=r,this.update_()}update_(){const t=this.value.rawValue,e=t.getComponents("rgb"),i=new Yl([e[0],e[1],e[2],0],"rgb"),n=new Yl([e[0],e[1],e[2],255],"rgb"),s=["to right",jp(i),jp(n)];this.colorElem_.style.background=`linear-gradient(${s.join(",")})`,this.previewElem_.style.backgroundColor=jp(t);const r=oo(e[3],0,1,0,100);this.markerElem_.style.left=`${r}%`}onValueChange_(){this.update_()}},Kp=class{constructor(t,e){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.view=new Np(t,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new gl(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(t,e){if(!t.point)return;const i=t.point.x/t.bounds.width,[n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new Yl([n,s,r,i],"hsv"),e)}onPointerDown_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerMove_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerUp_(t){this.handlePointerEvent_(t.data,{forceEmit:!0,last:!0})}onKeyDown_(t){const e=dl(Zl(!0),vl(t));if(0===e)return;const[i,n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new Yl([i,n,s,r+e],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(t){0!==dl(Zl(!0),vl(t))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}},Ip=$o("coltxt"),Up=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Ip()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(Ip("m")),this.modeElem_=function(t){const e=t.createElement("select");return e.appendChild([{text:"RGB",value:"rgb"},{text:"HSL",value:"hsl"},{text:"HSV",value:"hsv"},{text:"HEX",value:"hex"}].reduce((e,i)=>{const n=t.createElement("option");return n.textContent=i.text,n.value=i.value,e.appendChild(n),e},t.createDocumentFragment())),e}(t),this.modeElem_.classList.add(Ip("ms")),i.appendChild(this.modeSelectElement),e.viewProps.bindDisabled(this.modeElem_);const n=t.createElement("div");n.classList.add(Ip("mm")),n.appendChild(To(t,"dropdown")),i.appendChild(n),this.element.appendChild(i);const s=t.createElement("div");s.classList.add(Ip("w")),this.element.appendChild(s),this.inputsElem_=s,this.inputViews_=e.inputViews,this.applyInputViews_(),Io(e.mode,t=>{this.modeElem_.value=t})}get modeSelectElement(){return this.modeElem_}get inputViews(){return this.inputViews_}set inputViews(t){this.inputViews_=t,this.applyInputViews_()}applyInputViews_(){No(this.inputsElem_);const t=this.element.ownerDocument;this.inputViews_.forEach(e=>{const i=t.createElement("div");i.classList.add(Ip("c")),i.appendChild(e.element),this.inputsElem_.appendChild(i)})}};function Fp(t,e,i){const n=$l(t,e)[i];return new Nr({min:0,max:n})}var $p=class{constructor(t,e){this.onModeSelectChange_=this.onModeSelectChange_.bind(this),this.colorType_=e.colorType,this.value=e.value,this.viewProps=e.viewProps,this.colorMode=zr(this.value.rawValue.mode),this.ccs_=this.createComponentControllers_(t),this.view=new Up(t,{mode:this.colorMode,inputViews:[this.ccs_[0].view,this.ccs_[1].view,this.ccs_[2].view],viewProps:this.viewProps}),this.view.modeSelectElement.addEventListener("change",this.onModeSelectChange_)}createComponentControllers_(t){const e=this.colorMode.rawValue;return function(t){return"hex"!==t}(e)?function(t,e){const i={colorMode:e.colorMode,colorType:e.colorType,parser:no,viewProps:e.viewProps};return[0,1,2].map(n=>{const s=function(t,e,i){return new fl(t,{arrayPosition:0===i?"fst":2===i?"lst":"mid",parser:e.parser,props:Rr.fromObject({formatter:(n=e.colorType,ro("float"===n?2:0)),keyScale:Zl(!1),pointerScale:"float"===e.colorType?.01:1}),value:zr(0,{constraint:Fp(e.colorMode,e.colorType,i)}),viewProps:e.viewProps});var n}(t,i,n);return cl({primary:e.value,secondary:s.value,forward:t=>sp(t,e.colorType).getComponents(e.colorMode)[n],backward(t,i){const s=e.colorMode,r=sp(t,e.colorType).getComponents(s);return r[n]=i,sp(np(Ul(Il(r),r[3]),s,e.colorType),"int")}}),s})}(t,{colorMode:e,colorType:this.colorType_,value:this.value,viewProps:this.viewProps}):function(t,e){const i=new sl(t,{parser:Ep("int"),props:Rr.fromObject({formatter:Lp}),value:zr(Yl.black()),viewProps:e.viewProps});return cl({primary:e.value,secondary:i.value,forward:t=>new Yl(Il(t.getComponents()),t.mode),backward:(t,e)=>new Yl(Ul(Il(e.getComponents(t.mode)),t.getComponents()[3]),t.mode)}),[i]}(t,{value:this.value,viewProps:this.viewProps})}onModeSelectChange_(t){const e=t.currentTarget;this.colorMode.rawValue=e.value,this.ccs_=this.createComponentControllers_(this.view.element.ownerDocument),this.view.inputViews=this.ccs_.map(t=>t.view)}},qp=$o("hpl"),Hp=class{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.value=e.value,this.value.emitter.on("change",this.onValueChange_),this.element=t.createElement("div"),this.element.classList.add(qp()),e.viewProps.bindClassModifiers(this.element),e.viewProps.bindTabIndex(this.element);const i=t.createElement("div");i.classList.add(qp("c")),this.element.appendChild(i);const n=t.createElement("div");n.classList.add(qp("m")),this.element.appendChild(n),this.markerElem_=n,this.update_()}update_(){const[t]=this.value.rawValue.getComponents("hsv");this.markerElem_.style.backgroundColor=Sp(new Yl([t,100,100],"hsv"));const e=oo(t,0,360,0,100);this.markerElem_.style.left=`${e}%`}onValueChange_(){this.update_()}},Gp=class{constructor(t,e){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.view=new Hp(t,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new gl(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(t,e){if(!t.point)return;const i=oo(lo(t.point.x,0,t.bounds.width),0,t.bounds.width,0,360),[,n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new Yl([i,n,s,r],"hsv"),e)}onPointerDown_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerMove_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerUp_(t){this.handlePointerEvent_(t.data,{forceEmit:!0,last:!0})}onKeyDown_(t){const e=dl(Zl(!1),vl(t));if(0===e)return;const[i,n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new Yl([i+e,n,s,r],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(t){0!==dl(Zl(!1),vl(t))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}},Yp=$o("svp"),Xp=class{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.value=e.value,this.value.emitter.on("change",this.onValueChange_),this.element=t.createElement("div"),this.element.classList.add(Yp()),e.viewProps.bindClassModifiers(this.element),e.viewProps.bindTabIndex(this.element);const i=t.createElement("canvas");i.height=64,i.width=64,i.classList.add(Yp("c")),this.element.appendChild(i),this.canvasElement=i;const n=t.createElement("div");n.classList.add(Yp("m")),this.element.appendChild(n),this.markerElem_=n,this.update_()}update_(){const t=function(t){const e=t.ownerDocument.defaultView;return e&&"document"in e?t.getContext("2d",{willReadFrequently:!0}):null}(this.canvasElement);if(!t)return;const e=this.value.rawValue.getComponents("hsv"),i=this.canvasElement.width,n=this.canvasElement.height,s=t.getImageData(0,0,i,n),r=s.data;for(let l=0;lt.getComponents()[3],backward:(t,e)=>{const i=t.getComponents();return i[3]=e,new Yl(i,t.mode)}}),this.textsC_=new $p(t,{colorType:e.colorType,value:this.value,viewProps:this.viewProps}),this.view=new Wl(t,{alphaViews:this.alphaIcs_?{palette:this.alphaIcs_.palette.view,text:this.alphaIcs_.text.view}:null,hPaletteView:this.hPaletteC_.view,supportsAlpha:e.supportsAlpha,svPaletteView:this.svPaletteC_.view,textsView:this.textsC_.view,viewProps:this.viewProps})}get textsController(){return this.textsC_}},Jp=$o("colsw"),Zp=class{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),e.value.emitter.on("change",this.onValueChange_),this.value=e.value,this.element=t.createElement("div"),this.element.classList.add(Jp()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(Jp("sw")),this.element.appendChild(i),this.swatchElem_=i;const n=t.createElement("button");n.classList.add(Jp("b")),e.viewProps.bindDisabled(n),this.element.appendChild(n),this.buttonElement=n,this.update_()}update_(){const t=this.value.rawValue;this.swatchElem_.style.backgroundColor=Mp(t)}onValueChange_(){this.update_()}},th=class{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.view=new Zp(t,{value:this.value,viewProps:this.viewProps})}},eh=class{constructor(t,e){this.onButtonBlur_=this.onButtonBlur_.bind(this),this.onButtonClick_=this.onButtonClick_.bind(this),this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.foldable_=_a.create(e.expanded),this.swatchC_=new th(t,{value:this.value,viewProps:this.viewProps});const i=this.swatchC_.view.buttonElement;i.addEventListener("blur",this.onButtonBlur_),i.addEventListener("click",this.onButtonClick_),this.textC_=new sl(t,{parser:e.parser,props:Rr.fromObject({formatter:e.formatter}),value:this.value,viewProps:this.viewProps}),this.view=new Nl(t,{foldable:this.foldable_,pickerLayout:e.pickerLayout}),this.view.swatchElement.appendChild(this.swatchC_.view.element),this.view.textElement.appendChild(this.textC_.view.element),this.popC_="popup"===e.pickerLayout?new el(t,{viewProps:this.viewProps}):null;const n=new Qp(t,{colorType:e.colorType,supportsAlpha:e.supportsAlpha,value:this.value,viewProps:this.viewProps});n.view.allFocusableElements.forEach(t=>{t.addEventListener("blur",this.onPopupChildBlur_),t.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=n,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(n.view.element),cl({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:t=>t,backward:(t,e)=>e})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),xa(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onButtonBlur_(t){if(!this.popC_)return;const e=this.view.element,i=t.relatedTarget;i&&e.contains(i)||(this.popC_.shows.rawValue=!1)}onButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(t){if(!this.popC_)return;const e=this.popC_.view.element,i=Ko(t);i&&e.contains(i)||i&&i===this.swatchC_.view.buttonElement&&!Oo(e.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(t){this.popC_?"Escape"===t.key&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&"Escape"===t.key&&this.swatchC_.view.buttonElement.focus()}};function ih(t){return Il(t.getComponents("rgb")).reduce((t,e)=>t<<8|255&Math.floor(e),0)}function nh(t){return t.getComponents("rgb").reduce((t,e,i)=>t<<8|255&Math.floor(3===i?255*e:e),0)>>>0}function sh(t){return"number"!=typeof t?Yl.black():new Yl([(e=t)>>16&255,e>>8&255,255&e],"rgb");var e}function rh(t){return"number"!=typeof t?Yl.black():new Yl([(e=t)>>24&255,e>>16&255,e>>8&255,oo(255&e,0,255,0,1)],"rgb");var e}function oh(t,e){return"object"==typeof t&&!Er(t)&&e in t&&"number"==typeof t[e]}function ah(t){return oh(t,"r")&&oh(t,"g")&&oh(t,"b")}function lh(t){return ah(t)&&oh(t,"a")}function ph(t){return ah(t)}function hh(t,e){if(t.mode!==e.mode)return!1;if(t.type!==e.type)return!1;const i=t.getComponents(),n=e.getComponents();for(let s=0;st?Op(i,e):Dp(i,e)}pa({id:"input-color-number",type:"input",accept:(t,e)=>{if("number"!=typeof t)return null;if(!function(t){return"color"in t||"color"===t.view}(e))return null;const i=Jl(e);return i?{initialValue:t,params:Object.assign(Object.assign({},i),{supportsAlpha:(n=e,!!(null===(s=null==n?void 0:n.color)||void 0===s?void 0:s.alpha))})}:null;var n,s},binding:{reader:t=>t.params.supportsAlpha?rh:sh,equals:hh,writer:t=>function(t){const e=t?nh:ih;return(t,i)=>{Ol(t,e(i))}}(t.params.supportsAlpha)},controller:t=>{var e,i,n;return new eh(t.document,{colorType:"int",expanded:null!==(e=t.params.expanded)&&void 0!==e&&e,formatter:(n=t.params.supportsAlpha,n?t=>Mp(t,"0x"):t=>Lp(t,"0x")),parser:Ep("int"),pickerLayout:null!==(i=t.params.picker)&&void 0!==i?i:"popup",supportsAlpha:t.params.supportsAlpha,value:t.value,viewProps:t.viewProps})}}),pa({id:"input-color-object",type:"input",accept:(t,e)=>{var i;if(!ph(t))return null;const n=Jl(e);return n?{initialValue:t,params:Object.assign(Object.assign({},n),{colorType:null!==(i=tp(e))&&void 0!==i?i:"int"})}:null},binding:{reader:t=>{return e=t.params.colorType,t=>sp(function(t,e){return ph(t)?"int"===e?new Yl(ch(t),"rgb"):"float"===e?new ep(ch(t),"rgb"):sp(Yl.black(),"int"):sp(Yl.black(),e)}(t,e),"int");var e},equals:hh,writer:t=>{return e=lh(t.initialValue),i=t.params.colorType,(t,n)=>{e?function(t,e,i){const n=sp(e,i).toRgbaObject();t.writeProperty("r",n.r),t.writeProperty("g",n.g),t.writeProperty("b",n.b),t.writeProperty("a",n.a)}(t,n,i):function(t,e,i){const n=sp(e,i).toRgbaObject();t.writeProperty("r",n.r),t.writeProperty("g",n.g),t.writeProperty("b",n.b)}(t,n,i)};var e,i}},controller:t=>{var e,i;const n=lh(t.initialValue);return new eh(t.document,{colorType:t.params.colorType,expanded:null!==(e=t.params.expanded)&&void 0!==e&&e,formatter:dh(n,t.params.colorType),parser:Ep("int"),pickerLayout:null!==(i=t.params.picker)&&void 0!==i?i:"popup",supportsAlpha:n,value:t.value,viewProps:t.viewProps})}}),pa({id:"input-color-string",type:"input",accept:(t,e)=>{if("string"!=typeof t)return null;if("text"===e.view)return null;const i=function(t,e="int"){const i=function(t){return Pp.reduce((e,{parser:i,result:n})=>e||(i(t)?n:null),null)}(t);return i?"hex"===i.notation&&"float"!==e?Object.assign(Object.assign({},i),{type:"int"}):"func"===i.notation?Object.assign(Object.assign({},i),{type:e}):null:null}(t,tp(e));if(!i)return null;const n=zp(i);if(!n)return null;const s=Jl(e);return s?{initialValue:t,params:Object.assign(Object.assign({},s),{format:i,stringifier:n})}:null},binding:{reader:()=>kp,equals:hh,writer:t=>{const e=function(t){const e=zp(t);return e?(t,i)=>{Ol(t,e(i))}:null}(t.params.format);if(!e)throw jr.notBindable();return e}},controller:t=>{var e,i;return new eh(t.document,{colorType:t.params.format.type,expanded:null!==(e=t.params.expanded)&&void 0!==e&&e,formatter:t.params.stringifier,parser:Ep("int"),pickerLayout:null!==(i=t.params.picker)&&void 0!==i?i:"popup",supportsAlpha:t.params.format.alpha,value:t.value,viewProps:t.viewProps})}});var uh=class{constructor(t){this.components=t.components,this.asm_=t.assembly}constrain(t){const e=this.asm_.toComponents(t).map((t,e)=>{var i,n;return null!==(n=null===(i=this.components[e])||void 0===i?void 0:i.constrain(t))&&void 0!==n?n:t});return this.asm_.fromComponents(e)}},vh=$o("pndtxt"),mh=class{constructor(t,e){this.textViews=e.textViews,this.element=t.createElement("div"),this.element.classList.add(vh()),this.textViews.forEach(e=>{const i=t.createElement("div");i.classList.add(vh("a")),i.appendChild(e.element),this.element.appendChild(i)})}},bh=class{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.acs_=e.axes.map((i,n)=>function(t,e,i){return new fl(t,{arrayPosition:0===i?"fst":i===e.axes.length-1?"lst":"mid",parser:e.parser,props:e.axes[i].textProps,value:zr(0,{constraint:e.axes[i].constraint}),viewProps:e.viewProps})}(t,e,n)),this.acs_.forEach((t,i)=>{cl({primary:this.value,secondary:t.value,forward:t=>e.assembly.toComponents(t)[i],backward:(t,n)=>{const s=e.assembly.toComponents(t);return s[i]=n,e.assembly.fromComponents(s)}})}),this.view=new mh(t,{textViews:this.acs_.map(t=>t.view)})}get textControllers(){return this.acs_}},gh=class extends Po{get max(){return this.controller.valueController.sliderController.props.get("max")}set max(t){this.controller.valueController.sliderController.props.set("max",t)}get min(){return this.controller.valueController.sliderController.props.get("min")}set min(t){this.controller.valueController.sliderController.props.set("min",t)}};pa({id:"input-number",type:"input",accept:(t,e)=>{if("number"!=typeof t)return null;const i=Lo(e,t=>Object.assign(Object.assign({},go(t)),{options:t.optional.custom(Ga),readonly:t.optional.constant(!1)}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>so,constraint:t=>function(t,e){const i=[],n=vo(t,e);n&&i.push(n);const s=mo(t);s&&i.push(s);const r=Xa(t.options);return r&&i.push(r),new $a(i)}(t.params,t.initialValue),writer:t=>Ol},controller:t=>{const e=t.value,i=t.constraint,n=i&&qa(i,Ha);if(n)return new Ja(t.document,{props:new Rr({options:n.values.value("options")}),value:e,viewProps:t.viewProps});const s=bo(t.params,e.rawValue),r=i&&qa(i,Nr);return r?new kl(t.document,Object.assign(Object.assign({},(o=Object.assign(Object.assign({},s),{keyScale:zr(s.keyScale),max:r.values.value("max"),min:r.values.value("min")}),{sliderProps:new Rr({keyScale:o.keyScale,max:o.max,min:o.min}),textProps:new Rr({formatter:zr(o.formatter),keyScale:o.keyScale,pointerScale:zr(o.pointerScale)})})),{parser:no,value:e,viewProps:t.viewProps})):new fl(t.document,{parser:no,props:Rr.fromObject(s),value:e,viewProps:t.viewProps});var o},api:t=>"number"!=typeof t.controller.value.rawValue?null:t.controller.valueController instanceof kl?new gh(t.controller):t.controller.valueController instanceof Ja?new Ia(t.controller):null});var wh=class{constructor(t=0,e=0){this.x=t,this.y=e}getComponents(){return[this.x,this.y]}static isObject(t){if(Er(t))return!1;const e=t.x,i=t.y;return"number"==typeof e&&"number"==typeof i}static equals(t,e){return t.x===e.x&&t.y===e.y}toObject(){return{x:this.x,y:this.y}}},_h={toComponents:t=>t.getComponents(),fromComponents:t=>new wh(...t)},fh=$o("p2d"),xh=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(fh()),e.viewProps.bindClassModifiers(this.element),Io(e.expanded,ia(this.element,fh(void 0,"expanded")));const i=t.createElement("div");i.classList.add(fh("h")),this.element.appendChild(i);const n=t.createElement("button");n.classList.add(fh("b")),n.appendChild(To(t,"p2dpad")),e.viewProps.bindDisabled(n),i.appendChild(n),this.buttonElement=n;const s=t.createElement("div");if(s.classList.add(fh("t")),i.appendChild(s),this.textElement=s,"inline"===e.pickerLayout){const e=t.createElement("div");e.classList.add(fh("p")),this.element.appendChild(e),this.pickerElement=e}else this.pickerElement=null}},Ch=$o("p2dp"),yh=class{constructor(t,e){this.onFoldableChange_=this.onFoldableChange_.bind(this),this.onPropsChange_=this.onPropsChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.props_=e.props,this.props_.emitter.on("change",this.onPropsChange_),this.element=t.createElement("div"),this.element.classList.add(Ch()),"popup"===e.layout&&this.element.classList.add(Ch(void 0,"p")),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(Ch("p")),e.viewProps.bindTabIndex(i),this.element.appendChild(i),this.padElement=i;const n=t.createElementNS(Do,"svg");n.classList.add(Ch("g")),this.padElement.appendChild(n),this.svgElem_=n;const s=t.createElementNS(Do,"line");s.classList.add(Ch("ax")),s.setAttributeNS(null,"x1","0"),s.setAttributeNS(null,"y1","50%"),s.setAttributeNS(null,"x2","100%"),s.setAttributeNS(null,"y2","50%"),this.svgElem_.appendChild(s);const r=t.createElementNS(Do,"line");r.classList.add(Ch("ax")),r.setAttributeNS(null,"x1","50%"),r.setAttributeNS(null,"y1","0"),r.setAttributeNS(null,"x2","50%"),r.setAttributeNS(null,"y2","100%"),this.svgElem_.appendChild(r);const o=t.createElementNS(Do,"line");o.classList.add(Ch("l")),o.setAttributeNS(null,"x1","50%"),o.setAttributeNS(null,"y1","50%"),this.svgElem_.appendChild(o),this.lineElem_=o;const a=t.createElement("div");a.classList.add(Ch("m")),this.padElement.appendChild(a),this.markerElem_=a,e.value.emitter.on("change",this.onValueChange_),this.value=e.value,this.update_()}get allFocusableElements(){return[this.padElement]}update_(){const[t,e]=this.value.rawValue.getComponents(),i=this.props_.get("max"),n=oo(t,-i,+i,0,100),s=oo(e,-i,+i,0,100),r=this.props_.get("invertsY")?100-s:s;this.lineElem_.setAttributeNS(null,"x2",`${n}%`),this.lineElem_.setAttributeNS(null,"y2",`${r}%`),this.markerElem_.style.left=`${n}%`,this.markerElem_.style.top=`${r}%`}onValueChange_(){this.update_()}onPropsChange_(){this.update_()}onFoldableChange_(){this.update_()}};function Ph(t,e,i){return[dl(e[0],vl(t)),dl(e[1],ul(t))*(i?1:-1)]}var Eh=class{constructor(t,e){this.onPadKeyDown_=this.onPadKeyDown_.bind(this),this.onPadKeyUp_=this.onPadKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.props=e.props,this.value=e.value,this.viewProps=e.viewProps,this.view=new yh(t,{layout:e.layout,props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new gl(this.view.padElement),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.padElement.addEventListener("keydown",this.onPadKeyDown_),this.view.padElement.addEventListener("keyup",this.onPadKeyUp_)}handlePointerEvent_(t,e){if(!t.point)return;const i=this.props.get("max"),n=oo(t.point.x,0,t.bounds.width,-i,+i),s=oo(this.props.get("invertsY")?t.bounds.height-t.point.y:t.point.y,0,t.bounds.height,-i,+i);this.value.setRawValue(new wh(n,s),e)}onPointerDown_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerMove_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerUp_(t){this.handlePointerEvent_(t.data,{forceEmit:!0,last:!0})}onPadKeyDown_(t){ml(t.key)&&t.preventDefault();const[e,i]=Ph(t,[this.props.get("xKeyScale"),this.props.get("yKeyScale")],this.props.get("invertsY"));0===e&&0===i||this.value.setRawValue(new wh(this.value.rawValue.x+e,this.value.rawValue.y+i),{forceEmit:!1,last:!1})}onPadKeyUp_(t){const[e,i]=Ph(t,[this.props.get("xKeyScale"),this.props.get("yKeyScale")],this.props.get("invertsY"));0===e&&0===i||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}},kh=class{constructor(t,e){var i,n;this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.onPadButtonBlur_=this.onPadButtonBlur_.bind(this),this.onPadButtonClick_=this.onPadButtonClick_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.foldable_=_a.create(e.expanded),this.popC_="popup"===e.pickerLayout?new el(t,{viewProps:this.viewProps}):null;const s=new Eh(t,{layout:e.pickerLayout,props:new Rr({invertsY:zr(e.invertsY),max:zr(e.max),xKeyScale:e.axes[0].textProps.value("keyScale"),yKeyScale:e.axes[1].textProps.value("keyScale")}),value:this.value,viewProps:this.viewProps});s.view.allFocusableElements.forEach(t=>{t.addEventListener("blur",this.onPopupChildBlur_),t.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=s,this.textC_=new bh(t,{assembly:_h,axes:e.axes,parser:e.parser,value:this.value,viewProps:this.viewProps}),this.view=new xh(t,{expanded:this.foldable_.value("expanded"),pickerLayout:e.pickerLayout,viewProps:this.viewProps}),this.view.textElement.appendChild(this.textC_.view.element),null===(i=this.view.buttonElement)||void 0===i||i.addEventListener("blur",this.onPadButtonBlur_),null===(n=this.view.buttonElement)||void 0===n||n.addEventListener("click",this.onPadButtonClick_),this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),cl({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:t=>t,backward:(t,e)=>e})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),xa(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onPadButtonBlur_(t){if(!this.popC_)return;const e=this.view.element,i=t.relatedTarget;i&&e.contains(i)||(this.popC_.shows.rawValue=!1)}onPadButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(t){if(!this.popC_)return;const e=this.popC_.view.element,i=Ko(t);i&&e.contains(i)||i&&i===this.view.buttonElement&&!Oo(e.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(t){this.popC_?"Escape"===t.key&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&"Escape"===t.key&&this.view.buttonElement.focus()}};function Vh(t){return wh.isObject(t)?new wh(t.x,t.y):new wh}function Lh(t,e){t.writeProperty("x",e.x),t.writeProperty("y",e.y)}function Mh(t,e){var i,n;if(!Er(t.min)||!Er(t.max))return Math.max(Math.abs(null!==(i=t.min)&&void 0!==i?i:0),Math.abs(null!==(n=t.max)&&void 0!==n?n:0));const s=co(t);return Math.max(10*Math.abs(s),10*Math.abs(e))}function Sh(t,e){var i,n;const s=Mh(Mr(t,null!==(i=t.x)&&void 0!==i?i:{}),e.x),r=Mh(Mr(t,null!==(n=t.y)&&void 0!==n?n:{}),e.y);return Math.max(s,r)}function jh(t){if(!("y"in t))return!1;const e=t.y;return!!e&&"inverted"in e&&!!e.inverted}pa({id:"input-point2d",type:"input",accept:(t,e)=>{if(!wh.isObject(t))return null;const i=Lo(e,t=>Object.assign(Object.assign({},Sl(t)),{expanded:t.optional.boolean,picker:t.optional.custom(Al),readonly:t.optional.constant(!1),x:t.optional.custom(jl),y:t.optional.object(Object.assign(Object.assign({},Sl(t)),{inverted:t.optional.boolean}))}));return i?{initialValue:t,params:i}:null},binding:{reader:()=>Vh,constraint:t=>{return e=t.params,i=t.initialValue,new uh({assembly:_h,components:[Dl(Object.assign(Object.assign({},e),e.x),i.x),Dl(Object.assign(Object.assign({},e),e.y),i.y)]});var e,i},equals:wh.equals,writer:()=>Lh},controller:t=>{var e,i;const n=t.document,s=t.value,r=t.constraint,o=[t.params.x,t.params.y];return new kh(n,{axes:s.rawValue.getComponents().map((e,i)=>{var n;return wo({constraint:r.components[i],initialValue:e,params:Mr(t.params,null!==(n=o[i])&&void 0!==n?n:{})})}),expanded:null!==(e=t.params.expanded)&&void 0!==e&&e,invertsY:jh(t.params),max:Sh(t.params,s.rawValue),parser:no,pickerLayout:null!==(i=t.params.picker)&&void 0!==i?i:"popup",value:s,viewProps:t.viewProps})}});var Dh=class{constructor(t=0,e=0,i=0){this.x=t,this.y=e,this.z=i}getComponents(){return[this.x,this.y,this.z]}static isObject(t){if(Er(t))return!1;const e=t.x,i=t.y,n=t.z;return"number"==typeof e&&"number"==typeof i&&"number"==typeof n}static equals(t,e){return t.x===e.x&&t.y===e.y&&t.z===e.z}toObject(){return{x:this.x,y:this.y,z:this.z}}},Ah={toComponents:t=>t.getComponents(),fromComponents:t=>new Dh(...t)};function Oh(t){return Dh.isObject(t)?new Dh(t.x,t.y,t.z):new Dh}function Bh(t,e){t.writeProperty("x",e.x),t.writeProperty("y",e.y),t.writeProperty("z",e.z)}pa({id:"input-point3d",type:"input",accept:(t,e)=>{if(!Dh.isObject(t))return null;const i=Lo(e,t=>Object.assign(Object.assign({},Sl(t)),{readonly:t.optional.constant(!1),x:t.optional.custom(jl),y:t.optional.custom(jl),z:t.optional.custom(jl)}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>Oh,constraint:t=>{return e=t.params,i=t.initialValue,new uh({assembly:Ah,components:[Dl(Object.assign(Object.assign({},e),e.x),i.x),Dl(Object.assign(Object.assign({},e),e.y),i.y),Dl(Object.assign(Object.assign({},e),e.z),i.z)]});var e,i},equals:Dh.equals,writer:t=>Bh},controller:t=>{const e=t.value,i=t.constraint,n=[t.params.x,t.params.y,t.params.z];return new bh(t.document,{assembly:Ah,axes:e.rawValue.getComponents().map((e,s)=>{var r;return wo({constraint:i.components[s],initialValue:e,params:Mr(t.params,null!==(r=n[s])&&void 0!==r?r:{})})}),parser:no,value:e,viewProps:t.viewProps})}});var Th=class{constructor(t=0,e=0,i=0,n=0){this.x=t,this.y=e,this.z=i,this.w=n}getComponents(){return[this.x,this.y,this.z,this.w]}static isObject(t){if(Er(t))return!1;const e=t.x,i=t.y,n=t.z,s=t.w;return"number"==typeof e&&"number"==typeof i&&"number"==typeof n&&"number"==typeof s}static equals(t,e){return t.x===e.x&&t.y===e.y&&t.z===e.z&&t.w===e.w}toObject(){return{x:this.x,y:this.y,z:this.z,w:this.w}}},zh={toComponents:t=>t.getComponents(),fromComponents:t=>new Th(...t)};function Rh(t){return Th.isObject(t)?new Th(t.x,t.y,t.z,t.w):new Th}function Nh(t,e){t.writeProperty("x",e.x),t.writeProperty("y",e.y),t.writeProperty("z",e.z),t.writeProperty("w",e.w)}pa({id:"input-point4d",type:"input",accept:(t,e)=>{if(!Th.isObject(t))return null;const i=Lo(e,t=>Object.assign(Object.assign({},Sl(t)),{readonly:t.optional.constant(!1),w:t.optional.custom(jl),x:t.optional.custom(jl),y:t.optional.custom(jl),z:t.optional.custom(jl)}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>Rh,constraint:t=>{return e=t.params,i=t.initialValue,new uh({assembly:zh,components:[Dl(Object.assign(Object.assign({},e),e.x),i.x),Dl(Object.assign(Object.assign({},e),e.y),i.y),Dl(Object.assign(Object.assign({},e),e.z),i.z),Dl(Object.assign(Object.assign({},e),e.w),i.w)]});var e,i},equals:Th.equals,writer:t=>Nh},controller:t=>{const e=t.value,i=t.constraint,n=[t.params.x,t.params.y,t.params.z,t.params.w];return new bh(t.document,{assembly:zh,axes:e.rawValue.getComponents().map((e,s)=>{var r;return wo({constraint:i.components[s],initialValue:e,params:Mr(t.params,null!==(r=n[s])&&void 0!==r?r:{})})}),parser:no,value:e,viewProps:t.viewProps})}}),pa({id:"input-string",type:"input",accept:(t,e)=>{if("string"!=typeof t)return null;const i=Lo(e,t=>({readonly:t.optional.constant(!1),options:t.optional.custom(Ga)}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>pl,constraint:t=>function(t){const e=[],i=Xa(t.options);return i&&e.push(i),new $a(e)}(t.params),writer:t=>Ol},controller:t=>{const e=t.document,i=t.value,n=t.constraint,s=n&&qa(n,Ha);return s?new Ja(e,{props:new Rr({options:s.values.value("options")}),value:i,viewProps:t.viewProps}):new sl(e,{parser:t=>t,props:Rr.fromObject({formatter:hl}),value:i,viewProps:t.viewProps})},api:t=>"string"!=typeof t.controller.value.rawValue?null:t.controller.valueController instanceof Ja?new Ia(t.controller):null});var Kh=200,Ih=3,Uh=$o("mll"),Fh=class{constructor(t,e){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=e.formatter,this.element=t.createElement("div"),this.element.classList.add(Uh()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("textarea");i.classList.add(Uh("i")),i.style.height=`calc(var(${Ll("containerUnitSize")}) * ${e.rows})`,i.readOnly=!0,e.viewProps.bindDisabled(i),this.element.appendChild(i),this.textareaElem_=i,e.value.emitter.on("change",this.onValueUpdate_),this.value=e.value,this.update_()}update_(){const t=this.textareaElem_,e=t.scrollTop===t.scrollHeight-t.clientHeight,i=[];this.value.rawValue.forEach(t=>{void 0!==t&&i.push(this.formatter_(t))}),t.textContent=i.join("\n"),e&&(t.scrollTop=t.scrollHeight)}onValueUpdate_(){this.update_()}},$h=class{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.view=new Fh(t,{formatter:e.formatter,rows:e.rows,value:this.value,viewProps:this.viewProps})}},qh=$o("sgl"),Hh=class{constructor(t,e){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=e.formatter,this.element=t.createElement("div"),this.element.classList.add(qh()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("input");i.classList.add(qh("i")),i.readOnly=!0,i.type="text",e.viewProps.bindDisabled(i),this.element.appendChild(i),this.inputElement=i,e.value.emitter.on("change",this.onValueUpdate_),this.value=e.value,this.update_()}update_(){const t=this.value.rawValue,e=t[t.length-1];this.inputElement.value=void 0!==e?this.formatter_(e):""}onValueUpdate_(){this.update_()}},Gh=class{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.view=new Hh(t,{formatter:e.formatter,value:this.value,viewProps:this.viewProps})}};pa({id:"monitor-bool",type:"monitor",accept:(t,e)=>{if("boolean"!=typeof t)return null;const i=Lo(e,t=>({readonly:t.required.constant(!0),rows:t.optional.number}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>rl},controller:t=>{var e;return 1===t.value.rawValue.length?new Gh(t.document,{formatter:ol,value:t.value,viewProps:t.viewProps}):new $h(t.document,{formatter:ol,rows:null!==(e=t.params.rows)&&void 0!==e?e:Ih,value:t.value,viewProps:t.viewProps})}});var Yh=class extends Po{get max(){return this.controller.valueController.props.get("max")}set max(t){this.controller.valueController.props.set("max",t)}get min(){return this.controller.valueController.props.get("min")}set min(t){this.controller.valueController.props.set("min",t)}},Xh=$o("grl"),Wh=class{constructor(t,e){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=t.createElement("div"),this.element.classList.add(Xh()),e.viewProps.bindClassModifiers(this.element),this.formatter_=e.formatter,this.props_=e.props,this.cursor_=e.cursor,this.cursor_.emitter.on("change",this.onCursorChange_);const i=t.createElementNS(Do,"svg");i.classList.add(Xh("g")),i.style.height=`calc(var(${Ll("containerUnitSize")}) * ${e.rows})`,this.element.appendChild(i),this.svgElem_=i;const n=t.createElementNS(Do,"polyline");this.svgElem_.appendChild(n),this.lineElem_=n;const s=t.createElement("div");s.classList.add(Xh("t"),$o("tt")()),this.element.appendChild(s),this.tooltipElem_=s,e.value.emitter.on("change",this.onValueUpdate_),this.value=e.value,this.update_()}get graphElement(){return this.svgElem_}update_(){const t=this.svgElem_.getBoundingClientRect(),e=this.value.rawValue.length-1,i=this.props_.get("min"),n=this.props_.get("max"),s=[];this.value.rawValue.forEach((r,o)=>{if(void 0===r)return;const a=oo(o,0,e,0,t.width),l=oo(r,i,n,t.height,0);s.push([a,l].join(","))}),this.lineElem_.setAttributeNS(null,"points",s.join(" "));const r=this.tooltipElem_,o=this.value.rawValue[this.cursor_.rawValue];if(void 0===o)return void r.classList.remove(Xh("t","a"));const a=oo(this.cursor_.rawValue,0,e,0,t.width),l=oo(o,i,n,t.height,0);r.style.left=`${a}px`,r.style.top=`${l}px`,r.textContent=`${this.formatter_(o)}`,r.classList.contains(Xh("t","a"))||(r.classList.add(Xh("t","a"),Xh("t","in")),Ao(r),r.classList.remove(Xh("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}},Qh=class{constructor(t,e){if(this.onGraphMouseMove_=this.onGraphMouseMove_.bind(this),this.onGraphMouseLeave_=this.onGraphMouseLeave_.bind(this),this.onGraphPointerDown_=this.onGraphPointerDown_.bind(this),this.onGraphPointerMove_=this.onGraphPointerMove_.bind(this),this.onGraphPointerUp_=this.onGraphPointerUp_.bind(this),this.props=e.props,this.value=e.value,this.viewProps=e.viewProps,this.cursor_=zr(-1),this.view=new Wh(t,{cursor:this.cursor_,formatter:e.formatter,rows:e.rows,props:this.props,value:this.value,viewProps:this.viewProps}),Oo(t)){const t=new gl(this.view.element);t.emitter.on("down",this.onGraphPointerDown_),t.emitter.on("move",this.onGraphPointerMove_),t.emitter.on("up",this.onGraphPointerUp_)}else this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_)}importProps(t){return Mo(t,null,t=>({max:t.required.number,min:t.required.number}),t=>(this.props.set("max",t.max),this.props.set("min",t.min),!0))}exportProps(){return So(null,{max:this.props.get("max"),min:this.props.get("min")})}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(t){const e=this.view.element.getBoundingClientRect();this.cursor_.rawValue=Math.floor(oo(t.offsetX,0,e.width,0,this.value.rawValue.length))}onGraphPointerDown_(t){this.onGraphPointerMove_(t)}onGraphPointerMove_(t){t.data.point?this.cursor_.rawValue=Math.floor(oo(t.data.point.x,0,t.data.bounds.width,0,this.value.rawValue.length)):this.cursor_.rawValue=-1}onGraphPointerUp_(){this.cursor_.rawValue=-1}};function Jh(t){return Er(t.format)?ro(2):t.format}function Zh(t){return"graph"===t.view}pa({id:"monitor-number",type:"monitor",accept:(t,e)=>{if("number"!=typeof t)return null;const i=Lo(e,t=>({format:t.optional.function,max:t.optional.number,min:t.optional.number,readonly:t.required.constant(!0),rows:t.optional.number,view:t.optional.string}));return i?{initialValue:t,params:i}:null},binding:{defaultBufferSize:t=>Zh(t)?64:1,reader:t=>so},controller:t=>Zh(t.params)?function(t){var e,i,n;return new Qh(t.document,{formatter:Jh(t.params),rows:null!==(e=t.params.rows)&&void 0!==e?e:Ih,props:Rr.fromObject({max:null!==(i=t.params.max)&&void 0!==i?i:100,min:null!==(n=t.params.min)&&void 0!==n?n:0}),value:t.value,viewProps:t.viewProps})}(t):function(t){var e;return 1===t.value.rawValue.length?new Gh(t.document,{formatter:Jh(t.params),value:t.value,viewProps:t.viewProps}):new $h(t.document,{formatter:Jh(t.params),rows:null!==(e=t.params.rows)&&void 0!==e?e:Ih,value:t.value,viewProps:t.viewProps})}(t),api:t=>t.controller.valueController instanceof Qh?new Yh(t.controller):null}),pa({id:"monitor-string",type:"monitor",accept:(t,e)=>{if("string"!=typeof t)return null;const i=Lo(e,t=>({multiline:t.optional.boolean,readonly:t.required.constant(!0),rows:t.optional.number}));return i?{initialValue:t,params:i}:null},binding:{reader:t=>pl},controller:t=>{var e;const i=t.value;return i.rawValue.length>1||t.params.multiline?new $h(t.document,{formatter:hl,rows:null!==(e=t.params.rows)&&void 0!==e?e:Ih,value:i,viewProps:t.viewProps}):new Gh(t.document,{formatter:hl,value:i,viewProps:t.viewProps})}});var tc=class{constructor(t){this.controller_=t}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(t){this.controller_.viewProps.set("disabled",t)}get title(){var t;return null!==(t=this.controller_.props.get("title"))&&void 0!==t?t:""}set title(t){this.controller_.props.set("title",t)}on(t,e){const i=e.bind(this);return this.controller_.emitter.on(t,()=>{i(new fo(this))}),this}},ec=class extends fo{constructor(t,e,i){super(t),this.cell=e,this.index=i}},ic=class extends _o{constructor(t){super(t),this.cellToApiMap_=new Map,this.emitter_=new Ar;const e=this.controller.valueController;e.cellControllers.forEach((t,i)=>{const n=new tc(t);this.cellToApiMap_.set(t,n),t.emitter.on("click",()=>{const t=i%e.size[0],s=Math.floor(i/e.size[0]);this.emitter_.emit("click",{event:new ec(this,n,[t,s])})})})}cell(t,e){const i=this.controller.valueController,n=i.cellControllers[e*i.size[0]+t];return this.cellToApiMap_.get(n)}on(t,e){const i=e.bind(this);return this.emitter_.on(t,t=>{i(t.event)}),this}},nc=class{constructor(t,e){this.size=e.size;const[i,n]=this.size,s=[];for(let r=0;r{this.cellCs_.forEach(t=>{t.viewProps.set("disposed",!0)})}),this.view=new Ml(t,{viewProps:this.viewProps,viewName:"btngrid"}),this.view.element.style.gridTemplateColumns=`repeat(${i}, 1fr)`,this.cellCs_.forEach(t=>{this.view.element.appendChild(t.view.element)})}get cellControllers(){return this.cellCs_}},sc=class extends Wo{constructor(t,e){const i=e.valueController,n=new Go(t,{blade:e.blade,props:e.labelProps,valueController:i});super({blade:e.blade,view:n.view,viewProps:i.viewProps}),this.valueController=i,this.labelController=n}},rc=pa({id:"buttongrid",type:"blade",accept(t){const e=Lo(t,t=>({cells:t.required.function,size:t.required.array(t.required.number),view:t.required.constant("buttongrid"),label:t.optional.string}));return e?{params:e}:null},controller:t=>new sc(t.document,{blade:t.blade,labelProps:Rr.fromObject({label:t.params.label}),valueController:new nc(t.document,{cellConfig:t.params.cells,size:t.params.size})}),api:t=>t.controller instanceof sc?new ic(t.controller):null}),oc=class extends _o{get label(){return this.controller.labelController.props.get("label")}set label(t){this.controller.labelController.props.set("label",t)}get value(){return this.controller.valueController.value.rawValue}set value(t){this.controller.valueController.value.rawValue=t}on(t,e){const i=e.bind(this);return this.controller.valueController.value.emitter.on(t,t=>{i(new xo(this,t.rawValue,t.options.last))}),this}};function ac(t,e,i){return t*(1-i)+e*i}function lc(t,e){let i=.25,n=.5,s=-1;for(let r=0;r<20;r++){const[r,o]=t.curve(n);if(n+=i*(rt.toObject(),fromComponents:t=>new pc(...t)};function cc(t){const e=ro(2);return`cubic-bezier(${t.toObject().map(t=>e(t)).join(", ")})`}var dc=[0,.5,.5,1];function uc(t){const e=t.match(/^cubic-bezier\s*\(\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)\s*\)$/);if(!e)return new pc(...dc);const i=[e[1],e[2],e[3],e[4]].reduce((t,e)=>{if(!t)return null;const i=Number(e);return isNaN(i)?null:[...t,i]},[]);return new pc(...null!=i?i:dc)}var vc=$o("cbz"),mc=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(vc()),e.viewProps.bindClassModifiers(this.element),e.foldable.bindExpandedClass(this.element,vc(void 0,"expanded")),Uo(e.foldable,"completed",ia(this.element,vc(void 0,"cpl")));const i=t.createElement("div");i.classList.add(vc("h")),this.element.appendChild(i);const n=t.createElement("button");n.classList.add(vc("b")),e.viewProps.bindDisabled(n);const s=t.createElementNS(Do,"svg");s.innerHTML='',n.appendChild(s),i.appendChild(n),this.buttonElement=n;const r=t.createElement("div");if(r.classList.add(vc("t")),i.appendChild(r),this.textElement=r,"inline"===e.pickerLayout){const e=t.createElement("div");e.classList.add(vc("p")),this.element.appendChild(e),this.pickerElement=e}else this.pickerElement=null}},bc=$o("cbzp"),gc=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(bc()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("div");i.classList.add(bc("g")),this.element.appendChild(i),this.graphElement=i;const n=t.createElement("div");n.classList.add(bc("t")),this.element.appendChild(n),this.textElement=n}};function wc(t,e){const i=new MutationObserver(t=>{for(const n of t)"childList"===n.type&&n.addedNodes.forEach(t=>{t.contains(t)&&(e(),i.disconnect())})}),n=t.ownerDocument;i.observe(n.body,{attributes:!0,childList:!0,subtree:!0})}var _c=$o("cbzg"),fc=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(_c()),e.viewProps.bindClassModifiers(this.element),e.viewProps.bindTabIndex(this.element);const i=t.createElement("div");i.classList.add(_c("p")),this.element.appendChild(i),this.previewElement=i;const n=t.createElementNS(Do,"svg");n.classList.add(_c("g")),this.element.appendChild(n),this.svgElem_=n;const s=t.createElementNS(Do,"path");s.classList.add(_c("u")),this.svgElem_.appendChild(s),this.guideElem_=s;const r=t.createElementNS(Do,"polyline");r.classList.add(_c("l")),this.svgElem_.appendChild(r),this.lineElem_=r,this.handleElems_=[t.createElement("div"),t.createElement("div")],this.handleElems_.forEach(t=>{t.classList.add(_c("h")),this.element.appendChild(t)}),this.vectorElems_=[t.createElementNS(Do,"line"),t.createElementNS(Do,"line")],this.vectorElems_.forEach(t=>{t.classList.add(_c("v")),this.svgElem_.appendChild(t)}),this.value_=e.value,this.value_.emitter.on("change",this.onValueChange_.bind(this)),this.sel_=e.selection,this.handleElems_.forEach((t,e)=>{var i,n;Io(this.sel_,(i=t=>t===e,n=ia(t,_c("h","sel")),t=>n(i(t))))}),wc(this.element,()=>{this.refresh()})}getVertMargin_(t){return.25*t}valueToPosition(t,e){const{clientWidth:i,clientHeight:n}=this.element,s=this.getVertMargin_(n);return{x:oo(t,0,1,0,i),y:oo(e,0,1,n-s,s)}}positionToValue(t,e){const i=this.element.getBoundingClientRect(),n=i.width,s=i.height,r=this.getVertMargin_(s);return{x:lo(oo(t,0,n,0,1),0,1),y:oo(e,s-r,r,0,1)}}refresh(){this.guideElem_.setAttributeNS(null,"d",[0,1].map(t=>{const e=this.valueToPosition(0,t),i=this.valueToPosition(1,t);return[`M ${e.x},${e.y}`,`L ${i.x},${i.y}`].join(" ")}).join(" "));const t=this.value_.rawValue,e=[];let i=0;for(;;){const n=this.valueToPosition(...t.curve(i));if(e.push([n.x,n.y].join(",")),i>=1)break;i=Math.min(i+.05,1)}this.lineElem_.setAttributeNS(null,"points",e.join(" "));const n=t.toObject();[0,1].forEach(t=>{const e=this.valueToPosition(t,t),i=this.valueToPosition(n[2*t],n[2*t+1]),s=this.vectorElems_[t];s.setAttributeNS(null,"x1",String(e.x)),s.setAttributeNS(null,"y1",String(e.y)),s.setAttributeNS(null,"x2",String(i.x)),s.setAttributeNS(null,"y2",String(i.y));const r=this.handleElems_[t];r.style.left=`${i.x}px`,r.style.top=`${i.y}px`})}onValueChange_(){this.refresh()}},xc=$o("cbzprv"),Cc=class{constructor(t,e){this.stopped_=!0,this.startTime_=-1,this.onDispose_=this.onDispose_.bind(this),this.onTimer_=this.onTimer_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.element=t.createElement("div"),this.element.classList.add(xc()),e.viewProps.bindClassModifiers(this.element);const i=t.createElementNS(Do,"svg");i.classList.add(xc("g")),this.element.appendChild(i),this.svgElem_=i;const n=t.createElementNS(Do,"path");n.classList.add(xc("t")),this.svgElem_.appendChild(n),this.ticksElem_=n;const s=t.createElement("div");s.classList.add(xc("m")),this.element.appendChild(s),this.markerElem_=s,this.value_=e.value,this.value_.emitter.on("change",this.onValueChange_),e.viewProps.handleDispose(this.onDispose_),wc(this.element,()=>{this.refresh()})}play(){this.stop(),this.updateMarker_(0),this.markerElem_.classList.add(xc("m","a")),this.startTime_=(new Date).getTime()+400,this.stopped_=!1,requestAnimationFrame(this.onTimer_)}stop(){this.stopped_=!0,this.markerElem_.classList.remove(xc("m","a"))}onDispose_(){this.stop()}updateMarker_(t){const e=this.value_.rawValue.y(lo(t,0,1));this.markerElem_.style.left=100*e+"%"}refresh(){const{clientWidth:t,clientHeight:e}=this.svgElem_,i=[],n=this.value_.rawValue;for(let s=0;s<24;s++){const r=oo(s,0,23,0,1),o=oo(n.y(r),0,1,0,t);i.push(`M ${o},0 v${e}`)}this.ticksElem_.setAttributeNS(null,"d",i.join(" "))}onTimer_(){if(null===this.startTime_)return;const t=(new Date).getTime()-this.startTime_,e=t/1e3;this.updateMarker_(e),t>1400&&this.stop(),this.stopped_||requestAnimationFrame(this.onTimer_)}onValueChange_(){this.refresh(),this.play()}};function yc(t,e,i,n){const s=i-t,r=n-e;return Math.sqrt(s*s+r*r)}var Pc=class{constructor(t,e){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.keyScale_=e.keyScale,this.value=e.value,this.sel_=zr(0),this.viewProps=e.viewProps,this.view=new fc(t,{selection:this.sel_,value:this.value,viewProps:this.viewProps}),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_),this.prevView_=new Cc(t,{value:this.value,viewProps:this.viewProps}),this.prevView_.element.addEventListener("mousedown",t=>{t.stopImmediatePropagation(),t.preventDefault(),this.prevView_.play()}),this.view.previewElement.appendChild(this.prevView_.element);const i=new gl(this.view.element);i.emitter.on("down",this.onPointerDown_),i.emitter.on("move",this.onPointerMove_),i.emitter.on("up",this.onPointerUp_)}refresh(){this.view.refresh(),this.prevView_.refresh(),this.prevView_.play()}updateValue_(t,e,i){const n=this.sel_.rawValue,s=this.value.rawValue.toObject(),r=this.view.positionToValue(t.x,t.y),o=e?function(t,e,i,n){const s=yc(t,e,i,n),r=Math.atan2(n-e,i-t),o=Math.round(r/(Math.PI/4))*Math.PI/4;return{x:t+Math.cos(o)*s,y:e+Math.sin(o)*s}}(n,n,r.x,r.y):r;s[2*n]=o.x,s[2*n+1]=o.y,this.value.setRawValue(new pc(...s),i)}onPointerDown_(t){const e=t.data;if(!e.point)return;const i=this.value.rawValue,n=this.view.valueToPosition(i.x1,i.y1),s=yc(e.point.x,e.point.y,n.x,n.y),r=this.view.valueToPosition(i.x2,i.y2),o=yc(e.point.x,e.point.y,r.x,r.y);this.sel_.rawValue=s<=o?0:1,this.updateValue_(e.point,t.shiftKey,{forceEmit:!1,last:!1})}onPointerMove_(t){const e=t.data;e.point&&this.updateValue_(e.point,t.shiftKey,{forceEmit:!1,last:!1})}onPointerUp_(t){const e=t.data;e.point&&this.updateValue_(e.point,t.shiftKey,{forceEmit:!0,last:!0})}onKeyDown_(t){ml(t.key)&&t.preventDefault();const e=this.sel_.rawValue,i=this.value.rawValue.toObject(),n=this.keyScale_.rawValue;i[2*e]+=dl(n,vl(t)),i[2*e+1]+=dl(n,ul(t)),this.value.setRawValue(new pc(...i),{forceEmit:!1,last:!1})}onKeyUp_(t){ml(t.key)&&t.preventDefault();const e=this.keyScale_.rawValue,i=dl(e,vl(t)),n=dl(e,ul(t));0===i&&0===n||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}},Ec=class{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.view=new gc(t,{viewProps:this.viewProps}),this.gc_=new Pc(t,{keyScale:e.axis.textProps.value("keyScale"),value:this.value,viewProps:this.viewProps}),this.view.graphElement.appendChild(this.gc_.view.element);const i=Object.assign(Object.assign({},e.axis),{constraint:new Kr({max:1,min:0})}),n=Object.assign(Object.assign({},e.axis),{constraint:void 0});this.tc_=new bh(t,{assembly:hc,axes:[i,n,i,n],parser:no,value:this.value,viewProps:this.viewProps}),this.view.textElement.appendChild(this.tc_.view.element)}get allFocusableElements(){return[this.gc_.view.element,...this.tc_.view.textViews.map(t=>t.inputElement)]}refresh(){this.gc_.refresh()}},kc=class{constructor(t,e){this.onButtonBlur_=this.onButtonBlur_.bind(this),this.onButtonClick_=this.onButtonClick_.bind(this),this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.foldable_=_a.create(e.expanded),this.view=new mc(t,{foldable:this.foldable_,pickerLayout:e.pickerLayout,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("blur",this.onButtonBlur_),this.view.buttonElement.addEventListener("click",this.onButtonClick_),this.tc_=new sl(t,{parser:uc,props:Rr.fromObject({formatter:cc}),value:this.value,viewProps:this.viewProps}),this.view.textElement.appendChild(this.tc_.view.element),this.popC_="popup"===e.pickerLayout?new el(t,{viewProps:this.viewProps}):null;const i=new Ec(t,{axis:e.axis,value:this.value,viewProps:this.viewProps});i.allFocusableElements.forEach(t=>{t.addEventListener("blur",this.onPopupChildBlur_),t.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=i,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),Io(this.popC_.shows,t=>{t&&i.refresh()}),cl({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:t=>t,backward:(t,e)=>e})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),xa(this.foldable_,this.view.pickerElement))}onButtonBlur_(t){if(!this.popC_)return;const e=t.relatedTarget;e&&this.popC_.view.element.contains(e)||(this.popC_.shows.rawValue=!1)}onButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.allFocusableElements[0].focus()}onPopupChildBlur_(t){if(!this.popC_)return;const e=this.popC_.view.element,i=Ko(t);i&&e.contains(i)||i&&i===this.view.buttonElement&&!Oo(e.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(t){this.popC_&&"Escape"===t.key&&(this.popC_.shows.rawValue=!1)}},Vc=pa({id:"cubicbezier",type:"blade",accept(t){const e=Lo(t,t=>({value:t.required.array(t.required.number),view:t.required.constant("cubicbezier"),expanded:t.optional.boolean,label:t.optional.string,picker:t.optional.custom(t=>"inline"===t||"popup"===t?t:void 0)}));return e?{params:e}:null},controller(t){var e,i;const n=zr(new pc(...t.params.value),{constraint:new uh({assembly:hc,components:[0,1,2,3].map(t=>t%2==0?new Kr({min:0,max:1}):void 0)}),equals:pc.equals}),s=new kc(t.document,{axis:{textProps:Rr.fromObject({keyScale:.1,pointerScale:.01,formatter:ro(2)})},expanded:null!==(e=t.params.expanded)&&void 0!==e&&e,pickerLayout:null!==(i=t.params.picker)&&void 0!==i?i:"popup",value:n,viewProps:t.viewProps});return new Qo(t.document,{blade:t.blade,props:Rr.fromObject({label:t.params.label}),value:n,valueController:s})},api:t=>t.controller instanceof Qo&&t.controller.valueController instanceof kc?new oc(t.controller):null}),Lc=class extends _o{get fps(){return this.controller.valueController.fps}get max(){return this.controller.valueController.props.get("max")}set max(t){this.controller.valueController.props.set("max",t)}get min(){return this.controller.valueController.props.get("min")}set min(t){this.controller.valueController.props.set("min",t)}begin(){this.controller.valueController.begin()}end(){this.controller.valueController.end()}on(t,e){const i=e.bind(this);return this.controller.valueController.ticker.emitter.on(t,()=>{i(new fo(this))}),this}},Mc=class{constructor(){this.start_=null,this.duration_=0,this.fps_=null,this.frameCount_=0,this.timestamps_=[]}get duration(){return this.duration_}get fps(){return this.fps_}begin(t){this.start_=t.getTime()}calculateFps_(t){if(0===this.timestamps_.length)return null;const e=this.timestamps_[0];return 1e3*(this.frameCount_-e.frameCount)/(t-e.time)}compactTimestamps_(){if(this.timestamps_.length<=20)return;const t=this.timestamps_.length-20;this.timestamps_.splice(0,t);const e=this.timestamps_[0].frameCount;this.timestamps_.forEach(t=>{t.frameCount-=e}),this.frameCount_-=e}end(t){if(null===this.start_)return;const e=t.getTime();this.duration_=e-this.start_,this.start_=null,this.fps_=this.calculateFps_(e),this.timestamps_.push({frameCount:this.frameCount_,time:e}),++this.frameCount_,this.compactTimestamps_()}},Sc=$o("fps"),jc=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Sc()),e.viewProps.bindClassModifiers(this.element),this.graphElement=t.createElement("div"),this.graphElement.classList.add(Sc("g")),this.element.appendChild(this.graphElement);const i=t.createElement("div");i.classList.add(Sc("l")),this.element.appendChild(i);const n=t.createElement("span");n.classList.add(Sc("v")),n.textContent="--",i.appendChild(n),this.valueElement=n;const s=t.createElement("span");s.classList.add(Sc("u")),s.textContent="FPS",i.appendChild(s)}},Dc=class{constructor(t,e){this.stopwatch_=new Mc,this.onTick_=this.onTick_.bind(this),this.ticker=e.ticker,this.ticker.emitter.on("tick",this.onTick_),this.props=e.props,this.value_=e.value,this.viewProps=e.viewProps,this.view=new jc(t,{viewProps:this.viewProps}),this.graphC_=new Qh(t,{formatter:ro(0),props:this.props,rows:e.rows,value:this.value_,viewProps:this.viewProps}),this.view.graphElement.appendChild(this.graphC_.view.element),this.viewProps.handleDispose(()=>{this.graphC_.viewProps.set("disposed",!0),this.ticker.dispose()})}get fps(){return this.stopwatch_.fps}begin(){this.stopwatch_.begin(new Date)}end(){this.stopwatch_.end(new Date)}onTick_(){const t=this.fps;if(null!==t){const e=this.value_.rawValue;this.value_.rawValue=function(t,e){const i=[...ta(t),e];return i.length>t.length?i.splice(0,i.length-t.length):Jo(i,t.length),i}(e,t),this.view.valueElement.textContent=t.toFixed(0)}}},Ac=class extends Wo{constructor(t,e){const i=e.valueController,n=new Go(t,{blade:e.blade,props:e.labelProps,valueController:i});super({blade:e.blade,view:n.view,viewProps:i.viewProps}),this.valueController=i,this.labelController=n}};function Oc(t,e){return 0===e?new Ua:new Fa(t,null!=e?e:Kh)}var Bc=pa({id:"fpsgraph",type:"blade",accept(t){const e=Lo(t,t=>({view:t.required.constant("fpsgraph"),interval:t.optional.number,label:t.optional.string,rows:t.optional.number,max:t.optional.number,min:t.optional.number}));return e?{params:e}:null},controller(t){var e,i,n,s;const r=null!==(e=t.params.interval)&&void 0!==e?e:500;return new Ac(t.document,{blade:t.blade,labelProps:Rr.fromObject({label:t.params.label}),valueController:new Dc(t.document,{props:Rr.fromObject({max:null!==(i=t.params.max)&&void 0!==i?i:90,min:null!==(n=t.params.min)&&void 0!==n?n:0}),rows:null!==(s=t.params.rows)&&void 0!==s?s:2,ticker:Oc(t.document,r),value:zr(Zo(80)),viewProps:t.viewProps})})},api:t=>t.controller instanceof Ac?new Lc(t.controller):null}),Tc=class{constructor(t,e){this.min=t,this.max=e}static isObject(t){if("object"!=typeof t||null===t)return!1;const e=t.min,i=t.max;return"number"==typeof e&&"number"==typeof i}static equals(t,e){return t.min===e.min&&t.max===e.max}get length(){return this.max-this.min}toObject(){return{min:this.min,max:this.max}}},zc={fromComponents:t=>new Tc(t[0],t[1]),toComponents:t=>[t.min,t.max]},Rc=class{constructor(t){this.edge=t}constrain(t){var e,i,n,s,r,o,a,l;if(t.min<=t.max)return new Tc(null!==(i=null===(e=this.edge)||void 0===e?void 0:e.constrain(t.min))&&void 0!==i?i:t.min,null!==(s=null===(n=this.edge)||void 0===n?void 0:n.constrain(t.max))&&void 0!==s?s:t.max);const p=(t.min+t.max)/2;return new Tc(null!==(o=null===(r=this.edge)||void 0===r?void 0:r.constrain(p))&&void 0!==o?o:p,null!==(l=null===(a=this.edge)||void 0===a?void 0:a.constrain(p))&&void 0!==l?l:p)}},Nc=$o("rsltxt"),Kc=class{constructor(t,e){this.sliderView_=e.sliderView,this.textView_=e.textView,this.element=t.createElement("div"),this.element.classList.add(Nc());const i=t.createElement("div");i.classList.add(Nc("s")),i.appendChild(this.sliderView_.element),this.element.appendChild(i);const n=t.createElement("div");n.classList.add(Nc("t")),n.appendChild(this.textView_.element),this.element.appendChild(n)}},Ic=$o("rsl"),Uc=class{constructor(t,e){this.onSliderPropsChange_=this.onSliderPropsChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.sliderProps_=e.sliderProps,this.sliderProps_.emitter.on("change",this.onSliderPropsChange_),this.element=t.createElement("div"),this.element.classList.add(Ic()),e.viewProps.bindClassModifiers(this.element),this.value_=e.value,this.value_.emitter.on("change",this.onValueChange_);const i=t.createElement("div");i.classList.add(Ic("t")),this.element.appendChild(i),this.trackElement=i;const n=t.createElement("div");n.classList.add(Ic("b")),i.appendChild(n),this.barElement=n;const s=["min","max"].map(e=>{const n=t.createElement("div");return n.classList.add(Ic("k"),Ic("k",e)),i.appendChild(n),n});this.knobElements=[s[0],s[1]],this.update_()}valueToX_(t){return 100*lo(oo(t,this.sliderProps_.get("min"),this.sliderProps_.get("max"),0,1),0,1)}update_(){const t=this.value_.rawValue;0===t.length?this.element.classList.add(Ic(void 0,"zero")):this.element.classList.remove(Ic(void 0,"zero"));const e=[this.valueToX_(t.min),this.valueToX_(t.max)];this.barElement.style.left=`${e[0]}%`,this.barElement.style.right=100-e[1]+"%",this.knobElements.forEach((t,i)=>{t.style.left=`${e[i]}%`})}onSliderPropsChange_(){this.update_()}onValueChange_(){this.update_()}},Fc=class{constructor(t,e){this.grabbing_=null,this.grabOffset_=0,this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.sliderProps=e.sliderProps,this.viewProps=e.viewProps,this.value=e.value,this.view=new Uc(t,{sliderProps:this.sliderProps,value:this.value,viewProps:e.viewProps});const i=new gl(this.view.trackElement);i.emitter.on("down",this.onPointerDown_),i.emitter.on("move",this.onPointerMove_),i.emitter.on("up",this.onPointerUp_)}ofs_(){return"min"===this.grabbing_?this.view.knobElements[0].getBoundingClientRect().width/2:"max"===this.grabbing_?-this.view.knobElements[1].getBoundingClientRect().width/2:0}valueFromData_(t){return t.point?oo((t.point.x+this.ofs_())/t.bounds.width,0,1,this.sliderProps.get("min"),this.sliderProps.get("max")):null}onPointerDown_(t){if(!t.data.point)return;const e=t.data.point.x/t.data.bounds.width,i=this.value.rawValue,n=this.sliderProps.get("min"),s=this.sliderProps.get("max"),r=oo(i.min,n,s,0,1),o=oo(i.max,n,s,0,1);Math.abs(o-e)<=.025?this.grabbing_="max":Math.abs(r-e)<=.025?this.grabbing_="min":e>=r&&e<=o?(this.grabbing_="length",this.grabOffset_=oo(e-r,0,1,0,s-n)):eo&&(this.grabbing_="max",this.onPointerMove_(t))}applyPointToValue_(t,e){const i=this.valueFromData_(t);if(null===i)return;const n=this.sliderProps.get("min"),s=this.sliderProps.get("max");if("min"===this.grabbing_)this.value.setRawValue(new Tc(i,this.value.rawValue.max),e);else if("max"===this.grabbing_)this.value.setRawValue(new Tc(this.value.rawValue.min,i),e);else if("length"===this.grabbing_){const t=this.value.rawValue.length;let r=i-this.grabOffset_,o=r+t;rs&&(r=s-t,o=s),this.value.setRawValue(new Tc(r,o),e)}}onPointerMove_(t){this.applyPointToValue_(t.data,{forceEmit:!1,last:!1})}onPointerUp_(t){this.applyPointToValue_(t.data,{forceEmit:!0,last:!0}),this.grabbing_=null}},$c=class{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.sc_=new Fc(t,e);const i={constraint:e.constraint,textProps:e.textProps};this.tc_=new bh(t,{assembly:zc,axes:[i,i],parser:e.parser,value:this.value,viewProps:e.viewProps}),this.view=new Kc(t,{sliderView:this.sc_.view,textView:this.tc_.view})}get textController(){return this.tc_}};function qc(t){return Tc.isObject(t)?new Tc(t.min,t.max):new Tc(0,0)}function Hc(t,e){t.writeProperty("max",e.max),t.writeProperty("min",e.min)}var Gc=pa({id:"input-interval",type:"input",accept:(t,e)=>{if(!Tc.isObject(t))return null;const i=Lo(e,t=>Object.assign(Object.assign({},go(t)),{readonly:t.optional.constant(!1)}));return i?{initialValue:new Tc(t.min,t.max),params:i}:null},binding:{reader:t=>qc,constraint:t=>function(t){const e=[],i=mo(t);i&&e.push(i);const n=vo(t);return n&&e.push(n),new Rc(new $a(e))}(t.params),equals:Tc.equals,writer:t=>Hc},controller(t){const e=t.value,i=t.constraint;if(!(i instanceof Rc))throw jr.shouldNeverHappen();const n=(e.rawValue.min+e.rawValue.max)/2,s=Rr.fromObject(bo(t.params,n)),r=i.edge&&qa(i.edge,Nr);if(r)return new $c(t.document,{constraint:i.edge,parser:no,sliderProps:new Rr({keyScale:s.value("keyScale"),max:r.values.value("max"),min:r.values.value("min")}),textProps:s,value:e,viewProps:t.viewProps});const o={constraint:i.edge,textProps:s};return new bh(t.document,{assembly:zc,axes:[o,o],parser:no,value:e,viewProps:t.viewProps})}}),Yc=class{constructor(t){this.controller_=t}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(t){this.controller_.viewProps.set("disabled",t)}get title(){var t;return null!==(t=this.controller_.props.get("title"))&&void 0!==t?t:""}set title(t){this.controller_.props.set("title",t)}},Xc=class extends xo{constructor(t,e,i,n,s){super(t,n,s),this.cell=e,this.index=i}},Wc=class extends _o{constructor(t){super(t),this.cellToApiMap_=new Map,this.controller.valueController.cellControllers.forEach(t=>{const e=new Yc(t);this.cellToApiMap_.set(t,e)})}get value(){return this.controller.value}cell(t,e){const i=this.controller.valueController,n=i.cellControllers[e*i.size[0]+t];return this.cellToApiMap_.get(n)}on(t,e){const i=e.bind(this);this.controller.value.emitter.on(t,t=>{const e=this.controller.valueController,n=e.findCellByValue(t.rawValue);if(!n)return;const s=this.cellToApiMap_.get(n);if(!s)return;const r=e.cellControllers.indexOf(n);i(new Xc(this,s,[r%e.size[0],Math.floor(r/e.size[0])],t.rawValue))})}},Qc=$o("rad"),Jc=class{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Qc()),e.viewProps.bindClassModifiers(this.element);const i=t.createElement("label");i.classList.add(Qc("l")),this.element.appendChild(i);const n=t.createElement("input");n.classList.add(Qc("i")),n.name=e.name,n.type="radio",e.viewProps.bindDisabled(n),i.appendChild(n),this.inputElement=n;const s=t.createElement("div");s.classList.add(Qc("b")),i.appendChild(s);const r=t.createElement("div");r.classList.add(Qc("t")),s.appendChild(r),Uo(e.props,"title",t=>{r.textContent=t})}},Zc=class{constructor(t,e){this.props=e.props,this.viewProps=e.viewProps,this.view=new Jc(t,{name:e.name,props:this.props,viewProps:this.viewProps})}},td=class{constructor(t,e){this.cellCs_=[],this.cellValues_=[],this.onCellInputChange_=this.onCellInputChange_.bind(this),this.size=e.size;const[i,n]=this.size;for(let s=0;s{const e=this.findCellByValue(t);e&&(e.view.inputElement.checked=!0)}),this.viewProps=La.create(),this.view=new Ml(t,{viewProps:this.viewProps,viewName:"radgrid"}),this.view.element.style.gridTemplateColumns=`repeat(${i}, 1fr)`,this.cellCs_.forEach(t=>{t.view.inputElement.addEventListener("change",this.onCellInputChange_),this.view.element.appendChild(t.view.element)})}get cellControllers(){return this.cellCs_}findCellByValue(t){const e=this.cellValues_.findIndex(e=>e===t);return e<0?null:this.cellCs_[e]}onCellInputChange_(t){const e=t.currentTarget,i=this.cellCs_.findIndex(t=>t.view.inputElement===e);i<0||(this.value.rawValue=this.cellValues_[i])}},ed=pa({id:"radiogrid",type:"blade",accept(t){const e=Lo(t,t=>({cells:t.required.function,groupName:t.required.string,size:t.required.array(t.required.number),value:t.required.raw,view:t.required.constant("radiogrid"),label:t.optional.string}));return e?{params:e}:null},controller(t){const e=zr(t.params.value);return new Qo(t.document,{blade:t.blade,props:Rr.fromObject({label:t.params.label}),value:e,valueController:new td(t.document,{groupName:t.params.groupName,cellConfig:t.params.cells,size:t.params.size,value:e})})},api:t=>t.controller instanceof Qo&&t.controller.valueController instanceof td?new Wc(t.controller):null});function id(t){return pa({id:"input-radiogrid",type:"input",accept(e,i){if(!t.isType(e))return null;const n=Lo(i,t=>({cells:t.required.function,groupName:t.required.string,size:t.required.array(t.required.number),view:t.required.constant("radiogrid")}));return n?{initialValue:e,params:n}:null},binding:t.binding,controller:t=>new td(t.document,{cellConfig:t.params.cells,groupName:t.params.groupName,size:t.params.size,value:t.value})})}var nd=id({isType:t=>"number"==typeof t,binding:{reader:t=>so,writer:t=>Ol}}),sd=id({isType:t=>"string"==typeof t,binding:{reader:t=>pl,writer:t=>Ol}}),rd=id({isType:t=>"boolean"==typeof t,binding:{reader:t=>rl,writer:t=>Ol}}),od="essentials",ad='.tp-cbzgv,.tp-radv_b,.tp-rslv_k,.tp-cbzv_b{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-radv_b,.tp-rslv_k,.tp-cbzv_b{background-color:var(--btn-bg);border-radius:var(--bld-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--cnt-usz);line-height:var(--cnt-usz);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-radv_b:hover,.tp-rslv_k:hover,.tp-cbzv_b:hover{background-color:var(--btn-bg-h)}.tp-radv_b:focus,.tp-rslv_k:focus,.tp-cbzv_b:focus{background-color:var(--btn-bg-f)}.tp-radv_b:active,.tp-rslv_k:active,.tp-cbzv_b:active{background-color:var(--btn-bg-a)}.tp-radv_b:disabled,.tp-rslv_k:disabled,.tp-cbzv_b:disabled{opacity:.5}.tp-cbzgv{background-color:var(--in-bg);border-radius:var(--bld-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--cnt-usz);line-height:var(--cnt-usz);min-width:0;width:100%}.tp-cbzgv:hover{background-color:var(--in-bg-h)}.tp-cbzgv:focus{background-color:var(--in-bg-f)}.tp-cbzgv:active{background-color:var(--in-bg-a)}.tp-cbzgv:disabled{opacity:.5}.tp-btngridv{border-radius:var(--bld-br);display:grid;overflow:hidden;gap:2px}.tp-btngridv.tp-v-disabled{opacity:.5}.tp-btngridv .tp-btnv_b:disabled{opacity:1}.tp-btngridv .tp-btnv_b:disabled .tp-btnv_t{opacity:.5}.tp-btngridv .tp-btnv_b{border-radius:0}.tp-cbzv{position:relative}.tp-cbzv_h{display:flex}.tp-cbzv_b{margin-right:4px;position:relative;width:var(--cnt-usz)}.tp-cbzv_b svg{display:block;height:16px;left:50%;margin-left:-8px;margin-top:-8px;position:absolute;top:50%;width:16px}.tp-cbzv_b svg path{stroke:var(--bs-bg);stroke-width:2}.tp-cbzv_t{flex:1}.tp-cbzv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-cbzv.tp-cbzv-expanded .tp-cbzv_p{margin-top:var(--cnt-usp);opacity:1}.tp-cbzv.tp-cbzv-cpl .tp-cbzv_p{overflow:visible}.tp-cbzv .tp-popv{left:calc(-1 * var(--cnt-hp));position:absolute;right:calc(-1 * var(--cnt-hp));top:var(--cnt-usz)}.tp-cbzpv_t{margin-top:var(--cnt-usp)}.tp-cbzgv{height:auto;overflow:hidden;position:relative}.tp-cbzgv.tp-v-disabled{opacity:.5}.tp-cbzgv_p{left:16px;position:absolute;right:16px;top:0}.tp-cbzgv_g{cursor:pointer;display:block;height:calc(var(--cnt-usz) * 5);width:100%}.tp-cbzgv_u{opacity:.1;stroke:var(--in-fg);stroke-dasharray:1}.tp-cbzgv_l{fill:rgba(0,0,0,0);stroke:var(--in-fg)}.tp-cbzgv_v{opacity:.5;stroke:var(--in-fg);stroke-dasharray:1}.tp-cbzgv_h{border:var(--in-fg) solid 1px;border-radius:50%;box-sizing:border-box;height:4px;margin-left:-2px;margin-top:-2px;pointer-events:none;position:absolute;width:4px}.tp-cbzgv:focus .tp-cbzgv_h-sel{background-color:var(--in-fg);border-width:0}.tp-cbzprvv{cursor:pointer;height:4px;padding:4px 0;position:relative}.tp-cbzprvv_g{display:block;height:100%;overflow:visible;width:100%}.tp-cbzprvv_t{opacity:.5;stroke:var(--mo-fg)}.tp-cbzprvv_m{background-color:var(--mo-fg);border-radius:50%;height:4px;margin-left:-2px;margin-top:-2px;opacity:0;position:absolute;top:50%;transition:opacity .2s ease-out;width:4px}.tp-cbzprvv_m.tp-cbzprvv_m-a{opacity:1}.tp-fpsv{position:relative}.tp-fpsv_l{bottom:4px;color:var(--mo-fg);line-height:1;right:4px;pointer-events:none;position:absolute}.tp-fpsv_u{margin-left:.2em;opacity:.7}.tp-rslv{cursor:pointer;padding-left:8px;padding-right:8px}.tp-rslv.tp-v-disabled{opacity:.5}.tp-rslv_t{height:calc(var(--cnt-usz));position:relative}.tp-rslv_t::before{background-color:var(--in-bg);border-radius:1px;content:"";height:2px;margin-top:-1px;position:absolute;top:50%;left:-4px;right:-4px}.tp-rslv_b{bottom:0;top:0;position:absolute}.tp-rslv_b::before{background-color:var(--in-fg);content:"";height:2px;margin-top:-1px;position:absolute;top:50%;left:0;right:0}.tp-rslv_k{height:calc(var(--cnt-usz) - 8px);margin-top:calc((var(--cnt-usz) - 8px)/-2);position:absolute;top:50%;width:8px}.tp-rslv_k.tp-rslv_k-min{margin-left:-8px}.tp-rslv_k.tp-rslv_k-max{margin-left:0}.tp-rslv.tp-rslv-zero .tp-rslv_k.tp-rslv_k-min{border-bottom-right-radius:0;border-top-right-radius:0}.tp-rslv.tp-rslv-zero .tp-rslv_k.tp-rslv_k-max{border-bottom-left-radius:0;border-top-left-radius:0}.tp-rsltxtv{display:flex}.tp-rsltxtv_s{flex:1}.tp-rsltxtv_t{flex:1;margin-left:4px}.tp-radv_l{display:block;position:relative}.tp-radv_i{left:0;opacity:0;position:absolute;top:0}.tp-radv_b{opacity:.5}.tp-radv_i:hover+.tp-radv_b{background-color:var(--btn-bg-h)}.tp-radv_i:focus+.tp-radv_b{background-color:var(--btn-bg-f)}.tp-radv_i:active+.tp-radv_b{background-color:var(--btn-bg-a)}.tp-radv_i:checked+.tp-radv_b{opacity:1}.tp-radv_t{bottom:0;color:inherit;left:0;overflow:hidden;position:absolute;right:0;text-align:center;text-overflow:ellipsis;top:0}.tp-radv_i:disabled+.tp-radv_b>.tp-radv_t{opacity:.5}.tp-radgridv{border-radius:var(--bld-br);display:grid;overflow:hidden;gap:2px}.tp-radgridv.tp-v-disabled{opacity:.5}.tp-radgridv .tp-radv_b{border-radius:0}',ld=[rc,Vc,Bc,Gc,ed,rd,nd,sd],pd=(t,e,i="BG")=>{const n="a"in e;t.addBinding({get color(){return e.hex},set color(t){e.setColorByHEX(t)}},"color",{label:`${i} Color`,picker:"inline",expanded:!0}),n&&t.addBinding(e,"a",{min:0,max:1,step:.01,label:`${i} Alpha`})},hd=t=>{const e=(()=>{const t=window.location.pathname.split("/"),e=t.indexOf("examples"),i=Math.max(0,t.length-e-2);return"../".repeat(i)})(),i=t=>e+t;return Array.isArray(t)?t.map(i):i(t)},cd=t=>{if("number"==typeof t)return{value:t,unit:"number"};const e=String(t);return e.endsWith("%")?{value:parseFloat(e),unit:"%"}:(e.endsWith("px"),{value:parseFloat(e),unit:"px"})},dd=({gui:t,redGPUContext:e})=>((0,r.useEffect)(()=>{const i=t.addFolder({title:"RedGPUContext"});i.addBinding(e,"renderScale",{min:.01,max:1,step:.01}),i.addBlade({view:"separator"}),e.backgroundColor&&(pd(i,e.backgroundColor),i.addBlade({view:"separator"})),i.addBinding(e,"alphaMode",{options:{opaque:"opaque",premultiplied:"premultiplied"}}),i.addBlade({view:"separator"});const n=cd(e.width),s=cd(e.height),r={width:n.value,widthUnit:n.unit,height:s.value,heightUnit:s.unit},o=i.addFolder({title:"Size"}),a=()=>{e.width="number"===r.widthUnit?r.width:`${r.width}${r.widthUnit}`};o.addBinding(r,"width",{min:0,max:"%"===n.unit?200:4096,step:.01}).on("change",a),o.addBinding(r,"widthUnit",{options:{"%":"%",px:"px",number:"number"}}).on("change",t=>{a()});const l=()=>{e.height="number"===r.heightUnit?r.height:`${r.height}${r.heightUnit}`};o.addBinding(r,"height",{min:0,max:"%"===s.unit?200:4096,step:.01}).on("change",l),o.addBinding(r,"heightUnit",{options:{"%":"%",px:"px",number:"number"}}).on("change",()=>{l()});const p=i.addFolder({title:"setSize method test",expanded:!1});[["300","300"],["600","300"],["50%","300"],["300","50%"],["100%","100%"]].forEach(([t,i])=>{const n=`setSize(${t}, ${i})`;p.addButton({title:n}).on("click",()=>e.setSize(t,i))}),i.addBlade({view:"separator"});const h=i.addFolder({title:"Rect Info",expanded:!0});h.addBinding({get dpr(){return window.devicePixelRatio}},"dpr",{readonly:!0,label:"DPR",interval:500});const c={get screen(){const t=e.screenRectObject;return`x: ${t.x.toFixed(2)}, y: ${t.y.toFixed(2)}\nw: ${t.width.toFixed(2)}, h: ${t.height.toFixed(2)}`},get pixel(){const t=e.pixelRectObject;return`x: ${t.x}, y: ${t.y}\nw: ${t.width}, h: ${t.height}`}};return h.addBinding(c,"screen",{readonly:!0,label:"Screen Rect",multiline:!0,rows:2,interval:32}),h.addBinding(c,"pixel",{readonly:!0,label:"Pixel Rect",multiline:!0,rows:2,interval:32}),()=>{i.dispose()}},[t,e]),null),ud=(t,e)=>{e.addBinding(t,"useBackgroundColor"),t.backgroundColor&&pd(e,t.backgroundColor)},vd=({gui:t,scene:e})=>((0,r.useEffect)(()=>{if(!e)return;const i=e.name||"Scene",n=t.addFolder({title:i});return ud(e,n),()=>{n.dispose()}},[t,e]),null),md=({gui:t,redGPUContext:e})=>((0,r.useEffect)(()=>{const i=e.viewList;if(0===i.length)return;const n=1===i.length?i[0].name?.replace(/Instance/g,"")||"View 0":"ViewList",s=t.addFolder({title:n}),r=(t,e)=>{if("View3D"===t.constructor.name){e.addBinding(t,"useFrustumCulling"),e.addBinding(t,"useDistanceCulling"),e.addBinding(t,"distanceCulling",{min:0,max:1e3,step:1}),e.addBlade({view:"separator"});const i=e.addFolder({title:"Debug Helpers"}),n={get grid(){return!!t.grid},set grid(e){t.grid=e},get axis(){return!!t.axis},set axis(e){t.axis=e}};i.addBinding(n,"grid",{label:"Show Grid"}),i.addBinding(n,"axis",{label:"Show Axis"}),e.addBlade({view:"separator"})}const i={width:cd(t.width).value,widthUnit:cd(t.width).unit,height:cd(t.height).value,heightUnit:cd(t.height).unit,x:cd(t.x).value,xUnit:cd(t.x).unit,y:cd(t.y).value,yUnit:cd(t.y).unit},n=e.addFolder({title:"Size & Position"}),s=e=>{const n=i[e],s=i[`${e}Unit`];t[e]="number"===s?n:`${n}${s}`};if(["width","height","x","y"].forEach(t=>{const e=t,r=`${e}Unit`;n.addBinding(i,e,{min:0,max:"%"===i[r]?200:4096,step:.01}).on("change",()=>s(e)),n.addBinding(i,r,{label:`${e} Unit`,options:{"%":"%",px:"px",number:"number"}}).on("change",()=>s(e))}),t.scene){e.addBlade({view:"separator"});const i=e.addFolder({title:t.scene.name||"Scene",expanded:!0});ud(t.scene,i)}};if(1===i.length)r(i[0],s);else{const t=s.addTab({pages:i.map((t,e)=>({title:t.name?.replace(/Instance/g,"")||`View ${e}`}))});i.forEach((e,i)=>{r(e,t.pages[i])})}return()=>{s.dispose()}},[t,e]),null),bd=[{name:"2K - the sky is on fire",path:"assets/hdr/2k/the_sky_is_on_fire_2k.hdr",nit:3e4},{name:"Cannon_Exterior",path:"assets/hdr/Cannon_Exterior.hdr",nit:25e3},{name:"field",path:"assets/hdr/field.hdr",nit:3e4},{name:"neutral.37290948",path:"assets/hdr/neutral.37290948.hdr",nit:2e4},{name:"pisa",path:"assets/hdr/pisa.hdr",nit:25e3},{name:"6 cube face asset",path:["assets/skybox/px.jpg","assets/skybox/nx.jpg","assets/skybox/py.jpg","assets/skybox/ny.jpg","assets/skybox/pz.jpg","assets/skybox/nz.jpg"],nit:100}],gd=({gui:t,view:e})=>{const i=s(t=>t.RedGPU);return(0,r.useEffect)(()=>{if(!e)return;const n=t.addFolder({title:"Lighting",expanded:!0}),s={texture:bd[0].name,useLight:e.scene.lightManager.directionalLights.length>0,lux:e.scene.lightManager.directionalLights[0]?.lux||1e5,useIBL:!0,intensityMultiplier:e.ibl?.intensityMultiplier||1},r={finalPath:""};let o;const a=n=>{if(!s.useIBL)return;const a=bd.find(t=>t.name===n);if(!a)return;const l=a.path;(t=>{const e=t=>t.split("/").pop()||t;r.finalPath=Array.isArray(t)?t.map(e).join("\n"):e(t),o&&o.refresh()})(l);const p=hd(l),h=a.nit||2e4;if(i){const t=new i.Resource.IBL(e.redGPUContext,p,h);t.intensityMultiplier=s.intensityMultiplier,e.ibl=t}t.refresh()},l=n=>{if(n){if(0===e.scene.lightManager.directionalLights.length&&i){const t=new i.Light.DirectionalLight;t.lux=s.lux,e.scene.lightManager.addDirectionalLight(t)}}else e.scene.lightManager.removeAllLight();t.refresh()};n.addBinding(s,"useLight").on("change",t=>l(t.value)),n.addBinding(s,"lux",{min:0,max:1e5,step:1}).on("change",t=>{const i=e.scene.lightManager.directionalLights;i.length>0&&(i[0].lux=t.value)}),n.addBinding(s,"useIBL").on("change",t=>{t.value?(a(s.texture),p.disabled=!1):(e.ibl=null,p.disabled=!0)});const p=n.addFolder({title:"IBL Settings",expanded:!0});return p.addBinding(s,"texture",{options:bd.reduce((t,e)=>({...t,[e.name]:e.name}),{})}).on("change",t=>a(t.value)),p.addBinding(s,"intensityMultiplier",{min:0,max:5,step:.1}).on("change",t=>{e.ibl&&(e.ibl.intensityMultiplier=t.value)}),p.addBinding({get luminance(){return e.ibl?e.ibl.luminance:0},set luminance(t){e.ibl&&(e.ibl.luminance=t)}},"luminance",{min:0,max:1e5,step:100}),o=p.addBinding(r,"finalPath",{readonly:!0,label:"source",multiline:!0,rows:2}),l(s.useLight),s.useIBL?a(s.texture):p.disabled=!0,()=>{n.dispose()}},[t,e,i]),null},wd=({gui:t,view:e})=>{const i=s(t=>t.RedGPU);return(0,r.useEffect)(()=>{if(!e)return;const n=t.addFolder({title:"SkyBox",expanded:!0}),s={useSkyBox:!0,texture:bd[0].name,blur:e.skybox?.blur||0,intensityMultiplier:e.skybox?.intensityMultiplier||1,opacity:e.skybox?.opacity||1},r={finalPath:""};let o;const a=n=>{if(!s.useSkyBox)return;const a=bd.find(t=>t.name===n);if(!a)return;const l=a.path;(t=>{const e=t=>t.split("/").pop()||t;r.finalPath=Array.isArray(t)?t.map(e).join("\n"):e(t),o&&o.refresh()})(l);const p=hd(l),h=a.nit||2e4;if(i){const t="string"==typeof l&&l.toLowerCase().endsWith(".hdr")?new i.Resource.IBL(e.redGPUContext,p,h).environmentTexture:new i.Resource.CubeTexture(e.redGPUContext,p,!0);e.skybox?(e.skybox.texture=t,e.skybox.luminance=h):e.skybox=new i.Display.SkyBox(e.redGPUContext,t,h),e.skybox.blur=s.blur,e.skybox.intensityMultiplier=s.intensityMultiplier,e.skybox.opacity=s.opacity}t.refresh()};n.addBinding(s,"useSkyBox").on("change",t=>{t.value?(a(s.texture),l.disabled=!1):(e.skybox=null,l.disabled=!0)});const l=n.addFolder({title:"SkyBox Settings",expanded:!0});return l.addBinding(s,"texture",{options:bd.reduce((t,e)=>({...t,[e.name]:e.name}),{})}).on("change",t=>a(t.value)),l.addBinding(s,"blur",{min:0,max:1,step:.01}).on("change",t=>{e.skybox&&(e.skybox.blur=t.value)}),l.addBinding(s,"intensityMultiplier",{min:0,max:5,step:.1}).on("change",t=>{e.skybox&&(e.skybox.intensityMultiplier=t.value)}),l.addBinding(s,"opacity",{min:0,max:1,step:.01}).on("change",t=>{e.skybox&&(e.skybox.opacity=t.value)}),l.addBinding({get luminance(){return e.skybox?e.skybox.luminance:0},set luminance(t){e.skybox&&(e.skybox.luminance=t)}},"luminance",{min:0,max:1e5,step:100}),o=l.addBinding(r,"finalPath",{readonly:!0,label:"source",multiline:!0,rows:2}),s.useSkyBox?a(s.texture):l.disabled=!0,()=>{n.dispose()}},[t,e,i]),null},_d=n(),fd=()=>{const t=s(t=>t.guiConfig),e=s(t=>t.redGPUContext),i=(0,r.useRef)(null),[n,o]=(0,r.useState)(null);return(0,r.useEffect)(()=>{if(i.current&&t){const n=new yr({container:i.current});if(n.registerPlugin(Pr),o(n),t.gui)try{t.gui(n)}catch(e){console.error("Error in custom GUI callback:",e)}return()=>{n.dispose(),o(null)}}},[t]),t? (0,_d.jsxs)(_d.Fragment,{children:[ (0,_d.jsx)("div",{ref:i,style:xd}),n&&t.redGPUContext&&e&& (0,_d.jsx)(dd,{gui:n,redGPUContext:e}),n&&t.viewList&&e&& (0,_d.jsx)(md,{gui:n,redGPUContext:e}),n&&t.scene&&e&& (0,_d.jsx)(vd,{gui:n,scene:e.viewList[0]?.scene}),n&&t.ibl&&e&&e.viewList[0]&& (0,_d.jsx)(gd,{gui:n,view:e.viewList[0]}),n&&t.skybox&&e&&e.viewList[0]&& (0,_d.jsx)(wd,{gui:n,view:e.viewList[0]})]}):null},xd={width:"100%",display:"flex",flexDirection:"column"};export{fd as default}; \ No newline at end of file diff --git a/examples/exampleHelper/dist/IconButton-D8-442jY.js b/examples/exampleHelper/dist/IconButton-D8-442jY.js index 0973b7eb48..0d7d46d94b 100644 --- a/examples/exampleHelper/dist/IconButton-D8-442jY.js +++ b/examples/exampleHelper/dist/IconButton-D8-442jY.js @@ -1,4 +1,4 @@ -import{r as t}from"./rolldown-runtime-BztV3taV.js?t=1781141623471";import{r as e,t as i}from"./vendor-react-BwJpJ84T.js?t=1781141623471";var o=t(e(),1),s=t=>{let e;const i=new Set,o=(t,o)=>{const s="function"==typeof t?t(e):t;if(!Object.is(s,e)){const t=e;e=(null!=o?o:"object"!=typeof s||null===s)?s:Object.assign({},e,s),i.forEach(i=>i(e,t))}},s=()=>e,l={setState:o,getState:s,getInitialState:()=>r,subscribe:t=>(i.add(t),()=>i.delete(t))},r=e=t(o,s,l);return l},l=t=>t,r=t=>{const e=(t=>t?s(t):s)(t),i=t=>function(t,e=l){const i=o.useSyncExternalStore(t.subscribe,o.useCallback(()=>e(t.getState()),[t,e]),o.useCallback(()=>e(t.getInitialState()),[t,e]));return o.useDebugValue(i),i}(e,t);return Object.assign(i,e),i},n=t=>t?r(t):r,c=i(),a=({label:t,isActive:e=!0,onClick:i,title:s,style:l})=>{const[r,n]=(0,o.useState)(!1); +import{r as t}from"./rolldown-runtime-BztV3taV.js?t=1781143364605";import{r as e,t as i}from"./vendor-react-BwJpJ84T.js?t=1781143364605";var o=t(e(),1),s=t=>{let e;const i=new Set,o=(t,o)=>{const s="function"==typeof t?t(e):t;if(!Object.is(s,e)){const t=e;e=(null!=o?o:"object"!=typeof s||null===s)?s:Object.assign({},e,s),i.forEach(i=>i(e,t))}},s=()=>e,l={setState:o,getState:s,getInitialState:()=>r,subscribe:t=>(i.add(t),()=>i.delete(t))},r=e=t(o,s,l);return l},l=t=>t,r=t=>{const e=(t=>t?s(t):s)(t),i=t=>function(t,e=l){const i=o.useSyncExternalStore(t.subscribe,o.useCallback(()=>e(t.getState()),[t,e]),o.useCallback(()=>e(t.getInitialState()),[t,e]));return o.useDebugValue(i),i}(e,t);return Object.assign(i,e),i},n=t=>t?r(t):r,c=i(),a=({label:t,isActive:e=!0,onClick:i,title:s,style:l})=>{const[r,n]=(0,o.useState)(!1); return(0,c.jsx)("button",{style:{...C,backgroundColor:r?"#1a1a1c":"#111112",color:"#fdb48d",...l},onClick:i,title:s||t,onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),children: (0,c.jsx)("span",{style:{opacity:e?1:.4,transition:"opacity 0.2s"},children:t})})},C={display:"flex",alignItems:"center",justifyContent:"center",height:"100%",padding:"0 20px",backgroundColor:"#111112",border:"none",fontSize:"11px",fontWeight:"bold",cursor:"pointer",transition:"background-color 0.2s, opacity 0.2s",letterSpacing:"0.05em",flexShrink:0},d=({useSourceModal:t=!0,narrowTitle:e,narrowSettings:i,isNarrow:o=!1,onShowSource:s})=>{const l=new URL("./assets/github.png",import.meta.url).href; return(0,c.jsxs)("div",{style:p,children:[t&&o&&e&& (0,c.jsx)("div",{style:h,children:e}),t&&o&&i&& (0,c.jsx)("div",{style:x,children:i}), diff --git a/examples/exampleHelper/dist/exampleList-B00YxcCV.js b/examples/exampleHelper/dist/exampleList-B00YxcCV.js index 7e3959a45f..6b2a9f759f 100644 --- a/examples/exampleHelper/dist/exampleList-B00YxcCV.js +++ b/examples/exampleHelper/dist/exampleList-B00YxcCV.js @@ -1 +1 @@ -import{n as e}from"./rolldown-runtime-BztV3taV.js?t=1781141623471";var t=e({ExampleList:()=>i,default:()=>i}),i=[{name:"3D",list:[{name:"Hello RedGPU",path:"3d/helloWorld",description:{ko:"RedGPU의 기본 초기화 방법을 보여주는 샘플입니다.
초기화 성공 시 제공되는 RedGPUContext 객체의 기본 옵션들을 실시간으로 테스트할 수 있습니다.",en:"This example is a sample of the basic initialization of RedGPU.
\n It also provides a live test of the basic options provided to the RedGPUContext object provided upon successful initialization."}},{name:"View3D",list:[{name:"Single View3D",path:"3d/view/singleView",description:{ko:"RedGPU의 View 객체에 대한 샘플입니다. View 객체에 제공되는 기본 옵션들을 실시간으로 테스트할 수 있습니다.",en:"This example is a sample for a View object in RedGPU.
\n It provides real-time testing of the basic options provided to a View object."}},{name:"Multi View3D",path:"3d/view/multiView",description:{ko:"RedGPU의 멀티 뷰 기능을 보여주는 샘플입니다.
RedGPUContext는 여러 개의 View를 소유하고 관리할 수 있습니다.",en:"This example is a sample of RedGPU's Multi View.
RedGPUContext can own and manage multiple MultiViews."}}]},{name:"Scene",list:[{name:"Scene",path:"3d/scene",description:{ko:"RedGPU의 Scene 객체에 대한 샘플입니다.
Scene 객체에 제공되는 기본 옵션들을 실시간으로 테스트할 수 있습니다.",en:"This example is a sample of a Scene object in RedGPU.
It provides real-time testing of the basic options provided to the Scene object."}}]},{name:"Camera Controller",list:[{name:"FreeController",path:"3d/controller/freeController",description:{ko:"FreeController는 키보드(WASD/QERTFG)와 마우스/터치 입력을 사용하여 1인칭 카메라 제어를 제공합니다.
3D 공간에서의 자유로운 이동, 회전 제어, 속도/가속도 조절 및 키 바인딩 설정 기능을 포함합니다.",en:"FreeController provides first-person camera control with keyboard (WASD/QERTFG) and mouse/touch input.
Features include free movement in 3D space, rotation control, customizable speed/acceleration, and key binding configuration."}},{name:"OrbitController",path:"3d/controller/orbitController",description:{ko:"OrbitController는 중심점을 기준으로 회전하는 궤도형 카메라 제어를 제공합니다.
마우스 드래그 회전, 휠 줌, 터치 핀치 줌, 중심점 위치 사용자 정의, 거리 제어 및 팬/틸트 제한 기능을 포함합니다.",en:"OrbitController provides orbital camera control that rotates around a center point.
Features include mouse drag rotation, wheel zoom, touch pinch zoom, customizable center position, distance control, and pan/tilt limits."}},{name:"FollowController",path:"3d/controller/followController",description:{ko:"FollowController는 타겟 메쉬를 따라다니는 3인칭 카메라 제어를 제공합니다.
부드러운 카메라 추적, 거리 및 높이 조절, 팬/틸트 제어, 타겟 회전 추적 및 휠/핀치 줌 기능을 포함합니다.
3인칭 게임 및 객체 추적 시나리오에 적합합니다.",en:"FollowController provides third-person camera control that follows a target mesh.
Features include smooth camera following, customizable distance and height, pan/tilt control, target rotation tracking, and wheel/pinch zoom.
Perfect for third-person games and object tracking scenarios."}},{name:"IsometricController",path:"3d/controller/isometricController",description:{ko:"IsometricController는 아이소메트릭 뷰를 위한 고정 각도 직교 투영 카메라 제어를 제공합니다.
타겟 메쉬 추적, 키보드(WASD) 및 마우스 이동, 휠/핀치 줌 제어, 카메라 각도 및 뷰 높이 사용자 정의 기능을 포함합니다.
아이소메트릭 게임, 전략 게임 및 건축 시각화에 이상적입니다.",en:"IsometricController provides fixed-angle orthographic camera control for isometric views.
Features include target mesh tracking, keyboard (WASD) and mouse movement, wheel/pinch zoom control, and customizable camera angle and view height.
Ideal for isometric games, strategy games, and architectural visualization."}}]},{name:"Primitive",list:[{name:"Primitives",path:"3d/primitive/primitives",description:{ko:"RedGPU가 지원하는 기본적인 프리미티브 지오메트리들의 샘플입니다.",en:"Samples of basic primitive geometries supported by RedGPU."}},{name:"Box",path:"3d/primitive/box",description:{ko:"RedGPU가 지원하는 기본 Box 프리미티브에 대한 샘플입니다. Box 설정 옵션을 실시간으로 테스트할 수 있습니다.",en:"Samples for the basic Box Primitives supported by RedGPU. Provides real-time testing of Box configuration options."}},{name:"RoundedBox",path:"3d/primitive/roundedBox",description:{ko:"모서리가 둥근 박스 프리미티브에 대한 샘플입니다. 반지름(radius) 및 분할 수 설정을 통해 부드러운 모서리를 가진 박스를 생성하고 테스트할 수 있습니다.",en:"Samples for the RoundedBox Primitive. You can create and test boxes with smooth corners by configuring radius and segment settings."}},{name:"Circle",path:"3d/primitive/circle",description:{ko:"RedGPU가 지원하는 기본 Circle 프리미티브에 대한 샘플입니다. Circle 설정 옵션을 실시간으로 테스트할 수 있습니다.",en:"Samples for the basic Circle Primitives supported by RedGPU. Provides real-time testing of Circle configuration options."}},{name:"Cone",path:"3d/primitive/cone",description:{ko:"RedGPU가 지원하는 기본 Cone 프리미티브에 대한 샘플입니다. Cone 설정 옵션을 실시간으로 테스트할 수 있습니다.",en:"Samples for the basic Cone Primitives supported by RedGPU. Provides real-time testing of Cone configuration options."}},{name:"Cylinder",path:"3d/primitive/cylinder",description:{ko:"RedGPU가 지원하는 기본 Cylinder 프리미티브에 대한 샘플입니다. Cylinder 설정 옵션을 실시간으로 테스트할 수 있습니다.",en:"Samples for the basic Cylinder Primitives supported by RedGPU. Provides real-time testing of Cylinder configuration options."}},{name:"Plane",path:"3d/primitive/plane",description:{ko:"RedGPU가 지원하는 기본 Plane 프리미티브에 대한 샘플입니다. Plane 설정 옵션을 실시간으로 테스트할 수 있습니다.",en:"Samples for the basic Plane Primitives supported by RedGPU. Provides real-time testing of Plane configuration options."}},{name:"Ground",path:"3d/primitive/ground",description:{ko:"RedGPU가 지원하는 기본 Ground 프리미티브에 대한 샘플입니다. Ground 설정 옵션을 실시간으로 테스트할 수 있습니다.",en:"Samples for the basic Ground Primitives supported by RedGPU. Provides real-time testing of Ground configuration options."}},{name:"Sphere",path:"3d/primitive/sphere",description:{ko:"RedGPU가 지원하는 기본 Sphere 프리미티브에 대한 샘플입니다. Sphere 설정 옵션을 실시간으로 테스트할 수 있습니다.",en:"Samples for the basic Sphere Primitives supported by RedGPU. Provides real-time testing of Sphere configuration options."}},{name:"Capsule",path:"3d/primitive/capsule",description:{ko:"RedGPU가 지원하는 기본 Capsule 프리미티브에 대한 샘플입니다. Capsule 설정 옵션을 실시간으로 테스트할 수 있습니다.",en:"Samples for the basic Capsule Primitives supported by RedGPU. Provides real-time testing of Capsule configuration options."}},{name:"Torus",path:"3d/primitive/torus",description:{ko:"RedGPU가 지원하는 기본 Torus 프리미티브에 대한 샘플입니다. Torus 설정 옵션을 실시간으로 테스트할 수 있습니다.",en:"Samples for the basic Torus Primitives supported by RedGPU. Provides real-time testing of Torus configuration options."}},{name:"TorusKnot",path:"3d/primitive/torusKnot",description:{ko:"RedGPU가 지원하는 기본 TorusKnot 프리미티브에 대한 샘플입니다. TorusKnot 설정 옵션을 실시간으로 테스트할 수 있습니다.",en:"Samples for the basic TorusKnot Primitives supported by RedGPU. Provides real-time testing of TorusKnot configuration options."}},{name:"Ring",path:"3d/primitive/ring",description:{ko:"RedGPU가 지원하는 기본 Ring 프리미티브에 대한 샘플입니다. Ring 설정 옵션을 실시간으로 테스트할 수 있습니다.",en:"Samples for the basic Ring Primitives supported by RedGPU. Provides real-time testing of Ring configuration options."}}]},{name:"Mesh",list:[{name:"Basic Mesh",path:"3d/mesh/basicMesh",description:{ko:"이 코드는 기본 메쉬를 생성하고 위치, 크기, 회전, 재질 등 주요 속성을 실시간으로 조작하는 방법을 보여주는 샘플입니다.
RedGPU를 사용하여 Box 메쉬를 생성하고 속성과 재질을 조정하는 방법을 보여줍니다.",en:"this code is a sample that shows how to create a basic mesh and how to manipulate its main properties (position, scale, rotation, material, etc.) in real time.
This example shows how to create a Box mesh using RedGPU and how to adjust its properties and material."}},{name:"Hierarchy Mesh",path:"3d/mesh/hierarchy",description:{ko:"RedGPU를 사용하여 부모-자식 메쉬 계층 구조를 생성하고, 위치, 회전 및 스케일을 조작하는 예제입니다.",en:"An example of creating a parent-child mesh hierarchy using RedGPU, and manipulating its position, rotation, and scale."}},{name:"Pivot Mesh",path:"3d/mesh/pivot",description:{ko:"RedGPU를 사용하여 부모 및 자식 메쉬를 생성하고 피벗 설정을 통해 회전 중심을 변경하는 방법을 보여주는 실습 예제입니다.",en:"A hands-on example that demonstrates how to create parent and child meshes using RedGPU and change the center of rotation via pivot settings."}},{name:"Child Methods",path:"3d/mesh/childMethod",description:{ko:"RedGPU를 사용한 자식 노드 관리 예제로, 자식 추가, 삭제, 인덱스 변경, 교체 및 자식 색상 무작위화 등을 통해 노드를 동적으로 제어하는 방법을 보여줍니다.",en:"An example of child node management using RedGPU, showing how to dynamically control nodes by adding, deleting, changing index, replacing, and randomizing color of children."}},{name:"lookAt Methods",path:"3d/mesh/lookAt",description:{ko:"객체가 특정 지점이나 다른 객체를 바라보도록 하는 lookAt 메서드의 사용법을 보여주는 예제입니다.",en:"An example demonstrating the usage of the lookAt method to make an object face a specific point or another object."}},{name:"BoundingBox",list:[{name:"BoundingBox",path:"3d/mesh/boundBox/meshBoundBox",description:{ko:"메쉬의 바운딩 박스(AABB)를 시각화하고 확인하는 예제입니다.",en:"An example of visualizing and checking the bounding box (AABB) of a mesh."}},{name:"AABB - intersects",path:"3d/mesh/boundBox/meshAABBIntersects",description:{ko:"AABB(Axis-Aligned Bounding Box) 간의 교차 검사 기능을 테스트하는 예제입니다.",en:"An example testing the intersection check function between AABBs (Axis-Aligned Bounding Boxes)."}},{name:"OBB - intersects",path:"3d/mesh/boundBox/meshOBBIntersects",description:{ko:"OBB(Oriented Bounding Box) 간의 교차 검사 기능을 테스트하는 예제입니다.",en:"An example testing the intersection check function between OBBs (Oriented Bounding Boxes)."}}]}]},{name:"Coordinate Transformation",list:[{name:"worldToLocal / localToWorld",path:"3d/coordinateTransformation/worldToLocal",description:{ko:"월드 좌표와 로컬 좌표 간의 변환을 테스트하는 예제입니다.",en:"An example testing the transformation between world coordinates and local coordinates."}},{name:"screenToWorld",path:"3d/coordinateTransformation/screenToWorld",description:{ko:"화면(스크린) 좌표를 월드 좌표로 변환하는 방법을 보여주는 예제입니다.",en:"An example showing how to convert screen coordinates to world coordinates."}}]},{name:"Material",list:[{name:"ColorMaterial",path:"3d/material/colorMaterial",description:{ko:"RedGPU ColorMaterial의 기본 색상 조작 및 색상 설정을 위한 편의 메서드들에 대한 실시간 샘플을 제공합니다.",en:"Provides real-time samples of the basic color manipulations of RedGPU's ColorMaterial and convenience methods for setting colors."}},{name:"BitmapMaterial",path:"3d/material/bitmapMaterial",description:{ko:"RedGPU의 BitmapMaterial 샘플로, 다양한 텍스처 포맷(PNG, JPG, WEBP, SVG)을 적용하여 텍스처 변경을 실시간으로 테스트할 수 있습니다.",en:"RedGPU's BitmapMaterial sample allows you to test texture changes in real time by applying various texture formats (PNG, JPG, WEBP, SVG)."}},{name:"PhongMaterial",path:"3d/material/phongMaterial",description:{ko:"RedGPU를 사용하여 PhongMaterial의 기본 속성을 조작하고 다양한 텍스처 조합을 실험하는 방법을 보여주는 샘플 예제입니다.",en:"A sample example that demonstrates how to manipulate the basic properties of PhongMaterial using RedGPU and experiment with different texture combinations."}},{name:"PhongMaterial Texture Combination",path:"3d/material/phongMaterialTextures",description:{ko:"RedGPU를 사용하여 PhongMaterial의 다양한 텍스처 조합과 효과를 시각적으로 보여주는 샘플 예제입니다.",en:"A sample example that visually demonstrates different texture combinations and effects of PhongMaterial using RedGPU."}},{name:"UV Transform",path:"3d/material/uvTransform",description:{ko:"재질의 텍스처 오프셋과 스케일을 조절하여 흐르는 효과나 타일링을 구현하는 방법을 테스트합니다.",en:"Tests how to implement scrolling effects or tiling by adjusting the texture offset and scale of the material."}},{name:"Material Opacity",path:"3d/material/opacity",description:{ko:"재질의 불투명도(Opacity)를 조절하여 반투명 효과를 테스트하는 예제입니다.",en:"An example testing the translucency effect by adjusting the opacity of the material."}},{name:"Fragment Variant Test",path:"3d/material/fragmentVariantTest",description:{ko:"쉐이더의 프래그먼트 변형을 테스트하는 예제입니다.",en:"An example testing fragment variants of shaders."}}]},{name:"Texture & Sampler",list:[{name:"BitmapTexture & Sampler",path:"3d/texture/bitmapTextureSampler",description:{ko:"텍스처 샘플러 옵션과 밉맵 지원을 시연하는 샘플입니다.",en:"A sample that demonstrates texture sampler options and mipmap support."}},{name:"Sampler Combination",path:"3d/texture/samplerCombination",description:{ko:"텍스처 샘플러의 다양한 조합을 한눈에 보여주는 예제입니다.",en:"Here's an example showing the different combinations of texture samplers at a glance."}},{name:"Sampler SamplerAddressMode",path:"3d/texture/samplerAddressMode",description:{ko:"텍스처 샘플러의 AddressMode 옵션 조합을 보여주는 예제입니다.",en:"An example showing combinations of AddressMode options for a texture sampler."}},{name:"MaxAnisotropy",path:"3d/texture/maxAnisotropy",description:{ko:"텍스처의 비등방성 필터링(Anisotropy) 옵션을 보여주는 예제입니다.",en:"example showing the Anisotropy option for a texture."}}]},{name:"SkyBox & IBL",list:[{name:"SkyBox",list:[{name:"Skybox using 6 assets",path:"3d/skybox/skybox",description:{ko:"6개의 이미지를 사용하여 스카이박스를 구성하는 예제입니다.",en:"An example of constructing a skybox using 6 images."}},{name:"Skybox transition",list:[{name:"Basic transition",path:"3d/skybox/transition/skyboxTransition",description:{ko:"스카이박스 간의 부드러운 전환 효과를 보여주는 예제입니다.",en:"An example showing smooth transition effects between skyboxes."}},{name:"transitionAlphaTexture - with NoiseTexture",path:"3d/skybox/transition/skyboxTransitionWithNoiseTexture",description:{ko:"노이즈 텍스처와 알파 텍스처를 사용하여 스카이박스 전환 효과를 연출하는 예제입니다.",en:"An example creating skybox transition effects using noise textures and alpha textures."}}]}]},{name:"IBL",list:[{name:"Skybox using IBL",path:"3d/skybox/ibl/skyboxWithIbl",description:{ko:"IBL(Image Based Lighting)을 사용하여 스카이박스를 생성하는 방법을 보여줍니다.",en:"Demonstrates how to create a skybox using IBL (Image Based Lighting)."}},{name:"IBL Test",path:"3d/skybox/ibl/iblTest",description:{ko:"이미지 기반 조명(IBL)을 테스트하는 예제입니다.",en:"An example testing Image-Based Lighting (IBL)."}},{name:"Custom IBL Texture Size",path:"3d/skybox/ibl/iblTextureSize",description:{ko:"IBL 텍스처의 크기를 사용자 정의하는 예제입니다.",en:"An example of customizing the size of the IBL texture."}},{name:"BRDF LUT Test (Dev Only)",path:"3d/skybox/ibl/brdfLutTest",description:{ko:"새로운 IBL 시스템의 기초인 BRDF LUT 생성을 테스트합니다. (개발 확인용)",en:"Tests BRDF LUT generation, the foundation of the new IBL system. (For development verification)"}},{name:"Irradiance Test (Dev Only)",path:"3d/skybox/ibl/irradianceTest",description:{ko:"분리된 IrradianceGenerator를 사용하여 환경맵으로부터 Irradiance 맵을 생성하고 테스트합니다. (개발 확인용)",en:"Generates and tests an Irradiance map from an environment map using the separated IrradianceGenerator. (For development verification)"}}]},{name:"FrustumCulling",list:[{name:"FrustumCulling",path:"3d/frustumCulling/frustumCulling",description:{ko:"카메라 시야 밖의 객체를 렌더링에서 제외하는 절두체 컬링(Frustum Culling) 기능을 시연합니다.",en:"Demonstrates Frustum Culling, which excludes objects outside the camera view from rendering."}},{name:"DistanceCulling",path:"3d/frustumCulling/distanceCulling",description:{ko:"카메라와의 거리에 따라 객체를 렌더링에서 제외하는 거리 컬링 기능을 시연합니다.",en:"Demonstrates Distance Culling, which excludes objects from rendering based on their distance from the camera."}}]},{name:"SkyAtmosphere",list:[{name:"SkyAtmosphere Basic",path:"3d/skyAtmosphere/skyAtmosphere",description:{ko:"물리 기반 대기 산란 시스템인 SkyAtmosphere의 기본적인 설정과 실시간 태양 광원 연동을 시연합니다.",en:"Demonstrates basic configuration and real-time sun light synchronization of the SkyAtmosphere, a physics-based atmospheric scattering system."}},{name:"Material Scattering (Aerial Perspective)",path:"3d/skyAtmosphere/scatteringTest",description:{ko:"거리에 따른 대기 산란(공중 투시) 효과가 다양한 재질(Color, Phong, PBR 등)에 어떻게 적용되는지 활주로 레이아웃을 통해 직관적으로 비교합니다.",en:"Provides an intuitive comparison of how atmospheric scattering (Aerial Perspective) affects various materials (Color, Phong, PBR, etc.) along a distance runway."}},{name:"Atmosphere & IBL Harmony",path:"3d/skyAtmosphere/gltf",description:{ko:"대기 산란, IBL 환경광, 스카이박스 배경이 유기적으로 조화되어 glTF PBR 모델에 물리적 사실감을 부여하는 통합 환경 시뮬레이션입니다.",en:"An integrated simulation showing how atmospheric scattering, IBL, and skybox work in harmony to provide physical realism to a glTF PBR model."}},{name:"SkyAtmosphere LUT Generator",path:"3d/skyAtmosphere/generator",description:{ko:"대기 산란 계산을 위해 내부적으로 생성되는 투과율, 하늘 뷰 등 다양한 LUT(Look-Up Table) 데이터를 시각화하여 분석합니다.",en:"Visualizes and analyzes various internal LUT (Look-Up Table) data such as Transmittance and SkyView generated for atmospheric scattering calculations."}}]}]},{name:"DrawDebugger",list:[{name:"DrawDebugger",path:"3d/drawDebugger/basic",description:{ko:"렌더링 정보를 디버깅하기 위한 도구를 시연하는 예제입니다.",en:"An example demonstrating tools for debugging rendering information."}}]},{name:"Transparent Sort",list:[{name:"Transparent Sort",path:"3d/transparentSort",description:{ko:"메쉬의 재질에 `transparent` 옵션을 적용하여 반투명 객체가 렌더링되는 순서를 확인하는 예제입니다. `transparent`를 사용하여 올바른 렌더링 결과를 확인할 수 있습니다.",en:" example of how to apply the `transparent` option to the mesh's material to see the order in which translucent objects are rendered. You can use `transparent` to see the correct rendering results."}}]},{name:"Noise Texture",experimental:!0,list:[{name:"SimplexTexture",experimental:!0,list:[{experimental:!0,name:"SimplexTexture",path:"3d/noiseTexture/simplex/basic",description:{ko:"심플렉스 노이즈 텍스처를 생성하고 적용하는 기본 예제입니다.",en:"Basic example of generating and applying Simplex Noise Texture."}},{experimental:!0,name:"Custom SimplexTexture - Fire",path:"3d/noiseTexture/simplex/fire",description:{ko:"심플렉스 노이즈를 활용하여 불꽃 효과를 연출하는 커스텀 텍스처 예제입니다.",en:"Custom texture example creating a fire effect using Simplex Noise."}},{experimental:!0,name:"Custom SimplexTexture - Displacement",path:"3d/noiseTexture/simplex/displacement",description:{ko:"심플렉스 노이즈를 활용하여 변위(Displacement) 효과를 주는 예제입니다.",en:"Example applying displacement effects using Simplex Noise."}}]},{name:"VoronoiTexture",experimental:!0,list:[{experimental:!0,name:"VoronoiTexture",path:"3d/noiseTexture/voronoi/basic",description:{ko:"보로노이 노이즈 텍스처를 생성하고 적용하는 예제입니다.",en:"Example of generating and applying Voronoi Noise Texture."}}]}]},{name:"Sprite3D & SpriteSheet3D",list:[{name:"Sprite3D",path:"3d/sprite/sprite3D",description:{ko:"Sprite3D 객체의 사용법을 보여주는 예제입니다.",en:"example of a Sprite3D object."}},{name:"Sprite3D Comparison (World vs Pixel)",path:"3d/sprite/sprite3DCompare",description:{ko:"Sprite3D의 월드 단위 크기(worldSize)와 고정 픽셀 크기(pixelSize) 설정을 비교 시연하는 예제입니다.",en:"A comparison example demonstrating Sprite3D's world unit size (worldSize) and fixed pixel size (pixelSize) settings."}},{name:"SpriteSheet3D",path:"3d/sprite/spriteSheet3D",description:{ko:"SpriteSheet3D 객체의 사용법을 보여주는 예제입니다.",en:"example of a SpriteSheet3D object."}},{name:"SpriteSheet3D Comparison (World vs Pixel)",path:"3d/sprite/spriteSheet3DCompare",description:{ko:"SpriteSheet3D의 월드 단위 크기(worldSize)와 고정 픽셀 크기(pixelSize) 설정을 비교 시연하는 예제입니다.",en:"A comparison example demonstrating SpriteSheet3D's world unit size (worldSize) and fixed pixel size (pixelSize) settings."}}]},{name:"TextField3D",list:[{name:"TextField3D",path:"3d/textField/textField3D",description:{ko:"TextField3D 객체의 사용법을 보여주는 예제입니다.",en:"example of a TextField3D object."}},{name:"TextField3D Comparison (World vs Pixel)",path:"3d/textField/textField3DCompare",description:{ko:"TextField3D의 월드 단위 크기(worldSize)와 고정 픽셀 크기(usePixelSize) 설정을 비교 시연하는 예제입니다.",en:"A comparison example demonstrating TextField3D's world unit size (worldSize) and fixed pixel size (usePixelSize) settings."}}]},{name:"Light",list:[{name:"DirectionalLight",path:"3d/light/directionalLight",description:{ko:"태양광과 같은 직사광(Directional Light)을 시연하는 예제입니다.",en:"An example demonstrating Directional Light, simulating sunlight."}},{name:"PointLight",path:"3d/light/pointLight",description:{ko:"한 지점에서 모든 방향으로 빛을 방출하는 점광원(Point Light)을 시연하는 예제입니다.",en:"An example demonstrating Point Light, emitting light in all directions from a point."}},{name:"PointLight with glTF",path:"3d/light/pointLightWithGltf",description:{ko:"현대적인 감쇄(Attenuation) 수식이 적용된 Point Light와 glTF PBR 모델의 상호작용 예제입니다.",en:"An example of interaction between Point Light with modern attenuation formula and glTF PBR model."}},{name:"SpotLight",path:"3d/light/spotLight",description:{ko:"특정 방향으로 원뿔형 빛을 방출하는 스포트라이트(Spot Light)를 시연하는 예제입니다.",en:"An example demonstrating Spot Light, cone-shaped light in a specific direction."}},{name:"SpotLight with glTF",path:"3d/light/spotLightWithGltf",description:{ko:"현대적인 원뿔 감쇄(Angle Attenuation) 수식이 적용된 Spot Light와 glTF PBR 모델의 상호작용 예제입니다.",en:"An example of interaction between Spot Light with modern angle attenuation formula and glTF PBR model."}},{name:"PointLight Performance(cluster)",path:"3d/light/pointLightPerformance",description:{ko:"PointLight는 클러스터 타일 렌더링을 지원합니다. 1024개의 포인트 라이트를 지원합니다.",en:"PointLight supports clustered tile rendering. Supports 1024 point lights."}},{name:"SpotLight Performance(cluster)",path:"3d/light/spotLightPerformance",description:{ko:"SpotLight의 대량 렌더링 성능(클러스터링)을 테스트하는 예제입니다.",en:"An example testing the mass rendering performance (clustering) of SpotLights."}}]},{name:"Group3D",list:[{name:"Basic Group3D",path:"3d/group3D/basic",description:{ko:"3D 객체들을 그룹화할 수 있는 Group3D 객체의 예제입니다.",en:"Here's an example of a Group3D object that can group 3D objects."}}]},{name:"Tint",experimental:!0,list:[{experimental:!0,name:"Tint",path:"3d/tint/basic",description:{ko:"재질 기반 틴트를 지원합니다. 틴트 사용, tintBlendMode 설정 및 색상 사용 예제입니다.",en:"Supports material-based tint. Examples of using tint, setting tintBlendMode, and color."}}]},{name:"Line3D",experimental:!0,list:[{experimental:!0,name:"Linear Type",path:"3d/line3D/linear",description:{ko:"직선 형태의 라인을 그리는 예제입니다.",en:"An example of drawing linear lines."}},{experimental:!0,name:"Bezier Type",path:"3d/line3D/bezier",description:{ko:"베지에 곡선 형태의 라인을 그리는 예제입니다.",en:"An example of drawing Bezier curve lines."}},{experimental:!0,name:"CatmullRom Type",path:"3d/line3D/catmullRom",description:{ko:"캣멀-롬 스플라인 형태의 라인을 그리는 예제입니다.",en:"An example of drawing Catmull-Rom spline lines."}}]},{name:"Interaction",list:[{name:"MouseEvent",list:[{name:"Mesh",path:"3d/interaction/mouseEvent/mesh",description:{ko:"Mesh에 마우스 이벤트를 설정하는 예제입니다.",en:"Here's an example of setting up mouse events on a Mesh."}},{name:"Sprite3D",path:"3d/interaction/mouseEvent/sprite3D",description:{ko:"Sprite3D에 마우스 이벤트를 설정하는 예제입니다.",en:"Here's an example of setting up mouse events on a Sprite3D."}},{name:"SpriteSheet3D",path:"3d/interaction/mouseEvent/spriteSheet3D",description:{ko:"SpriteSheet3D에 마우스 이벤트를 설정하는 예제입니다.",en:"Here's an example of setting up mouse events on a SpriteSheet3D."}},{name:"TextField3D",path:"3d/interaction/mouseEvent/textField3D",description:{ko:"TextField3D에 마우스 이벤트를 설정하는 예제입니다.",en:"Here's an example of setting up mouse events on a TextField3D."}},{name:"Raycasting (Precision Picking)",path:"3d/interaction/mouseEvent/raycasting",description:{ko:"이 예제는 복잡한 지오메트리(TorusKnot)에 대한 고정밀 레이캐스팅을 보여줍니다.
버텍스 버퍼를 분석하여 정확한 교차 지점, 면 인덱스 및 로컬 좌표를 CPU에서 계산합니다.",en:"This example demonstrates high-precision raycasting on complex geometry (TorusKnot).
It calculates the exact intersection point, face index, and local coordinates on the CPU by analyzing vertex buffers."}}]},{name:"KeyboardEvent",list:[{name:"Keyboard Interaction",path:"3d/interaction/keyboardEvent",description:{ko:"keyboardKeyBuffer를 사용하여 매 프레임 키보드 상태를 체크하고 객체를 제어하는 기초적인 방법을 보여줍니다.",en:"Shows basic way to check keyboard state every frame and control an object using keyboardKeyBuffer."}}]}]},{name:"Shadow",list:[{name:"DirectionalLight Shadow",path:"3d/shadow/directionalShadow",description:{ko:"DirectionalLight에 의한 그림자 효과를 시연하는 예제입니다.",en:"An example demonstrating shadow effects caused by DirectionalLight."}},{name:"DirectionalLight Shadow - GLTF",path:"3d/shadow/gltfDirectionalShadow",description:{ko:"GLTF 모델에 대한 DirectionalLight 그림자 효과를 시연하는 예제입니다.",en:"An example demonstrating DirectionalLight shadow effects on a GLTF model."}}]},{name:"InstancedMesh",list:[{name:"InstancedMesh Simple",path:"3d/instancedMesh/simple",description:{ko:"이 데모는 간단한 Plane을 사용한 인스턴스 성능 테스트를 보여줍니다. ",en:"This demo demonstrates instance performance testing using a simple Plane. "}},{name:"InstancedMesh Sphere",path:"3d/instancedMesh/sphere",description:{ko:"이 데모는 Sphere를 사용한 인스턴스 성능 테스트를 보여줍니다. ",en:"This demo demonstrates instance performance testing using Sphere. "}}]},{name:"LOD",list:[{name:"InstancedMesh GPU LOD",path:"3d/lod/InstanceMeshGPULOD",description:{ko:"InstancedMesh에 GPU 기반 LOD를 적용하여 수만 개의 객체를 효율적으로 최적화하는 성능을 시연합니다.",en:"Demonstrates efficient optimization of tens of thousands of objects by applying GPU-based LOD to InstancedMesh."}},{name:"InstancedMesh Multi-Material GPU LOD",path:"3d/lod/InstanceMeshGPULOD_material",description:{ko:"인스턴싱 메시에서 거리에 따라 지오메트리와 머티리얼을 동시에 변경하는 GPU 기반 LOD 기능을 보여줍니다.",en:"Shows GPU-based LOD functionality that simultaneously changes geometry and materials by distance in instanced meshes."}},{name:"Mesh CPU LOD",path:"3d/lod/MeshCPULOD",description:{ko:"수천 개의 개별 Mesh 객체들에 CPU 기반 LOD를 적용하여 거리별 최적화 성능을 테스트합니다.",en:"Tests distance-based optimization performance by applying CPU-based LOD to thousands of individual Mesh objects."}},{name:"Mesh Multi-Material CPU LOD",path:"3d/lod/MeshCPULOD_material",description:{ko:"개별 메시 객체들에 대해 거리에 따라 지오메트리와 머티리얼이 함께 변화하는 CPU 기반 LOD를 시연합니다.",en:"Demonstrates CPU-based LOD where both geometry and materials change together by distance for individual mesh objects."}}]},{name:"ParticleSystem",list:[{name:"Particle",path:"3d/particle/basic",description:{ko:"기본적인 파티클 시스템을 시연하는 예제입니다.",en:"An example demonstrating a basic particle system."}},{name:"Multi Particle Performance",path:"3d/particle/performance",description:{ko:"다수의 파티클 시스템을 동시에 렌더링하여 성능을 테스트하는 예제입니다.",en:"An example testing performance by rendering multiple particle systems simultaneously."}}]},{name:"Indirect Draw Test",list:[{name:"drawIndexedIndirect Test",path:"3d/indirectDrawTest",description:{ko:"drawIndexedIndirect 기능을 테스트하는 예제입니다.",en:"An example testing the drawIndexedIndirect function."}}]}]},{name:"GLTF",list:[{name:"Basic",list:[{name:"TextureEncodingTest",path:"gltf/basic/textureEncodingTest",description:{ko:"텍스처가 올바른 전달 함수(Transfer Function)로 샘플링되는지 테스트합니다. Base Color와 Emissive가 sRGB에서 올바르게 디코딩되는지 확인합니다.",en:"Tests that textures are sampled with the correct transfer functions. Verifies base color and emissive textures are decoded from sRGB."}},{name:"TextureLinear InterpolationTest",path:"gltf/basic/textureLinearInterpolationTest",description:{ko:"sRGB 디코딩 후 선형 값에 대해 텍스처 선형 보간이 올바르게 수행되는지 테스트합니다.",en:"Tests that linear texture interpolation is correctly performed on linear values (after sRGB decoding)."}},{name:"VertexColorTest",path:"gltf/basic/vertexColorTest",description:{ko:"뷰어가 정점 색상(COLORS_0 속성)을 올바르게 지원하는지 테스트합니다.",en:"Tests proper support for vertex colors (COLORS_0 attribute) in the viewer."}},{name:"BoxVertexColors",path:"gltf/basic/boxVertexColors",description:{ko:"각 면에 정점 색상이 적용된 간단한 박스 모델입니다.",en:"A simple box model with vertex colors applied to each face."}},{name:"OrientationTest",path:"gltf/basic/orientationTest",description:{ko:"노드의 회전 및 방향(Quaternion) 처리가 올바른지 테스트합니다.",en:"Tests the correctness of node rotation and orientation (Quaternion) handling."}},{name:"TextureCoordinateTest",path:"gltf/basic/textureCoordinateTest",description:{ko:"XYZ 위치(3D 공간 좌표)와 UV 위치(2D 텍스처 좌표) 간의 관계를 보여줍니다.",en:"Demonstrates the relationship between XYZ positions and UV texture coordinates."}},{name:"AlphaBlendModeTest",path:"gltf/basic/alphaBlendModeTest",description:{ko:"다양한 알파 모드(OPAQUE, BLEND, MASK)가 올바르게 렌더링되는지 테스트합니다.",en:"Tests the various alpha modes (OPAQUE, BLEND, MASK) to verify correct rendering."}},{name:"TextureSettingsTest",path:"gltf/basic/textureSettingsTest",description:{ko:"텍스처 샘플링 설정(Wrap 모드, 필터링)을 테스트합니다.",en:"Tests texture sampling settings (Wrap modes, Filtering)."}},{name:"MultiUVTest",path:"gltf/basic/multiUVTest",description:{ko:"다중 텍스처 좌표 속성(예: 색상용 TEXCOORD_0, 기타 요소용 TEXCOORD_1)의 사용을 시연합니다.",en:"Demonstrates the usage of multiple texture coordinate attributes (e.g., TEXCOORD_0 for color, TEXCOORD_1 for other elements)."}},{name:"MetalRoughSpheres",path:"gltf/basic/metalRoughSpheres",description:{ko:"다양한 금속성(Metallic)과 거칠기(Roughness) 값을 가진 구체들을 통해 PBR 렌더링을 테스트합니다.",en:"Tests PBR rendering via spheres with varying Metallic and Roughness values."}},{name:"MetalRoughSpheresNoTextures",path:"gltf/basic/metalRoughSpheresNoTextures",description:{ko:"텍스처 없이 재질의 요소(Factor) 값만으로 금속성과 거칠기를 표현하는 테스트입니다.",en:"Tests representing metallic and roughness using only material factor values without textures."}},{name:"WaterBottle",path:"gltf/basic/waterBottle",description:{ko:"Normal, Occlusion, Emissive 맵을 사용하는 기본적인 금속/거칠기(Metal/Roughness) PBR 물병 모델입니다.",en:"A basic Metal/Roughness PBR water bottle model using Normal, Occlusion, and Emissive maps."}},{name:"NormalTangentTest",path:"gltf/basic/normalTangentTest",description:{ko:"노멀 맵핑과 탄젠트 공간 계산의 정확성을 테스트합니다.",en:"Tests the accuracy of normal mapping and tangent space calculations."}},{name:"NormalTangentMirrorTest",path:"gltf/basic/normalTangentMirrorTest",description:{ko:"미러링된 텍스처 좌표에서의 노멀 맵핑 처리를 테스트합니다.",en:"Tests normal mapping handling with mirrored texture coordinates."}},{name:"NegativeScaleTest",path:"gltf/basic/negativeScaleTest",description:{ko:"음수 스케일(반전)이 적용된 노드의 렌더링을 테스트합니다.",en:"Tests rendering of nodes with negative scale (inversion) applied."}},{name:"EnvironmentTest",path:"gltf/basic/environmentTest",description:{ko:"금속 표면에서의 환경 맵 반사 효과를 테스트합니다.",en:"Tests environment map reflection effects on metallic surfaces."}},{name:"Generate normal vector test",path:"gltf/basic/generateNormalTest",description:{ko:"모델에 노멀 정보가 없을 때 자동으로 노멀 벡터를 생성하는 기능을 테스트합니다.",en:"Tests the automatic generation of normal vectors when the model lacks normal information."}}]},{name:"Basic Compare",list:[{name:"CompareBaseColor",path:"gltf/basic/compareBaseColor",description:{ko:"기본 색상(Base Color) 렌더링 결과를 비교합니다.",en:"Compares Base Color rendering results."}},{name:"CompareAlphaCoverage",path:"gltf/basic/compareAlphaCoverage",description:{ko:"알파 커버리지(Alpha Coverage) 렌더링 결과를 비교합니다.",en:"Compares Alpha Coverage rendering results."}},{name:"CompareMetallic",path:"gltf/basic/compareMetallic",description:{ko:"금속성(Metallic) 렌더링 결과를 비교합니다.",en:"Compares Metallic rendering results."}},{name:"CompareNormal",path:"gltf/basic/compareNormal",description:{ko:"노멀 맵(Normal Map) 렌더링 결과를 비교합니다.",en:"Compares Normal Map rendering results."}},{name:"CompareRoughness",path:"gltf/basic/compareRoughness",description:{ko:"거칠기(Roughness) 렌더링 결과를 비교합니다.",en:"Compares Roughness rendering results."}},{name:"CompareAmbientOcclusion",path:"gltf/basic/compareAmbientOcclusion",description:{ko:"앰비언트 오클루전(AO) 렌더링 결과를 비교합니다.",en:"Compares Ambient Occlusion (AO) rendering results."}}]},{name:"Animation",list:[{name:"Basic Animations",path:"gltf/animation/basicAnimations",description:{ko:"노드의 이동, 회전, 크기 조절 애니메이션을 보여주는 기본 예제입니다.",en:"Basic example showing node translation, rotation, and scaling animations."}},{name:"SimpleSkin",path:"gltf/animation/simpleSkin",description:{ko:"가장 기본적인 형태의 스키닝(Skinning) 애니메이션 예제입니다.",en:"The most basic example of skinning animation."}},{name:"SimpleMorph",path:"gltf/animation/simpleMorph",description:{ko:"간단한 모프 타겟(Morph Target) 애니메이션 예제입니다.",en:"Simple Morph Target animation example."}},{name:"RiggedSimple",path:"gltf/animation/riggedSimple",description:{ko:"간단하게 리깅된 원통형 메쉬를 통해 스키닝 동작을 확인합니다.",en:"Verifies skinning behavior via a simply rigged cylindrical mesh."}},{name:"RiggedFigure",path:"gltf/animation/riggedFigure",description:{ko:"리깅된 인간형 캐릭터 모델의 애니메이션을 테스트합니다.",en:"Tests animation of a rigged humanoid character model."}},{name:"InterpolationTest",path:"gltf/animation/interpolationTest",description:{ko:"애니메이션 보간 모드(Step, Linear, Cubic Spline)의 차이를 보여줍니다.",en:"Demonstrates the differences between animation interpolation modes (Step, Linear, Cubic Spline)."}},{name:"CesiumMan & MilkTruck",path:"gltf/animation/cesiumMan",description:{ko:"스키닝된 CesiumMan과 애니메이션이 적용된 우유 트럭 모델입니다.",en:"Skinned CesiumMan and animated Milk Truck models."}},{name:"BrainStem",path:"gltf/animation/brainStem",description:{ko:"복잡한 계층 구조와 스키닝을 가진 BrainStem 모델 애니메이션입니다.",en:"BrainStem model animation with complex hierarchy and skinning."}},{name:"MorphStressTest",path:"gltf/animation/morphStressTest",description:{ko:"다수의 활성 정점 속성(최대 18개)을 사용하여 모프 타겟 구현을 스트레스 테스트합니다.",en:"Stress-tests morph target implementations with a high number of active vertex attributes (up to 18)."}},{name:"RecursiveSkeletons",path:"gltf/animation/recursiveSkeletons",description:{ko:"복잡한 스키닝 케이스(다른 스킨으로 메쉬 재사용, 단일 스켈레톤에 다중 스킨 바인딩)를 테스트합니다.",en:"Tests complex skinning cases: reusing meshes with different skins and binding multiple skins to a single skeleton."}},{name:"Animation Performance Test",list:[{name:"Medium load Skinning",path:"gltf/animation/performance/mediumLoadSkinning",description:{ko:"19개의 관절과 57개의 애니메이션 채널을 가진 다수의 모델을 계산하는 성능 데모입니다.",en:"This is a performance demo that computes a large number of models with 19 joints and 57 animation channels."}},{name:"High vertex load Skinning",path:"gltf/animation/performance/highVertexLoadSkinning",description:{ko:"많은 정점과 관절을 가진 모델에 대한 스키닝 성능을 측정하는 테스트를 수행합니다. 각 장치의 성능 한계를 확인하기 위해 FPS와 GPU/CPU 사용량을 모니터링합니다.",en:"perform tests to measure skinning performance for models with many vertices and joints. We monitor FPS and GPU/CPU utilization to determine performance limits for each device."}},{name:"Morph target load Test",path:"gltf/animation/performance/highMorphTarget",description:{ko:"수백 개의 MorphStressTest 모델을 인스턴스화하여 모프 스트레스 테스트를 수행합니다.
\n실시간 모프 타겟 스키닝 성능을 극한까지 벤치마킹합니다. 세 가지 애니메이션 중 가장 무거운 모프 타겟 애니메이션의 성능을 테스트합니다.
\n각 장치의 성능 한계를 확인하세요.",en:"Perform morph stress tests by instantiating hundreds of MorphStressTest models.
\nBenchmark real-time morph target skinning performance to the limit. Test the performance of the heaviest of the three animations, the morph target animation.
\nCheck performance limits on each device."}}]}]},{name:"3D Models",list:[{name:"corset",path:"gltf/models/corset",description:{ko:"복잡한 형상과 텍스처를 가진 고해상도 코르셋 모델입니다.",en:"High-resolution Corset model with complex geometry and textures."}},{name:"Helmets",path:"gltf/models/helmets",description:{ko:"손상된 헬멧(Damaged Helmet) 등 고품질 PBR 텍스처를 보여주는 모델들입니다.",en:"Models showcasing high-quality PBR textures, such as the Damaged Helmet."}},{name:"Sponza",path:"gltf/models/sponza",description:{ko:"조명 테스트에 널리 사용되는 건물 내부 모델입니다. 현대적인 PBR 파이프라인을 위해 고해상도 지오메트리로 리메이크되었습니다.",en:"Building interior commonly used for testing lighting. Remade for modern PBR pipelines with high-resolution geometry."}},{name:"Tokyo",path:"gltf/models/tokyo",description:{ko:"수많은 드로우 콜과 대규모 씬 렌더링을 테스트하는 도쿄 도시 모델입니다.",en:"Tokyo city model testing large-scale scene rendering and numerous draw calls."}},{name:"texcooredNTest",path:"gltf/models/texcooredNTest",description:{ko:"다중 텍스처 좌표 채널의 동작을 확인하는 테스트 모델입니다.",en:"Test model verifying the behavior of multiple texture coordinate channels."}},{name:"ABeautifulGame",path:"gltf/models/aBeautifulGame",extensionList:["KHR_materials_transmission","KHR_materials_volume"],description:{ko:"투과(Transmission)와 볼륨(Volume) 효과를 시연하는 체스 세트입니다.",en:"A chess set demonstrating transmission and volume."}}]},{name:"GLTF Extensions",list:[{name:"KHR_materials_anisotropy",list:[{name:"CompareAnisotropy",path:"gltf/gltfExtensions/anisotropy/compareAnisotropy",extensionList:["KHR_materials_anisotropy"],description:{ko:"비등방성(Anisotropy)이 있는 렌더링과 없는 렌더링을 비교합니다.",en:"Compares rendering with and without anisotropy."}},{name:"AnisotropyDiscTest",path:"gltf/gltfExtensions/anisotropy/anisotropyDiscTest",extensionList:["KHR_materials_anisotropy"],description:{ko:"원판 형태의 비등방성 하이라이트 회전을 테스트합니다.",en:"Tests anisotropic highlight rotation on a disc shape."}},{name:"AnisotropyRotationTest",path:"gltf/gltfExtensions/anisotropy/anisotropyRotationTest",extensionList:["KHR_materials_anisotropy"],description:{ko:"비등방성 방향 회전에 따른 렌더링 변화를 테스트합니다.",en:"Tests rendering changes based on anisotropy direction rotation."}},{name:"AnisotropyStrengthTest",path:"gltf/gltfExtensions/anisotropy/anisotropyStrengthTest",extensionList:["KHR_materials_anisotropy"],description:{ko:"비등방성 강도(Strength)에 따른 하이라이트 변화를 테스트합니다.",en:"Tests highlight changes based on anisotropy strength."}},{name:"AnisotropyBarnLamp",path:"gltf/gltfExtensions/anisotropy/anisotropyBarnLamp",extensionList:["KHR_materials_anisotropy"],description:{ko:"비등방성(Anisotropic) 재질 속성을 보여주는 헛간 램프 모델입니다.",en:"A barn lamp model showcasing anisotropic material properties."}}]},{name:"KHR_materials_iridescence",list:[{name:"CompareIridescence",path:"gltf/gltfExtensions/iridescence/compareIridescence",extensionList:["KHR_materials_iridescence"],description:{ko:"무지개빛(Iridescence) 박막 간섭 효과를 비교합니다.",en:"Compares Iridescence thin-film interference effects."}},{name:"IridescenceDielectricSpheres",path:"gltf/gltfExtensions/iridescence/iridescenceDielectricSpheres",extensionList:["KHR_materials_iridescence","KHR_materials_transmission","KHR_materials_volume"],description:{ko:"비금속(유전체) 재질에서 KHR_materials_iridescence 확장을 테스트합니다.",en:"Tests the KHR_materials_iridescence extension on non-metallic (dielectric) materials."}},{name:"IridescenceMetallicSpheres",path:"gltf/gltfExtensions/iridescence/iridescenceMetallicSpheres",extensionList:["KHR_materials_iridescence"],description:{ko:"금속 구체에 적용된 무지개빛 효과를 테스트합니다.",en:"Tests iridescence effects applied to metallic spheres."}},{name:"IridescenceSuzanne",path:"gltf/gltfExtensions/iridescence/iridescenceSuzanne",extensionList:["KHR_materials_iridescence"],description:{ko:"Suzanne 모델에 적용된 무지개빛 쉐이더 테스트입니다.",en:"Iridescence shader test applied to the Suzanne model."}},{name:"IridescenceLamp",path:"gltf/gltfExtensions/iridescence/iridescenceLamp",extensionList:["KHR_materials_iridescence","KHR_materials_transmission","KHR_materials_volume"],description:{ko:"투과 및 볼륨 효과와 함께 KHR_materials_iridescence를 보여주는 Wayfair 램프 모델입니다.",en:"A Wayfair lamp model showcasing transmission, volume, and KHR_materials_iridescence."}},{name:"SunglassesKhronos",path:"gltf/gltfExtensions/iridescence/sunglassesKhronos",extensionList:["KHR_materials_iridescence","KHR_materials_transmission"],description:{ko:"렌즈에 얇은 막 무지개빛 효과가 적용된 선글라스 모델입니다.",en:"Sunglasses model with thin-film iridescence effects applied to the lenses."}},{name:"IridescentDishWithOlives",path:"gltf/gltfExtensions/iridescence/iridescentDishWithOlives",extensionList:["KHR_materials_iridescence","KHR_materials_transmission","KHR_materials_volume","KHR_materials_ior","KHR_materials_specular"],description:{ko:"투과, 볼륨, IOR 및 스펙큘러 속성을 보여주는 접시 모델입니다.",en:"A dish demonstrating transmission, volume, IOR, and specular properties."}}]},{name:"KHR_materials_clearcoat",list:[{name:"CompareClearcoat",path:"gltf/gltfExtensions/clearcoat/compareClearcoat",extensionList:["KHR_materials_clearcoat"],description:{ko:"클리어코트(Clearcoat) 재질 렌더링 결과를 비교합니다.",en:"Compares Clearcoat material rendering results."}},{name:"ClearCoatTest",path:"gltf/gltfExtensions/clearcoat/clearCoatTest",extensionList:["KHR_materials_clearcoat"],description:{ko:"다양한 거칠기와 클리어코트 강도를 테스트합니다.",en:"Tests various roughness and clearcoat strengths."}},{name:"ClearcoatWicker",path:"gltf/gltfExtensions/clearcoat/clearcoatWicker",extensionList:["KHR_materials_clearcoat"],description:{ko:"직물 표면 위에 코팅된 클리어코트 효과를 보여주는 위커 모델입니다.",en:"Wicker model showing clearcoat effect coated over a woven surface."}},{name:"ClearCoatCarPaint",path:"gltf/gltfExtensions/clearcoat/clearCoatCarPaint",extensionList:["KHR_materials_clearcoat"],description:{ko:"자동차 페인트와 같은 다중 레이어 재질 표현을 테스트합니다.",en:"Tests multi-layer material representation like car paint."}}]},{name:"KHR_materials_dispersion",list:[{name:"CompareDispersion",path:"gltf/gltfExtensions/dispersion/compareDispersion",extensionList:["KHR_materials_dispersion","KHR_materials_transmission"],description:{ko:"빛의 분산(Dispersion) 효과를 비교합니다.",en:"Compares light dispersion effects."}},{name:"DispersionTest",path:"gltf/gltfExtensions/dispersion/dispersionTest",extensionList:["KHR_materials_dispersion","KHR_materials_transmission"],description:{ko:"프리즘과 같은 빛의 분산 현상을 테스트합니다.",en:"Tests light dispersion phenomena like a prism."}},{name:"DragonDispersion",path:"gltf/gltfExtensions/dispersion/dragonDispersion",extensionList:["KHR_materials_dispersion","KHR_materials_transmission","KHR_materials_volume"],description:{ko:"용 모델에 적용된 보석 같은 분산 효과를 보여줍니다.",en:"Shows gem-like dispersion effects applied to a Dragon model."}}]},{name:"KHR_materials_emissive_strength",list:[{name:"CompareEmissiveStrength",path:"gltf/gltfExtensions/emissiveStrength/compareEmissiveStrength",extensionList:["KHR_materials_emissive_strength"],description:{ko:"발광(Emissive) 강도 증폭 효과를 비교합니다.",en:"Compares Emissive Strength amplification effects."}},{name:"EmissiveStrengthTest",path:"gltf/gltfExtensions/emissiveStrength/emissiveStrengthTest",extensionList:["KHR_materials_emissive_strength"],description:{ko:"1.0을 초과하는 고강도 발광 표현을 테스트합니다.",en:"Tests high-intensity emissive representation exceeding 1.0."}}]},{name:"KHR_materials_sheen",list:[{name:"CompareSheen",path:"gltf/gltfExtensions/sheen/compareSheen",extensionList:["KHR_materials_sheen"],description:{ko:"직물 등의 미세한 반사광(Sheen) 효과를 비교합니다.",en:"Compares Sheen effects seen on fabrics etc."}},{name:"SheenTestGrid",path:"gltf/gltfExtensions/sheen/sheenTestGrid",extensionList:["KHR_materials_sheen"],description:{ko:"Sheen 색상과 거칠기에 따른 변화를 그리드로 테스트합니다.",en:"Tests changes based on Sheen color and roughness in a grid."}},{name:"SheenCloth",path:"gltf/gltfExtensions/sheen/sheenCloth",extensionList:["KHR_materials_sheen"],description:{ko:"Sheen 효과를 보여주는 직물 예제입니다.",en:"A fabric example showcasing sheen."}},{name:"SheenChair",path:"gltf/gltfExtensions/sheen/sheenChair",extensionList:["KHR_materials_sheen","KHR_materials_variants"],description:{ko:"재질 변형(Variant)과 Sheen 효과를 보여주는 의자 모델입니다.",en:"A chair model demonstrating material variants and sheen."}},{name:"GlamVelvetSofa",path:"gltf/gltfExtensions/sheen/glamVelvetSofa",extensionList:["KHR_materials_sheen","KHR_materials_specular","KHR_materials_variants"],description:{ko:"고급 벨벳 소파의 질감을 표현하는 Sheen 모델입니다.",en:"Sheen model expressing the texture of a luxury velvet sofa."}},{name:"ChairDamaskPurplegold",path:"gltf/gltfExtensions/sheen/chairDamaskPurplegold",extensionList:["KHR_materials_sheen"],description:{ko:"다마스크 패턴 의자의 직물 느낌을 표현합니다.",en:"Expresses the fabric feel of a damask pattern chair."}},{name:"SheenWoodLeatherSofa",path:"gltf/gltfExtensions/sheen/sheenWoodLeatherSofa",extensionList:["KHR_materials_sheen"],description:{ko:"가죽과 나무 재질이 혼합된 소파에서의 Sheen 효과입니다.",en:"Sheen effect on a sofa combining leather and wood materials."}}]},{name:"KHR_materials_specular",list:[{name:"CompareSpecular",path:"gltf/gltfExtensions/specular/compareSpecular",extensionList:["KHR_materials_specular"],description:{ko:"스펙큘러(Specular) 반사 강도 및 색상 제어를 비교합니다.",en:"Compares Specular reflection strength and color control."}},{name:"SpecularTest",path:"gltf/gltfExtensions/specular/specularTest",extensionList:["KHR_materials_specular"],description:{ko:"유전체 재질의 스펙큘러 하이라이트 조절을 테스트합니다.",en:"Tests specular highlight adjustments on dielectric materials."}},{name:"SpecularSilkPouf",path:"gltf/gltfExtensions/specular/specularSilkPouf",extensionList:["KHR_materials_specular"],description:{ko:"스펙큘러 속성을 보여주는 실크 푸프 모델입니다.",en:"A silk pouf model demonstrating specular properties."}}]},{name:"KHR_materials_unlit",list:[{name:"UnlitTest",path:"gltf/gltfExtensions/unlit/unlitTest",extensionList:["KHR_materials_unlit"],description:{ko:"조명의 영향을 받지 않는 Unlit(무광) 재질을 테스트합니다.",en:"Tests Unlit materials not affected by lighting."}}]},{name:"KHR_texture_transform",list:[{name:"TextureTransformTest",path:"gltf/gltfExtensions/textureTransform/textureTransformTest",extensionList:["KHR_texture_transform"],description:{ko:"KHR_texture_transform 확장의 사용법(스케일, 회전, 이동)을 시연합니다.",en:"Demonstrates the usage of the KHR_texture_transform extension (scaling, rotation, translation)."}},{name:"TextureTransformMultiTest",path:"gltf/gltfExtensions/textureTransform/textureTransformMultiTest",extensionList:["KHR_texture_transform"],description:{ko:"여러 텍스처에 서로 다른 변환을 적용하는 테스트입니다.",en:"Tests applying different transforms to multiple textures."}}]},{name:"KHR_materials_diffuseTransmission",list:[{name:"DiffuseTransmissionTest",path:"gltf/gltfExtensions/diffuseTransmission/diffuseTransmissionTest",extensionList:["KHR_materials_diffuseTransmission"],description:{ko:"반투명한 물체의 확산 투과(Diffuse Transmission) 효과를 테스트합니다.",en:"Tests Diffuse Transmission effects on translucent objects."}},{name:"DiffuseTransmissionTeacup",path:"gltf/gltfExtensions/diffuseTransmission/diffuseTransmissionTeacup",extensionList:["KHR_materials_diffuseTransmission"],description:{ko:"얇은 찻잔을 통과하는 빛의 확산을 보여줍니다.",en:"Shows light diffusion passing through a thin teacup."}}]},{name:"KHR_materials_transmission",list:[{name:"CompareTransmission",path:"gltf/gltfExtensions/transmission/compareTransmission",extensionList:["KHR_materials_transmission"],description:{ko:"투명한 물체의 투과(Transmission) 렌더링을 비교합니다.",en:"Compares Transmission rendering of transparent objects."}},{name:"TransmissionTest",path:"gltf/gltfExtensions/transmission/transmissionTest",extensionList:["KHR_materials_transmission","KHR_materials_ior"],description:{ko:"다양한 투과율과 거칠기에 따른 굴절 효과를 테스트합니다.",en:"Tests refraction effects based on various transmission rates and roughness."}},{name:"TransmissionRoughnessTest",path:"gltf/gltfExtensions/transmission/transmissionRoughnessTest",extensionList:["KHR_materials_transmission"],description:{ko:"거친 표면을 가진 투명 재질의 흐림 효과를 테스트합니다.",en:"Tests blurring effects on transparent materials with rough surfaces."}},{name:"StainedGlassLamp",path:"gltf/gltfExtensions/transmission/stainedGlassLamp",extensionList:["KHR_materials_transmission"],description:{ko:"스테인드글라스 램프를 통해 색상이 있는 투과광을 보여줍니다.",en:"Shows colored transmitted light through a stained glass lamp."}},{name:"ChronographWatch",path:"gltf/gltfExtensions/transmission/chronographWatch",extensionList:["KHR_materials_transmission","KHR_materials_variants"],description:{ko:"시계 유리의 투명도와 내부 디테일을 보여주는 고품질 모델입니다.",en:"High-quality model showing watch glass transparency and internal details."}},{name:"MosquitoInAmber",path:"gltf/gltfExtensions/transmission/mosquitoInAmber",extensionList:["KHR_materials_transmission","KHR_materials_volume","KHR_materials_ior"],description:{ko:"호박(Amber) 속에 갇힌 모기를 통해 투과, 굴절률(IOR), 볼륨 속성을 시연합니다.",en:"A mosquito encased in amber, demonstrating the use of transmission, IOR, and volume properties."}},{name:"CommercialRefrigerator",path:"gltf/gltfExtensions/transmission/commercialRefrigerator",extensionList:["KHR_materials_transmission"],description:{ko:"유리 문을 가진 상업용 냉장고 모델입니다.",en:"Commercial refrigerator model with glass doors."}}]},{name:"KHR_materials_volume",list:[{name:"CompareIor",path:"gltf/gltfExtensions/volume/compareIor",extensionList:["KHR_materials_ior"],description:{ko:"굴절률(IOR)에 따른 빛의 굴절 차이를 비교합니다.",en:"Compares light refraction differences based on Index of Refraction (IOR)."}},{name:"IORTestGrid",path:"gltf/gltfExtensions/volume/IORTestGrid",extensionList:["KHR_materials_ior"],description:{ko:"다양한 IOR 값에 따른 굴절 변화를 그리드로 테스트합니다.",en:"Tests refraction changes based on various IOR values in a grid."}},{name:"CompareVolume",path:"gltf/gltfExtensions/volume/compareVolume",extensionList:["KHR_materials_volume"],description:{ko:"볼륨(Volume) 흡수 및 산란 효과를 비교합니다.",en:"Compares Volume absorption and scattering effects."}},{name:"TransmissionThinwallTestGrid",path:"gltf/gltfExtensions/volume/transmissionThinwallTestGrid",extensionList:["KHR_materials_transmission","KHR_materials_volume"],description:{ko:"얇은 벽(Thin-walled) 옵션 활성화 여부에 따른 투과 차이를 테스트합니다.",en:"Tests transmission differences based on Thin-walled option activation."}},{name:"AttenuationTest",path:"gltf/gltfExtensions/volume/attenuationTest",extensionList:["KHR_materials_volume"],description:{ko:"빛이 매질을 통과할 때의 감쇠(Attenuation) 거리와 색상을 테스트합니다.",en:"Tests attenuation distance and color as light passes through a medium."}},{name:"GlassVaseFlowers",path:"gltf/gltfExtensions/volume/glassVaseFlowers",extensionList:["KHR_materials_transmission","KHR_materials_volume","KHR_materials_ior"],description:{ko:"유리 꽃병과 물의 볼륨 효과를 보여주는 모델입니다.",en:"Model showing volume effects of a glass vase and water."}},{name:"GlassBrokenWindow",path:"gltf/gltfExtensions/volume/glassBrokenWindow",extensionList:["KHR_materials_transmission","KHR_materials_volume","KHR_materials_ior"],description:{ko:"깨진 유리창의 두께감과 굴절을 표현합니다.",en:"Expresses the thickness and refraction of a broken window."}},{name:"GlassHurricaneCandleHolder",path:"gltf/gltfExtensions/volume/glassHurricaneCandleHolder",extensionList:["KHR_materials_transmission","KHR_materials_volume","KHR_materials_ior"],description:{ko:"복잡한 유리 형태의 굴절과 반사를 보여주는 캔들 홀더입니다.",en:"Candle holder showing refraction and reflection of complex glass shapes."}},{name:"DragonAttenuation",path:"gltf/gltfExtensions/volume/dragonAttenuation",extensionList:["KHR_materials_transmission","KHR_materials_volume"],description:{ko:"KHR_materials_transmission과 KHR_materials_volume을 사용하여 색유리와 같은 객체를 표현합니다.",en:"Showcases KHR_materials_transmission and KHR_materials_volume, creating an object that resembles colored glass."}}]}]}]},{name:"PostEffect",list:[{name:"Convolution",path:"postEffect/convolution",description:{ko:"컨볼루션 필터 효과를 시연하는 예제입니다.",en:"An example demonstrating convolution filter effects."}},{name:"FilmGrain",path:"postEffect/filmGrain",description:{ko:"필름 그레인 효과를 시연하는 예제입니다.",en:"An example demonstrating film grain effects."}},{name:"OldBloom",path:"postEffect/oldBloom",description:{ko:"고전적인 블룸 효과를 시연하는 예제입니다.",en:"An example demonstrating classic bloom effects."}},{name:"Sharpen",path:"postEffect/sharpen",description:{ko:"선명도(Sharpen) 효과를 시연하는 예제입니다.",en:"An example demonstrating sharpen effects."}},{name:"Adjustments",list:[{name:"Grayscale",path:"postEffect/adjustments/grayscale",description:{ko:"그레이스케일 색상 보정 효과 예제입니다.",en:"Example of Grayscale color adjustment effect."}},{name:"Invert",path:"postEffect/adjustments/invert",description:{ko:"색상 반전 효과 예제입니다.",en:"Example of Invert color adjustment effect."}},{name:"ColorBalance",path:"postEffect/adjustments/colorBalance",description:{ko:"컬러 밸런스 색상 보정 효과 예제입니다.",en:"Example of Color Balance color adjustment effect."}},{name:"ColorTemperatureTint",path:"postEffect/adjustments/colorTemperatureTint",description:{ko:"색온도 및 틴트 색상 보정 효과 예제입니다.",en:"Example of Color Temperature & Tint color adjustment effect."}},{name:"BrightnessContrast",path:"postEffect/adjustments/brightnessContrast",description:{ko:"밝기 및 대비 색상 보정 효과 예제입니다.",en:"Example of Brightness & Contrast color adjustment effect."}},{name:"HueSaturation",path:"postEffect/adjustments/hueSaturation",description:{ko:"색조 및 채도 색상 보정 효과 예제입니다.",en:"Example of Hue & Saturation color adjustment effect."}},{name:"Threshold",path:"postEffect/adjustments/threshold",description:{ko:"임계값(Threshold) 색상 보정 효과 예제입니다.",en:"Example of Threshold color adjustment effect."}},{name:"Vibrance",path:"postEffect/adjustments/vibrance",description:{ko:"활기(Vibrance) 색상 보정 효과 예제입니다.",en:"Example of Vibrance color adjustment effect."}}]},{name:"Blur",list:[{name:"Blur",path:"postEffect/blur/blur",description:{ko:"기본 블러 효과 예제입니다.",en:"Example of Basic Blur effect."}},{name:"BlurX",path:"postEffect/blur/blurX",description:{ko:"가로 방향 블러 효과 예제입니다.",en:"Example of Horizontal Blur effect."}},{name:"BlurY",path:"postEffect/blur/blurY",description:{ko:"세로 방향 블러 효과 예제입니다.",en:"Example of Vertical Blur effect."}},{name:"DirectionalBlur",path:"postEffect/blur/directionalBlur",description:{ko:"방향성 블러 효과 예제입니다.",en:"Example of Directional Blur effect."}},{name:"GaussianBlur",path:"postEffect/blur/gaussianBlur",description:{ko:"가우시안 블러 효과 예제입니다.",en:"Example of Gaussian Blur effect."}},{name:"RadialBlur",path:"postEffect/blur/radialBlur",description:{ko:"방사형 블러 효과 예제입니다.",en:"Example of Radial Blur effect."}},{name:"ZoomBlur",path:"postEffect/blur/zoomBlur",description:{ko:"줌 블러 효과 예제입니다.",en:"Example of Zoom Blur effect."}}]},{name:"Lens",list:[{name:"LensDistortion",path:"postEffect/lens/lensDistortion",description:{ko:"렌즈 왜곡 효과 예제입니다.",en:"Example of Lens Distortion effect."}},{name:"ChromaticAberration",path:"postEffect/lens/chromaticAberration",description:{ko:"색수차 효과 예제입니다.",en:"Example of Chromatic Aberration effect."}},{name:"DepthOfField",path:"postEffect/lens/dof",description:{ko:"피사계 심도(DoF) 효과 예제입니다.",en:"Example of Depth of Field effect."}},{name:"Vignetting",path:"postEffect/lens/vignetting",description:{ko:"비네팅 효과 예제입니다.",en:"Example of Vignetting effect."}}]},{name:"Fog",list:[{name:"Fog",path:"postEffect/fog/fog",description:{ko:"안개 효과를 시연하는 예제입니다.",en:"An example demonstrating fog effects."}},{name:"HeightFog",path:"postEffect/fog/heightFog",description:{ko:"높이 기반 안개 효과를 시연하는 예제입니다.",en:"An example demonstrating height-based fog effects."}}]},{name:"Screen Space Reflection",experimental:!0,list:[{experimental:!0,name:"SSR",path:"postEffect/ssr",description:{ko:"화면 공간 반사(SSR) 효과를 시연하는 예제입니다.",en:"An example demonstrating Screen Space Reflection (SSR) effects."}}]},{name:"Screen Space Ambient Occlusion",list:[{name:"SSAO",path:"postEffect/ssao",description:{ko:"화면 공간 앰비언트 오클루전(SSAO) 효과를 시연하는 예제입니다.",en:"An example demonstrating Screen Space Ambient Occlusion (SSAO) effects."}}]}]},{name:"2D",list:[{name:"Hello RedGPU - 2D Mode",path:"2d/helloWorld2D",description:{ko:"RedGPU의 2D 모드 초기화 샘플입니다.",en:"Sample of RedGPU's 2D mode initialization."}},{name:"View2D",list:[{name:"Multi View (2D + 2D)",path:"2d/view/multiView",description:{ko:"여러 개의 2D View를 사용하는 멀티 뷰 예제입니다.",en:"Multi-view example using multiple 2D Views."}},{name:"Multi View (3D + 2D)",path:"2d/view/multiViewWith3D",description:{ko:"3D View와 2D View를 함께 사용하는 복합 멀티 뷰 예제입니다.",en:"Complex multi-view example using both 3D View and 2D View."}}]},{name:"Sprite2D",list:[{name:"Basic Sprite2D",path:"2d/sprite2D/basic",description:{ko:"기본적인 Sprite2D 객체 사용법을 보여주는 예제입니다.",en:"An example showing basic usage of Sprite2D object."}},{name:"Hierarchy Sprite2D",path:"2d/sprite2D/hierarchy",description:{ko:"2D 공간에서 Sprite2D의 계층 구조를 구성하는 예제입니다.",en:"An example constructing a hierarchy of Sprite2D in 2D space."}},{name:"Pivot Sprite2D",path:"2d/sprite2D/pivot",description:{ko:"Sprite2D의 피벗(중심점)을 변경하여 회전 및 위치를 제어하는 예제입니다.",en:"An example controlling rotation and position by changing the pivot of Sprite2D."}},{name:"Child Methods",path:"2d/sprite2D/childMethod",description:{ko:"2D 객체의 자식 노드를 관리하는 다양한 메서드를 시연하는 예제입니다.",en:"An example demonstrating various methods for managing child nodes of 2D objects."}}]},{name:"SpriteSheet2D",list:[{name:"Basic SpriteSheet2D",path:"2d/spriteSheet2D/basic",description:{ko:"스프라이트 시트 애니메이션을 재생하는 기본적인 SpriteSheet2D 예제입니다.",en:"Basic SpriteSheet2D example playing sprite sheet animation."}}]},{name:"TextField2D",list:[{name:"Basic TextField2D",path:"2d/textField2D/basic",description:{ko:"2D 텍스트를 렌더링하는 TextField2D 객체의 기본 사용법 예제입니다.",en:"Basic usage example of TextField2D object for rendering 2D text."}}]},{name:"Group2D",list:[{name:"Basic Group2D",path:"2d/group2D/basic",description:{ko:"2D 객체들을 그룹화하여 관리하는 Group2D 예제입니다.",en:"Group2D example managing 2D objects by grouping them."}}]},{name:"2D Object Opacity",list:[{name:"2D Object Opacity",path:"2d/opacity/basic",description:{ko:"2D 객체의 투명도(Opacity)를 조절하는 예제입니다.",en:"An example adjusting the opacity of 2D objects."}}]},{name:"2D Object BlendMode",list:[{name:"BlendMode",path:"2d/blendMode/basic",description:{ko:"2D 객체의 다양한 블렌딩 모드를 테스트하는 예제입니다.",en:"An example testing various blending modes of 2D objects."}}]},{name:"2D Tint",experimental:!0,list:[{experimental:!0,name:"Tint Basic",path:"2d/tint/basic",description:{ko:"2D 객체에 색상을 입히는 기본 틴트 예제입니다.",en:"Basic tint example applying color to 2D objects."}},{experimental:!0,name:"Tint Objects",path:"2d/tint/2dObjectTint",description:{ko:"다양한 2D 객체에 틴트를 적용하는 예제입니다.",en:"An example applying tint to various 2D objects."}}]},{name:"Interaction",list:[{name:"MouseEvent",list:[{name:"Sprite2D",path:"2d/interaction/mouseEvent/sprite2D",description:{ko:"Sprite2D에 대한 마우스 이벤트를 처리하는 예제입니다.",en:"An example handling mouse events on Sprite2D."}},{name:"SpriteSheet2D",path:"2d/interaction/mouseEvent/spriteSheet2D",description:{ko:"SpriteSheet2D에 대한 마우스 이벤트를 처리하는 예제입니다.",en:"An example handling mouse events on SpriteSheet2D."}},{name:"TextField2D",path:"2d/interaction/mouseEvent/textField2D",description:{ko:"TextField2D에 대한 마우스 이벤트를 처리하는 예제입니다.",en:"An example handling mouse events on TextField2D."}}]},{name:"KeyboardEvent",list:[{name:"Keyboard Interaction",path:"2d/interaction/keyboardEvent",description:{ko:"keyboardKeyBuffer를 사용하여 2D 환경에서 객체를 제어하는 방법을 보여줍니다.",en:"Demonstrates how to control an object in a 2D environment using keyboardKeyBuffer."}}]}]}]},{name:"Physics",experimental:!0,list:[{name:"Fundamentals",experimental:!0,list:[{experimental:!0,name:"Basic Physics",path:"physics/basic",description:{ko:"Rapier 물리 엔진을 사용한 기본적인 물리 시뮬레이션 예제입니다.",en:"Basic physics simulation example using the Rapier physics engine."}},{experimental:!0,name:"Shapes & Materials",path:"physics/shapes",description:{ko:"다양한 충돌체 형상(Box, Sphere, Cylinder, Capsule)과 탄성/마찰 설정을 테스트합니다.",en:"Tests various collider shapes (Box, Sphere, Cylinder, Capsule) and restitution/friction settings."}},{experimental:!0,name:"Kinematic Interaction",path:"physics/kinematic",description:{ko:"코드에 의해 제어되는 키네마틱 객체가 동적 객체들과 상호작용하는 모습을 보여줍니다.",en:"Demonstrates how kinematic objects controlled by code interact with dynamic objects."}},{experimental:!0,name:"Mesh Collider",path:"physics/meshCollider",description:{ko:"커스텀 기하구조를 물리 충돌체로 변환하는 방법을 테스트합니다.",en:"Tests how to convert custom geometries into physics engine colliders."}},{experimental:!0,name:"HeightField",path:"physics/heightField",description:{ko:"높이맵 데이터를 사용하여 지형과 같은 복잡한 표면의 물리 충돌을 구현하는 방법을 테스트합니다.",en:"Tests how to implement physics collisions for complex surfaces like terrain using heightmap data."}},{experimental:!0,name:"GLTF Physics",path:"physics/gltfPhysics",description:{ko:"로드된 GLTF 모델의 복잡한 계층 구조와 메쉬 데이터를 분석하여 자동으로 물리 충돌체를 생성하는 방법을 테스트합니다.",en:"Tests how to automatically generate physics colliders by analyzing the complex hierarchy and mesh data of a loaded GLTF model."}}]},{name:"Interaction & Events",experimental:!0,list:[{experimental:!0,name:"Raycasting Interaction",path:"physics/raycast",description:{ko:"마우스 클릭 지점에서 광선을 쏘아 물리 객체를 검출하고, 힘을 가해 밀어내는 등의 상호작용을 구현합니다.",en:"Casts rays from mouse click positions to detect physics objects and implements interactions like pushing them with force."}},{experimental:!0,name:"Collision Events",path:"physics/collisionEvents",description:{ko:"물체 간의 충돌 이벤트를 감지하여 실시간으로 색상을 변경하는 등 물리 연동 로직을 테스트합니다.",en:"Tests physics integration logic by detecting collision events between objects and changing colors in real-time."}},{experimental:!0,name:"Triggers & Sensors",path:"physics/triggers",description:{ko:"물체와 물리적인 충돌은 발생하지 않으나 영역 진입을 감지하는 센서(Trigger) 기능을 테스트합니다.",en:"Tests the sensor (Trigger) function that detects area entry without physical collision."}},{experimental:!0,name:"Collision Filtering",path:"physics/collisionFiltering",description:{ko:"Bitmask 기반의 충돌 그룹 설정을 통해 특정 객체들끼리만 선택적으로 충돌하도록 제어하는 고급 물리 기술을 구현합니다.",en:"Implements advanced physics techniques to selectively control collisions between specific objects through Bitmask-based collision group settings."}}]},{name:"Joints & Constraints",experimental:!0,list:[{experimental:!0,name:"Basic Joints",path:"physics/joints",description:{ko:"물체들을 서로 연결하는 관절(Joint) 기능을 사용하여 체인이나 진자 운동과 같은 복잡한 물리 구조를 구현합니다.",en:"Implements complex physical structures like chains or pendulums using joints to connect objects together."}},{experimental:!0,name:"Revolute Joints & Motors",path:"physics/revoluteJoint",description:{ko:"특정 축을 기준으로 회전하는 관절(Revolute Joint)과 모터 기능을 사용하여 풍차나 선풍기와 같은 회전 장치를 구현합니다.",en:"Implements rotating devices like windmills or fans using revolute joints that rotate around a specific axis and motor functions."}},{experimental:!0,name:"Prismatic Joints & Sliders",path:"physics/prismaticJoint",description:{ko:"직선 방향으로만 왕복 이동이 가능한 프리즈매틱 관절(Prismatic Joint)을 사용하여 승강기나 슬라이더 장치를 구현합니다.",en:"Implements elevators or slider devices using prismatic joints that allow reciprocal movement only in a straight line."}},{experimental:!0,name:"Spring Joint",path:"physics/springJoint",description:{ko:"스프링 조인트를 사용하여 탄성 있는 연결을 구현하는 방법을 테스트합니다.",en:"Tests how to implement elastic connections using spring joints."}},{experimental:!0,name:"Soft Body",path:"physics/softBody",description:{ko:"다수의 노드를 스프링으로 연결하여 젤리와 같은 소프트 바디 효과를 구현합니다.",en:"Implements a jelly-like soft body effect by connecting multiple nodes with springs."}},{experimental:!0,name:"Compound Shapes",path:"physics/compound",description:{ko:"여러 개의 지오메트리를 결합하여 하나의 복잡한 물리 객체를 만드는 복합 형상 기능을 테스트합니다.",en:"Tests the compound shape function that combines multiple geometries to create a single complex physics object."}}]},{name:"Simulation & Systems",experimental:!0,list:[{experimental:!0,name:"Surface Velocity (Conveyor)",path:"physics/surfaceVelocity",description:{ko:"컨베이어 벨트와 같이 표면이 움직이는 물체를 시뮬레이션합니다. 물체가 닿았을 때 특정 방향으로 힘을 가하여 이동시킵니다.",en:"Simulates objects with moving surfaces like conveyor belts. Applies force to move objects in a specific direction when they make contact."}},{experimental:!0,name:"Buoyancy Basics",path:"physics/buoyancy",description:{ko:"물속에서 물체가 떠오르는 부력과 유체 저항을 시뮬레이션합니다. 잠긴 깊이에 따라 상향 힘을 조절합니다.",en:"Simulates buoyancy and fluid resistance for objects in water. Adjusts upward force based on submerged depth."}},{experimental:!0,name:"Ragdoll System",path:"physics/ragdoll",description:{ko:"인간형 캐릭터의 뼈대를 관절(Joint)로 연결하여, 중력에 의해 자연스럽게 쓰러지는 래그돌 물리 효과를 시뮬레이션합니다.",en:"Simulates ragdoll physics where a humanoid skeleton is connected with joints and falls naturally under gravity."}},{experimental:!0,name:"Character Controller",path:"physics/characterController",description:{ko:"지면을 걷고 계단을 오르는 1인칭/3인칭 캐릭터 이동의 기초를 구현합니다.",en:"Implements the basics of 1st/3rd person character movement walking on the ground and climbing stairs."}},{experimental:!0,name:"Advanced Character Controller",path:"physics/advancedCharacterController",description:{ko:"관성 이동, 공중 제어, 이중 점프 등 게임적인 조작감이 가미된 고급 캐릭터 컨트롤러를 구현합니다.",en:"Implements an advanced character controller with game-like controls such as inertial movement, air control, and double jumping."}}]},{name:"Performance & Stress Test",experimental:!0,list:[{experimental:!0,name:"Galton Board",path:"physics/galton",description:{ko:"수많은 구슬이 핀 사이를 떨어지며 통계적 분포를 형성하는 과정을 시뮬레이션합니다.",en:"Simulates the process where numerous balls fall between pins and form a statistical distribution."}},{experimental:!0,name:"Physics Bowling",path:"physics/bowling",description:{ko:"고속으로 이동하는 볼과 핀 사이의 충돌 및 연쇄 반응을 테스트합니다. CCD(Continuous Collision Detection) 기술이 적용되었습니다.",en:"Tests collisions and chain reactions between a fast-moving ball and pins. CCD (Continuous Collision Detection) technology is applied."}},{experimental:!0,name:"Impulse Explosion",path:"physics/explosion",description:{ko:"폭발 지점으로부터 주변 객체들에 충격량을 가하여 날려버리는 물리 효과를 구현합니다.",en:"Implements physics effects where impulse is applied from an explosion point to blow away surrounding objects."}},{experimental:!0,name:"Ultimate Stress Test",path:"physics/stressTest",description:{ko:"수천 개의 물리 객체를 동시에 시뮬레이션하여 엔진의 한계 성능을 테스트합니다. 휴면(Sleep) 모드 활성화를 통한 최적화 효과를 확인합니다.",en:"Tests the engine's performance limits by simulating thousands of physics objects simultaneously. Demonstrates optimization through Sleep mode."}}]}]}];Object.freeze(i);export{t as n,i as t}; \ No newline at end of file +import{n as e}from"./rolldown-runtime-BztV3taV.js?t=1781143364605";var t=e({ExampleList:()=>i,default:()=>i}),i=[{name:"3D",list:[{name:"Hello RedGPU",path:"3d/helloWorld",description:{ko:"RedGPU의 기본 초기화 방법을 보여주는 샘플입니다.
초기화 성공 시 제공되는 RedGPUContext 객체의 기본 옵션들을 실시간으로 테스트할 수 있습니다.",en:"This example is a sample of the basic initialization of RedGPU.
\n It also provides a live test of the basic options provided to the RedGPUContext object provided upon successful initialization."}},{name:"View3D",list:[{name:"Single View3D",path:"3d/view/singleView",description:{ko:"RedGPU의 View 객체에 대한 샘플입니다. View 객체에 제공되는 기본 옵션들을 실시간으로 테스트할 수 있습니다.",en:"This example is a sample for a View object in RedGPU.
\n It provides real-time testing of the basic options provided to a View object."}},{name:"Multi View3D",path:"3d/view/multiView",description:{ko:"RedGPU의 멀티 뷰 기능을 보여주는 샘플입니다.
RedGPUContext는 여러 개의 View를 소유하고 관리할 수 있습니다.",en:"This example is a sample of RedGPU's Multi View.
RedGPUContext can own and manage multiple MultiViews."}}]},{name:"Scene",list:[{name:"Scene",path:"3d/scene",description:{ko:"RedGPU의 Scene 객체에 대한 샘플입니다.
Scene 객체에 제공되는 기본 옵션들을 실시간으로 테스트할 수 있습니다.",en:"This example is a sample of a Scene object in RedGPU.
It provides real-time testing of the basic options provided to the Scene object."}}]},{name:"Camera Controller",list:[{name:"FreeController",path:"3d/controller/freeController",description:{ko:"FreeController는 키보드(WASD/QERTFG)와 마우스/터치 입력을 사용하여 1인칭 카메라 제어를 제공합니다.
3D 공간에서의 자유로운 이동, 회전 제어, 속도/가속도 조절 및 키 바인딩 설정 기능을 포함합니다.",en:"FreeController provides first-person camera control with keyboard (WASD/QERTFG) and mouse/touch input.
Features include free movement in 3D space, rotation control, customizable speed/acceleration, and key binding configuration."}},{name:"OrbitController",path:"3d/controller/orbitController",description:{ko:"OrbitController는 중심점을 기준으로 회전하는 궤도형 카메라 제어를 제공합니다.
마우스 드래그 회전, 휠 줌, 터치 핀치 줌, 중심점 위치 사용자 정의, 거리 제어 및 팬/틸트 제한 기능을 포함합니다.",en:"OrbitController provides orbital camera control that rotates around a center point.
Features include mouse drag rotation, wheel zoom, touch pinch zoom, customizable center position, distance control, and pan/tilt limits."}},{name:"FollowController",path:"3d/controller/followController",description:{ko:"FollowController는 타겟 메쉬를 따라다니는 3인칭 카메라 제어를 제공합니다.
부드러운 카메라 추적, 거리 및 높이 조절, 팬/틸트 제어, 타겟 회전 추적 및 휠/핀치 줌 기능을 포함합니다.
3인칭 게임 및 객체 추적 시나리오에 적합합니다.",en:"FollowController provides third-person camera control that follows a target mesh.
Features include smooth camera following, customizable distance and height, pan/tilt control, target rotation tracking, and wheel/pinch zoom.
Perfect for third-person games and object tracking scenarios."}},{name:"IsometricController",path:"3d/controller/isometricController",description:{ko:"IsometricController는 아이소메트릭 뷰를 위한 고정 각도 직교 투영 카메라 제어를 제공합니다.
타겟 메쉬 추적, 키보드(WASD) 및 마우스 이동, 휠/핀치 줌 제어, 카메라 각도 및 뷰 높이 사용자 정의 기능을 포함합니다.
아이소메트릭 게임, 전략 게임 및 건축 시각화에 이상적입니다.",en:"IsometricController provides fixed-angle orthographic camera control for isometric views.
Features include target mesh tracking, keyboard (WASD) and mouse movement, wheel/pinch zoom control, and customizable camera angle and view height.
Ideal for isometric games, strategy games, and architectural visualization."}}]},{name:"Primitive",list:[{name:"Primitives",path:"3d/primitive/primitives",description:{ko:"RedGPU가 지원하는 기본적인 프리미티브 지오메트리들의 샘플입니다.",en:"Samples of basic primitive geometries supported by RedGPU."}},{name:"Box",path:"3d/primitive/box",description:{ko:"RedGPU가 지원하는 기본 Box 프리미티브에 대한 샘플입니다. Box 설정 옵션을 실시간으로 테스트할 수 있습니다.",en:"Samples for the basic Box Primitives supported by RedGPU. Provides real-time testing of Box configuration options."}},{name:"RoundedBox",path:"3d/primitive/roundedBox",description:{ko:"모서리가 둥근 박스 프리미티브에 대한 샘플입니다. 반지름(radius) 및 분할 수 설정을 통해 부드러운 모서리를 가진 박스를 생성하고 테스트할 수 있습니다.",en:"Samples for the RoundedBox Primitive. You can create and test boxes with smooth corners by configuring radius and segment settings."}},{name:"Circle",path:"3d/primitive/circle",description:{ko:"RedGPU가 지원하는 기본 Circle 프리미티브에 대한 샘플입니다. Circle 설정 옵션을 실시간으로 테스트할 수 있습니다.",en:"Samples for the basic Circle Primitives supported by RedGPU. Provides real-time testing of Circle configuration options."}},{name:"Cone",path:"3d/primitive/cone",description:{ko:"RedGPU가 지원하는 기본 Cone 프리미티브에 대한 샘플입니다. Cone 설정 옵션을 실시간으로 테스트할 수 있습니다.",en:"Samples for the basic Cone Primitives supported by RedGPU. Provides real-time testing of Cone configuration options."}},{name:"Cylinder",path:"3d/primitive/cylinder",description:{ko:"RedGPU가 지원하는 기본 Cylinder 프리미티브에 대한 샘플입니다. Cylinder 설정 옵션을 실시간으로 테스트할 수 있습니다.",en:"Samples for the basic Cylinder Primitives supported by RedGPU. Provides real-time testing of Cylinder configuration options."}},{name:"Plane",path:"3d/primitive/plane",description:{ko:"RedGPU가 지원하는 기본 Plane 프리미티브에 대한 샘플입니다. Plane 설정 옵션을 실시간으로 테스트할 수 있습니다.",en:"Samples for the basic Plane Primitives supported by RedGPU. Provides real-time testing of Plane configuration options."}},{name:"Ground",path:"3d/primitive/ground",description:{ko:"RedGPU가 지원하는 기본 Ground 프리미티브에 대한 샘플입니다. Ground 설정 옵션을 실시간으로 테스트할 수 있습니다.",en:"Samples for the basic Ground Primitives supported by RedGPU. Provides real-time testing of Ground configuration options."}},{name:"Sphere",path:"3d/primitive/sphere",description:{ko:"RedGPU가 지원하는 기본 Sphere 프리미티브에 대한 샘플입니다. Sphere 설정 옵션을 실시간으로 테스트할 수 있습니다.",en:"Samples for the basic Sphere Primitives supported by RedGPU. Provides real-time testing of Sphere configuration options."}},{name:"Capsule",path:"3d/primitive/capsule",description:{ko:"RedGPU가 지원하는 기본 Capsule 프리미티브에 대한 샘플입니다. Capsule 설정 옵션을 실시간으로 테스트할 수 있습니다.",en:"Samples for the basic Capsule Primitives supported by RedGPU. Provides real-time testing of Capsule configuration options."}},{name:"Torus",path:"3d/primitive/torus",description:{ko:"RedGPU가 지원하는 기본 Torus 프리미티브에 대한 샘플입니다. Torus 설정 옵션을 실시간으로 테스트할 수 있습니다.",en:"Samples for the basic Torus Primitives supported by RedGPU. Provides real-time testing of Torus configuration options."}},{name:"TorusKnot",path:"3d/primitive/torusKnot",description:{ko:"RedGPU가 지원하는 기본 TorusKnot 프리미티브에 대한 샘플입니다. TorusKnot 설정 옵션을 실시간으로 테스트할 수 있습니다.",en:"Samples for the basic TorusKnot Primitives supported by RedGPU. Provides real-time testing of TorusKnot configuration options."}},{name:"Ring",path:"3d/primitive/ring",description:{ko:"RedGPU가 지원하는 기본 Ring 프리미티브에 대한 샘플입니다. Ring 설정 옵션을 실시간으로 테스트할 수 있습니다.",en:"Samples for the basic Ring Primitives supported by RedGPU. Provides real-time testing of Ring configuration options."}}]},{name:"Mesh",list:[{name:"Basic Mesh",path:"3d/mesh/basicMesh",description:{ko:"이 코드는 기본 메쉬를 생성하고 위치, 크기, 회전, 재질 등 주요 속성을 실시간으로 조작하는 방법을 보여주는 샘플입니다.
RedGPU를 사용하여 Box 메쉬를 생성하고 속성과 재질을 조정하는 방법을 보여줍니다.",en:"this code is a sample that shows how to create a basic mesh and how to manipulate its main properties (position, scale, rotation, material, etc.) in real time.
This example shows how to create a Box mesh using RedGPU and how to adjust its properties and material."}},{name:"Hierarchy Mesh",path:"3d/mesh/hierarchy",description:{ko:"RedGPU를 사용하여 부모-자식 메쉬 계층 구조를 생성하고, 위치, 회전 및 스케일을 조작하는 예제입니다.",en:"An example of creating a parent-child mesh hierarchy using RedGPU, and manipulating its position, rotation, and scale."}},{name:"Pivot Mesh",path:"3d/mesh/pivot",description:{ko:"RedGPU를 사용하여 부모 및 자식 메쉬를 생성하고 피벗 설정을 통해 회전 중심을 변경하는 방법을 보여주는 실습 예제입니다.",en:"A hands-on example that demonstrates how to create parent and child meshes using RedGPU and change the center of rotation via pivot settings."}},{name:"Child Methods",path:"3d/mesh/childMethod",description:{ko:"RedGPU를 사용한 자식 노드 관리 예제로, 자식 추가, 삭제, 인덱스 변경, 교체 및 자식 색상 무작위화 등을 통해 노드를 동적으로 제어하는 방법을 보여줍니다.",en:"An example of child node management using RedGPU, showing how to dynamically control nodes by adding, deleting, changing index, replacing, and randomizing color of children."}},{name:"lookAt Methods",path:"3d/mesh/lookAt",description:{ko:"객체가 특정 지점이나 다른 객체를 바라보도록 하는 lookAt 메서드의 사용법을 보여주는 예제입니다.",en:"An example demonstrating the usage of the lookAt method to make an object face a specific point or another object."}},{name:"BoundingBox",list:[{name:"BoundingBox",path:"3d/mesh/boundBox/meshBoundBox",description:{ko:"메쉬의 바운딩 박스(AABB)를 시각화하고 확인하는 예제입니다.",en:"An example of visualizing and checking the bounding box (AABB) of a mesh."}},{name:"AABB - intersects",path:"3d/mesh/boundBox/meshAABBIntersects",description:{ko:"AABB(Axis-Aligned Bounding Box) 간의 교차 검사 기능을 테스트하는 예제입니다.",en:"An example testing the intersection check function between AABBs (Axis-Aligned Bounding Boxes)."}},{name:"OBB - intersects",path:"3d/mesh/boundBox/meshOBBIntersects",description:{ko:"OBB(Oriented Bounding Box) 간의 교차 검사 기능을 테스트하는 예제입니다.",en:"An example testing the intersection check function between OBBs (Oriented Bounding Boxes)."}}]}]},{name:"Coordinate Transformation",list:[{name:"worldToLocal / localToWorld",path:"3d/coordinateTransformation/worldToLocal",description:{ko:"월드 좌표와 로컬 좌표 간의 변환을 테스트하는 예제입니다.",en:"An example testing the transformation between world coordinates and local coordinates."}},{name:"screenToWorld",path:"3d/coordinateTransformation/screenToWorld",description:{ko:"화면(스크린) 좌표를 월드 좌표로 변환하는 방법을 보여주는 예제입니다.",en:"An example showing how to convert screen coordinates to world coordinates."}}]},{name:"Material",list:[{name:"ColorMaterial",path:"3d/material/colorMaterial",description:{ko:"RedGPU ColorMaterial의 기본 색상 조작 및 색상 설정을 위한 편의 메서드들에 대한 실시간 샘플을 제공합니다.",en:"Provides real-time samples of the basic color manipulations of RedGPU's ColorMaterial and convenience methods for setting colors."}},{name:"BitmapMaterial",path:"3d/material/bitmapMaterial",description:{ko:"RedGPU의 BitmapMaterial 샘플로, 다양한 텍스처 포맷(PNG, JPG, WEBP, SVG)을 적용하여 텍스처 변경을 실시간으로 테스트할 수 있습니다.",en:"RedGPU's BitmapMaterial sample allows you to test texture changes in real time by applying various texture formats (PNG, JPG, WEBP, SVG)."}},{name:"PhongMaterial",path:"3d/material/phongMaterial",description:{ko:"RedGPU를 사용하여 PhongMaterial의 기본 속성을 조작하고 다양한 텍스처 조합을 실험하는 방법을 보여주는 샘플 예제입니다.",en:"A sample example that demonstrates how to manipulate the basic properties of PhongMaterial using RedGPU and experiment with different texture combinations."}},{name:"PhongMaterial Texture Combination",path:"3d/material/phongMaterialTextures",description:{ko:"RedGPU를 사용하여 PhongMaterial의 다양한 텍스처 조합과 효과를 시각적으로 보여주는 샘플 예제입니다.",en:"A sample example that visually demonstrates different texture combinations and effects of PhongMaterial using RedGPU."}},{name:"UV Transform",path:"3d/material/uvTransform",description:{ko:"재질의 텍스처 오프셋과 스케일을 조절하여 흐르는 효과나 타일링을 구현하는 방법을 테스트합니다.",en:"Tests how to implement scrolling effects or tiling by adjusting the texture offset and scale of the material."}},{name:"Material Opacity",path:"3d/material/opacity",description:{ko:"재질의 불투명도(Opacity)를 조절하여 반투명 효과를 테스트하는 예제입니다.",en:"An example testing the translucency effect by adjusting the opacity of the material."}},{name:"Fragment Variant Test",path:"3d/material/fragmentVariantTest",description:{ko:"쉐이더의 프래그먼트 변형을 테스트하는 예제입니다.",en:"An example testing fragment variants of shaders."}}]},{name:"Texture & Sampler",list:[{name:"BitmapTexture & Sampler",path:"3d/texture/bitmapTextureSampler",description:{ko:"텍스처 샘플러 옵션과 밉맵 지원을 시연하는 샘플입니다.",en:"A sample that demonstrates texture sampler options and mipmap support."}},{name:"Sampler Combination",path:"3d/texture/samplerCombination",description:{ko:"텍스처 샘플러의 다양한 조합을 한눈에 보여주는 예제입니다.",en:"Here's an example showing the different combinations of texture samplers at a glance."}},{name:"Sampler SamplerAddressMode",path:"3d/texture/samplerAddressMode",description:{ko:"텍스처 샘플러의 AddressMode 옵션 조합을 보여주는 예제입니다.",en:"An example showing combinations of AddressMode options for a texture sampler."}},{name:"MaxAnisotropy",path:"3d/texture/maxAnisotropy",description:{ko:"텍스처의 비등방성 필터링(Anisotropy) 옵션을 보여주는 예제입니다.",en:"example showing the Anisotropy option for a texture."}}]},{name:"SkyBox & IBL",list:[{name:"SkyBox",list:[{name:"Skybox using 6 assets",path:"3d/skybox/skybox",description:{ko:"6개의 이미지를 사용하여 스카이박스를 구성하는 예제입니다.",en:"An example of constructing a skybox using 6 images."}},{name:"Skybox transition",list:[{name:"Basic transition",path:"3d/skybox/transition/skyboxTransition",description:{ko:"스카이박스 간의 부드러운 전환 효과를 보여주는 예제입니다.",en:"An example showing smooth transition effects between skyboxes."}},{name:"transitionAlphaTexture - with NoiseTexture",path:"3d/skybox/transition/skyboxTransitionWithNoiseTexture",description:{ko:"노이즈 텍스처와 알파 텍스처를 사용하여 스카이박스 전환 효과를 연출하는 예제입니다.",en:"An example creating skybox transition effects using noise textures and alpha textures."}}]}]},{name:"IBL",list:[{name:"Skybox using IBL",path:"3d/skybox/ibl/skyboxWithIbl",description:{ko:"IBL(Image Based Lighting)을 사용하여 스카이박스를 생성하는 방법을 보여줍니다.",en:"Demonstrates how to create a skybox using IBL (Image Based Lighting)."}},{name:"IBL Test",path:"3d/skybox/ibl/iblTest",description:{ko:"이미지 기반 조명(IBL)을 테스트하는 예제입니다.",en:"An example testing Image-Based Lighting (IBL)."}},{name:"Custom IBL Texture Size",path:"3d/skybox/ibl/iblTextureSize",description:{ko:"IBL 텍스처의 크기를 사용자 정의하는 예제입니다.",en:"An example of customizing the size of the IBL texture."}},{name:"BRDF LUT Test (Dev Only)",path:"3d/skybox/ibl/brdfLutTest",description:{ko:"새로운 IBL 시스템의 기초인 BRDF LUT 생성을 테스트합니다. (개발 확인용)",en:"Tests BRDF LUT generation, the foundation of the new IBL system. (For development verification)"}},{name:"Irradiance Test (Dev Only)",path:"3d/skybox/ibl/irradianceTest",description:{ko:"분리된 IrradianceGenerator를 사용하여 환경맵으로부터 Irradiance 맵을 생성하고 테스트합니다. (개발 확인용)",en:"Generates and tests an Irradiance map from an environment map using the separated IrradianceGenerator. (For development verification)"}}]},{name:"FrustumCulling",list:[{name:"FrustumCulling",path:"3d/frustumCulling/frustumCulling",description:{ko:"카메라 시야 밖의 객체를 렌더링에서 제외하는 절두체 컬링(Frustum Culling) 기능을 시연합니다.",en:"Demonstrates Frustum Culling, which excludes objects outside the camera view from rendering."}},{name:"DistanceCulling",path:"3d/frustumCulling/distanceCulling",description:{ko:"카메라와의 거리에 따라 객체를 렌더링에서 제외하는 거리 컬링 기능을 시연합니다.",en:"Demonstrates Distance Culling, which excludes objects from rendering based on their distance from the camera."}}]},{name:"SkyAtmosphere",list:[{name:"SkyAtmosphere Basic",path:"3d/skyAtmosphere/skyAtmosphere",description:{ko:"물리 기반 대기 산란 시스템인 SkyAtmosphere의 기본적인 설정과 실시간 태양 광원 연동을 시연합니다.",en:"Demonstrates basic configuration and real-time sun light synchronization of the SkyAtmosphere, a physics-based atmospheric scattering system."}},{name:"Material Scattering (Aerial Perspective)",path:"3d/skyAtmosphere/scatteringTest",description:{ko:"거리에 따른 대기 산란(공중 투시) 효과가 다양한 재질(Color, Phong, PBR 등)에 어떻게 적용되는지 활주로 레이아웃을 통해 직관적으로 비교합니다.",en:"Provides an intuitive comparison of how atmospheric scattering (Aerial Perspective) affects various materials (Color, Phong, PBR, etc.) along a distance runway."}},{name:"Atmosphere & IBL Harmony",path:"3d/skyAtmosphere/gltf",description:{ko:"대기 산란, IBL 환경광, 스카이박스 배경이 유기적으로 조화되어 glTF PBR 모델에 물리적 사실감을 부여하는 통합 환경 시뮬레이션입니다.",en:"An integrated simulation showing how atmospheric scattering, IBL, and skybox work in harmony to provide physical realism to a glTF PBR model."}},{name:"SkyAtmosphere LUT Generator",path:"3d/skyAtmosphere/generator",description:{ko:"대기 산란 계산을 위해 내부적으로 생성되는 투과율, 하늘 뷰 등 다양한 LUT(Look-Up Table) 데이터를 시각화하여 분석합니다.",en:"Visualizes and analyzes various internal LUT (Look-Up Table) data such as Transmittance and SkyView generated for atmospheric scattering calculations."}}]}]},{name:"DrawDebugger",list:[{name:"DrawDebugger",path:"3d/drawDebugger/basic",description:{ko:"렌더링 정보를 디버깅하기 위한 도구를 시연하는 예제입니다.",en:"An example demonstrating tools for debugging rendering information."}}]},{name:"Transparent Sort",list:[{name:"Transparent Sort",path:"3d/transparentSort",description:{ko:"메쉬의 재질에 `transparent` 옵션을 적용하여 반투명 객체가 렌더링되는 순서를 확인하는 예제입니다. `transparent`를 사용하여 올바른 렌더링 결과를 확인할 수 있습니다.",en:" example of how to apply the `transparent` option to the mesh's material to see the order in which translucent objects are rendered. You can use `transparent` to see the correct rendering results."}}]},{name:"Noise Texture",experimental:!0,list:[{name:"SimplexTexture",experimental:!0,list:[{experimental:!0,name:"SimplexTexture",path:"3d/noiseTexture/simplex/basic",description:{ko:"심플렉스 노이즈 텍스처를 생성하고 적용하는 기본 예제입니다.",en:"Basic example of generating and applying Simplex Noise Texture."}},{experimental:!0,name:"Custom SimplexTexture - Fire",path:"3d/noiseTexture/simplex/fire",description:{ko:"심플렉스 노이즈를 활용하여 불꽃 효과를 연출하는 커스텀 텍스처 예제입니다.",en:"Custom texture example creating a fire effect using Simplex Noise."}},{experimental:!0,name:"Custom SimplexTexture - Displacement",path:"3d/noiseTexture/simplex/displacement",description:{ko:"심플렉스 노이즈를 활용하여 변위(Displacement) 효과를 주는 예제입니다.",en:"Example applying displacement effects using Simplex Noise."}}]},{name:"VoronoiTexture",experimental:!0,list:[{experimental:!0,name:"VoronoiTexture",path:"3d/noiseTexture/voronoi/basic",description:{ko:"보로노이 노이즈 텍스처를 생성하고 적용하는 예제입니다.",en:"Example of generating and applying Voronoi Noise Texture."}}]}]},{name:"Sprite3D & SpriteSheet3D",list:[{name:"Sprite3D",path:"3d/sprite/sprite3D",description:{ko:"Sprite3D 객체의 사용법을 보여주는 예제입니다.",en:"example of a Sprite3D object."}},{name:"Sprite3D Comparison (World vs Pixel)",path:"3d/sprite/sprite3DCompare",description:{ko:"Sprite3D의 월드 단위 크기(worldSize)와 고정 픽셀 크기(pixelSize) 설정을 비교 시연하는 예제입니다.",en:"A comparison example demonstrating Sprite3D's world unit size (worldSize) and fixed pixel size (pixelSize) settings."}},{name:"SpriteSheet3D",path:"3d/sprite/spriteSheet3D",description:{ko:"SpriteSheet3D 객체의 사용법을 보여주는 예제입니다.",en:"example of a SpriteSheet3D object."}},{name:"SpriteSheet3D Comparison (World vs Pixel)",path:"3d/sprite/spriteSheet3DCompare",description:{ko:"SpriteSheet3D의 월드 단위 크기(worldSize)와 고정 픽셀 크기(pixelSize) 설정을 비교 시연하는 예제입니다.",en:"A comparison example demonstrating SpriteSheet3D's world unit size (worldSize) and fixed pixel size (pixelSize) settings."}}]},{name:"TextField3D",list:[{name:"TextField3D",path:"3d/textField/textField3D",description:{ko:"TextField3D 객체의 사용법을 보여주는 예제입니다.",en:"example of a TextField3D object."}},{name:"TextField3D Comparison (World vs Pixel)",path:"3d/textField/textField3DCompare",description:{ko:"TextField3D의 월드 단위 크기(worldSize)와 고정 픽셀 크기(usePixelSize) 설정을 비교 시연하는 예제입니다.",en:"A comparison example demonstrating TextField3D's world unit size (worldSize) and fixed pixel size (usePixelSize) settings."}}]},{name:"Light",list:[{name:"DirectionalLight",path:"3d/light/directionalLight",description:{ko:"태양광과 같은 직사광(Directional Light)을 시연하는 예제입니다.",en:"An example demonstrating Directional Light, simulating sunlight."}},{name:"PointLight",path:"3d/light/pointLight",description:{ko:"한 지점에서 모든 방향으로 빛을 방출하는 점광원(Point Light)을 시연하는 예제입니다.",en:"An example demonstrating Point Light, emitting light in all directions from a point."}},{name:"PointLight with glTF",path:"3d/light/pointLightWithGltf",description:{ko:"현대적인 감쇄(Attenuation) 수식이 적용된 Point Light와 glTF PBR 모델의 상호작용 예제입니다.",en:"An example of interaction between Point Light with modern attenuation formula and glTF PBR model."}},{name:"SpotLight",path:"3d/light/spotLight",description:{ko:"특정 방향으로 원뿔형 빛을 방출하는 스포트라이트(Spot Light)를 시연하는 예제입니다.",en:"An example demonstrating Spot Light, cone-shaped light in a specific direction."}},{name:"SpotLight with glTF",path:"3d/light/spotLightWithGltf",description:{ko:"현대적인 원뿔 감쇄(Angle Attenuation) 수식이 적용된 Spot Light와 glTF PBR 모델의 상호작용 예제입니다.",en:"An example of interaction between Spot Light with modern angle attenuation formula and glTF PBR model."}},{name:"PointLight Performance(cluster)",path:"3d/light/pointLightPerformance",description:{ko:"PointLight는 클러스터 타일 렌더링을 지원합니다. 1024개의 포인트 라이트를 지원합니다.",en:"PointLight supports clustered tile rendering. Supports 1024 point lights."}},{name:"SpotLight Performance(cluster)",path:"3d/light/spotLightPerformance",description:{ko:"SpotLight의 대량 렌더링 성능(클러스터링)을 테스트하는 예제입니다.",en:"An example testing the mass rendering performance (clustering) of SpotLights."}}]},{name:"Group3D",list:[{name:"Basic Group3D",path:"3d/group3D/basic",description:{ko:"3D 객체들을 그룹화할 수 있는 Group3D 객체의 예제입니다.",en:"Here's an example of a Group3D object that can group 3D objects."}}]},{name:"Tint",experimental:!0,list:[{experimental:!0,name:"Tint",path:"3d/tint/basic",description:{ko:"재질 기반 틴트를 지원합니다. 틴트 사용, tintBlendMode 설정 및 색상 사용 예제입니다.",en:"Supports material-based tint. Examples of using tint, setting tintBlendMode, and color."}}]},{name:"Line3D",experimental:!0,list:[{experimental:!0,name:"Linear Type",path:"3d/line3D/linear",description:{ko:"직선 형태의 라인을 그리는 예제입니다.",en:"An example of drawing linear lines."}},{experimental:!0,name:"Bezier Type",path:"3d/line3D/bezier",description:{ko:"베지에 곡선 형태의 라인을 그리는 예제입니다.",en:"An example of drawing Bezier curve lines."}},{experimental:!0,name:"CatmullRom Type",path:"3d/line3D/catmullRom",description:{ko:"캣멀-롬 스플라인 형태의 라인을 그리는 예제입니다.",en:"An example of drawing Catmull-Rom spline lines."}}]},{name:"Interaction",list:[{name:"MouseEvent",list:[{name:"Mesh",path:"3d/interaction/mouseEvent/mesh",description:{ko:"Mesh에 마우스 이벤트를 설정하는 예제입니다.",en:"Here's an example of setting up mouse events on a Mesh."}},{name:"Sprite3D",path:"3d/interaction/mouseEvent/sprite3D",description:{ko:"Sprite3D에 마우스 이벤트를 설정하는 예제입니다.",en:"Here's an example of setting up mouse events on a Sprite3D."}},{name:"SpriteSheet3D",path:"3d/interaction/mouseEvent/spriteSheet3D",description:{ko:"SpriteSheet3D에 마우스 이벤트를 설정하는 예제입니다.",en:"Here's an example of setting up mouse events on a SpriteSheet3D."}},{name:"TextField3D",path:"3d/interaction/mouseEvent/textField3D",description:{ko:"TextField3D에 마우스 이벤트를 설정하는 예제입니다.",en:"Here's an example of setting up mouse events on a TextField3D."}},{name:"Raycasting (Precision Picking)",path:"3d/interaction/mouseEvent/raycasting",description:{ko:"이 예제는 복잡한 지오메트리(TorusKnot)에 대한 고정밀 레이캐스팅을 보여줍니다.
버텍스 버퍼를 분석하여 정확한 교차 지점, 면 인덱스 및 로컬 좌표를 CPU에서 계산합니다.",en:"This example demonstrates high-precision raycasting on complex geometry (TorusKnot).
It calculates the exact intersection point, face index, and local coordinates on the CPU by analyzing vertex buffers."}}]},{name:"KeyboardEvent",list:[{name:"Keyboard Interaction",path:"3d/interaction/keyboardEvent",description:{ko:"keyboardKeyBuffer를 사용하여 매 프레임 키보드 상태를 체크하고 객체를 제어하는 기초적인 방법을 보여줍니다.",en:"Shows basic way to check keyboard state every frame and control an object using keyboardKeyBuffer."}}]}]},{name:"Shadow",list:[{name:"DirectionalLight Shadow",path:"3d/shadow/directionalShadow",description:{ko:"DirectionalLight에 의한 그림자 효과를 시연하는 예제입니다.",en:"An example demonstrating shadow effects caused by DirectionalLight."}},{name:"DirectionalLight Shadow - GLTF",path:"3d/shadow/gltfDirectionalShadow",description:{ko:"GLTF 모델에 대한 DirectionalLight 그림자 효과를 시연하는 예제입니다.",en:"An example demonstrating DirectionalLight shadow effects on a GLTF model."}}]},{name:"InstancedMesh",list:[{name:"InstancedMesh Simple",path:"3d/instancedMesh/simple",description:{ko:"이 데모는 간단한 Plane을 사용한 인스턴스 성능 테스트를 보여줍니다. ",en:"This demo demonstrates instance performance testing using a simple Plane. "}},{name:"InstancedMesh Sphere",path:"3d/instancedMesh/sphere",description:{ko:"이 데모는 Sphere를 사용한 인스턴스 성능 테스트를 보여줍니다. ",en:"This demo demonstrates instance performance testing using Sphere. "}}]},{name:"LOD",list:[{name:"InstancedMesh GPU LOD",path:"3d/lod/InstanceMeshGPULOD",description:{ko:"InstancedMesh에 GPU 기반 LOD를 적용하여 수만 개의 객체를 효율적으로 최적화하는 성능을 시연합니다.",en:"Demonstrates efficient optimization of tens of thousands of objects by applying GPU-based LOD to InstancedMesh."}},{name:"InstancedMesh Multi-Material GPU LOD",path:"3d/lod/InstanceMeshGPULOD_material",description:{ko:"인스턴싱 메시에서 거리에 따라 지오메트리와 머티리얼을 동시에 변경하는 GPU 기반 LOD 기능을 보여줍니다.",en:"Shows GPU-based LOD functionality that simultaneously changes geometry and materials by distance in instanced meshes."}},{name:"Mesh CPU LOD",path:"3d/lod/MeshCPULOD",description:{ko:"수천 개의 개별 Mesh 객체들에 CPU 기반 LOD를 적용하여 거리별 최적화 성능을 테스트합니다.",en:"Tests distance-based optimization performance by applying CPU-based LOD to thousands of individual Mesh objects."}},{name:"Mesh Multi-Material CPU LOD",path:"3d/lod/MeshCPULOD_material",description:{ko:"개별 메시 객체들에 대해 거리에 따라 지오메트리와 머티리얼이 함께 변화하는 CPU 기반 LOD를 시연합니다.",en:"Demonstrates CPU-based LOD where both geometry and materials change together by distance for individual mesh objects."}}]},{name:"ParticleSystem",list:[{name:"Particle",path:"3d/particle/basic",description:{ko:"기본적인 파티클 시스템을 시연하는 예제입니다.",en:"An example demonstrating a basic particle system."}},{name:"Multi Particle Performance",path:"3d/particle/performance",description:{ko:"다수의 파티클 시스템을 동시에 렌더링하여 성능을 테스트하는 예제입니다.",en:"An example testing performance by rendering multiple particle systems simultaneously."}}]},{name:"Indirect Draw Test",list:[{name:"drawIndexedIndirect Test",path:"3d/indirectDrawTest",description:{ko:"drawIndexedIndirect 기능을 테스트하는 예제입니다.",en:"An example testing the drawIndexedIndirect function."}}]}]},{name:"GLTF",list:[{name:"Basic",list:[{name:"TextureEncodingTest",path:"gltf/basic/textureEncodingTest",description:{ko:"텍스처가 올바른 전달 함수(Transfer Function)로 샘플링되는지 테스트합니다. Base Color와 Emissive가 sRGB에서 올바르게 디코딩되는지 확인합니다.",en:"Tests that textures are sampled with the correct transfer functions. Verifies base color and emissive textures are decoded from sRGB."}},{name:"TextureLinear InterpolationTest",path:"gltf/basic/textureLinearInterpolationTest",description:{ko:"sRGB 디코딩 후 선형 값에 대해 텍스처 선형 보간이 올바르게 수행되는지 테스트합니다.",en:"Tests that linear texture interpolation is correctly performed on linear values (after sRGB decoding)."}},{name:"VertexColorTest",path:"gltf/basic/vertexColorTest",description:{ko:"뷰어가 정점 색상(COLORS_0 속성)을 올바르게 지원하는지 테스트합니다.",en:"Tests proper support for vertex colors (COLORS_0 attribute) in the viewer."}},{name:"BoxVertexColors",path:"gltf/basic/boxVertexColors",description:{ko:"각 면에 정점 색상이 적용된 간단한 박스 모델입니다.",en:"A simple box model with vertex colors applied to each face."}},{name:"OrientationTest",path:"gltf/basic/orientationTest",description:{ko:"노드의 회전 및 방향(Quaternion) 처리가 올바른지 테스트합니다.",en:"Tests the correctness of node rotation and orientation (Quaternion) handling."}},{name:"TextureCoordinateTest",path:"gltf/basic/textureCoordinateTest",description:{ko:"XYZ 위치(3D 공간 좌표)와 UV 위치(2D 텍스처 좌표) 간의 관계를 보여줍니다.",en:"Demonstrates the relationship between XYZ positions and UV texture coordinates."}},{name:"AlphaBlendModeTest",path:"gltf/basic/alphaBlendModeTest",description:{ko:"다양한 알파 모드(OPAQUE, BLEND, MASK)가 올바르게 렌더링되는지 테스트합니다.",en:"Tests the various alpha modes (OPAQUE, BLEND, MASK) to verify correct rendering."}},{name:"TextureSettingsTest",path:"gltf/basic/textureSettingsTest",description:{ko:"텍스처 샘플링 설정(Wrap 모드, 필터링)을 테스트합니다.",en:"Tests texture sampling settings (Wrap modes, Filtering)."}},{name:"MultiUVTest",path:"gltf/basic/multiUVTest",description:{ko:"다중 텍스처 좌표 속성(예: 색상용 TEXCOORD_0, 기타 요소용 TEXCOORD_1)의 사용을 시연합니다.",en:"Demonstrates the usage of multiple texture coordinate attributes (e.g., TEXCOORD_0 for color, TEXCOORD_1 for other elements)."}},{name:"MetalRoughSpheres",path:"gltf/basic/metalRoughSpheres",description:{ko:"다양한 금속성(Metallic)과 거칠기(Roughness) 값을 가진 구체들을 통해 PBR 렌더링을 테스트합니다.",en:"Tests PBR rendering via spheres with varying Metallic and Roughness values."}},{name:"MetalRoughSpheresNoTextures",path:"gltf/basic/metalRoughSpheresNoTextures",description:{ko:"텍스처 없이 재질의 요소(Factor) 값만으로 금속성과 거칠기를 표현하는 테스트입니다.",en:"Tests representing metallic and roughness using only material factor values without textures."}},{name:"WaterBottle",path:"gltf/basic/waterBottle",description:{ko:"Normal, Occlusion, Emissive 맵을 사용하는 기본적인 금속/거칠기(Metal/Roughness) PBR 물병 모델입니다.",en:"A basic Metal/Roughness PBR water bottle model using Normal, Occlusion, and Emissive maps."}},{name:"NormalTangentTest",path:"gltf/basic/normalTangentTest",description:{ko:"노멀 맵핑과 탄젠트 공간 계산의 정확성을 테스트합니다.",en:"Tests the accuracy of normal mapping and tangent space calculations."}},{name:"NormalTangentMirrorTest",path:"gltf/basic/normalTangentMirrorTest",description:{ko:"미러링된 텍스처 좌표에서의 노멀 맵핑 처리를 테스트합니다.",en:"Tests normal mapping handling with mirrored texture coordinates."}},{name:"NegativeScaleTest",path:"gltf/basic/negativeScaleTest",description:{ko:"음수 스케일(반전)이 적용된 노드의 렌더링을 테스트합니다.",en:"Tests rendering of nodes with negative scale (inversion) applied."}},{name:"EnvironmentTest",path:"gltf/basic/environmentTest",description:{ko:"금속 표면에서의 환경 맵 반사 효과를 테스트합니다.",en:"Tests environment map reflection effects on metallic surfaces."}},{name:"Generate normal vector test",path:"gltf/basic/generateNormalTest",description:{ko:"모델에 노멀 정보가 없을 때 자동으로 노멀 벡터를 생성하는 기능을 테스트합니다.",en:"Tests the automatic generation of normal vectors when the model lacks normal information."}}]},{name:"Basic Compare",list:[{name:"CompareBaseColor",path:"gltf/basic/compareBaseColor",description:{ko:"기본 색상(Base Color) 렌더링 결과를 비교합니다.",en:"Compares Base Color rendering results."}},{name:"CompareAlphaCoverage",path:"gltf/basic/compareAlphaCoverage",description:{ko:"알파 커버리지(Alpha Coverage) 렌더링 결과를 비교합니다.",en:"Compares Alpha Coverage rendering results."}},{name:"CompareMetallic",path:"gltf/basic/compareMetallic",description:{ko:"금속성(Metallic) 렌더링 결과를 비교합니다.",en:"Compares Metallic rendering results."}},{name:"CompareNormal",path:"gltf/basic/compareNormal",description:{ko:"노멀 맵(Normal Map) 렌더링 결과를 비교합니다.",en:"Compares Normal Map rendering results."}},{name:"CompareRoughness",path:"gltf/basic/compareRoughness",description:{ko:"거칠기(Roughness) 렌더링 결과를 비교합니다.",en:"Compares Roughness rendering results."}},{name:"CompareAmbientOcclusion",path:"gltf/basic/compareAmbientOcclusion",description:{ko:"앰비언트 오클루전(AO) 렌더링 결과를 비교합니다.",en:"Compares Ambient Occlusion (AO) rendering results."}}]},{name:"Animation",list:[{name:"Basic Animations",path:"gltf/animation/basicAnimations",description:{ko:"노드의 이동, 회전, 크기 조절 애니메이션을 보여주는 기본 예제입니다.",en:"Basic example showing node translation, rotation, and scaling animations."}},{name:"SimpleSkin",path:"gltf/animation/simpleSkin",description:{ko:"가장 기본적인 형태의 스키닝(Skinning) 애니메이션 예제입니다.",en:"The most basic example of skinning animation."}},{name:"SimpleMorph",path:"gltf/animation/simpleMorph",description:{ko:"간단한 모프 타겟(Morph Target) 애니메이션 예제입니다.",en:"Simple Morph Target animation example."}},{name:"RiggedSimple",path:"gltf/animation/riggedSimple",description:{ko:"간단하게 리깅된 원통형 메쉬를 통해 스키닝 동작을 확인합니다.",en:"Verifies skinning behavior via a simply rigged cylindrical mesh."}},{name:"RiggedFigure",path:"gltf/animation/riggedFigure",description:{ko:"리깅된 인간형 캐릭터 모델의 애니메이션을 테스트합니다.",en:"Tests animation of a rigged humanoid character model."}},{name:"InterpolationTest",path:"gltf/animation/interpolationTest",description:{ko:"애니메이션 보간 모드(Step, Linear, Cubic Spline)의 차이를 보여줍니다.",en:"Demonstrates the differences between animation interpolation modes (Step, Linear, Cubic Spline)."}},{name:"CesiumMan & MilkTruck",path:"gltf/animation/cesiumMan",description:{ko:"스키닝된 CesiumMan과 애니메이션이 적용된 우유 트럭 모델입니다.",en:"Skinned CesiumMan and animated Milk Truck models."}},{name:"BrainStem",path:"gltf/animation/brainStem",description:{ko:"복잡한 계층 구조와 스키닝을 가진 BrainStem 모델 애니메이션입니다.",en:"BrainStem model animation with complex hierarchy and skinning."}},{name:"MorphStressTest",path:"gltf/animation/morphStressTest",description:{ko:"다수의 활성 정점 속성(최대 18개)을 사용하여 모프 타겟 구현을 스트레스 테스트합니다.",en:"Stress-tests morph target implementations with a high number of active vertex attributes (up to 18)."}},{name:"RecursiveSkeletons",path:"gltf/animation/recursiveSkeletons",description:{ko:"복잡한 스키닝 케이스(다른 스킨으로 메쉬 재사용, 단일 스켈레톤에 다중 스킨 바인딩)를 테스트합니다.",en:"Tests complex skinning cases: reusing meshes with different skins and binding multiple skins to a single skeleton."}},{name:"Animation Performance Test",list:[{name:"Medium load Skinning",path:"gltf/animation/performance/mediumLoadSkinning",description:{ko:"19개의 관절과 57개의 애니메이션 채널을 가진 다수의 모델을 계산하는 성능 데모입니다.",en:"This is a performance demo that computes a large number of models with 19 joints and 57 animation channels."}},{name:"High vertex load Skinning",path:"gltf/animation/performance/highVertexLoadSkinning",description:{ko:"많은 정점과 관절을 가진 모델에 대한 스키닝 성능을 측정하는 테스트를 수행합니다. 각 장치의 성능 한계를 확인하기 위해 FPS와 GPU/CPU 사용량을 모니터링합니다.",en:"perform tests to measure skinning performance for models with many vertices and joints. We monitor FPS and GPU/CPU utilization to determine performance limits for each device."}},{name:"Morph target load Test",path:"gltf/animation/performance/highMorphTarget",description:{ko:"수백 개의 MorphStressTest 모델을 인스턴스화하여 모프 스트레스 테스트를 수행합니다.
\n실시간 모프 타겟 스키닝 성능을 극한까지 벤치마킹합니다. 세 가지 애니메이션 중 가장 무거운 모프 타겟 애니메이션의 성능을 테스트합니다.
\n각 장치의 성능 한계를 확인하세요.",en:"Perform morph stress tests by instantiating hundreds of MorphStressTest models.
\nBenchmark real-time morph target skinning performance to the limit. Test the performance of the heaviest of the three animations, the morph target animation.
\nCheck performance limits on each device."}}]}]},{name:"3D Models",list:[{name:"corset",path:"gltf/models/corset",description:{ko:"복잡한 형상과 텍스처를 가진 고해상도 코르셋 모델입니다.",en:"High-resolution Corset model with complex geometry and textures."}},{name:"Helmets",path:"gltf/models/helmets",description:{ko:"손상된 헬멧(Damaged Helmet) 등 고품질 PBR 텍스처를 보여주는 모델들입니다.",en:"Models showcasing high-quality PBR textures, such as the Damaged Helmet."}},{name:"Sponza",path:"gltf/models/sponza",description:{ko:"조명 테스트에 널리 사용되는 건물 내부 모델입니다. 현대적인 PBR 파이프라인을 위해 고해상도 지오메트리로 리메이크되었습니다.",en:"Building interior commonly used for testing lighting. Remade for modern PBR pipelines with high-resolution geometry."}},{name:"Tokyo",path:"gltf/models/tokyo",description:{ko:"수많은 드로우 콜과 대규모 씬 렌더링을 테스트하는 도쿄 도시 모델입니다.",en:"Tokyo city model testing large-scale scene rendering and numerous draw calls."}},{name:"texcooredNTest",path:"gltf/models/texcooredNTest",description:{ko:"다중 텍스처 좌표 채널의 동작을 확인하는 테스트 모델입니다.",en:"Test model verifying the behavior of multiple texture coordinate channels."}},{name:"ABeautifulGame",path:"gltf/models/aBeautifulGame",extensionList:["KHR_materials_transmission","KHR_materials_volume"],description:{ko:"투과(Transmission)와 볼륨(Volume) 효과를 시연하는 체스 세트입니다.",en:"A chess set demonstrating transmission and volume."}}]},{name:"GLTF Extensions",list:[{name:"KHR_materials_anisotropy",list:[{name:"CompareAnisotropy",path:"gltf/gltfExtensions/anisotropy/compareAnisotropy",extensionList:["KHR_materials_anisotropy"],description:{ko:"비등방성(Anisotropy)이 있는 렌더링과 없는 렌더링을 비교합니다.",en:"Compares rendering with and without anisotropy."}},{name:"AnisotropyDiscTest",path:"gltf/gltfExtensions/anisotropy/anisotropyDiscTest",extensionList:["KHR_materials_anisotropy"],description:{ko:"원판 형태의 비등방성 하이라이트 회전을 테스트합니다.",en:"Tests anisotropic highlight rotation on a disc shape."}},{name:"AnisotropyRotationTest",path:"gltf/gltfExtensions/anisotropy/anisotropyRotationTest",extensionList:["KHR_materials_anisotropy"],description:{ko:"비등방성 방향 회전에 따른 렌더링 변화를 테스트합니다.",en:"Tests rendering changes based on anisotropy direction rotation."}},{name:"AnisotropyStrengthTest",path:"gltf/gltfExtensions/anisotropy/anisotropyStrengthTest",extensionList:["KHR_materials_anisotropy"],description:{ko:"비등방성 강도(Strength)에 따른 하이라이트 변화를 테스트합니다.",en:"Tests highlight changes based on anisotropy strength."}},{name:"AnisotropyBarnLamp",path:"gltf/gltfExtensions/anisotropy/anisotropyBarnLamp",extensionList:["KHR_materials_anisotropy"],description:{ko:"비등방성(Anisotropic) 재질 속성을 보여주는 헛간 램프 모델입니다.",en:"A barn lamp model showcasing anisotropic material properties."}}]},{name:"KHR_materials_iridescence",list:[{name:"CompareIridescence",path:"gltf/gltfExtensions/iridescence/compareIridescence",extensionList:["KHR_materials_iridescence"],description:{ko:"무지개빛(Iridescence) 박막 간섭 효과를 비교합니다.",en:"Compares Iridescence thin-film interference effects."}},{name:"IridescenceDielectricSpheres",path:"gltf/gltfExtensions/iridescence/iridescenceDielectricSpheres",extensionList:["KHR_materials_iridescence","KHR_materials_transmission","KHR_materials_volume"],description:{ko:"비금속(유전체) 재질에서 KHR_materials_iridescence 확장을 테스트합니다.",en:"Tests the KHR_materials_iridescence extension on non-metallic (dielectric) materials."}},{name:"IridescenceMetallicSpheres",path:"gltf/gltfExtensions/iridescence/iridescenceMetallicSpheres",extensionList:["KHR_materials_iridescence"],description:{ko:"금속 구체에 적용된 무지개빛 효과를 테스트합니다.",en:"Tests iridescence effects applied to metallic spheres."}},{name:"IridescenceSuzanne",path:"gltf/gltfExtensions/iridescence/iridescenceSuzanne",extensionList:["KHR_materials_iridescence"],description:{ko:"Suzanne 모델에 적용된 무지개빛 쉐이더 테스트입니다.",en:"Iridescence shader test applied to the Suzanne model."}},{name:"IridescenceLamp",path:"gltf/gltfExtensions/iridescence/iridescenceLamp",extensionList:["KHR_materials_iridescence","KHR_materials_transmission","KHR_materials_volume"],description:{ko:"투과 및 볼륨 효과와 함께 KHR_materials_iridescence를 보여주는 Wayfair 램프 모델입니다.",en:"A Wayfair lamp model showcasing transmission, volume, and KHR_materials_iridescence."}},{name:"SunglassesKhronos",path:"gltf/gltfExtensions/iridescence/sunglassesKhronos",extensionList:["KHR_materials_iridescence","KHR_materials_transmission"],description:{ko:"렌즈에 얇은 막 무지개빛 효과가 적용된 선글라스 모델입니다.",en:"Sunglasses model with thin-film iridescence effects applied to the lenses."}},{name:"IridescentDishWithOlives",path:"gltf/gltfExtensions/iridescence/iridescentDishWithOlives",extensionList:["KHR_materials_iridescence","KHR_materials_transmission","KHR_materials_volume","KHR_materials_ior","KHR_materials_specular"],description:{ko:"투과, 볼륨, IOR 및 스펙큘러 속성을 보여주는 접시 모델입니다.",en:"A dish demonstrating transmission, volume, IOR, and specular properties."}}]},{name:"KHR_materials_clearcoat",list:[{name:"CompareClearcoat",path:"gltf/gltfExtensions/clearcoat/compareClearcoat",extensionList:["KHR_materials_clearcoat"],description:{ko:"클리어코트(Clearcoat) 재질 렌더링 결과를 비교합니다.",en:"Compares Clearcoat material rendering results."}},{name:"ClearCoatTest",path:"gltf/gltfExtensions/clearcoat/clearCoatTest",extensionList:["KHR_materials_clearcoat"],description:{ko:"다양한 거칠기와 클리어코트 강도를 테스트합니다.",en:"Tests various roughness and clearcoat strengths."}},{name:"ClearcoatWicker",path:"gltf/gltfExtensions/clearcoat/clearcoatWicker",extensionList:["KHR_materials_clearcoat"],description:{ko:"직물 표면 위에 코팅된 클리어코트 효과를 보여주는 위커 모델입니다.",en:"Wicker model showing clearcoat effect coated over a woven surface."}},{name:"ClearCoatCarPaint",path:"gltf/gltfExtensions/clearcoat/clearCoatCarPaint",extensionList:["KHR_materials_clearcoat"],description:{ko:"자동차 페인트와 같은 다중 레이어 재질 표현을 테스트합니다.",en:"Tests multi-layer material representation like car paint."}}]},{name:"KHR_materials_dispersion",list:[{name:"CompareDispersion",path:"gltf/gltfExtensions/dispersion/compareDispersion",extensionList:["KHR_materials_dispersion","KHR_materials_transmission"],description:{ko:"빛의 분산(Dispersion) 효과를 비교합니다.",en:"Compares light dispersion effects."}},{name:"DispersionTest",path:"gltf/gltfExtensions/dispersion/dispersionTest",extensionList:["KHR_materials_dispersion","KHR_materials_transmission"],description:{ko:"프리즘과 같은 빛의 분산 현상을 테스트합니다.",en:"Tests light dispersion phenomena like a prism."}},{name:"DragonDispersion",path:"gltf/gltfExtensions/dispersion/dragonDispersion",extensionList:["KHR_materials_dispersion","KHR_materials_transmission","KHR_materials_volume"],description:{ko:"용 모델에 적용된 보석 같은 분산 효과를 보여줍니다.",en:"Shows gem-like dispersion effects applied to a Dragon model."}}]},{name:"KHR_materials_emissive_strength",list:[{name:"CompareEmissiveStrength",path:"gltf/gltfExtensions/emissiveStrength/compareEmissiveStrength",extensionList:["KHR_materials_emissive_strength"],description:{ko:"발광(Emissive) 강도 증폭 효과를 비교합니다.",en:"Compares Emissive Strength amplification effects."}},{name:"EmissiveStrengthTest",path:"gltf/gltfExtensions/emissiveStrength/emissiveStrengthTest",extensionList:["KHR_materials_emissive_strength"],description:{ko:"1.0을 초과하는 고강도 발광 표현을 테스트합니다.",en:"Tests high-intensity emissive representation exceeding 1.0."}}]},{name:"KHR_materials_sheen",list:[{name:"CompareSheen",path:"gltf/gltfExtensions/sheen/compareSheen",extensionList:["KHR_materials_sheen"],description:{ko:"직물 등의 미세한 반사광(Sheen) 효과를 비교합니다.",en:"Compares Sheen effects seen on fabrics etc."}},{name:"SheenTestGrid",path:"gltf/gltfExtensions/sheen/sheenTestGrid",extensionList:["KHR_materials_sheen"],description:{ko:"Sheen 색상과 거칠기에 따른 변화를 그리드로 테스트합니다.",en:"Tests changes based on Sheen color and roughness in a grid."}},{name:"SheenCloth",path:"gltf/gltfExtensions/sheen/sheenCloth",extensionList:["KHR_materials_sheen"],description:{ko:"Sheen 효과를 보여주는 직물 예제입니다.",en:"A fabric example showcasing sheen."}},{name:"SheenChair",path:"gltf/gltfExtensions/sheen/sheenChair",extensionList:["KHR_materials_sheen","KHR_materials_variants"],description:{ko:"재질 변형(Variant)과 Sheen 효과를 보여주는 의자 모델입니다.",en:"A chair model demonstrating material variants and sheen."}},{name:"GlamVelvetSofa",path:"gltf/gltfExtensions/sheen/glamVelvetSofa",extensionList:["KHR_materials_sheen","KHR_materials_specular","KHR_materials_variants"],description:{ko:"고급 벨벳 소파의 질감을 표현하는 Sheen 모델입니다.",en:"Sheen model expressing the texture of a luxury velvet sofa."}},{name:"ChairDamaskPurplegold",path:"gltf/gltfExtensions/sheen/chairDamaskPurplegold",extensionList:["KHR_materials_sheen"],description:{ko:"다마스크 패턴 의자의 직물 느낌을 표현합니다.",en:"Expresses the fabric feel of a damask pattern chair."}},{name:"SheenWoodLeatherSofa",path:"gltf/gltfExtensions/sheen/sheenWoodLeatherSofa",extensionList:["KHR_materials_sheen"],description:{ko:"가죽과 나무 재질이 혼합된 소파에서의 Sheen 효과입니다.",en:"Sheen effect on a sofa combining leather and wood materials."}}]},{name:"KHR_materials_specular",list:[{name:"CompareSpecular",path:"gltf/gltfExtensions/specular/compareSpecular",extensionList:["KHR_materials_specular"],description:{ko:"스펙큘러(Specular) 반사 강도 및 색상 제어를 비교합니다.",en:"Compares Specular reflection strength and color control."}},{name:"SpecularTest",path:"gltf/gltfExtensions/specular/specularTest",extensionList:["KHR_materials_specular"],description:{ko:"유전체 재질의 스펙큘러 하이라이트 조절을 테스트합니다.",en:"Tests specular highlight adjustments on dielectric materials."}},{name:"SpecularSilkPouf",path:"gltf/gltfExtensions/specular/specularSilkPouf",extensionList:["KHR_materials_specular"],description:{ko:"스펙큘러 속성을 보여주는 실크 푸프 모델입니다.",en:"A silk pouf model demonstrating specular properties."}}]},{name:"KHR_materials_unlit",list:[{name:"UnlitTest",path:"gltf/gltfExtensions/unlit/unlitTest",extensionList:["KHR_materials_unlit"],description:{ko:"조명의 영향을 받지 않는 Unlit(무광) 재질을 테스트합니다.",en:"Tests Unlit materials not affected by lighting."}}]},{name:"KHR_texture_transform",list:[{name:"TextureTransformTest",path:"gltf/gltfExtensions/textureTransform/textureTransformTest",extensionList:["KHR_texture_transform"],description:{ko:"KHR_texture_transform 확장의 사용법(스케일, 회전, 이동)을 시연합니다.",en:"Demonstrates the usage of the KHR_texture_transform extension (scaling, rotation, translation)."}},{name:"TextureTransformMultiTest",path:"gltf/gltfExtensions/textureTransform/textureTransformMultiTest",extensionList:["KHR_texture_transform"],description:{ko:"여러 텍스처에 서로 다른 변환을 적용하는 테스트입니다.",en:"Tests applying different transforms to multiple textures."}}]},{name:"KHR_materials_diffuseTransmission",list:[{name:"DiffuseTransmissionTest",path:"gltf/gltfExtensions/diffuseTransmission/diffuseTransmissionTest",extensionList:["KHR_materials_diffuseTransmission"],description:{ko:"반투명한 물체의 확산 투과(Diffuse Transmission) 효과를 테스트합니다.",en:"Tests Diffuse Transmission effects on translucent objects."}},{name:"DiffuseTransmissionTeacup",path:"gltf/gltfExtensions/diffuseTransmission/diffuseTransmissionTeacup",extensionList:["KHR_materials_diffuseTransmission"],description:{ko:"얇은 찻잔을 통과하는 빛의 확산을 보여줍니다.",en:"Shows light diffusion passing through a thin teacup."}}]},{name:"KHR_materials_transmission",list:[{name:"CompareTransmission",path:"gltf/gltfExtensions/transmission/compareTransmission",extensionList:["KHR_materials_transmission"],description:{ko:"투명한 물체의 투과(Transmission) 렌더링을 비교합니다.",en:"Compares Transmission rendering of transparent objects."}},{name:"TransmissionTest",path:"gltf/gltfExtensions/transmission/transmissionTest",extensionList:["KHR_materials_transmission","KHR_materials_ior"],description:{ko:"다양한 투과율과 거칠기에 따른 굴절 효과를 테스트합니다.",en:"Tests refraction effects based on various transmission rates and roughness."}},{name:"TransmissionRoughnessTest",path:"gltf/gltfExtensions/transmission/transmissionRoughnessTest",extensionList:["KHR_materials_transmission"],description:{ko:"거친 표면을 가진 투명 재질의 흐림 효과를 테스트합니다.",en:"Tests blurring effects on transparent materials with rough surfaces."}},{name:"StainedGlassLamp",path:"gltf/gltfExtensions/transmission/stainedGlassLamp",extensionList:["KHR_materials_transmission"],description:{ko:"스테인드글라스 램프를 통해 색상이 있는 투과광을 보여줍니다.",en:"Shows colored transmitted light through a stained glass lamp."}},{name:"ChronographWatch",path:"gltf/gltfExtensions/transmission/chronographWatch",extensionList:["KHR_materials_transmission","KHR_materials_variants"],description:{ko:"시계 유리의 투명도와 내부 디테일을 보여주는 고품질 모델입니다.",en:"High-quality model showing watch glass transparency and internal details."}},{name:"MosquitoInAmber",path:"gltf/gltfExtensions/transmission/mosquitoInAmber",extensionList:["KHR_materials_transmission","KHR_materials_volume","KHR_materials_ior"],description:{ko:"호박(Amber) 속에 갇힌 모기를 통해 투과, 굴절률(IOR), 볼륨 속성을 시연합니다.",en:"A mosquito encased in amber, demonstrating the use of transmission, IOR, and volume properties."}},{name:"CommercialRefrigerator",path:"gltf/gltfExtensions/transmission/commercialRefrigerator",extensionList:["KHR_materials_transmission"],description:{ko:"유리 문을 가진 상업용 냉장고 모델입니다.",en:"Commercial refrigerator model with glass doors."}}]},{name:"KHR_materials_volume",list:[{name:"CompareIor",path:"gltf/gltfExtensions/volume/compareIor",extensionList:["KHR_materials_ior"],description:{ko:"굴절률(IOR)에 따른 빛의 굴절 차이를 비교합니다.",en:"Compares light refraction differences based on Index of Refraction (IOR)."}},{name:"IORTestGrid",path:"gltf/gltfExtensions/volume/IORTestGrid",extensionList:["KHR_materials_ior"],description:{ko:"다양한 IOR 값에 따른 굴절 변화를 그리드로 테스트합니다.",en:"Tests refraction changes based on various IOR values in a grid."}},{name:"CompareVolume",path:"gltf/gltfExtensions/volume/compareVolume",extensionList:["KHR_materials_volume"],description:{ko:"볼륨(Volume) 흡수 및 산란 효과를 비교합니다.",en:"Compares Volume absorption and scattering effects."}},{name:"TransmissionThinwallTestGrid",path:"gltf/gltfExtensions/volume/transmissionThinwallTestGrid",extensionList:["KHR_materials_transmission","KHR_materials_volume"],description:{ko:"얇은 벽(Thin-walled) 옵션 활성화 여부에 따른 투과 차이를 테스트합니다.",en:"Tests transmission differences based on Thin-walled option activation."}},{name:"AttenuationTest",path:"gltf/gltfExtensions/volume/attenuationTest",extensionList:["KHR_materials_volume"],description:{ko:"빛이 매질을 통과할 때의 감쇠(Attenuation) 거리와 색상을 테스트합니다.",en:"Tests attenuation distance and color as light passes through a medium."}},{name:"GlassVaseFlowers",path:"gltf/gltfExtensions/volume/glassVaseFlowers",extensionList:["KHR_materials_transmission","KHR_materials_volume","KHR_materials_ior"],description:{ko:"유리 꽃병과 물의 볼륨 효과를 보여주는 모델입니다.",en:"Model showing volume effects of a glass vase and water."}},{name:"GlassBrokenWindow",path:"gltf/gltfExtensions/volume/glassBrokenWindow",extensionList:["KHR_materials_transmission","KHR_materials_volume","KHR_materials_ior"],description:{ko:"깨진 유리창의 두께감과 굴절을 표현합니다.",en:"Expresses the thickness and refraction of a broken window."}},{name:"GlassHurricaneCandleHolder",path:"gltf/gltfExtensions/volume/glassHurricaneCandleHolder",extensionList:["KHR_materials_transmission","KHR_materials_volume","KHR_materials_ior"],description:{ko:"복잡한 유리 형태의 굴절과 반사를 보여주는 캔들 홀더입니다.",en:"Candle holder showing refraction and reflection of complex glass shapes."}},{name:"DragonAttenuation",path:"gltf/gltfExtensions/volume/dragonAttenuation",extensionList:["KHR_materials_transmission","KHR_materials_volume"],description:{ko:"KHR_materials_transmission과 KHR_materials_volume을 사용하여 색유리와 같은 객체를 표현합니다.",en:"Showcases KHR_materials_transmission and KHR_materials_volume, creating an object that resembles colored glass."}}]}]}]},{name:"PostEffect",list:[{name:"Convolution",path:"postEffect/convolution",description:{ko:"컨볼루션 필터 효과를 시연하는 예제입니다.",en:"An example demonstrating convolution filter effects."}},{name:"FilmGrain",path:"postEffect/filmGrain",description:{ko:"필름 그레인 효과를 시연하는 예제입니다.",en:"An example demonstrating film grain effects."}},{name:"OldBloom",path:"postEffect/oldBloom",description:{ko:"고전적인 블룸 효과를 시연하는 예제입니다.",en:"An example demonstrating classic bloom effects."}},{name:"Sharpen",path:"postEffect/sharpen",description:{ko:"선명도(Sharpen) 효과를 시연하는 예제입니다.",en:"An example demonstrating sharpen effects."}},{name:"Adjustments",list:[{name:"Grayscale",path:"postEffect/adjustments/grayscale",description:{ko:"그레이스케일 색상 보정 효과 예제입니다.",en:"Example of Grayscale color adjustment effect."}},{name:"Invert",path:"postEffect/adjustments/invert",description:{ko:"색상 반전 효과 예제입니다.",en:"Example of Invert color adjustment effect."}},{name:"ColorBalance",path:"postEffect/adjustments/colorBalance",description:{ko:"컬러 밸런스 색상 보정 효과 예제입니다.",en:"Example of Color Balance color adjustment effect."}},{name:"ColorTemperatureTint",path:"postEffect/adjustments/colorTemperatureTint",description:{ko:"색온도 및 틴트 색상 보정 효과 예제입니다.",en:"Example of Color Temperature & Tint color adjustment effect."}},{name:"BrightnessContrast",path:"postEffect/adjustments/brightnessContrast",description:{ko:"밝기 및 대비 색상 보정 효과 예제입니다.",en:"Example of Brightness & Contrast color adjustment effect."}},{name:"HueSaturation",path:"postEffect/adjustments/hueSaturation",description:{ko:"색조 및 채도 색상 보정 효과 예제입니다.",en:"Example of Hue & Saturation color adjustment effect."}},{name:"Threshold",path:"postEffect/adjustments/threshold",description:{ko:"임계값(Threshold) 색상 보정 효과 예제입니다.",en:"Example of Threshold color adjustment effect."}},{name:"Vibrance",path:"postEffect/adjustments/vibrance",description:{ko:"활기(Vibrance) 색상 보정 효과 예제입니다.",en:"Example of Vibrance color adjustment effect."}}]},{name:"Blur",list:[{name:"Blur",path:"postEffect/blur/blur",description:{ko:"기본 블러 효과 예제입니다.",en:"Example of Basic Blur effect."}},{name:"BlurX",path:"postEffect/blur/blurX",description:{ko:"가로 방향 블러 효과 예제입니다.",en:"Example of Horizontal Blur effect."}},{name:"BlurY",path:"postEffect/blur/blurY",description:{ko:"세로 방향 블러 효과 예제입니다.",en:"Example of Vertical Blur effect."}},{name:"DirectionalBlur",path:"postEffect/blur/directionalBlur",description:{ko:"방향성 블러 효과 예제입니다.",en:"Example of Directional Blur effect."}},{name:"GaussianBlur",path:"postEffect/blur/gaussianBlur",description:{ko:"가우시안 블러 효과 예제입니다.",en:"Example of Gaussian Blur effect."}},{name:"RadialBlur",path:"postEffect/blur/radialBlur",description:{ko:"방사형 블러 효과 예제입니다.",en:"Example of Radial Blur effect."}},{name:"ZoomBlur",path:"postEffect/blur/zoomBlur",description:{ko:"줌 블러 효과 예제입니다.",en:"Example of Zoom Blur effect."}}]},{name:"Lens",list:[{name:"LensDistortion",path:"postEffect/lens/lensDistortion",description:{ko:"렌즈 왜곡 효과 예제입니다.",en:"Example of Lens Distortion effect."}},{name:"ChromaticAberration",path:"postEffect/lens/chromaticAberration",description:{ko:"색수차 효과 예제입니다.",en:"Example of Chromatic Aberration effect."}},{name:"DepthOfField",path:"postEffect/lens/dof",description:{ko:"피사계 심도(DoF) 효과 예제입니다.",en:"Example of Depth of Field effect."}},{name:"Vignetting",path:"postEffect/lens/vignetting",description:{ko:"비네팅 효과 예제입니다.",en:"Example of Vignetting effect."}}]},{name:"Fog",list:[{name:"Fog",path:"postEffect/fog/fog",description:{ko:"안개 효과를 시연하는 예제입니다.",en:"An example demonstrating fog effects."}},{name:"HeightFog",path:"postEffect/fog/heightFog",description:{ko:"높이 기반 안개 효과를 시연하는 예제입니다.",en:"An example demonstrating height-based fog effects."}}]},{name:"Screen Space Reflection",experimental:!0,list:[{experimental:!0,name:"SSR",path:"postEffect/ssr",description:{ko:"화면 공간 반사(SSR) 효과를 시연하는 예제입니다.",en:"An example demonstrating Screen Space Reflection (SSR) effects."}}]},{name:"Screen Space Ambient Occlusion",list:[{name:"SSAO",path:"postEffect/ssao",description:{ko:"화면 공간 앰비언트 오클루전(SSAO) 효과를 시연하는 예제입니다.",en:"An example demonstrating Screen Space Ambient Occlusion (SSAO) effects."}}]}]},{name:"2D",list:[{name:"Hello RedGPU - 2D Mode",path:"2d/helloWorld2D",description:{ko:"RedGPU의 2D 모드 초기화 샘플입니다.",en:"Sample of RedGPU's 2D mode initialization."}},{name:"View2D",list:[{name:"Multi View (2D + 2D)",path:"2d/view/multiView",description:{ko:"여러 개의 2D View를 사용하는 멀티 뷰 예제입니다.",en:"Multi-view example using multiple 2D Views."}},{name:"Multi View (3D + 2D)",path:"2d/view/multiViewWith3D",description:{ko:"3D View와 2D View를 함께 사용하는 복합 멀티 뷰 예제입니다.",en:"Complex multi-view example using both 3D View and 2D View."}}]},{name:"Sprite2D",list:[{name:"Basic Sprite2D",path:"2d/sprite2D/basic",description:{ko:"기본적인 Sprite2D 객체 사용법을 보여주는 예제입니다.",en:"An example showing basic usage of Sprite2D object."}},{name:"Hierarchy Sprite2D",path:"2d/sprite2D/hierarchy",description:{ko:"2D 공간에서 Sprite2D의 계층 구조를 구성하는 예제입니다.",en:"An example constructing a hierarchy of Sprite2D in 2D space."}},{name:"Pivot Sprite2D",path:"2d/sprite2D/pivot",description:{ko:"Sprite2D의 피벗(중심점)을 변경하여 회전 및 위치를 제어하는 예제입니다.",en:"An example controlling rotation and position by changing the pivot of Sprite2D."}},{name:"Child Methods",path:"2d/sprite2D/childMethod",description:{ko:"2D 객체의 자식 노드를 관리하는 다양한 메서드를 시연하는 예제입니다.",en:"An example demonstrating various methods for managing child nodes of 2D objects."}}]},{name:"SpriteSheet2D",list:[{name:"Basic SpriteSheet2D",path:"2d/spriteSheet2D/basic",description:{ko:"스프라이트 시트 애니메이션을 재생하는 기본적인 SpriteSheet2D 예제입니다.",en:"Basic SpriteSheet2D example playing sprite sheet animation."}}]},{name:"TextField2D",list:[{name:"Basic TextField2D",path:"2d/textField2D/basic",description:{ko:"2D 텍스트를 렌더링하는 TextField2D 객체의 기본 사용법 예제입니다.",en:"Basic usage example of TextField2D object for rendering 2D text."}}]},{name:"Group2D",list:[{name:"Basic Group2D",path:"2d/group2D/basic",description:{ko:"2D 객체들을 그룹화하여 관리하는 Group2D 예제입니다.",en:"Group2D example managing 2D objects by grouping them."}}]},{name:"2D Object Opacity",list:[{name:"2D Object Opacity",path:"2d/opacity/basic",description:{ko:"2D 객체의 투명도(Opacity)를 조절하는 예제입니다.",en:"An example adjusting the opacity of 2D objects."}}]},{name:"2D Object BlendMode",list:[{name:"BlendMode",path:"2d/blendMode/basic",description:{ko:"2D 객체의 다양한 블렌딩 모드를 테스트하는 예제입니다.",en:"An example testing various blending modes of 2D objects."}}]},{name:"2D Tint",experimental:!0,list:[{experimental:!0,name:"Tint Basic",path:"2d/tint/basic",description:{ko:"2D 객체에 색상을 입히는 기본 틴트 예제입니다.",en:"Basic tint example applying color to 2D objects."}},{experimental:!0,name:"Tint Objects",path:"2d/tint/2dObjectTint",description:{ko:"다양한 2D 객체에 틴트를 적용하는 예제입니다.",en:"An example applying tint to various 2D objects."}}]},{name:"Interaction",list:[{name:"MouseEvent",list:[{name:"Sprite2D",path:"2d/interaction/mouseEvent/sprite2D",description:{ko:"Sprite2D에 대한 마우스 이벤트를 처리하는 예제입니다.",en:"An example handling mouse events on Sprite2D."}},{name:"SpriteSheet2D",path:"2d/interaction/mouseEvent/spriteSheet2D",description:{ko:"SpriteSheet2D에 대한 마우스 이벤트를 처리하는 예제입니다.",en:"An example handling mouse events on SpriteSheet2D."}},{name:"TextField2D",path:"2d/interaction/mouseEvent/textField2D",description:{ko:"TextField2D에 대한 마우스 이벤트를 처리하는 예제입니다.",en:"An example handling mouse events on TextField2D."}}]},{name:"KeyboardEvent",list:[{name:"Keyboard Interaction",path:"2d/interaction/keyboardEvent",description:{ko:"keyboardKeyBuffer를 사용하여 2D 환경에서 객체를 제어하는 방법을 보여줍니다.",en:"Demonstrates how to control an object in a 2D environment using keyboardKeyBuffer."}}]}]}]},{name:"Physics",experimental:!0,list:[{name:"Fundamentals",experimental:!0,list:[{experimental:!0,name:"Basic Physics",path:"physics/basic",description:{ko:"Rapier 물리 엔진을 사용한 기본적인 물리 시뮬레이션 예제입니다.",en:"Basic physics simulation example using the Rapier physics engine."}},{experimental:!0,name:"Shapes & Materials",path:"physics/shapes",description:{ko:"다양한 충돌체 형상(Box, Sphere, Cylinder, Capsule)과 탄성/마찰 설정을 테스트합니다.",en:"Tests various collider shapes (Box, Sphere, Cylinder, Capsule) and restitution/friction settings."}},{experimental:!0,name:"Kinematic Interaction",path:"physics/kinematic",description:{ko:"코드에 의해 제어되는 키네마틱 객체가 동적 객체들과 상호작용하는 모습을 보여줍니다.",en:"Demonstrates how kinematic objects controlled by code interact with dynamic objects."}},{experimental:!0,name:"Mesh Collider",path:"physics/meshCollider",description:{ko:"커스텀 기하구조를 물리 충돌체로 변환하는 방법을 테스트합니다.",en:"Tests how to convert custom geometries into physics engine colliders."}},{experimental:!0,name:"HeightField",path:"physics/heightField",description:{ko:"높이맵 데이터를 사용하여 지형과 같은 복잡한 표면의 물리 충돌을 구현하는 방법을 테스트합니다.",en:"Tests how to implement physics collisions for complex surfaces like terrain using heightmap data."}},{experimental:!0,name:"GLTF Physics",path:"physics/gltfPhysics",description:{ko:"로드된 GLTF 모델의 복잡한 계층 구조와 메쉬 데이터를 분석하여 자동으로 물리 충돌체를 생성하는 방법을 테스트합니다.",en:"Tests how to automatically generate physics colliders by analyzing the complex hierarchy and mesh data of a loaded GLTF model."}}]},{name:"Interaction & Events",experimental:!0,list:[{experimental:!0,name:"Raycasting Interaction",path:"physics/raycast",description:{ko:"마우스 클릭 지점에서 광선을 쏘아 물리 객체를 검출하고, 힘을 가해 밀어내는 등의 상호작용을 구현합니다.",en:"Casts rays from mouse click positions to detect physics objects and implements interactions like pushing them with force."}},{experimental:!0,name:"Collision Events",path:"physics/collisionEvents",description:{ko:"물체 간의 충돌 이벤트를 감지하여 실시간으로 색상을 변경하는 등 물리 연동 로직을 테스트합니다.",en:"Tests physics integration logic by detecting collision events between objects and changing colors in real-time."}},{experimental:!0,name:"Triggers & Sensors",path:"physics/triggers",description:{ko:"물체와 물리적인 충돌은 발생하지 않으나 영역 진입을 감지하는 센서(Trigger) 기능을 테스트합니다.",en:"Tests the sensor (Trigger) function that detects area entry without physical collision."}},{experimental:!0,name:"Collision Filtering",path:"physics/collisionFiltering",description:{ko:"Bitmask 기반의 충돌 그룹 설정을 통해 특정 객체들끼리만 선택적으로 충돌하도록 제어하는 고급 물리 기술을 구현합니다.",en:"Implements advanced physics techniques to selectively control collisions between specific objects through Bitmask-based collision group settings."}}]},{name:"Joints & Constraints",experimental:!0,list:[{experimental:!0,name:"Basic Joints",path:"physics/joints",description:{ko:"물체들을 서로 연결하는 관절(Joint) 기능을 사용하여 체인이나 진자 운동과 같은 복잡한 물리 구조를 구현합니다.",en:"Implements complex physical structures like chains or pendulums using joints to connect objects together."}},{experimental:!0,name:"Revolute Joints & Motors",path:"physics/revoluteJoint",description:{ko:"특정 축을 기준으로 회전하는 관절(Revolute Joint)과 모터 기능을 사용하여 풍차나 선풍기와 같은 회전 장치를 구현합니다.",en:"Implements rotating devices like windmills or fans using revolute joints that rotate around a specific axis and motor functions."}},{experimental:!0,name:"Prismatic Joints & Sliders",path:"physics/prismaticJoint",description:{ko:"직선 방향으로만 왕복 이동이 가능한 프리즈매틱 관절(Prismatic Joint)을 사용하여 승강기나 슬라이더 장치를 구현합니다.",en:"Implements elevators or slider devices using prismatic joints that allow reciprocal movement only in a straight line."}},{experimental:!0,name:"Spring Joint",path:"physics/springJoint",description:{ko:"스프링 조인트를 사용하여 탄성 있는 연결을 구현하는 방법을 테스트합니다.",en:"Tests how to implement elastic connections using spring joints."}},{experimental:!0,name:"Soft Body",path:"physics/softBody",description:{ko:"다수의 노드를 스프링으로 연결하여 젤리와 같은 소프트 바디 효과를 구현합니다.",en:"Implements a jelly-like soft body effect by connecting multiple nodes with springs."}},{experimental:!0,name:"Compound Shapes",path:"physics/compound",description:{ko:"여러 개의 지오메트리를 결합하여 하나의 복잡한 물리 객체를 만드는 복합 형상 기능을 테스트합니다.",en:"Tests the compound shape function that combines multiple geometries to create a single complex physics object."}}]},{name:"Simulation & Systems",experimental:!0,list:[{experimental:!0,name:"Surface Velocity (Conveyor)",path:"physics/surfaceVelocity",description:{ko:"컨베이어 벨트와 같이 표면이 움직이는 물체를 시뮬레이션합니다. 물체가 닿았을 때 특정 방향으로 힘을 가하여 이동시킵니다.",en:"Simulates objects with moving surfaces like conveyor belts. Applies force to move objects in a specific direction when they make contact."}},{experimental:!0,name:"Buoyancy Basics",path:"physics/buoyancy",description:{ko:"물속에서 물체가 떠오르는 부력과 유체 저항을 시뮬레이션합니다. 잠긴 깊이에 따라 상향 힘을 조절합니다.",en:"Simulates buoyancy and fluid resistance for objects in water. Adjusts upward force based on submerged depth."}},{experimental:!0,name:"Ragdoll System",path:"physics/ragdoll",description:{ko:"인간형 캐릭터의 뼈대를 관절(Joint)로 연결하여, 중력에 의해 자연스럽게 쓰러지는 래그돌 물리 효과를 시뮬레이션합니다.",en:"Simulates ragdoll physics where a humanoid skeleton is connected with joints and falls naturally under gravity."}},{experimental:!0,name:"Character Controller",path:"physics/characterController",description:{ko:"지면을 걷고 계단을 오르는 1인칭/3인칭 캐릭터 이동의 기초를 구현합니다.",en:"Implements the basics of 1st/3rd person character movement walking on the ground and climbing stairs."}},{experimental:!0,name:"Advanced Character Controller",path:"physics/advancedCharacterController",description:{ko:"관성 이동, 공중 제어, 이중 점프 등 게임적인 조작감이 가미된 고급 캐릭터 컨트롤러를 구현합니다.",en:"Implements an advanced character controller with game-like controls such as inertial movement, air control, and double jumping."}}]},{name:"Performance & Stress Test",experimental:!0,list:[{experimental:!0,name:"Galton Board",path:"physics/galton",description:{ko:"수많은 구슬이 핀 사이를 떨어지며 통계적 분포를 형성하는 과정을 시뮬레이션합니다.",en:"Simulates the process where numerous balls fall between pins and form a statistical distribution."}},{experimental:!0,name:"Physics Bowling",path:"physics/bowling",description:{ko:"고속으로 이동하는 볼과 핀 사이의 충돌 및 연쇄 반응을 테스트합니다. CCD(Continuous Collision Detection) 기술이 적용되었습니다.",en:"Tests collisions and chain reactions between a fast-moving ball and pins. CCD (Continuous Collision Detection) technology is applied."}},{experimental:!0,name:"Impulse Explosion",path:"physics/explosion",description:{ko:"폭발 지점으로부터 주변 객체들에 충격량을 가하여 날려버리는 물리 효과를 구현합니다.",en:"Implements physics effects where impulse is applied from an explosion point to blow away surrounding objects."}},{experimental:!0,name:"Ultimate Stress Test",path:"physics/stressTest",description:{ko:"수천 개의 물리 객체를 동시에 시뮬레이션하여 엔진의 한계 성능을 테스트합니다. 휴면(Sleep) 모드 활성화를 통한 최적화 효과를 확인합니다.",en:"Tests the engine's performance limits by simulating thousands of physics objects simultaneously. Demonstrates optimization through Sleep mode."}}]}]}];Object.freeze(i);export{t as n,i as t}; \ No newline at end of file diff --git a/examples/exampleHelper/dist/examples.js b/examples/exampleHelper/dist/examples.js index 14805d6bd6..5eaf83534c 100644 --- a/examples/exampleHelper/dist/examples.js +++ b/examples/exampleHelper/dist/examples.js @@ -1,5 +1,5 @@ !function(i){try{if("undefined"!=typeof document){var e=document.createElement("style");e.appendChild(document.createTextNode(i)),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}}("*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0;overflow:hidden}.examples-app{color:#fff;flex-direction:column;height:100dvh;font-family:Arial,sans-serif;display:flex;overflow:hidden}.layout-wrapper{flex:1;min-height:0;display:flex;position:relative;overflow:hidden}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#333;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#fdb48d}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:.3s ease-out forwards fadeIn}.loading-ui{color:#fff;z-index:10005;pointer-events:none;opacity:1;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0006;border:1px solid #ffffff1a;border-radius:10px;flex-direction:column;gap:10px;width:auto;min-width:240px;height:auto;padding:15px;font-family:monospace;font-size:11px;transition:opacity .3s,height .16s,width .16s;display:flex;position:fixed;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%);box-shadow:0 10px 30px #00000080}.loading-ui-title{color:#aaa;margin-bottom:2px;font-weight:700}.loading-ui-info{border-top:1px solid #fff0;grid-template-rows:0fr;transition:grid-template-rows .3s ease-in-out,padding .3s,border-top .3s;display:grid;overflow:hidden}.loading-ui-info.active{border-top:1px solid #ffffff0d;grid-template-rows:1fr;padding-top:8px}.loading-ui-info-wrapper{flex-direction:column;gap:4px;min-height:0;display:flex}.loading-ui-info-title{color:#fff;text-transform:uppercase;letter-spacing:1px;justify-content:space-between;font-size:10px;display:flex}.loading-ui-info-detail{font-variant-numeric:tabular-nums;justify-content:space-between;display:flex}.loading-ui-progress{background:#ffffff1a;border-radius:2px;width:100%;height:4px;overflow:hidden}.loading-ui-progress .bar{will-change:width;background:#0078d4;height:100%;transition:width .4s}.loading-ui-info-file{color:#ffffff80;flex-direction:column;gap:4px;margin-top:4px;display:flex}.loading-ui-info-file .file{justify-content:space-between;display:flex}.total-progress-section{border-top:1px solid #ffffff0d;padding-top:6px}.total-progress-bar{box-shadow:0 0 10px #4caf5080}\n/*$vite$:1*/"); -import{r as e}from"./rolldown-runtime-BztV3taV.js?t=1781141623471";import{n as t,r as o,t as i}from"./vendor-react-BwJpJ84T.js?t=1781141623471";import{c as r,d as n,t as s,u as l}from"./IconButton-D8-442jY.js?t=1781141623471";import{t as a}from"./exampleList-B00YxcCV.js?t=1781141623471";var d=e(o(),1),p=e(t(),1),c="redgpu_examples_app_state",x=n((e,t)=>({activeTab:"3D",searchQuery:"",viewMode:"grid",language:"undefined"!=typeof navigator&&navigator.language.startsWith("ko")?"ko":"en",sidebarOpen:"undefined"==typeof window||window.innerWidth>1024,scrollPosition:0,isNarrow:"undefined"!=typeof window&&window.innerWidth<=768,setActiveTab:o=>{e({activeTab:o}),t().saveState()},setSearchQuery:o=>{e({searchQuery:o}),t().saveState()},setViewMode:o=>{e({viewMode:o}),t().saveState()},setLanguage:o=>{e({language:o}),t().saveState()},setSidebarOpen:t=>e({sidebarOpen:t}),setScrollPosition:t=>e({scrollPosition:t}),setIsNarrow:t=>e({isNarrow:t}),saveState:()=>{const{activeTab:e,searchQuery:o,viewMode:i,language:r,scrollPosition:n}=t(),s={activeTab:e,searchQuery:o,viewMode:i,language:r,scrollPosition:n};sessionStorage.setItem(c,JSON.stringify(s));const l=new URL(window.location.href);l.searchParams.set("tab",e),o?l.searchParams.set("q",o):l.searchParams.delete("q"),window.history.replaceState({},"",l.toString())},restoreState:()=>{const t=new URLSearchParams(window.location.search),o=t.get("tab"),i=t.get("q");o&&e({activeTab:o}),i&&e({searchQuery:i});const r=sessionStorage.getItem(c);if(r)try{const t=JSON.parse(r);e(e=>({...t,activeTab:o||t.activeTab||e.activeTab,searchQuery:i||t.searchQuery||e.searchQuery,scrollPosition:Number(t.scrollPosition)||0}))}catch(n){console.error("Failed to restore examples state:",n)}}}));x.getState().restoreState();var h=i(),m=()=>{const e=x(e=>e.isNarrow); +import{r as e}from"./rolldown-runtime-BztV3taV.js?t=1781143364605";import{n as t,r as o,t as i}from"./vendor-react-BwJpJ84T.js?t=1781143364605";import{c as r,d as n,t as s,u as l}from"./IconButton-D8-442jY.js?t=1781143364605";import{t as a}from"./exampleList-B00YxcCV.js?t=1781143364605";var d=e(o(),1),p=e(t(),1),c="redgpu_examples_app_state",x=n((e,t)=>({activeTab:"3D",searchQuery:"",viewMode:"grid",language:"undefined"!=typeof navigator&&navigator.language.startsWith("ko")?"ko":"en",sidebarOpen:"undefined"==typeof window||window.innerWidth>1024,scrollPosition:0,isNarrow:"undefined"!=typeof window&&window.innerWidth<=768,setActiveTab:o=>{e({activeTab:o}),t().saveState()},setSearchQuery:o=>{e({searchQuery:o}),t().saveState()},setViewMode:o=>{e({viewMode:o}),t().saveState()},setLanguage:o=>{e({language:o}),t().saveState()},setSidebarOpen:t=>e({sidebarOpen:t}),setScrollPosition:t=>e({scrollPosition:t}),setIsNarrow:t=>e({isNarrow:t}),saveState:()=>{const{activeTab:e,searchQuery:o,viewMode:i,language:r,scrollPosition:n}=t(),s={activeTab:e,searchQuery:o,viewMode:i,language:r,scrollPosition:n};sessionStorage.setItem(c,JSON.stringify(s));const l=new URL(window.location.href);l.searchParams.set("tab",e),o?l.searchParams.set("q",o):l.searchParams.delete("q"),window.history.replaceState({},"",l.toString())},restoreState:()=>{const t=new URLSearchParams(window.location.search),o=t.get("tab"),i=t.get("q");o&&e({activeTab:o}),i&&e({searchQuery:i});const r=sessionStorage.getItem(c);if(r)try{const t=JSON.parse(r);e(e=>({...t,activeTab:o||t.activeTab||e.activeTab,searchQuery:i||t.searchQuery||e.searchQuery,scrollPosition:Number(t.scrollPosition)||0}))}catch(n){console.error("Failed to restore examples state:",n)}}}));x.getState().restoreState();var h=i(),m=()=>{const e=x(e=>e.isNarrow); return(0,h.jsx)("div",{style:u,children: (0,h.jsxs)("div",{style:{display:"flex",flexDirection:e?"column":"row",alignItems:e?"flex-start":"center",gap:e?"0":"12px"},children:[ (0,h.jsx)("h1",{style:{...g,fontSize:e?"14px":"18px",lineHeight:"1.2",margin:0},children:"RedGPU"}), (0,h.jsx)("span",{style:{...f,fontSize:e?"12px":"18px",marginTop:e?"-2px":"0",opacity:e?.7:1},children:"Examples"})]})})},u={display:"flex",alignItems:"center"},g={fontSize:"18px",fontWeight:"bold",letterSpacing:"0.02em",color:"#fff"},f={color:"#fdb48d",fontWeight:"normal"},b=()=>{const e=x(e=>e.searchQuery),t=x(e=>e.setSearchQuery),o=x(e=>e.isNarrow); return(0,h.jsxs)("div",{style:y,children:[ (0,h.jsx)("input",{type:"text",placeholder:o?"Search...":"Search examples...","aria-label":"Search examples",value:e,onChange:e=>t(e.target.value),style:{...w,height:o?"32px":"36px"}}),e&& (0,h.jsx)("button",{onClick:()=>t(""),style:v,"aria-label":"Clear search",title:"Clear search",children:"×"})]})},y={position:"relative",width:"100%"},w={width:"100%",height:"36px",backgroundColor:"#1e1e1f",border:"1px solid #333",borderRadius:"18px",padding:"0 40px 0 16px",color:"#fff",fontSize:"14px",outline:"none",transition:"border-color 0.2s"},v={position:"absolute",right:"12px",top:"50%",transform:"translateY(-50%)",background:"none",border:"none",color:"#999",fontSize:"18px",cursor:"pointer"},S=()=>{const e=x(e=>e.isNarrow),t=x(e=>e.language),o=e=>window.open(e,"_blank"); return(0,h.jsxs)("div",{style:j,children:[ (0,h.jsx)(s,{icon: (0,h.jsx)(r,{color:"#fff",size:e?14:18}),label:"GITHUB",onClick:()=>o("https://github.com/redcamel/RedGPU"),title:"GitHub Repository"}),!e&& (0,h.jsxs)(h.Fragment,{children:[ (0,h.jsx)("button",{style:C,onClick:()=>o("/RedGPU/manual/"),children:"MANUAL"}), (0,h.jsx)("button",{style:C,onClick:()=>o(`/RedGPU/manual/${t}/api/RedGPU-API/namespaces/RedGPU/README.html`),children:"API"})]})]})},j={display:"flex",alignItems:"stretch",gap:"1px"},C={backgroundColor:"transparent",border:"none",color:"#e0e0e0",fontSize:"11px",fontWeight:"bold",cursor:"pointer",padding:"0 15px",transition:"color 0.2s"},R=()=>{const e=x(e=>e.isNarrow); diff --git a/examples/exampleHelper/dist/index.js b/examples/exampleHelper/dist/index.js index 7ab9c70683..fe4fb2dad9 100644 --- a/examples/exampleHelper/dist/index.js +++ b/examples/exampleHelper/dist/index.js @@ -1,17 +1,17 @@ !function(i){try{if("undefined"!=typeof document){var e=document.createElement("style");e.appendChild(document.createTextNode(i)),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}}("*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0;overflow:hidden}.examples-app{color:#fff;flex-direction:column;height:100dvh;font-family:Arial,sans-serif;display:flex;overflow:hidden}.layout-wrapper{flex:1;min-height:0;display:flex;position:relative;overflow:hidden}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#333;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#fdb48d}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:.3s ease-out forwards fadeIn}.loading-ui{color:#fff;z-index:10005;pointer-events:none;opacity:1;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0006;border:1px solid #ffffff1a;border-radius:10px;flex-direction:column;gap:10px;width:auto;min-width:240px;height:auto;padding:15px;font-family:monospace;font-size:11px;transition:opacity .3s,height .16s,width .16s;display:flex;position:fixed;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%);box-shadow:0 10px 30px #00000080}.loading-ui-title{color:#aaa;margin-bottom:2px;font-weight:700}.loading-ui-info{border-top:1px solid #fff0;grid-template-rows:0fr;transition:grid-template-rows .3s ease-in-out,padding .3s,border-top .3s;display:grid;overflow:hidden}.loading-ui-info.active{border-top:1px solid #ffffff0d;grid-template-rows:1fr;padding-top:8px}.loading-ui-info-wrapper{flex-direction:column;gap:4px;min-height:0;display:flex}.loading-ui-info-title{color:#fff;text-transform:uppercase;letter-spacing:1px;justify-content:space-between;font-size:10px;display:flex}.loading-ui-info-detail{font-variant-numeric:tabular-nums;justify-content:space-between;display:flex}.loading-ui-progress{background:#ffffff1a;border-radius:2px;width:100%;height:4px;overflow:hidden}.loading-ui-progress .bar{will-change:width;background:#0078d4;height:100%;transition:width .4s}.loading-ui-info-file{color:#ffffff80;flex-direction:column;gap:4px;margin-top:4px;display:flex}.loading-ui-info-file .file{justify-content:space-between;display:flex}.total-progress-section{border-top:1px solid #ffffff0d;padding-top:6px}.total-progress-bar{box-shadow:0 0 10px #4caf5080}\n/*$vite$:1*/"); -import{r as e}from"./rolldown-runtime-BztV3taV.js?t=1781141623471";import{n as t,r as o,t as n}from"./vendor-react-BwJpJ84T.js?t=1781141623471";import{a as i,i as s,l as r,n as a,o as l,r as c,s as d,t as u,u as p}from"./IconButton-D8-442jY.js?t=1781141623471";import{t as x}from"./store-2JcZHIgY.js?t=1781141623471";var f=e(t(),1),h=e(o(),1),g=n(),m=({icon:e,label:t,isActive:o,onClick:n,title:i})=>{const[s,r]=(0,h.useState)(!1); +import{r as e}from"./rolldown-runtime-BztV3taV.js?t=1781143364605";import{n as t,r as o,t as n}from"./vendor-react-BwJpJ84T.js?t=1781143364605";import{a as i,i as s,l as r,n as a,o as l,r as c,s as d,t as u,u as p}from"./IconButton-D8-442jY.js?t=1781143364605";import{t as x}from"./store-2JcZHIgY.js?t=1781143364605";var f=e(t(),1),h=e(o(),1),g=n(),m=({icon:e,label:t,isActive:o,onClick:n,title:i})=>{const[s,r]=(0,h.useState)(!1); return(0,g.jsx)("button",{style:{...b,width:e?"52px":"auto",padding:e?"0":"0 20px",backgroundColor:s?"#1a1a1c":"#111112",color:"#fff"},onClick:n,title:i||t,"aria-label":i||t,"aria-pressed":o,onMouseEnter:()=>r(!0),onMouseLeave:()=>r(!1),children: (0,g.jsx)("div",{style:{opacity:o?1:.2,display:"flex",alignItems:"center",justifyContent:"center",width:"100%",height:"100%",transition:"opacity 0.2s"},children:e?"string"==typeof e? (0,g.jsx)("img",{src:e,style:w,alt:t}):e:t})})},b={display:"flex",alignItems:"center",justifyContent:"center",height:"100%",backgroundColor:"#111112",border:"none",fontSize:"11px",fontWeight:"bold",cursor:"pointer",transition:"background-color 0.2s, opacity 0.2s",letterSpacing:"0.05em",flexShrink:0,boxSizing:"border-box"},w={width:"24px",height:"24px"},v=({label:e,value:t,options:o,onChange:n})=>{const[i,s]=(0,h.useState)(!1),[r,a]=(0,h.useState)(!1),[l,c]=(0,h.useState)("down"),[d,u]=(0,h.useState)(null),p=(0,h.useRef)(null);(0,h.useEffect)(()=>{const e=e=>{p.current&&!p.current.contains(e.target)&&a(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]);const x=o.find(e=>e.value===t)?.label||t; return(0,g.jsxs)("div",{ref:p,style:{...j,backgroundColor:i||r?"#1a1a1c":"#111112"},onMouseEnter:()=>s(!0),onMouseLeave:()=>s(!1),onClick:()=>{if(!r&&p.current){const e=p.current.getBoundingClientRect(),t=window.innerHeight;e.bottom>t/2?c("up"):c("down")}a(!r)},children:[ (0,g.jsx)("span",{style:y,children:e}), (0,g.jsxs)("div",{style:S,children:[ (0,g.jsx)("span",{style:C,children:x}), (0,g.jsx)("div",{style:{...E,transform:r?"up"===l?"rotate(0deg)":"rotate(180deg)":"up"===l?"rotate(180deg)":"rotate(0deg)"}})]}),r&& (0,g.jsx)("div",{style:{...k,top:"down"===l?"100%":"auto",bottom:"up"===l?"100%":"auto",borderTop:"down"===l?"1px solid rgba(255, 255, 255, 0.05)":"none",borderBottom:"up"===l?"1px solid rgba(255, 255, 255, 0.05)":"none",boxShadow:"down"===l?"0 10px 20px rgba(0,0,0,0.5)":"0 -10px 20px rgba(0,0,0,0.5)"},children:o.map(e=>{const o=t===e.value,i=d===e.value; -return(0,g.jsx)("div",{style:{...A,backgroundColor:o?"#2a2a2c":i?"#252527":"transparent",color:o||i?"#fff":"#fdb48d"},onMouseEnter:()=>u(e.value),onMouseLeave:()=>u(null),onClick:t=>{t.stopPropagation(),n(e.value),a(!1)},children:e.label},e.value)})})]})},j={position:"relative",display:"flex",flexDirection:"column",justifyContent:"center",padding:"0 16px",backgroundColor:"#111112",minWidth:"110px",flexShrink:0,cursor:"pointer",transition:"background-color 0.2s",userSelect:"none"},y={fontSize:"9px",color:"#666",fontWeight:"bold",marginBottom:"2px"},S={display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%"},C={fontSize:"11px",color:"#fdb48d",fontWeight:"bold"},E={width:"10px",height:"10px",marginLeft:"8px",backgroundImage:'url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2212%22%20height%3D%2212%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23fdb48d%22%20stroke-width%3D%223%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpolyline%20points%3D%226%209%2012%2015%2018%209%22%3E%3C%2Fpolyline%3E%3C%2Fsvg%3E")',backgroundRepeat:"no-repeat",backgroundPosition:"center",backgroundSize:"contain",transition:"transform 0.2s ease-in-out"},k={position:"absolute",top:"100%",left:0,right:0,backgroundColor:"#1a1a1c",borderTop:"1px solid rgba(255, 255, 255, 0.05)",boxShadow:"0 10px 20px rgba(0,0,0,0.5)",zIndex:10004,display:"flex",flexDirection:"column",padding:"4px 0"},A={padding:"10px 16px",fontSize:"11px",fontWeight:"bold",cursor:"pointer",transition:"background-color 0.1s, color 0.1s"},M={LINEAR:"linear",KHRONOS_PBR_NEUTRAL:"khronosPBRNeutral",ACES_FILMIC_HILL:"ACESFilmicHill",ACES_FILMIC_NARKOWICZ:"ACESFilmicNarkowicz"};Object.freeze(M);var N=()=>{const e=x(e=>e.redGPUContext),[t,o]=(0,h.useState)("useMSAA"),[n,i]=(0,h.useState)(M.KHRONOS_PBR_NEUTRAL);return(0,h.useEffect)(()=>{if(e){const t=e.antialiasingManager;if(t.useMSAA?o("useMSAA"):t.useFXAA?o("useFXAA"):t.useTAA?o("useTAA"):o("NONE"),e.viewList.length>0){const t=e.viewList[0];t.toneMappingManager&&i(t.toneMappingManager.mode)}}},[e]), (0,g.jsxs)(g.Fragment,{children:[ (0,g.jsx)(v,{label:"TONE MAPPING",value:n,options:Object.entries(M).map(([e,t])=>({value:t,label:e.replace(/_/g," ")})),onChange:t=>{i(t),e&&e.viewList.forEach(e=>{e.toneMappingManager&&(e.toneMappingManager.mode=t)})}}), (0,g.jsx)(v,{label:"ANTIALIASING",value:t,options:[{value:"NONE",label:"NONE"},{value:"useMSAA",label:"MSAA"},{value:"useFXAA",label:"FXAA"},{value:"useTAA",label:"TAA"}],onChange:t=>{if(o(t),e){const o=e.antialiasingManager;o.useMSAA=!1,o.useFXAA=!1,o.useTAA=!1,"useMSAA"===t?o.useMSAA=!0:"useFXAA"===t?o.useFXAA=!0:"useTAA"===t&&(o.useTAA=!0)}}})]})},L=()=>{const e=x(e=>e.currentExample),t=x(e=>e.isNarrow),[o,n]=(0,h.useState)([]);(0,h.useEffect)(()=>{(async()=>{n(await(async()=>{const{ExampleList:e}=await import("./exampleList-B00YxcCV.js?t=1781141623471").then(e=>e.n),t=[],o=e=>{for(const n of e)n.path&&t.push(n),n.list&&o(n.list)};return o(e),t})())})()},[]);const i=(0,h.useMemo)(()=>e&&0!==o.length?o.findIndex(t=>t.path===e.path):-1,[e,o]),r=i>0?o[i-1]:null,a=i{const t=window.location.pathname,o=t.indexOf("/examples/");if(-1===o)window.location.href=`${window.location.origin}/examples/${e}/index.html`;else{const n=t.substring(0,o);window.location.href=`${window.location.origin}${n}/examples/${e}/index.html`}}; +return(0,g.jsx)("div",{style:{...A,backgroundColor:o?"#2a2a2c":i?"#252527":"transparent",color:o||i?"#fff":"#fdb48d"},onMouseEnter:()=>u(e.value),onMouseLeave:()=>u(null),onClick:t=>{t.stopPropagation(),n(e.value),a(!1)},children:e.label},e.value)})})]})},j={position:"relative",display:"flex",flexDirection:"column",justifyContent:"center",padding:"0 16px",backgroundColor:"#111112",minWidth:"110px",flexShrink:0,cursor:"pointer",transition:"background-color 0.2s",userSelect:"none"},y={fontSize:"9px",color:"#666",fontWeight:"bold",marginBottom:"2px"},S={display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%"},C={fontSize:"11px",color:"#fdb48d",fontWeight:"bold"},E={width:"10px",height:"10px",marginLeft:"8px",backgroundImage:'url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2212%22%20height%3D%2212%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23fdb48d%22%20stroke-width%3D%223%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpolyline%20points%3D%226%209%2012%2015%2018%209%22%3E%3C%2Fpolyline%3E%3C%2Fsvg%3E")',backgroundRepeat:"no-repeat",backgroundPosition:"center",backgroundSize:"contain",transition:"transform 0.2s ease-in-out"},k={position:"absolute",top:"100%",left:0,right:0,backgroundColor:"#1a1a1c",borderTop:"1px solid rgba(255, 255, 255, 0.05)",boxShadow:"0 10px 20px rgba(0,0,0,0.5)",zIndex:10004,display:"flex",flexDirection:"column",padding:"4px 0"},A={padding:"10px 16px",fontSize:"11px",fontWeight:"bold",cursor:"pointer",transition:"background-color 0.1s, color 0.1s"},M={LINEAR:"linear",KHRONOS_PBR_NEUTRAL:"khronosPBRNeutral",ACES_FILMIC_HILL:"ACESFilmicHill",ACES_FILMIC_NARKOWICZ:"ACESFilmicNarkowicz"};Object.freeze(M);var N=()=>{const e=x(e=>e.redGPUContext),[t,o]=(0,h.useState)("useMSAA"),[n,i]=(0,h.useState)(M.KHRONOS_PBR_NEUTRAL);return(0,h.useEffect)(()=>{if(e){const t=e.antialiasingManager;if(t.useMSAA?o("useMSAA"):t.useFXAA?o("useFXAA"):t.useTAA?o("useTAA"):o("NONE"),e.viewList.length>0){const t=e.viewList[0];t.toneMappingManager&&i(t.toneMappingManager.mode)}}},[e]), (0,g.jsxs)(g.Fragment,{children:[ (0,g.jsx)(v,{label:"TONE MAPPING",value:n,options:Object.entries(M).map(([e,t])=>({value:t,label:e.replace(/_/g," ")})),onChange:t=>{i(t),e&&e.viewList.forEach(e=>{e.toneMappingManager&&(e.toneMappingManager.mode=t)})}}), (0,g.jsx)(v,{label:"ANTIALIASING",value:t,options:[{value:"NONE",label:"NONE"},{value:"useMSAA",label:"MSAA"},{value:"useFXAA",label:"FXAA"},{value:"useTAA",label:"TAA"}],onChange:t=>{if(o(t),e){const o=e.antialiasingManager;o.useMSAA=!1,o.useFXAA=!1,o.useTAA=!1,"useMSAA"===t?o.useMSAA=!0:"useFXAA"===t?o.useFXAA=!0:"useTAA"===t&&(o.useTAA=!0)}}})]})},L=()=>{const e=x(e=>e.currentExample),t=x(e=>e.isNarrow),[o,n]=(0,h.useState)([]);(0,h.useEffect)(()=>{(async()=>{n(await(async()=>{const{ExampleList:e}=await import("./exampleList-B00YxcCV.js?t=1781143364605").then(e=>e.n),t=[],o=e=>{for(const n of e)n.path&&t.push(n),n.list&&o(n.list)};return o(e),t})())})()},[]);const i=(0,h.useMemo)(()=>e&&0!==o.length?o.findIndex(t=>t.path===e.path):-1,[e,o]),r=i>0?o[i-1]:null,a=i{const t=window.location.pathname,o=t.indexOf("/examples/");if(-1===o)window.location.href=`${window.location.origin}/examples/${e}/index.html`;else{const n=t.substring(0,o);window.location.href=`${window.location.origin}${n}/examples/${e}/index.html`}}; return(0,g.jsx)(g.Fragment,{children: (0,g.jsx)("div",{style:t?I:P,children: (0,g.jsxs)("div",{style:{display:"flex",alignItems:"stretch",height:"100%",gap:"1px",backgroundColor:"#222",justifyContent:t?"center":"flex-start"},children:[r&& (0,g.jsx)("button",{style:{...T,width:t?"46px":"52px",backgroundColor:l?"#1a1a1c":"#111112"},onClick:()=>f(r.path),title:`Previous Example : ${r.name}`,onMouseEnter:()=>d(!0),onMouseLeave:()=>d(!1),children: (0,g.jsx)(c,{color:"#fdb48d"})}), (0,g.jsxs)("div",{style:{...R,textAlign:t?"center":"left"},children:[(!t||e?.experimental)&& (0,g.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:t?"center":"flex-start",gap:"6px",marginBottom:"2px"},children:[!t&& (0,g.jsx)("span",{style:{...z,marginBottom:0},children:"Example"}),e?.experimental&& (0,g.jsx)("span",{style:O,children:"EXPERIMENTAL"})]}), (0,g.jsx)("span",{style:F,children:e?e.name:"empty example name"})]}),a&& (0,g.jsx)("button",{style:{...T,width:t?"46px":"52px",backgroundColor:u?"#1a1a1c":"#111112"},onClick:()=>f(a.path),title:`Next Example : ${a.name}`,onMouseEnter:()=>p(!0),onMouseLeave:()=>p(!1),children: (0,g.jsx)(s,{color:"#fdb48d"})})]})})})},I={display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"stretch",backgroundColor:"#111112",width:"100%",flexShrink:0},P={display:"flex",flexDirection:"column",justifyContent:"center",backgroundColor:"#111112",minWidth:"200px",flexShrink:0,alignItems:"stretch"},R={display:"flex",flexDirection:"column",justifyContent:"center",padding:"0 16px",flexGrow:1,minWidth:"100px",textAlign:"center"},z={fontSize:"9px",color:"#666",fontWeight:"bold",marginBottom:"2px"},O={fontSize:"8px",backgroundColor:"#ff4d4d",color:"#fff",padding:"4px 5px",borderRadius:"4px",fontWeight:"bold",lineHeight:"1",display:"inline-block"},F={fontSize:"11px",color:"#ccc",fontWeight:"bold",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},T={backgroundColor:"#111112",color:"#fdb48d",border:"none",width:"40px",cursor:"pointer",fontSize:"14px",fontWeight:"bold",display:"flex",alignItems:"center",justifyContent:"center",transition:"background-color 0.2s",padding:0},G=()=>{const e=x(e=>e.topBarRightActions),t=x(e=>e.redGPUContext),o=x(e=>e.isNarrow),[n,i]=(0,h.useState)(!1);return(0,h.useEffect)(()=>{if(t&&t.viewList.length>0){const e=t.viewList[0];e.postEffectManager&&i(e.postEffectManager.useSSAO)}},[t]), (0,g.jsx)("header",{style:D,children: (0,g.jsxs)("div",{style:B,children:[ (0,g.jsxs)("div",{style:U,children:[ (0,g.jsx)(u,{icon: (0,g.jsx)(d,{color:"#fff",size:24}),label:"HOME",onClick:()=>{window.location.href="/RedGPU/examples/index.html"},title:"HOME"}),!o&& (0,g.jsx)(L,{})]}), (0,g.jsxs)("div",{style:W,children:[!o&& (0,g.jsx)(g.Fragment,{children: (0,g.jsx)(N,{})}), -(0,g.jsx)(m,{label:"SSAO",onClick:()=>{const e=!n;i(e),t&&t.viewList.forEach(t=>{t.postEffectManager&&(t.postEffectManager.useSSAO=e)})},isActive:n}),e.map(e=> (0,g.jsx)(m,{icon:e.icon,label:e.label,onClick:e.onClick,isActive:!!e.isActive},e.id))]})]})})},D={position:"fixed",top:0,left:0,right:0,height:"52px",backgroundColor:"#111112",borderBottom:"1px solid rgba(255, 255, 255, 0.05)",zIndex:10003,display:"flex",flexDirection:"column",wordBreak:"keep-all"},B={display:"flex",height:"100%",width:"100%",alignItems:"stretch",justifyContent:"space-between",backgroundColor:"#222"},U={display:"flex",alignItems:"stretch",gap:"1px"},W={display:"flex",alignItems:"stretch",gap:"1px"},X=()=>{const e=x(e=>e.currentExample),t=x(e=>e.language),o=x(e=>e.setLanguage),n=x(e=>e.showSettingsPanel),i=x(e=>e.isNarrow);if(!e||!e.description)return null;const s=e.description[t]||e.description.en||"";return s? (0,g.jsxs)("div",{style:{...H,right:n&&!i?"320px":0},children:[ (0,g.jsx)("div",{style:$,children: (0,g.jsx)("span",{dangerouslySetInnerHTML:{__html:s}})}), (0,g.jsx)("button",{style:_,onClick:()=>o("ko"===t?"en":"ko"),children:"ko"===t?"ENGLISH":"한국어"})]}):null},H={position:"fixed",top:"52px",left:0,right:0,backgroundColor:"transparent",padding:"12px 20px",zIndex:10002,display:"flex",flexDirection:"column",alignItems:"flex-start",justifyContent:"flex-start",gap:"10px",pointerEvents:"none"},$={fontSize:"12px",color:"#eee",lineHeight:"1.6",maxWidth:"800px",wordBreak:"keep-all",textShadow:"1px 1px 2px rgba(0,0,0,0.8), 0 0 10px rgba(0,0,0,0.5)",pointerEvents:"auto"},_={backgroundColor:"rgba(255, 255, 255, 0.1)",color:"#ccc",border:"1px solid rgba(255, 255, 255, 0.2)",padding:"3px 10px",fontSize:"9px",fontWeight:"bold",cursor:"pointer",borderRadius:"4px",flexShrink:0,transition:"all 0.2s",pointerEvents:"auto",backdropFilter:"blur(4px)"},Y=()=>{const e=x(e=>e.showSourceModal),t=x(e=>e.setShowSourceModal),o=x(e=>e.currentExample),[n,i]=(0,h.useState)(""),[s,r]=(0,h.useState)(!1),a=(0,h.useRef)(null),{loadPrism:l}=(()=>{const e="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js",t="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css";return{loadPrism:()=>new Promise(o=>{const n=window;if(n.Prism)o();else{if(!document.querySelector(`link[href="${t}"]`)){const e=document.createElement("link");e.rel="stylesheet",e.href=t,document.head.appendChild(e)}if(document.querySelector(`script[src="${e}"]`)){const e=setInterval(()=>{n.Prism&&(clearInterval(e),o())},100)}else{const t=document.createElement("script");t.src=e,t.onload=()=>o(),document.head.appendChild(t)}}})}})();return(0,h.useEffect)(()=>{e&&(r(!0),fetch("./index.js?t=1781141623471").then(e=>{if(!e.ok)throw new Error("Failed to load source code");return e.text()}).then(async e=>{i(e),r(!1),await l(),a.current&&window.Prism.highlightElement(a.current)}).catch(e=>{console.error(e),i("// Failed to load source code."),r(!1)}))},[e,l]),(0,h.useEffect)(()=>{e&&!s&&n&&window.Prism&&a.current&&window.Prism.highlightElement(a.current)},[n,s,e]),e? (0,g.jsx)("div",{style:Z,onClick:()=>t(!1),children: (0,g.jsxs)("div",{style:K,onClick:e=>e.stopPropagation(),children:[ (0,g.jsxs)("div",{style:q,children:[ (0,g.jsxs)("div",{style:V,children:["SOURCE CODE : ",o?.name]}), (0,g.jsx)("button",{style:J,onClick:()=>t(!1),children:"CLOSE"})]}), (0,g.jsx)("div",{style:Q,children:s? (0,g.jsx)("div",{style:ee,children:"Loading source code..."}): (0,g.jsx)("pre",{style:te,children: (0,g.jsx)("code",{ref:a,className:"language-javascript",style:oe,children:n})})})]})}):null},Z={position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(0, 0, 0, 0.85)",zIndex:2e4,display:"flex",alignItems:"center",justifyContent:"center",padding:"40px",backdropFilter:"blur(10px)"},K={width:"100%",maxWidth:"1200px",height:"100%",backgroundColor:"#111112",border:"1px solid #333",borderRadius:"8px",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"0 20px 50px rgba(0,0,0,0.5)"},q={padding:"16px 24px",borderBottom:"1px solid #333",display:"flex",justifyContent:"space-between",alignItems:"center",backgroundColor:"#1a1a1b"},V={fontSize:"13px",fontWeight:"bold",color:"#fdb48d",letterSpacing:"0.05em"},J={backgroundColor:"#333",color:"#ccc",border:"none",padding:"6px 16px",fontSize:"11px",fontWeight:"bold",cursor:"pointer",borderRadius:"4px",transition:"all 0.2s"},Q={flex:1,overflow:"auto",backgroundColor:"#000"},ee={height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"#666",fontSize:"13px"},te={margin:0,padding:"20px",backgroundColor:"transparent"},oe={fontSize:"13px",lineHeight:"1.6",fontFamily:'Consolas, "Courier New", monospace',textShadow:"none",color:"#ccc"},ne=()=>{const e=x(e=>e.guiConfig),t=x(e=>e.redGPUContext),o=x(e=>e.isNarrow),[n,i]=(0,h.useState)(null),s=(0,h.useCallback)(()=>{const t=e?.compareLabel?.targetContainer;if(t){const e=o?148:50;Object.assign(t.style,{position:"fixed",top:"51px",left:"0",width:"100%",bottom:`${e}px`}),i(t.getBoundingClientRect())}else i(null)},[e?.compareLabel?.targetContainer,o]);if((0,h.useLayoutEffect)(()=>{s()},[s]),(0,h.useEffect)(()=>{const t=e?.compareLabel?.targetContainer;if(!t)return;const o=new ResizeObserver(()=>{s()});return o.observe(t),window.addEventListener("resize",s),()=>{o.disconnect(),window.removeEventListener("resize",s),Object.assign(t.style,{position:"",top:"",left:"",width:"",bottom:""})}},[s,e?.compareLabel?.targetContainer]),!e?.compareLabel||!t)return null;const{title:r,normalTitle:a="Normal"}=e.compareLabel,l={position:"fixed",display:"flex",alignItems:"center",justifyContent:"center",padding:"8px 10px",backgroundColor:"#5b52aa",color:"#fff",fontSize:"12px",fontWeight:600,pointerEvents:"none",lineHeight:1,zIndex:10},c=e=>{const t=n?n.top:51,i=n?n.left:0,s=n?n.width:window.innerWidth,r=o?148:50,a=n?n.height:window.innerHeight-(51+r);return o?{...l,left:i,[e?"bottom":"top"]:e?window.innerHeight-(t+a/2):t+a/2+1}:{...l,bottom:window.innerHeight-(t+a),left:i+s/2,...e?{transform:"translateX(calc(-100% - 1px))"}:{}}}; +(0,g.jsx)(m,{label:"SSAO",onClick:()=>{const e=!n;i(e),t&&t.viewList.forEach(t=>{t.postEffectManager&&(t.postEffectManager.useSSAO=e)})},isActive:n}),e.map(e=> (0,g.jsx)(m,{icon:e.icon,label:e.label,onClick:e.onClick,isActive:!!e.isActive},e.id))]})]})})},D={position:"fixed",top:0,left:0,right:0,height:"52px",backgroundColor:"#111112",borderBottom:"1px solid rgba(255, 255, 255, 0.05)",zIndex:10003,display:"flex",flexDirection:"column",wordBreak:"keep-all"},B={display:"flex",height:"100%",width:"100%",alignItems:"stretch",justifyContent:"space-between",backgroundColor:"#222"},U={display:"flex",alignItems:"stretch",gap:"1px"},W={display:"flex",alignItems:"stretch",gap:"1px"},X=()=>{const e=x(e=>e.currentExample),t=x(e=>e.language),o=x(e=>e.setLanguage),n=x(e=>e.showSettingsPanel),i=x(e=>e.isNarrow);if(!e||!e.description)return null;const s=e.description[t]||e.description.en||"";return s? (0,g.jsxs)("div",{style:{...H,right:n&&!i?"320px":0},children:[ (0,g.jsx)("div",{style:$,children: (0,g.jsx)("span",{dangerouslySetInnerHTML:{__html:s}})}), (0,g.jsx)("button",{style:_,onClick:()=>o("ko"===t?"en":"ko"),children:"ko"===t?"ENGLISH":"한국어"})]}):null},H={position:"fixed",top:"52px",left:0,right:0,backgroundColor:"transparent",padding:"12px 20px",zIndex:10002,display:"flex",flexDirection:"column",alignItems:"flex-start",justifyContent:"flex-start",gap:"10px",pointerEvents:"none"},$={fontSize:"12px",color:"#eee",lineHeight:"1.6",maxWidth:"800px",wordBreak:"keep-all",textShadow:"1px 1px 2px rgba(0,0,0,0.8), 0 0 10px rgba(0,0,0,0.5)",pointerEvents:"auto"},_={backgroundColor:"rgba(255, 255, 255, 0.1)",color:"#ccc",border:"1px solid rgba(255, 255, 255, 0.2)",padding:"3px 10px",fontSize:"9px",fontWeight:"bold",cursor:"pointer",borderRadius:"4px",flexShrink:0,transition:"all 0.2s",pointerEvents:"auto",backdropFilter:"blur(4px)"},Y=()=>{const e=x(e=>e.showSourceModal),t=x(e=>e.setShowSourceModal),o=x(e=>e.currentExample),[n,i]=(0,h.useState)(""),[s,r]=(0,h.useState)(!1),a=(0,h.useRef)(null),{loadPrism:l}=(()=>{const e="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js",t="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css";return{loadPrism:()=>new Promise(o=>{const n=window;if(n.Prism)o();else{if(!document.querySelector(`link[href="${t}"]`)){const e=document.createElement("link");e.rel="stylesheet",e.href=t,document.head.appendChild(e)}if(document.querySelector(`script[src="${e}"]`)){const e=setInterval(()=>{n.Prism&&(clearInterval(e),o())},100)}else{const t=document.createElement("script");t.src=e,t.onload=()=>o(),document.head.appendChild(t)}}})}})();return(0,h.useEffect)(()=>{e&&(r(!0),fetch("./index.js?t=1781143364605").then(e=>{if(!e.ok)throw new Error("Failed to load source code");return e.text()}).then(async e=>{i(e),r(!1),await l(),a.current&&window.Prism.highlightElement(a.current)}).catch(e=>{console.error(e),i("// Failed to load source code."),r(!1)}))},[e,l]),(0,h.useEffect)(()=>{e&&!s&&n&&window.Prism&&a.current&&window.Prism.highlightElement(a.current)},[n,s,e]),e? (0,g.jsx)("div",{style:Z,onClick:()=>t(!1),children: (0,g.jsxs)("div",{style:K,onClick:e=>e.stopPropagation(),children:[ (0,g.jsxs)("div",{style:q,children:[ (0,g.jsxs)("div",{style:V,children:["SOURCE CODE : ",o?.name]}), (0,g.jsx)("button",{style:J,onClick:()=>t(!1),children:"CLOSE"})]}), (0,g.jsx)("div",{style:Q,children:s? (0,g.jsx)("div",{style:ee,children:"Loading source code..."}): (0,g.jsx)("pre",{style:te,children: (0,g.jsx)("code",{ref:a,className:"language-javascript",style:oe,children:n})})})]})}):null},Z={position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(0, 0, 0, 0.85)",zIndex:2e4,display:"flex",alignItems:"center",justifyContent:"center",padding:"40px",backdropFilter:"blur(10px)"},K={width:"100%",maxWidth:"1200px",height:"100%",backgroundColor:"#111112",border:"1px solid #333",borderRadius:"8px",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"0 20px 50px rgba(0,0,0,0.5)"},q={padding:"16px 24px",borderBottom:"1px solid #333",display:"flex",justifyContent:"space-between",alignItems:"center",backgroundColor:"#1a1a1b"},V={fontSize:"13px",fontWeight:"bold",color:"#fdb48d",letterSpacing:"0.05em"},J={backgroundColor:"#333",color:"#ccc",border:"none",padding:"6px 16px",fontSize:"11px",fontWeight:"bold",cursor:"pointer",borderRadius:"4px",transition:"all 0.2s"},Q={flex:1,overflow:"auto",backgroundColor:"#000"},ee={height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"#666",fontSize:"13px"},te={margin:0,padding:"20px",backgroundColor:"transparent"},oe={fontSize:"13px",lineHeight:"1.6",fontFamily:'Consolas, "Courier New", monospace',textShadow:"none",color:"#ccc"},ne=()=>{const e=x(e=>e.guiConfig),t=x(e=>e.redGPUContext),o=x(e=>e.isNarrow),[n,i]=(0,h.useState)(null),s=(0,h.useCallback)(()=>{const t=e?.compareLabel?.targetContainer;if(t){const e=o?148:50;Object.assign(t.style,{position:"fixed",top:"51px",left:"0",width:"100%",bottom:`${e}px`}),i(t.getBoundingClientRect())}else i(null)},[e?.compareLabel?.targetContainer,o]);if((0,h.useLayoutEffect)(()=>{s()},[s]),(0,h.useEffect)(()=>{const t=e?.compareLabel?.targetContainer;if(!t)return;const o=new ResizeObserver(()=>{s()});return o.observe(t),window.addEventListener("resize",s),()=>{o.disconnect(),window.removeEventListener("resize",s),Object.assign(t.style,{position:"",top:"",left:"",width:"",bottom:""})}},[s,e?.compareLabel?.targetContainer]),!e?.compareLabel||!t)return null;const{title:r,normalTitle:a="Normal"}=e.compareLabel,l={position:"fixed",display:"flex",alignItems:"center",justifyContent:"center",padding:"8px 10px",backgroundColor:"#5b52aa",color:"#fff",fontSize:"12px",fontWeight:600,pointerEvents:"none",lineHeight:1,zIndex:10},c=e=>{const t=n?n.top:51,i=n?n.left:0,s=n?n.width:window.innerWidth,r=o?148:50,a=n?n.height:window.innerHeight-(51+r);return o?{...l,left:i,[e?"bottom":"top"]:e?window.innerHeight-(t+a/2):t+a/2+1}:{...l,bottom:window.innerHeight-(t+a),left:i+s/2,...e?{transform:"translateX(calc(-100% - 1px))"}:{}}}; return(0,g.jsxs)(g.Fragment,{children:[ (0,g.jsx)("div",{style:c(!0),children:a}), (0,g.jsx)("div",{style:c(!1),children:r})]})},ie=e=>{if(0===e)return"0 B";const t=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,t)).toFixed(2))+" "+["B","KB","MB","GB"][t]},se=()=>{const e=x(e=>e.loadingStates),t=x(e=>e.clearLoadingStates),[o,n]=(0,h.useState)(!1),[i,s]=(0,h.useState)(1),r=(0,h.useMemo)(()=>{const t={model:{loaded:0,total:0},buffers:{loaded:0,total:0},textures:{loaded:0,total:0}};return Object.values(e).forEach(e=>{e.model&&(t.model.loaded+=e.model.loaded||0,t.model.total+=e.model.total||0),e.buffers&&(t.buffers.loaded+=e.buffers.loaded||0,t.buffers.total+=e.buffers.total||0),e.textures&&(t.textures.loaded+=e.textures.loaded||0,t.textures.total+=e.textures.total||0)}),t},[e]),a=r.model.total>0?r.model.loaded/r.model.total:1,l=r.buffers.total>0?r.buffers.loaded/r.buffers.total:1,c=r.textures.total>0?r.textures.loaded/r.textures.total:1,d=(0,h.useMemo)(()=>0!==Object.values(e).length&&a>=1&&l>=1&&c>=1,[e,a,l,c]);if((0,h.useEffect)(()=>{Object.keys(e).length>0&&(n(!0),s(1))},[e]),(0,h.useEffect)(()=>{if(d){const e=setTimeout(()=>{s(0)},1e3);return()=>clearTimeout(e)}},[d]),!o)return null;const u=[r.model.total,r.buffers.total,r.textures.total].filter(e=>e>0).length,p=u>0?((r.model.total>0?a:0)+(r.buffers.total>0?l:0)+(r.textures.total>0?c:0))/u*100:100; return(0,g.jsxs)("div",{className:"loading-ui",style:{opacity:i,transition:"opacity 0.5s ease"},onTransitionEnd:()=>{0===i&&(n(!1),t())},children:[ @@ -35,7 +35,7 @@ return(0,g.jsxs)("div",{className:"loading-ui",style:{opacity:i,transition:"opac (0,g.jsxs)("div",{className:"loading-ui-info-detail",children:[ (0,g.jsxs)("span",{className:"percent",children:[Math.floor(100*c),"%"]}), (0,g.jsxs)("span",{className:"count",style:{marginLeft:"10px",opacity:.7},children:[r.textures.loaded," / ",r.textures.total]})]}), -(0,g.jsx)("div",{className:"loading-ui-progress",children: (0,g.jsx)("div",{className:"bar",style:{width:100*c+"%"}})})]})}),Object.keys(e).length>=2&& (0,g.jsxs)("div",{className:"total-progress-section",style:{display:"block"},children:[ (0,g.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",fontSize:"12px",marginBottom:"5px"},children:[ (0,g.jsx)("span",{children:"TOTAL PROGRESS"}), (0,g.jsxs)("span",{className:"total-percent-text",children:[Math.floor(p),"%"]})]}), (0,g.jsx)("div",{className:"loading-ui-progress",style:{height:"8px",background:"#111"},children: (0,g.jsx)("div",{className:"total-progress-bar",style:{width:`${p}%`,background:"#4caf50",height:"100%",transition:"width 0.2s"}})})]})]})};Object.freeze(class{static idMaps=new Map;static getNextId(e){let t=this.idMaps.get(e)||0;return this.idMaps.set(e,t+1),t}});var re=console.log.bind(console),ae=h.lazy(()=>import("./GuiPanel-D7hqjzkr.js?t=1781141623471")),le=()=>{const e=x(e=>e.redGPUContext),t=x(e=>e.showSettingsPanel),o=x(e=>e.isNarrow),n=x(e=>e.setShowSourceModal),s=x(e=>e.setShowSettingsPanel),c=h.useRef(!1);h.useEffect(()=>{if(o&&t&&!c.current){c.current=!0;const e=setTimeout(()=>{s(!1),re("Auto close settings panel")},1e3);return()=>clearTimeout(e)}},[]),(()=>{const e=x(e=>e.setIsNarrow),t=(()=>{const[e,t]=(0,h.useState)(!1);return(0,h.useEffect)(()=>{const e=e=>{e.matches?t(!0):t(!1)},o=window.matchMedia("(max-width: 768px)");return o.addEventListener("change",e),o.matches&&t(!0),()=>o.removeEventListener("change",e)},[768]),e})();(0,h.useEffect)(()=>{e(t)},[t,e])})();const{setDebugActive:d}=(()=>{const e=x(e=>e.redGPUContext),t=x(e=>e.addTopBarRightAction),o=x(e=>e.guiConfig),n=x(e=>e.showSettingsPanel),s=x(e=>e.setShowSettingsPanel),[c,d]=(0,h.useState)(!1),[u,p]=(0,h.useState)(!1),[f,g]=(0,h.useState)(!1);return(0,h.useEffect)(()=>{if(e&&e.viewList.length>0){const t=e.viewList[e.viewList.length-1];d(!!t.axis),p(!!t.grid),window.redGPUInspector&&g(window.redGPUInspector.useDebugPanel)}},[e]),(0,h.useEffect)(()=>{e&&(t({id:"axis-toggle",label:"AXIS",icon:h.createElement(a,{color:"#ccc",size:18}),isActive:c,onClick:()=>{const t=!c;e.viewList.forEach(e=>{"axis"in e&&(e.axis=t)}),d(t)}}),t({id:"grid-toggle",label:"GRID",icon:h.createElement(l,{color:"#ccc",size:24}),isActive:u,onClick:()=>{const t=!u;e.viewList.forEach(e=>{"grid"in e&&(e.grid=t)}),p(t)}}),t({id:"debug-toggle",label:"DEBUG",icon:h.createElement(i,{color:"#ccc",size:24}),isActive:f,onClick:()=>{const e=!f;window.redGPUInspector&&(window.redGPUInspector.useDebugPanel=e),g(e)}}),(o?.redGPUContext||o?.viewList||o?.scene||o?.ibl||o?.skybox||o?.gui)&&t({id:"setting-toggle",label:"SETTING",icon:h.createElement(r,{color:"#ccc",size:24}),isActive:n,onClick:()=>{s(!n)}}))},[e,t,c,u,f,o,n,s]),{debugActive:f,setDebugActive:g}})();((e,t)=>{(0,h.useEffect)(()=>{e&&(async()=>{try{const{default:o}=await import(new URL("../../../inspector/dist/index.js?t=1781141623471",import.meta.url).href);window.redGPUInspector||(window.redGPUInspector=new o(e),t(window.redGPUInspector.useDebugPanel))}catch(o){console.error("Failed to load Inspector:",o)}})()},[e,t])})(e,d);const u={...ce,maxHeight:o?"calc(100vh - 160px)":"calc(100vh - 103px)",transform:t?"translateX(0)":"translateX(calc(100% + 10px))",opacity:t?1:0,pointerEvents:t?"auto":"none",transition:"transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1)"}; +(0,g.jsx)("div",{className:"loading-ui-progress",children: (0,g.jsx)("div",{className:"bar",style:{width:100*c+"%"}})})]})}),Object.keys(e).length>=2&& (0,g.jsxs)("div",{className:"total-progress-section",style:{display:"block"},children:[ (0,g.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",fontSize:"12px",marginBottom:"5px"},children:[ (0,g.jsx)("span",{children:"TOTAL PROGRESS"}), (0,g.jsxs)("span",{className:"total-percent-text",children:[Math.floor(p),"%"]})]}), (0,g.jsx)("div",{className:"loading-ui-progress",style:{height:"8px",background:"#111"},children: (0,g.jsx)("div",{className:"total-progress-bar",style:{width:`${p}%`,background:"#4caf50",height:"100%",transition:"width 0.2s"}})})]})]})};Object.freeze(class{static idMaps=new Map;static getNextId(e){let t=this.idMaps.get(e)||0;return this.idMaps.set(e,t+1),t}});var re=console.log.bind(console),ae=h.lazy(()=>import("./GuiPanel-D7hqjzkr.js?t=1781143364605")),le=()=>{const e=x(e=>e.redGPUContext),t=x(e=>e.showSettingsPanel),o=x(e=>e.isNarrow),n=x(e=>e.setShowSourceModal),s=x(e=>e.setShowSettingsPanel),c=h.useRef(!1);h.useEffect(()=>{if(o&&t&&!c.current){c.current=!0;const e=setTimeout(()=>{s(!1),re("Auto close settings panel")},1e3);return()=>clearTimeout(e)}},[]),(()=>{const e=x(e=>e.setIsNarrow),t=(()=>{const[e,t]=(0,h.useState)(!1);return(0,h.useEffect)(()=>{const e=e=>{e.matches?t(!0):t(!1)},o=window.matchMedia("(max-width: 768px)");return o.addEventListener("change",e),o.matches&&t(!0),()=>o.removeEventListener("change",e)},[768]),e})();(0,h.useEffect)(()=>{e(t)},[t,e])})();const{setDebugActive:d}=(()=>{const e=x(e=>e.redGPUContext),t=x(e=>e.addTopBarRightAction),o=x(e=>e.guiConfig),n=x(e=>e.showSettingsPanel),s=x(e=>e.setShowSettingsPanel),[c,d]=(0,h.useState)(!1),[u,p]=(0,h.useState)(!1),[f,g]=(0,h.useState)(!1);return(0,h.useEffect)(()=>{if(e&&e.viewList.length>0){const t=e.viewList[e.viewList.length-1];d(!!t.axis),p(!!t.grid),window.redGPUInspector&&g(window.redGPUInspector.useDebugPanel)}},[e]),(0,h.useEffect)(()=>{e&&(t({id:"axis-toggle",label:"AXIS",icon:h.createElement(a,{color:"#ccc",size:18}),isActive:c,onClick:()=>{const t=!c;e.viewList.forEach(e=>{"axis"in e&&(e.axis=t)}),d(t)}}),t({id:"grid-toggle",label:"GRID",icon:h.createElement(l,{color:"#ccc",size:24}),isActive:u,onClick:()=>{const t=!u;e.viewList.forEach(e=>{"grid"in e&&(e.grid=t)}),p(t)}}),t({id:"debug-toggle",label:"DEBUG",icon:h.createElement(i,{color:"#ccc",size:24}),isActive:f,onClick:()=>{const e=!f;window.redGPUInspector&&(window.redGPUInspector.useDebugPanel=e),g(e)}}),(o?.redGPUContext||o?.viewList||o?.scene||o?.ibl||o?.skybox||o?.gui)&&t({id:"setting-toggle",label:"SETTING",icon:h.createElement(r,{color:"#ccc",size:24}),isActive:n,onClick:()=>{s(!n)}}))},[e,t,c,u,f,o,n,s]),{debugActive:f,setDebugActive:g}})();((e,t)=>{(0,h.useEffect)(()=>{e&&(async()=>{try{const{default:o}=await import(new URL("../../../inspector/dist/index.js?t=1781143364605",import.meta.url).href);window.redGPUInspector||(window.redGPUInspector=new o(e),t(window.redGPUInspector.useDebugPanel))}catch(o){console.error("Failed to load Inspector:",o)}})()},[e,t])})(e,d);const u={...ce,maxHeight:o?"calc(100vh - 160px)":"calc(100vh - 103px)",transform:t?"translateX(0)":"translateX(calc(100% + 10px))",opacity:t?1:0,pointerEvents:t?"auto":"none",transition:"transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1)"}; return(0,g.jsxs)(g.Fragment,{children:[ (0,g.jsx)(G,{}), @@ -50,4 +50,4 @@ return(0,g.jsxs)(g.Fragment,{children:[ (0,g.jsx)(Y,{}), -(0,g.jsx)(se,{})]})},ce={position:"fixed",right:"6px",top:"60px",display:"flex",flexDirection:"column",color:"white",fontFamily:"monospace",zIndex:10002,borderLeft:"1px solid rgba(255,255,255,0.05)",overflow:"hidden"},de={fontSize:"12px",flex:1,overflowY:"auto",display:"flex",flexDirection:"column",gap:"24px"};function ue(e,t,o){var n,i,s,r,a,l,c,d,u,p,x,f,h=o[0],g=o[1],m=o[2];return t===e?(e[12]=t[0]*h+t[4]*g+t[8]*m+t[12],e[13]=t[1]*h+t[5]*g+t[9]*m+t[13],e[14]=t[2]*h+t[6]*g+t[10]*m+t[14],e[15]=t[3]*h+t[7]*g+t[11]*m+t[15]):(n=t[0],i=t[1],s=t[2],r=t[3],a=t[4],l=t[5],c=t[6],d=t[7],u=t[8],p=t[9],x=t[10],f=t[11],e[0]=n,e[1]=i,e[2]=s,e[3]=r,e[4]=a,e[5]=l,e[6]=c,e[7]=d,e[8]=u,e[9]=p,e[10]=x,e[11]=f,e[12]=n*h+a*g+u*m+t[12],e[13]=i*h+l*g+p*m+t[13],e[14]=s*h+c*g+x*m+t[14],e[15]=r*h+d*g+f*m+t[15]),e}var pe=Math.PI/180,xe=(e,t)=>{((e,t)=>{const{pixelRectObject:o}=t,n=e.parent,i=e.localMatrix;var s;(s=i)[0]=1,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=1,s[6]=0,s[7]=0,s[8]=0,s[9]=0,s[10]=1,s[11]=0,s[12]=0,s[13]=0,s[14]=0,s[15]=1,ue(i,i,[e.x,e.y,e.z]),function(e,t,o){var n=Math.sin(o),i=Math.cos(o),s=t[0],r=t[1],a=t[2],l=t[3],c=t[8],d=t[9],u=t[10],p=t[11];t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=s*i-c*n,e[1]=r*i-d*n,e[2]=a*i-u*n,e[3]=l*i-p*n,e[8]=s*n+c*i,e[9]=r*n+d*i,e[10]=a*n+u*i,e[11]=l*n+p*i}(i,i,e.rotationY*pe),function(e,t,o){var n=Math.sin(o),i=Math.cos(o),s=t[4],r=t[5],a=t[6],l=t[7],c=t[8],d=t[9],u=t[10],p=t[11];t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=s*i+c*n,e[5]=r*i+d*n,e[6]=a*i+u*n,e[7]=l*i+p*n,e[8]=c*i-s*n,e[9]=d*i-r*n,e[10]=u*i-a*n,e[11]=p*i-l*n}(i,i,e.rotationX*pe),function(e,t,o){var n=Math.sin(o),i=Math.cos(o),s=t[0],r=t[1],a=t[2],l=t[3],c=t[4],d=t[5],u=t[6],p=t[7];t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=s*i+c*n,e[1]=r*i+d*n,e[2]=a*i+u*n,e[3]=l*i+p*n,e[4]=c*i-s*n,e[5]=d*i-r*n,e[6]=u*i-a*n,e[7]=p*i-l*n}(i,i,e.rotationZ*pe);let r=[e.scaleX,e.scaleY,e.scaleZ];e.renderTextureWidth&&(r[0]*=e.renderTextureWidth/o.height,r[1]*=e.renderTextureHeight/o.height),function(e,t,o){var n=o[0],i=o[1],s=o[2];e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*s,e[9]=t[9]*s,e[10]=t[10]*s,e[11]=t[11]*s,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]}(i,i,r),(e.pivotX||e.pivotY||e.pivotZ)&&ue(i,i,[-e.pivotX,-e.pivotY,-e.pivotZ]),n?.modelMatrix?function(e,t,o){var n=t[0],i=t[1],s=t[2],r=t[3],a=t[4],l=t[5],c=t[6],d=t[7],u=t[8],p=t[9],x=t[10],f=t[11],h=t[12],g=t[13],m=t[14],b=t[15],w=o[0],v=o[1],j=o[2],y=o[3];e[0]=w*n+v*a+j*u+y*h,e[1]=w*i+v*l+j*p+y*g,e[2]=w*s+v*c+j*x+y*m,e[3]=w*r+v*d+j*f+y*b,w=o[4],v=o[5],j=o[6],y=o[7],e[4]=w*n+v*a+j*u+y*h,e[5]=w*i+v*l+j*p+y*g,e[6]=w*s+v*c+j*x+y*m,e[7]=w*r+v*d+j*f+y*b,w=o[8],v=o[9],j=o[10],y=o[11],e[8]=w*n+v*a+j*u+y*h,e[9]=w*i+v*l+j*p+y*g,e[10]=w*s+v*c+j*x+y*m,e[11]=w*r+v*d+j*f+y*b,w=o[12],v=o[13],j=o[14],y=o[15],e[12]=w*n+v*a+j*u+y*h,e[13]=w*i+v*l+j*p+y*g,e[14]=w*s+v*c+j*x+y*m,e[15]=w*r+v*d+j*f+y*b}(e.modelMatrix,n.modelMatrix,e.localMatrix):function(e,t){e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]}(e.modelMatrix,e.localMatrix)})(e,t);let o=e.children.length;for(let n=0;n{x.getState().updateLoadingState(e)};static fitMeshToScreenCenter(e,t){const o=t.camera;xe(e,t);const n=e.combinedBoundingAABB;if(!n||n.minX===1/0||isNaN(n.centerX))return;const i=t.rawCamera.fieldOfView*Math.PI/180,s=Math.tan(i/2),r=s*t.aspect,a=n.xSize,l=n.ySize,c=n.zSize,d=a/2/r,u=l/2/s,p=1.15*Math.max(d,u)+c/2;if(o.centerX=n.centerX,o.centerY=n.centerY,o.centerZ=n.centerZ,o.distance=Math.max(p,2*t.rawCamera.nearClipping),o.distance<1){const t=1/o.distance;e.setScale(t),o.centerX*=t,o.centerY*=t,o.centerZ*=t,o.distance=1}o.speedDistance=Math.max(.1,.1*p)}root=null;domRoot=null;constructor(e,t){x.getState().setRedGPUContext(e),t&&("function"==typeof t?x.getState().setGuiConfig({gui:t}):(t.RedGPU&&x.getState().setRedGPU(t.RedGPU),x.getState().setGuiConfig(t))),this.init()}destroy(){this.root&&(this.root.unmount(),this.root=null),this.domRoot&&(this.domRoot.remove(),this.domRoot=null)}async init(){const e=await(async e=>{const{ExampleList:t}=await import("./exampleList-B00YxcCV.js?t=1781141623471").then(e=>e.n),o=e.replace(/\/$/,"").replace(/\/index\.html$/,"").replace(/.*\/examples\//,""),n=e=>{for(const t of e){if((t.path?t.path.replace(/\/$/,""):void 0)===o)return t;if(t.list){const e=n(t.list);if(e)return e}}return null};return n(t)})(window.location.pathname);x.getState().setCurrentExample(e),this.domRoot||(this.domRoot=document.createElement("div"),this.domRoot.className="RedGPUExampleHelper",document.body.appendChild(this.domRoot),this.root=f.createRoot(this.domRoot),this.root.render( (0,g.jsx)(h.StrictMode,{children: (0,g.jsx)(le,{})})))}};export{fe as default}; \ No newline at end of file +(0,g.jsx)(se,{})]})},ce={position:"fixed",right:"6px",top:"60px",display:"flex",flexDirection:"column",color:"white",fontFamily:"monospace",zIndex:10002,borderLeft:"1px solid rgba(255,255,255,0.05)",overflow:"hidden"},de={fontSize:"12px",flex:1,overflowY:"auto",display:"flex",flexDirection:"column",gap:"24px"};function ue(e,t,o){var n,i,s,r,a,l,c,d,u,p,x,f,h=o[0],g=o[1],m=o[2];return t===e?(e[12]=t[0]*h+t[4]*g+t[8]*m+t[12],e[13]=t[1]*h+t[5]*g+t[9]*m+t[13],e[14]=t[2]*h+t[6]*g+t[10]*m+t[14],e[15]=t[3]*h+t[7]*g+t[11]*m+t[15]):(n=t[0],i=t[1],s=t[2],r=t[3],a=t[4],l=t[5],c=t[6],d=t[7],u=t[8],p=t[9],x=t[10],f=t[11],e[0]=n,e[1]=i,e[2]=s,e[3]=r,e[4]=a,e[5]=l,e[6]=c,e[7]=d,e[8]=u,e[9]=p,e[10]=x,e[11]=f,e[12]=n*h+a*g+u*m+t[12],e[13]=i*h+l*g+p*m+t[13],e[14]=s*h+c*g+x*m+t[14],e[15]=r*h+d*g+f*m+t[15]),e}var pe=Math.PI/180,xe=(e,t)=>{((e,t)=>{const{pixelRectObject:o}=t,n=e.parent,i=e.localMatrix;var s;(s=i)[0]=1,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=1,s[6]=0,s[7]=0,s[8]=0,s[9]=0,s[10]=1,s[11]=0,s[12]=0,s[13]=0,s[14]=0,s[15]=1,ue(i,i,[e.x,e.y,e.z]),function(e,t,o){var n=Math.sin(o),i=Math.cos(o),s=t[0],r=t[1],a=t[2],l=t[3],c=t[8],d=t[9],u=t[10],p=t[11];t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=s*i-c*n,e[1]=r*i-d*n,e[2]=a*i-u*n,e[3]=l*i-p*n,e[8]=s*n+c*i,e[9]=r*n+d*i,e[10]=a*n+u*i,e[11]=l*n+p*i}(i,i,e.rotationY*pe),function(e,t,o){var n=Math.sin(o),i=Math.cos(o),s=t[4],r=t[5],a=t[6],l=t[7],c=t[8],d=t[9],u=t[10],p=t[11];t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=s*i+c*n,e[5]=r*i+d*n,e[6]=a*i+u*n,e[7]=l*i+p*n,e[8]=c*i-s*n,e[9]=d*i-r*n,e[10]=u*i-a*n,e[11]=p*i-l*n}(i,i,e.rotationX*pe),function(e,t,o){var n=Math.sin(o),i=Math.cos(o),s=t[0],r=t[1],a=t[2],l=t[3],c=t[4],d=t[5],u=t[6],p=t[7];t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=s*i+c*n,e[1]=r*i+d*n,e[2]=a*i+u*n,e[3]=l*i+p*n,e[4]=c*i-s*n,e[5]=d*i-r*n,e[6]=u*i-a*n,e[7]=p*i-l*n}(i,i,e.rotationZ*pe);let r=[e.scaleX,e.scaleY,e.scaleZ];e.renderTextureWidth&&(r[0]*=e.renderTextureWidth/o.height,r[1]*=e.renderTextureHeight/o.height),function(e,t,o){var n=o[0],i=o[1],s=o[2];e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*s,e[9]=t[9]*s,e[10]=t[10]*s,e[11]=t[11]*s,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]}(i,i,r),(e.pivotX||e.pivotY||e.pivotZ)&&ue(i,i,[-e.pivotX,-e.pivotY,-e.pivotZ]),n?.modelMatrix?function(e,t,o){var n=t[0],i=t[1],s=t[2],r=t[3],a=t[4],l=t[5],c=t[6],d=t[7],u=t[8],p=t[9],x=t[10],f=t[11],h=t[12],g=t[13],m=t[14],b=t[15],w=o[0],v=o[1],j=o[2],y=o[3];e[0]=w*n+v*a+j*u+y*h,e[1]=w*i+v*l+j*p+y*g,e[2]=w*s+v*c+j*x+y*m,e[3]=w*r+v*d+j*f+y*b,w=o[4],v=o[5],j=o[6],y=o[7],e[4]=w*n+v*a+j*u+y*h,e[5]=w*i+v*l+j*p+y*g,e[6]=w*s+v*c+j*x+y*m,e[7]=w*r+v*d+j*f+y*b,w=o[8],v=o[9],j=o[10],y=o[11],e[8]=w*n+v*a+j*u+y*h,e[9]=w*i+v*l+j*p+y*g,e[10]=w*s+v*c+j*x+y*m,e[11]=w*r+v*d+j*f+y*b,w=o[12],v=o[13],j=o[14],y=o[15],e[12]=w*n+v*a+j*u+y*h,e[13]=w*i+v*l+j*p+y*g,e[14]=w*s+v*c+j*x+y*m,e[15]=w*r+v*d+j*f+y*b}(e.modelMatrix,n.modelMatrix,e.localMatrix):function(e,t){e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]}(e.modelMatrix,e.localMatrix)})(e,t);let o=e.children.length;for(let n=0;n{x.getState().updateLoadingState(e)};static fitMeshToScreenCenter(e,t){const o=t.camera;xe(e,t);const n=e.combinedBoundingAABB;if(!n||n.minX===1/0||isNaN(n.centerX))return;const i=t.rawCamera.fieldOfView*Math.PI/180,s=Math.tan(i/2),r=s*t.aspect,a=n.xSize,l=n.ySize,c=n.zSize,d=a/2/r,u=l/2/s,p=1.15*Math.max(d,u)+c/2;if(o.centerX=n.centerX,o.centerY=n.centerY,o.centerZ=n.centerZ,o.distance=Math.max(p,2*t.rawCamera.nearClipping),o.distance<1){const t=1/o.distance;e.setScale(t),o.centerX*=t,o.centerY*=t,o.centerZ*=t,o.distance=1}o.speedDistance=Math.max(.1,.1*p)}root=null;domRoot=null;constructor(e,t){x.getState().setRedGPUContext(e),t&&("function"==typeof t?x.getState().setGuiConfig({gui:t}):(t.RedGPU&&x.getState().setRedGPU(t.RedGPU),x.getState().setGuiConfig(t))),this.init()}destroy(){this.root&&(this.root.unmount(),this.root=null),this.domRoot&&(this.domRoot.remove(),this.domRoot=null)}async init(){const e=await(async e=>{const{ExampleList:t}=await import("./exampleList-B00YxcCV.js?t=1781143364605").then(e=>e.n),o=e.replace(/\/$/,"").replace(/\/index\.html$/,"").replace(/.*\/examples\//,""),n=e=>{for(const t of e){if((t.path?t.path.replace(/\/$/,""):void 0)===o)return t;if(t.list){const e=n(t.list);if(e)return e}}return null};return n(t)})(window.location.pathname);x.getState().setCurrentExample(e),this.domRoot||(this.domRoot=document.createElement("div"),this.domRoot.className="RedGPUExampleHelper",document.body.appendChild(this.domRoot),this.root=f.createRoot(this.domRoot),this.root.render( (0,g.jsx)(h.StrictMode,{children: (0,g.jsx)(le,{})})))}};export{fe as default}; \ No newline at end of file diff --git a/examples/exampleHelper/dist/store-2JcZHIgY.js b/examples/exampleHelper/dist/store-2JcZHIgY.js index 71a60b0e5f..983e89a507 100644 --- a/examples/exampleHelper/dist/store-2JcZHIgY.js +++ b/examples/exampleHelper/dist/store-2JcZHIgY.js @@ -1 +1 @@ -import{d as t}from"./IconButton-D8-442jY.js?t=1781141623471";var e=t(t=>({RedGPU:null,redGPUContext:null,currentExample:null,language:"undefined"!=typeof navigator&&navigator.language.startsWith("ko")?"ko":"en",showSourceModal:!1,showSettingsPanel:!1,topBarRightActions:[],guiConfig:null,isNarrow:"undefined"!=typeof window&&window.innerWidth<=768,loadingStates:{},setRedGPU:e=>t({RedGPU:e}),setRedGPUContext:e=>t({redGPUContext:e}),setCurrentExample:e=>t({currentExample:e}),setLanguage:e=>t({language:e}),setShowSourceModal:e=>t({showSourceModal:e}),setShowSettingsPanel:e=>t({showSettingsPanel:e}),addTopBarRightAction:e=>t(t=>({topBarRightActions:[...t.topBarRightActions.filter(t=>t.id!==e.id),e]})),removeTopBarRightAction:e=>t(t=>({topBarRightActions:t.topBarRightActions.filter(t=>t.id!==e)})),clearTopBarRightActions:()=>t({topBarRightActions:[]}),setGuiConfig:e=>{t({guiConfig:e,showSettingsPanel:!!(e?.redGPUContext||e?.viewList||e?.scene||e?.ibl||e?.skybox||e?.gui)})},setIsNarrow:e=>t({isNarrow:e}),updateLoadingState:e=>t(t=>{const o=e.url||"default";return{loadingStates:{...t.loadingStates,[o]:e}}}),clearLoadingStates:()=>t({loadingStates:{}})}));export{e as t}; \ No newline at end of file +import{d as t}from"./IconButton-D8-442jY.js?t=1781143364605";var e=t(t=>({RedGPU:null,redGPUContext:null,currentExample:null,language:"undefined"!=typeof navigator&&navigator.language.startsWith("ko")?"ko":"en",showSourceModal:!1,showSettingsPanel:!1,topBarRightActions:[],guiConfig:null,isNarrow:"undefined"!=typeof window&&window.innerWidth<=768,loadingStates:{},setRedGPU:e=>t({RedGPU:e}),setRedGPUContext:e=>t({redGPUContext:e}),setCurrentExample:e=>t({currentExample:e}),setLanguage:e=>t({language:e}),setShowSourceModal:e=>t({showSourceModal:e}),setShowSettingsPanel:e=>t({showSettingsPanel:e}),addTopBarRightAction:e=>t(t=>({topBarRightActions:[...t.topBarRightActions.filter(t=>t.id!==e.id),e]})),removeTopBarRightAction:e=>t(t=>({topBarRightActions:t.topBarRightActions.filter(t=>t.id!==e)})),clearTopBarRightActions:()=>t({topBarRightActions:[]}),setGuiConfig:e=>{t({guiConfig:e,showSettingsPanel:!!(e?.redGPUContext||e?.viewList||e?.scene||e?.ibl||e?.skybox||e?.gui)})},setIsNarrow:e=>t({isNarrow:e}),updateLoadingState:e=>t(t=>{const o=e.url||"default";return{loadingStates:{...t.loadingStates,[o]:e}}}),clearLoadingStates:()=>t({loadingStates:{}})}));export{e as t}; \ No newline at end of file diff --git a/examples/exampleHelper/dist/vendor-react-BwJpJ84T.js b/examples/exampleHelper/dist/vendor-react-BwJpJ84T.js index 7b807cd5be..e0e9825657 100644 --- a/examples/exampleHelper/dist/vendor-react-BwJpJ84T.js +++ b/examples/exampleHelper/dist/vendor-react-BwJpJ84T.js @@ -1 +1 @@ -import{t as e}from"./rolldown-runtime-BztV3taV.js?t=1781141623471";var t=e(e=>{var t=Symbol.for("react.transitional.element"),n=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),l=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),o=Symbol.for("react.consumer"),i=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),s=Symbol.for("react.suspense"),c=Symbol.for("react.memo"),f=Symbol.for("react.lazy"),d=Symbol.for("react.activity"),p=Symbol.iterator,m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h=Object.assign,g={};function y(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||m}function v(){}function b(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||m}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=y.prototype;var k=b.prototype=new v;k.constructor=b,h(k,y.prototype),k.isPureReactComponent=!0;var w=Array.isArray;function S(){}var E={H:null,A:null,T:null,S:null},C=Object.prototype.hasOwnProperty;function x(e,n,r){var l=r.ref;return{$$typeof:t,type:e,key:n,ref:void 0!==l?l:null,props:r}}function z(e){return"object"==typeof e&&null!==e&&e.$$typeof===t}var _=/\/+/g;function P(e,t){return"object"==typeof e&&null!==e&&null!=e.key?(n=""+e.key,r={"=":"=0",":":"=2"},"$"+n.replace(/[=:]/g,function(e){return r[e]})):t.toString(36);var n,r}function N(e,r,l,a,o){var i=typeof e;"undefined"!==i&&"boolean"!==i||(e=null);var u,s,c=!1;if(null===e)c=!0;else switch(i){case"bigint":case"string":case"number":c=!0;break;case"object":switch(e.$$typeof){case t:case n:c=!0;break;case f:return N((c=e._init)(e._payload),r,l,a,o)}}if(c)return o=o(e),c=""===a?"."+P(e,0):a,w(o)?(l="",null!=c&&(l=c.replace(_,"$&/")+"/"),N(o,r,l,"",function(e){return e})):null!=o&&(z(o)&&(u=o,s=l+(null==o.key||e&&e.key===o.key?"":(""+o.key).replace(_,"$&/")+"/")+c,o=x(u.type,s,u.props)),r.push(o)),1;c=0;var d,m=""===a?".":a+":";if(w(e))for(var h=0;h{n.exports=t()}),r=e(e=>{function t(e,t){var n=e.length;e.push(t);e:for(;0>>1,a=e[r];if(!(0>>1;rl(u,n))sl(c,u)?(e[r]=c,e[s]=n,r=s):(e[r]=u,e[i]=n,r=i);else{if(!(sl(c,n)))break e;e[r]=c,e[s]=n,r=s}}}return t}function l(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(e.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,i=o.now();e.unstable_now=function(){return o.now()-i}}var u=[],s=[],c=1,f=null,d=3,p=!1,m=!1,h=!1,g=!1,y="function"==typeof setTimeout?setTimeout:null,v="function"==typeof clearTimeout?clearTimeout:null,b="undefined"!=typeof setImmediate?setImmediate:null;function k(e){for(var l=n(s);null!==l;){if(null===l.callback)r(s);else{if(!(l.startTime<=e))break;r(s),l.sortIndex=l.expirationTime,t(u,l)}l=n(s)}}function w(e){if(h=!1,k(e),!m)if(null!==n(u))m=!0,E||(E=!0,S());else{var t=n(s);null!==t&&L(w,t.startTime-e)}}var S,E=!1,C=-1,x=5,z=-1;function _(){return!(!g&&e.unstable_now()-zt&&_());){var o=f.callback;if("function"==typeof o){f.callback=null,d=f.priorityLevel;var i=o(f.expirationTime<=t);if(t=e.unstable_now(),"function"==typeof i){f.callback=i,k(t),l=!0;break t}f===n(u)&&r(u),k(t)}else r(u);f=n(u)}if(null!==f)l=!0;else{var c=n(s);null!==c&&L(w,c.startTime-t),l=!1}}break e}finally{f=null,d=a,p=!1}l=void 0}}finally{l?S():E=!1}}}if("function"==typeof b)S=function(){b(P)};else if("undefined"!=typeof MessageChannel){var N=new MessageChannel,T=N.port2;N.port1.onmessage=P,S=function(){T.postMessage(null)}}else S=function(){y(P,0)};function L(t,n){C=y(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(s,r),null===n(u)&&r===n(s)&&(h?(v(C),C=-1):h=!0,L(w,a-o))):(r.sortIndex=i,t(u,r),m||p||(m=!0,E||(E=!0,S()))),r},e.unstable_shouldYield=_,e.unstable_wrapCallback=function(e){var t=d;return function(){var n=d;d=t;try{return e.apply(this,arguments)}finally{d=n}}}}),l=e((e,t)=>{t.exports=r()}),a=e(e=>{var t=n();function r(e){var t="https://react.dev/errors/"+e;if(1{!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),t.exports=a()}),i=e(e=>{var t=l(),r=n(),a=o();function i(e){var t="https://react.dev/errors/"+e;if(1I||(e.current=M[I],M[I]=null,I--)}function H(e,t){I++,M[I]=e.current,e.current=t}var $,V,B=U(null),Q=U(null),W=U(null),q=U(null);function K(e,t){switch(H(W,t),H(Q,e),H(B,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?vf(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)e=bf(t=vf(t),e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}j(B),H(B,e)}function Y(){j(B),j(Q),j(W)}function G(e){null!==e.memoizedState&&H(q,e);var t=B.current,n=bf(t,e.type);t!==n&&(H(Q,e),H(B,n))}function X(e){Q.current===e&&(j(B),j(Q)),q.current===e&&(j(q),fd._currentValue=A)}function Z(e){if(void 0===$)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);$=t&&t[1]||"",V=-1)":-1--l||u[r]!==s[l]){var c="\n"+u[r].replace(" at new "," at ");return e.displayName&&c.includes("")&&(c=c.replace("",e.displayName)),c}}while(1<=r&&0<=l);break}}}finally{J=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?Z(n):""}function te(e,t){switch(e.tag){case 26:case 27:case 5:return Z(e.type);case 16:return Z("Lazy");case 13:return e.child!==t&&null!==t?Z("Suspense Fallback"):Z("Suspense");case 19:return Z("SuspenseList");case 0:case 15:return ee(e.type,!1);case 11:return ee(e.type.render,!1);case 1:return ee(e.type,!0);case 31:return Z("Activity");default:return""}}function ne(e){try{var t="",n=null;do{t+=te(e,n),n=e,e=e.return}while(e);return t}catch(r){return"\nError generating stack: "+r.message+"\n"+r.stack}}var re=Object.prototype.hasOwnProperty,le=t.unstable_scheduleCallback,ae=t.unstable_cancelCallback,oe=t.unstable_shouldYield,ie=t.unstable_requestPaint,ue=t.unstable_now,se=t.unstable_getCurrentPriorityLevel,ce=t.unstable_ImmediatePriority,fe=t.unstable_UserBlockingPriority,de=t.unstable_NormalPriority,pe=t.unstable_LowPriority,me=t.unstable_IdlePriority,he=t.log,ge=t.unstable_setDisableYieldValue,ye=null,ve=null;function be(e){if("function"==typeof he&&ge(e),ve&&"function"==typeof ve.setStrictMode)try{ve.setStrictMode(ye,e)}catch(t){}}var ke=Math.clz32?Math.clz32:function(e){return 0==(e>>>=0)?32:31-(we(e)/Se|0)|0},we=Math.log,Se=Math.LN2,Ee=256,Ce=262144,xe=4194304;function ze(e){var t=42&e;if(0!==t)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return 261888&e;case 262144:case 524288:case 1048576:case 2097152:return 3932160&e;case 4194304:case 8388608:case 16777216:case 33554432:return 62914560&e;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function _e(e,t,n){var r=e.pendingLanes;if(0===r)return 0;var l=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var i=134217727&r;return 0!==i?0!==(r=i&~a)?l=ze(r):0!==(o&=i)?l=ze(o):n||0!==(n=i&~e)&&(l=ze(n)):0!==(i=r&~a)?l=ze(i):0!==o?l=ze(o):n||0!==(n=r&~e)&&(l=ze(n)),0===l?0:0!==t&&t!==l&&0===(t&a)&&((a=l&-l)>=(n=t&-t)||32===a&&4194048&n)?t:l}function Pe(e,t){return 0===(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)}function Ne(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function Te(){var e=xe;return!(62914560&(xe<<=1))&&(xe=4194304),e}function Le(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Oe(e,t){e.pendingLanes|=t,268435456!==t&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function De(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-ke(t);e.entangledLanes|=t,e.entanglements[r]=1073741824|e.entanglements[r]|261930&n}function Fe(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-ke(n),l=1<=zn),Nn=String.fromCharCode(32),Tn=!1;function Ln(e,t){switch(e){case"keyup":return-1!==Cn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function On(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Dn=!1,Fn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Rn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Fn[e.type]:"textarea"===t}function An(e,t,n,r){Rt?At?At.push(r):At=[r]:Rt=r,0<(t=rf(t,"onChange")).length&&(n=new nn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Mn=null,In=null;function Un(e){Yc(e,0)}function jn(e){if(mt(Ze(e)))return e}function Hn(e,t){if("change"===e)return t}var $n=!1;if(Ht){var Vn;if(Ht){var Bn="oninput"in document;if(!Bn){var Qn=document.createElement("div");Qn.setAttribute("oninput","return;"),Bn="function"==typeof Qn.oninput}Vn=Bn}else Vn=!1;$n=Vn&&(!document.documentMode||9=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=er(r)}}function nr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?nr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function rr(e){for(var t=ht((e=null!=e&&null!=e.ownerDocument&&null!=e.ownerDocument.defaultView?e.ownerDocument.defaultView:window).document);t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=ht((e=t.contentWindow).document)}return t}function lr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var ar=Ht&&"documentMode"in document&&11>=document.documentMode,or=null,ir=null,ur=null,sr=!1;function cr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;sr||null==or||or!==ht(r)||(r="selectionStart"in(r=or)&&lr(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},ur&&Jn(ur,r)||(ur=r,0<(r=rf(ir,"onSelect")).length&&(t=new nn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=or)))}function fr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var dr={animationend:fr("Animation","AnimationEnd"),animationiteration:fr("Animation","AnimationIteration"),animationstart:fr("Animation","AnimationStart"),transitionrun:fr("Transition","TransitionRun"),transitionstart:fr("Transition","TransitionStart"),transitioncancel:fr("Transition","TransitionCancel"),transitionend:fr("Transition","TransitionEnd")},pr={},mr={};function hr(e){if(pr[e])return pr[e];if(!dr[e])return e;var t,n=dr[e];for(t in n)if(n.hasOwnProperty(t)&&t in mr)return pr[e]=n[t];return e}Ht&&(mr=document.createElement("div").style,"AnimationEvent"in window||(delete dr.animationend.animation,delete dr.animationiteration.animation,delete dr.animationstart.animation),"TransitionEvent"in window||delete dr.transitionend.transition);var gr=hr("animationend"),yr=hr("animationiteration"),vr=hr("animationstart"),br=hr("transitionrun"),kr=hr("transitionstart"),wr=hr("transitioncancel"),Sr=hr("transitionend"),Er=new Map,Cr="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function xr(e,t){Er.set(e,t),rt(t,[e])}Cr.push("scrollEnd");var zr="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof process&&"function"==typeof process.emit)return void process.emit("uncaughtException",e);console.error(e)},_r=[],Pr=0,Nr=0;function Tr(){for(var e=Pr,t=Nr=Pr=0;t>=o,l-=o,nl=1<<32-ke(t)+l|n<h?(g=f,f=null):g=f.sibling;var y=p(l,f,i[h],u);if(null===y){null===f&&(f=g);break}e&&f&&null===y.alternate&&t(l,f),o=a(y,o,h),null===c?s=y:c.sibling=y,c=y,f=g}if(h===i.length)return n(l,f),fl&&ll(l,h),s;if(null===f){for(;hg?(y=h,h=null):y=h.sibling;var b=p(l,h,v.value,s);if(null===b){null===h&&(h=y);break}e&&h&&null===b.alternate&&t(l,h),o=a(b,o,g),null===f?c=b:f.sibling=b,f=b,h=y}if(v.done)return n(l,h),fl&&ll(l,g),c;if(null===h){for(;!v.done;g++,v=u.next())null!==(v=d(l,v.value,s))&&(o=a(v,o,g),null===f?c=v:f.sibling=v,f=v);return fl&&ll(l,g),c}for(h=r(h);!v.done;g++,v=u.next())null!==(v=m(h,l,g,v.value,s))&&(e&&null!==v.alternate&&h.delete(null===v.key?g:v.key),o=a(v,o,g),null===f?c=v:f.sibling=v,f=v);return e&&h.forEach(function(e){return t(l,e)}),fl&&ll(l,g),c}(u,s,c=b.call(c),f)}if("function"==typeof c.then)return v(u,s,sa(c),f);if(c.$$typeof===w)return v(u,s,Dl(u,c),f);fa(u,c)}return"string"==typeof c&&""!==c||"number"==typeof c||"bigint"==typeof c?(c=""+c,null!==s&&6===s.tag?(n(u,s.sibling),(f=l(s,c)).return=u,u=f):(n(u,s),(f=Br(c,u.mode,f)).return=u,u=f),o(u)):n(u,s)}return function(e,t,n,r){try{ua=0;var l=v(e,t,n,r);return ia=null,l}catch(o){if(o===Xl||o===Jl)throw o;var a=Ir(29,o,null,e.mode);return a.lanes=r,a.return=e,a}}}var pa=da(!0),ma=da(!1),ha=!1;function ga(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function ya(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function va(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function ba(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,2&ps){var l=r.pending;return null===l?t.next=t:(t.next=l.next,l.next=t),r.pending=t,t=Rr(e),Fr(e,null,n),t}return Lr(e,r,t,n),Rr(e)}function ka(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,4194048&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,Fe(e,n)}}function wa(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var l=null,a=null;if(null!==(n=n.firstBaseUpdate)){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};null===a?l=a=o:a=a.next=o,n=n.next}while(null!==n);null===a?l=a=t:a=a.next=t}else l=a=t;return n={baseState:r.baseState,firstBaseUpdate:l,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Sa=!1;function Ea(){if(Sa&&null!==Bl)throw Bl}function Ca(e,t,n,r){Sa=!1;var l=e.updateQueue;ha=!1;var a=l.firstBaseUpdate,o=l.lastBaseUpdate,i=l.shared.pending;if(null!==i){l.shared.pending=null;var u=i,s=u.next;u.next=null,null===o?a=s:o.next=s,o=u;var c=e.alternate;null!==c&&(i=(c=c.updateQueue).lastBaseUpdate)!==o&&(null===i?c.firstBaseUpdate=s:i.next=s,c.lastBaseUpdate=u)}if(null!==a){var f=l.baseState;for(o=0,c=s=u=null,i=a;;){var d=-536870913&i.lane,m=d!==i.lane;if(m?(gs&d)===d:(r&d)===d){0!==d&&d===Vl&&(Sa=!0),null!==c&&(c=c.next={lane:0,tag:i.tag,payload:i.payload,callback:null,next:null});e:{var h=e,g=i;d=t;var y=n;switch(g.tag){case 1:if("function"==typeof(h=g.payload)){f=h.call(y,f,d);break e}f=h;break e;case 3:h.flags=-65537&h.flags|128;case 0:if(null==(d="function"==typeof(h=g.payload)?h.call(y,f,d):h))break e;f=p({},f,d);break e;case 2:ha=!0}}null!==(d=i.callback)&&(e.flags|=64,m&&(e.flags|=8192),null===(m=l.callbacks)?l.callbacks=[d]:m.push(d))}else m={lane:d,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===c?(s=c=m,u=f):c=c.next=m,o|=d;if(null===(i=i.next)){if(null===(i=l.shared.pending))break;i=(m=i).next,m.next=null,l.lastBaseUpdate=m,l.shared.pending=null}}null===c&&(u=f),l.baseState=u,l.firstBaseUpdate=s,l.lastBaseUpdate=c,null===a&&(l.shared.lanes=0),Cs|=o,e.lanes=o,e.memoizedState=f}}function xa(e,t){if("function"!=typeof e)throw Error(i(191,e));e.call(t)}function za(e,t){var n=e.callbacks;if(null!==n)for(e.callbacks=null,e=0;ea?a:8;var o,i,u,s=F.T,c={};F.T=c,fi(e,!1,t,n);try{var f=l(),d=F.S;null!==d&&d(c,f),null!==f&&"object"==typeof f&&"function"==typeof f.then?ci(e,t,(o=r,i=[],u={status:"pending",value:null,reason:null,then:function(e){i.push(e)}},f.then(function(){u.status="fulfilled",u.value=o;for(var e=0;e<\/script>",a=a.removeChild(a.firstChild);break;case"select":a="string"==typeof r.is?o.createElement("select",{is:r.is}):o.createElement("select"),r.multiple?a.multiple=!0:r.size&&(a.size=r.size);break;default:a="string"==typeof r.is?o.createElement(l,{is:r.is}):o.createElement(l)}}a[He]=t,a[$e]=r;e:for(o=t.child;null!==o;){if(5===o.tag||6===o.tag)a.appendChild(o.stateNode);else if(4!==o.tag&&27!==o.tag&&null!==o.child){o.child.return=o,o=o.child;continue}if(o===t)break e;for(;null===o.sibling;){if(null===o.return||o.return===t)break e;o=o.return}o.sibling.return=o.return,o=o.sibling}t.stateNode=a;e:switch(pf(a,l,r),l){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}r&&iu(t)}}return du(t),uu(t,t.type,null===e||e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&null!=t.stateNode)e.memoizedProps!==r&&iu(t);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));if(e=W.current,vl(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,null!==(l=sl))switch(l.tag){case 27:case 5:r=l.memoizedProps}e[He]=t,(e=!!(e.nodeValue===n||null!==r&&!0===r.suppressHydrationWarning||cf(e.nodeValue,n)))||hl(t,!0)}else(e=yf(e).createTextNode(r))[He]=t,t.stateNode=e}return du(t),null;case 31:if(n=t.memoizedState,null===e||null!==e.memoizedState){if(r=vl(t),null!==n){if(null===e){if(!r)throw Error(i(318));if(!(e=null!==(e=t.memoizedState)?e.dehydrated:null))throw Error(i(557));e[He]=t}else bl(),!(128&t.flags)&&(t.memoizedState=null),t.flags|=4;du(t),e=!1}else n=kl(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return 256&t.flags?(Ia(t),t):(Ia(t),null);if(128&t.flags)throw Error(i(558))}return du(t),null;case 13:if(r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(l=vl(t),null!==r&&null!==r.dehydrated){if(null===e){if(!l)throw Error(i(318));if(!(l=null!==(l=t.memoizedState)?l.dehydrated:null))throw Error(i(317));l[He]=t}else bl(),!(128&t.flags)&&(t.memoizedState=null),t.flags|=4;du(t),l=!1}else l=kl(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=l),l=!0;if(!l)return 256&t.flags?(Ia(t),t):(Ia(t),null)}return Ia(t),128&t.flags?(t.lanes=n,t):(n=null!==r,e=null!==e&&null!==e.memoizedState,n&&(l=null,null!==(r=t.child).alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(l=r.alternate.memoizedState.cachePool.pool),a=null,null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(a=r.memoizedState.cachePool.pool),a!==l&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),cu(t,t.updateQueue),du(t),null);case 4:return Y(),null===e&&Jc(t.stateNode.containerInfo),du(t),null;case 10:return zl(t.type),du(t),null;case 19:if(j(Ua),null===(r=t.memoizedState))return du(t),null;if(l=!!(128&t.flags),null===(a=r.rendering))if(l)fu(r,!1);else{if(0!==Es||null!==e&&128&e.flags)for(e=t.child;null!==e;){if(null!==(a=ja(e))){for(t.flags|=128,fu(r,!1),e=a.updateQueue,t.updateQueue=e,cu(t,e),t.subtreeFlags=0,e=n,n=t.child;null!==n;)Hr(n,e),n=n.sibling;return H(Ua,1&Ua.current|2),fl&&ll(t,r.treeForkCount),t.child}e=e.sibling}null!==r.tail&&ue()>Fs&&(t.flags|=128,l=!0,fu(r,!1),t.lanes=4194304)}else{if(!l)if(null!==(e=ja(a))){if(t.flags|=128,l=!0,e=e.updateQueue,t.updateQueue=e,cu(t,e),fu(r,!0),null===r.tail&&"hidden"===r.tailMode&&!a.alternate&&!fl)return du(t),null}else 2*ue()-r.renderingStartTime>Fs&&536870912!==n&&(t.flags|=128,l=!0,fu(r,!1),t.lanes=4194304);r.isBackwards?(a.sibling=t.child,t.child=a):(null!==(e=r.last)?e.sibling=a:t.child=a,r.last=a)}return null!==r.tail?(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=ue(),e.sibling=null,n=Ua.current,H(Ua,l?1&n|2:1&n),fl&&ll(t,r.treeForkCount),e):(du(t),null);case 22:case 23:return Ia(t),La(),r=null!==t.memoizedState,null!==e?null!==e.memoizedState!==r&&(t.flags|=8192):r&&(t.flags|=8192),r?!!(536870912&n)&&!(128&t.flags)&&(du(t),6&t.subtreeFlags&&(t.flags|=8192)):du(t),null!==(n=t.updateQueue)&&cu(t,n.retryQueue),n=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),r=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),null!==e&&j(ql),null;case 24:return n=null,null!==e&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),zl(Il),du(t),null;case 25:case 30:return null}throw Error(i(156,t.tag))}function mu(e,t){switch(il(t),t.tag){case 1:return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return zl(Il),Y(),65536&(e=t.flags)&&!(128&e)?(t.flags=-65537&e|128,t):null;case 26:case 27:case 5:return X(t),null;case 31:if(null!==t.memoizedState){if(Ia(t),null===t.alternate)throw Error(i(340));bl()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 13:if(Ia(t),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(i(340));bl()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return j(Ua),null;case 4:return Y(),null;case 10:return zl(t.type),null;case 22:case 23:return Ia(t),La(),null!==e&&j(ql),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 24:return zl(Il),null;default:return null}}function hu(e,t){switch(il(t),t.tag){case 3:zl(Il),Y();break;case 26:case 27:case 5:X(t);break;case 4:Y();break;case 31:null!==t.memoizedState&&Ia(t);break;case 13:Ia(t);break;case 19:j(Ua);break;case 10:zl(t.type);break;case 22:case 23:Ia(t),La(),null!==e&&j(ql);break;case 24:zl(Il)}}function gu(e,t){try{var n=t.updateQueue,r=null!==n?n.lastEffect:null;if(null!==r){var l=r.next;n=l;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==l)}}catch(i){Ec(t,t.return,i)}}function yu(e,t,n){try{var r=t.updateQueue,l=null!==r?r.lastEffect:null;if(null!==l){var a=l.next;r=a;do{if((r.tag&e)===e){var o=r.inst,i=o.destroy;if(void 0!==i){o.destroy=void 0,l=t;var u=n,s=i;try{s()}catch(c){Ec(l,u,c)}}}r=r.next}while(r!==a)}}catch(c){Ec(t,t.return,c)}}function vu(e){var t=e.updateQueue;if(null!==t){var n=e.stateNode;try{za(t,n)}catch(r){Ec(e,e.return,r)}}}function bu(e,t,n){n.props=Ei(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(r){Ec(e,t,r)}}function ku(e,t){try{var n=e.ref;if(null!==n){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;default:r=e.stateNode}"function"==typeof n?e.refCleanup=n(r):n.current=r}}catch(l){Ec(e,t,l)}}function wu(e,t){var n=e.ref,r=e.refCleanup;if(null!==n)if("function"==typeof r)try{r()}catch(l){Ec(e,t,l)}finally{e.refCleanup=null,null!=(e=e.alternate)&&(e.refCleanup=null)}else if("function"==typeof n)try{n(null)}catch(a){Ec(e,t,a)}else n.current=null}function Su(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&r.focus();break e;case"img":n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(l){Ec(e,e.return,l)}}function Eu(e,t,n){try{var r=e.stateNode;!function(e,t,n,r){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var l=null,a=null,o=null,u=null,s=null,c=null,f=null;for(m in n){var d=n[m];if(n.hasOwnProperty(m)&&null!=d)switch(m){case"checked":case"value":break;case"defaultValue":s=d;default:r.hasOwnProperty(m)||ff(e,t,m,null,r,d)}}for(var p in r){var m=r[p];if(d=n[p],r.hasOwnProperty(p)&&(null!=m||null!=d))switch(p){case"type":a=m;break;case"name":l=m;break;case"checked":c=m;break;case"defaultChecked":f=m;break;case"value":o=m;break;case"defaultValue":u=m;break;case"children":case"dangerouslySetInnerHTML":if(null!=m)throw Error(i(137,t));break;default:m!==d&&ff(e,t,p,m,r,d)}}return void vt(e,o,u,s,c,f,a,l);case"select":for(a in m=o=u=p=null,n)if(s=n[a],n.hasOwnProperty(a)&&null!=s)switch(a){case"value":break;case"multiple":m=s;default:r.hasOwnProperty(a)||ff(e,t,a,null,r,s)}for(l in r)if(a=r[l],s=n[l],r.hasOwnProperty(l)&&(null!=a||null!=s))switch(l){case"value":p=a;break;case"defaultValue":u=a;break;case"multiple":o=a;default:a!==s&&ff(e,t,l,a,r,s)}return t=u,n=o,r=m,void(null!=p?wt(e,!!n,p,!1):!!r!=!!n&&(null!=t?wt(e,!!n,t,!0):wt(e,!!n,n?[]:"",!1)));case"textarea":for(u in m=p=null,n)if(l=n[u],n.hasOwnProperty(u)&&null!=l&&!r.hasOwnProperty(u))switch(u){case"value":case"children":break;default:ff(e,t,u,null,r,l)}for(o in r)if(l=r[o],a=n[o],r.hasOwnProperty(o)&&(null!=l||null!=a))switch(o){case"value":p=l;break;case"defaultValue":m=l;break;case"children":break;case"dangerouslySetInnerHTML":if(null!=l)throw Error(i(91));break;default:l!==a&&ff(e,t,o,l,r,a)}return void St(e,p,m);case"option":for(var h in n)p=n[h],n.hasOwnProperty(h)&&null!=p&&!r.hasOwnProperty(h)&&("selected"===h?e.selected=!1:ff(e,t,h,null,r,p));for(s in r)p=r[s],m=n[s],!r.hasOwnProperty(s)||p===m||null==p&&null==m||("selected"===s?e.selected=p&&"function"!=typeof p&&"symbol"!=typeof p:ff(e,t,s,p,r,m));return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var g in n)p=n[g],n.hasOwnProperty(g)&&null!=p&&!r.hasOwnProperty(g)&&ff(e,t,g,null,r,p);for(c in r)if(p=r[c],m=n[c],r.hasOwnProperty(c)&&p!==m&&(null!=p||null!=m))switch(c){case"children":case"dangerouslySetInnerHTML":if(null!=p)throw Error(i(137,t));break;default:ff(e,t,c,p,r,m)}return;default:if(Pt(t)){for(var y in n)p=n[y],n.hasOwnProperty(y)&&void 0!==p&&!r.hasOwnProperty(y)&&df(e,t,y,void 0,r,p);for(f in r)p=r[f],m=n[f],!r.hasOwnProperty(f)||p===m||void 0===p&&void 0===m||df(e,t,f,p,r,m);return}}for(var v in n)p=n[v],n.hasOwnProperty(v)&&null!=p&&!r.hasOwnProperty(v)&&ff(e,t,v,null,r,p);for(d in r)p=r[d],m=n[d],!r.hasOwnProperty(d)||p===m||null==p&&null==m||ff(e,t,d,p,r,m)}(r,e.type,n,t),r[$e]=t}catch(l){Ec(e,e.return,l)}}function Cu(e){return 5===e.tag||3===e.tag||26===e.tag||27===e.tag&&_f(e.type)||4===e.tag}function xu(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||Cu(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(27===e.tag&&_f(e.type))continue e;if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function zu(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?(9===n.nodeType?n.body:"HTML"===n.nodeName?n.ownerDocument.body:n).insertBefore(e,t):((t=9===n.nodeType?n.body:"HTML"===n.nodeName?n.ownerDocument.body:n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Ot));else if(4!==r&&(27===r&&_f(e.type)&&(n=e.stateNode,t=null),null!==(e=e.child)))for(zu(e,t,n),e=e.sibling;null!==e;)zu(e,t,n),e=e.sibling}function _u(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&(27===r&&_f(e.type)&&(n=e.stateNode),null!==(e=e.child)))for(_u(e,t,n),e=e.sibling;null!==e;)_u(e,t,n),e=e.sibling}function Pu(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,l=t.attributes;l.length;)t.removeAttributeNode(l[0]);pf(t,r,n),t[He]=e,t[$e]=n}catch(a){Ec(e,e.return,a)}}var Nu=!1,Tu=!1,Lu=!1,Ou="function"==typeof WeakSet?WeakSet:Set,Du=null;function Fu(e,t,n){var r=n.flags;switch(n.tag){case 0:case 11:case 15:Ku(e,n),4&r&&gu(5,n);break;case 1:if(Ku(e,n),4&r)if(e=n.stateNode,null===t)try{e.componentDidMount()}catch(o){Ec(n,n.return,o)}else{var l=Ei(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(l,t,e.__reactInternalSnapshotBeforeUpdate)}catch(i){Ec(n,n.return,i)}}64&r&&vu(n),512&r&&ku(n,n.return);break;case 3:if(Ku(e,n),64&r&&null!==(e=n.updateQueue)){if(t=null,null!==n.child)switch(n.child.tag){case 27:case 5:case 1:t=n.child.stateNode}try{za(e,t)}catch(o){Ec(n,n.return,o)}}break;case 27:null===t&&4&r&&Pu(n);case 26:case 5:Ku(e,n),null===t&&4&r&&Su(n),512&r&&ku(n,n.return);break;case 12:Ku(e,n);break;case 31:Ku(e,n),4&r&&ju(e,n);break;case 13:Ku(e,n),4&r&&Hu(e,n),64&r&&null!==(e=n.memoizedState)&&null!==(e=e.dehydrated)&&function(e,t){var n=e.ownerDocument;if("$~"===e.data)e._reactRetry=t;else if("$?"!==e.data||"loading"!==n.readyState)t();else{var r=function(){t(),n.removeEventListener("DOMContentLoaded",r)};n.addEventListener("DOMContentLoaded",r),e._reactRetry=r}}(e,n=_c.bind(null,n));break;case 22:if(!(r=null!==n.memoizedState||Nu)){t=null!==t&&null!==t.memoizedState||Tu,l=Nu;var a=Tu;Nu=r,(Tu=t)&&!a?Gu(e,n,!!(8772&n.subtreeFlags)):Ku(e,n),Nu=l,Tu=a}break;case 30:break;default:Ku(e,n)}}function Ru(e){var t=e.alternate;null!==t&&(e.alternate=null,Ru(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&null!==(t=e.stateNode)&&Ye(t),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var Au=null,Mu=!1;function Iu(e,t,n){for(n=n.child;null!==n;)Uu(e,t,n),n=n.sibling}function Uu(e,t,n){if(ve&&"function"==typeof ve.onCommitFiberUnmount)try{ve.onCommitFiberUnmount(ye,n)}catch(a){}switch(n.tag){case 26:Tu||wu(n,t),Iu(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&(n=n.stateNode).parentNode.removeChild(n);break;case 27:Tu||wu(n,t);var r=Au,l=Mu;_f(n.type)&&(Au=n.stateNode,Mu=!1),Iu(e,t,n),Uf(n.stateNode),Au=r,Mu=l;break;case 5:Tu||wu(n,t);case 6:if(r=Au,l=Mu,Au=null,Iu(e,t,n),Mu=l,null!==(Au=r))if(Mu)try{(9===Au.nodeType?Au.body:"HTML"===Au.nodeName?Au.ownerDocument.body:Au).removeChild(n.stateNode)}catch(o){Ec(n,t,o)}else try{Au.removeChild(n.stateNode)}catch(o){Ec(n,t,o)}break;case 18:null!==Au&&(Mu?(Pf(9===(e=Au).nodeType?e.body:"HTML"===e.nodeName?e.ownerDocument.body:e,n.stateNode),Vd(e)):Pf(Au,n.stateNode));break;case 4:r=Au,l=Mu,Au=n.stateNode.containerInfo,Mu=!0,Iu(e,t,n),Au=r,Mu=l;break;case 0:case 11:case 14:case 15:yu(2,n,t),Tu||yu(4,n,t),Iu(e,t,n);break;case 1:Tu||(wu(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount&&bu(n,t,r)),Iu(e,t,n);break;case 21:Iu(e,t,n);break;case 22:Tu=(r=Tu)||null!==n.memoizedState,Iu(e,t,n),Tu=r;break;default:Iu(e,t,n)}}function ju(e,t){if(null===t.memoizedState&&null!==(e=t.alternate)&&null!==(e=e.memoizedState)){e=e.dehydrated;try{Vd(e)}catch(n){Ec(t,t.return,n)}}}function Hu(e,t){if(null===t.memoizedState&&null!==(e=t.alternate)&&null!==(e=e.memoizedState)&&null!==(e=e.dehydrated))try{Vd(e)}catch(n){Ec(t,t.return,n)}}function $u(e,t){var n=function(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return null===t&&(t=e.stateNode=new Ou),t;case 22:return null===(t=(e=e.stateNode)._retryCache)&&(t=e._retryCache=new Ou),t;default:throw Error(i(435,e.tag))}}(e);t.forEach(function(t){if(!n.has(t)){n.add(t);var r=Pc.bind(null,e,t);t.then(r,r)}})}function Vu(e,t){var n=t.deletions;if(null!==n)for(var r=0;r title"))),pf(a,r,n),a[He]=e,et(a),r=a;break e;case"link":var o=rd("link","href",l).get(r+(n.href||""));if(o)for(var u=0;ui)break;var c=u.transferSize,f=u.initiatorType;c&&mf(f)&&(o+=c*((u=u.responseEnd)od?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(l)}}:null}(f,m)))return js=a,e.cancelPendingCommit=m(hc.bind(null,e,t,a,n,r,l,o,i,u,c,f,null,d,p)),void Zs(e,a,o,!s)}hc(e,t,a,n,r,l,o,i,u)}function Xs(e){for(var t=e;;){var n=t.tag;if((0===n||11===n||15===n)&&16384&t.flags&&null!==(n=t.updateQueue)&&null!==(n=n.stores))for(var r=0;rg&&(o=g,g=h,h=o);var y=tr(i,h),v=tr(i,g);if(y&&v&&(1!==p.rangeCount||p.anchorNode!==y.node||p.anchorOffset!==y.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var b=f.createRange();b.setStart(y.node,y.offset),p.removeAllRanges(),h>g?(p.addRange(b),p.extend(v.node,v.offset)):(b.setEnd(v.node,v.offset),p.addRange(b))}}}}for(f=[],p=i;p=p.parentNode;)1===p.nodeType&&f.push({element:p,left:p.scrollLeft,top:p.scrollTop});for("function"==typeof i.focus&&i.focus(),i=0;in?32:n,F.T=null,n=$s,$s=null;var a=Is,o=js;if(Ms=0,Us=Is=null,js=0,6&ps)throw Error(i(331));var u=ps;if(ps|=4,us(a.current),es(a,a.current,o,n),ps=u,Ac(0,!1),ve&&"function"==typeof ve.onPostCommitFiberRoot)try{ve.onPostCommitFiberRoot(ye,a)}catch(s){}return!0}finally{R.p=l,F.T=r,bc(e,t)}}function Sc(e,t,n){t=Kr(n,t),null!==(e=ba(e,t=Ni(e.stateNode,t,2),2))&&(Oe(e,2),Rc(e))}function Ec(e,t,n){if(3===e.tag)Sc(e,e,n);else for(;null!==t;){if(3===t.tag){Sc(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===As||!As.has(r))){e=Kr(n,e),null!==(r=ba(t,n=Ti(2),2))&&(Li(n,r,t,e),Oe(r,2),Rc(r));break}}t=t.return}}function Cc(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new ds;var l=new Set;r.set(t,l)}else void 0===(l=r.get(t))&&(l=new Set,r.set(t,l));l.has(n)||(ws=!0,l.add(n),e=xc.bind(null,e,t,n),t.then(e,e))}function xc(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,ms===e&&(gs&n)===n&&(4===Es||3===Es&&(62914560&gs)===gs&&300>ue()-Os?!(2&ps)&&tc(e,0):zs|=n,Ps===gs&&(Ps=0)),Rc(e)}function zc(e,t){0===t&&(t=Te()),null!==(e=Dr(e,t))&&(Oe(e,t),Rc(e))}function _c(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),zc(e,n)}function Pc(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,l=e.memoizedState;null!==l&&(n=l.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}null!==r&&r.delete(t),zc(e,n)}var Nc=null,Tc=null,Lc=!1,Oc=!1,Dc=!1,Fc=0;function Rc(e){e!==Tc&&null===e.next&&(null===Tc?Nc=Tc=e:Tc=Tc.next=e),Oc=!0,Lc||(Lc=!0,xf(function(){6&ps?le(ce,Mc):Ic()}))}function Ac(e,t){if(!Dc&&Oc){Dc=!0;do{for(var n=!1,r=Nc;null!==r;){if(!t)if(0!==e){var l=r.pendingLanes;if(0===l)var a=0;else{var o=r.suspendedLanes,i=r.pingedLanes;a=(1<<31-ke(42|e)+1)-1,a=201326741&(a&=l&~(o&~i))?201326741&a|1:a?2|a:0}0!==a&&(n=!0,Hc(r,a))}else a=gs,!(3&(a=_e(r,r===ms?a:0,null!==r.cancelPendingCommit||-1!==r.timeoutHandle)))||Pe(r,a)||(n=!0,Hc(r,a));r=r.next}}while(n);Dc=!1}}function Mc(){Ic()}function Ic(){Oc=Lc=!1;var e,t=0;0!==Fc&&((e=window.event)&&"popstate"===e.type?e!==wf&&(wf=e,1):(wf=null,0))&&(t=Fc);for(var n=ue(),r=null,l=Nc;null!==l;){var a=l.next,o=Uc(l,n);0===o?(l.next=null,null===r?Nc=a:r.next=a,null===a&&(Tc=r)):(r=l,(0!==t||3&o)&&(Oc=!0)),l=a}0!==Ms&&5!==Ms||Ac(t,!1),0!==Fc&&(Fc=0)}function Uc(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,l=e.expirationTimes,a=-62914561&e.pendingLanes;0 title"):null)}function ad(e){return!!("stylesheet"!==e.type||3&e.state.loading)}var od=0;function id(){if(this.count--,0===this.count&&(0===this.imgCount||!this.waitingForImages))if(this.stylesheets)sd(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}var ud=null;function sd(e,t){e.stylesheets=null,null!==e.unsuspend&&(e.count++,ud=new Map,t.forEach(cd,e),ud=null,id.call(e))}function cd(e,t){if(!(4&t.state.loading)){var n=ud.get(e);if(n)var r=n.get(null);else{n=new Map,ud.set(e,n);for(var l=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;a{!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),t.exports=i()}),s=e(e=>{var t=Symbol.for("react.transitional.element"),n=Symbol.for("react.fragment");function r(e,n,r){var l=null;if(void 0!==r&&(l=""+r),void 0!==n.key&&(l=""+n.key),"key"in n)for(var a in r={},n)"key"!==a&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:l,ref:void 0!==n?n:null,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r}),c=e((e,t)=>{t.exports=s()});export{u as n,n as r,c as t}; \ No newline at end of file +import{t as e}from"./rolldown-runtime-BztV3taV.js?t=1781143364605";var t=e(e=>{var t=Symbol.for("react.transitional.element"),n=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),l=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),o=Symbol.for("react.consumer"),i=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),s=Symbol.for("react.suspense"),c=Symbol.for("react.memo"),f=Symbol.for("react.lazy"),d=Symbol.for("react.activity"),p=Symbol.iterator,m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h=Object.assign,g={};function y(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||m}function v(){}function b(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||m}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=y.prototype;var k=b.prototype=new v;k.constructor=b,h(k,y.prototype),k.isPureReactComponent=!0;var w=Array.isArray;function S(){}var E={H:null,A:null,T:null,S:null},C=Object.prototype.hasOwnProperty;function x(e,n,r){var l=r.ref;return{$$typeof:t,type:e,key:n,ref:void 0!==l?l:null,props:r}}function z(e){return"object"==typeof e&&null!==e&&e.$$typeof===t}var _=/\/+/g;function P(e,t){return"object"==typeof e&&null!==e&&null!=e.key?(n=""+e.key,r={"=":"=0",":":"=2"},"$"+n.replace(/[=:]/g,function(e){return r[e]})):t.toString(36);var n,r}function N(e,r,l,a,o){var i=typeof e;"undefined"!==i&&"boolean"!==i||(e=null);var u,s,c=!1;if(null===e)c=!0;else switch(i){case"bigint":case"string":case"number":c=!0;break;case"object":switch(e.$$typeof){case t:case n:c=!0;break;case f:return N((c=e._init)(e._payload),r,l,a,o)}}if(c)return o=o(e),c=""===a?"."+P(e,0):a,w(o)?(l="",null!=c&&(l=c.replace(_,"$&/")+"/"),N(o,r,l,"",function(e){return e})):null!=o&&(z(o)&&(u=o,s=l+(null==o.key||e&&e.key===o.key?"":(""+o.key).replace(_,"$&/")+"/")+c,o=x(u.type,s,u.props)),r.push(o)),1;c=0;var d,m=""===a?".":a+":";if(w(e))for(var h=0;h{n.exports=t()}),r=e(e=>{function t(e,t){var n=e.length;e.push(t);e:for(;0>>1,a=e[r];if(!(0>>1;rl(u,n))sl(c,u)?(e[r]=c,e[s]=n,r=s):(e[r]=u,e[i]=n,r=i);else{if(!(sl(c,n)))break e;e[r]=c,e[s]=n,r=s}}}return t}function l(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(e.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,i=o.now();e.unstable_now=function(){return o.now()-i}}var u=[],s=[],c=1,f=null,d=3,p=!1,m=!1,h=!1,g=!1,y="function"==typeof setTimeout?setTimeout:null,v="function"==typeof clearTimeout?clearTimeout:null,b="undefined"!=typeof setImmediate?setImmediate:null;function k(e){for(var l=n(s);null!==l;){if(null===l.callback)r(s);else{if(!(l.startTime<=e))break;r(s),l.sortIndex=l.expirationTime,t(u,l)}l=n(s)}}function w(e){if(h=!1,k(e),!m)if(null!==n(u))m=!0,E||(E=!0,S());else{var t=n(s);null!==t&&L(w,t.startTime-e)}}var S,E=!1,C=-1,x=5,z=-1;function _(){return!(!g&&e.unstable_now()-zt&&_());){var o=f.callback;if("function"==typeof o){f.callback=null,d=f.priorityLevel;var i=o(f.expirationTime<=t);if(t=e.unstable_now(),"function"==typeof i){f.callback=i,k(t),l=!0;break t}f===n(u)&&r(u),k(t)}else r(u);f=n(u)}if(null!==f)l=!0;else{var c=n(s);null!==c&&L(w,c.startTime-t),l=!1}}break e}finally{f=null,d=a,p=!1}l=void 0}}finally{l?S():E=!1}}}if("function"==typeof b)S=function(){b(P)};else if("undefined"!=typeof MessageChannel){var N=new MessageChannel,T=N.port2;N.port1.onmessage=P,S=function(){T.postMessage(null)}}else S=function(){y(P,0)};function L(t,n){C=y(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(s,r),null===n(u)&&r===n(s)&&(h?(v(C),C=-1):h=!0,L(w,a-o))):(r.sortIndex=i,t(u,r),m||p||(m=!0,E||(E=!0,S()))),r},e.unstable_shouldYield=_,e.unstable_wrapCallback=function(e){var t=d;return function(){var n=d;d=t;try{return e.apply(this,arguments)}finally{d=n}}}}),l=e((e,t)=>{t.exports=r()}),a=e(e=>{var t=n();function r(e){var t="https://react.dev/errors/"+e;if(1{!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),t.exports=a()}),i=e(e=>{var t=l(),r=n(),a=o();function i(e){var t="https://react.dev/errors/"+e;if(1I||(e.current=M[I],M[I]=null,I--)}function H(e,t){I++,M[I]=e.current,e.current=t}var $,V,B=U(null),Q=U(null),W=U(null),q=U(null);function K(e,t){switch(H(W,t),H(Q,e),H(B,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?vf(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)e=bf(t=vf(t),e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}j(B),H(B,e)}function Y(){j(B),j(Q),j(W)}function G(e){null!==e.memoizedState&&H(q,e);var t=B.current,n=bf(t,e.type);t!==n&&(H(Q,e),H(B,n))}function X(e){Q.current===e&&(j(B),j(Q)),q.current===e&&(j(q),fd._currentValue=A)}function Z(e){if(void 0===$)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);$=t&&t[1]||"",V=-1)":-1--l||u[r]!==s[l]){var c="\n"+u[r].replace(" at new "," at ");return e.displayName&&c.includes("")&&(c=c.replace("",e.displayName)),c}}while(1<=r&&0<=l);break}}}finally{J=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?Z(n):""}function te(e,t){switch(e.tag){case 26:case 27:case 5:return Z(e.type);case 16:return Z("Lazy");case 13:return e.child!==t&&null!==t?Z("Suspense Fallback"):Z("Suspense");case 19:return Z("SuspenseList");case 0:case 15:return ee(e.type,!1);case 11:return ee(e.type.render,!1);case 1:return ee(e.type,!0);case 31:return Z("Activity");default:return""}}function ne(e){try{var t="",n=null;do{t+=te(e,n),n=e,e=e.return}while(e);return t}catch(r){return"\nError generating stack: "+r.message+"\n"+r.stack}}var re=Object.prototype.hasOwnProperty,le=t.unstable_scheduleCallback,ae=t.unstable_cancelCallback,oe=t.unstable_shouldYield,ie=t.unstable_requestPaint,ue=t.unstable_now,se=t.unstable_getCurrentPriorityLevel,ce=t.unstable_ImmediatePriority,fe=t.unstable_UserBlockingPriority,de=t.unstable_NormalPriority,pe=t.unstable_LowPriority,me=t.unstable_IdlePriority,he=t.log,ge=t.unstable_setDisableYieldValue,ye=null,ve=null;function be(e){if("function"==typeof he&&ge(e),ve&&"function"==typeof ve.setStrictMode)try{ve.setStrictMode(ye,e)}catch(t){}}var ke=Math.clz32?Math.clz32:function(e){return 0==(e>>>=0)?32:31-(we(e)/Se|0)|0},we=Math.log,Se=Math.LN2,Ee=256,Ce=262144,xe=4194304;function ze(e){var t=42&e;if(0!==t)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return 261888&e;case 262144:case 524288:case 1048576:case 2097152:return 3932160&e;case 4194304:case 8388608:case 16777216:case 33554432:return 62914560&e;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function _e(e,t,n){var r=e.pendingLanes;if(0===r)return 0;var l=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var i=134217727&r;return 0!==i?0!==(r=i&~a)?l=ze(r):0!==(o&=i)?l=ze(o):n||0!==(n=i&~e)&&(l=ze(n)):0!==(i=r&~a)?l=ze(i):0!==o?l=ze(o):n||0!==(n=r&~e)&&(l=ze(n)),0===l?0:0!==t&&t!==l&&0===(t&a)&&((a=l&-l)>=(n=t&-t)||32===a&&4194048&n)?t:l}function Pe(e,t){return 0===(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)}function Ne(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function Te(){var e=xe;return!(62914560&(xe<<=1))&&(xe=4194304),e}function Le(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Oe(e,t){e.pendingLanes|=t,268435456!==t&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function De(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-ke(t);e.entangledLanes|=t,e.entanglements[r]=1073741824|e.entanglements[r]|261930&n}function Fe(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-ke(n),l=1<=zn),Nn=String.fromCharCode(32),Tn=!1;function Ln(e,t){switch(e){case"keyup":return-1!==Cn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function On(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Dn=!1,Fn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Rn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Fn[e.type]:"textarea"===t}function An(e,t,n,r){Rt?At?At.push(r):At=[r]:Rt=r,0<(t=rf(t,"onChange")).length&&(n=new nn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Mn=null,In=null;function Un(e){Yc(e,0)}function jn(e){if(mt(Ze(e)))return e}function Hn(e,t){if("change"===e)return t}var $n=!1;if(Ht){var Vn;if(Ht){var Bn="oninput"in document;if(!Bn){var Qn=document.createElement("div");Qn.setAttribute("oninput","return;"),Bn="function"==typeof Qn.oninput}Vn=Bn}else Vn=!1;$n=Vn&&(!document.documentMode||9=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=er(r)}}function nr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?nr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function rr(e){for(var t=ht((e=null!=e&&null!=e.ownerDocument&&null!=e.ownerDocument.defaultView?e.ownerDocument.defaultView:window).document);t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=ht((e=t.contentWindow).document)}return t}function lr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var ar=Ht&&"documentMode"in document&&11>=document.documentMode,or=null,ir=null,ur=null,sr=!1;function cr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;sr||null==or||or!==ht(r)||(r="selectionStart"in(r=or)&&lr(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},ur&&Jn(ur,r)||(ur=r,0<(r=rf(ir,"onSelect")).length&&(t=new nn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=or)))}function fr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var dr={animationend:fr("Animation","AnimationEnd"),animationiteration:fr("Animation","AnimationIteration"),animationstart:fr("Animation","AnimationStart"),transitionrun:fr("Transition","TransitionRun"),transitionstart:fr("Transition","TransitionStart"),transitioncancel:fr("Transition","TransitionCancel"),transitionend:fr("Transition","TransitionEnd")},pr={},mr={};function hr(e){if(pr[e])return pr[e];if(!dr[e])return e;var t,n=dr[e];for(t in n)if(n.hasOwnProperty(t)&&t in mr)return pr[e]=n[t];return e}Ht&&(mr=document.createElement("div").style,"AnimationEvent"in window||(delete dr.animationend.animation,delete dr.animationiteration.animation,delete dr.animationstart.animation),"TransitionEvent"in window||delete dr.transitionend.transition);var gr=hr("animationend"),yr=hr("animationiteration"),vr=hr("animationstart"),br=hr("transitionrun"),kr=hr("transitionstart"),wr=hr("transitioncancel"),Sr=hr("transitionend"),Er=new Map,Cr="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function xr(e,t){Er.set(e,t),rt(t,[e])}Cr.push("scrollEnd");var zr="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof process&&"function"==typeof process.emit)return void process.emit("uncaughtException",e);console.error(e)},_r=[],Pr=0,Nr=0;function Tr(){for(var e=Pr,t=Nr=Pr=0;t>=o,l-=o,nl=1<<32-ke(t)+l|n<h?(g=f,f=null):g=f.sibling;var y=p(l,f,i[h],u);if(null===y){null===f&&(f=g);break}e&&f&&null===y.alternate&&t(l,f),o=a(y,o,h),null===c?s=y:c.sibling=y,c=y,f=g}if(h===i.length)return n(l,f),fl&&ll(l,h),s;if(null===f){for(;hg?(y=h,h=null):y=h.sibling;var b=p(l,h,v.value,s);if(null===b){null===h&&(h=y);break}e&&h&&null===b.alternate&&t(l,h),o=a(b,o,g),null===f?c=b:f.sibling=b,f=b,h=y}if(v.done)return n(l,h),fl&&ll(l,g),c;if(null===h){for(;!v.done;g++,v=u.next())null!==(v=d(l,v.value,s))&&(o=a(v,o,g),null===f?c=v:f.sibling=v,f=v);return fl&&ll(l,g),c}for(h=r(h);!v.done;g++,v=u.next())null!==(v=m(h,l,g,v.value,s))&&(e&&null!==v.alternate&&h.delete(null===v.key?g:v.key),o=a(v,o,g),null===f?c=v:f.sibling=v,f=v);return e&&h.forEach(function(e){return t(l,e)}),fl&&ll(l,g),c}(u,s,c=b.call(c),f)}if("function"==typeof c.then)return v(u,s,sa(c),f);if(c.$$typeof===w)return v(u,s,Dl(u,c),f);fa(u,c)}return"string"==typeof c&&""!==c||"number"==typeof c||"bigint"==typeof c?(c=""+c,null!==s&&6===s.tag?(n(u,s.sibling),(f=l(s,c)).return=u,u=f):(n(u,s),(f=Br(c,u.mode,f)).return=u,u=f),o(u)):n(u,s)}return function(e,t,n,r){try{ua=0;var l=v(e,t,n,r);return ia=null,l}catch(o){if(o===Xl||o===Jl)throw o;var a=Ir(29,o,null,e.mode);return a.lanes=r,a.return=e,a}}}var pa=da(!0),ma=da(!1),ha=!1;function ga(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function ya(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function va(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function ba(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,2&ps){var l=r.pending;return null===l?t.next=t:(t.next=l.next,l.next=t),r.pending=t,t=Rr(e),Fr(e,null,n),t}return Lr(e,r,t,n),Rr(e)}function ka(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,4194048&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,Fe(e,n)}}function wa(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var l=null,a=null;if(null!==(n=n.firstBaseUpdate)){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};null===a?l=a=o:a=a.next=o,n=n.next}while(null!==n);null===a?l=a=t:a=a.next=t}else l=a=t;return n={baseState:r.baseState,firstBaseUpdate:l,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Sa=!1;function Ea(){if(Sa&&null!==Bl)throw Bl}function Ca(e,t,n,r){Sa=!1;var l=e.updateQueue;ha=!1;var a=l.firstBaseUpdate,o=l.lastBaseUpdate,i=l.shared.pending;if(null!==i){l.shared.pending=null;var u=i,s=u.next;u.next=null,null===o?a=s:o.next=s,o=u;var c=e.alternate;null!==c&&(i=(c=c.updateQueue).lastBaseUpdate)!==o&&(null===i?c.firstBaseUpdate=s:i.next=s,c.lastBaseUpdate=u)}if(null!==a){var f=l.baseState;for(o=0,c=s=u=null,i=a;;){var d=-536870913&i.lane,m=d!==i.lane;if(m?(gs&d)===d:(r&d)===d){0!==d&&d===Vl&&(Sa=!0),null!==c&&(c=c.next={lane:0,tag:i.tag,payload:i.payload,callback:null,next:null});e:{var h=e,g=i;d=t;var y=n;switch(g.tag){case 1:if("function"==typeof(h=g.payload)){f=h.call(y,f,d);break e}f=h;break e;case 3:h.flags=-65537&h.flags|128;case 0:if(null==(d="function"==typeof(h=g.payload)?h.call(y,f,d):h))break e;f=p({},f,d);break e;case 2:ha=!0}}null!==(d=i.callback)&&(e.flags|=64,m&&(e.flags|=8192),null===(m=l.callbacks)?l.callbacks=[d]:m.push(d))}else m={lane:d,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===c?(s=c=m,u=f):c=c.next=m,o|=d;if(null===(i=i.next)){if(null===(i=l.shared.pending))break;i=(m=i).next,m.next=null,l.lastBaseUpdate=m,l.shared.pending=null}}null===c&&(u=f),l.baseState=u,l.firstBaseUpdate=s,l.lastBaseUpdate=c,null===a&&(l.shared.lanes=0),Cs|=o,e.lanes=o,e.memoizedState=f}}function xa(e,t){if("function"!=typeof e)throw Error(i(191,e));e.call(t)}function za(e,t){var n=e.callbacks;if(null!==n)for(e.callbacks=null,e=0;ea?a:8;var o,i,u,s=F.T,c={};F.T=c,fi(e,!1,t,n);try{var f=l(),d=F.S;null!==d&&d(c,f),null!==f&&"object"==typeof f&&"function"==typeof f.then?ci(e,t,(o=r,i=[],u={status:"pending",value:null,reason:null,then:function(e){i.push(e)}},f.then(function(){u.status="fulfilled",u.value=o;for(var e=0;e<\/script>",a=a.removeChild(a.firstChild);break;case"select":a="string"==typeof r.is?o.createElement("select",{is:r.is}):o.createElement("select"),r.multiple?a.multiple=!0:r.size&&(a.size=r.size);break;default:a="string"==typeof r.is?o.createElement(l,{is:r.is}):o.createElement(l)}}a[He]=t,a[$e]=r;e:for(o=t.child;null!==o;){if(5===o.tag||6===o.tag)a.appendChild(o.stateNode);else if(4!==o.tag&&27!==o.tag&&null!==o.child){o.child.return=o,o=o.child;continue}if(o===t)break e;for(;null===o.sibling;){if(null===o.return||o.return===t)break e;o=o.return}o.sibling.return=o.return,o=o.sibling}t.stateNode=a;e:switch(pf(a,l,r),l){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}r&&iu(t)}}return du(t),uu(t,t.type,null===e||e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&null!=t.stateNode)e.memoizedProps!==r&&iu(t);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));if(e=W.current,vl(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,null!==(l=sl))switch(l.tag){case 27:case 5:r=l.memoizedProps}e[He]=t,(e=!!(e.nodeValue===n||null!==r&&!0===r.suppressHydrationWarning||cf(e.nodeValue,n)))||hl(t,!0)}else(e=yf(e).createTextNode(r))[He]=t,t.stateNode=e}return du(t),null;case 31:if(n=t.memoizedState,null===e||null!==e.memoizedState){if(r=vl(t),null!==n){if(null===e){if(!r)throw Error(i(318));if(!(e=null!==(e=t.memoizedState)?e.dehydrated:null))throw Error(i(557));e[He]=t}else bl(),!(128&t.flags)&&(t.memoizedState=null),t.flags|=4;du(t),e=!1}else n=kl(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return 256&t.flags?(Ia(t),t):(Ia(t),null);if(128&t.flags)throw Error(i(558))}return du(t),null;case 13:if(r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(l=vl(t),null!==r&&null!==r.dehydrated){if(null===e){if(!l)throw Error(i(318));if(!(l=null!==(l=t.memoizedState)?l.dehydrated:null))throw Error(i(317));l[He]=t}else bl(),!(128&t.flags)&&(t.memoizedState=null),t.flags|=4;du(t),l=!1}else l=kl(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=l),l=!0;if(!l)return 256&t.flags?(Ia(t),t):(Ia(t),null)}return Ia(t),128&t.flags?(t.lanes=n,t):(n=null!==r,e=null!==e&&null!==e.memoizedState,n&&(l=null,null!==(r=t.child).alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(l=r.alternate.memoizedState.cachePool.pool),a=null,null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(a=r.memoizedState.cachePool.pool),a!==l&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),cu(t,t.updateQueue),du(t),null);case 4:return Y(),null===e&&Jc(t.stateNode.containerInfo),du(t),null;case 10:return zl(t.type),du(t),null;case 19:if(j(Ua),null===(r=t.memoizedState))return du(t),null;if(l=!!(128&t.flags),null===(a=r.rendering))if(l)fu(r,!1);else{if(0!==Es||null!==e&&128&e.flags)for(e=t.child;null!==e;){if(null!==(a=ja(e))){for(t.flags|=128,fu(r,!1),e=a.updateQueue,t.updateQueue=e,cu(t,e),t.subtreeFlags=0,e=n,n=t.child;null!==n;)Hr(n,e),n=n.sibling;return H(Ua,1&Ua.current|2),fl&&ll(t,r.treeForkCount),t.child}e=e.sibling}null!==r.tail&&ue()>Fs&&(t.flags|=128,l=!0,fu(r,!1),t.lanes=4194304)}else{if(!l)if(null!==(e=ja(a))){if(t.flags|=128,l=!0,e=e.updateQueue,t.updateQueue=e,cu(t,e),fu(r,!0),null===r.tail&&"hidden"===r.tailMode&&!a.alternate&&!fl)return du(t),null}else 2*ue()-r.renderingStartTime>Fs&&536870912!==n&&(t.flags|=128,l=!0,fu(r,!1),t.lanes=4194304);r.isBackwards?(a.sibling=t.child,t.child=a):(null!==(e=r.last)?e.sibling=a:t.child=a,r.last=a)}return null!==r.tail?(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=ue(),e.sibling=null,n=Ua.current,H(Ua,l?1&n|2:1&n),fl&&ll(t,r.treeForkCount),e):(du(t),null);case 22:case 23:return Ia(t),La(),r=null!==t.memoizedState,null!==e?null!==e.memoizedState!==r&&(t.flags|=8192):r&&(t.flags|=8192),r?!!(536870912&n)&&!(128&t.flags)&&(du(t),6&t.subtreeFlags&&(t.flags|=8192)):du(t),null!==(n=t.updateQueue)&&cu(t,n.retryQueue),n=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),r=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),null!==e&&j(ql),null;case 24:return n=null,null!==e&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),zl(Il),du(t),null;case 25:case 30:return null}throw Error(i(156,t.tag))}function mu(e,t){switch(il(t),t.tag){case 1:return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return zl(Il),Y(),65536&(e=t.flags)&&!(128&e)?(t.flags=-65537&e|128,t):null;case 26:case 27:case 5:return X(t),null;case 31:if(null!==t.memoizedState){if(Ia(t),null===t.alternate)throw Error(i(340));bl()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 13:if(Ia(t),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(i(340));bl()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return j(Ua),null;case 4:return Y(),null;case 10:return zl(t.type),null;case 22:case 23:return Ia(t),La(),null!==e&&j(ql),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 24:return zl(Il),null;default:return null}}function hu(e,t){switch(il(t),t.tag){case 3:zl(Il),Y();break;case 26:case 27:case 5:X(t);break;case 4:Y();break;case 31:null!==t.memoizedState&&Ia(t);break;case 13:Ia(t);break;case 19:j(Ua);break;case 10:zl(t.type);break;case 22:case 23:Ia(t),La(),null!==e&&j(ql);break;case 24:zl(Il)}}function gu(e,t){try{var n=t.updateQueue,r=null!==n?n.lastEffect:null;if(null!==r){var l=r.next;n=l;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==l)}}catch(i){Ec(t,t.return,i)}}function yu(e,t,n){try{var r=t.updateQueue,l=null!==r?r.lastEffect:null;if(null!==l){var a=l.next;r=a;do{if((r.tag&e)===e){var o=r.inst,i=o.destroy;if(void 0!==i){o.destroy=void 0,l=t;var u=n,s=i;try{s()}catch(c){Ec(l,u,c)}}}r=r.next}while(r!==a)}}catch(c){Ec(t,t.return,c)}}function vu(e){var t=e.updateQueue;if(null!==t){var n=e.stateNode;try{za(t,n)}catch(r){Ec(e,e.return,r)}}}function bu(e,t,n){n.props=Ei(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(r){Ec(e,t,r)}}function ku(e,t){try{var n=e.ref;if(null!==n){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;default:r=e.stateNode}"function"==typeof n?e.refCleanup=n(r):n.current=r}}catch(l){Ec(e,t,l)}}function wu(e,t){var n=e.ref,r=e.refCleanup;if(null!==n)if("function"==typeof r)try{r()}catch(l){Ec(e,t,l)}finally{e.refCleanup=null,null!=(e=e.alternate)&&(e.refCleanup=null)}else if("function"==typeof n)try{n(null)}catch(a){Ec(e,t,a)}else n.current=null}function Su(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&r.focus();break e;case"img":n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(l){Ec(e,e.return,l)}}function Eu(e,t,n){try{var r=e.stateNode;!function(e,t,n,r){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var l=null,a=null,o=null,u=null,s=null,c=null,f=null;for(m in n){var d=n[m];if(n.hasOwnProperty(m)&&null!=d)switch(m){case"checked":case"value":break;case"defaultValue":s=d;default:r.hasOwnProperty(m)||ff(e,t,m,null,r,d)}}for(var p in r){var m=r[p];if(d=n[p],r.hasOwnProperty(p)&&(null!=m||null!=d))switch(p){case"type":a=m;break;case"name":l=m;break;case"checked":c=m;break;case"defaultChecked":f=m;break;case"value":o=m;break;case"defaultValue":u=m;break;case"children":case"dangerouslySetInnerHTML":if(null!=m)throw Error(i(137,t));break;default:m!==d&&ff(e,t,p,m,r,d)}}return void vt(e,o,u,s,c,f,a,l);case"select":for(a in m=o=u=p=null,n)if(s=n[a],n.hasOwnProperty(a)&&null!=s)switch(a){case"value":break;case"multiple":m=s;default:r.hasOwnProperty(a)||ff(e,t,a,null,r,s)}for(l in r)if(a=r[l],s=n[l],r.hasOwnProperty(l)&&(null!=a||null!=s))switch(l){case"value":p=a;break;case"defaultValue":u=a;break;case"multiple":o=a;default:a!==s&&ff(e,t,l,a,r,s)}return t=u,n=o,r=m,void(null!=p?wt(e,!!n,p,!1):!!r!=!!n&&(null!=t?wt(e,!!n,t,!0):wt(e,!!n,n?[]:"",!1)));case"textarea":for(u in m=p=null,n)if(l=n[u],n.hasOwnProperty(u)&&null!=l&&!r.hasOwnProperty(u))switch(u){case"value":case"children":break;default:ff(e,t,u,null,r,l)}for(o in r)if(l=r[o],a=n[o],r.hasOwnProperty(o)&&(null!=l||null!=a))switch(o){case"value":p=l;break;case"defaultValue":m=l;break;case"children":break;case"dangerouslySetInnerHTML":if(null!=l)throw Error(i(91));break;default:l!==a&&ff(e,t,o,l,r,a)}return void St(e,p,m);case"option":for(var h in n)p=n[h],n.hasOwnProperty(h)&&null!=p&&!r.hasOwnProperty(h)&&("selected"===h?e.selected=!1:ff(e,t,h,null,r,p));for(s in r)p=r[s],m=n[s],!r.hasOwnProperty(s)||p===m||null==p&&null==m||("selected"===s?e.selected=p&&"function"!=typeof p&&"symbol"!=typeof p:ff(e,t,s,p,r,m));return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var g in n)p=n[g],n.hasOwnProperty(g)&&null!=p&&!r.hasOwnProperty(g)&&ff(e,t,g,null,r,p);for(c in r)if(p=r[c],m=n[c],r.hasOwnProperty(c)&&p!==m&&(null!=p||null!=m))switch(c){case"children":case"dangerouslySetInnerHTML":if(null!=p)throw Error(i(137,t));break;default:ff(e,t,c,p,r,m)}return;default:if(Pt(t)){for(var y in n)p=n[y],n.hasOwnProperty(y)&&void 0!==p&&!r.hasOwnProperty(y)&&df(e,t,y,void 0,r,p);for(f in r)p=r[f],m=n[f],!r.hasOwnProperty(f)||p===m||void 0===p&&void 0===m||df(e,t,f,p,r,m);return}}for(var v in n)p=n[v],n.hasOwnProperty(v)&&null!=p&&!r.hasOwnProperty(v)&&ff(e,t,v,null,r,p);for(d in r)p=r[d],m=n[d],!r.hasOwnProperty(d)||p===m||null==p&&null==m||ff(e,t,d,p,r,m)}(r,e.type,n,t),r[$e]=t}catch(l){Ec(e,e.return,l)}}function Cu(e){return 5===e.tag||3===e.tag||26===e.tag||27===e.tag&&_f(e.type)||4===e.tag}function xu(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||Cu(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(27===e.tag&&_f(e.type))continue e;if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function zu(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?(9===n.nodeType?n.body:"HTML"===n.nodeName?n.ownerDocument.body:n).insertBefore(e,t):((t=9===n.nodeType?n.body:"HTML"===n.nodeName?n.ownerDocument.body:n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Ot));else if(4!==r&&(27===r&&_f(e.type)&&(n=e.stateNode,t=null),null!==(e=e.child)))for(zu(e,t,n),e=e.sibling;null!==e;)zu(e,t,n),e=e.sibling}function _u(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&(27===r&&_f(e.type)&&(n=e.stateNode),null!==(e=e.child)))for(_u(e,t,n),e=e.sibling;null!==e;)_u(e,t,n),e=e.sibling}function Pu(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,l=t.attributes;l.length;)t.removeAttributeNode(l[0]);pf(t,r,n),t[He]=e,t[$e]=n}catch(a){Ec(e,e.return,a)}}var Nu=!1,Tu=!1,Lu=!1,Ou="function"==typeof WeakSet?WeakSet:Set,Du=null;function Fu(e,t,n){var r=n.flags;switch(n.tag){case 0:case 11:case 15:Ku(e,n),4&r&&gu(5,n);break;case 1:if(Ku(e,n),4&r)if(e=n.stateNode,null===t)try{e.componentDidMount()}catch(o){Ec(n,n.return,o)}else{var l=Ei(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(l,t,e.__reactInternalSnapshotBeforeUpdate)}catch(i){Ec(n,n.return,i)}}64&r&&vu(n),512&r&&ku(n,n.return);break;case 3:if(Ku(e,n),64&r&&null!==(e=n.updateQueue)){if(t=null,null!==n.child)switch(n.child.tag){case 27:case 5:case 1:t=n.child.stateNode}try{za(e,t)}catch(o){Ec(n,n.return,o)}}break;case 27:null===t&&4&r&&Pu(n);case 26:case 5:Ku(e,n),null===t&&4&r&&Su(n),512&r&&ku(n,n.return);break;case 12:Ku(e,n);break;case 31:Ku(e,n),4&r&&ju(e,n);break;case 13:Ku(e,n),4&r&&Hu(e,n),64&r&&null!==(e=n.memoizedState)&&null!==(e=e.dehydrated)&&function(e,t){var n=e.ownerDocument;if("$~"===e.data)e._reactRetry=t;else if("$?"!==e.data||"loading"!==n.readyState)t();else{var r=function(){t(),n.removeEventListener("DOMContentLoaded",r)};n.addEventListener("DOMContentLoaded",r),e._reactRetry=r}}(e,n=_c.bind(null,n));break;case 22:if(!(r=null!==n.memoizedState||Nu)){t=null!==t&&null!==t.memoizedState||Tu,l=Nu;var a=Tu;Nu=r,(Tu=t)&&!a?Gu(e,n,!!(8772&n.subtreeFlags)):Ku(e,n),Nu=l,Tu=a}break;case 30:break;default:Ku(e,n)}}function Ru(e){var t=e.alternate;null!==t&&(e.alternate=null,Ru(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&null!==(t=e.stateNode)&&Ye(t),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var Au=null,Mu=!1;function Iu(e,t,n){for(n=n.child;null!==n;)Uu(e,t,n),n=n.sibling}function Uu(e,t,n){if(ve&&"function"==typeof ve.onCommitFiberUnmount)try{ve.onCommitFiberUnmount(ye,n)}catch(a){}switch(n.tag){case 26:Tu||wu(n,t),Iu(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&(n=n.stateNode).parentNode.removeChild(n);break;case 27:Tu||wu(n,t);var r=Au,l=Mu;_f(n.type)&&(Au=n.stateNode,Mu=!1),Iu(e,t,n),Uf(n.stateNode),Au=r,Mu=l;break;case 5:Tu||wu(n,t);case 6:if(r=Au,l=Mu,Au=null,Iu(e,t,n),Mu=l,null!==(Au=r))if(Mu)try{(9===Au.nodeType?Au.body:"HTML"===Au.nodeName?Au.ownerDocument.body:Au).removeChild(n.stateNode)}catch(o){Ec(n,t,o)}else try{Au.removeChild(n.stateNode)}catch(o){Ec(n,t,o)}break;case 18:null!==Au&&(Mu?(Pf(9===(e=Au).nodeType?e.body:"HTML"===e.nodeName?e.ownerDocument.body:e,n.stateNode),Vd(e)):Pf(Au,n.stateNode));break;case 4:r=Au,l=Mu,Au=n.stateNode.containerInfo,Mu=!0,Iu(e,t,n),Au=r,Mu=l;break;case 0:case 11:case 14:case 15:yu(2,n,t),Tu||yu(4,n,t),Iu(e,t,n);break;case 1:Tu||(wu(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount&&bu(n,t,r)),Iu(e,t,n);break;case 21:Iu(e,t,n);break;case 22:Tu=(r=Tu)||null!==n.memoizedState,Iu(e,t,n),Tu=r;break;default:Iu(e,t,n)}}function ju(e,t){if(null===t.memoizedState&&null!==(e=t.alternate)&&null!==(e=e.memoizedState)){e=e.dehydrated;try{Vd(e)}catch(n){Ec(t,t.return,n)}}}function Hu(e,t){if(null===t.memoizedState&&null!==(e=t.alternate)&&null!==(e=e.memoizedState)&&null!==(e=e.dehydrated))try{Vd(e)}catch(n){Ec(t,t.return,n)}}function $u(e,t){var n=function(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return null===t&&(t=e.stateNode=new Ou),t;case 22:return null===(t=(e=e.stateNode)._retryCache)&&(t=e._retryCache=new Ou),t;default:throw Error(i(435,e.tag))}}(e);t.forEach(function(t){if(!n.has(t)){n.add(t);var r=Pc.bind(null,e,t);t.then(r,r)}})}function Vu(e,t){var n=t.deletions;if(null!==n)for(var r=0;r title"))),pf(a,r,n),a[He]=e,et(a),r=a;break e;case"link":var o=rd("link","href",l).get(r+(n.href||""));if(o)for(var u=0;ui)break;var c=u.transferSize,f=u.initiatorType;c&&mf(f)&&(o+=c*((u=u.responseEnd)od?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(l)}}:null}(f,m)))return js=a,e.cancelPendingCommit=m(hc.bind(null,e,t,a,n,r,l,o,i,u,c,f,null,d,p)),void Zs(e,a,o,!s)}hc(e,t,a,n,r,l,o,i,u)}function Xs(e){for(var t=e;;){var n=t.tag;if((0===n||11===n||15===n)&&16384&t.flags&&null!==(n=t.updateQueue)&&null!==(n=n.stores))for(var r=0;rg&&(o=g,g=h,h=o);var y=tr(i,h),v=tr(i,g);if(y&&v&&(1!==p.rangeCount||p.anchorNode!==y.node||p.anchorOffset!==y.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var b=f.createRange();b.setStart(y.node,y.offset),p.removeAllRanges(),h>g?(p.addRange(b),p.extend(v.node,v.offset)):(b.setEnd(v.node,v.offset),p.addRange(b))}}}}for(f=[],p=i;p=p.parentNode;)1===p.nodeType&&f.push({element:p,left:p.scrollLeft,top:p.scrollTop});for("function"==typeof i.focus&&i.focus(),i=0;in?32:n,F.T=null,n=$s,$s=null;var a=Is,o=js;if(Ms=0,Us=Is=null,js=0,6&ps)throw Error(i(331));var u=ps;if(ps|=4,us(a.current),es(a,a.current,o,n),ps=u,Ac(0,!1),ve&&"function"==typeof ve.onPostCommitFiberRoot)try{ve.onPostCommitFiberRoot(ye,a)}catch(s){}return!0}finally{R.p=l,F.T=r,bc(e,t)}}function Sc(e,t,n){t=Kr(n,t),null!==(e=ba(e,t=Ni(e.stateNode,t,2),2))&&(Oe(e,2),Rc(e))}function Ec(e,t,n){if(3===e.tag)Sc(e,e,n);else for(;null!==t;){if(3===t.tag){Sc(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===As||!As.has(r))){e=Kr(n,e),null!==(r=ba(t,n=Ti(2),2))&&(Li(n,r,t,e),Oe(r,2),Rc(r));break}}t=t.return}}function Cc(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new ds;var l=new Set;r.set(t,l)}else void 0===(l=r.get(t))&&(l=new Set,r.set(t,l));l.has(n)||(ws=!0,l.add(n),e=xc.bind(null,e,t,n),t.then(e,e))}function xc(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,ms===e&&(gs&n)===n&&(4===Es||3===Es&&(62914560&gs)===gs&&300>ue()-Os?!(2&ps)&&tc(e,0):zs|=n,Ps===gs&&(Ps=0)),Rc(e)}function zc(e,t){0===t&&(t=Te()),null!==(e=Dr(e,t))&&(Oe(e,t),Rc(e))}function _c(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),zc(e,n)}function Pc(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,l=e.memoizedState;null!==l&&(n=l.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}null!==r&&r.delete(t),zc(e,n)}var Nc=null,Tc=null,Lc=!1,Oc=!1,Dc=!1,Fc=0;function Rc(e){e!==Tc&&null===e.next&&(null===Tc?Nc=Tc=e:Tc=Tc.next=e),Oc=!0,Lc||(Lc=!0,xf(function(){6&ps?le(ce,Mc):Ic()}))}function Ac(e,t){if(!Dc&&Oc){Dc=!0;do{for(var n=!1,r=Nc;null!==r;){if(!t)if(0!==e){var l=r.pendingLanes;if(0===l)var a=0;else{var o=r.suspendedLanes,i=r.pingedLanes;a=(1<<31-ke(42|e)+1)-1,a=201326741&(a&=l&~(o&~i))?201326741&a|1:a?2|a:0}0!==a&&(n=!0,Hc(r,a))}else a=gs,!(3&(a=_e(r,r===ms?a:0,null!==r.cancelPendingCommit||-1!==r.timeoutHandle)))||Pe(r,a)||(n=!0,Hc(r,a));r=r.next}}while(n);Dc=!1}}function Mc(){Ic()}function Ic(){Oc=Lc=!1;var e,t=0;0!==Fc&&((e=window.event)&&"popstate"===e.type?e!==wf&&(wf=e,1):(wf=null,0))&&(t=Fc);for(var n=ue(),r=null,l=Nc;null!==l;){var a=l.next,o=Uc(l,n);0===o?(l.next=null,null===r?Nc=a:r.next=a,null===a&&(Tc=r)):(r=l,(0!==t||3&o)&&(Oc=!0)),l=a}0!==Ms&&5!==Ms||Ac(t,!1),0!==Fc&&(Fc=0)}function Uc(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,l=e.expirationTimes,a=-62914561&e.pendingLanes;0 title"):null)}function ad(e){return!!("stylesheet"!==e.type||3&e.state.loading)}var od=0;function id(){if(this.count--,0===this.count&&(0===this.imgCount||!this.waitingForImages))if(this.stylesheets)sd(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}var ud=null;function sd(e,t){e.stylesheets=null,null!==e.unsuspend&&(e.count++,ud=new Map,t.forEach(cd,e),ud=null,id.call(e))}function cd(e,t){if(!(4&t.state.loading)){var n=ud.get(e);if(n)var r=n.get(null);else{n=new Map,ud.set(e,n);for(var l=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;a{!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),t.exports=i()}),s=e(e=>{var t=Symbol.for("react.transitional.element"),n=Symbol.for("react.fragment");function r(e,n,r){var l=null;if(void 0!==r&&(l=""+r),void 0!==n.key&&(l=""+n.key),"key"in n)for(var a in r={},n)"key"!==a&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:l,ref:void 0!==n?n:null,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r}),c=e((e,t)=>{t.exports=s()});export{u as n,n as r,c as t}; \ No newline at end of file diff --git a/examples/gltf/animation/basicAnimations/index.html b/examples/gltf/animation/basicAnimations/index.html index 863349487a..148d17be73 100644 --- a/examples/gltf/animation/basicAnimations/index.html +++ b/examples/gltf/animation/basicAnimations/index.html @@ -39,12 +39,12 @@ } - - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - + + - - + + @@ -57,5 +57,6 @@

- - - - - + + + + +