@mavonengine/core 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -2
- package/vite.config.js +21 -0
- package/dist/BaseGame.cjs +0 -112
- package/dist/Camera.cjs +0 -52
- package/dist/Components/MinimapComponent.cjs +0 -92
- package/dist/Components/TrailComponent.cjs +0 -101
- package/dist/Editor/EditorHelper.cjs +0 -73
- package/dist/Editor/WithEditorHelper.cjs +0 -65
- package/dist/Game.cjs +0 -131
- package/dist/InputManager.cjs +0 -88
- package/dist/Networking/Client/NetworkManager.cjs +0 -94
- package/dist/Networking/Entities/Player.cjs +0 -47
- package/dist/Networking/NetworkedActor.cjs +0 -43
- package/dist/Networking/NetworkedEntity.cjs +0 -16
- package/dist/Networking/NetworkedEntityState.cjs +0 -44
- package/dist/Networking/NetworkedGameObject.cjs +0 -74
- package/dist/Networking/NetworkedLivingActor.cjs +0 -62
- package/dist/Networking/Server/Client.cjs +0 -37
- package/dist/Networking/Server/Commands.cjs +0 -32
- package/dist/Networking/Server/Server.cjs +0 -202
- package/dist/Networking/Server/Stats/BandwidthTracker.cjs +0 -45
- package/dist/Networking/Server/Stats/CpuTracker.cjs +0 -101
- package/dist/Networking/Server/World.cjs +0 -42
- package/dist/Networking/syncState.cjs +0 -51
- package/dist/Particles/Effects/Rain.cjs +0 -90
- package/dist/Particles/Effects/Smoke.cjs +0 -144
- package/dist/Particles/System/Emitter.cjs +0 -81
- package/dist/Particles/System/Particle.cjs +0 -49
- package/dist/Particles/System/ParticleEffect.cjs +0 -59
- package/dist/Particles/System/ParticlePreviewRegistry.cjs +0 -63
- package/dist/Particles/System/ParticleSystem.cjs +0 -61
- package/dist/Prefab/Grass/Grass.cjs +0 -214
- package/dist/Prefab/Grass/GrassAffectingEntity.cjs +0 -30
- package/dist/Prefab/Lights/index.cjs +0 -233
- package/dist/Prefab/Primitives/index.cjs +0 -300
- package/dist/Prefab/Water/Water.cjs +0 -234
- package/dist/Prefab/Water/WaterManager.cjs +0 -146
- package/dist/Renderer/AssetRenderer.cjs +0 -85
- package/dist/Renderer/PhysicsRenderer.cjs +0 -84
- package/dist/Renderer.cjs +0 -135
- package/dist/Types/Asset.cjs +0 -16
- package/dist/Types/Events.cjs +0 -16
- package/dist/Types/IEditor.cjs +0 -16
- package/dist/Utils/Debug.cjs +0 -47
- package/dist/Utils/EventEmitter.cjs +0 -58
- package/dist/Utils/Helpers.cjs +0 -33
- package/dist/Utils/LoadingScreen.cjs +0 -91
- package/dist/Utils/Logger.cjs +0 -60
- package/dist/Utils/Math.cjs +0 -35
- package/dist/Utils/Resources.cjs +0 -101
- package/dist/Utils/Sizes.cjs +0 -51
- package/dist/Utils/SkeletonAxesHelper.cjs +0 -60
- package/dist/World/Actor.cjs +0 -55
- package/dist/World/BaseChunkManager.cjs +0 -34
- package/dist/World/BaseWorld.cjs +0 -73
- package/dist/World/Chunk.cjs +0 -45
- package/dist/World/Entity/State.cjs +0 -52
- package/dist/World/Entity/interface/Damageable.cjs +0 -16
- package/dist/World/Entity/interface/LivingEntity.cjs +0 -16
- package/dist/World/Entity3D.cjs +0 -92
- package/dist/World/Environment.cjs +0 -59
- package/dist/World/GameObject.cjs +0 -59
- package/dist/World/GameObjectInterface.cjs +0 -16
- package/dist/World/LivingActor.cjs +0 -42
- package/dist/World/StateManager.cjs +0 -47
- package/dist/World/World.cjs +0 -58
- package/dist/browser/BaseGame.js +0 -10
- package/dist/browser/BaseGame.js.map +0 -1
- package/dist/browser/Camera.css +0 -51
- package/dist/browser/Camera.css.map +0 -1
- package/dist/browser/Camera.js +0 -18
- package/dist/browser/Camera.js.map +0 -1
- package/dist/browser/Components/MinimapComponent.css +0 -51
- package/dist/browser/Components/MinimapComponent.css.map +0 -1
- package/dist/browser/Components/MinimapComponent.js +0 -74
- package/dist/browser/Components/MinimapComponent.js.map +0 -1
- package/dist/browser/Components/TrailComponent.css +0 -51
- package/dist/browser/Components/TrailComponent.css.map +0 -1
- package/dist/browser/Components/TrailComponent.js +0 -94
- package/dist/browser/Components/TrailComponent.js.map +0 -1
- package/dist/browser/Editor/EditorHelper.css +0 -51
- package/dist/browser/Editor/EditorHelper.css.map +0 -1
- package/dist/browser/Editor/EditorHelper.js +0 -21
- package/dist/browser/Editor/EditorHelper.js.map +0 -1
- package/dist/browser/Editor/WithEditorHelper.css +0 -51
- package/dist/browser/Editor/WithEditorHelper.css.map +0 -1
- package/dist/browser/Editor/WithEditorHelper.js +0 -22
- package/dist/browser/Editor/WithEditorHelper.js.map +0 -1
- package/dist/browser/Game.css +0 -51
- package/dist/browser/Game.css.map +0 -1
- package/dist/browser/Game.js +0 -18
- package/dist/browser/Game.js.map +0 -1
- package/dist/browser/InputManager.css +0 -51
- package/dist/browser/InputManager.css.map +0 -1
- package/dist/browser/InputManager.js +0 -18
- package/dist/browser/InputManager.js.map +0 -1
- package/dist/browser/Networking/Client/NetworkManager.js +0 -73
- package/dist/browser/Networking/Client/NetworkManager.js.map +0 -1
- package/dist/browser/Networking/Entities/Player.js +0 -15
- package/dist/browser/Networking/Entities/Player.js.map +0 -1
- package/dist/browser/Networking/NetworkedActor.js +0 -24
- package/dist/browser/Networking/NetworkedActor.js.map +0 -1
- package/dist/browser/Networking/NetworkedEntity.js +0 -1
- package/dist/browser/Networking/NetworkedEntity.js.map +0 -1
- package/dist/browser/Networking/NetworkedEntityState.js +0 -20
- package/dist/browser/Networking/NetworkedEntityState.js.map +0 -1
- package/dist/browser/Networking/NetworkedGameObject.js +0 -12
- package/dist/browser/Networking/NetworkedGameObject.js.map +0 -1
- package/dist/browser/Networking/NetworkedLivingActor.js +0 -14
- package/dist/browser/Networking/NetworkedLivingActor.js.map +0 -1
- package/dist/browser/Networking/Server/Client.js +0 -8
- package/dist/browser/Networking/Server/Client.js.map +0 -1
- package/dist/browser/Networking/Server/Commands.js +0 -8
- package/dist/browser/Networking/Server/Commands.js.map +0 -1
- package/dist/browser/Networking/Server/Server.js +0 -194
- package/dist/browser/Networking/Server/Server.js.map +0 -1
- package/dist/browser/Networking/Server/Stats/BandwidthTracker.js +0 -8
- package/dist/browser/Networking/Server/Stats/BandwidthTracker.js.map +0 -1
- package/dist/browser/Networking/Server/Stats/CpuTracker.js +0 -8
- package/dist/browser/Networking/Server/Stats/CpuTracker.js.map +0 -1
- package/dist/browser/Networking/Server/World.js +0 -19
- package/dist/browser/Networking/Server/World.js.map +0 -1
- package/dist/browser/Networking/syncState.js +0 -31
- package/dist/browser/Networking/syncState.js.map +0 -1
- package/dist/browser/Particles/Effects/Rain.css +0 -51
- package/dist/browser/Particles/Effects/Rain.css.map +0 -1
- package/dist/browser/Particles/Effects/Rain.js +0 -88
- package/dist/browser/Particles/Effects/Rain.js.map +0 -1
- package/dist/browser/Particles/Effects/Smoke.css +0 -51
- package/dist/browser/Particles/Effects/Smoke.css.map +0 -1
- package/dist/browser/Particles/Effects/Smoke.js +0 -143
- package/dist/browser/Particles/Effects/Smoke.js.map +0 -1
- package/dist/browser/Particles/Shaders/LoadingScreen/Fragment.glsl +0 -6
- package/dist/browser/Particles/Shaders/LoadingScreen/Vertex.glsl +0 -3
- package/dist/browser/Particles/Shaders/Rain/Fragment.glsl +0 -4
- package/dist/browser/Particles/Shaders/Rain/Vertex.glsl +0 -23
- package/dist/browser/Particles/Shaders/Smoke/Fragment.glsl +0 -8
- package/dist/browser/Particles/Shaders/Smoke/Vertex.glsl +0 -25
- package/dist/browser/Particles/System/Emitter.css +0 -51
- package/dist/browser/Particles/System/Emitter.css.map +0 -1
- package/dist/browser/Particles/System/Emitter.js +0 -19
- package/dist/browser/Particles/System/Emitter.js.map +0 -1
- package/dist/browser/Particles/System/Particle.js +0 -10
- package/dist/browser/Particles/System/Particle.js.map +0 -1
- package/dist/browser/Particles/System/ParticleEffect.css +0 -51
- package/dist/browser/Particles/System/ParticleEffect.css.map +0 -1
- package/dist/browser/Particles/System/ParticleEffect.js +0 -23
- package/dist/browser/Particles/System/ParticleEffect.js.map +0 -1
- package/dist/browser/Particles/System/ParticlePreviewRegistry.js +0 -13
- package/dist/browser/Particles/System/ParticlePreviewRegistry.js.map +0 -1
- package/dist/browser/Particles/System/ParticleSystem.css +0 -51
- package/dist/browser/Particles/System/ParticleSystem.css.map +0 -1
- package/dist/browser/Particles/System/ParticleSystem.js +0 -18
- package/dist/browser/Particles/System/ParticleSystem.js.map +0 -1
- package/dist/browser/Prefab/Grass/Fragment.glsl +0 -11
- package/dist/browser/Prefab/Grass/Grass.css +0 -51
- package/dist/browser/Prefab/Grass/Grass.css.map +0 -1
- package/dist/browser/Prefab/Grass/Grass.js +0 -226
- package/dist/browser/Prefab/Grass/Grass.js.map +0 -1
- package/dist/browser/Prefab/Grass/GrassAffectingEntity.js +0 -10
- package/dist/browser/Prefab/Grass/GrassAffectingEntity.js.map +0 -1
- package/dist/browser/Prefab/Grass/Vertex.glsl +0 -102
- package/dist/browser/Prefab/Lights/index.css +0 -51
- package/dist/browser/Prefab/Lights/index.css.map +0 -1
- package/dist/browser/Prefab/Lights/index.js +0 -224
- package/dist/browser/Prefab/Lights/index.js.map +0 -1
- package/dist/browser/Prefab/Primitives/index.css +0 -51
- package/dist/browser/Prefab/Primitives/index.css.map +0 -1
- package/dist/browser/Prefab/Primitives/index.js +0 -296
- package/dist/browser/Prefab/Primitives/index.js.map +0 -1
- package/dist/browser/Prefab/Water/Fragment.glsl +0 -36
- package/dist/browser/Prefab/Water/Vertex.glsl +0 -60
- package/dist/browser/Prefab/Water/Water.css +0 -51
- package/dist/browser/Prefab/Water/Water.css.map +0 -1
- package/dist/browser/Prefab/Water/Water.js +0 -234
- package/dist/browser/Prefab/Water/Water.js.map +0 -1
- package/dist/browser/Prefab/Water/WaterManager.css +0 -51
- package/dist/browser/Prefab/Water/WaterManager.css.map +0 -1
- package/dist/browser/Prefab/Water/WaterManager.js +0 -19
- package/dist/browser/Prefab/Water/WaterManager.js.map +0 -1
- package/dist/browser/Renderer/AssetRenderer.css +0 -51
- package/dist/browser/Renderer/AssetRenderer.css.map +0 -1
- package/dist/browser/Renderer/AssetRenderer.js +0 -71
- package/dist/browser/Renderer/AssetRenderer.js.map +0 -1
- package/dist/browser/Renderer/PhysicsRenderer.css +0 -51
- package/dist/browser/Renderer/PhysicsRenderer.css.map +0 -1
- package/dist/browser/Renderer/PhysicsRenderer.js +0 -18
- package/dist/browser/Renderer/PhysicsRenderer.js.map +0 -1
- package/dist/browser/Renderer.css +0 -51
- package/dist/browser/Renderer.css.map +0 -1
- package/dist/browser/Renderer.js +0 -18
- package/dist/browser/Renderer.js.map +0 -1
- package/dist/browser/Shaders/Vertex/ClassicPerlin3DNoise.glsl +0 -84
- package/dist/browser/Types/Asset.js +0 -1
- package/dist/browser/Types/Asset.js.map +0 -1
- package/dist/browser/Types/Events.js +0 -1
- package/dist/browser/Types/Events.js.map +0 -1
- package/dist/browser/Types/IEditor.js +0 -1
- package/dist/browser/Types/IEditor.js.map +0 -1
- package/dist/browser/Utils/Debug.js +0 -9
- package/dist/browser/Utils/Debug.js.map +0 -1
- package/dist/browser/Utils/EventEmitter.js +0 -10
- package/dist/browser/Utils/EventEmitter.js.map +0 -1
- package/dist/browser/Utils/Helpers.js +0 -13
- package/dist/browser/Utils/Helpers.js.map +0 -1
- package/dist/browser/Utils/LoadingScreen.css +0 -51
- package/dist/browser/Utils/LoadingScreen.css.map +0 -1
- package/dist/browser/Utils/LoadingScreen.js +0 -18
- package/dist/browser/Utils/LoadingScreen.js.map +0 -1
- package/dist/browser/Utils/Logger.js +0 -8
- package/dist/browser/Utils/Logger.js.map +0 -1
- package/dist/browser/Utils/Math.js +0 -10
- package/dist/browser/Utils/Math.js.map +0 -1
- package/dist/browser/Utils/Resources.js +0 -9
- package/dist/browser/Utils/Resources.js.map +0 -1
- package/dist/browser/Utils/Sizes.js +0 -9
- package/dist/browser/Utils/Sizes.js.map +0 -1
- package/dist/browser/Utils/SkeletonAxesHelper.js +0 -8
- package/dist/browser/Utils/SkeletonAxesHelper.js.map +0 -1
- package/dist/browser/World/Actor.js +0 -11
- package/dist/browser/World/Actor.js.map +0 -1
- package/dist/browser/World/BaseChunkManager.js +0 -8
- package/dist/browser/World/BaseChunkManager.js.map +0 -1
- package/dist/browser/World/BaseWorld.js +0 -10
- package/dist/browser/World/BaseWorld.js.map +0 -1
- package/dist/browser/World/Chunk.js +0 -22
- package/dist/browser/World/Chunk.js.map +0 -1
- package/dist/browser/World/Entity/State.js +0 -8
- package/dist/browser/World/Entity/State.js.map +0 -1
- package/dist/browser/World/Entity/interface/Damageable.js +0 -1
- package/dist/browser/World/Entity/interface/Damageable.js.map +0 -1
- package/dist/browser/World/Entity/interface/LivingEntity.js +0 -1
- package/dist/browser/World/Entity/interface/LivingEntity.js.map +0 -1
- package/dist/browser/World/Entity3D.css +0 -51
- package/dist/browser/World/Entity3D.css.map +0 -1
- package/dist/browser/World/Entity3D.js +0 -21
- package/dist/browser/World/Entity3D.js.map +0 -1
- package/dist/browser/World/Environment.css +0 -51
- package/dist/browser/World/Environment.css.map +0 -1
- package/dist/browser/World/Environment.js +0 -18
- package/dist/browser/World/Environment.js.map +0 -1
- package/dist/browser/World/GameObject.js +0 -9
- package/dist/browser/World/GameObject.js.map +0 -1
- package/dist/browser/World/GameObjectInterface.js +0 -1
- package/dist/browser/World/GameObjectInterface.js.map +0 -1
- package/dist/browser/World/LivingActor.js +0 -12
- package/dist/browser/World/LivingActor.js.map +0 -1
- package/dist/browser/World/StateManager.js +0 -23
- package/dist/browser/World/StateManager.js.map +0 -1
- package/dist/browser/World/World.css +0 -51
- package/dist/browser/World/World.css.map +0 -1
- package/dist/browser/World/World.js +0 -18
- package/dist/browser/World/World.js.map +0 -1
- package/dist/browser/chunk-2D7GC2Z6.js +0 -17
- package/dist/browser/chunk-2D7GC2Z6.js.map +0 -1
- package/dist/browser/chunk-2UXBMKXV.js +0 -56
- package/dist/browser/chunk-2UXBMKXV.js.map +0 -1
- package/dist/browser/chunk-36BXDTHA.js +0 -35
- package/dist/browser/chunk-36BXDTHA.js.map +0 -1
- package/dist/browser/chunk-374CRENE.js +0 -56
- package/dist/browser/chunk-374CRENE.js.map +0 -1
- package/dist/browser/chunk-3KYMJLQ5.js +0 -46
- package/dist/browser/chunk-3KYMJLQ5.js.map +0 -1
- package/dist/browser/chunk-4I6AZDRZ.js +0 -14356
- package/dist/browser/chunk-4I6AZDRZ.js.map +0 -1
- package/dist/browser/chunk-5LZSI46V.js +0 -122
- package/dist/browser/chunk-5LZSI46V.js.map +0 -1
- package/dist/browser/chunk-6K25QHWN.js +0 -70
- package/dist/browser/chunk-6K25QHWN.js.map +0 -1
- package/dist/browser/chunk-72INBIW4.js +0 -122
- package/dist/browser/chunk-72INBIW4.js.map +0 -1
- package/dist/browser/chunk-7QLYKS4T.js +0 -77
- package/dist/browser/chunk-7QLYKS4T.js.map +0 -1
- package/dist/browser/chunk-7ZSIOAT6.js +0 -56
- package/dist/browser/chunk-7ZSIOAT6.js.map +0 -1
- package/dist/browser/chunk-A5XMBADG.js +0 -14356
- package/dist/browser/chunk-A5XMBADG.js.map +0 -1
- package/dist/browser/chunk-ANVCAFXE.js +0 -39
- package/dist/browser/chunk-ANVCAFXE.js.map +0 -1
- package/dist/browser/chunk-AYRIMARL.js +0 -56
- package/dist/browser/chunk-AYRIMARL.js.map +0 -1
- package/dist/browser/chunk-BTC6Q4AH.js +0 -39
- package/dist/browser/chunk-BTC6Q4AH.js.map +0 -1
- package/dist/browser/chunk-BZO35RV2.js +0 -135
- package/dist/browser/chunk-BZO35RV2.js.map +0 -1
- package/dist/browser/chunk-C6AZ3L5F.js +0 -70
- package/dist/browser/chunk-C6AZ3L5F.js.map +0 -1
- package/dist/browser/chunk-CZUIHQMY.js +0 -35
- package/dist/browser/chunk-CZUIHQMY.js.map +0 -1
- package/dist/browser/chunk-D6OGGUMR.js +0 -37
- package/dist/browser/chunk-D6OGGUMR.js.map +0 -1
- package/dist/browser/chunk-DDHAPXFM.js +0 -59
- package/dist/browser/chunk-DDHAPXFM.js.map +0 -1
- package/dist/browser/chunk-DXO5V45O.js +0 -122
- package/dist/browser/chunk-DXO5V45O.js.map +0 -1
- package/dist/browser/chunk-EAQXXB5M.js +0 -33
- package/dist/browser/chunk-EAQXXB5M.js.map +0 -1
- package/dist/browser/chunk-FEGN4PF3.js +0 -70
- package/dist/browser/chunk-FEGN4PF3.js.map +0 -1
- package/dist/browser/chunk-G3PMV62Z.js +0 -36
- package/dist/browser/chunk-G3PMV62Z.js.map +0 -1
- package/dist/browser/chunk-GDOID2XG.js +0 -43
- package/dist/browser/chunk-GDOID2XG.js.map +0 -1
- package/dist/browser/chunk-GQ7NSGUB.js +0 -37
- package/dist/browser/chunk-GQ7NSGUB.js.map +0 -1
- package/dist/browser/chunk-GQMXKH26.js +0 -20
- package/dist/browser/chunk-GQMXKH26.js.map +0 -1
- package/dist/browser/chunk-GTPU5BFU.js +0 -33
- package/dist/browser/chunk-GTPU5BFU.js.map +0 -1
- package/dist/browser/chunk-HKJQDU25.js +0 -74
- package/dist/browser/chunk-HKJQDU25.js.map +0 -1
- package/dist/browser/chunk-HQ264K3X.js +0 -20
- package/dist/browser/chunk-HQ264K3X.js.map +0 -1
- package/dist/browser/chunk-HU53VGSY.js +0 -37
- package/dist/browser/chunk-HU53VGSY.js.map +0 -1
- package/dist/browser/chunk-HYBS64DV.js +0 -13
- package/dist/browser/chunk-HYBS64DV.js.map +0 -1
- package/dist/browser/chunk-IEOCTIMD.js +0 -39
- package/dist/browser/chunk-IEOCTIMD.js.map +0 -1
- package/dist/browser/chunk-INBJUTI4.js +0 -51
- package/dist/browser/chunk-INBJUTI4.js.map +0 -1
- package/dist/browser/chunk-IRDAPFOT.js +0 -33
- package/dist/browser/chunk-IRDAPFOT.js.map +0 -1
- package/dist/browser/chunk-J3ORUAIB.js +0 -14356
- package/dist/browser/chunk-J3ORUAIB.js.map +0 -1
- package/dist/browser/chunk-J7UBIWHX.js +0 -27
- package/dist/browser/chunk-J7UBIWHX.js.map +0 -1
- package/dist/browser/chunk-JAQ4MYZU.js +0 -56
- package/dist/browser/chunk-JAQ4MYZU.js.map +0 -1
- package/dist/browser/chunk-JVAFQ3HV.js +0 -39
- package/dist/browser/chunk-JVAFQ3HV.js.map +0 -1
- package/dist/browser/chunk-K5X3CO2X.js +0 -33
- package/dist/browser/chunk-K5X3CO2X.js.map +0 -1
- package/dist/browser/chunk-K6YNA7KS.js +0 -59
- package/dist/browser/chunk-K6YNA7KS.js.map +0 -1
- package/dist/browser/chunk-KJJCXAUN.js +0 -33
- package/dist/browser/chunk-KJJCXAUN.js.map +0 -1
- package/dist/browser/chunk-KQWQS3PJ.js +0 -51
- package/dist/browser/chunk-KQWQS3PJ.js.map +0 -1
- package/dist/browser/chunk-KRACPY5Q.js +0 -14356
- package/dist/browser/chunk-KRACPY5Q.js.map +0 -1
- package/dist/browser/chunk-LLU7BAGD.js +0 -122
- package/dist/browser/chunk-LLU7BAGD.js.map +0 -1
- package/dist/browser/chunk-MAGAUADA.js +0 -33
- package/dist/browser/chunk-MAGAUADA.js.map +0 -1
- package/dist/browser/chunk-MSCP7BC3.js +0 -37
- package/dist/browser/chunk-MSCP7BC3.js.map +0 -1
- package/dist/browser/chunk-MSSBGJJT.js +0 -40
- package/dist/browser/chunk-MSSBGJJT.js.map +0 -1
- package/dist/browser/chunk-NGCKXPYU.js +0 -70
- package/dist/browser/chunk-NGCKXPYU.js.map +0 -1
- package/dist/browser/chunk-ORBRJSRE.js +0 -25
- package/dist/browser/chunk-ORBRJSRE.js.map +0 -1
- package/dist/browser/chunk-OVP75QOD.js +0 -15744
- package/dist/browser/chunk-OVP75QOD.js.map +0 -1
- package/dist/browser/chunk-PESPCN4F.js +0 -14356
- package/dist/browser/chunk-PESPCN4F.js.map +0 -1
- package/dist/browser/chunk-PMZKVZCW.js +0 -20
- package/dist/browser/chunk-PMZKVZCW.js.map +0 -1
- package/dist/browser/chunk-RZJPUR5S.js +0 -23
- package/dist/browser/chunk-RZJPUR5S.js.map +0 -1
- package/dist/browser/chunk-S7PIA5U4.js +0 -70
- package/dist/browser/chunk-S7PIA5U4.js.map +0 -1
- package/dist/browser/chunk-SOW4TZP2.js +0 -59
- package/dist/browser/chunk-SOW4TZP2.js.map +0 -1
- package/dist/browser/chunk-SR7IBOM4.js +0 -33
- package/dist/browser/chunk-SR7IBOM4.js.map +0 -1
- package/dist/browser/chunk-TCU5NEY6.js +0 -51
- package/dist/browser/chunk-TCU5NEY6.js.map +0 -1
- package/dist/browser/chunk-U7MSUO62.js +0 -11
- package/dist/browser/chunk-U7MSUO62.js.map +0 -1
- package/dist/browser/chunk-UA75LFFB.js +0 -39
- package/dist/browser/chunk-UA75LFFB.js.map +0 -1
- package/dist/browser/chunk-UK2P4JGN.js +0 -18
- package/dist/browser/chunk-UK2P4JGN.js.map +0 -1
- package/dist/browser/chunk-VU7FUAOS.js +0 -51
- package/dist/browser/chunk-VU7FUAOS.js.map +0 -1
- package/dist/browser/chunk-VWCQZXBU.js +0 -28
- package/dist/browser/chunk-VWCQZXBU.js.map +0 -1
- package/dist/browser/chunk-VZ3QIXWK.js +0 -43
- package/dist/browser/chunk-VZ3QIXWK.js.map +0 -1
- package/dist/browser/chunk-WXOHFWTK.js +0 -135
- package/dist/browser/chunk-WXOHFWTK.js.map +0 -1
- package/dist/browser/chunk-XLZIPQ5H.js +0 -122
- package/dist/browser/chunk-XLZIPQ5H.js.map +0 -1
- package/dist/browser/chunk-XYI6B5DC.js +0 -59
- package/dist/browser/chunk-XYI6B5DC.js.map +0 -1
- package/dist/browser/chunk-Y7C4YAUZ.js +0 -37
- package/dist/browser/chunk-Y7C4YAUZ.js.map +0 -1
- package/dist/browser/chunk-YN5JXQTD.js +0 -51
- package/dist/browser/chunk-YN5JXQTD.js.map +0 -1
- package/dist/browser/chunk-YSGEW6PQ.js +0 -59
- package/dist/browser/chunk-YSGEW6PQ.js.map +0 -1
- package/dist/browser/chunk-YUIIN7WJ.js +0 -37
- package/dist/browser/chunk-YUIIN7WJ.js.map +0 -1
- package/dist/browser/ui/ObjectLabel.css +0 -51
- package/dist/browser/ui/ObjectLabel.css.map +0 -1
- package/dist/browser/ui/ObjectLabel.js +0 -19
- package/dist/browser/ui/ObjectLabel.js.map +0 -1
- package/dist/browser/ui/UILabel.css +0 -51
- package/dist/browser/ui/UILabel.css.map +0 -1
- package/dist/browser/ui/UILabel.js +0 -20
- package/dist/browser/ui/UILabel.js.map +0 -1
- package/dist/cjs/BaseGame.cjs +0 -112
- package/dist/cjs/Camera.cjs +0 -52
- package/dist/cjs/Components/MinimapComponent.cjs +0 -92
- package/dist/cjs/Components/TrailComponent.cjs +0 -101
- package/dist/cjs/Editor/EditorHelper.cjs +0 -73
- package/dist/cjs/Editor/WithEditorHelper.cjs +0 -65
- package/dist/cjs/Game.cjs +0 -131
- package/dist/cjs/InputManager.cjs +0 -88
- package/dist/cjs/Networking/Client/NetworkManager.cjs +0 -94
- package/dist/cjs/Networking/Entities/Player.cjs +0 -47
- package/dist/cjs/Networking/NetworkedActor.cjs +0 -43
- package/dist/cjs/Networking/NetworkedEntity.cjs +0 -16
- package/dist/cjs/Networking/NetworkedEntityState.cjs +0 -44
- package/dist/cjs/Networking/NetworkedGameObject.cjs +0 -74
- package/dist/cjs/Networking/NetworkedLivingActor.cjs +0 -62
- package/dist/cjs/Networking/Server/Client.cjs +0 -37
- package/dist/cjs/Networking/Server/Commands.cjs +0 -32
- package/dist/cjs/Networking/Server/Server.cjs +0 -202
- package/dist/cjs/Networking/Server/Stats/BandwidthTracker.cjs +0 -45
- package/dist/cjs/Networking/Server/Stats/CpuTracker.cjs +0 -101
- package/dist/cjs/Networking/Server/World.cjs +0 -42
- package/dist/cjs/Networking/syncState.cjs +0 -51
- package/dist/cjs/Particles/Effects/Rain.cjs +0 -90
- package/dist/cjs/Particles/Effects/Smoke.cjs +0 -144
- package/dist/cjs/Particles/System/Emitter.cjs +0 -81
- package/dist/cjs/Particles/System/Particle.cjs +0 -49
- package/dist/cjs/Particles/System/ParticleEffect.cjs +0 -59
- package/dist/cjs/Particles/System/ParticlePreviewRegistry.cjs +0 -63
- package/dist/cjs/Particles/System/ParticleSystem.cjs +0 -61
- package/dist/cjs/Prefab/Grass/Grass.cjs +0 -214
- package/dist/cjs/Prefab/Grass/GrassAffectingEntity.cjs +0 -30
- package/dist/cjs/Prefab/Lights/index.cjs +0 -233
- package/dist/cjs/Prefab/Primitives/index.cjs +0 -300
- package/dist/cjs/Prefab/Water/Water.cjs +0 -234
- package/dist/cjs/Prefab/Water/WaterManager.cjs +0 -146
- package/dist/cjs/Renderer/AssetRenderer.cjs +0 -85
- package/dist/cjs/Renderer/PhysicsRenderer.cjs +0 -84
- package/dist/cjs/Renderer.cjs +0 -135
- package/dist/cjs/Types/Asset.cjs +0 -16
- package/dist/cjs/Types/Events.cjs +0 -16
- package/dist/cjs/Types/IEditor.cjs +0 -16
- package/dist/cjs/Utils/Debug.cjs +0 -47
- package/dist/cjs/Utils/EventEmitter.cjs +0 -58
- package/dist/cjs/Utils/Helpers.cjs +0 -33
- package/dist/cjs/Utils/LoadingScreen.cjs +0 -91
- package/dist/cjs/Utils/Logger.cjs +0 -60
- package/dist/cjs/Utils/Math.cjs +0 -35
- package/dist/cjs/Utils/Resources.cjs +0 -101
- package/dist/cjs/Utils/Sizes.cjs +0 -51
- package/dist/cjs/Utils/SkeletonAxesHelper.cjs +0 -60
- package/dist/cjs/World/Actor.cjs +0 -55
- package/dist/cjs/World/BaseChunkManager.cjs +0 -34
- package/dist/cjs/World/BaseWorld.cjs +0 -73
- package/dist/cjs/World/Chunk.cjs +0 -45
- package/dist/cjs/World/Entity/State.cjs +0 -52
- package/dist/cjs/World/Entity/interface/Damageable.cjs +0 -16
- package/dist/cjs/World/Entity/interface/LivingEntity.cjs +0 -16
- package/dist/cjs/World/Entity3D.cjs +0 -92
- package/dist/cjs/World/Environment.cjs +0 -59
- package/dist/cjs/World/GameObject.cjs +0 -59
- package/dist/cjs/World/GameObjectInterface.cjs +0 -16
- package/dist/cjs/World/LivingActor.cjs +0 -42
- package/dist/cjs/World/StateManager.cjs +0 -47
- package/dist/cjs/World/World.cjs +0 -58
- package/dist/cjs/types.d.cjs +0 -1
- package/dist/cjs/ui/ObjectLabel.cjs +0 -80
- package/dist/cjs/ui/UILabel.cjs +0 -57
- package/dist/node/BaseGame.js +0 -10
- package/dist/node/BaseGame.js.map +0 -1
- package/dist/node/Camera.css +0 -51
- package/dist/node/Camera.css.map +0 -1
- package/dist/node/Camera.js +0 -18
- package/dist/node/Camera.js.map +0 -1
- package/dist/node/Components/MinimapComponent.css +0 -51
- package/dist/node/Components/MinimapComponent.css.map +0 -1
- package/dist/node/Components/MinimapComponent.js +0 -74
- package/dist/node/Components/MinimapComponent.js.map +0 -1
- package/dist/node/Components/TrailComponent.css +0 -51
- package/dist/node/Components/TrailComponent.css.map +0 -1
- package/dist/node/Components/TrailComponent.js +0 -94
- package/dist/node/Components/TrailComponent.js.map +0 -1
- package/dist/node/Editor/EditorHelper.css +0 -51
- package/dist/node/Editor/EditorHelper.css.map +0 -1
- package/dist/node/Editor/EditorHelper.js +0 -21
- package/dist/node/Editor/EditorHelper.js.map +0 -1
- package/dist/node/Editor/WithEditorHelper.css +0 -51
- package/dist/node/Editor/WithEditorHelper.css.map +0 -1
- package/dist/node/Editor/WithEditorHelper.js +0 -22
- package/dist/node/Editor/WithEditorHelper.js.map +0 -1
- package/dist/node/Game.css +0 -51
- package/dist/node/Game.css.map +0 -1
- package/dist/node/Game.js +0 -18
- package/dist/node/Game.js.map +0 -1
- package/dist/node/InputManager.css +0 -51
- package/dist/node/InputManager.css.map +0 -1
- package/dist/node/InputManager.js +0 -18
- package/dist/node/InputManager.js.map +0 -1
- package/dist/node/Networking/Client/NetworkManager.js +0 -73
- package/dist/node/Networking/Client/NetworkManager.js.map +0 -1
- package/dist/node/Networking/Entities/Player.js +0 -15
- package/dist/node/Networking/Entities/Player.js.map +0 -1
- package/dist/node/Networking/NetworkedActor.js +0 -24
- package/dist/node/Networking/NetworkedActor.js.map +0 -1
- package/dist/node/Networking/NetworkedEntity.js +0 -1
- package/dist/node/Networking/NetworkedEntity.js.map +0 -1
- package/dist/node/Networking/NetworkedEntityState.js +0 -20
- package/dist/node/Networking/NetworkedEntityState.js.map +0 -1
- package/dist/node/Networking/NetworkedGameObject.js +0 -12
- package/dist/node/Networking/NetworkedGameObject.js.map +0 -1
- package/dist/node/Networking/NetworkedLivingActor.js +0 -14
- package/dist/node/Networking/NetworkedLivingActor.js.map +0 -1
- package/dist/node/Networking/Server/Client.js +0 -8
- package/dist/node/Networking/Server/Client.js.map +0 -1
- package/dist/node/Networking/Server/Commands.js +0 -8
- package/dist/node/Networking/Server/Commands.js.map +0 -1
- package/dist/node/Networking/Server/Server.js +0 -194
- package/dist/node/Networking/Server/Server.js.map +0 -1
- package/dist/node/Networking/Server/Stats/BandwidthTracker.js +0 -8
- package/dist/node/Networking/Server/Stats/BandwidthTracker.js.map +0 -1
- package/dist/node/Networking/Server/Stats/CpuTracker.js +0 -8
- package/dist/node/Networking/Server/Stats/CpuTracker.js.map +0 -1
- package/dist/node/Networking/Server/World.js +0 -19
- package/dist/node/Networking/Server/World.js.map +0 -1
- package/dist/node/Networking/syncState.js +0 -31
- package/dist/node/Networking/syncState.js.map +0 -1
- package/dist/node/Particles/Effects/Rain.css +0 -51
- package/dist/node/Particles/Effects/Rain.css.map +0 -1
- package/dist/node/Particles/Effects/Rain.js +0 -88
- package/dist/node/Particles/Effects/Rain.js.map +0 -1
- package/dist/node/Particles/Effects/Smoke.css +0 -51
- package/dist/node/Particles/Effects/Smoke.css.map +0 -1
- package/dist/node/Particles/Effects/Smoke.js +0 -143
- package/dist/node/Particles/Effects/Smoke.js.map +0 -1
- package/dist/node/Particles/System/Emitter.css +0 -51
- package/dist/node/Particles/System/Emitter.css.map +0 -1
- package/dist/node/Particles/System/Emitter.js +0 -19
- package/dist/node/Particles/System/Emitter.js.map +0 -1
- package/dist/node/Particles/System/Particle.js +0 -10
- package/dist/node/Particles/System/Particle.js.map +0 -1
- package/dist/node/Particles/System/ParticleEffect.css +0 -51
- package/dist/node/Particles/System/ParticleEffect.css.map +0 -1
- package/dist/node/Particles/System/ParticleEffect.js +0 -23
- package/dist/node/Particles/System/ParticleEffect.js.map +0 -1
- package/dist/node/Particles/System/ParticlePreviewRegistry.js +0 -13
- package/dist/node/Particles/System/ParticlePreviewRegistry.js.map +0 -1
- package/dist/node/Particles/System/ParticleSystem.css +0 -51
- package/dist/node/Particles/System/ParticleSystem.css.map +0 -1
- package/dist/node/Particles/System/ParticleSystem.js +0 -18
- package/dist/node/Particles/System/ParticleSystem.js.map +0 -1
- package/dist/node/Prefab/Grass/Grass.css +0 -51
- package/dist/node/Prefab/Grass/Grass.css.map +0 -1
- package/dist/node/Prefab/Grass/Grass.js +0 -226
- package/dist/node/Prefab/Grass/Grass.js.map +0 -1
- package/dist/node/Prefab/Grass/GrassAffectingEntity.js +0 -10
- package/dist/node/Prefab/Grass/GrassAffectingEntity.js.map +0 -1
- package/dist/node/Prefab/Lights/index.css +0 -51
- package/dist/node/Prefab/Lights/index.css.map +0 -1
- package/dist/node/Prefab/Lights/index.js +0 -224
- package/dist/node/Prefab/Lights/index.js.map +0 -1
- package/dist/node/Prefab/Primitives/index.css +0 -51
- package/dist/node/Prefab/Primitives/index.css.map +0 -1
- package/dist/node/Prefab/Primitives/index.js +0 -296
- package/dist/node/Prefab/Primitives/index.js.map +0 -1
- package/dist/node/Prefab/Water/Water.css +0 -51
- package/dist/node/Prefab/Water/Water.css.map +0 -1
- package/dist/node/Prefab/Water/Water.js +0 -234
- package/dist/node/Prefab/Water/Water.js.map +0 -1
- package/dist/node/Prefab/Water/WaterManager.css +0 -51
- package/dist/node/Prefab/Water/WaterManager.css.map +0 -1
- package/dist/node/Prefab/Water/WaterManager.js +0 -19
- package/dist/node/Prefab/Water/WaterManager.js.map +0 -1
- package/dist/node/Renderer/AssetRenderer.css +0 -51
- package/dist/node/Renderer/AssetRenderer.css.map +0 -1
- package/dist/node/Renderer/AssetRenderer.js +0 -71
- package/dist/node/Renderer/AssetRenderer.js.map +0 -1
- package/dist/node/Renderer/PhysicsRenderer.css +0 -51
- package/dist/node/Renderer/PhysicsRenderer.css.map +0 -1
- package/dist/node/Renderer/PhysicsRenderer.js +0 -18
- package/dist/node/Renderer/PhysicsRenderer.js.map +0 -1
- package/dist/node/Renderer.css +0 -51
- package/dist/node/Renderer.css.map +0 -1
- package/dist/node/Renderer.js +0 -18
- package/dist/node/Renderer.js.map +0 -1
- package/dist/node/Types/Asset.js +0 -1
- package/dist/node/Types/Asset.js.map +0 -1
- package/dist/node/Types/Events.js +0 -1
- package/dist/node/Types/Events.js.map +0 -1
- package/dist/node/Types/IEditor.js +0 -1
- package/dist/node/Types/IEditor.js.map +0 -1
- package/dist/node/Utils/Debug.js +0 -9
- package/dist/node/Utils/Debug.js.map +0 -1
- package/dist/node/Utils/EventEmitter.js +0 -10
- package/dist/node/Utils/EventEmitter.js.map +0 -1
- package/dist/node/Utils/Helpers.js +0 -13
- package/dist/node/Utils/Helpers.js.map +0 -1
- package/dist/node/Utils/LoadingScreen.css +0 -51
- package/dist/node/Utils/LoadingScreen.css.map +0 -1
- package/dist/node/Utils/LoadingScreen.js +0 -18
- package/dist/node/Utils/LoadingScreen.js.map +0 -1
- package/dist/node/Utils/Logger.js +0 -8
- package/dist/node/Utils/Logger.js.map +0 -1
- package/dist/node/Utils/Math.js +0 -10
- package/dist/node/Utils/Math.js.map +0 -1
- package/dist/node/Utils/Resources.js +0 -9
- package/dist/node/Utils/Resources.js.map +0 -1
- package/dist/node/Utils/Sizes.js +0 -9
- package/dist/node/Utils/Sizes.js.map +0 -1
- package/dist/node/Utils/SkeletonAxesHelper.js +0 -8
- package/dist/node/Utils/SkeletonAxesHelper.js.map +0 -1
- package/dist/node/World/Actor.js +0 -11
- package/dist/node/World/Actor.js.map +0 -1
- package/dist/node/World/BaseChunkManager.js +0 -8
- package/dist/node/World/BaseChunkManager.js.map +0 -1
- package/dist/node/World/BaseWorld.js +0 -10
- package/dist/node/World/BaseWorld.js.map +0 -1
- package/dist/node/World/Chunk.js +0 -22
- package/dist/node/World/Chunk.js.map +0 -1
- package/dist/node/World/Entity/State.js +0 -8
- package/dist/node/World/Entity/State.js.map +0 -1
- package/dist/node/World/Entity/interface/Damageable.js +0 -1
- package/dist/node/World/Entity/interface/Damageable.js.map +0 -1
- package/dist/node/World/Entity/interface/LivingEntity.js +0 -1
- package/dist/node/World/Entity/interface/LivingEntity.js.map +0 -1
- package/dist/node/World/Entity3D.css +0 -51
- package/dist/node/World/Entity3D.css.map +0 -1
- package/dist/node/World/Entity3D.js +0 -21
- package/dist/node/World/Entity3D.js.map +0 -1
- package/dist/node/World/Environment.css +0 -51
- package/dist/node/World/Environment.css.map +0 -1
- package/dist/node/World/Environment.js +0 -18
- package/dist/node/World/Environment.js.map +0 -1
- package/dist/node/World/GameObject.js +0 -9
- package/dist/node/World/GameObject.js.map +0 -1
- package/dist/node/World/GameObjectInterface.js +0 -1
- package/dist/node/World/GameObjectInterface.js.map +0 -1
- package/dist/node/World/LivingActor.js +0 -12
- package/dist/node/World/LivingActor.js.map +0 -1
- package/dist/node/World/StateManager.js +0 -23
- package/dist/node/World/StateManager.js.map +0 -1
- package/dist/node/World/World.css +0 -51
- package/dist/node/World/World.css.map +0 -1
- package/dist/node/World/World.js +0 -18
- package/dist/node/World/World.js.map +0 -1
- package/dist/node/chunk-2D7GC2Z6.js +0 -17
- package/dist/node/chunk-2D7GC2Z6.js.map +0 -1
- package/dist/node/chunk-36BXDTHA.js +0 -35
- package/dist/node/chunk-36BXDTHA.js.map +0 -1
- package/dist/node/chunk-3KYMJLQ5.js +0 -46
- package/dist/node/chunk-3KYMJLQ5.js.map +0 -1
- package/dist/node/chunk-56YEZTOR.js +0 -51
- package/dist/node/chunk-56YEZTOR.js.map +0 -1
- package/dist/node/chunk-665EGLMD.js +0 -20
- package/dist/node/chunk-665EGLMD.js.map +0 -1
- package/dist/node/chunk-7QLYKS4T.js +0 -77
- package/dist/node/chunk-7QLYKS4T.js.map +0 -1
- package/dist/node/chunk-A3EB5HP2.js +0 -59
- package/dist/node/chunk-A3EB5HP2.js.map +0 -1
- package/dist/node/chunk-ABRATJQQ.js +0 -56
- package/dist/node/chunk-ABRATJQQ.js.map +0 -1
- package/dist/node/chunk-ARZ4UYTY.js +0 -59
- package/dist/node/chunk-ARZ4UYTY.js.map +0 -1
- package/dist/node/chunk-BN6FIYXJ.js +0 -70
- package/dist/node/chunk-BN6FIYXJ.js.map +0 -1
- package/dist/node/chunk-BNMD73EG.js +0 -33
- package/dist/node/chunk-BNMD73EG.js.map +0 -1
- package/dist/node/chunk-BXWY2BKG.js +0 -122
- package/dist/node/chunk-BXWY2BKG.js.map +0 -1
- package/dist/node/chunk-CMCOFHDS.js +0 -14356
- package/dist/node/chunk-CMCOFHDS.js.map +0 -1
- package/dist/node/chunk-CZUIHQMY.js +0 -35
- package/dist/node/chunk-CZUIHQMY.js.map +0 -1
- package/dist/node/chunk-DA47ZKJK.js +0 -33
- package/dist/node/chunk-DA47ZKJK.js.map +0 -1
- package/dist/node/chunk-DOBGB35A.js +0 -122
- package/dist/node/chunk-DOBGB35A.js.map +0 -1
- package/dist/node/chunk-DVEU42K3.js +0 -59
- package/dist/node/chunk-DVEU42K3.js.map +0 -1
- package/dist/node/chunk-EYW5XGVO.js +0 -122
- package/dist/node/chunk-EYW5XGVO.js.map +0 -1
- package/dist/node/chunk-F6DU4VFH.js +0 -51
- package/dist/node/chunk-F6DU4VFH.js.map +0 -1
- package/dist/node/chunk-FKEQHNYZ.js +0 -37
- package/dist/node/chunk-FKEQHNYZ.js.map +0 -1
- package/dist/node/chunk-G3PMV62Z.js +0 -36
- package/dist/node/chunk-G3PMV62Z.js.map +0 -1
- package/dist/node/chunk-GDOID2XG.js +0 -43
- package/dist/node/chunk-GDOID2XG.js.map +0 -1
- package/dist/node/chunk-HKJQDU25.js +0 -74
- package/dist/node/chunk-HKJQDU25.js.map +0 -1
- package/dist/node/chunk-HU53VGSY.js +0 -37
- package/dist/node/chunk-HU53VGSY.js.map +0 -1
- package/dist/node/chunk-HWTEWVF5.js +0 -14356
- package/dist/node/chunk-HWTEWVF5.js.map +0 -1
- package/dist/node/chunk-HYBS64DV.js +0 -13
- package/dist/node/chunk-HYBS64DV.js.map +0 -1
- package/dist/node/chunk-IGUYMCHB.js +0 -135
- package/dist/node/chunk-IGUYMCHB.js.map +0 -1
- package/dist/node/chunk-IKQALMVH.js +0 -37
- package/dist/node/chunk-IKQALMVH.js.map +0 -1
- package/dist/node/chunk-J7UBIWHX.js +0 -27
- package/dist/node/chunk-J7UBIWHX.js.map +0 -1
- package/dist/node/chunk-JEWEYJ5N.js +0 -33
- package/dist/node/chunk-JEWEYJ5N.js.map +0 -1
- package/dist/node/chunk-JQEJEQFD.js +0 -122
- package/dist/node/chunk-JQEJEQFD.js.map +0 -1
- package/dist/node/chunk-JUTNFQ4M.js +0 -70
- package/dist/node/chunk-JUTNFQ4M.js.map +0 -1
- package/dist/node/chunk-KF7BK5K3.js +0 -135
- package/dist/node/chunk-KF7BK5K3.js.map +0 -1
- package/dist/node/chunk-KJJCXAUN.js +0 -33
- package/dist/node/chunk-KJJCXAUN.js.map +0 -1
- package/dist/node/chunk-KL7DL5UI.js +0 -135
- package/dist/node/chunk-KL7DL5UI.js.map +0 -1
- package/dist/node/chunk-L6YOBSGZ.js +0 -122
- package/dist/node/chunk-L6YOBSGZ.js.map +0 -1
- package/dist/node/chunk-LCQFGY4N.js +0 -70
- package/dist/node/chunk-LCQFGY4N.js.map +0 -1
- package/dist/node/chunk-MG3V6544.js +0 -39
- package/dist/node/chunk-MG3V6544.js.map +0 -1
- package/dist/node/chunk-MSSBGJJT.js +0 -40
- package/dist/node/chunk-MSSBGJJT.js.map +0 -1
- package/dist/node/chunk-NAPFSFNP.js +0 -14356
- package/dist/node/chunk-NAPFSFNP.js.map +0 -1
- package/dist/node/chunk-O6R263IC.js +0 -37
- package/dist/node/chunk-O6R263IC.js.map +0 -1
- package/dist/node/chunk-ORBRJSRE.js +0 -25
- package/dist/node/chunk-ORBRJSRE.js.map +0 -1
- package/dist/node/chunk-OVP75QOD.js +0 -15744
- package/dist/node/chunk-OVP75QOD.js.map +0 -1
- package/dist/node/chunk-OXQNULUL.js +0 -33
- package/dist/node/chunk-OXQNULUL.js.map +0 -1
- package/dist/node/chunk-P6KB6QQA.js +0 -59
- package/dist/node/chunk-P6KB6QQA.js.map +0 -1
- package/dist/node/chunk-PGFA4SIU.js +0 -20
- package/dist/node/chunk-PGFA4SIU.js.map +0 -1
- package/dist/node/chunk-PMZKVZCW.js +0 -20
- package/dist/node/chunk-PMZKVZCW.js.map +0 -1
- package/dist/node/chunk-PRTEU3OX.js +0 -56
- package/dist/node/chunk-PRTEU3OX.js.map +0 -1
- package/dist/node/chunk-R75XUIQX.js +0 -51
- package/dist/node/chunk-R75XUIQX.js.map +0 -1
- package/dist/node/chunk-RECAQ7AB.js +0 -39
- package/dist/node/chunk-RECAQ7AB.js.map +0 -1
- package/dist/node/chunk-RG7R7WF2.js +0 -56
- package/dist/node/chunk-RG7R7WF2.js.map +0 -1
- package/dist/node/chunk-RVYDJWA2.js +0 -56
- package/dist/node/chunk-RVYDJWA2.js.map +0 -1
- package/dist/node/chunk-RZJPUR5S.js +0 -23
- package/dist/node/chunk-RZJPUR5S.js.map +0 -1
- package/dist/node/chunk-TD2MVFAF.js +0 -14356
- package/dist/node/chunk-TD2MVFAF.js.map +0 -1
- package/dist/node/chunk-U7MSUO62.js +0 -11
- package/dist/node/chunk-U7MSUO62.js.map +0 -1
- package/dist/node/chunk-UCZNQSLE.js +0 -59
- package/dist/node/chunk-UCZNQSLE.js.map +0 -1
- package/dist/node/chunk-UF5EIM2X.js +0 -37
- package/dist/node/chunk-UF5EIM2X.js.map +0 -1
- package/dist/node/chunk-UK2P4JGN.js +0 -18
- package/dist/node/chunk-UK2P4JGN.js.map +0 -1
- package/dist/node/chunk-UPVPF3FB.js +0 -39
- package/dist/node/chunk-UPVPF3FB.js.map +0 -1
- package/dist/node/chunk-VKT4KUVH.js +0 -70
- package/dist/node/chunk-VKT4KUVH.js.map +0 -1
- package/dist/node/chunk-VVMVUIFH.js +0 -39
- package/dist/node/chunk-VVMVUIFH.js.map +0 -1
- package/dist/node/chunk-VW2HJI67.js +0 -39
- package/dist/node/chunk-VW2HJI67.js.map +0 -1
- package/dist/node/chunk-VWCQZXBU.js +0 -28
- package/dist/node/chunk-VWCQZXBU.js.map +0 -1
- package/dist/node/chunk-VYVDNYIE.js +0 -14356
- package/dist/node/chunk-VYVDNYIE.js.map +0 -1
- package/dist/node/chunk-VZ3QIXWK.js +0 -43
- package/dist/node/chunk-VZ3QIXWK.js.map +0 -1
- package/dist/node/chunk-W2GJBTWD.js +0 -37
- package/dist/node/chunk-W2GJBTWD.js.map +0 -1
- package/dist/node/chunk-WAEF3D5Y.js +0 -56
- package/dist/node/chunk-WAEF3D5Y.js.map +0 -1
- package/dist/node/chunk-XUIBVVM4.js +0 -33
- package/dist/node/chunk-XUIBVVM4.js.map +0 -1
- package/dist/node/chunk-YMAVMWJ7.js +0 -20
- package/dist/node/chunk-YMAVMWJ7.js.map +0 -1
- package/dist/node/chunk-Z36ELCPA.js +0 -51
- package/dist/node/chunk-Z36ELCPA.js.map +0 -1
- package/dist/node/chunk-ZA6ZEGAE.js +0 -33
- package/dist/node/chunk-ZA6ZEGAE.js.map +0 -1
- package/dist/node/chunk-ZC6HCA4W.js +0 -70
- package/dist/node/chunk-ZC6HCA4W.js.map +0 -1
- package/dist/node/chunk-ZGBQKFK7.js +0 -51
- package/dist/node/chunk-ZGBQKFK7.js.map +0 -1
- package/dist/node/ui/ObjectLabel.css +0 -51
- package/dist/node/ui/ObjectLabel.css.map +0 -1
- package/dist/node/ui/ObjectLabel.js +0 -19
- package/dist/node/ui/ObjectLabel.js.map +0 -1
- package/dist/node/ui/UILabel.css +0 -51
- package/dist/node/ui/UILabel.css.map +0 -1
- package/dist/node/ui/UILabel.js +0 -20
- package/dist/node/ui/UILabel.js.map +0 -1
- package/dist/types.d.cjs +0 -1
- package/dist/types.d.js +0 -0
- package/dist/ui/ObjectLabel.cjs +0 -80
- package/dist/ui/UILabel.cjs +0 -57
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../node_modules/@tweakpane/plugin-essentials/dist/tweakpane-plugin-essentials.js","../../../../node_modules/tweakpane/dist/tweakpane.js","../../src/Utils/Debug.ts"],"sourcesContent":["function forceCast(v) {\n return v;\n}\nfunction isEmpty(value) {\n return value === null || value === undefined;\n}\nfunction isObject$1(value) {\n return value !== null && typeof value === 'object';\n}\nfunction isRecord(value) {\n return value !== null && typeof value === 'object';\n}\nfunction deepEqualsArray(a1, a2) {\n if (a1.length !== a2.length) {\n return false;\n }\n for (let i = 0; i < a1.length; i++) {\n if (a1[i] !== a2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction deepMerge(r1, r2) {\n const keys = Array.from(new Set([...Object.keys(r1), ...Object.keys(r2)]));\n return keys.reduce((result, key) => {\n const v1 = r1[key];\n const v2 = r2[key];\n return isRecord(v1) && isRecord(v2)\n ? Object.assign(Object.assign({}, result), { [key]: deepMerge(v1, v2) }) : Object.assign(Object.assign({}, result), { [key]: key in r2 ? v2 : v1 });\n }, {});\n}\n\nfunction isBinding(value) {\n if (!isObject$1(value)) {\n return false;\n }\n return 'target' in value;\n}\n\nconst CREATE_MESSAGE_MAP = {\n alreadydisposed: () => 'View has been already disposed',\n invalidparams: (context) => `Invalid parameters for '${context.name}'`,\n nomatchingcontroller: (context) => `No matching controller for '${context.key}'`,\n nomatchingview: (context) => `No matching view for '${JSON.stringify(context.params)}'`,\n notbindable: () => `Value is not bindable`,\n notcompatible: (context) => `Not compatible with plugin '${context.id}'`,\n propertynotfound: (context) => `Property '${context.name}' not found`,\n shouldneverhappen: () => 'This error should never happen',\n};\nclass TpError {\n static alreadyDisposed() {\n return new TpError({ type: 'alreadydisposed' });\n }\n static notBindable() {\n return new TpError({\n type: 'notbindable',\n });\n }\n static notCompatible(bundleId, id) {\n return new TpError({\n type: 'notcompatible',\n context: {\n id: `${bundleId}.${id}`,\n },\n });\n }\n static propertyNotFound(name) {\n return new TpError({\n type: 'propertynotfound',\n context: {\n name: name,\n },\n });\n }\n static shouldNeverHappen() {\n return new TpError({ type: 'shouldneverhappen' });\n }\n constructor(config) {\n var _a;\n this.message =\n (_a = CREATE_MESSAGE_MAP[config.type](forceCast(config.context))) !== null && _a !== void 0 ? _a : 'Unexpected error';\n this.name = this.constructor.name;\n this.stack = new Error(this.message).stack;\n this.type = config.type;\n }\n toString() {\n return this.message;\n }\n}\n\nclass BindingTarget {\n constructor(obj, key) {\n this.obj_ = obj;\n this.key = key;\n }\n static isBindable(obj) {\n if (obj === null) {\n return false;\n }\n if (typeof obj !== 'object' && typeof obj !== 'function') {\n return false;\n }\n return true;\n }\n read() {\n return this.obj_[this.key];\n }\n write(value) {\n this.obj_[this.key] = value;\n }\n writeProperty(name, value) {\n const valueObj = this.read();\n if (!BindingTarget.isBindable(valueObj)) {\n throw TpError.notBindable();\n }\n if (!(name in valueObj)) {\n throw TpError.propertyNotFound(name);\n }\n valueObj[name] = value;\n }\n}\n\nclass Emitter {\n constructor() {\n this.observers_ = {};\n }\n on(eventName, handler) {\n let observers = this.observers_[eventName];\n if (!observers) {\n observers = this.observers_[eventName] = [];\n }\n observers.push({\n handler: handler,\n });\n return this;\n }\n off(eventName, handler) {\n const observers = this.observers_[eventName];\n if (observers) {\n this.observers_[eventName] = observers.filter((observer) => {\n return observer.handler !== handler;\n });\n }\n return this;\n }\n emit(eventName, event) {\n const observers = this.observers_[eventName];\n if (!observers) {\n return;\n }\n observers.forEach((observer) => {\n observer.handler(event);\n });\n }\n}\n\nclass ComplexValue {\n constructor(initialValue, config) {\n var _a;\n this.constraint_ = config === null || config === void 0 ? void 0 : config.constraint;\n this.equals_ = (_a = config === null || config === void 0 ? void 0 : config.equals) !== null && _a !== void 0 ? _a : ((v1, v2) => v1 === v2);\n this.emitter = new Emitter();\n this.rawValue_ = initialValue;\n }\n get constraint() {\n return this.constraint_;\n }\n get rawValue() {\n return this.rawValue_;\n }\n set rawValue(rawValue) {\n this.setRawValue(rawValue, {\n forceEmit: false,\n last: true,\n });\n }\n setRawValue(rawValue, options) {\n const opts = options !== null && options !== void 0 ? options : {\n forceEmit: false,\n last: true,\n };\n const constrainedValue = this.constraint_\n ? this.constraint_.constrain(rawValue)\n : rawValue;\n const prevValue = this.rawValue_;\n const changed = !this.equals_(prevValue, constrainedValue);\n if (!changed && !opts.forceEmit) {\n return;\n }\n this.emitter.emit('beforechange', {\n sender: this,\n });\n this.rawValue_ = constrainedValue;\n this.emitter.emit('change', {\n options: opts,\n previousRawValue: prevValue,\n rawValue: constrainedValue,\n sender: this,\n });\n }\n}\n\nclass PrimitiveValue {\n constructor(initialValue) {\n this.emitter = new Emitter();\n this.value_ = initialValue;\n }\n get rawValue() {\n return this.value_;\n }\n set rawValue(value) {\n this.setRawValue(value, {\n forceEmit: false,\n last: true,\n });\n }\n setRawValue(value, options) {\n const opts = options !== null && options !== void 0 ? options : {\n forceEmit: false,\n last: true,\n };\n const prevValue = this.value_;\n if (prevValue === value && !opts.forceEmit) {\n return;\n }\n this.emitter.emit('beforechange', {\n sender: this,\n });\n this.value_ = value;\n this.emitter.emit('change', {\n options: opts,\n previousRawValue: prevValue,\n rawValue: this.value_,\n sender: this,\n });\n }\n}\n\nclass ReadonlyPrimitiveValue {\n constructor(value) {\n this.emitter = new Emitter();\n this.onValueBeforeChange_ = this.onValueBeforeChange_.bind(this);\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.value_ = value;\n this.value_.emitter.on('beforechange', this.onValueBeforeChange_);\n this.value_.emitter.on('change', this.onValueChange_);\n }\n get rawValue() {\n return this.value_.rawValue;\n }\n onValueBeforeChange_(ev) {\n this.emitter.emit('beforechange', Object.assign(Object.assign({}, ev), { sender: this }));\n }\n onValueChange_(ev) {\n this.emitter.emit('change', Object.assign(Object.assign({}, ev), { sender: this }));\n }\n}\n\nfunction createValue(initialValue, config) {\n const constraint = config === null || config === void 0 ? void 0 : config.constraint;\n const equals = config === null || config === void 0 ? void 0 : config.equals;\n if (!constraint && !equals) {\n return new PrimitiveValue(initialValue);\n }\n return new ComplexValue(initialValue, config);\n}\nfunction createReadonlyValue(value) {\n return [\n new ReadonlyPrimitiveValue(value),\n (rawValue, options) => {\n value.setRawValue(rawValue, options);\n },\n ];\n}\n\nclass ValueMap {\n constructor(valueMap) {\n this.emitter = new Emitter();\n this.valMap_ = valueMap;\n for (const key in this.valMap_) {\n const v = this.valMap_[key];\n v.emitter.on('change', () => {\n this.emitter.emit('change', {\n key: key,\n sender: this,\n });\n });\n }\n }\n static createCore(initialValue) {\n const keys = Object.keys(initialValue);\n return keys.reduce((o, key) => {\n return Object.assign(o, {\n [key]: createValue(initialValue[key]),\n });\n }, {});\n }\n static fromObject(initialValue) {\n const core = this.createCore(initialValue);\n return new ValueMap(core);\n }\n get(key) {\n return this.valMap_[key].rawValue;\n }\n set(key, value) {\n this.valMap_[key].rawValue = value;\n }\n value(key) {\n return this.valMap_[key];\n }\n}\n\nclass DefiniteRangeConstraint {\n constructor(config) {\n this.values = ValueMap.fromObject({\n max: config.max,\n min: config.min,\n });\n }\n constrain(value) {\n const max = this.values.get('max');\n const min = this.values.get('min');\n return Math.min(Math.max(value, min), max);\n }\n}\n\nclass RangeConstraint {\n constructor(config) {\n this.values = ValueMap.fromObject({\n max: config.max,\n min: config.min,\n });\n }\n constrain(value) {\n const max = this.values.get('max');\n const min = this.values.get('min');\n let result = value;\n if (!isEmpty(min)) {\n result = Math.max(result, min);\n }\n if (!isEmpty(max)) {\n result = Math.min(result, max);\n }\n return result;\n }\n}\n\nclass StepConstraint {\n constructor(step, origin = 0) {\n this.step = step;\n this.origin = origin;\n }\n constrain(value) {\n const o = this.origin % this.step;\n const r = Math.round((value - o) / this.step);\n return o + r * this.step;\n }\n}\n\nclass NumberLiteralNode {\n constructor(text) {\n this.text = text;\n }\n evaluate() {\n return Number(this.text);\n }\n toString() {\n return this.text;\n }\n}\nconst BINARY_OPERATION_MAP = {\n '**': (v1, v2) => Math.pow(v1, v2),\n '*': (v1, v2) => v1 * v2,\n '/': (v1, v2) => v1 / v2,\n '%': (v1, v2) => v1 % v2,\n '+': (v1, v2) => v1 + v2,\n '-': (v1, v2) => v1 - v2,\n '<<': (v1, v2) => v1 << v2,\n '>>': (v1, v2) => v1 >> v2,\n '>>>': (v1, v2) => v1 >>> v2,\n '&': (v1, v2) => v1 & v2,\n '^': (v1, v2) => v1 ^ v2,\n '|': (v1, v2) => v1 | v2,\n};\nclass BinaryOperationNode {\n constructor(operator, left, right) {\n this.left = left;\n this.operator = operator;\n this.right = right;\n }\n evaluate() {\n const op = BINARY_OPERATION_MAP[this.operator];\n if (!op) {\n throw new Error(`unexpected binary operator: '${this.operator}`);\n }\n return op(this.left.evaluate(), this.right.evaluate());\n }\n toString() {\n return [\n 'b(',\n this.left.toString(),\n this.operator,\n this.right.toString(),\n ')',\n ].join(' ');\n }\n}\nconst UNARY_OPERATION_MAP = {\n '+': (v) => v,\n '-': (v) => -v,\n '~': (v) => ~v,\n};\nclass UnaryOperationNode {\n constructor(operator, expr) {\n this.operator = operator;\n this.expression = expr;\n }\n evaluate() {\n const op = UNARY_OPERATION_MAP[this.operator];\n if (!op) {\n throw new Error(`unexpected unary operator: '${this.operator}`);\n }\n return op(this.expression.evaluate());\n }\n toString() {\n return ['u(', this.operator, this.expression.toString(), ')'].join(' ');\n }\n}\n\nfunction combineReader(parsers) {\n return (text, cursor) => {\n for (let i = 0; i < parsers.length; i++) {\n const result = parsers[i](text, cursor);\n if (result !== '') {\n return result;\n }\n }\n return '';\n };\n}\nfunction readWhitespace(text, cursor) {\n var _a;\n const m = text.substr(cursor).match(/^\\s+/);\n return (_a = (m && m[0])) !== null && _a !== void 0 ? _a : '';\n}\nfunction readNonZeroDigit(text, cursor) {\n const ch = text.substr(cursor, 1);\n return ch.match(/^[1-9]$/) ? ch : '';\n}\nfunction readDecimalDigits(text, cursor) {\n var _a;\n const m = text.substr(cursor).match(/^[0-9]+/);\n return (_a = (m && m[0])) !== null && _a !== void 0 ? _a : '';\n}\nfunction readSignedInteger(text, cursor) {\n const ds = readDecimalDigits(text, cursor);\n if (ds !== '') {\n return ds;\n }\n const sign = text.substr(cursor, 1);\n cursor += 1;\n if (sign !== '-' && sign !== '+') {\n return '';\n }\n const sds = readDecimalDigits(text, cursor);\n if (sds === '') {\n return '';\n }\n return sign + sds;\n}\nfunction readExponentPart(text, cursor) {\n const e = text.substr(cursor, 1);\n cursor += 1;\n if (e.toLowerCase() !== 'e') {\n return '';\n }\n const si = readSignedInteger(text, cursor);\n if (si === '') {\n return '';\n }\n return e + si;\n}\nfunction readDecimalIntegerLiteral(text, cursor) {\n const ch = text.substr(cursor, 1);\n if (ch === '0') {\n return ch;\n }\n const nzd = readNonZeroDigit(text, cursor);\n cursor += nzd.length;\n if (nzd === '') {\n return '';\n }\n return nzd + readDecimalDigits(text, cursor);\n}\nfunction readDecimalLiteral1(text, cursor) {\n const dil = readDecimalIntegerLiteral(text, cursor);\n cursor += dil.length;\n if (dil === '') {\n return '';\n }\n const dot = text.substr(cursor, 1);\n cursor += dot.length;\n if (dot !== '.') {\n return '';\n }\n const dds = readDecimalDigits(text, cursor);\n cursor += dds.length;\n return dil + dot + dds + readExponentPart(text, cursor);\n}\nfunction readDecimalLiteral2(text, cursor) {\n const dot = text.substr(cursor, 1);\n cursor += dot.length;\n if (dot !== '.') {\n return '';\n }\n const dds = readDecimalDigits(text, cursor);\n cursor += dds.length;\n if (dds === '') {\n return '';\n }\n return dot + dds + readExponentPart(text, cursor);\n}\nfunction readDecimalLiteral3(text, cursor) {\n const dil = readDecimalIntegerLiteral(text, cursor);\n cursor += dil.length;\n if (dil === '') {\n return '';\n }\n return dil + readExponentPart(text, cursor);\n}\nconst readDecimalLiteral = combineReader([\n readDecimalLiteral1,\n readDecimalLiteral2,\n readDecimalLiteral3,\n]);\nfunction parseBinaryDigits(text, cursor) {\n var _a;\n const m = text.substr(cursor).match(/^[01]+/);\n return (_a = (m && m[0])) !== null && _a !== void 0 ? _a : '';\n}\nfunction readBinaryIntegerLiteral(text, cursor) {\n const prefix = text.substr(cursor, 2);\n cursor += prefix.length;\n if (prefix.toLowerCase() !== '0b') {\n return '';\n }\n const bds = parseBinaryDigits(text, cursor);\n if (bds === '') {\n return '';\n }\n return prefix + bds;\n}\nfunction readOctalDigits(text, cursor) {\n var _a;\n const m = text.substr(cursor).match(/^[0-7]+/);\n return (_a = (m && m[0])) !== null && _a !== void 0 ? _a : '';\n}\nfunction readOctalIntegerLiteral(text, cursor) {\n const prefix = text.substr(cursor, 2);\n cursor += prefix.length;\n if (prefix.toLowerCase() !== '0o') {\n return '';\n }\n const ods = readOctalDigits(text, cursor);\n if (ods === '') {\n return '';\n }\n return prefix + ods;\n}\nfunction readHexDigits(text, cursor) {\n var _a;\n const m = text.substr(cursor).match(/^[0-9a-f]+/i);\n return (_a = (m && m[0])) !== null && _a !== void 0 ? _a : '';\n}\nfunction readHexIntegerLiteral(text, cursor) {\n const prefix = text.substr(cursor, 2);\n cursor += prefix.length;\n if (prefix.toLowerCase() !== '0x') {\n return '';\n }\n const hds = readHexDigits(text, cursor);\n if (hds === '') {\n return '';\n }\n return prefix + hds;\n}\nconst readNonDecimalIntegerLiteral = combineReader([\n readBinaryIntegerLiteral,\n readOctalIntegerLiteral,\n readHexIntegerLiteral,\n]);\nconst readNumericLiteral = combineReader([\n readNonDecimalIntegerLiteral,\n readDecimalLiteral,\n]);\n\nfunction parseLiteral(text, cursor) {\n const num = readNumericLiteral(text, cursor);\n cursor += num.length;\n if (num === '') {\n return null;\n }\n return {\n evaluable: new NumberLiteralNode(num),\n cursor: cursor,\n };\n}\nfunction parseParenthesizedExpression(text, cursor) {\n const op = text.substr(cursor, 1);\n cursor += op.length;\n if (op !== '(') {\n return null;\n }\n const expr = parseExpression(text, cursor);\n if (!expr) {\n return null;\n }\n cursor = expr.cursor;\n cursor += readWhitespace(text, cursor).length;\n const cl = text.substr(cursor, 1);\n cursor += cl.length;\n if (cl !== ')') {\n return null;\n }\n return {\n evaluable: expr.evaluable,\n cursor: cursor,\n };\n}\nfunction parsePrimaryExpression(text, cursor) {\n var _a;\n return ((_a = parseLiteral(text, cursor)) !== null && _a !== void 0 ? _a : parseParenthesizedExpression(text, cursor));\n}\nfunction parseUnaryExpression(text, cursor) {\n const expr = parsePrimaryExpression(text, cursor);\n if (expr) {\n return expr;\n }\n const op = text.substr(cursor, 1);\n cursor += op.length;\n if (op !== '+' && op !== '-' && op !== '~') {\n return null;\n }\n const num = parseUnaryExpression(text, cursor);\n if (!num) {\n return null;\n }\n cursor = num.cursor;\n return {\n cursor: cursor,\n evaluable: new UnaryOperationNode(op, num.evaluable),\n };\n}\nfunction readBinaryOperator(ops, text, cursor) {\n cursor += readWhitespace(text, cursor).length;\n const op = ops.filter((op) => text.startsWith(op, cursor))[0];\n if (!op) {\n return null;\n }\n cursor += op.length;\n cursor += readWhitespace(text, cursor).length;\n return {\n cursor: cursor,\n operator: op,\n };\n}\nfunction createBinaryOperationExpressionParser(exprParser, ops) {\n return (text, cursor) => {\n const firstExpr = exprParser(text, cursor);\n if (!firstExpr) {\n return null;\n }\n cursor = firstExpr.cursor;\n let expr = firstExpr.evaluable;\n for (;;) {\n const op = readBinaryOperator(ops, text, cursor);\n if (!op) {\n break;\n }\n cursor = op.cursor;\n const nextExpr = exprParser(text, cursor);\n if (!nextExpr) {\n return null;\n }\n cursor = nextExpr.cursor;\n expr = new BinaryOperationNode(op.operator, expr, nextExpr.evaluable);\n }\n return expr\n ? {\n cursor: cursor,\n evaluable: expr,\n }\n : null;\n };\n}\nconst parseBinaryOperationExpression = [\n ['**'],\n ['*', '/', '%'],\n ['+', '-'],\n ['<<', '>>>', '>>'],\n ['&'],\n ['^'],\n ['|'],\n].reduce((parser, ops) => {\n return createBinaryOperationExpressionParser(parser, ops);\n}, parseUnaryExpression);\nfunction parseExpression(text, cursor) {\n cursor += readWhitespace(text, cursor).length;\n return parseBinaryOperationExpression(text, cursor);\n}\nfunction parseEcmaNumberExpression(text) {\n const expr = parseExpression(text, 0);\n if (!expr) {\n return null;\n }\n const cursor = expr.cursor + readWhitespace(text, expr.cursor).length;\n if (cursor !== text.length) {\n return null;\n }\n return expr.evaluable;\n}\n\nfunction parseNumber(text) {\n var _a;\n const r = parseEcmaNumberExpression(text);\n return (_a = r === null || r === void 0 ? void 0 : r.evaluate()) !== null && _a !== void 0 ? _a : null;\n}\nfunction numberFromUnknown(value) {\n if (typeof value === 'number') {\n return value;\n }\n if (typeof value === 'string') {\n const pv = parseNumber(value);\n if (!isEmpty(pv)) {\n return pv;\n }\n }\n return 0;\n}\nfunction createNumberFormatter(digits) {\n return (value) => {\n return value.toFixed(Math.max(Math.min(digits, 20), 0));\n };\n}\n\nfunction mapRange(value, start1, end1, start2, end2) {\n const p = (value - start1) / (end1 - start1);\n return start2 + p * (end2 - start2);\n}\nfunction getDecimalDigits(value) {\n const text = String(value.toFixed(10));\n const frac = text.split('.')[1];\n return frac.replace(/0+$/, '').length;\n}\nfunction constrainRange(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\nfunction loopRange(value, max) {\n return ((value % max) + max) % max;\n}\nfunction getSuitableDecimalDigits(params, rawValue) {\n return !isEmpty(params.step)\n ? getDecimalDigits(params.step)\n : Math.max(getDecimalDigits(rawValue), 2);\n}\nfunction getSuitableKeyScale(params) {\n var _a;\n return (_a = params.step) !== null && _a !== void 0 ? _a : 1;\n}\nfunction getSuitablePointerScale(params, rawValue) {\n var _a;\n const base = Math.abs((_a = params.step) !== null && _a !== void 0 ? _a : rawValue);\n return base === 0 ? 0.1 : Math.pow(10, Math.floor(Math.log10(base)) - 1);\n}\nfunction createStepConstraint(params, initialValue) {\n if (!isEmpty(params.step)) {\n return new StepConstraint(params.step, initialValue);\n }\n return null;\n}\nfunction createRangeConstraint(params) {\n if (!isEmpty(params.max) && !isEmpty(params.min)) {\n return new DefiniteRangeConstraint({\n max: params.max,\n min: params.min,\n });\n }\n if (!isEmpty(params.max) || !isEmpty(params.min)) {\n return new RangeConstraint({\n max: params.max,\n min: params.min,\n });\n }\n return null;\n}\nfunction createNumberTextPropsObject(params, initialValue) {\n var _a, _b, _c;\n return {\n formatter: (_a = params.format) !== null && _a !== void 0 ? _a : createNumberFormatter(getSuitableDecimalDigits(params, initialValue)),\n keyScale: (_b = params.keyScale) !== null && _b !== void 0 ? _b : getSuitableKeyScale(params),\n pointerScale: (_c = params.pointerScale) !== null && _c !== void 0 ? _c : getSuitablePointerScale(params, initialValue),\n };\n}\nfunction createNumberTextInputParamsParser(p) {\n return {\n format: p.optional.function,\n keyScale: p.optional.number,\n max: p.optional.number,\n min: p.optional.number,\n pointerScale: p.optional.number,\n step: p.optional.number,\n };\n}\n\nfunction createPointAxis(config) {\n return {\n constraint: config.constraint,\n textProps: ValueMap.fromObject(createNumberTextPropsObject(config.params, config.initialValue)),\n };\n}\n\nclass BladeApi {\n constructor(controller) {\n this.controller = controller;\n }\n get element() {\n return this.controller.view.element;\n }\n get disabled() {\n return this.controller.viewProps.get('disabled');\n }\n set disabled(disabled) {\n this.controller.viewProps.set('disabled', disabled);\n }\n get hidden() {\n return this.controller.viewProps.get('hidden');\n }\n set hidden(hidden) {\n this.controller.viewProps.set('hidden', hidden);\n }\n dispose() {\n this.controller.viewProps.set('disposed', true);\n }\n importState(state) {\n return this.controller.importState(state);\n }\n exportState() {\n return this.controller.exportState();\n }\n}\n\nclass TpEvent {\n constructor(target) {\n this.target = target;\n }\n}\nclass TpChangeEvent extends TpEvent {\n constructor(target, value, last) {\n super(target);\n this.value = value;\n this.last = last !== null && last !== void 0 ? last : true;\n }\n}\nclass TpFoldEvent extends TpEvent {\n constructor(target, expanded) {\n super(target);\n this.expanded = expanded;\n }\n}\nclass TpTabSelectEvent extends TpEvent {\n constructor(target, index) {\n super(target);\n this.index = index;\n }\n}\n\nclass BindingApi extends BladeApi {\n constructor(controller) {\n super(controller);\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.emitter_ = new Emitter();\n this.controller.value.emitter.on('change', this.onValueChange_);\n }\n get label() {\n return this.controller.labelController.props.get('label');\n }\n set label(label) {\n this.controller.labelController.props.set('label', label);\n }\n get key() {\n return this.controller.value.binding.target.key;\n }\n get tag() {\n return this.controller.tag;\n }\n set tag(tag) {\n this.controller.tag = tag;\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev);\n });\n return this;\n }\n refresh() {\n this.controller.value.fetch();\n }\n onValueChange_(ev) {\n const value = this.controller.value;\n this.emitter_.emit('change', new TpChangeEvent(this, forceCast(value.binding.target.read()), ev.options.last));\n }\n}\n\nfunction parseObject(value, keyToParserMap) {\n const keys = Object.keys(keyToParserMap);\n const result = keys.reduce((tmp, key) => {\n if (tmp === undefined) {\n return undefined;\n }\n const parser = keyToParserMap[key];\n const result = parser(value[key]);\n return result.succeeded\n ? Object.assign(Object.assign({}, tmp), { [key]: result.value }) : undefined;\n }, {});\n return forceCast(result);\n}\nfunction parseArray(value, parseItem) {\n return value.reduce((tmp, item) => {\n if (tmp === undefined) {\n return undefined;\n }\n const result = parseItem(item);\n if (!result.succeeded || result.value === undefined) {\n return undefined;\n }\n return [...tmp, result.value];\n }, []);\n}\nfunction isObject(value) {\n if (value === null) {\n return false;\n }\n return typeof value === 'object';\n}\nfunction createMicroParserBuilder(parse) {\n return (optional) => (v) => {\n if (!optional && v === undefined) {\n return {\n succeeded: false,\n value: undefined,\n };\n }\n if (optional && v === undefined) {\n return {\n succeeded: true,\n value: undefined,\n };\n }\n const result = parse(v);\n return result !== undefined\n ? {\n succeeded: true,\n value: result,\n }\n : {\n succeeded: false,\n value: undefined,\n };\n };\n}\nfunction createMicroParserBuilders(optional) {\n return {\n custom: (parse) => createMicroParserBuilder(parse)(optional),\n boolean: createMicroParserBuilder((v) => typeof v === 'boolean' ? v : undefined)(optional),\n number: createMicroParserBuilder((v) => typeof v === 'number' ? v : undefined)(optional),\n string: createMicroParserBuilder((v) => typeof v === 'string' ? v : undefined)(optional),\n function: createMicroParserBuilder((v) =>\n typeof v === 'function' ? v : undefined)(optional),\n constant: (value) => createMicroParserBuilder((v) => (v === value ? value : undefined))(optional),\n raw: createMicroParserBuilder((v) => v)(optional),\n object: (keyToParserMap) => createMicroParserBuilder((v) => {\n if (!isObject(v)) {\n return undefined;\n }\n return parseObject(v, keyToParserMap);\n })(optional),\n array: (itemParser) => createMicroParserBuilder((v) => {\n if (!Array.isArray(v)) {\n return undefined;\n }\n return parseArray(v, itemParser);\n })(optional),\n };\n}\nconst MicroParsers = {\n optional: createMicroParserBuilders(true),\n required: createMicroParserBuilders(false),\n};\nfunction parseRecord(value, keyToParserMap) {\n const map = keyToParserMap(MicroParsers);\n const result = MicroParsers.required.object(map)(value);\n return result.succeeded ? result.value : undefined;\n}\n\nfunction importBladeState(state, superImport, parser, callback) {\n if (superImport && !superImport(state)) {\n return false;\n }\n const result = parseRecord(state, parser);\n return result ? callback(result) : false;\n}\nfunction exportBladeState(superExport, thisState) {\n var _a;\n return deepMerge((_a = superExport === null || superExport === void 0 ? void 0 : superExport()) !== null && _a !== void 0 ? _a : {}, thisState);\n}\n\nfunction isValueBladeController(bc) {\n return 'value' in bc;\n}\n\nfunction isBindingValue(v) {\n if (!isObject$1(v) || !('binding' in v)) {\n return false;\n }\n const b = v.binding;\n return isBinding(b);\n}\n\nconst SVG_NS = 'http://www.w3.org/2000/svg';\nfunction forceReflow(element) {\n element.offsetHeight;\n}\nfunction disableTransitionTemporarily(element, callback) {\n const t = element.style.transition;\n element.style.transition = 'none';\n callback();\n element.style.transition = t;\n}\nfunction supportsTouch(doc) {\n return doc.ontouchstart !== undefined;\n}\nfunction getCanvasContext(canvasElement) {\n const win = canvasElement.ownerDocument.defaultView;\n if (!win) {\n return null;\n }\n const isBrowser = 'document' in win;\n return isBrowser\n ? canvasElement.getContext('2d', {\n willReadFrequently: true,\n })\n : null;\n}\nconst ICON_ID_TO_INNER_HTML_MAP = {\n check: '<path d=\"M2 8l4 4l8 -8\"/>',\n dropdown: '<path d=\"M5 7h6l-3 3 z\"/>',\n p2dpad: '<path d=\"M8 4v8\"/><path d=\"M4 8h8\"/><circle cx=\"12\" cy=\"12\" r=\"1.2\"/>',\n};\nfunction createSvgIconElement(document, iconId) {\n const elem = document.createElementNS(SVG_NS, 'svg');\n elem.innerHTML = ICON_ID_TO_INNER_HTML_MAP[iconId];\n return elem;\n}\nfunction insertElementAt(parentElement, element, index) {\n parentElement.insertBefore(element, parentElement.children[index]);\n}\nfunction removeElement(element) {\n if (element.parentElement) {\n element.parentElement.removeChild(element);\n }\n}\nfunction removeChildElements(element) {\n while (element.children.length > 0) {\n element.removeChild(element.children[0]);\n }\n}\nfunction removeChildNodes(element) {\n while (element.childNodes.length > 0) {\n element.removeChild(element.childNodes[0]);\n }\n}\nfunction findNextTarget(ev) {\n if (ev.relatedTarget) {\n return forceCast(ev.relatedTarget);\n }\n if ('explicitOriginalTarget' in ev) {\n return ev.explicitOriginalTarget;\n }\n return null;\n}\n\nfunction bindValue(value, applyValue) {\n value.emitter.on('change', (ev) => {\n applyValue(ev.rawValue);\n });\n applyValue(value.rawValue);\n}\nfunction bindValueMap(valueMap, key, applyValue) {\n bindValue(valueMap.value(key), applyValue);\n}\n\nconst PREFIX = 'tp';\nfunction ClassName(viewName) {\n const fn = (opt_elementName, opt_modifier) => {\n return [\n PREFIX,\n '-',\n viewName,\n 'v',\n opt_elementName ? `_${opt_elementName}` : '',\n opt_modifier ? `-${opt_modifier}` : '',\n ].join('');\n };\n return fn;\n}\n\nconst cn$q = ClassName('lbl');\nfunction createLabelNode(doc, label) {\n const frag = doc.createDocumentFragment();\n const lineNodes = label.split('\\n').map((line) => {\n return doc.createTextNode(line);\n });\n lineNodes.forEach((lineNode, index) => {\n if (index > 0) {\n frag.appendChild(doc.createElement('br'));\n }\n frag.appendChild(lineNode);\n });\n return frag;\n}\nclass LabelView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(cn$q());\n config.viewProps.bindClassModifiers(this.element);\n const labelElem = doc.createElement('div');\n labelElem.classList.add(cn$q('l'));\n bindValueMap(config.props, 'label', (value) => {\n if (isEmpty(value)) {\n this.element.classList.add(cn$q(undefined, 'nol'));\n }\n else {\n this.element.classList.remove(cn$q(undefined, 'nol'));\n removeChildNodes(labelElem);\n labelElem.appendChild(createLabelNode(doc, value));\n }\n });\n this.element.appendChild(labelElem);\n this.labelElement = labelElem;\n const valueElem = doc.createElement('div');\n valueElem.classList.add(cn$q('v'));\n this.element.appendChild(valueElem);\n this.valueElement = valueElem;\n }\n}\n\nclass LabelController {\n constructor(doc, config) {\n this.props = config.props;\n this.valueController = config.valueController;\n this.viewProps = config.valueController.viewProps;\n this.view = new LabelView(doc, {\n props: config.props,\n viewProps: this.viewProps,\n });\n this.view.valueElement.appendChild(this.valueController.view.element);\n }\n importProps(state) {\n return importBladeState(state, null, (p) => ({\n label: p.optional.string,\n }), (result) => {\n this.props.set('label', result.label);\n return true;\n });\n }\n exportProps() {\n return exportBladeState(null, {\n label: this.props.get('label'),\n });\n }\n}\n\nfunction getAllBladePositions() {\n return ['veryfirst', 'first', 'last', 'verylast'];\n}\n\nconst cn$p = ClassName('');\nconst POS_TO_CLASS_NAME_MAP = {\n veryfirst: 'vfst',\n first: 'fst',\n last: 'lst',\n verylast: 'vlst',\n};\nclass BladeController {\n constructor(config) {\n this.parent_ = null;\n this.blade = config.blade;\n this.view = config.view;\n this.viewProps = config.viewProps;\n const elem = this.view.element;\n this.blade.value('positions').emitter.on('change', () => {\n getAllBladePositions().forEach((pos) => {\n elem.classList.remove(cn$p(undefined, POS_TO_CLASS_NAME_MAP[pos]));\n });\n this.blade.get('positions').forEach((pos) => {\n elem.classList.add(cn$p(undefined, POS_TO_CLASS_NAME_MAP[pos]));\n });\n });\n this.viewProps.handleDispose(() => {\n removeElement(elem);\n });\n }\n get parent() {\n return this.parent_;\n }\n set parent(parent) {\n this.parent_ = parent;\n this.viewProps.set('parent', this.parent_ ? this.parent_.viewProps : null);\n }\n importState(state) {\n return importBladeState(state, null, (p) => ({\n disabled: p.required.boolean,\n hidden: p.required.boolean,\n }), (result) => {\n this.viewProps.importState(result);\n return true;\n });\n }\n exportState() {\n return exportBladeState(null, Object.assign({}, this.viewProps.exportState()));\n }\n}\n\nclass LabeledValueBladeController extends BladeController {\n constructor(doc, config) {\n if (config.value !== config.valueController.value) {\n throw TpError.shouldNeverHappen();\n }\n const viewProps = config.valueController.viewProps;\n const lc = new LabelController(doc, {\n blade: config.blade,\n props: config.props,\n valueController: config.valueController,\n });\n super(Object.assign(Object.assign({}, config), { view: new LabelView(doc, {\n props: config.props,\n viewProps: viewProps,\n }), viewProps: viewProps }));\n this.labelController = lc;\n this.value = config.value;\n this.valueController = config.valueController;\n this.view.valueElement.appendChild(this.valueController.view.element);\n }\n importState(state) {\n return importBladeState(state, (s) => {\n var _a, _b, _c;\n return super.importState(s) &&\n this.labelController.importProps(s) &&\n ((_c = (_b = (_a = this.valueController).importProps) === null || _b === void 0 ? void 0 : _b.call(_a, state)) !== null && _c !== void 0 ? _c : true);\n }, (p) => ({\n value: p.optional.raw,\n }), (result) => {\n if (result.value) {\n this.value.rawValue = result.value;\n }\n return true;\n });\n }\n exportState() {\n var _a, _b, _c;\n return exportBladeState(() => super.exportState(), Object.assign(Object.assign({ value: this.value.rawValue }, this.labelController.exportProps()), ((_c = (_b = (_a = this.valueController).exportProps) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : {})));\n }\n}\n\nfunction fillBuffer(buffer, bufferSize) {\n while (buffer.length < bufferSize) {\n buffer.push(undefined);\n }\n}\nfunction initializeBuffer(bufferSize) {\n const buffer = [];\n fillBuffer(buffer, bufferSize);\n return buffer;\n}\nfunction createTrimmedBuffer(buffer) {\n const index = buffer.indexOf(undefined);\n return forceCast(index < 0 ? buffer : buffer.slice(0, index));\n}\nfunction createPushedBuffer(buffer, newValue) {\n const newBuffer = [...createTrimmedBuffer(buffer), newValue];\n if (newBuffer.length > buffer.length) {\n newBuffer.splice(0, newBuffer.length - buffer.length);\n }\n else {\n fillBuffer(newBuffer, buffer.length);\n }\n return newBuffer;\n}\n\nclass ButtonApi extends BladeApi {\n get label() {\n return this.controller.labelController.props.get('label');\n }\n set label(label) {\n this.controller.labelController.props.set('label', label);\n }\n get title() {\n var _a;\n return (_a = this.controller.buttonController.props.get('title')) !== null && _a !== void 0 ? _a : '';\n }\n set title(title) {\n this.controller.buttonController.props.set('title', title);\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n const emitter = this.controller.buttonController.emitter;\n emitter.on(eventName, () => {\n bh(new TpEvent(this));\n });\n return this;\n }\n}\n\nfunction applyClass(elem, className, active) {\n if (active) {\n elem.classList.add(className);\n }\n else {\n elem.classList.remove(className);\n }\n}\nfunction valueToClassName(elem, className) {\n return (value) => {\n applyClass(elem, className, value);\n };\n}\nfunction bindValueToTextContent(value, elem) {\n bindValue(value, (text) => {\n elem.textContent = text !== null && text !== void 0 ? text : '';\n });\n}\n\nconst cn$o = ClassName('btn');\nclass ButtonView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(cn$o());\n config.viewProps.bindClassModifiers(this.element);\n const buttonElem = doc.createElement('button');\n buttonElem.classList.add(cn$o('b'));\n config.viewProps.bindDisabled(buttonElem);\n this.element.appendChild(buttonElem);\n this.buttonElement = buttonElem;\n const titleElem = doc.createElement('div');\n titleElem.classList.add(cn$o('t'));\n bindValueToTextContent(config.props.value('title'), titleElem);\n this.buttonElement.appendChild(titleElem);\n }\n}\n\nclass ButtonController {\n constructor(doc, config) {\n this.emitter = new Emitter();\n this.onClick_ = this.onClick_.bind(this);\n this.props = config.props;\n this.viewProps = config.viewProps;\n this.view = new ButtonView(doc, {\n props: this.props,\n viewProps: this.viewProps,\n });\n this.view.buttonElement.addEventListener('click', this.onClick_);\n }\n importProps(state) {\n return importBladeState(state, null, (p) => ({\n title: p.optional.string,\n }), (result) => {\n this.props.set('title', result.title);\n return true;\n });\n }\n exportProps() {\n return exportBladeState(null, {\n title: this.props.get('title'),\n });\n }\n onClick_() {\n this.emitter.emit('click', {\n sender: this,\n });\n }\n}\n\nclass ButtonBladeController extends BladeController {\n constructor(doc, config) {\n const bc = new ButtonController(doc, {\n props: config.buttonProps,\n viewProps: config.viewProps,\n });\n const lc = new LabelController(doc, {\n blade: config.blade,\n props: config.labelProps,\n valueController: bc,\n });\n super({\n blade: config.blade,\n view: lc.view,\n viewProps: config.viewProps,\n });\n this.buttonController = bc;\n this.labelController = lc;\n }\n importState(state) {\n return importBladeState(state, (s) => super.importState(s) &&\n this.buttonController.importProps(s) &&\n this.labelController.importProps(s), () => ({}), () => true);\n }\n exportState() {\n return exportBladeState(() => super.exportState(), Object.assign(Object.assign({}, this.buttonController.exportProps()), this.labelController.exportProps()));\n }\n}\n\nclass Semver {\n constructor(text) {\n const [core, prerelease] = text.split('-');\n const coreComps = core.split('.');\n this.major = parseInt(coreComps[0], 10);\n this.minor = parseInt(coreComps[1], 10);\n this.patch = parseInt(coreComps[2], 10);\n this.prerelease = prerelease !== null && prerelease !== void 0 ? prerelease : null;\n }\n toString() {\n const core = [this.major, this.minor, this.patch].join('.');\n return this.prerelease !== null ? [core, this.prerelease].join('-') : core;\n }\n}\n\nconst VERSION = new Semver('2.0.0-beta.2');\n\nfunction createPlugin(plugin) {\n return Object.assign({ core: VERSION }, plugin);\n}\n\ncreatePlugin({\n id: 'button',\n type: 'blade',\n accept(params) {\n const result = parseRecord(params, (p) => ({\n title: p.required.string,\n view: p.required.constant('button'),\n label: p.optional.string,\n }));\n return result ? { params: result } : null;\n },\n controller(args) {\n return new ButtonBladeController(args.document, {\n blade: args.blade,\n buttonProps: ValueMap.fromObject({\n title: args.params.title,\n }),\n labelProps: ValueMap.fromObject({\n label: args.params.label,\n }),\n viewProps: args.viewProps,\n });\n },\n api(args) {\n if (args.controller instanceof ButtonBladeController) {\n return new ButtonApi(args.controller);\n }\n return null;\n },\n});\n\nfunction addButtonAsBlade(api, params) {\n return api.addBlade(Object.assign(Object.assign({}, params), { view: 'button' }));\n}\nfunction addFolderAsBlade(api, params) {\n return api.addBlade(Object.assign(Object.assign({}, params), { view: 'folder' }));\n}\nfunction addTabAsBlade(api, params) {\n return api.addBlade(Object.assign(Object.assign({}, params), { view: 'tab' }));\n}\n\nfunction isRefreshable(value) {\n if (!isObject$1(value)) {\n return false;\n }\n return 'refresh' in value && typeof value.refresh === 'function';\n}\n\nfunction createBindingTarget(obj, key) {\n if (!BindingTarget.isBindable(obj)) {\n throw TpError.notBindable();\n }\n return new BindingTarget(obj, key);\n}\nclass RackApi {\n constructor(controller, pool) {\n this.onRackValueChange_ = this.onRackValueChange_.bind(this);\n this.controller_ = controller;\n this.emitter_ = new Emitter();\n this.pool_ = pool;\n const rack = this.controller_.rack;\n rack.emitter.on('valuechange', this.onRackValueChange_);\n }\n get children() {\n return this.controller_.rack.children.map((bc) => this.pool_.createApi(bc));\n }\n addBinding(object, key, opt_params) {\n const params = opt_params !== null && opt_params !== void 0 ? opt_params : {};\n const doc = this.controller_.element.ownerDocument;\n const bc = this.pool_.createBinding(doc, createBindingTarget(object, key), params);\n const api = this.pool_.createBindingApi(bc);\n return this.add(api, params.index);\n }\n addFolder(params) {\n return addFolderAsBlade(this, params);\n }\n addButton(params) {\n return addButtonAsBlade(this, params);\n }\n addTab(params) {\n return addTabAsBlade(this, params);\n }\n add(api, opt_index) {\n const bc = api.controller;\n this.controller_.rack.add(bc, opt_index);\n return api;\n }\n remove(api) {\n this.controller_.rack.remove(api.controller);\n }\n addBlade(params) {\n const doc = this.controller_.element.ownerDocument;\n const bc = this.pool_.createBlade(doc, params);\n const api = this.pool_.createApi(bc);\n return this.add(api, params.index);\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev);\n });\n return this;\n }\n refresh() {\n this.children.forEach((c) => {\n if (isRefreshable(c)) {\n c.refresh();\n }\n });\n }\n onRackValueChange_(ev) {\n const bc = ev.bladeController;\n const api = this.pool_.createApi(bc);\n const binding = isBindingValue(bc.value) ? bc.value.binding : null;\n this.emitter_.emit('change', new TpChangeEvent(api, binding ? binding.target.read() : bc.value.rawValue, ev.options.last));\n }\n}\n\nclass ContainerBladeApi extends BladeApi {\n constructor(controller, pool) {\n super(controller);\n this.rackApi_ = new RackApi(controller.rackController, pool);\n }\n}\n\nclass ContainerBladeController extends BladeController {\n constructor(config) {\n super({\n blade: config.blade,\n view: config.view,\n viewProps: config.rackController.viewProps,\n });\n this.rackController = config.rackController;\n }\n importState(state) {\n return importBladeState(state, (s) => super.importState(s), (p) => ({\n children: p.required.array(p.required.raw),\n }), (result) => {\n return this.rackController.rack.children.every((c, index) => {\n return c.importState(result.children[index]);\n });\n });\n }\n exportState() {\n return exportBladeState(() => super.exportState(), {\n children: this.rackController.rack.children.map((c) => c.exportState()),\n });\n }\n}\nfunction isContainerBladeController(bc) {\n return 'rackController' in bc;\n}\n\nclass NestedOrderedSet {\n constructor(extract) {\n this.emitter = new Emitter();\n this.items_ = [];\n this.cache_ = new Set();\n this.onSubListAdd_ = this.onSubListAdd_.bind(this);\n this.onSubListRemove_ = this.onSubListRemove_.bind(this);\n this.extract_ = extract;\n }\n get items() {\n return this.items_;\n }\n allItems() {\n return Array.from(this.cache_);\n }\n find(callback) {\n for (const item of this.allItems()) {\n if (callback(item)) {\n return item;\n }\n }\n return null;\n }\n includes(item) {\n return this.cache_.has(item);\n }\n add(item, opt_index) {\n if (this.includes(item)) {\n throw TpError.shouldNeverHappen();\n }\n const index = opt_index !== undefined ? opt_index : this.items_.length;\n this.items_.splice(index, 0, item);\n this.cache_.add(item);\n const subList = this.extract_(item);\n if (subList) {\n subList.emitter.on('add', this.onSubListAdd_);\n subList.emitter.on('remove', this.onSubListRemove_);\n subList.allItems().forEach((i) => {\n this.cache_.add(i);\n });\n }\n this.emitter.emit('add', {\n index: index,\n item: item,\n root: this,\n target: this,\n });\n }\n remove(item) {\n const index = this.items_.indexOf(item);\n if (index < 0) {\n return;\n }\n this.items_.splice(index, 1);\n this.cache_.delete(item);\n const subList = this.extract_(item);\n if (subList) {\n subList.allItems().forEach((i) => {\n this.cache_.delete(i);\n });\n subList.emitter.off('add', this.onSubListAdd_);\n subList.emitter.off('remove', this.onSubListRemove_);\n }\n this.emitter.emit('remove', {\n index: index,\n item: item,\n root: this,\n target: this,\n });\n }\n onSubListAdd_(ev) {\n this.cache_.add(ev.item);\n this.emitter.emit('add', {\n index: ev.index,\n item: ev.item,\n root: this,\n target: ev.target,\n });\n }\n onSubListRemove_(ev) {\n this.cache_.delete(ev.item);\n this.emitter.emit('remove', {\n index: ev.index,\n item: ev.item,\n root: this,\n target: ev.target,\n });\n }\n}\n\nfunction findValueBladeController(bcs, v) {\n for (let i = 0; i < bcs.length; i++) {\n const bc = bcs[i];\n if (isValueBladeController(bc) && bc.value === v) {\n return bc;\n }\n }\n return null;\n}\nfunction findSubBladeControllerSet(bc) {\n return isContainerBladeController(bc)\n ? bc.rackController.rack['bcSet_']\n : null;\n}\nclass Rack {\n constructor(config) {\n var _a, _b;\n this.emitter = new Emitter();\n this.onBladePositionsChange_ = this.onBladePositionsChange_.bind(this);\n this.onSetAdd_ = this.onSetAdd_.bind(this);\n this.onSetRemove_ = this.onSetRemove_.bind(this);\n this.onChildDispose_ = this.onChildDispose_.bind(this);\n this.onChildPositionsChange_ = this.onChildPositionsChange_.bind(this);\n this.onChildValueChange_ = this.onChildValueChange_.bind(this);\n this.onChildViewPropsChange_ = this.onChildViewPropsChange_.bind(this);\n this.onRackLayout_ = this.onRackLayout_.bind(this);\n this.onRackValueChange_ = this.onRackValueChange_.bind(this);\n this.blade_ = (_a = config.blade) !== null && _a !== void 0 ? _a : null;\n (_b = this.blade_) === null || _b === void 0 ? void 0 : _b.value('positions').emitter.on('change', this.onBladePositionsChange_);\n this.viewProps = config.viewProps;\n this.bcSet_ = new NestedOrderedSet(findSubBladeControllerSet);\n this.bcSet_.emitter.on('add', this.onSetAdd_);\n this.bcSet_.emitter.on('remove', this.onSetRemove_);\n }\n get children() {\n return this.bcSet_.items;\n }\n add(bc, opt_index) {\n var _a;\n (_a = bc.parent) === null || _a === void 0 ? void 0 : _a.remove(bc);\n bc.parent = this;\n this.bcSet_.add(bc, opt_index);\n }\n remove(bc) {\n bc.parent = null;\n this.bcSet_.remove(bc);\n }\n find(finder) {\n return this.bcSet_.allItems().filter(finder);\n }\n onSetAdd_(ev) {\n this.updatePositions_();\n const root = ev.target === ev.root;\n this.emitter.emit('add', {\n bladeController: ev.item,\n index: ev.index,\n root: root,\n sender: this,\n });\n if (!root) {\n return;\n }\n const bc = ev.item;\n bc.viewProps.emitter.on('change', this.onChildViewPropsChange_);\n bc.blade\n .value('positions')\n .emitter.on('change', this.onChildPositionsChange_);\n bc.viewProps.handleDispose(this.onChildDispose_);\n if (isValueBladeController(bc)) {\n bc.value.emitter.on('change', this.onChildValueChange_);\n }\n else if (isContainerBladeController(bc)) {\n const rack = bc.rackController.rack;\n if (rack) {\n const emitter = rack.emitter;\n emitter.on('layout', this.onRackLayout_);\n emitter.on('valuechange', this.onRackValueChange_);\n }\n }\n }\n onSetRemove_(ev) {\n this.updatePositions_();\n const root = ev.target === ev.root;\n this.emitter.emit('remove', {\n bladeController: ev.item,\n root: root,\n sender: this,\n });\n if (!root) {\n return;\n }\n const bc = ev.item;\n if (isValueBladeController(bc)) {\n bc.value.emitter.off('change', this.onChildValueChange_);\n }\n else if (isContainerBladeController(bc)) {\n const rack = bc.rackController.rack;\n if (rack) {\n const emitter = rack.emitter;\n emitter.off('layout', this.onRackLayout_);\n emitter.off('valuechange', this.onRackValueChange_);\n }\n }\n }\n updatePositions_() {\n const visibleItems = this.bcSet_.items.filter((bc) => !bc.viewProps.get('hidden'));\n const firstVisibleItem = visibleItems[0];\n const lastVisibleItem = visibleItems[visibleItems.length - 1];\n this.bcSet_.items.forEach((bc) => {\n const ps = [];\n if (bc === firstVisibleItem) {\n ps.push('first');\n if (!this.blade_ ||\n this.blade_.get('positions').includes('veryfirst')) {\n ps.push('veryfirst');\n }\n }\n if (bc === lastVisibleItem) {\n ps.push('last');\n if (!this.blade_ || this.blade_.get('positions').includes('verylast')) {\n ps.push('verylast');\n }\n }\n bc.blade.set('positions', ps);\n });\n }\n onChildPositionsChange_() {\n this.updatePositions_();\n this.emitter.emit('layout', {\n sender: this,\n });\n }\n onChildViewPropsChange_(_ev) {\n this.updatePositions_();\n this.emitter.emit('layout', {\n sender: this,\n });\n }\n onChildDispose_() {\n const disposedUcs = this.bcSet_.items.filter((bc) => {\n return bc.viewProps.get('disposed');\n });\n disposedUcs.forEach((bc) => {\n this.bcSet_.remove(bc);\n });\n }\n onChildValueChange_(ev) {\n const bc = findValueBladeController(this.find(isValueBladeController), ev.sender);\n if (!bc) {\n throw TpError.alreadyDisposed();\n }\n this.emitter.emit('valuechange', {\n bladeController: bc,\n options: ev.options,\n sender: this,\n });\n }\n onRackLayout_(_) {\n this.updatePositions_();\n this.emitter.emit('layout', {\n sender: this,\n });\n }\n onRackValueChange_(ev) {\n this.emitter.emit('valuechange', {\n bladeController: ev.bladeController,\n options: ev.options,\n sender: this,\n });\n }\n onBladePositionsChange_() {\n this.updatePositions_();\n }\n}\n\nclass RackController {\n constructor(config) {\n this.onRackAdd_ = this.onRackAdd_.bind(this);\n this.onRackRemove_ = this.onRackRemove_.bind(this);\n this.element = config.element;\n this.viewProps = config.viewProps;\n const rack = new Rack({\n blade: config.root ? undefined : config.blade,\n viewProps: config.viewProps,\n });\n rack.emitter.on('add', this.onRackAdd_);\n rack.emitter.on('remove', this.onRackRemove_);\n this.rack = rack;\n this.viewProps.handleDispose(() => {\n for (let i = this.rack.children.length - 1; i >= 0; i--) {\n const bc = this.rack.children[i];\n bc.viewProps.set('disposed', true);\n }\n });\n }\n onRackAdd_(ev) {\n if (!ev.root) {\n return;\n }\n insertElementAt(this.element, ev.bladeController.view.element, ev.index);\n }\n onRackRemove_(ev) {\n if (!ev.root) {\n return;\n }\n removeElement(ev.bladeController.view.element);\n }\n}\n\nfunction createBlade() {\n return new ValueMap({\n positions: createValue([], {\n equals: deepEqualsArray,\n }),\n });\n}\n\nclass Foldable extends ValueMap {\n constructor(valueMap) {\n super(valueMap);\n }\n static create(expanded) {\n const coreObj = {\n completed: true,\n expanded: expanded,\n expandedHeight: null,\n shouldFixHeight: false,\n temporaryExpanded: null,\n };\n const core = ValueMap.createCore(coreObj);\n return new Foldable(core);\n }\n get styleExpanded() {\n var _a;\n return (_a = this.get('temporaryExpanded')) !== null && _a !== void 0 ? _a : this.get('expanded');\n }\n get styleHeight() {\n if (!this.styleExpanded) {\n return '0';\n }\n const exHeight = this.get('expandedHeight');\n if (this.get('shouldFixHeight') && !isEmpty(exHeight)) {\n return `${exHeight}px`;\n }\n return 'auto';\n }\n bindExpandedClass(elem, expandedClassName) {\n const onExpand = () => {\n const expanded = this.styleExpanded;\n if (expanded) {\n elem.classList.add(expandedClassName);\n }\n else {\n elem.classList.remove(expandedClassName);\n }\n };\n bindValueMap(this, 'expanded', onExpand);\n bindValueMap(this, 'temporaryExpanded', onExpand);\n }\n cleanUpTransition() {\n this.set('shouldFixHeight', false);\n this.set('expandedHeight', null);\n this.set('completed', true);\n }\n}\nfunction computeExpandedFolderHeight(folder, containerElement) {\n let height = 0;\n disableTransitionTemporarily(containerElement, () => {\n folder.set('expandedHeight', null);\n folder.set('temporaryExpanded', true);\n forceReflow(containerElement);\n height = containerElement.clientHeight;\n folder.set('temporaryExpanded', null);\n forceReflow(containerElement);\n });\n return height;\n}\nfunction applyHeight(foldable, elem) {\n elem.style.height = foldable.styleHeight;\n}\nfunction bindFoldable(foldable, elem) {\n foldable.value('expanded').emitter.on('beforechange', () => {\n foldable.set('completed', false);\n if (isEmpty(foldable.get('expandedHeight'))) {\n const h = computeExpandedFolderHeight(foldable, elem);\n if (h > 0) {\n foldable.set('expandedHeight', h);\n }\n }\n foldable.set('shouldFixHeight', true);\n forceReflow(elem);\n });\n foldable.emitter.on('change', () => {\n applyHeight(foldable, elem);\n });\n applyHeight(foldable, elem);\n elem.addEventListener('transitionend', (ev) => {\n if (ev.propertyName !== 'height') {\n return;\n }\n foldable.cleanUpTransition();\n });\n}\n\nclass FolderApi extends ContainerBladeApi {\n constructor(controller, pool) {\n super(controller, pool);\n this.emitter_ = new Emitter();\n this.controller.foldable\n .value('expanded')\n .emitter.on('change', (ev) => {\n this.emitter_.emit('fold', new TpFoldEvent(this, ev.sender.rawValue));\n });\n this.rackApi_.on('change', (ev) => {\n this.emitter_.emit('change', ev);\n });\n }\n get expanded() {\n return this.controller.foldable.get('expanded');\n }\n set expanded(expanded) {\n this.controller.foldable.set('expanded', expanded);\n }\n get title() {\n return this.controller.props.get('title');\n }\n set title(title) {\n this.controller.props.set('title', title);\n }\n get children() {\n return this.rackApi_.children;\n }\n addBinding(object, key, opt_params) {\n return this.rackApi_.addBinding(object, key, opt_params);\n }\n addFolder(params) {\n return this.rackApi_.addFolder(params);\n }\n addButton(params) {\n return this.rackApi_.addButton(params);\n }\n addTab(params) {\n return this.rackApi_.addTab(params);\n }\n add(api, opt_index) {\n return this.rackApi_.add(api, opt_index);\n }\n remove(api) {\n this.rackApi_.remove(api);\n }\n addBlade(params) {\n return this.rackApi_.addBlade(params);\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev);\n });\n return this;\n }\n refresh() {\n this.rackApi_.refresh();\n }\n}\n\nconst bladeContainerClassName = ClassName('cnt');\n\nclass FolderView {\n constructor(doc, config) {\n var _a;\n this.className_ = ClassName((_a = config.viewName) !== null && _a !== void 0 ? _a : 'fld');\n this.element = doc.createElement('div');\n this.element.classList.add(this.className_(), bladeContainerClassName());\n config.viewProps.bindClassModifiers(this.element);\n this.foldable_ = config.foldable;\n this.foldable_.bindExpandedClass(this.element, this.className_(undefined, 'expanded'));\n bindValueMap(this.foldable_, 'completed', valueToClassName(this.element, this.className_(undefined, 'cpl')));\n const buttonElem = doc.createElement('button');\n buttonElem.classList.add(this.className_('b'));\n bindValueMap(config.props, 'title', (title) => {\n if (isEmpty(title)) {\n this.element.classList.add(this.className_(undefined, 'not'));\n }\n else {\n this.element.classList.remove(this.className_(undefined, 'not'));\n }\n });\n config.viewProps.bindDisabled(buttonElem);\n this.element.appendChild(buttonElem);\n this.buttonElement = buttonElem;\n const indentElem = doc.createElement('div');\n indentElem.classList.add(this.className_('i'));\n this.element.appendChild(indentElem);\n const titleElem = doc.createElement('div');\n titleElem.classList.add(this.className_('t'));\n bindValueToTextContent(config.props.value('title'), titleElem);\n this.buttonElement.appendChild(titleElem);\n this.titleElement = titleElem;\n const markElem = doc.createElement('div');\n markElem.classList.add(this.className_('m'));\n this.buttonElement.appendChild(markElem);\n const containerElem = doc.createElement('div');\n containerElem.classList.add(this.className_('c'));\n this.element.appendChild(containerElem);\n this.containerElement = containerElem;\n }\n}\n\nclass FolderController extends ContainerBladeController {\n constructor(doc, config) {\n var _a;\n const foldable = Foldable.create((_a = config.expanded) !== null && _a !== void 0 ? _a : true);\n const view = new FolderView(doc, {\n foldable: foldable,\n props: config.props,\n viewName: config.root ? 'rot' : undefined,\n viewProps: config.viewProps,\n });\n super(Object.assign(Object.assign({}, config), { rackController: new RackController({\n blade: config.blade,\n element: view.containerElement,\n root: config.root,\n viewProps: config.viewProps,\n }), view: view }));\n this.onTitleClick_ = this.onTitleClick_.bind(this);\n this.props = config.props;\n this.foldable = foldable;\n bindFoldable(this.foldable, this.view.containerElement);\n this.rackController.rack.emitter.on('add', () => {\n this.foldable.cleanUpTransition();\n });\n this.rackController.rack.emitter.on('remove', () => {\n this.foldable.cleanUpTransition();\n });\n this.view.buttonElement.addEventListener('click', this.onTitleClick_);\n }\n get document() {\n return this.view.element.ownerDocument;\n }\n importState(state) {\n return importBladeState(state, (s) => super.importState(s), (p) => ({\n expanded: p.required.boolean,\n title: p.optional.string,\n }), (result) => {\n this.foldable.set('expanded', result.expanded);\n this.props.set('title', result.title);\n return true;\n });\n }\n exportState() {\n return exportBladeState(() => super.exportState(), {\n expanded: this.foldable.get('expanded'),\n title: this.props.get('title'),\n });\n }\n onTitleClick_() {\n this.foldable.set('expanded', !this.foldable.get('expanded'));\n }\n}\n\ncreatePlugin({\n id: 'folder',\n type: 'blade',\n accept(params) {\n const result = parseRecord(params, (p) => ({\n title: p.required.string,\n view: p.required.constant('folder'),\n expanded: p.optional.boolean,\n }));\n return result ? { params: result } : null;\n },\n controller(args) {\n return new FolderController(args.document, {\n blade: args.blade,\n expanded: args.params.expanded,\n props: ValueMap.fromObject({\n title: args.params.title,\n }),\n viewProps: args.viewProps,\n });\n },\n api(args) {\n if (!(args.controller instanceof FolderController)) {\n return null;\n }\n return new FolderApi(args.controller, args.pool);\n },\n});\n\nconst cn$n = ClassName('');\nfunction valueToModifier(elem, modifier) {\n return valueToClassName(elem, cn$n(undefined, modifier));\n}\nclass ViewProps extends ValueMap {\n constructor(valueMap) {\n var _a;\n super(valueMap);\n this.onDisabledChange_ = this.onDisabledChange_.bind(this);\n this.onParentChange_ = this.onParentChange_.bind(this);\n this.onParentGlobalDisabledChange_ =\n this.onParentGlobalDisabledChange_.bind(this);\n [this.globalDisabled_, this.setGlobalDisabled_] = createReadonlyValue(createValue(this.getGlobalDisabled_()));\n this.value('disabled').emitter.on('change', this.onDisabledChange_);\n this.value('parent').emitter.on('change', this.onParentChange_);\n (_a = this.get('parent')) === null || _a === void 0 ? void 0 : _a.globalDisabled.emitter.on('change', this.onParentGlobalDisabledChange_);\n }\n static create(opt_initialValue) {\n var _a, _b, _c;\n const initialValue = opt_initialValue !== null && opt_initialValue !== void 0 ? opt_initialValue : {};\n return new ViewProps(ValueMap.createCore({\n disabled: (_a = initialValue.disabled) !== null && _a !== void 0 ? _a : false,\n disposed: false,\n hidden: (_b = initialValue.hidden) !== null && _b !== void 0 ? _b : false,\n parent: (_c = initialValue.parent) !== null && _c !== void 0 ? _c : null,\n }));\n }\n get globalDisabled() {\n return this.globalDisabled_;\n }\n bindClassModifiers(elem) {\n bindValue(this.globalDisabled_, valueToModifier(elem, 'disabled'));\n bindValueMap(this, 'hidden', valueToModifier(elem, 'hidden'));\n }\n bindDisabled(target) {\n bindValue(this.globalDisabled_, (disabled) => {\n target.disabled = disabled;\n });\n }\n bindTabIndex(elem) {\n bindValue(this.globalDisabled_, (disabled) => {\n elem.tabIndex = disabled ? -1 : 0;\n });\n }\n handleDispose(callback) {\n this.value('disposed').emitter.on('change', (disposed) => {\n if (disposed) {\n callback();\n }\n });\n }\n importState(state) {\n this.set('disabled', state.disabled);\n this.set('hidden', state.hidden);\n }\n exportState() {\n return {\n disabled: this.get('disabled'),\n hidden: this.get('hidden'),\n };\n }\n getGlobalDisabled_() {\n const parent = this.get('parent');\n const parentDisabled = parent ? parent.globalDisabled.rawValue : false;\n return parentDisabled || this.get('disabled');\n }\n updateGlobalDisabled_() {\n this.setGlobalDisabled_(this.getGlobalDisabled_());\n }\n onDisabledChange_() {\n this.updateGlobalDisabled_();\n }\n onParentGlobalDisabledChange_() {\n this.updateGlobalDisabled_();\n }\n onParentChange_(ev) {\n var _a;\n const prevParent = ev.previousRawValue;\n prevParent === null || prevParent === void 0 ? void 0 : prevParent.globalDisabled.emitter.off('change', this.onParentGlobalDisabledChange_);\n (_a = this.get('parent')) === null || _a === void 0 ? void 0 : _a.globalDisabled.emitter.on('change', this.onParentGlobalDisabledChange_);\n this.updateGlobalDisabled_();\n }\n}\n\nconst cn$m = ClassName('tbp');\nclass TabPageView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(cn$m());\n config.viewProps.bindClassModifiers(this.element);\n const containerElem = doc.createElement('div');\n containerElem.classList.add(cn$m('c'));\n this.element.appendChild(containerElem);\n this.containerElement = containerElem;\n }\n}\n\nconst cn$l = ClassName('tbi');\nclass TabItemView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(cn$l());\n config.viewProps.bindClassModifiers(this.element);\n bindValueMap(config.props, 'selected', (selected) => {\n if (selected) {\n this.element.classList.add(cn$l(undefined, 'sel'));\n }\n else {\n this.element.classList.remove(cn$l(undefined, 'sel'));\n }\n });\n const buttonElem = doc.createElement('button');\n buttonElem.classList.add(cn$l('b'));\n config.viewProps.bindDisabled(buttonElem);\n this.element.appendChild(buttonElem);\n this.buttonElement = buttonElem;\n const titleElem = doc.createElement('div');\n titleElem.classList.add(cn$l('t'));\n bindValueToTextContent(config.props.value('title'), titleElem);\n this.buttonElement.appendChild(titleElem);\n this.titleElement = titleElem;\n }\n}\n\nclass TabItemController {\n constructor(doc, config) {\n this.emitter = new Emitter();\n this.onClick_ = this.onClick_.bind(this);\n this.props = config.props;\n this.viewProps = config.viewProps;\n this.view = new TabItemView(doc, {\n props: config.props,\n viewProps: config.viewProps,\n });\n this.view.buttonElement.addEventListener('click', this.onClick_);\n }\n onClick_() {\n this.emitter.emit('click', {\n sender: this,\n });\n }\n}\n\nclass TabPageController extends ContainerBladeController {\n constructor(doc, config) {\n const view = new TabPageView(doc, {\n viewProps: config.viewProps,\n });\n super(Object.assign(Object.assign({}, config), { rackController: new RackController({\n blade: config.blade,\n element: view.containerElement,\n viewProps: config.viewProps,\n }), view: view }));\n this.onItemClick_ = this.onItemClick_.bind(this);\n this.ic_ = new TabItemController(doc, {\n props: config.itemProps,\n viewProps: ViewProps.create(),\n });\n this.ic_.emitter.on('click', this.onItemClick_);\n this.props = config.props;\n bindValueMap(this.props, 'selected', (selected) => {\n this.itemController.props.set('selected', selected);\n this.viewProps.set('hidden', !selected);\n });\n }\n get itemController() {\n return this.ic_;\n }\n importState(state) {\n return importBladeState(state, (s) => super.importState(s), (p) => ({\n selected: p.required.boolean,\n title: p.required.string,\n }), (result) => {\n this.ic_.props.set('selected', result.selected);\n this.ic_.props.set('title', result.title);\n return true;\n });\n }\n exportState() {\n return exportBladeState(() => super.exportState(), {\n selected: this.ic_.props.get('selected'),\n title: this.ic_.props.get('title'),\n });\n }\n onItemClick_() {\n this.props.set('selected', true);\n }\n}\n\nclass TabApi extends ContainerBladeApi {\n constructor(controller, pool) {\n super(controller, pool);\n this.emitter_ = new Emitter();\n this.onSelect_ = this.onSelect_.bind(this);\n this.pool_ = pool;\n this.rackApi_.on('change', (ev) => {\n this.emitter_.emit('change', ev);\n });\n this.controller.tab.selectedIndex.emitter.on('change', this.onSelect_);\n }\n get pages() {\n return this.rackApi_.children;\n }\n addPage(params) {\n const doc = this.controller.view.element.ownerDocument;\n const pc = new TabPageController(doc, {\n blade: createBlade(),\n itemProps: ValueMap.fromObject({\n selected: false,\n title: params.title,\n }),\n props: ValueMap.fromObject({\n selected: false,\n }),\n viewProps: ViewProps.create(),\n });\n const papi = this.pool_.createApi(pc);\n return this.rackApi_.add(papi, params.index);\n }\n removePage(index) {\n this.rackApi_.remove(this.rackApi_.children[index]);\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev);\n });\n return this;\n }\n onSelect_(ev) {\n this.emitter_.emit('select', new TpTabSelectEvent(this, ev.rawValue));\n }\n}\n\nclass TabPageApi extends ContainerBladeApi {\n get title() {\n var _a;\n return (_a = this.controller.itemController.props.get('title')) !== null && _a !== void 0 ? _a : '';\n }\n set title(title) {\n this.controller.itemController.props.set('title', title);\n }\n get selected() {\n return this.controller.props.get('selected');\n }\n set selected(selected) {\n this.controller.props.set('selected', selected);\n }\n get children() {\n return this.rackApi_.children;\n }\n addButton(params) {\n return this.rackApi_.addButton(params);\n }\n addFolder(params) {\n return this.rackApi_.addFolder(params);\n }\n addTab(params) {\n return this.rackApi_.addTab(params);\n }\n add(api, opt_index) {\n this.rackApi_.add(api, opt_index);\n }\n remove(api) {\n this.rackApi_.remove(api);\n }\n addBinding(object, key, opt_params) {\n return this.rackApi_.addBinding(object, key, opt_params);\n }\n addBlade(params) {\n return this.rackApi_.addBlade(params);\n }\n refresh() {\n this.rackApi_.refresh();\n }\n}\n\nconst INDEX_NOT_SELECTED = -1;\nclass Tab {\n constructor() {\n this.onItemSelectedChange_ = this.onItemSelectedChange_.bind(this);\n this.empty = createValue(true);\n this.selectedIndex = createValue(INDEX_NOT_SELECTED);\n this.items_ = [];\n }\n add(item, opt_index) {\n const index = opt_index !== null && opt_index !== void 0 ? opt_index : this.items_.length;\n this.items_.splice(index, 0, item);\n item.emitter.on('change', this.onItemSelectedChange_);\n this.keepSelection_();\n }\n remove(item) {\n const index = this.items_.indexOf(item);\n if (index < 0) {\n return;\n }\n this.items_.splice(index, 1);\n item.emitter.off('change', this.onItemSelectedChange_);\n this.keepSelection_();\n }\n keepSelection_() {\n if (this.items_.length === 0) {\n this.selectedIndex.rawValue = INDEX_NOT_SELECTED;\n this.empty.rawValue = true;\n return;\n }\n const firstSelIndex = this.items_.findIndex((s) => s.rawValue);\n if (firstSelIndex < 0) {\n this.items_.forEach((s, i) => {\n s.rawValue = i === 0;\n });\n this.selectedIndex.rawValue = 0;\n }\n else {\n this.items_.forEach((s, i) => {\n s.rawValue = i === firstSelIndex;\n });\n this.selectedIndex.rawValue = firstSelIndex;\n }\n this.empty.rawValue = false;\n }\n onItemSelectedChange_(ev) {\n if (ev.rawValue) {\n const index = this.items_.findIndex((s) => s === ev.sender);\n this.items_.forEach((s, i) => {\n s.rawValue = i === index;\n });\n this.selectedIndex.rawValue = index;\n }\n else {\n this.keepSelection_();\n }\n }\n}\n\nconst cn$k = ClassName('tab');\nclass TabView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(cn$k(), bladeContainerClassName());\n config.viewProps.bindClassModifiers(this.element);\n bindValue(config.empty, valueToClassName(this.element, cn$k(undefined, 'nop')));\n const titleElem = doc.createElement('div');\n titleElem.classList.add(cn$k('t'));\n this.element.appendChild(titleElem);\n this.itemsElement = titleElem;\n const indentElem = doc.createElement('div');\n indentElem.classList.add(cn$k('i'));\n this.element.appendChild(indentElem);\n const contentsElem = doc.createElement('div');\n contentsElem.classList.add(cn$k('c'));\n this.element.appendChild(contentsElem);\n this.contentsElement = contentsElem;\n }\n}\n\nclass TabController extends ContainerBladeController {\n constructor(doc, config) {\n const tab = new Tab();\n const view = new TabView(doc, {\n empty: tab.empty,\n viewProps: config.viewProps,\n });\n super({\n blade: config.blade,\n rackController: new RackController({\n blade: config.blade,\n element: view.contentsElement,\n viewProps: config.viewProps,\n }),\n view: view,\n });\n this.onRackAdd_ = this.onRackAdd_.bind(this);\n this.onRackRemove_ = this.onRackRemove_.bind(this);\n const rack = this.rackController.rack;\n rack.emitter.on('add', this.onRackAdd_);\n rack.emitter.on('remove', this.onRackRemove_);\n this.tab = tab;\n }\n add(pc, opt_index) {\n this.rackController.rack.add(pc, opt_index);\n }\n remove(index) {\n this.rackController.rack.remove(this.rackController.rack.children[index]);\n }\n onRackAdd_(ev) {\n if (!ev.root) {\n return;\n }\n const pc = ev.bladeController;\n insertElementAt(this.view.itemsElement, pc.itemController.view.element, ev.index);\n pc.itemController.viewProps.set('parent', this.viewProps);\n this.tab.add(pc.props.value('selected'));\n }\n onRackRemove_(ev) {\n if (!ev.root) {\n return;\n }\n const pc = ev.bladeController;\n removeElement(pc.itemController.view.element);\n pc.itemController.viewProps.set('parent', null);\n this.tab.remove(pc.props.value('selected'));\n }\n}\n\ncreatePlugin({\n id: 'tab',\n type: 'blade',\n accept(params) {\n const result = parseRecord(params, (p) => ({\n pages: p.required.array(p.required.object({ title: p.required.string })),\n view: p.required.constant('tab'),\n }));\n if (!result || result.pages.length === 0) {\n return null;\n }\n return { params: result };\n },\n controller(args) {\n const c = new TabController(args.document, {\n blade: args.blade,\n viewProps: args.viewProps,\n });\n args.params.pages.forEach((p) => {\n const pc = new TabPageController(args.document, {\n blade: createBlade(),\n itemProps: ValueMap.fromObject({\n selected: false,\n title: p.title,\n }),\n props: ValueMap.fromObject({\n selected: false,\n }),\n viewProps: ViewProps.create(),\n });\n c.add(pc);\n });\n return c;\n },\n api(args) {\n if (args.controller instanceof TabController) {\n return new TabApi(args.controller, args.pool);\n }\n if (args.controller instanceof TabPageController) {\n return new TabPageApi(args.controller, args.pool);\n }\n return null;\n },\n});\n\nclass ListInputBindingApi extends BindingApi {\n get options() {\n return this.controller.valueController.props.get('options');\n }\n set options(options) {\n this.controller.valueController.props.set('options', options);\n }\n}\n\nclass ManualTicker {\n constructor() {\n this.disabled = false;\n this.emitter = new Emitter();\n }\n dispose() { }\n tick() {\n if (this.disabled) {\n return;\n }\n this.emitter.emit('tick', {\n sender: this,\n });\n }\n}\n\nclass IntervalTicker {\n constructor(doc, interval) {\n this.disabled_ = false;\n this.timerId_ = null;\n this.onTick_ = this.onTick_.bind(this);\n this.doc_ = doc;\n this.emitter = new Emitter();\n this.interval_ = interval;\n this.setTimer_();\n }\n get disabled() {\n return this.disabled_;\n }\n set disabled(inactive) {\n this.disabled_ = inactive;\n if (this.disabled_) {\n this.clearTimer_();\n }\n else {\n this.setTimer_();\n }\n }\n dispose() {\n this.clearTimer_();\n }\n clearTimer_() {\n if (this.timerId_ === null) {\n return;\n }\n const win = this.doc_.defaultView;\n if (win) {\n win.clearInterval(this.timerId_);\n }\n this.timerId_ = null;\n }\n setTimer_() {\n this.clearTimer_();\n if (this.interval_ <= 0) {\n return;\n }\n const win = this.doc_.defaultView;\n if (win) {\n this.timerId_ = win.setInterval(this.onTick_, this.interval_);\n }\n }\n onTick_() {\n if (this.disabled_) {\n return;\n }\n this.emitter.emit('tick', {\n sender: this,\n });\n }\n}\n\nclass CompositeConstraint {\n constructor(constraints) {\n this.constraints = constraints;\n }\n constrain(value) {\n return this.constraints.reduce((result, c) => {\n return c.constrain(result);\n }, value);\n }\n}\nfunction findConstraint(c, constraintClass) {\n if (c instanceof constraintClass) {\n return c;\n }\n if (c instanceof CompositeConstraint) {\n const result = c.constraints.reduce((tmpResult, sc) => {\n if (tmpResult) {\n return tmpResult;\n }\n return sc instanceof constraintClass ? sc : null;\n }, null);\n if (result) {\n return result;\n }\n }\n return null;\n}\n\nclass ListConstraint {\n constructor(options) {\n this.values = ValueMap.fromObject({\n options: options,\n });\n }\n constrain(value) {\n const opts = this.values.get('options');\n if (opts.length === 0) {\n return value;\n }\n const matched = opts.filter((item) => {\n return item.value === value;\n }).length > 0;\n return matched ? value : opts[0].value;\n }\n}\n\nfunction parseListOptions(value) {\n var _a;\n const p = MicroParsers;\n if (Array.isArray(value)) {\n return (_a = parseRecord({ items: value }, (p) => ({\n items: p.required.array(p.required.object({\n text: p.required.string,\n value: p.required.raw,\n })),\n }))) === null || _a === void 0 ? void 0 : _a.items;\n }\n if (typeof value === 'object') {\n return p.required.raw(value)\n .value;\n }\n return undefined;\n}\nfunction normalizeListOptions(options) {\n if (Array.isArray(options)) {\n return options;\n }\n const items = [];\n Object.keys(options).forEach((text) => {\n items.push({ text: text, value: options[text] });\n });\n return items;\n}\nfunction createListConstraint(options) {\n return !isEmpty(options)\n ? new ListConstraint(normalizeListOptions(forceCast(options)))\n : null;\n}\n\nconst cn$j = ClassName('lst');\nclass ListView {\n constructor(doc, config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.props_ = config.props;\n this.element = doc.createElement('div');\n this.element.classList.add(cn$j());\n config.viewProps.bindClassModifiers(this.element);\n const selectElem = doc.createElement('select');\n selectElem.classList.add(cn$j('s'));\n config.viewProps.bindDisabled(selectElem);\n this.element.appendChild(selectElem);\n this.selectElement = selectElem;\n const markElem = doc.createElement('div');\n markElem.classList.add(cn$j('m'));\n markElem.appendChild(createSvgIconElement(doc, 'dropdown'));\n this.element.appendChild(markElem);\n config.value.emitter.on('change', this.onValueChange_);\n this.value_ = config.value;\n bindValueMap(this.props_, 'options', (opts) => {\n removeChildElements(this.selectElement);\n opts.forEach((item) => {\n const optionElem = doc.createElement('option');\n optionElem.textContent = item.text;\n this.selectElement.appendChild(optionElem);\n });\n this.update_();\n });\n }\n update_() {\n const values = this.props_.get('options').map((o) => o.value);\n this.selectElement.selectedIndex = values.indexOf(this.value_.rawValue);\n }\n onValueChange_() {\n this.update_();\n }\n}\n\nclass ListController {\n constructor(doc, config) {\n this.onSelectChange_ = this.onSelectChange_.bind(this);\n this.props = config.props;\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new ListView(doc, {\n props: this.props,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view.selectElement.addEventListener('change', this.onSelectChange_);\n }\n onSelectChange_(e) {\n const selectElem = forceCast(e.currentTarget);\n this.value.rawValue =\n this.props.get('options')[selectElem.selectedIndex].value;\n }\n importProps(state) {\n return importBladeState(state, null, (p) => ({\n options: p.required.custom(parseListOptions),\n }), (result) => {\n this.props.set('options', normalizeListOptions(result.options));\n return true;\n });\n }\n exportProps() {\n return exportBladeState(null, {\n options: this.props.get('options'),\n });\n }\n}\n\nconst cn$i = ClassName('pop');\nclass PopupView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(cn$i());\n config.viewProps.bindClassModifiers(this.element);\n bindValue(config.shows, valueToClassName(this.element, cn$i(undefined, 'v')));\n }\n}\n\nclass PopupController {\n constructor(doc, config) {\n this.shows = createValue(false);\n this.viewProps = config.viewProps;\n this.view = new PopupView(doc, {\n shows: this.shows,\n viewProps: this.viewProps,\n });\n }\n}\n\nconst cn$h = ClassName('txt');\nclass TextView {\n constructor(doc, config) {\n this.onChange_ = this.onChange_.bind(this);\n this.element = doc.createElement('div');\n this.element.classList.add(cn$h());\n config.viewProps.bindClassModifiers(this.element);\n this.props_ = config.props;\n this.props_.emitter.on('change', this.onChange_);\n const inputElem = doc.createElement('input');\n inputElem.classList.add(cn$h('i'));\n inputElem.type = 'text';\n config.viewProps.bindDisabled(inputElem);\n this.element.appendChild(inputElem);\n this.inputElement = inputElem;\n config.value.emitter.on('change', this.onChange_);\n this.value_ = config.value;\n this.refresh();\n }\n refresh() {\n const formatter = this.props_.get('formatter');\n this.inputElement.value = formatter(this.value_.rawValue);\n }\n onChange_() {\n this.refresh();\n }\n}\n\nclass TextController {\n constructor(doc, config) {\n this.onInputChange_ = this.onInputChange_.bind(this);\n this.parser_ = config.parser;\n this.props = config.props;\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new TextView(doc, {\n props: config.props,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view.inputElement.addEventListener('change', this.onInputChange_);\n }\n onInputChange_(e) {\n const inputElem = forceCast(e.currentTarget);\n const value = inputElem.value;\n const parsedValue = this.parser_(value);\n if (!isEmpty(parsedValue)) {\n this.value.rawValue = parsedValue;\n }\n this.view.refresh();\n }\n}\n\nfunction boolToString(value) {\n return String(value);\n}\nfunction boolFromUnknown(value) {\n if (value === 'false') {\n return false;\n }\n return !!value;\n}\nfunction BooleanFormatter(value) {\n return boolToString(value);\n}\n\nfunction composeParsers(parsers) {\n return (text) => {\n return parsers.reduce((result, parser) => {\n if (result !== null) {\n return result;\n }\n return parser(text);\n }, null);\n };\n}\n\nconst innerFormatter = createNumberFormatter(0);\nfunction formatPercentage(value) {\n return innerFormatter(value) + '%';\n}\n\nfunction stringFromUnknown(value) {\n return String(value);\n}\nfunction formatString(value) {\n return value;\n}\n\nfunction connectValues({ primary, secondary, forward, backward, }) {\n let changing = false;\n function preventFeedback(callback) {\n if (changing) {\n return;\n }\n changing = true;\n callback();\n changing = false;\n }\n primary.emitter.on('change', (ev) => {\n preventFeedback(() => {\n secondary.setRawValue(forward(primary.rawValue, secondary.rawValue), ev.options);\n });\n });\n secondary.emitter.on('change', (ev) => {\n preventFeedback(() => {\n primary.setRawValue(backward(primary.rawValue, secondary.rawValue), ev.options);\n });\n preventFeedback(() => {\n secondary.setRawValue(forward(primary.rawValue, secondary.rawValue), ev.options);\n });\n });\n preventFeedback(() => {\n secondary.setRawValue(forward(primary.rawValue, secondary.rawValue), {\n forceEmit: false,\n last: true,\n });\n });\n}\n\nfunction getStepForKey(keyScale, keys) {\n const step = keyScale * (keys.altKey ? 0.1 : 1) * (keys.shiftKey ? 10 : 1);\n if (keys.upKey) {\n return +step;\n }\n else if (keys.downKey) {\n return -step;\n }\n return 0;\n}\nfunction getVerticalStepKeys(ev) {\n return {\n altKey: ev.altKey,\n downKey: ev.key === 'ArrowDown',\n shiftKey: ev.shiftKey,\n upKey: ev.key === 'ArrowUp',\n };\n}\nfunction getHorizontalStepKeys(ev) {\n return {\n altKey: ev.altKey,\n downKey: ev.key === 'ArrowLeft',\n shiftKey: ev.shiftKey,\n upKey: ev.key === 'ArrowRight',\n };\n}\nfunction isVerticalArrowKey(key) {\n return key === 'ArrowUp' || key === 'ArrowDown';\n}\nfunction isArrowKey(key) {\n return isVerticalArrowKey(key) || key === 'ArrowLeft' || key === 'ArrowRight';\n}\n\nfunction computeOffset$1(ev, elem) {\n var _a, _b;\n const win = elem.ownerDocument.defaultView;\n const rect = elem.getBoundingClientRect();\n return {\n x: ev.pageX - (((_a = (win && win.scrollX)) !== null && _a !== void 0 ? _a : 0) + rect.left),\n y: ev.pageY - (((_b = (win && win.scrollY)) !== null && _b !== void 0 ? _b : 0) + rect.top),\n };\n}\nclass PointerHandler {\n constructor(element) {\n this.lastTouch_ = null;\n this.onDocumentMouseMove_ = this.onDocumentMouseMove_.bind(this);\n this.onDocumentMouseUp_ = this.onDocumentMouseUp_.bind(this);\n this.onMouseDown_ = this.onMouseDown_.bind(this);\n this.onTouchEnd_ = this.onTouchEnd_.bind(this);\n this.onTouchMove_ = this.onTouchMove_.bind(this);\n this.onTouchStart_ = this.onTouchStart_.bind(this);\n this.elem_ = element;\n this.emitter = new Emitter();\n element.addEventListener('touchstart', this.onTouchStart_, {\n passive: false,\n });\n element.addEventListener('touchmove', this.onTouchMove_, {\n passive: true,\n });\n element.addEventListener('touchend', this.onTouchEnd_);\n element.addEventListener('mousedown', this.onMouseDown_);\n }\n computePosition_(offset) {\n const rect = this.elem_.getBoundingClientRect();\n return {\n bounds: {\n width: rect.width,\n height: rect.height,\n },\n point: offset\n ? {\n x: offset.x,\n y: offset.y,\n }\n : null,\n };\n }\n onMouseDown_(ev) {\n var _a;\n ev.preventDefault();\n (_a = ev.currentTarget) === null || _a === void 0 ? void 0 : _a.focus();\n const doc = this.elem_.ownerDocument;\n doc.addEventListener('mousemove', this.onDocumentMouseMove_);\n doc.addEventListener('mouseup', this.onDocumentMouseUp_);\n this.emitter.emit('down', {\n altKey: ev.altKey,\n data: this.computePosition_(computeOffset$1(ev, this.elem_)),\n sender: this,\n shiftKey: ev.shiftKey,\n });\n }\n onDocumentMouseMove_(ev) {\n this.emitter.emit('move', {\n altKey: ev.altKey,\n data: this.computePosition_(computeOffset$1(ev, this.elem_)),\n sender: this,\n shiftKey: ev.shiftKey,\n });\n }\n onDocumentMouseUp_(ev) {\n const doc = this.elem_.ownerDocument;\n doc.removeEventListener('mousemove', this.onDocumentMouseMove_);\n doc.removeEventListener('mouseup', this.onDocumentMouseUp_);\n this.emitter.emit('up', {\n altKey: ev.altKey,\n data: this.computePosition_(computeOffset$1(ev, this.elem_)),\n sender: this,\n shiftKey: ev.shiftKey,\n });\n }\n onTouchStart_(ev) {\n ev.preventDefault();\n const touch = ev.targetTouches.item(0);\n const rect = this.elem_.getBoundingClientRect();\n this.emitter.emit('down', {\n altKey: ev.altKey,\n data: this.computePosition_(touch\n ? {\n x: touch.clientX - rect.left,\n y: touch.clientY - rect.top,\n }\n : undefined),\n sender: this,\n shiftKey: ev.shiftKey,\n });\n this.lastTouch_ = touch;\n }\n onTouchMove_(ev) {\n const touch = ev.targetTouches.item(0);\n const rect = this.elem_.getBoundingClientRect();\n this.emitter.emit('move', {\n altKey: ev.altKey,\n data: this.computePosition_(touch\n ? {\n x: touch.clientX - rect.left,\n y: touch.clientY - rect.top,\n }\n : undefined),\n sender: this,\n shiftKey: ev.shiftKey,\n });\n this.lastTouch_ = touch;\n }\n onTouchEnd_(ev) {\n var _a;\n const touch = (_a = ev.targetTouches.item(0)) !== null && _a !== void 0 ? _a : this.lastTouch_;\n const rect = this.elem_.getBoundingClientRect();\n this.emitter.emit('up', {\n altKey: ev.altKey,\n data: this.computePosition_(touch\n ? {\n x: touch.clientX - rect.left,\n y: touch.clientY - rect.top,\n }\n : undefined),\n sender: this,\n shiftKey: ev.shiftKey,\n });\n }\n}\n\nconst cn$g = ClassName('txt');\nclass NumberTextView {\n constructor(doc, config) {\n this.onChange_ = this.onChange_.bind(this);\n this.props_ = config.props;\n this.props_.emitter.on('change', this.onChange_);\n this.element = doc.createElement('div');\n this.element.classList.add(cn$g(), cn$g(undefined, 'num'));\n if (config.arrayPosition) {\n this.element.classList.add(cn$g(undefined, config.arrayPosition));\n }\n config.viewProps.bindClassModifiers(this.element);\n const inputElem = doc.createElement('input');\n inputElem.classList.add(cn$g('i'));\n inputElem.type = 'text';\n config.viewProps.bindDisabled(inputElem);\n this.element.appendChild(inputElem);\n this.inputElement = inputElem;\n this.onDraggingChange_ = this.onDraggingChange_.bind(this);\n this.dragging_ = config.dragging;\n this.dragging_.emitter.on('change', this.onDraggingChange_);\n this.element.classList.add(cn$g());\n this.inputElement.classList.add(cn$g('i'));\n const knobElem = doc.createElement('div');\n knobElem.classList.add(cn$g('k'));\n this.element.appendChild(knobElem);\n this.knobElement = knobElem;\n const guideElem = doc.createElementNS(SVG_NS, 'svg');\n guideElem.classList.add(cn$g('g'));\n this.knobElement.appendChild(guideElem);\n const bodyElem = doc.createElementNS(SVG_NS, 'path');\n bodyElem.classList.add(cn$g('gb'));\n guideElem.appendChild(bodyElem);\n this.guideBodyElem_ = bodyElem;\n const headElem = doc.createElementNS(SVG_NS, 'path');\n headElem.classList.add(cn$g('gh'));\n guideElem.appendChild(headElem);\n this.guideHeadElem_ = headElem;\n const tooltipElem = doc.createElement('div');\n tooltipElem.classList.add(ClassName('tt')());\n this.knobElement.appendChild(tooltipElem);\n this.tooltipElem_ = tooltipElem;\n config.value.emitter.on('change', this.onChange_);\n this.value = config.value;\n this.refresh();\n }\n onDraggingChange_(ev) {\n if (ev.rawValue === null) {\n this.element.classList.remove(cn$g(undefined, 'drg'));\n return;\n }\n this.element.classList.add(cn$g(undefined, 'drg'));\n const x = ev.rawValue / this.props_.get('pointerScale');\n const aox = x + (x > 0 ? -1 : x < 0 ? +1 : 0);\n const adx = constrainRange(-aox, -4, +4);\n this.guideHeadElem_.setAttributeNS(null, 'd', [`M ${aox + adx},0 L${aox},4 L${aox + adx},8`, `M ${x},-1 L${x},9`].join(' '));\n this.guideBodyElem_.setAttributeNS(null, 'd', `M 0,4 L${x},4`);\n const formatter = this.props_.get('formatter');\n this.tooltipElem_.textContent = formatter(this.value.rawValue);\n this.tooltipElem_.style.left = `${x}px`;\n }\n refresh() {\n const formatter = this.props_.get('formatter');\n this.inputElement.value = formatter(this.value.rawValue);\n }\n onChange_() {\n this.refresh();\n }\n}\n\nclass NumberTextController {\n constructor(doc, config) {\n var _a;\n this.originRawValue_ = 0;\n this.onInputChange_ = this.onInputChange_.bind(this);\n this.onInputKeyDown_ = this.onInputKeyDown_.bind(this);\n this.onInputKeyUp_ = this.onInputKeyUp_.bind(this);\n this.onPointerDown_ = this.onPointerDown_.bind(this);\n this.onPointerMove_ = this.onPointerMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.parser_ = config.parser;\n this.props = config.props;\n this.sliderProps_ = (_a = config.sliderProps) !== null && _a !== void 0 ? _a : null;\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.dragging_ = createValue(null);\n this.view = new NumberTextView(doc, {\n arrayPosition: config.arrayPosition,\n dragging: this.dragging_,\n props: this.props,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view.inputElement.addEventListener('change', this.onInputChange_);\n this.view.inputElement.addEventListener('keydown', this.onInputKeyDown_);\n this.view.inputElement.addEventListener('keyup', this.onInputKeyUp_);\n const ph = new PointerHandler(this.view.knobElement);\n ph.emitter.on('down', this.onPointerDown_);\n ph.emitter.on('move', this.onPointerMove_);\n ph.emitter.on('up', this.onPointerUp_);\n }\n constrainValue_(value) {\n var _a, _b;\n const min = (_a = this.sliderProps_) === null || _a === void 0 ? void 0 : _a.get('min');\n const max = (_b = this.sliderProps_) === null || _b === void 0 ? void 0 : _b.get('max');\n let v = value;\n if (min !== undefined) {\n v = Math.max(v, min);\n }\n if (max !== undefined) {\n v = Math.min(v, max);\n }\n return v;\n }\n onInputChange_(e) {\n const inputElem = forceCast(e.currentTarget);\n const value = inputElem.value;\n const parsedValue = this.parser_(value);\n if (!isEmpty(parsedValue)) {\n this.value.rawValue = this.constrainValue_(parsedValue);\n }\n this.view.refresh();\n }\n onInputKeyDown_(ev) {\n const step = getStepForKey(this.props.get('keyScale'), getVerticalStepKeys(ev));\n if (step === 0) {\n return;\n }\n this.value.setRawValue(this.constrainValue_(this.value.rawValue + step), {\n forceEmit: false,\n last: false,\n });\n }\n onInputKeyUp_(ev) {\n const step = getStepForKey(this.props.get('keyScale'), getVerticalStepKeys(ev));\n if (step === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n onPointerDown_() {\n this.originRawValue_ = this.value.rawValue;\n this.dragging_.rawValue = 0;\n }\n computeDraggingValue_(data) {\n if (!data.point) {\n return null;\n }\n const dx = data.point.x - data.bounds.width / 2;\n return this.constrainValue_(this.originRawValue_ + dx * this.props.get('pointerScale'));\n }\n onPointerMove_(ev) {\n const v = this.computeDraggingValue_(ev.data);\n if (v === null) {\n return;\n }\n this.value.setRawValue(v, {\n forceEmit: false,\n last: false,\n });\n this.dragging_.rawValue = this.value.rawValue - this.originRawValue_;\n }\n onPointerUp_(ev) {\n const v = this.computeDraggingValue_(ev.data);\n if (v === null) {\n return;\n }\n this.value.setRawValue(v, {\n forceEmit: true,\n last: true,\n });\n this.dragging_.rawValue = null;\n }\n}\n\nconst cn$f = ClassName('sld');\nclass SliderView {\n constructor(doc, config) {\n this.onChange_ = this.onChange_.bind(this);\n this.props_ = config.props;\n this.props_.emitter.on('change', this.onChange_);\n this.element = doc.createElement('div');\n this.element.classList.add(cn$f());\n config.viewProps.bindClassModifiers(this.element);\n const trackElem = doc.createElement('div');\n trackElem.classList.add(cn$f('t'));\n config.viewProps.bindTabIndex(trackElem);\n this.element.appendChild(trackElem);\n this.trackElement = trackElem;\n const knobElem = doc.createElement('div');\n knobElem.classList.add(cn$f('k'));\n this.trackElement.appendChild(knobElem);\n this.knobElement = knobElem;\n config.value.emitter.on('change', this.onChange_);\n this.value = config.value;\n this.update_();\n }\n update_() {\n const p = constrainRange(mapRange(this.value.rawValue, this.props_.get('min'), this.props_.get('max'), 0, 100), 0, 100);\n this.knobElement.style.width = `${p}%`;\n }\n onChange_() {\n this.update_();\n }\n}\n\nclass SliderController {\n constructor(doc, config) {\n this.onKeyDown_ = this.onKeyDown_.bind(this);\n this.onKeyUp_ = this.onKeyUp_.bind(this);\n this.onPointerDownOrMove_ = this.onPointerDownOrMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.props = config.props;\n this.view = new SliderView(doc, {\n props: this.props,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.ptHandler_ = new PointerHandler(this.view.trackElement);\n this.ptHandler_.emitter.on('down', this.onPointerDownOrMove_);\n this.ptHandler_.emitter.on('move', this.onPointerDownOrMove_);\n this.ptHandler_.emitter.on('up', this.onPointerUp_);\n this.view.trackElement.addEventListener('keydown', this.onKeyDown_);\n this.view.trackElement.addEventListener('keyup', this.onKeyUp_);\n }\n handlePointerEvent_(d, opts) {\n if (!d.point) {\n return;\n }\n this.value.setRawValue(mapRange(constrainRange(d.point.x, 0, d.bounds.width), 0, d.bounds.width, this.props.get('min'), this.props.get('max')), opts);\n }\n onPointerDownOrMove_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerUp_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: true,\n last: true,\n });\n }\n onKeyDown_(ev) {\n const step = getStepForKey(this.props.get('keyScale'), getHorizontalStepKeys(ev));\n if (step === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue + step, {\n forceEmit: false,\n last: false,\n });\n }\n onKeyUp_(ev) {\n const step = getStepForKey(this.props.get('keyScale'), getHorizontalStepKeys(ev));\n if (step === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n}\n\nconst cn$e = ClassName('sldtxt');\nclass SliderTextView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(cn$e());\n const sliderElem = doc.createElement('div');\n sliderElem.classList.add(cn$e('s'));\n this.sliderView_ = config.sliderView;\n sliderElem.appendChild(this.sliderView_.element);\n this.element.appendChild(sliderElem);\n const textElem = doc.createElement('div');\n textElem.classList.add(cn$e('t'));\n this.textView_ = config.textView;\n textElem.appendChild(this.textView_.element);\n this.element.appendChild(textElem);\n }\n}\n\nclass SliderTextController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.sliderC_ = new SliderController(doc, {\n props: config.sliderProps,\n value: config.value,\n viewProps: this.viewProps,\n });\n this.textC_ = new NumberTextController(doc, {\n parser: config.parser,\n props: config.textProps,\n sliderProps: config.sliderProps,\n value: config.value,\n viewProps: config.viewProps,\n });\n this.view = new SliderTextView(doc, {\n sliderView: this.sliderC_.view,\n textView: this.textC_.view,\n });\n }\n get sliderController() {\n return this.sliderC_;\n }\n get textController() {\n return this.textC_;\n }\n importProps(state) {\n return importBladeState(state, null, (p) => ({\n max: p.required.number,\n min: p.required.number,\n }), (result) => {\n const sliderProps = this.sliderC_.props;\n sliderProps.set('max', result.max);\n sliderProps.set('min', result.min);\n return true;\n });\n }\n exportProps() {\n const sliderProps = this.sliderC_.props;\n return exportBladeState(null, {\n max: sliderProps.get('max'),\n min: sliderProps.get('min'),\n });\n }\n}\nfunction createSliderTextProps(config) {\n return {\n sliderProps: new ValueMap({\n keyScale: config.keyScale,\n max: config.max,\n min: config.min,\n }),\n textProps: new ValueMap({\n formatter: createValue(config.formatter),\n keyScale: config.keyScale,\n pointerScale: createValue(config.pointerScale),\n }),\n };\n}\n\nconst CSS_VAR_MAP = {\n containerUnitSize: 'cnt-usz',\n};\nfunction getCssVar(key) {\n return `--${CSS_VAR_MAP[key]}`;\n}\n\nclass PlainView {\n constructor(doc, config) {\n const cn = ClassName(config.viewName);\n this.element = doc.createElement('div');\n this.element.classList.add(cn());\n config.viewProps.bindClassModifiers(this.element);\n }\n}\n\nfunction createPointDimensionParser(p) {\n return createNumberTextInputParamsParser(p);\n}\nfunction parsePointDimensionParams(value) {\n if (!isRecord(value)) {\n return undefined;\n }\n return parseRecord(value, createPointDimensionParser);\n}\nfunction createDimensionConstraint(params, initialValue) {\n if (!params) {\n return undefined;\n }\n const constraints = [];\n const cs = createStepConstraint(params, initialValue);\n if (cs) {\n constraints.push(cs);\n }\n const rs = createRangeConstraint(params);\n if (rs) {\n constraints.push(rs);\n }\n return new CompositeConstraint(constraints);\n}\n\nfunction parsePickerLayout(value) {\n if (value === 'inline' || value === 'popup') {\n return value;\n }\n return undefined;\n}\n\nfunction writePrimitive(target, value) {\n target.write(value);\n}\n\nconst cn$d = ClassName('ckb');\nclass CheckboxView {\n constructor(doc, config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.element = doc.createElement('div');\n this.element.classList.add(cn$d());\n config.viewProps.bindClassModifiers(this.element);\n const labelElem = doc.createElement('label');\n labelElem.classList.add(cn$d('l'));\n this.element.appendChild(labelElem);\n const inputElem = doc.createElement('input');\n inputElem.classList.add(cn$d('i'));\n inputElem.type = 'checkbox';\n labelElem.appendChild(inputElem);\n this.inputElement = inputElem;\n config.viewProps.bindDisabled(this.inputElement);\n const wrapperElem = doc.createElement('div');\n wrapperElem.classList.add(cn$d('w'));\n labelElem.appendChild(wrapperElem);\n const markElem = createSvgIconElement(doc, 'check');\n wrapperElem.appendChild(markElem);\n config.value.emitter.on('change', this.onValueChange_);\n this.value = config.value;\n this.update_();\n }\n update_() {\n this.inputElement.checked = this.value.rawValue;\n }\n onValueChange_() {\n this.update_();\n }\n}\n\nclass CheckboxController {\n constructor(doc, config) {\n this.onInputChange_ = this.onInputChange_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new CheckboxView(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view.inputElement.addEventListener('change', this.onInputChange_);\n }\n onInputChange_(e) {\n const inputElem = forceCast(e.currentTarget);\n this.value.rawValue = inputElem.checked;\n }\n}\n\nfunction createConstraint$8(params) {\n const constraints = [];\n const lc = createListConstraint(params.options);\n if (lc) {\n constraints.push(lc);\n }\n return new CompositeConstraint(constraints);\n}\ncreatePlugin({\n id: 'input-bool',\n type: 'input',\n accept: (value, params) => {\n if (typeof value !== 'boolean') {\n return null;\n }\n const result = parseRecord(params, (p) => ({\n options: p.optional.custom(parseListOptions),\n readonly: p.optional.constant(false),\n }));\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => boolFromUnknown,\n constraint: (args) => createConstraint$8(args.params),\n writer: (_args) => writePrimitive,\n },\n controller: (args) => {\n const doc = args.document;\n const value = args.value;\n const c = args.constraint;\n const lc = c && findConstraint(c, ListConstraint);\n if (lc) {\n return new ListController(doc, {\n props: new ValueMap({\n options: lc.values.value('options'),\n }),\n value: value,\n viewProps: args.viewProps,\n });\n }\n return new CheckboxController(doc, {\n value: value,\n viewProps: args.viewProps,\n });\n },\n api(args) {\n if (typeof args.controller.value.rawValue !== 'boolean') {\n return null;\n }\n if (args.controller.valueController instanceof ListController) {\n return new ListInputBindingApi(args.controller);\n }\n return null;\n },\n});\n\nconst cn$c = ClassName('col');\nclass ColorView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(cn$c());\n config.foldable.bindExpandedClass(this.element, cn$c(undefined, 'expanded'));\n bindValueMap(config.foldable, 'completed', valueToClassName(this.element, cn$c(undefined, 'cpl')));\n const headElem = doc.createElement('div');\n headElem.classList.add(cn$c('h'));\n this.element.appendChild(headElem);\n const swatchElem = doc.createElement('div');\n swatchElem.classList.add(cn$c('s'));\n headElem.appendChild(swatchElem);\n this.swatchElement = swatchElem;\n const textElem = doc.createElement('div');\n textElem.classList.add(cn$c('t'));\n headElem.appendChild(textElem);\n this.textElement = textElem;\n if (config.pickerLayout === 'inline') {\n const pickerElem = doc.createElement('div');\n pickerElem.classList.add(cn$c('p'));\n this.element.appendChild(pickerElem);\n this.pickerElement = pickerElem;\n }\n else {\n this.pickerElement = null;\n }\n }\n}\n\nfunction rgbToHslInt(r, g, b) {\n const rp = constrainRange(r / 255, 0, 1);\n const gp = constrainRange(g / 255, 0, 1);\n const bp = constrainRange(b / 255, 0, 1);\n const cmax = Math.max(rp, gp, bp);\n const cmin = Math.min(rp, gp, bp);\n const c = cmax - cmin;\n let h = 0;\n let s = 0;\n const l = (cmin + cmax) / 2;\n if (c !== 0) {\n s = c / (1 - Math.abs(cmax + cmin - 1));\n if (rp === cmax) {\n h = (gp - bp) / c;\n }\n else if (gp === cmax) {\n h = 2 + (bp - rp) / c;\n }\n else {\n h = 4 + (rp - gp) / c;\n }\n h = h / 6 + (h < 0 ? 1 : 0);\n }\n return [h * 360, s * 100, l * 100];\n}\nfunction hslToRgbInt(h, s, l) {\n const hp = ((h % 360) + 360) % 360;\n const sp = constrainRange(s / 100, 0, 1);\n const lp = constrainRange(l / 100, 0, 1);\n const c = (1 - Math.abs(2 * lp - 1)) * sp;\n const x = c * (1 - Math.abs(((hp / 60) % 2) - 1));\n const m = lp - c / 2;\n let rp, gp, bp;\n if (hp >= 0 && hp < 60) {\n [rp, gp, bp] = [c, x, 0];\n }\n else if (hp >= 60 && hp < 120) {\n [rp, gp, bp] = [x, c, 0];\n }\n else if (hp >= 120 && hp < 180) {\n [rp, gp, bp] = [0, c, x];\n }\n else if (hp >= 180 && hp < 240) {\n [rp, gp, bp] = [0, x, c];\n }\n else if (hp >= 240 && hp < 300) {\n [rp, gp, bp] = [x, 0, c];\n }\n else {\n [rp, gp, bp] = [c, 0, x];\n }\n return [(rp + m) * 255, (gp + m) * 255, (bp + m) * 255];\n}\nfunction rgbToHsvInt(r, g, b) {\n const rp = constrainRange(r / 255, 0, 1);\n const gp = constrainRange(g / 255, 0, 1);\n const bp = constrainRange(b / 255, 0, 1);\n const cmax = Math.max(rp, gp, bp);\n const cmin = Math.min(rp, gp, bp);\n const d = cmax - cmin;\n let h;\n if (d === 0) {\n h = 0;\n }\n else if (cmax === rp) {\n h = 60 * (((((gp - bp) / d) % 6) + 6) % 6);\n }\n else if (cmax === gp) {\n h = 60 * ((bp - rp) / d + 2);\n }\n else {\n h = 60 * ((rp - gp) / d + 4);\n }\n const s = cmax === 0 ? 0 : d / cmax;\n const v = cmax;\n return [h, s * 100, v * 100];\n}\nfunction hsvToRgbInt(h, s, v) {\n const hp = loopRange(h, 360);\n const sp = constrainRange(s / 100, 0, 1);\n const vp = constrainRange(v / 100, 0, 1);\n const c = vp * sp;\n const x = c * (1 - Math.abs(((hp / 60) % 2) - 1));\n const m = vp - c;\n let rp, gp, bp;\n if (hp >= 0 && hp < 60) {\n [rp, gp, bp] = [c, x, 0];\n }\n else if (hp >= 60 && hp < 120) {\n [rp, gp, bp] = [x, c, 0];\n }\n else if (hp >= 120 && hp < 180) {\n [rp, gp, bp] = [0, c, x];\n }\n else if (hp >= 180 && hp < 240) {\n [rp, gp, bp] = [0, x, c];\n }\n else if (hp >= 240 && hp < 300) {\n [rp, gp, bp] = [x, 0, c];\n }\n else {\n [rp, gp, bp] = [c, 0, x];\n }\n return [(rp + m) * 255, (gp + m) * 255, (bp + m) * 255];\n}\nfunction hslToHsvInt(h, s, l) {\n const sd = l + (s * (100 - Math.abs(2 * l - 100))) / (2 * 100);\n return [\n h,\n sd !== 0 ? (s * (100 - Math.abs(2 * l - 100))) / sd : 0,\n l + (s * (100 - Math.abs(2 * l - 100))) / (2 * 100),\n ];\n}\nfunction hsvToHslInt(h, s, v) {\n const sd = 100 - Math.abs((v * (200 - s)) / 100 - 100);\n return [h, sd !== 0 ? (s * v) / sd : 0, (v * (200 - s)) / (2 * 100)];\n}\nfunction removeAlphaComponent(comps) {\n return [comps[0], comps[1], comps[2]];\n}\nfunction appendAlphaComponent(comps, alpha) {\n return [comps[0], comps[1], comps[2], alpha];\n}\nconst MODE_CONVERTER_MAP = {\n hsl: {\n hsl: (h, s, l) => [h, s, l],\n hsv: hslToHsvInt,\n rgb: hslToRgbInt,\n },\n hsv: {\n hsl: hsvToHslInt,\n hsv: (h, s, v) => [h, s, v],\n rgb: hsvToRgbInt,\n },\n rgb: {\n hsl: rgbToHslInt,\n hsv: rgbToHsvInt,\n rgb: (r, g, b) => [r, g, b],\n },\n};\nfunction getColorMaxComponents(mode, type) {\n return [\n type === 'float' ? 1 : mode === 'rgb' ? 255 : 360,\n type === 'float' ? 1 : mode === 'rgb' ? 255 : 100,\n type === 'float' ? 1 : mode === 'rgb' ? 255 : 100,\n ];\n}\nfunction loopHueRange(hue, max) {\n return hue === max ? max : loopRange(hue, max);\n}\nfunction constrainColorComponents(components, mode, type) {\n var _a;\n const ms = getColorMaxComponents(mode, type);\n return [\n mode === 'rgb'\n ? constrainRange(components[0], 0, ms[0])\n : loopHueRange(components[0], ms[0]),\n constrainRange(components[1], 0, ms[1]),\n constrainRange(components[2], 0, ms[2]),\n constrainRange((_a = components[3]) !== null && _a !== void 0 ? _a : 1, 0, 1),\n ];\n}\nfunction convertColorType(comps, mode, from, to) {\n const fms = getColorMaxComponents(mode, from);\n const tms = getColorMaxComponents(mode, to);\n return comps.map((c, index) => (c / fms[index]) * tms[index]);\n}\nfunction convertColor(components, from, to) {\n const intComps = convertColorType(components, from.mode, from.type, 'int');\n const result = MODE_CONVERTER_MAP[from.mode][to.mode](...intComps);\n return convertColorType(result, to.mode, 'int', to.type);\n}\n\nclass IntColor {\n static black() {\n return new IntColor([0, 0, 0], 'rgb');\n }\n constructor(comps, mode) {\n this.type = 'int';\n this.mode = mode;\n this.comps_ = constrainColorComponents(comps, mode, this.type);\n }\n getComponents(opt_mode) {\n return appendAlphaComponent(convertColor(removeAlphaComponent(this.comps_), { mode: this.mode, type: this.type }, { mode: opt_mode !== null && opt_mode !== void 0 ? opt_mode : this.mode, type: this.type }), this.comps_[3]);\n }\n toRgbaObject() {\n const rgbComps = this.getComponents('rgb');\n return {\n r: rgbComps[0],\n g: rgbComps[1],\n b: rgbComps[2],\n a: rgbComps[3],\n };\n }\n}\n\nconst cn$b = ClassName('colp');\nclass ColorPickerView {\n constructor(doc, config) {\n this.alphaViews_ = null;\n this.element = doc.createElement('div');\n this.element.classList.add(cn$b());\n config.viewProps.bindClassModifiers(this.element);\n const hsvElem = doc.createElement('div');\n hsvElem.classList.add(cn$b('hsv'));\n const svElem = doc.createElement('div');\n svElem.classList.add(cn$b('sv'));\n this.svPaletteView_ = config.svPaletteView;\n svElem.appendChild(this.svPaletteView_.element);\n hsvElem.appendChild(svElem);\n const hElem = doc.createElement('div');\n hElem.classList.add(cn$b('h'));\n this.hPaletteView_ = config.hPaletteView;\n hElem.appendChild(this.hPaletteView_.element);\n hsvElem.appendChild(hElem);\n this.element.appendChild(hsvElem);\n const rgbElem = doc.createElement('div');\n rgbElem.classList.add(cn$b('rgb'));\n this.textsView_ = config.textsView;\n rgbElem.appendChild(this.textsView_.element);\n this.element.appendChild(rgbElem);\n if (config.alphaViews) {\n this.alphaViews_ = {\n palette: config.alphaViews.palette,\n text: config.alphaViews.text,\n };\n const aElem = doc.createElement('div');\n aElem.classList.add(cn$b('a'));\n const apElem = doc.createElement('div');\n apElem.classList.add(cn$b('ap'));\n apElem.appendChild(this.alphaViews_.palette.element);\n aElem.appendChild(apElem);\n const atElem = doc.createElement('div');\n atElem.classList.add(cn$b('at'));\n atElem.appendChild(this.alphaViews_.text.element);\n aElem.appendChild(atElem);\n this.element.appendChild(aElem);\n }\n }\n get allFocusableElements() {\n const elems = [\n this.svPaletteView_.element,\n this.hPaletteView_.element,\n this.textsView_.modeSelectElement,\n ...this.textsView_.inputViews.map((v) => v.inputElement),\n ];\n if (this.alphaViews_) {\n elems.push(this.alphaViews_.palette.element, this.alphaViews_.text.inputElement);\n }\n return elems;\n }\n}\n\nfunction parseColorType(value) {\n return value === 'int' ? 'int' : value === 'float' ? 'float' : undefined;\n}\nfunction parseColorInputParams(params) {\n return parseRecord(params, (p) => ({\n color: p.optional.object({\n alpha: p.optional.boolean,\n type: p.optional.custom(parseColorType),\n }),\n expanded: p.optional.boolean,\n picker: p.optional.custom(parsePickerLayout),\n readonly: p.optional.constant(false),\n }));\n}\nfunction getKeyScaleForColor(forAlpha) {\n return forAlpha ? 0.1 : 1;\n}\nfunction extractColorType(params) {\n var _a;\n return (_a = params.color) === null || _a === void 0 ? void 0 : _a.type;\n}\n\nclass FloatColor {\n constructor(comps, mode) {\n this.type = 'float';\n this.mode = mode;\n this.comps_ = constrainColorComponents(comps, mode, this.type);\n }\n getComponents(opt_mode) {\n return appendAlphaComponent(convertColor(removeAlphaComponent(this.comps_), { mode: this.mode, type: this.type }, { mode: opt_mode !== null && opt_mode !== void 0 ? opt_mode : this.mode, type: this.type }), this.comps_[3]);\n }\n toRgbaObject() {\n const rgbComps = this.getComponents('rgb');\n return {\n r: rgbComps[0],\n g: rgbComps[1],\n b: rgbComps[2],\n a: rgbComps[3],\n };\n }\n}\n\nconst TYPE_TO_CONSTRUCTOR_MAP = {\n int: (comps, mode) => new IntColor(comps, mode),\n float: (comps, mode) => new FloatColor(comps, mode),\n};\nfunction createColor(comps, mode, type) {\n return TYPE_TO_CONSTRUCTOR_MAP[type](comps, mode);\n}\nfunction isFloatColor(c) {\n return c.type === 'float';\n}\nfunction isIntColor(c) {\n return c.type === 'int';\n}\nfunction convertFloatToInt(cf) {\n const comps = cf.getComponents();\n const ms = getColorMaxComponents(cf.mode, 'int');\n return new IntColor([\n Math.round(mapRange(comps[0], 0, 1, 0, ms[0])),\n Math.round(mapRange(comps[1], 0, 1, 0, ms[1])),\n Math.round(mapRange(comps[2], 0, 1, 0, ms[2])),\n comps[3],\n ], cf.mode);\n}\nfunction convertIntToFloat(ci) {\n const comps = ci.getComponents();\n const ms = getColorMaxComponents(ci.mode, 'int');\n return new FloatColor([\n mapRange(comps[0], 0, ms[0], 0, 1),\n mapRange(comps[1], 0, ms[1], 0, 1),\n mapRange(comps[2], 0, ms[2], 0, 1),\n comps[3],\n ], ci.mode);\n}\nfunction mapColorType(c, type) {\n if (c.type === type) {\n return c;\n }\n if (isIntColor(c) && type === 'float') {\n return convertIntToFloat(c);\n }\n if (isFloatColor(c) && type === 'int') {\n return convertFloatToInt(c);\n }\n throw TpError.shouldNeverHappen();\n}\n\nfunction equalsStringColorFormat(f1, f2) {\n return (f1.alpha === f2.alpha &&\n f1.mode === f2.mode &&\n f1.notation === f2.notation &&\n f1.type === f2.type);\n}\nfunction parseCssNumberOrPercentage(text, max) {\n const m = text.match(/^(.+)%$/);\n if (!m) {\n return Math.min(parseFloat(text), max);\n }\n return Math.min(parseFloat(m[1]) * 0.01 * max, max);\n}\nconst ANGLE_TO_DEG_MAP = {\n deg: (angle) => angle,\n grad: (angle) => (angle * 360) / 400,\n rad: (angle) => (angle * 360) / (2 * Math.PI),\n turn: (angle) => angle * 360,\n};\nfunction parseCssNumberOrAngle(text) {\n const m = text.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);\n if (!m) {\n return parseFloat(text);\n }\n const angle = parseFloat(m[1]);\n const unit = m[2];\n return ANGLE_TO_DEG_MAP[unit](angle);\n}\nfunction parseFunctionalRgbColorComponents(text) {\n const m = text.match(/^rgb\\(\\s*([0-9A-Fa-f.]+%?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*\\)$/);\n if (!m) {\n return null;\n }\n const comps = [\n parseCssNumberOrPercentage(m[1], 255),\n parseCssNumberOrPercentage(m[2], 255),\n parseCssNumberOrPercentage(m[3], 255),\n ];\n if (isNaN(comps[0]) || isNaN(comps[1]) || isNaN(comps[2])) {\n return null;\n }\n return comps;\n}\nfunction parseFunctionalRgbColor(text) {\n const comps = parseFunctionalRgbColorComponents(text);\n return comps ? new IntColor(comps, 'rgb') : null;\n}\nfunction parseFunctionalRgbaColorComponents(text) {\n const m = text.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*\\)$/);\n if (!m) {\n return null;\n }\n const comps = [\n parseCssNumberOrPercentage(m[1], 255),\n parseCssNumberOrPercentage(m[2], 255),\n parseCssNumberOrPercentage(m[3], 255),\n parseCssNumberOrPercentage(m[4], 1),\n ];\n if (isNaN(comps[0]) ||\n isNaN(comps[1]) ||\n isNaN(comps[2]) ||\n isNaN(comps[3])) {\n return null;\n }\n return comps;\n}\nfunction parseFunctionalRgbaColor(text) {\n const comps = parseFunctionalRgbaColorComponents(text);\n return comps ? new IntColor(comps, 'rgb') : null;\n}\nfunction parseFunctionalHslColorComponents(text) {\n const m = text.match(/^hsl\\(\\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*\\)$/);\n if (!m) {\n return null;\n }\n const comps = [\n parseCssNumberOrAngle(m[1]),\n parseCssNumberOrPercentage(m[2], 100),\n parseCssNumberOrPercentage(m[3], 100),\n ];\n if (isNaN(comps[0]) || isNaN(comps[1]) || isNaN(comps[2])) {\n return null;\n }\n return comps;\n}\nfunction parseFunctionalHslColor(text) {\n const comps = parseFunctionalHslColorComponents(text);\n return comps ? new IntColor(comps, 'hsl') : null;\n}\nfunction parseHslaColorComponents(text) {\n const m = text.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*\\)$/);\n if (!m) {\n return null;\n }\n const comps = [\n parseCssNumberOrAngle(m[1]),\n parseCssNumberOrPercentage(m[2], 100),\n parseCssNumberOrPercentage(m[3], 100),\n parseCssNumberOrPercentage(m[4], 1),\n ];\n if (isNaN(comps[0]) ||\n isNaN(comps[1]) ||\n isNaN(comps[2]) ||\n isNaN(comps[3])) {\n return null;\n }\n return comps;\n}\nfunction parseFunctionalHslaColor(text) {\n const comps = parseHslaColorComponents(text);\n return comps ? new IntColor(comps, 'hsl') : null;\n}\nfunction parseHexRgbColorComponents(text) {\n const mRgb = text.match(/^#([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);\n if (mRgb) {\n return [\n parseInt(mRgb[1] + mRgb[1], 16),\n parseInt(mRgb[2] + mRgb[2], 16),\n parseInt(mRgb[3] + mRgb[3], 16),\n ];\n }\n const mRrggbb = text.match(/^(?:#|0x)([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);\n if (mRrggbb) {\n return [\n parseInt(mRrggbb[1], 16),\n parseInt(mRrggbb[2], 16),\n parseInt(mRrggbb[3], 16),\n ];\n }\n return null;\n}\nfunction parseHexRgbColor(text) {\n const comps = parseHexRgbColorComponents(text);\n return comps ? new IntColor(comps, 'rgb') : null;\n}\nfunction parseHexRgbaColorComponents(text) {\n const mRgb = text.match(/^#?([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);\n if (mRgb) {\n return [\n parseInt(mRgb[1] + mRgb[1], 16),\n parseInt(mRgb[2] + mRgb[2], 16),\n parseInt(mRgb[3] + mRgb[3], 16),\n mapRange(parseInt(mRgb[4] + mRgb[4], 16), 0, 255, 0, 1),\n ];\n }\n const mRrggbb = text.match(/^(?:#|0x)?([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);\n if (mRrggbb) {\n return [\n parseInt(mRrggbb[1], 16),\n parseInt(mRrggbb[2], 16),\n parseInt(mRrggbb[3], 16),\n mapRange(parseInt(mRrggbb[4], 16), 0, 255, 0, 1),\n ];\n }\n return null;\n}\nfunction parseHexRgbaColor(text) {\n const comps = parseHexRgbaColorComponents(text);\n return comps ? new IntColor(comps, 'rgb') : null;\n}\nfunction parseObjectRgbColorComponents(text) {\n const m = text.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*\\}$/);\n if (!m) {\n return null;\n }\n const comps = [\n parseFloat(m[1]),\n parseFloat(m[2]),\n parseFloat(m[3]),\n ];\n if (isNaN(comps[0]) || isNaN(comps[1]) || isNaN(comps[2])) {\n return null;\n }\n return comps;\n}\nfunction createObjectRgbColorParser(type) {\n return (text) => {\n const comps = parseObjectRgbColorComponents(text);\n return comps ? createColor(comps, 'rgb', type) : null;\n };\n}\nfunction parseObjectRgbaColorComponents(text) {\n const m = text.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*\\}$/);\n if (!m) {\n return null;\n }\n const comps = [\n parseFloat(m[1]),\n parseFloat(m[2]),\n parseFloat(m[3]),\n parseFloat(m[4]),\n ];\n if (isNaN(comps[0]) ||\n isNaN(comps[1]) ||\n isNaN(comps[2]) ||\n isNaN(comps[3])) {\n return null;\n }\n return comps;\n}\nfunction createObjectRgbaColorParser(type) {\n return (text) => {\n const comps = parseObjectRgbaColorComponents(text);\n return comps ? createColor(comps, 'rgb', type) : null;\n };\n}\nconst PARSER_AND_RESULT = [\n {\n parser: parseHexRgbColorComponents,\n result: {\n alpha: false,\n mode: 'rgb',\n notation: 'hex',\n },\n },\n {\n parser: parseHexRgbaColorComponents,\n result: {\n alpha: true,\n mode: 'rgb',\n notation: 'hex',\n },\n },\n {\n parser: parseFunctionalRgbColorComponents,\n result: {\n alpha: false,\n mode: 'rgb',\n notation: 'func',\n },\n },\n {\n parser: parseFunctionalRgbaColorComponents,\n result: {\n alpha: true,\n mode: 'rgb',\n notation: 'func',\n },\n },\n {\n parser: parseFunctionalHslColorComponents,\n result: {\n alpha: false,\n mode: 'hsl',\n notation: 'func',\n },\n },\n {\n parser: parseHslaColorComponents,\n result: {\n alpha: true,\n mode: 'hsl',\n notation: 'func',\n },\n },\n {\n parser: parseObjectRgbColorComponents,\n result: {\n alpha: false,\n mode: 'rgb',\n notation: 'object',\n },\n },\n {\n parser: parseObjectRgbaColorComponents,\n result: {\n alpha: true,\n mode: 'rgb',\n notation: 'object',\n },\n },\n];\nfunction detectStringColor(text) {\n return PARSER_AND_RESULT.reduce((prev, { parser, result: detection }) => {\n if (prev) {\n return prev;\n }\n return parser(text) ? detection : null;\n }, null);\n}\nfunction detectStringColorFormat(text, type = 'int') {\n const r = detectStringColor(text);\n if (!r) {\n return null;\n }\n if (r.notation === 'hex' && type !== 'float') {\n return Object.assign(Object.assign({}, r), { type: 'int' });\n }\n if (r.notation === 'func') {\n return Object.assign(Object.assign({}, r), { type: type });\n }\n return null;\n}\nfunction createColorStringParser(type) {\n const parsers = [\n parseHexRgbColor,\n parseHexRgbaColor,\n parseFunctionalRgbColor,\n parseFunctionalRgbaColor,\n parseFunctionalHslColor,\n parseFunctionalHslaColor,\n ];\n if (type === 'int') {\n parsers.push(createObjectRgbColorParser('int'), createObjectRgbaColorParser('int'));\n }\n if (type === 'float') {\n parsers.push(createObjectRgbColorParser('float'), createObjectRgbaColorParser('float'));\n }\n const parser = composeParsers(parsers);\n return (text) => {\n const result = parser(text);\n return result ? mapColorType(result, type) : null;\n };\n}\nfunction readIntColorString(value) {\n const parser = createColorStringParser('int');\n if (typeof value !== 'string') {\n return IntColor.black();\n }\n const result = parser(value);\n return result !== null && result !== void 0 ? result : IntColor.black();\n}\nfunction zerofill(comp) {\n const hex = constrainRange(Math.floor(comp), 0, 255).toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n}\nfunction colorToHexRgbString(value, prefix = '#') {\n const hexes = removeAlphaComponent(value.getComponents('rgb'))\n .map(zerofill)\n .join('');\n return `${prefix}${hexes}`;\n}\nfunction colorToHexRgbaString(value, prefix = '#') {\n const rgbaComps = value.getComponents('rgb');\n const hexes = [rgbaComps[0], rgbaComps[1], rgbaComps[2], rgbaComps[3] * 255]\n .map(zerofill)\n .join('');\n return `${prefix}${hexes}`;\n}\nfunction colorToFunctionalRgbString(value) {\n const formatter = createNumberFormatter(0);\n const ci = mapColorType(value, 'int');\n const comps = removeAlphaComponent(ci.getComponents('rgb')).map((comp) => formatter(comp));\n return `rgb(${comps.join(', ')})`;\n}\nfunction colorToFunctionalRgbaString(value) {\n const aFormatter = createNumberFormatter(2);\n const rgbFormatter = createNumberFormatter(0);\n const ci = mapColorType(value, 'int');\n const comps = ci.getComponents('rgb').map((comp, index) => {\n const formatter = index === 3 ? aFormatter : rgbFormatter;\n return formatter(comp);\n });\n return `rgba(${comps.join(', ')})`;\n}\nfunction colorToFunctionalHslString(value) {\n const formatters = [\n createNumberFormatter(0),\n formatPercentage,\n formatPercentage,\n ];\n const ci = mapColorType(value, 'int');\n const comps = removeAlphaComponent(ci.getComponents('hsl')).map((comp, index) => formatters[index](comp));\n return `hsl(${comps.join(', ')})`;\n}\nfunction colorToFunctionalHslaString(value) {\n const formatters = [\n createNumberFormatter(0),\n formatPercentage,\n formatPercentage,\n createNumberFormatter(2),\n ];\n const ci = mapColorType(value, 'int');\n const comps = ci\n .getComponents('hsl')\n .map((comp, index) => formatters[index](comp));\n return `hsla(${comps.join(', ')})`;\n}\nfunction colorToObjectRgbString(value, type) {\n const formatter = createNumberFormatter(type === 'float' ? 2 : 0);\n const names = ['r', 'g', 'b'];\n const cc = mapColorType(value, type);\n const comps = removeAlphaComponent(cc.getComponents('rgb')).map((comp, index) => `${names[index]}: ${formatter(comp)}`);\n return `{${comps.join(', ')}}`;\n}\nfunction createObjectRgbColorFormatter(type) {\n return (value) => colorToObjectRgbString(value, type);\n}\nfunction colorToObjectRgbaString(value, type) {\n const aFormatter = createNumberFormatter(2);\n const rgbFormatter = createNumberFormatter(type === 'float' ? 2 : 0);\n const names = ['r', 'g', 'b', 'a'];\n const cc = mapColorType(value, type);\n const comps = cc.getComponents('rgb').map((comp, index) => {\n const formatter = index === 3 ? aFormatter : rgbFormatter;\n return `${names[index]}: ${formatter(comp)}`;\n });\n return `{${comps.join(', ')}}`;\n}\nfunction createObjectRgbaColorFormatter(type) {\n return (value) => colorToObjectRgbaString(value, type);\n}\nconst FORMAT_AND_STRINGIFIERS = [\n {\n format: {\n alpha: false,\n mode: 'rgb',\n notation: 'hex',\n type: 'int',\n },\n stringifier: colorToHexRgbString,\n },\n {\n format: {\n alpha: true,\n mode: 'rgb',\n notation: 'hex',\n type: 'int',\n },\n stringifier: colorToHexRgbaString,\n },\n {\n format: {\n alpha: false,\n mode: 'rgb',\n notation: 'func',\n type: 'int',\n },\n stringifier: colorToFunctionalRgbString,\n },\n {\n format: {\n alpha: true,\n mode: 'rgb',\n notation: 'func',\n type: 'int',\n },\n stringifier: colorToFunctionalRgbaString,\n },\n {\n format: {\n alpha: false,\n mode: 'hsl',\n notation: 'func',\n type: 'int',\n },\n stringifier: colorToFunctionalHslString,\n },\n {\n format: {\n alpha: true,\n mode: 'hsl',\n notation: 'func',\n type: 'int',\n },\n stringifier: colorToFunctionalHslaString,\n },\n ...['int', 'float'].reduce((prev, type) => {\n return [\n ...prev,\n {\n format: {\n alpha: false,\n mode: 'rgb',\n notation: 'object',\n type: type,\n },\n stringifier: createObjectRgbColorFormatter(type),\n },\n {\n format: {\n alpha: true,\n mode: 'rgb',\n notation: 'object',\n type: type,\n },\n stringifier: createObjectRgbaColorFormatter(type),\n },\n ];\n }, []),\n];\nfunction findColorStringifier(format) {\n return FORMAT_AND_STRINGIFIERS.reduce((prev, fas) => {\n if (prev) {\n return prev;\n }\n return equalsStringColorFormat(fas.format, format)\n ? fas.stringifier\n : null;\n }, null);\n}\n\nconst cn$a = ClassName('apl');\nclass APaletteView {\n constructor(doc, config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.value = config.value;\n this.value.emitter.on('change', this.onValueChange_);\n this.element = doc.createElement('div');\n this.element.classList.add(cn$a());\n config.viewProps.bindClassModifiers(this.element);\n config.viewProps.bindTabIndex(this.element);\n const barElem = doc.createElement('div');\n barElem.classList.add(cn$a('b'));\n this.element.appendChild(barElem);\n const colorElem = doc.createElement('div');\n colorElem.classList.add(cn$a('c'));\n barElem.appendChild(colorElem);\n this.colorElem_ = colorElem;\n const markerElem = doc.createElement('div');\n markerElem.classList.add(cn$a('m'));\n this.element.appendChild(markerElem);\n this.markerElem_ = markerElem;\n const previewElem = doc.createElement('div');\n previewElem.classList.add(cn$a('p'));\n this.markerElem_.appendChild(previewElem);\n this.previewElem_ = previewElem;\n this.update_();\n }\n update_() {\n const c = this.value.rawValue;\n const rgbaComps = c.getComponents('rgb');\n const leftColor = new IntColor([rgbaComps[0], rgbaComps[1], rgbaComps[2], 0], 'rgb');\n const rightColor = new IntColor([rgbaComps[0], rgbaComps[1], rgbaComps[2], 255], 'rgb');\n const gradientComps = [\n 'to right',\n colorToFunctionalRgbaString(leftColor),\n colorToFunctionalRgbaString(rightColor),\n ];\n this.colorElem_.style.background = `linear-gradient(${gradientComps.join(',')})`;\n this.previewElem_.style.backgroundColor = colorToFunctionalRgbaString(c);\n const left = mapRange(rgbaComps[3], 0, 1, 0, 100);\n this.markerElem_.style.left = `${left}%`;\n }\n onValueChange_() {\n this.update_();\n }\n}\n\nclass APaletteController {\n constructor(doc, config) {\n this.onKeyDown_ = this.onKeyDown_.bind(this);\n this.onKeyUp_ = this.onKeyUp_.bind(this);\n this.onPointerDown_ = this.onPointerDown_.bind(this);\n this.onPointerMove_ = this.onPointerMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new APaletteView(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.ptHandler_ = new PointerHandler(this.view.element);\n this.ptHandler_.emitter.on('down', this.onPointerDown_);\n this.ptHandler_.emitter.on('move', this.onPointerMove_);\n this.ptHandler_.emitter.on('up', this.onPointerUp_);\n this.view.element.addEventListener('keydown', this.onKeyDown_);\n this.view.element.addEventListener('keyup', this.onKeyUp_);\n }\n handlePointerEvent_(d, opts) {\n if (!d.point) {\n return;\n }\n const alpha = d.point.x / d.bounds.width;\n const c = this.value.rawValue;\n const [h, s, v] = c.getComponents('hsv');\n this.value.setRawValue(new IntColor([h, s, v, alpha], 'hsv'), opts);\n }\n onPointerDown_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerMove_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerUp_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: true,\n last: true,\n });\n }\n onKeyDown_(ev) {\n const step = getStepForKey(getKeyScaleForColor(true), getHorizontalStepKeys(ev));\n if (step === 0) {\n return;\n }\n const c = this.value.rawValue;\n const [h, s, v, a] = c.getComponents('hsv');\n this.value.setRawValue(new IntColor([h, s, v, a + step], 'hsv'), {\n forceEmit: false,\n last: false,\n });\n }\n onKeyUp_(ev) {\n const step = getStepForKey(getKeyScaleForColor(true), getHorizontalStepKeys(ev));\n if (step === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n}\n\nconst cn$9 = ClassName('coltxt');\nfunction createModeSelectElement(doc) {\n const selectElem = doc.createElement('select');\n const items = [\n { text: 'RGB', value: 'rgb' },\n { text: 'HSL', value: 'hsl' },\n { text: 'HSV', value: 'hsv' },\n { text: 'HEX', value: 'hex' },\n ];\n selectElem.appendChild(items.reduce((frag, item) => {\n const optElem = doc.createElement('option');\n optElem.textContent = item.text;\n optElem.value = item.value;\n frag.appendChild(optElem);\n return frag;\n }, doc.createDocumentFragment()));\n return selectElem;\n}\nclass ColorTextsView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(cn$9());\n config.viewProps.bindClassModifiers(this.element);\n const modeElem = doc.createElement('div');\n modeElem.classList.add(cn$9('m'));\n this.modeElem_ = createModeSelectElement(doc);\n this.modeElem_.classList.add(cn$9('ms'));\n modeElem.appendChild(this.modeSelectElement);\n config.viewProps.bindDisabled(this.modeElem_);\n const modeMarkerElem = doc.createElement('div');\n modeMarkerElem.classList.add(cn$9('mm'));\n modeMarkerElem.appendChild(createSvgIconElement(doc, 'dropdown'));\n modeElem.appendChild(modeMarkerElem);\n this.element.appendChild(modeElem);\n const inputsElem = doc.createElement('div');\n inputsElem.classList.add(cn$9('w'));\n this.element.appendChild(inputsElem);\n this.inputsElem_ = inputsElem;\n this.inputViews_ = config.inputViews;\n this.applyInputViews_();\n bindValue(config.mode, (mode) => {\n this.modeElem_.value = mode;\n });\n }\n get modeSelectElement() {\n return this.modeElem_;\n }\n get inputViews() {\n return this.inputViews_;\n }\n set inputViews(inputViews) {\n this.inputViews_ = inputViews;\n this.applyInputViews_();\n }\n applyInputViews_() {\n removeChildElements(this.inputsElem_);\n const doc = this.element.ownerDocument;\n this.inputViews_.forEach((v) => {\n const compElem = doc.createElement('div');\n compElem.classList.add(cn$9('c'));\n compElem.appendChild(v.element);\n this.inputsElem_.appendChild(compElem);\n });\n }\n}\n\nfunction createFormatter$2(type) {\n return createNumberFormatter(type === 'float' ? 2 : 0);\n}\nfunction createConstraint$7(mode, type, index) {\n const max = getColorMaxComponents(mode, type)[index];\n return new DefiniteRangeConstraint({\n min: 0,\n max: max,\n });\n}\nfunction createComponentController(doc, config, index) {\n return new NumberTextController(doc, {\n arrayPosition: index === 0 ? 'fst' : index === 3 - 1 ? 'lst' : 'mid',\n parser: config.parser,\n props: ValueMap.fromObject({\n formatter: createFormatter$2(config.colorType),\n keyScale: getKeyScaleForColor(false),\n pointerScale: config.colorType === 'float' ? 0.01 : 1,\n }),\n value: createValue(0, {\n constraint: createConstraint$7(config.colorMode, config.colorType, index),\n }),\n viewProps: config.viewProps,\n });\n}\nfunction createComponentControllers(doc, config) {\n const cc = {\n colorMode: config.colorMode,\n colorType: config.colorType,\n parser: parseNumber,\n viewProps: config.viewProps,\n };\n return [0, 1, 2].map((i) => {\n const c = createComponentController(doc, cc, i);\n connectValues({\n primary: config.value,\n secondary: c.value,\n forward(p) {\n const mc = mapColorType(p, config.colorType);\n return mc.getComponents(config.colorMode)[i];\n },\n backward(p, s) {\n const pickedMode = config.colorMode;\n const mc = mapColorType(p, config.colorType);\n const comps = mc.getComponents(pickedMode);\n comps[i] = s;\n const c = createColor(appendAlphaComponent(removeAlphaComponent(comps), comps[3]), pickedMode, config.colorType);\n return mapColorType(c, 'int');\n },\n });\n return c;\n });\n}\nfunction createHexController(doc, config) {\n const c = new TextController(doc, {\n parser: createColorStringParser('int'),\n props: ValueMap.fromObject({\n formatter: colorToHexRgbString,\n }),\n value: createValue(IntColor.black()),\n viewProps: config.viewProps,\n });\n connectValues({\n primary: config.value,\n secondary: c.value,\n forward: (p) => new IntColor(removeAlphaComponent(p.getComponents()), p.mode),\n backward: (p, s) => new IntColor(appendAlphaComponent(removeAlphaComponent(s.getComponents(p.mode)), p.getComponents()[3]), p.mode),\n });\n return [c];\n}\nfunction isColorMode(mode) {\n return mode !== 'hex';\n}\nclass ColorTextsController {\n constructor(doc, config) {\n this.onModeSelectChange_ = this.onModeSelectChange_.bind(this);\n this.colorType_ = config.colorType;\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.colorMode = createValue(this.value.rawValue.mode);\n this.ccs_ = this.createComponentControllers_(doc);\n this.view = new ColorTextsView(doc, {\n mode: this.colorMode,\n inputViews: [this.ccs_[0].view, this.ccs_[1].view, this.ccs_[2].view],\n viewProps: this.viewProps,\n });\n this.view.modeSelectElement.addEventListener('change', this.onModeSelectChange_);\n }\n createComponentControllers_(doc) {\n const mode = this.colorMode.rawValue;\n if (isColorMode(mode)) {\n return createComponentControllers(doc, {\n colorMode: mode,\n colorType: this.colorType_,\n value: this.value,\n viewProps: this.viewProps,\n });\n }\n return createHexController(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n }\n onModeSelectChange_(ev) {\n const selectElem = ev.currentTarget;\n this.colorMode.rawValue = selectElem.value;\n this.ccs_ = this.createComponentControllers_(this.view.element.ownerDocument);\n this.view.inputViews = this.ccs_.map((cc) => cc.view);\n }\n}\n\nconst cn$8 = ClassName('hpl');\nclass HPaletteView {\n constructor(doc, config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.value = config.value;\n this.value.emitter.on('change', this.onValueChange_);\n this.element = doc.createElement('div');\n this.element.classList.add(cn$8());\n config.viewProps.bindClassModifiers(this.element);\n config.viewProps.bindTabIndex(this.element);\n const colorElem = doc.createElement('div');\n colorElem.classList.add(cn$8('c'));\n this.element.appendChild(colorElem);\n const markerElem = doc.createElement('div');\n markerElem.classList.add(cn$8('m'));\n this.element.appendChild(markerElem);\n this.markerElem_ = markerElem;\n this.update_();\n }\n update_() {\n const c = this.value.rawValue;\n const [h] = c.getComponents('hsv');\n this.markerElem_.style.backgroundColor = colorToFunctionalRgbString(new IntColor([h, 100, 100], 'hsv'));\n const left = mapRange(h, 0, 360, 0, 100);\n this.markerElem_.style.left = `${left}%`;\n }\n onValueChange_() {\n this.update_();\n }\n}\n\nclass HPaletteController {\n constructor(doc, config) {\n this.onKeyDown_ = this.onKeyDown_.bind(this);\n this.onKeyUp_ = this.onKeyUp_.bind(this);\n this.onPointerDown_ = this.onPointerDown_.bind(this);\n this.onPointerMove_ = this.onPointerMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new HPaletteView(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.ptHandler_ = new PointerHandler(this.view.element);\n this.ptHandler_.emitter.on('down', this.onPointerDown_);\n this.ptHandler_.emitter.on('move', this.onPointerMove_);\n this.ptHandler_.emitter.on('up', this.onPointerUp_);\n this.view.element.addEventListener('keydown', this.onKeyDown_);\n this.view.element.addEventListener('keyup', this.onKeyUp_);\n }\n handlePointerEvent_(d, opts) {\n if (!d.point) {\n return;\n }\n const hue = mapRange(constrainRange(d.point.x, 0, d.bounds.width), 0, d.bounds.width, 0, 360);\n const c = this.value.rawValue;\n const [, s, v, a] = c.getComponents('hsv');\n this.value.setRawValue(new IntColor([hue, s, v, a], 'hsv'), opts);\n }\n onPointerDown_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerMove_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerUp_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: true,\n last: true,\n });\n }\n onKeyDown_(ev) {\n const step = getStepForKey(getKeyScaleForColor(false), getHorizontalStepKeys(ev));\n if (step === 0) {\n return;\n }\n const c = this.value.rawValue;\n const [h, s, v, a] = c.getComponents('hsv');\n this.value.setRawValue(new IntColor([h + step, s, v, a], 'hsv'), {\n forceEmit: false,\n last: false,\n });\n }\n onKeyUp_(ev) {\n const step = getStepForKey(getKeyScaleForColor(false), getHorizontalStepKeys(ev));\n if (step === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n}\n\nconst cn$7 = ClassName('svp');\nconst CANVAS_RESOL = 64;\nclass SvPaletteView {\n constructor(doc, config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.value = config.value;\n this.value.emitter.on('change', this.onValueChange_);\n this.element = doc.createElement('div');\n this.element.classList.add(cn$7());\n config.viewProps.bindClassModifiers(this.element);\n config.viewProps.bindTabIndex(this.element);\n const canvasElem = doc.createElement('canvas');\n canvasElem.height = CANVAS_RESOL;\n canvasElem.width = CANVAS_RESOL;\n canvasElem.classList.add(cn$7('c'));\n this.element.appendChild(canvasElem);\n this.canvasElement = canvasElem;\n const markerElem = doc.createElement('div');\n markerElem.classList.add(cn$7('m'));\n this.element.appendChild(markerElem);\n this.markerElem_ = markerElem;\n this.update_();\n }\n update_() {\n const ctx = getCanvasContext(this.canvasElement);\n if (!ctx) {\n return;\n }\n const c = this.value.rawValue;\n const hsvComps = c.getComponents('hsv');\n const width = this.canvasElement.width;\n const height = this.canvasElement.height;\n const imgData = ctx.getImageData(0, 0, width, height);\n const data = imgData.data;\n for (let iy = 0; iy < height; iy++) {\n for (let ix = 0; ix < width; ix++) {\n const s = mapRange(ix, 0, width, 0, 100);\n const v = mapRange(iy, 0, height, 100, 0);\n const rgbComps = hsvToRgbInt(hsvComps[0], s, v);\n const i = (iy * width + ix) * 4;\n data[i] = rgbComps[0];\n data[i + 1] = rgbComps[1];\n data[i + 2] = rgbComps[2];\n data[i + 3] = 255;\n }\n }\n ctx.putImageData(imgData, 0, 0);\n const left = mapRange(hsvComps[1], 0, 100, 0, 100);\n this.markerElem_.style.left = `${left}%`;\n const top = mapRange(hsvComps[2], 0, 100, 100, 0);\n this.markerElem_.style.top = `${top}%`;\n }\n onValueChange_() {\n this.update_();\n }\n}\n\nclass SvPaletteController {\n constructor(doc, config) {\n this.onKeyDown_ = this.onKeyDown_.bind(this);\n this.onKeyUp_ = this.onKeyUp_.bind(this);\n this.onPointerDown_ = this.onPointerDown_.bind(this);\n this.onPointerMove_ = this.onPointerMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new SvPaletteView(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.ptHandler_ = new PointerHandler(this.view.element);\n this.ptHandler_.emitter.on('down', this.onPointerDown_);\n this.ptHandler_.emitter.on('move', this.onPointerMove_);\n this.ptHandler_.emitter.on('up', this.onPointerUp_);\n this.view.element.addEventListener('keydown', this.onKeyDown_);\n this.view.element.addEventListener('keyup', this.onKeyUp_);\n }\n handlePointerEvent_(d, opts) {\n if (!d.point) {\n return;\n }\n const saturation = mapRange(d.point.x, 0, d.bounds.width, 0, 100);\n const value = mapRange(d.point.y, 0, d.bounds.height, 100, 0);\n const [h, , , a] = this.value.rawValue.getComponents('hsv');\n this.value.setRawValue(new IntColor([h, saturation, value, a], 'hsv'), opts);\n }\n onPointerDown_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerMove_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerUp_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: true,\n last: true,\n });\n }\n onKeyDown_(ev) {\n if (isArrowKey(ev.key)) {\n ev.preventDefault();\n }\n const [h, s, v, a] = this.value.rawValue.getComponents('hsv');\n const keyScale = getKeyScaleForColor(false);\n const ds = getStepForKey(keyScale, getHorizontalStepKeys(ev));\n const dv = getStepForKey(keyScale, getVerticalStepKeys(ev));\n if (ds === 0 && dv === 0) {\n return;\n }\n this.value.setRawValue(new IntColor([h, s + ds, v + dv, a], 'hsv'), {\n forceEmit: false,\n last: false,\n });\n }\n onKeyUp_(ev) {\n const keyScale = getKeyScaleForColor(false);\n const ds = getStepForKey(keyScale, getHorizontalStepKeys(ev));\n const dv = getStepForKey(keyScale, getVerticalStepKeys(ev));\n if (ds === 0 && dv === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n}\n\nclass ColorPickerController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.hPaletteC_ = new HPaletteController(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.svPaletteC_ = new SvPaletteController(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.alphaIcs_ = config.supportsAlpha\n ? {\n palette: new APaletteController(doc, {\n value: this.value,\n viewProps: this.viewProps,\n }),\n text: new NumberTextController(doc, {\n parser: parseNumber,\n props: ValueMap.fromObject({\n pointerScale: 0.01,\n keyScale: 0.1,\n formatter: createNumberFormatter(2),\n }),\n value: createValue(0, {\n constraint: new DefiniteRangeConstraint({ min: 0, max: 1 }),\n }),\n viewProps: this.viewProps,\n }),\n }\n : null;\n if (this.alphaIcs_) {\n connectValues({\n primary: this.value,\n secondary: this.alphaIcs_.text.value,\n forward: (p) => p.getComponents()[3],\n backward: (p, s) => {\n const comps = p.getComponents();\n comps[3] = s;\n return new IntColor(comps, p.mode);\n },\n });\n }\n this.textsC_ = new ColorTextsController(doc, {\n colorType: config.colorType,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view = new ColorPickerView(doc, {\n alphaViews: this.alphaIcs_\n ? {\n palette: this.alphaIcs_.palette.view,\n text: this.alphaIcs_.text.view,\n }\n : null,\n hPaletteView: this.hPaletteC_.view,\n supportsAlpha: config.supportsAlpha,\n svPaletteView: this.svPaletteC_.view,\n textsView: this.textsC_.view,\n viewProps: this.viewProps,\n });\n }\n get textsController() {\n return this.textsC_;\n }\n}\n\nconst cn$6 = ClassName('colsw');\nclass ColorSwatchView {\n constructor(doc, config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n config.value.emitter.on('change', this.onValueChange_);\n this.value = config.value;\n this.element = doc.createElement('div');\n this.element.classList.add(cn$6());\n config.viewProps.bindClassModifiers(this.element);\n const swatchElem = doc.createElement('div');\n swatchElem.classList.add(cn$6('sw'));\n this.element.appendChild(swatchElem);\n this.swatchElem_ = swatchElem;\n const buttonElem = doc.createElement('button');\n buttonElem.classList.add(cn$6('b'));\n config.viewProps.bindDisabled(buttonElem);\n this.element.appendChild(buttonElem);\n this.buttonElement = buttonElem;\n this.update_();\n }\n update_() {\n const value = this.value.rawValue;\n this.swatchElem_.style.backgroundColor = colorToHexRgbaString(value);\n }\n onValueChange_() {\n this.update_();\n }\n}\n\nclass ColorSwatchController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new ColorSwatchView(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n }\n}\n\nclass ColorController {\n constructor(doc, config) {\n this.onButtonBlur_ = this.onButtonBlur_.bind(this);\n this.onButtonClick_ = this.onButtonClick_.bind(this);\n this.onPopupChildBlur_ = this.onPopupChildBlur_.bind(this);\n this.onPopupChildKeydown_ = this.onPopupChildKeydown_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.foldable_ = Foldable.create(config.expanded);\n this.swatchC_ = new ColorSwatchController(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n const buttonElem = this.swatchC_.view.buttonElement;\n buttonElem.addEventListener('blur', this.onButtonBlur_);\n buttonElem.addEventListener('click', this.onButtonClick_);\n this.textC_ = new TextController(doc, {\n parser: config.parser,\n props: ValueMap.fromObject({\n formatter: config.formatter,\n }),\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view = new ColorView(doc, {\n foldable: this.foldable_,\n pickerLayout: config.pickerLayout,\n });\n this.view.swatchElement.appendChild(this.swatchC_.view.element);\n this.view.textElement.appendChild(this.textC_.view.element);\n this.popC_ =\n config.pickerLayout === 'popup'\n ? new PopupController(doc, {\n viewProps: this.viewProps,\n })\n : null;\n const pickerC = new ColorPickerController(doc, {\n colorType: config.colorType,\n supportsAlpha: config.supportsAlpha,\n value: this.value,\n viewProps: this.viewProps,\n });\n pickerC.view.allFocusableElements.forEach((elem) => {\n elem.addEventListener('blur', this.onPopupChildBlur_);\n elem.addEventListener('keydown', this.onPopupChildKeydown_);\n });\n this.pickerC_ = pickerC;\n if (this.popC_) {\n this.view.element.appendChild(this.popC_.view.element);\n this.popC_.view.element.appendChild(pickerC.view.element);\n connectValues({\n primary: this.foldable_.value('expanded'),\n secondary: this.popC_.shows,\n forward: (p) => p,\n backward: (_, s) => s,\n });\n }\n else if (this.view.pickerElement) {\n this.view.pickerElement.appendChild(this.pickerC_.view.element);\n bindFoldable(this.foldable_, this.view.pickerElement);\n }\n }\n get textController() {\n return this.textC_;\n }\n onButtonBlur_(e) {\n if (!this.popC_) {\n return;\n }\n const elem = this.view.element;\n const nextTarget = forceCast(e.relatedTarget);\n if (!nextTarget || !elem.contains(nextTarget)) {\n this.popC_.shows.rawValue = false;\n }\n }\n onButtonClick_() {\n this.foldable_.set('expanded', !this.foldable_.get('expanded'));\n if (this.foldable_.get('expanded')) {\n this.pickerC_.view.allFocusableElements[0].focus();\n }\n }\n onPopupChildBlur_(ev) {\n if (!this.popC_) {\n return;\n }\n const elem = this.popC_.view.element;\n const nextTarget = findNextTarget(ev);\n if (nextTarget && elem.contains(nextTarget)) {\n return;\n }\n if (nextTarget &&\n nextTarget === this.swatchC_.view.buttonElement &&\n !supportsTouch(elem.ownerDocument)) {\n return;\n }\n this.popC_.shows.rawValue = false;\n }\n onPopupChildKeydown_(ev) {\n if (this.popC_) {\n if (ev.key === 'Escape') {\n this.popC_.shows.rawValue = false;\n }\n }\n else if (this.view.pickerElement) {\n if (ev.key === 'Escape') {\n this.swatchC_.view.buttonElement.focus();\n }\n }\n }\n}\n\nfunction colorToRgbNumber(value) {\n return removeAlphaComponent(value.getComponents('rgb')).reduce((result, comp) => {\n return (result << 8) | (Math.floor(comp) & 0xff);\n }, 0);\n}\nfunction colorToRgbaNumber(value) {\n return (value.getComponents('rgb').reduce((result, comp, index) => {\n const hex = Math.floor(index === 3 ? comp * 255 : comp) & 0xff;\n return (result << 8) | hex;\n }, 0) >>> 0);\n}\nfunction numberToRgbColor(num) {\n return new IntColor([(num >> 16) & 0xff, (num >> 8) & 0xff, num & 0xff], 'rgb');\n}\nfunction numberToRgbaColor(num) {\n return new IntColor([\n (num >> 24) & 0xff,\n (num >> 16) & 0xff,\n (num >> 8) & 0xff,\n mapRange(num & 0xff, 0, 255, 0, 1),\n ], 'rgb');\n}\nfunction colorFromRgbNumber(value) {\n if (typeof value !== 'number') {\n return IntColor.black();\n }\n return numberToRgbColor(value);\n}\nfunction colorFromRgbaNumber(value) {\n if (typeof value !== 'number') {\n return IntColor.black();\n }\n return numberToRgbaColor(value);\n}\n\nfunction isRgbColorComponent(obj, key) {\n if (typeof obj !== 'object' || isEmpty(obj)) {\n return false;\n }\n return key in obj && typeof obj[key] === 'number';\n}\nfunction isRgbColorObject(obj) {\n return (isRgbColorComponent(obj, 'r') &&\n isRgbColorComponent(obj, 'g') &&\n isRgbColorComponent(obj, 'b'));\n}\nfunction isRgbaColorObject(obj) {\n return isRgbColorObject(obj) && isRgbColorComponent(obj, 'a');\n}\nfunction isColorObject(obj) {\n return isRgbColorObject(obj);\n}\nfunction equalsColor(v1, v2) {\n if (v1.mode !== v2.mode) {\n return false;\n }\n if (v1.type !== v2.type) {\n return false;\n }\n const comps1 = v1.getComponents();\n const comps2 = v2.getComponents();\n for (let i = 0; i < comps1.length; i++) {\n if (comps1[i] !== comps2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction createColorComponentsFromRgbObject(obj) {\n return 'a' in obj ? [obj.r, obj.g, obj.b, obj.a] : [obj.r, obj.g, obj.b];\n}\n\nfunction createColorStringWriter(format) {\n const stringify = findColorStringifier(format);\n return stringify\n ? (target, value) => {\n writePrimitive(target, stringify(value));\n }\n : null;\n}\nfunction createColorNumberWriter(supportsAlpha) {\n const colorToNumber = supportsAlpha ? colorToRgbaNumber : colorToRgbNumber;\n return (target, value) => {\n writePrimitive(target, colorToNumber(value));\n };\n}\nfunction writeRgbaColorObject(target, value, type) {\n const cc = mapColorType(value, type);\n const obj = cc.toRgbaObject();\n target.writeProperty('r', obj.r);\n target.writeProperty('g', obj.g);\n target.writeProperty('b', obj.b);\n target.writeProperty('a', obj.a);\n}\nfunction writeRgbColorObject(target, value, type) {\n const cc = mapColorType(value, type);\n const obj = cc.toRgbaObject();\n target.writeProperty('r', obj.r);\n target.writeProperty('g', obj.g);\n target.writeProperty('b', obj.b);\n}\nfunction createColorObjectWriter(supportsAlpha, type) {\n return (target, inValue) => {\n if (supportsAlpha) {\n writeRgbaColorObject(target, inValue, type);\n }\n else {\n writeRgbColorObject(target, inValue, type);\n }\n };\n}\n\nfunction shouldSupportAlpha$1(inputParams) {\n var _a;\n if ((_a = inputParams === null || inputParams === void 0 ? void 0 : inputParams.color) === null || _a === void 0 ? void 0 : _a.alpha) {\n return true;\n }\n return false;\n}\nfunction createFormatter$1(supportsAlpha) {\n return supportsAlpha\n ? (v) => colorToHexRgbaString(v, '0x')\n : (v) => colorToHexRgbString(v, '0x');\n}\nfunction isForColor(params) {\n if ('color' in params) {\n return true;\n }\n if (params.view === 'color') {\n return true;\n }\n return false;\n}\ncreatePlugin({\n id: 'input-color-number',\n type: 'input',\n accept: (value, params) => {\n if (typeof value !== 'number') {\n return null;\n }\n if (!isForColor(params)) {\n return null;\n }\n const result = parseColorInputParams(params);\n return result\n ? {\n initialValue: value,\n params: Object.assign(Object.assign({}, result), { supportsAlpha: shouldSupportAlpha$1(params) }),\n }\n : null;\n },\n binding: {\n reader: (args) => {\n return args.params.supportsAlpha\n ? colorFromRgbaNumber\n : colorFromRgbNumber;\n },\n equals: equalsColor,\n writer: (args) => {\n return createColorNumberWriter(args.params.supportsAlpha);\n },\n },\n controller: (args) => {\n var _a, _b;\n return new ColorController(args.document, {\n colorType: 'int',\n expanded: (_a = args.params.expanded) !== null && _a !== void 0 ? _a : false,\n formatter: createFormatter$1(args.params.supportsAlpha),\n parser: createColorStringParser('int'),\n pickerLayout: (_b = args.params.picker) !== null && _b !== void 0 ? _b : 'popup',\n supportsAlpha: args.params.supportsAlpha,\n value: args.value,\n viewProps: args.viewProps,\n });\n },\n});\n\nfunction colorFromObject(value, type) {\n if (!isColorObject(value)) {\n return mapColorType(IntColor.black(), type);\n }\n if (type === 'int') {\n const comps = createColorComponentsFromRgbObject(value);\n return new IntColor(comps, 'rgb');\n }\n if (type === 'float') {\n const comps = createColorComponentsFromRgbObject(value);\n return new FloatColor(comps, 'rgb');\n }\n return mapColorType(IntColor.black(), 'int');\n}\n\nfunction shouldSupportAlpha(initialValue) {\n return isRgbaColorObject(initialValue);\n}\nfunction createColorObjectBindingReader(type) {\n return (value) => {\n const c = colorFromObject(value, type);\n return mapColorType(c, 'int');\n };\n}\nfunction createColorObjectFormatter(supportsAlpha, type) {\n return (value) => {\n if (supportsAlpha) {\n return colorToObjectRgbaString(value, type);\n }\n return colorToObjectRgbString(value, type);\n };\n}\ncreatePlugin({\n id: 'input-color-object',\n type: 'input',\n accept: (value, params) => {\n var _a;\n if (!isColorObject(value)) {\n return null;\n }\n const result = parseColorInputParams(params);\n return result\n ? {\n initialValue: value,\n params: Object.assign(Object.assign({}, result), { colorType: (_a = extractColorType(params)) !== null && _a !== void 0 ? _a : 'int' }),\n }\n : null;\n },\n binding: {\n reader: (args) => createColorObjectBindingReader(args.params.colorType),\n equals: equalsColor,\n writer: (args) => createColorObjectWriter(shouldSupportAlpha(args.initialValue), args.params.colorType),\n },\n controller: (args) => {\n var _a, _b;\n const supportsAlpha = isRgbaColorObject(args.initialValue);\n return new ColorController(args.document, {\n colorType: args.params.colorType,\n expanded: (_a = args.params.expanded) !== null && _a !== void 0 ? _a : false,\n formatter: createColorObjectFormatter(supportsAlpha, args.params.colorType),\n parser: createColorStringParser('int'),\n pickerLayout: (_b = args.params.picker) !== null && _b !== void 0 ? _b : 'popup',\n supportsAlpha: supportsAlpha,\n value: args.value,\n viewProps: args.viewProps,\n });\n },\n});\n\ncreatePlugin({\n id: 'input-color-string',\n type: 'input',\n accept: (value, params) => {\n if (typeof value !== 'string') {\n return null;\n }\n if (params.view === 'text') {\n return null;\n }\n const format = detectStringColorFormat(value, extractColorType(params));\n if (!format) {\n return null;\n }\n const stringifier = findColorStringifier(format);\n if (!stringifier) {\n return null;\n }\n const result = parseColorInputParams(params);\n return result\n ? {\n initialValue: value,\n params: Object.assign(Object.assign({}, result), { format: format, stringifier: stringifier }),\n }\n : null;\n },\n binding: {\n reader: () => readIntColorString,\n equals: equalsColor,\n writer: (args) => {\n const writer = createColorStringWriter(args.params.format);\n if (!writer) {\n throw TpError.notBindable();\n }\n return writer;\n },\n },\n controller: (args) => {\n var _a, _b;\n return new ColorController(args.document, {\n colorType: args.params.format.type,\n expanded: (_a = args.params.expanded) !== null && _a !== void 0 ? _a : false,\n formatter: args.params.stringifier,\n parser: createColorStringParser('int'),\n pickerLayout: (_b = args.params.picker) !== null && _b !== void 0 ? _b : 'popup',\n supportsAlpha: args.params.format.alpha,\n value: args.value,\n viewProps: args.viewProps,\n });\n },\n});\n\nclass PointNdConstraint {\n constructor(config) {\n this.components = config.components;\n this.asm_ = config.assembly;\n }\n constrain(value) {\n const comps = this.asm_\n .toComponents(value)\n .map((comp, index) => { var _a, _b; return (_b = (_a = this.components[index]) === null || _a === void 0 ? void 0 : _a.constrain(comp)) !== null && _b !== void 0 ? _b : comp; });\n return this.asm_.fromComponents(comps);\n }\n}\n\nconst cn$5 = ClassName('pndtxt');\nclass PointNdTextView {\n constructor(doc, config) {\n this.textViews = config.textViews;\n this.element = doc.createElement('div');\n this.element.classList.add(cn$5());\n this.textViews.forEach((v) => {\n const axisElem = doc.createElement('div');\n axisElem.classList.add(cn$5('a'));\n axisElem.appendChild(v.element);\n this.element.appendChild(axisElem);\n });\n }\n}\n\nfunction createAxisController(doc, config, index) {\n return new NumberTextController(doc, {\n arrayPosition: index === 0 ? 'fst' : index === config.axes.length - 1 ? 'lst' : 'mid',\n parser: config.parser,\n props: config.axes[index].textProps,\n value: createValue(0, {\n constraint: config.axes[index].constraint,\n }),\n viewProps: config.viewProps,\n });\n}\nclass PointNdTextController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.acs_ = config.axes.map((_, index) => createAxisController(doc, config, index));\n this.acs_.forEach((c, index) => {\n connectValues({\n primary: this.value,\n secondary: c.value,\n forward: (p) => config.assembly.toComponents(p)[index],\n backward: (p, s) => {\n const comps = config.assembly.toComponents(p);\n comps[index] = s;\n return config.assembly.fromComponents(comps);\n },\n });\n });\n this.view = new PointNdTextView(doc, {\n textViews: this.acs_.map((ac) => ac.view),\n });\n }\n get textControllers() {\n return this.acs_;\n }\n}\n\nclass SliderInputBindingApi extends BindingApi {\n get max() {\n return this.controller.valueController.sliderController.props.get('max');\n }\n set max(max) {\n this.controller.valueController.sliderController.props.set('max', max);\n }\n get min() {\n return this.controller.valueController.sliderController.props.get('min');\n }\n set min(max) {\n this.controller.valueController.sliderController.props.set('min', max);\n }\n}\n\nfunction createConstraint$6(params, initialValue) {\n const constraints = [];\n const sc = createStepConstraint(params, initialValue);\n if (sc) {\n constraints.push(sc);\n }\n const rc = createRangeConstraint(params);\n if (rc) {\n constraints.push(rc);\n }\n const lc = createListConstraint(params.options);\n if (lc) {\n constraints.push(lc);\n }\n return new CompositeConstraint(constraints);\n}\ncreatePlugin({\n id: 'input-number',\n type: 'input',\n accept: (value, params) => {\n if (typeof value !== 'number') {\n return null;\n }\n const result = parseRecord(params, (p) => (Object.assign(Object.assign({}, createNumberTextInputParamsParser(p)), { options: p.optional.custom(parseListOptions), readonly: p.optional.constant(false) })));\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => numberFromUnknown,\n constraint: (args) => createConstraint$6(args.params, args.initialValue),\n writer: (_args) => writePrimitive,\n },\n controller: (args) => {\n const value = args.value;\n const c = args.constraint;\n const lc = c && findConstraint(c, ListConstraint);\n if (lc) {\n return new ListController(args.document, {\n props: new ValueMap({\n options: lc.values.value('options'),\n }),\n value: value,\n viewProps: args.viewProps,\n });\n }\n const textPropsObj = createNumberTextPropsObject(args.params, value.rawValue);\n const drc = c && findConstraint(c, DefiniteRangeConstraint);\n if (drc) {\n return new SliderTextController(args.document, Object.assign(Object.assign({}, createSliderTextProps(Object.assign(Object.assign({}, textPropsObj), { keyScale: createValue(textPropsObj.keyScale), max: drc.values.value('max'), min: drc.values.value('min') }))), { parser: parseNumber, value: value, viewProps: args.viewProps }));\n }\n return new NumberTextController(args.document, {\n parser: parseNumber,\n props: ValueMap.fromObject(textPropsObj),\n value: value,\n viewProps: args.viewProps,\n });\n },\n api(args) {\n if (typeof args.controller.value.rawValue !== 'number') {\n return null;\n }\n if (args.controller.valueController instanceof SliderTextController) {\n return new SliderInputBindingApi(args.controller);\n }\n if (args.controller.valueController instanceof ListController) {\n return new ListInputBindingApi(args.controller);\n }\n return null;\n },\n});\n\nclass Point2d {\n constructor(x = 0, y = 0) {\n this.x = x;\n this.y = y;\n }\n getComponents() {\n return [this.x, this.y];\n }\n static isObject(obj) {\n if (isEmpty(obj)) {\n return false;\n }\n const x = obj.x;\n const y = obj.y;\n if (typeof x !== 'number' || typeof y !== 'number') {\n return false;\n }\n return true;\n }\n static equals(v1, v2) {\n return v1.x === v2.x && v1.y === v2.y;\n }\n toObject() {\n return {\n x: this.x,\n y: this.y,\n };\n }\n}\nconst Point2dAssembly = {\n toComponents: (p) => p.getComponents(),\n fromComponents: (comps) => new Point2d(...comps),\n};\n\nconst cn$4 = ClassName('p2d');\nclass Point2dView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(cn$4());\n config.viewProps.bindClassModifiers(this.element);\n bindValue(config.expanded, valueToClassName(this.element, cn$4(undefined, 'expanded')));\n const headElem = doc.createElement('div');\n headElem.classList.add(cn$4('h'));\n this.element.appendChild(headElem);\n const buttonElem = doc.createElement('button');\n buttonElem.classList.add(cn$4('b'));\n buttonElem.appendChild(createSvgIconElement(doc, 'p2dpad'));\n config.viewProps.bindDisabled(buttonElem);\n headElem.appendChild(buttonElem);\n this.buttonElement = buttonElem;\n const textElem = doc.createElement('div');\n textElem.classList.add(cn$4('t'));\n headElem.appendChild(textElem);\n this.textElement = textElem;\n if (config.pickerLayout === 'inline') {\n const pickerElem = doc.createElement('div');\n pickerElem.classList.add(cn$4('p'));\n this.element.appendChild(pickerElem);\n this.pickerElement = pickerElem;\n }\n else {\n this.pickerElement = null;\n }\n }\n}\n\nconst cn$3 = ClassName('p2dp');\nclass Point2dPickerView {\n constructor(doc, config) {\n this.onFoldableChange_ = this.onFoldableChange_.bind(this);\n this.onPropsChange_ = this.onPropsChange_.bind(this);\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.props_ = config.props;\n this.props_.emitter.on('change', this.onPropsChange_);\n this.element = doc.createElement('div');\n this.element.classList.add(cn$3());\n if (config.layout === 'popup') {\n this.element.classList.add(cn$3(undefined, 'p'));\n }\n config.viewProps.bindClassModifiers(this.element);\n const padElem = doc.createElement('div');\n padElem.classList.add(cn$3('p'));\n config.viewProps.bindTabIndex(padElem);\n this.element.appendChild(padElem);\n this.padElement = padElem;\n const svgElem = doc.createElementNS(SVG_NS, 'svg');\n svgElem.classList.add(cn$3('g'));\n this.padElement.appendChild(svgElem);\n this.svgElem_ = svgElem;\n const xAxisElem = doc.createElementNS(SVG_NS, 'line');\n xAxisElem.classList.add(cn$3('ax'));\n xAxisElem.setAttributeNS(null, 'x1', '0');\n xAxisElem.setAttributeNS(null, 'y1', '50%');\n xAxisElem.setAttributeNS(null, 'x2', '100%');\n xAxisElem.setAttributeNS(null, 'y2', '50%');\n this.svgElem_.appendChild(xAxisElem);\n const yAxisElem = doc.createElementNS(SVG_NS, 'line');\n yAxisElem.classList.add(cn$3('ax'));\n yAxisElem.setAttributeNS(null, 'x1', '50%');\n yAxisElem.setAttributeNS(null, 'y1', '0');\n yAxisElem.setAttributeNS(null, 'x2', '50%');\n yAxisElem.setAttributeNS(null, 'y2', '100%');\n this.svgElem_.appendChild(yAxisElem);\n const lineElem = doc.createElementNS(SVG_NS, 'line');\n lineElem.classList.add(cn$3('l'));\n lineElem.setAttributeNS(null, 'x1', '50%');\n lineElem.setAttributeNS(null, 'y1', '50%');\n this.svgElem_.appendChild(lineElem);\n this.lineElem_ = lineElem;\n const markerElem = doc.createElement('div');\n markerElem.classList.add(cn$3('m'));\n this.padElement.appendChild(markerElem);\n this.markerElem_ = markerElem;\n config.value.emitter.on('change', this.onValueChange_);\n this.value = config.value;\n this.update_();\n }\n get allFocusableElements() {\n return [this.padElement];\n }\n update_() {\n const [x, y] = this.value.rawValue.getComponents();\n const max = this.props_.get('max');\n const px = mapRange(x, -max, +max, 0, 100);\n const py = mapRange(y, -max, +max, 0, 100);\n const ipy = this.props_.get('invertsY') ? 100 - py : py;\n this.lineElem_.setAttributeNS(null, 'x2', `${px}%`);\n this.lineElem_.setAttributeNS(null, 'y2', `${ipy}%`);\n this.markerElem_.style.left = `${px}%`;\n this.markerElem_.style.top = `${ipy}%`;\n }\n onValueChange_() {\n this.update_();\n }\n onPropsChange_() {\n this.update_();\n }\n onFoldableChange_() {\n this.update_();\n }\n}\n\nfunction computeOffset(ev, keyScales, invertsY) {\n return [\n getStepForKey(keyScales[0], getHorizontalStepKeys(ev)),\n getStepForKey(keyScales[1], getVerticalStepKeys(ev)) * (invertsY ? 1 : -1),\n ];\n}\nclass Point2dPickerController {\n constructor(doc, config) {\n this.onPadKeyDown_ = this.onPadKeyDown_.bind(this);\n this.onPadKeyUp_ = this.onPadKeyUp_.bind(this);\n this.onPointerDown_ = this.onPointerDown_.bind(this);\n this.onPointerMove_ = this.onPointerMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.props = config.props;\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new Point2dPickerView(doc, {\n layout: config.layout,\n props: this.props,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.ptHandler_ = new PointerHandler(this.view.padElement);\n this.ptHandler_.emitter.on('down', this.onPointerDown_);\n this.ptHandler_.emitter.on('move', this.onPointerMove_);\n this.ptHandler_.emitter.on('up', this.onPointerUp_);\n this.view.padElement.addEventListener('keydown', this.onPadKeyDown_);\n this.view.padElement.addEventListener('keyup', this.onPadKeyUp_);\n }\n handlePointerEvent_(d, opts) {\n if (!d.point) {\n return;\n }\n const max = this.props.get('max');\n const px = mapRange(d.point.x, 0, d.bounds.width, -max, +max);\n const py = mapRange(this.props.get('invertsY') ? d.bounds.height - d.point.y : d.point.y, 0, d.bounds.height, -max, +max);\n this.value.setRawValue(new Point2d(px, py), opts);\n }\n onPointerDown_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerMove_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerUp_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: true,\n last: true,\n });\n }\n onPadKeyDown_(ev) {\n if (isArrowKey(ev.key)) {\n ev.preventDefault();\n }\n const [dx, dy] = computeOffset(ev, [this.props.get('xKeyScale'), this.props.get('yKeyScale')], this.props.get('invertsY'));\n if (dx === 0 && dy === 0) {\n return;\n }\n this.value.setRawValue(new Point2d(this.value.rawValue.x + dx, this.value.rawValue.y + dy), {\n forceEmit: false,\n last: false,\n });\n }\n onPadKeyUp_(ev) {\n const [dx, dy] = computeOffset(ev, [this.props.get('xKeyScale'), this.props.get('yKeyScale')], this.props.get('invertsY'));\n if (dx === 0 && dy === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n}\n\nclass Point2dController {\n constructor(doc, config) {\n var _a, _b;\n this.onPopupChildBlur_ = this.onPopupChildBlur_.bind(this);\n this.onPopupChildKeydown_ = this.onPopupChildKeydown_.bind(this);\n this.onPadButtonBlur_ = this.onPadButtonBlur_.bind(this);\n this.onPadButtonClick_ = this.onPadButtonClick_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.foldable_ = Foldable.create(config.expanded);\n this.popC_ =\n config.pickerLayout === 'popup'\n ? new PopupController(doc, {\n viewProps: this.viewProps,\n })\n : null;\n const padC = new Point2dPickerController(doc, {\n layout: config.pickerLayout,\n props: new ValueMap({\n invertsY: createValue(config.invertsY),\n max: createValue(config.max),\n xKeyScale: config.axes[0].textProps.value('keyScale'),\n yKeyScale: config.axes[1].textProps.value('keyScale'),\n }),\n value: this.value,\n viewProps: this.viewProps,\n });\n padC.view.allFocusableElements.forEach((elem) => {\n elem.addEventListener('blur', this.onPopupChildBlur_);\n elem.addEventListener('keydown', this.onPopupChildKeydown_);\n });\n this.pickerC_ = padC;\n this.textC_ = new PointNdTextController(doc, {\n assembly: Point2dAssembly,\n axes: config.axes,\n parser: config.parser,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view = new Point2dView(doc, {\n expanded: this.foldable_.value('expanded'),\n pickerLayout: config.pickerLayout,\n viewProps: this.viewProps,\n });\n this.view.textElement.appendChild(this.textC_.view.element);\n (_a = this.view.buttonElement) === null || _a === void 0 ? void 0 : _a.addEventListener('blur', this.onPadButtonBlur_);\n (_b = this.view.buttonElement) === null || _b === void 0 ? void 0 : _b.addEventListener('click', this.onPadButtonClick_);\n if (this.popC_) {\n this.view.element.appendChild(this.popC_.view.element);\n this.popC_.view.element.appendChild(this.pickerC_.view.element);\n connectValues({\n primary: this.foldable_.value('expanded'),\n secondary: this.popC_.shows,\n forward: (p) => p,\n backward: (_, s) => s,\n });\n }\n else if (this.view.pickerElement) {\n this.view.pickerElement.appendChild(this.pickerC_.view.element);\n bindFoldable(this.foldable_, this.view.pickerElement);\n }\n }\n get textController() {\n return this.textC_;\n }\n onPadButtonBlur_(e) {\n if (!this.popC_) {\n return;\n }\n const elem = this.view.element;\n const nextTarget = forceCast(e.relatedTarget);\n if (!nextTarget || !elem.contains(nextTarget)) {\n this.popC_.shows.rawValue = false;\n }\n }\n onPadButtonClick_() {\n this.foldable_.set('expanded', !this.foldable_.get('expanded'));\n if (this.foldable_.get('expanded')) {\n this.pickerC_.view.allFocusableElements[0].focus();\n }\n }\n onPopupChildBlur_(ev) {\n if (!this.popC_) {\n return;\n }\n const elem = this.popC_.view.element;\n const nextTarget = findNextTarget(ev);\n if (nextTarget && elem.contains(nextTarget)) {\n return;\n }\n if (nextTarget &&\n nextTarget === this.view.buttonElement &&\n !supportsTouch(elem.ownerDocument)) {\n return;\n }\n this.popC_.shows.rawValue = false;\n }\n onPopupChildKeydown_(ev) {\n if (this.popC_) {\n if (ev.key === 'Escape') {\n this.popC_.shows.rawValue = false;\n }\n }\n else if (this.view.pickerElement) {\n if (ev.key === 'Escape') {\n this.view.buttonElement.focus();\n }\n }\n }\n}\n\nfunction point2dFromUnknown(value) {\n return Point2d.isObject(value)\n ? new Point2d(value.x, value.y)\n : new Point2d();\n}\nfunction writePoint2d(target, value) {\n target.writeProperty('x', value.x);\n target.writeProperty('y', value.y);\n}\n\nfunction createConstraint$5(params, initialValue) {\n return new PointNdConstraint({\n assembly: Point2dAssembly,\n components: [\n createDimensionConstraint(Object.assign(Object.assign({}, params), params.x), initialValue.x),\n createDimensionConstraint(Object.assign(Object.assign({}, params), params.y), initialValue.y),\n ],\n });\n}\nfunction getSuitableMaxDimensionValue(params, rawValue) {\n var _a, _b;\n if (!isEmpty(params.min) || !isEmpty(params.max)) {\n return Math.max(Math.abs((_a = params.min) !== null && _a !== void 0 ? _a : 0), Math.abs((_b = params.max) !== null && _b !== void 0 ? _b : 0));\n }\n const step = getSuitableKeyScale(params);\n return Math.max(Math.abs(step) * 10, Math.abs(rawValue) * 10);\n}\nfunction getSuitableMax(params, initialValue) {\n var _a, _b;\n const xr = getSuitableMaxDimensionValue(deepMerge(params, ((_a = params.x) !== null && _a !== void 0 ? _a : {})), initialValue.x);\n const yr = getSuitableMaxDimensionValue(deepMerge(params, ((_b = params.y) !== null && _b !== void 0 ? _b : {})), initialValue.y);\n return Math.max(xr, yr);\n}\nfunction shouldInvertY(params) {\n if (!('y' in params)) {\n return false;\n }\n const yParams = params.y;\n if (!yParams) {\n return false;\n }\n return 'inverted' in yParams ? !!yParams.inverted : false;\n}\ncreatePlugin({\n id: 'input-point2d',\n type: 'input',\n accept: (value, params) => {\n if (!Point2d.isObject(value)) {\n return null;\n }\n const result = parseRecord(params, (p) => (Object.assign(Object.assign({}, createPointDimensionParser(p)), { expanded: p.optional.boolean, picker: p.optional.custom(parsePickerLayout), readonly: p.optional.constant(false), x: p.optional.custom(parsePointDimensionParams), y: p.optional.object(Object.assign(Object.assign({}, createPointDimensionParser(p)), { inverted: p.optional.boolean })) })));\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: () => point2dFromUnknown,\n constraint: (args) => createConstraint$5(args.params, args.initialValue),\n equals: Point2d.equals,\n writer: () => writePoint2d,\n },\n controller: (args) => {\n var _a, _b;\n const doc = args.document;\n const value = args.value;\n const c = args.constraint;\n const dParams = [args.params.x, args.params.y];\n return new Point2dController(doc, {\n axes: value.rawValue.getComponents().map((comp, i) => {\n var _a;\n return createPointAxis({\n constraint: c.components[i],\n initialValue: comp,\n params: deepMerge(args.params, ((_a = dParams[i]) !== null && _a !== void 0 ? _a : {})),\n });\n }),\n expanded: (_a = args.params.expanded) !== null && _a !== void 0 ? _a : false,\n invertsY: shouldInvertY(args.params),\n max: getSuitableMax(args.params, value.rawValue),\n parser: parseNumber,\n pickerLayout: (_b = args.params.picker) !== null && _b !== void 0 ? _b : 'popup',\n value: value,\n viewProps: args.viewProps,\n });\n },\n});\n\nclass Point3d {\n constructor(x = 0, y = 0, z = 0) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n getComponents() {\n return [this.x, this.y, this.z];\n }\n static isObject(obj) {\n if (isEmpty(obj)) {\n return false;\n }\n const x = obj.x;\n const y = obj.y;\n const z = obj.z;\n if (typeof x !== 'number' ||\n typeof y !== 'number' ||\n typeof z !== 'number') {\n return false;\n }\n return true;\n }\n static equals(v1, v2) {\n return v1.x === v2.x && v1.y === v2.y && v1.z === v2.z;\n }\n toObject() {\n return {\n x: this.x,\n y: this.y,\n z: this.z,\n };\n }\n}\nconst Point3dAssembly = {\n toComponents: (p) => p.getComponents(),\n fromComponents: (comps) => new Point3d(...comps),\n};\n\nfunction point3dFromUnknown(value) {\n return Point3d.isObject(value)\n ? new Point3d(value.x, value.y, value.z)\n : new Point3d();\n}\nfunction writePoint3d(target, value) {\n target.writeProperty('x', value.x);\n target.writeProperty('y', value.y);\n target.writeProperty('z', value.z);\n}\n\nfunction createConstraint$4(params, initialValue) {\n return new PointNdConstraint({\n assembly: Point3dAssembly,\n components: [\n createDimensionConstraint(Object.assign(Object.assign({}, params), params.x), initialValue.x),\n createDimensionConstraint(Object.assign(Object.assign({}, params), params.y), initialValue.y),\n createDimensionConstraint(Object.assign(Object.assign({}, params), params.z), initialValue.z),\n ],\n });\n}\ncreatePlugin({\n id: 'input-point3d',\n type: 'input',\n accept: (value, params) => {\n if (!Point3d.isObject(value)) {\n return null;\n }\n const result = parseRecord(params, (p) => (Object.assign(Object.assign({}, createPointDimensionParser(p)), { readonly: p.optional.constant(false), x: p.optional.custom(parsePointDimensionParams), y: p.optional.custom(parsePointDimensionParams), z: p.optional.custom(parsePointDimensionParams) })));\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => point3dFromUnknown,\n constraint: (args) => createConstraint$4(args.params, args.initialValue),\n equals: Point3d.equals,\n writer: (_args) => writePoint3d,\n },\n controller: (args) => {\n const value = args.value;\n const c = args.constraint;\n const dParams = [args.params.x, args.params.y, args.params.z];\n return new PointNdTextController(args.document, {\n assembly: Point3dAssembly,\n axes: value.rawValue.getComponents().map((comp, i) => {\n var _a;\n return createPointAxis({\n constraint: c.components[i],\n initialValue: comp,\n params: deepMerge(args.params, ((_a = dParams[i]) !== null && _a !== void 0 ? _a : {})),\n });\n }),\n parser: parseNumber,\n value: value,\n viewProps: args.viewProps,\n });\n },\n});\n\nclass Point4d {\n constructor(x = 0, y = 0, z = 0, w = 0) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n }\n getComponents() {\n return [this.x, this.y, this.z, this.w];\n }\n static isObject(obj) {\n if (isEmpty(obj)) {\n return false;\n }\n const x = obj.x;\n const y = obj.y;\n const z = obj.z;\n const w = obj.w;\n if (typeof x !== 'number' ||\n typeof y !== 'number' ||\n typeof z !== 'number' ||\n typeof w !== 'number') {\n return false;\n }\n return true;\n }\n static equals(v1, v2) {\n return v1.x === v2.x && v1.y === v2.y && v1.z === v2.z && v1.w === v2.w;\n }\n toObject() {\n return {\n x: this.x,\n y: this.y,\n z: this.z,\n w: this.w,\n };\n }\n}\nconst Point4dAssembly = {\n toComponents: (p) => p.getComponents(),\n fromComponents: (comps) => new Point4d(...comps),\n};\n\nfunction point4dFromUnknown(value) {\n return Point4d.isObject(value)\n ? new Point4d(value.x, value.y, value.z, value.w)\n : new Point4d();\n}\nfunction writePoint4d(target, value) {\n target.writeProperty('x', value.x);\n target.writeProperty('y', value.y);\n target.writeProperty('z', value.z);\n target.writeProperty('w', value.w);\n}\n\nfunction createConstraint$3(params, initialValue) {\n return new PointNdConstraint({\n assembly: Point4dAssembly,\n components: [\n createDimensionConstraint(Object.assign(Object.assign({}, params), params.x), initialValue.x),\n createDimensionConstraint(Object.assign(Object.assign({}, params), params.y), initialValue.y),\n createDimensionConstraint(Object.assign(Object.assign({}, params), params.z), initialValue.z),\n createDimensionConstraint(Object.assign(Object.assign({}, params), params.w), initialValue.w),\n ],\n });\n}\ncreatePlugin({\n id: 'input-point4d',\n type: 'input',\n accept: (value, params) => {\n if (!Point4d.isObject(value)) {\n return null;\n }\n const result = parseRecord(params, (p) => (Object.assign(Object.assign({}, createPointDimensionParser(p)), { readonly: p.optional.constant(false), w: p.optional.custom(parsePointDimensionParams), x: p.optional.custom(parsePointDimensionParams), y: p.optional.custom(parsePointDimensionParams), z: p.optional.custom(parsePointDimensionParams) })));\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => point4dFromUnknown,\n constraint: (args) => createConstraint$3(args.params, args.initialValue),\n equals: Point4d.equals,\n writer: (_args) => writePoint4d,\n },\n controller: (args) => {\n const value = args.value;\n const c = args.constraint;\n const dParams = [\n args.params.x,\n args.params.y,\n args.params.z,\n args.params.w,\n ];\n return new PointNdTextController(args.document, {\n assembly: Point4dAssembly,\n axes: value.rawValue.getComponents().map((comp, i) => {\n var _a;\n return createPointAxis({\n constraint: c.components[i],\n initialValue: comp,\n params: deepMerge(args.params, ((_a = dParams[i]) !== null && _a !== void 0 ? _a : {})),\n });\n }),\n parser: parseNumber,\n value: value,\n viewProps: args.viewProps,\n });\n },\n});\n\nfunction createConstraint$2(params) {\n const constraints = [];\n const lc = createListConstraint(params.options);\n if (lc) {\n constraints.push(lc);\n }\n return new CompositeConstraint(constraints);\n}\ncreatePlugin({\n id: 'input-string',\n type: 'input',\n accept: (value, params) => {\n if (typeof value !== 'string') {\n return null;\n }\n const result = parseRecord(params, (p) => ({\n readonly: p.optional.constant(false),\n options: p.optional.custom(parseListOptions),\n }));\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => stringFromUnknown,\n constraint: (args) => createConstraint$2(args.params),\n writer: (_args) => writePrimitive,\n },\n controller: (args) => {\n const doc = args.document;\n const value = args.value;\n const c = args.constraint;\n const lc = c && findConstraint(c, ListConstraint);\n if (lc) {\n return new ListController(doc, {\n props: new ValueMap({\n options: lc.values.value('options'),\n }),\n value: value,\n viewProps: args.viewProps,\n });\n }\n return new TextController(doc, {\n parser: (v) => v,\n props: ValueMap.fromObject({\n formatter: formatString,\n }),\n value: value,\n viewProps: args.viewProps,\n });\n },\n api(args) {\n if (typeof args.controller.value.rawValue !== 'string') {\n return null;\n }\n if (args.controller.valueController instanceof ListController) {\n return new ListInputBindingApi(args.controller);\n }\n return null;\n },\n});\n\nconst Constants = {\n monitor: {\n defaultInterval: 200,\n defaultRows: 3,\n },\n};\n\nconst cn$2 = ClassName('mll');\nclass MultiLogView {\n constructor(doc, config) {\n this.onValueUpdate_ = this.onValueUpdate_.bind(this);\n this.formatter_ = config.formatter;\n this.element = doc.createElement('div');\n this.element.classList.add(cn$2());\n config.viewProps.bindClassModifiers(this.element);\n const textareaElem = doc.createElement('textarea');\n textareaElem.classList.add(cn$2('i'));\n textareaElem.style.height = `calc(var(${getCssVar('containerUnitSize')}) * ${config.rows})`;\n textareaElem.readOnly = true;\n config.viewProps.bindDisabled(textareaElem);\n this.element.appendChild(textareaElem);\n this.textareaElem_ = textareaElem;\n config.value.emitter.on('change', this.onValueUpdate_);\n this.value = config.value;\n this.update_();\n }\n update_() {\n const elem = this.textareaElem_;\n const shouldScroll = elem.scrollTop === elem.scrollHeight - elem.clientHeight;\n const lines = [];\n this.value.rawValue.forEach((value) => {\n if (value !== undefined) {\n lines.push(this.formatter_(value));\n }\n });\n elem.textContent = lines.join('\\n');\n if (shouldScroll) {\n elem.scrollTop = elem.scrollHeight;\n }\n }\n onValueUpdate_() {\n this.update_();\n }\n}\n\nclass MultiLogController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new MultiLogView(doc, {\n formatter: config.formatter,\n rows: config.rows,\n value: this.value,\n viewProps: this.viewProps,\n });\n }\n}\n\nconst cn$1 = ClassName('sgl');\nclass SingleLogView {\n constructor(doc, config) {\n this.onValueUpdate_ = this.onValueUpdate_.bind(this);\n this.formatter_ = config.formatter;\n this.element = doc.createElement('div');\n this.element.classList.add(cn$1());\n config.viewProps.bindClassModifiers(this.element);\n const inputElem = doc.createElement('input');\n inputElem.classList.add(cn$1('i'));\n inputElem.readOnly = true;\n inputElem.type = 'text';\n config.viewProps.bindDisabled(inputElem);\n this.element.appendChild(inputElem);\n this.inputElement = inputElem;\n config.value.emitter.on('change', this.onValueUpdate_);\n this.value = config.value;\n this.update_();\n }\n update_() {\n const values = this.value.rawValue;\n const lastValue = values[values.length - 1];\n this.inputElement.value =\n lastValue !== undefined ? this.formatter_(lastValue) : '';\n }\n onValueUpdate_() {\n this.update_();\n }\n}\n\nclass SingleLogController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new SingleLogView(doc, {\n formatter: config.formatter,\n value: this.value,\n viewProps: this.viewProps,\n });\n }\n}\n\ncreatePlugin({\n id: 'monitor-bool',\n type: 'monitor',\n accept: (value, params) => {\n if (typeof value !== 'boolean') {\n return null;\n }\n const result = parseRecord(params, (p) => ({\n readonly: p.required.constant(true),\n rows: p.optional.number,\n }));\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => boolFromUnknown,\n },\n controller: (args) => {\n var _a;\n if (args.value.rawValue.length === 1) {\n return new SingleLogController(args.document, {\n formatter: BooleanFormatter,\n value: args.value,\n viewProps: args.viewProps,\n });\n }\n return new MultiLogController(args.document, {\n formatter: BooleanFormatter,\n rows: (_a = args.params.rows) !== null && _a !== void 0 ? _a : Constants.monitor.defaultRows,\n value: args.value,\n viewProps: args.viewProps,\n });\n },\n});\n\nclass GraphLogMonitorBindingApi extends BindingApi {\n get max() {\n return this.controller.valueController.props.get('max');\n }\n set max(max) {\n this.controller.valueController.props.set('max', max);\n }\n get min() {\n return this.controller.valueController.props.get('min');\n }\n set min(min) {\n this.controller.valueController.props.set('min', min);\n }\n}\n\nconst cn = ClassName('grl');\nclass GraphLogView {\n constructor(doc, config) {\n this.onCursorChange_ = this.onCursorChange_.bind(this);\n this.onValueUpdate_ = this.onValueUpdate_.bind(this);\n this.element = doc.createElement('div');\n this.element.classList.add(cn());\n config.viewProps.bindClassModifiers(this.element);\n this.formatter_ = config.formatter;\n this.props_ = config.props;\n this.cursor_ = config.cursor;\n this.cursor_.emitter.on('change', this.onCursorChange_);\n const svgElem = doc.createElementNS(SVG_NS, 'svg');\n svgElem.classList.add(cn('g'));\n svgElem.style.height = `calc(var(${getCssVar('containerUnitSize')}) * ${config.rows})`;\n this.element.appendChild(svgElem);\n this.svgElem_ = svgElem;\n const lineElem = doc.createElementNS(SVG_NS, 'polyline');\n this.svgElem_.appendChild(lineElem);\n this.lineElem_ = lineElem;\n const tooltipElem = doc.createElement('div');\n tooltipElem.classList.add(cn('t'), ClassName('tt')());\n this.element.appendChild(tooltipElem);\n this.tooltipElem_ = tooltipElem;\n config.value.emitter.on('change', this.onValueUpdate_);\n this.value = config.value;\n this.update_();\n }\n get graphElement() {\n return this.svgElem_;\n }\n update_() {\n const bounds = this.svgElem_.getBoundingClientRect();\n const maxIndex = this.value.rawValue.length - 1;\n const min = this.props_.get('min');\n const max = this.props_.get('max');\n const points = [];\n this.value.rawValue.forEach((v, index) => {\n if (v === undefined) {\n return;\n }\n const x = mapRange(index, 0, maxIndex, 0, bounds.width);\n const y = mapRange(v, min, max, bounds.height, 0);\n points.push([x, y].join(','));\n });\n this.lineElem_.setAttributeNS(null, 'points', points.join(' '));\n const tooltipElem = this.tooltipElem_;\n const value = this.value.rawValue[this.cursor_.rawValue];\n if (value === undefined) {\n tooltipElem.classList.remove(cn('t', 'a'));\n return;\n }\n const tx = mapRange(this.cursor_.rawValue, 0, maxIndex, 0, bounds.width);\n const ty = mapRange(value, min, max, bounds.height, 0);\n tooltipElem.style.left = `${tx}px`;\n tooltipElem.style.top = `${ty}px`;\n tooltipElem.textContent = `${this.formatter_(value)}`;\n if (!tooltipElem.classList.contains(cn('t', 'a'))) {\n tooltipElem.classList.add(cn('t', 'a'), cn('t', 'in'));\n forceReflow(tooltipElem);\n tooltipElem.classList.remove(cn('t', 'in'));\n }\n }\n onValueUpdate_() {\n this.update_();\n }\n onCursorChange_() {\n this.update_();\n }\n}\n\nclass GraphLogController {\n constructor(doc, config) {\n this.onGraphMouseMove_ = this.onGraphMouseMove_.bind(this);\n this.onGraphMouseLeave_ = this.onGraphMouseLeave_.bind(this);\n this.onGraphPointerDown_ = this.onGraphPointerDown_.bind(this);\n this.onGraphPointerMove_ = this.onGraphPointerMove_.bind(this);\n this.onGraphPointerUp_ = this.onGraphPointerUp_.bind(this);\n this.props = config.props;\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.cursor_ = createValue(-1);\n this.view = new GraphLogView(doc, {\n cursor: this.cursor_,\n formatter: config.formatter,\n rows: config.rows,\n props: this.props,\n value: this.value,\n viewProps: this.viewProps,\n });\n if (!supportsTouch(doc)) {\n this.view.element.addEventListener('mousemove', this.onGraphMouseMove_);\n this.view.element.addEventListener('mouseleave', this.onGraphMouseLeave_);\n }\n else {\n const ph = new PointerHandler(this.view.element);\n ph.emitter.on('down', this.onGraphPointerDown_);\n ph.emitter.on('move', this.onGraphPointerMove_);\n ph.emitter.on('up', this.onGraphPointerUp_);\n }\n }\n importProps(state) {\n return importBladeState(state, null, (p) => ({\n max: p.required.number,\n min: p.required.number,\n }), (result) => {\n this.props.set('max', result.max);\n this.props.set('min', result.min);\n return true;\n });\n }\n exportProps() {\n return exportBladeState(null, {\n max: this.props.get('max'),\n min: this.props.get('min'),\n });\n }\n onGraphMouseLeave_() {\n this.cursor_.rawValue = -1;\n }\n onGraphMouseMove_(ev) {\n const bounds = this.view.element.getBoundingClientRect();\n this.cursor_.rawValue = Math.floor(mapRange(ev.offsetX, 0, bounds.width, 0, this.value.rawValue.length));\n }\n onGraphPointerDown_(ev) {\n this.onGraphPointerMove_(ev);\n }\n onGraphPointerMove_(ev) {\n if (!ev.data.point) {\n this.cursor_.rawValue = -1;\n return;\n }\n this.cursor_.rawValue = Math.floor(mapRange(ev.data.point.x, 0, ev.data.bounds.width, 0, this.value.rawValue.length));\n }\n onGraphPointerUp_() {\n this.cursor_.rawValue = -1;\n }\n}\n\nfunction createFormatter(params) {\n return !isEmpty(params.format) ? params.format : createNumberFormatter(2);\n}\nfunction createTextMonitor(args) {\n var _a;\n if (args.value.rawValue.length === 1) {\n return new SingleLogController(args.document, {\n formatter: createFormatter(args.params),\n value: args.value,\n viewProps: args.viewProps,\n });\n }\n return new MultiLogController(args.document, {\n formatter: createFormatter(args.params),\n rows: (_a = args.params.rows) !== null && _a !== void 0 ? _a : Constants.monitor.defaultRows,\n value: args.value,\n viewProps: args.viewProps,\n });\n}\nfunction createGraphMonitor(args) {\n var _a, _b, _c;\n return new GraphLogController(args.document, {\n formatter: createFormatter(args.params),\n rows: (_a = args.params.rows) !== null && _a !== void 0 ? _a : Constants.monitor.defaultRows,\n props: ValueMap.fromObject({\n max: (_b = args.params.max) !== null && _b !== void 0 ? _b : 100,\n min: (_c = args.params.min) !== null && _c !== void 0 ? _c : 0,\n }),\n value: args.value,\n viewProps: args.viewProps,\n });\n}\nfunction shouldShowGraph(params) {\n return params.view === 'graph';\n}\ncreatePlugin({\n id: 'monitor-number',\n type: 'monitor',\n accept: (value, params) => {\n if (typeof value !== 'number') {\n return null;\n }\n const result = parseRecord(params, (p) => ({\n format: p.optional.function,\n max: p.optional.number,\n min: p.optional.number,\n readonly: p.required.constant(true),\n rows: p.optional.number,\n view: p.optional.string,\n }));\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n defaultBufferSize: (params) => (shouldShowGraph(params) ? 64 : 1),\n reader: (_args) => numberFromUnknown,\n },\n controller: (args) => {\n if (shouldShowGraph(args.params)) {\n return createGraphMonitor(args);\n }\n return createTextMonitor(args);\n },\n api: (args) => {\n if (args.controller.valueController instanceof GraphLogController) {\n return new GraphLogMonitorBindingApi(args.controller);\n }\n return null;\n },\n});\n\ncreatePlugin({\n id: 'monitor-string',\n type: 'monitor',\n accept: (value, params) => {\n if (typeof value !== 'string') {\n return null;\n }\n const result = parseRecord(params, (p) => ({\n multiline: p.optional.boolean,\n readonly: p.required.constant(true),\n rows: p.optional.number,\n }));\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => stringFromUnknown,\n },\n controller: (args) => {\n var _a;\n const value = args.value;\n const multiline = value.rawValue.length > 1 || args.params.multiline;\n if (multiline) {\n return new MultiLogController(args.document, {\n formatter: formatString,\n rows: (_a = args.params.rows) !== null && _a !== void 0 ? _a : Constants.monitor.defaultRows,\n value: value,\n viewProps: args.viewProps,\n });\n }\n return new SingleLogController(args.document, {\n formatter: formatString,\n value: value,\n viewProps: args.viewProps,\n });\n },\n});\n\nclass ButtonCellApi {\n constructor(controller) {\n this.controller_ = controller;\n }\n get disabled() {\n return this.controller_.viewProps.get('disabled');\n }\n set disabled(disabled) {\n this.controller_.viewProps.set('disabled', disabled);\n }\n get title() {\n var _a;\n return (_a = this.controller_.props.get('title')) !== null && _a !== void 0 ? _a : '';\n }\n set title(title) {\n this.controller_.props.set('title', title);\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n const emitter = this.controller_.emitter;\n emitter.on(eventName, () => {\n bh(new TpEvent(this));\n });\n return this;\n }\n}\n\nclass TpButtonGridEvent extends TpEvent {\n constructor(target, cell, index) {\n super(target);\n this.cell = cell;\n this.index = index;\n }\n}\n\nclass ButtonGridApi extends BladeApi {\n constructor(controller) {\n super(controller);\n this.cellToApiMap_ = new Map();\n this.emitter_ = new Emitter();\n const gc = this.controller.valueController;\n gc.cellControllers.forEach((cc, i) => {\n const api = new ButtonCellApi(cc);\n this.cellToApiMap_.set(cc, api);\n cc.emitter.on('click', () => {\n const x = i % gc.size[0];\n const y = Math.floor(i / gc.size[0]);\n this.emitter_.emit('click', {\n event: new TpButtonGridEvent(this, api, [x, y]),\n });\n });\n });\n }\n cell(x, y) {\n const gc = this.controller.valueController;\n const cc = gc.cellControllers[y * gc.size[0] + x];\n return this.cellToApiMap_.get(cc);\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev.event);\n });\n return this;\n }\n}\n\nclass ButtonGridController {\n constructor(doc, config) {\n this.size = config.size;\n const [w, h] = this.size;\n const bcs = [];\n for (let y = 0; y < h; y++) {\n for (let x = 0; x < w; x++) {\n const bc = new ButtonController(doc, {\n props: ValueMap.fromObject(Object.assign({}, config.cellConfig(x, y))),\n viewProps: ViewProps.create(),\n });\n bcs.push(bc);\n }\n }\n this.cellCs_ = bcs;\n this.viewProps = ViewProps.create();\n this.viewProps.handleDispose(() => {\n this.cellCs_.forEach((c) => {\n c.viewProps.set('disposed', true);\n });\n });\n this.view = new PlainView(doc, {\n viewProps: this.viewProps,\n viewName: 'btngrid',\n });\n this.view.element.style.gridTemplateColumns = `repeat(${w}, 1fr)`;\n this.cellCs_.forEach((bc) => {\n this.view.element.appendChild(bc.view.element);\n });\n }\n get cellControllers() {\n return this.cellCs_;\n }\n}\n\nclass ButtonGridBladeController extends BladeController {\n constructor(doc, config) {\n const bc = config.valueController;\n const lc = new LabelController(doc, {\n blade: config.blade,\n props: config.labelProps,\n valueController: bc,\n });\n super({\n blade: config.blade,\n view: lc.view,\n viewProps: bc.viewProps,\n });\n this.valueController = bc;\n this.labelController = lc;\n }\n}\n\nconst ButtonGridBladePlugin = createPlugin({\n id: 'buttongrid',\n type: 'blade',\n accept(params) {\n const result = parseRecord(params, (p) => ({\n cells: p.required.function,\n size: p.required.array(p.required.number),\n view: p.required.constant('buttongrid'),\n label: p.optional.string,\n }));\n return result ? { params: result } : null;\n },\n controller(args) {\n return new ButtonGridBladeController(args.document, {\n blade: args.blade,\n labelProps: ValueMap.fromObject({\n label: args.params.label,\n }),\n valueController: new ButtonGridController(args.document, {\n cellConfig: args.params.cells,\n size: args.params.size,\n }),\n });\n },\n api(args) {\n if (args.controller instanceof ButtonGridBladeController) {\n return new ButtonGridApi(args.controller);\n }\n return null;\n },\n});\n\nclass CubicBezierApi extends BladeApi {\n get label() {\n return this.controller.labelController.props.get('label');\n }\n set label(label) {\n this.controller.labelController.props.set('label', label);\n }\n get value() {\n return this.controller.valueController.value.rawValue;\n }\n set value(value) {\n this.controller.valueController.value.rawValue = value;\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.controller.valueController.value.emitter.on(eventName, (ev) => {\n bh(new TpChangeEvent(this, ev.rawValue, ev.options.last));\n });\n return this;\n }\n}\n\nfunction interpolate(x1, x2, t) {\n return x1 * (1 - t) + x2 * t;\n}\nconst MAX_ITERATION = 20;\nconst X_DELTA = 0.001;\nconst CACHE_RESOLUTION = 100;\nfunction y(cb, x) {\n let dt = 0.25;\n let t = 0.5;\n let y = -1;\n for (let i = 0; i < MAX_ITERATION; i++) {\n const [tx, ty] = cb.curve(t);\n t += dt * (tx < x ? +1 : -1);\n y = ty;\n dt *= 0.5;\n if (Math.abs(x - tx) < X_DELTA) {\n break;\n }\n }\n return y;\n}\nclass CubicBezier {\n constructor(x1 = 0, y1 = 0, x2 = 1, y2 = 1) {\n this.cache_ = [];\n this.comps_ = [x1, y1, x2, y2];\n }\n get x1() {\n return this.comps_[0];\n }\n get y1() {\n return this.comps_[1];\n }\n get x2() {\n return this.comps_[2];\n }\n get y2() {\n return this.comps_[3];\n }\n static isObject(obj) {\n if (isEmpty(obj)) {\n return false;\n }\n if (!Array.isArray(obj)) {\n return false;\n }\n return (typeof obj[0] === 'number' &&\n typeof obj[1] === 'number' &&\n typeof obj[2] === 'number' &&\n typeof obj[3] === 'number');\n }\n static equals(v1, v2) {\n return (v1.x1 === v2.x1 && v1.y1 === v2.y1 && v1.x2 === v2.x2 && v1.y2 === v2.y2);\n }\n curve(t) {\n const x01 = interpolate(0, this.x1, t);\n const y01 = interpolate(0, this.y1, t);\n const x12 = interpolate(this.x1, this.x2, t);\n const y12 = interpolate(this.y1, this.y2, t);\n const x23 = interpolate(this.x2, 1, t);\n const y23 = interpolate(this.y2, 1, t);\n const xr0 = interpolate(x01, x12, t);\n const yr0 = interpolate(y01, y12, t);\n const xr1 = interpolate(x12, x23, t);\n const yr1 = interpolate(y12, y23, t);\n return [interpolate(xr0, xr1, t), interpolate(yr0, yr1, t)];\n }\n y(x) {\n if (this.cache_.length === 0) {\n const cache = [];\n for (let i = 0; i < CACHE_RESOLUTION; i++) {\n cache.push(y(this, mapRange(i, 0, CACHE_RESOLUTION - 1, 0, 1)));\n }\n this.cache_ = cache;\n }\n return this.cache_[Math.round(mapRange(constrainRange(x, 0, 1), 0, 1, 0, CACHE_RESOLUTION - 1))];\n }\n toObject() {\n return [this.comps_[0], this.comps_[1], this.comps_[2], this.comps_[3]];\n }\n}\nconst CubicBezierAssembly = {\n toComponents: (p) => p.toObject(),\n fromComponents: (comps) => new CubicBezier(...comps),\n};\n\nfunction cubicBezierToString(cb) {\n const formatter = createNumberFormatter(2);\n const comps = cb.toObject().map((c) => formatter(c));\n return `cubic-bezier(${comps.join(', ')})`;\n}\nconst COMPS_EMPTY = [0, 0.5, 0.5, 1];\nfunction cubicBezierFromString(text) {\n const m = text.match(/^cubic-bezier\\s*\\(\\s*([0-9.]+)\\s*,\\s*([0-9.]+)\\s*,\\s*([0-9.]+)\\s*,\\s*([0-9.]+)\\s*\\)$/);\n if (!m) {\n return new CubicBezier(...COMPS_EMPTY);\n }\n const comps = [m[1], m[2], m[3], m[4]].reduce((comps, comp) => {\n if (!comps) {\n return null;\n }\n const n = Number(comp);\n if (isNaN(n)) {\n return null;\n }\n return [...comps, n];\n }, []);\n return new CubicBezier(...(comps !== null && comps !== void 0 ? comps : COMPS_EMPTY));\n}\n\nconst className$7 = ClassName('cbz');\nclass CubicBezierView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className$7());\n config.viewProps.bindClassModifiers(this.element);\n config.foldable.bindExpandedClass(this.element, className$7(undefined, 'expanded'));\n bindValueMap(config.foldable, 'completed', valueToClassName(this.element, className$7(undefined, 'cpl')));\n const headElem = doc.createElement('div');\n headElem.classList.add(className$7('h'));\n this.element.appendChild(headElem);\n const buttonElem = doc.createElement('button');\n buttonElem.classList.add(className$7('b'));\n config.viewProps.bindDisabled(buttonElem);\n const iconElem = doc.createElementNS(SVG_NS, 'svg');\n iconElem.innerHTML = '<path d=\"M2 13C8 13 8 3 14 3\"/>';\n buttonElem.appendChild(iconElem);\n headElem.appendChild(buttonElem);\n this.buttonElement = buttonElem;\n const textElem = doc.createElement('div');\n textElem.classList.add(className$7('t'));\n headElem.appendChild(textElem);\n this.textElement = textElem;\n if (config.pickerLayout === 'inline') {\n const pickerElem = doc.createElement('div');\n pickerElem.classList.add(className$7('p'));\n this.element.appendChild(pickerElem);\n this.pickerElement = pickerElem;\n }\n else {\n this.pickerElement = null;\n }\n }\n}\n\nconst className$6 = ClassName('cbzp');\nclass CubicBezierPickerView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className$6());\n config.viewProps.bindClassModifiers(this.element);\n const graphElem = doc.createElement('div');\n graphElem.classList.add(className$6('g'));\n this.element.appendChild(graphElem);\n this.graphElement = graphElem;\n const textElem = doc.createElement('div');\n textElem.classList.add(className$6('t'));\n this.element.appendChild(textElem);\n this.textElement = textElem;\n }\n}\n\nfunction waitToBeAddedToDom(elem, callback) {\n const ob = new MutationObserver((ml) => {\n for (const m of ml) {\n if (m.type !== 'childList') {\n continue;\n }\n m.addedNodes.forEach((elem) => {\n if (!elem.contains(elem)) {\n return;\n }\n callback();\n ob.disconnect();\n });\n }\n });\n const doc = elem.ownerDocument;\n ob.observe(doc.body, {\n attributes: true,\n childList: true,\n subtree: true,\n });\n}\n\nconst className$5 = ClassName('cbzg');\n// TODO: Apply to core\nfunction compose(h1, h2) {\n return (input) => h2(h1(input));\n}\nclass CubicBezierGraphView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className$5());\n config.viewProps.bindClassModifiers(this.element);\n config.viewProps.bindTabIndex(this.element);\n const previewElem = doc.createElement('div');\n previewElem.classList.add(className$5('p'));\n this.element.appendChild(previewElem);\n this.previewElement = previewElem;\n const svgElem = doc.createElementNS(SVG_NS, 'svg');\n svgElem.classList.add(className$5('g'));\n this.element.appendChild(svgElem);\n this.svgElem_ = svgElem;\n const guideElem = doc.createElementNS(SVG_NS, 'path');\n guideElem.classList.add(className$5('u'));\n this.svgElem_.appendChild(guideElem);\n this.guideElem_ = guideElem;\n const lineElem = doc.createElementNS(SVG_NS, 'polyline');\n lineElem.classList.add(className$5('l'));\n this.svgElem_.appendChild(lineElem);\n this.lineElem_ = lineElem;\n this.handleElems_ = [doc.createElement('div'), doc.createElement('div')];\n this.handleElems_.forEach((elem) => {\n elem.classList.add(className$5('h'));\n this.element.appendChild(elem);\n });\n this.vectorElems_ = [\n doc.createElementNS(SVG_NS, 'line'),\n doc.createElementNS(SVG_NS, 'line'),\n ];\n this.vectorElems_.forEach((elem) => {\n elem.classList.add(className$5('v'));\n this.svgElem_.appendChild(elem);\n });\n this.value_ = config.value;\n this.value_.emitter.on('change', this.onValueChange_.bind(this));\n this.sel_ = config.selection;\n this.handleElems_.forEach((elem, index) => {\n bindValue(this.sel_, compose((selection) => selection === index, valueToClassName(elem, className$5('h', 'sel'))));\n });\n waitToBeAddedToDom(this.element, () => {\n this.refresh();\n });\n }\n getVertMargin_(h) {\n return h * 0.25;\n }\n valueToPosition(x, y) {\n const { clientWidth: w, clientHeight: h } = this.element;\n const vm = this.getVertMargin_(h);\n return {\n x: mapRange(x, 0, 1, 0, w),\n y: mapRange(y, 0, 1, h - vm, vm),\n };\n }\n positionToValue(x, y) {\n const bounds = this.element.getBoundingClientRect();\n const w = bounds.width;\n const h = bounds.height;\n const vm = this.getVertMargin_(h);\n return {\n x: constrainRange(mapRange(x, 0, w, 0, 1), 0, 1),\n y: mapRange(y, h - vm, vm, 0, 1),\n };\n }\n refresh() {\n this.guideElem_.setAttributeNS(null, 'd', [0, 1]\n .map((index) => {\n const p1 = this.valueToPosition(0, index);\n const p2 = this.valueToPosition(1, index);\n return [`M ${p1.x},${p1.y}`, `L ${p2.x},${p2.y}`].join(' ');\n })\n .join(' '));\n const bezier = this.value_.rawValue;\n const points = [];\n let t = 0;\n for (;;) {\n const p = this.valueToPosition(...bezier.curve(t));\n points.push([p.x, p.y].join(','));\n if (t >= 1) {\n break;\n }\n t = Math.min(t + 0.05, 1);\n }\n this.lineElem_.setAttributeNS(null, 'points', points.join(' '));\n const obj = bezier.toObject();\n [0, 1].forEach((index) => {\n const p1 = this.valueToPosition(index, index);\n const p2 = this.valueToPosition(obj[index * 2], obj[index * 2 + 1]);\n const vElem = this.vectorElems_[index];\n vElem.setAttributeNS(null, 'x1', String(p1.x));\n vElem.setAttributeNS(null, 'y1', String(p1.y));\n vElem.setAttributeNS(null, 'x2', String(p2.x));\n vElem.setAttributeNS(null, 'y2', String(p2.y));\n const hElem = this.handleElems_[index];\n hElem.style.left = `${p2.x}px`;\n hElem.style.top = `${p2.y}px`;\n });\n }\n onValueChange_() {\n this.refresh();\n }\n}\n\nconst TICK_COUNT = 24;\nconst PREVIEW_DELAY = 400;\nconst PREVIEW_DURATION = 1000;\nconst className$4 = ClassName('cbzprv');\nclass CubicBezierPreviewView {\n constructor(doc, config) {\n this.stopped_ = true;\n this.startTime_ = -1;\n this.onDispose_ = this.onDispose_.bind(this);\n this.onTimer_ = this.onTimer_.bind(this);\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.element = doc.createElement('div');\n this.element.classList.add(className$4());\n config.viewProps.bindClassModifiers(this.element);\n const svgElem = doc.createElementNS(SVG_NS, 'svg');\n svgElem.classList.add(className$4('g'));\n this.element.appendChild(svgElem);\n this.svgElem_ = svgElem;\n const ticksElem = doc.createElementNS(SVG_NS, 'path');\n ticksElem.classList.add(className$4('t'));\n this.svgElem_.appendChild(ticksElem);\n this.ticksElem_ = ticksElem;\n const markerElem = doc.createElement('div');\n markerElem.classList.add(className$4('m'));\n this.element.appendChild(markerElem);\n this.markerElem_ = markerElem;\n this.value_ = config.value;\n this.value_.emitter.on('change', this.onValueChange_);\n config.viewProps.handleDispose(this.onDispose_);\n waitToBeAddedToDom(this.element, () => {\n this.refresh();\n });\n }\n play() {\n this.stop();\n this.updateMarker_(0);\n this.markerElem_.classList.add(className$4('m', 'a'));\n this.startTime_ = new Date().getTime() + PREVIEW_DELAY;\n this.stopped_ = false;\n requestAnimationFrame(this.onTimer_);\n }\n stop() {\n this.stopped_ = true;\n this.markerElem_.classList.remove(className$4('m', 'a'));\n }\n onDispose_() {\n this.stop();\n }\n updateMarker_(progress) {\n const p = this.value_.rawValue.y(constrainRange(progress, 0, 1));\n this.markerElem_.style.left = `${p * 100}%`;\n }\n refresh() {\n const { clientWidth: w, clientHeight: h } = this.svgElem_;\n const ds = [];\n const bezier = this.value_.rawValue;\n for (let i = 0; i < TICK_COUNT; i++) {\n const px = mapRange(i, 0, TICK_COUNT - 1, 0, 1);\n const x = mapRange(bezier.y(px), 0, 1, 0, w);\n ds.push(`M ${x},0 v${h}`);\n }\n this.ticksElem_.setAttributeNS(null, 'd', ds.join(' '));\n }\n onTimer_() {\n if (this.startTime_ === null) {\n return;\n }\n const dt = new Date().getTime() - this.startTime_;\n const p = dt / PREVIEW_DURATION;\n this.updateMarker_(p);\n if (dt > PREVIEW_DURATION + PREVIEW_DELAY) {\n this.stop();\n }\n if (!this.stopped_) {\n requestAnimationFrame(this.onTimer_);\n }\n }\n onValueChange_() {\n this.refresh();\n this.play();\n }\n}\n\nfunction getDistance(x1, y1, x2, y2) {\n const dx = x2 - x1;\n const dy = y2 - y1;\n return Math.sqrt(dx * dx + dy * dy);\n}\nfunction lockAngle(x1, y1, x2, y2) {\n const d = getDistance(x1, y1, x2, y2);\n const a = Math.atan2(y2 - y1, x2 - x1);\n const la = (Math.round(a / (Math.PI / 4)) * Math.PI) / 4;\n return {\n x: x1 + Math.cos(la) * d,\n y: y1 + Math.sin(la) * d,\n };\n}\nclass CubicBezierGraphController {\n constructor(doc, config) {\n this.onKeyDown_ = this.onKeyDown_.bind(this);\n this.onKeyUp_ = this.onKeyUp_.bind(this);\n this.onPointerDown_ = this.onPointerDown_.bind(this);\n this.onPointerMove_ = this.onPointerMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.keyScale_ = config.keyScale;\n this.value = config.value;\n this.sel_ = createValue(0);\n this.viewProps = config.viewProps;\n this.view = new CubicBezierGraphView(doc, {\n selection: this.sel_,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view.element.addEventListener('keydown', this.onKeyDown_);\n this.view.element.addEventListener('keyup', this.onKeyUp_);\n this.prevView_ = new CubicBezierPreviewView(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.prevView_.element.addEventListener('mousedown', (ev) => {\n ev.stopImmediatePropagation();\n ev.preventDefault();\n this.prevView_.play();\n });\n this.view.previewElement.appendChild(this.prevView_.element);\n const ptHandler = new PointerHandler(this.view.element);\n ptHandler.emitter.on('down', this.onPointerDown_);\n ptHandler.emitter.on('move', this.onPointerMove_);\n ptHandler.emitter.on('up', this.onPointerUp_);\n }\n refresh() {\n this.view.refresh();\n this.prevView_.refresh();\n this.prevView_.play();\n }\n updateValue_(point, locksAngle, opts) {\n const index = this.sel_.rawValue;\n const comps = this.value.rawValue.toObject();\n const vp = this.view.positionToValue(point.x, point.y);\n const v = locksAngle ? lockAngle(index, index, vp.x, vp.y) : vp;\n comps[index * 2] = v.x;\n comps[index * 2 + 1] = v.y;\n this.value.setRawValue(new CubicBezier(...comps), opts);\n }\n onPointerDown_(ev) {\n const data = ev.data;\n if (!data.point) {\n return;\n }\n const bezier = this.value.rawValue;\n const p1 = this.view.valueToPosition(bezier.x1, bezier.y1);\n const d1 = getDistance(data.point.x, data.point.y, p1.x, p1.y);\n const p2 = this.view.valueToPosition(bezier.x2, bezier.y2);\n const d2 = getDistance(data.point.x, data.point.y, p2.x, p2.y);\n this.sel_.rawValue = d1 <= d2 ? 0 : 1;\n this.updateValue_(data.point, ev.shiftKey, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerMove_(ev) {\n const data = ev.data;\n if (!data.point) {\n return;\n }\n this.updateValue_(data.point, ev.shiftKey, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerUp_(ev) {\n const data = ev.data;\n if (!data.point) {\n return;\n }\n this.updateValue_(data.point, ev.shiftKey, {\n forceEmit: true,\n last: true,\n });\n }\n onKeyDown_(ev) {\n if (isArrowKey(ev.key)) {\n ev.preventDefault();\n }\n const index = this.sel_.rawValue;\n const comps = this.value.rawValue.toObject();\n const keyScale = this.keyScale_.rawValue;\n comps[index * 2] += getStepForKey(keyScale, getHorizontalStepKeys(ev));\n comps[index * 2 + 1] += getStepForKey(keyScale, getVerticalStepKeys(ev));\n this.value.setRawValue(new CubicBezier(...comps), {\n forceEmit: false,\n last: false,\n });\n }\n onKeyUp_(ev) {\n if (isArrowKey(ev.key)) {\n ev.preventDefault();\n }\n const keyScale = this.keyScale_.rawValue;\n const xStep = getStepForKey(keyScale, getHorizontalStepKeys(ev));\n const yStep = getStepForKey(keyScale, getVerticalStepKeys(ev));\n if (xStep === 0 && yStep === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n}\n\nclass CubicBezierPickerController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new CubicBezierPickerView(doc, {\n viewProps: this.viewProps,\n });\n this.gc_ = new CubicBezierGraphController(doc, {\n keyScale: config.axis.textProps.value('keyScale'),\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view.graphElement.appendChild(this.gc_.view.element);\n const xAxis = Object.assign(Object.assign({}, config.axis), { constraint: new RangeConstraint({ max: 1, min: 0 }) });\n const yAxis = Object.assign(Object.assign({}, config.axis), { constraint: undefined });\n this.tc_ = new PointNdTextController(doc, {\n assembly: CubicBezierAssembly,\n axes: [xAxis, yAxis, xAxis, yAxis],\n parser: parseNumber,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view.textElement.appendChild(this.tc_.view.element);\n }\n get allFocusableElements() {\n return [\n this.gc_.view.element,\n ...this.tc_.view.textViews.map((v) => v.inputElement),\n ];\n }\n refresh() {\n this.gc_.refresh();\n }\n}\n\nclass CubicBezierController {\n constructor(doc, config) {\n this.onButtonBlur_ = this.onButtonBlur_.bind(this);\n this.onButtonClick_ = this.onButtonClick_.bind(this);\n this.onPopupChildBlur_ = this.onPopupChildBlur_.bind(this);\n this.onPopupChildKeydown_ = this.onPopupChildKeydown_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.foldable_ = Foldable.create(config.expanded);\n this.view = new CubicBezierView(doc, {\n foldable: this.foldable_,\n pickerLayout: config.pickerLayout,\n viewProps: this.viewProps,\n });\n this.view.buttonElement.addEventListener('blur', this.onButtonBlur_);\n this.view.buttonElement.addEventListener('click', this.onButtonClick_);\n this.tc_ = new TextController(doc, {\n parser: cubicBezierFromString,\n props: ValueMap.fromObject({\n formatter: cubicBezierToString,\n }),\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view.textElement.appendChild(this.tc_.view.element);\n this.popC_ =\n config.pickerLayout === 'popup'\n ? new PopupController(doc, {\n viewProps: this.viewProps,\n })\n : null;\n const pickerC = new CubicBezierPickerController(doc, {\n axis: config.axis,\n value: this.value,\n viewProps: this.viewProps,\n });\n pickerC.allFocusableElements.forEach((elem) => {\n elem.addEventListener('blur', this.onPopupChildBlur_);\n elem.addEventListener('keydown', this.onPopupChildKeydown_);\n });\n this.pickerC_ = pickerC;\n if (this.popC_) {\n this.view.element.appendChild(this.popC_.view.element);\n this.popC_.view.element.appendChild(this.pickerC_.view.element);\n bindValue(this.popC_.shows, (shows) => {\n if (shows) {\n pickerC.refresh();\n }\n });\n connectValues({\n primary: this.foldable_.value('expanded'),\n secondary: this.popC_.shows,\n forward: (p) => p,\n backward: (_, s) => s,\n });\n }\n else if (this.view.pickerElement) {\n this.view.pickerElement.appendChild(this.pickerC_.view.element);\n bindFoldable(this.foldable_, this.view.pickerElement);\n }\n }\n onButtonBlur_(ev) {\n if (!this.popC_) {\n return;\n }\n const nextTarget = forceCast(ev.relatedTarget);\n if (!nextTarget || !this.popC_.view.element.contains(nextTarget)) {\n this.popC_.shows.rawValue = false;\n }\n }\n onButtonClick_() {\n this.foldable_.set('expanded', !this.foldable_.get('expanded'));\n if (this.foldable_.get('expanded')) {\n this.pickerC_.allFocusableElements[0].focus();\n }\n }\n onPopupChildBlur_(ev) {\n if (!this.popC_) {\n return;\n }\n const elem = this.popC_.view.element;\n const nextTarget = findNextTarget(ev);\n if (nextTarget && elem.contains(nextTarget)) {\n // Next target is in the popup\n return;\n }\n if (nextTarget &&\n nextTarget === this.view.buttonElement &&\n !supportsTouch(elem.ownerDocument)) {\n // Next target is the trigger button\n return;\n }\n this.popC_.shows.rawValue = false;\n }\n onPopupChildKeydown_(ev) {\n if (!this.popC_) {\n return;\n }\n if (ev.key === 'Escape') {\n this.popC_.shows.rawValue = false;\n }\n }\n}\n\nfunction createConstraint$1() {\n return new PointNdConstraint({\n assembly: CubicBezierAssembly,\n components: [0, 1, 2, 3].map((index) => index % 2 === 0\n ? new RangeConstraint({\n min: 0,\n max: 1,\n })\n : undefined),\n });\n}\nconst CubicBezierBladePlugin = createPlugin({\n id: 'cubicbezier',\n type: 'blade',\n accept(params) {\n const result = parseRecord(params, (p) => ({\n value: p.required.array(p.required.number),\n view: p.required.constant('cubicbezier'),\n expanded: p.optional.boolean,\n label: p.optional.string,\n picker: p.optional.custom((v) => {\n return v === 'inline' || v === 'popup' ? v : undefined;\n }),\n }));\n return result ? { params: result } : null;\n },\n controller(args) {\n var _a, _b;\n const rv = new CubicBezier(...args.params.value);\n const v = createValue(rv, {\n constraint: createConstraint$1(),\n equals: CubicBezier.equals,\n });\n const vc = new CubicBezierController(args.document, {\n axis: {\n textProps: ValueMap.fromObject({\n keyScale: 0.1,\n pointerScale: 0.01,\n formatter: createNumberFormatter(2),\n }),\n },\n expanded: (_a = args.params.expanded) !== null && _a !== void 0 ? _a : false,\n pickerLayout: (_b = args.params.picker) !== null && _b !== void 0 ? _b : 'popup',\n value: v,\n viewProps: args.viewProps,\n });\n return new LabeledValueBladeController(args.document, {\n blade: args.blade,\n props: ValueMap.fromObject({\n label: args.params.label,\n }),\n value: v,\n valueController: vc,\n });\n },\n api(args) {\n if (!(args.controller instanceof LabeledValueBladeController)) {\n return null;\n }\n if (!(args.controller.valueController instanceof CubicBezierController)) {\n return null;\n }\n return new CubicBezierApi(args.controller);\n },\n});\n\nclass FpsGraphBladeApi extends BladeApi {\n get fps() {\n return this.controller.valueController.fps;\n }\n get max() {\n return this.controller.valueController.props.get('max');\n }\n set max(max) {\n this.controller.valueController.props.set('max', max);\n }\n get min() {\n return this.controller.valueController.props.get('min');\n }\n set min(min) {\n this.controller.valueController.props.set('min', min);\n }\n begin() {\n this.controller.valueController.begin();\n }\n end() {\n this.controller.valueController.end();\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n const emitter = this.controller.valueController.ticker.emitter;\n emitter.on(eventName, () => {\n bh(new TpEvent(this));\n });\n return this;\n }\n}\n\nconst MAX_TIMESTAMPS = 20;\nclass Fpswatch {\n constructor() {\n this.start_ = null;\n this.duration_ = 0;\n this.fps_ = null;\n this.frameCount_ = 0;\n this.timestamps_ = [];\n }\n get duration() {\n return this.duration_;\n }\n get fps() {\n return this.fps_;\n }\n begin(now) {\n this.start_ = now.getTime();\n }\n calculateFps_(nowTime) {\n if (this.timestamps_.length === 0) {\n return null;\n }\n const ts = this.timestamps_[0];\n return (1000 * (this.frameCount_ - ts.frameCount)) / (nowTime - ts.time);\n }\n compactTimestamps_() {\n if (this.timestamps_.length <= MAX_TIMESTAMPS) {\n return;\n }\n const len = this.timestamps_.length - MAX_TIMESTAMPS;\n this.timestamps_.splice(0, len);\n const df = this.timestamps_[0].frameCount;\n this.timestamps_.forEach((ts) => {\n ts.frameCount -= df;\n });\n this.frameCount_ -= df;\n }\n end(now) {\n if (this.start_ === null) {\n return;\n }\n const t = now.getTime();\n this.duration_ = t - this.start_;\n this.start_ = null;\n this.fps_ = this.calculateFps_(t);\n this.timestamps_.push({\n frameCount: this.frameCount_,\n time: t,\n });\n ++this.frameCount_;\n this.compactTimestamps_();\n }\n}\n\nconst className$3 = ClassName('fps');\nclass FpsView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className$3());\n config.viewProps.bindClassModifiers(this.element);\n this.graphElement = doc.createElement('div');\n this.graphElement.classList.add(className$3('g'));\n this.element.appendChild(this.graphElement);\n const labelElement = doc.createElement('div');\n labelElement.classList.add(className$3('l'));\n this.element.appendChild(labelElement);\n const valueElement = doc.createElement('span');\n valueElement.classList.add(className$3('v'));\n valueElement.textContent = '--';\n labelElement.appendChild(valueElement);\n this.valueElement = valueElement;\n const unitElement = doc.createElement('span');\n unitElement.classList.add(className$3('u'));\n unitElement.textContent = 'FPS';\n labelElement.appendChild(unitElement);\n }\n}\n\nclass FpsGraphController {\n constructor(doc, config) {\n this.stopwatch_ = new Fpswatch();\n this.onTick_ = this.onTick_.bind(this);\n this.ticker = config.ticker;\n this.ticker.emitter.on('tick', this.onTick_);\n this.props = config.props;\n this.value_ = config.value;\n this.viewProps = config.viewProps;\n this.view = new FpsView(doc, {\n viewProps: this.viewProps,\n });\n this.graphC_ = new GraphLogController(doc, {\n formatter: createNumberFormatter(0),\n props: this.props,\n rows: config.rows,\n value: this.value_,\n viewProps: this.viewProps,\n });\n this.view.graphElement.appendChild(this.graphC_.view.element);\n this.viewProps.handleDispose(() => {\n this.graphC_.viewProps.set('disposed', true);\n this.ticker.dispose();\n });\n }\n get fps() {\n return this.stopwatch_.fps;\n }\n begin() {\n this.stopwatch_.begin(new Date());\n }\n end() {\n this.stopwatch_.end(new Date());\n }\n onTick_() {\n const fps = this.fps;\n if (fps !== null) {\n const buffer = this.value_.rawValue;\n this.value_.rawValue = createPushedBuffer(buffer, fps);\n this.view.valueElement.textContent = fps.toFixed(0);\n }\n }\n}\n\nclass FpsGraphBladeController extends BladeController {\n constructor(doc, config) {\n const fc = config.valueController;\n const lc = new LabelController(doc, {\n blade: config.blade,\n props: config.labelProps,\n valueController: fc,\n });\n super({\n blade: config.blade,\n view: lc.view,\n viewProps: fc.viewProps,\n });\n this.valueController = fc;\n this.labelController = lc;\n }\n}\n\nfunction createTicker(document, interval) {\n return interval === 0\n ? new ManualTicker()\n : new IntervalTicker(document, interval !== null && interval !== void 0 ? interval : Constants.monitor.defaultInterval);\n}\nconst FpsGraphBladePlugin = createPlugin({\n id: 'fpsgraph',\n type: 'blade',\n accept(params) {\n const result = parseRecord(params, (p) => ({\n view: p.required.constant('fpsgraph'),\n interval: p.optional.number,\n label: p.optional.string,\n rows: p.optional.number,\n max: p.optional.number,\n min: p.optional.number,\n }));\n return result ? { params: result } : null;\n },\n controller(args) {\n var _a, _b, _c, _d;\n const interval = (_a = args.params.interval) !== null && _a !== void 0 ? _a : 500;\n return new FpsGraphBladeController(args.document, {\n blade: args.blade,\n labelProps: ValueMap.fromObject({\n label: args.params.label,\n }),\n valueController: new FpsGraphController(args.document, {\n props: ValueMap.fromObject({\n max: (_b = args.params.max) !== null && _b !== void 0 ? _b : 90,\n min: (_c = args.params.min) !== null && _c !== void 0 ? _c : 0,\n }),\n rows: (_d = args.params.rows) !== null && _d !== void 0 ? _d : 2,\n ticker: createTicker(args.document, interval),\n value: createValue(initializeBuffer(80)),\n viewProps: args.viewProps,\n }),\n });\n },\n api(args) {\n if (!(args.controller instanceof FpsGraphBladeController)) {\n return null;\n }\n return new FpsGraphBladeApi(args.controller);\n },\n});\n\nclass Interval {\n constructor(min, max) {\n this.min = min;\n this.max = max;\n }\n static isObject(obj) {\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n const min = obj.min;\n const max = obj.max;\n if (typeof min !== 'number' || typeof max !== 'number') {\n return false;\n }\n return true;\n }\n static equals(v1, v2) {\n return v1.min === v2.min && v1.max === v2.max;\n }\n get length() {\n return this.max - this.min;\n }\n toObject() {\n return {\n min: this.min,\n max: this.max,\n };\n }\n}\nconst IntervalAssembly = {\n fromComponents: (comps) => new Interval(comps[0], comps[1]),\n toComponents: (p) => [p.min, p.max],\n};\n\nclass IntervalConstraint {\n constructor(edge) {\n this.edge = edge;\n }\n constrain(value) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n if (value.min <= value.max) {\n return new Interval((_b = (_a = this.edge) === null || _a === void 0 ? void 0 : _a.constrain(value.min)) !== null && _b !== void 0 ? _b : value.min, (_d = (_c = this.edge) === null || _c === void 0 ? void 0 : _c.constrain(value.max)) !== null && _d !== void 0 ? _d : value.max);\n }\n const c = (value.min + value.max) / 2;\n return new Interval((_f = (_e = this.edge) === null || _e === void 0 ? void 0 : _e.constrain(c)) !== null && _f !== void 0 ? _f : c, (_h = (_g = this.edge) === null || _g === void 0 ? void 0 : _g.constrain(c)) !== null && _h !== void 0 ? _h : c);\n }\n}\n\nconst className$2 = ClassName('rsltxt');\nclass RangeSliderTextView {\n constructor(doc, config) {\n this.sliderView_ = config.sliderView;\n this.textView_ = config.textView;\n this.element = doc.createElement('div');\n this.element.classList.add(className$2());\n const sliderElem = doc.createElement('div');\n sliderElem.classList.add(className$2('s'));\n sliderElem.appendChild(this.sliderView_.element);\n this.element.appendChild(sliderElem);\n const textElem = doc.createElement('div');\n textElem.classList.add(className$2('t'));\n textElem.appendChild(this.textView_.element);\n this.element.appendChild(textElem);\n }\n}\n\nconst className$1 = ClassName('rsl');\nclass RangeSliderView {\n constructor(doc, config) {\n this.onSliderPropsChange_ = this.onSliderPropsChange_.bind(this);\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.sliderProps_ = config.sliderProps;\n this.sliderProps_.emitter.on('change', this.onSliderPropsChange_);\n this.element = doc.createElement('div');\n this.element.classList.add(className$1());\n config.viewProps.bindClassModifiers(this.element);\n this.value_ = config.value;\n this.value_.emitter.on('change', this.onValueChange_);\n const trackElem = doc.createElement('div');\n trackElem.classList.add(className$1('t'));\n this.element.appendChild(trackElem);\n this.trackElement = trackElem;\n const barElem = doc.createElement('div');\n barElem.classList.add(className$1('b'));\n trackElem.appendChild(barElem);\n this.barElement = barElem;\n const knobElems = ['min', 'max'].map((modifier) => {\n const elem = doc.createElement('div');\n elem.classList.add(className$1('k'), className$1('k', modifier));\n trackElem.appendChild(elem);\n return elem;\n });\n this.knobElements = [knobElems[0], knobElems[1]];\n this.update_();\n }\n valueToX_(value) {\n const min = this.sliderProps_.get('min');\n const max = this.sliderProps_.get('max');\n return constrainRange(mapRange(value, min, max, 0, 1), 0, 1) * 100;\n }\n update_() {\n const v = this.value_.rawValue;\n if (v.length === 0) {\n this.element.classList.add(className$1(undefined, 'zero'));\n }\n else {\n this.element.classList.remove(className$1(undefined, 'zero'));\n }\n const xs = [this.valueToX_(v.min), this.valueToX_(v.max)];\n this.barElement.style.left = `${xs[0]}%`;\n this.barElement.style.right = `${100 - xs[1]}%`;\n this.knobElements.forEach((elem, index) => {\n elem.style.left = `${xs[index]}%`;\n });\n }\n onSliderPropsChange_() {\n this.update_();\n }\n onValueChange_() {\n this.update_();\n }\n}\n\nclass RangeSliderController {\n constructor(doc, config) {\n this.grabbing_ = null;\n this.grabOffset_ = 0;\n this.onPointerDown_ = this.onPointerDown_.bind(this);\n this.onPointerMove_ = this.onPointerMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.sliderProps = config.sliderProps;\n this.viewProps = config.viewProps;\n this.value = config.value;\n this.view = new RangeSliderView(doc, {\n sliderProps: this.sliderProps,\n value: this.value,\n viewProps: config.viewProps,\n });\n const ptHandler = new PointerHandler(this.view.trackElement);\n ptHandler.emitter.on('down', this.onPointerDown_);\n ptHandler.emitter.on('move', this.onPointerMove_);\n ptHandler.emitter.on('up', this.onPointerUp_);\n }\n ofs_() {\n if (this.grabbing_ === 'min') {\n return this.view.knobElements[0].getBoundingClientRect().width / 2;\n }\n if (this.grabbing_ === 'max') {\n return -this.view.knobElements[1].getBoundingClientRect().width / 2;\n }\n return 0;\n }\n valueFromData_(data) {\n if (!data.point) {\n return null;\n }\n const p = (data.point.x + this.ofs_()) / data.bounds.width;\n const min = this.sliderProps.get('min');\n const max = this.sliderProps.get('max');\n return mapRange(p, 0, 1, min, max);\n }\n onPointerDown_(ev) {\n if (!ev.data.point) {\n return;\n }\n const p = ev.data.point.x / ev.data.bounds.width;\n const v = this.value.rawValue;\n const min = this.sliderProps.get('min');\n const max = this.sliderProps.get('max');\n const pmin = mapRange(v.min, min, max, 0, 1);\n const pmax = mapRange(v.max, min, max, 0, 1);\n if (Math.abs(pmax - p) <= 0.025) {\n this.grabbing_ = 'max';\n }\n else if (Math.abs(pmin - p) <= 0.025) {\n this.grabbing_ = 'min';\n }\n else if (p >= pmin && p <= pmax) {\n this.grabbing_ = 'length';\n this.grabOffset_ = mapRange(p - pmin, 0, 1, 0, max - min);\n }\n else if (p < pmin) {\n this.grabbing_ = 'min';\n this.onPointerMove_(ev);\n }\n else if (p > pmax) {\n this.grabbing_ = 'max';\n this.onPointerMove_(ev);\n }\n }\n applyPointToValue_(data, opts) {\n const v = this.valueFromData_(data);\n if (v === null) {\n return;\n }\n const rmin = this.sliderProps.get('min');\n const rmax = this.sliderProps.get('max');\n if (this.grabbing_ === 'min') {\n this.value.setRawValue(new Interval(v, this.value.rawValue.max), opts);\n }\n else if (this.grabbing_ === 'max') {\n this.value.setRawValue(new Interval(this.value.rawValue.min, v), opts);\n }\n else if (this.grabbing_ === 'length') {\n const len = this.value.rawValue.length;\n let min = v - this.grabOffset_;\n let max = min + len;\n if (min < rmin) {\n min = rmin;\n max = rmin + len;\n }\n else if (max > rmax) {\n min = rmax - len;\n max = rmax;\n }\n this.value.setRawValue(new Interval(min, max), opts);\n }\n }\n onPointerMove_(ev) {\n this.applyPointToValue_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerUp_(ev) {\n this.applyPointToValue_(ev.data, {\n forceEmit: true,\n last: true,\n });\n this.grabbing_ = null;\n }\n}\n\nclass RangeSliderTextController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.sc_ = new RangeSliderController(doc, config);\n const axis = {\n constraint: config.constraint,\n textProps: config.textProps,\n };\n this.tc_ = new PointNdTextController(doc, {\n assembly: IntervalAssembly,\n axes: [axis, axis],\n parser: config.parser,\n value: this.value,\n viewProps: config.viewProps,\n });\n this.view = new RangeSliderTextView(doc, {\n sliderView: this.sc_.view,\n textView: this.tc_.view,\n });\n }\n get textController() {\n return this.tc_;\n }\n}\n\nfunction intervalFromUnknown(value) {\n return Interval.isObject(value)\n ? new Interval(value.min, value.max)\n : new Interval(0, 0);\n}\nfunction writeInterval(target, value) {\n target.writeProperty('max', value.max);\n target.writeProperty('min', value.min);\n}\n\nfunction createConstraint(params) {\n const constraints = [];\n const rc = createRangeConstraint(params);\n if (rc) {\n constraints.push(rc);\n }\n const sc = createStepConstraint(params);\n if (sc) {\n constraints.push(sc);\n }\n return new IntervalConstraint(new CompositeConstraint(constraints));\n}\nconst IntervalInputPlugin = createPlugin({\n id: 'input-interval',\n type: 'input',\n accept: (exValue, params) => {\n if (!Interval.isObject(exValue)) {\n return null;\n }\n const result = parseRecord(params, (p) => (Object.assign(Object.assign({}, createNumberTextInputParamsParser(p)), { readonly: p.optional.constant(false) })));\n return result\n ? {\n initialValue: new Interval(exValue.min, exValue.max),\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => intervalFromUnknown,\n constraint: (args) => createConstraint(args.params),\n equals: Interval.equals,\n writer: (_args) => writeInterval,\n },\n controller(args) {\n const v = args.value;\n const c = args.constraint;\n if (!(c instanceof IntervalConstraint)) {\n throw TpError.shouldNeverHappen();\n }\n const midValue = (v.rawValue.min + v.rawValue.max) / 2;\n const textProps = ValueMap.fromObject(createNumberTextPropsObject(args.params, midValue));\n const drc = c.edge && findConstraint(c.edge, DefiniteRangeConstraint);\n if (drc) {\n return new RangeSliderTextController(args.document, {\n constraint: c.edge,\n parser: parseNumber,\n sliderProps: new ValueMap({\n keyScale: textProps.value('keyScale'),\n max: drc.values.value('max'),\n min: drc.values.value('min'),\n }),\n textProps: textProps,\n value: v,\n viewProps: args.viewProps,\n });\n }\n const axis = {\n constraint: c.edge,\n textProps: textProps,\n };\n return new PointNdTextController(args.document, {\n assembly: IntervalAssembly,\n axes: [axis, axis],\n parser: parseNumber,\n value: v,\n viewProps: args.viewProps,\n });\n },\n});\n\nclass RadioCellApi {\n constructor(controller) {\n this.controller_ = controller;\n }\n get disabled() {\n return this.controller_.viewProps.get('disabled');\n }\n set disabled(disabled) {\n this.controller_.viewProps.set('disabled', disabled);\n }\n get title() {\n var _a;\n return (_a = this.controller_.props.get('title')) !== null && _a !== void 0 ? _a : '';\n }\n set title(title) {\n this.controller_.props.set('title', title);\n }\n}\n\nclass TpRadioGridChangeEvent extends TpChangeEvent {\n constructor(target, cell, index, value, last) {\n super(target, value, last);\n this.cell = cell;\n this.index = index;\n }\n}\n\nclass RadioGridApi extends BladeApi {\n constructor(controller) {\n super(controller);\n this.cellToApiMap_ = new Map();\n const gc = this.controller.valueController;\n gc.cellControllers.forEach((cc) => {\n const api = new RadioCellApi(cc);\n this.cellToApiMap_.set(cc, api);\n });\n }\n get value() {\n return this.controller.value;\n }\n cell(x, y) {\n const gc = this.controller.valueController;\n const cc = gc.cellControllers[y * gc.size[0] + x];\n return this.cellToApiMap_.get(cc);\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.controller.value.emitter.on(eventName, (ev) => {\n const gc = this.controller.valueController;\n const cc = gc.findCellByValue(ev.rawValue);\n if (!cc) {\n return;\n }\n const capi = this.cellToApiMap_.get(cc);\n if (!capi) {\n return;\n }\n const i = gc.cellControllers.indexOf(cc);\n bh(new TpRadioGridChangeEvent(this, capi, [i % gc.size[0], Math.floor(i / gc.size[0])], ev.rawValue));\n });\n }\n}\n\nconst className = ClassName('rad');\nclass RadioView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className());\n config.viewProps.bindClassModifiers(this.element);\n const labelElem = doc.createElement('label');\n labelElem.classList.add(className('l'));\n this.element.appendChild(labelElem);\n const inputElem = doc.createElement('input');\n inputElem.classList.add(className('i'));\n inputElem.name = config.name;\n inputElem.type = 'radio';\n config.viewProps.bindDisabled(inputElem);\n labelElem.appendChild(inputElem);\n this.inputElement = inputElem;\n const bodyElem = doc.createElement('div');\n bodyElem.classList.add(className('b'));\n labelElem.appendChild(bodyElem);\n const titleElem = doc.createElement('div');\n titleElem.classList.add(className('t'));\n bodyElem.appendChild(titleElem);\n bindValueMap(config.props, 'title', (title) => {\n titleElem.textContent = title;\n });\n }\n}\n\nclass RadioController {\n constructor(doc, config) {\n this.props = config.props;\n this.viewProps = config.viewProps;\n this.view = new RadioView(doc, {\n name: config.name,\n props: this.props,\n viewProps: this.viewProps,\n });\n }\n}\n\nclass RadioGridController {\n constructor(doc, config) {\n this.cellCs_ = [];\n this.cellValues_ = [];\n this.onCellInputChange_ = this.onCellInputChange_.bind(this);\n this.size = config.size;\n const [w, h] = this.size;\n for (let y = 0; y < h; y++) {\n for (let x = 0; x < w; x++) {\n const bc = new RadioController(doc, {\n name: config.groupName,\n props: ValueMap.fromObject(Object.assign({}, config.cellConfig(x, y))),\n viewProps: ViewProps.create(),\n });\n this.cellCs_.push(bc);\n this.cellValues_.push(config.cellConfig(x, y).value);\n }\n }\n this.value = config.value;\n bindValue(this.value, (value) => {\n const cc = this.findCellByValue(value);\n if (!cc) {\n return;\n }\n cc.view.inputElement.checked = true;\n });\n this.viewProps = ViewProps.create();\n this.view = new PlainView(doc, {\n viewProps: this.viewProps,\n viewName: 'radgrid',\n });\n this.view.element.style.gridTemplateColumns = `repeat(${w}, 1fr)`;\n this.cellCs_.forEach((bc) => {\n bc.view.inputElement.addEventListener('change', this.onCellInputChange_);\n this.view.element.appendChild(bc.view.element);\n });\n }\n get cellControllers() {\n return this.cellCs_;\n }\n findCellByValue(value) {\n const index = this.cellValues_.findIndex((v) => v === value);\n if (index < 0) {\n return null;\n }\n return this.cellCs_[index];\n }\n onCellInputChange_(ev) {\n const inputElem = ev.currentTarget;\n const index = this.cellCs_.findIndex((c) => c.view.inputElement === inputElem);\n if (index < 0) {\n return;\n }\n this.value.rawValue = this.cellValues_[index];\n }\n}\n\nconst RadioGridBladePlugin = (function () {\n return createPlugin({\n id: 'radiogrid',\n type: 'blade',\n accept(params) {\n const result = parseRecord(params, (p) => ({\n cells: p.required.function,\n groupName: p.required.string,\n size: p.required.array(p.required.number),\n value: p.required.raw,\n view: p.required.constant('radiogrid'),\n label: p.optional.string,\n }));\n return result ? { params: result } : null;\n },\n controller(args) {\n const value = createValue(args.params.value);\n return new LabeledValueBladeController(args.document, {\n blade: args.blade,\n props: ValueMap.fromObject({\n label: args.params.label,\n }),\n value: value,\n valueController: new RadioGridController(args.document, {\n groupName: args.params.groupName,\n cellConfig: args.params.cells,\n size: args.params.size,\n value: value,\n }),\n });\n },\n api(args) {\n if (!(args.controller instanceof LabeledValueBladeController)) {\n return null;\n }\n if (!(args.controller.valueController instanceof RadioGridController)) {\n return null;\n }\n return new RadioGridApi(args.controller);\n },\n });\n})();\n\nfunction createRadioGridInputPlugin(config) {\n return createPlugin({\n id: 'input-radiogrid',\n type: 'input',\n accept(value, params) {\n if (!config.isType(value)) {\n return null;\n }\n const result = parseRecord(params, (p) => ({\n cells: p.required.function,\n groupName: p.required.string,\n size: p.required.array(p.required.number),\n view: p.required.constant('radiogrid'),\n }));\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: config.binding,\n controller: (args) => {\n return new RadioGridController(args.document, {\n cellConfig: args.params.cells,\n groupName: args.params.groupName,\n size: args.params.size,\n value: args.value,\n });\n },\n });\n}\nconst RadioGruidNumberInputPlugin = createRadioGridInputPlugin({\n isType: (value) => {\n return typeof value === 'number';\n },\n binding: {\n reader: (_args) => numberFromUnknown,\n writer: (_args) => writePrimitive,\n },\n});\nconst RadioGruidStringInputPlugin = createRadioGridInputPlugin({\n isType: (value) => {\n return typeof value === 'string';\n },\n binding: {\n reader: (_args) => stringFromUnknown,\n writer: (_args) => writePrimitive,\n },\n});\nconst RadioGruidBooleanInputPlugin = createRadioGridInputPlugin({\n isType: (value) => {\n return typeof value === 'boolean';\n },\n binding: {\n reader: (_args) => boolFromUnknown,\n writer: (_args) => writePrimitive,\n },\n});\n\nconst id = 'essentials';\nconst css = '.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}';\nconst plugins = [\n ButtonGridBladePlugin,\n CubicBezierBladePlugin,\n FpsGraphBladePlugin,\n IntervalInputPlugin,\n RadioGridBladePlugin,\n RadioGruidBooleanInputPlugin,\n RadioGruidNumberInputPlugin,\n RadioGruidStringInputPlugin,\n];\n\nexport { ButtonCellApi, ButtonGridApi, ButtonGridController, CubicBezier, CubicBezierApi, CubicBezierAssembly, CubicBezierController, CubicBezierGraphController, CubicBezierGraphView, CubicBezierPickerController, CubicBezierPickerView, CubicBezierPreviewView, CubicBezierView, FpsGraphBladeApi, FpsGraphController, FpsView, Fpswatch, Interval, IntervalAssembly, IntervalConstraint, RadioCellApi, RadioController, RadioGridApi, RadioGridController, RadioView, RangeSliderController, RangeSliderTextController, RangeSliderTextView, RangeSliderView, TpRadioGridChangeEvent, css, id, plugins };\n","/*! Tweakpane 4.0.5 (c) 2016 cocopon, licensed under the MIT license. */\nfunction forceCast(v) {\n return v;\n}\nfunction isEmpty(value) {\n return value === null || value === undefined;\n}\nfunction isObject$1(value) {\n return value !== null && typeof value === 'object';\n}\nfunction isRecord(value) {\n return value !== null && typeof value === 'object';\n}\nfunction deepEqualsArray(a1, a2) {\n if (a1.length !== a2.length) {\n return false;\n }\n for (let i = 0; i < a1.length; i++) {\n if (a1[i] !== a2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction deepMerge(r1, r2) {\n const keys = Array.from(new Set([...Object.keys(r1), ...Object.keys(r2)]));\n return keys.reduce((result, key) => {\n const v1 = r1[key];\n const v2 = r2[key];\n return isRecord(v1) && isRecord(v2)\n ? Object.assign(Object.assign({}, result), { [key]: deepMerge(v1, v2) }) : Object.assign(Object.assign({}, result), { [key]: key in r2 ? v2 : v1 });\n }, {});\n}\n\nfunction isBinding(value) {\n if (!isObject$1(value)) {\n return false;\n }\n return 'target' in value;\n}\n\nconst CREATE_MESSAGE_MAP = {\n alreadydisposed: () => 'View has been already disposed',\n invalidparams: (context) => `Invalid parameters for '${context.name}'`,\n nomatchingcontroller: (context) => `No matching controller for '${context.key}'`,\n nomatchingview: (context) => `No matching view for '${JSON.stringify(context.params)}'`,\n notbindable: () => `Value is not bindable`,\n notcompatible: (context) => `Not compatible with plugin '${context.id}'`,\n propertynotfound: (context) => `Property '${context.name}' not found`,\n shouldneverhappen: () => 'This error should never happen',\n};\nclass TpError {\n static alreadyDisposed() {\n return new TpError({ type: 'alreadydisposed' });\n }\n static notBindable() {\n return new TpError({\n type: 'notbindable',\n });\n }\n static notCompatible(bundleId, id) {\n return new TpError({\n type: 'notcompatible',\n context: {\n id: `${bundleId}.${id}`,\n },\n });\n }\n static propertyNotFound(name) {\n return new TpError({\n type: 'propertynotfound',\n context: {\n name: name,\n },\n });\n }\n static shouldNeverHappen() {\n return new TpError({ type: 'shouldneverhappen' });\n }\n constructor(config) {\n var _a;\n this.message =\n (_a = CREATE_MESSAGE_MAP[config.type](forceCast(config.context))) !== null && _a !== void 0 ? _a : 'Unexpected error';\n this.name = this.constructor.name;\n this.stack = new Error(this.message).stack;\n this.type = config.type;\n }\n toString() {\n return this.message;\n }\n}\n\nclass BindingTarget {\n constructor(obj, key) {\n this.obj_ = obj;\n this.key = key;\n }\n static isBindable(obj) {\n if (obj === null) {\n return false;\n }\n if (typeof obj !== 'object' && typeof obj !== 'function') {\n return false;\n }\n return true;\n }\n read() {\n return this.obj_[this.key];\n }\n write(value) {\n this.obj_[this.key] = value;\n }\n writeProperty(name, value) {\n const valueObj = this.read();\n if (!BindingTarget.isBindable(valueObj)) {\n throw TpError.notBindable();\n }\n if (!(name in valueObj)) {\n throw TpError.propertyNotFound(name);\n }\n valueObj[name] = value;\n }\n}\n\nclass Emitter {\n constructor() {\n this.observers_ = {};\n }\n on(eventName, handler, opt_options) {\n var _a;\n let observers = this.observers_[eventName];\n if (!observers) {\n observers = this.observers_[eventName] = [];\n }\n observers.push({\n handler: handler,\n key: (_a = opt_options === null || opt_options === void 0 ? void 0 : opt_options.key) !== null && _a !== void 0 ? _a : handler,\n });\n return this;\n }\n off(eventName, key) {\n const observers = this.observers_[eventName];\n if (observers) {\n this.observers_[eventName] = observers.filter((observer) => {\n return observer.key !== key;\n });\n }\n return this;\n }\n emit(eventName, event) {\n const observers = this.observers_[eventName];\n if (!observers) {\n return;\n }\n observers.forEach((observer) => {\n observer.handler(event);\n });\n }\n}\n\nclass ComplexValue {\n constructor(initialValue, config) {\n var _a;\n this.constraint_ = config === null || config === void 0 ? void 0 : config.constraint;\n this.equals_ = (_a = config === null || config === void 0 ? void 0 : config.equals) !== null && _a !== void 0 ? _a : ((v1, v2) => v1 === v2);\n this.emitter = new Emitter();\n this.rawValue_ = initialValue;\n }\n get constraint() {\n return this.constraint_;\n }\n get rawValue() {\n return this.rawValue_;\n }\n set rawValue(rawValue) {\n this.setRawValue(rawValue, {\n forceEmit: false,\n last: true,\n });\n }\n setRawValue(rawValue, options) {\n const opts = options !== null && options !== void 0 ? options : {\n forceEmit: false,\n last: true,\n };\n const constrainedValue = this.constraint_\n ? this.constraint_.constrain(rawValue)\n : rawValue;\n const prevValue = this.rawValue_;\n const changed = !this.equals_(prevValue, constrainedValue);\n if (!changed && !opts.forceEmit) {\n return;\n }\n this.emitter.emit('beforechange', {\n sender: this,\n });\n this.rawValue_ = constrainedValue;\n this.emitter.emit('change', {\n options: opts,\n previousRawValue: prevValue,\n rawValue: constrainedValue,\n sender: this,\n });\n }\n}\n\nclass PrimitiveValue {\n constructor(initialValue) {\n this.emitter = new Emitter();\n this.value_ = initialValue;\n }\n get rawValue() {\n return this.value_;\n }\n set rawValue(value) {\n this.setRawValue(value, {\n forceEmit: false,\n last: true,\n });\n }\n setRawValue(value, options) {\n const opts = options !== null && options !== void 0 ? options : {\n forceEmit: false,\n last: true,\n };\n const prevValue = this.value_;\n if (prevValue === value && !opts.forceEmit) {\n return;\n }\n this.emitter.emit('beforechange', {\n sender: this,\n });\n this.value_ = value;\n this.emitter.emit('change', {\n options: opts,\n previousRawValue: prevValue,\n rawValue: this.value_,\n sender: this,\n });\n }\n}\n\nclass ReadonlyPrimitiveValue {\n constructor(value) {\n this.emitter = new Emitter();\n this.onValueBeforeChange_ = this.onValueBeforeChange_.bind(this);\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.value_ = value;\n this.value_.emitter.on('beforechange', this.onValueBeforeChange_);\n this.value_.emitter.on('change', this.onValueChange_);\n }\n get rawValue() {\n return this.value_.rawValue;\n }\n onValueBeforeChange_(ev) {\n this.emitter.emit('beforechange', Object.assign(Object.assign({}, ev), { sender: this }));\n }\n onValueChange_(ev) {\n this.emitter.emit('change', Object.assign(Object.assign({}, ev), { sender: this }));\n }\n}\n\nfunction createValue(initialValue, config) {\n const constraint = config === null || config === void 0 ? void 0 : config.constraint;\n const equals = config === null || config === void 0 ? void 0 : config.equals;\n if (!constraint && !equals) {\n return new PrimitiveValue(initialValue);\n }\n return new ComplexValue(initialValue, config);\n}\nfunction createReadonlyValue(value) {\n return [\n new ReadonlyPrimitiveValue(value),\n (rawValue, options) => {\n value.setRawValue(rawValue, options);\n },\n ];\n}\n\nclass ValueMap {\n constructor(valueMap) {\n this.emitter = new Emitter();\n this.valMap_ = valueMap;\n for (const key in this.valMap_) {\n const v = this.valMap_[key];\n v.emitter.on('change', () => {\n this.emitter.emit('change', {\n key: key,\n sender: this,\n });\n });\n }\n }\n static createCore(initialValue) {\n const keys = Object.keys(initialValue);\n return keys.reduce((o, key) => {\n return Object.assign(o, {\n [key]: createValue(initialValue[key]),\n });\n }, {});\n }\n static fromObject(initialValue) {\n const core = this.createCore(initialValue);\n return new ValueMap(core);\n }\n get(key) {\n return this.valMap_[key].rawValue;\n }\n set(key, value) {\n this.valMap_[key].rawValue = value;\n }\n value(key) {\n return this.valMap_[key];\n }\n}\n\nclass DefiniteRangeConstraint {\n constructor(config) {\n this.values = ValueMap.fromObject({\n max: config.max,\n min: config.min,\n });\n }\n constrain(value) {\n const max = this.values.get('max');\n const min = this.values.get('min');\n return Math.min(Math.max(value, min), max);\n }\n}\n\nclass RangeConstraint {\n constructor(config) {\n this.values = ValueMap.fromObject({\n max: config.max,\n min: config.min,\n });\n }\n constrain(value) {\n const max = this.values.get('max');\n const min = this.values.get('min');\n let result = value;\n if (!isEmpty(min)) {\n result = Math.max(result, min);\n }\n if (!isEmpty(max)) {\n result = Math.min(result, max);\n }\n return result;\n }\n}\n\nclass StepConstraint {\n constructor(step, origin = 0) {\n this.step = step;\n this.origin = origin;\n }\n constrain(value) {\n const o = this.origin % this.step;\n const r = Math.round((value - o) / this.step);\n return o + r * this.step;\n }\n}\n\nclass NumberLiteralNode {\n constructor(text) {\n this.text = text;\n }\n evaluate() {\n return Number(this.text);\n }\n toString() {\n return this.text;\n }\n}\nconst BINARY_OPERATION_MAP = {\n '**': (v1, v2) => Math.pow(v1, v2),\n '*': (v1, v2) => v1 * v2,\n '/': (v1, v2) => v1 / v2,\n '%': (v1, v2) => v1 % v2,\n '+': (v1, v2) => v1 + v2,\n '-': (v1, v2) => v1 - v2,\n '<<': (v1, v2) => v1 << v2,\n '>>': (v1, v2) => v1 >> v2,\n '>>>': (v1, v2) => v1 >>> v2,\n '&': (v1, v2) => v1 & v2,\n '^': (v1, v2) => v1 ^ v2,\n '|': (v1, v2) => v1 | v2,\n};\nclass BinaryOperationNode {\n constructor(operator, left, right) {\n this.left = left;\n this.operator = operator;\n this.right = right;\n }\n evaluate() {\n const op = BINARY_OPERATION_MAP[this.operator];\n if (!op) {\n throw new Error(`unexpected binary operator: '${this.operator}`);\n }\n return op(this.left.evaluate(), this.right.evaluate());\n }\n toString() {\n return [\n 'b(',\n this.left.toString(),\n this.operator,\n this.right.toString(),\n ')',\n ].join(' ');\n }\n}\nconst UNARY_OPERATION_MAP = {\n '+': (v) => v,\n '-': (v) => -v,\n '~': (v) => ~v,\n};\nclass UnaryOperationNode {\n constructor(operator, expr) {\n this.operator = operator;\n this.expression = expr;\n }\n evaluate() {\n const op = UNARY_OPERATION_MAP[this.operator];\n if (!op) {\n throw new Error(`unexpected unary operator: '${this.operator}`);\n }\n return op(this.expression.evaluate());\n }\n toString() {\n return ['u(', this.operator, this.expression.toString(), ')'].join(' ');\n }\n}\n\nfunction combineReader(parsers) {\n return (text, cursor) => {\n for (let i = 0; i < parsers.length; i++) {\n const result = parsers[i](text, cursor);\n if (result !== '') {\n return result;\n }\n }\n return '';\n };\n}\nfunction readWhitespace(text, cursor) {\n var _a;\n const m = text.substr(cursor).match(/^\\s+/);\n return (_a = (m && m[0])) !== null && _a !== void 0 ? _a : '';\n}\nfunction readNonZeroDigit(text, cursor) {\n const ch = text.substr(cursor, 1);\n return ch.match(/^[1-9]$/) ? ch : '';\n}\nfunction readDecimalDigits(text, cursor) {\n var _a;\n const m = text.substr(cursor).match(/^[0-9]+/);\n return (_a = (m && m[0])) !== null && _a !== void 0 ? _a : '';\n}\nfunction readSignedInteger(text, cursor) {\n const ds = readDecimalDigits(text, cursor);\n if (ds !== '') {\n return ds;\n }\n const sign = text.substr(cursor, 1);\n cursor += 1;\n if (sign !== '-' && sign !== '+') {\n return '';\n }\n const sds = readDecimalDigits(text, cursor);\n if (sds === '') {\n return '';\n }\n return sign + sds;\n}\nfunction readExponentPart(text, cursor) {\n const e = text.substr(cursor, 1);\n cursor += 1;\n if (e.toLowerCase() !== 'e') {\n return '';\n }\n const si = readSignedInteger(text, cursor);\n if (si === '') {\n return '';\n }\n return e + si;\n}\nfunction readDecimalIntegerLiteral(text, cursor) {\n const ch = text.substr(cursor, 1);\n if (ch === '0') {\n return ch;\n }\n const nzd = readNonZeroDigit(text, cursor);\n cursor += nzd.length;\n if (nzd === '') {\n return '';\n }\n return nzd + readDecimalDigits(text, cursor);\n}\nfunction readDecimalLiteral1(text, cursor) {\n const dil = readDecimalIntegerLiteral(text, cursor);\n cursor += dil.length;\n if (dil === '') {\n return '';\n }\n const dot = text.substr(cursor, 1);\n cursor += dot.length;\n if (dot !== '.') {\n return '';\n }\n const dds = readDecimalDigits(text, cursor);\n cursor += dds.length;\n return dil + dot + dds + readExponentPart(text, cursor);\n}\nfunction readDecimalLiteral2(text, cursor) {\n const dot = text.substr(cursor, 1);\n cursor += dot.length;\n if (dot !== '.') {\n return '';\n }\n const dds = readDecimalDigits(text, cursor);\n cursor += dds.length;\n if (dds === '') {\n return '';\n }\n return dot + dds + readExponentPart(text, cursor);\n}\nfunction readDecimalLiteral3(text, cursor) {\n const dil = readDecimalIntegerLiteral(text, cursor);\n cursor += dil.length;\n if (dil === '') {\n return '';\n }\n return dil + readExponentPart(text, cursor);\n}\nconst readDecimalLiteral = combineReader([\n readDecimalLiteral1,\n readDecimalLiteral2,\n readDecimalLiteral3,\n]);\nfunction parseBinaryDigits(text, cursor) {\n var _a;\n const m = text.substr(cursor).match(/^[01]+/);\n return (_a = (m && m[0])) !== null && _a !== void 0 ? _a : '';\n}\nfunction readBinaryIntegerLiteral(text, cursor) {\n const prefix = text.substr(cursor, 2);\n cursor += prefix.length;\n if (prefix.toLowerCase() !== '0b') {\n return '';\n }\n const bds = parseBinaryDigits(text, cursor);\n if (bds === '') {\n return '';\n }\n return prefix + bds;\n}\nfunction readOctalDigits(text, cursor) {\n var _a;\n const m = text.substr(cursor).match(/^[0-7]+/);\n return (_a = (m && m[0])) !== null && _a !== void 0 ? _a : '';\n}\nfunction readOctalIntegerLiteral(text, cursor) {\n const prefix = text.substr(cursor, 2);\n cursor += prefix.length;\n if (prefix.toLowerCase() !== '0o') {\n return '';\n }\n const ods = readOctalDigits(text, cursor);\n if (ods === '') {\n return '';\n }\n return prefix + ods;\n}\nfunction readHexDigits(text, cursor) {\n var _a;\n const m = text.substr(cursor).match(/^[0-9a-f]+/i);\n return (_a = (m && m[0])) !== null && _a !== void 0 ? _a : '';\n}\nfunction readHexIntegerLiteral(text, cursor) {\n const prefix = text.substr(cursor, 2);\n cursor += prefix.length;\n if (prefix.toLowerCase() !== '0x') {\n return '';\n }\n const hds = readHexDigits(text, cursor);\n if (hds === '') {\n return '';\n }\n return prefix + hds;\n}\nconst readNonDecimalIntegerLiteral = combineReader([\n readBinaryIntegerLiteral,\n readOctalIntegerLiteral,\n readHexIntegerLiteral,\n]);\nconst readNumericLiteral = combineReader([\n readNonDecimalIntegerLiteral,\n readDecimalLiteral,\n]);\n\nfunction parseLiteral(text, cursor) {\n const num = readNumericLiteral(text, cursor);\n cursor += num.length;\n if (num === '') {\n return null;\n }\n return {\n evaluable: new NumberLiteralNode(num),\n cursor: cursor,\n };\n}\nfunction parseParenthesizedExpression(text, cursor) {\n const op = text.substr(cursor, 1);\n cursor += op.length;\n if (op !== '(') {\n return null;\n }\n const expr = parseExpression(text, cursor);\n if (!expr) {\n return null;\n }\n cursor = expr.cursor;\n cursor += readWhitespace(text, cursor).length;\n const cl = text.substr(cursor, 1);\n cursor += cl.length;\n if (cl !== ')') {\n return null;\n }\n return {\n evaluable: expr.evaluable,\n cursor: cursor,\n };\n}\nfunction parsePrimaryExpression(text, cursor) {\n var _a;\n return ((_a = parseLiteral(text, cursor)) !== null && _a !== void 0 ? _a : parseParenthesizedExpression(text, cursor));\n}\nfunction parseUnaryExpression(text, cursor) {\n const expr = parsePrimaryExpression(text, cursor);\n if (expr) {\n return expr;\n }\n const op = text.substr(cursor, 1);\n cursor += op.length;\n if (op !== '+' && op !== '-' && op !== '~') {\n return null;\n }\n const num = parseUnaryExpression(text, cursor);\n if (!num) {\n return null;\n }\n cursor = num.cursor;\n return {\n cursor: cursor,\n evaluable: new UnaryOperationNode(op, num.evaluable),\n };\n}\nfunction readBinaryOperator(ops, text, cursor) {\n cursor += readWhitespace(text, cursor).length;\n const op = ops.filter((op) => text.startsWith(op, cursor))[0];\n if (!op) {\n return null;\n }\n cursor += op.length;\n cursor += readWhitespace(text, cursor).length;\n return {\n cursor: cursor,\n operator: op,\n };\n}\nfunction createBinaryOperationExpressionParser(exprParser, ops) {\n return (text, cursor) => {\n const firstExpr = exprParser(text, cursor);\n if (!firstExpr) {\n return null;\n }\n cursor = firstExpr.cursor;\n let expr = firstExpr.evaluable;\n for (;;) {\n const op = readBinaryOperator(ops, text, cursor);\n if (!op) {\n break;\n }\n cursor = op.cursor;\n const nextExpr = exprParser(text, cursor);\n if (!nextExpr) {\n return null;\n }\n cursor = nextExpr.cursor;\n expr = new BinaryOperationNode(op.operator, expr, nextExpr.evaluable);\n }\n return expr\n ? {\n cursor: cursor,\n evaluable: expr,\n }\n : null;\n };\n}\nconst parseBinaryOperationExpression = [\n ['**'],\n ['*', '/', '%'],\n ['+', '-'],\n ['<<', '>>>', '>>'],\n ['&'],\n ['^'],\n ['|'],\n].reduce((parser, ops) => {\n return createBinaryOperationExpressionParser(parser, ops);\n}, parseUnaryExpression);\nfunction parseExpression(text, cursor) {\n cursor += readWhitespace(text, cursor).length;\n return parseBinaryOperationExpression(text, cursor);\n}\nfunction parseEcmaNumberExpression(text) {\n const expr = parseExpression(text, 0);\n if (!expr) {\n return null;\n }\n const cursor = expr.cursor + readWhitespace(text, expr.cursor).length;\n if (cursor !== text.length) {\n return null;\n }\n return expr.evaluable;\n}\n\nfunction parseNumber(text) {\n var _a;\n const r = parseEcmaNumberExpression(text);\n return (_a = r === null || r === void 0 ? void 0 : r.evaluate()) !== null && _a !== void 0 ? _a : null;\n}\nfunction numberFromUnknown(value) {\n if (typeof value === 'number') {\n return value;\n }\n if (typeof value === 'string') {\n const pv = parseNumber(value);\n if (!isEmpty(pv)) {\n return pv;\n }\n }\n return 0;\n}\nfunction numberToString(value) {\n return String(value);\n}\nfunction createNumberFormatter(digits) {\n return (value) => {\n return value.toFixed(Math.max(Math.min(digits, 20), 0));\n };\n}\n\nfunction mapRange(value, start1, end1, start2, end2) {\n const p = (value - start1) / (end1 - start1);\n return start2 + p * (end2 - start2);\n}\nfunction getDecimalDigits(value) {\n const text = String(value.toFixed(10));\n const frac = text.split('.')[1];\n return frac.replace(/0+$/, '').length;\n}\nfunction constrainRange(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\nfunction loopRange(value, max) {\n return ((value % max) + max) % max;\n}\nfunction getSuitableDecimalDigits(params, rawValue) {\n return !isEmpty(params.step)\n ? getDecimalDigits(params.step)\n : Math.max(getDecimalDigits(rawValue), 2);\n}\nfunction getSuitableKeyScale(params) {\n var _a;\n return (_a = params.step) !== null && _a !== void 0 ? _a : 1;\n}\nfunction getSuitablePointerScale(params, rawValue) {\n var _a;\n const base = Math.abs((_a = params.step) !== null && _a !== void 0 ? _a : rawValue);\n return base === 0 ? 0.1 : Math.pow(10, Math.floor(Math.log10(base)) - 1);\n}\nfunction createStepConstraint(params, initialValue) {\n if (!isEmpty(params.step)) {\n return new StepConstraint(params.step, initialValue);\n }\n return null;\n}\nfunction createRangeConstraint(params) {\n if (!isEmpty(params.max) && !isEmpty(params.min)) {\n return new DefiniteRangeConstraint({\n max: params.max,\n min: params.min,\n });\n }\n if (!isEmpty(params.max) || !isEmpty(params.min)) {\n return new RangeConstraint({\n max: params.max,\n min: params.min,\n });\n }\n return null;\n}\nfunction createNumberTextPropsObject(params, initialValue) {\n var _a, _b, _c;\n return {\n formatter: (_a = params.format) !== null && _a !== void 0 ? _a : createNumberFormatter(getSuitableDecimalDigits(params, initialValue)),\n keyScale: (_b = params.keyScale) !== null && _b !== void 0 ? _b : getSuitableKeyScale(params),\n pointerScale: (_c = params.pointerScale) !== null && _c !== void 0 ? _c : getSuitablePointerScale(params, initialValue),\n };\n}\nfunction createNumberTextInputParamsParser(p) {\n return {\n format: p.optional.function,\n keyScale: p.optional.number,\n max: p.optional.number,\n min: p.optional.number,\n pointerScale: p.optional.number,\n step: p.optional.number,\n };\n}\n\nfunction createPointAxis(config) {\n return {\n constraint: config.constraint,\n textProps: ValueMap.fromObject(createNumberTextPropsObject(config.params, config.initialValue)),\n };\n}\n\nclass BladeApi {\n constructor(controller) {\n this.controller = controller;\n }\n get element() {\n return this.controller.view.element;\n }\n get disabled() {\n return this.controller.viewProps.get('disabled');\n }\n set disabled(disabled) {\n this.controller.viewProps.set('disabled', disabled);\n }\n get hidden() {\n return this.controller.viewProps.get('hidden');\n }\n set hidden(hidden) {\n this.controller.viewProps.set('hidden', hidden);\n }\n dispose() {\n this.controller.viewProps.set('disposed', true);\n }\n importState(state) {\n return this.controller.importState(state);\n }\n exportState() {\n return this.controller.exportState();\n }\n}\n\nclass TpEvent {\n constructor(target) {\n this.target = target;\n }\n}\nclass TpChangeEvent extends TpEvent {\n constructor(target, value, last) {\n super(target);\n this.value = value;\n this.last = last !== null && last !== void 0 ? last : true;\n }\n}\nclass TpFoldEvent extends TpEvent {\n constructor(target, expanded) {\n super(target);\n this.expanded = expanded;\n }\n}\nclass TpTabSelectEvent extends TpEvent {\n constructor(target, index) {\n super(target);\n this.index = index;\n }\n}\nclass TpMouseEvent extends TpEvent {\n constructor(target, nativeEvent) {\n super(target);\n this.native = nativeEvent;\n }\n}\n\nclass BindingApi extends BladeApi {\n constructor(controller) {\n super(controller);\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.emitter_ = new Emitter();\n this.controller.value.emitter.on('change', this.onValueChange_);\n }\n get label() {\n return this.controller.labelController.props.get('label');\n }\n set label(label) {\n this.controller.labelController.props.set('label', label);\n }\n get key() {\n return this.controller.value.binding.target.key;\n }\n get tag() {\n return this.controller.tag;\n }\n set tag(tag) {\n this.controller.tag = tag;\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev);\n }, {\n key: handler,\n });\n return this;\n }\n off(eventName, handler) {\n this.emitter_.off(eventName, handler);\n return this;\n }\n refresh() {\n this.controller.value.fetch();\n }\n onValueChange_(ev) {\n const value = this.controller.value;\n this.emitter_.emit('change', new TpChangeEvent(this, forceCast(value.binding.target.read()), ev.options.last));\n }\n}\n\nclass InputBindingValue {\n constructor(value, binding) {\n this.onValueBeforeChange_ = this.onValueBeforeChange_.bind(this);\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.binding = binding;\n this.value_ = value;\n this.value_.emitter.on('beforechange', this.onValueBeforeChange_);\n this.value_.emitter.on('change', this.onValueChange_);\n this.emitter = new Emitter();\n }\n get rawValue() {\n return this.value_.rawValue;\n }\n set rawValue(rawValue) {\n this.value_.rawValue = rawValue;\n }\n setRawValue(rawValue, options) {\n this.value_.setRawValue(rawValue, options);\n }\n fetch() {\n this.value_.rawValue = this.binding.read();\n }\n push() {\n this.binding.write(this.value_.rawValue);\n }\n onValueBeforeChange_(ev) {\n this.emitter.emit('beforechange', Object.assign(Object.assign({}, ev), { sender: this }));\n }\n onValueChange_(ev) {\n this.push();\n this.emitter.emit('change', Object.assign(Object.assign({}, ev), { sender: this }));\n }\n}\nfunction isInputBindingValue(v) {\n if (!('binding' in v)) {\n return false;\n }\n const b = v['binding'];\n return isBinding(b) && 'read' in b && 'write' in b;\n}\n\nfunction parseObject(value, keyToParserMap) {\n const keys = Object.keys(keyToParserMap);\n const result = keys.reduce((tmp, key) => {\n if (tmp === undefined) {\n return undefined;\n }\n const parser = keyToParserMap[key];\n const result = parser(value[key]);\n return result.succeeded\n ? Object.assign(Object.assign({}, tmp), { [key]: result.value }) : undefined;\n }, {});\n return forceCast(result);\n}\nfunction parseArray(value, parseItem) {\n return value.reduce((tmp, item) => {\n if (tmp === undefined) {\n return undefined;\n }\n const result = parseItem(item);\n if (!result.succeeded || result.value === undefined) {\n return undefined;\n }\n return [...tmp, result.value];\n }, []);\n}\nfunction isObject(value) {\n if (value === null) {\n return false;\n }\n return typeof value === 'object';\n}\nfunction createMicroParserBuilder(parse) {\n return (optional) => (v) => {\n if (!optional && v === undefined) {\n return {\n succeeded: false,\n value: undefined,\n };\n }\n if (optional && v === undefined) {\n return {\n succeeded: true,\n value: undefined,\n };\n }\n const result = parse(v);\n return result !== undefined\n ? {\n succeeded: true,\n value: result,\n }\n : {\n succeeded: false,\n value: undefined,\n };\n };\n}\nfunction createMicroParserBuilders(optional) {\n return {\n custom: (parse) => createMicroParserBuilder(parse)(optional),\n boolean: createMicroParserBuilder((v) => typeof v === 'boolean' ? v : undefined)(optional),\n number: createMicroParserBuilder((v) => typeof v === 'number' ? v : undefined)(optional),\n string: createMicroParserBuilder((v) => typeof v === 'string' ? v : undefined)(optional),\n function: createMicroParserBuilder((v) =>\n typeof v === 'function' ? v : undefined)(optional),\n constant: (value) => createMicroParserBuilder((v) => (v === value ? value : undefined))(optional),\n raw: createMicroParserBuilder((v) => v)(optional),\n object: (keyToParserMap) => createMicroParserBuilder((v) => {\n if (!isObject(v)) {\n return undefined;\n }\n return parseObject(v, keyToParserMap);\n })(optional),\n array: (itemParser) => createMicroParserBuilder((v) => {\n if (!Array.isArray(v)) {\n return undefined;\n }\n return parseArray(v, itemParser);\n })(optional),\n };\n}\nconst MicroParsers = {\n optional: createMicroParserBuilders(true),\n required: createMicroParserBuilders(false),\n};\nfunction parseRecord(value, keyToParserMap) {\n const map = keyToParserMap(MicroParsers);\n const result = MicroParsers.required.object(map)(value);\n return result.succeeded ? result.value : undefined;\n}\n\nfunction importBladeState(state, superImport, parser, callback) {\n if (superImport && !superImport(state)) {\n return false;\n }\n const result = parseRecord(state, parser);\n return result ? callback(result) : false;\n}\nfunction exportBladeState(superExport, thisState) {\n var _a;\n return deepMerge((_a = superExport === null || superExport === void 0 ? void 0 : superExport()) !== null && _a !== void 0 ? _a : {}, thisState);\n}\n\nfunction isValueBladeController(bc) {\n return 'value' in bc;\n}\n\nfunction isBindingValue(v) {\n if (!isObject$1(v) || !('binding' in v)) {\n return false;\n }\n const b = v.binding;\n return isBinding(b);\n}\n\nconst SVG_NS = 'http://www.w3.org/2000/svg';\nfunction forceReflow(element) {\n element.offsetHeight;\n}\nfunction disableTransitionTemporarily(element, callback) {\n const t = element.style.transition;\n element.style.transition = 'none';\n callback();\n element.style.transition = t;\n}\nfunction supportsTouch(doc) {\n return doc.ontouchstart !== undefined;\n}\nfunction getGlobalObject() {\n return globalThis;\n}\nfunction getWindowDocument() {\n const globalObj = forceCast(getGlobalObject());\n return globalObj.document;\n}\nfunction getCanvasContext(canvasElement) {\n const win = canvasElement.ownerDocument.defaultView;\n if (!win) {\n return null;\n }\n const isBrowser = 'document' in win;\n return isBrowser\n ? canvasElement.getContext('2d', {\n willReadFrequently: true,\n })\n : null;\n}\nconst ICON_ID_TO_INNER_HTML_MAP = {\n check: '<path d=\"M2 8l4 4l8 -8\"/>',\n dropdown: '<path d=\"M5 7h6l-3 3 z\"/>',\n p2dpad: '<path d=\"M8 4v8\"/><path d=\"M4 8h8\"/><circle cx=\"12\" cy=\"12\" r=\"1.2\"/>',\n};\nfunction createSvgIconElement(document, iconId) {\n const elem = document.createElementNS(SVG_NS, 'svg');\n elem.innerHTML = ICON_ID_TO_INNER_HTML_MAP[iconId];\n return elem;\n}\nfunction insertElementAt(parentElement, element, index) {\n parentElement.insertBefore(element, parentElement.children[index]);\n}\nfunction removeElement(element) {\n if (element.parentElement) {\n element.parentElement.removeChild(element);\n }\n}\nfunction removeChildElements(element) {\n while (element.children.length > 0) {\n element.removeChild(element.children[0]);\n }\n}\nfunction removeChildNodes(element) {\n while (element.childNodes.length > 0) {\n element.removeChild(element.childNodes[0]);\n }\n}\nfunction findNextTarget(ev) {\n if (ev.relatedTarget) {\n return forceCast(ev.relatedTarget);\n }\n if ('explicitOriginalTarget' in ev) {\n return ev.explicitOriginalTarget;\n }\n return null;\n}\n\nfunction bindValue(value, applyValue) {\n value.emitter.on('change', (ev) => {\n applyValue(ev.rawValue);\n });\n applyValue(value.rawValue);\n}\nfunction bindValueMap(valueMap, key, applyValue) {\n bindValue(valueMap.value(key), applyValue);\n}\n\nconst PREFIX = 'tp';\nfunction ClassName(viewName) {\n const fn = (opt_elementName, opt_modifier) => {\n return [\n PREFIX,\n '-',\n viewName,\n 'v',\n opt_elementName ? `_${opt_elementName}` : '',\n opt_modifier ? `-${opt_modifier}` : '',\n ].join('');\n };\n return fn;\n}\n\nconst cn$r = ClassName('lbl');\nfunction createLabelNode(doc, label) {\n const frag = doc.createDocumentFragment();\n const lineNodes = label.split('\\n').map((line) => {\n return doc.createTextNode(line);\n });\n lineNodes.forEach((lineNode, index) => {\n if (index > 0) {\n frag.appendChild(doc.createElement('br'));\n }\n frag.appendChild(lineNode);\n });\n return frag;\n}\nclass LabelView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(cn$r());\n config.viewProps.bindClassModifiers(this.element);\n const labelElem = doc.createElement('div');\n labelElem.classList.add(cn$r('l'));\n bindValueMap(config.props, 'label', (value) => {\n if (isEmpty(value)) {\n this.element.classList.add(cn$r(undefined, 'nol'));\n }\n else {\n this.element.classList.remove(cn$r(undefined, 'nol'));\n removeChildNodes(labelElem);\n labelElem.appendChild(createLabelNode(doc, value));\n }\n });\n this.element.appendChild(labelElem);\n this.labelElement = labelElem;\n const valueElem = doc.createElement('div');\n valueElem.classList.add(cn$r('v'));\n this.element.appendChild(valueElem);\n this.valueElement = valueElem;\n }\n}\n\nclass LabelController {\n constructor(doc, config) {\n this.props = config.props;\n this.valueController = config.valueController;\n this.viewProps = config.valueController.viewProps;\n this.view = new LabelView(doc, {\n props: config.props,\n viewProps: this.viewProps,\n });\n this.view.valueElement.appendChild(this.valueController.view.element);\n }\n importProps(state) {\n return importBladeState(state, null, (p) => ({\n label: p.optional.string,\n }), (result) => {\n this.props.set('label', result.label);\n return true;\n });\n }\n exportProps() {\n return exportBladeState(null, {\n label: this.props.get('label'),\n });\n }\n}\n\nfunction getAllBladePositions() {\n return ['veryfirst', 'first', 'last', 'verylast'];\n}\n\nconst cn$q = ClassName('');\nconst POS_TO_CLASS_NAME_MAP = {\n veryfirst: 'vfst',\n first: 'fst',\n last: 'lst',\n verylast: 'vlst',\n};\nclass BladeController {\n constructor(config) {\n this.parent_ = null;\n this.blade = config.blade;\n this.view = config.view;\n this.viewProps = config.viewProps;\n const elem = this.view.element;\n this.blade.value('positions').emitter.on('change', () => {\n getAllBladePositions().forEach((pos) => {\n elem.classList.remove(cn$q(undefined, POS_TO_CLASS_NAME_MAP[pos]));\n });\n this.blade.get('positions').forEach((pos) => {\n elem.classList.add(cn$q(undefined, POS_TO_CLASS_NAME_MAP[pos]));\n });\n });\n this.viewProps.handleDispose(() => {\n removeElement(elem);\n });\n }\n get parent() {\n return this.parent_;\n }\n set parent(parent) {\n this.parent_ = parent;\n this.viewProps.set('parent', this.parent_ ? this.parent_.viewProps : null);\n }\n importState(state) {\n return importBladeState(state, null, (p) => ({\n disabled: p.required.boolean,\n hidden: p.required.boolean,\n }), (result) => {\n this.viewProps.importState(result);\n return true;\n });\n }\n exportState() {\n return exportBladeState(null, Object.assign({}, this.viewProps.exportState()));\n }\n}\n\nclass LabeledValueBladeController extends BladeController {\n constructor(doc, config) {\n if (config.value !== config.valueController.value) {\n throw TpError.shouldNeverHappen();\n }\n const viewProps = config.valueController.viewProps;\n const lc = new LabelController(doc, {\n blade: config.blade,\n props: config.props,\n valueController: config.valueController,\n });\n super(Object.assign(Object.assign({}, config), { view: new LabelView(doc, {\n props: config.props,\n viewProps: viewProps,\n }), viewProps: viewProps }));\n this.labelController = lc;\n this.value = config.value;\n this.valueController = config.valueController;\n this.view.valueElement.appendChild(this.valueController.view.element);\n }\n importState(state) {\n return importBladeState(state, (s) => {\n var _a, _b, _c;\n return super.importState(s) &&\n this.labelController.importProps(s) &&\n ((_c = (_b = (_a = this.valueController).importProps) === null || _b === void 0 ? void 0 : _b.call(_a, state)) !== null && _c !== void 0 ? _c : true);\n }, (p) => ({\n value: p.optional.raw,\n }), (result) => {\n if (result.value) {\n this.value.rawValue = result.value;\n }\n return true;\n });\n }\n exportState() {\n var _a, _b, _c;\n return exportBladeState(() => super.exportState(), Object.assign(Object.assign({ value: this.value.rawValue }, this.labelController.exportProps()), ((_c = (_b = (_a = this.valueController).exportProps) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : {})));\n }\n}\n\nfunction excludeValue(state) {\n const result = Object.assign({}, state);\n delete result.value;\n return result;\n}\nclass BindingController extends LabeledValueBladeController {\n constructor(doc, config) {\n super(doc, config);\n this.tag = config.tag;\n }\n importState(state) {\n return importBladeState(state,\n (_s) => super.importState(excludeValue(state)), (p) => ({\n tag: p.optional.string,\n }), (result) => {\n this.tag = result.tag;\n return true;\n });\n }\n exportState() {\n return exportBladeState(() => excludeValue(super.exportState()), {\n binding: {\n key: this.value.binding.target.key,\n value: this.value.binding.target.read(),\n },\n tag: this.tag,\n });\n }\n}\nfunction isBindingController(bc) {\n return isValueBladeController(bc) && isBindingValue(bc.value);\n}\n\nclass InputBindingController extends BindingController {\n importState(state) {\n return importBladeState(state, (s) => super.importState(s), (p) => ({\n binding: p.required.object({\n value: p.required.raw,\n }),\n }), (result) => {\n this.value.binding.inject(result.binding.value);\n this.value.fetch();\n return true;\n });\n }\n}\nfunction isInputBindingController(bc) {\n return isValueBladeController(bc) && isInputBindingValue(bc.value);\n}\n\nfunction fillBuffer(buffer, bufferSize) {\n while (buffer.length < bufferSize) {\n buffer.push(undefined);\n }\n}\nfunction initializeBuffer(bufferSize) {\n const buffer = [];\n fillBuffer(buffer, bufferSize);\n return buffer;\n}\nfunction createTrimmedBuffer(buffer) {\n const index = buffer.indexOf(undefined);\n return forceCast(index < 0 ? buffer : buffer.slice(0, index));\n}\nfunction createPushedBuffer(buffer, newValue) {\n const newBuffer = [...createTrimmedBuffer(buffer), newValue];\n if (newBuffer.length > buffer.length) {\n newBuffer.splice(0, newBuffer.length - buffer.length);\n }\n else {\n fillBuffer(newBuffer, buffer.length);\n }\n return newBuffer;\n}\n\nclass MonitorBindingValue {\n constructor(config) {\n this.emitter = new Emitter();\n this.onTick_ = this.onTick_.bind(this);\n this.onValueBeforeChange_ = this.onValueBeforeChange_.bind(this);\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.binding = config.binding;\n this.value_ = createValue(initializeBuffer(config.bufferSize));\n this.value_.emitter.on('beforechange', this.onValueBeforeChange_);\n this.value_.emitter.on('change', this.onValueChange_);\n this.ticker = config.ticker;\n this.ticker.emitter.on('tick', this.onTick_);\n this.fetch();\n }\n get rawValue() {\n return this.value_.rawValue;\n }\n set rawValue(rawValue) {\n this.value_.rawValue = rawValue;\n }\n setRawValue(rawValue, options) {\n this.value_.setRawValue(rawValue, options);\n }\n fetch() {\n this.value_.rawValue = createPushedBuffer(this.value_.rawValue, this.binding.read());\n }\n onTick_() {\n this.fetch();\n }\n onValueBeforeChange_(ev) {\n this.emitter.emit('beforechange', Object.assign(Object.assign({}, ev), { sender: this }));\n }\n onValueChange_(ev) {\n this.emitter.emit('change', Object.assign(Object.assign({}, ev), { sender: this }));\n }\n}\nfunction isMonitorBindingValue(v) {\n if (!('binding' in v)) {\n return false;\n }\n const b = v['binding'];\n return isBinding(b) && 'read' in b && !('write' in b);\n}\n\nclass MonitorBindingController extends BindingController {\n exportState() {\n return exportBladeState(() => super.exportState(), {\n binding: {\n readonly: true,\n },\n });\n }\n}\nfunction isMonitorBindingController(bc) {\n return (isValueBladeController(bc) &&\n isMonitorBindingValue(bc.value));\n}\n\nclass ButtonApi extends BladeApi {\n get label() {\n return this.controller.labelController.props.get('label');\n }\n set label(label) {\n this.controller.labelController.props.set('label', label);\n }\n get title() {\n var _a;\n return (_a = this.controller.buttonController.props.get('title')) !== null && _a !== void 0 ? _a : '';\n }\n set title(title) {\n this.controller.buttonController.props.set('title', title);\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n const emitter = this.controller.buttonController.emitter;\n emitter.on(eventName, (ev) => {\n bh(new TpMouseEvent(this, ev.nativeEvent));\n });\n return this;\n }\n off(eventName, handler) {\n const emitter = this.controller.buttonController.emitter;\n emitter.off(eventName, handler);\n return this;\n }\n}\n\nfunction applyClass(elem, className, active) {\n if (active) {\n elem.classList.add(className);\n }\n else {\n elem.classList.remove(className);\n }\n}\nfunction valueToClassName(elem, className) {\n return (value) => {\n applyClass(elem, className, value);\n };\n}\nfunction bindValueToTextContent(value, elem) {\n bindValue(value, (text) => {\n elem.textContent = text !== null && text !== void 0 ? text : '';\n });\n}\n\nconst cn$p = ClassName('btn');\nclass ButtonView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(cn$p());\n config.viewProps.bindClassModifiers(this.element);\n const buttonElem = doc.createElement('button');\n buttonElem.classList.add(cn$p('b'));\n config.viewProps.bindDisabled(buttonElem);\n this.element.appendChild(buttonElem);\n this.buttonElement = buttonElem;\n const titleElem = doc.createElement('div');\n titleElem.classList.add(cn$p('t'));\n bindValueToTextContent(config.props.value('title'), titleElem);\n this.buttonElement.appendChild(titleElem);\n }\n}\n\nclass ButtonController {\n constructor(doc, config) {\n this.emitter = new Emitter();\n this.onClick_ = this.onClick_.bind(this);\n this.props = config.props;\n this.viewProps = config.viewProps;\n this.view = new ButtonView(doc, {\n props: this.props,\n viewProps: this.viewProps,\n });\n this.view.buttonElement.addEventListener('click', this.onClick_);\n }\n importProps(state) {\n return importBladeState(state, null, (p) => ({\n title: p.optional.string,\n }), (result) => {\n this.props.set('title', result.title);\n return true;\n });\n }\n exportProps() {\n return exportBladeState(null, {\n title: this.props.get('title'),\n });\n }\n onClick_(ev) {\n this.emitter.emit('click', {\n nativeEvent: ev,\n sender: this,\n });\n }\n}\n\nclass ButtonBladeController extends BladeController {\n constructor(doc, config) {\n const bc = new ButtonController(doc, {\n props: config.buttonProps,\n viewProps: config.viewProps,\n });\n const lc = new LabelController(doc, {\n blade: config.blade,\n props: config.labelProps,\n valueController: bc,\n });\n super({\n blade: config.blade,\n view: lc.view,\n viewProps: config.viewProps,\n });\n this.buttonController = bc;\n this.labelController = lc;\n }\n importState(state) {\n return importBladeState(state, (s) => super.importState(s) &&\n this.buttonController.importProps(s) &&\n this.labelController.importProps(s), () => ({}), () => true);\n }\n exportState() {\n return exportBladeState(() => super.exportState(), Object.assign(Object.assign({}, this.buttonController.exportProps()), this.labelController.exportProps()));\n }\n}\n\nclass Semver {\n constructor(text) {\n const [core, prerelease] = text.split('-');\n const coreComps = core.split('.');\n this.major = parseInt(coreComps[0], 10);\n this.minor = parseInt(coreComps[1], 10);\n this.patch = parseInt(coreComps[2], 10);\n this.prerelease = prerelease !== null && prerelease !== void 0 ? prerelease : null;\n }\n toString() {\n const core = [this.major, this.minor, this.patch].join('.');\n return this.prerelease !== null ? [core, this.prerelease].join('-') : core;\n }\n}\n\nconst VERSION$1 = new Semver('2.0.5');\n\nfunction createPlugin(plugin) {\n return Object.assign({ core: VERSION$1 }, plugin);\n}\n\nconst ButtonBladePlugin = createPlugin({\n id: 'button',\n type: 'blade',\n accept(params) {\n const result = parseRecord(params, (p) => ({\n title: p.required.string,\n view: p.required.constant('button'),\n label: p.optional.string,\n }));\n return result ? { params: result } : null;\n },\n controller(args) {\n return new ButtonBladeController(args.document, {\n blade: args.blade,\n buttonProps: ValueMap.fromObject({\n title: args.params.title,\n }),\n labelProps: ValueMap.fromObject({\n label: args.params.label,\n }),\n viewProps: args.viewProps,\n });\n },\n api(args) {\n if (args.controller instanceof ButtonBladeController) {\n return new ButtonApi(args.controller);\n }\n return null;\n },\n});\n\nfunction addButtonAsBlade(api, params) {\n return api.addBlade(Object.assign(Object.assign({}, params), { view: 'button' }));\n}\nfunction addFolderAsBlade(api, params) {\n return api.addBlade(Object.assign(Object.assign({}, params), { view: 'folder' }));\n}\nfunction addTabAsBlade(api, params) {\n return api.addBlade(Object.assign(Object.assign({}, params), { view: 'tab' }));\n}\n\nfunction isRefreshable(value) {\n if (!isObject$1(value)) {\n return false;\n }\n return 'refresh' in value && typeof value.refresh === 'function';\n}\n\nfunction createBindingTarget(obj, key) {\n if (!BindingTarget.isBindable(obj)) {\n throw TpError.notBindable();\n }\n return new BindingTarget(obj, key);\n}\nclass RackApi {\n constructor(controller, pool) {\n this.onRackValueChange_ = this.onRackValueChange_.bind(this);\n this.controller_ = controller;\n this.emitter_ = new Emitter();\n this.pool_ = pool;\n const rack = this.controller_.rack;\n rack.emitter.on('valuechange', this.onRackValueChange_);\n }\n get children() {\n return this.controller_.rack.children.map((bc) => this.pool_.createApi(bc));\n }\n addBinding(object, key, opt_params) {\n const params = opt_params !== null && opt_params !== void 0 ? opt_params : {};\n const doc = this.controller_.element.ownerDocument;\n const bc = this.pool_.createBinding(doc, createBindingTarget(object, key), params);\n const api = this.pool_.createBindingApi(bc);\n return this.add(api, params.index);\n }\n addFolder(params) {\n return addFolderAsBlade(this, params);\n }\n addButton(params) {\n return addButtonAsBlade(this, params);\n }\n addTab(params) {\n return addTabAsBlade(this, params);\n }\n add(api, opt_index) {\n const bc = api.controller;\n this.controller_.rack.add(bc, opt_index);\n return api;\n }\n remove(api) {\n this.controller_.rack.remove(api.controller);\n }\n addBlade(params) {\n const doc = this.controller_.element.ownerDocument;\n const bc = this.pool_.createBlade(doc, params);\n const api = this.pool_.createApi(bc);\n return this.add(api, params.index);\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev);\n }, {\n key: handler,\n });\n return this;\n }\n off(eventName, handler) {\n this.emitter_.off(eventName, handler);\n return this;\n }\n refresh() {\n this.children.forEach((c) => {\n if (isRefreshable(c)) {\n c.refresh();\n }\n });\n }\n onRackValueChange_(ev) {\n const bc = ev.bladeController;\n const api = this.pool_.createApi(bc);\n const binding = isBindingValue(bc.value) ? bc.value.binding : null;\n this.emitter_.emit('change', new TpChangeEvent(api, binding ? binding.target.read() : bc.value.rawValue, ev.options.last));\n }\n}\n\nclass ContainerBladeApi extends BladeApi {\n constructor(controller, pool) {\n super(controller);\n this.rackApi_ = new RackApi(controller.rackController, pool);\n }\n refresh() {\n this.rackApi_.refresh();\n }\n}\n\nclass ContainerBladeController extends BladeController {\n constructor(config) {\n super({\n blade: config.blade,\n view: config.view,\n viewProps: config.rackController.viewProps,\n });\n this.rackController = config.rackController;\n }\n importState(state) {\n return importBladeState(state, (s) => super.importState(s), (p) => ({\n children: p.required.array(p.required.raw),\n }), (result) => {\n return this.rackController.rack.children.every((c, index) => {\n return c.importState(result.children[index]);\n });\n });\n }\n exportState() {\n return exportBladeState(() => super.exportState(), {\n children: this.rackController.rack.children.map((c) => c.exportState()),\n });\n }\n}\nfunction isContainerBladeController(bc) {\n return 'rackController' in bc;\n}\n\nclass NestedOrderedSet {\n constructor(extract) {\n this.emitter = new Emitter();\n this.items_ = [];\n this.cache_ = new Set();\n this.onSubListAdd_ = this.onSubListAdd_.bind(this);\n this.onSubListRemove_ = this.onSubListRemove_.bind(this);\n this.extract_ = extract;\n }\n get items() {\n return this.items_;\n }\n allItems() {\n return Array.from(this.cache_);\n }\n find(callback) {\n for (const item of this.allItems()) {\n if (callback(item)) {\n return item;\n }\n }\n return null;\n }\n includes(item) {\n return this.cache_.has(item);\n }\n add(item, opt_index) {\n if (this.includes(item)) {\n throw TpError.shouldNeverHappen();\n }\n const index = opt_index !== undefined ? opt_index : this.items_.length;\n this.items_.splice(index, 0, item);\n this.cache_.add(item);\n const subList = this.extract_(item);\n if (subList) {\n subList.emitter.on('add', this.onSubListAdd_);\n subList.emitter.on('remove', this.onSubListRemove_);\n subList.allItems().forEach((i) => {\n this.cache_.add(i);\n });\n }\n this.emitter.emit('add', {\n index: index,\n item: item,\n root: this,\n target: this,\n });\n }\n remove(item) {\n const index = this.items_.indexOf(item);\n if (index < 0) {\n return;\n }\n this.items_.splice(index, 1);\n this.cache_.delete(item);\n const subList = this.extract_(item);\n if (subList) {\n subList.allItems().forEach((i) => {\n this.cache_.delete(i);\n });\n subList.emitter.off('add', this.onSubListAdd_);\n subList.emitter.off('remove', this.onSubListRemove_);\n }\n this.emitter.emit('remove', {\n index: index,\n item: item,\n root: this,\n target: this,\n });\n }\n onSubListAdd_(ev) {\n this.cache_.add(ev.item);\n this.emitter.emit('add', {\n index: ev.index,\n item: ev.item,\n root: this,\n target: ev.target,\n });\n }\n onSubListRemove_(ev) {\n this.cache_.delete(ev.item);\n this.emitter.emit('remove', {\n index: ev.index,\n item: ev.item,\n root: this,\n target: ev.target,\n });\n }\n}\n\nfunction findValueBladeController(bcs, v) {\n for (let i = 0; i < bcs.length; i++) {\n const bc = bcs[i];\n if (isValueBladeController(bc) && bc.value === v) {\n return bc;\n }\n }\n return null;\n}\nfunction findSubBladeControllerSet(bc) {\n return isContainerBladeController(bc)\n ? bc.rackController.rack['bcSet_']\n : null;\n}\nclass Rack {\n constructor(config) {\n var _a, _b;\n this.emitter = new Emitter();\n this.onBladePositionsChange_ = this.onBladePositionsChange_.bind(this);\n this.onSetAdd_ = this.onSetAdd_.bind(this);\n this.onSetRemove_ = this.onSetRemove_.bind(this);\n this.onChildDispose_ = this.onChildDispose_.bind(this);\n this.onChildPositionsChange_ = this.onChildPositionsChange_.bind(this);\n this.onChildValueChange_ = this.onChildValueChange_.bind(this);\n this.onChildViewPropsChange_ = this.onChildViewPropsChange_.bind(this);\n this.onRackLayout_ = this.onRackLayout_.bind(this);\n this.onRackValueChange_ = this.onRackValueChange_.bind(this);\n this.blade_ = (_a = config.blade) !== null && _a !== void 0 ? _a : null;\n (_b = this.blade_) === null || _b === void 0 ? void 0 : _b.value('positions').emitter.on('change', this.onBladePositionsChange_);\n this.viewProps = config.viewProps;\n this.bcSet_ = new NestedOrderedSet(findSubBladeControllerSet);\n this.bcSet_.emitter.on('add', this.onSetAdd_);\n this.bcSet_.emitter.on('remove', this.onSetRemove_);\n }\n get children() {\n return this.bcSet_.items;\n }\n add(bc, opt_index) {\n var _a;\n (_a = bc.parent) === null || _a === void 0 ? void 0 : _a.remove(bc);\n bc.parent = this;\n this.bcSet_.add(bc, opt_index);\n }\n remove(bc) {\n bc.parent = null;\n this.bcSet_.remove(bc);\n }\n find(finder) {\n return this.bcSet_.allItems().filter(finder);\n }\n onSetAdd_(ev) {\n this.updatePositions_();\n const root = ev.target === ev.root;\n this.emitter.emit('add', {\n bladeController: ev.item,\n index: ev.index,\n root: root,\n sender: this,\n });\n if (!root) {\n return;\n }\n const bc = ev.item;\n bc.viewProps.emitter.on('change', this.onChildViewPropsChange_);\n bc.blade\n .value('positions')\n .emitter.on('change', this.onChildPositionsChange_);\n bc.viewProps.handleDispose(this.onChildDispose_);\n if (isValueBladeController(bc)) {\n bc.value.emitter.on('change', this.onChildValueChange_);\n }\n else if (isContainerBladeController(bc)) {\n const rack = bc.rackController.rack;\n if (rack) {\n const emitter = rack.emitter;\n emitter.on('layout', this.onRackLayout_);\n emitter.on('valuechange', this.onRackValueChange_);\n }\n }\n }\n onSetRemove_(ev) {\n this.updatePositions_();\n const root = ev.target === ev.root;\n this.emitter.emit('remove', {\n bladeController: ev.item,\n root: root,\n sender: this,\n });\n if (!root) {\n return;\n }\n const bc = ev.item;\n if (isValueBladeController(bc)) {\n bc.value.emitter.off('change', this.onChildValueChange_);\n }\n else if (isContainerBladeController(bc)) {\n const rack = bc.rackController.rack;\n if (rack) {\n const emitter = rack.emitter;\n emitter.off('layout', this.onRackLayout_);\n emitter.off('valuechange', this.onRackValueChange_);\n }\n }\n }\n updatePositions_() {\n const visibleItems = this.bcSet_.items.filter((bc) => !bc.viewProps.get('hidden'));\n const firstVisibleItem = visibleItems[0];\n const lastVisibleItem = visibleItems[visibleItems.length - 1];\n this.bcSet_.items.forEach((bc) => {\n const ps = [];\n if (bc === firstVisibleItem) {\n ps.push('first');\n if (!this.blade_ ||\n this.blade_.get('positions').includes('veryfirst')) {\n ps.push('veryfirst');\n }\n }\n if (bc === lastVisibleItem) {\n ps.push('last');\n if (!this.blade_ || this.blade_.get('positions').includes('verylast')) {\n ps.push('verylast');\n }\n }\n bc.blade.set('positions', ps);\n });\n }\n onChildPositionsChange_() {\n this.updatePositions_();\n this.emitter.emit('layout', {\n sender: this,\n });\n }\n onChildViewPropsChange_(_ev) {\n this.updatePositions_();\n this.emitter.emit('layout', {\n sender: this,\n });\n }\n onChildDispose_() {\n const disposedUcs = this.bcSet_.items.filter((bc) => {\n return bc.viewProps.get('disposed');\n });\n disposedUcs.forEach((bc) => {\n this.bcSet_.remove(bc);\n });\n }\n onChildValueChange_(ev) {\n const bc = findValueBladeController(this.find(isValueBladeController), ev.sender);\n if (!bc) {\n throw TpError.alreadyDisposed();\n }\n this.emitter.emit('valuechange', {\n bladeController: bc,\n options: ev.options,\n sender: this,\n });\n }\n onRackLayout_(_) {\n this.updatePositions_();\n this.emitter.emit('layout', {\n sender: this,\n });\n }\n onRackValueChange_(ev) {\n this.emitter.emit('valuechange', {\n bladeController: ev.bladeController,\n options: ev.options,\n sender: this,\n });\n }\n onBladePositionsChange_() {\n this.updatePositions_();\n }\n}\n\nclass RackController {\n constructor(config) {\n this.onRackAdd_ = this.onRackAdd_.bind(this);\n this.onRackRemove_ = this.onRackRemove_.bind(this);\n this.element = config.element;\n this.viewProps = config.viewProps;\n const rack = new Rack({\n blade: config.root ? undefined : config.blade,\n viewProps: config.viewProps,\n });\n rack.emitter.on('add', this.onRackAdd_);\n rack.emitter.on('remove', this.onRackRemove_);\n this.rack = rack;\n this.viewProps.handleDispose(() => {\n for (let i = this.rack.children.length - 1; i >= 0; i--) {\n const bc = this.rack.children[i];\n bc.viewProps.set('disposed', true);\n }\n });\n }\n onRackAdd_(ev) {\n if (!ev.root) {\n return;\n }\n insertElementAt(this.element, ev.bladeController.view.element, ev.index);\n }\n onRackRemove_(ev) {\n if (!ev.root) {\n return;\n }\n removeElement(ev.bladeController.view.element);\n }\n}\n\nfunction createBlade() {\n return new ValueMap({\n positions: createValue([], {\n equals: deepEqualsArray,\n }),\n });\n}\n\nclass Foldable extends ValueMap {\n constructor(valueMap) {\n super(valueMap);\n }\n static create(expanded) {\n const coreObj = {\n completed: true,\n expanded: expanded,\n expandedHeight: null,\n shouldFixHeight: false,\n temporaryExpanded: null,\n };\n const core = ValueMap.createCore(coreObj);\n return new Foldable(core);\n }\n get styleExpanded() {\n var _a;\n return (_a = this.get('temporaryExpanded')) !== null && _a !== void 0 ? _a : this.get('expanded');\n }\n get styleHeight() {\n if (!this.styleExpanded) {\n return '0';\n }\n const exHeight = this.get('expandedHeight');\n if (this.get('shouldFixHeight') && !isEmpty(exHeight)) {\n return `${exHeight}px`;\n }\n return 'auto';\n }\n bindExpandedClass(elem, expandedClassName) {\n const onExpand = () => {\n const expanded = this.styleExpanded;\n if (expanded) {\n elem.classList.add(expandedClassName);\n }\n else {\n elem.classList.remove(expandedClassName);\n }\n };\n bindValueMap(this, 'expanded', onExpand);\n bindValueMap(this, 'temporaryExpanded', onExpand);\n }\n cleanUpTransition() {\n this.set('shouldFixHeight', false);\n this.set('expandedHeight', null);\n this.set('completed', true);\n }\n}\nfunction computeExpandedFolderHeight(folder, containerElement) {\n let height = 0;\n disableTransitionTemporarily(containerElement, () => {\n folder.set('expandedHeight', null);\n folder.set('temporaryExpanded', true);\n forceReflow(containerElement);\n height = containerElement.clientHeight;\n folder.set('temporaryExpanded', null);\n forceReflow(containerElement);\n });\n return height;\n}\nfunction applyHeight(foldable, elem) {\n elem.style.height = foldable.styleHeight;\n}\nfunction bindFoldable(foldable, elem) {\n foldable.value('expanded').emitter.on('beforechange', () => {\n foldable.set('completed', false);\n if (isEmpty(foldable.get('expandedHeight'))) {\n const h = computeExpandedFolderHeight(foldable, elem);\n if (h > 0) {\n foldable.set('expandedHeight', h);\n }\n }\n foldable.set('shouldFixHeight', true);\n forceReflow(elem);\n });\n foldable.emitter.on('change', () => {\n applyHeight(foldable, elem);\n });\n applyHeight(foldable, elem);\n elem.addEventListener('transitionend', (ev) => {\n if (ev.propertyName !== 'height') {\n return;\n }\n foldable.cleanUpTransition();\n });\n}\n\nclass FolderApi extends ContainerBladeApi {\n constructor(controller, pool) {\n super(controller, pool);\n this.emitter_ = new Emitter();\n this.controller.foldable\n .value('expanded')\n .emitter.on('change', (ev) => {\n this.emitter_.emit('fold', new TpFoldEvent(this, ev.sender.rawValue));\n });\n this.rackApi_.on('change', (ev) => {\n this.emitter_.emit('change', ev);\n });\n }\n get expanded() {\n return this.controller.foldable.get('expanded');\n }\n set expanded(expanded) {\n this.controller.foldable.set('expanded', expanded);\n }\n get title() {\n return this.controller.props.get('title');\n }\n set title(title) {\n this.controller.props.set('title', title);\n }\n get children() {\n return this.rackApi_.children;\n }\n addBinding(object, key, opt_params) {\n return this.rackApi_.addBinding(object, key, opt_params);\n }\n addFolder(params) {\n return this.rackApi_.addFolder(params);\n }\n addButton(params) {\n return this.rackApi_.addButton(params);\n }\n addTab(params) {\n return this.rackApi_.addTab(params);\n }\n add(api, opt_index) {\n return this.rackApi_.add(api, opt_index);\n }\n remove(api) {\n this.rackApi_.remove(api);\n }\n addBlade(params) {\n return this.rackApi_.addBlade(params);\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev);\n }, {\n key: handler,\n });\n return this;\n }\n off(eventName, handler) {\n this.emitter_.off(eventName, handler);\n return this;\n }\n}\n\nconst bladeContainerClassName = ClassName('cnt');\n\nclass FolderView {\n constructor(doc, config) {\n var _a;\n this.className_ = ClassName((_a = config.viewName) !== null && _a !== void 0 ? _a : 'fld');\n this.element = doc.createElement('div');\n this.element.classList.add(this.className_(), bladeContainerClassName());\n config.viewProps.bindClassModifiers(this.element);\n this.foldable_ = config.foldable;\n this.foldable_.bindExpandedClass(this.element, this.className_(undefined, 'expanded'));\n bindValueMap(this.foldable_, 'completed', valueToClassName(this.element, this.className_(undefined, 'cpl')));\n const buttonElem = doc.createElement('button');\n buttonElem.classList.add(this.className_('b'));\n bindValueMap(config.props, 'title', (title) => {\n if (isEmpty(title)) {\n this.element.classList.add(this.className_(undefined, 'not'));\n }\n else {\n this.element.classList.remove(this.className_(undefined, 'not'));\n }\n });\n config.viewProps.bindDisabled(buttonElem);\n this.element.appendChild(buttonElem);\n this.buttonElement = buttonElem;\n const indentElem = doc.createElement('div');\n indentElem.classList.add(this.className_('i'));\n this.element.appendChild(indentElem);\n const titleElem = doc.createElement('div');\n titleElem.classList.add(this.className_('t'));\n bindValueToTextContent(config.props.value('title'), titleElem);\n this.buttonElement.appendChild(titleElem);\n this.titleElement = titleElem;\n const markElem = doc.createElement('div');\n markElem.classList.add(this.className_('m'));\n this.buttonElement.appendChild(markElem);\n const containerElem = doc.createElement('div');\n containerElem.classList.add(this.className_('c'));\n this.element.appendChild(containerElem);\n this.containerElement = containerElem;\n }\n}\n\nclass FolderController extends ContainerBladeController {\n constructor(doc, config) {\n var _a;\n const foldable = Foldable.create((_a = config.expanded) !== null && _a !== void 0 ? _a : true);\n const view = new FolderView(doc, {\n foldable: foldable,\n props: config.props,\n viewName: config.root ? 'rot' : undefined,\n viewProps: config.viewProps,\n });\n super(Object.assign(Object.assign({}, config), { rackController: new RackController({\n blade: config.blade,\n element: view.containerElement,\n root: config.root,\n viewProps: config.viewProps,\n }), view: view }));\n this.onTitleClick_ = this.onTitleClick_.bind(this);\n this.props = config.props;\n this.foldable = foldable;\n bindFoldable(this.foldable, this.view.containerElement);\n this.rackController.rack.emitter.on('add', () => {\n this.foldable.cleanUpTransition();\n });\n this.rackController.rack.emitter.on('remove', () => {\n this.foldable.cleanUpTransition();\n });\n this.view.buttonElement.addEventListener('click', this.onTitleClick_);\n }\n get document() {\n return this.view.element.ownerDocument;\n }\n importState(state) {\n return importBladeState(state, (s) => super.importState(s), (p) => ({\n expanded: p.required.boolean,\n title: p.optional.string,\n }), (result) => {\n this.foldable.set('expanded', result.expanded);\n this.props.set('title', result.title);\n return true;\n });\n }\n exportState() {\n return exportBladeState(() => super.exportState(), {\n expanded: this.foldable.get('expanded'),\n title: this.props.get('title'),\n });\n }\n onTitleClick_() {\n this.foldable.set('expanded', !this.foldable.get('expanded'));\n }\n}\n\nconst FolderBladePlugin = createPlugin({\n id: 'folder',\n type: 'blade',\n accept(params) {\n const result = parseRecord(params, (p) => ({\n title: p.required.string,\n view: p.required.constant('folder'),\n expanded: p.optional.boolean,\n }));\n return result ? { params: result } : null;\n },\n controller(args) {\n return new FolderController(args.document, {\n blade: args.blade,\n expanded: args.params.expanded,\n props: ValueMap.fromObject({\n title: args.params.title,\n }),\n viewProps: args.viewProps,\n });\n },\n api(args) {\n if (!(args.controller instanceof FolderController)) {\n return null;\n }\n return new FolderApi(args.controller, args.pool);\n },\n});\n\nconst cn$o = ClassName('');\nfunction valueToModifier(elem, modifier) {\n return valueToClassName(elem, cn$o(undefined, modifier));\n}\nclass ViewProps extends ValueMap {\n constructor(valueMap) {\n var _a;\n super(valueMap);\n this.onDisabledChange_ = this.onDisabledChange_.bind(this);\n this.onParentChange_ = this.onParentChange_.bind(this);\n this.onParentGlobalDisabledChange_ =\n this.onParentGlobalDisabledChange_.bind(this);\n [this.globalDisabled_, this.setGlobalDisabled_] = createReadonlyValue(createValue(this.getGlobalDisabled_()));\n this.value('disabled').emitter.on('change', this.onDisabledChange_);\n this.value('parent').emitter.on('change', this.onParentChange_);\n (_a = this.get('parent')) === null || _a === void 0 ? void 0 : _a.globalDisabled.emitter.on('change', this.onParentGlobalDisabledChange_);\n }\n static create(opt_initialValue) {\n var _a, _b, _c;\n const initialValue = opt_initialValue !== null && opt_initialValue !== void 0 ? opt_initialValue : {};\n return new ViewProps(ValueMap.createCore({\n disabled: (_a = initialValue.disabled) !== null && _a !== void 0 ? _a : false,\n disposed: false,\n hidden: (_b = initialValue.hidden) !== null && _b !== void 0 ? _b : false,\n parent: (_c = initialValue.parent) !== null && _c !== void 0 ? _c : null,\n }));\n }\n get globalDisabled() {\n return this.globalDisabled_;\n }\n bindClassModifiers(elem) {\n bindValue(this.globalDisabled_, valueToModifier(elem, 'disabled'));\n bindValueMap(this, 'hidden', valueToModifier(elem, 'hidden'));\n }\n bindDisabled(target) {\n bindValue(this.globalDisabled_, (disabled) => {\n target.disabled = disabled;\n });\n }\n bindTabIndex(elem) {\n bindValue(this.globalDisabled_, (disabled) => {\n elem.tabIndex = disabled ? -1 : 0;\n });\n }\n handleDispose(callback) {\n this.value('disposed').emitter.on('change', (disposed) => {\n if (disposed) {\n callback();\n }\n });\n }\n importState(state) {\n this.set('disabled', state.disabled);\n this.set('hidden', state.hidden);\n }\n exportState() {\n return {\n disabled: this.get('disabled'),\n hidden: this.get('hidden'),\n };\n }\n getGlobalDisabled_() {\n const parent = this.get('parent');\n const parentDisabled = parent ? parent.globalDisabled.rawValue : false;\n return parentDisabled || this.get('disabled');\n }\n updateGlobalDisabled_() {\n this.setGlobalDisabled_(this.getGlobalDisabled_());\n }\n onDisabledChange_() {\n this.updateGlobalDisabled_();\n }\n onParentGlobalDisabledChange_() {\n this.updateGlobalDisabled_();\n }\n onParentChange_(ev) {\n var _a;\n const prevParent = ev.previousRawValue;\n prevParent === null || prevParent === void 0 ? void 0 : prevParent.globalDisabled.emitter.off('change', this.onParentGlobalDisabledChange_);\n (_a = this.get('parent')) === null || _a === void 0 ? void 0 : _a.globalDisabled.emitter.on('change', this.onParentGlobalDisabledChange_);\n this.updateGlobalDisabled_();\n }\n}\n\nconst cn$n = ClassName('tbp');\nclass TabPageView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(cn$n());\n config.viewProps.bindClassModifiers(this.element);\n const containerElem = doc.createElement('div');\n containerElem.classList.add(cn$n('c'));\n this.element.appendChild(containerElem);\n this.containerElement = containerElem;\n }\n}\n\nconst cn$m = ClassName('tbi');\nclass TabItemView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(cn$m());\n config.viewProps.bindClassModifiers(this.element);\n bindValueMap(config.props, 'selected', (selected) => {\n if (selected) {\n this.element.classList.add(cn$m(undefined, 'sel'));\n }\n else {\n this.element.classList.remove(cn$m(undefined, 'sel'));\n }\n });\n const buttonElem = doc.createElement('button');\n buttonElem.classList.add(cn$m('b'));\n config.viewProps.bindDisabled(buttonElem);\n this.element.appendChild(buttonElem);\n this.buttonElement = buttonElem;\n const titleElem = doc.createElement('div');\n titleElem.classList.add(cn$m('t'));\n bindValueToTextContent(config.props.value('title'), titleElem);\n this.buttonElement.appendChild(titleElem);\n this.titleElement = titleElem;\n }\n}\n\nclass TabItemController {\n constructor(doc, config) {\n this.emitter = new Emitter();\n this.onClick_ = this.onClick_.bind(this);\n this.props = config.props;\n this.viewProps = config.viewProps;\n this.view = new TabItemView(doc, {\n props: config.props,\n viewProps: config.viewProps,\n });\n this.view.buttonElement.addEventListener('click', this.onClick_);\n }\n onClick_() {\n this.emitter.emit('click', {\n sender: this,\n });\n }\n}\n\nclass TabPageController extends ContainerBladeController {\n constructor(doc, config) {\n const view = new TabPageView(doc, {\n viewProps: config.viewProps,\n });\n super(Object.assign(Object.assign({}, config), { rackController: new RackController({\n blade: config.blade,\n element: view.containerElement,\n viewProps: config.viewProps,\n }), view: view }));\n this.onItemClick_ = this.onItemClick_.bind(this);\n this.ic_ = new TabItemController(doc, {\n props: config.itemProps,\n viewProps: ViewProps.create(),\n });\n this.ic_.emitter.on('click', this.onItemClick_);\n this.props = config.props;\n bindValueMap(this.props, 'selected', (selected) => {\n this.itemController.props.set('selected', selected);\n this.viewProps.set('hidden', !selected);\n });\n }\n get itemController() {\n return this.ic_;\n }\n importState(state) {\n return importBladeState(state, (s) => super.importState(s), (p) => ({\n selected: p.required.boolean,\n title: p.required.string,\n }), (result) => {\n this.ic_.props.set('selected', result.selected);\n this.ic_.props.set('title', result.title);\n return true;\n });\n }\n exportState() {\n return exportBladeState(() => super.exportState(), {\n selected: this.ic_.props.get('selected'),\n title: this.ic_.props.get('title'),\n });\n }\n onItemClick_() {\n this.props.set('selected', true);\n }\n}\n\nclass TabApi extends ContainerBladeApi {\n constructor(controller, pool) {\n super(controller, pool);\n this.emitter_ = new Emitter();\n this.onSelect_ = this.onSelect_.bind(this);\n this.pool_ = pool;\n this.rackApi_.on('change', (ev) => {\n this.emitter_.emit('change', ev);\n });\n this.controller.tab.selectedIndex.emitter.on('change', this.onSelect_);\n }\n get pages() {\n return this.rackApi_.children;\n }\n addPage(params) {\n const doc = this.controller.view.element.ownerDocument;\n const pc = new TabPageController(doc, {\n blade: createBlade(),\n itemProps: ValueMap.fromObject({\n selected: false,\n title: params.title,\n }),\n props: ValueMap.fromObject({\n selected: false,\n }),\n viewProps: ViewProps.create(),\n });\n const papi = this.pool_.createApi(pc);\n return this.rackApi_.add(papi, params.index);\n }\n removePage(index) {\n this.rackApi_.remove(this.rackApi_.children[index]);\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev);\n }, {\n key: handler,\n });\n return this;\n }\n off(eventName, handler) {\n this.emitter_.off(eventName, handler);\n return this;\n }\n onSelect_(ev) {\n this.emitter_.emit('select', new TpTabSelectEvent(this, ev.rawValue));\n }\n}\n\nclass TabPageApi extends ContainerBladeApi {\n get title() {\n var _a;\n return (_a = this.controller.itemController.props.get('title')) !== null && _a !== void 0 ? _a : '';\n }\n set title(title) {\n this.controller.itemController.props.set('title', title);\n }\n get selected() {\n return this.controller.props.get('selected');\n }\n set selected(selected) {\n this.controller.props.set('selected', selected);\n }\n get children() {\n return this.rackApi_.children;\n }\n addButton(params) {\n return this.rackApi_.addButton(params);\n }\n addFolder(params) {\n return this.rackApi_.addFolder(params);\n }\n addTab(params) {\n return this.rackApi_.addTab(params);\n }\n add(api, opt_index) {\n this.rackApi_.add(api, opt_index);\n }\n remove(api) {\n this.rackApi_.remove(api);\n }\n addBinding(object, key, opt_params) {\n return this.rackApi_.addBinding(object, key, opt_params);\n }\n addBlade(params) {\n return this.rackApi_.addBlade(params);\n }\n}\n\nconst INDEX_NOT_SELECTED = -1;\nclass Tab {\n constructor() {\n this.onItemSelectedChange_ = this.onItemSelectedChange_.bind(this);\n this.empty = createValue(true);\n this.selectedIndex = createValue(INDEX_NOT_SELECTED);\n this.items_ = [];\n }\n add(item, opt_index) {\n const index = opt_index !== null && opt_index !== void 0 ? opt_index : this.items_.length;\n this.items_.splice(index, 0, item);\n item.emitter.on('change', this.onItemSelectedChange_);\n this.keepSelection_();\n }\n remove(item) {\n const index = this.items_.indexOf(item);\n if (index < 0) {\n return;\n }\n this.items_.splice(index, 1);\n item.emitter.off('change', this.onItemSelectedChange_);\n this.keepSelection_();\n }\n keepSelection_() {\n if (this.items_.length === 0) {\n this.selectedIndex.rawValue = INDEX_NOT_SELECTED;\n this.empty.rawValue = true;\n return;\n }\n const firstSelIndex = this.items_.findIndex((s) => s.rawValue);\n if (firstSelIndex < 0) {\n this.items_.forEach((s, i) => {\n s.rawValue = i === 0;\n });\n this.selectedIndex.rawValue = 0;\n }\n else {\n this.items_.forEach((s, i) => {\n s.rawValue = i === firstSelIndex;\n });\n this.selectedIndex.rawValue = firstSelIndex;\n }\n this.empty.rawValue = false;\n }\n onItemSelectedChange_(ev) {\n if (ev.rawValue) {\n const index = this.items_.findIndex((s) => s === ev.sender);\n this.items_.forEach((s, i) => {\n s.rawValue = i === index;\n });\n this.selectedIndex.rawValue = index;\n }\n else {\n this.keepSelection_();\n }\n }\n}\n\nconst cn$l = ClassName('tab');\nclass TabView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(cn$l(), bladeContainerClassName());\n config.viewProps.bindClassModifiers(this.element);\n bindValue(config.empty, valueToClassName(this.element, cn$l(undefined, 'nop')));\n const titleElem = doc.createElement('div');\n titleElem.classList.add(cn$l('t'));\n this.element.appendChild(titleElem);\n this.itemsElement = titleElem;\n const indentElem = doc.createElement('div');\n indentElem.classList.add(cn$l('i'));\n this.element.appendChild(indentElem);\n const contentsElem = doc.createElement('div');\n contentsElem.classList.add(cn$l('c'));\n this.element.appendChild(contentsElem);\n this.contentsElement = contentsElem;\n }\n}\n\nclass TabController extends ContainerBladeController {\n constructor(doc, config) {\n const tab = new Tab();\n const view = new TabView(doc, {\n empty: tab.empty,\n viewProps: config.viewProps,\n });\n super({\n blade: config.blade,\n rackController: new RackController({\n blade: config.blade,\n element: view.contentsElement,\n viewProps: config.viewProps,\n }),\n view: view,\n });\n this.onRackAdd_ = this.onRackAdd_.bind(this);\n this.onRackRemove_ = this.onRackRemove_.bind(this);\n const rack = this.rackController.rack;\n rack.emitter.on('add', this.onRackAdd_);\n rack.emitter.on('remove', this.onRackRemove_);\n this.tab = tab;\n }\n add(pc, opt_index) {\n this.rackController.rack.add(pc, opt_index);\n }\n remove(index) {\n this.rackController.rack.remove(this.rackController.rack.children[index]);\n }\n onRackAdd_(ev) {\n if (!ev.root) {\n return;\n }\n const pc = ev.bladeController;\n insertElementAt(this.view.itemsElement, pc.itemController.view.element, ev.index);\n pc.itemController.viewProps.set('parent', this.viewProps);\n this.tab.add(pc.props.value('selected'));\n }\n onRackRemove_(ev) {\n if (!ev.root) {\n return;\n }\n const pc = ev.bladeController;\n removeElement(pc.itemController.view.element);\n pc.itemController.viewProps.set('parent', null);\n this.tab.remove(pc.props.value('selected'));\n }\n}\n\nconst TabBladePlugin = createPlugin({\n id: 'tab',\n type: 'blade',\n accept(params) {\n const result = parseRecord(params, (p) => ({\n pages: p.required.array(p.required.object({ title: p.required.string })),\n view: p.required.constant('tab'),\n }));\n if (!result || result.pages.length === 0) {\n return null;\n }\n return { params: result };\n },\n controller(args) {\n const c = new TabController(args.document, {\n blade: args.blade,\n viewProps: args.viewProps,\n });\n args.params.pages.forEach((p) => {\n const pc = new TabPageController(args.document, {\n blade: createBlade(),\n itemProps: ValueMap.fromObject({\n selected: false,\n title: p.title,\n }),\n props: ValueMap.fromObject({\n selected: false,\n }),\n viewProps: ViewProps.create(),\n });\n c.add(pc);\n });\n return c;\n },\n api(args) {\n if (args.controller instanceof TabController) {\n return new TabApi(args.controller, args.pool);\n }\n if (args.controller instanceof TabPageController) {\n return new TabPageApi(args.controller, args.pool);\n }\n return null;\n },\n});\n\nfunction createBladeController(plugin, args) {\n const ac = plugin.accept(args.params);\n if (!ac) {\n return null;\n }\n const params = parseRecord(args.params, (p) => ({\n disabled: p.optional.boolean,\n hidden: p.optional.boolean,\n }));\n return plugin.controller({\n blade: createBlade(),\n document: args.document,\n params: forceCast(Object.assign(Object.assign({}, ac.params), { disabled: params === null || params === void 0 ? void 0 : params.disabled, hidden: params === null || params === void 0 ? void 0 : params.hidden })),\n viewProps: ViewProps.create({\n disabled: params === null || params === void 0 ? void 0 : params.disabled,\n hidden: params === null || params === void 0 ? void 0 : params.hidden,\n }),\n });\n}\n\nclass ListInputBindingApi extends BindingApi {\n get options() {\n return this.controller.valueController.props.get('options');\n }\n set options(options) {\n this.controller.valueController.props.set('options', options);\n }\n}\n\nclass ManualTicker {\n constructor() {\n this.disabled = false;\n this.emitter = new Emitter();\n }\n dispose() { }\n tick() {\n if (this.disabled) {\n return;\n }\n this.emitter.emit('tick', {\n sender: this,\n });\n }\n}\n\nclass IntervalTicker {\n constructor(doc, interval) {\n this.disabled_ = false;\n this.timerId_ = null;\n this.onTick_ = this.onTick_.bind(this);\n this.doc_ = doc;\n this.emitter = new Emitter();\n this.interval_ = interval;\n this.setTimer_();\n }\n get disabled() {\n return this.disabled_;\n }\n set disabled(inactive) {\n this.disabled_ = inactive;\n if (this.disabled_) {\n this.clearTimer_();\n }\n else {\n this.setTimer_();\n }\n }\n dispose() {\n this.clearTimer_();\n }\n clearTimer_() {\n if (this.timerId_ === null) {\n return;\n }\n const win = this.doc_.defaultView;\n if (win) {\n win.clearInterval(this.timerId_);\n }\n this.timerId_ = null;\n }\n setTimer_() {\n this.clearTimer_();\n if (this.interval_ <= 0) {\n return;\n }\n const win = this.doc_.defaultView;\n if (win) {\n this.timerId_ = win.setInterval(this.onTick_, this.interval_);\n }\n }\n onTick_() {\n if (this.disabled_) {\n return;\n }\n this.emitter.emit('tick', {\n sender: this,\n });\n }\n}\n\nclass CompositeConstraint {\n constructor(constraints) {\n this.constraints = constraints;\n }\n constrain(value) {\n return this.constraints.reduce((result, c) => {\n return c.constrain(result);\n }, value);\n }\n}\nfunction findConstraint(c, constraintClass) {\n if (c instanceof constraintClass) {\n return c;\n }\n if (c instanceof CompositeConstraint) {\n const result = c.constraints.reduce((tmpResult, sc) => {\n if (tmpResult) {\n return tmpResult;\n }\n return sc instanceof constraintClass ? sc : null;\n }, null);\n if (result) {\n return result;\n }\n }\n return null;\n}\n\nclass ListConstraint {\n constructor(options) {\n this.values = ValueMap.fromObject({\n options: options,\n });\n }\n constrain(value) {\n const opts = this.values.get('options');\n if (opts.length === 0) {\n return value;\n }\n const matched = opts.filter((item) => {\n return item.value === value;\n }).length > 0;\n return matched ? value : opts[0].value;\n }\n}\n\nfunction parseListOptions(value) {\n var _a;\n const p = MicroParsers;\n if (Array.isArray(value)) {\n return (_a = parseRecord({ items: value }, (p) => ({\n items: p.required.array(p.required.object({\n text: p.required.string,\n value: p.required.raw,\n })),\n }))) === null || _a === void 0 ? void 0 : _a.items;\n }\n if (typeof value === 'object') {\n return p.required.raw(value)\n .value;\n }\n return undefined;\n}\nfunction normalizeListOptions(options) {\n if (Array.isArray(options)) {\n return options;\n }\n const items = [];\n Object.keys(options).forEach((text) => {\n items.push({ text: text, value: options[text] });\n });\n return items;\n}\nfunction createListConstraint(options) {\n return !isEmpty(options)\n ? new ListConstraint(normalizeListOptions(forceCast(options)))\n : null;\n}\n\nconst cn$k = ClassName('lst');\nclass ListView {\n constructor(doc, config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.props_ = config.props;\n this.element = doc.createElement('div');\n this.element.classList.add(cn$k());\n config.viewProps.bindClassModifiers(this.element);\n const selectElem = doc.createElement('select');\n selectElem.classList.add(cn$k('s'));\n config.viewProps.bindDisabled(selectElem);\n this.element.appendChild(selectElem);\n this.selectElement = selectElem;\n const markElem = doc.createElement('div');\n markElem.classList.add(cn$k('m'));\n markElem.appendChild(createSvgIconElement(doc, 'dropdown'));\n this.element.appendChild(markElem);\n config.value.emitter.on('change', this.onValueChange_);\n this.value_ = config.value;\n bindValueMap(this.props_, 'options', (opts) => {\n removeChildElements(this.selectElement);\n opts.forEach((item) => {\n const optionElem = doc.createElement('option');\n optionElem.textContent = item.text;\n this.selectElement.appendChild(optionElem);\n });\n this.update_();\n });\n }\n update_() {\n const values = this.props_.get('options').map((o) => o.value);\n this.selectElement.selectedIndex = values.indexOf(this.value_.rawValue);\n }\n onValueChange_() {\n this.update_();\n }\n}\n\nclass ListController {\n constructor(doc, config) {\n this.onSelectChange_ = this.onSelectChange_.bind(this);\n this.props = config.props;\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new ListView(doc, {\n props: this.props,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view.selectElement.addEventListener('change', this.onSelectChange_);\n }\n onSelectChange_(e) {\n const selectElem = forceCast(e.currentTarget);\n this.value.rawValue =\n this.props.get('options')[selectElem.selectedIndex].value;\n }\n importProps(state) {\n return importBladeState(state, null, (p) => ({\n options: p.required.custom(parseListOptions),\n }), (result) => {\n this.props.set('options', normalizeListOptions(result.options));\n return true;\n });\n }\n exportProps() {\n return exportBladeState(null, {\n options: this.props.get('options'),\n });\n }\n}\n\nconst cn$j = ClassName('pop');\nclass PopupView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(cn$j());\n config.viewProps.bindClassModifiers(this.element);\n bindValue(config.shows, valueToClassName(this.element, cn$j(undefined, 'v')));\n }\n}\n\nclass PopupController {\n constructor(doc, config) {\n this.shows = createValue(false);\n this.viewProps = config.viewProps;\n this.view = new PopupView(doc, {\n shows: this.shows,\n viewProps: this.viewProps,\n });\n }\n}\n\nconst cn$i = ClassName('txt');\nclass TextView {\n constructor(doc, config) {\n this.onChange_ = this.onChange_.bind(this);\n this.element = doc.createElement('div');\n this.element.classList.add(cn$i());\n config.viewProps.bindClassModifiers(this.element);\n this.props_ = config.props;\n this.props_.emitter.on('change', this.onChange_);\n const inputElem = doc.createElement('input');\n inputElem.classList.add(cn$i('i'));\n inputElem.type = 'text';\n config.viewProps.bindDisabled(inputElem);\n this.element.appendChild(inputElem);\n this.inputElement = inputElem;\n config.value.emitter.on('change', this.onChange_);\n this.value_ = config.value;\n this.refresh();\n }\n refresh() {\n const formatter = this.props_.get('formatter');\n this.inputElement.value = formatter(this.value_.rawValue);\n }\n onChange_() {\n this.refresh();\n }\n}\n\nclass TextController {\n constructor(doc, config) {\n this.onInputChange_ = this.onInputChange_.bind(this);\n this.parser_ = config.parser;\n this.props = config.props;\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new TextView(doc, {\n props: config.props,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view.inputElement.addEventListener('change', this.onInputChange_);\n }\n onInputChange_(e) {\n const inputElem = forceCast(e.currentTarget);\n const value = inputElem.value;\n const parsedValue = this.parser_(value);\n if (!isEmpty(parsedValue)) {\n this.value.rawValue = parsedValue;\n }\n this.view.refresh();\n }\n}\n\nfunction boolToString(value) {\n return String(value);\n}\nfunction boolFromUnknown(value) {\n if (value === 'false') {\n return false;\n }\n return !!value;\n}\nfunction BooleanFormatter(value) {\n return boolToString(value);\n}\n\nfunction composeParsers(parsers) {\n return (text) => {\n return parsers.reduce((result, parser) => {\n if (result !== null) {\n return result;\n }\n return parser(text);\n }, null);\n };\n}\n\nconst innerFormatter = createNumberFormatter(0);\nfunction formatPercentage(value) {\n return innerFormatter(value) + '%';\n}\n\nfunction stringFromUnknown(value) {\n return String(value);\n}\nfunction formatString(value) {\n return value;\n}\n\nfunction connectValues({ primary, secondary, forward, backward, }) {\n let changing = false;\n function preventFeedback(callback) {\n if (changing) {\n return;\n }\n changing = true;\n callback();\n changing = false;\n }\n primary.emitter.on('change', (ev) => {\n preventFeedback(() => {\n secondary.setRawValue(forward(primary.rawValue, secondary.rawValue), ev.options);\n });\n });\n secondary.emitter.on('change', (ev) => {\n preventFeedback(() => {\n primary.setRawValue(backward(primary.rawValue, secondary.rawValue), ev.options);\n });\n preventFeedback(() => {\n secondary.setRawValue(forward(primary.rawValue, secondary.rawValue), ev.options);\n });\n });\n preventFeedback(() => {\n secondary.setRawValue(forward(primary.rawValue, secondary.rawValue), {\n forceEmit: false,\n last: true,\n });\n });\n}\n\nfunction getStepForKey(keyScale, keys) {\n const step = keyScale * (keys.altKey ? 0.1 : 1) * (keys.shiftKey ? 10 : 1);\n if (keys.upKey) {\n return +step;\n }\n else if (keys.downKey) {\n return -step;\n }\n return 0;\n}\nfunction getVerticalStepKeys(ev) {\n return {\n altKey: ev.altKey,\n downKey: ev.key === 'ArrowDown',\n shiftKey: ev.shiftKey,\n upKey: ev.key === 'ArrowUp',\n };\n}\nfunction getHorizontalStepKeys(ev) {\n return {\n altKey: ev.altKey,\n downKey: ev.key === 'ArrowLeft',\n shiftKey: ev.shiftKey,\n upKey: ev.key === 'ArrowRight',\n };\n}\nfunction isVerticalArrowKey(key) {\n return key === 'ArrowUp' || key === 'ArrowDown';\n}\nfunction isArrowKey(key) {\n return isVerticalArrowKey(key) || key === 'ArrowLeft' || key === 'ArrowRight';\n}\n\nfunction computeOffset$1(ev, elem) {\n var _a, _b;\n const win = elem.ownerDocument.defaultView;\n const rect = elem.getBoundingClientRect();\n return {\n x: ev.pageX - (((_a = (win && win.scrollX)) !== null && _a !== void 0 ? _a : 0) + rect.left),\n y: ev.pageY - (((_b = (win && win.scrollY)) !== null && _b !== void 0 ? _b : 0) + rect.top),\n };\n}\nclass PointerHandler {\n constructor(element) {\n this.lastTouch_ = null;\n this.onDocumentMouseMove_ = this.onDocumentMouseMove_.bind(this);\n this.onDocumentMouseUp_ = this.onDocumentMouseUp_.bind(this);\n this.onMouseDown_ = this.onMouseDown_.bind(this);\n this.onTouchEnd_ = this.onTouchEnd_.bind(this);\n this.onTouchMove_ = this.onTouchMove_.bind(this);\n this.onTouchStart_ = this.onTouchStart_.bind(this);\n this.elem_ = element;\n this.emitter = new Emitter();\n element.addEventListener('touchstart', this.onTouchStart_, {\n passive: false,\n });\n element.addEventListener('touchmove', this.onTouchMove_, {\n passive: true,\n });\n element.addEventListener('touchend', this.onTouchEnd_);\n element.addEventListener('mousedown', this.onMouseDown_);\n }\n computePosition_(offset) {\n const rect = this.elem_.getBoundingClientRect();\n return {\n bounds: {\n width: rect.width,\n height: rect.height,\n },\n point: offset\n ? {\n x: offset.x,\n y: offset.y,\n }\n : null,\n };\n }\n onMouseDown_(ev) {\n var _a;\n ev.preventDefault();\n (_a = ev.currentTarget) === null || _a === void 0 ? void 0 : _a.focus();\n const doc = this.elem_.ownerDocument;\n doc.addEventListener('mousemove', this.onDocumentMouseMove_);\n doc.addEventListener('mouseup', this.onDocumentMouseUp_);\n this.emitter.emit('down', {\n altKey: ev.altKey,\n data: this.computePosition_(computeOffset$1(ev, this.elem_)),\n sender: this,\n shiftKey: ev.shiftKey,\n });\n }\n onDocumentMouseMove_(ev) {\n this.emitter.emit('move', {\n altKey: ev.altKey,\n data: this.computePosition_(computeOffset$1(ev, this.elem_)),\n sender: this,\n shiftKey: ev.shiftKey,\n });\n }\n onDocumentMouseUp_(ev) {\n const doc = this.elem_.ownerDocument;\n doc.removeEventListener('mousemove', this.onDocumentMouseMove_);\n doc.removeEventListener('mouseup', this.onDocumentMouseUp_);\n this.emitter.emit('up', {\n altKey: ev.altKey,\n data: this.computePosition_(computeOffset$1(ev, this.elem_)),\n sender: this,\n shiftKey: ev.shiftKey,\n });\n }\n onTouchStart_(ev) {\n ev.preventDefault();\n const touch = ev.targetTouches.item(0);\n const rect = this.elem_.getBoundingClientRect();\n this.emitter.emit('down', {\n altKey: ev.altKey,\n data: this.computePosition_(touch\n ? {\n x: touch.clientX - rect.left,\n y: touch.clientY - rect.top,\n }\n : undefined),\n sender: this,\n shiftKey: ev.shiftKey,\n });\n this.lastTouch_ = touch;\n }\n onTouchMove_(ev) {\n const touch = ev.targetTouches.item(0);\n const rect = this.elem_.getBoundingClientRect();\n this.emitter.emit('move', {\n altKey: ev.altKey,\n data: this.computePosition_(touch\n ? {\n x: touch.clientX - rect.left,\n y: touch.clientY - rect.top,\n }\n : undefined),\n sender: this,\n shiftKey: ev.shiftKey,\n });\n this.lastTouch_ = touch;\n }\n onTouchEnd_(ev) {\n var _a;\n const touch = (_a = ev.targetTouches.item(0)) !== null && _a !== void 0 ? _a : this.lastTouch_;\n const rect = this.elem_.getBoundingClientRect();\n this.emitter.emit('up', {\n altKey: ev.altKey,\n data: this.computePosition_(touch\n ? {\n x: touch.clientX - rect.left,\n y: touch.clientY - rect.top,\n }\n : undefined),\n sender: this,\n shiftKey: ev.shiftKey,\n });\n }\n}\n\nconst cn$h = ClassName('txt');\nclass NumberTextView {\n constructor(doc, config) {\n this.onChange_ = this.onChange_.bind(this);\n this.props_ = config.props;\n this.props_.emitter.on('change', this.onChange_);\n this.element = doc.createElement('div');\n this.element.classList.add(cn$h(), cn$h(undefined, 'num'));\n if (config.arrayPosition) {\n this.element.classList.add(cn$h(undefined, config.arrayPosition));\n }\n config.viewProps.bindClassModifiers(this.element);\n const inputElem = doc.createElement('input');\n inputElem.classList.add(cn$h('i'));\n inputElem.type = 'text';\n config.viewProps.bindDisabled(inputElem);\n this.element.appendChild(inputElem);\n this.inputElement = inputElem;\n this.onDraggingChange_ = this.onDraggingChange_.bind(this);\n this.dragging_ = config.dragging;\n this.dragging_.emitter.on('change', this.onDraggingChange_);\n this.element.classList.add(cn$h());\n this.inputElement.classList.add(cn$h('i'));\n const knobElem = doc.createElement('div');\n knobElem.classList.add(cn$h('k'));\n this.element.appendChild(knobElem);\n this.knobElement = knobElem;\n const guideElem = doc.createElementNS(SVG_NS, 'svg');\n guideElem.classList.add(cn$h('g'));\n this.knobElement.appendChild(guideElem);\n const bodyElem = doc.createElementNS(SVG_NS, 'path');\n bodyElem.classList.add(cn$h('gb'));\n guideElem.appendChild(bodyElem);\n this.guideBodyElem_ = bodyElem;\n const headElem = doc.createElementNS(SVG_NS, 'path');\n headElem.classList.add(cn$h('gh'));\n guideElem.appendChild(headElem);\n this.guideHeadElem_ = headElem;\n const tooltipElem = doc.createElement('div');\n tooltipElem.classList.add(ClassName('tt')());\n this.knobElement.appendChild(tooltipElem);\n this.tooltipElem_ = tooltipElem;\n config.value.emitter.on('change', this.onChange_);\n this.value = config.value;\n this.refresh();\n }\n onDraggingChange_(ev) {\n if (ev.rawValue === null) {\n this.element.classList.remove(cn$h(undefined, 'drg'));\n return;\n }\n this.element.classList.add(cn$h(undefined, 'drg'));\n const x = ev.rawValue / this.props_.get('pointerScale');\n const aox = x + (x > 0 ? -1 : x < 0 ? +1 : 0);\n const adx = constrainRange(-aox, -4, +4);\n this.guideHeadElem_.setAttributeNS(null, 'd', [`M ${aox + adx},0 L${aox},4 L${aox + adx},8`, `M ${x},-1 L${x},9`].join(' '));\n this.guideBodyElem_.setAttributeNS(null, 'd', `M 0,4 L${x},4`);\n const formatter = this.props_.get('formatter');\n this.tooltipElem_.textContent = formatter(this.value.rawValue);\n this.tooltipElem_.style.left = `${x}px`;\n }\n refresh() {\n const formatter = this.props_.get('formatter');\n this.inputElement.value = formatter(this.value.rawValue);\n }\n onChange_() {\n this.refresh();\n }\n}\n\nclass NumberTextController {\n constructor(doc, config) {\n var _a;\n this.originRawValue_ = 0;\n this.onInputChange_ = this.onInputChange_.bind(this);\n this.onInputKeyDown_ = this.onInputKeyDown_.bind(this);\n this.onInputKeyUp_ = this.onInputKeyUp_.bind(this);\n this.onPointerDown_ = this.onPointerDown_.bind(this);\n this.onPointerMove_ = this.onPointerMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.parser_ = config.parser;\n this.props = config.props;\n this.sliderProps_ = (_a = config.sliderProps) !== null && _a !== void 0 ? _a : null;\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.dragging_ = createValue(null);\n this.view = new NumberTextView(doc, {\n arrayPosition: config.arrayPosition,\n dragging: this.dragging_,\n props: this.props,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view.inputElement.addEventListener('change', this.onInputChange_);\n this.view.inputElement.addEventListener('keydown', this.onInputKeyDown_);\n this.view.inputElement.addEventListener('keyup', this.onInputKeyUp_);\n const ph = new PointerHandler(this.view.knobElement);\n ph.emitter.on('down', this.onPointerDown_);\n ph.emitter.on('move', this.onPointerMove_);\n ph.emitter.on('up', this.onPointerUp_);\n }\n constrainValue_(value) {\n var _a, _b;\n const min = (_a = this.sliderProps_) === null || _a === void 0 ? void 0 : _a.get('min');\n const max = (_b = this.sliderProps_) === null || _b === void 0 ? void 0 : _b.get('max');\n let v = value;\n if (min !== undefined) {\n v = Math.max(v, min);\n }\n if (max !== undefined) {\n v = Math.min(v, max);\n }\n return v;\n }\n onInputChange_(e) {\n const inputElem = forceCast(e.currentTarget);\n const value = inputElem.value;\n const parsedValue = this.parser_(value);\n if (!isEmpty(parsedValue)) {\n this.value.rawValue = this.constrainValue_(parsedValue);\n }\n this.view.refresh();\n }\n onInputKeyDown_(ev) {\n const step = getStepForKey(this.props.get('keyScale'), getVerticalStepKeys(ev));\n if (step === 0) {\n return;\n }\n this.value.setRawValue(this.constrainValue_(this.value.rawValue + step), {\n forceEmit: false,\n last: false,\n });\n }\n onInputKeyUp_(ev) {\n const step = getStepForKey(this.props.get('keyScale'), getVerticalStepKeys(ev));\n if (step === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n onPointerDown_() {\n this.originRawValue_ = this.value.rawValue;\n this.dragging_.rawValue = 0;\n }\n computeDraggingValue_(data) {\n if (!data.point) {\n return null;\n }\n const dx = data.point.x - data.bounds.width / 2;\n return this.constrainValue_(this.originRawValue_ + dx * this.props.get('pointerScale'));\n }\n onPointerMove_(ev) {\n const v = this.computeDraggingValue_(ev.data);\n if (v === null) {\n return;\n }\n this.value.setRawValue(v, {\n forceEmit: false,\n last: false,\n });\n this.dragging_.rawValue = this.value.rawValue - this.originRawValue_;\n }\n onPointerUp_(ev) {\n const v = this.computeDraggingValue_(ev.data);\n if (v === null) {\n return;\n }\n this.value.setRawValue(v, {\n forceEmit: true,\n last: true,\n });\n this.dragging_.rawValue = null;\n }\n}\n\nconst cn$g = ClassName('sld');\nclass SliderView {\n constructor(doc, config) {\n this.onChange_ = this.onChange_.bind(this);\n this.props_ = config.props;\n this.props_.emitter.on('change', this.onChange_);\n this.element = doc.createElement('div');\n this.element.classList.add(cn$g());\n config.viewProps.bindClassModifiers(this.element);\n const trackElem = doc.createElement('div');\n trackElem.classList.add(cn$g('t'));\n config.viewProps.bindTabIndex(trackElem);\n this.element.appendChild(trackElem);\n this.trackElement = trackElem;\n const knobElem = doc.createElement('div');\n knobElem.classList.add(cn$g('k'));\n this.trackElement.appendChild(knobElem);\n this.knobElement = knobElem;\n config.value.emitter.on('change', this.onChange_);\n this.value = config.value;\n this.update_();\n }\n update_() {\n const p = constrainRange(mapRange(this.value.rawValue, this.props_.get('min'), this.props_.get('max'), 0, 100), 0, 100);\n this.knobElement.style.width = `${p}%`;\n }\n onChange_() {\n this.update_();\n }\n}\n\nclass SliderController {\n constructor(doc, config) {\n this.onKeyDown_ = this.onKeyDown_.bind(this);\n this.onKeyUp_ = this.onKeyUp_.bind(this);\n this.onPointerDownOrMove_ = this.onPointerDownOrMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.props = config.props;\n this.view = new SliderView(doc, {\n props: this.props,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.ptHandler_ = new PointerHandler(this.view.trackElement);\n this.ptHandler_.emitter.on('down', this.onPointerDownOrMove_);\n this.ptHandler_.emitter.on('move', this.onPointerDownOrMove_);\n this.ptHandler_.emitter.on('up', this.onPointerUp_);\n this.view.trackElement.addEventListener('keydown', this.onKeyDown_);\n this.view.trackElement.addEventListener('keyup', this.onKeyUp_);\n }\n handlePointerEvent_(d, opts) {\n if (!d.point) {\n return;\n }\n this.value.setRawValue(mapRange(constrainRange(d.point.x, 0, d.bounds.width), 0, d.bounds.width, this.props.get('min'), this.props.get('max')), opts);\n }\n onPointerDownOrMove_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerUp_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: true,\n last: true,\n });\n }\n onKeyDown_(ev) {\n const step = getStepForKey(this.props.get('keyScale'), getHorizontalStepKeys(ev));\n if (step === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue + step, {\n forceEmit: false,\n last: false,\n });\n }\n onKeyUp_(ev) {\n const step = getStepForKey(this.props.get('keyScale'), getHorizontalStepKeys(ev));\n if (step === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n}\n\nconst cn$f = ClassName('sldtxt');\nclass SliderTextView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(cn$f());\n const sliderElem = doc.createElement('div');\n sliderElem.classList.add(cn$f('s'));\n this.sliderView_ = config.sliderView;\n sliderElem.appendChild(this.sliderView_.element);\n this.element.appendChild(sliderElem);\n const textElem = doc.createElement('div');\n textElem.classList.add(cn$f('t'));\n this.textView_ = config.textView;\n textElem.appendChild(this.textView_.element);\n this.element.appendChild(textElem);\n }\n}\n\nclass SliderTextController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.sliderC_ = new SliderController(doc, {\n props: config.sliderProps,\n value: config.value,\n viewProps: this.viewProps,\n });\n this.textC_ = new NumberTextController(doc, {\n parser: config.parser,\n props: config.textProps,\n sliderProps: config.sliderProps,\n value: config.value,\n viewProps: config.viewProps,\n });\n this.view = new SliderTextView(doc, {\n sliderView: this.sliderC_.view,\n textView: this.textC_.view,\n });\n }\n get sliderController() {\n return this.sliderC_;\n }\n get textController() {\n return this.textC_;\n }\n importProps(state) {\n return importBladeState(state, null, (p) => ({\n max: p.required.number,\n min: p.required.number,\n }), (result) => {\n const sliderProps = this.sliderC_.props;\n sliderProps.set('max', result.max);\n sliderProps.set('min', result.min);\n return true;\n });\n }\n exportProps() {\n const sliderProps = this.sliderC_.props;\n return exportBladeState(null, {\n max: sliderProps.get('max'),\n min: sliderProps.get('min'),\n });\n }\n}\nfunction createSliderTextProps(config) {\n return {\n sliderProps: new ValueMap({\n keyScale: config.keyScale,\n max: config.max,\n min: config.min,\n }),\n textProps: new ValueMap({\n formatter: createValue(config.formatter),\n keyScale: config.keyScale,\n pointerScale: createValue(config.pointerScale),\n }),\n };\n}\n\nconst CSS_VAR_MAP = {\n containerUnitSize: 'cnt-usz',\n};\nfunction getCssVar(key) {\n return `--${CSS_VAR_MAP[key]}`;\n}\n\nfunction createPointDimensionParser(p) {\n return createNumberTextInputParamsParser(p);\n}\nfunction parsePointDimensionParams(value) {\n if (!isRecord(value)) {\n return undefined;\n }\n return parseRecord(value, createPointDimensionParser);\n}\nfunction createDimensionConstraint(params, initialValue) {\n if (!params) {\n return undefined;\n }\n const constraints = [];\n const cs = createStepConstraint(params, initialValue);\n if (cs) {\n constraints.push(cs);\n }\n const rs = createRangeConstraint(params);\n if (rs) {\n constraints.push(rs);\n }\n return new CompositeConstraint(constraints);\n}\n\nfunction isCompatible(ver) {\n if (!ver) {\n return false;\n }\n return ver.major === VERSION$1.major;\n}\n\nfunction parsePickerLayout(value) {\n if (value === 'inline' || value === 'popup') {\n return value;\n }\n return undefined;\n}\n\nfunction writePrimitive(target, value) {\n target.write(value);\n}\n\nconst cn$e = ClassName('ckb');\nclass CheckboxView {\n constructor(doc, config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.element = doc.createElement('div');\n this.element.classList.add(cn$e());\n config.viewProps.bindClassModifiers(this.element);\n const labelElem = doc.createElement('label');\n labelElem.classList.add(cn$e('l'));\n this.element.appendChild(labelElem);\n this.labelElement = labelElem;\n const inputElem = doc.createElement('input');\n inputElem.classList.add(cn$e('i'));\n inputElem.type = 'checkbox';\n this.labelElement.appendChild(inputElem);\n this.inputElement = inputElem;\n config.viewProps.bindDisabled(this.inputElement);\n const wrapperElem = doc.createElement('div');\n wrapperElem.classList.add(cn$e('w'));\n this.labelElement.appendChild(wrapperElem);\n const markElem = createSvgIconElement(doc, 'check');\n wrapperElem.appendChild(markElem);\n config.value.emitter.on('change', this.onValueChange_);\n this.value = config.value;\n this.update_();\n }\n update_() {\n this.inputElement.checked = this.value.rawValue;\n }\n onValueChange_() {\n this.update_();\n }\n}\n\nclass CheckboxController {\n constructor(doc, config) {\n this.onInputChange_ = this.onInputChange_.bind(this);\n this.onLabelMouseDown_ = this.onLabelMouseDown_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new CheckboxView(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view.inputElement.addEventListener('change', this.onInputChange_);\n this.view.labelElement.addEventListener('mousedown', this.onLabelMouseDown_);\n }\n onInputChange_(ev) {\n const inputElem = forceCast(ev.currentTarget);\n this.value.rawValue = inputElem.checked;\n ev.preventDefault();\n ev.stopPropagation();\n }\n onLabelMouseDown_(ev) {\n ev.preventDefault();\n }\n}\n\nfunction createConstraint$6(params) {\n const constraints = [];\n const lc = createListConstraint(params.options);\n if (lc) {\n constraints.push(lc);\n }\n return new CompositeConstraint(constraints);\n}\nconst BooleanInputPlugin = createPlugin({\n id: 'input-bool',\n type: 'input',\n accept: (value, params) => {\n if (typeof value !== 'boolean') {\n return null;\n }\n const result = parseRecord(params, (p) => ({\n options: p.optional.custom(parseListOptions),\n readonly: p.optional.constant(false),\n }));\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => boolFromUnknown,\n constraint: (args) => createConstraint$6(args.params),\n writer: (_args) => writePrimitive,\n },\n controller: (args) => {\n const doc = args.document;\n const value = args.value;\n const c = args.constraint;\n const lc = c && findConstraint(c, ListConstraint);\n if (lc) {\n return new ListController(doc, {\n props: new ValueMap({\n options: lc.values.value('options'),\n }),\n value: value,\n viewProps: args.viewProps,\n });\n }\n return new CheckboxController(doc, {\n value: value,\n viewProps: args.viewProps,\n });\n },\n api(args) {\n if (typeof args.controller.value.rawValue !== 'boolean') {\n return null;\n }\n if (args.controller.valueController instanceof ListController) {\n return new ListInputBindingApi(args.controller);\n }\n return null;\n },\n});\n\nconst cn$d = ClassName('col');\nclass ColorView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(cn$d());\n config.foldable.bindExpandedClass(this.element, cn$d(undefined, 'expanded'));\n bindValueMap(config.foldable, 'completed', valueToClassName(this.element, cn$d(undefined, 'cpl')));\n const headElem = doc.createElement('div');\n headElem.classList.add(cn$d('h'));\n this.element.appendChild(headElem);\n const swatchElem = doc.createElement('div');\n swatchElem.classList.add(cn$d('s'));\n headElem.appendChild(swatchElem);\n this.swatchElement = swatchElem;\n const textElem = doc.createElement('div');\n textElem.classList.add(cn$d('t'));\n headElem.appendChild(textElem);\n this.textElement = textElem;\n if (config.pickerLayout === 'inline') {\n const pickerElem = doc.createElement('div');\n pickerElem.classList.add(cn$d('p'));\n this.element.appendChild(pickerElem);\n this.pickerElement = pickerElem;\n }\n else {\n this.pickerElement = null;\n }\n }\n}\n\nfunction rgbToHslInt(r, g, b) {\n const rp = constrainRange(r / 255, 0, 1);\n const gp = constrainRange(g / 255, 0, 1);\n const bp = constrainRange(b / 255, 0, 1);\n const cmax = Math.max(rp, gp, bp);\n const cmin = Math.min(rp, gp, bp);\n const c = cmax - cmin;\n let h = 0;\n let s = 0;\n const l = (cmin + cmax) / 2;\n if (c !== 0) {\n s = c / (1 - Math.abs(cmax + cmin - 1));\n if (rp === cmax) {\n h = (gp - bp) / c;\n }\n else if (gp === cmax) {\n h = 2 + (bp - rp) / c;\n }\n else {\n h = 4 + (rp - gp) / c;\n }\n h = h / 6 + (h < 0 ? 1 : 0);\n }\n return [h * 360, s * 100, l * 100];\n}\nfunction hslToRgbInt(h, s, l) {\n const hp = ((h % 360) + 360) % 360;\n const sp = constrainRange(s / 100, 0, 1);\n const lp = constrainRange(l / 100, 0, 1);\n const c = (1 - Math.abs(2 * lp - 1)) * sp;\n const x = c * (1 - Math.abs(((hp / 60) % 2) - 1));\n const m = lp - c / 2;\n let rp, gp, bp;\n if (hp >= 0 && hp < 60) {\n [rp, gp, bp] = [c, x, 0];\n }\n else if (hp >= 60 && hp < 120) {\n [rp, gp, bp] = [x, c, 0];\n }\n else if (hp >= 120 && hp < 180) {\n [rp, gp, bp] = [0, c, x];\n }\n else if (hp >= 180 && hp < 240) {\n [rp, gp, bp] = [0, x, c];\n }\n else if (hp >= 240 && hp < 300) {\n [rp, gp, bp] = [x, 0, c];\n }\n else {\n [rp, gp, bp] = [c, 0, x];\n }\n return [(rp + m) * 255, (gp + m) * 255, (bp + m) * 255];\n}\nfunction rgbToHsvInt(r, g, b) {\n const rp = constrainRange(r / 255, 0, 1);\n const gp = constrainRange(g / 255, 0, 1);\n const bp = constrainRange(b / 255, 0, 1);\n const cmax = Math.max(rp, gp, bp);\n const cmin = Math.min(rp, gp, bp);\n const d = cmax - cmin;\n let h;\n if (d === 0) {\n h = 0;\n }\n else if (cmax === rp) {\n h = 60 * (((((gp - bp) / d) % 6) + 6) % 6);\n }\n else if (cmax === gp) {\n h = 60 * ((bp - rp) / d + 2);\n }\n else {\n h = 60 * ((rp - gp) / d + 4);\n }\n const s = cmax === 0 ? 0 : d / cmax;\n const v = cmax;\n return [h, s * 100, v * 100];\n}\nfunction hsvToRgbInt(h, s, v) {\n const hp = loopRange(h, 360);\n const sp = constrainRange(s / 100, 0, 1);\n const vp = constrainRange(v / 100, 0, 1);\n const c = vp * sp;\n const x = c * (1 - Math.abs(((hp / 60) % 2) - 1));\n const m = vp - c;\n let rp, gp, bp;\n if (hp >= 0 && hp < 60) {\n [rp, gp, bp] = [c, x, 0];\n }\n else if (hp >= 60 && hp < 120) {\n [rp, gp, bp] = [x, c, 0];\n }\n else if (hp >= 120 && hp < 180) {\n [rp, gp, bp] = [0, c, x];\n }\n else if (hp >= 180 && hp < 240) {\n [rp, gp, bp] = [0, x, c];\n }\n else if (hp >= 240 && hp < 300) {\n [rp, gp, bp] = [x, 0, c];\n }\n else {\n [rp, gp, bp] = [c, 0, x];\n }\n return [(rp + m) * 255, (gp + m) * 255, (bp + m) * 255];\n}\nfunction hslToHsvInt(h, s, l) {\n const sd = l + (s * (100 - Math.abs(2 * l - 100))) / (2 * 100);\n return [\n h,\n sd !== 0 ? (s * (100 - Math.abs(2 * l - 100))) / sd : 0,\n l + (s * (100 - Math.abs(2 * l - 100))) / (2 * 100),\n ];\n}\nfunction hsvToHslInt(h, s, v) {\n const sd = 100 - Math.abs((v * (200 - s)) / 100 - 100);\n return [h, sd !== 0 ? (s * v) / sd : 0, (v * (200 - s)) / (2 * 100)];\n}\nfunction removeAlphaComponent(comps) {\n return [comps[0], comps[1], comps[2]];\n}\nfunction appendAlphaComponent(comps, alpha) {\n return [comps[0], comps[1], comps[2], alpha];\n}\nconst MODE_CONVERTER_MAP = {\n hsl: {\n hsl: (h, s, l) => [h, s, l],\n hsv: hslToHsvInt,\n rgb: hslToRgbInt,\n },\n hsv: {\n hsl: hsvToHslInt,\n hsv: (h, s, v) => [h, s, v],\n rgb: hsvToRgbInt,\n },\n rgb: {\n hsl: rgbToHslInt,\n hsv: rgbToHsvInt,\n rgb: (r, g, b) => [r, g, b],\n },\n};\nfunction getColorMaxComponents(mode, type) {\n return [\n type === 'float' ? 1 : mode === 'rgb' ? 255 : 360,\n type === 'float' ? 1 : mode === 'rgb' ? 255 : 100,\n type === 'float' ? 1 : mode === 'rgb' ? 255 : 100,\n ];\n}\nfunction loopHueRange(hue, max) {\n return hue === max ? max : loopRange(hue, max);\n}\nfunction constrainColorComponents(components, mode, type) {\n var _a;\n const ms = getColorMaxComponents(mode, type);\n return [\n mode === 'rgb'\n ? constrainRange(components[0], 0, ms[0])\n : loopHueRange(components[0], ms[0]),\n constrainRange(components[1], 0, ms[1]),\n constrainRange(components[2], 0, ms[2]),\n constrainRange((_a = components[3]) !== null && _a !== void 0 ? _a : 1, 0, 1),\n ];\n}\nfunction convertColorType(comps, mode, from, to) {\n const fms = getColorMaxComponents(mode, from);\n const tms = getColorMaxComponents(mode, to);\n return comps.map((c, index) => (c / fms[index]) * tms[index]);\n}\nfunction convertColor(components, from, to) {\n const intComps = convertColorType(components, from.mode, from.type, 'int');\n const result = MODE_CONVERTER_MAP[from.mode][to.mode](...intComps);\n return convertColorType(result, to.mode, 'int', to.type);\n}\n\nclass IntColor {\n static black() {\n return new IntColor([0, 0, 0], 'rgb');\n }\n constructor(comps, mode) {\n this.type = 'int';\n this.mode = mode;\n this.comps_ = constrainColorComponents(comps, mode, this.type);\n }\n getComponents(opt_mode) {\n return appendAlphaComponent(convertColor(removeAlphaComponent(this.comps_), { mode: this.mode, type: this.type }, { mode: opt_mode !== null && opt_mode !== void 0 ? opt_mode : this.mode, type: this.type }), this.comps_[3]);\n }\n toRgbaObject() {\n const rgbComps = this.getComponents('rgb');\n return {\n r: rgbComps[0],\n g: rgbComps[1],\n b: rgbComps[2],\n a: rgbComps[3],\n };\n }\n}\n\nconst cn$c = ClassName('colp');\nclass ColorPickerView {\n constructor(doc, config) {\n this.alphaViews_ = null;\n this.element = doc.createElement('div');\n this.element.classList.add(cn$c());\n config.viewProps.bindClassModifiers(this.element);\n const hsvElem = doc.createElement('div');\n hsvElem.classList.add(cn$c('hsv'));\n const svElem = doc.createElement('div');\n svElem.classList.add(cn$c('sv'));\n this.svPaletteView_ = config.svPaletteView;\n svElem.appendChild(this.svPaletteView_.element);\n hsvElem.appendChild(svElem);\n const hElem = doc.createElement('div');\n hElem.classList.add(cn$c('h'));\n this.hPaletteView_ = config.hPaletteView;\n hElem.appendChild(this.hPaletteView_.element);\n hsvElem.appendChild(hElem);\n this.element.appendChild(hsvElem);\n const rgbElem = doc.createElement('div');\n rgbElem.classList.add(cn$c('rgb'));\n this.textsView_ = config.textsView;\n rgbElem.appendChild(this.textsView_.element);\n this.element.appendChild(rgbElem);\n if (config.alphaViews) {\n this.alphaViews_ = {\n palette: config.alphaViews.palette,\n text: config.alphaViews.text,\n };\n const aElem = doc.createElement('div');\n aElem.classList.add(cn$c('a'));\n const apElem = doc.createElement('div');\n apElem.classList.add(cn$c('ap'));\n apElem.appendChild(this.alphaViews_.palette.element);\n aElem.appendChild(apElem);\n const atElem = doc.createElement('div');\n atElem.classList.add(cn$c('at'));\n atElem.appendChild(this.alphaViews_.text.element);\n aElem.appendChild(atElem);\n this.element.appendChild(aElem);\n }\n }\n get allFocusableElements() {\n const elems = [\n this.svPaletteView_.element,\n this.hPaletteView_.element,\n this.textsView_.modeSelectElement,\n ...this.textsView_.inputViews.map((v) => v.inputElement),\n ];\n if (this.alphaViews_) {\n elems.push(this.alphaViews_.palette.element, this.alphaViews_.text.inputElement);\n }\n return elems;\n }\n}\n\nfunction parseColorType(value) {\n return value === 'int' ? 'int' : value === 'float' ? 'float' : undefined;\n}\nfunction parseColorInputParams(params) {\n return parseRecord(params, (p) => ({\n color: p.optional.object({\n alpha: p.optional.boolean,\n type: p.optional.custom(parseColorType),\n }),\n expanded: p.optional.boolean,\n picker: p.optional.custom(parsePickerLayout),\n readonly: p.optional.constant(false),\n }));\n}\nfunction getKeyScaleForColor(forAlpha) {\n return forAlpha ? 0.1 : 1;\n}\nfunction extractColorType(params) {\n var _a;\n return (_a = params.color) === null || _a === void 0 ? void 0 : _a.type;\n}\n\nclass FloatColor {\n constructor(comps, mode) {\n this.type = 'float';\n this.mode = mode;\n this.comps_ = constrainColorComponents(comps, mode, this.type);\n }\n getComponents(opt_mode) {\n return appendAlphaComponent(convertColor(removeAlphaComponent(this.comps_), { mode: this.mode, type: this.type }, { mode: opt_mode !== null && opt_mode !== void 0 ? opt_mode : this.mode, type: this.type }), this.comps_[3]);\n }\n toRgbaObject() {\n const rgbComps = this.getComponents('rgb');\n return {\n r: rgbComps[0],\n g: rgbComps[1],\n b: rgbComps[2],\n a: rgbComps[3],\n };\n }\n}\n\nconst TYPE_TO_CONSTRUCTOR_MAP = {\n int: (comps, mode) => new IntColor(comps, mode),\n float: (comps, mode) => new FloatColor(comps, mode),\n};\nfunction createColor(comps, mode, type) {\n return TYPE_TO_CONSTRUCTOR_MAP[type](comps, mode);\n}\nfunction isFloatColor(c) {\n return c.type === 'float';\n}\nfunction isIntColor(c) {\n return c.type === 'int';\n}\nfunction convertFloatToInt(cf) {\n const comps = cf.getComponents();\n const ms = getColorMaxComponents(cf.mode, 'int');\n return new IntColor([\n Math.round(mapRange(comps[0], 0, 1, 0, ms[0])),\n Math.round(mapRange(comps[1], 0, 1, 0, ms[1])),\n Math.round(mapRange(comps[2], 0, 1, 0, ms[2])),\n comps[3],\n ], cf.mode);\n}\nfunction convertIntToFloat(ci) {\n const comps = ci.getComponents();\n const ms = getColorMaxComponents(ci.mode, 'int');\n return new FloatColor([\n mapRange(comps[0], 0, ms[0], 0, 1),\n mapRange(comps[1], 0, ms[1], 0, 1),\n mapRange(comps[2], 0, ms[2], 0, 1),\n comps[3],\n ], ci.mode);\n}\nfunction mapColorType(c, type) {\n if (c.type === type) {\n return c;\n }\n if (isIntColor(c) && type === 'float') {\n return convertIntToFloat(c);\n }\n if (isFloatColor(c) && type === 'int') {\n return convertFloatToInt(c);\n }\n throw TpError.shouldNeverHappen();\n}\n\nfunction equalsStringColorFormat(f1, f2) {\n return (f1.alpha === f2.alpha &&\n f1.mode === f2.mode &&\n f1.notation === f2.notation &&\n f1.type === f2.type);\n}\nfunction parseCssNumberOrPercentage(text, max) {\n const m = text.match(/^(.+)%$/);\n if (!m) {\n return Math.min(parseFloat(text), max);\n }\n return Math.min(parseFloat(m[1]) * 0.01 * max, max);\n}\nconst ANGLE_TO_DEG_MAP = {\n deg: (angle) => angle,\n grad: (angle) => (angle * 360) / 400,\n rad: (angle) => (angle * 360) / (2 * Math.PI),\n turn: (angle) => angle * 360,\n};\nfunction parseCssNumberOrAngle(text) {\n const m = text.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);\n if (!m) {\n return parseFloat(text);\n }\n const angle = parseFloat(m[1]);\n const unit = m[2];\n return ANGLE_TO_DEG_MAP[unit](angle);\n}\nfunction parseFunctionalRgbColorComponents(text) {\n const m = text.match(/^rgb\\(\\s*([0-9A-Fa-f.]+%?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*\\)$/);\n if (!m) {\n return null;\n }\n const comps = [\n parseCssNumberOrPercentage(m[1], 255),\n parseCssNumberOrPercentage(m[2], 255),\n parseCssNumberOrPercentage(m[3], 255),\n ];\n if (isNaN(comps[0]) || isNaN(comps[1]) || isNaN(comps[2])) {\n return null;\n }\n return comps;\n}\nfunction parseFunctionalRgbColor(text) {\n const comps = parseFunctionalRgbColorComponents(text);\n return comps ? new IntColor(comps, 'rgb') : null;\n}\nfunction parseFunctionalRgbaColorComponents(text) {\n const m = text.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*\\)$/);\n if (!m) {\n return null;\n }\n const comps = [\n parseCssNumberOrPercentage(m[1], 255),\n parseCssNumberOrPercentage(m[2], 255),\n parseCssNumberOrPercentage(m[3], 255),\n parseCssNumberOrPercentage(m[4], 1),\n ];\n if (isNaN(comps[0]) ||\n isNaN(comps[1]) ||\n isNaN(comps[2]) ||\n isNaN(comps[3])) {\n return null;\n }\n return comps;\n}\nfunction parseFunctionalRgbaColor(text) {\n const comps = parseFunctionalRgbaColorComponents(text);\n return comps ? new IntColor(comps, 'rgb') : null;\n}\nfunction parseFunctionalHslColorComponents(text) {\n const m = text.match(/^hsl\\(\\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*\\)$/);\n if (!m) {\n return null;\n }\n const comps = [\n parseCssNumberOrAngle(m[1]),\n parseCssNumberOrPercentage(m[2], 100),\n parseCssNumberOrPercentage(m[3], 100),\n ];\n if (isNaN(comps[0]) || isNaN(comps[1]) || isNaN(comps[2])) {\n return null;\n }\n return comps;\n}\nfunction parseFunctionalHslColor(text) {\n const comps = parseFunctionalHslColorComponents(text);\n return comps ? new IntColor(comps, 'hsl') : null;\n}\nfunction parseHslaColorComponents(text) {\n const m = text.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*\\)$/);\n if (!m) {\n return null;\n }\n const comps = [\n parseCssNumberOrAngle(m[1]),\n parseCssNumberOrPercentage(m[2], 100),\n parseCssNumberOrPercentage(m[3], 100),\n parseCssNumberOrPercentage(m[4], 1),\n ];\n if (isNaN(comps[0]) ||\n isNaN(comps[1]) ||\n isNaN(comps[2]) ||\n isNaN(comps[3])) {\n return null;\n }\n return comps;\n}\nfunction parseFunctionalHslaColor(text) {\n const comps = parseHslaColorComponents(text);\n return comps ? new IntColor(comps, 'hsl') : null;\n}\nfunction parseHexRgbColorComponents(text) {\n const mRgb = text.match(/^#([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);\n if (mRgb) {\n return [\n parseInt(mRgb[1] + mRgb[1], 16),\n parseInt(mRgb[2] + mRgb[2], 16),\n parseInt(mRgb[3] + mRgb[3], 16),\n ];\n }\n const mRrggbb = text.match(/^(?:#|0x)([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);\n if (mRrggbb) {\n return [\n parseInt(mRrggbb[1], 16),\n parseInt(mRrggbb[2], 16),\n parseInt(mRrggbb[3], 16),\n ];\n }\n return null;\n}\nfunction parseHexRgbColor(text) {\n const comps = parseHexRgbColorComponents(text);\n return comps ? new IntColor(comps, 'rgb') : null;\n}\nfunction parseHexRgbaColorComponents(text) {\n const mRgb = text.match(/^#([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);\n if (mRgb) {\n return [\n parseInt(mRgb[1] + mRgb[1], 16),\n parseInt(mRgb[2] + mRgb[2], 16),\n parseInt(mRgb[3] + mRgb[3], 16),\n mapRange(parseInt(mRgb[4] + mRgb[4], 16), 0, 255, 0, 1),\n ];\n }\n const mRrggbb = text.match(/^(?:#|0x)?([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);\n if (mRrggbb) {\n return [\n parseInt(mRrggbb[1], 16),\n parseInt(mRrggbb[2], 16),\n parseInt(mRrggbb[3], 16),\n mapRange(parseInt(mRrggbb[4], 16), 0, 255, 0, 1),\n ];\n }\n return null;\n}\nfunction parseHexRgbaColor(text) {\n const comps = parseHexRgbaColorComponents(text);\n return comps ? new IntColor(comps, 'rgb') : null;\n}\nfunction parseObjectRgbColorComponents(text) {\n const m = text.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*\\}$/);\n if (!m) {\n return null;\n }\n const comps = [\n parseFloat(m[1]),\n parseFloat(m[2]),\n parseFloat(m[3]),\n ];\n if (isNaN(comps[0]) || isNaN(comps[1]) || isNaN(comps[2])) {\n return null;\n }\n return comps;\n}\nfunction createObjectRgbColorParser(type) {\n return (text) => {\n const comps = parseObjectRgbColorComponents(text);\n return comps ? createColor(comps, 'rgb', type) : null;\n };\n}\nfunction parseObjectRgbaColorComponents(text) {\n const m = text.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*\\}$/);\n if (!m) {\n return null;\n }\n const comps = [\n parseFloat(m[1]),\n parseFloat(m[2]),\n parseFloat(m[3]),\n parseFloat(m[4]),\n ];\n if (isNaN(comps[0]) ||\n isNaN(comps[1]) ||\n isNaN(comps[2]) ||\n isNaN(comps[3])) {\n return null;\n }\n return comps;\n}\nfunction createObjectRgbaColorParser(type) {\n return (text) => {\n const comps = parseObjectRgbaColorComponents(text);\n return comps ? createColor(comps, 'rgb', type) : null;\n };\n}\nconst PARSER_AND_RESULT = [\n {\n parser: parseHexRgbColorComponents,\n result: {\n alpha: false,\n mode: 'rgb',\n notation: 'hex',\n },\n },\n {\n parser: parseHexRgbaColorComponents,\n result: {\n alpha: true,\n mode: 'rgb',\n notation: 'hex',\n },\n },\n {\n parser: parseFunctionalRgbColorComponents,\n result: {\n alpha: false,\n mode: 'rgb',\n notation: 'func',\n },\n },\n {\n parser: parseFunctionalRgbaColorComponents,\n result: {\n alpha: true,\n mode: 'rgb',\n notation: 'func',\n },\n },\n {\n parser: parseFunctionalHslColorComponents,\n result: {\n alpha: false,\n mode: 'hsl',\n notation: 'func',\n },\n },\n {\n parser: parseHslaColorComponents,\n result: {\n alpha: true,\n mode: 'hsl',\n notation: 'func',\n },\n },\n {\n parser: parseObjectRgbColorComponents,\n result: {\n alpha: false,\n mode: 'rgb',\n notation: 'object',\n },\n },\n {\n parser: parseObjectRgbaColorComponents,\n result: {\n alpha: true,\n mode: 'rgb',\n notation: 'object',\n },\n },\n];\nfunction detectStringColor(text) {\n return PARSER_AND_RESULT.reduce((prev, { parser, result: detection }) => {\n if (prev) {\n return prev;\n }\n return parser(text) ? detection : null;\n }, null);\n}\nfunction detectStringColorFormat(text, type = 'int') {\n const r = detectStringColor(text);\n if (!r) {\n return null;\n }\n if (r.notation === 'hex' && type !== 'float') {\n return Object.assign(Object.assign({}, r), { type: 'int' });\n }\n if (r.notation === 'func') {\n return Object.assign(Object.assign({}, r), { type: type });\n }\n return null;\n}\nfunction createColorStringParser(type) {\n const parsers = [\n parseHexRgbColor,\n parseHexRgbaColor,\n parseFunctionalRgbColor,\n parseFunctionalRgbaColor,\n parseFunctionalHslColor,\n parseFunctionalHslaColor,\n ];\n if (type === 'int') {\n parsers.push(createObjectRgbColorParser('int'), createObjectRgbaColorParser('int'));\n }\n if (type === 'float') {\n parsers.push(createObjectRgbColorParser('float'), createObjectRgbaColorParser('float'));\n }\n const parser = composeParsers(parsers);\n return (text) => {\n const result = parser(text);\n return result ? mapColorType(result, type) : null;\n };\n}\nfunction readIntColorString(value) {\n const parser = createColorStringParser('int');\n if (typeof value !== 'string') {\n return IntColor.black();\n }\n const result = parser(value);\n return result !== null && result !== void 0 ? result : IntColor.black();\n}\nfunction zerofill(comp) {\n const hex = constrainRange(Math.floor(comp), 0, 255).toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n}\nfunction colorToHexRgbString(value, prefix = '#') {\n const hexes = removeAlphaComponent(value.getComponents('rgb'))\n .map(zerofill)\n .join('');\n return `${prefix}${hexes}`;\n}\nfunction colorToHexRgbaString(value, prefix = '#') {\n const rgbaComps = value.getComponents('rgb');\n const hexes = [rgbaComps[0], rgbaComps[1], rgbaComps[2], rgbaComps[3] * 255]\n .map(zerofill)\n .join('');\n return `${prefix}${hexes}`;\n}\nfunction colorToFunctionalRgbString(value) {\n const formatter = createNumberFormatter(0);\n const ci = mapColorType(value, 'int');\n const comps = removeAlphaComponent(ci.getComponents('rgb')).map((comp) => formatter(comp));\n return `rgb(${comps.join(', ')})`;\n}\nfunction colorToFunctionalRgbaString(value) {\n const aFormatter = createNumberFormatter(2);\n const rgbFormatter = createNumberFormatter(0);\n const ci = mapColorType(value, 'int');\n const comps = ci.getComponents('rgb').map((comp, index) => {\n const formatter = index === 3 ? aFormatter : rgbFormatter;\n return formatter(comp);\n });\n return `rgba(${comps.join(', ')})`;\n}\nfunction colorToFunctionalHslString(value) {\n const formatters = [\n createNumberFormatter(0),\n formatPercentage,\n formatPercentage,\n ];\n const ci = mapColorType(value, 'int');\n const comps = removeAlphaComponent(ci.getComponents('hsl')).map((comp, index) => formatters[index](comp));\n return `hsl(${comps.join(', ')})`;\n}\nfunction colorToFunctionalHslaString(value) {\n const formatters = [\n createNumberFormatter(0),\n formatPercentage,\n formatPercentage,\n createNumberFormatter(2),\n ];\n const ci = mapColorType(value, 'int');\n const comps = ci\n .getComponents('hsl')\n .map((comp, index) => formatters[index](comp));\n return `hsla(${comps.join(', ')})`;\n}\nfunction colorToObjectRgbString(value, type) {\n const formatter = createNumberFormatter(type === 'float' ? 2 : 0);\n const names = ['r', 'g', 'b'];\n const cc = mapColorType(value, type);\n const comps = removeAlphaComponent(cc.getComponents('rgb')).map((comp, index) => `${names[index]}: ${formatter(comp)}`);\n return `{${comps.join(', ')}}`;\n}\nfunction createObjectRgbColorFormatter(type) {\n return (value) => colorToObjectRgbString(value, type);\n}\nfunction colorToObjectRgbaString(value, type) {\n const aFormatter = createNumberFormatter(2);\n const rgbFormatter = createNumberFormatter(type === 'float' ? 2 : 0);\n const names = ['r', 'g', 'b', 'a'];\n const cc = mapColorType(value, type);\n const comps = cc.getComponents('rgb').map((comp, index) => {\n const formatter = index === 3 ? aFormatter : rgbFormatter;\n return `${names[index]}: ${formatter(comp)}`;\n });\n return `{${comps.join(', ')}}`;\n}\nfunction createObjectRgbaColorFormatter(type) {\n return (value) => colorToObjectRgbaString(value, type);\n}\nconst FORMAT_AND_STRINGIFIERS = [\n {\n format: {\n alpha: false,\n mode: 'rgb',\n notation: 'hex',\n type: 'int',\n },\n stringifier: colorToHexRgbString,\n },\n {\n format: {\n alpha: true,\n mode: 'rgb',\n notation: 'hex',\n type: 'int',\n },\n stringifier: colorToHexRgbaString,\n },\n {\n format: {\n alpha: false,\n mode: 'rgb',\n notation: 'func',\n type: 'int',\n },\n stringifier: colorToFunctionalRgbString,\n },\n {\n format: {\n alpha: true,\n mode: 'rgb',\n notation: 'func',\n type: 'int',\n },\n stringifier: colorToFunctionalRgbaString,\n },\n {\n format: {\n alpha: false,\n mode: 'hsl',\n notation: 'func',\n type: 'int',\n },\n stringifier: colorToFunctionalHslString,\n },\n {\n format: {\n alpha: true,\n mode: 'hsl',\n notation: 'func',\n type: 'int',\n },\n stringifier: colorToFunctionalHslaString,\n },\n ...['int', 'float'].reduce((prev, type) => {\n return [\n ...prev,\n {\n format: {\n alpha: false,\n mode: 'rgb',\n notation: 'object',\n type: type,\n },\n stringifier: createObjectRgbColorFormatter(type),\n },\n {\n format: {\n alpha: true,\n mode: 'rgb',\n notation: 'object',\n type: type,\n },\n stringifier: createObjectRgbaColorFormatter(type),\n },\n ];\n }, []),\n];\nfunction findColorStringifier(format) {\n return FORMAT_AND_STRINGIFIERS.reduce((prev, fas) => {\n if (prev) {\n return prev;\n }\n return equalsStringColorFormat(fas.format, format)\n ? fas.stringifier\n : null;\n }, null);\n}\n\nconst cn$b = ClassName('apl');\nclass APaletteView {\n constructor(doc, config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.value = config.value;\n this.value.emitter.on('change', this.onValueChange_);\n this.element = doc.createElement('div');\n this.element.classList.add(cn$b());\n config.viewProps.bindClassModifiers(this.element);\n config.viewProps.bindTabIndex(this.element);\n const barElem = doc.createElement('div');\n barElem.classList.add(cn$b('b'));\n this.element.appendChild(barElem);\n const colorElem = doc.createElement('div');\n colorElem.classList.add(cn$b('c'));\n barElem.appendChild(colorElem);\n this.colorElem_ = colorElem;\n const markerElem = doc.createElement('div');\n markerElem.classList.add(cn$b('m'));\n this.element.appendChild(markerElem);\n this.markerElem_ = markerElem;\n const previewElem = doc.createElement('div');\n previewElem.classList.add(cn$b('p'));\n this.markerElem_.appendChild(previewElem);\n this.previewElem_ = previewElem;\n this.update_();\n }\n update_() {\n const c = this.value.rawValue;\n const rgbaComps = c.getComponents('rgb');\n const leftColor = new IntColor([rgbaComps[0], rgbaComps[1], rgbaComps[2], 0], 'rgb');\n const rightColor = new IntColor([rgbaComps[0], rgbaComps[1], rgbaComps[2], 255], 'rgb');\n const gradientComps = [\n 'to right',\n colorToFunctionalRgbaString(leftColor),\n colorToFunctionalRgbaString(rightColor),\n ];\n this.colorElem_.style.background = `linear-gradient(${gradientComps.join(',')})`;\n this.previewElem_.style.backgroundColor = colorToFunctionalRgbaString(c);\n const left = mapRange(rgbaComps[3], 0, 1, 0, 100);\n this.markerElem_.style.left = `${left}%`;\n }\n onValueChange_() {\n this.update_();\n }\n}\n\nclass APaletteController {\n constructor(doc, config) {\n this.onKeyDown_ = this.onKeyDown_.bind(this);\n this.onKeyUp_ = this.onKeyUp_.bind(this);\n this.onPointerDown_ = this.onPointerDown_.bind(this);\n this.onPointerMove_ = this.onPointerMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new APaletteView(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.ptHandler_ = new PointerHandler(this.view.element);\n this.ptHandler_.emitter.on('down', this.onPointerDown_);\n this.ptHandler_.emitter.on('move', this.onPointerMove_);\n this.ptHandler_.emitter.on('up', this.onPointerUp_);\n this.view.element.addEventListener('keydown', this.onKeyDown_);\n this.view.element.addEventListener('keyup', this.onKeyUp_);\n }\n handlePointerEvent_(d, opts) {\n if (!d.point) {\n return;\n }\n const alpha = d.point.x / d.bounds.width;\n const c = this.value.rawValue;\n const [h, s, v] = c.getComponents('hsv');\n this.value.setRawValue(new IntColor([h, s, v, alpha], 'hsv'), opts);\n }\n onPointerDown_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerMove_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerUp_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: true,\n last: true,\n });\n }\n onKeyDown_(ev) {\n const step = getStepForKey(getKeyScaleForColor(true), getHorizontalStepKeys(ev));\n if (step === 0) {\n return;\n }\n const c = this.value.rawValue;\n const [h, s, v, a] = c.getComponents('hsv');\n this.value.setRawValue(new IntColor([h, s, v, a + step], 'hsv'), {\n forceEmit: false,\n last: false,\n });\n }\n onKeyUp_(ev) {\n const step = getStepForKey(getKeyScaleForColor(true), getHorizontalStepKeys(ev));\n if (step === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n}\n\nconst cn$a = ClassName('coltxt');\nfunction createModeSelectElement(doc) {\n const selectElem = doc.createElement('select');\n const items = [\n { text: 'RGB', value: 'rgb' },\n { text: 'HSL', value: 'hsl' },\n { text: 'HSV', value: 'hsv' },\n { text: 'HEX', value: 'hex' },\n ];\n selectElem.appendChild(items.reduce((frag, item) => {\n const optElem = doc.createElement('option');\n optElem.textContent = item.text;\n optElem.value = item.value;\n frag.appendChild(optElem);\n return frag;\n }, doc.createDocumentFragment()));\n return selectElem;\n}\nclass ColorTextsView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(cn$a());\n config.viewProps.bindClassModifiers(this.element);\n const modeElem = doc.createElement('div');\n modeElem.classList.add(cn$a('m'));\n this.modeElem_ = createModeSelectElement(doc);\n this.modeElem_.classList.add(cn$a('ms'));\n modeElem.appendChild(this.modeSelectElement);\n config.viewProps.bindDisabled(this.modeElem_);\n const modeMarkerElem = doc.createElement('div');\n modeMarkerElem.classList.add(cn$a('mm'));\n modeMarkerElem.appendChild(createSvgIconElement(doc, 'dropdown'));\n modeElem.appendChild(modeMarkerElem);\n this.element.appendChild(modeElem);\n const inputsElem = doc.createElement('div');\n inputsElem.classList.add(cn$a('w'));\n this.element.appendChild(inputsElem);\n this.inputsElem_ = inputsElem;\n this.inputViews_ = config.inputViews;\n this.applyInputViews_();\n bindValue(config.mode, (mode) => {\n this.modeElem_.value = mode;\n });\n }\n get modeSelectElement() {\n return this.modeElem_;\n }\n get inputViews() {\n return this.inputViews_;\n }\n set inputViews(inputViews) {\n this.inputViews_ = inputViews;\n this.applyInputViews_();\n }\n applyInputViews_() {\n removeChildElements(this.inputsElem_);\n const doc = this.element.ownerDocument;\n this.inputViews_.forEach((v) => {\n const compElem = doc.createElement('div');\n compElem.classList.add(cn$a('c'));\n compElem.appendChild(v.element);\n this.inputsElem_.appendChild(compElem);\n });\n }\n}\n\nfunction createFormatter$2(type) {\n return createNumberFormatter(type === 'float' ? 2 : 0);\n}\nfunction createConstraint$5(mode, type, index) {\n const max = getColorMaxComponents(mode, type)[index];\n return new DefiniteRangeConstraint({\n min: 0,\n max: max,\n });\n}\nfunction createComponentController(doc, config, index) {\n return new NumberTextController(doc, {\n arrayPosition: index === 0 ? 'fst' : index === 3 - 1 ? 'lst' : 'mid',\n parser: config.parser,\n props: ValueMap.fromObject({\n formatter: createFormatter$2(config.colorType),\n keyScale: getKeyScaleForColor(false),\n pointerScale: config.colorType === 'float' ? 0.01 : 1,\n }),\n value: createValue(0, {\n constraint: createConstraint$5(config.colorMode, config.colorType, index),\n }),\n viewProps: config.viewProps,\n });\n}\nfunction createComponentControllers(doc, config) {\n const cc = {\n colorMode: config.colorMode,\n colorType: config.colorType,\n parser: parseNumber,\n viewProps: config.viewProps,\n };\n return [0, 1, 2].map((i) => {\n const c = createComponentController(doc, cc, i);\n connectValues({\n primary: config.value,\n secondary: c.value,\n forward(p) {\n const mc = mapColorType(p, config.colorType);\n return mc.getComponents(config.colorMode)[i];\n },\n backward(p, s) {\n const pickedMode = config.colorMode;\n const mc = mapColorType(p, config.colorType);\n const comps = mc.getComponents(pickedMode);\n comps[i] = s;\n const c = createColor(appendAlphaComponent(removeAlphaComponent(comps), comps[3]), pickedMode, config.colorType);\n return mapColorType(c, 'int');\n },\n });\n return c;\n });\n}\nfunction createHexController(doc, config) {\n const c = new TextController(doc, {\n parser: createColorStringParser('int'),\n props: ValueMap.fromObject({\n formatter: colorToHexRgbString,\n }),\n value: createValue(IntColor.black()),\n viewProps: config.viewProps,\n });\n connectValues({\n primary: config.value,\n secondary: c.value,\n forward: (p) => new IntColor(removeAlphaComponent(p.getComponents()), p.mode),\n backward: (p, s) => new IntColor(appendAlphaComponent(removeAlphaComponent(s.getComponents(p.mode)), p.getComponents()[3]), p.mode),\n });\n return [c];\n}\nfunction isColorMode(mode) {\n return mode !== 'hex';\n}\nclass ColorTextsController {\n constructor(doc, config) {\n this.onModeSelectChange_ = this.onModeSelectChange_.bind(this);\n this.colorType_ = config.colorType;\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.colorMode = createValue(this.value.rawValue.mode);\n this.ccs_ = this.createComponentControllers_(doc);\n this.view = new ColorTextsView(doc, {\n mode: this.colorMode,\n inputViews: [this.ccs_[0].view, this.ccs_[1].view, this.ccs_[2].view],\n viewProps: this.viewProps,\n });\n this.view.modeSelectElement.addEventListener('change', this.onModeSelectChange_);\n }\n createComponentControllers_(doc) {\n const mode = this.colorMode.rawValue;\n if (isColorMode(mode)) {\n return createComponentControllers(doc, {\n colorMode: mode,\n colorType: this.colorType_,\n value: this.value,\n viewProps: this.viewProps,\n });\n }\n return createHexController(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n }\n onModeSelectChange_(ev) {\n const selectElem = ev.currentTarget;\n this.colorMode.rawValue = selectElem.value;\n this.ccs_ = this.createComponentControllers_(this.view.element.ownerDocument);\n this.view.inputViews = this.ccs_.map((cc) => cc.view);\n }\n}\n\nconst cn$9 = ClassName('hpl');\nclass HPaletteView {\n constructor(doc, config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.value = config.value;\n this.value.emitter.on('change', this.onValueChange_);\n this.element = doc.createElement('div');\n this.element.classList.add(cn$9());\n config.viewProps.bindClassModifiers(this.element);\n config.viewProps.bindTabIndex(this.element);\n const colorElem = doc.createElement('div');\n colorElem.classList.add(cn$9('c'));\n this.element.appendChild(colorElem);\n const markerElem = doc.createElement('div');\n markerElem.classList.add(cn$9('m'));\n this.element.appendChild(markerElem);\n this.markerElem_ = markerElem;\n this.update_();\n }\n update_() {\n const c = this.value.rawValue;\n const [h] = c.getComponents('hsv');\n this.markerElem_.style.backgroundColor = colorToFunctionalRgbString(new IntColor([h, 100, 100], 'hsv'));\n const left = mapRange(h, 0, 360, 0, 100);\n this.markerElem_.style.left = `${left}%`;\n }\n onValueChange_() {\n this.update_();\n }\n}\n\nclass HPaletteController {\n constructor(doc, config) {\n this.onKeyDown_ = this.onKeyDown_.bind(this);\n this.onKeyUp_ = this.onKeyUp_.bind(this);\n this.onPointerDown_ = this.onPointerDown_.bind(this);\n this.onPointerMove_ = this.onPointerMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new HPaletteView(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.ptHandler_ = new PointerHandler(this.view.element);\n this.ptHandler_.emitter.on('down', this.onPointerDown_);\n this.ptHandler_.emitter.on('move', this.onPointerMove_);\n this.ptHandler_.emitter.on('up', this.onPointerUp_);\n this.view.element.addEventListener('keydown', this.onKeyDown_);\n this.view.element.addEventListener('keyup', this.onKeyUp_);\n }\n handlePointerEvent_(d, opts) {\n if (!d.point) {\n return;\n }\n const hue = mapRange(constrainRange(d.point.x, 0, d.bounds.width), 0, d.bounds.width, 0, 360);\n const c = this.value.rawValue;\n const [, s, v, a] = c.getComponents('hsv');\n this.value.setRawValue(new IntColor([hue, s, v, a], 'hsv'), opts);\n }\n onPointerDown_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerMove_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerUp_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: true,\n last: true,\n });\n }\n onKeyDown_(ev) {\n const step = getStepForKey(getKeyScaleForColor(false), getHorizontalStepKeys(ev));\n if (step === 0) {\n return;\n }\n const c = this.value.rawValue;\n const [h, s, v, a] = c.getComponents('hsv');\n this.value.setRawValue(new IntColor([h + step, s, v, a], 'hsv'), {\n forceEmit: false,\n last: false,\n });\n }\n onKeyUp_(ev) {\n const step = getStepForKey(getKeyScaleForColor(false), getHorizontalStepKeys(ev));\n if (step === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n}\n\nconst cn$8 = ClassName('svp');\nconst CANVAS_RESOL = 64;\nclass SvPaletteView {\n constructor(doc, config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.value = config.value;\n this.value.emitter.on('change', this.onValueChange_);\n this.element = doc.createElement('div');\n this.element.classList.add(cn$8());\n config.viewProps.bindClassModifiers(this.element);\n config.viewProps.bindTabIndex(this.element);\n const canvasElem = doc.createElement('canvas');\n canvasElem.height = CANVAS_RESOL;\n canvasElem.width = CANVAS_RESOL;\n canvasElem.classList.add(cn$8('c'));\n this.element.appendChild(canvasElem);\n this.canvasElement = canvasElem;\n const markerElem = doc.createElement('div');\n markerElem.classList.add(cn$8('m'));\n this.element.appendChild(markerElem);\n this.markerElem_ = markerElem;\n this.update_();\n }\n update_() {\n const ctx = getCanvasContext(this.canvasElement);\n if (!ctx) {\n return;\n }\n const c = this.value.rawValue;\n const hsvComps = c.getComponents('hsv');\n const width = this.canvasElement.width;\n const height = this.canvasElement.height;\n const imgData = ctx.getImageData(0, 0, width, height);\n const data = imgData.data;\n for (let iy = 0; iy < height; iy++) {\n for (let ix = 0; ix < width; ix++) {\n const s = mapRange(ix, 0, width, 0, 100);\n const v = mapRange(iy, 0, height, 100, 0);\n const rgbComps = hsvToRgbInt(hsvComps[0], s, v);\n const i = (iy * width + ix) * 4;\n data[i] = rgbComps[0];\n data[i + 1] = rgbComps[1];\n data[i + 2] = rgbComps[2];\n data[i + 3] = 255;\n }\n }\n ctx.putImageData(imgData, 0, 0);\n const left = mapRange(hsvComps[1], 0, 100, 0, 100);\n this.markerElem_.style.left = `${left}%`;\n const top = mapRange(hsvComps[2], 0, 100, 100, 0);\n this.markerElem_.style.top = `${top}%`;\n }\n onValueChange_() {\n this.update_();\n }\n}\n\nclass SvPaletteController {\n constructor(doc, config) {\n this.onKeyDown_ = this.onKeyDown_.bind(this);\n this.onKeyUp_ = this.onKeyUp_.bind(this);\n this.onPointerDown_ = this.onPointerDown_.bind(this);\n this.onPointerMove_ = this.onPointerMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new SvPaletteView(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.ptHandler_ = new PointerHandler(this.view.element);\n this.ptHandler_.emitter.on('down', this.onPointerDown_);\n this.ptHandler_.emitter.on('move', this.onPointerMove_);\n this.ptHandler_.emitter.on('up', this.onPointerUp_);\n this.view.element.addEventListener('keydown', this.onKeyDown_);\n this.view.element.addEventListener('keyup', this.onKeyUp_);\n }\n handlePointerEvent_(d, opts) {\n if (!d.point) {\n return;\n }\n const saturation = mapRange(d.point.x, 0, d.bounds.width, 0, 100);\n const value = mapRange(d.point.y, 0, d.bounds.height, 100, 0);\n const [h, , , a] = this.value.rawValue.getComponents('hsv');\n this.value.setRawValue(new IntColor([h, saturation, value, a], 'hsv'), opts);\n }\n onPointerDown_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerMove_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerUp_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: true,\n last: true,\n });\n }\n onKeyDown_(ev) {\n if (isArrowKey(ev.key)) {\n ev.preventDefault();\n }\n const [h, s, v, a] = this.value.rawValue.getComponents('hsv');\n const keyScale = getKeyScaleForColor(false);\n const ds = getStepForKey(keyScale, getHorizontalStepKeys(ev));\n const dv = getStepForKey(keyScale, getVerticalStepKeys(ev));\n if (ds === 0 && dv === 0) {\n return;\n }\n this.value.setRawValue(new IntColor([h, s + ds, v + dv, a], 'hsv'), {\n forceEmit: false,\n last: false,\n });\n }\n onKeyUp_(ev) {\n const keyScale = getKeyScaleForColor(false);\n const ds = getStepForKey(keyScale, getHorizontalStepKeys(ev));\n const dv = getStepForKey(keyScale, getVerticalStepKeys(ev));\n if (ds === 0 && dv === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n}\n\nclass ColorPickerController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.hPaletteC_ = new HPaletteController(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.svPaletteC_ = new SvPaletteController(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.alphaIcs_ = config.supportsAlpha\n ? {\n palette: new APaletteController(doc, {\n value: this.value,\n viewProps: this.viewProps,\n }),\n text: new NumberTextController(doc, {\n parser: parseNumber,\n props: ValueMap.fromObject({\n pointerScale: 0.01,\n keyScale: 0.1,\n formatter: createNumberFormatter(2),\n }),\n value: createValue(0, {\n constraint: new DefiniteRangeConstraint({ min: 0, max: 1 }),\n }),\n viewProps: this.viewProps,\n }),\n }\n : null;\n if (this.alphaIcs_) {\n connectValues({\n primary: this.value,\n secondary: this.alphaIcs_.text.value,\n forward: (p) => p.getComponents()[3],\n backward: (p, s) => {\n const comps = p.getComponents();\n comps[3] = s;\n return new IntColor(comps, p.mode);\n },\n });\n }\n this.textsC_ = new ColorTextsController(doc, {\n colorType: config.colorType,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view = new ColorPickerView(doc, {\n alphaViews: this.alphaIcs_\n ? {\n palette: this.alphaIcs_.palette.view,\n text: this.alphaIcs_.text.view,\n }\n : null,\n hPaletteView: this.hPaletteC_.view,\n supportsAlpha: config.supportsAlpha,\n svPaletteView: this.svPaletteC_.view,\n textsView: this.textsC_.view,\n viewProps: this.viewProps,\n });\n }\n get textsController() {\n return this.textsC_;\n }\n}\n\nconst cn$7 = ClassName('colsw');\nclass ColorSwatchView {\n constructor(doc, config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n config.value.emitter.on('change', this.onValueChange_);\n this.value = config.value;\n this.element = doc.createElement('div');\n this.element.classList.add(cn$7());\n config.viewProps.bindClassModifiers(this.element);\n const swatchElem = doc.createElement('div');\n swatchElem.classList.add(cn$7('sw'));\n this.element.appendChild(swatchElem);\n this.swatchElem_ = swatchElem;\n const buttonElem = doc.createElement('button');\n buttonElem.classList.add(cn$7('b'));\n config.viewProps.bindDisabled(buttonElem);\n this.element.appendChild(buttonElem);\n this.buttonElement = buttonElem;\n this.update_();\n }\n update_() {\n const value = this.value.rawValue;\n this.swatchElem_.style.backgroundColor = colorToHexRgbaString(value);\n }\n onValueChange_() {\n this.update_();\n }\n}\n\nclass ColorSwatchController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new ColorSwatchView(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n }\n}\n\nclass ColorController {\n constructor(doc, config) {\n this.onButtonBlur_ = this.onButtonBlur_.bind(this);\n this.onButtonClick_ = this.onButtonClick_.bind(this);\n this.onPopupChildBlur_ = this.onPopupChildBlur_.bind(this);\n this.onPopupChildKeydown_ = this.onPopupChildKeydown_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.foldable_ = Foldable.create(config.expanded);\n this.swatchC_ = new ColorSwatchController(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n const buttonElem = this.swatchC_.view.buttonElement;\n buttonElem.addEventListener('blur', this.onButtonBlur_);\n buttonElem.addEventListener('click', this.onButtonClick_);\n this.textC_ = new TextController(doc, {\n parser: config.parser,\n props: ValueMap.fromObject({\n formatter: config.formatter,\n }),\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view = new ColorView(doc, {\n foldable: this.foldable_,\n pickerLayout: config.pickerLayout,\n });\n this.view.swatchElement.appendChild(this.swatchC_.view.element);\n this.view.textElement.appendChild(this.textC_.view.element);\n this.popC_ =\n config.pickerLayout === 'popup'\n ? new PopupController(doc, {\n viewProps: this.viewProps,\n })\n : null;\n const pickerC = new ColorPickerController(doc, {\n colorType: config.colorType,\n supportsAlpha: config.supportsAlpha,\n value: this.value,\n viewProps: this.viewProps,\n });\n pickerC.view.allFocusableElements.forEach((elem) => {\n elem.addEventListener('blur', this.onPopupChildBlur_);\n elem.addEventListener('keydown', this.onPopupChildKeydown_);\n });\n this.pickerC_ = pickerC;\n if (this.popC_) {\n this.view.element.appendChild(this.popC_.view.element);\n this.popC_.view.element.appendChild(pickerC.view.element);\n connectValues({\n primary: this.foldable_.value('expanded'),\n secondary: this.popC_.shows,\n forward: (p) => p,\n backward: (_, s) => s,\n });\n }\n else if (this.view.pickerElement) {\n this.view.pickerElement.appendChild(this.pickerC_.view.element);\n bindFoldable(this.foldable_, this.view.pickerElement);\n }\n }\n get textController() {\n return this.textC_;\n }\n onButtonBlur_(e) {\n if (!this.popC_) {\n return;\n }\n const elem = this.view.element;\n const nextTarget = forceCast(e.relatedTarget);\n if (!nextTarget || !elem.contains(nextTarget)) {\n this.popC_.shows.rawValue = false;\n }\n }\n onButtonClick_() {\n this.foldable_.set('expanded', !this.foldable_.get('expanded'));\n if (this.foldable_.get('expanded')) {\n this.pickerC_.view.allFocusableElements[0].focus();\n }\n }\n onPopupChildBlur_(ev) {\n if (!this.popC_) {\n return;\n }\n const elem = this.popC_.view.element;\n const nextTarget = findNextTarget(ev);\n if (nextTarget && elem.contains(nextTarget)) {\n return;\n }\n if (nextTarget &&\n nextTarget === this.swatchC_.view.buttonElement &&\n !supportsTouch(elem.ownerDocument)) {\n return;\n }\n this.popC_.shows.rawValue = false;\n }\n onPopupChildKeydown_(ev) {\n if (this.popC_) {\n if (ev.key === 'Escape') {\n this.popC_.shows.rawValue = false;\n }\n }\n else if (this.view.pickerElement) {\n if (ev.key === 'Escape') {\n this.swatchC_.view.buttonElement.focus();\n }\n }\n }\n}\n\nfunction colorToRgbNumber(value) {\n return removeAlphaComponent(value.getComponents('rgb')).reduce((result, comp) => {\n return (result << 8) | (Math.floor(comp) & 0xff);\n }, 0);\n}\nfunction colorToRgbaNumber(value) {\n return (value.getComponents('rgb').reduce((result, comp, index) => {\n const hex = Math.floor(index === 3 ? comp * 255 : comp) & 0xff;\n return (result << 8) | hex;\n }, 0) >>> 0);\n}\nfunction numberToRgbColor(num) {\n return new IntColor([(num >> 16) & 0xff, (num >> 8) & 0xff, num & 0xff], 'rgb');\n}\nfunction numberToRgbaColor(num) {\n return new IntColor([\n (num >> 24) & 0xff,\n (num >> 16) & 0xff,\n (num >> 8) & 0xff,\n mapRange(num & 0xff, 0, 255, 0, 1),\n ], 'rgb');\n}\nfunction colorFromRgbNumber(value) {\n if (typeof value !== 'number') {\n return IntColor.black();\n }\n return numberToRgbColor(value);\n}\nfunction colorFromRgbaNumber(value) {\n if (typeof value !== 'number') {\n return IntColor.black();\n }\n return numberToRgbaColor(value);\n}\n\nfunction isRgbColorComponent(obj, key) {\n if (typeof obj !== 'object' || isEmpty(obj)) {\n return false;\n }\n return key in obj && typeof obj[key] === 'number';\n}\nfunction isRgbColorObject(obj) {\n return (isRgbColorComponent(obj, 'r') &&\n isRgbColorComponent(obj, 'g') &&\n isRgbColorComponent(obj, 'b'));\n}\nfunction isRgbaColorObject(obj) {\n return isRgbColorObject(obj) && isRgbColorComponent(obj, 'a');\n}\nfunction isColorObject(obj) {\n return isRgbColorObject(obj);\n}\nfunction equalsColor(v1, v2) {\n if (v1.mode !== v2.mode) {\n return false;\n }\n if (v1.type !== v2.type) {\n return false;\n }\n const comps1 = v1.getComponents();\n const comps2 = v2.getComponents();\n for (let i = 0; i < comps1.length; i++) {\n if (comps1[i] !== comps2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction createColorComponentsFromRgbObject(obj) {\n return 'a' in obj ? [obj.r, obj.g, obj.b, obj.a] : [obj.r, obj.g, obj.b];\n}\n\nfunction createColorStringWriter(format) {\n const stringify = findColorStringifier(format);\n return stringify\n ? (target, value) => {\n writePrimitive(target, stringify(value));\n }\n : null;\n}\nfunction createColorNumberWriter(supportsAlpha) {\n const colorToNumber = supportsAlpha ? colorToRgbaNumber : colorToRgbNumber;\n return (target, value) => {\n writePrimitive(target, colorToNumber(value));\n };\n}\nfunction writeRgbaColorObject(target, value, type) {\n const cc = mapColorType(value, type);\n const obj = cc.toRgbaObject();\n target.writeProperty('r', obj.r);\n target.writeProperty('g', obj.g);\n target.writeProperty('b', obj.b);\n target.writeProperty('a', obj.a);\n}\nfunction writeRgbColorObject(target, value, type) {\n const cc = mapColorType(value, type);\n const obj = cc.toRgbaObject();\n target.writeProperty('r', obj.r);\n target.writeProperty('g', obj.g);\n target.writeProperty('b', obj.b);\n}\nfunction createColorObjectWriter(supportsAlpha, type) {\n return (target, inValue) => {\n if (supportsAlpha) {\n writeRgbaColorObject(target, inValue, type);\n }\n else {\n writeRgbColorObject(target, inValue, type);\n }\n };\n}\n\nfunction shouldSupportAlpha$1(inputParams) {\n var _a;\n if ((_a = inputParams === null || inputParams === void 0 ? void 0 : inputParams.color) === null || _a === void 0 ? void 0 : _a.alpha) {\n return true;\n }\n return false;\n}\nfunction createFormatter$1(supportsAlpha) {\n return supportsAlpha\n ? (v) => colorToHexRgbaString(v, '0x')\n : (v) => colorToHexRgbString(v, '0x');\n}\nfunction isForColor(params) {\n if ('color' in params) {\n return true;\n }\n if (params.view === 'color') {\n return true;\n }\n return false;\n}\nconst NumberColorInputPlugin = createPlugin({\n id: 'input-color-number',\n type: 'input',\n accept: (value, params) => {\n if (typeof value !== 'number') {\n return null;\n }\n if (!isForColor(params)) {\n return null;\n }\n const result = parseColorInputParams(params);\n return result\n ? {\n initialValue: value,\n params: Object.assign(Object.assign({}, result), { supportsAlpha: shouldSupportAlpha$1(params) }),\n }\n : null;\n },\n binding: {\n reader: (args) => {\n return args.params.supportsAlpha\n ? colorFromRgbaNumber\n : colorFromRgbNumber;\n },\n equals: equalsColor,\n writer: (args) => {\n return createColorNumberWriter(args.params.supportsAlpha);\n },\n },\n controller: (args) => {\n var _a, _b;\n return new ColorController(args.document, {\n colorType: 'int',\n expanded: (_a = args.params.expanded) !== null && _a !== void 0 ? _a : false,\n formatter: createFormatter$1(args.params.supportsAlpha),\n parser: createColorStringParser('int'),\n pickerLayout: (_b = args.params.picker) !== null && _b !== void 0 ? _b : 'popup',\n supportsAlpha: args.params.supportsAlpha,\n value: args.value,\n viewProps: args.viewProps,\n });\n },\n});\n\nfunction colorFromObject(value, type) {\n if (!isColorObject(value)) {\n return mapColorType(IntColor.black(), type);\n }\n if (type === 'int') {\n const comps = createColorComponentsFromRgbObject(value);\n return new IntColor(comps, 'rgb');\n }\n if (type === 'float') {\n const comps = createColorComponentsFromRgbObject(value);\n return new FloatColor(comps, 'rgb');\n }\n return mapColorType(IntColor.black(), 'int');\n}\n\nfunction shouldSupportAlpha(initialValue) {\n return isRgbaColorObject(initialValue);\n}\nfunction createColorObjectBindingReader(type) {\n return (value) => {\n const c = colorFromObject(value, type);\n return mapColorType(c, 'int');\n };\n}\nfunction createColorObjectFormatter(supportsAlpha, type) {\n return (value) => {\n if (supportsAlpha) {\n return colorToObjectRgbaString(value, type);\n }\n return colorToObjectRgbString(value, type);\n };\n}\nconst ObjectColorInputPlugin = createPlugin({\n id: 'input-color-object',\n type: 'input',\n accept: (value, params) => {\n var _a;\n if (!isColorObject(value)) {\n return null;\n }\n const result = parseColorInputParams(params);\n return result\n ? {\n initialValue: value,\n params: Object.assign(Object.assign({}, result), { colorType: (_a = extractColorType(params)) !== null && _a !== void 0 ? _a : 'int' }),\n }\n : null;\n },\n binding: {\n reader: (args) => createColorObjectBindingReader(args.params.colorType),\n equals: equalsColor,\n writer: (args) => createColorObjectWriter(shouldSupportAlpha(args.initialValue), args.params.colorType),\n },\n controller: (args) => {\n var _a, _b;\n const supportsAlpha = isRgbaColorObject(args.initialValue);\n return new ColorController(args.document, {\n colorType: args.params.colorType,\n expanded: (_a = args.params.expanded) !== null && _a !== void 0 ? _a : false,\n formatter: createColorObjectFormatter(supportsAlpha, args.params.colorType),\n parser: createColorStringParser('int'),\n pickerLayout: (_b = args.params.picker) !== null && _b !== void 0 ? _b : 'popup',\n supportsAlpha: supportsAlpha,\n value: args.value,\n viewProps: args.viewProps,\n });\n },\n});\n\nconst StringColorInputPlugin = createPlugin({\n id: 'input-color-string',\n type: 'input',\n accept: (value, params) => {\n if (typeof value !== 'string') {\n return null;\n }\n if (params.view === 'text') {\n return null;\n }\n const format = detectStringColorFormat(value, extractColorType(params));\n if (!format) {\n return null;\n }\n const stringifier = findColorStringifier(format);\n if (!stringifier) {\n return null;\n }\n const result = parseColorInputParams(params);\n return result\n ? {\n initialValue: value,\n params: Object.assign(Object.assign({}, result), { format: format, stringifier: stringifier }),\n }\n : null;\n },\n binding: {\n reader: () => readIntColorString,\n equals: equalsColor,\n writer: (args) => {\n const writer = createColorStringWriter(args.params.format);\n if (!writer) {\n throw TpError.notBindable();\n }\n return writer;\n },\n },\n controller: (args) => {\n var _a, _b;\n return new ColorController(args.document, {\n colorType: args.params.format.type,\n expanded: (_a = args.params.expanded) !== null && _a !== void 0 ? _a : false,\n formatter: args.params.stringifier,\n parser: createColorStringParser('int'),\n pickerLayout: (_b = args.params.picker) !== null && _b !== void 0 ? _b : 'popup',\n supportsAlpha: args.params.format.alpha,\n value: args.value,\n viewProps: args.viewProps,\n });\n },\n});\n\nclass PointNdConstraint {\n constructor(config) {\n this.components = config.components;\n this.asm_ = config.assembly;\n }\n constrain(value) {\n const comps = this.asm_\n .toComponents(value)\n .map((comp, index) => { var _a, _b; return (_b = (_a = this.components[index]) === null || _a === void 0 ? void 0 : _a.constrain(comp)) !== null && _b !== void 0 ? _b : comp; });\n return this.asm_.fromComponents(comps);\n }\n}\n\nconst cn$6 = ClassName('pndtxt');\nclass PointNdTextView {\n constructor(doc, config) {\n this.textViews = config.textViews;\n this.element = doc.createElement('div');\n this.element.classList.add(cn$6());\n this.textViews.forEach((v) => {\n const axisElem = doc.createElement('div');\n axisElem.classList.add(cn$6('a'));\n axisElem.appendChild(v.element);\n this.element.appendChild(axisElem);\n });\n }\n}\n\nfunction createAxisController(doc, config, index) {\n return new NumberTextController(doc, {\n arrayPosition: index === 0 ? 'fst' : index === config.axes.length - 1 ? 'lst' : 'mid',\n parser: config.parser,\n props: config.axes[index].textProps,\n value: createValue(0, {\n constraint: config.axes[index].constraint,\n }),\n viewProps: config.viewProps,\n });\n}\nclass PointNdTextController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.acs_ = config.axes.map((_, index) => createAxisController(doc, config, index));\n this.acs_.forEach((c, index) => {\n connectValues({\n primary: this.value,\n secondary: c.value,\n forward: (p) => config.assembly.toComponents(p)[index],\n backward: (p, s) => {\n const comps = config.assembly.toComponents(p);\n comps[index] = s;\n return config.assembly.fromComponents(comps);\n },\n });\n });\n this.view = new PointNdTextView(doc, {\n textViews: this.acs_.map((ac) => ac.view),\n });\n }\n get textControllers() {\n return this.acs_;\n }\n}\n\nclass SliderInputBindingApi extends BindingApi {\n get max() {\n return this.controller.valueController.sliderController.props.get('max');\n }\n set max(max) {\n this.controller.valueController.sliderController.props.set('max', max);\n }\n get min() {\n return this.controller.valueController.sliderController.props.get('min');\n }\n set min(max) {\n this.controller.valueController.sliderController.props.set('min', max);\n }\n}\n\nfunction createConstraint$4(params, initialValue) {\n const constraints = [];\n const sc = createStepConstraint(params, initialValue);\n if (sc) {\n constraints.push(sc);\n }\n const rc = createRangeConstraint(params);\n if (rc) {\n constraints.push(rc);\n }\n const lc = createListConstraint(params.options);\n if (lc) {\n constraints.push(lc);\n }\n return new CompositeConstraint(constraints);\n}\nconst NumberInputPlugin = createPlugin({\n id: 'input-number',\n type: 'input',\n accept: (value, params) => {\n if (typeof value !== 'number') {\n return null;\n }\n const result = parseRecord(params, (p) => (Object.assign(Object.assign({}, createNumberTextInputParamsParser(p)), { options: p.optional.custom(parseListOptions), readonly: p.optional.constant(false) })));\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => numberFromUnknown,\n constraint: (args) => createConstraint$4(args.params, args.initialValue),\n writer: (_args) => writePrimitive,\n },\n controller: (args) => {\n const value = args.value;\n const c = args.constraint;\n const lc = c && findConstraint(c, ListConstraint);\n if (lc) {\n return new ListController(args.document, {\n props: new ValueMap({\n options: lc.values.value('options'),\n }),\n value: value,\n viewProps: args.viewProps,\n });\n }\n const textPropsObj = createNumberTextPropsObject(args.params, value.rawValue);\n const drc = c && findConstraint(c, DefiniteRangeConstraint);\n if (drc) {\n return new SliderTextController(args.document, Object.assign(Object.assign({}, createSliderTextProps(Object.assign(Object.assign({}, textPropsObj), { keyScale: createValue(textPropsObj.keyScale), max: drc.values.value('max'), min: drc.values.value('min') }))), { parser: parseNumber, value: value, viewProps: args.viewProps }));\n }\n return new NumberTextController(args.document, {\n parser: parseNumber,\n props: ValueMap.fromObject(textPropsObj),\n value: value,\n viewProps: args.viewProps,\n });\n },\n api(args) {\n if (typeof args.controller.value.rawValue !== 'number') {\n return null;\n }\n if (args.controller.valueController instanceof SliderTextController) {\n return new SliderInputBindingApi(args.controller);\n }\n if (args.controller.valueController instanceof ListController) {\n return new ListInputBindingApi(args.controller);\n }\n return null;\n },\n});\n\nclass Point2d {\n constructor(x = 0, y = 0) {\n this.x = x;\n this.y = y;\n }\n getComponents() {\n return [this.x, this.y];\n }\n static isObject(obj) {\n if (isEmpty(obj)) {\n return false;\n }\n const x = obj.x;\n const y = obj.y;\n if (typeof x !== 'number' || typeof y !== 'number') {\n return false;\n }\n return true;\n }\n static equals(v1, v2) {\n return v1.x === v2.x && v1.y === v2.y;\n }\n toObject() {\n return {\n x: this.x,\n y: this.y,\n };\n }\n}\nconst Point2dAssembly = {\n toComponents: (p) => p.getComponents(),\n fromComponents: (comps) => new Point2d(...comps),\n};\n\nconst cn$5 = ClassName('p2d');\nclass Point2dView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(cn$5());\n config.viewProps.bindClassModifiers(this.element);\n bindValue(config.expanded, valueToClassName(this.element, cn$5(undefined, 'expanded')));\n const headElem = doc.createElement('div');\n headElem.classList.add(cn$5('h'));\n this.element.appendChild(headElem);\n const buttonElem = doc.createElement('button');\n buttonElem.classList.add(cn$5('b'));\n buttonElem.appendChild(createSvgIconElement(doc, 'p2dpad'));\n config.viewProps.bindDisabled(buttonElem);\n headElem.appendChild(buttonElem);\n this.buttonElement = buttonElem;\n const textElem = doc.createElement('div');\n textElem.classList.add(cn$5('t'));\n headElem.appendChild(textElem);\n this.textElement = textElem;\n if (config.pickerLayout === 'inline') {\n const pickerElem = doc.createElement('div');\n pickerElem.classList.add(cn$5('p'));\n this.element.appendChild(pickerElem);\n this.pickerElement = pickerElem;\n }\n else {\n this.pickerElement = null;\n }\n }\n}\n\nconst cn$4 = ClassName('p2dp');\nclass Point2dPickerView {\n constructor(doc, config) {\n this.onFoldableChange_ = this.onFoldableChange_.bind(this);\n this.onPropsChange_ = this.onPropsChange_.bind(this);\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.props_ = config.props;\n this.props_.emitter.on('change', this.onPropsChange_);\n this.element = doc.createElement('div');\n this.element.classList.add(cn$4());\n if (config.layout === 'popup') {\n this.element.classList.add(cn$4(undefined, 'p'));\n }\n config.viewProps.bindClassModifiers(this.element);\n const padElem = doc.createElement('div');\n padElem.classList.add(cn$4('p'));\n config.viewProps.bindTabIndex(padElem);\n this.element.appendChild(padElem);\n this.padElement = padElem;\n const svgElem = doc.createElementNS(SVG_NS, 'svg');\n svgElem.classList.add(cn$4('g'));\n this.padElement.appendChild(svgElem);\n this.svgElem_ = svgElem;\n const xAxisElem = doc.createElementNS(SVG_NS, 'line');\n xAxisElem.classList.add(cn$4('ax'));\n xAxisElem.setAttributeNS(null, 'x1', '0');\n xAxisElem.setAttributeNS(null, 'y1', '50%');\n xAxisElem.setAttributeNS(null, 'x2', '100%');\n xAxisElem.setAttributeNS(null, 'y2', '50%');\n this.svgElem_.appendChild(xAxisElem);\n const yAxisElem = doc.createElementNS(SVG_NS, 'line');\n yAxisElem.classList.add(cn$4('ax'));\n yAxisElem.setAttributeNS(null, 'x1', '50%');\n yAxisElem.setAttributeNS(null, 'y1', '0');\n yAxisElem.setAttributeNS(null, 'x2', '50%');\n yAxisElem.setAttributeNS(null, 'y2', '100%');\n this.svgElem_.appendChild(yAxisElem);\n const lineElem = doc.createElementNS(SVG_NS, 'line');\n lineElem.classList.add(cn$4('l'));\n lineElem.setAttributeNS(null, 'x1', '50%');\n lineElem.setAttributeNS(null, 'y1', '50%');\n this.svgElem_.appendChild(lineElem);\n this.lineElem_ = lineElem;\n const markerElem = doc.createElement('div');\n markerElem.classList.add(cn$4('m'));\n this.padElement.appendChild(markerElem);\n this.markerElem_ = markerElem;\n config.value.emitter.on('change', this.onValueChange_);\n this.value = config.value;\n this.update_();\n }\n get allFocusableElements() {\n return [this.padElement];\n }\n update_() {\n const [x, y] = this.value.rawValue.getComponents();\n const max = this.props_.get('max');\n const px = mapRange(x, -max, +max, 0, 100);\n const py = mapRange(y, -max, +max, 0, 100);\n const ipy = this.props_.get('invertsY') ? 100 - py : py;\n this.lineElem_.setAttributeNS(null, 'x2', `${px}%`);\n this.lineElem_.setAttributeNS(null, 'y2', `${ipy}%`);\n this.markerElem_.style.left = `${px}%`;\n this.markerElem_.style.top = `${ipy}%`;\n }\n onValueChange_() {\n this.update_();\n }\n onPropsChange_() {\n this.update_();\n }\n onFoldableChange_() {\n this.update_();\n }\n}\n\nfunction computeOffset(ev, keyScales, invertsY) {\n return [\n getStepForKey(keyScales[0], getHorizontalStepKeys(ev)),\n getStepForKey(keyScales[1], getVerticalStepKeys(ev)) * (invertsY ? 1 : -1),\n ];\n}\nclass Point2dPickerController {\n constructor(doc, config) {\n this.onPadKeyDown_ = this.onPadKeyDown_.bind(this);\n this.onPadKeyUp_ = this.onPadKeyUp_.bind(this);\n this.onPointerDown_ = this.onPointerDown_.bind(this);\n this.onPointerMove_ = this.onPointerMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.props = config.props;\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new Point2dPickerView(doc, {\n layout: config.layout,\n props: this.props,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.ptHandler_ = new PointerHandler(this.view.padElement);\n this.ptHandler_.emitter.on('down', this.onPointerDown_);\n this.ptHandler_.emitter.on('move', this.onPointerMove_);\n this.ptHandler_.emitter.on('up', this.onPointerUp_);\n this.view.padElement.addEventListener('keydown', this.onPadKeyDown_);\n this.view.padElement.addEventListener('keyup', this.onPadKeyUp_);\n }\n handlePointerEvent_(d, opts) {\n if (!d.point) {\n return;\n }\n const max = this.props.get('max');\n const px = mapRange(d.point.x, 0, d.bounds.width, -max, +max);\n const py = mapRange(this.props.get('invertsY') ? d.bounds.height - d.point.y : d.point.y, 0, d.bounds.height, -max, +max);\n this.value.setRawValue(new Point2d(px, py), opts);\n }\n onPointerDown_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerMove_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerUp_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: true,\n last: true,\n });\n }\n onPadKeyDown_(ev) {\n if (isArrowKey(ev.key)) {\n ev.preventDefault();\n }\n const [dx, dy] = computeOffset(ev, [this.props.get('xKeyScale'), this.props.get('yKeyScale')], this.props.get('invertsY'));\n if (dx === 0 && dy === 0) {\n return;\n }\n this.value.setRawValue(new Point2d(this.value.rawValue.x + dx, this.value.rawValue.y + dy), {\n forceEmit: false,\n last: false,\n });\n }\n onPadKeyUp_(ev) {\n const [dx, dy] = computeOffset(ev, [this.props.get('xKeyScale'), this.props.get('yKeyScale')], this.props.get('invertsY'));\n if (dx === 0 && dy === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n}\n\nclass Point2dController {\n constructor(doc, config) {\n var _a, _b;\n this.onPopupChildBlur_ = this.onPopupChildBlur_.bind(this);\n this.onPopupChildKeydown_ = this.onPopupChildKeydown_.bind(this);\n this.onPadButtonBlur_ = this.onPadButtonBlur_.bind(this);\n this.onPadButtonClick_ = this.onPadButtonClick_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.foldable_ = Foldable.create(config.expanded);\n this.popC_ =\n config.pickerLayout === 'popup'\n ? new PopupController(doc, {\n viewProps: this.viewProps,\n })\n : null;\n const padC = new Point2dPickerController(doc, {\n layout: config.pickerLayout,\n props: new ValueMap({\n invertsY: createValue(config.invertsY),\n max: createValue(config.max),\n xKeyScale: config.axes[0].textProps.value('keyScale'),\n yKeyScale: config.axes[1].textProps.value('keyScale'),\n }),\n value: this.value,\n viewProps: this.viewProps,\n });\n padC.view.allFocusableElements.forEach((elem) => {\n elem.addEventListener('blur', this.onPopupChildBlur_);\n elem.addEventListener('keydown', this.onPopupChildKeydown_);\n });\n this.pickerC_ = padC;\n this.textC_ = new PointNdTextController(doc, {\n assembly: Point2dAssembly,\n axes: config.axes,\n parser: config.parser,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view = new Point2dView(doc, {\n expanded: this.foldable_.value('expanded'),\n pickerLayout: config.pickerLayout,\n viewProps: this.viewProps,\n });\n this.view.textElement.appendChild(this.textC_.view.element);\n (_a = this.view.buttonElement) === null || _a === void 0 ? void 0 : _a.addEventListener('blur', this.onPadButtonBlur_);\n (_b = this.view.buttonElement) === null || _b === void 0 ? void 0 : _b.addEventListener('click', this.onPadButtonClick_);\n if (this.popC_) {\n this.view.element.appendChild(this.popC_.view.element);\n this.popC_.view.element.appendChild(this.pickerC_.view.element);\n connectValues({\n primary: this.foldable_.value('expanded'),\n secondary: this.popC_.shows,\n forward: (p) => p,\n backward: (_, s) => s,\n });\n }\n else if (this.view.pickerElement) {\n this.view.pickerElement.appendChild(this.pickerC_.view.element);\n bindFoldable(this.foldable_, this.view.pickerElement);\n }\n }\n get textController() {\n return this.textC_;\n }\n onPadButtonBlur_(e) {\n if (!this.popC_) {\n return;\n }\n const elem = this.view.element;\n const nextTarget = forceCast(e.relatedTarget);\n if (!nextTarget || !elem.contains(nextTarget)) {\n this.popC_.shows.rawValue = false;\n }\n }\n onPadButtonClick_() {\n this.foldable_.set('expanded', !this.foldable_.get('expanded'));\n if (this.foldable_.get('expanded')) {\n this.pickerC_.view.allFocusableElements[0].focus();\n }\n }\n onPopupChildBlur_(ev) {\n if (!this.popC_) {\n return;\n }\n const elem = this.popC_.view.element;\n const nextTarget = findNextTarget(ev);\n if (nextTarget && elem.contains(nextTarget)) {\n return;\n }\n if (nextTarget &&\n nextTarget === this.view.buttonElement &&\n !supportsTouch(elem.ownerDocument)) {\n return;\n }\n this.popC_.shows.rawValue = false;\n }\n onPopupChildKeydown_(ev) {\n if (this.popC_) {\n if (ev.key === 'Escape') {\n this.popC_.shows.rawValue = false;\n }\n }\n else if (this.view.pickerElement) {\n if (ev.key === 'Escape') {\n this.view.buttonElement.focus();\n }\n }\n }\n}\n\nfunction point2dFromUnknown(value) {\n return Point2d.isObject(value)\n ? new Point2d(value.x, value.y)\n : new Point2d();\n}\nfunction writePoint2d(target, value) {\n target.writeProperty('x', value.x);\n target.writeProperty('y', value.y);\n}\n\nfunction createConstraint$3(params, initialValue) {\n return new PointNdConstraint({\n assembly: Point2dAssembly,\n components: [\n createDimensionConstraint(Object.assign(Object.assign({}, params), params.x), initialValue.x),\n createDimensionConstraint(Object.assign(Object.assign({}, params), params.y), initialValue.y),\n ],\n });\n}\nfunction getSuitableMaxDimensionValue(params, rawValue) {\n var _a, _b;\n if (!isEmpty(params.min) || !isEmpty(params.max)) {\n return Math.max(Math.abs((_a = params.min) !== null && _a !== void 0 ? _a : 0), Math.abs((_b = params.max) !== null && _b !== void 0 ? _b : 0));\n }\n const step = getSuitableKeyScale(params);\n return Math.max(Math.abs(step) * 10, Math.abs(rawValue) * 10);\n}\nfunction getSuitableMax(params, initialValue) {\n var _a, _b;\n const xr = getSuitableMaxDimensionValue(deepMerge(params, ((_a = params.x) !== null && _a !== void 0 ? _a : {})), initialValue.x);\n const yr = getSuitableMaxDimensionValue(deepMerge(params, ((_b = params.y) !== null && _b !== void 0 ? _b : {})), initialValue.y);\n return Math.max(xr, yr);\n}\nfunction shouldInvertY(params) {\n if (!('y' in params)) {\n return false;\n }\n const yParams = params.y;\n if (!yParams) {\n return false;\n }\n return 'inverted' in yParams ? !!yParams.inverted : false;\n}\nconst Point2dInputPlugin = createPlugin({\n id: 'input-point2d',\n type: 'input',\n accept: (value, params) => {\n if (!Point2d.isObject(value)) {\n return null;\n }\n const result = parseRecord(params, (p) => (Object.assign(Object.assign({}, createPointDimensionParser(p)), { expanded: p.optional.boolean, picker: p.optional.custom(parsePickerLayout), readonly: p.optional.constant(false), x: p.optional.custom(parsePointDimensionParams), y: p.optional.object(Object.assign(Object.assign({}, createPointDimensionParser(p)), { inverted: p.optional.boolean })) })));\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: () => point2dFromUnknown,\n constraint: (args) => createConstraint$3(args.params, args.initialValue),\n equals: Point2d.equals,\n writer: () => writePoint2d,\n },\n controller: (args) => {\n var _a, _b;\n const doc = args.document;\n const value = args.value;\n const c = args.constraint;\n const dParams = [args.params.x, args.params.y];\n return new Point2dController(doc, {\n axes: value.rawValue.getComponents().map((comp, i) => {\n var _a;\n return createPointAxis({\n constraint: c.components[i],\n initialValue: comp,\n params: deepMerge(args.params, ((_a = dParams[i]) !== null && _a !== void 0 ? _a : {})),\n });\n }),\n expanded: (_a = args.params.expanded) !== null && _a !== void 0 ? _a : false,\n invertsY: shouldInvertY(args.params),\n max: getSuitableMax(args.params, value.rawValue),\n parser: parseNumber,\n pickerLayout: (_b = args.params.picker) !== null && _b !== void 0 ? _b : 'popup',\n value: value,\n viewProps: args.viewProps,\n });\n },\n});\n\nclass Point3d {\n constructor(x = 0, y = 0, z = 0) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n getComponents() {\n return [this.x, this.y, this.z];\n }\n static isObject(obj) {\n if (isEmpty(obj)) {\n return false;\n }\n const x = obj.x;\n const y = obj.y;\n const z = obj.z;\n if (typeof x !== 'number' ||\n typeof y !== 'number' ||\n typeof z !== 'number') {\n return false;\n }\n return true;\n }\n static equals(v1, v2) {\n return v1.x === v2.x && v1.y === v2.y && v1.z === v2.z;\n }\n toObject() {\n return {\n x: this.x,\n y: this.y,\n z: this.z,\n };\n }\n}\nconst Point3dAssembly = {\n toComponents: (p) => p.getComponents(),\n fromComponents: (comps) => new Point3d(...comps),\n};\n\nfunction point3dFromUnknown(value) {\n return Point3d.isObject(value)\n ? new Point3d(value.x, value.y, value.z)\n : new Point3d();\n}\nfunction writePoint3d(target, value) {\n target.writeProperty('x', value.x);\n target.writeProperty('y', value.y);\n target.writeProperty('z', value.z);\n}\n\nfunction createConstraint$2(params, initialValue) {\n return new PointNdConstraint({\n assembly: Point3dAssembly,\n components: [\n createDimensionConstraint(Object.assign(Object.assign({}, params), params.x), initialValue.x),\n createDimensionConstraint(Object.assign(Object.assign({}, params), params.y), initialValue.y),\n createDimensionConstraint(Object.assign(Object.assign({}, params), params.z), initialValue.z),\n ],\n });\n}\nconst Point3dInputPlugin = createPlugin({\n id: 'input-point3d',\n type: 'input',\n accept: (value, params) => {\n if (!Point3d.isObject(value)) {\n return null;\n }\n const result = parseRecord(params, (p) => (Object.assign(Object.assign({}, createPointDimensionParser(p)), { readonly: p.optional.constant(false), x: p.optional.custom(parsePointDimensionParams), y: p.optional.custom(parsePointDimensionParams), z: p.optional.custom(parsePointDimensionParams) })));\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => point3dFromUnknown,\n constraint: (args) => createConstraint$2(args.params, args.initialValue),\n equals: Point3d.equals,\n writer: (_args) => writePoint3d,\n },\n controller: (args) => {\n const value = args.value;\n const c = args.constraint;\n const dParams = [args.params.x, args.params.y, args.params.z];\n return new PointNdTextController(args.document, {\n assembly: Point3dAssembly,\n axes: value.rawValue.getComponents().map((comp, i) => {\n var _a;\n return createPointAxis({\n constraint: c.components[i],\n initialValue: comp,\n params: deepMerge(args.params, ((_a = dParams[i]) !== null && _a !== void 0 ? _a : {})),\n });\n }),\n parser: parseNumber,\n value: value,\n viewProps: args.viewProps,\n });\n },\n});\n\nclass Point4d {\n constructor(x = 0, y = 0, z = 0, w = 0) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n }\n getComponents() {\n return [this.x, this.y, this.z, this.w];\n }\n static isObject(obj) {\n if (isEmpty(obj)) {\n return false;\n }\n const x = obj.x;\n const y = obj.y;\n const z = obj.z;\n const w = obj.w;\n if (typeof x !== 'number' ||\n typeof y !== 'number' ||\n typeof z !== 'number' ||\n typeof w !== 'number') {\n return false;\n }\n return true;\n }\n static equals(v1, v2) {\n return v1.x === v2.x && v1.y === v2.y && v1.z === v2.z && v1.w === v2.w;\n }\n toObject() {\n return {\n x: this.x,\n y: this.y,\n z: this.z,\n w: this.w,\n };\n }\n}\nconst Point4dAssembly = {\n toComponents: (p) => p.getComponents(),\n fromComponents: (comps) => new Point4d(...comps),\n};\n\nfunction point4dFromUnknown(value) {\n return Point4d.isObject(value)\n ? new Point4d(value.x, value.y, value.z, value.w)\n : new Point4d();\n}\nfunction writePoint4d(target, value) {\n target.writeProperty('x', value.x);\n target.writeProperty('y', value.y);\n target.writeProperty('z', value.z);\n target.writeProperty('w', value.w);\n}\n\nfunction createConstraint$1(params, initialValue) {\n return new PointNdConstraint({\n assembly: Point4dAssembly,\n components: [\n createDimensionConstraint(Object.assign(Object.assign({}, params), params.x), initialValue.x),\n createDimensionConstraint(Object.assign(Object.assign({}, params), params.y), initialValue.y),\n createDimensionConstraint(Object.assign(Object.assign({}, params), params.z), initialValue.z),\n createDimensionConstraint(Object.assign(Object.assign({}, params), params.w), initialValue.w),\n ],\n });\n}\nconst Point4dInputPlugin = createPlugin({\n id: 'input-point4d',\n type: 'input',\n accept: (value, params) => {\n if (!Point4d.isObject(value)) {\n return null;\n }\n const result = parseRecord(params, (p) => (Object.assign(Object.assign({}, createPointDimensionParser(p)), { readonly: p.optional.constant(false), w: p.optional.custom(parsePointDimensionParams), x: p.optional.custom(parsePointDimensionParams), y: p.optional.custom(parsePointDimensionParams), z: p.optional.custom(parsePointDimensionParams) })));\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => point4dFromUnknown,\n constraint: (args) => createConstraint$1(args.params, args.initialValue),\n equals: Point4d.equals,\n writer: (_args) => writePoint4d,\n },\n controller: (args) => {\n const value = args.value;\n const c = args.constraint;\n const dParams = [\n args.params.x,\n args.params.y,\n args.params.z,\n args.params.w,\n ];\n return new PointNdTextController(args.document, {\n assembly: Point4dAssembly,\n axes: value.rawValue.getComponents().map((comp, i) => {\n var _a;\n return createPointAxis({\n constraint: c.components[i],\n initialValue: comp,\n params: deepMerge(args.params, ((_a = dParams[i]) !== null && _a !== void 0 ? _a : {})),\n });\n }),\n parser: parseNumber,\n value: value,\n viewProps: args.viewProps,\n });\n },\n});\n\nfunction createConstraint(params) {\n const constraints = [];\n const lc = createListConstraint(params.options);\n if (lc) {\n constraints.push(lc);\n }\n return new CompositeConstraint(constraints);\n}\nconst StringInputPlugin = createPlugin({\n id: 'input-string',\n type: 'input',\n accept: (value, params) => {\n if (typeof value !== 'string') {\n return null;\n }\n const result = parseRecord(params, (p) => ({\n readonly: p.optional.constant(false),\n options: p.optional.custom(parseListOptions),\n }));\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => stringFromUnknown,\n constraint: (args) => createConstraint(args.params),\n writer: (_args) => writePrimitive,\n },\n controller: (args) => {\n const doc = args.document;\n const value = args.value;\n const c = args.constraint;\n const lc = c && findConstraint(c, ListConstraint);\n if (lc) {\n return new ListController(doc, {\n props: new ValueMap({\n options: lc.values.value('options'),\n }),\n value: value,\n viewProps: args.viewProps,\n });\n }\n return new TextController(doc, {\n parser: (v) => v,\n props: ValueMap.fromObject({\n formatter: formatString,\n }),\n value: value,\n viewProps: args.viewProps,\n });\n },\n api(args) {\n if (typeof args.controller.value.rawValue !== 'string') {\n return null;\n }\n if (args.controller.valueController instanceof ListController) {\n return new ListInputBindingApi(args.controller);\n }\n return null;\n },\n});\n\nconst Constants = {\n monitor: {\n defaultInterval: 200,\n defaultRows: 3,\n },\n};\n\nconst cn$3 = ClassName('mll');\nclass MultiLogView {\n constructor(doc, config) {\n this.onValueUpdate_ = this.onValueUpdate_.bind(this);\n this.formatter_ = config.formatter;\n this.element = doc.createElement('div');\n this.element.classList.add(cn$3());\n config.viewProps.bindClassModifiers(this.element);\n const textareaElem = doc.createElement('textarea');\n textareaElem.classList.add(cn$3('i'));\n textareaElem.style.height = `calc(var(${getCssVar('containerUnitSize')}) * ${config.rows})`;\n textareaElem.readOnly = true;\n config.viewProps.bindDisabled(textareaElem);\n this.element.appendChild(textareaElem);\n this.textareaElem_ = textareaElem;\n config.value.emitter.on('change', this.onValueUpdate_);\n this.value = config.value;\n this.update_();\n }\n update_() {\n const elem = this.textareaElem_;\n const shouldScroll = elem.scrollTop === elem.scrollHeight - elem.clientHeight;\n const lines = [];\n this.value.rawValue.forEach((value) => {\n if (value !== undefined) {\n lines.push(this.formatter_(value));\n }\n });\n elem.textContent = lines.join('\\n');\n if (shouldScroll) {\n elem.scrollTop = elem.scrollHeight;\n }\n }\n onValueUpdate_() {\n this.update_();\n }\n}\n\nclass MultiLogController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new MultiLogView(doc, {\n formatter: config.formatter,\n rows: config.rows,\n value: this.value,\n viewProps: this.viewProps,\n });\n }\n}\n\nconst cn$2 = ClassName('sgl');\nclass SingleLogView {\n constructor(doc, config) {\n this.onValueUpdate_ = this.onValueUpdate_.bind(this);\n this.formatter_ = config.formatter;\n this.element = doc.createElement('div');\n this.element.classList.add(cn$2());\n config.viewProps.bindClassModifiers(this.element);\n const inputElem = doc.createElement('input');\n inputElem.classList.add(cn$2('i'));\n inputElem.readOnly = true;\n inputElem.type = 'text';\n config.viewProps.bindDisabled(inputElem);\n this.element.appendChild(inputElem);\n this.inputElement = inputElem;\n config.value.emitter.on('change', this.onValueUpdate_);\n this.value = config.value;\n this.update_();\n }\n update_() {\n const values = this.value.rawValue;\n const lastValue = values[values.length - 1];\n this.inputElement.value =\n lastValue !== undefined ? this.formatter_(lastValue) : '';\n }\n onValueUpdate_() {\n this.update_();\n }\n}\n\nclass SingleLogController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new SingleLogView(doc, {\n formatter: config.formatter,\n value: this.value,\n viewProps: this.viewProps,\n });\n }\n}\n\nconst BooleanMonitorPlugin = createPlugin({\n id: 'monitor-bool',\n type: 'monitor',\n accept: (value, params) => {\n if (typeof value !== 'boolean') {\n return null;\n }\n const result = parseRecord(params, (p) => ({\n readonly: p.required.constant(true),\n rows: p.optional.number,\n }));\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => boolFromUnknown,\n },\n controller: (args) => {\n var _a;\n if (args.value.rawValue.length === 1) {\n return new SingleLogController(args.document, {\n formatter: BooleanFormatter,\n value: args.value,\n viewProps: args.viewProps,\n });\n }\n return new MultiLogController(args.document, {\n formatter: BooleanFormatter,\n rows: (_a = args.params.rows) !== null && _a !== void 0 ? _a : Constants.monitor.defaultRows,\n value: args.value,\n viewProps: args.viewProps,\n });\n },\n});\n\nclass GraphLogMonitorBindingApi extends BindingApi {\n get max() {\n return this.controller.valueController.props.get('max');\n }\n set max(max) {\n this.controller.valueController.props.set('max', max);\n }\n get min() {\n return this.controller.valueController.props.get('min');\n }\n set min(min) {\n this.controller.valueController.props.set('min', min);\n }\n}\n\nconst cn$1 = ClassName('grl');\nclass GraphLogView {\n constructor(doc, config) {\n this.onCursorChange_ = this.onCursorChange_.bind(this);\n this.onValueUpdate_ = this.onValueUpdate_.bind(this);\n this.element = doc.createElement('div');\n this.element.classList.add(cn$1());\n config.viewProps.bindClassModifiers(this.element);\n this.formatter_ = config.formatter;\n this.props_ = config.props;\n this.cursor_ = config.cursor;\n this.cursor_.emitter.on('change', this.onCursorChange_);\n const svgElem = doc.createElementNS(SVG_NS, 'svg');\n svgElem.classList.add(cn$1('g'));\n svgElem.style.height = `calc(var(${getCssVar('containerUnitSize')}) * ${config.rows})`;\n this.element.appendChild(svgElem);\n this.svgElem_ = svgElem;\n const lineElem = doc.createElementNS(SVG_NS, 'polyline');\n this.svgElem_.appendChild(lineElem);\n this.lineElem_ = lineElem;\n const tooltipElem = doc.createElement('div');\n tooltipElem.classList.add(cn$1('t'), ClassName('tt')());\n this.element.appendChild(tooltipElem);\n this.tooltipElem_ = tooltipElem;\n config.value.emitter.on('change', this.onValueUpdate_);\n this.value = config.value;\n this.update_();\n }\n get graphElement() {\n return this.svgElem_;\n }\n update_() {\n const { clientWidth: w, clientHeight: h } = this.element;\n const maxIndex = this.value.rawValue.length - 1;\n const min = this.props_.get('min');\n const max = this.props_.get('max');\n const points = [];\n this.value.rawValue.forEach((v, index) => {\n if (v === undefined) {\n return;\n }\n const x = mapRange(index, 0, maxIndex, 0, w);\n const y = mapRange(v, min, max, h, 0);\n points.push([x, y].join(','));\n });\n this.lineElem_.setAttributeNS(null, 'points', points.join(' '));\n const tooltipElem = this.tooltipElem_;\n const value = this.value.rawValue[this.cursor_.rawValue];\n if (value === undefined) {\n tooltipElem.classList.remove(cn$1('t', 'a'));\n return;\n }\n const tx = mapRange(this.cursor_.rawValue, 0, maxIndex, 0, w);\n const ty = mapRange(value, min, max, h, 0);\n tooltipElem.style.left = `${tx}px`;\n tooltipElem.style.top = `${ty}px`;\n tooltipElem.textContent = `${this.formatter_(value)}`;\n if (!tooltipElem.classList.contains(cn$1('t', 'a'))) {\n tooltipElem.classList.add(cn$1('t', 'a'), cn$1('t', 'in'));\n forceReflow(tooltipElem);\n tooltipElem.classList.remove(cn$1('t', 'in'));\n }\n }\n onValueUpdate_() {\n this.update_();\n }\n onCursorChange_() {\n this.update_();\n }\n}\n\nclass GraphLogController {\n constructor(doc, config) {\n this.onGraphMouseMove_ = this.onGraphMouseMove_.bind(this);\n this.onGraphMouseLeave_ = this.onGraphMouseLeave_.bind(this);\n this.onGraphPointerDown_ = this.onGraphPointerDown_.bind(this);\n this.onGraphPointerMove_ = this.onGraphPointerMove_.bind(this);\n this.onGraphPointerUp_ = this.onGraphPointerUp_.bind(this);\n this.props = config.props;\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.cursor_ = createValue(-1);\n this.view = new GraphLogView(doc, {\n cursor: this.cursor_,\n formatter: config.formatter,\n rows: config.rows,\n props: this.props,\n value: this.value,\n viewProps: this.viewProps,\n });\n if (!supportsTouch(doc)) {\n this.view.element.addEventListener('mousemove', this.onGraphMouseMove_);\n this.view.element.addEventListener('mouseleave', this.onGraphMouseLeave_);\n }\n else {\n const ph = new PointerHandler(this.view.element);\n ph.emitter.on('down', this.onGraphPointerDown_);\n ph.emitter.on('move', this.onGraphPointerMove_);\n ph.emitter.on('up', this.onGraphPointerUp_);\n }\n }\n importProps(state) {\n return importBladeState(state, null, (p) => ({\n max: p.required.number,\n min: p.required.number,\n }), (result) => {\n this.props.set('max', result.max);\n this.props.set('min', result.min);\n return true;\n });\n }\n exportProps() {\n return exportBladeState(null, {\n max: this.props.get('max'),\n min: this.props.get('min'),\n });\n }\n onGraphMouseLeave_() {\n this.cursor_.rawValue = -1;\n }\n onGraphMouseMove_(ev) {\n const { clientWidth: w } = this.view.element;\n this.cursor_.rawValue = Math.floor(mapRange(ev.offsetX, 0, w, 0, this.value.rawValue.length));\n }\n onGraphPointerDown_(ev) {\n this.onGraphPointerMove_(ev);\n }\n onGraphPointerMove_(ev) {\n if (!ev.data.point) {\n this.cursor_.rawValue = -1;\n return;\n }\n this.cursor_.rawValue = Math.floor(mapRange(ev.data.point.x, 0, ev.data.bounds.width, 0, this.value.rawValue.length));\n }\n onGraphPointerUp_() {\n this.cursor_.rawValue = -1;\n }\n}\n\nfunction createFormatter(params) {\n return !isEmpty(params.format) ? params.format : createNumberFormatter(2);\n}\nfunction createTextMonitor(args) {\n var _a;\n if (args.value.rawValue.length === 1) {\n return new SingleLogController(args.document, {\n formatter: createFormatter(args.params),\n value: args.value,\n viewProps: args.viewProps,\n });\n }\n return new MultiLogController(args.document, {\n formatter: createFormatter(args.params),\n rows: (_a = args.params.rows) !== null && _a !== void 0 ? _a : Constants.monitor.defaultRows,\n value: args.value,\n viewProps: args.viewProps,\n });\n}\nfunction createGraphMonitor(args) {\n var _a, _b, _c;\n return new GraphLogController(args.document, {\n formatter: createFormatter(args.params),\n rows: (_a = args.params.rows) !== null && _a !== void 0 ? _a : Constants.monitor.defaultRows,\n props: ValueMap.fromObject({\n max: (_b = args.params.max) !== null && _b !== void 0 ? _b : 100,\n min: (_c = args.params.min) !== null && _c !== void 0 ? _c : 0,\n }),\n value: args.value,\n viewProps: args.viewProps,\n });\n}\nfunction shouldShowGraph(params) {\n return params.view === 'graph';\n}\nconst NumberMonitorPlugin = createPlugin({\n id: 'monitor-number',\n type: 'monitor',\n accept: (value, params) => {\n if (typeof value !== 'number') {\n return null;\n }\n const result = parseRecord(params, (p) => ({\n format: p.optional.function,\n max: p.optional.number,\n min: p.optional.number,\n readonly: p.required.constant(true),\n rows: p.optional.number,\n view: p.optional.string,\n }));\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n defaultBufferSize: (params) => (shouldShowGraph(params) ? 64 : 1),\n reader: (_args) => numberFromUnknown,\n },\n controller: (args) => {\n if (shouldShowGraph(args.params)) {\n return createGraphMonitor(args);\n }\n return createTextMonitor(args);\n },\n api: (args) => {\n if (args.controller.valueController instanceof GraphLogController) {\n return new GraphLogMonitorBindingApi(args.controller);\n }\n return null;\n },\n});\n\nconst StringMonitorPlugin = createPlugin({\n id: 'monitor-string',\n type: 'monitor',\n accept: (value, params) => {\n if (typeof value !== 'string') {\n return null;\n }\n const result = parseRecord(params, (p) => ({\n multiline: p.optional.boolean,\n readonly: p.required.constant(true),\n rows: p.optional.number,\n }));\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => stringFromUnknown,\n },\n controller: (args) => {\n var _a;\n const value = args.value;\n const multiline = value.rawValue.length > 1 || args.params.multiline;\n if (multiline) {\n return new MultiLogController(args.document, {\n formatter: formatString,\n rows: (_a = args.params.rows) !== null && _a !== void 0 ? _a : Constants.monitor.defaultRows,\n value: value,\n viewProps: args.viewProps,\n });\n }\n return new SingleLogController(args.document, {\n formatter: formatString,\n value: value,\n viewProps: args.viewProps,\n });\n },\n});\n\nclass BladeApiCache {\n constructor() {\n this.map_ = new Map();\n }\n get(bc) {\n var _a;\n return (_a = this.map_.get(bc)) !== null && _a !== void 0 ? _a : null;\n }\n has(bc) {\n return this.map_.has(bc);\n }\n add(bc, api) {\n this.map_.set(bc, api);\n bc.viewProps.handleDispose(() => {\n this.map_.delete(bc);\n });\n return api;\n }\n}\n\nclass ReadWriteBinding {\n constructor(config) {\n this.target = config.target;\n this.reader_ = config.reader;\n this.writer_ = config.writer;\n }\n read() {\n return this.reader_(this.target.read());\n }\n write(value) {\n this.writer_(this.target, value);\n }\n inject(value) {\n this.write(this.reader_(value));\n }\n}\n\nfunction createInputBindingController(plugin, args) {\n var _a;\n const result = plugin.accept(args.target.read(), args.params);\n if (isEmpty(result)) {\n return null;\n }\n const valueArgs = {\n target: args.target,\n initialValue: result.initialValue,\n params: result.params,\n };\n const params = parseRecord(args.params, (p) => ({\n disabled: p.optional.boolean,\n hidden: p.optional.boolean,\n label: p.optional.string,\n tag: p.optional.string,\n }));\n const reader = plugin.binding.reader(valueArgs);\n const constraint = plugin.binding.constraint\n ? plugin.binding.constraint(valueArgs)\n : undefined;\n const binding = new ReadWriteBinding({\n reader: reader,\n target: args.target,\n writer: plugin.binding.writer(valueArgs),\n });\n const value = new InputBindingValue(createValue(reader(result.initialValue), {\n constraint: constraint,\n equals: plugin.binding.equals,\n }), binding);\n const controller = plugin.controller({\n constraint: constraint,\n document: args.document,\n initialValue: result.initialValue,\n params: result.params,\n value: value,\n viewProps: ViewProps.create({\n disabled: params === null || params === void 0 ? void 0 : params.disabled,\n hidden: params === null || params === void 0 ? void 0 : params.hidden,\n }),\n });\n return new InputBindingController(args.document, {\n blade: createBlade(),\n props: ValueMap.fromObject({\n label: 'label' in args.params ? (_a = params === null || params === void 0 ? void 0 : params.label) !== null && _a !== void 0 ? _a : null : args.target.key,\n }),\n tag: params === null || params === void 0 ? void 0 : params.tag,\n value: value,\n valueController: controller,\n });\n}\n\nclass ReadonlyBinding {\n constructor(config) {\n this.target = config.target;\n this.reader_ = config.reader;\n }\n read() {\n return this.reader_(this.target.read());\n }\n}\n\nfunction createTicker(document, interval) {\n return interval === 0\n ? new ManualTicker()\n : new IntervalTicker(document, interval !== null && interval !== void 0 ? interval : Constants.monitor.defaultInterval);\n}\nfunction createMonitorBindingController(plugin, args) {\n var _a, _b, _c;\n const result = plugin.accept(args.target.read(), args.params);\n if (isEmpty(result)) {\n return null;\n }\n const bindingArgs = {\n target: args.target,\n initialValue: result.initialValue,\n params: result.params,\n };\n const params = parseRecord(args.params, (p) => ({\n bufferSize: p.optional.number,\n disabled: p.optional.boolean,\n hidden: p.optional.boolean,\n interval: p.optional.number,\n label: p.optional.string,\n }));\n const reader = plugin.binding.reader(bindingArgs);\n const bufferSize = (_b = (_a = params === null || params === void 0 ? void 0 : params.bufferSize) !== null && _a !== void 0 ? _a : (plugin.binding.defaultBufferSize &&\n plugin.binding.defaultBufferSize(result.params))) !== null && _b !== void 0 ? _b : 1;\n const value = new MonitorBindingValue({\n binding: new ReadonlyBinding({\n reader: reader,\n target: args.target,\n }),\n bufferSize: bufferSize,\n ticker: createTicker(args.document, params === null || params === void 0 ? void 0 : params.interval),\n });\n const controller = plugin.controller({\n document: args.document,\n params: result.params,\n value: value,\n viewProps: ViewProps.create({\n disabled: params === null || params === void 0 ? void 0 : params.disabled,\n hidden: params === null || params === void 0 ? void 0 : params.hidden,\n }),\n });\n controller.viewProps.bindDisabled(value.ticker);\n controller.viewProps.handleDispose(() => {\n value.ticker.dispose();\n });\n return new MonitorBindingController(args.document, {\n blade: createBlade(),\n props: ValueMap.fromObject({\n label: 'label' in args.params ? (_c = params === null || params === void 0 ? void 0 : params.label) !== null && _c !== void 0 ? _c : null : args.target.key,\n }),\n value: value,\n valueController: controller,\n });\n}\n\nclass PluginPool {\n constructor(apiCache) {\n this.pluginsMap_ = {\n blades: [],\n inputs: [],\n monitors: [],\n };\n this.apiCache_ = apiCache;\n }\n getAll() {\n return [\n ...this.pluginsMap_.blades,\n ...this.pluginsMap_.inputs,\n ...this.pluginsMap_.monitors,\n ];\n }\n register(bundleId, r) {\n if (!isCompatible(r.core)) {\n throw TpError.notCompatible(bundleId, r.id);\n }\n if (r.type === 'blade') {\n this.pluginsMap_.blades.unshift(r);\n }\n else if (r.type === 'input') {\n this.pluginsMap_.inputs.unshift(r);\n }\n else if (r.type === 'monitor') {\n this.pluginsMap_.monitors.unshift(r);\n }\n }\n createInput_(document, target, params) {\n return this.pluginsMap_.inputs.reduce((result, plugin) => result !== null && result !== void 0 ? result : createInputBindingController(plugin, {\n document: document,\n target: target,\n params: params,\n }), null);\n }\n createMonitor_(document, target, params) {\n return this.pluginsMap_.monitors.reduce((result, plugin) => result !== null && result !== void 0 ? result : createMonitorBindingController(plugin, {\n document: document,\n params: params,\n target: target,\n }), null);\n }\n createBinding(doc, target, params) {\n const initialValue = target.read();\n if (isEmpty(initialValue)) {\n throw new TpError({\n context: {\n key: target.key,\n },\n type: 'nomatchingcontroller',\n });\n }\n const ic = this.createInput_(doc, target, params);\n if (ic) {\n return ic;\n }\n const mc = this.createMonitor_(doc, target, params);\n if (mc) {\n return mc;\n }\n throw new TpError({\n context: {\n key: target.key,\n },\n type: 'nomatchingcontroller',\n });\n }\n createBlade(document, params) {\n const bc = this.pluginsMap_.blades.reduce((result, plugin) => result !== null && result !== void 0 ? result : createBladeController(plugin, {\n document: document,\n params: params,\n }), null);\n if (!bc) {\n throw new TpError({\n type: 'nomatchingview',\n context: {\n params: params,\n },\n });\n }\n return bc;\n }\n createInputBindingApi_(bc) {\n const api = this.pluginsMap_.inputs.reduce((result, plugin) => {\n var _a, _b;\n if (result) {\n return result;\n }\n return ((_b = (_a = plugin.api) === null || _a === void 0 ? void 0 : _a.call(plugin, {\n controller: bc,\n })) !== null && _b !== void 0 ? _b : null);\n }, null);\n return this.apiCache_.add(bc, api !== null && api !== void 0 ? api : new BindingApi(bc));\n }\n createMonitorBindingApi_(bc) {\n const api = this.pluginsMap_.monitors.reduce((result, plugin) => {\n var _a, _b;\n if (result) {\n return result;\n }\n return ((_b = (_a = plugin.api) === null || _a === void 0 ? void 0 : _a.call(plugin, {\n controller: bc,\n })) !== null && _b !== void 0 ? _b : null);\n }, null);\n return this.apiCache_.add(bc, api !== null && api !== void 0 ? api : new BindingApi(bc));\n }\n createBindingApi(bc) {\n if (this.apiCache_.has(bc)) {\n return this.apiCache_.get(bc);\n }\n if (isInputBindingController(bc)) {\n return this.createInputBindingApi_(bc);\n }\n if (isMonitorBindingController(bc)) {\n return this.createMonitorBindingApi_(bc);\n }\n throw TpError.shouldNeverHappen();\n }\n createApi(bc) {\n if (this.apiCache_.has(bc)) {\n return this.apiCache_.get(bc);\n }\n if (isBindingController(bc)) {\n return this.createBindingApi(bc);\n }\n const api = this.pluginsMap_.blades.reduce((result, plugin) => result !== null && result !== void 0 ? result : plugin.api({\n controller: bc,\n pool: this,\n }), null);\n if (!api) {\n throw TpError.shouldNeverHappen();\n }\n return this.apiCache_.add(bc, api);\n }\n}\n\nconst sharedCache = new BladeApiCache();\nfunction createDefaultPluginPool() {\n const pool = new PluginPool(sharedCache);\n [\n Point2dInputPlugin,\n Point3dInputPlugin,\n Point4dInputPlugin,\n StringInputPlugin,\n NumberInputPlugin,\n StringColorInputPlugin,\n ObjectColorInputPlugin,\n NumberColorInputPlugin,\n BooleanInputPlugin,\n BooleanMonitorPlugin,\n StringMonitorPlugin,\n NumberMonitorPlugin,\n ButtonBladePlugin,\n FolderBladePlugin,\n TabBladePlugin,\n ].forEach((p) => {\n pool.register('core', p);\n });\n return pool;\n}\n\nclass ListBladeApi extends BladeApi {\n /**\n * @hidden\n */\n constructor(controller) {\n super(controller);\n this.emitter_ = new Emitter();\n this.controller.value.emitter.on('change', (ev) => {\n this.emitter_.emit('change', new TpChangeEvent(this, ev.rawValue));\n });\n }\n get label() {\n return this.controller.labelController.props.get('label');\n }\n set label(label) {\n this.controller.labelController.props.set('label', label);\n }\n get options() {\n return this.controller.valueController.props.get('options');\n }\n set options(options) {\n this.controller.valueController.props.set('options', options);\n }\n get value() {\n return this.controller.value.rawValue;\n }\n set value(value) {\n this.controller.value.rawValue = value;\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev);\n }, {\n key: handler,\n });\n return this;\n }\n off(eventName, handler) {\n this.emitter_.off(eventName, handler);\n return this;\n }\n}\n\nclass SeparatorBladeApi extends BladeApi {\n}\n\nclass SliderBladeApi extends BladeApi {\n /**\n * @hidden\n */\n constructor(controller) {\n super(controller);\n this.emitter_ = new Emitter();\n this.controller.value.emitter.on('change', (ev) => {\n this.emitter_.emit('change', new TpChangeEvent(this, ev.rawValue));\n });\n }\n get label() {\n return this.controller.labelController.props.get('label');\n }\n set label(label) {\n this.controller.labelController.props.set('label', label);\n }\n get max() {\n return this.controller.valueController.sliderController.props.get('max');\n }\n set max(max) {\n this.controller.valueController.sliderController.props.set('max', max);\n }\n get min() {\n return this.controller.valueController.sliderController.props.get('min');\n }\n set min(min) {\n this.controller.valueController.sliderController.props.set('min', min);\n }\n get value() {\n return this.controller.value.rawValue;\n }\n set value(value) {\n this.controller.value.rawValue = value;\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev);\n }, {\n key: handler,\n });\n return this;\n }\n off(eventName, handler) {\n this.emitter_.off(eventName, handler);\n return this;\n }\n}\n\nclass TextBladeApi extends BladeApi {\n /**\n * @hidden\n */\n constructor(controller) {\n super(controller);\n this.emitter_ = new Emitter();\n this.controller.value.emitter.on('change', (ev) => {\n this.emitter_.emit('change', new TpChangeEvent(this, ev.rawValue));\n });\n }\n get label() {\n return this.controller.labelController.props.get('label');\n }\n set label(label) {\n this.controller.labelController.props.set('label', label);\n }\n get formatter() {\n return this.controller.valueController.props.get('formatter');\n }\n set formatter(formatter) {\n this.controller.valueController.props.set('formatter', formatter);\n }\n get value() {\n return this.controller.value.rawValue;\n }\n set value(value) {\n this.controller.value.rawValue = value;\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev);\n }, {\n key: handler,\n });\n return this;\n }\n off(eventName, handler) {\n this.emitter_.off(eventName, handler);\n return this;\n }\n}\n\nconst ListBladePlugin = (function () {\n return {\n id: 'list',\n type: 'blade',\n core: VERSION$1,\n accept(params) {\n const result = parseRecord(params, (p) => ({\n options: p.required.custom(parseListOptions),\n value: p.required.raw,\n view: p.required.constant('list'),\n label: p.optional.string,\n }));\n return result ? { params: result } : null;\n },\n controller(args) {\n const lc = new ListConstraint(normalizeListOptions(args.params.options));\n const value = createValue(args.params.value, {\n constraint: lc,\n });\n const ic = new ListController(args.document, {\n props: new ValueMap({\n options: lc.values.value('options'),\n }),\n value: value,\n viewProps: args.viewProps,\n });\n return new LabeledValueBladeController(args.document, {\n blade: args.blade,\n props: ValueMap.fromObject({\n label: args.params.label,\n }),\n value: value,\n valueController: ic,\n });\n },\n api(args) {\n if (!(args.controller instanceof LabeledValueBladeController)) {\n return null;\n }\n if (!(args.controller.valueController instanceof ListController)) {\n return null;\n }\n return new ListBladeApi(args.controller);\n },\n };\n})();\n\nclass RootApi extends FolderApi {\n /**\n * @hidden\n */\n constructor(controller, pool) {\n super(controller, pool);\n }\n get element() {\n return this.controller.view.element;\n }\n}\n\n/**\n * @hidden\n */\nclass RootController extends FolderController {\n constructor(doc, config) {\n super(doc, {\n expanded: config.expanded,\n blade: config.blade,\n props: config.props,\n root: true,\n viewProps: config.viewProps,\n });\n }\n}\n\nconst cn = ClassName('spr');\n/**\n * @hidden\n */\nclass SeparatorView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(cn());\n config.viewProps.bindClassModifiers(this.element);\n const hrElem = doc.createElement('hr');\n hrElem.classList.add(cn('r'));\n this.element.appendChild(hrElem);\n }\n}\n\n/**\n * @hidden\n */\nclass SeparatorController extends BladeController {\n /**\n * @hidden\n */\n constructor(doc, config) {\n super(Object.assign(Object.assign({}, config), { view: new SeparatorView(doc, {\n viewProps: config.viewProps,\n }) }));\n }\n}\n\nconst SeparatorBladePlugin = {\n id: 'separator',\n type: 'blade',\n core: VERSION$1,\n accept(params) {\n const result = parseRecord(params, (p) => ({\n view: p.required.constant('separator'),\n }));\n return result ? { params: result } : null;\n },\n controller(args) {\n return new SeparatorController(args.document, {\n blade: args.blade,\n viewProps: args.viewProps,\n });\n },\n api(args) {\n if (!(args.controller instanceof SeparatorController)) {\n return null;\n }\n return new SeparatorBladeApi(args.controller);\n },\n};\n\nconst SliderBladePlugin = {\n id: 'slider',\n type: 'blade',\n core: VERSION$1,\n accept(params) {\n const result = parseRecord(params, (p) => ({\n max: p.required.number,\n min: p.required.number,\n view: p.required.constant('slider'),\n format: p.optional.function,\n label: p.optional.string,\n value: p.optional.number,\n }));\n return result ? { params: result } : null;\n },\n controller(args) {\n var _a, _b;\n const initialValue = (_a = args.params.value) !== null && _a !== void 0 ? _a : 0;\n const drc = new DefiniteRangeConstraint({\n max: args.params.max,\n min: args.params.min,\n });\n const v = createValue(initialValue, {\n constraint: drc,\n });\n const vc = new SliderTextController(args.document, Object.assign(Object.assign({}, createSliderTextProps({\n formatter: (_b = args.params.format) !== null && _b !== void 0 ? _b : numberToString,\n keyScale: createValue(1),\n max: drc.values.value('max'),\n min: drc.values.value('min'),\n pointerScale: getSuitablePointerScale(args.params, initialValue),\n })), { parser: parseNumber, value: v, viewProps: args.viewProps }));\n return new LabeledValueBladeController(args.document, {\n blade: args.blade,\n props: ValueMap.fromObject({\n label: args.params.label,\n }),\n value: v,\n valueController: vc,\n });\n },\n api(args) {\n if (!(args.controller instanceof LabeledValueBladeController)) {\n return null;\n }\n if (!(args.controller.valueController instanceof SliderTextController)) {\n return null;\n }\n return new SliderBladeApi(args.controller);\n },\n};\n\nconst TextBladePlugin = (function () {\n return {\n id: 'text',\n type: 'blade',\n core: VERSION$1,\n accept(params) {\n const result = parseRecord(params, (p) => ({\n parse: p.required.function,\n value: p.required.raw,\n view: p.required.constant('text'),\n format: p.optional.function,\n label: p.optional.string,\n }));\n return result ? { params: result } : null;\n },\n controller(args) {\n var _a;\n const v = createValue(args.params.value);\n const ic = new TextController(args.document, {\n parser: args.params.parse,\n props: ValueMap.fromObject({\n formatter: (_a = args.params.format) !== null && _a !== void 0 ? _a : ((v) => String(v)),\n }),\n value: v,\n viewProps: args.viewProps,\n });\n return new LabeledValueBladeController(args.document, {\n blade: args.blade,\n props: ValueMap.fromObject({\n label: args.params.label,\n }),\n value: v,\n valueController: ic,\n });\n },\n api(args) {\n if (!(args.controller instanceof LabeledValueBladeController)) {\n return null;\n }\n if (!(args.controller.valueController instanceof TextController)) {\n return null;\n }\n return new TextBladeApi(args.controller);\n },\n };\n})();\n\nfunction createDefaultWrapperElement(doc) {\n const elem = doc.createElement('div');\n elem.classList.add(ClassName('dfw')());\n if (doc.body) {\n doc.body.appendChild(elem);\n }\n return elem;\n}\nfunction embedStyle(doc, id, css) {\n if (doc.querySelector(`style[data-tp-style=${id}]`)) {\n return;\n }\n const styleElem = doc.createElement('style');\n styleElem.dataset.tpStyle = id;\n styleElem.textContent = css;\n doc.head.appendChild(styleElem);\n}\n/**\n * The root pane of Tweakpane.\n */\nclass Pane extends RootApi {\n constructor(opt_config) {\n var _a, _b;\n const config = opt_config !== null && opt_config !== void 0 ? opt_config : {};\n const doc = (_a = config.document) !== null && _a !== void 0 ? _a : getWindowDocument();\n const pool = createDefaultPluginPool();\n const rootController = new RootController(doc, {\n expanded: config.expanded,\n blade: createBlade(),\n props: ValueMap.fromObject({\n title: config.title,\n }),\n viewProps: ViewProps.create(),\n });\n super(rootController, pool);\n this.pool_ = pool;\n this.containerElem_ = (_b = config.container) !== null && _b !== void 0 ? _b : createDefaultWrapperElement(doc);\n this.containerElem_.appendChild(this.element);\n this.doc_ = doc;\n this.usesDefaultWrapper_ = !config.container;\n this.setUpDefaultPlugins_();\n }\n get document() {\n if (!this.doc_) {\n throw TpError.alreadyDisposed();\n }\n return this.doc_;\n }\n dispose() {\n const containerElem = this.containerElem_;\n if (!containerElem) {\n throw TpError.alreadyDisposed();\n }\n if (this.usesDefaultWrapper_) {\n const parentElem = containerElem.parentElement;\n if (parentElem) {\n parentElem.removeChild(containerElem);\n }\n }\n this.containerElem_ = null;\n this.doc_ = null;\n super.dispose();\n }\n registerPlugin(bundle) {\n if (bundle.css) {\n embedStyle(this.document, `plugin-${bundle.id}`, bundle.css);\n }\n const plugins = 'plugin' in bundle\n ? [bundle.plugin]\n : 'plugins' in bundle\n ? bundle.plugins\n : [];\n plugins.forEach((p) => {\n this.pool_.register(bundle.id, p);\n });\n }\n setUpDefaultPlugins_() {\n this.registerPlugin({\n id: 'default',\n // NOTE: This string literal will be replaced with the default CSS by Rollup at the compilation time\n 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}',\n plugins: [\n ListBladePlugin,\n SeparatorBladePlugin,\n SliderBladePlugin,\n TabBladePlugin,\n TextBladePlugin,\n ],\n });\n }\n}\n\nconst VERSION = new Semver('4.0.5');\n\nexport { BladeApi, ButtonApi, FolderApi, ListBladeApi, ListInputBindingApi, Pane, Semver, SeparatorBladeApi, SliderBladeApi, SliderInputBindingApi, TabApi, TabPageApi, TextBladeApi, TpChangeEvent, VERSION };\n","import * as EssentialsPlugin from '@tweakpane/plugin-essentials'\nimport { Pane } from 'tweakpane'\nimport EventEmitter from './EventEmitter'\n\nexport default class Debug extends EventEmitter {\n active: boolean\n ui?: Pane\n\n constructor() {\n super()\n\n this.active = window.location.hash === '#debug'\n\n if (this.active) {\n this.ui = new Pane()\n this.ui.registerPlugin(EssentialsPlugin)\n\n this.trigger('debug')\n }\n }\n}\n"],"mappings":"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","names":["id","op","result","className","p","cn","c","y","_a","comps","elem","forceCast","isEmpty","isObject$1","isRecord","deepEqualsArray","deepMerge","isBinding","CREATE_MESSAGE_MAP","TpError","id","BindingTarget","Emitter","ComplexValue","PrimitiveValue","ReadonlyPrimitiveValue","createValue","createReadonlyValue","ValueMap","DefiniteRangeConstraint","RangeConstraint","StepConstraint","NumberLiteralNode","BINARY_OPERATION_MAP","BinaryOperationNode","UNARY_OPERATION_MAP","UnaryOperationNode","combineReader","readWhitespace","readNonZeroDigit","readDecimalDigits","readSignedInteger","readExponentPart","readDecimalIntegerLiteral","readDecimalLiteral1","readDecimalLiteral2","readDecimalLiteral3","readDecimalLiteral","parseBinaryDigits","readBinaryIntegerLiteral","readOctalDigits","readOctalIntegerLiteral","readHexDigits","readHexIntegerLiteral","readNonDecimalIntegerLiteral","readNumericLiteral","parseLiteral","parseParenthesizedExpression","parseExpression","parsePrimaryExpression","parseUnaryExpression","readBinaryOperator","op","createBinaryOperationExpressionParser","parseBinaryOperationExpression","parseEcmaNumberExpression","parseNumber","numberFromUnknown","createNumberFormatter","mapRange","getDecimalDigits","constrainRange","loopRange","getSuitableDecimalDigits","getSuitableKeyScale","getSuitablePointerScale","createStepConstraint","createRangeConstraint","createNumberTextPropsObject","createNumberTextInputParamsParser","createPointAxis","BladeApi","TpEvent","TpChangeEvent","TpFoldEvent","TpTabSelectEvent","BindingApi","parseObject","result","parseArray","isObject","createMicroParserBuilder","createMicroParserBuilders","MicroParsers","parseRecord","importBladeState","exportBladeState","isValueBladeController","isBindingValue","SVG_NS","forceReflow","disableTransitionTemporarily","supportsTouch","getCanvasContext","ICON_ID_TO_INNER_HTML_MAP","createSvgIconElement","insertElementAt","removeElement","removeChildElements","removeChildNodes","findNextTarget","bindValue","bindValueMap","PREFIX","ClassName","createLabelNode","LabelView","LabelController","getAllBladePositions","cn$q","POS_TO_CLASS_NAME_MAP","BladeController","LabeledValueBladeController","fillBuffer","initializeBuffer","createTrimmedBuffer","createPushedBuffer","ButtonApi","applyClass","className","valueToClassName","bindValueToTextContent","cn$p","ButtonView","ButtonController","ButtonBladeController","Semver","createPlugin","addButtonAsBlade","addFolderAsBlade","addTabAsBlade","isRefreshable","createBindingTarget","RackApi","ContainerBladeApi","ContainerBladeController","isContainerBladeController","NestedOrderedSet","findValueBladeController","findSubBladeControllerSet","Rack","RackController","createBlade","Foldable","computeExpandedFolderHeight","applyHeight","bindFoldable","FolderApi","bladeContainerClassName","FolderView","FolderController","cn$o","valueToModifier","ViewProps","cn$n","TabPageView","cn$m","TabItemView","TabItemController","TabPageController","TabApi","TabPageApi","INDEX_NOT_SELECTED","Tab","cn$l","TabView","TabController","ListInputBindingApi","ManualTicker","IntervalTicker","CompositeConstraint","findConstraint","ListConstraint","parseListOptions","p","normalizeListOptions","createListConstraint","cn$k","ListView","ListController","cn$j","PopupView","PopupController","cn$i","TextView","TextController","boolToString","boolFromUnknown","BooleanFormatter","composeParsers","innerFormatter","formatPercentage","stringFromUnknown","formatString","connectValues","getStepForKey","getVerticalStepKeys","getHorizontalStepKeys","isVerticalArrowKey","isArrowKey","computeOffset$1","PointerHandler","cn$h","NumberTextView","NumberTextController","cn$g","SliderView","SliderController","cn$f","SliderTextView","SliderTextController","createSliderTextProps","CSS_VAR_MAP","getCssVar","createPointDimensionParser","parsePointDimensionParams","createDimensionConstraint","parsePickerLayout","writePrimitive","cn$e","CheckboxView","CheckboxController","createConstraint$6","cn$d","ColorView","rgbToHslInt","hslToRgbInt","rgbToHsvInt","hsvToRgbInt","hslToHsvInt","hsvToHslInt","removeAlphaComponent","appendAlphaComponent","MODE_CONVERTER_MAP","getColorMaxComponents","loopHueRange","constrainColorComponents","convertColorType","convertColor","IntColor","cn$c","ColorPickerView","parseColorType","parseColorInputParams","getKeyScaleForColor","extractColorType","FloatColor","TYPE_TO_CONSTRUCTOR_MAP","createColor","isFloatColor","isIntColor","convertFloatToInt","convertIntToFloat","mapColorType","equalsStringColorFormat","parseCssNumberOrPercentage","ANGLE_TO_DEG_MAP","parseCssNumberOrAngle","parseFunctionalRgbColorComponents","parseFunctionalRgbColor","parseFunctionalRgbaColorComponents","parseFunctionalRgbaColor","parseFunctionalHslColorComponents","parseFunctionalHslColor","parseHslaColorComponents","parseFunctionalHslaColor","parseHexRgbColorComponents","parseHexRgbColor","parseHexRgbaColorComponents","parseHexRgbaColor","parseObjectRgbColorComponents","createObjectRgbColorParser","parseObjectRgbaColorComponents","createObjectRgbaColorParser","PARSER_AND_RESULT","detectStringColor","detectStringColorFormat","createColorStringParser","readIntColorString","zerofill","colorToHexRgbString","colorToHexRgbaString","colorToFunctionalRgbString","colorToFunctionalRgbaString","colorToFunctionalHslString","colorToFunctionalHslaString","colorToObjectRgbString","createObjectRgbColorFormatter","colorToObjectRgbaString","createObjectRgbaColorFormatter","FORMAT_AND_STRINGIFIERS","findColorStringifier","cn$b","APaletteView","APaletteController","cn$a","createModeSelectElement","ColorTextsView","createFormatter$2","createConstraint$5","createComponentController","createComponentControllers","c","createHexController","isColorMode","ColorTextsController","cn$9","HPaletteView","HPaletteController","cn$8","CANVAS_RESOL","SvPaletteView","SvPaletteController","ColorPickerController","cn$7","ColorSwatchView","ColorSwatchController","ColorController","colorToRgbNumber","colorToRgbaNumber","numberToRgbColor","numberToRgbaColor","colorFromRgbNumber","colorFromRgbaNumber","isRgbColorComponent","isRgbColorObject","isRgbaColorObject","isColorObject","equalsColor","createColorComponentsFromRgbObject","createColorStringWriter","createColorNumberWriter","writeRgbaColorObject","writeRgbColorObject","createColorObjectWriter","shouldSupportAlpha$1","createFormatter$1","isForColor","colorFromObject","shouldSupportAlpha","createColorObjectBindingReader","createColorObjectFormatter","PointNdConstraint","cn$6","PointNdTextView","createAxisController","PointNdTextController","SliderInputBindingApi","createConstraint$4","Point2d","y","Point2dAssembly","cn$5","Point2dView","cn$4","Point2dPickerView","computeOffset","Point2dPickerController","Point2dController","point2dFromUnknown","writePoint2d","createConstraint$3","getSuitableMaxDimensionValue","getSuitableMax","shouldInvertY","_a","Point3d","Point3dAssembly","point3dFromUnknown","writePoint3d","createConstraint$2","Point4d","Point4dAssembly","point4dFromUnknown","writePoint4d","createConstraint$1","createConstraint","Constants","cn$3","MultiLogView","MultiLogController","cn$2","SingleLogView","SingleLogController","GraphLogMonitorBindingApi","cn$1","GraphLogView","GraphLogController","createFormatter","createTextMonitor","createGraphMonitor","shouldShowGraph","createTicker","cn","v","css","plugins","VERSION"]}
|