@tresjs/cientos 2.1.1 → 2.1.2

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.
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * name: @tresjs/cientos
3
- * version: v2.1.1
3
+ * version: v2.1.2
4
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(J,C){typeof exports=="object"&&typeof module<"u"?C(exports,require("vue"),require("@tresjs/core"),require("three")):typeof define=="function"&&define.amd?define(["exports","vue","@tresjs/core","three"],C):(J=typeof globalThis<"u"?globalThis:J||self,C(J.trescientos={},J.Vue,J.TresjsCore,J.Three))})(this,function(J,C,Me,f){"use strict";var $u=Object.defineProperty;var Xu=(J,C,Me)=>C in J?$u(J,C,{enumerable:!0,configurable:!0,writable:!0,value:Me}):J[C]=Me;var wr=(J,C,Me)=>(Xu(J,typeof C!="symbol"?C+"":C,Me),Me);function Uo(b,s){for(var r=0;r<s.length;r++){const n=s[r];if(typeof n!="string"&&!Array.isArray(n)){for(const o in n)if(o!=="default"&&!(o in b)){const l=Object.getOwnPropertyDescriptor(n,o);l&&Object.defineProperty(b,o,l.get?l:{enumerable:!0,get:()=>n[o]})}}}return Object.freeze(Object.defineProperty(b,Symbol.toStringTag,{value:"Module"}))}function jn(b){"@babel/helpers - typeof";return jn=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(s){return typeof s}:function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},jn(b)}function Ro(b,s){if(jn(b)!=="object"||b===null)return b;var r=b[Symbol.toPrimitive];if(r!==void 0){var n=r.call(b,s||"default");if(jn(n)!=="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(s==="string"?String:Number)(b)}function Go(b){var s=Ro(b,"string");return jn(s)==="symbol"?s:String(s)}function A(b,s,r){return s=Go(s),s in b?Object.defineProperty(b,s,{value:r,enumerable:!0,configurable:!0,writable:!0}):b[s]=r,b}function _r(b,s){if(s===f.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),b;if(s===f.TriangleFanDrawMode||s===f.TriangleStripDrawMode){let r=b.getIndex();if(r===null){const u=[],h=b.getAttribute("position");if(h!==void 0){for(let d=0;d<h.count;d++)u.push(d);b.setIndex(u),r=b.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),b}const n=r.count-2,o=[];if(r)if(s===f.TriangleFanDrawMode)for(let u=1;u<=n;u++)o.push(r.getX(0)),o.push(r.getX(u)),o.push(r.getX(u+1));else for(let u=0;u<n;u++)u%2===0?(o.push(r.getX(u)),o.push(r.getX(u+1)),o.push(r.getX(u+2))):(o.push(r.getX(u+2)),o.push(r.getX(u+1)),o.push(r.getX(u)));o.length/3!==n&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const l=b.clone();return l.setIndex(o),l.clearGroups(),l}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",s),b}var qe=Uint8Array,At=Uint16Array,ns=Uint32Array,yr=new qe([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]),xr=new qe([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]),Ko=new qe([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Cr=function(b,s){for(var r=new At(31),n=0;n<31;++n)r[n]=s+=1<<b[n-1];for(var o=new ns(r[30]),n=1;n<30;++n)for(var l=r[n];l<r[n+1];++l)o[l]=l-r[n]<<5|n;return[r,o]},Pr=Cr(yr,2),kr=Pr[0],$o=Pr[1];kr[28]=258,$o[258]=28;for(var Xo=Cr(xr,0),Yo=Xo[0],is=new At(32768),xe=0;xe<32768;++xe){var St=(xe&43690)>>>1|(xe&21845)<<1;St=(St&52428)>>>2|(St&13107)<<2,St=(St&61680)>>>4|(St&3855)<<4,is[xe]=((St&65280)>>>8|(St&255)<<8)>>>1}for(var Un=function(b,s,r){for(var n=b.length,o=0,l=new At(s);o<n;++o)++l[b[o]-1];var u=new At(s);for(o=0;o<s;++o)u[o]=u[o-1]+l[o-1]<<1;var h;if(r){h=new At(1<<s);var d=15-s;for(o=0;o<n;++o)if(b[o])for(var w=o<<4|b[o],_=s-b[o],y=u[b[o]-1]++<<_,x=y|(1<<_)-1;y<=x;++y)h[is[y]>>>d]=w}else for(h=new At(n),o=0;o<n;++o)b[o]&&(h[o]=is[u[b[o]-1]++]>>>15-b[o]);return h},Rn=new qe(288),xe=0;xe<144;++xe)Rn[xe]=8;for(var xe=144;xe<256;++xe)Rn[xe]=9;for(var xe=256;xe<280;++xe)Rn[xe]=7;for(var xe=280;xe<288;++xe)Rn[xe]=8;for(var Mr=new qe(32),xe=0;xe<32;++xe)Mr[xe]=5;var qo=Un(Rn,9,1),Qo=Un(Mr,5,1),ss=function(b){for(var s=b[0],r=1;r<b.length;++r)b[r]>s&&(s=b[r]);return s},it=function(b,s,r){var n=s/8|0;return(b[n]|b[n+1]<<8)>>(s&7)&r},rs=function(b,s){var r=s/8|0;return(b[r]|b[r+1]<<8|b[r+2]<<16)>>(s&7)},Zo=function(b){return(b/8|0)+(b&7&&1)},Wo=function(b,s,r){(s==null||s<0)&&(s=0),(r==null||r>b.length)&&(r=b.length);var n=new(b instanceof At?At:b instanceof ns?ns:qe)(r-s);return n.set(b.subarray(s,r)),n},Jo=function(b,s,r){var n=b.length;if(!n||r&&!r.l&&n<5)return s||new qe(0);var o=!s||r,l=!r||r.i;r||(r={}),s||(s=new qe(n*3));var u=function(Ve){var Te=s.length;if(Ve>Te){var _e=new qe(Math.max(Te*2,Ve));_e.set(s),s=_e}},h=r.f||0,d=r.p||0,w=r.b||0,_=r.l,y=r.d,x=r.m,M=r.n,T=n*8;do{if(!_){r.f=h=it(b,d,1);var D=it(b,d+1,3);if(d+=3,D)if(D==1)_=qo,y=Qo,x=9,M=5;else if(D==2){var N=it(b,d,31)+257,O=it(b,d+10,15)+4,Q=N+it(b,d+5,31)+1;d+=14;for(var $=new qe(Q),U=new qe(19),j=0;j<O;++j)U[Ko[j]]=it(b,d+j*3,7);d+=O*3;for(var X=ss(U),Y=(1<<X)-1,Z=Un(U,X,1),j=0;j<Q;){var ue=Z[it(b,d,Y)];d+=ue&15;var E=ue>>>4;if(E<16)$[j++]=E;else{var ge=0,pe=0;for(E==16?(pe=3+it(b,d,3),d+=2,ge=$[j-1]):E==17?(pe=3+it(b,d,7),d+=3):E==18&&(pe=11+it(b,d,127),d+=7);pe--;)$[j++]=ge}}var me=$.subarray(0,N),he=$.subarray(N);x=ss(me),M=ss(he),_=Un(me,x,1),y=Un(he,M,1)}else throw"invalid block type";else{var E=Zo(d)+4,F=b[E-4]|b[E-3]<<8,z=E+F;if(z>n){if(l)throw"unexpected EOF";break}o&&u(w+F),s.set(b.subarray(E,z),w),r.b=w+=F,r.p=d=z*8;continue}if(d>T){if(l)throw"unexpected EOF";break}}o&&u(w+131072);for(var te=(1<<x)-1,q=(1<<M)-1,Ce=d;;Ce=d){var ge=_[rs(b,d)&te],fe=ge>>>4;if(d+=ge&15,d>T){if(l)throw"unexpected EOF";break}if(!ge)throw"invalid length/literal";if(fe<256)s[w++]=fe;else if(fe==256){Ce=d,_=null;break}else{var le=fe-254;if(fe>264){var j=fe-257,ie=yr[j];le=it(b,d,(1<<ie)-1)+kr[j],d+=ie}var be=y[rs(b,d)&q],V=be>>>4;if(!be)throw"invalid distance";d+=be&15;var he=Yo[V];if(V>3){var ie=xr[V];he+=rs(b,d)&(1<<ie)-1,d+=ie}if(d>T){if(l)throw"unexpected EOF";break}o&&u(w+131072);for(var ce=w+le;w<ce;w+=4)s[w]=s[w-he],s[w+1]=s[w+1-he],s[w+2]=s[w+2-he],s[w+3]=s[w+3-he];w=ce}}r.l=_,r.p=Ce,r.b=w,_&&(h=1,r.m=x,r.d=y,r.n=M)}while(!h);return w==s.length?s:Wo(s,0,w)},Ho=new qe(0),ea=function(b){if((b[0]&15)!=8||b[0]>>>4>7||(b[0]<<8|b[1])%31)throw"invalid zlib data";if(b[1]&32)throw"invalid zlib data: preset dictionaries not supported"};function ta(b,s){return Jo((ea(b),b.subarray(2,-4)),s)}var na=typeof TextDecoder<"u"&&new TextDecoder,ia=0;try{na.decode(Ho,{stream:!0}),ia=1}catch{}class sa extends f.Object3D{constructor(s,r){super(),A(this,"isTransformControls",!0),A(this,"visible",!1),A(this,"domElement",void 0),A(this,"raycaster",new f.Raycaster),A(this,"gizmo",void 0),A(this,"plane",void 0),A(this,"tempVector",new f.Vector3),A(this,"tempVector2",new f.Vector3),A(this,"tempQuaternion",new f.Quaternion),A(this,"unit",{X:new f.Vector3(1,0,0),Y:new f.Vector3(0,1,0),Z:new f.Vector3(0,0,1)}),A(this,"pointStart",new f.Vector3),A(this,"pointEnd",new f.Vector3),A(this,"offset",new f.Vector3),A(this,"rotationAxis",new f.Vector3),A(this,"startNorm",new f.Vector3),A(this,"endNorm",new f.Vector3),A(this,"rotationAngle",0),A(this,"cameraPosition",new f.Vector3),A(this,"cameraQuaternion",new f.Quaternion),A(this,"cameraScale",new f.Vector3),A(this,"parentPosition",new f.Vector3),A(this,"parentQuaternion",new f.Quaternion),A(this,"parentQuaternionInv",new f.Quaternion),A(this,"parentScale",new f.Vector3),A(this,"worldPositionStart",new f.Vector3),A(this,"worldQuaternionStart",new f.Quaternion),A(this,"worldScaleStart",new f.Vector3),A(this,"worldPosition",new f.Vector3),A(this,"worldQuaternion",new f.Quaternion),A(this,"worldQuaternionInv",new f.Quaternion),A(this,"worldScale",new f.Vector3),A(this,"eye",new f.Vector3),A(this,"positionStart",new f.Vector3),A(this,"quaternionStart",new f.Quaternion),A(this,"scaleStart",new f.Vector3),A(this,"camera",void 0),A(this,"object",void 0),A(this,"enabled",!0),A(this,"axis",null),A(this,"mode","translate"),A(this,"translationSnap",null),A(this,"rotationSnap",null),A(this,"scaleSnap",null),A(this,"space","world"),A(this,"size",1),A(this,"dragging",!1),A(this,"showX",!0),A(this,"showY",!0),A(this,"showZ",!0),A(this,"changeEvent",{type:"change"}),A(this,"mouseDownEvent",{type:"mouseDown",mode:this.mode}),A(this,"mouseUpEvent",{type:"mouseUp",mode:this.mode}),A(this,"objectChangeEvent",{type:"objectChange"}),A(this,"intersectObjectWithRay",(o,l,u)=>{const h=l.intersectObject(o,!0);for(let d=0;d<h.length;d++)if(h[d].object.visible||u)return h[d];return!1}),A(this,"attach",o=>(this.object=o,this.visible=!0,this)),A(this,"detach",()=>(this.object=void 0,this.visible=!1,this.axis=null,this)),A(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),A(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()}),A(this,"pointerHover",o=>{if(this.object===void 0||this.dragging===!0)return;this.raycaster.setFromCamera(o,this.camera);const l=this.intersectObjectWithRay(this.gizmo.picker[this.mode],this.raycaster);l?this.axis=l.object.name:this.axis=null}),A(this,"pointerDown",o=>{if(!(this.object===void 0||this.dragging===!0||o.button!==0)&&this.axis!==null){this.raycaster.setFromCamera(o,this.camera);const l=this.intersectObjectWithRay(this.plane,this.raycaster,!0);if(l){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(l.point).sub(this.worldPositionStart)}this.dragging=!0,this.mouseDownEvent.mode=this.mode,this.dispatchEvent(this.mouseDownEvent)}}),A(this,"pointerMove",o=>{const l=this.axis,u=this.mode,h=this.object;let d=this.space;if(u==="scale"?d="local":(l==="E"||l==="XYZE"||l==="XYZ")&&(d="world"),h===void 0||l===null||this.dragging===!1||o.button!==-1)return;this.raycaster.setFromCamera(o,this.camera);const w=this.intersectObjectWithRay(this.plane,this.raycaster,!0);if(w){if(this.pointEnd.copy(w.point).sub(this.worldPositionStart),u==="translate")this.offset.copy(this.pointEnd).sub(this.pointStart),d==="local"&&l!=="XYZ"&&this.offset.applyQuaternion(this.worldQuaternionInv),l.indexOf("X")===-1&&(this.offset.x=0),l.indexOf("Y")===-1&&(this.offset.y=0),l.indexOf("Z")===-1&&(this.offset.z=0),d==="local"&&l!=="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&&(d==="local"&&(h.position.applyQuaternion(this.tempQuaternion.copy(this.quaternionStart).invert()),l.search("X")!==-1&&(h.position.x=Math.round(h.position.x/this.translationSnap)*this.translationSnap),l.search("Y")!==-1&&(h.position.y=Math.round(h.position.y/this.translationSnap)*this.translationSnap),l.search("Z")!==-1&&(h.position.z=Math.round(h.position.z/this.translationSnap)*this.translationSnap),h.position.applyQuaternion(this.quaternionStart)),d==="world"&&(h.parent&&h.position.add(this.tempVector.setFromMatrixPosition(h.parent.matrixWorld)),l.search("X")!==-1&&(h.position.x=Math.round(h.position.x/this.translationSnap)*this.translationSnap),l.search("Y")!==-1&&(h.position.y=Math.round(h.position.y/this.translationSnap)*this.translationSnap),l.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(l.search("XYZ")!==-1){let _=this.pointEnd.length()/this.pointStart.length();this.pointEnd.dot(this.pointStart)<0&&(_*=-1),this.tempVector2.set(_,_,_)}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),l.search("X")===-1&&(this.tempVector2.x=1),l.search("Y")===-1&&(this.tempVector2.y=1),l.search("Z")===-1&&(this.tempVector2.z=1);h.scale.copy(this.scaleStart).multiply(this.tempVector2),this.scaleSnap&&this.object&&(l.search("X")!==-1&&(this.object.scale.x=Math.round(h.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap),l.search("Y")!==-1&&(h.scale.y=Math.round(h.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap),l.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 _=20/this.worldPosition.distanceTo(this.tempVector.setFromMatrixPosition(this.camera.matrixWorld));l==="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):l==="XYZE"?(this.rotationAxis.copy(this.offset).cross(this.eye).normalize(),this.rotationAngle=this.offset.dot(this.tempVector.copy(this.rotationAxis).cross(this.eye))*_):(l==="X"||l==="Y"||l==="Z")&&(this.rotationAxis.copy(this.unit[l]),this.tempVector.copy(this.unit[l]),d==="local"&&this.tempVector.applyQuaternion(this.worldQuaternion),this.rotationAngle=this.offset.dot(this.tempVector.cross(this.eye).normalize())*_),this.rotationSnap&&(this.rotationAngle=Math.round(this.rotationAngle/this.rotationSnap)*this.rotationSnap),d==="local"&&l!=="E"&&l!=="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)}}),A(this,"pointerUp",o=>{o.button===0&&(this.dragging&&this.axis!==null&&(this.mouseUpEvent.mode=this.mode,this.dispatchEvent(this.mouseUpEvent)),this.dragging=!1,this.axis=null)}),A(this,"getPointer",o=>{var l;if(this.domElement&&(l=this.domElement.ownerDocument)!==null&&l!==void 0&&l.pointerLockElement)return{x:0,y:0,button:o.button};{var u;const h=o.changedTouches?o.changedTouches[0]:o,d=(u=this.domElement)===null||u===void 0?void 0:u.getBoundingClientRect();return{x:(h.clientX-d.left)/d.width*2-1,y:-(h.clientY-d.top)/d.height*2+1,button:o.button}}}),A(this,"onPointerHover",o=>{if(this.enabled)switch(o.pointerType){case"mouse":case"pen":this.pointerHover(this.getPointer(o));break}}),A(this,"onPointerDown",o=>{!this.enabled||!this.domElement||(this.domElement.style.touchAction="none",this.domElement.ownerDocument.addEventListener("pointermove",this.onPointerMove),this.pointerHover(this.getPointer(o)),this.pointerDown(this.getPointer(o)))}),A(this,"onPointerMove",o=>{this.enabled&&this.pointerMove(this.getPointer(o))}),A(this,"onPointerUp",o=>{!this.enabled||!this.domElement||(this.domElement.style.touchAction="",this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.pointerUp(this.getPointer(o)))}),A(this,"getMode",()=>this.mode),A(this,"setMode",o=>{this.mode=o}),A(this,"setTranslationSnap",o=>{this.translationSnap=o}),A(this,"setRotationSnap",o=>{this.rotationSnap=o}),A(this,"setScaleSnap",o=>{this.scaleSnap=o}),A(this,"setSize",o=>{this.size=o}),A(this,"setSpace",o=>{this.space=o}),A(this,"update",()=>{console.warn("THREE.TransformControls: update function has no more functionality and therefore has been deprecated.")}),A(this,"connect",o=>{o===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),this.domElement=o,this.domElement.addEventListener("pointerdown",this.onPointerDown),this.domElement.addEventListener("pointermove",this.onPointerHover),this.domElement.ownerDocument.addEventListener("pointerup",this.onPointerUp)}),A(this,"dispose",()=>{var o,l,u,h,d,w;(o=this.domElement)===null||o===void 0||o.removeEventListener("pointerdown",this.onPointerDown),(l=this.domElement)===null||l===void 0||l.removeEventListener("pointermove",this.onPointerHover),(u=this.domElement)===null||u===void 0||(h=u.ownerDocument)===null||h===void 0||h.removeEventListener("pointermove",this.onPointerMove),(d=this.domElement)===null||d===void 0||(w=d.ownerDocument)===null||w===void 0||w.removeEventListener("pointerup",this.onPointerUp),this.traverse(_=>{const y=_;y.geometry&&y.geometry.dispose(),y.material&&y.material.dispose()})}),this.domElement=r,this.camera=s,this.gizmo=new ra,this.add(this.gizmo),this.plane=new oa,this.add(this.plane);const n=(o,l)=>{let u=l;Object.defineProperty(this,o,{get:function(){return u!==void 0?u:l},set:function(h){u!==h&&(u=h,this.plane[o]=h,this.gizmo[o]=h,this.dispatchEvent({type:o+"-changed",value:h}),this.dispatchEvent(this.changeEvent))}}),this[o]=l,this.plane[o]=l,this.gizmo[o]=l};n("camera",this.camera),n("object",this.object),n("enabled",this.enabled),n("axis",this.axis),n("mode",this.mode),n("translationSnap",this.translationSnap),n("rotationSnap",this.rotationSnap),n("scaleSnap",this.scaleSnap),n("space",this.space),n("size",this.size),n("dragging",this.dragging),n("showX",this.showX),n("showY",this.showY),n("showZ",this.showZ),n("worldPosition",this.worldPosition),n("worldPositionStart",this.worldPositionStart),n("worldQuaternion",this.worldQuaternion),n("worldQuaternionStart",this.worldQuaternionStart),n("cameraPosition",this.cameraPosition),n("cameraQuaternion",this.cameraQuaternion),n("pointStart",this.pointStart),n("pointEnd",this.pointEnd),n("rotationAxis",this.rotationAxis),n("rotationAngle",this.rotationAngle),n("eye",this.eye),r!==void 0&&this.connect(r)}}class ra extends f.Object3D{constructor(){super(),A(this,"isTransformControlsGizmo",!0),A(this,"type","TransformControlsGizmo"),A(this,"tempVector",new f.Vector3(0,0,0)),A(this,"tempEuler",new f.Euler),A(this,"alignVector",new f.Vector3(0,1,0)),A(this,"zeroVector",new f.Vector3(0,0,0)),A(this,"lookAtMatrix",new f.Matrix4),A(this,"tempQuaternion",new f.Quaternion),A(this,"tempQuaternion2",new f.Quaternion),A(this,"identityQuaternion",new f.Quaternion),A(this,"unitX",new f.Vector3(1,0,0)),A(this,"unitY",new f.Vector3(0,1,0)),A(this,"unitZ",new f.Vector3(0,0,1)),A(this,"gizmo",void 0),A(this,"picker",void 0),A(this,"helper",void 0),A(this,"rotationAxis",new f.Vector3),A(this,"cameraPosition",new f.Vector3),A(this,"worldPositionStart",new f.Vector3),A(this,"worldQuaternionStart",new f.Quaternion),A(this,"worldPosition",new f.Vector3),A(this,"worldQuaternion",new f.Quaternion),A(this,"eye",new f.Vector3),A(this,"camera",null),A(this,"enabled",!0),A(this,"axis",null),A(this,"mode","translate"),A(this,"space","world"),A(this,"size",1),A(this,"dragging",!1),A(this,"showX",!0),A(this,"showY",!0),A(this,"showZ",!0),A(this,"updateMatrixWorld",()=>{let fe=this.space;this.mode==="scale"&&(fe="local");const le=fe==="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 ie=[];ie=ie.concat(this.picker[this.mode].children),ie=ie.concat(this.gizmo[this.mode].children),ie=ie.concat(this.helper[this.mode].children);for(let be=0;be<ie.length;be++){const V=ie[be];V.visible=!0,V.rotation.set(0,0,0),V.position.copy(this.worldPosition);let ce;if(this.camera.isOrthographicCamera?ce=(this.camera.top-this.camera.bottom)/this.camera.zoom:ce=this.worldPosition.distanceTo(this.cameraPosition)*Math.min(1.9*Math.tan(Math.PI*this.camera.fov/360)/this.camera.zoom,7),V.scale.set(1,1,1).multiplyScalar(ce*this.size/7),V.tag==="helper"){V.visible=!1,V.name==="AXIS"?(V.position.copy(this.worldPositionStart),V.visible=!!this.axis,this.axis==="X"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,0)),V.quaternion.copy(le).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(le).dot(this.eye))>.9&&(V.visible=!1)),this.axis==="Y"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,Math.PI/2)),V.quaternion.copy(le).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(le).dot(this.eye))>.9&&(V.visible=!1)),this.axis==="Z"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0)),V.quaternion.copy(le).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(le).dot(this.eye))>.9&&(V.visible=!1)),this.axis==="XYZE"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0)),this.alignVector.copy(this.rotationAxis),V.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.zeroVector,this.alignVector,this.unitY)),V.quaternion.multiply(this.tempQuaternion),V.visible=this.dragging),this.axis==="E"&&(V.visible=!1)):V.name==="START"?(V.position.copy(this.worldPositionStart),V.visible=this.dragging):V.name==="END"?(V.position.copy(this.worldPosition),V.visible=this.dragging):V.name==="DELTA"?(V.position.copy(this.worldPositionStart),V.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()),V.scale.copy(this.tempVector),V.visible=this.dragging):(V.quaternion.copy(le),this.dragging?V.position.copy(this.worldPositionStart):V.position.copy(this.worldPosition),this.axis&&(V.visible=this.axis.search(V.name)!==-1));continue}V.quaternion.copy(le),this.mode==="translate"||this.mode==="scale"?((V.name==="X"||V.name==="XYZX")&&Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(le).dot(this.eye))>.99&&(V.scale.set(1e-10,1e-10,1e-10),V.visible=!1),(V.name==="Y"||V.name==="XYZY")&&Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(le).dot(this.eye))>.99&&(V.scale.set(1e-10,1e-10,1e-10),V.visible=!1),(V.name==="Z"||V.name==="XYZZ")&&Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(le).dot(this.eye))>.99&&(V.scale.set(1e-10,1e-10,1e-10),V.visible=!1),V.name==="XY"&&Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(le).dot(this.eye))<.2&&(V.scale.set(1e-10,1e-10,1e-10),V.visible=!1),V.name==="YZ"&&Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(le).dot(this.eye))<.2&&(V.scale.set(1e-10,1e-10,1e-10),V.visible=!1),V.name==="XZ"&&Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(le).dot(this.eye))<.2&&(V.scale.set(1e-10,1e-10,1e-10),V.visible=!1),V.name.search("X")!==-1&&(this.alignVector.copy(this.unitX).applyQuaternion(le).dot(this.eye)<0?V.tag==="fwd"?V.visible=!1:V.scale.x*=-1:V.tag==="bwd"&&(V.visible=!1)),V.name.search("Y")!==-1&&(this.alignVector.copy(this.unitY).applyQuaternion(le).dot(this.eye)<0?V.tag==="fwd"?V.visible=!1:V.scale.y*=-1:V.tag==="bwd"&&(V.visible=!1)),V.name.search("Z")!==-1&&(this.alignVector.copy(this.unitZ).applyQuaternion(le).dot(this.eye)<0?V.tag==="fwd"?V.visible=!1:V.scale.z*=-1:V.tag==="bwd"&&(V.visible=!1))):this.mode==="rotate"&&(this.tempQuaternion2.copy(le),this.alignVector.copy(this.eye).applyQuaternion(this.tempQuaternion.copy(le).invert()),V.name.search("E")!==-1&&V.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.eye,this.zeroVector,this.unitY)),V.name==="X"&&(this.tempQuaternion.setFromAxisAngle(this.unitX,Math.atan2(-this.alignVector.y,this.alignVector.z)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),V.quaternion.copy(this.tempQuaternion)),V.name==="Y"&&(this.tempQuaternion.setFromAxisAngle(this.unitY,Math.atan2(this.alignVector.x,this.alignVector.z)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),V.quaternion.copy(this.tempQuaternion)),V.name==="Z"&&(this.tempQuaternion.setFromAxisAngle(this.unitZ,Math.atan2(this.alignVector.y,this.alignVector.x)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),V.quaternion.copy(this.tempQuaternion))),V.visible=V.visible&&(V.name.indexOf("X")===-1||this.showX),V.visible=V.visible&&(V.name.indexOf("Y")===-1||this.showY),V.visible=V.visible&&(V.name.indexOf("Z")===-1||this.showZ),V.visible=V.visible&&(V.name.indexOf("E")===-1||this.showX&&this.showY&&this.showZ),V.material.tempOpacity=V.material.tempOpacity||V.material.opacity,V.material.tempColor=V.material.tempColor||V.material.color.clone(),V.material.color.copy(V.material.tempColor),V.material.opacity=V.material.tempOpacity,this.enabled?this.axis&&(V.name===this.axis?(V.material.opacity=1,V.material.color.lerp(new f.Color(1,1,1),.5)):this.axis.split("").some(function(Ve){return V.name===Ve})?(V.material.opacity=1,V.material.color.lerp(new f.Color(1,1,1),.5)):(V.material.opacity*=.25,V.material.color.lerp(new f.Color(1,1,1),.5))):(V.material.opacity*=.5,V.material.color.lerp(new f.Color(1,1,1),.5))}super.updateMatrixWorld()});const s=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}),n=s.clone();n.opacity=.15;const o=s.clone();o.opacity=.33;const l=s.clone();l.color.set(16711680);const u=s.clone();u.color.set(65280);const h=s.clone();h.color.set(255);const d=s.clone();d.opacity=.25;const w=d.clone();w.color.set(16776960);const _=d.clone();_.color.set(65535);const y=d.clone();y.color.set(16711935),s.clone().color.set(16776960);const M=r.clone();M.color.set(16711680);const T=r.clone();T.color.set(65280);const D=r.clone();D.color.set(255);const E=r.clone();E.color.set(65535);const F=r.clone();F.color.set(16711935);const z=r.clone();z.color.set(16776960);const N=r.clone();N.color.set(7895160);const O=z.clone();O.opacity=.25;const Q=new f.CylinderGeometry(0,.05,.2,12,1,!1),$=new f.BoxGeometry(.125,.125,.125),U=new f.BufferGeometry;U.setAttribute("position",new f.Float32BufferAttribute([0,0,0,1,0,0],3));const j=(fe,le)=>{const ie=new f.BufferGeometry,be=[];for(let V=0;V<=64*le;++V)be.push(0,Math.cos(V/32*Math.PI)*fe,Math.sin(V/32*Math.PI)*fe);return ie.setAttribute("position",new f.Float32BufferAttribute(be,3)),ie},X=()=>{const fe=new f.BufferGeometry;return fe.setAttribute("position",new f.Float32BufferAttribute([0,0,0,1,1,1],3)),fe},Y={X:[[new f.Mesh(Q,l),[1,0,0],[0,0,-Math.PI/2],null,"fwd"],[new f.Mesh(Q,l),[1,0,0],[0,0,Math.PI/2],null,"bwd"],[new f.Line(U,M)]],Y:[[new f.Mesh(Q,u),[0,1,0],null,null,"fwd"],[new f.Mesh(Q,u),[0,1,0],[Math.PI,0,0],null,"bwd"],[new f.Line(U,T),null,[0,0,Math.PI/2]]],Z:[[new f.Mesh(Q,h),[0,0,1],[Math.PI/2,0,0],null,"fwd"],[new f.Mesh(Q,h),[0,0,1],[-Math.PI/2,0,0],null,"bwd"],[new f.Line(U,D),null,[0,-Math.PI/2,0]]],XYZ:[[new f.Mesh(new f.OctahedronGeometry(.1,0),d.clone()),[0,0,0],[0,0,0]]],XY:[[new f.Mesh(new f.PlaneGeometry(.295,.295),w.clone()),[.15,.15,0]],[new f.Line(U,z),[.18,.3,0],null,[.125,1,1]],[new f.Line(U,z),[.3,.18,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new f.Mesh(new f.PlaneGeometry(.295,.295),_.clone()),[0,.15,.15],[0,Math.PI/2,0]],[new f.Line(U,E),[0,.18,.3],[0,0,Math.PI/2],[.125,1,1]],[new f.Line(U,E),[0,.3,.18],[0,-Math.PI/2,0],[.125,1,1]]],XZ:[[new f.Mesh(new f.PlaneGeometry(.295,.295),y.clone()),[.15,0,.15],[-Math.PI/2,0,0]],[new f.Line(U,F),[.18,0,.3],null,[.125,1,1]],[new f.Line(U,F),[.3,0,.18],[0,-Math.PI/2,0],[.125,1,1]]]},Z={X:[[new f.Mesh(new f.CylinderGeometry(.2,0,1,4,1,!1),n),[.6,0,0],[0,0,-Math.PI/2]]],Y:[[new f.Mesh(new f.CylinderGeometry(.2,0,1,4,1,!1),n),[0,.6,0]]],Z:[[new f.Mesh(new f.CylinderGeometry(.2,0,1,4,1,!1),n),[0,0,.6],[Math.PI/2,0,0]]],XYZ:[[new f.Mesh(new f.OctahedronGeometry(.2,0),n)]],XY:[[new f.Mesh(new f.PlaneGeometry(.4,.4),n),[.2,.2,0]]],YZ:[[new f.Mesh(new f.PlaneGeometry(.4,.4),n),[0,.2,.2],[0,Math.PI/2,0]]],XZ:[[new f.Mesh(new f.PlaneGeometry(.4,.4),n),[.2,0,.2],[-Math.PI/2,0,0]]]},ue={START:[[new f.Mesh(new f.OctahedronGeometry(.01,2),o),null,null,null,"helper"]],END:[[new f.Mesh(new f.OctahedronGeometry(.01,2),o),null,null,null,"helper"]],DELTA:[[new f.Line(X(),o),null,null,null,"helper"]],X:[[new f.Line(U,o.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new f.Line(U,o.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new f.Line(U,o.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},ge={X:[[new f.Line(j(1,.5),M)],[new f.Mesh(new f.OctahedronGeometry(.04,0),l),[0,0,.99],null,[1,3,1]]],Y:[[new f.Line(j(1,.5),T),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(j(1,.5),D),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(j(1.25,1),O),null,[0,Math.PI/2,0]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),O),[1.17,0,0],[0,0,-Math.PI/2],[1,1,.001]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),O),[-1.17,0,0],[0,0,Math.PI/2],[1,1,.001]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),O),[0,-1.17,0],[Math.PI,0,0],[1,1,.001]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),O),[0,1.17,0],[0,0,0],[1,1,.001]]],XYZE:[[new f.Line(j(1,1),N),null,[0,Math.PI/2,0]]]},pe={AXIS:[[new f.Line(U,o.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]]},me={X:[[new f.Mesh(new f.TorusGeometry(1,.1,4,24),n),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],Y:[[new f.Mesh(new f.TorusGeometry(1,.1,4,24),n),[0,0,0],[Math.PI/2,0,0]]],Z:[[new f.Mesh(new f.TorusGeometry(1,.1,4,24),n),[0,0,0],[0,0,-Math.PI/2]]],E:[[new f.Mesh(new f.TorusGeometry(1.25,.1,2,24),n)]],XYZE:[[new f.Mesh(new f.SphereGeometry(.7,10,8),n)]]},he={X:[[new f.Mesh($,l),[.8,0,0],[0,0,-Math.PI/2]],[new f.Line(U,M),null,null,[.8,1,1]]],Y:[[new f.Mesh($,u),[0,.8,0]],[new f.Line(U,T),null,[0,0,Math.PI/2],[.8,1,1]]],Z:[[new f.Mesh($,h),[0,0,.8],[Math.PI/2,0,0]],[new f.Line(U,D),null,[0,-Math.PI/2,0],[.8,1,1]]],XY:[[new f.Mesh($,w),[.85,.85,0],null,[2,2,.2]],[new f.Line(U,z),[.855,.98,0],null,[.125,1,1]],[new f.Line(U,z),[.98,.855,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new f.Mesh($,_),[0,.85,.85],null,[.2,2,2]],[new f.Line(U,E),[0,.855,.98],[0,0,Math.PI/2],[.125,1,1]],[new f.Line(U,E),[0,.98,.855],[0,-Math.PI/2,0],[.125,1,1]]],XZ:[[new f.Mesh($,y),[.85,0,.85],null,[2,.2,2]],[new f.Line(U,F),[.855,0,.98],null,[.125,1,1]],[new f.Line(U,F),[.98,0,.855],[0,-Math.PI/2,0],[.125,1,1]]],XYZX:[[new f.Mesh(new f.BoxGeometry(.125,.125,.125),d.clone()),[1.1,0,0]]],XYZY:[[new f.Mesh(new f.BoxGeometry(.125,.125,.125),d.clone()),[0,1.1,0]]],XYZZ:[[new f.Mesh(new f.BoxGeometry(.125,.125,.125),d.clone()),[0,0,1.1]]]},te={X:[[new f.Mesh(new f.CylinderGeometry(.2,0,.8,4,1,!1),n),[.5,0,0],[0,0,-Math.PI/2]]],Y:[[new f.Mesh(new f.CylinderGeometry(.2,0,.8,4,1,!1),n),[0,.5,0]]],Z:[[new f.Mesh(new f.CylinderGeometry(.2,0,.8,4,1,!1),n),[0,0,.5],[Math.PI/2,0,0]]],XY:[[new f.Mesh($,n),[.85,.85,0],null,[3,3,.2]]],YZ:[[new f.Mesh($,n),[0,.85,.85],null,[.2,3,3]]],XZ:[[new f.Mesh($,n),[.85,0,.85],null,[3,.2,3]]],XYZX:[[new f.Mesh(new f.BoxGeometry(.2,.2,.2),n),[1.1,0,0]]],XYZY:[[new f.Mesh(new f.BoxGeometry(.2,.2,.2),n),[0,1.1,0]]],XYZZ:[[new f.Mesh(new f.BoxGeometry(.2,.2,.2),n),[0,0,1.1]]]},q={X:[[new f.Line(U,o.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new f.Line(U,o.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new f.Line(U,o.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},Ce=fe=>{const le=new f.Object3D;for(let ie in fe)for(let be=fe[ie].length;be--;){const V=fe[ie][be][0].clone(),ce=fe[ie][be][1],Ve=fe[ie][be][2],Te=fe[ie][be][3],_e=fe[ie][be][4];V.name=ie,V.tag=_e,ce&&V.position.set(ce[0],ce[1],ce[2]),Ve&&V.rotation.set(Ve[0],Ve[1],Ve[2]),Te&&V.scale.set(Te[0],Te[1],Te[2]),V.updateMatrix();const Ze=V.geometry.clone();Ze.applyMatrix4(V.matrix),V.geometry=Ze,V.renderOrder=1/0,V.position.set(0,0,0),V.rotation.set(0,0,0),V.scale.set(1,1,1),le.add(V)}return le};this.gizmo={},this.picker={},this.helper={},this.add(this.gizmo.translate=Ce(Y)),this.add(this.gizmo.rotate=Ce(ge)),this.add(this.gizmo.scale=Ce(he)),this.add(this.picker.translate=Ce(Z)),this.add(this.picker.rotate=Ce(me)),this.add(this.picker.scale=Ce(te)),this.add(this.helper.translate=Ce(ue)),this.add(this.helper.rotate=Ce(pe)),this.add(this.helper.scale=Ce(q)),this.picker.translate.visible=!1,this.picker.rotate.visible=!1,this.picker.scale.visible=!1}}class oa 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})),A(this,"isTransformControlsPlane",!0),A(this,"type","TransformControlsPlane"),A(this,"unitX",new f.Vector3(1,0,0)),A(this,"unitY",new f.Vector3(0,1,0)),A(this,"unitZ",new f.Vector3(0,0,1)),A(this,"tempVector",new f.Vector3),A(this,"dirVector",new f.Vector3),A(this,"alignVector",new f.Vector3),A(this,"tempMatrix",new f.Matrix4),A(this,"identityQuaternion",new f.Quaternion),A(this,"cameraQuaternion",new f.Quaternion),A(this,"worldPosition",new f.Vector3),A(this,"worldQuaternion",new f.Quaternion),A(this,"eye",new f.Vector3),A(this,"axis",null),A(this,"mode","translate"),A(this,"space","world"),A(this,"updateMatrixWorld",()=>{let s=this.space;switch(this.position.copy(this.worldPosition),this.mode==="scale"&&(s="local"),this.unitX.set(1,0,0).applyQuaternion(s==="local"?this.worldQuaternion:this.identityQuaternion),this.unitY.set(0,1,0).applyQuaternion(s==="local"?this.worldQuaternion:this.identityQuaternion),this.unitZ.set(0,0,1).applyQuaternion(s==="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 mn=new f.Euler(0,0,0,"YXZ"),fn=new f.Vector3,aa={type:"change"},la={type:"lock"},ca={type:"unlock"},Ar=Math.PI/2;class pa extends f.EventDispatcher{constructor(s,r){super(),A(this,"camera",void 0),A(this,"domElement",void 0),A(this,"isLocked",void 0),A(this,"minPolarAngle",void 0),A(this,"maxPolarAngle",void 0),A(this,"pointerSpeed",void 0),A(this,"onMouseMove",n=>{if(!this.domElement||this.isLocked===!1)return;const o=n.movementX||n.mozMovementX||n.webkitMovementX||0,l=n.movementY||n.mozMovementY||n.webkitMovementY||0;mn.setFromQuaternion(this.camera.quaternion),mn.y-=o*.002*this.pointerSpeed,mn.x-=l*.002*this.pointerSpeed,mn.x=Math.max(Ar-this.maxPolarAngle,Math.min(Ar-this.minPolarAngle,mn.x)),this.camera.quaternion.setFromEuler(mn),this.dispatchEvent(aa)}),A(this,"onPointerlockChange",()=>{this.domElement&&(this.domElement.ownerDocument.pointerLockElement===this.domElement?(this.dispatchEvent(la),this.isLocked=!0):(this.dispatchEvent(ca),this.isLocked=!1))}),A(this,"onPointerlockError",()=>{console.error("THREE.PointerLockControls: Unable to use Pointer Lock API")}),A(this,"connect",n=>{this.domElement=n||this.domElement,this.domElement&&(this.domElement.ownerDocument.addEventListener("mousemove",this.onMouseMove),this.domElement.ownerDocument.addEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.addEventListener("pointerlockerror",this.onPointerlockError))}),A(this,"disconnect",()=>{this.domElement&&(this.domElement.ownerDocument.removeEventListener("mousemove",this.onMouseMove),this.domElement.ownerDocument.removeEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.removeEventListener("pointerlockerror",this.onPointerlockError))}),A(this,"dispose",()=>{this.disconnect()}),A(this,"getObject",()=>this.camera),A(this,"direction",new f.Vector3(0,0,-1)),A(this,"getDirection",n=>n.copy(this.direction).applyQuaternion(this.camera.quaternion)),A(this,"moveForward",n=>{fn.setFromMatrixColumn(this.camera.matrix,0),fn.crossVectors(this.camera.up,fn),this.camera.position.addScaledVector(fn,n)}),A(this,"moveRight",n=>{fn.setFromMatrixColumn(this.camera.matrix,0),this.camera.position.addScaledVector(fn,n)}),A(this,"lock",()=>{this.domElement&&this.domElement.requestPointerLock()}),A(this,"unlock",()=>{this.domElement&&this.domElement.ownerDocument.exitPointerLock()}),this.camera=s,this.domElement=r,this.isLocked=!1,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.pointerSpeed=1,r&&this.connect(r)}}const Sr=(b,s)=>(b%s+s)%s;class Lr extends f.EventDispatcher{constructor(s,r){super(),A(this,"object",void 0),A(this,"domElement",void 0),A(this,"enabled",!0),A(this,"target",new f.Vector3),A(this,"minDistance",0),A(this,"maxDistance",1/0),A(this,"minZoom",0),A(this,"maxZoom",1/0),A(this,"minPolarAngle",0),A(this,"maxPolarAngle",Math.PI),A(this,"minAzimuthAngle",-1/0),A(this,"maxAzimuthAngle",1/0),A(this,"enableDamping",!1),A(this,"dampingFactor",.05),A(this,"enableZoom",!0),A(this,"zoomSpeed",1),A(this,"enableRotate",!0),A(this,"rotateSpeed",1),A(this,"enablePan",!0),A(this,"panSpeed",1),A(this,"screenSpacePanning",!0),A(this,"keyPanSpeed",7),A(this,"autoRotate",!1),A(this,"autoRotateSpeed",2),A(this,"reverseOrbit",!1),A(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),A(this,"mouseButtons",{LEFT:f.MOUSE.ROTATE,MIDDLE:f.MOUSE.DOLLY,RIGHT:f.MOUSE.PAN}),A(this,"touches",{ONE:f.TOUCH.ROTATE,TWO:f.TOUCH.DOLLY_PAN}),A(this,"target0",void 0),A(this,"position0",void 0),A(this,"zoom0",void 0),A(this,"_domElementKeyEvents",null),A(this,"getPolarAngle",void 0),A(this,"getAzimuthalAngle",void 0),A(this,"setPolarAngle",void 0),A(this,"setAzimuthalAngle",void 0),A(this,"getDistance",void 0),A(this,"listenToKeyEvents",void 0),A(this,"saveState",void 0),A(this,"reset",void 0),A(this,"update",void 0),A(this,"connect",void 0),A(this,"dispose",void 0),this.object=s,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=()=>_.phi,this.getAzimuthalAngle=()=>_.theta,this.setPolarAngle=I=>{let K=Sr(I,2*Math.PI),H=_.phi;H<0&&(H+=2*Math.PI),K<0&&(K+=2*Math.PI);let se=Math.abs(K-H);2*Math.PI-se<se&&(K<H?K+=2*Math.PI:H+=2*Math.PI),y.phi=K-H,n.update()},this.setAzimuthalAngle=I=>{let K=Sr(I,2*Math.PI),H=_.theta;H<0&&(H+=2*Math.PI),K<0&&(K+=2*Math.PI);let se=Math.abs(K-H);2*Math.PI-se<se&&(K<H?K+=2*Math.PI:H+=2*Math.PI),y.theta=K-H,n.update()},this.getDistance=()=>n.object.position.distanceTo(n.target),this.listenToKeyEvents=I=>{I.addEventListener("keydown",ut),this._domElementKeyEvents=I},this.saveState=()=>{n.target0.copy(n.target),n.position0.copy(n.object.position),n.zoom0=n.object instanceof f.PerspectiveCamera?n.object.zoom:1},this.reset=()=>{n.target.copy(n.target0),n.object.position.copy(n.position0),n.object instanceof f.PerspectiveCamera&&(n.object.zoom=n.zoom0,n.object.updateProjectionMatrix()),n.dispatchEvent(o),n.update(),d=h.NONE},this.update=(()=>{const I=new f.Vector3,K=new f.Quaternion().setFromUnitVectors(s.up,new f.Vector3(0,1,0)),H=K.clone().invert(),se=new f.Vector3,ye=new f.Quaternion,De=2*Math.PI;return function(){const qt=n.object.position;I.copy(qt).sub(n.target),I.applyQuaternion(K),_.setFromVector3(I),n.autoRotate&&d===h.NONE&&ue(Y()),n.enableDamping?(_.theta+=y.theta*n.dampingFactor,_.phi+=y.phi*n.dampingFactor):(_.theta+=y.theta,_.phi+=y.phi);let Be=n.minAzimuthAngle,Ne=n.maxAzimuthAngle;return isFinite(Be)&&isFinite(Ne)&&(Be<-Math.PI?Be+=De:Be>Math.PI&&(Be-=De),Ne<-Math.PI?Ne+=De:Ne>Math.PI&&(Ne-=De),Be<=Ne?_.theta=Math.max(Be,Math.min(Ne,_.theta)):_.theta=_.theta>(Be+Ne)/2?Math.max(Be,_.theta):Math.min(Ne,_.theta)),_.phi=Math.max(n.minPolarAngle,Math.min(n.maxPolarAngle,_.phi)),_.makeSafe(),_.radius*=x,_.radius=Math.max(n.minDistance,Math.min(n.maxDistance,_.radius)),n.enableDamping===!0?n.target.addScaledVector(M,n.dampingFactor):n.target.add(M),I.setFromSpherical(_),I.applyQuaternion(H),qt.copy(n.target).add(I),n.object.lookAt(n.target),n.enableDamping===!0?(y.theta*=1-n.dampingFactor,y.phi*=1-n.dampingFactor,M.multiplyScalar(1-n.dampingFactor)):(y.set(0,0,0),M.set(0,0,0)),x=1,T||se.distanceToSquared(n.object.position)>w||8*(1-ye.dot(n.object.quaternion))>w?(n.dispatchEvent(o),se.copy(n.object.position),ye.copy(n.object.quaternion),T=!1,!0):!1}})(),this.connect=I=>{I===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),n.domElement=I,n.domElement.style.touchAction="none",n.domElement.addEventListener("contextmenu",Yt),n.domElement.addEventListener("pointerdown",We),n.domElement.addEventListener("pointercancel",_n),n.domElement.addEventListener("wheel",xn)},this.dispose=()=>{var I,K,H,se,ye,De;(I=n.domElement)===null||I===void 0||I.removeEventListener("contextmenu",Yt),(K=n.domElement)===null||K===void 0||K.removeEventListener("pointerdown",We),(H=n.domElement)===null||H===void 0||H.removeEventListener("pointercancel",_n),(se=n.domElement)===null||se===void 0||se.removeEventListener("wheel",xn),(ye=n.domElement)===null||ye===void 0||ye.ownerDocument.removeEventListener("pointermove",Xt),(De=n.domElement)===null||De===void 0||De.ownerDocument.removeEventListener("pointerup",ot),n._domElementKeyEvents!==null&&n._domElementKeyEvents.removeEventListener("keydown",ut)};const n=this,o={type:"change"},l={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 d=h.NONE;const w=1e-6,_=new f.Spherical,y=new f.Spherical;let x=1;const M=new f.Vector3;let T=!1;const D=new f.Vector2,E=new f.Vector2,F=new f.Vector2,z=new f.Vector2,N=new f.Vector2,O=new f.Vector2,Q=new f.Vector2,$=new f.Vector2,U=new f.Vector2,j=[],X={};function Y(){return 2*Math.PI/60/60*n.autoRotateSpeed}function Z(){return Math.pow(.95,n.zoomSpeed)}function ue(I){n.reverseOrbit?y.theta+=I:y.theta-=I}function ge(I){n.reverseOrbit?y.phi+=I:y.phi-=I}const pe=(()=>{const I=new f.Vector3;return function(H,se){I.setFromMatrixColumn(se,0),I.multiplyScalar(-H),M.add(I)}})(),me=(()=>{const I=new f.Vector3;return function(H,se){n.screenSpacePanning===!0?I.setFromMatrixColumn(se,1):(I.setFromMatrixColumn(se,0),I.crossVectors(n.object.up,I)),I.multiplyScalar(H),M.add(I)}})(),he=(()=>{const I=new f.Vector3;return function(H,se){const ye=n.domElement;if(ye&&n.object instanceof f.PerspectiveCamera&&n.object.isPerspectiveCamera){const De=n.object.position;I.copy(De).sub(n.target);let Dt=I.length();Dt*=Math.tan(n.object.fov/2*Math.PI/180),pe(2*H*Dt/ye.clientHeight,n.object.matrix),me(2*se*Dt/ye.clientHeight,n.object.matrix)}else ye&&n.object instanceof f.OrthographicCamera&&n.object.isOrthographicCamera?(pe(H*(n.object.right-n.object.left)/n.object.zoom/ye.clientWidth,n.object.matrix),me(se*(n.object.top-n.object.bottom)/n.object.zoom/ye.clientHeight,n.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),n.enablePan=!1)}})();function te(I){n.object instanceof f.PerspectiveCamera&&n.object.isPerspectiveCamera?x/=I:n.object instanceof f.OrthographicCamera&&n.object.isOrthographicCamera?(n.object.zoom=Math.max(n.minZoom,Math.min(n.maxZoom,n.object.zoom*I)),n.object.updateProjectionMatrix(),T=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),n.enableZoom=!1)}function q(I){n.object instanceof f.PerspectiveCamera&&n.object.isPerspectiveCamera?x*=I:n.object instanceof f.OrthographicCamera&&n.object.isOrthographicCamera?(n.object.zoom=Math.max(n.minZoom,Math.min(n.maxZoom,n.object.zoom/I)),n.object.updateProjectionMatrix(),T=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),n.enableZoom=!1)}function Ce(I){D.set(I.clientX,I.clientY)}function fe(I){Q.set(I.clientX,I.clientY)}function le(I){z.set(I.clientX,I.clientY)}function ie(I){E.set(I.clientX,I.clientY),F.subVectors(E,D).multiplyScalar(n.rotateSpeed);const K=n.domElement;K&&(ue(2*Math.PI*F.x/K.clientHeight),ge(2*Math.PI*F.y/K.clientHeight)),D.copy(E),n.update()}function be(I){$.set(I.clientX,I.clientY),U.subVectors($,Q),U.y>0?te(Z()):U.y<0&&q(Z()),Q.copy($),n.update()}function V(I){N.set(I.clientX,I.clientY),O.subVectors(N,z).multiplyScalar(n.panSpeed),he(O.x,O.y),z.copy(N),n.update()}function ce(I){I.deltaY<0?q(Z()):I.deltaY>0&&te(Z()),n.update()}function Ve(I){let K=!1;switch(I.code){case n.keys.UP:he(0,n.keyPanSpeed),K=!0;break;case n.keys.BOTTOM:he(0,-n.keyPanSpeed),K=!0;break;case n.keys.LEFT:he(n.keyPanSpeed,0),K=!0;break;case n.keys.RIGHT:he(-n.keyPanSpeed,0),K=!0;break}K&&(I.preventDefault(),n.update())}function Te(){if(j.length==1)D.set(j[0].pageX,j[0].pageY);else{const I=.5*(j[0].pageX+j[1].pageX),K=.5*(j[0].pageY+j[1].pageY);D.set(I,K)}}function _e(){if(j.length==1)z.set(j[0].pageX,j[0].pageY);else{const I=.5*(j[0].pageX+j[1].pageX),K=.5*(j[0].pageY+j[1].pageY);z.set(I,K)}}function Ze(){const I=j[0].pageX-j[1].pageX,K=j[0].pageY-j[1].pageY,H=Math.sqrt(I*I+K*K);Q.set(0,H)}function gn(){n.enableZoom&&Ze(),n.enablePan&&_e()}function Ue(){n.enableZoom&&Ze(),n.enableRotate&&Te()}function wn(I){if(j.length==1)E.set(I.pageX,I.pageY);else{const H=gt(I),se=.5*(I.pageX+H.x),ye=.5*(I.pageY+H.y);E.set(se,ye)}F.subVectors(E,D).multiplyScalar(n.rotateSpeed);const K=n.domElement;K&&(ue(2*Math.PI*F.x/K.clientHeight),ge(2*Math.PI*F.y/K.clientHeight)),D.copy(E)}function $t(I){if(j.length==1)N.set(I.pageX,I.pageY);else{const K=gt(I),H=.5*(I.pageX+K.x),se=.5*(I.pageY+K.y);N.set(H,se)}O.subVectors(N,z).multiplyScalar(n.panSpeed),he(O.x,O.y),z.copy(N)}function rt(I){const K=gt(I),H=I.pageX-K.x,se=I.pageY-K.y,ye=Math.sqrt(H*H+se*se);$.set(0,ye),U.set(0,Math.pow($.y/Q.y,n.zoomSpeed)),te(U.y),Q.copy($)}function vt(I){n.enableZoom&&rt(I),n.enablePan&&$t(I)}function Oe(I){n.enableZoom&&rt(I),n.enableRotate&&wn(I)}function We(I){if(n.enabled!==!1){if(j.length===0){var K,H;(K=n.domElement)===null||K===void 0||K.ownerDocument.addEventListener("pointermove",Xt),(H=n.domElement)===null||H===void 0||H.ownerDocument.addEventListener("pointerup",ot)}Pn(I),I.pointerType==="touch"?bt(I):$n(I)}}function Xt(I){n.enabled!==!1&&(I.pointerType==="touch"?Cn(I):yn(I))}function ot(I){if(ht(I),j.length===0){var K,H,se;(K=n.domElement)===null||K===void 0||K.releasePointerCapture(I.pointerId),(H=n.domElement)===null||H===void 0||H.ownerDocument.removeEventListener("pointermove",Xt),(se=n.domElement)===null||se===void 0||se.ownerDocument.removeEventListener("pointerup",ot)}n.dispatchEvent(u),d=h.NONE}function _n(I){ht(I)}function $n(I){let K;switch(I.button){case 0:K=n.mouseButtons.LEFT;break;case 1:K=n.mouseButtons.MIDDLE;break;case 2:K=n.mouseButtons.RIGHT;break;default:K=-1}switch(K){case f.MOUSE.DOLLY:if(n.enableZoom===!1)return;fe(I),d=h.DOLLY;break;case f.MOUSE.ROTATE:if(I.ctrlKey||I.metaKey||I.shiftKey){if(n.enablePan===!1)return;le(I),d=h.PAN}else{if(n.enableRotate===!1)return;Ce(I),d=h.ROTATE}break;case f.MOUSE.PAN:if(I.ctrlKey||I.metaKey||I.shiftKey){if(n.enableRotate===!1)return;Ce(I),d=h.ROTATE}else{if(n.enablePan===!1)return;le(I),d=h.PAN}break;default:d=h.NONE}d!==h.NONE&&n.dispatchEvent(l)}function yn(I){if(n.enabled!==!1)switch(d){case h.ROTATE:if(n.enableRotate===!1)return;ie(I);break;case h.DOLLY:if(n.enableZoom===!1)return;be(I);break;case h.PAN:if(n.enablePan===!1)return;V(I);break}}function xn(I){n.enabled===!1||n.enableZoom===!1||d!==h.NONE&&d!==h.ROTATE||(I.preventDefault(),n.dispatchEvent(l),ce(I),n.dispatchEvent(u))}function ut(I){n.enabled===!1||n.enablePan===!1||Ve(I)}function bt(I){switch(at(I),j.length){case 1:switch(n.touches.ONE){case f.TOUCH.ROTATE:if(n.enableRotate===!1)return;Te(),d=h.TOUCH_ROTATE;break;case f.TOUCH.PAN:if(n.enablePan===!1)return;_e(),d=h.TOUCH_PAN;break;default:d=h.NONE}break;case 2:switch(n.touches.TWO){case f.TOUCH.DOLLY_PAN:if(n.enableZoom===!1&&n.enablePan===!1)return;gn(),d=h.TOUCH_DOLLY_PAN;break;case f.TOUCH.DOLLY_ROTATE:if(n.enableZoom===!1&&n.enableRotate===!1)return;Ue(),d=h.TOUCH_DOLLY_ROTATE;break;default:d=h.NONE}break;default:d=h.NONE}d!==h.NONE&&n.dispatchEvent(l)}function Cn(I){switch(at(I),d){case h.TOUCH_ROTATE:if(n.enableRotate===!1)return;wn(I),n.update();break;case h.TOUCH_PAN:if(n.enablePan===!1)return;$t(I),n.update();break;case h.TOUCH_DOLLY_PAN:if(n.enableZoom===!1&&n.enablePan===!1)return;vt(I),n.update();break;case h.TOUCH_DOLLY_ROTATE:if(n.enableZoom===!1&&n.enableRotate===!1)return;Oe(I),n.update();break;default:d=h.NONE}}function Yt(I){n.enabled!==!1&&I.preventDefault()}function Pn(I){j.push(I)}function ht(I){delete X[I.pointerId];for(let K=0;K<j.length;K++)if(j[K].pointerId==I.pointerId){j.splice(K,1);return}}function at(I){let K=X[I.pointerId];K===void 0&&(K=new f.Vector2,X[I.pointerId]=K),K.set(I.pageX,I.pageY)}function gt(I){const K=I.pointerId===j[0].pointerId?j[1]:j[0];return X[K.pointerId]}r!==void 0&&this.connect(r),this.update()}}class ua extends Lr{constructor(s,r){super(s,r),this.screenSpacePanning=!1,this.mouseButtons.LEFT=f.MOUSE.PAN,this.mouseButtons.RIGHT=f.MOUSE.ROTATE,this.touches.ONE=f.TOUCH.PAN,this.touches.TWO=f.TOUCH.DOLLY_ROTATE}}class ha extends f.Loader{constructor(s){super(s),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(r){return new ba(r)}),this.register(function(r){return new Pa(r)}),this.register(function(r){return new ka(r)}),this.register(function(r){return new Ma(r)}),this.register(function(r){return new wa(r)}),this.register(function(r){return new _a(r)}),this.register(function(r){return new ya(r)}),this.register(function(r){return new xa(r)}),this.register(function(r){return new va(r)}),this.register(function(r){return new Ca(r)}),this.register(function(r){return new ga(r)}),this.register(function(r){return new ma(r)}),this.register(function(r){return new Aa(r)}),this.register(function(r){return new Sa(r)})}load(s,r,n,o){const l=this;let u;this.resourcePath!==""?u=this.resourcePath:this.path!==""?u=this.path:u=f.LoaderUtils.extractUrlBase(s),this.manager.itemStart(s);const h=function(w){o?o(w):console.error(w),l.manager.itemError(s),l.manager.itemEnd(s)},d=new f.FileLoader(this.manager);d.setPath(this.path),d.setResponseType("arraybuffer"),d.setRequestHeader(this.requestHeader),d.setWithCredentials(this.withCredentials),d.load(s,function(w){try{l.parse(w,u,function(_){r(_),l.manager.itemEnd(s)},h)}catch(_){h(_)}},n,h)}setDRACOLoader(s){return this.dracoLoader=s,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(s){return this.ktx2Loader=s,this}setMeshoptDecoder(s){return this.meshoptDecoder=s,this}register(s){return this.pluginCallbacks.indexOf(s)===-1&&this.pluginCallbacks.push(s),this}unregister(s){return this.pluginCallbacks.indexOf(s)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(s),1),this}parse(s,r,n,o){let l;const u={},h={};if(typeof s=="string")l=JSON.parse(s);else if(s instanceof ArrayBuffer)if(f.LoaderUtils.decodeText(new Uint8Array(s.slice(0,4)))===Vr){try{u[ae.KHR_BINARY_GLTF]=new La(s)}catch(_){o&&o(_);return}l=JSON.parse(u[ae.KHR_BINARY_GLTF].content)}else l=JSON.parse(f.LoaderUtils.decodeText(new Uint8Array(s)));else l=s;if(l.asset===void 0||l.asset.version[0]<2){o&&o(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const d=new Ra(l,{path:r||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});d.fileLoader.setRequestHeader(this.requestHeader);for(let w=0;w<this.pluginCallbacks.length;w++){const _=this.pluginCallbacks[w](d);h[_.name]=_,u[_.name]=!0}if(l.extensionsUsed)for(let w=0;w<l.extensionsUsed.length;++w){const _=l.extensionsUsed[w],y=l.extensionsRequired||[];switch(_){case ae.KHR_MATERIALS_UNLIT:u[_]=new fa;break;case ae.KHR_DRACO_MESH_COMPRESSION:u[_]=new Va(l,this.dracoLoader);break;case ae.KHR_TEXTURE_TRANSFORM:u[_]=new Da;break;case ae.KHR_MESH_QUANTIZATION:u[_]=new Ia;break;default:y.indexOf(_)>=0&&h[_]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+_+'".')}}d.setExtensions(u),d.setPlugins(h),d.parse(n,o)}parseAsync(s,r){const n=this;return new Promise(function(o,l){n.parse(s,r,o,l)})}}function da(){let b={};return{get:function(s){return b[s]},add:function(s,r){b[s]=r},remove:function(s){delete b[s]},removeAll:function(){b={}}}}const ae={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_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_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class ma{constructor(s){this.parser=s,this.name=ae.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const s=this.parser,r=this.parser.json.nodes||[];for(let n=0,o=r.length;n<o;n++){const l=r[n];l.extensions&&l.extensions[this.name]&&l.extensions[this.name].light!==void 0&&s._addNodeRef(this.cache,l.extensions[this.name].light)}}_loadLight(s){const r=this.parser,n="light:"+s;let o=r.cache.get(n);if(o)return o;const l=r.json,d=((l.extensions&&l.extensions[this.name]||{}).lights||[])[s];let w;const _=new f.Color(16777215);d.color!==void 0&&_.fromArray(d.color);const y=d.range!==void 0?d.range:0;switch(d.type){case"directional":w=new f.DirectionalLight(_),w.target.position.set(0,0,-1),w.add(w.target);break;case"point":w=new f.PointLight(_),w.distance=y;break;case"spot":w=new f.SpotLight(_),w.distance=y,d.spot=d.spot||{},d.spot.innerConeAngle=d.spot.innerConeAngle!==void 0?d.spot.innerConeAngle:0,d.spot.outerConeAngle=d.spot.outerConeAngle!==void 0?d.spot.outerConeAngle:Math.PI/4,w.angle=d.spot.outerConeAngle,w.penumbra=1-d.spot.innerConeAngle/d.spot.outerConeAngle,w.target.position.set(0,0,-1),w.add(w.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+d.type)}return w.position.set(0,0,0),w.decay=2,Vt(w,d),d.intensity!==void 0&&(w.intensity=d.intensity),w.name=r.createUniqueName(d.name||"light_"+s),o=Promise.resolve(w),r.cache.add(n,o),o}getDependency(s,r){if(s==="light")return this._loadLight(r)}createNodeAttachment(s){const r=this,n=this.parser,l=n.json.nodes[s],h=(l.extensions&&l.extensions[this.name]||{}).light;return h===void 0?null:this._loadLight(h).then(function(d){return n._getNodeRef(r.cache,h,d)})}}class fa{constructor(){this.name=ae.KHR_MATERIALS_UNLIT}getMaterialType(){return f.MeshBasicMaterial}extendParams(s,r,n){const o=[];s.color=new f.Color(1,1,1),s.opacity=1;const l=r.pbrMetallicRoughness;if(l){if(Array.isArray(l.baseColorFactor)){const u=l.baseColorFactor;s.color.fromArray(u),s.opacity=u[3]}l.baseColorTexture!==void 0&&o.push(n.assignTexture(s,"map",l.baseColorTexture,f.sRGBEncoding))}return Promise.all(o)}}class va{constructor(s){this.parser=s,this.name=ae.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(s,r){const o=this.parser.json.materials[s];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=o.extensions[this.name].emissiveStrength;return l!==void 0&&(r.emissiveIntensity=l),Promise.resolve()}}class ba{constructor(s){this.parser=s,this.name=ae.KHR_MATERIALS_CLEARCOAT}getMaterialType(s){const n=this.parser.json.materials[s];return!n.extensions||!n.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(s,r){const n=this.parser,o=n.json.materials[s];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[],u=o.extensions[this.name];if(u.clearcoatFactor!==void 0&&(r.clearcoat=u.clearcoatFactor),u.clearcoatTexture!==void 0&&l.push(n.assignTexture(r,"clearcoatMap",u.clearcoatTexture)),u.clearcoatRoughnessFactor!==void 0&&(r.clearcoatRoughness=u.clearcoatRoughnessFactor),u.clearcoatRoughnessTexture!==void 0&&l.push(n.assignTexture(r,"clearcoatRoughnessMap",u.clearcoatRoughnessTexture)),u.clearcoatNormalTexture!==void 0&&(l.push(n.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(l)}}class ga{constructor(s){this.parser=s,this.name=ae.KHR_MATERIALS_IRIDESCENCE}getMaterialType(s){const n=this.parser.json.materials[s];return!n.extensions||!n.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(s,r){const n=this.parser,o=n.json.materials[s];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[],u=o.extensions[this.name];return u.iridescenceFactor!==void 0&&(r.iridescence=u.iridescenceFactor),u.iridescenceTexture!==void 0&&l.push(n.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&&l.push(n.assignTexture(r,"iridescenceThicknessMap",u.iridescenceThicknessTexture)),Promise.all(l)}}class wa{constructor(s){this.parser=s,this.name=ae.KHR_MATERIALS_SHEEN}getMaterialType(s){const n=this.parser.json.materials[s];return!n.extensions||!n.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(s,r){const n=this.parser,o=n.json.materials[s];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[];r.sheenColor=new f.Color(0,0,0),r.sheenRoughness=0,r.sheen=1;const u=o.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&&l.push(n.assignTexture(r,"sheenColorMap",u.sheenColorTexture,f.sRGBEncoding)),u.sheenRoughnessTexture!==void 0&&l.push(n.assignTexture(r,"sheenRoughnessMap",u.sheenRoughnessTexture)),Promise.all(l)}}class _a{constructor(s){this.parser=s,this.name=ae.KHR_MATERIALS_TRANSMISSION}getMaterialType(s){const n=this.parser.json.materials[s];return!n.extensions||!n.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(s,r){const n=this.parser,o=n.json.materials[s];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[],u=o.extensions[this.name];return u.transmissionFactor!==void 0&&(r.transmission=u.transmissionFactor),u.transmissionTexture!==void 0&&l.push(n.assignTexture(r,"transmissionMap",u.transmissionTexture)),Promise.all(l)}}class ya{constructor(s){this.parser=s,this.name=ae.KHR_MATERIALS_VOLUME}getMaterialType(s){const n=this.parser.json.materials[s];return!n.extensions||!n.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(s,r){const n=this.parser,o=n.json.materials[s];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[],u=o.extensions[this.name];r.thickness=u.thicknessFactor!==void 0?u.thicknessFactor:0,u.thicknessTexture!==void 0&&l.push(n.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(l)}}class xa{constructor(s){this.parser=s,this.name=ae.KHR_MATERIALS_IOR}getMaterialType(s){const n=this.parser.json.materials[s];return!n.extensions||!n.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(s,r){const o=this.parser.json.materials[s];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=o.extensions[this.name];return r.ior=l.ior!==void 0?l.ior:1.5,Promise.resolve()}}class Ca{constructor(s){this.parser=s,this.name=ae.KHR_MATERIALS_SPECULAR}getMaterialType(s){const n=this.parser.json.materials[s];return!n.extensions||!n.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(s,r){const n=this.parser,o=n.json.materials[s];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[],u=o.extensions[this.name];r.specularIntensity=u.specularFactor!==void 0?u.specularFactor:1,u.specularTexture!==void 0&&l.push(n.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&&l.push(n.assignTexture(r,"specularColorMap",u.specularColorTexture,f.sRGBEncoding)),Promise.all(l)}}class Pa{constructor(s){this.parser=s,this.name=ae.KHR_TEXTURE_BASISU}loadTexture(s){const r=this.parser,n=r.json,o=n.textures[s];if(!o.extensions||!o.extensions[this.name])return null;const l=o.extensions[this.name],u=r.options.ktx2Loader;if(!u){if(n.extensionsRequired&&n.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return r.loadTextureImage(s,l.source,u)}}class ka{constructor(s){this.parser=s,this.name=ae.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(s){const r=this.name,n=this.parser,o=n.json,l=o.textures[s];if(!l.extensions||!l.extensions[r])return null;const u=l.extensions[r],h=o.images[u.source];let d=n.textureLoader;if(h.uri){const w=n.options.manager.getHandler(h.uri);w!==null&&(d=w)}return this.detectSupport().then(function(w){if(w)return n.loadTextureImage(s,u.source,d);if(o.extensionsRequired&&o.extensionsRequired.indexOf(r)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return n.loadTexture(s)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(s){const r=new Image;r.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",r.onload=r.onerror=function(){s(r.height===1)}})),this.isSupported}}class Ma{constructor(s){this.parser=s,this.name=ae.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(s){const r=this.name,n=this.parser,o=n.json,l=o.textures[s];if(!l.extensions||!l.extensions[r])return null;const u=l.extensions[r],h=o.images[u.source];let d=n.textureLoader;if(h.uri){const w=n.options.manager.getHandler(h.uri);w!==null&&(d=w)}return this.detectSupport().then(function(w){if(w)return n.loadTextureImage(s,u.source,d);if(o.extensionsRequired&&o.extensionsRequired.indexOf(r)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return n.loadTexture(s)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(s){const r=new Image;r.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",r.onload=r.onerror=function(){s(r.height===1)}})),this.isSupported}}class Aa{constructor(s){this.name=ae.EXT_MESHOPT_COMPRESSION,this.parser=s}loadBufferView(s){const r=this.parser.json,n=r.bufferViews[s];if(n.extensions&&n.extensions[this.name]){const o=n.extensions[this.name],l=this.parser.getDependency("buffer",o.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 l.then(function(h){const d=o.byteOffset||0,w=o.byteLength||0,_=o.count,y=o.byteStride,x=new Uint8Array(h,d,w);return u.decodeGltfBufferAsync?u.decodeGltfBufferAsync(_,y,x,o.mode,o.filter).then(function(M){return M.buffer}):u.ready.then(function(){const M=new ArrayBuffer(_*y);return u.decodeGltfBuffer(new Uint8Array(M),_,y,x,o.mode,o.filter),M})})}else return null}}class Sa{constructor(s){this.name=ae.EXT_MESH_GPU_INSTANCING,this.parser=s}createNodeMesh(s){const r=this.parser.json,n=r.nodes[s];if(!n.extensions||!n.extensions[this.name]||n.mesh===void 0)return null;const o=r.meshes[n.mesh];for(const w of o.primitives)if(w.mode!==Qe.TRIANGLES&&w.mode!==Qe.TRIANGLE_STRIP&&w.mode!==Qe.TRIANGLE_FAN&&w.mode!==void 0)return null;const u=n.extensions[this.name].attributes,h=[],d={};for(const w in u)h.push(this.parser.getDependency("accessor",u[w]).then(_=>(d[w]=_,d[w])));return h.length<1?null:(h.push(this.parser.createNodeMesh(s)),Promise.all(h).then(w=>{const _=w.pop(),y=_.isGroup?_.children:[_],x=w[0].count,M=[];for(const T of y){const D=new f.Matrix4,E=new f.Vector3,F=new f.Quaternion,z=new f.Vector3(1,1,1),N=new f.InstancedMesh(T.geometry,T.material,x);for(let O=0;O<x;O++)d.TRANSLATION&&E.fromBufferAttribute(d.TRANSLATION,O),d.ROTATION&&F.fromBufferAttribute(d.ROTATION,O),d.SCALE&&z.fromBufferAttribute(d.SCALE,O),N.setMatrixAt(O,D.compose(E,F,z));for(const O in d)O!=="TRANSLATION"&&O!=="ROTATION"&&O!=="SCALE"&&T.geometry.setAttribute(O,d[O]);f.Object3D.prototype.copy.call(N,T),this.parser.assignFinalMaterial(N),M.push(N)}return _.isGroup?(_.clear(),_.add(...M),_):M[0]}))}}const Vr="glTF",Gn=12,Dr={JSON:1313821514,BIN:5130562};class La{constructor(s){this.name=ae.KHR_BINARY_GLTF,this.content=null,this.body=null;const r=new DataView(s,0,Gn);if(this.header={magic:f.LoaderUtils.decodeText(new Uint8Array(s.slice(0,4))),version:r.getUint32(4,!0),length:r.getUint32(8,!0)},this.header.magic!==Vr)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const n=this.header.length-Gn,o=new DataView(s,Gn);let l=0;for(;l<n;){const u=o.getUint32(l,!0);l+=4;const h=o.getUint32(l,!0);if(l+=4,h===Dr.JSON){const d=new Uint8Array(s,Gn+l,u);this.content=f.LoaderUtils.decodeText(d)}else if(h===Dr.BIN){const d=Gn+l;this.body=s.slice(d,d+u)}l+=u}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class Va{constructor(s,r){if(!r)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=ae.KHR_DRACO_MESH_COMPRESSION,this.json=s,this.dracoLoader=r,this.dracoLoader.preload()}decodePrimitive(s,r){const n=this.json,o=this.dracoLoader,l=s.extensions[this.name].bufferView,u=s.extensions[this.name].attributes,h={},d={},w={};for(const _ in u){const y=as[_]||_.toLowerCase();h[y]=u[_]}for(const _ in s.attributes){const y=as[_]||_.toLowerCase();if(u[_]!==void 0){const x=n.accessors[s.attributes[_]],M=vn[x.componentType];w[y]=M.name,d[y]=x.normalized===!0}}return r.getDependency("bufferView",l).then(function(_){return new Promise(function(y){o.decodeDracoFile(_,function(x){for(const M in x.attributes){const T=x.attributes[M],D=d[M];D!==void 0&&(T.normalized=D)}y(x)},h,w)})})}}class Da{constructor(){this.name=ae.KHR_TEXTURE_TRANSFORM}extendTexture(s,r){return(r.texCoord===void 0||r.texCoord===s.channel)&&r.offset===void 0&&r.rotation===void 0&&r.scale===void 0||(s=s.clone(),r.texCoord!==void 0&&(s.channel=r.texCoord),r.offset!==void 0&&s.offset.fromArray(r.offset),r.rotation!==void 0&&(s.rotation=r.rotation),r.scale!==void 0&&s.repeat.fromArray(r.scale),s.needsUpdate=!0),s}}class Ia{constructor(){this.name=ae.KHR_MESH_QUANTIZATION}}class Ir extends f.Interpolant{constructor(s,r,n,o){super(s,r,n,o)}copySampleValue_(s){const r=this.resultBuffer,n=this.sampleValues,o=this.valueSize,l=s*o*3+o;for(let u=0;u!==o;u++)r[u]=n[l+u];return r}interpolate_(s,r,n,o){const l=this.resultBuffer,u=this.sampleValues,h=this.valueSize,d=h*2,w=h*3,_=o-r,y=(n-r)/_,x=y*y,M=x*y,T=s*w,D=T-w,E=-2*M+3*x,F=M-x,z=1-E,N=F-x+y;for(let O=0;O!==h;O++){const Q=u[D+O+h],$=u[D+O+d]*_,U=u[T+O+h],j=u[T+O]*_;l[O]=z*Q+N*$+E*U+F*j}return l}}const Ta=new f.Quaternion;class Ea extends Ir{interpolate_(s,r,n,o){const l=super.interpolate_(s,r,n,o);return Ta.fromArray(l).normalize().toArray(l),l}}const Qe={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},Tr={9728:f.NearestFilter,9729:f.LinearFilter,9984:f.NearestMipmapNearestFilter,9985:f.LinearMipmapNearestFilter,9986:f.NearestMipmapLinearFilter,9987:f.LinearMipmapLinearFilter},Er={33071:f.ClampToEdgeWrapping,33648:f.MirroredRepeatWrapping,10497:f.RepeatWrapping},os={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},as={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",...f.REVISION.replace(/\D+/g,"")>=152?{TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3"}:{TEXCOORD_0:"uv",TEXCOORD_1:"uv2"},COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},Lt={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},Oa={CUBICSPLINE:void 0,LINEAR:f.InterpolateLinear,STEP:f.InterpolateDiscrete},ls={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function Ba(b){return b.DefaultMaterial===void 0&&(b.DefaultMaterial=new f.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:f.FrontSide})),b.DefaultMaterial}function Kn(b,s,r){for(const n in r.extensions)b[n]===void 0&&(s.userData.gltfExtensions=s.userData.gltfExtensions||{},s.userData.gltfExtensions[n]=r.extensions[n])}function Vt(b,s){s.extras!==void 0&&(typeof s.extras=="object"?Object.assign(b.userData,s.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+s.extras))}function Na(b,s,r){let n=!1,o=!1,l=!1;for(let w=0,_=s.length;w<_;w++){const y=s[w];if(y.POSITION!==void 0&&(n=!0),y.NORMAL!==void 0&&(o=!0),y.COLOR_0!==void 0&&(l=!0),n&&o&&l)break}if(!n&&!o&&!l)return Promise.resolve(b);const u=[],h=[],d=[];for(let w=0,_=s.length;w<_;w++){const y=s[w];if(n){const x=y.POSITION!==void 0?r.getDependency("accessor",y.POSITION):b.attributes.position;u.push(x)}if(o){const x=y.NORMAL!==void 0?r.getDependency("accessor",y.NORMAL):b.attributes.normal;h.push(x)}if(l){const x=y.COLOR_0!==void 0?r.getDependency("accessor",y.COLOR_0):b.attributes.color;d.push(x)}}return Promise.all([Promise.all(u),Promise.all(h),Promise.all(d)]).then(function(w){const _=w[0],y=w[1],x=w[2];return n&&(b.morphAttributes.position=_),o&&(b.morphAttributes.normal=y),l&&(b.morphAttributes.color=x),b.morphTargetsRelative=!0,b})}function Fa(b,s){if(b.updateMorphTargets(),s.weights!==void 0)for(let r=0,n=s.weights.length;r<n;r++)b.morphTargetInfluences[r]=s.weights[r];if(s.extras&&Array.isArray(s.extras.targetNames)){const r=s.extras.targetNames;if(b.morphTargetInfluences.length===r.length){b.morphTargetDictionary={};for(let n=0,o=r.length;n<o;n++)b.morphTargetDictionary[r[n]]=n}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function za(b){const s=b.extensions&&b.extensions[ae.KHR_DRACO_MESH_COMPRESSION];let r;return s?r="draco:"+s.bufferView+":"+s.indices+":"+Or(s.attributes):r=b.indices+":"+Or(b.attributes)+":"+b.mode,r}function Or(b){let s="";const r=Object.keys(b).sort();for(let n=0,o=r.length;n<o;n++)s+=r[n]+":"+b[r[n]]+";";return s}function cs(b){switch(b){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 ja(b){return b.search(/\.jpe?g($|\?)/i)>0||b.search(/^data\:image\/jpeg/)===0?"image/jpeg":b.search(/\.webp($|\?)/i)>0||b.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const Ua=new f.Matrix4;class Ra{constructor(s={},r={}){this.json=s,this.extensions={},this.plugins={},this.options=r,this.cache=new da,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let n=!1,o=!1,l=-1;typeof navigator<"u"&&(n=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,o=navigator.userAgent.indexOf("Firefox")>-1,l=o?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),typeof createImageBitmap>"u"||n||o&&l<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(s){this.extensions=s}setPlugins(s){this.plugins=s}parse(s,r){const n=this,o=this.json,l=this.extensions;this.cache.removeAll(),this.nodeCache={},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([n.getDependencies("scene"),n.getDependencies("animation"),n.getDependencies("camera")])}).then(function(u){const h={scene:u[0][o.scene||0],scenes:u[0],animations:u[1],cameras:u[2],asset:o.asset,parser:n,userData:{}};Kn(l,h,o),Vt(h,o),Promise.all(n._invokeAll(function(d){return d.afterRoot&&d.afterRoot(h)})).then(function(){s(h)})}).catch(r)}_markDefs(){const s=this.json.nodes||[],r=this.json.skins||[],n=this.json.meshes||[];for(let o=0,l=r.length;o<l;o++){const u=r[o].joints;for(let h=0,d=u.length;h<d;h++)s[u[h]].isBone=!0}for(let o=0,l=s.length;o<l;o++){const u=s[o];u.mesh!==void 0&&(this._addNodeRef(this.meshCache,u.mesh),u.skin!==void 0&&(n[u.mesh].isSkinnedMesh=!0)),u.camera!==void 0&&this._addNodeRef(this.cameraCache,u.camera)}}_addNodeRef(s,r){r!==void 0&&(s.refs[r]===void 0&&(s.refs[r]=s.uses[r]=0),s.refs[r]++)}_getNodeRef(s,r,n){if(s.refs[r]<=1)return n;const o=n.clone(),l=(u,h)=>{const d=this.associations.get(u);d!=null&&this.associations.set(h,d);for(const[w,_]of u.children.entries())l(_,h.children[w])};return l(n,o),o.name+="_instance_"+s.uses[r]++,o}_invokeOne(s){const r=Object.values(this.plugins);r.push(this);for(let n=0;n<r.length;n++){const o=s(r[n]);if(o)return o}return null}_invokeAll(s){const r=Object.values(this.plugins);r.unshift(this);const n=[];for(let o=0;o<r.length;o++){const l=s(r[o]);l&&n.push(l)}return n}getDependency(s,r){const n=s+":"+r;let o=this.cache.get(n);if(!o){switch(s){case"scene":o=this.loadScene(r);break;case"node":o=this._invokeOne(function(l){return l.loadNode&&l.loadNode(r)});break;case"mesh":o=this._invokeOne(function(l){return l.loadMesh&&l.loadMesh(r)});break;case"accessor":o=this.loadAccessor(r);break;case"bufferView":o=this._invokeOne(function(l){return l.loadBufferView&&l.loadBufferView(r)});break;case"buffer":o=this.loadBuffer(r);break;case"material":o=this._invokeOne(function(l){return l.loadMaterial&&l.loadMaterial(r)});break;case"texture":o=this._invokeOne(function(l){return l.loadTexture&&l.loadTexture(r)});break;case"skin":o=this.loadSkin(r);break;case"animation":o=this._invokeOne(function(l){return l.loadAnimation&&l.loadAnimation(r)});break;case"camera":o=this.loadCamera(r);break;default:if(o=this._invokeOne(function(l){return l!=this&&l.getDependency&&l.getDependency(s,r)}),!o)throw new Error("Unknown type: "+s);break}this.cache.add(n,o)}return o}getDependencies(s){let r=this.cache.get(s);if(!r){const n=this,o=this.json[s+(s==="mesh"?"es":"s")]||[];r=Promise.all(o.map(function(l,u){return n.getDependency(s,u)})),this.cache.add(s,r)}return r}loadBuffer(s){const r=this.json.buffers[s],n=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&&s===0)return Promise.resolve(this.extensions[ae.KHR_BINARY_GLTF].body);const o=this.options;return new Promise(function(l,u){n.load(f.LoaderUtils.resolveURL(r.uri,o.path),l,void 0,function(){u(new Error('THREE.GLTFLoader: Failed to load buffer "'+r.uri+'".'))})})}loadBufferView(s){const r=this.json.bufferViews[s];return this.getDependency("buffer",r.buffer).then(function(n){const o=r.byteLength||0,l=r.byteOffset||0;return n.slice(l,l+o)})}loadAccessor(s){const r=this,n=this.json,o=this.json.accessors[s];if(o.bufferView===void 0&&o.sparse===void 0){const u=os[o.type],h=vn[o.componentType],d=o.normalized===!0,w=new h(o.count*u);return Promise.resolve(new f.BufferAttribute(w,u,d))}const l=[];return o.bufferView!==void 0?l.push(this.getDependency("bufferView",o.bufferView)):l.push(null),o.sparse!==void 0&&(l.push(this.getDependency("bufferView",o.sparse.indices.bufferView)),l.push(this.getDependency("bufferView",o.sparse.values.bufferView))),Promise.all(l).then(function(u){const h=u[0],d=os[o.type],w=vn[o.componentType],_=w.BYTES_PER_ELEMENT,y=_*d,x=o.byteOffset||0,M=o.bufferView!==void 0?n.bufferViews[o.bufferView].byteStride:void 0,T=o.normalized===!0;let D,E;if(M&&M!==y){const F=Math.floor(x/M),z="InterleavedBuffer:"+o.bufferView+":"+o.componentType+":"+F+":"+o.count;let N=r.cache.get(z);N||(D=new w(h,F*M,o.count*M/_),N=new f.InterleavedBuffer(D,M/_),r.cache.add(z,N)),E=new f.InterleavedBufferAttribute(N,d,x%M/_,T)}else h===null?D=new w(o.count*d):D=new w(h,x,o.count*d),E=new f.BufferAttribute(D,d,T);if(o.sparse!==void 0){const F=os.SCALAR,z=vn[o.sparse.indices.componentType],N=o.sparse.indices.byteOffset||0,O=o.sparse.values.byteOffset||0,Q=new z(u[1],N,o.sparse.count*F),$=new w(u[2],O,o.sparse.count*d);h!==null&&(E=new f.BufferAttribute(E.array.slice(),E.itemSize,E.normalized));for(let U=0,j=Q.length;U<j;U++){const X=Q[U];if(E.setX(X,$[U*d]),d>=2&&E.setY(X,$[U*d+1]),d>=3&&E.setZ(X,$[U*d+2]),d>=4&&E.setW(X,$[U*d+3]),d>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return E})}loadTexture(s){const r=this.json,n=this.options,l=r.textures[s].source,u=r.images[l];let h=this.textureLoader;if(u.uri){const d=n.manager.getHandler(u.uri);d!==null&&(h=d)}return this.loadTextureImage(s,l,h)}loadTextureImage(s,r,n){const o=this,l=this.json,u=l.textures[s],h=l.images[r],d=(h.uri||h.bufferView)+":"+u.sampler;if(this.textureCache[d])return this.textureCache[d];const w=this.loadImageSource(r,n).then(function(_){_.flipY=!1,_.name=u.name||h.name||"",_.name===""&&typeof h.uri=="string"&&h.uri.startsWith("data:image/")===!1&&(_.name=h.uri);const x=(l.samplers||{})[u.sampler]||{};return _.magFilter=Tr[x.magFilter]||f.LinearFilter,_.minFilter=Tr[x.minFilter]||f.LinearMipmapLinearFilter,_.wrapS=Er[x.wrapS]||f.RepeatWrapping,_.wrapT=Er[x.wrapT]||f.RepeatWrapping,o.associations.set(_,{textures:s}),_}).catch(function(){return null});return this.textureCache[d]=w,w}loadImageSource(s,r){const n=this,o=this.json,l=this.options;if(this.sourceCache[s]!==void 0)return this.sourceCache[s].then(y=>y.clone());const u=o.images[s],h=self.URL||self.webkitURL;let d=u.uri||"",w=!1;if(u.bufferView!==void 0)d=n.getDependency("bufferView",u.bufferView).then(function(y){w=!0;const x=new Blob([y],{type:u.mimeType});return d=h.createObjectURL(x),d});else if(u.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+s+" is missing URI and bufferView");const _=Promise.resolve(d).then(function(y){return new Promise(function(x,M){let T=x;r.isImageBitmapLoader===!0&&(T=function(D){const E=new f.Texture(D);E.needsUpdate=!0,x(E)}),r.load(f.LoaderUtils.resolveURL(y,l.path),T,void 0,M)})}).then(function(y){return w===!0&&h.revokeObjectURL(d),y.userData.mimeType=u.mimeType||ja(u.uri),y}).catch(function(y){throw console.error("THREE.GLTFLoader: Couldn't load texture",d),y});return this.sourceCache[s]=_,_}assignTexture(s,r,n,o){const l=this;return this.getDependency("texture",n.index).then(function(u){if(!u)return null;if(n.texCoord!==void 0&&n.texCoord>0&&(u=u.clone(),u.channel=n.texCoord),l.extensions[ae.KHR_TEXTURE_TRANSFORM]){const h=n.extensions!==void 0?n.extensions[ae.KHR_TEXTURE_TRANSFORM]:void 0;if(h){const d=l.associations.get(u);u=l.extensions[ae.KHR_TEXTURE_TRANSFORM].extendTexture(u,h),l.associations.set(u,d)}}return o!==void 0&&(u.encoding=o),s[r]=u,u})}assignFinalMaterial(s){const r=s.geometry;let n=s.material;const o=r.attributes.tangent===void 0,l=r.attributes.color!==void 0,u=r.attributes.normal===void 0;if(s.isPoints){const h="PointsMaterial:"+n.uuid;let d=this.cache.get(h);d||(d=new f.PointsMaterial,f.Material.prototype.copy.call(d,n),d.color.copy(n.color),d.map=n.map,d.sizeAttenuation=!1,this.cache.add(h,d)),n=d}else if(s.isLine){const h="LineBasicMaterial:"+n.uuid;let d=this.cache.get(h);d||(d=new f.LineBasicMaterial,f.Material.prototype.copy.call(d,n),d.color.copy(n.color),d.map=n.map,this.cache.add(h,d)),n=d}if(o||l||u){let h="ClonedMaterial:"+n.uuid+":";o&&(h+="derivative-tangents:"),l&&(h+="vertex-colors:"),u&&(h+="flat-shading:");let d=this.cache.get(h);d||(d=n.clone(),l&&(d.vertexColors=!0),u&&(d.flatShading=!0),o&&(d.normalScale&&(d.normalScale.y*=-1),d.clearcoatNormalScale&&(d.clearcoatNormalScale.y*=-1)),this.cache.add(h,d),this.associations.set(d,this.associations.get(n))),n=d}s.material=n}getMaterialType(){return f.MeshStandardMaterial}loadMaterial(s){const r=this,n=this.json,o=this.extensions,l=n.materials[s];let u;const h={},d=l.extensions||{},w=[];if(d[ae.KHR_MATERIALS_UNLIT]){const y=o[ae.KHR_MATERIALS_UNLIT];u=y.getMaterialType(),w.push(y.extendParams(h,l,r))}else{const y=l.pbrMetallicRoughness||{};if(h.color=new f.Color(1,1,1),h.opacity=1,Array.isArray(y.baseColorFactor)){const x=y.baseColorFactor;h.color.fromArray(x),h.opacity=x[3]}y.baseColorTexture!==void 0&&w.push(r.assignTexture(h,"map",y.baseColorTexture,f.sRGBEncoding)),h.metalness=y.metallicFactor!==void 0?y.metallicFactor:1,h.roughness=y.roughnessFactor!==void 0?y.roughnessFactor:1,y.metallicRoughnessTexture!==void 0&&(w.push(r.assignTexture(h,"metalnessMap",y.metallicRoughnessTexture)),w.push(r.assignTexture(h,"roughnessMap",y.metallicRoughnessTexture))),u=this._invokeOne(function(x){return x.getMaterialType&&x.getMaterialType(s)}),w.push(Promise.all(this._invokeAll(function(x){return x.extendMaterialParams&&x.extendMaterialParams(s,h)})))}l.doubleSided===!0&&(h.side=f.DoubleSide);const _=l.alphaMode||ls.OPAQUE;if(_===ls.BLEND?(h.transparent=!0,h.depthWrite=!1):(h.transparent=!1,_===ls.MASK&&(h.alphaTest=l.alphaCutoff!==void 0?l.alphaCutoff:.5)),l.normalTexture!==void 0&&u!==f.MeshBasicMaterial&&(w.push(r.assignTexture(h,"normalMap",l.normalTexture)),h.normalScale=new f.Vector2(1,1),l.normalTexture.scale!==void 0)){const y=l.normalTexture.scale;h.normalScale.set(y,y)}return l.occlusionTexture!==void 0&&u!==f.MeshBasicMaterial&&(w.push(r.assignTexture(h,"aoMap",l.occlusionTexture)),l.occlusionTexture.strength!==void 0&&(h.aoMapIntensity=l.occlusionTexture.strength)),l.emissiveFactor!==void 0&&u!==f.MeshBasicMaterial&&(h.emissive=new f.Color().fromArray(l.emissiveFactor)),l.emissiveTexture!==void 0&&u!==f.MeshBasicMaterial&&w.push(r.assignTexture(h,"emissiveMap",l.emissiveTexture,f.sRGBEncoding)),Promise.all(w).then(function(){const y=new u(h);return l.name&&(y.name=l.name),Vt(y,l),r.associations.set(y,{materials:s}),l.extensions&&Kn(o,y,l),y})}createUniqueName(s){const r=f.PropertyBinding.sanitizeNodeName(s||"");let n=r;for(let o=1;this.nodeNamesUsed[n];++o)n=r+"_"+o;return this.nodeNamesUsed[n]=!0,n}loadGeometries(s){const r=this,n=this.extensions,o=this.primitiveCache;function l(h){return n[ae.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(h,r).then(function(d){return Br(d,h,r)})}const u=[];for(let h=0,d=s.length;h<d;h++){const w=s[h],_=za(w),y=o[_];if(y)u.push(y.promise);else{let x;w.extensions&&w.extensions[ae.KHR_DRACO_MESH_COMPRESSION]?x=l(w):x=Br(new f.BufferGeometry,w,r),o[_]={primitive:w,promise:x},u.push(x)}}return Promise.all(u)}loadMesh(s){const r=this,n=this.json,o=this.extensions,l=n.meshes[s],u=l.primitives,h=[];for(let d=0,w=u.length;d<w;d++){const _=u[d].material===void 0?Ba(this.cache):this.getDependency("material",u[d].material);h.push(_)}return h.push(r.loadGeometries(u)),Promise.all(h).then(function(d){const w=d.slice(0,d.length-1),_=d[d.length-1],y=[];for(let M=0,T=_.length;M<T;M++){const D=_[M],E=u[M];let F;const z=w[M];if(E.mode===Qe.TRIANGLES||E.mode===Qe.TRIANGLE_STRIP||E.mode===Qe.TRIANGLE_FAN||E.mode===void 0)F=l.isSkinnedMesh===!0?new f.SkinnedMesh(D,z):new f.Mesh(D,z),F.isSkinnedMesh===!0&&F.normalizeSkinWeights(),E.mode===Qe.TRIANGLE_STRIP?F.geometry=_r(F.geometry,f.TriangleStripDrawMode):E.mode===Qe.TRIANGLE_FAN&&(F.geometry=_r(F.geometry,f.TriangleFanDrawMode));else if(E.mode===Qe.LINES)F=new f.LineSegments(D,z);else if(E.mode===Qe.LINE_STRIP)F=new f.Line(D,z);else if(E.mode===Qe.LINE_LOOP)F=new f.LineLoop(D,z);else if(E.mode===Qe.POINTS)F=new f.Points(D,z);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+E.mode);Object.keys(F.geometry.morphAttributes).length>0&&Fa(F,l),F.name=r.createUniqueName(l.name||"mesh_"+s),Vt(F,l),E.extensions&&Kn(o,F,E),r.assignFinalMaterial(F),y.push(F)}for(let M=0,T=y.length;M<T;M++)r.associations.set(y[M],{meshes:s,primitives:M});if(y.length===1)return y[0];const x=new f.Group;r.associations.set(x,{meshes:s});for(let M=0,T=y.length;M<T;M++)x.add(y[M]);return x})}loadCamera(s){let r;const n=this.json.cameras[s],o=n[n.type];if(!o){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return n.type==="perspective"?r=new f.PerspectiveCamera(f.MathUtils.radToDeg(o.yfov),o.aspectRatio||1,o.znear||1,o.zfar||2e6):n.type==="orthographic"&&(r=new f.OrthographicCamera(-o.xmag,o.xmag,o.ymag,-o.ymag,o.znear,o.zfar)),n.name&&(r.name=this.createUniqueName(n.name)),Vt(r,n),Promise.resolve(r)}loadSkin(s){const r=this.json.skins[s],n=[];for(let o=0,l=r.joints.length;o<l;o++)n.push(this._loadNodeShallow(r.joints[o]));return r.inverseBindMatrices!==void 0?n.push(this.getDependency("accessor",r.inverseBindMatrices)):n.push(null),Promise.all(n).then(function(o){const l=o.pop(),u=o,h=[],d=[];for(let w=0,_=u.length;w<_;w++){const y=u[w];if(y){h.push(y);const x=new f.Matrix4;l!==null&&x.fromArray(l.array,w*16),d.push(x)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',r.joints[w])}return new f.Skeleton(h,d)})}loadAnimation(s){const n=this.json.animations[s],o=n.name?n.name:"animation_"+s,l=[],u=[],h=[],d=[],w=[];for(let _=0,y=n.channels.length;_<y;_++){const x=n.channels[_],M=n.samplers[x.sampler],T=x.target,D=T.node,E=n.parameters!==void 0?n.parameters[M.input]:M.input,F=n.parameters!==void 0?n.parameters[M.output]:M.output;T.node!==void 0&&(l.push(this.getDependency("node",D)),u.push(this.getDependency("accessor",E)),h.push(this.getDependency("accessor",F)),d.push(M),w.push(T))}return Promise.all([Promise.all(l),Promise.all(u),Promise.all(h),Promise.all(d),Promise.all(w)]).then(function(_){const y=_[0],x=_[1],M=_[2],T=_[3],D=_[4],E=[];for(let F=0,z=y.length;F<z;F++){const N=y[F],O=x[F],Q=M[F],$=T[F],U=D[F];if(N===void 0)continue;N.updateMatrix();let j;switch(Lt[U.path]){case Lt.weights:j=f.NumberKeyframeTrack;break;case Lt.rotation:j=f.QuaternionKeyframeTrack;break;case Lt.position:case Lt.scale:default:j=f.VectorKeyframeTrack;break}const X=N.name?N.name:N.uuid,Y=$.interpolation!==void 0?Oa[$.interpolation]:f.InterpolateLinear,Z=[];Lt[U.path]===Lt.weights?N.traverse(function(ge){ge.morphTargetInfluences&&Z.push(ge.name?ge.name:ge.uuid)}):Z.push(X);let ue=Q.array;if(Q.normalized){const ge=cs(ue.constructor),pe=new Float32Array(ue.length);for(let me=0,he=ue.length;me<he;me++)pe[me]=ue[me]*ge;ue=pe}for(let ge=0,pe=Z.length;ge<pe;ge++){const me=new j(Z[ge]+"."+Lt[U.path],O.array,ue,Y);$.interpolation==="CUBICSPLINE"&&(me.createInterpolant=function(te){const q=this instanceof f.QuaternionKeyframeTrack?Ea:Ir;return new q(this.times,this.values,this.getValueSize()/3,te)},me.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0),E.push(me)}}return new f.AnimationClip(o,void 0,E)})}createNodeMesh(s){const r=this.json,n=this,o=r.nodes[s];return o.mesh===void 0?null:n.getDependency("mesh",o.mesh).then(function(l){const u=n._getNodeRef(n.meshCache,o.mesh,l);return o.weights!==void 0&&u.traverse(function(h){if(h.isMesh)for(let d=0,w=o.weights.length;d<w;d++)h.morphTargetInfluences[d]=o.weights[d]}),u})}loadNode(s){const r=this.json,n=this,o=r.nodes[s],l=n._loadNodeShallow(s),u=[],h=o.children||[];for(let w=0,_=h.length;w<_;w++)u.push(n.getDependency("node",h[w]));const d=o.skin===void 0?Promise.resolve(null):n.getDependency("skin",o.skin);return Promise.all([l,Promise.all(u),d]).then(function(w){const _=w[0],y=w[1],x=w[2];x!==null&&_.traverse(function(M){M.isSkinnedMesh&&M.bind(x,Ua)});for(let M=0,T=y.length;M<T;M++)_.add(y[M]);return _})}_loadNodeShallow(s){const r=this.json,n=this.extensions,o=this;if(this.nodeCache[s]!==void 0)return this.nodeCache[s];const l=r.nodes[s],u=l.name?o.createUniqueName(l.name):"",h=[],d=o._invokeOne(function(w){return w.createNodeMesh&&w.createNodeMesh(s)});return d&&h.push(d),l.camera!==void 0&&h.push(o.getDependency("camera",l.camera).then(function(w){return o._getNodeRef(o.cameraCache,l.camera,w)})),o._invokeAll(function(w){return w.createNodeAttachment&&w.createNodeAttachment(s)}).forEach(function(w){h.push(w)}),this.nodeCache[s]=Promise.all(h).then(function(w){let _;if(l.isBone===!0?_=new f.Bone:w.length>1?_=new f.Group:w.length===1?_=w[0]:_=new f.Object3D,_!==w[0])for(let y=0,x=w.length;y<x;y++)_.add(w[y]);if(l.name&&(_.userData.name=l.name,_.name=u),Vt(_,l),l.extensions&&Kn(n,_,l),l.matrix!==void 0){const y=new f.Matrix4;y.fromArray(l.matrix),_.applyMatrix4(y)}else l.translation!==void 0&&_.position.fromArray(l.translation),l.rotation!==void 0&&_.quaternion.fromArray(l.rotation),l.scale!==void 0&&_.scale.fromArray(l.scale);return o.associations.has(_)||o.associations.set(_,{}),o.associations.get(_).nodes=s,_}),this.nodeCache[s]}loadScene(s){const r=this.extensions,n=this.json.scenes[s],o=this,l=new f.Group;n.name&&(l.name=o.createUniqueName(n.name)),Vt(l,n),n.extensions&&Kn(r,l,n);const u=n.nodes||[],h=[];for(let d=0,w=u.length;d<w;d++)h.push(o.getDependency("node",u[d]));return Promise.all(h).then(function(d){for(let _=0,y=d.length;_<y;_++)l.add(d[_]);const w=_=>{const y=new Map;for(const[x,M]of o.associations)(x instanceof f.Material||x instanceof f.Texture)&&y.set(x,M);return _.traverse(x=>{const M=o.associations.get(x);M!=null&&y.set(x,M)}),y};return o.associations=w(l),l})}}function Ga(b,s,r){const n=s.attributes,o=new f.Box3;if(n.POSITION!==void 0){const h=r.json.accessors[n.POSITION],d=h.min,w=h.max;if(d!==void 0&&w!==void 0){if(o.set(new f.Vector3(d[0],d[1],d[2]),new f.Vector3(w[0],w[1],w[2])),h.normalized){const _=cs(vn[h.componentType]);o.min.multiplyScalar(_),o.max.multiplyScalar(_)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const l=s.targets;if(l!==void 0){const h=new f.Vector3,d=new f.Vector3;for(let w=0,_=l.length;w<_;w++){const y=l[w];if(y.POSITION!==void 0){const x=r.json.accessors[y.POSITION],M=x.min,T=x.max;if(M!==void 0&&T!==void 0){if(d.setX(Math.max(Math.abs(M[0]),Math.abs(T[0]))),d.setY(Math.max(Math.abs(M[1]),Math.abs(T[1]))),d.setZ(Math.max(Math.abs(M[2]),Math.abs(T[2]))),x.normalized){const D=cs(vn[x.componentType]);d.multiplyScalar(D)}h.max(d)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}o.expandByVector(h)}b.boundingBox=o;const u=new f.Sphere;o.getCenter(u.center),u.radius=o.min.distanceTo(o.max)/2,b.boundingSphere=u}function Br(b,s,r){const n=s.attributes,o=[];function l(u,h){return r.getDependency("accessor",u).then(function(d){b.setAttribute(h,d)})}for(const u in n){const h=as[u]||u.toLowerCase();h in b.attributes||o.push(l(n[u],h))}if(s.indices!==void 0&&!b.index){const u=r.getDependency("accessor",s.indices).then(function(h){b.setIndex(h)});o.push(u)}return Vt(b,s),Ga(b,s,r),Promise.all(o).then(function(){return s.targets!==void 0?Na(b,s.targets,r):b})}class Nr extends f.ExtrudeGeometry{constructor(s,r={}){const{bevelEnabled:n=!1,bevelSize:o=8,bevelThickness:l=10,font:u,height:h=50,size:d=100,lineHeight:w=1,letterSpacing:_=0,...y}=r;if(u===void 0)super();else{const x=u.generateShapes(s,d,{lineHeight:w,letterSpacing:_});super(x,{...y,bevelEnabled:n,bevelSize:o,bevelThickness:l,depth:h})}this.type="TextGeometry"}}const Ka={uniforms:{tDiffuse:{value:null},h:{value:1/512}},vertexShader:`
8
+ (function(J,C){typeof exports=="object"&&typeof module<"u"?C(exports,require("vue"),require("@tresjs/core"),require("three")):typeof define=="function"&&define.amd?define(["exports","vue","@tresjs/core","three"],C):(J=typeof globalThis<"u"?globalThis:J||self,C(J.trescientos={},J.Vue,J.TresjsCore,J.Three))})(this,function(J,C,Me,f){"use strict";var Ku=Object.defineProperty;var $u=(J,C,Me)=>C in J?Ku(J,C,{enumerable:!0,configurable:!0,writable:!0,value:Me}):J[C]=Me;var wr=(J,C,Me)=>($u(J,typeof C!="symbol"?C+"":C,Me),Me);function Uo(g,i){for(var r=0;r<i.length;r++){const s=i[r];if(typeof s!="string"&&!Array.isArray(s)){for(const o in s)if(o!=="default"&&!(o in g)){const l=Object.getOwnPropertyDescriptor(s,o);l&&Object.defineProperty(g,o,l.get?l:{enumerable:!0,get:()=>s[o]})}}}return Object.freeze(Object.defineProperty(g,Symbol.toStringTag,{value:"Module"}))}function jn(g){"@babel/helpers - typeof";return jn=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(i){return typeof i}:function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},jn(g)}function Ro(g,i){if(jn(g)!=="object"||g===null)return g;var r=g[Symbol.toPrimitive];if(r!==void 0){var s=r.call(g,i||"default");if(jn(s)!=="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(i==="string"?String:Number)(g)}function Go(g){var i=Ro(g,"string");return jn(i)==="symbol"?i:String(i)}function A(g,i,r){return i=Go(i),i in g?Object.defineProperty(g,i,{value:r,enumerable:!0,configurable:!0,writable:!0}):g[i]=r,g}function _r(g,i){if(i===f.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),g;if(i===f.TriangleFanDrawMode||i===f.TriangleStripDrawMode){let r=g.getIndex();if(r===null){const u=[],h=g.getAttribute("position");if(h!==void 0){for(let d=0;d<h.count;d++)u.push(d);g.setIndex(u),r=g.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),g}const s=r.count-2,o=[];if(r)if(i===f.TriangleFanDrawMode)for(let u=1;u<=s;u++)o.push(r.getX(0)),o.push(r.getX(u)),o.push(r.getX(u+1));else for(let u=0;u<s;u++)u%2===0?(o.push(r.getX(u)),o.push(r.getX(u+1)),o.push(r.getX(u+2))):(o.push(r.getX(u+2)),o.push(r.getX(u+1)),o.push(r.getX(u)));o.length/3!==s&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const l=g.clone();return l.setIndex(o),l.clearGroups(),l}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",i),g}var Qe=Uint8Array,At=Uint16Array,ns=Uint32Array,yr=new Qe([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]),xr=new Qe([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]),Ko=new Qe([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Cr=function(g,i){for(var r=new At(31),s=0;s<31;++s)r[s]=i+=1<<g[s-1];for(var o=new ns(r[30]),s=1;s<30;++s)for(var l=r[s];l<r[s+1];++l)o[l]=l-r[s]<<5|s;return[r,o]},Pr=Cr(yr,2),kr=Pr[0],$o=Pr[1];kr[28]=258,$o[258]=28;for(var Xo=Cr(xr,0),Yo=Xo[0],is=new At(32768),xe=0;xe<32768;++xe){var St=(xe&43690)>>>1|(xe&21845)<<1;St=(St&52428)>>>2|(St&13107)<<2,St=(St&61680)>>>4|(St&3855)<<4,is[xe]=((St&65280)>>>8|(St&255)<<8)>>>1}for(var Un=function(g,i,r){for(var s=g.length,o=0,l=new At(i);o<s;++o)++l[g[o]-1];var u=new At(i);for(o=0;o<i;++o)u[o]=u[o-1]+l[o-1]<<1;var h;if(r){h=new At(1<<i);var d=15-i;for(o=0;o<s;++o)if(g[o])for(var w=o<<4|g[o],_=i-g[o],y=u[g[o]-1]++<<_,x=y|(1<<_)-1;y<=x;++y)h[is[y]>>>d]=w}else for(h=new At(s),o=0;o<s;++o)g[o]&&(h[o]=is[u[g[o]-1]++]>>>15-g[o]);return h},Rn=new Qe(288),xe=0;xe<144;++xe)Rn[xe]=8;for(var xe=144;xe<256;++xe)Rn[xe]=9;for(var xe=256;xe<280;++xe)Rn[xe]=7;for(var xe=280;xe<288;++xe)Rn[xe]=8;for(var Mr=new Qe(32),xe=0;xe<32;++xe)Mr[xe]=5;var qo=Un(Rn,9,1),Qo=Un(Mr,5,1),ss=function(g){for(var i=g[0],r=1;r<g.length;++r)g[r]>i&&(i=g[r]);return i},st=function(g,i,r){var s=i/8|0;return(g[s]|g[s+1]<<8)>>(i&7)&r},rs=function(g,i){var r=i/8|0;return(g[r]|g[r+1]<<8|g[r+2]<<16)>>(i&7)},Zo=function(g){return(g/8|0)+(g&7&&1)},Wo=function(g,i,r){(i==null||i<0)&&(i=0),(r==null||r>g.length)&&(r=g.length);var s=new(g instanceof At?At:g instanceof ns?ns:Qe)(r-i);return s.set(g.subarray(i,r)),s},Jo=function(g,i,r){var s=g.length;if(!s||r&&!r.l&&s<5)return i||new Qe(0);var o=!i||r,l=!r||r.i;r||(r={}),i||(i=new Qe(s*3));var u=function(Ve){var Te=i.length;if(Ve>Te){var _e=new Qe(Math.max(Te*2,Ve));_e.set(i),i=_e}},h=r.f||0,d=r.p||0,w=r.b||0,_=r.l,y=r.d,x=r.m,M=r.n,O=s*8;do{if(!_){r.f=h=st(g,d,1);var I=st(g,d+1,3);if(d+=3,I)if(I==1)_=qo,y=Qo,x=9,M=5;else if(I==2){var N=st(g,d,31)+257,E=st(g,d+10,15)+4,Q=N+st(g,d+5,31)+1;d+=14;for(var $=new Qe(Q),U=new Qe(19),j=0;j<E;++j)U[Ko[j]]=st(g,d+j*3,7);d+=E*3;for(var X=ss(U),Y=(1<<X)-1,Z=Un(U,X,1),j=0;j<Q;){var ue=Z[st(g,d,Y)];d+=ue&15;var T=ue>>>4;if(T<16)$[j++]=T;else{var ge=0,pe=0;for(T==16?(pe=3+st(g,d,3),d+=2,ge=$[j-1]):T==17?(pe=3+st(g,d,7),d+=3):T==18&&(pe=11+st(g,d,127),d+=7);pe--;)$[j++]=ge}}var me=$.subarray(0,N),he=$.subarray(N);x=ss(me),M=ss(he),_=Un(me,x,1),y=Un(he,M,1)}else throw"invalid block type";else{var T=Zo(d)+4,F=g[T-4]|g[T-3]<<8,z=T+F;if(z>s){if(l)throw"unexpected EOF";break}o&&u(w+F),i.set(g.subarray(T,z),w),r.b=w+=F,r.p=d=z*8;continue}if(d>O){if(l)throw"unexpected EOF";break}}o&&u(w+131072);for(var te=(1<<x)-1,q=(1<<M)-1,Ce=d;;Ce=d){var ge=_[rs(g,d)&te],fe=ge>>>4;if(d+=ge&15,d>O){if(l)throw"unexpected EOF";break}if(!ge)throw"invalid length/literal";if(fe<256)i[w++]=fe;else if(fe==256){Ce=d,_=null;break}else{var le=fe-254;if(fe>264){var j=fe-257,ie=yr[j];le=st(g,d,(1<<ie)-1)+kr[j],d+=ie}var be=y[rs(g,d)&q],V=be>>>4;if(!be)throw"invalid distance";d+=be&15;var he=Yo[V];if(V>3){var ie=xr[V];he+=rs(g,d)&(1<<ie)-1,d+=ie}if(d>O){if(l)throw"unexpected EOF";break}o&&u(w+131072);for(var ce=w+le;w<ce;w+=4)i[w]=i[w-he],i[w+1]=i[w+1-he],i[w+2]=i[w+2-he],i[w+3]=i[w+3-he];w=ce}}r.l=_,r.p=Ce,r.b=w,_&&(h=1,r.m=x,r.d=y,r.n=M)}while(!h);return w==i.length?i:Wo(i,0,w)},Ho=new Qe(0),ea=function(g){if((g[0]&15)!=8||g[0]>>>4>7||(g[0]<<8|g[1])%31)throw"invalid zlib data";if(g[1]&32)throw"invalid zlib data: preset dictionaries not supported"};function ta(g,i){return Jo((ea(g),g.subarray(2,-4)),i)}var na=typeof TextDecoder<"u"&&new TextDecoder,ia=0;try{na.decode(Ho,{stream:!0}),ia=1}catch{}class sa extends f.Object3D{constructor(i,r){super(),A(this,"isTransformControls",!0),A(this,"visible",!1),A(this,"domElement",void 0),A(this,"raycaster",new f.Raycaster),A(this,"gizmo",void 0),A(this,"plane",void 0),A(this,"tempVector",new f.Vector3),A(this,"tempVector2",new f.Vector3),A(this,"tempQuaternion",new f.Quaternion),A(this,"unit",{X:new f.Vector3(1,0,0),Y:new f.Vector3(0,1,0),Z:new f.Vector3(0,0,1)}),A(this,"pointStart",new f.Vector3),A(this,"pointEnd",new f.Vector3),A(this,"offset",new f.Vector3),A(this,"rotationAxis",new f.Vector3),A(this,"startNorm",new f.Vector3),A(this,"endNorm",new f.Vector3),A(this,"rotationAngle",0),A(this,"cameraPosition",new f.Vector3),A(this,"cameraQuaternion",new f.Quaternion),A(this,"cameraScale",new f.Vector3),A(this,"parentPosition",new f.Vector3),A(this,"parentQuaternion",new f.Quaternion),A(this,"parentQuaternionInv",new f.Quaternion),A(this,"parentScale",new f.Vector3),A(this,"worldPositionStart",new f.Vector3),A(this,"worldQuaternionStart",new f.Quaternion),A(this,"worldScaleStart",new f.Vector3),A(this,"worldPosition",new f.Vector3),A(this,"worldQuaternion",new f.Quaternion),A(this,"worldQuaternionInv",new f.Quaternion),A(this,"worldScale",new f.Vector3),A(this,"eye",new f.Vector3),A(this,"positionStart",new f.Vector3),A(this,"quaternionStart",new f.Quaternion),A(this,"scaleStart",new f.Vector3),A(this,"camera",void 0),A(this,"object",void 0),A(this,"enabled",!0),A(this,"axis",null),A(this,"mode","translate"),A(this,"translationSnap",null),A(this,"rotationSnap",null),A(this,"scaleSnap",null),A(this,"space","world"),A(this,"size",1),A(this,"dragging",!1),A(this,"showX",!0),A(this,"showY",!0),A(this,"showZ",!0),A(this,"changeEvent",{type:"change"}),A(this,"mouseDownEvent",{type:"mouseDown",mode:this.mode}),A(this,"mouseUpEvent",{type:"mouseUp",mode:this.mode}),A(this,"objectChangeEvent",{type:"objectChange"}),A(this,"intersectObjectWithRay",(o,l,u)=>{const h=l.intersectObject(o,!0);for(let d=0;d<h.length;d++)if(h[d].object.visible||u)return h[d];return!1}),A(this,"attach",o=>(this.object=o,this.visible=!0,this)),A(this,"detach",()=>(this.object=void 0,this.visible=!1,this.axis=null,this)),A(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),A(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()}),A(this,"pointerHover",o=>{if(this.object===void 0||this.dragging===!0)return;this.raycaster.setFromCamera(o,this.camera);const l=this.intersectObjectWithRay(this.gizmo.picker[this.mode],this.raycaster);l?this.axis=l.object.name:this.axis=null}),A(this,"pointerDown",o=>{if(!(this.object===void 0||this.dragging===!0||o.button!==0)&&this.axis!==null){this.raycaster.setFromCamera(o,this.camera);const l=this.intersectObjectWithRay(this.plane,this.raycaster,!0);if(l){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(l.point).sub(this.worldPositionStart)}this.dragging=!0,this.mouseDownEvent.mode=this.mode,this.dispatchEvent(this.mouseDownEvent)}}),A(this,"pointerMove",o=>{const l=this.axis,u=this.mode,h=this.object;let d=this.space;if(u==="scale"?d="local":(l==="E"||l==="XYZE"||l==="XYZ")&&(d="world"),h===void 0||l===null||this.dragging===!1||o.button!==-1)return;this.raycaster.setFromCamera(o,this.camera);const w=this.intersectObjectWithRay(this.plane,this.raycaster,!0);if(w){if(this.pointEnd.copy(w.point).sub(this.worldPositionStart),u==="translate")this.offset.copy(this.pointEnd).sub(this.pointStart),d==="local"&&l!=="XYZ"&&this.offset.applyQuaternion(this.worldQuaternionInv),l.indexOf("X")===-1&&(this.offset.x=0),l.indexOf("Y")===-1&&(this.offset.y=0),l.indexOf("Z")===-1&&(this.offset.z=0),d==="local"&&l!=="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&&(d==="local"&&(h.position.applyQuaternion(this.tempQuaternion.copy(this.quaternionStart).invert()),l.search("X")!==-1&&(h.position.x=Math.round(h.position.x/this.translationSnap)*this.translationSnap),l.search("Y")!==-1&&(h.position.y=Math.round(h.position.y/this.translationSnap)*this.translationSnap),l.search("Z")!==-1&&(h.position.z=Math.round(h.position.z/this.translationSnap)*this.translationSnap),h.position.applyQuaternion(this.quaternionStart)),d==="world"&&(h.parent&&h.position.add(this.tempVector.setFromMatrixPosition(h.parent.matrixWorld)),l.search("X")!==-1&&(h.position.x=Math.round(h.position.x/this.translationSnap)*this.translationSnap),l.search("Y")!==-1&&(h.position.y=Math.round(h.position.y/this.translationSnap)*this.translationSnap),l.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(l.search("XYZ")!==-1){let _=this.pointEnd.length()/this.pointStart.length();this.pointEnd.dot(this.pointStart)<0&&(_*=-1),this.tempVector2.set(_,_,_)}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),l.search("X")===-1&&(this.tempVector2.x=1),l.search("Y")===-1&&(this.tempVector2.y=1),l.search("Z")===-1&&(this.tempVector2.z=1);h.scale.copy(this.scaleStart).multiply(this.tempVector2),this.scaleSnap&&this.object&&(l.search("X")!==-1&&(this.object.scale.x=Math.round(h.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap),l.search("Y")!==-1&&(h.scale.y=Math.round(h.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap),l.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 _=20/this.worldPosition.distanceTo(this.tempVector.setFromMatrixPosition(this.camera.matrixWorld));l==="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):l==="XYZE"?(this.rotationAxis.copy(this.offset).cross(this.eye).normalize(),this.rotationAngle=this.offset.dot(this.tempVector.copy(this.rotationAxis).cross(this.eye))*_):(l==="X"||l==="Y"||l==="Z")&&(this.rotationAxis.copy(this.unit[l]),this.tempVector.copy(this.unit[l]),d==="local"&&this.tempVector.applyQuaternion(this.worldQuaternion),this.rotationAngle=this.offset.dot(this.tempVector.cross(this.eye).normalize())*_),this.rotationSnap&&(this.rotationAngle=Math.round(this.rotationAngle/this.rotationSnap)*this.rotationSnap),d==="local"&&l!=="E"&&l!=="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)}}),A(this,"pointerUp",o=>{o.button===0&&(this.dragging&&this.axis!==null&&(this.mouseUpEvent.mode=this.mode,this.dispatchEvent(this.mouseUpEvent)),this.dragging=!1,this.axis=null)}),A(this,"getPointer",o=>{var l;if(this.domElement&&(l=this.domElement.ownerDocument)!==null&&l!==void 0&&l.pointerLockElement)return{x:0,y:0,button:o.button};{var u;const h=o.changedTouches?o.changedTouches[0]:o,d=(u=this.domElement)===null||u===void 0?void 0:u.getBoundingClientRect();return{x:(h.clientX-d.left)/d.width*2-1,y:-(h.clientY-d.top)/d.height*2+1,button:o.button}}}),A(this,"onPointerHover",o=>{if(this.enabled)switch(o.pointerType){case"mouse":case"pen":this.pointerHover(this.getPointer(o));break}}),A(this,"onPointerDown",o=>{!this.enabled||!this.domElement||(this.domElement.style.touchAction="none",this.domElement.ownerDocument.addEventListener("pointermove",this.onPointerMove),this.pointerHover(this.getPointer(o)),this.pointerDown(this.getPointer(o)))}),A(this,"onPointerMove",o=>{this.enabled&&this.pointerMove(this.getPointer(o))}),A(this,"onPointerUp",o=>{!this.enabled||!this.domElement||(this.domElement.style.touchAction="",this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.pointerUp(this.getPointer(o)))}),A(this,"getMode",()=>this.mode),A(this,"setMode",o=>{this.mode=o}),A(this,"setTranslationSnap",o=>{this.translationSnap=o}),A(this,"setRotationSnap",o=>{this.rotationSnap=o}),A(this,"setScaleSnap",o=>{this.scaleSnap=o}),A(this,"setSize",o=>{this.size=o}),A(this,"setSpace",o=>{this.space=o}),A(this,"update",()=>{console.warn("THREE.TransformControls: update function has no more functionality and therefore has been deprecated.")}),A(this,"connect",o=>{o===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),this.domElement=o,this.domElement.addEventListener("pointerdown",this.onPointerDown),this.domElement.addEventListener("pointermove",this.onPointerHover),this.domElement.ownerDocument.addEventListener("pointerup",this.onPointerUp)}),A(this,"dispose",()=>{var o,l,u,h,d,w;(o=this.domElement)===null||o===void 0||o.removeEventListener("pointerdown",this.onPointerDown),(l=this.domElement)===null||l===void 0||l.removeEventListener("pointermove",this.onPointerHover),(u=this.domElement)===null||u===void 0||(h=u.ownerDocument)===null||h===void 0||h.removeEventListener("pointermove",this.onPointerMove),(d=this.domElement)===null||d===void 0||(w=d.ownerDocument)===null||w===void 0||w.removeEventListener("pointerup",this.onPointerUp),this.traverse(_=>{const y=_;y.geometry&&y.geometry.dispose(),y.material&&y.material.dispose()})}),this.domElement=r,this.camera=i,this.gizmo=new ra,this.add(this.gizmo),this.plane=new oa,this.add(this.plane);const s=(o,l)=>{let u=l;Object.defineProperty(this,o,{get:function(){return u!==void 0?u:l},set:function(h){u!==h&&(u=h,this.plane[o]=h,this.gizmo[o]=h,this.dispatchEvent({type:o+"-changed",value:h}),this.dispatchEvent(this.changeEvent))}}),this[o]=l,this.plane[o]=l,this.gizmo[o]=l};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 ra extends f.Object3D{constructor(){super(),A(this,"isTransformControlsGizmo",!0),A(this,"type","TransformControlsGizmo"),A(this,"tempVector",new f.Vector3(0,0,0)),A(this,"tempEuler",new f.Euler),A(this,"alignVector",new f.Vector3(0,1,0)),A(this,"zeroVector",new f.Vector3(0,0,0)),A(this,"lookAtMatrix",new f.Matrix4),A(this,"tempQuaternion",new f.Quaternion),A(this,"tempQuaternion2",new f.Quaternion),A(this,"identityQuaternion",new f.Quaternion),A(this,"unitX",new f.Vector3(1,0,0)),A(this,"unitY",new f.Vector3(0,1,0)),A(this,"unitZ",new f.Vector3(0,0,1)),A(this,"gizmo",void 0),A(this,"picker",void 0),A(this,"helper",void 0),A(this,"rotationAxis",new f.Vector3),A(this,"cameraPosition",new f.Vector3),A(this,"worldPositionStart",new f.Vector3),A(this,"worldQuaternionStart",new f.Quaternion),A(this,"worldPosition",new f.Vector3),A(this,"worldQuaternion",new f.Quaternion),A(this,"eye",new f.Vector3),A(this,"camera",null),A(this,"enabled",!0),A(this,"axis",null),A(this,"mode","translate"),A(this,"space","world"),A(this,"size",1),A(this,"dragging",!1),A(this,"showX",!0),A(this,"showY",!0),A(this,"showZ",!0),A(this,"updateMatrixWorld",()=>{let fe=this.space;this.mode==="scale"&&(fe="local");const le=fe==="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 ie=[];ie=ie.concat(this.picker[this.mode].children),ie=ie.concat(this.gizmo[this.mode].children),ie=ie.concat(this.helper[this.mode].children);for(let be=0;be<ie.length;be++){const V=ie[be];V.visible=!0,V.rotation.set(0,0,0),V.position.copy(this.worldPosition);let ce;if(this.camera.isOrthographicCamera?ce=(this.camera.top-this.camera.bottom)/this.camera.zoom:ce=this.worldPosition.distanceTo(this.cameraPosition)*Math.min(1.9*Math.tan(Math.PI*this.camera.fov/360)/this.camera.zoom,7),V.scale.set(1,1,1).multiplyScalar(ce*this.size/7),V.tag==="helper"){V.visible=!1,V.name==="AXIS"?(V.position.copy(this.worldPositionStart),V.visible=!!this.axis,this.axis==="X"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,0)),V.quaternion.copy(le).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(le).dot(this.eye))>.9&&(V.visible=!1)),this.axis==="Y"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,Math.PI/2)),V.quaternion.copy(le).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(le).dot(this.eye))>.9&&(V.visible=!1)),this.axis==="Z"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0)),V.quaternion.copy(le).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(le).dot(this.eye))>.9&&(V.visible=!1)),this.axis==="XYZE"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0)),this.alignVector.copy(this.rotationAxis),V.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.zeroVector,this.alignVector,this.unitY)),V.quaternion.multiply(this.tempQuaternion),V.visible=this.dragging),this.axis==="E"&&(V.visible=!1)):V.name==="START"?(V.position.copy(this.worldPositionStart),V.visible=this.dragging):V.name==="END"?(V.position.copy(this.worldPosition),V.visible=this.dragging):V.name==="DELTA"?(V.position.copy(this.worldPositionStart),V.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()),V.scale.copy(this.tempVector),V.visible=this.dragging):(V.quaternion.copy(le),this.dragging?V.position.copy(this.worldPositionStart):V.position.copy(this.worldPosition),this.axis&&(V.visible=this.axis.search(V.name)!==-1));continue}V.quaternion.copy(le),this.mode==="translate"||this.mode==="scale"?((V.name==="X"||V.name==="XYZX")&&Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(le).dot(this.eye))>.99&&(V.scale.set(1e-10,1e-10,1e-10),V.visible=!1),(V.name==="Y"||V.name==="XYZY")&&Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(le).dot(this.eye))>.99&&(V.scale.set(1e-10,1e-10,1e-10),V.visible=!1),(V.name==="Z"||V.name==="XYZZ")&&Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(le).dot(this.eye))>.99&&(V.scale.set(1e-10,1e-10,1e-10),V.visible=!1),V.name==="XY"&&Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(le).dot(this.eye))<.2&&(V.scale.set(1e-10,1e-10,1e-10),V.visible=!1),V.name==="YZ"&&Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(le).dot(this.eye))<.2&&(V.scale.set(1e-10,1e-10,1e-10),V.visible=!1),V.name==="XZ"&&Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(le).dot(this.eye))<.2&&(V.scale.set(1e-10,1e-10,1e-10),V.visible=!1),V.name.search("X")!==-1&&(this.alignVector.copy(this.unitX).applyQuaternion(le).dot(this.eye)<0?V.tag==="fwd"?V.visible=!1:V.scale.x*=-1:V.tag==="bwd"&&(V.visible=!1)),V.name.search("Y")!==-1&&(this.alignVector.copy(this.unitY).applyQuaternion(le).dot(this.eye)<0?V.tag==="fwd"?V.visible=!1:V.scale.y*=-1:V.tag==="bwd"&&(V.visible=!1)),V.name.search("Z")!==-1&&(this.alignVector.copy(this.unitZ).applyQuaternion(le).dot(this.eye)<0?V.tag==="fwd"?V.visible=!1:V.scale.z*=-1:V.tag==="bwd"&&(V.visible=!1))):this.mode==="rotate"&&(this.tempQuaternion2.copy(le),this.alignVector.copy(this.eye).applyQuaternion(this.tempQuaternion.copy(le).invert()),V.name.search("E")!==-1&&V.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.eye,this.zeroVector,this.unitY)),V.name==="X"&&(this.tempQuaternion.setFromAxisAngle(this.unitX,Math.atan2(-this.alignVector.y,this.alignVector.z)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),V.quaternion.copy(this.tempQuaternion)),V.name==="Y"&&(this.tempQuaternion.setFromAxisAngle(this.unitY,Math.atan2(this.alignVector.x,this.alignVector.z)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),V.quaternion.copy(this.tempQuaternion)),V.name==="Z"&&(this.tempQuaternion.setFromAxisAngle(this.unitZ,Math.atan2(this.alignVector.y,this.alignVector.x)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),V.quaternion.copy(this.tempQuaternion))),V.visible=V.visible&&(V.name.indexOf("X")===-1||this.showX),V.visible=V.visible&&(V.name.indexOf("Y")===-1||this.showY),V.visible=V.visible&&(V.name.indexOf("Z")===-1||this.showZ),V.visible=V.visible&&(V.name.indexOf("E")===-1||this.showX&&this.showY&&this.showZ),V.material.tempOpacity=V.material.tempOpacity||V.material.opacity,V.material.tempColor=V.material.tempColor||V.material.color.clone(),V.material.color.copy(V.material.tempColor),V.material.opacity=V.material.tempOpacity,this.enabled?this.axis&&(V.name===this.axis?(V.material.opacity=1,V.material.color.lerp(new f.Color(1,1,1),.5)):this.axis.split("").some(function(Ve){return V.name===Ve})?(V.material.opacity=1,V.material.color.lerp(new f.Color(1,1,1),.5)):(V.material.opacity*=.25,V.material.color.lerp(new f.Color(1,1,1),.5))):(V.material.opacity*=.5,V.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 o=i.clone();o.opacity=.33;const l=i.clone();l.color.set(16711680);const u=i.clone();u.color.set(65280);const h=i.clone();h.color.set(255);const d=i.clone();d.opacity=.25;const w=d.clone();w.color.set(16776960);const _=d.clone();_.color.set(65535);const y=d.clone();y.color.set(16711935),i.clone().color.set(16776960);const M=r.clone();M.color.set(16711680);const O=r.clone();O.color.set(65280);const I=r.clone();I.color.set(255);const T=r.clone();T.color.set(65535);const F=r.clone();F.color.set(16711935);const z=r.clone();z.color.set(16776960);const N=r.clone();N.color.set(7895160);const E=z.clone();E.opacity=.25;const Q=new f.CylinderGeometry(0,.05,.2,12,1,!1),$=new f.BoxGeometry(.125,.125,.125),U=new f.BufferGeometry;U.setAttribute("position",new f.Float32BufferAttribute([0,0,0,1,0,0],3));const j=(fe,le)=>{const ie=new f.BufferGeometry,be=[];for(let V=0;V<=64*le;++V)be.push(0,Math.cos(V/32*Math.PI)*fe,Math.sin(V/32*Math.PI)*fe);return ie.setAttribute("position",new f.Float32BufferAttribute(be,3)),ie},X=()=>{const fe=new f.BufferGeometry;return fe.setAttribute("position",new f.Float32BufferAttribute([0,0,0,1,1,1],3)),fe},Y={X:[[new f.Mesh(Q,l),[1,0,0],[0,0,-Math.PI/2],null,"fwd"],[new f.Mesh(Q,l),[1,0,0],[0,0,Math.PI/2],null,"bwd"],[new f.Line(U,M)]],Y:[[new f.Mesh(Q,u),[0,1,0],null,null,"fwd"],[new f.Mesh(Q,u),[0,1,0],[Math.PI,0,0],null,"bwd"],[new f.Line(U,O),null,[0,0,Math.PI/2]]],Z:[[new f.Mesh(Q,h),[0,0,1],[Math.PI/2,0,0],null,"fwd"],[new f.Mesh(Q,h),[0,0,1],[-Math.PI/2,0,0],null,"bwd"],[new f.Line(U,I),null,[0,-Math.PI/2,0]]],XYZ:[[new f.Mesh(new f.OctahedronGeometry(.1,0),d.clone()),[0,0,0],[0,0,0]]],XY:[[new f.Mesh(new f.PlaneGeometry(.295,.295),w.clone()),[.15,.15,0]],[new f.Line(U,z),[.18,.3,0],null,[.125,1,1]],[new f.Line(U,z),[.3,.18,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new f.Mesh(new f.PlaneGeometry(.295,.295),_.clone()),[0,.15,.15],[0,Math.PI/2,0]],[new f.Line(U,T),[0,.18,.3],[0,0,Math.PI/2],[.125,1,1]],[new f.Line(U,T),[0,.3,.18],[0,-Math.PI/2,0],[.125,1,1]]],XZ:[[new f.Mesh(new f.PlaneGeometry(.295,.295),y.clone()),[.15,0,.15],[-Math.PI/2,0,0]],[new f.Line(U,F),[.18,0,.3],null,[.125,1,1]],[new f.Line(U,F),[.3,0,.18],[0,-Math.PI/2,0],[.125,1,1]]]},Z={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]]]},ue={START:[[new f.Mesh(new f.OctahedronGeometry(.01,2),o),null,null,null,"helper"]],END:[[new f.Mesh(new f.OctahedronGeometry(.01,2),o),null,null,null,"helper"]],DELTA:[[new f.Line(X(),o),null,null,null,"helper"]],X:[[new f.Line(U,o.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new f.Line(U,o.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new f.Line(U,o.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},ge={X:[[new f.Line(j(1,.5),M)],[new f.Mesh(new f.OctahedronGeometry(.04,0),l),[0,0,.99],null,[1,3,1]]],Y:[[new f.Line(j(1,.5),O),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(j(1,.5),I),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(j(1.25,1),E),null,[0,Math.PI/2,0]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),E),[1.17,0,0],[0,0,-Math.PI/2],[1,1,.001]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),E),[-1.17,0,0],[0,0,Math.PI/2],[1,1,.001]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),E),[0,-1.17,0],[Math.PI,0,0],[1,1,.001]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),E),[0,1.17,0],[0,0,0],[1,1,.001]]],XYZE:[[new f.Line(j(1,1),N),null,[0,Math.PI/2,0]]]},pe={AXIS:[[new f.Line(U,o.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]]},me={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)]]},he={X:[[new f.Mesh($,l),[.8,0,0],[0,0,-Math.PI/2]],[new f.Line(U,M),null,null,[.8,1,1]]],Y:[[new f.Mesh($,u),[0,.8,0]],[new f.Line(U,O),null,[0,0,Math.PI/2],[.8,1,1]]],Z:[[new f.Mesh($,h),[0,0,.8],[Math.PI/2,0,0]],[new f.Line(U,I),null,[0,-Math.PI/2,0],[.8,1,1]]],XY:[[new f.Mesh($,w),[.85,.85,0],null,[2,2,.2]],[new f.Line(U,z),[.855,.98,0],null,[.125,1,1]],[new f.Line(U,z),[.98,.855,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new f.Mesh($,_),[0,.85,.85],null,[.2,2,2]],[new f.Line(U,T),[0,.855,.98],[0,0,Math.PI/2],[.125,1,1]],[new f.Line(U,T),[0,.98,.855],[0,-Math.PI/2,0],[.125,1,1]]],XZ:[[new f.Mesh($,y),[.85,0,.85],null,[2,.2,2]],[new f.Line(U,F),[.855,0,.98],null,[.125,1,1]],[new f.Line(U,F),[.98,0,.855],[0,-Math.PI/2,0],[.125,1,1]]],XYZX:[[new f.Mesh(new f.BoxGeometry(.125,.125,.125),d.clone()),[1.1,0,0]]],XYZY:[[new f.Mesh(new f.BoxGeometry(.125,.125,.125),d.clone()),[0,1.1,0]]],XYZZ:[[new f.Mesh(new f.BoxGeometry(.125,.125,.125),d.clone()),[0,0,1.1]]]},te={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($,s),[.85,.85,0],null,[3,3,.2]]],YZ:[[new f.Mesh($,s),[0,.85,.85],null,[.2,3,3]]],XZ:[[new f.Mesh($,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]]]},q={X:[[new f.Line(U,o.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new f.Line(U,o.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new f.Line(U,o.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},Ce=fe=>{const le=new f.Object3D;for(let ie in fe)for(let be=fe[ie].length;be--;){const V=fe[ie][be][0].clone(),ce=fe[ie][be][1],Ve=fe[ie][be][2],Te=fe[ie][be][3],_e=fe[ie][be][4];V.name=ie,V.tag=_e,ce&&V.position.set(ce[0],ce[1],ce[2]),Ve&&V.rotation.set(Ve[0],Ve[1],Ve[2]),Te&&V.scale.set(Te[0],Te[1],Te[2]),V.updateMatrix();const We=V.geometry.clone();We.applyMatrix4(V.matrix),V.geometry=We,V.renderOrder=1/0,V.position.set(0,0,0),V.rotation.set(0,0,0),V.scale.set(1,1,1),le.add(V)}return le};this.gizmo={},this.picker={},this.helper={},this.add(this.gizmo.translate=Ce(Y)),this.add(this.gizmo.rotate=Ce(ge)),this.add(this.gizmo.scale=Ce(he)),this.add(this.picker.translate=Ce(Z)),this.add(this.picker.rotate=Ce(me)),this.add(this.picker.scale=Ce(te)),this.add(this.helper.translate=Ce(ue)),this.add(this.helper.rotate=Ce(pe)),this.add(this.helper.scale=Ce(q)),this.picker.translate.visible=!1,this.picker.rotate.visible=!1,this.picker.scale.visible=!1}}class oa 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})),A(this,"isTransformControlsPlane",!0),A(this,"type","TransformControlsPlane"),A(this,"unitX",new f.Vector3(1,0,0)),A(this,"unitY",new f.Vector3(0,1,0)),A(this,"unitZ",new f.Vector3(0,0,1)),A(this,"tempVector",new f.Vector3),A(this,"dirVector",new f.Vector3),A(this,"alignVector",new f.Vector3),A(this,"tempMatrix",new f.Matrix4),A(this,"identityQuaternion",new f.Quaternion),A(this,"cameraQuaternion",new f.Quaternion),A(this,"worldPosition",new f.Vector3),A(this,"worldQuaternion",new f.Quaternion),A(this,"eye",new f.Vector3),A(this,"axis",null),A(this,"mode","translate"),A(this,"space","world"),A(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 mn=new f.Euler(0,0,0,"YXZ"),fn=new f.Vector3,aa={type:"change"},la={type:"lock"},ca={type:"unlock"},Ar=Math.PI/2;class pa extends f.EventDispatcher{constructor(i,r){super(),A(this,"camera",void 0),A(this,"domElement",void 0),A(this,"isLocked",void 0),A(this,"minPolarAngle",void 0),A(this,"maxPolarAngle",void 0),A(this,"pointerSpeed",void 0),A(this,"onMouseMove",s=>{if(!this.domElement||this.isLocked===!1)return;const o=s.movementX||s.mozMovementX||s.webkitMovementX||0,l=s.movementY||s.mozMovementY||s.webkitMovementY||0;mn.setFromQuaternion(this.camera.quaternion),mn.y-=o*.002*this.pointerSpeed,mn.x-=l*.002*this.pointerSpeed,mn.x=Math.max(Ar-this.maxPolarAngle,Math.min(Ar-this.minPolarAngle,mn.x)),this.camera.quaternion.setFromEuler(mn),this.dispatchEvent(aa)}),A(this,"onPointerlockChange",()=>{this.domElement&&(this.domElement.ownerDocument.pointerLockElement===this.domElement?(this.dispatchEvent(la),this.isLocked=!0):(this.dispatchEvent(ca),this.isLocked=!1))}),A(this,"onPointerlockError",()=>{console.error("THREE.PointerLockControls: Unable to use Pointer Lock API")}),A(this,"connect",s=>{this.domElement=s||this.domElement,this.domElement&&(this.domElement.ownerDocument.addEventListener("mousemove",this.onMouseMove),this.domElement.ownerDocument.addEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.addEventListener("pointerlockerror",this.onPointerlockError))}),A(this,"disconnect",()=>{this.domElement&&(this.domElement.ownerDocument.removeEventListener("mousemove",this.onMouseMove),this.domElement.ownerDocument.removeEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.removeEventListener("pointerlockerror",this.onPointerlockError))}),A(this,"dispose",()=>{this.disconnect()}),A(this,"getObject",()=>this.camera),A(this,"direction",new f.Vector3(0,0,-1)),A(this,"getDirection",s=>s.copy(this.direction).applyQuaternion(this.camera.quaternion)),A(this,"moveForward",s=>{fn.setFromMatrixColumn(this.camera.matrix,0),fn.crossVectors(this.camera.up,fn),this.camera.position.addScaledVector(fn,s)}),A(this,"moveRight",s=>{fn.setFromMatrixColumn(this.camera.matrix,0),this.camera.position.addScaledVector(fn,s)}),A(this,"lock",()=>{this.domElement&&this.domElement.requestPointerLock()}),A(this,"unlock",()=>{this.domElement&&this.domElement.ownerDocument.exitPointerLock()}),this.camera=i,this.domElement=r,this.isLocked=!1,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.pointerSpeed=1,r&&this.connect(r)}}const Sr=(g,i)=>(g%i+i)%i;class Lr extends f.EventDispatcher{constructor(i,r){super(),A(this,"object",void 0),A(this,"domElement",void 0),A(this,"enabled",!0),A(this,"target",new f.Vector3),A(this,"minDistance",0),A(this,"maxDistance",1/0),A(this,"minZoom",0),A(this,"maxZoom",1/0),A(this,"minPolarAngle",0),A(this,"maxPolarAngle",Math.PI),A(this,"minAzimuthAngle",-1/0),A(this,"maxAzimuthAngle",1/0),A(this,"enableDamping",!1),A(this,"dampingFactor",.05),A(this,"enableZoom",!0),A(this,"zoomSpeed",1),A(this,"enableRotate",!0),A(this,"rotateSpeed",1),A(this,"enablePan",!0),A(this,"panSpeed",1),A(this,"screenSpacePanning",!0),A(this,"keyPanSpeed",7),A(this,"autoRotate",!1),A(this,"autoRotateSpeed",2),A(this,"reverseOrbit",!1),A(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),A(this,"mouseButtons",{LEFT:f.MOUSE.ROTATE,MIDDLE:f.MOUSE.DOLLY,RIGHT:f.MOUSE.PAN}),A(this,"touches",{ONE:f.TOUCH.ROTATE,TWO:f.TOUCH.DOLLY_PAN}),A(this,"target0",void 0),A(this,"position0",void 0),A(this,"zoom0",void 0),A(this,"_domElementKeyEvents",null),A(this,"getPolarAngle",void 0),A(this,"getAzimuthalAngle",void 0),A(this,"setPolarAngle",void 0),A(this,"setAzimuthalAngle",void 0),A(this,"getDistance",void 0),A(this,"listenToKeyEvents",void 0),A(this,"saveState",void 0),A(this,"reset",void 0),A(this,"update",void 0),A(this,"connect",void 0),A(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=()=>_.phi,this.getAzimuthalAngle=()=>_.theta,this.setPolarAngle=D=>{let K=Sr(D,2*Math.PI),H=_.phi;H<0&&(H+=2*Math.PI),K<0&&(K+=2*Math.PI);let se=Math.abs(K-H);2*Math.PI-se<se&&(K<H?K+=2*Math.PI:H+=2*Math.PI),y.phi=K-H,s.update()},this.setAzimuthalAngle=D=>{let K=Sr(D,2*Math.PI),H=_.theta;H<0&&(H+=2*Math.PI),K<0&&(K+=2*Math.PI);let se=Math.abs(K-H);2*Math.PI-se<se&&(K<H?K+=2*Math.PI:H+=2*Math.PI),y.theta=K-H,s.update()},this.getDistance=()=>s.object.position.distanceTo(s.target),this.listenToKeyEvents=D=>{D.addEventListener("keydown",ut),this._domElementKeyEvents=D},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(o),s.update(),d=h.NONE},this.update=(()=>{const D=new f.Vector3,K=new f.Quaternion().setFromUnitVectors(i.up,new f.Vector3(0,1,0)),H=K.clone().invert(),se=new f.Vector3,ye=new f.Quaternion,De=2*Math.PI;return function(){const qt=s.object.position;D.copy(qt).sub(s.target),D.applyQuaternion(K),_.setFromVector3(D),s.autoRotate&&d===h.NONE&&ue(Y()),s.enableDamping?(_.theta+=y.theta*s.dampingFactor,_.phi+=y.phi*s.dampingFactor):(_.theta+=y.theta,_.phi+=y.phi);let Ne=s.minAzimuthAngle,Fe=s.maxAzimuthAngle;return isFinite(Ne)&&isFinite(Fe)&&(Ne<-Math.PI?Ne+=De:Ne>Math.PI&&(Ne-=De),Fe<-Math.PI?Fe+=De:Fe>Math.PI&&(Fe-=De),Ne<=Fe?_.theta=Math.max(Ne,Math.min(Fe,_.theta)):_.theta=_.theta>(Ne+Fe)/2?Math.max(Ne,_.theta):Math.min(Fe,_.theta)),_.phi=Math.max(s.minPolarAngle,Math.min(s.maxPolarAngle,_.phi)),_.makeSafe(),_.radius*=x,_.radius=Math.max(s.minDistance,Math.min(s.maxDistance,_.radius)),s.enableDamping===!0?s.target.addScaledVector(M,s.dampingFactor):s.target.add(M),D.setFromSpherical(_),D.applyQuaternion(H),qt.copy(s.target).add(D),s.object.lookAt(s.target),s.enableDamping===!0?(y.theta*=1-s.dampingFactor,y.phi*=1-s.dampingFactor,M.multiplyScalar(1-s.dampingFactor)):(y.set(0,0,0),M.set(0,0,0)),x=1,O||se.distanceToSquared(s.object.position)>w||8*(1-ye.dot(s.object.quaternion))>w?(s.dispatchEvent(o),se.copy(s.object.position),ye.copy(s.object.quaternion),O=!1,!0):!1}})(),this.connect=D=>{D===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),s.domElement=D,s.domElement.style.touchAction="none",s.domElement.addEventListener("contextmenu",Yt),s.domElement.addEventListener("pointerdown",Je),s.domElement.addEventListener("pointercancel",_n),s.domElement.addEventListener("wheel",xn)},this.dispose=()=>{var D,K,H,se,ye,De;(D=s.domElement)===null||D===void 0||D.removeEventListener("contextmenu",Yt),(K=s.domElement)===null||K===void 0||K.removeEventListener("pointerdown",Je),(H=s.domElement)===null||H===void 0||H.removeEventListener("pointercancel",_n),(se=s.domElement)===null||se===void 0||se.removeEventListener("wheel",xn),(ye=s.domElement)===null||ye===void 0||ye.ownerDocument.removeEventListener("pointermove",Xt),(De=s.domElement)===null||De===void 0||De.ownerDocument.removeEventListener("pointerup",at),s._domElementKeyEvents!==null&&s._domElementKeyEvents.removeEventListener("keydown",ut)};const s=this,o={type:"change"},l={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 d=h.NONE;const w=1e-6,_=new f.Spherical,y=new f.Spherical;let x=1;const M=new f.Vector3;let O=!1;const I=new f.Vector2,T=new f.Vector2,F=new f.Vector2,z=new f.Vector2,N=new f.Vector2,E=new f.Vector2,Q=new f.Vector2,$=new f.Vector2,U=new f.Vector2,j=[],X={};function Y(){return 2*Math.PI/60/60*s.autoRotateSpeed}function Z(){return Math.pow(.95,s.zoomSpeed)}function ue(D){s.reverseOrbit?y.theta+=D:y.theta-=D}function ge(D){s.reverseOrbit?y.phi+=D:y.phi-=D}const pe=(()=>{const D=new f.Vector3;return function(H,se){D.setFromMatrixColumn(se,0),D.multiplyScalar(-H),M.add(D)}})(),me=(()=>{const D=new f.Vector3;return function(H,se){s.screenSpacePanning===!0?D.setFromMatrixColumn(se,1):(D.setFromMatrixColumn(se,0),D.crossVectors(s.object.up,D)),D.multiplyScalar(H),M.add(D)}})(),he=(()=>{const D=new f.Vector3;return function(H,se){const ye=s.domElement;if(ye&&s.object instanceof f.PerspectiveCamera&&s.object.isPerspectiveCamera){const De=s.object.position;D.copy(De).sub(s.target);let Dt=D.length();Dt*=Math.tan(s.object.fov/2*Math.PI/180),pe(2*H*Dt/ye.clientHeight,s.object.matrix),me(2*se*Dt/ye.clientHeight,s.object.matrix)}else ye&&s.object instanceof f.OrthographicCamera&&s.object.isOrthographicCamera?(pe(H*(s.object.right-s.object.left)/s.object.zoom/ye.clientWidth,s.object.matrix),me(se*(s.object.top-s.object.bottom)/s.object.zoom/ye.clientHeight,s.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),s.enablePan=!1)}})();function te(D){s.object instanceof f.PerspectiveCamera&&s.object.isPerspectiveCamera?x/=D:s.object instanceof f.OrthographicCamera&&s.object.isOrthographicCamera?(s.object.zoom=Math.max(s.minZoom,Math.min(s.maxZoom,s.object.zoom*D)),s.object.updateProjectionMatrix(),O=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),s.enableZoom=!1)}function q(D){s.object instanceof f.PerspectiveCamera&&s.object.isPerspectiveCamera?x*=D:s.object instanceof f.OrthographicCamera&&s.object.isOrthographicCamera?(s.object.zoom=Math.max(s.minZoom,Math.min(s.maxZoom,s.object.zoom/D)),s.object.updateProjectionMatrix(),O=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),s.enableZoom=!1)}function Ce(D){I.set(D.clientX,D.clientY)}function fe(D){Q.set(D.clientX,D.clientY)}function le(D){z.set(D.clientX,D.clientY)}function ie(D){T.set(D.clientX,D.clientY),F.subVectors(T,I).multiplyScalar(s.rotateSpeed);const K=s.domElement;K&&(ue(2*Math.PI*F.x/K.clientHeight),ge(2*Math.PI*F.y/K.clientHeight)),I.copy(T),s.update()}function be(D){$.set(D.clientX,D.clientY),U.subVectors($,Q),U.y>0?te(Z()):U.y<0&&q(Z()),Q.copy($),s.update()}function V(D){N.set(D.clientX,D.clientY),E.subVectors(N,z).multiplyScalar(s.panSpeed),he(E.x,E.y),z.copy(N),s.update()}function ce(D){D.deltaY<0?q(Z()):D.deltaY>0&&te(Z()),s.update()}function Ve(D){let K=!1;switch(D.code){case s.keys.UP:he(0,s.keyPanSpeed),K=!0;break;case s.keys.BOTTOM:he(0,-s.keyPanSpeed),K=!0;break;case s.keys.LEFT:he(s.keyPanSpeed,0),K=!0;break;case s.keys.RIGHT:he(-s.keyPanSpeed,0),K=!0;break}K&&(D.preventDefault(),s.update())}function Te(){if(j.length==1)I.set(j[0].pageX,j[0].pageY);else{const D=.5*(j[0].pageX+j[1].pageX),K=.5*(j[0].pageY+j[1].pageY);I.set(D,K)}}function _e(){if(j.length==1)z.set(j[0].pageX,j[0].pageY);else{const D=.5*(j[0].pageX+j[1].pageX),K=.5*(j[0].pageY+j[1].pageY);z.set(D,K)}}function We(){const D=j[0].pageX-j[1].pageX,K=j[0].pageY-j[1].pageY,H=Math.sqrt(D*D+K*K);Q.set(0,H)}function gn(){s.enableZoom&&We(),s.enablePan&&_e()}function Re(){s.enableZoom&&We(),s.enableRotate&&Te()}function wn(D){if(j.length==1)T.set(D.pageX,D.pageY);else{const H=gt(D),se=.5*(D.pageX+H.x),ye=.5*(D.pageY+H.y);T.set(se,ye)}F.subVectors(T,I).multiplyScalar(s.rotateSpeed);const K=s.domElement;K&&(ue(2*Math.PI*F.x/K.clientHeight),ge(2*Math.PI*F.y/K.clientHeight)),I.copy(T)}function $t(D){if(j.length==1)N.set(D.pageX,D.pageY);else{const K=gt(D),H=.5*(D.pageX+K.x),se=.5*(D.pageY+K.y);N.set(H,se)}E.subVectors(N,z).multiplyScalar(s.panSpeed),he(E.x,E.y),z.copy(N)}function ot(D){const K=gt(D),H=D.pageX-K.x,se=D.pageY-K.y,ye=Math.sqrt(H*H+se*se);$.set(0,ye),U.set(0,Math.pow($.y/Q.y,s.zoomSpeed)),te(U.y),Q.copy($)}function vt(D){s.enableZoom&&ot(D),s.enablePan&&$t(D)}function Be(D){s.enableZoom&&ot(D),s.enableRotate&&wn(D)}function Je(D){if(s.enabled!==!1){if(j.length===0){var K,H;(K=s.domElement)===null||K===void 0||K.ownerDocument.addEventListener("pointermove",Xt),(H=s.domElement)===null||H===void 0||H.ownerDocument.addEventListener("pointerup",at)}Pn(D),D.pointerType==="touch"?bt(D):$n(D)}}function Xt(D){s.enabled!==!1&&(D.pointerType==="touch"?Cn(D):yn(D))}function at(D){if(ht(D),j.length===0){var K,H,se;(K=s.domElement)===null||K===void 0||K.releasePointerCapture(D.pointerId),(H=s.domElement)===null||H===void 0||H.ownerDocument.removeEventListener("pointermove",Xt),(se=s.domElement)===null||se===void 0||se.ownerDocument.removeEventListener("pointerup",at)}s.dispatchEvent(u),d=h.NONE}function _n(D){ht(D)}function $n(D){let K;switch(D.button){case 0:K=s.mouseButtons.LEFT;break;case 1:K=s.mouseButtons.MIDDLE;break;case 2:K=s.mouseButtons.RIGHT;break;default:K=-1}switch(K){case f.MOUSE.DOLLY:if(s.enableZoom===!1)return;fe(D),d=h.DOLLY;break;case f.MOUSE.ROTATE:if(D.ctrlKey||D.metaKey||D.shiftKey){if(s.enablePan===!1)return;le(D),d=h.PAN}else{if(s.enableRotate===!1)return;Ce(D),d=h.ROTATE}break;case f.MOUSE.PAN:if(D.ctrlKey||D.metaKey||D.shiftKey){if(s.enableRotate===!1)return;Ce(D),d=h.ROTATE}else{if(s.enablePan===!1)return;le(D),d=h.PAN}break;default:d=h.NONE}d!==h.NONE&&s.dispatchEvent(l)}function yn(D){if(s.enabled!==!1)switch(d){case h.ROTATE:if(s.enableRotate===!1)return;ie(D);break;case h.DOLLY:if(s.enableZoom===!1)return;be(D);break;case h.PAN:if(s.enablePan===!1)return;V(D);break}}function xn(D){s.enabled===!1||s.enableZoom===!1||d!==h.NONE&&d!==h.ROTATE||(D.preventDefault(),s.dispatchEvent(l),ce(D),s.dispatchEvent(u))}function ut(D){s.enabled===!1||s.enablePan===!1||Ve(D)}function bt(D){switch(lt(D),j.length){case 1:switch(s.touches.ONE){case f.TOUCH.ROTATE:if(s.enableRotate===!1)return;Te(),d=h.TOUCH_ROTATE;break;case f.TOUCH.PAN:if(s.enablePan===!1)return;_e(),d=h.TOUCH_PAN;break;default:d=h.NONE}break;case 2:switch(s.touches.TWO){case f.TOUCH.DOLLY_PAN:if(s.enableZoom===!1&&s.enablePan===!1)return;gn(),d=h.TOUCH_DOLLY_PAN;break;case f.TOUCH.DOLLY_ROTATE:if(s.enableZoom===!1&&s.enableRotate===!1)return;Re(),d=h.TOUCH_DOLLY_ROTATE;break;default:d=h.NONE}break;default:d=h.NONE}d!==h.NONE&&s.dispatchEvent(l)}function Cn(D){switch(lt(D),d){case h.TOUCH_ROTATE:if(s.enableRotate===!1)return;wn(D),s.update();break;case h.TOUCH_PAN:if(s.enablePan===!1)return;$t(D),s.update();break;case h.TOUCH_DOLLY_PAN:if(s.enableZoom===!1&&s.enablePan===!1)return;vt(D),s.update();break;case h.TOUCH_DOLLY_ROTATE:if(s.enableZoom===!1&&s.enableRotate===!1)return;Be(D),s.update();break;default:d=h.NONE}}function Yt(D){s.enabled!==!1&&D.preventDefault()}function Pn(D){j.push(D)}function ht(D){delete X[D.pointerId];for(let K=0;K<j.length;K++)if(j[K].pointerId==D.pointerId){j.splice(K,1);return}}function lt(D){let K=X[D.pointerId];K===void 0&&(K=new f.Vector2,X[D.pointerId]=K),K.set(D.pageX,D.pageY)}function gt(D){const K=D.pointerId===j[0].pointerId?j[1]:j[0];return X[K.pointerId]}r!==void 0&&this.connect(r),this.update()}}class ua extends Lr{constructor(i,r){super(i,r),this.screenSpacePanning=!1,this.mouseButtons.LEFT=f.MOUSE.PAN,this.mouseButtons.RIGHT=f.MOUSE.ROTATE,this.touches.ONE=f.TOUCH.PAN,this.touches.TWO=f.TOUCH.DOLLY_ROTATE}}class ha extends f.Loader{constructor(i){super(i),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(r){return new ba(r)}),this.register(function(r){return new Pa(r)}),this.register(function(r){return new ka(r)}),this.register(function(r){return new Ma(r)}),this.register(function(r){return new wa(r)}),this.register(function(r){return new _a(r)}),this.register(function(r){return new ya(r)}),this.register(function(r){return new xa(r)}),this.register(function(r){return new va(r)}),this.register(function(r){return new Ca(r)}),this.register(function(r){return new ga(r)}),this.register(function(r){return new ma(r)}),this.register(function(r){return new Aa(r)}),this.register(function(r){return new Sa(r)})}load(i,r,s,o){const l=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(w){o?o(w):console.error(w),l.manager.itemError(i),l.manager.itemEnd(i)},d=new f.FileLoader(this.manager);d.setPath(this.path),d.setResponseType("arraybuffer"),d.setRequestHeader(this.requestHeader),d.setWithCredentials(this.withCredentials),d.load(i,function(w){try{l.parse(w,u,function(_){r(_),l.manager.itemEnd(i)},h)}catch(_){h(_)}},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,o){let l;const u={},h={};if(typeof i=="string")l=JSON.parse(i);else if(i instanceof ArrayBuffer)if(f.LoaderUtils.decodeText(new Uint8Array(i.slice(0,4)))===Vr){try{u[ae.KHR_BINARY_GLTF]=new La(i)}catch(_){o&&o(_);return}l=JSON.parse(u[ae.KHR_BINARY_GLTF].content)}else l=JSON.parse(f.LoaderUtils.decodeText(new Uint8Array(i)));else l=i;if(l.asset===void 0||l.asset.version[0]<2){o&&o(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const d=new Ra(l,{path:r||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});d.fileLoader.setRequestHeader(this.requestHeader);for(let w=0;w<this.pluginCallbacks.length;w++){const _=this.pluginCallbacks[w](d);h[_.name]=_,u[_.name]=!0}if(l.extensionsUsed)for(let w=0;w<l.extensionsUsed.length;++w){const _=l.extensionsUsed[w],y=l.extensionsRequired||[];switch(_){case ae.KHR_MATERIALS_UNLIT:u[_]=new fa;break;case ae.KHR_DRACO_MESH_COMPRESSION:u[_]=new Va(l,this.dracoLoader);break;case ae.KHR_TEXTURE_TRANSFORM:u[_]=new Da;break;case ae.KHR_MESH_QUANTIZATION:u[_]=new Ia;break;default:y.indexOf(_)>=0&&h[_]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+_+'".')}}d.setExtensions(u),d.setPlugins(h),d.parse(s,o)}parseAsync(i,r){const s=this;return new Promise(function(o,l){s.parse(i,r,o,l)})}}function da(){let g={};return{get:function(i){return g[i]},add:function(i,r){g[i]=r},remove:function(i){delete g[i]},removeAll:function(){g={}}}}const ae={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_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_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class ma{constructor(i){this.parser=i,this.name=ae.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const i=this.parser,r=this.parser.json.nodes||[];for(let s=0,o=r.length;s<o;s++){const l=r[s];l.extensions&&l.extensions[this.name]&&l.extensions[this.name].light!==void 0&&i._addNodeRef(this.cache,l.extensions[this.name].light)}}_loadLight(i){const r=this.parser,s="light:"+i;let o=r.cache.get(s);if(o)return o;const l=r.json,d=((l.extensions&&l.extensions[this.name]||{}).lights||[])[i];let w;const _=new f.Color(16777215);d.color!==void 0&&_.fromArray(d.color);const y=d.range!==void 0?d.range:0;switch(d.type){case"directional":w=new f.DirectionalLight(_),w.target.position.set(0,0,-1),w.add(w.target);break;case"point":w=new f.PointLight(_),w.distance=y;break;case"spot":w=new f.SpotLight(_),w.distance=y,d.spot=d.spot||{},d.spot.innerConeAngle=d.spot.innerConeAngle!==void 0?d.spot.innerConeAngle:0,d.spot.outerConeAngle=d.spot.outerConeAngle!==void 0?d.spot.outerConeAngle:Math.PI/4,w.angle=d.spot.outerConeAngle,w.penumbra=1-d.spot.innerConeAngle/d.spot.outerConeAngle,w.target.position.set(0,0,-1),w.add(w.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+d.type)}return w.position.set(0,0,0),w.decay=2,Vt(w,d),d.intensity!==void 0&&(w.intensity=d.intensity),w.name=r.createUniqueName(d.name||"light_"+i),o=Promise.resolve(w),r.cache.add(s,o),o}getDependency(i,r){if(i==="light")return this._loadLight(r)}createNodeAttachment(i){const r=this,s=this.parser,l=s.json.nodes[i],h=(l.extensions&&l.extensions[this.name]||{}).light;return h===void 0?null:this._loadLight(h).then(function(d){return s._getNodeRef(r.cache,h,d)})}}class fa{constructor(){this.name=ae.KHR_MATERIALS_UNLIT}getMaterialType(){return f.MeshBasicMaterial}extendParams(i,r,s){const o=[];i.color=new f.Color(1,1,1),i.opacity=1;const l=r.pbrMetallicRoughness;if(l){if(Array.isArray(l.baseColorFactor)){const u=l.baseColorFactor;i.color.fromArray(u),i.opacity=u[3]}l.baseColorTexture!==void 0&&o.push(s.assignTexture(i,"map",l.baseColorTexture,3001))}return Promise.all(o)}}class va{constructor(i){this.parser=i,this.name=ae.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(i,r){const o=this.parser.json.materials[i];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=o.extensions[this.name].emissiveStrength;return l!==void 0&&(r.emissiveIntensity=l),Promise.resolve()}}class ba{constructor(i){this.parser=i,this.name=ae.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,o=s.json.materials[i];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[],u=o.extensions[this.name];if(u.clearcoatFactor!==void 0&&(r.clearcoat=u.clearcoatFactor),u.clearcoatTexture!==void 0&&l.push(s.assignTexture(r,"clearcoatMap",u.clearcoatTexture)),u.clearcoatRoughnessFactor!==void 0&&(r.clearcoatRoughness=u.clearcoatRoughnessFactor),u.clearcoatRoughnessTexture!==void 0&&l.push(s.assignTexture(r,"clearcoatRoughnessMap",u.clearcoatRoughnessTexture)),u.clearcoatNormalTexture!==void 0&&(l.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(l)}}class ga{constructor(i){this.parser=i,this.name=ae.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,o=s.json.materials[i];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[],u=o.extensions[this.name];return u.iridescenceFactor!==void 0&&(r.iridescence=u.iridescenceFactor),u.iridescenceTexture!==void 0&&l.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&&l.push(s.assignTexture(r,"iridescenceThicknessMap",u.iridescenceThicknessTexture)),Promise.all(l)}}class wa{constructor(i){this.parser=i,this.name=ae.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,o=s.json.materials[i];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[];r.sheenColor=new f.Color(0,0,0),r.sheenRoughness=0,r.sheen=1;const u=o.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&&l.push(s.assignTexture(r,"sheenColorMap",u.sheenColorTexture,3001)),u.sheenRoughnessTexture!==void 0&&l.push(s.assignTexture(r,"sheenRoughnessMap",u.sheenRoughnessTexture)),Promise.all(l)}}class _a{constructor(i){this.parser=i,this.name=ae.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,o=s.json.materials[i];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[],u=o.extensions[this.name];return u.transmissionFactor!==void 0&&(r.transmission=u.transmissionFactor),u.transmissionTexture!==void 0&&l.push(s.assignTexture(r,"transmissionMap",u.transmissionTexture)),Promise.all(l)}}class ya{constructor(i){this.parser=i,this.name=ae.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,o=s.json.materials[i];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[],u=o.extensions[this.name];r.thickness=u.thicknessFactor!==void 0?u.thicknessFactor:0,u.thicknessTexture!==void 0&&l.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(l)}}class xa{constructor(i){this.parser=i,this.name=ae.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 o=this.parser.json.materials[i];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=o.extensions[this.name];return r.ior=l.ior!==void 0?l.ior:1.5,Promise.resolve()}}class Ca{constructor(i){this.parser=i,this.name=ae.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,o=s.json.materials[i];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[],u=o.extensions[this.name];r.specularIntensity=u.specularFactor!==void 0?u.specularFactor:1,u.specularTexture!==void 0&&l.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&&l.push(s.assignTexture(r,"specularColorMap",u.specularColorTexture,3001)),Promise.all(l)}}class Pa{constructor(i){this.parser=i,this.name=ae.KHR_TEXTURE_BASISU}loadTexture(i){const r=this.parser,s=r.json,o=s.textures[i];if(!o.extensions||!o.extensions[this.name])return null;const l=o.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,l.source,u)}}class ka{constructor(i){this.parser=i,this.name=ae.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(i){const r=this.name,s=this.parser,o=s.json,l=o.textures[i];if(!l.extensions||!l.extensions[r])return null;const u=l.extensions[r],h=o.images[u.source];let d=s.textureLoader;if(h.uri){const w=s.options.manager.getHandler(h.uri);w!==null&&(d=w)}return this.detectSupport().then(function(w){if(w)return s.loadTextureImage(i,u.source,d);if(o.extensionsRequired&&o.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 Ma{constructor(i){this.parser=i,this.name=ae.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(i){const r=this.name,s=this.parser,o=s.json,l=o.textures[i];if(!l.extensions||!l.extensions[r])return null;const u=l.extensions[r],h=o.images[u.source];let d=s.textureLoader;if(h.uri){const w=s.options.manager.getHandler(h.uri);w!==null&&(d=w)}return this.detectSupport().then(function(w){if(w)return s.loadTextureImage(i,u.source,d);if(o.extensionsRequired&&o.extensionsRequired.indexOf(r)>=0)throw new Error("THREE.GLTFLoader: AVIF 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/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",r.onload=r.onerror=function(){i(r.height===1)}})),this.isSupported}}class Aa{constructor(i){this.name=ae.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 o=s.extensions[this.name],l=this.parser.getDependency("buffer",o.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 l.then(function(h){const d=o.byteOffset||0,w=o.byteLength||0,_=o.count,y=o.byteStride,x=new Uint8Array(h,d,w);return u.decodeGltfBufferAsync?u.decodeGltfBufferAsync(_,y,x,o.mode,o.filter).then(function(M){return M.buffer}):u.ready.then(function(){const M=new ArrayBuffer(_*y);return u.decodeGltfBuffer(new Uint8Array(M),_,y,x,o.mode,o.filter),M})})}else return null}}class Sa{constructor(i){this.name=ae.EXT_MESH_GPU_INSTANCING,this.parser=i}createNodeMesh(i){const r=this.parser.json,s=r.nodes[i];if(!s.extensions||!s.extensions[this.name]||s.mesh===void 0)return null;const o=r.meshes[s.mesh];for(const w of o.primitives)if(w.mode!==Ze.TRIANGLES&&w.mode!==Ze.TRIANGLE_STRIP&&w.mode!==Ze.TRIANGLE_FAN&&w.mode!==void 0)return null;const u=s.extensions[this.name].attributes,h=[],d={};for(const w in u)h.push(this.parser.getDependency("accessor",u[w]).then(_=>(d[w]=_,d[w])));return h.length<1?null:(h.push(this.parser.createNodeMesh(i)),Promise.all(h).then(w=>{const _=w.pop(),y=_.isGroup?_.children:[_],x=w[0].count,M=[];for(const O of y){const I=new f.Matrix4,T=new f.Vector3,F=new f.Quaternion,z=new f.Vector3(1,1,1),N=new f.InstancedMesh(O.geometry,O.material,x);for(let E=0;E<x;E++)d.TRANSLATION&&T.fromBufferAttribute(d.TRANSLATION,E),d.ROTATION&&F.fromBufferAttribute(d.ROTATION,E),d.SCALE&&z.fromBufferAttribute(d.SCALE,E),N.setMatrixAt(E,I.compose(T,F,z));for(const E in d)E!=="TRANSLATION"&&E!=="ROTATION"&&E!=="SCALE"&&O.geometry.setAttribute(E,d[E]);f.Object3D.prototype.copy.call(N,O),this.parser.assignFinalMaterial(N),M.push(N)}return _.isGroup?(_.clear(),_.add(...M),_):M[0]}))}}const Vr="glTF",Gn=12,Dr={JSON:1313821514,BIN:5130562};class La{constructor(i){this.name=ae.KHR_BINARY_GLTF,this.content=null,this.body=null;const r=new DataView(i,0,Gn);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!==Vr)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-Gn,o=new DataView(i,Gn);let l=0;for(;l<s;){const u=o.getUint32(l,!0);l+=4;const h=o.getUint32(l,!0);if(l+=4,h===Dr.JSON){const d=new Uint8Array(i,Gn+l,u);this.content=f.LoaderUtils.decodeText(d)}else if(h===Dr.BIN){const d=Gn+l;this.body=i.slice(d,d+u)}l+=u}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class Va{constructor(i,r){if(!r)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=ae.KHR_DRACO_MESH_COMPRESSION,this.json=i,this.dracoLoader=r,this.dracoLoader.preload()}decodePrimitive(i,r){const s=this.json,o=this.dracoLoader,l=i.extensions[this.name].bufferView,u=i.extensions[this.name].attributes,h={},d={},w={};for(const _ in u){const y=as[_]||_.toLowerCase();h[y]=u[_]}for(const _ in i.attributes){const y=as[_]||_.toLowerCase();if(u[_]!==void 0){const x=s.accessors[i.attributes[_]],M=vn[x.componentType];w[y]=M.name,d[y]=x.normalized===!0}}return r.getDependency("bufferView",l).then(function(_){return new Promise(function(y){o.decodeDracoFile(_,function(x){for(const M in x.attributes){const O=x.attributes[M],I=d[M];I!==void 0&&(O.normalized=I)}y(x)},h,w)})})}}class Da{constructor(){this.name=ae.KHR_TEXTURE_TRANSFORM}extendTexture(i,r){return(r.texCoord===void 0||r.texCoord===i.channel)&&r.offset===void 0&&r.rotation===void 0&&r.scale===void 0||(i=i.clone(),r.texCoord!==void 0&&(i.channel=r.texCoord),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 Ia{constructor(){this.name=ae.KHR_MESH_QUANTIZATION}}class Ir extends f.Interpolant{constructor(i,r,s,o){super(i,r,s,o)}copySampleValue_(i){const r=this.resultBuffer,s=this.sampleValues,o=this.valueSize,l=i*o*3+o;for(let u=0;u!==o;u++)r[u]=s[l+u];return r}interpolate_(i,r,s,o){const l=this.resultBuffer,u=this.sampleValues,h=this.valueSize,d=h*2,w=h*3,_=o-r,y=(s-r)/_,x=y*y,M=x*y,O=i*w,I=O-w,T=-2*M+3*x,F=M-x,z=1-T,N=F-x+y;for(let E=0;E!==h;E++){const Q=u[I+E+h],$=u[I+E+d]*_,U=u[O+E+h],j=u[O+E]*_;l[E]=z*Q+N*$+T*U+F*j}return l}}const Ta=new f.Quaternion;class Ea extends Ir{interpolate_(i,r,s,o){const l=super.interpolate_(i,r,s,o);return Ta.fromArray(l).normalize().toArray(l),l}}const Ze={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},Tr={9728:f.NearestFilter,9729:f.LinearFilter,9984:f.NearestMipmapNearestFilter,9985:f.LinearMipmapNearestFilter,9986:f.NearestMipmapLinearFilter,9987:f.LinearMipmapLinearFilter},Er={33071:f.ClampToEdgeWrapping,33648:f.MirroredRepeatWrapping,10497:f.RepeatWrapping},os={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},as={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",...f.REVISION.replace(/\D+/g,"")>=152?{TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3"}:{TEXCOORD_0:"uv",TEXCOORD_1:"uv2"},COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},Lt={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},Oa={CUBICSPLINE:void 0,LINEAR:f.InterpolateLinear,STEP:f.InterpolateDiscrete},ls={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function Ba(g){return g.DefaultMaterial===void 0&&(g.DefaultMaterial=new f.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:f.FrontSide})),g.DefaultMaterial}function Kn(g,i,r){for(const s in r.extensions)g[s]===void 0&&(i.userData.gltfExtensions=i.userData.gltfExtensions||{},i.userData.gltfExtensions[s]=r.extensions[s])}function Vt(g,i){i.extras!==void 0&&(typeof i.extras=="object"?Object.assign(g.userData,i.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+i.extras))}function Na(g,i,r){let s=!1,o=!1,l=!1;for(let w=0,_=i.length;w<_;w++){const y=i[w];if(y.POSITION!==void 0&&(s=!0),y.NORMAL!==void 0&&(o=!0),y.COLOR_0!==void 0&&(l=!0),s&&o&&l)break}if(!s&&!o&&!l)return Promise.resolve(g);const u=[],h=[],d=[];for(let w=0,_=i.length;w<_;w++){const y=i[w];if(s){const x=y.POSITION!==void 0?r.getDependency("accessor",y.POSITION):g.attributes.position;u.push(x)}if(o){const x=y.NORMAL!==void 0?r.getDependency("accessor",y.NORMAL):g.attributes.normal;h.push(x)}if(l){const x=y.COLOR_0!==void 0?r.getDependency("accessor",y.COLOR_0):g.attributes.color;d.push(x)}}return Promise.all([Promise.all(u),Promise.all(h),Promise.all(d)]).then(function(w){const _=w[0],y=w[1],x=w[2];return s&&(g.morphAttributes.position=_),o&&(g.morphAttributes.normal=y),l&&(g.morphAttributes.color=x),g.morphTargetsRelative=!0,g})}function Fa(g,i){if(g.updateMorphTargets(),i.weights!==void 0)for(let r=0,s=i.weights.length;r<s;r++)g.morphTargetInfluences[r]=i.weights[r];if(i.extras&&Array.isArray(i.extras.targetNames)){const r=i.extras.targetNames;if(g.morphTargetInfluences.length===r.length){g.morphTargetDictionary={};for(let s=0,o=r.length;s<o;s++)g.morphTargetDictionary[r[s]]=s}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function za(g){const i=g.extensions&&g.extensions[ae.KHR_DRACO_MESH_COMPRESSION];let r;return i?r="draco:"+i.bufferView+":"+i.indices+":"+Or(i.attributes):r=g.indices+":"+Or(g.attributes)+":"+g.mode,r}function Or(g){let i="";const r=Object.keys(g).sort();for(let s=0,o=r.length;s<o;s++)i+=r[s]+":"+g[r[s]]+";";return i}function cs(g){switch(g){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 ja(g){return g.search(/\.jpe?g($|\?)/i)>0||g.search(/^data\:image\/jpeg/)===0?"image/jpeg":g.search(/\.webp($|\?)/i)>0||g.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const Ua=new f.Matrix4;class Ra{constructor(i={},r={}){this.json=i,this.extensions={},this.plugins={},this.options=r,this.cache=new da,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let s=!1,o=!1,l=-1;typeof navigator<"u"&&(s=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,o=navigator.userAgent.indexOf("Firefox")>-1,l=o?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),typeof createImageBitmap>"u"||s||o&&l<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,o=this.json,l=this.extensions;this.cache.removeAll(),this.nodeCache={},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][o.scene||0],scenes:u[0],animations:u[1],cameras:u[2],asset:o.asset,parser:s,userData:{}};Kn(l,h,o),Vt(h,o),Promise.all(s._invokeAll(function(d){return d.afterRoot&&d.afterRoot(h)})).then(function(){i(h)})}).catch(r)}_markDefs(){const i=this.json.nodes||[],r=this.json.skins||[],s=this.json.meshes||[];for(let o=0,l=r.length;o<l;o++){const u=r[o].joints;for(let h=0,d=u.length;h<d;h++)i[u[h]].isBone=!0}for(let o=0,l=i.length;o<l;o++){const u=i[o];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 o=s.clone(),l=(u,h)=>{const d=this.associations.get(u);d!=null&&this.associations.set(h,d);for(const[w,_]of u.children.entries())l(_,h.children[w])};return l(s,o),o.name+="_instance_"+i.uses[r]++,o}_invokeOne(i){const r=Object.values(this.plugins);r.push(this);for(let s=0;s<r.length;s++){const o=i(r[s]);if(o)return o}return null}_invokeAll(i){const r=Object.values(this.plugins);r.unshift(this);const s=[];for(let o=0;o<r.length;o++){const l=i(r[o]);l&&s.push(l)}return s}getDependency(i,r){const s=i+":"+r;let o=this.cache.get(s);if(!o){switch(i){case"scene":o=this.loadScene(r);break;case"node":o=this._invokeOne(function(l){return l.loadNode&&l.loadNode(r)});break;case"mesh":o=this._invokeOne(function(l){return l.loadMesh&&l.loadMesh(r)});break;case"accessor":o=this.loadAccessor(r);break;case"bufferView":o=this._invokeOne(function(l){return l.loadBufferView&&l.loadBufferView(r)});break;case"buffer":o=this.loadBuffer(r);break;case"material":o=this._invokeOne(function(l){return l.loadMaterial&&l.loadMaterial(r)});break;case"texture":o=this._invokeOne(function(l){return l.loadTexture&&l.loadTexture(r)});break;case"skin":o=this.loadSkin(r);break;case"animation":o=this._invokeOne(function(l){return l.loadAnimation&&l.loadAnimation(r)});break;case"camera":o=this.loadCamera(r);break;default:if(o=this._invokeOne(function(l){return l!=this&&l.getDependency&&l.getDependency(i,r)}),!o)throw new Error("Unknown type: "+i);break}this.cache.add(s,o)}return o}getDependencies(i){let r=this.cache.get(i);if(!r){const s=this,o=this.json[i+(i==="mesh"?"es":"s")]||[];r=Promise.all(o.map(function(l,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[ae.KHR_BINARY_GLTF].body);const o=this.options;return new Promise(function(l,u){s.load(f.LoaderUtils.resolveURL(r.uri,o.path),l,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 o=r.byteLength||0,l=r.byteOffset||0;return s.slice(l,l+o)})}loadAccessor(i){const r=this,s=this.json,o=this.json.accessors[i];if(o.bufferView===void 0&&o.sparse===void 0){const u=os[o.type],h=vn[o.componentType],d=o.normalized===!0,w=new h(o.count*u);return Promise.resolve(new f.BufferAttribute(w,u,d))}const l=[];return o.bufferView!==void 0?l.push(this.getDependency("bufferView",o.bufferView)):l.push(null),o.sparse!==void 0&&(l.push(this.getDependency("bufferView",o.sparse.indices.bufferView)),l.push(this.getDependency("bufferView",o.sparse.values.bufferView))),Promise.all(l).then(function(u){const h=u[0],d=os[o.type],w=vn[o.componentType],_=w.BYTES_PER_ELEMENT,y=_*d,x=o.byteOffset||0,M=o.bufferView!==void 0?s.bufferViews[o.bufferView].byteStride:void 0,O=o.normalized===!0;let I,T;if(M&&M!==y){const F=Math.floor(x/M),z="InterleavedBuffer:"+o.bufferView+":"+o.componentType+":"+F+":"+o.count;let N=r.cache.get(z);N||(I=new w(h,F*M,o.count*M/_),N=new f.InterleavedBuffer(I,M/_),r.cache.add(z,N)),T=new f.InterleavedBufferAttribute(N,d,x%M/_,O)}else h===null?I=new w(o.count*d):I=new w(h,x,o.count*d),T=new f.BufferAttribute(I,d,O);if(o.sparse!==void 0){const F=os.SCALAR,z=vn[o.sparse.indices.componentType],N=o.sparse.indices.byteOffset||0,E=o.sparse.values.byteOffset||0,Q=new z(u[1],N,o.sparse.count*F),$=new w(u[2],E,o.sparse.count*d);h!==null&&(T=new f.BufferAttribute(T.array.slice(),T.itemSize,T.normalized));for(let U=0,j=Q.length;U<j;U++){const X=Q[U];if(T.setX(X,$[U*d]),d>=2&&T.setY(X,$[U*d+1]),d>=3&&T.setZ(X,$[U*d+2]),d>=4&&T.setW(X,$[U*d+3]),d>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return T})}loadTexture(i){const r=this.json,s=this.options,l=r.textures[i].source,u=r.images[l];let h=this.textureLoader;if(u.uri){const d=s.manager.getHandler(u.uri);d!==null&&(h=d)}return this.loadTextureImage(i,l,h)}loadTextureImage(i,r,s){const o=this,l=this.json,u=l.textures[i],h=l.images[r],d=(h.uri||h.bufferView)+":"+u.sampler;if(this.textureCache[d])return this.textureCache[d];const w=this.loadImageSource(r,s).then(function(_){_.flipY=!1,_.name=u.name||h.name||"",_.name===""&&typeof h.uri=="string"&&h.uri.startsWith("data:image/")===!1&&(_.name=h.uri);const x=(l.samplers||{})[u.sampler]||{};return _.magFilter=Tr[x.magFilter]||f.LinearFilter,_.minFilter=Tr[x.minFilter]||f.LinearMipmapLinearFilter,_.wrapS=Er[x.wrapS]||f.RepeatWrapping,_.wrapT=Er[x.wrapT]||f.RepeatWrapping,o.associations.set(_,{textures:i}),_}).catch(function(){return null});return this.textureCache[d]=w,w}loadImageSource(i,r){const s=this,o=this.json,l=this.options;if(this.sourceCache[i]!==void 0)return this.sourceCache[i].then(y=>y.clone());const u=o.images[i],h=self.URL||self.webkitURL;let d=u.uri||"",w=!1;if(u.bufferView!==void 0)d=s.getDependency("bufferView",u.bufferView).then(function(y){w=!0;const x=new Blob([y],{type:u.mimeType});return d=h.createObjectURL(x),d});else if(u.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+i+" is missing URI and bufferView");const _=Promise.resolve(d).then(function(y){return new Promise(function(x,M){let O=x;r.isImageBitmapLoader===!0&&(O=function(I){const T=new f.Texture(I);T.needsUpdate=!0,x(T)}),r.load(f.LoaderUtils.resolveURL(y,l.path),O,void 0,M)})}).then(function(y){return w===!0&&h.revokeObjectURL(d),y.userData.mimeType=u.mimeType||ja(u.uri),y}).catch(function(y){throw console.error("THREE.GLTFLoader: Couldn't load texture",d),y});return this.sourceCache[i]=_,_}assignTexture(i,r,s,o){const l=this;return this.getDependency("texture",s.index).then(function(u){if(!u)return null;if(s.texCoord!==void 0&&s.texCoord>0&&(u=u.clone(),u.channel=s.texCoord),l.extensions[ae.KHR_TEXTURE_TRANSFORM]){const h=s.extensions!==void 0?s.extensions[ae.KHR_TEXTURE_TRANSFORM]:void 0;if(h){const d=l.associations.get(u);u=l.extensions[ae.KHR_TEXTURE_TRANSFORM].extendTexture(u,h),l.associations.set(u,d)}}return o!==void 0&&("colorSpace"in u?u.colorSpace=o===3001?"srgb":"srgb-linear":u.encoding=o),i[r]=u,u})}assignFinalMaterial(i){const r=i.geometry;let s=i.material;const o=r.attributes.tangent===void 0,l=r.attributes.color!==void 0,u=r.attributes.normal===void 0;if(i.isPoints){const h="PointsMaterial:"+s.uuid;let d=this.cache.get(h);d||(d=new f.PointsMaterial,f.Material.prototype.copy.call(d,s),d.color.copy(s.color),d.map=s.map,d.sizeAttenuation=!1,this.cache.add(h,d)),s=d}else if(i.isLine){const h="LineBasicMaterial:"+s.uuid;let d=this.cache.get(h);d||(d=new f.LineBasicMaterial,f.Material.prototype.copy.call(d,s),d.color.copy(s.color),d.map=s.map,this.cache.add(h,d)),s=d}if(o||l||u){let h="ClonedMaterial:"+s.uuid+":";o&&(h+="derivative-tangents:"),l&&(h+="vertex-colors:"),u&&(h+="flat-shading:");let d=this.cache.get(h);d||(d=s.clone(),l&&(d.vertexColors=!0),u&&(d.flatShading=!0),o&&(d.normalScale&&(d.normalScale.y*=-1),d.clearcoatNormalScale&&(d.clearcoatNormalScale.y*=-1)),this.cache.add(h,d),this.associations.set(d,this.associations.get(s))),s=d}i.material=s}getMaterialType(){return f.MeshStandardMaterial}loadMaterial(i){const r=this,s=this.json,o=this.extensions,l=s.materials[i];let u;const h={},d=l.extensions||{},w=[];if(d[ae.KHR_MATERIALS_UNLIT]){const y=o[ae.KHR_MATERIALS_UNLIT];u=y.getMaterialType(),w.push(y.extendParams(h,l,r))}else{const y=l.pbrMetallicRoughness||{};if(h.color=new f.Color(1,1,1),h.opacity=1,Array.isArray(y.baseColorFactor)){const x=y.baseColorFactor;h.color.fromArray(x),h.opacity=x[3]}y.baseColorTexture!==void 0&&w.push(r.assignTexture(h,"map",y.baseColorTexture,3001)),h.metalness=y.metallicFactor!==void 0?y.metallicFactor:1,h.roughness=y.roughnessFactor!==void 0?y.roughnessFactor:1,y.metallicRoughnessTexture!==void 0&&(w.push(r.assignTexture(h,"metalnessMap",y.metallicRoughnessTexture)),w.push(r.assignTexture(h,"roughnessMap",y.metallicRoughnessTexture))),u=this._invokeOne(function(x){return x.getMaterialType&&x.getMaterialType(i)}),w.push(Promise.all(this._invokeAll(function(x){return x.extendMaterialParams&&x.extendMaterialParams(i,h)})))}l.doubleSided===!0&&(h.side=f.DoubleSide);const _=l.alphaMode||ls.OPAQUE;if(_===ls.BLEND?(h.transparent=!0,h.depthWrite=!1):(h.transparent=!1,_===ls.MASK&&(h.alphaTest=l.alphaCutoff!==void 0?l.alphaCutoff:.5)),l.normalTexture!==void 0&&u!==f.MeshBasicMaterial&&(w.push(r.assignTexture(h,"normalMap",l.normalTexture)),h.normalScale=new f.Vector2(1,1),l.normalTexture.scale!==void 0)){const y=l.normalTexture.scale;h.normalScale.set(y,y)}return l.occlusionTexture!==void 0&&u!==f.MeshBasicMaterial&&(w.push(r.assignTexture(h,"aoMap",l.occlusionTexture)),l.occlusionTexture.strength!==void 0&&(h.aoMapIntensity=l.occlusionTexture.strength)),l.emissiveFactor!==void 0&&u!==f.MeshBasicMaterial&&(h.emissive=new f.Color().fromArray(l.emissiveFactor)),l.emissiveTexture!==void 0&&u!==f.MeshBasicMaterial&&w.push(r.assignTexture(h,"emissiveMap",l.emissiveTexture,sRGBEncoding)),Promise.all(w).then(function(){const y=new u(h);return l.name&&(y.name=l.name),Vt(y,l),r.associations.set(y,{materials:i}),l.extensions&&Kn(o,y,l),y})}createUniqueName(i){const r=f.PropertyBinding.sanitizeNodeName(i||"");let s=r;for(let o=1;this.nodeNamesUsed[s];++o)s=r+"_"+o;return this.nodeNamesUsed[s]=!0,s}loadGeometries(i){const r=this,s=this.extensions,o=this.primitiveCache;function l(h){return s[ae.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(h,r).then(function(d){return Br(d,h,r)})}const u=[];for(let h=0,d=i.length;h<d;h++){const w=i[h],_=za(w),y=o[_];if(y)u.push(y.promise);else{let x;w.extensions&&w.extensions[ae.KHR_DRACO_MESH_COMPRESSION]?x=l(w):x=Br(new f.BufferGeometry,w,r),o[_]={primitive:w,promise:x},u.push(x)}}return Promise.all(u)}loadMesh(i){const r=this,s=this.json,o=this.extensions,l=s.meshes[i],u=l.primitives,h=[];for(let d=0,w=u.length;d<w;d++){const _=u[d].material===void 0?Ba(this.cache):this.getDependency("material",u[d].material);h.push(_)}return h.push(r.loadGeometries(u)),Promise.all(h).then(function(d){const w=d.slice(0,d.length-1),_=d[d.length-1],y=[];for(let M=0,O=_.length;M<O;M++){const I=_[M],T=u[M];let F;const z=w[M];if(T.mode===Ze.TRIANGLES||T.mode===Ze.TRIANGLE_STRIP||T.mode===Ze.TRIANGLE_FAN||T.mode===void 0)F=l.isSkinnedMesh===!0?new f.SkinnedMesh(I,z):new f.Mesh(I,z),F.isSkinnedMesh===!0&&F.normalizeSkinWeights(),T.mode===Ze.TRIANGLE_STRIP?F.geometry=_r(F.geometry,f.TriangleStripDrawMode):T.mode===Ze.TRIANGLE_FAN&&(F.geometry=_r(F.geometry,f.TriangleFanDrawMode));else if(T.mode===Ze.LINES)F=new f.LineSegments(I,z);else if(T.mode===Ze.LINE_STRIP)F=new f.Line(I,z);else if(T.mode===Ze.LINE_LOOP)F=new f.LineLoop(I,z);else if(T.mode===Ze.POINTS)F=new f.Points(I,z);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+T.mode);Object.keys(F.geometry.morphAttributes).length>0&&Fa(F,l),F.name=r.createUniqueName(l.name||"mesh_"+i),Vt(F,l),T.extensions&&Kn(o,F,T),r.assignFinalMaterial(F),y.push(F)}for(let M=0,O=y.length;M<O;M++)r.associations.set(y[M],{meshes:i,primitives:M});if(y.length===1)return y[0];const x=new f.Group;r.associations.set(x,{meshes:i});for(let M=0,O=y.length;M<O;M++)x.add(y[M]);return x})}loadCamera(i){let r;const s=this.json.cameras[i],o=s[s.type];if(!o){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return s.type==="perspective"?r=new f.PerspectiveCamera(f.MathUtils.radToDeg(o.yfov),o.aspectRatio||1,o.znear||1,o.zfar||2e6):s.type==="orthographic"&&(r=new f.OrthographicCamera(-o.xmag,o.xmag,o.ymag,-o.ymag,o.znear,o.zfar)),s.name&&(r.name=this.createUniqueName(s.name)),Vt(r,s),Promise.resolve(r)}loadSkin(i){const r=this.json.skins[i],s=[];for(let o=0,l=r.joints.length;o<l;o++)s.push(this._loadNodeShallow(r.joints[o]));return r.inverseBindMatrices!==void 0?s.push(this.getDependency("accessor",r.inverseBindMatrices)):s.push(null),Promise.all(s).then(function(o){const l=o.pop(),u=o,h=[],d=[];for(let w=0,_=u.length;w<_;w++){const y=u[w];if(y){h.push(y);const x=new f.Matrix4;l!==null&&x.fromArray(l.array,w*16),d.push(x)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',r.joints[w])}return new f.Skeleton(h,d)})}loadAnimation(i){const s=this.json.animations[i],o=s.name?s.name:"animation_"+i,l=[],u=[],h=[],d=[],w=[];for(let _=0,y=s.channels.length;_<y;_++){const x=s.channels[_],M=s.samplers[x.sampler],O=x.target,I=O.node,T=s.parameters!==void 0?s.parameters[M.input]:M.input,F=s.parameters!==void 0?s.parameters[M.output]:M.output;O.node!==void 0&&(l.push(this.getDependency("node",I)),u.push(this.getDependency("accessor",T)),h.push(this.getDependency("accessor",F)),d.push(M),w.push(O))}return Promise.all([Promise.all(l),Promise.all(u),Promise.all(h),Promise.all(d),Promise.all(w)]).then(function(_){const y=_[0],x=_[1],M=_[2],O=_[3],I=_[4],T=[];for(let F=0,z=y.length;F<z;F++){const N=y[F],E=x[F],Q=M[F],$=O[F],U=I[F];if(N===void 0)continue;N.updateMatrix();let j;switch(Lt[U.path]){case Lt.weights:j=f.NumberKeyframeTrack;break;case Lt.rotation:j=f.QuaternionKeyframeTrack;break;case Lt.position:case Lt.scale:default:j=f.VectorKeyframeTrack;break}const X=N.name?N.name:N.uuid,Y=$.interpolation!==void 0?Oa[$.interpolation]:f.InterpolateLinear,Z=[];Lt[U.path]===Lt.weights?N.traverse(function(ge){ge.morphTargetInfluences&&Z.push(ge.name?ge.name:ge.uuid)}):Z.push(X);let ue=Q.array;if(Q.normalized){const ge=cs(ue.constructor),pe=new Float32Array(ue.length);for(let me=0,he=ue.length;me<he;me++)pe[me]=ue[me]*ge;ue=pe}for(let ge=0,pe=Z.length;ge<pe;ge++){const me=new j(Z[ge]+"."+Lt[U.path],E.array,ue,Y);$.interpolation==="CUBICSPLINE"&&(me.createInterpolant=function(te){const q=this instanceof f.QuaternionKeyframeTrack?Ea:Ir;return new q(this.times,this.values,this.getValueSize()/3,te)},me.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0),T.push(me)}}return new f.AnimationClip(o,void 0,T)})}createNodeMesh(i){const r=this.json,s=this,o=r.nodes[i];return o.mesh===void 0?null:s.getDependency("mesh",o.mesh).then(function(l){const u=s._getNodeRef(s.meshCache,o.mesh,l);return o.weights!==void 0&&u.traverse(function(h){if(h.isMesh)for(let d=0,w=o.weights.length;d<w;d++)h.morphTargetInfluences[d]=o.weights[d]}),u})}loadNode(i){const r=this.json,s=this,o=r.nodes[i],l=s._loadNodeShallow(i),u=[],h=o.children||[];for(let w=0,_=h.length;w<_;w++)u.push(s.getDependency("node",h[w]));const d=o.skin===void 0?Promise.resolve(null):s.getDependency("skin",o.skin);return Promise.all([l,Promise.all(u),d]).then(function(w){const _=w[0],y=w[1],x=w[2];x!==null&&_.traverse(function(M){M.isSkinnedMesh&&M.bind(x,Ua)});for(let M=0,O=y.length;M<O;M++)_.add(y[M]);return _})}_loadNodeShallow(i){const r=this.json,s=this.extensions,o=this;if(this.nodeCache[i]!==void 0)return this.nodeCache[i];const l=r.nodes[i],u=l.name?o.createUniqueName(l.name):"",h=[],d=o._invokeOne(function(w){return w.createNodeMesh&&w.createNodeMesh(i)});return d&&h.push(d),l.camera!==void 0&&h.push(o.getDependency("camera",l.camera).then(function(w){return o._getNodeRef(o.cameraCache,l.camera,w)})),o._invokeAll(function(w){return w.createNodeAttachment&&w.createNodeAttachment(i)}).forEach(function(w){h.push(w)}),this.nodeCache[i]=Promise.all(h).then(function(w){let _;if(l.isBone===!0?_=new f.Bone:w.length>1?_=new f.Group:w.length===1?_=w[0]:_=new f.Object3D,_!==w[0])for(let y=0,x=w.length;y<x;y++)_.add(w[y]);if(l.name&&(_.userData.name=l.name,_.name=u),Vt(_,l),l.extensions&&Kn(s,_,l),l.matrix!==void 0){const y=new f.Matrix4;y.fromArray(l.matrix),_.applyMatrix4(y)}else l.translation!==void 0&&_.position.fromArray(l.translation),l.rotation!==void 0&&_.quaternion.fromArray(l.rotation),l.scale!==void 0&&_.scale.fromArray(l.scale);return o.associations.has(_)||o.associations.set(_,{}),o.associations.get(_).nodes=i,_}),this.nodeCache[i]}loadScene(i){const r=this.extensions,s=this.json.scenes[i],o=this,l=new f.Group;s.name&&(l.name=o.createUniqueName(s.name)),Vt(l,s),s.extensions&&Kn(r,l,s);const u=s.nodes||[],h=[];for(let d=0,w=u.length;d<w;d++)h.push(o.getDependency("node",u[d]));return Promise.all(h).then(function(d){for(let _=0,y=d.length;_<y;_++)l.add(d[_]);const w=_=>{const y=new Map;for(const[x,M]of o.associations)(x instanceof f.Material||x instanceof f.Texture)&&y.set(x,M);return _.traverse(x=>{const M=o.associations.get(x);M!=null&&y.set(x,M)}),y};return o.associations=w(l),l})}}function Ga(g,i,r){const s=i.attributes,o=new f.Box3;if(s.POSITION!==void 0){const h=r.json.accessors[s.POSITION],d=h.min,w=h.max;if(d!==void 0&&w!==void 0){if(o.set(new f.Vector3(d[0],d[1],d[2]),new f.Vector3(w[0],w[1],w[2])),h.normalized){const _=cs(vn[h.componentType]);o.min.multiplyScalar(_),o.max.multiplyScalar(_)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const l=i.targets;if(l!==void 0){const h=new f.Vector3,d=new f.Vector3;for(let w=0,_=l.length;w<_;w++){const y=l[w];if(y.POSITION!==void 0){const x=r.json.accessors[y.POSITION],M=x.min,O=x.max;if(M!==void 0&&O!==void 0){if(d.setX(Math.max(Math.abs(M[0]),Math.abs(O[0]))),d.setY(Math.max(Math.abs(M[1]),Math.abs(O[1]))),d.setZ(Math.max(Math.abs(M[2]),Math.abs(O[2]))),x.normalized){const I=cs(vn[x.componentType]);d.multiplyScalar(I)}h.max(d)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}o.expandByVector(h)}g.boundingBox=o;const u=new f.Sphere;o.getCenter(u.center),u.radius=o.min.distanceTo(o.max)/2,g.boundingSphere=u}function Br(g,i,r){const s=i.attributes,o=[];function l(u,h){return r.getDependency("accessor",u).then(function(d){g.setAttribute(h,d)})}for(const u in s){const h=as[u]||u.toLowerCase();h in g.attributes||o.push(l(s[u],h))}if(i.indices!==void 0&&!g.index){const u=r.getDependency("accessor",i.indices).then(function(h){g.setIndex(h)});o.push(u)}return Vt(g,i),Ga(g,i,r),Promise.all(o).then(function(){return i.targets!==void 0?Na(g,i.targets,r):g})}class Nr extends f.ExtrudeGeometry{constructor(i,r={}){const{bevelEnabled:s=!1,bevelSize:o=8,bevelThickness:l=10,font:u,height:h=50,size:d=100,lineHeight:w=1,letterSpacing:_=0,...y}=r;if(u===void 0)super();else{const x=u.generateShapes(i,d,{lineHeight:w,letterSpacing:_});super(x,{...y,bevelEnabled:s,bevelSize:o,bevelThickness:l,depth:h})}this.type="TextGeometry"}}const Ka={uniforms:{tDiffuse:{value:null},h:{value:1/512}},vertexShader:`
9
9
  varying vec2 vUv;
10
10
 
11
11
  void main() {
@@ -70,15 +70,15 @@
70
70
  gl_FragColor = sum;
71
71
 
72
72
  }
73
- `};function Fr(b,s,r){const n=r.length-b-1;if(s>=r[n])return n-1;if(s<=r[b])return b;let o=b,l=n,u=Math.floor((o+l)/2);for(;s<r[u]||s>=r[u+1];)s<r[u]?l=u:o=u,u=Math.floor((o+l)/2);return u}function Xa(b,s,r,n){const o=[],l=[],u=[];o[0]=1;for(let h=1;h<=r;++h){l[h]=s-n[b+1-h],u[h]=n[b+h]-s;let d=0;for(let w=0;w<h;++w){const _=u[w+1],y=l[h-w],x=o[w]/(_+y);o[w]=d+_*x,d=y*x}o[h]=d}return o}function Ya(b,s,r,n){const o=Fr(b,n,s),l=Xa(o,n,b,s),u=new f.Vector4(0,0,0,0);for(let h=0;h<=b;++h){const d=r[o-b+h],w=l[h],_=d.w*w;u.x+=d.x*_,u.y+=d.y*_,u.z+=d.z*_,u.w+=d.w*w}return u}function qa(b,s,r,n,o){const l=[];for(let x=0;x<=r;++x)l[x]=0;const u=[];for(let x=0;x<=n;++x)u[x]=l.slice(0);const h=[];for(let x=0;x<=r;++x)h[x]=l.slice(0);h[0][0]=1;const d=l.slice(0),w=l.slice(0);for(let x=1;x<=r;++x){d[x]=s-o[b+1-x],w[x]=o[b+x]-s;let M=0;for(let T=0;T<x;++T){const D=w[T+1],E=d[x-T];h[x][T]=D+E;const F=h[T][x-1]/h[x][T];h[T][x]=M+D*F,M=E*F}h[x][x]=M}for(let x=0;x<=r;++x)u[0][x]=h[x][r];for(let x=0;x<=r;++x){let M=0,T=1;const D=[];for(let E=0;E<=r;++E)D[E]=l.slice(0);D[0][0]=1;for(let E=1;E<=n;++E){let F=0;const z=x-E,N=r-E;x>=E&&(D[T][0]=D[M][0]/h[N+1][z],F=D[T][0]*h[z][N]);const O=z>=-1?1:-z,Q=x-1<=N?E-1:r-x;for(let $=O;$<=Q;++$)D[T][$]=(D[M][$]-D[M][$-1])/h[N+1][z+$],F+=D[T][$]*h[z+$][N];x<=N&&(D[T][E]=-D[M][E-1]/h[N+1][x],F+=D[T][E]*h[x][N]),u[E][x]=F;var _=M;M=T,T=_}}var y=r;for(let x=1;x<=n;++x){for(let M=0;M<=r;++M)u[x][M]*=y;y*=r-x}return u}function Qa(b,s,r,n,o){const l=o<b?o:b,u=[],h=Fr(b,n,s),d=qa(h,n,b,l,s),w=[];for(let y=0;y<r.length;++y){var _=r[y].clone();const x=_.w;_.x*=x,_.y*=x,_.z*=x,w[y]=_}for(let y=0;y<=l;++y){var _=w[h-b].clone().multiplyScalar(d[y][0]);for(let M=1;M<=b;++M)_.add(w[h-b+M].clone().multiplyScalar(d[y][M]));u[y]=_}for(let y=l+1;y<=o+1;++y)u[y]=new f.Vector4(0,0,0);return u}function Za(b,s){let r=1;for(let o=2;o<=b;++o)r*=o;let n=1;for(let o=2;o<=s;++o)n*=o;for(let o=2;o<=b-s;++o)n*=o;return r/n}function Wa(b){const s=b.length,r=[],n=[];for(let l=0;l<s;++l){const u=b[l];r[l]=new f.Vector3(u.x,u.y,u.z),n[l]=u.w}const o=[];for(let l=0;l<s;++l){const u=r[l].clone();for(let h=1;h<=l;++h)u.sub(o[l-h].clone().multiplyScalar(Za(l,h)*n[h]));o[l]=u.divideScalar(n[0])}return o}function Ja(b,s,r,n,o){const l=Qa(b,s,r,n,o);return Wa(l)}class zr extends f.Curve{constructor(s,r,n,o,l){super(),this.degree=s,this.knots=r,this.controlPoints=[],this.startKnot=o||0,this.endKnot=l||this.knots.length-1;for(let u=0;u<n.length;++u){const h=n[u];this.controlPoints[u]=new f.Vector4(h.x,h.y,h.z,h.w)}}getPoint(s,r){const n=r||new f.Vector3,o=this.knots[this.startKnot]+s*(this.knots[this.endKnot]-this.knots[this.startKnot]),l=Ya(this.degree,this.knots,this.controlPoints,o);return l.w!=1&&l.divideScalar(l.w),n.set(l.x,l.y,l.z)}getTangent(s,r){const n=r||new f.Vector3,o=this.knots[0]+s*(this.knots[this.knots.length-1]-this.knots[0]),l=Ja(this.degree,this.knots,this.controlPoints,o,1);return n.copy(l[1]).normalize(),n}}let re,Ae,je;class Ha extends f.Loader{constructor(s){super(s)}load(s,r,n,o){const l=this,u=l.path===""?f.LoaderUtils.extractUrlBase(s):l.path,h=new f.FileLoader(this.manager);h.setPath(l.path),h.setResponseType("arraybuffer"),h.setRequestHeader(l.requestHeader),h.setWithCredentials(l.withCredentials),h.load(s,function(d){try{r(l.parse(d,u))}catch(w){o?o(w):console.error(w),l.manager.itemError(s)}},n,o)}parse(s,r){if(rl(s))re=new sl().parse(s);else{const o=$r(s);if(!ol(o))throw new Error("THREE.FBXLoader: Unknown format.");if(Rr(o)<7e3)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+Rr(o));re=new il().parse(o)}const n=new f.TextureLoader(this.manager).setPath(this.resourcePath||r).setCrossOrigin(this.crossOrigin);return new el(n,this.manager).parse(re)}}class el{constructor(s,r){this.textureLoader=s,this.manager=r}parse(){Ae=this.parseConnections();const s=this.parseImages(),r=this.parseTextures(s),n=this.parseMaterials(r),o=this.parseDeformers(),l=new tl().parse(o);return this.parseScene(o,l,n),je}parseConnections(){const s=new Map;return"Connections"in re&&re.Connections.connections.forEach(function(n){const o=n[0],l=n[1],u=n[2];s.has(o)||s.set(o,{parents:[],children:[]});const h={ID:l,relationship:u};s.get(o).parents.push(h),s.has(l)||s.set(l,{parents:[],children:[]});const d={ID:o,relationship:u};s.get(l).children.push(d)}),s}parseImages(){const s={},r={};if("Video"in re.Objects){const n=re.Objects.Video;for(const o in n){const l=n[o],u=parseInt(o);if(s[u]=l.RelativeFilename||l.Filename,"Content"in l){const h=l.Content instanceof ArrayBuffer&&l.Content.byteLength>0,d=typeof l.Content=="string"&&l.Content!=="";if(h||d){const w=this.parseImage(n[o]);r[l.RelativeFilename||l.Filename]=w}}}}for(const n in s){const o=s[n];r[o]!==void 0?s[n]=r[o]:s[n]=s[n].split("\\").pop()}return s}parseImage(s){const r=s.Content,n=s.RelativeFilename||s.Filename,o=n.slice(n.lastIndexOf(".")+1).toLowerCase();let l;switch(o){case"bmp":l="image/bmp";break;case"jpg":case"jpeg":l="image/jpeg";break;case"png":l="image/png";break;case"tif":l="image/tiff";break;case"tga":this.manager.getHandler(".tga")===null&&console.warn("FBXLoader: TGA loader not found, skipping ",n),l="image/tga";break;default:console.warn('FBXLoader: Image type "'+o+'" is not supported.');return}if(typeof r=="string")return"data:"+l+";base64,"+r;{const u=new Uint8Array(r);return window.URL.createObjectURL(new Blob([u],{type:l}))}}parseTextures(s){const r=new Map;if("Texture"in re.Objects){const n=re.Objects.Texture;for(const o in n){const l=this.parseTexture(n[o],s);r.set(parseInt(o),l)}}return r}parseTexture(s,r){const n=this.loadTexture(s,r);n.ID=s.id,n.name=s.attrName;const o=s.WrapModeU,l=s.WrapModeV,u=o!==void 0?o.value:0,h=l!==void 0?l.value:0;if(n.wrapS=u===0?f.RepeatWrapping:f.ClampToEdgeWrapping,n.wrapT=h===0?f.RepeatWrapping:f.ClampToEdgeWrapping,"Scaling"in s){const d=s.Scaling.value;n.repeat.x=d[0],n.repeat.y=d[1]}return n}loadTexture(s,r){let n;const o=this.textureLoader.path,l=Ae.get(s.id).children;l!==void 0&&l.length>0&&r[l[0].ID]!==void 0&&(n=r[l[0].ID],(n.indexOf("blob:")===0||n.indexOf("data:")===0)&&this.textureLoader.setPath(void 0));let u;const h=s.FileName.slice(-3).toLowerCase();if(h==="tga"){const d=this.manager.getHandler(".tga");d===null?(console.warn("FBXLoader: TGA loader not found, creating placeholder texture for",s.RelativeFilename),u=new f.Texture):(d.setPath(this.textureLoader.path),u=d.load(n))}else h==="psd"?(console.warn("FBXLoader: PSD textures are not supported, creating placeholder texture for",s.RelativeFilename),u=new f.Texture):u=this.textureLoader.load(n);return this.textureLoader.setPath(o),u}parseMaterials(s){const r=new Map;if("Material"in re.Objects){const n=re.Objects.Material;for(const o in n){const l=this.parseMaterial(n[o],s);l!==null&&r.set(parseInt(o),l)}}return r}parseMaterial(s,r){const n=s.id,o=s.attrName;let l=s.ShadingModel;if(typeof l=="object"&&(l=l.value),!Ae.has(n))return null;const u=this.parseParameters(s,r,n);let h;switch(l.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.',l),h=new f.MeshPhongMaterial;break}return h.setValues(u),h.name=o,h}parseParameters(s,r,n){const o={};s.BumpFactor&&(o.bumpScale=s.BumpFactor.value),s.Diffuse?o.color=new f.Color().fromArray(s.Diffuse.value):s.DiffuseColor&&(s.DiffuseColor.type==="Color"||s.DiffuseColor.type==="ColorRGB")&&(o.color=new f.Color().fromArray(s.DiffuseColor.value)),s.DisplacementFactor&&(o.displacementScale=s.DisplacementFactor.value),s.Emissive?o.emissive=new f.Color().fromArray(s.Emissive.value):s.EmissiveColor&&(s.EmissiveColor.type==="Color"||s.EmissiveColor.type==="ColorRGB")&&(o.emissive=new f.Color().fromArray(s.EmissiveColor.value)),s.EmissiveFactor&&(o.emissiveIntensity=parseFloat(s.EmissiveFactor.value)),s.Opacity&&(o.opacity=parseFloat(s.Opacity.value)),o.opacity<1&&(o.transparent=!0),s.ReflectionFactor&&(o.reflectivity=s.ReflectionFactor.value),s.Shininess&&(o.shininess=s.Shininess.value),s.Specular?o.specular=new f.Color().fromArray(s.Specular.value):s.SpecularColor&&s.SpecularColor.type==="Color"&&(o.specular=new f.Color().fromArray(s.SpecularColor.value));const l=this;return Ae.get(n).children.forEach(function(u){const h=u.relationship;switch(h){case"Bump":o.bumpMap=l.getTexture(r,u.ID);break;case"Maya|TEX_ao_map":o.aoMap=l.getTexture(r,u.ID);break;case"DiffuseColor":case"Maya|TEX_color_map":o.map=l.getTexture(r,u.ID),o.map!==void 0&&(o.map.encoding=f.sRGBEncoding);break;case"DisplacementColor":o.displacementMap=l.getTexture(r,u.ID);break;case"EmissiveColor":o.emissiveMap=l.getTexture(r,u.ID),o.emissiveMap!==void 0&&(o.emissiveMap.encoding=f.sRGBEncoding);break;case"NormalMap":case"Maya|TEX_normal_map":o.normalMap=l.getTexture(r,u.ID);break;case"ReflectionColor":o.envMap=l.getTexture(r,u.ID),o.envMap!==void 0&&(o.envMap.mapping=f.EquirectangularReflectionMapping,o.envMap.encoding=f.sRGBEncoding);break;case"SpecularColor":o.specularMap=l.getTexture(r,u.ID),o.specularMap!==void 0&&(o.specularMap.encoding=f.sRGBEncoding);break;case"TransparentColor":case"TransparencyFactor":o.alphaMap=l.getTexture(r,u.ID),o.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}}),o}getTexture(s,r){return"LayeredTexture"in re.Objects&&r in re.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),r=Ae.get(r).children[0].ID),s.get(r)}parseDeformers(){const s={},r={};if("Deformer"in re.Objects){const n=re.Objects.Deformer;for(const o in n){const l=n[o],u=Ae.get(parseInt(o));if(l.attrType==="Skin"){const h=this.parseSkeleton(u,n);h.ID=o,u.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),h.geometryID=u.parents[0].ID,s[o]=h}else if(l.attrType==="BlendShape"){const h={id:o};h.rawTargets=this.parseMorphTargets(u,n),h.id=o,u.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),r[o]=h}}}return{skeletons:s,morphTargets:r}}parseSkeleton(s,r){const n=[];return s.children.forEach(function(o){const l=r[o.ID];if(l.attrType!=="Cluster")return;const u={ID:o.ID,indices:[],weights:[],transformLink:new f.Matrix4().fromArray(l.TransformLink.a)};"Indexes"in l&&(u.indices=l.Indexes.a,u.weights=l.Weights.a),n.push(u)}),{rawBones:n,bones:[]}}parseMorphTargets(s,r){const n=[];for(let o=0;o<s.children.length;o++){const l=s.children[o],u=r[l.ID],h={name:u.attrName,initialWeight:u.DeformPercent,id:u.id,fullWeights:u.FullWeights.a};if(u.attrType!=="BlendShapeChannel")return;h.geoID=Ae.get(parseInt(l.ID)).children.filter(function(d){return d.relationship===void 0})[0].ID,n.push(h)}return n}parseScene(s,r,n){je=new f.Group;const o=this.parseModels(s.skeletons,r,n),l=re.Objects.Model,u=this;o.forEach(function(d){const w=l[d.ID];u.setLookAtProperties(d,w),Ae.get(d.ID).parents.forEach(function(y){const x=o.get(y.ID);x!==void 0&&x.add(d)}),d.parent===null&&je.add(d)}),this.bindSkeleton(s.skeletons,r,o),this.createAmbientLight(),je.traverse(function(d){if(d.userData.transformData){d.parent&&(d.userData.transformData.parentMatrix=d.parent.matrix,d.userData.transformData.parentMatrixWorld=d.parent.matrixWorld);const w=Gr(d.userData.transformData);d.applyMatrix4(w),d.updateWorldMatrix()}});const h=new nl().parse();je.children.length===1&&je.children[0].isGroup&&(je.children[0].animations=h,je=je.children[0]),je.animations=h}parseModels(s,r,n){const o=new Map,l=re.Objects.Model;for(const u in l){const h=parseInt(u),d=l[u],w=Ae.get(h);let _=this.buildSkeleton(w,s,h,d.attrName);if(!_){switch(d.attrType){case"Camera":_=this.createCamera(w);break;case"Light":_=this.createLight(w);break;case"Mesh":_=this.createMesh(w,r,n);break;case"NurbsCurve":_=this.createCurve(w,r);break;case"LimbNode":case"Root":_=new f.Bone;break;case"Null":default:_=new f.Group;break}_.name=d.attrName?f.PropertyBinding.sanitizeNodeName(d.attrName):"",_.ID=h}this.getTransformData(_,d),o.set(h,_)}return o}buildSkeleton(s,r,n,o){let l=null;return s.parents.forEach(function(u){for(const h in r){const d=r[h];d.rawBones.forEach(function(w,_){if(w.ID===u.ID){const y=l;l=new f.Bone,l.matrixWorld.copy(w.transformLink),l.name=o?f.PropertyBinding.sanitizeNodeName(o):"",l.ID=n,d.bones[_]=l,y!==null&&l.add(y)}})}}),l}createCamera(s){let r,n;if(s.children.forEach(function(o){const l=re.Objects.NodeAttribute[o.ID];l!==void 0&&(n=l)}),n===void 0)r=new f.Object3D;else{let o=0;n.CameraProjectionType!==void 0&&n.CameraProjectionType.value===1&&(o=1);let l=1;n.NearPlane!==void 0&&(l=n.NearPlane.value/1e3);let u=1e3;n.FarPlane!==void 0&&(u=n.FarPlane.value/1e3);let h=window.innerWidth,d=window.innerHeight;n.AspectWidth!==void 0&&n.AspectHeight!==void 0&&(h=n.AspectWidth.value,d=n.AspectHeight.value);const w=h/d;let _=45;n.FieldOfView!==void 0&&(_=n.FieldOfView.value);const y=n.FocalLength?n.FocalLength.value:null;switch(o){case 0:r=new f.PerspectiveCamera(_,w,l,u),y!==null&&r.setFocalLength(y);break;case 1:r=new f.OrthographicCamera(-h/2,h/2,d/2,-d/2,l,u);break;default:console.warn("THREE.FBXLoader: Unknown camera type "+o+"."),r=new f.Object3D;break}}return r}createLight(s){let r,n;if(s.children.forEach(function(o){const l=re.Objects.NodeAttribute[o.ID];l!==void 0&&(n=l)}),n===void 0)r=new f.Object3D;else{let o;n.LightType===void 0?o=0:o=n.LightType.value;let l=16777215;n.Color!==void 0&&(l=new f.Color().fromArray(n.Color.value));let u=n.Intensity===void 0?1:n.Intensity.value/100;n.CastLightOnObject!==void 0&&n.CastLightOnObject.value===0&&(u=0);let h=0;n.FarAttenuationEnd!==void 0&&(n.EnableFarAttenuation!==void 0&&n.EnableFarAttenuation.value===0?h=0:h=n.FarAttenuationEnd.value);const d=1;switch(o){case 0:r=new f.PointLight(l,u,h,d);break;case 1:r=new f.DirectionalLight(l,u);break;case 2:let w=Math.PI/3;n.InnerAngle!==void 0&&(w=f.MathUtils.degToRad(n.InnerAngle.value));let _=0;n.OuterAngle!==void 0&&(_=f.MathUtils.degToRad(n.OuterAngle.value),_=Math.max(_,1)),r=new f.SpotLight(l,u,h,w,_,d);break;default:console.warn("THREE.FBXLoader: Unknown light type "+n.LightType.value+", defaulting to a PointLight."),r=new f.PointLight(l,u);break}n.CastShadows!==void 0&&n.CastShadows.value===1&&(r.castShadow=!0)}return r}createMesh(s,r,n){let o,l=null,u=null;const h=[];return s.children.forEach(function(d){r.has(d.ID)&&(l=r.get(d.ID)),n.has(d.ID)&&h.push(n.get(d.ID))}),h.length>1?u=h:h.length>0?u=h[0]:(u=new f.MeshPhongMaterial({color:13421772}),h.push(u)),"color"in l.attributes&&h.forEach(function(d){d.vertexColors=!0}),l.FBX_Deformer?(o=new f.SkinnedMesh(l,u),o.normalizeSkinWeights()):o=new f.Mesh(l,u),o}createCurve(s,r){const n=s.children.reduce(function(l,u){return r.has(u.ID)&&(l=r.get(u.ID)),l},null),o=new f.LineBasicMaterial({color:3342591,linewidth:1});return new f.Line(n,o)}getTransformData(s,r){const n={};"InheritType"in r&&(n.inheritType=parseInt(r.InheritType.value)),"RotationOrder"in r?n.eulerOrder=Kr(r.RotationOrder.value):n.eulerOrder="ZYX","Lcl_Translation"in r&&(n.translation=r.Lcl_Translation.value),"PreRotation"in r&&(n.preRotation=r.PreRotation.value),"Lcl_Rotation"in r&&(n.rotation=r.Lcl_Rotation.value),"PostRotation"in r&&(n.postRotation=r.PostRotation.value),"Lcl_Scaling"in r&&(n.scale=r.Lcl_Scaling.value),"ScalingOffset"in r&&(n.scalingOffset=r.ScalingOffset.value),"ScalingPivot"in r&&(n.scalingPivot=r.ScalingPivot.value),"RotationOffset"in r&&(n.rotationOffset=r.RotationOffset.value),"RotationPivot"in r&&(n.rotationPivot=r.RotationPivot.value),s.userData.transformData=n}setLookAtProperties(s,r){"LookAtProperty"in r&&Ae.get(s.ID).children.forEach(function(o){if(o.relationship==="LookAtProperty"){const l=re.Objects.Model[o.ID];if("Lcl_Translation"in l){const u=l.Lcl_Translation.value;s.target!==void 0?(s.target.position.fromArray(u),je.add(s.target)):s.lookAt(new f.Vector3().fromArray(u))}}})}bindSkeleton(s,r,n){const o=this.parsePoseNodes();for(const l in s){const u=s[l];Ae.get(parseInt(u.ID)).parents.forEach(function(d){if(r.has(d.ID)){const w=d.ID;Ae.get(w).parents.forEach(function(y){n.has(y.ID)&&n.get(y.ID).bind(new f.Skeleton(u.bones),o[y.ID])})}})}}parsePoseNodes(){const s={};if("Pose"in re.Objects){const r=re.Objects.Pose;for(const n in r)if(r[n].attrType==="BindPose"&&r[n].NbPoseNodes>0){const o=r[n].PoseNode;Array.isArray(o)?o.forEach(function(l){s[l.Node]=new f.Matrix4().fromArray(l.Matrix.a)}):s[o.Node]=new f.Matrix4().fromArray(o.Matrix.a)}}return s}createAmbientLight(){if("GlobalSettings"in re&&"AmbientColor"in re.GlobalSettings){const s=re.GlobalSettings.AmbientColor.value,r=s[0],n=s[1],o=s[2];if(r!==0||n!==0||o!==0){const l=new f.Color(r,n,o);je.add(new f.AmbientLight(l,1))}}}}class tl{parse(s){const r=new Map;if("Geometry"in re.Objects){const n=re.Objects.Geometry;for(const o in n){const l=Ae.get(parseInt(o)),u=this.parseGeometry(l,n[o],s);r.set(parseInt(o),u)}}return r}parseGeometry(s,r,n){switch(r.attrType){case"Mesh":return this.parseMeshGeometry(s,r,n);case"NurbsCurve":return this.parseNurbsGeometry(r)}}parseMeshGeometry(s,r,n){const o=n.skeletons,l=[],u=s.parents.map(function(y){return re.Objects.Model[y.ID]});if(u.length===0)return;const h=s.children.reduce(function(y,x){return o[x.ID]!==void 0&&(y=o[x.ID]),y},null);s.children.forEach(function(y){n.morphTargets[y.ID]!==void 0&&l.push(n.morphTargets[y.ID])});const d=u[0],w={};"RotationOrder"in d&&(w.eulerOrder=Kr(d.RotationOrder.value)),"InheritType"in d&&(w.inheritType=parseInt(d.InheritType.value)),"GeometricTranslation"in d&&(w.translation=d.GeometricTranslation.value),"GeometricRotation"in d&&(w.rotation=d.GeometricRotation.value),"GeometricScaling"in d&&(w.scale=d.GeometricScaling.value);const _=Gr(w);return this.genGeometry(r,h,l,_)}genGeometry(s,r,n,o){const l=new f.BufferGeometry;s.attrName&&(l.name=s.attrName);const u=this.parseGeoNode(s,r),h=this.genBuffers(u),d=new f.Float32BufferAttribute(h.vertex,3);if(d.applyMatrix4(o),l.setAttribute("position",d),h.colors.length>0&&l.setAttribute("color",new f.Float32BufferAttribute(h.colors,3)),r&&(l.setAttribute("skinIndex",new f.Uint16BufferAttribute(h.weightsIndices,4)),l.setAttribute("skinWeight",new f.Float32BufferAttribute(h.vertexWeights,4)),l.FBX_Deformer=r),h.normal.length>0){const w=new f.Matrix3().getNormalMatrix(o),_=new f.Float32BufferAttribute(h.normal,3);_.applyNormalMatrix(w),l.setAttribute("normal",_)}if(h.uvs.forEach(function(w,_){let y="uv"+(_+1).toString();_===0&&(y="uv"),l.setAttribute(y,new f.Float32BufferAttribute(h.uvs[_],2))}),u.material&&u.material.mappingType!=="AllSame"){let w=h.materialIndex[0],_=0;if(h.materialIndex.forEach(function(y,x){y!==w&&(l.addGroup(_,x-_,w),w=y,_=x)}),l.groups.length>0){const y=l.groups[l.groups.length-1],x=y.start+y.count;x!==h.materialIndex.length&&l.addGroup(x,h.materialIndex.length-x,w)}l.groups.length===0&&l.addGroup(0,h.materialIndex.length,h.materialIndex[0])}return this.addMorphTargets(l,s,n,o),l}parseGeoNode(s,r){const n={};if(n.vertexPositions=s.Vertices!==void 0?s.Vertices.a:[],n.vertexIndices=s.PolygonVertexIndex!==void 0?s.PolygonVertexIndex.a:[],s.LayerElementColor&&(n.color=this.parseVertexColors(s.LayerElementColor[0])),s.LayerElementMaterial&&(n.material=this.parseMaterialIndices(s.LayerElementMaterial[0])),s.LayerElementNormal&&(n.normal=this.parseNormals(s.LayerElementNormal[0])),s.LayerElementUV){n.uv=[];let o=0;for(;s.LayerElementUV[o];)s.LayerElementUV[o].UV&&n.uv.push(this.parseUVs(s.LayerElementUV[o])),o++}return n.weightTable={},r!==null&&(n.skeleton=r,r.rawBones.forEach(function(o,l){o.indices.forEach(function(u,h){n.weightTable[u]===void 0&&(n.weightTable[u]=[]),n.weightTable[u].push({id:l,weight:o.weights[h]})})})),n}genBuffers(s){const r={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]};let n=0,o=0,l=!1,u=[],h=[],d=[],w=[],_=[],y=[];const x=this;return s.vertexIndices.forEach(function(M,T){let D,E=!1;M<0&&(M=M^-1,E=!0);let F=[],z=[];if(u.push(M*3,M*3+1,M*3+2),s.color){const N=xi(T,n,M,s.color);d.push(N[0],N[1],N[2])}if(s.skeleton){if(s.weightTable[M]!==void 0&&s.weightTable[M].forEach(function(N){z.push(N.weight),F.push(N.id)}),z.length>4){l||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),l=!0);const N=[0,0,0,0],O=[0,0,0,0];z.forEach(function(Q,$){let U=Q,j=F[$];O.forEach(function(X,Y,Z){if(U>X){Z[Y]=U,U=X;const ue=N[Y];N[Y]=j,j=ue}})}),F=N,z=O}for(;z.length<4;)z.push(0),F.push(0);for(let N=0;N<4;++N)_.push(z[N]),y.push(F[N])}if(s.normal){const N=xi(T,n,M,s.normal);h.push(N[0],N[1],N[2])}s.material&&s.material.mappingType!=="AllSame"&&(D=xi(T,n,M,s.material)[0]),s.uv&&s.uv.forEach(function(N,O){const Q=xi(T,n,M,N);w[O]===void 0&&(w[O]=[]),w[O].push(Q[0]),w[O].push(Q[1])}),o++,E&&(x.genFace(r,s,u,D,h,d,w,_,y,o),n++,o=0,u=[],h=[],d=[],w=[],_=[],y=[])}),r}genFace(s,r,n,o,l,u,h,d,w,_){for(let y=2;y<_;y++)s.vertex.push(r.vertexPositions[n[0]]),s.vertex.push(r.vertexPositions[n[1]]),s.vertex.push(r.vertexPositions[n[2]]),s.vertex.push(r.vertexPositions[n[(y-1)*3]]),s.vertex.push(r.vertexPositions[n[(y-1)*3+1]]),s.vertex.push(r.vertexPositions[n[(y-1)*3+2]]),s.vertex.push(r.vertexPositions[n[y*3]]),s.vertex.push(r.vertexPositions[n[y*3+1]]),s.vertex.push(r.vertexPositions[n[y*3+2]]),r.skeleton&&(s.vertexWeights.push(d[0]),s.vertexWeights.push(d[1]),s.vertexWeights.push(d[2]),s.vertexWeights.push(d[3]),s.vertexWeights.push(d[(y-1)*4]),s.vertexWeights.push(d[(y-1)*4+1]),s.vertexWeights.push(d[(y-1)*4+2]),s.vertexWeights.push(d[(y-1)*4+3]),s.vertexWeights.push(d[y*4]),s.vertexWeights.push(d[y*4+1]),s.vertexWeights.push(d[y*4+2]),s.vertexWeights.push(d[y*4+3]),s.weightsIndices.push(w[0]),s.weightsIndices.push(w[1]),s.weightsIndices.push(w[2]),s.weightsIndices.push(w[3]),s.weightsIndices.push(w[(y-1)*4]),s.weightsIndices.push(w[(y-1)*4+1]),s.weightsIndices.push(w[(y-1)*4+2]),s.weightsIndices.push(w[(y-1)*4+3]),s.weightsIndices.push(w[y*4]),s.weightsIndices.push(w[y*4+1]),s.weightsIndices.push(w[y*4+2]),s.weightsIndices.push(w[y*4+3])),r.color&&(s.colors.push(u[0]),s.colors.push(u[1]),s.colors.push(u[2]),s.colors.push(u[(y-1)*3]),s.colors.push(u[(y-1)*3+1]),s.colors.push(u[(y-1)*3+2]),s.colors.push(u[y*3]),s.colors.push(u[y*3+1]),s.colors.push(u[y*3+2])),r.material&&r.material.mappingType!=="AllSame"&&(s.materialIndex.push(o),s.materialIndex.push(o),s.materialIndex.push(o)),r.normal&&(s.normal.push(l[0]),s.normal.push(l[1]),s.normal.push(l[2]),s.normal.push(l[(y-1)*3]),s.normal.push(l[(y-1)*3+1]),s.normal.push(l[(y-1)*3+2]),s.normal.push(l[y*3]),s.normal.push(l[y*3+1]),s.normal.push(l[y*3+2])),r.uv&&r.uv.forEach(function(x,M){s.uvs[M]===void 0&&(s.uvs[M]=[]),s.uvs[M].push(h[M][0]),s.uvs[M].push(h[M][1]),s.uvs[M].push(h[M][(y-1)*2]),s.uvs[M].push(h[M][(y-1)*2+1]),s.uvs[M].push(h[M][y*2]),s.uvs[M].push(h[M][y*2+1])})}addMorphTargets(s,r,n,o){if(n.length===0)return;s.morphTargetsRelative=!0,s.morphAttributes.position=[];const l=this;n.forEach(function(u){u.rawTargets.forEach(function(h){const d=re.Objects.Geometry[h.geoID];d!==void 0&&l.genMorphGeometry(s,r,d,o,h.name)})})}genMorphGeometry(s,r,n,o,l){const u=r.PolygonVertexIndex!==void 0?r.PolygonVertexIndex.a:[],h=n.Vertices!==void 0?n.Vertices.a:[],d=n.Indexes!==void 0?n.Indexes.a:[],w=s.attributes.position.count*3,_=new Float32Array(w);for(let T=0;T<d.length;T++){const D=d[T]*3;_[D]=h[T*3],_[D+1]=h[T*3+1],_[D+2]=h[T*3+2]}const y={vertexIndices:u,vertexPositions:_},x=this.genBuffers(y),M=new f.Float32BufferAttribute(x.vertex,3);M.name=l||n.attrName,M.applyMatrix4(o),s.morphAttributes.position.push(M)}parseNormals(s){const r=s.MappingInformationType,n=s.ReferenceInformationType,o=s.Normals.a;let l=[];return n==="IndexToDirect"&&("NormalIndex"in s?l=s.NormalIndex.a:"NormalsIndex"in s&&(l=s.NormalsIndex.a)),{dataSize:3,buffer:o,indices:l,mappingType:r,referenceType:n}}parseUVs(s){const r=s.MappingInformationType,n=s.ReferenceInformationType,o=s.UV.a;let l=[];return n==="IndexToDirect"&&(l=s.UVIndex.a),{dataSize:2,buffer:o,indices:l,mappingType:r,referenceType:n}}parseVertexColors(s){const r=s.MappingInformationType,n=s.ReferenceInformationType,o=s.Colors.a;let l=[];return n==="IndexToDirect"&&(l=s.ColorIndex.a),{dataSize:4,buffer:o,indices:l,mappingType:r,referenceType:n}}parseMaterialIndices(s){const r=s.MappingInformationType,n=s.ReferenceInformationType;if(r==="NoMappingInformation")return{dataSize:1,buffer:[0],indices:[0],mappingType:"AllSame",referenceType:n};const o=s.Materials.a,l=[];for(let u=0;u<o.length;++u)l.push(u);return{dataSize:1,buffer:o,indices:l,mappingType:r,referenceType:n}}parseNurbsGeometry(s){if(zr===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(s.Order);if(isNaN(r))return console.error("THREE.FBXLoader: Invalid Order %s given for geometry ID: %s",s.Order,s.id),new f.BufferGeometry;const n=r-1,o=s.KnotVector.a,l=[],u=s.Points.a;for(let y=0,x=u.length;y<x;y+=4)l.push(new f.Vector4().fromArray(u,y));let h,d;if(s.Form==="Closed")l.push(l[0]);else if(s.Form==="Periodic"){h=n,d=o.length-1-h;for(let y=0;y<n;++y)l.push(l[y])}const _=new zr(n,o,l,h,d).getPoints(l.length*12);return new f.BufferGeometry().setFromPoints(_)}}class nl{parse(){const s=[],r=this.parseClips();if(r!==void 0)for(const n in r){const o=r[n],l=this.addClip(o);s.push(l)}return s}parseClips(){if(re.Objects.AnimationCurve===void 0)return;const s=this.parseAnimationCurveNodes();this.parseAnimationCurves(s);const r=this.parseAnimationLayers(s);return this.parseAnimStacks(r)}parseAnimationCurveNodes(){const s=re.Objects.AnimationCurveNode,r=new Map;for(const n in s){const o=s[n];if(o.attrName.match(/S|R|T|DeformPercent/)!==null){const l={id:o.id,attr:o.attrName,curves:{}};r.set(l.id,l)}}return r}parseAnimationCurves(s){const r=re.Objects.AnimationCurve;for(const n in r){const o={id:r[n].id,times:r[n].KeyTime.a.map(al),values:r[n].KeyValueFloat.a},l=Ae.get(o.id);if(l!==void 0){const u=l.parents[0].ID,h=l.parents[0].relationship;h.match(/X/)?s.get(u).curves.x=o:h.match(/Y/)?s.get(u).curves.y=o:h.match(/Z/)?s.get(u).curves.z=o:h.match(/d|DeformPercent/)&&s.has(u)&&(s.get(u).curves.morph=o)}}}parseAnimationLayers(s){const r=re.Objects.AnimationLayer,n=new Map;for(const o in r){const l=[],u=Ae.get(parseInt(o));u!==void 0&&(u.children.forEach(function(d,w){if(s.has(d.ID)){const _=s.get(d.ID);if(_.curves.x!==void 0||_.curves.y!==void 0||_.curves.z!==void 0){if(l[w]===void 0){const y=Ae.get(d.ID).parents.filter(function(x){return x.relationship!==void 0})[0].ID;if(y!==void 0){const x=re.Objects.Model[y.toString()];if(x===void 0){console.warn("THREE.FBXLoader: Encountered a unused curve.",d);return}const M={modelName:x.attrName?f.PropertyBinding.sanitizeNodeName(x.attrName):"",ID:x.id,initialPosition:[0,0,0],initialRotation:[0,0,0],initialScale:[1,1,1]};je.traverse(function(T){T.ID===x.id&&(M.transform=T.matrix,T.userData.transformData&&(M.eulerOrder=T.userData.transformData.eulerOrder))}),M.transform||(M.transform=new f.Matrix4),"PreRotation"in x&&(M.preRotation=x.PreRotation.value),"PostRotation"in x&&(M.postRotation=x.PostRotation.value),l[w]=M}}l[w]&&(l[w][_.attr]=_)}else if(_.curves.morph!==void 0){if(l[w]===void 0){const y=Ae.get(d.ID).parents.filter(function(F){return F.relationship!==void 0})[0].ID,x=Ae.get(y).parents[0].ID,M=Ae.get(x).parents[0].ID,T=Ae.get(M).parents[0].ID,D=re.Objects.Model[T],E={modelName:D.attrName?f.PropertyBinding.sanitizeNodeName(D.attrName):"",morphName:re.Objects.Deformer[y].attrName};l[w]=E}l[w][_.attr]=_}}}),n.set(parseInt(o),l))}return n}parseAnimStacks(s){const r=re.Objects.AnimationStack,n={};for(const o in r){const l=Ae.get(parseInt(o)).children;l.length>1&&console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.");const u=s.get(l[0].ID);n[o]={name:r[o].attrName,layer:u}}return n}addClip(s){let r=[];const n=this;return s.layer.forEach(function(o){r=r.concat(n.generateTracks(o))}),new f.AnimationClip(s.name,-1,r)}generateTracks(s){const r=[];let n=new f.Vector3,o=new f.Quaternion,l=new f.Vector3;if(s.transform&&s.transform.decompose(n,o,l),n=n.toArray(),o=new f.Euler().setFromQuaternion(o,s.eulerOrder).toArray(),l=l.toArray(),s.T!==void 0&&Object.keys(s.T.curves).length>0){const u=this.generateVectorTrack(s.modelName,s.T.curves,n,"position");u!==void 0&&r.push(u)}if(s.R!==void 0&&Object.keys(s.R.curves).length>0){const u=this.generateRotationTrack(s.modelName,s.R.curves,o,s.preRotation,s.postRotation,s.eulerOrder);u!==void 0&&r.push(u)}if(s.S!==void 0&&Object.keys(s.S.curves).length>0){const u=this.generateVectorTrack(s.modelName,s.S.curves,l,"scale");u!==void 0&&r.push(u)}if(s.DeformPercent!==void 0){const u=this.generateMorphTrack(s);u!==void 0&&r.push(u)}return r}generateVectorTrack(s,r,n,o){const l=this.getTimesForAllAxes(r),u=this.getKeyframeTrackValues(l,r,n);return new f.VectorKeyframeTrack(s+"."+o,l,u)}generateRotationTrack(s,r,n,o,l,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),d=this.getKeyframeTrackValues(h,r,n);o!==void 0&&(o=o.map(f.MathUtils.degToRad),o.push(u),o=new f.Euler().fromArray(o),o=new f.Quaternion().setFromEuler(o)),l!==void 0&&(l=l.map(f.MathUtils.degToRad),l.push(u),l=new f.Euler().fromArray(l),l=new f.Quaternion().setFromEuler(l).invert());const w=new f.Quaternion,_=new f.Euler,y=[];for(let x=0;x<d.length;x+=3)_.set(d[x],d[x+1],d[x+2],u),w.setFromEuler(_),o!==void 0&&w.premultiply(o),l!==void 0&&w.multiply(l),w.toArray(y,x/3*4);return new f.QuaternionKeyframeTrack(s+".quaternion",h,y)}generateMorphTrack(s){const r=s.DeformPercent.curves.morph,n=r.values.map(function(l){return l/100}),o=je.getObjectByName(s.modelName).morphTargetDictionary[s.morphName];return new f.NumberKeyframeTrack(s.modelName+".morphTargetInfluences["+o+"]",r.times,n)}getTimesForAllAxes(s){let r=[];if(s.x!==void 0&&(r=r.concat(s.x.times)),s.y!==void 0&&(r=r.concat(s.y.times)),s.z!==void 0&&(r=r.concat(s.z.times)),r=r.sort(function(n,o){return n-o}),r.length>1){let n=1,o=r[0];for(let l=1;l<r.length;l++){const u=r[l];u!==o&&(r[n]=u,o=u,n++)}r=r.slice(0,n)}return r}getKeyframeTrackValues(s,r,n){const o=n,l=[];let u=-1,h=-1,d=-1;return s.forEach(function(w){if(r.x&&(u=r.x.times.indexOf(w)),r.y&&(h=r.y.times.indexOf(w)),r.z&&(d=r.z.times.indexOf(w)),u!==-1){const _=r.x.values[u];l.push(_),o[0]=_}else l.push(o[0]);if(h!==-1){const _=r.y.values[h];l.push(_),o[1]=_}else l.push(o[1]);if(d!==-1){const _=r.z.values[d];l.push(_),o[2]=_}else l.push(o[2])}),l}interpolateRotations(s){for(let r=1;r<s.values.length;r++){const n=s.values[r-1],o=s.values[r]-n,l=Math.abs(o);if(l>=180){const u=l/180,h=o/u;let d=n+h;const w=s.times[r-1],y=(s.times[r]-w)/u;let x=w+y;const M=[],T=[];for(;x<s.times[r];)M.push(x),x+=y,T.push(d),d+=h;s.times=Xr(s.times,r,M),s.values=Xr(s.values,r,T)}}}}class il{getPrevNode(){return this.nodeStack[this.currentIndent-2]}getCurrentNode(){return this.nodeStack[this.currentIndent-1]}getCurrentProp(){return this.currentProp}pushStack(s){this.nodeStack.push(s),this.currentIndent+=1}popStack(){this.nodeStack.pop(),this.currentIndent-=1}setCurrentProp(s,r){this.currentProp=s,this.currentPropName=r}parse(s){this.currentIndent=0,this.allNodes=new Ur,this.nodeStack=[],this.currentProp=[],this.currentPropName="";const r=this,n=s.split(/[\r\n]+/);return n.forEach(function(o,l){const u=o.match(/^[\s\t]*;/),h=o.match(/^[\s\t]*$/);if(u||h)return;const d=o.match("^\\t{"+r.currentIndent+"}(\\w+):(.*){",""),w=o.match("^\\t{"+r.currentIndent+"}(\\w+):[\\s\\t\\r\\n](.*)"),_=o.match("^\\t{"+(r.currentIndent-1)+"}}");d?r.parseNodeBegin(o,d):w?r.parseNodeProperty(o,w,n[++l]):_?r.popStack():o.match(/^[^\s\t}]/)&&r.parseNodePropertyContinued(o)}),this.allNodes}parseNodeBegin(s,r){const n=r[1].trim().replace(/^"/,"").replace(/"$/,""),o=r[2].split(",").map(function(d){return d.trim().replace(/^"/,"").replace(/"$/,"")}),l={name:n},u=this.parseNodeAttr(o),h=this.getCurrentNode();this.currentIndent===0?this.allNodes.add(n,l):n in h?(n==="PoseNode"?h.PoseNode.push(l):h[n].id!==void 0&&(h[n]={},h[n][h[n].id]=h[n]),u.id!==""&&(h[n][u.id]=l)):typeof u.id=="number"?(h[n]={},h[n][u.id]=l):n!=="Properties70"&&(n==="PoseNode"?h[n]=[l]:h[n]=l),typeof u.id=="number"&&(l.id=u.id),u.name!==""&&(l.attrName=u.name),u.type!==""&&(l.attrType=u.type),this.pushStack(l)}parseNodeAttr(s){let r=s[0];s[0]!==""&&(r=parseInt(s[0]),isNaN(r)&&(r=s[0]));let n="",o="";return s.length>1&&(n=s[1].replace(/^(\w+)::/,""),o=s[2]),{id:r,name:n,type:o}}parseNodeProperty(s,r,n){let o=r[1].replace(/^"/,"").replace(/"$/,"").trim(),l=r[2].replace(/^"/,"").replace(/"$/,"").trim();o==="Content"&&l===","&&(l=n.replace(/"/g,"").replace(/,$/,"").trim());const u=this.getCurrentNode();if(u.name==="Properties70"){this.parseNodeSpecialProperty(s,o,l);return}if(o==="C"){const d=l.split(",").slice(1),w=parseInt(d[0]),_=parseInt(d[1]);let y=l.split(",").slice(3);y=y.map(function(x){return x.trim().replace(/^"/,"")}),o="connections",l=[w,_],cl(l,y),u[o]===void 0&&(u[o]=[])}o==="Node"&&(u.id=l),o in u&&Array.isArray(u[o])?u[o].push(l):o!=="a"?u[o]=l:u.a=l,this.setCurrentProp(u,o),o==="a"&&l.slice(-1)!==","&&(u.a=us(l))}parseNodePropertyContinued(s){const r=this.getCurrentNode();r.a+=s,s.slice(-1)!==","&&(r.a=us(r.a))}parseNodeSpecialProperty(s,r,n){const o=n.split('",').map(function(_){return _.trim().replace(/^\"/,"").replace(/\s/,"_")}),l=o[0],u=o[1],h=o[2],d=o[3];let w=o[4];switch(u){case"int":case"enum":case"bool":case"ULongLong":case"double":case"Number":case"FieldOfView":w=parseFloat(w);break;case"Color":case"ColorRGB":case"Vector3D":case"Lcl_Translation":case"Lcl_Rotation":case"Lcl_Scaling":w=us(w);break}this.getPrevNode()[l]={type:u,type2:h,flag:d,value:w},this.setCurrentProp(this.getPrevNode(),l)}}class sl{parse(s){const r=new jr(s);r.skip(23);const n=r.getUint32();if(n<6400)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+n);const o=new Ur;for(;!this.endOfContent(r);){const l=this.parseNode(r,n);l!==null&&o.add(l.name,l)}return o}endOfContent(s){return s.size()%16===0?(s.getOffset()+160+16&-16)>=s.size():s.getOffset()+160+16>=s.size()}parseNode(s,r){const n={},o=r>=7500?s.getUint64():s.getUint32(),l=r>=7500?s.getUint64():s.getUint32();r>=7500?s.getUint64():s.getUint32();const u=s.getUint8(),h=s.getString(u);if(o===0)return null;const d=[];for(let x=0;x<l;x++)d.push(this.parseProperty(s));const w=d.length>0?d[0]:"",_=d.length>1?d[1]:"",y=d.length>2?d[2]:"";for(n.singleProperty=l===1&&s.getOffset()===o;o>s.getOffset();){const x=this.parseNode(s,r);x!==null&&this.parseSubNode(h,n,x)}return n.propertyList=d,typeof w=="number"&&(n.id=w),_!==""&&(n.attrName=_),y!==""&&(n.attrType=y),h!==""&&(n.name=h),n}parseSubNode(s,r,n){if(n.singleProperty===!0){const o=n.propertyList[0];Array.isArray(o)?(r[n.name]=n,n.a=o):r[n.name]=o}else if(s==="Connections"&&n.name==="C"){const o=[];n.propertyList.forEach(function(l,u){u!==0&&o.push(l)}),r.connections===void 0&&(r.connections=[]),r.connections.push(o)}else if(n.name==="Properties70")Object.keys(n).forEach(function(l){r[l]=n[l]});else if(s==="Properties70"&&n.name==="P"){let o=n.propertyList[0],l=n.propertyList[1];const u=n.propertyList[2],h=n.propertyList[3];let d;o.indexOf("Lcl ")===0&&(o=o.replace("Lcl ","Lcl_")),l.indexOf("Lcl ")===0&&(l=l.replace("Lcl ","Lcl_")),l==="Color"||l==="ColorRGB"||l==="Vector"||l==="Vector3D"||l.indexOf("Lcl_")===0?d=[n.propertyList[4],n.propertyList[5],n.propertyList[6]]:d=n.propertyList[4],r[o]={type:l,type2:u,flag:h,value:d}}else r[n.name]===void 0?typeof n.id=="number"?(r[n.name]={},r[n.name][n.id]=n):r[n.name]=n:n.name==="PoseNode"?(Array.isArray(r[n.name])||(r[n.name]=[r[n.name]]),r[n.name].push(n)):r[n.name][n.id]===void 0&&(r[n.name][n.id]=n)}parseProperty(s){const r=s.getString(1);let n;switch(r){case"C":return s.getBoolean();case"D":return s.getFloat64();case"F":return s.getFloat32();case"I":return s.getInt32();case"L":return s.getInt64();case"R":return n=s.getUint32(),s.getArrayBuffer(n);case"S":return n=s.getUint32(),s.getString(n);case"Y":return s.getInt16();case"b":case"c":case"d":case"f":case"i":case"l":const o=s.getUint32(),l=s.getUint32(),u=s.getUint32();if(l===0)switch(r){case"b":case"c":return s.getBooleanArray(o);case"d":return s.getFloat64Array(o);case"f":return s.getFloat32Array(o);case"i":return s.getInt32Array(o);case"l":return s.getInt64Array(o)}const h=ta(new Uint8Array(s.getArrayBuffer(u))),d=new jr(h.buffer);switch(r){case"b":case"c":return d.getBooleanArray(o);case"d":return d.getFloat64Array(o);case"f":return d.getFloat32Array(o);case"i":return d.getInt32Array(o);case"l":return d.getInt64Array(o)}default:throw new Error("THREE.FBXLoader: Unknown property type "+r)}}}class jr{constructor(s,r){this.dv=new DataView(s),this.offset=0,this.littleEndian=r!==void 0?r:!0}getOffset(){return this.offset}size(){return this.dv.buffer.byteLength}skip(s){this.offset+=s}getBoolean(){return(this.getUint8()&1)===1}getBooleanArray(s){const r=[];for(let n=0;n<s;n++)r.push(this.getBoolean());return r}getUint8(){const s=this.dv.getUint8(this.offset);return this.offset+=1,s}getInt16(){const s=this.dv.getInt16(this.offset,this.littleEndian);return this.offset+=2,s}getInt32(){const s=this.dv.getInt32(this.offset,this.littleEndian);return this.offset+=4,s}getInt32Array(s){const r=[];for(let n=0;n<s;n++)r.push(this.getInt32());return r}getUint32(){const s=this.dv.getUint32(this.offset,this.littleEndian);return this.offset+=4,s}getInt64(){let s,r;return this.littleEndian?(s=this.getUint32(),r=this.getUint32()):(r=this.getUint32(),s=this.getUint32()),r&2147483648?(r=~r&4294967295,s=~s&4294967295,s===4294967295&&(r=r+1&4294967295),s=s+1&4294967295,-(r*4294967296+s)):r*4294967296+s}getInt64Array(s){const r=[];for(let n=0;n<s;n++)r.push(this.getInt64());return r}getUint64(){let s,r;return this.littleEndian?(s=this.getUint32(),r=this.getUint32()):(r=this.getUint32(),s=this.getUint32()),r*4294967296+s}getFloat32(){const s=this.dv.getFloat32(this.offset,this.littleEndian);return this.offset+=4,s}getFloat32Array(s){const r=[];for(let n=0;n<s;n++)r.push(this.getFloat32());return r}getFloat64(){const s=this.dv.getFloat64(this.offset,this.littleEndian);return this.offset+=8,s}getFloat64Array(s){const r=[];for(let n=0;n<s;n++)r.push(this.getFloat64());return r}getArrayBuffer(s){const r=this.dv.buffer.slice(this.offset,this.offset+s);return this.offset+=s,r}getString(s){let r=[];for(let o=0;o<s;o++)r[o]=this.getUint8();const n=r.indexOf(0);return n>=0&&(r=r.slice(0,n)),f.LoaderUtils.decodeText(new Uint8Array(r))}}class Ur{add(s,r){this[s]=r}}function rl(b){const s="Kaydara FBX Binary \0";return b.byteLength>=s.length&&s===$r(b,0,s.length)}function ol(b){const s=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"];let r=0;function n(o){const l=b[o-1];return b=b.slice(r+o),r++,l}for(let o=0;o<s.length;++o)if(n(1)===s[o])return!1;return!0}function Rr(b){const s=/FBXVersion: (\d+)/,r=b.match(s);if(r)return parseInt(r[1]);throw new Error("THREE.FBXLoader: Cannot find the version number for the file given.")}function al(b){return b/46186158e3}const ll=[];function xi(b,s,r,n){let o;switch(n.mappingType){case"ByPolygonVertex":o=b;break;case"ByPolygon":o=s;break;case"ByVertice":o=r;break;case"AllSame":o=n.indices[0];break;default:console.warn("THREE.FBXLoader: unknown attribute mapping type "+n.mappingType)}n.referenceType==="IndexToDirect"&&(o=n.indices[o]);const l=o*n.dataSize,u=l+n.dataSize;return pl(ll,n.buffer,l,u)}const ps=new f.Euler,bn=new f.Vector3;function Gr(b){const s=new f.Matrix4,r=new f.Matrix4,n=new f.Matrix4,o=new f.Matrix4,l=new f.Matrix4,u=new f.Matrix4,h=new f.Matrix4,d=new f.Matrix4,w=new f.Matrix4,_=new f.Matrix4,y=new f.Matrix4,x=new f.Matrix4,M=b.inheritType?b.inheritType:0;if(b.translation&&s.setPosition(bn.fromArray(b.translation)),b.preRotation){const Y=b.preRotation.map(f.MathUtils.degToRad);Y.push(b.eulerOrder),r.makeRotationFromEuler(ps.fromArray(Y))}if(b.rotation){const Y=b.rotation.map(f.MathUtils.degToRad);Y.push(b.eulerOrder),n.makeRotationFromEuler(ps.fromArray(Y))}if(b.postRotation){const Y=b.postRotation.map(f.MathUtils.degToRad);Y.push(b.eulerOrder),o.makeRotationFromEuler(ps.fromArray(Y)),o.invert()}b.scale&&l.scale(bn.fromArray(b.scale)),b.scalingOffset&&h.setPosition(bn.fromArray(b.scalingOffset)),b.scalingPivot&&u.setPosition(bn.fromArray(b.scalingPivot)),b.rotationOffset&&d.setPosition(bn.fromArray(b.rotationOffset)),b.rotationPivot&&w.setPosition(bn.fromArray(b.rotationPivot)),b.parentMatrixWorld&&(y.copy(b.parentMatrix),_.copy(b.parentMatrixWorld));const T=r.clone().multiply(n).multiply(o),D=new f.Matrix4;D.extractRotation(_);const E=new f.Matrix4;E.copyPosition(_);const F=E.clone().invert().multiply(_),z=D.clone().invert().multiply(F),N=l,O=new f.Matrix4;if(M===0)O.copy(D).multiply(T).multiply(z).multiply(N);else if(M===1)O.copy(D).multiply(z).multiply(T).multiply(N);else{const Z=new f.Matrix4().scale(new f.Vector3().setFromMatrixScale(y)).clone().invert(),ue=z.clone().multiply(Z);O.copy(D).multiply(T).multiply(ue).multiply(N)}const Q=w.clone().invert(),$=u.clone().invert();let U=s.clone().multiply(d).multiply(w).multiply(r).multiply(n).multiply(o).multiply(Q).multiply(h).multiply(u).multiply(l).multiply($);const j=new f.Matrix4().copyPosition(U),X=_.clone().multiply(j);return x.copyPosition(X),U=x.clone().multiply(O),U.premultiply(_.invert()),U}function Kr(b){b=b||0;const s=["ZYX","YZX","XZY","ZXY","YXZ","XYZ"];return b===6?(console.warn("THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect."),s[0]):s[b]}function us(b){return b.split(",").map(function(r){return parseFloat(r)})}function $r(b,s,r){return s===void 0&&(s=0),r===void 0&&(r=b.byteLength),f.LoaderUtils.decodeText(new Uint8Array(b,s,r))}function cl(b,s){for(let r=0,n=b.length,o=s.length;r<o;r++,n++)b[n]=s[r]}function pl(b,s,r,n){for(let o=r,l=0;o<n;o++,l++)b[l]=s[o];return b}function Xr(b,s,r){return b.slice(0,s).concat(r).concat(b.slice(s))}class ul extends f.Loader{constructor(s){super(s)}load(s,r,n,o){const l=new f.FileLoader(this.manager);l.setPath(this.path),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(s,u=>{if(typeof u!="string")throw new Error("unsupported data type");const h=JSON.parse(u),d=this.parse(h);r&&r(d)},n,o)}parse(s){return new hs(s)}}class hs{constructor(s){A(this,"data",void 0),this.data=s}generateShapes(s,r=100,n){const o=[],l={letterSpacing:0,lineHeight:1,...n},u=hl(s,r,this.data,l);for(let h=0,d=u.length;h<d;h++)Array.prototype.push.apply(o,u[h].toShapes(!1));return o}}A(hs,"isFont",void 0),A(hs,"type",void 0);function hl(b,s,r,n){const o=Array.from(b),l=s/r.resolution,u=(r.boundingBox.yMax-r.boundingBox.yMin+r.underlineThickness)*l,h=[];let d=0,w=0;for(let _=0;_<o.length;_++){const y=o[_];if(y===`
74
- `)d=0,w-=u*n.lineHeight;else{const x=dl(y,l,d,w,r);x&&(d+=x.offsetX+n.letterSpacing,h.push(x.path))}}return h}function dl(b,s,r,n,o){const l=o.glyphs[b]||o.glyphs["?"];if(!l){console.error('THREE.Font: character "'+b+'" does not exists in font family '+o.familyName+".");return}const u=new f.ShapePath;let h,d,w,_,y,x,M,T;if(l.o){const D=l._cachedOutline||(l._cachedOutline=l.o.split(" "));for(let E=0,F=D.length;E<F;)switch(D[E++]){case"m":h=parseInt(D[E++])*s+r,d=parseInt(D[E++])*s+n,u.moveTo(h,d);break;case"l":h=parseInt(D[E++])*s+r,d=parseInt(D[E++])*s+n,u.lineTo(h,d);break;case"q":w=parseInt(D[E++])*s+r,_=parseInt(D[E++])*s+n,y=parseInt(D[E++])*s+r,x=parseInt(D[E++])*s+n,u.quadraticCurveTo(y,x,w,_);break;case"b":w=parseInt(D[E++])*s+r,_=parseInt(D[E++])*s+n,y=parseInt(D[E++])*s+r,x=parseInt(D[E++])*s+n,M=parseInt(D[E++])*s+r,T=parseInt(D[E++])*s+n,u.bezierCurveTo(y,x,M,T,w,_);break}}return{offsetX:l.ha*s,path:u}}var Yr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ml(b){return b&&b.__esModule&&Object.prototype.hasOwnProperty.call(b,"default")?b.default:b}class fl extends f.DataTextureLoader{constructor(s){super(s),this.type=f.HalfFloatType}parse(s){const h=function(N,O){switch(N){case 1:console.error("THREE.RGBELoader Read Error: "+(O||""));break;case 2:console.error("THREE.RGBELoader Write Error: "+(O||""));break;case 3:console.error("THREE.RGBELoader Bad File Format: "+(O||""));break;default:case 4:console.error("THREE.RGBELoader: Error: "+(O||""))}return-1},y=`
75
- `,x=function(N,O,Q){O=O||1024;let U=N.pos,j=-1,X=0,Y="",Z=String.fromCharCode.apply(null,new Uint16Array(N.subarray(U,U+128)));for(;0>(j=Z.indexOf(y))&&X<O&&U<N.byteLength;)Y+=Z,X+=Z.length,U+=128,Z+=String.fromCharCode.apply(null,new Uint16Array(N.subarray(U,U+128)));return-1<j?(Q!==!1&&(N.pos+=X+j+1),Y+Z.slice(0,j)):!1},M=function(N){const O=/^#\?(\S+)/,Q=/^\s*GAMMA\s*=\s*(\d+(\.\d+)?)\s*$/,$=/^\s*EXPOSURE\s*=\s*(\d+(\.\d+)?)\s*$/,U=/^\s*FORMAT=(\S+)\s*$/,j=/^\s*\-Y\s+(\d+)\s+\+X\s+(\d+)\s*$/,X={valid:0,string:"",comments:"",programtype:"RGBE",format:"",gamma:1,exposure:1,width:0,height:0};let Y,Z;if(N.pos>=N.byteLength||!(Y=x(N)))return h(1,"no header found");if(!(Z=Y.match(O)))return h(3,"bad initial token");for(X.valid|=1,X.programtype=Z[1],X.string+=Y+`
73
+ `};function Fr(g,i,r){const s=r.length-g-1;if(i>=r[s])return s-1;if(i<=r[g])return g;let o=g,l=s,u=Math.floor((o+l)/2);for(;i<r[u]||i>=r[u+1];)i<r[u]?l=u:o=u,u=Math.floor((o+l)/2);return u}function Xa(g,i,r,s){const o=[],l=[],u=[];o[0]=1;for(let h=1;h<=r;++h){l[h]=i-s[g+1-h],u[h]=s[g+h]-i;let d=0;for(let w=0;w<h;++w){const _=u[w+1],y=l[h-w],x=o[w]/(_+y);o[w]=d+_*x,d=y*x}o[h]=d}return o}function Ya(g,i,r,s){const o=Fr(g,s,i),l=Xa(o,s,g,i),u=new f.Vector4(0,0,0,0);for(let h=0;h<=g;++h){const d=r[o-g+h],w=l[h],_=d.w*w;u.x+=d.x*_,u.y+=d.y*_,u.z+=d.z*_,u.w+=d.w*w}return u}function qa(g,i,r,s,o){const l=[];for(let x=0;x<=r;++x)l[x]=0;const u=[];for(let x=0;x<=s;++x)u[x]=l.slice(0);const h=[];for(let x=0;x<=r;++x)h[x]=l.slice(0);h[0][0]=1;const d=l.slice(0),w=l.slice(0);for(let x=1;x<=r;++x){d[x]=i-o[g+1-x],w[x]=o[g+x]-i;let M=0;for(let O=0;O<x;++O){const I=w[O+1],T=d[x-O];h[x][O]=I+T;const F=h[O][x-1]/h[x][O];h[O][x]=M+I*F,M=T*F}h[x][x]=M}for(let x=0;x<=r;++x)u[0][x]=h[x][r];for(let x=0;x<=r;++x){let M=0,O=1;const I=[];for(let T=0;T<=r;++T)I[T]=l.slice(0);I[0][0]=1;for(let T=1;T<=s;++T){let F=0;const z=x-T,N=r-T;x>=T&&(I[O][0]=I[M][0]/h[N+1][z],F=I[O][0]*h[z][N]);const E=z>=-1?1:-z,Q=x-1<=N?T-1:r-x;for(let $=E;$<=Q;++$)I[O][$]=(I[M][$]-I[M][$-1])/h[N+1][z+$],F+=I[O][$]*h[z+$][N];x<=N&&(I[O][T]=-I[M][T-1]/h[N+1][x],F+=I[O][T]*h[x][N]),u[T][x]=F;var _=M;M=O,O=_}}var y=r;for(let x=1;x<=s;++x){for(let M=0;M<=r;++M)u[x][M]*=y;y*=r-x}return u}function Qa(g,i,r,s,o){const l=o<g?o:g,u=[],h=Fr(g,s,i),d=qa(h,s,g,l,i),w=[];for(let y=0;y<r.length;++y){var _=r[y].clone();const x=_.w;_.x*=x,_.y*=x,_.z*=x,w[y]=_}for(let y=0;y<=l;++y){var _=w[h-g].clone().multiplyScalar(d[y][0]);for(let M=1;M<=g;++M)_.add(w[h-g+M].clone().multiplyScalar(d[y][M]));u[y]=_}for(let y=l+1;y<=o+1;++y)u[y]=new f.Vector4(0,0,0);return u}function Za(g,i){let r=1;for(let o=2;o<=g;++o)r*=o;let s=1;for(let o=2;o<=i;++o)s*=o;for(let o=2;o<=g-i;++o)s*=o;return r/s}function Wa(g){const i=g.length,r=[],s=[];for(let l=0;l<i;++l){const u=g[l];r[l]=new f.Vector3(u.x,u.y,u.z),s[l]=u.w}const o=[];for(let l=0;l<i;++l){const u=r[l].clone();for(let h=1;h<=l;++h)u.sub(o[l-h].clone().multiplyScalar(Za(l,h)*s[h]));o[l]=u.divideScalar(s[0])}return o}function Ja(g,i,r,s,o){const l=Qa(g,i,r,s,o);return Wa(l)}class zr extends f.Curve{constructor(i,r,s,o,l){super(),this.degree=i,this.knots=r,this.controlPoints=[],this.startKnot=o||0,this.endKnot=l||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,o=this.knots[this.startKnot]+i*(this.knots[this.endKnot]-this.knots[this.startKnot]),l=Ya(this.degree,this.knots,this.controlPoints,o);return l.w!=1&&l.divideScalar(l.w),s.set(l.x,l.y,l.z)}getTangent(i,r){const s=r||new f.Vector3,o=this.knots[0]+i*(this.knots[this.knots.length-1]-this.knots[0]),l=Ja(this.degree,this.knots,this.controlPoints,o,1);return s.copy(l[1]).normalize(),s}}let re,Ae,Ue;class Ha extends f.Loader{constructor(i){super(i)}load(i,r,s,o){const l=this,u=l.path===""?f.LoaderUtils.extractUrlBase(i):l.path,h=new f.FileLoader(this.manager);h.setPath(l.path),h.setResponseType("arraybuffer"),h.setRequestHeader(l.requestHeader),h.setWithCredentials(l.withCredentials),h.load(i,function(d){try{r(l.parse(d,u))}catch(w){o?o(w):console.error(w),l.manager.itemError(i)}},s,o)}parse(i,r){if(rl(i))re=new sl().parse(i);else{const o=$r(i);if(!ol(o))throw new Error("THREE.FBXLoader: Unknown format.");if(Rr(o)<7e3)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+Rr(o));re=new il().parse(o)}const s=new f.TextureLoader(this.manager).setPath(this.resourcePath||r).setCrossOrigin(this.crossOrigin);return new el(s,this.manager).parse(re)}}class el{constructor(i,r){this.textureLoader=i,this.manager=r}parse(){Ae=this.parseConnections();const i=this.parseImages(),r=this.parseTextures(i),s=this.parseMaterials(r),o=this.parseDeformers(),l=new tl().parse(o);return this.parseScene(o,l,s),Ue}parseConnections(){const i=new Map;return"Connections"in re&&re.Connections.connections.forEach(function(s){const o=s[0],l=s[1],u=s[2];i.has(o)||i.set(o,{parents:[],children:[]});const h={ID:l,relationship:u};i.get(o).parents.push(h),i.has(l)||i.set(l,{parents:[],children:[]});const d={ID:o,relationship:u};i.get(l).children.push(d)}),i}parseImages(){const i={},r={};if("Video"in re.Objects){const s=re.Objects.Video;for(const o in s){const l=s[o],u=parseInt(o);if(i[u]=l.RelativeFilename||l.Filename,"Content"in l){const h=l.Content instanceof ArrayBuffer&&l.Content.byteLength>0,d=typeof l.Content=="string"&&l.Content!=="";if(h||d){const w=this.parseImage(s[o]);r[l.RelativeFilename||l.Filename]=w}}}}for(const s in i){const o=i[s];r[o]!==void 0?i[s]=r[o]:i[s]=i[s].split("\\").pop()}return i}parseImage(i){const r=i.Content,s=i.RelativeFilename||i.Filename,o=s.slice(s.lastIndexOf(".")+1).toLowerCase();let l;switch(o){case"bmp":l="image/bmp";break;case"jpg":case"jpeg":l="image/jpeg";break;case"png":l="image/png";break;case"tif":l="image/tiff";break;case"tga":this.manager.getHandler(".tga")===null&&console.warn("FBXLoader: TGA loader not found, skipping ",s),l="image/tga";break;default:console.warn('FBXLoader: Image type "'+o+'" is not supported.');return}if(typeof r=="string")return"data:"+l+";base64,"+r;{const u=new Uint8Array(r);return window.URL.createObjectURL(new Blob([u],{type:l}))}}parseTextures(i){const r=new Map;if("Texture"in re.Objects){const s=re.Objects.Texture;for(const o in s){const l=this.parseTexture(s[o],i);r.set(parseInt(o),l)}}return r}parseTexture(i,r){const s=this.loadTexture(i,r);s.ID=i.id,s.name=i.attrName;const o=i.WrapModeU,l=i.WrapModeV,u=o!==void 0?o.value:0,h=l!==void 0?l.value:0;if(s.wrapS=u===0?f.RepeatWrapping:f.ClampToEdgeWrapping,s.wrapT=h===0?f.RepeatWrapping:f.ClampToEdgeWrapping,"Scaling"in i){const d=i.Scaling.value;s.repeat.x=d[0],s.repeat.y=d[1]}return s}loadTexture(i,r){let s;const o=this.textureLoader.path,l=Ae.get(i.id).children;l!==void 0&&l.length>0&&r[l[0].ID]!==void 0&&(s=r[l[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 d=this.manager.getHandler(".tga");d===null?(console.warn("FBXLoader: TGA loader not found, creating placeholder texture for",i.RelativeFilename),u=new f.Texture):(d.setPath(this.textureLoader.path),u=d.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(o),u}parseMaterials(i){const r=new Map;if("Material"in re.Objects){const s=re.Objects.Material;for(const o in s){const l=this.parseMaterial(s[o],i);l!==null&&r.set(parseInt(o),l)}}return r}parseMaterial(i,r){const s=i.id,o=i.attrName;let l=i.ShadingModel;if(typeof l=="object"&&(l=l.value),!Ae.has(s))return null;const u=this.parseParameters(i,r,s);let h;switch(l.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.',l),h=new f.MeshPhongMaterial;break}return h.setValues(u),h.name=o,h}parseParameters(i,r,s){const o={};i.BumpFactor&&(o.bumpScale=i.BumpFactor.value),i.Diffuse?o.color=new f.Color().fromArray(i.Diffuse.value):i.DiffuseColor&&(i.DiffuseColor.type==="Color"||i.DiffuseColor.type==="ColorRGB")&&(o.color=new f.Color().fromArray(i.DiffuseColor.value)),i.DisplacementFactor&&(o.displacementScale=i.DisplacementFactor.value),i.Emissive?o.emissive=new f.Color().fromArray(i.Emissive.value):i.EmissiveColor&&(i.EmissiveColor.type==="Color"||i.EmissiveColor.type==="ColorRGB")&&(o.emissive=new f.Color().fromArray(i.EmissiveColor.value)),i.EmissiveFactor&&(o.emissiveIntensity=parseFloat(i.EmissiveFactor.value)),i.Opacity&&(o.opacity=parseFloat(i.Opacity.value)),o.opacity<1&&(o.transparent=!0),i.ReflectionFactor&&(o.reflectivity=i.ReflectionFactor.value),i.Shininess&&(o.shininess=i.Shininess.value),i.Specular?o.specular=new f.Color().fromArray(i.Specular.value):i.SpecularColor&&i.SpecularColor.type==="Color"&&(o.specular=new f.Color().fromArray(i.SpecularColor.value));const l=this;return Ae.get(s).children.forEach(function(u){const h=u.relationship;switch(h){case"Bump":o.bumpMap=l.getTexture(r,u.ID);break;case"Maya|TEX_ao_map":o.aoMap=l.getTexture(r,u.ID);break;case"DiffuseColor":case"Maya|TEX_color_map":o.map=l.getTexture(r,u.ID),o.map!==void 0&&("colorSpace"in o.map?o.map.colorSpace="srgb":o.map.encoding=3001);break;case"DisplacementColor":o.displacementMap=l.getTexture(r,u.ID);break;case"EmissiveColor":o.emissiveMap=l.getTexture(r,u.ID),o.emissiveMap!==void 0&&("colorSpace"in o.emissiveMap?o.emissiveMap.colorSpace="srgb":o.emissiveMap.encoding=3001);break;case"NormalMap":case"Maya|TEX_normal_map":o.normalMap=l.getTexture(r,u.ID);break;case"ReflectionColor":o.envMap=l.getTexture(r,u.ID),o.envMap!==void 0&&(o.envMap.mapping=f.EquirectangularReflectionMapping,"colorSpace"in o.envMap?o.envMap.colorSpace="srgb":o.envMap.encoding=3001);break;case"SpecularColor":o.specularMap=l.getTexture(r,u.ID),o.specularMap!==void 0&&("colorSpace"in o.specularMap?o.specularMap.colorSpace="srgb":o.specularMap.encoding=3001);break;case"TransparentColor":case"TransparencyFactor":o.alphaMap=l.getTexture(r,u.ID),o.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}}),o}getTexture(i,r){return"LayeredTexture"in re.Objects&&r in re.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),r=Ae.get(r).children[0].ID),i.get(r)}parseDeformers(){const i={},r={};if("Deformer"in re.Objects){const s=re.Objects.Deformer;for(const o in s){const l=s[o],u=Ae.get(parseInt(o));if(l.attrType==="Skin"){const h=this.parseSkeleton(u,s);h.ID=o,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[o]=h}else if(l.attrType==="BlendShape"){const h={id:o};h.rawTargets=this.parseMorphTargets(u,s),h.id=o,u.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),r[o]=h}}}return{skeletons:i,morphTargets:r}}parseSkeleton(i,r){const s=[];return i.children.forEach(function(o){const l=r[o.ID];if(l.attrType!=="Cluster")return;const u={ID:o.ID,indices:[],weights:[],transformLink:new f.Matrix4().fromArray(l.TransformLink.a)};"Indexes"in l&&(u.indices=l.Indexes.a,u.weights=l.Weights.a),s.push(u)}),{rawBones:s,bones:[]}}parseMorphTargets(i,r){const s=[];for(let o=0;o<i.children.length;o++){const l=i.children[o],u=r[l.ID],h={name:u.attrName,initialWeight:u.DeformPercent,id:u.id,fullWeights:u.FullWeights.a};if(u.attrType!=="BlendShapeChannel")return;h.geoID=Ae.get(parseInt(l.ID)).children.filter(function(d){return d.relationship===void 0})[0].ID,s.push(h)}return s}parseScene(i,r,s){Ue=new f.Group;const o=this.parseModels(i.skeletons,r,s),l=re.Objects.Model,u=this;o.forEach(function(d){const w=l[d.ID];u.setLookAtProperties(d,w),Ae.get(d.ID).parents.forEach(function(y){const x=o.get(y.ID);x!==void 0&&x.add(d)}),d.parent===null&&Ue.add(d)}),this.bindSkeleton(i.skeletons,r,o),this.createAmbientLight(),Ue.traverse(function(d){if(d.userData.transformData){d.parent&&(d.userData.transformData.parentMatrix=d.parent.matrix,d.userData.transformData.parentMatrixWorld=d.parent.matrixWorld);const w=Gr(d.userData.transformData);d.applyMatrix4(w),d.updateWorldMatrix()}});const h=new nl().parse();Ue.children.length===1&&Ue.children[0].isGroup&&(Ue.children[0].animations=h,Ue=Ue.children[0]),Ue.animations=h}parseModels(i,r,s){const o=new Map,l=re.Objects.Model;for(const u in l){const h=parseInt(u),d=l[u],w=Ae.get(h);let _=this.buildSkeleton(w,i,h,d.attrName);if(!_){switch(d.attrType){case"Camera":_=this.createCamera(w);break;case"Light":_=this.createLight(w);break;case"Mesh":_=this.createMesh(w,r,s);break;case"NurbsCurve":_=this.createCurve(w,r);break;case"LimbNode":case"Root":_=new f.Bone;break;case"Null":default:_=new f.Group;break}_.name=d.attrName?f.PropertyBinding.sanitizeNodeName(d.attrName):"",_.ID=h}this.getTransformData(_,d),o.set(h,_)}return o}buildSkeleton(i,r,s,o){let l=null;return i.parents.forEach(function(u){for(const h in r){const d=r[h];d.rawBones.forEach(function(w,_){if(w.ID===u.ID){const y=l;l=new f.Bone,l.matrixWorld.copy(w.transformLink),l.name=o?f.PropertyBinding.sanitizeNodeName(o):"",l.ID=s,d.bones[_]=l,y!==null&&l.add(y)}})}}),l}createCamera(i){let r,s;if(i.children.forEach(function(o){const l=re.Objects.NodeAttribute[o.ID];l!==void 0&&(s=l)}),s===void 0)r=new f.Object3D;else{let o=0;s.CameraProjectionType!==void 0&&s.CameraProjectionType.value===1&&(o=1);let l=1;s.NearPlane!==void 0&&(l=s.NearPlane.value/1e3);let u=1e3;s.FarPlane!==void 0&&(u=s.FarPlane.value/1e3);let h=window.innerWidth,d=window.innerHeight;s.AspectWidth!==void 0&&s.AspectHeight!==void 0&&(h=s.AspectWidth.value,d=s.AspectHeight.value);const w=h/d;let _=45;s.FieldOfView!==void 0&&(_=s.FieldOfView.value);const y=s.FocalLength?s.FocalLength.value:null;switch(o){case 0:r=new f.PerspectiveCamera(_,w,l,u),y!==null&&r.setFocalLength(y);break;case 1:r=new f.OrthographicCamera(-h/2,h/2,d/2,-d/2,l,u);break;default:console.warn("THREE.FBXLoader: Unknown camera type "+o+"."),r=new f.Object3D;break}}return r}createLight(i){let r,s;if(i.children.forEach(function(o){const l=re.Objects.NodeAttribute[o.ID];l!==void 0&&(s=l)}),s===void 0)r=new f.Object3D;else{let o;s.LightType===void 0?o=0:o=s.LightType.value;let l=16777215;s.Color!==void 0&&(l=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 d=1;switch(o){case 0:r=new f.PointLight(l,u,h,d);break;case 1:r=new f.DirectionalLight(l,u);break;case 2:let w=Math.PI/3;s.InnerAngle!==void 0&&(w=f.MathUtils.degToRad(s.InnerAngle.value));let _=0;s.OuterAngle!==void 0&&(_=f.MathUtils.degToRad(s.OuterAngle.value),_=Math.max(_,1)),r=new f.SpotLight(l,u,h,w,_,d);break;default:console.warn("THREE.FBXLoader: Unknown light type "+s.LightType.value+", defaulting to a PointLight."),r=new f.PointLight(l,u);break}s.CastShadows!==void 0&&s.CastShadows.value===1&&(r.castShadow=!0)}return r}createMesh(i,r,s){let o,l=null,u=null;const h=[];return i.children.forEach(function(d){r.has(d.ID)&&(l=r.get(d.ID)),s.has(d.ID)&&h.push(s.get(d.ID))}),h.length>1?u=h:h.length>0?u=h[0]:(u=new f.MeshPhongMaterial({color:13421772}),h.push(u)),"color"in l.attributes&&h.forEach(function(d){d.vertexColors=!0}),l.FBX_Deformer?(o=new f.SkinnedMesh(l,u),o.normalizeSkinWeights()):o=new f.Mesh(l,u),o}createCurve(i,r){const s=i.children.reduce(function(l,u){return r.has(u.ID)&&(l=r.get(u.ID)),l},null),o=new f.LineBasicMaterial({color:3342591,linewidth:1});return new f.Line(s,o)}getTransformData(i,r){const s={};"InheritType"in r&&(s.inheritType=parseInt(r.InheritType.value)),"RotationOrder"in r?s.eulerOrder=Kr(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&&Ae.get(i.ID).children.forEach(function(o){if(o.relationship==="LookAtProperty"){const l=re.Objects.Model[o.ID];if("Lcl_Translation"in l){const u=l.Lcl_Translation.value;i.target!==void 0?(i.target.position.fromArray(u),Ue.add(i.target)):i.lookAt(new f.Vector3().fromArray(u))}}})}bindSkeleton(i,r,s){const o=this.parsePoseNodes();for(const l in i){const u=i[l];Ae.get(parseInt(u.ID)).parents.forEach(function(d){if(r.has(d.ID)){const w=d.ID;Ae.get(w).parents.forEach(function(y){s.has(y.ID)&&s.get(y.ID).bind(new f.Skeleton(u.bones),o[y.ID])})}})}}parsePoseNodes(){const i={};if("Pose"in re.Objects){const r=re.Objects.Pose;for(const s in r)if(r[s].attrType==="BindPose"&&r[s].NbPoseNodes>0){const o=r[s].PoseNode;Array.isArray(o)?o.forEach(function(l){i[l.Node]=new f.Matrix4().fromArray(l.Matrix.a)}):i[o.Node]=new f.Matrix4().fromArray(o.Matrix.a)}}return i}createAmbientLight(){if("GlobalSettings"in re&&"AmbientColor"in re.GlobalSettings){const i=re.GlobalSettings.AmbientColor.value,r=i[0],s=i[1],o=i[2];if(r!==0||s!==0||o!==0){const l=new f.Color(r,s,o);Ue.add(new f.AmbientLight(l,1))}}}}class tl{parse(i){const r=new Map;if("Geometry"in re.Objects){const s=re.Objects.Geometry;for(const o in s){const l=Ae.get(parseInt(o)),u=this.parseGeometry(l,s[o],i);r.set(parseInt(o),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 o=s.skeletons,l=[],u=i.parents.map(function(y){return re.Objects.Model[y.ID]});if(u.length===0)return;const h=i.children.reduce(function(y,x){return o[x.ID]!==void 0&&(y=o[x.ID]),y},null);i.children.forEach(function(y){s.morphTargets[y.ID]!==void 0&&l.push(s.morphTargets[y.ID])});const d=u[0],w={};"RotationOrder"in d&&(w.eulerOrder=Kr(d.RotationOrder.value)),"InheritType"in d&&(w.inheritType=parseInt(d.InheritType.value)),"GeometricTranslation"in d&&(w.translation=d.GeometricTranslation.value),"GeometricRotation"in d&&(w.rotation=d.GeometricRotation.value),"GeometricScaling"in d&&(w.scale=d.GeometricScaling.value);const _=Gr(w);return this.genGeometry(r,h,l,_)}genGeometry(i,r,s,o){const l=new f.BufferGeometry;i.attrName&&(l.name=i.attrName);const u=this.parseGeoNode(i,r),h=this.genBuffers(u),d=new f.Float32BufferAttribute(h.vertex,3);if(d.applyMatrix4(o),l.setAttribute("position",d),h.colors.length>0&&l.setAttribute("color",new f.Float32BufferAttribute(h.colors,3)),r&&(l.setAttribute("skinIndex",new f.Uint16BufferAttribute(h.weightsIndices,4)),l.setAttribute("skinWeight",new f.Float32BufferAttribute(h.vertexWeights,4)),l.FBX_Deformer=r),h.normal.length>0){const w=new f.Matrix3().getNormalMatrix(o),_=new f.Float32BufferAttribute(h.normal,3);_.applyNormalMatrix(w),l.setAttribute("normal",_)}if(h.uvs.forEach(function(w,_){let y="uv"+(_+1).toString();_===0&&(y="uv"),l.setAttribute(y,new f.Float32BufferAttribute(h.uvs[_],2))}),u.material&&u.material.mappingType!=="AllSame"){let w=h.materialIndex[0],_=0;if(h.materialIndex.forEach(function(y,x){y!==w&&(l.addGroup(_,x-_,w),w=y,_=x)}),l.groups.length>0){const y=l.groups[l.groups.length-1],x=y.start+y.count;x!==h.materialIndex.length&&l.addGroup(x,h.materialIndex.length-x,w)}l.groups.length===0&&l.addGroup(0,h.materialIndex.length,h.materialIndex[0])}return this.addMorphTargets(l,i,s,o),l}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 o=0;for(;i.LayerElementUV[o];)i.LayerElementUV[o].UV&&s.uv.push(this.parseUVs(i.LayerElementUV[o])),o++}return s.weightTable={},r!==null&&(s.skeleton=r,r.rawBones.forEach(function(o,l){o.indices.forEach(function(u,h){s.weightTable[u]===void 0&&(s.weightTable[u]=[]),s.weightTable[u].push({id:l,weight:o.weights[h]})})})),s}genBuffers(i){const r={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]};let s=0,o=0,l=!1,u=[],h=[],d=[],w=[],_=[],y=[];const x=this;return i.vertexIndices.forEach(function(M,O){let I,T=!1;M<0&&(M=M^-1,T=!0);let F=[],z=[];if(u.push(M*3,M*3+1,M*3+2),i.color){const N=xi(O,s,M,i.color);d.push(N[0],N[1],N[2])}if(i.skeleton){if(i.weightTable[M]!==void 0&&i.weightTable[M].forEach(function(N){z.push(N.weight),F.push(N.id)}),z.length>4){l||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),l=!0);const N=[0,0,0,0],E=[0,0,0,0];z.forEach(function(Q,$){let U=Q,j=F[$];E.forEach(function(X,Y,Z){if(U>X){Z[Y]=U,U=X;const ue=N[Y];N[Y]=j,j=ue}})}),F=N,z=E}for(;z.length<4;)z.push(0),F.push(0);for(let N=0;N<4;++N)_.push(z[N]),y.push(F[N])}if(i.normal){const N=xi(O,s,M,i.normal);h.push(N[0],N[1],N[2])}i.material&&i.material.mappingType!=="AllSame"&&(I=xi(O,s,M,i.material)[0]),i.uv&&i.uv.forEach(function(N,E){const Q=xi(O,s,M,N);w[E]===void 0&&(w[E]=[]),w[E].push(Q[0]),w[E].push(Q[1])}),o++,T&&(x.genFace(r,i,u,I,h,d,w,_,y,o),s++,o=0,u=[],h=[],d=[],w=[],_=[],y=[])}),r}genFace(i,r,s,o,l,u,h,d,w,_){for(let y=2;y<_;y++)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[(y-1)*3]]),i.vertex.push(r.vertexPositions[s[(y-1)*3+1]]),i.vertex.push(r.vertexPositions[s[(y-1)*3+2]]),i.vertex.push(r.vertexPositions[s[y*3]]),i.vertex.push(r.vertexPositions[s[y*3+1]]),i.vertex.push(r.vertexPositions[s[y*3+2]]),r.skeleton&&(i.vertexWeights.push(d[0]),i.vertexWeights.push(d[1]),i.vertexWeights.push(d[2]),i.vertexWeights.push(d[3]),i.vertexWeights.push(d[(y-1)*4]),i.vertexWeights.push(d[(y-1)*4+1]),i.vertexWeights.push(d[(y-1)*4+2]),i.vertexWeights.push(d[(y-1)*4+3]),i.vertexWeights.push(d[y*4]),i.vertexWeights.push(d[y*4+1]),i.vertexWeights.push(d[y*4+2]),i.vertexWeights.push(d[y*4+3]),i.weightsIndices.push(w[0]),i.weightsIndices.push(w[1]),i.weightsIndices.push(w[2]),i.weightsIndices.push(w[3]),i.weightsIndices.push(w[(y-1)*4]),i.weightsIndices.push(w[(y-1)*4+1]),i.weightsIndices.push(w[(y-1)*4+2]),i.weightsIndices.push(w[(y-1)*4+3]),i.weightsIndices.push(w[y*4]),i.weightsIndices.push(w[y*4+1]),i.weightsIndices.push(w[y*4+2]),i.weightsIndices.push(w[y*4+3])),r.color&&(i.colors.push(u[0]),i.colors.push(u[1]),i.colors.push(u[2]),i.colors.push(u[(y-1)*3]),i.colors.push(u[(y-1)*3+1]),i.colors.push(u[(y-1)*3+2]),i.colors.push(u[y*3]),i.colors.push(u[y*3+1]),i.colors.push(u[y*3+2])),r.material&&r.material.mappingType!=="AllSame"&&(i.materialIndex.push(o),i.materialIndex.push(o),i.materialIndex.push(o)),r.normal&&(i.normal.push(l[0]),i.normal.push(l[1]),i.normal.push(l[2]),i.normal.push(l[(y-1)*3]),i.normal.push(l[(y-1)*3+1]),i.normal.push(l[(y-1)*3+2]),i.normal.push(l[y*3]),i.normal.push(l[y*3+1]),i.normal.push(l[y*3+2])),r.uv&&r.uv.forEach(function(x,M){i.uvs[M]===void 0&&(i.uvs[M]=[]),i.uvs[M].push(h[M][0]),i.uvs[M].push(h[M][1]),i.uvs[M].push(h[M][(y-1)*2]),i.uvs[M].push(h[M][(y-1)*2+1]),i.uvs[M].push(h[M][y*2]),i.uvs[M].push(h[M][y*2+1])})}addMorphTargets(i,r,s,o){if(s.length===0)return;i.morphTargetsRelative=!0,i.morphAttributes.position=[];const l=this;s.forEach(function(u){u.rawTargets.forEach(function(h){const d=re.Objects.Geometry[h.geoID];d!==void 0&&l.genMorphGeometry(i,r,d,o,h.name)})})}genMorphGeometry(i,r,s,o,l){const u=r.PolygonVertexIndex!==void 0?r.PolygonVertexIndex.a:[],h=s.Vertices!==void 0?s.Vertices.a:[],d=s.Indexes!==void 0?s.Indexes.a:[],w=i.attributes.position.count*3,_=new Float32Array(w);for(let O=0;O<d.length;O++){const I=d[O]*3;_[I]=h[O*3],_[I+1]=h[O*3+1],_[I+2]=h[O*3+2]}const y={vertexIndices:u,vertexPositions:_},x=this.genBuffers(y),M=new f.Float32BufferAttribute(x.vertex,3);M.name=l||s.attrName,M.applyMatrix4(o),i.morphAttributes.position.push(M)}parseNormals(i){const r=i.MappingInformationType,s=i.ReferenceInformationType,o=i.Normals.a;let l=[];return s==="IndexToDirect"&&("NormalIndex"in i?l=i.NormalIndex.a:"NormalsIndex"in i&&(l=i.NormalsIndex.a)),{dataSize:3,buffer:o,indices:l,mappingType:r,referenceType:s}}parseUVs(i){const r=i.MappingInformationType,s=i.ReferenceInformationType,o=i.UV.a;let l=[];return s==="IndexToDirect"&&(l=i.UVIndex.a),{dataSize:2,buffer:o,indices:l,mappingType:r,referenceType:s}}parseVertexColors(i){const r=i.MappingInformationType,s=i.ReferenceInformationType,o=i.Colors.a;let l=[];return s==="IndexToDirect"&&(l=i.ColorIndex.a),{dataSize:4,buffer:o,indices:l,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 o=i.Materials.a,l=[];for(let u=0;u<o.length;++u)l.push(u);return{dataSize:1,buffer:o,indices:l,mappingType:r,referenceType:s}}parseNurbsGeometry(i){if(zr===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,o=i.KnotVector.a,l=[],u=i.Points.a;for(let y=0,x=u.length;y<x;y+=4)l.push(new f.Vector4().fromArray(u,y));let h,d;if(i.Form==="Closed")l.push(l[0]);else if(i.Form==="Periodic"){h=s,d=o.length-1-h;for(let y=0;y<s;++y)l.push(l[y])}const _=new zr(s,o,l,h,d).getPoints(l.length*12);return new f.BufferGeometry().setFromPoints(_)}}class nl{parse(){const i=[],r=this.parseClips();if(r!==void 0)for(const s in r){const o=r[s],l=this.addClip(o);i.push(l)}return i}parseClips(){if(re.Objects.AnimationCurve===void 0)return;const i=this.parseAnimationCurveNodes();this.parseAnimationCurves(i);const r=this.parseAnimationLayers(i);return this.parseAnimStacks(r)}parseAnimationCurveNodes(){const i=re.Objects.AnimationCurveNode,r=new Map;for(const s in i){const o=i[s];if(o.attrName.match(/S|R|T|DeformPercent/)!==null){const l={id:o.id,attr:o.attrName,curves:{}};r.set(l.id,l)}}return r}parseAnimationCurves(i){const r=re.Objects.AnimationCurve;for(const s in r){const o={id:r[s].id,times:r[s].KeyTime.a.map(al),values:r[s].KeyValueFloat.a},l=Ae.get(o.id);if(l!==void 0){const u=l.parents[0].ID,h=l.parents[0].relationship;h.match(/X/)?i.get(u).curves.x=o:h.match(/Y/)?i.get(u).curves.y=o:h.match(/Z/)?i.get(u).curves.z=o:h.match(/d|DeformPercent/)&&i.has(u)&&(i.get(u).curves.morph=o)}}}parseAnimationLayers(i){const r=re.Objects.AnimationLayer,s=new Map;for(const o in r){const l=[],u=Ae.get(parseInt(o));u!==void 0&&(u.children.forEach(function(d,w){if(i.has(d.ID)){const _=i.get(d.ID);if(_.curves.x!==void 0||_.curves.y!==void 0||_.curves.z!==void 0){if(l[w]===void 0){const y=Ae.get(d.ID).parents.filter(function(x){return x.relationship!==void 0})[0].ID;if(y!==void 0){const x=re.Objects.Model[y.toString()];if(x===void 0){console.warn("THREE.FBXLoader: Encountered a unused curve.",d);return}const M={modelName:x.attrName?f.PropertyBinding.sanitizeNodeName(x.attrName):"",ID:x.id,initialPosition:[0,0,0],initialRotation:[0,0,0],initialScale:[1,1,1]};Ue.traverse(function(O){O.ID===x.id&&(M.transform=O.matrix,O.userData.transformData&&(M.eulerOrder=O.userData.transformData.eulerOrder))}),M.transform||(M.transform=new f.Matrix4),"PreRotation"in x&&(M.preRotation=x.PreRotation.value),"PostRotation"in x&&(M.postRotation=x.PostRotation.value),l[w]=M}}l[w]&&(l[w][_.attr]=_)}else if(_.curves.morph!==void 0){if(l[w]===void 0){const y=Ae.get(d.ID).parents.filter(function(F){return F.relationship!==void 0})[0].ID,x=Ae.get(y).parents[0].ID,M=Ae.get(x).parents[0].ID,O=Ae.get(M).parents[0].ID,I=re.Objects.Model[O],T={modelName:I.attrName?f.PropertyBinding.sanitizeNodeName(I.attrName):"",morphName:re.Objects.Deformer[y].attrName};l[w]=T}l[w][_.attr]=_}}}),s.set(parseInt(o),l))}return s}parseAnimStacks(i){const r=re.Objects.AnimationStack,s={};for(const o in r){const l=Ae.get(parseInt(o)).children;l.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(l[0].ID);s[o]={name:r[o].attrName,layer:u}}return s}addClip(i){let r=[];const s=this;return i.layer.forEach(function(o){r=r.concat(s.generateTracks(o))}),new f.AnimationClip(i.name,-1,r)}generateTracks(i){const r=[];let s=new f.Vector3,o=new f.Quaternion,l=new f.Vector3;if(i.transform&&i.transform.decompose(s,o,l),s=s.toArray(),o=new f.Euler().setFromQuaternion(o,i.eulerOrder).toArray(),l=l.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,o,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,l,"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,o){const l=this.getTimesForAllAxes(r),u=this.getKeyframeTrackValues(l,r,s);return new f.VectorKeyframeTrack(i+"."+o,l,u)}generateRotationTrack(i,r,s,o,l,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),d=this.getKeyframeTrackValues(h,r,s);o!==void 0&&(o=o.map(f.MathUtils.degToRad),o.push(u),o=new f.Euler().fromArray(o),o=new f.Quaternion().setFromEuler(o)),l!==void 0&&(l=l.map(f.MathUtils.degToRad),l.push(u),l=new f.Euler().fromArray(l),l=new f.Quaternion().setFromEuler(l).invert());const w=new f.Quaternion,_=new f.Euler,y=[];for(let x=0;x<d.length;x+=3)_.set(d[x],d[x+1],d[x+2],u),w.setFromEuler(_),o!==void 0&&w.premultiply(o),l!==void 0&&w.multiply(l),w.toArray(y,x/3*4);return new f.QuaternionKeyframeTrack(i+".quaternion",h,y)}generateMorphTrack(i){const r=i.DeformPercent.curves.morph,s=r.values.map(function(l){return l/100}),o=Ue.getObjectByName(i.modelName).morphTargetDictionary[i.morphName];return new f.NumberKeyframeTrack(i.modelName+".morphTargetInfluences["+o+"]",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,o){return s-o}),r.length>1){let s=1,o=r[0];for(let l=1;l<r.length;l++){const u=r[l];u!==o&&(r[s]=u,o=u,s++)}r=r.slice(0,s)}return r}getKeyframeTrackValues(i,r,s){const o=s,l=[];let u=-1,h=-1,d=-1;return i.forEach(function(w){if(r.x&&(u=r.x.times.indexOf(w)),r.y&&(h=r.y.times.indexOf(w)),r.z&&(d=r.z.times.indexOf(w)),u!==-1){const _=r.x.values[u];l.push(_),o[0]=_}else l.push(o[0]);if(h!==-1){const _=r.y.values[h];l.push(_),o[1]=_}else l.push(o[1]);if(d!==-1){const _=r.z.values[d];l.push(_),o[2]=_}else l.push(o[2])}),l}interpolateRotations(i){for(let r=1;r<i.values.length;r++){const s=i.values[r-1],o=i.values[r]-s,l=Math.abs(o);if(l>=180){const u=l/180,h=o/u;let d=s+h;const w=i.times[r-1],y=(i.times[r]-w)/u;let x=w+y;const M=[],O=[];for(;x<i.times[r];)M.push(x),x+=y,O.push(d),d+=h;i.times=Xr(i.times,r,M),i.values=Xr(i.values,r,O)}}}}class il{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 Ur,this.nodeStack=[],this.currentProp=[],this.currentPropName="";const r=this,s=i.split(/[\r\n]+/);return s.forEach(function(o,l){const u=o.match(/^[\s\t]*;/),h=o.match(/^[\s\t]*$/);if(u||h)return;const d=o.match("^\\t{"+r.currentIndent+"}(\\w+):(.*){",""),w=o.match("^\\t{"+r.currentIndent+"}(\\w+):[\\s\\t\\r\\n](.*)"),_=o.match("^\\t{"+(r.currentIndent-1)+"}}");d?r.parseNodeBegin(o,d):w?r.parseNodeProperty(o,w,s[++l]):_?r.popStack():o.match(/^[^\s\t}]/)&&r.parseNodePropertyContinued(o)}),this.allNodes}parseNodeBegin(i,r){const s=r[1].trim().replace(/^"/,"").replace(/"$/,""),o=r[2].split(",").map(function(d){return d.trim().replace(/^"/,"").replace(/"$/,"")}),l={name:s},u=this.parseNodeAttr(o),h=this.getCurrentNode();this.currentIndent===0?this.allNodes.add(s,l):s in h?(s==="PoseNode"?h.PoseNode.push(l):h[s].id!==void 0&&(h[s]={},h[s][h[s].id]=h[s]),u.id!==""&&(h[s][u.id]=l)):typeof u.id=="number"?(h[s]={},h[s][u.id]=l):s!=="Properties70"&&(s==="PoseNode"?h[s]=[l]:h[s]=l),typeof u.id=="number"&&(l.id=u.id),u.name!==""&&(l.attrName=u.name),u.type!==""&&(l.attrType=u.type),this.pushStack(l)}parseNodeAttr(i){let r=i[0];i[0]!==""&&(r=parseInt(i[0]),isNaN(r)&&(r=i[0]));let s="",o="";return i.length>1&&(s=i[1].replace(/^(\w+)::/,""),o=i[2]),{id:r,name:s,type:o}}parseNodeProperty(i,r,s){let o=r[1].replace(/^"/,"").replace(/"$/,"").trim(),l=r[2].replace(/^"/,"").replace(/"$/,"").trim();o==="Content"&&l===","&&(l=s.replace(/"/g,"").replace(/,$/,"").trim());const u=this.getCurrentNode();if(u.name==="Properties70"){this.parseNodeSpecialProperty(i,o,l);return}if(o==="C"){const d=l.split(",").slice(1),w=parseInt(d[0]),_=parseInt(d[1]);let y=l.split(",").slice(3);y=y.map(function(x){return x.trim().replace(/^"/,"")}),o="connections",l=[w,_],cl(l,y),u[o]===void 0&&(u[o]=[])}o==="Node"&&(u.id=l),o in u&&Array.isArray(u[o])?u[o].push(l):o!=="a"?u[o]=l:u.a=l,this.setCurrentProp(u,o),o==="a"&&l.slice(-1)!==","&&(u.a=us(l))}parseNodePropertyContinued(i){const r=this.getCurrentNode();r.a+=i,i.slice(-1)!==","&&(r.a=us(r.a))}parseNodeSpecialProperty(i,r,s){const o=s.split('",').map(function(_){return _.trim().replace(/^\"/,"").replace(/\s/,"_")}),l=o[0],u=o[1],h=o[2],d=o[3];let w=o[4];switch(u){case"int":case"enum":case"bool":case"ULongLong":case"double":case"Number":case"FieldOfView":w=parseFloat(w);break;case"Color":case"ColorRGB":case"Vector3D":case"Lcl_Translation":case"Lcl_Rotation":case"Lcl_Scaling":w=us(w);break}this.getPrevNode()[l]={type:u,type2:h,flag:d,value:w},this.setCurrentProp(this.getPrevNode(),l)}}class sl{parse(i){const r=new jr(i);r.skip(23);const s=r.getUint32();if(s<6400)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+s);const o=new Ur;for(;!this.endOfContent(r);){const l=this.parseNode(r,s);l!==null&&o.add(l.name,l)}return o}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={},o=r>=7500?i.getUint64():i.getUint32(),l=r>=7500?i.getUint64():i.getUint32();r>=7500?i.getUint64():i.getUint32();const u=i.getUint8(),h=i.getString(u);if(o===0)return null;const d=[];for(let x=0;x<l;x++)d.push(this.parseProperty(i));const w=d.length>0?d[0]:"",_=d.length>1?d[1]:"",y=d.length>2?d[2]:"";for(s.singleProperty=l===1&&i.getOffset()===o;o>i.getOffset();){const x=this.parseNode(i,r);x!==null&&this.parseSubNode(h,s,x)}return s.propertyList=d,typeof w=="number"&&(s.id=w),_!==""&&(s.attrName=_),y!==""&&(s.attrType=y),h!==""&&(s.name=h),s}parseSubNode(i,r,s){if(s.singleProperty===!0){const o=s.propertyList[0];Array.isArray(o)?(r[s.name]=s,s.a=o):r[s.name]=o}else if(i==="Connections"&&s.name==="C"){const o=[];s.propertyList.forEach(function(l,u){u!==0&&o.push(l)}),r.connections===void 0&&(r.connections=[]),r.connections.push(o)}else if(s.name==="Properties70")Object.keys(s).forEach(function(l){r[l]=s[l]});else if(i==="Properties70"&&s.name==="P"){let o=s.propertyList[0],l=s.propertyList[1];const u=s.propertyList[2],h=s.propertyList[3];let d;o.indexOf("Lcl ")===0&&(o=o.replace("Lcl ","Lcl_")),l.indexOf("Lcl ")===0&&(l=l.replace("Lcl ","Lcl_")),l==="Color"||l==="ColorRGB"||l==="Vector"||l==="Vector3D"||l.indexOf("Lcl_")===0?d=[s.propertyList[4],s.propertyList[5],s.propertyList[6]]:d=s.propertyList[4],r[o]={type:l,type2:u,flag:h,value:d}}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 o=i.getUint32(),l=i.getUint32(),u=i.getUint32();if(l===0)switch(r){case"b":case"c":return i.getBooleanArray(o);case"d":return i.getFloat64Array(o);case"f":return i.getFloat32Array(o);case"i":return i.getInt32Array(o);case"l":return i.getInt64Array(o)}const h=ta(new Uint8Array(i.getArrayBuffer(u))),d=new jr(h.buffer);switch(r){case"b":case"c":return d.getBooleanArray(o);case"d":return d.getFloat64Array(o);case"f":return d.getFloat32Array(o);case"i":return d.getInt32Array(o);case"l":return d.getInt64Array(o)}default:throw new Error("THREE.FBXLoader: Unknown property type "+r)}}}class jr{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 o=0;o<i;o++)r[o]=this.getUint8();const s=r.indexOf(0);return s>=0&&(r=r.slice(0,s)),f.LoaderUtils.decodeText(new Uint8Array(r))}}class Ur{add(i,r){this[i]=r}}function rl(g){const i="Kaydara FBX Binary \0";return g.byteLength>=i.length&&i===$r(g,0,i.length)}function ol(g){const i=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"];let r=0;function s(o){const l=g[o-1];return g=g.slice(r+o),r++,l}for(let o=0;o<i.length;++o)if(s(1)===i[o])return!1;return!0}function Rr(g){const i=/FBXVersion: (\d+)/,r=g.match(i);if(r)return parseInt(r[1]);throw new Error("THREE.FBXLoader: Cannot find the version number for the file given.")}function al(g){return g/46186158e3}const ll=[];function xi(g,i,r,s){let o;switch(s.mappingType){case"ByPolygonVertex":o=g;break;case"ByPolygon":o=i;break;case"ByVertice":o=r;break;case"AllSame":o=s.indices[0];break;default:console.warn("THREE.FBXLoader: unknown attribute mapping type "+s.mappingType)}s.referenceType==="IndexToDirect"&&(o=s.indices[o]);const l=o*s.dataSize,u=l+s.dataSize;return pl(ll,s.buffer,l,u)}const ps=new f.Euler,bn=new f.Vector3;function Gr(g){const i=new f.Matrix4,r=new f.Matrix4,s=new f.Matrix4,o=new f.Matrix4,l=new f.Matrix4,u=new f.Matrix4,h=new f.Matrix4,d=new f.Matrix4,w=new f.Matrix4,_=new f.Matrix4,y=new f.Matrix4,x=new f.Matrix4,M=g.inheritType?g.inheritType:0;if(g.translation&&i.setPosition(bn.fromArray(g.translation)),g.preRotation){const Y=g.preRotation.map(f.MathUtils.degToRad);Y.push(g.eulerOrder),r.makeRotationFromEuler(ps.fromArray(Y))}if(g.rotation){const Y=g.rotation.map(f.MathUtils.degToRad);Y.push(g.eulerOrder),s.makeRotationFromEuler(ps.fromArray(Y))}if(g.postRotation){const Y=g.postRotation.map(f.MathUtils.degToRad);Y.push(g.eulerOrder),o.makeRotationFromEuler(ps.fromArray(Y)),o.invert()}g.scale&&l.scale(bn.fromArray(g.scale)),g.scalingOffset&&h.setPosition(bn.fromArray(g.scalingOffset)),g.scalingPivot&&u.setPosition(bn.fromArray(g.scalingPivot)),g.rotationOffset&&d.setPosition(bn.fromArray(g.rotationOffset)),g.rotationPivot&&w.setPosition(bn.fromArray(g.rotationPivot)),g.parentMatrixWorld&&(y.copy(g.parentMatrix),_.copy(g.parentMatrixWorld));const O=r.clone().multiply(s).multiply(o),I=new f.Matrix4;I.extractRotation(_);const T=new f.Matrix4;T.copyPosition(_);const F=T.clone().invert().multiply(_),z=I.clone().invert().multiply(F),N=l,E=new f.Matrix4;if(M===0)E.copy(I).multiply(O).multiply(z).multiply(N);else if(M===1)E.copy(I).multiply(z).multiply(O).multiply(N);else{const Z=new f.Matrix4().scale(new f.Vector3().setFromMatrixScale(y)).clone().invert(),ue=z.clone().multiply(Z);E.copy(I).multiply(O).multiply(ue).multiply(N)}const Q=w.clone().invert(),$=u.clone().invert();let U=i.clone().multiply(d).multiply(w).multiply(r).multiply(s).multiply(o).multiply(Q).multiply(h).multiply(u).multiply(l).multiply($);const j=new f.Matrix4().copyPosition(U),X=_.clone().multiply(j);return x.copyPosition(X),U=x.clone().multiply(E),U.premultiply(_.invert()),U}function Kr(g){g=g||0;const i=["ZYX","YZX","XZY","ZXY","YXZ","XYZ"];return g===6?(console.warn("THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect."),i[0]):i[g]}function us(g){return g.split(",").map(function(r){return parseFloat(r)})}function $r(g,i,r){return i===void 0&&(i=0),r===void 0&&(r=g.byteLength),f.LoaderUtils.decodeText(new Uint8Array(g,i,r))}function cl(g,i){for(let r=0,s=g.length,o=i.length;r<o;r++,s++)g[s]=i[r]}function pl(g,i,r,s){for(let o=r,l=0;o<s;o++,l++)g[l]=i[o];return g}function Xr(g,i,r){return g.slice(0,i).concat(r).concat(g.slice(i))}class ul extends f.Loader{constructor(i){super(i)}load(i,r,s,o){const l=new f.FileLoader(this.manager);l.setPath(this.path),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(i,u=>{if(typeof u!="string")throw new Error("unsupported data type");const h=JSON.parse(u),d=this.parse(h);r&&r(d)},s,o)}parse(i){return new hs(i)}}class hs{constructor(i){A(this,"data",void 0),this.data=i}generateShapes(i,r=100,s){const o=[],l={letterSpacing:0,lineHeight:1,...s},u=hl(i,r,this.data,l);for(let h=0,d=u.length;h<d;h++)Array.prototype.push.apply(o,u[h].toShapes(!1));return o}}A(hs,"isFont",void 0),A(hs,"type",void 0);function hl(g,i,r,s){const o=Array.from(g),l=i/r.resolution,u=(r.boundingBox.yMax-r.boundingBox.yMin+r.underlineThickness)*l,h=[];let d=0,w=0;for(let _=0;_<o.length;_++){const y=o[_];if(y===`
74
+ `)d=0,w-=u*s.lineHeight;else{const x=dl(y,l,d,w,r);x&&(d+=x.offsetX+s.letterSpacing,h.push(x.path))}}return h}function dl(g,i,r,s,o){const l=o.glyphs[g]||o.glyphs["?"];if(!l){console.error('THREE.Font: character "'+g+'" does not exists in font family '+o.familyName+".");return}const u=new f.ShapePath;let h,d,w,_,y,x,M,O;if(l.o){const I=l._cachedOutline||(l._cachedOutline=l.o.split(" "));for(let T=0,F=I.length;T<F;)switch(I[T++]){case"m":h=parseInt(I[T++])*i+r,d=parseInt(I[T++])*i+s,u.moveTo(h,d);break;case"l":h=parseInt(I[T++])*i+r,d=parseInt(I[T++])*i+s,u.lineTo(h,d);break;case"q":w=parseInt(I[T++])*i+r,_=parseInt(I[T++])*i+s,y=parseInt(I[T++])*i+r,x=parseInt(I[T++])*i+s,u.quadraticCurveTo(y,x,w,_);break;case"b":w=parseInt(I[T++])*i+r,_=parseInt(I[T++])*i+s,y=parseInt(I[T++])*i+r,x=parseInt(I[T++])*i+s,M=parseInt(I[T++])*i+r,O=parseInt(I[T++])*i+s,u.bezierCurveTo(y,x,M,O,w,_);break}}return{offsetX:l.ha*i,path:u}}var Yr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ml(g){return g&&g.__esModule&&Object.prototype.hasOwnProperty.call(g,"default")?g.default:g}class fl extends f.DataTextureLoader{constructor(i){super(i),this.type=f.HalfFloatType}parse(i){const h=function(N,E){switch(N){case 1:console.error("THREE.RGBELoader Read Error: "+(E||""));break;case 2:console.error("THREE.RGBELoader Write Error: "+(E||""));break;case 3:console.error("THREE.RGBELoader Bad File Format: "+(E||""));break;default:case 4:console.error("THREE.RGBELoader: Error: "+(E||""))}return-1},y=`
75
+ `,x=function(N,E,Q){E=E||1024;let U=N.pos,j=-1,X=0,Y="",Z=String.fromCharCode.apply(null,new Uint16Array(N.subarray(U,U+128)));for(;0>(j=Z.indexOf(y))&&X<E&&U<N.byteLength;)Y+=Z,X+=Z.length,U+=128,Z+=String.fromCharCode.apply(null,new Uint16Array(N.subarray(U,U+128)));return-1<j?(Q!==!1&&(N.pos+=X+j+1),Y+Z.slice(0,j)):!1},M=function(N){const E=/^#\?(\S+)/,Q=/^\s*GAMMA\s*=\s*(\d+(\.\d+)?)\s*$/,$=/^\s*EXPOSURE\s*=\s*(\d+(\.\d+)?)\s*$/,U=/^\s*FORMAT=(\S+)\s*$/,j=/^\s*\-Y\s+(\d+)\s+\+X\s+(\d+)\s*$/,X={valid:0,string:"",comments:"",programtype:"RGBE",format:"",gamma:1,exposure:1,width:0,height:0};let Y,Z;if(N.pos>=N.byteLength||!(Y=x(N)))return h(1,"no header found");if(!(Z=Y.match(E)))return h(3,"bad initial token");for(X.valid|=1,X.programtype=Z[1],X.string+=Y+`
76
76
  `;Y=x(N),Y!==!1;){if(X.string+=Y+`
77
77
  `,Y.charAt(0)==="#"){X.comments+=Y+`
78
- `;continue}if((Z=Y.match(Q))&&(X.gamma=parseFloat(Z[1])),(Z=Y.match($))&&(X.exposure=parseFloat(Z[1])),(Z=Y.match(U))&&(X.valid|=2,X.format=Z[1]),(Z=Y.match(j))&&(X.valid|=4,X.height=parseInt(Z[1],10),X.width=parseInt(Z[2],10)),X.valid&2&&X.valid&4)break}return X.valid&2?X.valid&4?X:h(3,"missing image size specifier"):h(3,"missing format specifier")},T=function(N,O,Q){const $=O;if($<8||$>32767||N[0]!==2||N[1]!==2||N[2]&128)return new Uint8Array(N);if($!==(N[2]<<8|N[3]))return h(3,"wrong scanline width");const U=new Uint8Array(4*O*Q);if(!U.length)return h(4,"unable to allocate buffer space");let j=0,X=0;const Y=4*$,Z=new Uint8Array(4),ue=new Uint8Array(Y);let ge=Q;for(;ge>0&&X<N.byteLength;){if(X+4>N.byteLength)return h(1);if(Z[0]=N[X++],Z[1]=N[X++],Z[2]=N[X++],Z[3]=N[X++],Z[0]!=2||Z[1]!=2||(Z[2]<<8|Z[3])!=$)return h(3,"bad rgbe scanline format");let pe=0,me;for(;pe<Y&&X<N.byteLength;){me=N[X++];const te=me>128;if(te&&(me-=128),me===0||pe+me>Y)return h(3,"bad scanline data");if(te){const q=N[X++];for(let Ce=0;Ce<me;Ce++)ue[pe++]=q}else ue.set(N.subarray(X,X+me),pe),pe+=me,X+=me}const he=$;for(let te=0;te<he;te++){let q=0;U[j]=ue[te+q],q+=$,U[j+1]=ue[te+q],q+=$,U[j+2]=ue[te+q],q+=$,U[j+3]=ue[te+q],j+=4}ge--}return U},D=function(N,O,Q,$){const U=N[O+3],j=Math.pow(2,U-128)/255;Q[$+0]=N[O+0]*j,Q[$+1]=N[O+1]*j,Q[$+2]=N[O+2]*j,Q[$+3]=1},E=function(N,O,Q,$){const U=N[O+3],j=Math.pow(2,U-128)/255;Q[$+0]=f.DataUtils.toHalfFloat(Math.min(N[O+0]*j,65504)),Q[$+1]=f.DataUtils.toHalfFloat(Math.min(N[O+1]*j,65504)),Q[$+2]=f.DataUtils.toHalfFloat(Math.min(N[O+2]*j,65504)),Q[$+3]=f.DataUtils.toHalfFloat(1)},F=new Uint8Array(s);F.pos=0;const z=M(F);if(z!==-1){const N=z.width,O=z.height,Q=T(F.subarray(F.pos),N,O);if(Q!==-1){let $,U,j;switch(this.type){case f.FloatType:j=Q.length/4;const X=new Float32Array(j*4);for(let Z=0;Z<j;Z++)D(Q,Z*4,X,Z*4);$=X,U=f.FloatType;break;case f.HalfFloatType:j=Q.length/4;const Y=new Uint16Array(j*4);for(let Z=0;Z<j;Z++)E(Q,Z*4,Y,Z*4);$=Y,U=f.HalfFloatType;break;default:console.error("THREE.RGBELoader: unsupported type: ",this.type);break}return{width:N,height:O,data:$,header:z.string,gamma:z.gamma,exposure:z.exposure,type:U}}}return null}setDataType(s){return this.type=s,this}load(s,r,n,o){function l(u,h){switch(u.type){case f.FloatType:case f.HalfFloatType:u.encoding=f.LinearEncoding,u.minFilter=f.LinearFilter,u.magFilter=f.LinearFilter,u.generateMipmaps=!1,u.flipY=!0;break}r&&r(u,h)}return super.load(s,l,n,o)}}const ds=new WeakMap;class vl extends f.Loader{constructor(s){super(s),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(s){return this.decoderPath=s,this}setDecoderConfig(s){return this.decoderConfig=s,this}setWorkerLimit(s){return this.workerLimit=s,this}load(s,r,n,o){const l=new f.FileLoader(this.manager);l.setPath(this.path),l.setResponseType("arraybuffer"),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(s,u=>{const h={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(u,h).then(r).catch(o)},n,o)}decodeDracoFile(s,r,n,o){const l={attributeIDs:n||this.defaultAttributeIDs,attributeTypes:o||this.defaultAttributeTypes,useUniqueIDs:!!n};this.decodeGeometry(s,l).then(r)}decodeGeometry(s,r){for(const d in r.attributeTypes){const w=r.attributeTypes[d];w.BYTES_PER_ELEMENT!==void 0&&(r.attributeTypes[d]=w.name)}const n=JSON.stringify(r);if(ds.has(s)){const d=ds.get(s);if(d.key===n)return d.promise;if(s.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let o;const l=this.workerNextTaskID++,u=s.byteLength,h=this._getWorker(l,u).then(d=>(o=d,new Promise((w,_)=>{o._callbacks[l]={resolve:w,reject:_},o.postMessage({type:"decode",id:l,taskConfig:r,buffer:s},[s])}))).then(d=>this._createGeometry(d.geometry));return h.catch(()=>!0).then(()=>{o&&l&&this._releaseTask(o,l)}),ds.set(s,{key:n,promise:h}),h}_createGeometry(s){const r=new f.BufferGeometry;s.index&&r.setIndex(new f.BufferAttribute(s.index.array,1));for(let n=0;n<s.attributes.length;n++){const o=s.attributes[n],l=o.name,u=o.array,h=o.itemSize;r.setAttribute(l,new f.BufferAttribute(u,h))}return r}_loadLibrary(s,r){const n=new f.FileLoader(this.manager);return n.setPath(this.decoderPath),n.setResponseType(r),n.setWithCredentials(this.withCredentials),new Promise((o,l)=>{n.load(s,o,void 0,l)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const s=typeof WebAssembly!="object"||this.decoderConfig.type==="js",r=[];return s?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(n=>{const o=n[0];s||(this.decoderConfig.wasmBinary=n[1]);const l=bl.toString(),u=["/* draco decoder */",o,"","/* worker */",l.substring(l.indexOf("{")+1,l.lastIndexOf("}"))].join(`
79
- `);this.workerSourceURL=URL.createObjectURL(new Blob([u]))}),this.decoderPending}_getWorker(s,r){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const o=new Worker(this.workerSourceURL);o._callbacks={},o._taskCosts={},o._taskLoad=0,o.postMessage({type:"init",decoderConfig:this.decoderConfig}),o.onmessage=function(l){const u=l.data;switch(u.type){case"decode":o._callbacks[u.id].resolve(u);break;case"error":o._callbacks[u.id].reject(u);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+u.type+'"')}},this.workerPool.push(o)}else this.workerPool.sort(function(o,l){return o._taskLoad>l._taskLoad?-1:1});const n=this.workerPool[this.workerPool.length-1];return n._taskCosts[s]=r,n._taskLoad+=r,n})}_releaseTask(s,r){s._taskLoad-=s._taskCosts[r],delete s._callbacks[r],delete s._taskCosts[r]}debug(){console.log("Task load: ",this.workerPool.map(s=>s._taskLoad))}dispose(){for(let s=0;s<this.workerPool.length;++s)this.workerPool[s].terminate();return this.workerPool.length=0,this}}function bl(){let b,s;onmessage=function(u){const h=u.data;switch(h.type){case"init":b=h.decoderConfig,s=new Promise(function(_){b.onModuleLoaded=function(y){_({draco:y})},DracoDecoderModule(b)});break;case"decode":const d=h.buffer,w=h.taskConfig;s.then(_=>{const y=_.draco,x=new y.Decoder,M=new y.DecoderBuffer;M.Init(new Int8Array(d),d.byteLength);try{const T=r(y,x,M,w),D=T.attributes.map(E=>E.array.buffer);T.index&&D.push(T.index.array.buffer),self.postMessage({type:"decode",id:h.id,geometry:T},D)}catch(T){console.error(T),self.postMessage({type:"error",id:h.id,error:T.message})}finally{y.destroy(M),y.destroy(x)}});break}};function r(u,h,d,w){const _=w.attributeIDs,y=w.attributeTypes;let x,M;const T=h.GetEncodedGeometryType(d);if(T===u.TRIANGULAR_MESH)x=new u.Mesh,M=h.DecodeBufferToMesh(d,x);else if(T===u.POINT_CLOUD)x=new u.PointCloud,M=h.DecodeBufferToPointCloud(d,x);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!M.ok()||x.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+M.error_msg());const D={index:null,attributes:[]};for(const E in _){const F=self[y[E]];let z,N;if(w.useUniqueIDs)N=_[E],z=h.GetAttributeByUniqueId(x,N);else{if(N=h.GetAttributeId(x,u[_[E]]),N===-1)continue;z=h.GetAttribute(x,N)}D.attributes.push(o(u,h,x,E,F,z))}return T===u.TRIANGULAR_MESH&&(D.index=n(u,h,x)),u.destroy(x),D}function n(u,h,d){const _=d.num_faces()*3,y=_*4,x=u._malloc(y);h.GetTrianglesUInt32Array(d,y,x);const M=new Uint32Array(u.HEAPF32.buffer,x,_).slice();return u._free(x),{array:M,itemSize:1}}function o(u,h,d,w,_,y){const x=y.num_components(),T=d.num_points()*x,D=T*_.BYTES_PER_ELEMENT,E=l(u,_),F=u._malloc(D);h.GetAttributeDataArrayForAllPoints(d,y,E,D,F);const z=new _(u.HEAPF32.buffer,F,T).slice();return u._free(F),{name:w,array:z,itemSize:x}}function l(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 st(){const{state:b,setState:s}=C.inject("useTres",Me.useTres()),r=C.inject("extend")||(()=>{});return{state:b,setState:s,extend:r}}const gl=["args","center"],wl=C.defineComponent({__name:"Text3D",props:{font:{},text:{},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},needUpdates:{type:Boolean,default:!1}},async setup(b,{expose:s}){let r,n;const o=b,{extend:l}=st();l({TextGeometry:Nr});const u=new ul,h=C.useSlots(),d=C.computed(()=>{var x;return o.text?o.text:h.default?(x=h.default()[0].children)==null?void 0:x.trim():o.needUpdates?"":"TresJS"}),w=C.shallowRef();s({value:w});const _=([r,n]=C.withAsyncContext(()=>new Promise((x,M)=>{try{typeof o.font=="string"?u.load(o.font,T=>{x(T)}):x(o.font)}catch(T){M(console.error("cientos",T))}})),r=await r,n(),r),y=C.computed(()=>({font:_,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 C.watchEffect(()=>{w.value&&o.needUpdates&&(w.value.geometry.dispose(),w.value.geometry=new Nr(d.value,y.value),o.center&&w.value.geometry.center())}),(x,M)=>C.unref(_)?(C.openBlock(),C.createElementBlock("TresMesh",{key:0,ref_key:"text3DRef",ref:w},[d.value?(C.openBlock(),C.createElementBlock("TresTextGeometry",{key:0,args:[d.value,y.value],center:x.center},null,8,gl)):C.createCommentVNode("",!0),C.renderSlot(x.$slots,"default")],512)):C.createCommentVNode("",!0)}});function _l(b,s){const r=C.ref(s),n=new f.AnimationMixer(r.value),o=C.shallowReactive({});b.forEach(u=>{const h=n.clipAction(u,r.value);o[u.name]=h});const{onLoop:l}=Me.useRenderLoop();return l(({delta:u})=>{n.update(u)}),{actions:o,mixer:n}}const ms={sunset:"venice/venice_sunset_4k.hdr"};async function qr({files:b=["/px.png","/nx.png","/py.png","/ny.png","/pz.png","/nz.png"],blur:s=0,background:r=!1,path:n="/",preset:o=void 0}){const{state:l}=st();if(o){if(!(o in ms))throw new Error("Preset must be one of: "+Object.keys(ms).join(", "));b=ms[o],n="https://raw.githubusercontent.com/Tresjs/assets/main/textures/hdr/"}const u=Array.isArray(b),h=u?f.CubeTextureLoader:fl,d=await Me.useLoader(h,u?[b]:b,_=>{n&&_.setPath(n)}),w=u?d[0]:d;return w&&(w.mapping=u?f.CubeReflectionMapping:f.EquirectangularReflectionMapping,w.colorSpace=f.SRGBColorSpace),l.scene&&(l.scene.environment=w,r!==void 0&&(l.scene.background=w),s&&(l.scene.backgroundBlurriness=s|0)),w}const yl=C.defineComponent({name:"Environment",props:["background","blur","files","encoding","path","preset"],async setup(b,{expose:s}){let r=null;return s({getTexture:()=>r}),r=await qr(b),()=>{}}});function Qr(b){return C.getCurrentScope()?(C.onScopeDispose(b),!0):!1}function Zr(b){return typeof b=="function"?b():C.unref(b)}const xl=typeof window<"u",Wr=()=>{};function Cl(...b){if(b.length!==1)return C.toRef(...b);const s=b[0];return typeof s=="function"?C.readonly(C.customRef(()=>({get:s,set:Wr}))):C.ref(s)}function Pl(b,s=!0){C.getCurrentInstance()?C.onMounted(b):s?b():C.nextTick(b)}function kl(b){var s;const r=Zr(b);return(s=r==null?void 0:r.$el)!=null?s:r}const Ci=xl?window:void 0;function pt(...b){let s,r,n,o;if(typeof b[0]=="string"||Array.isArray(b[0])?([r,n,o]=b,s=Ci):[s,r,n,o]=b,!s)return Wr;Array.isArray(r)||(r=[r]),Array.isArray(n)||(n=[n]);const l=[],u=()=>{l.forEach(_=>_()),l.length=0},h=(_,y,x,M)=>(_.addEventListener(y,x,M),()=>_.removeEventListener(y,x,M)),d=C.watch(()=>[kl(s),Zr(o)],([_,y])=>{u(),_&&l.push(...r.flatMap(x=>n.map(M=>h(_,x,M,y))))},{immediate:!0,flush:"post"}),w=()=>{d(),u()};return Qr(w),w}function Ml(){const b=C.ref(!1);return C.getCurrentInstance()&&C.onMounted(()=>{b.value=!0}),b}function Al(b){const s=Ml();return C.computed(()=>(s.value,!!b()))}function Sl(b,s={}){const{window:r=Ci}=s,n=Al(()=>r&&"matchMedia"in r&&typeof r.matchMedia=="function");let o;const l=C.ref(!1),u=()=>{o&&("removeEventListener"in o?o.removeEventListener("change",h):o.removeListener(h))},h=()=>{n.value&&(u(),o=r.matchMedia(Cl(b).value),l.value=!!(o!=null&&o.matches),o&&("addEventListener"in o?o.addEventListener("change",h):o.addListener(h)))};return C.watchEffect(h),Qr(()=>u()),l}const Ll={page:b=>[b.pageX,b.pageY],client:b=>[b.clientX,b.clientY],screen:b=>[b.screenX,b.screenY],movement:b=>b instanceof Touch?null:[b.movementX,b.movementY]};function Vl(b={}){const{type:s="page",touch:r=!0,resetOnTouchEnds:n=!1,initialValue:o={x:0,y:0},window:l=Ci,target:u=l,eventFilter:h}=b,d=C.ref(o.x),w=C.ref(o.y),_=C.ref(null),y=typeof s=="function"?s:Ll[s],x=F=>{const z=y(F);z&&([d.value,w.value]=z,_.value="mouse")},M=F=>{if(F.touches.length>0){const z=y(F.touches[0]);z&&([d.value,w.value]=z,_.value="touch")}},T=()=>{d.value=o.x,w.value=o.y},D=h?F=>h(()=>x(F),{}):F=>x(F),E=h?F=>h(()=>M(F),{}):F=>M(F);return u&&(pt(u,"mousemove",D,{passive:!0}),pt(u,"dragover",D,{passive:!0}),r&&s!=="movement"&&(pt(u,"touchstart",E,{passive:!0}),pt(u,"touchmove",E,{passive:!0}),n&&pt(u,"touchend",T,{passive:!0}))),{x:d,y:w,sourceType:_}}function Dl(b={}){const{window:s=Ci,initialWidth:r=1/0,initialHeight:n=1/0,listenOrientation:o=!0,includeScrollbar:l=!0}=b,u=C.ref(r),h=C.ref(n),d=()=>{s&&(l?(u.value=s.innerWidth,h.value=s.innerHeight):(u.value=s.document.documentElement.clientWidth,h.value=s.document.documentElement.clientHeight))};if(d(),Pl(d),pt("resize",d,{passive:!0}),o){const w=Sl("(orientation: portrait)");C.watch(w,()=>d())}return{width:u,height:h}}function Jr(b=!1,s=2.5,r=!0,n){var D;const{x:o,y:l}=Vl(),{logWarning:u}=Me.useLogger(),{state:h}=st(),{width:d,height:w}=Dl(),{onLoop:_}=Me.useRenderLoop(),y=new f.Group;console.log("jaime ~ useParallax ~ ease:",r);const x=r?2.5:30,M=C.computed(()=>(o.value/d.value-.5)*s),T=C.computed(()=>-(l.value/w.value-.5)*s);n&&h.scene?(y.add(n),(D=h.scene)==null||D.add(y),_(({delta:E})=>{b||(y.position.x+=(M.value-y.position.x)*x*E,y.position.y+=(T.value-y.position.y)*x*E)})):u("Scene must contain a Camera component to use this composable")}const Il=C.defineComponent({name:"PamCameraMouse",props:["disabled","factor","ease"],setup(b){const{state:s}=st();return C.watchEffect(()=>{if(s!=null&&s.camera){const r=s==null?void 0:s.camera;Jr(b.disabled,b.factor,b.ease,r)}}),()=>{}}}),Tl=["position","a-scale"],El=C.defineComponent({__name:"Stars",props:{size:{default:.1},sizeAttenuation:{type:Boolean,default:!0},transparent:{type:Boolean,default:!0},alphaTest:{default:.01},count:{default:5e3},depth:{default:50},radius:{default:100},factor:{default:4},alphaMap:{default:null}},setup(b,{expose:s}){const r=b;let n=r.radius+r.depth;const o=r.depth/r.count,l=[],u=Array.from({length:r.count},()=>(.5+.5*Math.random())*r.factor),h=x=>new f.Vector3().setFromSpherical(new f.Spherical(x,Math.acos(1-Math.random()*2),Math.random()*2*Math.PI));for(let x=0;x<r.count;x++)n-=o*Math.random(),l.push(...h(n).toArray());const d=new Float32Array(l),w=new Float32Array(u),_=C.computed(()=>({size:r.size,sizeAttenuation:r.sizeAttenuation,transparent:r.transparent,alphaTest:r.alphaTest,alphaMap:r.alphaMap})),y=C.shallowRef();return s({value:y}),(x,M)=>(C.openBlock(),C.createElementBlock("TresPoints",{ref_key:"starsRef",ref:y},[C.createElementVNode("TresBufferGeometry",{position:[C.unref(d),3],"a-scale":[C.unref(w),1]},null,8,Tl),C.createElementVNode("TresPointsMaterial",C.normalizeProps(C.guardReactiveProps(_.value)),null,16)],512))}}),Ol=["size","color","alpha-map","map","opacity","alpha-test","depth-write","transparent","size-attenuation"],Bl=["position","velocity"],Nl=C.defineComponent({__name:"Precipitation",props:{size:{default:.1},area:{default:()=>[10,10,20]},color:{default:16777215},map:{default:null},alphaMap:{default:null},alphaTest:{default:.01},opacity:{default:.8},count:{default:5e3},speed:{default:.1},randomness:{default:.5},depthWrite:{type:Boolean,default:!1},transparent:{type:Boolean,default:!0},sizeAttenuation:{type:Boolean,default:!0}},setup(b){const s=C.shallowRef();let r=[],n=[];const o=()=>{r=new Float32Array(b.count*3);for(let h=0;h<b.count;h++){const d=h*3;r[d]=(Math.random()-.5)*b.area[0],r[d+1]=(Math.random()-.5)*b.area[1],r[d+2]=(Math.random()-.5)*b.area[2]}},l=()=>{n=new Float32Array(b.count*2);for(let h=0;h<b.count*2;h+=2)n[h]=(Math.random()-.5)/5*b.speed*b.randomness,n[h+1]=Math.random()/5*b.speed+.01};l(),o(),C.watchEffect(()=>{var h;l(),o(),(h=s.value)!=null&&h.attributes.position&&(s.value.attributes.position=r)});const{onLoop:u}=Me.useRenderLoop();return u(()=>{if(s.value){const h=s.value.attributes.position.array;for(let d=0;d<s.value.attributes.position.count;d++){const w=n[d*2],_=n[d*2+1];h[d*3]+=w,h[d*3+1]-=_,(h[d*3]<=-b.area[0]/2||h[d*3]>=b.area[0]/2)&&(h[d*3]=h[d*3]*-1),(h[d*3+1]<=-b.area[1]/2||h[d*3+1]>=b.area[1]/2)&&(h[d*3+1]=h[d*3+1]*-1)}s.value.attributes.position.needsUpdate=!0}}),(h,d)=>(C.openBlock(),C.createElementBlock("TresPoints",null,[C.createElementVNode("TresPointsMaterial",{size:h.size,color:h.color,"alpha-map":h.alphaMap,map:h.map,opacity:h.opacity,"alpha-test":h.alphaTest,"depth-write":h.depthWrite,transparent:h.transparent,"size-attenuation":h.sizeAttenuation},null,8,Ol),C.createElementVNode("TresBufferGeometry",{ref_key:"precipitationGeoRef",ref:s,position:[C.unref(r),3],velocity:[C.unref(n)]},null,8,Bl)]))}}),Fl=["position"],zl=["position"],jl=["scale"],Ul=["map","depth-test","color-space","color","opacity"],Rl=C.defineComponent({__name:"Smoke",props:{color:{default:"#ffffff"},opacity:{default:.5},speed:{default:.4},width:{default:10},depth:{default:1.5},segments:{default:20},texture:{default:"https://raw.githubusercontent.com/Tresjs/assets/main/textures/clouds/defaultCloud.png"},depthTest:{type:Boolean,default:!0}},async setup(b,{expose:s}){let r,n;const o=C.shallowRef(),l=C.shallowRef();s({value:o});const u=[...new Array(b.segments)].map((x,M)=>({x:b.width/2-Math.random()*b.width,y:b.width/2-Math.random()*b.width,scale:.4+Math.sin((M+1)/b.segments*Math.PI)*((.2+Math.random())*10),density:Math.max(.2,Math.random()),rotation:Math.max(.002,.005*Math.random())*b.speed})),h=(x,M)=>x/6*M*b.opacity,{map:d}=([r,n]=C.withAsyncContext(()=>Me.useTexture({map:b.texture})),r=await r,n(),r),{state:w}=st(),_=C.computed(()=>{var x;return(x=w.renderer)==null?void 0:x.outputColorSpace}),{onLoop:y}=Me.useRenderLoop();return y(()=>{var x,M;o.value&&w.camera&&l.value&&((x=l.value)==null||x.children.forEach((T,D)=>{T.rotation.z+=u[D].rotation}),o.value.lookAt((M=w.camera)==null?void 0:M.position))}),(x,M)=>(C.openBlock(),C.createElementBlock("TresGroup",C.mergeProps({ref_key:"smokeRef",ref:o},x.$attrs),[C.createElementVNode("TresGroup",{ref_key:"groupRef",ref:l,position:[0,0,x.segments/2*x.depth]},[(C.openBlock(!0),C.createElementBlock(C.Fragment,null,C.renderList(C.unref(u),({scale:T,x:D,y:E,density:F},z)=>(C.openBlock(),C.createElementBlock("TresMesh",{key:`${z}`,position:[D,E,-z*x.depth]},[C.createElementVNode("TresPlaneGeometry",{scale:[T,T,T],rotation:[0,0,0]},null,8,jl),C.createElementVNode("TresMeshStandardMaterial",{map:C.unref(d),"depth-test":x.depthTest,"color-space":_.value,color:x.color,"depth-write":!1,transparent:"",opacity:h(T,F)},null,8,Ul)],8,zl))),128))],8,Fl)],16))}}),Gl=C.defineComponent({__name:"Levioso",props:{speed:{default:1},rotationFactor:{default:1},floatFactor:{default:1},range:{default:()=>[-.1,.1]}},setup(b,{expose:s}){const r=b,n=C.shallowRef();s({value:n});const{onLoop:o}=Me.useRenderLoop(),l=C.ref(Math.random()*1e4);return o(({elapsed:u})=>{var w,_;if(!n.value)return;const h=l.value+u;n.value.rotation.x=Math.cos(h/4*r.speed)/8*r.rotationFactor,n.value.rotation.y=Math.sin(h/4*r.speed)/8*r.rotationFactor,n.value.rotation.z=Math.sin(h/4*r.speed)/20*r.rotationFactor;let d=Math.sin(h/4*r.speed)/10;d=f.MathUtils.mapLinear(d,-.1,.1,((w=r.range)==null?void 0:w[0])??-.1,((_=r.range)==null?void 0:_[1])??.1),n.value.position.y=d*r.floatFactor}),(u,h)=>(C.openBlock(),C.createElementBlock("TresGroup",C.mergeProps(u.$attrs,{ref_key:"groupRef",ref:n}),[C.renderSlot(u.$slots,"default")],16))}}),Kl=["geometry"],$l=["map","opacity","depth-write"],Xl=["args"],Yl=["rotation-x","args"],ql=C.defineComponent({__name:"ContactShadows",props:{opacity:{default:1},width:{default:1},height:{default:1},blur:{default:1},far:{default:10},smooth:{type:Boolean,default:!0},resolution:{default:512},frames:{default:1/0},scale:{default:10},color:{default:"#000000"},depthWrite:{type:Boolean,default:!1},helper:{type:Boolean,default:!1}},setup(b,{expose:s}){const r=b,n=C.shallowRef(),o=C.shallowRef();s(n);let l,u,h,d,w;const{state:_}=st(),y=C.computed(()=>r.width*(Array.isArray(r.scale)?r.scale[0]:r.scale||1)),x=C.computed(()=>r.height*(Array.isArray(r.scale)?r.scale[1]:r.scale||1));C.watchEffect(()=>{l&&l.dispose(),u&&u.dispose(),h&&h.dispose(),d&&d.geometry.dispose(),l=new f.WebGLRenderTarget(r.resolution,r.resolution),u=new f.WebGLRenderTarget(r.resolution,r.resolution),u.texture.generateMipmaps=l.texture.generateMipmaps=!1,h=new f.PlaneGeometry(y.value,x.value).rotateX(Math.PI/2),d=new f.Mesh(h),d.visible=!1}),C.watchEffect(()=>{r.color&&(w&&w.dispose(),w=new f.MeshDepthMaterial,w.depthTest=w.depthWrite=!1,w.onBeforeCompile=O=>{O.uniforms={...O.uniforms,ucolor:{value:r.color?new f.Color(r.color):new f.Color}},O.fragmentShader=O.fragmentShader.replace("void main() {",`uniform vec3 ucolor;
78
+ `;continue}if((Z=Y.match(Q))&&(X.gamma=parseFloat(Z[1])),(Z=Y.match($))&&(X.exposure=parseFloat(Z[1])),(Z=Y.match(U))&&(X.valid|=2,X.format=Z[1]),(Z=Y.match(j))&&(X.valid|=4,X.height=parseInt(Z[1],10),X.width=parseInt(Z[2],10)),X.valid&2&&X.valid&4)break}return X.valid&2?X.valid&4?X:h(3,"missing image size specifier"):h(3,"missing format specifier")},O=function(N,E,Q){const $=E;if($<8||$>32767||N[0]!==2||N[1]!==2||N[2]&128)return new Uint8Array(N);if($!==(N[2]<<8|N[3]))return h(3,"wrong scanline width");const U=new Uint8Array(4*E*Q);if(!U.length)return h(4,"unable to allocate buffer space");let j=0,X=0;const Y=4*$,Z=new Uint8Array(4),ue=new Uint8Array(Y);let ge=Q;for(;ge>0&&X<N.byteLength;){if(X+4>N.byteLength)return h(1);if(Z[0]=N[X++],Z[1]=N[X++],Z[2]=N[X++],Z[3]=N[X++],Z[0]!=2||Z[1]!=2||(Z[2]<<8|Z[3])!=$)return h(3,"bad rgbe scanline format");let pe=0,me;for(;pe<Y&&X<N.byteLength;){me=N[X++];const te=me>128;if(te&&(me-=128),me===0||pe+me>Y)return h(3,"bad scanline data");if(te){const q=N[X++];for(let Ce=0;Ce<me;Ce++)ue[pe++]=q}else ue.set(N.subarray(X,X+me),pe),pe+=me,X+=me}const he=$;for(let te=0;te<he;te++){let q=0;U[j]=ue[te+q],q+=$,U[j+1]=ue[te+q],q+=$,U[j+2]=ue[te+q],q+=$,U[j+3]=ue[te+q],j+=4}ge--}return U},I=function(N,E,Q,$){const U=N[E+3],j=Math.pow(2,U-128)/255;Q[$+0]=N[E+0]*j,Q[$+1]=N[E+1]*j,Q[$+2]=N[E+2]*j,Q[$+3]=1},T=function(N,E,Q,$){const U=N[E+3],j=Math.pow(2,U-128)/255;Q[$+0]=f.DataUtils.toHalfFloat(Math.min(N[E+0]*j,65504)),Q[$+1]=f.DataUtils.toHalfFloat(Math.min(N[E+1]*j,65504)),Q[$+2]=f.DataUtils.toHalfFloat(Math.min(N[E+2]*j,65504)),Q[$+3]=f.DataUtils.toHalfFloat(1)},F=new Uint8Array(i);F.pos=0;const z=M(F);if(z!==-1){const N=z.width,E=z.height,Q=O(F.subarray(F.pos),N,E);if(Q!==-1){let $,U,j;switch(this.type){case f.FloatType:j=Q.length/4;const X=new Float32Array(j*4);for(let Z=0;Z<j;Z++)I(Q,Z*4,X,Z*4);$=X,U=f.FloatType;break;case f.HalfFloatType:j=Q.length/4;const Y=new Uint16Array(j*4);for(let Z=0;Z<j;Z++)T(Q,Z*4,Y,Z*4);$=Y,U=f.HalfFloatType;break;default:console.error("THREE.RGBELoader: unsupported type: ",this.type);break}return{width:N,height:E,data:$,header:z.string,gamma:z.gamma,exposure:z.exposure,type:U}}}return null}setDataType(i){return this.type=i,this}load(i,r,s,o){function l(u,h){switch(u.type){case f.FloatType:case f.HalfFloatType:"colorSpace"in u?u.colorSpace="srgb-linear":u.encoding=3e3,u.minFilter=f.LinearFilter,u.magFilter=f.LinearFilter,u.generateMipmaps=!1,u.flipY=!0;break}r&&r(u,h)}return super.load(i,l,s,o)}}const ds=new WeakMap;class vl 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,o){const l=new f.FileLoader(this.manager);l.setPath(this.path),l.setResponseType("arraybuffer"),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(i,u=>{const h={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(u,h).then(r).catch(o)},s,o)}decodeDracoFile(i,r,s,o){const l={attributeIDs:s||this.defaultAttributeIDs,attributeTypes:o||this.defaultAttributeTypes,useUniqueIDs:!!s};this.decodeGeometry(i,l).then(r)}decodeGeometry(i,r){for(const d in r.attributeTypes){const w=r.attributeTypes[d];w.BYTES_PER_ELEMENT!==void 0&&(r.attributeTypes[d]=w.name)}const s=JSON.stringify(r);if(ds.has(i)){const d=ds.get(i);if(d.key===s)return d.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 o;const l=this.workerNextTaskID++,u=i.byteLength,h=this._getWorker(l,u).then(d=>(o=d,new Promise((w,_)=>{o._callbacks[l]={resolve:w,reject:_},o.postMessage({type:"decode",id:l,taskConfig:r,buffer:i},[i])}))).then(d=>this._createGeometry(d.geometry));return h.catch(()=>!0).then(()=>{o&&l&&this._releaseTask(o,l)}),ds.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 o=i.attributes[s],l=o.name,u=o.array,h=o.itemSize;r.setAttribute(l,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((o,l)=>{s.load(i,o,void 0,l)})}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 o=s[0];i||(this.decoderConfig.wasmBinary=s[1]);const l=bl.toString(),u=["/* draco decoder */",o,"","/* worker */",l.substring(l.indexOf("{")+1,l.lastIndexOf("}"))].join(`
79
+ `);this.workerSourceURL=URL.createObjectURL(new Blob([u]))}),this.decoderPending}_getWorker(i,r){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const o=new Worker(this.workerSourceURL);o._callbacks={},o._taskCosts={},o._taskLoad=0,o.postMessage({type:"init",decoderConfig:this.decoderConfig}),o.onmessage=function(l){const u=l.data;switch(u.type){case"decode":o._callbacks[u.id].resolve(u);break;case"error":o._callbacks[u.id].reject(u);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+u.type+'"')}},this.workerPool.push(o)}else this.workerPool.sort(function(o,l){return o._taskLoad>l._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 bl(){let g,i;onmessage=function(u){const h=u.data;switch(h.type){case"init":g=h.decoderConfig,i=new Promise(function(_){g.onModuleLoaded=function(y){_({draco:y})},DracoDecoderModule(g)});break;case"decode":const d=h.buffer,w=h.taskConfig;i.then(_=>{const y=_.draco,x=new y.Decoder,M=new y.DecoderBuffer;M.Init(new Int8Array(d),d.byteLength);try{const O=r(y,x,M,w),I=O.attributes.map(T=>T.array.buffer);O.index&&I.push(O.index.array.buffer),self.postMessage({type:"decode",id:h.id,geometry:O},I)}catch(O){console.error(O),self.postMessage({type:"error",id:h.id,error:O.message})}finally{y.destroy(M),y.destroy(x)}});break}};function r(u,h,d,w){const _=w.attributeIDs,y=w.attributeTypes;let x,M;const O=h.GetEncodedGeometryType(d);if(O===u.TRIANGULAR_MESH)x=new u.Mesh,M=h.DecodeBufferToMesh(d,x);else if(O===u.POINT_CLOUD)x=new u.PointCloud,M=h.DecodeBufferToPointCloud(d,x);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!M.ok()||x.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+M.error_msg());const I={index:null,attributes:[]};for(const T in _){const F=self[y[T]];let z,N;if(w.useUniqueIDs)N=_[T],z=h.GetAttributeByUniqueId(x,N);else{if(N=h.GetAttributeId(x,u[_[T]]),N===-1)continue;z=h.GetAttribute(x,N)}I.attributes.push(o(u,h,x,T,F,z))}return O===u.TRIANGULAR_MESH&&(I.index=s(u,h,x)),u.destroy(x),I}function s(u,h,d){const _=d.num_faces()*3,y=_*4,x=u._malloc(y);h.GetTrianglesUInt32Array(d,y,x);const M=new Uint32Array(u.HEAPF32.buffer,x,_).slice();return u._free(x),{array:M,itemSize:1}}function o(u,h,d,w,_,y){const x=y.num_components(),O=d.num_points()*x,I=O*_.BYTES_PER_ELEMENT,T=l(u,_),F=u._malloc(I);h.GetAttributeDataArrayForAllPoints(d,y,T,I,F);const z=new _(u.HEAPF32.buffer,F,O).slice();return u._free(F),{name:w,array:z,itemSize:x}}function l(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 rt(){const{state:g,setState:i}=C.inject("useTres",Me.useTres()),r=C.inject("extend")||(()=>{});return{state:g,setState:i,extend:r}}const gl=["args","center"],wl=C.defineComponent({__name:"Text3D",props:{font:{},text:{},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},needUpdates:{type:Boolean,default:!1}},async setup(g,{expose:i}){let r,s;const o=g,{extend:l}=rt();l({TextGeometry:Nr});const u=new ul,h=C.useSlots(),d=C.computed(()=>{var x;return o.text?o.text:h.default?(x=h.default()[0].children)==null?void 0:x.trim():o.needUpdates?"":"TresJS"}),w=C.shallowRef();i({value:w});const _=([r,s]=C.withAsyncContext(()=>new Promise((x,M)=>{try{typeof o.font=="string"?u.load(o.font,O=>{x(O)}):x(o.font)}catch(O){M(console.error("cientos",O))}})),r=await r,s(),r),y=C.computed(()=>({font:_,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 C.watchEffect(()=>{w.value&&o.needUpdates&&(w.value.geometry.dispose(),w.value.geometry=new Nr(d.value,y.value),o.center&&w.value.geometry.center())}),(x,M)=>C.unref(_)?(C.openBlock(),C.createElementBlock("TresMesh",{key:0,ref_key:"text3DRef",ref:w},[d.value?(C.openBlock(),C.createElementBlock("TresTextGeometry",{key:0,args:[d.value,y.value],center:x.center},null,8,gl)):C.createCommentVNode("",!0),C.renderSlot(x.$slots,"default")],512)):C.createCommentVNode("",!0)}});function _l(g,i){const r=C.ref(i),s=new f.AnimationMixer(r.value),o=C.shallowReactive({});g.forEach(u=>{const h=s.clipAction(u,r.value);o[u.name]=h});const{onLoop:l}=Me.useRenderLoop();return l(({delta:u})=>{s.update(u)}),{actions:o,mixer:s}}const ms={sunset:"venice/venice_sunset_4k.hdr"};async function qr({files:g=["/px.png","/nx.png","/py.png","/ny.png","/pz.png","/nz.png"],blur:i=0,background:r=!1,path:s="/",preset:o=void 0}){const{state:l}=rt();if(o){if(!(o in ms))throw new Error("Preset must be one of: "+Object.keys(ms).join(", "));g=ms[o],s="https://raw.githubusercontent.com/Tresjs/assets/main/textures/hdr/"}const u=Array.isArray(g),h=u?f.CubeTextureLoader:fl,d=await Me.useLoader(h,u?[g]:g,_=>{s&&_.setPath(s)}),w=u?d[0]:d;return w&&(w.mapping=u?f.CubeReflectionMapping:f.EquirectangularReflectionMapping,w.colorSpace=f.SRGBColorSpace),l.scene&&(l.scene.environment=w,r!==void 0&&(l.scene.background=w),i&&(l.scene.backgroundBlurriness=i|0)),w}const yl=C.defineComponent({name:"Environment",props:["background","blur","files","encoding","path","preset"],async setup(g,{expose:i}){let r=null;return i({getTexture:()=>r}),r=await qr(g),()=>{}}});function Qr(g){return C.getCurrentScope()?(C.onScopeDispose(g),!0):!1}function Zr(g){return typeof g=="function"?g():C.unref(g)}const xl=typeof window<"u",Wr=()=>{};function Cl(...g){if(g.length!==1)return C.toRef(...g);const i=g[0];return typeof i=="function"?C.readonly(C.customRef(()=>({get:i,set:Wr}))):C.ref(i)}function Pl(g,i=!0){C.getCurrentInstance()?C.onMounted(g):i?g():C.nextTick(g)}function kl(g){var i;const r=Zr(g);return(i=r==null?void 0:r.$el)!=null?i:r}const Ci=xl?window:void 0;function Oe(...g){let i,r,s,o;if(typeof g[0]=="string"||Array.isArray(g[0])?([r,s,o]=g,i=Ci):[i,r,s,o]=g,!i)return Wr;Array.isArray(r)||(r=[r]),Array.isArray(s)||(s=[s]);const l=[],u=()=>{l.forEach(_=>_()),l.length=0},h=(_,y,x,M)=>(_.addEventListener(y,x,M),()=>_.removeEventListener(y,x,M)),d=C.watch(()=>[kl(i),Zr(o)],([_,y])=>{u(),_&&l.push(...r.flatMap(x=>s.map(M=>h(_,x,M,y))))},{immediate:!0,flush:"post"}),w=()=>{d(),u()};return Qr(w),w}function Ml(){const g=C.ref(!1);return C.getCurrentInstance()&&C.onMounted(()=>{g.value=!0}),g}function Al(g){const i=Ml();return C.computed(()=>(i.value,!!g()))}function Sl(g,i={}){const{window:r=Ci}=i,s=Al(()=>r&&"matchMedia"in r&&typeof r.matchMedia=="function");let o;const l=C.ref(!1),u=()=>{o&&("removeEventListener"in o?o.removeEventListener("change",h):o.removeListener(h))},h=()=>{s.value&&(u(),o=r.matchMedia(Cl(g).value),l.value=!!(o!=null&&o.matches),o&&("addEventListener"in o?o.addEventListener("change",h):o.addListener(h)))};return C.watchEffect(h),Qr(()=>u()),l}const Ll={page:g=>[g.pageX,g.pageY],client:g=>[g.clientX,g.clientY],screen:g=>[g.screenX,g.screenY],movement:g=>g instanceof Touch?null:[g.movementX,g.movementY]};function Vl(g={}){const{type:i="page",touch:r=!0,resetOnTouchEnds:s=!1,initialValue:o={x:0,y:0},window:l=Ci,target:u=l,eventFilter:h}=g,d=C.ref(o.x),w=C.ref(o.y),_=C.ref(null),y=typeof i=="function"?i:Ll[i],x=F=>{const z=y(F);z&&([d.value,w.value]=z,_.value="mouse")},M=F=>{if(F.touches.length>0){const z=y(F.touches[0]);z&&([d.value,w.value]=z,_.value="touch")}},O=()=>{d.value=o.x,w.value=o.y},I=h?F=>h(()=>x(F),{}):F=>x(F),T=h?F=>h(()=>M(F),{}):F=>M(F);return u&&(Oe(u,"mousemove",I,{passive:!0}),Oe(u,"dragover",I,{passive:!0}),r&&i!=="movement"&&(Oe(u,"touchstart",T,{passive:!0}),Oe(u,"touchmove",T,{passive:!0}),s&&Oe(u,"touchend",O,{passive:!0}))),{x:d,y:w,sourceType:_}}function Dl(g={}){const{window:i=Ci,initialWidth:r=1/0,initialHeight:s=1/0,listenOrientation:o=!0,includeScrollbar:l=!0}=g,u=C.ref(r),h=C.ref(s),d=()=>{i&&(l?(u.value=i.innerWidth,h.value=i.innerHeight):(u.value=i.document.documentElement.clientWidth,h.value=i.document.documentElement.clientHeight))};if(d(),Pl(d),Oe("resize",d,{passive:!0}),o){const w=Sl("(orientation: portrait)");C.watch(w,()=>d())}return{width:u,height:h}}function Jr(g=!1,i=2.5,r=!0,s){var I;const{x:o,y:l}=Vl(),{logWarning:u}=Me.useLogger(),{state:h}=rt(),{width:d,height:w}=Dl(),{onLoop:_}=Me.useRenderLoop(),y=new f.Group;console.log("jaime ~ useParallax ~ ease:",r);const x=r?2.5:30,M=C.computed(()=>(o.value/d.value-.5)*i),O=C.computed(()=>-(l.value/w.value-.5)*i);s&&h.scene?(y.add(s),(I=h.scene)==null||I.add(y),_(({delta:T})=>{g||(y.position.x+=(M.value-y.position.x)*x*T,y.position.y+=(O.value-y.position.y)*x*T)})):u("Scene must contain a Camera component to use this composable")}const Il=C.defineComponent({name:"PamCameraMouse",props:["disabled","factor","ease"],setup(g){const{state:i}=rt();return C.watchEffect(()=>{if(i!=null&&i.camera){const r=i==null?void 0:i.camera;Jr(g.disabled,g.factor,g.ease,r)}}),()=>{}}}),Tl=["position","a-scale"],El=C.defineComponent({__name:"Stars",props:{size:{default:.1},sizeAttenuation:{type:Boolean,default:!0},transparent:{type:Boolean,default:!0},alphaTest:{default:.01},count:{default:5e3},depth:{default:50},radius:{default:100},factor:{default:4},alphaMap:{default:null}},setup(g,{expose:i}){const r=g;let s=r.radius+r.depth;const o=r.depth/r.count,l=[],u=Array.from({length:r.count},()=>(.5+.5*Math.random())*r.factor),h=x=>new f.Vector3().setFromSpherical(new f.Spherical(x,Math.acos(1-Math.random()*2),Math.random()*2*Math.PI));for(let x=0;x<r.count;x++)s-=o*Math.random(),l.push(...h(s).toArray());const d=new Float32Array(l),w=new Float32Array(u),_=C.computed(()=>({size:r.size,sizeAttenuation:r.sizeAttenuation,transparent:r.transparent,alphaTest:r.alphaTest,alphaMap:r.alphaMap})),y=C.shallowRef();return i({value:y}),(x,M)=>(C.openBlock(),C.createElementBlock("TresPoints",{ref_key:"starsRef",ref:y},[C.createElementVNode("TresBufferGeometry",{position:[C.unref(d),3],"a-scale":[C.unref(w),1]},null,8,Tl),C.createElementVNode("TresPointsMaterial",C.normalizeProps(C.guardReactiveProps(_.value)),null,16)],512))}}),Ol=["size","color","alpha-map","map","opacity","alpha-test","depth-write","transparent","size-attenuation"],Bl=["position","velocity"],Nl=C.defineComponent({__name:"Precipitation",props:{size:{default:.1},area:{default:()=>[10,10,20]},color:{default:16777215},map:{default:null},alphaMap:{default:null},alphaTest:{default:.01},opacity:{default:.8},count:{default:5e3},speed:{default:.1},randomness:{default:.5},depthWrite:{type:Boolean,default:!1},transparent:{type:Boolean,default:!0},sizeAttenuation:{type:Boolean,default:!0}},setup(g){const i=C.shallowRef();let r=[],s=[];const o=()=>{r=new Float32Array(g.count*3);for(let h=0;h<g.count;h++){const d=h*3;r[d]=(Math.random()-.5)*g.area[0],r[d+1]=(Math.random()-.5)*g.area[1],r[d+2]=(Math.random()-.5)*g.area[2]}},l=()=>{s=new Float32Array(g.count*2);for(let h=0;h<g.count*2;h+=2)s[h]=(Math.random()-.5)/5*g.speed*g.randomness,s[h+1]=Math.random()/5*g.speed+.01};l(),o(),C.watchEffect(()=>{var h;l(),o(),(h=i.value)!=null&&h.attributes.position&&(i.value.attributes.position=r)});const{onLoop:u}=Me.useRenderLoop();return u(()=>{if(i.value){const h=i.value.attributes.position.array;for(let d=0;d<i.value.attributes.position.count;d++){const w=s[d*2],_=s[d*2+1];h[d*3]+=w,h[d*3+1]-=_,(h[d*3]<=-g.area[0]/2||h[d*3]>=g.area[0]/2)&&(h[d*3]=h[d*3]*-1),(h[d*3+1]<=-g.area[1]/2||h[d*3+1]>=g.area[1]/2)&&(h[d*3+1]=h[d*3+1]*-1)}i.value.attributes.position.needsUpdate=!0}}),(h,d)=>(C.openBlock(),C.createElementBlock("TresPoints",null,[C.createElementVNode("TresPointsMaterial",{size:h.size,color:h.color,"alpha-map":h.alphaMap,map:h.map,opacity:h.opacity,"alpha-test":h.alphaTest,"depth-write":h.depthWrite,transparent:h.transparent,"size-attenuation":h.sizeAttenuation},null,8,Ol),C.createElementVNode("TresBufferGeometry",{ref_key:"precipitationGeoRef",ref:i,position:[C.unref(r),3],velocity:[C.unref(s)]},null,8,Bl)]))}}),Fl=["position"],zl=["position"],jl=["scale"],Ul=["map","depth-test","color-space","color","opacity"],Rl=C.defineComponent({__name:"Smoke",props:{color:{default:"#ffffff"},opacity:{default:.5},speed:{default:.4},width:{default:10},depth:{default:1.5},segments:{default:20},texture:{default:"https://raw.githubusercontent.com/Tresjs/assets/main/textures/clouds/defaultCloud.png"},depthTest:{type:Boolean,default:!0}},async setup(g,{expose:i}){let r,s;const o=C.shallowRef(),l=C.shallowRef();i({value:o});const u=[...new Array(g.segments)].map((x,M)=>({x:g.width/2-Math.random()*g.width,y:g.width/2-Math.random()*g.width,scale:.4+Math.sin((M+1)/g.segments*Math.PI)*((.2+Math.random())*10),density:Math.max(.2,Math.random()),rotation:Math.max(.002,.005*Math.random())*g.speed})),h=(x,M)=>x/6*M*g.opacity,{map:d}=([r,s]=C.withAsyncContext(()=>Me.useTexture({map:g.texture})),r=await r,s(),r),{state:w}=rt(),_=C.computed(()=>{var x;return(x=w.renderer)==null?void 0:x.outputColorSpace}),{onLoop:y}=Me.useRenderLoop();return y(()=>{var x,M;o.value&&w.camera&&l.value&&((x=l.value)==null||x.children.forEach((O,I)=>{O.rotation.z+=u[I].rotation}),o.value.lookAt((M=w.camera)==null?void 0:M.position))}),(x,M)=>(C.openBlock(),C.createElementBlock("TresGroup",C.mergeProps({ref_key:"smokeRef",ref:o},x.$attrs),[C.createElementVNode("TresGroup",{ref_key:"groupRef",ref:l,position:[0,0,x.segments/2*x.depth]},[(C.openBlock(!0),C.createElementBlock(C.Fragment,null,C.renderList(C.unref(u),({scale:O,x:I,y:T,density:F},z)=>(C.openBlock(),C.createElementBlock("TresMesh",{key:`${z}`,position:[I,T,-z*x.depth]},[C.createElementVNode("TresPlaneGeometry",{scale:[O,O,O],rotation:[0,0,0]},null,8,jl),C.createElementVNode("TresMeshStandardMaterial",{map:C.unref(d),"depth-test":x.depthTest,"color-space":_.value,color:x.color,"depth-write":!1,transparent:"",opacity:h(O,F)},null,8,Ul)],8,zl))),128))],8,Fl)],16))}}),Gl=C.defineComponent({__name:"Levioso",props:{speed:{default:1},rotationFactor:{default:1},floatFactor:{default:1},range:{default:()=>[-.1,.1]}},setup(g,{expose:i}){const r=g,s=C.shallowRef();i({value:s});const{onLoop:o}=Me.useRenderLoop(),l=C.ref(Math.random()*1e4);return o(({elapsed:u})=>{var w,_;if(!s.value)return;const h=l.value+u;s.value.rotation.x=Math.cos(h/4*r.speed)/8*r.rotationFactor,s.value.rotation.y=Math.sin(h/4*r.speed)/8*r.rotationFactor,s.value.rotation.z=Math.sin(h/4*r.speed)/20*r.rotationFactor;let d=Math.sin(h/4*r.speed)/10;d=f.MathUtils.mapLinear(d,-.1,.1,((w=r.range)==null?void 0:w[0])??-.1,((_=r.range)==null?void 0:_[1])??.1),s.value.position.y=d*r.floatFactor}),(u,h)=>(C.openBlock(),C.createElementBlock("TresGroup",C.mergeProps(u.$attrs,{ref_key:"groupRef",ref:s}),[C.renderSlot(u.$slots,"default")],16))}}),Kl=["geometry"],$l=["map","opacity","depth-write"],Xl=["args"],Yl=["rotation-x","args"],ql=C.defineComponent({__name:"ContactShadows",props:{opacity:{default:1},width:{default:1},height:{default:1},blur:{default:1},far:{default:10},smooth:{type:Boolean,default:!0},resolution:{default:512},frames:{default:1/0},scale:{default:10},color:{default:"#000000"},depthWrite:{type:Boolean,default:!1},helper:{type:Boolean,default:!1}},setup(g,{expose:i}){const r=g,s=C.shallowRef(),o=C.shallowRef();i(s);let l,u,h,d,w;const{state:_}=rt(),y=C.computed(()=>r.width*(Array.isArray(r.scale)?r.scale[0]:r.scale||1)),x=C.computed(()=>r.height*(Array.isArray(r.scale)?r.scale[1]:r.scale||1));C.watchEffect(()=>{l&&l.dispose(),u&&u.dispose(),h&&h.dispose(),d&&d.geometry.dispose(),l=new f.WebGLRenderTarget(r.resolution,r.resolution),u=new f.WebGLRenderTarget(r.resolution,r.resolution),u.texture.generateMipmaps=l.texture.generateMipmaps=!1,h=new f.PlaneGeometry(y.value,x.value).rotateX(Math.PI/2),d=new f.Mesh(h),d.visible=!1}),C.watchEffect(()=>{r.color&&(w&&w.dispose(),w=new f.MeshDepthMaterial,w.depthTest=w.depthWrite=!1,w.onBeforeCompile=E=>{E.uniforms={...E.uniforms,ucolor:{value:r.color?new f.Color(r.color):new f.Color}},E.fragmentShader=E.fragmentShader.replace("void main() {",`uniform vec3 ucolor;
80
80
  void main() {
81
- `),O.fragmentShader=O.fragmentShader.replace("vec4( vec3( 1.0 - fragCoordZ ), opacity );","vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );")})});const M=new f.ShaderMaterial(Ka),T=new f.ShaderMaterial($a);T.depthTest=M.depthTest=!1;function D(O){!_.renderer||!o.value||(d.visible=!0,d.material=M,M.uniforms.tDiffuse.value=l.texture,M.uniforms.h.value=O/256,_.renderer.setRenderTarget(u),_.renderer.render(d,o.value),d.material=T,T.uniforms.tDiffuse.value=u.texture,T.uniforms.v.value=O/256,_.renderer.setRenderTarget(l),_.renderer.render(d,o.value),d.visible=!1)}const{onLoop:E}=Me.useRenderLoop();let F=0,z,N;return E(()=>{!o.value||_.scene===void 0||_.renderer===void 0||(r.frames===1/0||F<r.frames)&&(F++,z=_.scene.background,N=_.scene.overrideMaterial,n.value.visible=!1,_.scene.background=null,_.scene.overrideMaterial=w,_.renderer.setRenderTarget(l),_.renderer.render(_.scene,o.value),D(r.blur),r.smooth&&D(r.blur*.4),_.renderer.setRenderTarget(null),n.value.visible=!0,_.scene.background=z,_.scene.overrideMaterial=N)}),(O,Q)=>{const $=C.resolveComponent("primitive");return C.openBlock(),C.createElementBlock("TresGroup",C.mergeProps({ref_key:"groupRef",ref:n},O.$attrs),[C.createElementVNode("TresMesh",{scale:[1,-1,1],geometry:C.unref(h)},[C.createElementVNode("TresMeshBasicMaterial",{map:C.unref(l).texture,opacity:O.opacity,"depth-write":O.depthWrite,transparent:!0},null,8,$l)],8,Kl),C.createVNode($,{object:C.unref(d)},null,8,["object"]),o.value&&O.helper?(C.openBlock(),C.createElementBlock("TresCameraHelper",{key:0,args:[o.value]},null,8,Xl)):C.createCommentVNode("",!0),C.createElementVNode("TresOrthographicCamera",{ref_key:"shadowCamera",ref:o,"rotation-x":Math.PI/2,args:[-y.value/2,y.value/2,x.value/2,-x.value/2,0,O.far]},null,8,Yl)],16)}}});let Pi=null;function Ql(b,s){return r=>{s&&s(r),b.draco&&(Pi||(Pi=new vl),Pi.setDecoderPath(b.decoderPath||"https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),r.setDRACOLoader(Pi))}}async function Hr(b,s={draco:!1},r){return await Me.useLoader(ha,b,Ql(s,r))}const Zl=C.defineComponent({__name:"component",props:{path:{},draco:{type:Boolean,default:!1},decoderPath:{default:"https://www.gstatic.com/draco/versioned/decoders/1.4.1/"}},async setup(b,{expose:s}){let r,n;const o=b,l=C.ref();s({value:l});const{scene:u}=([r,n]=C.withAsyncContext(()=>Hr(o.path,{draco:o.draco,decoderPath:o.decoderPath})),r=await r,n(),r);return(h,d)=>{const w=C.resolveComponent("primitive");return C.openBlock(),C.createBlock(w,C.mergeProps({ref_key:"modelRef",ref:l,object:C.unref(u)},h.$attrs),null,16,["object"])}}});async function eo(b){return await Me.useLoader(Ha,b)}const Wl=C.defineComponent({__name:"component",props:{path:{}},async setup(b,{expose:s}){let r,n;const o=b,l=C.ref();s({value:l});const u=([r,n]=C.withAsyncContext(()=>eo(o.path)),r=await r,n(),r);return(h,d)=>{const w=C.resolveComponent("primitive");return C.openBlock(),C.createBlock(w,C.mergeProps({ref_key:"modelRef",ref:l,object:C.unref(u)},h.$attrs),null,16,["object"])}}}),Jl=["target","auto-rotate","auto-rotate-speed","enable-damping","damping-factor","enable-pan","key-pan-speed","keys","max-azimuth-angle","min-azimuth-angle","max-polar-angle","min-polar-angle","min-distance","max-distance","min-zoom","max-zoom","touches","enable-zoom","zoom-speed","enable-rotate","rotate-speed","args"],Hl=C.defineComponent({__name:"OrbitControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{},target:{default:()=>[0,0,0]},enableDamping:{type:Boolean,default:!1},dampingFactor:{default:.05},autoRotate:{type:Boolean,default:!1},autoRotateSpeed:{default:2},enablePan:{type:Boolean,default:!0},keyPanSpeed:{default:7},keys:{},maxAzimuthAngle:{default:()=>1/0},minAzimuthAngle:{default:()=>-1/0},maxPolarAngle:{default:()=>Math.PI},minPolarAngle:{default:0},minDistance:{default:0},maxDistance:{default:()=>1/0},minZoom:{default:0},maxZoom:{default:()=>1/0},touches:{},enableZoom:{type:Boolean,default:!0},zoomSpeed:{default:1},enableRotate:{type:Boolean,default:!0},rotateSpeed:{default:1}},emits:["change","start","end"],setup(b,{emit:s}){const{state:r,setState:n,extend:o}=st(),l=C.ref(null);o({OrbitControls:Lr}),C.watch(l,d=>{u(),d&&b.makeDefault?n("controls",d):n("controls",null)});function u(){pt(l.value,"change",()=>s("change")),pt(l.value,"start",()=>s("start")),pt(l.value,"end",()=>s("end"))}const{onLoop:h}=Me.useRenderLoop();return h(()=>{l.value&&(b.enableDamping||b.autoRotate)&&l.value.update()}),C.onUnmounted(()=>{l.value&&l.value.dispose()}),(d,w)=>{var _;return C.unref(r).camera&&C.unref(r).renderer?(C.openBlock(),C.createElementBlock("TresOrbitControls",{key:0,ref_key:"controls",ref:l,target:d.target,"auto-rotate":d.autoRotate,"auto-rotate-speed":d.autoRotateSpeed,"enable-damping":d.enableDamping,"damping-factor":d.dampingFactor,"enable-pan":d.enablePan,"key-pan-speed":d.keyPanSpeed,keys:d.keys,"max-azimuth-angle":d.maxAzimuthAngle,"min-azimuth-angle":d.minAzimuthAngle,"max-polar-angle":d.maxPolarAngle,"min-polar-angle":d.minPolarAngle,"min-distance":d.minDistance,"max-distance":d.maxDistance,"min-zoom":d.minZoom,"max-zoom":d.maxZoom,touches:d.touches,"enable-zoom":d.enableZoom,"zoom-speed":d.zoomSpeed,"enable-rotate":d.enableRotate,"rotate-speed":d.rotateSpeed,args:[C.unref(r).camera||d.camera,((_=C.unref(r).renderer)==null?void 0:_.domElement)||d.domElement]},null,8,Jl)):C.createCommentVNode("",!0)}}});function ec(b,s){const r={};for(const n of s)Object.prototype.hasOwnProperty.call(b,n)&&(r[n]=b[n]);return r}function tc(b,s){const r=`set${s[0].toUpperCase()}${s.slice(1)}`;return b[r]!==void 0}const nc=C.defineComponent({__name:"TransformControls",props:{object:{},mode:{},enabled:{type:Boolean,default:!0},axis:{},translationSnap:{},rotationSnap:{},scaleSnap:{},space:{},size:{},showX:{type:Boolean},showY:{type:Boolean},showZ:{type:Boolean}},emits:["dragging","change","mouseDown","mouseUp","objectChange"],setup(b,{emit:s}){const r=b;let n=C.shallowRef();const{state:o}=st(),l=C.computed(()=>ec(r,["enabled","axis","mode","translationSnap","rotationSnap","scaleSnap","space","size","showX","showY","showZ"])),u=()=>s("change",n.value),h=()=>s("mouseDown",n.value),d=()=>s("mouseUp",n.value),w=()=>s("objectChange",n.value),_=x=>{o.controls&&(o.controls.enabled=!x.value),s("dragging",x.value)};function y(x){x.addEventListener("dragging-changed",_),x.addEventListener("change",u),x.addEventListener("mouseDown",h),x.addEventListener("mouseUp",d),x.addEventListener("objectChange",w)}return C.watchEffect(()=>{o.camera&&o.renderer&&o.scene&&r.object&&(n.value=new sa(o.camera,o.renderer.domElement),n.value.attach(r.object),o.scene.add(n.value),y(n.value))}),C.watch([l,n],([x,M])=>{if(x&&M)for(const T in x)if(!tc(M,T))M[T]=x[T];else{const D=`set${T[0].toUpperCase()}${T.slice(1)}`;typeof M[D]=="function"&&x[T]!==void 0&&M[D](x[T])}},{immediate:!0}),C.onUnmounted(()=>{n.value&&(n.value.removeEventListener("dragging-changed",_),n.value.removeEventListener("change",u),n.value.removeEventListener("mouseDown",h),n.value.removeEventListener("mouseUp",d),n.value.removeEventListener("objectChange",w))}),(x,M)=>C.renderSlot(x.$slots,"default")}}),ic=["args"],sc=C.defineComponent({__name:"PointerLockControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{},selector:{}},setup(b,{expose:s}){const r=b,{state:n,setState:o,extend:l}=st(),u=C.ref(null);let h;return l({PointerLockControls:pa}),C.watch(u,d=>{var _;d&&r.makeDefault?o("controls",d):o("controls",null);const w=document.getElementById(r.selector||"");h=w||((_=n.renderer)==null?void 0:_.domElement),pt(h,"click",()=>{var y;(y=u.value)==null||y.lock()})}),s({value:u}),(d,w)=>{var _;return C.unref(n).camera&&C.unref(n).renderer?(C.openBlock(),C.createElementBlock("TresPointerLockControls",{key:0,ref_key:"controls",ref:u,args:[C.unref(n).camera||d.camera,((_=C.unref(n).renderer)==null?void 0:_.domElement)||d.domElement]},null,8,ic)):C.createCommentVNode("",!0)}}}),rc=["args"],oc=C.defineComponent({__name:"MapControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{}},setup(b){const s=b,{state:r,setState:n,extend:o}=st(),l=C.ref(null);return o({MapControls:ua}),C.watch(l,u=>{u&&s.makeDefault?n("controls",u):n("controls",null)}),(u,h)=>{var d;return C.unref(r).camera&&C.unref(r).renderer?(C.openBlock(),C.createElementBlock("TresMapControls",{key:0,ref_key:"controls",ref:l,args:[C.unref(r).camera||u.camera,((d=C.unref(r).renderer)==null?void 0:d.domElement)||u.domElement]},null,8,rc)):C.createCommentVNode("",!0)}}});class ac extends f.MeshStandardMaterial{constructor(r={}){super(r);wr(this,"_time");wr(this,"_factor");this.setValues(r),this._time={value:0},this._factor={value:1}}onBeforeCompile(r){r.uniforms||(r.uniforms={}),r.uniforms.time=this._time,r.uniforms.factor=this._factor,r.vertexShader=`
81
+ `),E.fragmentShader=E.fragmentShader.replace("vec4( vec3( 1.0 - fragCoordZ ), opacity );","vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );")})});const M=new f.ShaderMaterial(Ka),O=new f.ShaderMaterial($a);O.depthTest=M.depthTest=!1;function I(E){!_.renderer||!o.value||(d.visible=!0,d.material=M,M.uniforms.tDiffuse.value=l.texture,M.uniforms.h.value=E/256,_.renderer.setRenderTarget(u),_.renderer.render(d,o.value),d.material=O,O.uniforms.tDiffuse.value=u.texture,O.uniforms.v.value=E/256,_.renderer.setRenderTarget(l),_.renderer.render(d,o.value),d.visible=!1)}const{onLoop:T}=Me.useRenderLoop();let F=0,z,N;return T(()=>{!o.value||_.scene===void 0||_.renderer===void 0||(r.frames===1/0||F<r.frames)&&(F++,z=_.scene.background,N=_.scene.overrideMaterial,s.value.visible=!1,_.scene.background=null,_.scene.overrideMaterial=w,_.renderer.setRenderTarget(l),_.renderer.render(_.scene,o.value),I(r.blur),r.smooth&&I(r.blur*.4),_.renderer.setRenderTarget(null),s.value.visible=!0,_.scene.background=z,_.scene.overrideMaterial=N)}),(E,Q)=>{const $=C.resolveComponent("primitive");return C.openBlock(),C.createElementBlock("TresGroup",C.mergeProps({ref_key:"groupRef",ref:s},E.$attrs),[C.createElementVNode("TresMesh",{scale:[1,-1,1],geometry:C.unref(h)},[C.createElementVNode("TresMeshBasicMaterial",{map:C.unref(l).texture,opacity:E.opacity,"depth-write":E.depthWrite,transparent:!0},null,8,$l)],8,Kl),C.createVNode($,{object:C.unref(d)},null,8,["object"]),o.value&&E.helper?(C.openBlock(),C.createElementBlock("TresCameraHelper",{key:0,args:[o.value]},null,8,Xl)):C.createCommentVNode("",!0),C.createElementVNode("TresOrthographicCamera",{ref_key:"shadowCamera",ref:o,"rotation-x":Math.PI/2,args:[-y.value/2,y.value/2,x.value/2,-x.value/2,0,E.far]},null,8,Yl)],16)}}});let Pi=null;function Ql(g,i){return r=>{i&&i(r),g.draco&&(Pi||(Pi=new vl),Pi.setDecoderPath(g.decoderPath||"https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),r.setDRACOLoader(Pi))}}async function Hr(g,i={draco:!1},r){return await Me.useLoader(ha,g,Ql(i,r))}const Zl=C.defineComponent({__name:"component",props:{path:{},draco:{type:Boolean,default:!1},decoderPath:{default:"https://www.gstatic.com/draco/versioned/decoders/1.4.1/"}},async setup(g,{expose:i}){let r,s;const o=g,l=C.ref();i({value:l});const{scene:u}=([r,s]=C.withAsyncContext(()=>Hr(o.path,{draco:o.draco,decoderPath:o.decoderPath})),r=await r,s(),r);return(h,d)=>{const w=C.resolveComponent("primitive");return C.openBlock(),C.createBlock(w,C.mergeProps({ref_key:"modelRef",ref:l,object:C.unref(u)},h.$attrs),null,16,["object"])}}});async function eo(g){return await Me.useLoader(Ha,g)}const Wl=C.defineComponent({__name:"component",props:{path:{}},async setup(g,{expose:i}){let r,s;const o=g,l=C.ref();i({value:l});const u=([r,s]=C.withAsyncContext(()=>eo(o.path)),r=await r,s(),r);return(h,d)=>{const w=C.resolveComponent("primitive");return C.openBlock(),C.createBlock(w,C.mergeProps({ref_key:"modelRef",ref:l,object:C.unref(u)},h.$attrs),null,16,["object"])}}}),Jl=["target","auto-rotate","auto-rotate-speed","enable-damping","damping-factor","enable-pan","key-pan-speed","keys","max-azimuth-angle","min-azimuth-angle","max-polar-angle","min-polar-angle","min-distance","max-distance","min-zoom","max-zoom","touches","enable-zoom","zoom-speed","enable-rotate","rotate-speed","args"],Hl=C.defineComponent({__name:"OrbitControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{},target:{default:()=>[0,0,0]},enableDamping:{type:Boolean,default:!1},dampingFactor:{default:.05},autoRotate:{type:Boolean,default:!1},autoRotateSpeed:{default:2},enablePan:{type:Boolean,default:!0},keyPanSpeed:{default:7},keys:{},maxAzimuthAngle:{default:()=>1/0},minAzimuthAngle:{default:()=>-1/0},maxPolarAngle:{default:()=>Math.PI},minPolarAngle:{default:0},minDistance:{default:0},maxDistance:{default:()=>1/0},minZoom:{default:0},maxZoom:{default:()=>1/0},touches:{},enableZoom:{type:Boolean,default:!0},zoomSpeed:{default:1},enableRotate:{type:Boolean,default:!0},rotateSpeed:{default:1}},emits:["change","start","end"],setup(g,{emit:i}){const{state:r,setState:s,extend:o}=rt(),l=C.ref(null);o({OrbitControls:Lr}),C.watch(l,d=>{u(),d&&g.makeDefault?s("controls",d):s("controls",null)});function u(){Oe(l.value,"change",()=>i("change")),Oe(l.value,"start",()=>i("start")),Oe(l.value,"end",()=>i("end"))}const{onLoop:h}=Me.useRenderLoop();return h(()=>{l.value&&(g.enableDamping||g.autoRotate)&&l.value.update()}),C.onUnmounted(()=>{l.value&&l.value.dispose()}),(d,w)=>{var _;return C.unref(r).camera&&C.unref(r).renderer?(C.openBlock(),C.createElementBlock("TresOrbitControls",{key:0,ref_key:"controls",ref:l,target:d.target,"auto-rotate":d.autoRotate,"auto-rotate-speed":d.autoRotateSpeed,"enable-damping":d.enableDamping,"damping-factor":d.dampingFactor,"enable-pan":d.enablePan,"key-pan-speed":d.keyPanSpeed,keys:d.keys,"max-azimuth-angle":d.maxAzimuthAngle,"min-azimuth-angle":d.minAzimuthAngle,"max-polar-angle":d.maxPolarAngle,"min-polar-angle":d.minPolarAngle,"min-distance":d.minDistance,"max-distance":d.maxDistance,"min-zoom":d.minZoom,"max-zoom":d.maxZoom,touches:d.touches,"enable-zoom":d.enableZoom,"zoom-speed":d.zoomSpeed,"enable-rotate":d.enableRotate,"rotate-speed":d.rotateSpeed,args:[C.unref(r).camera||d.camera,((_=C.unref(r).renderer)==null?void 0:_.domElement)||d.domElement]},null,8,Jl)):C.createCommentVNode("",!0)}}}),ec=["object","args","mode","enabled","axis","translation-snap","rotation-snap","scale-snap","space","size","show-x","show-y","show-z"],tc=C.defineComponent({__name:"TransformControls",props:{object:{},mode:{default:"translate"},enabled:{type:Boolean,default:!0},axis:{default:"XYZ"},translationSnap:{default:null},rotationSnap:{default:null},scaleSnap:{default:null},space:{default:"world"},size:{default:1},showX:{type:Boolean,default:!0},showY:{type:Boolean,default:!0},showZ:{type:Boolean,default:!0}},emits:["dragging","change","mouseDown","mouseUp","objectChange"],setup(g,{emit:i}){const r=C.shallowRef(),{state:s,extend:o}=rt();o({TransformControls:sa});const l=h=>{s.controls&&(s.controls.enabled=!h.value),i("dragging",h.value)};function u(){Oe(r.value,"change",()=>i("change")),Oe(r.value,"dragging-changed",l),Oe(r.value,"mouseDown",()=>i("mouseDown")),Oe(r.value,"mouseUp",()=>i("mouseUp")),Oe(r.value,"objectChange",()=>i("objectChange"))}return C.watchEffect(()=>{r.value&&u()}),C.onUnmounted(()=>{r.value&&r.value.dispose()}),(h,d)=>C.unref(s).camera&&C.unref(s).renderer?(C.openBlock(),C.createElementBlock("TresTransformControls",{key:0,ref_key:"controls",ref:r,object:h.object,args:[C.unref(s).camera,C.unref(s).renderer.domElement],mode:h.mode,enabled:h.enabled,axis:h.axis,"translation-snap":h.translationSnap,"rotation-snap":h.rotationSnap,"scale-snap":h.scaleSnap,space:h.space,size:h.size,"show-x":h.showX,"show-y":h.showY,"show-z":h.showZ,visible:!0},null,8,ec)):C.createCommentVNode("",!0)}}),nc=["args"],ic=C.defineComponent({__name:"PointerLockControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{},selector:{}},setup(g,{expose:i}){const r=g,{state:s,setState:o,extend:l}=rt(),u=C.ref(null);let h;return l({PointerLockControls:pa}),C.watch(u,d=>{var _;d&&r.makeDefault?o("controls",d):o("controls",null);const w=document.getElementById(r.selector||"");h=w||((_=s.renderer)==null?void 0:_.domElement),Oe(h,"click",()=>{var y;(y=u.value)==null||y.lock()})}),i({value:u}),(d,w)=>{var _;return C.unref(s).camera&&C.unref(s).renderer?(C.openBlock(),C.createElementBlock("TresPointerLockControls",{key:0,ref_key:"controls",ref:u,args:[C.unref(s).camera||d.camera,((_=C.unref(s).renderer)==null?void 0:_.domElement)||d.domElement]},null,8,nc)):C.createCommentVNode("",!0)}}}),sc=["args"],rc=C.defineComponent({__name:"MapControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{}},setup(g){const i=g,{state:r,setState:s,extend:o}=rt(),l=C.ref(null);return o({MapControls:ua}),C.watch(l,u=>{u&&i.makeDefault?s("controls",u):s("controls",null)}),(u,h)=>{var d;return C.unref(r).camera&&C.unref(r).renderer?(C.openBlock(),C.createElementBlock("TresMapControls",{key:0,ref_key:"controls",ref:l,args:[C.unref(r).camera||u.camera,((d=C.unref(r).renderer)==null?void 0:d.domElement)||u.domElement]},null,8,sc)):C.createCommentVNode("",!0)}}});class oc extends f.MeshStandardMaterial{constructor(r={}){super(r);wr(this,"_time");wr(this,"_factor");this.setValues(r),this._time={value:0},this._factor={value:1}}onBeforeCompile(r){r.uniforms||(r.uniforms={}),r.uniforms.time=this._time,r.uniforms.factor=this._factor,r.vertexShader=`
82
82
  uniform float time;
83
83
  uniform float factor;
84
84
  ${r.vertexShader}
@@ -87,7 +87,7 @@
87
87
  float s = sin( theta );
88
88
  mat3 m = mat3( c, 0, s, 0, 1, 0, -s, 0, c );
89
89
  vec3 transformed = vec3( position ) * m;
90
- vNormal = vNormal * m;`)}get time(){return this._time.value}set time(r){this._time.value=r}get factor(){return this._factor.value}set factor(r){this._factor.value=r}}const lc=["factor"],cc=C.defineComponent({__name:"index",props:{speed:{default:1},factor:{default:1}},setup(b){const s=b,r=C.shallowRef(),{extend:n}=st();n({MeshWobbleMaterial:ac});const{onLoop:o}=Me.useRenderLoop();return o(({elapsed:l})=>{r.value&&(r.value.time=l*(s==null?void 0:s.speed))}),(l,u)=>(C.openBlock(),C.createElementBlock("TresMeshWobbleMaterial",C.mergeProps({ref_key:"materialRef",ref:r,factor:l.factor},l.$attrs),null,16,lc))}}),pc=["args"],uc=["color"],hc=C.defineComponent({__name:"Box",props:{args:{default:()=>[1,1,1]},color:{default:"0xffffff"}},setup(b,{expose:s}){const r=C.shallowRef();return s({value:r}),(n,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"boxRef",ref:r},n.$attrs),[C.createElementVNode("TresBoxGeometry",{args:n.args},null,8,pc),C.renderSlot(n.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:n.color},null,8,uc)])],16))}}),dc=["args"],mc=["color"],fc=C.defineComponent({__name:"Circle",props:{args:{default:()=>[1,32,0,Math.PI*2]},color:{default:"0xffffff"}},setup(b,{expose:s}){const r=C.shallowRef();return s({value:r}),(n,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"circleRef",ref:r},n.$attrs),[C.createElementVNode("TresCircleGeometry",{args:n.args},null,8,dc),C.renderSlot(n.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:n.color},null,8,mc)])],16))}}),vc=["args"],bc=["color"],gc=C.defineComponent({__name:"Cone",props:{args:{default:()=>[1,1,12,!1,0,Math.PI*2]},color:{default:"0xffffff"}},setup(b,{expose:s}){const r=C.shallowRef();return s({value:r}),(n,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"coneRef",ref:r},n.$attrs),[C.createElementVNode("TresConeGeometry",{args:n.args},null,8,vc),C.renderSlot(n.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:n.color},null,8,bc)])],16))}}),wc=["args"],_c=["color"],yc=C.defineComponent({__name:"Dodecahedron",props:{args:{default:()=>[1,0]},color:{default:"0xffffff"}},setup(b,{expose:s}){const r=C.shallowRef();return s({value:r}),(n,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"dodecahedronRef",ref:r},n.$attrs),[C.createElementVNode("TresDodecahedronGeometry",{args:n.args},null,8,wc),C.renderSlot(n.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:n.color},null,8,_c)])],16))}}),xc=["args"],Cc=["color"],Pc=C.defineComponent({__name:"Icosahedron",props:{args:{default:()=>[1,0]},color:{default:"0xffffff"}},setup(b,{expose:s}){const r=C.shallowRef();return s({value:r}),(n,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"icosahedronRef",ref:r},n.$attrs),[C.createElementVNode("TresIcosahedronGeometry",{args:n.args},null,8,xc),C.renderSlot(n.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:n.color},null,8,Cc)])],16))}}),kc=["args"],Mc=["color"],Ac=C.defineComponent({__name:"Octahedron",props:{args:{default:()=>[1,0]},color:{default:"0xffffff"}},setup(b,{expose:s}){const r=C.shallowRef();return s({value:r}),(n,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"octahedronRef",ref:r},n.$attrs),[C.createElementVNode("TresOctahedronGeometry",{args:n.args},null,8,kc),C.renderSlot(n.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:n.color},null,8,Mc)])],16))}}),Sc=["rotation"],Lc=["args"],Vc=["color"],Dc=C.defineComponent({__name:"Plane",props:{args:{default:()=>[1,1]},color:{default:"0xffffff"}},setup(b,{expose:s}){const r=C.shallowRef();return s({value:r}),(n,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"planeRef",ref:r,rotation:[-Math.PI/2,0,0]},n.$attrs),[C.createElementVNode("TresPlaneGeometry",{args:n.args},null,8,Lc),C.renderSlot(n.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:n.color},null,8,Vc)])],16,Sc))}}),Ic=["args"],Tc=["color"],Ec=C.defineComponent({__name:"Ring",props:{args:{default:()=>[.5,1,32]},color:{default:"0xffffff"}},setup(b,{expose:s}){const r=C.shallowRef();return s({value:r}),(n,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"ringRef",ref:r},n.$attrs),[C.createElementVNode("TresRingGeometry",{args:n.args},null,8,Ic),C.renderSlot(n.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:n.color},null,8,Tc)])],16))}}),Oc=["args"],Bc=["color"],Nc=C.defineComponent({__name:"Sphere",props:{args:{default:()=>[2,32,16]},color:{default:"0xffffff"}},setup(b,{expose:s}){const r=C.shallowRef();return s({value:r}),(n,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"sphereRef",ref:r},n.$attrs),[C.createElementVNode("TresSphereGeometry",{args:n.args},null,8,Oc),C.renderSlot(n.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:n.color},null,8,Bc)])],16))}}),Fc=["rotation"],zc=["args"],jc=["color"],Uc=C.defineComponent({__name:"Tetrahedron",props:{args:{default:()=>[1,0]},color:{default:"0xffffff"}},setup(b,{expose:s}){const r=C.shallowRef();return s({value:r}),(n,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"tetrahedronRef",ref:r,rotation:[-Math.PI/2,0,0]},n.$attrs),[C.createElementVNode("TresTetrahedronGeometry",{args:n.args},null,8,zc),C.renderSlot(n.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:n.color},null,8,jc)])],16,Fc))}}),Rc=["args"],Gc=["color"],Kc=C.defineComponent({__name:"Torus",props:{args:{default:()=>[1,1,16,80]},color:{default:"0xffffff"}},setup(b,{expose:s}){const r=C.shallowRef();return s({value:r}),(n,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"torusRef",ref:r},n.$attrs),[C.createElementVNode("TresTorusGeometry",{args:n.args},null,8,Rc),C.renderSlot(n.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:n.color},null,8,Gc)])],16))}}),$c=["args"],Xc=["color"],Yc=C.defineComponent({__name:"TorusKnot",props:{args:{default:()=>[1,.4,64,8]},color:{default:"0xffffff"}},setup(b,{expose:s}){const r=C.shallowRef();return s({value:r}),(n,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"torusKnotRef",ref:r},n.$attrs),[C.createElementVNode("TresTorusKnotGeometry",{args:n.args},null,8,$c),C.renderSlot(n.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:n.color},null,8,Xc)])],16))}}),qc=["args"],Qc=["color"],Zc=C.defineComponent({__name:"Tube",props:{args:{default:()=>[new f.QuadraticBezierCurve3(new f.Vector3(-1,0,0),new f.Vector3(0,1,0),new f.Vector3(1,0,0)),20,.2,8,!1]},color:{default:"0xffffff"}},setup(b,{expose:s}){const r=C.shallowRef();return s({value:r}),(n,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"tubeRef",ref:r},n.$attrs),[C.createElementVNode("TresTubeGeometry",{args:n.args},null,8,qc),C.renderSlot(n.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:n.color},null,8,Qc)])],16))}});var fs={exports:{}};/*! Tweakpane 3.1.9 (c) 2016 cocopon, licensed under the MIT license. */(function(b,s){(function(r,n){n(s)})(Yr,function(r){class n{constructor(e){const[t,c]=e.split("-"),g=t.split(".");this.major=parseInt(g[0],10),this.minor=parseInt(g[1],10),this.patch=parseInt(g[2],10),this.prerelease=c??null}toString(){const e=[this.major,this.minor,this.patch].join(".");return this.prerelease!==null?[e,this.prerelease].join("-"):e}}class o{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 l{constructor(e){this.target=e}}class u extends l{constructor(e,t,c,g){super(e),this.value=t,this.presetKey=c,this.last=g??!0}}class h extends l{constructor(e,t,c){super(e),this.value=t,this.presetKey=c}}class d extends l{constructor(e,t){super(e),this.expanded=t}}class w extends l{constructor(e,t){super(e),this.index=t}}function _(i){return i}function y(i){return i==null}function x(i,e){if(i.length!==e.length)return!1;for(let t=0;t<i.length;t++)if(i[t]!==e[t])return!1;return!0}function M(i,e){let t=i;do{const c=Object.getOwnPropertyDescriptor(t,e);if(c&&(c.set!==void 0||c.writable===!0))return!0;t=Object.getPrototypeOf(t)}while(t!==null);return!1}const T={alreadydisposed:()=>"View has been already disposed",invalidparams:i=>`Invalid parameters for '${i.name}'`,nomatchingcontroller:i=>`No matching controller for '${i.key}'`,nomatchingview:i=>`No matching view for '${JSON.stringify(i.params)}'`,notbindable:()=>"Value is not bindable",propertynotfound:i=>`Property '${i.name}' not found`,shouldneverhappen:()=>"This error should never happen"};class D{static alreadyDisposed(){return new D({type:"alreadydisposed"})}static notBindable(){return new D({type:"notbindable"})}static propertyNotFound(e){return new D({type:"propertynotfound",context:{name:e}})}static shouldNeverHappen(){return new D({type:"shouldneverhappen"})}constructor(e){var t;this.message=(t=T[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}}class E{constructor(e,t,c){this.obj_=e,this.key_=t,this.presetKey_=c??t}static isBindable(e){return!(e===null||typeof e!="object"&&typeof e!="function")}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 c=this.read();if(!E.isBindable(c))throw D.notBindable();if(!(e in c))throw D.propertyNotFound(e);c[e]=t}}class F extends o{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 c=t.bind(this);return this.controller_.valueController.emitter.on(e,()=>{c(new l(this))}),this}}class z{constructor(){this.observers_={}}on(e,t){let c=this.observers_[e];return c||(c=this.observers_[e]=[]),c.push({handler:t}),this}off(e,t){const c=this.observers_[e];return c&&(this.observers_[e]=c.filter(g=>g.handler!==t)),this}emit(e,t){const c=this.observers_[e];c&&c.forEach(g=>{g.handler(t)})}}const N="tp";function O(i){return(t,c)=>[N,"-",i,"v",t?`_${t}`:"",c?`-${c}`:""].join("")}function Q(i,e){return t=>e(i(t))}function $(i){return i.rawValue}function U(i,e){i.emitter.on("change",Q($,e)),e(i.rawValue)}function j(i,e,t){U(i.value(e),t)}function X(i,e,t){t?i.classList.add(e):i.classList.remove(e)}function Y(i,e){return t=>{X(i,e,t)}}function Z(i,e){U(i,t=>{e.textContent=t??""})}const ue=O("btn");class ge{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(ue()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("button");c.classList.add(ue("b")),t.viewProps.bindDisabled(c),this.element.appendChild(c),this.buttonElement=c;const g=e.createElement("div");g.classList.add(ue("t")),Z(t.props.value("title"),g),this.buttonElement.appendChild(g)}}class pe{constructor(e,t){this.emitter=new z,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new ge(e,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class me{constructor(e,t){var c;this.constraint_=t==null?void 0:t.constraint,this.equals_=(c=t==null?void 0:t.equals)!==null&&c!==void 0?c:(g,k)=>g===k,this.emitter=new z,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 c=t??{forceEmit:!1,last:!0},g=this.constraint_?this.constraint_.constrain(e):e,k=this.rawValue_;this.equals_(k,g)&&!c.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=g,this.emitter.emit("change",{options:c,previousRawValue:k,rawValue:g,sender:this}))}}class he{constructor(e){this.emitter=new z,this.value_=e}get rawValue(){return this.value_}set rawValue(e){this.setRawValue(e,{forceEmit:!1,last:!0})}setRawValue(e,t){const c=t??{forceEmit:!1,last:!0},g=this.value_;g===e&&!c.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.value_=e,this.emitter.emit("change",{options:c,previousRawValue:g,rawValue:this.value_,sender:this}))}}function te(i,e){const t=e==null?void 0:e.constraint,c=e==null?void 0:e.equals;return!t&&!c?new he(i):new me(i,e)}class q{constructor(e){this.emitter=new z,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((c,g)=>Object.assign(c,{[g]:te(e[g])}),{})}static fromObject(e){const t=this.createCore(e);return new q(t)}get(e){return this.valMap_[e].rawValue}set(e,t){this.valMap_[e].rawValue=t}value(e){return this.valMap_[e]}}function Ce(i,e){const c=Object.keys(e).reduce((g,k)=>{if(g===void 0)return;const L=e[k],R=L(i[k]);return R.succeeded?Object.assign(Object.assign({},g),{[k]:R.value}):void 0},{});return c}function fe(i,e){return i.reduce((t,c)=>{if(t===void 0)return;const g=e(c);if(!(!g.succeeded||g.value===void 0))return[...t,g.value]},[])}function le(i){return i===null?!1:typeof i=="object"}function ie(i){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 c=i(t);return c!==void 0?{succeeded:!0,value:c}:{succeeded:!1,value:void 0}}}function be(i){return{custom:e=>ie(e)(i),boolean:ie(e=>typeof e=="boolean"?e:void 0)(i),number:ie(e=>typeof e=="number"?e:void 0)(i),string:ie(e=>typeof e=="string"?e:void 0)(i),function:ie(e=>typeof e=="function"?e:void 0)(i),constant:e=>ie(t=>t===e?e:void 0)(i),raw:ie(e=>e)(i),object:e=>ie(t=>{if(le(t))return Ce(t,e)})(i),array:e=>ie(t=>{if(Array.isArray(t))return fe(t,e)})(i)}}const V={optional:be(!0),required:be(!1)};function ce(i,e){const t=V.required.object(e)(i);return t.succeeded?t.value:void 0}function Ve(i){console.warn([`Missing '${i.key}' of ${i.target} in ${i.place}.`,"Please rebuild plugins with the latest core package."].join(" "))}function Te(i){return i&&i.parentElement&&i.parentElement.removeChild(i),null}class _e{constructor(e){this.value_=e}static create(e){return[new _e(e),(t,c)=>{e.setRawValue(t,c)}]}get emitter(){return this.value_.emitter}get rawValue(){return this.value_.rawValue}}const Ze=O("");function gn(i,e){return Y(i,Ze(void 0,e))}class Ue extends q{constructor(e){var t;super(e),this.onDisabledChange_=this.onDisabledChange_.bind(this),this.onParentChange_=this.onParentChange_.bind(this),this.onParentGlobalDisabledChange_=this.onParentGlobalDisabledChange_.bind(this),[this.globalDisabled_,this.setGlobalDisabled_]=_e.create(te(this.getGlobalDisabled_())),this.value("disabled").emitter.on("change",this.onDisabledChange_),this.value("parent").emitter.on("change",this.onParentChange_),(t=this.get("parent"))===null||t===void 0||t.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_)}static create(e){var t,c,g;const k=e??{};return new Ue(q.createCore({disabled:(t=k.disabled)!==null&&t!==void 0?t:!1,disposed:!1,hidden:(c=k.hidden)!==null&&c!==void 0?c:!1,parent:(g=k.parent)!==null&&g!==void 0?g:null}))}get globalDisabled(){return this.globalDisabled_}bindClassModifiers(e){U(this.globalDisabled_,gn(e,"disabled")),j(this,"hidden",gn(e,"hidden"))}bindDisabled(e){U(this.globalDisabled_,t=>{e.disabled=t})}bindTabIndex(e){U(this.globalDisabled_,t=>{e.tabIndex=t?-1:0})}handleDispose(e){this.value("disposed").emitter.on("change",t=>{t&&e()})}getGlobalDisabled_(){const e=this.get("parent");return(e?e.globalDisabled.rawValue:!1)||this.get("disabled")}updateGlobalDisabled_(){this.setGlobalDisabled_(this.getGlobalDisabled_())}onDisabledChange_(){this.updateGlobalDisabled_()}onParentGlobalDisabledChange_(){this.updateGlobalDisabled_()}onParentChange_(e){var t;const c=e.previousRawValue;c==null||c.globalDisabled.emitter.off("change",this.onParentGlobalDisabledChange_),(t=this.get("parent"))===null||t===void 0||t.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_),this.updateGlobalDisabled_()}}function wn(){return["veryfirst","first","last","verylast"]}const $t=O(""),rt={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class vt{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",()=>{wn().forEach(c=>{t.classList.remove($t(void 0,rt[c]))}),this.blade.get("positions").forEach(c=>{t.classList.add($t(void 0,rt[c]))})}),this.viewProps.handleDispose(()=>{Te(t)})}get parent(){return this.parent_}set parent(e){if(this.parent_=e,!("parent"in this.viewProps.valMap_)){Ve({key:"parent",target:Ue.name,place:"BladeController.parent"});return}this.viewProps.set("parent",this.parent_?this.parent_.viewProps:null)}}const Oe="http://www.w3.org/2000/svg";function We(i){i.offsetHeight}function Xt(i,e){const t=i.style.transition;i.style.transition="none",e(),i.style.transition=t}function ot(i){return i.ontouchstart!==void 0}function _n(){return globalThis}function $n(){return _n().document}function yn(i){const e=i.ownerDocument.defaultView;return e&&"document"in e?i.getContext("2d",{willReadFrequently:!0}):null}const xn={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 ut(i,e){const t=i.createElementNS(Oe,"svg");return t.innerHTML=xn[e],t}function bt(i,e,t){i.insertBefore(e,i.children[t])}function Cn(i){i.parentElement&&i.parentElement.removeChild(i)}function Yt(i){for(;i.children.length>0;)i.removeChild(i.children[0])}function Pn(i){for(;i.childNodes.length>0;)i.removeChild(i.childNodes[0])}function ht(i){return i.relatedTarget?i.relatedTarget:"explicitOriginalTarget"in i?i.explicitOriginalTarget:null}const at=O("lbl");function gt(i,e){const t=i.createDocumentFragment();return e.split(`
91
- `).map(g=>i.createTextNode(g)).forEach((g,k)=>{k>0&&t.appendChild(i.createElement("br")),t.appendChild(g)}),t}class I{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(at()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(at("l")),j(t.props,"label",k=>{y(k)?this.element.classList.add(at(void 0,"nol")):(this.element.classList.remove(at(void 0,"nol")),Pn(c),c.appendChild(gt(e,k)))}),this.element.appendChild(c),this.labelElement=c;const g=e.createElement("div");g.classList.add(at("v")),this.element.appendChild(g),this.valueElement=g}}class K extends vt{constructor(e,t){const c=t.valueController.viewProps;super(Object.assign(Object.assign({},t),{view:new I(e,{props:t.props,viewProps:c}),viewProps:c})),this.props=t.props,this.valueController=t.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}const H={id:"button",type:"blade",accept(i){const e=V,t=ce(i,{title:e.required.string,view:e.required.constant("button"),label:e.optional.string});return t?{params:t}:null},controller(i){return new K(i.document,{blade:i.blade,props:q.fromObject({label:i.params.label}),valueController:new pe(i.document,{props:q.fromObject({title:i.params.title}),viewProps:i.viewProps})})},api(i){return!(i.controller instanceof K)||!(i.controller.valueController instanceof pe)?null:new F(i.controller)}};class se extends vt{constructor(e){super(e),this.value=e.value}}function ye(){return new q({positions:te([],{equals:x})})}class De extends q{constructor(e){super(e)}static create(e){const t={completed:!0,expanded:e,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null},c=q.createCore(t);return new De(c)}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")&&!y(e)?`${e}px`:"auto"}bindExpandedClass(e,t){const c=()=>{this.styleExpanded?e.classList.add(t):e.classList.remove(t)};j(this,"expanded",c),j(this,"temporaryExpanded",c)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function Dt(i,e){let t=0;return Xt(e,()=>{i.set("expandedHeight",null),i.set("temporaryExpanded",!0),We(e),t=e.clientHeight,i.set("temporaryExpanded",null),We(e)}),t}function qt(i,e){e.style.height=i.styleHeight}function Be(i,e){i.value("expanded").emitter.on("beforechange",()=>{if(i.set("completed",!1),y(i.get("expandedHeight"))){const t=Dt(i,e);t>0&&i.set("expandedHeight",t)}i.set("shouldFixHeight",!0),We(e)}),i.emitter.on("change",()=>{qt(i,e)}),qt(i,e),e.addEventListener("transitionend",t=>{t.propertyName==="height"&&i.cleanUpTransition()})}class Ne extends o{constructor(e,t){super(e),this.rackApi_=t}}function bs(i,e){return i.addBlade(Object.assign(Object.assign({},e),{view:"button"}))}function gs(i,e){return i.addBlade(Object.assign(Object.assign({},e),{view:"folder"}))}function ws(i,e){const t=e??{};return i.addBlade(Object.assign(Object.assign({},t),{view:"separator"}))}function Xn(i,e){return i.addBlade(Object.assign(Object.assign({},e),{view:"tab"}))}class wt{constructor(e){this.emitter=new z,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 D.shouldNeverHappen();const c=t!==void 0?t:this.items_.length;this.items_.splice(c,0,e),this.cache_.add(e);const g=this.extract_(e);g&&(g.emitter.on("add",this.onSubListAdd_),g.emitter.on("remove",this.onSubListRemove_),g.allItems().forEach(k=>{this.cache_.add(k)})),this.emitter.emit("add",{index:c,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 c=this.extract_(e);c&&(c.emitter.off("add",this.onSubListAdd_),c.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 Yn extends o{constructor(e){super(e),this.onBindingChange_=this.onBindingChange_.bind(this),this.emitter_=new z,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 c=t.bind(this);return this.emitter_.on(e,g=>{c(g.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 Ee extends K{constructor(e,t){super(e,t),this.binding=t.binding}}class qn extends o{constructor(e){super(e),this.onBindingUpdate_=this.onBindingUpdate_.bind(this),this.emitter_=new z,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 c=t.bind(this);return this.emitter_.on(e,g=>{c(g.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 Je extends K{constructor(e,t){super(e,t),this.binding=t.binding,this.viewProps.bindDisabled(this.binding.ticker),this.viewProps.handleDispose(()=>{this.binding.dispose()})}}function Mi(i){return i instanceof kn?i.apiSet_:i instanceof Ne?i.rackApi_.apiSet_:null}function Qt(i,e){const t=i.find(c=>c.controller_===e);if(!t)throw D.shouldNeverHappen();return t}function Ai(i,e,t){if(!E.isBindable(i))throw D.notBindable();return new E(i,e,t)}class kn extends o{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 z,this.apiSet_=new wt(Mi),this.pool_=t;const c=this.controller_.rack;c.emitter.on("add",this.onRackAdd_),c.emitter.on("remove",this.onRackRemove_),c.emitter.on("inputchange",this.onRackInputChange_),c.emitter.on("monitorupdate",this.onRackMonitorUpdate_),c.children.forEach(g=>{this.setUpApi_(g)})}get children(){return this.controller_.rack.children.map(e=>Qt(this.apiSet_,e))}addInput(e,t,c){const g=c??{},k=this.controller_.view.element.ownerDocument,L=this.pool_.createInput(k,Ai(e,t,g.presetKey),g),R=new Yn(L);return this.add(R,g.index)}addMonitor(e,t,c){const g=c??{},k=this.controller_.view.element.ownerDocument,L=this.pool_.createMonitor(k,Ai(e,t),g),R=new qn(L);return this.add(R,g.index)}addFolder(e){return gs(this,e)}addButton(e){return bs(this,e)}addSeparator(e){return ws(this,e)}addTab(e){return Xn(this,e)}add(e,t){this.controller_.rack.add(e.controller_,t);const c=this.apiSet_.find(g=>g.controller_===e.controller_);return c&&this.apiSet_.remove(c),this.apiSet_.add(e),e}remove(e){this.controller_.rack.remove(e.controller_)}addBlade(e){const t=this.controller_.view.element.ownerDocument,c=this.pool_.createBlade(t,e),g=this.pool_.createBladeApi(c);return this.add(g,e.index)}on(e,t){const c=t.bind(this);return this.emitter_.on(e,g=>{c(g.event)}),this}setUpApi_(e){this.apiSet_.find(c=>c.controller_===e)||this.apiSet_.add(this.pool_.createBladeApi(e))}onRackAdd_(e){this.setUpApi_(e.bladeController)}onRackRemove_(e){if(e.isRoot){const t=Qt(this.apiSet_,e.bladeController);this.apiSet_.remove(t)}}onRackInputChange_(e){const t=e.bladeController;if(t instanceof Ee){const c=Qt(this.apiSet_,t),g=t.binding;this.emitter_.emit("change",{event:new u(c,g.target.read(),g.target.presetKey,e.options.last)})}else if(t instanceof se){const c=Qt(this.apiSet_,t);this.emitter_.emit("change",{event:new u(c,t.value.rawValue,void 0,e.options.last)})}}onRackMonitorUpdate_(e){if(!(e.bladeController instanceof Je))throw D.shouldNeverHappen();const t=Qt(this.apiSet_,e.bladeController),c=e.bladeController.binding;this.emitter_.emit("update",{event:new h(t,c.target.read(),c.target.presetKey)})}}class Qn extends Ne{constructor(e,t){super(e,new kn(e.rackController,t)),this.emitter_=new z,this.controller_.foldable.value("expanded").emitter.on("change",c=>{this.emitter_.emit("fold",{event:new d(this,c.sender.rawValue)})}),this.rackApi_.on("change",c=>{this.emitter_.emit("change",{event:c})}),this.rackApi_.on("update",c=>{this.emitter_.emit("update",{event:c})})}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,c){return this.rackApi_.addInput(e,t,c)}addMonitor(e,t,c){return this.rackApi_.addMonitor(e,t,c)}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 c=t.bind(this);return this.emitter_.on(e,g=>{c(g.event)}),this}}class Zn extends vt{constructor(e){super({blade:e.blade,view:e.view,viewProps:e.rackController.viewProps}),this.rackController=e.rackController}}class _s{constructor(e,t){const c=O(t.viewName);this.element=e.createElement("div"),this.element.classList.add(c()),t.viewProps.bindClassModifiers(this.element)}}function ys(i,e){for(let t=0;t<i.length;t++){const c=i[t];if(c instanceof Ee&&c.binding===e)return c}return null}function xs(i,e){for(let t=0;t<i.length;t++){const c=i[t];if(c instanceof Je&&c.binding===e)return c}return null}function Cs(i,e){for(let t=0;t<i.length;t++){const c=i[t];if(c instanceof se&&c.value===e)return c}return null}function Wn(i){return i instanceof Zt?i.rack:i instanceof Zn?i.rackController.rack:null}function Ps(i){const e=Wn(i);return e?e.bcSet_:null}class ks{constructor(e){var t,c;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 z,this.blade_=(t=e.blade)!==null&&t!==void 0?t:null,(c=this.blade_)===null||c===void 0||c.value("positions").emitter.on("change",this.onBladePositionsChange_),this.viewProps=e.viewProps,this.bcSet_=new wt(Ps),this.bcSet_.emitter.on("add",this.onSetAdd_),this.bcSet_.emitter.on("remove",this.onSetRemove_)}get children(){return this.bcSet_.items}add(e,t){var c;(c=e.parent)===null||c===void 0||c.remove(e),M(e,"parent")?e.parent=this:(e.parent_=this,Ve({key:"parent",target:"BladeController",place:"BladeRack.add"})),this.bcSet_.add(e,t)}remove(e){M(e,"parent")?e.parent=null:(e.parent_=null,Ve({key:"parent",target:"BladeController",place:"BladeRack.remove"})),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 c=e.item;if(c.viewProps.emitter.on("change",this.onChildViewPropsChange_),c.blade.value("positions").emitter.on("change",this.onChildPositionsChange_),c.viewProps.handleDispose(this.onChildDispose_),c instanceof Ee)c.binding.emitter.on("change",this.onChildInputChange_);else if(c instanceof Je)c.binding.emitter.on("update",this.onChildMonitorUpdate_);else if(c instanceof se)c.value.emitter.on("change",this.onChildValueChange_);else{const g=Wn(c);if(g){const k=g.emitter;k.on("layout",this.onDescendantLayout_),k.on("inputchange",this.onDescendantInputChange_),k.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 c=e.item;if(c instanceof Ee)c.binding.emitter.off("change",this.onChildInputChange_);else if(c instanceof Je)c.binding.emitter.off("update",this.onChildMonitorUpdate_);else if(c instanceof se)c.value.emitter.off("change",this.onChildValueChange_);else{const g=Wn(c);if(g){const k=g.emitter;k.off("layout",this.onDescendantLayout_),k.off("inputchange",this.onDescendantInputChange_),k.off("monitorupdate",this.onDescendantMonitorUpdate_)}}}updatePositions_(){const e=this.bcSet_.items.filter(g=>!g.viewProps.get("hidden")),t=e[0],c=e[e.length-1];this.bcSet_.items.forEach(g=>{const k=[];g===t&&(k.push("first"),(!this.blade_||this.blade_.get("positions").includes("veryfirst"))&&k.push("veryfirst")),g===c&&(k.push("last"),(!this.blade_||this.blade_.get("positions").includes("verylast"))&&k.push("verylast")),g.blade.set("positions",k)})}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=ys(this.find(Ee),e.sender);if(!t)throw D.alreadyDisposed();this.emitter.emit("inputchange",{bladeController:t,options:e.options,sender:this})}onChildMonitorUpdate_(e){const t=xs(this.find(Je),e.sender);if(!t)throw D.alreadyDisposed();this.emitter.emit("monitorupdate",{bladeController:t,sender:this})}onChildValueChange_(e){const t=Cs(this.find(se),e.sender);if(!t)throw D.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 Zt extends vt{constructor(e,t){super(Object.assign(Object.assign({},t),{view:new _s(e,{viewName:"brk",viewProps:t.viewProps})})),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this);const c=new ks({blade:t.root?void 0:t.blade,viewProps:t.viewProps});c.emitter.on("add",this.onRackAdd_),c.emitter.on("remove",this.onRackRemove_),this.rack=c,this.viewProps.handleDispose(()=>{for(let g=this.rack.children.length-1;g>=0;g--)this.rack.children[g].viewProps.set("disposed",!0)})}onRackAdd_(e){e.isRoot&&bt(this.view.element,e.bladeController.view.element,e.index)}onRackRemove_(e){e.isRoot&&Cn(e.bladeController.view.element)}}const Si=O("cnt");class Ms{constructor(e,t){var c;this.className_=O((c=t.viewName)!==null&&c!==void 0?c:"fld"),this.element=e.createElement("div"),this.element.classList.add(this.className_(),Si()),t.viewProps.bindClassModifiers(this.element),this.foldable_=t.foldable,this.foldable_.bindExpandedClass(this.element,this.className_(void 0,"expanded")),j(this.foldable_,"completed",Y(this.element,this.className_(void 0,"cpl")));const g=e.createElement("button");g.classList.add(this.className_("b")),j(t.props,"title",ee=>{y(ee)?this.element.classList.add(this.className_(void 0,"not")):this.element.classList.remove(this.className_(void 0,"not"))}),t.viewProps.bindDisabled(g),this.element.appendChild(g),this.buttonElement=g;const k=e.createElement("div");k.classList.add(this.className_("i")),this.element.appendChild(k);const L=e.createElement("div");L.classList.add(this.className_("t")),Z(t.props.value("title"),L),this.buttonElement.appendChild(L),this.titleElement=L;const R=e.createElement("div");R.classList.add(this.className_("m")),this.buttonElement.appendChild(R);const W=t.containerElement;W.classList.add(this.className_("c")),this.element.appendChild(W),this.containerElement=W}}class Mn extends Zn{constructor(e,t){var c;const g=De.create((c=t.expanded)!==null&&c!==void 0?c:!0),k=new Zt(e,{blade:t.blade,root:t.root,viewProps:t.viewProps});super(Object.assign(Object.assign({},t),{rackController:k,view:new Ms(e,{containerElement:k.view.element,foldable:g,props:t.props,viewName:t.root?"rot":void 0,viewProps:t.viewProps})})),this.onTitleClick_=this.onTitleClick_.bind(this),this.props=t.props,this.foldable=g,Be(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 As={id:"folder",type:"blade",accept(i){const e=V,t=ce(i,{title:e.required.string,view:e.required.constant("folder"),expanded:e.optional.boolean});return t?{params:t}:null},controller(i){return new Mn(i.document,{blade:i.blade,expanded:i.params.expanded,props:q.fromObject({title:i.params.title}),viewProps:i.viewProps})},api(i){return i.controller instanceof Mn?new Qn(i.controller,i.pool):null}};class It extends se{constructor(e,t){const c=t.valueController.viewProps;super(Object.assign(Object.assign({},t),{value:t.valueController.value,view:new I(e,{props:t.props,viewProps:c}),viewProps:c})),this.props=t.props,this.valueController=t.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class Li extends o{}const Jn=O("spr");class Ss{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Jn()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("hr");c.classList.add(Jn("r")),this.element.appendChild(c)}}class Wt extends vt{constructor(e,t){super(Object.assign(Object.assign({},t),{view:new Ss(e,{viewProps:t.viewProps})}))}}const Ls={id:"separator",type:"blade",accept(i){const t=ce(i,{view:V.required.constant("separator")});return t?{params:t}:null},controller(i){return new Wt(i.document,{blade:i.blade,viewProps:i.viewProps})},api(i){return i.controller instanceof Wt?new Li(i.controller):null}},Se=O("tbi");class Vs{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Se()),t.viewProps.bindClassModifiers(this.element),j(t.props,"selected",k=>{k?this.element.classList.add(Se(void 0,"sel")):this.element.classList.remove(Se(void 0,"sel"))});const c=e.createElement("button");c.classList.add(Se("b")),t.viewProps.bindDisabled(c),this.element.appendChild(c),this.buttonElement=c;const g=e.createElement("div");g.classList.add(Se("t")),Z(t.props.value("title"),g),this.buttonElement.appendChild(g),this.titleElement=g}}class An{constructor(e,t){this.emitter=new z,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new Vs(e,{props:t.props,viewProps:t.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class Vi{constructor(e,t){this.onItemClick_=this.onItemClick_.bind(this),this.ic_=new An(e,{props:t.itemProps,viewProps:Ue.create()}),this.ic_.emitter.on("click",this.onItemClick_),this.cc_=new Zt(e,{blade:ye(),viewProps:Ue.create()}),this.props=t.props,j(this.props,"selected",c=>{this.itemController.props.set("selected",c),this.contentController.viewProps.set("hidden",!c)})}get itemController(){return this.ic_}get contentController(){return this.cc_}onItemClick_(){this.props.set("selected",!0)}}class Hn{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,c){return this.rackApi_.addInput(e,t,c)}addMonitor(e,t,c){return this.rackApi_.addMonitor(e,t,c)}addBlade(e){return this.rackApi_.addBlade(e)}}class Di extends Ne{constructor(e,t){super(e,new kn(e.rackController,t)),this.onPageAdd_=this.onPageAdd_.bind(this),this.onPageRemove_=this.onPageRemove_.bind(this),this.onSelect_=this.onSelect_.bind(this),this.emitter_=new z,this.pageApiMap_=new Map,this.rackApi_.on("change",c=>{this.emitter_.emit("change",{event:c})}),this.rackApi_.on("update",c=>{this.emitter_.emit("update",{event:c})}),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(c=>{this.setUpPageApi_(c)})}get pages(){return this.controller_.pageSet.items.map(e=>{const t=this.pageApiMap_.get(e);if(!t)throw D.shouldNeverHappen();return t})}addPage(e){const t=this.controller_.view.element.ownerDocument,c=new Vi(t,{itemProps:q.fromObject({selected:!1,title:e.title}),props:q.fromObject({selected:!1})});this.controller_.add(c,e.index);const g=this.pageApiMap_.get(c);if(!g)throw D.shouldNeverHappen();return g}removePage(e){this.controller_.remove(e)}on(e,t){const c=t.bind(this);return this.emitter_.on(e,g=>{c(g.event)}),this}setUpPageApi_(e){const t=this.rackApi_.apiSet_.find(g=>g.controller_===e.contentController);if(!t)throw D.shouldNeverHappen();const c=new Hn(e,t);this.pageApiMap_.set(e,c)}onPageAdd_(e){this.setUpPageApi_(e.item)}onPageRemove_(e){if(!this.pageApiMap_.get(e.item))throw D.shouldNeverHappen();this.pageApiMap_.delete(e.item)}onSelect_(e){this.emitter_.emit("select",{event:new w(this,e.rawValue)})}}const Ii=-1;class Ds{constructor(){this.onItemSelectedChange_=this.onItemSelectedChange_.bind(this),this.empty=te(!0),this.selectedIndex=te(Ii),this.items_=[]}add(e,t){const c=t??this.items_.length;this.items_.splice(c,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=Ii,this.empty.rawValue=!0;return}const e=this.items_.findIndex(t=>t.rawValue);e<0?(this.items_.forEach((t,c)=>{t.rawValue=c===0}),this.selectedIndex.rawValue=0):(this.items_.forEach((t,c)=>{t.rawValue=c===e}),this.selectedIndex.rawValue=e),this.empty.rawValue=!1}onItemSelectedChange_(e){if(e.rawValue){const t=this.items_.findIndex(c=>c===e.sender);this.items_.forEach((c,g)=>{c.rawValue=g===t}),this.selectedIndex.rawValue=t}else this.keepSelection_()}}const Tt=O("tab");class Et{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Tt(),Si()),t.viewProps.bindClassModifiers(this.element),U(t.empty,Y(this.element,Tt(void 0,"nop")));const c=e.createElement("div");c.classList.add(Tt("t")),this.element.appendChild(c),this.itemsElement=c;const g=e.createElement("div");g.classList.add(Tt("i")),this.element.appendChild(g);const k=t.contentsElement;k.classList.add(Tt("c")),this.element.appendChild(k),this.contentsElement=k}}class Jt extends Zn{constructor(e,t){const c=new Zt(e,{blade:t.blade,viewProps:t.viewProps}),g=new Ds;super({blade:t.blade,rackController:c,view:new Et(e,{contentsElement:c.view.element,empty:g.empty,viewProps:t.viewProps})}),this.onPageAdd_=this.onPageAdd_.bind(this),this.onPageRemove_=this.onPageRemove_.bind(this),this.pageSet_=new wt(()=>null),this.pageSet_.emitter.on("add",this.onPageAdd_),this.pageSet_.emitter.on("remove",this.onPageRemove_),this.tab=g}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;bt(this.view.itemsElement,t.itemController.view.element,e.index),t.itemController.viewProps.set("parent",this.viewProps),this.rackController.rack.add(t.contentController,e.index),this.tab.add(t.props.value("selected"))}onPageRemove_(e){const t=e.item;Cn(t.itemController.view.element),t.itemController.viewProps.set("parent",null),this.rackController.rack.remove(t.contentController),this.tab.remove(t.props.value("selected"))}}const ei={id:"tab",type:"blade",accept(i){const e=V,t=ce(i,{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(i){const e=new Jt(i.document,{blade:i.blade,viewProps:i.viewProps});return i.params.pages.forEach(t=>{const c=new Vi(i.document,{itemProps:q.fromObject({selected:!1,title:t.title}),props:q.fromObject({selected:!1})});e.add(c)}),e},api(i){return i.controller instanceof Jt?new Di(i.controller,i.pool):null}};function Is(i,e){const t=i.accept(e.params);if(!t)return null;const c=V.optional.boolean(e.params.disabled).value,g=V.optional.boolean(e.params.hidden).value;return i.controller({blade:ye(),document:e.document,params:Object.assign(Object.assign({},t.params),{disabled:c,hidden:g}),viewProps:Ue.create({disabled:c,hidden:g})})}class Ti{constructor(){this.disabled=!1,this.emitter=new z}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class ti{constructor(e,t){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=e,this.emitter=new z,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 Sn{constructor(e){this.onValueChange_=this.onValueChange_.bind(this),this.reader=e.reader,this.writer=e.writer,this.emitter=new z,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 Pe(i,e){for(;i.length<e;)i.push(void 0)}function Ei(i){const e=[];return Pe(e,i),te(e)}function Ot(i){const e=i.indexOf(void 0);return e<0?i:i.slice(0,e)}function Re(i,e){const t=[...Ot(i),e];return t.length>i.length?t.splice(0,t.length-i.length):Pe(t,i.length),t}class Ts{constructor(e){this.onTick_=this.onTick_.bind(this),this.reader_=e.reader,this.target=e.target,this.emitter=new z,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,c=this.reader_(e);this.value.rawValue=Re(t,c),this.emitter.emit("update",{rawValue:c,sender:this})}onTick_(e){this.read()}}class Ht{constructor(e){this.constraints=e}constrain(e){return this.constraints.reduce((t,c)=>c.constrain(t),e)}}function Xe(i,e){if(i instanceof e)return i;if(i instanceof Ht){const t=i.constraints.reduce((c,g)=>c||(g instanceof e?g:null),null);if(t)return t}return null}class Bt{constructor(e){this.values=q.fromObject({max:e.max,min:e.min})}constrain(e){const t=this.values.get("max"),c=this.values.get("min");return Math.min(Math.max(e,c),t)}}class en{constructor(e){this.values=q.fromObject({options:e})}get options(){return this.values.get("options")}constrain(e){const t=this.values.get("options");return t.length===0||t.filter(g=>g.value===e).length>0?e:t[0].value}}class ni{constructor(e){this.values=q.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"),c=this.values.get("min");let g=e;return y(c)||(g=Math.max(g,c)),y(t)||(g=Math.min(g,t)),g}}class Ln{constructor(e,t=0){this.step=e,this.origin=t}constrain(e){const t=this.origin%this.step,c=Math.round((e-t)/this.step);return t+c*this.step}}const Nt=O("lst");class Oi{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.props_=t.props,this.element=e.createElement("div"),this.element.classList.add(Nt()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("select");c.classList.add(Nt("s")),j(this.props_,"options",k=>{Yt(c),k.forEach((L,R)=>{const W=e.createElement("option");W.dataset.index=String(R),W.textContent=L.text,W.value=String(L.value),c.appendChild(W)})}),t.viewProps.bindDisabled(c),this.element.appendChild(c),this.selectElement=c;const g=e.createElement("div");g.classList.add(Nt("m")),g.appendChild(ut(e,"dropdown")),this.element.appendChild(g),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 tn{constructor(e,t){this.onSelectChange_=this.onSelectChange_.bind(this),this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.view=new Oi(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.view.selectElement.addEventListener("change",this.onSelectChange_)}onSelectChange_(e){const c=e.currentTarget.selectedOptions.item(0);if(!c)return;const g=Number(c.dataset.index);this.value.rawValue=this.props.get("options")[g].value}}const Bi=O("pop");class Es{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Bi()),t.viewProps.bindClassModifiers(this.element),U(t.shows,Y(this.element,Bi(void 0,"v")))}}class Ni{constructor(e,t){this.shows=te(!1),this.viewProps=t.viewProps,this.view=new Es(e,{shows:this.shows,viewProps:this.viewProps})}}const Fi=O("txt");class Os{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(Fi()),t.viewProps.bindClassModifiers(this.element),this.props_=t.props,this.props_.emitter.on("change",this.onChange_);const c=e.createElement("input");c.classList.add(Fi("i")),c.type="text",t.viewProps.bindDisabled(c),this.element.appendChild(c),this.inputElement=c,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 Vn{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 Os(e,{props:t.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(e){const c=e.currentTarget.value,g=this.parser_(c);y(g)||(this.value.rawValue=g),this.view.refresh()}}function Bs(i){return String(i)}function zi(i){return i==="false"?!1:!!i}function ji(i){return Bs(i)}class Ns{constructor(e){this.text=e}evaluate(){return Number(this.text)}toString(){return this.text}}const Fs={"**":(i,e)=>Math.pow(i,e),"*":(i,e)=>i*e,"/":(i,e)=>i/e,"%":(i,e)=>i%e,"+":(i,e)=>i+e,"-":(i,e)=>i-e,"<<":(i,e)=>i<<e,">>":(i,e)=>i>>e,">>>":(i,e)=>i>>>e,"&":(i,e)=>i&e,"^":(i,e)=>i^e,"|":(i,e)=>i|e};class zs{constructor(e,t,c){this.left=t,this.operator=e,this.right=c}evaluate(){const e=Fs[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 Ui={"+":i=>i,"-":i=>-i,"~":i=>~i};class js{constructor(e,t){this.operator=e,this.expression=t}evaluate(){const e=Ui[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 ii(i){return(e,t)=>{for(let c=0;c<i.length;c++){const g=i[c](e,t);if(g!=="")return g}return""}}function _t(i,e){var t;const c=i.substr(e).match(/^\s+/);return(t=c&&c[0])!==null&&t!==void 0?t:""}function Us(i,e){const t=i.substr(e,1);return t.match(/^[1-9]$/)?t:""}function nn(i,e){var t;const c=i.substr(e).match(/^[0-9]+/);return(t=c&&c[0])!==null&&t!==void 0?t:""}function Rs(i,e){const t=nn(i,e);if(t!=="")return t;const c=i.substr(e,1);if(e+=1,c!=="-"&&c!=="+")return"";const g=nn(i,e);return g===""?"":c+g}function He(i,e){const t=i.substr(e,1);if(e+=1,t.toLowerCase()!=="e")return"";const c=Rs(i,e);return c===""?"":t+c}function Ri(i,e){const t=i.substr(e,1);if(t==="0")return t;const c=Us(i,e);return e+=c.length,c===""?"":c+nn(i,e)}function Gs(i,e){const t=Ri(i,e);if(e+=t.length,t==="")return"";const c=i.substr(e,1);if(e+=c.length,c!==".")return"";const g=nn(i,e);return e+=g.length,t+c+g+He(i,e)}function Gi(i,e){const t=i.substr(e,1);if(e+=t.length,t!==".")return"";const c=nn(i,e);return e+=c.length,c===""?"":t+c+He(i,e)}function Ks(i,e){const t=Ri(i,e);return e+=t.length,t===""?"":t+He(i,e)}const Ki=ii([Gs,Gi,Ks]);function si(i,e){var t;const c=i.substr(e).match(/^[01]+/);return(t=c&&c[0])!==null&&t!==void 0?t:""}function $s(i,e){const t=i.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0b")return"";const c=si(i,e);return c===""?"":t+c}function $i(i,e){var t;const c=i.substr(e).match(/^[0-7]+/);return(t=c&&c[0])!==null&&t!==void 0?t:""}function Ge(i,e){const t=i.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0o")return"";const c=$i(i,e);return c===""?"":t+c}function Xs(i,e){var t;const c=i.substr(e).match(/^[0-9a-f]+/i);return(t=c&&c[0])!==null&&t!==void 0?t:""}function Ys(i,e){const t=i.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0x")return"";const c=Xs(i,e);return c===""?"":t+c}const ri=ii([$s,Ge,Ys]),qs=ii([ri,Ki]);function dt(i,e){const t=qs(i,e);return e+=t.length,t===""?null:{evaluable:new Ns(t),cursor:e}}function oi(i,e){const t=i.substr(e,1);if(e+=t.length,t!=="(")return null;const c=Dn(i,e);if(!c)return null;e=c.cursor,e+=_t(i,e).length;const g=i.substr(e,1);return e+=g.length,g!==")"?null:{evaluable:c.evaluable,cursor:e}}function Qs(i,e){var t;return(t=dt(i,e))!==null&&t!==void 0?t:oi(i,e)}function ai(i,e){const t=Qs(i,e);if(t)return t;const c=i.substr(e,1);if(e+=c.length,c!=="+"&&c!=="-"&&c!=="~")return null;const g=ai(i,e);return g?(e=g.cursor,{cursor:e,evaluable:new js(c,g.evaluable)}):null}function Zs(i,e,t){t+=_t(e,t).length;const c=i.filter(g=>e.startsWith(g,t))[0];return c?(t+=c.length,t+=_t(e,t).length,{cursor:t,operator:c}):null}function yt(i,e){return(t,c)=>{const g=i(t,c);if(!g)return null;c=g.cursor;let k=g.evaluable;for(;;){const L=Zs(e,t,c);if(!L)break;c=L.cursor;const R=i(t,c);if(!R)return null;c=R.cursor,k=new zs(L.operator,k,R.evaluable)}return k?{cursor:c,evaluable:k}:null}}const Xi=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((i,e)=>yt(i,e),ai);function Dn(i,e){return e+=_t(i,e).length,Xi(i,e)}function Yi(i){const e=Dn(i,0);return!e||e.cursor+_t(i,e.cursor).length!==i.length?null:e.evaluable}function et(i){var e;const t=Yi(i);return(e=t==null?void 0:t.evaluate())!==null&&e!==void 0?e:null}function lt(i){if(typeof i=="number")return i;if(typeof i=="string"){const e=et(i);if(!y(e))return e}return 0}function Ws(i){return String(i)}function Le(i){return e=>e.toFixed(Math.max(Math.min(i,20),0))}const qi=Le(0);function sn(i){return qi(i)+"%"}function li(i){return String(i)}function mt(i){return i}function Ft({primary:i,secondary:e,forward:t,backward:c}){let g=!1;function k(L){g||(g=!0,L(),g=!1)}i.emitter.on("change",L=>{k(()=>{e.setRawValue(t(i,e),L.options)})}),e.emitter.on("change",L=>{k(()=>{i.setRawValue(c(i,e),L.options)}),k(()=>{e.setRawValue(t(i,e),L.options)})}),k(()=>{e.setRawValue(t(i,e),{forceEmit:!1,last:!0})})}function Ie(i,e){const t=i*(e.altKey?.1:1)*(e.shiftKey?10:1);return e.upKey?+t:e.downKey?-t:0}function rn(i){return{altKey:i.altKey,downKey:i.key==="ArrowDown",shiftKey:i.shiftKey,upKey:i.key==="ArrowUp"}}function tt(i){return{altKey:i.altKey,downKey:i.key==="ArrowLeft",shiftKey:i.shiftKey,upKey:i.key==="ArrowRight"}}function Qi(i){return i==="ArrowUp"||i==="ArrowDown"}function In(i){return Qi(i)||i==="ArrowLeft"||i==="ArrowRight"}function ci(i,e){var t,c;const g=e.ownerDocument.defaultView,k=e.getBoundingClientRect();return{x:i.pageX-(((t=g&&g.scrollX)!==null&&t!==void 0?t:0)+k.left),y:i.pageY-(((c=g&&g.scrollY)!==null&&c!==void 0?c:0)+k.top)}}class xt{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 z,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 c=this.elem_.ownerDocument;c.addEventListener("mousemove",this.onDocumentMouseMove_),c.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(ci(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onDocumentMouseMove_(e){this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(ci(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_(ci(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onTouchStart_(e){e.preventDefault();const t=e.targetTouches.item(0),c=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(t?{x:t.clientX-c.left,y:t.clientY-c.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=t}onTouchMove_(e){const t=e.targetTouches.item(0),c=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(t?{x:t.clientX-c.left,y:t.clientY-c.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=t}onTouchEnd_(e){var t;const c=(t=e.targetTouches.item(0))!==null&&t!==void 0?t:this.lastTouch_,g=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:e.altKey,data:this.computePosition_(c?{x:c.clientX-g.left,y:c.clientY-g.top}:void 0),sender:this,shiftKey:e.shiftKey})}}function we(i,e,t,c,g){const k=(i-e)/(t-e);return c+k*(g-c)}function pi(i){return String(i.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function ke(i,e,t){return Math.min(Math.max(i,e),t)}function zt(i,e){return(i%e+e)%e}const Fe=O("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(Fe(),Fe(void 0,"num")),t.arrayPosition&&this.element.classList.add(Fe(void 0,t.arrayPosition)),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("input");c.classList.add(Fe("i")),c.type="text",t.viewProps.bindDisabled(c),this.element.appendChild(c),this.inputElement=c,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=t.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add(Fe()),this.inputElement.classList.add(Fe("i"));const g=e.createElement("div");g.classList.add(Fe("k")),this.element.appendChild(g),this.knobElement=g;const k=e.createElementNS(Oe,"svg");k.classList.add(Fe("g")),this.knobElement.appendChild(k);const L=e.createElementNS(Oe,"path");L.classList.add(Fe("gb")),k.appendChild(L),this.guideBodyElem_=L;const R=e.createElementNS(Oe,"path");R.classList.add(Fe("gh")),k.appendChild(R),this.guideHeadElem_=R;const W=e.createElement("div");W.classList.add(O("tt")()),this.knobElement.appendChild(W),this.tooltipElem_=W,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.refresh()}onDraggingChange_(e){if(e.rawValue===null){this.element.classList.remove(Fe(void 0,"drg"));return}this.element.classList.add(Fe(void 0,"drg"));const t=e.rawValue/this.props_.get("draggingScale"),c=t+(t>0?-1:t<0?1:0),g=ke(-c,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${c+g},0 L${c},4 L${c+g},8`,`M ${t},-1 L${t},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${t},4`);const k=this.props_.get("formatter");this.tooltipElem_.textContent=k(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 on{constructor(e,t){var c;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_=(c=t.sliderProps)!==null&&c!==void 0?c:null,this.value=t.value,this.viewProps=t.viewProps,this.dragging_=te(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 g=new xt(this.view.knobElement);g.emitter.on("down",this.onPointerDown_),g.emitter.on("move",this.onPointerMove_),g.emitter.on("up",this.onPointerUp_)}constrainValue_(e){var t,c;const g=(t=this.sliderProps_)===null||t===void 0?void 0:t.get("minValue"),k=(c=this.sliderProps_)===null||c===void 0?void 0:c.get("maxValue");let L=e;return g!==void 0&&(L=Math.max(L,g)),k!==void 0&&(L=Math.min(L,k)),L}onInputChange_(e){const c=e.currentTarget.value,g=this.parser_(c);y(g)||(this.value.rawValue=this.constrainValue_(g)),this.view.refresh()}onInputKeyDown_(e){const t=Ie(this.baseStep_,rn(e));t!==0&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+t),{forceEmit:!1,last:!1})}onInputKeyUp_(e){Ie(this.baseStep_,rn(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 hi=O("sld");class ze{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(hi()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(hi("t")),t.viewProps.bindTabIndex(c),this.element.appendChild(c),this.trackElement=c;const g=e.createElement("div");g.classList.add(hi("k")),this.trackElement.appendChild(g),this.knobElement=g,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.update_()}update_(){const e=ke(we(this.value.rawValue,this.props_.get("minValue"),this.props_.get("maxValue"),0,100),0,100);this.knobElement.style.width=`${e}%`}onChange_(){this.update_()}}class di{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 ze(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new xt(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(we(ke(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=Ie(this.baseStep_,tt(e));t!==0&&this.value.setRawValue(this.value.rawValue+t,{forceEmit:!1,last:!1})}onKeyUp_(e){Ie(this.baseStep_,tt(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const an=O("sldtxt");class mi{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(an());const c=e.createElement("div");c.classList.add(an("s")),this.sliderView_=t.sliderView,c.appendChild(this.sliderView_.element),this.element.appendChild(c);const g=e.createElement("div");g.classList.add(an("t")),this.textView_=t.textView,g.appendChild(this.textView_.element),this.element.appendChild(g)}}class Tn{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.sliderC_=new di(e,{baseStep:t.baseStep,props:t.sliderProps,value:t.value,viewProps:this.viewProps}),this.textC_=new on(e,{baseStep:t.baseStep,parser:t.parser,props:t.textProps,sliderProps:t.sliderProps,value:t.value,viewProps:t.viewProps}),this.view=new mi(e,{sliderView:this.sliderC_.view,textView:this.textC_.view})}get sliderController(){return this.sliderC_}get textController(){return this.textC_}}function Ye(i,e){i.write(e)}function ln(i){const e=V;if(Array.isArray(i))return e.required.array(e.required.object({text:e.required.string,value:e.required.raw}))(i).value;if(typeof i=="object")return e.required.raw(i).value}function fi(i){if(i==="inline"||i==="popup")return i}function ct(i){const e=V;return e.required.object({max:e.optional.number,min:e.optional.number,step:e.optional.number})(i).value}function Zi(i){if(Array.isArray(i))return i;const e=[];return Object.keys(i).forEach(t=>{e.push({text:t,value:i[t]})}),e}function vi(i){return y(i)?null:new en(Zi(i))}function Js(i){const e=i?Xe(i,Ln):null;return e?e.step:null}function En(i,e){const t=i&&Xe(i,Ln);return t?pi(t.step):Math.max(pi(e),2)}function Ct(i){const e=Js(i);return e??1}function Pt(i,e){var t;const c=i&&Xe(i,Ln),g=Math.abs((t=c==null?void 0:c.step)!==null&&t!==void 0?t:e);return g===0?.1:Math.pow(10,Math.floor(Math.log10(g))-1)}const cn=O("ckb");class pn{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 c=e.createElement("label");c.classList.add(cn("l")),this.element.appendChild(c);const g=e.createElement("input");g.classList.add(cn("i")),g.type="checkbox",c.appendChild(g),this.inputElement=g,t.viewProps.bindDisabled(this.inputElement);const k=e.createElement("div");k.classList.add(cn("w")),c.appendChild(k);const L=ut(e,"check");k.appendChild(L),t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.update_()}update_(){this.inputElement.checked=this.value.rawValue}onValueChange_(){this.update_()}}class Wi{constructor(e,t){this.onInputChange_=this.onInputChange_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new pn(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 Ji(i){const e=[],t=vi(i.options);return t&&e.push(t),new Ht(e)}const On={id:"input-bool",type:"input",accept:(i,e)=>{if(typeof i!="boolean")return null;const c=ce(e,{options:V.optional.custom(ln)});return c?{initialValue:i,params:c}:null},binding:{reader:i=>zi,constraint:i=>Ji(i.params),writer:i=>Ye},controller:i=>{const e=i.document,t=i.value,c=i.constraint,g=c&&Xe(c,en);return g?new tn(e,{props:new q({options:g.values.value("options")}),value:t,viewProps:i.viewProps}):new Wi(e,{value:t,viewProps:i.viewProps})}},kt=O("col");class bi{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(kt()),t.foldable.bindExpandedClass(this.element,kt(void 0,"expanded")),j(t.foldable,"completed",Y(this.element,kt(void 0,"cpl")));const c=e.createElement("div");c.classList.add(kt("h")),this.element.appendChild(c);const g=e.createElement("div");g.classList.add(kt("s")),c.appendChild(g),this.swatchElement=g;const k=e.createElement("div");if(k.classList.add(kt("t")),c.appendChild(k),this.textElement=k,t.pickerLayout==="inline"){const L=e.createElement("div");L.classList.add(kt("p")),this.element.appendChild(L),this.pickerElement=L}else this.pickerElement=null}}function Hs(i,e,t){const c=ke(i/255,0,1),g=ke(e/255,0,1),k=ke(t/255,0,1),L=Math.max(c,g,k),R=Math.min(c,g,k),W=L-R;let ee=0,de=0;const ve=(R+L)/2;return W!==0&&(de=W/(1-Math.abs(L+R-1)),c===L?ee=(g-k)/W:g===L?ee=2+(k-c)/W:ee=4+(c-g)/W,ee=ee/6+(ee<0?1:0)),[ee*360,de*100,ve*100]}function er(i,e,t){const c=(i%360+360)%360,g=ke(e/100,0,1),k=ke(t/100,0,1),L=(1-Math.abs(2*k-1))*g,R=L*(1-Math.abs(c/60%2-1)),W=k-L/2;let ee,de,ve;return c>=0&&c<60?[ee,de,ve]=[L,R,0]:c>=60&&c<120?[ee,de,ve]=[R,L,0]:c>=120&&c<180?[ee,de,ve]=[0,L,R]:c>=180&&c<240?[ee,de,ve]=[0,R,L]:c>=240&&c<300?[ee,de,ve]=[R,0,L]:[ee,de,ve]=[L,0,R],[(ee+W)*255,(de+W)*255,(ve+W)*255]}function tr(i,e,t){const c=ke(i/255,0,1),g=ke(e/255,0,1),k=ke(t/255,0,1),L=Math.max(c,g,k),R=Math.min(c,g,k),W=L-R;let ee;W===0?ee=0:L===c?ee=60*(((g-k)/W%6+6)%6):L===g?ee=60*((k-c)/W+2):ee=60*((c-g)/W+4);const de=L===0?0:W/L,ve=L;return[ee,de*100,ve*100]}function Hi(i,e,t){const c=zt(i,360),g=ke(e/100,0,1),k=ke(t/100,0,1),L=k*g,R=L*(1-Math.abs(c/60%2-1)),W=k-L;let ee,de,ve;return c>=0&&c<60?[ee,de,ve]=[L,R,0]:c>=60&&c<120?[ee,de,ve]=[R,L,0]:c>=120&&c<180?[ee,de,ve]=[0,L,R]:c>=180&&c<240?[ee,de,ve]=[0,R,L]:c>=240&&c<300?[ee,de,ve]=[R,0,L]:[ee,de,ve]=[L,0,R],[(ee+W)*255,(de+W)*255,(ve+W)*255]}function m(i,e,t){const c=t+e*(100-Math.abs(2*t-100))/200;return[i,c!==0?e*(100-Math.abs(2*t-100))/c:0,t+e*(100-Math.abs(2*t-100))/(2*100)]}function a(i,e,t){const c=100-Math.abs(t*(200-e)/100-100);return[i,c!==0?e*t/c:0,t*(200-e)/(2*100)]}function p(i){return[i[0],i[1],i[2]]}function v(i,e){return[i[0],i[1],i[2],e]}const P={hsl:{hsl:(i,e,t)=>[i,e,t],hsv:m,rgb:er},hsv:{hsl:a,hsv:(i,e,t)=>[i,e,t],rgb:Hi},rgb:{hsl:Hs,hsv:tr,rgb:(i,e,t)=>[i,e,t]}};function S(i,e){return[e==="float"?1:i==="rgb"?255:360,e==="float"?1:i==="rgb"?255:100,e==="float"?1:i==="rgb"?255:100]}function B(i,e){return i===e?e:zt(i,e)}function G(i,e,t){var c;const g=S(e,t);return[e==="rgb"?ke(i[0],0,g[0]):B(i[0],g[0]),ke(i[1],0,g[1]),ke(i[2],0,g[2]),ke((c=i[3])!==null&&c!==void 0?c:1,0,1)]}function oe(i,e,t,c){const g=S(e,t),k=S(e,c);return i.map((L,R)=>L/g[R]*k[R])}function Ke(i,e,t){const c=oe(i,e.mode,e.type,"int"),g=P[e.mode][t.mode](...c);return oe(g,t.mode,"int",t.type)}function $e(i,e){return typeof i!="object"||y(i)?!1:e in i&&typeof i[e]=="number"}class ne{static black(e="int"){return new ne([0,0,0],"rgb",e)}static fromObject(e,t="int"){const c="a"in e?[e.r,e.g,e.b,e.a]:[e.r,e.g,e.b];return new ne(c,"rgb",t)}static toRgbaObject(e,t="int"){return e.toRgbaObject(t)}static isRgbColorObject(e){return $e(e,"r")&&$e(e,"g")&&$e(e,"b")}static isRgbaColorObject(e){return this.isRgbColorObject(e)&&$e(e,"a")}static isColorObject(e){return this.isRgbColorObject(e)}static equals(e,t){if(e.mode!==t.mode)return!1;const c=e.comps_,g=t.comps_;for(let k=0;k<c.length;k++)if(c[k]!==g[k])return!1;return!0}constructor(e,t,c="int"){this.mode=t,this.type=c,this.comps_=G(e,t,c)}getComponents(e,t="int"){return v(Ke(p(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 ft=O("colp");class nr{constructor(e,t){this.alphaViews_=null,this.element=e.createElement("div"),this.element.classList.add(ft()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(ft("hsv"));const g=e.createElement("div");g.classList.add(ft("sv")),this.svPaletteView_=t.svPaletteView,g.appendChild(this.svPaletteView_.element),c.appendChild(g);const k=e.createElement("div");k.classList.add(ft("h")),this.hPaletteView_=t.hPaletteView,k.appendChild(this.hPaletteView_.element),c.appendChild(k),this.element.appendChild(c);const L=e.createElement("div");if(L.classList.add(ft("rgb")),this.textView_=t.textView,L.appendChild(this.textView_.element),this.element.appendChild(L),t.alphaViews){this.alphaViews_={palette:t.alphaViews.palette,text:t.alphaViews.text};const R=e.createElement("div");R.classList.add(ft("a"));const W=e.createElement("div");W.classList.add(ft("ap")),W.appendChild(this.alphaViews_.palette.element),R.appendChild(W);const ee=e.createElement("div");ee.classList.add(ft("at")),ee.appendChild(this.alphaViews_.text.element),R.appendChild(ee),this.element.appendChild(R)}}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 ep(i){return i==="int"?"int":i==="float"?"float":void 0}function ir(i){const e=V;return ce(i,{alpha:e.optional.boolean,color:e.optional.object({alpha:e.optional.boolean,type:e.optional.custom(ep)}),expanded:e.optional.boolean,picker:e.optional.custom(fi)})}function un(i){return i?.1:1}function hn(i){var e;return(e=i.color)===null||e===void 0?void 0:e.type}function tp(i,e){return i.alpha===e.alpha&&i.mode===e.mode&&i.notation===e.notation&&i.type===e.type}function nt(i,e){const t=i.match(/^(.+)%$/);return Math.min(t?parseFloat(t[1])*.01*e:parseFloat(i),e)}const np={deg:i=>i,grad:i=>i*360/400,rad:i=>i*360/(2*Math.PI),turn:i=>i*360};function no(i){const e=i.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);if(!e)return parseFloat(i);const t=parseFloat(e[1]),c=e[2];return np[c](t)}function io(i){const e=i.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=[nt(e[1],255),nt(e[2],255),nt(e[3],255)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function so(i){return e=>{const t=io(e);return t?new ne(t,"rgb",i):null}}function ro(i){const e=i.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=[nt(e[1],255),nt(e[2],255),nt(e[3],255),nt(e[4],1)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function oo(i){return e=>{const t=ro(e);return t?new ne(t,"rgb",i):null}}function ao(i){const e=i.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=[no(e[1]),nt(e[2],100),nt(e[3],100)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function lo(i){return e=>{const t=ao(e);return t?new ne(t,"hsl",i):null}}function co(i){const e=i.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=[no(e[1]),nt(e[2],100),nt(e[3],100),nt(e[4],1)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function po(i){return e=>{const t=co(e);return t?new ne(t,"hsl",i):null}}function uo(i){const e=i.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=i.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 ip(i){const e=uo(i);return e?new ne(e,"rgb","int"):null}function ho(i){const e=i.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),we(parseInt(e[4]+e[4],16),0,255,0,1)];const t=i.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),we(parseInt(t[4],16),0,255,0,1)]:null}function sp(i){const e=ho(i);return e?new ne(e,"rgb","int"):null}function mo(i){const e=i.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 fo(i){return e=>{const t=mo(e);return t?new ne(t,"rgb",i):null}}function vo(i){const e=i.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 bo(i){return e=>{const t=vo(e);return t?new ne(t,"rgb",i):null}}const rp=[{parser:uo,result:{alpha:!1,mode:"rgb",notation:"hex"}},{parser:ho,result:{alpha:!0,mode:"rgb",notation:"hex"}},{parser:io,result:{alpha:!1,mode:"rgb",notation:"func"}},{parser:ro,result:{alpha:!0,mode:"rgb",notation:"func"}},{parser:ao,result:{alpha:!1,mode:"hsl",notation:"func"}},{parser:co,result:{alpha:!0,mode:"hsl",notation:"func"}},{parser:mo,result:{alpha:!1,mode:"rgb",notation:"object"}},{parser:vo,result:{alpha:!0,mode:"rgb",notation:"object"}}];function op(i){return rp.reduce((e,{parser:t,result:c})=>e||(t(i)?c:null),null)}function sr(i,e="int"){const t=op(i);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 go={int:[ip,sp,so("int"),oo("int"),lo("int"),po("int"),fo("int"),bo("int")],float:[so("float"),oo("float"),lo("float"),po("float"),fo("float"),bo("float")]};function ap(i){const e=go[i];return t=>{if(typeof t!="string")return ne.black(i);const c=e.reduce((g,k)=>g||k(t),null);return c??ne.black(i)}}function rr(i){const e=go[i];return t=>e.reduce((c,g)=>c||g(t),null)}function wo(i){const e=ke(Math.floor(i),0,255).toString(16);return e.length===1?`0${e}`:e}function _o(i,e="#"){const t=p(i.getComponents("rgb")).map(wo).join("");return`${e}${t}`}function or(i,e="#"){const t=i.getComponents("rgb"),c=[t[0],t[1],t[2],t[3]*255].map(wo).join("");return`${e}${c}`}function yo(i,e){const t=Le(e==="float"?2:0);return`rgb(${p(i.getComponents("rgb",e)).map(g=>t(g)).join(", ")})`}function lp(i){return e=>yo(e,i)}function es(i,e){const t=Le(2),c=Le(e==="float"?2:0);return`rgba(${i.getComponents("rgb",e).map((k,L)=>(L===3?t:c)(k)).join(", ")})`}function cp(i){return e=>es(e,i)}function pp(i){const e=[Le(0),sn,sn];return`hsl(${p(i.getComponents("hsl")).map((c,g)=>e[g](c)).join(", ")})`}function up(i){const e=[Le(0),sn,sn,Le(2)];return`hsla(${i.getComponents("hsl").map((c,g)=>e[g](c)).join(", ")})`}function xo(i,e){const t=Le(e==="float"?2:0),c=["r","g","b"];return`{${p(i.getComponents("rgb",e)).map((k,L)=>`${c[L]}: ${t(k)}`).join(", ")}}`}function hp(i){return e=>xo(e,i)}function Co(i,e){const t=Le(2),c=Le(e==="float"?2:0),g=["r","g","b","a"];return`{${i.getComponents("rgb",e).map((L,R)=>{const W=R===3?t:c;return`${g[R]}: ${W(L)}`}).join(", ")}}`}function dp(i){return e=>Co(e,i)}const mp=[{format:{alpha:!1,mode:"rgb",notation:"hex",type:"int"},stringifier:_o},{format:{alpha:!0,mode:"rgb",notation:"hex",type:"int"},stringifier:or},{format:{alpha:!1,mode:"hsl",notation:"func",type:"int"},stringifier:pp},{format:{alpha:!0,mode:"hsl",notation:"func",type:"int"},stringifier:up},...["int","float"].reduce((i,e)=>[...i,{format:{alpha:!1,mode:"rgb",notation:"func",type:e},stringifier:lp(e)},{format:{alpha:!0,mode:"rgb",notation:"func",type:e},stringifier:cp(e)},{format:{alpha:!1,mode:"rgb",notation:"object",type:e},stringifier:hp(e)},{format:{alpha:!0,mode:"rgb",notation:"object",type:e},stringifier:dp(e)}],[])];function ar(i){return mp.reduce((e,t)=>e||(tp(t.format,i)?t.stringifier:null),null)}const gi=O("apl");class fp{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(gi()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);const c=e.createElement("div");c.classList.add(gi("b")),this.element.appendChild(c);const g=e.createElement("div");g.classList.add(gi("c")),c.appendChild(g),this.colorElem_=g;const k=e.createElement("div");k.classList.add(gi("m")),this.element.appendChild(k),this.markerElem_=k;const L=e.createElement("div");L.classList.add(gi("p")),this.markerElem_.appendChild(L),this.previewElem_=L,this.update_()}update_(){const e=this.value.rawValue,t=e.getComponents("rgb"),c=new ne([t[0],t[1],t[2],0],"rgb"),g=new ne([t[0],t[1],t[2],255],"rgb"),k=["to right",es(c),es(g)];this.colorElem_.style.background=`linear-gradient(${k.join(",")})`,this.previewElem_.style.backgroundColor=es(e);const L=we(t[3],0,1,0,100);this.markerElem_.style.left=`${L}%`}onValueChange_(){this.update_()}}class vp{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 fp(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new xt(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 c=e.point.x/e.bounds.width,g=this.value.rawValue,[k,L,R]=g.getComponents("hsv");this.value.setRawValue(new ne([k,L,R,c],"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=Ie(un(!0),tt(e));if(t===0)return;const c=this.value.rawValue,[g,k,L,R]=c.getComponents("hsv");this.value.setRawValue(new ne([g,k,L,R+t],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){Ie(un(!0),tt(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const Bn=O("coltxt");function bp(i){const e=i.createElement("select"),t=[{text:"RGB",value:"rgb"},{text:"HSL",value:"hsl"},{text:"HSV",value:"hsv"}];return e.appendChild(t.reduce((c,g)=>{const k=i.createElement("option");return k.textContent=g.text,k.value=g.value,c.appendChild(k),c},i.createDocumentFragment())),e}class gp{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Bn()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(Bn("m")),this.modeElem_=bp(e),this.modeElem_.classList.add(Bn("ms")),c.appendChild(this.modeSelectElement),t.viewProps.bindDisabled(this.modeElem_);const g=e.createElement("div");g.classList.add(Bn("mm")),g.appendChild(ut(e,"dropdown")),c.appendChild(g),this.element.appendChild(c);const k=e.createElement("div");k.classList.add(Bn("w")),this.element.appendChild(k),this.textsElem_=k,this.textViews_=t.textViews,this.applyTextViews_(),U(t.colorMode,L=>{this.modeElem_.value=L})}get modeSelectElement(){return this.modeElem_}get textViews(){return this.textViews_}set textViews(e){this.textViews_=e,this.applyTextViews_()}applyTextViews_(){Yt(this.textsElem_);const e=this.element.ownerDocument;this.textViews_.forEach(t=>{const c=e.createElement("div");c.classList.add(Bn("c")),c.appendChild(t.element),this.textsElem_.appendChild(c)})}}function wp(i){return Le(i==="float"?2:0)}function _p(i,e,t){const c=S(i,e)[t];return new Bt({min:0,max:c})}function lr(i,e,t){return new on(i,{arrayPosition:t===0?"fst":t===3-1?"lst":"mid",baseStep:un(!1),parser:e.parser,props:q.fromObject({draggingScale:e.colorType==="float"?.01:1,formatter:wp(e.colorType)}),value:te(0,{constraint:_p(e.colorMode,e.colorType,t)}),viewProps:e.viewProps})}class yp{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=te(this.value.rawValue.mode),this.ccs_=this.createComponentControllers_(e),this.view=new gp(e,{colorMode:this.colorMode,textViews:[this.ccs_[0].view,this.ccs_[1].view,this.ccs_[2].view],viewProps:this.viewProps}),this.view.modeSelectElement.addEventListener("change",this.onModeSelectChange_)}createComponentControllers_(e){const t={colorMode:this.colorMode.rawValue,colorType:this.colorType_,parser:this.parser_,viewProps:this.viewProps},c=[lr(e,t,0),lr(e,t,1),lr(e,t,2)];return c.forEach((g,k)=>{Ft({primary:this.value,secondary:g.value,forward:L=>L.rawValue.getComponents(this.colorMode.rawValue,this.colorType_)[k],backward:(L,R)=>{const W=this.colorMode.rawValue,ee=L.rawValue.getComponents(W,this.colorType_);return ee[k]=R.rawValue,new ne(v(p(ee),ee[3]),W,this.colorType_)}})}),c}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 cr=O("hpl");class xp{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(cr()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);const c=e.createElement("div");c.classList.add(cr("c")),this.element.appendChild(c);const g=e.createElement("div");g.classList.add(cr("m")),this.element.appendChild(g),this.markerElem_=g,this.update_()}update_(){const e=this.value.rawValue,[t]=e.getComponents("hsv");this.markerElem_.style.backgroundColor=yo(new ne([t,100,100],"hsv"));const c=we(t,0,360,0,100);this.markerElem_.style.left=`${c}%`}onValueChange_(){this.update_()}}class Cp{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 xp(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new xt(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 c=we(ke(e.point.x,0,e.bounds.width),0,e.bounds.width,0,360),g=this.value.rawValue,[,k,L,R]=g.getComponents("hsv");this.value.setRawValue(new ne([c,k,L,R],"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=Ie(un(!1),tt(e));if(t===0)return;const c=this.value.rawValue,[g,k,L,R]=c.getComponents("hsv");this.value.setRawValue(new ne([g+t,k,L,R],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){Ie(un(!1),tt(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const pr=O("svp"),Po=64;class Pp{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(pr()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);const c=e.createElement("canvas");c.height=Po,c.width=Po,c.classList.add(pr("c")),this.element.appendChild(c),this.canvasElement=c;const g=e.createElement("div");g.classList.add(pr("m")),this.element.appendChild(g),this.markerElem_=g,this.update_()}update_(){const e=yn(this.canvasElement);if(!e)return;const c=this.value.rawValue.getComponents("hsv"),g=this.canvasElement.width,k=this.canvasElement.height,L=e.getImageData(0,0,g,k),R=L.data;for(let de=0;de<k;de++)for(let ve=0;ve<g;ve++){const dn=we(ve,0,g,0,100),_i=we(de,0,k,100,0),yi=Hi(c[0],dn,_i),ts=(de*g+ve)*4;R[ts]=yi[0],R[ts+1]=yi[1],R[ts+2]=yi[2],R[ts+3]=255}e.putImageData(L,0,0);const W=we(c[1],0,100,0,100);this.markerElem_.style.left=`${W}%`;const ee=we(c[2],0,100,100,0);this.markerElem_.style.top=`${ee}%`}onValueChange_(){this.update_()}}class kp{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 Pp(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new xt(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 c=we(e.point.x,0,e.bounds.width,0,100),g=we(e.point.y,0,e.bounds.height,100,0),[k,,,L]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new ne([k,c,g,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){In(e.key)&&e.preventDefault();const[t,c,g,k]=this.value.rawValue.getComponents("hsv"),L=un(!1),R=Ie(L,tt(e)),W=Ie(L,rn(e));R===0&&W===0||this.value.setRawValue(new ne([t,c+R,g+W,k],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){const t=un(!1),c=Ie(t,tt(e)),g=Ie(t,rn(e));c===0&&g===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class Mp{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.hPaletteC_=new Cp(e,{value:this.value,viewProps:this.viewProps}),this.svPaletteC_=new kp(e,{value:this.value,viewProps:this.viewProps}),this.alphaIcs_=t.supportsAlpha?{palette:new vp(e,{value:this.value,viewProps:this.viewProps}),text:new on(e,{parser:et,baseStep:.1,props:q.fromObject({draggingScale:.01,formatter:Le(2)}),value:te(0,{constraint:new Bt({min:0,max:1})}),viewProps:this.viewProps})}:null,this.alphaIcs_&&Ft({primary:this.value,secondary:this.alphaIcs_.text.value,forward:c=>c.rawValue.getComponents()[3],backward:(c,g)=>{const k=c.rawValue.getComponents();return k[3]=g.rawValue,new ne(k,c.rawValue.mode)}}),this.textC_=new yp(e,{colorType:t.colorType,parser:et,value:this.value,viewProps:this.viewProps}),this.view=new nr(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,viewProps:this.viewProps})}get textController(){return this.textC_}}const ur=O("colsw");class Ap{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(ur()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(ur("sw")),this.element.appendChild(c),this.swatchElem_=c;const g=e.createElement("button");g.classList.add(ur("b")),t.viewProps.bindDisabled(g),this.element.appendChild(g),this.buttonElement=g,this.update_()}update_(){const e=this.value.rawValue;this.swatchElem_.style.backgroundColor=or(e)}onValueChange_(){this.update_()}}class Sp{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new Ap(e,{value:this.value,viewProps:this.viewProps})}}class hr{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_=De.create(t.expanded),this.swatchC_=new Sp(e,{value:this.value,viewProps:this.viewProps});const c=this.swatchC_.view.buttonElement;c.addEventListener("blur",this.onButtonBlur_),c.addEventListener("click",this.onButtonClick_),this.textC_=new Vn(e,{parser:t.parser,props:q.fromObject({formatter:t.formatter}),value:this.value,viewProps:this.viewProps}),this.view=new bi(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 Ni(e,{viewProps:this.viewProps}):null;const g=new Mp(e,{colorType:t.colorType,supportsAlpha:t.supportsAlpha,value:this.value,viewProps:this.viewProps});g.view.allFocusableElements.forEach(k=>{k.addEventListener("blur",this.onPopupChildBlur_),k.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=g,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(g.view.element),Ft({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:k=>k.rawValue,backward:(k,L)=>L.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),Be(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onButtonBlur_(e){if(!this.popC_)return;const t=this.view.element,c=e.relatedTarget;(!c||!t.contains(c))&&(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,c=ht(e);c&&t.contains(c)||c&&c===this.swatchC_.view.buttonElement&&!ot(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 Lp(i,e){return ne.isColorObject(i)?ne.fromObject(i,e):ne.black(e)}function Vp(i){return p(i.getComponents("rgb")).reduce((e,t)=>e<<8|Math.floor(t)&255,0)}function Dp(i){return i.getComponents("rgb").reduce((e,t,c)=>{const g=Math.floor(c===3?t*255:t)&255;return e<<8|g},0)>>>0}function Ip(i){return new ne([i>>16&255,i>>8&255,i&255],"rgb")}function Tp(i){return new ne([i>>24&255,i>>16&255,i>>8&255,we(i&255,0,255,0,1)],"rgb")}function Ep(i){return typeof i!="number"?ne.black():Ip(i)}function Op(i){return typeof i!="number"?ne.black():Tp(i)}function Bp(i){const e=ar(i);return e?(t,c)=>{Ye(t,e(c))}:null}function Np(i){const e=i?Dp:Vp;return(t,c)=>{Ye(t,e(c))}}function Fp(i,e,t){const c=e.toRgbaObject(t);i.writeProperty("r",c.r),i.writeProperty("g",c.g),i.writeProperty("b",c.b),i.writeProperty("a",c.a)}function zp(i,e,t){const c=e.toRgbaObject(t);i.writeProperty("r",c.r),i.writeProperty("g",c.g),i.writeProperty("b",c.b)}function jp(i,e){return(t,c)=>{i?Fp(t,c,e):zp(t,c,e)}}function dr(i){var e;return!!(i!=null&&i.alpha||!((e=i==null?void 0:i.color)===null||e===void 0)&&e.alpha)}function Up(i){return i?e=>or(e,"0x"):e=>_o(e,"0x")}function Rp(i){return"color"in i||"view"in i&&i.view==="color"}const Gp={id:"input-color-number",type:"input",accept:(i,e)=>{if(typeof i!="number"||!Rp(e))return null;const t=ir(e);return t?{initialValue:i,params:t}:null},binding:{reader:i=>dr(i.params)?Op:Ep,equals:ne.equals,writer:i=>Np(dr(i.params))},controller:i=>{const e=dr(i.params),t="expanded"in i.params?i.params.expanded:void 0,c="picker"in i.params?i.params.picker:void 0;return new hr(i.document,{colorType:"int",expanded:t??!1,formatter:Up(e),parser:rr("int"),pickerLayout:c??"popup",supportsAlpha:e,value:i.value,viewProps:i.viewProps})}};function Kp(i){return ne.isRgbaColorObject(i)}function $p(i){return e=>Lp(e,i)}function Xp(i,e){return t=>i?Co(t,e):xo(t,e)}const Yp={id:"input-color-object",type:"input",accept:(i,e)=>{if(!ne.isColorObject(i))return null;const t=ir(e);return t?{initialValue:i,params:t}:null},binding:{reader:i=>$p(hn(i.params)),equals:ne.equals,writer:i=>jp(Kp(i.initialValue),hn(i.params))},controller:i=>{var e;const t=ne.isRgbaColorObject(i.initialValue),c="expanded"in i.params?i.params.expanded:void 0,g="picker"in i.params?i.params.picker:void 0,k=(e=hn(i.params))!==null&&e!==void 0?e:"int";return new hr(i.document,{colorType:k,expanded:c??!1,formatter:Xp(t,k),parser:rr(k),pickerLayout:g??"popup",supportsAlpha:t,value:i.value,viewProps:i.viewProps})}},qp={id:"input-color-string",type:"input",accept:(i,e)=>{if(typeof i!="string"||"view"in e&&e.view==="text")return null;const t=sr(i,hn(e));if(!t||!ar(t))return null;const g=ir(e);return g?{initialValue:i,params:g}:null},binding:{reader:i=>{var e;return ap((e=hn(i.params))!==null&&e!==void 0?e:"int")},equals:ne.equals,writer:i=>{const e=sr(i.initialValue,hn(i.params));if(!e)throw D.shouldNeverHappen();const t=Bp(e);if(!t)throw D.notBindable();return t}},controller:i=>{const e=sr(i.initialValue,hn(i.params));if(!e)throw D.shouldNeverHappen();const t=ar(e);if(!t)throw D.shouldNeverHappen();const c="expanded"in i.params?i.params.expanded:void 0,g="picker"in i.params?i.params.picker:void 0;return new hr(i.document,{colorType:e.type,expanded:c??!1,formatter:t,parser:rr(e.type),pickerLayout:g??"popup",supportsAlpha:e.alpha,value:i.value,viewProps:i.viewProps})}};class jt{constructor(e){this.components=e.components,this.asm_=e.assembly}constrain(e){const t=this.asm_.toComponents(e).map((c,g)=>{var k,L;return(L=(k=this.components[g])===null||k===void 0?void 0:k.constrain(c))!==null&&L!==void 0?L:c});return this.asm_.fromComponents(t)}}const ko=O("pndtxt");class Qp{constructor(e,t){this.textViews=t.textViews,this.element=e.createElement("div"),this.element.classList.add(ko()),this.textViews.forEach(c=>{const g=e.createElement("div");g.classList.add(ko("a")),g.appendChild(c.element),this.element.appendChild(g)})}}function Zp(i,e,t){return new on(i,{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:te(0,{constraint:e.axes[t].constraint}),viewProps:e.viewProps})}class mr{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.acs_=t.axes.map((c,g)=>Zp(e,t,g)),this.acs_.forEach((c,g)=>{Ft({primary:this.value,secondary:c.value,forward:k=>t.assembly.toComponents(k.rawValue)[g],backward:(k,L)=>{const R=t.assembly.toComponents(k.rawValue);return R[g]=L.rawValue,t.assembly.fromComponents(R)}})}),this.view=new Qp(e,{textViews:this.acs_.map(c=>c.view)})}}function Mo(i,e){return"step"in i&&!y(i.step)?new Ln(i.step,e):null}function Ao(i){return!y(i.max)&&!y(i.min)?new Bt({max:i.max,min:i.min}):!y(i.max)||!y(i.min)?new ni({max:i.max,min:i.min}):null}function Wp(i){const e=Xe(i,Bt);if(e)return[e.values.get("min"),e.values.get("max")];const t=Xe(i,ni);return t?[t.minValue,t.maxValue]:[void 0,void 0]}function Jp(i,e){const t=[],c=Mo(i,e);c&&t.push(c);const g=Ao(i);g&&t.push(g);const k=vi(i.options);return k&&t.push(k),new Ht(t)}const Hp={id:"input-number",type:"input",accept:(i,e)=>{if(typeof i!="number")return null;const t=V,c=ce(e,{format:t.optional.function,max:t.optional.number,min:t.optional.number,options:t.optional.custom(ln),step:t.optional.number});return c?{initialValue:i,params:c}:null},binding:{reader:i=>lt,constraint:i=>Jp(i.params,i.initialValue),writer:i=>Ye},controller:i=>{var e;const t=i.value,c=i.constraint,g=c&&Xe(c,en);if(g)return new tn(i.document,{props:new q({options:g.values.value("options")}),value:t,viewProps:i.viewProps});const k=(e="format"in i.params?i.params.format:void 0)!==null&&e!==void 0?e:Le(En(c,t.rawValue)),L=c&&Xe(c,Bt);return L?new Tn(i.document,{baseStep:Ct(c),parser:et,sliderProps:new q({maxValue:L.values.value("max"),minValue:L.values.value("min")}),textProps:q.fromObject({draggingScale:Pt(c,t.rawValue),formatter:k}),value:t,viewProps:i.viewProps}):new on(i.document,{baseStep:Ct(c),parser:et,props:q.fromObject({draggingScale:Pt(c,t.rawValue),formatter:k}),value:t,viewProps:i.viewProps})}};class Ut{constructor(e=0,t=0){this.x=e,this.y=t}getComponents(){return[this.x,this.y]}static isObject(e){if(y(e))return!1;const t=e.x,c=e.y;return!(typeof t!="number"||typeof c!="number")}static equals(e,t){return e.x===t.x&&e.y===t.y}toObject(){return{x:this.x,y:this.y}}}const So={toComponents:i=>i.getComponents(),fromComponents:i=>new Ut(...i)},Nn=O("p2d");class eu{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Nn()),t.viewProps.bindClassModifiers(this.element),U(t.expanded,Y(this.element,Nn(void 0,"expanded")));const c=e.createElement("div");c.classList.add(Nn("h")),this.element.appendChild(c);const g=e.createElement("button");g.classList.add(Nn("b")),g.appendChild(ut(e,"p2dpad")),t.viewProps.bindDisabled(g),c.appendChild(g),this.buttonElement=g;const k=e.createElement("div");if(k.classList.add(Nn("t")),c.appendChild(k),this.textElement=k,t.pickerLayout==="inline"){const L=e.createElement("div");L.classList.add(Nn("p")),this.element.appendChild(L),this.pickerElement=L}else this.pickerElement=null}}const Rt=O("p2dp");class tu{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(Rt()),t.layout==="popup"&&this.element.classList.add(Rt(void 0,"p")),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(Rt("p")),t.viewProps.bindTabIndex(c),this.element.appendChild(c),this.padElement=c;const g=e.createElementNS(Oe,"svg");g.classList.add(Rt("g")),this.padElement.appendChild(g),this.svgElem_=g;const k=e.createElementNS(Oe,"line");k.classList.add(Rt("ax")),k.setAttributeNS(null,"x1","0"),k.setAttributeNS(null,"y1","50%"),k.setAttributeNS(null,"x2","100%"),k.setAttributeNS(null,"y2","50%"),this.svgElem_.appendChild(k);const L=e.createElementNS(Oe,"line");L.classList.add(Rt("ax")),L.setAttributeNS(null,"x1","50%"),L.setAttributeNS(null,"y1","0"),L.setAttributeNS(null,"x2","50%"),L.setAttributeNS(null,"y2","100%"),this.svgElem_.appendChild(L);const R=e.createElementNS(Oe,"line");R.classList.add(Rt("l")),R.setAttributeNS(null,"x1","50%"),R.setAttributeNS(null,"y1","50%"),this.svgElem_.appendChild(R),this.lineElem_=R;const W=e.createElement("div");W.classList.add(Rt("m")),this.padElement.appendChild(W),this.markerElem_=W,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(),c=this.maxValue_,g=we(e,-c,+c,0,100),k=we(t,-c,+c,0,100),L=this.invertsY_?100-k:k;this.lineElem_.setAttributeNS(null,"x2",`${g}%`),this.lineElem_.setAttributeNS(null,"y2",`${L}%`),this.markerElem_.style.left=`${g}%`,this.markerElem_.style.top=`${L}%`}onValueChange_(){this.update_()}onFoldableChange_(){this.update_()}}function Lo(i,e,t){return[Ie(e[0],tt(i)),Ie(e[1],rn(i))*(t?1:-1)]}class nu{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 tu(e,{invertsY:this.invertsY_,layout:t.layout,maxValue:this.maxValue_,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new xt(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 c=this.maxValue_,g=we(e.point.x,0,e.bounds.width,-c,+c),k=we(this.invertsY_?e.bounds.height-e.point.y:e.point.y,0,e.bounds.height,-c,+c);this.value.setRawValue(new Ut(g,k),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){In(e.key)&&e.preventDefault();const[t,c]=Lo(e,this.baseSteps_,this.invertsY_);t===0&&c===0||this.value.setRawValue(new Ut(this.value.rawValue.x+t,this.value.rawValue.y+c),{forceEmit:!1,last:!1})}onPadKeyUp_(e){const[t,c]=Lo(e,this.baseSteps_,this.invertsY_);t===0&&c===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class iu{constructor(e,t){var c,g;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_=De.create(t.expanded),this.popC_=t.pickerLayout==="popup"?new Ni(e,{viewProps:this.viewProps}):null;const k=new nu(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});k.view.allFocusableElements.forEach(L=>{L.addEventListener("blur",this.onPopupChildBlur_),L.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=k,this.textC_=new mr(e,{assembly:So,axes:t.axes,parser:t.parser,value:this.value,viewProps:this.viewProps}),this.view=new eu(e,{expanded:this.foldable_.value("expanded"),pickerLayout:t.pickerLayout,viewProps:this.viewProps}),this.view.textElement.appendChild(this.textC_.view.element),(c=this.view.buttonElement)===null||c===void 0||c.addEventListener("blur",this.onPadButtonBlur_),(g=this.view.buttonElement)===null||g===void 0||g.addEventListener("click",this.onPadButtonClick_),this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),Ft({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:L=>L.rawValue,backward:(L,R)=>R.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),Be(this.foldable_,this.view.pickerElement))}onPadButtonBlur_(e){if(!this.popC_)return;const t=this.view.element,c=e.relatedTarget;(!c||!t.contains(c))&&(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,c=ht(e);c&&t.contains(c)||c&&c===this.view.buttonElement&&!ot(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 Fn{constructor(e=0,t=0,c=0){this.x=e,this.y=t,this.z=c}getComponents(){return[this.x,this.y,this.z]}static isObject(e){if(y(e))return!1;const t=e.x,c=e.y,g=e.z;return!(typeof t!="number"||typeof c!="number"||typeof g!="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 Vo={toComponents:i=>i.getComponents(),fromComponents:i=>new Fn(...i)};function su(i){return Fn.isObject(i)?new Fn(i.x,i.y,i.z):new Fn}function ru(i,e){i.writeProperty("x",e.x),i.writeProperty("y",e.y),i.writeProperty("z",e.z)}function ou(i,e){return new jt({assembly:Vo,components:[Mt("x"in i?i.x:void 0,e.x),Mt("y"in i?i.y:void 0,e.y),Mt("z"in i?i.z:void 0,e.z)]})}function fr(i,e){return{baseStep:Ct(e),constraint:e,textProps:q.fromObject({draggingScale:Pt(e,i),formatter:Le(En(e,i))})}}const au={id:"input-point3d",type:"input",accept:(i,e)=>{if(!Fn.isObject(i))return null;const t=V,c=ce(e,{x:t.optional.custom(ct),y:t.optional.custom(ct),z:t.optional.custom(ct)});return c?{initialValue:i,params:c}:null},binding:{reader:i=>su,constraint:i=>ou(i.params,i.initialValue),equals:Fn.equals,writer:i=>ru},controller:i=>{const e=i.value,t=i.constraint;if(!(t instanceof jt))throw D.shouldNeverHappen();return new mr(i.document,{assembly:Vo,axes:[fr(e.rawValue.x,t.components[0]),fr(e.rawValue.y,t.components[1]),fr(e.rawValue.z,t.components[2])],parser:et,value:e,viewProps:i.viewProps})}};class zn{constructor(e=0,t=0,c=0,g=0){this.x=e,this.y=t,this.z=c,this.w=g}getComponents(){return[this.x,this.y,this.z,this.w]}static isObject(e){if(y(e))return!1;const t=e.x,c=e.y,g=e.z,k=e.w;return!(typeof t!="number"||typeof c!="number"||typeof g!="number"||typeof k!="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 Do={toComponents:i=>i.getComponents(),fromComponents:i=>new zn(...i)};function lu(i){return zn.isObject(i)?new zn(i.x,i.y,i.z,i.w):new zn}function cu(i,e){i.writeProperty("x",e.x),i.writeProperty("y",e.y),i.writeProperty("z",e.z),i.writeProperty("w",e.w)}function pu(i,e){return new jt({assembly:Do,components:[Mt("x"in i?i.x:void 0,e.x),Mt("y"in i?i.y:void 0,e.y),Mt("z"in i?i.z:void 0,e.z),Mt("w"in i?i.w:void 0,e.w)]})}function uu(i,e){return{baseStep:Ct(e),constraint:e,textProps:q.fromObject({draggingScale:Pt(e,i),formatter:Le(En(e,i))})}}const hu={id:"input-point4d",type:"input",accept:(i,e)=>{if(!zn.isObject(i))return null;const t=V,c=ce(e,{x:t.optional.custom(ct),y:t.optional.custom(ct),z:t.optional.custom(ct),w:t.optional.custom(ct)});return c?{initialValue:i,params:c}:null},binding:{reader:i=>lu,constraint:i=>pu(i.params,i.initialValue),equals:zn.equals,writer:i=>cu},controller:i=>{const e=i.value,t=i.constraint;if(!(t instanceof jt))throw D.shouldNeverHappen();return new mr(i.document,{assembly:Do,axes:e.rawValue.getComponents().map((c,g)=>uu(c,t.components[g])),parser:et,value:e,viewProps:i.viewProps})}};function du(i){const e=[],t=vi(i.options);return t&&e.push(t),new Ht(e)}const mu={id:"input-string",type:"input",accept:(i,e)=>{if(typeof i!="string")return null;const c=ce(e,{options:V.optional.custom(ln)});return c?{initialValue:i,params:c}:null},binding:{reader:i=>li,constraint:i=>du(i.params),writer:i=>Ye},controller:i=>{const e=i.document,t=i.value,c=i.constraint,g=c&&Xe(c,en);return g?new tn(e,{props:new q({options:g.values.value("options")}),value:t,viewProps:i.viewProps}):new Vn(e,{parser:k=>k,props:q.fromObject({formatter:mt}),value:t,viewProps:i.viewProps})}},wi={monitor:{defaultInterval:200,defaultLineCount:3}},Io=O("mll");class fu{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(Io()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("textarea");c.classList.add(Io("i")),c.style.height=`calc(var(--bld-us) * ${t.lineCount})`,c.readOnly=!0,t.viewProps.bindDisabled(c),this.element.appendChild(c),this.textareaElem_=c,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,c=[];this.value.rawValue.forEach(g=>{g!==void 0&&c.push(this.formatter_(g))}),e.textContent=c.join(`
92
- `),t&&(e.scrollTop=e.scrollHeight)}onValueUpdate_(){this.update_()}}class vr{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new fu(e,{formatter:t.formatter,lineCount:t.lineCount,value:this.value,viewProps:this.viewProps})}}const To=O("sgl");class vu{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(To()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("input");c.classList.add(To("i")),c.readOnly=!0,c.type="text",t.viewProps.bindDisabled(c),this.element.appendChild(c),this.inputElement=c,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 br{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new vu(e,{formatter:t.formatter,value:this.value,viewProps:this.viewProps})}}const bu={id:"monitor-bool",type:"monitor",accept:(i,e)=>{if(typeof i!="boolean")return null;const c=ce(e,{lineCount:V.optional.number});return c?{initialValue:i,params:c}:null},binding:{reader:i=>zi},controller:i=>{var e;return i.value.rawValue.length===1?new br(i.document,{formatter:ji,value:i.value,viewProps:i.viewProps}):new vr(i.document,{formatter:ji,lineCount:(e=i.params.lineCount)!==null&&e!==void 0?e:wi.monitor.defaultLineCount,value:i.value,viewProps:i.viewProps})}},Gt=O("grl");class gu{constructor(e,t){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=e.createElement("div"),this.element.classList.add(Gt()),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 c=e.createElementNS(Oe,"svg");c.classList.add(Gt("g")),c.style.height=`calc(var(--bld-us) * ${t.lineCount})`,this.element.appendChild(c),this.svgElem_=c;const g=e.createElementNS(Oe,"polyline");this.svgElem_.appendChild(g),this.lineElem_=g;const k=e.createElement("div");k.classList.add(Gt("t"),O("tt")()),this.element.appendChild(k),this.tooltipElem_=k,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,c=this.props_.get("minValue"),g=this.props_.get("maxValue"),k=[];this.value.rawValue.forEach((de,ve)=>{if(de===void 0)return;const dn=we(ve,0,t,0,e.width),_i=we(de,c,g,e.height,0);k.push([dn,_i].join(","))}),this.lineElem_.setAttributeNS(null,"points",k.join(" "));const L=this.tooltipElem_,R=this.value.rawValue[this.cursor_.rawValue];if(R===void 0){L.classList.remove(Gt("t","a"));return}const W=we(this.cursor_.rawValue,0,t,0,e.width),ee=we(R,c,g,e.height,0);L.style.left=`${W}px`,L.style.top=`${ee}px`,L.textContent=`${this.formatter_(R)}`,L.classList.contains(Gt("t","a"))||(L.classList.add(Gt("t","a"),Gt("t","in")),We(L),L.classList.remove(Gt("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class wu{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_=te(-1),this.view=new gu(e,{cursor:this.cursor_,formatter:t.formatter,lineCount:t.lineCount,props:this.props_,value:this.value,viewProps:this.viewProps}),!ot(e))this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_);else{const c=new xt(this.view.element);c.emitter.on("down",this.onGraphPointerDown_),c.emitter.on("move",this.onGraphPointerMove_),c.emitter.on("up",this.onGraphPointerUp_)}}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(e){const t=this.view.element.getBoundingClientRect();this.cursor_.rawValue=Math.floor(we(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(we(e.data.point.x,0,e.data.bounds.width,0,this.value.rawValue.length))}onGraphPointerUp_(){this.cursor_.rawValue=-1}}function gr(i){return"format"in i&&!y(i.format)?i.format:Le(2)}function _u(i){var e;return i.value.rawValue.length===1?new br(i.document,{formatter:gr(i.params),value:i.value,viewProps:i.viewProps}):new vr(i.document,{formatter:gr(i.params),lineCount:(e=i.params.lineCount)!==null&&e!==void 0?e:wi.monitor.defaultLineCount,value:i.value,viewProps:i.viewProps})}function yu(i){var e,t,c;return new wu(i.document,{formatter:gr(i.params),lineCount:(e=i.params.lineCount)!==null&&e!==void 0?e:wi.monitor.defaultLineCount,props:q.fromObject({maxValue:(t="max"in i.params?i.params.max:null)!==null&&t!==void 0?t:100,minValue:(c="min"in i.params?i.params.min:null)!==null&&c!==void 0?c:0}),value:i.value,viewProps:i.viewProps})}function Eo(i){return"view"in i&&i.view==="graph"}const xu={id:"monitor-number",type:"monitor",accept:(i,e)=>{if(typeof i!="number")return null;const t=V,c=ce(e,{format:t.optional.function,lineCount:t.optional.number,max:t.optional.number,min:t.optional.number,view:t.optional.string});return c?{initialValue:i,params:c}:null},binding:{defaultBufferSize:i=>Eo(i)?64:1,reader:i=>lt},controller:i=>Eo(i.params)?yu(i):_u(i)},Cu={id:"monitor-string",type:"monitor",accept:(i,e)=>{if(typeof i!="string")return null;const t=V,c=ce(e,{lineCount:t.optional.number,multiline:t.optional.boolean});return c?{initialValue:i,params:c}:null},binding:{reader:i=>li},controller:i=>{var e;const t=i.value;return t.rawValue.length>1||"multiline"in i.params&&i.params.multiline?new vr(i.document,{formatter:mt,lineCount:(e=i.params.lineCount)!==null&&e!==void 0?e:wi.monitor.defaultLineCount,value:t,viewProps:i.viewProps}):new br(i.document,{formatter:mt,value:t,viewProps:i.viewProps})}};function Pu(i,e){var t;const c=i.accept(e.target.read(),e.params);if(y(c))return null;const g=V,k={target:e.target,initialValue:c.initialValue,params:c.params},L=i.binding.reader(k),R=i.binding.constraint?i.binding.constraint(k):void 0,W=te(L(c.initialValue),{constraint:R,equals:i.binding.equals}),ee=new Sn({reader:L,target:e.target,value:W,writer:i.binding.writer(k)}),de=g.optional.boolean(e.params.disabled).value,ve=g.optional.boolean(e.params.hidden).value,dn=i.controller({constraint:R,document:e.document,initialValue:c.initialValue,params:c.params,value:ee.value,viewProps:Ue.create({disabled:de,hidden:ve})});return new Ee(e.document,{binding:ee,blade:ye(),props:q.fromObject({label:"label"in e.params?(t=g.optional.string(e.params.label).value)!==null&&t!==void 0?t:null:e.target.key}),valueController:dn})}function ku(i,e){return e===0?new Ti:new ti(i,e??wi.monitor.defaultInterval)}function Mu(i,e){var t,c,g;const k=V,L=i.accept(e.target.read(),e.params);if(y(L))return null;const R={target:e.target,initialValue:L.initialValue,params:L.params},W=i.binding.reader(R),ee=(c=(t=k.optional.number(e.params.bufferSize).value)!==null&&t!==void 0?t:i.binding.defaultBufferSize&&i.binding.defaultBufferSize(L.params))!==null&&c!==void 0?c:1,de=k.optional.number(e.params.interval).value,ve=new Ts({reader:W,target:e.target,ticker:ku(e.document,de),value:Ei(ee)}),dn=k.optional.boolean(e.params.disabled).value,_i=k.optional.boolean(e.params.hidden).value,yi=i.controller({document:e.document,params:L.params,value:ve.value,viewProps:Ue.create({disabled:dn,hidden:_i})});return new Je(e.document,{binding:ve,blade:ye(),props:q.fromObject({label:"label"in e.params?(g=k.optional.string(e.params.label).value)!==null&&g!==void 0?g:null:e.target.key}),valueController:yi})}class Au{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,c){const g=t.read();if(y(g))throw new D({context:{key:t.key},type:"nomatchingcontroller"});const k=this.pluginsMap_.inputs.reduce((L,R)=>L??Pu(R,{document:e,target:t,params:c}),null);if(k)return k;throw new D({context:{key:t.key},type:"nomatchingcontroller"})}createMonitor(e,t,c){const g=this.pluginsMap_.monitors.reduce((k,L)=>k??Mu(L,{document:e,params:c,target:t}),null);if(g)return g;throw new D({context:{key:t.key},type:"nomatchingcontroller"})}createBlade(e,t){const c=this.pluginsMap_.blades.reduce((g,k)=>g??Is(k,{document:e,params:t}),null);if(!c)throw new D({type:"nomatchingview",context:{params:t}});return c}createBladeApi(e){if(e instanceof Ee)return new Yn(e);if(e instanceof Je)return new qn(e);if(e instanceof Zt)return new kn(e,this);const t=this.pluginsMap_.blades.reduce((c,g)=>c??g.api({controller:e,pool:this}),null);if(!t)throw D.shouldNeverHappen();return t}}function Su(){const i=new Au;return[Eu,au,hu,mu,Hp,qp,Yp,Gp,On,bu,Cu,xu,H,As,Ls,ei].forEach(e=>{i.register(e)}),i}function Lu(i){return Ut.isObject(i)?new Ut(i.x,i.y):new Ut}function Vu(i,e){i.writeProperty("x",e.x),i.writeProperty("y",e.y)}function Mt(i,e){if(!i)return;const t=[],c=Mo(i,e);c&&t.push(c);const g=Ao(i);return g&&t.push(g),new Ht(t)}function Du(i,e){return new jt({assembly:So,components:[Mt("x"in i?i.x:void 0,e.x),Mt("y"in i?i.y:void 0,e.y)]})}function Oo(i,e){const[t,c]=i?Wp(i):[];if(!y(t)||!y(c))return Math.max(Math.abs(t??0),Math.abs(c??0));const g=Ct(i);return Math.max(Math.abs(g)*10,Math.abs(e)*10)}function Iu(i,e){const t=e instanceof jt?e.components[0]:void 0,c=e instanceof jt?e.components[1]:void 0,g=Oo(t,i.x),k=Oo(c,i.y);return Math.max(g,k)}function Bo(i,e){return{baseStep:Ct(e),constraint:e,textProps:q.fromObject({draggingScale:Pt(e,i),formatter:Le(En(e,i))})}}function Tu(i){if(!("y"in i))return!1;const e=i.y;return e&&"inverted"in e?!!e.inverted:!1}const Eu={id:"input-point2d",type:"input",accept:(i,e)=>{if(!Ut.isObject(i))return null;const t=V,c=ce(e,{expanded:t.optional.boolean,picker:t.optional.custom(fi),x:t.optional.custom(ct),y:t.optional.object({inverted:t.optional.boolean,max:t.optional.number,min:t.optional.number,step:t.optional.number})});return c?{initialValue:i,params:c}:null},binding:{reader:i=>Lu,constraint:i=>Du(i.params,i.initialValue),equals:Ut.equals,writer:i=>Vu},controller:i=>{const e=i.document,t=i.value,c=i.constraint;if(!(c instanceof jt))throw D.shouldNeverHappen();const g="expanded"in i.params?i.params.expanded:void 0,k="picker"in i.params?i.params.picker:void 0;return new iu(e,{axes:[Bo(t.rawValue.x,c.components[0]),Bo(t.rawValue.y,c.components[1])],expanded:g??!1,invertsY:Tu(i.params),maxValue:Iu(t.rawValue,c),parser:et,pickerLayout:k??"popup",value:t,viewProps:i.viewProps})}};class No extends o{constructor(e){super(e),this.emitter_=new z,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 c=t.bind(this);return this.emitter_.on(e,g=>{c(g.event)}),this}}class Fo extends o{constructor(e){super(e),this.emitter_=new z,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 c=t.bind(this);return this.emitter_.on(e,g=>{c(g.event)}),this}}class zo extends o{constructor(e){super(e),this.emitter_=new z,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 c=t.bind(this);return this.emitter_.on(e,g=>{c(g.event)}),this}}const Ou=function(){return{id:"list",type:"blade",accept(i){const e=V,t=ce(i,{options:e.required.custom(ln),value:e.required.raw,view:e.required.constant("list"),label:e.optional.string});return t?{params:t}:null},controller(i){const e=new en(Zi(i.params.options)),t=te(i.params.value,{constraint:e}),c=new tn(i.document,{props:new q({options:e.values.value("options")}),value:t,viewProps:i.viewProps});return new It(i.document,{blade:i.blade,props:q.fromObject({label:i.params.label}),valueController:c})},api(i){return!(i.controller instanceof It)||!(i.controller.valueController instanceof tn)?null:new No(i.controller)}}}();function Bu(i){return i.reduce((e,t)=>Object.assign(e,{[t.presetKey]:t.read()}),{})}function Nu(i,e){i.forEach(t=>{const c=e[t.target.presetKey];c!==void 0&&t.writer(t.target,t.reader(c))})}class Fu extends Qn{constructor(e,t){super(e,t)}get element(){return this.controller_.view.element}importPreset(e){const t=this.controller_.rackController.rack.find(Ee).map(c=>c.binding);Nu(t,e),this.refresh()}exportPreset(){const e=this.controller_.rackController.rack.find(Ee).map(t=>t.binding.target);return Bu(e)}refresh(){this.controller_.rackController.rack.find(Ee).forEach(e=>{e.binding.read()}),this.controller_.rackController.rack.find(Je).forEach(e=>{e.binding.read()})}}class zu extends Mn{constructor(e,t){super(e,{expanded:t.expanded,blade:t.blade,props:t.props,root:!0,viewProps:t.viewProps})}}const ju={id:"slider",type:"blade",accept(i){const e=V,t=ce(i,{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(i){var e,t;const c=(e=i.params.value)!==null&&e!==void 0?e:0,g=new Bt({max:i.params.max,min:i.params.min}),k=new Tn(i.document,{baseStep:1,parser:et,sliderProps:new q({maxValue:g.values.value("max"),minValue:g.values.value("min")}),textProps:q.fromObject({draggingScale:Pt(void 0,c),formatter:(t=i.params.format)!==null&&t!==void 0?t:Ws}),value:te(c,{constraint:g}),viewProps:i.viewProps});return new It(i.document,{blade:i.blade,props:q.fromObject({label:i.params.label}),valueController:k})},api(i){return!(i.controller instanceof It)||!(i.controller.valueController instanceof Tn)?null:new Fo(i.controller)}},Uu=function(){return{id:"text",type:"blade",accept(i){const e=V,t=ce(i,{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(i){var e;const t=new Vn(i.document,{parser:i.params.parse,props:q.fromObject({formatter:(e=i.params.format)!==null&&e!==void 0?e:c=>String(c)}),value:te(i.params.value),viewProps:i.viewProps});return new It(i.document,{blade:i.blade,props:q.fromObject({label:i.params.label}),valueController:t})},api(i){return!(i.controller instanceof It)||!(i.controller.valueController instanceof Vn)?null:new zo(i.controller)}}}();function Ru(i){const e=i.createElement("div");return e.classList.add(O("dfw")()),i.body&&i.body.appendChild(e),e}function jo(i,e,t){if(i.querySelector(`style[data-tp-style=${e}]`))return;const c=i.createElement("style");c.dataset.tpStyle=e,c.textContent=t,i.head.appendChild(c)}class Gu extends Fu{constructor(e){var t,c;const g=e??{},k=(t=g.document)!==null&&t!==void 0?t:$n(),L=Su(),R=new zu(k,{expanded:g.expanded,blade:ye(),props:q.fromObject({title:g.title}),viewProps:Ue.create()});super(R,L),this.pool_=L,this.containerElem_=(c=g.container)!==null&&c!==void 0?c:Ru(k),this.containerElem_.appendChild(this.element),this.doc_=k,this.usesDefaultWrapper_=!g.container,this.setUpDefaultPlugins_()}get document(){if(!this.doc_)throw D.alreadyDisposed();return this.doc_}dispose(){const e=this.containerElem_;if(!e)throw D.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(c=>{this.pool_.register(c),this.embedPluginStyle_(c)})}embedPluginStyle_(e){e.css&&jo(this.document,`plugin-${e.id}`,e.css)}setUpDefaultPlugins_(){jo(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(230, 7%, 17%));--bs-sh: var(--tp-base-shadow-color, rgba(0, 0, 0, 0.2));--btn-bg: var(--tp-button-background-color, hsl(230, 7%, 70%));--btn-bg-a: var(--tp-button-background-color-active, #d6d7db);--btn-bg-f: var(--tp-button-background-color-focus, #c8cad0);--btn-bg-h: var(--tp-button-background-color-hover, #bbbcc4);--btn-fg: var(--tp-button-foreground-color, hsl(230, 7%, 17%));--cnt-bg: var(--tp-container-background-color, rgba(187, 188, 196, 0.1));--cnt-bg-a: var(--tp-container-background-color-active, rgba(187, 188, 196, 0.25));--cnt-bg-f: var(--tp-container-background-color-focus, rgba(187, 188, 196, 0.2));--cnt-bg-h: var(--tp-container-background-color-hover, rgba(187, 188, 196, 0.15));--cnt-fg: var(--tp-container-foreground-color, hsl(230, 7%, 75%));--in-bg: var(--tp-input-background-color, rgba(187, 188, 196, 0.1));--in-bg-a: var(--tp-input-background-color-active, rgba(187, 188, 196, 0.25));--in-bg-f: var(--tp-input-background-color-focus, rgba(187, 188, 196, 0.2));--in-bg-h: var(--tp-input-background-color-hover, rgba(187, 188, 196, 0.15));--in-fg: var(--tp-input-foreground-color, hsl(230, 7%, 75%));--lbl-fg: var(--tp-label-foreground-color, rgba(187, 188, 196, 0.7));--mo-bg: var(--tp-monitor-background-color, rgba(0, 0, 0, 0.2));--mo-fg: var(--tp-monitor-foreground-color, rgba(187, 188, 196, 0.7));--grv-fg: var(--tp-groove-foreground-color, rgba(187, 188, 196, 0.1))}.tp-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-cntv+.tp-fldv>.tp-fldv_b,.tp-fldv_c>.tp-cntv+.tp-fldv>.tp-fldv_b{border-top-left-radius:0}.tp-tabv_c .tp-brkv>.tp-cntv+.tp-tabv>.tp-tabv_t,.tp-fldv_c>.tp-cntv+.tp-tabv>.tp-tabv_t{border-top-left-radius:0}.tp-tabv_c .tp-brkv>.tp-tabv>.tp-tabv_t,.tp-fldv_c>.tp-tabv>.tp-tabv_t{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-expanded.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.tp-v-disabled .tp-colpv_a::before{opacity:.5}.tp-colpv_ap{align-items:center;display:flex;flex:3}.tp-colpv_at{flex:1;margin-left:4px}.tp-svpv{border-radius:var(--elm-br);outline:none;overflow:hidden;position:relative}.tp-svpv.tp-v-disabled{opacity:.5}.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.tp-v-disabled{opacity:.5}.tp-hplv_c{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAABCAYAAABubagXAAAAQ0lEQVQoU2P8z8Dwn0GCgQEDi2OK/RBgYHjBgIpfovFh8j8YBIgzFGQxuqEgPhaDOT5gOhPkdCxOZeBg+IDFZZiGAgCaSSMYtcRHLgAAAABJRU5ErkJggg==);background-position:left top;background-repeat:no-repeat;background-size:100% 100%;border-radius:2px;display:block;height:4px;left:0;margin-top:-2px;position:absolute;top:50%;width:100%}.tp-hplv_m{border-radius:var(--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.tp-v-disabled{opacity:.5}.tp-aplv_b{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:4px 4px;background-position:0 0,2px 2px;border-radius:2px;display:block;height:4px;left:0;margin-top:-2px;overflow:hidden;position:absolute;top:50%;width:100%}.tp-aplv_c{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.tp-v-disabled .tp-coltxtv_mm{opacity:.5}.tp-coltxtv_w{flex:1}.tp-dfwv{position:absolute;top:8px;right:8px;width:256px}.tp-fldv{position:relative}.tp-fldv.tp-fldv-not .tp-fldv_b{display:none}.tp-fldv_t{padding-left:4px}.tp-fldv_b:disabled .tp-fldv_m{display:none}.tp-fldv_c{padding-left:4px}.tp-fldv_i{bottom:0;color:var(--cnt-bg);left:0;overflow:hidden;position:absolute;top:calc(var(--bld-us) + 4px);width:var(--bs-br)}.tp-fldv_i::before{background-color:currentColor;bottom:0;content:"";left:0;position:absolute;top:0;width:4px}.tp-fldv_b:hover+.tp-fldv_i{color:var(--cnt-bg-h)}.tp-fldv_b:focus+.tp-fldv_i{color:var(--cnt-bg-f)}.tp-fldv_b:active+.tp-fldv_i{color:var(--cnt-bg-a)}.tp-fldv.tp-v-disabled>.tp-fldv_i{opacity:.5}.tp-grlv{position:relative}.tp-grlv_g{display:block;height:calc(var(--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.tp-v-disabled .tp-p2dpv_p{opacity:.5}.tp-p2dpv_g{display:block;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}.tp-p2dpv_ax{opacity:.1;stroke:var(--in-fg);stroke-dasharray:1}.tp-p2dpv_l{opacity:.5;stroke:var(--in-fg);stroke-dasharray:1}.tp-p2dpv_m{border:var(--in-fg) solid 1px;border-radius:50%;box-sizing:border-box;height:4px;margin-left:-2px;margin-top:-2px;position:absolute;width:4px}.tp-p2dpv_p:focus .tp-p2dpv_m{background-color:var(--in-fg);border-width:0}.tp-popv{background-color:var(--bs-bg);border-radius: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-sprv.tp-v-disabled .tp-sprv_r{opacity:.5}.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{position:relative}.tp-tabv_t{align-items:flex-end;color:var(--cnt-bg);display:flex;overflow:hidden;position:relative}.tp-tabv_t:hover{color:var(--cnt-bg-h)}.tp-tabv_t:has(*:focus){color:var(--cnt-bg-f)}.tp-tabv_t:has(*:active){color:var(--cnt-bg-a)}.tp-tabv_t::before{background-color:currentColor;bottom:0;content:"";height:2px;left:0;pointer-events:none;position:absolute;right:0}.tp-tabv.tp-v-disabled .tp-tabv_t::before{opacity:.5}.tp-tabv.tp-tabv-nop .tp-tabv_t{height:calc(var(--bld-us) + 4px);position:relative}.tp-tabv.tp-tabv-nop .tp-tabv_t::before{background-color:var(--cnt-bg);bottom:0;content:"";height:2px;left:0;position:absolute;right:0}.tp-tabv_c{padding-bottom:var(--cnt-v-p);padding-left:4px;padding-top:var(--cnt-v-p)}.tp-tabv_i{bottom:0;color:var(--cnt-bg);left:0;overflow:hidden;position:absolute;top:calc(var(--bld-us) + 4px);width:var(--bs-br)}.tp-tabv_i::before{background-color:currentColor;bottom:0;content:"";left:0;position:absolute;top:0;width:4px}.tp-tabv_t:hover+.tp-tabv_i{color:var(--cnt-bg-h)}.tp-tabv_t:has(*:focus)+.tp-tabv_i{color:var(--cnt-bg-f)}.tp-tabv_t:has(*:active)+.tp-tabv_i{color:var(--cnt-bg-a)}.tp-tabv.tp-v-disabled>.tp-tabv_i{opacity:.5}.tp-tbiv{flex:1;min-width:0;position:relative}.tp-tbiv+.tp-tbiv{margin-left:2px}.tp-tbiv+.tp-tbiv.tp-v-disabled::before{opacity:.5}.tp-tbiv_b{display:block;padding-left:calc(var(--cnt-h-p) + 4px);padding-right:calc(var(--cnt-h-p) + 4px);position:relative;width:100%}.tp-tbiv_b:disabled{opacity:.5}.tp-tbiv_b::before{background-color:var(--cnt-bg);bottom:2px;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.tp-tbiv_b:hover::before{background-color:var(--cnt-bg-h)}.tp-tbiv_b:focus::before{background-color:var(--cnt-bg-f)}.tp-tbiv_b:active::before{background-color:var(--cnt-bg-a)}.tp-tbiv_t{color:var(--cnt-fg);height:calc(var(--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_b:disabled .tp-rotv_m{display:none}.tp-rotv_c>.tp-fldv.tp-v-lst>.tp-fldv_c{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c>.tp-fldv.tp-v-lst>.tp-fldv_i{border-bottom-left-radius:var(--bs-br)}.tp-rotv_c>.tp-fldv.tp-v-lst:not(.tp-fldv-expanded)>.tp-fldv_b{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c .tp-fldv.tp-v-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_c>.tp-tabv.tp-v-lst>.tp-tabv_c{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c>.tp-tabv.tp-v-lst>.tp-tabv_i{border-bottom-left-radius:var(--bs-br)}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst{margin-top:calc(-1*var(--cnt-v-p))}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst>.tp-tabv_t{border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br)}.tp-rotv.tp-v-disabled,.tp-rotv .tp-v-disabled{pointer-events:none}.tp-rotv.tp-v-hidden,.tp-rotv .tp-v-hidden{display:none}'),this.pool_.getAll().forEach(e=>{this.embedPluginStyle_(e)}),this.registerPlugin({plugins:[ju,Ou,ei,Uu]})}}const Ku=new n("3.1.9");r.BladeApi=o,r.ButtonApi=F,r.FolderApi=Qn,r.InputBindingApi=Yn,r.ListApi=No,r.MonitorBindingApi=qn,r.Pane=Gu,r.SeparatorApi=Li,r.SliderApi=Fo,r.TabApi=Di,r.TabPageApi=Hn,r.TextApi=zo,r.TpChangeEvent=u,r.VERSION=Ku,Object.defineProperty(r,"__esModule",{value:!0})})})(fs,fs.exports);var Wc=fs.exports,vs={exports:{}};(function(b,s){(function(r,n){n(s)})(Yr,function(r){class n{constructor(a){this.controller_=a}get element(){return this.controller_.view.element}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(a){this.controller_.viewProps.set("disabled",a)}get hidden(){return this.controller_.viewProps.get("hidden")}set hidden(a){this.controller_.viewProps.set("hidden",a)}dispose(){this.controller_.viewProps.set("disposed",!0)}}class o{constructor(a){this.target=a}}class l extends o{constructor(a,p,v,P){super(a),this.value=p,this.presetKey=v,this.last=P??!0}}function u(m){return m}function h(m){return m==null}const d={alreadydisposed:()=>"View has been already disposed",invalidparams:m=>`Invalid parameters for '${m.name}'`,nomatchingcontroller:m=>`No matching controller for '${m.key}'`,nomatchingview:m=>`No matching view for '${JSON.stringify(m.params)}'`,notbindable:()=>"Value is not bindable",propertynotfound:m=>`Property '${m.name}' not found`,shouldneverhappen:()=>"This error should never happen"};class w{constructor(a){var p;this.message=(p=d[a.type](a.context))!==null&&p!==void 0?p:"Unexpected error",this.name=this.constructor.name,this.stack=new Error(this.message).stack,this.type=a.type}static alreadyDisposed(){return new w({type:"alreadydisposed"})}static notBindable(){return new w({type:"notbindable"})}static propertyNotFound(a){return new w({type:"propertynotfound",context:{name:a}})}static shouldNeverHappen(){return new w({type:"shouldneverhappen"})}}class _{constructor(){this.observers_={}}on(a,p){let v=this.observers_[a];return v||(v=this.observers_[a]=[]),v.push({handler:p}),this}off(a,p){const v=this.observers_[a];return v&&(this.observers_[a]=v.filter(P=>P.handler!==p)),this}emit(a,p){const v=this.observers_[a];v&&v.forEach(P=>{P.handler(p)})}}const y="tp";function x(m){return(p,v)=>[y,"-",m,"v",p?`_${p}`:"",v?`-${v}`:""].join("")}function M(m,a){return p=>a(m(p))}function T(m){return m.rawValue}function D(m,a){m.emitter.on("change",M(T,a)),a(m.rawValue)}function E(m,a,p){D(m.value(a),p)}function F(m,a,p){p?m.classList.add(a):m.classList.remove(a)}function z(m,a){return p=>{F(m,a,p)}}function N(m,a){D(m,p=>{a.textContent=p??""})}const O=x("btn");class Q{constructor(a,p){this.element=a.createElement("div"),this.element.classList.add(O()),p.viewProps.bindClassModifiers(this.element);const v=a.createElement("button");v.classList.add(O("b")),p.viewProps.bindDisabled(v),this.element.appendChild(v),this.buttonElement=v;const P=a.createElement("div");P.classList.add(O("t")),N(p.props.value("title"),P),this.buttonElement.appendChild(P)}}class ${constructor(a,p){this.emitter=new _,this.onClick_=this.onClick_.bind(this),this.props=p.props,this.viewProps=p.viewProps,this.view=new Q(a,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class U{constructor(a,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:(P,S)=>P===S,this.emitter=new _,this.rawValue_=a}get constraint(){return this.constraint_}get rawValue(){return this.rawValue_}set rawValue(a){this.setRawValue(a,{forceEmit:!1,last:!0})}setRawValue(a,p){const v=p??{forceEmit:!1,last:!0},P=this.constraint_?this.constraint_.constrain(a):a,S=this.rawValue_;this.equals_(S,P)&&!v.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=P,this.emitter.emit("change",{options:v,previousRawValue:S,rawValue:P,sender:this}))}}class j{constructor(a){this.emitter=new _,this.value_=a}get rawValue(){return this.value_}set rawValue(a){this.setRawValue(a,{forceEmit:!1,last:!0})}setRawValue(a,p){const v=p??{forceEmit:!1,last:!0},P=this.value_;P===a&&!v.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.value_=a,this.emitter.emit("change",{options:v,previousRawValue:P,rawValue:this.value_,sender:this}))}}function X(m,a){const p=a==null?void 0:a.constraint,v=a==null?void 0:a.equals;return!p&&!v?new j(m):new U(m,a)}class Y{constructor(a){this.emitter=new _,this.valMap_=a;for(const p in this.valMap_)this.valMap_[p].emitter.on("change",()=>{this.emitter.emit("change",{key:p,sender:this})})}static createCore(a){return Object.keys(a).reduce((v,P)=>Object.assign(v,{[P]:X(a[P])}),{})}static fromObject(a){const p=this.createCore(a);return new Y(p)}get(a){return this.valMap_[a].rawValue}set(a,p){this.valMap_[a].rawValue=p}value(a){return this.valMap_[a]}}function Z(m,a){const v=Object.keys(a).reduce((P,S)=>{if(P===void 0)return;const B=a[S],G=B(m[S]);return G.succeeded?Object.assign(Object.assign({},P),{[S]:G.value}):void 0},{});return v}function ue(m,a){return m.reduce((p,v)=>{if(p===void 0)return;const P=a(v);if(!(!P.succeeded||P.value===void 0))return[...p,P.value]},[])}function ge(m){return m===null?!1:typeof m=="object"}function pe(m){return a=>p=>{if(!a&&p===void 0)return{succeeded:!1,value:void 0};if(a&&p===void 0)return{succeeded:!0,value:void 0};const v=m(p);return v!==void 0?{succeeded:!0,value:v}:{succeeded:!1,value:void 0}}}function me(m){return{custom:a=>pe(a)(m),boolean:pe(a=>typeof a=="boolean"?a:void 0)(m),number:pe(a=>typeof a=="number"?a:void 0)(m),string:pe(a=>typeof a=="string"?a:void 0)(m),function:pe(a=>typeof a=="function"?a:void 0)(m),constant:a=>pe(p=>p===a?a:void 0)(m),raw:pe(a=>a)(m),object:a=>pe(p=>{if(ge(p))return Z(p,a)})(m),array:a=>pe(p=>{if(Array.isArray(p))return ue(p,a)})(m)}}const he={optional:me(!0),required:me(!1)};function te(m,a){const p=he.required.object(a)(m);return p.succeeded?p.value:void 0}function q(m){console.warn([`Missing '${m.key}' of ${m.target} in ${m.place}.`,"Please rebuild plugins with the latest core package."].join(" "))}function Ce(m){return m&&m.parentElement&&m.parentElement.removeChild(m),null}class fe{constructor(a){this.value_=a}static create(a){return[new fe(a),(p,v)=>{a.setRawValue(p,v)}]}get emitter(){return this.value_.emitter}get rawValue(){return this.value_.rawValue}}const le=x("");function ie(m,a){return z(m,le(void 0,a))}class be extends Y{constructor(a){var p;super(a),this.onDisabledChange_=this.onDisabledChange_.bind(this),this.onParentChange_=this.onParentChange_.bind(this),this.onParentGlobalDisabledChange_=this.onParentGlobalDisabledChange_.bind(this),[this.globalDisabled_,this.setGlobalDisabled_]=fe.create(X(this.getGlobalDisabled_())),this.value("disabled").emitter.on("change",this.onDisabledChange_),this.value("parent").emitter.on("change",this.onParentChange_),(p=this.get("parent"))===null||p===void 0||p.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_)}static create(a){var p,v,P;const S=a??{};return new be(Y.createCore({disabled:(p=S.disabled)!==null&&p!==void 0?p:!1,disposed:!1,hidden:(v=S.hidden)!==null&&v!==void 0?v:!1,parent:(P=S.parent)!==null&&P!==void 0?P:null}))}get globalDisabled(){return this.globalDisabled_}bindClassModifiers(a){D(this.globalDisabled_,ie(a,"disabled")),E(this,"hidden",ie(a,"hidden"))}bindDisabled(a){D(this.globalDisabled_,p=>{a.disabled=p})}bindTabIndex(a){D(this.globalDisabled_,p=>{a.tabIndex=p?-1:0})}handleDispose(a){this.value("disposed").emitter.on("change",p=>{p&&a()})}getGlobalDisabled_(){const a=this.get("parent");return(a?a.globalDisabled.rawValue:!1)||this.get("disabled")}updateGlobalDisabled_(){this.setGlobalDisabled_(this.getGlobalDisabled_())}onDisabledChange_(){this.updateGlobalDisabled_()}onParentGlobalDisabledChange_(){this.updateGlobalDisabled_()}onParentChange_(a){var p;const v=a.previousRawValue;v==null||v.globalDisabled.emitter.off("change",this.onParentGlobalDisabledChange_),(p=this.get("parent"))===null||p===void 0||p.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_),this.updateGlobalDisabled_()}}function V(){return["veryfirst","first","last","verylast"]}const ce=x(""),Ve={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class Te{constructor(a){this.parent_=null,this.blade=a.blade,this.view=a.view,this.viewProps=a.viewProps;const p=this.view.element;this.blade.value("positions").emitter.on("change",()=>{V().forEach(v=>{p.classList.remove(ce(void 0,Ve[v]))}),this.blade.get("positions").forEach(v=>{p.classList.add(ce(void 0,Ve[v]))})}),this.viewProps.handleDispose(()=>{Ce(p)})}get parent(){return this.parent_}set parent(a){if(this.parent_=a,!("parent"in this.viewProps.valMap_)){q({key:"parent",target:be.name,place:"BladeController.parent"});return}this.viewProps.set("parent",this.parent_?this.parent_.viewProps:null)}}const _e="http://www.w3.org/2000/svg";function Ze(m){m.offsetHeight}function gn(m,a){const p=m.style.transition;m.style.transition="none",a(),m.style.transition=p}function Ue(m){return m.ontouchstart!==void 0}function wn(m){for(;m.childNodes.length>0;)m.removeChild(m.childNodes[0])}function $t(m){return m.relatedTarget?m.relatedTarget:"explicitOriginalTarget"in m?m.explicitOriginalTarget:null}const rt=x("lbl");function vt(m,a){const p=m.createDocumentFragment();return a.split(`
93
- `).map(P=>m.createTextNode(P)).forEach((P,S)=>{S>0&&p.appendChild(m.createElement("br")),p.appendChild(P)}),p}class Oe{constructor(a,p){this.element=a.createElement("div"),this.element.classList.add(rt()),p.viewProps.bindClassModifiers(this.element);const v=a.createElement("div");v.classList.add(rt("l")),E(p.props,"label",S=>{h(S)?this.element.classList.add(rt(void 0,"nol")):(this.element.classList.remove(rt(void 0,"nol")),wn(v),v.appendChild(vt(a,S)))}),this.element.appendChild(v),this.labelElement=v;const P=a.createElement("div");P.classList.add(rt("v")),this.element.appendChild(P),this.valueElement=P}}class We extends Te{constructor(a,p){const v=p.valueController.viewProps;super(Object.assign(Object.assign({},p),{view:new Oe(a,{props:p.props,viewProps:v}),viewProps:v})),this.props=p.props,this.valueController=p.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class Xt extends Te{constructor(a){super(a),this.value=a.value}}class ot extends Y{constructor(a){super(a)}static create(a){const p={completed:!0,expanded:a,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null},v=Y.createCore(p);return new ot(v)}get styleExpanded(){var a;return(a=this.get("temporaryExpanded"))!==null&&a!==void 0?a:this.get("expanded")}get styleHeight(){if(!this.styleExpanded)return"0";const a=this.get("expandedHeight");return this.get("shouldFixHeight")&&!h(a)?`${a}px`:"auto"}bindExpandedClass(a,p){const v=()=>{this.styleExpanded?a.classList.add(p):a.classList.remove(p)};E(this,"expanded",v),E(this,"temporaryExpanded",v)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function _n(m){return ot.create(m)}function $n(m,a){let p=0;return gn(a,()=>{m.set("expandedHeight",null),m.set("temporaryExpanded",!0),Ze(a),p=a.clientHeight,m.set("temporaryExpanded",null),Ze(a)}),p}function yn(m,a){a.style.height=m.styleHeight}function xn(m,a){m.value("expanded").emitter.on("beforechange",()=>{m.set("completed",!1),h(m.get("expandedHeight"))&&m.set("expandedHeight",$n(m,a)),m.set("shouldFixHeight",!0),Ze(a)}),m.emitter.on("change",()=>{yn(m,a)}),yn(m,a),a.addEventListener("transitionend",p=>{p.propertyName==="height"&&m.cleanUpTransition()})}class ut{constructor(a,p){const v=x(p.viewName);this.element=a.createElement("div"),this.element.classList.add(v()),p.viewProps.bindClassModifiers(this.element)}}class bt extends Xt{constructor(a,p){const v=p.valueController.viewProps;super(Object.assign(Object.assign({},p),{value:p.valueController.value,view:new Oe(a,{props:p.props,viewProps:v}),viewProps:v})),this.props=p.props,this.valueController=p.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class Cn{constructor(){this.disabled=!1,this.emitter=new _}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class Yt{constructor(a,p){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=a,this.emitter=new _,this.interval_=p,this.setTimer_()}get disabled(){return this.disabled_}set disabled(a){this.disabled_=a,this.disabled_?this.clearTimer_():this.setTimer_()}dispose(){this.clearTimer_()}clearTimer_(){if(this.timerId_===null)return;const a=this.doc_.defaultView;a&&a.clearInterval(this.timerId_),this.timerId_=null}setTimer_(){if(this.clearTimer_(),this.interval_<=0)return;const a=this.doc_.defaultView;a&&(this.timerId_=a.setInterval(this.onTick_,this.interval_))}onTick_(){this.disabled_||this.emitter.emit("tick",{sender:this})}}class Pn{constructor(a){this.constraints=a}constrain(a){return this.constraints.reduce((p,v)=>v.constrain(p),a)}}function ht(m,a){if(m instanceof a)return m;if(m instanceof Pn){const p=m.constraints.reduce((v,P)=>v||(P instanceof a?P:null),null);if(p)return p}return null}class at{constructor(a){this.values=Y.fromObject({max:a.max,min:a.min})}constrain(a){const p=this.values.get("max"),v=this.values.get("min");return Math.min(Math.max(a,v),p)}}class gt{constructor(a){this.values=Y.fromObject({max:a.max,min:a.min})}get maxValue(){return this.values.get("max")}get minValue(){return this.values.get("min")}constrain(a){const p=this.values.get("max"),v=this.values.get("min");let P=a;return h(v)||(P=Math.max(P,v)),h(p)||(P=Math.min(P,p)),P}}class I{constructor(a,p=0){this.step=a,this.origin=p}constrain(a){const p=this.origin%this.step,v=Math.round((a-p)/this.step);return p+v*this.step}}const K=x("pop");class H{constructor(a,p){this.element=a.createElement("div"),this.element.classList.add(K()),p.viewProps.bindClassModifiers(this.element),D(p.shows,z(this.element,K(void 0,"v")))}}class se{constructor(a,p){this.shows=X(!1),this.viewProps=p.viewProps,this.view=new H(a,{shows:this.shows,viewProps:this.viewProps})}}const ye=x("txt");class De{constructor(a,p){this.onChange_=this.onChange_.bind(this),this.element=a.createElement("div"),this.element.classList.add(ye()),p.viewProps.bindClassModifiers(this.element),this.props_=p.props,this.props_.emitter.on("change",this.onChange_);const v=a.createElement("input");v.classList.add(ye("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 a=this.props_.get("formatter");this.inputElement.value=a(this.value_.rawValue)}onChange_(){this.refresh()}}class Dt{constructor(a,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 De(a,{props:p.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(a){const v=a.currentTarget.value,P=this.parser_(v);h(P)||(this.value.rawValue=P),this.view.refresh()}}function qt(m){return m==="false"?!1:!!m}class Be{constructor(a){this.text=a}evaluate(){return Number(this.text)}toString(){return this.text}}const Ne={"**":(m,a)=>Math.pow(m,a),"*":(m,a)=>m*a,"/":(m,a)=>m/a,"%":(m,a)=>m%a,"+":(m,a)=>m+a,"-":(m,a)=>m-a,"<<":(m,a)=>m<<a,">>":(m,a)=>m>>a,">>>":(m,a)=>m>>>a,"&":(m,a)=>m&a,"^":(m,a)=>m^a,"|":(m,a)=>m|a};class bs{constructor(a,p,v){this.left=p,this.operator=a,this.right=v}evaluate(){const a=Ne[this.operator];if(!a)throw new Error(`unexpected binary operator: '${this.operator}`);return a(this.left.evaluate(),this.right.evaluate())}toString(){return["b(",this.left.toString(),this.operator,this.right.toString(),")"].join(" ")}}const gs={"+":m=>m,"-":m=>-m,"~":m=>~m};class ws{constructor(a,p){this.operator=a,this.expression=p}evaluate(){const a=gs[this.operator];if(!a)throw new Error(`unexpected unary operator: '${this.operator}`);return a(this.expression.evaluate())}toString(){return["u(",this.operator,this.expression.toString(),")"].join(" ")}}function Xn(m){return(a,p)=>{for(let v=0;v<m.length;v++){const P=m[v](a,p);if(P!=="")return P}return""}}function wt(m,a){var p;const v=m.substr(a).match(/^\s+/);return(p=v&&v[0])!==null&&p!==void 0?p:""}function Yn(m,a){const p=m.substr(a,1);return p.match(/^[1-9]$/)?p:""}function Ee(m,a){var p;const v=m.substr(a).match(/^[0-9]+/);return(p=v&&v[0])!==null&&p!==void 0?p:""}function qn(m,a){const p=Ee(m,a);if(p!=="")return p;const v=m.substr(a,1);if(a+=1,v!=="-"&&v!=="+")return"";const P=Ee(m,a);return P===""?"":v+P}function Je(m,a){const p=m.substr(a,1);if(a+=1,p.toLowerCase()!=="e")return"";const v=qn(m,a);return v===""?"":p+v}function Mi(m,a){const p=m.substr(a,1);if(p==="0")return p;const v=Yn(m,a);return a+=v.length,v===""?"":v+Ee(m,a)}function Qt(m,a){const p=Mi(m,a);if(a+=p.length,p==="")return"";const v=m.substr(a,1);if(a+=v.length,v!==".")return"";const P=Ee(m,a);return a+=P.length,p+v+P+Je(m,a)}function Ai(m,a){const p=m.substr(a,1);if(a+=p.length,p!==".")return"";const v=Ee(m,a);return a+=v.length,v===""?"":p+v+Je(m,a)}function kn(m,a){const p=Mi(m,a);return a+=p.length,p===""?"":p+Je(m,a)}const Qn=Xn([Qt,Ai,kn]);function Zn(m,a){var p;const v=m.substr(a).match(/^[01]+/);return(p=v&&v[0])!==null&&p!==void 0?p:""}function _s(m,a){const p=m.substr(a,2);if(a+=p.length,p.toLowerCase()!=="0b")return"";const v=Zn(m,a);return v===""?"":p+v}function ys(m,a){var p;const v=m.substr(a).match(/^[0-7]+/);return(p=v&&v[0])!==null&&p!==void 0?p:""}function xs(m,a){const p=m.substr(a,2);if(a+=p.length,p.toLowerCase()!=="0o")return"";const v=ys(m,a);return v===""?"":p+v}function Cs(m,a){var p;const v=m.substr(a).match(/^[0-9a-f]+/i);return(p=v&&v[0])!==null&&p!==void 0?p:""}function Wn(m,a){const p=m.substr(a,2);if(a+=p.length,p.toLowerCase()!=="0x")return"";const v=Cs(m,a);return v===""?"":p+v}const Ps=Xn([_s,xs,Wn]),ks=Xn([Ps,Qn]);function Zt(m,a){const p=ks(m,a);return a+=p.length,p===""?null:{evaluable:new Be(p),cursor:a}}function Si(m,a){const p=m.substr(a,1);if(a+=p.length,p!=="(")return null;const v=Jn(m,a);if(!v)return null;a=v.cursor,a+=wt(m,a).length;const P=m.substr(a,1);return a+=P.length,P!==")"?null:{evaluable:v.evaluable,cursor:a}}function Ms(m,a){var p;return(p=Zt(m,a))!==null&&p!==void 0?p:Si(m,a)}function Mn(m,a){const p=Ms(m,a);if(p)return p;const v=m.substr(a,1);if(a+=v.length,v!=="+"&&v!=="-"&&v!=="~")return null;const P=Mn(m,a);return P?(a=P.cursor,{cursor:a,evaluable:new ws(v,P.evaluable)}):null}function As(m,a,p){p+=wt(a,p).length;const v=m.filter(P=>a.startsWith(P,p))[0];return v?(p+=v.length,p+=wt(a,p).length,{cursor:p,operator:v}):null}function It(m,a){return(p,v)=>{const P=m(p,v);if(!P)return null;v=P.cursor;let S=P.evaluable;for(;;){const B=As(a,p,v);if(!B)break;v=B.cursor;const G=m(p,v);if(!G)return null;v=G.cursor,S=new bs(B.operator,S,G.evaluable)}return S?{cursor:v,evaluable:S}:null}}const Li=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((m,a)=>It(m,a),Mn);function Jn(m,a){return a+=wt(m,a).length,Li(m,a)}function Ss(m){const a=Jn(m,0);return!a||a.cursor+wt(m,a.cursor).length!==m.length?null:a.evaluable}function Wt(m){var a;const p=Ss(m);return(a=p==null?void 0:p.evaluate())!==null&&a!==void 0?a:null}function Ls(m){if(typeof m=="number")return m;if(typeof m=="string"){const a=Wt(m);if(!h(a))return a}return 0}function Se(m){return a=>a.toFixed(Math.max(Math.min(m,20),0))}const Vs=Se(0);function An(m){return Vs(m)+"%"}function Vi(m){return String(m)}function Hn(m,a){for(;m.length<a;)m.push(void 0)}function Di(m){const a=[];return Hn(a,m),X(a)}function Ii(m){const a=m.indexOf(void 0);return a<0?m:m.slice(0,a)}function Ds(m,a){const p=[...Ii(m),a];return p.length>m.length?p.splice(0,p.length-m.length):Hn(p,m.length),p}function Tt({primary:m,secondary:a,forward:p,backward:v}){let P=!1;function S(B){P||(P=!0,B(),P=!1)}m.emitter.on("change",B=>{S(()=>{a.setRawValue(p(m,a),B.options)})}),a.emitter.on("change",B=>{S(()=>{m.setRawValue(v(m,a),B.options)}),S(()=>{a.setRawValue(p(m,a),B.options)})}),S(()=>{a.setRawValue(p(m,a),{forceEmit:!1,last:!0})})}function Et(m,a){const p=m*(a.altKey?.1:1)*(a.shiftKey?10:1);return a.upKey?+p:a.downKey?-p:0}function Jt(m){return{altKey:m.altKey,downKey:m.key==="ArrowDown",shiftKey:m.shiftKey,upKey:m.key==="ArrowUp"}}function ei(m){return{altKey:m.altKey,downKey:m.key==="ArrowLeft",shiftKey:m.shiftKey,upKey:m.key==="ArrowRight"}}function Is(m){return m==="ArrowUp"||m==="ArrowDown"}function Ti(m){return Is(m)||m==="ArrowLeft"||m==="ArrowRight"}function ti(m,a){var p,v;const P=a.ownerDocument.defaultView,S=a.getBoundingClientRect();return{x:m.pageX-(((p=P&&P.scrollX)!==null&&p!==void 0?p:0)+S.left),y:m.pageY-(((v=P&&P.scrollY)!==null&&v!==void 0?v:0)+S.top)}}class Sn{constructor(a){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_=a,this.emitter=new _,a.addEventListener("touchstart",this.onTouchStart_,{passive:!1}),a.addEventListener("touchmove",this.onTouchMove_,{passive:!0}),a.addEventListener("touchend",this.onTouchEnd_),a.addEventListener("mousedown",this.onMouseDown_)}computePosition_(a){const p=this.elem_.getBoundingClientRect();return{bounds:{width:p.width,height:p.height},point:a?{x:a.x,y:a.y}:null}}onMouseDown_(a){var p;a.preventDefault(),(p=a.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:a.altKey,data:this.computePosition_(ti(a,this.elem_)),sender:this,shiftKey:a.shiftKey})}onDocumentMouseMove_(a){this.emitter.emit("move",{altKey:a.altKey,data:this.computePosition_(ti(a,this.elem_)),sender:this,shiftKey:a.shiftKey})}onDocumentMouseUp_(a){const p=this.elem_.ownerDocument;p.removeEventListener("mousemove",this.onDocumentMouseMove_),p.removeEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("up",{altKey:a.altKey,data:this.computePosition_(ti(a,this.elem_)),sender:this,shiftKey:a.shiftKey})}onTouchStart_(a){a.preventDefault();const p=a.targetTouches.item(0),v=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:a.altKey,data:this.computePosition_(p?{x:p.clientX-v.left,y:p.clientY-v.top}:void 0),sender:this,shiftKey:a.shiftKey}),this.lastTouch_=p}onTouchMove_(a){const p=a.targetTouches.item(0),v=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:a.altKey,data:this.computePosition_(p?{x:p.clientX-v.left,y:p.clientY-v.top}:void 0),sender:this,shiftKey:a.shiftKey}),this.lastTouch_=p}onTouchEnd_(a){var p;const v=(p=a.targetTouches.item(0))!==null&&p!==void 0?p:this.lastTouch_,P=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:a.altKey,data:this.computePosition_(v?{x:v.clientX-P.left,y:v.clientY-P.top}:void 0),sender:this,shiftKey:a.shiftKey})}}function Pe(m,a,p,v,P){const S=(m-a)/(p-a);return v+S*(P-v)}function Ei(m){return String(m.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function Ot(m,a,p){return Math.min(Math.max(m,a),p)}const Re=x("txt");class Ts{constructor(a,p){this.onChange_=this.onChange_.bind(this),this.props_=p.props,this.props_.emitter.on("change",this.onChange_),this.element=a.createElement("div"),this.element.classList.add(Re(),Re(void 0,"num")),p.arrayPosition&&this.element.classList.add(Re(void 0,p.arrayPosition)),p.viewProps.bindClassModifiers(this.element);const v=a.createElement("input");v.classList.add(Re("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(Re()),this.inputElement.classList.add(Re("i"));const P=a.createElement("div");P.classList.add(Re("k")),this.element.appendChild(P),this.knobElement=P;const S=a.createElementNS(_e,"svg");S.classList.add(Re("g")),this.knobElement.appendChild(S);const B=a.createElementNS(_e,"path");B.classList.add(Re("gb")),S.appendChild(B),this.guideBodyElem_=B;const G=a.createElementNS(_e,"path");G.classList.add(Re("gh")),S.appendChild(G),this.guideHeadElem_=G;const oe=a.createElement("div");oe.classList.add(x("tt")()),this.knobElement.appendChild(oe),this.tooltipElem_=oe,p.value.emitter.on("change",this.onChange_),this.value=p.value,this.refresh()}onDraggingChange_(a){if(a.rawValue===null){this.element.classList.remove(Re(void 0,"drg"));return}this.element.classList.add(Re(void 0,"drg"));const p=a.rawValue/this.props_.get("draggingScale"),v=p+(p>0?-1:p<0?1:0),P=Ot(-v,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${v+P},0 L${v},4 L${v+P},8`,`M ${p},-1 L${p},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${p},4`);const S=this.props_.get("formatter");this.tooltipElem_.textContent=S(this.value.rawValue),this.tooltipElem_.style.left=`${p}px`}refresh(){const a=this.props_.get("formatter");this.inputElement.value=a(this.value.rawValue)}onChange_(){this.refresh()}}class Ht{constructor(a,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_=X(null),this.view=new Ts(a,{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 P=new Sn(this.view.knobElement);P.emitter.on("down",this.onPointerDown_),P.emitter.on("move",this.onPointerMove_),P.emitter.on("up",this.onPointerUp_)}constrainValue_(a){var p,v;const P=(p=this.sliderProps_)===null||p===void 0?void 0:p.get("minValue"),S=(v=this.sliderProps_)===null||v===void 0?void 0:v.get("maxValue");let B=a;return P!==void 0&&(B=Math.max(B,P)),S!==void 0&&(B=Math.min(B,S)),B}onInputChange_(a){const v=a.currentTarget.value,P=this.parser_(v);h(P)||(this.value.rawValue=this.constrainValue_(P)),this.view.refresh()}onInputKeyDown_(a){const p=Et(this.baseStep_,Jt(a));p!==0&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+p),{forceEmit:!1,last:!1})}onInputKeyUp_(a){Et(this.baseStep_,Jt(a))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}onPointerDown_(){this.originRawValue_=this.value.rawValue,this.dragging_.rawValue=0}computeDraggingValue_(a){if(!a.point)return null;const p=a.point.x-a.bounds.width/2;return this.constrainValue_(this.originRawValue_+p*this.props.get("draggingScale"))}onPointerMove_(a){const p=this.computeDraggingValue_(a.data);p!==null&&(this.value.setRawValue(p,{forceEmit:!1,last:!1}),this.dragging_.rawValue=this.value.rawValue-this.originRawValue_)}onPointerUp_(a){const p=this.computeDraggingValue_(a.data);p!==null&&(this.value.setRawValue(p,{forceEmit:!0,last:!0}),this.dragging_.rawValue=null)}}function Xe(m,a){m.write(a)}function Bt(m){const a=m?ht(m,I):null;return a?a.step:null}function en(m,a){const p=m&&ht(m,I);return p?Ei(p.step):Math.max(Ei(a),2)}function ni(m){const a=Bt(m);return a??1}function Ln(m,a){var p;const v=m&&ht(m,I),P=Math.abs((p=v==null?void 0:v.step)!==null&&p!==void 0?p:a);return P===0?.1:Math.pow(10,Math.floor(Math.log10(P))-1)}function Nt(m){return[m[0],m[1],m[2]]}function Oi(m){const a=Ot(Math.floor(m),0,255).toString(16);return a.length===1?`0${a}`:a}function tn(m,a="#"){const p=Nt(m.getComponents("rgb")).map(Oi).join("");return`${a}${p}`}function Bi(m,a="#"){const p=m.getComponents("rgb"),v=[p[0],p[1],p[2],p[3]*255].map(Oi).join("");return`${a}${v}`}function Es(m,a){const p=Se(a==="float"?2:0);return`rgb(${Nt(m.getComponents("rgb",a)).map(P=>p(P)).join(", ")})`}function Ni(m){return a=>Es(a,m)}function Fi(m,a){const p=Se(2),v=Se(a==="float"?2:0);return`rgba(${m.getComponents("rgb",a).map((S,B)=>(B===3?p:v)(S)).join(", ")})`}function Os(m){return a=>Fi(a,m)}function Vn(m){const a=[Se(0),An,An];return`hsl(${Nt(m.getComponents("hsl")).map((v,P)=>a[P](v)).join(", ")})`}function Bs(m){const a=[Se(0),An,An,Se(2)];return`hsla(${m.getComponents("hsl").map((v,P)=>a[P](v)).join(", ")})`}function zi(m,a){const p=Se(a==="float"?2:0),v=["r","g","b"];return`{${Nt(m.getComponents("rgb",a)).map((S,B)=>`${v[B]}: ${p(S)}`).join(", ")}}`}function ji(m){return a=>zi(a,m)}function Ns(m,a){const p=Se(2),v=Se(a==="float"?2:0),P=["r","g","b","a"];return`{${m.getComponents("rgb",a).map((B,G)=>{const oe=G===3?p:v;return`${P[G]}: ${oe(B)}`}).join(", ")}}`}function Fs(m){return a=>Ns(a,m)}[...["int","float"].reduce((m,a)=>[...m,{format:{alpha:!1,mode:"rgb",notation:"func",type:a},stringifier:Ni(a)},{format:{alpha:!0,mode:"rgb",notation:"func",type:a},stringifier:Os(a)},{format:{alpha:!1,mode:"rgb",notation:"object",type:a},stringifier:ji(a)},{format:{alpha:!0,mode:"rgb",notation:"object",type:a},stringifier:Fs(a)}],[])];class zs{constructor(a){this.components=a.components,this.asm_=a.assembly}constrain(a){const p=this.asm_.toComponents(a).map((v,P)=>{var S,B;return(B=(S=this.components[P])===null||S===void 0?void 0:S.constrain(v))!==null&&B!==void 0?B:v});return this.asm_.fromComponents(p)}}const Ui=x("pndtxt");class js{constructor(a,p){this.textViews=p.textViews,this.element=a.createElement("div"),this.element.classList.add(Ui()),this.textViews.forEach(v=>{const P=a.createElement("div");P.classList.add(Ui("a")),P.appendChild(v.element),this.element.appendChild(P)})}}function ii(m,a,p){return new Ht(m,{arrayPosition:p===0?"fst":p===a.axes.length-1?"lst":"mid",baseStep:a.axes[p].baseStep,parser:a.parser,props:a.axes[p].textProps,value:X(0,{constraint:a.axes[p].constraint}),viewProps:a.viewProps})}class _t{constructor(a,p){this.value=p.value,this.viewProps=p.viewProps,this.acs_=p.axes.map((v,P)=>ii(a,p,P)),this.acs_.forEach((v,P)=>{Tt({primary:this.value,secondary:v.value,forward:S=>p.assembly.toComponents(S.rawValue)[P],backward:(S,B)=>{const G=p.assembly.toComponents(S.rawValue);return G[P]=B.rawValue,p.assembly.fromComponents(G)}})}),this.view=new js(a,{textViews:this.acs_.map(v=>v.view)})}}function Us(m,a){return"step"in m&&!h(m.step)?new I(m.step,a):null}function nn(m){return!h(m.max)&&!h(m.min)?new at({max:m.max,min:m.min}):!h(m.max)||!h(m.min)?new gt({max:m.max,min:m.min}):null}const Rs={monitor:{defaultInterval:200,defaultLineCount:3}},He=x("grl");class Ri{constructor(a,p){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=a.createElement("div"),this.element.classList.add(He()),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=a.createElementNS(_e,"svg");v.classList.add(He("g")),v.style.height=`calc(var(--bld-us) * ${p.lineCount})`,this.element.appendChild(v),this.svgElem_=v;const P=a.createElementNS(_e,"polyline");this.svgElem_.appendChild(P),this.lineElem_=P;const S=a.createElement("div");S.classList.add(He("t"),x("tt")()),this.element.appendChild(S),this.tooltipElem_=S,p.value.emitter.on("change",this.onValueUpdate_),this.value=p.value,this.update_()}get graphElement(){return this.svgElem_}update_(){const a=this.svgElem_.getBoundingClientRect(),p=this.value.rawValue.length-1,v=this.props_.get("minValue"),P=this.props_.get("maxValue"),S=[];this.value.rawValue.forEach(($e,ne)=>{if($e===void 0)return;const ft=Pe(ne,0,p,0,a.width),nr=Pe($e,v,P,a.height,0);S.push([ft,nr].join(","))}),this.lineElem_.setAttributeNS(null,"points",S.join(" "));const B=this.tooltipElem_,G=this.value.rawValue[this.cursor_.rawValue];if(G===void 0){B.classList.remove(He("t","a"));return}const oe=Pe(this.cursor_.rawValue,0,p,0,a.width),Ke=Pe(G,v,P,a.height,0);B.style.left=`${oe}px`,B.style.top=`${Ke}px`,B.textContent=`${this.formatter_(G)}`,B.classList.contains(He("t","a"))||(B.classList.add(He("t","a"),He("t","in")),Ze(B),B.classList.remove(He("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class Gs{constructor(a,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_=X(-1),this.view=new Ri(a,{cursor:this.cursor_,formatter:p.formatter,lineCount:p.lineCount,props:this.props_,value:this.value,viewProps:this.viewProps}),!Ue(a))this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_);else{const v=new Sn(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_(a){const p=this.view.element.getBoundingClientRect();this.cursor_.rawValue=Math.floor(Pe(a.offsetX,0,p.width,0,this.value.rawValue.length))}onGraphPointerDown_(a){this.onGraphPointerMove_(a)}onGraphPointerMove_(a){if(!a.data.point){this.cursor_.rawValue=-1;return}this.cursor_.rawValue=Math.floor(Pe(a.data.point.x,0,a.data.bounds.width,0,this.value.rawValue.length))}onGraphPointerUp_(){this.cursor_.rawValue=-1}}class Gi{constructor(a){this.controller_=a}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(a){this.controller_.viewProps.set("disabled",a)}get title(){var a;return(a=this.controller_.props.get("title"))!==null&&a!==void 0?a:""}set title(a){this.controller_.props.set("title",a)}on(a,p){const v=p.bind(this);return this.controller_.emitter.on(a,()=>{v(new o(this))}),this}}class Ks extends o{constructor(a,p,v){super(a),this.cell=p,this.index=v}}class Ki extends n{constructor(a){super(a),this.cellToApiMap_=new Map,this.emitter_=new _;const p=this.controller_.valueController;p.cellControllers.forEach((v,P)=>{const S=new Gi(v);this.cellToApiMap_.set(v,S),v.emitter.on("click",()=>{const B=P%p.size[0],G=Math.floor(P/p.size[0]);this.emitter_.emit("click",{event:new Ks(this,S,[B,G])})})})}cell(a,p){const v=this.controller_.valueController,P=v.cellControllers[p*v.size[0]+a];return this.cellToApiMap_.get(P)}on(a,p){const v=p.bind(this);return this.emitter_.on(a,P=>{v(P.event)}),this}}class si{constructor(a,p){this.size=p.size;const[v,P]=this.size,S=[];for(let B=0;B<P;B++)for(let G=0;G<v;G++){const oe=new $(a,{props:Y.fromObject(Object.assign({},p.cellConfig(G,B))),viewProps:be.create()});S.push(oe)}this.cellCs_=S,this.viewProps=be.create(),this.viewProps.handleDispose(()=>{this.cellCs_.forEach(B=>{B.viewProps.set("disposed",!0)})}),this.view=new ut(a,{viewProps:this.viewProps,viewName:"btngrid"}),this.view.element.style.gridTemplateColumns=`repeat(${v}, 1fr)`,this.cellCs_.forEach(B=>{this.view.element.appendChild(B.view.element)})}get cellControllers(){return this.cellCs_}}const $s={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(m){const a=he,p=te(m,{cells:a.required.function,size:a.required.array(a.required.number),view:a.required.constant("buttongrid"),label:a.optional.string});return p?{params:p}:null},controller(m){return new We(m.document,{blade:m.blade,props:Y.fromObject({label:m.params.label}),valueController:new si(m.document,{cellConfig:m.params.cells,size:m.params.size})})},api(m){return!(m.controller instanceof We)||!(m.controller.valueController instanceof si)?null:new Ki(m.controller)}};class $i extends n{get label(){return this.controller_.props.get("label")}set label(a){this.controller_.props.set("label",a)}get value(){return this.controller_.valueController.value.rawValue}set value(a){this.controller_.valueController.value.rawValue=a}on(a,p){const v=p.bind(this);return this.controller_.valueController.value.emitter.on(a,P=>{v(new l(this,P.rawValue,void 0,P.options.last))}),this}}function Ge(m,a,p){return m*(1-p)+a*p}const Xs=20,Ys=.001,ri=100;function qs(m,a){let p=.25,v=.5,P=-1;for(let S=0;S<Xs;S++){const[B,G]=m.curve(v);if(v+=p*(B<a?1:-1),P=G,p*=.5,Math.abs(a-B)<Ys)break}return P}class dt{constructor(a=0,p=0,v=1,P=1){this.cache_=[],this.comps_=[a,p,v,P]}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(a){return h(a)||!Array.isArray(a)?!1:typeof a[0]=="number"&&typeof a[1]=="number"&&typeof a[2]=="number"&&typeof a[3]=="number"}static equals(a,p){return a.x1===p.x1&&a.y1===p.y1&&a.x2===p.x2&&a.y2===p.y2}curve(a){const p=Ge(0,this.x1,a),v=Ge(0,this.y1,a),P=Ge(this.x1,this.x2,a),S=Ge(this.y1,this.y2,a),B=Ge(this.x2,1,a),G=Ge(this.y2,1,a),oe=Ge(p,P,a),Ke=Ge(v,S,a),$e=Ge(P,B,a),ne=Ge(S,G,a);return[Ge(oe,$e,a),Ge(Ke,ne,a)]}y(a){if(this.cache_.length===0){const p=[];for(let v=0;v<ri;v++)p.push(qs(this,Pe(v,0,ri-1,0,1)));this.cache_=p}return this.cache_[Math.round(Pe(Ot(a,0,1),0,1,0,ri-1))]}toObject(){return[this.comps_[0],this.comps_[1],this.comps_[2],this.comps_[3]]}}const oi={toComponents:m=>m.toObject(),fromComponents:m=>new dt(...m)};function Qs(m){const a=Se(2);return`cubic-bezier(${m.toObject().map(v=>a(v)).join(", ")})`}const ai=[0,.5,.5,1];function Zs(m){const a=m.match(/^cubic-bezier\s*\(\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)\s*\)$/);if(!a)return new dt(...ai);const p=[a[1],a[2],a[3],a[4]].reduce((v,P)=>{if(!v)return null;const S=Number(P);return isNaN(S)?null:[...v,S]},[]);return new dt(...p??ai)}const yt=x("cbz");class Xi{constructor(a,p){this.element=a.createElement("div"),this.element.classList.add(yt()),p.viewProps.bindClassModifiers(this.element),p.foldable.bindExpandedClass(this.element,yt(void 0,"expanded")),E(p.foldable,"completed",z(this.element,yt(void 0,"cpl")));const v=a.createElement("div");v.classList.add(yt("h")),this.element.appendChild(v);const P=a.createElement("button");P.classList.add(yt("b")),p.viewProps.bindDisabled(P);const S=a.createElementNS(_e,"svg");S.innerHTML='<path d="M2 13C8 13 8 3 14 3"/>',P.appendChild(S),v.appendChild(P),this.buttonElement=P;const B=a.createElement("div");if(B.classList.add(yt("t")),v.appendChild(B),this.textElement=B,p.pickerLayout==="inline"){const G=a.createElement("div");G.classList.add(yt("p")),this.element.appendChild(G),this.pickerElement=G}else this.pickerElement=null}}const Dn=x("cbzp");class Yi{constructor(a,p){this.element=a.createElement("div"),this.element.classList.add(Dn()),p.viewProps.bindClassModifiers(this.element);const v=a.createElement("div");v.classList.add(Dn("g")),this.element.appendChild(v),this.graphElement=v;const P=a.createElement("div");P.classList.add(Dn("t")),this.element.appendChild(P),this.textElement=P}}function et(m,a){const p=new MutationObserver(P=>{for(const S of P)S.type==="childList"&&S.addedNodes.forEach(B=>{B.contains(B)&&(a(),p.disconnect())})}),v=m.ownerDocument;p.observe(v.body,{attributes:!0,childList:!0,subtree:!0})}const lt=x("cbzg");function Ws(m,a){return p=>a(m(p))}class Le{constructor(a,p){this.element=a.createElement("div"),this.element.classList.add(lt()),p.viewProps.bindClassModifiers(this.element),p.viewProps.bindTabIndex(this.element);const v=a.createElement("div");v.classList.add(lt("p")),this.element.appendChild(v),this.previewElement=v;const P=a.createElementNS(_e,"svg");P.classList.add(lt("g")),this.element.appendChild(P),this.svgElem_=P;const S=a.createElementNS(_e,"path");S.classList.add(lt("u")),this.svgElem_.appendChild(S),this.guideElem_=S;const B=a.createElementNS(_e,"polyline");B.classList.add(lt("l")),this.svgElem_.appendChild(B),this.lineElem_=B,this.handleElems_=[a.createElement("div"),a.createElement("div")],this.handleElems_.forEach(G=>{G.classList.add(lt("h")),this.element.appendChild(G)}),this.vectorElems_=[a.createElementNS(_e,"line"),a.createElementNS(_e,"line")],this.vectorElems_.forEach(G=>{G.classList.add(lt("v")),this.svgElem_.appendChild(G)}),this.value_=p.value,this.value_.emitter.on("change",this.onValueChange_.bind(this)),this.sel_=p.selection,this.handleElems_.forEach((G,oe)=>{D(this.sel_,Ws(Ke=>Ke===oe,z(G,lt("h","sel"))))}),et(this.element,()=>{this.refresh()})}getVertMargin_(a){return a*.25}valueToPosition(a,p){const v=this.element.getBoundingClientRect(),P=v.width,S=v.height,B=this.getVertMargin_(S);return{x:Pe(a,0,1,0,P),y:Pe(p,0,1,S-B,B)}}positionToValue(a,p){const v=this.element.getBoundingClientRect(),P=v.width,S=v.height,B=this.getVertMargin_(S);return{x:Ot(Pe(a,0,P,0,1),0,1),y:Pe(p,S-B,B,0,1)}}refresh(){this.guideElem_.setAttributeNS(null,"d",[0,1].map(S=>{const B=this.valueToPosition(0,S),G=this.valueToPosition(1,S);return[`M ${B.x},${B.y}`,`L ${G.x},${G.y}`].join(" ")}).join(" "));const a=this.value_.rawValue,p=[];let v=0;for(;;){const S=this.valueToPosition(...a.curve(v));if(p.push([S.x,S.y].join(",")),v>=1)break;v=Math.min(v+.05,1)}this.lineElem_.setAttributeNS(null,"points",p.join(" "));const P=a.toObject();[0,1].forEach(S=>{const B=this.valueToPosition(S,S),G=this.valueToPosition(P[S*2],P[S*2+1]),oe=this.vectorElems_[S];oe.setAttributeNS(null,"x1",String(B.x)),oe.setAttributeNS(null,"y1",String(B.y)),oe.setAttributeNS(null,"x2",String(G.x)),oe.setAttributeNS(null,"y2",String(G.y));const Ke=this.handleElems_[S];Ke.style.left=`${G.x}px`,Ke.style.top=`${G.y}px`})}onValueChange_(){this.refresh()}}const qi=24,sn=400,li=1e3,mt=x("cbzprv");class Ft{constructor(a,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=a.createElement("div"),this.element.classList.add(mt()),p.viewProps.bindClassModifiers(this.element);const v=a.createElementNS(_e,"svg");v.classList.add(mt("g")),this.element.appendChild(v),this.svgElem_=v;const P=a.createElementNS(_e,"path");P.classList.add(mt("t")),this.svgElem_.appendChild(P),this.ticksElem_=P;const S=a.createElement("div");S.classList.add(mt("m")),this.element.appendChild(S),this.markerElem_=S,this.value_=p.value,this.value_.emitter.on("change",this.onValueChange_),p.viewProps.handleDispose(this.onDispose_),et(this.element,()=>{this.refresh()})}play(){this.stop(),this.updateMarker_(0),this.markerElem_.classList.add(mt("m","a")),this.startTime_=new Date().getTime()+sn,this.stopped_=!1,requestAnimationFrame(this.onTimer_)}stop(){this.stopped_=!0,this.markerElem_.classList.remove(mt("m","a"))}onDispose_(){this.stop()}updateMarker_(a){const p=this.value_.rawValue.y(Ot(a,0,1));this.markerElem_.style.left=`${p*100}%`}refresh(){const a=this.svgElem_.getBoundingClientRect(),p=a.width,v=a.height,P=[],S=this.value_.rawValue;for(let B=0;B<qi;B++){const G=Pe(B,0,qi-1,0,1),oe=Pe(S.y(G),0,1,0,p);P.push(`M ${oe},0 v${v}`)}this.ticksElem_.setAttributeNS(null,"d",P.join(" "))}onTimer_(){if(this.startTime_===null)return;const a=new Date().getTime()-this.startTime_,p=a/li;this.updateMarker_(p),a>li+sn&&this.stop(),this.stopped_||requestAnimationFrame(this.onTimer_)}onValueChange_(){this.refresh(),this.play()}}function Ie(m,a,p,v){const P=p-m,S=v-a;return Math.sqrt(P*P+S*S)}function rn(m,a,p,v){const P=Ie(m,a,p,v),S=Math.atan2(v-a,p-m),B=Math.round(S/(Math.PI/4))*Math.PI/4;return{x:m+Math.cos(B)*P,y:a+Math.sin(B)*P}}class tt{constructor(a,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_=X(0),this.viewProps=p.viewProps,this.view=new Le(a,{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 Ft(a,{value:this.value,viewProps:this.viewProps}),this.prevView_.element.addEventListener("mousedown",P=>{P.stopImmediatePropagation(),P.preventDefault(),this.prevView_.play()}),this.view.previewElement.appendChild(this.prevView_.element);const v=new Sn(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_(a,p,v){const P=this.sel_.rawValue,S=this.value.rawValue.toObject(),B=this.view.positionToValue(a.x,a.y),G=p?rn(P,P,B.x,B.y):B;S[P*2]=G.x,S[P*2+1]=G.y,this.value.setRawValue(new dt(...S),v)}onPointerDown_(a){const p=a.data;if(!p.point)return;const v=this.value.rawValue,P=this.view.valueToPosition(v.x1,v.y1),S=Ie(p.point.x,p.point.y,P.x,P.y),B=this.view.valueToPosition(v.x2,v.y2),G=Ie(p.point.x,p.point.y,B.x,B.y);this.sel_.rawValue=S<=G?0:1,this.updateValue_(p.point,a.shiftKey,{forceEmit:!1,last:!1})}onPointerMove_(a){const p=a.data;p.point&&this.updateValue_(p.point,a.shiftKey,{forceEmit:!1,last:!1})}onPointerUp_(a){const p=a.data;p.point&&this.updateValue_(p.point,a.shiftKey,{forceEmit:!0,last:!0})}onKeyDown_(a){Ti(a.key)&&a.preventDefault();const p=this.sel_.rawValue,v=this.value.rawValue.toObject();v[p*2]+=Et(this.baseStep_,ei(a)),v[p*2+1]+=Et(this.baseStep_,Jt(a)),this.value.setRawValue(new dt(...v),{forceEmit:!1,last:!1})}onKeyUp_(a){Ti(a.key)&&a.preventDefault();const p=Et(this.baseStep_,ei(a)),v=Et(this.baseStep_,Jt(a));p===0&&v===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class Qi{constructor(a,p){this.value=p.value,this.viewProps=p.viewProps,this.view=new Yi(a,{viewProps:this.viewProps}),this.gc_=new tt(a,{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 gt({max:1,min:0})}),P=Object.assign(Object.assign({},p.axis),{constraint:void 0});this.tc_=new _t(a,{assembly:oi,axes:[v,P,v,P],parser:Wt,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(a=>a.inputElement)]}refresh(){this.gc_.refresh()}}class In{constructor(a,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_=_n(p.expanded),this.view=new Xi(a,{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 Dt(a,{parser:Zs,props:Y.fromObject({formatter:Qs}),value:this.value,viewProps:this.viewProps}),this.view.textElement.appendChild(this.tc_.view.element),this.popC_=p.pickerLayout==="popup"?new se(a,{viewProps:this.viewProps}):null;const v=new Qi(a,{axis:p.axis,value:this.value,viewProps:this.viewProps});v.allFocusableElements.forEach(P=>{P.addEventListener("blur",this.onPopupChildBlur_),P.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),D(this.popC_.shows,P=>{P&&v.refresh()}),Tt({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),xn(this.foldable_,this.view.pickerElement))}onButtonBlur_(a){if(!this.popC_)return;const p=a.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_(a){if(!this.popC_)return;const p=this.popC_.view.element,v=$t(a);v&&p.contains(v)||v&&v===this.view.buttonElement&&!Ue(p.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(a){this.popC_&&a.key==="Escape"&&(this.popC_.shows.rawValue=!1)}}function ci(){return new zs({assembly:oi,components:[0,1,2,3].map(m=>m%2===0?new gt({min:0,max:1}):void 0)})}const xt={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(m){const a=he,p=te(m,{value:a.required.array(a.required.number),view:a.required.constant("cubicbezier"),expanded:a.optional.boolean,label:a.optional.string,picker:a.optional.custom(v=>v==="inline"||v==="popup"?v:void 0)});return p?{params:p}:null},controller(m){var a,p;const v=new dt(...m.params.value),P=X(v,{constraint:ci(),equals:dt.equals}),S=new In(m.document,{axis:{baseStep:.1,textProps:Y.fromObject({draggingScale:.01,formatter:Se(2)})},expanded:(a=m.params.expanded)!==null&&a!==void 0?a:!1,pickerLayout:(p=m.params.picker)!==null&&p!==void 0?p:"popup",value:P,viewProps:m.viewProps});return new bt(m.document,{blade:m.blade,props:Y.fromObject({label:m.params.label}),valueController:S})},api(m){return!(m.controller instanceof bt)||!(m.controller.valueController instanceof In)?null:new $i(m.controller)}};class we extends n{begin(){this.controller_.valueController.begin()}end(){this.controller_.valueController.end()}}const pi=20;class ke{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(a){this.start_=a.getTime()}calculateFps_(a){if(this.timestamps_.length===0)return null;const p=this.timestamps_[0];return 1e3*(this.frameCount_-p.frameCount)/(a-p.time)}compactTimestamps_(){if(this.timestamps_.length<=pi)return;const a=this.timestamps_.length-pi;this.timestamps_.splice(0,a);const p=this.timestamps_[0].frameCount;this.timestamps_.forEach(v=>{v.frameCount-=p}),this.frameCount_-=p}end(a){if(this.start_===null)return;const p=a.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 zt=x("fps");class Fe{constructor(a,p){this.element=a.createElement("div"),this.element.classList.add(zt()),p.viewProps.bindClassModifiers(this.element),this.graphElement=a.createElement("div"),this.graphElement.classList.add(zt("g")),this.element.appendChild(this.graphElement);const v=a.createElement("div");v.classList.add(zt("l")),this.element.appendChild(v);const P=a.createElement("span");P.classList.add(zt("v")),P.textContent="--",v.appendChild(P),this.valueElement=P;const S=a.createElement("span");S.classList.add(zt("u")),S.textContent="FPS",v.appendChild(S)}}class ui{constructor(a,p){this.stopwatch_=new ke,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 Fe(a,{viewProps:this.viewProps}),this.graphC_=new Gs(a,{formatter:Se(0),lineCount:p.lineCount,props:Y.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 a=this.stopwatch_.fps;if(a!==null){const p=this.value_.rawValue;this.value_.rawValue=Ds(p,a),this.view.valueElement.textContent=a.toFixed(0)}}}function on(m,a){return a===0?new Cn:new Yt(m,a??Rs.monitor.defaultInterval)}const hi={id:"fpsgraph",type:"blade",accept(m){const a=he,p=te(m,{view:a.required.constant("fpsgraph"),interval:a.optional.number,label:a.optional.string,lineCount:a.optional.number,max:a.optional.number,min:a.optional.number});return p?{params:p}:null},controller(m){var a,p,v,P;const S=(a=m.params.interval)!==null&&a!==void 0?a:500;return new We(m.document,{blade:m.blade,props:Y.fromObject({label:m.params.label}),valueController:new ui(m.document,{lineCount:(p=m.params.lineCount)!==null&&p!==void 0?p:2,maxValue:(v=m.params.max)!==null&&v!==void 0?v:90,minValue:(P=m.params.min)!==null&&P!==void 0?P:0,ticker:on(m.document,S),value:Di(80),viewProps:m.viewProps})})},api(m){return!(m.controller instanceof We)||!(m.controller.valueController instanceof ui)?null:new we(m.controller)}};class ze{constructor(a,p){this.min=a,this.max=p}static isObject(a){if(typeof a!="object"||a===null)return!1;const p=a.min,v=a.max;return!(typeof p!="number"||typeof v!="number")}static equals(a,p){return a.min===p.min&&a.max===p.max}get length(){return this.max-this.min}toObject(){return{min:this.min,max:this.max}}}const di={fromComponents:m=>new ze(m[0],m[1]),toComponents:m=>[m.min,m.max]};class an{constructor(a){this.edge=a}constrain(a){var p,v,P,S,B,G,oe,Ke;if(a.min<=a.max)return new ze((v=(p=this.edge)===null||p===void 0?void 0:p.constrain(a.min))!==null&&v!==void 0?v:a.min,(S=(P=this.edge)===null||P===void 0?void 0:P.constrain(a.max))!==null&&S!==void 0?S:a.max);const $e=(a.min+a.max)/2;return new ze((G=(B=this.edge)===null||B===void 0?void 0:B.constrain($e))!==null&&G!==void 0?G:$e,(Ke=(oe=this.edge)===null||oe===void 0?void 0:oe.constrain($e))!==null&&Ke!==void 0?Ke:$e)}}const mi=x("rsltxt");class Tn{constructor(a,p){this.sliderView_=p.sliderView,this.textView_=p.textView,this.element=a.createElement("div"),this.element.classList.add(mi());const v=a.createElement("div");v.classList.add(mi("s")),v.appendChild(this.sliderView_.element),this.element.appendChild(v);const P=a.createElement("div");P.classList.add(mi("t")),P.appendChild(this.textView_.element),this.element.appendChild(P)}}const Ye=x("rsl");class ln{constructor(a,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=a.createElement("div"),this.element.classList.add(Ye()),p.viewProps.bindClassModifiers(this.element),this.value_=p.value,this.value_.emitter.on("change",this.onValueChange_);const v=a.createElement("div");v.classList.add(Ye("t")),this.element.appendChild(v),this.trackElement=v;const P=a.createElement("div");P.classList.add(Ye("b")),v.appendChild(P),this.barElement=P;const S=["min","max"].map(B=>{const G=a.createElement("div");return G.classList.add(Ye("k"),Ye("k",B)),v.appendChild(G),G});this.knobElements=[S[0],S[1]],this.update_()}valueToX_(a){const p=this.sliderProps_.get("minValue"),v=this.sliderProps_.get("maxValue");return Ot(Pe(a,p,v,0,1),0,1)*100}update_(){const a=this.value_.rawValue;a.length===0?this.element.classList.add(Ye(void 0,"zero")):this.element.classList.remove(Ye(void 0,"zero"));const p=[this.valueToX_(a.min),this.valueToX_(a.max)];this.barElement.style.left=`${p[0]}%`,this.barElement.style.right=`${100-p[1]}%`,this.knobElements.forEach((v,P)=>{v.style.left=`${p[P]}%`})}onSliderPropsChange_(){this.update_()}onValueChange_(){this.update_()}}class fi{constructor(a,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 ln(a,{sliderProps:this.sliderProps,value:this.value,viewProps:p.viewProps});const v=new Sn(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_(a){if(!a.point)return null;const p=(a.point.x+this.ofs_())/a.bounds.width,v=this.sliderProps.get("minValue"),P=this.sliderProps.get("maxValue");return Pe(p,0,1,v,P)}onPointerDown_(a){if(!a.data.point)return;const p=a.data.point.x/a.data.bounds.width,v=this.value.rawValue,P=this.sliderProps.get("minValue"),S=this.sliderProps.get("maxValue"),B=Pe(v.min,P,S,0,1),G=Pe(v.max,P,S,0,1);Math.abs(G-p)<=.025?this.grabbing_="max":Math.abs(B-p)<=.025?this.grabbing_="min":p>=B&&p<=G?(this.grabbing_="length",this.grabOffset_=Pe(p-B,0,1,0,S-P)):p<B?(this.grabbing_="min",this.onPointerMove_(a)):p>G&&(this.grabbing_="max",this.onPointerMove_(a))}applyPointToValue_(a,p){const v=this.valueFromData_(a);if(v===null)return;const P=this.sliderProps.get("minValue"),S=this.sliderProps.get("maxValue");if(this.grabbing_==="min")this.value.setRawValue(new ze(v,this.value.rawValue.max),p);else if(this.grabbing_==="max")this.value.setRawValue(new ze(this.value.rawValue.min,v),p);else if(this.grabbing_==="length"){const B=this.value.rawValue.length;let G=v-this.grabOffset_,oe=G+B;G<P?(G=P,oe=P+B):oe>S&&(G=S-B,oe=S),this.value.setRawValue(new ze(G,oe),p)}}onPointerMove_(a){this.applyPointToValue_(a.data,{forceEmit:!1,last:!1})}onPointerUp_(a){this.applyPointToValue_(a.data,{forceEmit:!0,last:!0}),this.grabbing_=null}}class ct{constructor(a,p){this.value=p.value,this.viewProps=p.viewProps,this.sc_=new fi(a,p);const v={baseStep:p.baseStep,constraint:p.constraint,textProps:Y.fromObject({draggingScale:p.draggingScale,formatter:p.formatter})};this.tc_=new _t(a,{assembly:di,axes:[v,v],parser:p.parser,value:this.value,viewProps:p.viewProps}),this.view=new Tn(a,{sliderView:this.sc_.view,textView:this.tc_.view})}get textController(){return this.tc_}}function Zi(m){return ze.isObject(m)?new ze(m.min,m.max):new ze(0,0)}function vi(m,a){m.writeProperty("max",a.max),m.writeProperty("min",a.min)}function Js(m){const a=[],p=nn(m);p&&a.push(p);const v=Us(m);return v&&a.push(v),new an(new Pn(a))}const En={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:(m,a)=>{if(!ze.isObject(m))return null;const p=he,v=te(a,{format:p.optional.function,max:p.optional.number,min:p.optional.number,step:p.optional.number});return v?{initialValue:new ze(m.min,m.max),params:v}:null},binding:{reader:m=>Zi,constraint:m=>Js(m.params),equals:ze.equals,writer:m=>vi},controller(m){var a;const p=m.value,v=m.constraint;if(!(v instanceof an))throw w.shouldNeverHappen();const P=(p.rawValue.min+p.rawValue.max)/2,S=(a=m.params.format)!==null&&a!==void 0?a:Se(en(v.edge,P)),B=v.edge&&ht(v.edge,at);if(B)return new ct(m.document,{baseStep:ni(v.edge),constraint:v.edge,draggingScale:Ln(v.edge,P),formatter:S,parser:Wt,sliderProps:new Y({maxValue:B.values.value("max"),minValue:B.values.value("min")}),value:p,viewProps:m.viewProps});const G={baseStep:ni(v.edge),constraint:v.edge,textProps:Y.fromObject({draggingScale:P,formatter:S})};return new _t(m.document,{assembly:di,axes:[G,G],parser:Wt,value:p,viewProps:m.viewProps})}};class Ct{constructor(a){this.controller_=a}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(a){this.controller_.viewProps.set("disabled",a)}get title(){var a;return(a=this.controller_.props.get("title"))!==null&&a!==void 0?a:""}set title(a){this.controller_.props.set("title",a)}}class Pt extends l{constructor(a,p,v,P,S){super(a,P,S),this.cell=p,this.index=v}}class cn extends n{constructor(a){super(a),this.cellToApiMap_=new Map,this.controller_.valueController.cellControllers.forEach(v=>{const P=new Ct(v);this.cellToApiMap_.set(v,P)})}get value(){return this.controller_.value}cell(a,p){const v=this.controller_.valueController,P=v.cellControllers[p*v.size[0]+a];return this.cellToApiMap_.get(P)}on(a,p){const v=p.bind(this);this.controller_.value.emitter.on(a,P=>{const S=this.controller_.valueController,B=S.findCellByValue(P.rawValue);if(!B)return;const G=this.cellToApiMap_.get(B);if(!G)return;const oe=S.cellControllers.indexOf(B);v(new Pt(this,G,[oe%S.size[0],Math.floor(oe/S.size[0])],P.rawValue,void 0))})}}const pn=x("rad");class Wi{constructor(a,p){this.element=a.createElement("div"),this.element.classList.add(pn()),p.viewProps.bindClassModifiers(this.element);const v=a.createElement("label");v.classList.add(pn("l")),this.element.appendChild(v);const P=a.createElement("input");P.classList.add(pn("i")),P.name=p.name,P.type="radio",p.viewProps.bindDisabled(P),v.appendChild(P),this.inputElement=P;const S=a.createElement("div");S.classList.add(pn("b")),v.appendChild(S);const B=a.createElement("div");B.classList.add(pn("t")),S.appendChild(B),E(p.props,"title",G=>{B.textContent=G})}}class Ji{constructor(a,p){this.props=p.props,this.viewProps=p.viewProps,this.view=new Wi(a,{name:p.name,props:this.props,viewProps:this.viewProps})}}class On{constructor(a,p){this.cellCs_=[],this.cellValues_=[],this.onCellInputChange_=this.onCellInputChange_.bind(this),this.size=p.size;const[v,P]=this.size;for(let S=0;S<P;S++)for(let B=0;B<v;B++){const G=new Ji(a,{name:p.groupName,props:Y.fromObject(Object.assign({},p.cellConfig(B,S))),viewProps:be.create()});this.cellCs_.push(G),this.cellValues_.push(p.cellConfig(B,S).value)}this.value=p.value,D(this.value,S=>{const B=this.findCellByValue(S);B&&(B.view.inputElement.checked=!0)}),this.viewProps=be.create(),this.view=new ut(a,{viewProps:this.viewProps,viewName:"radgrid"}),this.view.element.style.gridTemplateColumns=`repeat(${v}, 1fr)`,this.cellCs_.forEach(S=>{S.view.inputElement.addEventListener("change",this.onCellInputChange_),this.view.element.appendChild(S.view.element)})}get cellControllers(){return this.cellCs_}findCellByValue(a){const p=this.cellValues_.findIndex(v=>v===a);return p<0?null:this.cellCs_[p]}onCellInputChange_(a){const p=a.currentTarget,v=this.cellCs_.findIndex(P=>P.view.inputElement===p);v<0||(this.value.rawValue=this.cellValues_[v])}}const kt=function(){return{id:"radiogrid",type:"blade",accept(m){const a=he,p=te(m,{cells:a.required.function,groupName:a.required.string,size:a.required.array(a.required.number),value:a.required.raw,view:a.required.constant("radiogrid"),label:a.optional.string});return p?{params:p}:null},controller(m){return new bt(m.document,{blade:m.blade,props:Y.fromObject({label:m.params.label}),valueController:new On(m.document,{groupName:m.params.groupName,cellConfig:m.params.cells,size:m.params.size,value:X(m.params.value)})})},api(m){return!(m.controller instanceof bt)||!(m.controller.valueController instanceof On)?null:new cn(m.controller)}}}();function bi(m){return{id:"input-radiogrid",type:"input",accept(a,p){if(!m.isType(a))return null;const v=he,P=te(p,{cells:v.required.function,groupName:v.required.string,size:v.required.array(v.required.number),view:v.required.constant("radiogrid")});return P?{initialValue:a,params:P}:null},binding:m.binding,controller:a=>new On(a.document,{cellConfig:a.params.cells,groupName:a.params.groupName,size:a.params.size,value:a.value})}}const Hs=bi({isType:m=>typeof m=="number",binding:{reader:m=>Ls,writer:m=>Xe}}),er=bi({isType:m=>typeof m=="string",binding:{reader:m=>Vi,writer:m=>Xe}}),tr=bi({isType:m=>typeof m=="boolean",binding:{reader:m=>qt,writer:m=>Xe}}),Hi=[$s,xt,hi,En,kt,tr,Hs,er];r.ButtonCellApi=Gi,r.ButtonGridApi=Ki,r.ButtonGridController=si,r.CubicBezier=dt,r.CubicBezierApi=$i,r.CubicBezierAssembly=oi,r.CubicBezierController=In,r.CubicBezierGraphController=tt,r.CubicBezierGraphView=Le,r.CubicBezierPickerController=Qi,r.CubicBezierPickerView=Yi,r.CubicBezierPreviewView=Ft,r.CubicBezierView=Xi,r.FpsGraphBladeApi=we,r.FpsGraphController=ui,r.FpsView=Fe,r.Fpswatch=ke,r.Interval=ze,r.IntervalAssembly=di,r.IntervalConstraint=an,r.RadioCellApi=Ct,r.RadioController=Ji,r.RadioGridApi=cn,r.RadioGridController=On,r.RadioView=Wi,r.RangeSliderController=fi,r.RangeSliderTextController=ct,r.RangeSliderTextView=Tn,r.RangeSliderView=ln,r.TpRadioGridChangeEvent=Pt,r.plugins=Hi,Object.defineProperty(r,"__esModule",{value:!0})})})(vs,vs.exports);var to=vs.exports;const Jc=Uo({__proto__:null,default:ml(to)},[to]);let Kt,ki;const Hc=(b="tres-container")=>{Kt||(Kt=new Wc.Pane({container:document.querySelector(b)||void 0}),Kt.registerPlugin(Jc),ki=Kt.addBlade({view:"fpsgraph",label:"fpsgraph"}));function s(){Kt&&Kt.dispose()}return C.onMounted(()=>{const{onBeforeLoop:r,onAfterLoop:n,resume:o}=Me.useRenderLoop();o(),r(()=>ki.begin()),n(()=>ki.end())}),C.onUnmounted(()=>{s()}),{pane:Kt,fpsGraph:ki,disposeTweakPane:s}};J.Box=hc,J.Circle=fc,J.Cone=gc,J.ContactShadows=ql,J.Dodecahedron=yc,J.Environment=yl,J.FBXModel=Wl,J.GLTFModel=Zl,J.Icosahedron=Pc,J.Levioso=Gl,J.MapControls=oc,J.MeshWobbleMaterial=cc,J.MouseParallax=Il,J.Octahedron=Ac,J.OrbitControls=Hl,J.Plane=Dc,J.PointerLockControls=sc,J.Precipitation=Nl,J.Ring=Ec,J.Smoke=Rl,J.Sphere=Nc,J.Stars=El,J.Tetrahedron=Uc,J.Text3D=wl,J.Torus=Kc,J.TorusKnot=Yc,J.TransformControls=nc,J.Tube=Zc,J.useAnimations=_l,J.useEnvironment=qr,J.useFBX=eo,J.useGLTF=Hr,J.useMouseParallax=Jr,J.useTweakPane=Hc,Object.defineProperty(J,Symbol.toStringTag,{value:"Module"})});
90
+ vNormal = vNormal * m;`)}get time(){return this._time.value}set time(r){this._time.value=r}get factor(){return this._factor.value}set factor(r){this._factor.value=r}}const ac=["factor"],lc=C.defineComponent({__name:"index",props:{speed:{default:1},factor:{default:1}},setup(g){const i=g,r=C.shallowRef(),{extend:s}=rt();s({MeshWobbleMaterial:oc});const{onLoop:o}=Me.useRenderLoop();return o(({elapsed:l})=>{r.value&&(r.value.time=l*(i==null?void 0:i.speed))}),(l,u)=>(C.openBlock(),C.createElementBlock("TresMeshWobbleMaterial",C.mergeProps({ref_key:"materialRef",ref:r,factor:l.factor},l.$attrs),null,16,ac))}}),cc=["args"],pc=["color"],uc=C.defineComponent({__name:"Box",props:{args:{default:()=>[1,1,1]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=C.shallowRef();return i({value:r}),(s,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"boxRef",ref:r},s.$attrs),[C.createElementVNode("TresBoxGeometry",{args:s.args},null,8,cc),C.renderSlot(s.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,pc)])],16))}}),hc=["args"],dc=["color"],mc=C.defineComponent({__name:"Circle",props:{args:{default:()=>[1,32,0,Math.PI*2]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=C.shallowRef();return i({value:r}),(s,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"circleRef",ref:r},s.$attrs),[C.createElementVNode("TresCircleGeometry",{args:s.args},null,8,hc),C.renderSlot(s.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,dc)])],16))}}),fc=["args"],vc=["color"],bc=C.defineComponent({__name:"Cone",props:{args:{default:()=>[1,1,12,!1,0,Math.PI*2]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=C.shallowRef();return i({value:r}),(s,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"coneRef",ref:r},s.$attrs),[C.createElementVNode("TresConeGeometry",{args:s.args},null,8,fc),C.renderSlot(s.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,vc)])],16))}}),gc=["args"],wc=["color"],_c=C.defineComponent({__name:"Dodecahedron",props:{args:{default:()=>[1,0]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=C.shallowRef();return i({value:r}),(s,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"dodecahedronRef",ref:r},s.$attrs),[C.createElementVNode("TresDodecahedronGeometry",{args:s.args},null,8,gc),C.renderSlot(s.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,wc)])],16))}}),yc=["args"],xc=["color"],Cc=C.defineComponent({__name:"Icosahedron",props:{args:{default:()=>[1,0]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=C.shallowRef();return i({value:r}),(s,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"icosahedronRef",ref:r},s.$attrs),[C.createElementVNode("TresIcosahedronGeometry",{args:s.args},null,8,yc),C.renderSlot(s.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,xc)])],16))}}),Pc=["args"],kc=["color"],Mc=C.defineComponent({__name:"Octahedron",props:{args:{default:()=>[1,0]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=C.shallowRef();return i({value:r}),(s,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"octahedronRef",ref:r},s.$attrs),[C.createElementVNode("TresOctahedronGeometry",{args:s.args},null,8,Pc),C.renderSlot(s.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,kc)])],16))}}),Ac=["rotation"],Sc=["args"],Lc=["color"],Vc=C.defineComponent({__name:"Plane",props:{args:{default:()=>[1,1]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=C.shallowRef();return i({value:r}),(s,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"planeRef",ref:r,rotation:[-Math.PI/2,0,0]},s.$attrs),[C.createElementVNode("TresPlaneGeometry",{args:s.args},null,8,Sc),C.renderSlot(s.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,Lc)])],16,Ac))}}),Dc=["args"],Ic=["color"],Tc=C.defineComponent({__name:"Ring",props:{args:{default:()=>[.5,1,32]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=C.shallowRef();return i({value:r}),(s,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"ringRef",ref:r},s.$attrs),[C.createElementVNode("TresRingGeometry",{args:s.args},null,8,Dc),C.renderSlot(s.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,Ic)])],16))}}),Ec=["args"],Oc=["color"],Bc=C.defineComponent({__name:"Sphere",props:{args:{default:()=>[2,32,16]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=C.shallowRef();return i({value:r}),(s,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"sphereRef",ref:r},s.$attrs),[C.createElementVNode("TresSphereGeometry",{args:s.args},null,8,Ec),C.renderSlot(s.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,Oc)])],16))}}),Nc=["rotation"],Fc=["args"],zc=["color"],jc=C.defineComponent({__name:"Tetrahedron",props:{args:{default:()=>[1,0]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=C.shallowRef();return i({value:r}),(s,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"tetrahedronRef",ref:r,rotation:[-Math.PI/2,0,0]},s.$attrs),[C.createElementVNode("TresTetrahedronGeometry",{args:s.args},null,8,Fc),C.renderSlot(s.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,zc)])],16,Nc))}}),Uc=["args"],Rc=["color"],Gc=C.defineComponent({__name:"Torus",props:{args:{default:()=>[1,1,16,80]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=C.shallowRef();return i({value:r}),(s,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"torusRef",ref:r},s.$attrs),[C.createElementVNode("TresTorusGeometry",{args:s.args},null,8,Uc),C.renderSlot(s.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,Rc)])],16))}}),Kc=["args"],$c=["color"],Xc=C.defineComponent({__name:"TorusKnot",props:{args:{default:()=>[1,.4,64,8]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=C.shallowRef();return i({value:r}),(s,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"torusKnotRef",ref:r},s.$attrs),[C.createElementVNode("TresTorusKnotGeometry",{args:s.args},null,8,Kc),C.renderSlot(s.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,$c)])],16))}}),Yc=["args"],qc=["color"],Qc=C.defineComponent({__name:"Tube",props:{args:{default:()=>[new f.QuadraticBezierCurve3(new f.Vector3(-1,0,0),new f.Vector3(0,1,0),new f.Vector3(1,0,0)),20,.2,8,!1]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=C.shallowRef();return i({value:r}),(s,o)=>(C.openBlock(),C.createElementBlock("TresMesh",C.mergeProps({ref_key:"tubeRef",ref:r},s.$attrs),[C.createElementVNode("TresTubeGeometry",{args:s.args},null,8,Yc),C.renderSlot(s.$slots,"default",{},()=>[C.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,qc)])],16))}});var fs={exports:{}};/*! Tweakpane 3.1.9 (c) 2016 cocopon, licensed under the MIT license. */(function(g,i){(function(r,s){s(i)})(Yr,function(r){class s{constructor(e){const[t,c]=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=c??null}toString(){const e=[this.major,this.minor,this.patch].join(".");return this.prerelease!==null?[e,this.prerelease].join("-"):e}}class o{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 l{constructor(e){this.target=e}}class u extends l{constructor(e,t,c,b){super(e),this.value=t,this.presetKey=c,this.last=b??!0}}class h extends l{constructor(e,t,c){super(e),this.value=t,this.presetKey=c}}class d extends l{constructor(e,t){super(e),this.expanded=t}}class w extends l{constructor(e,t){super(e),this.index=t}}function _(n){return n}function y(n){return n==null}function x(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}function M(n,e){let t=n;do{const c=Object.getOwnPropertyDescriptor(t,e);if(c&&(c.set!==void 0||c.writable===!0))return!0;t=Object.getPrototypeOf(t)}while(t!==null);return!1}const O={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{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"})}constructor(e){var t;this.message=(t=O[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}}class T{constructor(e,t,c){this.obj_=e,this.key_=t,this.presetKey_=c??t}static isBindable(e){return!(e===null||typeof e!="object"&&typeof e!="function")}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 c=this.read();if(!T.isBindable(c))throw I.notBindable();if(!(e in c))throw I.propertyNotFound(e);c[e]=t}}class F extends o{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 c=t.bind(this);return this.controller_.valueController.emitter.on(e,()=>{c(new l(this))}),this}}class z{constructor(){this.observers_={}}on(e,t){let c=this.observers_[e];return c||(c=this.observers_[e]=[]),c.push({handler:t}),this}off(e,t){const c=this.observers_[e];return c&&(this.observers_[e]=c.filter(b=>b.handler!==t)),this}emit(e,t){const c=this.observers_[e];c&&c.forEach(b=>{b.handler(t)})}}const N="tp";function E(n){return(t,c)=>[N,"-",n,"v",t?`_${t}`:"",c?`-${c}`:""].join("")}function Q(n,e){return t=>e(n(t))}function $(n){return n.rawValue}function U(n,e){n.emitter.on("change",Q($,e)),e(n.rawValue)}function j(n,e,t){U(n.value(e),t)}function X(n,e,t){t?n.classList.add(e):n.classList.remove(e)}function Y(n,e){return t=>{X(n,e,t)}}function Z(n,e){U(n,t=>{e.textContent=t??""})}const ue=E("btn");class ge{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(ue()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("button");c.classList.add(ue("b")),t.viewProps.bindDisabled(c),this.element.appendChild(c),this.buttonElement=c;const b=e.createElement("div");b.classList.add(ue("t")),Z(t.props.value("title"),b),this.buttonElement.appendChild(b)}}class pe{constructor(e,t){this.emitter=new z,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new ge(e,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class me{constructor(e,t){var c;this.constraint_=t==null?void 0:t.constraint,this.equals_=(c=t==null?void 0:t.equals)!==null&&c!==void 0?c:(b,k)=>b===k,this.emitter=new z,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 c=t??{forceEmit:!1,last:!0},b=this.constraint_?this.constraint_.constrain(e):e,k=this.rawValue_;this.equals_(k,b)&&!c.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=b,this.emitter.emit("change",{options:c,previousRawValue:k,rawValue:b,sender:this}))}}class he{constructor(e){this.emitter=new z,this.value_=e}get rawValue(){return this.value_}set rawValue(e){this.setRawValue(e,{forceEmit:!1,last:!0})}setRawValue(e,t){const c=t??{forceEmit:!1,last:!0},b=this.value_;b===e&&!c.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.value_=e,this.emitter.emit("change",{options:c,previousRawValue:b,rawValue:this.value_,sender:this}))}}function te(n,e){const t=e==null?void 0:e.constraint,c=e==null?void 0:e.equals;return!t&&!c?new he(n):new me(n,e)}class q{constructor(e){this.emitter=new z,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((c,b)=>Object.assign(c,{[b]:te(e[b])}),{})}static fromObject(e){const t=this.createCore(e);return new q(t)}get(e){return this.valMap_[e].rawValue}set(e,t){this.valMap_[e].rawValue=t}value(e){return this.valMap_[e]}}function Ce(n,e){const c=Object.keys(e).reduce((b,k)=>{if(b===void 0)return;const L=e[k],R=L(n[k]);return R.succeeded?Object.assign(Object.assign({},b),{[k]:R.value}):void 0},{});return c}function fe(n,e){return n.reduce((t,c)=>{if(t===void 0)return;const b=e(c);if(!(!b.succeeded||b.value===void 0))return[...t,b.value]},[])}function le(n){return n===null?!1:typeof n=="object"}function ie(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 c=n(t);return c!==void 0?{succeeded:!0,value:c}:{succeeded:!1,value:void 0}}}function be(n){return{custom:e=>ie(e)(n),boolean:ie(e=>typeof e=="boolean"?e:void 0)(n),number:ie(e=>typeof e=="number"?e:void 0)(n),string:ie(e=>typeof e=="string"?e:void 0)(n),function:ie(e=>typeof e=="function"?e:void 0)(n),constant:e=>ie(t=>t===e?e:void 0)(n),raw:ie(e=>e)(n),object:e=>ie(t=>{if(le(t))return Ce(t,e)})(n),array:e=>ie(t=>{if(Array.isArray(t))return fe(t,e)})(n)}}const V={optional:be(!0),required:be(!1)};function ce(n,e){const t=V.required.object(e)(n);return t.succeeded?t.value:void 0}function Ve(n){console.warn([`Missing '${n.key}' of ${n.target} in ${n.place}.`,"Please rebuild plugins with the latest core package."].join(" "))}function Te(n){return n&&n.parentElement&&n.parentElement.removeChild(n),null}class _e{constructor(e){this.value_=e}static create(e){return[new _e(e),(t,c)=>{e.setRawValue(t,c)}]}get emitter(){return this.value_.emitter}get rawValue(){return this.value_.rawValue}}const We=E("");function gn(n,e){return Y(n,We(void 0,e))}class Re extends q{constructor(e){var t;super(e),this.onDisabledChange_=this.onDisabledChange_.bind(this),this.onParentChange_=this.onParentChange_.bind(this),this.onParentGlobalDisabledChange_=this.onParentGlobalDisabledChange_.bind(this),[this.globalDisabled_,this.setGlobalDisabled_]=_e.create(te(this.getGlobalDisabled_())),this.value("disabled").emitter.on("change",this.onDisabledChange_),this.value("parent").emitter.on("change",this.onParentChange_),(t=this.get("parent"))===null||t===void 0||t.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_)}static create(e){var t,c,b;const k=e??{};return new Re(q.createCore({disabled:(t=k.disabled)!==null&&t!==void 0?t:!1,disposed:!1,hidden:(c=k.hidden)!==null&&c!==void 0?c:!1,parent:(b=k.parent)!==null&&b!==void 0?b:null}))}get globalDisabled(){return this.globalDisabled_}bindClassModifiers(e){U(this.globalDisabled_,gn(e,"disabled")),j(this,"hidden",gn(e,"hidden"))}bindDisabled(e){U(this.globalDisabled_,t=>{e.disabled=t})}bindTabIndex(e){U(this.globalDisabled_,t=>{e.tabIndex=t?-1:0})}handleDispose(e){this.value("disposed").emitter.on("change",t=>{t&&e()})}getGlobalDisabled_(){const e=this.get("parent");return(e?e.globalDisabled.rawValue:!1)||this.get("disabled")}updateGlobalDisabled_(){this.setGlobalDisabled_(this.getGlobalDisabled_())}onDisabledChange_(){this.updateGlobalDisabled_()}onParentGlobalDisabledChange_(){this.updateGlobalDisabled_()}onParentChange_(e){var t;const c=e.previousRawValue;c==null||c.globalDisabled.emitter.off("change",this.onParentGlobalDisabledChange_),(t=this.get("parent"))===null||t===void 0||t.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_),this.updateGlobalDisabled_()}}function wn(){return["veryfirst","first","last","verylast"]}const $t=E(""),ot={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class vt{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",()=>{wn().forEach(c=>{t.classList.remove($t(void 0,ot[c]))}),this.blade.get("positions").forEach(c=>{t.classList.add($t(void 0,ot[c]))})}),this.viewProps.handleDispose(()=>{Te(t)})}get parent(){return this.parent_}set parent(e){if(this.parent_=e,!("parent"in this.viewProps.valMap_)){Ve({key:"parent",target:Re.name,place:"BladeController.parent"});return}this.viewProps.set("parent",this.parent_?this.parent_.viewProps:null)}}const Be="http://www.w3.org/2000/svg";function Je(n){n.offsetHeight}function Xt(n,e){const t=n.style.transition;n.style.transition="none",e(),n.style.transition=t}function at(n){return n.ontouchstart!==void 0}function _n(){return globalThis}function $n(){return _n().document}function yn(n){const e=n.ownerDocument.defaultView;return e&&"document"in e?n.getContext("2d",{willReadFrequently:!0}):null}const xn={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 ut(n,e){const t=n.createElementNS(Be,"svg");return t.innerHTML=xn[e],t}function bt(n,e,t){n.insertBefore(e,n.children[t])}function Cn(n){n.parentElement&&n.parentElement.removeChild(n)}function Yt(n){for(;n.children.length>0;)n.removeChild(n.children[0])}function Pn(n){for(;n.childNodes.length>0;)n.removeChild(n.childNodes[0])}function ht(n){return n.relatedTarget?n.relatedTarget:"explicitOriginalTarget"in n?n.explicitOriginalTarget:null}const lt=E("lbl");function gt(n,e){const t=n.createDocumentFragment();return e.split(`
91
+ `).map(b=>n.createTextNode(b)).forEach((b,k)=>{k>0&&t.appendChild(n.createElement("br")),t.appendChild(b)}),t}class D{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(lt()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(lt("l")),j(t.props,"label",k=>{y(k)?this.element.classList.add(lt(void 0,"nol")):(this.element.classList.remove(lt(void 0,"nol")),Pn(c),c.appendChild(gt(e,k)))}),this.element.appendChild(c),this.labelElement=c;const b=e.createElement("div");b.classList.add(lt("v")),this.element.appendChild(b),this.valueElement=b}}class K extends vt{constructor(e,t){const c=t.valueController.viewProps;super(Object.assign(Object.assign({},t),{view:new D(e,{props:t.props,viewProps:c}),viewProps:c})),this.props=t.props,this.valueController=t.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}const H={id:"button",type:"blade",accept(n){const e=V,t=ce(n,{title:e.required.string,view:e.required.constant("button"),label:e.optional.string});return t?{params:t}:null},controller(n){return new K(n.document,{blade:n.blade,props:q.fromObject({label:n.params.label}),valueController:new pe(n.document,{props:q.fromObject({title:n.params.title}),viewProps:n.viewProps})})},api(n){return!(n.controller instanceof K)||!(n.controller.valueController instanceof pe)?null:new F(n.controller)}};class se extends vt{constructor(e){super(e),this.value=e.value}}function ye(){return new q({positions:te([],{equals:x})})}class De extends q{constructor(e){super(e)}static create(e){const t={completed:!0,expanded:e,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null},c=q.createCore(t);return new De(c)}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")&&!y(e)?`${e}px`:"auto"}bindExpandedClass(e,t){const c=()=>{this.styleExpanded?e.classList.add(t):e.classList.remove(t)};j(this,"expanded",c),j(this,"temporaryExpanded",c)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function Dt(n,e){let t=0;return Xt(e,()=>{n.set("expandedHeight",null),n.set("temporaryExpanded",!0),Je(e),t=e.clientHeight,n.set("temporaryExpanded",null),Je(e)}),t}function qt(n,e){e.style.height=n.styleHeight}function Ne(n,e){n.value("expanded").emitter.on("beforechange",()=>{if(n.set("completed",!1),y(n.get("expandedHeight"))){const t=Dt(n,e);t>0&&n.set("expandedHeight",t)}n.set("shouldFixHeight",!0),Je(e)}),n.emitter.on("change",()=>{qt(n,e)}),qt(n,e),e.addEventListener("transitionend",t=>{t.propertyName==="height"&&n.cleanUpTransition()})}class Fe extends o{constructor(e,t){super(e),this.rackApi_=t}}function bs(n,e){return n.addBlade(Object.assign(Object.assign({},e),{view:"button"}))}function gs(n,e){return n.addBlade(Object.assign(Object.assign({},e),{view:"folder"}))}function ws(n,e){const t=e??{};return n.addBlade(Object.assign(Object.assign({},t),{view:"separator"}))}function Xn(n,e){return n.addBlade(Object.assign(Object.assign({},e),{view:"tab"}))}class wt{constructor(e){this.emitter=new z,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 c=t!==void 0?t:this.items_.length;this.items_.splice(c,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(k=>{this.cache_.add(k)})),this.emitter.emit("add",{index:c,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 c=this.extract_(e);c&&(c.emitter.off("add",this.onSubListAdd_),c.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 Yn extends o{constructor(e){super(e),this.onBindingChange_=this.onBindingChange_.bind(this),this.emitter_=new z,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 c=t.bind(this);return this.emitter_.on(e,b=>{c(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 Ee extends K{constructor(e,t){super(e,t),this.binding=t.binding}}class qn extends o{constructor(e){super(e),this.onBindingUpdate_=this.onBindingUpdate_.bind(this),this.emitter_=new z,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 c=t.bind(this);return this.emitter_.on(e,b=>{c(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 He extends K{constructor(e,t){super(e,t),this.binding=t.binding,this.viewProps.bindDisabled(this.binding.ticker),this.viewProps.handleDispose(()=>{this.binding.dispose()})}}function Mi(n){return n instanceof kn?n.apiSet_:n instanceof Fe?n.rackApi_.apiSet_:null}function Qt(n,e){const t=n.find(c=>c.controller_===e);if(!t)throw I.shouldNeverHappen();return t}function Ai(n,e,t){if(!T.isBindable(n))throw I.notBindable();return new T(n,e,t)}class kn extends o{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 z,this.apiSet_=new wt(Mi),this.pool_=t;const c=this.controller_.rack;c.emitter.on("add",this.onRackAdd_),c.emitter.on("remove",this.onRackRemove_),c.emitter.on("inputchange",this.onRackInputChange_),c.emitter.on("monitorupdate",this.onRackMonitorUpdate_),c.children.forEach(b=>{this.setUpApi_(b)})}get children(){return this.controller_.rack.children.map(e=>Qt(this.apiSet_,e))}addInput(e,t,c){const b=c??{},k=this.controller_.view.element.ownerDocument,L=this.pool_.createInput(k,Ai(e,t,b.presetKey),b),R=new Yn(L);return this.add(R,b.index)}addMonitor(e,t,c){const b=c??{},k=this.controller_.view.element.ownerDocument,L=this.pool_.createMonitor(k,Ai(e,t),b),R=new qn(L);return this.add(R,b.index)}addFolder(e){return gs(this,e)}addButton(e){return bs(this,e)}addSeparator(e){return ws(this,e)}addTab(e){return Xn(this,e)}add(e,t){this.controller_.rack.add(e.controller_,t);const c=this.apiSet_.find(b=>b.controller_===e.controller_);return c&&this.apiSet_.remove(c),this.apiSet_.add(e),e}remove(e){this.controller_.rack.remove(e.controller_)}addBlade(e){const t=this.controller_.view.element.ownerDocument,c=this.pool_.createBlade(t,e),b=this.pool_.createBladeApi(c);return this.add(b,e.index)}on(e,t){const c=t.bind(this);return this.emitter_.on(e,b=>{c(b.event)}),this}setUpApi_(e){this.apiSet_.find(c=>c.controller_===e)||this.apiSet_.add(this.pool_.createBladeApi(e))}onRackAdd_(e){this.setUpApi_(e.bladeController)}onRackRemove_(e){if(e.isRoot){const t=Qt(this.apiSet_,e.bladeController);this.apiSet_.remove(t)}}onRackInputChange_(e){const t=e.bladeController;if(t instanceof Ee){const c=Qt(this.apiSet_,t),b=t.binding;this.emitter_.emit("change",{event:new u(c,b.target.read(),b.target.presetKey,e.options.last)})}else if(t instanceof se){const c=Qt(this.apiSet_,t);this.emitter_.emit("change",{event:new u(c,t.value.rawValue,void 0,e.options.last)})}}onRackMonitorUpdate_(e){if(!(e.bladeController instanceof He))throw I.shouldNeverHappen();const t=Qt(this.apiSet_,e.bladeController),c=e.bladeController.binding;this.emitter_.emit("update",{event:new h(t,c.target.read(),c.target.presetKey)})}}class Qn extends Fe{constructor(e,t){super(e,new kn(e.rackController,t)),this.emitter_=new z,this.controller_.foldable.value("expanded").emitter.on("change",c=>{this.emitter_.emit("fold",{event:new d(this,c.sender.rawValue)})}),this.rackApi_.on("change",c=>{this.emitter_.emit("change",{event:c})}),this.rackApi_.on("update",c=>{this.emitter_.emit("update",{event:c})})}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,c){return this.rackApi_.addInput(e,t,c)}addMonitor(e,t,c){return this.rackApi_.addMonitor(e,t,c)}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 c=t.bind(this);return this.emitter_.on(e,b=>{c(b.event)}),this}}class Zn extends vt{constructor(e){super({blade:e.blade,view:e.view,viewProps:e.rackController.viewProps}),this.rackController=e.rackController}}class _s{constructor(e,t){const c=E(t.viewName);this.element=e.createElement("div"),this.element.classList.add(c()),t.viewProps.bindClassModifiers(this.element)}}function ys(n,e){for(let t=0;t<n.length;t++){const c=n[t];if(c instanceof Ee&&c.binding===e)return c}return null}function xs(n,e){for(let t=0;t<n.length;t++){const c=n[t];if(c instanceof He&&c.binding===e)return c}return null}function Cs(n,e){for(let t=0;t<n.length;t++){const c=n[t];if(c instanceof se&&c.value===e)return c}return null}function Wn(n){return n instanceof Zt?n.rack:n instanceof Zn?n.rackController.rack:null}function Ps(n){const e=Wn(n);return e?e.bcSet_:null}class ks{constructor(e){var t,c;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 z,this.blade_=(t=e.blade)!==null&&t!==void 0?t:null,(c=this.blade_)===null||c===void 0||c.value("positions").emitter.on("change",this.onBladePositionsChange_),this.viewProps=e.viewProps,this.bcSet_=new wt(Ps),this.bcSet_.emitter.on("add",this.onSetAdd_),this.bcSet_.emitter.on("remove",this.onSetRemove_)}get children(){return this.bcSet_.items}add(e,t){var c;(c=e.parent)===null||c===void 0||c.remove(e),M(e,"parent")?e.parent=this:(e.parent_=this,Ve({key:"parent",target:"BladeController",place:"BladeRack.add"})),this.bcSet_.add(e,t)}remove(e){M(e,"parent")?e.parent=null:(e.parent_=null,Ve({key:"parent",target:"BladeController",place:"BladeRack.remove"})),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 c=e.item;if(c.viewProps.emitter.on("change",this.onChildViewPropsChange_),c.blade.value("positions").emitter.on("change",this.onChildPositionsChange_),c.viewProps.handleDispose(this.onChildDispose_),c instanceof Ee)c.binding.emitter.on("change",this.onChildInputChange_);else if(c instanceof He)c.binding.emitter.on("update",this.onChildMonitorUpdate_);else if(c instanceof se)c.value.emitter.on("change",this.onChildValueChange_);else{const b=Wn(c);if(b){const k=b.emitter;k.on("layout",this.onDescendantLayout_),k.on("inputchange",this.onDescendantInputChange_),k.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 c=e.item;if(c instanceof Ee)c.binding.emitter.off("change",this.onChildInputChange_);else if(c instanceof He)c.binding.emitter.off("update",this.onChildMonitorUpdate_);else if(c instanceof se)c.value.emitter.off("change",this.onChildValueChange_);else{const b=Wn(c);if(b){const k=b.emitter;k.off("layout",this.onDescendantLayout_),k.off("inputchange",this.onDescendantInputChange_),k.off("monitorupdate",this.onDescendantMonitorUpdate_)}}}updatePositions_(){const e=this.bcSet_.items.filter(b=>!b.viewProps.get("hidden")),t=e[0],c=e[e.length-1];this.bcSet_.items.forEach(b=>{const k=[];b===t&&(k.push("first"),(!this.blade_||this.blade_.get("positions").includes("veryfirst"))&&k.push("veryfirst")),b===c&&(k.push("last"),(!this.blade_||this.blade_.get("positions").includes("verylast"))&&k.push("verylast")),b.blade.set("positions",k)})}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=ys(this.find(Ee),e.sender);if(!t)throw I.alreadyDisposed();this.emitter.emit("inputchange",{bladeController:t,options:e.options,sender:this})}onChildMonitorUpdate_(e){const t=xs(this.find(He),e.sender);if(!t)throw I.alreadyDisposed();this.emitter.emit("monitorupdate",{bladeController:t,sender:this})}onChildValueChange_(e){const t=Cs(this.find(se),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 Zt extends vt{constructor(e,t){super(Object.assign(Object.assign({},t),{view:new _s(e,{viewName:"brk",viewProps:t.viewProps})})),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this);const c=new ks({blade:t.root?void 0:t.blade,viewProps:t.viewProps});c.emitter.on("add",this.onRackAdd_),c.emitter.on("remove",this.onRackRemove_),this.rack=c,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&&bt(this.view.element,e.bladeController.view.element,e.index)}onRackRemove_(e){e.isRoot&&Cn(e.bladeController.view.element)}}const Si=E("cnt");class Ms{constructor(e,t){var c;this.className_=E((c=t.viewName)!==null&&c!==void 0?c:"fld"),this.element=e.createElement("div"),this.element.classList.add(this.className_(),Si()),t.viewProps.bindClassModifiers(this.element),this.foldable_=t.foldable,this.foldable_.bindExpandedClass(this.element,this.className_(void 0,"expanded")),j(this.foldable_,"completed",Y(this.element,this.className_(void 0,"cpl")));const b=e.createElement("button");b.classList.add(this.className_("b")),j(t.props,"title",ee=>{y(ee)?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 k=e.createElement("div");k.classList.add(this.className_("i")),this.element.appendChild(k);const L=e.createElement("div");L.classList.add(this.className_("t")),Z(t.props.value("title"),L),this.buttonElement.appendChild(L),this.titleElement=L;const R=e.createElement("div");R.classList.add(this.className_("m")),this.buttonElement.appendChild(R);const W=t.containerElement;W.classList.add(this.className_("c")),this.element.appendChild(W),this.containerElement=W}}class Mn extends Zn{constructor(e,t){var c;const b=De.create((c=t.expanded)!==null&&c!==void 0?c:!0),k=new Zt(e,{blade:t.blade,root:t.root,viewProps:t.viewProps});super(Object.assign(Object.assign({},t),{rackController:k,view:new Ms(e,{containerElement:k.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,Ne(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 As={id:"folder",type:"blade",accept(n){const e=V,t=ce(n,{title:e.required.string,view:e.required.constant("folder"),expanded:e.optional.boolean});return t?{params:t}:null},controller(n){return new Mn(n.document,{blade:n.blade,expanded:n.params.expanded,props:q.fromObject({title:n.params.title}),viewProps:n.viewProps})},api(n){return n.controller instanceof Mn?new Qn(n.controller,n.pool):null}};class It extends se{constructor(e,t){const c=t.valueController.viewProps;super(Object.assign(Object.assign({},t),{value:t.valueController.value,view:new D(e,{props:t.props,viewProps:c}),viewProps:c})),this.props=t.props,this.valueController=t.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class Li extends o{}const Jn=E("spr");class Ss{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Jn()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("hr");c.classList.add(Jn("r")),this.element.appendChild(c)}}class Wt extends vt{constructor(e,t){super(Object.assign(Object.assign({},t),{view:new Ss(e,{viewProps:t.viewProps})}))}}const Ls={id:"separator",type:"blade",accept(n){const t=ce(n,{view:V.required.constant("separator")});return t?{params:t}:null},controller(n){return new Wt(n.document,{blade:n.blade,viewProps:n.viewProps})},api(n){return n.controller instanceof Wt?new Li(n.controller):null}},Se=E("tbi");class Vs{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Se()),t.viewProps.bindClassModifiers(this.element),j(t.props,"selected",k=>{k?this.element.classList.add(Se(void 0,"sel")):this.element.classList.remove(Se(void 0,"sel"))});const c=e.createElement("button");c.classList.add(Se("b")),t.viewProps.bindDisabled(c),this.element.appendChild(c),this.buttonElement=c;const b=e.createElement("div");b.classList.add(Se("t")),Z(t.props.value("title"),b),this.buttonElement.appendChild(b),this.titleElement=b}}class An{constructor(e,t){this.emitter=new z,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new Vs(e,{props:t.props,viewProps:t.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class Vi{constructor(e,t){this.onItemClick_=this.onItemClick_.bind(this),this.ic_=new An(e,{props:t.itemProps,viewProps:Re.create()}),this.ic_.emitter.on("click",this.onItemClick_),this.cc_=new Zt(e,{blade:ye(),viewProps:Re.create()}),this.props=t.props,j(this.props,"selected",c=>{this.itemController.props.set("selected",c),this.contentController.viewProps.set("hidden",!c)})}get itemController(){return this.ic_}get contentController(){return this.cc_}onItemClick_(){this.props.set("selected",!0)}}class Hn{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,c){return this.rackApi_.addInput(e,t,c)}addMonitor(e,t,c){return this.rackApi_.addMonitor(e,t,c)}addBlade(e){return this.rackApi_.addBlade(e)}}class Di extends Fe{constructor(e,t){super(e,new kn(e.rackController,t)),this.onPageAdd_=this.onPageAdd_.bind(this),this.onPageRemove_=this.onPageRemove_.bind(this),this.onSelect_=this.onSelect_.bind(this),this.emitter_=new z,this.pageApiMap_=new Map,this.rackApi_.on("change",c=>{this.emitter_.emit("change",{event:c})}),this.rackApi_.on("update",c=>{this.emitter_.emit("update",{event:c})}),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(c=>{this.setUpPageApi_(c)})}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,c=new Vi(t,{itemProps:q.fromObject({selected:!1,title:e.title}),props:q.fromObject({selected:!1})});this.controller_.add(c,e.index);const b=this.pageApiMap_.get(c);if(!b)throw I.shouldNeverHappen();return b}removePage(e){this.controller_.remove(e)}on(e,t){const c=t.bind(this);return this.emitter_.on(e,b=>{c(b.event)}),this}setUpPageApi_(e){const t=this.rackApi_.apiSet_.find(b=>b.controller_===e.contentController);if(!t)throw I.shouldNeverHappen();const c=new Hn(e,t);this.pageApiMap_.set(e,c)}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 w(this,e.rawValue)})}}const Ii=-1;class Ds{constructor(){this.onItemSelectedChange_=this.onItemSelectedChange_.bind(this),this.empty=te(!0),this.selectedIndex=te(Ii),this.items_=[]}add(e,t){const c=t??this.items_.length;this.items_.splice(c,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=Ii,this.empty.rawValue=!0;return}const e=this.items_.findIndex(t=>t.rawValue);e<0?(this.items_.forEach((t,c)=>{t.rawValue=c===0}),this.selectedIndex.rawValue=0):(this.items_.forEach((t,c)=>{t.rawValue=c===e}),this.selectedIndex.rawValue=e),this.empty.rawValue=!1}onItemSelectedChange_(e){if(e.rawValue){const t=this.items_.findIndex(c=>c===e.sender);this.items_.forEach((c,b)=>{c.rawValue=b===t}),this.selectedIndex.rawValue=t}else this.keepSelection_()}}const Tt=E("tab");class Et{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Tt(),Si()),t.viewProps.bindClassModifiers(this.element),U(t.empty,Y(this.element,Tt(void 0,"nop")));const c=e.createElement("div");c.classList.add(Tt("t")),this.element.appendChild(c),this.itemsElement=c;const b=e.createElement("div");b.classList.add(Tt("i")),this.element.appendChild(b);const k=t.contentsElement;k.classList.add(Tt("c")),this.element.appendChild(k),this.contentsElement=k}}class Jt extends Zn{constructor(e,t){const c=new Zt(e,{blade:t.blade,viewProps:t.viewProps}),b=new Ds;super({blade:t.blade,rackController:c,view:new Et(e,{contentsElement:c.view.element,empty:b.empty,viewProps:t.viewProps})}),this.onPageAdd_=this.onPageAdd_.bind(this),this.onPageRemove_=this.onPageRemove_.bind(this),this.pageSet_=new wt(()=>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;bt(this.view.itemsElement,t.itemController.view.element,e.index),t.itemController.viewProps.set("parent",this.viewProps),this.rackController.rack.add(t.contentController,e.index),this.tab.add(t.props.value("selected"))}onPageRemove_(e){const t=e.item;Cn(t.itemController.view.element),t.itemController.viewProps.set("parent",null),this.rackController.rack.remove(t.contentController),this.tab.remove(t.props.value("selected"))}}const ei={id:"tab",type:"blade",accept(n){const e=V,t=ce(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 Jt(n.document,{blade:n.blade,viewProps:n.viewProps});return n.params.pages.forEach(t=>{const c=new Vi(n.document,{itemProps:q.fromObject({selected:!1,title:t.title}),props:q.fromObject({selected:!1})});e.add(c)}),e},api(n){return n.controller instanceof Jt?new Di(n.controller,n.pool):null}};function Is(n,e){const t=n.accept(e.params);if(!t)return null;const c=V.optional.boolean(e.params.disabled).value,b=V.optional.boolean(e.params.hidden).value;return n.controller({blade:ye(),document:e.document,params:Object.assign(Object.assign({},t.params),{disabled:c,hidden:b}),viewProps:Re.create({disabled:c,hidden:b})})}class Ti{constructor(){this.disabled=!1,this.emitter=new z}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class ti{constructor(e,t){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=e,this.emitter=new z,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 Sn{constructor(e){this.onValueChange_=this.onValueChange_.bind(this),this.reader=e.reader,this.writer=e.writer,this.emitter=new z,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 Pe(n,e){for(;n.length<e;)n.push(void 0)}function Ei(n){const e=[];return Pe(e,n),te(e)}function Ot(n){const e=n.indexOf(void 0);return e<0?n:n.slice(0,e)}function Ge(n,e){const t=[...Ot(n),e];return t.length>n.length?t.splice(0,t.length-n.length):Pe(t,n.length),t}class Ts{constructor(e){this.onTick_=this.onTick_.bind(this),this.reader_=e.reader,this.target=e.target,this.emitter=new z,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,c=this.reader_(e);this.value.rawValue=Ge(t,c),this.emitter.emit("update",{rawValue:c,sender:this})}onTick_(e){this.read()}}class Ht{constructor(e){this.constraints=e}constrain(e){return this.constraints.reduce((t,c)=>c.constrain(t),e)}}function Ye(n,e){if(n instanceof e)return n;if(n instanceof Ht){const t=n.constraints.reduce((c,b)=>c||(b instanceof e?b:null),null);if(t)return t}return null}class Bt{constructor(e){this.values=q.fromObject({max:e.max,min:e.min})}constrain(e){const t=this.values.get("max"),c=this.values.get("min");return Math.min(Math.max(e,c),t)}}class en{constructor(e){this.values=q.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 ni{constructor(e){this.values=q.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"),c=this.values.get("min");let b=e;return y(c)||(b=Math.max(b,c)),y(t)||(b=Math.min(b,t)),b}}class Ln{constructor(e,t=0){this.step=e,this.origin=t}constrain(e){const t=this.origin%this.step,c=Math.round((e-t)/this.step);return t+c*this.step}}const Nt=E("lst");class Oi{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.props_=t.props,this.element=e.createElement("div"),this.element.classList.add(Nt()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("select");c.classList.add(Nt("s")),j(this.props_,"options",k=>{Yt(c),k.forEach((L,R)=>{const W=e.createElement("option");W.dataset.index=String(R),W.textContent=L.text,W.value=String(L.value),c.appendChild(W)})}),t.viewProps.bindDisabled(c),this.element.appendChild(c),this.selectElement=c;const b=e.createElement("div");b.classList.add(Nt("m")),b.appendChild(ut(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 tn{constructor(e,t){this.onSelectChange_=this.onSelectChange_.bind(this),this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.view=new Oi(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.view.selectElement.addEventListener("change",this.onSelectChange_)}onSelectChange_(e){const c=e.currentTarget.selectedOptions.item(0);if(!c)return;const b=Number(c.dataset.index);this.value.rawValue=this.props.get("options")[b].value}}const Bi=E("pop");class Es{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Bi()),t.viewProps.bindClassModifiers(this.element),U(t.shows,Y(this.element,Bi(void 0,"v")))}}class Ni{constructor(e,t){this.shows=te(!1),this.viewProps=t.viewProps,this.view=new Es(e,{shows:this.shows,viewProps:this.viewProps})}}const Fi=E("txt");class Os{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(Fi()),t.viewProps.bindClassModifiers(this.element),this.props_=t.props,this.props_.emitter.on("change",this.onChange_);const c=e.createElement("input");c.classList.add(Fi("i")),c.type="text",t.viewProps.bindDisabled(c),this.element.appendChild(c),this.inputElement=c,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 Vn{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 Os(e,{props:t.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(e){const c=e.currentTarget.value,b=this.parser_(c);y(b)||(this.value.rawValue=b),this.view.refresh()}}function Bs(n){return String(n)}function zi(n){return n==="false"?!1:!!n}function ji(n){return Bs(n)}class Ns{constructor(e){this.text=e}evaluate(){return Number(this.text)}toString(){return this.text}}const Fs={"**":(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 zs{constructor(e,t,c){this.left=t,this.operator=e,this.right=c}evaluate(){const e=Fs[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 Ui={"+":n=>n,"-":n=>-n,"~":n=>~n};class js{constructor(e,t){this.operator=e,this.expression=t}evaluate(){const e=Ui[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 ii(n){return(e,t)=>{for(let c=0;c<n.length;c++){const b=n[c](e,t);if(b!=="")return b}return""}}function _t(n,e){var t;const c=n.substr(e).match(/^\s+/);return(t=c&&c[0])!==null&&t!==void 0?t:""}function Us(n,e){const t=n.substr(e,1);return t.match(/^[1-9]$/)?t:""}function nn(n,e){var t;const c=n.substr(e).match(/^[0-9]+/);return(t=c&&c[0])!==null&&t!==void 0?t:""}function Rs(n,e){const t=nn(n,e);if(t!=="")return t;const c=n.substr(e,1);if(e+=1,c!=="-"&&c!=="+")return"";const b=nn(n,e);return b===""?"":c+b}function et(n,e){const t=n.substr(e,1);if(e+=1,t.toLowerCase()!=="e")return"";const c=Rs(n,e);return c===""?"":t+c}function Ri(n,e){const t=n.substr(e,1);if(t==="0")return t;const c=Us(n,e);return e+=c.length,c===""?"":c+nn(n,e)}function Gs(n,e){const t=Ri(n,e);if(e+=t.length,t==="")return"";const c=n.substr(e,1);if(e+=c.length,c!==".")return"";const b=nn(n,e);return e+=b.length,t+c+b+et(n,e)}function Gi(n,e){const t=n.substr(e,1);if(e+=t.length,t!==".")return"";const c=nn(n,e);return e+=c.length,c===""?"":t+c+et(n,e)}function Ks(n,e){const t=Ri(n,e);return e+=t.length,t===""?"":t+et(n,e)}const Ki=ii([Gs,Gi,Ks]);function si(n,e){var t;const c=n.substr(e).match(/^[01]+/);return(t=c&&c[0])!==null&&t!==void 0?t:""}function $s(n,e){const t=n.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0b")return"";const c=si(n,e);return c===""?"":t+c}function $i(n,e){var t;const c=n.substr(e).match(/^[0-7]+/);return(t=c&&c[0])!==null&&t!==void 0?t:""}function Ke(n,e){const t=n.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0o")return"";const c=$i(n,e);return c===""?"":t+c}function Xs(n,e){var t;const c=n.substr(e).match(/^[0-9a-f]+/i);return(t=c&&c[0])!==null&&t!==void 0?t:""}function Ys(n,e){const t=n.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0x")return"";const c=Xs(n,e);return c===""?"":t+c}const ri=ii([$s,Ke,Ys]),qs=ii([ri,Ki]);function dt(n,e){const t=qs(n,e);return e+=t.length,t===""?null:{evaluable:new Ns(t),cursor:e}}function oi(n,e){const t=n.substr(e,1);if(e+=t.length,t!=="(")return null;const c=Dn(n,e);if(!c)return null;e=c.cursor,e+=_t(n,e).length;const b=n.substr(e,1);return e+=b.length,b!==")"?null:{evaluable:c.evaluable,cursor:e}}function Qs(n,e){var t;return(t=dt(n,e))!==null&&t!==void 0?t:oi(n,e)}function ai(n,e){const t=Qs(n,e);if(t)return t;const c=n.substr(e,1);if(e+=c.length,c!=="+"&&c!=="-"&&c!=="~")return null;const b=ai(n,e);return b?(e=b.cursor,{cursor:e,evaluable:new js(c,b.evaluable)}):null}function Zs(n,e,t){t+=_t(e,t).length;const c=n.filter(b=>e.startsWith(b,t))[0];return c?(t+=c.length,t+=_t(e,t).length,{cursor:t,operator:c}):null}function yt(n,e){return(t,c)=>{const b=n(t,c);if(!b)return null;c=b.cursor;let k=b.evaluable;for(;;){const L=Zs(e,t,c);if(!L)break;c=L.cursor;const R=n(t,c);if(!R)return null;c=R.cursor,k=new zs(L.operator,k,R.evaluable)}return k?{cursor:c,evaluable:k}:null}}const Xi=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((n,e)=>yt(n,e),ai);function Dn(n,e){return e+=_t(n,e).length,Xi(n,e)}function Yi(n){const e=Dn(n,0);return!e||e.cursor+_t(n,e.cursor).length!==n.length?null:e.evaluable}function tt(n){var e;const t=Yi(n);return(e=t==null?void 0:t.evaluate())!==null&&e!==void 0?e:null}function ct(n){if(typeof n=="number")return n;if(typeof n=="string"){const e=tt(n);if(!y(e))return e}return 0}function Ws(n){return String(n)}function Le(n){return e=>e.toFixed(Math.max(Math.min(n,20),0))}const qi=Le(0);function sn(n){return qi(n)+"%"}function li(n){return String(n)}function mt(n){return n}function Ft({primary:n,secondary:e,forward:t,backward:c}){let b=!1;function k(L){b||(b=!0,L(),b=!1)}n.emitter.on("change",L=>{k(()=>{e.setRawValue(t(n,e),L.options)})}),e.emitter.on("change",L=>{k(()=>{n.setRawValue(c(n,e),L.options)}),k(()=>{e.setRawValue(t(n,e),L.options)})}),k(()=>{e.setRawValue(t(n,e),{forceEmit:!1,last:!0})})}function Ie(n,e){const t=n*(e.altKey?.1:1)*(e.shiftKey?10:1);return e.upKey?+t:e.downKey?-t:0}function rn(n){return{altKey:n.altKey,downKey:n.key==="ArrowDown",shiftKey:n.shiftKey,upKey:n.key==="ArrowUp"}}function nt(n){return{altKey:n.altKey,downKey:n.key==="ArrowLeft",shiftKey:n.shiftKey,upKey:n.key==="ArrowRight"}}function Qi(n){return n==="ArrowUp"||n==="ArrowDown"}function In(n){return Qi(n)||n==="ArrowLeft"||n==="ArrowRight"}function ci(n,e){var t,c;const b=e.ownerDocument.defaultView,k=e.getBoundingClientRect();return{x:n.pageX-(((t=b&&b.scrollX)!==null&&t!==void 0?t:0)+k.left),y:n.pageY-(((c=b&&b.scrollY)!==null&&c!==void 0?c:0)+k.top)}}class xt{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 z,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 c=this.elem_.ownerDocument;c.addEventListener("mousemove",this.onDocumentMouseMove_),c.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(ci(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onDocumentMouseMove_(e){this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(ci(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_(ci(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onTouchStart_(e){e.preventDefault();const t=e.targetTouches.item(0),c=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(t?{x:t.clientX-c.left,y:t.clientY-c.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=t}onTouchMove_(e){const t=e.targetTouches.item(0),c=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(t?{x:t.clientX-c.left,y:t.clientY-c.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=t}onTouchEnd_(e){var t;const c=(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_(c?{x:c.clientX-b.left,y:c.clientY-b.top}:void 0),sender:this,shiftKey:e.shiftKey})}}function we(n,e,t,c,b){const k=(n-e)/(t-e);return c+k*(b-c)}function pi(n){return String(n.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function ke(n,e,t){return Math.min(Math.max(n,e),t)}function zt(n,e){return(n%e+e)%e}const ze=E("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(ze(),ze(void 0,"num")),t.arrayPosition&&this.element.classList.add(ze(void 0,t.arrayPosition)),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("input");c.classList.add(ze("i")),c.type="text",t.viewProps.bindDisabled(c),this.element.appendChild(c),this.inputElement=c,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=t.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add(ze()),this.inputElement.classList.add(ze("i"));const b=e.createElement("div");b.classList.add(ze("k")),this.element.appendChild(b),this.knobElement=b;const k=e.createElementNS(Be,"svg");k.classList.add(ze("g")),this.knobElement.appendChild(k);const L=e.createElementNS(Be,"path");L.classList.add(ze("gb")),k.appendChild(L),this.guideBodyElem_=L;const R=e.createElementNS(Be,"path");R.classList.add(ze("gh")),k.appendChild(R),this.guideHeadElem_=R;const W=e.createElement("div");W.classList.add(E("tt")()),this.knobElement.appendChild(W),this.tooltipElem_=W,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.refresh()}onDraggingChange_(e){if(e.rawValue===null){this.element.classList.remove(ze(void 0,"drg"));return}this.element.classList.add(ze(void 0,"drg"));const t=e.rawValue/this.props_.get("draggingScale"),c=t+(t>0?-1:t<0?1:0),b=ke(-c,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${c+b},0 L${c},4 L${c+b},8`,`M ${t},-1 L${t},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${t},4`);const k=this.props_.get("formatter");this.tooltipElem_.textContent=k(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 on{constructor(e,t){var c;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_=(c=t.sliderProps)!==null&&c!==void 0?c:null,this.value=t.value,this.viewProps=t.viewProps,this.dragging_=te(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 xt(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,c;const b=(t=this.sliderProps_)===null||t===void 0?void 0:t.get("minValue"),k=(c=this.sliderProps_)===null||c===void 0?void 0:c.get("maxValue");let L=e;return b!==void 0&&(L=Math.max(L,b)),k!==void 0&&(L=Math.min(L,k)),L}onInputChange_(e){const c=e.currentTarget.value,b=this.parser_(c);y(b)||(this.value.rawValue=this.constrainValue_(b)),this.view.refresh()}onInputKeyDown_(e){const t=Ie(this.baseStep_,rn(e));t!==0&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+t),{forceEmit:!1,last:!1})}onInputKeyUp_(e){Ie(this.baseStep_,rn(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 hi=E("sld");class je{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(hi()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(hi("t")),t.viewProps.bindTabIndex(c),this.element.appendChild(c),this.trackElement=c;const b=e.createElement("div");b.classList.add(hi("k")),this.trackElement.appendChild(b),this.knobElement=b,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.update_()}update_(){const e=ke(we(this.value.rawValue,this.props_.get("minValue"),this.props_.get("maxValue"),0,100),0,100);this.knobElement.style.width=`${e}%`}onChange_(){this.update_()}}class di{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 je(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new xt(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(we(ke(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=Ie(this.baseStep_,nt(e));t!==0&&this.value.setRawValue(this.value.rawValue+t,{forceEmit:!1,last:!1})}onKeyUp_(e){Ie(this.baseStep_,nt(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const an=E("sldtxt");class mi{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(an());const c=e.createElement("div");c.classList.add(an("s")),this.sliderView_=t.sliderView,c.appendChild(this.sliderView_.element),this.element.appendChild(c);const b=e.createElement("div");b.classList.add(an("t")),this.textView_=t.textView,b.appendChild(this.textView_.element),this.element.appendChild(b)}}class Tn{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.sliderC_=new di(e,{baseStep:t.baseStep,props:t.sliderProps,value:t.value,viewProps:this.viewProps}),this.textC_=new on(e,{baseStep:t.baseStep,parser:t.parser,props:t.textProps,sliderProps:t.sliderProps,value:t.value,viewProps:t.viewProps}),this.view=new mi(e,{sliderView:this.sliderC_.view,textView:this.textC_.view})}get sliderController(){return this.sliderC_}get textController(){return this.textC_}}function qe(n,e){n.write(e)}function ln(n){const e=V;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 fi(n){if(n==="inline"||n==="popup")return n}function pt(n){const e=V;return e.required.object({max:e.optional.number,min:e.optional.number,step:e.optional.number})(n).value}function Zi(n){if(Array.isArray(n))return n;const e=[];return Object.keys(n).forEach(t=>{e.push({text:t,value:n[t]})}),e}function vi(n){return y(n)?null:new en(Zi(n))}function Js(n){const e=n?Ye(n,Ln):null;return e?e.step:null}function En(n,e){const t=n&&Ye(n,Ln);return t?pi(t.step):Math.max(pi(e),2)}function Ct(n){const e=Js(n);return e??1}function Pt(n,e){var t;const c=n&&Ye(n,Ln),b=Math.abs((t=c==null?void 0:c.step)!==null&&t!==void 0?t:e);return b===0?.1:Math.pow(10,Math.floor(Math.log10(b))-1)}const cn=E("ckb");class pn{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 c=e.createElement("label");c.classList.add(cn("l")),this.element.appendChild(c);const b=e.createElement("input");b.classList.add(cn("i")),b.type="checkbox",c.appendChild(b),this.inputElement=b,t.viewProps.bindDisabled(this.inputElement);const k=e.createElement("div");k.classList.add(cn("w")),c.appendChild(k);const L=ut(e,"check");k.appendChild(L),t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.update_()}update_(){this.inputElement.checked=this.value.rawValue}onValueChange_(){this.update_()}}class Wi{constructor(e,t){this.onInputChange_=this.onInputChange_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new pn(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 Ji(n){const e=[],t=vi(n.options);return t&&e.push(t),new Ht(e)}const On={id:"input-bool",type:"input",accept:(n,e)=>{if(typeof n!="boolean")return null;const c=ce(e,{options:V.optional.custom(ln)});return c?{initialValue:n,params:c}:null},binding:{reader:n=>zi,constraint:n=>Ji(n.params),writer:n=>qe},controller:n=>{const e=n.document,t=n.value,c=n.constraint,b=c&&Ye(c,en);return b?new tn(e,{props:new q({options:b.values.value("options")}),value:t,viewProps:n.viewProps}):new Wi(e,{value:t,viewProps:n.viewProps})}},kt=E("col");class bi{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(kt()),t.foldable.bindExpandedClass(this.element,kt(void 0,"expanded")),j(t.foldable,"completed",Y(this.element,kt(void 0,"cpl")));const c=e.createElement("div");c.classList.add(kt("h")),this.element.appendChild(c);const b=e.createElement("div");b.classList.add(kt("s")),c.appendChild(b),this.swatchElement=b;const k=e.createElement("div");if(k.classList.add(kt("t")),c.appendChild(k),this.textElement=k,t.pickerLayout==="inline"){const L=e.createElement("div");L.classList.add(kt("p")),this.element.appendChild(L),this.pickerElement=L}else this.pickerElement=null}}function Hs(n,e,t){const c=ke(n/255,0,1),b=ke(e/255,0,1),k=ke(t/255,0,1),L=Math.max(c,b,k),R=Math.min(c,b,k),W=L-R;let ee=0,de=0;const ve=(R+L)/2;return W!==0&&(de=W/(1-Math.abs(L+R-1)),c===L?ee=(b-k)/W:b===L?ee=2+(k-c)/W:ee=4+(c-b)/W,ee=ee/6+(ee<0?1:0)),[ee*360,de*100,ve*100]}function er(n,e,t){const c=(n%360+360)%360,b=ke(e/100,0,1),k=ke(t/100,0,1),L=(1-Math.abs(2*k-1))*b,R=L*(1-Math.abs(c/60%2-1)),W=k-L/2;let ee,de,ve;return c>=0&&c<60?[ee,de,ve]=[L,R,0]:c>=60&&c<120?[ee,de,ve]=[R,L,0]:c>=120&&c<180?[ee,de,ve]=[0,L,R]:c>=180&&c<240?[ee,de,ve]=[0,R,L]:c>=240&&c<300?[ee,de,ve]=[R,0,L]:[ee,de,ve]=[L,0,R],[(ee+W)*255,(de+W)*255,(ve+W)*255]}function tr(n,e,t){const c=ke(n/255,0,1),b=ke(e/255,0,1),k=ke(t/255,0,1),L=Math.max(c,b,k),R=Math.min(c,b,k),W=L-R;let ee;W===0?ee=0:L===c?ee=60*(((b-k)/W%6+6)%6):L===b?ee=60*((k-c)/W+2):ee=60*((c-b)/W+4);const de=L===0?0:W/L,ve=L;return[ee,de*100,ve*100]}function Hi(n,e,t){const c=zt(n,360),b=ke(e/100,0,1),k=ke(t/100,0,1),L=k*b,R=L*(1-Math.abs(c/60%2-1)),W=k-L;let ee,de,ve;return c>=0&&c<60?[ee,de,ve]=[L,R,0]:c>=60&&c<120?[ee,de,ve]=[R,L,0]:c>=120&&c<180?[ee,de,ve]=[0,L,R]:c>=180&&c<240?[ee,de,ve]=[0,R,L]:c>=240&&c<300?[ee,de,ve]=[R,0,L]:[ee,de,ve]=[L,0,R],[(ee+W)*255,(de+W)*255,(ve+W)*255]}function m(n,e,t){const c=t+e*(100-Math.abs(2*t-100))/200;return[n,c!==0?e*(100-Math.abs(2*t-100))/c:0,t+e*(100-Math.abs(2*t-100))/(2*100)]}function a(n,e,t){const c=100-Math.abs(t*(200-e)/100-100);return[n,c!==0?e*t/c:0,t*(200-e)/(2*100)]}function p(n){return[n[0],n[1],n[2]]}function v(n,e){return[n[0],n[1],n[2],e]}const P={hsl:{hsl:(n,e,t)=>[n,e,t],hsv:m,rgb:er},hsv:{hsl:a,hsv:(n,e,t)=>[n,e,t],rgb:Hi},rgb:{hsl:Hs,hsv:tr,rgb:(n,e,t)=>[n,e,t]}};function S(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 B(n,e){return n===e?e:zt(n,e)}function G(n,e,t){var c;const b=S(e,t);return[e==="rgb"?ke(n[0],0,b[0]):B(n[0],b[0]),ke(n[1],0,b[1]),ke(n[2],0,b[2]),ke((c=n[3])!==null&&c!==void 0?c:1,0,1)]}function oe(n,e,t,c){const b=S(e,t),k=S(e,c);return n.map((L,R)=>L/b[R]*k[R])}function $e(n,e,t){const c=oe(n,e.mode,e.type,"int"),b=P[e.mode][t.mode](...c);return oe(b,t.mode,"int",t.type)}function Xe(n,e){return typeof n!="object"||y(n)?!1:e in n&&typeof n[e]=="number"}class ne{static black(e="int"){return new ne([0,0,0],"rgb",e)}static fromObject(e,t="int"){const c="a"in e?[e.r,e.g,e.b,e.a]:[e.r,e.g,e.b];return new ne(c,"rgb",t)}static toRgbaObject(e,t="int"){return e.toRgbaObject(t)}static isRgbColorObject(e){return Xe(e,"r")&&Xe(e,"g")&&Xe(e,"b")}static isRgbaColorObject(e){return this.isRgbColorObject(e)&&Xe(e,"a")}static isColorObject(e){return this.isRgbColorObject(e)}static equals(e,t){if(e.mode!==t.mode)return!1;const c=e.comps_,b=t.comps_;for(let k=0;k<c.length;k++)if(c[k]!==b[k])return!1;return!0}constructor(e,t,c="int"){this.mode=t,this.type=c,this.comps_=G(e,t,c)}getComponents(e,t="int"){return v($e(p(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 ft=E("colp");class nr{constructor(e,t){this.alphaViews_=null,this.element=e.createElement("div"),this.element.classList.add(ft()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(ft("hsv"));const b=e.createElement("div");b.classList.add(ft("sv")),this.svPaletteView_=t.svPaletteView,b.appendChild(this.svPaletteView_.element),c.appendChild(b);const k=e.createElement("div");k.classList.add(ft("h")),this.hPaletteView_=t.hPaletteView,k.appendChild(this.hPaletteView_.element),c.appendChild(k),this.element.appendChild(c);const L=e.createElement("div");if(L.classList.add(ft("rgb")),this.textView_=t.textView,L.appendChild(this.textView_.element),this.element.appendChild(L),t.alphaViews){this.alphaViews_={palette:t.alphaViews.palette,text:t.alphaViews.text};const R=e.createElement("div");R.classList.add(ft("a"));const W=e.createElement("div");W.classList.add(ft("ap")),W.appendChild(this.alphaViews_.palette.element),R.appendChild(W);const ee=e.createElement("div");ee.classList.add(ft("at")),ee.appendChild(this.alphaViews_.text.element),R.appendChild(ee),this.element.appendChild(R)}}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 Hc(n){return n==="int"?"int":n==="float"?"float":void 0}function ir(n){const e=V;return ce(n,{alpha:e.optional.boolean,color:e.optional.object({alpha:e.optional.boolean,type:e.optional.custom(Hc)}),expanded:e.optional.boolean,picker:e.optional.custom(fi)})}function un(n){return n?.1:1}function hn(n){var e;return(e=n.color)===null||e===void 0?void 0:e.type}function ep(n,e){return n.alpha===e.alpha&&n.mode===e.mode&&n.notation===e.notation&&n.type===e.type}function it(n,e){const t=n.match(/^(.+)%$/);return Math.min(t?parseFloat(t[1])*.01*e:parseFloat(n),e)}const tp={deg:n=>n,grad:n=>n*360/400,rad:n=>n*360/(2*Math.PI),turn:n=>n*360};function no(n){const e=n.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);if(!e)return parseFloat(n);const t=parseFloat(e[1]),c=e[2];return tp[c](t)}function io(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=[it(e[1],255),it(e[2],255),it(e[3],255)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function so(n){return e=>{const t=io(e);return t?new ne(t,"rgb",n):null}}function ro(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=[it(e[1],255),it(e[2],255),it(e[3],255),it(e[4],1)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function oo(n){return e=>{const t=ro(e);return t?new ne(t,"rgb",n):null}}function ao(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=[no(e[1]),it(e[2],100),it(e[3],100)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function lo(n){return e=>{const t=ao(e);return t?new ne(t,"hsl",n):null}}function co(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=[no(e[1]),it(e[2],100),it(e[3],100),it(e[4],1)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function po(n){return e=>{const t=co(e);return t?new ne(t,"hsl",n):null}}function uo(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 np(n){const e=uo(n);return e?new ne(e,"rgb","int"):null}function ho(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),we(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),we(parseInt(t[4],16),0,255,0,1)]:null}function ip(n){const e=ho(n);return e?new ne(e,"rgb","int"):null}function mo(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 fo(n){return e=>{const t=mo(e);return t?new ne(t,"rgb",n):null}}function vo(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 bo(n){return e=>{const t=vo(e);return t?new ne(t,"rgb",n):null}}const sp=[{parser:uo,result:{alpha:!1,mode:"rgb",notation:"hex"}},{parser:ho,result:{alpha:!0,mode:"rgb",notation:"hex"}},{parser:io,result:{alpha:!1,mode:"rgb",notation:"func"}},{parser:ro,result:{alpha:!0,mode:"rgb",notation:"func"}},{parser:ao,result:{alpha:!1,mode:"hsl",notation:"func"}},{parser:co,result:{alpha:!0,mode:"hsl",notation:"func"}},{parser:mo,result:{alpha:!1,mode:"rgb",notation:"object"}},{parser:vo,result:{alpha:!0,mode:"rgb",notation:"object"}}];function rp(n){return sp.reduce((e,{parser:t,result:c})=>e||(t(n)?c:null),null)}function sr(n,e="int"){const t=rp(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 go={int:[np,ip,so("int"),oo("int"),lo("int"),po("int"),fo("int"),bo("int")],float:[so("float"),oo("float"),lo("float"),po("float"),fo("float"),bo("float")]};function op(n){const e=go[n];return t=>{if(typeof t!="string")return ne.black(n);const c=e.reduce((b,k)=>b||k(t),null);return c??ne.black(n)}}function rr(n){const e=go[n];return t=>e.reduce((c,b)=>c||b(t),null)}function wo(n){const e=ke(Math.floor(n),0,255).toString(16);return e.length===1?`0${e}`:e}function _o(n,e="#"){const t=p(n.getComponents("rgb")).map(wo).join("");return`${e}${t}`}function or(n,e="#"){const t=n.getComponents("rgb"),c=[t[0],t[1],t[2],t[3]*255].map(wo).join("");return`${e}${c}`}function yo(n,e){const t=Le(e==="float"?2:0);return`rgb(${p(n.getComponents("rgb",e)).map(b=>t(b)).join(", ")})`}function ap(n){return e=>yo(e,n)}function es(n,e){const t=Le(2),c=Le(e==="float"?2:0);return`rgba(${n.getComponents("rgb",e).map((k,L)=>(L===3?t:c)(k)).join(", ")})`}function lp(n){return e=>es(e,n)}function cp(n){const e=[Le(0),sn,sn];return`hsl(${p(n.getComponents("hsl")).map((c,b)=>e[b](c)).join(", ")})`}function pp(n){const e=[Le(0),sn,sn,Le(2)];return`hsla(${n.getComponents("hsl").map((c,b)=>e[b](c)).join(", ")})`}function xo(n,e){const t=Le(e==="float"?2:0),c=["r","g","b"];return`{${p(n.getComponents("rgb",e)).map((k,L)=>`${c[L]}: ${t(k)}`).join(", ")}}`}function up(n){return e=>xo(e,n)}function Co(n,e){const t=Le(2),c=Le(e==="float"?2:0),b=["r","g","b","a"];return`{${n.getComponents("rgb",e).map((L,R)=>{const W=R===3?t:c;return`${b[R]}: ${W(L)}`}).join(", ")}}`}function hp(n){return e=>Co(e,n)}const dp=[{format:{alpha:!1,mode:"rgb",notation:"hex",type:"int"},stringifier:_o},{format:{alpha:!0,mode:"rgb",notation:"hex",type:"int"},stringifier:or},{format:{alpha:!1,mode:"hsl",notation:"func",type:"int"},stringifier:cp},{format:{alpha:!0,mode:"hsl",notation:"func",type:"int"},stringifier:pp},...["int","float"].reduce((n,e)=>[...n,{format:{alpha:!1,mode:"rgb",notation:"func",type:e},stringifier:ap(e)},{format:{alpha:!0,mode:"rgb",notation:"func",type:e},stringifier:lp(e)},{format:{alpha:!1,mode:"rgb",notation:"object",type:e},stringifier:up(e)},{format:{alpha:!0,mode:"rgb",notation:"object",type:e},stringifier:hp(e)}],[])];function ar(n){return dp.reduce((e,t)=>e||(ep(t.format,n)?t.stringifier:null),null)}const gi=E("apl");class mp{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(gi()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);const c=e.createElement("div");c.classList.add(gi("b")),this.element.appendChild(c);const b=e.createElement("div");b.classList.add(gi("c")),c.appendChild(b),this.colorElem_=b;const k=e.createElement("div");k.classList.add(gi("m")),this.element.appendChild(k),this.markerElem_=k;const L=e.createElement("div");L.classList.add(gi("p")),this.markerElem_.appendChild(L),this.previewElem_=L,this.update_()}update_(){const e=this.value.rawValue,t=e.getComponents("rgb"),c=new ne([t[0],t[1],t[2],0],"rgb"),b=new ne([t[0],t[1],t[2],255],"rgb"),k=["to right",es(c),es(b)];this.colorElem_.style.background=`linear-gradient(${k.join(",")})`,this.previewElem_.style.backgroundColor=es(e);const L=we(t[3],0,1,0,100);this.markerElem_.style.left=`${L}%`}onValueChange_(){this.update_()}}class fp{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 mp(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new xt(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 c=e.point.x/e.bounds.width,b=this.value.rawValue,[k,L,R]=b.getComponents("hsv");this.value.setRawValue(new ne([k,L,R,c],"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=Ie(un(!0),nt(e));if(t===0)return;const c=this.value.rawValue,[b,k,L,R]=c.getComponents("hsv");this.value.setRawValue(new ne([b,k,L,R+t],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){Ie(un(!0),nt(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const Bn=E("coltxt");function vp(n){const e=n.createElement("select"),t=[{text:"RGB",value:"rgb"},{text:"HSL",value:"hsl"},{text:"HSV",value:"hsv"}];return e.appendChild(t.reduce((c,b)=>{const k=n.createElement("option");return k.textContent=b.text,k.value=b.value,c.appendChild(k),c},n.createDocumentFragment())),e}class bp{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Bn()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(Bn("m")),this.modeElem_=vp(e),this.modeElem_.classList.add(Bn("ms")),c.appendChild(this.modeSelectElement),t.viewProps.bindDisabled(this.modeElem_);const b=e.createElement("div");b.classList.add(Bn("mm")),b.appendChild(ut(e,"dropdown")),c.appendChild(b),this.element.appendChild(c);const k=e.createElement("div");k.classList.add(Bn("w")),this.element.appendChild(k),this.textsElem_=k,this.textViews_=t.textViews,this.applyTextViews_(),U(t.colorMode,L=>{this.modeElem_.value=L})}get modeSelectElement(){return this.modeElem_}get textViews(){return this.textViews_}set textViews(e){this.textViews_=e,this.applyTextViews_()}applyTextViews_(){Yt(this.textsElem_);const e=this.element.ownerDocument;this.textViews_.forEach(t=>{const c=e.createElement("div");c.classList.add(Bn("c")),c.appendChild(t.element),this.textsElem_.appendChild(c)})}}function gp(n){return Le(n==="float"?2:0)}function wp(n,e,t){const c=S(n,e)[t];return new Bt({min:0,max:c})}function lr(n,e,t){return new on(n,{arrayPosition:t===0?"fst":t===3-1?"lst":"mid",baseStep:un(!1),parser:e.parser,props:q.fromObject({draggingScale:e.colorType==="float"?.01:1,formatter:gp(e.colorType)}),value:te(0,{constraint:wp(e.colorMode,e.colorType,t)}),viewProps:e.viewProps})}class _p{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=te(this.value.rawValue.mode),this.ccs_=this.createComponentControllers_(e),this.view=new bp(e,{colorMode:this.colorMode,textViews:[this.ccs_[0].view,this.ccs_[1].view,this.ccs_[2].view],viewProps:this.viewProps}),this.view.modeSelectElement.addEventListener("change",this.onModeSelectChange_)}createComponentControllers_(e){const t={colorMode:this.colorMode.rawValue,colorType:this.colorType_,parser:this.parser_,viewProps:this.viewProps},c=[lr(e,t,0),lr(e,t,1),lr(e,t,2)];return c.forEach((b,k)=>{Ft({primary:this.value,secondary:b.value,forward:L=>L.rawValue.getComponents(this.colorMode.rawValue,this.colorType_)[k],backward:(L,R)=>{const W=this.colorMode.rawValue,ee=L.rawValue.getComponents(W,this.colorType_);return ee[k]=R.rawValue,new ne(v(p(ee),ee[3]),W,this.colorType_)}})}),c}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 cr=E("hpl");class yp{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(cr()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);const c=e.createElement("div");c.classList.add(cr("c")),this.element.appendChild(c);const b=e.createElement("div");b.classList.add(cr("m")),this.element.appendChild(b),this.markerElem_=b,this.update_()}update_(){const e=this.value.rawValue,[t]=e.getComponents("hsv");this.markerElem_.style.backgroundColor=yo(new ne([t,100,100],"hsv"));const c=we(t,0,360,0,100);this.markerElem_.style.left=`${c}%`}onValueChange_(){this.update_()}}class xp{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 yp(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new xt(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 c=we(ke(e.point.x,0,e.bounds.width),0,e.bounds.width,0,360),b=this.value.rawValue,[,k,L,R]=b.getComponents("hsv");this.value.setRawValue(new ne([c,k,L,R],"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=Ie(un(!1),nt(e));if(t===0)return;const c=this.value.rawValue,[b,k,L,R]=c.getComponents("hsv");this.value.setRawValue(new ne([b+t,k,L,R],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){Ie(un(!1),nt(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const pr=E("svp"),Po=64;class Cp{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(pr()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);const c=e.createElement("canvas");c.height=Po,c.width=Po,c.classList.add(pr("c")),this.element.appendChild(c),this.canvasElement=c;const b=e.createElement("div");b.classList.add(pr("m")),this.element.appendChild(b),this.markerElem_=b,this.update_()}update_(){const e=yn(this.canvasElement);if(!e)return;const c=this.value.rawValue.getComponents("hsv"),b=this.canvasElement.width,k=this.canvasElement.height,L=e.getImageData(0,0,b,k),R=L.data;for(let de=0;de<k;de++)for(let ve=0;ve<b;ve++){const dn=we(ve,0,b,0,100),_i=we(de,0,k,100,0),yi=Hi(c[0],dn,_i),ts=(de*b+ve)*4;R[ts]=yi[0],R[ts+1]=yi[1],R[ts+2]=yi[2],R[ts+3]=255}e.putImageData(L,0,0);const W=we(c[1],0,100,0,100);this.markerElem_.style.left=`${W}%`;const ee=we(c[2],0,100,100,0);this.markerElem_.style.top=`${ee}%`}onValueChange_(){this.update_()}}class Pp{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 Cp(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new xt(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 c=we(e.point.x,0,e.bounds.width,0,100),b=we(e.point.y,0,e.bounds.height,100,0),[k,,,L]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new ne([k,c,b,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){In(e.key)&&e.preventDefault();const[t,c,b,k]=this.value.rawValue.getComponents("hsv"),L=un(!1),R=Ie(L,nt(e)),W=Ie(L,rn(e));R===0&&W===0||this.value.setRawValue(new ne([t,c+R,b+W,k],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){const t=un(!1),c=Ie(t,nt(e)),b=Ie(t,rn(e));c===0&&b===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class kp{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.hPaletteC_=new xp(e,{value:this.value,viewProps:this.viewProps}),this.svPaletteC_=new Pp(e,{value:this.value,viewProps:this.viewProps}),this.alphaIcs_=t.supportsAlpha?{palette:new fp(e,{value:this.value,viewProps:this.viewProps}),text:new on(e,{parser:tt,baseStep:.1,props:q.fromObject({draggingScale:.01,formatter:Le(2)}),value:te(0,{constraint:new Bt({min:0,max:1})}),viewProps:this.viewProps})}:null,this.alphaIcs_&&Ft({primary:this.value,secondary:this.alphaIcs_.text.value,forward:c=>c.rawValue.getComponents()[3],backward:(c,b)=>{const k=c.rawValue.getComponents();return k[3]=b.rawValue,new ne(k,c.rawValue.mode)}}),this.textC_=new _p(e,{colorType:t.colorType,parser:tt,value:this.value,viewProps:this.viewProps}),this.view=new nr(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,viewProps:this.viewProps})}get textController(){return this.textC_}}const ur=E("colsw");class Mp{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(ur()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(ur("sw")),this.element.appendChild(c),this.swatchElem_=c;const b=e.createElement("button");b.classList.add(ur("b")),t.viewProps.bindDisabled(b),this.element.appendChild(b),this.buttonElement=b,this.update_()}update_(){const e=this.value.rawValue;this.swatchElem_.style.backgroundColor=or(e)}onValueChange_(){this.update_()}}class Ap{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new Mp(e,{value:this.value,viewProps:this.viewProps})}}class hr{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_=De.create(t.expanded),this.swatchC_=new Ap(e,{value:this.value,viewProps:this.viewProps});const c=this.swatchC_.view.buttonElement;c.addEventListener("blur",this.onButtonBlur_),c.addEventListener("click",this.onButtonClick_),this.textC_=new Vn(e,{parser:t.parser,props:q.fromObject({formatter:t.formatter}),value:this.value,viewProps:this.viewProps}),this.view=new bi(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 Ni(e,{viewProps:this.viewProps}):null;const b=new kp(e,{colorType:t.colorType,supportsAlpha:t.supportsAlpha,value:this.value,viewProps:this.viewProps});b.view.allFocusableElements.forEach(k=>{k.addEventListener("blur",this.onPopupChildBlur_),k.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),Ft({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:k=>k.rawValue,backward:(k,L)=>L.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),Ne(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onButtonBlur_(e){if(!this.popC_)return;const t=this.view.element,c=e.relatedTarget;(!c||!t.contains(c))&&(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,c=ht(e);c&&t.contains(c)||c&&c===this.swatchC_.view.buttonElement&&!at(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 Sp(n,e){return ne.isColorObject(n)?ne.fromObject(n,e):ne.black(e)}function Lp(n){return p(n.getComponents("rgb")).reduce((e,t)=>e<<8|Math.floor(t)&255,0)}function Vp(n){return n.getComponents("rgb").reduce((e,t,c)=>{const b=Math.floor(c===3?t*255:t)&255;return e<<8|b},0)>>>0}function Dp(n){return new ne([n>>16&255,n>>8&255,n&255],"rgb")}function Ip(n){return new ne([n>>24&255,n>>16&255,n>>8&255,we(n&255,0,255,0,1)],"rgb")}function Tp(n){return typeof n!="number"?ne.black():Dp(n)}function Ep(n){return typeof n!="number"?ne.black():Ip(n)}function Op(n){const e=ar(n);return e?(t,c)=>{qe(t,e(c))}:null}function Bp(n){const e=n?Vp:Lp;return(t,c)=>{qe(t,e(c))}}function Np(n,e,t){const c=e.toRgbaObject(t);n.writeProperty("r",c.r),n.writeProperty("g",c.g),n.writeProperty("b",c.b),n.writeProperty("a",c.a)}function Fp(n,e,t){const c=e.toRgbaObject(t);n.writeProperty("r",c.r),n.writeProperty("g",c.g),n.writeProperty("b",c.b)}function zp(n,e){return(t,c)=>{n?Np(t,c,e):Fp(t,c,e)}}function dr(n){var e;return!!(n!=null&&n.alpha||!((e=n==null?void 0:n.color)===null||e===void 0)&&e.alpha)}function jp(n){return n?e=>or(e,"0x"):e=>_o(e,"0x")}function Up(n){return"color"in n||"view"in n&&n.view==="color"}const Rp={id:"input-color-number",type:"input",accept:(n,e)=>{if(typeof n!="number"||!Up(e))return null;const t=ir(e);return t?{initialValue:n,params:t}:null},binding:{reader:n=>dr(n.params)?Ep:Tp,equals:ne.equals,writer:n=>Bp(dr(n.params))},controller:n=>{const e=dr(n.params),t="expanded"in n.params?n.params.expanded:void 0,c="picker"in n.params?n.params.picker:void 0;return new hr(n.document,{colorType:"int",expanded:t??!1,formatter:jp(e),parser:rr("int"),pickerLayout:c??"popup",supportsAlpha:e,value:n.value,viewProps:n.viewProps})}};function Gp(n){return ne.isRgbaColorObject(n)}function Kp(n){return e=>Sp(e,n)}function $p(n,e){return t=>n?Co(t,e):xo(t,e)}const Xp={id:"input-color-object",type:"input",accept:(n,e)=>{if(!ne.isColorObject(n))return null;const t=ir(e);return t?{initialValue:n,params:t}:null},binding:{reader:n=>Kp(hn(n.params)),equals:ne.equals,writer:n=>zp(Gp(n.initialValue),hn(n.params))},controller:n=>{var e;const t=ne.isRgbaColorObject(n.initialValue),c="expanded"in n.params?n.params.expanded:void 0,b="picker"in n.params?n.params.picker:void 0,k=(e=hn(n.params))!==null&&e!==void 0?e:"int";return new hr(n.document,{colorType:k,expanded:c??!1,formatter:$p(t,k),parser:rr(k),pickerLayout:b??"popup",supportsAlpha:t,value:n.value,viewProps:n.viewProps})}},Yp={id:"input-color-string",type:"input",accept:(n,e)=>{if(typeof n!="string"||"view"in e&&e.view==="text")return null;const t=sr(n,hn(e));if(!t||!ar(t))return null;const b=ir(e);return b?{initialValue:n,params:b}:null},binding:{reader:n=>{var e;return op((e=hn(n.params))!==null&&e!==void 0?e:"int")},equals:ne.equals,writer:n=>{const e=sr(n.initialValue,hn(n.params));if(!e)throw I.shouldNeverHappen();const t=Op(e);if(!t)throw I.notBindable();return t}},controller:n=>{const e=sr(n.initialValue,hn(n.params));if(!e)throw I.shouldNeverHappen();const t=ar(e);if(!t)throw I.shouldNeverHappen();const c="expanded"in n.params?n.params.expanded:void 0,b="picker"in n.params?n.params.picker:void 0;return new hr(n.document,{colorType:e.type,expanded:c??!1,formatter:t,parser:rr(e.type),pickerLayout:b??"popup",supportsAlpha:e.alpha,value:n.value,viewProps:n.viewProps})}};class jt{constructor(e){this.components=e.components,this.asm_=e.assembly}constrain(e){const t=this.asm_.toComponents(e).map((c,b)=>{var k,L;return(L=(k=this.components[b])===null||k===void 0?void 0:k.constrain(c))!==null&&L!==void 0?L:c});return this.asm_.fromComponents(t)}}const ko=E("pndtxt");class qp{constructor(e,t){this.textViews=t.textViews,this.element=e.createElement("div"),this.element.classList.add(ko()),this.textViews.forEach(c=>{const b=e.createElement("div");b.classList.add(ko("a")),b.appendChild(c.element),this.element.appendChild(b)})}}function Qp(n,e,t){return new on(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:te(0,{constraint:e.axes[t].constraint}),viewProps:e.viewProps})}class mr{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.acs_=t.axes.map((c,b)=>Qp(e,t,b)),this.acs_.forEach((c,b)=>{Ft({primary:this.value,secondary:c.value,forward:k=>t.assembly.toComponents(k.rawValue)[b],backward:(k,L)=>{const R=t.assembly.toComponents(k.rawValue);return R[b]=L.rawValue,t.assembly.fromComponents(R)}})}),this.view=new qp(e,{textViews:this.acs_.map(c=>c.view)})}}function Mo(n,e){return"step"in n&&!y(n.step)?new Ln(n.step,e):null}function Ao(n){return!y(n.max)&&!y(n.min)?new Bt({max:n.max,min:n.min}):!y(n.max)||!y(n.min)?new ni({max:n.max,min:n.min}):null}function Zp(n){const e=Ye(n,Bt);if(e)return[e.values.get("min"),e.values.get("max")];const t=Ye(n,ni);return t?[t.minValue,t.maxValue]:[void 0,void 0]}function Wp(n,e){const t=[],c=Mo(n,e);c&&t.push(c);const b=Ao(n);b&&t.push(b);const k=vi(n.options);return k&&t.push(k),new Ht(t)}const Jp={id:"input-number",type:"input",accept:(n,e)=>{if(typeof n!="number")return null;const t=V,c=ce(e,{format:t.optional.function,max:t.optional.number,min:t.optional.number,options:t.optional.custom(ln),step:t.optional.number});return c?{initialValue:n,params:c}:null},binding:{reader:n=>ct,constraint:n=>Wp(n.params,n.initialValue),writer:n=>qe},controller:n=>{var e;const t=n.value,c=n.constraint,b=c&&Ye(c,en);if(b)return new tn(n.document,{props:new q({options:b.values.value("options")}),value:t,viewProps:n.viewProps});const k=(e="format"in n.params?n.params.format:void 0)!==null&&e!==void 0?e:Le(En(c,t.rawValue)),L=c&&Ye(c,Bt);return L?new Tn(n.document,{baseStep:Ct(c),parser:tt,sliderProps:new q({maxValue:L.values.value("max"),minValue:L.values.value("min")}),textProps:q.fromObject({draggingScale:Pt(c,t.rawValue),formatter:k}),value:t,viewProps:n.viewProps}):new on(n.document,{baseStep:Ct(c),parser:tt,props:q.fromObject({draggingScale:Pt(c,t.rawValue),formatter:k}),value:t,viewProps:n.viewProps})}};class Ut{constructor(e=0,t=0){this.x=e,this.y=t}getComponents(){return[this.x,this.y]}static isObject(e){if(y(e))return!1;const t=e.x,c=e.y;return!(typeof t!="number"||typeof c!="number")}static equals(e,t){return e.x===t.x&&e.y===t.y}toObject(){return{x:this.x,y:this.y}}}const So={toComponents:n=>n.getComponents(),fromComponents:n=>new Ut(...n)},Nn=E("p2d");class Hp{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Nn()),t.viewProps.bindClassModifiers(this.element),U(t.expanded,Y(this.element,Nn(void 0,"expanded")));const c=e.createElement("div");c.classList.add(Nn("h")),this.element.appendChild(c);const b=e.createElement("button");b.classList.add(Nn("b")),b.appendChild(ut(e,"p2dpad")),t.viewProps.bindDisabled(b),c.appendChild(b),this.buttonElement=b;const k=e.createElement("div");if(k.classList.add(Nn("t")),c.appendChild(k),this.textElement=k,t.pickerLayout==="inline"){const L=e.createElement("div");L.classList.add(Nn("p")),this.element.appendChild(L),this.pickerElement=L}else this.pickerElement=null}}const Rt=E("p2dp");class eu{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(Rt()),t.layout==="popup"&&this.element.classList.add(Rt(void 0,"p")),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(Rt("p")),t.viewProps.bindTabIndex(c),this.element.appendChild(c),this.padElement=c;const b=e.createElementNS(Be,"svg");b.classList.add(Rt("g")),this.padElement.appendChild(b),this.svgElem_=b;const k=e.createElementNS(Be,"line");k.classList.add(Rt("ax")),k.setAttributeNS(null,"x1","0"),k.setAttributeNS(null,"y1","50%"),k.setAttributeNS(null,"x2","100%"),k.setAttributeNS(null,"y2","50%"),this.svgElem_.appendChild(k);const L=e.createElementNS(Be,"line");L.classList.add(Rt("ax")),L.setAttributeNS(null,"x1","50%"),L.setAttributeNS(null,"y1","0"),L.setAttributeNS(null,"x2","50%"),L.setAttributeNS(null,"y2","100%"),this.svgElem_.appendChild(L);const R=e.createElementNS(Be,"line");R.classList.add(Rt("l")),R.setAttributeNS(null,"x1","50%"),R.setAttributeNS(null,"y1","50%"),this.svgElem_.appendChild(R),this.lineElem_=R;const W=e.createElement("div");W.classList.add(Rt("m")),this.padElement.appendChild(W),this.markerElem_=W,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(),c=this.maxValue_,b=we(e,-c,+c,0,100),k=we(t,-c,+c,0,100),L=this.invertsY_?100-k:k;this.lineElem_.setAttributeNS(null,"x2",`${b}%`),this.lineElem_.setAttributeNS(null,"y2",`${L}%`),this.markerElem_.style.left=`${b}%`,this.markerElem_.style.top=`${L}%`}onValueChange_(){this.update_()}onFoldableChange_(){this.update_()}}function Lo(n,e,t){return[Ie(e[0],nt(n)),Ie(e[1],rn(n))*(t?1:-1)]}class tu{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 eu(e,{invertsY:this.invertsY_,layout:t.layout,maxValue:this.maxValue_,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new xt(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 c=this.maxValue_,b=we(e.point.x,0,e.bounds.width,-c,+c),k=we(this.invertsY_?e.bounds.height-e.point.y:e.point.y,0,e.bounds.height,-c,+c);this.value.setRawValue(new Ut(b,k),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){In(e.key)&&e.preventDefault();const[t,c]=Lo(e,this.baseSteps_,this.invertsY_);t===0&&c===0||this.value.setRawValue(new Ut(this.value.rawValue.x+t,this.value.rawValue.y+c),{forceEmit:!1,last:!1})}onPadKeyUp_(e){const[t,c]=Lo(e,this.baseSteps_,this.invertsY_);t===0&&c===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class nu{constructor(e,t){var c,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_=De.create(t.expanded),this.popC_=t.pickerLayout==="popup"?new Ni(e,{viewProps:this.viewProps}):null;const k=new tu(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});k.view.allFocusableElements.forEach(L=>{L.addEventListener("blur",this.onPopupChildBlur_),L.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=k,this.textC_=new mr(e,{assembly:So,axes:t.axes,parser:t.parser,value:this.value,viewProps:this.viewProps}),this.view=new Hp(e,{expanded:this.foldable_.value("expanded"),pickerLayout:t.pickerLayout,viewProps:this.viewProps}),this.view.textElement.appendChild(this.textC_.view.element),(c=this.view.buttonElement)===null||c===void 0||c.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),Ft({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:L=>L.rawValue,backward:(L,R)=>R.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),Ne(this.foldable_,this.view.pickerElement))}onPadButtonBlur_(e){if(!this.popC_)return;const t=this.view.element,c=e.relatedTarget;(!c||!t.contains(c))&&(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,c=ht(e);c&&t.contains(c)||c&&c===this.view.buttonElement&&!at(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 Fn{constructor(e=0,t=0,c=0){this.x=e,this.y=t,this.z=c}getComponents(){return[this.x,this.y,this.z]}static isObject(e){if(y(e))return!1;const t=e.x,c=e.y,b=e.z;return!(typeof t!="number"||typeof c!="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 Vo={toComponents:n=>n.getComponents(),fromComponents:n=>new Fn(...n)};function iu(n){return Fn.isObject(n)?new Fn(n.x,n.y,n.z):new Fn}function su(n,e){n.writeProperty("x",e.x),n.writeProperty("y",e.y),n.writeProperty("z",e.z)}function ru(n,e){return new jt({assembly:Vo,components:[Mt("x"in n?n.x:void 0,e.x),Mt("y"in n?n.y:void 0,e.y),Mt("z"in n?n.z:void 0,e.z)]})}function fr(n,e){return{baseStep:Ct(e),constraint:e,textProps:q.fromObject({draggingScale:Pt(e,n),formatter:Le(En(e,n))})}}const ou={id:"input-point3d",type:"input",accept:(n,e)=>{if(!Fn.isObject(n))return null;const t=V,c=ce(e,{x:t.optional.custom(pt),y:t.optional.custom(pt),z:t.optional.custom(pt)});return c?{initialValue:n,params:c}:null},binding:{reader:n=>iu,constraint:n=>ru(n.params,n.initialValue),equals:Fn.equals,writer:n=>su},controller:n=>{const e=n.value,t=n.constraint;if(!(t instanceof jt))throw I.shouldNeverHappen();return new mr(n.document,{assembly:Vo,axes:[fr(e.rawValue.x,t.components[0]),fr(e.rawValue.y,t.components[1]),fr(e.rawValue.z,t.components[2])],parser:tt,value:e,viewProps:n.viewProps})}};class zn{constructor(e=0,t=0,c=0,b=0){this.x=e,this.y=t,this.z=c,this.w=b}getComponents(){return[this.x,this.y,this.z,this.w]}static isObject(e){if(y(e))return!1;const t=e.x,c=e.y,b=e.z,k=e.w;return!(typeof t!="number"||typeof c!="number"||typeof b!="number"||typeof k!="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 Do={toComponents:n=>n.getComponents(),fromComponents:n=>new zn(...n)};function au(n){return zn.isObject(n)?new zn(n.x,n.y,n.z,n.w):new zn}function lu(n,e){n.writeProperty("x",e.x),n.writeProperty("y",e.y),n.writeProperty("z",e.z),n.writeProperty("w",e.w)}function cu(n,e){return new jt({assembly:Do,components:[Mt("x"in n?n.x:void 0,e.x),Mt("y"in n?n.y:void 0,e.y),Mt("z"in n?n.z:void 0,e.z),Mt("w"in n?n.w:void 0,e.w)]})}function pu(n,e){return{baseStep:Ct(e),constraint:e,textProps:q.fromObject({draggingScale:Pt(e,n),formatter:Le(En(e,n))})}}const uu={id:"input-point4d",type:"input",accept:(n,e)=>{if(!zn.isObject(n))return null;const t=V,c=ce(e,{x:t.optional.custom(pt),y:t.optional.custom(pt),z:t.optional.custom(pt),w:t.optional.custom(pt)});return c?{initialValue:n,params:c}:null},binding:{reader:n=>au,constraint:n=>cu(n.params,n.initialValue),equals:zn.equals,writer:n=>lu},controller:n=>{const e=n.value,t=n.constraint;if(!(t instanceof jt))throw I.shouldNeverHappen();return new mr(n.document,{assembly:Do,axes:e.rawValue.getComponents().map((c,b)=>pu(c,t.components[b])),parser:tt,value:e,viewProps:n.viewProps})}};function hu(n){const e=[],t=vi(n.options);return t&&e.push(t),new Ht(e)}const du={id:"input-string",type:"input",accept:(n,e)=>{if(typeof n!="string")return null;const c=ce(e,{options:V.optional.custom(ln)});return c?{initialValue:n,params:c}:null},binding:{reader:n=>li,constraint:n=>hu(n.params),writer:n=>qe},controller:n=>{const e=n.document,t=n.value,c=n.constraint,b=c&&Ye(c,en);return b?new tn(e,{props:new q({options:b.values.value("options")}),value:t,viewProps:n.viewProps}):new Vn(e,{parser:k=>k,props:q.fromObject({formatter:mt}),value:t,viewProps:n.viewProps})}},wi={monitor:{defaultInterval:200,defaultLineCount:3}},Io=E("mll");class mu{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(Io()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("textarea");c.classList.add(Io("i")),c.style.height=`calc(var(--bld-us) * ${t.lineCount})`,c.readOnly=!0,t.viewProps.bindDisabled(c),this.element.appendChild(c),this.textareaElem_=c,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,c=[];this.value.rawValue.forEach(b=>{b!==void 0&&c.push(this.formatter_(b))}),e.textContent=c.join(`
92
+ `),t&&(e.scrollTop=e.scrollHeight)}onValueUpdate_(){this.update_()}}class vr{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new mu(e,{formatter:t.formatter,lineCount:t.lineCount,value:this.value,viewProps:this.viewProps})}}const To=E("sgl");class fu{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(To()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("input");c.classList.add(To("i")),c.readOnly=!0,c.type="text",t.viewProps.bindDisabled(c),this.element.appendChild(c),this.inputElement=c,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 br{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new fu(e,{formatter:t.formatter,value:this.value,viewProps:this.viewProps})}}const vu={id:"monitor-bool",type:"monitor",accept:(n,e)=>{if(typeof n!="boolean")return null;const c=ce(e,{lineCount:V.optional.number});return c?{initialValue:n,params:c}:null},binding:{reader:n=>zi},controller:n=>{var e;return n.value.rawValue.length===1?new br(n.document,{formatter:ji,value:n.value,viewProps:n.viewProps}):new vr(n.document,{formatter:ji,lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:wi.monitor.defaultLineCount,value:n.value,viewProps:n.viewProps})}},Gt=E("grl");class bu{constructor(e,t){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=e.createElement("div"),this.element.classList.add(Gt()),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 c=e.createElementNS(Be,"svg");c.classList.add(Gt("g")),c.style.height=`calc(var(--bld-us) * ${t.lineCount})`,this.element.appendChild(c),this.svgElem_=c;const b=e.createElementNS(Be,"polyline");this.svgElem_.appendChild(b),this.lineElem_=b;const k=e.createElement("div");k.classList.add(Gt("t"),E("tt")()),this.element.appendChild(k),this.tooltipElem_=k,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,c=this.props_.get("minValue"),b=this.props_.get("maxValue"),k=[];this.value.rawValue.forEach((de,ve)=>{if(de===void 0)return;const dn=we(ve,0,t,0,e.width),_i=we(de,c,b,e.height,0);k.push([dn,_i].join(","))}),this.lineElem_.setAttributeNS(null,"points",k.join(" "));const L=this.tooltipElem_,R=this.value.rawValue[this.cursor_.rawValue];if(R===void 0){L.classList.remove(Gt("t","a"));return}const W=we(this.cursor_.rawValue,0,t,0,e.width),ee=we(R,c,b,e.height,0);L.style.left=`${W}px`,L.style.top=`${ee}px`,L.textContent=`${this.formatter_(R)}`,L.classList.contains(Gt("t","a"))||(L.classList.add(Gt("t","a"),Gt("t","in")),Je(L),L.classList.remove(Gt("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class gu{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_=te(-1),this.view=new bu(e,{cursor:this.cursor_,formatter:t.formatter,lineCount:t.lineCount,props:this.props_,value:this.value,viewProps:this.viewProps}),!at(e))this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_);else{const c=new xt(this.view.element);c.emitter.on("down",this.onGraphPointerDown_),c.emitter.on("move",this.onGraphPointerMove_),c.emitter.on("up",this.onGraphPointerUp_)}}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(e){const t=this.view.element.getBoundingClientRect();this.cursor_.rawValue=Math.floor(we(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(we(e.data.point.x,0,e.data.bounds.width,0,this.value.rawValue.length))}onGraphPointerUp_(){this.cursor_.rawValue=-1}}function gr(n){return"format"in n&&!y(n.format)?n.format:Le(2)}function wu(n){var e;return n.value.rawValue.length===1?new br(n.document,{formatter:gr(n.params),value:n.value,viewProps:n.viewProps}):new vr(n.document,{formatter:gr(n.params),lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:wi.monitor.defaultLineCount,value:n.value,viewProps:n.viewProps})}function _u(n){var e,t,c;return new gu(n.document,{formatter:gr(n.params),lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:wi.monitor.defaultLineCount,props:q.fromObject({maxValue:(t="max"in n.params?n.params.max:null)!==null&&t!==void 0?t:100,minValue:(c="min"in n.params?n.params.min:null)!==null&&c!==void 0?c:0}),value:n.value,viewProps:n.viewProps})}function Eo(n){return"view"in n&&n.view==="graph"}const yu={id:"monitor-number",type:"monitor",accept:(n,e)=>{if(typeof n!="number")return null;const t=V,c=ce(e,{format:t.optional.function,lineCount:t.optional.number,max:t.optional.number,min:t.optional.number,view:t.optional.string});return c?{initialValue:n,params:c}:null},binding:{defaultBufferSize:n=>Eo(n)?64:1,reader:n=>ct},controller:n=>Eo(n.params)?_u(n):wu(n)},xu={id:"monitor-string",type:"monitor",accept:(n,e)=>{if(typeof n!="string")return null;const t=V,c=ce(e,{lineCount:t.optional.number,multiline:t.optional.boolean});return c?{initialValue:n,params:c}:null},binding:{reader:n=>li},controller:n=>{var e;const t=n.value;return t.rawValue.length>1||"multiline"in n.params&&n.params.multiline?new vr(n.document,{formatter:mt,lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:wi.monitor.defaultLineCount,value:t,viewProps:n.viewProps}):new br(n.document,{formatter:mt,value:t,viewProps:n.viewProps})}};function Cu(n,e){var t;const c=n.accept(e.target.read(),e.params);if(y(c))return null;const b=V,k={target:e.target,initialValue:c.initialValue,params:c.params},L=n.binding.reader(k),R=n.binding.constraint?n.binding.constraint(k):void 0,W=te(L(c.initialValue),{constraint:R,equals:n.binding.equals}),ee=new Sn({reader:L,target:e.target,value:W,writer:n.binding.writer(k)}),de=b.optional.boolean(e.params.disabled).value,ve=b.optional.boolean(e.params.hidden).value,dn=n.controller({constraint:R,document:e.document,initialValue:c.initialValue,params:c.params,value:ee.value,viewProps:Re.create({disabled:de,hidden:ve})});return new Ee(e.document,{binding:ee,blade:ye(),props:q.fromObject({label:"label"in e.params?(t=b.optional.string(e.params.label).value)!==null&&t!==void 0?t:null:e.target.key}),valueController:dn})}function Pu(n,e){return e===0?new Ti:new ti(n,e??wi.monitor.defaultInterval)}function ku(n,e){var t,c,b;const k=V,L=n.accept(e.target.read(),e.params);if(y(L))return null;const R={target:e.target,initialValue:L.initialValue,params:L.params},W=n.binding.reader(R),ee=(c=(t=k.optional.number(e.params.bufferSize).value)!==null&&t!==void 0?t:n.binding.defaultBufferSize&&n.binding.defaultBufferSize(L.params))!==null&&c!==void 0?c:1,de=k.optional.number(e.params.interval).value,ve=new Ts({reader:W,target:e.target,ticker:Pu(e.document,de),value:Ei(ee)}),dn=k.optional.boolean(e.params.disabled).value,_i=k.optional.boolean(e.params.hidden).value,yi=n.controller({document:e.document,params:L.params,value:ve.value,viewProps:Re.create({disabled:dn,hidden:_i})});return new He(e.document,{binding:ve,blade:ye(),props:q.fromObject({label:"label"in e.params?(b=k.optional.string(e.params.label).value)!==null&&b!==void 0?b:null:e.target.key}),valueController:yi})}class Mu{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,c){const b=t.read();if(y(b))throw new I({context:{key:t.key},type:"nomatchingcontroller"});const k=this.pluginsMap_.inputs.reduce((L,R)=>L??Cu(R,{document:e,target:t,params:c}),null);if(k)return k;throw new I({context:{key:t.key},type:"nomatchingcontroller"})}createMonitor(e,t,c){const b=this.pluginsMap_.monitors.reduce((k,L)=>k??ku(L,{document:e,params:c,target:t}),null);if(b)return b;throw new I({context:{key:t.key},type:"nomatchingcontroller"})}createBlade(e,t){const c=this.pluginsMap_.blades.reduce((b,k)=>b??Is(k,{document:e,params:t}),null);if(!c)throw new I({type:"nomatchingview",context:{params:t}});return c}createBladeApi(e){if(e instanceof Ee)return new Yn(e);if(e instanceof He)return new qn(e);if(e instanceof Zt)return new kn(e,this);const t=this.pluginsMap_.blades.reduce((c,b)=>c??b.api({controller:e,pool:this}),null);if(!t)throw I.shouldNeverHappen();return t}}function Au(){const n=new Mu;return[Tu,ou,uu,du,Jp,Yp,Xp,Rp,On,vu,xu,yu,H,As,Ls,ei].forEach(e=>{n.register(e)}),n}function Su(n){return Ut.isObject(n)?new Ut(n.x,n.y):new Ut}function Lu(n,e){n.writeProperty("x",e.x),n.writeProperty("y",e.y)}function Mt(n,e){if(!n)return;const t=[],c=Mo(n,e);c&&t.push(c);const b=Ao(n);return b&&t.push(b),new Ht(t)}function Vu(n,e){return new jt({assembly:So,components:[Mt("x"in n?n.x:void 0,e.x),Mt("y"in n?n.y:void 0,e.y)]})}function Oo(n,e){const[t,c]=n?Zp(n):[];if(!y(t)||!y(c))return Math.max(Math.abs(t??0),Math.abs(c??0));const b=Ct(n);return Math.max(Math.abs(b)*10,Math.abs(e)*10)}function Du(n,e){const t=e instanceof jt?e.components[0]:void 0,c=e instanceof jt?e.components[1]:void 0,b=Oo(t,n.x),k=Oo(c,n.y);return Math.max(b,k)}function Bo(n,e){return{baseStep:Ct(e),constraint:e,textProps:q.fromObject({draggingScale:Pt(e,n),formatter:Le(En(e,n))})}}function Iu(n){if(!("y"in n))return!1;const e=n.y;return e&&"inverted"in e?!!e.inverted:!1}const Tu={id:"input-point2d",type:"input",accept:(n,e)=>{if(!Ut.isObject(n))return null;const t=V,c=ce(e,{expanded:t.optional.boolean,picker:t.optional.custom(fi),x:t.optional.custom(pt),y:t.optional.object({inverted:t.optional.boolean,max:t.optional.number,min:t.optional.number,step:t.optional.number})});return c?{initialValue:n,params:c}:null},binding:{reader:n=>Su,constraint:n=>Vu(n.params,n.initialValue),equals:Ut.equals,writer:n=>Lu},controller:n=>{const e=n.document,t=n.value,c=n.constraint;if(!(c instanceof jt))throw I.shouldNeverHappen();const b="expanded"in n.params?n.params.expanded:void 0,k="picker"in n.params?n.params.picker:void 0;return new nu(e,{axes:[Bo(t.rawValue.x,c.components[0]),Bo(t.rawValue.y,c.components[1])],expanded:b??!1,invertsY:Iu(n.params),maxValue:Du(t.rawValue,c),parser:tt,pickerLayout:k??"popup",value:t,viewProps:n.viewProps})}};class No extends o{constructor(e){super(e),this.emitter_=new z,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 c=t.bind(this);return this.emitter_.on(e,b=>{c(b.event)}),this}}class Fo extends o{constructor(e){super(e),this.emitter_=new z,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 c=t.bind(this);return this.emitter_.on(e,b=>{c(b.event)}),this}}class zo extends o{constructor(e){super(e),this.emitter_=new z,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 c=t.bind(this);return this.emitter_.on(e,b=>{c(b.event)}),this}}const Eu=function(){return{id:"list",type:"blade",accept(n){const e=V,t=ce(n,{options:e.required.custom(ln),value:e.required.raw,view:e.required.constant("list"),label:e.optional.string});return t?{params:t}:null},controller(n){const e=new en(Zi(n.params.options)),t=te(n.params.value,{constraint:e}),c=new tn(n.document,{props:new q({options:e.values.value("options")}),value:t,viewProps:n.viewProps});return new It(n.document,{blade:n.blade,props:q.fromObject({label:n.params.label}),valueController:c})},api(n){return!(n.controller instanceof It)||!(n.controller.valueController instanceof tn)?null:new No(n.controller)}}}();function Ou(n){return n.reduce((e,t)=>Object.assign(e,{[t.presetKey]:t.read()}),{})}function Bu(n,e){n.forEach(t=>{const c=e[t.target.presetKey];c!==void 0&&t.writer(t.target,t.reader(c))})}class Nu extends Qn{constructor(e,t){super(e,t)}get element(){return this.controller_.view.element}importPreset(e){const t=this.controller_.rackController.rack.find(Ee).map(c=>c.binding);Bu(t,e),this.refresh()}exportPreset(){const e=this.controller_.rackController.rack.find(Ee).map(t=>t.binding.target);return Ou(e)}refresh(){this.controller_.rackController.rack.find(Ee).forEach(e=>{e.binding.read()}),this.controller_.rackController.rack.find(He).forEach(e=>{e.binding.read()})}}class Fu extends Mn{constructor(e,t){super(e,{expanded:t.expanded,blade:t.blade,props:t.props,root:!0,viewProps:t.viewProps})}}const zu={id:"slider",type:"blade",accept(n){const e=V,t=ce(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 c=(e=n.params.value)!==null&&e!==void 0?e:0,b=new Bt({max:n.params.max,min:n.params.min}),k=new Tn(n.document,{baseStep:1,parser:tt,sliderProps:new q({maxValue:b.values.value("max"),minValue:b.values.value("min")}),textProps:q.fromObject({draggingScale:Pt(void 0,c),formatter:(t=n.params.format)!==null&&t!==void 0?t:Ws}),value:te(c,{constraint:b}),viewProps:n.viewProps});return new It(n.document,{blade:n.blade,props:q.fromObject({label:n.params.label}),valueController:k})},api(n){return!(n.controller instanceof It)||!(n.controller.valueController instanceof Tn)?null:new Fo(n.controller)}},ju=function(){return{id:"text",type:"blade",accept(n){const e=V,t=ce(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 Vn(n.document,{parser:n.params.parse,props:q.fromObject({formatter:(e=n.params.format)!==null&&e!==void 0?e:c=>String(c)}),value:te(n.params.value),viewProps:n.viewProps});return new It(n.document,{blade:n.blade,props:q.fromObject({label:n.params.label}),valueController:t})},api(n){return!(n.controller instanceof It)||!(n.controller.valueController instanceof Vn)?null:new zo(n.controller)}}}();function Uu(n){const e=n.createElement("div");return e.classList.add(E("dfw")()),n.body&&n.body.appendChild(e),e}function jo(n,e,t){if(n.querySelector(`style[data-tp-style=${e}]`))return;const c=n.createElement("style");c.dataset.tpStyle=e,c.textContent=t,n.head.appendChild(c)}class Ru extends Nu{constructor(e){var t,c;const b=e??{},k=(t=b.document)!==null&&t!==void 0?t:$n(),L=Au(),R=new Fu(k,{expanded:b.expanded,blade:ye(),props:q.fromObject({title:b.title}),viewProps:Re.create()});super(R,L),this.pool_=L,this.containerElem_=(c=b.container)!==null&&c!==void 0?c:Uu(k),this.containerElem_.appendChild(this.element),this.doc_=k,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(c=>{this.pool_.register(c),this.embedPluginStyle_(c)})}embedPluginStyle_(e){e.css&&jo(this.document,`plugin-${e.id}`,e.css)}setUpDefaultPlugins_(){jo(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(230, 7%, 17%));--bs-sh: var(--tp-base-shadow-color, rgba(0, 0, 0, 0.2));--btn-bg: var(--tp-button-background-color, hsl(230, 7%, 70%));--btn-bg-a: var(--tp-button-background-color-active, #d6d7db);--btn-bg-f: var(--tp-button-background-color-focus, #c8cad0);--btn-bg-h: var(--tp-button-background-color-hover, #bbbcc4);--btn-fg: var(--tp-button-foreground-color, hsl(230, 7%, 17%));--cnt-bg: var(--tp-container-background-color, rgba(187, 188, 196, 0.1));--cnt-bg-a: var(--tp-container-background-color-active, rgba(187, 188, 196, 0.25));--cnt-bg-f: var(--tp-container-background-color-focus, rgba(187, 188, 196, 0.2));--cnt-bg-h: var(--tp-container-background-color-hover, rgba(187, 188, 196, 0.15));--cnt-fg: var(--tp-container-foreground-color, hsl(230, 7%, 75%));--in-bg: var(--tp-input-background-color, rgba(187, 188, 196, 0.1));--in-bg-a: var(--tp-input-background-color-active, rgba(187, 188, 196, 0.25));--in-bg-f: var(--tp-input-background-color-focus, rgba(187, 188, 196, 0.2));--in-bg-h: var(--tp-input-background-color-hover, rgba(187, 188, 196, 0.15));--in-fg: var(--tp-input-foreground-color, hsl(230, 7%, 75%));--lbl-fg: var(--tp-label-foreground-color, rgba(187, 188, 196, 0.7));--mo-bg: var(--tp-monitor-background-color, rgba(0, 0, 0, 0.2));--mo-fg: var(--tp-monitor-foreground-color, rgba(187, 188, 196, 0.7));--grv-fg: var(--tp-groove-foreground-color, rgba(187, 188, 196, 0.1))}.tp-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-cntv+.tp-fldv>.tp-fldv_b,.tp-fldv_c>.tp-cntv+.tp-fldv>.tp-fldv_b{border-top-left-radius:0}.tp-tabv_c .tp-brkv>.tp-cntv+.tp-tabv>.tp-tabv_t,.tp-fldv_c>.tp-cntv+.tp-tabv>.tp-tabv_t{border-top-left-radius:0}.tp-tabv_c .tp-brkv>.tp-tabv>.tp-tabv_t,.tp-fldv_c>.tp-tabv>.tp-tabv_t{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-expanded.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.tp-v-disabled .tp-colpv_a::before{opacity:.5}.tp-colpv_ap{align-items:center;display:flex;flex:3}.tp-colpv_at{flex:1;margin-left:4px}.tp-svpv{border-radius:var(--elm-br);outline:none;overflow:hidden;position:relative}.tp-svpv.tp-v-disabled{opacity:.5}.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.tp-v-disabled{opacity:.5}.tp-hplv_c{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAABCAYAAABubagXAAAAQ0lEQVQoU2P8z8Dwn0GCgQEDi2OK/RBgYHjBgIpfovFh8j8YBIgzFGQxuqEgPhaDOT5gOhPkdCxOZeBg+IDFZZiGAgCaSSMYtcRHLgAAAABJRU5ErkJggg==);background-position:left top;background-repeat:no-repeat;background-size:100% 100%;border-radius:2px;display:block;height:4px;left:0;margin-top:-2px;position:absolute;top:50%;width:100%}.tp-hplv_m{border-radius:var(--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.tp-v-disabled{opacity:.5}.tp-aplv_b{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:4px 4px;background-position:0 0,2px 2px;border-radius:2px;display:block;height:4px;left:0;margin-top:-2px;overflow:hidden;position:absolute;top:50%;width:100%}.tp-aplv_c{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.tp-v-disabled .tp-coltxtv_mm{opacity:.5}.tp-coltxtv_w{flex:1}.tp-dfwv{position:absolute;top:8px;right:8px;width:256px}.tp-fldv{position:relative}.tp-fldv.tp-fldv-not .tp-fldv_b{display:none}.tp-fldv_t{padding-left:4px}.tp-fldv_b:disabled .tp-fldv_m{display:none}.tp-fldv_c{padding-left:4px}.tp-fldv_i{bottom:0;color:var(--cnt-bg);left:0;overflow:hidden;position:absolute;top:calc(var(--bld-us) + 4px);width:var(--bs-br)}.tp-fldv_i::before{background-color:currentColor;bottom:0;content:"";left:0;position:absolute;top:0;width:4px}.tp-fldv_b:hover+.tp-fldv_i{color:var(--cnt-bg-h)}.tp-fldv_b:focus+.tp-fldv_i{color:var(--cnt-bg-f)}.tp-fldv_b:active+.tp-fldv_i{color:var(--cnt-bg-a)}.tp-fldv.tp-v-disabled>.tp-fldv_i{opacity:.5}.tp-grlv{position:relative}.tp-grlv_g{display:block;height:calc(var(--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.tp-v-disabled .tp-p2dpv_p{opacity:.5}.tp-p2dpv_g{display:block;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}.tp-p2dpv_ax{opacity:.1;stroke:var(--in-fg);stroke-dasharray:1}.tp-p2dpv_l{opacity:.5;stroke:var(--in-fg);stroke-dasharray:1}.tp-p2dpv_m{border:var(--in-fg) solid 1px;border-radius:50%;box-sizing:border-box;height:4px;margin-left:-2px;margin-top:-2px;position:absolute;width:4px}.tp-p2dpv_p:focus .tp-p2dpv_m{background-color:var(--in-fg);border-width:0}.tp-popv{background-color:var(--bs-bg);border-radius: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-sprv.tp-v-disabled .tp-sprv_r{opacity:.5}.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{position:relative}.tp-tabv_t{align-items:flex-end;color:var(--cnt-bg);display:flex;overflow:hidden;position:relative}.tp-tabv_t:hover{color:var(--cnt-bg-h)}.tp-tabv_t:has(*:focus){color:var(--cnt-bg-f)}.tp-tabv_t:has(*:active){color:var(--cnt-bg-a)}.tp-tabv_t::before{background-color:currentColor;bottom:0;content:"";height:2px;left:0;pointer-events:none;position:absolute;right:0}.tp-tabv.tp-v-disabled .tp-tabv_t::before{opacity:.5}.tp-tabv.tp-tabv-nop .tp-tabv_t{height:calc(var(--bld-us) + 4px);position:relative}.tp-tabv.tp-tabv-nop .tp-tabv_t::before{background-color:var(--cnt-bg);bottom:0;content:"";height:2px;left:0;position:absolute;right:0}.tp-tabv_c{padding-bottom:var(--cnt-v-p);padding-left:4px;padding-top:var(--cnt-v-p)}.tp-tabv_i{bottom:0;color:var(--cnt-bg);left:0;overflow:hidden;position:absolute;top:calc(var(--bld-us) + 4px);width:var(--bs-br)}.tp-tabv_i::before{background-color:currentColor;bottom:0;content:"";left:0;position:absolute;top:0;width:4px}.tp-tabv_t:hover+.tp-tabv_i{color:var(--cnt-bg-h)}.tp-tabv_t:has(*:focus)+.tp-tabv_i{color:var(--cnt-bg-f)}.tp-tabv_t:has(*:active)+.tp-tabv_i{color:var(--cnt-bg-a)}.tp-tabv.tp-v-disabled>.tp-tabv_i{opacity:.5}.tp-tbiv{flex:1;min-width:0;position:relative}.tp-tbiv+.tp-tbiv{margin-left:2px}.tp-tbiv+.tp-tbiv.tp-v-disabled::before{opacity:.5}.tp-tbiv_b{display:block;padding-left:calc(var(--cnt-h-p) + 4px);padding-right:calc(var(--cnt-h-p) + 4px);position:relative;width:100%}.tp-tbiv_b:disabled{opacity:.5}.tp-tbiv_b::before{background-color:var(--cnt-bg);bottom:2px;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.tp-tbiv_b:hover::before{background-color:var(--cnt-bg-h)}.tp-tbiv_b:focus::before{background-color:var(--cnt-bg-f)}.tp-tbiv_b:active::before{background-color:var(--cnt-bg-a)}.tp-tbiv_t{color:var(--cnt-fg);height:calc(var(--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_b:disabled .tp-rotv_m{display:none}.tp-rotv_c>.tp-fldv.tp-v-lst>.tp-fldv_c{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c>.tp-fldv.tp-v-lst>.tp-fldv_i{border-bottom-left-radius:var(--bs-br)}.tp-rotv_c>.tp-fldv.tp-v-lst:not(.tp-fldv-expanded)>.tp-fldv_b{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c .tp-fldv.tp-v-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_c>.tp-tabv.tp-v-lst>.tp-tabv_c{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c>.tp-tabv.tp-v-lst>.tp-tabv_i{border-bottom-left-radius:var(--bs-br)}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst{margin-top:calc(-1*var(--cnt-v-p))}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst>.tp-tabv_t{border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br)}.tp-rotv.tp-v-disabled,.tp-rotv .tp-v-disabled{pointer-events:none}.tp-rotv.tp-v-hidden,.tp-rotv .tp-v-hidden{display:none}'),this.pool_.getAll().forEach(e=>{this.embedPluginStyle_(e)}),this.registerPlugin({plugins:[zu,Eu,ei,ju]})}}const Gu=new s("3.1.9");r.BladeApi=o,r.ButtonApi=F,r.FolderApi=Qn,r.InputBindingApi=Yn,r.ListApi=No,r.MonitorBindingApi=qn,r.Pane=Ru,r.SeparatorApi=Li,r.SliderApi=Fo,r.TabApi=Di,r.TabPageApi=Hn,r.TextApi=zo,r.TpChangeEvent=u,r.VERSION=Gu,Object.defineProperty(r,"__esModule",{value:!0})})})(fs,fs.exports);var Zc=fs.exports,vs={exports:{}};(function(g,i){(function(r,s){s(i)})(Yr,function(r){class s{constructor(a){this.controller_=a}get element(){return this.controller_.view.element}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(a){this.controller_.viewProps.set("disabled",a)}get hidden(){return this.controller_.viewProps.get("hidden")}set hidden(a){this.controller_.viewProps.set("hidden",a)}dispose(){this.controller_.viewProps.set("disposed",!0)}}class o{constructor(a){this.target=a}}class l extends o{constructor(a,p,v,P){super(a),this.value=p,this.presetKey=v,this.last=P??!0}}function u(m){return m}function h(m){return m==null}const d={alreadydisposed:()=>"View has been already disposed",invalidparams:m=>`Invalid parameters for '${m.name}'`,nomatchingcontroller:m=>`No matching controller for '${m.key}'`,nomatchingview:m=>`No matching view for '${JSON.stringify(m.params)}'`,notbindable:()=>"Value is not bindable",propertynotfound:m=>`Property '${m.name}' not found`,shouldneverhappen:()=>"This error should never happen"};class w{constructor(a){var p;this.message=(p=d[a.type](a.context))!==null&&p!==void 0?p:"Unexpected error",this.name=this.constructor.name,this.stack=new Error(this.message).stack,this.type=a.type}static alreadyDisposed(){return new w({type:"alreadydisposed"})}static notBindable(){return new w({type:"notbindable"})}static propertyNotFound(a){return new w({type:"propertynotfound",context:{name:a}})}static shouldNeverHappen(){return new w({type:"shouldneverhappen"})}}class _{constructor(){this.observers_={}}on(a,p){let v=this.observers_[a];return v||(v=this.observers_[a]=[]),v.push({handler:p}),this}off(a,p){const v=this.observers_[a];return v&&(this.observers_[a]=v.filter(P=>P.handler!==p)),this}emit(a,p){const v=this.observers_[a];v&&v.forEach(P=>{P.handler(p)})}}const y="tp";function x(m){return(p,v)=>[y,"-",m,"v",p?`_${p}`:"",v?`-${v}`:""].join("")}function M(m,a){return p=>a(m(p))}function O(m){return m.rawValue}function I(m,a){m.emitter.on("change",M(O,a)),a(m.rawValue)}function T(m,a,p){I(m.value(a),p)}function F(m,a,p){p?m.classList.add(a):m.classList.remove(a)}function z(m,a){return p=>{F(m,a,p)}}function N(m,a){I(m,p=>{a.textContent=p??""})}const E=x("btn");class Q{constructor(a,p){this.element=a.createElement("div"),this.element.classList.add(E()),p.viewProps.bindClassModifiers(this.element);const v=a.createElement("button");v.classList.add(E("b")),p.viewProps.bindDisabled(v),this.element.appendChild(v),this.buttonElement=v;const P=a.createElement("div");P.classList.add(E("t")),N(p.props.value("title"),P),this.buttonElement.appendChild(P)}}class ${constructor(a,p){this.emitter=new _,this.onClick_=this.onClick_.bind(this),this.props=p.props,this.viewProps=p.viewProps,this.view=new Q(a,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class U{constructor(a,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:(P,S)=>P===S,this.emitter=new _,this.rawValue_=a}get constraint(){return this.constraint_}get rawValue(){return this.rawValue_}set rawValue(a){this.setRawValue(a,{forceEmit:!1,last:!0})}setRawValue(a,p){const v=p??{forceEmit:!1,last:!0},P=this.constraint_?this.constraint_.constrain(a):a,S=this.rawValue_;this.equals_(S,P)&&!v.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=P,this.emitter.emit("change",{options:v,previousRawValue:S,rawValue:P,sender:this}))}}class j{constructor(a){this.emitter=new _,this.value_=a}get rawValue(){return this.value_}set rawValue(a){this.setRawValue(a,{forceEmit:!1,last:!0})}setRawValue(a,p){const v=p??{forceEmit:!1,last:!0},P=this.value_;P===a&&!v.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.value_=a,this.emitter.emit("change",{options:v,previousRawValue:P,rawValue:this.value_,sender:this}))}}function X(m,a){const p=a==null?void 0:a.constraint,v=a==null?void 0:a.equals;return!p&&!v?new j(m):new U(m,a)}class Y{constructor(a){this.emitter=new _,this.valMap_=a;for(const p in this.valMap_)this.valMap_[p].emitter.on("change",()=>{this.emitter.emit("change",{key:p,sender:this})})}static createCore(a){return Object.keys(a).reduce((v,P)=>Object.assign(v,{[P]:X(a[P])}),{})}static fromObject(a){const p=this.createCore(a);return new Y(p)}get(a){return this.valMap_[a].rawValue}set(a,p){this.valMap_[a].rawValue=p}value(a){return this.valMap_[a]}}function Z(m,a){const v=Object.keys(a).reduce((P,S)=>{if(P===void 0)return;const B=a[S],G=B(m[S]);return G.succeeded?Object.assign(Object.assign({},P),{[S]:G.value}):void 0},{});return v}function ue(m,a){return m.reduce((p,v)=>{if(p===void 0)return;const P=a(v);if(!(!P.succeeded||P.value===void 0))return[...p,P.value]},[])}function ge(m){return m===null?!1:typeof m=="object"}function pe(m){return a=>p=>{if(!a&&p===void 0)return{succeeded:!1,value:void 0};if(a&&p===void 0)return{succeeded:!0,value:void 0};const v=m(p);return v!==void 0?{succeeded:!0,value:v}:{succeeded:!1,value:void 0}}}function me(m){return{custom:a=>pe(a)(m),boolean:pe(a=>typeof a=="boolean"?a:void 0)(m),number:pe(a=>typeof a=="number"?a:void 0)(m),string:pe(a=>typeof a=="string"?a:void 0)(m),function:pe(a=>typeof a=="function"?a:void 0)(m),constant:a=>pe(p=>p===a?a:void 0)(m),raw:pe(a=>a)(m),object:a=>pe(p=>{if(ge(p))return Z(p,a)})(m),array:a=>pe(p=>{if(Array.isArray(p))return ue(p,a)})(m)}}const he={optional:me(!0),required:me(!1)};function te(m,a){const p=he.required.object(a)(m);return p.succeeded?p.value:void 0}function q(m){console.warn([`Missing '${m.key}' of ${m.target} in ${m.place}.`,"Please rebuild plugins with the latest core package."].join(" "))}function Ce(m){return m&&m.parentElement&&m.parentElement.removeChild(m),null}class fe{constructor(a){this.value_=a}static create(a){return[new fe(a),(p,v)=>{a.setRawValue(p,v)}]}get emitter(){return this.value_.emitter}get rawValue(){return this.value_.rawValue}}const le=x("");function ie(m,a){return z(m,le(void 0,a))}class be extends Y{constructor(a){var p;super(a),this.onDisabledChange_=this.onDisabledChange_.bind(this),this.onParentChange_=this.onParentChange_.bind(this),this.onParentGlobalDisabledChange_=this.onParentGlobalDisabledChange_.bind(this),[this.globalDisabled_,this.setGlobalDisabled_]=fe.create(X(this.getGlobalDisabled_())),this.value("disabled").emitter.on("change",this.onDisabledChange_),this.value("parent").emitter.on("change",this.onParentChange_),(p=this.get("parent"))===null||p===void 0||p.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_)}static create(a){var p,v,P;const S=a??{};return new be(Y.createCore({disabled:(p=S.disabled)!==null&&p!==void 0?p:!1,disposed:!1,hidden:(v=S.hidden)!==null&&v!==void 0?v:!1,parent:(P=S.parent)!==null&&P!==void 0?P:null}))}get globalDisabled(){return this.globalDisabled_}bindClassModifiers(a){I(this.globalDisabled_,ie(a,"disabled")),T(this,"hidden",ie(a,"hidden"))}bindDisabled(a){I(this.globalDisabled_,p=>{a.disabled=p})}bindTabIndex(a){I(this.globalDisabled_,p=>{a.tabIndex=p?-1:0})}handleDispose(a){this.value("disposed").emitter.on("change",p=>{p&&a()})}getGlobalDisabled_(){const a=this.get("parent");return(a?a.globalDisabled.rawValue:!1)||this.get("disabled")}updateGlobalDisabled_(){this.setGlobalDisabled_(this.getGlobalDisabled_())}onDisabledChange_(){this.updateGlobalDisabled_()}onParentGlobalDisabledChange_(){this.updateGlobalDisabled_()}onParentChange_(a){var p;const v=a.previousRawValue;v==null||v.globalDisabled.emitter.off("change",this.onParentGlobalDisabledChange_),(p=this.get("parent"))===null||p===void 0||p.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_),this.updateGlobalDisabled_()}}function V(){return["veryfirst","first","last","verylast"]}const ce=x(""),Ve={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class Te{constructor(a){this.parent_=null,this.blade=a.blade,this.view=a.view,this.viewProps=a.viewProps;const p=this.view.element;this.blade.value("positions").emitter.on("change",()=>{V().forEach(v=>{p.classList.remove(ce(void 0,Ve[v]))}),this.blade.get("positions").forEach(v=>{p.classList.add(ce(void 0,Ve[v]))})}),this.viewProps.handleDispose(()=>{Ce(p)})}get parent(){return this.parent_}set parent(a){if(this.parent_=a,!("parent"in this.viewProps.valMap_)){q({key:"parent",target:be.name,place:"BladeController.parent"});return}this.viewProps.set("parent",this.parent_?this.parent_.viewProps:null)}}const _e="http://www.w3.org/2000/svg";function We(m){m.offsetHeight}function gn(m,a){const p=m.style.transition;m.style.transition="none",a(),m.style.transition=p}function Re(m){return m.ontouchstart!==void 0}function wn(m){for(;m.childNodes.length>0;)m.removeChild(m.childNodes[0])}function $t(m){return m.relatedTarget?m.relatedTarget:"explicitOriginalTarget"in m?m.explicitOriginalTarget:null}const ot=x("lbl");function vt(m,a){const p=m.createDocumentFragment();return a.split(`
93
+ `).map(P=>m.createTextNode(P)).forEach((P,S)=>{S>0&&p.appendChild(m.createElement("br")),p.appendChild(P)}),p}class Be{constructor(a,p){this.element=a.createElement("div"),this.element.classList.add(ot()),p.viewProps.bindClassModifiers(this.element);const v=a.createElement("div");v.classList.add(ot("l")),T(p.props,"label",S=>{h(S)?this.element.classList.add(ot(void 0,"nol")):(this.element.classList.remove(ot(void 0,"nol")),wn(v),v.appendChild(vt(a,S)))}),this.element.appendChild(v),this.labelElement=v;const P=a.createElement("div");P.classList.add(ot("v")),this.element.appendChild(P),this.valueElement=P}}class Je extends Te{constructor(a,p){const v=p.valueController.viewProps;super(Object.assign(Object.assign({},p),{view:new Be(a,{props:p.props,viewProps:v}),viewProps:v})),this.props=p.props,this.valueController=p.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class Xt extends Te{constructor(a){super(a),this.value=a.value}}class at extends Y{constructor(a){super(a)}static create(a){const p={completed:!0,expanded:a,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null},v=Y.createCore(p);return new at(v)}get styleExpanded(){var a;return(a=this.get("temporaryExpanded"))!==null&&a!==void 0?a:this.get("expanded")}get styleHeight(){if(!this.styleExpanded)return"0";const a=this.get("expandedHeight");return this.get("shouldFixHeight")&&!h(a)?`${a}px`:"auto"}bindExpandedClass(a,p){const v=()=>{this.styleExpanded?a.classList.add(p):a.classList.remove(p)};T(this,"expanded",v),T(this,"temporaryExpanded",v)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function _n(m){return at.create(m)}function $n(m,a){let p=0;return gn(a,()=>{m.set("expandedHeight",null),m.set("temporaryExpanded",!0),We(a),p=a.clientHeight,m.set("temporaryExpanded",null),We(a)}),p}function yn(m,a){a.style.height=m.styleHeight}function xn(m,a){m.value("expanded").emitter.on("beforechange",()=>{m.set("completed",!1),h(m.get("expandedHeight"))&&m.set("expandedHeight",$n(m,a)),m.set("shouldFixHeight",!0),We(a)}),m.emitter.on("change",()=>{yn(m,a)}),yn(m,a),a.addEventListener("transitionend",p=>{p.propertyName==="height"&&m.cleanUpTransition()})}class ut{constructor(a,p){const v=x(p.viewName);this.element=a.createElement("div"),this.element.classList.add(v()),p.viewProps.bindClassModifiers(this.element)}}class bt extends Xt{constructor(a,p){const v=p.valueController.viewProps;super(Object.assign(Object.assign({},p),{value:p.valueController.value,view:new Be(a,{props:p.props,viewProps:v}),viewProps:v})),this.props=p.props,this.valueController=p.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class Cn{constructor(){this.disabled=!1,this.emitter=new _}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class Yt{constructor(a,p){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=a,this.emitter=new _,this.interval_=p,this.setTimer_()}get disabled(){return this.disabled_}set disabled(a){this.disabled_=a,this.disabled_?this.clearTimer_():this.setTimer_()}dispose(){this.clearTimer_()}clearTimer_(){if(this.timerId_===null)return;const a=this.doc_.defaultView;a&&a.clearInterval(this.timerId_),this.timerId_=null}setTimer_(){if(this.clearTimer_(),this.interval_<=0)return;const a=this.doc_.defaultView;a&&(this.timerId_=a.setInterval(this.onTick_,this.interval_))}onTick_(){this.disabled_||this.emitter.emit("tick",{sender:this})}}class Pn{constructor(a){this.constraints=a}constrain(a){return this.constraints.reduce((p,v)=>v.constrain(p),a)}}function ht(m,a){if(m instanceof a)return m;if(m instanceof Pn){const p=m.constraints.reduce((v,P)=>v||(P instanceof a?P:null),null);if(p)return p}return null}class lt{constructor(a){this.values=Y.fromObject({max:a.max,min:a.min})}constrain(a){const p=this.values.get("max"),v=this.values.get("min");return Math.min(Math.max(a,v),p)}}class gt{constructor(a){this.values=Y.fromObject({max:a.max,min:a.min})}get maxValue(){return this.values.get("max")}get minValue(){return this.values.get("min")}constrain(a){const p=this.values.get("max"),v=this.values.get("min");let P=a;return h(v)||(P=Math.max(P,v)),h(p)||(P=Math.min(P,p)),P}}class D{constructor(a,p=0){this.step=a,this.origin=p}constrain(a){const p=this.origin%this.step,v=Math.round((a-p)/this.step);return p+v*this.step}}const K=x("pop");class H{constructor(a,p){this.element=a.createElement("div"),this.element.classList.add(K()),p.viewProps.bindClassModifiers(this.element),I(p.shows,z(this.element,K(void 0,"v")))}}class se{constructor(a,p){this.shows=X(!1),this.viewProps=p.viewProps,this.view=new H(a,{shows:this.shows,viewProps:this.viewProps})}}const ye=x("txt");class De{constructor(a,p){this.onChange_=this.onChange_.bind(this),this.element=a.createElement("div"),this.element.classList.add(ye()),p.viewProps.bindClassModifiers(this.element),this.props_=p.props,this.props_.emitter.on("change",this.onChange_);const v=a.createElement("input");v.classList.add(ye("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 a=this.props_.get("formatter");this.inputElement.value=a(this.value_.rawValue)}onChange_(){this.refresh()}}class Dt{constructor(a,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 De(a,{props:p.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(a){const v=a.currentTarget.value,P=this.parser_(v);h(P)||(this.value.rawValue=P),this.view.refresh()}}function qt(m){return m==="false"?!1:!!m}class Ne{constructor(a){this.text=a}evaluate(){return Number(this.text)}toString(){return this.text}}const Fe={"**":(m,a)=>Math.pow(m,a),"*":(m,a)=>m*a,"/":(m,a)=>m/a,"%":(m,a)=>m%a,"+":(m,a)=>m+a,"-":(m,a)=>m-a,"<<":(m,a)=>m<<a,">>":(m,a)=>m>>a,">>>":(m,a)=>m>>>a,"&":(m,a)=>m&a,"^":(m,a)=>m^a,"|":(m,a)=>m|a};class bs{constructor(a,p,v){this.left=p,this.operator=a,this.right=v}evaluate(){const a=Fe[this.operator];if(!a)throw new Error(`unexpected binary operator: '${this.operator}`);return a(this.left.evaluate(),this.right.evaluate())}toString(){return["b(",this.left.toString(),this.operator,this.right.toString(),")"].join(" ")}}const gs={"+":m=>m,"-":m=>-m,"~":m=>~m};class ws{constructor(a,p){this.operator=a,this.expression=p}evaluate(){const a=gs[this.operator];if(!a)throw new Error(`unexpected unary operator: '${this.operator}`);return a(this.expression.evaluate())}toString(){return["u(",this.operator,this.expression.toString(),")"].join(" ")}}function Xn(m){return(a,p)=>{for(let v=0;v<m.length;v++){const P=m[v](a,p);if(P!=="")return P}return""}}function wt(m,a){var p;const v=m.substr(a).match(/^\s+/);return(p=v&&v[0])!==null&&p!==void 0?p:""}function Yn(m,a){const p=m.substr(a,1);return p.match(/^[1-9]$/)?p:""}function Ee(m,a){var p;const v=m.substr(a).match(/^[0-9]+/);return(p=v&&v[0])!==null&&p!==void 0?p:""}function qn(m,a){const p=Ee(m,a);if(p!=="")return p;const v=m.substr(a,1);if(a+=1,v!=="-"&&v!=="+")return"";const P=Ee(m,a);return P===""?"":v+P}function He(m,a){const p=m.substr(a,1);if(a+=1,p.toLowerCase()!=="e")return"";const v=qn(m,a);return v===""?"":p+v}function Mi(m,a){const p=m.substr(a,1);if(p==="0")return p;const v=Yn(m,a);return a+=v.length,v===""?"":v+Ee(m,a)}function Qt(m,a){const p=Mi(m,a);if(a+=p.length,p==="")return"";const v=m.substr(a,1);if(a+=v.length,v!==".")return"";const P=Ee(m,a);return a+=P.length,p+v+P+He(m,a)}function Ai(m,a){const p=m.substr(a,1);if(a+=p.length,p!==".")return"";const v=Ee(m,a);return a+=v.length,v===""?"":p+v+He(m,a)}function kn(m,a){const p=Mi(m,a);return a+=p.length,p===""?"":p+He(m,a)}const Qn=Xn([Qt,Ai,kn]);function Zn(m,a){var p;const v=m.substr(a).match(/^[01]+/);return(p=v&&v[0])!==null&&p!==void 0?p:""}function _s(m,a){const p=m.substr(a,2);if(a+=p.length,p.toLowerCase()!=="0b")return"";const v=Zn(m,a);return v===""?"":p+v}function ys(m,a){var p;const v=m.substr(a).match(/^[0-7]+/);return(p=v&&v[0])!==null&&p!==void 0?p:""}function xs(m,a){const p=m.substr(a,2);if(a+=p.length,p.toLowerCase()!=="0o")return"";const v=ys(m,a);return v===""?"":p+v}function Cs(m,a){var p;const v=m.substr(a).match(/^[0-9a-f]+/i);return(p=v&&v[0])!==null&&p!==void 0?p:""}function Wn(m,a){const p=m.substr(a,2);if(a+=p.length,p.toLowerCase()!=="0x")return"";const v=Cs(m,a);return v===""?"":p+v}const Ps=Xn([_s,xs,Wn]),ks=Xn([Ps,Qn]);function Zt(m,a){const p=ks(m,a);return a+=p.length,p===""?null:{evaluable:new Ne(p),cursor:a}}function Si(m,a){const p=m.substr(a,1);if(a+=p.length,p!=="(")return null;const v=Jn(m,a);if(!v)return null;a=v.cursor,a+=wt(m,a).length;const P=m.substr(a,1);return a+=P.length,P!==")"?null:{evaluable:v.evaluable,cursor:a}}function Ms(m,a){var p;return(p=Zt(m,a))!==null&&p!==void 0?p:Si(m,a)}function Mn(m,a){const p=Ms(m,a);if(p)return p;const v=m.substr(a,1);if(a+=v.length,v!=="+"&&v!=="-"&&v!=="~")return null;const P=Mn(m,a);return P?(a=P.cursor,{cursor:a,evaluable:new ws(v,P.evaluable)}):null}function As(m,a,p){p+=wt(a,p).length;const v=m.filter(P=>a.startsWith(P,p))[0];return v?(p+=v.length,p+=wt(a,p).length,{cursor:p,operator:v}):null}function It(m,a){return(p,v)=>{const P=m(p,v);if(!P)return null;v=P.cursor;let S=P.evaluable;for(;;){const B=As(a,p,v);if(!B)break;v=B.cursor;const G=m(p,v);if(!G)return null;v=G.cursor,S=new bs(B.operator,S,G.evaluable)}return S?{cursor:v,evaluable:S}:null}}const Li=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((m,a)=>It(m,a),Mn);function Jn(m,a){return a+=wt(m,a).length,Li(m,a)}function Ss(m){const a=Jn(m,0);return!a||a.cursor+wt(m,a.cursor).length!==m.length?null:a.evaluable}function Wt(m){var a;const p=Ss(m);return(a=p==null?void 0:p.evaluate())!==null&&a!==void 0?a:null}function Ls(m){if(typeof m=="number")return m;if(typeof m=="string"){const a=Wt(m);if(!h(a))return a}return 0}function Se(m){return a=>a.toFixed(Math.max(Math.min(m,20),0))}const Vs=Se(0);function An(m){return Vs(m)+"%"}function Vi(m){return String(m)}function Hn(m,a){for(;m.length<a;)m.push(void 0)}function Di(m){const a=[];return Hn(a,m),X(a)}function Ii(m){const a=m.indexOf(void 0);return a<0?m:m.slice(0,a)}function Ds(m,a){const p=[...Ii(m),a];return p.length>m.length?p.splice(0,p.length-m.length):Hn(p,m.length),p}function Tt({primary:m,secondary:a,forward:p,backward:v}){let P=!1;function S(B){P||(P=!0,B(),P=!1)}m.emitter.on("change",B=>{S(()=>{a.setRawValue(p(m,a),B.options)})}),a.emitter.on("change",B=>{S(()=>{m.setRawValue(v(m,a),B.options)}),S(()=>{a.setRawValue(p(m,a),B.options)})}),S(()=>{a.setRawValue(p(m,a),{forceEmit:!1,last:!0})})}function Et(m,a){const p=m*(a.altKey?.1:1)*(a.shiftKey?10:1);return a.upKey?+p:a.downKey?-p:0}function Jt(m){return{altKey:m.altKey,downKey:m.key==="ArrowDown",shiftKey:m.shiftKey,upKey:m.key==="ArrowUp"}}function ei(m){return{altKey:m.altKey,downKey:m.key==="ArrowLeft",shiftKey:m.shiftKey,upKey:m.key==="ArrowRight"}}function Is(m){return m==="ArrowUp"||m==="ArrowDown"}function Ti(m){return Is(m)||m==="ArrowLeft"||m==="ArrowRight"}function ti(m,a){var p,v;const P=a.ownerDocument.defaultView,S=a.getBoundingClientRect();return{x:m.pageX-(((p=P&&P.scrollX)!==null&&p!==void 0?p:0)+S.left),y:m.pageY-(((v=P&&P.scrollY)!==null&&v!==void 0?v:0)+S.top)}}class Sn{constructor(a){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_=a,this.emitter=new _,a.addEventListener("touchstart",this.onTouchStart_,{passive:!1}),a.addEventListener("touchmove",this.onTouchMove_,{passive:!0}),a.addEventListener("touchend",this.onTouchEnd_),a.addEventListener("mousedown",this.onMouseDown_)}computePosition_(a){const p=this.elem_.getBoundingClientRect();return{bounds:{width:p.width,height:p.height},point:a?{x:a.x,y:a.y}:null}}onMouseDown_(a){var p;a.preventDefault(),(p=a.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:a.altKey,data:this.computePosition_(ti(a,this.elem_)),sender:this,shiftKey:a.shiftKey})}onDocumentMouseMove_(a){this.emitter.emit("move",{altKey:a.altKey,data:this.computePosition_(ti(a,this.elem_)),sender:this,shiftKey:a.shiftKey})}onDocumentMouseUp_(a){const p=this.elem_.ownerDocument;p.removeEventListener("mousemove",this.onDocumentMouseMove_),p.removeEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("up",{altKey:a.altKey,data:this.computePosition_(ti(a,this.elem_)),sender:this,shiftKey:a.shiftKey})}onTouchStart_(a){a.preventDefault();const p=a.targetTouches.item(0),v=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:a.altKey,data:this.computePosition_(p?{x:p.clientX-v.left,y:p.clientY-v.top}:void 0),sender:this,shiftKey:a.shiftKey}),this.lastTouch_=p}onTouchMove_(a){const p=a.targetTouches.item(0),v=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:a.altKey,data:this.computePosition_(p?{x:p.clientX-v.left,y:p.clientY-v.top}:void 0),sender:this,shiftKey:a.shiftKey}),this.lastTouch_=p}onTouchEnd_(a){var p;const v=(p=a.targetTouches.item(0))!==null&&p!==void 0?p:this.lastTouch_,P=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:a.altKey,data:this.computePosition_(v?{x:v.clientX-P.left,y:v.clientY-P.top}:void 0),sender:this,shiftKey:a.shiftKey})}}function Pe(m,a,p,v,P){const S=(m-a)/(p-a);return v+S*(P-v)}function Ei(m){return String(m.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function Ot(m,a,p){return Math.min(Math.max(m,a),p)}const Ge=x("txt");class Ts{constructor(a,p){this.onChange_=this.onChange_.bind(this),this.props_=p.props,this.props_.emitter.on("change",this.onChange_),this.element=a.createElement("div"),this.element.classList.add(Ge(),Ge(void 0,"num")),p.arrayPosition&&this.element.classList.add(Ge(void 0,p.arrayPosition)),p.viewProps.bindClassModifiers(this.element);const v=a.createElement("input");v.classList.add(Ge("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(Ge()),this.inputElement.classList.add(Ge("i"));const P=a.createElement("div");P.classList.add(Ge("k")),this.element.appendChild(P),this.knobElement=P;const S=a.createElementNS(_e,"svg");S.classList.add(Ge("g")),this.knobElement.appendChild(S);const B=a.createElementNS(_e,"path");B.classList.add(Ge("gb")),S.appendChild(B),this.guideBodyElem_=B;const G=a.createElementNS(_e,"path");G.classList.add(Ge("gh")),S.appendChild(G),this.guideHeadElem_=G;const oe=a.createElement("div");oe.classList.add(x("tt")()),this.knobElement.appendChild(oe),this.tooltipElem_=oe,p.value.emitter.on("change",this.onChange_),this.value=p.value,this.refresh()}onDraggingChange_(a){if(a.rawValue===null){this.element.classList.remove(Ge(void 0,"drg"));return}this.element.classList.add(Ge(void 0,"drg"));const p=a.rawValue/this.props_.get("draggingScale"),v=p+(p>0?-1:p<0?1:0),P=Ot(-v,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${v+P},0 L${v},4 L${v+P},8`,`M ${p},-1 L${p},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${p},4`);const S=this.props_.get("formatter");this.tooltipElem_.textContent=S(this.value.rawValue),this.tooltipElem_.style.left=`${p}px`}refresh(){const a=this.props_.get("formatter");this.inputElement.value=a(this.value.rawValue)}onChange_(){this.refresh()}}class Ht{constructor(a,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_=X(null),this.view=new Ts(a,{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 P=new Sn(this.view.knobElement);P.emitter.on("down",this.onPointerDown_),P.emitter.on("move",this.onPointerMove_),P.emitter.on("up",this.onPointerUp_)}constrainValue_(a){var p,v;const P=(p=this.sliderProps_)===null||p===void 0?void 0:p.get("minValue"),S=(v=this.sliderProps_)===null||v===void 0?void 0:v.get("maxValue");let B=a;return P!==void 0&&(B=Math.max(B,P)),S!==void 0&&(B=Math.min(B,S)),B}onInputChange_(a){const v=a.currentTarget.value,P=this.parser_(v);h(P)||(this.value.rawValue=this.constrainValue_(P)),this.view.refresh()}onInputKeyDown_(a){const p=Et(this.baseStep_,Jt(a));p!==0&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+p),{forceEmit:!1,last:!1})}onInputKeyUp_(a){Et(this.baseStep_,Jt(a))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}onPointerDown_(){this.originRawValue_=this.value.rawValue,this.dragging_.rawValue=0}computeDraggingValue_(a){if(!a.point)return null;const p=a.point.x-a.bounds.width/2;return this.constrainValue_(this.originRawValue_+p*this.props.get("draggingScale"))}onPointerMove_(a){const p=this.computeDraggingValue_(a.data);p!==null&&(this.value.setRawValue(p,{forceEmit:!1,last:!1}),this.dragging_.rawValue=this.value.rawValue-this.originRawValue_)}onPointerUp_(a){const p=this.computeDraggingValue_(a.data);p!==null&&(this.value.setRawValue(p,{forceEmit:!0,last:!0}),this.dragging_.rawValue=null)}}function Ye(m,a){m.write(a)}function Bt(m){const a=m?ht(m,D):null;return a?a.step:null}function en(m,a){const p=m&&ht(m,D);return p?Ei(p.step):Math.max(Ei(a),2)}function ni(m){const a=Bt(m);return a??1}function Ln(m,a){var p;const v=m&&ht(m,D),P=Math.abs((p=v==null?void 0:v.step)!==null&&p!==void 0?p:a);return P===0?.1:Math.pow(10,Math.floor(Math.log10(P))-1)}function Nt(m){return[m[0],m[1],m[2]]}function Oi(m){const a=Ot(Math.floor(m),0,255).toString(16);return a.length===1?`0${a}`:a}function tn(m,a="#"){const p=Nt(m.getComponents("rgb")).map(Oi).join("");return`${a}${p}`}function Bi(m,a="#"){const p=m.getComponents("rgb"),v=[p[0],p[1],p[2],p[3]*255].map(Oi).join("");return`${a}${v}`}function Es(m,a){const p=Se(a==="float"?2:0);return`rgb(${Nt(m.getComponents("rgb",a)).map(P=>p(P)).join(", ")})`}function Ni(m){return a=>Es(a,m)}function Fi(m,a){const p=Se(2),v=Se(a==="float"?2:0);return`rgba(${m.getComponents("rgb",a).map((S,B)=>(B===3?p:v)(S)).join(", ")})`}function Os(m){return a=>Fi(a,m)}function Vn(m){const a=[Se(0),An,An];return`hsl(${Nt(m.getComponents("hsl")).map((v,P)=>a[P](v)).join(", ")})`}function Bs(m){const a=[Se(0),An,An,Se(2)];return`hsla(${m.getComponents("hsl").map((v,P)=>a[P](v)).join(", ")})`}function zi(m,a){const p=Se(a==="float"?2:0),v=["r","g","b"];return`{${Nt(m.getComponents("rgb",a)).map((S,B)=>`${v[B]}: ${p(S)}`).join(", ")}}`}function ji(m){return a=>zi(a,m)}function Ns(m,a){const p=Se(2),v=Se(a==="float"?2:0),P=["r","g","b","a"];return`{${m.getComponents("rgb",a).map((B,G)=>{const oe=G===3?p:v;return`${P[G]}: ${oe(B)}`}).join(", ")}}`}function Fs(m){return a=>Ns(a,m)}[...["int","float"].reduce((m,a)=>[...m,{format:{alpha:!1,mode:"rgb",notation:"func",type:a},stringifier:Ni(a)},{format:{alpha:!0,mode:"rgb",notation:"func",type:a},stringifier:Os(a)},{format:{alpha:!1,mode:"rgb",notation:"object",type:a},stringifier:ji(a)},{format:{alpha:!0,mode:"rgb",notation:"object",type:a},stringifier:Fs(a)}],[])];class zs{constructor(a){this.components=a.components,this.asm_=a.assembly}constrain(a){const p=this.asm_.toComponents(a).map((v,P)=>{var S,B;return(B=(S=this.components[P])===null||S===void 0?void 0:S.constrain(v))!==null&&B!==void 0?B:v});return this.asm_.fromComponents(p)}}const Ui=x("pndtxt");class js{constructor(a,p){this.textViews=p.textViews,this.element=a.createElement("div"),this.element.classList.add(Ui()),this.textViews.forEach(v=>{const P=a.createElement("div");P.classList.add(Ui("a")),P.appendChild(v.element),this.element.appendChild(P)})}}function ii(m,a,p){return new Ht(m,{arrayPosition:p===0?"fst":p===a.axes.length-1?"lst":"mid",baseStep:a.axes[p].baseStep,parser:a.parser,props:a.axes[p].textProps,value:X(0,{constraint:a.axes[p].constraint}),viewProps:a.viewProps})}class _t{constructor(a,p){this.value=p.value,this.viewProps=p.viewProps,this.acs_=p.axes.map((v,P)=>ii(a,p,P)),this.acs_.forEach((v,P)=>{Tt({primary:this.value,secondary:v.value,forward:S=>p.assembly.toComponents(S.rawValue)[P],backward:(S,B)=>{const G=p.assembly.toComponents(S.rawValue);return G[P]=B.rawValue,p.assembly.fromComponents(G)}})}),this.view=new js(a,{textViews:this.acs_.map(v=>v.view)})}}function Us(m,a){return"step"in m&&!h(m.step)?new D(m.step,a):null}function nn(m){return!h(m.max)&&!h(m.min)?new lt({max:m.max,min:m.min}):!h(m.max)||!h(m.min)?new gt({max:m.max,min:m.min}):null}const Rs={monitor:{defaultInterval:200,defaultLineCount:3}},et=x("grl");class Ri{constructor(a,p){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=a.createElement("div"),this.element.classList.add(et()),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=a.createElementNS(_e,"svg");v.classList.add(et("g")),v.style.height=`calc(var(--bld-us) * ${p.lineCount})`,this.element.appendChild(v),this.svgElem_=v;const P=a.createElementNS(_e,"polyline");this.svgElem_.appendChild(P),this.lineElem_=P;const S=a.createElement("div");S.classList.add(et("t"),x("tt")()),this.element.appendChild(S),this.tooltipElem_=S,p.value.emitter.on("change",this.onValueUpdate_),this.value=p.value,this.update_()}get graphElement(){return this.svgElem_}update_(){const a=this.svgElem_.getBoundingClientRect(),p=this.value.rawValue.length-1,v=this.props_.get("minValue"),P=this.props_.get("maxValue"),S=[];this.value.rawValue.forEach((Xe,ne)=>{if(Xe===void 0)return;const ft=Pe(ne,0,p,0,a.width),nr=Pe(Xe,v,P,a.height,0);S.push([ft,nr].join(","))}),this.lineElem_.setAttributeNS(null,"points",S.join(" "));const B=this.tooltipElem_,G=this.value.rawValue[this.cursor_.rawValue];if(G===void 0){B.classList.remove(et("t","a"));return}const oe=Pe(this.cursor_.rawValue,0,p,0,a.width),$e=Pe(G,v,P,a.height,0);B.style.left=`${oe}px`,B.style.top=`${$e}px`,B.textContent=`${this.formatter_(G)}`,B.classList.contains(et("t","a"))||(B.classList.add(et("t","a"),et("t","in")),We(B),B.classList.remove(et("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class Gs{constructor(a,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_=X(-1),this.view=new Ri(a,{cursor:this.cursor_,formatter:p.formatter,lineCount:p.lineCount,props:this.props_,value:this.value,viewProps:this.viewProps}),!Re(a))this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_);else{const v=new Sn(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_(a){const p=this.view.element.getBoundingClientRect();this.cursor_.rawValue=Math.floor(Pe(a.offsetX,0,p.width,0,this.value.rawValue.length))}onGraphPointerDown_(a){this.onGraphPointerMove_(a)}onGraphPointerMove_(a){if(!a.data.point){this.cursor_.rawValue=-1;return}this.cursor_.rawValue=Math.floor(Pe(a.data.point.x,0,a.data.bounds.width,0,this.value.rawValue.length))}onGraphPointerUp_(){this.cursor_.rawValue=-1}}class Gi{constructor(a){this.controller_=a}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(a){this.controller_.viewProps.set("disabled",a)}get title(){var a;return(a=this.controller_.props.get("title"))!==null&&a!==void 0?a:""}set title(a){this.controller_.props.set("title",a)}on(a,p){const v=p.bind(this);return this.controller_.emitter.on(a,()=>{v(new o(this))}),this}}class Ks extends o{constructor(a,p,v){super(a),this.cell=p,this.index=v}}class Ki extends s{constructor(a){super(a),this.cellToApiMap_=new Map,this.emitter_=new _;const p=this.controller_.valueController;p.cellControllers.forEach((v,P)=>{const S=new Gi(v);this.cellToApiMap_.set(v,S),v.emitter.on("click",()=>{const B=P%p.size[0],G=Math.floor(P/p.size[0]);this.emitter_.emit("click",{event:new Ks(this,S,[B,G])})})})}cell(a,p){const v=this.controller_.valueController,P=v.cellControllers[p*v.size[0]+a];return this.cellToApiMap_.get(P)}on(a,p){const v=p.bind(this);return this.emitter_.on(a,P=>{v(P.event)}),this}}class si{constructor(a,p){this.size=p.size;const[v,P]=this.size,S=[];for(let B=0;B<P;B++)for(let G=0;G<v;G++){const oe=new $(a,{props:Y.fromObject(Object.assign({},p.cellConfig(G,B))),viewProps:be.create()});S.push(oe)}this.cellCs_=S,this.viewProps=be.create(),this.viewProps.handleDispose(()=>{this.cellCs_.forEach(B=>{B.viewProps.set("disposed",!0)})}),this.view=new ut(a,{viewProps:this.viewProps,viewName:"btngrid"}),this.view.element.style.gridTemplateColumns=`repeat(${v}, 1fr)`,this.cellCs_.forEach(B=>{this.view.element.appendChild(B.view.element)})}get cellControllers(){return this.cellCs_}}const $s={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(m){const a=he,p=te(m,{cells:a.required.function,size:a.required.array(a.required.number),view:a.required.constant("buttongrid"),label:a.optional.string});return p?{params:p}:null},controller(m){return new Je(m.document,{blade:m.blade,props:Y.fromObject({label:m.params.label}),valueController:new si(m.document,{cellConfig:m.params.cells,size:m.params.size})})},api(m){return!(m.controller instanceof Je)||!(m.controller.valueController instanceof si)?null:new Ki(m.controller)}};class $i extends s{get label(){return this.controller_.props.get("label")}set label(a){this.controller_.props.set("label",a)}get value(){return this.controller_.valueController.value.rawValue}set value(a){this.controller_.valueController.value.rawValue=a}on(a,p){const v=p.bind(this);return this.controller_.valueController.value.emitter.on(a,P=>{v(new l(this,P.rawValue,void 0,P.options.last))}),this}}function Ke(m,a,p){return m*(1-p)+a*p}const Xs=20,Ys=.001,ri=100;function qs(m,a){let p=.25,v=.5,P=-1;for(let S=0;S<Xs;S++){const[B,G]=m.curve(v);if(v+=p*(B<a?1:-1),P=G,p*=.5,Math.abs(a-B)<Ys)break}return P}class dt{constructor(a=0,p=0,v=1,P=1){this.cache_=[],this.comps_=[a,p,v,P]}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(a){return h(a)||!Array.isArray(a)?!1:typeof a[0]=="number"&&typeof a[1]=="number"&&typeof a[2]=="number"&&typeof a[3]=="number"}static equals(a,p){return a.x1===p.x1&&a.y1===p.y1&&a.x2===p.x2&&a.y2===p.y2}curve(a){const p=Ke(0,this.x1,a),v=Ke(0,this.y1,a),P=Ke(this.x1,this.x2,a),S=Ke(this.y1,this.y2,a),B=Ke(this.x2,1,a),G=Ke(this.y2,1,a),oe=Ke(p,P,a),$e=Ke(v,S,a),Xe=Ke(P,B,a),ne=Ke(S,G,a);return[Ke(oe,Xe,a),Ke($e,ne,a)]}y(a){if(this.cache_.length===0){const p=[];for(let v=0;v<ri;v++)p.push(qs(this,Pe(v,0,ri-1,0,1)));this.cache_=p}return this.cache_[Math.round(Pe(Ot(a,0,1),0,1,0,ri-1))]}toObject(){return[this.comps_[0],this.comps_[1],this.comps_[2],this.comps_[3]]}}const oi={toComponents:m=>m.toObject(),fromComponents:m=>new dt(...m)};function Qs(m){const a=Se(2);return`cubic-bezier(${m.toObject().map(v=>a(v)).join(", ")})`}const ai=[0,.5,.5,1];function Zs(m){const a=m.match(/^cubic-bezier\s*\(\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)\s*\)$/);if(!a)return new dt(...ai);const p=[a[1],a[2],a[3],a[4]].reduce((v,P)=>{if(!v)return null;const S=Number(P);return isNaN(S)?null:[...v,S]},[]);return new dt(...p??ai)}const yt=x("cbz");class Xi{constructor(a,p){this.element=a.createElement("div"),this.element.classList.add(yt()),p.viewProps.bindClassModifiers(this.element),p.foldable.bindExpandedClass(this.element,yt(void 0,"expanded")),T(p.foldable,"completed",z(this.element,yt(void 0,"cpl")));const v=a.createElement("div");v.classList.add(yt("h")),this.element.appendChild(v);const P=a.createElement("button");P.classList.add(yt("b")),p.viewProps.bindDisabled(P);const S=a.createElementNS(_e,"svg");S.innerHTML='<path d="M2 13C8 13 8 3 14 3"/>',P.appendChild(S),v.appendChild(P),this.buttonElement=P;const B=a.createElement("div");if(B.classList.add(yt("t")),v.appendChild(B),this.textElement=B,p.pickerLayout==="inline"){const G=a.createElement("div");G.classList.add(yt("p")),this.element.appendChild(G),this.pickerElement=G}else this.pickerElement=null}}const Dn=x("cbzp");class Yi{constructor(a,p){this.element=a.createElement("div"),this.element.classList.add(Dn()),p.viewProps.bindClassModifiers(this.element);const v=a.createElement("div");v.classList.add(Dn("g")),this.element.appendChild(v),this.graphElement=v;const P=a.createElement("div");P.classList.add(Dn("t")),this.element.appendChild(P),this.textElement=P}}function tt(m,a){const p=new MutationObserver(P=>{for(const S of P)S.type==="childList"&&S.addedNodes.forEach(B=>{B.contains(B)&&(a(),p.disconnect())})}),v=m.ownerDocument;p.observe(v.body,{attributes:!0,childList:!0,subtree:!0})}const ct=x("cbzg");function Ws(m,a){return p=>a(m(p))}class Le{constructor(a,p){this.element=a.createElement("div"),this.element.classList.add(ct()),p.viewProps.bindClassModifiers(this.element),p.viewProps.bindTabIndex(this.element);const v=a.createElement("div");v.classList.add(ct("p")),this.element.appendChild(v),this.previewElement=v;const P=a.createElementNS(_e,"svg");P.classList.add(ct("g")),this.element.appendChild(P),this.svgElem_=P;const S=a.createElementNS(_e,"path");S.classList.add(ct("u")),this.svgElem_.appendChild(S),this.guideElem_=S;const B=a.createElementNS(_e,"polyline");B.classList.add(ct("l")),this.svgElem_.appendChild(B),this.lineElem_=B,this.handleElems_=[a.createElement("div"),a.createElement("div")],this.handleElems_.forEach(G=>{G.classList.add(ct("h")),this.element.appendChild(G)}),this.vectorElems_=[a.createElementNS(_e,"line"),a.createElementNS(_e,"line")],this.vectorElems_.forEach(G=>{G.classList.add(ct("v")),this.svgElem_.appendChild(G)}),this.value_=p.value,this.value_.emitter.on("change",this.onValueChange_.bind(this)),this.sel_=p.selection,this.handleElems_.forEach((G,oe)=>{I(this.sel_,Ws($e=>$e===oe,z(G,ct("h","sel"))))}),tt(this.element,()=>{this.refresh()})}getVertMargin_(a){return a*.25}valueToPosition(a,p){const v=this.element.getBoundingClientRect(),P=v.width,S=v.height,B=this.getVertMargin_(S);return{x:Pe(a,0,1,0,P),y:Pe(p,0,1,S-B,B)}}positionToValue(a,p){const v=this.element.getBoundingClientRect(),P=v.width,S=v.height,B=this.getVertMargin_(S);return{x:Ot(Pe(a,0,P,0,1),0,1),y:Pe(p,S-B,B,0,1)}}refresh(){this.guideElem_.setAttributeNS(null,"d",[0,1].map(S=>{const B=this.valueToPosition(0,S),G=this.valueToPosition(1,S);return[`M ${B.x},${B.y}`,`L ${G.x},${G.y}`].join(" ")}).join(" "));const a=this.value_.rawValue,p=[];let v=0;for(;;){const S=this.valueToPosition(...a.curve(v));if(p.push([S.x,S.y].join(",")),v>=1)break;v=Math.min(v+.05,1)}this.lineElem_.setAttributeNS(null,"points",p.join(" "));const P=a.toObject();[0,1].forEach(S=>{const B=this.valueToPosition(S,S),G=this.valueToPosition(P[S*2],P[S*2+1]),oe=this.vectorElems_[S];oe.setAttributeNS(null,"x1",String(B.x)),oe.setAttributeNS(null,"y1",String(B.y)),oe.setAttributeNS(null,"x2",String(G.x)),oe.setAttributeNS(null,"y2",String(G.y));const $e=this.handleElems_[S];$e.style.left=`${G.x}px`,$e.style.top=`${G.y}px`})}onValueChange_(){this.refresh()}}const qi=24,sn=400,li=1e3,mt=x("cbzprv");class Ft{constructor(a,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=a.createElement("div"),this.element.classList.add(mt()),p.viewProps.bindClassModifiers(this.element);const v=a.createElementNS(_e,"svg");v.classList.add(mt("g")),this.element.appendChild(v),this.svgElem_=v;const P=a.createElementNS(_e,"path");P.classList.add(mt("t")),this.svgElem_.appendChild(P),this.ticksElem_=P;const S=a.createElement("div");S.classList.add(mt("m")),this.element.appendChild(S),this.markerElem_=S,this.value_=p.value,this.value_.emitter.on("change",this.onValueChange_),p.viewProps.handleDispose(this.onDispose_),tt(this.element,()=>{this.refresh()})}play(){this.stop(),this.updateMarker_(0),this.markerElem_.classList.add(mt("m","a")),this.startTime_=new Date().getTime()+sn,this.stopped_=!1,requestAnimationFrame(this.onTimer_)}stop(){this.stopped_=!0,this.markerElem_.classList.remove(mt("m","a"))}onDispose_(){this.stop()}updateMarker_(a){const p=this.value_.rawValue.y(Ot(a,0,1));this.markerElem_.style.left=`${p*100}%`}refresh(){const a=this.svgElem_.getBoundingClientRect(),p=a.width,v=a.height,P=[],S=this.value_.rawValue;for(let B=0;B<qi;B++){const G=Pe(B,0,qi-1,0,1),oe=Pe(S.y(G),0,1,0,p);P.push(`M ${oe},0 v${v}`)}this.ticksElem_.setAttributeNS(null,"d",P.join(" "))}onTimer_(){if(this.startTime_===null)return;const a=new Date().getTime()-this.startTime_,p=a/li;this.updateMarker_(p),a>li+sn&&this.stop(),this.stopped_||requestAnimationFrame(this.onTimer_)}onValueChange_(){this.refresh(),this.play()}}function Ie(m,a,p,v){const P=p-m,S=v-a;return Math.sqrt(P*P+S*S)}function rn(m,a,p,v){const P=Ie(m,a,p,v),S=Math.atan2(v-a,p-m),B=Math.round(S/(Math.PI/4))*Math.PI/4;return{x:m+Math.cos(B)*P,y:a+Math.sin(B)*P}}class nt{constructor(a,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_=X(0),this.viewProps=p.viewProps,this.view=new Le(a,{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 Ft(a,{value:this.value,viewProps:this.viewProps}),this.prevView_.element.addEventListener("mousedown",P=>{P.stopImmediatePropagation(),P.preventDefault(),this.prevView_.play()}),this.view.previewElement.appendChild(this.prevView_.element);const v=new Sn(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_(a,p,v){const P=this.sel_.rawValue,S=this.value.rawValue.toObject(),B=this.view.positionToValue(a.x,a.y),G=p?rn(P,P,B.x,B.y):B;S[P*2]=G.x,S[P*2+1]=G.y,this.value.setRawValue(new dt(...S),v)}onPointerDown_(a){const p=a.data;if(!p.point)return;const v=this.value.rawValue,P=this.view.valueToPosition(v.x1,v.y1),S=Ie(p.point.x,p.point.y,P.x,P.y),B=this.view.valueToPosition(v.x2,v.y2),G=Ie(p.point.x,p.point.y,B.x,B.y);this.sel_.rawValue=S<=G?0:1,this.updateValue_(p.point,a.shiftKey,{forceEmit:!1,last:!1})}onPointerMove_(a){const p=a.data;p.point&&this.updateValue_(p.point,a.shiftKey,{forceEmit:!1,last:!1})}onPointerUp_(a){const p=a.data;p.point&&this.updateValue_(p.point,a.shiftKey,{forceEmit:!0,last:!0})}onKeyDown_(a){Ti(a.key)&&a.preventDefault();const p=this.sel_.rawValue,v=this.value.rawValue.toObject();v[p*2]+=Et(this.baseStep_,ei(a)),v[p*2+1]+=Et(this.baseStep_,Jt(a)),this.value.setRawValue(new dt(...v),{forceEmit:!1,last:!1})}onKeyUp_(a){Ti(a.key)&&a.preventDefault();const p=Et(this.baseStep_,ei(a)),v=Et(this.baseStep_,Jt(a));p===0&&v===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class Qi{constructor(a,p){this.value=p.value,this.viewProps=p.viewProps,this.view=new Yi(a,{viewProps:this.viewProps}),this.gc_=new nt(a,{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 gt({max:1,min:0})}),P=Object.assign(Object.assign({},p.axis),{constraint:void 0});this.tc_=new _t(a,{assembly:oi,axes:[v,P,v,P],parser:Wt,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(a=>a.inputElement)]}refresh(){this.gc_.refresh()}}class In{constructor(a,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_=_n(p.expanded),this.view=new Xi(a,{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 Dt(a,{parser:Zs,props:Y.fromObject({formatter:Qs}),value:this.value,viewProps:this.viewProps}),this.view.textElement.appendChild(this.tc_.view.element),this.popC_=p.pickerLayout==="popup"?new se(a,{viewProps:this.viewProps}):null;const v=new Qi(a,{axis:p.axis,value:this.value,viewProps:this.viewProps});v.allFocusableElements.forEach(P=>{P.addEventListener("blur",this.onPopupChildBlur_),P.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),I(this.popC_.shows,P=>{P&&v.refresh()}),Tt({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),xn(this.foldable_,this.view.pickerElement))}onButtonBlur_(a){if(!this.popC_)return;const p=a.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_(a){if(!this.popC_)return;const p=this.popC_.view.element,v=$t(a);v&&p.contains(v)||v&&v===this.view.buttonElement&&!Re(p.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(a){this.popC_&&a.key==="Escape"&&(this.popC_.shows.rawValue=!1)}}function ci(){return new zs({assembly:oi,components:[0,1,2,3].map(m=>m%2===0?new gt({min:0,max:1}):void 0)})}const xt={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(m){const a=he,p=te(m,{value:a.required.array(a.required.number),view:a.required.constant("cubicbezier"),expanded:a.optional.boolean,label:a.optional.string,picker:a.optional.custom(v=>v==="inline"||v==="popup"?v:void 0)});return p?{params:p}:null},controller(m){var a,p;const v=new dt(...m.params.value),P=X(v,{constraint:ci(),equals:dt.equals}),S=new In(m.document,{axis:{baseStep:.1,textProps:Y.fromObject({draggingScale:.01,formatter:Se(2)})},expanded:(a=m.params.expanded)!==null&&a!==void 0?a:!1,pickerLayout:(p=m.params.picker)!==null&&p!==void 0?p:"popup",value:P,viewProps:m.viewProps});return new bt(m.document,{blade:m.blade,props:Y.fromObject({label:m.params.label}),valueController:S})},api(m){return!(m.controller instanceof bt)||!(m.controller.valueController instanceof In)?null:new $i(m.controller)}};class we extends s{begin(){this.controller_.valueController.begin()}end(){this.controller_.valueController.end()}}const pi=20;class ke{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(a){this.start_=a.getTime()}calculateFps_(a){if(this.timestamps_.length===0)return null;const p=this.timestamps_[0];return 1e3*(this.frameCount_-p.frameCount)/(a-p.time)}compactTimestamps_(){if(this.timestamps_.length<=pi)return;const a=this.timestamps_.length-pi;this.timestamps_.splice(0,a);const p=this.timestamps_[0].frameCount;this.timestamps_.forEach(v=>{v.frameCount-=p}),this.frameCount_-=p}end(a){if(this.start_===null)return;const p=a.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 zt=x("fps");class ze{constructor(a,p){this.element=a.createElement("div"),this.element.classList.add(zt()),p.viewProps.bindClassModifiers(this.element),this.graphElement=a.createElement("div"),this.graphElement.classList.add(zt("g")),this.element.appendChild(this.graphElement);const v=a.createElement("div");v.classList.add(zt("l")),this.element.appendChild(v);const P=a.createElement("span");P.classList.add(zt("v")),P.textContent="--",v.appendChild(P),this.valueElement=P;const S=a.createElement("span");S.classList.add(zt("u")),S.textContent="FPS",v.appendChild(S)}}class ui{constructor(a,p){this.stopwatch_=new ke,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 ze(a,{viewProps:this.viewProps}),this.graphC_=new Gs(a,{formatter:Se(0),lineCount:p.lineCount,props:Y.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 a=this.stopwatch_.fps;if(a!==null){const p=this.value_.rawValue;this.value_.rawValue=Ds(p,a),this.view.valueElement.textContent=a.toFixed(0)}}}function on(m,a){return a===0?new Cn:new Yt(m,a??Rs.monitor.defaultInterval)}const hi={id:"fpsgraph",type:"blade",accept(m){const a=he,p=te(m,{view:a.required.constant("fpsgraph"),interval:a.optional.number,label:a.optional.string,lineCount:a.optional.number,max:a.optional.number,min:a.optional.number});return p?{params:p}:null},controller(m){var a,p,v,P;const S=(a=m.params.interval)!==null&&a!==void 0?a:500;return new Je(m.document,{blade:m.blade,props:Y.fromObject({label:m.params.label}),valueController:new ui(m.document,{lineCount:(p=m.params.lineCount)!==null&&p!==void 0?p:2,maxValue:(v=m.params.max)!==null&&v!==void 0?v:90,minValue:(P=m.params.min)!==null&&P!==void 0?P:0,ticker:on(m.document,S),value:Di(80),viewProps:m.viewProps})})},api(m){return!(m.controller instanceof Je)||!(m.controller.valueController instanceof ui)?null:new we(m.controller)}};class je{constructor(a,p){this.min=a,this.max=p}static isObject(a){if(typeof a!="object"||a===null)return!1;const p=a.min,v=a.max;return!(typeof p!="number"||typeof v!="number")}static equals(a,p){return a.min===p.min&&a.max===p.max}get length(){return this.max-this.min}toObject(){return{min:this.min,max:this.max}}}const di={fromComponents:m=>new je(m[0],m[1]),toComponents:m=>[m.min,m.max]};class an{constructor(a){this.edge=a}constrain(a){var p,v,P,S,B,G,oe,$e;if(a.min<=a.max)return new je((v=(p=this.edge)===null||p===void 0?void 0:p.constrain(a.min))!==null&&v!==void 0?v:a.min,(S=(P=this.edge)===null||P===void 0?void 0:P.constrain(a.max))!==null&&S!==void 0?S:a.max);const Xe=(a.min+a.max)/2;return new je((G=(B=this.edge)===null||B===void 0?void 0:B.constrain(Xe))!==null&&G!==void 0?G:Xe,($e=(oe=this.edge)===null||oe===void 0?void 0:oe.constrain(Xe))!==null&&$e!==void 0?$e:Xe)}}const mi=x("rsltxt");class Tn{constructor(a,p){this.sliderView_=p.sliderView,this.textView_=p.textView,this.element=a.createElement("div"),this.element.classList.add(mi());const v=a.createElement("div");v.classList.add(mi("s")),v.appendChild(this.sliderView_.element),this.element.appendChild(v);const P=a.createElement("div");P.classList.add(mi("t")),P.appendChild(this.textView_.element),this.element.appendChild(P)}}const qe=x("rsl");class ln{constructor(a,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=a.createElement("div"),this.element.classList.add(qe()),p.viewProps.bindClassModifiers(this.element),this.value_=p.value,this.value_.emitter.on("change",this.onValueChange_);const v=a.createElement("div");v.classList.add(qe("t")),this.element.appendChild(v),this.trackElement=v;const P=a.createElement("div");P.classList.add(qe("b")),v.appendChild(P),this.barElement=P;const S=["min","max"].map(B=>{const G=a.createElement("div");return G.classList.add(qe("k"),qe("k",B)),v.appendChild(G),G});this.knobElements=[S[0],S[1]],this.update_()}valueToX_(a){const p=this.sliderProps_.get("minValue"),v=this.sliderProps_.get("maxValue");return Ot(Pe(a,p,v,0,1),0,1)*100}update_(){const a=this.value_.rawValue;a.length===0?this.element.classList.add(qe(void 0,"zero")):this.element.classList.remove(qe(void 0,"zero"));const p=[this.valueToX_(a.min),this.valueToX_(a.max)];this.barElement.style.left=`${p[0]}%`,this.barElement.style.right=`${100-p[1]}%`,this.knobElements.forEach((v,P)=>{v.style.left=`${p[P]}%`})}onSliderPropsChange_(){this.update_()}onValueChange_(){this.update_()}}class fi{constructor(a,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 ln(a,{sliderProps:this.sliderProps,value:this.value,viewProps:p.viewProps});const v=new Sn(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_(a){if(!a.point)return null;const p=(a.point.x+this.ofs_())/a.bounds.width,v=this.sliderProps.get("minValue"),P=this.sliderProps.get("maxValue");return Pe(p,0,1,v,P)}onPointerDown_(a){if(!a.data.point)return;const p=a.data.point.x/a.data.bounds.width,v=this.value.rawValue,P=this.sliderProps.get("minValue"),S=this.sliderProps.get("maxValue"),B=Pe(v.min,P,S,0,1),G=Pe(v.max,P,S,0,1);Math.abs(G-p)<=.025?this.grabbing_="max":Math.abs(B-p)<=.025?this.grabbing_="min":p>=B&&p<=G?(this.grabbing_="length",this.grabOffset_=Pe(p-B,0,1,0,S-P)):p<B?(this.grabbing_="min",this.onPointerMove_(a)):p>G&&(this.grabbing_="max",this.onPointerMove_(a))}applyPointToValue_(a,p){const v=this.valueFromData_(a);if(v===null)return;const P=this.sliderProps.get("minValue"),S=this.sliderProps.get("maxValue");if(this.grabbing_==="min")this.value.setRawValue(new je(v,this.value.rawValue.max),p);else if(this.grabbing_==="max")this.value.setRawValue(new je(this.value.rawValue.min,v),p);else if(this.grabbing_==="length"){const B=this.value.rawValue.length;let G=v-this.grabOffset_,oe=G+B;G<P?(G=P,oe=P+B):oe>S&&(G=S-B,oe=S),this.value.setRawValue(new je(G,oe),p)}}onPointerMove_(a){this.applyPointToValue_(a.data,{forceEmit:!1,last:!1})}onPointerUp_(a){this.applyPointToValue_(a.data,{forceEmit:!0,last:!0}),this.grabbing_=null}}class pt{constructor(a,p){this.value=p.value,this.viewProps=p.viewProps,this.sc_=new fi(a,p);const v={baseStep:p.baseStep,constraint:p.constraint,textProps:Y.fromObject({draggingScale:p.draggingScale,formatter:p.formatter})};this.tc_=new _t(a,{assembly:di,axes:[v,v],parser:p.parser,value:this.value,viewProps:p.viewProps}),this.view=new Tn(a,{sliderView:this.sc_.view,textView:this.tc_.view})}get textController(){return this.tc_}}function Zi(m){return je.isObject(m)?new je(m.min,m.max):new je(0,0)}function vi(m,a){m.writeProperty("max",a.max),m.writeProperty("min",a.min)}function Js(m){const a=[],p=nn(m);p&&a.push(p);const v=Us(m);return v&&a.push(v),new an(new Pn(a))}const En={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:(m,a)=>{if(!je.isObject(m))return null;const p=he,v=te(a,{format:p.optional.function,max:p.optional.number,min:p.optional.number,step:p.optional.number});return v?{initialValue:new je(m.min,m.max),params:v}:null},binding:{reader:m=>Zi,constraint:m=>Js(m.params),equals:je.equals,writer:m=>vi},controller(m){var a;const p=m.value,v=m.constraint;if(!(v instanceof an))throw w.shouldNeverHappen();const P=(p.rawValue.min+p.rawValue.max)/2,S=(a=m.params.format)!==null&&a!==void 0?a:Se(en(v.edge,P)),B=v.edge&&ht(v.edge,lt);if(B)return new pt(m.document,{baseStep:ni(v.edge),constraint:v.edge,draggingScale:Ln(v.edge,P),formatter:S,parser:Wt,sliderProps:new Y({maxValue:B.values.value("max"),minValue:B.values.value("min")}),value:p,viewProps:m.viewProps});const G={baseStep:ni(v.edge),constraint:v.edge,textProps:Y.fromObject({draggingScale:P,formatter:S})};return new _t(m.document,{assembly:di,axes:[G,G],parser:Wt,value:p,viewProps:m.viewProps})}};class Ct{constructor(a){this.controller_=a}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(a){this.controller_.viewProps.set("disabled",a)}get title(){var a;return(a=this.controller_.props.get("title"))!==null&&a!==void 0?a:""}set title(a){this.controller_.props.set("title",a)}}class Pt extends l{constructor(a,p,v,P,S){super(a,P,S),this.cell=p,this.index=v}}class cn extends s{constructor(a){super(a),this.cellToApiMap_=new Map,this.controller_.valueController.cellControllers.forEach(v=>{const P=new Ct(v);this.cellToApiMap_.set(v,P)})}get value(){return this.controller_.value}cell(a,p){const v=this.controller_.valueController,P=v.cellControllers[p*v.size[0]+a];return this.cellToApiMap_.get(P)}on(a,p){const v=p.bind(this);this.controller_.value.emitter.on(a,P=>{const S=this.controller_.valueController,B=S.findCellByValue(P.rawValue);if(!B)return;const G=this.cellToApiMap_.get(B);if(!G)return;const oe=S.cellControllers.indexOf(B);v(new Pt(this,G,[oe%S.size[0],Math.floor(oe/S.size[0])],P.rawValue,void 0))})}}const pn=x("rad");class Wi{constructor(a,p){this.element=a.createElement("div"),this.element.classList.add(pn()),p.viewProps.bindClassModifiers(this.element);const v=a.createElement("label");v.classList.add(pn("l")),this.element.appendChild(v);const P=a.createElement("input");P.classList.add(pn("i")),P.name=p.name,P.type="radio",p.viewProps.bindDisabled(P),v.appendChild(P),this.inputElement=P;const S=a.createElement("div");S.classList.add(pn("b")),v.appendChild(S);const B=a.createElement("div");B.classList.add(pn("t")),S.appendChild(B),T(p.props,"title",G=>{B.textContent=G})}}class Ji{constructor(a,p){this.props=p.props,this.viewProps=p.viewProps,this.view=new Wi(a,{name:p.name,props:this.props,viewProps:this.viewProps})}}class On{constructor(a,p){this.cellCs_=[],this.cellValues_=[],this.onCellInputChange_=this.onCellInputChange_.bind(this),this.size=p.size;const[v,P]=this.size;for(let S=0;S<P;S++)for(let B=0;B<v;B++){const G=new Ji(a,{name:p.groupName,props:Y.fromObject(Object.assign({},p.cellConfig(B,S))),viewProps:be.create()});this.cellCs_.push(G),this.cellValues_.push(p.cellConfig(B,S).value)}this.value=p.value,I(this.value,S=>{const B=this.findCellByValue(S);B&&(B.view.inputElement.checked=!0)}),this.viewProps=be.create(),this.view=new ut(a,{viewProps:this.viewProps,viewName:"radgrid"}),this.view.element.style.gridTemplateColumns=`repeat(${v}, 1fr)`,this.cellCs_.forEach(S=>{S.view.inputElement.addEventListener("change",this.onCellInputChange_),this.view.element.appendChild(S.view.element)})}get cellControllers(){return this.cellCs_}findCellByValue(a){const p=this.cellValues_.findIndex(v=>v===a);return p<0?null:this.cellCs_[p]}onCellInputChange_(a){const p=a.currentTarget,v=this.cellCs_.findIndex(P=>P.view.inputElement===p);v<0||(this.value.rawValue=this.cellValues_[v])}}const kt=function(){return{id:"radiogrid",type:"blade",accept(m){const a=he,p=te(m,{cells:a.required.function,groupName:a.required.string,size:a.required.array(a.required.number),value:a.required.raw,view:a.required.constant("radiogrid"),label:a.optional.string});return p?{params:p}:null},controller(m){return new bt(m.document,{blade:m.blade,props:Y.fromObject({label:m.params.label}),valueController:new On(m.document,{groupName:m.params.groupName,cellConfig:m.params.cells,size:m.params.size,value:X(m.params.value)})})},api(m){return!(m.controller instanceof bt)||!(m.controller.valueController instanceof On)?null:new cn(m.controller)}}}();function bi(m){return{id:"input-radiogrid",type:"input",accept(a,p){if(!m.isType(a))return null;const v=he,P=te(p,{cells:v.required.function,groupName:v.required.string,size:v.required.array(v.required.number),view:v.required.constant("radiogrid")});return P?{initialValue:a,params:P}:null},binding:m.binding,controller:a=>new On(a.document,{cellConfig:a.params.cells,groupName:a.params.groupName,size:a.params.size,value:a.value})}}const Hs=bi({isType:m=>typeof m=="number",binding:{reader:m=>Ls,writer:m=>Ye}}),er=bi({isType:m=>typeof m=="string",binding:{reader:m=>Vi,writer:m=>Ye}}),tr=bi({isType:m=>typeof m=="boolean",binding:{reader:m=>qt,writer:m=>Ye}}),Hi=[$s,xt,hi,En,kt,tr,Hs,er];r.ButtonCellApi=Gi,r.ButtonGridApi=Ki,r.ButtonGridController=si,r.CubicBezier=dt,r.CubicBezierApi=$i,r.CubicBezierAssembly=oi,r.CubicBezierController=In,r.CubicBezierGraphController=nt,r.CubicBezierGraphView=Le,r.CubicBezierPickerController=Qi,r.CubicBezierPickerView=Yi,r.CubicBezierPreviewView=Ft,r.CubicBezierView=Xi,r.FpsGraphBladeApi=we,r.FpsGraphController=ui,r.FpsView=ze,r.Fpswatch=ke,r.Interval=je,r.IntervalAssembly=di,r.IntervalConstraint=an,r.RadioCellApi=Ct,r.RadioController=Ji,r.RadioGridApi=cn,r.RadioGridController=On,r.RadioView=Wi,r.RangeSliderController=fi,r.RangeSliderTextController=pt,r.RangeSliderTextView=Tn,r.RangeSliderView=ln,r.TpRadioGridChangeEvent=Pt,r.plugins=Hi,Object.defineProperty(r,"__esModule",{value:!0})})})(vs,vs.exports);var to=vs.exports;const Wc=Uo({__proto__:null,default:ml(to)},[to]);let Kt,ki;const Jc=(g="tres-container")=>{Kt||(Kt=new Zc.Pane({container:document.querySelector(g)||void 0}),Kt.registerPlugin(Wc),ki=Kt.addBlade({view:"fpsgraph",label:"fpsgraph"}));function i(){Kt&&Kt.dispose()}return C.onMounted(()=>{const{onBeforeLoop:r,onAfterLoop:s,resume:o}=Me.useRenderLoop();o(),r(()=>ki.begin()),s(()=>ki.end())}),C.onUnmounted(()=>{i()}),{pane:Kt,fpsGraph:ki,disposeTweakPane:i}};J.Box=uc,J.Circle=mc,J.Cone=bc,J.ContactShadows=ql,J.Dodecahedron=_c,J.Environment=yl,J.FBXModel=Wl,J.GLTFModel=Zl,J.Icosahedron=Cc,J.Levioso=Gl,J.MapControls=rc,J.MeshWobbleMaterial=lc,J.MouseParallax=Il,J.Octahedron=Mc,J.OrbitControls=Hl,J.Plane=Vc,J.PointerLockControls=ic,J.Precipitation=Nl,J.Ring=Tc,J.Smoke=Rl,J.Sphere=Bc,J.Stars=El,J.Tetrahedron=jc,J.Text3D=wl,J.Torus=Gc,J.TorusKnot=Xc,J.TransformControls=tc,J.Tube=Qc,J.useAnimations=_l,J.useEnvironment=qr,J.useFBX=eo,J.useGLTF=Hr,J.useMouseParallax=Jr,J.useTweakPane=Jc,Object.defineProperty(J,Symbol.toStringTag,{value:"Module"})});