@tresjs/cientos 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/Plane.vue.d.ts +29 -0
- package/dist/core/useAnimations.d.ts +8 -0
- package/dist/core/useFBX/component.d.ts +11 -0
- package/dist/core/useFBX/index.d.ts +2 -0
- package/dist/core/useGLTF/index.d.ts +2 -5
- package/dist/index.d.ts +6 -1
- package/dist/trescientos.js +7200 -5375
- package/dist/trescientos.umd.cjs +13 -13
- package/dist/types/index.d.ts +5 -0
- package/dist/utils/index.d.ts +1 -0
- package/package.json +7 -7
package/dist/trescientos.umd.cjs
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: @tresjs/cientos
|
|
3
|
-
* version: v1.
|
|
4
|
-
* (c)
|
|
3
|
+
* version: v1.5.0
|
|
4
|
+
* (c) 2023
|
|
5
5
|
* description: Collection of useful helpers and fully functional, ready-made abstractions for Tres
|
|
6
6
|
* author: Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)
|
|
7
7
|
*/
|
|
8
|
-
(function(Ve,R){typeof exports=="object"&&typeof module<"u"?R(exports,require("vue"),require("@tresjs/core"),require("three")):typeof define=="function"&&define.amd?define(["exports","vue","@tresjs/core","three"],R):(Ve=typeof globalThis<"u"?globalThis:Ve||self,R(Ve.trescientos={},Ve.Vue,Ve.TresjsCore,Ve.Three))})(this,function(Ve,R,Zn,m){"use strict";function Ur(L,l){for(var c=0;c<l.length;c++){const o=l[c];if(typeof o!="string"&&!Array.isArray(o)){for(const h in o)if(h!=="default"&&!(h in L)){const d=Object.getOwnPropertyDescriptor(o,h);d&&Object.defineProperty(L,h,d.get?d:{enumerable:!0,get:()=>o[h]})}}}return Object.freeze(Object.defineProperty(L,Symbol.toStringTag,{value:"Module"}))}function C(L,l,c){return l in L?Object.defineProperty(L,l,{value:c,enumerable:!0,configurable:!0,writable:!0}):L[l]=c,L}class Rr extends m.Object3D{constructor(l,c){super(),C(this,"isTransformControls",!0),C(this,"visible",!1),C(this,"domElement",void 0),C(this,"raycaster",new m.Raycaster),C(this,"gizmo",void 0),C(this,"plane",void 0),C(this,"tempVector",new m.Vector3),C(this,"tempVector2",new m.Vector3),C(this,"tempQuaternion",new m.Quaternion),C(this,"unit",{X:new m.Vector3(1,0,0),Y:new m.Vector3(0,1,0),Z:new m.Vector3(0,0,1)}),C(this,"pointStart",new m.Vector3),C(this,"pointEnd",new m.Vector3),C(this,"offset",new m.Vector3),C(this,"rotationAxis",new m.Vector3),C(this,"startNorm",new m.Vector3),C(this,"endNorm",new m.Vector3),C(this,"rotationAngle",0),C(this,"cameraPosition",new m.Vector3),C(this,"cameraQuaternion",new m.Quaternion),C(this,"cameraScale",new m.Vector3),C(this,"parentPosition",new m.Vector3),C(this,"parentQuaternion",new m.Quaternion),C(this,"parentQuaternionInv",new m.Quaternion),C(this,"parentScale",new m.Vector3),C(this,"worldPositionStart",new m.Vector3),C(this,"worldQuaternionStart",new m.Quaternion),C(this,"worldScaleStart",new m.Vector3),C(this,"worldPosition",new m.Vector3),C(this,"worldQuaternion",new m.Quaternion),C(this,"worldQuaternionInv",new m.Quaternion),C(this,"worldScale",new m.Vector3),C(this,"eye",new m.Vector3),C(this,"positionStart",new m.Vector3),C(this,"quaternionStart",new m.Quaternion),C(this,"scaleStart",new m.Vector3),C(this,"camera",void 0),C(this,"object",void 0),C(this,"enabled",!0),C(this,"axis",null),C(this,"mode","translate"),C(this,"translationSnap",null),C(this,"rotationSnap",null),C(this,"scaleSnap",null),C(this,"space","world"),C(this,"size",1),C(this,"dragging",!1),C(this,"showX",!0),C(this,"showY",!0),C(this,"showZ",!0),C(this,"changeEvent",{type:"change"}),C(this,"mouseDownEvent",{type:"mouseDown",mode:this.mode}),C(this,"mouseUpEvent",{type:"mouseUp",mode:this.mode}),C(this,"objectChangeEvent",{type:"objectChange"}),C(this,"intersectObjectWithRay",(h,d,f)=>{const v=d.intersectObject(h,!0);for(let b=0;b<v.length;b++)if(v[b].object.visible||f)return v[b];return!1}),C(this,"attach",h=>(this.object=h,this.visible=!0,this)),C(this,"detach",()=>(this.object=void 0,this.visible=!1,this.axis=null,this)),C(this,"reset",()=>this.enabled?(this.dragging&&this.object!==void 0&&(this.object.position.copy(this.positionStart),this.object.quaternion.copy(this.quaternionStart),this.object.scale.copy(this.scaleStart),this.dispatchEvent(this.changeEvent),this.dispatchEvent(this.objectChangeEvent),this.pointStart.copy(this.pointEnd)),this):this),C(this,"updateMatrixWorld",()=>{this.object!==void 0&&(this.object.updateMatrixWorld(),this.object.parent===null?console.error("TransformControls: The attached 3D object must be a part of the scene graph."):this.object.parent.matrixWorld.decompose(this.parentPosition,this.parentQuaternion,this.parentScale),this.object.matrixWorld.decompose(this.worldPosition,this.worldQuaternion,this.worldScale),this.parentQuaternionInv.copy(this.parentQuaternion).invert(),this.worldQuaternionInv.copy(this.worldQuaternion).invert()),this.camera.updateMatrixWorld(),this.camera.matrixWorld.decompose(this.cameraPosition,this.cameraQuaternion,this.cameraScale),this.eye.copy(this.cameraPosition).sub(this.worldPosition).normalize(),super.updateMatrixWorld()}),C(this,"pointerHover",h=>{if(this.object===void 0||this.dragging===!0)return;this.raycaster.setFromCamera(h,this.camera);const d=this.intersectObjectWithRay(this.gizmo.picker[this.mode],this.raycaster);d?this.axis=d.object.name:this.axis=null}),C(this,"pointerDown",h=>{if(!(this.object===void 0||this.dragging===!0||h.button!==0)&&this.axis!==null){this.raycaster.setFromCamera(h,this.camera);const d=this.intersectObjectWithRay(this.plane,this.raycaster,!0);if(d){let f=this.space;if(this.mode==="scale"?f="local":(this.axis==="E"||this.axis==="XYZE"||this.axis==="XYZ")&&(f="world"),f==="local"&&this.mode==="rotate"){const v=this.rotationSnap;this.axis==="X"&&v&&(this.object.rotation.x=Math.round(this.object.rotation.x/v)*v),this.axis==="Y"&&v&&(this.object.rotation.y=Math.round(this.object.rotation.y/v)*v),this.axis==="Z"&&v&&(this.object.rotation.z=Math.round(this.object.rotation.z/v)*v)}this.object.updateMatrixWorld(),this.object.parent&&this.object.parent.updateMatrixWorld(),this.positionStart.copy(this.object.position),this.quaternionStart.copy(this.object.quaternion),this.scaleStart.copy(this.object.scale),this.object.matrixWorld.decompose(this.worldPositionStart,this.worldQuaternionStart,this.worldScaleStart),this.pointStart.copy(d.point).sub(this.worldPositionStart)}this.dragging=!0,this.mouseDownEvent.mode=this.mode,this.dispatchEvent(this.mouseDownEvent)}}),C(this,"pointerMove",h=>{const d=this.axis,f=this.mode,v=this.object;let b=this.space;if(f==="scale"?b="local":(d==="E"||d==="XYZE"||d==="XYZ")&&(b="world"),v===void 0||d===null||this.dragging===!1||h.button!==-1)return;this.raycaster.setFromCamera(h,this.camera);const w=this.intersectObjectWithRay(this.plane,this.raycaster,!0);if(w){if(this.pointEnd.copy(w.point).sub(this.worldPositionStart),f==="translate")this.offset.copy(this.pointEnd).sub(this.pointStart),b==="local"&&d!=="XYZ"&&this.offset.applyQuaternion(this.worldQuaternionInv),d.indexOf("X")===-1&&(this.offset.x=0),d.indexOf("Y")===-1&&(this.offset.y=0),d.indexOf("Z")===-1&&(this.offset.z=0),b==="local"&&d!=="XYZ"?this.offset.applyQuaternion(this.quaternionStart).divide(this.parentScale):this.offset.applyQuaternion(this.parentQuaternionInv).divide(this.parentScale),v.position.copy(this.offset).add(this.positionStart),this.translationSnap&&(b==="local"&&(v.position.applyQuaternion(this.tempQuaternion.copy(this.quaternionStart).invert()),d.search("X")!==-1&&(v.position.x=Math.round(v.position.x/this.translationSnap)*this.translationSnap),d.search("Y")!==-1&&(v.position.y=Math.round(v.position.y/this.translationSnap)*this.translationSnap),d.search("Z")!==-1&&(v.position.z=Math.round(v.position.z/this.translationSnap)*this.translationSnap),v.position.applyQuaternion(this.quaternionStart)),b==="world"&&(v.parent&&v.position.add(this.tempVector.setFromMatrixPosition(v.parent.matrixWorld)),d.search("X")!==-1&&(v.position.x=Math.round(v.position.x/this.translationSnap)*this.translationSnap),d.search("Y")!==-1&&(v.position.y=Math.round(v.position.y/this.translationSnap)*this.translationSnap),d.search("Z")!==-1&&(v.position.z=Math.round(v.position.z/this.translationSnap)*this.translationSnap),v.parent&&v.position.sub(this.tempVector.setFromMatrixPosition(v.parent.matrixWorld))));else if(f==="scale"){if(d.search("XYZ")!==-1){let y=this.pointEnd.length()/this.pointStart.length();this.pointEnd.dot(this.pointStart)<0&&(y*=-1),this.tempVector2.set(y,y,y)}else this.tempVector.copy(this.pointStart),this.tempVector2.copy(this.pointEnd),this.tempVector.applyQuaternion(this.worldQuaternionInv),this.tempVector2.applyQuaternion(this.worldQuaternionInv),this.tempVector2.divide(this.tempVector),d.search("X")===-1&&(this.tempVector2.x=1),d.search("Y")===-1&&(this.tempVector2.y=1),d.search("Z")===-1&&(this.tempVector2.z=1);v.scale.copy(this.scaleStart).multiply(this.tempVector2),this.scaleSnap&&this.object&&(d.search("X")!==-1&&(this.object.scale.x=Math.round(v.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap),d.search("Y")!==-1&&(v.scale.y=Math.round(v.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap),d.search("Z")!==-1&&(v.scale.z=Math.round(v.scale.z/this.scaleSnap)*this.scaleSnap||this.scaleSnap))}else if(f==="rotate"){this.offset.copy(this.pointEnd).sub(this.pointStart);const y=20/this.worldPosition.distanceTo(this.tempVector.setFromMatrixPosition(this.camera.matrixWorld));d==="E"?(this.rotationAxis.copy(this.eye),this.rotationAngle=this.pointEnd.angleTo(this.pointStart),this.startNorm.copy(this.pointStart).normalize(),this.endNorm.copy(this.pointEnd).normalize(),this.rotationAngle*=this.endNorm.cross(this.startNorm).dot(this.eye)<0?1:-1):d==="XYZE"?(this.rotationAxis.copy(this.offset).cross(this.eye).normalize(),this.rotationAngle=this.offset.dot(this.tempVector.copy(this.rotationAxis).cross(this.eye))*y):(d==="X"||d==="Y"||d==="Z")&&(this.rotationAxis.copy(this.unit[d]),this.tempVector.copy(this.unit[d]),b==="local"&&this.tempVector.applyQuaternion(this.worldQuaternion),this.rotationAngle=this.offset.dot(this.tempVector.cross(this.eye).normalize())*y),this.rotationSnap&&(this.rotationAngle=Math.round(this.rotationAngle/this.rotationSnap)*this.rotationSnap),b==="local"&&d!=="E"&&d!=="XYZE"?(v.quaternion.copy(this.quaternionStart),v.quaternion.multiply(this.tempQuaternion.setFromAxisAngle(this.rotationAxis,this.rotationAngle)).normalize()):(this.rotationAxis.applyQuaternion(this.parentQuaternionInv),v.quaternion.copy(this.tempQuaternion.setFromAxisAngle(this.rotationAxis,this.rotationAngle)),v.quaternion.multiply(this.quaternionStart).normalize())}this.dispatchEvent(this.changeEvent),this.dispatchEvent(this.objectChangeEvent)}}),C(this,"pointerUp",h=>{h.button===0&&(this.dragging&&this.axis!==null&&(this.mouseUpEvent.mode=this.mode,this.dispatchEvent(this.mouseUpEvent)),this.dragging=!1,this.axis=null)}),C(this,"getPointer",h=>{var d;if(this.domElement&&(d=this.domElement.ownerDocument)!==null&&d!==void 0&&d.pointerLockElement)return{x:0,y:0,button:h.button};{var f;const v=h.changedTouches?h.changedTouches[0]:h,b=(f=this.domElement)===null||f===void 0?void 0:f.getBoundingClientRect();return{x:(v.clientX-b.left)/b.width*2-1,y:-(v.clientY-b.top)/b.height*2+1,button:h.button}}}),C(this,"onPointerHover",h=>{if(this.enabled)switch(h.pointerType){case"mouse":case"pen":this.pointerHover(this.getPointer(h));break}}),C(this,"onPointerDown",h=>{!this.enabled||!this.domElement||(this.domElement.style.touchAction="none",this.domElement.ownerDocument.addEventListener("pointermove",this.onPointerMove),this.pointerHover(this.getPointer(h)),this.pointerDown(this.getPointer(h)))}),C(this,"onPointerMove",h=>{this.enabled&&this.pointerMove(this.getPointer(h))}),C(this,"onPointerUp",h=>{!this.enabled||!this.domElement||(this.domElement.style.touchAction="",this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.pointerUp(this.getPointer(h)))}),C(this,"getMode",()=>this.mode),C(this,"setMode",h=>{this.mode=h}),C(this,"setTranslationSnap",h=>{this.translationSnap=h}),C(this,"setRotationSnap",h=>{this.rotationSnap=h}),C(this,"setScaleSnap",h=>{this.scaleSnap=h}),C(this,"setSize",h=>{this.size=h}),C(this,"setSpace",h=>{this.space=h}),C(this,"update",()=>{console.warn("THREE.TransformControls: update function has no more functionality and therefore has been deprecated.")}),C(this,"connect",h=>{h===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),this.domElement=h,this.domElement.addEventListener("pointerdown",this.onPointerDown),this.domElement.addEventListener("pointermove",this.onPointerHover),this.domElement.ownerDocument.addEventListener("pointerup",this.onPointerUp)}),C(this,"dispose",()=>{var h,d,f,v,b,w;(h=this.domElement)===null||h===void 0||h.removeEventListener("pointerdown",this.onPointerDown),(d=this.domElement)===null||d===void 0||d.removeEventListener("pointermove",this.onPointerHover),(f=this.domElement)===null||f===void 0||(v=f.ownerDocument)===null||v===void 0||v.removeEventListener("pointermove",this.onPointerMove),(b=this.domElement)===null||b===void 0||(w=b.ownerDocument)===null||w===void 0||w.removeEventListener("pointerup",this.onPointerUp),this.traverse(y=>{const x=y;x.geometry&&x.geometry.dispose(),x.material&&x.material.dispose()})}),this.domElement=c,this.camera=l,this.gizmo=new Gr,this.add(this.gizmo),this.plane=new Kr,this.add(this.plane);const o=(h,d)=>{let f=d;Object.defineProperty(this,h,{get:function(){return f!==void 0?f:d},set:function(v){f!==v&&(f=v,this.plane[h]=v,this.gizmo[h]=v,this.dispatchEvent({type:h+"-changed",value:v}),this.dispatchEvent(this.changeEvent))}}),this[h]=d,this.plane[h]=d,this.gizmo[h]=d};o("camera",this.camera),o("object",this.object),o("enabled",this.enabled),o("axis",this.axis),o("mode",this.mode),o("translationSnap",this.translationSnap),o("rotationSnap",this.rotationSnap),o("scaleSnap",this.scaleSnap),o("space",this.space),o("size",this.size),o("dragging",this.dragging),o("showX",this.showX),o("showY",this.showY),o("showZ",this.showZ),o("worldPosition",this.worldPosition),o("worldPositionStart",this.worldPositionStart),o("worldQuaternion",this.worldQuaternion),o("worldQuaternionStart",this.worldQuaternionStart),o("cameraPosition",this.cameraPosition),o("cameraQuaternion",this.cameraQuaternion),o("pointStart",this.pointStart),o("pointEnd",this.pointEnd),o("rotationAxis",this.rotationAxis),o("rotationAngle",this.rotationAngle),o("eye",this.eye),c!==void 0&&this.connect(c)}}class Gr extends m.Object3D{constructor(){super(),C(this,"isTransformControlsGizmo",!0),C(this,"type","TransformControlsGizmo"),C(this,"tempVector",new m.Vector3(0,0,0)),C(this,"tempEuler",new m.Euler),C(this,"alignVector",new m.Vector3(0,1,0)),C(this,"zeroVector",new m.Vector3(0,0,0)),C(this,"lookAtMatrix",new m.Matrix4),C(this,"tempQuaternion",new m.Quaternion),C(this,"tempQuaternion2",new m.Quaternion),C(this,"identityQuaternion",new m.Quaternion),C(this,"unitX",new m.Vector3(1,0,0)),C(this,"unitY",new m.Vector3(0,1,0)),C(this,"unitZ",new m.Vector3(0,0,1)),C(this,"gizmo",void 0),C(this,"picker",void 0),C(this,"helper",void 0),C(this,"rotationAxis",new m.Vector3),C(this,"cameraPosition",new m.Vector3),C(this,"worldPositionStart",new m.Vector3),C(this,"worldQuaternionStart",new m.Quaternion),C(this,"worldPosition",new m.Vector3),C(this,"worldQuaternion",new m.Quaternion),C(this,"eye",new m.Vector3),C(this,"camera",null),C(this,"enabled",!0),C(this,"axis",null),C(this,"mode","translate"),C(this,"space","world"),C(this,"size",1),C(this,"dragging",!1),C(this,"showX",!0),C(this,"showY",!0),C(this,"showZ",!0),C(this,"updateMatrixWorld",()=>{let ue=this.space;this.mode==="scale"&&(ue="local");const Z=ue==="local"?this.worldQuaternion:this.identityQuaternion;this.gizmo.translate.visible=this.mode==="translate",this.gizmo.rotate.visible=this.mode==="rotate",this.gizmo.scale.visible=this.mode==="scale",this.helper.translate.visible=this.mode==="translate",this.helper.rotate.visible=this.mode==="rotate",this.helper.scale.visible=this.mode==="scale";let ae=[];ae=ae.concat(this.picker[this.mode].children),ae=ae.concat(this.gizmo[this.mode].children),ae=ae.concat(this.helper[this.mode].children);for(let K=0;K<ae.length;K++){const S=ae[K];S.visible=!0,S.rotation.set(0,0,0),S.position.copy(this.worldPosition);let Ae;if(this.camera.isOrthographicCamera?Ae=(this.camera.top-this.camera.bottom)/this.camera.zoom:Ae=this.worldPosition.distanceTo(this.cameraPosition)*Math.min(1.9*Math.tan(Math.PI*this.camera.fov/360)/this.camera.zoom,7),S.scale.set(1,1,1).multiplyScalar(Ae*this.size/7),S.tag==="helper"){S.visible=!1,S.name==="AXIS"?(S.position.copy(this.worldPositionStart),S.visible=!!this.axis,this.axis==="X"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,0)),S.quaternion.copy(Z).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(Z).dot(this.eye))>.9&&(S.visible=!1)),this.axis==="Y"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,Math.PI/2)),S.quaternion.copy(Z).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(Z).dot(this.eye))>.9&&(S.visible=!1)),this.axis==="Z"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0)),S.quaternion.copy(Z).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(Z).dot(this.eye))>.9&&(S.visible=!1)),this.axis==="XYZE"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0)),this.alignVector.copy(this.rotationAxis),S.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.zeroVector,this.alignVector,this.unitY)),S.quaternion.multiply(this.tempQuaternion),S.visible=this.dragging),this.axis==="E"&&(S.visible=!1)):S.name==="START"?(S.position.copy(this.worldPositionStart),S.visible=this.dragging):S.name==="END"?(S.position.copy(this.worldPosition),S.visible=this.dragging):S.name==="DELTA"?(S.position.copy(this.worldPositionStart),S.quaternion.copy(this.worldQuaternionStart),this.tempVector.set(1e-10,1e-10,1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1),this.tempVector.applyQuaternion(this.worldQuaternionStart.clone().invert()),S.scale.copy(this.tempVector),S.visible=this.dragging):(S.quaternion.copy(Z),this.dragging?S.position.copy(this.worldPositionStart):S.position.copy(this.worldPosition),this.axis&&(S.visible=this.axis.search(S.name)!==-1));continue}S.quaternion.copy(Z),this.mode==="translate"||this.mode==="scale"?((S.name==="X"||S.name==="XYZX")&&Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(Z).dot(this.eye))>.99&&(S.scale.set(1e-10,1e-10,1e-10),S.visible=!1),(S.name==="Y"||S.name==="XYZY")&&Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(Z).dot(this.eye))>.99&&(S.scale.set(1e-10,1e-10,1e-10),S.visible=!1),(S.name==="Z"||S.name==="XYZZ")&&Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(Z).dot(this.eye))>.99&&(S.scale.set(1e-10,1e-10,1e-10),S.visible=!1),S.name==="XY"&&Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(Z).dot(this.eye))<.2&&(S.scale.set(1e-10,1e-10,1e-10),S.visible=!1),S.name==="YZ"&&Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(Z).dot(this.eye))<.2&&(S.scale.set(1e-10,1e-10,1e-10),S.visible=!1),S.name==="XZ"&&Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(Z).dot(this.eye))<.2&&(S.scale.set(1e-10,1e-10,1e-10),S.visible=!1),S.name.search("X")!==-1&&(this.alignVector.copy(this.unitX).applyQuaternion(Z).dot(this.eye)<0?S.tag==="fwd"?S.visible=!1:S.scale.x*=-1:S.tag==="bwd"&&(S.visible=!1)),S.name.search("Y")!==-1&&(this.alignVector.copy(this.unitY).applyQuaternion(Z).dot(this.eye)<0?S.tag==="fwd"?S.visible=!1:S.scale.y*=-1:S.tag==="bwd"&&(S.visible=!1)),S.name.search("Z")!==-1&&(this.alignVector.copy(this.unitZ).applyQuaternion(Z).dot(this.eye)<0?S.tag==="fwd"?S.visible=!1:S.scale.z*=-1:S.tag==="bwd"&&(S.visible=!1))):this.mode==="rotate"&&(this.tempQuaternion2.copy(Z),this.alignVector.copy(this.eye).applyQuaternion(this.tempQuaternion.copy(Z).invert()),S.name.search("E")!==-1&&S.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.eye,this.zeroVector,this.unitY)),S.name==="X"&&(this.tempQuaternion.setFromAxisAngle(this.unitX,Math.atan2(-this.alignVector.y,this.alignVector.z)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),S.quaternion.copy(this.tempQuaternion)),S.name==="Y"&&(this.tempQuaternion.setFromAxisAngle(this.unitY,Math.atan2(this.alignVector.x,this.alignVector.z)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),S.quaternion.copy(this.tempQuaternion)),S.name==="Z"&&(this.tempQuaternion.setFromAxisAngle(this.unitZ,Math.atan2(this.alignVector.y,this.alignVector.x)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),S.quaternion.copy(this.tempQuaternion))),S.visible=S.visible&&(S.name.indexOf("X")===-1||this.showX),S.visible=S.visible&&(S.name.indexOf("Y")===-1||this.showY),S.visible=S.visible&&(S.name.indexOf("Z")===-1||this.showZ),S.visible=S.visible&&(S.name.indexOf("E")===-1||this.showX&&this.showY&&this.showZ),S.material.tempOpacity=S.material.tempOpacity||S.material.opacity,S.material.tempColor=S.material.tempColor||S.material.color.clone(),S.material.color.copy(S.material.tempColor),S.material.opacity=S.material.tempOpacity,this.enabled?this.axis&&(S.name===this.axis?(S.material.opacity=1,S.material.color.lerp(new m.Color(1,1,1),.5)):this.axis.split("").some(function(Ee){return S.name===Ee})?(S.material.opacity=1,S.material.color.lerp(new m.Color(1,1,1),.5)):(S.material.opacity*=.25,S.material.color.lerp(new m.Color(1,1,1),.5))):(S.material.opacity*=.5,S.material.color.lerp(new m.Color(1,1,1),.5))}super.updateMatrixWorld()});const l=new m.MeshBasicMaterial({depthTest:!1,depthWrite:!1,transparent:!0,side:m.DoubleSide,fog:!1,toneMapped:!1}),c=new m.LineBasicMaterial({depthTest:!1,depthWrite:!1,transparent:!0,linewidth:1,fog:!1,toneMapped:!1}),o=l.clone();o.opacity=.15;const h=l.clone();h.opacity=.33;const d=l.clone();d.color.set(16711680);const f=l.clone();f.color.set(65280);const v=l.clone();v.color.set(255);const b=l.clone();b.opacity=.25;const w=b.clone();w.color.set(16776960);const y=b.clone();y.color.set(65535);const x=b.clone();x.color.set(16711935),l.clone().color.set(16776960);const D=c.clone();D.color.set(16711680);const T=c.clone();T.color.set(65280);const E=c.clone();E.color.set(255);const O=c.clone();O.color.set(65535);const N=c.clone();N.color.set(16711935);const X=c.clone();X.color.set(16776960);const z=c.clone();z.color.set(7895160);const ne=X.clone();ne.opacity=.25;const ce=new m.CylinderGeometry(0,.05,.2,12,1,!1),H=new m.BoxGeometry(.125,.125,.125),U=new m.BufferGeometry;U.setAttribute("position",new m.Float32BufferAttribute([0,0,0,1,0,0],3));const q=(ue,Z)=>{const ae=new m.BufferGeometry,K=[];for(let S=0;S<=64*Z;++S)K.push(0,Math.cos(S/32*Math.PI)*ue,Math.sin(S/32*Math.PI)*ue);return ae.setAttribute("position",new m.Float32BufferAttribute(K,3)),ae},se=()=>{const ue=new m.BufferGeometry;return ue.setAttribute("position",new m.Float32BufferAttribute([0,0,0,1,1,1],3)),ue},oe={X:[[new m.Mesh(ce,d),[1,0,0],[0,0,-Math.PI/2],null,"fwd"],[new m.Mesh(ce,d),[1,0,0],[0,0,Math.PI/2],null,"bwd"],[new m.Line(U,D)]],Y:[[new m.Mesh(ce,f),[0,1,0],null,null,"fwd"],[new m.Mesh(ce,f),[0,1,0],[Math.PI,0,0],null,"bwd"],[new m.Line(U,T),null,[0,0,Math.PI/2]]],Z:[[new m.Mesh(ce,v),[0,0,1],[Math.PI/2,0,0],null,"fwd"],[new m.Mesh(ce,v),[0,0,1],[-Math.PI/2,0,0],null,"bwd"],[new m.Line(U,E),null,[0,-Math.PI/2,0]]],XYZ:[[new m.Mesh(new m.OctahedronGeometry(.1,0),b.clone()),[0,0,0],[0,0,0]]],XY:[[new m.Mesh(new m.PlaneGeometry(.295,.295),w.clone()),[.15,.15,0]],[new m.Line(U,X),[.18,.3,0],null,[.125,1,1]],[new m.Line(U,X),[.3,.18,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new m.Mesh(new m.PlaneGeometry(.295,.295),y.clone()),[0,.15,.15],[0,Math.PI/2,0]],[new m.Line(U,O),[0,.18,.3],[0,0,Math.PI/2],[.125,1,1]],[new m.Line(U,O),[0,.3,.18],[0,-Math.PI/2,0],[.125,1,1]]],XZ:[[new m.Mesh(new m.PlaneGeometry(.295,.295),x.clone()),[.15,0,.15],[-Math.PI/2,0,0]],[new m.Line(U,N),[.18,0,.3],null,[.125,1,1]],[new m.Line(U,N),[.3,0,.18],[0,-Math.PI/2,0],[.125,1,1]]]},_e={X:[[new m.Mesh(new m.CylinderGeometry(.2,0,1,4,1,!1),o),[.6,0,0],[0,0,-Math.PI/2]]],Y:[[new m.Mesh(new m.CylinderGeometry(.2,0,1,4,1,!1),o),[0,.6,0]]],Z:[[new m.Mesh(new m.CylinderGeometry(.2,0,1,4,1,!1),o),[0,0,.6],[Math.PI/2,0,0]]],XYZ:[[new m.Mesh(new m.OctahedronGeometry(.2,0),o)]],XY:[[new m.Mesh(new m.PlaneGeometry(.4,.4),o),[.2,.2,0]]],YZ:[[new m.Mesh(new m.PlaneGeometry(.4,.4),o),[0,.2,.2],[0,Math.PI/2,0]]],XZ:[[new m.Mesh(new m.PlaneGeometry(.4,.4),o),[.2,0,.2],[-Math.PI/2,0,0]]]},Ce={START:[[new m.Mesh(new m.OctahedronGeometry(.01,2),h),null,null,null,"helper"]],END:[[new m.Mesh(new m.OctahedronGeometry(.01,2),h),null,null,null,"helper"]],DELTA:[[new m.Line(se(),h),null,null,null,"helper"]],X:[[new m.Line(U,h.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new m.Line(U,h.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new m.Line(U,h.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},ve={X:[[new m.Line(q(1,.5),D)],[new m.Mesh(new m.OctahedronGeometry(.04,0),d),[0,0,.99],null,[1,3,1]]],Y:[[new m.Line(q(1,.5),T),null,[0,0,-Math.PI/2]],[new m.Mesh(new m.OctahedronGeometry(.04,0),f),[0,0,.99],null,[3,1,1]]],Z:[[new m.Line(q(1,.5),E),null,[0,Math.PI/2,0]],[new m.Mesh(new m.OctahedronGeometry(.04,0),v),[.99,0,0],null,[1,3,1]]],E:[[new m.Line(q(1.25,1),ne),null,[0,Math.PI/2,0]],[new m.Mesh(new m.CylinderGeometry(.03,0,.15,4,1,!1),ne),[1.17,0,0],[0,0,-Math.PI/2],[1,1,.001]],[new m.Mesh(new m.CylinderGeometry(.03,0,.15,4,1,!1),ne),[-1.17,0,0],[0,0,Math.PI/2],[1,1,.001]],[new m.Mesh(new m.CylinderGeometry(.03,0,.15,4,1,!1),ne),[0,-1.17,0],[Math.PI,0,0],[1,1,.001]],[new m.Mesh(new m.CylinderGeometry(.03,0,.15,4,1,!1),ne),[0,1.17,0],[0,0,0],[1,1,.001]]],XYZE:[[new m.Line(q(1,1),z),null,[0,Math.PI/2,0]]]},he={AXIS:[[new m.Line(U,h.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]]},ge={X:[[new m.Mesh(new m.TorusGeometry(1,.1,4,24),o),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],Y:[[new m.Mesh(new m.TorusGeometry(1,.1,4,24),o),[0,0,0],[Math.PI/2,0,0]]],Z:[[new m.Mesh(new m.TorusGeometry(1,.1,4,24),o),[0,0,0],[0,0,-Math.PI/2]]],E:[[new m.Mesh(new m.TorusGeometry(1.25,.1,2,24),o)]],XYZE:[[new m.Mesh(new m.SphereGeometry(.7,10,8),o)]]},ee={X:[[new m.Mesh(H,d),[.8,0,0],[0,0,-Math.PI/2]],[new m.Line(U,D),null,null,[.8,1,1]]],Y:[[new m.Mesh(H,f),[0,.8,0]],[new m.Line(U,T),null,[0,0,Math.PI/2],[.8,1,1]]],Z:[[new m.Mesh(H,v),[0,0,.8],[Math.PI/2,0,0]],[new m.Line(U,E),null,[0,-Math.PI/2,0],[.8,1,1]]],XY:[[new m.Mesh(H,w),[.85,.85,0],null,[2,2,.2]],[new m.Line(U,X),[.855,.98,0],null,[.125,1,1]],[new m.Line(U,X),[.98,.855,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new m.Mesh(H,y),[0,.85,.85],null,[.2,2,2]],[new m.Line(U,O),[0,.855,.98],[0,0,Math.PI/2],[.125,1,1]],[new m.Line(U,O),[0,.98,.855],[0,-Math.PI/2,0],[.125,1,1]]],XZ:[[new m.Mesh(H,x),[.85,0,.85],null,[2,.2,2]],[new m.Line(U,N),[.855,0,.98],null,[.125,1,1]],[new m.Line(U,N),[.98,0,.855],[0,-Math.PI/2,0],[.125,1,1]]],XYZX:[[new m.Mesh(new m.BoxGeometry(.125,.125,.125),b.clone()),[1.1,0,0]]],XYZY:[[new m.Mesh(new m.BoxGeometry(.125,.125,.125),b.clone()),[0,1.1,0]]],XYZZ:[[new m.Mesh(new m.BoxGeometry(.125,.125,.125),b.clone()),[0,0,1.1]]]},$={X:[[new m.Mesh(new m.CylinderGeometry(.2,0,.8,4,1,!1),o),[.5,0,0],[0,0,-Math.PI/2]]],Y:[[new m.Mesh(new m.CylinderGeometry(.2,0,.8,4,1,!1),o),[0,.5,0]]],Z:[[new m.Mesh(new m.CylinderGeometry(.2,0,.8,4,1,!1),o),[0,0,.5],[Math.PI/2,0,0]]],XY:[[new m.Mesh(H,o),[.85,.85,0],null,[3,3,.2]]],YZ:[[new m.Mesh(H,o),[0,.85,.85],null,[.2,3,3]]],XZ:[[new m.Mesh(H,o),[.85,0,.85],null,[3,.2,3]]],XYZX:[[new m.Mesh(new m.BoxGeometry(.2,.2,.2),o),[1.1,0,0]]],XYZY:[[new m.Mesh(new m.BoxGeometry(.2,.2,.2),o),[0,1.1,0]]],XYZZ:[[new m.Mesh(new m.BoxGeometry(.2,.2,.2),o),[0,0,1.1]]]},Je={X:[[new m.Line(U,h.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new m.Line(U,h.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new m.Line(U,h.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},Pe=ue=>{const Z=new m.Object3D;for(let ae in ue)for(let K=ue[ae].length;K--;){const S=ue[ae][K][0].clone(),Ae=ue[ae][K][1],Ee=ue[ae][K][2],Fe=ue[ae][K][3],He=ue[ae][K][4];S.name=ae,S.tag=He,Ae&&S.position.set(Ae[0],Ae[1],Ae[2]),Ee&&S.rotation.set(Ee[0],Ee[1],Ee[2]),Fe&&S.scale.set(Fe[0],Fe[1],Fe[2]),S.updateMatrix();const we=S.geometry.clone();we.applyMatrix4(S.matrix),S.geometry=we,S.renderOrder=1/0,S.position.set(0,0,0),S.rotation.set(0,0,0),S.scale.set(1,1,1),Z.add(S)}return Z};this.gizmo={},this.picker={},this.helper={},this.add(this.gizmo.translate=Pe(oe)),this.add(this.gizmo.rotate=Pe(ve)),this.add(this.gizmo.scale=Pe(ee)),this.add(this.picker.translate=Pe(_e)),this.add(this.picker.rotate=Pe(ge)),this.add(this.picker.scale=Pe($)),this.add(this.helper.translate=Pe(Ce)),this.add(this.helper.rotate=Pe(he)),this.add(this.helper.scale=Pe(Je)),this.picker.translate.visible=!1,this.picker.rotate.visible=!1,this.picker.scale.visible=!1}}class Kr extends m.Mesh{constructor(){super(new m.PlaneGeometry(1e5,1e5,2,2),new m.MeshBasicMaterial({visible:!1,wireframe:!0,side:m.DoubleSide,transparent:!0,opacity:.1,toneMapped:!1})),C(this,"isTransformControlsPlane",!0),C(this,"type","TransformControlsPlane"),C(this,"unitX",new m.Vector3(1,0,0)),C(this,"unitY",new m.Vector3(0,1,0)),C(this,"unitZ",new m.Vector3(0,0,1)),C(this,"tempVector",new m.Vector3),C(this,"dirVector",new m.Vector3),C(this,"alignVector",new m.Vector3),C(this,"tempMatrix",new m.Matrix4),C(this,"identityQuaternion",new m.Quaternion),C(this,"cameraQuaternion",new m.Quaternion),C(this,"worldPosition",new m.Vector3),C(this,"worldQuaternion",new m.Quaternion),C(this,"eye",new m.Vector3),C(this,"axis",null),C(this,"mode","translate"),C(this,"space","world"),C(this,"updateMatrixWorld",()=>{let l=this.space;switch(this.position.copy(this.worldPosition),this.mode==="scale"&&(l="local"),this.unitX.set(1,0,0).applyQuaternion(l==="local"?this.worldQuaternion:this.identityQuaternion),this.unitY.set(0,1,0).applyQuaternion(l==="local"?this.worldQuaternion:this.identityQuaternion),this.unitZ.set(0,0,1).applyQuaternion(l==="local"?this.worldQuaternion:this.identityQuaternion),this.alignVector.copy(this.unitY),this.mode){case"translate":case"scale":switch(this.axis){case"X":this.alignVector.copy(this.eye).cross(this.unitX),this.dirVector.copy(this.unitX).cross(this.alignVector);break;case"Y":this.alignVector.copy(this.eye).cross(this.unitY),this.dirVector.copy(this.unitY).cross(this.alignVector);break;case"Z":this.alignVector.copy(this.eye).cross(this.unitZ),this.dirVector.copy(this.unitZ).cross(this.alignVector);break;case"XY":this.dirVector.copy(this.unitZ);break;case"YZ":this.dirVector.copy(this.unitX);break;case"XZ":this.alignVector.copy(this.unitZ),this.dirVector.copy(this.unitY);break;case"XYZ":case"E":this.dirVector.set(0,0,0);break}break;case"rotate":default:this.dirVector.set(0,0,0)}this.dirVector.length()===0?this.quaternion.copy(this.cameraQuaternion):(this.tempMatrix.lookAt(this.tempVector.set(0,0,0),this.dirVector,this.alignVector),this.quaternion.setFromRotationMatrix(this.tempMatrix)),super.updateMatrixWorld()})}}const Gs=(L,l)=>(L%l+l)%l;class $r extends m.EventDispatcher{constructor(l,c){super(),C(this,"object",void 0),C(this,"domElement",void 0),C(this,"enabled",!0),C(this,"target",new m.Vector3),C(this,"minDistance",0),C(this,"maxDistance",1/0),C(this,"minZoom",0),C(this,"maxZoom",1/0),C(this,"minPolarAngle",0),C(this,"maxPolarAngle",Math.PI),C(this,"minAzimuthAngle",-1/0),C(this,"maxAzimuthAngle",1/0),C(this,"enableDamping",!1),C(this,"dampingFactor",.05),C(this,"enableZoom",!0),C(this,"zoomSpeed",1),C(this,"enableRotate",!0),C(this,"rotateSpeed",1),C(this,"enablePan",!0),C(this,"panSpeed",1),C(this,"screenSpacePanning",!0),C(this,"keyPanSpeed",7),C(this,"autoRotate",!1),C(this,"autoRotateSpeed",2),C(this,"reverseOrbit",!1),C(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),C(this,"mouseButtons",{LEFT:m.MOUSE.ROTATE,MIDDLE:m.MOUSE.DOLLY,RIGHT:m.MOUSE.PAN}),C(this,"touches",{ONE:m.TOUCH.ROTATE,TWO:m.TOUCH.DOLLY_PAN}),C(this,"target0",void 0),C(this,"position0",void 0),C(this,"zoom0",void 0),C(this,"_domElementKeyEvents",null),C(this,"getPolarAngle",void 0),C(this,"getAzimuthalAngle",void 0),C(this,"setPolarAngle",void 0),C(this,"setAzimuthalAngle",void 0),C(this,"getDistance",void 0),C(this,"listenToKeyEvents",void 0),C(this,"saveState",void 0),C(this,"reset",void 0),C(this,"update",void 0),C(this,"connect",void 0),C(this,"dispose",void 0),this.object=l,this.domElement=c,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object instanceof m.PerspectiveCamera?this.object.zoom:1,this.getPolarAngle=()=>y.phi,this.getAzimuthalAngle=()=>y.theta,this.setPolarAngle=M=>{let j=Gs(M,2*Math.PI),Y=y.phi;Y<0&&(Y+=2*Math.PI),j<0&&(j+=2*Math.PI);let J=Math.abs(j-Y);2*Math.PI-J<J&&(j<Y?j+=2*Math.PI:Y+=2*Math.PI),x.phi=j-Y,o.update()},this.setAzimuthalAngle=M=>{let j=Gs(M,2*Math.PI),Y=y.theta;Y<0&&(Y+=2*Math.PI),j<0&&(j+=2*Math.PI);let J=Math.abs(j-Y);2*Math.PI-J<J&&(j<Y?j+=2*Math.PI:Y+=2*Math.PI),x.theta=j-Y,o.update()},this.getDistance=()=>o.object.position.distanceTo(o.target),this.listenToKeyEvents=M=>{M.addEventListener("keydown",nt),this._domElementKeyEvents=M},this.saveState=()=>{o.target0.copy(o.target),o.position0.copy(o.object.position),o.zoom0=o.object instanceof m.PerspectiveCamera?o.object.zoom:1},this.reset=()=>{o.target.copy(o.target0),o.object.position.copy(o.position0),o.object instanceof m.PerspectiveCamera&&(o.object.zoom=o.zoom0,o.object.updateProjectionMatrix()),o.dispatchEvent(h),o.update(),b=v.NONE},this.update=(()=>{const M=new m.Vector3,j=new m.Quaternion().setFromUnitVectors(l.up,new m.Vector3(0,1,0)),Y=j.clone().invert(),J=new m.Vector3,de=new m.Quaternion,Oe=2*Math.PI;return function(){const en=o.object.position;M.copy(en).sub(o.target),M.applyQuaternion(j),y.setFromVector3(M),o.autoRotate&&b===v.NONE&&Ce(oe()),o.enableDamping?(y.theta+=x.theta*o.dampingFactor,y.phi+=x.phi*o.dampingFactor):(y.theta+=x.theta,y.phi+=x.phi);let Me=o.minAzimuthAngle,Se=o.maxAzimuthAngle;return isFinite(Me)&&isFinite(Se)&&(Me<-Math.PI?Me+=Oe:Me>Math.PI&&(Me-=Oe),Se<-Math.PI?Se+=Oe:Se>Math.PI&&(Se-=Oe),Me<=Se?y.theta=Math.max(Me,Math.min(Se,y.theta)):y.theta=y.theta>(Me+Se)/2?Math.max(Me,y.theta):Math.min(Se,y.theta)),y.phi=Math.max(o.minPolarAngle,Math.min(o.maxPolarAngle,y.phi)),y.makeSafe(),y.radius*=V,y.radius=Math.max(o.minDistance,Math.min(o.maxDistance,y.radius)),o.enableDamping===!0?o.target.addScaledVector(D,o.dampingFactor):o.target.add(D),M.setFromSpherical(y),M.applyQuaternion(Y),en.copy(o.target).add(M),o.object.lookAt(o.target),o.enableDamping===!0?(x.theta*=1-o.dampingFactor,x.phi*=1-o.dampingFactor,D.multiplyScalar(1-o.dampingFactor)):(x.set(0,0,0),D.set(0,0,0)),V=1,T||J.distanceToSquared(o.object.position)>w||8*(1-de.dot(o.object.quaternion))>w?(o.dispatchEvent(h),J.copy(o.object.position),de.copy(o.object.quaternion),T=!1,!0):!1}})(),this.connect=M=>{M===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),o.domElement=M,o.domElement.style.touchAction="none",o.domElement.addEventListener("contextmenu",Ue),o.domElement.addEventListener("pointerdown",Ft),o.domElement.addEventListener("pointercancel",tt),o.domElement.addEventListener("wheel",Be)},this.dispose=()=>{var M,j,Y,J,de,Oe;(M=o.domElement)===null||M===void 0||M.removeEventListener("contextmenu",Ue),(j=o.domElement)===null||j===void 0||j.removeEventListener("pointerdown",Ft),(Y=o.domElement)===null||Y===void 0||Y.removeEventListener("pointercancel",tt),(J=o.domElement)===null||J===void 0||J.removeEventListener("wheel",Be),(de=o.domElement)===null||de===void 0||de.ownerDocument.removeEventListener("pointermove",et),(Oe=o.domElement)===null||Oe===void 0||Oe.ownerDocument.removeEventListener("pointerup",pt),o._domElementKeyEvents!==null&&o._domElementKeyEvents.removeEventListener("keydown",nt)};const o=this,h={type:"change"},d={type:"start"},f={type:"end"},v={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let b=v.NONE;const w=1e-6,y=new m.Spherical,x=new m.Spherical;let V=1;const D=new m.Vector3;let T=!1;const E=new m.Vector2,O=new m.Vector2,N=new m.Vector2,X=new m.Vector2,z=new m.Vector2,ne=new m.Vector2,ce=new m.Vector2,H=new m.Vector2,U=new m.Vector2,q=[],se={};function oe(){return 2*Math.PI/60/60*o.autoRotateSpeed}function _e(){return Math.pow(.95,o.zoomSpeed)}function Ce(M){o.reverseOrbit?x.theta+=M:x.theta-=M}function ve(M){o.reverseOrbit?x.phi+=M:x.phi-=M}const he=(()=>{const M=new m.Vector3;return function(Y,J){M.setFromMatrixColumn(J,0),M.multiplyScalar(-Y),D.add(M)}})(),ge=(()=>{const M=new m.Vector3;return function(Y,J){o.screenSpacePanning===!0?M.setFromMatrixColumn(J,1):(M.setFromMatrixColumn(J,0),M.crossVectors(o.object.up,M)),M.multiplyScalar(Y),D.add(M)}})(),ee=(()=>{const M=new m.Vector3;return function(Y,J){const de=o.domElement;if(de&&o.object instanceof m.PerspectiveCamera&&o.object.isPerspectiveCamera){const Oe=o.object.position;M.copy(Oe).sub(o.target);let yt=M.length();yt*=Math.tan(o.object.fov/2*Math.PI/180),he(2*Y*yt/de.clientHeight,o.object.matrix),ge(2*J*yt/de.clientHeight,o.object.matrix)}else de&&o.object instanceof m.OrthographicCamera&&o.object.isOrthographicCamera?(he(Y*(o.object.right-o.object.left)/o.object.zoom/de.clientWidth,o.object.matrix),ge(J*(o.object.top-o.object.bottom)/o.object.zoom/de.clientHeight,o.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),o.enablePan=!1)}})();function $(M){o.object instanceof m.PerspectiveCamera&&o.object.isPerspectiveCamera?V/=M:o.object instanceof m.OrthographicCamera&&o.object.isOrthographicCamera?(o.object.zoom=Math.max(o.minZoom,Math.min(o.maxZoom,o.object.zoom*M)),o.object.updateProjectionMatrix(),T=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),o.enableZoom=!1)}function Je(M){o.object instanceof m.PerspectiveCamera&&o.object.isPerspectiveCamera?V*=M:o.object instanceof m.OrthographicCamera&&o.object.isOrthographicCamera?(o.object.zoom=Math.max(o.minZoom,Math.min(o.maxZoom,o.object.zoom/M)),o.object.updateProjectionMatrix(),T=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),o.enableZoom=!1)}function Pe(M){E.set(M.clientX,M.clientY)}function ue(M){ce.set(M.clientX,M.clientY)}function Z(M){X.set(M.clientX,M.clientY)}function ae(M){O.set(M.clientX,M.clientY),N.subVectors(O,E).multiplyScalar(o.rotateSpeed);const j=o.domElement;j&&(Ce(2*Math.PI*N.x/j.clientHeight),ve(2*Math.PI*N.y/j.clientHeight)),E.copy(O),o.update()}function K(M){H.set(M.clientX,M.clientY),U.subVectors(H,ce),U.y>0?$(_e()):U.y<0&&Je(_e()),ce.copy(H),o.update()}function S(M){z.set(M.clientX,M.clientY),ne.subVectors(z,X).multiplyScalar(o.panSpeed),ee(ne.x,ne.y),X.copy(z),o.update()}function Ae(M){M.deltaY<0?Je(_e()):M.deltaY>0&&$(_e()),o.update()}function Ee(M){let j=!1;switch(M.code){case o.keys.UP:ee(0,o.keyPanSpeed),j=!0;break;case o.keys.BOTTOM:ee(0,-o.keyPanSpeed),j=!0;break;case o.keys.LEFT:ee(o.keyPanSpeed,0),j=!0;break;case o.keys.RIGHT:ee(-o.keyPanSpeed,0),j=!0;break}j&&(M.preventDefault(),o.update())}function Fe(){if(q.length==1)E.set(q[0].pageX,q[0].pageY);else{const M=.5*(q[0].pageX+q[1].pageX),j=.5*(q[0].pageY+q[1].pageY);E.set(M,j)}}function He(){if(q.length==1)X.set(q[0].pageX,q[0].pageY);else{const M=.5*(q[0].pageX+q[1].pageX),j=.5*(q[0].pageY+q[1].pageY);X.set(M,j)}}function we(){const M=q[0].pageX-q[1].pageX,j=q[0].pageY-q[1].pageY,Y=Math.sqrt(M*M+j*j);ce.set(0,Y)}function Ie(){o.enableZoom&&we(),o.enablePan&&He()}function lt(){o.enableZoom&&we(),o.enableRotate&&Fe()}function ct(M){if(q.length==1)O.set(M.pageX,M.pageY);else{const Y=$e(M),J=.5*(M.pageX+Y.x),de=.5*(M.pageY+Y.y);O.set(J,de)}N.subVectors(O,E).multiplyScalar(o.rotateSpeed);const j=o.domElement;j&&(Ce(2*Math.PI*N.x/j.clientHeight),ve(2*Math.PI*N.y/j.clientHeight)),E.copy(O)}function _t(M){if(q.length==1)z.set(M.pageX,M.pageY);else{const j=$e(M),Y=.5*(M.pageX+j.x),J=.5*(M.pageY+j.y);z.set(Y,J)}ne.subVectors(z,X).multiplyScalar(o.panSpeed),ee(ne.x,ne.y),X.copy(z)}function wt(M){const j=$e(M),Y=M.pageX-j.x,J=M.pageY-j.y,de=Math.sqrt(Y*Y+J*J);H.set(0,de),U.set(0,Math.pow(H.y/ce.y,o.zoomSpeed)),$(U.y),ce.copy(H)}function _n(M){o.enableZoom&&wt(M),o.enablePan&&_t(M)}function wn(M){o.enableZoom&&wt(M),o.enableRotate&&ct(M)}function Ft(M){if(o.enabled!==!1){if(q.length===0){var j,Y;(j=o.domElement)===null||j===void 0||j.ownerDocument.addEventListener("pointermove",et),(Y=o.domElement)===null||Y===void 0||Y.ownerDocument.addEventListener("pointerup",pt)}xt(M),M.pointerType==="touch"?xn(M):Jt(M)}}function et(M){o.enabled!==!1&&(M.pointerType==="touch"?zt(M):Ht(M))}function pt(M){if(Te(M),q.length===0){var j,Y,J;(j=o.domElement)===null||j===void 0||j.releasePointerCapture(M.pointerId),(Y=o.domElement)===null||Y===void 0||Y.ownerDocument.removeEventListener("pointermove",et),(J=o.domElement)===null||J===void 0||J.ownerDocument.removeEventListener("pointerup",pt)}o.dispatchEvent(f),b=v.NONE}function tt(M){Te(M)}function Jt(M){let j;switch(M.button){case 0:j=o.mouseButtons.LEFT;break;case 1:j=o.mouseButtons.MIDDLE;break;case 2:j=o.mouseButtons.RIGHT;break;default:j=-1}switch(j){case m.MOUSE.DOLLY:if(o.enableZoom===!1)return;ue(M),b=v.DOLLY;break;case m.MOUSE.ROTATE:if(M.ctrlKey||M.metaKey||M.shiftKey){if(o.enablePan===!1)return;Z(M),b=v.PAN}else{if(o.enableRotate===!1)return;Pe(M),b=v.ROTATE}break;case m.MOUSE.PAN:if(M.ctrlKey||M.metaKey||M.shiftKey){if(o.enableRotate===!1)return;Pe(M),b=v.ROTATE}else{if(o.enablePan===!1)return;Z(M),b=v.PAN}break;default:b=v.NONE}b!==v.NONE&&o.dispatchEvent(d)}function Ht(M){if(o.enabled!==!1)switch(b){case v.ROTATE:if(o.enableRotate===!1)return;ae(M);break;case v.DOLLY:if(o.enableZoom===!1)return;K(M);break;case v.PAN:if(o.enablePan===!1)return;S(M);break}}function Be(M){o.enabled===!1||o.enableZoom===!1||b!==v.NONE&&b!==v.ROTATE||(M.preventDefault(),o.dispatchEvent(d),Ae(M),o.dispatchEvent(f))}function nt(M){o.enabled===!1||o.enablePan===!1||Ee(M)}function xn(M){switch(Ke(M),q.length){case 1:switch(o.touches.ONE){case m.TOUCH.ROTATE:if(o.enableRotate===!1)return;Fe(),b=v.TOUCH_ROTATE;break;case m.TOUCH.PAN:if(o.enablePan===!1)return;He(),b=v.TOUCH_PAN;break;default:b=v.NONE}break;case 2:switch(o.touches.TWO){case m.TOUCH.DOLLY_PAN:if(o.enableZoom===!1&&o.enablePan===!1)return;Ie(),b=v.TOUCH_DOLLY_PAN;break;case m.TOUCH.DOLLY_ROTATE:if(o.enableZoom===!1&&o.enableRotate===!1)return;lt(),b=v.TOUCH_DOLLY_ROTATE;break;default:b=v.NONE}break;default:b=v.NONE}b!==v.NONE&&o.dispatchEvent(d)}function zt(M){switch(Ke(M),b){case v.TOUCH_ROTATE:if(o.enableRotate===!1)return;ct(M),o.update();break;case v.TOUCH_PAN:if(o.enablePan===!1)return;_t(M),o.update();break;case v.TOUCH_DOLLY_PAN:if(o.enableZoom===!1&&o.enablePan===!1)return;_n(M),o.update();break;case v.TOUCH_DOLLY_ROTATE:if(o.enableZoom===!1&&o.enableRotate===!1)return;wn(M),o.update();break;default:b=v.NONE}}function Ue(M){o.enabled!==!1&&M.preventDefault()}function xt(M){q.push(M)}function Te(M){delete se[M.pointerId];for(let j=0;j<q.length;j++)if(q[j].pointerId==M.pointerId){q.splice(j,1);return}}function Ke(M){let j=se[M.pointerId];j===void 0&&(j=new m.Vector2,se[M.pointerId]=j),j.set(M.pageX,M.pageY)}function $e(M){const j=M.pointerId===q[0].pointerId?q[1]:q[0];return se[j.pointerId]}c!==void 0&&this.connect(c),this.update()}}class Yr extends m.Loader{constructor(l){super(l),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(c){return new Wr(c)}),this.register(function(c){return new so(c)}),this.register(function(c){return new ro(c)}),this.register(function(c){return new Hr(c)}),this.register(function(c){return new eo(c)}),this.register(function(c){return new to(c)}),this.register(function(c){return new no(c)}),this.register(function(c){return new Zr(c)}),this.register(function(c){return new io(c)}),this.register(function(c){return new Jr(c)}),this.register(function(c){return new Xr(c)}),this.register(function(c){return new oo(c)})}load(l,c,o,h){const d=this;let f;this.resourcePath!==""?f=this.resourcePath:this.path!==""?f=this.path:f=m.LoaderUtils.extractUrlBase(l),this.manager.itemStart(l);const v=function(w){h?h(w):console.error(w),d.manager.itemError(l),d.manager.itemEnd(l)},b=new m.FileLoader(this.manager);b.setPath(this.path),b.setResponseType("arraybuffer"),b.setRequestHeader(this.requestHeader),b.setWithCredentials(this.withCredentials),b.load(l,function(w){try{d.parse(w,f,function(y){c(y),d.manager.itemEnd(l)},v)}catch(y){v(y)}},o,v)}setDRACOLoader(l){return this.dracoLoader=l,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(l){return this.ktx2Loader=l,this}setMeshoptDecoder(l){return this.meshoptDecoder=l,this}register(l){return this.pluginCallbacks.indexOf(l)===-1&&this.pluginCallbacks.push(l),this}unregister(l){return this.pluginCallbacks.indexOf(l)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(l),1),this}parse(l,c,o,h){let d;const f={},v={};if(typeof l=="string")d=l;else if(m.LoaderUtils.decodeText(new Uint8Array(l,0,4))===Ks){try{f[W.KHR_BINARY_GLTF]=new ao(l)}catch(x){h&&h(x);return}d=f[W.KHR_BINARY_GLTF].content}else d=m.LoaderUtils.decodeText(new Uint8Array(l));const b=JSON.parse(d);if(b.asset===void 0||b.asset.version[0]<2){h&&h(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const w=new xo(b,{path:c||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});w.fileLoader.setRequestHeader(this.requestHeader);for(let y=0;y<this.pluginCallbacks.length;y++){const x=this.pluginCallbacks[y](w);v[x.name]=x,f[x.name]=!0}if(b.extensionsUsed)for(let y=0;y<b.extensionsUsed.length;++y){const x=b.extensionsUsed[y],V=b.extensionsRequired||[];switch(x){case W.KHR_MATERIALS_UNLIT:f[x]=new Qr;break;case W.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:f[x]=new po;break;case W.KHR_DRACO_MESH_COMPRESSION:f[x]=new lo(b,this.dracoLoader);break;case W.KHR_TEXTURE_TRANSFORM:f[x]=new co;break;case W.KHR_MESH_QUANTIZATION:f[x]=new uo;break;default:V.indexOf(x)>=0&&v[x]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+x+'".')}}w.setExtensions(f),w.setPlugins(v),w.parse(o,h)}parseAsync(l,c){const o=this;return new Promise(function(h,d){o.parse(l,c,h,d)})}}function qr(){let L={};return{get:function(l){return L[l]},add:function(l,c){L[l]=c},remove:function(l){delete L[l]},removeAll:function(){L={}}}}const W={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:"KHR_materials_pbrSpecularGlossiness",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression"};class Xr{constructor(l){this.parser=l,this.name=W.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const l=this.parser,c=this.parser.json.nodes||[];for(let o=0,h=c.length;o<h;o++){const d=c[o];d.extensions&&d.extensions[this.name]&&d.extensions[this.name].light!==void 0&&l._addNodeRef(this.cache,d.extensions[this.name].light)}}_loadLight(l){const c=this.parser,o="light:"+l;let h=c.cache.get(o);if(h)return h;const d=c.json,b=((d.extensions&&d.extensions[this.name]||{}).lights||[])[l];let w;const y=new m.Color(16777215);b.color!==void 0&&y.fromArray(b.color);const x=b.range!==void 0?b.range:0;switch(b.type){case"directional":w=new m.DirectionalLight(y),w.target.position.set(0,0,-1),w.add(w.target);break;case"point":w=new m.PointLight(y),w.distance=x;break;case"spot":w=new m.SpotLight(y),w.distance=x,b.spot=b.spot||{},b.spot.innerConeAngle=b.spot.innerConeAngle!==void 0?b.spot.innerConeAngle:0,b.spot.outerConeAngle=b.spot.outerConeAngle!==void 0?b.spot.outerConeAngle:Math.PI/4,w.angle=b.spot.outerConeAngle,w.penumbra=1-b.spot.innerConeAngle/b.spot.outerConeAngle,w.target.position.set(0,0,-1),w.add(w.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+b.type)}return w.position.set(0,0,0),w.decay=2,b.intensity!==void 0&&(w.intensity=b.intensity),w.name=c.createUniqueName(b.name||"light_"+l),h=Promise.resolve(w),c.cache.add(o,h),h}createNodeAttachment(l){const c=this,o=this.parser,d=o.json.nodes[l],v=(d.extensions&&d.extensions[this.name]||{}).light;return v===void 0?null:this._loadLight(v).then(function(b){return o._getNodeRef(c.cache,v,b)})}}class Qr{constructor(){this.name=W.KHR_MATERIALS_UNLIT}getMaterialType(){return m.MeshBasicMaterial}extendParams(l,c,o){const h=[];l.color=new m.Color(1,1,1),l.opacity=1;const d=c.pbrMetallicRoughness;if(d){if(Array.isArray(d.baseColorFactor)){const f=d.baseColorFactor;l.color.fromArray(f),l.opacity=f[3]}d.baseColorTexture!==void 0&&h.push(o.assignTexture(l,"map",d.baseColorTexture,m.sRGBEncoding))}return Promise.all(h)}}class Zr{constructor(l){this.parser=l,this.name=W.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(l,c){const h=this.parser.json.materials[l];if(!h.extensions||!h.extensions[this.name])return Promise.resolve();const d=h.extensions[this.name].emissiveStrength;return d!==void 0&&(c.emissiveIntensity=d),Promise.resolve()}}class Wr{constructor(l){this.parser=l,this.name=W.KHR_MATERIALS_CLEARCOAT}getMaterialType(l){const o=this.parser.json.materials[l];return!o.extensions||!o.extensions[this.name]?null:m.MeshPhysicalMaterial}extendMaterialParams(l,c){const o=this.parser,h=o.json.materials[l];if(!h.extensions||!h.extensions[this.name])return Promise.resolve();const d=[],f=h.extensions[this.name];if(f.clearcoatFactor!==void 0&&(c.clearcoat=f.clearcoatFactor),f.clearcoatTexture!==void 0&&d.push(o.assignTexture(c,"clearcoatMap",f.clearcoatTexture)),f.clearcoatRoughnessFactor!==void 0&&(c.clearcoatRoughness=f.clearcoatRoughnessFactor),f.clearcoatRoughnessTexture!==void 0&&d.push(o.assignTexture(c,"clearcoatRoughnessMap",f.clearcoatRoughnessTexture)),f.clearcoatNormalTexture!==void 0&&(d.push(o.assignTexture(c,"clearcoatNormalMap",f.clearcoatNormalTexture)),f.clearcoatNormalTexture.scale!==void 0)){const v=f.clearcoatNormalTexture.scale;c.clearcoatNormalScale=new m.Vector2(v,v)}return Promise.all(d)}}class Jr{constructor(l){this.parser=l,this.name=W.KHR_MATERIALS_IRIDESCENCE}getMaterialType(l){const o=this.parser.json.materials[l];return!o.extensions||!o.extensions[this.name]?null:m.MeshPhysicalMaterial}extendMaterialParams(l,c){const o=this.parser,h=o.json.materials[l];if(!h.extensions||!h.extensions[this.name])return Promise.resolve();const d=[],f=h.extensions[this.name];return f.iridescenceFactor!==void 0&&(c.iridescence=f.iridescenceFactor),f.iridescenceTexture!==void 0&&d.push(o.assignTexture(c,"iridescenceMap",f.iridescenceTexture)),f.iridescenceIor!==void 0&&(c.iridescenceIOR=f.iridescenceIor),c.iridescenceThicknessRange===void 0&&(c.iridescenceThicknessRange=[100,400]),f.iridescenceThicknessMinimum!==void 0&&(c.iridescenceThicknessRange[0]=f.iridescenceThicknessMinimum),f.iridescenceThicknessMaximum!==void 0&&(c.iridescenceThicknessRange[1]=f.iridescenceThicknessMaximum),f.iridescenceThicknessTexture!==void 0&&d.push(o.assignTexture(c,"iridescenceThicknessMap",f.iridescenceThicknessTexture)),Promise.all(d)}}class Hr{constructor(l){this.parser=l,this.name=W.KHR_MATERIALS_SHEEN}getMaterialType(l){const o=this.parser.json.materials[l];return!o.extensions||!o.extensions[this.name]?null:m.MeshPhysicalMaterial}extendMaterialParams(l,c){const o=this.parser,h=o.json.materials[l];if(!h.extensions||!h.extensions[this.name])return Promise.resolve();const d=[];c.sheenColor=new m.Color(0,0,0),c.sheenRoughness=0,c.sheen=1;const f=h.extensions[this.name];return f.sheenColorFactor!==void 0&&c.sheenColor.fromArray(f.sheenColorFactor),f.sheenRoughnessFactor!==void 0&&(c.sheenRoughness=f.sheenRoughnessFactor),f.sheenColorTexture!==void 0&&d.push(o.assignTexture(c,"sheenColorMap",f.sheenColorTexture,m.sRGBEncoding)),f.sheenRoughnessTexture!==void 0&&d.push(o.assignTexture(c,"sheenRoughnessMap",f.sheenRoughnessTexture)),Promise.all(d)}}class eo{constructor(l){this.parser=l,this.name=W.KHR_MATERIALS_TRANSMISSION}getMaterialType(l){const o=this.parser.json.materials[l];return!o.extensions||!o.extensions[this.name]?null:m.MeshPhysicalMaterial}extendMaterialParams(l,c){const o=this.parser,h=o.json.materials[l];if(!h.extensions||!h.extensions[this.name])return Promise.resolve();const d=[],f=h.extensions[this.name];return f.transmissionFactor!==void 0&&(c.transmission=f.transmissionFactor),f.transmissionTexture!==void 0&&d.push(o.assignTexture(c,"transmissionMap",f.transmissionTexture)),Promise.all(d)}}class to{constructor(l){this.parser=l,this.name=W.KHR_MATERIALS_VOLUME}getMaterialType(l){const o=this.parser.json.materials[l];return!o.extensions||!o.extensions[this.name]?null:m.MeshPhysicalMaterial}extendMaterialParams(l,c){const o=this.parser,h=o.json.materials[l];if(!h.extensions||!h.extensions[this.name])return Promise.resolve();const d=[],f=h.extensions[this.name];c.thickness=f.thicknessFactor!==void 0?f.thicknessFactor:0,f.thicknessTexture!==void 0&&d.push(o.assignTexture(c,"thicknessMap",f.thicknessTexture)),c.attenuationDistance=f.attenuationDistance||1/0;const v=f.attenuationColor||[1,1,1];return c.attenuationColor=new m.Color(v[0],v[1],v[2]),Promise.all(d)}}class no{constructor(l){this.parser=l,this.name=W.KHR_MATERIALS_IOR}getMaterialType(l){const o=this.parser.json.materials[l];return!o.extensions||!o.extensions[this.name]?null:m.MeshPhysicalMaterial}extendMaterialParams(l,c){const h=this.parser.json.materials[l];if(!h.extensions||!h.extensions[this.name])return Promise.resolve();const d=h.extensions[this.name];return c.ior=d.ior!==void 0?d.ior:1.5,Promise.resolve()}}class io{constructor(l){this.parser=l,this.name=W.KHR_MATERIALS_SPECULAR}getMaterialType(l){const o=this.parser.json.materials[l];return!o.extensions||!o.extensions[this.name]?null:m.MeshPhysicalMaterial}extendMaterialParams(l,c){const o=this.parser,h=o.json.materials[l];if(!h.extensions||!h.extensions[this.name])return Promise.resolve();const d=[],f=h.extensions[this.name];c.specularIntensity=f.specularFactor!==void 0?f.specularFactor:1,f.specularTexture!==void 0&&d.push(o.assignTexture(c,"specularIntensityMap",f.specularTexture));const v=f.specularColorFactor||[1,1,1];return c.specularColor=new m.Color(v[0],v[1],v[2]),f.specularColorTexture!==void 0&&d.push(o.assignTexture(c,"specularColorMap",f.specularColorTexture,m.sRGBEncoding)),Promise.all(d)}}class so{constructor(l){this.parser=l,this.name=W.KHR_TEXTURE_BASISU}loadTexture(l){const c=this.parser,o=c.json,h=o.textures[l];if(!h.extensions||!h.extensions[this.name])return null;const d=h.extensions[this.name],f=c.options.ktx2Loader;if(!f){if(o.extensionsRequired&&o.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return c.loadTextureImage(l,d.source,f)}}class ro{constructor(l){this.parser=l,this.name=W.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(l){const c=this.name,o=this.parser,h=o.json,d=h.textures[l];if(!d.extensions||!d.extensions[c])return null;const f=d.extensions[c],v=h.images[f.source];let b=o.textureLoader;if(v.uri){const w=o.options.manager.getHandler(v.uri);w!==null&&(b=w)}return this.detectSupport().then(function(w){if(w)return o.loadTextureImage(l,f.source,b);if(h.extensionsRequired&&h.extensionsRequired.indexOf(c)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return o.loadTexture(l)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(l){const c=new Image;c.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",c.onload=c.onerror=function(){l(c.height===1)}})),this.isSupported}}class oo{constructor(l){this.name=W.EXT_MESHOPT_COMPRESSION,this.parser=l}loadBufferView(l){const c=this.parser.json,o=c.bufferViews[l];if(o.extensions&&o.extensions[this.name]){const h=o.extensions[this.name],d=this.parser.getDependency("buffer",h.buffer),f=this.parser.options.meshoptDecoder;if(!f||!f.supported){if(c.extensionsRequired&&c.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return d.then(function(v){const b=h.byteOffset||0,w=h.byteLength||0,y=h.count,x=h.byteStride,V=new Uint8Array(v,b,w);return f.decodeGltfBufferAsync?f.decodeGltfBufferAsync(y,x,V,h.mode,h.filter).then(function(D){return D.buffer}):f.ready.then(function(){const D=new ArrayBuffer(y*x);return f.decodeGltfBuffer(new Uint8Array(D),y,x,V,h.mode,h.filter),D})})}else return null}}const Ks="glTF",fn=12,$s={JSON:1313821514,BIN:5130562};class ao{constructor(l){this.name=W.KHR_BINARY_GLTF,this.content=null,this.body=null;const c=new DataView(l,0,fn);if(this.header={magic:m.LoaderUtils.decodeText(new Uint8Array(l.slice(0,4))),version:c.getUint32(4,!0),length:c.getUint32(8,!0)},this.header.magic!==Ks)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const o=this.header.length-fn,h=new DataView(l,fn);let d=0;for(;d<o;){const f=h.getUint32(d,!0);d+=4;const v=h.getUint32(d,!0);if(d+=4,v===$s.JSON){const b=new Uint8Array(l,fn+d,f);this.content=m.LoaderUtils.decodeText(b)}else if(v===$s.BIN){const b=fn+d;this.body=l.slice(b,b+f)}d+=f}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class lo{constructor(l,c){if(!c)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=W.KHR_DRACO_MESH_COMPRESSION,this.json=l,this.dracoLoader=c,this.dracoLoader.preload()}decodePrimitive(l,c){const o=this.json,h=this.dracoLoader,d=l.extensions[this.name].bufferView,f=l.extensions[this.name].attributes,v={},b={},w={};for(const y in f){const x=Si[y]||y.toLowerCase();v[x]=f[y]}for(const y in l.attributes){const x=Si[y]||y.toLowerCase();if(f[y]!==void 0){const V=o.accessors[l.attributes[y]],D=vn[V.componentType];w[x]=D.name,b[x]=V.normalized===!0}}return c.getDependency("bufferView",d).then(function(y){return new Promise(function(x){h.decodeDracoFile(y,function(V){for(const D in V.attributes){const T=V.attributes[D],E=b[D];E!==void 0&&(T.normalized=E)}x(V)},v,w)})})}}class co{constructor(){this.name=W.KHR_TEXTURE_TRANSFORM}extendTexture(l,c){return c.texCoord!==void 0&&console.warn('THREE.GLTFLoader: Custom UV sets in "'+this.name+'" extension not yet supported.'),c.offset===void 0&&c.rotation===void 0&&c.scale===void 0||(l=l.clone(),c.offset!==void 0&&l.offset.fromArray(c.offset),c.rotation!==void 0&&(l.rotation=c.rotation),c.scale!==void 0&&l.repeat.fromArray(c.scale),l.needsUpdate=!0),l}}class Mi extends m.MeshStandardMaterial{constructor(l){super(),this.isGLTFSpecularGlossinessMaterial=!0;const c=["#ifdef USE_SPECULARMAP"," uniform sampler2D specularMap;","#endif"].join(`
|
|
9
|
-
`),
|
|
10
|
-
`),
|
|
11
|
-
`),
|
|
12
|
-
`),
|
|
13
|
-
`),v={specular:{value:new m.Color().setHex(16777215)},glossiness:{value:1},specularMap:{value:null},glossinessMap:{value:null}};this._extraUniforms=v,this.onBeforeCompile=function(b){for(const w in v)b.uniforms[w]=v[w];b.fragmentShader=b.fragmentShader.replace("uniform float roughness;","uniform vec3 specular;").replace("uniform float metalness;","uniform float glossiness;").replace("#include <roughnessmap_pars_fragment>",c).replace("#include <metalnessmap_pars_fragment>",o).replace("#include <roughnessmap_fragment>",h).replace("#include <metalnessmap_fragment>",d).replace("#include <lights_physical_fragment>",f)},Object.defineProperties(this,{specular:{get:function(){return v.specular.value},set:function(b){v.specular.value=b}},specularMap:{get:function(){return v.specularMap.value},set:function(b){v.specularMap.value=b,b?this.defines.USE_SPECULARMAP="":delete this.defines.USE_SPECULARMAP}},glossiness:{get:function(){return v.glossiness.value},set:function(b){v.glossiness.value=b}},glossinessMap:{get:function(){return v.glossinessMap.value},set:function(b){v.glossinessMap.value=b,b?(this.defines.USE_GLOSSINESSMAP="",this.defines.USE_UV=""):(delete this.defines.USE_GLOSSINESSMAP,delete this.defines.USE_UV)}}}),delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this.setValues(l)}copy(l){return super.copy(l),this.specularMap=l.specularMap,this.specular.copy(l.specular),this.glossinessMap=l.glossinessMap,this.glossiness=l.glossiness,delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this}}class po{constructor(){this.name=W.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,this.specularGlossinessParams=["color","map","lightMap","lightMapIntensity","aoMap","aoMapIntensity","emissive","emissiveIntensity","emissiveMap","bumpMap","bumpScale","normalMap","normalMapType","displacementMap","displacementScale","displacementBias","specularMap","specular","glossinessMap","glossiness","alphaMap","envMap","envMapIntensity","refractionRatio"]}getMaterialType(){return Mi}extendParams(l,c,o){const h=c.extensions[this.name];l.color=new m.Color(1,1,1),l.opacity=1;const d=[];if(Array.isArray(h.diffuseFactor)){const f=h.diffuseFactor;l.color.fromArray(f),l.opacity=f[3]}if(h.diffuseTexture!==void 0&&d.push(o.assignTexture(l,"map",h.diffuseTexture,m.sRGBEncoding)),l.emissive=new m.Color(0,0,0),l.glossiness=h.glossinessFactor!==void 0?h.glossinessFactor:1,l.specular=new m.Color(1,1,1),Array.isArray(h.specularFactor)&&l.specular.fromArray(h.specularFactor),h.specularGlossinessTexture!==void 0){const f=h.specularGlossinessTexture;d.push(o.assignTexture(l,"glossinessMap",f)),d.push(o.assignTexture(l,"specularMap",f,m.sRGBEncoding))}return Promise.all(d)}createMaterial(l){const c=new Mi(l);return c.fog=!0,c.color=l.color,c.map=l.map===void 0?null:l.map,c.lightMap=null,c.lightMapIntensity=1,c.aoMap=l.aoMap===void 0?null:l.aoMap,c.aoMapIntensity=1,c.emissive=l.emissive,c.emissiveIntensity=l.emissiveIntensity===void 0?1:l.emissiveIntensity,c.emissiveMap=l.emissiveMap===void 0?null:l.emissiveMap,c.bumpMap=l.bumpMap===void 0?null:l.bumpMap,c.bumpScale=1,c.normalMap=l.normalMap===void 0?null:l.normalMap,c.normalMapType=m.TangentSpaceNormalMap,l.normalScale&&(c.normalScale=l.normalScale),c.displacementMap=null,c.displacementScale=1,c.displacementBias=0,c.specularMap=l.specularMap===void 0?null:l.specularMap,c.specular=l.specular,c.glossinessMap=l.glossinessMap===void 0?null:l.glossinessMap,c.glossiness=l.glossiness,c.alphaMap=null,c.envMap=l.envMap===void 0?null:l.envMap,c.envMapIntensity=1,c.refractionRatio=.98,c}}class uo{constructor(){this.name=W.KHR_MESH_QUANTIZATION}}class Ys extends m.Interpolant{constructor(l,c,o,h){super(l,c,o,h)}copySampleValue_(l){const c=this.resultBuffer,o=this.sampleValues,h=this.valueSize,d=l*h*3+h;for(let f=0;f!==h;f++)c[f]=o[d+f];return c}interpolate_(l,c,o,h){const d=this.resultBuffer,f=this.sampleValues,v=this.valueSize,b=v*2,w=v*3,y=h-c,x=(o-c)/y,V=x*x,D=V*x,T=l*w,E=T-w,O=-2*D+3*V,N=D-V,X=1-O,z=N-V+x;for(let ne=0;ne!==v;ne++){const ce=f[E+ne+v],H=f[E+ne+b]*y,U=f[T+ne+v],q=f[T+ne]*y;d[ne]=X*ce+z*H+O*U+N*q}return d}}const ho=new m.Quaternion;class mo extends Ys{interpolate_(l,c,o,h){const d=super.interpolate_(l,c,o,h);return ho.fromArray(d).normalize().toArray(d),d}}const at={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},vn={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},qs={9728:m.NearestFilter,9729:m.LinearFilter,9984:m.NearestMipmapNearestFilter,9985:m.LinearMipmapNearestFilter,9986:m.NearestMipmapLinearFilter,9987:m.LinearMipmapLinearFilter},Xs={33071:m.ClampToEdgeWrapping,33648:m.MirroredRepeatWrapping,10497:m.RepeatWrapping},Qs={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Si={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv2",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},gt={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},fo={CUBICSPLINE:void 0,LINEAR:m.InterpolateLinear,STEP:m.InterpolateDiscrete},Li={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function vo(L){return L.DefaultMaterial===void 0&&(L.DefaultMaterial=new m.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:m.FrontSide})),L.DefaultMaterial}function bn(L,l,c){for(const o in c.extensions)L[o]===void 0&&(l.userData.gltfExtensions=l.userData.gltfExtensions||{},l.userData.gltfExtensions[o]=c.extensions[o])}function Nt(L,l){l.extras!==void 0&&(typeof l.extras=="object"?Object.assign(L.userData,l.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+l.extras))}function bo(L,l,c){let o=!1,h=!1,d=!1;for(let w=0,y=l.length;w<y;w++){const x=l[w];if(x.POSITION!==void 0&&(o=!0),x.NORMAL!==void 0&&(h=!0),x.COLOR_0!==void 0&&(d=!0),o&&h&&d)break}if(!o&&!h&&!d)return Promise.resolve(L);const f=[],v=[],b=[];for(let w=0,y=l.length;w<y;w++){const x=l[w];if(o){const V=x.POSITION!==void 0?c.getDependency("accessor",x.POSITION):L.attributes.position;f.push(V)}if(h){const V=x.NORMAL!==void 0?c.getDependency("accessor",x.NORMAL):L.attributes.normal;v.push(V)}if(d){const V=x.COLOR_0!==void 0?c.getDependency("accessor",x.COLOR_0):L.attributes.color;b.push(V)}}return Promise.all([Promise.all(f),Promise.all(v),Promise.all(b)]).then(function(w){const y=w[0],x=w[1],V=w[2];return o&&(L.morphAttributes.position=y),h&&(L.morphAttributes.normal=x),d&&(L.morphAttributes.color=V),L.morphTargetsRelative=!0,L})}function go(L,l){if(L.updateMorphTargets(),l.weights!==void 0)for(let c=0,o=l.weights.length;c<o;c++)L.morphTargetInfluences[c]=l.weights[c];if(l.extras&&Array.isArray(l.extras.targetNames)){const c=l.extras.targetNames;if(L.morphTargetInfluences.length===c.length){L.morphTargetDictionary={};for(let o=0,h=c.length;o<h;o++)L.morphTargetDictionary[c[o]]=o}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function _o(L){const l=L.extensions&&L.extensions[W.KHR_DRACO_MESH_COMPRESSION];let c;return l?c="draco:"+l.bufferView+":"+l.indices+":"+Zs(l.attributes):c=L.indices+":"+Zs(L.attributes)+":"+L.mode,c}function Zs(L){let l="";const c=Object.keys(L).sort();for(let o=0,h=c.length;o<h;o++)l+=c[o]+":"+L[c[o]]+";";return l}function Vi(L){switch(L){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function wo(L){return L.search(/\.jpe?g($|\?)/i)>0||L.search(/^data\:image\/jpeg/)===0?"image/jpeg":L.search(/\.webp($|\?)/i)>0||L.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}class xo{constructor(l={},c={}){var o,h;this.json=l,this.extensions={},this.plugins={},this.options=c,this.cache=new qr,this.associations=new Map,this.primitiveCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};const d=typeof navigator<"u"&&/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,f=typeof navigator<"u"&&((o=navigator.userAgent)===null||o===void 0?void 0:o.indexOf("Firefox"))>-1,v=typeof navigator<"u"&&f?(h=navigator.userAgent)===null||h===void 0?void 0:h.match(/Firefox\/([0-9]+)\./)[1]:-1;typeof createImageBitmap>"u"||d||f&&v<98?this.textureLoader=new m.TextureLoader(this.options.manager):this.textureLoader=new m.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new m.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(l){this.extensions=l}setPlugins(l){this.plugins=l}parse(l,c){const o=this,h=this.json,d=this.extensions;this.cache.removeAll(),this._invokeAll(function(f){return f._markDefs&&f._markDefs()}),Promise.all(this._invokeAll(function(f){return f.beforeRoot&&f.beforeRoot()})).then(function(){return Promise.all([o.getDependencies("scene"),o.getDependencies("animation"),o.getDependencies("camera")])}).then(function(f){const v={scene:f[0][h.scene||0],scenes:f[0],animations:f[1],cameras:f[2],asset:h.asset,parser:o,userData:{}};bn(d,v,h),Nt(v,h),Promise.all(o._invokeAll(function(b){return b.afterRoot&&b.afterRoot(v)})).then(function(){l(v)})}).catch(c)}_markDefs(){const l=this.json.nodes||[],c=this.json.skins||[],o=this.json.meshes||[];for(let h=0,d=c.length;h<d;h++){const f=c[h].joints;for(let v=0,b=f.length;v<b;v++)l[f[v]].isBone=!0}for(let h=0,d=l.length;h<d;h++){const f=l[h];f.mesh!==void 0&&(this._addNodeRef(this.meshCache,f.mesh),f.skin!==void 0&&(o[f.mesh].isSkinnedMesh=!0)),f.camera!==void 0&&this._addNodeRef(this.cameraCache,f.camera)}}_addNodeRef(l,c){c!==void 0&&(l.refs[c]===void 0&&(l.refs[c]=l.uses[c]=0),l.refs[c]++)}_getNodeRef(l,c,o){if(l.refs[c]<=1)return o;const h=o.clone(),d=(f,v)=>{const b=this.associations.get(f);b!=null&&this.associations.set(v,b);for(const[w,y]of f.children.entries())d(y,v.children[w])};return d(o,h),h.name+="_instance_"+l.uses[c]++,h}_invokeOne(l){const c=Object.values(this.plugins);c.push(this);for(let o=0;o<c.length;o++){const h=l(c[o]);if(h)return h}return null}_invokeAll(l){const c=Object.values(this.plugins);c.unshift(this);const o=[];for(let h=0;h<c.length;h++){const d=l(c[h]);d&&o.push(d)}return o}getDependency(l,c){const o=l+":"+c;let h=this.cache.get(o);if(!h){switch(l){case"scene":h=this.loadScene(c);break;case"node":h=this.loadNode(c);break;case"mesh":h=this._invokeOne(function(d){return d.loadMesh&&d.loadMesh(c)});break;case"accessor":h=this.loadAccessor(c);break;case"bufferView":h=this._invokeOne(function(d){return d.loadBufferView&&d.loadBufferView(c)});break;case"buffer":h=this.loadBuffer(c);break;case"material":h=this._invokeOne(function(d){return d.loadMaterial&&d.loadMaterial(c)});break;case"texture":h=this._invokeOne(function(d){return d.loadTexture&&d.loadTexture(c)});break;case"skin":h=this.loadSkin(c);break;case"animation":h=this._invokeOne(function(d){return d.loadAnimation&&d.loadAnimation(c)});break;case"camera":h=this.loadCamera(c);break;default:throw new Error("Unknown type: "+l)}this.cache.add(o,h)}return h}getDependencies(l){let c=this.cache.get(l);if(!c){const o=this,h=this.json[l+(l==="mesh"?"es":"s")]||[];c=Promise.all(h.map(function(d,f){return o.getDependency(l,f)})),this.cache.add(l,c)}return c}loadBuffer(l){const c=this.json.buffers[l],o=this.fileLoader;if(c.type&&c.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+c.type+" buffer type is not supported.");if(c.uri===void 0&&l===0)return Promise.resolve(this.extensions[W.KHR_BINARY_GLTF].body);const h=this.options;return new Promise(function(d,f){o.load(m.LoaderUtils.resolveURL(c.uri,h.path),d,void 0,function(){f(new Error('THREE.GLTFLoader: Failed to load buffer "'+c.uri+'".'))})})}loadBufferView(l){const c=this.json.bufferViews[l];return this.getDependency("buffer",c.buffer).then(function(o){const h=c.byteLength||0,d=c.byteOffset||0;return o.slice(d,d+h)})}loadAccessor(l){const c=this,o=this.json,h=this.json.accessors[l];if(h.bufferView===void 0&&h.sparse===void 0)return Promise.resolve(null);const d=[];return h.bufferView!==void 0?d.push(this.getDependency("bufferView",h.bufferView)):d.push(null),h.sparse!==void 0&&(d.push(this.getDependency("bufferView",h.sparse.indices.bufferView)),d.push(this.getDependency("bufferView",h.sparse.values.bufferView))),Promise.all(d).then(function(f){const v=f[0],b=Qs[h.type],w=vn[h.componentType],y=w.BYTES_PER_ELEMENT,x=y*b,V=h.byteOffset||0,D=h.bufferView!==void 0?o.bufferViews[h.bufferView].byteStride:void 0,T=h.normalized===!0;let E,O;if(D&&D!==x){const N=Math.floor(V/D),X="InterleavedBuffer:"+h.bufferView+":"+h.componentType+":"+N+":"+h.count;let z=c.cache.get(X);z||(E=new w(v,N*D,h.count*D/y),z=new m.InterleavedBuffer(E,D/y),c.cache.add(X,z)),O=new m.InterleavedBufferAttribute(z,b,V%D/y,T)}else v===null?E=new w(h.count*b):E=new w(v,V,h.count*b),O=new m.BufferAttribute(E,b,T);if(h.sparse!==void 0){const N=Qs.SCALAR,X=vn[h.sparse.indices.componentType],z=h.sparse.indices.byteOffset||0,ne=h.sparse.values.byteOffset||0,ce=new X(f[1],z,h.sparse.count*N),H=new w(f[2],ne,h.sparse.count*b);v!==null&&(O=new m.BufferAttribute(O.array.slice(),O.itemSize,O.normalized));for(let U=0,q=ce.length;U<q;U++){const se=ce[U];if(O.setX(se,H[U*b]),b>=2&&O.setY(se,H[U*b+1]),b>=3&&O.setZ(se,H[U*b+2]),b>=4&&O.setW(se,H[U*b+3]),b>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return O})}loadTexture(l){const c=this.json,o=this.options,d=c.textures[l].source,f=c.images[d];let v=this.textureLoader;if(f.uri){const b=o.manager.getHandler(f.uri);b!==null&&(v=b)}return this.loadTextureImage(l,d,v)}loadTextureImage(l,c,o){const h=this,d=this.json,f=d.textures[l],v=d.images[c],b=(v.uri||v.bufferView)+":"+f.sampler;if(this.textureCache[b])return this.textureCache[b];const w=this.loadImageSource(c,o).then(function(y){y.flipY=!1,f.name&&(y.name=f.name);const V=(d.samplers||{})[f.sampler]||{};return y.magFilter=qs[V.magFilter]||m.LinearFilter,y.minFilter=qs[V.minFilter]||m.LinearMipmapLinearFilter,y.wrapS=Xs[V.wrapS]||m.RepeatWrapping,y.wrapT=Xs[V.wrapT]||m.RepeatWrapping,h.associations.set(y,{textures:l}),y}).catch(function(){return null});return this.textureCache[b]=w,w}loadImageSource(l,c){const o=this,h=this.json,d=this.options;if(this.sourceCache[l]!==void 0)return this.sourceCache[l].then(x=>x.clone());const f=h.images[l],v=self.URL||self.webkitURL;let b=f.uri||"",w=!1;if(f.bufferView!==void 0)b=o.getDependency("bufferView",f.bufferView).then(function(x){w=!0;const V=new Blob([x],{type:f.mimeType});return b=v.createObjectURL(V),b});else if(f.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+l+" is missing URI and bufferView");const y=Promise.resolve(b).then(function(x){return new Promise(function(V,D){let T=V;c.isImageBitmapLoader===!0&&(T=function(E){const O=new m.Texture(E);O.needsUpdate=!0,V(O)}),c.load(m.LoaderUtils.resolveURL(x,d.path),T,void 0,D)})}).then(function(x){return w===!0&&v.revokeObjectURL(b),x.userData.mimeType=f.mimeType||wo(f.uri),x}).catch(function(x){throw console.error("THREE.GLTFLoader: Couldn't load texture",b),x});return this.sourceCache[l]=y,y}assignTexture(l,c,o,h){const d=this;return this.getDependency("texture",o.index).then(function(f){if(o.texCoord!==void 0&&o.texCoord!=0&&!(c==="aoMap"&&o.texCoord==1)&&console.warn("THREE.GLTFLoader: Custom UV set "+o.texCoord+" for texture "+c+" not yet supported."),d.extensions[W.KHR_TEXTURE_TRANSFORM]){const v=o.extensions!==void 0?o.extensions[W.KHR_TEXTURE_TRANSFORM]:void 0;if(v){const b=d.associations.get(f);f=d.extensions[W.KHR_TEXTURE_TRANSFORM].extendTexture(f,v),d.associations.set(f,b)}}return h!==void 0&&(f.encoding=h),l[c]=f,f})}assignFinalMaterial(l){const c=l.geometry;let o=l.material;const h=c.attributes.tangent===void 0,d=c.attributes.color!==void 0,f=c.attributes.normal===void 0;if(l.isPoints){const v="PointsMaterial:"+o.uuid;let b=this.cache.get(v);b||(b=new m.PointsMaterial,m.Material.prototype.copy.call(b,o),b.color.copy(o.color),b.map=o.map,b.sizeAttenuation=!1,this.cache.add(v,b)),o=b}else if(l.isLine){const v="LineBasicMaterial:"+o.uuid;let b=this.cache.get(v);b||(b=new m.LineBasicMaterial,m.Material.prototype.copy.call(b,o),b.color.copy(o.color),this.cache.add(v,b)),o=b}if(h||d||f){let v="ClonedMaterial:"+o.uuid+":";o.isGLTFSpecularGlossinessMaterial&&(v+="specular-glossiness:"),h&&(v+="derivative-tangents:"),d&&(v+="vertex-colors:"),f&&(v+="flat-shading:");let b=this.cache.get(v);b||(b=o.clone(),d&&(b.vertexColors=!0),f&&(b.flatShading=!0),h&&(b.normalScale&&(b.normalScale.y*=-1),b.clearcoatNormalScale&&(b.clearcoatNormalScale.y*=-1)),this.cache.add(v,b),this.associations.set(b,this.associations.get(o))),o=b}o.aoMap&&c.attributes.uv2===void 0&&c.attributes.uv!==void 0&&c.setAttribute("uv2",c.attributes.uv),l.material=o}getMaterialType(){return m.MeshStandardMaterial}loadMaterial(l){const c=this,o=this.json,h=this.extensions,d=o.materials[l];let f;const v={},b=d.extensions||{},w=[];if(b[W.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]){const x=h[W.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS];f=x.getMaterialType(),w.push(x.extendParams(v,d,c))}else if(b[W.KHR_MATERIALS_UNLIT]){const x=h[W.KHR_MATERIALS_UNLIT];f=x.getMaterialType(),w.push(x.extendParams(v,d,c))}else{const x=d.pbrMetallicRoughness||{};if(v.color=new m.Color(1,1,1),v.opacity=1,Array.isArray(x.baseColorFactor)){const V=x.baseColorFactor;v.color.fromArray(V),v.opacity=V[3]}x.baseColorTexture!==void 0&&w.push(c.assignTexture(v,"map",x.baseColorTexture,m.sRGBEncoding)),v.metalness=x.metallicFactor!==void 0?x.metallicFactor:1,v.roughness=x.roughnessFactor!==void 0?x.roughnessFactor:1,x.metallicRoughnessTexture!==void 0&&(w.push(c.assignTexture(v,"metalnessMap",x.metallicRoughnessTexture)),w.push(c.assignTexture(v,"roughnessMap",x.metallicRoughnessTexture))),f=this._invokeOne(function(V){return V.getMaterialType&&V.getMaterialType(l)}),w.push(Promise.all(this._invokeAll(function(V){return V.extendMaterialParams&&V.extendMaterialParams(l,v)})))}d.doubleSided===!0&&(v.side=m.DoubleSide);const y=d.alphaMode||Li.OPAQUE;if(y===Li.BLEND?(v.transparent=!0,v.depthWrite=!1):(v.transparent=!1,y===Li.MASK&&(v.alphaTest=d.alphaCutoff!==void 0?d.alphaCutoff:.5)),d.normalTexture!==void 0&&f!==m.MeshBasicMaterial&&(w.push(c.assignTexture(v,"normalMap",d.normalTexture)),v.normalScale=new m.Vector2(1,1),d.normalTexture.scale!==void 0)){const x=d.normalTexture.scale;v.normalScale.set(x,x)}return d.occlusionTexture!==void 0&&f!==m.MeshBasicMaterial&&(w.push(c.assignTexture(v,"aoMap",d.occlusionTexture)),d.occlusionTexture.strength!==void 0&&(v.aoMapIntensity=d.occlusionTexture.strength)),d.emissiveFactor!==void 0&&f!==m.MeshBasicMaterial&&(v.emissive=new m.Color().fromArray(d.emissiveFactor)),d.emissiveTexture!==void 0&&f!==m.MeshBasicMaterial&&w.push(c.assignTexture(v,"emissiveMap",d.emissiveTexture,m.sRGBEncoding)),Promise.all(w).then(function(){let x;return f===Mi?x=h[W.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(v):x=new f(v),d.name&&(x.name=d.name),Nt(x,d),c.associations.set(x,{materials:l}),d.extensions&&bn(h,x,d),x})}createUniqueName(l){const c=m.PropertyBinding.sanitizeNodeName(l||"");let o=c;for(let h=1;this.nodeNamesUsed[o];++h)o=c+"_"+h;return this.nodeNamesUsed[o]=!0,o}loadGeometries(l){const c=this,o=this.extensions,h=this.primitiveCache;function d(v){return o[W.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(v,c).then(function(b){return Js(b,v,c)})}const f=[];for(let v=0,b=l.length;v<b;v++){const w=l[v],y=_o(w),x=h[y];if(x)f.push(x.promise);else{let V;w.extensions&&w.extensions[W.KHR_DRACO_MESH_COMPRESSION]?V=d(w):V=Js(new m.BufferGeometry,w,c),h[y]={primitive:w,promise:V},f.push(V)}}return Promise.all(f)}loadMesh(l){const c=this,o=this.json,h=this.extensions,d=o.meshes[l],f=d.primitives,v=[];for(let b=0,w=f.length;b<w;b++){const y=f[b].material===void 0?vo(this.cache):this.getDependency("material",f[b].material);v.push(y)}return v.push(c.loadGeometries(f)),Promise.all(v).then(function(b){const w=b.slice(0,b.length-1),y=b[b.length-1],x=[];for(let D=0,T=y.length;D<T;D++){const E=y[D],O=f[D];let N;const X=w[D];if(O.mode===at.TRIANGLES||O.mode===at.TRIANGLE_STRIP||O.mode===at.TRIANGLE_FAN||O.mode===void 0)N=d.isSkinnedMesh===!0?new m.SkinnedMesh(E,X):new m.Mesh(E,X),N.isSkinnedMesh===!0&&!N.geometry.attributes.skinWeight.normalized&&N.normalizeSkinWeights(),O.mode===at.TRIANGLE_STRIP?N.geometry=Hs(N.geometry,m.TriangleStripDrawMode):O.mode===at.TRIANGLE_FAN&&(N.geometry=Hs(N.geometry,m.TriangleFanDrawMode));else if(O.mode===at.LINES)N=new m.LineSegments(E,X);else if(O.mode===at.LINE_STRIP)N=new m.Line(E,X);else if(O.mode===at.LINE_LOOP)N=new m.LineLoop(E,X);else if(O.mode===at.POINTS)N=new m.Points(E,X);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+O.mode);Object.keys(N.geometry.morphAttributes).length>0&&go(N,d),N.name=c.createUniqueName(d.name||"mesh_"+l),Nt(N,d),O.extensions&&bn(h,N,O),c.assignFinalMaterial(N),x.push(N)}for(let D=0,T=x.length;D<T;D++)c.associations.set(x[D],{meshes:l,primitives:D});if(x.length===1)return x[0];const V=new m.Group;c.associations.set(V,{meshes:l});for(let D=0,T=x.length;D<T;D++)V.add(x[D]);return V})}loadCamera(l){let c;const o=this.json.cameras[l],h=o[o.type];if(!h){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return o.type==="perspective"?c=new m.PerspectiveCamera(m.MathUtils.radToDeg(h.yfov),h.aspectRatio||1,h.znear||1,h.zfar||2e6):o.type==="orthographic"&&(c=new m.OrthographicCamera(-h.xmag,h.xmag,h.ymag,-h.ymag,h.znear,h.zfar)),o.name&&(c.name=this.createUniqueName(o.name)),Nt(c,o),Promise.resolve(c)}loadSkin(l){const c=this.json.skins[l],o={joints:c.joints};return c.inverseBindMatrices===void 0?Promise.resolve(o):this.getDependency("accessor",c.inverseBindMatrices).then(function(h){return o.inverseBindMatrices=h,o})}loadAnimation(l){const o=this.json.animations[l],h=[],d=[],f=[],v=[],b=[];for(let w=0,y=o.channels.length;w<y;w++){const x=o.channels[w],V=o.samplers[x.sampler],D=x.target,T=D.node,E=o.parameters!==void 0?o.parameters[V.input]:V.input,O=o.parameters!==void 0?o.parameters[V.output]:V.output;h.push(this.getDependency("node",T)),d.push(this.getDependency("accessor",E)),f.push(this.getDependency("accessor",O)),v.push(V),b.push(D)}return Promise.all([Promise.all(h),Promise.all(d),Promise.all(f),Promise.all(v),Promise.all(b)]).then(function(w){const y=w[0],x=w[1],V=w[2],D=w[3],T=w[4],E=[];for(let N=0,X=y.length;N<X;N++){const z=y[N],ne=x[N],ce=V[N],H=D[N],U=T[N];if(z===void 0)continue;z.updateMatrix();let q;switch(gt[U.path]){case gt.weights:q=m.NumberKeyframeTrack;break;case gt.rotation:q=m.QuaternionKeyframeTrack;break;case gt.position:case gt.scale:default:q=m.VectorKeyframeTrack;break}const se=z.name?z.name:z.uuid,oe=H.interpolation!==void 0?fo[H.interpolation]:m.InterpolateLinear,_e=[];gt[U.path]===gt.weights?z.traverse(function(ve){ve.morphTargetInfluences&&_e.push(ve.name?ve.name:ve.uuid)}):_e.push(se);let Ce=ce.array;if(ce.normalized){const ve=Vi(Ce.constructor),he=new Float32Array(Ce.length);for(let ge=0,ee=Ce.length;ge<ee;ge++)he[ge]=Ce[ge]*ve;Ce=he}for(let ve=0,he=_e.length;ve<he;ve++){const ge=new q(_e[ve]+"."+gt[U.path],ne.array,Ce,oe);H.interpolation==="CUBICSPLINE"&&(ge.createInterpolant=function($){const Je=this instanceof m.QuaternionKeyframeTrack?mo:Ys;return new Je(this.times,this.values,this.getValueSize()/3,$)},ge.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0),E.push(ge)}}const O=o.name?o.name:"animation_"+l;return new m.AnimationClip(O,void 0,E)})}createNodeMesh(l){const c=this.json,o=this,h=c.nodes[l];return h.mesh===void 0?null:o.getDependency("mesh",h.mesh).then(function(d){const f=o._getNodeRef(o.meshCache,h.mesh,d);return h.weights!==void 0&&f.traverse(function(v){if(v.isMesh)for(let b=0,w=h.weights.length;b<w;b++)v.morphTargetInfluences[b]=h.weights[b]}),f})}loadNode(l){const c=this.json,o=this.extensions,h=this,d=c.nodes[l],f=d.name?h.createUniqueName(d.name):"";return function(){const v=[],b=h._invokeOne(function(w){return w.createNodeMesh&&w.createNodeMesh(l)});return b&&v.push(b),d.camera!==void 0&&v.push(h.getDependency("camera",d.camera).then(function(w){return h._getNodeRef(h.cameraCache,d.camera,w)})),h._invokeAll(function(w){return w.createNodeAttachment&&w.createNodeAttachment(l)}).forEach(function(w){v.push(w)}),Promise.all(v)}().then(function(v){let b;if(d.isBone===!0?b=new m.Bone:v.length>1?b=new m.Group:v.length===1?b=v[0]:b=new m.Object3D,b!==v[0])for(let w=0,y=v.length;w<y;w++)b.add(v[w]);if(d.name&&(b.userData.name=d.name,b.name=f),Nt(b,d),d.extensions&&bn(o,b,d),d.matrix!==void 0){const w=new m.Matrix4;w.fromArray(d.matrix),b.applyMatrix4(w)}else d.translation!==void 0&&b.position.fromArray(d.translation),d.rotation!==void 0&&b.quaternion.fromArray(d.rotation),d.scale!==void 0&&b.scale.fromArray(d.scale);return h.associations.has(b)||h.associations.set(b,{}),h.associations.get(b).nodes=l,b})}loadScene(l){const c=this.json,o=this.extensions,h=this.json.scenes[l],d=this,f=new m.Group;h.name&&(f.name=d.createUniqueName(h.name)),Nt(f,h),h.extensions&&bn(o,f,h);const v=h.nodes||[],b=[];for(let w=0,y=v.length;w<y;w++)b.push(Ws(v[w],f,c,d));return Promise.all(b).then(function(){const w=y=>{const x=new Map;for(const[V,D]of d.associations)(V instanceof m.Material||V instanceof m.Texture)&&x.set(V,D);return y.traverse(V=>{const D=d.associations.get(V);D!=null&&x.set(V,D)}),x};return d.associations=w(f),f})}}function Ws(L,l,c,o){const h=c.nodes[L];return o.getDependency("node",L).then(function(d){if(h.skin===void 0)return d;let f;return o.getDependency("skin",h.skin).then(function(v){f=v;const b=[];for(let w=0,y=f.joints.length;w<y;w++)b.push(o.getDependency("node",f.joints[w]));return Promise.all(b)}).then(function(v){return d.traverse(function(b){if(!b.isMesh)return;const w=[],y=[];for(let x=0,V=v.length;x<V;x++){const D=v[x];if(D){w.push(D);const T=new m.Matrix4;f.inverseBindMatrices!==void 0&&T.fromArray(f.inverseBindMatrices.array,x*16),y.push(T)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',f.joints[x])}b.bind(new m.Skeleton(w,y),b.matrixWorld)}),d})}).then(function(d){l.add(d);const f=[];if(h.children){const v=h.children;for(let b=0,w=v.length;b<w;b++){const y=v[b];f.push(Ws(y,d,c,o))}}return Promise.all(f)})}function yo(L,l,c){const o=l.attributes,h=new m.Box3;if(o.POSITION!==void 0){const v=c.json.accessors[o.POSITION],b=v.min,w=v.max;if(b!==void 0&&w!==void 0){if(h.set(new m.Vector3(b[0],b[1],b[2]),new m.Vector3(w[0],w[1],w[2])),v.normalized){const y=Vi(vn[v.componentType]);h.min.multiplyScalar(y),h.max.multiplyScalar(y)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const d=l.targets;if(d!==void 0){const v=new m.Vector3,b=new m.Vector3;for(let w=0,y=d.length;w<y;w++){const x=d[w];if(x.POSITION!==void 0){const V=c.json.accessors[x.POSITION],D=V.min,T=V.max;if(D!==void 0&&T!==void 0){if(b.setX(Math.max(Math.abs(D[0]),Math.abs(T[0]))),b.setY(Math.max(Math.abs(D[1]),Math.abs(T[1]))),b.setZ(Math.max(Math.abs(D[2]),Math.abs(T[2]))),V.normalized){const E=Vi(vn[V.componentType]);b.multiplyScalar(E)}v.max(b)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}h.expandByVector(v)}L.boundingBox=h;const f=new m.Sphere;h.getCenter(f.center),f.radius=h.min.distanceTo(h.max)/2,L.boundingSphere=f}function Js(L,l,c){const o=l.attributes,h=[];function d(f,v){return c.getDependency("accessor",f).then(function(b){L.setAttribute(v,b)})}for(const f in o){const v=Si[f]||f.toLowerCase();v in L.attributes||h.push(d(o[f],v))}if(l.indices!==void 0&&!L.index){const f=c.getDependency("accessor",l.indices).then(function(v){L.setIndex(v)});h.push(f)}return Nt(L,l),yo(L,l,c),Promise.all(h).then(function(){return l.targets!==void 0?bo(L,l.targets,c):L})}function Hs(L,l){let c=L.getIndex();if(c===null){const f=[],v=L.getAttribute("position");if(v!==void 0){for(let b=0;b<v.count;b++)f.push(b);L.setIndex(f),c=L.getIndex()}else return console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),L}const o=c.count-2,h=[];if(l===m.TriangleFanDrawMode)for(let f=1;f<=o;f++)h.push(c.getX(0)),h.push(c.getX(f)),h.push(c.getX(f+1));else for(let f=0;f<o;f++)f%2===0?(h.push(c.getX(f)),h.push(c.getX(f+1)),h.push(c.getX(f+2))):(h.push(c.getX(f+2)),h.push(c.getX(f+1)),h.push(c.getX(f)));h.length/3!==o&&console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const d=L.clone();return d.setIndex(h),d}class Co extends m.ExtrudeGeometry{constructor(l,c){const{bevelEnabled:o=!1,bevelSize:h=8,bevelThickness:d=10,font:f,height:v=50,size:b=100,lineHeight:w=1,letterSpacing:y=0,...x}=c,V=f.generateShapes(l,b,{lineHeight:w,letterSpacing:y});super(V,{...x,bevelEnabled:o,bevelSize:h,bevelThickness:d,depth:v}),this.type="TextGeometry"}}class Po extends m.Loader{constructor(l){super(l)}load(l,c,o,h){const d=new m.FileLoader(this.manager);d.setPath(this.path),d.setRequestHeader(this.requestHeader),d.setWithCredentials(this.withCredentials),d.load(l,f=>{if(typeof f!="string")throw new Error("unsupported data type");const v=JSON.parse(f),b=this.parse(v);c&&c(b)},o,h)}parse(l){return new Ai(l)}}class Ai{constructor(l){C(this,"data",void 0),this.data=l}generateShapes(l,c=100,o){const h=[],d={letterSpacing:0,lineHeight:1,...o},f=ko(l,c,this.data,d);for(let v=0,b=f.length;v<b;v++)Array.prototype.push.apply(h,f[v].toShapes(!1));return h}}C(Ai,"isFont",void 0),C(Ai,"type",void 0);function ko(L,l,c,o){const h=Array.from(L),d=l/c.resolution,f=(c.boundingBox.yMax-c.boundingBox.yMin+c.underlineThickness)*d,v=[];let b=0,w=0;for(let y=0;y<h.length;y++){const x=h[y];if(x===`
|
|
14
|
-
`)
|
|
15
|
-
`);this.workerSourceURL=URL.createObjectURL(new Blob([f]))}),this.decoderPending}_getWorker(l,c){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const h=new Worker(this.workerSourceURL);h._callbacks={},h._taskCosts={},h._taskLoad=0,h.postMessage({type:"init",decoderConfig:this.decoderConfig}),h.onmessage=function(d){const f=d.data;switch(f.type){case"decode":h._callbacks[f.id].resolve(f);break;case"error":h._callbacks[f.id].reject(f);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+f.type+'"')}},this.workerPool.push(h)}else this.workerPool.sort(function(h,d){return h._taskLoad>d._taskLoad?-1:1});const o=this.workerPool[this.workerPool.length-1];return o._taskCosts[l]=c,o._taskLoad+=c,o})}_releaseTask(l,c){l._taskLoad-=l._taskCosts[c],delete l._callbacks[c],delete l._taskCosts[c]}debug(){console.log("Task load: ",this.workerPool.map(l=>l._taskLoad))}dispose(){for(let l=0;l<this.workerPool.length;++l)this.workerPool[l].terminate();return this.workerPool.length=0,this}}function Vo(){let L,l;onmessage=function(f){const v=f.data;switch(v.type){case"init":L=v.decoderConfig,l=new Promise(function(y){L.onModuleLoaded=function(x){y({draco:x})},DracoDecoderModule(L)});break;case"decode":const b=v.buffer,w=v.taskConfig;l.then(y=>{const x=y.draco,V=new x.Decoder,D=new x.DecoderBuffer;D.Init(new Int8Array(b),b.byteLength);try{const T=c(x,V,D,w),E=T.attributes.map(O=>O.array.buffer);T.index&&E.push(T.index.array.buffer),self.postMessage({type:"decode",id:v.id,geometry:T},E)}catch(T){console.error(T),self.postMessage({type:"error",id:v.id,error:T.message})}finally{x.destroy(D),x.destroy(V)}});break}};function c(f,v,b,w){const y=w.attributeIDs,x=w.attributeTypes;let V,D;const T=v.GetEncodedGeometryType(b);if(T===f.TRIANGULAR_MESH)V=new f.Mesh,D=v.DecodeBufferToMesh(b,V);else if(T===f.POINT_CLOUD)V=new f.PointCloud,D=v.DecodeBufferToPointCloud(b,V);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!D.ok()||V.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+D.error_msg());const E={index:null,attributes:[]};for(const O in y){const N=self[x[O]];let X,z;if(w.useUniqueIDs)z=y[O],X=v.GetAttributeByUniqueId(V,z);else{if(z=v.GetAttributeId(V,f[y[O]]),z===-1)continue;X=v.GetAttribute(V,z)}E.attributes.push(h(f,v,V,O,N,X))}return T===f.TRIANGULAR_MESH&&(E.index=o(f,v,V)),f.destroy(V),E}function o(f,v,b){const y=b.num_faces()*3,x=y*4,V=f._malloc(x);v.GetTrianglesUInt32Array(b,x,V);const D=new Uint32Array(f.HEAPF32.buffer,V,y).slice();return f._free(V),{array:D,itemSize:1}}function h(f,v,b,w,y,x){const V=x.num_components(),T=b.num_points()*V,E=T*y.BYTES_PER_ELEMENT,O=d(f,y),N=f._malloc(E);v.GetAttributeDataArrayForAllPoints(b,x,O,E,N);const X=new y(f.HEAPF32.buffer,N,T).slice();return f._free(N),{name:w,array:X,itemSize:V}}function d(f,v){switch(v){case Float32Array:return f.DT_FLOAT32;case Int8Array:return f.DT_INT8;case Int16Array:return f.DT_INT16;case Int32Array:return f.DT_INT32;case Uint8Array:return f.DT_UINT8;case Uint16Array:return f.DT_UINT16;case Uint32Array:return f.DT_UINT32}}}function tr(){return{extend:R.inject("extend")||(()=>{console.warn("No extend function provided")})}}const Ao=R.defineComponent({__name:"OrbitControls",props:{makeDefault:{type:Boolean,default:!1},camera:null,domElement:null,target:null,enableDamping:{type:Boolean}},setup(L){const l=L,{setState:c}=Zn.useTres(),o=R.ref(null),h=R.inject("camera"),d=R.inject("renderer"),{extend:f}=tr();return f({OrbitControls:$r}),R.watch(o,v=>{v&&l.makeDefault?c("controls",v):c("controls",null)}),(v,b)=>{var y;const w=R.resolveComponent("TresOrbitControls");return R.unref(h)&&R.unref(d)?(R.openBlock(),R.createBlock(w,{key:0,ref_key:"controls",ref:o,args:[R.unref(h),(y=R.unref(d))==null?void 0:y.domElement],"enabling-dampling":L.enableDamping},null,8,["args","enabling-dampling"])):R.createCommentVNode("",!0)}}});function Eo(L,l){const c={};for(const o of l)Object.prototype.hasOwnProperty.call(L,o)&&(c[o]=L[o]);return c}const Io=R.defineComponent({__name:"TransformControls",props:{object:null,mode:null,enabled:{type:Boolean,default:!0},axis:null,translationSnap:null,rotationSnap:null,scaleSnap:null,space:null,size:null,showX:{type:Boolean},showY:{type:Boolean},showZ:{type:Boolean}},emits:["dragging","change","mouseDown","mouseUp","objectChange"],setup(L,{emit:l}){const c=L;let o=R.shallowRef();const h=R.inject("camera"),d=R.inject("renderer"),f=R.inject("local-scene"),v=R.computed(()=>Eo(c,["enabled","axis","mode","translationSnap","rotationSnap","scaleSnap","space","size","showX","showY","showZ"])),{state:b}=Zn.useTres(),w=()=>l("change",o.value),y=()=>l("mouseDown",o.value),x=()=>l("mouseUp",o.value),V=()=>l("objectChange",o.value),D=E=>{b.controls&&(b.controls.enabled=!E.value),l("dragging",E.value)};function T(E){E.addEventListener("dragging-changed",D),E.addEventListener("change",w),E.addEventListener("mouseDown",y),E.addEventListener("mouseUp",x),E.addEventListener("objectChange",V)}return R.watch(()=>c.object,()=>{h!=null&&h.value&&(d!=null&&d.value)&&(f!=null&&f.value)&&c.object&&(o.value=new Rr(h.value,R.unref(d).domElement),o.value.attach(R.unref(c.object)),f.value.add(R.unref(o)),T(R.unref(o)))},{deep:!0}),R.watch([v,o],([E,O])=>{if(E&&O)for(const N in E){const X=`set${N[0].toUpperCase()}${N.slice(1)}`;typeof O[X]=="function"&&E[N]!==void 0&&O[X](E[N])}},{immediate:!0}),R.onUnmounted(()=>{o.value&&(o.value.removeEventListener("dragging-changed",D),o.value.removeEventListener("change",w),o.value.removeEventListener("mouseDown",y),o.value.removeEventListener("mouseUp",x),o.value.removeEventListener("objectChange",V))}),(E,O)=>R.renderSlot(E.$slots,"default")}});var Wn={},To={get exports(){return Wn},set exports(L){Wn=L}};(function(L,l){(function(c,o){o(l)})(er,function(c){class o{constructor(e){const[t,s]=e.split("-"),u=t.split(".");this.major=parseInt(u[0],10),this.minor=parseInt(u[1],10),this.patch=parseInt(u[2],10),this.prerelease=s??null}toString(){const e=[this.major,this.minor,this.patch].join(".");return this.prerelease!==null?[e,this.prerelease].join("-"):e}}class h{constructor(e){this.controller_=e}get element(){return this.controller_.view.element}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(e){this.controller_.viewProps.set("disabled",e)}get hidden(){return this.controller_.viewProps.get("hidden")}set hidden(e){this.controller_.viewProps.set("hidden",e)}dispose(){this.controller_.viewProps.set("disposed",!0)}}class d{constructor(e){this.target=e}}class f extends d{constructor(e,t,s,u){super(e),this.value=t,this.presetKey=s,this.last=u??!0}}class v extends d{constructor(e,t,s){super(e),this.value=t,this.presetKey=s}}class b extends d{constructor(e,t){super(e),this.expanded=t}}class w extends d{constructor(e,t){super(e),this.index=t}}function y(n){return n}function x(n){return n==null}function V(n,e){if(n.length!==e.length)return!1;for(let t=0;t<n.length;t++)if(n[t]!==e[t])return!1;return!0}const D={alreadydisposed:()=>"View has been already disposed",invalidparams:n=>`Invalid parameters for '${n.name}'`,nomatchingcontroller:n=>`No matching controller for '${n.key}'`,nomatchingview:n=>`No matching view for '${JSON.stringify(n.params)}'`,notbindable:()=>"Value is not bindable",propertynotfound:n=>`Property '${n.name}' not found`,shouldneverhappen:()=>"This error should never happen"};class T{constructor(e){var t;this.message=(t=D[e.type](e.context))!==null&&t!==void 0?t:"Unexpected error",this.name=this.constructor.name,this.stack=new Error(this.message).stack,this.type=e.type}static alreadyDisposed(){return new T({type:"alreadydisposed"})}static notBindable(){return new T({type:"notbindable"})}static propertyNotFound(e){return new T({type:"propertynotfound",context:{name:e}})}static shouldNeverHappen(){return new T({type:"shouldneverhappen"})}}class E{constructor(e,t,s){this.obj_=e,this.key_=t,this.presetKey_=s??t}static isBindable(e){return!(e===null||typeof e!="object")}get key(){return this.key_}get presetKey(){return this.presetKey_}read(){return this.obj_[this.key_]}write(e){this.obj_[this.key_]=e}writeProperty(e,t){const s=this.read();if(!E.isBindable(s))throw T.notBindable();if(!(e in s))throw T.propertyNotFound(e);s[e]=t}}class O extends h{get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}get title(){var e;return(e=this.controller_.valueController.props.get("title"))!==null&&e!==void 0?e:""}set title(e){this.controller_.valueController.props.set("title",e)}on(e,t){const s=t.bind(this);return this.controller_.valueController.emitter.on(e,()=>{s(new d(this))}),this}}class N{constructor(){this.observers_={}}on(e,t){let s=this.observers_[e];return s||(s=this.observers_[e]=[]),s.push({handler:t}),this}off(e,t){const s=this.observers_[e];return s&&(this.observers_[e]=s.filter(u=>u.handler!==t)),this}emit(e,t){const s=this.observers_[e];s&&s.forEach(u=>{u.handler(t)})}}const X="tp";function z(n){return(t,s)=>[X,"-",n,"v",t?`_${t}`:"",s?`-${s}`:""].join("")}function ne(n,e){return t=>e(n(t))}function ce(n){return n.rawValue}function H(n,e){n.emitter.on("change",ne(ce,e)),e(n.rawValue)}function U(n,e,t){H(n.value(e),t)}function q(n,e,t){t?n.classList.add(e):n.classList.remove(e)}function se(n,e){return t=>{q(n,e,t)}}function oe(n,e){H(n,t=>{e.textContent=t??""})}const _e=z("btn");class Ce{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(_e()),t.viewProps.bindClassModifiers(this.element);const s=e.createElement("button");s.classList.add(_e("b")),t.viewProps.bindDisabled(s),this.element.appendChild(s),this.buttonElement=s;const u=e.createElement("div");u.classList.add(_e("t")),oe(t.props.value("title"),u),this.buttonElement.appendChild(u)}}class ve{constructor(e,t){this.emitter=new N,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new Ce(e,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class he{constructor(e,t){var s;this.constraint_=t==null?void 0:t.constraint,this.equals_=(s=t==null?void 0:t.equals)!==null&&s!==void 0?s:(u,_)=>u===_,this.emitter=new N,this.rawValue_=e}get constraint(){return this.constraint_}get rawValue(){return this.rawValue_}set rawValue(e){this.setRawValue(e,{forceEmit:!1,last:!0})}setRawValue(e,t){const s=t??{forceEmit:!1,last:!0},u=this.constraint_?this.constraint_.constrain(e):e;this.equals_(this.rawValue_,u)&&!s.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=u,this.emitter.emit("change",{options:s,rawValue:u,sender:this}))}}class ge{constructor(e){this.emitter=new N,this.value_=e}get rawValue(){return this.value_}set rawValue(e){this.setRawValue(e,{forceEmit:!1,last:!0})}setRawValue(e,t){const s=t??{forceEmit:!1,last:!0};this.value_===e&&!s.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.value_=e,this.emitter.emit("change",{options:s,rawValue:this.value_,sender:this}))}}function ee(n,e){const t=e==null?void 0:e.constraint,s=e==null?void 0:e.equals;return!t&&!s?new ge(n):new he(n,e)}class ${constructor(e){this.emitter=new N,this.valMap_=e;for(const t in this.valMap_)this.valMap_[t].emitter.on("change",()=>{this.emitter.emit("change",{key:t,sender:this})})}static createCore(e){return Object.keys(e).reduce((s,u)=>Object.assign(s,{[u]:ee(e[u])}),{})}static fromObject(e){const t=this.createCore(e);return new $(t)}get(e){return this.valMap_[e].rawValue}set(e,t){this.valMap_[e].rawValue=t}value(e){return this.valMap_[e]}}function Je(n,e){const s=Object.keys(e).reduce((u,_)=>{if(u===void 0)return;const k=e[_],I=k(n[_]);return I.succeeded?Object.assign(Object.assign({},u),{[_]:I.value}):void 0},{});return s}function Pe(n,e){return n.reduce((t,s)=>{if(t===void 0)return;const u=e(s);if(!(!u.succeeded||u.value===void 0))return[...t,u.value]},[])}function ue(n){return n===null?!1:typeof n=="object"}function Z(n){return e=>t=>{if(!e&&t===void 0)return{succeeded:!1,value:void 0};if(e&&t===void 0)return{succeeded:!0,value:void 0};const s=n(t);return s!==void 0?{succeeded:!0,value:s}:{succeeded:!1,value:void 0}}}function ae(n){return{custom:e=>Z(e)(n),boolean:Z(e=>typeof e=="boolean"?e:void 0)(n),number:Z(e=>typeof e=="number"?e:void 0)(n),string:Z(e=>typeof e=="string"?e:void 0)(n),function:Z(e=>typeof e=="function"?e:void 0)(n),constant:e=>Z(t=>t===e?e:void 0)(n),raw:Z(e=>e)(n),object:e=>Z(t=>{if(ue(t))return Je(t,e)})(n),array:e=>Z(t=>{if(Array.isArray(t))return Pe(t,e)})(n)}}const K={optional:ae(!0),required:ae(!1)};function S(n,e){const t=K.required.object(e)(n);return t.succeeded?t.value:void 0}function Ae(n){return n&&n.parentElement&&n.parentElement.removeChild(n),null}function Ee(){return["veryfirst","first","last","verylast"]}const Fe=z(""),He={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class we{constructor(e){this.parent_=null,this.blade=e.blade,this.view=e.view,this.viewProps=e.viewProps;const t=this.view.element;this.blade.value("positions").emitter.on("change",()=>{Ee().forEach(s=>{t.classList.remove(Fe(void 0,He[s]))}),this.blade.get("positions").forEach(s=>{t.classList.add(Fe(void 0,He[s]))})}),this.viewProps.handleDispose(()=>{Ae(t)})}get parent(){return this.parent_}}const Ie="http://www.w3.org/2000/svg";function lt(n){n.offsetHeight}function ct(n,e){const t=n.style.transition;n.style.transition="none",e(),n.style.transition=t}function _t(n){return n.ontouchstart!==void 0}function wt(){return globalThis}function _n(){return wt().document}function wn(n){const e=n.ownerDocument.defaultView;return e&&"document"in e?n.getContext("2d",{willReadFrequently:!0}):null}const Ft={check:'<path d="M2 8l4 4l8 -8"/>',dropdown:'<path d="M5 7h6l-3 3 z"/>',p2dpad:'<path d="M8 4v8"/><path d="M4 8h8"/><circle cx="12" cy="12" r="1.2"/>'};function et(n,e){const t=n.createElementNS(Ie,"svg");return t.innerHTML=Ft[e],t}function pt(n,e,t){n.insertBefore(e,n.children[t])}function tt(n){n.parentElement&&n.parentElement.removeChild(n)}function Jt(n){for(;n.children.length>0;)n.removeChild(n.children[0])}function Ht(n){for(;n.childNodes.length>0;)n.removeChild(n.childNodes[0])}function Be(n){return n.relatedTarget?n.relatedTarget:"explicitOriginalTarget"in n?n.explicitOriginalTarget:null}const nt=z("lbl");function xn(n,e){const t=n.createDocumentFragment();return e.split(`
|
|
16
|
-
`).map(u=>n.createTextNode(u)).forEach((u,_)=>{_>0&&t.appendChild(n.createElement("br")),t.appendChild(u)}),t}class zt{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(nt()),t.viewProps.bindClassModifiers(this.element);const s=e.createElement("div");s.classList.add(nt("l")),U(t.props,"label",_=>{x(_)?this.element.classList.add(nt(void 0,"nol")):(this.element.classList.remove(nt(void 0,"nol")),Ht(s),s.appendChild(xn(e,_)))}),this.element.appendChild(s),this.labelElement=s;const u=e.createElement("div");u.classList.add(nt("v")),this.element.appendChild(u),this.valueElement=u}}class Ue extends we{constructor(e,t){const s=t.valueController.viewProps;super(Object.assign(Object.assign({},t),{view:new zt(e,{props:t.props,viewProps:s}),viewProps:s})),this.props=t.props,this.valueController=t.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}const xt={id:"button",type:"blade",accept(n){const e=K,t=S(n,{title:e.required.string,view:e.required.constant("button"),label:e.optional.string});return t?{params:t}:null},controller(n){return new Ue(n.document,{blade:n.blade,props:$.fromObject({label:n.params.label}),valueController:new ve(n.document,{props:$.fromObject({title:n.params.title}),viewProps:n.viewProps})})},api(n){return!(n.controller instanceof Ue)||!(n.controller.valueController instanceof ve)?null:new O(n.controller)}};class Te extends we{constructor(e){super(e),this.value=e.value}}function Ke(){return new $({positions:ee([],{equals:V})})}class $e extends ${constructor(e){super(e)}static create(e){const t={completed:!0,expanded:e,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null},s=$.createCore(t);return new $e(s)}get styleExpanded(){var e;return(e=this.get("temporaryExpanded"))!==null&&e!==void 0?e:this.get("expanded")}get styleHeight(){if(!this.styleExpanded)return"0";const e=this.get("expandedHeight");return this.get("shouldFixHeight")&&!x(e)?`${e}px`:"auto"}bindExpandedClass(e,t){const s=()=>{this.styleExpanded?e.classList.add(t):e.classList.remove(t)};U(this,"expanded",s),U(this,"temporaryExpanded",s)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function M(n,e){let t=0;return ct(e,()=>{n.set("expandedHeight",null),n.set("temporaryExpanded",!0),lt(e),t=e.clientHeight,n.set("temporaryExpanded",null),lt(e)}),t}function j(n,e){e.style.height=n.styleHeight}function Y(n,e){n.value("expanded").emitter.on("beforechange",()=>{n.set("completed",!1),x(n.get("expandedHeight"))&&n.set("expandedHeight",M(n,e)),n.set("shouldFixHeight",!0),lt(e)}),n.emitter.on("change",()=>{j(n,e)}),j(n,e),e.addEventListener("transitionend",t=>{t.propertyName==="height"&&n.cleanUpTransition()})}class J extends h{constructor(e,t){super(e),this.rackApi_=t}}function de(n,e){return n.addBlade(Object.assign(Object.assign({},e),{view:"button"}))}function Oe(n,e){return n.addBlade(Object.assign(Object.assign({},e),{view:"folder"}))}function yt(n,e){const t=e??{};return n.addBlade(Object.assign(Object.assign({},t),{view:"separator"}))}function en(n,e){return n.addBlade(Object.assign(Object.assign({},e),{view:"tab"}))}class Me{constructor(e){this.emitter=new N,this.items_=[],this.cache_=new Set,this.onSubListAdd_=this.onSubListAdd_.bind(this),this.onSubListRemove_=this.onSubListRemove_.bind(this),this.extract_=e}get items(){return this.items_}allItems(){return Array.from(this.cache_)}find(e){for(const t of this.allItems())if(e(t))return t;return null}includes(e){return this.cache_.has(e)}add(e,t){if(this.includes(e))throw T.shouldNeverHappen();const s=t!==void 0?t:this.items_.length;this.items_.splice(s,0,e),this.cache_.add(e);const u=this.extract_(e);u&&(u.emitter.on("add",this.onSubListAdd_),u.emitter.on("remove",this.onSubListRemove_),u.allItems().forEach(_=>{this.cache_.add(_)})),this.emitter.emit("add",{index:s,item:e,root:this,target:this})}remove(e){const t=this.items_.indexOf(e);if(t<0)return;this.items_.splice(t,1),this.cache_.delete(e);const s=this.extract_(e);s&&(s.emitter.off("add",this.onSubListAdd_),s.emitter.off("remove",this.onSubListRemove_)),this.emitter.emit("remove",{index:t,item:e,root:this,target:this})}onSubListAdd_(e){this.cache_.add(e.item),this.emitter.emit("add",{index:e.index,item:e.item,root:this,target:e.target})}onSubListRemove_(e){this.cache_.delete(e.item),this.emitter.emit("remove",{index:e.index,item:e.item,root:this,target:e.target})}}class Se extends h{constructor(e){super(e),this.onBindingChange_=this.onBindingChange_.bind(this),this.emitter_=new N,this.controller_.binding.emitter.on("change",this.onBindingChange_)}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}on(e,t){const s=t.bind(this);return this.emitter_.on(e,u=>{s(u.event)}),this}refresh(){this.controller_.binding.read()}onBindingChange_(e){const t=e.sender.target.read();this.emitter_.emit("change",{event:new f(this,t,this.controller_.binding.target.presetKey,e.options.last)})}}class De extends Ue{constructor(e,t){super(e,t),this.binding=t.binding}}class ut extends h{constructor(e){super(e),this.onBindingUpdate_=this.onBindingUpdate_.bind(this),this.emitter_=new N,this.controller_.binding.emitter.on("update",this.onBindingUpdate_)}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}on(e,t){const s=t.bind(this);return this.emitter_.on(e,u=>{s(u.event)}),this}refresh(){this.controller_.binding.read()}onBindingUpdate_(e){const t=e.sender.target.read();this.emitter_.emit("update",{event:new v(this,t,this.controller_.binding.target.presetKey)})}}class it extends Ue{constructor(e,t){super(e,t),this.binding=t.binding,this.viewProps.bindDisabled(this.binding.ticker),this.viewProps.handleDispose(()=>{this.binding.dispose()})}}function Bt(n){return n instanceof Rt?n.apiSet_:n instanceof J?n.rackApi_.apiSet_:null}function Ut(n,e){const t=n.find(s=>s.controller_===e);if(!t)throw T.shouldNeverHappen();return t}function tn(n,e,t){if(!E.isBindable(n))throw T.notBindable();return new E(n,e,t)}class Rt extends h{constructor(e,t){super(e),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this),this.onRackInputChange_=this.onRackInputChange_.bind(this),this.onRackMonitorUpdate_=this.onRackMonitorUpdate_.bind(this),this.emitter_=new N,this.apiSet_=new Me(Bt),this.pool_=t;const s=this.controller_.rack;s.emitter.on("add",this.onRackAdd_),s.emitter.on("remove",this.onRackRemove_),s.emitter.on("inputchange",this.onRackInputChange_),s.emitter.on("monitorupdate",this.onRackMonitorUpdate_),s.children.forEach(u=>{this.setUpApi_(u)})}get children(){return this.controller_.rack.children.map(e=>Ut(this.apiSet_,e))}addInput(e,t,s){const u=s??{},_=this.controller_.view.element.ownerDocument,k=this.pool_.createInput(_,tn(e,t,u.presetKey),u),I=new Se(k);return this.add(I,u.index)}addMonitor(e,t,s){const u=s??{},_=this.controller_.view.element.ownerDocument,k=this.pool_.createMonitor(_,tn(e,t),u),I=new ut(k);return this.add(I,u.index)}addFolder(e){return Oe(this,e)}addButton(e){return de(this,e)}addSeparator(e){return yt(this,e)}addTab(e){return en(this,e)}add(e,t){this.controller_.rack.add(e.controller_,t);const s=this.apiSet_.find(u=>u.controller_===e.controller_);return s&&this.apiSet_.remove(s),this.apiSet_.add(e),e}remove(e){this.controller_.rack.remove(e.controller_)}addBlade(e){const t=this.controller_.view.element.ownerDocument,s=this.pool_.createBlade(t,e),u=this.pool_.createBladeApi(s);return this.add(u,e.index)}on(e,t){const s=t.bind(this);return this.emitter_.on(e,u=>{s(u.event)}),this}setUpApi_(e){this.apiSet_.find(s=>s.controller_===e)||this.apiSet_.add(this.pool_.createBladeApi(e))}onRackAdd_(e){this.setUpApi_(e.bladeController)}onRackRemove_(e){if(e.isRoot){const t=Ut(this.apiSet_,e.bladeController);this.apiSet_.remove(t)}}onRackInputChange_(e){const t=e.bladeController;if(t instanceof De){const s=Ut(this.apiSet_,t),u=t.binding;this.emitter_.emit("change",{event:new f(s,u.target.read(),u.target.presetKey,e.options.last)})}else if(t instanceof Te){const s=Ut(this.apiSet_,t);this.emitter_.emit("change",{event:new f(s,t.value.rawValue,void 0,e.options.last)})}}onRackMonitorUpdate_(e){if(!(e.bladeController instanceof it))throw T.shouldNeverHappen();const t=Ut(this.apiSet_,e.bladeController),s=e.bladeController.binding;this.emitter_.emit("update",{event:new v(t,s.target.read(),s.target.presetKey)})}}class yn extends J{constructor(e,t){super(e,new Rt(e.rackController,t)),this.emitter_=new N,this.controller_.foldable.value("expanded").emitter.on("change",s=>{this.emitter_.emit("fold",{event:new b(this,s.sender.rawValue)})}),this.rackApi_.on("change",s=>{this.emitter_.emit("change",{event:s})}),this.rackApi_.on("update",s=>{this.emitter_.emit("update",{event:s})})}get expanded(){return this.controller_.foldable.get("expanded")}set expanded(e){this.controller_.foldable.set("expanded",e)}get title(){return this.controller_.props.get("title")}set title(e){this.controller_.props.set("title",e)}get children(){return this.rackApi_.children}addInput(e,t,s){return this.rackApi_.addInput(e,t,s)}addMonitor(e,t,s){return this.rackApi_.addMonitor(e,t,s)}addFolder(e){return this.rackApi_.addFolder(e)}addButton(e){return this.rackApi_.addButton(e)}addSeparator(e){return this.rackApi_.addSeparator(e)}addTab(e){return this.rackApi_.addTab(e)}add(e,t){return this.rackApi_.add(e,t)}remove(e){this.rackApi_.remove(e)}addBlade(e){return this.rackApi_.addBlade(e)}on(e,t){const s=t.bind(this);return this.emitter_.on(e,u=>{s(u.event)}),this}}class Cn extends we{constructor(e){super({blade:e.blade,view:e.view,viewProps:e.rackController.viewProps}),this.rackController=e.rackController}}class Ii{constructor(e,t){const s=z(t.viewName);this.element=e.createElement("div"),this.element.classList.add(s()),t.viewProps.bindClassModifiers(this.element)}}function Ti(n,e){for(let t=0;t<n.length;t++){const s=n[t];if(s instanceof De&&s.binding===e)return s}return null}function Oi(n,e){for(let t=0;t<n.length;t++){const s=n[t];if(s instanceof it&&s.binding===e)return s}return null}function Di(n,e){for(let t=0;t<n.length;t++){const s=n[t];if(s instanceof Te&&s.value===e)return s}return null}function Pn(n){return n instanceof Gt?n.rack:n instanceof Cn?n.rackController.rack:null}function Ni(n){const e=Pn(n);return e?e.bcSet_:null}class ji{constructor(e){var t;this.onBladePositionsChange_=this.onBladePositionsChange_.bind(this),this.onSetAdd_=this.onSetAdd_.bind(this),this.onSetRemove_=this.onSetRemove_.bind(this),this.onChildDispose_=this.onChildDispose_.bind(this),this.onChildPositionsChange_=this.onChildPositionsChange_.bind(this),this.onChildInputChange_=this.onChildInputChange_.bind(this),this.onChildMonitorUpdate_=this.onChildMonitorUpdate_.bind(this),this.onChildValueChange_=this.onChildValueChange_.bind(this),this.onChildViewPropsChange_=this.onChildViewPropsChange_.bind(this),this.onDescendantLayout_=this.onDescendantLayout_.bind(this),this.onDescendantInputChange_=this.onDescendantInputChange_.bind(this),this.onDescendantMonitorUpdate_=this.onDescendantMonitorUpdate_.bind(this),this.emitter=new N,this.blade_=e??null,(t=this.blade_)===null||t===void 0||t.value("positions").emitter.on("change",this.onBladePositionsChange_),this.bcSet_=new Me(Ni),this.bcSet_.emitter.on("add",this.onSetAdd_),this.bcSet_.emitter.on("remove",this.onSetRemove_)}get children(){return this.bcSet_.items}add(e,t){e.parent&&e.parent.remove(e),e.parent_=this,this.bcSet_.add(e,t)}remove(e){e.parent_=null,this.bcSet_.remove(e)}find(e){return this.bcSet_.allItems().filter(t=>t instanceof e)}onSetAdd_(e){this.updatePositions_();const t=e.target===e.root;if(this.emitter.emit("add",{bladeController:e.item,index:e.index,isRoot:t,sender:this}),!t)return;const s=e.item;if(s.viewProps.emitter.on("change",this.onChildViewPropsChange_),s.blade.value("positions").emitter.on("change",this.onChildPositionsChange_),s.viewProps.handleDispose(this.onChildDispose_),s instanceof De)s.binding.emitter.on("change",this.onChildInputChange_);else if(s instanceof it)s.binding.emitter.on("update",this.onChildMonitorUpdate_);else if(s instanceof Te)s.value.emitter.on("change",this.onChildValueChange_);else{const u=Pn(s);if(u){const _=u.emitter;_.on("layout",this.onDescendantLayout_),_.on("inputchange",this.onDescendantInputChange_),_.on("monitorupdate",this.onDescendantMonitorUpdate_)}}}onSetRemove_(e){this.updatePositions_();const t=e.target===e.root;if(this.emitter.emit("remove",{bladeController:e.item,isRoot:t,sender:this}),!t)return;const s=e.item;if(s instanceof De)s.binding.emitter.off("change",this.onChildInputChange_);else if(s instanceof it)s.binding.emitter.off("update",this.onChildMonitorUpdate_);else if(s instanceof Te)s.value.emitter.off("change",this.onChildValueChange_);else{const u=Pn(s);if(u){const _=u.emitter;_.off("layout",this.onDescendantLayout_),_.off("inputchange",this.onDescendantInputChange_),_.off("monitorupdate",this.onDescendantMonitorUpdate_)}}}updatePositions_(){const e=this.bcSet_.items.filter(u=>!u.viewProps.get("hidden")),t=e[0],s=e[e.length-1];this.bcSet_.items.forEach(u=>{const _=[];u===t&&(_.push("first"),(!this.blade_||this.blade_.get("positions").includes("veryfirst"))&&_.push("veryfirst")),u===s&&(_.push("last"),(!this.blade_||this.blade_.get("positions").includes("verylast"))&&_.push("verylast")),u.blade.set("positions",_)})}onChildPositionsChange_(){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildViewPropsChange_(e){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildDispose_(){this.bcSet_.items.filter(t=>t.viewProps.get("disposed")).forEach(t=>{this.bcSet_.remove(t)})}onChildInputChange_(e){const t=Ti(this.find(De),e.sender);if(!t)throw T.alreadyDisposed();this.emitter.emit("inputchange",{bladeController:t,options:e.options,sender:this})}onChildMonitorUpdate_(e){const t=Oi(this.find(it),e.sender);if(!t)throw T.alreadyDisposed();this.emitter.emit("monitorupdate",{bladeController:t,sender:this})}onChildValueChange_(e){const t=Di(this.find(Te),e.sender);if(!t)throw T.alreadyDisposed();this.emitter.emit("inputchange",{bladeController:t,options:e.options,sender:this})}onDescendantLayout_(e){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onDescendantInputChange_(e){this.emitter.emit("inputchange",{bladeController:e.bladeController,options:e.options,sender:this})}onDescendantMonitorUpdate_(e){this.emitter.emit("monitorupdate",{bladeController:e.bladeController,sender:this})}onBladePositionsChange_(){this.updatePositions_()}}class Gt extends we{constructor(e,t){super(Object.assign(Object.assign({},t),{view:new Ii(e,{viewName:"brk",viewProps:t.viewProps})})),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this);const s=new ji(t.root?void 0:t.blade);s.emitter.on("add",this.onRackAdd_),s.emitter.on("remove",this.onRackRemove_),this.rack=s,this.viewProps.handleDispose(()=>{for(let u=this.rack.children.length-1;u>=0;u--)this.rack.children[u].viewProps.set("disposed",!0)})}onRackAdd_(e){e.isRoot&&pt(this.view.element,e.bladeController.view.element,e.index)}onRackRemove_(e){e.isRoot&&tt(e.bladeController.view.element)}}const ei=z("cnt");class Fi{constructor(e,t){var s;this.className_=z((s=t.viewName)!==null&&s!==void 0?s:"fld"),this.element=e.createElement("div"),this.element.classList.add(this.className_(),ei()),t.viewProps.bindClassModifiers(this.element),this.foldable_=t.foldable,this.foldable_.bindExpandedClass(this.element,this.className_(void 0,"expanded")),U(this.foldable_,"completed",se(this.element,this.className_(void 0,"cpl")));const u=e.createElement("button");u.classList.add(this.className_("b")),U(t.props,"title",G=>{x(G)?this.element.classList.add(this.className_(void 0,"not")):this.element.classList.remove(this.className_(void 0,"not"))}),t.viewProps.bindDisabled(u),this.element.appendChild(u),this.buttonElement=u;const _=e.createElement("div");_.classList.add(this.className_("t")),oe(t.props.value("title"),_),this.buttonElement.appendChild(_),this.titleElement=_;const k=e.createElement("div");k.classList.add(this.className_("m")),this.buttonElement.appendChild(k);const I=t.containerElement;I.classList.add(this.className_("c")),this.element.appendChild(I),this.containerElement=I}}class kn extends Cn{constructor(e,t){var s;const u=$e.create((s=t.expanded)!==null&&s!==void 0?s:!0),_=new Gt(e,{blade:t.blade,root:t.root,viewProps:t.viewProps});super(Object.assign(Object.assign({},t),{rackController:_,view:new Fi(e,{containerElement:_.view.element,foldable:u,props:t.props,viewName:t.root?"rot":void 0,viewProps:t.viewProps})})),this.onTitleClick_=this.onTitleClick_.bind(this),this.props=t.props,this.foldable=u,Y(this.foldable,this.view.containerElement),this.rackController.rack.emitter.on("add",()=>{this.foldable.cleanUpTransition()}),this.rackController.rack.emitter.on("remove",()=>{this.foldable.cleanUpTransition()}),this.view.buttonElement.addEventListener("click",this.onTitleClick_)}get document(){return this.view.element.ownerDocument}onTitleClick_(){this.foldable.set("expanded",!this.foldable.get("expanded"))}}const zi={id:"folder",type:"blade",accept(n){const e=K,t=S(n,{title:e.required.string,view:e.required.constant("folder"),expanded:e.optional.boolean});return t?{params:t}:null},controller(n){return new kn(n.document,{blade:n.blade,expanded:n.params.expanded,props:$.fromObject({title:n.params.title}),viewProps:n.viewProps})},api(n){return n.controller instanceof kn?new yn(n.controller,n.pool):null}};class Ct extends Te{constructor(e,t){const s=t.valueController.viewProps;super(Object.assign(Object.assign({},t),{value:t.valueController.value,view:new zt(e,{props:t.props,viewProps:s}),viewProps:s})),this.props=t.props,this.valueController=t.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class Mn extends h{}const ti=z("spr");class Bi{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(ti()),t.viewProps.bindClassModifiers(this.element);const s=e.createElement("hr");s.classList.add(ti("r")),this.element.appendChild(s)}}class ni extends we{constructor(e,t){super(Object.assign(Object.assign({},t),{view:new Bi(e,{viewProps:t.viewProps})}))}}const ii={id:"separator",type:"blade",accept(n){const t=S(n,{view:K.required.constant("separator")});return t?{params:t}:null},controller(n){return new ni(n.document,{blade:n.blade,viewProps:n.viewProps})},api(n){return n.controller instanceof ni?new Mn(n.controller):null}},Ui=z("");function Kt(n,e){return se(n,Ui(void 0,e))}class st extends ${constructor(e){super(e)}static create(e){var t,s;const u=e??{},_={disabled:(t=u.disabled)!==null&&t!==void 0?t:!1,disposed:!1,hidden:(s=u.hidden)!==null&&s!==void 0?s:!1},k=$.createCore(_);return new st(k)}bindClassModifiers(e){U(this,"disabled",Kt(e,"disabled")),U(this,"hidden",Kt(e,"hidden"))}bindDisabled(e){U(this,"disabled",t=>{e.disabled=t})}bindTabIndex(e){U(this,"disabled",t=>{e.tabIndex=t?-1:0})}handleDispose(e){this.value("disposed").emitter.on("change",t=>{t&&e()})}}const be=z("tbi");class Ri{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(be()),t.viewProps.bindClassModifiers(this.element),U(t.props,"selected",_=>{_?this.element.classList.add(be(void 0,"sel")):this.element.classList.remove(be(void 0,"sel"))});const s=e.createElement("button");s.classList.add(be("b")),t.viewProps.bindDisabled(s),this.element.appendChild(s),this.buttonElement=s;const u=e.createElement("div");u.classList.add(be("t")),oe(t.props.value("title"),u),this.buttonElement.appendChild(u),this.titleElement=u}}class nn{constructor(e,t){this.emitter=new N,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new Ri(e,{props:t.props,viewProps:t.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class si{constructor(e,t){this.onItemClick_=this.onItemClick_.bind(this),this.ic_=new nn(e,{props:t.itemProps,viewProps:st.create()}),this.ic_.emitter.on("click",this.onItemClick_),this.cc_=new Gt(e,{blade:Ke(),viewProps:st.create()}),this.props=t.props,U(this.props,"selected",s=>{this.itemController.props.set("selected",s),this.contentController.viewProps.set("hidden",!s)})}get itemController(){return this.ic_}get contentController(){return this.cc_}onItemClick_(){this.props.set("selected",!0)}}class Sn{constructor(e,t){this.controller_=e,this.rackApi_=t}get title(){var e;return(e=this.controller_.itemController.props.get("title"))!==null&&e!==void 0?e:""}set title(e){this.controller_.itemController.props.set("title",e)}get selected(){return this.controller_.props.get("selected")}set selected(e){this.controller_.props.set("selected",e)}get children(){return this.rackApi_.children}addButton(e){return this.rackApi_.addButton(e)}addFolder(e){return this.rackApi_.addFolder(e)}addSeparator(e){return this.rackApi_.addSeparator(e)}addTab(e){return this.rackApi_.addTab(e)}add(e,t){this.rackApi_.add(e,t)}remove(e){this.rackApi_.remove(e)}addInput(e,t,s){return this.rackApi_.addInput(e,t,s)}addMonitor(e,t,s){return this.rackApi_.addMonitor(e,t,s)}addBlade(e){return this.rackApi_.addBlade(e)}}class ri extends J{constructor(e,t){super(e,new Rt(e.rackController,t)),this.onPageAdd_=this.onPageAdd_.bind(this),this.onPageRemove_=this.onPageRemove_.bind(this),this.onSelect_=this.onSelect_.bind(this),this.emitter_=new N,this.pageApiMap_=new Map,this.rackApi_.on("change",s=>{this.emitter_.emit("change",{event:s})}),this.rackApi_.on("update",s=>{this.emitter_.emit("update",{event:s})}),this.controller_.tab.selectedIndex.emitter.on("change",this.onSelect_),this.controller_.pageSet.emitter.on("add",this.onPageAdd_),this.controller_.pageSet.emitter.on("remove",this.onPageRemove_),this.controller_.pageSet.items.forEach(s=>{this.setUpPageApi_(s)})}get pages(){return this.controller_.pageSet.items.map(e=>{const t=this.pageApiMap_.get(e);if(!t)throw T.shouldNeverHappen();return t})}addPage(e){const t=this.controller_.view.element.ownerDocument,s=new si(t,{itemProps:$.fromObject({selected:!1,title:e.title}),props:$.fromObject({selected:!1})});this.controller_.add(s,e.index);const u=this.pageApiMap_.get(s);if(!u)throw T.shouldNeverHappen();return u}removePage(e){this.controller_.remove(e)}on(e,t){const s=t.bind(this);return this.emitter_.on(e,u=>{s(u.event)}),this}setUpPageApi_(e){const t=this.rackApi_.apiSet_.find(u=>u.controller_===e.contentController);if(!t)throw T.shouldNeverHappen();const s=new Sn(e,t);this.pageApiMap_.set(e,s)}onPageAdd_(e){this.setUpPageApi_(e.item)}onPageRemove_(e){if(!this.pageApiMap_.get(e.item))throw T.shouldNeverHappen();this.pageApiMap_.delete(e.item)}onSelect_(e){this.emitter_.emit("select",{event:new w(this,e.rawValue)})}}const oi=-1;class Gi{constructor(){this.onItemSelectedChange_=this.onItemSelectedChange_.bind(this),this.empty=ee(!0),this.selectedIndex=ee(oi),this.items_=[]}add(e,t){const s=t??this.items_.length;this.items_.splice(s,0,e),e.emitter.on("change",this.onItemSelectedChange_),this.keepSelection_()}remove(e){const t=this.items_.indexOf(e);t<0||(this.items_.splice(t,1),e.emitter.off("change",this.onItemSelectedChange_),this.keepSelection_())}keepSelection_(){if(this.items_.length===0){this.selectedIndex.rawValue=oi,this.empty.rawValue=!0;return}const e=this.items_.findIndex(t=>t.rawValue);e<0?(this.items_.forEach((t,s)=>{t.rawValue=s===0}),this.selectedIndex.rawValue=0):(this.items_.forEach((t,s)=>{t.rawValue=s===e}),this.selectedIndex.rawValue=e),this.empty.rawValue=!1}onItemSelectedChange_(e){if(e.rawValue){const t=this.items_.findIndex(s=>s===e.sender);this.items_.forEach((s,u)=>{s.rawValue=u===t}),this.selectedIndex.rawValue=t}else this.keepSelection_()}}const $t=z("tab");class Pt{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add($t(),ei()),t.viewProps.bindClassModifiers(this.element),H(t.empty,se(this.element,$t(void 0,"nop")));const s=e.createElement("div");s.classList.add($t("i")),this.element.appendChild(s),this.itemsElement=s;const u=t.contentsElement;u.classList.add($t("c")),this.element.appendChild(u),this.contentsElement=u}}class Yt extends Cn{constructor(e,t){const s=new Gt(e,{blade:t.blade,viewProps:t.viewProps}),u=new Gi;super({blade:t.blade,rackController:s,view:new Pt(e,{contentsElement:s.view.element,empty:u.empty,viewProps:t.viewProps})}),this.onPageAdd_=this.onPageAdd_.bind(this),this.onPageRemove_=this.onPageRemove_.bind(this),this.pageSet_=new Me(()=>null),this.pageSet_.emitter.on("add",this.onPageAdd_),this.pageSet_.emitter.on("remove",this.onPageRemove_),this.tab=u}get pageSet(){return this.pageSet_}add(e,t){this.pageSet_.add(e,t)}remove(e){this.pageSet_.remove(this.pageSet_.items[e])}onPageAdd_(e){const t=e.item;pt(this.view.itemsElement,t.itemController.view.element,e.index),this.rackController.rack.add(t.contentController,e.index),this.tab.add(t.props.value("selected"))}onPageRemove_(e){const t=e.item;tt(t.itemController.view.element),this.rackController.rack.remove(t.contentController),this.tab.remove(t.props.value("selected"))}}const Ln={id:"tab",type:"blade",accept(n){const e=K,t=S(n,{pages:e.required.array(e.required.object({title:e.required.string})),view:e.required.constant("tab")});return!t||t.pages.length===0?null:{params:t}},controller(n){const e=new Yt(n.document,{blade:n.blade,viewProps:n.viewProps});return n.params.pages.forEach(t=>{const s=new si(n.document,{itemProps:$.fromObject({selected:!1,title:t.title}),props:$.fromObject({selected:!1})});e.add(s)}),e},api(n){return n.controller instanceof Yt?new ri(n.controller,n.pool):null}};function Ki(n,e){const t=n.accept(e.params);if(!t)return null;const s=K.optional.boolean(e.params.disabled).value,u=K.optional.boolean(e.params.hidden).value;return n.controller({blade:Ke(),document:e.document,params:Object.assign(Object.assign({},t.params),{disabled:s,hidden:u}),viewProps:st.create({disabled:s,hidden:u})})}class ai{constructor(){this.disabled=!1,this.emitter=new N}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class Vn{constructor(e,t){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=e,this.emitter=new N,this.interval_=t,this.setTimer_()}get disabled(){return this.disabled_}set disabled(e){this.disabled_=e,this.disabled_?this.clearTimer_():this.setTimer_()}dispose(){this.clearTimer_()}clearTimer_(){if(this.timerId_===null)return;const e=this.doc_.defaultView;e&&e.clearInterval(this.timerId_),this.timerId_=null}setTimer_(){if(this.clearTimer_(),this.interval_<=0)return;const e=this.doc_.defaultView;e&&(this.timerId_=e.setInterval(this.onTick_,this.interval_))}onTick_(){this.disabled_||this.emitter.emit("tick",{sender:this})}}class rt{constructor(e){this.constraints=e}constrain(e){return this.constraints.reduce((t,s)=>s.constrain(t),e)}}function re(n,e){if(n instanceof e)return n;if(n instanceof rt){const t=n.constraints.reduce((s,u)=>s||(u instanceof e?u:null),null);if(t)return t}return null}class kt{constructor(e){this.options=e}constrain(e){const t=this.options;return t.length===0||t.filter(u=>u.value===e).length>0?e:t[0].value}}class ze{constructor(e){this.maxValue=e.max,this.minValue=e.min}constrain(e){let t=e;return x(this.minValue)||(t=Math.max(t,this.minValue)),x(this.maxValue)||(t=Math.min(t,this.maxValue)),t}}class xe{constructor(e,t=0){this.step=e,this.origin=t}constrain(e){const t=this.origin%this.step,s=Math.round((e-t)/this.step);return t+s*this.step}}const An=z("lst");class $i{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.props_=t.props,this.element=e.createElement("div"),this.element.classList.add(An()),t.viewProps.bindClassModifiers(this.element);const s=e.createElement("select");s.classList.add(An("s")),U(this.props_,"options",_=>{Jt(s),_.forEach((k,I)=>{const G=e.createElement("option");G.dataset.index=String(I),G.textContent=k.text,G.value=String(k.value),s.appendChild(G)})}),t.viewProps.bindDisabled(s),this.element.appendChild(s),this.selectElement=s;const u=e.createElement("div");u.classList.add(An("m")),u.appendChild(et(e,"dropdown")),this.element.appendChild(u),t.value.emitter.on("change",this.onValueChange_),this.value_=t.value,this.update_()}update_(){this.selectElement.value=String(this.value_.rawValue)}onValueChange_(){this.update_()}}class ht{constructor(e,t){this.onSelectChange_=this.onSelectChange_.bind(this),this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.view=new $i(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.view.selectElement.addEventListener("change",this.onSelectChange_)}onSelectChange_(e){const s=e.currentTarget.selectedOptions.item(0);if(!s)return;const u=Number(s.dataset.index);this.value.rawValue=this.props.get("options")[u].value}}const li=z("pop");class Yi{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(li()),t.viewProps.bindClassModifiers(this.element),H(t.shows,se(this.element,li(void 0,"v")))}}class En{constructor(e,t){this.shows=ee(!1),this.viewProps=t.viewProps,this.view=new Yi(e,{shows:this.shows,viewProps:this.viewProps})}}const ci=z("txt");class sn{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(ci()),t.viewProps.bindClassModifiers(this.element),this.props_=t.props,this.props_.emitter.on("change",this.onChange_);const s=e.createElement("input");s.classList.add(ci("i")),s.type="text",t.viewProps.bindDisabled(s),this.element.appendChild(s),this.inputElement=s,t.value.emitter.on("change",this.onChange_),this.value_=t.value,this.refresh()}refresh(){const e=this.props_.get("formatter");this.inputElement.value=e(this.value_.rawValue)}onChange_(){this.refresh()}}class qt{constructor(e,t){this.onInputChange_=this.onInputChange_.bind(this),this.parser_=t.parser,this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.view=new sn(e,{props:t.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(e){const s=e.currentTarget.value,u=this.parser_(s);x(u)||(this.value.rawValue=u),this.view.refresh()}}function qi(n){return String(n)}function pi(n){return n==="false"?!1:!!n}function ui(n){return qi(n)}class Xi{constructor(e){this.text=e}evaluate(){return Number(this.text)}toString(){return this.text}}const Qi={"**":(n,e)=>Math.pow(n,e),"*":(n,e)=>n*e,"/":(n,e)=>n/e,"%":(n,e)=>n%e,"+":(n,e)=>n+e,"-":(n,e)=>n-e,"<<":(n,e)=>n<<e,">>":(n,e)=>n>>e,">>>":(n,e)=>n>>>e,"&":(n,e)=>n&e,"^":(n,e)=>n^e,"|":(n,e)=>n|e};class Zi{constructor(e,t,s){this.left=t,this.operator=e,this.right=s}evaluate(){const e=Qi[this.operator];if(!e)throw new Error(`unexpected binary operator: '${this.operator}`);return e(this.left.evaluate(),this.right.evaluate())}toString(){return["b(",this.left.toString(),this.operator,this.right.toString(),")"].join(" ")}}const Wi={"+":n=>n,"-":n=>-n,"~":n=>~n};class Ji{constructor(e,t){this.operator=e,this.expression=t}evaluate(){const e=Wi[this.operator];if(!e)throw new Error(`unexpected unary operator: '${this.operator}`);return e(this.expression.evaluate())}toString(){return["u(",this.operator,this.expression.toString(),")"].join(" ")}}function In(n){return(e,t)=>{for(let s=0;s<n.length;s++){const u=n[s](e,t);if(u!=="")return u}return""}}function Xt(n,e){var t;const s=n.substr(e).match(/^\s+/);return(t=s&&s[0])!==null&&t!==void 0?t:""}function Hi(n,e){const t=n.substr(e,1);return t.match(/^[1-9]$/)?t:""}function Qt(n,e){var t;const s=n.substr(e).match(/^[0-9]+/);return(t=s&&s[0])!==null&&t!==void 0?t:""}function es(n,e){const t=Qt(n,e);if(t!=="")return t;const s=n.substr(e,1);if(e+=1,s!=="-"&&s!=="+")return"";const u=Qt(n,e);return u===""?"":s+u}function rn(n,e){const t=n.substr(e,1);if(e+=1,t.toLowerCase()!=="e")return"";const s=es(n,e);return s===""?"":t+s}function hi(n,e){const t=n.substr(e,1);if(t==="0")return t;const s=Hi(n,e);return e+=s.length,s===""?"":s+Qt(n,e)}function ts(n,e){const t=hi(n,e);if(e+=t.length,t==="")return"";const s=n.substr(e,1);if(e+=s.length,s!==".")return"";const u=Qt(n,e);return e+=u.length,t+s+u+rn(n,e)}function Tn(n,e){const t=n.substr(e,1);if(e+=t.length,t!==".")return"";const s=Qt(n,e);return e+=s.length,s===""?"":t+s+rn(n,e)}function ns(n,e){const t=hi(n,e);return e+=t.length,t===""?"":t+rn(n,e)}const is=In([ts,Tn,ns]);function ss(n,e){var t;const s=n.substr(e).match(/^[01]+/);return(t=s&&s[0])!==null&&t!==void 0?t:""}function ot(n,e){const t=n.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0b")return"";const s=ss(n,e);return s===""?"":t+s}function rs(n,e){var t;const s=n.substr(e).match(/^[0-7]+/);return(t=s&&s[0])!==null&&t!==void 0?t:""}function os(n,e){const t=n.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0o")return"";const s=rs(n,e);return s===""?"":t+s}function as(n,e){var t;const s=n.substr(e).match(/^[0-9a-f]+/i);return(t=s&&s[0])!==null&&t!==void 0?t:""}function ls(n,e){const t=n.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0x")return"";const s=as(n,e);return s===""?"":t+s}const cs=In([ot,os,ls]),di=In([cs,is]);function ps(n,e){const t=di(n,e);return e+=t.length,t===""?null:{evaluable:new Xi(t),cursor:e}}function us(n,e){const t=n.substr(e,1);if(e+=t.length,t!=="(")return null;const s=Ye(n,e);if(!s)return null;e=s.cursor,e+=Xt(n,e).length;const u=n.substr(e,1);return e+=u.length,u!==")"?null:{evaluable:s.evaluable,cursor:e}}function Ne(n,e){var t;return(t=ps(n,e))!==null&&t!==void 0?t:us(n,e)}function mi(n,e){const t=Ne(n,e);if(t)return t;const s=n.substr(e,1);if(e+=s.length,s!=="+"&&s!=="-"&&s!=="~")return null;const u=mi(n,e);return u?(e=u.cursor,{cursor:e,evaluable:new Ji(s,u.evaluable)}):null}function hs(n,e,t){t+=Xt(e,t).length;const s=n.filter(u=>e.startsWith(u,t))[0];return s?(t+=s.length,t+=Xt(e,t).length,{cursor:t,operator:s}):null}function On(n,e){return(t,s)=>{const u=n(t,s);if(!u)return null;s=u.cursor;let _=u.evaluable;for(;;){const k=hs(e,t,s);if(!k)break;s=k.cursor;const I=n(t,s);if(!I)return null;s=I.cursor,_=new Zi(k.operator,_,I.evaluable)}return _?{cursor:s,evaluable:_}:null}}const ds=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((n,e)=>On(n,e),mi);function Ye(n,e){return e+=Xt(n,e).length,ds(n,e)}function fi(n){const e=Ye(n,0);return!e||e.cursor+Xt(n,e.cursor).length!==n.length?null:e.evaluable}function qe(n){var e;const t=fi(n);return(e=t==null?void 0:t.evaluate())!==null&&e!==void 0?e:null}function Dn(n){if(typeof n=="number")return n;if(typeof n=="string"){const e=qe(n);if(!x(e))return e}return 0}function ms(n){return String(n)}function pe(n){return e=>e.toFixed(Math.max(Math.min(n,20),0))}const fs=pe(0);function Mt(n){return fs(n)+"%"}function vi(n){return String(n)}function on(n){return n}function Xe(n,e){for(;n.length<e;)n.push(void 0)}function vs(n){const e=[];return Xe(e,n),ee(e)}function bs(n){const e=n.indexOf(void 0);return e<0?n:n.slice(0,e)}function bi(n,e){const t=[...bs(n),e];return t.length>n.length?t.splice(0,t.length-n.length):Xe(t,n.length),t}function St({primary:n,secondary:e,forward:t,backward:s}){let u=!1;function _(k){u||(u=!0,k(),u=!1)}n.emitter.on("change",k=>{_(()=>{e.setRawValue(t(n,e),k.options)})}),e.emitter.on("change",k=>{_(()=>{n.setRawValue(s(n,e),k.options)}),_(()=>{e.setRawValue(t(n,e),k.options)})}),_(()=>{e.setRawValue(t(n,e),{forceEmit:!1,last:!0})})}function ye(n,e){const t=n*(e.altKey?.1:1)*(e.shiftKey?10:1);return e.upKey?+t:e.downKey?-t:0}function Re(n){return{altKey:n.altKey,downKey:n.key==="ArrowDown",shiftKey:n.shiftKey,upKey:n.key==="ArrowUp"}}function Qe(n){return{altKey:n.altKey,downKey:n.key==="ArrowLeft",shiftKey:n.shiftKey,upKey:n.key==="ArrowRight"}}function Nn(n){return n==="ArrowUp"||n==="ArrowDown"}function gi(n){return Nn(n)||n==="ArrowLeft"||n==="ArrowRight"}function jn(n,e){var t,s;const u=e.ownerDocument.defaultView,_=e.getBoundingClientRect();return{x:n.pageX-(((t=u&&u.scrollX)!==null&&t!==void 0?t:0)+_.left),y:n.pageY-(((s=u&&u.scrollY)!==null&&s!==void 0?s:0)+_.top)}}class dt{constructor(e){this.lastTouch_=null,this.onDocumentMouseMove_=this.onDocumentMouseMove_.bind(this),this.onDocumentMouseUp_=this.onDocumentMouseUp_.bind(this),this.onMouseDown_=this.onMouseDown_.bind(this),this.onTouchEnd_=this.onTouchEnd_.bind(this),this.onTouchMove_=this.onTouchMove_.bind(this),this.onTouchStart_=this.onTouchStart_.bind(this),this.elem_=e,this.emitter=new N,e.addEventListener("touchstart",this.onTouchStart_,{passive:!1}),e.addEventListener("touchmove",this.onTouchMove_,{passive:!0}),e.addEventListener("touchend",this.onTouchEnd_),e.addEventListener("mousedown",this.onMouseDown_)}computePosition_(e){const t=this.elem_.getBoundingClientRect();return{bounds:{width:t.width,height:t.height},point:e?{x:e.x,y:e.y}:null}}onMouseDown_(e){var t;e.preventDefault(),(t=e.currentTarget)===null||t===void 0||t.focus();const s=this.elem_.ownerDocument;s.addEventListener("mousemove",this.onDocumentMouseMove_),s.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(jn(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onDocumentMouseMove_(e){this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(jn(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onDocumentMouseUp_(e){const t=this.elem_.ownerDocument;t.removeEventListener("mousemove",this.onDocumentMouseMove_),t.removeEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("up",{altKey:e.altKey,data:this.computePosition_(jn(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onTouchStart_(e){e.preventDefault();const t=e.targetTouches.item(0),s=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(t?{x:t.clientX-s.left,y:t.clientY-s.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=t}onTouchMove_(e){const t=e.targetTouches.item(0),s=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(t?{x:t.clientX-s.left,y:t.clientY-s.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=t}onTouchEnd_(e){var t;const s=(t=e.targetTouches.item(0))!==null&&t!==void 0?t:this.lastTouch_,u=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:e.altKey,data:this.computePosition_(s?{x:s.clientX-u.left,y:s.clientY-u.top}:void 0),sender:this,shiftKey:e.shiftKey})}}function le(n,e,t,s,u){const _=(n-e)/(t-e);return s+_*(u-s)}function _i(n){return String(n.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function me(n,e,t){return Math.min(Math.max(n,e),t)}function wi(n,e){return(n%e+e)%e}const Le=z("txt");class gs{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.props_=t.props,this.props_.emitter.on("change",this.onChange_),this.element=e.createElement("div"),this.element.classList.add(Le(),Le(void 0,"num")),t.arrayPosition&&this.element.classList.add(Le(void 0,t.arrayPosition)),t.viewProps.bindClassModifiers(this.element);const s=e.createElement("input");s.classList.add(Le("i")),s.type="text",t.viewProps.bindDisabled(s),this.element.appendChild(s),this.inputElement=s,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=t.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add(Le()),this.inputElement.classList.add(Le("i"));const u=e.createElement("div");u.classList.add(Le("k")),this.element.appendChild(u),this.knobElement=u;const _=e.createElementNS(Ie,"svg");_.classList.add(Le("g")),this.knobElement.appendChild(_);const k=e.createElementNS(Ie,"path");k.classList.add(Le("gb")),_.appendChild(k),this.guideBodyElem_=k;const I=e.createElementNS(Ie,"path");I.classList.add(Le("gh")),_.appendChild(I),this.guideHeadElem_=I;const G=e.createElement("div");G.classList.add(z("tt")()),this.knobElement.appendChild(G),this.tooltipElem_=G,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.refresh()}onDraggingChange_(e){if(e.rawValue===null){this.element.classList.remove(Le(void 0,"drg"));return}this.element.classList.add(Le(void 0,"drg"));const t=e.rawValue/this.props_.get("draggingScale"),s=t+(t>0?-1:t<0?1:0),u=me(-s,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${s+u},0 L${s},4 L${s+u},8`,`M ${t},-1 L${t},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${t},4`);const _=this.props_.get("formatter");this.tooltipElem_.textContent=_(this.value.rawValue),this.tooltipElem_.style.left=`${t}px`}refresh(){const e=this.props_.get("formatter");this.inputElement.value=e(this.value.rawValue)}onChange_(){this.refresh()}}class Ze{constructor(e,t){var s;this.originRawValue_=0,this.onInputChange_=this.onInputChange_.bind(this),this.onInputKeyDown_=this.onInputKeyDown_.bind(this),this.onInputKeyUp_=this.onInputKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=t.baseStep,this.parser_=t.parser,this.props=t.props,this.sliderProps_=(s=t.sliderProps)!==null&&s!==void 0?s:null,this.value=t.value,this.viewProps=t.viewProps,this.dragging_=ee(null),this.view=new gs(e,{arrayPosition:t.arrayPosition,dragging:this.dragging_,props:this.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.inputElement.addEventListener("keydown",this.onInputKeyDown_),this.view.inputElement.addEventListener("keyup",this.onInputKeyUp_);const u=new dt(this.view.knobElement);u.emitter.on("down",this.onPointerDown_),u.emitter.on("move",this.onPointerMove_),u.emitter.on("up",this.onPointerUp_)}constrainValue_(e){var t,s;const u=(t=this.sliderProps_)===null||t===void 0?void 0:t.get("minValue"),_=(s=this.sliderProps_)===null||s===void 0?void 0:s.get("maxValue");let k=e;return u!==void 0&&(k=Math.max(k,u)),_!==void 0&&(k=Math.min(k,_)),k}onInputChange_(e){const s=e.currentTarget.value,u=this.parser_(s);x(u)||(this.value.rawValue=this.constrainValue_(u)),this.view.refresh()}onInputKeyDown_(e){const t=ye(this.baseStep_,Re(e));t!==0&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+t),{forceEmit:!1,last:!1})}onInputKeyUp_(e){ye(this.baseStep_,Re(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}onPointerDown_(){this.originRawValue_=this.value.rawValue,this.dragging_.rawValue=0}computeDraggingValue_(e){if(!e.point)return null;const t=e.point.x-e.bounds.width/2;return this.constrainValue_(this.originRawValue_+t*this.props.get("draggingScale"))}onPointerMove_(e){const t=this.computeDraggingValue_(e.data);t!==null&&(this.value.setRawValue(t,{forceEmit:!1,last:!1}),this.dragging_.rawValue=this.value.rawValue-this.originRawValue_)}onPointerUp_(e){const t=this.computeDraggingValue_(e.data);t!==null&&(this.value.setRawValue(t,{forceEmit:!0,last:!0}),this.dragging_.rawValue=null)}}const Fn=z("sld");class xi{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.props_=t.props,this.props_.emitter.on("change",this.onChange_),this.element=e.createElement("div"),this.element.classList.add(Fn()),t.viewProps.bindClassModifiers(this.element);const s=e.createElement("div");s.classList.add(Fn("t")),t.viewProps.bindTabIndex(s),this.element.appendChild(s),this.trackElement=s;const u=e.createElement("div");u.classList.add(Fn("k")),this.trackElement.appendChild(u),this.knobElement=u,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.update_()}update_(){const e=me(le(this.value.rawValue,this.props_.get("minValue"),this.props_.get("maxValue"),0,100),0,100);this.knobElement.style.width=`${e}%`}onChange_(){this.update_()}}class _s{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDownOrMove_=this.onPointerDownOrMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=t.baseStep,this.value=t.value,this.viewProps=t.viewProps,this.props=t.props,this.view=new xi(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new dt(this.view.trackElement),this.ptHandler_.emitter.on("down",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("move",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.trackElement.addEventListener("keydown",this.onKeyDown_),this.view.trackElement.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){e.point&&this.value.setRawValue(le(me(e.point.x,0,e.bounds.width),0,e.bounds.width,this.props.get("minValue"),this.props.get("maxValue")),t)}onPointerDownOrMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){const t=ye(this.baseStep_,Qe(e));t!==0&&this.value.setRawValue(this.value.rawValue+t,{forceEmit:!1,last:!1})}onKeyUp_(e){ye(this.baseStep_,Qe(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const zn=z("sldtxt");class je{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(zn());const s=e.createElement("div");s.classList.add(zn("s")),this.sliderView_=t.sliderView,s.appendChild(this.sliderView_.element),this.element.appendChild(s);const u=e.createElement("div");u.classList.add(zn("t")),this.textView_=t.textView,u.appendChild(this.textView_.element),this.element.appendChild(u)}}class an{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.sliderC_=new _s(e,{baseStep:t.baseStep,props:t.sliderProps,value:t.value,viewProps:this.viewProps}),this.textC_=new Ze(e,{baseStep:t.baseStep,parser:t.parser,props:t.textProps,sliderProps:t.sliderProps,value:t.value,viewProps:t.viewProps}),this.view=new je(e,{sliderView:this.sliderC_.view,textView:this.textC_.view})}get sliderController(){return this.sliderC_}get textController(){return this.textC_}}function Lt(n,e){n.write(e)}function Vt(n){const e=K;if(Array.isArray(n))return e.required.array(e.required.object({text:e.required.string,value:e.required.raw}))(n).value;if(typeof n=="object")return e.required.raw(n).value}function yi(n){if(n==="inline"||n==="popup")return n}function ke(n){const e=K;return e.required.object({max:e.optional.number,min:e.optional.number,step:e.optional.number})(n).value}function Ci(n){if(Array.isArray(n))return n;const e=[];return Object.keys(n).forEach(t=>{e.push({text:t,value:n[t]})}),e}function Bn(n){return x(n)?null:new kt(Ci(n))}function Un(n){const e=n?re(n,kt):null;return e?e.options:null}function ws(n){const e=n?re(n,xe):null;return e?e.step:null}function ln(n,e){const t=n&&re(n,xe);return t?_i(t.step):Math.max(_i(e),2)}function At(n){const e=ws(n);return e??1}function Et(n,e){var t;const s=n&&re(n,xe),u=Math.abs((t=s==null?void 0:s.step)!==null&&t!==void 0?t:e);return u===0?.1:Math.pow(10,Math.floor(Math.log10(u))-1)}const cn=z("ckb");class xs{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(cn()),t.viewProps.bindClassModifiers(this.element);const s=e.createElement("label");s.classList.add(cn("l")),this.element.appendChild(s);const u=e.createElement("input");u.classList.add(cn("i")),u.type="checkbox",s.appendChild(u),this.inputElement=u,t.viewProps.bindDisabled(this.inputElement);const _=e.createElement("div");_.classList.add(cn("w")),s.appendChild(_);const k=et(e,"check");_.appendChild(k),t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.update_()}update_(){this.inputElement.checked=this.value.rawValue}onValueChange_(){this.update_()}}class ys{constructor(e,t){this.onInputChange_=this.onInputChange_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new xs(e,{value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(e){const t=e.currentTarget;this.value.rawValue=t.checked}}function Zt(n){const e=[],t=Bn(n.options);return t&&e.push(t),new rt(e)}const Cs={id:"input-bool",type:"input",accept:(n,e)=>{if(typeof n!="boolean")return null;const s=S(e,{options:K.optional.custom(Vt)});return s?{initialValue:n,params:s}:null},binding:{reader:n=>pi,constraint:n=>Zt(n.params),writer:n=>Lt},controller:n=>{var e;const t=n.document,s=n.value,u=n.constraint;return u&&re(u,kt)?new ht(t,{props:$.fromObject({options:(e=Un(u))!==null&&e!==void 0?e:[]}),value:s,viewProps:n.viewProps}):new ys(t,{value:s,viewProps:n.viewProps})}},mt=z("col");class Rn{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(mt()),t.foldable.bindExpandedClass(this.element,mt(void 0,"expanded")),U(t.foldable,"completed",se(this.element,mt(void 0,"cpl")));const s=e.createElement("div");s.classList.add(mt("h")),this.element.appendChild(s);const u=e.createElement("div");u.classList.add(mt("s")),s.appendChild(u),this.swatchElement=u;const _=e.createElement("div");if(_.classList.add(mt("t")),s.appendChild(_),this.textElement=_,t.pickerLayout==="inline"){const k=e.createElement("div");k.classList.add(mt("p")),this.element.appendChild(k),this.pickerElement=k}else this.pickerElement=null}}function Ps(n,e,t){const s=me(n/255,0,1),u=me(e/255,0,1),_=me(t/255,0,1),k=Math.max(s,u,_),I=Math.min(s,u,_),G=k-I;let Q=0,te=0;const ie=(I+k)/2;return G!==0&&(te=G/(1-Math.abs(k+I-1)),s===k?Q=(u-_)/G:u===k?Q=2+(_-s)/G:Q=4+(s-u)/G,Q=Q/6+(Q<0?1:0)),[Q*360,te*100,ie*100]}function Gn(n,e,t){const s=(n%360+360)%360,u=me(e/100,0,1),_=me(t/100,0,1),k=(1-Math.abs(2*_-1))*u,I=k*(1-Math.abs(s/60%2-1)),G=_-k/2;let Q,te,ie;return s>=0&&s<60?[Q,te,ie]=[k,I,0]:s>=60&&s<120?[Q,te,ie]=[I,k,0]:s>=120&&s<180?[Q,te,ie]=[0,k,I]:s>=180&&s<240?[Q,te,ie]=[0,I,k]:s>=240&&s<300?[Q,te,ie]=[I,0,k]:[Q,te,ie]=[k,0,I],[(Q+G)*255,(te+G)*255,(ie+G)*255]}function ks(n,e,t){const s=me(n/255,0,1),u=me(e/255,0,1),_=me(t/255,0,1),k=Math.max(s,u,_),I=Math.min(s,u,_),G=k-I;let Q;G===0?Q=0:k===s?Q=60*(((u-_)/G%6+6)%6):k===u?Q=60*((_-s)/G+2):Q=60*((s-u)/G+4);const te=k===0?0:G/k,ie=k;return[Q,te*100,ie*100]}function Pi(n,e,t){const s=wi(n,360),u=me(e/100,0,1),_=me(t/100,0,1),k=_*u,I=k*(1-Math.abs(s/60%2-1)),G=_-k;let Q,te,ie;return s>=0&&s<60?[Q,te,ie]=[k,I,0]:s>=60&&s<120?[Q,te,ie]=[I,k,0]:s>=120&&s<180?[Q,te,ie]=[0,k,I]:s>=180&&s<240?[Q,te,ie]=[0,I,k]:s>=240&&s<300?[Q,te,ie]=[I,0,k]:[Q,te,ie]=[k,0,I],[(Q+G)*255,(te+G)*255,(ie+G)*255]}function Ms(n,e,t){const s=t+e*(100-Math.abs(2*t-100))/200;return[n,s!==0?e*(100-Math.abs(2*t-100))/s:0,t+e*(100-Math.abs(2*t-100))/(2*100)]}function Ss(n,e,t){const s=100-Math.abs(t*(200-e)/100-100);return[n,s!==0?e*t/s:0,t*(200-e)/(2*100)]}function a(n){return[n[0],n[1],n[2]]}function i(n,e){return[n[0],n[1],n[2],e]}const r={hsl:{hsl:(n,e,t)=>[n,e,t],hsv:Ms,rgb:Gn},hsv:{hsl:Ss,hsv:(n,e,t)=>[n,e,t],rgb:Pi},rgb:{hsl:Ps,hsv:ks,rgb:(n,e,t)=>[n,e,t]}};function p(n,e){return[e==="float"?1:n==="rgb"?255:360,e==="float"?1:n==="rgb"?255:100,e==="float"?1:n==="rgb"?255:100]}function g(n,e,t){var s;const u=p(e,t);return[e==="rgb"?me(n[0],0,u[0]):wi(n[0],u[0]),me(n[1],0,u[1]),me(n[2],0,u[2]),me((s=n[3])!==null&&s!==void 0?s:1,0,1)]}function P(n,e,t,s){const u=p(e,t),_=p(e,s);return n.map((k,I)=>k/u[I]*_[I])}function A(n,e,t){const s=P(n,e.mode,e.type,"int"),u=r[e.mode][t.mode](...s);return P(u,t.mode,"int",t.type)}function F(n,e){return typeof n!="object"||x(n)?!1:e in n&&typeof n[e]=="number"}class B{constructor(e,t,s="int"){this.mode=t,this.type=s,this.comps_=g(e,t,s)}static black(e="int"){return new B([0,0,0],"rgb",e)}static fromObject(e,t="int"){const s="a"in e?[e.r,e.g,e.b,e.a]:[e.r,e.g,e.b];return new B(s,"rgb",t)}static toRgbaObject(e,t="int"){return e.toRgbaObject(t)}static isRgbColorObject(e){return F(e,"r")&&F(e,"g")&&F(e,"b")}static isRgbaColorObject(e){return this.isRgbColorObject(e)&&F(e,"a")}static isColorObject(e){return this.isRgbColorObject(e)}static equals(e,t){if(e.mode!==t.mode)return!1;const s=e.comps_,u=t.comps_;for(let _=0;_<s.length;_++)if(s[_]!==u[_])return!1;return!0}getComponents(e,t="int"){return i(A(a(this.comps_),{mode:this.mode,type:this.type},{mode:e??this.mode,type:t}),this.comps_[3])}toRgbaObject(e="int"){const t=this.getComponents("rgb",e);return{r:t[0],g:t[1],b:t[2],a:t[3]}}}const fe=z("colp");class We{constructor(e,t){this.alphaViews_=null,this.element=e.createElement("div"),this.element.classList.add(fe());const s=e.createElement("div");s.classList.add(fe("hsv"));const u=e.createElement("div");u.classList.add(fe("sv")),this.svPaletteView_=t.svPaletteView,u.appendChild(this.svPaletteView_.element),s.appendChild(u);const _=e.createElement("div");_.classList.add(fe("h")),this.hPaletteView_=t.hPaletteView,_.appendChild(this.hPaletteView_.element),s.appendChild(_),this.element.appendChild(s);const k=e.createElement("div");if(k.classList.add(fe("rgb")),this.textView_=t.textView,k.appendChild(this.textView_.element),this.element.appendChild(k),t.alphaViews){this.alphaViews_={palette:t.alphaViews.palette,text:t.alphaViews.text};const I=e.createElement("div");I.classList.add(fe("a"));const G=e.createElement("div");G.classList.add(fe("ap")),G.appendChild(this.alphaViews_.palette.element),I.appendChild(G);const Q=e.createElement("div");Q.classList.add(fe("at")),Q.appendChild(this.alphaViews_.text.element),I.appendChild(Q),this.element.appendChild(I)}}get allFocusableElements(){const e=[this.svPaletteView_.element,this.hPaletteView_.element,this.textView_.modeSelectElement,...this.textView_.textViews.map(t=>t.inputElement)];return this.alphaViews_&&e.push(this.alphaViews_.palette.element,this.alphaViews_.text.inputElement),e}}function Kn(n){return n==="int"?"int":n==="float"?"float":void 0}function $n(n){const e=K;return S(n,{alpha:e.optional.boolean,color:e.optional.object({alpha:e.optional.boolean,type:e.optional.custom(Kn)}),expanded:e.optional.boolean,picker:e.optional.custom(yi)})}function ft(n){return n?.1:1}function Wt(n){var e;return(e=n.color)===null||e===void 0?void 0:e.type}function Bo(n,e){return n.alpha===e.alpha&&n.mode===e.mode&&n.notation===e.notation&&n.type===e.type}function Ge(n,e){const t=n.match(/^(.+)%$/);return Math.min(t?parseFloat(t[1])*.01*e:parseFloat(n),e)}const Uo={deg:n=>n,grad:n=>n*360/400,rad:n=>n*360/(2*Math.PI),turn:n=>n*360};function ir(n){const e=n.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);if(!e)return parseFloat(n);const t=parseFloat(e[1]),s=e[2];return Uo[s](t)}function sr(n){const e=n.match(/^rgb\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const t=[Ge(e[1],255),Ge(e[2],255),Ge(e[3],255)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function rr(n){return e=>{const t=sr(e);return t?new B(t,"rgb",n):null}}function or(n){const e=n.match(/^rgba\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const t=[Ge(e[1],255),Ge(e[2],255),Ge(e[3],255),Ge(e[4],1)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function ar(n){return e=>{const t=or(e);return t?new B(t,"rgb",n):null}}function lr(n){const e=n.match(/^hsl\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const t=[ir(e[1]),Ge(e[2],100),Ge(e[3],100)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function cr(n){return e=>{const t=lr(e);return t?new B(t,"hsl",n):null}}function pr(n){const e=n.match(/^hsla\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const t=[ir(e[1]),Ge(e[2],100),Ge(e[3],100),Ge(e[4],1)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function ur(n){return e=>{const t=pr(e);return t?new B(t,"hsl",n):null}}function hr(n){const e=n.match(/^#([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(e)return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)];const t=n.match(/^(?:#|0x)([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:null}function Ro(n){const e=hr(n);return e?new B(e,"rgb","int"):null}function dr(n){const e=n.match(/^#?([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(e)return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16),le(parseInt(e[4]+e[4],16),0,255,0,1)];const t=n.match(/^(?:#|0x)?([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16),le(parseInt(t[4],16),0,255,0,1)]:null}function Go(n){const e=dr(n);return e?new B(e,"rgb","int"):null}function mr(n){const e=n.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!e)return null;const t=[parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3])];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function fr(n){return e=>{const t=mr(e);return t?new B(t,"rgb",n):null}}function vr(n){const e=n.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*a\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!e)return null;const t=[parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3]),parseFloat(e[4])];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function br(n){return e=>{const t=vr(e);return t?new B(t,"rgb",n):null}}const Ko=[{parser:hr,result:{alpha:!1,mode:"rgb",notation:"hex"}},{parser:dr,result:{alpha:!0,mode:"rgb",notation:"hex"}},{parser:sr,result:{alpha:!1,mode:"rgb",notation:"func"}},{parser:or,result:{alpha:!0,mode:"rgb",notation:"func"}},{parser:lr,result:{alpha:!1,mode:"hsl",notation:"func"}},{parser:pr,result:{alpha:!0,mode:"hsl",notation:"func"}},{parser:mr,result:{alpha:!1,mode:"rgb",notation:"object"}},{parser:vr,result:{alpha:!0,mode:"rgb",notation:"object"}}];function $o(n){return Ko.reduce((e,{parser:t,result:s})=>e||(t(n)?s:null),null)}function Ls(n,e="int"){const t=$o(n);return t?t.notation==="hex"&&e!=="float"?Object.assign(Object.assign({},t),{type:"int"}):t.notation==="func"?Object.assign(Object.assign({},t),{type:e}):null:null}const gr={int:[Ro,Go,rr("int"),ar("int"),cr("int"),ur("int"),fr("int"),br("int")],float:[rr("float"),ar("float"),cr("float"),ur("float"),fr("float"),br("float")]};function Yo(n){const e=gr[n];return t=>{if(typeof t!="string")return B.black(n);const s=e.reduce((u,_)=>u||_(t),null);return s??B.black(n)}}function Vs(n){const e=gr[n];return t=>e.reduce((s,u)=>s||u(t),null)}function _r(n){const e=me(Math.floor(n),0,255).toString(16);return e.length===1?`0${e}`:e}function wr(n,e="#"){const t=a(n.getComponents("rgb")).map(_r).join("");return`${e}${t}`}function As(n,e="#"){const t=n.getComponents("rgb"),s=[t[0],t[1],t[2],t[3]*255].map(_r).join("");return`${e}${s}`}function xr(n,e){const t=pe(e==="float"?2:0);return`rgb(${a(n.getComponents("rgb",e)).map(u=>t(u)).join(", ")})`}function qo(n){return e=>xr(e,n)}function ki(n,e){const t=pe(2),s=pe(e==="float"?2:0);return`rgba(${n.getComponents("rgb",e).map((_,k)=>(k===3?t:s)(_)).join(", ")})`}function Xo(n){return e=>ki(e,n)}function Qo(n){const e=[pe(0),Mt,Mt];return`hsl(${a(n.getComponents("hsl")).map((s,u)=>e[u](s)).join(", ")})`}function Zo(n){const e=[pe(0),Mt,Mt,pe(2)];return`hsla(${n.getComponents("hsl").map((s,u)=>e[u](s)).join(", ")})`}function yr(n,e){const t=pe(e==="float"?2:0),s=["r","g","b"];return`{${a(n.getComponents("rgb",e)).map((_,k)=>`${s[k]}: ${t(_)}`).join(", ")}}`}function Wo(n){return e=>yr(e,n)}function Cr(n,e){const t=pe(2),s=pe(e==="float"?2:0),u=["r","g","b","a"];return`{${n.getComponents("rgb",e).map((k,I)=>{const G=I===3?t:s;return`${u[I]}: ${G(k)}`}).join(", ")}}`}function Jo(n){return e=>Cr(e,n)}const Ho=[{format:{alpha:!1,mode:"rgb",notation:"hex",type:"int"},stringifier:wr},{format:{alpha:!0,mode:"rgb",notation:"hex",type:"int"},stringifier:As},{format:{alpha:!1,mode:"hsl",notation:"func",type:"int"},stringifier:Qo},{format:{alpha:!0,mode:"hsl",notation:"func",type:"int"},stringifier:Zo},...["int","float"].reduce((n,e)=>[...n,{format:{alpha:!1,mode:"rgb",notation:"func",type:e},stringifier:qo(e)},{format:{alpha:!0,mode:"rgb",notation:"func",type:e},stringifier:Xo(e)},{format:{alpha:!1,mode:"rgb",notation:"object",type:e},stringifier:Wo(e)},{format:{alpha:!0,mode:"rgb",notation:"object",type:e},stringifier:Jo(e)}],[])];function Es(n){return Ho.reduce((e,t)=>e||(Bo(t.format,n)?t.stringifier:null),null)}const Yn=z("apl");class ea{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.value=t.value,this.value.emitter.on("change",this.onValueChange_),this.element=e.createElement("div"),this.element.classList.add(Yn()),t.viewProps.bindTabIndex(this.element);const s=e.createElement("div");s.classList.add(Yn("b")),this.element.appendChild(s);const u=e.createElement("div");u.classList.add(Yn("c")),s.appendChild(u),this.colorElem_=u;const _=e.createElement("div");_.classList.add(Yn("m")),this.element.appendChild(_),this.markerElem_=_;const k=e.createElement("div");k.classList.add(Yn("p")),this.markerElem_.appendChild(k),this.previewElem_=k,this.update_()}update_(){const e=this.value.rawValue,t=e.getComponents("rgb"),s=new B([t[0],t[1],t[2],0],"rgb"),u=new B([t[0],t[1],t[2],255],"rgb"),_=["to right",ki(s),ki(u)];this.colorElem_.style.background=`linear-gradient(${_.join(",")})`,this.previewElem_.style.backgroundColor=ki(e);const k=le(t[3],0,1,0,100);this.markerElem_.style.left=`${k}%`}onValueChange_(){this.update_()}}class ta{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new ea(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new dt(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;const s=e.point.x/e.bounds.width,u=this.value.rawValue,[_,k,I]=u.getComponents("hsv");this.value.setRawValue(new B([_,k,I,s],"hsv"),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){const t=ye(ft(!0),Qe(e));if(t===0)return;const s=this.value.rawValue,[u,_,k,I]=s.getComponents("hsv");this.value.setRawValue(new B([u,_,k,I+t],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){ye(ft(!0),Qe(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const pn=z("coltxt");function na(n){const e=n.createElement("select"),t=[{text:"RGB",value:"rgb"},{text:"HSL",value:"hsl"},{text:"HSV",value:"hsv"}];return e.appendChild(t.reduce((s,u)=>{const _=n.createElement("option");return _.textContent=u.text,_.value=u.value,s.appendChild(_),s},n.createDocumentFragment())),e}class ia{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(pn());const s=e.createElement("div");s.classList.add(pn("m")),this.modeElem_=na(e),this.modeElem_.classList.add(pn("ms")),s.appendChild(this.modeSelectElement);const u=e.createElement("div");u.classList.add(pn("mm")),u.appendChild(et(e,"dropdown")),s.appendChild(u),this.element.appendChild(s);const _=e.createElement("div");_.classList.add(pn("w")),this.element.appendChild(_),this.textsElem_=_,this.textViews_=t.textViews,this.applyTextViews_(),H(t.colorMode,k=>{this.modeElem_.value=k})}get modeSelectElement(){return this.modeElem_}get textViews(){return this.textViews_}set textViews(e){this.textViews_=e,this.applyTextViews_()}applyTextViews_(){Jt(this.textsElem_);const e=this.element.ownerDocument;this.textViews_.forEach(t=>{const s=e.createElement("div");s.classList.add(pn("c")),s.appendChild(t.element),this.textsElem_.appendChild(s)})}}function sa(n){return pe(n==="float"?2:0)}function ra(n,e,t){const s=p(n,e)[t];return new ze({min:0,max:s})}function Is(n,e,t){return new Ze(n,{arrayPosition:t===0?"fst":t===3-1?"lst":"mid",baseStep:ft(!1),parser:e.parser,props:$.fromObject({draggingScale:e.colorType==="float"?.01:1,formatter:sa(e.colorType)}),value:ee(0,{constraint:ra(e.colorMode,e.colorType,t)}),viewProps:e.viewProps})}class oa{constructor(e,t){this.onModeSelectChange_=this.onModeSelectChange_.bind(this),this.colorType_=t.colorType,this.parser_=t.parser,this.value=t.value,this.viewProps=t.viewProps,this.colorMode=ee(this.value.rawValue.mode),this.ccs_=this.createComponentControllers_(e),this.view=new ia(e,{colorMode:this.colorMode,textViews:[this.ccs_[0].view,this.ccs_[1].view,this.ccs_[2].view]}),this.view.modeSelectElement.addEventListener("change",this.onModeSelectChange_)}createComponentControllers_(e){const t={colorMode:this.colorMode.rawValue,colorType:this.colorType_,parser:this.parser_,viewProps:this.viewProps},s=[Is(e,t,0),Is(e,t,1),Is(e,t,2)];return s.forEach((u,_)=>{St({primary:this.value,secondary:u.value,forward:k=>k.rawValue.getComponents(this.colorMode.rawValue,this.colorType_)[_],backward:(k,I)=>{const G=this.colorMode.rawValue,Q=k.rawValue.getComponents(G,this.colorType_);return Q[_]=I.rawValue,new B(i(a(Q),Q[3]),G,this.colorType_)}})}),s}onModeSelectChange_(e){const t=e.currentTarget;this.colorMode.rawValue=t.value,this.ccs_=this.createComponentControllers_(this.view.element.ownerDocument),this.view.textViews=[this.ccs_[0].view,this.ccs_[1].view,this.ccs_[2].view]}}const Ts=z("hpl");class aa{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.value=t.value,this.value.emitter.on("change",this.onValueChange_),this.element=e.createElement("div"),this.element.classList.add(Ts()),t.viewProps.bindTabIndex(this.element);const s=e.createElement("div");s.classList.add(Ts("c")),this.element.appendChild(s);const u=e.createElement("div");u.classList.add(Ts("m")),this.element.appendChild(u),this.markerElem_=u,this.update_()}update_(){const e=this.value.rawValue,[t]=e.getComponents("hsv");this.markerElem_.style.backgroundColor=xr(new B([t,100,100],"hsv"));const s=le(t,0,360,0,100);this.markerElem_.style.left=`${s}%`}onValueChange_(){this.update_()}}class la{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new aa(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new dt(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;const s=le(me(e.point.x,0,e.bounds.width),0,e.bounds.width,0,359),u=this.value.rawValue,[,_,k,I]=u.getComponents("hsv");this.value.setRawValue(new B([s,_,k,I],"hsv"),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){const t=ye(ft(!1),Qe(e));if(t===0)return;const s=this.value.rawValue,[u,_,k,I]=s.getComponents("hsv");this.value.setRawValue(new B([u+t,_,k,I],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){ye(ft(!1),Qe(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const Os=z("svp"),Pr=64;class ca{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.value=t.value,this.value.emitter.on("change",this.onValueChange_),this.element=e.createElement("div"),this.element.classList.add(Os()),t.viewProps.bindTabIndex(this.element);const s=e.createElement("canvas");s.height=Pr,s.width=Pr,s.classList.add(Os("c")),this.element.appendChild(s),this.canvasElement=s;const u=e.createElement("div");u.classList.add(Os("m")),this.element.appendChild(u),this.markerElem_=u,this.update_()}update_(){const e=wn(this.canvasElement);if(!e)return;const s=this.value.rawValue.getComponents("hsv"),u=this.canvasElement.width,_=this.canvasElement.height,k=e.getImageData(0,0,u,_),I=k.data;for(let te=0;te<_;te++)for(let ie=0;ie<u;ie++){const bt=le(ie,0,u,0,100),Xn=le(te,0,_,100,0),Qn=Pi(s[0],bt,Xn),mn=(te*u+ie)*4;I[mn]=Qn[0],I[mn+1]=Qn[1],I[mn+2]=Qn[2],I[mn+3]=255}e.putImageData(k,0,0);const G=le(s[1],0,100,0,100);this.markerElem_.style.left=`${G}%`;const Q=le(s[2],0,100,100,0);this.markerElem_.style.top=`${Q}%`}onValueChange_(){this.update_()}}class pa{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new ca(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new dt(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;const s=le(e.point.x,0,e.bounds.width,0,100),u=le(e.point.y,0,e.bounds.height,100,0),[_,,,k]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new B([_,s,u,k],"hsv"),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){gi(e.key)&&e.preventDefault();const[t,s,u,_]=this.value.rawValue.getComponents("hsv"),k=ft(!1),I=ye(k,Qe(e)),G=ye(k,Re(e));I===0&&G===0||this.value.setRawValue(new B([t,s+I,u+G,_],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){const t=ft(!1),s=ye(t,Qe(e)),u=ye(t,Re(e));s===0&&u===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class ua{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.hPaletteC_=new la(e,{value:this.value,viewProps:this.viewProps}),this.svPaletteC_=new pa(e,{value:this.value,viewProps:this.viewProps}),this.alphaIcs_=t.supportsAlpha?{palette:new ta(e,{value:this.value,viewProps:this.viewProps}),text:new Ze(e,{parser:qe,baseStep:.1,props:$.fromObject({draggingScale:.01,formatter:pe(2)}),value:ee(0,{constraint:new ze({min:0,max:1})}),viewProps:this.viewProps})}:null,this.alphaIcs_&&St({primary:this.value,secondary:this.alphaIcs_.text.value,forward:s=>s.rawValue.getComponents()[3],backward:(s,u)=>{const _=s.rawValue.getComponents();return _[3]=u.rawValue,new B(_,s.rawValue.mode)}}),this.textC_=new oa(e,{colorType:t.colorType,parser:qe,value:this.value,viewProps:this.viewProps}),this.view=new We(e,{alphaViews:this.alphaIcs_?{palette:this.alphaIcs_.palette.view,text:this.alphaIcs_.text.view}:null,hPaletteView:this.hPaletteC_.view,supportsAlpha:t.supportsAlpha,svPaletteView:this.svPaletteC_.view,textView:this.textC_.view})}get textController(){return this.textC_}}const Ds=z("colsw");class ha{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.element=e.createElement("div"),this.element.classList.add(Ds()),t.viewProps.bindClassModifiers(this.element);const s=e.createElement("div");s.classList.add(Ds("sw")),this.element.appendChild(s),this.swatchElem_=s;const u=e.createElement("button");u.classList.add(Ds("b")),t.viewProps.bindDisabled(u),this.element.appendChild(u),this.buttonElement=u,this.update_()}update_(){const e=this.value.rawValue;this.swatchElem_.style.backgroundColor=As(e)}onValueChange_(){this.update_()}}class da{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new ha(e,{value:this.value,viewProps:this.viewProps})}}class Ns{constructor(e,t){this.onButtonBlur_=this.onButtonBlur_.bind(this),this.onButtonClick_=this.onButtonClick_.bind(this),this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.foldable_=$e.create(t.expanded),this.swatchC_=new da(e,{value:this.value,viewProps:this.viewProps});const s=this.swatchC_.view.buttonElement;s.addEventListener("blur",this.onButtonBlur_),s.addEventListener("click",this.onButtonClick_),this.textC_=new qt(e,{parser:t.parser,props:$.fromObject({formatter:t.formatter}),value:this.value,viewProps:this.viewProps}),this.view=new Rn(e,{foldable:this.foldable_,pickerLayout:t.pickerLayout}),this.view.swatchElement.appendChild(this.swatchC_.view.element),this.view.textElement.appendChild(this.textC_.view.element),this.popC_=t.pickerLayout==="popup"?new En(e,{viewProps:this.viewProps}):null;const u=new ua(e,{colorType:t.colorType,supportsAlpha:t.supportsAlpha,value:this.value,viewProps:this.viewProps});u.view.allFocusableElements.forEach(_=>{_.addEventListener("blur",this.onPopupChildBlur_),_.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=u,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(u.view.element),St({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:_=>_.rawValue,backward:(_,k)=>k.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),Y(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onButtonBlur_(e){if(!this.popC_)return;const t=this.view.element,s=e.relatedTarget;(!s||!t.contains(s))&&(this.popC_.shows.rawValue=!1)}onButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(e){if(!this.popC_)return;const t=this.popC_.view.element,s=Be(e);s&&t.contains(s)||s&&s===this.swatchC_.view.buttonElement&&!_t(t.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(e){this.popC_?e.key==="Escape"&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&e.key==="Escape"&&this.swatchC_.view.buttonElement.focus()}}function ma(n,e){return B.isColorObject(n)?B.fromObject(n,e):B.black(e)}function fa(n){return a(n.getComponents("rgb")).reduce((e,t)=>e<<8|Math.floor(t)&255,0)}function va(n){return n.getComponents("rgb").reduce((e,t,s)=>{const u=Math.floor(s===3?t*255:t)&255;return e<<8|u},0)>>>0}function ba(n){return new B([n>>16&255,n>>8&255,n&255],"rgb")}function ga(n){return new B([n>>24&255,n>>16&255,n>>8&255,le(n&255,0,255,0,1)],"rgb")}function _a(n){return typeof n!="number"?B.black():ba(n)}function wa(n){return typeof n!="number"?B.black():ga(n)}function xa(n){const e=Es(n);return e?(t,s)=>{Lt(t,e(s))}:null}function ya(n){const e=n?va:fa;return(t,s)=>{Lt(t,e(s))}}function Ca(n,e,t){const s=e.toRgbaObject(t);n.writeProperty("r",s.r),n.writeProperty("g",s.g),n.writeProperty("b",s.b),n.writeProperty("a",s.a)}function Pa(n,e,t){const s=e.toRgbaObject(t);n.writeProperty("r",s.r),n.writeProperty("g",s.g),n.writeProperty("b",s.b)}function ka(n,e){return(t,s)=>{n?Ca(t,s,e):Pa(t,s,e)}}function js(n){var e;return!!(n!=null&&n.alpha||!((e=n==null?void 0:n.color)===null||e===void 0)&&e.alpha)}function Ma(n){return n?e=>As(e,"0x"):e=>wr(e,"0x")}function Sa(n){return"color"in n||"view"in n&&n.view==="color"}const La={id:"input-color-number",type:"input",accept:(n,e)=>{if(typeof n!="number"||!Sa(e))return null;const t=$n(e);return t?{initialValue:n,params:t}:null},binding:{reader:n=>js(n.params)?wa:_a,equals:B.equals,writer:n=>ya(js(n.params))},controller:n=>{const e=js(n.params),t="expanded"in n.params?n.params.expanded:void 0,s="picker"in n.params?n.params.picker:void 0;return new Ns(n.document,{colorType:"int",expanded:t??!1,formatter:Ma(e),parser:Vs("int"),pickerLayout:s??"popup",supportsAlpha:e,value:n.value,viewProps:n.viewProps})}};function Va(n){return B.isRgbaColorObject(n)}function Aa(n){return e=>ma(e,n)}function Ea(n,e){return t=>n?Cr(t,e):yr(t,e)}const Ia={id:"input-color-object",type:"input",accept:(n,e)=>{if(!B.isColorObject(n))return null;const t=$n(e);return t?{initialValue:n,params:t}:null},binding:{reader:n=>Aa(Wt(n.params)),equals:B.equals,writer:n=>ka(Va(n.initialValue),Wt(n.params))},controller:n=>{var e;const t=B.isRgbaColorObject(n.initialValue),s="expanded"in n.params?n.params.expanded:void 0,u="picker"in n.params?n.params.picker:void 0,_=(e=Wt(n.params))!==null&&e!==void 0?e:"int";return new Ns(n.document,{colorType:_,expanded:s??!1,formatter:Ea(t,_),parser:Vs(_),pickerLayout:u??"popup",supportsAlpha:t,value:n.value,viewProps:n.viewProps})}},Ta={id:"input-color-string",type:"input",accept:(n,e)=>{if(typeof n!="string"||"view"in e&&e.view==="text")return null;const t=Ls(n,Wt(e));if(!t||!Es(t))return null;const u=$n(e);return u?{initialValue:n,params:u}:null},binding:{reader:n=>{var e;return Yo((e=Wt(n.params))!==null&&e!==void 0?e:"int")},equals:B.equals,writer:n=>{const e=Ls(n.initialValue,Wt(n.params));if(!e)throw T.shouldNeverHappen();const t=xa(e);if(!t)throw T.notBindable();return t}},controller:n=>{const e=Ls(n.initialValue,Wt(n.params));if(!e)throw T.shouldNeverHappen();const t=Es(e);if(!t)throw T.shouldNeverHappen();const s="expanded"in n.params?n.params.expanded:void 0,u="picker"in n.params?n.params.picker:void 0;return new Ns(n.document,{colorType:e.type,expanded:s??!1,formatter:t,parser:Vs(e.type),pickerLayout:u??"popup",supportsAlpha:e.alpha,value:n.value,viewProps:n.viewProps})}};class It{constructor(e){this.components=e.components,this.asm_=e.assembly}constrain(e){const t=this.asm_.toComponents(e).map((s,u)=>{var _,k;return(k=(_=this.components[u])===null||_===void 0?void 0:_.constrain(s))!==null&&k!==void 0?k:s});return this.asm_.fromComponents(t)}}const kr=z("pndtxt");class Oa{constructor(e,t){this.textViews=t.textViews,this.element=e.createElement("div"),this.element.classList.add(kr()),this.textViews.forEach(s=>{const u=e.createElement("div");u.classList.add(kr("a")),u.appendChild(s.element),this.element.appendChild(u)})}}function Da(n,e,t){return new Ze(n,{arrayPosition:t===0?"fst":t===e.axes.length-1?"lst":"mid",baseStep:e.axes[t].baseStep,parser:e.parser,props:e.axes[t].textProps,value:ee(0,{constraint:e.axes[t].constraint}),viewProps:e.viewProps})}class Fs{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.acs_=t.axes.map((s,u)=>Da(e,t,u)),this.acs_.forEach((s,u)=>{St({primary:this.value,secondary:s.value,forward:_=>t.assembly.toComponents(_.rawValue)[u],backward:(_,k)=>{const I=t.assembly.toComponents(_.rawValue);return I[u]=k.rawValue,t.assembly.fromComponents(I)}})}),this.view=new Oa(e,{textViews:this.acs_.map(s=>s.view)})}}function Mr(n,e){return"step"in n&&!x(n.step)?new xe(n.step,e):null}function Sr(n){return"max"in n&&!x(n.max)||"min"in n&&!x(n.min)?new ze({max:n.max,min:n.min}):null}function Na(n,e){const t=[],s=Mr(n,e);s&&t.push(s);const u=Sr(n);u&&t.push(u);const _=Bn(n.options);return _&&t.push(_),new rt(t)}function ja(n){const e=n?re(n,ze):null;return e?[e.minValue,e.maxValue]:[void 0,void 0]}function Fa(n){const[e,t]=ja(n);return[e??0,t??100]}const za={id:"input-number",type:"input",accept:(n,e)=>{if(typeof n!="number")return null;const t=K,s=S(e,{format:t.optional.function,max:t.optional.number,min:t.optional.number,options:t.optional.custom(Vt),step:t.optional.number});return s?{initialValue:n,params:s}:null},binding:{reader:n=>Dn,constraint:n=>Na(n.params,n.initialValue),writer:n=>Lt},controller:n=>{var e,t;const s=n.value,u=n.constraint;if(u&&re(u,kt))return new ht(n.document,{props:$.fromObject({options:(e=Un(u))!==null&&e!==void 0?e:[]}),value:s,viewProps:n.viewProps});const _=(t="format"in n.params?n.params.format:void 0)!==null&&t!==void 0?t:pe(ln(u,s.rawValue));if(u&&re(u,ze)){const[k,I]=Fa(u);return new an(n.document,{baseStep:At(u),parser:qe,sliderProps:$.fromObject({maxValue:I,minValue:k}),textProps:$.fromObject({draggingScale:Et(u,s.rawValue),formatter:_}),value:s,viewProps:n.viewProps})}return new Ze(n.document,{baseStep:At(u),parser:qe,props:$.fromObject({draggingScale:Et(u,s.rawValue),formatter:_}),value:s,viewProps:n.viewProps})}};class Tt{constructor(e=0,t=0){this.x=e,this.y=t}getComponents(){return[this.x,this.y]}static isObject(e){if(x(e))return!1;const t=e.x,s=e.y;return!(typeof t!="number"||typeof s!="number")}static equals(e,t){return e.x===t.x&&e.y===t.y}toObject(){return{x:this.x,y:this.y}}}const Lr={toComponents:n=>n.getComponents(),fromComponents:n=>new Tt(...n)},un=z("p2d");class Ba{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(un()),t.viewProps.bindClassModifiers(this.element),H(t.expanded,se(this.element,un(void 0,"expanded")));const s=e.createElement("div");s.classList.add(un("h")),this.element.appendChild(s);const u=e.createElement("button");u.classList.add(un("b")),u.appendChild(et(e,"p2dpad")),t.viewProps.bindDisabled(u),s.appendChild(u),this.buttonElement=u;const _=e.createElement("div");if(_.classList.add(un("t")),s.appendChild(_),this.textElement=_,t.pickerLayout==="inline"){const k=e.createElement("div");k.classList.add(un("p")),this.element.appendChild(k),this.pickerElement=k}else this.pickerElement=null}}const Ot=z("p2dp");class Ua{constructor(e,t){this.onFoldableChange_=this.onFoldableChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.invertsY_=t.invertsY,this.maxValue_=t.maxValue,this.element=e.createElement("div"),this.element.classList.add(Ot()),t.layout==="popup"&&this.element.classList.add(Ot(void 0,"p"));const s=e.createElement("div");s.classList.add(Ot("p")),t.viewProps.bindTabIndex(s),this.element.appendChild(s),this.padElement=s;const u=e.createElementNS(Ie,"svg");u.classList.add(Ot("g")),this.padElement.appendChild(u),this.svgElem_=u;const _=e.createElementNS(Ie,"line");_.classList.add(Ot("ax")),_.setAttributeNS(null,"x1","0"),_.setAttributeNS(null,"y1","50%"),_.setAttributeNS(null,"x2","100%"),_.setAttributeNS(null,"y2","50%"),this.svgElem_.appendChild(_);const k=e.createElementNS(Ie,"line");k.classList.add(Ot("ax")),k.setAttributeNS(null,"x1","50%"),k.setAttributeNS(null,"y1","0"),k.setAttributeNS(null,"x2","50%"),k.setAttributeNS(null,"y2","100%"),this.svgElem_.appendChild(k);const I=e.createElementNS(Ie,"line");I.classList.add(Ot("l")),I.setAttributeNS(null,"x1","50%"),I.setAttributeNS(null,"y1","50%"),this.svgElem_.appendChild(I),this.lineElem_=I;const G=e.createElement("div");G.classList.add(Ot("m")),this.padElement.appendChild(G),this.markerElem_=G,t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.update_()}get allFocusableElements(){return[this.padElement]}update_(){const[e,t]=this.value.rawValue.getComponents(),s=this.maxValue_,u=le(e,-s,+s,0,100),_=le(t,-s,+s,0,100),k=this.invertsY_?100-_:_;this.lineElem_.setAttributeNS(null,"x2",`${u}%`),this.lineElem_.setAttributeNS(null,"y2",`${k}%`),this.markerElem_.style.left=`${u}%`,this.markerElem_.style.top=`${k}%`}onValueChange_(){this.update_()}onFoldableChange_(){this.update_()}}function Vr(n,e,t){return[ye(e[0],Qe(n)),ye(e[1],Re(n))*(t?1:-1)]}class Ra{constructor(e,t){this.onPadKeyDown_=this.onPadKeyDown_.bind(this),this.onPadKeyUp_=this.onPadKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.baseSteps_=t.baseSteps,this.maxValue_=t.maxValue,this.invertsY_=t.invertsY,this.view=new Ua(e,{invertsY:this.invertsY_,layout:t.layout,maxValue:this.maxValue_,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new dt(this.view.padElement),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.padElement.addEventListener("keydown",this.onPadKeyDown_),this.view.padElement.addEventListener("keyup",this.onPadKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;const s=this.maxValue_,u=le(e.point.x,0,e.bounds.width,-s,+s),_=le(this.invertsY_?e.bounds.height-e.point.y:e.point.y,0,e.bounds.height,-s,+s);this.value.setRawValue(new Tt(u,_),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onPadKeyDown_(e){gi(e.key)&&e.preventDefault();const[t,s]=Vr(e,this.baseSteps_,this.invertsY_);t===0&&s===0||this.value.setRawValue(new Tt(this.value.rawValue.x+t,this.value.rawValue.y+s),{forceEmit:!1,last:!1})}onPadKeyUp_(e){const[t,s]=Vr(e,this.baseSteps_,this.invertsY_);t===0&&s===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class Ga{constructor(e,t){var s,u;this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.onPadButtonBlur_=this.onPadButtonBlur_.bind(this),this.onPadButtonClick_=this.onPadButtonClick_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.foldable_=$e.create(t.expanded),this.popC_=t.pickerLayout==="popup"?new En(e,{viewProps:this.viewProps}):null;const _=new Ra(e,{baseSteps:[t.axes[0].baseStep,t.axes[1].baseStep],invertsY:t.invertsY,layout:t.pickerLayout,maxValue:t.maxValue,value:this.value,viewProps:this.viewProps});_.view.allFocusableElements.forEach(k=>{k.addEventListener("blur",this.onPopupChildBlur_),k.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=_,this.textC_=new Fs(e,{assembly:Lr,axes:t.axes,parser:t.parser,value:this.value,viewProps:this.viewProps}),this.view=new Ba(e,{expanded:this.foldable_.value("expanded"),pickerLayout:t.pickerLayout,viewProps:this.viewProps}),this.view.textElement.appendChild(this.textC_.view.element),(s=this.view.buttonElement)===null||s===void 0||s.addEventListener("blur",this.onPadButtonBlur_),(u=this.view.buttonElement)===null||u===void 0||u.addEventListener("click",this.onPadButtonClick_),this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),St({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:k=>k.rawValue,backward:(k,I)=>I.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),Y(this.foldable_,this.view.pickerElement))}onPadButtonBlur_(e){if(!this.popC_)return;const t=this.view.element,s=e.relatedTarget;(!s||!t.contains(s))&&(this.popC_.shows.rawValue=!1)}onPadButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(e){if(!this.popC_)return;const t=this.popC_.view.element,s=Be(e);s&&t.contains(s)||s&&s===this.view.buttonElement&&!_t(t.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(e){this.popC_?e.key==="Escape"&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&e.key==="Escape"&&this.view.buttonElement.focus()}}function Ka(n){return Tt.isObject(n)?new Tt(n.x,n.y):new Tt}function $a(n,e){n.writeProperty("x",e.x),n.writeProperty("y",e.y)}function vt(n,e){if(!n)return;const t=[],s=Mr(n,e);s&&t.push(s);const u=Sr(n);return u&&t.push(u),new rt(t)}function Ya(n,e){return new It({assembly:Lr,components:[vt("x"in n?n.x:void 0,e.x),vt("y"in n?n.y:void 0,e.y)]})}function Ar(n,e){var t,s;const u=n&&re(n,ze);if(u)return Math.max(Math.abs((t=u.minValue)!==null&&t!==void 0?t:0),Math.abs((s=u.maxValue)!==null&&s!==void 0?s:0));const _=At(n);return Math.max(Math.abs(_)*10,Math.abs(e)*10)}function qa(n,e){const t=e instanceof It?e.components[0]:void 0,s=e instanceof It?e.components[1]:void 0,u=Ar(t,n.x),_=Ar(s,n.y);return Math.max(u,_)}function Er(n,e){return{baseStep:At(e),constraint:e,textProps:$.fromObject({draggingScale:Et(e,n),formatter:pe(ln(e,n))})}}function Xa(n){if(!("y"in n))return!1;const e=n.y;return e&&"inverted"in e?!!e.inverted:!1}const Qa={id:"input-point2d",type:"input",accept:(n,e)=>{if(!Tt.isObject(n))return null;const t=K,s=S(e,{expanded:t.optional.boolean,picker:t.optional.custom(yi),x:t.optional.custom(ke),y:t.optional.object({inverted:t.optional.boolean,max:t.optional.number,min:t.optional.number,step:t.optional.number})});return s?{initialValue:n,params:s}:null},binding:{reader:n=>Ka,constraint:n=>Ya(n.params,n.initialValue),equals:Tt.equals,writer:n=>$a},controller:n=>{const e=n.document,t=n.value,s=n.constraint;if(!(s instanceof It))throw T.shouldNeverHappen();const u="expanded"in n.params?n.params.expanded:void 0,_="picker"in n.params?n.params.picker:void 0;return new Ga(e,{axes:[Er(t.rawValue.x,s.components[0]),Er(t.rawValue.y,s.components[1])],expanded:u??!1,invertsY:Xa(n.params),maxValue:qa(t.rawValue,s),parser:qe,pickerLayout:_??"popup",value:t,viewProps:n.viewProps})}};class hn{constructor(e=0,t=0,s=0){this.x=e,this.y=t,this.z=s}getComponents(){return[this.x,this.y,this.z]}static isObject(e){if(x(e))return!1;const t=e.x,s=e.y,u=e.z;return!(typeof t!="number"||typeof s!="number"||typeof u!="number")}static equals(e,t){return e.x===t.x&&e.y===t.y&&e.z===t.z}toObject(){return{x:this.x,y:this.y,z:this.z}}}const Ir={toComponents:n=>n.getComponents(),fromComponents:n=>new hn(...n)};function Za(n){return hn.isObject(n)?new hn(n.x,n.y,n.z):new hn}function Wa(n,e){n.writeProperty("x",e.x),n.writeProperty("y",e.y),n.writeProperty("z",e.z)}function Ja(n,e){return new It({assembly:Ir,components:[vt("x"in n?n.x:void 0,e.x),vt("y"in n?n.y:void 0,e.y),vt("z"in n?n.z:void 0,e.z)]})}function zs(n,e){return{baseStep:At(e),constraint:e,textProps:$.fromObject({draggingScale:Et(e,n),formatter:pe(ln(e,n))})}}const Ha={id:"input-point3d",type:"input",accept:(n,e)=>{if(!hn.isObject(n))return null;const t=K,s=S(e,{x:t.optional.custom(ke),y:t.optional.custom(ke),z:t.optional.custom(ke)});return s?{initialValue:n,params:s}:null},binding:{reader:n=>Za,constraint:n=>Ja(n.params,n.initialValue),equals:hn.equals,writer:n=>Wa},controller:n=>{const e=n.value,t=n.constraint;if(!(t instanceof It))throw T.shouldNeverHappen();return new Fs(n.document,{assembly:Ir,axes:[zs(e.rawValue.x,t.components[0]),zs(e.rawValue.y,t.components[1]),zs(e.rawValue.z,t.components[2])],parser:qe,value:e,viewProps:n.viewProps})}};class dn{constructor(e=0,t=0,s=0,u=0){this.x=e,this.y=t,this.z=s,this.w=u}getComponents(){return[this.x,this.y,this.z,this.w]}static isObject(e){if(x(e))return!1;const t=e.x,s=e.y,u=e.z,_=e.w;return!(typeof t!="number"||typeof s!="number"||typeof u!="number"||typeof _!="number")}static equals(e,t){return e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w}toObject(){return{x:this.x,y:this.y,z:this.z,w:this.w}}}const Tr={toComponents:n=>n.getComponents(),fromComponents:n=>new dn(...n)};function el(n){return dn.isObject(n)?new dn(n.x,n.y,n.z,n.w):new dn}function tl(n,e){n.writeProperty("x",e.x),n.writeProperty("y",e.y),n.writeProperty("z",e.z),n.writeProperty("w",e.w)}function nl(n,e){return new It({assembly:Tr,components:[vt("x"in n?n.x:void 0,e.x),vt("y"in n?n.y:void 0,e.y),vt("z"in n?n.z:void 0,e.z),vt("w"in n?n.w:void 0,e.w)]})}function il(n,e){return{baseStep:At(e),constraint:e,textProps:$.fromObject({draggingScale:Et(e,n),formatter:pe(ln(e,n))})}}const sl={id:"input-point4d",type:"input",accept:(n,e)=>{if(!dn.isObject(n))return null;const t=K,s=S(e,{x:t.optional.custom(ke),y:t.optional.custom(ke),z:t.optional.custom(ke),w:t.optional.custom(ke)});return s?{initialValue:n,params:s}:null},binding:{reader:n=>el,constraint:n=>nl(n.params,n.initialValue),equals:dn.equals,writer:n=>tl},controller:n=>{const e=n.value,t=n.constraint;if(!(t instanceof It))throw T.shouldNeverHappen();return new Fs(n.document,{assembly:Tr,axes:e.rawValue.getComponents().map((s,u)=>il(s,t.components[u])),parser:qe,value:e,viewProps:n.viewProps})}};function rl(n){const e=[],t=Bn(n.options);return t&&e.push(t),new rt(e)}const ol={id:"input-string",type:"input",accept:(n,e)=>{if(typeof n!="string")return null;const s=S(e,{options:K.optional.custom(Vt)});return s?{initialValue:n,params:s}:null},binding:{reader:n=>vi,constraint:n=>rl(n.params),writer:n=>Lt},controller:n=>{var e;const t=n.document,s=n.value,u=n.constraint;return u&&re(u,kt)?new ht(t,{props:$.fromObject({options:(e=Un(u))!==null&&e!==void 0?e:[]}),value:s,viewProps:n.viewProps}):new qt(t,{parser:_=>_,props:$.fromObject({formatter:on}),value:s,viewProps:n.viewProps})}},qn={monitor:{defaultInterval:200,defaultLineCount:3}},Or=z("mll");class al{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(Or()),t.viewProps.bindClassModifiers(this.element);const s=e.createElement("textarea");s.classList.add(Or("i")),s.style.height=`calc(var(--bld-us) * ${t.lineCount})`,s.readOnly=!0,t.viewProps.bindDisabled(s),this.element.appendChild(s),this.textareaElem_=s,t.value.emitter.on("change",this.onValueUpdate_),this.value=t.value,this.update_()}update_(){const e=this.textareaElem_,t=e.scrollTop===e.scrollHeight-e.clientHeight,s=[];this.value.rawValue.forEach(u=>{u!==void 0&&s.push(this.formatter_(u))}),e.textContent=s.join(`
|
|
17
|
-
`),t&&(e.scrollTop=e.scrollHeight)}onValueUpdate_(){this.update_()}}class Bs{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new al(e,{formatter:t.formatter,lineCount:t.lineCount,value:this.value,viewProps:this.viewProps})}}const Dr=z("sgl");class ll{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(Dr()),t.viewProps.bindClassModifiers(this.element);const s=e.createElement("input");s.classList.add(Dr("i")),s.readOnly=!0,s.type="text",t.viewProps.bindDisabled(s),this.element.appendChild(s),this.inputElement=s,t.value.emitter.on("change",this.onValueUpdate_),this.value=t.value,this.update_()}update_(){const e=this.value.rawValue,t=e[e.length-1];this.inputElement.value=t!==void 0?this.formatter_(t):""}onValueUpdate_(){this.update_()}}class Us{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new ll(e,{formatter:t.formatter,value:this.value,viewProps:this.viewProps})}}const cl={id:"monitor-bool",type:"monitor",accept:(n,e)=>{if(typeof n!="boolean")return null;const s=S(e,{lineCount:K.optional.number});return s?{initialValue:n,params:s}:null},binding:{reader:n=>pi},controller:n=>{var e;return n.value.rawValue.length===1?new Us(n.document,{formatter:ui,value:n.value,viewProps:n.viewProps}):new Bs(n.document,{formatter:ui,lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:qn.monitor.defaultLineCount,value:n.value,viewProps:n.viewProps})}},Dt=z("grl");class pl{constructor(e,t){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=e.createElement("div"),this.element.classList.add(Dt()),t.viewProps.bindClassModifiers(this.element),this.formatter_=t.formatter,this.props_=t.props,this.cursor_=t.cursor,this.cursor_.emitter.on("change",this.onCursorChange_);const s=e.createElementNS(Ie,"svg");s.classList.add(Dt("g")),s.style.height=`calc(var(--bld-us) * ${t.lineCount})`,this.element.appendChild(s),this.svgElem_=s;const u=e.createElementNS(Ie,"polyline");this.svgElem_.appendChild(u),this.lineElem_=u;const _=e.createElement("div");_.classList.add(Dt("t"),z("tt")()),this.element.appendChild(_),this.tooltipElem_=_,t.value.emitter.on("change",this.onValueUpdate_),this.value=t.value,this.update_()}get graphElement(){return this.svgElem_}update_(){const e=this.svgElem_.getBoundingClientRect(),t=this.value.rawValue.length-1,s=this.props_.get("minValue"),u=this.props_.get("maxValue"),_=[];this.value.rawValue.forEach((te,ie)=>{if(te===void 0)return;const bt=le(ie,0,t,0,e.width),Xn=le(te,s,u,e.height,0);_.push([bt,Xn].join(","))}),this.lineElem_.setAttributeNS(null,"points",_.join(" "));const k=this.tooltipElem_,I=this.value.rawValue[this.cursor_.rawValue];if(I===void 0){k.classList.remove(Dt("t","a"));return}const G=le(this.cursor_.rawValue,0,t,0,e.width),Q=le(I,s,u,e.height,0);k.style.left=`${G}px`,k.style.top=`${Q}px`,k.textContent=`${this.formatter_(I)}`,k.classList.contains(Dt("t","a"))||(k.classList.add(Dt("t","a"),Dt("t","in")),lt(k),k.classList.remove(Dt("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class ul{constructor(e,t){if(this.onGraphMouseMove_=this.onGraphMouseMove_.bind(this),this.onGraphMouseLeave_=this.onGraphMouseLeave_.bind(this),this.onGraphPointerDown_=this.onGraphPointerDown_.bind(this),this.onGraphPointerMove_=this.onGraphPointerMove_.bind(this),this.onGraphPointerUp_=this.onGraphPointerUp_.bind(this),this.props_=t.props,this.value=t.value,this.viewProps=t.viewProps,this.cursor_=ee(-1),this.view=new pl(e,{cursor:this.cursor_,formatter:t.formatter,lineCount:t.lineCount,props:this.props_,value:this.value,viewProps:this.viewProps}),!_t(e))this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_);else{const s=new dt(this.view.element);s.emitter.on("down",this.onGraphPointerDown_),s.emitter.on("move",this.onGraphPointerMove_),s.emitter.on("up",this.onGraphPointerUp_)}}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(e){const t=this.view.element.getBoundingClientRect();this.cursor_.rawValue=Math.floor(le(e.offsetX,0,t.width,0,this.value.rawValue.length))}onGraphPointerDown_(e){this.onGraphPointerMove_(e)}onGraphPointerMove_(e){if(!e.data.point){this.cursor_.rawValue=-1;return}this.cursor_.rawValue=Math.floor(le(e.data.point.x,0,e.data.bounds.width,0,this.value.rawValue.length))}onGraphPointerUp_(){this.cursor_.rawValue=-1}}function Rs(n){return"format"in n&&!x(n.format)?n.format:pe(2)}function hl(n){var e;return n.value.rawValue.length===1?new Us(n.document,{formatter:Rs(n.params),value:n.value,viewProps:n.viewProps}):new Bs(n.document,{formatter:Rs(n.params),lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:qn.monitor.defaultLineCount,value:n.value,viewProps:n.viewProps})}function dl(n){var e,t,s;return new ul(n.document,{formatter:Rs(n.params),lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:qn.monitor.defaultLineCount,props:$.fromObject({maxValue:(t="max"in n.params?n.params.max:null)!==null&&t!==void 0?t:100,minValue:(s="min"in n.params?n.params.min:null)!==null&&s!==void 0?s:0}),value:n.value,viewProps:n.viewProps})}function Nr(n){return"view"in n&&n.view==="graph"}const ml={id:"monitor-number",type:"monitor",accept:(n,e)=>{if(typeof n!="number")return null;const t=K,s=S(e,{format:t.optional.function,lineCount:t.optional.number,max:t.optional.number,min:t.optional.number,view:t.optional.string});return s?{initialValue:n,params:s}:null},binding:{defaultBufferSize:n=>Nr(n)?64:1,reader:n=>Dn},controller:n=>Nr(n.params)?dl(n):hl(n)},fl={id:"monitor-string",type:"monitor",accept:(n,e)=>{if(typeof n!="string")return null;const t=K,s=S(e,{lineCount:t.optional.number,multiline:t.optional.boolean});return s?{initialValue:n,params:s}:null},binding:{reader:n=>vi},controller:n=>{var e;const t=n.value;return t.rawValue.length>1||"multiline"in n.params&&n.params.multiline?new Bs(n.document,{formatter:on,lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:qn.monitor.defaultLineCount,value:t,viewProps:n.viewProps}):new Us(n.document,{formatter:on,value:t,viewProps:n.viewProps})}};class vl{constructor(e){this.onValueChange_=this.onValueChange_.bind(this),this.reader=e.reader,this.writer=e.writer,this.emitter=new N,this.value=e.value,this.value.emitter.on("change",this.onValueChange_),this.target=e.target,this.read()}read(){const e=this.target.read();e!==void 0&&(this.value.rawValue=this.reader(e))}write_(e){this.writer(this.target,e)}onValueChange_(e){this.write_(e.rawValue),this.emitter.emit("change",{options:e.options,rawValue:e.rawValue,sender:this})}}function bl(n,e){const t=n.accept(e.target.read(),e.params);if(x(t))return null;const s=K,u={target:e.target,initialValue:t.initialValue,params:t.params},_=n.binding.reader(u),k=n.binding.constraint?n.binding.constraint(u):void 0,I=ee(_(t.initialValue),{constraint:k,equals:n.binding.equals}),G=new vl({reader:_,target:e.target,value:I,writer:n.binding.writer(u)}),Q=s.optional.boolean(e.params.disabled).value,te=s.optional.boolean(e.params.hidden).value,ie=n.controller({constraint:k,document:e.document,initialValue:t.initialValue,params:t.params,value:G.value,viewProps:st.create({disabled:Q,hidden:te})}),bt=s.optional.string(e.params.label).value;return new De(e.document,{binding:G,blade:Ke(),props:$.fromObject({label:bt??e.target.key}),valueController:ie})}class gl{constructor(e){this.onTick_=this.onTick_.bind(this),this.reader_=e.reader,this.target=e.target,this.emitter=new N,this.value=e.value,this.ticker=e.ticker,this.ticker.emitter.on("tick",this.onTick_),this.read()}dispose(){this.ticker.dispose()}read(){const e=this.target.read();if(e===void 0)return;const t=this.value.rawValue,s=this.reader_(e);this.value.rawValue=bi(t,s),this.emitter.emit("update",{rawValue:s,sender:this})}onTick_(e){this.read()}}function _l(n,e){return e===0?new ai:new Vn(n,e??qn.monitor.defaultInterval)}function wl(n,e){var t,s,u;const _=K,k=n.accept(e.target.read(),e.params);if(x(k))return null;const I={target:e.target,initialValue:k.initialValue,params:k.params},G=n.binding.reader(I),Q=(s=(t=_.optional.number(e.params.bufferSize).value)!==null&&t!==void 0?t:n.binding.defaultBufferSize&&n.binding.defaultBufferSize(k.params))!==null&&s!==void 0?s:1,te=_.optional.number(e.params.interval).value,ie=new gl({reader:G,target:e.target,ticker:_l(e.document,te),value:vs(Q)}),bt=_.optional.boolean(e.params.disabled).value,Xn=_.optional.boolean(e.params.hidden).value,Qn=n.controller({document:e.document,params:k.params,value:ie.value,viewProps:st.create({disabled:bt,hidden:Xn})}),mn=(u=_.optional.string(e.params.label).value)!==null&&u!==void 0?u:e.target.key;return new it(e.document,{binding:ie,blade:Ke(),props:$.fromObject({label:mn}),valueController:Qn})}class xl{constructor(){this.pluginsMap_={blades:[],inputs:[],monitors:[]}}getAll(){return[...this.pluginsMap_.blades,...this.pluginsMap_.inputs,...this.pluginsMap_.monitors]}register(e){e.type==="blade"?this.pluginsMap_.blades.unshift(e):e.type==="input"?this.pluginsMap_.inputs.unshift(e):e.type==="monitor"&&this.pluginsMap_.monitors.unshift(e)}createInput(e,t,s){const u=t.read();if(x(u))throw new T({context:{key:t.key},type:"nomatchingcontroller"});const _=this.pluginsMap_.inputs.reduce((k,I)=>k??bl(I,{document:e,target:t,params:s}),null);if(_)return _;throw new T({context:{key:t.key},type:"nomatchingcontroller"})}createMonitor(e,t,s){const u=this.pluginsMap_.monitors.reduce((_,k)=>_??wl(k,{document:e,params:s,target:t}),null);if(u)return u;throw new T({context:{key:t.key},type:"nomatchingcontroller"})}createBlade(e,t){const s=this.pluginsMap_.blades.reduce((u,_)=>u??Ki(_,{document:e,params:t}),null);if(!s)throw new T({type:"nomatchingview",context:{params:t}});return s}createBladeApi(e){if(e instanceof De)return new Se(e);if(e instanceof it)return new ut(e);if(e instanceof Gt)return new Rt(e,this);const t=this.pluginsMap_.blades.reduce((s,u)=>s??u.api({controller:e,pool:this}),null);if(!t)throw T.shouldNeverHappen();return t}}function yl(){const n=new xl;return[Qa,Ha,sl,ol,za,Ta,Ia,La,Cs,cl,fl,ml,xt,zi,ii,Ln].forEach(e=>{n.register(e)}),n}class jr extends h{constructor(e){super(e),this.emitter_=new N,this.controller_.valueController.value.emitter.on("change",t=>{this.emitter_.emit("change",{event:new f(this,t.rawValue)})})}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}get options(){return this.controller_.valueController.props.get("options")}set options(e){this.controller_.valueController.props.set("options",e)}get value(){return this.controller_.valueController.value.rawValue}set value(e){this.controller_.valueController.value.rawValue=e}on(e,t){const s=t.bind(this);return this.emitter_.on(e,u=>{s(u.event)}),this}}class Fr extends h{constructor(e){super(e),this.emitter_=new N,this.controller_.valueController.value.emitter.on("change",t=>{this.emitter_.emit("change",{event:new f(this,t.rawValue)})})}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}get maxValue(){return this.controller_.valueController.sliderController.props.get("maxValue")}set maxValue(e){this.controller_.valueController.sliderController.props.set("maxValue",e)}get minValue(){return this.controller_.valueController.sliderController.props.get("minValue")}set minValue(e){this.controller_.valueController.sliderController.props.set("minValue",e)}get value(){return this.controller_.valueController.value.rawValue}set value(e){this.controller_.valueController.value.rawValue=e}on(e,t){const s=t.bind(this);return this.emitter_.on(e,u=>{s(u.event)}),this}}class zr extends h{constructor(e){super(e),this.emitter_=new N,this.controller_.valueController.value.emitter.on("change",t=>{this.emitter_.emit("change",{event:new f(this,t.rawValue)})})}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}get formatter(){return this.controller_.valueController.props.get("formatter")}set formatter(e){this.controller_.valueController.props.set("formatter",e)}get value(){return this.controller_.valueController.value.rawValue}set value(e){this.controller_.valueController.value.rawValue=e}on(e,t){const s=t.bind(this);return this.emitter_.on(e,u=>{s(u.event)}),this}}const Cl=function(){return{id:"list",type:"blade",accept(n){const e=K,t=S(n,{options:e.required.custom(Vt),value:e.required.raw,view:e.required.constant("list"),label:e.optional.string});return t?{params:t}:null},controller(n){const e=new ht(n.document,{props:$.fromObject({options:Ci(n.params.options)}),value:ee(n.params.value),viewProps:n.viewProps});return new Ct(n.document,{blade:n.blade,props:$.fromObject({label:n.params.label}),valueController:e})},api(n){return!(n.controller instanceof Ct)||!(n.controller.valueController instanceof ht)?null:new jr(n.controller)}}}();function Pl(n){return n.reduce((e,t)=>Object.assign(e,{[t.presetKey]:t.read()}),{})}function kl(n,e){n.forEach(t=>{const s=e[t.presetKey];s!==void 0&&t.write(s)})}class Ml extends yn{constructor(e,t){super(e,t)}get element(){return this.controller_.view.element}importPreset(e){const t=this.controller_.rackController.rack.find(De).map(s=>s.binding.target);kl(t,e),this.refresh()}exportPreset(){const e=this.controller_.rackController.rack.find(De).map(t=>t.binding.target);return Pl(e)}refresh(){this.controller_.rackController.rack.find(De).forEach(e=>{e.binding.read()}),this.controller_.rackController.rack.find(it).forEach(e=>{e.binding.read()})}}class Sl extends kn{constructor(e,t){super(e,{expanded:t.expanded,blade:t.blade,props:t.props,root:!0,viewProps:t.viewProps})}}const Ll={id:"slider",type:"blade",accept(n){const e=K,t=S(n,{max:e.required.number,min:e.required.number,view:e.required.constant("slider"),format:e.optional.function,label:e.optional.string,value:e.optional.number});return t?{params:t}:null},controller(n){var e,t;const s=(e=n.params.value)!==null&&e!==void 0?e:0,u=new an(n.document,{baseStep:1,parser:qe,sliderProps:$.fromObject({maxValue:n.params.max,minValue:n.params.min}),textProps:$.fromObject({draggingScale:Et(void 0,s),formatter:(t=n.params.format)!==null&&t!==void 0?t:ms}),value:ee(s),viewProps:n.viewProps});return new Ct(n.document,{blade:n.blade,props:$.fromObject({label:n.params.label}),valueController:u})},api(n){return!(n.controller instanceof Ct)||!(n.controller.valueController instanceof an)?null:new Fr(n.controller)}},Vl=function(){return{id:"text",type:"blade",accept(n){const e=K,t=S(n,{parse:e.required.function,value:e.required.raw,view:e.required.constant("text"),format:e.optional.function,label:e.optional.string});return t?{params:t}:null},controller(n){var e;const t=new qt(n.document,{parser:n.params.parse,props:$.fromObject({formatter:(e=n.params.format)!==null&&e!==void 0?e:s=>String(s)}),value:ee(n.params.value),viewProps:n.viewProps});return new Ct(n.document,{blade:n.blade,props:$.fromObject({label:n.params.label}),valueController:t})},api(n){return!(n.controller instanceof Ct)||!(n.controller.valueController instanceof qt)?null:new zr(n.controller)}}}();function Al(n){const e=n.createElement("div");return e.classList.add(z("dfw")()),n.body&&n.body.appendChild(e),e}function Br(n,e,t){if(n.querySelector(`style[data-tp-style=${e}]`))return;const s=n.createElement("style");s.dataset.tpStyle=e,s.textContent=t,n.head.appendChild(s)}class El extends Ml{constructor(e){var t,s;const u=e??{},_=(t=u.document)!==null&&t!==void 0?t:_n(),k=yl(),I=new Sl(_,{expanded:u.expanded,blade:Ke(),props:$.fromObject({title:u.title}),viewProps:st.create()});super(I,k),this.pool_=k,this.containerElem_=(s=u.container)!==null&&s!==void 0?s:Al(_),this.containerElem_.appendChild(this.element),this.doc_=_,this.usesDefaultWrapper_=!u.container,this.setUpDefaultPlugins_()}get document(){if(!this.doc_)throw T.alreadyDisposed();return this.doc_}dispose(){const e=this.containerElem_;if(!e)throw T.alreadyDisposed();if(this.usesDefaultWrapper_){const t=e.parentElement;t&&t.removeChild(e)}this.containerElem_=null,this.doc_=null,super.dispose()}registerPlugin(e){("plugin"in e?[e.plugin]:"plugins"in e?e.plugins:[]).forEach(s=>{this.pool_.register(s),this.embedPluginStyle_(s)})}embedPluginStyle_(e){e.css&&Br(this.document,`plugin-${e.id}`,e.css)}setUpDefaultPlugins_(){Br(this.document,"default",'.tp-tbiv_b,.tp-coltxtv_ms,.tp-ckbv_i,.tp-rotv_b,.tp-fldv_b,.tp-mllv_i,.tp-sglv_i,.tp-grlv_g,.tp-txtv_i,.tp-p2dpv_p,.tp-colswv_sw,.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(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);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-txtv_i,.tp-p2dpv_p,.tp-colswv_sw{background-color:var(--in-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);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-mllv_i,.tp-sglv_i,.tp-grlv_g{background-color:var(--mo-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--mo-fg);height:var(--bld-us);scrollbar-color:currentColor rgba(0,0,0,0);scrollbar-width:thin;width:100%}.tp-mllv_i::-webkit-scrollbar,.tp-sglv_i::-webkit-scrollbar,.tp-grlv_g::-webkit-scrollbar{height:8px;width:8px}.tp-mllv_i::-webkit-scrollbar-corner,.tp-sglv_i::-webkit-scrollbar-corner,.tp-grlv_g::-webkit-scrollbar-corner{background-color:rgba(0,0,0,0)}.tp-mllv_i::-webkit-scrollbar-thumb,.tp-sglv_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-rotv{--font-family: var(--tp-font-family, Roboto Mono, Source Code Pro, Menlo, Courier, monospace);--bs-br: var(--tp-base-border-radius, 6px);--cnt-h-p: var(--tp-container-horizontal-padding, 4px);--cnt-v-p: var(--tp-container-vertical-padding, 4px);--elm-br: var(--tp-element-border-radius, 2px);--bld-s: var(--tp-blade-spacing, 4px);--bld-us: var(--tp-blade-unit-size, 20px);--bs-bg: var(--tp-base-background-color, hsl(230deg, 7%, 17%));--bs-sh: var(--tp-base-shadow-color, rgba(0, 0, 0, 0.2));--btn-bg: var(--tp-button-background-color, hsl(230deg, 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(230deg, 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(230deg, 7%, 75%));--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(230deg, 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-rotv_c>.tp-cntv.tp-v-lst,.tp-tabv_c .tp-brkv>.tp-cntv.tp-v-lst,.tp-fldv_c>.tp-cntv.tp-v-lst{margin-bottom:calc(-1*var(--cnt-v-p))}.tp-rotv_c>.tp-fldv.tp-v-lst .tp-fldv_c,.tp-tabv_c .tp-brkv>.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-tabv_c .tp-brkv>.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-tabv_c .tp-brkv>*:not(.tp-v-fst),.tp-fldv_c>*:not(.tp-v-fst){margin-top:var(--bld-s)}.tp-rotv_c>.tp-sprv:not(.tp-v-fst),.tp-tabv_c .tp-brkv>.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-tabv_c .tp-brkv>.tp-cntv:not(.tp-v-fst),.tp-fldv_c>.tp-cntv:not(.tp-v-fst){margin-top:var(--cnt-v-p)}.tp-rotv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-tabv_c .tp-brkv>.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-tabv_c .tp-brkv>.tp-cntv+*:not(.tp-v-hidden),.tp-fldv_c>.tp-cntv+*:not(.tp-v-hidden){margin-top:var(--cnt-v-p)}.tp-rotv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-tabv_c .tp-brkv>.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-tabv_c .tp-brkv>.tp-cntv:not(.tp-v-hidden)+.tp-cntv,.tp-fldv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv{margin-top:0}.tp-tabv_c .tp-brkv>.tp-cntv,.tp-fldv_c>.tp-cntv{margin-left:4px}.tp-tabv_c .tp-brkv>.tp-fldv>.tp-fldv_b,.tp-fldv_c>.tp-fldv>.tp-fldv_b{border-top-left-radius:var(--elm-br);border-bottom-left-radius:var(--elm-br)}.tp-tabv_c .tp-brkv>.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-tabv_c .tp-brkv .tp-fldv>.tp-fldv_c,.tp-fldv_c .tp-fldv>.tp-fldv_c{border-bottom-left-radius:var(--elm-br)}.tp-tabv_c .tp-brkv>.tp-tabv>.tp-tabv_i,.tp-fldv_c>.tp-tabv>.tp-tabv_i{border-top-left-radius:var(--elm-br)}.tp-tabv_c .tp-brkv .tp-tabv>.tp-tabv_c,.tp-fldv_c .tp-tabv>.tp-tabv_c{border-bottom-left-radius:var(--elm-br)}.tp-rotv_b,.tp-fldv_b{background-color:var(--cnt-bg);color:var(--cnt-fg);cursor:pointer;display:block;height:calc(var(--bld-us) + 4px);line-height:calc(var(--bld-us) + 4px);overflow:hidden;padding-left:var(--cnt-h-p);padding-right:calc(4px + var(--bld-us) + var(--cnt-h-p));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-h-p) + (var(--bld-us) + 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-v-p);padding-top:var(--cnt-v-p);transform:none;overflow:visible;transition:height .2s ease-in-out,opacity .2s linear .2s,padding .2s ease-in-out}.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-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-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(--elm-br);cursor:pointer;display:block;height:var(--bld-us);position:relative;width:var(--bld-us)}.tp-ckbv_w svg{bottom:0;display:block;height:16px;left:0;margin:auto;opacity:0;position:absolute;right:0;top:0;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(--bld-us)}.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-cpl .tp-colv_p{overflow:visible}.tp-colv.tp-colv-expanded .tp-colv_p{margin-top:var(--bld-s);opacity:1}.tp-colv .tp-popv{left:calc(-1*var(--cnt-h-p));right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-colpv_h,.tp-colpv_ap{margin-left:6px;margin-right:6px}.tp-colpv_h{margin-top:var(--bld-s)}.tp-colpv_rgb{display:flex;margin-top:var(--bld-s);width:100%}.tp-colpv_a{display:flex;margin-top:var(--cnt-v-p);padding-top:calc(var(--cnt-v-p) + 2px);position:relative}.tp-colpv_a:before{background-color:var(--grv-fg);content:"";height:2px;left:calc(-1*var(--cnt-h-p));position:absolute;right:calc(-1*var(--cnt-h-p));top:0}.tp-colpv_ap{align-items:center;display:flex;flex:3}.tp-colpv_at{flex:1;margin-left:4px}.tp-svpv{border-radius:var(--elm-br);outline:none;overflow:hidden;position:relative}.tp-svpv_c{cursor:crosshair;display:block;height:calc(var(--bld-us)*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(--bld-us);outline:none;position:relative}.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(--elm-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;pointer-events:none;position:absolute;top:50%;width:12px}.tp-hplv:focus .tp-hplv_m{border-color:#fff}.tp-aplv{cursor:pointer;height:var(--bld-us);outline:none;position:relative;width:100%}.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{bottom:0;left:0;position:absolute;right:0;top:0}.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(--elm-br);box-shadow:0 0 2px rgba(0,0,0,.1);height:12px;left:50%;margin-left:-6px;margin-top:-6px;overflow:hidden;pointer-events:none;position:absolute;top:50%;width:12px}.tp-aplv_p{border-radius:var(--elm-br);border:rgba(255,255,255,.75) solid 2px;box-sizing:border-box;bottom:0;left:0;position:absolute;right:0;top:0}.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(--elm-br);overflow:hidden}.tp-colswv.tp-v-disabled{opacity:.5}.tp-colswv_sw{border-radius:0}.tp-colswv_b{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;cursor:pointer;display:block;height:var(--bld-us);left:0;margin:0;outline:none;padding:0;position:absolute;top:0;width:var(--bld-us)}.tp-colswv_b:focus::after{border:rgba(255,255,255,.75) solid 2px;border-radius:var(--elm-br);bottom:0;content:"";display:block;left:0;position:absolute;right:0;top:0}.tp-coltxtv{display:flex;width:100%}.tp-coltxtv_m{margin-right:4px}.tp-coltxtv_ms{border-radius:var(--elm-br);color:var(--lbl-fg);cursor:pointer;height:var(--bld-us);line-height:var(--bld-us);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_w{flex:1}.tp-dfwv{position:absolute;top:8px;right:8px;width:256px}.tp-fldv.tp-fldv-not .tp-fldv_b{display:none}.tp-fldv_t{padding-left:4px}.tp-fldv_c{border-left:var(--cnt-bg) solid 4px}.tp-fldv_b:hover+.tp-fldv_c{border-left-color:var(--cnt-bg-h)}.tp-fldv_b:focus+.tp-fldv_c{border-left-color:var(--cnt-bg-f)}.tp-fldv_b:active+.tp-fldv_c{border-left-color:var(--cnt-bg-a)}.tp-grlv{position:relative}.tp-grlv_g{display:block;height:calc(var(--bld-us)*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-h-p);padding-right:var(--cnt-h-p)}.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:160px}.tp-lblv.tp-lblv-nol .tp-lblv_v{width:100%}.tp-lstv_s{padding:0 20px 0 4px;width:100%}.tp-lstv_m{color:var(--btn-fg)}.tp-sglv_i{padding:0 4px}.tp-sglv.tp-v-disabled .tp-sglv_i{opacity:.5}.tp-mllv_i{display:block;height:calc(var(--bld-us)*3);line-height:var(--bld-us);padding:0 4px;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(--bld-us);margin-right:4px;position:relative;width:var(--bld-us)}.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(--bld-s);opacity:1}.tp-p2dv .tp-popv{left:calc(-1*var(--cnt-h-p));right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-p2dpv{padding-left:calc(var(--bld-us) + 4px)}.tp-p2dpv_p{cursor:crosshair;height:0;overflow:hidden;padding-bottom:100%;position:relative}.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:6px;box-shadow:0 2px 4px var(--bs-sh);display:none;max-width:168px;padding:var(--cnt-v-p) var(--cnt-h-p);position:absolute;visibility:hidden;z-index:1000}.tp-popv.tp-popv-v{display:block;visibility:visible}.tp-sprv_r{background-color:var(--grv-fg);border-width:0;display:block;height:2px;margin:0;width:100%}.tp-sldv.tp-v-disabled{opacity:.5}.tp-sldv_t{box-sizing:border-box;cursor:pointer;height:var(--bld-us);margin:0 6px;outline:none;position:relative}.tp-sldv_t::before{background-color:var(--in-bg);border-radius:1px;bottom:0;content:"";display:block;height:2px;left:0;margin:auto;position:absolute;right:0;top:0}.tp-sldv_k{height:100%;left:0;position:absolute;top:0}.tp-sldv_k::before{background-color:var(--in-fg);border-radius:1px;bottom:0;content:"";display:block;height:2px;left:0;margin-bottom:auto;margin-top:auto;position:absolute;right:0;top:0}.tp-sldv_k::after{background-color:var(--btn-bg);border-radius:var(--elm-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.tp-v-disabled{opacity:.5}.tp-tabv_i{align-items:flex-end;display:flex;overflow:hidden}.tp-tabv.tp-tabv-nop .tp-tabv_i{height:calc(var(--bld-us) + 4px);position:relative}.tp-tabv.tp-tabv-nop .tp-tabv_i::before{background-color:var(--cnt-bg);bottom:0;content:"";height:2px;left:0;position:absolute;right:0}.tp-tabv_c{border-left:var(--cnt-bg) solid 4px;padding-bottom:var(--cnt-v-p);padding-top:var(--cnt-v-p)}.tp-tbiv{flex:1;min-width:0;position:relative}.tp-tbiv+.tp-tbiv{margin-left:2px}.tp-tbiv+.tp-tbiv::before{background-color:var(--cnt-bg);bottom:0;content:"";height:2px;left:-2px;position:absolute;width:2px}.tp-tbiv_b{background-color:var(--cnt-bg);display:block;padding-left:calc(var(--cnt-h-p) + 4px);padding-right:calc(var(--cnt-h-p) + 4px);width:100%}.tp-tbiv_b:hover{background-color:var(--cnt-bg-h)}.tp-tbiv_b:focus{background-color:var(--cnt-bg-f)}.tp-tbiv_b:active{background-color:var(--cnt-bg-a)}.tp-tbiv_b:disabled{opacity:.5}.tp-tbiv_t{color:var(--cnt-fg);height:calc(var(--bld-us) + 4px);line-height:calc(var(--bld-us) + 4px);opacity:.5;overflow:hidden;text-overflow:ellipsis}.tp-tbiv.tp-tbiv-sel .tp-tbiv_t{opacity:1}.tp-txtv{position:relative}.tp-txtv_i{padding:0 4px}.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:-3px;position:absolute;top:0;width:12px}.tp-txtv_k::before{background-color:var(--in-fg);border-radius:1px;bottom:0;content:"";height:calc(var(--bld-us) - 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(--elm-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(--font-family);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(--bld-us) + var(--cnt-h-p));text-align:center}.tp-rotv.tp-rotv-expanded .tp-rotv_b{border-bottom-left-radius:0;border-bottom-right-radius:0}.tp-rotv.tp-rotv-not .tp-rotv_b{display:none}.tp-rotv_c>.tp-fldv.tp-v-lst>.tp-fldv_c,.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-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-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-v-p))}.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.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst{margin-top:calc(-1*var(--cnt-v-p))}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst>.tp-tabv_i{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}'),this.pool_.getAll().forEach(e=>{this.embedPluginStyle_(e)}),this.registerPlugin({plugins:[Ll,Cl,Ln,Vl]})}}const Il=new o("3.1.1");c.BladeApi=h,c.ButtonApi=O,c.FolderApi=yn,c.InputBindingApi=Se,c.ListApi=jr,c.MonitorBindingApi=ut,c.Pane=El,c.SeparatorApi=Mn,c.SliderApi=Fr,c.TabApi=ri,c.TabPageApi=Sn,c.TextApi=zr,c.TpChangeEvent=f,c.VERSION=Il,Object.defineProperty(c,"__esModule",{value:!0})})})(To,Wn);var gn={},Oo={get exports(){return gn},set exports(L){gn=L}};(function(L,l){(function(c,o){o(l)})(er,function(c){class o{constructor(i){this.controller_=i}get element(){return this.controller_.view.element}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(i){this.controller_.viewProps.set("disabled",i)}get hidden(){return this.controller_.viewProps.get("hidden")}set hidden(i){this.controller_.viewProps.set("hidden",i)}dispose(){this.controller_.viewProps.set("disposed",!0)}}class h{constructor(i){this.target=i}}class d extends h{constructor(i,r,p,g){super(i),this.value=r,this.presetKey=p,this.last=g??!0}}function f(a){return a}function v(a){return a==null}const b={alreadydisposed:()=>"View has been already disposed",invalidparams:a=>`Invalid parameters for '${a.name}'`,nomatchingcontroller:a=>`No matching controller for '${a.key}'`,nomatchingview:a=>`No matching view for '${JSON.stringify(a.params)}'`,notbindable:()=>"Value is not bindable",propertynotfound:a=>`Property '${a.name}' not found`,shouldneverhappen:()=>"This error should never happen"};class w{constructor(i){var r;this.message=(r=b[i.type](i.context))!==null&&r!==void 0?r:"Unexpected error",this.name=this.constructor.name,this.stack=new Error(this.message).stack,this.type=i.type}static alreadyDisposed(){return new w({type:"alreadydisposed"})}static notBindable(){return new w({type:"notbindable"})}static propertyNotFound(i){return new w({type:"propertynotfound",context:{name:i}})}static shouldNeverHappen(){return new w({type:"shouldneverhappen"})}}class y{constructor(){this.observers_={}}on(i,r){let p=this.observers_[i];return p||(p=this.observers_[i]=[]),p.push({handler:r}),this}off(i,r){const p=this.observers_[i];return p&&(this.observers_[i]=p.filter(g=>g.handler!==r)),this}emit(i,r){const p=this.observers_[i];p&&p.forEach(g=>{g.handler(r)})}}const x="tp";function V(a){return(r,p)=>[x,"-",a,"v",r?`_${r}`:"",p?`-${p}`:""].join("")}function D(a,i){return r=>i(a(r))}function T(a){return a.rawValue}function E(a,i){a.emitter.on("change",D(T,i)),i(a.rawValue)}function O(a,i,r){E(a.value(i),r)}function N(a,i,r){r?a.classList.add(i):a.classList.remove(i)}function X(a,i){return r=>{N(a,i,r)}}function z(a,i){E(a,r=>{i.textContent=r??""})}const ne=V("btn");class ce{constructor(i,r){this.element=i.createElement("div"),this.element.classList.add(ne()),r.viewProps.bindClassModifiers(this.element);const p=i.createElement("button");p.classList.add(ne("b")),r.viewProps.bindDisabled(p),this.element.appendChild(p),this.buttonElement=p;const g=i.createElement("div");g.classList.add(ne("t")),z(r.props.value("title"),g),this.buttonElement.appendChild(g)}}class H{constructor(i,r){this.emitter=new y,this.onClick_=this.onClick_.bind(this),this.props=r.props,this.viewProps=r.viewProps,this.view=new ce(i,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class U{constructor(i,r){var p;this.constraint_=r==null?void 0:r.constraint,this.equals_=(p=r==null?void 0:r.equals)!==null&&p!==void 0?p:(g,P)=>g===P,this.emitter=new y,this.rawValue_=i}get constraint(){return this.constraint_}get rawValue(){return this.rawValue_}set rawValue(i){this.setRawValue(i,{forceEmit:!1,last:!0})}setRawValue(i,r){const p=r??{forceEmit:!1,last:!0},g=this.constraint_?this.constraint_.constrain(i):i;this.equals_(this.rawValue_,g)&&!p.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=g,this.emitter.emit("change",{options:p,rawValue:g,sender:this}))}}class q{constructor(i){this.emitter=new y,this.value_=i}get rawValue(){return this.value_}set rawValue(i){this.setRawValue(i,{forceEmit:!1,last:!0})}setRawValue(i,r){const p=r??{forceEmit:!1,last:!0};this.value_===i&&!p.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.value_=i,this.emitter.emit("change",{options:p,rawValue:this.value_,sender:this}))}}function se(a,i){const r=i==null?void 0:i.constraint,p=i==null?void 0:i.equals;return!r&&!p?new q(a):new U(a,i)}class oe{constructor(i){this.emitter=new y,this.valMap_=i;for(const r in this.valMap_)this.valMap_[r].emitter.on("change",()=>{this.emitter.emit("change",{key:r,sender:this})})}static createCore(i){return Object.keys(i).reduce((p,g)=>Object.assign(p,{[g]:se(i[g])}),{})}static fromObject(i){const r=this.createCore(i);return new oe(r)}get(i){return this.valMap_[i].rawValue}set(i,r){this.valMap_[i].rawValue=r}value(i){return this.valMap_[i]}}function _e(a,i){const p=Object.keys(i).reduce((g,P)=>{if(g===void 0)return;const A=i[P],F=A(a[P]);return F.succeeded?Object.assign(Object.assign({},g),{[P]:F.value}):void 0},{});return p}function Ce(a,i){return a.reduce((r,p)=>{if(r===void 0)return;const g=i(p);if(!(!g.succeeded||g.value===void 0))return[...r,g.value]},[])}function ve(a){return a===null?!1:typeof a=="object"}function he(a){return i=>r=>{if(!i&&r===void 0)return{succeeded:!1,value:void 0};if(i&&r===void 0)return{succeeded:!0,value:void 0};const p=a(r);return p!==void 0?{succeeded:!0,value:p}:{succeeded:!1,value:void 0}}}function ge(a){return{custom:i=>he(i)(a),boolean:he(i=>typeof i=="boolean"?i:void 0)(a),number:he(i=>typeof i=="number"?i:void 0)(a),string:he(i=>typeof i=="string"?i:void 0)(a),function:he(i=>typeof i=="function"?i:void 0)(a),constant:i=>he(r=>r===i?i:void 0)(a),raw:he(i=>i)(a),object:i=>he(r=>{if(ve(r))return _e(r,i)})(a),array:i=>he(r=>{if(Array.isArray(r))return Ce(r,i)})(a)}}const ee={optional:ge(!0),required:ge(!1)};function $(a,i){const r=ee.required.object(i)(a);return r.succeeded?r.value:void 0}function Je(a){return a&&a.parentElement&&a.parentElement.removeChild(a),null}function Pe(){return["veryfirst","first","last","verylast"]}const ue=V(""),Z={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class ae{constructor(i){this.parent_=null,this.blade=i.blade,this.view=i.view,this.viewProps=i.viewProps;const r=this.view.element;this.blade.value("positions").emitter.on("change",()=>{Pe().forEach(p=>{r.classList.remove(ue(void 0,Z[p]))}),this.blade.get("positions").forEach(p=>{r.classList.add(ue(void 0,Z[p]))})}),this.viewProps.handleDispose(()=>{Je(r)})}get parent(){return this.parent_}}const K="http://www.w3.org/2000/svg";function S(a){a.offsetHeight}function Ae(a,i){const r=a.style.transition;a.style.transition="none",i(),a.style.transition=r}function Ee(a){return a.ontouchstart!==void 0}function Fe(a){for(;a.childNodes.length>0;)a.removeChild(a.childNodes[0])}function He(a){return a.relatedTarget?a.relatedTarget:"explicitOriginalTarget"in a?a.explicitOriginalTarget:null}const we=V("lbl");function Ie(a,i){const r=a.createDocumentFragment();return i.split(`
|
|
18
|
-
`).map(g=>a.createTextNode(g)).forEach((g,P)=>{P>0&&r.appendChild(a.createElement("br")),r.appendChild(g)}),r}class lt{constructor(i,r){this.element=i.createElement("div"),this.element.classList.add(we()),r.viewProps.bindClassModifiers(this.element);const p=i.createElement("div");p.classList.add(we("l")),O(r.props,"label",P=>{v(P)?this.element.classList.add(we(void 0,"nol")):(this.element.classList.remove(we(void 0,"nol")),Fe(p),p.appendChild(Ie(i,P)))}),this.element.appendChild(p),this.labelElement=p;const g=i.createElement("div");g.classList.add(we("v")),this.element.appendChild(g),this.valueElement=g}}class ct extends ae{constructor(i,r){const p=r.valueController.viewProps;super(Object.assign(Object.assign({},r),{view:new lt(i,{props:r.props,viewProps:p}),viewProps:p})),this.props=r.props,this.valueController=r.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class _t extends ae{constructor(i){super(i),this.value=i.value}}class wt extends oe{constructor(i){super(i)}static create(i){const r={completed:!0,expanded:i,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null},p=oe.createCore(r);return new wt(p)}get styleExpanded(){var i;return(i=this.get("temporaryExpanded"))!==null&&i!==void 0?i:this.get("expanded")}get styleHeight(){if(!this.styleExpanded)return"0";const i=this.get("expandedHeight");return this.get("shouldFixHeight")&&!v(i)?`${i}px`:"auto"}bindExpandedClass(i,r){const p=()=>{this.styleExpanded?i.classList.add(r):i.classList.remove(r)};O(this,"expanded",p),O(this,"temporaryExpanded",p)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function _n(a){return wt.create(a)}function wn(a,i){let r=0;return Ae(i,()=>{a.set("expandedHeight",null),a.set("temporaryExpanded",!0),S(i),r=i.clientHeight,a.set("temporaryExpanded",null),S(i)}),r}function Ft(a,i){i.style.height=a.styleHeight}function et(a,i){a.value("expanded").emitter.on("beforechange",()=>{a.set("completed",!1),v(a.get("expandedHeight"))&&a.set("expandedHeight",wn(a,i)),a.set("shouldFixHeight",!0),S(i)}),a.emitter.on("change",()=>{Ft(a,i)}),Ft(a,i),i.addEventListener("transitionend",r=>{r.propertyName==="height"&&a.cleanUpTransition()})}class pt{constructor(i,r){const p=V(r.viewName);this.element=i.createElement("div"),this.element.classList.add(p()),r.viewProps.bindClassModifiers(this.element)}}class tt extends _t{constructor(i,r){const p=r.valueController.viewProps;super(Object.assign(Object.assign({},r),{value:r.valueController.value,view:new lt(i,{props:r.props,viewProps:p}),viewProps:p})),this.props=r.props,this.valueController=r.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}const Jt=V("");function Ht(a,i){return X(a,Jt(void 0,i))}class Be extends oe{constructor(i){super(i)}static create(i){var r,p;const g=i??{},P={disabled:(r=g.disabled)!==null&&r!==void 0?r:!1,disposed:!1,hidden:(p=g.hidden)!==null&&p!==void 0?p:!1},A=oe.createCore(P);return new Be(A)}bindClassModifiers(i){O(this,"disabled",Ht(i,"disabled")),O(this,"hidden",Ht(i,"hidden"))}bindDisabled(i){O(this,"disabled",r=>{i.disabled=r})}bindTabIndex(i){O(this,"disabled",r=>{i.tabIndex=r?-1:0})}handleDispose(i){this.value("disposed").emitter.on("change",r=>{r&&i()})}}class nt{constructor(){this.disabled=!1,this.emitter=new y}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class xn{constructor(i,r){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=i,this.emitter=new y,this.interval_=r,this.setTimer_()}get disabled(){return this.disabled_}set disabled(i){this.disabled_=i,this.disabled_?this.clearTimer_():this.setTimer_()}dispose(){this.clearTimer_()}clearTimer_(){if(this.timerId_===null)return;const i=this.doc_.defaultView;i&&i.clearInterval(this.timerId_),this.timerId_=null}setTimer_(){if(this.clearTimer_(),this.interval_<=0)return;const i=this.doc_.defaultView;i&&(this.timerId_=i.setInterval(this.onTick_,this.interval_))}onTick_(){this.disabled_||this.emitter.emit("tick",{sender:this})}}class zt{constructor(i){this.constraints=i}constrain(i){return this.constraints.reduce((r,p)=>p.constrain(r),i)}}function Ue(a,i){if(a instanceof i)return a;if(a instanceof zt){const r=a.constraints.reduce((p,g)=>p||(g instanceof i?g:null),null);if(r)return r}return null}class xt{constructor(i){this.maxValue=i.max,this.minValue=i.min}constrain(i){let r=i;return v(this.minValue)||(r=Math.max(r,this.minValue)),v(this.maxValue)||(r=Math.min(r,this.maxValue)),r}}class Te{constructor(i,r=0){this.step=i,this.origin=r}constrain(i){const r=this.origin%this.step,p=Math.round((i-r)/this.step);return r+p*this.step}}const Ke=V("pop");class $e{constructor(i,r){this.element=i.createElement("div"),this.element.classList.add(Ke()),r.viewProps.bindClassModifiers(this.element),E(r.shows,X(this.element,Ke(void 0,"v")))}}class M{constructor(i,r){this.shows=se(!1),this.viewProps=r.viewProps,this.view=new $e(i,{shows:this.shows,viewProps:this.viewProps})}}const j=V("txt");class Y{constructor(i,r){this.onChange_=this.onChange_.bind(this),this.element=i.createElement("div"),this.element.classList.add(j()),r.viewProps.bindClassModifiers(this.element),this.props_=r.props,this.props_.emitter.on("change",this.onChange_);const p=i.createElement("input");p.classList.add(j("i")),p.type="text",r.viewProps.bindDisabled(p),this.element.appendChild(p),this.inputElement=p,r.value.emitter.on("change",this.onChange_),this.value_=r.value,this.refresh()}refresh(){const i=this.props_.get("formatter");this.inputElement.value=i(this.value_.rawValue)}onChange_(){this.refresh()}}class J{constructor(i,r){this.onInputChange_=this.onInputChange_.bind(this),this.parser_=r.parser,this.props=r.props,this.value=r.value,this.viewProps=r.viewProps,this.view=new Y(i,{props:r.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(i){const p=i.currentTarget.value,g=this.parser_(p);v(g)||(this.value.rawValue=g),this.view.refresh()}}function de(a){return a==="false"?!1:!!a}class Oe{constructor(i){this.text=i}evaluate(){return Number(this.text)}toString(){return this.text}}const yt={"**":(a,i)=>Math.pow(a,i),"*":(a,i)=>a*i,"/":(a,i)=>a/i,"%":(a,i)=>a%i,"+":(a,i)=>a+i,"-":(a,i)=>a-i,"<<":(a,i)=>a<<i,">>":(a,i)=>a>>i,">>>":(a,i)=>a>>>i,"&":(a,i)=>a&i,"^":(a,i)=>a^i,"|":(a,i)=>a|i};class en{constructor(i,r,p){this.left=r,this.operator=i,this.right=p}evaluate(){const i=yt[this.operator];if(!i)throw new Error(`unexpected binary operator: '${this.operator}`);return i(this.left.evaluate(),this.right.evaluate())}toString(){return["b(",this.left.toString(),this.operator,this.right.toString(),")"].join(" ")}}const Me={"+":a=>a,"-":a=>-a,"~":a=>~a};class Se{constructor(i,r){this.operator=i,this.expression=r}evaluate(){const i=Me[this.operator];if(!i)throw new Error(`unexpected unary operator: '${this.operator}`);return i(this.expression.evaluate())}toString(){return["u(",this.operator,this.expression.toString(),")"].join(" ")}}function De(a){return(i,r)=>{for(let p=0;p<a.length;p++){const g=a[p](i,r);if(g!=="")return g}return""}}function ut(a,i){var r;const p=a.substr(i).match(/^\s+/);return(r=p&&p[0])!==null&&r!==void 0?r:""}function it(a,i){const r=a.substr(i,1);return r.match(/^[1-9]$/)?r:""}function Bt(a,i){var r;const p=a.substr(i).match(/^[0-9]+/);return(r=p&&p[0])!==null&&r!==void 0?r:""}function Ut(a,i){const r=Bt(a,i);if(r!=="")return r;const p=a.substr(i,1);if(i+=1,p!=="-"&&p!=="+")return"";const g=Bt(a,i);return g===""?"":p+g}function tn(a,i){const r=a.substr(i,1);if(i+=1,r.toLowerCase()!=="e")return"";const p=Ut(a,i);return p===""?"":r+p}function Rt(a,i){const r=a.substr(i,1);if(r==="0")return r;const p=it(a,i);return i+=p.length,p===""?"":p+Bt(a,i)}function yn(a,i){const r=Rt(a,i);if(i+=r.length,r==="")return"";const p=a.substr(i,1);if(i+=p.length,p!==".")return"";const g=Bt(a,i);return i+=g.length,r+p+g+tn(a,i)}function Cn(a,i){const r=a.substr(i,1);if(i+=r.length,r!==".")return"";const p=Bt(a,i);return i+=p.length,p===""?"":r+p+tn(a,i)}function Ii(a,i){const r=Rt(a,i);return i+=r.length,r===""?"":r+tn(a,i)}const Ti=De([yn,Cn,Ii]);function Oi(a,i){var r;const p=a.substr(i).match(/^[01]+/);return(r=p&&p[0])!==null&&r!==void 0?r:""}function Di(a,i){const r=a.substr(i,2);if(i+=r.length,r.toLowerCase()!=="0b")return"";const p=Oi(a,i);return p===""?"":r+p}function Pn(a,i){var r;const p=a.substr(i).match(/^[0-7]+/);return(r=p&&p[0])!==null&&r!==void 0?r:""}function Ni(a,i){const r=a.substr(i,2);if(i+=r.length,r.toLowerCase()!=="0o")return"";const p=Pn(a,i);return p===""?"":r+p}function ji(a,i){var r;const p=a.substr(i).match(/^[0-9a-f]+/i);return(r=p&&p[0])!==null&&r!==void 0?r:""}function Gt(a,i){const r=a.substr(i,2);if(i+=r.length,r.toLowerCase()!=="0x")return"";const p=ji(a,i);return p===""?"":r+p}const ei=De([Di,Ni,Gt]),Fi=De([ei,Ti]);function kn(a,i){const r=Fi(a,i);return i+=r.length,r===""?null:{evaluable:new Oe(r),cursor:i}}function zi(a,i){const r=a.substr(i,1);if(i+=r.length,r!=="(")return null;const p=ii(a,i);if(!p)return null;i=p.cursor,i+=ut(a,i).length;const g=a.substr(i,1);return i+=g.length,g!==")"?null:{evaluable:p.evaluable,cursor:i}}function Ct(a,i){var r;return(r=kn(a,i))!==null&&r!==void 0?r:zi(a,i)}function Mn(a,i){const r=Ct(a,i);if(r)return r;const p=a.substr(i,1);if(i+=p.length,p!=="+"&&p!=="-"&&p!=="~")return null;const g=Mn(a,i);return g?(i=g.cursor,{cursor:i,evaluable:new Se(p,g.evaluable)}):null}function ti(a,i,r){r+=ut(i,r).length;const p=a.filter(g=>i.startsWith(g,r))[0];return p?(r+=p.length,r+=ut(i,r).length,{cursor:r,operator:p}):null}function Bi(a,i){return(r,p)=>{const g=a(r,p);if(!g)return null;p=g.cursor;let P=g.evaluable;for(;;){const A=ti(i,r,p);if(!A)break;p=A.cursor;const F=a(r,p);if(!F)return null;p=F.cursor,P=new en(A.operator,P,F.evaluable)}return P?{cursor:p,evaluable:P}:null}}const ni=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((a,i)=>Bi(a,i),Mn);function ii(a,i){return i+=ut(a,i).length,ni(a,i)}function Ui(a){const i=ii(a,0);return!i||i.cursor+ut(a,i.cursor).length!==a.length?null:i.evaluable}function Kt(a){var i;const r=Ui(a);return(i=r==null?void 0:r.evaluate())!==null&&i!==void 0?i:null}function st(a){if(typeof a=="number")return a;if(typeof a=="string"){const i=Kt(a);if(!v(i))return i}return 0}function be(a){return i=>i.toFixed(Math.max(Math.min(a,20),0))}const Ri=be(0);function nn(a){return Ri(a)+"%"}function si(a){return String(a)}function Sn(a,i){for(;a.length<i;)a.push(void 0)}function ri(a){const i=[];return Sn(i,a),se(i)}function oi(a){const i=a.indexOf(void 0);return i<0?a:a.slice(0,i)}function Gi(a,i){const r=[...oi(a),i];return r.length>a.length?r.splice(0,r.length-a.length):Sn(r,a.length),r}function $t({primary:a,secondary:i,forward:r,backward:p}){let g=!1;function P(A){g||(g=!0,A(),g=!1)}a.emitter.on("change",A=>{P(()=>{i.setRawValue(r(a,i),A.options)})}),i.emitter.on("change",A=>{P(()=>{a.setRawValue(p(a,i),A.options)}),P(()=>{i.setRawValue(r(a,i),A.options)})}),P(()=>{i.setRawValue(r(a,i),{forceEmit:!1,last:!0})})}function Pt(a,i){const r=a*(i.altKey?.1:1)*(i.shiftKey?10:1);return i.upKey?+r:i.downKey?-r:0}function Yt(a){return{altKey:a.altKey,downKey:a.key==="ArrowDown",shiftKey:a.shiftKey,upKey:a.key==="ArrowUp"}}function Ln(a){return{altKey:a.altKey,downKey:a.key==="ArrowLeft",shiftKey:a.shiftKey,upKey:a.key==="ArrowRight"}}function Ki(a){return a==="ArrowUp"||a==="ArrowDown"}function ai(a){return Ki(a)||a==="ArrowLeft"||a==="ArrowRight"}function Vn(a,i){var r,p;const g=i.ownerDocument.defaultView,P=i.getBoundingClientRect();return{x:a.pageX-(((r=g&&g.scrollX)!==null&&r!==void 0?r:0)+P.left),y:a.pageY-(((p=g&&g.scrollY)!==null&&p!==void 0?p:0)+P.top)}}class rt{constructor(i){this.lastTouch_=null,this.onDocumentMouseMove_=this.onDocumentMouseMove_.bind(this),this.onDocumentMouseUp_=this.onDocumentMouseUp_.bind(this),this.onMouseDown_=this.onMouseDown_.bind(this),this.onTouchEnd_=this.onTouchEnd_.bind(this),this.onTouchMove_=this.onTouchMove_.bind(this),this.onTouchStart_=this.onTouchStart_.bind(this),this.elem_=i,this.emitter=new y,i.addEventListener("touchstart",this.onTouchStart_,{passive:!1}),i.addEventListener("touchmove",this.onTouchMove_,{passive:!0}),i.addEventListener("touchend",this.onTouchEnd_),i.addEventListener("mousedown",this.onMouseDown_)}computePosition_(i){const r=this.elem_.getBoundingClientRect();return{bounds:{width:r.width,height:r.height},point:i?{x:i.x,y:i.y}:null}}onMouseDown_(i){var r;i.preventDefault(),(r=i.currentTarget)===null||r===void 0||r.focus();const p=this.elem_.ownerDocument;p.addEventListener("mousemove",this.onDocumentMouseMove_),p.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:i.altKey,data:this.computePosition_(Vn(i,this.elem_)),sender:this,shiftKey:i.shiftKey})}onDocumentMouseMove_(i){this.emitter.emit("move",{altKey:i.altKey,data:this.computePosition_(Vn(i,this.elem_)),sender:this,shiftKey:i.shiftKey})}onDocumentMouseUp_(i){const r=this.elem_.ownerDocument;r.removeEventListener("mousemove",this.onDocumentMouseMove_),r.removeEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("up",{altKey:i.altKey,data:this.computePosition_(Vn(i,this.elem_)),sender:this,shiftKey:i.shiftKey})}onTouchStart_(i){i.preventDefault();const r=i.targetTouches.item(0),p=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:i.altKey,data:this.computePosition_(r?{x:r.clientX-p.left,y:r.clientY-p.top}:void 0),sender:this,shiftKey:i.shiftKey}),this.lastTouch_=r}onTouchMove_(i){const r=i.targetTouches.item(0),p=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:i.altKey,data:this.computePosition_(r?{x:r.clientX-p.left,y:r.clientY-p.top}:void 0),sender:this,shiftKey:i.shiftKey}),this.lastTouch_=r}onTouchEnd_(i){var r;const p=(r=i.targetTouches.item(0))!==null&&r!==void 0?r:this.lastTouch_,g=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:i.altKey,data:this.computePosition_(p?{x:p.clientX-g.left,y:p.clientY-g.top}:void 0),sender:this,shiftKey:i.shiftKey})}}function re(a,i,r,p,g){const P=(a-i)/(r-i);return p+P*(g-p)}function kt(a){return String(a.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function ze(a,i,r){return Math.min(Math.max(a,i),r)}const xe=V("txt");class An{constructor(i,r){this.onChange_=this.onChange_.bind(this),this.props_=r.props,this.props_.emitter.on("change",this.onChange_),this.element=i.createElement("div"),this.element.classList.add(xe(),xe(void 0,"num")),r.arrayPosition&&this.element.classList.add(xe(void 0,r.arrayPosition)),r.viewProps.bindClassModifiers(this.element);const p=i.createElement("input");p.classList.add(xe("i")),p.type="text",r.viewProps.bindDisabled(p),this.element.appendChild(p),this.inputElement=p,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=r.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add(xe()),this.inputElement.classList.add(xe("i"));const g=i.createElement("div");g.classList.add(xe("k")),this.element.appendChild(g),this.knobElement=g;const P=i.createElementNS(K,"svg");P.classList.add(xe("g")),this.knobElement.appendChild(P);const A=i.createElementNS(K,"path");A.classList.add(xe("gb")),P.appendChild(A),this.guideBodyElem_=A;const F=i.createElementNS(K,"path");F.classList.add(xe("gh")),P.appendChild(F),this.guideHeadElem_=F;const B=i.createElement("div");B.classList.add(V("tt")()),this.knobElement.appendChild(B),this.tooltipElem_=B,r.value.emitter.on("change",this.onChange_),this.value=r.value,this.refresh()}onDraggingChange_(i){if(i.rawValue===null){this.element.classList.remove(xe(void 0,"drg"));return}this.element.classList.add(xe(void 0,"drg"));const r=i.rawValue/this.props_.get("draggingScale"),p=r+(r>0?-1:r<0?1:0),g=ze(-p,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${p+g},0 L${p},4 L${p+g},8`,`M ${r},-1 L${r},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${r},4`);const P=this.props_.get("formatter");this.tooltipElem_.textContent=P(this.value.rawValue),this.tooltipElem_.style.left=`${r}px`}refresh(){const i=this.props_.get("formatter");this.inputElement.value=i(this.value.rawValue)}onChange_(){this.refresh()}}class $i{constructor(i,r){var p;this.originRawValue_=0,this.onInputChange_=this.onInputChange_.bind(this),this.onInputKeyDown_=this.onInputKeyDown_.bind(this),this.onInputKeyUp_=this.onInputKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=r.baseStep,this.parser_=r.parser,this.props=r.props,this.sliderProps_=(p=r.sliderProps)!==null&&p!==void 0?p:null,this.value=r.value,this.viewProps=r.viewProps,this.dragging_=se(null),this.view=new An(i,{arrayPosition:r.arrayPosition,dragging:this.dragging_,props:this.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.inputElement.addEventListener("keydown",this.onInputKeyDown_),this.view.inputElement.addEventListener("keyup",this.onInputKeyUp_);const g=new rt(this.view.knobElement);g.emitter.on("down",this.onPointerDown_),g.emitter.on("move",this.onPointerMove_),g.emitter.on("up",this.onPointerUp_)}constrainValue_(i){var r,p;const g=(r=this.sliderProps_)===null||r===void 0?void 0:r.get("minValue"),P=(p=this.sliderProps_)===null||p===void 0?void 0:p.get("maxValue");let A=i;return g!==void 0&&(A=Math.max(A,g)),P!==void 0&&(A=Math.min(A,P)),A}onInputChange_(i){const p=i.currentTarget.value,g=this.parser_(p);v(g)||(this.value.rawValue=this.constrainValue_(g)),this.view.refresh()}onInputKeyDown_(i){const r=Pt(this.baseStep_,Yt(i));r!==0&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+r),{forceEmit:!1,last:!1})}onInputKeyUp_(i){Pt(this.baseStep_,Yt(i))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}onPointerDown_(){this.originRawValue_=this.value.rawValue,this.dragging_.rawValue=0}computeDraggingValue_(i){if(!i.point)return null;const r=i.point.x-i.bounds.width/2;return this.constrainValue_(this.originRawValue_+r*this.props.get("draggingScale"))}onPointerMove_(i){const r=this.computeDraggingValue_(i.data);r!==null&&(this.value.setRawValue(r,{forceEmit:!1,last:!1}),this.dragging_.rawValue=this.value.rawValue-this.originRawValue_)}onPointerUp_(i){const r=this.computeDraggingValue_(i.data);r!==null&&(this.value.setRawValue(r,{forceEmit:!0,last:!0}),this.dragging_.rawValue=null)}}function ht(a,i){a.write(i)}function li(a){const i=a?Ue(a,Te):null;return i?i.step:null}function Yi(a,i){const r=a&&Ue(a,Te);return r?kt(r.step):Math.max(kt(i),2)}function En(a){const i=li(a);return i??1}function ci(a,i){var r;const p=a&&Ue(a,Te),g=Math.abs((r=p==null?void 0:p.step)!==null&&r!==void 0?r:i);return g===0?.1:Math.pow(10,Math.floor(Math.log10(g))-1)}function sn(a){return[a[0],a[1],a[2]]}function qt(a){const i=ze(Math.floor(a),0,255).toString(16);return i.length===1?`0${i}`:i}function qi(a,i="#"){const r=sn(a.getComponents("rgb")).map(qt).join("");return`${i}${r}`}function pi(a,i="#"){const r=a.getComponents("rgb"),p=[r[0],r[1],r[2],r[3]*255].map(qt).join("");return`${i}${p}`}function ui(a,i){const r=be(i==="float"?2:0);return`rgb(${sn(a.getComponents("rgb",i)).map(g=>r(g)).join(", ")})`}function Xi(a){return i=>ui(i,a)}function Qi(a,i){const r=be(2),p=be(i==="float"?2:0);return`rgba(${a.getComponents("rgb",i).map((P,A)=>(A===3?r:p)(P)).join(", ")})`}function Zi(a){return i=>Qi(i,a)}function Wi(a){const i=[be(0),nn,nn];return`hsl(${sn(a.getComponents("hsl")).map((p,g)=>i[g](p)).join(", ")})`}function Ji(a){const i=[be(0),nn,nn,be(2)];return`hsla(${a.getComponents("hsl").map((p,g)=>i[g](p)).join(", ")})`}function In(a,i){const r=be(i==="float"?2:0),p=["r","g","b"];return`{${sn(a.getComponents("rgb",i)).map((P,A)=>`${p[A]}: ${r(P)}`).join(", ")}}`}function Xt(a){return i=>In(i,a)}function Hi(a,i){const r=be(2),p=be(i==="float"?2:0),g=["r","g","b","a"];return`{${a.getComponents("rgb",i).map((A,F)=>{const B=F===3?r:p;return`${g[F]}: ${B(A)}`}).join(", ")}}`}function Qt(a){return i=>Hi(i,a)}[...["int","float"].reduce((a,i)=>[...a,{format:{alpha:!1,mode:"rgb",notation:"func",type:i},stringifier:Xi(i)},{format:{alpha:!0,mode:"rgb",notation:"func",type:i},stringifier:Zi(i)},{format:{alpha:!1,mode:"rgb",notation:"object",type:i},stringifier:Xt(i)},{format:{alpha:!0,mode:"rgb",notation:"object",type:i},stringifier:Qt(i)}],[])];class es{constructor(i){this.components=i.components,this.asm_=i.assembly}constrain(i){const r=this.asm_.toComponents(i).map((p,g)=>{var P,A;return(A=(P=this.components[g])===null||P===void 0?void 0:P.constrain(p))!==null&&A!==void 0?A:p});return this.asm_.fromComponents(r)}}const rn=V("pndtxt");class hi{constructor(i,r){this.textViews=r.textViews,this.element=i.createElement("div"),this.element.classList.add(rn()),this.textViews.forEach(p=>{const g=i.createElement("div");g.classList.add(rn("a")),g.appendChild(p.element),this.element.appendChild(g)})}}function ts(a,i,r){return new $i(a,{arrayPosition:r===0?"fst":r===i.axes.length-1?"lst":"mid",baseStep:i.axes[r].baseStep,parser:i.parser,props:i.axes[r].textProps,value:se(0,{constraint:i.axes[r].constraint}),viewProps:i.viewProps})}class Tn{constructor(i,r){this.value=r.value,this.viewProps=r.viewProps,this.acs_=r.axes.map((p,g)=>ts(i,r,g)),this.acs_.forEach((p,g)=>{$t({primary:this.value,secondary:p.value,forward:P=>r.assembly.toComponents(P.rawValue)[g],backward:(P,A)=>{const F=r.assembly.toComponents(P.rawValue);return F[g]=A.rawValue,r.assembly.fromComponents(F)}})}),this.view=new hi(i,{textViews:this.acs_.map(p=>p.view)})}}function ns(a,i){return"step"in a&&!v(a.step)?new Te(a.step,i):null}function is(a){return"max"in a&&!v(a.max)||"min"in a&&!v(a.min)?new xt({max:a.max,min:a.min}):null}const ss={monitor:{defaultInterval:200,defaultLineCount:3}},ot=V("grl");class rs{constructor(i,r){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=i.createElement("div"),this.element.classList.add(ot()),r.viewProps.bindClassModifiers(this.element),this.formatter_=r.formatter,this.props_=r.props,this.cursor_=r.cursor,this.cursor_.emitter.on("change",this.onCursorChange_);const p=i.createElementNS(K,"svg");p.classList.add(ot("g")),p.style.height=`calc(var(--bld-us) * ${r.lineCount})`,this.element.appendChild(p),this.svgElem_=p;const g=i.createElementNS(K,"polyline");this.svgElem_.appendChild(g),this.lineElem_=g;const P=i.createElement("div");P.classList.add(ot("t"),V("tt")()),this.element.appendChild(P),this.tooltipElem_=P,r.value.emitter.on("change",this.onValueUpdate_),this.value=r.value,this.update_()}get graphElement(){return this.svgElem_}update_(){const i=this.svgElem_.getBoundingClientRect(),r=this.value.rawValue.length-1,p=this.props_.get("minValue"),g=this.props_.get("maxValue"),P=[];this.value.rawValue.forEach((We,Kn)=>{if(We===void 0)return;const $n=re(Kn,0,r,0,i.width),ft=re(We,p,g,i.height,0);P.push([$n,ft].join(","))}),this.lineElem_.setAttributeNS(null,"points",P.join(" "));const A=this.tooltipElem_,F=this.value.rawValue[this.cursor_.rawValue];if(F===void 0){A.classList.remove(ot("t","a"));return}const B=re(this.cursor_.rawValue,0,r,0,i.width),fe=re(F,p,g,i.height,0);A.style.left=`${B}px`,A.style.top=`${fe}px`,A.textContent=`${this.formatter_(F)}`,A.classList.contains(ot("t","a"))||(A.classList.add(ot("t","a"),ot("t","in")),S(A),A.classList.remove(ot("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class os{constructor(i,r){if(this.onGraphMouseMove_=this.onGraphMouseMove_.bind(this),this.onGraphMouseLeave_=this.onGraphMouseLeave_.bind(this),this.onGraphPointerDown_=this.onGraphPointerDown_.bind(this),this.onGraphPointerMove_=this.onGraphPointerMove_.bind(this),this.onGraphPointerUp_=this.onGraphPointerUp_.bind(this),this.props_=r.props,this.value=r.value,this.viewProps=r.viewProps,this.cursor_=se(-1),this.view=new rs(i,{cursor:this.cursor_,formatter:r.formatter,lineCount:r.lineCount,props:this.props_,value:this.value,viewProps:this.viewProps}),!Ee(i))this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_);else{const p=new rt(this.view.element);p.emitter.on("down",this.onGraphPointerDown_),p.emitter.on("move",this.onGraphPointerMove_),p.emitter.on("up",this.onGraphPointerUp_)}}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(i){const r=this.view.element.getBoundingClientRect();this.cursor_.rawValue=Math.floor(re(i.offsetX,0,r.width,0,this.value.rawValue.length))}onGraphPointerDown_(i){this.onGraphPointerMove_(i)}onGraphPointerMove_(i){if(!i.data.point){this.cursor_.rawValue=-1;return}this.cursor_.rawValue=Math.floor(re(i.data.point.x,0,i.data.bounds.width,0,this.value.rawValue.length))}onGraphPointerUp_(){this.cursor_.rawValue=-1}}class as{constructor(i){this.controller_=i}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(i){this.controller_.viewProps.set("disabled",i)}get title(){var i;return(i=this.controller_.props.get("title"))!==null&&i!==void 0?i:""}set title(i){this.controller_.props.set("title",i)}on(i,r){const p=r.bind(this);return this.controller_.emitter.on(i,()=>{p(new h(this))}),this}}class ls extends h{constructor(i,r,p){super(i),this.cell=r,this.index=p}}class cs extends o{constructor(i){super(i),this.cellToApiMap_=new Map,this.emitter_=new y;const r=this.controller_.valueController;r.cellControllers.forEach((p,g)=>{const P=new as(p);this.cellToApiMap_.set(p,P),p.emitter.on("click",()=>{const A=g%r.size[0],F=Math.floor(g/r.size[0]);this.emitter_.emit("click",{event:new ls(this,P,[A,F])})})})}cell(i,r){const p=this.controller_.valueController,g=p.cellControllers[r*p.size[0]+i];return this.cellToApiMap_.get(g)}on(i,r){const p=r.bind(this);return this.emitter_.on(i,g=>{p(g.event)}),this}}class di{constructor(i,r){this.size=r.size;const[p,g]=this.size,P=[];for(let A=0;A<g;A++)for(let F=0;F<p;F++){const B=new H(i,{props:oe.fromObject(Object.assign({},r.cellConfig(F,A))),viewProps:Be.create()});P.push(B)}this.cellCs_=P,this.viewProps=Be.create(),this.viewProps.handleDispose(()=>{this.cellCs_.forEach(A=>{A.viewProps.set("disposed",!0)})}),this.view=new pt(i,{viewProps:this.viewProps,viewName:"btngrid"}),this.view.element.style.gridTemplateColumns=`repeat(${p}, 1fr)`,this.cellCs_.forEach(A=>{this.view.element.appendChild(A.view.element)})}get cellControllers(){return this.cellCs_}}const ps={id:"buttongrid",type:"blade",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(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);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(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);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(--elm-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(--bld-us)}.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(--bld-s);opacity:1}.tp-cbzv.tp-cbzv-cpl .tp-cbzv_p{overflow:visible}.tp-cbzv .tp-popv{left:calc(-1*var(--cnt-h-p));position:absolute;right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-cbzpv_t{margin-top:var(--bld-s)}.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(--bld-us)*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(--bld-us));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(--bld-us) - 8px);margin-top:calc((var(--bld-us) - 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(--elm-br);display:grid;overflow:hidden;gap:2px}.tp-radgridv.tp-v-disabled{opacity:.5}.tp-radgridv .tp-radv_b{border-radius:0}',accept(a){const i=ee,r=$(a,{cells:i.required.function,size:i.required.array(i.required.number),view:i.required.constant("buttongrid"),label:i.optional.string});return r?{params:r}:null},controller(a){return new ct(a.document,{blade:a.blade,props:oe.fromObject({label:a.params.label}),valueController:new di(a.document,{cellConfig:a.params.cells,size:a.params.size})})},api(a){return!(a.controller instanceof ct)||!(a.controller.valueController instanceof di)?null:new cs(a.controller)}};class us extends o{get label(){return this.controller_.props.get("label")}set label(i){this.controller_.props.set("label",i)}get value(){return this.controller_.valueController.value.rawValue}set value(i){this.controller_.valueController.value.rawValue=i}on(i,r){const p=r.bind(this);return this.controller_.valueController.value.emitter.on(i,g=>{p(new d(this,g.rawValue,void 0,g.options.last))}),this}}function Ne(a,i,r){return a*(1-r)+i*r}const mi=20,hs=.001,On=100;function ds(a,i){let r=.25,p=.5,g=-1;for(let P=0;P<mi;P++){const[A,F]=a.curve(p);if(p+=r*(A<i?1:-1),g=F,r*=.5,Math.abs(i-A)<hs)break}return g}class Ye{constructor(i=0,r=0,p=1,g=1){this.cache_=[],this.comps_=[i,r,p,g]}get x1(){return this.comps_[0]}get y1(){return this.comps_[1]}get x2(){return this.comps_[2]}get y2(){return this.comps_[3]}static isObject(i){return v(i)||!Array.isArray(i)?!1:typeof i[0]=="number"&&typeof i[1]=="number"&&typeof i[2]=="number"&&typeof i[3]=="number"}static equals(i,r){return i.x1===r.x1&&i.y1===r.y1&&i.x2===r.x2&&i.y2===r.y2}curve(i){const r=Ne(0,this.x1,i),p=Ne(0,this.y1,i),g=Ne(this.x1,this.x2,i),P=Ne(this.y1,this.y2,i),A=Ne(this.x2,1,i),F=Ne(this.y2,1,i),B=Ne(r,g,i),fe=Ne(p,P,i),We=Ne(g,A,i),Kn=Ne(P,F,i);return[Ne(B,We,i),Ne(fe,Kn,i)]}y(i){if(this.cache_.length===0){const r=[];for(let p=0;p<On;p++)r.push(ds(this,re(p,0,On-1,0,1)));this.cache_=r}return this.cache_[Math.round(re(ze(i,0,1),0,1,0,On-1))]}toObject(){return[this.comps_[0],this.comps_[1],this.comps_[2],this.comps_[3]]}}const fi={toComponents:a=>a.toObject(),fromComponents:a=>new Ye(...a)};function qe(a){const i=be(2);return`cubic-bezier(${a.toObject().map(p=>i(p)).join(", ")})`}const Dn=[0,.5,.5,1];function ms(a){const i=a.match(/^cubic-bezier\s*\(\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)\s*\)$/);if(!i)return new Ye(...Dn);const r=[i[1],i[2],i[3],i[4]].reduce((p,g)=>{if(!p)return null;const P=Number(g);return isNaN(P)?null:[...p,P]},[]);return new Ye(...r??Dn)}const pe=V("cbz");class fs{constructor(i,r){this.element=i.createElement("div"),this.element.classList.add(pe()),r.viewProps.bindClassModifiers(this.element),r.foldable.bindExpandedClass(this.element,pe(void 0,"expanded")),O(r.foldable,"completed",X(this.element,pe(void 0,"cpl")));const p=i.createElement("div");p.classList.add(pe("h")),this.element.appendChild(p);const g=i.createElement("button");g.classList.add(pe("b")),r.viewProps.bindDisabled(g);const P=i.createElementNS(K,"svg");P.innerHTML='<path d="M2 13C8 13 8 3 14 3"/>',g.appendChild(P),p.appendChild(g),this.buttonElement=g;const A=i.createElement("div");if(A.classList.add(pe("t")),p.appendChild(A),this.textElement=A,r.pickerLayout==="inline"){const F=i.createElement("div");F.classList.add(pe("p")),this.element.appendChild(F),this.pickerElement=F}else this.pickerElement=null}}const Mt=V("cbzp");class vi{constructor(i,r){this.element=i.createElement("div"),this.element.classList.add(Mt()),r.viewProps.bindClassModifiers(this.element);const p=i.createElement("div");p.classList.add(Mt("g")),this.element.appendChild(p),this.graphElement=p;const g=i.createElement("div");g.classList.add(Mt("t")),this.element.appendChild(g),this.textElement=g}}function on(a,i){const r=new MutationObserver(g=>{for(const P of g)P.type==="childList"&&P.addedNodes.forEach(A=>{A.contains(A)&&(i(),r.disconnect())})}),p=a.ownerDocument;r.observe(p.body,{attributes:!0,childList:!0,subtree:!0})}const Xe=V("cbzg");function vs(a,i){return r=>i(a(r))}class bs{constructor(i,r){this.element=i.createElement("div"),this.element.classList.add(Xe()),r.viewProps.bindClassModifiers(this.element),r.viewProps.bindTabIndex(this.element);const p=i.createElement("div");p.classList.add(Xe("p")),this.element.appendChild(p),this.previewElement=p;const g=i.createElementNS(K,"svg");g.classList.add(Xe("g")),this.element.appendChild(g),this.svgElem_=g;const P=i.createElementNS(K,"path");P.classList.add(Xe("u")),this.svgElem_.appendChild(P),this.guideElem_=P;const A=i.createElementNS(K,"polyline");A.classList.add(Xe("l")),this.svgElem_.appendChild(A),this.lineElem_=A,this.handleElems_=[i.createElement("div"),i.createElement("div")],this.handleElems_.forEach(F=>{F.classList.add(Xe("h")),this.element.appendChild(F)}),this.vectorElems_=[i.createElementNS(K,"line"),i.createElementNS(K,"line")],this.vectorElems_.forEach(F=>{F.classList.add(Xe("v")),this.svgElem_.appendChild(F)}),this.value_=r.value,this.value_.emitter.on("change",this.onValueChange_.bind(this)),this.sel_=r.selection,this.handleElems_.forEach((F,B)=>{E(this.sel_,vs(fe=>fe===B,X(F,Xe("h","sel"))))}),on(this.element,()=>{this.refresh()})}getVertMargin_(i){return i*.25}valueToPosition(i,r){const p=this.element.getBoundingClientRect(),g=p.width,P=p.height,A=this.getVertMargin_(P);return{x:re(i,0,1,0,g),y:re(r,0,1,P-A,A)}}positionToValue(i,r){const p=this.element.getBoundingClientRect(),g=p.width,P=p.height,A=this.getVertMargin_(P);return{x:ze(re(i,0,g,0,1),0,1),y:re(r,P-A,A,0,1)}}refresh(){this.guideElem_.setAttributeNS(null,"d",[0,1].map(P=>{const A=this.valueToPosition(0,P),F=this.valueToPosition(1,P);return[`M ${A.x},${A.y}`,`L ${F.x},${F.y}`].join(" ")}).join(" "));const i=this.value_.rawValue,r=[];let p=0;for(;;){const P=this.valueToPosition(...i.curve(p));if(r.push([P.x,P.y].join(",")),p>=1)break;p=Math.min(p+.05,1)}this.lineElem_.setAttributeNS(null,"points",r.join(" "));const g=i.toObject();[0,1].forEach(P=>{const A=this.valueToPosition(P,P),F=this.valueToPosition(g[P*2],g[P*2+1]),B=this.vectorElems_[P];B.setAttributeNS(null,"x1",String(A.x)),B.setAttributeNS(null,"y1",String(A.y)),B.setAttributeNS(null,"x2",String(F.x)),B.setAttributeNS(null,"y2",String(F.y));const fe=this.handleElems_[P];fe.style.left=`${F.x}px`,fe.style.top=`${F.y}px`})}onValueChange_(){this.refresh()}}const bi=24,St=400,ye=1e3,Re=V("cbzprv");class Qe{constructor(i,r){this.stopped_=!0,this.startTime_=-1,this.onDispose_=this.onDispose_.bind(this),this.onTimer_=this.onTimer_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.element=i.createElement("div"),this.element.classList.add(Re()),r.viewProps.bindClassModifiers(this.element);const p=i.createElementNS(K,"svg");p.classList.add(Re("g")),this.element.appendChild(p),this.svgElem_=p;const g=i.createElementNS(K,"path");g.classList.add(Re("t")),this.svgElem_.appendChild(g),this.ticksElem_=g;const P=i.createElement("div");P.classList.add(Re("m")),this.element.appendChild(P),this.markerElem_=P,this.value_=r.value,this.value_.emitter.on("change",this.onValueChange_),r.viewProps.handleDispose(this.onDispose_),on(this.element,()=>{this.refresh()})}play(){this.stop(),this.updateMarker_(0),this.markerElem_.classList.add(Re("m","a")),this.startTime_=new Date().getTime()+St,this.stopped_=!1,requestAnimationFrame(this.onTimer_)}stop(){this.stopped_=!0,this.markerElem_.classList.remove(Re("m","a"))}onDispose_(){this.stop()}updateMarker_(i){const r=this.value_.rawValue.y(ze(i,0,1));this.markerElem_.style.left=`${r*100}%`}refresh(){const i=this.svgElem_.getBoundingClientRect(),r=i.width,p=i.height,g=[],P=this.value_.rawValue;for(let A=0;A<bi;A++){const F=re(A,0,bi-1,0,1),B=re(P.y(F),0,1,0,r);g.push(`M ${B},0 v${p}`)}this.ticksElem_.setAttributeNS(null,"d",g.join(" "))}onTimer_(){if(this.startTime_===null)return;const i=new Date().getTime()-this.startTime_,r=i/ye;this.updateMarker_(r),i>ye+St&&this.stop(),this.stopped_||requestAnimationFrame(this.onTimer_)}onValueChange_(){this.refresh(),this.play()}}function Nn(a,i,r,p){const g=r-a,P=p-i;return Math.sqrt(g*g+P*P)}function gi(a,i,r,p){const g=Nn(a,i,r,p),P=Math.atan2(p-i,r-a),A=Math.round(P/(Math.PI/4))*Math.PI/4;return{x:a+Math.cos(A)*g,y:i+Math.sin(A)*g}}class jn{constructor(i,r){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=r.baseStep,this.value=r.value,this.sel_=se(0),this.viewProps=r.viewProps,this.view=new bs(i,{selection:this.sel_,value:this.value,viewProps:this.viewProps}),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_),this.prevView_=new Qe(i,{value:this.value,viewProps:this.viewProps}),this.prevView_.element.addEventListener("mousedown",g=>{g.stopImmediatePropagation(),g.preventDefault(),this.prevView_.play()}),this.view.previewElement.appendChild(this.prevView_.element);const p=new rt(this.view.element);p.emitter.on("down",this.onPointerDown_),p.emitter.on("move",this.onPointerMove_),p.emitter.on("up",this.onPointerUp_)}refresh(){this.view.refresh(),this.prevView_.refresh(),this.prevView_.play()}updateValue_(i,r,p){const g=this.sel_.rawValue,P=this.value.rawValue.toObject(),A=this.view.positionToValue(i.x,i.y),F=r?gi(g,g,A.x,A.y):A;P[g*2]=F.x,P[g*2+1]=F.y,this.value.setRawValue(new Ye(...P),p)}onPointerDown_(i){const r=i.data;if(!r.point)return;const p=this.value.rawValue,g=this.view.valueToPosition(p.x1,p.y1),P=Nn(r.point.x,r.point.y,g.x,g.y),A=this.view.valueToPosition(p.x2,p.y2),F=Nn(r.point.x,r.point.y,A.x,A.y);this.sel_.rawValue=P<=F?0:1,this.updateValue_(r.point,i.shiftKey,{forceEmit:!1,last:!1})}onPointerMove_(i){const r=i.data;r.point&&this.updateValue_(r.point,i.shiftKey,{forceEmit:!1,last:!1})}onPointerUp_(i){const r=i.data;r.point&&this.updateValue_(r.point,i.shiftKey,{forceEmit:!0,last:!0})}onKeyDown_(i){ai(i.key)&&i.preventDefault();const r=this.sel_.rawValue,p=this.value.rawValue.toObject();p[r*2]+=Pt(this.baseStep_,Ln(i)),p[r*2+1]+=Pt(this.baseStep_,Yt(i)),this.value.setRawValue(new Ye(...p),{forceEmit:!1,last:!1})}onKeyUp_(i){ai(i.key)&&i.preventDefault();const r=Pt(this.baseStep_,Ln(i)),p=Pt(this.baseStep_,Yt(i));r===0&&p===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class dt{constructor(i,r){this.value=r.value,this.viewProps=r.viewProps,this.view=new vi(i,{viewProps:this.viewProps}),this.gc_=new jn(i,{baseStep:r.axis.baseStep,value:this.value,viewProps:this.viewProps}),this.view.graphElement.appendChild(this.gc_.view.element);const p=Object.assign(Object.assign({},r.axis),{constraint:new xt({max:1,min:0})}),g=Object.assign(Object.assign({},r.axis),{constraint:void 0});this.tc_=new Tn(i,{assembly:fi,axes:[p,g,p,g],parser:Kt,value:this.value,viewProps:this.viewProps}),this.view.textElement.appendChild(this.tc_.view.element)}get allFocusableElements(){return[this.gc_.view.element,...this.tc_.view.textViews.map(i=>i.inputElement)]}refresh(){this.gc_.refresh()}}class le{constructor(i,r){this.onButtonBlur_=this.onButtonBlur_.bind(this),this.onButtonClick_=this.onButtonClick_.bind(this),this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.value=r.value,this.viewProps=r.viewProps,this.foldable_=_n(r.expanded),this.view=new fs(i,{foldable:this.foldable_,pickerLayout:r.pickerLayout,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("blur",this.onButtonBlur_),this.view.buttonElement.addEventListener("click",this.onButtonClick_),this.tc_=new J(i,{parser:ms,props:oe.fromObject({formatter:qe}),value:this.value,viewProps:this.viewProps}),this.view.textElement.appendChild(this.tc_.view.element),this.popC_=r.pickerLayout==="popup"?new M(i,{viewProps:this.viewProps}):null;const p=new dt(i,{axis:r.axis,value:this.value,viewProps:this.viewProps});p.allFocusableElements.forEach(g=>{g.addEventListener("blur",this.onPopupChildBlur_),g.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=p,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),E(this.popC_.shows,g=>{g&&p.refresh()}),$t({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:g=>g.rawValue,backward:(g,P)=>P.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),et(this.foldable_,this.view.pickerElement))}onButtonBlur_(i){if(!this.popC_)return;const r=i.relatedTarget;(!r||!this.popC_.view.element.contains(r))&&(this.popC_.shows.rawValue=!1)}onButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.allFocusableElements[0].focus()}onPopupChildBlur_(i){if(!this.popC_)return;const r=this.popC_.view.element,p=He(i);p&&r.contains(p)||p&&p===this.view.buttonElement&&!Ee(r.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(i){this.popC_&&i.key==="Escape"&&(this.popC_.shows.rawValue=!1)}}function _i(){return new es({assembly:fi,components:[0,1,2,3].map(a=>a%2===0?new xt({min:0,max:1}):void 0)})}const me={id:"cubic-bezier",type:"blade",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(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);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(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);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(--elm-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(--bld-us)}.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(--bld-s);opacity:1}.tp-cbzv.tp-cbzv-cpl .tp-cbzv_p{overflow:visible}.tp-cbzv .tp-popv{left:calc(-1*var(--cnt-h-p));position:absolute;right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-cbzpv_t{margin-top:var(--bld-s)}.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(--bld-us)*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(--bld-us));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(--bld-us) - 8px);margin-top:calc((var(--bld-us) - 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(--elm-br);display:grid;overflow:hidden;gap:2px}.tp-radgridv.tp-v-disabled{opacity:.5}.tp-radgridv .tp-radv_b{border-radius:0}',accept(a){const i=ee,r=$(a,{value:i.required.array(i.required.number),view:i.required.constant("cubicbezier"),expanded:i.optional.boolean,label:i.optional.string,picker:i.optional.custom(p=>p==="inline"||p==="popup"?p:void 0)});return r?{params:r}:null},controller(a){var i,r;const p=new Ye(...a.params.value),g=se(p,{constraint:_i(),equals:Ye.equals}),P=new le(a.document,{axis:{baseStep:.1,textProps:oe.fromObject({draggingScale:.01,formatter:be(2)})},expanded:(i=a.params.expanded)!==null&&i!==void 0?i:!1,pickerLayout:(r=a.params.picker)!==null&&r!==void 0?r:"popup",value:g,viewProps:a.viewProps});return new tt(a.document,{blade:a.blade,props:oe.fromObject({label:a.params.label}),valueController:P})},api(a){return!(a.controller instanceof tt)||!(a.controller.valueController instanceof le)?null:new us(a.controller)}};class wi extends o{begin(){this.controller_.valueController.begin()}end(){this.controller_.valueController.end()}}const Le=20;class gs{constructor(){this.start_=null,this.duration_=0,this.fps_=null,this.frameCount_=0,this.timestamps_=[]}get duration(){return this.duration_}get fps(){return this.fps_}begin(i){this.start_=i.getTime()}calculateFps_(i){if(this.timestamps_.length===0)return null;const r=this.timestamps_[0];return 1e3*(this.frameCount_-r.frameCount)/(i-r.time)}compactTimestamps_(){if(this.timestamps_.length<=Le)return;const i=this.timestamps_.length-Le;this.timestamps_.splice(0,i);const r=this.timestamps_[0].frameCount;this.timestamps_.forEach(p=>{p.frameCount-=r}),this.frameCount_-=r}end(i){if(this.start_===null)return;const r=i.getTime();this.duration_=r-this.start_,this.start_=null,this.fps_=this.calculateFps_(r),this.timestamps_.push({frameCount:this.frameCount_,time:r}),++this.frameCount_,this.compactTimestamps_()}}const Ze=V("fps");class Fn{constructor(i,r){this.element=i.createElement("div"),this.element.classList.add(Ze()),r.viewProps.bindClassModifiers(this.element),this.graphElement=i.createElement("div"),this.graphElement.classList.add(Ze("g")),this.element.appendChild(this.graphElement);const p=i.createElement("div");p.classList.add(Ze("l")),this.element.appendChild(p);const g=i.createElement("span");g.classList.add(Ze("v")),g.textContent="--",p.appendChild(g),this.valueElement=g;const P=i.createElement("span");P.classList.add(Ze("u")),P.textContent="FPS",p.appendChild(P)}}class xi{constructor(i,r){this.stopwatch_=new gs,this.onTick_=this.onTick_.bind(this),this.ticker_=r.ticker,this.ticker_.emitter.on("tick",this.onTick_),this.value_=r.value,this.viewProps=r.viewProps,this.view=new Fn(i,{viewProps:this.viewProps}),this.graphC_=new os(i,{formatter:be(0),lineCount:r.lineCount,props:oe.fromObject({maxValue:r.maxValue,minValue:r.minValue}),value:this.value_,viewProps:this.viewProps}),this.view.graphElement.appendChild(this.graphC_.view.element),this.viewProps.handleDispose(()=>{this.graphC_.viewProps.set("disposed",!0),this.ticker_.dispose()})}begin(){this.stopwatch_.begin(new Date)}end(){this.stopwatch_.end(new Date)}onTick_(){const i=this.stopwatch_.fps;if(i!==null){const r=this.value_.rawValue;this.value_.rawValue=Gi(r,i),this.view.valueElement.textContent=i.toFixed(0)}}}function _s(a,i){return i===0?new nt:new xn(a,i??ss.monitor.defaultInterval)}const zn={id:"fpsgraph",type:"blade",accept(a){const i=ee,r=$(a,{view:i.required.constant("fpsgraph"),interval:i.optional.number,label:i.optional.string,lineCount:i.optional.number,max:i.optional.number,min:i.optional.number});return r?{params:r}:null},controller(a){var i,r,p,g;const P=(i=a.params.interval)!==null&&i!==void 0?i:500;return new ct(a.document,{blade:a.blade,props:oe.fromObject({label:a.params.label}),valueController:new xi(a.document,{lineCount:(r=a.params.lineCount)!==null&&r!==void 0?r:2,maxValue:(p=a.params.max)!==null&&p!==void 0?p:90,minValue:(g=a.params.min)!==null&&g!==void 0?g:0,ticker:_s(a.document,P),value:ri(80),viewProps:a.viewProps})})},api(a){return!(a.controller instanceof ct)||!(a.controller.valueController instanceof xi)?null:new wi(a.controller)}};class je{constructor(i,r){this.min=i,this.max=r}static isObject(i){if(typeof i!="object"||i===null)return!1;const r=i.min,p=i.max;return!(typeof r!="number"||typeof p!="number")}static equals(i,r){return i.min===r.min&&i.max===r.max}get length(){return this.max-this.min}toObject(){return{min:this.min,max:this.max}}}const an={fromComponents:a=>new je(a[0],a[1]),toComponents:a=>[a.min,a.max]};class Lt{constructor(i){this.edge=i}constrain(i){var r,p,g,P,A,F,B,fe;if(i.min<=i.max)return new je((p=(r=this.edge)===null||r===void 0?void 0:r.constrain(i.min))!==null&&p!==void 0?p:i.min,(P=(g=this.edge)===null||g===void 0?void 0:g.constrain(i.max))!==null&&P!==void 0?P:i.max);const We=(i.min+i.max)/2;return new je((F=(A=this.edge)===null||A===void 0?void 0:A.constrain(We))!==null&&F!==void 0?F:We,(fe=(B=this.edge)===null||B===void 0?void 0:B.constrain(We))!==null&&fe!==void 0?fe:We)}}const Vt=V("rsltxt");class yi{constructor(i,r){this.sliderView_=r.sliderView,this.textView_=r.textView,this.element=i.createElement("div"),this.element.classList.add(Vt());const p=i.createElement("div");p.classList.add(Vt("s")),p.appendChild(this.sliderView_.element),this.element.appendChild(p);const g=i.createElement("div");g.classList.add(Vt("t")),g.appendChild(this.textView_.element),this.element.appendChild(g)}}const ke=V("rsl");class Ci{constructor(i,r){this.maxValue_=r.maxValue,this.minValue_=r.minValue,this.element=i.createElement("div"),this.element.classList.add(ke()),r.viewProps.bindClassModifiers(this.element),this.value_=r.value,this.value_.emitter.on("change",this.onValueChange_.bind(this));const p=i.createElement("div");p.classList.add(ke("t")),this.element.appendChild(p),this.trackElement=p;const g=i.createElement("div");g.classList.add(ke("b")),p.appendChild(g),this.barElement=g;const P=["min","max"].map(A=>{const F=i.createElement("div");return F.classList.add(ke("k"),ke("k",A)),p.appendChild(F),F});this.knobElements=[P[0],P[1]],this.update()}valueToX_(i){return ze(re(i,this.minValue_,this.maxValue_,0,1),0,1)*100}update(){const i=this.value_.rawValue;i.length===0?this.element.classList.add(ke(void 0,"zero")):this.element.classList.remove(ke(void 0,"zero"));const r=[this.valueToX_(i.min),this.valueToX_(i.max)];this.barElement.style.left=`${r[0]}%`,this.barElement.style.right=`${100-r[1]}%`,this.knobElements.forEach((p,g)=>{p.style.left=`${r[g]}%`})}onValueChange_(){this.update()}}class Bn{constructor(i,r){this.grabbing_=null,this.grabOffset_=0,this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.maxValue_=r.maxValue,this.minValue_=r.minValue,this.viewProps=r.viewProps,this.value=r.value,this.view=new Ci(i,{maxValue:r.maxValue,minValue:r.minValue,value:this.value,viewProps:r.viewProps});const p=new rt(this.view.trackElement);p.emitter.on("down",this.onPointerDown_),p.emitter.on("move",this.onPointerMove_),p.emitter.on("up",this.onPointerUp_)}ofs_(){return this.grabbing_==="min"?this.view.knobElements[0].getBoundingClientRect().width/2:this.grabbing_==="max"?-this.view.knobElements[1].getBoundingClientRect().width/2:0}valueFromData_(i){if(!i.point)return null;const r=(i.point.x+this.ofs_())/i.bounds.width;return re(r,0,1,this.minValue_,this.maxValue_)}onPointerDown_(i){if(!i.data.point)return;const r=i.data.point.x/i.data.bounds.width,p=this.value.rawValue,g=re(p.min,this.minValue_,this.maxValue_,0,1),P=re(p.max,this.minValue_,this.maxValue_,0,1);Math.abs(P-r)<=.025?this.grabbing_="max":Math.abs(g-r)<=.025?this.grabbing_="min":r>=g&&r<=P?(this.grabbing_="length",this.grabOffset_=re(r-g,0,1,0,this.maxValue_-this.minValue_)):r<g?(this.grabbing_="min",this.onPointerMove_(i)):r>P&&(this.grabbing_="max",this.onPointerMove_(i))}applyPointToValue_(i,r){const p=this.valueFromData_(i);if(p!==null){if(this.grabbing_==="min")this.value.setRawValue(new je(p,this.value.rawValue.max),r);else if(this.grabbing_==="max")this.value.setRawValue(new je(this.value.rawValue.min,p),r);else if(this.grabbing_==="length"){const g=this.value.rawValue.length;let P=p-this.grabOffset_,A=P+g;P<this.minValue_?(P=this.minValue_,A=this.minValue_+g):A>this.maxValue_&&(P=this.maxValue_-g,A=this.maxValue_),this.value.setRawValue(new je(P,A),r)}}}onPointerMove_(i){this.applyPointToValue_(i.data,{forceEmit:!1,last:!1})}onPointerUp_(i){this.applyPointToValue_(i.data,{forceEmit:!0,last:!0}),this.grabbing_=null}}class Un{constructor(i,r){this.value=r.value,this.viewProps=r.viewProps,this.sc_=new Bn(i,r);const p={baseStep:r.baseStep,constraint:r.constraint,textProps:oe.fromObject({draggingScale:r.draggingScale,formatter:r.formatter})};this.tc_=new Tn(i,{assembly:an,axes:[p,p],parser:r.parser,value:this.value,viewProps:r.viewProps}),this.view=new yi(i,{sliderView:this.sc_.view,textView:this.tc_.view})}get textController(){return this.tc_}}function ws(a){return je.isObject(a)?new je(a.min,a.max):new je(0,0)}function ln(a,i){a.writeProperty("max",i.max),a.writeProperty("min",i.min)}function At(a){const i=[],r=is(a);r&&i.push(r);const p=ns(a);return p&&i.push(p),new Lt(new zt(i))}const Et={id:"input-interval",type:"input",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(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);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(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);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(--elm-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(--bld-us)}.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(--bld-s);opacity:1}.tp-cbzv.tp-cbzv-cpl .tp-cbzv_p{overflow:visible}.tp-cbzv .tp-popv{left:calc(-1*var(--cnt-h-p));position:absolute;right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-cbzpv_t{margin-top:var(--bld-s)}.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(--bld-us)*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(--bld-us));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(--bld-us) - 8px);margin-top:calc((var(--bld-us) - 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(--elm-br);display:grid;overflow:hidden;gap:2px}.tp-radgridv.tp-v-disabled{opacity:.5}.tp-radgridv .tp-radv_b{border-radius:0}',accept:(a,i)=>{if(!je.isObject(a))return null;const r=ee,p=$(i,{format:r.optional.function,max:r.optional.number,min:r.optional.number,step:r.optional.number});return p?{initialValue:new je(a.min,a.max),params:p}:null},binding:{reader:a=>ws,constraint:a=>At(a.params),equals:je.equals,writer:a=>ln},controller(a){var i;const r=a.value,p=a.constraint;if(!(p instanceof Lt))throw w.shouldNeverHappen();const g=(r.rawValue.min+r.rawValue.max)/2,P=(i=a.params.format)!==null&&i!==void 0?i:be(Yi(p.edge,g)),A=p.edge&&Ue(p.edge,xt);if((A==null?void 0:A.minValue)!==void 0&&(A==null?void 0:A.maxValue)!==void 0)return new Un(a.document,{baseStep:En(p.edge),constraint:p.edge,draggingScale:ci(A,g),formatter:P,maxValue:A.maxValue,minValue:A.minValue,parser:Kt,value:r,viewProps:a.viewProps});const F={baseStep:En(p.edge),constraint:p.edge,textProps:oe.fromObject({draggingScale:g,formatter:P})};return new Tn(a.document,{assembly:an,axes:[F,F],parser:Kt,value:r,viewProps:a.viewProps})}};class cn{constructor(i){this.controller_=i}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(i){this.controller_.viewProps.set("disabled",i)}get title(){var i;return(i=this.controller_.props.get("title"))!==null&&i!==void 0?i:""}set title(i){this.controller_.props.set("title",i)}}class xs extends d{constructor(i,r,p,g,P){super(i,g,P),this.cell=r,this.index=p}}class ys extends o{constructor(i){super(i),this.cellToApiMap_=new Map,this.controller_.valueController.cellControllers.forEach(p=>{const g=new cn(p);this.cellToApiMap_.set(p,g)})}get value(){return this.controller_.value}cell(i,r){const p=this.controller_.valueController,g=p.cellControllers[r*p.size[0]+i];return this.cellToApiMap_.get(g)}on(i,r){const p=r.bind(this);this.controller_.value.emitter.on(i,g=>{const P=this.controller_.valueController,A=P.findCellByValue(g.rawValue);if(!A)return;const F=this.cellToApiMap_.get(A);if(!F)return;const B=P.cellControllers.indexOf(A);p(new xs(this,F,[B%P.size[0],Math.floor(B/P.size[0])],g.rawValue,void 0))})}}const Zt=V("rad");class Cs{constructor(i,r){this.element=i.createElement("div"),this.element.classList.add(Zt()),r.viewProps.bindClassModifiers(this.element);const p=i.createElement("label");p.classList.add(Zt("l")),this.element.appendChild(p);const g=i.createElement("input");g.classList.add(Zt("i")),g.name=r.name,g.type="radio",r.viewProps.bindDisabled(g),p.appendChild(g),this.inputElement=g;const P=i.createElement("div");P.classList.add(Zt("b")),p.appendChild(P);const A=i.createElement("div");A.classList.add(Zt("t")),P.appendChild(A),O(r.props,"title",F=>{A.textContent=F})}}class mt{constructor(i,r){this.props=r.props,this.viewProps=r.viewProps,this.view=new Cs(i,{name:r.name,props:this.props,viewProps:this.viewProps})}}class Rn{constructor(i,r){this.cellCs_=[],this.cellValues_=[],this.onCellInputChange_=this.onCellInputChange_.bind(this),this.size=r.size;const[p,g]=this.size;for(let P=0;P<g;P++)for(let A=0;A<p;A++){const F=new mt(i,{name:r.groupName,props:oe.fromObject(Object.assign({},r.cellConfig(A,P))),viewProps:Be.create()});this.cellCs_.push(F),this.cellValues_.push(r.cellConfig(A,P).value)}this.value=r.value,E(this.value,P=>{const A=this.findCellByValue(P);A&&(A.view.inputElement.checked=!0)}),this.viewProps=Be.create(),this.view=new pt(i,{viewProps:this.viewProps,viewName:"radgrid"}),this.view.element.style.gridTemplateColumns=`repeat(${p}, 1fr)`,this.cellCs_.forEach(P=>{P.view.inputElement.addEventListener("change",this.onCellInputChange_),this.view.element.appendChild(P.view.element)})}get cellControllers(){return this.cellCs_}findCellByValue(i){const r=this.cellValues_.findIndex(p=>p===i);return r<0?null:this.cellCs_[r]}onCellInputChange_(i){const r=i.currentTarget,p=this.cellCs_.findIndex(g=>g.view.inputElement===r);p<0||(this.value.rawValue=this.cellValues_[p])}}const Ps=function(){return{id:"radiogrid",type:"blade",accept(a){const i=ee,r=$(a,{cells:i.required.function,groupName:i.required.string,size:i.required.array(i.required.number),value:i.required.raw,view:i.required.constant("radiogrid"),label:i.optional.string});return r?{params:r}:null},controller(a){return new tt(a.document,{blade:a.blade,props:oe.fromObject({label:a.params.label}),valueController:new Rn(a.document,{groupName:a.params.groupName,cellConfig:a.params.cells,size:a.params.size,value:se(a.params.value)})})},api(a){return!(a.controller instanceof tt)||!(a.controller.valueController instanceof Rn)?null:new ys(a.controller)}}}();function Gn(a){return{id:"input-radiogrid",type:"input",accept(i,r){if(!a.isType(i))return null;const p=ee,g=$(r,{cells:p.required.function,groupName:p.required.string,size:p.required.array(p.required.number),view:p.required.constant("radiogrid")});return g?{initialValue:i,params:g}:null},binding:a.binding,controller:i=>new Rn(i.document,{cellConfig:i.params.cells,groupName:i.params.groupName,size:i.params.size,value:i.value})}}const ks=Gn({isType:a=>typeof a=="number",binding:{reader:a=>st,writer:a=>ht}}),Pi=Gn({isType:a=>typeof a=="string",binding:{reader:a=>si,writer:a=>ht}}),Ms=Gn({isType:a=>typeof a=="boolean",binding:{reader:a=>de,writer:a=>ht}}),Ss=[ps,me,zn,Et,Ps,Ms,ks,Pi];c.CubicBezier=Ye,c.plugins=Ss,Object.defineProperty(c,"__esModule",{value:!0})})})(Oo,gn);const Do=Ur({__proto__:null,default:So(gn)},[gn]);let jt,Jn;const No=(L="tres-container")=>{jt||(jt=new Wn.Pane({container:document.querySelector(L)||void 0}),jt.registerPlugin(Do),Jn=jt.addBlade({view:"fpsgraph",label:"fpsgraph"}));function l(){jt&&jt.dispose()}return R.onMounted(()=>{const{onBeforeLoop:c,onAfterLoop:o,resume:h}=Zn.useRenderLoop();h(),c(()=>Jn.begin()),o(()=>Jn.end())}),R.onUnmounted(()=>{l()}),{pane:jt,fpsGraph:Jn,disposeTweakPane:l}};let Hn=null;function jo(L,l){return c=>{l&&l(c),L.draco&&(Hn||(Hn=new Lo),Hn.setDecoderPath(L.decoderPath||"https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),c.setDRACOLoader(Hn))}}async function nr(L,l={draco:!1},c){return await Zn.useLoader(Yr,L,jo(l,c))}const Fo=R.defineComponent({name:"GLTFModel",props:{path:String,draco:Boolean,decoderPath:String},async setup(L){const l=R.inject("local-scene"),{scene:c}=await nr(L.path,{draco:L.draco,decoderPath:L.decoderPath});return l!=null&&l.value&&l.value.add(c),()=>null}}),zo=R.defineComponent({__name:"Text3D",props:{font:null,text:null,size:{default:.5},height:{default:.2},curveSegments:{default:5},bevelEnabled:{type:Boolean,default:!0},bevelThickness:{default:.05},bevelSize:{default:.02},bevelOffset:{default:0},bevelSegments:{default:4},center:{type:Boolean,default:!1}},async setup(L){let l,c;const o=L,{extend:h}=tr();h({TextGeometry:Co});const d=new Po,f=R.useSlots(),v=R.computed(()=>{var y;return o.text?o.text:f.default?(y=f.default()[0].children)==null?void 0:y.trim():"TresJS"}),b=([l,c]=R.withAsyncContext(()=>new Promise((y,x)=>{try{typeof o.font=="string"?d.load(o.font,V=>{y(V)}):y(o.font)}catch(V){x(console.error("cientos",V))}})),l=await l,c(),l),w=R.computed(()=>({font:b,size:o.size,height:o.height,curveSegments:o.curveSegments,bevelEnabled:o.bevelEnabled,bevelThickness:o.bevelThickness,bevelSize:o.bevelSize,bevelOffset:o.bevelOffset,bevelSegments:o.bevelSegments}));return(y,x)=>{const V=R.resolveComponent("TresTextGeometry"),D=R.resolveComponent("TresMesh");return R.unref(b)?(R.openBlock(),R.createBlock(D,{key:0},{default:R.withCtx(()=>[R.unref(v)?(R.openBlock(),R.createBlock(V,{key:0,args:[R.unref(v),R.unref(w)],center:L.center},null,8,["args","center"])):R.createCommentVNode("",!0),R.renderSlot(y.$slots,"default")]),_:3})):R.createCommentVNode("",!0)}}});Ve.GLTFModel=Fo,Ve.OrbitControls=Ao,Ve.Text3D=zo,Ve.TransformControls=Io,Ve.useGLTF=nr,Ve.useTweakPane=No,Object.defineProperty(Ve,Symbol.toStringTag,{value:"Module"})});
|
|
8
|
+
(function(Pe,U){typeof exports=="object"&&typeof module<"u"?U(exports,require("vue"),require("@tresjs/core"),require("three")):typeof define=="function"&&define.amd?define(["exports","vue","@tresjs/core","three"],U):(Pe=typeof globalThis<"u"?globalThis:Pe||self,U(Pe.trescientos={},Pe.Vue,Pe.TresjsCore,Pe.Three))})(this,function(Pe,U,ln,f){"use strict";function Co(_,i){for(var r=0;r<i.length;r++){const s=i[r];if(typeof s!="string"&&!Array.isArray(s)){for(const a in s)if(a!=="default"&&!(a in _)){const c=Object.getOwnPropertyDescriptor(s,a);c&&Object.defineProperty(_,a,c.get?c:{enumerable:!0,get:()=>s[a]})}}}return Object.freeze(Object.defineProperty(_,Symbol.toStringTag,{value:"Module"}))}function M(_,i,r){return i in _?Object.defineProperty(_,i,{value:r,enumerable:!0,configurable:!0,writable:!0}):_[i]=r,_}var Ye=Uint8Array,Lt=Uint16Array,Qi=Uint32Array,lr=new Ye([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),cr=new Ye([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Po=new Ye([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),pr=function(_,i){for(var r=new Lt(31),s=0;s<31;++s)r[s]=i+=1<<_[s-1];for(var a=new Qi(r[30]),s=1;s<30;++s)for(var c=r[s];c<r[s+1];++c)a[c]=c-r[s]<<5|s;return[r,a]},ur=pr(lr,2),hr=ur[0],Mo=ur[1];hr[28]=258,Mo[258]=28;for(var ko=pr(cr,0),So=ko[0],Zi=new Lt(32768),me=0;me<32768;++me){var At=(me&43690)>>>1|(me&21845)<<1;At=(At&52428)>>>2|(At&13107)<<2,At=(At&61680)>>>4|(At&3855)<<4,Zi[me]=((At&65280)>>>8|(At&255)<<8)>>>1}for(var Vn=function(_,i,r){for(var s=_.length,a=0,c=new Lt(i);a<s;++a)++c[_[a]-1];var u=new Lt(i);for(a=0;a<i;++a)u[a]=u[a-1]+c[a-1]<<1;var h;if(r){h=new Lt(1<<i);var m=15-i;for(a=0;a<s;++a)if(_[a])for(var g=a<<4|_[a],y=i-_[a],w=u[_[a]-1]++<<y,C=w|(1<<y)-1;w<=C;++w)h[Zi[w]>>>m]=g}else for(h=new Lt(s),a=0;a<s;++a)_[a]&&(h[a]=Zi[u[_[a]-1]++]>>>15-_[a]);return h},In=new Ye(288),me=0;me<144;++me)In[me]=8;for(var me=144;me<256;++me)In[me]=9;for(var me=256;me<280;++me)In[me]=7;for(var me=280;me<288;++me)In[me]=8;for(var dr=new Ye(32),me=0;me<32;++me)dr[me]=5;var Lo=Vn(In,9,1),Ao=Vn(dr,5,1),Wi=function(_){for(var i=_[0],r=1;r<_.length;++r)_[r]>i&&(i=_[r]);return i},nt=function(_,i,r){var s=i/8|0;return(_[s]|_[s+1]<<8)>>(i&7)&r},Ji=function(_,i){var r=i/8|0;return(_[r]|_[r+1]<<8|_[r+2]<<16)>>(i&7)},Vo=function(_){return(_/8|0)+(_&7&&1)},Io=function(_,i,r){(i==null||i<0)&&(i=0),(r==null||r>_.length)&&(r=_.length);var s=new(_ instanceof Lt?Lt:_ instanceof Qi?Qi:Ye)(r-i);return s.set(_.subarray(i,r)),s},Do=function(_,i,r){var s=_.length;if(!s||r&&!r.l&&s<5)return i||new Ye(0);var a=!i||r,c=!r||r.i;r||(r={}),i||(i=new Ye(s*3));var u=function(ke){var Ve=i.length;if(ke>Ve){var Re=new Ye(Math.max(Ve*2,ke));Re.set(i),i=Re}},h=r.f||0,m=r.p||0,g=r.b||0,y=r.l,w=r.d,C=r.m,L=r.n,I=s*8;do{if(!y){r.f=h=nt(_,m,1);var T=nt(_,m+1,3);if(m+=3,T)if(T==1)y=Lo,w=Ao,C=9,L=5;else if(T==2){var N=nt(_,m,31)+257,Z=nt(_,m+10,15)+4,se=N+nt(_,m+5,31)+1;m+=14;for(var Y=new Ye(se),z=new Ye(19),K=0;K<Z;++K)z[Po[K]]=nt(_,m+K*3,7);m+=Z*3;for(var te=Wi(z),W=(1<<te)-1,ve=Vn(z,te,1),K=0;K<se;){var be=ve[nt(_,m,W)];m+=be&15;var O=be>>>4;if(O<16)Y[K++]=O;else{var ue=0,he=0;for(O==16?(he=3+nt(_,m,3),m+=2,ue=Y[K-1]):O==17?(he=3+nt(_,m,7),m+=3):O==18&&(he=11+nt(_,m,127),m+=7);he--;)Y[K++]=ue}}var we=Y.subarray(0,N),J=Y.subarray(N);C=Wi(we),L=Wi(J),y=Vn(we,C,1),w=Vn(J,L,1)}else throw"invalid block type";else{var O=Vo(m)+4,E=_[O-4]|_[O-3]<<8,G=O+E;if(G>s){if(c)throw"unexpected EOF";break}a&&u(g+E),i.set(_.subarray(O,G),g),r.b=g+=E,r.p=m=G*8;continue}if(m>I){if(c)throw"unexpected EOF";break}}a&&u(g+131072);for(var X=(1<<C)-1,qe=(1<<L)-1,Ce=m;;Ce=m){var ue=y[Ji(_,m)&X],ce=ue>>>4;if(m+=ue&15,m>I){if(c)throw"unexpected EOF";break}if(!ue)throw"invalid length/literal";if(ce<256)i[g++]=ce;else if(ce==256){Ce=m,y=null;break}else{var ee=ce-254;if(ce>264){var K=ce-257,oe=lr[K];ee=nt(_,m,(1<<oe)-1)+hr[K],m+=oe}var $=w[Ji(_,m)&qe],A=$>>>4;if(!$)throw"invalid distance";m+=$&15;var J=So[A];if(A>3){var oe=cr[A];J+=Ji(_,m)&(1<<oe)-1,m+=oe}if(m>I){if(c)throw"unexpected EOF";break}a&&u(g+131072);for(var Me=g+ee;g<Me;g+=4)i[g]=i[g-J],i[g+1]=i[g+1-J],i[g+2]=i[g+2-J],i[g+3]=i[g+3-J];g=Me}}r.l=y,r.p=Ce,r.b=g,y&&(h=1,r.m=C,r.d=w,r.n=L)}while(!h);return g==i.length?i:Io(i,0,g)},To=new Ye(0),Oo=function(_){if((_[0]&15)!=8||_[0]>>>4>7||(_[0]<<8|_[1])%31)throw"invalid zlib data";if(_[1]&32)throw"invalid zlib data: preset dictionaries not supported"};function Eo(_,i){return Do((Oo(_),_.subarray(2,-4)),i)}var No=typeof TextDecoder<"u"&&new TextDecoder,Fo=0;try{No.decode(To,{stream:!0}),Fo=1}catch{}class Bo extends f.Object3D{constructor(i,r){super(),M(this,"isTransformControls",!0),M(this,"visible",!1),M(this,"domElement",void 0),M(this,"raycaster",new f.Raycaster),M(this,"gizmo",void 0),M(this,"plane",void 0),M(this,"tempVector",new f.Vector3),M(this,"tempVector2",new f.Vector3),M(this,"tempQuaternion",new f.Quaternion),M(this,"unit",{X:new f.Vector3(1,0,0),Y:new f.Vector3(0,1,0),Z:new f.Vector3(0,0,1)}),M(this,"pointStart",new f.Vector3),M(this,"pointEnd",new f.Vector3),M(this,"offset",new f.Vector3),M(this,"rotationAxis",new f.Vector3),M(this,"startNorm",new f.Vector3),M(this,"endNorm",new f.Vector3),M(this,"rotationAngle",0),M(this,"cameraPosition",new f.Vector3),M(this,"cameraQuaternion",new f.Quaternion),M(this,"cameraScale",new f.Vector3),M(this,"parentPosition",new f.Vector3),M(this,"parentQuaternion",new f.Quaternion),M(this,"parentQuaternionInv",new f.Quaternion),M(this,"parentScale",new f.Vector3),M(this,"worldPositionStart",new f.Vector3),M(this,"worldQuaternionStart",new f.Quaternion),M(this,"worldScaleStart",new f.Vector3),M(this,"worldPosition",new f.Vector3),M(this,"worldQuaternion",new f.Quaternion),M(this,"worldQuaternionInv",new f.Quaternion),M(this,"worldScale",new f.Vector3),M(this,"eye",new f.Vector3),M(this,"positionStart",new f.Vector3),M(this,"quaternionStart",new f.Quaternion),M(this,"scaleStart",new f.Vector3),M(this,"camera",void 0),M(this,"object",void 0),M(this,"enabled",!0),M(this,"axis",null),M(this,"mode","translate"),M(this,"translationSnap",null),M(this,"rotationSnap",null),M(this,"scaleSnap",null),M(this,"space","world"),M(this,"size",1),M(this,"dragging",!1),M(this,"showX",!0),M(this,"showY",!0),M(this,"showZ",!0),M(this,"changeEvent",{type:"change"}),M(this,"mouseDownEvent",{type:"mouseDown",mode:this.mode}),M(this,"mouseUpEvent",{type:"mouseUp",mode:this.mode}),M(this,"objectChangeEvent",{type:"objectChange"}),M(this,"intersectObjectWithRay",(a,c,u)=>{const h=c.intersectObject(a,!0);for(let m=0;m<h.length;m++)if(h[m].object.visible||u)return h[m];return!1}),M(this,"attach",a=>(this.object=a,this.visible=!0,this)),M(this,"detach",()=>(this.object=void 0,this.visible=!1,this.axis=null,this)),M(this,"reset",()=>this.enabled?(this.dragging&&this.object!==void 0&&(this.object.position.copy(this.positionStart),this.object.quaternion.copy(this.quaternionStart),this.object.scale.copy(this.scaleStart),this.dispatchEvent(this.changeEvent),this.dispatchEvent(this.objectChangeEvent),this.pointStart.copy(this.pointEnd)),this):this),M(this,"updateMatrixWorld",()=>{this.object!==void 0&&(this.object.updateMatrixWorld(),this.object.parent===null?console.error("TransformControls: The attached 3D object must be a part of the scene graph."):this.object.parent.matrixWorld.decompose(this.parentPosition,this.parentQuaternion,this.parentScale),this.object.matrixWorld.decompose(this.worldPosition,this.worldQuaternion,this.worldScale),this.parentQuaternionInv.copy(this.parentQuaternion).invert(),this.worldQuaternionInv.copy(this.worldQuaternion).invert()),this.camera.updateMatrixWorld(),this.camera.matrixWorld.decompose(this.cameraPosition,this.cameraQuaternion,this.cameraScale),this.eye.copy(this.cameraPosition).sub(this.worldPosition).normalize(),super.updateMatrixWorld()}),M(this,"pointerHover",a=>{if(this.object===void 0||this.dragging===!0)return;this.raycaster.setFromCamera(a,this.camera);const c=this.intersectObjectWithRay(this.gizmo.picker[this.mode],this.raycaster);c?this.axis=c.object.name:this.axis=null}),M(this,"pointerDown",a=>{if(!(this.object===void 0||this.dragging===!0||a.button!==0)&&this.axis!==null){this.raycaster.setFromCamera(a,this.camera);const c=this.intersectObjectWithRay(this.plane,this.raycaster,!0);if(c){let u=this.space;if(this.mode==="scale"?u="local":(this.axis==="E"||this.axis==="XYZE"||this.axis==="XYZ")&&(u="world"),u==="local"&&this.mode==="rotate"){const h=this.rotationSnap;this.axis==="X"&&h&&(this.object.rotation.x=Math.round(this.object.rotation.x/h)*h),this.axis==="Y"&&h&&(this.object.rotation.y=Math.round(this.object.rotation.y/h)*h),this.axis==="Z"&&h&&(this.object.rotation.z=Math.round(this.object.rotation.z/h)*h)}this.object.updateMatrixWorld(),this.object.parent&&this.object.parent.updateMatrixWorld(),this.positionStart.copy(this.object.position),this.quaternionStart.copy(this.object.quaternion),this.scaleStart.copy(this.object.scale),this.object.matrixWorld.decompose(this.worldPositionStart,this.worldQuaternionStart,this.worldScaleStart),this.pointStart.copy(c.point).sub(this.worldPositionStart)}this.dragging=!0,this.mouseDownEvent.mode=this.mode,this.dispatchEvent(this.mouseDownEvent)}}),M(this,"pointerMove",a=>{const c=this.axis,u=this.mode,h=this.object;let m=this.space;if(u==="scale"?m="local":(c==="E"||c==="XYZE"||c==="XYZ")&&(m="world"),h===void 0||c===null||this.dragging===!1||a.button!==-1)return;this.raycaster.setFromCamera(a,this.camera);const g=this.intersectObjectWithRay(this.plane,this.raycaster,!0);if(g){if(this.pointEnd.copy(g.point).sub(this.worldPositionStart),u==="translate")this.offset.copy(this.pointEnd).sub(this.pointStart),m==="local"&&c!=="XYZ"&&this.offset.applyQuaternion(this.worldQuaternionInv),c.indexOf("X")===-1&&(this.offset.x=0),c.indexOf("Y")===-1&&(this.offset.y=0),c.indexOf("Z")===-1&&(this.offset.z=0),m==="local"&&c!=="XYZ"?this.offset.applyQuaternion(this.quaternionStart).divide(this.parentScale):this.offset.applyQuaternion(this.parentQuaternionInv).divide(this.parentScale),h.position.copy(this.offset).add(this.positionStart),this.translationSnap&&(m==="local"&&(h.position.applyQuaternion(this.tempQuaternion.copy(this.quaternionStart).invert()),c.search("X")!==-1&&(h.position.x=Math.round(h.position.x/this.translationSnap)*this.translationSnap),c.search("Y")!==-1&&(h.position.y=Math.round(h.position.y/this.translationSnap)*this.translationSnap),c.search("Z")!==-1&&(h.position.z=Math.round(h.position.z/this.translationSnap)*this.translationSnap),h.position.applyQuaternion(this.quaternionStart)),m==="world"&&(h.parent&&h.position.add(this.tempVector.setFromMatrixPosition(h.parent.matrixWorld)),c.search("X")!==-1&&(h.position.x=Math.round(h.position.x/this.translationSnap)*this.translationSnap),c.search("Y")!==-1&&(h.position.y=Math.round(h.position.y/this.translationSnap)*this.translationSnap),c.search("Z")!==-1&&(h.position.z=Math.round(h.position.z/this.translationSnap)*this.translationSnap),h.parent&&h.position.sub(this.tempVector.setFromMatrixPosition(h.parent.matrixWorld))));else if(u==="scale"){if(c.search("XYZ")!==-1){let y=this.pointEnd.length()/this.pointStart.length();this.pointEnd.dot(this.pointStart)<0&&(y*=-1),this.tempVector2.set(y,y,y)}else this.tempVector.copy(this.pointStart),this.tempVector2.copy(this.pointEnd),this.tempVector.applyQuaternion(this.worldQuaternionInv),this.tempVector2.applyQuaternion(this.worldQuaternionInv),this.tempVector2.divide(this.tempVector),c.search("X")===-1&&(this.tempVector2.x=1),c.search("Y")===-1&&(this.tempVector2.y=1),c.search("Z")===-1&&(this.tempVector2.z=1);h.scale.copy(this.scaleStart).multiply(this.tempVector2),this.scaleSnap&&this.object&&(c.search("X")!==-1&&(this.object.scale.x=Math.round(h.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap),c.search("Y")!==-1&&(h.scale.y=Math.round(h.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap),c.search("Z")!==-1&&(h.scale.z=Math.round(h.scale.z/this.scaleSnap)*this.scaleSnap||this.scaleSnap))}else if(u==="rotate"){this.offset.copy(this.pointEnd).sub(this.pointStart);const y=20/this.worldPosition.distanceTo(this.tempVector.setFromMatrixPosition(this.camera.matrixWorld));c==="E"?(this.rotationAxis.copy(this.eye),this.rotationAngle=this.pointEnd.angleTo(this.pointStart),this.startNorm.copy(this.pointStart).normalize(),this.endNorm.copy(this.pointEnd).normalize(),this.rotationAngle*=this.endNorm.cross(this.startNorm).dot(this.eye)<0?1:-1):c==="XYZE"?(this.rotationAxis.copy(this.offset).cross(this.eye).normalize(),this.rotationAngle=this.offset.dot(this.tempVector.copy(this.rotationAxis).cross(this.eye))*y):(c==="X"||c==="Y"||c==="Z")&&(this.rotationAxis.copy(this.unit[c]),this.tempVector.copy(this.unit[c]),m==="local"&&this.tempVector.applyQuaternion(this.worldQuaternion),this.rotationAngle=this.offset.dot(this.tempVector.cross(this.eye).normalize())*y),this.rotationSnap&&(this.rotationAngle=Math.round(this.rotationAngle/this.rotationSnap)*this.rotationSnap),m==="local"&&c!=="E"&&c!=="XYZE"?(h.quaternion.copy(this.quaternionStart),h.quaternion.multiply(this.tempQuaternion.setFromAxisAngle(this.rotationAxis,this.rotationAngle)).normalize()):(this.rotationAxis.applyQuaternion(this.parentQuaternionInv),h.quaternion.copy(this.tempQuaternion.setFromAxisAngle(this.rotationAxis,this.rotationAngle)),h.quaternion.multiply(this.quaternionStart).normalize())}this.dispatchEvent(this.changeEvent),this.dispatchEvent(this.objectChangeEvent)}}),M(this,"pointerUp",a=>{a.button===0&&(this.dragging&&this.axis!==null&&(this.mouseUpEvent.mode=this.mode,this.dispatchEvent(this.mouseUpEvent)),this.dragging=!1,this.axis=null)}),M(this,"getPointer",a=>{var c;if(this.domElement&&(c=this.domElement.ownerDocument)!==null&&c!==void 0&&c.pointerLockElement)return{x:0,y:0,button:a.button};{var u;const h=a.changedTouches?a.changedTouches[0]:a,m=(u=this.domElement)===null||u===void 0?void 0:u.getBoundingClientRect();return{x:(h.clientX-m.left)/m.width*2-1,y:-(h.clientY-m.top)/m.height*2+1,button:a.button}}}),M(this,"onPointerHover",a=>{if(this.enabled)switch(a.pointerType){case"mouse":case"pen":this.pointerHover(this.getPointer(a));break}}),M(this,"onPointerDown",a=>{!this.enabled||!this.domElement||(this.domElement.style.touchAction="none",this.domElement.ownerDocument.addEventListener("pointermove",this.onPointerMove),this.pointerHover(this.getPointer(a)),this.pointerDown(this.getPointer(a)))}),M(this,"onPointerMove",a=>{this.enabled&&this.pointerMove(this.getPointer(a))}),M(this,"onPointerUp",a=>{!this.enabled||!this.domElement||(this.domElement.style.touchAction="",this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.pointerUp(this.getPointer(a)))}),M(this,"getMode",()=>this.mode),M(this,"setMode",a=>{this.mode=a}),M(this,"setTranslationSnap",a=>{this.translationSnap=a}),M(this,"setRotationSnap",a=>{this.rotationSnap=a}),M(this,"setScaleSnap",a=>{this.scaleSnap=a}),M(this,"setSize",a=>{this.size=a}),M(this,"setSpace",a=>{this.space=a}),M(this,"update",()=>{console.warn("THREE.TransformControls: update function has no more functionality and therefore has been deprecated.")}),M(this,"connect",a=>{a===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),this.domElement=a,this.domElement.addEventListener("pointerdown",this.onPointerDown),this.domElement.addEventListener("pointermove",this.onPointerHover),this.domElement.ownerDocument.addEventListener("pointerup",this.onPointerUp)}),M(this,"dispose",()=>{var a,c,u,h,m,g;(a=this.domElement)===null||a===void 0||a.removeEventListener("pointerdown",this.onPointerDown),(c=this.domElement)===null||c===void 0||c.removeEventListener("pointermove",this.onPointerHover),(u=this.domElement)===null||u===void 0||(h=u.ownerDocument)===null||h===void 0||h.removeEventListener("pointermove",this.onPointerMove),(m=this.domElement)===null||m===void 0||(g=m.ownerDocument)===null||g===void 0||g.removeEventListener("pointerup",this.onPointerUp),this.traverse(y=>{const w=y;w.geometry&&w.geometry.dispose(),w.material&&w.material.dispose()})}),this.domElement=r,this.camera=i,this.gizmo=new jo,this.add(this.gizmo),this.plane=new zo,this.add(this.plane);const s=(a,c)=>{let u=c;Object.defineProperty(this,a,{get:function(){return u!==void 0?u:c},set:function(h){u!==h&&(u=h,this.plane[a]=h,this.gizmo[a]=h,this.dispatchEvent({type:a+"-changed",value:h}),this.dispatchEvent(this.changeEvent))}}),this[a]=c,this.plane[a]=c,this.gizmo[a]=c};s("camera",this.camera),s("object",this.object),s("enabled",this.enabled),s("axis",this.axis),s("mode",this.mode),s("translationSnap",this.translationSnap),s("rotationSnap",this.rotationSnap),s("scaleSnap",this.scaleSnap),s("space",this.space),s("size",this.size),s("dragging",this.dragging),s("showX",this.showX),s("showY",this.showY),s("showZ",this.showZ),s("worldPosition",this.worldPosition),s("worldPositionStart",this.worldPositionStart),s("worldQuaternion",this.worldQuaternion),s("worldQuaternionStart",this.worldQuaternionStart),s("cameraPosition",this.cameraPosition),s("cameraQuaternion",this.cameraQuaternion),s("pointStart",this.pointStart),s("pointEnd",this.pointEnd),s("rotationAxis",this.rotationAxis),s("rotationAngle",this.rotationAngle),s("eye",this.eye),r!==void 0&&this.connect(r)}}class jo extends f.Object3D{constructor(){super(),M(this,"isTransformControlsGizmo",!0),M(this,"type","TransformControlsGizmo"),M(this,"tempVector",new f.Vector3(0,0,0)),M(this,"tempEuler",new f.Euler),M(this,"alignVector",new f.Vector3(0,1,0)),M(this,"zeroVector",new f.Vector3(0,0,0)),M(this,"lookAtMatrix",new f.Matrix4),M(this,"tempQuaternion",new f.Quaternion),M(this,"tempQuaternion2",new f.Quaternion),M(this,"identityQuaternion",new f.Quaternion),M(this,"unitX",new f.Vector3(1,0,0)),M(this,"unitY",new f.Vector3(0,1,0)),M(this,"unitZ",new f.Vector3(0,0,1)),M(this,"gizmo",void 0),M(this,"picker",void 0),M(this,"helper",void 0),M(this,"rotationAxis",new f.Vector3),M(this,"cameraPosition",new f.Vector3),M(this,"worldPositionStart",new f.Vector3),M(this,"worldQuaternionStart",new f.Quaternion),M(this,"worldPosition",new f.Vector3),M(this,"worldQuaternion",new f.Quaternion),M(this,"eye",new f.Vector3),M(this,"camera",null),M(this,"enabled",!0),M(this,"axis",null),M(this,"mode","translate"),M(this,"space","world"),M(this,"size",1),M(this,"dragging",!1),M(this,"showX",!0),M(this,"showY",!0),M(this,"showZ",!0),M(this,"updateMatrixWorld",()=>{let ce=this.space;this.mode==="scale"&&(ce="local");const ee=ce==="local"?this.worldQuaternion:this.identityQuaternion;this.gizmo.translate.visible=this.mode==="translate",this.gizmo.rotate.visible=this.mode==="rotate",this.gizmo.scale.visible=this.mode==="scale",this.helper.translate.visible=this.mode==="translate",this.helper.rotate.visible=this.mode==="rotate",this.helper.scale.visible=this.mode==="scale";let oe=[];oe=oe.concat(this.picker[this.mode].children),oe=oe.concat(this.gizmo[this.mode].children),oe=oe.concat(this.helper[this.mode].children);for(let $=0;$<oe.length;$++){const A=oe[$];A.visible=!0,A.rotation.set(0,0,0),A.position.copy(this.worldPosition);let Me;if(this.camera.isOrthographicCamera?Me=(this.camera.top-this.camera.bottom)/this.camera.zoom:Me=this.worldPosition.distanceTo(this.cameraPosition)*Math.min(1.9*Math.tan(Math.PI*this.camera.fov/360)/this.camera.zoom,7),A.scale.set(1,1,1).multiplyScalar(Me*this.size/7),A.tag==="helper"){A.visible=!1,A.name==="AXIS"?(A.position.copy(this.worldPositionStart),A.visible=!!this.axis,this.axis==="X"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,0)),A.quaternion.copy(ee).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(ee).dot(this.eye))>.9&&(A.visible=!1)),this.axis==="Y"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,Math.PI/2)),A.quaternion.copy(ee).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(ee).dot(this.eye))>.9&&(A.visible=!1)),this.axis==="Z"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0)),A.quaternion.copy(ee).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(ee).dot(this.eye))>.9&&(A.visible=!1)),this.axis==="XYZE"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0)),this.alignVector.copy(this.rotationAxis),A.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.zeroVector,this.alignVector,this.unitY)),A.quaternion.multiply(this.tempQuaternion),A.visible=this.dragging),this.axis==="E"&&(A.visible=!1)):A.name==="START"?(A.position.copy(this.worldPositionStart),A.visible=this.dragging):A.name==="END"?(A.position.copy(this.worldPosition),A.visible=this.dragging):A.name==="DELTA"?(A.position.copy(this.worldPositionStart),A.quaternion.copy(this.worldQuaternionStart),this.tempVector.set(1e-10,1e-10,1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1),this.tempVector.applyQuaternion(this.worldQuaternionStart.clone().invert()),A.scale.copy(this.tempVector),A.visible=this.dragging):(A.quaternion.copy(ee),this.dragging?A.position.copy(this.worldPositionStart):A.position.copy(this.worldPosition),this.axis&&(A.visible=this.axis.search(A.name)!==-1));continue}A.quaternion.copy(ee),this.mode==="translate"||this.mode==="scale"?((A.name==="X"||A.name==="XYZX")&&Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(ee).dot(this.eye))>.99&&(A.scale.set(1e-10,1e-10,1e-10),A.visible=!1),(A.name==="Y"||A.name==="XYZY")&&Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(ee).dot(this.eye))>.99&&(A.scale.set(1e-10,1e-10,1e-10),A.visible=!1),(A.name==="Z"||A.name==="XYZZ")&&Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(ee).dot(this.eye))>.99&&(A.scale.set(1e-10,1e-10,1e-10),A.visible=!1),A.name==="XY"&&Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(ee).dot(this.eye))<.2&&(A.scale.set(1e-10,1e-10,1e-10),A.visible=!1),A.name==="YZ"&&Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(ee).dot(this.eye))<.2&&(A.scale.set(1e-10,1e-10,1e-10),A.visible=!1),A.name==="XZ"&&Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(ee).dot(this.eye))<.2&&(A.scale.set(1e-10,1e-10,1e-10),A.visible=!1),A.name.search("X")!==-1&&(this.alignVector.copy(this.unitX).applyQuaternion(ee).dot(this.eye)<0?A.tag==="fwd"?A.visible=!1:A.scale.x*=-1:A.tag==="bwd"&&(A.visible=!1)),A.name.search("Y")!==-1&&(this.alignVector.copy(this.unitY).applyQuaternion(ee).dot(this.eye)<0?A.tag==="fwd"?A.visible=!1:A.scale.y*=-1:A.tag==="bwd"&&(A.visible=!1)),A.name.search("Z")!==-1&&(this.alignVector.copy(this.unitZ).applyQuaternion(ee).dot(this.eye)<0?A.tag==="fwd"?A.visible=!1:A.scale.z*=-1:A.tag==="bwd"&&(A.visible=!1))):this.mode==="rotate"&&(this.tempQuaternion2.copy(ee),this.alignVector.copy(this.eye).applyQuaternion(this.tempQuaternion.copy(ee).invert()),A.name.search("E")!==-1&&A.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.eye,this.zeroVector,this.unitY)),A.name==="X"&&(this.tempQuaternion.setFromAxisAngle(this.unitX,Math.atan2(-this.alignVector.y,this.alignVector.z)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),A.quaternion.copy(this.tempQuaternion)),A.name==="Y"&&(this.tempQuaternion.setFromAxisAngle(this.unitY,Math.atan2(this.alignVector.x,this.alignVector.z)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),A.quaternion.copy(this.tempQuaternion)),A.name==="Z"&&(this.tempQuaternion.setFromAxisAngle(this.unitZ,Math.atan2(this.alignVector.y,this.alignVector.x)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),A.quaternion.copy(this.tempQuaternion))),A.visible=A.visible&&(A.name.indexOf("X")===-1||this.showX),A.visible=A.visible&&(A.name.indexOf("Y")===-1||this.showY),A.visible=A.visible&&(A.name.indexOf("Z")===-1||this.showZ),A.visible=A.visible&&(A.name.indexOf("E")===-1||this.showX&&this.showY&&this.showZ),A.material.tempOpacity=A.material.tempOpacity||A.material.opacity,A.material.tempColor=A.material.tempColor||A.material.color.clone(),A.material.color.copy(A.material.tempColor),A.material.opacity=A.material.tempOpacity,this.enabled?this.axis&&(A.name===this.axis?(A.material.opacity=1,A.material.color.lerp(new f.Color(1,1,1),.5)):this.axis.split("").some(function(ke){return A.name===ke})?(A.material.opacity=1,A.material.color.lerp(new f.Color(1,1,1),.5)):(A.material.opacity*=.25,A.material.color.lerp(new f.Color(1,1,1),.5))):(A.material.opacity*=.5,A.material.color.lerp(new f.Color(1,1,1),.5))}super.updateMatrixWorld()});const i=new f.MeshBasicMaterial({depthTest:!1,depthWrite:!1,transparent:!0,side:f.DoubleSide,fog:!1,toneMapped:!1}),r=new f.LineBasicMaterial({depthTest:!1,depthWrite:!1,transparent:!0,linewidth:1,fog:!1,toneMapped:!1}),s=i.clone();s.opacity=.15;const a=i.clone();a.opacity=.33;const c=i.clone();c.color.set(16711680);const u=i.clone();u.color.set(65280);const h=i.clone();h.color.set(255);const m=i.clone();m.opacity=.25;const g=m.clone();g.color.set(16776960);const y=m.clone();y.color.set(65535);const w=m.clone();w.color.set(16711935),i.clone().color.set(16776960);const L=r.clone();L.color.set(16711680);const I=r.clone();I.color.set(65280);const T=r.clone();T.color.set(255);const O=r.clone();O.color.set(65535);const E=r.clone();E.color.set(16711935);const G=r.clone();G.color.set(16776960);const N=r.clone();N.color.set(7895160);const Z=G.clone();Z.opacity=.25;const se=new f.CylinderGeometry(0,.05,.2,12,1,!1),Y=new f.BoxGeometry(.125,.125,.125),z=new f.BufferGeometry;z.setAttribute("position",new f.Float32BufferAttribute([0,0,0,1,0,0],3));const K=(ce,ee)=>{const oe=new f.BufferGeometry,$=[];for(let A=0;A<=64*ee;++A)$.push(0,Math.cos(A/32*Math.PI)*ce,Math.sin(A/32*Math.PI)*ce);return oe.setAttribute("position",new f.Float32BufferAttribute($,3)),oe},te=()=>{const ce=new f.BufferGeometry;return ce.setAttribute("position",new f.Float32BufferAttribute([0,0,0,1,1,1],3)),ce},W={X:[[new f.Mesh(se,c),[1,0,0],[0,0,-Math.PI/2],null,"fwd"],[new f.Mesh(se,c),[1,0,0],[0,0,Math.PI/2],null,"bwd"],[new f.Line(z,L)]],Y:[[new f.Mesh(se,u),[0,1,0],null,null,"fwd"],[new f.Mesh(se,u),[0,1,0],[Math.PI,0,0],null,"bwd"],[new f.Line(z,I),null,[0,0,Math.PI/2]]],Z:[[new f.Mesh(se,h),[0,0,1],[Math.PI/2,0,0],null,"fwd"],[new f.Mesh(se,h),[0,0,1],[-Math.PI/2,0,0],null,"bwd"],[new f.Line(z,T),null,[0,-Math.PI/2,0]]],XYZ:[[new f.Mesh(new f.OctahedronGeometry(.1,0),m.clone()),[0,0,0],[0,0,0]]],XY:[[new f.Mesh(new f.PlaneGeometry(.295,.295),g.clone()),[.15,.15,0]],[new f.Line(z,G),[.18,.3,0],null,[.125,1,1]],[new f.Line(z,G),[.3,.18,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new f.Mesh(new f.PlaneGeometry(.295,.295),y.clone()),[0,.15,.15],[0,Math.PI/2,0]],[new f.Line(z,O),[0,.18,.3],[0,0,Math.PI/2],[.125,1,1]],[new f.Line(z,O),[0,.3,.18],[0,-Math.PI/2,0],[.125,1,1]]],XZ:[[new f.Mesh(new f.PlaneGeometry(.295,.295),w.clone()),[.15,0,.15],[-Math.PI/2,0,0]],[new f.Line(z,E),[.18,0,.3],null,[.125,1,1]],[new f.Line(z,E),[.3,0,.18],[0,-Math.PI/2,0],[.125,1,1]]]},ve={X:[[new f.Mesh(new f.CylinderGeometry(.2,0,1,4,1,!1),s),[.6,0,0],[0,0,-Math.PI/2]]],Y:[[new f.Mesh(new f.CylinderGeometry(.2,0,1,4,1,!1),s),[0,.6,0]]],Z:[[new f.Mesh(new f.CylinderGeometry(.2,0,1,4,1,!1),s),[0,0,.6],[Math.PI/2,0,0]]],XYZ:[[new f.Mesh(new f.OctahedronGeometry(.2,0),s)]],XY:[[new f.Mesh(new f.PlaneGeometry(.4,.4),s),[.2,.2,0]]],YZ:[[new f.Mesh(new f.PlaneGeometry(.4,.4),s),[0,.2,.2],[0,Math.PI/2,0]]],XZ:[[new f.Mesh(new f.PlaneGeometry(.4,.4),s),[.2,0,.2],[-Math.PI/2,0,0]]]},be={START:[[new f.Mesh(new f.OctahedronGeometry(.01,2),a),null,null,null,"helper"]],END:[[new f.Mesh(new f.OctahedronGeometry(.01,2),a),null,null,null,"helper"]],DELTA:[[new f.Line(te(),a),null,null,null,"helper"]],X:[[new f.Line(z,a.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new f.Line(z,a.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new f.Line(z,a.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},ue={X:[[new f.Line(K(1,.5),L)],[new f.Mesh(new f.OctahedronGeometry(.04,0),c),[0,0,.99],null,[1,3,1]]],Y:[[new f.Line(K(1,.5),I),null,[0,0,-Math.PI/2]],[new f.Mesh(new f.OctahedronGeometry(.04,0),u),[0,0,.99],null,[3,1,1]]],Z:[[new f.Line(K(1,.5),T),null,[0,Math.PI/2,0]],[new f.Mesh(new f.OctahedronGeometry(.04,0),h),[.99,0,0],null,[1,3,1]]],E:[[new f.Line(K(1.25,1),Z),null,[0,Math.PI/2,0]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),Z),[1.17,0,0],[0,0,-Math.PI/2],[1,1,.001]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),Z),[-1.17,0,0],[0,0,Math.PI/2],[1,1,.001]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),Z),[0,-1.17,0],[Math.PI,0,0],[1,1,.001]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),Z),[0,1.17,0],[0,0,0],[1,1,.001]]],XYZE:[[new f.Line(K(1,1),N),null,[0,Math.PI/2,0]]]},he={AXIS:[[new f.Line(z,a.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]]},we={X:[[new f.Mesh(new f.TorusGeometry(1,.1,4,24),s),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],Y:[[new f.Mesh(new f.TorusGeometry(1,.1,4,24),s),[0,0,0],[Math.PI/2,0,0]]],Z:[[new f.Mesh(new f.TorusGeometry(1,.1,4,24),s),[0,0,0],[0,0,-Math.PI/2]]],E:[[new f.Mesh(new f.TorusGeometry(1.25,.1,2,24),s)]],XYZE:[[new f.Mesh(new f.SphereGeometry(.7,10,8),s)]]},J={X:[[new f.Mesh(Y,c),[.8,0,0],[0,0,-Math.PI/2]],[new f.Line(z,L),null,null,[.8,1,1]]],Y:[[new f.Mesh(Y,u),[0,.8,0]],[new f.Line(z,I),null,[0,0,Math.PI/2],[.8,1,1]]],Z:[[new f.Mesh(Y,h),[0,0,.8],[Math.PI/2,0,0]],[new f.Line(z,T),null,[0,-Math.PI/2,0],[.8,1,1]]],XY:[[new f.Mesh(Y,g),[.85,.85,0],null,[2,2,.2]],[new f.Line(z,G),[.855,.98,0],null,[.125,1,1]],[new f.Line(z,G),[.98,.855,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new f.Mesh(Y,y),[0,.85,.85],null,[.2,2,2]],[new f.Line(z,O),[0,.855,.98],[0,0,Math.PI/2],[.125,1,1]],[new f.Line(z,O),[0,.98,.855],[0,-Math.PI/2,0],[.125,1,1]]],XZ:[[new f.Mesh(Y,w),[.85,0,.85],null,[2,.2,2]],[new f.Line(z,E),[.855,0,.98],null,[.125,1,1]],[new f.Line(z,E),[.98,0,.855],[0,-Math.PI/2,0],[.125,1,1]]],XYZX:[[new f.Mesh(new f.BoxGeometry(.125,.125,.125),m.clone()),[1.1,0,0]]],XYZY:[[new f.Mesh(new f.BoxGeometry(.125,.125,.125),m.clone()),[0,1.1,0]]],XYZZ:[[new f.Mesh(new f.BoxGeometry(.125,.125,.125),m.clone()),[0,0,1.1]]]},X={X:[[new f.Mesh(new f.CylinderGeometry(.2,0,.8,4,1,!1),s),[.5,0,0],[0,0,-Math.PI/2]]],Y:[[new f.Mesh(new f.CylinderGeometry(.2,0,.8,4,1,!1),s),[0,.5,0]]],Z:[[new f.Mesh(new f.CylinderGeometry(.2,0,.8,4,1,!1),s),[0,0,.5],[Math.PI/2,0,0]]],XY:[[new f.Mesh(Y,s),[.85,.85,0],null,[3,3,.2]]],YZ:[[new f.Mesh(Y,s),[0,.85,.85],null,[.2,3,3]]],XZ:[[new f.Mesh(Y,s),[.85,0,.85],null,[3,.2,3]]],XYZX:[[new f.Mesh(new f.BoxGeometry(.2,.2,.2),s),[1.1,0,0]]],XYZY:[[new f.Mesh(new f.BoxGeometry(.2,.2,.2),s),[0,1.1,0]]],XYZZ:[[new f.Mesh(new f.BoxGeometry(.2,.2,.2),s),[0,0,1.1]]]},qe={X:[[new f.Line(z,a.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new f.Line(z,a.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new f.Line(z,a.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},Ce=ce=>{const ee=new f.Object3D;for(let oe in ce)for(let $=ce[oe].length;$--;){const A=ce[oe][$][0].clone(),Me=ce[oe][$][1],ke=ce[oe][$][2],Ve=ce[oe][$][3],Re=ce[oe][$][4];A.name=oe,A.tag=Re,Me&&A.position.set(Me[0],Me[1],Me[2]),ke&&A.rotation.set(ke[0],ke[1],ke[2]),Ve&&A.scale.set(Ve[0],Ve[1],Ve[2]),A.updateMatrix();const Se=A.geometry.clone();Se.applyMatrix4(A.matrix),A.geometry=Se,A.renderOrder=1/0,A.position.set(0,0,0),A.rotation.set(0,0,0),A.scale.set(1,1,1),ee.add(A)}return ee};this.gizmo={},this.picker={},this.helper={},this.add(this.gizmo.translate=Ce(W)),this.add(this.gizmo.rotate=Ce(ue)),this.add(this.gizmo.scale=Ce(J)),this.add(this.picker.translate=Ce(ve)),this.add(this.picker.rotate=Ce(we)),this.add(this.picker.scale=Ce(X)),this.add(this.helper.translate=Ce(be)),this.add(this.helper.rotate=Ce(he)),this.add(this.helper.scale=Ce(qe)),this.picker.translate.visible=!1,this.picker.rotate.visible=!1,this.picker.scale.visible=!1}}class zo extends f.Mesh{constructor(){super(new f.PlaneGeometry(1e5,1e5,2,2),new f.MeshBasicMaterial({visible:!1,wireframe:!0,side:f.DoubleSide,transparent:!0,opacity:.1,toneMapped:!1})),M(this,"isTransformControlsPlane",!0),M(this,"type","TransformControlsPlane"),M(this,"unitX",new f.Vector3(1,0,0)),M(this,"unitY",new f.Vector3(0,1,0)),M(this,"unitZ",new f.Vector3(0,0,1)),M(this,"tempVector",new f.Vector3),M(this,"dirVector",new f.Vector3),M(this,"alignVector",new f.Vector3),M(this,"tempMatrix",new f.Matrix4),M(this,"identityQuaternion",new f.Quaternion),M(this,"cameraQuaternion",new f.Quaternion),M(this,"worldPosition",new f.Vector3),M(this,"worldQuaternion",new f.Quaternion),M(this,"eye",new f.Vector3),M(this,"axis",null),M(this,"mode","translate"),M(this,"space","world"),M(this,"updateMatrixWorld",()=>{let i=this.space;switch(this.position.copy(this.worldPosition),this.mode==="scale"&&(i="local"),this.unitX.set(1,0,0).applyQuaternion(i==="local"?this.worldQuaternion:this.identityQuaternion),this.unitY.set(0,1,0).applyQuaternion(i==="local"?this.worldQuaternion:this.identityQuaternion),this.unitZ.set(0,0,1).applyQuaternion(i==="local"?this.worldQuaternion:this.identityQuaternion),this.alignVector.copy(this.unitY),this.mode){case"translate":case"scale":switch(this.axis){case"X":this.alignVector.copy(this.eye).cross(this.unitX),this.dirVector.copy(this.unitX).cross(this.alignVector);break;case"Y":this.alignVector.copy(this.eye).cross(this.unitY),this.dirVector.copy(this.unitY).cross(this.alignVector);break;case"Z":this.alignVector.copy(this.eye).cross(this.unitZ),this.dirVector.copy(this.unitZ).cross(this.alignVector);break;case"XY":this.dirVector.copy(this.unitZ);break;case"YZ":this.dirVector.copy(this.unitX);break;case"XZ":this.alignVector.copy(this.unitZ),this.dirVector.copy(this.unitY);break;case"XYZ":case"E":this.dirVector.set(0,0,0);break}break;case"rotate":default:this.dirVector.set(0,0,0)}this.dirVector.length()===0?this.quaternion.copy(this.cameraQuaternion):(this.tempMatrix.lookAt(this.tempVector.set(0,0,0),this.dirVector,this.alignVector),this.quaternion.setFromRotationMatrix(this.tempMatrix)),super.updateMatrixWorld()})}}const mr=(_,i)=>(_%i+i)%i;class Uo extends f.EventDispatcher{constructor(i,r){super(),M(this,"object",void 0),M(this,"domElement",void 0),M(this,"enabled",!0),M(this,"target",new f.Vector3),M(this,"minDistance",0),M(this,"maxDistance",1/0),M(this,"minZoom",0),M(this,"maxZoom",1/0),M(this,"minPolarAngle",0),M(this,"maxPolarAngle",Math.PI),M(this,"minAzimuthAngle",-1/0),M(this,"maxAzimuthAngle",1/0),M(this,"enableDamping",!1),M(this,"dampingFactor",.05),M(this,"enableZoom",!0),M(this,"zoomSpeed",1),M(this,"enableRotate",!0),M(this,"rotateSpeed",1),M(this,"enablePan",!0),M(this,"panSpeed",1),M(this,"screenSpacePanning",!0),M(this,"keyPanSpeed",7),M(this,"autoRotate",!1),M(this,"autoRotateSpeed",2),M(this,"reverseOrbit",!1),M(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),M(this,"mouseButtons",{LEFT:f.MOUSE.ROTATE,MIDDLE:f.MOUSE.DOLLY,RIGHT:f.MOUSE.PAN}),M(this,"touches",{ONE:f.TOUCH.ROTATE,TWO:f.TOUCH.DOLLY_PAN}),M(this,"target0",void 0),M(this,"position0",void 0),M(this,"zoom0",void 0),M(this,"_domElementKeyEvents",null),M(this,"getPolarAngle",void 0),M(this,"getAzimuthalAngle",void 0),M(this,"setPolarAngle",void 0),M(this,"setAzimuthalAngle",void 0),M(this,"getDistance",void 0),M(this,"listenToKeyEvents",void 0),M(this,"saveState",void 0),M(this,"reset",void 0),M(this,"update",void 0),M(this,"connect",void 0),M(this,"dispose",void 0),this.object=i,this.domElement=r,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object instanceof f.PerspectiveCamera?this.object.zoom:1,this.getPolarAngle=()=>y.phi,this.getAzimuthalAngle=()=>y.theta,this.setPolarAngle=V=>{let j=mr(V,2*Math.PI),Q=y.phi;Q<0&&(Q+=2*Math.PI),j<0&&(j+=2*Math.PI);let re=Math.abs(j-Q);2*Math.PI-re<re&&(j<Q?j+=2*Math.PI:Q+=2*Math.PI),w.phi=j-Q,s.update()},this.setAzimuthalAngle=V=>{let j=mr(V,2*Math.PI),Q=y.theta;Q<0&&(Q+=2*Math.PI),j<0&&(j+=2*Math.PI);let re=Math.abs(j-Q);2*Math.PI-re<re&&(j<Q?j+=2*Math.PI:Q+=2*Math.PI),w.theta=j-Q,s.update()},this.getDistance=()=>s.object.position.distanceTo(s.target),this.listenToKeyEvents=V=>{V.addEventListener("keydown",ut),this._domElementKeyEvents=V},this.saveState=()=>{s.target0.copy(s.target),s.position0.copy(s.object.position),s.zoom0=s.object instanceof f.PerspectiveCamera?s.object.zoom:1},this.reset=()=>{s.target.copy(s.target0),s.object.position.copy(s.position0),s.object instanceof f.PerspectiveCamera&&(s.object.zoom=s.zoom0,s.object.updateProjectionMatrix()),s.dispatchEvent(a),s.update(),m=h.NONE},this.update=(()=>{const V=new f.Vector3,j=new f.Quaternion().setFromUnitVectors(i.up,new f.Vector3(0,1,0)),Q=j.clone().invert(),re=new f.Vector3,_e=new f.Quaternion,je=2*Math.PI;return function(){const dn=s.object.position;V.copy(dn).sub(s.target),V.applyQuaternion(j),y.setFromVector3(V),s.autoRotate&&m===h.NONE&&be(W()),s.enableDamping?(y.theta+=w.theta*s.dampingFactor,y.phi+=w.phi*s.dampingFactor):(y.theta+=w.theta,y.phi+=w.phi);let Te=s.minAzimuthAngle,Oe=s.maxAzimuthAngle;return isFinite(Te)&&isFinite(Oe)&&(Te<-Math.PI?Te+=je:Te>Math.PI&&(Te-=je),Oe<-Math.PI?Oe+=je:Oe>Math.PI&&(Oe-=je),Te<=Oe?y.theta=Math.max(Te,Math.min(Oe,y.theta)):y.theta=y.theta>(Te+Oe)/2?Math.max(Te,y.theta):Math.min(Oe,y.theta)),y.phi=Math.max(s.minPolarAngle,Math.min(s.maxPolarAngle,y.phi)),y.makeSafe(),y.radius*=C,y.radius=Math.max(s.minDistance,Math.min(s.maxDistance,y.radius)),s.enableDamping===!0?s.target.addScaledVector(L,s.dampingFactor):s.target.add(L),V.setFromSpherical(y),V.applyQuaternion(Q),dn.copy(s.target).add(V),s.object.lookAt(s.target),s.enableDamping===!0?(w.theta*=1-s.dampingFactor,w.phi*=1-s.dampingFactor,L.multiplyScalar(1-s.dampingFactor)):(w.set(0,0,0),L.set(0,0,0)),C=1,I||re.distanceToSquared(s.object.position)>g||8*(1-_e.dot(s.object.quaternion))>g?(s.dispatchEvent(a),re.copy(s.object.position),_e.copy(s.object.quaternion),I=!1,!0):!1}})(),this.connect=V=>{V===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),s.domElement=V,s.domElement.style.touchAction="none",s.domElement.addEventListener("contextmenu",Ze),s.domElement.addEventListener("pointerdown",qt),s.domElement.addEventListener("pointercancel",pt),s.domElement.addEventListener("wheel",Qe)},this.dispose=()=>{var V,j,Q,re,_e,je;(V=s.domElement)===null||V===void 0||V.removeEventListener("contextmenu",Ze),(j=s.domElement)===null||j===void 0||j.removeEventListener("pointerdown",qt),(Q=s.domElement)===null||Q===void 0||Q.removeEventListener("pointercancel",pt),(re=s.domElement)===null||re===void 0||re.removeEventListener("wheel",Qe),(_e=s.domElement)===null||_e===void 0||_e.ownerDocument.removeEventListener("pointermove",ct),(je=s.domElement)===null||je===void 0||je.ownerDocument.removeEventListener("pointerup",gt),s._domElementKeyEvents!==null&&s._domElementKeyEvents.removeEventListener("keydown",ut)};const s=this,a={type:"change"},c={type:"start"},u={type:"end"},h={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let m=h.NONE;const g=1e-6,y=new f.Spherical,w=new f.Spherical;let C=1;const L=new f.Vector3;let I=!1;const T=new f.Vector2,O=new f.Vector2,E=new f.Vector2,G=new f.Vector2,N=new f.Vector2,Z=new f.Vector2,se=new f.Vector2,Y=new f.Vector2,z=new f.Vector2,K=[],te={};function W(){return 2*Math.PI/60/60*s.autoRotateSpeed}function ve(){return Math.pow(.95,s.zoomSpeed)}function be(V){s.reverseOrbit?w.theta+=V:w.theta-=V}function ue(V){s.reverseOrbit?w.phi+=V:w.phi-=V}const he=(()=>{const V=new f.Vector3;return function(Q,re){V.setFromMatrixColumn(re,0),V.multiplyScalar(-Q),L.add(V)}})(),we=(()=>{const V=new f.Vector3;return function(Q,re){s.screenSpacePanning===!0?V.setFromMatrixColumn(re,1):(V.setFromMatrixColumn(re,0),V.crossVectors(s.object.up,V)),V.multiplyScalar(Q),L.add(V)}})(),J=(()=>{const V=new f.Vector3;return function(Q,re){const _e=s.domElement;if(_e&&s.object instanceof f.PerspectiveCamera&&s.object.isPerspectiveCamera){const je=s.object.position;V.copy(je).sub(s.target);let Tt=V.length();Tt*=Math.tan(s.object.fov/2*Math.PI/180),he(2*Q*Tt/_e.clientHeight,s.object.matrix),we(2*re*Tt/_e.clientHeight,s.object.matrix)}else _e&&s.object instanceof f.OrthographicCamera&&s.object.isOrthographicCamera?(he(Q*(s.object.right-s.object.left)/s.object.zoom/_e.clientWidth,s.object.matrix),we(re*(s.object.top-s.object.bottom)/s.object.zoom/_e.clientHeight,s.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),s.enablePan=!1)}})();function X(V){s.object instanceof f.PerspectiveCamera&&s.object.isPerspectiveCamera?C/=V:s.object instanceof f.OrthographicCamera&&s.object.isOrthographicCamera?(s.object.zoom=Math.max(s.minZoom,Math.min(s.maxZoom,s.object.zoom*V)),s.object.updateProjectionMatrix(),I=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),s.enableZoom=!1)}function qe(V){s.object instanceof f.PerspectiveCamera&&s.object.isPerspectiveCamera?C*=V:s.object instanceof f.OrthographicCamera&&s.object.isOrthographicCamera?(s.object.zoom=Math.max(s.minZoom,Math.min(s.maxZoom,s.object.zoom/V)),s.object.updateProjectionMatrix(),I=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),s.enableZoom=!1)}function Ce(V){T.set(V.clientX,V.clientY)}function ce(V){se.set(V.clientX,V.clientY)}function ee(V){G.set(V.clientX,V.clientY)}function oe(V){O.set(V.clientX,V.clientY),E.subVectors(O,T).multiplyScalar(s.rotateSpeed);const j=s.domElement;j&&(be(2*Math.PI*E.x/j.clientHeight),ue(2*Math.PI*E.y/j.clientHeight)),T.copy(O),s.update()}function $(V){Y.set(V.clientX,V.clientY),z.subVectors(Y,se),z.y>0?X(ve()):z.y<0&&qe(ve()),se.copy(Y),s.update()}function A(V){N.set(V.clientX,V.clientY),Z.subVectors(N,G).multiplyScalar(s.panSpeed),J(Z.x,Z.y),G.copy(N),s.update()}function Me(V){V.deltaY<0?qe(ve()):V.deltaY>0&&X(ve()),s.update()}function ke(V){let j=!1;switch(V.code){case s.keys.UP:J(0,s.keyPanSpeed),j=!0;break;case s.keys.BOTTOM:J(0,-s.keyPanSpeed),j=!0;break;case s.keys.LEFT:J(s.keyPanSpeed,0),j=!0;break;case s.keys.RIGHT:J(-s.keyPanSpeed,0),j=!0;break}j&&(V.preventDefault(),s.update())}function Ve(){if(K.length==1)T.set(K[0].pageX,K[0].pageY);else{const V=.5*(K[0].pageX+K[1].pageX),j=.5*(K[0].pageY+K[1].pageY);T.set(V,j)}}function Re(){if(K.length==1)G.set(K[0].pageX,K[0].pageY);else{const V=.5*(K[0].pageX+K[1].pageX),j=.5*(K[0].pageY+K[1].pageY);G.set(V,j)}}function Se(){const V=K[0].pageX-K[1].pageX,j=K[0].pageY-K[1].pageY,Q=Math.sqrt(V*V+j*j);se.set(0,Q)}function Be(){s.enableZoom&&Se(),s.enablePan&&Re()}function vt(){s.enableZoom&&Se(),s.enableRotate&&Ve()}function bt(V){if(K.length==1)O.set(V.pageX,V.pageY);else{const Q=We(V),re=.5*(V.pageX+Q.x),_e=.5*(V.pageY+Q.y);O.set(re,_e)}E.subVectors(O,T).multiplyScalar(s.rotateSpeed);const j=s.domElement;j&&(be(2*Math.PI*E.x/j.clientHeight),ue(2*Math.PI*E.y/j.clientHeight)),T.copy(O)}function It(V){if(K.length==1)N.set(V.pageX,V.pageY);else{const j=We(V),Q=.5*(V.pageX+j.x),re=.5*(V.pageY+j.y);N.set(Q,re)}Z.subVectors(N,G).multiplyScalar(s.panSpeed),J(Z.x,Z.y),G.copy(N)}function Dt(V){const j=We(V),Q=V.pageX-j.x,re=V.pageY-j.y,_e=Math.sqrt(Q*Q+re*re);Y.set(0,_e),z.set(0,Math.pow(Y.y/se.y,s.zoomSpeed)),X(z.y),se.copy(Y)}function Nn(V){s.enableZoom&&Dt(V),s.enablePan&&It(V)}function Fn(V){s.enableZoom&&Dt(V),s.enableRotate&&bt(V)}function qt(V){if(s.enabled!==!1){if(K.length===0){var j,Q;(j=s.domElement)===null||j===void 0||j.ownerDocument.addEventListener("pointermove",ct),(Q=s.domElement)===null||Q===void 0||Q.ownerDocument.addEventListener("pointerup",gt)}hn(V),V.pointerType==="touch"?Bn(V):pn(V)}}function ct(V){s.enabled!==!1&&(V.pointerType==="touch"?Qt(V):un(V))}function gt(V){if(Ke(V),K.length===0){var j,Q,re;(j=s.domElement)===null||j===void 0||j.releasePointerCapture(V.pointerId),(Q=s.domElement)===null||Q===void 0||Q.ownerDocument.removeEventListener("pointermove",ct),(re=s.domElement)===null||re===void 0||re.ownerDocument.removeEventListener("pointerup",gt)}s.dispatchEvent(u),m=h.NONE}function pt(V){Ke(V)}function pn(V){let j;switch(V.button){case 0:j=s.mouseButtons.LEFT;break;case 1:j=s.mouseButtons.MIDDLE;break;case 2:j=s.mouseButtons.RIGHT;break;default:j=-1}switch(j){case f.MOUSE.DOLLY:if(s.enableZoom===!1)return;ce(V),m=h.DOLLY;break;case f.MOUSE.ROTATE:if(V.ctrlKey||V.metaKey||V.shiftKey){if(s.enablePan===!1)return;ee(V),m=h.PAN}else{if(s.enableRotate===!1)return;Ce(V),m=h.ROTATE}break;case f.MOUSE.PAN:if(V.ctrlKey||V.metaKey||V.shiftKey){if(s.enableRotate===!1)return;Ce(V),m=h.ROTATE}else{if(s.enablePan===!1)return;ee(V),m=h.PAN}break;default:m=h.NONE}m!==h.NONE&&s.dispatchEvent(c)}function un(V){if(s.enabled!==!1)switch(m){case h.ROTATE:if(s.enableRotate===!1)return;oe(V);break;case h.DOLLY:if(s.enableZoom===!1)return;$(V);break;case h.PAN:if(s.enablePan===!1)return;A(V);break}}function Qe(V){s.enabled===!1||s.enableZoom===!1||m!==h.NONE&&m!==h.ROTATE||(V.preventDefault(),s.dispatchEvent(c),Me(V),s.dispatchEvent(u))}function ut(V){s.enabled===!1||s.enablePan===!1||ke(V)}function Bn(V){switch(Xe(V),K.length){case 1:switch(s.touches.ONE){case f.TOUCH.ROTATE:if(s.enableRotate===!1)return;Ve(),m=h.TOUCH_ROTATE;break;case f.TOUCH.PAN:if(s.enablePan===!1)return;Re(),m=h.TOUCH_PAN;break;default:m=h.NONE}break;case 2:switch(s.touches.TWO){case f.TOUCH.DOLLY_PAN:if(s.enableZoom===!1&&s.enablePan===!1)return;Be(),m=h.TOUCH_DOLLY_PAN;break;case f.TOUCH.DOLLY_ROTATE:if(s.enableZoom===!1&&s.enableRotate===!1)return;vt(),m=h.TOUCH_DOLLY_ROTATE;break;default:m=h.NONE}break;default:m=h.NONE}m!==h.NONE&&s.dispatchEvent(c)}function Qt(V){switch(Xe(V),m){case h.TOUCH_ROTATE:if(s.enableRotate===!1)return;bt(V),s.update();break;case h.TOUCH_PAN:if(s.enablePan===!1)return;It(V),s.update();break;case h.TOUCH_DOLLY_PAN:if(s.enableZoom===!1&&s.enablePan===!1)return;Nn(V),s.update();break;case h.TOUCH_DOLLY_ROTATE:if(s.enableZoom===!1&&s.enableRotate===!1)return;Fn(V),s.update();break;default:m=h.NONE}}function Ze(V){s.enabled!==!1&&V.preventDefault()}function hn(V){K.push(V)}function Ke(V){delete te[V.pointerId];for(let j=0;j<K.length;j++)if(K[j].pointerId==V.pointerId){K.splice(j,1);return}}function Xe(V){let j=te[V.pointerId];j===void 0&&(j=new f.Vector2,te[V.pointerId]=j),j.set(V.pageX,V.pageY)}function We(V){const j=V.pointerId===K[0].pointerId?K[1]:K[0];return te[j.pointerId]}r!==void 0&&this.connect(r),this.update()}}class Go extends f.Loader{constructor(i){super(i),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(r){return new Yo(r)}),this.register(function(r){return new ea(r)}),this.register(function(r){return new ta(r)}),this.register(function(r){return new Qo(r)}),this.register(function(r){return new Zo(r)}),this.register(function(r){return new Wo(r)}),this.register(function(r){return new Jo(r)}),this.register(function(r){return new $o(r)}),this.register(function(r){return new Ho(r)}),this.register(function(r){return new qo(r)}),this.register(function(r){return new Ko(r)}),this.register(function(r){return new na(r)})}load(i,r,s,a){const c=this;let u;this.resourcePath!==""?u=this.resourcePath:this.path!==""?u=this.path:u=f.LoaderUtils.extractUrlBase(i),this.manager.itemStart(i);const h=function(g){a?a(g):console.error(g),c.manager.itemError(i),c.manager.itemEnd(i)},m=new f.FileLoader(this.manager);m.setPath(this.path),m.setResponseType("arraybuffer"),m.setRequestHeader(this.requestHeader),m.setWithCredentials(this.withCredentials),m.load(i,function(g){try{c.parse(g,u,function(y){r(y),c.manager.itemEnd(i)},h)}catch(y){h(y)}},s,h)}setDRACOLoader(i){return this.dracoLoader=i,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(i){return this.ktx2Loader=i,this}setMeshoptDecoder(i){return this.meshoptDecoder=i,this}register(i){return this.pluginCallbacks.indexOf(i)===-1&&this.pluginCallbacks.push(i),this}unregister(i){return this.pluginCallbacks.indexOf(i)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(i),1),this}parse(i,r,s,a){let c;const u={},h={};if(typeof i=="string")c=i;else if(f.LoaderUtils.decodeText(new Uint8Array(i,0,4))===fr){try{u[ne.KHR_BINARY_GLTF]=new ia(i)}catch(w){a&&a(w);return}c=u[ne.KHR_BINARY_GLTF].content}else c=f.LoaderUtils.decodeText(new Uint8Array(i));const m=JSON.parse(c);if(m.asset===void 0||m.asset.version[0]<2){a&&a(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const g=new va(m,{path:r||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});g.fileLoader.setRequestHeader(this.requestHeader);for(let y=0;y<this.pluginCallbacks.length;y++){const w=this.pluginCallbacks[y](g);h[w.name]=w,u[w.name]=!0}if(m.extensionsUsed)for(let y=0;y<m.extensionsUsed.length;++y){const w=m.extensionsUsed[y],C=m.extensionsRequired||[];switch(w){case ne.KHR_MATERIALS_UNLIT:u[w]=new Xo;break;case ne.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:u[w]=new oa;break;case ne.KHR_DRACO_MESH_COMPRESSION:u[w]=new sa(m,this.dracoLoader);break;case ne.KHR_TEXTURE_TRANSFORM:u[w]=new ra;break;case ne.KHR_MESH_QUANTIZATION:u[w]=new aa;break;default:C.indexOf(w)>=0&&h[w]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+w+'".')}}g.setExtensions(u),g.setPlugins(h),g.parse(s,a)}parseAsync(i,r){const s=this;return new Promise(function(a,c){s.parse(i,r,a,c)})}}function Ro(){let _={};return{get:function(i){return _[i]},add:function(i,r){_[i]=r},remove:function(i){delete _[i]},removeAll:function(){_={}}}}const ne={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:"KHR_materials_pbrSpecularGlossiness",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression"};class Ko{constructor(i){this.parser=i,this.name=ne.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const i=this.parser,r=this.parser.json.nodes||[];for(let s=0,a=r.length;s<a;s++){const c=r[s];c.extensions&&c.extensions[this.name]&&c.extensions[this.name].light!==void 0&&i._addNodeRef(this.cache,c.extensions[this.name].light)}}_loadLight(i){const r=this.parser,s="light:"+i;let a=r.cache.get(s);if(a)return a;const c=r.json,m=((c.extensions&&c.extensions[this.name]||{}).lights||[])[i];let g;const y=new f.Color(16777215);m.color!==void 0&&y.fromArray(m.color);const w=m.range!==void 0?m.range:0;switch(m.type){case"directional":g=new f.DirectionalLight(y),g.target.position.set(0,0,-1),g.add(g.target);break;case"point":g=new f.PointLight(y),g.distance=w;break;case"spot":g=new f.SpotLight(y),g.distance=w,m.spot=m.spot||{},m.spot.innerConeAngle=m.spot.innerConeAngle!==void 0?m.spot.innerConeAngle:0,m.spot.outerConeAngle=m.spot.outerConeAngle!==void 0?m.spot.outerConeAngle:Math.PI/4,g.angle=m.spot.outerConeAngle,g.penumbra=1-m.spot.innerConeAngle/m.spot.outerConeAngle,g.target.position.set(0,0,-1),g.add(g.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+m.type)}return g.position.set(0,0,0),g.decay=2,m.intensity!==void 0&&(g.intensity=m.intensity),g.name=r.createUniqueName(m.name||"light_"+i),a=Promise.resolve(g),r.cache.add(s,a),a}createNodeAttachment(i){const r=this,s=this.parser,c=s.json.nodes[i],h=(c.extensions&&c.extensions[this.name]||{}).light;return h===void 0?null:this._loadLight(h).then(function(m){return s._getNodeRef(r.cache,h,m)})}}class Xo{constructor(){this.name=ne.KHR_MATERIALS_UNLIT}getMaterialType(){return f.MeshBasicMaterial}extendParams(i,r,s){const a=[];i.color=new f.Color(1,1,1),i.opacity=1;const c=r.pbrMetallicRoughness;if(c){if(Array.isArray(c.baseColorFactor)){const u=c.baseColorFactor;i.color.fromArray(u),i.opacity=u[3]}c.baseColorTexture!==void 0&&a.push(s.assignTexture(i,"map",c.baseColorTexture,f.sRGBEncoding))}return Promise.all(a)}}class $o{constructor(i){this.parser=i,this.name=ne.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(i,r){const a=this.parser.json.materials[i];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const c=a.extensions[this.name].emissiveStrength;return c!==void 0&&(r.emissiveIntensity=c),Promise.resolve()}}class Yo{constructor(i){this.parser=i,this.name=ne.KHR_MATERIALS_CLEARCOAT}getMaterialType(i){const s=this.parser.json.materials[i];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,r){const s=this.parser,a=s.json.materials[i];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const c=[],u=a.extensions[this.name];if(u.clearcoatFactor!==void 0&&(r.clearcoat=u.clearcoatFactor),u.clearcoatTexture!==void 0&&c.push(s.assignTexture(r,"clearcoatMap",u.clearcoatTexture)),u.clearcoatRoughnessFactor!==void 0&&(r.clearcoatRoughness=u.clearcoatRoughnessFactor),u.clearcoatRoughnessTexture!==void 0&&c.push(s.assignTexture(r,"clearcoatRoughnessMap",u.clearcoatRoughnessTexture)),u.clearcoatNormalTexture!==void 0&&(c.push(s.assignTexture(r,"clearcoatNormalMap",u.clearcoatNormalTexture)),u.clearcoatNormalTexture.scale!==void 0)){const h=u.clearcoatNormalTexture.scale;r.clearcoatNormalScale=new f.Vector2(h,h)}return Promise.all(c)}}class qo{constructor(i){this.parser=i,this.name=ne.KHR_MATERIALS_IRIDESCENCE}getMaterialType(i){const s=this.parser.json.materials[i];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,r){const s=this.parser,a=s.json.materials[i];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const c=[],u=a.extensions[this.name];return u.iridescenceFactor!==void 0&&(r.iridescence=u.iridescenceFactor),u.iridescenceTexture!==void 0&&c.push(s.assignTexture(r,"iridescenceMap",u.iridescenceTexture)),u.iridescenceIor!==void 0&&(r.iridescenceIOR=u.iridescenceIor),r.iridescenceThicknessRange===void 0&&(r.iridescenceThicknessRange=[100,400]),u.iridescenceThicknessMinimum!==void 0&&(r.iridescenceThicknessRange[0]=u.iridescenceThicknessMinimum),u.iridescenceThicknessMaximum!==void 0&&(r.iridescenceThicknessRange[1]=u.iridescenceThicknessMaximum),u.iridescenceThicknessTexture!==void 0&&c.push(s.assignTexture(r,"iridescenceThicknessMap",u.iridescenceThicknessTexture)),Promise.all(c)}}class Qo{constructor(i){this.parser=i,this.name=ne.KHR_MATERIALS_SHEEN}getMaterialType(i){const s=this.parser.json.materials[i];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,r){const s=this.parser,a=s.json.materials[i];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const c=[];r.sheenColor=new f.Color(0,0,0),r.sheenRoughness=0,r.sheen=1;const u=a.extensions[this.name];return u.sheenColorFactor!==void 0&&r.sheenColor.fromArray(u.sheenColorFactor),u.sheenRoughnessFactor!==void 0&&(r.sheenRoughness=u.sheenRoughnessFactor),u.sheenColorTexture!==void 0&&c.push(s.assignTexture(r,"sheenColorMap",u.sheenColorTexture,f.sRGBEncoding)),u.sheenRoughnessTexture!==void 0&&c.push(s.assignTexture(r,"sheenRoughnessMap",u.sheenRoughnessTexture)),Promise.all(c)}}class Zo{constructor(i){this.parser=i,this.name=ne.KHR_MATERIALS_TRANSMISSION}getMaterialType(i){const s=this.parser.json.materials[i];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,r){const s=this.parser,a=s.json.materials[i];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const c=[],u=a.extensions[this.name];return u.transmissionFactor!==void 0&&(r.transmission=u.transmissionFactor),u.transmissionTexture!==void 0&&c.push(s.assignTexture(r,"transmissionMap",u.transmissionTexture)),Promise.all(c)}}class Wo{constructor(i){this.parser=i,this.name=ne.KHR_MATERIALS_VOLUME}getMaterialType(i){const s=this.parser.json.materials[i];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,r){const s=this.parser,a=s.json.materials[i];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const c=[],u=a.extensions[this.name];r.thickness=u.thicknessFactor!==void 0?u.thicknessFactor:0,u.thicknessTexture!==void 0&&c.push(s.assignTexture(r,"thicknessMap",u.thicknessTexture)),r.attenuationDistance=u.attenuationDistance||1/0;const h=u.attenuationColor||[1,1,1];return r.attenuationColor=new f.Color(h[0],h[1],h[2]),Promise.all(c)}}class Jo{constructor(i){this.parser=i,this.name=ne.KHR_MATERIALS_IOR}getMaterialType(i){const s=this.parser.json.materials[i];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,r){const a=this.parser.json.materials[i];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const c=a.extensions[this.name];return r.ior=c.ior!==void 0?c.ior:1.5,Promise.resolve()}}class Ho{constructor(i){this.parser=i,this.name=ne.KHR_MATERIALS_SPECULAR}getMaterialType(i){const s=this.parser.json.materials[i];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,r){const s=this.parser,a=s.json.materials[i];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const c=[],u=a.extensions[this.name];r.specularIntensity=u.specularFactor!==void 0?u.specularFactor:1,u.specularTexture!==void 0&&c.push(s.assignTexture(r,"specularIntensityMap",u.specularTexture));const h=u.specularColorFactor||[1,1,1];return r.specularColor=new f.Color(h[0],h[1],h[2]),u.specularColorTexture!==void 0&&c.push(s.assignTexture(r,"specularColorMap",u.specularColorTexture,f.sRGBEncoding)),Promise.all(c)}}class ea{constructor(i){this.parser=i,this.name=ne.KHR_TEXTURE_BASISU}loadTexture(i){const r=this.parser,s=r.json,a=s.textures[i];if(!a.extensions||!a.extensions[this.name])return null;const c=a.extensions[this.name],u=r.options.ktx2Loader;if(!u){if(s.extensionsRequired&&s.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return r.loadTextureImage(i,c.source,u)}}class ta{constructor(i){this.parser=i,this.name=ne.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(i){const r=this.name,s=this.parser,a=s.json,c=a.textures[i];if(!c.extensions||!c.extensions[r])return null;const u=c.extensions[r],h=a.images[u.source];let m=s.textureLoader;if(h.uri){const g=s.options.manager.getHandler(h.uri);g!==null&&(m=g)}return this.detectSupport().then(function(g){if(g)return s.loadTextureImage(i,u.source,m);if(a.extensionsRequired&&a.extensionsRequired.indexOf(r)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return s.loadTexture(i)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(i){const r=new Image;r.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",r.onload=r.onerror=function(){i(r.height===1)}})),this.isSupported}}class na{constructor(i){this.name=ne.EXT_MESHOPT_COMPRESSION,this.parser=i}loadBufferView(i){const r=this.parser.json,s=r.bufferViews[i];if(s.extensions&&s.extensions[this.name]){const a=s.extensions[this.name],c=this.parser.getDependency("buffer",a.buffer),u=this.parser.options.meshoptDecoder;if(!u||!u.supported){if(r.extensionsRequired&&r.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return c.then(function(h){const m=a.byteOffset||0,g=a.byteLength||0,y=a.count,w=a.byteStride,C=new Uint8Array(h,m,g);return u.decodeGltfBufferAsync?u.decodeGltfBufferAsync(y,w,C,a.mode,a.filter).then(function(L){return L.buffer}):u.ready.then(function(){const L=new ArrayBuffer(y*w);return u.decodeGltfBuffer(new Uint8Array(L),y,w,C,a.mode,a.filter),L})})}else return null}}const fr="glTF",Dn=12,vr={JSON:1313821514,BIN:5130562};class ia{constructor(i){this.name=ne.KHR_BINARY_GLTF,this.content=null,this.body=null;const r=new DataView(i,0,Dn);if(this.header={magic:f.LoaderUtils.decodeText(new Uint8Array(i.slice(0,4))),version:r.getUint32(4,!0),length:r.getUint32(8,!0)},this.header.magic!==fr)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const s=this.header.length-Dn,a=new DataView(i,Dn);let c=0;for(;c<s;){const u=a.getUint32(c,!0);c+=4;const h=a.getUint32(c,!0);if(c+=4,h===vr.JSON){const m=new Uint8Array(i,Dn+c,u);this.content=f.LoaderUtils.decodeText(m)}else if(h===vr.BIN){const m=Dn+c;this.body=i.slice(m,m+u)}c+=u}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class sa{constructor(i,r){if(!r)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=ne.KHR_DRACO_MESH_COMPRESSION,this.json=i,this.dracoLoader=r,this.dracoLoader.preload()}decodePrimitive(i,r){const s=this.json,a=this.dracoLoader,c=i.extensions[this.name].bufferView,u=i.extensions[this.name].attributes,h={},m={},g={};for(const y in u){const w=es[y]||y.toLowerCase();h[w]=u[y]}for(const y in i.attributes){const w=es[y]||y.toLowerCase();if(u[y]!==void 0){const C=s.accessors[i.attributes[y]],L=Tn[C.componentType];g[w]=L.name,m[w]=C.normalized===!0}}return r.getDependency("bufferView",c).then(function(y){return new Promise(function(w){a.decodeDracoFile(y,function(C){for(const L in C.attributes){const I=C.attributes[L],T=m[L];T!==void 0&&(I.normalized=T)}w(C)},h,g)})})}}class ra{constructor(){this.name=ne.KHR_TEXTURE_TRANSFORM}extendTexture(i,r){return r.texCoord!==void 0&&console.warn('THREE.GLTFLoader: Custom UV sets in "'+this.name+'" extension not yet supported.'),r.offset===void 0&&r.rotation===void 0&&r.scale===void 0||(i=i.clone(),r.offset!==void 0&&i.offset.fromArray(r.offset),r.rotation!==void 0&&(i.rotation=r.rotation),r.scale!==void 0&&i.repeat.fromArray(r.scale),i.needsUpdate=!0),i}}class Hi extends f.MeshStandardMaterial{constructor(i){super(),this.isGLTFSpecularGlossinessMaterial=!0;const r=["#ifdef USE_SPECULARMAP"," uniform sampler2D specularMap;","#endif"].join(`
|
|
9
|
+
`),s=["#ifdef USE_GLOSSINESSMAP"," uniform sampler2D glossinessMap;","#endif"].join(`
|
|
10
|
+
`),a=["vec3 specularFactor = specular;","#ifdef USE_SPECULARMAP"," vec4 texelSpecular = texture2D( specularMap, vUv );"," // reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture"," specularFactor *= texelSpecular.rgb;","#endif"].join(`
|
|
11
|
+
`),c=["float glossinessFactor = glossiness;","#ifdef USE_GLOSSINESSMAP"," vec4 texelGlossiness = texture2D( glossinessMap, vUv );"," // reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture"," glossinessFactor *= texelGlossiness.a;","#endif"].join(`
|
|
12
|
+
`),u=["PhysicalMaterial material;","material.diffuseColor = diffuseColor.rgb * ( 1. - max( specularFactor.r, max( specularFactor.g, specularFactor.b ) ) );","vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );","material.roughness = max( 1.0 - glossinessFactor, 0.0525 ); // 0.0525 corresponds to the base mip of a 256 cubemap.","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.specularColor = specularFactor;"].join(`
|
|
13
|
+
`),h={specular:{value:new f.Color().setHex(16777215)},glossiness:{value:1},specularMap:{value:null},glossinessMap:{value:null}};this._extraUniforms=h,this.onBeforeCompile=function(m){for(const g in h)m.uniforms[g]=h[g];m.fragmentShader=m.fragmentShader.replace("uniform float roughness;","uniform vec3 specular;").replace("uniform float metalness;","uniform float glossiness;").replace("#include <roughnessmap_pars_fragment>",r).replace("#include <metalnessmap_pars_fragment>",s).replace("#include <roughnessmap_fragment>",a).replace("#include <metalnessmap_fragment>",c).replace("#include <lights_physical_fragment>",u)},Object.defineProperties(this,{specular:{get:function(){return h.specular.value},set:function(m){h.specular.value=m}},specularMap:{get:function(){return h.specularMap.value},set:function(m){h.specularMap.value=m,m?this.defines.USE_SPECULARMAP="":delete this.defines.USE_SPECULARMAP}},glossiness:{get:function(){return h.glossiness.value},set:function(m){h.glossiness.value=m}},glossinessMap:{get:function(){return h.glossinessMap.value},set:function(m){h.glossinessMap.value=m,m?(this.defines.USE_GLOSSINESSMAP="",this.defines.USE_UV=""):(delete this.defines.USE_GLOSSINESSMAP,delete this.defines.USE_UV)}}}),delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this.setValues(i)}copy(i){return super.copy(i),this.specularMap=i.specularMap,this.specular.copy(i.specular),this.glossinessMap=i.glossinessMap,this.glossiness=i.glossiness,delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this}}class oa{constructor(){this.name=ne.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,this.specularGlossinessParams=["color","map","lightMap","lightMapIntensity","aoMap","aoMapIntensity","emissive","emissiveIntensity","emissiveMap","bumpMap","bumpScale","normalMap","normalMapType","displacementMap","displacementScale","displacementBias","specularMap","specular","glossinessMap","glossiness","alphaMap","envMap","envMapIntensity","refractionRatio"]}getMaterialType(){return Hi}extendParams(i,r,s){const a=r.extensions[this.name];i.color=new f.Color(1,1,1),i.opacity=1;const c=[];if(Array.isArray(a.diffuseFactor)){const u=a.diffuseFactor;i.color.fromArray(u),i.opacity=u[3]}if(a.diffuseTexture!==void 0&&c.push(s.assignTexture(i,"map",a.diffuseTexture,f.sRGBEncoding)),i.emissive=new f.Color(0,0,0),i.glossiness=a.glossinessFactor!==void 0?a.glossinessFactor:1,i.specular=new f.Color(1,1,1),Array.isArray(a.specularFactor)&&i.specular.fromArray(a.specularFactor),a.specularGlossinessTexture!==void 0){const u=a.specularGlossinessTexture;c.push(s.assignTexture(i,"glossinessMap",u)),c.push(s.assignTexture(i,"specularMap",u,f.sRGBEncoding))}return Promise.all(c)}createMaterial(i){const r=new Hi(i);return r.fog=!0,r.color=i.color,r.map=i.map===void 0?null:i.map,r.lightMap=null,r.lightMapIntensity=1,r.aoMap=i.aoMap===void 0?null:i.aoMap,r.aoMapIntensity=1,r.emissive=i.emissive,r.emissiveIntensity=i.emissiveIntensity===void 0?1:i.emissiveIntensity,r.emissiveMap=i.emissiveMap===void 0?null:i.emissiveMap,r.bumpMap=i.bumpMap===void 0?null:i.bumpMap,r.bumpScale=1,r.normalMap=i.normalMap===void 0?null:i.normalMap,r.normalMapType=f.TangentSpaceNormalMap,i.normalScale&&(r.normalScale=i.normalScale),r.displacementMap=null,r.displacementScale=1,r.displacementBias=0,r.specularMap=i.specularMap===void 0?null:i.specularMap,r.specular=i.specular,r.glossinessMap=i.glossinessMap===void 0?null:i.glossinessMap,r.glossiness=i.glossiness,r.alphaMap=null,r.envMap=i.envMap===void 0?null:i.envMap,r.envMapIntensity=1,r.refractionRatio=.98,r}}class aa{constructor(){this.name=ne.KHR_MESH_QUANTIZATION}}class br extends f.Interpolant{constructor(i,r,s,a){super(i,r,s,a)}copySampleValue_(i){const r=this.resultBuffer,s=this.sampleValues,a=this.valueSize,c=i*a*3+a;for(let u=0;u!==a;u++)r[u]=s[c+u];return r}interpolate_(i,r,s,a){const c=this.resultBuffer,u=this.sampleValues,h=this.valueSize,m=h*2,g=h*3,y=a-r,w=(s-r)/y,C=w*w,L=C*w,I=i*g,T=I-g,O=-2*L+3*C,E=L-C,G=1-O,N=E-C+w;for(let Z=0;Z!==h;Z++){const se=u[T+Z+h],Y=u[T+Z+m]*y,z=u[I+Z+h],K=u[I+Z]*y;c[Z]=G*se+N*Y+O*z+E*K}return c}}const la=new f.Quaternion;class ca extends br{interpolate_(i,r,s,a){const c=super.interpolate_(i,r,s,a);return la.fromArray(c).normalize().toArray(c),c}}const ft={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},Tn={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},gr={9728:f.NearestFilter,9729:f.LinearFilter,9984:f.NearestMipmapNearestFilter,9985:f.LinearMipmapNearestFilter,9986:f.NearestMipmapLinearFilter,9987:f.LinearMipmapLinearFilter},wr={33071:f.ClampToEdgeWrapping,33648:f.MirroredRepeatWrapping,10497:f.RepeatWrapping},_r={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},es={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv2",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},Vt={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},pa={CUBICSPLINE:void 0,LINEAR:f.InterpolateLinear,STEP:f.InterpolateDiscrete},ts={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function ua(_){return _.DefaultMaterial===void 0&&(_.DefaultMaterial=new f.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:f.FrontSide})),_.DefaultMaterial}function On(_,i,r){for(const s in r.extensions)_[s]===void 0&&(i.userData.gltfExtensions=i.userData.gltfExtensions||{},i.userData.gltfExtensions[s]=r.extensions[s])}function $t(_,i){i.extras!==void 0&&(typeof i.extras=="object"?Object.assign(_.userData,i.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+i.extras))}function ha(_,i,r){let s=!1,a=!1,c=!1;for(let g=0,y=i.length;g<y;g++){const w=i[g];if(w.POSITION!==void 0&&(s=!0),w.NORMAL!==void 0&&(a=!0),w.COLOR_0!==void 0&&(c=!0),s&&a&&c)break}if(!s&&!a&&!c)return Promise.resolve(_);const u=[],h=[],m=[];for(let g=0,y=i.length;g<y;g++){const w=i[g];if(s){const C=w.POSITION!==void 0?r.getDependency("accessor",w.POSITION):_.attributes.position;u.push(C)}if(a){const C=w.NORMAL!==void 0?r.getDependency("accessor",w.NORMAL):_.attributes.normal;h.push(C)}if(c){const C=w.COLOR_0!==void 0?r.getDependency("accessor",w.COLOR_0):_.attributes.color;m.push(C)}}return Promise.all([Promise.all(u),Promise.all(h),Promise.all(m)]).then(function(g){const y=g[0],w=g[1],C=g[2];return s&&(_.morphAttributes.position=y),a&&(_.morphAttributes.normal=w),c&&(_.morphAttributes.color=C),_.morphTargetsRelative=!0,_})}function da(_,i){if(_.updateMorphTargets(),i.weights!==void 0)for(let r=0,s=i.weights.length;r<s;r++)_.morphTargetInfluences[r]=i.weights[r];if(i.extras&&Array.isArray(i.extras.targetNames)){const r=i.extras.targetNames;if(_.morphTargetInfluences.length===r.length){_.morphTargetDictionary={};for(let s=0,a=r.length;s<a;s++)_.morphTargetDictionary[r[s]]=s}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function ma(_){const i=_.extensions&&_.extensions[ne.KHR_DRACO_MESH_COMPRESSION];let r;return i?r="draco:"+i.bufferView+":"+i.indices+":"+yr(i.attributes):r=_.indices+":"+yr(_.attributes)+":"+_.mode,r}function yr(_){let i="";const r=Object.keys(_).sort();for(let s=0,a=r.length;s<a;s++)i+=r[s]+":"+_[r[s]]+";";return i}function ns(_){switch(_){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function fa(_){return _.search(/\.jpe?g($|\?)/i)>0||_.search(/^data\:image\/jpeg/)===0?"image/jpeg":_.search(/\.webp($|\?)/i)>0||_.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}class va{constructor(i={},r={}){var s,a;this.json=i,this.extensions={},this.plugins={},this.options=r,this.cache=new Ro,this.associations=new Map,this.primitiveCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};const c=typeof navigator<"u"&&/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,u=typeof navigator<"u"&&((s=navigator.userAgent)===null||s===void 0?void 0:s.indexOf("Firefox"))>-1,h=typeof navigator<"u"&&u?(a=navigator.userAgent)===null||a===void 0?void 0:a.match(/Firefox\/([0-9]+)\./)[1]:-1;typeof createImageBitmap>"u"||c||u&&h<98?this.textureLoader=new f.TextureLoader(this.options.manager):this.textureLoader=new f.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new f.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(i){this.extensions=i}setPlugins(i){this.plugins=i}parse(i,r){const s=this,a=this.json,c=this.extensions;this.cache.removeAll(),this._invokeAll(function(u){return u._markDefs&&u._markDefs()}),Promise.all(this._invokeAll(function(u){return u.beforeRoot&&u.beforeRoot()})).then(function(){return Promise.all([s.getDependencies("scene"),s.getDependencies("animation"),s.getDependencies("camera")])}).then(function(u){const h={scene:u[0][a.scene||0],scenes:u[0],animations:u[1],cameras:u[2],asset:a.asset,parser:s,userData:{}};On(c,h,a),$t(h,a),Promise.all(s._invokeAll(function(m){return m.afterRoot&&m.afterRoot(h)})).then(function(){i(h)})}).catch(r)}_markDefs(){const i=this.json.nodes||[],r=this.json.skins||[],s=this.json.meshes||[];for(let a=0,c=r.length;a<c;a++){const u=r[a].joints;for(let h=0,m=u.length;h<m;h++)i[u[h]].isBone=!0}for(let a=0,c=i.length;a<c;a++){const u=i[a];u.mesh!==void 0&&(this._addNodeRef(this.meshCache,u.mesh),u.skin!==void 0&&(s[u.mesh].isSkinnedMesh=!0)),u.camera!==void 0&&this._addNodeRef(this.cameraCache,u.camera)}}_addNodeRef(i,r){r!==void 0&&(i.refs[r]===void 0&&(i.refs[r]=i.uses[r]=0),i.refs[r]++)}_getNodeRef(i,r,s){if(i.refs[r]<=1)return s;const a=s.clone(),c=(u,h)=>{const m=this.associations.get(u);m!=null&&this.associations.set(h,m);for(const[g,y]of u.children.entries())c(y,h.children[g])};return c(s,a),a.name+="_instance_"+i.uses[r]++,a}_invokeOne(i){const r=Object.values(this.plugins);r.push(this);for(let s=0;s<r.length;s++){const a=i(r[s]);if(a)return a}return null}_invokeAll(i){const r=Object.values(this.plugins);r.unshift(this);const s=[];for(let a=0;a<r.length;a++){const c=i(r[a]);c&&s.push(c)}return s}getDependency(i,r){const s=i+":"+r;let a=this.cache.get(s);if(!a){switch(i){case"scene":a=this.loadScene(r);break;case"node":a=this.loadNode(r);break;case"mesh":a=this._invokeOne(function(c){return c.loadMesh&&c.loadMesh(r)});break;case"accessor":a=this.loadAccessor(r);break;case"bufferView":a=this._invokeOne(function(c){return c.loadBufferView&&c.loadBufferView(r)});break;case"buffer":a=this.loadBuffer(r);break;case"material":a=this._invokeOne(function(c){return c.loadMaterial&&c.loadMaterial(r)});break;case"texture":a=this._invokeOne(function(c){return c.loadTexture&&c.loadTexture(r)});break;case"skin":a=this.loadSkin(r);break;case"animation":a=this._invokeOne(function(c){return c.loadAnimation&&c.loadAnimation(r)});break;case"camera":a=this.loadCamera(r);break;default:throw new Error("Unknown type: "+i)}this.cache.add(s,a)}return a}getDependencies(i){let r=this.cache.get(i);if(!r){const s=this,a=this.json[i+(i==="mesh"?"es":"s")]||[];r=Promise.all(a.map(function(c,u){return s.getDependency(i,u)})),this.cache.add(i,r)}return r}loadBuffer(i){const r=this.json.buffers[i],s=this.fileLoader;if(r.type&&r.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+r.type+" buffer type is not supported.");if(r.uri===void 0&&i===0)return Promise.resolve(this.extensions[ne.KHR_BINARY_GLTF].body);const a=this.options;return new Promise(function(c,u){s.load(f.LoaderUtils.resolveURL(r.uri,a.path),c,void 0,function(){u(new Error('THREE.GLTFLoader: Failed to load buffer "'+r.uri+'".'))})})}loadBufferView(i){const r=this.json.bufferViews[i];return this.getDependency("buffer",r.buffer).then(function(s){const a=r.byteLength||0,c=r.byteOffset||0;return s.slice(c,c+a)})}loadAccessor(i){const r=this,s=this.json,a=this.json.accessors[i];if(a.bufferView===void 0&&a.sparse===void 0)return Promise.resolve(null);const c=[];return a.bufferView!==void 0?c.push(this.getDependency("bufferView",a.bufferView)):c.push(null),a.sparse!==void 0&&(c.push(this.getDependency("bufferView",a.sparse.indices.bufferView)),c.push(this.getDependency("bufferView",a.sparse.values.bufferView))),Promise.all(c).then(function(u){const h=u[0],m=_r[a.type],g=Tn[a.componentType],y=g.BYTES_PER_ELEMENT,w=y*m,C=a.byteOffset||0,L=a.bufferView!==void 0?s.bufferViews[a.bufferView].byteStride:void 0,I=a.normalized===!0;let T,O;if(L&&L!==w){const E=Math.floor(C/L),G="InterleavedBuffer:"+a.bufferView+":"+a.componentType+":"+E+":"+a.count;let N=r.cache.get(G);N||(T=new g(h,E*L,a.count*L/y),N=new f.InterleavedBuffer(T,L/y),r.cache.add(G,N)),O=new f.InterleavedBufferAttribute(N,m,C%L/y,I)}else h===null?T=new g(a.count*m):T=new g(h,C,a.count*m),O=new f.BufferAttribute(T,m,I);if(a.sparse!==void 0){const E=_r.SCALAR,G=Tn[a.sparse.indices.componentType],N=a.sparse.indices.byteOffset||0,Z=a.sparse.values.byteOffset||0,se=new G(u[1],N,a.sparse.count*E),Y=new g(u[2],Z,a.sparse.count*m);h!==null&&(O=new f.BufferAttribute(O.array.slice(),O.itemSize,O.normalized));for(let z=0,K=se.length;z<K;z++){const te=se[z];if(O.setX(te,Y[z*m]),m>=2&&O.setY(te,Y[z*m+1]),m>=3&&O.setZ(te,Y[z*m+2]),m>=4&&O.setW(te,Y[z*m+3]),m>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return O})}loadTexture(i){const r=this.json,s=this.options,c=r.textures[i].source,u=r.images[c];let h=this.textureLoader;if(u.uri){const m=s.manager.getHandler(u.uri);m!==null&&(h=m)}return this.loadTextureImage(i,c,h)}loadTextureImage(i,r,s){const a=this,c=this.json,u=c.textures[i],h=c.images[r],m=(h.uri||h.bufferView)+":"+u.sampler;if(this.textureCache[m])return this.textureCache[m];const g=this.loadImageSource(r,s).then(function(y){y.flipY=!1,u.name&&(y.name=u.name);const C=(c.samplers||{})[u.sampler]||{};return y.magFilter=gr[C.magFilter]||f.LinearFilter,y.minFilter=gr[C.minFilter]||f.LinearMipmapLinearFilter,y.wrapS=wr[C.wrapS]||f.RepeatWrapping,y.wrapT=wr[C.wrapT]||f.RepeatWrapping,a.associations.set(y,{textures:i}),y}).catch(function(){return null});return this.textureCache[m]=g,g}loadImageSource(i,r){const s=this,a=this.json,c=this.options;if(this.sourceCache[i]!==void 0)return this.sourceCache[i].then(w=>w.clone());const u=a.images[i],h=self.URL||self.webkitURL;let m=u.uri||"",g=!1;if(u.bufferView!==void 0)m=s.getDependency("bufferView",u.bufferView).then(function(w){g=!0;const C=new Blob([w],{type:u.mimeType});return m=h.createObjectURL(C),m});else if(u.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+i+" is missing URI and bufferView");const y=Promise.resolve(m).then(function(w){return new Promise(function(C,L){let I=C;r.isImageBitmapLoader===!0&&(I=function(T){const O=new f.Texture(T);O.needsUpdate=!0,C(O)}),r.load(f.LoaderUtils.resolveURL(w,c.path),I,void 0,L)})}).then(function(w){return g===!0&&h.revokeObjectURL(m),w.userData.mimeType=u.mimeType||fa(u.uri),w}).catch(function(w){throw console.error("THREE.GLTFLoader: Couldn't load texture",m),w});return this.sourceCache[i]=y,y}assignTexture(i,r,s,a){const c=this;return this.getDependency("texture",s.index).then(function(u){if(s.texCoord!==void 0&&s.texCoord!=0&&!(r==="aoMap"&&s.texCoord==1)&&console.warn("THREE.GLTFLoader: Custom UV set "+s.texCoord+" for texture "+r+" not yet supported."),c.extensions[ne.KHR_TEXTURE_TRANSFORM]){const h=s.extensions!==void 0?s.extensions[ne.KHR_TEXTURE_TRANSFORM]:void 0;if(h){const m=c.associations.get(u);u=c.extensions[ne.KHR_TEXTURE_TRANSFORM].extendTexture(u,h),c.associations.set(u,m)}}return a!==void 0&&(u.encoding=a),i[r]=u,u})}assignFinalMaterial(i){const r=i.geometry;let s=i.material;const a=r.attributes.tangent===void 0,c=r.attributes.color!==void 0,u=r.attributes.normal===void 0;if(i.isPoints){const h="PointsMaterial:"+s.uuid;let m=this.cache.get(h);m||(m=new f.PointsMaterial,f.Material.prototype.copy.call(m,s),m.color.copy(s.color),m.map=s.map,m.sizeAttenuation=!1,this.cache.add(h,m)),s=m}else if(i.isLine){const h="LineBasicMaterial:"+s.uuid;let m=this.cache.get(h);m||(m=new f.LineBasicMaterial,f.Material.prototype.copy.call(m,s),m.color.copy(s.color),this.cache.add(h,m)),s=m}if(a||c||u){let h="ClonedMaterial:"+s.uuid+":";s.isGLTFSpecularGlossinessMaterial&&(h+="specular-glossiness:"),a&&(h+="derivative-tangents:"),c&&(h+="vertex-colors:"),u&&(h+="flat-shading:");let m=this.cache.get(h);m||(m=s.clone(),c&&(m.vertexColors=!0),u&&(m.flatShading=!0),a&&(m.normalScale&&(m.normalScale.y*=-1),m.clearcoatNormalScale&&(m.clearcoatNormalScale.y*=-1)),this.cache.add(h,m),this.associations.set(m,this.associations.get(s))),s=m}s.aoMap&&r.attributes.uv2===void 0&&r.attributes.uv!==void 0&&r.setAttribute("uv2",r.attributes.uv),i.material=s}getMaterialType(){return f.MeshStandardMaterial}loadMaterial(i){const r=this,s=this.json,a=this.extensions,c=s.materials[i];let u;const h={},m=c.extensions||{},g=[];if(m[ne.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]){const w=a[ne.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS];u=w.getMaterialType(),g.push(w.extendParams(h,c,r))}else if(m[ne.KHR_MATERIALS_UNLIT]){const w=a[ne.KHR_MATERIALS_UNLIT];u=w.getMaterialType(),g.push(w.extendParams(h,c,r))}else{const w=c.pbrMetallicRoughness||{};if(h.color=new f.Color(1,1,1),h.opacity=1,Array.isArray(w.baseColorFactor)){const C=w.baseColorFactor;h.color.fromArray(C),h.opacity=C[3]}w.baseColorTexture!==void 0&&g.push(r.assignTexture(h,"map",w.baseColorTexture,f.sRGBEncoding)),h.metalness=w.metallicFactor!==void 0?w.metallicFactor:1,h.roughness=w.roughnessFactor!==void 0?w.roughnessFactor:1,w.metallicRoughnessTexture!==void 0&&(g.push(r.assignTexture(h,"metalnessMap",w.metallicRoughnessTexture)),g.push(r.assignTexture(h,"roughnessMap",w.metallicRoughnessTexture))),u=this._invokeOne(function(C){return C.getMaterialType&&C.getMaterialType(i)}),g.push(Promise.all(this._invokeAll(function(C){return C.extendMaterialParams&&C.extendMaterialParams(i,h)})))}c.doubleSided===!0&&(h.side=f.DoubleSide);const y=c.alphaMode||ts.OPAQUE;if(y===ts.BLEND?(h.transparent=!0,h.depthWrite=!1):(h.transparent=!1,y===ts.MASK&&(h.alphaTest=c.alphaCutoff!==void 0?c.alphaCutoff:.5)),c.normalTexture!==void 0&&u!==f.MeshBasicMaterial&&(g.push(r.assignTexture(h,"normalMap",c.normalTexture)),h.normalScale=new f.Vector2(1,1),c.normalTexture.scale!==void 0)){const w=c.normalTexture.scale;h.normalScale.set(w,w)}return c.occlusionTexture!==void 0&&u!==f.MeshBasicMaterial&&(g.push(r.assignTexture(h,"aoMap",c.occlusionTexture)),c.occlusionTexture.strength!==void 0&&(h.aoMapIntensity=c.occlusionTexture.strength)),c.emissiveFactor!==void 0&&u!==f.MeshBasicMaterial&&(h.emissive=new f.Color().fromArray(c.emissiveFactor)),c.emissiveTexture!==void 0&&u!==f.MeshBasicMaterial&&g.push(r.assignTexture(h,"emissiveMap",c.emissiveTexture,f.sRGBEncoding)),Promise.all(g).then(function(){let w;return u===Hi?w=a[ne.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(h):w=new u(h),c.name&&(w.name=c.name),$t(w,c),r.associations.set(w,{materials:i}),c.extensions&&On(a,w,c),w})}createUniqueName(i){const r=f.PropertyBinding.sanitizeNodeName(i||"");let s=r;for(let a=1;this.nodeNamesUsed[s];++a)s=r+"_"+a;return this.nodeNamesUsed[s]=!0,s}loadGeometries(i){const r=this,s=this.extensions,a=this.primitiveCache;function c(h){return s[ne.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(h,r).then(function(m){return Cr(m,h,r)})}const u=[];for(let h=0,m=i.length;h<m;h++){const g=i[h],y=ma(g),w=a[y];if(w)u.push(w.promise);else{let C;g.extensions&&g.extensions[ne.KHR_DRACO_MESH_COMPRESSION]?C=c(g):C=Cr(new f.BufferGeometry,g,r),a[y]={primitive:g,promise:C},u.push(C)}}return Promise.all(u)}loadMesh(i){const r=this,s=this.json,a=this.extensions,c=s.meshes[i],u=c.primitives,h=[];for(let m=0,g=u.length;m<g;m++){const y=u[m].material===void 0?ua(this.cache):this.getDependency("material",u[m].material);h.push(y)}return h.push(r.loadGeometries(u)),Promise.all(h).then(function(m){const g=m.slice(0,m.length-1),y=m[m.length-1],w=[];for(let L=0,I=y.length;L<I;L++){const T=y[L],O=u[L];let E;const G=g[L];if(O.mode===ft.TRIANGLES||O.mode===ft.TRIANGLE_STRIP||O.mode===ft.TRIANGLE_FAN||O.mode===void 0)E=c.isSkinnedMesh===!0?new f.SkinnedMesh(T,G):new f.Mesh(T,G),E.isSkinnedMesh===!0&&!E.geometry.attributes.skinWeight.normalized&&E.normalizeSkinWeights(),O.mode===ft.TRIANGLE_STRIP?E.geometry=Pr(E.geometry,f.TriangleStripDrawMode):O.mode===ft.TRIANGLE_FAN&&(E.geometry=Pr(E.geometry,f.TriangleFanDrawMode));else if(O.mode===ft.LINES)E=new f.LineSegments(T,G);else if(O.mode===ft.LINE_STRIP)E=new f.Line(T,G);else if(O.mode===ft.LINE_LOOP)E=new f.LineLoop(T,G);else if(O.mode===ft.POINTS)E=new f.Points(T,G);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+O.mode);Object.keys(E.geometry.morphAttributes).length>0&&da(E,c),E.name=r.createUniqueName(c.name||"mesh_"+i),$t(E,c),O.extensions&&On(a,E,O),r.assignFinalMaterial(E),w.push(E)}for(let L=0,I=w.length;L<I;L++)r.associations.set(w[L],{meshes:i,primitives:L});if(w.length===1)return w[0];const C=new f.Group;r.associations.set(C,{meshes:i});for(let L=0,I=w.length;L<I;L++)C.add(w[L]);return C})}loadCamera(i){let r;const s=this.json.cameras[i],a=s[s.type];if(!a){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return s.type==="perspective"?r=new f.PerspectiveCamera(f.MathUtils.radToDeg(a.yfov),a.aspectRatio||1,a.znear||1,a.zfar||2e6):s.type==="orthographic"&&(r=new f.OrthographicCamera(-a.xmag,a.xmag,a.ymag,-a.ymag,a.znear,a.zfar)),s.name&&(r.name=this.createUniqueName(s.name)),$t(r,s),Promise.resolve(r)}loadSkin(i){const r=this.json.skins[i],s={joints:r.joints};return r.inverseBindMatrices===void 0?Promise.resolve(s):this.getDependency("accessor",r.inverseBindMatrices).then(function(a){return s.inverseBindMatrices=a,s})}loadAnimation(i){const s=this.json.animations[i],a=[],c=[],u=[],h=[],m=[];for(let g=0,y=s.channels.length;g<y;g++){const w=s.channels[g],C=s.samplers[w.sampler],L=w.target,I=L.node,T=s.parameters!==void 0?s.parameters[C.input]:C.input,O=s.parameters!==void 0?s.parameters[C.output]:C.output;a.push(this.getDependency("node",I)),c.push(this.getDependency("accessor",T)),u.push(this.getDependency("accessor",O)),h.push(C),m.push(L)}return Promise.all([Promise.all(a),Promise.all(c),Promise.all(u),Promise.all(h),Promise.all(m)]).then(function(g){const y=g[0],w=g[1],C=g[2],L=g[3],I=g[4],T=[];for(let E=0,G=y.length;E<G;E++){const N=y[E],Z=w[E],se=C[E],Y=L[E],z=I[E];if(N===void 0)continue;N.updateMatrix();let K;switch(Vt[z.path]){case Vt.weights:K=f.NumberKeyframeTrack;break;case Vt.rotation:K=f.QuaternionKeyframeTrack;break;case Vt.position:case Vt.scale:default:K=f.VectorKeyframeTrack;break}const te=N.name?N.name:N.uuid,W=Y.interpolation!==void 0?pa[Y.interpolation]:f.InterpolateLinear,ve=[];Vt[z.path]===Vt.weights?N.traverse(function(ue){ue.morphTargetInfluences&&ve.push(ue.name?ue.name:ue.uuid)}):ve.push(te);let be=se.array;if(se.normalized){const ue=ns(be.constructor),he=new Float32Array(be.length);for(let we=0,J=be.length;we<J;we++)he[we]=be[we]*ue;be=he}for(let ue=0,he=ve.length;ue<he;ue++){const we=new K(ve[ue]+"."+Vt[z.path],Z.array,be,W);Y.interpolation==="CUBICSPLINE"&&(we.createInterpolant=function(X){const qe=this instanceof f.QuaternionKeyframeTrack?ca:br;return new qe(this.times,this.values,this.getValueSize()/3,X)},we.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0),T.push(we)}}const O=s.name?s.name:"animation_"+i;return new f.AnimationClip(O,void 0,T)})}createNodeMesh(i){const r=this.json,s=this,a=r.nodes[i];return a.mesh===void 0?null:s.getDependency("mesh",a.mesh).then(function(c){const u=s._getNodeRef(s.meshCache,a.mesh,c);return a.weights!==void 0&&u.traverse(function(h){if(h.isMesh)for(let m=0,g=a.weights.length;m<g;m++)h.morphTargetInfluences[m]=a.weights[m]}),u})}loadNode(i){const r=this.json,s=this.extensions,a=this,c=r.nodes[i],u=c.name?a.createUniqueName(c.name):"";return function(){const h=[],m=a._invokeOne(function(g){return g.createNodeMesh&&g.createNodeMesh(i)});return m&&h.push(m),c.camera!==void 0&&h.push(a.getDependency("camera",c.camera).then(function(g){return a._getNodeRef(a.cameraCache,c.camera,g)})),a._invokeAll(function(g){return g.createNodeAttachment&&g.createNodeAttachment(i)}).forEach(function(g){h.push(g)}),Promise.all(h)}().then(function(h){let m;if(c.isBone===!0?m=new f.Bone:h.length>1?m=new f.Group:h.length===1?m=h[0]:m=new f.Object3D,m!==h[0])for(let g=0,y=h.length;g<y;g++)m.add(h[g]);if(c.name&&(m.userData.name=c.name,m.name=u),$t(m,c),c.extensions&&On(s,m,c),c.matrix!==void 0){const g=new f.Matrix4;g.fromArray(c.matrix),m.applyMatrix4(g)}else c.translation!==void 0&&m.position.fromArray(c.translation),c.rotation!==void 0&&m.quaternion.fromArray(c.rotation),c.scale!==void 0&&m.scale.fromArray(c.scale);return a.associations.has(m)||a.associations.set(m,{}),a.associations.get(m).nodes=i,m})}loadScene(i){const r=this.json,s=this.extensions,a=this.json.scenes[i],c=this,u=new f.Group;a.name&&(u.name=c.createUniqueName(a.name)),$t(u,a),a.extensions&&On(s,u,a);const h=a.nodes||[],m=[];for(let g=0,y=h.length;g<y;g++)m.push(xr(h[g],u,r,c));return Promise.all(m).then(function(){const g=y=>{const w=new Map;for(const[C,L]of c.associations)(C instanceof f.Material||C instanceof f.Texture)&&w.set(C,L);return y.traverse(C=>{const L=c.associations.get(C);L!=null&&w.set(C,L)}),w};return c.associations=g(u),u})}}function xr(_,i,r,s){const a=r.nodes[_];return s.getDependency("node",_).then(function(c){if(a.skin===void 0)return c;let u;return s.getDependency("skin",a.skin).then(function(h){u=h;const m=[];for(let g=0,y=u.joints.length;g<y;g++)m.push(s.getDependency("node",u.joints[g]));return Promise.all(m)}).then(function(h){return c.traverse(function(m){if(!m.isMesh)return;const g=[],y=[];for(let w=0,C=h.length;w<C;w++){const L=h[w];if(L){g.push(L);const I=new f.Matrix4;u.inverseBindMatrices!==void 0&&I.fromArray(u.inverseBindMatrices.array,w*16),y.push(I)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',u.joints[w])}m.bind(new f.Skeleton(g,y),m.matrixWorld)}),c})}).then(function(c){i.add(c);const u=[];if(a.children){const h=a.children;for(let m=0,g=h.length;m<g;m++){const y=h[m];u.push(xr(y,c,r,s))}}return Promise.all(u)})}function ba(_,i,r){const s=i.attributes,a=new f.Box3;if(s.POSITION!==void 0){const h=r.json.accessors[s.POSITION],m=h.min,g=h.max;if(m!==void 0&&g!==void 0){if(a.set(new f.Vector3(m[0],m[1],m[2]),new f.Vector3(g[0],g[1],g[2])),h.normalized){const y=ns(Tn[h.componentType]);a.min.multiplyScalar(y),a.max.multiplyScalar(y)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const c=i.targets;if(c!==void 0){const h=new f.Vector3,m=new f.Vector3;for(let g=0,y=c.length;g<y;g++){const w=c[g];if(w.POSITION!==void 0){const C=r.json.accessors[w.POSITION],L=C.min,I=C.max;if(L!==void 0&&I!==void 0){if(m.setX(Math.max(Math.abs(L[0]),Math.abs(I[0]))),m.setY(Math.max(Math.abs(L[1]),Math.abs(I[1]))),m.setZ(Math.max(Math.abs(L[2]),Math.abs(I[2]))),C.normalized){const T=ns(Tn[C.componentType]);m.multiplyScalar(T)}h.max(m)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}a.expandByVector(h)}_.boundingBox=a;const u=new f.Sphere;a.getCenter(u.center),u.radius=a.min.distanceTo(a.max)/2,_.boundingSphere=u}function Cr(_,i,r){const s=i.attributes,a=[];function c(u,h){return r.getDependency("accessor",u).then(function(m){_.setAttribute(h,m)})}for(const u in s){const h=es[u]||u.toLowerCase();h in _.attributes||a.push(c(s[u],h))}if(i.indices!==void 0&&!_.index){const u=r.getDependency("accessor",i.indices).then(function(h){_.setIndex(h)});a.push(u)}return $t(_,i),ba(_,i,r),Promise.all(a).then(function(){return i.targets!==void 0?ha(_,i.targets,r):_})}function Pr(_,i){let r=_.getIndex();if(r===null){const u=[],h=_.getAttribute("position");if(h!==void 0){for(let m=0;m<h.count;m++)u.push(m);_.setIndex(u),r=_.getIndex()}else return console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),_}const s=r.count-2,a=[];if(i===f.TriangleFanDrawMode)for(let u=1;u<=s;u++)a.push(r.getX(0)),a.push(r.getX(u)),a.push(r.getX(u+1));else for(let u=0;u<s;u++)u%2===0?(a.push(r.getX(u)),a.push(r.getX(u+1)),a.push(r.getX(u+2))):(a.push(r.getX(u+2)),a.push(r.getX(u+1)),a.push(r.getX(u)));a.length/3!==s&&console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const c=_.clone();return c.setIndex(a),c}class ga extends f.ExtrudeGeometry{constructor(i,r){const{bevelEnabled:s=!1,bevelSize:a=8,bevelThickness:c=10,font:u,height:h=50,size:m=100,lineHeight:g=1,letterSpacing:y=0,...w}=r,C=u.generateShapes(i,m,{lineHeight:g,letterSpacing:y});super(C,{...w,bevelEnabled:s,bevelSize:a,bevelThickness:c,depth:h}),this.type="TextGeometry"}}function Mr(_,i,r){const s=r.length-_-1;if(i>=r[s])return s-1;if(i<=r[_])return _;let a=_,c=s,u=Math.floor((a+c)/2);for(;i<r[u]||i>=r[u+1];)i<r[u]?c=u:a=u,u=Math.floor((a+c)/2);return u}function wa(_,i,r,s){const a=[],c=[],u=[];a[0]=1;for(let h=1;h<=r;++h){c[h]=i-s[_+1-h],u[h]=s[_+h]-i;let m=0;for(let g=0;g<h;++g){const y=u[g+1],w=c[h-g],C=a[g]/(y+w);a[g]=m+y*C,m=w*C}a[h]=m}return a}function _a(_,i,r,s){const a=Mr(_,s,i),c=wa(a,s,_,i),u=new f.Vector4(0,0,0,0);for(let h=0;h<=_;++h){const m=r[a-_+h],g=c[h],y=m.w*g;u.x+=m.x*y,u.y+=m.y*y,u.z+=m.z*y,u.w+=m.w*g}return u}function ya(_,i,r,s,a){const c=[];for(let C=0;C<=r;++C)c[C]=0;const u=[];for(let C=0;C<=s;++C)u[C]=c.slice(0);const h=[];for(let C=0;C<=r;++C)h[C]=c.slice(0);h[0][0]=1;const m=c.slice(0),g=c.slice(0);for(let C=1;C<=r;++C){m[C]=i-a[_+1-C],g[C]=a[_+C]-i;let L=0;for(let I=0;I<C;++I){const T=g[I+1],O=m[C-I];h[C][I]=T+O;const E=h[I][C-1]/h[C][I];h[I][C]=L+T*E,L=O*E}h[C][C]=L}for(let C=0;C<=r;++C)u[0][C]=h[C][r];for(let C=0;C<=r;++C){let L=0,I=1;const T=[];for(let O=0;O<=r;++O)T[O]=c.slice(0);T[0][0]=1;for(let O=1;O<=s;++O){let E=0;const G=C-O,N=r-O;C>=O&&(T[I][0]=T[L][0]/h[N+1][G],E=T[I][0]*h[G][N]);const Z=G>=-1?1:-G,se=C-1<=N?O-1:r-C;for(let Y=Z;Y<=se;++Y)T[I][Y]=(T[L][Y]-T[L][Y-1])/h[N+1][G+Y],E+=T[I][Y]*h[G+Y][N];C<=N&&(T[I][O]=-T[L][O-1]/h[N+1][C],E+=T[I][O]*h[C][N]),u[O][C]=E;var y=L;L=I,I=y}}var w=r;for(let C=1;C<=s;++C){for(let L=0;L<=r;++L)u[C][L]*=w;w*=r-C}return u}function xa(_,i,r,s,a){const c=a<_?a:_,u=[],h=Mr(_,s,i),m=ya(h,s,_,c,i),g=[];for(let w=0;w<r.length;++w){var y=r[w].clone();const C=y.w;y.x*=C,y.y*=C,y.z*=C,g[w]=y}for(let w=0;w<=c;++w){var y=g[h-_].clone().multiplyScalar(m[w][0]);for(let L=1;L<=_;++L)y.add(g[h-_+L].clone().multiplyScalar(m[w][L]));u[w]=y}for(let w=c+1;w<=a+1;++w)u[w]=new f.Vector4(0,0,0);return u}function Ca(_,i){let r=1;for(let a=2;a<=_;++a)r*=a;let s=1;for(let a=2;a<=i;++a)s*=a;for(let a=2;a<=_-i;++a)s*=a;return r/s}function Pa(_){const i=_.length,r=[],s=[];for(let c=0;c<i;++c){const u=_[c];r[c]=new f.Vector3(u.x,u.y,u.z),s[c]=u.w}const a=[];for(let c=0;c<i;++c){const u=r[c].clone();for(let h=1;h<=c;++h)u.sub(a[c-h].clone().multiplyScalar(Ca(c,h)*s[h]));a[c]=u.divideScalar(s[0])}return a}function Ma(_,i,r,s,a){const c=xa(_,i,r,s,a);return Pa(c)}class kr extends f.Curve{constructor(i,r,s,a,c){super(),this.degree=i,this.knots=r,this.controlPoints=[],this.startKnot=a||0,this.endKnot=c||this.knots.length-1;for(let u=0;u<s.length;++u){const h=s[u];this.controlPoints[u]=new f.Vector4(h.x,h.y,h.z,h.w)}}getPoint(i,r){const s=r||new f.Vector3,a=this.knots[this.startKnot]+i*(this.knots[this.endKnot]-this.knots[this.startKnot]),c=_a(this.degree,this.knots,this.controlPoints,a);return c.w!=1&&c.divideScalar(c.w),s.set(c.x,c.y,c.z)}getTangent(i,r){const s=r||new f.Vector3,a=this.knots[0]+i*(this.knots[this.knots.length-1]-this.knots[0]),c=Ma(this.degree,this.knots,this.controlPoints,a,1);return s.copy(c[1]).normalize(),s}}let ie,ge,Fe;class ka extends f.Loader{constructor(i){super(i)}load(i,r,s,a){const c=this,u=c.path===""?f.LoaderUtils.extractUrlBase(i):c.path,h=new f.FileLoader(this.manager);h.setPath(c.path),h.setResponseType("arraybuffer"),h.setRequestHeader(c.requestHeader),h.setWithCredentials(c.withCredentials),h.load(i,function(m){try{r(c.parse(m,u))}catch(g){a?a(g):console.error(g),c.manager.itemError(i)}},s,a)}parse(i,r){if(Da(i))ie=new Ia().parse(i);else{const a=Dr(i);if(!Ta(a))throw new Error("THREE.FBXLoader: Unknown format.");if(Ar(a)<7e3)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+Ar(a));ie=new Va().parse(a)}const s=new f.TextureLoader(this.manager).setPath(this.resourcePath||r).setCrossOrigin(this.crossOrigin);return new Sa(s,this.manager).parse(ie)}}class Sa{constructor(i,r){this.textureLoader=i,this.manager=r}parse(){ge=this.parseConnections();const i=this.parseImages(),r=this.parseTextures(i),s=this.parseMaterials(r),a=this.parseDeformers(),c=new La().parse(a);return this.parseScene(a,c,s),Fe}parseConnections(){const i=new Map;return"Connections"in ie&&ie.Connections.connections.forEach(function(s){const a=s[0],c=s[1],u=s[2];i.has(a)||i.set(a,{parents:[],children:[]});const h={ID:c,relationship:u};i.get(a).parents.push(h),i.has(c)||i.set(c,{parents:[],children:[]});const m={ID:a,relationship:u};i.get(c).children.push(m)}),i}parseImages(){const i={},r={};if("Video"in ie.Objects){const s=ie.Objects.Video;for(const a in s){const c=s[a],u=parseInt(a);if(i[u]=c.RelativeFilename||c.Filename,"Content"in c){const h=c.Content instanceof ArrayBuffer&&c.Content.byteLength>0,m=typeof c.Content=="string"&&c.Content!=="";if(h||m){const g=this.parseImage(s[a]);r[c.RelativeFilename||c.Filename]=g}}}}for(const s in i){const a=i[s];r[a]!==void 0?i[s]=r[a]:i[s]=i[s].split("\\").pop()}return i}parseImage(i){const r=i.Content,s=i.RelativeFilename||i.Filename,a=s.slice(s.lastIndexOf(".")+1).toLowerCase();let c;switch(a){case"bmp":c="image/bmp";break;case"jpg":case"jpeg":c="image/jpeg";break;case"png":c="image/png";break;case"tif":c="image/tiff";break;case"tga":this.manager.getHandler(".tga")===null&&console.warn("FBXLoader: TGA loader not found, skipping ",s),c="image/tga";break;default:console.warn('FBXLoader: Image type "'+a+'" is not supported.');return}if(typeof r=="string")return"data:"+c+";base64,"+r;{const u=new Uint8Array(r);return window.URL.createObjectURL(new Blob([u],{type:c}))}}parseTextures(i){const r=new Map;if("Texture"in ie.Objects){const s=ie.Objects.Texture;for(const a in s){const c=this.parseTexture(s[a],i);r.set(parseInt(a),c)}}return r}parseTexture(i,r){const s=this.loadTexture(i,r);s.ID=i.id,s.name=i.attrName;const a=i.WrapModeU,c=i.WrapModeV,u=a!==void 0?a.value:0,h=c!==void 0?c.value:0;if(s.wrapS=u===0?f.RepeatWrapping:f.ClampToEdgeWrapping,s.wrapT=h===0?f.RepeatWrapping:f.ClampToEdgeWrapping,"Scaling"in i){const m=i.Scaling.value;s.repeat.x=m[0],s.repeat.y=m[1]}return s}loadTexture(i,r){let s;const a=this.textureLoader.path,c=ge.get(i.id).children;c!==void 0&&c.length>0&&r[c[0].ID]!==void 0&&(s=r[c[0].ID],(s.indexOf("blob:")===0||s.indexOf("data:")===0)&&this.textureLoader.setPath(void 0));let u;const h=i.FileName.slice(-3).toLowerCase();if(h==="tga"){const m=this.manager.getHandler(".tga");m===null?(console.warn("FBXLoader: TGA loader not found, creating placeholder texture for",i.RelativeFilename),u=new f.Texture):(m.setPath(this.textureLoader.path),u=m.load(s))}else h==="psd"?(console.warn("FBXLoader: PSD textures are not supported, creating placeholder texture for",i.RelativeFilename),u=new f.Texture):u=this.textureLoader.load(s);return this.textureLoader.setPath(a),u}parseMaterials(i){const r=new Map;if("Material"in ie.Objects){const s=ie.Objects.Material;for(const a in s){const c=this.parseMaterial(s[a],i);c!==null&&r.set(parseInt(a),c)}}return r}parseMaterial(i,r){const s=i.id,a=i.attrName;let c=i.ShadingModel;if(typeof c=="object"&&(c=c.value),!ge.has(s))return null;const u=this.parseParameters(i,r,s);let h;switch(c.toLowerCase()){case"phong":h=new f.MeshPhongMaterial;break;case"lambert":h=new f.MeshLambertMaterial;break;default:console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.',c),h=new f.MeshPhongMaterial;break}return h.setValues(u),h.name=a,h}parseParameters(i,r,s){const a={};i.BumpFactor&&(a.bumpScale=i.BumpFactor.value),i.Diffuse?a.color=new f.Color().fromArray(i.Diffuse.value):i.DiffuseColor&&(i.DiffuseColor.type==="Color"||i.DiffuseColor.type==="ColorRGB")&&(a.color=new f.Color().fromArray(i.DiffuseColor.value)),i.DisplacementFactor&&(a.displacementScale=i.DisplacementFactor.value),i.Emissive?a.emissive=new f.Color().fromArray(i.Emissive.value):i.EmissiveColor&&(i.EmissiveColor.type==="Color"||i.EmissiveColor.type==="ColorRGB")&&(a.emissive=new f.Color().fromArray(i.EmissiveColor.value)),i.EmissiveFactor&&(a.emissiveIntensity=parseFloat(i.EmissiveFactor.value)),i.Opacity&&(a.opacity=parseFloat(i.Opacity.value)),a.opacity<1&&(a.transparent=!0),i.ReflectionFactor&&(a.reflectivity=i.ReflectionFactor.value),i.Shininess&&(a.shininess=i.Shininess.value),i.Specular?a.specular=new f.Color().fromArray(i.Specular.value):i.SpecularColor&&i.SpecularColor.type==="Color"&&(a.specular=new f.Color().fromArray(i.SpecularColor.value));const c=this;return ge.get(s).children.forEach(function(u){const h=u.relationship;switch(h){case"Bump":a.bumpMap=c.getTexture(r,u.ID);break;case"Maya|TEX_ao_map":a.aoMap=c.getTexture(r,u.ID);break;case"DiffuseColor":case"Maya|TEX_color_map":a.map=c.getTexture(r,u.ID),a.map!==void 0&&(a.map.encoding=f.sRGBEncoding);break;case"DisplacementColor":a.displacementMap=c.getTexture(r,u.ID);break;case"EmissiveColor":a.emissiveMap=c.getTexture(r,u.ID),a.emissiveMap!==void 0&&(a.emissiveMap.encoding=f.sRGBEncoding);break;case"NormalMap":case"Maya|TEX_normal_map":a.normalMap=c.getTexture(r,u.ID);break;case"ReflectionColor":a.envMap=c.getTexture(r,u.ID),a.envMap!==void 0&&(a.envMap.mapping=f.EquirectangularReflectionMapping,a.envMap.encoding=f.sRGBEncoding);break;case"SpecularColor":a.specularMap=c.getTexture(r,u.ID),a.specularMap!==void 0&&(a.specularMap.encoding=f.sRGBEncoding);break;case"TransparentColor":case"TransparencyFactor":a.alphaMap=c.getTexture(r,u.ID),a.transparent=!0;break;case"AmbientColor":case"ShininessExponent":case"SpecularFactor":case"VectorDisplacementColor":default:console.warn("THREE.FBXLoader: %s map is not supported in three.js, skipping texture.",h);break}}),a}getTexture(i,r){return"LayeredTexture"in ie.Objects&&r in ie.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),r=ge.get(r).children[0].ID),i.get(r)}parseDeformers(){const i={},r={};if("Deformer"in ie.Objects){const s=ie.Objects.Deformer;for(const a in s){const c=s[a],u=ge.get(parseInt(a));if(c.attrType==="Skin"){const h=this.parseSkeleton(u,s);h.ID=a,u.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),h.geometryID=u.parents[0].ID,i[a]=h}else if(c.attrType==="BlendShape"){const h={id:a};h.rawTargets=this.parseMorphTargets(u,s),h.id=a,u.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),r[a]=h}}}return{skeletons:i,morphTargets:r}}parseSkeleton(i,r){const s=[];return i.children.forEach(function(a){const c=r[a.ID];if(c.attrType!=="Cluster")return;const u={ID:a.ID,indices:[],weights:[],transformLink:new f.Matrix4().fromArray(c.TransformLink.a)};"Indexes"in c&&(u.indices=c.Indexes.a,u.weights=c.Weights.a),s.push(u)}),{rawBones:s,bones:[]}}parseMorphTargets(i,r){const s=[];for(let a=0;a<i.children.length;a++){const c=i.children[a],u=r[c.ID],h={name:u.attrName,initialWeight:u.DeformPercent,id:u.id,fullWeights:u.FullWeights.a};if(u.attrType!=="BlendShapeChannel")return;h.geoID=ge.get(parseInt(c.ID)).children.filter(function(m){return m.relationship===void 0})[0].ID,s.push(h)}return s}parseScene(i,r,s){Fe=new f.Group;const a=this.parseModels(i.skeletons,r,s),c=ie.Objects.Model,u=this;a.forEach(function(m){const g=c[m.ID];u.setLookAtProperties(m,g),ge.get(m.ID).parents.forEach(function(w){const C=a.get(w.ID);C!==void 0&&C.add(m)}),m.parent===null&&Fe.add(m)}),this.bindSkeleton(i.skeletons,r,a),this.createAmbientLight(),Fe.traverse(function(m){if(m.userData.transformData){m.parent&&(m.userData.transformData.parentMatrix=m.parent.matrix,m.userData.transformData.parentMatrixWorld=m.parent.matrixWorld);const g=Vr(m.userData.transformData);m.applyMatrix4(g),m.updateWorldMatrix()}});const h=new Aa().parse();Fe.children.length===1&&Fe.children[0].isGroup&&(Fe.children[0].animations=h,Fe=Fe.children[0]),Fe.animations=h}parseModels(i,r,s){const a=new Map,c=ie.Objects.Model;for(const u in c){const h=parseInt(u),m=c[u],g=ge.get(h);let y=this.buildSkeleton(g,i,h,m.attrName);if(!y){switch(m.attrType){case"Camera":y=this.createCamera(g);break;case"Light":y=this.createLight(g);break;case"Mesh":y=this.createMesh(g,r,s);break;case"NurbsCurve":y=this.createCurve(g,r);break;case"LimbNode":case"Root":y=new f.Bone;break;case"Null":default:y=new f.Group;break}y.name=m.attrName?f.PropertyBinding.sanitizeNodeName(m.attrName):"",y.ID=h}this.getTransformData(y,m),a.set(h,y)}return a}buildSkeleton(i,r,s,a){let c=null;return i.parents.forEach(function(u){for(const h in r){const m=r[h];m.rawBones.forEach(function(g,y){if(g.ID===u.ID){const w=c;c=new f.Bone,c.matrixWorld.copy(g.transformLink),c.name=a?f.PropertyBinding.sanitizeNodeName(a):"",c.ID=s,m.bones[y]=c,w!==null&&c.add(w)}})}}),c}createCamera(i){let r,s;if(i.children.forEach(function(a){const c=ie.Objects.NodeAttribute[a.ID];c!==void 0&&(s=c)}),s===void 0)r=new f.Object3D;else{let a=0;s.CameraProjectionType!==void 0&&s.CameraProjectionType.value===1&&(a=1);let c=1;s.NearPlane!==void 0&&(c=s.NearPlane.value/1e3);let u=1e3;s.FarPlane!==void 0&&(u=s.FarPlane.value/1e3);let h=window.innerWidth,m=window.innerHeight;s.AspectWidth!==void 0&&s.AspectHeight!==void 0&&(h=s.AspectWidth.value,m=s.AspectHeight.value);const g=h/m;let y=45;s.FieldOfView!==void 0&&(y=s.FieldOfView.value);const w=s.FocalLength?s.FocalLength.value:null;switch(a){case 0:r=new f.PerspectiveCamera(y,g,c,u),w!==null&&r.setFocalLength(w);break;case 1:r=new f.OrthographicCamera(-h/2,h/2,m/2,-m/2,c,u);break;default:console.warn("THREE.FBXLoader: Unknown camera type "+a+"."),r=new f.Object3D;break}}return r}createLight(i){let r,s;if(i.children.forEach(function(a){const c=ie.Objects.NodeAttribute[a.ID];c!==void 0&&(s=c)}),s===void 0)r=new f.Object3D;else{let a;s.LightType===void 0?a=0:a=s.LightType.value;let c=16777215;s.Color!==void 0&&(c=new f.Color().fromArray(s.Color.value));let u=s.Intensity===void 0?1:s.Intensity.value/100;s.CastLightOnObject!==void 0&&s.CastLightOnObject.value===0&&(u=0);let h=0;s.FarAttenuationEnd!==void 0&&(s.EnableFarAttenuation!==void 0&&s.EnableFarAttenuation.value===0?h=0:h=s.FarAttenuationEnd.value);const m=1;switch(a){case 0:r=new f.PointLight(c,u,h,m);break;case 1:r=new f.DirectionalLight(c,u);break;case 2:let g=Math.PI/3;s.InnerAngle!==void 0&&(g=f.MathUtils.degToRad(s.InnerAngle.value));let y=0;s.OuterAngle!==void 0&&(y=f.MathUtils.degToRad(s.OuterAngle.value),y=Math.max(y,1)),r=new f.SpotLight(c,u,h,g,y,m);break;default:console.warn("THREE.FBXLoader: Unknown light type "+s.LightType.value+", defaulting to a PointLight."),r=new f.PointLight(c,u);break}s.CastShadows!==void 0&&s.CastShadows.value===1&&(r.castShadow=!0)}return r}createMesh(i,r,s){let a,c=null,u=null;const h=[];return i.children.forEach(function(m){r.has(m.ID)&&(c=r.get(m.ID)),s.has(m.ID)&&h.push(s.get(m.ID))}),h.length>1?u=h:h.length>0?u=h[0]:(u=new f.MeshPhongMaterial({color:13421772}),h.push(u)),"color"in c.attributes&&h.forEach(function(m){m.vertexColors=!0}),c.FBX_Deformer?(a=new f.SkinnedMesh(c,u),a.normalizeSkinWeights()):a=new f.Mesh(c,u),a}createCurve(i,r){const s=i.children.reduce(function(c,u){return r.has(u.ID)&&(c=r.get(u.ID)),c},null),a=new f.LineBasicMaterial({color:3342591,linewidth:1});return new f.Line(s,a)}getTransformData(i,r){const s={};"InheritType"in r&&(s.inheritType=parseInt(r.InheritType.value)),"RotationOrder"in r?s.eulerOrder=Ir(r.RotationOrder.value):s.eulerOrder="ZYX","Lcl_Translation"in r&&(s.translation=r.Lcl_Translation.value),"PreRotation"in r&&(s.preRotation=r.PreRotation.value),"Lcl_Rotation"in r&&(s.rotation=r.Lcl_Rotation.value),"PostRotation"in r&&(s.postRotation=r.PostRotation.value),"Lcl_Scaling"in r&&(s.scale=r.Lcl_Scaling.value),"ScalingOffset"in r&&(s.scalingOffset=r.ScalingOffset.value),"ScalingPivot"in r&&(s.scalingPivot=r.ScalingPivot.value),"RotationOffset"in r&&(s.rotationOffset=r.RotationOffset.value),"RotationPivot"in r&&(s.rotationPivot=r.RotationPivot.value),i.userData.transformData=s}setLookAtProperties(i,r){"LookAtProperty"in r&&ge.get(i.ID).children.forEach(function(a){if(a.relationship==="LookAtProperty"){const c=ie.Objects.Model[a.ID];if("Lcl_Translation"in c){const u=c.Lcl_Translation.value;i.target!==void 0?(i.target.position.fromArray(u),Fe.add(i.target)):i.lookAt(new f.Vector3().fromArray(u))}}})}bindSkeleton(i,r,s){const a=this.parsePoseNodes();for(const c in i){const u=i[c];ge.get(parseInt(u.ID)).parents.forEach(function(m){if(r.has(m.ID)){const g=m.ID;ge.get(g).parents.forEach(function(w){s.has(w.ID)&&s.get(w.ID).bind(new f.Skeleton(u.bones),a[w.ID])})}})}}parsePoseNodes(){const i={};if("Pose"in ie.Objects){const r=ie.Objects.Pose;for(const s in r)if(r[s].attrType==="BindPose"&&r[s].NbPoseNodes>0){const a=r[s].PoseNode;Array.isArray(a)?a.forEach(function(c){i[c.Node]=new f.Matrix4().fromArray(c.Matrix.a)}):i[a.Node]=new f.Matrix4().fromArray(a.Matrix.a)}}return i}createAmbientLight(){if("GlobalSettings"in ie&&"AmbientColor"in ie.GlobalSettings){const i=ie.GlobalSettings.AmbientColor.value,r=i[0],s=i[1],a=i[2];if(r!==0||s!==0||a!==0){const c=new f.Color(r,s,a);Fe.add(new f.AmbientLight(c,1))}}}}class La{parse(i){const r=new Map;if("Geometry"in ie.Objects){const s=ie.Objects.Geometry;for(const a in s){const c=ge.get(parseInt(a)),u=this.parseGeometry(c,s[a],i);r.set(parseInt(a),u)}}return r}parseGeometry(i,r,s){switch(r.attrType){case"Mesh":return this.parseMeshGeometry(i,r,s);case"NurbsCurve":return this.parseNurbsGeometry(r)}}parseMeshGeometry(i,r,s){const a=s.skeletons,c=[],u=i.parents.map(function(w){return ie.Objects.Model[w.ID]});if(u.length===0)return;const h=i.children.reduce(function(w,C){return a[C.ID]!==void 0&&(w=a[C.ID]),w},null);i.children.forEach(function(w){s.morphTargets[w.ID]!==void 0&&c.push(s.morphTargets[w.ID])});const m=u[0],g={};"RotationOrder"in m&&(g.eulerOrder=Ir(m.RotationOrder.value)),"InheritType"in m&&(g.inheritType=parseInt(m.InheritType.value)),"GeometricTranslation"in m&&(g.translation=m.GeometricTranslation.value),"GeometricRotation"in m&&(g.rotation=m.GeometricRotation.value),"GeometricScaling"in m&&(g.scale=m.GeometricScaling.value);const y=Vr(g);return this.genGeometry(r,h,c,y)}genGeometry(i,r,s,a){const c=new f.BufferGeometry;i.attrName&&(c.name=i.attrName);const u=this.parseGeoNode(i,r),h=this.genBuffers(u),m=new f.Float32BufferAttribute(h.vertex,3);if(m.applyMatrix4(a),c.setAttribute("position",m),h.colors.length>0&&c.setAttribute("color",new f.Float32BufferAttribute(h.colors,3)),r&&(c.setAttribute("skinIndex",new f.Uint16BufferAttribute(h.weightsIndices,4)),c.setAttribute("skinWeight",new f.Float32BufferAttribute(h.vertexWeights,4)),c.FBX_Deformer=r),h.normal.length>0){const g=new f.Matrix3().getNormalMatrix(a),y=new f.Float32BufferAttribute(h.normal,3);y.applyNormalMatrix(g),c.setAttribute("normal",y)}if(h.uvs.forEach(function(g,y){let w="uv"+(y+1).toString();y===0&&(w="uv"),c.setAttribute(w,new f.Float32BufferAttribute(h.uvs[y],2))}),u.material&&u.material.mappingType!=="AllSame"){let g=h.materialIndex[0],y=0;if(h.materialIndex.forEach(function(w,C){w!==g&&(c.addGroup(y,C-y,g),g=w,y=C)}),c.groups.length>0){const w=c.groups[c.groups.length-1],C=w.start+w.count;C!==h.materialIndex.length&&c.addGroup(C,h.materialIndex.length-C,g)}c.groups.length===0&&c.addGroup(0,h.materialIndex.length,h.materialIndex[0])}return this.addMorphTargets(c,i,s,a),c}parseGeoNode(i,r){const s={};if(s.vertexPositions=i.Vertices!==void 0?i.Vertices.a:[],s.vertexIndices=i.PolygonVertexIndex!==void 0?i.PolygonVertexIndex.a:[],i.LayerElementColor&&(s.color=this.parseVertexColors(i.LayerElementColor[0])),i.LayerElementMaterial&&(s.material=this.parseMaterialIndices(i.LayerElementMaterial[0])),i.LayerElementNormal&&(s.normal=this.parseNormals(i.LayerElementNormal[0])),i.LayerElementUV){s.uv=[];let a=0;for(;i.LayerElementUV[a];)i.LayerElementUV[a].UV&&s.uv.push(this.parseUVs(i.LayerElementUV[a])),a++}return s.weightTable={},r!==null&&(s.skeleton=r,r.rawBones.forEach(function(a,c){a.indices.forEach(function(u,h){s.weightTable[u]===void 0&&(s.weightTable[u]=[]),s.weightTable[u].push({id:c,weight:a.weights[h]})})})),s}genBuffers(i){const r={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]};let s=0,a=0,c=!1,u=[],h=[],m=[],g=[],y=[],w=[];const C=this;return i.vertexIndices.forEach(function(L,I){let T,O=!1;L<0&&(L=L^-1,O=!0);let E=[],G=[];if(u.push(L*3,L*3+1,L*3+2),i.color){const N=hi(I,s,L,i.color);m.push(N[0],N[1],N[2])}if(i.skeleton){if(i.weightTable[L]!==void 0&&i.weightTable[L].forEach(function(N){G.push(N.weight),E.push(N.id)}),G.length>4){c||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),c=!0);const N=[0,0,0,0],Z=[0,0,0,0];G.forEach(function(se,Y){let z=se,K=E[Y];Z.forEach(function(te,W,ve){if(z>te){ve[W]=z,z=te;const be=N[W];N[W]=K,K=be}})}),E=N,G=Z}for(;G.length<4;)G.push(0),E.push(0);for(let N=0;N<4;++N)y.push(G[N]),w.push(E[N])}if(i.normal){const N=hi(I,s,L,i.normal);h.push(N[0],N[1],N[2])}i.material&&i.material.mappingType!=="AllSame"&&(T=hi(I,s,L,i.material)[0]),i.uv&&i.uv.forEach(function(N,Z){const se=hi(I,s,L,N);g[Z]===void 0&&(g[Z]=[]),g[Z].push(se[0]),g[Z].push(se[1])}),a++,O&&(C.genFace(r,i,u,T,h,m,g,y,w,a),s++,a=0,u=[],h=[],m=[],g=[],y=[],w=[])}),r}genFace(i,r,s,a,c,u,h,m,g,y){for(let w=2;w<y;w++)i.vertex.push(r.vertexPositions[s[0]]),i.vertex.push(r.vertexPositions[s[1]]),i.vertex.push(r.vertexPositions[s[2]]),i.vertex.push(r.vertexPositions[s[(w-1)*3]]),i.vertex.push(r.vertexPositions[s[(w-1)*3+1]]),i.vertex.push(r.vertexPositions[s[(w-1)*3+2]]),i.vertex.push(r.vertexPositions[s[w*3]]),i.vertex.push(r.vertexPositions[s[w*3+1]]),i.vertex.push(r.vertexPositions[s[w*3+2]]),r.skeleton&&(i.vertexWeights.push(m[0]),i.vertexWeights.push(m[1]),i.vertexWeights.push(m[2]),i.vertexWeights.push(m[3]),i.vertexWeights.push(m[(w-1)*4]),i.vertexWeights.push(m[(w-1)*4+1]),i.vertexWeights.push(m[(w-1)*4+2]),i.vertexWeights.push(m[(w-1)*4+3]),i.vertexWeights.push(m[w*4]),i.vertexWeights.push(m[w*4+1]),i.vertexWeights.push(m[w*4+2]),i.vertexWeights.push(m[w*4+3]),i.weightsIndices.push(g[0]),i.weightsIndices.push(g[1]),i.weightsIndices.push(g[2]),i.weightsIndices.push(g[3]),i.weightsIndices.push(g[(w-1)*4]),i.weightsIndices.push(g[(w-1)*4+1]),i.weightsIndices.push(g[(w-1)*4+2]),i.weightsIndices.push(g[(w-1)*4+3]),i.weightsIndices.push(g[w*4]),i.weightsIndices.push(g[w*4+1]),i.weightsIndices.push(g[w*4+2]),i.weightsIndices.push(g[w*4+3])),r.color&&(i.colors.push(u[0]),i.colors.push(u[1]),i.colors.push(u[2]),i.colors.push(u[(w-1)*3]),i.colors.push(u[(w-1)*3+1]),i.colors.push(u[(w-1)*3+2]),i.colors.push(u[w*3]),i.colors.push(u[w*3+1]),i.colors.push(u[w*3+2])),r.material&&r.material.mappingType!=="AllSame"&&(i.materialIndex.push(a),i.materialIndex.push(a),i.materialIndex.push(a)),r.normal&&(i.normal.push(c[0]),i.normal.push(c[1]),i.normal.push(c[2]),i.normal.push(c[(w-1)*3]),i.normal.push(c[(w-1)*3+1]),i.normal.push(c[(w-1)*3+2]),i.normal.push(c[w*3]),i.normal.push(c[w*3+1]),i.normal.push(c[w*3+2])),r.uv&&r.uv.forEach(function(C,L){i.uvs[L]===void 0&&(i.uvs[L]=[]),i.uvs[L].push(h[L][0]),i.uvs[L].push(h[L][1]),i.uvs[L].push(h[L][(w-1)*2]),i.uvs[L].push(h[L][(w-1)*2+1]),i.uvs[L].push(h[L][w*2]),i.uvs[L].push(h[L][w*2+1])})}addMorphTargets(i,r,s,a){if(s.length===0)return;i.morphTargetsRelative=!0,i.morphAttributes.position=[];const c=this;s.forEach(function(u){u.rawTargets.forEach(function(h){const m=ie.Objects.Geometry[h.geoID];m!==void 0&&c.genMorphGeometry(i,r,m,a,h.name)})})}genMorphGeometry(i,r,s,a,c){const u=r.PolygonVertexIndex!==void 0?r.PolygonVertexIndex.a:[],h=s.Vertices!==void 0?s.Vertices.a:[],m=s.Indexes!==void 0?s.Indexes.a:[],g=i.attributes.position.count*3,y=new Float32Array(g);for(let I=0;I<m.length;I++){const T=m[I]*3;y[T]=h[I*3],y[T+1]=h[I*3+1],y[T+2]=h[I*3+2]}const w={vertexIndices:u,vertexPositions:y},C=this.genBuffers(w),L=new f.Float32BufferAttribute(C.vertex,3);L.name=c||s.attrName,L.applyMatrix4(a),i.morphAttributes.position.push(L)}parseNormals(i){const r=i.MappingInformationType,s=i.ReferenceInformationType,a=i.Normals.a;let c=[];return s==="IndexToDirect"&&("NormalIndex"in i?c=i.NormalIndex.a:"NormalsIndex"in i&&(c=i.NormalsIndex.a)),{dataSize:3,buffer:a,indices:c,mappingType:r,referenceType:s}}parseUVs(i){const r=i.MappingInformationType,s=i.ReferenceInformationType,a=i.UV.a;let c=[];return s==="IndexToDirect"&&(c=i.UVIndex.a),{dataSize:2,buffer:a,indices:c,mappingType:r,referenceType:s}}parseVertexColors(i){const r=i.MappingInformationType,s=i.ReferenceInformationType,a=i.Colors.a;let c=[];return s==="IndexToDirect"&&(c=i.ColorIndex.a),{dataSize:4,buffer:a,indices:c,mappingType:r,referenceType:s}}parseMaterialIndices(i){const r=i.MappingInformationType,s=i.ReferenceInformationType;if(r==="NoMappingInformation")return{dataSize:1,buffer:[0],indices:[0],mappingType:"AllSame",referenceType:s};const a=i.Materials.a,c=[];for(let u=0;u<a.length;++u)c.push(u);return{dataSize:1,buffer:a,indices:c,mappingType:r,referenceType:s}}parseNurbsGeometry(i){if(kr===void 0)return console.error("THREE.FBXLoader: The loader relies on NURBSCurve for any nurbs present in the model. Nurbs will show up as empty geometry."),new f.BufferGeometry;const r=parseInt(i.Order);if(isNaN(r))return console.error("THREE.FBXLoader: Invalid Order %s given for geometry ID: %s",i.Order,i.id),new f.BufferGeometry;const s=r-1,a=i.KnotVector.a,c=[],u=i.Points.a;for(let w=0,C=u.length;w<C;w+=4)c.push(new f.Vector4().fromArray(u,w));let h,m;if(i.Form==="Closed")c.push(c[0]);else if(i.Form==="Periodic"){h=s,m=a.length-1-h;for(let w=0;w<s;++w)c.push(c[w])}const y=new kr(s,a,c,h,m).getPoints(c.length*12);return new f.BufferGeometry().setFromPoints(y)}}class Aa{parse(){const i=[],r=this.parseClips();if(r!==void 0)for(const s in r){const a=r[s],c=this.addClip(a);i.push(c)}return i}parseClips(){if(ie.Objects.AnimationCurve===void 0)return;const i=this.parseAnimationCurveNodes();this.parseAnimationCurves(i);const r=this.parseAnimationLayers(i);return this.parseAnimStacks(r)}parseAnimationCurveNodes(){const i=ie.Objects.AnimationCurveNode,r=new Map;for(const s in i){const a=i[s];if(a.attrName.match(/S|R|T|DeformPercent/)!==null){const c={id:a.id,attr:a.attrName,curves:{}};r.set(c.id,c)}}return r}parseAnimationCurves(i){const r=ie.Objects.AnimationCurve;for(const s in r){const a={id:r[s].id,times:r[s].KeyTime.a.map(Oa),values:r[s].KeyValueFloat.a},c=ge.get(a.id);if(c!==void 0){const u=c.parents[0].ID,h=c.parents[0].relationship;h.match(/X/)?i.get(u).curves.x=a:h.match(/Y/)?i.get(u).curves.y=a:h.match(/Z/)?i.get(u).curves.z=a:h.match(/d|DeformPercent/)&&i.has(u)&&(i.get(u).curves.morph=a)}}}parseAnimationLayers(i){const r=ie.Objects.AnimationLayer,s=new Map;for(const a in r){const c=[],u=ge.get(parseInt(a));u!==void 0&&(u.children.forEach(function(m,g){if(i.has(m.ID)){const y=i.get(m.ID);if(y.curves.x!==void 0||y.curves.y!==void 0||y.curves.z!==void 0){if(c[g]===void 0){const w=ge.get(m.ID).parents.filter(function(C){return C.relationship!==void 0})[0].ID;if(w!==void 0){const C=ie.Objects.Model[w.toString()];if(C===void 0){console.warn("THREE.FBXLoader: Encountered a unused curve.",m);return}const L={modelName:C.attrName?f.PropertyBinding.sanitizeNodeName(C.attrName):"",ID:C.id,initialPosition:[0,0,0],initialRotation:[0,0,0],initialScale:[1,1,1]};Fe.traverse(function(I){I.ID===C.id&&(L.transform=I.matrix,I.userData.transformData&&(L.eulerOrder=I.userData.transformData.eulerOrder))}),L.transform||(L.transform=new f.Matrix4),"PreRotation"in C&&(L.preRotation=C.PreRotation.value),"PostRotation"in C&&(L.postRotation=C.PostRotation.value),c[g]=L}}c[g]&&(c[g][y.attr]=y)}else if(y.curves.morph!==void 0){if(c[g]===void 0){const w=ge.get(m.ID).parents.filter(function(E){return E.relationship!==void 0})[0].ID,C=ge.get(w).parents[0].ID,L=ge.get(C).parents[0].ID,I=ge.get(L).parents[0].ID,T=ie.Objects.Model[I],O={modelName:T.attrName?f.PropertyBinding.sanitizeNodeName(T.attrName):"",morphName:ie.Objects.Deformer[w].attrName};c[g]=O}c[g][y.attr]=y}}}),s.set(parseInt(a),c))}return s}parseAnimStacks(i){const r=ie.Objects.AnimationStack,s={};for(const a in r){const c=ge.get(parseInt(a)).children;c.length>1&&console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.");const u=i.get(c[0].ID);s[a]={name:r[a].attrName,layer:u}}return s}addClip(i){let r=[];const s=this;return i.layer.forEach(function(a){r=r.concat(s.generateTracks(a))}),new f.AnimationClip(i.name,-1,r)}generateTracks(i){const r=[];let s=new f.Vector3,a=new f.Quaternion,c=new f.Vector3;if(i.transform&&i.transform.decompose(s,a,c),s=s.toArray(),a=new f.Euler().setFromQuaternion(a,i.eulerOrder).toArray(),c=c.toArray(),i.T!==void 0&&Object.keys(i.T.curves).length>0){const u=this.generateVectorTrack(i.modelName,i.T.curves,s,"position");u!==void 0&&r.push(u)}if(i.R!==void 0&&Object.keys(i.R.curves).length>0){const u=this.generateRotationTrack(i.modelName,i.R.curves,a,i.preRotation,i.postRotation,i.eulerOrder);u!==void 0&&r.push(u)}if(i.S!==void 0&&Object.keys(i.S.curves).length>0){const u=this.generateVectorTrack(i.modelName,i.S.curves,c,"scale");u!==void 0&&r.push(u)}if(i.DeformPercent!==void 0){const u=this.generateMorphTrack(i);u!==void 0&&r.push(u)}return r}generateVectorTrack(i,r,s,a){const c=this.getTimesForAllAxes(r),u=this.getKeyframeTrackValues(c,r,s);return new f.VectorKeyframeTrack(i+"."+a,c,u)}generateRotationTrack(i,r,s,a,c,u){r.x!==void 0&&(this.interpolateRotations(r.x),r.x.values=r.x.values.map(f.MathUtils.degToRad)),r.y!==void 0&&(this.interpolateRotations(r.y),r.y.values=r.y.values.map(f.MathUtils.degToRad)),r.z!==void 0&&(this.interpolateRotations(r.z),r.z.values=r.z.values.map(f.MathUtils.degToRad));const h=this.getTimesForAllAxes(r),m=this.getKeyframeTrackValues(h,r,s);a!==void 0&&(a=a.map(f.MathUtils.degToRad),a.push(u),a=new f.Euler().fromArray(a),a=new f.Quaternion().setFromEuler(a)),c!==void 0&&(c=c.map(f.MathUtils.degToRad),c.push(u),c=new f.Euler().fromArray(c),c=new f.Quaternion().setFromEuler(c).invert());const g=new f.Quaternion,y=new f.Euler,w=[];for(let C=0;C<m.length;C+=3)y.set(m[C],m[C+1],m[C+2],u),g.setFromEuler(y),a!==void 0&&g.premultiply(a),c!==void 0&&g.multiply(c),g.toArray(w,C/3*4);return new f.QuaternionKeyframeTrack(i+".quaternion",h,w)}generateMorphTrack(i){const r=i.DeformPercent.curves.morph,s=r.values.map(function(c){return c/100}),a=Fe.getObjectByName(i.modelName).morphTargetDictionary[i.morphName];return new f.NumberKeyframeTrack(i.modelName+".morphTargetInfluences["+a+"]",r.times,s)}getTimesForAllAxes(i){let r=[];if(i.x!==void 0&&(r=r.concat(i.x.times)),i.y!==void 0&&(r=r.concat(i.y.times)),i.z!==void 0&&(r=r.concat(i.z.times)),r=r.sort(function(s,a){return s-a}),r.length>1){let s=1,a=r[0];for(let c=1;c<r.length;c++){const u=r[c];u!==a&&(r[s]=u,a=u,s++)}r=r.slice(0,s)}return r}getKeyframeTrackValues(i,r,s){const a=s,c=[];let u=-1,h=-1,m=-1;return i.forEach(function(g){if(r.x&&(u=r.x.times.indexOf(g)),r.y&&(h=r.y.times.indexOf(g)),r.z&&(m=r.z.times.indexOf(g)),u!==-1){const y=r.x.values[u];c.push(y),a[0]=y}else c.push(a[0]);if(h!==-1){const y=r.y.values[h];c.push(y),a[1]=y}else c.push(a[1]);if(m!==-1){const y=r.z.values[m];c.push(y),a[2]=y}else c.push(a[2])}),c}interpolateRotations(i){for(let r=1;r<i.values.length;r++){const s=i.values[r-1],a=i.values[r]-s,c=Math.abs(a);if(c>=180){const u=c/180,h=a/u;let m=s+h;const g=i.times[r-1],w=(i.times[r]-g)/u;let C=g+w;const L=[],I=[];for(;C<i.times[r];)L.push(C),C+=w,I.push(m),m+=h;i.times=Tr(i.times,r,L),i.values=Tr(i.values,r,I)}}}}class Va{getPrevNode(){return this.nodeStack[this.currentIndent-2]}getCurrentNode(){return this.nodeStack[this.currentIndent-1]}getCurrentProp(){return this.currentProp}pushStack(i){this.nodeStack.push(i),this.currentIndent+=1}popStack(){this.nodeStack.pop(),this.currentIndent-=1}setCurrentProp(i,r){this.currentProp=i,this.currentPropName=r}parse(i){this.currentIndent=0,this.allNodes=new Lr,this.nodeStack=[],this.currentProp=[],this.currentPropName="";const r=this,s=i.split(/[\r\n]+/);return s.forEach(function(a,c){const u=a.match(/^[\s\t]*;/),h=a.match(/^[\s\t]*$/);if(u||h)return;const m=a.match("^\\t{"+r.currentIndent+"}(\\w+):(.*){",""),g=a.match("^\\t{"+r.currentIndent+"}(\\w+):[\\s\\t\\r\\n](.*)"),y=a.match("^\\t{"+(r.currentIndent-1)+"}}");m?r.parseNodeBegin(a,m):g?r.parseNodeProperty(a,g,s[++c]):y?r.popStack():a.match(/^[^\s\t}]/)&&r.parseNodePropertyContinued(a)}),this.allNodes}parseNodeBegin(i,r){const s=r[1].trim().replace(/^"/,"").replace(/"$/,""),a=r[2].split(",").map(function(m){return m.trim().replace(/^"/,"").replace(/"$/,"")}),c={name:s},u=this.parseNodeAttr(a),h=this.getCurrentNode();this.currentIndent===0?this.allNodes.add(s,c):s in h?(s==="PoseNode"?h.PoseNode.push(c):h[s].id!==void 0&&(h[s]={},h[s][h[s].id]=h[s]),u.id!==""&&(h[s][u.id]=c)):typeof u.id=="number"?(h[s]={},h[s][u.id]=c):s!=="Properties70"&&(s==="PoseNode"?h[s]=[c]:h[s]=c),typeof u.id=="number"&&(c.id=u.id),u.name!==""&&(c.attrName=u.name),u.type!==""&&(c.attrType=u.type),this.pushStack(c)}parseNodeAttr(i){let r=i[0];i[0]!==""&&(r=parseInt(i[0]),isNaN(r)&&(r=i[0]));let s="",a="";return i.length>1&&(s=i[1].replace(/^(\w+)::/,""),a=i[2]),{id:r,name:s,type:a}}parseNodeProperty(i,r,s){let a=r[1].replace(/^"/,"").replace(/"$/,"").trim(),c=r[2].replace(/^"/,"").replace(/"$/,"").trim();a==="Content"&&c===","&&(c=s.replace(/"/g,"").replace(/,$/,"").trim());const u=this.getCurrentNode();if(u.name==="Properties70"){this.parseNodeSpecialProperty(i,a,c);return}if(a==="C"){const m=c.split(",").slice(1),g=parseInt(m[0]),y=parseInt(m[1]);let w=c.split(",").slice(3);w=w.map(function(C){return C.trim().replace(/^"/,"")}),a="connections",c=[g,y],Na(c,w),u[a]===void 0&&(u[a]=[])}a==="Node"&&(u.id=c),a in u&&Array.isArray(u[a])?u[a].push(c):a!=="a"?u[a]=c:u.a=c,this.setCurrentProp(u,a),a==="a"&&c.slice(-1)!==","&&(u.a=ss(c))}parseNodePropertyContinued(i){const r=this.getCurrentNode();r.a+=i,i.slice(-1)!==","&&(r.a=ss(r.a))}parseNodeSpecialProperty(i,r,s){const a=s.split('",').map(function(y){return y.trim().replace(/^\"/,"").replace(/\s/,"_")}),c=a[0],u=a[1],h=a[2],m=a[3];let g=a[4];switch(u){case"int":case"enum":case"bool":case"ULongLong":case"double":case"Number":case"FieldOfView":g=parseFloat(g);break;case"Color":case"ColorRGB":case"Vector3D":case"Lcl_Translation":case"Lcl_Rotation":case"Lcl_Scaling":g=ss(g);break}this.getPrevNode()[c]={type:u,type2:h,flag:m,value:g},this.setCurrentProp(this.getPrevNode(),c)}}class Ia{parse(i){const r=new Sr(i);r.skip(23);const s=r.getUint32();if(s<6400)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+s);const a=new Lr;for(;!this.endOfContent(r);){const c=this.parseNode(r,s);c!==null&&a.add(c.name,c)}return a}endOfContent(i){return i.size()%16===0?(i.getOffset()+160+16&-16)>=i.size():i.getOffset()+160+16>=i.size()}parseNode(i,r){const s={},a=r>=7500?i.getUint64():i.getUint32(),c=r>=7500?i.getUint64():i.getUint32();r>=7500?i.getUint64():i.getUint32();const u=i.getUint8(),h=i.getString(u);if(a===0)return null;const m=[];for(let C=0;C<c;C++)m.push(this.parseProperty(i));const g=m.length>0?m[0]:"",y=m.length>1?m[1]:"",w=m.length>2?m[2]:"";for(s.singleProperty=c===1&&i.getOffset()===a;a>i.getOffset();){const C=this.parseNode(i,r);C!==null&&this.parseSubNode(h,s,C)}return s.propertyList=m,typeof g=="number"&&(s.id=g),y!==""&&(s.attrName=y),w!==""&&(s.attrType=w),h!==""&&(s.name=h),s}parseSubNode(i,r,s){if(s.singleProperty===!0){const a=s.propertyList[0];Array.isArray(a)?(r[s.name]=s,s.a=a):r[s.name]=a}else if(i==="Connections"&&s.name==="C"){const a=[];s.propertyList.forEach(function(c,u){u!==0&&a.push(c)}),r.connections===void 0&&(r.connections=[]),r.connections.push(a)}else if(s.name==="Properties70")Object.keys(s).forEach(function(c){r[c]=s[c]});else if(i==="Properties70"&&s.name==="P"){let a=s.propertyList[0],c=s.propertyList[1];const u=s.propertyList[2],h=s.propertyList[3];let m;a.indexOf("Lcl ")===0&&(a=a.replace("Lcl ","Lcl_")),c.indexOf("Lcl ")===0&&(c=c.replace("Lcl ","Lcl_")),c==="Color"||c==="ColorRGB"||c==="Vector"||c==="Vector3D"||c.indexOf("Lcl_")===0?m=[s.propertyList[4],s.propertyList[5],s.propertyList[6]]:m=s.propertyList[4],r[a]={type:c,type2:u,flag:h,value:m}}else r[s.name]===void 0?typeof s.id=="number"?(r[s.name]={},r[s.name][s.id]=s):r[s.name]=s:s.name==="PoseNode"?(Array.isArray(r[s.name])||(r[s.name]=[r[s.name]]),r[s.name].push(s)):r[s.name][s.id]===void 0&&(r[s.name][s.id]=s)}parseProperty(i){const r=i.getString(1);let s;switch(r){case"C":return i.getBoolean();case"D":return i.getFloat64();case"F":return i.getFloat32();case"I":return i.getInt32();case"L":return i.getInt64();case"R":return s=i.getUint32(),i.getArrayBuffer(s);case"S":return s=i.getUint32(),i.getString(s);case"Y":return i.getInt16();case"b":case"c":case"d":case"f":case"i":case"l":const a=i.getUint32(),c=i.getUint32(),u=i.getUint32();if(c===0)switch(r){case"b":case"c":return i.getBooleanArray(a);case"d":return i.getFloat64Array(a);case"f":return i.getFloat32Array(a);case"i":return i.getInt32Array(a);case"l":return i.getInt64Array(a)}const h=Eo(new Uint8Array(i.getArrayBuffer(u))),m=new Sr(h.buffer);switch(r){case"b":case"c":return m.getBooleanArray(a);case"d":return m.getFloat64Array(a);case"f":return m.getFloat32Array(a);case"i":return m.getInt32Array(a);case"l":return m.getInt64Array(a)}default:throw new Error("THREE.FBXLoader: Unknown property type "+r)}}}class Sr{constructor(i,r){this.dv=new DataView(i),this.offset=0,this.littleEndian=r!==void 0?r:!0}getOffset(){return this.offset}size(){return this.dv.buffer.byteLength}skip(i){this.offset+=i}getBoolean(){return(this.getUint8()&1)===1}getBooleanArray(i){const r=[];for(let s=0;s<i;s++)r.push(this.getBoolean());return r}getUint8(){const i=this.dv.getUint8(this.offset);return this.offset+=1,i}getInt16(){const i=this.dv.getInt16(this.offset,this.littleEndian);return this.offset+=2,i}getInt32(){const i=this.dv.getInt32(this.offset,this.littleEndian);return this.offset+=4,i}getInt32Array(i){const r=[];for(let s=0;s<i;s++)r.push(this.getInt32());return r}getUint32(){const i=this.dv.getUint32(this.offset,this.littleEndian);return this.offset+=4,i}getInt64(){let i,r;return this.littleEndian?(i=this.getUint32(),r=this.getUint32()):(r=this.getUint32(),i=this.getUint32()),r&2147483648?(r=~r&4294967295,i=~i&4294967295,i===4294967295&&(r=r+1&4294967295),i=i+1&4294967295,-(r*4294967296+i)):r*4294967296+i}getInt64Array(i){const r=[];for(let s=0;s<i;s++)r.push(this.getInt64());return r}getUint64(){let i,r;return this.littleEndian?(i=this.getUint32(),r=this.getUint32()):(r=this.getUint32(),i=this.getUint32()),r*4294967296+i}getFloat32(){const i=this.dv.getFloat32(this.offset,this.littleEndian);return this.offset+=4,i}getFloat32Array(i){const r=[];for(let s=0;s<i;s++)r.push(this.getFloat32());return r}getFloat64(){const i=this.dv.getFloat64(this.offset,this.littleEndian);return this.offset+=8,i}getFloat64Array(i){const r=[];for(let s=0;s<i;s++)r.push(this.getFloat64());return r}getArrayBuffer(i){const r=this.dv.buffer.slice(this.offset,this.offset+i);return this.offset+=i,r}getString(i){let r=[];for(let a=0;a<i;a++)r[a]=this.getUint8();const s=r.indexOf(0);return s>=0&&(r=r.slice(0,s)),f.LoaderUtils.decodeText(new Uint8Array(r))}}class Lr{add(i,r){this[i]=r}}function Da(_){const i="Kaydara FBX Binary \0";return _.byteLength>=i.length&&i===Dr(_,0,i.length)}function Ta(_){const i=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"];let r=0;function s(a){const c=_[a-1];return _=_.slice(r+a),r++,c}for(let a=0;a<i.length;++a)if(s(1)===i[a])return!1;return!0}function Ar(_){const i=/FBXVersion: (\d+)/,r=_.match(i);if(r)return parseInt(r[1]);throw new Error("THREE.FBXLoader: Cannot find the version number for the file given.")}function Oa(_){return _/46186158e3}const Ea=[];function hi(_,i,r,s){let a;switch(s.mappingType){case"ByPolygonVertex":a=_;break;case"ByPolygon":a=i;break;case"ByVertice":a=r;break;case"AllSame":a=s.indices[0];break;default:console.warn("THREE.FBXLoader: unknown attribute mapping type "+s.mappingType)}s.referenceType==="IndexToDirect"&&(a=s.indices[a]);const c=a*s.dataSize,u=c+s.dataSize;return Fa(Ea,s.buffer,c,u)}const is=new f.Euler,cn=new f.Vector3;function Vr(_){const i=new f.Matrix4,r=new f.Matrix4,s=new f.Matrix4,a=new f.Matrix4,c=new f.Matrix4,u=new f.Matrix4,h=new f.Matrix4,m=new f.Matrix4,g=new f.Matrix4,y=new f.Matrix4,w=new f.Matrix4,C=new f.Matrix4,L=_.inheritType?_.inheritType:0;if(_.translation&&i.setPosition(cn.fromArray(_.translation)),_.preRotation){const W=_.preRotation.map(f.MathUtils.degToRad);W.push(_.eulerOrder),r.makeRotationFromEuler(is.fromArray(W))}if(_.rotation){const W=_.rotation.map(f.MathUtils.degToRad);W.push(_.eulerOrder),s.makeRotationFromEuler(is.fromArray(W))}if(_.postRotation){const W=_.postRotation.map(f.MathUtils.degToRad);W.push(_.eulerOrder),a.makeRotationFromEuler(is.fromArray(W)),a.invert()}_.scale&&c.scale(cn.fromArray(_.scale)),_.scalingOffset&&h.setPosition(cn.fromArray(_.scalingOffset)),_.scalingPivot&&u.setPosition(cn.fromArray(_.scalingPivot)),_.rotationOffset&&m.setPosition(cn.fromArray(_.rotationOffset)),_.rotationPivot&&g.setPosition(cn.fromArray(_.rotationPivot)),_.parentMatrixWorld&&(w.copy(_.parentMatrix),y.copy(_.parentMatrixWorld));const I=r.clone().multiply(s).multiply(a),T=new f.Matrix4;T.extractRotation(y);const O=new f.Matrix4;O.copyPosition(y);const E=O.clone().invert().multiply(y),G=T.clone().invert().multiply(E),N=c,Z=new f.Matrix4;if(L===0)Z.copy(T).multiply(I).multiply(G).multiply(N);else if(L===1)Z.copy(T).multiply(G).multiply(I).multiply(N);else{const ve=new f.Matrix4().scale(new f.Vector3().setFromMatrixScale(w)).clone().invert(),be=G.clone().multiply(ve);Z.copy(T).multiply(I).multiply(be).multiply(N)}const se=g.clone().invert(),Y=u.clone().invert();let z=i.clone().multiply(m).multiply(g).multiply(r).multiply(s).multiply(a).multiply(se).multiply(h).multiply(u).multiply(c).multiply(Y);const K=new f.Matrix4().copyPosition(z),te=y.clone().multiply(K);return C.copyPosition(te),z=C.clone().multiply(Z),z.premultiply(y.invert()),z}function Ir(_){_=_||0;const i=["ZYX","YZX","XZY","ZXY","YXZ","XYZ"];return _===6?(console.warn("THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect."),i[0]):i[_]}function ss(_){return _.split(",").map(function(r){return parseFloat(r)})}function Dr(_,i,r){return i===void 0&&(i=0),r===void 0&&(r=_.byteLength),f.LoaderUtils.decodeText(new Uint8Array(_,i,r))}function Na(_,i){for(let r=0,s=_.length,a=i.length;r<a;r++,s++)_[s]=i[r]}function Fa(_,i,r,s){for(let a=r,c=0;a<s;a++,c++)_[c]=i[a];return _}function Tr(_,i,r){return _.slice(0,i).concat(r).concat(_.slice(i))}class Ba extends f.Loader{constructor(i){super(i)}load(i,r,s,a){const c=new f.FileLoader(this.manager);c.setPath(this.path),c.setRequestHeader(this.requestHeader),c.setWithCredentials(this.withCredentials),c.load(i,u=>{if(typeof u!="string")throw new Error("unsupported data type");const h=JSON.parse(u),m=this.parse(h);r&&r(m)},s,a)}parse(i){return new rs(i)}}class rs{constructor(i){M(this,"data",void 0),this.data=i}generateShapes(i,r=100,s){const a=[],c={letterSpacing:0,lineHeight:1,...s},u=ja(i,r,this.data,c);for(let h=0,m=u.length;h<m;h++)Array.prototype.push.apply(a,u[h].toShapes(!1));return a}}M(rs,"isFont",void 0),M(rs,"type",void 0);function ja(_,i,r,s){const a=Array.from(_),c=i/r.resolution,u=(r.boundingBox.yMax-r.boundingBox.yMin+r.underlineThickness)*c,h=[];let m=0,g=0;for(let y=0;y<a.length;y++){const w=a[y];if(w===`
|
|
14
|
+
`)m=0,g-=u*s.lineHeight;else{const C=za(w,c,m,g,r);C&&(m+=C.offsetX+s.letterSpacing,h.push(C.path))}}return h}function za(_,i,r,s,a){const c=a.glyphs[_]||a.glyphs["?"];if(!c){console.error('THREE.Font: character "'+_+'" does not exists in font family '+a.familyName+".");return}const u=new f.ShapePath;let h,m,g,y,w,C,L,I;if(c.o){const T=c._cachedOutline||(c._cachedOutline=c.o.split(" "));for(let O=0,E=T.length;O<E;)switch(T[O++]){case"m":h=parseInt(T[O++])*i+r,m=parseInt(T[O++])*i+s,u.moveTo(h,m);break;case"l":h=parseInt(T[O++])*i+r,m=parseInt(T[O++])*i+s,u.lineTo(h,m);break;case"q":g=parseInt(T[O++])*i+r,y=parseInt(T[O++])*i+s,w=parseInt(T[O++])*i+r,C=parseInt(T[O++])*i+s,u.quadraticCurveTo(w,C,g,y);break;case"b":g=parseInt(T[O++])*i+r,y=parseInt(T[O++])*i+s,w=parseInt(T[O++])*i+r,C=parseInt(T[O++])*i+s,L=parseInt(T[O++])*i+r,I=parseInt(T[O++])*i+s,u.bezierCurveTo(w,C,L,I,g,y);break}}return{offsetX:c.ha*i,path:u}}var Or=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ua(_){return _&&_.__esModule&&Object.prototype.hasOwnProperty.call(_,"default")?_.default:_}const os=new WeakMap;class Ga extends f.Loader{constructor(i){super(i),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(i){return this.decoderPath=i,this}setDecoderConfig(i){return this.decoderConfig=i,this}setWorkerLimit(i){return this.workerLimit=i,this}load(i,r,s,a){const c=new f.FileLoader(this.manager);c.setPath(this.path),c.setResponseType("arraybuffer"),c.setRequestHeader(this.requestHeader),c.setWithCredentials(this.withCredentials),c.load(i,u=>{const h={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(u,h).then(r).catch(a)},s,a)}decodeDracoFile(i,r,s,a){const c={attributeIDs:s||this.defaultAttributeIDs,attributeTypes:a||this.defaultAttributeTypes,useUniqueIDs:!!s};this.decodeGeometry(i,c).then(r)}decodeGeometry(i,r){for(const m in r.attributeTypes){const g=r.attributeTypes[m];g.BYTES_PER_ELEMENT!==void 0&&(r.attributeTypes[m]=g.name)}const s=JSON.stringify(r);if(os.has(i)){const m=os.get(i);if(m.key===s)return m.promise;if(i.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let a;const c=this.workerNextTaskID++,u=i.byteLength,h=this._getWorker(c,u).then(m=>(a=m,new Promise((g,y)=>{a._callbacks[c]={resolve:g,reject:y},a.postMessage({type:"decode",id:c,taskConfig:r,buffer:i},[i])}))).then(m=>this._createGeometry(m.geometry));return h.catch(()=>!0).then(()=>{a&&c&&this._releaseTask(a,c)}),os.set(i,{key:s,promise:h}),h}_createGeometry(i){const r=new f.BufferGeometry;i.index&&r.setIndex(new f.BufferAttribute(i.index.array,1));for(let s=0;s<i.attributes.length;s++){const a=i.attributes[s],c=a.name,u=a.array,h=a.itemSize;r.setAttribute(c,new f.BufferAttribute(u,h))}return r}_loadLibrary(i,r){const s=new f.FileLoader(this.manager);return s.setPath(this.decoderPath),s.setResponseType(r),s.setWithCredentials(this.withCredentials),new Promise((a,c)=>{s.load(i,a,void 0,c)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const i=typeof WebAssembly!="object"||this.decoderConfig.type==="js",r=[];return i?r.push(this._loadLibrary("draco_decoder.js","text")):(r.push(this._loadLibrary("draco_wasm_wrapper.js","text")),r.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(r).then(s=>{const a=s[0];i||(this.decoderConfig.wasmBinary=s[1]);const c=Ra.toString(),u=["/* draco decoder */",a,"","/* worker */",c.substring(c.indexOf("{")+1,c.lastIndexOf("}"))].join(`
|
|
15
|
+
`);this.workerSourceURL=URL.createObjectURL(new Blob([u]))}),this.decoderPending}_getWorker(i,r){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const a=new Worker(this.workerSourceURL);a._callbacks={},a._taskCosts={},a._taskLoad=0,a.postMessage({type:"init",decoderConfig:this.decoderConfig}),a.onmessage=function(c){const u=c.data;switch(u.type){case"decode":a._callbacks[u.id].resolve(u);break;case"error":a._callbacks[u.id].reject(u);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+u.type+'"')}},this.workerPool.push(a)}else this.workerPool.sort(function(a,c){return a._taskLoad>c._taskLoad?-1:1});const s=this.workerPool[this.workerPool.length-1];return s._taskCosts[i]=r,s._taskLoad+=r,s})}_releaseTask(i,r){i._taskLoad-=i._taskCosts[r],delete i._callbacks[r],delete i._taskCosts[r]}debug(){console.log("Task load: ",this.workerPool.map(i=>i._taskLoad))}dispose(){for(let i=0;i<this.workerPool.length;++i)this.workerPool[i].terminate();return this.workerPool.length=0,this}}function Ra(){let _,i;onmessage=function(u){const h=u.data;switch(h.type){case"init":_=h.decoderConfig,i=new Promise(function(y){_.onModuleLoaded=function(w){y({draco:w})},DracoDecoderModule(_)});break;case"decode":const m=h.buffer,g=h.taskConfig;i.then(y=>{const w=y.draco,C=new w.Decoder,L=new w.DecoderBuffer;L.Init(new Int8Array(m),m.byteLength);try{const I=r(w,C,L,g),T=I.attributes.map(O=>O.array.buffer);I.index&&T.push(I.index.array.buffer),self.postMessage({type:"decode",id:h.id,geometry:I},T)}catch(I){console.error(I),self.postMessage({type:"error",id:h.id,error:I.message})}finally{w.destroy(L),w.destroy(C)}});break}};function r(u,h,m,g){const y=g.attributeIDs,w=g.attributeTypes;let C,L;const I=h.GetEncodedGeometryType(m);if(I===u.TRIANGULAR_MESH)C=new u.Mesh,L=h.DecodeBufferToMesh(m,C);else if(I===u.POINT_CLOUD)C=new u.PointCloud,L=h.DecodeBufferToPointCloud(m,C);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!L.ok()||C.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+L.error_msg());const T={index:null,attributes:[]};for(const O in y){const E=self[w[O]];let G,N;if(g.useUniqueIDs)N=y[O],G=h.GetAttributeByUniqueId(C,N);else{if(N=h.GetAttributeId(C,u[y[O]]),N===-1)continue;G=h.GetAttribute(C,N)}T.attributes.push(a(u,h,C,O,E,G))}return I===u.TRIANGULAR_MESH&&(T.index=s(u,h,C)),u.destroy(C),T}function s(u,h,m){const y=m.num_faces()*3,w=y*4,C=u._malloc(w);h.GetTrianglesUInt32Array(m,w,C);const L=new Uint32Array(u.HEAPF32.buffer,C,y).slice();return u._free(C),{array:L,itemSize:1}}function a(u,h,m,g,y,w){const C=w.num_components(),I=m.num_points()*C,T=I*y.BYTES_PER_ELEMENT,O=c(u,y),E=u._malloc(T);h.GetAttributeDataArrayForAllPoints(m,w,O,T,E);const G=new y(u.HEAPF32.buffer,E,I).slice();return u._free(E),{name:g,array:G,itemSize:C}}function c(u,h){switch(h){case Float32Array:return u.DT_FLOAT32;case Int8Array:return u.DT_INT8;case Int16Array:return u.DT_INT16;case Int32Array:return u.DT_INT32;case Uint8Array:return u.DT_UINT8;case Uint16Array:return u.DT_UINT16;case Uint32Array:return u.DT_UINT32}}}function Er(){return{extend:U.inject("extend")||(()=>{console.warn("No extend function provided")})}}const Ka=U.defineComponent({__name:"OrbitControls",props:{makeDefault:{type:Boolean,default:!1},camera:null,domElement:null,target:null,enableDamping:{type:Boolean}},setup(_){const i=_,{setState:r}=ln.useTres(),s=U.ref(null),a=U.inject("camera"),c=U.inject("renderer"),{extend:u}=Er();return u({OrbitControls:Uo}),U.watch(s,h=>{h&&i.makeDefault?r("controls",h):r("controls",null)}),(h,m)=>{var y;const g=U.resolveComponent("TresOrbitControls");return U.unref(a)&&U.unref(c)?(U.openBlock(),U.createBlock(g,{key:0,ref_key:"controls",ref:s,args:[U.unref(a),(y=U.unref(c))==null?void 0:y.domElement],"enabling-dampling":_.enableDamping},null,8,["args","enabling-dampling"])):U.createCommentVNode("",!0)}}});function Xa(_,i){const r={};for(const s of i)Object.prototype.hasOwnProperty.call(_,s)&&(r[s]=_[s]);return r}function $a(_,i){const r=`set${i[0].toUpperCase()}${i.slice(1)}`;return _[r]!==void 0}const Ya=U.defineComponent({__name:"TransformControls",props:{object:null,mode:null,enabled:{type:Boolean,default:!0},axis:null,translationSnap:null,rotationSnap:null,scaleSnap:null,space:null,size:null,showX:{type:Boolean},showY:{type:Boolean},showZ:{type:Boolean}},emits:["dragging","change","mouseDown","mouseUp","objectChange"],setup(_,{emit:i}){const r=_;let s=U.shallowRef();const a=U.inject("camera"),c=U.inject("renderer"),u=U.inject("local-scene"),h=U.computed(()=>Xa(r,["enabled","axis","mode","translationSnap","rotationSnap","scaleSnap","space","size","showX","showY","showZ"])),{state:m}=ln.useTres(),g=()=>i("change",s.value),y=()=>i("mouseDown",s.value),w=()=>i("mouseUp",s.value),C=()=>i("objectChange",s.value),L=T=>{m.controls&&(m.controls.enabled=!T.value),i("dragging",T.value)};function I(T){T.addEventListener("dragging-changed",L),T.addEventListener("change",g),T.addEventListener("mouseDown",y),T.addEventListener("mouseUp",w),T.addEventListener("objectChange",C)}return U.watch(()=>r.object,()=>{a!=null&&a.value&&(c!=null&&c.value)&&(u!=null&&u.value)&&r.object&&(s.value=new Bo(a.value,U.unref(c).domElement),s.value.attach(U.unref(r.object)),u.value.add(U.unref(s)),I(U.unref(s)))},{deep:!0}),U.watch([h,s],([T,O])=>{if(T&&O)for(const E in T)if(!$a(O,E))O[E]=T[E];else{const G=`set${E[0].toUpperCase()}${E.slice(1)}`;typeof O[G]=="function"&&T[E]!==void 0&&O[G](T[E])}},{immediate:!0}),U.onUnmounted(()=>{s.value&&(s.value.removeEventListener("dragging-changed",L),s.value.removeEventListener("change",g),s.value.removeEventListener("mouseDown",y),s.value.removeEventListener("mouseUp",w),s.value.removeEventListener("objectChange",C))}),(T,O)=>U.renderSlot(T.$slots,"default")}});var di={},qa={get exports(){return di},set exports(_){di=_}};(function(_,i){(function(r,s){s(i)})(Or,function(r){class s{constructor(e){const[t,l]=e.split("-"),b=t.split(".");this.major=parseInt(b[0],10),this.minor=parseInt(b[1],10),this.patch=parseInt(b[2],10),this.prerelease=l??null}toString(){const e=[this.major,this.minor,this.patch].join(".");return this.prerelease!==null?[e,this.prerelease].join("-"):e}}class a{constructor(e){this.controller_=e}get element(){return this.controller_.view.element}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(e){this.controller_.viewProps.set("disabled",e)}get hidden(){return this.controller_.viewProps.get("hidden")}set hidden(e){this.controller_.viewProps.set("hidden",e)}dispose(){this.controller_.viewProps.set("disposed",!0)}}class c{constructor(e){this.target=e}}class u extends c{constructor(e,t,l,b){super(e),this.value=t,this.presetKey=l,this.last=b??!0}}class h extends c{constructor(e,t,l){super(e),this.value=t,this.presetKey=l}}class m extends c{constructor(e,t){super(e),this.expanded=t}}class g extends c{constructor(e,t){super(e),this.index=t}}function y(n){return n}function w(n){return n==null}function C(n,e){if(n.length!==e.length)return!1;for(let t=0;t<n.length;t++)if(n[t]!==e[t])return!1;return!0}const L={alreadydisposed:()=>"View has been already disposed",invalidparams:n=>`Invalid parameters for '${n.name}'`,nomatchingcontroller:n=>`No matching controller for '${n.key}'`,nomatchingview:n=>`No matching view for '${JSON.stringify(n.params)}'`,notbindable:()=>"Value is not bindable",propertynotfound:n=>`Property '${n.name}' not found`,shouldneverhappen:()=>"This error should never happen"};class I{constructor(e){var t;this.message=(t=L[e.type](e.context))!==null&&t!==void 0?t:"Unexpected error",this.name=this.constructor.name,this.stack=new Error(this.message).stack,this.type=e.type}static alreadyDisposed(){return new I({type:"alreadydisposed"})}static notBindable(){return new I({type:"notbindable"})}static propertyNotFound(e){return new I({type:"propertynotfound",context:{name:e}})}static shouldNeverHappen(){return new I({type:"shouldneverhappen"})}}class T{constructor(e,t,l){this.obj_=e,this.key_=t,this.presetKey_=l??t}static isBindable(e){return!(e===null||typeof e!="object")}get key(){return this.key_}get presetKey(){return this.presetKey_}read(){return this.obj_[this.key_]}write(e){this.obj_[this.key_]=e}writeProperty(e,t){const l=this.read();if(!T.isBindable(l))throw I.notBindable();if(!(e in l))throw I.propertyNotFound(e);l[e]=t}}class O extends a{get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}get title(){var e;return(e=this.controller_.valueController.props.get("title"))!==null&&e!==void 0?e:""}set title(e){this.controller_.valueController.props.set("title",e)}on(e,t){const l=t.bind(this);return this.controller_.valueController.emitter.on(e,()=>{l(new c(this))}),this}}class E{constructor(){this.observers_={}}on(e,t){let l=this.observers_[e];return l||(l=this.observers_[e]=[]),l.push({handler:t}),this}off(e,t){const l=this.observers_[e];return l&&(this.observers_[e]=l.filter(b=>b.handler!==t)),this}emit(e,t){const l=this.observers_[e];l&&l.forEach(b=>{b.handler(t)})}}const G="tp";function N(n){return(t,l)=>[G,"-",n,"v",t?`_${t}`:"",l?`-${l}`:""].join("")}function Z(n,e){return t=>e(n(t))}function se(n){return n.rawValue}function Y(n,e){n.emitter.on("change",Z(se,e)),e(n.rawValue)}function z(n,e,t){Y(n.value(e),t)}function K(n,e,t){t?n.classList.add(e):n.classList.remove(e)}function te(n,e){return t=>{K(n,e,t)}}function W(n,e){Y(n,t=>{e.textContent=t??""})}const ve=N("btn");class be{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(ve()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("button");l.classList.add(ve("b")),t.viewProps.bindDisabled(l),this.element.appendChild(l),this.buttonElement=l;const b=e.createElement("div");b.classList.add(ve("t")),W(t.props.value("title"),b),this.buttonElement.appendChild(b)}}class ue{constructor(e,t){this.emitter=new E,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new be(e,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class he{constructor(e,t){var l;this.constraint_=t==null?void 0:t.constraint,this.equals_=(l=t==null?void 0:t.equals)!==null&&l!==void 0?l:(b,P)=>b===P,this.emitter=new E,this.rawValue_=e}get constraint(){return this.constraint_}get rawValue(){return this.rawValue_}set rawValue(e){this.setRawValue(e,{forceEmit:!1,last:!0})}setRawValue(e,t){const l=t??{forceEmit:!1,last:!0},b=this.constraint_?this.constraint_.constrain(e):e;this.equals_(this.rawValue_,b)&&!l.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=b,this.emitter.emit("change",{options:l,rawValue:b,sender:this}))}}class we{constructor(e){this.emitter=new E,this.value_=e}get rawValue(){return this.value_}set rawValue(e){this.setRawValue(e,{forceEmit:!1,last:!0})}setRawValue(e,t){const l=t??{forceEmit:!1,last:!0};this.value_===e&&!l.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.value_=e,this.emitter.emit("change",{options:l,rawValue:this.value_,sender:this}))}}function J(n,e){const t=e==null?void 0:e.constraint,l=e==null?void 0:e.equals;return!t&&!l?new we(n):new he(n,e)}class X{constructor(e){this.emitter=new E,this.valMap_=e;for(const t in this.valMap_)this.valMap_[t].emitter.on("change",()=>{this.emitter.emit("change",{key:t,sender:this})})}static createCore(e){return Object.keys(e).reduce((l,b)=>Object.assign(l,{[b]:J(e[b])}),{})}static fromObject(e){const t=this.createCore(e);return new X(t)}get(e){return this.valMap_[e].rawValue}set(e,t){this.valMap_[e].rawValue=t}value(e){return this.valMap_[e]}}function qe(n,e){const l=Object.keys(e).reduce((b,P)=>{if(b===void 0)return;const S=e[P],F=S(n[P]);return F.succeeded?Object.assign(Object.assign({},b),{[P]:F.value}):void 0},{});return l}function Ce(n,e){return n.reduce((t,l)=>{if(t===void 0)return;const b=e(l);if(!(!b.succeeded||b.value===void 0))return[...t,b.value]},[])}function ce(n){return n===null?!1:typeof n=="object"}function ee(n){return e=>t=>{if(!e&&t===void 0)return{succeeded:!1,value:void 0};if(e&&t===void 0)return{succeeded:!0,value:void 0};const l=n(t);return l!==void 0?{succeeded:!0,value:l}:{succeeded:!1,value:void 0}}}function oe(n){return{custom:e=>ee(e)(n),boolean:ee(e=>typeof e=="boolean"?e:void 0)(n),number:ee(e=>typeof e=="number"?e:void 0)(n),string:ee(e=>typeof e=="string"?e:void 0)(n),function:ee(e=>typeof e=="function"?e:void 0)(n),constant:e=>ee(t=>t===e?e:void 0)(n),raw:ee(e=>e)(n),object:e=>ee(t=>{if(ce(t))return qe(t,e)})(n),array:e=>ee(t=>{if(Array.isArray(t))return Ce(t,e)})(n)}}const $={optional:oe(!0),required:oe(!1)};function A(n,e){const t=$.required.object(e)(n);return t.succeeded?t.value:void 0}function Me(n){return n&&n.parentElement&&n.parentElement.removeChild(n),null}function ke(){return["veryfirst","first","last","verylast"]}const Ve=N(""),Re={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class Se{constructor(e){this.parent_=null,this.blade=e.blade,this.view=e.view,this.viewProps=e.viewProps;const t=this.view.element;this.blade.value("positions").emitter.on("change",()=>{ke().forEach(l=>{t.classList.remove(Ve(void 0,Re[l]))}),this.blade.get("positions").forEach(l=>{t.classList.add(Ve(void 0,Re[l]))})}),this.viewProps.handleDispose(()=>{Me(t)})}get parent(){return this.parent_}}const Be="http://www.w3.org/2000/svg";function vt(n){n.offsetHeight}function bt(n,e){const t=n.style.transition;n.style.transition="none",e(),n.style.transition=t}function It(n){return n.ontouchstart!==void 0}function Dt(){return globalThis}function Nn(){return Dt().document}function Fn(n){const e=n.ownerDocument.defaultView;return e&&"document"in e?n.getContext("2d",{willReadFrequently:!0}):null}const qt={check:'<path d="M2 8l4 4l8 -8"/>',dropdown:'<path d="M5 7h6l-3 3 z"/>',p2dpad:'<path d="M8 4v8"/><path d="M4 8h8"/><circle cx="12" cy="12" r="1.2"/>'};function ct(n,e){const t=n.createElementNS(Be,"svg");return t.innerHTML=qt[e],t}function gt(n,e,t){n.insertBefore(e,n.children[t])}function pt(n){n.parentElement&&n.parentElement.removeChild(n)}function pn(n){for(;n.children.length>0;)n.removeChild(n.children[0])}function un(n){for(;n.childNodes.length>0;)n.removeChild(n.childNodes[0])}function Qe(n){return n.relatedTarget?n.relatedTarget:"explicitOriginalTarget"in n?n.explicitOriginalTarget:null}const ut=N("lbl");function Bn(n,e){const t=n.createDocumentFragment();return e.split(`
|
|
16
|
+
`).map(b=>n.createTextNode(b)).forEach((b,P)=>{P>0&&t.appendChild(n.createElement("br")),t.appendChild(b)}),t}class Qt{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(ut()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("div");l.classList.add(ut("l")),z(t.props,"label",P=>{w(P)?this.element.classList.add(ut(void 0,"nol")):(this.element.classList.remove(ut(void 0,"nol")),un(l),l.appendChild(Bn(e,P)))}),this.element.appendChild(l),this.labelElement=l;const b=e.createElement("div");b.classList.add(ut("v")),this.element.appendChild(b),this.valueElement=b}}class Ze extends Se{constructor(e,t){const l=t.valueController.viewProps;super(Object.assign(Object.assign({},t),{view:new Qt(e,{props:t.props,viewProps:l}),viewProps:l})),this.props=t.props,this.valueController=t.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}const hn={id:"button",type:"blade",accept(n){const e=$,t=A(n,{title:e.required.string,view:e.required.constant("button"),label:e.optional.string});return t?{params:t}:null},controller(n){return new Ze(n.document,{blade:n.blade,props:X.fromObject({label:n.params.label}),valueController:new ue(n.document,{props:X.fromObject({title:n.params.title}),viewProps:n.viewProps})})},api(n){return!(n.controller instanceof Ze)||!(n.controller.valueController instanceof ue)?null:new O(n.controller)}};class Ke extends Se{constructor(e){super(e),this.value=e.value}}function Xe(){return new X({positions:J([],{equals:C})})}class We extends X{constructor(e){super(e)}static create(e){const t={completed:!0,expanded:e,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null},l=X.createCore(t);return new We(l)}get styleExpanded(){var e;return(e=this.get("temporaryExpanded"))!==null&&e!==void 0?e:this.get("expanded")}get styleHeight(){if(!this.styleExpanded)return"0";const e=this.get("expandedHeight");return this.get("shouldFixHeight")&&!w(e)?`${e}px`:"auto"}bindExpandedClass(e,t){const l=()=>{this.styleExpanded?e.classList.add(t):e.classList.remove(t)};z(this,"expanded",l),z(this,"temporaryExpanded",l)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function V(n,e){let t=0;return bt(e,()=>{n.set("expandedHeight",null),n.set("temporaryExpanded",!0),vt(e),t=e.clientHeight,n.set("temporaryExpanded",null),vt(e)}),t}function j(n,e){e.style.height=n.styleHeight}function Q(n,e){n.value("expanded").emitter.on("beforechange",()=>{n.set("completed",!1),w(n.get("expandedHeight"))&&n.set("expandedHeight",V(n,e)),n.set("shouldFixHeight",!0),vt(e)}),n.emitter.on("change",()=>{j(n,e)}),j(n,e),e.addEventListener("transitionend",t=>{t.propertyName==="height"&&n.cleanUpTransition()})}class re extends a{constructor(e,t){super(e),this.rackApi_=t}}function _e(n,e){return n.addBlade(Object.assign(Object.assign({},e),{view:"button"}))}function je(n,e){return n.addBlade(Object.assign(Object.assign({},e),{view:"folder"}))}function Tt(n,e){const t=e??{};return n.addBlade(Object.assign(Object.assign({},t),{view:"separator"}))}function dn(n,e){return n.addBlade(Object.assign(Object.assign({},e),{view:"tab"}))}class Te{constructor(e){this.emitter=new E,this.items_=[],this.cache_=new Set,this.onSubListAdd_=this.onSubListAdd_.bind(this),this.onSubListRemove_=this.onSubListRemove_.bind(this),this.extract_=e}get items(){return this.items_}allItems(){return Array.from(this.cache_)}find(e){for(const t of this.allItems())if(e(t))return t;return null}includes(e){return this.cache_.has(e)}add(e,t){if(this.includes(e))throw I.shouldNeverHappen();const l=t!==void 0?t:this.items_.length;this.items_.splice(l,0,e),this.cache_.add(e);const b=this.extract_(e);b&&(b.emitter.on("add",this.onSubListAdd_),b.emitter.on("remove",this.onSubListRemove_),b.allItems().forEach(P=>{this.cache_.add(P)})),this.emitter.emit("add",{index:l,item:e,root:this,target:this})}remove(e){const t=this.items_.indexOf(e);if(t<0)return;this.items_.splice(t,1),this.cache_.delete(e);const l=this.extract_(e);l&&(l.emitter.off("add",this.onSubListAdd_),l.emitter.off("remove",this.onSubListRemove_)),this.emitter.emit("remove",{index:t,item:e,root:this,target:this})}onSubListAdd_(e){this.cache_.add(e.item),this.emitter.emit("add",{index:e.index,item:e.item,root:this,target:e.target})}onSubListRemove_(e){this.cache_.delete(e.item),this.emitter.emit("remove",{index:e.index,item:e.item,root:this,target:e.target})}}class Oe extends a{constructor(e){super(e),this.onBindingChange_=this.onBindingChange_.bind(this),this.emitter_=new E,this.controller_.binding.emitter.on("change",this.onBindingChange_)}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}on(e,t){const l=t.bind(this);return this.emitter_.on(e,b=>{l(b.event)}),this}refresh(){this.controller_.binding.read()}onBindingChange_(e){const t=e.sender.target.read();this.emitter_.emit("change",{event:new u(this,t,this.controller_.binding.target.presetKey,e.options.last)})}}class Je extends Ze{constructor(e,t){super(e,t),this.binding=t.binding}}class Zt extends a{constructor(e){super(e),this.onBindingUpdate_=this.onBindingUpdate_.bind(this),this.emitter_=new E,this.controller_.binding.emitter.on("update",this.onBindingUpdate_)}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}on(e,t){const l=t.bind(this);return this.emitter_.on(e,b=>{l(b.event)}),this}refresh(){this.controller_.binding.read()}onBindingUpdate_(e){const t=e.sender.target.read();this.emitter_.emit("update",{event:new h(this,t,this.controller_.binding.target.presetKey)})}}class ze extends Ze{constructor(e,t){super(e,t),this.binding=t.binding,this.viewProps.bindDisabled(this.binding.ticker),this.viewProps.handleDispose(()=>{this.binding.dispose()})}}function as(n){return n instanceof Ot?n.apiSet_:n instanceof re?n.rackApi_.apiSet_:null}function it(n,e){const t=n.find(l=>l.controller_===e);if(!t)throw I.shouldNeverHappen();return t}function vi(n,e,t){if(!T.isBindable(n))throw I.notBindable();return new T(n,e,t)}class Ot extends a{constructor(e,t){super(e),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this),this.onRackInputChange_=this.onRackInputChange_.bind(this),this.onRackMonitorUpdate_=this.onRackMonitorUpdate_.bind(this),this.emitter_=new E,this.apiSet_=new Te(as),this.pool_=t;const l=this.controller_.rack;l.emitter.on("add",this.onRackAdd_),l.emitter.on("remove",this.onRackRemove_),l.emitter.on("inputchange",this.onRackInputChange_),l.emitter.on("monitorupdate",this.onRackMonitorUpdate_),l.children.forEach(b=>{this.setUpApi_(b)})}get children(){return this.controller_.rack.children.map(e=>it(this.apiSet_,e))}addInput(e,t,l){const b=l??{},P=this.controller_.view.element.ownerDocument,S=this.pool_.createInput(P,vi(e,t,b.presetKey),b),F=new Oe(S);return this.add(F,b.index)}addMonitor(e,t,l){const b=l??{},P=this.controller_.view.element.ownerDocument,S=this.pool_.createMonitor(P,vi(e,t),b),F=new Zt(S);return this.add(F,b.index)}addFolder(e){return je(this,e)}addButton(e){return _e(this,e)}addSeparator(e){return Tt(this,e)}addTab(e){return dn(this,e)}add(e,t){this.controller_.rack.add(e.controller_,t);const l=this.apiSet_.find(b=>b.controller_===e.controller_);return l&&this.apiSet_.remove(l),this.apiSet_.add(e),e}remove(e){this.controller_.rack.remove(e.controller_)}addBlade(e){const t=this.controller_.view.element.ownerDocument,l=this.pool_.createBlade(t,e),b=this.pool_.createBladeApi(l);return this.add(b,e.index)}on(e,t){const l=t.bind(this);return this.emitter_.on(e,b=>{l(b.event)}),this}setUpApi_(e){this.apiSet_.find(l=>l.controller_===e)||this.apiSet_.add(this.pool_.createBladeApi(e))}onRackAdd_(e){this.setUpApi_(e.bladeController)}onRackRemove_(e){if(e.isRoot){const t=it(this.apiSet_,e.bladeController);this.apiSet_.remove(t)}}onRackInputChange_(e){const t=e.bladeController;if(t instanceof Je){const l=it(this.apiSet_,t),b=t.binding;this.emitter_.emit("change",{event:new u(l,b.target.read(),b.target.presetKey,e.options.last)})}else if(t instanceof Ke){const l=it(this.apiSet_,t);this.emitter_.emit("change",{event:new u(l,t.value.rawValue,void 0,e.options.last)})}}onRackMonitorUpdate_(e){if(!(e.bladeController instanceof ze))throw I.shouldNeverHappen();const t=it(this.apiSet_,e.bladeController),l=e.bladeController.binding;this.emitter_.emit("update",{event:new h(t,l.target.read(),l.target.presetKey)})}}class mn extends re{constructor(e,t){super(e,new Ot(e.rackController,t)),this.emitter_=new E,this.controller_.foldable.value("expanded").emitter.on("change",l=>{this.emitter_.emit("fold",{event:new m(this,l.sender.rawValue)})}),this.rackApi_.on("change",l=>{this.emitter_.emit("change",{event:l})}),this.rackApi_.on("update",l=>{this.emitter_.emit("update",{event:l})})}get expanded(){return this.controller_.foldable.get("expanded")}set expanded(e){this.controller_.foldable.set("expanded",e)}get title(){return this.controller_.props.get("title")}set title(e){this.controller_.props.set("title",e)}get children(){return this.rackApi_.children}addInput(e,t,l){return this.rackApi_.addInput(e,t,l)}addMonitor(e,t,l){return this.rackApi_.addMonitor(e,t,l)}addFolder(e){return this.rackApi_.addFolder(e)}addButton(e){return this.rackApi_.addButton(e)}addSeparator(e){return this.rackApi_.addSeparator(e)}addTab(e){return this.rackApi_.addTab(e)}add(e,t){return this.rackApi_.add(e,t)}remove(e){this.rackApi_.remove(e)}addBlade(e){return this.rackApi_.addBlade(e)}on(e,t){const l=t.bind(this);return this.emitter_.on(e,b=>{l(b.event)}),this}}class jn extends Se{constructor(e){super({blade:e.blade,view:e.view,viewProps:e.rackController.viewProps}),this.rackController=e.rackController}}class ls{constructor(e,t){const l=N(t.viewName);this.element=e.createElement("div"),this.element.classList.add(l()),t.viewProps.bindClassModifiers(this.element)}}function cs(n,e){for(let t=0;t<n.length;t++){const l=n[t];if(l instanceof Je&&l.binding===e)return l}return null}function ps(n,e){for(let t=0;t<n.length;t++){const l=n[t];if(l instanceof ze&&l.binding===e)return l}return null}function us(n,e){for(let t=0;t<n.length;t++){const l=n[t];if(l instanceof Ke&&l.value===e)return l}return null}function zn(n){return n instanceof Wt?n.rack:n instanceof jn?n.rackController.rack:null}function hs(n){const e=zn(n);return e?e.bcSet_:null}class ds{constructor(e){var t;this.onBladePositionsChange_=this.onBladePositionsChange_.bind(this),this.onSetAdd_=this.onSetAdd_.bind(this),this.onSetRemove_=this.onSetRemove_.bind(this),this.onChildDispose_=this.onChildDispose_.bind(this),this.onChildPositionsChange_=this.onChildPositionsChange_.bind(this),this.onChildInputChange_=this.onChildInputChange_.bind(this),this.onChildMonitorUpdate_=this.onChildMonitorUpdate_.bind(this),this.onChildValueChange_=this.onChildValueChange_.bind(this),this.onChildViewPropsChange_=this.onChildViewPropsChange_.bind(this),this.onDescendantLayout_=this.onDescendantLayout_.bind(this),this.onDescendantInputChange_=this.onDescendantInputChange_.bind(this),this.onDescendantMonitorUpdate_=this.onDescendantMonitorUpdate_.bind(this),this.emitter=new E,this.blade_=e??null,(t=this.blade_)===null||t===void 0||t.value("positions").emitter.on("change",this.onBladePositionsChange_),this.bcSet_=new Te(hs),this.bcSet_.emitter.on("add",this.onSetAdd_),this.bcSet_.emitter.on("remove",this.onSetRemove_)}get children(){return this.bcSet_.items}add(e,t){e.parent&&e.parent.remove(e),e.parent_=this,this.bcSet_.add(e,t)}remove(e){e.parent_=null,this.bcSet_.remove(e)}find(e){return this.bcSet_.allItems().filter(t=>t instanceof e)}onSetAdd_(e){this.updatePositions_();const t=e.target===e.root;if(this.emitter.emit("add",{bladeController:e.item,index:e.index,isRoot:t,sender:this}),!t)return;const l=e.item;if(l.viewProps.emitter.on("change",this.onChildViewPropsChange_),l.blade.value("positions").emitter.on("change",this.onChildPositionsChange_),l.viewProps.handleDispose(this.onChildDispose_),l instanceof Je)l.binding.emitter.on("change",this.onChildInputChange_);else if(l instanceof ze)l.binding.emitter.on("update",this.onChildMonitorUpdate_);else if(l instanceof Ke)l.value.emitter.on("change",this.onChildValueChange_);else{const b=zn(l);if(b){const P=b.emitter;P.on("layout",this.onDescendantLayout_),P.on("inputchange",this.onDescendantInputChange_),P.on("monitorupdate",this.onDescendantMonitorUpdate_)}}}onSetRemove_(e){this.updatePositions_();const t=e.target===e.root;if(this.emitter.emit("remove",{bladeController:e.item,isRoot:t,sender:this}),!t)return;const l=e.item;if(l instanceof Je)l.binding.emitter.off("change",this.onChildInputChange_);else if(l instanceof ze)l.binding.emitter.off("update",this.onChildMonitorUpdate_);else if(l instanceof Ke)l.value.emitter.off("change",this.onChildValueChange_);else{const b=zn(l);if(b){const P=b.emitter;P.off("layout",this.onDescendantLayout_),P.off("inputchange",this.onDescendantInputChange_),P.off("monitorupdate",this.onDescendantMonitorUpdate_)}}}updatePositions_(){const e=this.bcSet_.items.filter(b=>!b.viewProps.get("hidden")),t=e[0],l=e[e.length-1];this.bcSet_.items.forEach(b=>{const P=[];b===t&&(P.push("first"),(!this.blade_||this.blade_.get("positions").includes("veryfirst"))&&P.push("veryfirst")),b===l&&(P.push("last"),(!this.blade_||this.blade_.get("positions").includes("verylast"))&&P.push("verylast")),b.blade.set("positions",P)})}onChildPositionsChange_(){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildViewPropsChange_(e){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildDispose_(){this.bcSet_.items.filter(t=>t.viewProps.get("disposed")).forEach(t=>{this.bcSet_.remove(t)})}onChildInputChange_(e){const t=cs(this.find(Je),e.sender);if(!t)throw I.alreadyDisposed();this.emitter.emit("inputchange",{bladeController:t,options:e.options,sender:this})}onChildMonitorUpdate_(e){const t=ps(this.find(ze),e.sender);if(!t)throw I.alreadyDisposed();this.emitter.emit("monitorupdate",{bladeController:t,sender:this})}onChildValueChange_(e){const t=us(this.find(Ke),e.sender);if(!t)throw I.alreadyDisposed();this.emitter.emit("inputchange",{bladeController:t,options:e.options,sender:this})}onDescendantLayout_(e){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onDescendantInputChange_(e){this.emitter.emit("inputchange",{bladeController:e.bladeController,options:e.options,sender:this})}onDescendantMonitorUpdate_(e){this.emitter.emit("monitorupdate",{bladeController:e.bladeController,sender:this})}onBladePositionsChange_(){this.updatePositions_()}}class Wt extends Se{constructor(e,t){super(Object.assign(Object.assign({},t),{view:new ls(e,{viewName:"brk",viewProps:t.viewProps})})),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this);const l=new ds(t.root?void 0:t.blade);l.emitter.on("add",this.onRackAdd_),l.emitter.on("remove",this.onRackRemove_),this.rack=l,this.viewProps.handleDispose(()=>{for(let b=this.rack.children.length-1;b>=0;b--)this.rack.children[b].viewProps.set("disposed",!0)})}onRackAdd_(e){e.isRoot&>(this.view.element,e.bladeController.view.element,e.index)}onRackRemove_(e){e.isRoot&&pt(e.bladeController.view.element)}}const bi=N("cnt");class ms{constructor(e,t){var l;this.className_=N((l=t.viewName)!==null&&l!==void 0?l:"fld"),this.element=e.createElement("div"),this.element.classList.add(this.className_(),bi()),t.viewProps.bindClassModifiers(this.element),this.foldable_=t.foldable,this.foldable_.bindExpandedClass(this.element,this.className_(void 0,"expanded")),z(this.foldable_,"completed",te(this.element,this.className_(void 0,"cpl")));const b=e.createElement("button");b.classList.add(this.className_("b")),z(t.props,"title",q=>{w(q)?this.element.classList.add(this.className_(void 0,"not")):this.element.classList.remove(this.className_(void 0,"not"))}),t.viewProps.bindDisabled(b),this.element.appendChild(b),this.buttonElement=b;const P=e.createElement("div");P.classList.add(this.className_("t")),W(t.props.value("title"),P),this.buttonElement.appendChild(P),this.titleElement=P;const S=e.createElement("div");S.classList.add(this.className_("m")),this.buttonElement.appendChild(S);const F=t.containerElement;F.classList.add(this.className_("c")),this.element.appendChild(F),this.containerElement=F}}class Un extends jn{constructor(e,t){var l;const b=We.create((l=t.expanded)!==null&&l!==void 0?l:!0),P=new Wt(e,{blade:t.blade,root:t.root,viewProps:t.viewProps});super(Object.assign(Object.assign({},t),{rackController:P,view:new ms(e,{containerElement:P.view.element,foldable:b,props:t.props,viewName:t.root?"rot":void 0,viewProps:t.viewProps})})),this.onTitleClick_=this.onTitleClick_.bind(this),this.props=t.props,this.foldable=b,Q(this.foldable,this.view.containerElement),this.rackController.rack.emitter.on("add",()=>{this.foldable.cleanUpTransition()}),this.rackController.rack.emitter.on("remove",()=>{this.foldable.cleanUpTransition()}),this.view.buttonElement.addEventListener("click",this.onTitleClick_)}get document(){return this.view.element.ownerDocument}onTitleClick_(){this.foldable.set("expanded",!this.foldable.get("expanded"))}}const fs={id:"folder",type:"blade",accept(n){const e=$,t=A(n,{title:e.required.string,view:e.required.constant("folder"),expanded:e.optional.boolean});return t?{params:t}:null},controller(n){return new Un(n.document,{blade:n.blade,expanded:n.params.expanded,props:X.fromObject({title:n.params.title}),viewProps:n.viewProps})},api(n){return n.controller instanceof Un?new mn(n.controller,n.pool):null}};class Et extends Ke{constructor(e,t){const l=t.valueController.viewProps;super(Object.assign(Object.assign({},t),{value:t.valueController.value,view:new Qt(e,{props:t.props,viewProps:l}),viewProps:l})),this.props=t.props,this.valueController=t.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class gi extends a{}const Gn=N("spr");class vs{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Gn()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("hr");l.classList.add(Gn("r")),this.element.appendChild(l)}}class wi extends Se{constructor(e,t){super(Object.assign(Object.assign({},t),{view:new vs(e,{viewProps:t.viewProps})}))}}const bs={id:"separator",type:"blade",accept(n){const t=A(n,{view:$.required.constant("separator")});return t?{params:t}:null},controller(n){return new wi(n.document,{blade:n.blade,viewProps:n.viewProps})},api(n){return n.controller instanceof wi?new gi(n.controller):null}},_i=N("");function yi(n,e){return te(n,_i(void 0,e))}class $e extends X{constructor(e){super(e)}static create(e){var t,l;const b=e??{},P={disabled:(t=b.disabled)!==null&&t!==void 0?t:!1,disposed:!1,hidden:(l=b.hidden)!==null&&l!==void 0?l:!1},S=X.createCore(P);return new $e(S)}bindClassModifiers(e){z(this,"disabled",yi(e,"disabled")),z(this,"hidden",yi(e,"hidden"))}bindDisabled(e){z(this,"disabled",t=>{e.disabled=t})}bindTabIndex(e){z(this,"disabled",t=>{e.tabIndex=t?-1:0})}handleDispose(e){this.value("disposed").emitter.on("change",t=>{t&&e()})}}const Jt=N("tbi");class Ie{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Jt()),t.viewProps.bindClassModifiers(this.element),z(t.props,"selected",P=>{P?this.element.classList.add(Jt(void 0,"sel")):this.element.classList.remove(Jt(void 0,"sel"))});const l=e.createElement("button");l.classList.add(Jt("b")),t.viewProps.bindDisabled(l),this.element.appendChild(l),this.buttonElement=l;const b=e.createElement("div");b.classList.add(Jt("t")),W(t.props.value("title"),b),this.buttonElement.appendChild(b),this.titleElement=b}}class gs{constructor(e,t){this.emitter=new E,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new Ie(e,{props:t.props,viewProps:t.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class Ht{constructor(e,t){this.onItemClick_=this.onItemClick_.bind(this),this.ic_=new gs(e,{props:t.itemProps,viewProps:$e.create()}),this.ic_.emitter.on("click",this.onItemClick_),this.cc_=new Wt(e,{blade:Xe(),viewProps:$e.create()}),this.props=t.props,z(this.props,"selected",l=>{this.itemController.props.set("selected",l),this.contentController.viewProps.set("hidden",!l)})}get itemController(){return this.ic_}get contentController(){return this.cc_}onItemClick_(){this.props.set("selected",!0)}}class xi{constructor(e,t){this.controller_=e,this.rackApi_=t}get title(){var e;return(e=this.controller_.itemController.props.get("title"))!==null&&e!==void 0?e:""}set title(e){this.controller_.itemController.props.set("title",e)}get selected(){return this.controller_.props.get("selected")}set selected(e){this.controller_.props.set("selected",e)}get children(){return this.rackApi_.children}addButton(e){return this.rackApi_.addButton(e)}addFolder(e){return this.rackApi_.addFolder(e)}addSeparator(e){return this.rackApi_.addSeparator(e)}addTab(e){return this.rackApi_.addTab(e)}add(e,t){this.rackApi_.add(e,t)}remove(e){this.rackApi_.remove(e)}addInput(e,t,l){return this.rackApi_.addInput(e,t,l)}addMonitor(e,t,l){return this.rackApi_.addMonitor(e,t,l)}addBlade(e){return this.rackApi_.addBlade(e)}}class Rn extends re{constructor(e,t){super(e,new Ot(e.rackController,t)),this.onPageAdd_=this.onPageAdd_.bind(this),this.onPageRemove_=this.onPageRemove_.bind(this),this.onSelect_=this.onSelect_.bind(this),this.emitter_=new E,this.pageApiMap_=new Map,this.rackApi_.on("change",l=>{this.emitter_.emit("change",{event:l})}),this.rackApi_.on("update",l=>{this.emitter_.emit("update",{event:l})}),this.controller_.tab.selectedIndex.emitter.on("change",this.onSelect_),this.controller_.pageSet.emitter.on("add",this.onPageAdd_),this.controller_.pageSet.emitter.on("remove",this.onPageRemove_),this.controller_.pageSet.items.forEach(l=>{this.setUpPageApi_(l)})}get pages(){return this.controller_.pageSet.items.map(e=>{const t=this.pageApiMap_.get(e);if(!t)throw I.shouldNeverHappen();return t})}addPage(e){const t=this.controller_.view.element.ownerDocument,l=new Ht(t,{itemProps:X.fromObject({selected:!1,title:e.title}),props:X.fromObject({selected:!1})});this.controller_.add(l,e.index);const b=this.pageApiMap_.get(l);if(!b)throw I.shouldNeverHappen();return b}removePage(e){this.controller_.remove(e)}on(e,t){const l=t.bind(this);return this.emitter_.on(e,b=>{l(b.event)}),this}setUpPageApi_(e){const t=this.rackApi_.apiSet_.find(b=>b.controller_===e.contentController);if(!t)throw I.shouldNeverHappen();const l=new xi(e,t);this.pageApiMap_.set(e,l)}onPageAdd_(e){this.setUpPageApi_(e.item)}onPageRemove_(e){if(!this.pageApiMap_.get(e.item))throw I.shouldNeverHappen();this.pageApiMap_.delete(e.item)}onSelect_(e){this.emitter_.emit("select",{event:new g(this,e.rawValue)})}}const Ci=-1;class ws{constructor(){this.onItemSelectedChange_=this.onItemSelectedChange_.bind(this),this.empty=J(!0),this.selectedIndex=J(Ci),this.items_=[]}add(e,t){const l=t??this.items_.length;this.items_.splice(l,0,e),e.emitter.on("change",this.onItemSelectedChange_),this.keepSelection_()}remove(e){const t=this.items_.indexOf(e);t<0||(this.items_.splice(t,1),e.emitter.off("change",this.onItemSelectedChange_),this.keepSelection_())}keepSelection_(){if(this.items_.length===0){this.selectedIndex.rawValue=Ci,this.empty.rawValue=!0;return}const e=this.items_.findIndex(t=>t.rawValue);e<0?(this.items_.forEach((t,l)=>{t.rawValue=l===0}),this.selectedIndex.rawValue=0):(this.items_.forEach((t,l)=>{t.rawValue=l===e}),this.selectedIndex.rawValue=e),this.empty.rawValue=!1}onItemSelectedChange_(e){if(e.rawValue){const t=this.items_.findIndex(l=>l===e.sender);this.items_.forEach((l,b)=>{l.rawValue=b===t}),this.selectedIndex.rawValue=t}else this.keepSelection_()}}const fn=N("tab");class Pi{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(fn(),bi()),t.viewProps.bindClassModifiers(this.element),Y(t.empty,te(this.element,fn(void 0,"nop")));const l=e.createElement("div");l.classList.add(fn("i")),this.element.appendChild(l),this.itemsElement=l;const b=t.contentsElement;b.classList.add(fn("c")),this.element.appendChild(b),this.contentsElement=b}}class wt extends jn{constructor(e,t){const l=new Wt(e,{blade:t.blade,viewProps:t.viewProps}),b=new ws;super({blade:t.blade,rackController:l,view:new Pi(e,{contentsElement:l.view.element,empty:b.empty,viewProps:t.viewProps})}),this.onPageAdd_=this.onPageAdd_.bind(this),this.onPageRemove_=this.onPageRemove_.bind(this),this.pageSet_=new Te(()=>null),this.pageSet_.emitter.on("add",this.onPageAdd_),this.pageSet_.emitter.on("remove",this.onPageRemove_),this.tab=b}get pageSet(){return this.pageSet_}add(e,t){this.pageSet_.add(e,t)}remove(e){this.pageSet_.remove(this.pageSet_.items[e])}onPageAdd_(e){const t=e.item;gt(this.view.itemsElement,t.itemController.view.element,e.index),this.rackController.rack.add(t.contentController,e.index),this.tab.add(t.props.value("selected"))}onPageRemove_(e){const t=e.item;pt(t.itemController.view.element),this.rackController.rack.remove(t.contentController),this.tab.remove(t.props.value("selected"))}}const en={id:"tab",type:"blade",accept(n){const e=$,t=A(n,{pages:e.required.array(e.required.object({title:e.required.string})),view:e.required.constant("tab")});return!t||t.pages.length===0?null:{params:t}},controller(n){const e=new wt(n.document,{blade:n.blade,viewProps:n.viewProps});return n.params.pages.forEach(t=>{const l=new Ht(n.document,{itemProps:X.fromObject({selected:!1,title:t.title}),props:X.fromObject({selected:!1})});e.add(l)}),e},api(n){return n.controller instanceof wt?new Rn(n.controller,n.pool):null}};function Mi(n,e){const t=n.accept(e.params);if(!t)return null;const l=$.optional.boolean(e.params.disabled).value,b=$.optional.boolean(e.params.hidden).value;return n.controller({blade:Xe(),document:e.document,params:Object.assign(Object.assign({},t.params),{disabled:l,hidden:b}),viewProps:$e.create({disabled:l,hidden:b})})}class _s{constructor(){this.disabled=!1,this.emitter=new E}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class ki{constructor(e,t){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=e,this.emitter=new E,this.interval_=t,this.setTimer_()}get disabled(){return this.disabled_}set disabled(e){this.disabled_=e,this.disabled_?this.clearTimer_():this.setTimer_()}dispose(){this.clearTimer_()}clearTimer_(){if(this.timerId_===null)return;const e=this.doc_.defaultView;e&&e.clearInterval(this.timerId_),this.timerId_=null}setTimer_(){if(this.clearTimer_(),this.interval_<=0)return;const e=this.doc_.defaultView;e&&(this.timerId_=e.setInterval(this.onTick_,this.interval_))}onTick_(){this.disabled_||this.emitter.emit("tick",{sender:this})}}class _t{constructor(e){this.constraints=e}constrain(e){return this.constraints.reduce((t,l)=>l.constrain(t),e)}}function Ue(n,e){if(n instanceof e)return n;if(n instanceof _t){const t=n.constraints.reduce((l,b)=>l||(b instanceof e?b:null),null);if(t)return t}return null}class de{constructor(e){this.values=X.fromObject({max:e.max,min:e.min})}constrain(e){const t=this.values.get("max"),l=this.values.get("min");return Math.min(Math.max(e,l),t)}}class Nt{constructor(e){this.values=X.fromObject({options:e})}get options(){return this.values.get("options")}constrain(e){const t=this.values.get("options");return t.length===0||t.filter(b=>b.value===e).length>0?e:t[0].value}}class yt{constructor(e){this.values=X.fromObject({max:e.max,min:e.min})}get maxValue(){return this.values.get("max")}get minValue(){return this.values.get("min")}constrain(e){const t=this.values.get("max"),l=this.values.get("min");let b=e;return w(l)||(b=Math.max(b,l)),w(t)||(b=Math.min(b,t)),b}}class Le{constructor(e,t=0){this.step=e,this.origin=t}constrain(e){const t=this.origin%this.step,l=Math.round((e-t)/this.step);return t+l*this.step}}const Kn=N("lst");class ys{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.props_=t.props,this.element=e.createElement("div"),this.element.classList.add(Kn()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("select");l.classList.add(Kn("s")),z(this.props_,"options",P=>{pn(l),P.forEach((S,F)=>{const q=e.createElement("option");q.dataset.index=String(F),q.textContent=S.text,q.value=String(S.value),l.appendChild(q)})}),t.viewProps.bindDisabled(l),this.element.appendChild(l),this.selectElement=l;const b=e.createElement("div");b.classList.add(Kn("m")),b.appendChild(ct(e,"dropdown")),this.element.appendChild(b),t.value.emitter.on("change",this.onValueChange_),this.value_=t.value,this.update_()}update_(){this.selectElement.value=String(this.value_.rawValue)}onValueChange_(){this.update_()}}class xt{constructor(e,t){this.onSelectChange_=this.onSelectChange_.bind(this),this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.view=new ys(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.view.selectElement.addEventListener("change",this.onSelectChange_)}onSelectChange_(e){const l=e.currentTarget.selectedOptions.item(0);if(!l)return;const b=Number(l.dataset.index);this.value.rawValue=this.props.get("options")[b].value}}const Si=N("pop");class xs{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Si()),t.viewProps.bindClassModifiers(this.element),Y(t.shows,te(this.element,Si(void 0,"v")))}}class Xn{constructor(e,t){this.shows=J(!1),this.viewProps=t.viewProps,this.view=new xs(e,{shows:this.shows,viewProps:this.viewProps})}}const Li=N("txt");class vn{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(Li()),t.viewProps.bindClassModifiers(this.element),this.props_=t.props,this.props_.emitter.on("change",this.onChange_);const l=e.createElement("input");l.classList.add(Li("i")),l.type="text",t.viewProps.bindDisabled(l),this.element.appendChild(l),this.inputElement=l,t.value.emitter.on("change",this.onChange_),this.value_=t.value,this.refresh()}refresh(){const e=this.props_.get("formatter");this.inputElement.value=e(this.value_.rawValue)}onChange_(){this.refresh()}}class tn{constructor(e,t){this.onInputChange_=this.onInputChange_.bind(this),this.parser_=t.parser,this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.view=new vn(e,{props:t.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(e){const l=e.currentTarget.value,b=this.parser_(l);w(b)||(this.value.rawValue=b),this.view.refresh()}}function Cs(n){return String(n)}function Ai(n){return n==="false"?!1:!!n}function Vi(n){return Cs(n)}class Ps{constructor(e){this.text=e}evaluate(){return Number(this.text)}toString(){return this.text}}const Ms={"**":(n,e)=>Math.pow(n,e),"*":(n,e)=>n*e,"/":(n,e)=>n/e,"%":(n,e)=>n%e,"+":(n,e)=>n+e,"-":(n,e)=>n-e,"<<":(n,e)=>n<<e,">>":(n,e)=>n>>e,">>>":(n,e)=>n>>>e,"&":(n,e)=>n&e,"^":(n,e)=>n^e,"|":(n,e)=>n|e};class ks{constructor(e,t,l){this.left=t,this.operator=e,this.right=l}evaluate(){const e=Ms[this.operator];if(!e)throw new Error(`unexpected binary operator: '${this.operator}`);return e(this.left.evaluate(),this.right.evaluate())}toString(){return["b(",this.left.toString(),this.operator,this.right.toString(),")"].join(" ")}}const Ss={"+":n=>n,"-":n=>-n,"~":n=>~n};class Ls{constructor(e,t){this.operator=e,this.expression=t}evaluate(){const e=Ss[this.operator];if(!e)throw new Error(`unexpected unary operator: '${this.operator}`);return e(this.expression.evaluate())}toString(){return["u(",this.operator,this.expression.toString(),")"].join(" ")}}function $n(n){return(e,t)=>{for(let l=0;l<n.length;l++){const b=n[l](e,t);if(b!=="")return b}return""}}function nn(n,e){var t;const l=n.substr(e).match(/^\s+/);return(t=l&&l[0])!==null&&t!==void 0?t:""}function As(n,e){const t=n.substr(e,1);return t.match(/^[1-9]$/)?t:""}function sn(n,e){var t;const l=n.substr(e).match(/^[0-9]+/);return(t=l&&l[0])!==null&&t!==void 0?t:""}function Vs(n,e){const t=sn(n,e);if(t!=="")return t;const l=n.substr(e,1);if(e+=1,l!=="-"&&l!=="+")return"";const b=sn(n,e);return b===""?"":l+b}function bn(n,e){const t=n.substr(e,1);if(e+=1,t.toLowerCase()!=="e")return"";const l=Vs(n,e);return l===""?"":t+l}function Ii(n,e){const t=n.substr(e,1);if(t==="0")return t;const l=As(n,e);return e+=l.length,l===""?"":l+sn(n,e)}function Is(n,e){const t=Ii(n,e);if(e+=t.length,t==="")return"";const l=n.substr(e,1);if(e+=l.length,l!==".")return"";const b=sn(n,e);return e+=b.length,t+l+b+bn(n,e)}function Yn(n,e){const t=n.substr(e,1);if(e+=t.length,t!==".")return"";const l=sn(n,e);return e+=l.length,l===""?"":t+l+bn(n,e)}function Ds(n,e){const t=Ii(n,e);return e+=t.length,t===""?"":t+bn(n,e)}const Ts=$n([Is,Yn,Ds]);function Os(n,e){var t;const l=n.substr(e).match(/^[01]+/);return(t=l&&l[0])!==null&&t!==void 0?t:""}function ht(n,e){const t=n.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0b")return"";const l=Os(n,e);return l===""?"":t+l}function Es(n,e){var t;const l=n.substr(e).match(/^[0-7]+/);return(t=l&&l[0])!==null&&t!==void 0?t:""}function Ns(n,e){const t=n.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0o")return"";const l=Es(n,e);return l===""?"":t+l}function Di(n,e){var t;const l=n.substr(e).match(/^[0-9a-f]+/i);return(t=l&&l[0])!==null&&t!==void 0?t:""}function Fs(n,e){const t=n.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0x")return"";const l=Di(n,e);return l===""?"":t+l}const Ti=$n([ht,Ns,Fs]),qn=$n([Ti,Ts]);function Bs(n,e){const t=qn(n,e);return e+=t.length,t===""?null:{evaluable:new Ps(t),cursor:e}}function Oi(n,e){const t=n.substr(e,1);if(e+=t.length,t!=="(")return null;const l=st(n,e);if(!l)return null;e=l.cursor,e+=nn(n,e).length;const b=n.substr(e,1);return e+=b.length,b!==")"?null:{evaluable:l.evaluable,cursor:e}}function Ge(n,e){var t;return(t=Bs(n,e))!==null&&t!==void 0?t:Oi(n,e)}function Ei(n,e){const t=Ge(n,e);if(t)return t;const l=n.substr(e,1);if(e+=l.length,l!=="+"&&l!=="-"&&l!=="~")return null;const b=Ei(n,e);return b?(e=b.cursor,{cursor:e,evaluable:new Ls(l,b.evaluable)}):null}function js(n,e,t){t+=nn(e,t).length;const l=n.filter(b=>e.startsWith(b,t))[0];return l?(t+=l.length,t+=nn(e,t).length,{cursor:t,operator:l}):null}function Qn(n,e){return(t,l)=>{const b=n(t,l);if(!b)return null;l=b.cursor;let P=b.evaluable;for(;;){const S=js(e,t,l);if(!S)break;l=S.cursor;const F=n(t,l);if(!F)return null;l=F.cursor,P=new ks(S.operator,P,F.evaluable)}return P?{cursor:l,evaluable:P}:null}}const zs=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((n,e)=>Qn(n,e),Ei);function st(n,e){return e+=nn(n,e).length,zs(n,e)}function Zn(n){const e=st(n,0);return!e||e.cursor+nn(n,e.cursor).length!==n.length?null:e.evaluable}function rt(n){var e;const t=Zn(n);return(e=t==null?void 0:t.evaluate())!==null&&e!==void 0?e:null}function Wn(n){if(typeof n=="number")return n;if(typeof n=="string"){const e=rt(n);if(!w(e))return e}return 0}function Us(n){return String(n)}function fe(n){return e=>e.toFixed(Math.max(Math.min(n,20),0))}const Ni=fe(0);function Ft(n){return Ni(n)+"%"}function Jn(n){return String(n)}function gn(n){return n}function ot(n,e){for(;n.length<e;)n.push(void 0)}function Gs(n){const e=[];return ot(e,n),J(e)}function Fi(n){const e=n.indexOf(void 0);return e<0?n:n.slice(0,e)}function Bi(n,e){const t=[...Fi(n),e];return t.length>n.length?t.splice(0,t.length-n.length):ot(t,n.length),t}function Bt({primary:n,secondary:e,forward:t,backward:l}){let b=!1;function P(S){b||(b=!0,S(),b=!1)}n.emitter.on("change",S=>{P(()=>{e.setRawValue(t(n,e),S.options)})}),e.emitter.on("change",S=>{P(()=>{n.setRawValue(l(n,e),S.options)}),P(()=>{e.setRawValue(t(n,e),S.options)})}),P(()=>{e.setRawValue(t(n,e),{forceEmit:!1,last:!0})})}function Ae(n,e){const t=n*(e.altKey?.1:1)*(e.shiftKey?10:1);return e.upKey?+t:e.downKey?-t:0}function He(n){return{altKey:n.altKey,downKey:n.key==="ArrowDown",shiftKey:n.shiftKey,upKey:n.key==="ArrowUp"}}function et(n){return{altKey:n.altKey,downKey:n.key==="ArrowLeft",shiftKey:n.shiftKey,upKey:n.key==="ArrowRight"}}function Hn(n){return n==="ArrowUp"||n==="ArrowDown"}function ji(n){return Hn(n)||n==="ArrowLeft"||n==="ArrowRight"}function wn(n,e){var t,l;const b=e.ownerDocument.defaultView,P=e.getBoundingClientRect();return{x:n.pageX-(((t=b&&b.scrollX)!==null&&t!==void 0?t:0)+P.left),y:n.pageY-(((l=b&&b.scrollY)!==null&&l!==void 0?l:0)+P.top)}}class dt{constructor(e){this.lastTouch_=null,this.onDocumentMouseMove_=this.onDocumentMouseMove_.bind(this),this.onDocumentMouseUp_=this.onDocumentMouseUp_.bind(this),this.onMouseDown_=this.onMouseDown_.bind(this),this.onTouchEnd_=this.onTouchEnd_.bind(this),this.onTouchMove_=this.onTouchMove_.bind(this),this.onTouchStart_=this.onTouchStart_.bind(this),this.elem_=e,this.emitter=new E,e.addEventListener("touchstart",this.onTouchStart_,{passive:!1}),e.addEventListener("touchmove",this.onTouchMove_,{passive:!0}),e.addEventListener("touchend",this.onTouchEnd_),e.addEventListener("mousedown",this.onMouseDown_)}computePosition_(e){const t=this.elem_.getBoundingClientRect();return{bounds:{width:t.width,height:t.height},point:e?{x:e.x,y:e.y}:null}}onMouseDown_(e){var t;e.preventDefault(),(t=e.currentTarget)===null||t===void 0||t.focus();const l=this.elem_.ownerDocument;l.addEventListener("mousemove",this.onDocumentMouseMove_),l.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(wn(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onDocumentMouseMove_(e){this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(wn(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onDocumentMouseUp_(e){const t=this.elem_.ownerDocument;t.removeEventListener("mousemove",this.onDocumentMouseMove_),t.removeEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("up",{altKey:e.altKey,data:this.computePosition_(wn(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onTouchStart_(e){e.preventDefault();const t=e.targetTouches.item(0),l=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(t?{x:t.clientX-l.left,y:t.clientY-l.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=t}onTouchMove_(e){const t=e.targetTouches.item(0),l=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(t?{x:t.clientX-l.left,y:t.clientY-l.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=t}onTouchEnd_(e){var t;const l=(t=e.targetTouches.item(0))!==null&&t!==void 0?t:this.lastTouch_,b=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:e.altKey,data:this.computePosition_(l?{x:l.clientX-b.left,y:l.clientY-b.top}:void 0),sender:this,shiftKey:e.shiftKey})}}function pe(n,e,t,l,b){const P=(n-e)/(t-e);return l+P*(b-l)}function zi(n){return String(n.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function ye(n,e,t){return Math.min(Math.max(n,e),t)}function ei(n,e){return(n%e+e)%e}const Ee=N("txt");class Ui{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.props_=t.props,this.props_.emitter.on("change",this.onChange_),this.element=e.createElement("div"),this.element.classList.add(Ee(),Ee(void 0,"num")),t.arrayPosition&&this.element.classList.add(Ee(void 0,t.arrayPosition)),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("input");l.classList.add(Ee("i")),l.type="text",t.viewProps.bindDisabled(l),this.element.appendChild(l),this.inputElement=l,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=t.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add(Ee()),this.inputElement.classList.add(Ee("i"));const b=e.createElement("div");b.classList.add(Ee("k")),this.element.appendChild(b),this.knobElement=b;const P=e.createElementNS(Be,"svg");P.classList.add(Ee("g")),this.knobElement.appendChild(P);const S=e.createElementNS(Be,"path");S.classList.add(Ee("gb")),P.appendChild(S),this.guideBodyElem_=S;const F=e.createElementNS(Be,"path");F.classList.add(Ee("gh")),P.appendChild(F),this.guideHeadElem_=F;const q=e.createElement("div");q.classList.add(N("tt")()),this.knobElement.appendChild(q),this.tooltipElem_=q,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.refresh()}onDraggingChange_(e){if(e.rawValue===null){this.element.classList.remove(Ee(void 0,"drg"));return}this.element.classList.add(Ee(void 0,"drg"));const t=e.rawValue/this.props_.get("draggingScale"),l=t+(t>0?-1:t<0?1:0),b=ye(-l,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${l+b},0 L${l},4 L${l+b},8`,`M ${t},-1 L${t},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${t},4`);const P=this.props_.get("formatter");this.tooltipElem_.textContent=P(this.value.rawValue),this.tooltipElem_.style.left=`${t}px`}refresh(){const e=this.props_.get("formatter");this.inputElement.value=e(this.value.rawValue)}onChange_(){this.refresh()}}class at{constructor(e,t){var l;this.originRawValue_=0,this.onInputChange_=this.onInputChange_.bind(this),this.onInputKeyDown_=this.onInputKeyDown_.bind(this),this.onInputKeyUp_=this.onInputKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=t.baseStep,this.parser_=t.parser,this.props=t.props,this.sliderProps_=(l=t.sliderProps)!==null&&l!==void 0?l:null,this.value=t.value,this.viewProps=t.viewProps,this.dragging_=J(null),this.view=new Ui(e,{arrayPosition:t.arrayPosition,dragging:this.dragging_,props:this.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.inputElement.addEventListener("keydown",this.onInputKeyDown_),this.view.inputElement.addEventListener("keyup",this.onInputKeyUp_);const b=new dt(this.view.knobElement);b.emitter.on("down",this.onPointerDown_),b.emitter.on("move",this.onPointerMove_),b.emitter.on("up",this.onPointerUp_)}constrainValue_(e){var t,l;const b=(t=this.sliderProps_)===null||t===void 0?void 0:t.get("minValue"),P=(l=this.sliderProps_)===null||l===void 0?void 0:l.get("maxValue");let S=e;return b!==void 0&&(S=Math.max(S,b)),P!==void 0&&(S=Math.min(S,P)),S}onInputChange_(e){const l=e.currentTarget.value,b=this.parser_(l);w(b)||(this.value.rawValue=this.constrainValue_(b)),this.view.refresh()}onInputKeyDown_(e){const t=Ae(this.baseStep_,He(e));t!==0&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+t),{forceEmit:!1,last:!1})}onInputKeyUp_(e){Ae(this.baseStep_,He(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}onPointerDown_(){this.originRawValue_=this.value.rawValue,this.dragging_.rawValue=0}computeDraggingValue_(e){if(!e.point)return null;const t=e.point.x-e.bounds.width/2;return this.constrainValue_(this.originRawValue_+t*this.props.get("draggingScale"))}onPointerMove_(e){const t=this.computeDraggingValue_(e.data);t!==null&&(this.value.setRawValue(t,{forceEmit:!1,last:!1}),this.dragging_.rawValue=this.value.rawValue-this.originRawValue_)}onPointerUp_(e){const t=this.computeDraggingValue_(e.data);t!==null&&(this.value.setRawValue(t,{forceEmit:!0,last:!0}),this.dragging_.rawValue=null)}}const _n=N("sld");class ti{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.props_=t.props,this.props_.emitter.on("change",this.onChange_),this.element=e.createElement("div"),this.element.classList.add(_n()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("div");l.classList.add(_n("t")),t.viewProps.bindTabIndex(l),this.element.appendChild(l),this.trackElement=l;const b=e.createElement("div");b.classList.add(_n("k")),this.trackElement.appendChild(b),this.knobElement=b,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.update_()}update_(){const e=ye(pe(this.value.rawValue,this.props_.get("minValue"),this.props_.get("maxValue"),0,100),0,100);this.knobElement.style.width=`${e}%`}onChange_(){this.update_()}}class Rs{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDownOrMove_=this.onPointerDownOrMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=t.baseStep,this.value=t.value,this.viewProps=t.viewProps,this.props=t.props,this.view=new ti(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new dt(this.view.trackElement),this.ptHandler_.emitter.on("down",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("move",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.trackElement.addEventListener("keydown",this.onKeyDown_),this.view.trackElement.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){e.point&&this.value.setRawValue(pe(ye(e.point.x,0,e.bounds.width),0,e.bounds.width,this.props.get("minValue"),this.props.get("maxValue")),t)}onPointerDownOrMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){const t=Ae(this.baseStep_,et(e));t!==0&&this.value.setRawValue(this.value.rawValue+t,{forceEmit:!1,last:!1})}onKeyUp_(e){Ae(this.baseStep_,et(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const ni=N("sldtxt");class Ne{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(ni());const l=e.createElement("div");l.classList.add(ni("s")),this.sliderView_=t.sliderView,l.appendChild(this.sliderView_.element),this.element.appendChild(l);const b=e.createElement("div");b.classList.add(ni("t")),this.textView_=t.textView,b.appendChild(this.textView_.element),this.element.appendChild(b)}}class rn{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.sliderC_=new Rs(e,{baseStep:t.baseStep,props:t.sliderProps,value:t.value,viewProps:this.viewProps}),this.textC_=new at(e,{baseStep:t.baseStep,parser:t.parser,props:t.textProps,sliderProps:t.sliderProps,value:t.value,viewProps:t.viewProps}),this.view=new Ne(e,{sliderView:this.sliderC_.view,textView:this.textC_.view})}get sliderController(){return this.sliderC_}get textController(){return this.textC_}}function Ct(n,e){n.write(e)}function jt(n){const e=$;if(Array.isArray(n))return e.required.array(e.required.object({text:e.required.string,value:e.required.raw}))(n).value;if(typeof n=="object")return e.required.raw(n).value}function ii(n){if(n==="inline"||n==="popup")return n}function De(n){const e=$;return e.required.object({max:e.optional.number,min:e.optional.number,step:e.optional.number})(n).value}function si(n){if(Array.isArray(n))return n;const e=[];return Object.keys(n).forEach(t=>{e.push({text:t,value:n[t]})}),e}function yn(n){return w(n)?null:new Nt(si(n))}function Gi(n){const e=n?Ue(n,Le):null;return e?e.step:null}function xn(n,e){const t=n&&Ue(n,Le);return t?zi(t.step):Math.max(zi(e),2)}function zt(n){const e=Gi(n);return e??1}function Ut(n,e){var t;const l=n&&Ue(n,Le),b=Math.abs((t=l==null?void 0:l.step)!==null&&t!==void 0?t:e);return b===0?.1:Math.pow(10,Math.floor(Math.log10(b))-1)}const Cn=N("ckb");class Ri{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(Cn()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("label");l.classList.add(Cn("l")),this.element.appendChild(l);const b=e.createElement("input");b.classList.add(Cn("i")),b.type="checkbox",l.appendChild(b),this.inputElement=b,t.viewProps.bindDisabled(this.inputElement);const P=e.createElement("div");P.classList.add(Cn("w")),l.appendChild(P);const S=ct(e,"check");P.appendChild(S),t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.update_()}update_(){this.inputElement.checked=this.value.rawValue}onValueChange_(){this.update_()}}class Ki{constructor(e,t){this.onInputChange_=this.onInputChange_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new Ri(e,{value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(e){const t=e.currentTarget;this.value.rawValue=t.checked}}function Xi(n){const e=[],t=yn(n.options);return t&&e.push(t),new _t(e)}const on={id:"input-bool",type:"input",accept:(n,e)=>{if(typeof n!="boolean")return null;const l=A(e,{options:$.optional.custom(jt)});return l?{initialValue:n,params:l}:null},binding:{reader:n=>Ai,constraint:n=>Xi(n.params),writer:n=>Ct},controller:n=>{const e=n.document,t=n.value,l=n.constraint,b=l&&Ue(l,Nt);return b?new xt(e,{props:new X({options:b.values.value("options")}),value:t,viewProps:n.viewProps}):new Ki(e,{value:t,viewProps:n.viewProps})}},mt=N("col");class $i{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(mt()),t.foldable.bindExpandedClass(this.element,mt(void 0,"expanded")),z(t.foldable,"completed",te(this.element,mt(void 0,"cpl")));const l=e.createElement("div");l.classList.add(mt("h")),this.element.appendChild(l);const b=e.createElement("div");b.classList.add(mt("s")),l.appendChild(b),this.swatchElement=b;const P=e.createElement("div");if(P.classList.add(mt("t")),l.appendChild(P),this.textElement=P,t.pickerLayout==="inline"){const S=e.createElement("div");S.classList.add(mt("p")),this.element.appendChild(S),this.pickerElement=S}else this.pickerElement=null}}function Pn(n,e,t){const l=ye(n/255,0,1),b=ye(e/255,0,1),P=ye(t/255,0,1),S=Math.max(l,b,P),F=Math.min(l,b,P),q=S-F;let H=0,ae=0;const le=(F+S)/2;return q!==0&&(ae=q/(1-Math.abs(S+F-1)),l===S?H=(b-P)/q:b===S?H=2+(P-l)/q:H=4+(l-b)/q,H=H/6+(H<0?1:0)),[H*360,ae*100,le*100]}function Ks(n,e,t){const l=(n%360+360)%360,b=ye(e/100,0,1),P=ye(t/100,0,1),S=(1-Math.abs(2*P-1))*b,F=S*(1-Math.abs(l/60%2-1)),q=P-S/2;let H,ae,le;return l>=0&&l<60?[H,ae,le]=[S,F,0]:l>=60&&l<120?[H,ae,le]=[F,S,0]:l>=120&&l<180?[H,ae,le]=[0,S,F]:l>=180&&l<240?[H,ae,le]=[0,F,S]:l>=240&&l<300?[H,ae,le]=[F,0,S]:[H,ae,le]=[S,0,F],[(H+q)*255,(ae+q)*255,(le+q)*255]}function ri(n,e,t){const l=ye(n/255,0,1),b=ye(e/255,0,1),P=ye(t/255,0,1),S=Math.max(l,b,P),F=Math.min(l,b,P),q=S-F;let H;q===0?H=0:S===l?H=60*(((b-P)/q%6+6)%6):S===b?H=60*((P-l)/q+2):H=60*((l-b)/q+4);const ae=S===0?0:q/S,le=S;return[H,ae*100,le*100]}function Yi(n,e,t){const l=ei(n,360),b=ye(e/100,0,1),P=ye(t/100,0,1),S=P*b,F=S*(1-Math.abs(l/60%2-1)),q=P-S;let H,ae,le;return l>=0&&l<60?[H,ae,le]=[S,F,0]:l>=60&&l<120?[H,ae,le]=[F,S,0]:l>=120&&l<180?[H,ae,le]=[0,S,F]:l>=180&&l<240?[H,ae,le]=[0,F,S]:l>=240&&l<300?[H,ae,le]=[F,0,S]:[H,ae,le]=[S,0,F],[(H+q)*255,(ae+q)*255,(le+q)*255]}function Xs(n,e,t){const l=t+e*(100-Math.abs(2*t-100))/200;return[n,l!==0?e*(100-Math.abs(2*t-100))/l:0,t+e*(100-Math.abs(2*t-100))/(2*100)]}function $s(n,e,t){const l=100-Math.abs(t*(200-e)/100-100);return[n,l!==0?e*t/l:0,t*(200-e)/(2*100)]}function Pt(n){return[n[0],n[1],n[2]]}function d(n,e){return[n[0],n[1],n[2],e]}const o={hsl:{hsl:(n,e,t)=>[n,e,t],hsv:Xs,rgb:Ks},hsv:{hsl:$s,hsv:(n,e,t)=>[n,e,t],rgb:Yi},rgb:{hsl:Pn,hsv:ri,rgb:(n,e,t)=>[n,e,t]}};function p(n,e){return[e==="float"?1:n==="rgb"?255:360,e==="float"?1:n==="rgb"?255:100,e==="float"?1:n==="rgb"?255:100]}function v(n,e){return n===e?e:ei(n,e)}function x(n,e,t){var l;const b=p(e,t);return[e==="rgb"?ye(n[0],0,b[0]):v(n[0],b[0]),ye(n[1],0,b[1]),ye(n[2],0,b[2]),ye((l=n[3])!==null&&l!==void 0?l:1,0,1)]}function k(n,e,t,l){const b=p(e,t),P=p(e,l);return n.map((S,F)=>S/b[F]*P[F])}function D(n,e,t){const l=k(n,e.mode,e.type,"int"),b=o[e.mode][t.mode](...l);return k(b,t.mode,"int",t.type)}function B(n,e){return typeof n!="object"||w(n)?!1:e in n&&typeof n[e]=="number"}class R{constructor(e,t,l="int"){this.mode=t,this.type=l,this.comps_=x(e,t,l)}static black(e="int"){return new R([0,0,0],"rgb",e)}static fromObject(e,t="int"){const l="a"in e?[e.r,e.g,e.b,e.a]:[e.r,e.g,e.b];return new R(l,"rgb",t)}static toRgbaObject(e,t="int"){return e.toRgbaObject(t)}static isRgbColorObject(e){return B(e,"r")&&B(e,"g")&&B(e,"b")}static isRgbaColorObject(e){return this.isRgbColorObject(e)&&B(e,"a")}static isColorObject(e){return this.isRgbColorObject(e)}static equals(e,t){if(e.mode!==t.mode)return!1;const l=e.comps_,b=t.comps_;for(let P=0;P<l.length;P++)if(l[P]!==b[P])return!1;return!0}getComponents(e,t="int"){return d(D(Pt(this.comps_),{mode:this.mode,type:this.type},{mode:e??this.mode,type:t}),this.comps_[3])}toRgbaObject(e="int"){const t=this.getComponents("rgb",e);return{r:t[0],g:t[1],b:t[2],a:t[3]}}}const xe=N("colp");class lt{constructor(e,t){this.alphaViews_=null,this.element=e.createElement("div"),this.element.classList.add(xe());const l=e.createElement("div");l.classList.add(xe("hsv"));const b=e.createElement("div");b.classList.add(xe("sv")),this.svPaletteView_=t.svPaletteView,b.appendChild(this.svPaletteView_.element),l.appendChild(b);const P=e.createElement("div");P.classList.add(xe("h")),this.hPaletteView_=t.hPaletteView,P.appendChild(this.hPaletteView_.element),l.appendChild(P),this.element.appendChild(l);const S=e.createElement("div");if(S.classList.add(xe("rgb")),this.textView_=t.textView,S.appendChild(this.textView_.element),this.element.appendChild(S),t.alphaViews){this.alphaViews_={palette:t.alphaViews.palette,text:t.alphaViews.text};const F=e.createElement("div");F.classList.add(xe("a"));const q=e.createElement("div");q.classList.add(xe("ap")),q.appendChild(this.alphaViews_.palette.element),F.appendChild(q);const H=e.createElement("div");H.classList.add(xe("at")),H.appendChild(this.alphaViews_.text.element),F.appendChild(H),this.element.appendChild(F)}}get allFocusableElements(){const e=[this.svPaletteView_.element,this.hPaletteView_.element,this.textView_.modeSelectElement,...this.textView_.textViews.map(t=>t.inputElement)];return this.alphaViews_&&e.push(this.alphaViews_.palette.element,this.alphaViews_.text.inputElement),e}}function oi(n){return n==="int"?"int":n==="float"?"float":void 0}function ai(n){const e=$;return A(n,{alpha:e.optional.boolean,color:e.optional.object({alpha:e.optional.boolean,type:e.optional.custom(oi)}),expanded:e.optional.boolean,picker:e.optional.custom(ii)})}function Mt(n){return n?.1:1}function an(n){var e;return(e=n.color)===null||e===void 0?void 0:e.type}function sl(n,e){return n.alpha===e.alpha&&n.mode===e.mode&&n.notation===e.notation&&n.type===e.type}function tt(n,e){const t=n.match(/^(.+)%$/);return Math.min(t?parseFloat(t[1])*.01*e:parseFloat(n),e)}const rl={deg:n=>n,grad:n=>n*360/400,rad:n=>n*360/(2*Math.PI),turn:n=>n*360};function Br(n){const e=n.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);if(!e)return parseFloat(n);const t=parseFloat(e[1]),l=e[2];return rl[l](t)}function jr(n){const e=n.match(/^rgb\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const t=[tt(e[1],255),tt(e[2],255),tt(e[3],255)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function zr(n){return e=>{const t=jr(e);return t?new R(t,"rgb",n):null}}function Ur(n){const e=n.match(/^rgba\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const t=[tt(e[1],255),tt(e[2],255),tt(e[3],255),tt(e[4],1)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function Gr(n){return e=>{const t=Ur(e);return t?new R(t,"rgb",n):null}}function Rr(n){const e=n.match(/^hsl\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const t=[Br(e[1]),tt(e[2],100),tt(e[3],100)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function Kr(n){return e=>{const t=Rr(e);return t?new R(t,"hsl",n):null}}function Xr(n){const e=n.match(/^hsla\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const t=[Br(e[1]),tt(e[2],100),tt(e[3],100),tt(e[4],1)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function $r(n){return e=>{const t=Xr(e);return t?new R(t,"hsl",n):null}}function Yr(n){const e=n.match(/^#([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(e)return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)];const t=n.match(/^(?:#|0x)([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:null}function ol(n){const e=Yr(n);return e?new R(e,"rgb","int"):null}function qr(n){const e=n.match(/^#?([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(e)return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16),pe(parseInt(e[4]+e[4],16),0,255,0,1)];const t=n.match(/^(?:#|0x)?([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16),pe(parseInt(t[4],16),0,255,0,1)]:null}function al(n){const e=qr(n);return e?new R(e,"rgb","int"):null}function Qr(n){const e=n.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!e)return null;const t=[parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3])];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function Zr(n){return e=>{const t=Qr(e);return t?new R(t,"rgb",n):null}}function Wr(n){const e=n.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*a\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!e)return null;const t=[parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3]),parseFloat(e[4])];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function Jr(n){return e=>{const t=Wr(e);return t?new R(t,"rgb",n):null}}const ll=[{parser:Yr,result:{alpha:!1,mode:"rgb",notation:"hex"}},{parser:qr,result:{alpha:!0,mode:"rgb",notation:"hex"}},{parser:jr,result:{alpha:!1,mode:"rgb",notation:"func"}},{parser:Ur,result:{alpha:!0,mode:"rgb",notation:"func"}},{parser:Rr,result:{alpha:!1,mode:"hsl",notation:"func"}},{parser:Xr,result:{alpha:!0,mode:"hsl",notation:"func"}},{parser:Qr,result:{alpha:!1,mode:"rgb",notation:"object"}},{parser:Wr,result:{alpha:!0,mode:"rgb",notation:"object"}}];function cl(n){return ll.reduce((e,{parser:t,result:l})=>e||(t(n)?l:null),null)}function Ys(n,e="int"){const t=cl(n);return t?t.notation==="hex"&&e!=="float"?Object.assign(Object.assign({},t),{type:"int"}):t.notation==="func"?Object.assign(Object.assign({},t),{type:e}):null:null}const Hr={int:[ol,al,zr("int"),Gr("int"),Kr("int"),$r("int"),Zr("int"),Jr("int")],float:[zr("float"),Gr("float"),Kr("float"),$r("float"),Zr("float"),Jr("float")]};function pl(n){const e=Hr[n];return t=>{if(typeof t!="string")return R.black(n);const l=e.reduce((b,P)=>b||P(t),null);return l??R.black(n)}}function qs(n){const e=Hr[n];return t=>e.reduce((l,b)=>l||b(t),null)}function eo(n){const e=ye(Math.floor(n),0,255).toString(16);return e.length===1?`0${e}`:e}function to(n,e="#"){const t=Pt(n.getComponents("rgb")).map(eo).join("");return`${e}${t}`}function Qs(n,e="#"){const t=n.getComponents("rgb"),l=[t[0],t[1],t[2],t[3]*255].map(eo).join("");return`${e}${l}`}function no(n,e){const t=fe(e==="float"?2:0);return`rgb(${Pt(n.getComponents("rgb",e)).map(b=>t(b)).join(", ")})`}function ul(n){return e=>no(e,n)}function qi(n,e){const t=fe(2),l=fe(e==="float"?2:0);return`rgba(${n.getComponents("rgb",e).map((P,S)=>(S===3?t:l)(P)).join(", ")})`}function hl(n){return e=>qi(e,n)}function dl(n){const e=[fe(0),Ft,Ft];return`hsl(${Pt(n.getComponents("hsl")).map((l,b)=>e[b](l)).join(", ")})`}function ml(n){const e=[fe(0),Ft,Ft,fe(2)];return`hsla(${n.getComponents("hsl").map((l,b)=>e[b](l)).join(", ")})`}function io(n,e){const t=fe(e==="float"?2:0),l=["r","g","b"];return`{${Pt(n.getComponents("rgb",e)).map((P,S)=>`${l[S]}: ${t(P)}`).join(", ")}}`}function fl(n){return e=>io(e,n)}function so(n,e){const t=fe(2),l=fe(e==="float"?2:0),b=["r","g","b","a"];return`{${n.getComponents("rgb",e).map((S,F)=>{const q=F===3?t:l;return`${b[F]}: ${q(S)}`}).join(", ")}}`}function vl(n){return e=>so(e,n)}const bl=[{format:{alpha:!1,mode:"rgb",notation:"hex",type:"int"},stringifier:to},{format:{alpha:!0,mode:"rgb",notation:"hex",type:"int"},stringifier:Qs},{format:{alpha:!1,mode:"hsl",notation:"func",type:"int"},stringifier:dl},{format:{alpha:!0,mode:"hsl",notation:"func",type:"int"},stringifier:ml},...["int","float"].reduce((n,e)=>[...n,{format:{alpha:!1,mode:"rgb",notation:"func",type:e},stringifier:ul(e)},{format:{alpha:!0,mode:"rgb",notation:"func",type:e},stringifier:hl(e)},{format:{alpha:!1,mode:"rgb",notation:"object",type:e},stringifier:fl(e)},{format:{alpha:!0,mode:"rgb",notation:"object",type:e},stringifier:vl(e)}],[])];function Zs(n){return bl.reduce((e,t)=>e||(sl(t.format,n)?t.stringifier:null),null)}const li=N("apl");class gl{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.value=t.value,this.value.emitter.on("change",this.onValueChange_),this.element=e.createElement("div"),this.element.classList.add(li()),t.viewProps.bindTabIndex(this.element);const l=e.createElement("div");l.classList.add(li("b")),this.element.appendChild(l);const b=e.createElement("div");b.classList.add(li("c")),l.appendChild(b),this.colorElem_=b;const P=e.createElement("div");P.classList.add(li("m")),this.element.appendChild(P),this.markerElem_=P;const S=e.createElement("div");S.classList.add(li("p")),this.markerElem_.appendChild(S),this.previewElem_=S,this.update_()}update_(){const e=this.value.rawValue,t=e.getComponents("rgb"),l=new R([t[0],t[1],t[2],0],"rgb"),b=new R([t[0],t[1],t[2],255],"rgb"),P=["to right",qi(l),qi(b)];this.colorElem_.style.background=`linear-gradient(${P.join(",")})`,this.previewElem_.style.backgroundColor=qi(e);const S=pe(t[3],0,1,0,100);this.markerElem_.style.left=`${S}%`}onValueChange_(){this.update_()}}class wl{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new gl(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new dt(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;const l=e.point.x/e.bounds.width,b=this.value.rawValue,[P,S,F]=b.getComponents("hsv");this.value.setRawValue(new R([P,S,F,l],"hsv"),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){const t=Ae(Mt(!0),et(e));if(t===0)return;const l=this.value.rawValue,[b,P,S,F]=l.getComponents("hsv");this.value.setRawValue(new R([b,P,S,F+t],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){Ae(Mt(!0),et(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const Mn=N("coltxt");function _l(n){const e=n.createElement("select"),t=[{text:"RGB",value:"rgb"},{text:"HSL",value:"hsl"},{text:"HSV",value:"hsv"}];return e.appendChild(t.reduce((l,b)=>{const P=n.createElement("option");return P.textContent=b.text,P.value=b.value,l.appendChild(P),l},n.createDocumentFragment())),e}class yl{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Mn());const l=e.createElement("div");l.classList.add(Mn("m")),this.modeElem_=_l(e),this.modeElem_.classList.add(Mn("ms")),l.appendChild(this.modeSelectElement);const b=e.createElement("div");b.classList.add(Mn("mm")),b.appendChild(ct(e,"dropdown")),l.appendChild(b),this.element.appendChild(l);const P=e.createElement("div");P.classList.add(Mn("w")),this.element.appendChild(P),this.textsElem_=P,this.textViews_=t.textViews,this.applyTextViews_(),Y(t.colorMode,S=>{this.modeElem_.value=S})}get modeSelectElement(){return this.modeElem_}get textViews(){return this.textViews_}set textViews(e){this.textViews_=e,this.applyTextViews_()}applyTextViews_(){pn(this.textsElem_);const e=this.element.ownerDocument;this.textViews_.forEach(t=>{const l=e.createElement("div");l.classList.add(Mn("c")),l.appendChild(t.element),this.textsElem_.appendChild(l)})}}function xl(n){return fe(n==="float"?2:0)}function Cl(n,e,t){const l=p(n,e)[t];return new de({min:0,max:l})}function Ws(n,e,t){return new at(n,{arrayPosition:t===0?"fst":t===3-1?"lst":"mid",baseStep:Mt(!1),parser:e.parser,props:X.fromObject({draggingScale:e.colorType==="float"?.01:1,formatter:xl(e.colorType)}),value:J(0,{constraint:Cl(e.colorMode,e.colorType,t)}),viewProps:e.viewProps})}class Pl{constructor(e,t){this.onModeSelectChange_=this.onModeSelectChange_.bind(this),this.colorType_=t.colorType,this.parser_=t.parser,this.value=t.value,this.viewProps=t.viewProps,this.colorMode=J(this.value.rawValue.mode),this.ccs_=this.createComponentControllers_(e),this.view=new yl(e,{colorMode:this.colorMode,textViews:[this.ccs_[0].view,this.ccs_[1].view,this.ccs_[2].view]}),this.view.modeSelectElement.addEventListener("change",this.onModeSelectChange_)}createComponentControllers_(e){const t={colorMode:this.colorMode.rawValue,colorType:this.colorType_,parser:this.parser_,viewProps:this.viewProps},l=[Ws(e,t,0),Ws(e,t,1),Ws(e,t,2)];return l.forEach((b,P)=>{Bt({primary:this.value,secondary:b.value,forward:S=>S.rawValue.getComponents(this.colorMode.rawValue,this.colorType_)[P],backward:(S,F)=>{const q=this.colorMode.rawValue,H=S.rawValue.getComponents(q,this.colorType_);return H[P]=F.rawValue,new R(d(Pt(H),H[3]),q,this.colorType_)}})}),l}onModeSelectChange_(e){const t=e.currentTarget;this.colorMode.rawValue=t.value,this.ccs_=this.createComponentControllers_(this.view.element.ownerDocument),this.view.textViews=[this.ccs_[0].view,this.ccs_[1].view,this.ccs_[2].view]}}const Js=N("hpl");class Ml{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.value=t.value,this.value.emitter.on("change",this.onValueChange_),this.element=e.createElement("div"),this.element.classList.add(Js()),t.viewProps.bindTabIndex(this.element);const l=e.createElement("div");l.classList.add(Js("c")),this.element.appendChild(l);const b=e.createElement("div");b.classList.add(Js("m")),this.element.appendChild(b),this.markerElem_=b,this.update_()}update_(){const e=this.value.rawValue,[t]=e.getComponents("hsv");this.markerElem_.style.backgroundColor=no(new R([t,100,100],"hsv"));const l=pe(t,0,360,0,100);this.markerElem_.style.left=`${l}%`}onValueChange_(){this.update_()}}class kl{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new Ml(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new dt(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;const l=pe(ye(e.point.x,0,e.bounds.width),0,e.bounds.width,0,360),b=this.value.rawValue,[,P,S,F]=b.getComponents("hsv");this.value.setRawValue(new R([l,P,S,F],"hsv"),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){const t=Ae(Mt(!1),et(e));if(t===0)return;const l=this.value.rawValue,[b,P,S,F]=l.getComponents("hsv");this.value.setRawValue(new R([b+t,P,S,F],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){Ae(Mt(!1),et(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const Hs=N("svp"),ro=64;class Sl{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.value=t.value,this.value.emitter.on("change",this.onValueChange_),this.element=e.createElement("div"),this.element.classList.add(Hs()),t.viewProps.bindTabIndex(this.element);const l=e.createElement("canvas");l.height=ro,l.width=ro,l.classList.add(Hs("c")),this.element.appendChild(l),this.canvasElement=l;const b=e.createElement("div");b.classList.add(Hs("m")),this.element.appendChild(b),this.markerElem_=b,this.update_()}update_(){const e=Fn(this.canvasElement);if(!e)return;const l=this.value.rawValue.getComponents("hsv"),b=this.canvasElement.width,P=this.canvasElement.height,S=e.getImageData(0,0,b,P),F=S.data;for(let ae=0;ae<P;ae++)for(let le=0;le<b;le++){const St=pe(le,0,b,0,100),pi=pe(ae,0,P,100,0),ui=Yi(l[0],St,pi),An=(ae*b+le)*4;F[An]=ui[0],F[An+1]=ui[1],F[An+2]=ui[2],F[An+3]=255}e.putImageData(S,0,0);const q=pe(l[1],0,100,0,100);this.markerElem_.style.left=`${q}%`;const H=pe(l[2],0,100,100,0);this.markerElem_.style.top=`${H}%`}onValueChange_(){this.update_()}}class Ll{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new Sl(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new dt(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;const l=pe(e.point.x,0,e.bounds.width,0,100),b=pe(e.point.y,0,e.bounds.height,100,0),[P,,,S]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new R([P,l,b,S],"hsv"),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){ji(e.key)&&e.preventDefault();const[t,l,b,P]=this.value.rawValue.getComponents("hsv"),S=Mt(!1),F=Ae(S,et(e)),q=Ae(S,He(e));F===0&&q===0||this.value.setRawValue(new R([t,l+F,b+q,P],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){const t=Mt(!1),l=Ae(t,et(e)),b=Ae(t,He(e));l===0&&b===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class Al{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.hPaletteC_=new kl(e,{value:this.value,viewProps:this.viewProps}),this.svPaletteC_=new Ll(e,{value:this.value,viewProps:this.viewProps}),this.alphaIcs_=t.supportsAlpha?{palette:new wl(e,{value:this.value,viewProps:this.viewProps}),text:new at(e,{parser:rt,baseStep:.1,props:X.fromObject({draggingScale:.01,formatter:fe(2)}),value:J(0,{constraint:new de({min:0,max:1})}),viewProps:this.viewProps})}:null,this.alphaIcs_&&Bt({primary:this.value,secondary:this.alphaIcs_.text.value,forward:l=>l.rawValue.getComponents()[3],backward:(l,b)=>{const P=l.rawValue.getComponents();return P[3]=b.rawValue,new R(P,l.rawValue.mode)}}),this.textC_=new Pl(e,{colorType:t.colorType,parser:rt,value:this.value,viewProps:this.viewProps}),this.view=new lt(e,{alphaViews:this.alphaIcs_?{palette:this.alphaIcs_.palette.view,text:this.alphaIcs_.text.view}:null,hPaletteView:this.hPaletteC_.view,supportsAlpha:t.supportsAlpha,svPaletteView:this.svPaletteC_.view,textView:this.textC_.view})}get textController(){return this.textC_}}const er=N("colsw");class Vl{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.element=e.createElement("div"),this.element.classList.add(er()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("div");l.classList.add(er("sw")),this.element.appendChild(l),this.swatchElem_=l;const b=e.createElement("button");b.classList.add(er("b")),t.viewProps.bindDisabled(b),this.element.appendChild(b),this.buttonElement=b,this.update_()}update_(){const e=this.value.rawValue;this.swatchElem_.style.backgroundColor=Qs(e)}onValueChange_(){this.update_()}}class Il{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new Vl(e,{value:this.value,viewProps:this.viewProps})}}class tr{constructor(e,t){this.onButtonBlur_=this.onButtonBlur_.bind(this),this.onButtonClick_=this.onButtonClick_.bind(this),this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.foldable_=We.create(t.expanded),this.swatchC_=new Il(e,{value:this.value,viewProps:this.viewProps});const l=this.swatchC_.view.buttonElement;l.addEventListener("blur",this.onButtonBlur_),l.addEventListener("click",this.onButtonClick_),this.textC_=new tn(e,{parser:t.parser,props:X.fromObject({formatter:t.formatter}),value:this.value,viewProps:this.viewProps}),this.view=new $i(e,{foldable:this.foldable_,pickerLayout:t.pickerLayout}),this.view.swatchElement.appendChild(this.swatchC_.view.element),this.view.textElement.appendChild(this.textC_.view.element),this.popC_=t.pickerLayout==="popup"?new Xn(e,{viewProps:this.viewProps}):null;const b=new Al(e,{colorType:t.colorType,supportsAlpha:t.supportsAlpha,value:this.value,viewProps:this.viewProps});b.view.allFocusableElements.forEach(P=>{P.addEventListener("blur",this.onPopupChildBlur_),P.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=b,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(b.view.element),Bt({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:P=>P.rawValue,backward:(P,S)=>S.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),Q(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onButtonBlur_(e){if(!this.popC_)return;const t=this.view.element,l=e.relatedTarget;(!l||!t.contains(l))&&(this.popC_.shows.rawValue=!1)}onButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(e){if(!this.popC_)return;const t=this.popC_.view.element,l=Qe(e);l&&t.contains(l)||l&&l===this.swatchC_.view.buttonElement&&!It(t.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(e){this.popC_?e.key==="Escape"&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&e.key==="Escape"&&this.swatchC_.view.buttonElement.focus()}}function Dl(n,e){return R.isColorObject(n)?R.fromObject(n,e):R.black(e)}function Tl(n){return Pt(n.getComponents("rgb")).reduce((e,t)=>e<<8|Math.floor(t)&255,0)}function Ol(n){return n.getComponents("rgb").reduce((e,t,l)=>{const b=Math.floor(l===3?t*255:t)&255;return e<<8|b},0)>>>0}function El(n){return new R([n>>16&255,n>>8&255,n&255],"rgb")}function Nl(n){return new R([n>>24&255,n>>16&255,n>>8&255,pe(n&255,0,255,0,1)],"rgb")}function Fl(n){return typeof n!="number"?R.black():El(n)}function Bl(n){return typeof n!="number"?R.black():Nl(n)}function jl(n){const e=Zs(n);return e?(t,l)=>{Ct(t,e(l))}:null}function zl(n){const e=n?Ol:Tl;return(t,l)=>{Ct(t,e(l))}}function Ul(n,e,t){const l=e.toRgbaObject(t);n.writeProperty("r",l.r),n.writeProperty("g",l.g),n.writeProperty("b",l.b),n.writeProperty("a",l.a)}function Gl(n,e,t){const l=e.toRgbaObject(t);n.writeProperty("r",l.r),n.writeProperty("g",l.g),n.writeProperty("b",l.b)}function Rl(n,e){return(t,l)=>{n?Ul(t,l,e):Gl(t,l,e)}}function nr(n){var e;return!!(n!=null&&n.alpha||!((e=n==null?void 0:n.color)===null||e===void 0)&&e.alpha)}function Kl(n){return n?e=>Qs(e,"0x"):e=>to(e,"0x")}function Xl(n){return"color"in n||"view"in n&&n.view==="color"}const $l={id:"input-color-number",type:"input",accept:(n,e)=>{if(typeof n!="number"||!Xl(e))return null;const t=ai(e);return t?{initialValue:n,params:t}:null},binding:{reader:n=>nr(n.params)?Bl:Fl,equals:R.equals,writer:n=>zl(nr(n.params))},controller:n=>{const e=nr(n.params),t="expanded"in n.params?n.params.expanded:void 0,l="picker"in n.params?n.params.picker:void 0;return new tr(n.document,{colorType:"int",expanded:t??!1,formatter:Kl(e),parser:qs("int"),pickerLayout:l??"popup",supportsAlpha:e,value:n.value,viewProps:n.viewProps})}};function Yl(n){return R.isRgbaColorObject(n)}function ql(n){return e=>Dl(e,n)}function Ql(n,e){return t=>n?so(t,e):io(t,e)}const Zl={id:"input-color-object",type:"input",accept:(n,e)=>{if(!R.isColorObject(n))return null;const t=ai(e);return t?{initialValue:n,params:t}:null},binding:{reader:n=>ql(an(n.params)),equals:R.equals,writer:n=>Rl(Yl(n.initialValue),an(n.params))},controller:n=>{var e;const t=R.isRgbaColorObject(n.initialValue),l="expanded"in n.params?n.params.expanded:void 0,b="picker"in n.params?n.params.picker:void 0,P=(e=an(n.params))!==null&&e!==void 0?e:"int";return new tr(n.document,{colorType:P,expanded:l??!1,formatter:Ql(t,P),parser:qs(P),pickerLayout:b??"popup",supportsAlpha:t,value:n.value,viewProps:n.viewProps})}},Wl={id:"input-color-string",type:"input",accept:(n,e)=>{if(typeof n!="string"||"view"in e&&e.view==="text")return null;const t=Ys(n,an(e));if(!t||!Zs(t))return null;const b=ai(e);return b?{initialValue:n,params:b}:null},binding:{reader:n=>{var e;return pl((e=an(n.params))!==null&&e!==void 0?e:"int")},equals:R.equals,writer:n=>{const e=Ys(n.initialValue,an(n.params));if(!e)throw I.shouldNeverHappen();const t=jl(e);if(!t)throw I.notBindable();return t}},controller:n=>{const e=Ys(n.initialValue,an(n.params));if(!e)throw I.shouldNeverHappen();const t=Zs(e);if(!t)throw I.shouldNeverHappen();const l="expanded"in n.params?n.params.expanded:void 0,b="picker"in n.params?n.params.picker:void 0;return new tr(n.document,{colorType:e.type,expanded:l??!1,formatter:t,parser:qs(e.type),pickerLayout:b??"popup",supportsAlpha:e.alpha,value:n.value,viewProps:n.viewProps})}};class Gt{constructor(e){this.components=e.components,this.asm_=e.assembly}constrain(e){const t=this.asm_.toComponents(e).map((l,b)=>{var P,S;return(S=(P=this.components[b])===null||P===void 0?void 0:P.constrain(l))!==null&&S!==void 0?S:l});return this.asm_.fromComponents(t)}}const oo=N("pndtxt");class Jl{constructor(e,t){this.textViews=t.textViews,this.element=e.createElement("div"),this.element.classList.add(oo()),this.textViews.forEach(l=>{const b=e.createElement("div");b.classList.add(oo("a")),b.appendChild(l.element),this.element.appendChild(b)})}}function Hl(n,e,t){return new at(n,{arrayPosition:t===0?"fst":t===e.axes.length-1?"lst":"mid",baseStep:e.axes[t].baseStep,parser:e.parser,props:e.axes[t].textProps,value:J(0,{constraint:e.axes[t].constraint}),viewProps:e.viewProps})}class ir{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.acs_=t.axes.map((l,b)=>Hl(e,t,b)),this.acs_.forEach((l,b)=>{Bt({primary:this.value,secondary:l.value,forward:P=>t.assembly.toComponents(P.rawValue)[b],backward:(P,S)=>{const F=t.assembly.toComponents(P.rawValue);return F[b]=S.rawValue,t.assembly.fromComponents(F)}})}),this.view=new Jl(e,{textViews:this.acs_.map(l=>l.view)})}}function ao(n,e){return"step"in n&&!w(n.step)?new Le(n.step,e):null}function lo(n){return!w(n.max)&&!w(n.min)?new de({max:n.max,min:n.min}):!w(n.max)||!w(n.min)?new yt({max:n.max,min:n.min}):null}function ec(n){const e=Ue(n,de);if(e)return[e.values.get("min"),e.values.get("max")];const t=Ue(n,yt);return t?[t.minValue,t.maxValue]:[void 0,void 0]}function tc(n,e){const t=[],l=ao(n,e);l&&t.push(l);const b=lo(n);b&&t.push(b);const P=yn(n.options);return P&&t.push(P),new _t(t)}const nc={id:"input-number",type:"input",accept:(n,e)=>{if(typeof n!="number")return null;const t=$,l=A(e,{format:t.optional.function,max:t.optional.number,min:t.optional.number,options:t.optional.custom(jt),step:t.optional.number});return l?{initialValue:n,params:l}:null},binding:{reader:n=>Wn,constraint:n=>tc(n.params,n.initialValue),writer:n=>Ct},controller:n=>{var e;const t=n.value,l=n.constraint,b=l&&Ue(l,Nt);if(b)return new xt(n.document,{props:new X({options:b.values.value("options")}),value:t,viewProps:n.viewProps});const P=(e="format"in n.params?n.params.format:void 0)!==null&&e!==void 0?e:fe(xn(l,t.rawValue)),S=l&&Ue(l,de);return S?new rn(n.document,{baseStep:zt(l),parser:rt,sliderProps:new X({maxValue:S.values.value("max"),minValue:S.values.value("min")}),textProps:X.fromObject({draggingScale:Ut(l,t.rawValue),formatter:P}),value:t,viewProps:n.viewProps}):new at(n.document,{baseStep:zt(l),parser:rt,props:X.fromObject({draggingScale:Ut(l,t.rawValue),formatter:P}),value:t,viewProps:n.viewProps})}};class Rt{constructor(e=0,t=0){this.x=e,this.y=t}getComponents(){return[this.x,this.y]}static isObject(e){if(w(e))return!1;const t=e.x,l=e.y;return!(typeof t!="number"||typeof l!="number")}static equals(e,t){return e.x===t.x&&e.y===t.y}toObject(){return{x:this.x,y:this.y}}}const co={toComponents:n=>n.getComponents(),fromComponents:n=>new Rt(...n)},kn=N("p2d");class ic{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(kn()),t.viewProps.bindClassModifiers(this.element),Y(t.expanded,te(this.element,kn(void 0,"expanded")));const l=e.createElement("div");l.classList.add(kn("h")),this.element.appendChild(l);const b=e.createElement("button");b.classList.add(kn("b")),b.appendChild(ct(e,"p2dpad")),t.viewProps.bindDisabled(b),l.appendChild(b),this.buttonElement=b;const P=e.createElement("div");if(P.classList.add(kn("t")),l.appendChild(P),this.textElement=P,t.pickerLayout==="inline"){const S=e.createElement("div");S.classList.add(kn("p")),this.element.appendChild(S),this.pickerElement=S}else this.pickerElement=null}}const Kt=N("p2dp");class sc{constructor(e,t){this.onFoldableChange_=this.onFoldableChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.invertsY_=t.invertsY,this.maxValue_=t.maxValue,this.element=e.createElement("div"),this.element.classList.add(Kt()),t.layout==="popup"&&this.element.classList.add(Kt(void 0,"p"));const l=e.createElement("div");l.classList.add(Kt("p")),t.viewProps.bindTabIndex(l),this.element.appendChild(l),this.padElement=l;const b=e.createElementNS(Be,"svg");b.classList.add(Kt("g")),this.padElement.appendChild(b),this.svgElem_=b;const P=e.createElementNS(Be,"line");P.classList.add(Kt("ax")),P.setAttributeNS(null,"x1","0"),P.setAttributeNS(null,"y1","50%"),P.setAttributeNS(null,"x2","100%"),P.setAttributeNS(null,"y2","50%"),this.svgElem_.appendChild(P);const S=e.createElementNS(Be,"line");S.classList.add(Kt("ax")),S.setAttributeNS(null,"x1","50%"),S.setAttributeNS(null,"y1","0"),S.setAttributeNS(null,"x2","50%"),S.setAttributeNS(null,"y2","100%"),this.svgElem_.appendChild(S);const F=e.createElementNS(Be,"line");F.classList.add(Kt("l")),F.setAttributeNS(null,"x1","50%"),F.setAttributeNS(null,"y1","50%"),this.svgElem_.appendChild(F),this.lineElem_=F;const q=e.createElement("div");q.classList.add(Kt("m")),this.padElement.appendChild(q),this.markerElem_=q,t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.update_()}get allFocusableElements(){return[this.padElement]}update_(){const[e,t]=this.value.rawValue.getComponents(),l=this.maxValue_,b=pe(e,-l,+l,0,100),P=pe(t,-l,+l,0,100),S=this.invertsY_?100-P:P;this.lineElem_.setAttributeNS(null,"x2",`${b}%`),this.lineElem_.setAttributeNS(null,"y2",`${S}%`),this.markerElem_.style.left=`${b}%`,this.markerElem_.style.top=`${S}%`}onValueChange_(){this.update_()}onFoldableChange_(){this.update_()}}function po(n,e,t){return[Ae(e[0],et(n)),Ae(e[1],He(n))*(t?1:-1)]}class rc{constructor(e,t){this.onPadKeyDown_=this.onPadKeyDown_.bind(this),this.onPadKeyUp_=this.onPadKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.baseSteps_=t.baseSteps,this.maxValue_=t.maxValue,this.invertsY_=t.invertsY,this.view=new sc(e,{invertsY:this.invertsY_,layout:t.layout,maxValue:this.maxValue_,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new dt(this.view.padElement),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.padElement.addEventListener("keydown",this.onPadKeyDown_),this.view.padElement.addEventListener("keyup",this.onPadKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;const l=this.maxValue_,b=pe(e.point.x,0,e.bounds.width,-l,+l),P=pe(this.invertsY_?e.bounds.height-e.point.y:e.point.y,0,e.bounds.height,-l,+l);this.value.setRawValue(new Rt(b,P),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onPadKeyDown_(e){ji(e.key)&&e.preventDefault();const[t,l]=po(e,this.baseSteps_,this.invertsY_);t===0&&l===0||this.value.setRawValue(new Rt(this.value.rawValue.x+t,this.value.rawValue.y+l),{forceEmit:!1,last:!1})}onPadKeyUp_(e){const[t,l]=po(e,this.baseSteps_,this.invertsY_);t===0&&l===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class oc{constructor(e,t){var l,b;this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.onPadButtonBlur_=this.onPadButtonBlur_.bind(this),this.onPadButtonClick_=this.onPadButtonClick_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.foldable_=We.create(t.expanded),this.popC_=t.pickerLayout==="popup"?new Xn(e,{viewProps:this.viewProps}):null;const P=new rc(e,{baseSteps:[t.axes[0].baseStep,t.axes[1].baseStep],invertsY:t.invertsY,layout:t.pickerLayout,maxValue:t.maxValue,value:this.value,viewProps:this.viewProps});P.view.allFocusableElements.forEach(S=>{S.addEventListener("blur",this.onPopupChildBlur_),S.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=P,this.textC_=new ir(e,{assembly:co,axes:t.axes,parser:t.parser,value:this.value,viewProps:this.viewProps}),this.view=new ic(e,{expanded:this.foldable_.value("expanded"),pickerLayout:t.pickerLayout,viewProps:this.viewProps}),this.view.textElement.appendChild(this.textC_.view.element),(l=this.view.buttonElement)===null||l===void 0||l.addEventListener("blur",this.onPadButtonBlur_),(b=this.view.buttonElement)===null||b===void 0||b.addEventListener("click",this.onPadButtonClick_),this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),Bt({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:S=>S.rawValue,backward:(S,F)=>F.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),Q(this.foldable_,this.view.pickerElement))}onPadButtonBlur_(e){if(!this.popC_)return;const t=this.view.element,l=e.relatedTarget;(!l||!t.contains(l))&&(this.popC_.shows.rawValue=!1)}onPadButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(e){if(!this.popC_)return;const t=this.popC_.view.element,l=Qe(e);l&&t.contains(l)||l&&l===this.view.buttonElement&&!It(t.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(e){this.popC_?e.key==="Escape"&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&e.key==="Escape"&&this.view.buttonElement.focus()}}class Sn{constructor(e=0,t=0,l=0){this.x=e,this.y=t,this.z=l}getComponents(){return[this.x,this.y,this.z]}static isObject(e){if(w(e))return!1;const t=e.x,l=e.y,b=e.z;return!(typeof t!="number"||typeof l!="number"||typeof b!="number")}static equals(e,t){return e.x===t.x&&e.y===t.y&&e.z===t.z}toObject(){return{x:this.x,y:this.y,z:this.z}}}const uo={toComponents:n=>n.getComponents(),fromComponents:n=>new Sn(...n)};function ac(n){return Sn.isObject(n)?new Sn(n.x,n.y,n.z):new Sn}function lc(n,e){n.writeProperty("x",e.x),n.writeProperty("y",e.y),n.writeProperty("z",e.z)}function cc(n,e){return new Gt({assembly:uo,components:[kt("x"in n?n.x:void 0,e.x),kt("y"in n?n.y:void 0,e.y),kt("z"in n?n.z:void 0,e.z)]})}function sr(n,e){return{baseStep:zt(e),constraint:e,textProps:X.fromObject({draggingScale:Ut(e,n),formatter:fe(xn(e,n))})}}const pc={id:"input-point3d",type:"input",accept:(n,e)=>{if(!Sn.isObject(n))return null;const t=$,l=A(e,{x:t.optional.custom(De),y:t.optional.custom(De),z:t.optional.custom(De)});return l?{initialValue:n,params:l}:null},binding:{reader:n=>ac,constraint:n=>cc(n.params,n.initialValue),equals:Sn.equals,writer:n=>lc},controller:n=>{const e=n.value,t=n.constraint;if(!(t instanceof Gt))throw I.shouldNeverHappen();return new ir(n.document,{assembly:uo,axes:[sr(e.rawValue.x,t.components[0]),sr(e.rawValue.y,t.components[1]),sr(e.rawValue.z,t.components[2])],parser:rt,value:e,viewProps:n.viewProps})}};class Ln{constructor(e=0,t=0,l=0,b=0){this.x=e,this.y=t,this.z=l,this.w=b}getComponents(){return[this.x,this.y,this.z,this.w]}static isObject(e){if(w(e))return!1;const t=e.x,l=e.y,b=e.z,P=e.w;return!(typeof t!="number"||typeof l!="number"||typeof b!="number"||typeof P!="number")}static equals(e,t){return e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w}toObject(){return{x:this.x,y:this.y,z:this.z,w:this.w}}}const ho={toComponents:n=>n.getComponents(),fromComponents:n=>new Ln(...n)};function uc(n){return Ln.isObject(n)?new Ln(n.x,n.y,n.z,n.w):new Ln}function hc(n,e){n.writeProperty("x",e.x),n.writeProperty("y",e.y),n.writeProperty("z",e.z),n.writeProperty("w",e.w)}function dc(n,e){return new Gt({assembly:ho,components:[kt("x"in n?n.x:void 0,e.x),kt("y"in n?n.y:void 0,e.y),kt("z"in n?n.z:void 0,e.z),kt("w"in n?n.w:void 0,e.w)]})}function mc(n,e){return{baseStep:zt(e),constraint:e,textProps:X.fromObject({draggingScale:Ut(e,n),formatter:fe(xn(e,n))})}}const fc={id:"input-point4d",type:"input",accept:(n,e)=>{if(!Ln.isObject(n))return null;const t=$,l=A(e,{x:t.optional.custom(De),y:t.optional.custom(De),z:t.optional.custom(De),w:t.optional.custom(De)});return l?{initialValue:n,params:l}:null},binding:{reader:n=>uc,constraint:n=>dc(n.params,n.initialValue),equals:Ln.equals,writer:n=>hc},controller:n=>{const e=n.value,t=n.constraint;if(!(t instanceof Gt))throw I.shouldNeverHappen();return new ir(n.document,{assembly:ho,axes:e.rawValue.getComponents().map((l,b)=>mc(l,t.components[b])),parser:rt,value:e,viewProps:n.viewProps})}};function vc(n){const e=[],t=yn(n.options);return t&&e.push(t),new _t(e)}const bc={id:"input-string",type:"input",accept:(n,e)=>{if(typeof n!="string")return null;const l=A(e,{options:$.optional.custom(jt)});return l?{initialValue:n,params:l}:null},binding:{reader:n=>Jn,constraint:n=>vc(n.params),writer:n=>Ct},controller:n=>{const e=n.document,t=n.value,l=n.constraint,b=l&&Ue(l,Nt);return b?new xt(e,{props:new X({options:b.values.value("options")}),value:t,viewProps:n.viewProps}):new tn(e,{parser:P=>P,props:X.fromObject({formatter:gn}),value:t,viewProps:n.viewProps})}},ci={monitor:{defaultInterval:200,defaultLineCount:3}},mo=N("mll");class gc{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(mo()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("textarea");l.classList.add(mo("i")),l.style.height=`calc(var(--bld-us) * ${t.lineCount})`,l.readOnly=!0,t.viewProps.bindDisabled(l),this.element.appendChild(l),this.textareaElem_=l,t.value.emitter.on("change",this.onValueUpdate_),this.value=t.value,this.update_()}update_(){const e=this.textareaElem_,t=e.scrollTop===e.scrollHeight-e.clientHeight,l=[];this.value.rawValue.forEach(b=>{b!==void 0&&l.push(this.formatter_(b))}),e.textContent=l.join(`
|
|
17
|
+
`),t&&(e.scrollTop=e.scrollHeight)}onValueUpdate_(){this.update_()}}class rr{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new gc(e,{formatter:t.formatter,lineCount:t.lineCount,value:this.value,viewProps:this.viewProps})}}const fo=N("sgl");class wc{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(fo()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("input");l.classList.add(fo("i")),l.readOnly=!0,l.type="text",t.viewProps.bindDisabled(l),this.element.appendChild(l),this.inputElement=l,t.value.emitter.on("change",this.onValueUpdate_),this.value=t.value,this.update_()}update_(){const e=this.value.rawValue,t=e[e.length-1];this.inputElement.value=t!==void 0?this.formatter_(t):""}onValueUpdate_(){this.update_()}}class or{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new wc(e,{formatter:t.formatter,value:this.value,viewProps:this.viewProps})}}const _c={id:"monitor-bool",type:"monitor",accept:(n,e)=>{if(typeof n!="boolean")return null;const l=A(e,{lineCount:$.optional.number});return l?{initialValue:n,params:l}:null},binding:{reader:n=>Ai},controller:n=>{var e;return n.value.rawValue.length===1?new or(n.document,{formatter:Vi,value:n.value,viewProps:n.viewProps}):new rr(n.document,{formatter:Vi,lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:ci.monitor.defaultLineCount,value:n.value,viewProps:n.viewProps})}},Xt=N("grl");class yc{constructor(e,t){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=e.createElement("div"),this.element.classList.add(Xt()),t.viewProps.bindClassModifiers(this.element),this.formatter_=t.formatter,this.props_=t.props,this.cursor_=t.cursor,this.cursor_.emitter.on("change",this.onCursorChange_);const l=e.createElementNS(Be,"svg");l.classList.add(Xt("g")),l.style.height=`calc(var(--bld-us) * ${t.lineCount})`,this.element.appendChild(l),this.svgElem_=l;const b=e.createElementNS(Be,"polyline");this.svgElem_.appendChild(b),this.lineElem_=b;const P=e.createElement("div");P.classList.add(Xt("t"),N("tt")()),this.element.appendChild(P),this.tooltipElem_=P,t.value.emitter.on("change",this.onValueUpdate_),this.value=t.value,this.update_()}get graphElement(){return this.svgElem_}update_(){const e=this.svgElem_.getBoundingClientRect(),t=this.value.rawValue.length-1,l=this.props_.get("minValue"),b=this.props_.get("maxValue"),P=[];this.value.rawValue.forEach((ae,le)=>{if(ae===void 0)return;const St=pe(le,0,t,0,e.width),pi=pe(ae,l,b,e.height,0);P.push([St,pi].join(","))}),this.lineElem_.setAttributeNS(null,"points",P.join(" "));const S=this.tooltipElem_,F=this.value.rawValue[this.cursor_.rawValue];if(F===void 0){S.classList.remove(Xt("t","a"));return}const q=pe(this.cursor_.rawValue,0,t,0,e.width),H=pe(F,l,b,e.height,0);S.style.left=`${q}px`,S.style.top=`${H}px`,S.textContent=`${this.formatter_(F)}`,S.classList.contains(Xt("t","a"))||(S.classList.add(Xt("t","a"),Xt("t","in")),vt(S),S.classList.remove(Xt("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class xc{constructor(e,t){if(this.onGraphMouseMove_=this.onGraphMouseMove_.bind(this),this.onGraphMouseLeave_=this.onGraphMouseLeave_.bind(this),this.onGraphPointerDown_=this.onGraphPointerDown_.bind(this),this.onGraphPointerMove_=this.onGraphPointerMove_.bind(this),this.onGraphPointerUp_=this.onGraphPointerUp_.bind(this),this.props_=t.props,this.value=t.value,this.viewProps=t.viewProps,this.cursor_=J(-1),this.view=new yc(e,{cursor:this.cursor_,formatter:t.formatter,lineCount:t.lineCount,props:this.props_,value:this.value,viewProps:this.viewProps}),!It(e))this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_);else{const l=new dt(this.view.element);l.emitter.on("down",this.onGraphPointerDown_),l.emitter.on("move",this.onGraphPointerMove_),l.emitter.on("up",this.onGraphPointerUp_)}}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(e){const t=this.view.element.getBoundingClientRect();this.cursor_.rawValue=Math.floor(pe(e.offsetX,0,t.width,0,this.value.rawValue.length))}onGraphPointerDown_(e){this.onGraphPointerMove_(e)}onGraphPointerMove_(e){if(!e.data.point){this.cursor_.rawValue=-1;return}this.cursor_.rawValue=Math.floor(pe(e.data.point.x,0,e.data.bounds.width,0,this.value.rawValue.length))}onGraphPointerUp_(){this.cursor_.rawValue=-1}}function ar(n){return"format"in n&&!w(n.format)?n.format:fe(2)}function Cc(n){var e;return n.value.rawValue.length===1?new or(n.document,{formatter:ar(n.params),value:n.value,viewProps:n.viewProps}):new rr(n.document,{formatter:ar(n.params),lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:ci.monitor.defaultLineCount,value:n.value,viewProps:n.viewProps})}function Pc(n){var e,t,l;return new xc(n.document,{formatter:ar(n.params),lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:ci.monitor.defaultLineCount,props:X.fromObject({maxValue:(t="max"in n.params?n.params.max:null)!==null&&t!==void 0?t:100,minValue:(l="min"in n.params?n.params.min:null)!==null&&l!==void 0?l:0}),value:n.value,viewProps:n.viewProps})}function vo(n){return"view"in n&&n.view==="graph"}const Mc={id:"monitor-number",type:"monitor",accept:(n,e)=>{if(typeof n!="number")return null;const t=$,l=A(e,{format:t.optional.function,lineCount:t.optional.number,max:t.optional.number,min:t.optional.number,view:t.optional.string});return l?{initialValue:n,params:l}:null},binding:{defaultBufferSize:n=>vo(n)?64:1,reader:n=>Wn},controller:n=>vo(n.params)?Pc(n):Cc(n)},kc={id:"monitor-string",type:"monitor",accept:(n,e)=>{if(typeof n!="string")return null;const t=$,l=A(e,{lineCount:t.optional.number,multiline:t.optional.boolean});return l?{initialValue:n,params:l}:null},binding:{reader:n=>Jn},controller:n=>{var e;const t=n.value;return t.rawValue.length>1||"multiline"in n.params&&n.params.multiline?new rr(n.document,{formatter:gn,lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:ci.monitor.defaultLineCount,value:t,viewProps:n.viewProps}):new or(n.document,{formatter:gn,value:t,viewProps:n.viewProps})}};class Sc{constructor(e){this.onValueChange_=this.onValueChange_.bind(this),this.reader=e.reader,this.writer=e.writer,this.emitter=new E,this.value=e.value,this.value.emitter.on("change",this.onValueChange_),this.target=e.target,this.read()}read(){const e=this.target.read();e!==void 0&&(this.value.rawValue=this.reader(e))}write_(e){this.writer(this.target,e)}onValueChange_(e){this.write_(e.rawValue),this.emitter.emit("change",{options:e.options,rawValue:e.rawValue,sender:this})}}function Lc(n,e){const t=n.accept(e.target.read(),e.params);if(w(t))return null;const l=$,b={target:e.target,initialValue:t.initialValue,params:t.params},P=n.binding.reader(b),S=n.binding.constraint?n.binding.constraint(b):void 0,F=J(P(t.initialValue),{constraint:S,equals:n.binding.equals}),q=new Sc({reader:P,target:e.target,value:F,writer:n.binding.writer(b)}),H=l.optional.boolean(e.params.disabled).value,ae=l.optional.boolean(e.params.hidden).value,le=n.controller({constraint:S,document:e.document,initialValue:t.initialValue,params:t.params,value:q.value,viewProps:$e.create({disabled:H,hidden:ae})}),St=l.optional.string(e.params.label).value;return new Je(e.document,{binding:q,blade:Xe(),props:X.fromObject({label:St??e.target.key}),valueController:le})}class Ac{constructor(e){this.onTick_=this.onTick_.bind(this),this.reader_=e.reader,this.target=e.target,this.emitter=new E,this.value=e.value,this.ticker=e.ticker,this.ticker.emitter.on("tick",this.onTick_),this.read()}dispose(){this.ticker.dispose()}read(){const e=this.target.read();if(e===void 0)return;const t=this.value.rawValue,l=this.reader_(e);this.value.rawValue=Bi(t,l),this.emitter.emit("update",{rawValue:l,sender:this})}onTick_(e){this.read()}}function Vc(n,e){return e===0?new _s:new ki(n,e??ci.monitor.defaultInterval)}function Ic(n,e){var t,l,b;const P=$,S=n.accept(e.target.read(),e.params);if(w(S))return null;const F={target:e.target,initialValue:S.initialValue,params:S.params},q=n.binding.reader(F),H=(l=(t=P.optional.number(e.params.bufferSize).value)!==null&&t!==void 0?t:n.binding.defaultBufferSize&&n.binding.defaultBufferSize(S.params))!==null&&l!==void 0?l:1,ae=P.optional.number(e.params.interval).value,le=new Ac({reader:q,target:e.target,ticker:Vc(e.document,ae),value:Gs(H)}),St=P.optional.boolean(e.params.disabled).value,pi=P.optional.boolean(e.params.hidden).value,ui=n.controller({document:e.document,params:S.params,value:le.value,viewProps:$e.create({disabled:St,hidden:pi})}),An=(b=P.optional.string(e.params.label).value)!==null&&b!==void 0?b:e.target.key;return new ze(e.document,{binding:le,blade:Xe(),props:X.fromObject({label:An}),valueController:ui})}class Dc{constructor(){this.pluginsMap_={blades:[],inputs:[],monitors:[]}}getAll(){return[...this.pluginsMap_.blades,...this.pluginsMap_.inputs,...this.pluginsMap_.monitors]}register(e){e.type==="blade"?this.pluginsMap_.blades.unshift(e):e.type==="input"?this.pluginsMap_.inputs.unshift(e):e.type==="monitor"&&this.pluginsMap_.monitors.unshift(e)}createInput(e,t,l){const b=t.read();if(w(b))throw new I({context:{key:t.key},type:"nomatchingcontroller"});const P=this.pluginsMap_.inputs.reduce((S,F)=>S??Lc(F,{document:e,target:t,params:l}),null);if(P)return P;throw new I({context:{key:t.key},type:"nomatchingcontroller"})}createMonitor(e,t,l){const b=this.pluginsMap_.monitors.reduce((P,S)=>P??Ic(S,{document:e,params:l,target:t}),null);if(b)return b;throw new I({context:{key:t.key},type:"nomatchingcontroller"})}createBlade(e,t){const l=this.pluginsMap_.blades.reduce((b,P)=>b??Mi(P,{document:e,params:t}),null);if(!l)throw new I({type:"nomatchingview",context:{params:t}});return l}createBladeApi(e){if(e instanceof Je)return new Oe(e);if(e instanceof ze)return new Zt(e);if(e instanceof Wt)return new Ot(e,this);const t=this.pluginsMap_.blades.reduce((l,b)=>l??b.api({controller:e,pool:this}),null);if(!t)throw I.shouldNeverHappen();return t}}function Tc(){const n=new Dc;return[jc,pc,fc,bc,nc,Wl,Zl,$l,on,_c,kc,Mc,hn,fs,bs,en].forEach(e=>{n.register(e)}),n}function Oc(n){return Rt.isObject(n)?new Rt(n.x,n.y):new Rt}function Ec(n,e){n.writeProperty("x",e.x),n.writeProperty("y",e.y)}function kt(n,e){if(!n)return;const t=[],l=ao(n,e);l&&t.push(l);const b=lo(n);return b&&t.push(b),new _t(t)}function Nc(n,e){return new Gt({assembly:co,components:[kt("x"in n?n.x:void 0,e.x),kt("y"in n?n.y:void 0,e.y)]})}function bo(n,e){const[t,l]=n?ec(n):[];if(!w(t)||!w(l))return Math.max(Math.abs(t??0),Math.abs(l??0));const b=zt(n);return Math.max(Math.abs(b)*10,Math.abs(e)*10)}function Fc(n,e){const t=e instanceof Gt?e.components[0]:void 0,l=e instanceof Gt?e.components[1]:void 0,b=bo(t,n.x),P=bo(l,n.y);return Math.max(b,P)}function go(n,e){return{baseStep:zt(e),constraint:e,textProps:X.fromObject({draggingScale:Ut(e,n),formatter:fe(xn(e,n))})}}function Bc(n){if(!("y"in n))return!1;const e=n.y;return e&&"inverted"in e?!!e.inverted:!1}const jc={id:"input-point2d",type:"input",accept:(n,e)=>{if(!Rt.isObject(n))return null;const t=$,l=A(e,{expanded:t.optional.boolean,picker:t.optional.custom(ii),x:t.optional.custom(De),y:t.optional.object({inverted:t.optional.boolean,max:t.optional.number,min:t.optional.number,step:t.optional.number})});return l?{initialValue:n,params:l}:null},binding:{reader:n=>Oc,constraint:n=>Nc(n.params,n.initialValue),equals:Rt.equals,writer:n=>Ec},controller:n=>{const e=n.document,t=n.value,l=n.constraint;if(!(l instanceof Gt))throw I.shouldNeverHappen();const b="expanded"in n.params?n.params.expanded:void 0,P="picker"in n.params?n.params.picker:void 0;return new oc(e,{axes:[go(t.rawValue.x,l.components[0]),go(t.rawValue.y,l.components[1])],expanded:b??!1,invertsY:Bc(n.params),maxValue:Fc(t.rawValue,l),parser:rt,pickerLayout:P??"popup",value:t,viewProps:n.viewProps})}};class wo extends a{constructor(e){super(e),this.emitter_=new E,this.controller_.valueController.value.emitter.on("change",t=>{this.emitter_.emit("change",{event:new u(this,t.rawValue)})})}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}get options(){return this.controller_.valueController.props.get("options")}set options(e){this.controller_.valueController.props.set("options",e)}get value(){return this.controller_.valueController.value.rawValue}set value(e){this.controller_.valueController.value.rawValue=e}on(e,t){const l=t.bind(this);return this.emitter_.on(e,b=>{l(b.event)}),this}}class _o extends a{constructor(e){super(e),this.emitter_=new E,this.controller_.valueController.value.emitter.on("change",t=>{this.emitter_.emit("change",{event:new u(this,t.rawValue)})})}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}get maxValue(){return this.controller_.valueController.sliderController.props.get("maxValue")}set maxValue(e){this.controller_.valueController.sliderController.props.set("maxValue",e)}get minValue(){return this.controller_.valueController.sliderController.props.get("minValue")}set minValue(e){this.controller_.valueController.sliderController.props.set("minValue",e)}get value(){return this.controller_.valueController.value.rawValue}set value(e){this.controller_.valueController.value.rawValue=e}on(e,t){const l=t.bind(this);return this.emitter_.on(e,b=>{l(b.event)}),this}}class yo extends a{constructor(e){super(e),this.emitter_=new E,this.controller_.valueController.value.emitter.on("change",t=>{this.emitter_.emit("change",{event:new u(this,t.rawValue)})})}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}get formatter(){return this.controller_.valueController.props.get("formatter")}set formatter(e){this.controller_.valueController.props.set("formatter",e)}get value(){return this.controller_.valueController.value.rawValue}set value(e){this.controller_.valueController.value.rawValue=e}on(e,t){const l=t.bind(this);return this.emitter_.on(e,b=>{l(b.event)}),this}}const zc=function(){return{id:"list",type:"blade",accept(n){const e=$,t=A(n,{options:e.required.custom(jt),value:e.required.raw,view:e.required.constant("list"),label:e.optional.string});return t?{params:t}:null},controller(n){const e=new Nt(si(n.params.options)),t=J(n.params.value,{constraint:e}),l=new xt(n.document,{props:new X({options:e.values.value("options")}),value:t,viewProps:n.viewProps});return new Et(n.document,{blade:n.blade,props:X.fromObject({label:n.params.label}),valueController:l})},api(n){return!(n.controller instanceof Et)||!(n.controller.valueController instanceof xt)?null:new wo(n.controller)}}}();function Uc(n){return n.reduce((e,t)=>Object.assign(e,{[t.presetKey]:t.read()}),{})}function Gc(n,e){n.forEach(t=>{const l=e[t.presetKey];l!==void 0&&t.write(l)})}class Rc extends mn{constructor(e,t){super(e,t)}get element(){return this.controller_.view.element}importPreset(e){const t=this.controller_.rackController.rack.find(Je).map(l=>l.binding.target);Gc(t,e),this.refresh()}exportPreset(){const e=this.controller_.rackController.rack.find(Je).map(t=>t.binding.target);return Uc(e)}refresh(){this.controller_.rackController.rack.find(Je).forEach(e=>{e.binding.read()}),this.controller_.rackController.rack.find(ze).forEach(e=>{e.binding.read()})}}class Kc extends Un{constructor(e,t){super(e,{expanded:t.expanded,blade:t.blade,props:t.props,root:!0,viewProps:t.viewProps})}}const Xc={id:"slider",type:"blade",accept(n){const e=$,t=A(n,{max:e.required.number,min:e.required.number,view:e.required.constant("slider"),format:e.optional.function,label:e.optional.string,value:e.optional.number});return t?{params:t}:null},controller(n){var e,t;const l=(e=n.params.value)!==null&&e!==void 0?e:0,b=new de({max:n.params.max,min:n.params.min}),P=new rn(n.document,{baseStep:1,parser:rt,sliderProps:new X({maxValue:b.values.value("max"),minValue:b.values.value("min")}),textProps:X.fromObject({draggingScale:Ut(void 0,l),formatter:(t=n.params.format)!==null&&t!==void 0?t:Us}),value:J(l,{constraint:b}),viewProps:n.viewProps});return new Et(n.document,{blade:n.blade,props:X.fromObject({label:n.params.label}),valueController:P})},api(n){return!(n.controller instanceof Et)||!(n.controller.valueController instanceof rn)?null:new _o(n.controller)}},$c=function(){return{id:"text",type:"blade",accept(n){const e=$,t=A(n,{parse:e.required.function,value:e.required.raw,view:e.required.constant("text"),format:e.optional.function,label:e.optional.string});return t?{params:t}:null},controller(n){var e;const t=new tn(n.document,{parser:n.params.parse,props:X.fromObject({formatter:(e=n.params.format)!==null&&e!==void 0?e:l=>String(l)}),value:J(n.params.value),viewProps:n.viewProps});return new Et(n.document,{blade:n.blade,props:X.fromObject({label:n.params.label}),valueController:t})},api(n){return!(n.controller instanceof Et)||!(n.controller.valueController instanceof tn)?null:new yo(n.controller)}}}();function Yc(n){const e=n.createElement("div");return e.classList.add(N("dfw")()),n.body&&n.body.appendChild(e),e}function xo(n,e,t){if(n.querySelector(`style[data-tp-style=${e}]`))return;const l=n.createElement("style");l.dataset.tpStyle=e,l.textContent=t,n.head.appendChild(l)}class qc extends Rc{constructor(e){var t,l;const b=e??{},P=(t=b.document)!==null&&t!==void 0?t:Nn(),S=Tc(),F=new Kc(P,{expanded:b.expanded,blade:Xe(),props:X.fromObject({title:b.title}),viewProps:$e.create()});super(F,S),this.pool_=S,this.containerElem_=(l=b.container)!==null&&l!==void 0?l:Yc(P),this.containerElem_.appendChild(this.element),this.doc_=P,this.usesDefaultWrapper_=!b.container,this.setUpDefaultPlugins_()}get document(){if(!this.doc_)throw I.alreadyDisposed();return this.doc_}dispose(){const e=this.containerElem_;if(!e)throw I.alreadyDisposed();if(this.usesDefaultWrapper_){const t=e.parentElement;t&&t.removeChild(e)}this.containerElem_=null,this.doc_=null,super.dispose()}registerPlugin(e){("plugin"in e?[e.plugin]:"plugins"in e?e.plugins:[]).forEach(l=>{this.pool_.register(l),this.embedPluginStyle_(l)})}embedPluginStyle_(e){e.css&&xo(this.document,`plugin-${e.id}`,e.css)}setUpDefaultPlugins_(){xo(this.document,"default",'.tp-tbiv_b,.tp-coltxtv_ms,.tp-ckbv_i,.tp-rotv_b,.tp-fldv_b,.tp-mllv_i,.tp-sglv_i,.tp-grlv_g,.tp-txtv_i,.tp-p2dpv_p,.tp-colswv_sw,.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(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);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-txtv_i,.tp-p2dpv_p,.tp-colswv_sw{background-color:var(--in-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);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-mllv_i,.tp-sglv_i,.tp-grlv_g{background-color:var(--mo-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--mo-fg);height:var(--bld-us);scrollbar-color:currentColor rgba(0,0,0,0);scrollbar-width:thin;width:100%}.tp-mllv_i::-webkit-scrollbar,.tp-sglv_i::-webkit-scrollbar,.tp-grlv_g::-webkit-scrollbar{height:8px;width:8px}.tp-mllv_i::-webkit-scrollbar-corner,.tp-sglv_i::-webkit-scrollbar-corner,.tp-grlv_g::-webkit-scrollbar-corner{background-color:rgba(0,0,0,0)}.tp-mllv_i::-webkit-scrollbar-thumb,.tp-sglv_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-rotv{--font-family: var(--tp-font-family, Roboto Mono, Source Code Pro, Menlo, Courier, monospace);--bs-br: var(--tp-base-border-radius, 6px);--cnt-h-p: var(--tp-container-horizontal-padding, 4px);--cnt-v-p: var(--tp-container-vertical-padding, 4px);--elm-br: var(--tp-element-border-radius, 2px);--bld-s: var(--tp-blade-spacing, 4px);--bld-us: var(--tp-blade-unit-size, 20px);--bs-bg: var(--tp-base-background-color, hsl(230deg, 7%, 17%));--bs-sh: var(--tp-base-shadow-color, rgba(0, 0, 0, 0.2));--btn-bg: var(--tp-button-background-color, hsl(230deg, 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(230deg, 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(230deg, 7%, 75%));--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(230deg, 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-rotv_c>.tp-cntv.tp-v-lst,.tp-tabv_c .tp-brkv>.tp-cntv.tp-v-lst,.tp-fldv_c>.tp-cntv.tp-v-lst{margin-bottom:calc(-1*var(--cnt-v-p))}.tp-rotv_c>.tp-fldv.tp-v-lst .tp-fldv_c,.tp-tabv_c .tp-brkv>.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-tabv_c .tp-brkv>.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-tabv_c .tp-brkv>*:not(.tp-v-fst),.tp-fldv_c>*:not(.tp-v-fst){margin-top:var(--bld-s)}.tp-rotv_c>.tp-sprv:not(.tp-v-fst),.tp-tabv_c .tp-brkv>.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-tabv_c .tp-brkv>.tp-cntv:not(.tp-v-fst),.tp-fldv_c>.tp-cntv:not(.tp-v-fst){margin-top:var(--cnt-v-p)}.tp-rotv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-tabv_c .tp-brkv>.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-tabv_c .tp-brkv>.tp-cntv+*:not(.tp-v-hidden),.tp-fldv_c>.tp-cntv+*:not(.tp-v-hidden){margin-top:var(--cnt-v-p)}.tp-rotv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-tabv_c .tp-brkv>.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-tabv_c .tp-brkv>.tp-cntv:not(.tp-v-hidden)+.tp-cntv,.tp-fldv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv{margin-top:0}.tp-tabv_c .tp-brkv>.tp-cntv,.tp-fldv_c>.tp-cntv{margin-left:4px}.tp-tabv_c .tp-brkv>.tp-fldv>.tp-fldv_b,.tp-fldv_c>.tp-fldv>.tp-fldv_b{border-top-left-radius:var(--elm-br);border-bottom-left-radius:var(--elm-br)}.tp-tabv_c .tp-brkv>.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-tabv_c .tp-brkv .tp-fldv>.tp-fldv_c,.tp-fldv_c .tp-fldv>.tp-fldv_c{border-bottom-left-radius:var(--elm-br)}.tp-tabv_c .tp-brkv>.tp-tabv>.tp-tabv_i,.tp-fldv_c>.tp-tabv>.tp-tabv_i{border-top-left-radius:var(--elm-br)}.tp-tabv_c .tp-brkv .tp-tabv>.tp-tabv_c,.tp-fldv_c .tp-tabv>.tp-tabv_c{border-bottom-left-radius:var(--elm-br)}.tp-rotv_b,.tp-fldv_b{background-color:var(--cnt-bg);color:var(--cnt-fg);cursor:pointer;display:block;height:calc(var(--bld-us) + 4px);line-height:calc(var(--bld-us) + 4px);overflow:hidden;padding-left:var(--cnt-h-p);padding-right:calc(4px + var(--bld-us) + var(--cnt-h-p));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-h-p) + (var(--bld-us) + 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-v-p);padding-top:var(--cnt-v-p);transform:none;overflow:visible;transition:height .2s ease-in-out,opacity .2s linear .2s,padding .2s ease-in-out}.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-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-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(--elm-br);cursor:pointer;display:block;height:var(--bld-us);position:relative;width:var(--bld-us)}.tp-ckbv_w svg{bottom:0;display:block;height:16px;left:0;margin:auto;opacity:0;position:absolute;right:0;top:0;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(--bld-us)}.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-cpl .tp-colv_p{overflow:visible}.tp-colv.tp-colv-expanded .tp-colv_p{margin-top:var(--bld-s);opacity:1}.tp-colv .tp-popv{left:calc(-1*var(--cnt-h-p));right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-colpv_h,.tp-colpv_ap{margin-left:6px;margin-right:6px}.tp-colpv_h{margin-top:var(--bld-s)}.tp-colpv_rgb{display:flex;margin-top:var(--bld-s);width:100%}.tp-colpv_a{display:flex;margin-top:var(--cnt-v-p);padding-top:calc(var(--cnt-v-p) + 2px);position:relative}.tp-colpv_a:before{background-color:var(--grv-fg);content:"";height:2px;left:calc(-1*var(--cnt-h-p));position:absolute;right:calc(-1*var(--cnt-h-p));top:0}.tp-colpv_ap{align-items:center;display:flex;flex:3}.tp-colpv_at{flex:1;margin-left:4px}.tp-svpv{border-radius:var(--elm-br);outline:none;overflow:hidden;position:relative}.tp-svpv_c{cursor:crosshair;display:block;height:calc(var(--bld-us)*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(--bld-us);outline:none;position:relative}.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(--elm-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;pointer-events:none;position:absolute;top:50%;width:12px}.tp-hplv:focus .tp-hplv_m{border-color:#fff}.tp-aplv{cursor:pointer;height:var(--bld-us);outline:none;position:relative;width:100%}.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{bottom:0;left:0;position:absolute;right:0;top:0}.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(--elm-br);box-shadow:0 0 2px rgba(0,0,0,.1);height:12px;left:50%;margin-left:-6px;margin-top:-6px;overflow:hidden;pointer-events:none;position:absolute;top:50%;width:12px}.tp-aplv_p{border-radius:var(--elm-br);border:rgba(255,255,255,.75) solid 2px;box-sizing:border-box;bottom:0;left:0;position:absolute;right:0;top:0}.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(--elm-br);overflow:hidden}.tp-colswv.tp-v-disabled{opacity:.5}.tp-colswv_sw{border-radius:0}.tp-colswv_b{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;cursor:pointer;display:block;height:var(--bld-us);left:0;margin:0;outline:none;padding:0;position:absolute;top:0;width:var(--bld-us)}.tp-colswv_b:focus::after{border:rgba(255,255,255,.75) solid 2px;border-radius:var(--elm-br);bottom:0;content:"";display:block;left:0;position:absolute;right:0;top:0}.tp-coltxtv{display:flex;width:100%}.tp-coltxtv_m{margin-right:4px}.tp-coltxtv_ms{border-radius:var(--elm-br);color:var(--lbl-fg);cursor:pointer;height:var(--bld-us);line-height:var(--bld-us);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_w{flex:1}.tp-dfwv{position:absolute;top:8px;right:8px;width:256px}.tp-fldv.tp-fldv-not .tp-fldv_b{display:none}.tp-fldv_t{padding-left:4px}.tp-fldv_c{border-left:var(--cnt-bg) solid 4px}.tp-fldv_b:hover+.tp-fldv_c{border-left-color:var(--cnt-bg-h)}.tp-fldv_b:focus+.tp-fldv_c{border-left-color:var(--cnt-bg-f)}.tp-fldv_b:active+.tp-fldv_c{border-left-color:var(--cnt-bg-a)}.tp-grlv{position:relative}.tp-grlv_g{display:block;height:calc(var(--bld-us)*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-h-p);padding-right:var(--cnt-h-p)}.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:160px}.tp-lblv.tp-lblv-nol .tp-lblv_v{width:100%}.tp-lstv_s{padding:0 20px 0 4px;width:100%}.tp-lstv_m{color:var(--btn-fg)}.tp-sglv_i{padding:0 4px}.tp-sglv.tp-v-disabled .tp-sglv_i{opacity:.5}.tp-mllv_i{display:block;height:calc(var(--bld-us)*3);line-height:var(--bld-us);padding:0 4px;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(--bld-us);margin-right:4px;position:relative;width:var(--bld-us)}.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(--bld-s);opacity:1}.tp-p2dv .tp-popv{left:calc(-1*var(--cnt-h-p));right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-p2dpv{padding-left:calc(var(--bld-us) + 4px)}.tp-p2dpv_p{cursor:crosshair;height:0;overflow:hidden;padding-bottom:100%;position:relative}.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:6px;box-shadow:0 2px 4px var(--bs-sh);display:none;max-width:168px;padding:var(--cnt-v-p) var(--cnt-h-p);position:absolute;visibility:hidden;z-index:1000}.tp-popv.tp-popv-v{display:block;visibility:visible}.tp-sprv_r{background-color:var(--grv-fg);border-width:0;display:block;height:2px;margin:0;width:100%}.tp-sldv.tp-v-disabled{opacity:.5}.tp-sldv_t{box-sizing:border-box;cursor:pointer;height:var(--bld-us);margin:0 6px;outline:none;position:relative}.tp-sldv_t::before{background-color:var(--in-bg);border-radius:1px;bottom:0;content:"";display:block;height:2px;left:0;margin:auto;position:absolute;right:0;top:0}.tp-sldv_k{height:100%;left:0;position:absolute;top:0}.tp-sldv_k::before{background-color:var(--in-fg);border-radius:1px;bottom:0;content:"";display:block;height:2px;left:0;margin-bottom:auto;margin-top:auto;position:absolute;right:0;top:0}.tp-sldv_k::after{background-color:var(--btn-bg);border-radius:var(--elm-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.tp-v-disabled{opacity:.5}.tp-tabv_i{align-items:flex-end;display:flex;overflow:hidden}.tp-tabv.tp-tabv-nop .tp-tabv_i{height:calc(var(--bld-us) + 4px);position:relative}.tp-tabv.tp-tabv-nop .tp-tabv_i::before{background-color:var(--cnt-bg);bottom:0;content:"";height:2px;left:0;position:absolute;right:0}.tp-tabv_c{border-left:var(--cnt-bg) solid 4px;padding-bottom:var(--cnt-v-p);padding-top:var(--cnt-v-p)}.tp-tbiv{flex:1;min-width:0;position:relative}.tp-tbiv+.tp-tbiv{margin-left:2px}.tp-tbiv+.tp-tbiv::before{background-color:var(--cnt-bg);bottom:0;content:"";height:2px;left:-2px;position:absolute;width:2px}.tp-tbiv_b{background-color:var(--cnt-bg);display:block;padding-left:calc(var(--cnt-h-p) + 4px);padding-right:calc(var(--cnt-h-p) + 4px);width:100%}.tp-tbiv_b:hover{background-color:var(--cnt-bg-h)}.tp-tbiv_b:focus{background-color:var(--cnt-bg-f)}.tp-tbiv_b:active{background-color:var(--cnt-bg-a)}.tp-tbiv_b:disabled{opacity:.5}.tp-tbiv_t{color:var(--cnt-fg);height:calc(var(--bld-us) + 4px);line-height:calc(var(--bld-us) + 4px);opacity:.5;overflow:hidden;text-overflow:ellipsis}.tp-tbiv.tp-tbiv-sel .tp-tbiv_t{opacity:1}.tp-txtv{position:relative}.tp-txtv_i{padding:0 4px}.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:-3px;position:absolute;top:0;width:12px}.tp-txtv_k::before{background-color:var(--in-fg);border-radius:1px;bottom:0;content:"";height:calc(var(--bld-us) - 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(--elm-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(--font-family);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(--bld-us) + var(--cnt-h-p));text-align:center}.tp-rotv.tp-rotv-expanded .tp-rotv_b{border-bottom-left-radius:0;border-bottom-right-radius:0}.tp-rotv.tp-rotv-not .tp-rotv_b{display:none}.tp-rotv_c>.tp-fldv.tp-v-lst>.tp-fldv_c,.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-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-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-v-p))}.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.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst{margin-top:calc(-1*var(--cnt-v-p))}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst>.tp-tabv_i{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}'),this.pool_.getAll().forEach(e=>{this.embedPluginStyle_(e)}),this.registerPlugin({plugins:[Xc,zc,en,$c]})}}const Qc=new s("3.1.2");r.BladeApi=a,r.ButtonApi=O,r.FolderApi=mn,r.InputBindingApi=Oe,r.ListApi=wo,r.MonitorBindingApi=Zt,r.Pane=qc,r.SeparatorApi=gi,r.SliderApi=_o,r.TabApi=Rn,r.TabPageApi=xi,r.TextApi=yo,r.TpChangeEvent=u,r.VERSION=Qc,Object.defineProperty(r,"__esModule",{value:!0})})})(qa,di);var En={},Qa={get exports(){return En},set exports(_){En=_}};(function(_,i){(function(r,s){s(i)})(Or,function(r){class s{constructor(o){this.controller_=o}get element(){return this.controller_.view.element}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(o){this.controller_.viewProps.set("disabled",o)}get hidden(){return this.controller_.viewProps.get("hidden")}set hidden(o){this.controller_.viewProps.set("hidden",o)}dispose(){this.controller_.viewProps.set("disposed",!0)}}class a{constructor(o){this.target=o}}class c extends a{constructor(o,p,v,x){super(o),this.value=p,this.presetKey=v,this.last=x??!0}}function u(d){return d}function h(d){return d==null}const m={alreadydisposed:()=>"View has been already disposed",invalidparams:d=>`Invalid parameters for '${d.name}'`,nomatchingcontroller:d=>`No matching controller for '${d.key}'`,nomatchingview:d=>`No matching view for '${JSON.stringify(d.params)}'`,notbindable:()=>"Value is not bindable",propertynotfound:d=>`Property '${d.name}' not found`,shouldneverhappen:()=>"This error should never happen"};class g{constructor(o){var p;this.message=(p=m[o.type](o.context))!==null&&p!==void 0?p:"Unexpected error",this.name=this.constructor.name,this.stack=new Error(this.message).stack,this.type=o.type}static alreadyDisposed(){return new g({type:"alreadydisposed"})}static notBindable(){return new g({type:"notbindable"})}static propertyNotFound(o){return new g({type:"propertynotfound",context:{name:o}})}static shouldNeverHappen(){return new g({type:"shouldneverhappen"})}}class y{constructor(){this.observers_={}}on(o,p){let v=this.observers_[o];return v||(v=this.observers_[o]=[]),v.push({handler:p}),this}off(o,p){const v=this.observers_[o];return v&&(this.observers_[o]=v.filter(x=>x.handler!==p)),this}emit(o,p){const v=this.observers_[o];v&&v.forEach(x=>{x.handler(p)})}}const w="tp";function C(d){return(p,v)=>[w,"-",d,"v",p?`_${p}`:"",v?`-${v}`:""].join("")}function L(d,o){return p=>o(d(p))}function I(d){return d.rawValue}function T(d,o){d.emitter.on("change",L(I,o)),o(d.rawValue)}function O(d,o,p){T(d.value(o),p)}function E(d,o,p){p?d.classList.add(o):d.classList.remove(o)}function G(d,o){return p=>{E(d,o,p)}}function N(d,o){T(d,p=>{o.textContent=p??""})}const Z=C("btn");class se{constructor(o,p){this.element=o.createElement("div"),this.element.classList.add(Z()),p.viewProps.bindClassModifiers(this.element);const v=o.createElement("button");v.classList.add(Z("b")),p.viewProps.bindDisabled(v),this.element.appendChild(v),this.buttonElement=v;const x=o.createElement("div");x.classList.add(Z("t")),N(p.props.value("title"),x),this.buttonElement.appendChild(x)}}class Y{constructor(o,p){this.emitter=new y,this.onClick_=this.onClick_.bind(this),this.props=p.props,this.viewProps=p.viewProps,this.view=new se(o,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class z{constructor(o,p){var v;this.constraint_=p==null?void 0:p.constraint,this.equals_=(v=p==null?void 0:p.equals)!==null&&v!==void 0?v:(x,k)=>x===k,this.emitter=new y,this.rawValue_=o}get constraint(){return this.constraint_}get rawValue(){return this.rawValue_}set rawValue(o){this.setRawValue(o,{forceEmit:!1,last:!0})}setRawValue(o,p){const v=p??{forceEmit:!1,last:!0},x=this.constraint_?this.constraint_.constrain(o):o;this.equals_(this.rawValue_,x)&&!v.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=x,this.emitter.emit("change",{options:v,rawValue:x,sender:this}))}}class K{constructor(o){this.emitter=new y,this.value_=o}get rawValue(){return this.value_}set rawValue(o){this.setRawValue(o,{forceEmit:!1,last:!0})}setRawValue(o,p){const v=p??{forceEmit:!1,last:!0};this.value_===o&&!v.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.value_=o,this.emitter.emit("change",{options:v,rawValue:this.value_,sender:this}))}}function te(d,o){const p=o==null?void 0:o.constraint,v=o==null?void 0:o.equals;return!p&&!v?new K(d):new z(d,o)}class W{constructor(o){this.emitter=new y,this.valMap_=o;for(const p in this.valMap_)this.valMap_[p].emitter.on("change",()=>{this.emitter.emit("change",{key:p,sender:this})})}static createCore(o){return Object.keys(o).reduce((v,x)=>Object.assign(v,{[x]:te(o[x])}),{})}static fromObject(o){const p=this.createCore(o);return new W(p)}get(o){return this.valMap_[o].rawValue}set(o,p){this.valMap_[o].rawValue=p}value(o){return this.valMap_[o]}}function ve(d,o){const v=Object.keys(o).reduce((x,k)=>{if(x===void 0)return;const D=o[k],B=D(d[k]);return B.succeeded?Object.assign(Object.assign({},x),{[k]:B.value}):void 0},{});return v}function be(d,o){return d.reduce((p,v)=>{if(p===void 0)return;const x=o(v);if(!(!x.succeeded||x.value===void 0))return[...p,x.value]},[])}function ue(d){return d===null?!1:typeof d=="object"}function he(d){return o=>p=>{if(!o&&p===void 0)return{succeeded:!1,value:void 0};if(o&&p===void 0)return{succeeded:!0,value:void 0};const v=d(p);return v!==void 0?{succeeded:!0,value:v}:{succeeded:!1,value:void 0}}}function we(d){return{custom:o=>he(o)(d),boolean:he(o=>typeof o=="boolean"?o:void 0)(d),number:he(o=>typeof o=="number"?o:void 0)(d),string:he(o=>typeof o=="string"?o:void 0)(d),function:he(o=>typeof o=="function"?o:void 0)(d),constant:o=>he(p=>p===o?o:void 0)(d),raw:he(o=>o)(d),object:o=>he(p=>{if(ue(p))return ve(p,o)})(d),array:o=>he(p=>{if(Array.isArray(p))return be(p,o)})(d)}}const J={optional:we(!0),required:we(!1)};function X(d,o){const p=J.required.object(o)(d);return p.succeeded?p.value:void 0}function qe(d){return d&&d.parentElement&&d.parentElement.removeChild(d),null}function Ce(){return["veryfirst","first","last","verylast"]}const ce=C(""),ee={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class oe{constructor(o){this.parent_=null,this.blade=o.blade,this.view=o.view,this.viewProps=o.viewProps;const p=this.view.element;this.blade.value("positions").emitter.on("change",()=>{Ce().forEach(v=>{p.classList.remove(ce(void 0,ee[v]))}),this.blade.get("positions").forEach(v=>{p.classList.add(ce(void 0,ee[v]))})}),this.viewProps.handleDispose(()=>{qe(p)})}get parent(){return this.parent_}}const $="http://www.w3.org/2000/svg";function A(d){d.offsetHeight}function Me(d,o){const p=d.style.transition;d.style.transition="none",o(),d.style.transition=p}function ke(d){return d.ontouchstart!==void 0}function Ve(d){for(;d.childNodes.length>0;)d.removeChild(d.childNodes[0])}function Re(d){return d.relatedTarget?d.relatedTarget:"explicitOriginalTarget"in d?d.explicitOriginalTarget:null}const Se=C("lbl");function Be(d,o){const p=d.createDocumentFragment();return o.split(`
|
|
18
|
+
`).map(x=>d.createTextNode(x)).forEach((x,k)=>{k>0&&p.appendChild(d.createElement("br")),p.appendChild(x)}),p}class vt{constructor(o,p){this.element=o.createElement("div"),this.element.classList.add(Se()),p.viewProps.bindClassModifiers(this.element);const v=o.createElement("div");v.classList.add(Se("l")),O(p.props,"label",k=>{h(k)?this.element.classList.add(Se(void 0,"nol")):(this.element.classList.remove(Se(void 0,"nol")),Ve(v),v.appendChild(Be(o,k)))}),this.element.appendChild(v),this.labelElement=v;const x=o.createElement("div");x.classList.add(Se("v")),this.element.appendChild(x),this.valueElement=x}}class bt extends oe{constructor(o,p){const v=p.valueController.viewProps;super(Object.assign(Object.assign({},p),{view:new vt(o,{props:p.props,viewProps:v}),viewProps:v})),this.props=p.props,this.valueController=p.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class It extends oe{constructor(o){super(o),this.value=o.value}}class Dt extends W{constructor(o){super(o)}static create(o){const p={completed:!0,expanded:o,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null},v=W.createCore(p);return new Dt(v)}get styleExpanded(){var o;return(o=this.get("temporaryExpanded"))!==null&&o!==void 0?o:this.get("expanded")}get styleHeight(){if(!this.styleExpanded)return"0";const o=this.get("expandedHeight");return this.get("shouldFixHeight")&&!h(o)?`${o}px`:"auto"}bindExpandedClass(o,p){const v=()=>{this.styleExpanded?o.classList.add(p):o.classList.remove(p)};O(this,"expanded",v),O(this,"temporaryExpanded",v)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function Nn(d){return Dt.create(d)}function Fn(d,o){let p=0;return Me(o,()=>{d.set("expandedHeight",null),d.set("temporaryExpanded",!0),A(o),p=o.clientHeight,d.set("temporaryExpanded",null),A(o)}),p}function qt(d,o){o.style.height=d.styleHeight}function ct(d,o){d.value("expanded").emitter.on("beforechange",()=>{d.set("completed",!1),h(d.get("expandedHeight"))&&d.set("expandedHeight",Fn(d,o)),d.set("shouldFixHeight",!0),A(o)}),d.emitter.on("change",()=>{qt(d,o)}),qt(d,o),o.addEventListener("transitionend",p=>{p.propertyName==="height"&&d.cleanUpTransition()})}class gt{constructor(o,p){const v=C(p.viewName);this.element=o.createElement("div"),this.element.classList.add(v()),p.viewProps.bindClassModifiers(this.element)}}class pt extends It{constructor(o,p){const v=p.valueController.viewProps;super(Object.assign(Object.assign({},p),{value:p.valueController.value,view:new vt(o,{props:p.props,viewProps:v}),viewProps:v})),this.props=p.props,this.valueController=p.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}const pn=C("");function un(d,o){return G(d,pn(void 0,o))}class Qe extends W{constructor(o){super(o)}static create(o){var p,v;const x=o??{},k={disabled:(p=x.disabled)!==null&&p!==void 0?p:!1,disposed:!1,hidden:(v=x.hidden)!==null&&v!==void 0?v:!1},D=W.createCore(k);return new Qe(D)}bindClassModifiers(o){O(this,"disabled",un(o,"disabled")),O(this,"hidden",un(o,"hidden"))}bindDisabled(o){O(this,"disabled",p=>{o.disabled=p})}bindTabIndex(o){O(this,"disabled",p=>{o.tabIndex=p?-1:0})}handleDispose(o){this.value("disposed").emitter.on("change",p=>{p&&o()})}}class ut{constructor(){this.disabled=!1,this.emitter=new y}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class Bn{constructor(o,p){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=o,this.emitter=new y,this.interval_=p,this.setTimer_()}get disabled(){return this.disabled_}set disabled(o){this.disabled_=o,this.disabled_?this.clearTimer_():this.setTimer_()}dispose(){this.clearTimer_()}clearTimer_(){if(this.timerId_===null)return;const o=this.doc_.defaultView;o&&o.clearInterval(this.timerId_),this.timerId_=null}setTimer_(){if(this.clearTimer_(),this.interval_<=0)return;const o=this.doc_.defaultView;o&&(this.timerId_=o.setInterval(this.onTick_,this.interval_))}onTick_(){this.disabled_||this.emitter.emit("tick",{sender:this})}}class Qt{constructor(o){this.constraints=o}constrain(o){return this.constraints.reduce((p,v)=>v.constrain(p),o)}}function Ze(d,o){if(d instanceof o)return d;if(d instanceof Qt){const p=d.constraints.reduce((v,x)=>v||(x instanceof o?x:null),null);if(p)return p}return null}class hn{constructor(o){this.values=W.fromObject({max:o.max,min:o.min})}constrain(o){const p=this.values.get("max"),v=this.values.get("min");return Math.min(Math.max(o,v),p)}}class Ke{constructor(o){this.values=W.fromObject({max:o.max,min:o.min})}get maxValue(){return this.values.get("max")}get minValue(){return this.values.get("min")}constrain(o){const p=this.values.get("max"),v=this.values.get("min");let x=o;return h(v)||(x=Math.max(x,v)),h(p)||(x=Math.min(x,p)),x}}class Xe{constructor(o,p=0){this.step=o,this.origin=p}constrain(o){const p=this.origin%this.step,v=Math.round((o-p)/this.step);return p+v*this.step}}const We=C("pop");class V{constructor(o,p){this.element=o.createElement("div"),this.element.classList.add(We()),p.viewProps.bindClassModifiers(this.element),T(p.shows,G(this.element,We(void 0,"v")))}}class j{constructor(o,p){this.shows=te(!1),this.viewProps=p.viewProps,this.view=new V(o,{shows:this.shows,viewProps:this.viewProps})}}const Q=C("txt");class re{constructor(o,p){this.onChange_=this.onChange_.bind(this),this.element=o.createElement("div"),this.element.classList.add(Q()),p.viewProps.bindClassModifiers(this.element),this.props_=p.props,this.props_.emitter.on("change",this.onChange_);const v=o.createElement("input");v.classList.add(Q("i")),v.type="text",p.viewProps.bindDisabled(v),this.element.appendChild(v),this.inputElement=v,p.value.emitter.on("change",this.onChange_),this.value_=p.value,this.refresh()}refresh(){const o=this.props_.get("formatter");this.inputElement.value=o(this.value_.rawValue)}onChange_(){this.refresh()}}class _e{constructor(o,p){this.onInputChange_=this.onInputChange_.bind(this),this.parser_=p.parser,this.props=p.props,this.value=p.value,this.viewProps=p.viewProps,this.view=new re(o,{props:p.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(o){const v=o.currentTarget.value,x=this.parser_(v);h(x)||(this.value.rawValue=x),this.view.refresh()}}function je(d){return d==="false"?!1:!!d}class Tt{constructor(o){this.text=o}evaluate(){return Number(this.text)}toString(){return this.text}}const dn={"**":(d,o)=>Math.pow(d,o),"*":(d,o)=>d*o,"/":(d,o)=>d/o,"%":(d,o)=>d%o,"+":(d,o)=>d+o,"-":(d,o)=>d-o,"<<":(d,o)=>d<<o,">>":(d,o)=>d>>o,">>>":(d,o)=>d>>>o,"&":(d,o)=>d&o,"^":(d,o)=>d^o,"|":(d,o)=>d|o};class Te{constructor(o,p,v){this.left=p,this.operator=o,this.right=v}evaluate(){const o=dn[this.operator];if(!o)throw new Error(`unexpected binary operator: '${this.operator}`);return o(this.left.evaluate(),this.right.evaluate())}toString(){return["b(",this.left.toString(),this.operator,this.right.toString(),")"].join(" ")}}const Oe={"+":d=>d,"-":d=>-d,"~":d=>~d};class Je{constructor(o,p){this.operator=o,this.expression=p}evaluate(){const o=Oe[this.operator];if(!o)throw new Error(`unexpected unary operator: '${this.operator}`);return o(this.expression.evaluate())}toString(){return["u(",this.operator,this.expression.toString(),")"].join(" ")}}function Zt(d){return(o,p)=>{for(let v=0;v<d.length;v++){const x=d[v](o,p);if(x!=="")return x}return""}}function ze(d,o){var p;const v=d.substr(o).match(/^\s+/);return(p=v&&v[0])!==null&&p!==void 0?p:""}function as(d,o){const p=d.substr(o,1);return p.match(/^[1-9]$/)?p:""}function it(d,o){var p;const v=d.substr(o).match(/^[0-9]+/);return(p=v&&v[0])!==null&&p!==void 0?p:""}function vi(d,o){const p=it(d,o);if(p!=="")return p;const v=d.substr(o,1);if(o+=1,v!=="-"&&v!=="+")return"";const x=it(d,o);return x===""?"":v+x}function Ot(d,o){const p=d.substr(o,1);if(o+=1,p.toLowerCase()!=="e")return"";const v=vi(d,o);return v===""?"":p+v}function mn(d,o){const p=d.substr(o,1);if(p==="0")return p;const v=as(d,o);return o+=v.length,v===""?"":v+it(d,o)}function jn(d,o){const p=mn(d,o);if(o+=p.length,p==="")return"";const v=d.substr(o,1);if(o+=v.length,v!==".")return"";const x=it(d,o);return o+=x.length,p+v+x+Ot(d,o)}function ls(d,o){const p=d.substr(o,1);if(o+=p.length,p!==".")return"";const v=it(d,o);return o+=v.length,v===""?"":p+v+Ot(d,o)}function cs(d,o){const p=mn(d,o);return o+=p.length,p===""?"":p+Ot(d,o)}const ps=Zt([jn,ls,cs]);function us(d,o){var p;const v=d.substr(o).match(/^[01]+/);return(p=v&&v[0])!==null&&p!==void 0?p:""}function zn(d,o){const p=d.substr(o,2);if(o+=p.length,p.toLowerCase()!=="0b")return"";const v=us(d,o);return v===""?"":p+v}function hs(d,o){var p;const v=d.substr(o).match(/^[0-7]+/);return(p=v&&v[0])!==null&&p!==void 0?p:""}function ds(d,o){const p=d.substr(o,2);if(o+=p.length,p.toLowerCase()!=="0o")return"";const v=hs(d,o);return v===""?"":p+v}function Wt(d,o){var p;const v=d.substr(o).match(/^[0-9a-f]+/i);return(p=v&&v[0])!==null&&p!==void 0?p:""}function bi(d,o){const p=d.substr(o,2);if(o+=p.length,p.toLowerCase()!=="0x")return"";const v=Wt(d,o);return v===""?"":p+v}const ms=Zt([zn,ds,bi]),Un=Zt([ms,ps]);function fs(d,o){const p=Un(d,o);return o+=p.length,p===""?null:{evaluable:new Tt(p),cursor:o}}function Et(d,o){const p=d.substr(o,1);if(o+=p.length,p!=="(")return null;const v=_i(d,o);if(!v)return null;o=v.cursor,o+=ze(d,o).length;const x=d.substr(o,1);return o+=x.length,x!==")"?null:{evaluable:v.evaluable,cursor:o}}function gi(d,o){var p;return(p=fs(d,o))!==null&&p!==void 0?p:Et(d,o)}function Gn(d,o){const p=gi(d,o);if(p)return p;const v=d.substr(o,1);if(o+=v.length,v!=="+"&&v!=="-"&&v!=="~")return null;const x=Gn(d,o);return x?(o=x.cursor,{cursor:o,evaluable:new Je(v,x.evaluable)}):null}function vs(d,o,p){p+=ze(o,p).length;const v=d.filter(x=>o.startsWith(x,p))[0];return v?(p+=v.length,p+=ze(o,p).length,{cursor:p,operator:v}):null}function wi(d,o){return(p,v)=>{const x=d(p,v);if(!x)return null;v=x.cursor;let k=x.evaluable;for(;;){const D=vs(o,p,v);if(!D)break;v=D.cursor;const B=d(p,v);if(!B)return null;v=B.cursor,k=new Te(D.operator,k,B.evaluable)}return k?{cursor:v,evaluable:k}:null}}const bs=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((d,o)=>wi(d,o),Gn);function _i(d,o){return o+=ze(d,o).length,bs(d,o)}function yi(d){const o=_i(d,0);return!o||o.cursor+ze(d,o.cursor).length!==d.length?null:o.evaluable}function $e(d){var o;const p=yi(d);return(o=p==null?void 0:p.evaluate())!==null&&o!==void 0?o:null}function Jt(d){if(typeof d=="number")return d;if(typeof d=="string"){const o=$e(d);if(!h(o))return o}return 0}function Ie(d){return o=>o.toFixed(Math.max(Math.min(d,20),0))}const gs=Ie(0);function Ht(d){return gs(d)+"%"}function xi(d){return String(d)}function Rn(d,o){for(;d.length<o;)d.push(void 0)}function Ci(d){const o=[];return Rn(o,d),te(o)}function ws(d){const o=d.indexOf(void 0);return o<0?d:d.slice(0,o)}function fn(d,o){const p=[...ws(d),o];return p.length>d.length?p.splice(0,p.length-d.length):Rn(p,d.length),p}function Pi({primary:d,secondary:o,forward:p,backward:v}){let x=!1;function k(D){x||(x=!0,D(),x=!1)}d.emitter.on("change",D=>{k(()=>{o.setRawValue(p(d,o),D.options)})}),o.emitter.on("change",D=>{k(()=>{d.setRawValue(v(d,o),D.options)}),k(()=>{o.setRawValue(p(d,o),D.options)})}),k(()=>{o.setRawValue(p(d,o),{forceEmit:!1,last:!0})})}function wt(d,o){const p=d*(o.altKey?.1:1)*(o.shiftKey?10:1);return o.upKey?+p:o.downKey?-p:0}function en(d){return{altKey:d.altKey,downKey:d.key==="ArrowDown",shiftKey:d.shiftKey,upKey:d.key==="ArrowUp"}}function Mi(d){return{altKey:d.altKey,downKey:d.key==="ArrowLeft",shiftKey:d.shiftKey,upKey:d.key==="ArrowRight"}}function _s(d){return d==="ArrowUp"||d==="ArrowDown"}function ki(d){return _s(d)||d==="ArrowLeft"||d==="ArrowRight"}function _t(d,o){var p,v;const x=o.ownerDocument.defaultView,k=o.getBoundingClientRect();return{x:d.pageX-(((p=x&&x.scrollX)!==null&&p!==void 0?p:0)+k.left),y:d.pageY-(((v=x&&x.scrollY)!==null&&v!==void 0?v:0)+k.top)}}class Ue{constructor(o){this.lastTouch_=null,this.onDocumentMouseMove_=this.onDocumentMouseMove_.bind(this),this.onDocumentMouseUp_=this.onDocumentMouseUp_.bind(this),this.onMouseDown_=this.onMouseDown_.bind(this),this.onTouchEnd_=this.onTouchEnd_.bind(this),this.onTouchMove_=this.onTouchMove_.bind(this),this.onTouchStart_=this.onTouchStart_.bind(this),this.elem_=o,this.emitter=new y,o.addEventListener("touchstart",this.onTouchStart_,{passive:!1}),o.addEventListener("touchmove",this.onTouchMove_,{passive:!0}),o.addEventListener("touchend",this.onTouchEnd_),o.addEventListener("mousedown",this.onMouseDown_)}computePosition_(o){const p=this.elem_.getBoundingClientRect();return{bounds:{width:p.width,height:p.height},point:o?{x:o.x,y:o.y}:null}}onMouseDown_(o){var p;o.preventDefault(),(p=o.currentTarget)===null||p===void 0||p.focus();const v=this.elem_.ownerDocument;v.addEventListener("mousemove",this.onDocumentMouseMove_),v.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:o.altKey,data:this.computePosition_(_t(o,this.elem_)),sender:this,shiftKey:o.shiftKey})}onDocumentMouseMove_(o){this.emitter.emit("move",{altKey:o.altKey,data:this.computePosition_(_t(o,this.elem_)),sender:this,shiftKey:o.shiftKey})}onDocumentMouseUp_(o){const p=this.elem_.ownerDocument;p.removeEventListener("mousemove",this.onDocumentMouseMove_),p.removeEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("up",{altKey:o.altKey,data:this.computePosition_(_t(o,this.elem_)),sender:this,shiftKey:o.shiftKey})}onTouchStart_(o){o.preventDefault();const p=o.targetTouches.item(0),v=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:o.altKey,data:this.computePosition_(p?{x:p.clientX-v.left,y:p.clientY-v.top}:void 0),sender:this,shiftKey:o.shiftKey}),this.lastTouch_=p}onTouchMove_(o){const p=o.targetTouches.item(0),v=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:o.altKey,data:this.computePosition_(p?{x:p.clientX-v.left,y:p.clientY-v.top}:void 0),sender:this,shiftKey:o.shiftKey}),this.lastTouch_=p}onTouchEnd_(o){var p;const v=(p=o.targetTouches.item(0))!==null&&p!==void 0?p:this.lastTouch_,x=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:o.altKey,data:this.computePosition_(v?{x:v.clientX-x.left,y:v.clientY-x.top}:void 0),sender:this,shiftKey:o.shiftKey})}}function de(d,o,p,v,x){const k=(d-o)/(p-o);return v+k*(x-v)}function Nt(d){return String(d.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function yt(d,o,p){return Math.min(Math.max(d,o),p)}const Le=C("txt");class Kn{constructor(o,p){this.onChange_=this.onChange_.bind(this),this.props_=p.props,this.props_.emitter.on("change",this.onChange_),this.element=o.createElement("div"),this.element.classList.add(Le(),Le(void 0,"num")),p.arrayPosition&&this.element.classList.add(Le(void 0,p.arrayPosition)),p.viewProps.bindClassModifiers(this.element);const v=o.createElement("input");v.classList.add(Le("i")),v.type="text",p.viewProps.bindDisabled(v),this.element.appendChild(v),this.inputElement=v,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=p.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add(Le()),this.inputElement.classList.add(Le("i"));const x=o.createElement("div");x.classList.add(Le("k")),this.element.appendChild(x),this.knobElement=x;const k=o.createElementNS($,"svg");k.classList.add(Le("g")),this.knobElement.appendChild(k);const D=o.createElementNS($,"path");D.classList.add(Le("gb")),k.appendChild(D),this.guideBodyElem_=D;const B=o.createElementNS($,"path");B.classList.add(Le("gh")),k.appendChild(B),this.guideHeadElem_=B;const R=o.createElement("div");R.classList.add(C("tt")()),this.knobElement.appendChild(R),this.tooltipElem_=R,p.value.emitter.on("change",this.onChange_),this.value=p.value,this.refresh()}onDraggingChange_(o){if(o.rawValue===null){this.element.classList.remove(Le(void 0,"drg"));return}this.element.classList.add(Le(void 0,"drg"));const p=o.rawValue/this.props_.get("draggingScale"),v=p+(p>0?-1:p<0?1:0),x=yt(-v,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${v+x},0 L${v},4 L${v+x},8`,`M ${p},-1 L${p},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${p},4`);const k=this.props_.get("formatter");this.tooltipElem_.textContent=k(this.value.rawValue),this.tooltipElem_.style.left=`${p}px`}refresh(){const o=this.props_.get("formatter");this.inputElement.value=o(this.value.rawValue)}onChange_(){this.refresh()}}class ys{constructor(o,p){var v;this.originRawValue_=0,this.onInputChange_=this.onInputChange_.bind(this),this.onInputKeyDown_=this.onInputKeyDown_.bind(this),this.onInputKeyUp_=this.onInputKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=p.baseStep,this.parser_=p.parser,this.props=p.props,this.sliderProps_=(v=p.sliderProps)!==null&&v!==void 0?v:null,this.value=p.value,this.viewProps=p.viewProps,this.dragging_=te(null),this.view=new Kn(o,{arrayPosition:p.arrayPosition,dragging:this.dragging_,props:this.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.inputElement.addEventListener("keydown",this.onInputKeyDown_),this.view.inputElement.addEventListener("keyup",this.onInputKeyUp_);const x=new Ue(this.view.knobElement);x.emitter.on("down",this.onPointerDown_),x.emitter.on("move",this.onPointerMove_),x.emitter.on("up",this.onPointerUp_)}constrainValue_(o){var p,v;const x=(p=this.sliderProps_)===null||p===void 0?void 0:p.get("minValue"),k=(v=this.sliderProps_)===null||v===void 0?void 0:v.get("maxValue");let D=o;return x!==void 0&&(D=Math.max(D,x)),k!==void 0&&(D=Math.min(D,k)),D}onInputChange_(o){const v=o.currentTarget.value,x=this.parser_(v);h(x)||(this.value.rawValue=this.constrainValue_(x)),this.view.refresh()}onInputKeyDown_(o){const p=wt(this.baseStep_,en(o));p!==0&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+p),{forceEmit:!1,last:!1})}onInputKeyUp_(o){wt(this.baseStep_,en(o))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}onPointerDown_(){this.originRawValue_=this.value.rawValue,this.dragging_.rawValue=0}computeDraggingValue_(o){if(!o.point)return null;const p=o.point.x-o.bounds.width/2;return this.constrainValue_(this.originRawValue_+p*this.props.get("draggingScale"))}onPointerMove_(o){const p=this.computeDraggingValue_(o.data);p!==null&&(this.value.setRawValue(p,{forceEmit:!1,last:!1}),this.dragging_.rawValue=this.value.rawValue-this.originRawValue_)}onPointerUp_(o){const p=this.computeDraggingValue_(o.data);p!==null&&(this.value.setRawValue(p,{forceEmit:!0,last:!0}),this.dragging_.rawValue=null)}}function xt(d,o){d.write(o)}function Si(d){const o=d?Ze(d,Xe):null;return o?o.step:null}function xs(d,o){const p=d&&Ze(d,Xe);return p?Nt(p.step):Math.max(Nt(o),2)}function Xn(d){const o=Si(d);return o??1}function Li(d,o){var p;const v=d&&Ze(d,Xe),x=Math.abs((p=v==null?void 0:v.step)!==null&&p!==void 0?p:o);return x===0?.1:Math.pow(10,Math.floor(Math.log10(x))-1)}function vn(d){return[d[0],d[1],d[2]]}function tn(d){const o=yt(Math.floor(d),0,255).toString(16);return o.length===1?`0${o}`:o}function Cs(d,o="#"){const p=vn(d.getComponents("rgb")).map(tn).join("");return`${o}${p}`}function Ai(d,o="#"){const p=d.getComponents("rgb"),v=[p[0],p[1],p[2],p[3]*255].map(tn).join("");return`${o}${v}`}function Vi(d,o){const p=Ie(o==="float"?2:0);return`rgb(${vn(d.getComponents("rgb",o)).map(x=>p(x)).join(", ")})`}function Ps(d){return o=>Vi(o,d)}function Ms(d,o){const p=Ie(2),v=Ie(o==="float"?2:0);return`rgba(${d.getComponents("rgb",o).map((k,D)=>(D===3?p:v)(k)).join(", ")})`}function ks(d){return o=>Ms(o,d)}function Ss(d){const o=[Ie(0),Ht,Ht];return`hsl(${vn(d.getComponents("hsl")).map((v,x)=>o[x](v)).join(", ")})`}function Ls(d){const o=[Ie(0),Ht,Ht,Ie(2)];return`hsla(${d.getComponents("hsl").map((v,x)=>o[x](v)).join(", ")})`}function $n(d,o){const p=Ie(o==="float"?2:0),v=["r","g","b"];return`{${vn(d.getComponents("rgb",o)).map((k,D)=>`${v[D]}: ${p(k)}`).join(", ")}}`}function nn(d){return o=>$n(o,d)}function As(d,o){const p=Ie(2),v=Ie(o==="float"?2:0),x=["r","g","b","a"];return`{${d.getComponents("rgb",o).map((D,B)=>{const R=B===3?p:v;return`${x[B]}: ${R(D)}`}).join(", ")}}`}function sn(d){return o=>As(o,d)}[...["int","float"].reduce((d,o)=>[...d,{format:{alpha:!1,mode:"rgb",notation:"func",type:o},stringifier:Ps(o)},{format:{alpha:!0,mode:"rgb",notation:"func",type:o},stringifier:ks(o)},{format:{alpha:!1,mode:"rgb",notation:"object",type:o},stringifier:nn(o)},{format:{alpha:!0,mode:"rgb",notation:"object",type:o},stringifier:sn(o)}],[])];class Vs{constructor(o){this.components=o.components,this.asm_=o.assembly}constrain(o){const p=this.asm_.toComponents(o).map((v,x)=>{var k,D;return(D=(k=this.components[x])===null||k===void 0?void 0:k.constrain(v))!==null&&D!==void 0?D:v});return this.asm_.fromComponents(p)}}const bn=C("pndtxt");class Ii{constructor(o,p){this.textViews=p.textViews,this.element=o.createElement("div"),this.element.classList.add(bn()),this.textViews.forEach(v=>{const x=o.createElement("div");x.classList.add(bn("a")),x.appendChild(v.element),this.element.appendChild(x)})}}function Is(d,o,p){return new ys(d,{arrayPosition:p===0?"fst":p===o.axes.length-1?"lst":"mid",baseStep:o.axes[p].baseStep,parser:o.parser,props:o.axes[p].textProps,value:te(0,{constraint:o.axes[p].constraint}),viewProps:o.viewProps})}class Yn{constructor(o,p){this.value=p.value,this.viewProps=p.viewProps,this.acs_=p.axes.map((v,x)=>Is(o,p,x)),this.acs_.forEach((v,x)=>{Pi({primary:this.value,secondary:v.value,forward:k=>p.assembly.toComponents(k.rawValue)[x],backward:(k,D)=>{const B=p.assembly.toComponents(k.rawValue);return B[x]=D.rawValue,p.assembly.fromComponents(B)}})}),this.view=new Ii(o,{textViews:this.acs_.map(v=>v.view)})}}function Ds(d,o){return"step"in d&&!h(d.step)?new Xe(d.step,o):null}function Ts(d){return!h(d.max)&&!h(d.min)?new hn({max:d.max,min:d.min}):!h(d.max)||!h(d.min)?new Ke({max:d.max,min:d.min}):null}const Os={monitor:{defaultInterval:200,defaultLineCount:3}},ht=C("grl");class Es{constructor(o,p){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=o.createElement("div"),this.element.classList.add(ht()),p.viewProps.bindClassModifiers(this.element),this.formatter_=p.formatter,this.props_=p.props,this.cursor_=p.cursor,this.cursor_.emitter.on("change",this.onCursorChange_);const v=o.createElementNS($,"svg");v.classList.add(ht("g")),v.style.height=`calc(var(--bld-us) * ${p.lineCount})`,this.element.appendChild(v),this.svgElem_=v;const x=o.createElementNS($,"polyline");this.svgElem_.appendChild(x),this.lineElem_=x;const k=o.createElement("div");k.classList.add(ht("t"),C("tt")()),this.element.appendChild(k),this.tooltipElem_=k,p.value.emitter.on("change",this.onValueUpdate_),this.value=p.value,this.update_()}get graphElement(){return this.svgElem_}update_(){const o=this.svgElem_.getBoundingClientRect(),p=this.value.rawValue.length-1,v=this.props_.get("minValue"),x=this.props_.get("maxValue"),k=[];this.value.rawValue.forEach((lt,oi)=>{if(lt===void 0)return;const ai=de(oi,0,p,0,o.width),Mt=de(lt,v,x,o.height,0);k.push([ai,Mt].join(","))}),this.lineElem_.setAttributeNS(null,"points",k.join(" "));const D=this.tooltipElem_,B=this.value.rawValue[this.cursor_.rawValue];if(B===void 0){D.classList.remove(ht("t","a"));return}const R=de(this.cursor_.rawValue,0,p,0,o.width),xe=de(B,v,x,o.height,0);D.style.left=`${R}px`,D.style.top=`${xe}px`,D.textContent=`${this.formatter_(B)}`,D.classList.contains(ht("t","a"))||(D.classList.add(ht("t","a"),ht("t","in")),A(D),D.classList.remove(ht("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class Ns{constructor(o,p){if(this.onGraphMouseMove_=this.onGraphMouseMove_.bind(this),this.onGraphMouseLeave_=this.onGraphMouseLeave_.bind(this),this.onGraphPointerDown_=this.onGraphPointerDown_.bind(this),this.onGraphPointerMove_=this.onGraphPointerMove_.bind(this),this.onGraphPointerUp_=this.onGraphPointerUp_.bind(this),this.props_=p.props,this.value=p.value,this.viewProps=p.viewProps,this.cursor_=te(-1),this.view=new Es(o,{cursor:this.cursor_,formatter:p.formatter,lineCount:p.lineCount,props:this.props_,value:this.value,viewProps:this.viewProps}),!ke(o))this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_);else{const v=new Ue(this.view.element);v.emitter.on("down",this.onGraphPointerDown_),v.emitter.on("move",this.onGraphPointerMove_),v.emitter.on("up",this.onGraphPointerUp_)}}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(o){const p=this.view.element.getBoundingClientRect();this.cursor_.rawValue=Math.floor(de(o.offsetX,0,p.width,0,this.value.rawValue.length))}onGraphPointerDown_(o){this.onGraphPointerMove_(o)}onGraphPointerMove_(o){if(!o.data.point){this.cursor_.rawValue=-1;return}this.cursor_.rawValue=Math.floor(de(o.data.point.x,0,o.data.bounds.width,0,this.value.rawValue.length))}onGraphPointerUp_(){this.cursor_.rawValue=-1}}class Di{constructor(o){this.controller_=o}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(o){this.controller_.viewProps.set("disabled",o)}get title(){var o;return(o=this.controller_.props.get("title"))!==null&&o!==void 0?o:""}set title(o){this.controller_.props.set("title",o)}on(o,p){const v=p.bind(this);return this.controller_.emitter.on(o,()=>{v(new a(this))}),this}}class Fs extends a{constructor(o,p,v){super(o),this.cell=p,this.index=v}}class Ti extends s{constructor(o){super(o),this.cellToApiMap_=new Map,this.emitter_=new y;const p=this.controller_.valueController;p.cellControllers.forEach((v,x)=>{const k=new Di(v);this.cellToApiMap_.set(v,k),v.emitter.on("click",()=>{const D=x%p.size[0],B=Math.floor(x/p.size[0]);this.emitter_.emit("click",{event:new Fs(this,k,[D,B])})})})}cell(o,p){const v=this.controller_.valueController,x=v.cellControllers[p*v.size[0]+o];return this.cellToApiMap_.get(x)}on(o,p){const v=p.bind(this);return this.emitter_.on(o,x=>{v(x.event)}),this}}class qn{constructor(o,p){this.size=p.size;const[v,x]=this.size,k=[];for(let D=0;D<x;D++)for(let B=0;B<v;B++){const R=new Y(o,{props:W.fromObject(Object.assign({},p.cellConfig(B,D))),viewProps:Qe.create()});k.push(R)}this.cellCs_=k,this.viewProps=Qe.create(),this.viewProps.handleDispose(()=>{this.cellCs_.forEach(D=>{D.viewProps.set("disposed",!0)})}),this.view=new gt(o,{viewProps:this.viewProps,viewName:"btngrid"}),this.view.element.style.gridTemplateColumns=`repeat(${v}, 1fr)`,this.cellCs_.forEach(D=>{this.view.element.appendChild(D.view.element)})}get cellControllers(){return this.cellCs_}}const Bs={id:"buttongrid",type:"blade",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(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);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(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);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(--elm-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(--bld-us)}.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(--bld-s);opacity:1}.tp-cbzv.tp-cbzv-cpl .tp-cbzv_p{overflow:visible}.tp-cbzv .tp-popv{left:calc(-1*var(--cnt-h-p));position:absolute;right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-cbzpv_t{margin-top:var(--bld-s)}.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(--bld-us)*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(--bld-us));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(--bld-us) - 8px);margin-top:calc((var(--bld-us) - 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(--elm-br);display:grid;overflow:hidden;gap:2px}.tp-radgridv.tp-v-disabled{opacity:.5}.tp-radgridv .tp-radv_b{border-radius:0}',accept(d){const o=J,p=X(d,{cells:o.required.function,size:o.required.array(o.required.number),view:o.required.constant("buttongrid"),label:o.optional.string});return p?{params:p}:null},controller(d){return new bt(d.document,{blade:d.blade,props:W.fromObject({label:d.params.label}),valueController:new qn(d.document,{cellConfig:d.params.cells,size:d.params.size})})},api(d){return!(d.controller instanceof bt)||!(d.controller.valueController instanceof qn)?null:new Ti(d.controller)}};class Oi extends s{get label(){return this.controller_.props.get("label")}set label(o){this.controller_.props.set("label",o)}get value(){return this.controller_.valueController.value.rawValue}set value(o){this.controller_.valueController.value.rawValue=o}on(o,p){const v=p.bind(this);return this.controller_.valueController.value.emitter.on(o,x=>{v(new c(this,x.rawValue,void 0,x.options.last))}),this}}function Ge(d,o,p){return d*(1-p)+o*p}const Ei=20,js=.001,Qn=100;function zs(d,o){let p=.25,v=.5,x=-1;for(let k=0;k<Ei;k++){const[D,B]=d.curve(v);if(v+=p*(D<o?1:-1),x=B,p*=.5,Math.abs(o-D)<js)break}return x}class st{constructor(o=0,p=0,v=1,x=1){this.cache_=[],this.comps_=[o,p,v,x]}get x1(){return this.comps_[0]}get y1(){return this.comps_[1]}get x2(){return this.comps_[2]}get y2(){return this.comps_[3]}static isObject(o){return h(o)||!Array.isArray(o)?!1:typeof o[0]=="number"&&typeof o[1]=="number"&&typeof o[2]=="number"&&typeof o[3]=="number"}static equals(o,p){return o.x1===p.x1&&o.y1===p.y1&&o.x2===p.x2&&o.y2===p.y2}curve(o){const p=Ge(0,this.x1,o),v=Ge(0,this.y1,o),x=Ge(this.x1,this.x2,o),k=Ge(this.y1,this.y2,o),D=Ge(this.x2,1,o),B=Ge(this.y2,1,o),R=Ge(p,x,o),xe=Ge(v,k,o),lt=Ge(x,D,o),oi=Ge(k,B,o);return[Ge(R,lt,o),Ge(xe,oi,o)]}y(o){if(this.cache_.length===0){const p=[];for(let v=0;v<Qn;v++)p.push(zs(this,de(v,0,Qn-1,0,1)));this.cache_=p}return this.cache_[Math.round(de(yt(o,0,1),0,1,0,Qn-1))]}toObject(){return[this.comps_[0],this.comps_[1],this.comps_[2],this.comps_[3]]}}const Zn={toComponents:d=>d.toObject(),fromComponents:d=>new st(...d)};function rt(d){const o=Ie(2);return`cubic-bezier(${d.toObject().map(v=>o(v)).join(", ")})`}const Wn=[0,.5,.5,1];function Us(d){const o=d.match(/^cubic-bezier\s*\(\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)\s*\)$/);if(!o)return new st(...Wn);const p=[o[1],o[2],o[3],o[4]].reduce((v,x)=>{if(!v)return null;const k=Number(x);return isNaN(k)?null:[...v,k]},[]);return new st(...p??Wn)}const fe=C("cbz");class Ni{constructor(o,p){this.element=o.createElement("div"),this.element.classList.add(fe()),p.viewProps.bindClassModifiers(this.element),p.foldable.bindExpandedClass(this.element,fe(void 0,"expanded")),O(p.foldable,"completed",G(this.element,fe(void 0,"cpl")));const v=o.createElement("div");v.classList.add(fe("h")),this.element.appendChild(v);const x=o.createElement("button");x.classList.add(fe("b")),p.viewProps.bindDisabled(x);const k=o.createElementNS($,"svg");k.innerHTML='<path d="M2 13C8 13 8 3 14 3"/>',x.appendChild(k),v.appendChild(x),this.buttonElement=x;const D=o.createElement("div");if(D.classList.add(fe("t")),v.appendChild(D),this.textElement=D,p.pickerLayout==="inline"){const B=o.createElement("div");B.classList.add(fe("p")),this.element.appendChild(B),this.pickerElement=B}else this.pickerElement=null}}const Ft=C("cbzp");class Jn{constructor(o,p){this.element=o.createElement("div"),this.element.classList.add(Ft()),p.viewProps.bindClassModifiers(this.element);const v=o.createElement("div");v.classList.add(Ft("g")),this.element.appendChild(v),this.graphElement=v;const x=o.createElement("div");x.classList.add(Ft("t")),this.element.appendChild(x),this.textElement=x}}function gn(d,o){const p=new MutationObserver(x=>{for(const k of x)k.type==="childList"&&k.addedNodes.forEach(D=>{D.contains(D)&&(o(),p.disconnect())})}),v=d.ownerDocument;p.observe(v.body,{attributes:!0,childList:!0,subtree:!0})}const ot=C("cbzg");function Gs(d,o){return p=>o(d(p))}class Fi{constructor(o,p){this.element=o.createElement("div"),this.element.classList.add(ot()),p.viewProps.bindClassModifiers(this.element),p.viewProps.bindTabIndex(this.element);const v=o.createElement("div");v.classList.add(ot("p")),this.element.appendChild(v),this.previewElement=v;const x=o.createElementNS($,"svg");x.classList.add(ot("g")),this.element.appendChild(x),this.svgElem_=x;const k=o.createElementNS($,"path");k.classList.add(ot("u")),this.svgElem_.appendChild(k),this.guideElem_=k;const D=o.createElementNS($,"polyline");D.classList.add(ot("l")),this.svgElem_.appendChild(D),this.lineElem_=D,this.handleElems_=[o.createElement("div"),o.createElement("div")],this.handleElems_.forEach(B=>{B.classList.add(ot("h")),this.element.appendChild(B)}),this.vectorElems_=[o.createElementNS($,"line"),o.createElementNS($,"line")],this.vectorElems_.forEach(B=>{B.classList.add(ot("v")),this.svgElem_.appendChild(B)}),this.value_=p.value,this.value_.emitter.on("change",this.onValueChange_.bind(this)),this.sel_=p.selection,this.handleElems_.forEach((B,R)=>{T(this.sel_,Gs(xe=>xe===R,G(B,ot("h","sel"))))}),gn(this.element,()=>{this.refresh()})}getVertMargin_(o){return o*.25}valueToPosition(o,p){const v=this.element.getBoundingClientRect(),x=v.width,k=v.height,D=this.getVertMargin_(k);return{x:de(o,0,1,0,x),y:de(p,0,1,k-D,D)}}positionToValue(o,p){const v=this.element.getBoundingClientRect(),x=v.width,k=v.height,D=this.getVertMargin_(k);return{x:yt(de(o,0,x,0,1),0,1),y:de(p,k-D,D,0,1)}}refresh(){this.guideElem_.setAttributeNS(null,"d",[0,1].map(k=>{const D=this.valueToPosition(0,k),B=this.valueToPosition(1,k);return[`M ${D.x},${D.y}`,`L ${B.x},${B.y}`].join(" ")}).join(" "));const o=this.value_.rawValue,p=[];let v=0;for(;;){const k=this.valueToPosition(...o.curve(v));if(p.push([k.x,k.y].join(",")),v>=1)break;v=Math.min(v+.05,1)}this.lineElem_.setAttributeNS(null,"points",p.join(" "));const x=o.toObject();[0,1].forEach(k=>{const D=this.valueToPosition(k,k),B=this.valueToPosition(x[k*2],x[k*2+1]),R=this.vectorElems_[k];R.setAttributeNS(null,"x1",String(D.x)),R.setAttributeNS(null,"y1",String(D.y)),R.setAttributeNS(null,"x2",String(B.x)),R.setAttributeNS(null,"y2",String(B.y));const xe=this.handleElems_[k];xe.style.left=`${B.x}px`,xe.style.top=`${B.y}px`})}onValueChange_(){this.refresh()}}const Bi=24,Bt=400,Ae=1e3,He=C("cbzprv");class et{constructor(o,p){this.stopped_=!0,this.startTime_=-1,this.onDispose_=this.onDispose_.bind(this),this.onTimer_=this.onTimer_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.element=o.createElement("div"),this.element.classList.add(He()),p.viewProps.bindClassModifiers(this.element);const v=o.createElementNS($,"svg");v.classList.add(He("g")),this.element.appendChild(v),this.svgElem_=v;const x=o.createElementNS($,"path");x.classList.add(He("t")),this.svgElem_.appendChild(x),this.ticksElem_=x;const k=o.createElement("div");k.classList.add(He("m")),this.element.appendChild(k),this.markerElem_=k,this.value_=p.value,this.value_.emitter.on("change",this.onValueChange_),p.viewProps.handleDispose(this.onDispose_),gn(this.element,()=>{this.refresh()})}play(){this.stop(),this.updateMarker_(0),this.markerElem_.classList.add(He("m","a")),this.startTime_=new Date().getTime()+Bt,this.stopped_=!1,requestAnimationFrame(this.onTimer_)}stop(){this.stopped_=!0,this.markerElem_.classList.remove(He("m","a"))}onDispose_(){this.stop()}updateMarker_(o){const p=this.value_.rawValue.y(yt(o,0,1));this.markerElem_.style.left=`${p*100}%`}refresh(){const o=this.svgElem_.getBoundingClientRect(),p=o.width,v=o.height,x=[],k=this.value_.rawValue;for(let D=0;D<Bi;D++){const B=de(D,0,Bi-1,0,1),R=de(k.y(B),0,1,0,p);x.push(`M ${R},0 v${v}`)}this.ticksElem_.setAttributeNS(null,"d",x.join(" "))}onTimer_(){if(this.startTime_===null)return;const o=new Date().getTime()-this.startTime_,p=o/Ae;this.updateMarker_(p),o>Ae+Bt&&this.stop(),this.stopped_||requestAnimationFrame(this.onTimer_)}onValueChange_(){this.refresh(),this.play()}}function Hn(d,o,p,v){const x=p-d,k=v-o;return Math.sqrt(x*x+k*k)}function ji(d,o,p,v){const x=Hn(d,o,p,v),k=Math.atan2(v-o,p-d),D=Math.round(k/(Math.PI/4))*Math.PI/4;return{x:d+Math.cos(D)*x,y:o+Math.sin(D)*x}}class wn{constructor(o,p){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=p.baseStep,this.value=p.value,this.sel_=te(0),this.viewProps=p.viewProps,this.view=new Fi(o,{selection:this.sel_,value:this.value,viewProps:this.viewProps}),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_),this.prevView_=new et(o,{value:this.value,viewProps:this.viewProps}),this.prevView_.element.addEventListener("mousedown",x=>{x.stopImmediatePropagation(),x.preventDefault(),this.prevView_.play()}),this.view.previewElement.appendChild(this.prevView_.element);const v=new Ue(this.view.element);v.emitter.on("down",this.onPointerDown_),v.emitter.on("move",this.onPointerMove_),v.emitter.on("up",this.onPointerUp_)}refresh(){this.view.refresh(),this.prevView_.refresh(),this.prevView_.play()}updateValue_(o,p,v){const x=this.sel_.rawValue,k=this.value.rawValue.toObject(),D=this.view.positionToValue(o.x,o.y),B=p?ji(x,x,D.x,D.y):D;k[x*2]=B.x,k[x*2+1]=B.y,this.value.setRawValue(new st(...k),v)}onPointerDown_(o){const p=o.data;if(!p.point)return;const v=this.value.rawValue,x=this.view.valueToPosition(v.x1,v.y1),k=Hn(p.point.x,p.point.y,x.x,x.y),D=this.view.valueToPosition(v.x2,v.y2),B=Hn(p.point.x,p.point.y,D.x,D.y);this.sel_.rawValue=k<=B?0:1,this.updateValue_(p.point,o.shiftKey,{forceEmit:!1,last:!1})}onPointerMove_(o){const p=o.data;p.point&&this.updateValue_(p.point,o.shiftKey,{forceEmit:!1,last:!1})}onPointerUp_(o){const p=o.data;p.point&&this.updateValue_(p.point,o.shiftKey,{forceEmit:!0,last:!0})}onKeyDown_(o){ki(o.key)&&o.preventDefault();const p=this.sel_.rawValue,v=this.value.rawValue.toObject();v[p*2]+=wt(this.baseStep_,Mi(o)),v[p*2+1]+=wt(this.baseStep_,en(o)),this.value.setRawValue(new st(...v),{forceEmit:!1,last:!1})}onKeyUp_(o){ki(o.key)&&o.preventDefault();const p=wt(this.baseStep_,Mi(o)),v=wt(this.baseStep_,en(o));p===0&&v===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class dt{constructor(o,p){this.value=p.value,this.viewProps=p.viewProps,this.view=new Jn(o,{viewProps:this.viewProps}),this.gc_=new wn(o,{baseStep:p.axis.baseStep,value:this.value,viewProps:this.viewProps}),this.view.graphElement.appendChild(this.gc_.view.element);const v=Object.assign(Object.assign({},p.axis),{constraint:new Ke({max:1,min:0})}),x=Object.assign(Object.assign({},p.axis),{constraint:void 0});this.tc_=new Yn(o,{assembly:Zn,axes:[v,x,v,x],parser:$e,value:this.value,viewProps:this.viewProps}),this.view.textElement.appendChild(this.tc_.view.element)}get allFocusableElements(){return[this.gc_.view.element,...this.tc_.view.textViews.map(o=>o.inputElement)]}refresh(){this.gc_.refresh()}}class pe{constructor(o,p){this.onButtonBlur_=this.onButtonBlur_.bind(this),this.onButtonClick_=this.onButtonClick_.bind(this),this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.value=p.value,this.viewProps=p.viewProps,this.foldable_=Nn(p.expanded),this.view=new Ni(o,{foldable:this.foldable_,pickerLayout:p.pickerLayout,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("blur",this.onButtonBlur_),this.view.buttonElement.addEventListener("click",this.onButtonClick_),this.tc_=new _e(o,{parser:Us,props:W.fromObject({formatter:rt}),value:this.value,viewProps:this.viewProps}),this.view.textElement.appendChild(this.tc_.view.element),this.popC_=p.pickerLayout==="popup"?new j(o,{viewProps:this.viewProps}):null;const v=new dt(o,{axis:p.axis,value:this.value,viewProps:this.viewProps});v.allFocusableElements.forEach(x=>{x.addEventListener("blur",this.onPopupChildBlur_),x.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=v,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),T(this.popC_.shows,x=>{x&&v.refresh()}),Pi({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:x=>x.rawValue,backward:(x,k)=>k.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),ct(this.foldable_,this.view.pickerElement))}onButtonBlur_(o){if(!this.popC_)return;const p=o.relatedTarget;(!p||!this.popC_.view.element.contains(p))&&(this.popC_.shows.rawValue=!1)}onButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.allFocusableElements[0].focus()}onPopupChildBlur_(o){if(!this.popC_)return;const p=this.popC_.view.element,v=Re(o);v&&p.contains(v)||v&&v===this.view.buttonElement&&!ke(p.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(o){this.popC_&&o.key==="Escape"&&(this.popC_.shows.rawValue=!1)}}function zi(){return new Vs({assembly:Zn,components:[0,1,2,3].map(d=>d%2===0?new Ke({min:0,max:1}):void 0)})}const ye={id:"cubic-bezier",type:"blade",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(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);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(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);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(--elm-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(--bld-us)}.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(--bld-s);opacity:1}.tp-cbzv.tp-cbzv-cpl .tp-cbzv_p{overflow:visible}.tp-cbzv .tp-popv{left:calc(-1*var(--cnt-h-p));position:absolute;right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-cbzpv_t{margin-top:var(--bld-s)}.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(--bld-us)*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(--bld-us));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(--bld-us) - 8px);margin-top:calc((var(--bld-us) - 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(--elm-br);display:grid;overflow:hidden;gap:2px}.tp-radgridv.tp-v-disabled{opacity:.5}.tp-radgridv .tp-radv_b{border-radius:0}',accept(d){const o=J,p=X(d,{value:o.required.array(o.required.number),view:o.required.constant("cubicbezier"),expanded:o.optional.boolean,label:o.optional.string,picker:o.optional.custom(v=>v==="inline"||v==="popup"?v:void 0)});return p?{params:p}:null},controller(d){var o,p;const v=new st(...d.params.value),x=te(v,{constraint:zi(),equals:st.equals}),k=new pe(d.document,{axis:{baseStep:.1,textProps:W.fromObject({draggingScale:.01,formatter:Ie(2)})},expanded:(o=d.params.expanded)!==null&&o!==void 0?o:!1,pickerLayout:(p=d.params.picker)!==null&&p!==void 0?p:"popup",value:x,viewProps:d.viewProps});return new pt(d.document,{blade:d.blade,props:W.fromObject({label:d.params.label}),valueController:k})},api(d){return!(d.controller instanceof pt)||!(d.controller.valueController instanceof pe)?null:new Oi(d.controller)}};class ei extends s{begin(){this.controller_.valueController.begin()}end(){this.controller_.valueController.end()}}const Ee=20;class Ui{constructor(){this.start_=null,this.duration_=0,this.fps_=null,this.frameCount_=0,this.timestamps_=[]}get duration(){return this.duration_}get fps(){return this.fps_}begin(o){this.start_=o.getTime()}calculateFps_(o){if(this.timestamps_.length===0)return null;const p=this.timestamps_[0];return 1e3*(this.frameCount_-p.frameCount)/(o-p.time)}compactTimestamps_(){if(this.timestamps_.length<=Ee)return;const o=this.timestamps_.length-Ee;this.timestamps_.splice(0,o);const p=this.timestamps_[0].frameCount;this.timestamps_.forEach(v=>{v.frameCount-=p}),this.frameCount_-=p}end(o){if(this.start_===null)return;const p=o.getTime();this.duration_=p-this.start_,this.start_=null,this.fps_=this.calculateFps_(p),this.timestamps_.push({frameCount:this.frameCount_,time:p}),++this.frameCount_,this.compactTimestamps_()}}const at=C("fps");class _n{constructor(o,p){this.element=o.createElement("div"),this.element.classList.add(at()),p.viewProps.bindClassModifiers(this.element),this.graphElement=o.createElement("div"),this.graphElement.classList.add(at("g")),this.element.appendChild(this.graphElement);const v=o.createElement("div");v.classList.add(at("l")),this.element.appendChild(v);const x=o.createElement("span");x.classList.add(at("v")),x.textContent="--",v.appendChild(x),this.valueElement=x;const k=o.createElement("span");k.classList.add(at("u")),k.textContent="FPS",v.appendChild(k)}}class ti{constructor(o,p){this.stopwatch_=new Ui,this.onTick_=this.onTick_.bind(this),this.ticker_=p.ticker,this.ticker_.emitter.on("tick",this.onTick_),this.value_=p.value,this.viewProps=p.viewProps,this.view=new _n(o,{viewProps:this.viewProps}),this.graphC_=new Ns(o,{formatter:Ie(0),lineCount:p.lineCount,props:W.fromObject({maxValue:p.maxValue,minValue:p.minValue}),value:this.value_,viewProps:this.viewProps}),this.view.graphElement.appendChild(this.graphC_.view.element),this.viewProps.handleDispose(()=>{this.graphC_.viewProps.set("disposed",!0),this.ticker_.dispose()})}begin(){this.stopwatch_.begin(new Date)}end(){this.stopwatch_.end(new Date)}onTick_(){const o=this.stopwatch_.fps;if(o!==null){const p=this.value_.rawValue;this.value_.rawValue=fn(p,o),this.view.valueElement.textContent=o.toFixed(0)}}}function Rs(d,o){return o===0?new ut:new Bn(d,o??Os.monitor.defaultInterval)}const ni={id:"fpsgraph",type:"blade",accept(d){const o=J,p=X(d,{view:o.required.constant("fpsgraph"),interval:o.optional.number,label:o.optional.string,lineCount:o.optional.number,max:o.optional.number,min:o.optional.number});return p?{params:p}:null},controller(d){var o,p,v,x;const k=(o=d.params.interval)!==null&&o!==void 0?o:500;return new bt(d.document,{blade:d.blade,props:W.fromObject({label:d.params.label}),valueController:new ti(d.document,{lineCount:(p=d.params.lineCount)!==null&&p!==void 0?p:2,maxValue:(v=d.params.max)!==null&&v!==void 0?v:90,minValue:(x=d.params.min)!==null&&x!==void 0?x:0,ticker:Rs(d.document,k),value:Ci(80),viewProps:d.viewProps})})},api(d){return!(d.controller instanceof bt)||!(d.controller.valueController instanceof ti)?null:new ei(d.controller)}};class Ne{constructor(o,p){this.min=o,this.max=p}static isObject(o){if(typeof o!="object"||o===null)return!1;const p=o.min,v=o.max;return!(typeof p!="number"||typeof v!="number")}static equals(o,p){return o.min===p.min&&o.max===p.max}get length(){return this.max-this.min}toObject(){return{min:this.min,max:this.max}}}const rn={fromComponents:d=>new Ne(d[0],d[1]),toComponents:d=>[d.min,d.max]};class Ct{constructor(o){this.edge=o}constrain(o){var p,v,x,k,D,B,R,xe;if(o.min<=o.max)return new Ne((v=(p=this.edge)===null||p===void 0?void 0:p.constrain(o.min))!==null&&v!==void 0?v:o.min,(k=(x=this.edge)===null||x===void 0?void 0:x.constrain(o.max))!==null&&k!==void 0?k:o.max);const lt=(o.min+o.max)/2;return new Ne((B=(D=this.edge)===null||D===void 0?void 0:D.constrain(lt))!==null&&B!==void 0?B:lt,(xe=(R=this.edge)===null||R===void 0?void 0:R.constrain(lt))!==null&&xe!==void 0?xe:lt)}}const jt=C("rsltxt");class ii{constructor(o,p){this.sliderView_=p.sliderView,this.textView_=p.textView,this.element=o.createElement("div"),this.element.classList.add(jt());const v=o.createElement("div");v.classList.add(jt("s")),v.appendChild(this.sliderView_.element),this.element.appendChild(v);const x=o.createElement("div");x.classList.add(jt("t")),x.appendChild(this.textView_.element),this.element.appendChild(x)}}const De=C("rsl");class si{constructor(o,p){this.onSliderPropsChange_=this.onSliderPropsChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.sliderProps_=p.sliderProps,this.sliderProps_.emitter.on("change",this.onSliderPropsChange_),this.element=o.createElement("div"),this.element.classList.add(De()),p.viewProps.bindClassModifiers(this.element),this.value_=p.value,this.value_.emitter.on("change",this.onValueChange_);const v=o.createElement("div");v.classList.add(De("t")),this.element.appendChild(v),this.trackElement=v;const x=o.createElement("div");x.classList.add(De("b")),v.appendChild(x),this.barElement=x;const k=["min","max"].map(D=>{const B=o.createElement("div");return B.classList.add(De("k"),De("k",D)),v.appendChild(B),B});this.knobElements=[k[0],k[1]],this.update_()}valueToX_(o){const p=this.sliderProps_.get("minValue"),v=this.sliderProps_.get("maxValue");return yt(de(o,p,v,0,1),0,1)*100}update_(){const o=this.value_.rawValue;o.length===0?this.element.classList.add(De(void 0,"zero")):this.element.classList.remove(De(void 0,"zero"));const p=[this.valueToX_(o.min),this.valueToX_(o.max)];this.barElement.style.left=`${p[0]}%`,this.barElement.style.right=`${100-p[1]}%`,this.knobElements.forEach((v,x)=>{v.style.left=`${p[x]}%`})}onSliderPropsChange_(){this.update_()}onValueChange_(){this.update_()}}class yn{constructor(o,p){this.grabbing_=null,this.grabOffset_=0,this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.sliderProps=p.sliderProps,this.viewProps=p.viewProps,this.value=p.value,this.view=new si(o,{sliderProps:this.sliderProps,value:this.value,viewProps:p.viewProps});const v=new Ue(this.view.trackElement);v.emitter.on("down",this.onPointerDown_),v.emitter.on("move",this.onPointerMove_),v.emitter.on("up",this.onPointerUp_)}ofs_(){return this.grabbing_==="min"?this.view.knobElements[0].getBoundingClientRect().width/2:this.grabbing_==="max"?-this.view.knobElements[1].getBoundingClientRect().width/2:0}valueFromData_(o){if(!o.point)return null;const p=(o.point.x+this.ofs_())/o.bounds.width,v=this.sliderProps.get("minValue"),x=this.sliderProps.get("maxValue");return de(p,0,1,v,x)}onPointerDown_(o){if(!o.data.point)return;const p=o.data.point.x/o.data.bounds.width,v=this.value.rawValue,x=this.sliderProps.get("minValue"),k=this.sliderProps.get("maxValue"),D=de(v.min,x,k,0,1),B=de(v.max,x,k,0,1);Math.abs(B-p)<=.025?this.grabbing_="max":Math.abs(D-p)<=.025?this.grabbing_="min":p>=D&&p<=B?(this.grabbing_="length",this.grabOffset_=de(p-D,0,1,0,k-x)):p<D?(this.grabbing_="min",this.onPointerMove_(o)):p>B&&(this.grabbing_="max",this.onPointerMove_(o))}applyPointToValue_(o,p){const v=this.valueFromData_(o);if(v===null)return;const x=this.sliderProps.get("minValue"),k=this.sliderProps.get("maxValue");if(this.grabbing_==="min")this.value.setRawValue(new Ne(v,this.value.rawValue.max),p);else if(this.grabbing_==="max")this.value.setRawValue(new Ne(this.value.rawValue.min,v),p);else if(this.grabbing_==="length"){const D=this.value.rawValue.length;let B=v-this.grabOffset_,R=B+D;B<x?(B=x,R=x+D):R>k&&(B=k-D,R=k),this.value.setRawValue(new Ne(B,R),p)}}onPointerMove_(o){this.applyPointToValue_(o.data,{forceEmit:!1,last:!1})}onPointerUp_(o){this.applyPointToValue_(o.data,{forceEmit:!0,last:!0}),this.grabbing_=null}}class Gi{constructor(o,p){this.value=p.value,this.viewProps=p.viewProps,this.sc_=new yn(o,p);const v={baseStep:p.baseStep,constraint:p.constraint,textProps:W.fromObject({draggingScale:p.draggingScale,formatter:p.formatter})};this.tc_=new Yn(o,{assembly:rn,axes:[v,v],parser:p.parser,value:this.value,viewProps:p.viewProps}),this.view=new ii(o,{sliderView:this.sc_.view,textView:this.tc_.view})}get textController(){return this.tc_}}function xn(d){return Ne.isObject(d)?new Ne(d.min,d.max):new Ne(0,0)}function zt(d,o){d.writeProperty("max",o.max),d.writeProperty("min",o.min)}function Ut(d){const o=[],p=Ts(d);p&&o.push(p);const v=Ds(d);return v&&o.push(v),new Ct(new Qt(o))}const Cn={id:"input-interval",type:"input",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(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);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(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);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(--elm-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(--bld-us)}.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(--bld-s);opacity:1}.tp-cbzv.tp-cbzv-cpl .tp-cbzv_p{overflow:visible}.tp-cbzv .tp-popv{left:calc(-1*var(--cnt-h-p));position:absolute;right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-cbzpv_t{margin-top:var(--bld-s)}.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(--bld-us)*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(--bld-us));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(--bld-us) - 8px);margin-top:calc((var(--bld-us) - 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(--elm-br);display:grid;overflow:hidden;gap:2px}.tp-radgridv.tp-v-disabled{opacity:.5}.tp-radgridv .tp-radv_b{border-radius:0}',accept:(d,o)=>{if(!Ne.isObject(d))return null;const p=J,v=X(o,{format:p.optional.function,max:p.optional.number,min:p.optional.number,step:p.optional.number});return v?{initialValue:new Ne(d.min,d.max),params:v}:null},binding:{reader:d=>xn,constraint:d=>Ut(d.params),equals:Ne.equals,writer:d=>zt},controller(d){var o;const p=d.value,v=d.constraint;if(!(v instanceof Ct))throw g.shouldNeverHappen();const x=(p.rawValue.min+p.rawValue.max)/2,k=(o=d.params.format)!==null&&o!==void 0?o:Ie(xs(v.edge,x)),D=v.edge&&Ze(v.edge,hn);if(D)return new Gi(d.document,{baseStep:Xn(v.edge),constraint:v.edge,draggingScale:Li(v.edge,x),formatter:k,parser:$e,sliderProps:new W({maxValue:D.values.value("max"),minValue:D.values.value("min")}),value:p,viewProps:d.viewProps});const B={baseStep:Xn(v.edge),constraint:v.edge,textProps:W.fromObject({draggingScale:x,formatter:k})};return new Yn(d.document,{assembly:rn,axes:[B,B],parser:$e,value:p,viewProps:d.viewProps})}};class Ri{constructor(o){this.controller_=o}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(o){this.controller_.viewProps.set("disabled",o)}get title(){var o;return(o=this.controller_.props.get("title"))!==null&&o!==void 0?o:""}set title(o){this.controller_.props.set("title",o)}}class Ki extends c{constructor(o,p,v,x,k){super(o,x,k),this.cell=p,this.index=v}}class Xi extends s{constructor(o){super(o),this.cellToApiMap_=new Map,this.controller_.valueController.cellControllers.forEach(v=>{const x=new Ri(v);this.cellToApiMap_.set(v,x)})}get value(){return this.controller_.value}cell(o,p){const v=this.controller_.valueController,x=v.cellControllers[p*v.size[0]+o];return this.cellToApiMap_.get(x)}on(o,p){const v=p.bind(this);this.controller_.value.emitter.on(o,x=>{const k=this.controller_.valueController,D=k.findCellByValue(x.rawValue);if(!D)return;const B=this.cellToApiMap_.get(D);if(!B)return;const R=k.cellControllers.indexOf(D);v(new Ki(this,B,[R%k.size[0],Math.floor(R/k.size[0])],x.rawValue,void 0))})}}const on=C("rad");class mt{constructor(o,p){this.element=o.createElement("div"),this.element.classList.add(on()),p.viewProps.bindClassModifiers(this.element);const v=o.createElement("label");v.classList.add(on("l")),this.element.appendChild(v);const x=o.createElement("input");x.classList.add(on("i")),x.name=p.name,x.type="radio",p.viewProps.bindDisabled(x),v.appendChild(x),this.inputElement=x;const k=o.createElement("div");k.classList.add(on("b")),v.appendChild(k);const D=o.createElement("div");D.classList.add(on("t")),k.appendChild(D),O(p.props,"title",B=>{D.textContent=B})}}class $i{constructor(o,p){this.props=p.props,this.viewProps=p.viewProps,this.view=new mt(o,{name:p.name,props:this.props,viewProps:this.viewProps})}}class Pn{constructor(o,p){this.cellCs_=[],this.cellValues_=[],this.onCellInputChange_=this.onCellInputChange_.bind(this),this.size=p.size;const[v,x]=this.size;for(let k=0;k<x;k++)for(let D=0;D<v;D++){const B=new $i(o,{name:p.groupName,props:W.fromObject(Object.assign({},p.cellConfig(D,k))),viewProps:Qe.create()});this.cellCs_.push(B),this.cellValues_.push(p.cellConfig(D,k).value)}this.value=p.value,T(this.value,k=>{const D=this.findCellByValue(k);D&&(D.view.inputElement.checked=!0)}),this.viewProps=Qe.create(),this.view=new gt(o,{viewProps:this.viewProps,viewName:"radgrid"}),this.view.element.style.gridTemplateColumns=`repeat(${v}, 1fr)`,this.cellCs_.forEach(k=>{k.view.inputElement.addEventListener("change",this.onCellInputChange_),this.view.element.appendChild(k.view.element)})}get cellControllers(){return this.cellCs_}findCellByValue(o){const p=this.cellValues_.findIndex(v=>v===o);return p<0?null:this.cellCs_[p]}onCellInputChange_(o){const p=o.currentTarget,v=this.cellCs_.findIndex(x=>x.view.inputElement===p);v<0||(this.value.rawValue=this.cellValues_[v])}}const Ks=function(){return{id:"radiogrid",type:"blade",accept(d){const o=J,p=X(d,{cells:o.required.function,groupName:o.required.string,size:o.required.array(o.required.number),value:o.required.raw,view:o.required.constant("radiogrid"),label:o.optional.string});return p?{params:p}:null},controller(d){return new pt(d.document,{blade:d.blade,props:W.fromObject({label:d.params.label}),valueController:new Pn(d.document,{groupName:d.params.groupName,cellConfig:d.params.cells,size:d.params.size,value:te(d.params.value)})})},api(d){return!(d.controller instanceof pt)||!(d.controller.valueController instanceof Pn)?null:new Xi(d.controller)}}}();function ri(d){return{id:"input-radiogrid",type:"input",accept(o,p){if(!d.isType(o))return null;const v=J,x=X(p,{cells:v.required.function,groupName:v.required.string,size:v.required.array(v.required.number),view:v.required.constant("radiogrid")});return x?{initialValue:o,params:x}:null},binding:d.binding,controller:o=>new Pn(o.document,{cellConfig:o.params.cells,groupName:o.params.groupName,size:o.params.size,value:o.value})}}const Yi=ri({isType:d=>typeof d=="number",binding:{reader:d=>Jt,writer:d=>xt}}),Xs=ri({isType:d=>typeof d=="string",binding:{reader:d=>xi,writer:d=>xt}}),$s=ri({isType:d=>typeof d=="boolean",binding:{reader:d=>je,writer:d=>xt}}),Pt=[Bs,ye,ni,Cn,Ks,$s,Yi,Xs];r.ButtonCellApi=Di,r.ButtonGridApi=Ti,r.ButtonGridController=qn,r.CubicBezier=st,r.CubicBezierApi=Oi,r.CubicBezierAssembly=Zn,r.CubicBezierController=pe,r.CubicBezierGraphController=wn,r.CubicBezierGraphView=Fi,r.CubicBezierPickerController=dt,r.CubicBezierPickerView=Jn,r.CubicBezierPreviewView=et,r.CubicBezierView=Ni,r.FpsGraphBladeApi=ei,r.FpsGraphController=ti,r.FpsView=_n,r.Fpswatch=Ui,r.Interval=Ne,r.IntervalAssembly=rn,r.IntervalConstraint=Ct,r.RadioCellApi=Ri,r.RadioController=$i,r.RadioGridApi=Xi,r.RadioGridController=Pn,r.RadioView=mt,r.RangeSliderController=yn,r.RangeSliderTextController=Gi,r.RangeSliderTextView=ii,r.RangeSliderView=si,r.TpRadioGridChangeEvent=Ki,r.plugins=Pt,Object.defineProperty(r,"__esModule",{value:!0})})})(Qa,En);const Za=Co({__proto__:null,default:Ua(En)},[En]);let Yt,mi;const Wa=(_="tres-container")=>{Yt||(Yt=new di.Pane({container:document.querySelector(_)||void 0}),Yt.registerPlugin(Za),mi=Yt.addBlade({view:"fpsgraph",label:"fpsgraph"}));function i(){Yt&&Yt.dispose()}return U.onMounted(()=>{const{onBeforeLoop:r,onAfterLoop:s,resume:a}=ln.useRenderLoop();a(),r(()=>mi.begin()),s(()=>mi.end())}),U.onUnmounted(()=>{i()}),{pane:Yt,fpsGraph:mi,disposeTweakPane:i}};function Ja(_,i){const r=U.ref(i),s=new f.AnimationMixer(r.value),a=U.shallowReactive({});_.forEach(u=>{const h=s.clipAction(u,r.value);a[u.name]=h});const{onLoop:c}=ln.useRenderLoop();return c(({delta:u})=>{s.update(u)}),{actions:a,mixer:s}}let fi=null;function Ha(_,i){return r=>{i&&i(r),_.draco&&(fi||(fi=new Ga),fi.setDecoderPath(_.decoderPath||"https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),r.setDRACOLoader(fi))}}async function Nr(_,i={draco:!1},r){return await ln.useLoader(Go,_,Ha(i,r))}const el=U.defineComponent({name:"GLTFModel",props:{path:String,draco:Boolean,decoderPath:String},async setup(_){const i=U.inject("local-scene"),{scene:r}=await Nr(_.path,{draco:_.draco,decoderPath:_.decoderPath});return i!=null&&i.value&&i.value.add(r),()=>null}});async function Fr(_){return await ln.useLoader(ka,_)}const tl=U.defineComponent({name:"FBXModel",props:{path:{type:String,required:!0}},async setup(_,{expose:i}){const r=U.inject("local-scene");let s=null;function a(){return s}return i({getModel:a}),s=await Fr(_.path),r!=null&&r.value&&s.isObject3D&&r.value.add(s),()=>{}}}),nl=U.defineComponent({__name:"Text3D",props:{font:null,text:null,size:{default:.5},height:{default:.2},curveSegments:{default:5},bevelEnabled:{type:Boolean,default:!0},bevelThickness:{default:.05},bevelSize:{default:.02},bevelOffset:{default:0},bevelSegments:{default:4},center:{type:Boolean,default:!1}},async setup(_){let i,r;const s=_,{extend:a}=Er();a({TextGeometry:ga});const c=new Ba,u=U.useSlots(),h=U.computed(()=>{var y;return s.text?s.text:u.default?(y=u.default()[0].children)==null?void 0:y.trim():"TresJS"}),m=([i,r]=U.withAsyncContext(()=>new Promise((y,w)=>{try{typeof s.font=="string"?c.load(s.font,C=>{y(C)}):y(s.font)}catch(C){w(console.error("cientos",C))}})),i=await i,r(),i),g=U.computed(()=>({font:m,size:s.size,height:s.height,curveSegments:s.curveSegments,bevelEnabled:s.bevelEnabled,bevelThickness:s.bevelThickness,bevelSize:s.bevelSize,bevelOffset:s.bevelOffset,bevelSegments:s.bevelSegments}));return(y,w)=>{const C=U.resolveComponent("TresTextGeometry"),L=U.resolveComponent("TresMesh");return U.unref(m)?(U.openBlock(),U.createBlock(L,{key:0},{default:U.withCtx(()=>[U.unref(h)?(U.openBlock(),U.createBlock(C,{key:0,args:[U.unref(h),U.unref(g)],center:_.center},null,8,["args","center"])):U.createCommentVNode("",!0),U.renderSlot(y.$slots,"default")]),_:3})):U.createCommentVNode("",!0)}}}),il=U.defineComponent({__name:"Plane",props:{args:{default:()=>[1,1]},color:{default:"0xffffff"}},setup(_,{expose:i}){const r=U.shallowRef();return i({value:r}),(s,a)=>{const c=U.resolveComponent("TresPlaneGeometry"),u=U.resolveComponent("TresMeshBasicMaterial"),h=U.resolveComponent("TresMesh");return U.openBlock(),U.createBlock(h,U.mergeProps({ref_key:"planeRef",ref:r,rotation:[-Math.PI/2,0,0]},s.$attrs),{default:U.withCtx(()=>[U.createVNode(c,{args:_.args},null,8,["args"]),U.renderSlot(s.$slots,"default",{},()=>[U.createVNode(u,{color:_.color},null,8,["color"])])]),_:3},16,["rotation"])}}});Pe.FBXModel=tl,Pe.GLTFModel=el,Pe.OrbitControls=Ka,Pe.Plane=il,Pe.Text3D=nl,Pe.TransformControls=Ya,Pe.useAnimations=Ja,Pe.useFBX=Fr,Pe.useGLTF=Nr,Pe.useTweakPane=Wa,Object.defineProperty(Pe,Symbol.toStringTag,{value:"Module"})});
|