@tresjs/cientos 2.2.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/core/abstractions/Levioso.vue.d.ts +24 -22
  2. package/dist/core/abstractions/MouseParallax.vue.d.ts +58 -0
  3. package/dist/core/abstractions/Precipitation.vue.d.ts +84 -77
  4. package/dist/core/abstractions/Smoke.vue.d.ts +60 -50
  5. package/dist/core/abstractions/Stars.vue.d.ts +45 -79
  6. package/dist/core/abstractions/Text3D.vue.d.ts +63 -77
  7. package/dist/core/abstractions/index.d.ts +1 -2
  8. package/dist/core/controls/CameraControls.vue.d.ts +8098 -0
  9. package/dist/core/controls/KeyboardControls.vue.d.ts +64 -48
  10. package/dist/core/controls/MapControls.vue.d.ts +13 -20
  11. package/dist/core/controls/OrbitControls.vue.d.ts +165 -141
  12. package/dist/core/controls/PointerLockControls.vue.d.ts +20 -25
  13. package/dist/core/controls/ScrollControls.vue.d.ts +101 -0
  14. package/dist/core/controls/TransformControls.vue.d.ts +60 -58
  15. package/dist/core/controls/index.d.ts +3 -1
  16. package/dist/core/index.d.ts +1 -0
  17. package/dist/core/loaders/useFBX/component.vue.d.ts +7 -6
  18. package/dist/core/loaders/useGLTF/component.vue.d.ts +13 -16
  19. package/dist/core/materials/meshWobbleMaterial/index.vue.d.ts +8 -13
  20. package/dist/core/shapes/Box.vue.d.ts +25 -14
  21. package/dist/core/shapes/Circle.vue.d.ts +25 -14
  22. package/dist/core/shapes/Cone.vue.d.ts +26 -15
  23. package/dist/core/shapes/Dodecahedron.vue.d.ts +25 -14
  24. package/dist/core/shapes/Icosahedron.vue.d.ts +25 -14
  25. package/dist/core/shapes/Octahedron.vue.d.ts +25 -14
  26. package/dist/core/shapes/Plane.vue.d.ts +25 -14
  27. package/dist/core/shapes/Ring.vue.d.ts +25 -14
  28. package/dist/core/shapes/Sphere.vue.d.ts +25 -14
  29. package/dist/core/shapes/Tetrahedron.vue.d.ts +25 -14
  30. package/dist/core/shapes/Torus.vue.d.ts +25 -14
  31. package/dist/core/shapes/TorusKnot.vue.d.ts +25 -14
  32. package/dist/core/shapes/Tube.vue.d.ts +26 -15
  33. package/dist/core/staging/Backdrop.vue.d.ts +44 -0
  34. package/dist/core/staging/index.d.ts +2 -0
  35. package/dist/trescientos.js +9391 -7559
  36. package/dist/trescientos.umd.cjs +22 -17
  37. package/dist/utils/index.d.ts +20 -0
  38. package/package.json +24 -22
  39. package/dist/core/abstractions/ContactShadows.vue.d.ts +0 -251
  40. package/dist/core/abstractions/useParallax/component.d.ts +0 -27
  41. package/dist/core/abstractions/useParallax/index.d.ts +0 -2
  42. package/dist/core/useCientos.d.ts +0 -11
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * name: @tresjs/cientos
3
- * version: v2.2.0
3
+ * version: v3.0.0
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,x){typeof exports=="object"&&typeof module<"u"?x(exports,require("vue"),require("three"),require("@tresjs/core")):typeof define=="function"&&define.amd?define(["exports","vue","three","@tresjs/core"],x):(J=typeof globalThis<"u"?globalThis:J||self,x(J.trescientos={},J.Vue,J.Three,J.TresjsCore))})(this,function(J,x,f,Ee){"use strict";var cu=Object.defineProperty;var pu=(J,x,f)=>x in J?cu(J,x,{enumerable:!0,configurable:!0,writable:!0,value:f}):J[x]=f;var Mr=(J,x,f)=>(pu(J,typeof x!="symbol"?x+"":x,f),f);function Yo(v,n){for(var i=0;i<n.length;i++){const s=n[i];if(typeof s!="string"&&!Array.isArray(s)){for(const o in s)if(o!=="default"&&!(o in v)){const l=Object.getOwnPropertyDescriptor(s,o);l&&Object.defineProperty(v,o,l.get?l:{enumerable:!0,get:()=>s[o]})}}}return Object.freeze(Object.defineProperty(v,Symbol.toStringTag,{value:"Module"}))}function Ar(v,n){if(n===f.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),v;if(n===f.TriangleFanDrawMode||n===f.TriangleStripDrawMode){let i=v.getIndex();if(i===null){const p=[],u=v.getAttribute("position");if(u!==void 0){for(let d=0;d<u.count;d++)p.push(d);v.setIndex(p),i=v.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),v}const s=i.count-2,o=[];if(i)if(n===f.TriangleFanDrawMode)for(let p=1;p<=s;p++)o.push(i.getX(0)),o.push(i.getX(p)),o.push(i.getX(p+1));else for(let p=0;p<s;p++)p%2===0?(o.push(i.getX(p)),o.push(i.getX(p+1)),o.push(i.getX(p+2))):(o.push(i.getX(p+2)),o.push(i.getX(p+1)),o.push(i.getX(p)));o.length/3!==s&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const l=v.clone();return l.setIndex(o),l.clearGroups(),l}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",n),v}var We=Uint8Array,Lt=Uint16Array,ss=Uint32Array,Sr=new We([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]),Lr=new We([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]),qo=new We([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Vr=function(v,n){for(var i=new Lt(31),s=0;s<31;++s)i[s]=n+=1<<v[s-1];for(var o=new ss(i[30]),s=1;s<30;++s)for(var l=i[s];l<i[s+1];++l)o[l]=l-i[s]<<5|s;return[i,o]},Dr=Vr(Sr,2),Ir=Dr[0],Qo=Dr[1];Ir[28]=258,Qo[258]=28;for(var Zo=Vr(Lr,0),Wo=Zo[0],rs=new Lt(32768),xe=0;xe<32768;++xe){var Vt=(xe&43690)>>>1|(xe&21845)<<1;Vt=(Vt&52428)>>>2|(Vt&13107)<<2,Vt=(Vt&61680)>>>4|(Vt&3855)<<4,rs[xe]=((Vt&65280)>>>8|(Vt&255)<<8)>>>1}for(var Kn=function(v,n,i){for(var s=v.length,o=0,l=new Lt(n);o<s;++o)++l[v[o]-1];var p=new Lt(n);for(o=0;o<n;++o)p[o]=p[o-1]+l[o-1]<<1;var u;if(i){u=new Lt(1<<n);var d=15-n;for(o=0;o<s;++o)if(v[o])for(var w=o<<4|v[o],_=n-v[o],y=p[v[o]-1]++<<_,C=y|(1<<_)-1;y<=C;++y)u[rs[y]>>>d]=w}else for(u=new Lt(s),o=0;o<s;++o)v[o]&&(u[o]=rs[p[v[o]-1]++]>>>15-v[o]);return u},$n=new We(288),xe=0;xe<144;++xe)$n[xe]=8;for(var xe=144;xe<256;++xe)$n[xe]=9;for(var xe=256;xe<280;++xe)$n[xe]=7;for(var xe=280;xe<288;++xe)$n[xe]=8;for(var Tr=new We(32),xe=0;xe<32;++xe)Tr[xe]=5;var Jo=Kn($n,9,1),Ho=Kn(Tr,5,1),os=function(v){for(var n=v[0],i=1;i<v.length;++i)v[i]>n&&(n=v[i]);return n},at=function(v,n,i){var s=n/8|0;return(v[s]|v[s+1]<<8)>>(n&7)&i},as=function(v,n){var i=n/8|0;return(v[i]|v[i+1]<<8|v[i+2]<<16)>>(n&7)},ea=function(v){return(v/8|0)+(v&7&&1)},ta=function(v,n,i){(n==null||n<0)&&(n=0),(i==null||i>v.length)&&(i=v.length);var s=new(v instanceof Lt?Lt:v instanceof ss?ss:We)(i-n);return s.set(v.subarray(n,i)),s},na=function(v,n,i){var s=v.length;if(!s||i&&!i.l&&s<5)return n||new We(0);var o=!n||i,l=!i||i.i;i||(i={}),n||(n=new We(s*3));var p=function(De){var Be=n.length;if(De>Be){var ye=new We(Math.max(Be*2,De));ye.set(n),n=ye}},u=i.f||0,d=i.p||0,w=i.b||0,_=i.l,y=i.d,C=i.m,M=i.n,E=s*8;do{if(!_){i.f=u=at(v,d,1);var V=at(v,d+1,3);if(d+=3,V)if(V==1)_=Jo,y=Ho,C=9,M=5;else if(V==2){var N=at(v,d,31)+257,T=at(v,d+10,15)+4,Q=N+at(v,d+5,31)+1;d+=14;for(var $=new We(Q),U=new We(19),j=0;j<T;++j)U[qo[j]]=at(v,d+j*3,7);d+=T*3;for(var X=os(U),Y=(1<<X)-1,Z=Kn(U,X,1),j=0;j<Q;){var ue=Z[at(v,d,Y)];d+=ue&15;var I=ue>>>4;if(I<16)$[j++]=I;else{var we=0,he=0;for(I==16?(he=3+at(v,d,3),d+=2,we=$[j-1]):I==17?(he=3+at(v,d,7),d+=3):I==18&&(he=11+at(v,d,127),d+=7);he--;)$[j++]=we}}var fe=$.subarray(0,N),de=$.subarray(N);C=os(fe),M=os(de),_=Kn(fe,C,1),y=Kn(de,M,1)}else throw"invalid block type";else{var I=ea(d)+4,F=v[I-4]|v[I-3]<<8,z=I+F;if(z>s){if(l)throw"unexpected EOF";break}o&&p(w+F),n.set(v.subarray(I,z),w),i.b=w+=F,i.p=d=z*8;continue}if(d>E){if(l)throw"unexpected EOF";break}}o&&p(w+131072);for(var te=(1<<C)-1,q=(1<<M)-1,Pe=d;;Pe=d){var we=_[as(v,d)&te],ve=we>>>4;if(d+=we&15,d>E){if(l)throw"unexpected EOF";break}if(!we)throw"invalid length/literal";if(ve<256)n[w++]=ve;else if(ve==256){Pe=d,_=null;break}else{var ce=ve-254;if(ve>264){var j=ve-257,se=Sr[j];ce=at(v,d,(1<<se)-1)+Ir[j],d+=se}var ge=y[as(v,d)&q],L=ge>>>4;if(!ge)throw"invalid distance";d+=ge&15;var de=Wo[L];if(L>3){var se=Lr[L];de+=as(v,d)&(1<<se)-1,d+=se}if(d>E){if(l)throw"unexpected EOF";break}o&&p(w+131072);for(var pe=w+ce;w<pe;w+=4)n[w]=n[w-de],n[w+1]=n[w+1-de],n[w+2]=n[w+2-de],n[w+3]=n[w+3-de];w=pe}}i.l=_,i.p=Pe,i.b=w,_&&(u=1,i.m=C,i.d=y,i.n=M)}while(!u);return w==n.length?n:ta(n,0,w)},ia=new We(0),sa=function(v){if((v[0]&15)!=8||v[0]>>>4>7||(v[0]<<8|v[1])%31)throw"invalid zlib data";if(v[1]&32)throw"invalid zlib data: preset dictionaries not supported"};function ra(v,n){return na((sa(v),v.subarray(2,-4)),n)}var oa=typeof TextDecoder<"u"&&new TextDecoder,aa=0;try{oa.decode(ia,{stream:!0}),aa=1}catch{}var la=Object.defineProperty,ca=(v,n,i)=>n in v?la(v,n,{enumerable:!0,configurable:!0,writable:!0,value:i}):v[n]=i,B=(v,n,i)=>(ca(v,typeof n!="symbol"?n+"":n,i),i);class pa extends f.Object3D{constructor(n,i){super(),B(this,"isTransformControls",!0),B(this,"visible",!1),B(this,"domElement"),B(this,"raycaster",new f.Raycaster),B(this,"gizmo"),B(this,"plane"),B(this,"tempVector",new f.Vector3),B(this,"tempVector2",new f.Vector3),B(this,"tempQuaternion",new f.Quaternion),B(this,"unit",{X:new f.Vector3(1,0,0),Y:new f.Vector3(0,1,0),Z:new f.Vector3(0,0,1)}),B(this,"pointStart",new f.Vector3),B(this,"pointEnd",new f.Vector3),B(this,"offset",new f.Vector3),B(this,"rotationAxis",new f.Vector3),B(this,"startNorm",new f.Vector3),B(this,"endNorm",new f.Vector3),B(this,"rotationAngle",0),B(this,"cameraPosition",new f.Vector3),B(this,"cameraQuaternion",new f.Quaternion),B(this,"cameraScale",new f.Vector3),B(this,"parentPosition",new f.Vector3),B(this,"parentQuaternion",new f.Quaternion),B(this,"parentQuaternionInv",new f.Quaternion),B(this,"parentScale",new f.Vector3),B(this,"worldPositionStart",new f.Vector3),B(this,"worldQuaternionStart",new f.Quaternion),B(this,"worldScaleStart",new f.Vector3),B(this,"worldPosition",new f.Vector3),B(this,"worldQuaternion",new f.Quaternion),B(this,"worldQuaternionInv",new f.Quaternion),B(this,"worldScale",new f.Vector3),B(this,"eye",new f.Vector3),B(this,"positionStart",new f.Vector3),B(this,"quaternionStart",new f.Quaternion),B(this,"scaleStart",new f.Vector3),B(this,"camera"),B(this,"object"),B(this,"enabled",!0),B(this,"axis",null),B(this,"mode","translate"),B(this,"translationSnap",null),B(this,"rotationSnap",null),B(this,"scaleSnap",null),B(this,"space","world"),B(this,"size",1),B(this,"dragging",!1),B(this,"showX",!0),B(this,"showY",!0),B(this,"showZ",!0),B(this,"changeEvent",{type:"change"}),B(this,"mouseDownEvent",{type:"mouseDown",mode:this.mode}),B(this,"mouseUpEvent",{type:"mouseUp",mode:this.mode}),B(this,"objectChangeEvent",{type:"objectChange"}),B(this,"intersectObjectWithRay",(o,l,p)=>{const u=l.intersectObject(o,!0);for(let d=0;d<u.length;d++)if(u[d].object.visible||p)return u[d];return!1}),B(this,"attach",o=>(this.object=o,this.visible=!0,this)),B(this,"detach",()=>(this.object=void 0,this.visible=!1,this.axis=null,this)),B(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),B(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()}),B(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}),B(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 p=this.space;if(this.mode==="scale"?p="local":(this.axis==="E"||this.axis==="XYZE"||this.axis==="XYZ")&&(p="world"),p==="local"&&this.mode==="rotate"){const u=this.rotationSnap;this.axis==="X"&&u&&(this.object.rotation.x=Math.round(this.object.rotation.x/u)*u),this.axis==="Y"&&u&&(this.object.rotation.y=Math.round(this.object.rotation.y/u)*u),this.axis==="Z"&&u&&(this.object.rotation.z=Math.round(this.object.rotation.z/u)*u)}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)}}),B(this,"pointerMove",o=>{const l=this.axis,p=this.mode,u=this.object;let d=this.space;if(p==="scale"?d="local":(l==="E"||l==="XYZE"||l==="XYZ")&&(d="world"),u===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),p==="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),u.position.copy(this.offset).add(this.positionStart),this.translationSnap&&(d==="local"&&(u.position.applyQuaternion(this.tempQuaternion.copy(this.quaternionStart).invert()),l.search("X")!==-1&&(u.position.x=Math.round(u.position.x/this.translationSnap)*this.translationSnap),l.search("Y")!==-1&&(u.position.y=Math.round(u.position.y/this.translationSnap)*this.translationSnap),l.search("Z")!==-1&&(u.position.z=Math.round(u.position.z/this.translationSnap)*this.translationSnap),u.position.applyQuaternion(this.quaternionStart)),d==="world"&&(u.parent&&u.position.add(this.tempVector.setFromMatrixPosition(u.parent.matrixWorld)),l.search("X")!==-1&&(u.position.x=Math.round(u.position.x/this.translationSnap)*this.translationSnap),l.search("Y")!==-1&&(u.position.y=Math.round(u.position.y/this.translationSnap)*this.translationSnap),l.search("Z")!==-1&&(u.position.z=Math.round(u.position.z/this.translationSnap)*this.translationSnap),u.parent&&u.position.sub(this.tempVector.setFromMatrixPosition(u.parent.matrixWorld))));else if(p==="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);u.scale.copy(this.scaleStart).multiply(this.tempVector2),this.scaleSnap&&this.object&&(l.search("X")!==-1&&(this.object.scale.x=Math.round(u.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap),l.search("Y")!==-1&&(u.scale.y=Math.round(u.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap),l.search("Z")!==-1&&(u.scale.z=Math.round(u.scale.z/this.scaleSnap)*this.scaleSnap||this.scaleSnap))}else if(p==="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"?(u.quaternion.copy(this.quaternionStart),u.quaternion.multiply(this.tempQuaternion.setFromAxisAngle(this.rotationAxis,this.rotationAngle)).normalize()):(this.rotationAxis.applyQuaternion(this.parentQuaternionInv),u.quaternion.copy(this.tempQuaternion.setFromAxisAngle(this.rotationAxis,this.rotationAngle)),u.quaternion.multiply(this.quaternionStart).normalize())}this.dispatchEvent(this.changeEvent),this.dispatchEvent(this.objectChangeEvent)}}),B(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)}),B(this,"getPointer",o=>{var l,p;if(this.domElement&&((l=this.domElement.ownerDocument)!=null&&l.pointerLockElement))return{x:0,y:0,button:o.button};{const u=o.changedTouches?o.changedTouches[0]:o,d=(p=this.domElement)==null?void 0:p.getBoundingClientRect();return{x:(u.clientX-d.left)/d.width*2-1,y:-(u.clientY-d.top)/d.height*2+1,button:o.button}}}),B(this,"onPointerHover",o=>{if(this.enabled)switch(o.pointerType){case"mouse":case"pen":this.pointerHover(this.getPointer(o));break}}),B(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)))}),B(this,"onPointerMove",o=>{this.enabled&&this.pointerMove(this.getPointer(o))}),B(this,"onPointerUp",o=>{!this.enabled||!this.domElement||(this.domElement.style.touchAction="",this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.pointerUp(this.getPointer(o)))}),B(this,"getMode",()=>this.mode),B(this,"setMode",o=>{this.mode=o}),B(this,"setTranslationSnap",o=>{this.translationSnap=o}),B(this,"setRotationSnap",o=>{this.rotationSnap=o}),B(this,"setScaleSnap",o=>{this.scaleSnap=o}),B(this,"setSize",o=>{this.size=o}),B(this,"setSpace",o=>{this.space=o}),B(this,"update",()=>{console.warn("THREE.TransformControls: update function has no more functionality and therefore has been deprecated.")}),B(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)}),B(this,"dispose",()=>{var o,l,p,u,d,w;(o=this.domElement)==null||o.removeEventListener("pointerdown",this.onPointerDown),(l=this.domElement)==null||l.removeEventListener("pointermove",this.onPointerHover),(u=(p=this.domElement)==null?void 0:p.ownerDocument)==null||u.removeEventListener("pointermove",this.onPointerMove),(w=(d=this.domElement)==null?void 0:d.ownerDocument)==null||w.removeEventListener("pointerup",this.onPointerUp),this.traverse(_=>{const y=_;y.geometry&&y.geometry.dispose(),y.material&&y.material.dispose()})}),this.domElement=i,this.camera=n,this.gizmo=new ha,this.add(this.gizmo),this.plane=new ua,this.add(this.plane);const s=(o,l)=>{let p=l;Object.defineProperty(this,o,{get:function(){return p!==void 0?p:l},set:function(u){p!==u&&(p=u,this.plane[o]=u,this.gizmo[o]=u,this.dispatchEvent({type:o+"-changed",value:u}),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),i!==void 0&&this.connect(i)}}class ha extends f.Object3D{constructor(){super(),B(this,"isTransformControlsGizmo",!0),B(this,"type","TransformControlsGizmo"),B(this,"tempVector",new f.Vector3(0,0,0)),B(this,"tempEuler",new f.Euler),B(this,"alignVector",new f.Vector3(0,1,0)),B(this,"zeroVector",new f.Vector3(0,0,0)),B(this,"lookAtMatrix",new f.Matrix4),B(this,"tempQuaternion",new f.Quaternion),B(this,"tempQuaternion2",new f.Quaternion),B(this,"identityQuaternion",new f.Quaternion),B(this,"unitX",new f.Vector3(1,0,0)),B(this,"unitY",new f.Vector3(0,1,0)),B(this,"unitZ",new f.Vector3(0,0,1)),B(this,"gizmo"),B(this,"picker"),B(this,"helper"),B(this,"rotationAxis",new f.Vector3),B(this,"cameraPosition",new f.Vector3),B(this,"worldPositionStart",new f.Vector3),B(this,"worldQuaternionStart",new f.Quaternion),B(this,"worldPosition",new f.Vector3),B(this,"worldQuaternion",new f.Quaternion),B(this,"eye",new f.Vector3),B(this,"camera",null),B(this,"enabled",!0),B(this,"axis",null),B(this,"mode","translate"),B(this,"space","world"),B(this,"size",1),B(this,"dragging",!1),B(this,"showX",!0),B(this,"showY",!0),B(this,"showZ",!0),B(this,"updateMatrixWorld",()=>{let ve=this.space;this.mode==="scale"&&(ve="local");const ce=ve==="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 se=[];se=se.concat(this.picker[this.mode].children),se=se.concat(this.gizmo[this.mode].children),se=se.concat(this.helper[this.mode].children);for(let ge=0;ge<se.length;ge++){const L=se[ge];L.visible=!0,L.rotation.set(0,0,0),L.position.copy(this.worldPosition);let pe;if(this.camera.isOrthographicCamera?pe=(this.camera.top-this.camera.bottom)/this.camera.zoom:pe=this.worldPosition.distanceTo(this.cameraPosition)*Math.min(1.9*Math.tan(Math.PI*this.camera.fov/360)/this.camera.zoom,7),L.scale.set(1,1,1).multiplyScalar(pe*this.size/7),L.tag==="helper"){L.visible=!1,L.name==="AXIS"?(L.position.copy(this.worldPositionStart),L.visible=!!this.axis,this.axis==="X"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,0)),L.quaternion.copy(ce).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(ce).dot(this.eye))>.9&&(L.visible=!1)),this.axis==="Y"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,Math.PI/2)),L.quaternion.copy(ce).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(ce).dot(this.eye))>.9&&(L.visible=!1)),this.axis==="Z"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0)),L.quaternion.copy(ce).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(ce).dot(this.eye))>.9&&(L.visible=!1)),this.axis==="XYZE"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0)),this.alignVector.copy(this.rotationAxis),L.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.zeroVector,this.alignVector,this.unitY)),L.quaternion.multiply(this.tempQuaternion),L.visible=this.dragging),this.axis==="E"&&(L.visible=!1)):L.name==="START"?(L.position.copy(this.worldPositionStart),L.visible=this.dragging):L.name==="END"?(L.position.copy(this.worldPosition),L.visible=this.dragging):L.name==="DELTA"?(L.position.copy(this.worldPositionStart),L.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()),L.scale.copy(this.tempVector),L.visible=this.dragging):(L.quaternion.copy(ce),this.dragging?L.position.copy(this.worldPositionStart):L.position.copy(this.worldPosition),this.axis&&(L.visible=this.axis.search(L.name)!==-1));continue}L.quaternion.copy(ce),this.mode==="translate"||this.mode==="scale"?((L.name==="X"||L.name==="XYZX")&&Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(ce).dot(this.eye))>.99&&(L.scale.set(1e-10,1e-10,1e-10),L.visible=!1),(L.name==="Y"||L.name==="XYZY")&&Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(ce).dot(this.eye))>.99&&(L.scale.set(1e-10,1e-10,1e-10),L.visible=!1),(L.name==="Z"||L.name==="XYZZ")&&Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(ce).dot(this.eye))>.99&&(L.scale.set(1e-10,1e-10,1e-10),L.visible=!1),L.name==="XY"&&Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(ce).dot(this.eye))<.2&&(L.scale.set(1e-10,1e-10,1e-10),L.visible=!1),L.name==="YZ"&&Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(ce).dot(this.eye))<.2&&(L.scale.set(1e-10,1e-10,1e-10),L.visible=!1),L.name==="XZ"&&Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(ce).dot(this.eye))<.2&&(L.scale.set(1e-10,1e-10,1e-10),L.visible=!1),L.name.search("X")!==-1&&(this.alignVector.copy(this.unitX).applyQuaternion(ce).dot(this.eye)<0?L.tag==="fwd"?L.visible=!1:L.scale.x*=-1:L.tag==="bwd"&&(L.visible=!1)),L.name.search("Y")!==-1&&(this.alignVector.copy(this.unitY).applyQuaternion(ce).dot(this.eye)<0?L.tag==="fwd"?L.visible=!1:L.scale.y*=-1:L.tag==="bwd"&&(L.visible=!1)),L.name.search("Z")!==-1&&(this.alignVector.copy(this.unitZ).applyQuaternion(ce).dot(this.eye)<0?L.tag==="fwd"?L.visible=!1:L.scale.z*=-1:L.tag==="bwd"&&(L.visible=!1))):this.mode==="rotate"&&(this.tempQuaternion2.copy(ce),this.alignVector.copy(this.eye).applyQuaternion(this.tempQuaternion.copy(ce).invert()),L.name.search("E")!==-1&&L.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.eye,this.zeroVector,this.unitY)),L.name==="X"&&(this.tempQuaternion.setFromAxisAngle(this.unitX,Math.atan2(-this.alignVector.y,this.alignVector.z)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),L.quaternion.copy(this.tempQuaternion)),L.name==="Y"&&(this.tempQuaternion.setFromAxisAngle(this.unitY,Math.atan2(this.alignVector.x,this.alignVector.z)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),L.quaternion.copy(this.tempQuaternion)),L.name==="Z"&&(this.tempQuaternion.setFromAxisAngle(this.unitZ,Math.atan2(this.alignVector.y,this.alignVector.x)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),L.quaternion.copy(this.tempQuaternion))),L.visible=L.visible&&(L.name.indexOf("X")===-1||this.showX),L.visible=L.visible&&(L.name.indexOf("Y")===-1||this.showY),L.visible=L.visible&&(L.name.indexOf("Z")===-1||this.showZ),L.visible=L.visible&&(L.name.indexOf("E")===-1||this.showX&&this.showY&&this.showZ),L.material.tempOpacity=L.material.tempOpacity||L.material.opacity,L.material.tempColor=L.material.tempColor||L.material.color.clone(),L.material.color.copy(L.material.tempColor),L.material.opacity=L.material.tempOpacity,this.enabled?this.axis&&(L.name===this.axis?(L.material.opacity=1,L.material.color.lerp(new f.Color(1,1,1),.5)):this.axis.split("").some(function(De){return L.name===De})?(L.material.opacity=1,L.material.color.lerp(new f.Color(1,1,1),.5)):(L.material.opacity*=.25,L.material.color.lerp(new f.Color(1,1,1),.5))):(L.material.opacity*=.5,L.material.color.lerp(new f.Color(1,1,1),.5))}super.updateMatrixWorld()});const n=new f.MeshBasicMaterial({depthTest:!1,depthWrite:!1,transparent:!0,side:f.DoubleSide,fog:!1,toneMapped:!1}),i=new f.LineBasicMaterial({depthTest:!1,depthWrite:!1,transparent:!0,linewidth:1,fog:!1,toneMapped:!1}),s=n.clone();s.opacity=.15;const o=n.clone();o.opacity=.33;const l=n.clone();l.color.set(16711680);const p=n.clone();p.color.set(65280);const u=n.clone();u.color.set(255);const d=n.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),n.clone().color.set(16776960);const M=i.clone();M.color.set(16711680);const E=i.clone();E.color.set(65280);const V=i.clone();V.color.set(255);const I=i.clone();I.color.set(65535);const F=i.clone();F.color.set(16711935);const z=i.clone();z.color.set(16776960);const N=i.clone();N.color.set(7895160);const T=z.clone();T.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=(ve,ce)=>{const se=new f.BufferGeometry,ge=[];for(let L=0;L<=64*ce;++L)ge.push(0,Math.cos(L/32*Math.PI)*ve,Math.sin(L/32*Math.PI)*ve);return se.setAttribute("position",new f.Float32BufferAttribute(ge,3)),se},X=()=>{const ve=new f.BufferGeometry;return ve.setAttribute("position",new f.Float32BufferAttribute([0,0,0,1,1,1],3)),ve},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,p),[0,1,0],null,null,"fwd"],[new f.Mesh(Q,p),[0,1,0],[Math.PI,0,0],null,"bwd"],[new f.Line(U,E),null,[0,0,Math.PI/2]]],Z:[[new f.Mesh(Q,u),[0,0,1],[Math.PI/2,0,0],null,"fwd"],[new f.Mesh(Q,u),[0,0,1],[-Math.PI/2,0,0],null,"bwd"],[new f.Line(U,V),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,I),[0,.18,.3],[0,0,Math.PI/2],[.125,1,1]],[new f.Line(U,I),[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"]]},we={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),E),null,[0,0,-Math.PI/2]],[new f.Mesh(new f.OctahedronGeometry(.04,0),p),[0,0,.99],null,[3,1,1]]],Z:[[new f.Line(j(1,.5),V),null,[0,Math.PI/2,0]],[new f.Mesh(new f.OctahedronGeometry(.04,0),u),[.99,0,0],null,[1,3,1]]],E:[[new f.Line(j(1.25,1),T),null,[0,Math.PI/2,0]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),T),[1.17,0,0],[0,0,-Math.PI/2],[1,1,.001]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),T),[-1.17,0,0],[0,0,Math.PI/2],[1,1,.001]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),T),[0,-1.17,0],[Math.PI,0,0],[1,1,.001]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),T),[0,1.17,0],[0,0,0],[1,1,.001]]],XYZE:[[new f.Line(j(1,1),N),null,[0,Math.PI/2,0]]]},he={AXIS:[[new f.Line(U,o.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]]},fe={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)]]},de={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($,p),[0,.8,0]],[new f.Line(U,E),null,[0,0,Math.PI/2],[.8,1,1]]],Z:[[new f.Mesh($,u),[0,0,.8],[Math.PI/2,0,0]],[new f.Line(U,V),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,I),[0,.855,.98],[0,0,Math.PI/2],[.125,1,1]],[new f.Line(U,I),[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"]]},Pe=ve=>{const ce=new f.Object3D;for(let se in ve)for(let ge=ve[se].length;ge--;){const L=ve[se][ge][0].clone(),pe=ve[se][ge][1],De=ve[se][ge][2],Be=ve[se][ge][3],ye=ve[se][ge][4];L.name=se,L.tag=ye,pe&&L.position.set(pe[0],pe[1],pe[2]),De&&L.rotation.set(De[0],De[1],De[2]),Be&&L.scale.set(Be[0],Be[1],Be[2]),L.updateMatrix();const et=L.geometry.clone();et.applyMatrix4(L.matrix),L.geometry=et,L.renderOrder=1/0,L.position.set(0,0,0),L.rotation.set(0,0,0),L.scale.set(1,1,1),ce.add(L)}return ce};this.gizmo={},this.picker={},this.helper={},this.add(this.gizmo.translate=Pe(Y)),this.add(this.gizmo.rotate=Pe(we)),this.add(this.gizmo.scale=Pe(de)),this.add(this.picker.translate=Pe(Z)),this.add(this.picker.rotate=Pe(fe)),this.add(this.picker.scale=Pe(te)),this.add(this.helper.translate=Pe(ue)),this.add(this.helper.rotate=Pe(he)),this.add(this.helper.scale=Pe(q)),this.picker.translate.visible=!1,this.picker.rotate.visible=!1,this.picker.scale.visible=!1}}class ua 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})),B(this,"isTransformControlsPlane",!0),B(this,"type","TransformControlsPlane"),B(this,"unitX",new f.Vector3(1,0,0)),B(this,"unitY",new f.Vector3(0,1,0)),B(this,"unitZ",new f.Vector3(0,0,1)),B(this,"tempVector",new f.Vector3),B(this,"dirVector",new f.Vector3),B(this,"alignVector",new f.Vector3),B(this,"tempMatrix",new f.Matrix4),B(this,"identityQuaternion",new f.Quaternion),B(this,"cameraQuaternion",new f.Quaternion),B(this,"worldPosition",new f.Vector3),B(this,"worldQuaternion",new f.Quaternion),B(this,"eye",new f.Vector3),B(this,"axis",null),B(this,"mode","translate"),B(this,"space","world"),B(this,"updateMatrixWorld",()=>{let n=this.space;switch(this.position.copy(this.worldPosition),this.mode==="scale"&&(n="local"),this.unitX.set(1,0,0).applyQuaternion(n==="local"?this.worldQuaternion:this.identityQuaternion),this.unitY.set(0,1,0).applyQuaternion(n==="local"?this.worldQuaternion:this.identityQuaternion),this.unitZ.set(0,0,1).applyQuaternion(n==="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()})}}var da=Object.defineProperty,ma=(v,n,i)=>n in v?da(v,n,{enumerable:!0,configurable:!0,writable:!0,value:i}):v[n]=i,Ve=(v,n,i)=>(ma(v,typeof n!="symbol"?n+"":n,i),i);const gn=new f.Euler(0,0,0,"YXZ"),wn=new f.Vector3,fa={type:"change"},va={type:"lock"},ba={type:"unlock"},Er=Math.PI/2;class ls extends f.EventDispatcher{constructor(n,i){super(),Ve(this,"camera"),Ve(this,"domElement"),Ve(this,"isLocked"),Ve(this,"minPolarAngle"),Ve(this,"maxPolarAngle"),Ve(this,"pointerSpeed"),Ve(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;gn.setFromQuaternion(this.camera.quaternion),gn.y-=o*.002*this.pointerSpeed,gn.x-=l*.002*this.pointerSpeed,gn.x=Math.max(Er-this.maxPolarAngle,Math.min(Er-this.minPolarAngle,gn.x)),this.camera.quaternion.setFromEuler(gn),this.dispatchEvent(fa)}),Ve(this,"onPointerlockChange",()=>{this.domElement&&(this.domElement.ownerDocument.pointerLockElement===this.domElement?(this.dispatchEvent(va),this.isLocked=!0):(this.dispatchEvent(ba),this.isLocked=!1))}),Ve(this,"onPointerlockError",()=>{console.error("THREE.PointerLockControls: Unable to use Pointer Lock API")}),Ve(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))}),Ve(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))}),Ve(this,"dispose",()=>{this.disconnect()}),Ve(this,"getObject",()=>this.camera),Ve(this,"direction",new f.Vector3(0,0,-1)),Ve(this,"getDirection",s=>s.copy(this.direction).applyQuaternion(this.camera.quaternion)),Ve(this,"moveForward",s=>{wn.setFromMatrixColumn(this.camera.matrix,0),wn.crossVectors(this.camera.up,wn),this.camera.position.addScaledVector(wn,s)}),Ve(this,"moveRight",s=>{wn.setFromMatrixColumn(this.camera.matrix,0),this.camera.position.addScaledVector(wn,s)}),Ve(this,"lock",()=>{this.domElement&&this.domElement.requestPointerLock()}),Ve(this,"unlock",()=>{this.domElement&&this.domElement.ownerDocument.exitPointerLock()}),this.camera=n,this.domElement=i,this.isLocked=!1,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.pointerSpeed=1,i&&this.connect(i)}}var ga=Object.defineProperty,wa=(v,n,i)=>n in v?ga(v,n,{enumerable:!0,configurable:!0,writable:!0,value:i}):v[n]=i,ne=(v,n,i)=>(wa(v,typeof n!="symbol"?n+"":n,i),i);const Or=(v,n)=>(v%n+n)%n;class Br extends f.EventDispatcher{constructor(n,i){super(),ne(this,"object"),ne(this,"domElement"),ne(this,"enabled",!0),ne(this,"target",new f.Vector3),ne(this,"minDistance",0),ne(this,"maxDistance",1/0),ne(this,"minZoom",0),ne(this,"maxZoom",1/0),ne(this,"minPolarAngle",0),ne(this,"maxPolarAngle",Math.PI),ne(this,"minAzimuthAngle",-1/0),ne(this,"maxAzimuthAngle",1/0),ne(this,"enableDamping",!1),ne(this,"dampingFactor",.05),ne(this,"enableZoom",!0),ne(this,"zoomSpeed",1),ne(this,"enableRotate",!0),ne(this,"rotateSpeed",1),ne(this,"enablePan",!0),ne(this,"panSpeed",1),ne(this,"screenSpacePanning",!0),ne(this,"keyPanSpeed",7),ne(this,"autoRotate",!1),ne(this,"autoRotateSpeed",2),ne(this,"reverseOrbit",!1),ne(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),ne(this,"mouseButtons",{LEFT:f.MOUSE.ROTATE,MIDDLE:f.MOUSE.DOLLY,RIGHT:f.MOUSE.PAN}),ne(this,"touches",{ONE:f.TOUCH.ROTATE,TWO:f.TOUCH.DOLLY_PAN}),ne(this,"target0"),ne(this,"position0"),ne(this,"zoom0"),ne(this,"_domElementKeyEvents",null),ne(this,"getPolarAngle"),ne(this,"getAzimuthalAngle"),ne(this,"setPolarAngle"),ne(this,"setAzimuthalAngle"),ne(this,"getDistance"),ne(this,"listenToKeyEvents"),ne(this,"saveState"),ne(this,"reset"),ne(this,"update"),ne(this,"connect"),ne(this,"dispose"),this.object=n,this.domElement=i,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.getPolarAngle=()=>_.phi,this.getAzimuthalAngle=()=>_.theta,this.setPolarAngle=D=>{let K=Or(D,2*Math.PI),ee=_.phi;ee<0&&(ee+=2*Math.PI),K<0&&(K+=2*Math.PI);let re=Math.abs(K-ee);2*Math.PI-re<re&&(K<ee?K+=2*Math.PI:ee+=2*Math.PI),y.phi=K-ee,s.update()},this.setAzimuthalAngle=D=>{let K=Or(D,2*Math.PI),ee=_.theta;ee<0&&(ee+=2*Math.PI),K<0&&(K+=2*Math.PI);let re=Math.abs(K-ee);2*Math.PI-re<re&&(K<ee?K+=2*Math.PI:ee+=2*Math.PI),y.theta=K-ee,s.update()},this.getDistance=()=>s.object.position.distanceTo(s.target),this.listenToKeyEvents=D=>{D.addEventListener("keydown",dt),this._domElementKeyEvents=D},this.saveState=()=>{s.target0.copy(s.target),s.position0.copy(s.object.position),s.zoom0=s.object.zoom},this.reset=()=>{s.target.copy(s.target0),s.object.position.copy(s.position0),s.object.zoom=s.zoom0,s.object.updateProjectionMatrix(),s.dispatchEvent(o),s.update(),d=u.NONE},this.update=(()=>{const D=new f.Vector3,K=new f.Quaternion().setFromUnitVectors(n.up,new f.Vector3(0,1,0)),ee=K.clone().invert(),re=new f.Vector3,Ce=new f.Quaternion,Te=2*Math.PI;return function(){const Jt=s.object.position;D.copy(Jt).sub(s.target),D.applyQuaternion(K),_.setFromVector3(D),s.autoRotate&&d===u.NONE&&ue(Y()),s.enableDamping?(_.theta+=y.theta*s.dampingFactor,_.phi+=y.phi*s.dampingFactor):(_.theta+=y.theta,_.phi+=y.phi);let ze=s.minAzimuthAngle,je=s.maxAzimuthAngle;return isFinite(ze)&&isFinite(je)&&(ze<-Math.PI?ze+=Te:ze>Math.PI&&(ze-=Te),je<-Math.PI?je+=Te:je>Math.PI&&(je-=Te),ze<=je?_.theta=Math.max(ze,Math.min(je,_.theta)):_.theta=_.theta>(ze+je)/2?Math.max(ze,_.theta):Math.min(je,_.theta)),_.phi=Math.max(s.minPolarAngle,Math.min(s.maxPolarAngle,_.phi)),_.makeSafe(),_.radius*=C,_.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(ee),Jt.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)),C=1,E||re.distanceToSquared(s.object.position)>w||8*(1-Ce.dot(s.object.quaternion))>w?(s.dispatchEvent(o),re.copy(s.object.position),Ce.copy(s.object.quaternion),E=!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",Wt),s.domElement.addEventListener("pointerdown",tt),s.domElement.addEventListener("pointercancel",Pn),s.domElement.addEventListener("wheel",Mn)},this.dispose=()=>{var D,K,ee,re,Ce,Te;(D=s.domElement)==null||D.removeEventListener("contextmenu",Wt),(K=s.domElement)==null||K.removeEventListener("pointerdown",tt),(ee=s.domElement)==null||ee.removeEventListener("pointercancel",Pn),(re=s.domElement)==null||re.removeEventListener("wheel",Mn),(Ce=s.domElement)==null||Ce.ownerDocument.removeEventListener("pointermove",Zt),(Te=s.domElement)==null||Te.ownerDocument.removeEventListener("pointerup",ct),s._domElementKeyEvents!==null&&s._domElementKeyEvents.removeEventListener("keydown",dt)};const s=this,o={type:"change"},l={type:"start"},p={type:"end"},u={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let d=u.NONE;const w=1e-6,_=new f.Spherical,y=new f.Spherical;let C=1;const M=new f.Vector3;let E=!1;const V=new f.Vector2,I=new f.Vector2,F=new f.Vector2,z=new f.Vector2,N=new f.Vector2,T=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 we(D){s.reverseOrbit?y.phi+=D:y.phi-=D}const he=(()=>{const D=new f.Vector3;return function(ee,re){D.setFromMatrixColumn(re,0),D.multiplyScalar(-ee),M.add(D)}})(),fe=(()=>{const D=new f.Vector3;return function(ee,re){s.screenSpacePanning===!0?D.setFromMatrixColumn(re,1):(D.setFromMatrixColumn(re,0),D.crossVectors(s.object.up,D)),D.multiplyScalar(ee),M.add(D)}})(),de=(()=>{const D=new f.Vector3;return function(ee,re){const Ce=s.domElement;if(Ce&&s.object instanceof f.PerspectiveCamera&&s.object.isPerspectiveCamera){const Te=s.object.position;D.copy(Te).sub(s.target);let Tt=D.length();Tt*=Math.tan(s.object.fov/2*Math.PI/180),he(2*ee*Tt/Ce.clientHeight,s.object.matrix),fe(2*re*Tt/Ce.clientHeight,s.object.matrix)}else Ce&&s.object instanceof f.OrthographicCamera&&s.object.isOrthographicCamera?(he(ee*(s.object.right-s.object.left)/s.object.zoom/Ce.clientWidth,s.object.matrix),fe(re*(s.object.top-s.object.bottom)/s.object.zoom/Ce.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?C/=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(),E=!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?C*=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(),E=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),s.enableZoom=!1)}function Pe(D){V.set(D.clientX,D.clientY)}function ve(D){Q.set(D.clientX,D.clientY)}function ce(D){z.set(D.clientX,D.clientY)}function se(D){I.set(D.clientX,D.clientY),F.subVectors(I,V).multiplyScalar(s.rotateSpeed);const K=s.domElement;K&&(ue(2*Math.PI*F.x/K.clientHeight),we(2*Math.PI*F.y/K.clientHeight)),V.copy(I),s.update()}function ge(D){$.set(D.clientX,D.clientY),U.subVectors($,Q),U.y>0?te(Z()):U.y<0&&q(Z()),Q.copy($),s.update()}function L(D){N.set(D.clientX,D.clientY),T.subVectors(N,z).multiplyScalar(s.panSpeed),de(T.x,T.y),z.copy(N),s.update()}function pe(D){D.deltaY<0?q(Z()):D.deltaY>0&&te(Z()),s.update()}function De(D){let K=!1;switch(D.code){case s.keys.UP:de(0,s.keyPanSpeed),K=!0;break;case s.keys.BOTTOM:de(0,-s.keyPanSpeed),K=!0;break;case s.keys.LEFT:de(s.keyPanSpeed,0),K=!0;break;case s.keys.RIGHT:de(-s.keyPanSpeed,0),K=!0;break}K&&(D.preventDefault(),s.update())}function Be(){if(j.length==1)V.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);V.set(D,K)}}function ye(){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 et(){const D=j[0].pageX-j[1].pageX,K=j[0].pageY-j[1].pageY,ee=Math.sqrt(D*D+K*K);Q.set(0,ee)}function xn(){s.enableZoom&&et(),s.enablePan&&ye()}function Ke(){s.enableZoom&&et(),s.enableRotate&&Be()}function Cn(D){if(j.length==1)I.set(D.pageX,D.pageY);else{const ee=_t(D),re=.5*(D.pageX+ee.x),Ce=.5*(D.pageY+ee.y);I.set(re,Ce)}F.subVectors(I,V).multiplyScalar(s.rotateSpeed);const K=s.domElement;K&&(ue(2*Math.PI*F.x/K.clientHeight),we(2*Math.PI*F.y/K.clientHeight)),V.copy(I)}function Qt(D){if(j.length==1)N.set(D.pageX,D.pageY);else{const K=_t(D),ee=.5*(D.pageX+K.x),re=.5*(D.pageY+K.y);N.set(ee,re)}T.subVectors(N,z).multiplyScalar(s.panSpeed),de(T.x,T.y),z.copy(N)}function lt(D){const K=_t(D),ee=D.pageX-K.x,re=D.pageY-K.y,Ce=Math.sqrt(ee*ee+re*re);$.set(0,Ce),U.set(0,Math.pow($.y/Q.y,s.zoomSpeed)),te(U.y),Q.copy($)}function gt(D){s.enableZoom&&lt(D),s.enablePan&&Qt(D)}function Fe(D){s.enableZoom&&lt(D),s.enableRotate&&Cn(D)}function tt(D){var K,ee;s.enabled!==!1&&(j.length===0&&((K=s.domElement)==null||K.ownerDocument.addEventListener("pointermove",Zt),(ee=s.domElement)==null||ee.ownerDocument.addEventListener("pointerup",ct)),Sn(D),D.pointerType==="touch"?wt(D):qn(D))}function Zt(D){s.enabled!==!1&&(D.pointerType==="touch"?An(D):kn(D))}function ct(D){var K,ee,re;mt(D),j.length===0&&((K=s.domElement)==null||K.releasePointerCapture(D.pointerId),(ee=s.domElement)==null||ee.ownerDocument.removeEventListener("pointermove",Zt),(re=s.domElement)==null||re.ownerDocument.removeEventListener("pointerup",ct)),s.dispatchEvent(p),d=u.NONE}function Pn(D){mt(D)}function qn(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;ve(D),d=u.DOLLY;break;case f.MOUSE.ROTATE:if(D.ctrlKey||D.metaKey||D.shiftKey){if(s.enablePan===!1)return;ce(D),d=u.PAN}else{if(s.enableRotate===!1)return;Pe(D),d=u.ROTATE}break;case f.MOUSE.PAN:if(D.ctrlKey||D.metaKey||D.shiftKey){if(s.enableRotate===!1)return;Pe(D),d=u.ROTATE}else{if(s.enablePan===!1)return;ce(D),d=u.PAN}break;default:d=u.NONE}d!==u.NONE&&s.dispatchEvent(l)}function kn(D){if(s.enabled!==!1)switch(d){case u.ROTATE:if(s.enableRotate===!1)return;se(D);break;case u.DOLLY:if(s.enableZoom===!1)return;ge(D);break;case u.PAN:if(s.enablePan===!1)return;L(D);break}}function Mn(D){s.enabled===!1||s.enableZoom===!1||d!==u.NONE&&d!==u.ROTATE||(D.preventDefault(),s.dispatchEvent(l),pe(D),s.dispatchEvent(p))}function dt(D){s.enabled===!1||s.enablePan===!1||De(D)}function wt(D){switch(pt(D),j.length){case 1:switch(s.touches.ONE){case f.TOUCH.ROTATE:if(s.enableRotate===!1)return;Be(),d=u.TOUCH_ROTATE;break;case f.TOUCH.PAN:if(s.enablePan===!1)return;ye(),d=u.TOUCH_PAN;break;default:d=u.NONE}break;case 2:switch(s.touches.TWO){case f.TOUCH.DOLLY_PAN:if(s.enableZoom===!1&&s.enablePan===!1)return;xn(),d=u.TOUCH_DOLLY_PAN;break;case f.TOUCH.DOLLY_ROTATE:if(s.enableZoom===!1&&s.enableRotate===!1)return;Ke(),d=u.TOUCH_DOLLY_ROTATE;break;default:d=u.NONE}break;default:d=u.NONE}d!==u.NONE&&s.dispatchEvent(l)}function An(D){switch(pt(D),d){case u.TOUCH_ROTATE:if(s.enableRotate===!1)return;Cn(D),s.update();break;case u.TOUCH_PAN:if(s.enablePan===!1)return;Qt(D),s.update();break;case u.TOUCH_DOLLY_PAN:if(s.enableZoom===!1&&s.enablePan===!1)return;gt(D),s.update();break;case u.TOUCH_DOLLY_ROTATE:if(s.enableZoom===!1&&s.enableRotate===!1)return;Fe(D),s.update();break;default:d=u.NONE}}function Wt(D){s.enabled!==!1&&D.preventDefault()}function Sn(D){j.push(D)}function mt(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 pt(D){let K=X[D.pointerId];K===void 0&&(K=new f.Vector2,X[D.pointerId]=K),K.set(D.pageX,D.pageY)}function _t(D){const K=D.pointerId===j[0].pointerId?j[1]:j[0];return X[K.pointerId]}i!==void 0&&this.connect(i),this.update()}}class _a extends Br{constructor(n,i){super(n,i),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 ya extends f.Loader{constructor(n){super(n),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(i){return new Ma(i)}),this.register(function(i){return new Ea(i)}),this.register(function(i){return new Oa(i)}),this.register(function(i){return new Ba(i)}),this.register(function(i){return new Sa(i)}),this.register(function(i){return new La(i)}),this.register(function(i){return new Va(i)}),this.register(function(i){return new Da(i)}),this.register(function(i){return new ka(i)}),this.register(function(i){return new Ia(i)}),this.register(function(i){return new Aa(i)}),this.register(function(i){return new Ta(i)}),this.register(function(i){return new Ca(i)}),this.register(function(i){return new Na(i)}),this.register(function(i){return new Fa(i)})}load(n,i,s,o){const l=this;let p;this.resourcePath!==""?p=this.resourcePath:this.path!==""?p=this.path:p=f.LoaderUtils.extractUrlBase(n),this.manager.itemStart(n);const u=function(w){o?o(w):console.error(w),l.manager.itemError(n),l.manager.itemEnd(n)},d=new f.FileLoader(this.manager);d.setPath(this.path),d.setResponseType("arraybuffer"),d.setRequestHeader(this.requestHeader),d.setWithCredentials(this.withCredentials),d.load(n,function(w){try{l.parse(w,p,function(_){i(_),l.manager.itemEnd(n)},u)}catch(_){u(_)}},s,u)}setDRACOLoader(n){return this.dracoLoader=n,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(n){return this.ktx2Loader=n,this}setMeshoptDecoder(n){return this.meshoptDecoder=n,this}register(n){return this.pluginCallbacks.indexOf(n)===-1&&this.pluginCallbacks.push(n),this}unregister(n){return this.pluginCallbacks.indexOf(n)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(n),1),this}parse(n,i,s,o){let l;const p={},u={};if(typeof n=="string")l=JSON.parse(n);else if(n instanceof ArrayBuffer)if(f.LoaderUtils.decodeText(new Uint8Array(n.slice(0,4)))===Nr){try{p[ae.KHR_BINARY_GLTF]=new za(n)}catch(_){o&&o(_);return}l=JSON.parse(p[ae.KHR_BINARY_GLTF].content)}else l=JSON.parse(f.LoaderUtils.decodeText(new Uint8Array(n)));else l=n;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 Ja(l,{path:i||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);u[_.name]=_,p[_.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:p[_]=new Pa;break;case ae.KHR_DRACO_MESH_COMPRESSION:p[_]=new ja(l,this.dracoLoader);break;case ae.KHR_TEXTURE_TRANSFORM:p[_]=new Ua;break;case ae.KHR_MESH_QUANTIZATION:p[_]=new Ra;break;default:y.indexOf(_)>=0&&u[_]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+_+'".')}}d.setExtensions(p),d.setPlugins(u),d.parse(s,o)}parseAsync(n,i){const s=this;return new Promise(function(o,l){s.parse(n,i,o,l)})}}function xa(){let v={};return{get:function(n){return v[n]},add:function(n,i){v[n]=i},remove:function(n){delete v[n]},removeAll:function(){v={}}}}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_ANISOTROPY:"KHR_materials_anisotropy",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 Ca{constructor(n){this.parser=n,this.name=ae.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const n=this.parser,i=this.parser.json.nodes||[];for(let s=0,o=i.length;s<o;s++){const l=i[s];l.extensions&&l.extensions[this.name]&&l.extensions[this.name].light!==void 0&&n._addNodeRef(this.cache,l.extensions[this.name].light)}}_loadLight(n){const i=this.parser,s="light:"+n;let o=i.cache.get(s);if(o)return o;const l=i.json,d=((l.extensions&&l.extensions[this.name]||{}).lights||[])[n];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,It(w,d),d.intensity!==void 0&&(w.intensity=d.intensity),w.name=i.createUniqueName(d.name||"light_"+n),o=Promise.resolve(w),i.cache.add(s,o),o}getDependency(n,i){if(n==="light")return this._loadLight(i)}createNodeAttachment(n){const i=this,s=this.parser,l=s.json.nodes[n],u=(l.extensions&&l.extensions[this.name]||{}).light;return u===void 0?null:this._loadLight(u).then(function(d){return s._getNodeRef(i.cache,u,d)})}}class Pa{constructor(){this.name=ae.KHR_MATERIALS_UNLIT}getMaterialType(){return f.MeshBasicMaterial}extendParams(n,i,s){const o=[];n.color=new f.Color(1,1,1),n.opacity=1;const l=i.pbrMetallicRoughness;if(l){if(Array.isArray(l.baseColorFactor)){const p=l.baseColorFactor;n.color.fromArray(p),n.opacity=p[3]}l.baseColorTexture!==void 0&&o.push(s.assignTexture(n,"map",l.baseColorTexture,3001))}return Promise.all(o)}}class ka{constructor(n){this.parser=n,this.name=ae.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(n,i){const o=this.parser.json.materials[n];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=o.extensions[this.name].emissiveStrength;return l!==void 0&&(i.emissiveIntensity=l),Promise.resolve()}}class Ma{constructor(n){this.parser=n,this.name=ae.KHR_MATERIALS_CLEARCOAT}getMaterialType(n){const s=this.parser.json.materials[n];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(n,i){const s=this.parser,o=s.json.materials[n];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[],p=o.extensions[this.name];if(p.clearcoatFactor!==void 0&&(i.clearcoat=p.clearcoatFactor),p.clearcoatTexture!==void 0&&l.push(s.assignTexture(i,"clearcoatMap",p.clearcoatTexture)),p.clearcoatRoughnessFactor!==void 0&&(i.clearcoatRoughness=p.clearcoatRoughnessFactor),p.clearcoatRoughnessTexture!==void 0&&l.push(s.assignTexture(i,"clearcoatRoughnessMap",p.clearcoatRoughnessTexture)),p.clearcoatNormalTexture!==void 0&&(l.push(s.assignTexture(i,"clearcoatNormalMap",p.clearcoatNormalTexture)),p.clearcoatNormalTexture.scale!==void 0)){const u=p.clearcoatNormalTexture.scale;i.clearcoatNormalScale=new f.Vector2(u,u)}return Promise.all(l)}}class Aa{constructor(n){this.parser=n,this.name=ae.KHR_MATERIALS_IRIDESCENCE}getMaterialType(n){const s=this.parser.json.materials[n];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(n,i){const s=this.parser,o=s.json.materials[n];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[],p=o.extensions[this.name];return p.iridescenceFactor!==void 0&&(i.iridescence=p.iridescenceFactor),p.iridescenceTexture!==void 0&&l.push(s.assignTexture(i,"iridescenceMap",p.iridescenceTexture)),p.iridescenceIor!==void 0&&(i.iridescenceIOR=p.iridescenceIor),i.iridescenceThicknessRange===void 0&&(i.iridescenceThicknessRange=[100,400]),p.iridescenceThicknessMinimum!==void 0&&(i.iridescenceThicknessRange[0]=p.iridescenceThicknessMinimum),p.iridescenceThicknessMaximum!==void 0&&(i.iridescenceThicknessRange[1]=p.iridescenceThicknessMaximum),p.iridescenceThicknessTexture!==void 0&&l.push(s.assignTexture(i,"iridescenceThicknessMap",p.iridescenceThicknessTexture)),Promise.all(l)}}class Sa{constructor(n){this.parser=n,this.name=ae.KHR_MATERIALS_SHEEN}getMaterialType(n){const s=this.parser.json.materials[n];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(n,i){const s=this.parser,o=s.json.materials[n];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[];i.sheenColor=new f.Color(0,0,0),i.sheenRoughness=0,i.sheen=1;const p=o.extensions[this.name];return p.sheenColorFactor!==void 0&&i.sheenColor.fromArray(p.sheenColorFactor),p.sheenRoughnessFactor!==void 0&&(i.sheenRoughness=p.sheenRoughnessFactor),p.sheenColorTexture!==void 0&&l.push(s.assignTexture(i,"sheenColorMap",p.sheenColorTexture,3001)),p.sheenRoughnessTexture!==void 0&&l.push(s.assignTexture(i,"sheenRoughnessMap",p.sheenRoughnessTexture)),Promise.all(l)}}class La{constructor(n){this.parser=n,this.name=ae.KHR_MATERIALS_TRANSMISSION}getMaterialType(n){const s=this.parser.json.materials[n];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(n,i){const s=this.parser,o=s.json.materials[n];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[],p=o.extensions[this.name];return p.transmissionFactor!==void 0&&(i.transmission=p.transmissionFactor),p.transmissionTexture!==void 0&&l.push(s.assignTexture(i,"transmissionMap",p.transmissionTexture)),Promise.all(l)}}class Va{constructor(n){this.parser=n,this.name=ae.KHR_MATERIALS_VOLUME}getMaterialType(n){const s=this.parser.json.materials[n];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(n,i){const s=this.parser,o=s.json.materials[n];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[],p=o.extensions[this.name];i.thickness=p.thicknessFactor!==void 0?p.thicknessFactor:0,p.thicknessTexture!==void 0&&l.push(s.assignTexture(i,"thicknessMap",p.thicknessTexture)),i.attenuationDistance=p.attenuationDistance||1/0;const u=p.attenuationColor||[1,1,1];return i.attenuationColor=new f.Color(u[0],u[1],u[2]),Promise.all(l)}}class Da{constructor(n){this.parser=n,this.name=ae.KHR_MATERIALS_IOR}getMaterialType(n){const s=this.parser.json.materials[n];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(n,i){const o=this.parser.json.materials[n];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=o.extensions[this.name];return i.ior=l.ior!==void 0?l.ior:1.5,Promise.resolve()}}class Ia{constructor(n){this.parser=n,this.name=ae.KHR_MATERIALS_SPECULAR}getMaterialType(n){const s=this.parser.json.materials[n];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(n,i){const s=this.parser,o=s.json.materials[n];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[],p=o.extensions[this.name];i.specularIntensity=p.specularFactor!==void 0?p.specularFactor:1,p.specularTexture!==void 0&&l.push(s.assignTexture(i,"specularIntensityMap",p.specularTexture));const u=p.specularColorFactor||[1,1,1];return i.specularColor=new f.Color(u[0],u[1],u[2]),p.specularColorTexture!==void 0&&l.push(s.assignTexture(i,"specularColorMap",p.specularColorTexture,3001)),Promise.all(l)}}class Ta{constructor(n){this.parser=n,this.name=ae.KHR_MATERIALS_ANISOTROPY}getMaterialType(n){const s=this.parser.json.materials[n];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(n,i){const s=this.parser,o=s.json.materials[n];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[],p=o.extensions[this.name];return p.anisotropyStrength!==void 0&&(i.anisotropy=p.anisotropyStrength),p.anisotropyRotation!==void 0&&(i.anisotropyRotation=p.anisotropyRotation),p.anisotropyTexture!==void 0&&l.push(s.assignTexture(i,"anisotropyMap",p.anisotropyTexture)),Promise.all(l)}}class Ea{constructor(n){this.parser=n,this.name=ae.KHR_TEXTURE_BASISU}loadTexture(n){const i=this.parser,s=i.json,o=s.textures[n];if(!o.extensions||!o.extensions[this.name])return null;const l=o.extensions[this.name],p=i.options.ktx2Loader;if(!p){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 i.loadTextureImage(n,l.source,p)}}class Oa{constructor(n){this.parser=n,this.name=ae.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(n){const i=this.name,s=this.parser,o=s.json,l=o.textures[n];if(!l.extensions||!l.extensions[i])return null;const p=l.extensions[i],u=o.images[p.source];let d=s.textureLoader;if(u.uri){const w=s.options.manager.getHandler(u.uri);w!==null&&(d=w)}return this.detectSupport().then(function(w){if(w)return s.loadTextureImage(n,p.source,d);if(o.extensionsRequired&&o.extensionsRequired.indexOf(i)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return s.loadTexture(n)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(n){const i=new Image;i.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",i.onload=i.onerror=function(){n(i.height===1)}})),this.isSupported}}class Ba{constructor(n){this.parser=n,this.name=ae.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(n){const i=this.name,s=this.parser,o=s.json,l=o.textures[n];if(!l.extensions||!l.extensions[i])return null;const p=l.extensions[i],u=o.images[p.source];let d=s.textureLoader;if(u.uri){const w=s.options.manager.getHandler(u.uri);w!==null&&(d=w)}return this.detectSupport().then(function(w){if(w)return s.loadTextureImage(n,p.source,d);if(o.extensionsRequired&&o.extensionsRequired.indexOf(i)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return s.loadTexture(n)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(n){const i=new Image;i.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",i.onload=i.onerror=function(){n(i.height===1)}})),this.isSupported}}class Na{constructor(n){this.name=ae.EXT_MESHOPT_COMPRESSION,this.parser=n}loadBufferView(n){const i=this.parser.json,s=i.bufferViews[n];if(s.extensions&&s.extensions[this.name]){const o=s.extensions[this.name],l=this.parser.getDependency("buffer",o.buffer),p=this.parser.options.meshoptDecoder;if(!p||!p.supported){if(i.extensionsRequired&&i.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return l.then(function(u){const d=o.byteOffset||0,w=o.byteLength||0,_=o.count,y=o.byteStride,C=new Uint8Array(u,d,w);return p.decodeGltfBufferAsync?p.decodeGltfBufferAsync(_,y,C,o.mode,o.filter).then(function(M){return M.buffer}):p.ready.then(function(){const M=new ArrayBuffer(_*y);return p.decodeGltfBuffer(new Uint8Array(M),_,y,C,o.mode,o.filter),M})})}else return null}}class Fa{constructor(n){this.name=ae.EXT_MESH_GPU_INSTANCING,this.parser=n}createNodeMesh(n){const i=this.parser.json,s=i.nodes[n];if(!s.extensions||!s.extensions[this.name]||s.mesh===void 0)return null;const o=i.meshes[s.mesh];for(const w of o.primitives)if(w.mode!==Je.TRIANGLES&&w.mode!==Je.TRIANGLE_STRIP&&w.mode!==Je.TRIANGLE_FAN&&w.mode!==void 0)return null;const p=s.extensions[this.name].attributes,u=[],d={};for(const w in p)u.push(this.parser.getDependency("accessor",p[w]).then(_=>(d[w]=_,d[w])));return u.length<1?null:(u.push(this.parser.createNodeMesh(n)),Promise.all(u).then(w=>{const _=w.pop(),y=_.isGroup?_.children:[_],C=w[0].count,M=[];for(const E of y){const V=new f.Matrix4,I=new f.Vector3,F=new f.Quaternion,z=new f.Vector3(1,1,1),N=new f.InstancedMesh(E.geometry,E.material,C);for(let T=0;T<C;T++)d.TRANSLATION&&I.fromBufferAttribute(d.TRANSLATION,T),d.ROTATION&&F.fromBufferAttribute(d.ROTATION,T),d.SCALE&&z.fromBufferAttribute(d.SCALE,T),N.setMatrixAt(T,V.compose(I,F,z));for(const T in d)T!=="TRANSLATION"&&T!=="ROTATION"&&T!=="SCALE"&&E.geometry.setAttribute(T,d[T]);f.Object3D.prototype.copy.call(N,E),this.parser.assignFinalMaterial(N),M.push(N)}return _.isGroup?(_.clear(),_.add(...M),_):M[0]}))}}const Nr="glTF",Xn=12,Fr={JSON:1313821514,BIN:5130562};class za{constructor(n){this.name=ae.KHR_BINARY_GLTF,this.content=null,this.body=null;const i=new DataView(n,0,Xn);if(this.header={magic:f.LoaderUtils.decodeText(new Uint8Array(n.slice(0,4))),version:i.getUint32(4,!0),length:i.getUint32(8,!0)},this.header.magic!==Nr)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-Xn,o=new DataView(n,Xn);let l=0;for(;l<s;){const p=o.getUint32(l,!0);l+=4;const u=o.getUint32(l,!0);if(l+=4,u===Fr.JSON){const d=new Uint8Array(n,Xn+l,p);this.content=f.LoaderUtils.decodeText(d)}else if(u===Fr.BIN){const d=Xn+l;this.body=n.slice(d,d+p)}l+=p}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class ja{constructor(n,i){if(!i)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=ae.KHR_DRACO_MESH_COMPRESSION,this.json=n,this.dracoLoader=i,this.dracoLoader.preload()}decodePrimitive(n,i){const s=this.json,o=this.dracoLoader,l=n.extensions[this.name].bufferView,p=n.extensions[this.name].attributes,u={},d={},w={};for(const _ in p){const y=ps[_]||_.toLowerCase();u[y]=p[_]}for(const _ in n.attributes){const y=ps[_]||_.toLowerCase();if(p[_]!==void 0){const C=s.accessors[n.attributes[_]],M=_n[C.componentType];w[y]=M.name,d[y]=C.normalized===!0}}return i.getDependency("bufferView",l).then(function(_){return new Promise(function(y){o.decodeDracoFile(_,function(C){for(const M in C.attributes){const E=C.attributes[M],V=d[M];V!==void 0&&(E.normalized=V)}y(C)},u,w)})})}}class Ua{constructor(){this.name=ae.KHR_TEXTURE_TRANSFORM}extendTexture(n,i){return(i.texCoord===void 0||i.texCoord===n.channel)&&i.offset===void 0&&i.rotation===void 0&&i.scale===void 0||(n=n.clone(),i.texCoord!==void 0&&(n.channel=i.texCoord),i.offset!==void 0&&n.offset.fromArray(i.offset),i.rotation!==void 0&&(n.rotation=i.rotation),i.scale!==void 0&&n.repeat.fromArray(i.scale),n.needsUpdate=!0),n}}class Ra{constructor(){this.name=ae.KHR_MESH_QUANTIZATION}}class zr extends f.Interpolant{constructor(n,i,s,o){super(n,i,s,o)}copySampleValue_(n){const i=this.resultBuffer,s=this.sampleValues,o=this.valueSize,l=n*o*3+o;for(let p=0;p!==o;p++)i[p]=s[l+p];return i}interpolate_(n,i,s,o){const l=this.resultBuffer,p=this.sampleValues,u=this.valueSize,d=u*2,w=u*3,_=o-i,y=(s-i)/_,C=y*y,M=C*y,E=n*w,V=E-w,I=-2*M+3*C,F=M-C,z=1-I,N=F-C+y;for(let T=0;T!==u;T++){const Q=p[V+T+u],$=p[V+T+d]*_,U=p[E+T+u],j=p[E+T]*_;l[T]=z*Q+N*$+I*U+F*j}return l}}const Ga=new f.Quaternion;class Ka extends zr{interpolate_(n,i,s,o){const l=super.interpolate_(n,i,s,o);return Ga.fromArray(l).normalize().toArray(l),l}}const Je={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},_n={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},jr={9728:f.NearestFilter,9729:f.LinearFilter,9984:f.NearestMipmapNearestFilter,9985:f.LinearMipmapNearestFilter,9986:f.NearestMipmapLinearFilter,9987:f.LinearMipmapLinearFilter},Ur={33071:f.ClampToEdgeWrapping,33648:f.MirroredRepeatWrapping,10497:f.RepeatWrapping},cs={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},ps={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"},Dt={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},$a={CUBICSPLINE:void 0,LINEAR:f.InterpolateLinear,STEP:f.InterpolateDiscrete},hs={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function Xa(v){return v.DefaultMaterial===void 0&&(v.DefaultMaterial=new f.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:f.FrontSide})),v.DefaultMaterial}function Xt(v,n,i){for(const s in i.extensions)v[s]===void 0&&(n.userData.gltfExtensions=n.userData.gltfExtensions||{},n.userData.gltfExtensions[s]=i.extensions[s])}function It(v,n){n.extras!==void 0&&(typeof n.extras=="object"?Object.assign(v.userData,n.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+n.extras))}function Ya(v,n,i){let s=!1,o=!1,l=!1;for(let w=0,_=n.length;w<_;w++){const y=n[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(v);const p=[],u=[],d=[];for(let w=0,_=n.length;w<_;w++){const y=n[w];if(s){const C=y.POSITION!==void 0?i.getDependency("accessor",y.POSITION):v.attributes.position;p.push(C)}if(o){const C=y.NORMAL!==void 0?i.getDependency("accessor",y.NORMAL):v.attributes.normal;u.push(C)}if(l){const C=y.COLOR_0!==void 0?i.getDependency("accessor",y.COLOR_0):v.attributes.color;d.push(C)}}return Promise.all([Promise.all(p),Promise.all(u),Promise.all(d)]).then(function(w){const _=w[0],y=w[1],C=w[2];return s&&(v.morphAttributes.position=_),o&&(v.morphAttributes.normal=y),l&&(v.morphAttributes.color=C),v.morphTargetsRelative=!0,v})}function qa(v,n){if(v.updateMorphTargets(),n.weights!==void 0)for(let i=0,s=n.weights.length;i<s;i++)v.morphTargetInfluences[i]=n.weights[i];if(n.extras&&Array.isArray(n.extras.targetNames)){const i=n.extras.targetNames;if(v.morphTargetInfluences.length===i.length){v.morphTargetDictionary={};for(let s=0,o=i.length;s<o;s++)v.morphTargetDictionary[i[s]]=s}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function Qa(v){let n;const i=v.extensions&&v.extensions[ae.KHR_DRACO_MESH_COMPRESSION];if(i?n="draco:"+i.bufferView+":"+i.indices+":"+us(i.attributes):n=v.indices+":"+us(v.attributes)+":"+v.mode,v.targets!==void 0)for(let s=0,o=v.targets.length;s<o;s++)n+=":"+us(v.targets[s]);return n}function us(v){let n="";const i=Object.keys(v).sort();for(let s=0,o=i.length;s<o;s++)n+=i[s]+":"+v[i[s]]+";";return n}function ds(v){switch(v){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 Za(v){return v.search(/\.jpe?g($|\?)/i)>0||v.search(/^data\:image\/jpeg/)===0?"image/jpeg":v.search(/\.webp($|\?)/i)>0||v.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const Wa=new f.Matrix4;class Ja{constructor(n={},i={}){this.json=n,this.extensions={},this.plugins={},this.options=i,this.cache=new xa,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(n){this.extensions=n}setPlugins(n){this.plugins=n}parse(n,i){const s=this,o=this.json,l=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(p){return p._markDefs&&p._markDefs()}),Promise.all(this._invokeAll(function(p){return p.beforeRoot&&p.beforeRoot()})).then(function(){return Promise.all([s.getDependencies("scene"),s.getDependencies("animation"),s.getDependencies("camera")])}).then(function(p){const u={scene:p[0][o.scene||0],scenes:p[0],animations:p[1],cameras:p[2],asset:o.asset,parser:s,userData:{}};Xt(l,u,o),It(u,o),Promise.all(s._invokeAll(function(d){return d.afterRoot&&d.afterRoot(u)})).then(function(){n(u)})}).catch(i)}_markDefs(){const n=this.json.nodes||[],i=this.json.skins||[],s=this.json.meshes||[];for(let o=0,l=i.length;o<l;o++){const p=i[o].joints;for(let u=0,d=p.length;u<d;u++)n[p[u]].isBone=!0}for(let o=0,l=n.length;o<l;o++){const p=n[o];p.mesh!==void 0&&(this._addNodeRef(this.meshCache,p.mesh),p.skin!==void 0&&(s[p.mesh].isSkinnedMesh=!0)),p.camera!==void 0&&this._addNodeRef(this.cameraCache,p.camera)}}_addNodeRef(n,i){i!==void 0&&(n.refs[i]===void 0&&(n.refs[i]=n.uses[i]=0),n.refs[i]++)}_getNodeRef(n,i,s){if(n.refs[i]<=1)return s;const o=s.clone(),l=(p,u)=>{const d=this.associations.get(p);d!=null&&this.associations.set(u,d);for(const[w,_]of p.children.entries())l(_,u.children[w])};return l(s,o),o.name+="_instance_"+n.uses[i]++,o}_invokeOne(n){const i=Object.values(this.plugins);i.push(this);for(let s=0;s<i.length;s++){const o=n(i[s]);if(o)return o}return null}_invokeAll(n){const i=Object.values(this.plugins);i.unshift(this);const s=[];for(let o=0;o<i.length;o++){const l=n(i[o]);l&&s.push(l)}return s}getDependency(n,i){const s=n+":"+i;let o=this.cache.get(s);if(!o){switch(n){case"scene":o=this.loadScene(i);break;case"node":o=this._invokeOne(function(l){return l.loadNode&&l.loadNode(i)});break;case"mesh":o=this._invokeOne(function(l){return l.loadMesh&&l.loadMesh(i)});break;case"accessor":o=this.loadAccessor(i);break;case"bufferView":o=this._invokeOne(function(l){return l.loadBufferView&&l.loadBufferView(i)});break;case"buffer":o=this.loadBuffer(i);break;case"material":o=this._invokeOne(function(l){return l.loadMaterial&&l.loadMaterial(i)});break;case"texture":o=this._invokeOne(function(l){return l.loadTexture&&l.loadTexture(i)});break;case"skin":o=this.loadSkin(i);break;case"animation":o=this._invokeOne(function(l){return l.loadAnimation&&l.loadAnimation(i)});break;case"camera":o=this.loadCamera(i);break;default:if(o=this._invokeOne(function(l){return l!=this&&l.getDependency&&l.getDependency(n,i)}),!o)throw new Error("Unknown type: "+n);break}this.cache.add(s,o)}return o}getDependencies(n){let i=this.cache.get(n);if(!i){const s=this,o=this.json[n+(n==="mesh"?"es":"s")]||[];i=Promise.all(o.map(function(l,p){return s.getDependency(n,p)})),this.cache.add(n,i)}return i}loadBuffer(n){const i=this.json.buffers[n],s=this.fileLoader;if(i.type&&i.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+i.type+" buffer type is not supported.");if(i.uri===void 0&&n===0)return Promise.resolve(this.extensions[ae.KHR_BINARY_GLTF].body);const o=this.options;return new Promise(function(l,p){s.load(f.LoaderUtils.resolveURL(i.uri,o.path),l,void 0,function(){p(new Error('THREE.GLTFLoader: Failed to load buffer "'+i.uri+'".'))})})}loadBufferView(n){const i=this.json.bufferViews[n];return this.getDependency("buffer",i.buffer).then(function(s){const o=i.byteLength||0,l=i.byteOffset||0;return s.slice(l,l+o)})}loadAccessor(n){const i=this,s=this.json,o=this.json.accessors[n];if(o.bufferView===void 0&&o.sparse===void 0){const p=cs[o.type],u=_n[o.componentType],d=o.normalized===!0,w=new u(o.count*p);return Promise.resolve(new f.BufferAttribute(w,p,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(p){const u=p[0],d=cs[o.type],w=_n[o.componentType],_=w.BYTES_PER_ELEMENT,y=_*d,C=o.byteOffset||0,M=o.bufferView!==void 0?s.bufferViews[o.bufferView].byteStride:void 0,E=o.normalized===!0;let V,I;if(M&&M!==y){const F=Math.floor(C/M),z="InterleavedBuffer:"+o.bufferView+":"+o.componentType+":"+F+":"+o.count;let N=i.cache.get(z);N||(V=new w(u,F*M,o.count*M/_),N=new f.InterleavedBuffer(V,M/_),i.cache.add(z,N)),I=new f.InterleavedBufferAttribute(N,d,C%M/_,E)}else u===null?V=new w(o.count*d):V=new w(u,C,o.count*d),I=new f.BufferAttribute(V,d,E);if(o.sparse!==void 0){const F=cs.SCALAR,z=_n[o.sparse.indices.componentType],N=o.sparse.indices.byteOffset||0,T=o.sparse.values.byteOffset||0,Q=new z(p[1],N,o.sparse.count*F),$=new w(p[2],T,o.sparse.count*d);u!==null&&(I=new f.BufferAttribute(I.array.slice(),I.itemSize,I.normalized));for(let U=0,j=Q.length;U<j;U++){const X=Q[U];if(I.setX(X,$[U*d]),d>=2&&I.setY(X,$[U*d+1]),d>=3&&I.setZ(X,$[U*d+2]),d>=4&&I.setW(X,$[U*d+3]),d>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return I})}loadTexture(n){const i=this.json,s=this.options,l=i.textures[n].source,p=i.images[l];let u=this.textureLoader;if(p.uri){const d=s.manager.getHandler(p.uri);d!==null&&(u=d)}return this.loadTextureImage(n,l,u)}loadTextureImage(n,i,s){const o=this,l=this.json,p=l.textures[n],u=l.images[i],d=(u.uri||u.bufferView)+":"+p.sampler;if(this.textureCache[d])return this.textureCache[d];const w=this.loadImageSource(i,s).then(function(_){_.flipY=!1,_.name=p.name||u.name||"",_.name===""&&typeof u.uri=="string"&&u.uri.startsWith("data:image/")===!1&&(_.name=u.uri);const C=(l.samplers||{})[p.sampler]||{};return _.magFilter=jr[C.magFilter]||f.LinearFilter,_.minFilter=jr[C.minFilter]||f.LinearMipmapLinearFilter,_.wrapS=Ur[C.wrapS]||f.RepeatWrapping,_.wrapT=Ur[C.wrapT]||f.RepeatWrapping,o.associations.set(_,{textures:n}),_}).catch(function(){return null});return this.textureCache[d]=w,w}loadImageSource(n,i){const s=this,o=this.json,l=this.options;if(this.sourceCache[n]!==void 0)return this.sourceCache[n].then(y=>y.clone());const p=o.images[n],u=self.URL||self.webkitURL;let d=p.uri||"",w=!1;if(p.bufferView!==void 0)d=s.getDependency("bufferView",p.bufferView).then(function(y){w=!0;const C=new Blob([y],{type:p.mimeType});return d=u.createObjectURL(C),d});else if(p.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+n+" is missing URI and bufferView");const _=Promise.resolve(d).then(function(y){return new Promise(function(C,M){let E=C;i.isImageBitmapLoader===!0&&(E=function(V){const I=new f.Texture(V);I.needsUpdate=!0,C(I)}),i.load(f.LoaderUtils.resolveURL(y,l.path),E,void 0,M)})}).then(function(y){return w===!0&&u.revokeObjectURL(d),y.userData.mimeType=p.mimeType||Za(p.uri),y}).catch(function(y){throw console.error("THREE.GLTFLoader: Couldn't load texture",d),y});return this.sourceCache[n]=_,_}assignTexture(n,i,s,o){const l=this;return this.getDependency("texture",s.index).then(function(p){if(!p)return null;if(s.texCoord!==void 0&&s.texCoord>0&&(p=p.clone(),p.channel=s.texCoord),l.extensions[ae.KHR_TEXTURE_TRANSFORM]){const u=s.extensions!==void 0?s.extensions[ae.KHR_TEXTURE_TRANSFORM]:void 0;if(u){const d=l.associations.get(p);p=l.extensions[ae.KHR_TEXTURE_TRANSFORM].extendTexture(p,u),l.associations.set(p,d)}}return o!==void 0&&("colorSpace"in p?p.colorSpace=o===3001?"srgb":"srgb-linear":p.encoding=o),n[i]=p,p})}assignFinalMaterial(n){const i=n.geometry;let s=n.material;const o=i.attributes.tangent===void 0,l=i.attributes.color!==void 0,p=i.attributes.normal===void 0;if(n.isPoints){const u="PointsMaterial:"+s.uuid;let d=this.cache.get(u);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(u,d)),s=d}else if(n.isLine){const u="LineBasicMaterial:"+s.uuid;let d=this.cache.get(u);d||(d=new f.LineBasicMaterial,f.Material.prototype.copy.call(d,s),d.color.copy(s.color),d.map=s.map,this.cache.add(u,d)),s=d}if(o||l||p){let u="ClonedMaterial:"+s.uuid+":";o&&(u+="derivative-tangents:"),l&&(u+="vertex-colors:"),p&&(u+="flat-shading:");let d=this.cache.get(u);d||(d=s.clone(),l&&(d.vertexColors=!0),p&&(d.flatShading=!0),o&&(d.normalScale&&(d.normalScale.y*=-1),d.clearcoatNormalScale&&(d.clearcoatNormalScale.y*=-1)),this.cache.add(u,d),this.associations.set(d,this.associations.get(s))),s=d}n.material=s}getMaterialType(){return f.MeshStandardMaterial}loadMaterial(n){const i=this,s=this.json,o=this.extensions,l=s.materials[n];let p;const u={},d=l.extensions||{},w=[];if(d[ae.KHR_MATERIALS_UNLIT]){const y=o[ae.KHR_MATERIALS_UNLIT];p=y.getMaterialType(),w.push(y.extendParams(u,l,i))}else{const y=l.pbrMetallicRoughness||{};if(u.color=new f.Color(1,1,1),u.opacity=1,Array.isArray(y.baseColorFactor)){const C=y.baseColorFactor;u.color.fromArray(C),u.opacity=C[3]}y.baseColorTexture!==void 0&&w.push(i.assignTexture(u,"map",y.baseColorTexture,3001)),u.metalness=y.metallicFactor!==void 0?y.metallicFactor:1,u.roughness=y.roughnessFactor!==void 0?y.roughnessFactor:1,y.metallicRoughnessTexture!==void 0&&(w.push(i.assignTexture(u,"metalnessMap",y.metallicRoughnessTexture)),w.push(i.assignTexture(u,"roughnessMap",y.metallicRoughnessTexture))),p=this._invokeOne(function(C){return C.getMaterialType&&C.getMaterialType(n)}),w.push(Promise.all(this._invokeAll(function(C){return C.extendMaterialParams&&C.extendMaterialParams(n,u)})))}l.doubleSided===!0&&(u.side=f.DoubleSide);const _=l.alphaMode||hs.OPAQUE;if(_===hs.BLEND?(u.transparent=!0,u.depthWrite=!1):(u.transparent=!1,_===hs.MASK&&(u.alphaTest=l.alphaCutoff!==void 0?l.alphaCutoff:.5)),l.normalTexture!==void 0&&p!==f.MeshBasicMaterial&&(w.push(i.assignTexture(u,"normalMap",l.normalTexture)),u.normalScale=new f.Vector2(1,1),l.normalTexture.scale!==void 0)){const y=l.normalTexture.scale;u.normalScale.set(y,y)}return l.occlusionTexture!==void 0&&p!==f.MeshBasicMaterial&&(w.push(i.assignTexture(u,"aoMap",l.occlusionTexture)),l.occlusionTexture.strength!==void 0&&(u.aoMapIntensity=l.occlusionTexture.strength)),l.emissiveFactor!==void 0&&p!==f.MeshBasicMaterial&&(u.emissive=new f.Color().fromArray(l.emissiveFactor)),l.emissiveTexture!==void 0&&p!==f.MeshBasicMaterial&&w.push(i.assignTexture(u,"emissiveMap",l.emissiveTexture,3001)),Promise.all(w).then(function(){const y=new p(u);return l.name&&(y.name=l.name),It(y,l),i.associations.set(y,{materials:n}),l.extensions&&Xt(o,y,l),y})}createUniqueName(n){const i=f.PropertyBinding.sanitizeNodeName(n||"");return i in this.nodeNamesUsed?i+"_"+ ++this.nodeNamesUsed[i]:(this.nodeNamesUsed[i]=0,i)}loadGeometries(n){const i=this,s=this.extensions,o=this.primitiveCache;function l(u){return s[ae.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(u,i).then(function(d){return Rr(d,u,i)})}const p=[];for(let u=0,d=n.length;u<d;u++){const w=n[u],_=Qa(w),y=o[_];if(y)p.push(y.promise);else{let C;w.extensions&&w.extensions[ae.KHR_DRACO_MESH_COMPRESSION]?C=l(w):C=Rr(new f.BufferGeometry,w,i),o[_]={primitive:w,promise:C},p.push(C)}}return Promise.all(p)}loadMesh(n){const i=this,s=this.json,o=this.extensions,l=s.meshes[n],p=l.primitives,u=[];for(let d=0,w=p.length;d<w;d++){const _=p[d].material===void 0?Xa(this.cache):this.getDependency("material",p[d].material);u.push(_)}return u.push(i.loadGeometries(p)),Promise.all(u).then(function(d){const w=d.slice(0,d.length-1),_=d[d.length-1],y=[];for(let M=0,E=_.length;M<E;M++){const V=_[M],I=p[M];let F;const z=w[M];if(I.mode===Je.TRIANGLES||I.mode===Je.TRIANGLE_STRIP||I.mode===Je.TRIANGLE_FAN||I.mode===void 0)F=l.isSkinnedMesh===!0?new f.SkinnedMesh(V,z):new f.Mesh(V,z),F.isSkinnedMesh===!0&&F.normalizeSkinWeights(),I.mode===Je.TRIANGLE_STRIP?F.geometry=Ar(F.geometry,f.TriangleStripDrawMode):I.mode===Je.TRIANGLE_FAN&&(F.geometry=Ar(F.geometry,f.TriangleFanDrawMode));else if(I.mode===Je.LINES)F=new f.LineSegments(V,z);else if(I.mode===Je.LINE_STRIP)F=new f.Line(V,z);else if(I.mode===Je.LINE_LOOP)F=new f.LineLoop(V,z);else if(I.mode===Je.POINTS)F=new f.Points(V,z);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+I.mode);Object.keys(F.geometry.morphAttributes).length>0&&qa(F,l),F.name=i.createUniqueName(l.name||"mesh_"+n),It(F,l),I.extensions&&Xt(o,F,I),i.assignFinalMaterial(F),y.push(F)}for(let M=0,E=y.length;M<E;M++)i.associations.set(y[M],{meshes:n,primitives:M});if(y.length===1)return l.extensions&&Xt(o,y[0],l),y[0];const C=new f.Group;l.extensions&&Xt(o,C,l),i.associations.set(C,{meshes:n});for(let M=0,E=y.length;M<E;M++)C.add(y[M]);return C})}loadCamera(n){let i;const s=this.json.cameras[n],o=s[s.type];if(!o){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return s.type==="perspective"?i=new f.PerspectiveCamera(f.MathUtils.radToDeg(o.yfov),o.aspectRatio||1,o.znear||1,o.zfar||2e6):s.type==="orthographic"&&(i=new f.OrthographicCamera(-o.xmag,o.xmag,o.ymag,-o.ymag,o.znear,o.zfar)),s.name&&(i.name=this.createUniqueName(s.name)),It(i,s),Promise.resolve(i)}loadSkin(n){const i=this.json.skins[n],s=[];for(let o=0,l=i.joints.length;o<l;o++)s.push(this._loadNodeShallow(i.joints[o]));return i.inverseBindMatrices!==void 0?s.push(this.getDependency("accessor",i.inverseBindMatrices)):s.push(null),Promise.all(s).then(function(o){const l=o.pop(),p=o,u=[],d=[];for(let w=0,_=p.length;w<_;w++){const y=p[w];if(y){u.push(y);const C=new f.Matrix4;l!==null&&C.fromArray(l.array,w*16),d.push(C)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',i.joints[w])}return new f.Skeleton(u,d)})}loadAnimation(n){const s=this.json.animations[n],o=s.name?s.name:"animation_"+n,l=[],p=[],u=[],d=[],w=[];for(let _=0,y=s.channels.length;_<y;_++){const C=s.channels[_],M=s.samplers[C.sampler],E=C.target,V=E.node,I=s.parameters!==void 0?s.parameters[M.input]:M.input,F=s.parameters!==void 0?s.parameters[M.output]:M.output;E.node!==void 0&&(l.push(this.getDependency("node",V)),p.push(this.getDependency("accessor",I)),u.push(this.getDependency("accessor",F)),d.push(M),w.push(E))}return Promise.all([Promise.all(l),Promise.all(p),Promise.all(u),Promise.all(d),Promise.all(w)]).then(function(_){const y=_[0],C=_[1],M=_[2],E=_[3],V=_[4],I=[];for(let F=0,z=y.length;F<z;F++){const N=y[F],T=C[F],Q=M[F],$=E[F],U=V[F];if(N===void 0)continue;N.updateMatrix();let j;switch(Dt[U.path]){case Dt.weights:j=f.NumberKeyframeTrack;break;case Dt.rotation:j=f.QuaternionKeyframeTrack;break;case Dt.position:case Dt.scale:default:j=f.VectorKeyframeTrack;break}const X=N.name?N.name:N.uuid,Y=$.interpolation!==void 0?$a[$.interpolation]:f.InterpolateLinear,Z=[];Dt[U.path]===Dt.weights?N.traverse(function(we){we.morphTargetInfluences&&Z.push(we.name?we.name:we.uuid)}):Z.push(X);let ue=Q.array;if(Q.normalized){const we=ds(ue.constructor),he=new Float32Array(ue.length);for(let fe=0,de=ue.length;fe<de;fe++)he[fe]=ue[fe]*we;ue=he}for(let we=0,he=Z.length;we<he;we++){const fe=new j(Z[we]+"."+Dt[U.path],T.array,ue,Y);$.interpolation==="CUBICSPLINE"&&(fe.createInterpolant=function(te){const q=this instanceof f.QuaternionKeyframeTrack?Ka:zr;return new q(this.times,this.values,this.getValueSize()/3,te)},fe.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0),I.push(fe)}}return new f.AnimationClip(o,void 0,I)})}createNodeMesh(n){const i=this.json,s=this,o=i.nodes[n];return o.mesh===void 0?null:s.getDependency("mesh",o.mesh).then(function(l){const p=s._getNodeRef(s.meshCache,o.mesh,l);return o.weights!==void 0&&p.traverse(function(u){if(u.isMesh)for(let d=0,w=o.weights.length;d<w;d++)u.morphTargetInfluences[d]=o.weights[d]}),p})}loadNode(n){const i=this.json,s=this,o=i.nodes[n],l=s._loadNodeShallow(n),p=[],u=o.children||[];for(let w=0,_=u.length;w<_;w++)p.push(s.getDependency("node",u[w]));const d=o.skin===void 0?Promise.resolve(null):s.getDependency("skin",o.skin);return Promise.all([l,Promise.all(p),d]).then(function(w){const _=w[0],y=w[1],C=w[2];C!==null&&_.traverse(function(M){M.isSkinnedMesh&&M.bind(C,Wa)});for(let M=0,E=y.length;M<E;M++)_.add(y[M]);return _})}_loadNodeShallow(n){const i=this.json,s=this.extensions,o=this;if(this.nodeCache[n]!==void 0)return this.nodeCache[n];const l=i.nodes[n],p=l.name?o.createUniqueName(l.name):"",u=[],d=o._invokeOne(function(w){return w.createNodeMesh&&w.createNodeMesh(n)});return d&&u.push(d),l.camera!==void 0&&u.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(n)}).forEach(function(w){u.push(w)}),this.nodeCache[n]=Promise.all(u).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,C=w.length;y<C;y++)_.add(w[y]);if(l.name&&(_.userData.name=l.name,_.name=p),It(_,l),l.extensions&&Xt(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=n,_}),this.nodeCache[n]}loadScene(n){const i=this.extensions,s=this.json.scenes[n],o=this,l=new f.Group;s.name&&(l.name=o.createUniqueName(s.name)),It(l,s),s.extensions&&Xt(i,l,s);const p=s.nodes||[],u=[];for(let d=0,w=p.length;d<w;d++)u.push(o.getDependency("node",p[d]));return Promise.all(u).then(function(d){for(let _=0,y=d.length;_<y;_++)l.add(d[_]);const w=_=>{const y=new Map;for(const[C,M]of o.associations)(C instanceof f.Material||C instanceof f.Texture)&&y.set(C,M);return _.traverse(C=>{const M=o.associations.get(C);M!=null&&y.set(C,M)}),y};return o.associations=w(l),l})}}function Ha(v,n,i){const s=n.attributes,o=new f.Box3;if(s.POSITION!==void 0){const u=i.json.accessors[s.POSITION],d=u.min,w=u.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])),u.normalized){const _=ds(_n[u.componentType]);o.min.multiplyScalar(_),o.max.multiplyScalar(_)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const l=n.targets;if(l!==void 0){const u=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 C=i.json.accessors[y.POSITION],M=C.min,E=C.max;if(M!==void 0&&E!==void 0){if(d.setX(Math.max(Math.abs(M[0]),Math.abs(E[0]))),d.setY(Math.max(Math.abs(M[1]),Math.abs(E[1]))),d.setZ(Math.max(Math.abs(M[2]),Math.abs(E[2]))),C.normalized){const V=ds(_n[C.componentType]);d.multiplyScalar(V)}u.max(d)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}o.expandByVector(u)}v.boundingBox=o;const p=new f.Sphere;o.getCenter(p.center),p.radius=o.min.distanceTo(o.max)/2,v.boundingSphere=p}function Rr(v,n,i){const s=n.attributes,o=[];function l(p,u){return i.getDependency("accessor",p).then(function(d){v.setAttribute(u,d)})}for(const p in s){const u=ps[p]||p.toLowerCase();u in v.attributes||o.push(l(s[p],u))}if(n.indices!==void 0&&!v.index){const p=i.getDependency("accessor",n.indices).then(function(u){v.setIndex(u)});o.push(p)}return It(v,n),Ha(v,n,i),Promise.all(o).then(function(){return n.targets!==void 0?Ya(v,n.targets,i):v})}class Gr extends f.ExtrudeGeometry{constructor(n,i={}){const{bevelEnabled:s=!1,bevelSize:o=8,bevelThickness:l=10,font:p,height:u=50,size:d=100,lineHeight:w=1,letterSpacing:_=0,...y}=i;if(p===void 0)super();else{const C=p.generateShapes(n,d,{lineHeight:w,letterSpacing:_});super(C,{...y,bevelEnabled:s,bevelSize:o,bevelThickness:l,depth:u})}this.type="TextGeometry"}}const el={uniforms:{tDiffuse:{value:null},h:{value:1/512}},vertexShader:`
8
+ (function($,_){typeof exports=="object"&&typeof module<"u"?_(exports,require("vue"),require("three"),require("@tresjs/core")):typeof define=="function"&&define.amd?define(["exports","vue","three","@tresjs/core"],_):($=typeof globalThis<"u"?globalThis:$||self,_($.trescientos={},$.Vue,$.Three,$.TresjsCore))})(this,function($,_,m,Ae){"use strict";var bd=Object.defineProperty;var wd=($,_,m)=>_ in $?bd($,_,{enumerable:!0,configurable:!0,writable:!0,value:m}):$[_]=m;var ao=($,_,m)=>(wd($,typeof _!="symbol"?_+"":_,m),m);function Ua(v,t){for(var n=0;n<t.length;n++){const i=t[n];if(typeof i!="string"&&!Array.isArray(i)){for(const o in i)if(o!=="default"&&!(o in v)){const a=Object.getOwnPropertyDescriptor(i,o);a&&Object.defineProperty(v,o,a.get?a:{enumerable:!0,get:()=>i[o]})}}}return Object.freeze(Object.defineProperty(v,Symbol.toStringTag,{value:"Module"}))}function lo(v,t){if(t===m.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),v;if(t===m.TriangleFanDrawMode||t===m.TriangleStripDrawMode){let n=v.getIndex();if(n===null){const c=[],p=v.getAttribute("position");if(p!==void 0){for(let d=0;d<p.count;d++)c.push(d);v.setIndex(c),n=v.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),v}const i=n.count-2,o=[];if(n)if(t===m.TriangleFanDrawMode)for(let c=1;c<=i;c++)o.push(n.getX(0)),o.push(n.getX(c)),o.push(n.getX(c+1));else for(let c=0;c<i;c++)c%2===0?(o.push(n.getX(c)),o.push(n.getX(c+1)),o.push(n.getX(c+2))):(o.push(n.getX(c+2)),o.push(n.getX(c+1)),o.push(n.getX(c)));o.length/3!==i&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const a=v.clone();return a.setIndex(o),a.clearGroups(),a}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),v}var rt=Uint8Array,jt=Uint16Array,Vi=Uint32Array,co=new rt([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]),ho=new rt([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]),za=new rt([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),po=function(v,t){for(var n=new jt(31),i=0;i<31;++i)n[i]=t+=1<<v[i-1];for(var o=new Vi(n[30]),i=1;i<30;++i)for(var a=n[i];a<n[i+1];++a)o[a]=a-n[i]<<5|i;return[n,o]},uo=po(co,2),mo=uo[0],Ra=uo[1];mo[28]=258,Ra[258]=28;for(var ja=po(ho,0),Ga=ja[0],Ii=new jt(32768),Ee=0;Ee<32768;++Ee){var Gt=(Ee&43690)>>>1|(Ee&21845)<<1;Gt=(Gt&52428)>>>2|(Gt&13107)<<2,Gt=(Gt&61680)>>>4|(Gt&3855)<<4,Ii[Ee]=((Gt&65280)>>>8|(Gt&255)<<8)>>>1}for(var ps=function(v,t,n){for(var i=v.length,o=0,a=new jt(t);o<i;++o)++a[v[o]-1];var c=new jt(t);for(o=0;o<t;++o)c[o]=c[o-1]+a[o-1]<<1;var p;if(n){p=new jt(1<<t);var d=15-t;for(o=0;o<i;++o)if(v[o])for(var g=o<<4|v[o],y=t-v[o],b=c[v[o]-1]++<<y,C=b|(1<<y)-1;b<=C;++b)p[Ii[b]>>>d]=g}else for(p=new jt(i),o=0;o<i;++o)v[o]&&(p[o]=Ii[c[v[o]-1]++]>>>15-v[o]);return p},us=new rt(288),Ee=0;Ee<144;++Ee)us[Ee]=8;for(var Ee=144;Ee<256;++Ee)us[Ee]=9;for(var Ee=256;Ee<280;++Ee)us[Ee]=7;for(var Ee=280;Ee<288;++Ee)us[Ee]=8;for(var fo=new rt(32),Ee=0;Ee<32;++Ee)fo[Ee]=5;var Ka=ps(us,9,1),Ya=ps(fo,5,1),Bi=function(v){for(var t=v[0],n=1;n<v.length;++n)v[n]>t&&(t=v[n]);return t},ft=function(v,t,n){var i=t/8|0;return(v[i]|v[i+1]<<8)>>(t&7)&n},Fi=function(v,t){var n=t/8|0;return(v[n]|v[n+1]<<8|v[n+2]<<16)>>(t&7)},Xa=function(v){return(v/8|0)+(v&7&&1)},Za=function(v,t,n){(t==null||t<0)&&(t=0),(n==null||n>v.length)&&(n=v.length);var i=new(v instanceof jt?jt:v instanceof Vi?Vi:rt)(n-t);return i.set(v.subarray(t,n)),i},qa=function(v,t,n){var i=v.length;if(!i||n&&!n.l&&i<5)return t||new rt(0);var o=!t||n,a=!n||n.i;n||(n={}),t||(t=new rt(i*3));var c=function(ze){var Ge=t.length;if(ze>Ge){var Te=new rt(Math.max(Ge*2,ze));Te.set(t),t=Te}},p=n.f||0,d=n.p||0,g=n.b||0,y=n.l,b=n.d,C=n.m,A=n.n,E=i*8;do{if(!y){n.f=p=ft(v,d,1);var k=ft(v,d+1,3);if(d+=3,k)if(k==1)y=Ka,b=Ya,C=9,A=5;else if(k==2){var F=ft(v,d,31)+257,M=ft(v,d+10,15)+4,D=F+ft(v,d+5,31)+1;d+=14;for(var U=new rt(D),S=new rt(19),T=0;T<M;++T)S[za[T]]=ft(v,d+T*3,7);d+=M*3;for(var j=Bi(S),X=(1<<j)-1,Z=ps(S,j,1),T=0;T<D;){var J=Z[ft(v,d,X)];d+=J&15;var O=J>>>4;if(O<16)U[T++]=O;else{var le=0,he=0;for(O==16?(he=3+ft(v,d,3),d+=2,le=U[T-1]):O==17?(he=3+ft(v,d,7),d+=3):O==18&&(he=11+ft(v,d,127),d+=7);he--;)U[T++]=le}}var oe=U.subarray(0,F),re=U.subarray(F);C=Bi(oe),A=Bi(re),y=ps(oe,C,1),b=ps(re,A,1)}else throw"invalid block type";else{var O=Xa(d)+4,R=v[O-4]|v[O-3]<<8,N=O+R;if(N>i){if(a)throw"unexpected EOF";break}o&&c(g+R),t.set(v.subarray(O,N),g),n.b=g+=R,n.p=d=N*8;continue}if(d>E){if(a)throw"unexpected EOF";break}}o&&c(g+131072);for(var ne=(1<<C)-1,H=(1<<A)-1,Ce=d;;Ce=d){var le=y[Fi(v,d)&ne],ge=le>>>4;if(d+=le&15,d>E){if(a)throw"unexpected EOF";break}if(!le)throw"invalid length/literal";if(ge<256)t[g++]=ge;else if(ge==256){Ce=d,y=null;break}else{var de=ge-254;if(ge>264){var T=ge-257,me=co[T];de=ft(v,d,(1<<me)-1)+mo[T],d+=me}var ke=b[Fi(v,d)&H],B=ke>>>4;if(!ke)throw"invalid distance";d+=ke&15;var re=Ga[B];if(B>3){var me=ho[B];re+=Fi(v,d)&(1<<me)-1,d+=me}if(d>E){if(a)throw"unexpected EOF";break}o&&c(g+131072);for(var we=g+de;g<we;g+=4)t[g]=t[g-re],t[g+1]=t[g+1-re],t[g+2]=t[g+2-re],t[g+3]=t[g+3-re];g=we}}n.l=y,n.p=Ce,n.b=g,y&&(p=1,n.m=C,n.d=b,n.n=A)}while(!p);return g==t.length?t:Za(t,0,g)},Qa=new rt(0),Wa=function(v){if((v[0]&15)!=8||v[0]>>>4>7||(v[0]<<8|v[1])%31)throw"invalid zlib data";if(v[1]&32)throw"invalid zlib data: preset dictionaries not supported"};function Ja(v,t){return qa((Wa(v),v.subarray(2,-4)),t)}var Ha=typeof TextDecoder<"u"&&new TextDecoder,$a=0;try{Ha.decode(Qa,{stream:!0}),$a=1}catch{}var el=Object.defineProperty,tl=(v,t,n)=>t in v?el(v,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):v[t]=n,K=(v,t,n)=>(tl(v,typeof t!="symbol"?t+"":t,n),n);class nl extends m.Object3D{constructor(t,n){super(),K(this,"isTransformControls",!0),K(this,"visible",!1),K(this,"domElement"),K(this,"raycaster",new m.Raycaster),K(this,"gizmo"),K(this,"plane"),K(this,"tempVector",new m.Vector3),K(this,"tempVector2",new m.Vector3),K(this,"tempQuaternion",new m.Quaternion),K(this,"unit",{X:new m.Vector3(1,0,0),Y:new m.Vector3(0,1,0),Z:new m.Vector3(0,0,1)}),K(this,"pointStart",new m.Vector3),K(this,"pointEnd",new m.Vector3),K(this,"offset",new m.Vector3),K(this,"rotationAxis",new m.Vector3),K(this,"startNorm",new m.Vector3),K(this,"endNorm",new m.Vector3),K(this,"rotationAngle",0),K(this,"cameraPosition",new m.Vector3),K(this,"cameraQuaternion",new m.Quaternion),K(this,"cameraScale",new m.Vector3),K(this,"parentPosition",new m.Vector3),K(this,"parentQuaternion",new m.Quaternion),K(this,"parentQuaternionInv",new m.Quaternion),K(this,"parentScale",new m.Vector3),K(this,"worldPositionStart",new m.Vector3),K(this,"worldQuaternionStart",new m.Quaternion),K(this,"worldScaleStart",new m.Vector3),K(this,"worldPosition",new m.Vector3),K(this,"worldQuaternion",new m.Quaternion),K(this,"worldQuaternionInv",new m.Quaternion),K(this,"worldScale",new m.Vector3),K(this,"eye",new m.Vector3),K(this,"positionStart",new m.Vector3),K(this,"quaternionStart",new m.Quaternion),K(this,"scaleStart",new m.Vector3),K(this,"camera"),K(this,"object"),K(this,"enabled",!0),K(this,"axis",null),K(this,"mode","translate"),K(this,"translationSnap",null),K(this,"rotationSnap",null),K(this,"scaleSnap",null),K(this,"space","world"),K(this,"size",1),K(this,"dragging",!1),K(this,"showX",!0),K(this,"showY",!0),K(this,"showZ",!0),K(this,"changeEvent",{type:"change"}),K(this,"mouseDownEvent",{type:"mouseDown",mode:this.mode}),K(this,"mouseUpEvent",{type:"mouseUp",mode:this.mode}),K(this,"objectChangeEvent",{type:"objectChange"}),K(this,"intersectObjectWithRay",(o,a,c)=>{const p=a.intersectObject(o,!0);for(let d=0;d<p.length;d++)if(p[d].object.visible||c)return p[d];return!1}),K(this,"attach",o=>(this.object=o,this.visible=!0,this)),K(this,"detach",()=>(this.object=void 0,this.visible=!1,this.axis=null,this)),K(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),K(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()}),K(this,"pointerHover",o=>{if(this.object===void 0||this.dragging===!0)return;this.raycaster.setFromCamera(o,this.camera);const a=this.intersectObjectWithRay(this.gizmo.picker[this.mode],this.raycaster);a?this.axis=a.object.name:this.axis=null}),K(this,"pointerDown",o=>{if(!(this.object===void 0||this.dragging===!0||o.button!==0)&&this.axis!==null){this.raycaster.setFromCamera(o,this.camera);const a=this.intersectObjectWithRay(this.plane,this.raycaster,!0);if(a){let c=this.space;if(this.mode==="scale"?c="local":(this.axis==="E"||this.axis==="XYZE"||this.axis==="XYZ")&&(c="world"),c==="local"&&this.mode==="rotate"){const p=this.rotationSnap;this.axis==="X"&&p&&(this.object.rotation.x=Math.round(this.object.rotation.x/p)*p),this.axis==="Y"&&p&&(this.object.rotation.y=Math.round(this.object.rotation.y/p)*p),this.axis==="Z"&&p&&(this.object.rotation.z=Math.round(this.object.rotation.z/p)*p)}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(a.point).sub(this.worldPositionStart)}this.dragging=!0,this.mouseDownEvent.mode=this.mode,this.dispatchEvent(this.mouseDownEvent)}}),K(this,"pointerMove",o=>{const a=this.axis,c=this.mode,p=this.object;let d=this.space;if(c==="scale"?d="local":(a==="E"||a==="XYZE"||a==="XYZ")&&(d="world"),p===void 0||a===null||this.dragging===!1||o.button!==-1)return;this.raycaster.setFromCamera(o,this.camera);const g=this.intersectObjectWithRay(this.plane,this.raycaster,!0);if(g){if(this.pointEnd.copy(g.point).sub(this.worldPositionStart),c==="translate")this.offset.copy(this.pointEnd).sub(this.pointStart),d==="local"&&a!=="XYZ"&&this.offset.applyQuaternion(this.worldQuaternionInv),a.indexOf("X")===-1&&(this.offset.x=0),a.indexOf("Y")===-1&&(this.offset.y=0),a.indexOf("Z")===-1&&(this.offset.z=0),d==="local"&&a!=="XYZ"?this.offset.applyQuaternion(this.quaternionStart).divide(this.parentScale):this.offset.applyQuaternion(this.parentQuaternionInv).divide(this.parentScale),p.position.copy(this.offset).add(this.positionStart),this.translationSnap&&(d==="local"&&(p.position.applyQuaternion(this.tempQuaternion.copy(this.quaternionStart).invert()),a.search("X")!==-1&&(p.position.x=Math.round(p.position.x/this.translationSnap)*this.translationSnap),a.search("Y")!==-1&&(p.position.y=Math.round(p.position.y/this.translationSnap)*this.translationSnap),a.search("Z")!==-1&&(p.position.z=Math.round(p.position.z/this.translationSnap)*this.translationSnap),p.position.applyQuaternion(this.quaternionStart)),d==="world"&&(p.parent&&p.position.add(this.tempVector.setFromMatrixPosition(p.parent.matrixWorld)),a.search("X")!==-1&&(p.position.x=Math.round(p.position.x/this.translationSnap)*this.translationSnap),a.search("Y")!==-1&&(p.position.y=Math.round(p.position.y/this.translationSnap)*this.translationSnap),a.search("Z")!==-1&&(p.position.z=Math.round(p.position.z/this.translationSnap)*this.translationSnap),p.parent&&p.position.sub(this.tempVector.setFromMatrixPosition(p.parent.matrixWorld))));else if(c==="scale"){if(a.search("XYZ")!==-1){let y=this.pointEnd.length()/this.pointStart.length();this.pointEnd.dot(this.pointStart)<0&&(y*=-1),this.tempVector2.set(y,y,y)}else this.tempVector.copy(this.pointStart),this.tempVector2.copy(this.pointEnd),this.tempVector.applyQuaternion(this.worldQuaternionInv),this.tempVector2.applyQuaternion(this.worldQuaternionInv),this.tempVector2.divide(this.tempVector),a.search("X")===-1&&(this.tempVector2.x=1),a.search("Y")===-1&&(this.tempVector2.y=1),a.search("Z")===-1&&(this.tempVector2.z=1);p.scale.copy(this.scaleStart).multiply(this.tempVector2),this.scaleSnap&&this.object&&(a.search("X")!==-1&&(this.object.scale.x=Math.round(p.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap),a.search("Y")!==-1&&(p.scale.y=Math.round(p.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap),a.search("Z")!==-1&&(p.scale.z=Math.round(p.scale.z/this.scaleSnap)*this.scaleSnap||this.scaleSnap))}else if(c==="rotate"){this.offset.copy(this.pointEnd).sub(this.pointStart);const y=20/this.worldPosition.distanceTo(this.tempVector.setFromMatrixPosition(this.camera.matrixWorld));a==="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):a==="XYZE"?(this.rotationAxis.copy(this.offset).cross(this.eye).normalize(),this.rotationAngle=this.offset.dot(this.tempVector.copy(this.rotationAxis).cross(this.eye))*y):(a==="X"||a==="Y"||a==="Z")&&(this.rotationAxis.copy(this.unit[a]),this.tempVector.copy(this.unit[a]),d==="local"&&this.tempVector.applyQuaternion(this.worldQuaternion),this.rotationAngle=this.offset.dot(this.tempVector.cross(this.eye).normalize())*y),this.rotationSnap&&(this.rotationAngle=Math.round(this.rotationAngle/this.rotationSnap)*this.rotationSnap),d==="local"&&a!=="E"&&a!=="XYZE"?(p.quaternion.copy(this.quaternionStart),p.quaternion.multiply(this.tempQuaternion.setFromAxisAngle(this.rotationAxis,this.rotationAngle)).normalize()):(this.rotationAxis.applyQuaternion(this.parentQuaternionInv),p.quaternion.copy(this.tempQuaternion.setFromAxisAngle(this.rotationAxis,this.rotationAngle)),p.quaternion.multiply(this.quaternionStart).normalize())}this.dispatchEvent(this.changeEvent),this.dispatchEvent(this.objectChangeEvent)}}),K(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)}),K(this,"getPointer",o=>{var a,c;if(this.domElement&&((a=this.domElement.ownerDocument)!=null&&a.pointerLockElement))return{x:0,y:0,button:o.button};{const p=o.changedTouches?o.changedTouches[0]:o,d=(c=this.domElement)==null?void 0:c.getBoundingClientRect();return{x:(p.clientX-d.left)/d.width*2-1,y:-(p.clientY-d.top)/d.height*2+1,button:o.button}}}),K(this,"onPointerHover",o=>{if(this.enabled)switch(o.pointerType){case"mouse":case"pen":this.pointerHover(this.getPointer(o));break}}),K(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)))}),K(this,"onPointerMove",o=>{this.enabled&&this.pointerMove(this.getPointer(o))}),K(this,"onPointerUp",o=>{!this.enabled||!this.domElement||(this.domElement.style.touchAction="",this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.pointerUp(this.getPointer(o)))}),K(this,"getMode",()=>this.mode),K(this,"setMode",o=>{this.mode=o}),K(this,"setTranslationSnap",o=>{this.translationSnap=o}),K(this,"setRotationSnap",o=>{this.rotationSnap=o}),K(this,"setScaleSnap",o=>{this.scaleSnap=o}),K(this,"setSize",o=>{this.size=o}),K(this,"setSpace",o=>{this.space=o}),K(this,"update",()=>{console.warn("THREE.TransformControls: update function has no more functionality and therefore has been deprecated.")}),K(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)}),K(this,"dispose",()=>{var o,a,c,p,d,g;(o=this.domElement)==null||o.removeEventListener("pointerdown",this.onPointerDown),(a=this.domElement)==null||a.removeEventListener("pointermove",this.onPointerHover),(p=(c=this.domElement)==null?void 0:c.ownerDocument)==null||p.removeEventListener("pointermove",this.onPointerMove),(g=(d=this.domElement)==null?void 0:d.ownerDocument)==null||g.removeEventListener("pointerup",this.onPointerUp),this.traverse(y=>{const b=y;b.geometry&&b.geometry.dispose(),b.material&&b.material.dispose()})}),this.domElement=n,this.camera=t,this.gizmo=new sl,this.add(this.gizmo),this.plane=new il,this.add(this.plane);const i=(o,a)=>{let c=a;Object.defineProperty(this,o,{get:function(){return c!==void 0?c:a},set:function(p){c!==p&&(c=p,this.plane[o]=p,this.gizmo[o]=p,this.dispatchEvent({type:o+"-changed",value:p}),this.dispatchEvent(this.changeEvent))}}),this[o]=a,this.plane[o]=a,this.gizmo[o]=a};i("camera",this.camera),i("object",this.object),i("enabled",this.enabled),i("axis",this.axis),i("mode",this.mode),i("translationSnap",this.translationSnap),i("rotationSnap",this.rotationSnap),i("scaleSnap",this.scaleSnap),i("space",this.space),i("size",this.size),i("dragging",this.dragging),i("showX",this.showX),i("showY",this.showY),i("showZ",this.showZ),i("worldPosition",this.worldPosition),i("worldPositionStart",this.worldPositionStart),i("worldQuaternion",this.worldQuaternion),i("worldQuaternionStart",this.worldQuaternionStart),i("cameraPosition",this.cameraPosition),i("cameraQuaternion",this.cameraQuaternion),i("pointStart",this.pointStart),i("pointEnd",this.pointEnd),i("rotationAxis",this.rotationAxis),i("rotationAngle",this.rotationAngle),i("eye",this.eye),n!==void 0&&this.connect(n)}}class sl extends m.Object3D{constructor(){super(),K(this,"isTransformControlsGizmo",!0),K(this,"type","TransformControlsGizmo"),K(this,"tempVector",new m.Vector3(0,0,0)),K(this,"tempEuler",new m.Euler),K(this,"alignVector",new m.Vector3(0,1,0)),K(this,"zeroVector",new m.Vector3(0,0,0)),K(this,"lookAtMatrix",new m.Matrix4),K(this,"tempQuaternion",new m.Quaternion),K(this,"tempQuaternion2",new m.Quaternion),K(this,"identityQuaternion",new m.Quaternion),K(this,"unitX",new m.Vector3(1,0,0)),K(this,"unitY",new m.Vector3(0,1,0)),K(this,"unitZ",new m.Vector3(0,0,1)),K(this,"gizmo"),K(this,"picker"),K(this,"helper"),K(this,"rotationAxis",new m.Vector3),K(this,"cameraPosition",new m.Vector3),K(this,"worldPositionStart",new m.Vector3),K(this,"worldQuaternionStart",new m.Quaternion),K(this,"worldPosition",new m.Vector3),K(this,"worldQuaternion",new m.Quaternion),K(this,"eye",new m.Vector3),K(this,"camera",null),K(this,"enabled",!0),K(this,"axis",null),K(this,"mode","translate"),K(this,"space","world"),K(this,"size",1),K(this,"dragging",!1),K(this,"showX",!0),K(this,"showY",!0),K(this,"showZ",!0),K(this,"updateMatrixWorld",()=>{let ge=this.space;this.mode==="scale"&&(ge="local");const de=ge==="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 me=[];me=me.concat(this.picker[this.mode].children),me=me.concat(this.gizmo[this.mode].children),me=me.concat(this.helper[this.mode].children);for(let ke=0;ke<me.length;ke++){const B=me[ke];B.visible=!0,B.rotation.set(0,0,0),B.position.copy(this.worldPosition);let we;if(this.camera.isOrthographicCamera?we=(this.camera.top-this.camera.bottom)/this.camera.zoom:we=this.worldPosition.distanceTo(this.cameraPosition)*Math.min(1.9*Math.tan(Math.PI*this.camera.fov/360)/this.camera.zoom,7),B.scale.set(1,1,1).multiplyScalar(we*this.size/7),B.tag==="helper"){B.visible=!1,B.name==="AXIS"?(B.position.copy(this.worldPositionStart),B.visible=!!this.axis,this.axis==="X"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,0)),B.quaternion.copy(de).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(de).dot(this.eye))>.9&&(B.visible=!1)),this.axis==="Y"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,Math.PI/2)),B.quaternion.copy(de).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(de).dot(this.eye))>.9&&(B.visible=!1)),this.axis==="Z"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0)),B.quaternion.copy(de).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(de).dot(this.eye))>.9&&(B.visible=!1)),this.axis==="XYZE"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0)),this.alignVector.copy(this.rotationAxis),B.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.zeroVector,this.alignVector,this.unitY)),B.quaternion.multiply(this.tempQuaternion),B.visible=this.dragging),this.axis==="E"&&(B.visible=!1)):B.name==="START"?(B.position.copy(this.worldPositionStart),B.visible=this.dragging):B.name==="END"?(B.position.copy(this.worldPosition),B.visible=this.dragging):B.name==="DELTA"?(B.position.copy(this.worldPositionStart),B.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()),B.scale.copy(this.tempVector),B.visible=this.dragging):(B.quaternion.copy(de),this.dragging?B.position.copy(this.worldPositionStart):B.position.copy(this.worldPosition),this.axis&&(B.visible=this.axis.search(B.name)!==-1));continue}B.quaternion.copy(de),this.mode==="translate"||this.mode==="scale"?((B.name==="X"||B.name==="XYZX")&&Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(de).dot(this.eye))>.99&&(B.scale.set(1e-10,1e-10,1e-10),B.visible=!1),(B.name==="Y"||B.name==="XYZY")&&Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(de).dot(this.eye))>.99&&(B.scale.set(1e-10,1e-10,1e-10),B.visible=!1),(B.name==="Z"||B.name==="XYZZ")&&Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(de).dot(this.eye))>.99&&(B.scale.set(1e-10,1e-10,1e-10),B.visible=!1),B.name==="XY"&&Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(de).dot(this.eye))<.2&&(B.scale.set(1e-10,1e-10,1e-10),B.visible=!1),B.name==="YZ"&&Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(de).dot(this.eye))<.2&&(B.scale.set(1e-10,1e-10,1e-10),B.visible=!1),B.name==="XZ"&&Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(de).dot(this.eye))<.2&&(B.scale.set(1e-10,1e-10,1e-10),B.visible=!1),B.name.search("X")!==-1&&(this.alignVector.copy(this.unitX).applyQuaternion(de).dot(this.eye)<0?B.tag==="fwd"?B.visible=!1:B.scale.x*=-1:B.tag==="bwd"&&(B.visible=!1)),B.name.search("Y")!==-1&&(this.alignVector.copy(this.unitY).applyQuaternion(de).dot(this.eye)<0?B.tag==="fwd"?B.visible=!1:B.scale.y*=-1:B.tag==="bwd"&&(B.visible=!1)),B.name.search("Z")!==-1&&(this.alignVector.copy(this.unitZ).applyQuaternion(de).dot(this.eye)<0?B.tag==="fwd"?B.visible=!1:B.scale.z*=-1:B.tag==="bwd"&&(B.visible=!1))):this.mode==="rotate"&&(this.tempQuaternion2.copy(de),this.alignVector.copy(this.eye).applyQuaternion(this.tempQuaternion.copy(de).invert()),B.name.search("E")!==-1&&B.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.eye,this.zeroVector,this.unitY)),B.name==="X"&&(this.tempQuaternion.setFromAxisAngle(this.unitX,Math.atan2(-this.alignVector.y,this.alignVector.z)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),B.quaternion.copy(this.tempQuaternion)),B.name==="Y"&&(this.tempQuaternion.setFromAxisAngle(this.unitY,Math.atan2(this.alignVector.x,this.alignVector.z)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),B.quaternion.copy(this.tempQuaternion)),B.name==="Z"&&(this.tempQuaternion.setFromAxisAngle(this.unitZ,Math.atan2(this.alignVector.y,this.alignVector.x)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),B.quaternion.copy(this.tempQuaternion))),B.visible=B.visible&&(B.name.indexOf("X")===-1||this.showX),B.visible=B.visible&&(B.name.indexOf("Y")===-1||this.showY),B.visible=B.visible&&(B.name.indexOf("Z")===-1||this.showZ),B.visible=B.visible&&(B.name.indexOf("E")===-1||this.showX&&this.showY&&this.showZ),B.material.tempOpacity=B.material.tempOpacity||B.material.opacity,B.material.tempColor=B.material.tempColor||B.material.color.clone(),B.material.color.copy(B.material.tempColor),B.material.opacity=B.material.tempOpacity,this.enabled?this.axis&&(B.name===this.axis?(B.material.opacity=1,B.material.color.lerp(new m.Color(1,1,1),.5)):this.axis.split("").some(function(ze){return B.name===ze})?(B.material.opacity=1,B.material.color.lerp(new m.Color(1,1,1),.5)):(B.material.opacity*=.25,B.material.color.lerp(new m.Color(1,1,1),.5))):(B.material.opacity*=.5,B.material.color.lerp(new m.Color(1,1,1),.5))}super.updateMatrixWorld()});const t=new m.MeshBasicMaterial({depthTest:!1,depthWrite:!1,transparent:!0,side:m.DoubleSide,fog:!1,toneMapped:!1}),n=new m.LineBasicMaterial({depthTest:!1,depthWrite:!1,transparent:!0,linewidth:1,fog:!1,toneMapped:!1}),i=t.clone();i.opacity=.15;const o=t.clone();o.opacity=.33;const a=t.clone();a.color.set(16711680);const c=t.clone();c.color.set(65280);const p=t.clone();p.color.set(255);const d=t.clone();d.opacity=.25;const g=d.clone();g.color.set(16776960);const y=d.clone();y.color.set(65535);const b=d.clone();b.color.set(16711935),t.clone().color.set(16776960);const A=n.clone();A.color.set(16711680);const E=n.clone();E.color.set(65280);const k=n.clone();k.color.set(255);const O=n.clone();O.color.set(65535);const R=n.clone();R.color.set(16711935);const N=n.clone();N.color.set(16776960);const F=n.clone();F.color.set(7895160);const M=N.clone();M.opacity=.25;const D=new m.CylinderGeometry(0,.05,.2,12,1,!1),U=new m.BoxGeometry(.125,.125,.125),S=new m.BufferGeometry;S.setAttribute("position",new m.Float32BufferAttribute([0,0,0,1,0,0],3));const T=(ge,de)=>{const me=new m.BufferGeometry,ke=[];for(let B=0;B<=64*de;++B)ke.push(0,Math.cos(B/32*Math.PI)*ge,Math.sin(B/32*Math.PI)*ge);return me.setAttribute("position",new m.Float32BufferAttribute(ke,3)),me},j=()=>{const ge=new m.BufferGeometry;return ge.setAttribute("position",new m.Float32BufferAttribute([0,0,0,1,1,1],3)),ge},X={X:[[new m.Mesh(D,a),[1,0,0],[0,0,-Math.PI/2],null,"fwd"],[new m.Mesh(D,a),[1,0,0],[0,0,Math.PI/2],null,"bwd"],[new m.Line(S,A)]],Y:[[new m.Mesh(D,c),[0,1,0],null,null,"fwd"],[new m.Mesh(D,c),[0,1,0],[Math.PI,0,0],null,"bwd"],[new m.Line(S,E),null,[0,0,Math.PI/2]]],Z:[[new m.Mesh(D,p),[0,0,1],[Math.PI/2,0,0],null,"fwd"],[new m.Mesh(D,p),[0,0,1],[-Math.PI/2,0,0],null,"bwd"],[new m.Line(S,k),null,[0,-Math.PI/2,0]]],XYZ:[[new m.Mesh(new m.OctahedronGeometry(.1,0),d.clone()),[0,0,0],[0,0,0]]],XY:[[new m.Mesh(new m.PlaneGeometry(.295,.295),g.clone()),[.15,.15,0]],[new m.Line(S,N),[.18,.3,0],null,[.125,1,1]],[new m.Line(S,N),[.3,.18,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new m.Mesh(new m.PlaneGeometry(.295,.295),y.clone()),[0,.15,.15],[0,Math.PI/2,0]],[new m.Line(S,O),[0,.18,.3],[0,0,Math.PI/2],[.125,1,1]],[new m.Line(S,O),[0,.3,.18],[0,-Math.PI/2,0],[.125,1,1]]],XZ:[[new m.Mesh(new m.PlaneGeometry(.295,.295),b.clone()),[.15,0,.15],[-Math.PI/2,0,0]],[new m.Line(S,R),[.18,0,.3],null,[.125,1,1]],[new m.Line(S,R),[.3,0,.18],[0,-Math.PI/2,0],[.125,1,1]]]},Z={X:[[new m.Mesh(new m.CylinderGeometry(.2,0,1,4,1,!1),i),[.6,0,0],[0,0,-Math.PI/2]]],Y:[[new m.Mesh(new m.CylinderGeometry(.2,0,1,4,1,!1),i),[0,.6,0]]],Z:[[new m.Mesh(new m.CylinderGeometry(.2,0,1,4,1,!1),i),[0,0,.6],[Math.PI/2,0,0]]],XYZ:[[new m.Mesh(new m.OctahedronGeometry(.2,0),i)]],XY:[[new m.Mesh(new m.PlaneGeometry(.4,.4),i),[.2,.2,0]]],YZ:[[new m.Mesh(new m.PlaneGeometry(.4,.4),i),[0,.2,.2],[0,Math.PI/2,0]]],XZ:[[new m.Mesh(new m.PlaneGeometry(.4,.4),i),[.2,0,.2],[-Math.PI/2,0,0]]]},J={START:[[new m.Mesh(new m.OctahedronGeometry(.01,2),o),null,null,null,"helper"]],END:[[new m.Mesh(new m.OctahedronGeometry(.01,2),o),null,null,null,"helper"]],DELTA:[[new m.Line(j(),o),null,null,null,"helper"]],X:[[new m.Line(S,o.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new m.Line(S,o.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new m.Line(S,o.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},le={X:[[new m.Line(T(1,.5),A)],[new m.Mesh(new m.OctahedronGeometry(.04,0),a),[0,0,.99],null,[1,3,1]]],Y:[[new m.Line(T(1,.5),E),null,[0,0,-Math.PI/2]],[new m.Mesh(new m.OctahedronGeometry(.04,0),c),[0,0,.99],null,[3,1,1]]],Z:[[new m.Line(T(1,.5),k),null,[0,Math.PI/2,0]],[new m.Mesh(new m.OctahedronGeometry(.04,0),p),[.99,0,0],null,[1,3,1]]],E:[[new m.Line(T(1.25,1),M),null,[0,Math.PI/2,0]],[new m.Mesh(new m.CylinderGeometry(.03,0,.15,4,1,!1),M),[1.17,0,0],[0,0,-Math.PI/2],[1,1,.001]],[new m.Mesh(new m.CylinderGeometry(.03,0,.15,4,1,!1),M),[-1.17,0,0],[0,0,Math.PI/2],[1,1,.001]],[new m.Mesh(new m.CylinderGeometry(.03,0,.15,4,1,!1),M),[0,-1.17,0],[Math.PI,0,0],[1,1,.001]],[new m.Mesh(new m.CylinderGeometry(.03,0,.15,4,1,!1),M),[0,1.17,0],[0,0,0],[1,1,.001]]],XYZE:[[new m.Line(T(1,1),F),null,[0,Math.PI/2,0]]]},he={AXIS:[[new m.Line(S,o.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]]},oe={X:[[new m.Mesh(new m.TorusGeometry(1,.1,4,24),i),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],Y:[[new m.Mesh(new m.TorusGeometry(1,.1,4,24),i),[0,0,0],[Math.PI/2,0,0]]],Z:[[new m.Mesh(new m.TorusGeometry(1,.1,4,24),i),[0,0,0],[0,0,-Math.PI/2]]],E:[[new m.Mesh(new m.TorusGeometry(1.25,.1,2,24),i)]],XYZE:[[new m.Mesh(new m.SphereGeometry(.7,10,8),i)]]},re={X:[[new m.Mesh(U,a),[.8,0,0],[0,0,-Math.PI/2]],[new m.Line(S,A),null,null,[.8,1,1]]],Y:[[new m.Mesh(U,c),[0,.8,0]],[new m.Line(S,E),null,[0,0,Math.PI/2],[.8,1,1]]],Z:[[new m.Mesh(U,p),[0,0,.8],[Math.PI/2,0,0]],[new m.Line(S,k),null,[0,-Math.PI/2,0],[.8,1,1]]],XY:[[new m.Mesh(U,g),[.85,.85,0],null,[2,2,.2]],[new m.Line(S,N),[.855,.98,0],null,[.125,1,1]],[new m.Line(S,N),[.98,.855,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new m.Mesh(U,y),[0,.85,.85],null,[.2,2,2]],[new m.Line(S,O),[0,.855,.98],[0,0,Math.PI/2],[.125,1,1]],[new m.Line(S,O),[0,.98,.855],[0,-Math.PI/2,0],[.125,1,1]]],XZ:[[new m.Mesh(U,b),[.85,0,.85],null,[2,.2,2]],[new m.Line(S,R),[.855,0,.98],null,[.125,1,1]],[new m.Line(S,R),[.98,0,.855],[0,-Math.PI/2,0],[.125,1,1]]],XYZX:[[new m.Mesh(new m.BoxGeometry(.125,.125,.125),d.clone()),[1.1,0,0]]],XYZY:[[new m.Mesh(new m.BoxGeometry(.125,.125,.125),d.clone()),[0,1.1,0]]],XYZZ:[[new m.Mesh(new m.BoxGeometry(.125,.125,.125),d.clone()),[0,0,1.1]]]},ne={X:[[new m.Mesh(new m.CylinderGeometry(.2,0,.8,4,1,!1),i),[.5,0,0],[0,0,-Math.PI/2]]],Y:[[new m.Mesh(new m.CylinderGeometry(.2,0,.8,4,1,!1),i),[0,.5,0]]],Z:[[new m.Mesh(new m.CylinderGeometry(.2,0,.8,4,1,!1),i),[0,0,.5],[Math.PI/2,0,0]]],XY:[[new m.Mesh(U,i),[.85,.85,0],null,[3,3,.2]]],YZ:[[new m.Mesh(U,i),[0,.85,.85],null,[.2,3,3]]],XZ:[[new m.Mesh(U,i),[.85,0,.85],null,[3,.2,3]]],XYZX:[[new m.Mesh(new m.BoxGeometry(.2,.2,.2),i),[1.1,0,0]]],XYZY:[[new m.Mesh(new m.BoxGeometry(.2,.2,.2),i),[0,1.1,0]]],XYZZ:[[new m.Mesh(new m.BoxGeometry(.2,.2,.2),i),[0,0,1.1]]]},H={X:[[new m.Line(S,o.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new m.Line(S,o.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new m.Line(S,o.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},Ce=ge=>{const de=new m.Object3D;for(let me in ge)for(let ke=ge[me].length;ke--;){const B=ge[me][ke][0].clone(),we=ge[me][ke][1],ze=ge[me][ke][2],Ge=ge[me][ke][3],Te=ge[me][ke][4];B.name=me,B.tag=Te,we&&B.position.set(we[0],we[1],we[2]),ze&&B.rotation.set(ze[0],ze[1],ze[2]),Ge&&B.scale.set(Ge[0],Ge[1],Ge[2]),B.updateMatrix();const lt=B.geometry.clone();lt.applyMatrix4(B.matrix),B.geometry=lt,B.renderOrder=1/0,B.position.set(0,0,0),B.rotation.set(0,0,0),B.scale.set(1,1,1),de.add(B)}return de};this.gizmo={},this.picker={},this.helper={},this.add(this.gizmo.translate=Ce(X)),this.add(this.gizmo.rotate=Ce(le)),this.add(this.gizmo.scale=Ce(re)),this.add(this.picker.translate=Ce(Z)),this.add(this.picker.rotate=Ce(oe)),this.add(this.picker.scale=Ce(ne)),this.add(this.helper.translate=Ce(J)),this.add(this.helper.rotate=Ce(he)),this.add(this.helper.scale=Ce(H)),this.picker.translate.visible=!1,this.picker.rotate.visible=!1,this.picker.scale.visible=!1}}class il extends m.Mesh{constructor(){super(new m.PlaneGeometry(1e5,1e5,2,2),new m.MeshBasicMaterial({visible:!1,wireframe:!0,side:m.DoubleSide,transparent:!0,opacity:.1,toneMapped:!1})),K(this,"isTransformControlsPlane",!0),K(this,"type","TransformControlsPlane"),K(this,"unitX",new m.Vector3(1,0,0)),K(this,"unitY",new m.Vector3(0,1,0)),K(this,"unitZ",new m.Vector3(0,0,1)),K(this,"tempVector",new m.Vector3),K(this,"dirVector",new m.Vector3),K(this,"alignVector",new m.Vector3),K(this,"tempMatrix",new m.Matrix4),K(this,"identityQuaternion",new m.Quaternion),K(this,"cameraQuaternion",new m.Quaternion),K(this,"worldPosition",new m.Vector3),K(this,"worldQuaternion",new m.Quaternion),K(this,"eye",new m.Vector3),K(this,"axis",null),K(this,"mode","translate"),K(this,"space","world"),K(this,"updateMatrixWorld",()=>{let t=this.space;switch(this.position.copy(this.worldPosition),this.mode==="scale"&&(t="local"),this.unitX.set(1,0,0).applyQuaternion(t==="local"?this.worldQuaternion:this.identityQuaternion),this.unitY.set(0,1,0).applyQuaternion(t==="local"?this.worldQuaternion:this.identityQuaternion),this.unitZ.set(0,0,1).applyQuaternion(t==="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()})}}var rl=Object.defineProperty,ol=(v,t,n)=>t in v?rl(v,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):v[t]=n,Ue=(v,t,n)=>(ol(v,typeof t!="symbol"?t+"":t,n),n);const Vn=new m.Euler(0,0,0,"YXZ"),In=new m.Vector3,al={type:"change"},ll={type:"lock"},cl={type:"unlock"},vo=Math.PI/2;class Ni extends m.EventDispatcher{constructor(t,n){super(),Ue(this,"camera"),Ue(this,"domElement"),Ue(this,"isLocked"),Ue(this,"minPolarAngle"),Ue(this,"maxPolarAngle"),Ue(this,"pointerSpeed"),Ue(this,"onMouseMove",i=>{if(!this.domElement||this.isLocked===!1)return;const o=i.movementX||i.mozMovementX||i.webkitMovementX||0,a=i.movementY||i.mozMovementY||i.webkitMovementY||0;Vn.setFromQuaternion(this.camera.quaternion),Vn.y-=o*.002*this.pointerSpeed,Vn.x-=a*.002*this.pointerSpeed,Vn.x=Math.max(vo-this.maxPolarAngle,Math.min(vo-this.minPolarAngle,Vn.x)),this.camera.quaternion.setFromEuler(Vn),this.dispatchEvent(al)}),Ue(this,"onPointerlockChange",()=>{this.domElement&&(this.domElement.ownerDocument.pointerLockElement===this.domElement?(this.dispatchEvent(ll),this.isLocked=!0):(this.dispatchEvent(cl),this.isLocked=!1))}),Ue(this,"onPointerlockError",()=>{console.error("THREE.PointerLockControls: Unable to use Pointer Lock API")}),Ue(this,"connect",i=>{this.domElement=i||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))}),Ue(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))}),Ue(this,"dispose",()=>{this.disconnect()}),Ue(this,"getObject",()=>this.camera),Ue(this,"direction",new m.Vector3(0,0,-1)),Ue(this,"getDirection",i=>i.copy(this.direction).applyQuaternion(this.camera.quaternion)),Ue(this,"moveForward",i=>{In.setFromMatrixColumn(this.camera.matrix,0),In.crossVectors(this.camera.up,In),this.camera.position.addScaledVector(In,i)}),Ue(this,"moveRight",i=>{In.setFromMatrixColumn(this.camera.matrix,0),this.camera.position.addScaledVector(In,i)}),Ue(this,"lock",()=>{this.domElement&&this.domElement.requestPointerLock()}),Ue(this,"unlock",()=>{this.domElement&&this.domElement.ownerDocument.exitPointerLock()}),this.camera=t,this.domElement=n,this.isLocked=!1,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.pointerSpeed=1,n&&this.connect(n)}}var hl=Object.defineProperty,pl=(v,t,n)=>t in v?hl(v,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):v[t]=n,ce=(v,t,n)=>(pl(v,typeof t!="symbol"?t+"":t,n),n);const _o=(v,t)=>(v%t+t)%t;class go extends m.EventDispatcher{constructor(t,n){super(),ce(this,"object"),ce(this,"domElement"),ce(this,"enabled",!0),ce(this,"target",new m.Vector3),ce(this,"minDistance",0),ce(this,"maxDistance",1/0),ce(this,"minZoom",0),ce(this,"maxZoom",1/0),ce(this,"minPolarAngle",0),ce(this,"maxPolarAngle",Math.PI),ce(this,"minAzimuthAngle",-1/0),ce(this,"maxAzimuthAngle",1/0),ce(this,"enableDamping",!1),ce(this,"dampingFactor",.05),ce(this,"enableZoom",!0),ce(this,"zoomSpeed",1),ce(this,"enableRotate",!0),ce(this,"rotateSpeed",1),ce(this,"enablePan",!0),ce(this,"panSpeed",1),ce(this,"screenSpacePanning",!0),ce(this,"keyPanSpeed",7),ce(this,"autoRotate",!1),ce(this,"autoRotateSpeed",2),ce(this,"reverseOrbit",!1),ce(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),ce(this,"mouseButtons",{LEFT:m.MOUSE.ROTATE,MIDDLE:m.MOUSE.DOLLY,RIGHT:m.MOUSE.PAN}),ce(this,"touches",{ONE:m.TOUCH.ROTATE,TWO:m.TOUCH.DOLLY_PAN}),ce(this,"target0"),ce(this,"position0"),ce(this,"zoom0"),ce(this,"_domElementKeyEvents",null),ce(this,"getPolarAngle"),ce(this,"getAzimuthalAngle"),ce(this,"setPolarAngle"),ce(this,"setAzimuthalAngle"),ce(this,"getDistance"),ce(this,"listenToKeyEvents"),ce(this,"saveState"),ce(this,"reset"),ce(this,"update"),ce(this,"connect"),ce(this,"dispose"),this.object=t,this.domElement=n,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.getPolarAngle=()=>y.phi,this.getAzimuthalAngle=()=>y.theta,this.setPolarAngle=z=>{let W=_o(z,2*Math.PI),ae=y.phi;ae<0&&(ae+=2*Math.PI),W<0&&(W+=2*Math.PI);let fe=Math.abs(W-ae);2*Math.PI-fe<fe&&(W<ae?W+=2*Math.PI:ae+=2*Math.PI),b.phi=W-ae,i.update()},this.setAzimuthalAngle=z=>{let W=_o(z,2*Math.PI),ae=y.theta;ae<0&&(ae+=2*Math.PI),W<0&&(W+=2*Math.PI);let fe=Math.abs(W-ae);2*Math.PI-fe<fe&&(W<ae?W+=2*Math.PI:ae+=2*Math.PI),b.theta=W-ae,i.update()},this.getDistance=()=>i.object.position.distanceTo(i.target),this.listenToKeyEvents=z=>{z.addEventListener("keydown",Mt),this._domElementKeyEvents=z},this.saveState=()=>{i.target0.copy(i.target),i.position0.copy(i.object.position),i.zoom0=i.object.zoom},this.reset=()=>{i.target.copy(i.target0),i.object.position.copy(i.position0),i.object.zoom=i.zoom0,i.object.updateProjectionMatrix(),i.dispatchEvent(o),i.update(),d=p.NONE},this.update=(()=>{const z=new m.Vector3,W=new m.Quaternion().setFromUnitVectors(t.up,new m.Vector3(0,1,0)),ae=W.clone().invert(),fe=new m.Vector3,Oe=new m.Quaternion,je=2*Math.PI;return function(){const fn=i.object.position;z.copy(fn).sub(i.target),z.applyQuaternion(W),y.setFromVector3(z),i.autoRotate&&d===p.NONE&&J(X()),i.enableDamping?(y.theta+=b.theta*i.dampingFactor,y.phi+=b.phi*i.dampingFactor):(y.theta+=b.theta,y.phi+=b.phi);let Xe=i.minAzimuthAngle,Ze=i.maxAzimuthAngle;return isFinite(Xe)&&isFinite(Ze)&&(Xe<-Math.PI?Xe+=je:Xe>Math.PI&&(Xe-=je),Ze<-Math.PI?Ze+=je:Ze>Math.PI&&(Ze-=je),Xe<=Ze?y.theta=Math.max(Xe,Math.min(Ze,y.theta)):y.theta=y.theta>(Xe+Ze)/2?Math.max(Xe,y.theta):Math.min(Ze,y.theta)),y.phi=Math.max(i.minPolarAngle,Math.min(i.maxPolarAngle,y.phi)),y.makeSafe(),y.radius*=C,y.radius=Math.max(i.minDistance,Math.min(i.maxDistance,y.radius)),i.enableDamping===!0?i.target.addScaledVector(A,i.dampingFactor):i.target.add(A),z.setFromSpherical(y),z.applyQuaternion(ae),fn.copy(i.target).add(z),i.object.lookAt(i.target),i.enableDamping===!0?(b.theta*=1-i.dampingFactor,b.phi*=1-i.dampingFactor,A.multiplyScalar(1-i.dampingFactor)):(b.set(0,0,0),A.set(0,0,0)),C=1,E||fe.distanceToSquared(i.object.position)>g||8*(1-Oe.dot(i.object.quaternion))>g?(i.dispatchEvent(o),fe.copy(i.object.position),Oe.copy(i.object.quaternion),E=!1,!0):!1}})(),this.connect=z=>{z===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),i.domElement=z,i.domElement.style.touchAction="none",i.domElement.addEventListener("contextmenu",mn),i.domElement.addEventListener("pointerdown",ct),i.domElement.addEventListener("pointercancel",Yn),i.domElement.addEventListener("wheel",Zn)},this.dispose=()=>{var z,W,ae,fe,Oe,je;(z=i.domElement)==null||z.removeEventListener("contextmenu",mn),(W=i.domElement)==null||W.removeEventListener("pointerdown",ct),(ae=i.domElement)==null||ae.removeEventListener("pointercancel",Yn),(fe=i.domElement)==null||fe.removeEventListener("wheel",Zn),(Oe=i.domElement)==null||Oe.ownerDocument.removeEventListener("pointermove",dn),(je=i.domElement)==null||je.ownerDocument.removeEventListener("pointerup",bt),i._domElementKeyEvents!==null&&i._domElementKeyEvents.removeEventListener("keydown",Mt)};const i=this,o={type:"change"},a={type:"start"},c={type:"end"},p={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let d=p.NONE;const g=1e-6,y=new m.Spherical,b=new m.Spherical;let C=1;const A=new m.Vector3;let E=!1;const k=new m.Vector2,O=new m.Vector2,R=new m.Vector2,N=new m.Vector2,F=new m.Vector2,M=new m.Vector2,D=new m.Vector2,U=new m.Vector2,S=new m.Vector2,T=[],j={};function X(){return 2*Math.PI/60/60*i.autoRotateSpeed}function Z(){return Math.pow(.95,i.zoomSpeed)}function J(z){i.reverseOrbit?b.theta+=z:b.theta-=z}function le(z){i.reverseOrbit?b.phi+=z:b.phi-=z}const he=(()=>{const z=new m.Vector3;return function(ae,fe){z.setFromMatrixColumn(fe,0),z.multiplyScalar(-ae),A.add(z)}})(),oe=(()=>{const z=new m.Vector3;return function(ae,fe){i.screenSpacePanning===!0?z.setFromMatrixColumn(fe,1):(z.setFromMatrixColumn(fe,0),z.crossVectors(i.object.up,z)),z.multiplyScalar(ae),A.add(z)}})(),re=(()=>{const z=new m.Vector3;return function(ae,fe){const Oe=i.domElement;if(Oe&&i.object instanceof m.PerspectiveCamera&&i.object.isPerspectiveCamera){const je=i.object.position;z.copy(je).sub(i.target);let qt=z.length();qt*=Math.tan(i.object.fov/2*Math.PI/180),he(2*ae*qt/Oe.clientHeight,i.object.matrix),oe(2*fe*qt/Oe.clientHeight,i.object.matrix)}else Oe&&i.object instanceof m.OrthographicCamera&&i.object.isOrthographicCamera?(he(ae*(i.object.right-i.object.left)/i.object.zoom/Oe.clientWidth,i.object.matrix),oe(fe*(i.object.top-i.object.bottom)/i.object.zoom/Oe.clientHeight,i.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),i.enablePan=!1)}})();function ne(z){i.object instanceof m.PerspectiveCamera&&i.object.isPerspectiveCamera?C/=z:i.object instanceof m.OrthographicCamera&&i.object.isOrthographicCamera?(i.object.zoom=Math.max(i.minZoom,Math.min(i.maxZoom,i.object.zoom*z)),i.object.updateProjectionMatrix(),E=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),i.enableZoom=!1)}function H(z){i.object instanceof m.PerspectiveCamera&&i.object.isPerspectiveCamera?C*=z:i.object instanceof m.OrthographicCamera&&i.object.isOrthographicCamera?(i.object.zoom=Math.max(i.minZoom,Math.min(i.maxZoom,i.object.zoom/z)),i.object.updateProjectionMatrix(),E=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),i.enableZoom=!1)}function Ce(z){k.set(z.clientX,z.clientY)}function ge(z){D.set(z.clientX,z.clientY)}function de(z){N.set(z.clientX,z.clientY)}function me(z){O.set(z.clientX,z.clientY),R.subVectors(O,k).multiplyScalar(i.rotateSpeed);const W=i.domElement;W&&(J(2*Math.PI*R.x/W.clientHeight),le(2*Math.PI*R.y/W.clientHeight)),k.copy(O),i.update()}function ke(z){U.set(z.clientX,z.clientY),S.subVectors(U,D),S.y>0?ne(Z()):S.y<0&&H(Z()),D.copy(U),i.update()}function B(z){F.set(z.clientX,z.clientY),M.subVectors(F,N).multiplyScalar(i.panSpeed),re(M.x,M.y),N.copy(F),i.update()}function we(z){z.deltaY<0?H(Z()):z.deltaY>0&&ne(Z()),i.update()}function ze(z){let W=!1;switch(z.code){case i.keys.UP:re(0,i.keyPanSpeed),W=!0;break;case i.keys.BOTTOM:re(0,-i.keyPanSpeed),W=!0;break;case i.keys.LEFT:re(i.keyPanSpeed,0),W=!0;break;case i.keys.RIGHT:re(-i.keyPanSpeed,0),W=!0;break}W&&(z.preventDefault(),i.update())}function Ge(){if(T.length==1)k.set(T[0].pageX,T[0].pageY);else{const z=.5*(T[0].pageX+T[1].pageX),W=.5*(T[0].pageY+T[1].pageY);k.set(z,W)}}function Te(){if(T.length==1)N.set(T[0].pageX,T[0].pageY);else{const z=.5*(T[0].pageX+T[1].pageX),W=.5*(T[0].pageY+T[1].pageY);N.set(z,W)}}function lt(){const z=T[0].pageX-T[1].pageX,W=T[0].pageY-T[1].pageY,ae=Math.sqrt(z*z+W*W);D.set(0,ae)}function Gn(){i.enableZoom&&lt(),i.enablePan&&Te()}function He(){i.enableZoom&&lt(),i.enableRotate&&Ge()}function Kn(z){if(T.length==1)O.set(z.pageX,z.pageY);else{const ae=Dt(z),fe=.5*(z.pageX+ae.x),Oe=.5*(z.pageY+ae.y);O.set(fe,Oe)}R.subVectors(O,k).multiplyScalar(i.rotateSpeed);const W=i.domElement;W&&(J(2*Math.PI*R.x/W.clientHeight),le(2*Math.PI*R.y/W.clientHeight)),k.copy(O)}function un(z){if(T.length==1)F.set(z.pageX,z.pageY);else{const W=Dt(z),ae=.5*(z.pageX+W.x),fe=.5*(z.pageY+W.y);F.set(ae,fe)}M.subVectors(F,N).multiplyScalar(i.panSpeed),re(M.x,M.y),N.copy(F)}function gt(z){const W=Dt(z),ae=z.pageX-W.x,fe=z.pageY-W.y,Oe=Math.sqrt(ae*ae+fe*fe);U.set(0,Oe),S.set(0,Math.pow(U.y/D.y,i.zoomSpeed)),ne(S.y),D.copy(U)}function Et(z){i.enableZoom&&gt(z),i.enablePan&&un(z)}function Ye(z){i.enableZoom&&gt(z),i.enableRotate&&Kn(z)}function ct(z){var W,ae;i.enabled!==!1&&(T.length===0&&((W=i.domElement)==null||W.ownerDocument.addEventListener("pointermove",dn),(ae=i.domElement)==null||ae.ownerDocument.addEventListener("pointerup",bt)),Qn(z),z.pointerType==="touch"?Ot(z):ws(z))}function dn(z){i.enabled!==!1&&(z.pointerType==="touch"?qn(z):Xn(z))}function bt(z){var W,ae,fe;kt(z),T.length===0&&((W=i.domElement)==null||W.releasePointerCapture(z.pointerId),(ae=i.domElement)==null||ae.ownerDocument.removeEventListener("pointermove",dn),(fe=i.domElement)==null||fe.ownerDocument.removeEventListener("pointerup",bt)),i.dispatchEvent(c),d=p.NONE}function Yn(z){kt(z)}function ws(z){let W;switch(z.button){case 0:W=i.mouseButtons.LEFT;break;case 1:W=i.mouseButtons.MIDDLE;break;case 2:W=i.mouseButtons.RIGHT;break;default:W=-1}switch(W){case m.MOUSE.DOLLY:if(i.enableZoom===!1)return;ge(z),d=p.DOLLY;break;case m.MOUSE.ROTATE:if(z.ctrlKey||z.metaKey||z.shiftKey){if(i.enablePan===!1)return;de(z),d=p.PAN}else{if(i.enableRotate===!1)return;Ce(z),d=p.ROTATE}break;case m.MOUSE.PAN:if(z.ctrlKey||z.metaKey||z.shiftKey){if(i.enableRotate===!1)return;Ce(z),d=p.ROTATE}else{if(i.enablePan===!1)return;de(z),d=p.PAN}break;default:d=p.NONE}d!==p.NONE&&i.dispatchEvent(a)}function Xn(z){if(i.enabled!==!1)switch(d){case p.ROTATE:if(i.enableRotate===!1)return;me(z);break;case p.DOLLY:if(i.enableZoom===!1)return;ke(z);break;case p.PAN:if(i.enablePan===!1)return;B(z);break}}function Zn(z){i.enabled===!1||i.enableZoom===!1||d!==p.NONE&&d!==p.ROTATE||(z.preventDefault(),i.dispatchEvent(a),we(z),i.dispatchEvent(c))}function Mt(z){i.enabled===!1||i.enablePan===!1||ze(z)}function Ot(z){switch(wt(z),T.length){case 1:switch(i.touches.ONE){case m.TOUCH.ROTATE:if(i.enableRotate===!1)return;Ge(),d=p.TOUCH_ROTATE;break;case m.TOUCH.PAN:if(i.enablePan===!1)return;Te(),d=p.TOUCH_PAN;break;default:d=p.NONE}break;case 2:switch(i.touches.TWO){case m.TOUCH.DOLLY_PAN:if(i.enableZoom===!1&&i.enablePan===!1)return;Gn(),d=p.TOUCH_DOLLY_PAN;break;case m.TOUCH.DOLLY_ROTATE:if(i.enableZoom===!1&&i.enableRotate===!1)return;He(),d=p.TOUCH_DOLLY_ROTATE;break;default:d=p.NONE}break;default:d=p.NONE}d!==p.NONE&&i.dispatchEvent(a)}function qn(z){switch(wt(z),d){case p.TOUCH_ROTATE:if(i.enableRotate===!1)return;Kn(z),i.update();break;case p.TOUCH_PAN:if(i.enablePan===!1)return;un(z),i.update();break;case p.TOUCH_DOLLY_PAN:if(i.enableZoom===!1&&i.enablePan===!1)return;Et(z),i.update();break;case p.TOUCH_DOLLY_ROTATE:if(i.enableZoom===!1&&i.enableRotate===!1)return;Ye(z),i.update();break;default:d=p.NONE}}function mn(z){i.enabled!==!1&&z.preventDefault()}function Qn(z){T.push(z)}function kt(z){delete j[z.pointerId];for(let W=0;W<T.length;W++)if(T[W].pointerId==z.pointerId){T.splice(W,1);return}}function wt(z){let W=j[z.pointerId];W===void 0&&(W=new m.Vector2,j[z.pointerId]=W),W.set(z.pageX,z.pageY)}function Dt(z){const W=z.pointerId===T[0].pointerId?T[1]:T[0];return j[W.pointerId]}n!==void 0&&this.connect(n),this.update()}}class ul extends go{constructor(t,n){super(t,n),this.screenSpacePanning=!1,this.mouseButtons.LEFT=m.MOUSE.PAN,this.mouseButtons.RIGHT=m.MOUSE.ROTATE,this.touches.ONE=m.TOUCH.PAN,this.touches.TWO=m.TOUCH.DOLLY_ROTATE}}class dl extends m.Loader{constructor(t){super(t),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(n){return new gl(n)}),this.register(function(n){return new Ml(n)}),this.register(function(n){return new kl(n)}),this.register(function(n){return new Ll(n)}),this.register(function(n){return new wl(n)}),this.register(function(n){return new yl(n)}),this.register(function(n){return new xl(n)}),this.register(function(n){return new Cl(n)}),this.register(function(n){return new _l(n)}),this.register(function(n){return new Pl(n)}),this.register(function(n){return new bl(n)}),this.register(function(n){return new Al(n)}),this.register(function(n){return new fl(n)}),this.register(function(n){return new Sl(n)}),this.register(function(n){return new Tl(n)})}load(t,n,i,o){const a=this;let c;this.resourcePath!==""?c=this.resourcePath:this.path!==""?c=this.path:c=m.LoaderUtils.extractUrlBase(t),this.manager.itemStart(t);const p=function(g){o?o(g):console.error(g),a.manager.itemError(t),a.manager.itemEnd(t)},d=new m.FileLoader(this.manager);d.setPath(this.path),d.setResponseType("arraybuffer"),d.setRequestHeader(this.requestHeader),d.setWithCredentials(this.withCredentials),d.load(t,function(g){try{a.parse(g,c,function(y){n(y),a.manager.itemEnd(t)},p)}catch(y){p(y)}},i,p)}setDRACOLoader(t){return this.dracoLoader=t,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(t){return this.ktx2Loader=t,this}setMeshoptDecoder(t){return this.meshoptDecoder=t,this}register(t){return this.pluginCallbacks.indexOf(t)===-1&&this.pluginCallbacks.push(t),this}unregister(t){return this.pluginCallbacks.indexOf(t)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(t),1),this}parse(t,n,i,o){let a;const c={},p={};if(typeof t=="string")a=JSON.parse(t);else if(t instanceof ArrayBuffer)if(m.LoaderUtils.decodeText(new Uint8Array(t.slice(0,4)))===bo){try{c[_e.KHR_BINARY_GLTF]=new El(t)}catch(y){o&&o(y);return}a=JSON.parse(c[_e.KHR_BINARY_GLTF].content)}else a=JSON.parse(m.LoaderUtils.decodeText(new Uint8Array(t)));else a=t;if(a.asset===void 0||a.asset.version[0]<2){o&&o(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const d=new Kl(a,{path:n||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});d.fileLoader.setRequestHeader(this.requestHeader);for(let g=0;g<this.pluginCallbacks.length;g++){const y=this.pluginCallbacks[g](d);p[y.name]=y,c[y.name]=!0}if(a.extensionsUsed)for(let g=0;g<a.extensionsUsed.length;++g){const y=a.extensionsUsed[g],b=a.extensionsRequired||[];switch(y){case _e.KHR_MATERIALS_UNLIT:c[y]=new vl;break;case _e.KHR_DRACO_MESH_COMPRESSION:c[y]=new Ol(a,this.dracoLoader);break;case _e.KHR_TEXTURE_TRANSFORM:c[y]=new Dl;break;case _e.KHR_MESH_QUANTIZATION:c[y]=new Vl;break;default:b.indexOf(y)>=0&&p[y]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+y+'".')}}d.setExtensions(c),d.setPlugins(p),d.parse(i,o)}parseAsync(t,n){const i=this;return new Promise(function(o,a){i.parse(t,n,o,a)})}}function ml(){let v={};return{get:function(t){return v[t]},add:function(t,n){v[t]=n},remove:function(t){delete v[t]},removeAll:function(){v={}}}}const _e={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_ANISOTROPY:"KHR_materials_anisotropy",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 fl{constructor(t){this.parser=t,this.name=_e.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const t=this.parser,n=this.parser.json.nodes||[];for(let i=0,o=n.length;i<o;i++){const a=n[i];a.extensions&&a.extensions[this.name]&&a.extensions[this.name].light!==void 0&&t._addNodeRef(this.cache,a.extensions[this.name].light)}}_loadLight(t){const n=this.parser,i="light:"+t;let o=n.cache.get(i);if(o)return o;const a=n.json,d=((a.extensions&&a.extensions[this.name]||{}).lights||[])[t];let g;const y=new m.Color(16777215);d.color!==void 0&&y.fromArray(d.color);const b=d.range!==void 0?d.range:0;switch(d.type){case"directional":g=new m.DirectionalLight(y),g.target.position.set(0,0,-1),g.add(g.target);break;case"point":g=new m.PointLight(y),g.distance=b;break;case"spot":g=new m.SpotLight(y),g.distance=b,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,g.angle=d.spot.outerConeAngle,g.penumbra=1-d.spot.innerConeAngle/d.spot.outerConeAngle,g.target.position.set(0,0,-1),g.add(g.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+d.type)}return g.position.set(0,0,0),g.decay=2,Yt(g,d),d.intensity!==void 0&&(g.intensity=d.intensity),g.name=n.createUniqueName(d.name||"light_"+t),o=Promise.resolve(g),n.cache.add(i,o),o}getDependency(t,n){if(t==="light")return this._loadLight(n)}createNodeAttachment(t){const n=this,i=this.parser,a=i.json.nodes[t],p=(a.extensions&&a.extensions[this.name]||{}).light;return p===void 0?null:this._loadLight(p).then(function(d){return i._getNodeRef(n.cache,p,d)})}}class vl{constructor(){this.name=_e.KHR_MATERIALS_UNLIT}getMaterialType(){return m.MeshBasicMaterial}extendParams(t,n,i){const o=[];t.color=new m.Color(1,1,1),t.opacity=1;const a=n.pbrMetallicRoughness;if(a){if(Array.isArray(a.baseColorFactor)){const c=a.baseColorFactor;t.color.fromArray(c),t.opacity=c[3]}a.baseColorTexture!==void 0&&o.push(i.assignTexture(t,"map",a.baseColorTexture,3001))}return Promise.all(o)}}class _l{constructor(t){this.parser=t,this.name=_e.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(t,n){const o=this.parser.json.materials[t];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const a=o.extensions[this.name].emissiveStrength;return a!==void 0&&(n.emissiveIntensity=a),Promise.resolve()}}class gl{constructor(t){this.parser=t,this.name=_e.KHR_MATERIALS_CLEARCOAT}getMaterialType(t){const i=this.parser.json.materials[t];return!i.extensions||!i.extensions[this.name]?null:m.MeshPhysicalMaterial}extendMaterialParams(t,n){const i=this.parser,o=i.json.materials[t];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const a=[],c=o.extensions[this.name];if(c.clearcoatFactor!==void 0&&(n.clearcoat=c.clearcoatFactor),c.clearcoatTexture!==void 0&&a.push(i.assignTexture(n,"clearcoatMap",c.clearcoatTexture)),c.clearcoatRoughnessFactor!==void 0&&(n.clearcoatRoughness=c.clearcoatRoughnessFactor),c.clearcoatRoughnessTexture!==void 0&&a.push(i.assignTexture(n,"clearcoatRoughnessMap",c.clearcoatRoughnessTexture)),c.clearcoatNormalTexture!==void 0&&(a.push(i.assignTexture(n,"clearcoatNormalMap",c.clearcoatNormalTexture)),c.clearcoatNormalTexture.scale!==void 0)){const p=c.clearcoatNormalTexture.scale;n.clearcoatNormalScale=new m.Vector2(p,p)}return Promise.all(a)}}class bl{constructor(t){this.parser=t,this.name=_e.KHR_MATERIALS_IRIDESCENCE}getMaterialType(t){const i=this.parser.json.materials[t];return!i.extensions||!i.extensions[this.name]?null:m.MeshPhysicalMaterial}extendMaterialParams(t,n){const i=this.parser,o=i.json.materials[t];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const a=[],c=o.extensions[this.name];return c.iridescenceFactor!==void 0&&(n.iridescence=c.iridescenceFactor),c.iridescenceTexture!==void 0&&a.push(i.assignTexture(n,"iridescenceMap",c.iridescenceTexture)),c.iridescenceIor!==void 0&&(n.iridescenceIOR=c.iridescenceIor),n.iridescenceThicknessRange===void 0&&(n.iridescenceThicknessRange=[100,400]),c.iridescenceThicknessMinimum!==void 0&&(n.iridescenceThicknessRange[0]=c.iridescenceThicknessMinimum),c.iridescenceThicknessMaximum!==void 0&&(n.iridescenceThicknessRange[1]=c.iridescenceThicknessMaximum),c.iridescenceThicknessTexture!==void 0&&a.push(i.assignTexture(n,"iridescenceThicknessMap",c.iridescenceThicknessTexture)),Promise.all(a)}}class wl{constructor(t){this.parser=t,this.name=_e.KHR_MATERIALS_SHEEN}getMaterialType(t){const i=this.parser.json.materials[t];return!i.extensions||!i.extensions[this.name]?null:m.MeshPhysicalMaterial}extendMaterialParams(t,n){const i=this.parser,o=i.json.materials[t];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const a=[];n.sheenColor=new m.Color(0,0,0),n.sheenRoughness=0,n.sheen=1;const c=o.extensions[this.name];return c.sheenColorFactor!==void 0&&n.sheenColor.fromArray(c.sheenColorFactor),c.sheenRoughnessFactor!==void 0&&(n.sheenRoughness=c.sheenRoughnessFactor),c.sheenColorTexture!==void 0&&a.push(i.assignTexture(n,"sheenColorMap",c.sheenColorTexture,3001)),c.sheenRoughnessTexture!==void 0&&a.push(i.assignTexture(n,"sheenRoughnessMap",c.sheenRoughnessTexture)),Promise.all(a)}}class yl{constructor(t){this.parser=t,this.name=_e.KHR_MATERIALS_TRANSMISSION}getMaterialType(t){const i=this.parser.json.materials[t];return!i.extensions||!i.extensions[this.name]?null:m.MeshPhysicalMaterial}extendMaterialParams(t,n){const i=this.parser,o=i.json.materials[t];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const a=[],c=o.extensions[this.name];return c.transmissionFactor!==void 0&&(n.transmission=c.transmissionFactor),c.transmissionTexture!==void 0&&a.push(i.assignTexture(n,"transmissionMap",c.transmissionTexture)),Promise.all(a)}}class xl{constructor(t){this.parser=t,this.name=_e.KHR_MATERIALS_VOLUME}getMaterialType(t){const i=this.parser.json.materials[t];return!i.extensions||!i.extensions[this.name]?null:m.MeshPhysicalMaterial}extendMaterialParams(t,n){const i=this.parser,o=i.json.materials[t];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const a=[],c=o.extensions[this.name];n.thickness=c.thicknessFactor!==void 0?c.thicknessFactor:0,c.thicknessTexture!==void 0&&a.push(i.assignTexture(n,"thicknessMap",c.thicknessTexture)),n.attenuationDistance=c.attenuationDistance||1/0;const p=c.attenuationColor||[1,1,1];return n.attenuationColor=new m.Color(p[0],p[1],p[2]),Promise.all(a)}}class Cl{constructor(t){this.parser=t,this.name=_e.KHR_MATERIALS_IOR}getMaterialType(t){const i=this.parser.json.materials[t];return!i.extensions||!i.extensions[this.name]?null:m.MeshPhysicalMaterial}extendMaterialParams(t,n){const o=this.parser.json.materials[t];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const a=o.extensions[this.name];return n.ior=a.ior!==void 0?a.ior:1.5,Promise.resolve()}}class Pl{constructor(t){this.parser=t,this.name=_e.KHR_MATERIALS_SPECULAR}getMaterialType(t){const i=this.parser.json.materials[t];return!i.extensions||!i.extensions[this.name]?null:m.MeshPhysicalMaterial}extendMaterialParams(t,n){const i=this.parser,o=i.json.materials[t];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const a=[],c=o.extensions[this.name];n.specularIntensity=c.specularFactor!==void 0?c.specularFactor:1,c.specularTexture!==void 0&&a.push(i.assignTexture(n,"specularIntensityMap",c.specularTexture));const p=c.specularColorFactor||[1,1,1];return n.specularColor=new m.Color(p[0],p[1],p[2]),c.specularColorTexture!==void 0&&a.push(i.assignTexture(n,"specularColorMap",c.specularColorTexture,3001)),Promise.all(a)}}class Al{constructor(t){this.parser=t,this.name=_e.KHR_MATERIALS_ANISOTROPY}getMaterialType(t){const i=this.parser.json.materials[t];return!i.extensions||!i.extensions[this.name]?null:m.MeshPhysicalMaterial}extendMaterialParams(t,n){const i=this.parser,o=i.json.materials[t];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const a=[],c=o.extensions[this.name];return c.anisotropyStrength!==void 0&&(n.anisotropy=c.anisotropyStrength),c.anisotropyRotation!==void 0&&(n.anisotropyRotation=c.anisotropyRotation),c.anisotropyTexture!==void 0&&a.push(i.assignTexture(n,"anisotropyMap",c.anisotropyTexture)),Promise.all(a)}}class Ml{constructor(t){this.parser=t,this.name=_e.KHR_TEXTURE_BASISU}loadTexture(t){const n=this.parser,i=n.json,o=i.textures[t];if(!o.extensions||!o.extensions[this.name])return null;const a=o.extensions[this.name],c=n.options.ktx2Loader;if(!c){if(i.extensionsRequired&&i.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return n.loadTextureImage(t,a.source,c)}}class kl{constructor(t){this.parser=t,this.name=_e.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(t){const n=this.name,i=this.parser,o=i.json,a=o.textures[t];if(!a.extensions||!a.extensions[n])return null;const c=a.extensions[n],p=o.images[c.source];let d=i.textureLoader;if(p.uri){const g=i.options.manager.getHandler(p.uri);g!==null&&(d=g)}return this.detectSupport().then(function(g){if(g)return i.loadTextureImage(t,c.source,d);if(o.extensionsRequired&&o.extensionsRequired.indexOf(n)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return i.loadTexture(t)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(t){const n=new Image;n.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",n.onload=n.onerror=function(){t(n.height===1)}})),this.isSupported}}class Ll{constructor(t){this.parser=t,this.name=_e.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(t){const n=this.name,i=this.parser,o=i.json,a=o.textures[t];if(!a.extensions||!a.extensions[n])return null;const c=a.extensions[n],p=o.images[c.source];let d=i.textureLoader;if(p.uri){const g=i.options.manager.getHandler(p.uri);g!==null&&(d=g)}return this.detectSupport().then(function(g){if(g)return i.loadTextureImage(t,c.source,d);if(o.extensionsRequired&&o.extensionsRequired.indexOf(n)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return i.loadTexture(t)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(t){const n=new Image;n.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",n.onload=n.onerror=function(){t(n.height===1)}})),this.isSupported}}class Sl{constructor(t){this.name=_e.EXT_MESHOPT_COMPRESSION,this.parser=t}loadBufferView(t){const n=this.parser.json,i=n.bufferViews[t];if(i.extensions&&i.extensions[this.name]){const o=i.extensions[this.name],a=this.parser.getDependency("buffer",o.buffer),c=this.parser.options.meshoptDecoder;if(!c||!c.supported){if(n.extensionsRequired&&n.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return a.then(function(p){const d=o.byteOffset||0,g=o.byteLength||0,y=o.count,b=o.byteStride,C=new Uint8Array(p,d,g);return c.decodeGltfBufferAsync?c.decodeGltfBufferAsync(y,b,C,o.mode,o.filter).then(function(A){return A.buffer}):c.ready.then(function(){const A=new ArrayBuffer(y*b);return c.decodeGltfBuffer(new Uint8Array(A),y,b,C,o.mode,o.filter),A})})}else return null}}class Tl{constructor(t){this.name=_e.EXT_MESH_GPU_INSTANCING,this.parser=t}createNodeMesh(t){const n=this.parser.json,i=n.nodes[t];if(!i.extensions||!i.extensions[this.name]||i.mesh===void 0)return null;const o=n.meshes[i.mesh];for(const g of o.primitives)if(g.mode!==ot.TRIANGLES&&g.mode!==ot.TRIANGLE_STRIP&&g.mode!==ot.TRIANGLE_FAN&&g.mode!==void 0)return null;const c=i.extensions[this.name].attributes,p=[],d={};for(const g in c)p.push(this.parser.getDependency("accessor",c[g]).then(y=>(d[g]=y,d[g])));return p.length<1?null:(p.push(this.parser.createNodeMesh(t)),Promise.all(p).then(g=>{const y=g.pop(),b=y.isGroup?y.children:[y],C=g[0].count,A=[];for(const E of b){const k=new m.Matrix4,O=new m.Vector3,R=new m.Quaternion,N=new m.Vector3(1,1,1),F=new m.InstancedMesh(E.geometry,E.material,C);for(let M=0;M<C;M++)d.TRANSLATION&&O.fromBufferAttribute(d.TRANSLATION,M),d.ROTATION&&R.fromBufferAttribute(d.ROTATION,M),d.SCALE&&N.fromBufferAttribute(d.SCALE,M),F.setMatrixAt(M,k.compose(O,R,N));for(const M in d)M!=="TRANSLATION"&&M!=="ROTATION"&&M!=="SCALE"&&E.geometry.setAttribute(M,d[M]);m.Object3D.prototype.copy.call(F,E),this.parser.assignFinalMaterial(F),A.push(F)}return y.isGroup?(y.clear(),y.add(...A),y):A[0]}))}}const bo="glTF",ds=12,wo={JSON:1313821514,BIN:5130562};class El{constructor(t){this.name=_e.KHR_BINARY_GLTF,this.content=null,this.body=null;const n=new DataView(t,0,ds);if(this.header={magic:m.LoaderUtils.decodeText(new Uint8Array(t.slice(0,4))),version:n.getUint32(4,!0),length:n.getUint32(8,!0)},this.header.magic!==bo)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const i=this.header.length-ds,o=new DataView(t,ds);let a=0;for(;a<i;){const c=o.getUint32(a,!0);a+=4;const p=o.getUint32(a,!0);if(a+=4,p===wo.JSON){const d=new Uint8Array(t,ds+a,c);this.content=m.LoaderUtils.decodeText(d)}else if(p===wo.BIN){const d=ds+a;this.body=t.slice(d,d+c)}a+=c}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class Ol{constructor(t,n){if(!n)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=_e.KHR_DRACO_MESH_COMPRESSION,this.json=t,this.dracoLoader=n,this.dracoLoader.preload()}decodePrimitive(t,n){const i=this.json,o=this.dracoLoader,a=t.extensions[this.name].bufferView,c=t.extensions[this.name].attributes,p={},d={},g={};for(const y in c){const b=zi[y]||y.toLowerCase();p[b]=c[y]}for(const y in t.attributes){const b=zi[y]||y.toLowerCase();if(c[y]!==void 0){const C=i.accessors[t.attributes[y]],A=Bn[C.componentType];g[b]=A.name,d[b]=C.normalized===!0}}return n.getDependency("bufferView",a).then(function(y){return new Promise(function(b){o.decodeDracoFile(y,function(C){for(const A in C.attributes){const E=C.attributes[A],k=d[A];k!==void 0&&(E.normalized=k)}b(C)},p,g)})})}}class Dl{constructor(){this.name=_e.KHR_TEXTURE_TRANSFORM}extendTexture(t,n){return(n.texCoord===void 0||n.texCoord===t.channel)&&n.offset===void 0&&n.rotation===void 0&&n.scale===void 0||(t=t.clone(),n.texCoord!==void 0&&(t.channel=n.texCoord),n.offset!==void 0&&t.offset.fromArray(n.offset),n.rotation!==void 0&&(t.rotation=n.rotation),n.scale!==void 0&&t.repeat.fromArray(n.scale),t.needsUpdate=!0),t}}class Vl{constructor(){this.name=_e.KHR_MESH_QUANTIZATION}}class yo extends m.Interpolant{constructor(t,n,i,o){super(t,n,i,o)}copySampleValue_(t){const n=this.resultBuffer,i=this.sampleValues,o=this.valueSize,a=t*o*3+o;for(let c=0;c!==o;c++)n[c]=i[a+c];return n}interpolate_(t,n,i,o){const a=this.resultBuffer,c=this.sampleValues,p=this.valueSize,d=p*2,g=p*3,y=o-n,b=(i-n)/y,C=b*b,A=C*b,E=t*g,k=E-g,O=-2*A+3*C,R=A-C,N=1-O,F=R-C+b;for(let M=0;M!==p;M++){const D=c[k+M+p],U=c[k+M+d]*y,S=c[E+M+p],T=c[E+M]*y;a[M]=N*D+F*U+O*S+R*T}return a}}const Il=new m.Quaternion;class Bl extends yo{interpolate_(t,n,i,o){const a=super.interpolate_(t,n,i,o);return Il.fromArray(a).normalize().toArray(a),a}}const ot={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},Bn={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},xo={9728:m.NearestFilter,9729:m.LinearFilter,9984:m.NearestMipmapNearestFilter,9985:m.LinearMipmapNearestFilter,9986:m.NearestMipmapLinearFilter,9987:m.LinearMipmapLinearFilter},Co={33071:m.ClampToEdgeWrapping,33648:m.MirroredRepeatWrapping,10497:m.RepeatWrapping},Ui={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},zi={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",...m.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"},Kt={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},Fl={CUBICSPLINE:void 0,LINEAR:m.InterpolateLinear,STEP:m.InterpolateDiscrete},Ri={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function Nl(v){return v.DefaultMaterial===void 0&&(v.DefaultMaterial=new m.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:m.FrontSide})),v.DefaultMaterial}function ln(v,t,n){for(const i in n.extensions)v[i]===void 0&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[i]=n.extensions[i])}function Yt(v,t){t.extras!==void 0&&(typeof t.extras=="object"?Object.assign(v.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function Ul(v,t,n){let i=!1,o=!1,a=!1;for(let g=0,y=t.length;g<y;g++){const b=t[g];if(b.POSITION!==void 0&&(i=!0),b.NORMAL!==void 0&&(o=!0),b.COLOR_0!==void 0&&(a=!0),i&&o&&a)break}if(!i&&!o&&!a)return Promise.resolve(v);const c=[],p=[],d=[];for(let g=0,y=t.length;g<y;g++){const b=t[g];if(i){const C=b.POSITION!==void 0?n.getDependency("accessor",b.POSITION):v.attributes.position;c.push(C)}if(o){const C=b.NORMAL!==void 0?n.getDependency("accessor",b.NORMAL):v.attributes.normal;p.push(C)}if(a){const C=b.COLOR_0!==void 0?n.getDependency("accessor",b.COLOR_0):v.attributes.color;d.push(C)}}return Promise.all([Promise.all(c),Promise.all(p),Promise.all(d)]).then(function(g){const y=g[0],b=g[1],C=g[2];return i&&(v.morphAttributes.position=y),o&&(v.morphAttributes.normal=b),a&&(v.morphAttributes.color=C),v.morphTargetsRelative=!0,v})}function zl(v,t){if(v.updateMorphTargets(),t.weights!==void 0)for(let n=0,i=t.weights.length;n<i;n++)v.morphTargetInfluences[n]=t.weights[n];if(t.extras&&Array.isArray(t.extras.targetNames)){const n=t.extras.targetNames;if(v.morphTargetInfluences.length===n.length){v.morphTargetDictionary={};for(let i=0,o=n.length;i<o;i++)v.morphTargetDictionary[n[i]]=i}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function Rl(v){let t;const n=v.extensions&&v.extensions[_e.KHR_DRACO_MESH_COMPRESSION];if(n?t="draco:"+n.bufferView+":"+n.indices+":"+ji(n.attributes):t=v.indices+":"+ji(v.attributes)+":"+v.mode,v.targets!==void 0)for(let i=0,o=v.targets.length;i<o;i++)t+=":"+ji(v.targets[i]);return t}function ji(v){let t="";const n=Object.keys(v).sort();for(let i=0,o=n.length;i<o;i++)t+=n[i]+":"+v[n[i]]+";";return t}function Gi(v){switch(v){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 jl(v){return v.search(/\.jpe?g($|\?)/i)>0||v.search(/^data\:image\/jpeg/)===0?"image/jpeg":v.search(/\.webp($|\?)/i)>0||v.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const Gl=new m.Matrix4;class Kl{constructor(t={},n={}){this.json=t,this.extensions={},this.plugins={},this.options=n,this.cache=new ml,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 i=!1,o=!1,a=-1;typeof navigator<"u"&&typeof navigator.userAgent<"u"&&(i=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,o=navigator.userAgent.indexOf("Firefox")>-1,a=o?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),typeof createImageBitmap>"u"||i||o&&a<98?this.textureLoader=new m.TextureLoader(this.options.manager):this.textureLoader=new m.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new m.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(t){this.extensions=t}setPlugins(t){this.plugins=t}parse(t,n){const i=this,o=this.json,a=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(c){return c._markDefs&&c._markDefs()}),Promise.all(this._invokeAll(function(c){return c.beforeRoot&&c.beforeRoot()})).then(function(){return Promise.all([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])}).then(function(c){const p={scene:c[0][o.scene||0],scenes:c[0],animations:c[1],cameras:c[2],asset:o.asset,parser:i,userData:{}};ln(a,p,o),Yt(p,o),Promise.all(i._invokeAll(function(d){return d.afterRoot&&d.afterRoot(p)})).then(function(){t(p)})}).catch(n)}_markDefs(){const t=this.json.nodes||[],n=this.json.skins||[],i=this.json.meshes||[];for(let o=0,a=n.length;o<a;o++){const c=n[o].joints;for(let p=0,d=c.length;p<d;p++)t[c[p]].isBone=!0}for(let o=0,a=t.length;o<a;o++){const c=t[o];c.mesh!==void 0&&(this._addNodeRef(this.meshCache,c.mesh),c.skin!==void 0&&(i[c.mesh].isSkinnedMesh=!0)),c.camera!==void 0&&this._addNodeRef(this.cameraCache,c.camera)}}_addNodeRef(t,n){n!==void 0&&(t.refs[n]===void 0&&(t.refs[n]=t.uses[n]=0),t.refs[n]++)}_getNodeRef(t,n,i){if(t.refs[n]<=1)return i;const o=i.clone(),a=(c,p)=>{const d=this.associations.get(c);d!=null&&this.associations.set(p,d);for(const[g,y]of c.children.entries())a(y,p.children[g])};return a(i,o),o.name+="_instance_"+t.uses[n]++,o}_invokeOne(t){const n=Object.values(this.plugins);n.push(this);for(let i=0;i<n.length;i++){const o=t(n[i]);if(o)return o}return null}_invokeAll(t){const n=Object.values(this.plugins);n.unshift(this);const i=[];for(let o=0;o<n.length;o++){const a=t(n[o]);a&&i.push(a)}return i}getDependency(t,n){const i=t+":"+n;let o=this.cache.get(i);if(!o){switch(t){case"scene":o=this.loadScene(n);break;case"node":o=this._invokeOne(function(a){return a.loadNode&&a.loadNode(n)});break;case"mesh":o=this._invokeOne(function(a){return a.loadMesh&&a.loadMesh(n)});break;case"accessor":o=this.loadAccessor(n);break;case"bufferView":o=this._invokeOne(function(a){return a.loadBufferView&&a.loadBufferView(n)});break;case"buffer":o=this.loadBuffer(n);break;case"material":o=this._invokeOne(function(a){return a.loadMaterial&&a.loadMaterial(n)});break;case"texture":o=this._invokeOne(function(a){return a.loadTexture&&a.loadTexture(n)});break;case"skin":o=this.loadSkin(n);break;case"animation":o=this._invokeOne(function(a){return a.loadAnimation&&a.loadAnimation(n)});break;case"camera":o=this.loadCamera(n);break;default:if(o=this._invokeOne(function(a){return a!=this&&a.getDependency&&a.getDependency(t,n)}),!o)throw new Error("Unknown type: "+t);break}this.cache.add(i,o)}return o}getDependencies(t){let n=this.cache.get(t);if(!n){const i=this,o=this.json[t+(t==="mesh"?"es":"s")]||[];n=Promise.all(o.map(function(a,c){return i.getDependency(t,c)})),this.cache.add(t,n)}return n}loadBuffer(t){const n=this.json.buffers[t],i=this.fileLoader;if(n.type&&n.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+n.type+" buffer type is not supported.");if(n.uri===void 0&&t===0)return Promise.resolve(this.extensions[_e.KHR_BINARY_GLTF].body);const o=this.options;return new Promise(function(a,c){i.load(m.LoaderUtils.resolveURL(n.uri,o.path),a,void 0,function(){c(new Error('THREE.GLTFLoader: Failed to load buffer "'+n.uri+'".'))})})}loadBufferView(t){const n=this.json.bufferViews[t];return this.getDependency("buffer",n.buffer).then(function(i){const o=n.byteLength||0,a=n.byteOffset||0;return i.slice(a,a+o)})}loadAccessor(t){const n=this,i=this.json,o=this.json.accessors[t];if(o.bufferView===void 0&&o.sparse===void 0){const c=Ui[o.type],p=Bn[o.componentType],d=o.normalized===!0,g=new p(o.count*c);return Promise.resolve(new m.BufferAttribute(g,c,d))}const a=[];return o.bufferView!==void 0?a.push(this.getDependency("bufferView",o.bufferView)):a.push(null),o.sparse!==void 0&&(a.push(this.getDependency("bufferView",o.sparse.indices.bufferView)),a.push(this.getDependency("bufferView",o.sparse.values.bufferView))),Promise.all(a).then(function(c){const p=c[0],d=Ui[o.type],g=Bn[o.componentType],y=g.BYTES_PER_ELEMENT,b=y*d,C=o.byteOffset||0,A=o.bufferView!==void 0?i.bufferViews[o.bufferView].byteStride:void 0,E=o.normalized===!0;let k,O;if(A&&A!==b){const R=Math.floor(C/A),N="InterleavedBuffer:"+o.bufferView+":"+o.componentType+":"+R+":"+o.count;let F=n.cache.get(N);F||(k=new g(p,R*A,o.count*A/y),F=new m.InterleavedBuffer(k,A/y),n.cache.add(N,F)),O=new m.InterleavedBufferAttribute(F,d,C%A/y,E)}else p===null?k=new g(o.count*d):k=new g(p,C,o.count*d),O=new m.BufferAttribute(k,d,E);if(o.sparse!==void 0){const R=Ui.SCALAR,N=Bn[o.sparse.indices.componentType],F=o.sparse.indices.byteOffset||0,M=o.sparse.values.byteOffset||0,D=new N(c[1],F,o.sparse.count*R),U=new g(c[2],M,o.sparse.count*d);p!==null&&(O=new m.BufferAttribute(O.array.slice(),O.itemSize,O.normalized));for(let S=0,T=D.length;S<T;S++){const j=D[S];if(O.setX(j,U[S*d]),d>=2&&O.setY(j,U[S*d+1]),d>=3&&O.setZ(j,U[S*d+2]),d>=4&&O.setW(j,U[S*d+3]),d>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return O})}loadTexture(t){const n=this.json,i=this.options,a=n.textures[t].source,c=n.images[a];let p=this.textureLoader;if(c.uri){const d=i.manager.getHandler(c.uri);d!==null&&(p=d)}return this.loadTextureImage(t,a,p)}loadTextureImage(t,n,i){const o=this,a=this.json,c=a.textures[t],p=a.images[n],d=(p.uri||p.bufferView)+":"+c.sampler;if(this.textureCache[d])return this.textureCache[d];const g=this.loadImageSource(n,i).then(function(y){y.flipY=!1,y.name=c.name||p.name||"",y.name===""&&typeof p.uri=="string"&&p.uri.startsWith("data:image/")===!1&&(y.name=p.uri);const C=(a.samplers||{})[c.sampler]||{};return y.magFilter=xo[C.magFilter]||m.LinearFilter,y.minFilter=xo[C.minFilter]||m.LinearMipmapLinearFilter,y.wrapS=Co[C.wrapS]||m.RepeatWrapping,y.wrapT=Co[C.wrapT]||m.RepeatWrapping,o.associations.set(y,{textures:t}),y}).catch(function(){return null});return this.textureCache[d]=g,g}loadImageSource(t,n){const i=this,o=this.json,a=this.options;if(this.sourceCache[t]!==void 0)return this.sourceCache[t].then(b=>b.clone());const c=o.images[t],p=self.URL||self.webkitURL;let d=c.uri||"",g=!1;if(c.bufferView!==void 0)d=i.getDependency("bufferView",c.bufferView).then(function(b){g=!0;const C=new Blob([b],{type:c.mimeType});return d=p.createObjectURL(C),d});else if(c.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+t+" is missing URI and bufferView");const y=Promise.resolve(d).then(function(b){return new Promise(function(C,A){let E=C;n.isImageBitmapLoader===!0&&(E=function(k){const O=new m.Texture(k);O.needsUpdate=!0,C(O)}),n.load(m.LoaderUtils.resolveURL(b,a.path),E,void 0,A)})}).then(function(b){return g===!0&&p.revokeObjectURL(d),b.userData.mimeType=c.mimeType||jl(c.uri),b}).catch(function(b){throw console.error("THREE.GLTFLoader: Couldn't load texture",d),b});return this.sourceCache[t]=y,y}assignTexture(t,n,i,o){const a=this;return this.getDependency("texture",i.index).then(function(c){if(!c)return null;if(i.texCoord!==void 0&&i.texCoord>0&&(c=c.clone(),c.channel=i.texCoord),a.extensions[_e.KHR_TEXTURE_TRANSFORM]){const p=i.extensions!==void 0?i.extensions[_e.KHR_TEXTURE_TRANSFORM]:void 0;if(p){const d=a.associations.get(c);c=a.extensions[_e.KHR_TEXTURE_TRANSFORM].extendTexture(c,p),a.associations.set(c,d)}}return o!==void 0&&("colorSpace"in c?c.colorSpace=o===3001?"srgb":"srgb-linear":c.encoding=o),t[n]=c,c})}assignFinalMaterial(t){const n=t.geometry;let i=t.material;const o=n.attributes.tangent===void 0,a=n.attributes.color!==void 0,c=n.attributes.normal===void 0;if(t.isPoints){const p="PointsMaterial:"+i.uuid;let d=this.cache.get(p);d||(d=new m.PointsMaterial,m.Material.prototype.copy.call(d,i),d.color.copy(i.color),d.map=i.map,d.sizeAttenuation=!1,this.cache.add(p,d)),i=d}else if(t.isLine){const p="LineBasicMaterial:"+i.uuid;let d=this.cache.get(p);d||(d=new m.LineBasicMaterial,m.Material.prototype.copy.call(d,i),d.color.copy(i.color),d.map=i.map,this.cache.add(p,d)),i=d}if(o||a||c){let p="ClonedMaterial:"+i.uuid+":";o&&(p+="derivative-tangents:"),a&&(p+="vertex-colors:"),c&&(p+="flat-shading:");let d=this.cache.get(p);d||(d=i.clone(),a&&(d.vertexColors=!0),c&&(d.flatShading=!0),o&&(d.normalScale&&(d.normalScale.y*=-1),d.clearcoatNormalScale&&(d.clearcoatNormalScale.y*=-1)),this.cache.add(p,d),this.associations.set(d,this.associations.get(i))),i=d}t.material=i}getMaterialType(){return m.MeshStandardMaterial}loadMaterial(t){const n=this,i=this.json,o=this.extensions,a=i.materials[t];let c;const p={},d=a.extensions||{},g=[];if(d[_e.KHR_MATERIALS_UNLIT]){const b=o[_e.KHR_MATERIALS_UNLIT];c=b.getMaterialType(),g.push(b.extendParams(p,a,n))}else{const b=a.pbrMetallicRoughness||{};if(p.color=new m.Color(1,1,1),p.opacity=1,Array.isArray(b.baseColorFactor)){const C=b.baseColorFactor;p.color.fromArray(C),p.opacity=C[3]}b.baseColorTexture!==void 0&&g.push(n.assignTexture(p,"map",b.baseColorTexture,3001)),p.metalness=b.metallicFactor!==void 0?b.metallicFactor:1,p.roughness=b.roughnessFactor!==void 0?b.roughnessFactor:1,b.metallicRoughnessTexture!==void 0&&(g.push(n.assignTexture(p,"metalnessMap",b.metallicRoughnessTexture)),g.push(n.assignTexture(p,"roughnessMap",b.metallicRoughnessTexture))),c=this._invokeOne(function(C){return C.getMaterialType&&C.getMaterialType(t)}),g.push(Promise.all(this._invokeAll(function(C){return C.extendMaterialParams&&C.extendMaterialParams(t,p)})))}a.doubleSided===!0&&(p.side=m.DoubleSide);const y=a.alphaMode||Ri.OPAQUE;if(y===Ri.BLEND?(p.transparent=!0,p.depthWrite=!1):(p.transparent=!1,y===Ri.MASK&&(p.alphaTest=a.alphaCutoff!==void 0?a.alphaCutoff:.5)),a.normalTexture!==void 0&&c!==m.MeshBasicMaterial&&(g.push(n.assignTexture(p,"normalMap",a.normalTexture)),p.normalScale=new m.Vector2(1,1),a.normalTexture.scale!==void 0)){const b=a.normalTexture.scale;p.normalScale.set(b,b)}return a.occlusionTexture!==void 0&&c!==m.MeshBasicMaterial&&(g.push(n.assignTexture(p,"aoMap",a.occlusionTexture)),a.occlusionTexture.strength!==void 0&&(p.aoMapIntensity=a.occlusionTexture.strength)),a.emissiveFactor!==void 0&&c!==m.MeshBasicMaterial&&(p.emissive=new m.Color().fromArray(a.emissiveFactor)),a.emissiveTexture!==void 0&&c!==m.MeshBasicMaterial&&g.push(n.assignTexture(p,"emissiveMap",a.emissiveTexture,3001)),Promise.all(g).then(function(){const b=new c(p);return a.name&&(b.name=a.name),Yt(b,a),n.associations.set(b,{materials:t}),a.extensions&&ln(o,b,a),b})}createUniqueName(t){const n=m.PropertyBinding.sanitizeNodeName(t||"");return n in this.nodeNamesUsed?n+"_"+ ++this.nodeNamesUsed[n]:(this.nodeNamesUsed[n]=0,n)}loadGeometries(t){const n=this,i=this.extensions,o=this.primitiveCache;function a(p){return i[_e.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(p,n).then(function(d){return Po(d,p,n)})}const c=[];for(let p=0,d=t.length;p<d;p++){const g=t[p],y=Rl(g),b=o[y];if(b)c.push(b.promise);else{let C;g.extensions&&g.extensions[_e.KHR_DRACO_MESH_COMPRESSION]?C=a(g):C=Po(new m.BufferGeometry,g,n),o[y]={primitive:g,promise:C},c.push(C)}}return Promise.all(c)}loadMesh(t){const n=this,i=this.json,o=this.extensions,a=i.meshes[t],c=a.primitives,p=[];for(let d=0,g=c.length;d<g;d++){const y=c[d].material===void 0?Nl(this.cache):this.getDependency("material",c[d].material);p.push(y)}return p.push(n.loadGeometries(c)),Promise.all(p).then(function(d){const g=d.slice(0,d.length-1),y=d[d.length-1],b=[];for(let A=0,E=y.length;A<E;A++){const k=y[A],O=c[A];let R;const N=g[A];if(O.mode===ot.TRIANGLES||O.mode===ot.TRIANGLE_STRIP||O.mode===ot.TRIANGLE_FAN||O.mode===void 0)R=a.isSkinnedMesh===!0?new m.SkinnedMesh(k,N):new m.Mesh(k,N),R.isSkinnedMesh===!0&&R.normalizeSkinWeights(),O.mode===ot.TRIANGLE_STRIP?R.geometry=lo(R.geometry,m.TriangleStripDrawMode):O.mode===ot.TRIANGLE_FAN&&(R.geometry=lo(R.geometry,m.TriangleFanDrawMode));else if(O.mode===ot.LINES)R=new m.LineSegments(k,N);else if(O.mode===ot.LINE_STRIP)R=new m.Line(k,N);else if(O.mode===ot.LINE_LOOP)R=new m.LineLoop(k,N);else if(O.mode===ot.POINTS)R=new m.Points(k,N);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+O.mode);Object.keys(R.geometry.morphAttributes).length>0&&zl(R,a),R.name=n.createUniqueName(a.name||"mesh_"+t),Yt(R,a),O.extensions&&ln(o,R,O),n.assignFinalMaterial(R),b.push(R)}for(let A=0,E=b.length;A<E;A++)n.associations.set(b[A],{meshes:t,primitives:A});if(b.length===1)return a.extensions&&ln(o,b[0],a),b[0];const C=new m.Group;a.extensions&&ln(o,C,a),n.associations.set(C,{meshes:t});for(let A=0,E=b.length;A<E;A++)C.add(b[A]);return C})}loadCamera(t){let n;const i=this.json.cameras[t],o=i[i.type];if(!o){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return i.type==="perspective"?n=new m.PerspectiveCamera(m.MathUtils.radToDeg(o.yfov),o.aspectRatio||1,o.znear||1,o.zfar||2e6):i.type==="orthographic"&&(n=new m.OrthographicCamera(-o.xmag,o.xmag,o.ymag,-o.ymag,o.znear,o.zfar)),i.name&&(n.name=this.createUniqueName(i.name)),Yt(n,i),Promise.resolve(n)}loadSkin(t){const n=this.json.skins[t],i=[];for(let o=0,a=n.joints.length;o<a;o++)i.push(this._loadNodeShallow(n.joints[o]));return n.inverseBindMatrices!==void 0?i.push(this.getDependency("accessor",n.inverseBindMatrices)):i.push(null),Promise.all(i).then(function(o){const a=o.pop(),c=o,p=[],d=[];for(let g=0,y=c.length;g<y;g++){const b=c[g];if(b){p.push(b);const C=new m.Matrix4;a!==null&&C.fromArray(a.array,g*16),d.push(C)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',n.joints[g])}return new m.Skeleton(p,d)})}loadAnimation(t){const i=this.json.animations[t],o=i.name?i.name:"animation_"+t,a=[],c=[],p=[],d=[],g=[];for(let y=0,b=i.channels.length;y<b;y++){const C=i.channels[y],A=i.samplers[C.sampler],E=C.target,k=E.node,O=i.parameters!==void 0?i.parameters[A.input]:A.input,R=i.parameters!==void 0?i.parameters[A.output]:A.output;E.node!==void 0&&(a.push(this.getDependency("node",k)),c.push(this.getDependency("accessor",O)),p.push(this.getDependency("accessor",R)),d.push(A),g.push(E))}return Promise.all([Promise.all(a),Promise.all(c),Promise.all(p),Promise.all(d),Promise.all(g)]).then(function(y){const b=y[0],C=y[1],A=y[2],E=y[3],k=y[4],O=[];for(let R=0,N=b.length;R<N;R++){const F=b[R],M=C[R],D=A[R],U=E[R],S=k[R];if(F===void 0)continue;F.updateMatrix();let T;switch(Kt[S.path]){case Kt.weights:T=m.NumberKeyframeTrack;break;case Kt.rotation:T=m.QuaternionKeyframeTrack;break;case Kt.position:case Kt.scale:default:T=m.VectorKeyframeTrack;break}const j=F.name?F.name:F.uuid,X=U.interpolation!==void 0?Fl[U.interpolation]:m.InterpolateLinear,Z=[];Kt[S.path]===Kt.weights?F.traverse(function(le){le.morphTargetInfluences&&Z.push(le.name?le.name:le.uuid)}):Z.push(j);let J=D.array;if(D.normalized){const le=Gi(J.constructor),he=new Float32Array(J.length);for(let oe=0,re=J.length;oe<re;oe++)he[oe]=J[oe]*le;J=he}for(let le=0,he=Z.length;le<he;le++){const oe=new T(Z[le]+"."+Kt[S.path],M.array,J,X);U.interpolation==="CUBICSPLINE"&&(oe.createInterpolant=function(ne){const H=this instanceof m.QuaternionKeyframeTrack?Bl:yo;return new H(this.times,this.values,this.getValueSize()/3,ne)},oe.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0),O.push(oe)}}return new m.AnimationClip(o,void 0,O)})}createNodeMesh(t){const n=this.json,i=this,o=n.nodes[t];return o.mesh===void 0?null:i.getDependency("mesh",o.mesh).then(function(a){const c=i._getNodeRef(i.meshCache,o.mesh,a);return o.weights!==void 0&&c.traverse(function(p){if(p.isMesh)for(let d=0,g=o.weights.length;d<g;d++)p.morphTargetInfluences[d]=o.weights[d]}),c})}loadNode(t){const n=this.json,i=this,o=n.nodes[t],a=i._loadNodeShallow(t),c=[],p=o.children||[];for(let g=0,y=p.length;g<y;g++)c.push(i.getDependency("node",p[g]));const d=o.skin===void 0?Promise.resolve(null):i.getDependency("skin",o.skin);return Promise.all([a,Promise.all(c),d]).then(function(g){const y=g[0],b=g[1],C=g[2];C!==null&&y.traverse(function(A){A.isSkinnedMesh&&A.bind(C,Gl)});for(let A=0,E=b.length;A<E;A++)y.add(b[A]);return y})}_loadNodeShallow(t){const n=this.json,i=this.extensions,o=this;if(this.nodeCache[t]!==void 0)return this.nodeCache[t];const a=n.nodes[t],c=a.name?o.createUniqueName(a.name):"",p=[],d=o._invokeOne(function(g){return g.createNodeMesh&&g.createNodeMesh(t)});return d&&p.push(d),a.camera!==void 0&&p.push(o.getDependency("camera",a.camera).then(function(g){return o._getNodeRef(o.cameraCache,a.camera,g)})),o._invokeAll(function(g){return g.createNodeAttachment&&g.createNodeAttachment(t)}).forEach(function(g){p.push(g)}),this.nodeCache[t]=Promise.all(p).then(function(g){let y;if(a.isBone===!0?y=new m.Bone:g.length>1?y=new m.Group:g.length===1?y=g[0]:y=new m.Object3D,y!==g[0])for(let b=0,C=g.length;b<C;b++)y.add(g[b]);if(a.name&&(y.userData.name=a.name,y.name=c),Yt(y,a),a.extensions&&ln(i,y,a),a.matrix!==void 0){const b=new m.Matrix4;b.fromArray(a.matrix),y.applyMatrix4(b)}else a.translation!==void 0&&y.position.fromArray(a.translation),a.rotation!==void 0&&y.quaternion.fromArray(a.rotation),a.scale!==void 0&&y.scale.fromArray(a.scale);return o.associations.has(y)||o.associations.set(y,{}),o.associations.get(y).nodes=t,y}),this.nodeCache[t]}loadScene(t){const n=this.extensions,i=this.json.scenes[t],o=this,a=new m.Group;i.name&&(a.name=o.createUniqueName(i.name)),Yt(a,i),i.extensions&&ln(n,a,i);const c=i.nodes||[],p=[];for(let d=0,g=c.length;d<g;d++)p.push(o.getDependency("node",c[d]));return Promise.all(p).then(function(d){for(let y=0,b=d.length;y<b;y++)a.add(d[y]);const g=y=>{const b=new Map;for(const[C,A]of o.associations)(C instanceof m.Material||C instanceof m.Texture)&&b.set(C,A);return y.traverse(C=>{const A=o.associations.get(C);A!=null&&b.set(C,A)}),b};return o.associations=g(a),a})}}function Yl(v,t,n){const i=t.attributes,o=new m.Box3;if(i.POSITION!==void 0){const p=n.json.accessors[i.POSITION],d=p.min,g=p.max;if(d!==void 0&&g!==void 0){if(o.set(new m.Vector3(d[0],d[1],d[2]),new m.Vector3(g[0],g[1],g[2])),p.normalized){const y=Gi(Bn[p.componentType]);o.min.multiplyScalar(y),o.max.multiplyScalar(y)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const a=t.targets;if(a!==void 0){const p=new m.Vector3,d=new m.Vector3;for(let g=0,y=a.length;g<y;g++){const b=a[g];if(b.POSITION!==void 0){const C=n.json.accessors[b.POSITION],A=C.min,E=C.max;if(A!==void 0&&E!==void 0){if(d.setX(Math.max(Math.abs(A[0]),Math.abs(E[0]))),d.setY(Math.max(Math.abs(A[1]),Math.abs(E[1]))),d.setZ(Math.max(Math.abs(A[2]),Math.abs(E[2]))),C.normalized){const k=Gi(Bn[C.componentType]);d.multiplyScalar(k)}p.max(d)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}o.expandByVector(p)}v.boundingBox=o;const c=new m.Sphere;o.getCenter(c.center),c.radius=o.min.distanceTo(o.max)/2,v.boundingSphere=c}function Po(v,t,n){const i=t.attributes,o=[];function a(c,p){return n.getDependency("accessor",c).then(function(d){v.setAttribute(p,d)})}for(const c in i){const p=zi[c]||c.toLowerCase();p in v.attributes||o.push(a(i[c],p))}if(t.indices!==void 0&&!v.index){const c=n.getDependency("accessor",t.indices).then(function(p){v.setIndex(p)});o.push(c)}return Yt(v,t),Yl(v,t,n),Promise.all(o).then(function(){return t.targets!==void 0?Ul(v,t.targets,n):v})}class Ao extends m.ExtrudeGeometry{constructor(t,n={}){const{bevelEnabled:i=!1,bevelSize:o=8,bevelThickness:a=10,font:c,height:p=50,size:d=100,lineHeight:g=1,letterSpacing:y=0,...b}=n;if(c===void 0)super();else{const C=c.generateShapes(t,d,{lineHeight:g,letterSpacing:y});super(C,{...b,bevelEnabled:i,bevelSize:o,bevelThickness:a,depth:p})}this.type="TextGeometry"}}const Xl={uniforms:{tDiffuse:{value:null},h:{value:1/512}},vertexShader:`
9
9
  varying vec2 vUv;
10
10
 
11
11
  void main() {
@@ -37,7 +37,7 @@
37
37
  gl_FragColor = sum;
38
38
 
39
39
  }
40
- `},tl={uniforms:{tDiffuse:{value:null},v:{value:1/512}},vertexShader:`
40
+ `},Zl={uniforms:{tDiffuse:{value:null},v:{value:1/512}},vertexShader:`
41
41
  varying vec2 vUv;
42
42
 
43
43
  void main() {
@@ -70,24 +70,29 @@
70
70
  gl_FragColor = sum;
71
71
 
72
72
  }
73
- `};function Kr(v,n,i){const s=i.length-v-1;if(n>=i[s])return s-1;if(n<=i[v])return v;let o=v,l=s,p=Math.floor((o+l)/2);for(;n<i[p]||n>=i[p+1];)n<i[p]?l=p:o=p,p=Math.floor((o+l)/2);return p}function nl(v,n,i,s){const o=[],l=[],p=[];o[0]=1;for(let u=1;u<=i;++u){l[u]=n-s[v+1-u],p[u]=s[v+u]-n;let d=0;for(let w=0;w<u;++w){const _=p[w+1],y=l[u-w],C=o[w]/(_+y);o[w]=d+_*C,d=y*C}o[u]=d}return o}function il(v,n,i,s){const o=Kr(v,s,n),l=nl(o,s,v,n),p=new f.Vector4(0,0,0,0);for(let u=0;u<=v;++u){const d=i[o-v+u],w=l[u],_=d.w*w;p.x+=d.x*_,p.y+=d.y*_,p.z+=d.z*_,p.w+=d.w*w}return p}function sl(v,n,i,s,o){const l=[];for(let y=0;y<=i;++y)l[y]=0;const p=[];for(let y=0;y<=s;++y)p[y]=l.slice(0);const u=[];for(let y=0;y<=i;++y)u[y]=l.slice(0);u[0][0]=1;const d=l.slice(0),w=l.slice(0);for(let y=1;y<=i;++y){d[y]=n-o[v+1-y],w[y]=o[v+y]-n;let C=0;for(let M=0;M<y;++M){const E=w[M+1],V=d[y-M];u[y][M]=E+V;const I=u[M][y-1]/u[y][M];u[M][y]=C+E*I,C=V*I}u[y][y]=C}for(let y=0;y<=i;++y)p[0][y]=u[y][i];for(let y=0;y<=i;++y){let C=0,M=1;const E=[];for(let V=0;V<=i;++V)E[V]=l.slice(0);E[0][0]=1;for(let V=1;V<=s;++V){let I=0;const F=y-V,z=i-V;y>=V&&(E[M][0]=E[C][0]/u[z+1][F],I=E[M][0]*u[F][z]);const N=F>=-1?1:-F,T=y-1<=z?V-1:i-y;for(let $=N;$<=T;++$)E[M][$]=(E[C][$]-E[C][$-1])/u[z+1][F+$],I+=E[M][$]*u[F+$][z];y<=z&&(E[M][V]=-E[C][V-1]/u[z+1][y],I+=E[M][V]*u[y][z]),p[V][y]=I;const Q=C;C=M,M=Q}}let _=i;for(let y=1;y<=s;++y){for(let C=0;C<=i;++C)p[y][C]*=_;_*=i-y}return p}function rl(v,n,i,s,o){const l=o<v?o:v,p=[],u=Kr(v,s,n),d=sl(u,s,v,l,n),w=[];for(let _=0;_<i.length;++_){const y=i[_].clone(),C=y.w;y.x*=C,y.y*=C,y.z*=C,w[_]=y}for(let _=0;_<=l;++_){const y=w[u-v].clone().multiplyScalar(d[_][0]);for(let C=1;C<=v;++C)y.add(w[u-v+C].clone().multiplyScalar(d[_][C]));p[_]=y}for(let _=l+1;_<=o+1;++_)p[_]=new f.Vector4(0,0,0);return p}function ol(v,n){let i=1;for(let o=2;o<=v;++o)i*=o;let s=1;for(let o=2;o<=n;++o)s*=o;for(let o=2;o<=v-n;++o)s*=o;return i/s}function al(v){const n=v.length,i=[],s=[];for(let l=0;l<n;++l){const p=v[l];i[l]=new f.Vector3(p.x,p.y,p.z),s[l]=p.w}const o=[];for(let l=0;l<n;++l){const p=i[l].clone();for(let u=1;u<=l;++u)p.sub(o[l-u].clone().multiplyScalar(ol(l,u)*s[u]));o[l]=p.divideScalar(s[0])}return o}function ll(v,n,i,s,o){const l=rl(v,n,i,s,o);return al(l)}class $r extends f.Curve{constructor(n,i,s,o,l){super(),this.degree=n,this.knots=i,this.controlPoints=[],this.startKnot=o||0,this.endKnot=l||this.knots.length-1;for(let p=0;p<s.length;++p){const u=s[p];this.controlPoints[p]=new f.Vector4(u.x,u.y,u.z,u.w)}}getPoint(n,i){const s=i||new f.Vector3,o=this.knots[this.startKnot]+n*(this.knots[this.endKnot]-this.knots[this.startKnot]),l=il(this.degree,this.knots,this.controlPoints,o);return l.w!=1&&l.divideScalar(l.w),s.set(l.x,l.y,l.z)}getTangent(n,i){const s=i||new f.Vector3,o=this.knots[0]+n*(this.knots[this.knots.length-1]-this.knots[0]),l=ll(this.degree,this.knots,this.controlPoints,o,1);return s.copy(l[1]).normalize(),s}}let oe,Ae,Ge;class cl extends f.Loader{constructor(n){super(n)}load(n,i,s,o){const l=this,p=l.path===""?f.LoaderUtils.extractUrlBase(n):l.path,u=new f.FileLoader(this.manager);u.setPath(l.path),u.setResponseType("arraybuffer"),u.setRequestHeader(l.requestHeader),u.setWithCredentials(l.withCredentials),u.load(n,function(d){try{i(l.parse(d,p))}catch(w){o?o(w):console.error(w),l.manager.itemError(n)}},s,o)}parse(n,i){if(fl(n))oe=new ml().parse(n);else{const o=Wr(n);if(!vl(o))throw new Error("THREE.FBXLoader: Unknown format.");if(qr(o)<7e3)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+qr(o));oe=new dl().parse(o)}const s=new f.TextureLoader(this.manager).setPath(this.resourcePath||i).setCrossOrigin(this.crossOrigin);return new pl(s,this.manager).parse(oe)}}class pl{constructor(n,i){this.textureLoader=n,this.manager=i}parse(){Ae=this.parseConnections();const n=this.parseImages(),i=this.parseTextures(n),s=this.parseMaterials(i),o=this.parseDeformers(),l=new hl().parse(o);return this.parseScene(o,l,s),Ge}parseConnections(){const n=new Map;return"Connections"in oe&&oe.Connections.connections.forEach(function(s){const o=s[0],l=s[1],p=s[2];n.has(o)||n.set(o,{parents:[],children:[]});const u={ID:l,relationship:p};n.get(o).parents.push(u),n.has(l)||n.set(l,{parents:[],children:[]});const d={ID:o,relationship:p};n.get(l).children.push(d)}),n}parseImages(){const n={},i={};if("Video"in oe.Objects){const s=oe.Objects.Video;for(const o in s){const l=s[o],p=parseInt(o);if(n[p]=l.RelativeFilename||l.Filename,"Content"in l){const u=l.Content instanceof ArrayBuffer&&l.Content.byteLength>0,d=typeof l.Content=="string"&&l.Content!=="";if(u||d){const w=this.parseImage(s[o]);i[l.RelativeFilename||l.Filename]=w}}}}for(const s in n){const o=n[s];i[o]!==void 0?n[s]=i[o]:n[s]=n[s].split("\\").pop()}return n}parseImage(n){const i=n.Content,s=n.RelativeFilename||n.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 i=="string")return"data:"+l+";base64,"+i;{const p=new Uint8Array(i);return window.URL.createObjectURL(new Blob([p],{type:l}))}}parseTextures(n){const i=new Map;if("Texture"in oe.Objects){const s=oe.Objects.Texture;for(const o in s){const l=this.parseTexture(s[o],n);i.set(parseInt(o),l)}}return i}parseTexture(n,i){const s=this.loadTexture(n,i);s.ID=n.id,s.name=n.attrName;const o=n.WrapModeU,l=n.WrapModeV,p=o!==void 0?o.value:0,u=l!==void 0?l.value:0;if(s.wrapS=p===0?f.RepeatWrapping:f.ClampToEdgeWrapping,s.wrapT=u===0?f.RepeatWrapping:f.ClampToEdgeWrapping,"Scaling"in n){const d=n.Scaling.value;s.repeat.x=d[0],s.repeat.y=d[1]}return s}loadTexture(n,i){let s;const o=this.textureLoader.path,l=Ae.get(n.id).children;l!==void 0&&l.length>0&&i[l[0].ID]!==void 0&&(s=i[l[0].ID],(s.indexOf("blob:")===0||s.indexOf("data:")===0)&&this.textureLoader.setPath(void 0));let p;const u=n.FileName.slice(-3).toLowerCase();if(u==="tga"){const d=this.manager.getHandler(".tga");d===null?(console.warn("FBXLoader: TGA loader not found, creating placeholder texture for",n.RelativeFilename),p=new f.Texture):(d.setPath(this.textureLoader.path),p=d.load(s))}else u==="psd"?(console.warn("FBXLoader: PSD textures are not supported, creating placeholder texture for",n.RelativeFilename),p=new f.Texture):p=this.textureLoader.load(s);return this.textureLoader.setPath(o),p}parseMaterials(n){const i=new Map;if("Material"in oe.Objects){const s=oe.Objects.Material;for(const o in s){const l=this.parseMaterial(s[o],n);l!==null&&i.set(parseInt(o),l)}}return i}parseMaterial(n,i){const s=n.id,o=n.attrName;let l=n.ShadingModel;if(typeof l=="object"&&(l=l.value),!Ae.has(s))return null;const p=this.parseParameters(n,i,s);let u;switch(l.toLowerCase()){case"phong":u=new f.MeshPhongMaterial;break;case"lambert":u=new f.MeshLambertMaterial;break;default:console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.',l),u=new f.MeshPhongMaterial;break}return u.setValues(p),u.name=o,u}parseParameters(n,i,s){const o={};n.BumpFactor&&(o.bumpScale=n.BumpFactor.value),n.Diffuse?o.color=new f.Color().fromArray(n.Diffuse.value):n.DiffuseColor&&(n.DiffuseColor.type==="Color"||n.DiffuseColor.type==="ColorRGB")&&(o.color=new f.Color().fromArray(n.DiffuseColor.value)),n.DisplacementFactor&&(o.displacementScale=n.DisplacementFactor.value),n.Emissive?o.emissive=new f.Color().fromArray(n.Emissive.value):n.EmissiveColor&&(n.EmissiveColor.type==="Color"||n.EmissiveColor.type==="ColorRGB")&&(o.emissive=new f.Color().fromArray(n.EmissiveColor.value)),n.EmissiveFactor&&(o.emissiveIntensity=parseFloat(n.EmissiveFactor.value)),n.Opacity&&(o.opacity=parseFloat(n.Opacity.value)),o.opacity<1&&(o.transparent=!0),n.ReflectionFactor&&(o.reflectivity=n.ReflectionFactor.value),n.Shininess&&(o.shininess=n.Shininess.value),n.Specular?o.specular=new f.Color().fromArray(n.Specular.value):n.SpecularColor&&n.SpecularColor.type==="Color"&&(o.specular=new f.Color().fromArray(n.SpecularColor.value));const l=this;return Ae.get(s).children.forEach(function(p){const u=p.relationship;switch(u){case"Bump":o.bumpMap=l.getTexture(i,p.ID);break;case"Maya|TEX_ao_map":o.aoMap=l.getTexture(i,p.ID);break;case"DiffuseColor":case"Maya|TEX_color_map":o.map=l.getTexture(i,p.ID),o.map!==void 0&&("colorSpace"in o.map?o.map.colorSpace="srgb":o.map.encoding=3001);break;case"DisplacementColor":o.displacementMap=l.getTexture(i,p.ID);break;case"EmissiveColor":o.emissiveMap=l.getTexture(i,p.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(i,p.ID);break;case"ReflectionColor":o.envMap=l.getTexture(i,p.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(i,p.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(i,p.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.",u);break}}),o}getTexture(n,i){return"LayeredTexture"in oe.Objects&&i in oe.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),i=Ae.get(i).children[0].ID),n.get(i)}parseDeformers(){const n={},i={};if("Deformer"in oe.Objects){const s=oe.Objects.Deformer;for(const o in s){const l=s[o],p=Ae.get(parseInt(o));if(l.attrType==="Skin"){const u=this.parseSkeleton(p,s);u.ID=o,p.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),u.geometryID=p.parents[0].ID,n[o]=u}else if(l.attrType==="BlendShape"){const u={id:o};u.rawTargets=this.parseMorphTargets(p,s),u.id=o,p.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),i[o]=u}}}return{skeletons:n,morphTargets:i}}parseSkeleton(n,i){const s=[];return n.children.forEach(function(o){const l=i[o.ID];if(l.attrType!=="Cluster")return;const p={ID:o.ID,indices:[],weights:[],transformLink:new f.Matrix4().fromArray(l.TransformLink.a)};"Indexes"in l&&(p.indices=l.Indexes.a,p.weights=l.Weights.a),s.push(p)}),{rawBones:s,bones:[]}}parseMorphTargets(n,i){const s=[];for(let o=0;o<n.children.length;o++){const l=n.children[o],p=i[l.ID],u={name:p.attrName,initialWeight:p.DeformPercent,id:p.id,fullWeights:p.FullWeights.a};if(p.attrType!=="BlendShapeChannel")return;u.geoID=Ae.get(parseInt(l.ID)).children.filter(function(d){return d.relationship===void 0})[0].ID,s.push(u)}return s}parseScene(n,i,s){Ge=new f.Group;const o=this.parseModels(n.skeletons,i,s),l=oe.Objects.Model,p=this;o.forEach(function(d){const w=l[d.ID];p.setLookAtProperties(d,w),Ae.get(d.ID).parents.forEach(function(y){const C=o.get(y.ID);C!==void 0&&C.add(d)}),d.parent===null&&Ge.add(d)}),this.bindSkeleton(n.skeletons,i,o),this.createAmbientLight(),Ge.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=Qr(d.userData.transformData);d.applyMatrix4(w),d.updateWorldMatrix()}});const u=new ul().parse();Ge.children.length===1&&Ge.children[0].isGroup&&(Ge.children[0].animations=u,Ge=Ge.children[0]),Ge.animations=u}parseModels(n,i,s){const o=new Map,l=oe.Objects.Model;for(const p in l){const u=parseInt(p),d=l[p],w=Ae.get(u);let _=this.buildSkeleton(w,n,u,d.attrName);if(!_){switch(d.attrType){case"Camera":_=this.createCamera(w);break;case"Light":_=this.createLight(w);break;case"Mesh":_=this.createMesh(w,i,s);break;case"NurbsCurve":_=this.createCurve(w,i);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=u}this.getTransformData(_,d),o.set(u,_)}return o}buildSkeleton(n,i,s,o){let l=null;return n.parents.forEach(function(p){for(const u in i){const d=i[u];d.rawBones.forEach(function(w,_){if(w.ID===p.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(n){let i,s;if(n.children.forEach(function(o){const l=oe.Objects.NodeAttribute[o.ID];l!==void 0&&(s=l)}),s===void 0)i=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 p=1e3;s.FarPlane!==void 0&&(p=s.FarPlane.value/1e3);let u=window.innerWidth,d=window.innerHeight;s.AspectWidth!==void 0&&s.AspectHeight!==void 0&&(u=s.AspectWidth.value,d=s.AspectHeight.value);const w=u/d;let _=45;s.FieldOfView!==void 0&&(_=s.FieldOfView.value);const y=s.FocalLength?s.FocalLength.value:null;switch(o){case 0:i=new f.PerspectiveCamera(_,w,l,p),y!==null&&i.setFocalLength(y);break;case 1:i=new f.OrthographicCamera(-u/2,u/2,d/2,-d/2,l,p);break;default:console.warn("THREE.FBXLoader: Unknown camera type "+o+"."),i=new f.Object3D;break}}return i}createLight(n){let i,s;if(n.children.forEach(function(o){const l=oe.Objects.NodeAttribute[o.ID];l!==void 0&&(s=l)}),s===void 0)i=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 p=s.Intensity===void 0?1:s.Intensity.value/100;s.CastLightOnObject!==void 0&&s.CastLightOnObject.value===0&&(p=0);let u=0;s.FarAttenuationEnd!==void 0&&(s.EnableFarAttenuation!==void 0&&s.EnableFarAttenuation.value===0?u=0:u=s.FarAttenuationEnd.value);const d=1;switch(o){case 0:i=new f.PointLight(l,p,u,d);break;case 1:i=new f.DirectionalLight(l,p);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)),i=new f.SpotLight(l,p,u,w,_,d);break;default:console.warn("THREE.FBXLoader: Unknown light type "+s.LightType.value+", defaulting to a PointLight."),i=new f.PointLight(l,p);break}s.CastShadows!==void 0&&s.CastShadows.value===1&&(i.castShadow=!0)}return i}createMesh(n,i,s){let o,l=null,p=null;const u=[];return n.children.forEach(function(d){i.has(d.ID)&&(l=i.get(d.ID)),s.has(d.ID)&&u.push(s.get(d.ID))}),u.length>1?p=u:u.length>0?p=u[0]:(p=new f.MeshPhongMaterial({color:13421772}),u.push(p)),"color"in l.attributes&&u.forEach(function(d){d.vertexColors=!0}),l.FBX_Deformer?(o=new f.SkinnedMesh(l,p),o.normalizeSkinWeights()):o=new f.Mesh(l,p),o}createCurve(n,i){const s=n.children.reduce(function(l,p){return i.has(p.ID)&&(l=i.get(p.ID)),l},null),o=new f.LineBasicMaterial({color:3342591,linewidth:1});return new f.Line(s,o)}getTransformData(n,i){const s={};"InheritType"in i&&(s.inheritType=parseInt(i.InheritType.value)),"RotationOrder"in i?s.eulerOrder=Zr(i.RotationOrder.value):s.eulerOrder="ZYX","Lcl_Translation"in i&&(s.translation=i.Lcl_Translation.value),"PreRotation"in i&&(s.preRotation=i.PreRotation.value),"Lcl_Rotation"in i&&(s.rotation=i.Lcl_Rotation.value),"PostRotation"in i&&(s.postRotation=i.PostRotation.value),"Lcl_Scaling"in i&&(s.scale=i.Lcl_Scaling.value),"ScalingOffset"in i&&(s.scalingOffset=i.ScalingOffset.value),"ScalingPivot"in i&&(s.scalingPivot=i.ScalingPivot.value),"RotationOffset"in i&&(s.rotationOffset=i.RotationOffset.value),"RotationPivot"in i&&(s.rotationPivot=i.RotationPivot.value),n.userData.transformData=s}setLookAtProperties(n,i){"LookAtProperty"in i&&Ae.get(n.ID).children.forEach(function(o){if(o.relationship==="LookAtProperty"){const l=oe.Objects.Model[o.ID];if("Lcl_Translation"in l){const p=l.Lcl_Translation.value;n.target!==void 0?(n.target.position.fromArray(p),Ge.add(n.target)):n.lookAt(new f.Vector3().fromArray(p))}}})}bindSkeleton(n,i,s){const o=this.parsePoseNodes();for(const l in n){const p=n[l];Ae.get(parseInt(p.ID)).parents.forEach(function(d){if(i.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(p.bones),o[y.ID])})}})}}parsePoseNodes(){const n={};if("Pose"in oe.Objects){const i=oe.Objects.Pose;for(const s in i)if(i[s].attrType==="BindPose"&&i[s].NbPoseNodes>0){const o=i[s].PoseNode;Array.isArray(o)?o.forEach(function(l){n[l.Node]=new f.Matrix4().fromArray(l.Matrix.a)}):n[o.Node]=new f.Matrix4().fromArray(o.Matrix.a)}}return n}createAmbientLight(){if("GlobalSettings"in oe&&"AmbientColor"in oe.GlobalSettings){const n=oe.GlobalSettings.AmbientColor.value,i=n[0],s=n[1],o=n[2];if(i!==0||s!==0||o!==0){const l=new f.Color(i,s,o);Ge.add(new f.AmbientLight(l,1))}}}}class hl{parse(n){const i=new Map;if("Geometry"in oe.Objects){const s=oe.Objects.Geometry;for(const o in s){const l=Ae.get(parseInt(o)),p=this.parseGeometry(l,s[o],n);i.set(parseInt(o),p)}}return i}parseGeometry(n,i,s){switch(i.attrType){case"Mesh":return this.parseMeshGeometry(n,i,s);case"NurbsCurve":return this.parseNurbsGeometry(i)}}parseMeshGeometry(n,i,s){const o=s.skeletons,l=[],p=n.parents.map(function(y){return oe.Objects.Model[y.ID]});if(p.length===0)return;const u=n.children.reduce(function(y,C){return o[C.ID]!==void 0&&(y=o[C.ID]),y},null);n.children.forEach(function(y){s.morphTargets[y.ID]!==void 0&&l.push(s.morphTargets[y.ID])});const d=p[0],w={};"RotationOrder"in d&&(w.eulerOrder=Zr(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 _=Qr(w);return this.genGeometry(i,u,l,_)}genGeometry(n,i,s,o){const l=new f.BufferGeometry;n.attrName&&(l.name=n.attrName);const p=this.parseGeoNode(n,i),u=this.genBuffers(p),d=new f.Float32BufferAttribute(u.vertex,3);if(d.applyMatrix4(o),l.setAttribute("position",d),u.colors.length>0&&l.setAttribute("color",new f.Float32BufferAttribute(u.colors,3)),i&&(l.setAttribute("skinIndex",new f.Uint16BufferAttribute(u.weightsIndices,4)),l.setAttribute("skinWeight",new f.Float32BufferAttribute(u.vertexWeights,4)),l.FBX_Deformer=i),u.normal.length>0){const w=new f.Matrix3().getNormalMatrix(o),_=new f.Float32BufferAttribute(u.normal,3);_.applyNormalMatrix(w),l.setAttribute("normal",_)}if(u.uvs.forEach(function(w,_){let y="uv"+(_+1).toString();_===0&&(y="uv"),l.setAttribute(y,new f.Float32BufferAttribute(u.uvs[_],2))}),p.material&&p.material.mappingType!=="AllSame"){let w=u.materialIndex[0],_=0;if(u.materialIndex.forEach(function(y,C){y!==w&&(l.addGroup(_,C-_,w),w=y,_=C)}),l.groups.length>0){const y=l.groups[l.groups.length-1],C=y.start+y.count;C!==u.materialIndex.length&&l.addGroup(C,u.materialIndex.length-C,w)}l.groups.length===0&&l.addGroup(0,u.materialIndex.length,u.materialIndex[0])}return this.addMorphTargets(l,n,s,o),l}parseGeoNode(n,i){const s={};if(s.vertexPositions=n.Vertices!==void 0?n.Vertices.a:[],s.vertexIndices=n.PolygonVertexIndex!==void 0?n.PolygonVertexIndex.a:[],n.LayerElementColor&&(s.color=this.parseVertexColors(n.LayerElementColor[0])),n.LayerElementMaterial&&(s.material=this.parseMaterialIndices(n.LayerElementMaterial[0])),n.LayerElementNormal&&(s.normal=this.parseNormals(n.LayerElementNormal[0])),n.LayerElementUV){s.uv=[];let o=0;for(;n.LayerElementUV[o];)n.LayerElementUV[o].UV&&s.uv.push(this.parseUVs(n.LayerElementUV[o])),o++}return s.weightTable={},i!==null&&(s.skeleton=i,i.rawBones.forEach(function(o,l){o.indices.forEach(function(p,u){s.weightTable[p]===void 0&&(s.weightTable[p]=[]),s.weightTable[p].push({id:l,weight:o.weights[u]})})})),s}genBuffers(n){const i={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]};let s=0,o=0,l=!1,p=[],u=[],d=[],w=[],_=[],y=[];const C=this;return n.vertexIndices.forEach(function(M,E){let V,I=!1;M<0&&(M=M^-1,I=!0);let F=[],z=[];if(p.push(M*3,M*3+1,M*3+2),n.color){const N=ki(E,s,M,n.color);d.push(N[0],N[1],N[2])}if(n.skeleton){if(n.weightTable[M]!==void 0&&n.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],T=[0,0,0,0];z.forEach(function(Q,$){let U=Q,j=F[$];T.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=T}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(n.normal){const N=ki(E,s,M,n.normal);u.push(N[0],N[1],N[2])}n.material&&n.material.mappingType!=="AllSame"&&(V=ki(E,s,M,n.material)[0]),n.uv&&n.uv.forEach(function(N,T){const Q=ki(E,s,M,N);w[T]===void 0&&(w[T]=[]),w[T].push(Q[0]),w[T].push(Q[1])}),o++,I&&(C.genFace(i,n,p,V,u,d,w,_,y,o),s++,o=0,p=[],u=[],d=[],w=[],_=[],y=[])}),i}genFace(n,i,s,o,l,p,u,d,w,_){for(let y=2;y<_;y++)n.vertex.push(i.vertexPositions[s[0]]),n.vertex.push(i.vertexPositions[s[1]]),n.vertex.push(i.vertexPositions[s[2]]),n.vertex.push(i.vertexPositions[s[(y-1)*3]]),n.vertex.push(i.vertexPositions[s[(y-1)*3+1]]),n.vertex.push(i.vertexPositions[s[(y-1)*3+2]]),n.vertex.push(i.vertexPositions[s[y*3]]),n.vertex.push(i.vertexPositions[s[y*3+1]]),n.vertex.push(i.vertexPositions[s[y*3+2]]),i.skeleton&&(n.vertexWeights.push(d[0]),n.vertexWeights.push(d[1]),n.vertexWeights.push(d[2]),n.vertexWeights.push(d[3]),n.vertexWeights.push(d[(y-1)*4]),n.vertexWeights.push(d[(y-1)*4+1]),n.vertexWeights.push(d[(y-1)*4+2]),n.vertexWeights.push(d[(y-1)*4+3]),n.vertexWeights.push(d[y*4]),n.vertexWeights.push(d[y*4+1]),n.vertexWeights.push(d[y*4+2]),n.vertexWeights.push(d[y*4+3]),n.weightsIndices.push(w[0]),n.weightsIndices.push(w[1]),n.weightsIndices.push(w[2]),n.weightsIndices.push(w[3]),n.weightsIndices.push(w[(y-1)*4]),n.weightsIndices.push(w[(y-1)*4+1]),n.weightsIndices.push(w[(y-1)*4+2]),n.weightsIndices.push(w[(y-1)*4+3]),n.weightsIndices.push(w[y*4]),n.weightsIndices.push(w[y*4+1]),n.weightsIndices.push(w[y*4+2]),n.weightsIndices.push(w[y*4+3])),i.color&&(n.colors.push(p[0]),n.colors.push(p[1]),n.colors.push(p[2]),n.colors.push(p[(y-1)*3]),n.colors.push(p[(y-1)*3+1]),n.colors.push(p[(y-1)*3+2]),n.colors.push(p[y*3]),n.colors.push(p[y*3+1]),n.colors.push(p[y*3+2])),i.material&&i.material.mappingType!=="AllSame"&&(n.materialIndex.push(o),n.materialIndex.push(o),n.materialIndex.push(o)),i.normal&&(n.normal.push(l[0]),n.normal.push(l[1]),n.normal.push(l[2]),n.normal.push(l[(y-1)*3]),n.normal.push(l[(y-1)*3+1]),n.normal.push(l[(y-1)*3+2]),n.normal.push(l[y*3]),n.normal.push(l[y*3+1]),n.normal.push(l[y*3+2])),i.uv&&i.uv.forEach(function(C,M){n.uvs[M]===void 0&&(n.uvs[M]=[]),n.uvs[M].push(u[M][0]),n.uvs[M].push(u[M][1]),n.uvs[M].push(u[M][(y-1)*2]),n.uvs[M].push(u[M][(y-1)*2+1]),n.uvs[M].push(u[M][y*2]),n.uvs[M].push(u[M][y*2+1])})}addMorphTargets(n,i,s,o){if(s.length===0)return;n.morphTargetsRelative=!0,n.morphAttributes.position=[];const l=this;s.forEach(function(p){p.rawTargets.forEach(function(u){const d=oe.Objects.Geometry[u.geoID];d!==void 0&&l.genMorphGeometry(n,i,d,o,u.name)})})}genMorphGeometry(n,i,s,o,l){const p=i.PolygonVertexIndex!==void 0?i.PolygonVertexIndex.a:[],u=s.Vertices!==void 0?s.Vertices.a:[],d=s.Indexes!==void 0?s.Indexes.a:[],w=n.attributes.position.count*3,_=new Float32Array(w);for(let E=0;E<d.length;E++){const V=d[E]*3;_[V]=u[E*3],_[V+1]=u[E*3+1],_[V+2]=u[E*3+2]}const y={vertexIndices:p,vertexPositions:_},C=this.genBuffers(y),M=new f.Float32BufferAttribute(C.vertex,3);M.name=l||s.attrName,M.applyMatrix4(o),n.morphAttributes.position.push(M)}parseNormals(n){const i=n.MappingInformationType,s=n.ReferenceInformationType,o=n.Normals.a;let l=[];return s==="IndexToDirect"&&("NormalIndex"in n?l=n.NormalIndex.a:"NormalsIndex"in n&&(l=n.NormalsIndex.a)),{dataSize:3,buffer:o,indices:l,mappingType:i,referenceType:s}}parseUVs(n){const i=n.MappingInformationType,s=n.ReferenceInformationType,o=n.UV.a;let l=[];return s==="IndexToDirect"&&(l=n.UVIndex.a),{dataSize:2,buffer:o,indices:l,mappingType:i,referenceType:s}}parseVertexColors(n){const i=n.MappingInformationType,s=n.ReferenceInformationType,o=n.Colors.a;let l=[];return s==="IndexToDirect"&&(l=n.ColorIndex.a),{dataSize:4,buffer:o,indices:l,mappingType:i,referenceType:s}}parseMaterialIndices(n){const i=n.MappingInformationType,s=n.ReferenceInformationType;if(i==="NoMappingInformation")return{dataSize:1,buffer:[0],indices:[0],mappingType:"AllSame",referenceType:s};const o=n.Materials.a,l=[];for(let p=0;p<o.length;++p)l.push(p);return{dataSize:1,buffer:o,indices:l,mappingType:i,referenceType:s}}parseNurbsGeometry(n){if($r===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 i=parseInt(n.Order);if(isNaN(i))return console.error("THREE.FBXLoader: Invalid Order %s given for geometry ID: %s",n.Order,n.id),new f.BufferGeometry;const s=i-1,o=n.KnotVector.a,l=[],p=n.Points.a;for(let y=0,C=p.length;y<C;y+=4)l.push(new f.Vector4().fromArray(p,y));let u,d;if(n.Form==="Closed")l.push(l[0]);else if(n.Form==="Periodic"){u=s,d=o.length-1-u;for(let y=0;y<s;++y)l.push(l[y])}const _=new $r(s,o,l,u,d).getPoints(l.length*12);return new f.BufferGeometry().setFromPoints(_)}}class ul{parse(){const n=[],i=this.parseClips();if(i!==void 0)for(const s in i){const o=i[s],l=this.addClip(o);n.push(l)}return n}parseClips(){if(oe.Objects.AnimationCurve===void 0)return;const n=this.parseAnimationCurveNodes();this.parseAnimationCurves(n);const i=this.parseAnimationLayers(n);return this.parseAnimStacks(i)}parseAnimationCurveNodes(){const n=oe.Objects.AnimationCurveNode,i=new Map;for(const s in n){const o=n[s];if(o.attrName.match(/S|R|T|DeformPercent/)!==null){const l={id:o.id,attr:o.attrName,curves:{}};i.set(l.id,l)}}return i}parseAnimationCurves(n){const i=oe.Objects.AnimationCurve;for(const s in i){const o={id:i[s].id,times:i[s].KeyTime.a.map(bl),values:i[s].KeyValueFloat.a},l=Ae.get(o.id);if(l!==void 0){const p=l.parents[0].ID,u=l.parents[0].relationship;u.match(/X/)?n.get(p).curves.x=o:u.match(/Y/)?n.get(p).curves.y=o:u.match(/Z/)?n.get(p).curves.z=o:u.match(/d|DeformPercent/)&&n.has(p)&&(n.get(p).curves.morph=o)}}}parseAnimationLayers(n){const i=oe.Objects.AnimationLayer,s=new Map;for(const o in i){const l=[],p=Ae.get(parseInt(o));p!==void 0&&(p.children.forEach(function(d,w){if(n.has(d.ID)){const _=n.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(C){return C.relationship!==void 0})[0].ID;if(y!==void 0){const C=oe.Objects.Model[y.toString()];if(C===void 0){console.warn("THREE.FBXLoader: Encountered a unused curve.",d);return}const M={modelName:C.attrName?f.PropertyBinding.sanitizeNodeName(C.attrName):"",ID:C.id,initialPosition:[0,0,0],initialRotation:[0,0,0],initialScale:[1,1,1]};Ge.traverse(function(E){E.ID===C.id&&(M.transform=E.matrix,E.userData.transformData&&(M.eulerOrder=E.userData.transformData.eulerOrder))}),M.transform||(M.transform=new f.Matrix4),"PreRotation"in C&&(M.preRotation=C.PreRotation.value),"PostRotation"in C&&(M.postRotation=C.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,C=Ae.get(y).parents[0].ID,M=Ae.get(C).parents[0].ID,E=Ae.get(M).parents[0].ID,V=oe.Objects.Model[E],I={modelName:V.attrName?f.PropertyBinding.sanitizeNodeName(V.attrName):"",morphName:oe.Objects.Deformer[y].attrName};l[w]=I}l[w][_.attr]=_}}}),s.set(parseInt(o),l))}return s}parseAnimStacks(n){const i=oe.Objects.AnimationStack,s={};for(const o in i){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 p=n.get(l[0].ID);s[o]={name:i[o].attrName,layer:p}}return s}addClip(n){let i=[];const s=this;return n.layer.forEach(function(o){i=i.concat(s.generateTracks(o))}),new f.AnimationClip(n.name,-1,i)}generateTracks(n){const i=[];let s=new f.Vector3,o=new f.Quaternion,l=new f.Vector3;if(n.transform&&n.transform.decompose(s,o,l),s=s.toArray(),o=new f.Euler().setFromQuaternion(o,n.eulerOrder).toArray(),l=l.toArray(),n.T!==void 0&&Object.keys(n.T.curves).length>0){const p=this.generateVectorTrack(n.modelName,n.T.curves,s,"position");p!==void 0&&i.push(p)}if(n.R!==void 0&&Object.keys(n.R.curves).length>0){const p=this.generateRotationTrack(n.modelName,n.R.curves,o,n.preRotation,n.postRotation,n.eulerOrder);p!==void 0&&i.push(p)}if(n.S!==void 0&&Object.keys(n.S.curves).length>0){const p=this.generateVectorTrack(n.modelName,n.S.curves,l,"scale");p!==void 0&&i.push(p)}if(n.DeformPercent!==void 0){const p=this.generateMorphTrack(n);p!==void 0&&i.push(p)}return i}generateVectorTrack(n,i,s,o){const l=this.getTimesForAllAxes(i),p=this.getKeyframeTrackValues(l,i,s);return new f.VectorKeyframeTrack(n+"."+o,l,p)}generateRotationTrack(n,i,s,o,l,p){i.x!==void 0&&(this.interpolateRotations(i.x),i.x.values=i.x.values.map(f.MathUtils.degToRad)),i.y!==void 0&&(this.interpolateRotations(i.y),i.y.values=i.y.values.map(f.MathUtils.degToRad)),i.z!==void 0&&(this.interpolateRotations(i.z),i.z.values=i.z.values.map(f.MathUtils.degToRad));const u=this.getTimesForAllAxes(i),d=this.getKeyframeTrackValues(u,i,s);o!==void 0&&(o=o.map(f.MathUtils.degToRad),o.push(p),o=new f.Euler().fromArray(o),o=new f.Quaternion().setFromEuler(o)),l!==void 0&&(l=l.map(f.MathUtils.degToRad),l.push(p),l=new f.Euler().fromArray(l),l=new f.Quaternion().setFromEuler(l).invert());const w=new f.Quaternion,_=new f.Euler,y=[];for(let C=0;C<d.length;C+=3)_.set(d[C],d[C+1],d[C+2],p),w.setFromEuler(_),o!==void 0&&w.premultiply(o),l!==void 0&&w.multiply(l),w.toArray(y,C/3*4);return new f.QuaternionKeyframeTrack(n+".quaternion",u,y)}generateMorphTrack(n){const i=n.DeformPercent.curves.morph,s=i.values.map(function(l){return l/100}),o=Ge.getObjectByName(n.modelName).morphTargetDictionary[n.morphName];return new f.NumberKeyframeTrack(n.modelName+".morphTargetInfluences["+o+"]",i.times,s)}getTimesForAllAxes(n){let i=[];if(n.x!==void 0&&(i=i.concat(n.x.times)),n.y!==void 0&&(i=i.concat(n.y.times)),n.z!==void 0&&(i=i.concat(n.z.times)),i=i.sort(function(s,o){return s-o}),i.length>1){let s=1,o=i[0];for(let l=1;l<i.length;l++){const p=i[l];p!==o&&(i[s]=p,o=p,s++)}i=i.slice(0,s)}return i}getKeyframeTrackValues(n,i,s){const o=s,l=[];let p=-1,u=-1,d=-1;return n.forEach(function(w){if(i.x&&(p=i.x.times.indexOf(w)),i.y&&(u=i.y.times.indexOf(w)),i.z&&(d=i.z.times.indexOf(w)),p!==-1){const _=i.x.values[p];l.push(_),o[0]=_}else l.push(o[0]);if(u!==-1){const _=i.y.values[u];l.push(_),o[1]=_}else l.push(o[1]);if(d!==-1){const _=i.z.values[d];l.push(_),o[2]=_}else l.push(o[2])}),l}interpolateRotations(n){for(let i=1;i<n.values.length;i++){const s=n.values[i-1],o=n.values[i]-s,l=Math.abs(o);if(l>=180){const p=l/180,u=o/p;let d=s+u;const w=n.times[i-1],y=(n.times[i]-w)/p;let C=w+y;const M=[],E=[];for(;C<n.times[i];)M.push(C),C+=y,E.push(d),d+=u;n.times=Jr(n.times,i,M),n.values=Jr(n.values,i,E)}}}}class dl{getPrevNode(){return this.nodeStack[this.currentIndent-2]}getCurrentNode(){return this.nodeStack[this.currentIndent-1]}getCurrentProp(){return this.currentProp}pushStack(n){this.nodeStack.push(n),this.currentIndent+=1}popStack(){this.nodeStack.pop(),this.currentIndent-=1}setCurrentProp(n,i){this.currentProp=n,this.currentPropName=i}parse(n){this.currentIndent=0,this.allNodes=new Yr,this.nodeStack=[],this.currentProp=[],this.currentPropName="";const i=this,s=n.split(/[\r\n]+/);return s.forEach(function(o,l){const p=o.match(/^[\s\t]*;/),u=o.match(/^[\s\t]*$/);if(p||u)return;const d=o.match("^\\t{"+i.currentIndent+"}(\\w+):(.*){",""),w=o.match("^\\t{"+i.currentIndent+"}(\\w+):[\\s\\t\\r\\n](.*)"),_=o.match("^\\t{"+(i.currentIndent-1)+"}}");d?i.parseNodeBegin(o,d):w?i.parseNodeProperty(o,w,s[++l]):_?i.popStack():o.match(/^[^\s\t}]/)&&i.parseNodePropertyContinued(o)}),this.allNodes}parseNodeBegin(n,i){const s=i[1].trim().replace(/^"/,"").replace(/"$/,""),o=i[2].split(",").map(function(d){return d.trim().replace(/^"/,"").replace(/"$/,"")}),l={name:s},p=this.parseNodeAttr(o),u=this.getCurrentNode();this.currentIndent===0?this.allNodes.add(s,l):s in u?(s==="PoseNode"?u.PoseNode.push(l):u[s].id!==void 0&&(u[s]={},u[s][u[s].id]=u[s]),p.id!==""&&(u[s][p.id]=l)):typeof p.id=="number"?(u[s]={},u[s][p.id]=l):s!=="Properties70"&&(s==="PoseNode"?u[s]=[l]:u[s]=l),typeof p.id=="number"&&(l.id=p.id),p.name!==""&&(l.attrName=p.name),p.type!==""&&(l.attrType=p.type),this.pushStack(l)}parseNodeAttr(n){let i=n[0];n[0]!==""&&(i=parseInt(n[0]),isNaN(i)&&(i=n[0]));let s="",o="";return n.length>1&&(s=n[1].replace(/^(\w+)::/,""),o=n[2]),{id:i,name:s,type:o}}parseNodeProperty(n,i,s){let o=i[1].replace(/^"/,"").replace(/"$/,"").trim(),l=i[2].replace(/^"/,"").replace(/"$/,"").trim();o==="Content"&&l===","&&(l=s.replace(/"/g,"").replace(/,$/,"").trim());const p=this.getCurrentNode();if(p.name==="Properties70"){this.parseNodeSpecialProperty(n,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(C){return C.trim().replace(/^"/,"")}),o="connections",l=[w,_],wl(l,y),p[o]===void 0&&(p[o]=[])}o==="Node"&&(p.id=l),o in p&&Array.isArray(p[o])?p[o].push(l):o!=="a"?p[o]=l:p.a=l,this.setCurrentProp(p,o),o==="a"&&l.slice(-1)!==","&&(p.a=fs(l))}parseNodePropertyContinued(n){const i=this.getCurrentNode();i.a+=n,n.slice(-1)!==","&&(i.a=fs(i.a))}parseNodeSpecialProperty(n,i,s){const o=s.split('",').map(function(_){return _.trim().replace(/^\"/,"").replace(/\s/,"_")}),l=o[0],p=o[1],u=o[2],d=o[3];let w=o[4];switch(p){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=fs(w);break}this.getPrevNode()[l]={type:p,type2:u,flag:d,value:w},this.setCurrentProp(this.getPrevNode(),l)}}class ml{parse(n){const i=new Xr(n);i.skip(23);const s=i.getUint32();if(s<6400)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+s);const o=new Yr;for(;!this.endOfContent(i);){const l=this.parseNode(i,s);l!==null&&o.add(l.name,l)}return o}endOfContent(n){return n.size()%16===0?(n.getOffset()+160+16&-16)>=n.size():n.getOffset()+160+16>=n.size()}parseNode(n,i){const s={},o=i>=7500?n.getUint64():n.getUint32(),l=i>=7500?n.getUint64():n.getUint32();i>=7500?n.getUint64():n.getUint32();const p=n.getUint8(),u=n.getString(p);if(o===0)return null;const d=[];for(let C=0;C<l;C++)d.push(this.parseProperty(n));const w=d.length>0?d[0]:"",_=d.length>1?d[1]:"",y=d.length>2?d[2]:"";for(s.singleProperty=l===1&&n.getOffset()===o;o>n.getOffset();){const C=this.parseNode(n,i);C!==null&&this.parseSubNode(u,s,C)}return s.propertyList=d,typeof w=="number"&&(s.id=w),_!==""&&(s.attrName=_),y!==""&&(s.attrType=y),u!==""&&(s.name=u),s}parseSubNode(n,i,s){if(s.singleProperty===!0){const o=s.propertyList[0];Array.isArray(o)?(i[s.name]=s,s.a=o):i[s.name]=o}else if(n==="Connections"&&s.name==="C"){const o=[];s.propertyList.forEach(function(l,p){p!==0&&o.push(l)}),i.connections===void 0&&(i.connections=[]),i.connections.push(o)}else if(s.name==="Properties70")Object.keys(s).forEach(function(l){i[l]=s[l]});else if(n==="Properties70"&&s.name==="P"){let o=s.propertyList[0],l=s.propertyList[1];const p=s.propertyList[2],u=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],i[o]={type:l,type2:p,flag:u,value:d}}else i[s.name]===void 0?typeof s.id=="number"?(i[s.name]={},i[s.name][s.id]=s):i[s.name]=s:s.name==="PoseNode"?(Array.isArray(i[s.name])||(i[s.name]=[i[s.name]]),i[s.name].push(s)):i[s.name][s.id]===void 0&&(i[s.name][s.id]=s)}parseProperty(n){const i=n.getString(1);let s;switch(i){case"C":return n.getBoolean();case"D":return n.getFloat64();case"F":return n.getFloat32();case"I":return n.getInt32();case"L":return n.getInt64();case"R":return s=n.getUint32(),n.getArrayBuffer(s);case"S":return s=n.getUint32(),n.getString(s);case"Y":return n.getInt16();case"b":case"c":case"d":case"f":case"i":case"l":const o=n.getUint32(),l=n.getUint32(),p=n.getUint32();if(l===0)switch(i){case"b":case"c":return n.getBooleanArray(o);case"d":return n.getFloat64Array(o);case"f":return n.getFloat32Array(o);case"i":return n.getInt32Array(o);case"l":return n.getInt64Array(o)}const u=ra(new Uint8Array(n.getArrayBuffer(p))),d=new Xr(u.buffer);switch(i){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 "+i)}}}class Xr{constructor(n,i){this.dv=new DataView(n),this.offset=0,this.littleEndian=i!==void 0?i:!0}getOffset(){return this.offset}size(){return this.dv.buffer.byteLength}skip(n){this.offset+=n}getBoolean(){return(this.getUint8()&1)===1}getBooleanArray(n){const i=[];for(let s=0;s<n;s++)i.push(this.getBoolean());return i}getUint8(){const n=this.dv.getUint8(this.offset);return this.offset+=1,n}getInt16(){const n=this.dv.getInt16(this.offset,this.littleEndian);return this.offset+=2,n}getInt32(){const n=this.dv.getInt32(this.offset,this.littleEndian);return this.offset+=4,n}getInt32Array(n){const i=[];for(let s=0;s<n;s++)i.push(this.getInt32());return i}getUint32(){const n=this.dv.getUint32(this.offset,this.littleEndian);return this.offset+=4,n}getInt64(){let n,i;return this.littleEndian?(n=this.getUint32(),i=this.getUint32()):(i=this.getUint32(),n=this.getUint32()),i&2147483648?(i=~i&4294967295,n=~n&4294967295,n===4294967295&&(i=i+1&4294967295),n=n+1&4294967295,-(i*4294967296+n)):i*4294967296+n}getInt64Array(n){const i=[];for(let s=0;s<n;s++)i.push(this.getInt64());return i}getUint64(){let n,i;return this.littleEndian?(n=this.getUint32(),i=this.getUint32()):(i=this.getUint32(),n=this.getUint32()),i*4294967296+n}getFloat32(){const n=this.dv.getFloat32(this.offset,this.littleEndian);return this.offset+=4,n}getFloat32Array(n){const i=[];for(let s=0;s<n;s++)i.push(this.getFloat32());return i}getFloat64(){const n=this.dv.getFloat64(this.offset,this.littleEndian);return this.offset+=8,n}getFloat64Array(n){const i=[];for(let s=0;s<n;s++)i.push(this.getFloat64());return i}getArrayBuffer(n){const i=this.dv.buffer.slice(this.offset,this.offset+n);return this.offset+=n,i}getString(n){let i=[];for(let o=0;o<n;o++)i[o]=this.getUint8();const s=i.indexOf(0);return s>=0&&(i=i.slice(0,s)),f.LoaderUtils.decodeText(new Uint8Array(i))}}class Yr{add(n,i){this[n]=i}}function fl(v){const n="Kaydara FBX Binary \0";return v.byteLength>=n.length&&n===Wr(v,0,n.length)}function vl(v){const n=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"];let i=0;function s(o){const l=v[o-1];return v=v.slice(i+o),i++,l}for(let o=0;o<n.length;++o)if(s(1)===n[o])return!1;return!0}function qr(v){const n=/FBXVersion: (\d+)/,i=v.match(n);if(i)return parseInt(i[1]);throw new Error("THREE.FBXLoader: Cannot find the version number for the file given.")}function bl(v){return v/46186158e3}const gl=[];function ki(v,n,i,s){let o;switch(s.mappingType){case"ByPolygonVertex":o=v;break;case"ByPolygon":o=n;break;case"ByVertice":o=i;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,p=l+s.dataSize;return _l(gl,s.buffer,l,p)}const ms=new f.Euler,yn=new f.Vector3;function Qr(v){const n=new f.Matrix4,i=new f.Matrix4,s=new f.Matrix4,o=new f.Matrix4,l=new f.Matrix4,p=new f.Matrix4,u=new f.Matrix4,d=new f.Matrix4,w=new f.Matrix4,_=new f.Matrix4,y=new f.Matrix4,C=new f.Matrix4,M=v.inheritType?v.inheritType:0;if(v.translation&&n.setPosition(yn.fromArray(v.translation)),v.preRotation){const Y=v.preRotation.map(f.MathUtils.degToRad);Y.push(v.eulerOrder),i.makeRotationFromEuler(ms.fromArray(Y))}if(v.rotation){const Y=v.rotation.map(f.MathUtils.degToRad);Y.push(v.eulerOrder),s.makeRotationFromEuler(ms.fromArray(Y))}if(v.postRotation){const Y=v.postRotation.map(f.MathUtils.degToRad);Y.push(v.eulerOrder),o.makeRotationFromEuler(ms.fromArray(Y)),o.invert()}v.scale&&l.scale(yn.fromArray(v.scale)),v.scalingOffset&&u.setPosition(yn.fromArray(v.scalingOffset)),v.scalingPivot&&p.setPosition(yn.fromArray(v.scalingPivot)),v.rotationOffset&&d.setPosition(yn.fromArray(v.rotationOffset)),v.rotationPivot&&w.setPosition(yn.fromArray(v.rotationPivot)),v.parentMatrixWorld&&(y.copy(v.parentMatrix),_.copy(v.parentMatrixWorld));const E=i.clone().multiply(s).multiply(o),V=new f.Matrix4;V.extractRotation(_);const I=new f.Matrix4;I.copyPosition(_);const F=I.clone().invert().multiply(_),z=V.clone().invert().multiply(F),N=l,T=new f.Matrix4;if(M===0)T.copy(V).multiply(E).multiply(z).multiply(N);else if(M===1)T.copy(V).multiply(z).multiply(E).multiply(N);else{const Z=new f.Matrix4().scale(new f.Vector3().setFromMatrixScale(y)).clone().invert(),ue=z.clone().multiply(Z);T.copy(V).multiply(E).multiply(ue).multiply(N)}const Q=w.clone().invert(),$=p.clone().invert();let U=n.clone().multiply(d).multiply(w).multiply(i).multiply(s).multiply(o).multiply(Q).multiply(u).multiply(p).multiply(l).multiply($);const j=new f.Matrix4().copyPosition(U),X=_.clone().multiply(j);return C.copyPosition(X),U=C.clone().multiply(T),U.premultiply(_.invert()),U}function Zr(v){v=v||0;const n=["ZYX","YZX","XZY","ZXY","YXZ","XYZ"];return v===6?(console.warn("THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect."),n[0]):n[v]}function fs(v){return v.split(",").map(function(i){return parseFloat(i)})}function Wr(v,n,i){return n===void 0&&(n=0),i===void 0&&(i=v.byteLength),f.LoaderUtils.decodeText(new Uint8Array(v,n,i))}function wl(v,n){for(let i=0,s=v.length,o=n.length;i<o;i++,s++)v[s]=n[i]}function _l(v,n,i,s){for(let o=i,l=0;o<s;o++,l++)v[l]=n[o];return v}function Jr(v,n,i){return v.slice(0,n).concat(i).concat(v.slice(n))}var yl=Object.defineProperty,xl=(v,n,i)=>n in v?yl(v,n,{enumerable:!0,configurable:!0,writable:!0,value:i}):v[n]=i,vs=(v,n,i)=>(xl(v,typeof n!="symbol"?n+"":n,i),i);class Cl extends f.Loader{constructor(n){super(n)}load(n,i,s,o){const l=new f.FileLoader(this.manager);l.setPath(this.path),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(n,p=>{if(typeof p!="string")throw new Error("unsupported data type");const u=JSON.parse(p),d=this.parse(u);i&&i(d)},s,o)}loadAsync(n,i){return super.loadAsync(n,i)}parse(n){return new bs(n)}}class bs{constructor(n){vs(this,"data"),this.data=n}generateShapes(n,i=100,s){const o=[],l={letterSpacing:0,lineHeight:1,...s},p=Pl(n,i,this.data,l);for(let u=0,d=p.length;u<d;u++)Array.prototype.push.apply(o,p[u].toShapes(!1));return o}}vs(bs,"isFont"),vs(bs,"type");function Pl(v,n,i,s){const o=Array.from(v),l=n/i.resolution,p=(i.boundingBox.yMax-i.boundingBox.yMin+i.underlineThickness)*l,u=[];let d=0,w=0;for(let _=0;_<o.length;_++){const y=o[_];if(y===`
74
- `)d=0,w-=p*s.lineHeight;else{const C=kl(y,l,d,w,i);C&&(d+=C.offsetX+s.letterSpacing,u.push(C.path))}}return u}function kl(v,n,i,s,o){const l=o.glyphs[v]||o.glyphs["?"];if(!l){console.error('THREE.Font: character "'+v+'" does not exists in font family '+o.familyName+".");return}const p=new f.ShapePath;let u,d,w,_,y,C,M,E;if(l.o){const V=l._cachedOutline||(l._cachedOutline=l.o.split(" "));for(let I=0,F=V.length;I<F;)switch(V[I++]){case"m":u=parseInt(V[I++])*n+i,d=parseInt(V[I++])*n+s,p.moveTo(u,d);break;case"l":u=parseInt(V[I++])*n+i,d=parseInt(V[I++])*n+s,p.lineTo(u,d);break;case"q":w=parseInt(V[I++])*n+i,_=parseInt(V[I++])*n+s,y=parseInt(V[I++])*n+i,C=parseInt(V[I++])*n+s,p.quadraticCurveTo(y,C,w,_);break;case"b":w=parseInt(V[I++])*n+i,_=parseInt(V[I++])*n+s,y=parseInt(V[I++])*n+i,C=parseInt(V[I++])*n+s,M=parseInt(V[I++])*n+i,E=parseInt(V[I++])*n+s,p.bezierCurveTo(y,C,M,E,w,_);break}}return{offsetX:l.ha*n,path:p}}var Hr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ml(v){return v&&v.__esModule&&Object.prototype.hasOwnProperty.call(v,"default")?v.default:v}class Al extends f.DataTextureLoader{constructor(n){super(n),this.type=f.HalfFloatType}parse(n){const u=function(N,T){switch(N){case 1:console.error("THREE.RGBELoader Read Error: "+(T||""));break;case 2:console.error("THREE.RGBELoader Write Error: "+(T||""));break;case 3:console.error("THREE.RGBELoader Bad File Format: "+(T||""));break;default:case 4:console.error("THREE.RGBELoader: Error: "+(T||""))}return-1},y=`
75
- `,C=function(N,T,Q){T=T||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<T&&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 T=/^#\?(\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=C(N)))return u(1,"no header found");if(!(Z=Y.match(T)))return u(3,"bad initial token");for(X.valid|=1,X.programtype=Z[1],X.string+=Y+`
76
- `;Y=C(N),Y!==!1;){if(X.string+=Y+`
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:u(3,"missing image size specifier"):u(3,"missing format specifier")},E=function(N,T,Q){const $=T;if($<8||$>32767||N[0]!==2||N[1]!==2||N[2]&128)return new Uint8Array(N);if($!==(N[2]<<8|N[3]))return u(3,"wrong scanline width");const U=new Uint8Array(4*T*Q);if(!U.length)return u(4,"unable to allocate buffer space");let j=0,X=0;const Y=4*$,Z=new Uint8Array(4),ue=new Uint8Array(Y);let we=Q;for(;we>0&&X<N.byteLength;){if(X+4>N.byteLength)return u(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 u(3,"bad rgbe scanline format");let he=0,fe;for(;he<Y&&X<N.byteLength;){fe=N[X++];const te=fe>128;if(te&&(fe-=128),fe===0||he+fe>Y)return u(3,"bad scanline data");if(te){const q=N[X++];for(let Pe=0;Pe<fe;Pe++)ue[he++]=q}else ue.set(N.subarray(X,X+fe),he),he+=fe,X+=fe}const de=$;for(let te=0;te<de;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}we--}return U},V=function(N,T,Q,$){const U=N[T+3],j=Math.pow(2,U-128)/255;Q[$+0]=N[T+0]*j,Q[$+1]=N[T+1]*j,Q[$+2]=N[T+2]*j,Q[$+3]=1},I=function(N,T,Q,$){const U=N[T+3],j=Math.pow(2,U-128)/255;Q[$+0]=f.DataUtils.toHalfFloat(Math.min(N[T+0]*j,65504)),Q[$+1]=f.DataUtils.toHalfFloat(Math.min(N[T+1]*j,65504)),Q[$+2]=f.DataUtils.toHalfFloat(Math.min(N[T+2]*j,65504)),Q[$+3]=f.DataUtils.toHalfFloat(1)},F=new Uint8Array(n);F.pos=0;const z=M(F);if(z!==-1){const N=z.width,T=z.height,Q=E(F.subarray(F.pos),N,T);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++)V(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++)I(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:T,data:$,header:z.string,gamma:z.gamma,exposure:z.exposure,type:U}}}return null}setDataType(n){return this.type=n,this}load(n,i,s,o){function l(p,u){switch(p.type){case f.FloatType:case f.HalfFloatType:"colorSpace"in p?p.colorSpace="srgb-linear":p.encoding=3e3,p.minFilter=f.LinearFilter,p.magFilter=f.LinearFilter,p.generateMipmaps=!1,p.flipY=!0;break}i&&i(p,u)}return super.load(n,l,s,o)}}const gs=new WeakMap;class Sl extends f.Loader{constructor(n){super(n),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(n){return this.decoderPath=n,this}setDecoderConfig(n){return this.decoderConfig=n,this}setWorkerLimit(n){return this.workerLimit=n,this}load(n,i,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(n,p=>{const u={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(p,u).then(i).catch(o)},s,o)}decodeDracoFile(n,i,s,o){const l={attributeIDs:s||this.defaultAttributeIDs,attributeTypes:o||this.defaultAttributeTypes,useUniqueIDs:!!s};this.decodeGeometry(n,l).then(i)}decodeGeometry(n,i){for(const d in i.attributeTypes){const w=i.attributeTypes[d];w.BYTES_PER_ELEMENT!==void 0&&(i.attributeTypes[d]=w.name)}const s=JSON.stringify(i);if(gs.has(n)){const d=gs.get(n);if(d.key===s)return d.promise;if(n.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++,p=n.byteLength,u=this._getWorker(l,p).then(d=>(o=d,new Promise((w,_)=>{o._callbacks[l]={resolve:w,reject:_},o.postMessage({type:"decode",id:l,taskConfig:i,buffer:n},[n])}))).then(d=>this._createGeometry(d.geometry));return u.catch(()=>!0).then(()=>{o&&l&&this._releaseTask(o,l)}),gs.set(n,{key:s,promise:u}),u}_createGeometry(n){const i=new f.BufferGeometry;n.index&&i.setIndex(new f.BufferAttribute(n.index.array,1));for(let s=0;s<n.attributes.length;s++){const o=n.attributes[s],l=o.name,p=o.array,u=o.itemSize;i.setAttribute(l,new f.BufferAttribute(p,u))}return i}_loadLibrary(n,i){const s=new f.FileLoader(this.manager);return s.setPath(this.decoderPath),s.setResponseType(i),s.setWithCredentials(this.withCredentials),new Promise((o,l)=>{s.load(n,o,void 0,l)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const n=typeof WebAssembly!="object"||this.decoderConfig.type==="js",i=[];return n?i.push(this._loadLibrary("draco_decoder.js","text")):(i.push(this._loadLibrary("draco_wasm_wrapper.js","text")),i.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(i).then(s=>{const o=s[0];n||(this.decoderConfig.wasmBinary=s[1]);const l=Ll.toString(),p=["/* draco decoder */",o,"","/* worker */",l.substring(l.indexOf("{")+1,l.lastIndexOf("}"))].join(`
79
- `);this.workerSourceURL=URL.createObjectURL(new Blob([p]))}),this.decoderPending}_getWorker(n,i){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 p=l.data;switch(p.type){case"decode":o._callbacks[p.id].resolve(p);break;case"error":o._callbacks[p.id].reject(p);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+p.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[n]=i,s._taskLoad+=i,s})}_releaseTask(n,i){n._taskLoad-=n._taskCosts[i],delete n._callbacks[i],delete n._taskCosts[i]}debug(){console.log("Task load: ",this.workerPool.map(n=>n._taskLoad))}dispose(){for(let n=0;n<this.workerPool.length;++n)this.workerPool[n].terminate();return this.workerPool.length=0,this}}function Ll(){let v,n;onmessage=function(p){const u=p.data;switch(u.type){case"init":v=u.decoderConfig,n=new Promise(function(_){v.onModuleLoaded=function(y){_({draco:y})},DracoDecoderModule(v)});break;case"decode":const d=u.buffer,w=u.taskConfig;n.then(_=>{const y=_.draco,C=new y.Decoder,M=new y.DecoderBuffer;M.Init(new Int8Array(d),d.byteLength);try{const E=i(y,C,M,w),V=E.attributes.map(I=>I.array.buffer);E.index&&V.push(E.index.array.buffer),self.postMessage({type:"decode",id:u.id,geometry:E},V)}catch(E){console.error(E),self.postMessage({type:"error",id:u.id,error:E.message})}finally{y.destroy(M),y.destroy(C)}});break}};function i(p,u,d,w){const _=w.attributeIDs,y=w.attributeTypes;let C,M;const E=u.GetEncodedGeometryType(d);if(E===p.TRIANGULAR_MESH)C=new p.Mesh,M=u.DecodeBufferToMesh(d,C);else if(E===p.POINT_CLOUD)C=new p.PointCloud,M=u.DecodeBufferToPointCloud(d,C);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!M.ok()||C.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+M.error_msg());const V={index:null,attributes:[]};for(const I in _){const F=self[y[I]];let z,N;if(w.useUniqueIDs)N=_[I],z=u.GetAttributeByUniqueId(C,N);else{if(N=u.GetAttributeId(C,p[_[I]]),N===-1)continue;z=u.GetAttribute(C,N)}V.attributes.push(o(p,u,C,I,F,z))}return E===p.TRIANGULAR_MESH&&(V.index=s(p,u,C)),p.destroy(C),V}function s(p,u,d){const _=d.num_faces()*3,y=_*4,C=p._malloc(y);u.GetTrianglesUInt32Array(d,y,C);const M=new Uint32Array(p.HEAPF32.buffer,C,_).slice();return p._free(C),{array:M,itemSize:1}}function o(p,u,d,w,_,y){const C=y.num_components(),E=d.num_points()*C,V=E*_.BYTES_PER_ELEMENT,I=l(p,_),F=p._malloc(V);u.GetAttributeDataArrayForAllPoints(d,y,I,V,F);const z=new _(p.HEAPF32.buffer,F,E).slice();return p._free(F),{name:w,array:z,itemSize:C}}function l(p,u){switch(u){case Float32Array:return p.DT_FLOAT32;case Int8Array:return p.DT_INT8;case Int16Array:return p.DT_INT16;case Int32Array:return p.DT_INT32;case Uint8Array:return p.DT_UINT8;case Uint16Array:return p.DT_UINT16;case Uint32Array:return p.DT_UINT32}}}function He(){const{state:v,setState:n}=x.inject("useTres",Ee.useTres()),i=x.inject("extend")||(()=>{});return{state:v,setState:n,extend:i}}const Vl=["args","center"],Dl=x.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(v,{expose:n}){let i,s;const o=v,{extend:l}=He();l({TextGeometry:Gr});const p=new Cl,u=x.useSlots(),d=x.computed(()=>{var C;return o.text?o.text:u.default?(C=u.default()[0].children)==null?void 0:C.trim():o.needUpdates?"":"TresJS"}),w=x.shallowRef();n({value:w});const _=([i,s]=x.withAsyncContext(()=>new Promise((C,M)=>{try{typeof o.font=="string"?p.load(o.font,E=>{C(E)}):C(o.font)}catch(E){M(console.error("cientos",E))}})),i=await i,s(),i),y=x.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 x.watchEffect(()=>{w.value&&o.needUpdates&&(w.value.geometry.dispose(),w.value.geometry=new Gr(d.value,y.value),o.center&&w.value.geometry.center())}),(C,M)=>x.unref(_)?(x.openBlock(),x.createElementBlock("TresMesh",{key:0,ref_key:"text3DRef",ref:w},[d.value?(x.openBlock(),x.createElementBlock("TresTextGeometry",{key:0,args:[d.value,y.value],center:C.center},null,8,Vl)):x.createCommentVNode("",!0),x.renderSlot(C.$slots,"default")],512)):x.createCommentVNode("",!0)}});function Il(v,n){const i=x.ref(n),s=new f.AnimationMixer(i.value),o=x.shallowReactive({});v.forEach(p=>{const u=s.clipAction(p,i.value);o[p.name]=u});const{onLoop:l}=Ee.useRenderLoop();return l(({delta:p})=>{s.update(p)}),{actions:o,mixer:s}}const ws={sunset:"venice/venice_sunset_4k.hdr"};async function eo({files:v=["/px.png","/nx.png","/py.png","/ny.png","/pz.png","/nz.png"],blur:n=0,background:i=!1,path:s="/",preset:o=void 0}){const{state:l}=He();if(o){if(!(o in ws))throw new Error("Preset must be one of: "+Object.keys(ws).join(", "));v=ws[o],s="https://raw.githubusercontent.com/Tresjs/assets/main/textures/hdr/"}const p=Array.isArray(v),u=p?f.CubeTextureLoader:Al,d=await Ee.useLoader(u,p?[v]:v,_=>{s&&_.setPath(s)}),w=p?d[0]:d;return w&&(w.mapping=p?f.CubeReflectionMapping:f.EquirectangularReflectionMapping,w.colorSpace=f.SRGBColorSpace),l.scene&&(l.scene.environment=w,i!==void 0&&(l.scene.background=w),n&&(l.scene.backgroundBlurriness=n|0)),w}const Tl=x.defineComponent({name:"Environment",props:["background","blur","files","encoding","path","preset"],async setup(v,{expose:n}){let i=null;return n({getTexture:()=>i}),i=await eo(v),()=>{}}});function to(v){return x.getCurrentScope()?(x.onScopeDispose(v),!0):!1}function _s(v){return typeof v=="function"?v():x.unref(v)}const El=typeof window<"u",no=()=>{};function Ol(...v){if(v.length!==1)return x.toRef(...v);const n=v[0];return typeof n=="function"?x.readonly(x.customRef(()=>({get:n,set:no}))):x.ref(n)}function Bl(v,n=!0){x.getCurrentInstance()?x.onMounted(v):n?v():x.nextTick(v)}function Nl(v){var n;const i=_s(v);return(n=i==null?void 0:i.$el)!=null?n:i}const Yn=El?window:void 0;function Oe(...v){let n,i,s,o;if(typeof v[0]=="string"||Array.isArray(v[0])?([i,s,o]=v,n=Yn):[n,i,s,o]=v,!n)return no;Array.isArray(i)||(i=[i]),Array.isArray(s)||(s=[s]);const l=[],p=()=>{l.forEach(_=>_()),l.length=0},u=(_,y,C,M)=>(_.addEventListener(y,C,M),()=>_.removeEventListener(y,C,M)),d=x.watch(()=>[Nl(n),_s(o)],([_,y])=>{p(),_&&l.push(...i.flatMap(C=>s.map(M=>u(_,C,M,y))))},{immediate:!0,flush:"post"}),w=()=>{d(),p()};return to(w),w}function Fl(v){return typeof v=="function"?v:typeof v=="string"?n=>n.key===v:Array.isArray(v)?n=>v.includes(n.key):()=>!0}function Yt(...v){let n,i,s={};v.length===3?(n=v[0],i=v[1],s=v[2]):v.length===2?typeof v[1]=="object"?(n=!0,i=v[0],s=v[1]):(n=v[0],i=v[1]):(n=!0,i=v[0]);const{target:o=Yn,eventName:l="keydown",passive:p=!1,dedupe:u=!1}=s,d=Fl(n);return Oe(o,l,_=>{_.repeat&&_s(u)||d(_)&&i(_)},p)}function zl(){const v=x.ref(!1);return x.getCurrentInstance()&&x.onMounted(()=>{v.value=!0}),v}function jl(v){const n=zl();return x.computed(()=>(n.value,!!v()))}function Ul(v,n={}){const{window:i=Yn}=n,s=jl(()=>i&&"matchMedia"in i&&typeof i.matchMedia=="function");let o;const l=x.ref(!1),p=()=>{o&&("removeEventListener"in o?o.removeEventListener("change",u):o.removeListener(u))},u=()=>{s.value&&(p(),o=i.matchMedia(Ol(v).value),l.value=!!(o!=null&&o.matches),o&&("addEventListener"in o?o.addEventListener("change",u):o.addListener(u)))};return x.watchEffect(u),to(()=>p()),l}const Rl={page:v=>[v.pageX,v.pageY],client:v=>[v.clientX,v.clientY],screen:v=>[v.screenX,v.screenY],movement:v=>v instanceof Touch?null:[v.movementX,v.movementY]};function Gl(v={}){const{type:n="page",touch:i=!0,resetOnTouchEnds:s=!1,initialValue:o={x:0,y:0},window:l=Yn,target:p=l,eventFilter:u}=v,d=x.ref(o.x),w=x.ref(o.y),_=x.ref(null),y=typeof n=="function"?n:Rl[n],C=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")}},E=()=>{d.value=o.x,w.value=o.y},V=u?F=>u(()=>C(F),{}):F=>C(F),I=u?F=>u(()=>M(F),{}):F=>M(F);return p&&(Oe(p,"mousemove",V,{passive:!0}),Oe(p,"dragover",V,{passive:!0}),i&&n!=="movement"&&(Oe(p,"touchstart",I,{passive:!0}),Oe(p,"touchmove",I,{passive:!0}),s&&Oe(p,"touchend",E,{passive:!0}))),{x:d,y:w,sourceType:_}}function Kl(v={}){const{window:n=Yn,initialWidth:i=1/0,initialHeight:s=1/0,listenOrientation:o=!0,includeScrollbar:l=!0}=v,p=x.ref(i),u=x.ref(s),d=()=>{n&&(l?(p.value=n.innerWidth,u.value=n.innerHeight):(p.value=n.document.documentElement.clientWidth,u.value=n.document.documentElement.clientHeight))};if(d(),Bl(d),Oe("resize",d,{passive:!0}),o){const w=Ul("(orientation: portrait)");x.watch(w,()=>d())}return{width:p,height:u}}function io(v=!1,n=2.5,i=!0,s){var V;const{x:o,y:l}=Gl(),{logWarning:p}=Ee.useLogger(),{state:u}=He(),{width:d,height:w}=Kl(),{onLoop:_}=Ee.useRenderLoop(),y=new f.Group,C=i?2.5:30,M=x.computed(()=>(o.value/d.value-.5)*n),E=x.computed(()=>-(l.value/w.value-.5)*n);s&&u.scene?(y.add(s),(V=u.scene)==null||V.add(y),_(({delta:I})=>{v||(y.position.x+=(M.value-y.position.x)*C*I,y.position.y+=(E.value-y.position.y)*C*I)})):p("Scene must contain a Camera component to use this composable")}const $l=x.defineComponent({name:"PamCameraMouse",props:["disabled","factor","ease"],setup(v){const{state:n}=He();return x.watchEffect(()=>{if(n!=null&&n.camera){const i=n==null?void 0:n.camera;io(v.disabled,v.factor,v.ease,i)}}),()=>{}}}),Xl=["position","a-scale"],Yl=x.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(v,{expose:n}){const i=v;let s=i.radius+i.depth;const o=i.depth/i.count,l=[],p=Array.from({length:i.count},()=>(.5+.5*Math.random())*i.factor),u=C=>new f.Vector3().setFromSpherical(new f.Spherical(C,Math.acos(1-Math.random()*2),Math.random()*2*Math.PI));for(let C=0;C<i.count;C++)s-=o*Math.random(),l.push(...u(s).toArray());const d=new Float32Array(l),w=new Float32Array(p),_=x.computed(()=>({size:i.size,sizeAttenuation:i.sizeAttenuation,transparent:i.transparent,alphaTest:i.alphaTest,alphaMap:i.alphaMap})),y=x.shallowRef();return n({value:y}),(C,M)=>(x.openBlock(),x.createElementBlock("TresPoints",{ref_key:"starsRef",ref:y},[x.createElementVNode("TresBufferGeometry",{position:[x.unref(d),3],"a-scale":[x.unref(w),1]},null,8,Xl),x.createElementVNode("TresPointsMaterial",x.normalizeProps(x.guardReactiveProps(_.value)),null,16)],512))}}),ql=["size","color","alpha-map","map","opacity","alpha-test","depth-write","transparent","size-attenuation"],Ql=["position","velocity"],Zl=x.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(v){const n=x.shallowRef();let i=[],s=[];const o=()=>{i=new Float32Array(v.count*3);for(let u=0;u<v.count;u++){const d=u*3;i[d]=(Math.random()-.5)*v.area[0],i[d+1]=(Math.random()-.5)*v.area[1],i[d+2]=(Math.random()-.5)*v.area[2]}},l=()=>{s=new Float32Array(v.count*2);for(let u=0;u<v.count*2;u+=2)s[u]=(Math.random()-.5)/5*v.speed*v.randomness,s[u+1]=Math.random()/5*v.speed+.01};l(),o(),x.watchEffect(()=>{l(),o()});const{onLoop:p}=Ee.useRenderLoop();return p(()=>{var u,d;if((u=n.value)!=null&&u.attributes.position.array&&((d=n.value)!=null&&d.attributes.position.count)){const w=n.value.attributes.position.array;for(let _=0;_<n.value.attributes.position.count;_++){const y=s[_*2],C=s[_*2+1];w[_*3]+=y,w[_*3+1]-=C,(w[_*3]<=-v.area[0]/2||w[_*3]>=v.area[0]/2)&&(w[_*3]=w[_*3]*-1),(w[_*3+1]<=-v.area[1]/2||w[_*3+1]>=v.area[1]/2)&&(w[_*3+1]=w[_*3+1]*-1)}n.value.attributes.position.needsUpdate=!0}}),(u,d)=>(x.openBlock(),x.createElementBlock("TresPoints",null,[x.createElementVNode("TresPointsMaterial",{size:u.size,color:u.color,"alpha-map":u.alphaMap,map:u.map,opacity:u.opacity,"alpha-test":u.alphaTest,"depth-write":u.depthWrite,transparent:u.transparent,"size-attenuation":u.sizeAttenuation},null,8,ql),x.createElementVNode("TresBufferGeometry",{ref_key:"geometryRef",ref:n,position:[x.unref(i),3],velocity:[x.unref(s)]},null,8,Ql)]))}}),Wl=["position"],Jl=["position"],Hl=["scale"],ec=["map","depth-test","color-space","color","opacity"],tc=x.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(v,{expose:n}){let i,s;const o=x.shallowRef(),l=x.shallowRef();n({value:o});const p=[...new Array(v.segments)].map((C,M)=>({x:v.width/2-Math.random()*v.width,y:v.width/2-Math.random()*v.width,scale:.4+Math.sin((M+1)/v.segments*Math.PI)*((.2+Math.random())*10),density:Math.max(.2,Math.random()),rotation:Math.max(.002,.005*Math.random())*v.speed})),u=(C,M)=>C/6*M*v.opacity,{map:d}=([i,s]=x.withAsyncContext(()=>Ee.useTexture({map:v.texture})),i=await i,s(),i),{state:w}=He(),_=x.computed(()=>{var C;return(C=w.renderer)==null?void 0:C.outputColorSpace}),{onLoop:y}=Ee.useRenderLoop();return y(()=>{var C,M;o.value&&w.camera&&l.value&&((C=l.value)==null||C.children.forEach((E,V)=>{E.rotation.z+=p[V].rotation}),o.value.lookAt((M=w.camera)==null?void 0:M.position))}),(C,M)=>(x.openBlock(),x.createElementBlock("TresGroup",x.mergeProps({ref_key:"smokeRef",ref:o},C.$attrs),[x.createElementVNode("TresGroup",{ref_key:"groupRef",ref:l,position:[0,0,C.segments/2*C.depth]},[(x.openBlock(!0),x.createElementBlock(x.Fragment,null,x.renderList(x.unref(p),({scale:E,x:V,y:I,density:F},z)=>(x.openBlock(),x.createElementBlock("TresMesh",{key:`${z}`,position:[V,I,-z*C.depth]},[x.createElementVNode("TresPlaneGeometry",{scale:[E,E,E],rotation:[0,0,0]},null,8,Hl),x.createElementVNode("TresMeshStandardMaterial",{map:x.unref(d),"depth-test":C.depthTest,"color-space":_.value,color:C.color,"depth-write":!1,transparent:"",opacity:u(E,F)},null,8,ec)],8,Jl))),128))],8,Wl)],16))}}),nc=x.defineComponent({__name:"Levioso",props:{speed:{default:1},rotationFactor:{default:1},floatFactor:{default:1},range:{default:()=>[-.1,.1]}},setup(v,{expose:n}){const i=v,s=x.shallowRef();n({value:s});const{onLoop:o}=Ee.useRenderLoop(),l=x.ref(Math.random()*1e4);return o(({elapsed:p})=>{var w,_;if(!s.value)return;const u=l.value+p;s.value.rotation.x=Math.cos(u/4*i.speed)/8*i.rotationFactor,s.value.rotation.y=Math.sin(u/4*i.speed)/8*i.rotationFactor,s.value.rotation.z=Math.sin(u/4*i.speed)/20*i.rotationFactor;let d=Math.sin(u/4*i.speed)/10;d=f.MathUtils.mapLinear(d,-.1,.1,((w=i.range)==null?void 0:w[0])??-.1,((_=i.range)==null?void 0:_[1])??.1),s.value.position.y=d*i.floatFactor}),(p,u)=>(x.openBlock(),x.createElementBlock("TresGroup",x.mergeProps(p.$attrs,{ref_key:"groupRef",ref:s}),[x.renderSlot(p.$slots,"default")],16))}}),ic=["geometry"],sc=["map","opacity","depth-write"],rc=["args"],oc=["rotation-x","args"],ac=x.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(v,{expose:n}){const i=v,s=x.shallowRef(),o=x.shallowRef();n(s);let l,p,u,d,w;const{state:_}=He(),y=x.computed(()=>i.width*(Array.isArray(i.scale)?i.scale[0]:i.scale||1)),C=x.computed(()=>i.height*(Array.isArray(i.scale)?i.scale[1]:i.scale||1));x.watchEffect(()=>{l&&l.dispose(),p&&p.dispose(),u&&u.dispose(),d&&d.geometry.dispose(),l=new f.WebGLRenderTarget(i.resolution,i.resolution),p=new f.WebGLRenderTarget(i.resolution,i.resolution),p.texture.generateMipmaps=l.texture.generateMipmaps=!1,u=new f.PlaneGeometry(y.value,C.value).rotateX(Math.PI/2),d=new f.Mesh(u),d.visible=!1}),x.watchEffect(()=>{i.color&&(w&&w.dispose(),w=new f.MeshDepthMaterial,w.depthTest=w.depthWrite=!1,w.onBeforeCompile=T=>{T.uniforms={...T.uniforms,ucolor:{value:i.color?new f.Color(i.color):new f.Color}},T.fragmentShader=T.fragmentShader.replace("void main() {",`uniform vec3 ucolor;
73
+ `};function Mo(v,t,n){const i=n.length-v-1;if(t>=n[i])return i-1;if(t<=n[v])return v;let o=v,a=i,c=Math.floor((o+a)/2);for(;t<n[c]||t>=n[c+1];)t<n[c]?a=c:o=c,c=Math.floor((o+a)/2);return c}function ql(v,t,n,i){const o=[],a=[],c=[];o[0]=1;for(let p=1;p<=n;++p){a[p]=t-i[v+1-p],c[p]=i[v+p]-t;let d=0;for(let g=0;g<p;++g){const y=c[g+1],b=a[p-g],C=o[g]/(y+b);o[g]=d+y*C,d=b*C}o[p]=d}return o}function Ql(v,t,n,i){const o=Mo(v,i,t),a=ql(o,i,v,t),c=new m.Vector4(0,0,0,0);for(let p=0;p<=v;++p){const d=n[o-v+p],g=a[p],y=d.w*g;c.x+=d.x*y,c.y+=d.y*y,c.z+=d.z*y,c.w+=d.w*g}return c}function Wl(v,t,n,i,o){const a=[];for(let b=0;b<=n;++b)a[b]=0;const c=[];for(let b=0;b<=i;++b)c[b]=a.slice(0);const p=[];for(let b=0;b<=n;++b)p[b]=a.slice(0);p[0][0]=1;const d=a.slice(0),g=a.slice(0);for(let b=1;b<=n;++b){d[b]=t-o[v+1-b],g[b]=o[v+b]-t;let C=0;for(let A=0;A<b;++A){const E=g[A+1],k=d[b-A];p[b][A]=E+k;const O=p[A][b-1]/p[b][A];p[A][b]=C+E*O,C=k*O}p[b][b]=C}for(let b=0;b<=n;++b)c[0][b]=p[b][n];for(let b=0;b<=n;++b){let C=0,A=1;const E=[];for(let k=0;k<=n;++k)E[k]=a.slice(0);E[0][0]=1;for(let k=1;k<=i;++k){let O=0;const R=b-k,N=n-k;b>=k&&(E[A][0]=E[C][0]/p[N+1][R],O=E[A][0]*p[R][N]);const F=R>=-1?1:-R,M=b-1<=N?k-1:n-b;for(let U=F;U<=M;++U)E[A][U]=(E[C][U]-E[C][U-1])/p[N+1][R+U],O+=E[A][U]*p[R+U][N];b<=N&&(E[A][k]=-E[C][k-1]/p[N+1][b],O+=E[A][k]*p[b][N]),c[k][b]=O;const D=C;C=A,A=D}}let y=n;for(let b=1;b<=i;++b){for(let C=0;C<=n;++C)c[b][C]*=y;y*=n-b}return c}function Jl(v,t,n,i,o){const a=o<v?o:v,c=[],p=Mo(v,i,t),d=Wl(p,i,v,a,t),g=[];for(let y=0;y<n.length;++y){const b=n[y].clone(),C=b.w;b.x*=C,b.y*=C,b.z*=C,g[y]=b}for(let y=0;y<=a;++y){const b=g[p-v].clone().multiplyScalar(d[y][0]);for(let C=1;C<=v;++C)b.add(g[p-v+C].clone().multiplyScalar(d[y][C]));c[y]=b}for(let y=a+1;y<=o+1;++y)c[y]=new m.Vector4(0,0,0);return c}function Hl(v,t){let n=1;for(let o=2;o<=v;++o)n*=o;let i=1;for(let o=2;o<=t;++o)i*=o;for(let o=2;o<=v-t;++o)i*=o;return n/i}function $l(v){const t=v.length,n=[],i=[];for(let a=0;a<t;++a){const c=v[a];n[a]=new m.Vector3(c.x,c.y,c.z),i[a]=c.w}const o=[];for(let a=0;a<t;++a){const c=n[a].clone();for(let p=1;p<=a;++p)c.sub(o[a-p].clone().multiplyScalar(Hl(a,p)*i[p]));o[a]=c.divideScalar(i[0])}return o}function ec(v,t,n,i,o){const a=Jl(v,t,n,i,o);return $l(a)}class ko extends m.Curve{constructor(t,n,i,o,a){super(),this.degree=t,this.knots=n,this.controlPoints=[],this.startKnot=o||0,this.endKnot=a||this.knots.length-1;for(let c=0;c<i.length;++c){const p=i[c];this.controlPoints[c]=new m.Vector4(p.x,p.y,p.z,p.w)}}getPoint(t,n){const i=n||new m.Vector3,o=this.knots[this.startKnot]+t*(this.knots[this.endKnot]-this.knots[this.startKnot]),a=Ql(this.degree,this.knots,this.controlPoints,o);return a.w!=1&&a.divideScalar(a.w),i.set(a.x,a.y,a.z)}getTangent(t,n){const i=n||new m.Vector3,o=this.knots[0]+t*(this.knots[this.knots.length-1]-this.knots[0]),a=ec(this.degree,this.knots,this.controlPoints,o,1);return i.copy(a[1]).normalize(),i}}let ve,Be,We;class tc extends m.Loader{constructor(t){super(t)}load(t,n,i,o){const a=this,c=a.path===""?m.LoaderUtils.extractUrlBase(t):a.path,p=new m.FileLoader(this.manager);p.setPath(a.path),p.setResponseType("arraybuffer"),p.setRequestHeader(a.requestHeader),p.setWithCredentials(a.withCredentials),p.load(t,function(d){try{n(a.parse(d,c))}catch(g){o?o(g):console.error(g),a.manager.itemError(t)}},i,o)}parse(t,n){if(ac(t))ve=new oc().parse(t);else{const o=Do(t);if(!lc(o))throw new Error("THREE.FBXLoader: Unknown format.");if(To(o)<7e3)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+To(o));ve=new rc().parse(o)}const i=new m.TextureLoader(this.manager).setPath(this.resourcePath||n).setCrossOrigin(this.crossOrigin);return new nc(i,this.manager).parse(ve)}}class nc{constructor(t,n){this.textureLoader=t,this.manager=n}parse(){Be=this.parseConnections();const t=this.parseImages(),n=this.parseTextures(t),i=this.parseMaterials(n),o=this.parseDeformers(),a=new sc().parse(o);return this.parseScene(o,a,i),We}parseConnections(){const t=new Map;return"Connections"in ve&&ve.Connections.connections.forEach(function(i){const o=i[0],a=i[1],c=i[2];t.has(o)||t.set(o,{parents:[],children:[]});const p={ID:a,relationship:c};t.get(o).parents.push(p),t.has(a)||t.set(a,{parents:[],children:[]});const d={ID:o,relationship:c};t.get(a).children.push(d)}),t}parseImages(){const t={},n={};if("Video"in ve.Objects){const i=ve.Objects.Video;for(const o in i){const a=i[o],c=parseInt(o);if(t[c]=a.RelativeFilename||a.Filename,"Content"in a){const p=a.Content instanceof ArrayBuffer&&a.Content.byteLength>0,d=typeof a.Content=="string"&&a.Content!=="";if(p||d){const g=this.parseImage(i[o]);n[a.RelativeFilename||a.Filename]=g}}}}for(const i in t){const o=t[i];n[o]!==void 0?t[i]=n[o]:t[i]=t[i].split("\\").pop()}return t}parseImage(t){const n=t.Content,i=t.RelativeFilename||t.Filename,o=i.slice(i.lastIndexOf(".")+1).toLowerCase();let a;switch(o){case"bmp":a="image/bmp";break;case"jpg":case"jpeg":a="image/jpeg";break;case"png":a="image/png";break;case"tif":a="image/tiff";break;case"tga":this.manager.getHandler(".tga")===null&&console.warn("FBXLoader: TGA loader not found, skipping ",i),a="image/tga";break;default:console.warn('FBXLoader: Image type "'+o+'" is not supported.');return}if(typeof n=="string")return"data:"+a+";base64,"+n;{const c=new Uint8Array(n);return window.URL.createObjectURL(new Blob([c],{type:a}))}}parseTextures(t){const n=new Map;if("Texture"in ve.Objects){const i=ve.Objects.Texture;for(const o in i){const a=this.parseTexture(i[o],t);n.set(parseInt(o),a)}}return n}parseTexture(t,n){const i=this.loadTexture(t,n);i.ID=t.id,i.name=t.attrName;const o=t.WrapModeU,a=t.WrapModeV,c=o!==void 0?o.value:0,p=a!==void 0?a.value:0;if(i.wrapS=c===0?m.RepeatWrapping:m.ClampToEdgeWrapping,i.wrapT=p===0?m.RepeatWrapping:m.ClampToEdgeWrapping,"Scaling"in t){const d=t.Scaling.value;i.repeat.x=d[0],i.repeat.y=d[1]}return i}loadTexture(t,n){let i;const o=this.textureLoader.path,a=Be.get(t.id).children;a!==void 0&&a.length>0&&n[a[0].ID]!==void 0&&(i=n[a[0].ID],(i.indexOf("blob:")===0||i.indexOf("data:")===0)&&this.textureLoader.setPath(void 0));let c;const p=t.FileName.slice(-3).toLowerCase();if(p==="tga"){const d=this.manager.getHandler(".tga");d===null?(console.warn("FBXLoader: TGA loader not found, creating placeholder texture for",t.RelativeFilename),c=new m.Texture):(d.setPath(this.textureLoader.path),c=d.load(i))}else p==="psd"?(console.warn("FBXLoader: PSD textures are not supported, creating placeholder texture for",t.RelativeFilename),c=new m.Texture):c=this.textureLoader.load(i);return this.textureLoader.setPath(o),c}parseMaterials(t){const n=new Map;if("Material"in ve.Objects){const i=ve.Objects.Material;for(const o in i){const a=this.parseMaterial(i[o],t);a!==null&&n.set(parseInt(o),a)}}return n}parseMaterial(t,n){const i=t.id,o=t.attrName;let a=t.ShadingModel;if(typeof a=="object"&&(a=a.value),!Be.has(i))return null;const c=this.parseParameters(t,n,i);let p;switch(a.toLowerCase()){case"phong":p=new m.MeshPhongMaterial;break;case"lambert":p=new m.MeshLambertMaterial;break;default:console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.',a),p=new m.MeshPhongMaterial;break}return p.setValues(c),p.name=o,p}parseParameters(t,n,i){const o={};t.BumpFactor&&(o.bumpScale=t.BumpFactor.value),t.Diffuse?o.color=new m.Color().fromArray(t.Diffuse.value):t.DiffuseColor&&(t.DiffuseColor.type==="Color"||t.DiffuseColor.type==="ColorRGB")&&(o.color=new m.Color().fromArray(t.DiffuseColor.value)),t.DisplacementFactor&&(o.displacementScale=t.DisplacementFactor.value),t.Emissive?o.emissive=new m.Color().fromArray(t.Emissive.value):t.EmissiveColor&&(t.EmissiveColor.type==="Color"||t.EmissiveColor.type==="ColorRGB")&&(o.emissive=new m.Color().fromArray(t.EmissiveColor.value)),t.EmissiveFactor&&(o.emissiveIntensity=parseFloat(t.EmissiveFactor.value)),t.Opacity&&(o.opacity=parseFloat(t.Opacity.value)),o.opacity<1&&(o.transparent=!0),t.ReflectionFactor&&(o.reflectivity=t.ReflectionFactor.value),t.Shininess&&(o.shininess=t.Shininess.value),t.Specular?o.specular=new m.Color().fromArray(t.Specular.value):t.SpecularColor&&t.SpecularColor.type==="Color"&&(o.specular=new m.Color().fromArray(t.SpecularColor.value));const a=this;return Be.get(i).children.forEach(function(c){const p=c.relationship;switch(p){case"Bump":o.bumpMap=a.getTexture(n,c.ID);break;case"Maya|TEX_ao_map":o.aoMap=a.getTexture(n,c.ID);break;case"DiffuseColor":case"Maya|TEX_color_map":o.map=a.getTexture(n,c.ID),o.map!==void 0&&("colorSpace"in o.map?o.map.colorSpace="srgb":o.map.encoding=3001);break;case"DisplacementColor":o.displacementMap=a.getTexture(n,c.ID);break;case"EmissiveColor":o.emissiveMap=a.getTexture(n,c.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=a.getTexture(n,c.ID);break;case"ReflectionColor":o.envMap=a.getTexture(n,c.ID),o.envMap!==void 0&&(o.envMap.mapping=m.EquirectangularReflectionMapping,"colorSpace"in o.envMap?o.envMap.colorSpace="srgb":o.envMap.encoding=3001);break;case"SpecularColor":o.specularMap=a.getTexture(n,c.ID),o.specularMap!==void 0&&("colorSpace"in o.specularMap?o.specularMap.colorSpace="srgb":o.specularMap.encoding=3001);break;case"TransparentColor":case"TransparencyFactor":o.alphaMap=a.getTexture(n,c.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.",p);break}}),o}getTexture(t,n){return"LayeredTexture"in ve.Objects&&n in ve.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),n=Be.get(n).children[0].ID),t.get(n)}parseDeformers(){const t={},n={};if("Deformer"in ve.Objects){const i=ve.Objects.Deformer;for(const o in i){const a=i[o],c=Be.get(parseInt(o));if(a.attrType==="Skin"){const p=this.parseSkeleton(c,i);p.ID=o,c.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),p.geometryID=c.parents[0].ID,t[o]=p}else if(a.attrType==="BlendShape"){const p={id:o};p.rawTargets=this.parseMorphTargets(c,i),p.id=o,c.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),n[o]=p}}}return{skeletons:t,morphTargets:n}}parseSkeleton(t,n){const i=[];return t.children.forEach(function(o){const a=n[o.ID];if(a.attrType!=="Cluster")return;const c={ID:o.ID,indices:[],weights:[],transformLink:new m.Matrix4().fromArray(a.TransformLink.a)};"Indexes"in a&&(c.indices=a.Indexes.a,c.weights=a.Weights.a),i.push(c)}),{rawBones:i,bones:[]}}parseMorphTargets(t,n){const i=[];for(let o=0;o<t.children.length;o++){const a=t.children[o],c=n[a.ID],p={name:c.attrName,initialWeight:c.DeformPercent,id:c.id,fullWeights:c.FullWeights.a};if(c.attrType!=="BlendShapeChannel")return;p.geoID=Be.get(parseInt(a.ID)).children.filter(function(d){return d.relationship===void 0})[0].ID,i.push(p)}return i}parseScene(t,n,i){We=new m.Group;const o=this.parseModels(t.skeletons,n,i),a=ve.Objects.Model,c=this;o.forEach(function(d){const g=a[d.ID];c.setLookAtProperties(d,g),Be.get(d.ID).parents.forEach(function(b){const C=o.get(b.ID);C!==void 0&&C.add(d)}),d.parent===null&&We.add(d)}),this.bindSkeleton(t.skeletons,n,o),this.createAmbientLight(),We.traverse(function(d){if(d.userData.transformData){d.parent&&(d.userData.transformData.parentMatrix=d.parent.matrix,d.userData.transformData.parentMatrixWorld=d.parent.matrixWorld);const g=Eo(d.userData.transformData);d.applyMatrix4(g),d.updateWorldMatrix()}});const p=new ic().parse();We.children.length===1&&We.children[0].isGroup&&(We.children[0].animations=p,We=We.children[0]),We.animations=p}parseModels(t,n,i){const o=new Map,a=ve.Objects.Model;for(const c in a){const p=parseInt(c),d=a[c],g=Be.get(p);let y=this.buildSkeleton(g,t,p,d.attrName);if(!y){switch(d.attrType){case"Camera":y=this.createCamera(g);break;case"Light":y=this.createLight(g);break;case"Mesh":y=this.createMesh(g,n,i);break;case"NurbsCurve":y=this.createCurve(g,n);break;case"LimbNode":case"Root":y=new m.Bone;break;case"Null":default:y=new m.Group;break}y.name=d.attrName?m.PropertyBinding.sanitizeNodeName(d.attrName):"",y.ID=p}this.getTransformData(y,d),o.set(p,y)}return o}buildSkeleton(t,n,i,o){let a=null;return t.parents.forEach(function(c){for(const p in n){const d=n[p];d.rawBones.forEach(function(g,y){if(g.ID===c.ID){const b=a;a=new m.Bone,a.matrixWorld.copy(g.transformLink),a.name=o?m.PropertyBinding.sanitizeNodeName(o):"",a.ID=i,d.bones[y]=a,b!==null&&a.add(b)}})}}),a}createCamera(t){let n,i;if(t.children.forEach(function(o){const a=ve.Objects.NodeAttribute[o.ID];a!==void 0&&(i=a)}),i===void 0)n=new m.Object3D;else{let o=0;i.CameraProjectionType!==void 0&&i.CameraProjectionType.value===1&&(o=1);let a=1;i.NearPlane!==void 0&&(a=i.NearPlane.value/1e3);let c=1e3;i.FarPlane!==void 0&&(c=i.FarPlane.value/1e3);let p=window.innerWidth,d=window.innerHeight;i.AspectWidth!==void 0&&i.AspectHeight!==void 0&&(p=i.AspectWidth.value,d=i.AspectHeight.value);const g=p/d;let y=45;i.FieldOfView!==void 0&&(y=i.FieldOfView.value);const b=i.FocalLength?i.FocalLength.value:null;switch(o){case 0:n=new m.PerspectiveCamera(y,g,a,c),b!==null&&n.setFocalLength(b);break;case 1:n=new m.OrthographicCamera(-p/2,p/2,d/2,-d/2,a,c);break;default:console.warn("THREE.FBXLoader: Unknown camera type "+o+"."),n=new m.Object3D;break}}return n}createLight(t){let n,i;if(t.children.forEach(function(o){const a=ve.Objects.NodeAttribute[o.ID];a!==void 0&&(i=a)}),i===void 0)n=new m.Object3D;else{let o;i.LightType===void 0?o=0:o=i.LightType.value;let a=16777215;i.Color!==void 0&&(a=new m.Color().fromArray(i.Color.value));let c=i.Intensity===void 0?1:i.Intensity.value/100;i.CastLightOnObject!==void 0&&i.CastLightOnObject.value===0&&(c=0);let p=0;i.FarAttenuationEnd!==void 0&&(i.EnableFarAttenuation!==void 0&&i.EnableFarAttenuation.value===0?p=0:p=i.FarAttenuationEnd.value);const d=1;switch(o){case 0:n=new m.PointLight(a,c,p,d);break;case 1:n=new m.DirectionalLight(a,c);break;case 2:let g=Math.PI/3;i.InnerAngle!==void 0&&(g=m.MathUtils.degToRad(i.InnerAngle.value));let y=0;i.OuterAngle!==void 0&&(y=m.MathUtils.degToRad(i.OuterAngle.value),y=Math.max(y,1)),n=new m.SpotLight(a,c,p,g,y,d);break;default:console.warn("THREE.FBXLoader: Unknown light type "+i.LightType.value+", defaulting to a PointLight."),n=new m.PointLight(a,c);break}i.CastShadows!==void 0&&i.CastShadows.value===1&&(n.castShadow=!0)}return n}createMesh(t,n,i){let o,a=null,c=null;const p=[];return t.children.forEach(function(d){n.has(d.ID)&&(a=n.get(d.ID)),i.has(d.ID)&&p.push(i.get(d.ID))}),p.length>1?c=p:p.length>0?c=p[0]:(c=new m.MeshPhongMaterial({color:13421772}),p.push(c)),"color"in a.attributes&&p.forEach(function(d){d.vertexColors=!0}),a.FBX_Deformer?(o=new m.SkinnedMesh(a,c),o.normalizeSkinWeights()):o=new m.Mesh(a,c),o}createCurve(t,n){const i=t.children.reduce(function(a,c){return n.has(c.ID)&&(a=n.get(c.ID)),a},null),o=new m.LineBasicMaterial({color:3342591,linewidth:1});return new m.Line(i,o)}getTransformData(t,n){const i={};"InheritType"in n&&(i.inheritType=parseInt(n.InheritType.value)),"RotationOrder"in n?i.eulerOrder=Oo(n.RotationOrder.value):i.eulerOrder="ZYX","Lcl_Translation"in n&&(i.translation=n.Lcl_Translation.value),"PreRotation"in n&&(i.preRotation=n.PreRotation.value),"Lcl_Rotation"in n&&(i.rotation=n.Lcl_Rotation.value),"PostRotation"in n&&(i.postRotation=n.PostRotation.value),"Lcl_Scaling"in n&&(i.scale=n.Lcl_Scaling.value),"ScalingOffset"in n&&(i.scalingOffset=n.ScalingOffset.value),"ScalingPivot"in n&&(i.scalingPivot=n.ScalingPivot.value),"RotationOffset"in n&&(i.rotationOffset=n.RotationOffset.value),"RotationPivot"in n&&(i.rotationPivot=n.RotationPivot.value),t.userData.transformData=i}setLookAtProperties(t,n){"LookAtProperty"in n&&Be.get(t.ID).children.forEach(function(o){if(o.relationship==="LookAtProperty"){const a=ve.Objects.Model[o.ID];if("Lcl_Translation"in a){const c=a.Lcl_Translation.value;t.target!==void 0?(t.target.position.fromArray(c),We.add(t.target)):t.lookAt(new m.Vector3().fromArray(c))}}})}bindSkeleton(t,n,i){const o=this.parsePoseNodes();for(const a in t){const c=t[a];Be.get(parseInt(c.ID)).parents.forEach(function(d){if(n.has(d.ID)){const g=d.ID;Be.get(g).parents.forEach(function(b){i.has(b.ID)&&i.get(b.ID).bind(new m.Skeleton(c.bones),o[b.ID])})}})}}parsePoseNodes(){const t={};if("Pose"in ve.Objects){const n=ve.Objects.Pose;for(const i in n)if(n[i].attrType==="BindPose"&&n[i].NbPoseNodes>0){const o=n[i].PoseNode;Array.isArray(o)?o.forEach(function(a){t[a.Node]=new m.Matrix4().fromArray(a.Matrix.a)}):t[o.Node]=new m.Matrix4().fromArray(o.Matrix.a)}}return t}createAmbientLight(){if("GlobalSettings"in ve&&"AmbientColor"in ve.GlobalSettings){const t=ve.GlobalSettings.AmbientColor.value,n=t[0],i=t[1],o=t[2];if(n!==0||i!==0||o!==0){const a=new m.Color(n,i,o);We.add(new m.AmbientLight(a,1))}}}}class sc{parse(t){const n=new Map;if("Geometry"in ve.Objects){const i=ve.Objects.Geometry;for(const o in i){const a=Be.get(parseInt(o)),c=this.parseGeometry(a,i[o],t);n.set(parseInt(o),c)}}return n}parseGeometry(t,n,i){switch(n.attrType){case"Mesh":return this.parseMeshGeometry(t,n,i);case"NurbsCurve":return this.parseNurbsGeometry(n)}}parseMeshGeometry(t,n,i){const o=i.skeletons,a=[],c=t.parents.map(function(b){return ve.Objects.Model[b.ID]});if(c.length===0)return;const p=t.children.reduce(function(b,C){return o[C.ID]!==void 0&&(b=o[C.ID]),b},null);t.children.forEach(function(b){i.morphTargets[b.ID]!==void 0&&a.push(i.morphTargets[b.ID])});const d=c[0],g={};"RotationOrder"in d&&(g.eulerOrder=Oo(d.RotationOrder.value)),"InheritType"in d&&(g.inheritType=parseInt(d.InheritType.value)),"GeometricTranslation"in d&&(g.translation=d.GeometricTranslation.value),"GeometricRotation"in d&&(g.rotation=d.GeometricRotation.value),"GeometricScaling"in d&&(g.scale=d.GeometricScaling.value);const y=Eo(g);return this.genGeometry(n,p,a,y)}genGeometry(t,n,i,o){const a=new m.BufferGeometry;t.attrName&&(a.name=t.attrName);const c=this.parseGeoNode(t,n),p=this.genBuffers(c),d=new m.Float32BufferAttribute(p.vertex,3);if(d.applyMatrix4(o),a.setAttribute("position",d),p.colors.length>0&&a.setAttribute("color",new m.Float32BufferAttribute(p.colors,3)),n&&(a.setAttribute("skinIndex",new m.Uint16BufferAttribute(p.weightsIndices,4)),a.setAttribute("skinWeight",new m.Float32BufferAttribute(p.vertexWeights,4)),a.FBX_Deformer=n),p.normal.length>0){const g=new m.Matrix3().getNormalMatrix(o),y=new m.Float32BufferAttribute(p.normal,3);y.applyNormalMatrix(g),a.setAttribute("normal",y)}if(p.uvs.forEach(function(g,y){let b="uv"+(y+1).toString();y===0&&(b="uv"),a.setAttribute(b,new m.Float32BufferAttribute(p.uvs[y],2))}),c.material&&c.material.mappingType!=="AllSame"){let g=p.materialIndex[0],y=0;if(p.materialIndex.forEach(function(b,C){b!==g&&(a.addGroup(y,C-y,g),g=b,y=C)}),a.groups.length>0){const b=a.groups[a.groups.length-1],C=b.start+b.count;C!==p.materialIndex.length&&a.addGroup(C,p.materialIndex.length-C,g)}a.groups.length===0&&a.addGroup(0,p.materialIndex.length,p.materialIndex[0])}return this.addMorphTargets(a,t,i,o),a}parseGeoNode(t,n){const i={};if(i.vertexPositions=t.Vertices!==void 0?t.Vertices.a:[],i.vertexIndices=t.PolygonVertexIndex!==void 0?t.PolygonVertexIndex.a:[],t.LayerElementColor&&(i.color=this.parseVertexColors(t.LayerElementColor[0])),t.LayerElementMaterial&&(i.material=this.parseMaterialIndices(t.LayerElementMaterial[0])),t.LayerElementNormal&&(i.normal=this.parseNormals(t.LayerElementNormal[0])),t.LayerElementUV){i.uv=[];let o=0;for(;t.LayerElementUV[o];)t.LayerElementUV[o].UV&&i.uv.push(this.parseUVs(t.LayerElementUV[o])),o++}return i.weightTable={},n!==null&&(i.skeleton=n,n.rawBones.forEach(function(o,a){o.indices.forEach(function(c,p){i.weightTable[c]===void 0&&(i.weightTable[c]=[]),i.weightTable[c].push({id:a,weight:o.weights[p]})})})),i}genBuffers(t){const n={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]};let i=0,o=0,a=!1,c=[],p=[],d=[],g=[],y=[],b=[];const C=this;return t.vertexIndices.forEach(function(A,E){let k,O=!1;A<0&&(A=A^-1,O=!0);let R=[],N=[];if(c.push(A*3,A*3+1,A*3+2),t.color){const F=Js(E,i,A,t.color);d.push(F[0],F[1],F[2])}if(t.skeleton){if(t.weightTable[A]!==void 0&&t.weightTable[A].forEach(function(F){N.push(F.weight),R.push(F.id)}),N.length>4){a||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),a=!0);const F=[0,0,0,0],M=[0,0,0,0];N.forEach(function(D,U){let S=D,T=R[U];M.forEach(function(j,X,Z){if(S>j){Z[X]=S,S=j;const J=F[X];F[X]=T,T=J}})}),R=F,N=M}for(;N.length<4;)N.push(0),R.push(0);for(let F=0;F<4;++F)y.push(N[F]),b.push(R[F])}if(t.normal){const F=Js(E,i,A,t.normal);p.push(F[0],F[1],F[2])}t.material&&t.material.mappingType!=="AllSame"&&(k=Js(E,i,A,t.material)[0]),t.uv&&t.uv.forEach(function(F,M){const D=Js(E,i,A,F);g[M]===void 0&&(g[M]=[]),g[M].push(D[0]),g[M].push(D[1])}),o++,O&&(C.genFace(n,t,c,k,p,d,g,y,b,o),i++,o=0,c=[],p=[],d=[],g=[],y=[],b=[])}),n}genFace(t,n,i,o,a,c,p,d,g,y){for(let b=2;b<y;b++)t.vertex.push(n.vertexPositions[i[0]]),t.vertex.push(n.vertexPositions[i[1]]),t.vertex.push(n.vertexPositions[i[2]]),t.vertex.push(n.vertexPositions[i[(b-1)*3]]),t.vertex.push(n.vertexPositions[i[(b-1)*3+1]]),t.vertex.push(n.vertexPositions[i[(b-1)*3+2]]),t.vertex.push(n.vertexPositions[i[b*3]]),t.vertex.push(n.vertexPositions[i[b*3+1]]),t.vertex.push(n.vertexPositions[i[b*3+2]]),n.skeleton&&(t.vertexWeights.push(d[0]),t.vertexWeights.push(d[1]),t.vertexWeights.push(d[2]),t.vertexWeights.push(d[3]),t.vertexWeights.push(d[(b-1)*4]),t.vertexWeights.push(d[(b-1)*4+1]),t.vertexWeights.push(d[(b-1)*4+2]),t.vertexWeights.push(d[(b-1)*4+3]),t.vertexWeights.push(d[b*4]),t.vertexWeights.push(d[b*4+1]),t.vertexWeights.push(d[b*4+2]),t.vertexWeights.push(d[b*4+3]),t.weightsIndices.push(g[0]),t.weightsIndices.push(g[1]),t.weightsIndices.push(g[2]),t.weightsIndices.push(g[3]),t.weightsIndices.push(g[(b-1)*4]),t.weightsIndices.push(g[(b-1)*4+1]),t.weightsIndices.push(g[(b-1)*4+2]),t.weightsIndices.push(g[(b-1)*4+3]),t.weightsIndices.push(g[b*4]),t.weightsIndices.push(g[b*4+1]),t.weightsIndices.push(g[b*4+2]),t.weightsIndices.push(g[b*4+3])),n.color&&(t.colors.push(c[0]),t.colors.push(c[1]),t.colors.push(c[2]),t.colors.push(c[(b-1)*3]),t.colors.push(c[(b-1)*3+1]),t.colors.push(c[(b-1)*3+2]),t.colors.push(c[b*3]),t.colors.push(c[b*3+1]),t.colors.push(c[b*3+2])),n.material&&n.material.mappingType!=="AllSame"&&(t.materialIndex.push(o),t.materialIndex.push(o),t.materialIndex.push(o)),n.normal&&(t.normal.push(a[0]),t.normal.push(a[1]),t.normal.push(a[2]),t.normal.push(a[(b-1)*3]),t.normal.push(a[(b-1)*3+1]),t.normal.push(a[(b-1)*3+2]),t.normal.push(a[b*3]),t.normal.push(a[b*3+1]),t.normal.push(a[b*3+2])),n.uv&&n.uv.forEach(function(C,A){t.uvs[A]===void 0&&(t.uvs[A]=[]),t.uvs[A].push(p[A][0]),t.uvs[A].push(p[A][1]),t.uvs[A].push(p[A][(b-1)*2]),t.uvs[A].push(p[A][(b-1)*2+1]),t.uvs[A].push(p[A][b*2]),t.uvs[A].push(p[A][b*2+1])})}addMorphTargets(t,n,i,o){if(i.length===0)return;t.morphTargetsRelative=!0,t.morphAttributes.position=[];const a=this;i.forEach(function(c){c.rawTargets.forEach(function(p){const d=ve.Objects.Geometry[p.geoID];d!==void 0&&a.genMorphGeometry(t,n,d,o,p.name)})})}genMorphGeometry(t,n,i,o,a){const c=n.PolygonVertexIndex!==void 0?n.PolygonVertexIndex.a:[],p=i.Vertices!==void 0?i.Vertices.a:[],d=i.Indexes!==void 0?i.Indexes.a:[],g=t.attributes.position.count*3,y=new Float32Array(g);for(let E=0;E<d.length;E++){const k=d[E]*3;y[k]=p[E*3],y[k+1]=p[E*3+1],y[k+2]=p[E*3+2]}const b={vertexIndices:c,vertexPositions:y},C=this.genBuffers(b),A=new m.Float32BufferAttribute(C.vertex,3);A.name=a||i.attrName,A.applyMatrix4(o),t.morphAttributes.position.push(A)}parseNormals(t){const n=t.MappingInformationType,i=t.ReferenceInformationType,o=t.Normals.a;let a=[];return i==="IndexToDirect"&&("NormalIndex"in t?a=t.NormalIndex.a:"NormalsIndex"in t&&(a=t.NormalsIndex.a)),{dataSize:3,buffer:o,indices:a,mappingType:n,referenceType:i}}parseUVs(t){const n=t.MappingInformationType,i=t.ReferenceInformationType,o=t.UV.a;let a=[];return i==="IndexToDirect"&&(a=t.UVIndex.a),{dataSize:2,buffer:o,indices:a,mappingType:n,referenceType:i}}parseVertexColors(t){const n=t.MappingInformationType,i=t.ReferenceInformationType,o=t.Colors.a;let a=[];return i==="IndexToDirect"&&(a=t.ColorIndex.a),{dataSize:4,buffer:o,indices:a,mappingType:n,referenceType:i}}parseMaterialIndices(t){const n=t.MappingInformationType,i=t.ReferenceInformationType;if(n==="NoMappingInformation")return{dataSize:1,buffer:[0],indices:[0],mappingType:"AllSame",referenceType:i};const o=t.Materials.a,a=[];for(let c=0;c<o.length;++c)a.push(c);return{dataSize:1,buffer:o,indices:a,mappingType:n,referenceType:i}}parseNurbsGeometry(t){if(ko===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 m.BufferGeometry;const n=parseInt(t.Order);if(isNaN(n))return console.error("THREE.FBXLoader: Invalid Order %s given for geometry ID: %s",t.Order,t.id),new m.BufferGeometry;const i=n-1,o=t.KnotVector.a,a=[],c=t.Points.a;for(let b=0,C=c.length;b<C;b+=4)a.push(new m.Vector4().fromArray(c,b));let p,d;if(t.Form==="Closed")a.push(a[0]);else if(t.Form==="Periodic"){p=i,d=o.length-1-p;for(let b=0;b<i;++b)a.push(a[b])}const y=new ko(i,o,a,p,d).getPoints(a.length*12);return new m.BufferGeometry().setFromPoints(y)}}class ic{parse(){const t=[],n=this.parseClips();if(n!==void 0)for(const i in n){const o=n[i],a=this.addClip(o);t.push(a)}return t}parseClips(){if(ve.Objects.AnimationCurve===void 0)return;const t=this.parseAnimationCurveNodes();this.parseAnimationCurves(t);const n=this.parseAnimationLayers(t);return this.parseAnimStacks(n)}parseAnimationCurveNodes(){const t=ve.Objects.AnimationCurveNode,n=new Map;for(const i in t){const o=t[i];if(o.attrName.match(/S|R|T|DeformPercent/)!==null){const a={id:o.id,attr:o.attrName,curves:{}};n.set(a.id,a)}}return n}parseAnimationCurves(t){const n=ve.Objects.AnimationCurve;for(const i in n){const o={id:n[i].id,times:n[i].KeyTime.a.map(cc),values:n[i].KeyValueFloat.a},a=Be.get(o.id);if(a!==void 0){const c=a.parents[0].ID,p=a.parents[0].relationship;p.match(/X/)?t.get(c).curves.x=o:p.match(/Y/)?t.get(c).curves.y=o:p.match(/Z/)?t.get(c).curves.z=o:p.match(/d|DeformPercent/)&&t.has(c)&&(t.get(c).curves.morph=o)}}}parseAnimationLayers(t){const n=ve.Objects.AnimationLayer,i=new Map;for(const o in n){const a=[],c=Be.get(parseInt(o));c!==void 0&&(c.children.forEach(function(d,g){if(t.has(d.ID)){const y=t.get(d.ID);if(y.curves.x!==void 0||y.curves.y!==void 0||y.curves.z!==void 0){if(a[g]===void 0){const b=Be.get(d.ID).parents.filter(function(C){return C.relationship!==void 0})[0].ID;if(b!==void 0){const C=ve.Objects.Model[b.toString()];if(C===void 0){console.warn("THREE.FBXLoader: Encountered a unused curve.",d);return}const A={modelName:C.attrName?m.PropertyBinding.sanitizeNodeName(C.attrName):"",ID:C.id,initialPosition:[0,0,0],initialRotation:[0,0,0],initialScale:[1,1,1]};We.traverse(function(E){E.ID===C.id&&(A.transform=E.matrix,E.userData.transformData&&(A.eulerOrder=E.userData.transformData.eulerOrder))}),A.transform||(A.transform=new m.Matrix4),"PreRotation"in C&&(A.preRotation=C.PreRotation.value),"PostRotation"in C&&(A.postRotation=C.PostRotation.value),a[g]=A}}a[g]&&(a[g][y.attr]=y)}else if(y.curves.morph!==void 0){if(a[g]===void 0){const b=Be.get(d.ID).parents.filter(function(R){return R.relationship!==void 0})[0].ID,C=Be.get(b).parents[0].ID,A=Be.get(C).parents[0].ID,E=Be.get(A).parents[0].ID,k=ve.Objects.Model[E],O={modelName:k.attrName?m.PropertyBinding.sanitizeNodeName(k.attrName):"",morphName:ve.Objects.Deformer[b].attrName};a[g]=O}a[g][y.attr]=y}}}),i.set(parseInt(o),a))}return i}parseAnimStacks(t){const n=ve.Objects.AnimationStack,i={};for(const o in n){const a=Be.get(parseInt(o)).children;a.length>1&&console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.");const c=t.get(a[0].ID);i[o]={name:n[o].attrName,layer:c}}return i}addClip(t){let n=[];const i=this;return t.layer.forEach(function(o){n=n.concat(i.generateTracks(o))}),new m.AnimationClip(t.name,-1,n)}generateTracks(t){const n=[];let i=new m.Vector3,o=new m.Quaternion,a=new m.Vector3;if(t.transform&&t.transform.decompose(i,o,a),i=i.toArray(),o=new m.Euler().setFromQuaternion(o,t.eulerOrder).toArray(),a=a.toArray(),t.T!==void 0&&Object.keys(t.T.curves).length>0){const c=this.generateVectorTrack(t.modelName,t.T.curves,i,"position");c!==void 0&&n.push(c)}if(t.R!==void 0&&Object.keys(t.R.curves).length>0){const c=this.generateRotationTrack(t.modelName,t.R.curves,o,t.preRotation,t.postRotation,t.eulerOrder);c!==void 0&&n.push(c)}if(t.S!==void 0&&Object.keys(t.S.curves).length>0){const c=this.generateVectorTrack(t.modelName,t.S.curves,a,"scale");c!==void 0&&n.push(c)}if(t.DeformPercent!==void 0){const c=this.generateMorphTrack(t);c!==void 0&&n.push(c)}return n}generateVectorTrack(t,n,i,o){const a=this.getTimesForAllAxes(n),c=this.getKeyframeTrackValues(a,n,i);return new m.VectorKeyframeTrack(t+"."+o,a,c)}generateRotationTrack(t,n,i,o,a,c){n.x!==void 0&&(this.interpolateRotations(n.x),n.x.values=n.x.values.map(m.MathUtils.degToRad)),n.y!==void 0&&(this.interpolateRotations(n.y),n.y.values=n.y.values.map(m.MathUtils.degToRad)),n.z!==void 0&&(this.interpolateRotations(n.z),n.z.values=n.z.values.map(m.MathUtils.degToRad));const p=this.getTimesForAllAxes(n),d=this.getKeyframeTrackValues(p,n,i);o!==void 0&&(o=o.map(m.MathUtils.degToRad),o.push(c),o=new m.Euler().fromArray(o),o=new m.Quaternion().setFromEuler(o)),a!==void 0&&(a=a.map(m.MathUtils.degToRad),a.push(c),a=new m.Euler().fromArray(a),a=new m.Quaternion().setFromEuler(a).invert());const g=new m.Quaternion,y=new m.Euler,b=[];for(let C=0;C<d.length;C+=3)y.set(d[C],d[C+1],d[C+2],c),g.setFromEuler(y),o!==void 0&&g.premultiply(o),a!==void 0&&g.multiply(a),g.toArray(b,C/3*4);return new m.QuaternionKeyframeTrack(t+".quaternion",p,b)}generateMorphTrack(t){const n=t.DeformPercent.curves.morph,i=n.values.map(function(a){return a/100}),o=We.getObjectByName(t.modelName).morphTargetDictionary[t.morphName];return new m.NumberKeyframeTrack(t.modelName+".morphTargetInfluences["+o+"]",n.times,i)}getTimesForAllAxes(t){let n=[];if(t.x!==void 0&&(n=n.concat(t.x.times)),t.y!==void 0&&(n=n.concat(t.y.times)),t.z!==void 0&&(n=n.concat(t.z.times)),n=n.sort(function(i,o){return i-o}),n.length>1){let i=1,o=n[0];for(let a=1;a<n.length;a++){const c=n[a];c!==o&&(n[i]=c,o=c,i++)}n=n.slice(0,i)}return n}getKeyframeTrackValues(t,n,i){const o=i,a=[];let c=-1,p=-1,d=-1;return t.forEach(function(g){if(n.x&&(c=n.x.times.indexOf(g)),n.y&&(p=n.y.times.indexOf(g)),n.z&&(d=n.z.times.indexOf(g)),c!==-1){const y=n.x.values[c];a.push(y),o[0]=y}else a.push(o[0]);if(p!==-1){const y=n.y.values[p];a.push(y),o[1]=y}else a.push(o[1]);if(d!==-1){const y=n.z.values[d];a.push(y),o[2]=y}else a.push(o[2])}),a}interpolateRotations(t){for(let n=1;n<t.values.length;n++){const i=t.values[n-1],o=t.values[n]-i,a=Math.abs(o);if(a>=180){const c=a/180,p=o/c;let d=i+p;const g=t.times[n-1],b=(t.times[n]-g)/c;let C=g+b;const A=[],E=[];for(;C<t.times[n];)A.push(C),C+=b,E.push(d),d+=p;t.times=Vo(t.times,n,A),t.values=Vo(t.values,n,E)}}}}class rc{getPrevNode(){return this.nodeStack[this.currentIndent-2]}getCurrentNode(){return this.nodeStack[this.currentIndent-1]}getCurrentProp(){return this.currentProp}pushStack(t){this.nodeStack.push(t),this.currentIndent+=1}popStack(){this.nodeStack.pop(),this.currentIndent-=1}setCurrentProp(t,n){this.currentProp=t,this.currentPropName=n}parse(t){this.currentIndent=0,this.allNodes=new So,this.nodeStack=[],this.currentProp=[],this.currentPropName="";const n=this,i=t.split(/[\r\n]+/);return i.forEach(function(o,a){const c=o.match(/^[\s\t]*;/),p=o.match(/^[\s\t]*$/);if(c||p)return;const d=o.match("^\\t{"+n.currentIndent+"}(\\w+):(.*){",""),g=o.match("^\\t{"+n.currentIndent+"}(\\w+):[\\s\\t\\r\\n](.*)"),y=o.match("^\\t{"+(n.currentIndent-1)+"}}");d?n.parseNodeBegin(o,d):g?n.parseNodeProperty(o,g,i[++a]):y?n.popStack():o.match(/^[^\s\t}]/)&&n.parseNodePropertyContinued(o)}),this.allNodes}parseNodeBegin(t,n){const i=n[1].trim().replace(/^"/,"").replace(/"$/,""),o=n[2].split(",").map(function(d){return d.trim().replace(/^"/,"").replace(/"$/,"")}),a={name:i},c=this.parseNodeAttr(o),p=this.getCurrentNode();this.currentIndent===0?this.allNodes.add(i,a):i in p?(i==="PoseNode"?p.PoseNode.push(a):p[i].id!==void 0&&(p[i]={},p[i][p[i].id]=p[i]),c.id!==""&&(p[i][c.id]=a)):typeof c.id=="number"?(p[i]={},p[i][c.id]=a):i!=="Properties70"&&(i==="PoseNode"?p[i]=[a]:p[i]=a),typeof c.id=="number"&&(a.id=c.id),c.name!==""&&(a.attrName=c.name),c.type!==""&&(a.attrType=c.type),this.pushStack(a)}parseNodeAttr(t){let n=t[0];t[0]!==""&&(n=parseInt(t[0]),isNaN(n)&&(n=t[0]));let i="",o="";return t.length>1&&(i=t[1].replace(/^(\w+)::/,""),o=t[2]),{id:n,name:i,type:o}}parseNodeProperty(t,n,i){let o=n[1].replace(/^"/,"").replace(/"$/,"").trim(),a=n[2].replace(/^"/,"").replace(/"$/,"").trim();o==="Content"&&a===","&&(a=i.replace(/"/g,"").replace(/,$/,"").trim());const c=this.getCurrentNode();if(c.name==="Properties70"){this.parseNodeSpecialProperty(t,o,a);return}if(o==="C"){const d=a.split(",").slice(1),g=parseInt(d[0]),y=parseInt(d[1]);let b=a.split(",").slice(3);b=b.map(function(C){return C.trim().replace(/^"/,"")}),o="connections",a=[g,y],pc(a,b),c[o]===void 0&&(c[o]=[])}o==="Node"&&(c.id=a),o in c&&Array.isArray(c[o])?c[o].push(a):o!=="a"?c[o]=a:c.a=a,this.setCurrentProp(c,o),o==="a"&&a.slice(-1)!==","&&(c.a=Yi(a))}parseNodePropertyContinued(t){const n=this.getCurrentNode();n.a+=t,t.slice(-1)!==","&&(n.a=Yi(n.a))}parseNodeSpecialProperty(t,n,i){const o=i.split('",').map(function(y){return y.trim().replace(/^\"/,"").replace(/\s/,"_")}),a=o[0],c=o[1],p=o[2],d=o[3];let g=o[4];switch(c){case"int":case"enum":case"bool":case"ULongLong":case"double":case"Number":case"FieldOfView":g=parseFloat(g);break;case"Color":case"ColorRGB":case"Vector3D":case"Lcl_Translation":case"Lcl_Rotation":case"Lcl_Scaling":g=Yi(g);break}this.getPrevNode()[a]={type:c,type2:p,flag:d,value:g},this.setCurrentProp(this.getPrevNode(),a)}}class oc{parse(t){const n=new Lo(t);n.skip(23);const i=n.getUint32();if(i<6400)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+i);const o=new So;for(;!this.endOfContent(n);){const a=this.parseNode(n,i);a!==null&&o.add(a.name,a)}return o}endOfContent(t){return t.size()%16===0?(t.getOffset()+160+16&-16)>=t.size():t.getOffset()+160+16>=t.size()}parseNode(t,n){const i={},o=n>=7500?t.getUint64():t.getUint32(),a=n>=7500?t.getUint64():t.getUint32();n>=7500?t.getUint64():t.getUint32();const c=t.getUint8(),p=t.getString(c);if(o===0)return null;const d=[];for(let C=0;C<a;C++)d.push(this.parseProperty(t));const g=d.length>0?d[0]:"",y=d.length>1?d[1]:"",b=d.length>2?d[2]:"";for(i.singleProperty=a===1&&t.getOffset()===o;o>t.getOffset();){const C=this.parseNode(t,n);C!==null&&this.parseSubNode(p,i,C)}return i.propertyList=d,typeof g=="number"&&(i.id=g),y!==""&&(i.attrName=y),b!==""&&(i.attrType=b),p!==""&&(i.name=p),i}parseSubNode(t,n,i){if(i.singleProperty===!0){const o=i.propertyList[0];Array.isArray(o)?(n[i.name]=i,i.a=o):n[i.name]=o}else if(t==="Connections"&&i.name==="C"){const o=[];i.propertyList.forEach(function(a,c){c!==0&&o.push(a)}),n.connections===void 0&&(n.connections=[]),n.connections.push(o)}else if(i.name==="Properties70")Object.keys(i).forEach(function(a){n[a]=i[a]});else if(t==="Properties70"&&i.name==="P"){let o=i.propertyList[0],a=i.propertyList[1];const c=i.propertyList[2],p=i.propertyList[3];let d;o.indexOf("Lcl ")===0&&(o=o.replace("Lcl ","Lcl_")),a.indexOf("Lcl ")===0&&(a=a.replace("Lcl ","Lcl_")),a==="Color"||a==="ColorRGB"||a==="Vector"||a==="Vector3D"||a.indexOf("Lcl_")===0?d=[i.propertyList[4],i.propertyList[5],i.propertyList[6]]:d=i.propertyList[4],n[o]={type:a,type2:c,flag:p,value:d}}else n[i.name]===void 0?typeof i.id=="number"?(n[i.name]={},n[i.name][i.id]=i):n[i.name]=i:i.name==="PoseNode"?(Array.isArray(n[i.name])||(n[i.name]=[n[i.name]]),n[i.name].push(i)):n[i.name][i.id]===void 0&&(n[i.name][i.id]=i)}parseProperty(t){const n=t.getString(1);let i;switch(n){case"C":return t.getBoolean();case"D":return t.getFloat64();case"F":return t.getFloat32();case"I":return t.getInt32();case"L":return t.getInt64();case"R":return i=t.getUint32(),t.getArrayBuffer(i);case"S":return i=t.getUint32(),t.getString(i);case"Y":return t.getInt16();case"b":case"c":case"d":case"f":case"i":case"l":const o=t.getUint32(),a=t.getUint32(),c=t.getUint32();if(a===0)switch(n){case"b":case"c":return t.getBooleanArray(o);case"d":return t.getFloat64Array(o);case"f":return t.getFloat32Array(o);case"i":return t.getInt32Array(o);case"l":return t.getInt64Array(o)}const p=Ja(new Uint8Array(t.getArrayBuffer(c))),d=new Lo(p.buffer);switch(n){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 "+n)}}}class Lo{constructor(t,n){this.dv=new DataView(t),this.offset=0,this.littleEndian=n!==void 0?n:!0}getOffset(){return this.offset}size(){return this.dv.buffer.byteLength}skip(t){this.offset+=t}getBoolean(){return(this.getUint8()&1)===1}getBooleanArray(t){const n=[];for(let i=0;i<t;i++)n.push(this.getBoolean());return n}getUint8(){const t=this.dv.getUint8(this.offset);return this.offset+=1,t}getInt16(){const t=this.dv.getInt16(this.offset,this.littleEndian);return this.offset+=2,t}getInt32(){const t=this.dv.getInt32(this.offset,this.littleEndian);return this.offset+=4,t}getInt32Array(t){const n=[];for(let i=0;i<t;i++)n.push(this.getInt32());return n}getUint32(){const t=this.dv.getUint32(this.offset,this.littleEndian);return this.offset+=4,t}getInt64(){let t,n;return this.littleEndian?(t=this.getUint32(),n=this.getUint32()):(n=this.getUint32(),t=this.getUint32()),n&2147483648?(n=~n&4294967295,t=~t&4294967295,t===4294967295&&(n=n+1&4294967295),t=t+1&4294967295,-(n*4294967296+t)):n*4294967296+t}getInt64Array(t){const n=[];for(let i=0;i<t;i++)n.push(this.getInt64());return n}getUint64(){let t,n;return this.littleEndian?(t=this.getUint32(),n=this.getUint32()):(n=this.getUint32(),t=this.getUint32()),n*4294967296+t}getFloat32(){const t=this.dv.getFloat32(this.offset,this.littleEndian);return this.offset+=4,t}getFloat32Array(t){const n=[];for(let i=0;i<t;i++)n.push(this.getFloat32());return n}getFloat64(){const t=this.dv.getFloat64(this.offset,this.littleEndian);return this.offset+=8,t}getFloat64Array(t){const n=[];for(let i=0;i<t;i++)n.push(this.getFloat64());return n}getArrayBuffer(t){const n=this.dv.buffer.slice(this.offset,this.offset+t);return this.offset+=t,n}getString(t){let n=[];for(let o=0;o<t;o++)n[o]=this.getUint8();const i=n.indexOf(0);return i>=0&&(n=n.slice(0,i)),m.LoaderUtils.decodeText(new Uint8Array(n))}}class So{add(t,n){this[t]=n}}function ac(v){const t="Kaydara FBX Binary \0";return v.byteLength>=t.length&&t===Do(v,0,t.length)}function lc(v){const t=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"];let n=0;function i(o){const a=v[o-1];return v=v.slice(n+o),n++,a}for(let o=0;o<t.length;++o)if(i(1)===t[o])return!1;return!0}function To(v){const t=/FBXVersion: (\d+)/,n=v.match(t);if(n)return parseInt(n[1]);throw new Error("THREE.FBXLoader: Cannot find the version number for the file given.")}function cc(v){return v/46186158e3}const hc=[];function Js(v,t,n,i){let o;switch(i.mappingType){case"ByPolygonVertex":o=v;break;case"ByPolygon":o=t;break;case"ByVertice":o=n;break;case"AllSame":o=i.indices[0];break;default:console.warn("THREE.FBXLoader: unknown attribute mapping type "+i.mappingType)}i.referenceType==="IndexToDirect"&&(o=i.indices[o]);const a=o*i.dataSize,c=a+i.dataSize;return uc(hc,i.buffer,a,c)}const Ki=new m.Euler,Fn=new m.Vector3;function Eo(v){const t=new m.Matrix4,n=new m.Matrix4,i=new m.Matrix4,o=new m.Matrix4,a=new m.Matrix4,c=new m.Matrix4,p=new m.Matrix4,d=new m.Matrix4,g=new m.Matrix4,y=new m.Matrix4,b=new m.Matrix4,C=new m.Matrix4,A=v.inheritType?v.inheritType:0;if(v.translation&&t.setPosition(Fn.fromArray(v.translation)),v.preRotation){const X=v.preRotation.map(m.MathUtils.degToRad);X.push(v.eulerOrder),n.makeRotationFromEuler(Ki.fromArray(X))}if(v.rotation){const X=v.rotation.map(m.MathUtils.degToRad);X.push(v.eulerOrder),i.makeRotationFromEuler(Ki.fromArray(X))}if(v.postRotation){const X=v.postRotation.map(m.MathUtils.degToRad);X.push(v.eulerOrder),o.makeRotationFromEuler(Ki.fromArray(X)),o.invert()}v.scale&&a.scale(Fn.fromArray(v.scale)),v.scalingOffset&&p.setPosition(Fn.fromArray(v.scalingOffset)),v.scalingPivot&&c.setPosition(Fn.fromArray(v.scalingPivot)),v.rotationOffset&&d.setPosition(Fn.fromArray(v.rotationOffset)),v.rotationPivot&&g.setPosition(Fn.fromArray(v.rotationPivot)),v.parentMatrixWorld&&(b.copy(v.parentMatrix),y.copy(v.parentMatrixWorld));const E=n.clone().multiply(i).multiply(o),k=new m.Matrix4;k.extractRotation(y);const O=new m.Matrix4;O.copyPosition(y);const R=O.clone().invert().multiply(y),N=k.clone().invert().multiply(R),F=a,M=new m.Matrix4;if(A===0)M.copy(k).multiply(E).multiply(N).multiply(F);else if(A===1)M.copy(k).multiply(N).multiply(E).multiply(F);else{const Z=new m.Matrix4().scale(new m.Vector3().setFromMatrixScale(b)).clone().invert(),J=N.clone().multiply(Z);M.copy(k).multiply(E).multiply(J).multiply(F)}const D=g.clone().invert(),U=c.clone().invert();let S=t.clone().multiply(d).multiply(g).multiply(n).multiply(i).multiply(o).multiply(D).multiply(p).multiply(c).multiply(a).multiply(U);const T=new m.Matrix4().copyPosition(S),j=y.clone().multiply(T);return C.copyPosition(j),S=C.clone().multiply(M),S.premultiply(y.invert()),S}function Oo(v){v=v||0;const t=["ZYX","YZX","XZY","ZXY","YXZ","XYZ"];return v===6?(console.warn("THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect."),t[0]):t[v]}function Yi(v){return v.split(",").map(function(n){return parseFloat(n)})}function Do(v,t,n){return t===void 0&&(t=0),n===void 0&&(n=v.byteLength),m.LoaderUtils.decodeText(new Uint8Array(v,t,n))}function pc(v,t){for(let n=0,i=v.length,o=t.length;n<o;n++,i++)v[i]=t[n]}function uc(v,t,n,i){for(let o=n,a=0;o<i;o++,a++)v[a]=t[o];return v}function Vo(v,t,n){return v.slice(0,t).concat(n).concat(v.slice(t))}var dc=Object.defineProperty,mc=(v,t,n)=>t in v?dc(v,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):v[t]=n,Xi=(v,t,n)=>(mc(v,typeof t!="symbol"?t+"":t,n),n);class fc extends m.Loader{constructor(t){super(t)}load(t,n,i,o){const a=new m.FileLoader(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(t,c=>{if(typeof c!="string")throw new Error("unsupported data type");const p=JSON.parse(c),d=this.parse(p);n&&n(d)},i,o)}loadAsync(t,n){return super.loadAsync(t,n)}parse(t){return new Zi(t)}}class Zi{constructor(t){Xi(this,"data"),this.data=t}generateShapes(t,n=100,i){const o=[],a={letterSpacing:0,lineHeight:1,...i},c=vc(t,n,this.data,a);for(let p=0,d=c.length;p<d;p++)Array.prototype.push.apply(o,c[p].toShapes(!1));return o}}Xi(Zi,"isFont"),Xi(Zi,"type");function vc(v,t,n,i){const o=Array.from(v),a=t/n.resolution,c=(n.boundingBox.yMax-n.boundingBox.yMin+n.underlineThickness)*a,p=[];let d=0,g=0;for(let y=0;y<o.length;y++){const b=o[y];if(b===`
74
+ `)d=0,g-=c*i.lineHeight;else{const C=_c(b,a,d,g,n);C&&(d+=C.offsetX+i.letterSpacing,p.push(C.path))}}return p}function _c(v,t,n,i,o){const a=o.glyphs[v]||o.glyphs["?"];if(!a){console.error('THREE.Font: character "'+v+'" does not exists in font family '+o.familyName+".");return}const c=new m.ShapePath;let p,d,g,y,b,C,A,E;if(a.o){const k=a._cachedOutline||(a._cachedOutline=a.o.split(" "));for(let O=0,R=k.length;O<R;)switch(k[O++]){case"m":p=parseInt(k[O++])*t+n,d=parseInt(k[O++])*t+i,c.moveTo(p,d);break;case"l":p=parseInt(k[O++])*t+n,d=parseInt(k[O++])*t+i,c.lineTo(p,d);break;case"q":g=parseInt(k[O++])*t+n,y=parseInt(k[O++])*t+i,b=parseInt(k[O++])*t+n,C=parseInt(k[O++])*t+i,c.quadraticCurveTo(b,C,g,y);break;case"b":g=parseInt(k[O++])*t+n,y=parseInt(k[O++])*t+i,b=parseInt(k[O++])*t+n,C=parseInt(k[O++])*t+i,A=parseInt(k[O++])*t+n,E=parseInt(k[O++])*t+i,c.bezierCurveTo(b,C,A,E,g,y);break}}return{offsetX:a.ha*t,path:c}}var Io=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function gc(v){return v&&v.__esModule&&Object.prototype.hasOwnProperty.call(v,"default")?v.default:v}class bc extends m.DataTextureLoader{constructor(t){super(t),this.type=m.HalfFloatType}parse(t){const p=function(F,M){switch(F){case 1:console.error("THREE.RGBELoader Read Error: "+(M||""));break;case 2:console.error("THREE.RGBELoader Write Error: "+(M||""));break;case 3:console.error("THREE.RGBELoader Bad File Format: "+(M||""));break;default:case 4:console.error("THREE.RGBELoader: Error: "+(M||""))}return-1},b=`
75
+ `,C=function(F,M,D){M=M||1024;let S=F.pos,T=-1,j=0,X="",Z=String.fromCharCode.apply(null,new Uint16Array(F.subarray(S,S+128)));for(;0>(T=Z.indexOf(b))&&j<M&&S<F.byteLength;)X+=Z,j+=Z.length,S+=128,Z+=String.fromCharCode.apply(null,new Uint16Array(F.subarray(S,S+128)));return-1<T?(D!==!1&&(F.pos+=j+T+1),X+Z.slice(0,T)):!1},A=function(F){const M=/^#\?(\S+)/,D=/^\s*GAMMA\s*=\s*(\d+(\.\d+)?)\s*$/,U=/^\s*EXPOSURE\s*=\s*(\d+(\.\d+)?)\s*$/,S=/^\s*FORMAT=(\S+)\s*$/,T=/^\s*\-Y\s+(\d+)\s+\+X\s+(\d+)\s*$/,j={valid:0,string:"",comments:"",programtype:"RGBE",format:"",gamma:1,exposure:1,width:0,height:0};let X,Z;if(F.pos>=F.byteLength||!(X=C(F)))return p(1,"no header found");if(!(Z=X.match(M)))return p(3,"bad initial token");for(j.valid|=1,j.programtype=Z[1],j.string+=X+`
76
+ `;X=C(F),X!==!1;){if(j.string+=X+`
77
+ `,X.charAt(0)==="#"){j.comments+=X+`
78
+ `;continue}if((Z=X.match(D))&&(j.gamma=parseFloat(Z[1])),(Z=X.match(U))&&(j.exposure=parseFloat(Z[1])),(Z=X.match(S))&&(j.valid|=2,j.format=Z[1]),(Z=X.match(T))&&(j.valid|=4,j.height=parseInt(Z[1],10),j.width=parseInt(Z[2],10)),j.valid&2&&j.valid&4)break}return j.valid&2?j.valid&4?j:p(3,"missing image size specifier"):p(3,"missing format specifier")},E=function(F,M,D){const U=M;if(U<8||U>32767||F[0]!==2||F[1]!==2||F[2]&128)return new Uint8Array(F);if(U!==(F[2]<<8|F[3]))return p(3,"wrong scanline width");const S=new Uint8Array(4*M*D);if(!S.length)return p(4,"unable to allocate buffer space");let T=0,j=0;const X=4*U,Z=new Uint8Array(4),J=new Uint8Array(X);let le=D;for(;le>0&&j<F.byteLength;){if(j+4>F.byteLength)return p(1);if(Z[0]=F[j++],Z[1]=F[j++],Z[2]=F[j++],Z[3]=F[j++],Z[0]!=2||Z[1]!=2||(Z[2]<<8|Z[3])!=U)return p(3,"bad rgbe scanline format");let he=0,oe;for(;he<X&&j<F.byteLength;){oe=F[j++];const ne=oe>128;if(ne&&(oe-=128),oe===0||he+oe>X)return p(3,"bad scanline data");if(ne){const H=F[j++];for(let Ce=0;Ce<oe;Ce++)J[he++]=H}else J.set(F.subarray(j,j+oe),he),he+=oe,j+=oe}const re=U;for(let ne=0;ne<re;ne++){let H=0;S[T]=J[ne+H],H+=U,S[T+1]=J[ne+H],H+=U,S[T+2]=J[ne+H],H+=U,S[T+3]=J[ne+H],T+=4}le--}return S},k=function(F,M,D,U){const S=F[M+3],T=Math.pow(2,S-128)/255;D[U+0]=F[M+0]*T,D[U+1]=F[M+1]*T,D[U+2]=F[M+2]*T,D[U+3]=1},O=function(F,M,D,U){const S=F[M+3],T=Math.pow(2,S-128)/255;D[U+0]=m.DataUtils.toHalfFloat(Math.min(F[M+0]*T,65504)),D[U+1]=m.DataUtils.toHalfFloat(Math.min(F[M+1]*T,65504)),D[U+2]=m.DataUtils.toHalfFloat(Math.min(F[M+2]*T,65504)),D[U+3]=m.DataUtils.toHalfFloat(1)},R=new Uint8Array(t);R.pos=0;const N=A(R);if(N!==-1){const F=N.width,M=N.height,D=E(R.subarray(R.pos),F,M);if(D!==-1){let U,S,T;switch(this.type){case m.FloatType:T=D.length/4;const j=new Float32Array(T*4);for(let Z=0;Z<T;Z++)k(D,Z*4,j,Z*4);U=j,S=m.FloatType;break;case m.HalfFloatType:T=D.length/4;const X=new Uint16Array(T*4);for(let Z=0;Z<T;Z++)O(D,Z*4,X,Z*4);U=X,S=m.HalfFloatType;break;default:console.error("THREE.RGBELoader: unsupported type: ",this.type);break}return{width:F,height:M,data:U,header:N.string,gamma:N.gamma,exposure:N.exposure,type:S}}}return null}setDataType(t){return this.type=t,this}load(t,n,i,o){function a(c,p){switch(c.type){case m.FloatType:case m.HalfFloatType:"colorSpace"in c?c.colorSpace="srgb-linear":c.encoding=3e3,c.minFilter=m.LinearFilter,c.magFilter=m.LinearFilter,c.generateMipmaps=!1,c.flipY=!0;break}n&&n(c,p)}return super.load(t,a,i,o)}}const qi=new WeakMap;class wc extends m.Loader{constructor(t){super(t),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(t){return this.decoderPath=t,this}setDecoderConfig(t){return this.decoderConfig=t,this}setWorkerLimit(t){return this.workerLimit=t,this}load(t,n,i,o){const a=new m.FileLoader(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(t,c=>{const p={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(c,p).then(n).catch(o)},i,o)}decodeDracoFile(t,n,i,o){const a={attributeIDs:i||this.defaultAttributeIDs,attributeTypes:o||this.defaultAttributeTypes,useUniqueIDs:!!i};this.decodeGeometry(t,a).then(n)}decodeGeometry(t,n){for(const d in n.attributeTypes){const g=n.attributeTypes[d];g.BYTES_PER_ELEMENT!==void 0&&(n.attributeTypes[d]=g.name)}const i=JSON.stringify(n);if(qi.has(t)){const d=qi.get(t);if(d.key===i)return d.promise;if(t.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let o;const a=this.workerNextTaskID++,c=t.byteLength,p=this._getWorker(a,c).then(d=>(o=d,new Promise((g,y)=>{o._callbacks[a]={resolve:g,reject:y},o.postMessage({type:"decode",id:a,taskConfig:n,buffer:t},[t])}))).then(d=>this._createGeometry(d.geometry));return p.catch(()=>!0).then(()=>{o&&a&&this._releaseTask(o,a)}),qi.set(t,{key:i,promise:p}),p}_createGeometry(t){const n=new m.BufferGeometry;t.index&&n.setIndex(new m.BufferAttribute(t.index.array,1));for(let i=0;i<t.attributes.length;i++){const o=t.attributes[i],a=o.name,c=o.array,p=o.itemSize;n.setAttribute(a,new m.BufferAttribute(c,p))}return n}_loadLibrary(t,n){const i=new m.FileLoader(this.manager);return i.setPath(this.decoderPath),i.setResponseType(n),i.setWithCredentials(this.withCredentials),new Promise((o,a)=>{i.load(t,o,void 0,a)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const t=typeof WebAssembly!="object"||this.decoderConfig.type==="js",n=[];return t?n.push(this._loadLibrary("draco_decoder.js","text")):(n.push(this._loadLibrary("draco_wasm_wrapper.js","text")),n.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(n).then(i=>{const o=i[0];t||(this.decoderConfig.wasmBinary=i[1]);const a=yc.toString(),c=["/* draco decoder */",o,"","/* worker */",a.substring(a.indexOf("{")+1,a.lastIndexOf("}"))].join(`
79
+ `);this.workerSourceURL=URL.createObjectURL(new Blob([c]))}),this.decoderPending}_getWorker(t,n){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(a){const c=a.data;switch(c.type){case"decode":o._callbacks[c.id].resolve(c);break;case"error":o._callbacks[c.id].reject(c);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+c.type+'"')}},this.workerPool.push(o)}else this.workerPool.sort(function(o,a){return o._taskLoad>a._taskLoad?-1:1});const i=this.workerPool[this.workerPool.length-1];return i._taskCosts[t]=n,i._taskLoad+=n,i})}_releaseTask(t,n){t._taskLoad-=t._taskCosts[n],delete t._callbacks[n],delete t._taskCosts[n]}debug(){console.log("Task load: ",this.workerPool.map(t=>t._taskLoad))}dispose(){for(let t=0;t<this.workerPool.length;++t)this.workerPool[t].terminate();return this.workerPool.length=0,this}}function yc(){let v,t;onmessage=function(c){const p=c.data;switch(p.type){case"init":v=p.decoderConfig,t=new Promise(function(y){v.onModuleLoaded=function(b){y({draco:b})},DracoDecoderModule(v)});break;case"decode":const d=p.buffer,g=p.taskConfig;t.then(y=>{const b=y.draco,C=new b.Decoder,A=new b.DecoderBuffer;A.Init(new Int8Array(d),d.byteLength);try{const E=n(b,C,A,g),k=E.attributes.map(O=>O.array.buffer);E.index&&k.push(E.index.array.buffer),self.postMessage({type:"decode",id:p.id,geometry:E},k)}catch(E){console.error(E),self.postMessage({type:"error",id:p.id,error:E.message})}finally{b.destroy(A),b.destroy(C)}});break}};function n(c,p,d,g){const y=g.attributeIDs,b=g.attributeTypes;let C,A;const E=p.GetEncodedGeometryType(d);if(E===c.TRIANGULAR_MESH)C=new c.Mesh,A=p.DecodeBufferToMesh(d,C);else if(E===c.POINT_CLOUD)C=new c.PointCloud,A=p.DecodeBufferToPointCloud(d,C);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!A.ok()||C.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+A.error_msg());const k={index:null,attributes:[]};for(const O in y){const R=self[b[O]];let N,F;if(g.useUniqueIDs)F=y[O],N=p.GetAttributeByUniqueId(C,F);else{if(F=p.GetAttributeId(C,c[y[O]]),F===-1)continue;N=p.GetAttribute(C,F)}k.attributes.push(o(c,p,C,O,R,N))}return E===c.TRIANGULAR_MESH&&(k.index=i(c,p,C)),c.destroy(C),k}function i(c,p,d){const y=d.num_faces()*3,b=y*4,C=c._malloc(b);p.GetTrianglesUInt32Array(d,b,C);const A=new Uint32Array(c.HEAPF32.buffer,C,y).slice();return c._free(C),{array:A,itemSize:1}}function o(c,p,d,g,y,b){const C=b.num_components(),E=d.num_points()*C,k=E*y.BYTES_PER_ELEMENT,O=a(c,y),R=c._malloc(k);p.GetAttributeDataArrayForAllPoints(d,b,O,k,R);const N=new y(c.HEAPF32.buffer,R,E).slice();return c._free(R),{name:g,array:N,itemSize:C}}function a(c,p){switch(p){case Float32Array:return c.DT_FLOAT32;case Int8Array:return c.DT_INT8;case Int16Array:return c.DT_INT16;case Int32Array:return c.DT_INT32;case Uint8Array:return c.DT_UINT8;case Uint16Array:return c.DT_UINT16;case Uint32Array:return c.DT_UINT32}}}const xc=["args","center"],Cc=_.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(v,{expose:t}){let n,i;const o=v,{center:a,font:c,text:p,needUpdates:d,size:g,height:y,curveSegments:b,bevelEnabled:C,bevelThickness:A,bevelSize:E,bevelOffset:k,bevelSegments:O}=_.toRefs(o),{extend:R}=Ae.useTresContext();R({TextGeometry:Ao});const N=new fc,F=_.useSlots(),M=_.computed(()=>{var T;return p!=null&&p.value?p.value:F.default?(T=F.default()[0].children)==null?void 0:T.trim():d.value?"":"TresJS"}),D=_.shallowRef();t({value:D});const U=([n,i]=_.withAsyncContext(()=>new Promise((T,j)=>{try{typeof c.value=="string"?N.load(c.value,X=>{T(X)}):T(c.value)}catch(X){j(console.error("cientos",X))}})),n=await n,i(),n),S=_.computed(()=>({font:U,size:_.toValue(g),height:_.toValue(y),curveSegments:_.toValue(b),bevelEnabled:_.toValue(C),bevelThickness:_.toValue(A),bevelSize:_.toValue(E),bevelOffset:_.toValue(k),bevelSegments:_.toValue(O)}));return _.watchEffect(()=>{D.value&&d.value&&(D.value.geometry.dispose(),D.value.geometry=new Ao(M.value,S.value),a.value&&D.value.geometry.center())}),(T,j)=>_.unref(c)?(_.openBlock(),_.createElementBlock("TresMesh",{key:0,ref_key:"text3DRef",ref:D},[M.value?(_.openBlock(),_.createElementBlock("TresTextGeometry",{key:0,args:[M.value,S.value],center:_.unref(a)},null,8,xc)):_.createCommentVNode("",!0),_.renderSlot(T.$slots,"default")],512)):_.createCommentVNode("",!0)}});function Pc(v,t){const n=_.ref(t),i=new m.AnimationMixer(n.value),o=_.shallowReactive({});v.forEach(c=>{const p=i.clipAction(c,n.value);o[c.name]=p});const{onLoop:a}=Ae.useRenderLoop();return a(({delta:c})=>{i.update(c)}),{actions:o,mixer:i}}const Qi={sunset:"venice/venice_sunset_4k.hdr"};async function Bo({files:v=["/px.png","/nx.png","/py.png","/ny.png","/pz.png","/nz.png"],blur:t=0,background:n=!1,path:i="/",preset:o=void 0}){const{scene:a}=Ae.useTresContext();if(o){if(!(o in Qi))throw new Error("Preset must be one of: "+Object.keys(Qi).join(", "));v=Qi[o],i="https://raw.githubusercontent.com/Tresjs/assets/main/textures/hdr/"}const c=Array.isArray(v),p=c?m.CubeTextureLoader:bc,d=await Ae.useLoader(p,c?[v]:v,y=>{i&&y.setPath(i)}),g=c?d[0]:d;return g&&(g.mapping=c?m.CubeReflectionMapping:m.EquirectangularReflectionMapping,g.colorSpace=m.SRGBColorSpace),a.value&&(a.value.environment=g,n&&(a.value.background=g),t&&(a.value.backgroundBlurriness=t|0)),g}const Ac=_.defineComponent({name:"Environment",props:["background","blur","files","encoding","path","preset"],async setup(v,{expose:t}){let n=null;return t({getTexture:()=>n}),n=await Bo(v),()=>{}}}),Mc=["position","a-scale"],kc=["size","size-attenuation","transparent","alpha-test","alpha-map"],Lc=_.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},alphaMap:{default:null}},setup(v,{expose:t}){const n=v,i=_.ref(),o=_.ref(),{radius:a,depth:c,count:p,size:d,sizeAttenuation:g,transparent:y,alphaMap:b,alphaTest:C}=_.toRefs(n),A=()=>{let k=a.value+c.value;const O=_.computed(()=>c.value/p.value),R=[],N=Array.from({length:p.value},()=>(.5+.5*Math.random())*4),F=M=>new m.Vector3().setFromSpherical(new m.Spherical(M,Math.acos(1-Math.random()*2),Math.random()*2*Math.PI)).toArray();for(let M=0;M<p.value;M++)k-=O.value*Math.random(),R.push(...F(k));i.value=new Float32Array(R),o.value=new Float32Array(N)};_.watchEffect(()=>{A()});const E=_.shallowRef();return t({value:E}),(k,O)=>(_.openBlock(),_.createElementBlock("TresPoints",{ref_key:"starsRef",ref:E},[_.createElementVNode("TresBufferGeometry",{position:[i.value,3],"a-scale":[o.value,1]},null,8,Mc),_.createElementVNode("TresPointsMaterial",{size:_.unref(d),"size-attenuation":_.unref(g),transparent:_.unref(y),"alpha-test":_.unref(C),"alpha-map":_.unref(b)},null,8,kc)],512))}}),Sc=["size","color","alpha-map","map","opacity","alpha-test","depth-write","transparent","size-attenuation"],Tc=["position","velocity"],Ec=_.defineComponent({__name:"Precipitation",props:{size:{default:.1},area:{default:()=>[10,10,20]},color:{default:16777215},map:{},alphaMap:{},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(v){const t=v,{size:n,area:i,color:o,alphaMap:a,map:c,opacity:p,alphaTest:d,depthWrite:g,transparent:y,sizeAttenuation:b,count:C,speed:A,randomness:E}=_.toRefs(t),k=_.shallowRef();let O=[],R=[];const N=()=>{O=new Float32Array(C.value*3);for(let D=0;D<C.value;D++){const U=D*3;O[U]=(Math.random()-.5)*i.value[0],O[U+1]=(Math.random()-.5)*i.value[1],O[U+2]=(Math.random()-.5)*i.value[2]}},F=()=>{R=new Float32Array(C.value*2);for(let D=0;D<C.value*2;D+=2)R[D]=(Math.random()-.5)/5*A.value*E.value,R[D+1]=Math.random()/5*A.value+.01};F(),N(),_.watchEffect(()=>{F(),N()});const{onLoop:M}=Ae.useRenderLoop();return M(()=>{var D,U;if((D=k.value)!=null&&D.attributes.position.array&&((U=k.value)!=null&&U.attributes.position.count)){const S=k.value.attributes.position.array;for(let T=0;T<k.value.attributes.position.count;T++){const j=R[T*2],X=R[T*2+1];S[T*3]+=j,S[T*3+1]-=X,(S[T*3]<=-i.value[0]/2||S[T*3]>=i.value[0]/2)&&(S[T*3]=S[T*3]*-1),(S[T*3+1]<=-i.value[1]/2||S[T*3+1]>=i.value[1]/2)&&(S[T*3+1]=S[T*3+1]*-1)}k.value.attributes.position.needsUpdate=!0}}),(D,U)=>(_.openBlock(),_.createElementBlock("TresPoints",null,[_.createElementVNode("TresPointsMaterial",{size:_.unref(n),color:_.unref(o),"alpha-map":_.unref(a),map:_.unref(c),opacity:_.unref(p),"alpha-test":_.unref(d),"depth-write":_.unref(g),transparent:_.unref(y),"size-attenuation":_.unref(b)},null,8,Sc),_.createElementVNode("TresBufferGeometry",{ref_key:"geometryRef",ref:k,position:[_.unref(O),3],velocity:[_.unref(R)]},null,8,Tc)]))}}),Oc=["position"],Dc=["position"],Vc=["scale"],Ic=["map","depth-test","color-space","color","opacity"],Bc=_.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(v,{expose:t}){let n,i;const o=v,{width:a,depth:c,segments:p,texture:d,color:g,depthTest:y,opacity:b,speed:C}=_.toRefs(o),A=_.shallowRef(),E=_.shallowRef();t({value:A});const k=[...new Array(p)].map((U,S)=>({x:a.value/2-Math.random()*a.value,y:a.value/2-Math.random()*a.value,scale:.4+Math.sin((S+1)/p.value*Math.PI)*((.2+Math.random())*10),density:Math.max(.2,Math.random()),rotation:Math.max(.002,.005*Math.random())*C.value})),O=(U,S)=>U/6*S*b.value,{map:R}=([n,i]=_.withAsyncContext(()=>Ae.useTexture({map:d.value})),n=await n,i(),n),{renderer:N,camera:F}=Ae.useTresContext(),M=_.computed(()=>{var U;return(U=N.value)==null?void 0:U.outputColorSpace}),{onLoop:D}=Ae.useRenderLoop();return D(()=>{var U,S;A.value&&F.value&&E.value&&((U=E.value)==null||U.children.forEach((T,j)=>{T.rotation.z+=k[j].rotation}),A.value.lookAt((S=F.value)==null?void 0:S.position))}),(U,S)=>(_.openBlock(),_.createElementBlock("TresGroup",_.mergeProps({ref_key:"smokeRef",ref:A},U.$attrs),[_.createElementVNode("TresGroup",{ref_key:"groupRef",ref:E,position:[0,0,_.unref(p)/2*_.unref(c)]},[(_.openBlock(!0),_.createElementBlock(_.Fragment,null,_.renderList(_.unref(k),({scale:T,x:j,y:X,density:Z},J)=>(_.openBlock(),_.createElementBlock("TresMesh",{key:`${J}`,position:[j,X,-J*_.unref(c)]},[_.createElementVNode("TresPlaneGeometry",{scale:[T,T,T],rotation:[0,0,0]},null,8,Vc),_.createElementVNode("TresMeshStandardMaterial",{map:_.unref(R),"depth-test":_.unref(y),"color-space":M.value,color:_.unref(g),"depth-write":!1,transparent:"",opacity:O(T,Z)},null,8,Ic)],8,Dc))),128))],8,Oc)],16))}}),Fc=_.defineComponent({__name:"Levioso",props:{speed:{default:1},rotationFactor:{default:1},floatFactor:{default:1},range:{default:()=>[-.1,.1]}},setup(v,{expose:t}){const n=v,i=_.shallowRef();t({value:i});const{onLoop:o}=Ae.useRenderLoop(),a=_.ref(Math.random()*1e4);return o(({elapsed:c})=>{var g,y;if(!i.value)return;const p=a.value+c;i.value.rotation.x=Math.cos(p/4*n.speed)/8*n.rotationFactor,i.value.rotation.y=Math.sin(p/4*n.speed)/8*n.rotationFactor,i.value.rotation.z=Math.sin(p/4*n.speed)/20*n.rotationFactor;let d=Math.sin(p/4*n.speed)/10;d=m.MathUtils.mapLinear(d,-.1,.1,((g=n.range)==null?void 0:g[0])??-.1,((y=n.range)==null?void 0:y[1])??.1),i.value.position.y=d*n.floatFactor}),(c,p)=>(_.openBlock(),_.createElementBlock("TresGroup",_.mergeProps(c.$attrs,{ref_key:"groupRef",ref:i}),[_.renderSlot(c.$slots,"default")],16))}}),Nc=["geometry"],Uc=["map","opacity","depth-write"],zc=["args"],Rc=["rotation","args"],jc=_.createElementVNode("TresAxesHelper",{args:[10]},null,-1),Gc=_.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(v,{expose:t}){const n=v,i=_.shallowRef(),o=_.shallowRef();t(i);let a,c,p,d,g;const{renderer:y,scene:b}=Ae.useTresContext(),C=_.computed(()=>n.width*(Array.isArray(n.scale)?n.scale[0]:n.scale||1)),A=_.computed(()=>n.height*(Array.isArray(n.scale)?n.scale[1]:n.scale||1));_.watchEffect(()=>{a&&a.dispose(),c&&c.dispose(),p&&p.dispose(),d&&d.geometry.dispose(),a=new m.WebGLRenderTarget(n.resolution,n.resolution),c=new m.WebGLRenderTarget(n.resolution,n.resolution),c.texture.generateMipmaps=a.texture.generateMipmaps=!1,o.value=new m.OrthographicCamera(-C.value/2,C.value/2,A.value/2,-A.value/2,0,n.far),p=new m.PlaneGeometry(C.value,A.value).rotateX(Math.PI/2),d=new m.Mesh(p),d.visible=!1}),_.watchEffect(()=>{n.color&&(g&&g.dispose(),g=new m.MeshDepthMaterial,g.depthTest=g.depthWrite=!1,g.onBeforeCompile=D=>{D.uniforms={...D.uniforms,ucolor:{value:n.color?new m.Color(n.color):new m.Color}},D.fragmentShader=D.fragmentShader.replace("void main() {",`uniform vec3 ucolor;
80
80
  void main() {
81
- `),T.fragmentShader=T.fragmentShader.replace("vec4( vec3( 1.0 - fragCoordZ ), opacity );","vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );")})});const M=new f.ShaderMaterial(el),E=new f.ShaderMaterial(tl);E.depthTest=M.depthTest=!1;function V(T){!_.renderer||!o.value||(d.visible=!0,d.material=M,M.uniforms.tDiffuse.value=l.texture,M.uniforms.h.value=T/256,_.renderer.setRenderTarget(p),_.renderer.render(d,o.value),d.material=E,E.uniforms.tDiffuse.value=p.texture,E.uniforms.v.value=T/256,_.renderer.setRenderTarget(l),_.renderer.render(d,o.value),d.visible=!1)}const{onLoop:I}=Ee.useRenderLoop();let F=0,z,N;return I(()=>{!o.value||_.scene===void 0||_.renderer===void 0||(i.frames===1/0||F<i.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),V(i.blur),i.smooth&&V(i.blur*.4),_.renderer.setRenderTarget(null),s.value.visible=!0,_.scene.background=z,_.scene.overrideMaterial=N)}),(T,Q)=>{const $=x.resolveComponent("primitive");return x.openBlock(),x.createElementBlock("TresGroup",x.mergeProps({ref_key:"groupRef",ref:s},T.$attrs),[x.createElementVNode("TresMesh",{scale:[1,-1,1],geometry:x.unref(u)},[x.createElementVNode("TresMeshBasicMaterial",{map:x.unref(l).texture,opacity:T.opacity,"depth-write":T.depthWrite,transparent:!0},null,8,sc)],8,ic),x.createVNode($,{object:x.unref(d)},null,8,["object"]),o.value&&T.helper?(x.openBlock(),x.createElementBlock("TresCameraHelper",{key:0,args:[o.value]},null,8,rc)):x.createCommentVNode("",!0),x.createElementVNode("TresOrthographicCamera",{ref_key:"shadowCamera",ref:o,"rotation-x":Math.PI/2,args:[-y.value/2,y.value/2,C.value/2,-C.value/2,0,T.far]},null,8,oc)],16)}}});let Mi=null;function lc(v,n){return i=>{n&&n(i),v.draco&&(Mi||(Mi=new Sl),Mi.setDecoderPath(v.decoderPath||"https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),i.setDRACOLoader(Mi))}}async function so(v,n={draco:!1},i){return await Ee.useLoader(ya,v,lc(n,i))}const cc=x.defineComponent({__name:"component",props:{path:{},draco:{type:Boolean,default:!1},decoderPath:{default:"https://www.gstatic.com/draco/versioned/decoders/1.4.1/"}},async setup(v,{expose:n}){let i,s;const o=v,l=x.ref();n({value:l});const{scene:p}=([i,s]=x.withAsyncContext(()=>so(o.path,{draco:o.draco,decoderPath:o.decoderPath})),i=await i,s(),i);return(u,d)=>{const w=x.resolveComponent("primitive");return x.openBlock(),x.createBlock(w,x.mergeProps({ref_key:"modelRef",ref:l,object:x.unref(p)},u.$attrs),null,16,["object"])}}});async function ro(v){return await Ee.useLoader(cl,v)}const pc=x.defineComponent({__name:"component",props:{path:{}},async setup(v,{expose:n}){let i,s;const o=v,l=x.ref();n({value:l});const p=([i,s]=x.withAsyncContext(()=>ro(o.path)),i=await i,s(),i);return(u,d)=>{const w=x.resolveComponent("primitive");return x.openBlock(),x.createBlock(w,x.mergeProps({ref_key:"modelRef",ref:l,object:x.unref(p)},u.$attrs),null,16,["object"])}}}),oo="[TresJS - Cientos ▲ ■ ♥] ";function hc(){function v(s,o){console.error(`${oo} ${s}`,o||"")}function n(s){console.warn(`${oo} ${s}`)}function i(s,o){}return{logError:v,logWarning:n,logMessage:i}}let ys=0;function uc(){const v=x.ref(!1),n=x.ref(0),i=x.ref([]),{logError:s}=hc();return new Promise(o=>{f.DefaultLoadingManager.onStart=()=>{v.value=!1},f.DefaultLoadingManager.onLoad=()=>{v.value=!0},f.DefaultLoadingManager.onProgress=(l,p,u)=>{p===u&&(ys=u,v.value=!0,i.value.push(l)),n.value=Math.round((p-ys)/(u-ys)*100||100,2)},f.DefaultLoadingManager.onError=l=>{s("Error loading assets",new Error(l)),v.value=!0},o({items:i,hasFinishLoading:v,progress:n})})}const dc=["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"],mc=x.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:{default:()=>({ONE:f.TOUCH.ROTATE,TWO:f.TOUCH.DOLLY_PAN})},enableZoom:{type:Boolean,default:!0},zoomSpeed:{default:1},enableRotate:{type:Boolean,default:!0},rotateSpeed:{default:1}},emits:["change","start","end"],setup(v,{emit:n}){const{state:i,setState:s,extend:o}=He(),l=x.ref(null);o({OrbitControls:Br}),x.watch(l,d=>{p(),d&&v.makeDefault?s("controls",d):s("controls",null)});function p(){Oe(l.value,"change",()=>n("change",l.value)),Oe(l.value,"start",()=>n("start",l.value)),Oe(l.value,"end",()=>n("end",l.value))}const{onLoop:u}=Ee.useRenderLoop();return u(()=>{l.value&&(v.enableDamping||v.autoRotate)&&l.value.update()}),x.onUnmounted(()=>{l.value&&l.value.dispose()}),(d,w)=>{var _;return x.unref(i).camera&&x.unref(i).renderer?(x.openBlock(),x.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:[x.unref(i).camera||d.camera,((_=x.unref(i).renderer)==null?void 0:_.domElement)||d.domElement]},null,8,dc)):x.createCommentVNode("",!0)}}}),fc=5,vc=6,bc=.3,gc=x.defineComponent({__name:"KeyboardControls",props:{forward:{default:()=>["w","W"]},back:{default:()=>["s","S"]},left:{default:()=>["a","A"]},right:{default:()=>["d","D"]},jump:{default:()=>[" "]},gravity:{default:9.8},moveSpeed:{default:.1},headBobbing:{type:Boolean,default:!1},is2D:{type:Boolean,default:!1}},setup(v){var V;const{state:n}=He(),i=((V=n==null?void 0:n.camera)==null?void 0:V.position.y)||0,s=x.ref(0),o=x.ref(0),l=x.ref(!1),p=x.ref(!1),u=x.ref(0),d=x.shallowRef(),w=v.is2D?"y":"z";Yt(v.forward,()=>{l.value=!0,o.value=v.moveSpeed},{eventName:"keydown"}),Yt(v.back,()=>{l.value=!0,o.value=-v.moveSpeed},{eventName:"keydown"}),Yt([...v.forward,...v.back],()=>{l.value=!1,o.value=0},{eventName:"keyup"}),Yt(v.left,()=>{l.value=!0,s.value=-v.moveSpeed},{eventName:"keydown"}),Yt(v.right,()=>{l.value=!0,s.value=v.moveSpeed},{eventName:"keydown"}),Yt([...v.left,...v.right],()=>{l.value=!1,s.value=0},{eventName:"keyup"}),Yt(v.jump,()=>{p.value||(u.value=Date.now()),p.value=!0});const _=I=>l.value?Math.sin(I*fc)*bc+i:i,y=()=>(Date.now()-u.value)/1e3*3,C=I=>i+vc*I-.5*v.gravity*Math.pow(I,2),M=()=>{if(p.value){const I=C(y());return I<=i&&(p.value=!1),I}return 0},{onLoop:E}=Ee.useRenderLoop();return E(({elapsed:I})=>{var F,z;n.controls instanceof ls&&((F=n==null?void 0:n.controls)!=null&&F.isLocked)?(n.controls.moveForward(o.value),n.controls.moveRight(s.value),(z=n.camera)!=null&&z.position&&(n.camera.position.y=v.headBobbing?_(I):i,n.camera.position.y+=M())):d.value.children.length>0&&!(n.controls instanceof ls)&&(d.value.position.x+=s.value,d.value.position[w]+=v.is2D?o.value:-o.value)}),(I,F)=>(x.openBlock(),x.createElementBlock("TresGroup",{ref_key:"wrapperRef",ref:d},[x.renderSlot(I.$slots,"default")],512))}}),wc=["object","args","mode","enabled","axis","translation-snap","rotation-snap","scale-snap","space","size","show-x","show-y","show-z"],_c=x.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(v,{emit:n}){const i=x.shallowRef(),{state:s,extend:o}=He();o({TransformControls:pa});const l=u=>{s.controls&&(s.controls.enabled=!u.value),n("dragging",u.value)};function p(){Oe(i.value,"change",()=>n("change")),Oe(i.value,"dragging-changed",l),Oe(i.value,"mouseDown",()=>n("mouseDown")),Oe(i.value,"mouseUp",()=>n("mouseUp")),Oe(i.value,"objectChange",()=>n("objectChange"))}return x.watchEffect(()=>{i.value&&p()}),x.onUnmounted(()=>{i.value&&i.value.dispose()}),(u,d)=>x.unref(s).camera&&x.unref(s).renderer?(x.openBlock(),x.createElementBlock("TresTransformControls",{key:0,ref_key:"controls",ref:i,object:u.object,args:[x.unref(s).camera,x.unref(s).renderer.domElement],mode:u.mode,enabled:u.enabled,axis:u.axis,"translation-snap":u.translationSnap,"rotation-snap":u.rotationSnap,"scale-snap":u.scaleSnap,space:u.space,size:u.size,"show-x":u.showX,"show-y":u.showY,"show-z":u.showZ,visible:!0},null,8,wc)):x.createCommentVNode("",!0)}}),yc=["args"],xc=x.defineComponent({__name:"PointerLockControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{},selector:{}},setup(v,{expose:n}){const i=v,{state:s,setState:o,extend:l}=He(),p=x.ref(null);let u;return l({PointerLockControls:ls}),x.watch(p,d=>{var _;d&&i.makeDefault?o("controls",d):o("controls",null);const w=document.getElementById(i.selector||"");u=w||((_=s.renderer)==null?void 0:_.domElement),Oe(u,"click",()=>{var y;(y=p.value)==null||y.lock()})}),n({value:p}),(d,w)=>{var _;return x.unref(s).camera&&x.unref(s).renderer?(x.openBlock(),x.createElementBlock("TresPointerLockControls",{key:0,ref_key:"controls",ref:p,args:[x.unref(s).camera||d.camera,((_=x.unref(s).renderer)==null?void 0:_.domElement)||d.domElement]},null,8,yc)):x.createCommentVNode("",!0)}}}),Cc=["args"],Pc=x.defineComponent({__name:"MapControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{}},setup(v){const n=v,{state:i,setState:s,extend:o}=He(),l=x.ref(null);return o({MapControls:_a}),x.watch(l,p=>{p&&n.makeDefault?s("controls",p):s("controls",null)}),(p,u)=>{var d;return x.unref(i).camera&&x.unref(i).renderer?(x.openBlock(),x.createElementBlock("TresMapControls",{key:0,ref_key:"controls",ref:l,args:[x.unref(i).camera||p.camera,((d=x.unref(i).renderer)==null?void 0:d.domElement)||p.domElement]},null,8,Cc)):x.createCommentVNode("",!0)}}});class kc extends f.MeshStandardMaterial{constructor(i={}){super(i);Mr(this,"_time");Mr(this,"_factor");this.setValues(i),this._time={value:0},this._factor={value:1}}onBeforeCompile(i){i.uniforms||(i.uniforms={}),i.uniforms.time=this._time,i.uniforms.factor=this._factor,i.vertexShader=`
81
+ `),D.fragmentShader=D.fragmentShader.replace("vec4( vec3( 1.0 - fragCoordZ ), opacity );","vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );")})});const E=new m.ShaderMaterial(Xl),k=new m.ShaderMaterial(Zl);k.depthTest=E.depthTest=!1;function O(D){!y.value||!o.value||(d.visible=!0,d.material=E,E.uniforms.tDiffuse.value=a.texture,E.uniforms.h.value=D/256,y.value.setRenderTarget(c),y.value.render(d,o.value),d.material=k,k.uniforms.tDiffuse.value=c.texture,k.uniforms.v.value=D/256,y.value.setRenderTarget(a),y.value.render(d,o.value),d.visible=!1)}const{onLoop:R}=Ae.useRenderLoop();let N=0,F,M;return R(()=>{!o.value||b.value===void 0||y.value===void 0||(n.frames===1/0||N<n.frames)&&(N++,F=b.value.background,M=b.value.overrideMaterial,i.value.visible=!1,b.value.background=null,b.value.overrideMaterial=g,y.value.setRenderTarget(a),y.value.render(b.value,o.value),O(n.blur),n.smooth&&O(n.blur*.4),y.value.setRenderTarget(null),i.value.visible=!0,b.value.background=F,b.value.overrideMaterial=M)}),(D,U)=>{const S=_.resolveComponent("primitive");return _.openBlock(),_.createElementBlock("TresGroup",_.mergeProps({ref_key:"groupRef",ref:i},D.$attrs),[_.createElementVNode("TresMesh",{scale:[1,-1,1],geometry:_.unref(p)},[_.createElementVNode("TresMeshBasicMaterial",{map:_.unref(a).texture,opacity:D.opacity,"depth-write":D.depthWrite,transparent:!0},null,8,Uc)],8,Nc),_.createVNode(S,{object:_.unref(d)},null,8,["object"]),o.value&&D.helper?(_.openBlock(),_.createElementBlock("TresCameraHelper",{key:0,args:[o.value]},null,8,zc)):_.createCommentVNode("",!0),_.createElementVNode("TresOrthographicCamera",{ref_key:"shadowCamera",ref:o,position:[0,0,0],rotation:[Math.PI/2,0,0],args:[-C.value/2,C.value/2,A.value/2,-A.value/2,0,D.far]},null,8,Rc),jc],16)}}});function Fo(v){return _.getCurrentScope()?(_.onScopeDispose(v),!0):!1}function vt(v){return typeof v=="function"?v():_.unref(v)}const Kc=typeof window<"u",Xt=()=>{};function No(v,t){function n(...i){return new Promise((o,a)=>{Promise.resolve(v(()=>t.apply(this,i),{fn:t,thisArg:this,args:i})).then(o).catch(a)})}return n}function Yc(v,t={}){let n,i,o=Xt;const a=p=>{clearTimeout(p),o(),o=Xt};return p=>{const d=vt(v),g=vt(t.maxWait);return n&&a(n),d<=0||g!==void 0&&g<=0?(i&&(a(i),i=null),Promise.resolve(p())):new Promise((y,b)=>{o=t.rejectOnCancel?b:y,g&&!i&&(i=setTimeout(()=>{n&&a(n),i=null,y(p())},g)),n=setTimeout(()=>{i&&a(i),i=null,y(p())},d)})}}function Xc(v,t=!0,n=!0,i=!1){let o=0,a,c=!0,p=Xt,d;const g=()=>{a&&(clearTimeout(a),a=void 0,p(),p=Xt)};return b=>{const C=vt(v),A=Date.now()-o,E=()=>d=b();return g(),C<=0?(o=Date.now(),E()):(A>C&&(n||!c)?(o=Date.now(),E()):t&&(d=new Promise((k,O)=>{p=i?O:k,a=setTimeout(()=>{o=Date.now(),c=!0,k(E()),g()},Math.max(0,C-A))})),!n&&!a&&(a=setTimeout(()=>c=!0,C)),c=!1,d)}}function Zc(...v){if(v.length!==1)return _.toRef(...v);const t=v[0];return typeof t=="function"?_.readonly(_.customRef(()=>({get:t,set:Xt}))):_.ref(t)}function qc(v,t=200,n={}){return No(Yc(t,n),v)}function Qc(v,t=200,n=!1,i=!0,o=!1){return No(Xc(t,n,i,o),v)}function Wc(v,t=!0){_.getCurrentInstance()?_.onMounted(v):t?v():_.nextTick(v)}function Jc(v){var t;const n=vt(v);return(t=n==null?void 0:n.$el)!=null?t:n}const Nn=Kc?window:void 0;function De(...v){let t,n,i,o;if(typeof v[0]=="string"||Array.isArray(v[0])?([n,i,o]=v,t=Nn):[t,n,i,o]=v,!t)return Xt;Array.isArray(n)||(n=[n]),Array.isArray(i)||(i=[i]);const a=[],c=()=>{a.forEach(y=>y()),a.length=0},p=(y,b,C,A)=>(y.addEventListener(b,C,A),()=>y.removeEventListener(b,C,A)),d=_.watch(()=>[Jc(t),vt(o)],([y,b])=>{c(),y&&a.push(...n.flatMap(C=>i.map(A=>p(y,C,A,b))))},{immediate:!0,flush:"post"}),g=()=>{d(),c()};return Fo(g),g}function Hc(v){return typeof v=="function"?v:typeof v=="string"?t=>t.key===v:Array.isArray(v)?t=>v.includes(t.key):()=>!0}function cn(...v){let t,n,i={};v.length===3?(t=v[0],n=v[1],i=v[2]):v.length===2?typeof v[1]=="object"?(t=!0,n=v[0],i=v[1]):(t=v[0],n=v[1]):(t=!0,n=v[0]);const{target:o=Nn,eventName:a="keydown",passive:c=!1,dedupe:p=!1}=i,d=Hc(t);return De(o,a,y=>{y.repeat&&vt(p)||d(y)&&n(y)},c)}function $c(){const v=_.ref(!1);return _.getCurrentInstance()&&_.onMounted(()=>{v.value=!0}),v}function eh(v){const t=$c();return _.computed(()=>(t.value,!!v()))}function th(v,t={}){const{window:n=Nn}=t,i=eh(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let o;const a=_.ref(!1),c=()=>{o&&("removeEventListener"in o?o.removeEventListener("change",p):o.removeListener(p))},p=()=>{i.value&&(c(),o=n.matchMedia(Zc(v).value),a.value=!!(o!=null&&o.matches),o&&("addEventListener"in o?o.addEventListener("change",p):o.addListener(p)))};return _.watchEffect(p),Fo(()=>c()),a}const Uo=1;function nh(v,t={}){const{throttle:n=0,idle:i=200,onStop:o=Xt,onScroll:a=Xt,offset:c={left:0,right:0,top:0,bottom:0},eventListenerOptions:p={capture:!1,passive:!0},behavior:d="auto"}=t,g=_.ref(0),y=_.ref(0),b=_.computed({get(){return g.value},set(D){A(D,void 0)}}),C=_.computed({get(){return y.value},set(D){A(void 0,D)}});function A(D,U){var S,T,j;const X=vt(v);X&&((j=X instanceof Document?document.body:X)==null||j.scrollTo({top:(S=vt(U))!=null?S:C.value,left:(T=vt(D))!=null?T:b.value,behavior:vt(d)}))}const E=_.ref(!1),k=_.reactive({left:!0,right:!1,top:!0,bottom:!1}),O=_.reactive({left:!1,right:!1,top:!1,bottom:!1}),R=D=>{E.value&&(E.value=!1,O.left=!1,O.right=!1,O.top=!1,O.bottom=!1,o(D))},N=qc(R,n+i),F=D=>{const U=D===window?D.document.documentElement:D===document?D.documentElement:D,{display:S,flexDirection:T}=getComputedStyle(U),j=U.scrollLeft;O.left=j<g.value,O.right=j>g.value;const X=Math.abs(j)<=0+(c.left||0),Z=Math.abs(j)+U.clientWidth>=U.scrollWidth-(c.right||0)-Uo;S==="flex"&&T==="row-reverse"?(k.left=Z,k.right=X):(k.left=X,k.right=Z),g.value=j;let J=U.scrollTop;D===document&&!J&&(J=document.body.scrollTop),O.top=J<y.value,O.bottom=J>y.value;const le=Math.abs(J)<=0+(c.top||0),he=Math.abs(J)+U.clientHeight>=U.scrollHeight-(c.bottom||0)-Uo;S==="flex"&&T==="column-reverse"?(k.top=he,k.bottom=le):(k.top=le,k.bottom=he),y.value=J},M=D=>{const U=D.target===document?D.target.documentElement:D.target;F(U),E.value=!0,N(D),a(D)};return De(v,"scroll",n?Qc(M,n,!0,!1):M,p),De(v,"scrollend",R,p),{x:b,y:C,isScrolling:E,arrivedState:k,directions:O,measure(){const D=vt(v);D&&F(D)}}}const sh={page:v=>[v.pageX,v.pageY],client:v=>[v.clientX,v.clientY],screen:v=>[v.screenX,v.screenY],movement:v=>v instanceof Touch?null:[v.movementX,v.movementY]};function ih(v={}){const{type:t="page",touch:n=!0,resetOnTouchEnds:i=!1,initialValue:o={x:0,y:0},window:a=Nn,target:c=a,eventFilter:p}=v,d=_.ref(o.x),g=_.ref(o.y),y=_.ref(null),b=typeof t=="function"?t:sh[t],C=R=>{const N=b(R);N&&([d.value,g.value]=N,y.value="mouse")},A=R=>{if(R.touches.length>0){const N=b(R.touches[0]);N&&([d.value,g.value]=N,y.value="touch")}},E=()=>{d.value=o.x,g.value=o.y},k=p?R=>p(()=>C(R),{}):R=>C(R),O=p?R=>p(()=>A(R),{}):R=>A(R);return c&&(De(c,"mousemove",k,{passive:!0}),De(c,"dragover",k,{passive:!0}),n&&t!=="movement"&&(De(c,"touchstart",O,{passive:!0}),De(c,"touchmove",O,{passive:!0}),i&&De(c,"touchend",E,{passive:!0}))),{x:d,y:g,sourceType:y}}function rh({window:v=Nn}={}){if(!v)return{x:_.ref(0),y:_.ref(0)};const t=_.ref(v.scrollX),n=_.ref(v.scrollY);return De(v,"scroll",()=>{t.value=v.scrollX,n.value=v.scrollY},{capture:!1,passive:!0}),{x:t,y:n}}function zo(v={}){const{window:t=Nn,initialWidth:n=1/0,initialHeight:i=1/0,listenOrientation:o=!0,includeScrollbar:a=!0}=v,c=_.ref(n),p=_.ref(i),d=()=>{t&&(a?(c.value=t.innerWidth,p.value=t.innerHeight):(c.value=t.document.documentElement.clientWidth,p.value=t.document.documentElement.clientHeight))};if(d(),Wc(d),De("resize",d,{passive:!0}),o){const g=th("(orientation: portrait)");_.watch(g,()=>d())}return{width:c,height:p}}const oh=_.defineComponent({__name:"MouseParallax",props:{disabled:{type:Boolean,default:!1},factor:{default:2.5},ease:{default:.1}},setup(v){const t=v,{camera:n}=Ae.useTresContext(),{disabled:i,factor:o,ease:a}=_.toRefs(t),{x:c,y:p}=ih(),{width:d,height:g}=zo(),y=_.ref(),b=_.computed(()=>(c.value/d.value-.5)*o.value),C=_.computed(()=>-(p.value/g.value-.5)*o.value),{onLoop:A}=Ae.useRenderLoop();return A(({delta:E})=>{i.value||!y.value||(y.value.position.x+=(b.value-y.value.position.x)*a.value*E,y.value.position.y+=(C.value-y.value.position.y)*a.value*E)}),_.watch(()=>y.value,E=>{E==null||E.add(n.value)}),(E,k)=>(_.openBlock(),_.createElementBlock("TresGroup",{ref_key:"cameraGroupRef",ref:y},null,512))}});let Hs=null;function ah(v,t){return n=>{t&&t(n),v.draco&&(Hs||(Hs=new wc),Hs.setDecoderPath(v.decoderPath||"https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),n.setDRACOLoader(Hs))}}async function Ro(v,t={draco:!1},n){return await Ae.useLoader(dl,v,ah(t,n))}const lh=_.defineComponent({__name:"component",props:{path:{},draco:{type:Boolean,default:!1},decoderPath:{default:"https://www.gstatic.com/draco/versioned/decoders/1.4.1/"}},async setup(v,{expose:t}){let n,i;const o=v,a=_.ref();t({value:a});const{scene:c}=([n,i]=_.withAsyncContext(()=>Ro(o.path,{draco:o.draco,decoderPath:o.decoderPath})),n=await n,i(),n);return(p,d)=>{const g=_.resolveComponent("primitive");return _.openBlock(),_.createBlock(g,_.mergeProps({ref_key:"modelRef",ref:a,object:_.unref(c)},p.$attrs),null,16,["object"])}}});async function jo(v){return await Ae.useLoader(tc,v)}const ch=_.defineComponent({__name:"component",props:{path:{}},async setup(v,{expose:t}){let n,i;const o=v,a=_.ref();t({value:a});const c=([n,i]=_.withAsyncContext(()=>jo(o.path)),n=await n,i(),n);return(p,d)=>{const g=_.resolveComponent("primitive");return _.openBlock(),_.createBlock(g,_.mergeProps({ref_key:"modelRef",ref:a,object:_.unref(c)},p.$attrs),null,16,["object"])}}}),Go="[TresJS - Cientos ▲ ■ ♥] ";function hh(){function v(i,o){console.error(`${Go} ${i}`,o||"")}function t(i){console.warn(`${Go} ${i}`)}function n(i,o){}return{logError:v,logWarning:t,logMessage:n}}let Wi=0;function ph(){const v=_.ref(!1),t=_.ref(0),n=_.ref([]),{logError:i}=hh();return new Promise(o=>{m.DefaultLoadingManager.onStart=()=>{v.value=!1},m.DefaultLoadingManager.onLoad=()=>{v.value=!0},m.DefaultLoadingManager.onProgress=(a,c,p)=>{c===p&&(Wi=p,v.value=!0,n.value.push(a)),t.value=Math.round((c-Wi)/(p-Wi)*100||100,2)},m.DefaultLoadingManager.onError=a=>{i("Error loading assets",new Error(a)),v.value=!0},o({items:n,hasFinishLoading:v,progress:t})})}const uh=["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"],dh=_.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:{default:()=>({ONE:m.TOUCH.ROTATE,TWO:m.TOUCH.DOLLY_PAN})},enableZoom:{type:Boolean,default:!0},zoomSpeed:{default:1},enableRotate:{type:Boolean,default:!0},rotateSpeed:{default:1}},emits:["change","start","end"],setup(v,{emit:t}){const n=v,{makeDefault:i,autoRotate:o,autoRotateSpeed:a,enableDamping:c,dampingFactor:p,enablePan:d,keyPanSpeed:g,maxAzimuthAngle:y,minAzimuthAngle:b,maxPolarAngle:C,minPolarAngle:A,minDistance:E,maxDistance:k,minZoom:O,maxZoom:R,enableZoom:N,zoomSpeed:F,enableRotate:M,touches:D,rotateSpeed:U,target:S}=_.toRefs(n),{camera:T,renderer:j,extend:X,controls:Z}=Ae.useTresContext(),J=_.ref(null);X({OrbitControls:go}),_.watch(J,oe=>{le(),oe&&i.value?Z.value=oe:Z.value=null});function le(){De(J.value,"change",()=>t("change",J.value)),De(J.value,"start",()=>t("start",J.value)),De(J.value,"end",()=>t("end",J.value))}const{onLoop:he}=Ae.useRenderLoop();return he(()=>{J.value&&(c.value||o.value)&&J.value.update()}),_.onUnmounted(()=>{J.value&&J.value.dispose()}),(oe,re)=>{var ne;return _.unref(T)&&_.unref(j)?(_.openBlock(),_.createElementBlock("TresOrbitControls",{key:0,ref_key:"controlsRef",ref:J,target:_.unref(S),"auto-rotate":_.unref(o),"auto-rotate-speed":_.unref(a),"enable-damping":_.unref(c),"damping-factor":_.unref(p),"enable-pan":_.unref(d),"key-pan-speed":_.unref(g),keys:oe.keys,"max-azimuth-angle":_.unref(y),"min-azimuth-angle":_.unref(b),"max-polar-angle":_.unref(C),"min-polar-angle":_.unref(A),"min-distance":_.unref(E),"max-distance":_.unref(k),"min-zoom":_.unref(O),"max-zoom":_.unref(R),touches:_.unref(D),"enable-zoom":_.unref(N),"zoom-speed":_.unref(F),"enable-rotate":_.unref(M),"rotate-speed":_.unref(U),args:[_.unref(T)||oe.camera,((ne=_.unref(j))==null?void 0:ne.domElement)||oe.domElement]},null,8,uh)):_.createCommentVNode("",!0)}}}),mh=5,fh=6,vh=.3,_h=_.defineComponent({__name:"KeyboardControls",props:{forward:{default:()=>["w","W"]},back:{default:()=>["s","S"]},left:{default:()=>["a","A"]},right:{default:()=>["d","D"]},jump:{default:()=>[" "]},gravity:{default:9.8},moveSpeed:{default:.1},headBobbing:{type:Boolean,default:!1},is2D:{type:Boolean,default:!1}},setup(v){var X;const t=v,{forward:n,back:i,left:o,right:a,jump:c,gravity:p,moveSpeed:d,headBobbing:g,is2D:y}=_.toRefs(t),{camera:b,controls:C}=Ae.useTresContext(),A=_.ref(0),E=_.ref(0),k=_.ref(!1),O=_.ref(!1),R=_.ref(0),N=_.shallowRef(),F=y.value?"y":"z";let M=((X=b.value.position)==null?void 0:X.y)||0;cn(n.value,()=>{k.value=!0,E.value=d.value},{eventName:"keydown"}),cn(i.value,()=>{k.value=!0,E.value=-d.value},{eventName:"keydown"}),cn([...n.value,...i.value],()=>{k.value=!1,E.value=0},{eventName:"keyup"}),cn(o.value,()=>{k.value=!0,A.value=-d.value},{eventName:"keydown"}),cn(a.value,()=>{k.value=!0,A.value=d.value},{eventName:"keydown"}),cn([...o.value,...a.value],()=>{k.value=!1,A.value=0},{eventName:"keyup"}),cn(c.value,()=>{O.value||(R.value=Date.now()),O.value=!0});const D=Z=>k.value?Math.sin(Z*mh)*vh+M:M,U=()=>(Date.now()-R.value)/1e3*3,S=Z=>M+fh*Z-.5*p.value*Math.pow(Z,2),T=()=>{if(O.value){const Z=S(U());return Z<=M&&(O.value=!1),Z}return 0},{onLoop:j}=Ae.useRenderLoop();return j(({elapsed:Z})=>{var J;C.value instanceof Ni&&((J=C.value)!=null&&J.isLocked)?(C.value.moveForward(E.value),C.value.moveRight(A.value),b.value.position&&(b.value.position.y=g.value?D(Z):M,b.value.position.y+=T())):N.value.children.length>0&&!(C.value instanceof Ni)&&(N.value.position.x+=A.value,N.value.position[F]+=y.value?E.value:-E.value)}),(Z,J)=>(_.openBlock(),_.createElementBlock("TresGroup",{ref_key:"wrapperRef",ref:N},[_.renderSlot(Z.$slots,"default")],512))}}),gh=["object","args","mode","enabled","axis","translation-snap","rotation-snap","scale-snap","space","size","show-x","show-y","show-z"],bh=_.defineComponent({__name:"TransformControls",props:{object:{},mode:{default:"translate"},enabled:{type:Boolean,default:!0},axis:{default:"XYZ"},translationSnap:{},rotationSnap:{},scaleSnap:{},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(v,{emit:t}){const n=v,{object:i,mode:o,enabled:a,axis:c,translationSnap:p,rotationSnap:d,scaleSnap:g,space:y,size:b,showX:C,showY:A,showZ:E}=_.toRefs(n),k=_.shallowRef(),{controls:O,camera:R,renderer:N,extend:F}=Ae.useTresContext();F({TransformControls:nl});const M=U=>{O.value&&(O.value.enabled=!U.value),t("dragging",U.value)};function D(){De(k.value,"change",()=>t("change")),De(k.value,"dragging-changed",M),De(k.value,"mouseDown",()=>t("mouseDown")),De(k.value,"mouseUp",()=>t("mouseUp")),De(k.value,"objectChange",()=>t("objectChange"))}return _.watchEffect(()=>{k.value&&D()}),_.onUnmounted(()=>{k.value&&k.value.dispose()}),(U,S)=>_.unref(R)&&_.unref(N)?(_.openBlock(),_.createElementBlock("TresTransformControls",{key:0,ref_key:"controlsRef",ref:k,object:_.unref(i),args:[_.unref(R),_.unref(N).domElement],mode:_.unref(o),enabled:_.unref(a),axis:_.unref(c),"translation-snap":_.unref(p),"rotation-snap":_.unref(d),"scale-snap":_.unref(g),space:_.unref(y),size:_.unref(b),"show-x":_.unref(C),"show-y":_.unref(A),"show-z":_.unref(E),visible:!0},null,8,gh)):_.createCommentVNode("",!0)}}),wh=["args"],yh=_.defineComponent({__name:"PointerLockControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{},selector:{}},setup(v,{expose:t}){const n=v,{camera:i,renderer:o,extend:a,controls:c}=Ae.useTresContext(),p=_.ref(null);let d;return a({PointerLockControls:Ni}),_.watch(p,g=>{g&&n.makeDefault?c.value=g:c.value=null;const y=document.getElementById(n.selector||"");d=y||o.value.domElement,De(d,"click",()=>{g==null||g.lock()})}),_.onUnmounted(()=>{p.value&&p.value.dispose()}),t({value:c}),(g,y)=>{var b;return _.unref(i)&&_.unref(o)?(_.openBlock(),_.createElementBlock("TresPointerLockControls",{key:0,ref_key:"controlsRef",ref:p,args:[_.unref(i)||g.camera,((b=_.unref(o))==null?void 0:b.domElement)||g.domElement]},null,8,wh)):_.createCommentVNode("",!0)}}}),xh=["args"],Ch=_.defineComponent({__name:"MapControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{}},setup(v){const t=v,{camera:n,renderer:i,extend:o,controls:a}=Ae.useTresContext(),c=_.ref(null);return o({MapControls:ul}),_.watch(a,p=>{p&&t.makeDefault?a.value=p:a.value=null}),_.onUnmounted(()=>{c.value&&c.value.dispose()}),(p,d)=>{var g;return _.unref(n)&&_.unref(i)?(_.openBlock(),_.createElementBlock("TresMapControls",{key:0,ref_key:"controlsRef",ref:c,args:[_.unref(n)||p.camera,((g=_.unref(i))==null?void 0:g.domElement)||p.domElement]},null,8,xh)):_.createCommentVNode("",!0)}}}),Ph=_.defineComponent({__name:"ScrollControls",props:{pages:{default:4},distance:{default:4},smoothScroll:{default:.1},horizontal:{type:Boolean,default:!1},htmlScroll:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(v,{emit:t}){const n=v,{logWarning:i}=Ae.useLogger();n.smoothScroll<0&&i("SmoothControl must be greater than zero"),n.pages<0&&i("Pages must be greater than zero");const{camera:o,controls:a,renderer:c}=Ae.useTresContext(),p=_.shallowRef(),d=document.createElement("div"),{y:g}=rh(),{x:y,y:b,isScrolling:C}=nh(d),{height:A,width:E}=zo();let k=0;const O=_.ref(!1),R=_.ref(0),N=_.ref(0),F=_.ref(0),M=n.horizontal?"x":"y",D=_.watch(o,S=>{if(O.value){D();return}k=n.horizontal?(S==null?void 0:S.position.x)||0:(S==null?void 0:S.position.y)||0,O.value=!0},{immediate:!0});_.watch(C,S=>{a.value&&(a.value.enabled=!S)},{immediate:!0}),_.watch(g,S=>{!C.value&&!n.htmlScroll||(N.value=parseFloat((S/A.value/(F.value/A.value-1)).toFixed(2)),R.value=-1*N.value,t("update:modelValue",N.value))}),_.watch(b,S=>{N.value=parseFloat((S/A.value/(F.value/A.value)).toFixed(2)),R.value=-1*N.value,t("update:modelValue",N.value)}),_.watch(y,S=>{N.value=parseFloat((S/E.value/(F.value/E.value-1)).toFixed(2)),R.value=+N.value,t("update:modelValue",N.value)}),_.watch(c,S=>{var j,X;const T=S==null?void 0:S.domElement;if(n.htmlScroll&&(S!=null&&S.domElement))T!=null&&T.style.width&&(T!=null&&T.style.position)&&(T!=null&&T.style.top)&&(T!=null&&T.style.left)&&(T.style.width="100%",T.style.position="fixed",T.style.zIndex=" -99999",T.style.top="0",T.style.left="0"),F.value=document.body.scrollHeight;else{const Z=document.createElement("div"),J=document.createElement("div");d.style[n.horizontal?"overflowX":"overflowY"]="auto",d.style[n.horizontal?"overflowY":"overflowX"]="hidden",d.style.position="absolute",d.style.width="100%",d.style.height=" 100%",d.style.top="0",d.style.left="0",d.classList.add("scrollContainer"),Z.style.position="sticky",Z.style.top="0px",Z.style.left="0px",Z.style.width="100%",Z.style.height="100%",Z.style.overflow="hidden",d.appendChild(Z),J.style.height=n.horizontal?"100%":`${A.value*n.pages}px`,J.style.width=n.horizontal?`${E.value*n.pages}px`:"100vw",J.style.pointerEvents="none",T.style.position="fixed",T.style.zIndex="0",T!=null&&T.style.width&&(T.style.width="100%"),d.appendChild(J),S.domElement.parentNode.style.position="relative",(X=(j=S==null?void 0:S.domElement)==null?void 0:j.parentNode)==null||X.appendChild(d),F.value=n.horizontal?E.value*n.pages:A.value*n.pages}},{immediate:!0});const{onLoop:U}=Ae.useRenderLoop();return U(()=>{var S;if((S=o.value)!=null&&S.position){const T=(R.value*n.distance-o.value.position[M]+k)*n.smoothScroll;o.value.position[M]+=T,p.value.children.length>0&&(p.value.position[M]+=T)}}),(S,T)=>(_.openBlock(),_.createElementBlock("TresGroup",{ref_key:"wrapperRef",ref:p},[_.renderSlot(S.$slots,"default")],512))}});/*!
82
+ * camera-controls
83
+ * https://github.com/yomotsu/camera-controls
84
+ * (c) 2017 @yomotsu
85
+ * Released under the MIT License.
86
+ */const ie={LEFT:1,RIGHT:2,MIDDLE:4},Y=Object.freeze({NONE:0,ROTATE:1,TRUCK:2,OFFSET:4,DOLLY:8,ZOOM:16,TOUCH_ROTATE:32,TOUCH_TRUCK:64,TOUCH_OFFSET:128,TOUCH_DOLLY:256,TOUCH_ZOOM:512,TOUCH_DOLLY_TRUCK:1024,TOUCH_DOLLY_OFFSET:2048,TOUCH_DOLLY_ROTATE:4096,TOUCH_ZOOM_TRUCK:8192,TOUCH_ZOOM_OFFSET:16384,TOUCH_ZOOM_ROTATE:32768}),Un={NONE:0,IN:1,OUT:-1};function hn(v){return v.isPerspectiveCamera}function Zt(v){return v.isOrthographicCamera}const zn=Math.PI*2,Ko=Math.PI/2,Yo=1e-5,ms=Math.PI/180;function Ct(v,t,n){return Math.max(t,Math.min(n,v))}function Se(v,t=Yo){return Math.abs(v)<t}function Me(v,t,n=Yo){return Se(v-t,n)}function Xo(v,t){return Math.round(v/t)*t}function fs(v){return isFinite(v)?v:v<0?-Number.MAX_VALUE:Number.MAX_VALUE}function vs(v){return Math.abs(v)<Number.MAX_VALUE?v:v*(1/0)}function $s(v,t,n,i,o=1/0,a){i=Math.max(1e-4,i);const c=2/i,p=c*a,d=1/(1+p+.48*p*p+.235*p*p*p);let g=v-t;const y=t,b=o*i;g=Ct(g,-b,b),t=v-g;const C=(n.value+c*g)*a;n.value=(n.value-c*C)*d;let A=t+(g+C)*d;return y-v>0==A>y&&(A=y,n.value=(A-y)/a),A}function Zo(v,t,n,i,o=1/0,a,c){i=Math.max(1e-4,i);const p=2/i,d=p*a,g=1/(1+d+.48*d*d+.235*d*d*d);let y=t.x,b=t.y,C=t.z,A=v.x-y,E=v.y-b,k=v.z-C;const O=y,R=b,N=C,F=o*i,M=F*F,D=A*A+E*E+k*k;if(D>M){const oe=Math.sqrt(D);A=A/oe*F,E=E/oe*F,k=k/oe*F}y=v.x-A,b=v.y-E,C=v.z-k;const U=(n.x+p*A)*a,S=(n.y+p*E)*a,T=(n.z+p*k)*a;n.x=(n.x-p*U)*g,n.y=(n.y-p*S)*g,n.z=(n.z-p*T)*g,c.x=y+(A+U)*g,c.y=b+(E+S)*g,c.z=C+(k+T)*g;const j=O-v.x,X=R-v.y,Z=N-v.z,J=c.x-O,le=c.y-R,he=c.z-N;return j*J+X*le+Z*he>0&&(c.x=O,c.y=R,c.z=N,n.x=(c.x-O)/a,n.y=(c.y-R)/a,n.z=(c.z-N)/a),c}function Ji(v,t){t.set(0,0),v.forEach(n=>{t.x+=n.clientX,t.y+=n.clientY}),t.x/=v.length,t.y/=v.length}function Hi(v,t){return Zt(v)?(console.warn(`${t} is not supported in OrthographicCamera`),!0):!1}class Ah{constructor(){this._listeners={}}addEventListener(t,n){const i=this._listeners;i[t]===void 0&&(i[t]=[]),i[t].indexOf(n)===-1&&i[t].push(n)}hasEventListener(t,n){const i=this._listeners;return i[t]!==void 0&&i[t].indexOf(n)!==-1}removeEventListener(t,n){const o=this._listeners[t];if(o!==void 0){const a=o.indexOf(n);a!==-1&&o.splice(a,1)}}removeAllEventListeners(t){if(!t){this._listeners={};return}Array.isArray(this._listeners[t])&&(this._listeners[t].length=0)}dispatchEvent(t){const i=this._listeners[t.type];if(i!==void 0){t.target=this;const o=i.slice(0);for(let a=0,c=o.length;a<c;a++)o[a].call(this,t)}}}const Mh="2.7.0",ei=1/8,qo=typeof window<"u",kh=qo&&/Mac/.test(navigator.platform),Lh=!(qo&&"PointerEvent"in window);let te,Qo,ti,$i,Je,pe,ye,Rn,_s,Pt,At,pn,Wo,Jo,at,gs,jn,Ho,er,$o,tr,nr,ni;class bs extends Ah{static install(t){te=t.THREE,Qo=Object.freeze(new te.Vector3(0,0,0)),ti=Object.freeze(new te.Vector3(0,1,0)),$i=Object.freeze(new te.Vector3(0,0,1)),Je=new te.Vector2,pe=new te.Vector3,ye=new te.Vector3,Rn=new te.Vector3,_s=new te.Vector3,Pt=new te.Vector3,At=new te.Vector3,pn=new te.Vector3,Wo=new te.Vector3,Jo=new te.Vector3,at=new te.Spherical,gs=new te.Spherical,jn=new te.Box3,Ho=new te.Box3,er=new te.Sphere,$o=new te.Quaternion,tr=new te.Quaternion,nr=new te.Matrix4,ni=new te.Raycaster}static get ACTION(){return Y}constructor(t,n){super(),this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.minDistance=Number.EPSILON,this.maxDistance=1/0,this.infinityDolly=!1,this.minZoom=.01,this.maxZoom=1/0,this.smoothTime=.25,this.draggingSmoothTime=.125,this.maxSpeed=1/0,this.azimuthRotateSpeed=1,this.polarRotateSpeed=1,this.dollySpeed=1,this.dollyDragInverted=!1,this.truckSpeed=2,this.dollyToCursor=!1,this.dragToOffset=!1,this.verticalDragToForward=!1,this.boundaryFriction=0,this.restThreshold=.01,this.colliderMeshes=[],this.cancel=()=>{},this._enabled=!0,this._state=Y.NONE,this._viewport=null,this._changedDolly=0,this._changedZoom=0,this._hasRested=!0,this._boundaryEnclosesCamera=!1,this._needsUpdate=!0,this._updatedLastTime=!1,this._elementRect=new DOMRect,this._isDragging=!1,this._activePointers=[],this._lockedPointer=null,this._interactiveArea=new DOMRect(0,0,1,1),this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._isUserControllingOffset=!1,this._isUserControllingZoom=!1,this._lastDollyDirection=Un.NONE,this._thetaVelocity={value:0},this._phiVelocity={value:0},this._radiusVelocity={value:0},this._targetVelocity=new te.Vector3,this._focalOffsetVelocity=new te.Vector3,this._zoomVelocity={value:0},this._truckInternal=(M,D,U)=>{let S,T;if(hn(this._camera)){const j=pe.copy(this._camera.position).sub(this._target),X=this._camera.getEffectiveFOV()*ms,Z=j.length()*Math.tan(X*.5);S=this.truckSpeed*M*Z/this._elementRect.height,T=this.truckSpeed*D*Z/this._elementRect.height}else if(Zt(this._camera)){const j=this._camera;S=M*(j.right-j.left)/j.zoom/this._elementRect.width,T=D*(j.top-j.bottom)/j.zoom/this._elementRect.height}else return;this.verticalDragToForward?(U?this.setFocalOffset(this._focalOffsetEnd.x+S,this._focalOffsetEnd.y,this._focalOffsetEnd.z,!0):this.truck(S,0,!0),this.forward(-T,!0)):U?this.setFocalOffset(this._focalOffsetEnd.x+S,this._focalOffsetEnd.y+T,this._focalOffsetEnd.z,!0):this.truck(S,T,!0)},this._rotateInternal=(M,D)=>{const U=zn*this.azimuthRotateSpeed*M/this._elementRect.height,S=zn*this.polarRotateSpeed*D/this._elementRect.height;this.rotate(U,S,!0)},this._dollyInternal=(M,D,U)=>{const S=Math.pow(.95,-M*this.dollySpeed),T=this._sphericalEnd.radius,j=this._sphericalEnd.radius*S,X=te.MathUtils.clamp(j,this.minDistance,this.maxDistance),Z=X-j;this.infinityDolly&&this.dollyToCursor?this._dollyToNoClamp(j,!0):this.infinityDolly&&!this.dollyToCursor?(this.dollyInFixed(Z,!0),this._dollyToNoClamp(X,!0)):this._dollyToNoClamp(X,!0),this.dollyToCursor&&(this._changedDolly+=(this.infinityDolly?j:X)-T,this._dollyControlCoord.set(D,U)),this._lastDollyDirection=Math.sign(-M)},this._zoomInternal=(M,D,U)=>{const S=Math.pow(.95,M*this.dollySpeed),T=this._zoom,j=this._zoom*S;this.zoomTo(j,!0),this.dollyToCursor&&(this._changedZoom+=j-T,this._dollyControlCoord.set(D,U))},typeof te>"u"&&console.error("camera-controls: `THREE` is undefined. You must first run `CameraControls.install( { THREE: THREE } )`. Check the docs for further information."),this._camera=t,this._yAxisUpSpace=new te.Quaternion().setFromUnitVectors(this._camera.up,ti),this._yAxisUpSpaceInverse=this._yAxisUpSpace.clone().invert(),this._state=Y.NONE,this._target=new te.Vector3,this._targetEnd=this._target.clone(),this._focalOffset=new te.Vector3,this._focalOffsetEnd=this._focalOffset.clone(),this._spherical=new te.Spherical().setFromVector3(pe.copy(this._camera.position).applyQuaternion(this._yAxisUpSpace)),this._sphericalEnd=this._spherical.clone(),this._lastDistance=this._spherical.radius,this._zoom=this._camera.zoom,this._zoomEnd=this._zoom,this._lastZoom=this._zoom,this._nearPlaneCorners=[new te.Vector3,new te.Vector3,new te.Vector3,new te.Vector3],this._updateNearPlaneCorners(),this._boundary=new te.Box3(new te.Vector3(-1/0,-1/0,-1/0),new te.Vector3(1/0,1/0,1/0)),this._cameraUp0=this._camera.up.clone(),this._target0=this._target.clone(),this._position0=this._camera.position.clone(),this._zoom0=this._zoom,this._focalOffset0=this._focalOffset.clone(),this._dollyControlCoord=new te.Vector2,this.mouseButtons={left:Y.ROTATE,middle:Y.DOLLY,right:Y.TRUCK,wheel:hn(this._camera)?Y.DOLLY:Zt(this._camera)?Y.ZOOM:Y.NONE},this.touches={one:Y.TOUCH_ROTATE,two:hn(this._camera)?Y.TOUCH_DOLLY_TRUCK:Zt(this._camera)?Y.TOUCH_ZOOM_TRUCK:Y.NONE,three:Y.TOUCH_TRUCK};const i=new te.Vector2,o=new te.Vector2,a=new te.Vector2,c=M=>{if(!this._enabled||!this._domElement)return;if(this._interactiveArea.left!==0||this._interactiveArea.top!==0||this._interactiveArea.width!==1||this._interactiveArea.height!==1){const S=this._domElement.getBoundingClientRect(),T=M.clientX/S.width,j=M.clientY/S.height;if(T<this._interactiveArea.left||T>this._interactiveArea.right||j<this._interactiveArea.top||j>this._interactiveArea.bottom)return}const D=M.pointerType!=="mouse"?null:(M.buttons&ie.LEFT)===ie.LEFT?ie.LEFT:(M.buttons&ie.MIDDLE)===ie.MIDDLE?ie.MIDDLE:(M.buttons&ie.RIGHT)===ie.RIGHT?ie.RIGHT:null;if(D!==null){const S=this._findPointerByMouseButton(D);S&&this._disposePointer(S)}if((M.buttons&ie.LEFT)===ie.LEFT&&this._lockedPointer)return;const U={pointerId:M.pointerId,clientX:M.clientX,clientY:M.clientY,deltaX:0,deltaY:0,mouseButton:D};this._activePointers.push(U),this._domElement.ownerDocument.removeEventListener("pointermove",d,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",y),this._domElement.ownerDocument.addEventListener("pointermove",d,{passive:!1}),this._domElement.ownerDocument.addEventListener("pointerup",y),this._isDragging=!0,k(M)},p=M=>{if(!this._enabled||!this._domElement||this._lockedPointer)return;if(this._interactiveArea.left!==0||this._interactiveArea.top!==0||this._interactiveArea.width!==1||this._interactiveArea.height!==1){const S=this._domElement.getBoundingClientRect(),T=M.clientX/S.width,j=M.clientY/S.height;if(T<this._interactiveArea.left||T>this._interactiveArea.right||j<this._interactiveArea.top||j>this._interactiveArea.bottom)return}const D=(M.buttons&ie.LEFT)===ie.LEFT?ie.LEFT:(M.buttons&ie.MIDDLE)===ie.MIDDLE?ie.MIDDLE:(M.buttons&ie.RIGHT)===ie.RIGHT?ie.RIGHT:null;if(D!==null){const S=this._findPointerByMouseButton(D);S&&this._disposePointer(S)}const U={pointerId:1,clientX:M.clientX,clientY:M.clientY,deltaX:0,deltaY:0,mouseButton:(M.buttons&ie.LEFT)===ie.LEFT?ie.LEFT:(M.buttons&ie.MIDDLE)===ie.LEFT?ie.MIDDLE:(M.buttons&ie.RIGHT)===ie.LEFT?ie.RIGHT:null};this._activePointers.push(U),this._domElement.ownerDocument.removeEventListener("mousemove",g),this._domElement.ownerDocument.removeEventListener("mouseup",b),this._domElement.ownerDocument.addEventListener("mousemove",g),this._domElement.ownerDocument.addEventListener("mouseup",b),this._isDragging=!0,k(M)},d=M=>{M.cancelable&&M.preventDefault();const D=M.pointerId,U=this._lockedPointer||this._findPointerById(D);if(U){if(U.clientX=M.clientX,U.clientY=M.clientY,U.deltaX=M.movementX,U.deltaY=M.movementY,this._state=0,M.pointerType==="touch")switch(this._activePointers.length){case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}else(!this._isDragging&&this._lockedPointer||this._isDragging&&(M.buttons&ie.LEFT)===ie.LEFT)&&(this._state=this._state|this.mouseButtons.left),this._isDragging&&(M.buttons&ie.MIDDLE)===ie.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),this._isDragging&&(M.buttons&ie.RIGHT)===ie.RIGHT&&(this._state=this._state|this.mouseButtons.right);O()}},g=M=>{const D=this._lockedPointer||this._findPointerById(1);D&&(D.clientX=M.clientX,D.clientY=M.clientY,D.deltaX=M.movementX,D.deltaY=M.movementY,this._state=0,(this._lockedPointer||(M.buttons&ie.LEFT)===ie.LEFT)&&(this._state=this._state|this.mouseButtons.left),(M.buttons&ie.MIDDLE)===ie.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),(M.buttons&ie.RIGHT)===ie.RIGHT&&(this._state=this._state|this.mouseButtons.right),O())},y=M=>{const D=this._findPointerById(M.pointerId);if(!(D&&D===this._lockedPointer)){if(D&&this._disposePointer(D),M.pointerType==="touch")switch(this._activePointers.length){case 0:this._state=Y.NONE;break;case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}else this._state=Y.NONE;R()}},b=()=>{const M=this._findPointerById(1);M&&M===this._lockedPointer||(M&&this._disposePointer(M),this._state=Y.NONE,R())};let C=-1;const A=M=>{if(!this._domElement||!this._enabled||this.mouseButtons.wheel===Y.NONE)return;if(this._interactiveArea.left!==0||this._interactiveArea.top!==0||this._interactiveArea.width!==1||this._interactiveArea.height!==1){const j=this._domElement.getBoundingClientRect(),X=M.clientX/j.width,Z=M.clientY/j.height;if(X<this._interactiveArea.left||X>this._interactiveArea.right||Z<this._interactiveArea.top||Z>this._interactiveArea.bottom)return}if(M.preventDefault(),this.dollyToCursor||this.mouseButtons.wheel===Y.ROTATE||this.mouseButtons.wheel===Y.TRUCK){const j=performance.now();C-j<1e3&&this._getClientRect(this._elementRect),C=j}const D=kh?-1:-3,U=M.deltaMode===1?M.deltaY/D:M.deltaY/(D*10),S=this.dollyToCursor?(M.clientX-this._elementRect.x)/this._elementRect.width*2-1:0,T=this.dollyToCursor?(M.clientY-this._elementRect.y)/this._elementRect.height*-2+1:0;switch(this.mouseButtons.wheel){case Y.ROTATE:{this._rotateInternal(M.deltaX,M.deltaY),this._isUserControllingRotate=!0;break}case Y.TRUCK:{this._truckInternal(M.deltaX,M.deltaY,!1),this._isUserControllingTruck=!0;break}case Y.OFFSET:{this._truckInternal(M.deltaX,M.deltaY,!0),this._isUserControllingOffset=!0;break}case Y.DOLLY:{this._dollyInternal(-U,S,T),this._isUserControllingDolly=!0;break}case Y.ZOOM:{this._zoomInternal(-U,S,T),this._isUserControllingZoom=!0;break}}this.dispatchEvent({type:"control"})},E=M=>{if(!(!this._domElement||!this._enabled)){if(this.mouseButtons.right===bs.ACTION.NONE){const D=M instanceof PointerEvent?M.pointerId:(M instanceof MouseEvent,0),U=this._findPointerById(D);U&&this._disposePointer(U),this._domElement.ownerDocument.removeEventListener("pointermove",d,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",y),this._domElement.ownerDocument.removeEventListener("mousemove",g),this._domElement.ownerDocument.removeEventListener("mouseup",b);return}M.preventDefault()}},k=M=>{if(!this._enabled)return;if(Ji(this._activePointers,Je),this._getClientRect(this._elementRect),i.copy(Je),o.copy(Je),this._activePointers.length>=2){const U=Je.x-this._activePointers[1].clientX,S=Je.y-this._activePointers[1].clientY,T=Math.sqrt(U*U+S*S);a.set(0,T);const j=(this._activePointers[0].clientX+this._activePointers[1].clientX)*.5,X=(this._activePointers[0].clientY+this._activePointers[1].clientY)*.5;o.set(j,X)}if(this._state=0,!M)this._lockedPointer&&(this._state=this._state|this.mouseButtons.left);else if("pointerType"in M&&M.pointerType==="touch")switch(this._activePointers.length){case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}else!this._lockedPointer&&(M.buttons&ie.LEFT)===ie.LEFT&&(this._state=this._state|this.mouseButtons.left),(M.buttons&ie.MIDDLE)===ie.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),(M.buttons&ie.RIGHT)===ie.RIGHT&&(this._state=this._state|this.mouseButtons.right);((this._state&Y.ROTATE)===Y.ROTATE||(this._state&Y.TOUCH_ROTATE)===Y.TOUCH_ROTATE||(this._state&Y.TOUCH_DOLLY_ROTATE)===Y.TOUCH_DOLLY_ROTATE||(this._state&Y.TOUCH_ZOOM_ROTATE)===Y.TOUCH_ZOOM_ROTATE)&&(this._sphericalEnd.theta=this._spherical.theta,this._sphericalEnd.phi=this._spherical.phi,this._thetaVelocity.value=0,this._phiVelocity.value=0),((this._state&Y.TRUCK)===Y.TRUCK||(this._state&Y.TOUCH_TRUCK)===Y.TOUCH_TRUCK||(this._state&Y.TOUCH_DOLLY_TRUCK)===Y.TOUCH_DOLLY_TRUCK||(this._state&Y.TOUCH_ZOOM_TRUCK)===Y.TOUCH_ZOOM_TRUCK)&&(this._targetEnd.copy(this._target),this._targetVelocity.set(0,0,0)),((this._state&Y.DOLLY)===Y.DOLLY||(this._state&Y.TOUCH_DOLLY)===Y.TOUCH_DOLLY||(this._state&Y.TOUCH_DOLLY_TRUCK)===Y.TOUCH_DOLLY_TRUCK||(this._state&Y.TOUCH_DOLLY_OFFSET)===Y.TOUCH_DOLLY_OFFSET||(this._state&Y.TOUCH_DOLLY_ROTATE)===Y.TOUCH_DOLLY_ROTATE)&&(this._sphericalEnd.radius=this._spherical.radius,this._radiusVelocity.value=0),((this._state&Y.ZOOM)===Y.ZOOM||(this._state&Y.TOUCH_ZOOM)===Y.TOUCH_ZOOM||(this._state&Y.TOUCH_ZOOM_TRUCK)===Y.TOUCH_ZOOM_TRUCK||(this._state&Y.TOUCH_ZOOM_OFFSET)===Y.TOUCH_ZOOM_OFFSET||(this._state&Y.TOUCH_ZOOM_ROTATE)===Y.TOUCH_ZOOM_ROTATE)&&(this._zoomEnd=this._zoom,this._zoomVelocity.value=0),((this._state&Y.OFFSET)===Y.OFFSET||(this._state&Y.TOUCH_OFFSET)===Y.TOUCH_OFFSET||(this._state&Y.TOUCH_DOLLY_OFFSET)===Y.TOUCH_DOLLY_OFFSET||(this._state&Y.TOUCH_ZOOM_OFFSET)===Y.TOUCH_ZOOM_OFFSET)&&(this._focalOffsetEnd.copy(this._focalOffset),this._focalOffsetVelocity.set(0,0,0)),this.dispatchEvent({type:"controlstart"})},O=()=>{if(!this._enabled)return;Ji(this._activePointers,Je);const D=this._domElement&&document.pointerLockElement===this._domElement?this._lockedPointer||this._activePointers[0]:null,U=D?-D.deltaX:o.x-Je.x,S=D?-D.deltaY:o.y-Je.y;if(o.copy(Je),((this._state&Y.ROTATE)===Y.ROTATE||(this._state&Y.TOUCH_ROTATE)===Y.TOUCH_ROTATE||(this._state&Y.TOUCH_DOLLY_ROTATE)===Y.TOUCH_DOLLY_ROTATE||(this._state&Y.TOUCH_ZOOM_ROTATE)===Y.TOUCH_ZOOM_ROTATE)&&(this._rotateInternal(U,S),this._isUserControllingRotate=!0),(this._state&Y.DOLLY)===Y.DOLLY||(this._state&Y.ZOOM)===Y.ZOOM){const T=this.dollyToCursor?(i.x-this._elementRect.x)/this._elementRect.width*2-1:0,j=this.dollyToCursor?(i.y-this._elementRect.y)/this._elementRect.height*-2+1:0,X=this.dollyDragInverted?-1:1;(this._state&Y.DOLLY)===Y.DOLLY?(this._dollyInternal(X*S*ei,T,j),this._isUserControllingDolly=!0):(this._zoomInternal(X*S*ei,T,j),this._isUserControllingZoom=!0)}if((this._state&Y.TOUCH_DOLLY)===Y.TOUCH_DOLLY||(this._state&Y.TOUCH_ZOOM)===Y.TOUCH_ZOOM||(this._state&Y.TOUCH_DOLLY_TRUCK)===Y.TOUCH_DOLLY_TRUCK||(this._state&Y.TOUCH_ZOOM_TRUCK)===Y.TOUCH_ZOOM_TRUCK||(this._state&Y.TOUCH_DOLLY_OFFSET)===Y.TOUCH_DOLLY_OFFSET||(this._state&Y.TOUCH_ZOOM_OFFSET)===Y.TOUCH_ZOOM_OFFSET||(this._state&Y.TOUCH_DOLLY_ROTATE)===Y.TOUCH_DOLLY_ROTATE||(this._state&Y.TOUCH_ZOOM_ROTATE)===Y.TOUCH_ZOOM_ROTATE){const T=Je.x-this._activePointers[1].clientX,j=Je.y-this._activePointers[1].clientY,X=Math.sqrt(T*T+j*j),Z=a.y-X;a.set(0,X);const J=this.dollyToCursor?(o.x-this._elementRect.x)/this._elementRect.width*2-1:0,le=this.dollyToCursor?(o.y-this._elementRect.y)/this._elementRect.height*-2+1:0;(this._state&Y.TOUCH_DOLLY)===Y.TOUCH_DOLLY||(this._state&Y.TOUCH_DOLLY_ROTATE)===Y.TOUCH_DOLLY_ROTATE||(this._state&Y.TOUCH_DOLLY_TRUCK)===Y.TOUCH_DOLLY_TRUCK||(this._state&Y.TOUCH_DOLLY_OFFSET)===Y.TOUCH_DOLLY_OFFSET?(this._dollyInternal(Z*ei,J,le),this._isUserControllingDolly=!0):(this._zoomInternal(Z*ei,J,le),this._isUserControllingZoom=!0)}((this._state&Y.TRUCK)===Y.TRUCK||(this._state&Y.TOUCH_TRUCK)===Y.TOUCH_TRUCK||(this._state&Y.TOUCH_DOLLY_TRUCK)===Y.TOUCH_DOLLY_TRUCK||(this._state&Y.TOUCH_ZOOM_TRUCK)===Y.TOUCH_ZOOM_TRUCK)&&(this._truckInternal(U,S,!1),this._isUserControllingTruck=!0),((this._state&Y.OFFSET)===Y.OFFSET||(this._state&Y.TOUCH_OFFSET)===Y.TOUCH_OFFSET||(this._state&Y.TOUCH_DOLLY_OFFSET)===Y.TOUCH_DOLLY_OFFSET||(this._state&Y.TOUCH_ZOOM_OFFSET)===Y.TOUCH_ZOOM_OFFSET)&&(this._truckInternal(U,S,!0),this._isUserControllingOffset=!0),this.dispatchEvent({type:"control"})},R=()=>{Ji(this._activePointers,Je),o.copy(Je),(this._activePointers.length===0||this._activePointers.length===1&&this._activePointers[0]===this._lockedPointer)&&(this._isDragging=!1),this._activePointers.length===0&&this._domElement&&(this._domElement.ownerDocument.removeEventListener("pointermove",d,{passive:!1}),this._domElement.ownerDocument.removeEventListener("mousemove",g),this._domElement.ownerDocument.removeEventListener("pointerup",y),this._domElement.ownerDocument.removeEventListener("mouseup",b),this.dispatchEvent({type:"controlend"}))};this.lockPointer=()=>{!this._enabled||!this._domElement||(this.cancel(),this._lockedPointer={pointerId:-1,clientX:0,clientY:0,deltaX:0,deltaY:0,mouseButton:null},this._activePointers.push(this._lockedPointer),this._domElement.ownerDocument.removeEventListener("pointermove",d,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",y),this._domElement.requestPointerLock(),this._domElement.ownerDocument.addEventListener("pointerlockchange",N),this._domElement.ownerDocument.addEventListener("pointerlockerror",F),this._domElement.ownerDocument.addEventListener("pointermove",d,{passive:!1}),this._domElement.ownerDocument.addEventListener("pointerup",y),k())},this.unlockPointer=()=>{this._lockedPointer!==null&&(this._disposePointer(this._lockedPointer),this._lockedPointer=null),document.exitPointerLock(),this.cancel(),this._domElement&&(this._domElement.ownerDocument.removeEventListener("pointerlockchange",N),this._domElement.ownerDocument.removeEventListener("pointerlockerror",F))};const N=()=>{this._domElement&&this._domElement.ownerDocument.pointerLockElement===this._domElement||this.unlockPointer()},F=()=>{this.unlockPointer()};this._addAllEventListeners=M=>{this._domElement=M,this._domElement.style.touchAction="none",this._domElement.style.userSelect="none",this._domElement.style.webkitUserSelect="none",this._domElement.addEventListener("pointerdown",c),Lh&&this._domElement.addEventListener("mousedown",p),this._domElement.addEventListener("pointercancel",y),this._domElement.addEventListener("wheel",A,{passive:!1}),this._domElement.addEventListener("contextmenu",E)},this._removeAllEventListeners=()=>{this._domElement&&(this._domElement.style.touchAction="",this._domElement.style.userSelect="",this._domElement.style.webkitUserSelect="",this._domElement.removeEventListener("pointerdown",c),this._domElement.removeEventListener("mousedown",p),this._domElement.removeEventListener("pointercancel",y),this._domElement.removeEventListener("wheel",A,{passive:!1}),this._domElement.removeEventListener("contextmenu",E),this._domElement.ownerDocument.removeEventListener("pointermove",d,{passive:!1}),this._domElement.ownerDocument.removeEventListener("mousemove",g),this._domElement.ownerDocument.removeEventListener("pointerup",y),this._domElement.ownerDocument.removeEventListener("mouseup",b),this._domElement.ownerDocument.removeEventListener("pointerlockchange",N),this._domElement.ownerDocument.removeEventListener("pointerlockerror",F))},this.cancel=()=>{this._state!==Y.NONE&&(this._state=Y.NONE,this._activePointers.length=0,R())},n&&this.connect(n),this.update(0)}get camera(){return this._camera}set camera(t){this._camera=t,this.updateCameraUp(),this._camera.updateProjectionMatrix(),this._updateNearPlaneCorners(),this._needsUpdate=!0}get enabled(){return this._enabled}set enabled(t){this._enabled=t,this._domElement&&(t?(this._domElement.style.touchAction="none",this._domElement.style.userSelect="none",this._domElement.style.webkitUserSelect="none"):(this.cancel(),this._domElement.style.touchAction="",this._domElement.style.userSelect="",this._domElement.style.webkitUserSelect=""))}get active(){return!this._hasRested}get currentAction(){return this._state}get distance(){return this._spherical.radius}set distance(t){this._spherical.radius===t&&this._sphericalEnd.radius===t||(this._spherical.radius=t,this._sphericalEnd.radius=t,this._needsUpdate=!0)}get azimuthAngle(){return this._spherical.theta}set azimuthAngle(t){this._spherical.theta===t&&this._sphericalEnd.theta===t||(this._spherical.theta=t,this._sphericalEnd.theta=t,this._needsUpdate=!0)}get polarAngle(){return this._spherical.phi}set polarAngle(t){this._spherical.phi===t&&this._sphericalEnd.phi===t||(this._spherical.phi=t,this._sphericalEnd.phi=t,this._needsUpdate=!0)}get boundaryEnclosesCamera(){return this._boundaryEnclosesCamera}set boundaryEnclosesCamera(t){this._boundaryEnclosesCamera=t,this._needsUpdate=!0}set interactiveArea(t){this._interactiveArea.width=Ct(t.width,0,1),this._interactiveArea.height=Ct(t.height,0,1),this._interactiveArea.x=Ct(t.x,0,1-this._interactiveArea.width),this._interactiveArea.y=Ct(t.x,0,1-this._interactiveArea.height)}addEventListener(t,n){super.addEventListener(t,n)}removeEventListener(t,n){super.removeEventListener(t,n)}rotate(t,n,i=!1){return this.rotateTo(this._sphericalEnd.theta+t,this._sphericalEnd.phi+n,i)}rotateAzimuthTo(t,n=!1){return this.rotateTo(t,this._sphericalEnd.phi,n)}rotatePolarTo(t,n=!1){return this.rotateTo(this._sphericalEnd.theta,t,n)}rotateTo(t,n,i=!1){this._isUserControllingRotate=!1;const o=Ct(t,this.minAzimuthAngle,this.maxAzimuthAngle),a=Ct(n,this.minPolarAngle,this.maxPolarAngle);this._sphericalEnd.theta=o,this._sphericalEnd.phi=a,this._sphericalEnd.makeSafe(),this._needsUpdate=!0,i||(this._spherical.theta=this._sphericalEnd.theta,this._spherical.phi=this._sphericalEnd.phi);const c=!i||Me(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&Me(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold);return this._createOnRestPromise(c)}dolly(t,n=!1){return this.dollyTo(this._sphericalEnd.radius-t,n)}dollyTo(t,n=!1){return this._isUserControllingDolly=!1,this._lastDollyDirection=Un.NONE,this._changedDolly=0,this._dollyToNoClamp(Ct(t,this.minDistance,this.maxDistance),n)}_dollyToNoClamp(t,n=!1){const i=this._sphericalEnd.radius;if(this.colliderMeshes.length>=1){const c=this._collisionTest(),p=Me(c,this._spherical.radius);if(!(i>t)&&p)return Promise.resolve();this._sphericalEnd.radius=Math.min(t,c)}else this._sphericalEnd.radius=t;this._needsUpdate=!0,n||(this._spherical.radius=this._sphericalEnd.radius);const a=!n||Me(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(a)}dollyInFixed(t,n=!1){this._targetEnd.add(this._getCameraDirection(_s).multiplyScalar(t)),n||this._target.copy(this._targetEnd);const i=!n||Me(this._target.x,this._targetEnd.x,this.restThreshold)&&Me(this._target.y,this._targetEnd.y,this.restThreshold)&&Me(this._target.z,this._targetEnd.z,this.restThreshold);return this._createOnRestPromise(i)}zoom(t,n=!1){return this.zoomTo(this._zoomEnd+t,n)}zoomTo(t,n=!1){this._isUserControllingZoom=!1,this._zoomEnd=Ct(t,this.minZoom,this.maxZoom),this._needsUpdate=!0,n||(this._zoom=this._zoomEnd);const i=!n||Me(this._zoom,this._zoomEnd,this.restThreshold);return this._changedZoom=0,this._createOnRestPromise(i)}pan(t,n,i=!1){return console.warn("`pan` has been renamed to `truck`"),this.truck(t,n,i)}truck(t,n,i=!1){this._camera.updateMatrix(),Pt.setFromMatrixColumn(this._camera.matrix,0),At.setFromMatrixColumn(this._camera.matrix,1),Pt.multiplyScalar(t),At.multiplyScalar(-n);const o=pe.copy(Pt).add(At),a=ye.copy(this._targetEnd).add(o);return this.moveTo(a.x,a.y,a.z,i)}forward(t,n=!1){pe.setFromMatrixColumn(this._camera.matrix,0),pe.crossVectors(this._camera.up,pe),pe.multiplyScalar(t);const i=ye.copy(this._targetEnd).add(pe);return this.moveTo(i.x,i.y,i.z,n)}elevate(t,n=!1){return pe.copy(this._camera.up).multiplyScalar(t),this.moveTo(this._targetEnd.x+pe.x,this._targetEnd.y+pe.y,this._targetEnd.z+pe.z,n)}moveTo(t,n,i,o=!1){this._isUserControllingTruck=!1;const a=pe.set(t,n,i).sub(this._targetEnd);this._encloseToBoundary(this._targetEnd,a,this.boundaryFriction),this._needsUpdate=!0,o||this._target.copy(this._targetEnd);const c=!o||Me(this._target.x,this._targetEnd.x,this.restThreshold)&&Me(this._target.y,this._targetEnd.y,this.restThreshold)&&Me(this._target.z,this._targetEnd.z,this.restThreshold);return this._createOnRestPromise(c)}lookInDirectionOf(t,n,i,o=!1){const p=pe.set(t,n,i).sub(this._targetEnd).normalize().multiplyScalar(-this._sphericalEnd.radius);return this.setPosition(p.x,p.y,p.z,o)}fitToBox(t,n,{cover:i=!1,paddingLeft:o=0,paddingRight:a=0,paddingBottom:c=0,paddingTop:p=0}={}){const d=[],g=t.isBox3?jn.copy(t):jn.setFromObject(t);g.isEmpty()&&(console.warn("camera-controls: fitTo() cannot be used with an empty box. Aborting"),Promise.resolve());const y=Xo(this._sphericalEnd.theta,Ko),b=Xo(this._sphericalEnd.phi,Ko);d.push(this.rotateTo(y,b,n));const C=pe.setFromSpherical(this._sphericalEnd).normalize(),A=$o.setFromUnitVectors(C,$i),E=Me(Math.abs(C.y),1);E&&A.multiply(tr.setFromAxisAngle(ti,y)),A.multiply(this._yAxisUpSpaceInverse);const k=Ho.makeEmpty();ye.copy(g.min).applyQuaternion(A),k.expandByPoint(ye),ye.copy(g.min).setX(g.max.x).applyQuaternion(A),k.expandByPoint(ye),ye.copy(g.min).setY(g.max.y).applyQuaternion(A),k.expandByPoint(ye),ye.copy(g.max).setZ(g.min.z).applyQuaternion(A),k.expandByPoint(ye),ye.copy(g.min).setZ(g.max.z).applyQuaternion(A),k.expandByPoint(ye),ye.copy(g.max).setY(g.min.y).applyQuaternion(A),k.expandByPoint(ye),ye.copy(g.max).setX(g.min.x).applyQuaternion(A),k.expandByPoint(ye),ye.copy(g.max).applyQuaternion(A),k.expandByPoint(ye),k.min.x-=o,k.min.y-=c,k.max.x+=a,k.max.y+=p,A.setFromUnitVectors($i,C),E&&A.premultiply(tr.invert()),A.premultiply(this._yAxisUpSpace);const O=k.getSize(pe),R=k.getCenter(ye).applyQuaternion(A);if(hn(this._camera)){const N=this.getDistanceToFitBox(O.x,O.y,O.z,i);d.push(this.moveTo(R.x,R.y,R.z,n)),d.push(this.dollyTo(N,n)),d.push(this.setFocalOffset(0,0,0,n))}else if(Zt(this._camera)){const N=this._camera,F=N.right-N.left,M=N.top-N.bottom,D=i?Math.max(F/O.x,M/O.y):Math.min(F/O.x,M/O.y);d.push(this.moveTo(R.x,R.y,R.z,n)),d.push(this.zoomTo(D,n)),d.push(this.setFocalOffset(0,0,0,n))}return Promise.all(d)}fitToSphere(t,n){const i=[],a=t instanceof te.Sphere?er.copy(t):bs.createBoundingSphere(t,er);if(i.push(this.moveTo(a.center.x,a.center.y,a.center.z,n)),hn(this._camera)){const c=this.getDistanceToFitSphere(a.radius);i.push(this.dollyTo(c,n))}else if(Zt(this._camera)){const c=this._camera.right-this._camera.left,p=this._camera.top-this._camera.bottom,d=2*a.radius,g=Math.min(c/d,p/d);i.push(this.zoomTo(g,n))}return i.push(this.setFocalOffset(0,0,0,n)),Promise.all(i)}setLookAt(t,n,i,o,a,c,p=!1){this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._lastDollyDirection=Un.NONE,this._changedDolly=0;const d=ye.set(o,a,c),g=pe.set(t,n,i);this._targetEnd.copy(d),this._sphericalEnd.setFromVector3(g.sub(d).applyQuaternion(this._yAxisUpSpace)),this.normalizeRotations(),this._needsUpdate=!0,p||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));const y=!p||Me(this._target.x,this._targetEnd.x,this.restThreshold)&&Me(this._target.y,this._targetEnd.y,this.restThreshold)&&Me(this._target.z,this._targetEnd.z,this.restThreshold)&&Me(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&Me(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&Me(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(y)}lerpLookAt(t,n,i,o,a,c,p,d,g,y,b,C,A,E=!1){this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._lastDollyDirection=Un.NONE,this._changedDolly=0;const k=pe.set(o,a,c),O=ye.set(t,n,i);at.setFromVector3(O.sub(k).applyQuaternion(this._yAxisUpSpace));const R=Rn.set(y,b,C),N=ye.set(p,d,g);gs.setFromVector3(N.sub(R).applyQuaternion(this._yAxisUpSpace)),this._targetEnd.copy(k.lerp(R,A));const F=gs.theta-at.theta,M=gs.phi-at.phi,D=gs.radius-at.radius;this._sphericalEnd.set(at.radius+D*A,at.phi+M*A,at.theta+F*A),this.normalizeRotations(),this._needsUpdate=!0,E||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));const U=!E||Me(this._target.x,this._targetEnd.x,this.restThreshold)&&Me(this._target.y,this._targetEnd.y,this.restThreshold)&&Me(this._target.z,this._targetEnd.z,this.restThreshold)&&Me(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&Me(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&Me(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(U)}setPosition(t,n,i,o=!1){return this.setLookAt(t,n,i,this._targetEnd.x,this._targetEnd.y,this._targetEnd.z,o)}setTarget(t,n,i,o=!1){const a=this.getPosition(pe),c=this.setLookAt(a.x,a.y,a.z,t,n,i,o);return this._sphericalEnd.phi=Ct(this._sphericalEnd.phi,this.minPolarAngle,this.maxPolarAngle),c}setFocalOffset(t,n,i,o=!1){this._isUserControllingOffset=!1,this._focalOffsetEnd.set(t,n,i),this._needsUpdate=!0,o||this._focalOffset.copy(this._focalOffsetEnd);const a=!o||Me(this._focalOffset.x,this._focalOffsetEnd.x,this.restThreshold)&&Me(this._focalOffset.y,this._focalOffsetEnd.y,this.restThreshold)&&Me(this._focalOffset.z,this._focalOffsetEnd.z,this.restThreshold);return this._createOnRestPromise(a)}setOrbitPoint(t,n,i){this._camera.updateMatrixWorld(),Pt.setFromMatrixColumn(this._camera.matrixWorldInverse,0),At.setFromMatrixColumn(this._camera.matrixWorldInverse,1),pn.setFromMatrixColumn(this._camera.matrixWorldInverse,2);const o=pe.set(t,n,i),a=o.distanceTo(this._camera.position),c=o.sub(this._camera.position);Pt.multiplyScalar(c.x),At.multiplyScalar(c.y),pn.multiplyScalar(c.z),pe.copy(Pt).add(At).add(pn),pe.z=pe.z+a,this.dollyTo(a,!1),this.setFocalOffset(-pe.x,pe.y,-pe.z,!1),this.moveTo(t,n,i,!1)}setBoundary(t){if(!t){this._boundary.min.set(-1/0,-1/0,-1/0),this._boundary.max.set(1/0,1/0,1/0),this._needsUpdate=!0;return}this._boundary.copy(t),this._boundary.clampPoint(this._targetEnd,this._targetEnd),this._needsUpdate=!0}setViewport(t,n,i,o){if(t===null){this._viewport=null;return}this._viewport=this._viewport||new te.Vector4,typeof t=="number"?this._viewport.set(t,n,i,o):this._viewport.copy(t)}getDistanceToFitBox(t,n,i,o=!1){if(Hi(this._camera,"getDistanceToFitBox"))return this._spherical.radius;const a=t/n,c=this._camera.getEffectiveFOV()*ms,p=this._camera.aspect;return((o?a>p:a<p)?n:t/p)*.5/Math.tan(c*.5)+i*.5}getDistanceToFitSphere(t){if(Hi(this._camera,"getDistanceToFitSphere"))return this._spherical.radius;const n=this._camera.getEffectiveFOV()*ms,i=Math.atan(Math.tan(n*.5)*this._camera.aspect)*2,o=1<this._camera.aspect?n:i;return t/Math.sin(o*.5)}getTarget(t,n=!0){return(t&&t.isVector3?t:new te.Vector3).copy(n?this._targetEnd:this._target)}getPosition(t,n=!0){return(t&&t.isVector3?t:new te.Vector3).setFromSpherical(n?this._sphericalEnd:this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(n?this._targetEnd:this._target)}getSpherical(t,n=!0){return(t&&t instanceof te.Spherical?t:new te.Spherical).copy(n?this._sphericalEnd:this._spherical)}getFocalOffset(t,n=!0){return(t&&t.isVector3?t:new te.Vector3).copy(n?this._focalOffsetEnd:this._focalOffset)}normalizeRotations(){this._sphericalEnd.theta=this._sphericalEnd.theta%zn,this._sphericalEnd.theta<0&&(this._sphericalEnd.theta+=zn),this._spherical.theta+=zn*Math.round((this._sphericalEnd.theta-this._spherical.theta)/zn)}reset(t=!1){if(!Me(this._camera.up.x,this._cameraUp0.x)||!Me(this._camera.up.y,this._cameraUp0.y)||!Me(this._camera.up.z,this._cameraUp0.z)){this._camera.up.copy(this._cameraUp0);const i=this.getPosition(pe);this.updateCameraUp(),this.setPosition(i.x,i.y,i.z)}const n=[this.setLookAt(this._position0.x,this._position0.y,this._position0.z,this._target0.x,this._target0.y,this._target0.z,t),this.setFocalOffset(this._focalOffset0.x,this._focalOffset0.y,this._focalOffset0.z,t),this.zoomTo(this._zoom0,t)];return Promise.all(n)}saveState(){this._cameraUp0.copy(this._camera.up),this.getTarget(this._target0),this.getPosition(this._position0),this._zoom0=this._zoom,this._focalOffset0.copy(this._focalOffset)}updateCameraUp(){this._yAxisUpSpace.setFromUnitVectors(this._camera.up,ti),this._yAxisUpSpaceInverse.copy(this._yAxisUpSpace).invert()}applyCameraUp(){const t=pe.subVectors(this._target,this._camera.position).normalize(),n=ye.crossVectors(t,this._camera.up);this._camera.up.crossVectors(n,t),this._camera.updateMatrixWorld();const i=this.getPosition(pe);this.updateCameraUp(),this.setPosition(i.x,i.y,i.z)}update(t){const n=this._sphericalEnd.theta-this._spherical.theta,i=this._sphericalEnd.phi-this._spherical.phi,o=this._sphericalEnd.radius-this._spherical.radius,a=Wo.subVectors(this._targetEnd,this._target),c=Jo.subVectors(this._focalOffsetEnd,this._focalOffset),p=this._zoomEnd-this._zoom;if(Se(n))this._thetaVelocity.value=0,this._spherical.theta=this._sphericalEnd.theta;else{const b=this._isUserControllingRotate?this.draggingSmoothTime:this.smoothTime;this._spherical.theta=$s(this._spherical.theta,this._sphericalEnd.theta,this._thetaVelocity,b,1/0,t),this._needsUpdate=!0}if(Se(i))this._phiVelocity.value=0,this._spherical.phi=this._sphericalEnd.phi;else{const b=this._isUserControllingRotate?this.draggingSmoothTime:this.smoothTime;this._spherical.phi=$s(this._spherical.phi,this._sphericalEnd.phi,this._phiVelocity,b,1/0,t),this._needsUpdate=!0}if(Se(o))this._radiusVelocity.value=0,this._spherical.radius=this._sphericalEnd.radius;else{const b=this._isUserControllingDolly?this.draggingSmoothTime:this.smoothTime;this._spherical.radius=$s(this._spherical.radius,this._sphericalEnd.radius,this._radiusVelocity,b,this.maxSpeed,t),this._needsUpdate=!0}if(Se(a.x)&&Se(a.y)&&Se(a.z))this._targetVelocity.set(0,0,0),this._target.copy(this._targetEnd);else{const b=this._isUserControllingTruck?this.draggingSmoothTime:this.smoothTime;Zo(this._target,this._targetEnd,this._targetVelocity,b,this.maxSpeed,t,this._target),this._needsUpdate=!0}if(Se(c.x)&&Se(c.y)&&Se(c.z))this._focalOffsetVelocity.set(0,0,0),this._focalOffset.copy(this._focalOffsetEnd);else{const b=this._isUserControllingOffset?this.draggingSmoothTime:this.smoothTime;Zo(this._focalOffset,this._focalOffsetEnd,this._focalOffsetVelocity,b,this.maxSpeed,t,this._focalOffset),this._needsUpdate=!0}if(Se(p))this._zoomVelocity.value=0,this._zoom=this._zoomEnd;else{const b=this._isUserControllingZoom?this.draggingSmoothTime:this.smoothTime;this._zoom=$s(this._zoom,this._zoomEnd,this._zoomVelocity,b,1/0,t)}if(this.dollyToCursor){if(hn(this._camera)&&this._changedDolly!==0){const b=this._spherical.radius-this._lastDistance,C=this._camera,A=this._getCameraDirection(_s),E=pe.copy(A).cross(C.up).normalize();E.lengthSq()===0&&(E.x=1);const k=ye.crossVectors(E,A),O=this._sphericalEnd.radius*Math.tan(C.getEffectiveFOV()*ms*.5),N=(this._sphericalEnd.radius-b-this._sphericalEnd.radius)/this._sphericalEnd.radius,F=Rn.copy(this._targetEnd).add(E.multiplyScalar(this._dollyControlCoord.x*O*C.aspect)).add(k.multiplyScalar(this._dollyControlCoord.y*O)),M=pe.copy(this._targetEnd).lerp(F,N),D=this._lastDollyDirection===Un.IN&&this._spherical.radius<=this.minDistance,U=this._lastDollyDirection===Un.OUT&&this.maxDistance<=this._spherical.radius;if(this.infinityDolly&&(D||U)){this._sphericalEnd.radius-=b,this._spherical.radius-=b;const T=ye.copy(A).multiplyScalar(-b);M.add(T)}this._boundary.clampPoint(M,M);const S=ye.subVectors(M,this._targetEnd);this._targetEnd.copy(M),this._target.add(S),this._changedDolly-=b,Se(this._changedDolly)&&(this._changedDolly=0)}else if(Zt(this._camera)&&this._changedZoom!==0){const b=this._zoom-this._lastZoom,C=this._camera,A=pe.set(this._dollyControlCoord.x,this._dollyControlCoord.y,(C.near+C.far)/(C.near-C.far)).unproject(C),E=ye.set(0,0,-1).applyQuaternion(C.quaternion),k=Rn.copy(A).add(E.multiplyScalar(-A.dot(C.up))),R=-(this._zoom-b-this._zoom)/this._zoom,N=this._getCameraDirection(_s),F=this._targetEnd.dot(N),M=pe.copy(this._targetEnd).lerp(k,R),D=M.dot(N),U=N.multiplyScalar(D-F);M.sub(U),this._boundary.clampPoint(M,M);const S=ye.subVectors(M,this._targetEnd);this._targetEnd.copy(M),this._target.add(S),this._changedZoom-=b,Se(this._changedZoom)&&(this._changedZoom=0)}}this._camera.zoom!==this._zoom&&(this._camera.zoom=this._zoom,this._camera.updateProjectionMatrix(),this._updateNearPlaneCorners(),this._needsUpdate=!0);const d=this._collisionTest();this._spherical.radius=Math.min(this._spherical.radius,d),this._spherical.makeSafe(),this._camera.position.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(this._target),this._camera.lookAt(this._target),(!Se(this._focalOffset.x)||!Se(this._focalOffset.y)||!Se(this._focalOffset.z))&&(this._camera.updateMatrixWorld(),Pt.setFromMatrixColumn(this._camera.matrix,0),At.setFromMatrixColumn(this._camera.matrix,1),pn.setFromMatrixColumn(this._camera.matrix,2),Pt.multiplyScalar(this._focalOffset.x),At.multiplyScalar(-this._focalOffset.y),pn.multiplyScalar(this._focalOffset.z),pe.copy(Pt).add(At).add(pn),this._camera.position.add(pe)),this._boundaryEnclosesCamera&&this._encloseToBoundary(this._camera.position.copy(this._target),pe.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse),1);const y=this._needsUpdate;return y&&!this._updatedLastTime?(this._hasRested=!1,this.dispatchEvent({type:"wake"}),this.dispatchEvent({type:"update"})):y?(this.dispatchEvent({type:"update"}),Se(n,this.restThreshold)&&Se(i,this.restThreshold)&&Se(o,this.restThreshold)&&Se(a.x,this.restThreshold)&&Se(a.y,this.restThreshold)&&Se(a.z,this.restThreshold)&&Se(c.x,this.restThreshold)&&Se(c.y,this.restThreshold)&&Se(c.z,this.restThreshold)&&Se(p,this.restThreshold)&&!this._hasRested&&(this._hasRested=!0,this.dispatchEvent({type:"rest"}))):!y&&this._updatedLastTime&&this.dispatchEvent({type:"sleep"}),this._lastDistance=this._spherical.radius,this._lastZoom=this._zoom,this._updatedLastTime=y,this._needsUpdate=!1,y}toJSON(){return JSON.stringify({enabled:this._enabled,minDistance:this.minDistance,maxDistance:fs(this.maxDistance),minZoom:this.minZoom,maxZoom:fs(this.maxZoom),minPolarAngle:this.minPolarAngle,maxPolarAngle:fs(this.maxPolarAngle),minAzimuthAngle:fs(this.minAzimuthAngle),maxAzimuthAngle:fs(this.maxAzimuthAngle),smoothTime:this.smoothTime,draggingSmoothTime:this.draggingSmoothTime,dollySpeed:this.dollySpeed,truckSpeed:this.truckSpeed,dollyToCursor:this.dollyToCursor,verticalDragToForward:this.verticalDragToForward,target:this._targetEnd.toArray(),position:pe.setFromSpherical(this._sphericalEnd).add(this._targetEnd).toArray(),zoom:this._zoomEnd,focalOffset:this._focalOffsetEnd.toArray(),target0:this._target0.toArray(),position0:this._position0.toArray(),zoom0:this._zoom0,focalOffset0:this._focalOffset0.toArray()})}fromJSON(t,n=!1){const i=JSON.parse(t);this.enabled=i.enabled,this.minDistance=i.minDistance,this.maxDistance=vs(i.maxDistance),this.minZoom=i.minZoom,this.maxZoom=vs(i.maxZoom),this.minPolarAngle=i.minPolarAngle,this.maxPolarAngle=vs(i.maxPolarAngle),this.minAzimuthAngle=vs(i.minAzimuthAngle),this.maxAzimuthAngle=vs(i.maxAzimuthAngle),this.smoothTime=i.smoothTime,this.draggingSmoothTime=i.draggingSmoothTime,this.dollySpeed=i.dollySpeed,this.truckSpeed=i.truckSpeed,this.dollyToCursor=i.dollyToCursor,this.verticalDragToForward=i.verticalDragToForward,this._target0.fromArray(i.target0),this._position0.fromArray(i.position0),this._zoom0=i.zoom0,this._focalOffset0.fromArray(i.focalOffset0),this.moveTo(i.target[0],i.target[1],i.target[2],n),at.setFromVector3(pe.fromArray(i.position).sub(this._targetEnd).applyQuaternion(this._yAxisUpSpace)),this.rotateTo(at.theta,at.phi,n),this.dollyTo(at.radius,n),this.zoomTo(i.zoom,n),this.setFocalOffset(i.focalOffset[0],i.focalOffset[1],i.focalOffset[2],n),this._needsUpdate=!0}connect(t){if(this._domElement){console.warn("camera-controls is already connected.");return}t.setAttribute("data-camera-controls-version",Mh),this._addAllEventListeners(t)}disconnect(){this.cancel(),this._removeAllEventListeners(),this._domElement&&(this._domElement.removeAttribute("data-camera-controls-version"),this._domElement=void 0)}dispose(){this.removeAllEventListeners(),this.disconnect()}_getTargetDirection(t){return t.setFromSpherical(this._spherical).divideScalar(this._spherical.radius).applyQuaternion(this._yAxisUpSpaceInverse)}_getCameraDirection(t){return this._getTargetDirection(t).negate()}_findPointerById(t){return this._activePointers.find(n=>n.pointerId===t)}_findPointerByMouseButton(t){return this._activePointers.find(n=>n.mouseButton===t)}_disposePointer(t){this._activePointers.splice(this._activePointers.indexOf(t),1)}_encloseToBoundary(t,n,i){const o=n.lengthSq();if(o===0)return t;const a=ye.copy(n).add(t),p=this._boundary.clampPoint(a,Rn).sub(a),d=p.lengthSq();if(d===0)return t.add(n);if(d===o)return t;if(i===0)return t.add(n).add(p);{const g=1+i*d/n.dot(p);return t.add(ye.copy(n).multiplyScalar(g)).add(p.multiplyScalar(1-i))}}_updateNearPlaneCorners(){if(hn(this._camera)){const t=this._camera,n=t.near,i=t.getEffectiveFOV()*ms,o=Math.tan(i*.5)*n,a=o*t.aspect;this._nearPlaneCorners[0].set(-a,-o,0),this._nearPlaneCorners[1].set(a,-o,0),this._nearPlaneCorners[2].set(a,o,0),this._nearPlaneCorners[3].set(-a,o,0)}else if(Zt(this._camera)){const t=this._camera,n=1/t.zoom,i=t.left*n,o=t.right*n,a=t.top*n,c=t.bottom*n;this._nearPlaneCorners[0].set(i,a,0),this._nearPlaneCorners[1].set(o,a,0),this._nearPlaneCorners[2].set(o,c,0),this._nearPlaneCorners[3].set(i,c,0)}}_collisionTest(){let t=1/0;if(!(this.colliderMeshes.length>=1)||Hi(this._camera,"_collisionTest"))return t;const i=this._getTargetDirection(_s);nr.lookAt(Qo,i,this._camera.up);for(let o=0;o<4;o++){const a=ye.copy(this._nearPlaneCorners[o]);a.applyMatrix4(nr);const c=Rn.addVectors(this._target,a);ni.set(c,i),ni.far=this._spherical.radius+1;const p=ni.intersectObjects(this.colliderMeshes);p.length!==0&&p[0].distance<t&&(t=p[0].distance)}return t}_getClientRect(t){if(!this._domElement)return;const n=this._domElement.getBoundingClientRect();return t.x=n.left,t.y=n.top,this._viewport?(t.x+=this._viewport.x,t.y+=n.height-this._viewport.w-this._viewport.y,t.width=this._viewport.z,t.height=this._viewport.w):(t.width=n.width,t.height=n.height),t}_createOnRestPromise(t){return t?Promise.resolve():(this._hasRested=!1,this.dispatchEvent({type:"transitionstart"}),new Promise(n=>{const i=()=>{this.removeEventListener("rest",i),n()};this.addEventListener("rest",i)}))}_addAllEventListeners(t){}_removeAllEventListeners(){}get dampingFactor(){return console.warn(".dampingFactor has been deprecated. use smoothTime (in seconds) instead."),0}set dampingFactor(t){console.warn(".dampingFactor has been deprecated. use smoothTime (in seconds) instead.")}get draggingDampingFactor(){return console.warn(".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead."),0}set draggingDampingFactor(t){console.warn(".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead.")}static createBoundingSphere(t,n=new te.Sphere){const i=n,o=i.center;jn.makeEmpty(),t.traverseVisible(c=>{c.isMesh&&jn.expandByObject(c)}),jn.getCenter(o);let a=0;return t.traverseVisible(c=>{if(!c.isMesh)return;const p=c,d=p.geometry.clone();d.applyMatrix4(p.matrixWorld);const y=d.attributes.position;for(let b=0,C=y.count;b<C;b++)pe.fromBufferAttribute(y,b),a=Math.max(a,o.distanceToSquared(pe))}),i.radius=Math.sqrt(a),i}}const Sh=["min-polar-angle","max-polar-angle","min-azimuth-angle","max-azimuth-angle","min-distance","max-distance","infinity-dolly","min-zoom","max-zoom","smooth-time","dragging-smooth-time","max-speed","azimuth-rotate-speed","polar-rotate-speed","dolly-speed","dolly-drag-inverted","truck-speed","dolly-to-cursor","drag-to-offset","vertical-drag-to-forward","boundary-friction","rest-threshold","collider-meshes","args"],Th=_.defineComponent({__name:"CameraControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{},minPolarAngle:{default:0},maxPolarAngle:{default:Math.PI},minAzimuthAngle:{default:-1/0},maxAzimuthAngle:{default:1/0},minDistance:{default:Number.EPSILON},maxDistance:{default:1/0},infinityDolly:{type:Boolean,default:!1},minZoom:{default:.01},maxZoom:{default:1/0},smoothTime:{default:.25},draggingSmoothTime:{default:.125},maxSpeed:{default:1/0},azimuthRotateSpeed:{default:1},polarRotateSpeed:{default:1},dollySpeed:{default:1},dollyDragInverted:{type:Boolean,default:!1},truckSpeed:{default:2},dollyToCursor:{type:Boolean,default:!1},dragToOffset:{type:Boolean,default:!1},verticalDragToForward:{type:Boolean,default:!1},boundaryFriction:{default:0},restThreshold:{default:.01},colliderMeshes:{default:()=>[]},mouseButtons:{},touches:{}},emits:["change","start","end"],setup(v,{expose:t,emit:n}){const i=v,{makeDefault:o,minPolarAngle:a,maxPolarAngle:c,minAzimuthAngle:p,maxAzimuthAngle:d,minDistance:g,maxDistance:y,infinityDolly:b,minZoom:C,maxZoom:A,smoothTime:E,draggingSmoothTime:k,maxSpeed:O,azimuthRotateSpeed:R,polarRotateSpeed:N,dollySpeed:F,dollyDragInverted:M,truckSpeed:D,dollyToCursor:U,dragToOffset:S,verticalDragToForward:T,boundaryFriction:j,restThreshold:X,colliderMeshes:Z}=_.toRefs(i),J={Box3:m.Box3,MathUtils:{clamp:m.MathUtils.clamp},Matrix4:m.Matrix4,Quaternion:m.Quaternion,Raycaster:m.Raycaster,Sphere:m.Sphere,Spherical:m.Spherical,Vector2:m.Vector2,Vector3:m.Vector3,Vector4:m.Vector4};bs.install({THREE:J});const{state:le,extend:he,setState:oe}=Ae.useTresContext(),re=_.ref(null);he({CameraControls:bs}),_.watch(re,Ce=>{ne(),Ce&&o.value?oe("controls",Ce):oe("controls",null)});function ne(){De(re.value,"update",()=>n("change",re.value)),De(re.value,"controlend",()=>n("end",re.value)),De(re.value,"controlstart",()=>n("start",re.value))}const{onLoop:H}=Ae.useRenderLoop();return H(({delta:Ce})=>{var ge,de;(ge=re.value)!=null&&ge.enabled&&((de=re.value)==null||de.update(Ce))}),_.onUnmounted(()=>{re.value&&re.value.disconnect()}),t({value:re}),(Ce,ge)=>{var de;return _.unref(le).camera&&_.unref(le).renderer?(_.openBlock(),_.createElementBlock("TresCameraControls",{key:0,ref_key:"controlsRef",ref:re,"min-polar-angle":_.unref(a),"max-polar-angle":_.unref(c),"min-azimuth-angle":_.unref(p),"max-azimuth-angle":_.unref(d),"min-distance":_.unref(g),"max-distance":_.unref(y),"infinity-dolly":_.unref(b),"min-zoom":_.unref(C),"max-zoom":_.unref(A),"smooth-time":_.unref(E),"dragging-smooth-time":_.unref(k),"max-speed":_.unref(O),"azimuth-rotate-speed":_.unref(R),"polar-rotate-speed":_.unref(N),"dolly-speed":_.unref(F),"dolly-drag-inverted":_.unref(M),"truck-speed":_.unref(D),"dolly-to-cursor":_.unref(U),"drag-to-offset":_.unref(S),"vertical-drag-to-forward":_.unref(T),"boundary-friction":_.unref(j),"rest-threshold":_.unref(X),"collider-meshes":_.unref(Z),args:[_.unref(le).camera||Ce.camera,((de=_.unref(le).renderer)==null?void 0:de.domElement)||Ce.domElement]},null,8,Sh)):_.createCommentVNode("",!0)}}});class Eh extends m.MeshStandardMaterial{constructor(n={}){super(n);ao(this,"_time");ao(this,"_factor");this.setValues(n),this._time={value:0},this._factor={value:1}}onBeforeCompile(n){n.uniforms||(n.uniforms={}),n.uniforms.time=this._time,n.uniforms.factor=this._factor,n.vertexShader=`
82
87
  uniform float time;
83
88
  uniform float factor;
84
- ${i.vertexShader}
85
- `,i.vertexShader=i.vertexShader.replace("#include <begin_vertex>",`float theta = sin( time + position.y ) / 2.0 * factor;
89
+ ${n.vertexShader}
90
+ `,n.vertexShader=n.vertexShader.replace("#include <begin_vertex>",`float theta = sin( time + position.y ) / 2.0 * factor;
86
91
  float c = cos( theta );
87
92
  float s = sin( theta );
88
93
  mat3 m = mat3( c, 0, s, 0, 1, 0, -s, 0, c );
89
94
  vec3 transformed = vec3( position ) * m;
90
- vNormal = vNormal * m;`)}get time(){return this._time.value}set time(i){this._time.value=i}get factor(){return this._factor.value}set factor(i){this._factor.value=i}}const Mc=["factor"],Ac=x.defineComponent({__name:"index",props:{speed:{default:1},factor:{default:1}},setup(v){const n=v,i=x.shallowRef(),{extend:s}=He();s({MeshWobbleMaterial:kc});const{onLoop:o}=Ee.useRenderLoop();return o(({elapsed:l})=>{i.value&&(i.value.time=l*(n==null?void 0:n.speed))}),(l,p)=>(x.openBlock(),x.createElementBlock("TresMeshWobbleMaterial",x.mergeProps({ref_key:"materialRef",ref:i,factor:l.factor},l.$attrs),null,16,Mc))}}),Sc=["args"],Lc=["color"],Vc=x.defineComponent({__name:"Box",props:{args:{default:()=>[1,1,1]},color:{default:"0xffffff"}},setup(v,{expose:n}){const i=x.shallowRef();return n({value:i}),(s,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"boxRef",ref:i},s.$attrs),[x.createElementVNode("TresBoxGeometry",{args:s.args},null,8,Sc),x.renderSlot(s.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,Lc)])],16))}}),Dc=["args"],Ic=["color"],Tc=x.defineComponent({__name:"Circle",props:{args:{default:()=>[1,32,0,Math.PI*2]},color:{default:"0xffffff"}},setup(v,{expose:n}){const i=x.shallowRef();return n({value:i}),(s,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"circleRef",ref:i},s.$attrs),[x.createElementVNode("TresCircleGeometry",{args:s.args},null,8,Dc),x.renderSlot(s.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,Ic)])],16))}}),Ec=["args"],Oc=["color"],Bc=x.defineComponent({__name:"Cone",props:{args:{default:()=>[1,1,12,!1,0,Math.PI*2]},color:{default:"0xffffff"}},setup(v,{expose:n}){const i=x.shallowRef();return n({value:i}),(s,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"coneRef",ref:i},s.$attrs),[x.createElementVNode("TresConeGeometry",{args:s.args},null,8,Ec),x.renderSlot(s.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,Oc)])],16))}}),Nc=["args"],Fc=["color"],zc=x.defineComponent({__name:"Dodecahedron",props:{args:{default:()=>[1,0]},color:{default:"0xffffff"}},setup(v,{expose:n}){const i=x.shallowRef();return n({value:i}),(s,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"dodecahedronRef",ref:i},s.$attrs),[x.createElementVNode("TresDodecahedronGeometry",{args:s.args},null,8,Nc),x.renderSlot(s.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,Fc)])],16))}}),jc=["args"],Uc=["color"],Rc=x.defineComponent({__name:"Icosahedron",props:{args:{default:()=>[1,0]},color:{default:"0xffffff"}},setup(v,{expose:n}){const i=x.shallowRef();return n({value:i}),(s,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"icosahedronRef",ref:i},s.$attrs),[x.createElementVNode("TresIcosahedronGeometry",{args:s.args},null,8,jc),x.renderSlot(s.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,Uc)])],16))}}),Gc=["args"],Kc=["color"],$c=x.defineComponent({__name:"Octahedron",props:{args:{default:()=>[1,0]},color:{default:"0xffffff"}},setup(v,{expose:n}){const i=x.shallowRef();return n({value:i}),(s,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"octahedronRef",ref:i},s.$attrs),[x.createElementVNode("TresOctahedronGeometry",{args:s.args},null,8,Gc),x.renderSlot(s.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,Kc)])],16))}}),Xc=["rotation"],Yc=["args"],qc=["color"],Qc=x.defineComponent({__name:"Plane",props:{args:{default:()=>[1,1]},color:{default:"0xffffff"}},setup(v,{expose:n}){const i=x.shallowRef();return n({value:i}),(s,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"planeRef",ref:i,rotation:[-Math.PI/2,0,0]},s.$attrs),[x.createElementVNode("TresPlaneGeometry",{args:s.args},null,8,Yc),x.renderSlot(s.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,qc)])],16,Xc))}}),Zc=["args"],Wc=["color"],Jc=x.defineComponent({__name:"Ring",props:{args:{default:()=>[.5,1,32]},color:{default:"0xffffff"}},setup(v,{expose:n}){const i=x.shallowRef();return n({value:i}),(s,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"ringRef",ref:i},s.$attrs),[x.createElementVNode("TresRingGeometry",{args:s.args},null,8,Zc),x.renderSlot(s.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,Wc)])],16))}}),Hc=["args"],ep=["color"],tp=x.defineComponent({__name:"Sphere",props:{args:{default:()=>[2,32,16]},color:{default:"0xffffff"}},setup(v,{expose:n}){const i=x.shallowRef();return n({value:i}),(s,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"sphereRef",ref:i},s.$attrs),[x.createElementVNode("TresSphereGeometry",{args:s.args},null,8,Hc),x.renderSlot(s.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,ep)])],16))}}),np=["rotation"],ip=["args"],sp=["color"],rp=x.defineComponent({__name:"Tetrahedron",props:{args:{default:()=>[1,0]},color:{default:"0xffffff"}},setup(v,{expose:n}){const i=x.shallowRef();return n({value:i}),(s,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"tetrahedronRef",ref:i,rotation:[-Math.PI/2,0,0]},s.$attrs),[x.createElementVNode("TresTetrahedronGeometry",{args:s.args},null,8,ip),x.renderSlot(s.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,sp)])],16,np))}}),op=["args"],ap=["color"],lp=x.defineComponent({__name:"Torus",props:{args:{default:()=>[1,1,16,80]},color:{default:"0xffffff"}},setup(v,{expose:n}){const i=x.shallowRef();return n({value:i}),(s,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"torusRef",ref:i},s.$attrs),[x.createElementVNode("TresTorusGeometry",{args:s.args},null,8,op),x.renderSlot(s.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,ap)])],16))}}),cp=["args"],pp=["color"],hp=x.defineComponent({__name:"TorusKnot",props:{args:{default:()=>[1,.4,64,8]},color:{default:"0xffffff"}},setup(v,{expose:n}){const i=x.shallowRef();return n({value:i}),(s,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"torusKnotRef",ref:i},s.$attrs),[x.createElementVNode("TresTorusKnotGeometry",{args:s.args},null,8,cp),x.renderSlot(s.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,pp)])],16))}}),up=["args"],dp=["color"],mp=x.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(v,{expose:n}){const i=x.shallowRef();return n({value:i}),(s,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"tubeRef",ref:i},s.$attrs),[x.createElementVNode("TresTubeGeometry",{args:s.args},null,8,up),x.renderSlot(s.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:s.color},null,8,dp)])],16))}});var xs={exports:{}};/*! Tweakpane 3.1.9 (c) 2016 cocopon, licensed under the MIT license. */(function(v,n){(function(i,s){s(n)})(Hr,function(i){class s{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 p extends l{constructor(e,t,c,g){super(e),this.value=t,this.presetKey=c,this.last=g??!0}}class u 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 _(r){return r}function y(r){return r==null}function C(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(r[t]!==e[t])return!1;return!0}function M(r,e){let t=r;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 E={alreadydisposed:()=>"View has been already disposed",invalidparams:r=>`Invalid parameters for '${r.name}'`,nomatchingcontroller:r=>`No matching controller for '${r.key}'`,nomatchingview:r=>`No matching view for '${JSON.stringify(r.params)}'`,notbindable:()=>"Value is not bindable",propertynotfound:r=>`Property '${r.name}' not found`,shouldneverhappen:()=>"This error should never happen"};class V{static alreadyDisposed(){return new V({type:"alreadydisposed"})}static notBindable(){return new V({type:"notbindable"})}static propertyNotFound(e){return new V({type:"propertynotfound",context:{name:e}})}static shouldNeverHappen(){return new V({type:"shouldneverhappen"})}constructor(e){var t;this.message=(t=E[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 I{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(!I.isBindable(c))throw V.notBindable();if(!(e in c))throw V.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 T(r){return(t,c)=>[N,"-",r,"v",t?`_${t}`:"",c?`-${c}`:""].join("")}function Q(r,e){return t=>e(r(t))}function $(r){return r.rawValue}function U(r,e){r.emitter.on("change",Q($,e)),e(r.rawValue)}function j(r,e,t){U(r.value(e),t)}function X(r,e,t){t?r.classList.add(e):r.classList.remove(e)}function Y(r,e){return t=>{X(r,e,t)}}function Z(r,e){U(r,t=>{e.textContent=t??""})}const ue=T("btn");class we{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 he{constructor(e,t){this.emitter=new z,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new we(e,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class fe{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 de{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(r,e){const t=e==null?void 0:e.constraint,c=e==null?void 0:e.equals;return!t&&!c?new de(r):new fe(r,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 Pe(r,e){const c=Object.keys(e).reduce((g,k)=>{if(g===void 0)return;const S=e[k],R=S(r[k]);return R.succeeded?Object.assign(Object.assign({},g),{[k]:R.value}):void 0},{});return c}function ve(r,e){return r.reduce((t,c)=>{if(t===void 0)return;const g=e(c);if(!(!g.succeeded||g.value===void 0))return[...t,g.value]},[])}function ce(r){return r===null?!1:typeof r=="object"}function se(r){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=r(t);return c!==void 0?{succeeded:!0,value:c}:{succeeded:!1,value:void 0}}}function ge(r){return{custom:e=>se(e)(r),boolean:se(e=>typeof e=="boolean"?e:void 0)(r),number:se(e=>typeof e=="number"?e:void 0)(r),string:se(e=>typeof e=="string"?e:void 0)(r),function:se(e=>typeof e=="function"?e:void 0)(r),constant:e=>se(t=>t===e?e:void 0)(r),raw:se(e=>e)(r),object:e=>se(t=>{if(ce(t))return Pe(t,e)})(r),array:e=>se(t=>{if(Array.isArray(t))return ve(t,e)})(r)}}const L={optional:ge(!0),required:ge(!1)};function pe(r,e){const t=L.required.object(e)(r);return t.succeeded?t.value:void 0}function De(r){console.warn([`Missing '${r.key}' of ${r.target} in ${r.place}.`,"Please rebuild plugins with the latest core package."].join(" "))}function Be(r){return r&&r.parentElement&&r.parentElement.removeChild(r),null}class ye{constructor(e){this.value_=e}static create(e){return[new ye(e),(t,c)=>{e.setRawValue(t,c)}]}get emitter(){return this.value_.emitter}get rawValue(){return this.value_.rawValue}}const et=T("");function xn(r,e){return Y(r,et(void 0,e))}class Ke 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_]=ye.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 Ke(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_,xn(e,"disabled")),j(this,"hidden",xn(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 Cn(){return["veryfirst","first","last","verylast"]}const Qt=T(""),lt={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class gt{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",()=>{Cn().forEach(c=>{t.classList.remove(Qt(void 0,lt[c]))}),this.blade.get("positions").forEach(c=>{t.classList.add(Qt(void 0,lt[c]))})}),this.viewProps.handleDispose(()=>{Be(t)})}get parent(){return this.parent_}set parent(e){if(this.parent_=e,!("parent"in this.viewProps.valMap_)){De({key:"parent",target:Ke.name,place:"BladeController.parent"});return}this.viewProps.set("parent",this.parent_?this.parent_.viewProps:null)}}const Fe="http://www.w3.org/2000/svg";function tt(r){r.offsetHeight}function Zt(r,e){const t=r.style.transition;r.style.transition="none",e(),r.style.transition=t}function ct(r){return r.ontouchstart!==void 0}function Pn(){return globalThis}function qn(){return Pn().document}function kn(r){const e=r.ownerDocument.defaultView;return e&&"document"in e?r.getContext("2d",{willReadFrequently:!0}):null}const Mn={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 dt(r,e){const t=r.createElementNS(Fe,"svg");return t.innerHTML=Mn[e],t}function wt(r,e,t){r.insertBefore(e,r.children[t])}function An(r){r.parentElement&&r.parentElement.removeChild(r)}function Wt(r){for(;r.children.length>0;)r.removeChild(r.children[0])}function Sn(r){for(;r.childNodes.length>0;)r.removeChild(r.childNodes[0])}function mt(r){return r.relatedTarget?r.relatedTarget:"explicitOriginalTarget"in r?r.explicitOriginalTarget:null}const pt=T("lbl");function _t(r,e){const t=r.createDocumentFragment();return e.split(`
91
- `).map(g=>r.createTextNode(g)).forEach((g,k)=>{k>0&&t.appendChild(r.createElement("br")),t.appendChild(g)}),t}class D{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(pt()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(pt("l")),j(t.props,"label",k=>{y(k)?this.element.classList.add(pt(void 0,"nol")):(this.element.classList.remove(pt(void 0,"nol")),Sn(c),c.appendChild(_t(e,k)))}),this.element.appendChild(c),this.labelElement=c;const g=e.createElement("div");g.classList.add(pt("v")),this.element.appendChild(g),this.valueElement=g}}class K extends gt{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 ee={id:"button",type:"blade",accept(r){const e=L,t=pe(r,{title:e.required.string,view:e.required.constant("button"),label:e.optional.string});return t?{params:t}:null},controller(r){return new K(r.document,{blade:r.blade,props:q.fromObject({label:r.params.label}),valueController:new he(r.document,{props:q.fromObject({title:r.params.title}),viewProps:r.viewProps})})},api(r){return!(r.controller instanceof K)||!(r.controller.valueController instanceof he)?null:new F(r.controller)}};class re extends gt{constructor(e){super(e),this.value=e.value}}function Ce(){return new q({positions:te([],{equals:C})})}class Te 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 Te(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 Tt(r,e){let t=0;return Zt(e,()=>{r.set("expandedHeight",null),r.set("temporaryExpanded",!0),tt(e),t=e.clientHeight,r.set("temporaryExpanded",null),tt(e)}),t}function Jt(r,e){e.style.height=r.styleHeight}function ze(r,e){r.value("expanded").emitter.on("beforechange",()=>{if(r.set("completed",!1),y(r.get("expandedHeight"))){const t=Tt(r,e);t>0&&r.set("expandedHeight",t)}r.set("shouldFixHeight",!0),tt(e)}),r.emitter.on("change",()=>{Jt(r,e)}),Jt(r,e),e.addEventListener("transitionend",t=>{t.propertyName==="height"&&r.cleanUpTransition()})}class je extends o{constructor(e,t){super(e),this.rackApi_=t}}function Ps(r,e){return r.addBlade(Object.assign(Object.assign({},e),{view:"button"}))}function ks(r,e){return r.addBlade(Object.assign(Object.assign({},e),{view:"folder"}))}function Ms(r,e){const t=e??{};return r.addBlade(Object.assign(Object.assign({},t),{view:"separator"}))}function Qn(r,e){return r.addBlade(Object.assign(Object.assign({},e),{view:"tab"}))}class yt{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 V.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 Zn 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 p(this,t,this.controller_.binding.target.presetKey,e.options.last)})}}class Ne extends K{constructor(e,t){super(e,t),this.binding=t.binding}}class Wn 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 u(this,t,this.controller_.binding.target.presetKey)})}}class nt 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 Si(r){return r instanceof Ln?r.apiSet_:r instanceof je?r.rackApi_.apiSet_:null}function Ht(r,e){const t=r.find(c=>c.controller_===e);if(!t)throw V.shouldNeverHappen();return t}function Li(r,e,t){if(!I.isBindable(r))throw V.notBindable();return new I(r,e,t)}class Ln 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 yt(Si),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=>Ht(this.apiSet_,e))}addInput(e,t,c){const g=c??{},k=this.controller_.view.element.ownerDocument,S=this.pool_.createInput(k,Li(e,t,g.presetKey),g),R=new Zn(S);return this.add(R,g.index)}addMonitor(e,t,c){const g=c??{},k=this.controller_.view.element.ownerDocument,S=this.pool_.createMonitor(k,Li(e,t),g),R=new Wn(S);return this.add(R,g.index)}addFolder(e){return ks(this,e)}addButton(e){return Ps(this,e)}addSeparator(e){return Ms(this,e)}addTab(e){return Qn(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=Ht(this.apiSet_,e.bladeController);this.apiSet_.remove(t)}}onRackInputChange_(e){const t=e.bladeController;if(t instanceof Ne){const c=Ht(this.apiSet_,t),g=t.binding;this.emitter_.emit("change",{event:new p(c,g.target.read(),g.target.presetKey,e.options.last)})}else if(t instanceof re){const c=Ht(this.apiSet_,t);this.emitter_.emit("change",{event:new p(c,t.value.rawValue,void 0,e.options.last)})}}onRackMonitorUpdate_(e){if(!(e.bladeController instanceof nt))throw V.shouldNeverHappen();const t=Ht(this.apiSet_,e.bladeController),c=e.bladeController.binding;this.emitter_.emit("update",{event:new u(t,c.target.read(),c.target.presetKey)})}}class Jn extends je{constructor(e,t){super(e,new Ln(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 Hn extends gt{constructor(e){super({blade:e.blade,view:e.view,viewProps:e.rackController.viewProps}),this.rackController=e.rackController}}class As{constructor(e,t){const c=T(t.viewName);this.element=e.createElement("div"),this.element.classList.add(c()),t.viewProps.bindClassModifiers(this.element)}}function Ss(r,e){for(let t=0;t<r.length;t++){const c=r[t];if(c instanceof Ne&&c.binding===e)return c}return null}function Ls(r,e){for(let t=0;t<r.length;t++){const c=r[t];if(c instanceof nt&&c.binding===e)return c}return null}function Vs(r,e){for(let t=0;t<r.length;t++){const c=r[t];if(c instanceof re&&c.value===e)return c}return null}function ei(r){return r instanceof en?r.rack:r instanceof Hn?r.rackController.rack:null}function Ds(r){const e=ei(r);return e?e.bcSet_:null}class Is{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 yt(Ds),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,De({key:"parent",target:"BladeController",place:"BladeRack.add"})),this.bcSet_.add(e,t)}remove(e){M(e,"parent")?e.parent=null:(e.parent_=null,De({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 Ne)c.binding.emitter.on("change",this.onChildInputChange_);else if(c instanceof nt)c.binding.emitter.on("update",this.onChildMonitorUpdate_);else if(c instanceof re)c.value.emitter.on("change",this.onChildValueChange_);else{const g=ei(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 Ne)c.binding.emitter.off("change",this.onChildInputChange_);else if(c instanceof nt)c.binding.emitter.off("update",this.onChildMonitorUpdate_);else if(c instanceof re)c.value.emitter.off("change",this.onChildValueChange_);else{const g=ei(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=Ss(this.find(Ne),e.sender);if(!t)throw V.alreadyDisposed();this.emitter.emit("inputchange",{bladeController:t,options:e.options,sender:this})}onChildMonitorUpdate_(e){const t=Ls(this.find(nt),e.sender);if(!t)throw V.alreadyDisposed();this.emitter.emit("monitorupdate",{bladeController:t,sender:this})}onChildValueChange_(e){const t=Vs(this.find(re),e.sender);if(!t)throw V.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 en extends gt{constructor(e,t){super(Object.assign(Object.assign({},t),{view:new As(e,{viewName:"brk",viewProps:t.viewProps})})),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this);const c=new Is({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&&wt(this.view.element,e.bladeController.view.element,e.index)}onRackRemove_(e){e.isRoot&&An(e.bladeController.view.element)}}const Vi=T("cnt");class Ts{constructor(e,t){var c;this.className_=T((c=t.viewName)!==null&&c!==void 0?c:"fld"),this.element=e.createElement("div"),this.element.classList.add(this.className_(),Vi()),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",H=>{y(H)?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 S=e.createElement("div");S.classList.add(this.className_("t")),Z(t.props.value("title"),S),this.buttonElement.appendChild(S),this.titleElement=S;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 Vn extends Hn{constructor(e,t){var c;const g=Te.create((c=t.expanded)!==null&&c!==void 0?c:!0),k=new en(e,{blade:t.blade,root:t.root,viewProps:t.viewProps});super(Object.assign(Object.assign({},t),{rackController:k,view:new Ts(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,ze(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 Es={id:"folder",type:"blade",accept(r){const e=L,t=pe(r,{title:e.required.string,view:e.required.constant("folder"),expanded:e.optional.boolean});return t?{params:t}:null},controller(r){return new Vn(r.document,{blade:r.blade,expanded:r.params.expanded,props:q.fromObject({title:r.params.title}),viewProps:r.viewProps})},api(r){return r.controller instanceof Vn?new Jn(r.controller,r.pool):null}};class Et extends re{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 Di extends o{}const ti=T("spr");class Os{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(ti()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("hr");c.classList.add(ti("r")),this.element.appendChild(c)}}class tn extends gt{constructor(e,t){super(Object.assign(Object.assign({},t),{view:new Os(e,{viewProps:t.viewProps})}))}}const Bs={id:"separator",type:"blade",accept(r){const t=pe(r,{view:L.required.constant("separator")});return t?{params:t}:null},controller(r){return new tn(r.document,{blade:r.blade,viewProps:r.viewProps})},api(r){return r.controller instanceof tn?new Di(r.controller):null}},Se=T("tbi");class Ns{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 Dn{constructor(e,t){this.emitter=new z,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new Ns(e,{props:t.props,viewProps:t.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class Ii{constructor(e,t){this.onItemClick_=this.onItemClick_.bind(this),this.ic_=new Dn(e,{props:t.itemProps,viewProps:Ke.create()}),this.ic_.emitter.on("click",this.onItemClick_),this.cc_=new en(e,{blade:Ce(),viewProps:Ke.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 ni{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 Ti extends je{constructor(e,t){super(e,new Ln(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 V.shouldNeverHappen();return t})}addPage(e){const t=this.controller_.view.element.ownerDocument,c=new Ii(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 V.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 V.shouldNeverHappen();const c=new ni(e,t);this.pageApiMap_.set(e,c)}onPageAdd_(e){this.setUpPageApi_(e.item)}onPageRemove_(e){if(!this.pageApiMap_.get(e.item))throw V.shouldNeverHappen();this.pageApiMap_.delete(e.item)}onSelect_(e){this.emitter_.emit("select",{event:new w(this,e.rawValue)})}}const Ei=-1;class Fs{constructor(){this.onItemSelectedChange_=this.onItemSelectedChange_.bind(this),this.empty=te(!0),this.selectedIndex=te(Ei),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=Ei,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 Ot=T("tab");class Bt{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Ot(),Vi()),t.viewProps.bindClassModifiers(this.element),U(t.empty,Y(this.element,Ot(void 0,"nop")));const c=e.createElement("div");c.classList.add(Ot("t")),this.element.appendChild(c),this.itemsElement=c;const g=e.createElement("div");g.classList.add(Ot("i")),this.element.appendChild(g);const k=t.contentsElement;k.classList.add(Ot("c")),this.element.appendChild(k),this.contentsElement=k}}class nn extends Hn{constructor(e,t){const c=new en(e,{blade:t.blade,viewProps:t.viewProps}),g=new Fs;super({blade:t.blade,rackController:c,view:new Bt(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 yt(()=>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;wt(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;An(t.itemController.view.element),t.itemController.viewProps.set("parent",null),this.rackController.rack.remove(t.contentController),this.tab.remove(t.props.value("selected"))}}const ii={id:"tab",type:"blade",accept(r){const e=L,t=pe(r,{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(r){const e=new nn(r.document,{blade:r.blade,viewProps:r.viewProps});return r.params.pages.forEach(t=>{const c=new Ii(r.document,{itemProps:q.fromObject({selected:!1,title:t.title}),props:q.fromObject({selected:!1})});e.add(c)}),e},api(r){return r.controller instanceof nn?new Ti(r.controller,r.pool):null}};function zs(r,e){const t=r.accept(e.params);if(!t)return null;const c=L.optional.boolean(e.params.disabled).value,g=L.optional.boolean(e.params.hidden).value;return r.controller({blade:Ce(),document:e.document,params:Object.assign(Object.assign({},t.params),{disabled:c,hidden:g}),viewProps:Ke.create({disabled:c,hidden:g})})}class Oi{constructor(){this.disabled=!1,this.emitter=new z}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class si{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 In{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 ke(r,e){for(;r.length<e;)r.push(void 0)}function Bi(r){const e=[];return ke(e,r),te(e)}function Nt(r){const e=r.indexOf(void 0);return e<0?r:r.slice(0,e)}function $e(r,e){const t=[...Nt(r),e];return t.length>r.length?t.splice(0,t.length-r.length):ke(t,r.length),t}class js{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=$e(t,c),this.emitter.emit("update",{rawValue:c,sender:this})}onTick_(e){this.read()}}class sn{constructor(e){this.constraints=e}constrain(e){return this.constraints.reduce((t,c)=>c.constrain(t),e)}}function Qe(r,e){if(r instanceof e)return r;if(r instanceof sn){const t=r.constraints.reduce((c,g)=>c||(g instanceof e?g:null),null);if(t)return t}return null}class Ft{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 rn{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 ri{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 Tn{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 zt=T("lst");class Ni{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.props_=t.props,this.element=e.createElement("div"),this.element.classList.add(zt()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("select");c.classList.add(zt("s")),j(this.props_,"options",k=>{Wt(c),k.forEach((S,R)=>{const W=e.createElement("option");W.dataset.index=String(R),W.textContent=S.text,W.value=String(S.value),c.appendChild(W)})}),t.viewProps.bindDisabled(c),this.element.appendChild(c),this.selectElement=c;const g=e.createElement("div");g.classList.add(zt("m")),g.appendChild(dt(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 on{constructor(e,t){this.onSelectChange_=this.onSelectChange_.bind(this),this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.view=new Ni(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 Fi=T("pop");class Us{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Fi()),t.viewProps.bindClassModifiers(this.element),U(t.shows,Y(this.element,Fi(void 0,"v")))}}class zi{constructor(e,t){this.shows=te(!1),this.viewProps=t.viewProps,this.view=new Us(e,{shows:this.shows,viewProps:this.viewProps})}}const ji=T("txt");class Rs{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(ji()),t.viewProps.bindClassModifiers(this.element),this.props_=t.props,this.props_.emitter.on("change",this.onChange_);const c=e.createElement("input");c.classList.add(ji("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 En{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 Rs(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 Gs(r){return String(r)}function Ui(r){return r==="false"?!1:!!r}function Ri(r){return Gs(r)}class Ks{constructor(e){this.text=e}evaluate(){return Number(this.text)}toString(){return this.text}}const $s={"**":(r,e)=>Math.pow(r,e),"*":(r,e)=>r*e,"/":(r,e)=>r/e,"%":(r,e)=>r%e,"+":(r,e)=>r+e,"-":(r,e)=>r-e,"<<":(r,e)=>r<<e,">>":(r,e)=>r>>e,">>>":(r,e)=>r>>>e,"&":(r,e)=>r&e,"^":(r,e)=>r^e,"|":(r,e)=>r|e};class Xs{constructor(e,t,c){this.left=t,this.operator=e,this.right=c}evaluate(){const e=$s[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 Gi={"+":r=>r,"-":r=>-r,"~":r=>~r};class Ys{constructor(e,t){this.operator=e,this.expression=t}evaluate(){const e=Gi[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 oi(r){return(e,t)=>{for(let c=0;c<r.length;c++){const g=r[c](e,t);if(g!=="")return g}return""}}function xt(r,e){var t;const c=r.substr(e).match(/^\s+/);return(t=c&&c[0])!==null&&t!==void 0?t:""}function qs(r,e){const t=r.substr(e,1);return t.match(/^[1-9]$/)?t:""}function an(r,e){var t;const c=r.substr(e).match(/^[0-9]+/);return(t=c&&c[0])!==null&&t!==void 0?t:""}function Qs(r,e){const t=an(r,e);if(t!=="")return t;const c=r.substr(e,1);if(e+=1,c!=="-"&&c!=="+")return"";const g=an(r,e);return g===""?"":c+g}function it(r,e){const t=r.substr(e,1);if(e+=1,t.toLowerCase()!=="e")return"";const c=Qs(r,e);return c===""?"":t+c}function Ki(r,e){const t=r.substr(e,1);if(t==="0")return t;const c=qs(r,e);return e+=c.length,c===""?"":c+an(r,e)}function Zs(r,e){const t=Ki(r,e);if(e+=t.length,t==="")return"";const c=r.substr(e,1);if(e+=c.length,c!==".")return"";const g=an(r,e);return e+=g.length,t+c+g+it(r,e)}function $i(r,e){const t=r.substr(e,1);if(e+=t.length,t!==".")return"";const c=an(r,e);return e+=c.length,c===""?"":t+c+it(r,e)}function Ws(r,e){const t=Ki(r,e);return e+=t.length,t===""?"":t+it(r,e)}const Xi=oi([Zs,$i,Ws]);function ai(r,e){var t;const c=r.substr(e).match(/^[01]+/);return(t=c&&c[0])!==null&&t!==void 0?t:""}function Js(r,e){const t=r.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0b")return"";const c=ai(r,e);return c===""?"":t+c}function Yi(r,e){var t;const c=r.substr(e).match(/^[0-7]+/);return(t=c&&c[0])!==null&&t!==void 0?t:""}function Xe(r,e){const t=r.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0o")return"";const c=Yi(r,e);return c===""?"":t+c}function Hs(r,e){var t;const c=r.substr(e).match(/^[0-9a-f]+/i);return(t=c&&c[0])!==null&&t!==void 0?t:""}function er(r,e){const t=r.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0x")return"";const c=Hs(r,e);return c===""?"":t+c}const li=oi([Js,Xe,er]),tr=oi([li,Xi]);function ft(r,e){const t=tr(r,e);return e+=t.length,t===""?null:{evaluable:new Ks(t),cursor:e}}function ci(r,e){const t=r.substr(e,1);if(e+=t.length,t!=="(")return null;const c=On(r,e);if(!c)return null;e=c.cursor,e+=xt(r,e).length;const g=r.substr(e,1);return e+=g.length,g!==")"?null:{evaluable:c.evaluable,cursor:e}}function nr(r,e){var t;return(t=ft(r,e))!==null&&t!==void 0?t:ci(r,e)}function pi(r,e){const t=nr(r,e);if(t)return t;const c=r.substr(e,1);if(e+=c.length,c!=="+"&&c!=="-"&&c!=="~")return null;const g=pi(r,e);return g?(e=g.cursor,{cursor:e,evaluable:new Ys(c,g.evaluable)}):null}function ir(r,e,t){t+=xt(e,t).length;const c=r.filter(g=>e.startsWith(g,t))[0];return c?(t+=c.length,t+=xt(e,t).length,{cursor:t,operator:c}):null}function Ct(r,e){return(t,c)=>{const g=r(t,c);if(!g)return null;c=g.cursor;let k=g.evaluable;for(;;){const S=ir(e,t,c);if(!S)break;c=S.cursor;const R=r(t,c);if(!R)return null;c=R.cursor,k=new Xs(S.operator,k,R.evaluable)}return k?{cursor:c,evaluable:k}:null}}const qi=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((r,e)=>Ct(r,e),pi);function On(r,e){return e+=xt(r,e).length,qi(r,e)}function Qi(r){const e=On(r,0);return!e||e.cursor+xt(r,e.cursor).length!==r.length?null:e.evaluable}function st(r){var e;const t=Qi(r);return(e=t==null?void 0:t.evaluate())!==null&&e!==void 0?e:null}function ht(r){if(typeof r=="number")return r;if(typeof r=="string"){const e=st(r);if(!y(e))return e}return 0}function sr(r){return String(r)}function Le(r){return e=>e.toFixed(Math.max(Math.min(r,20),0))}const Zi=Le(0);function ln(r){return Zi(r)+"%"}function hi(r){return String(r)}function vt(r){return r}function jt({primary:r,secondary:e,forward:t,backward:c}){let g=!1;function k(S){g||(g=!0,S(),g=!1)}r.emitter.on("change",S=>{k(()=>{e.setRawValue(t(r,e),S.options)})}),e.emitter.on("change",S=>{k(()=>{r.setRawValue(c(r,e),S.options)}),k(()=>{e.setRawValue(t(r,e),S.options)})}),k(()=>{e.setRawValue(t(r,e),{forceEmit:!1,last:!0})})}function Ie(r,e){const t=r*(e.altKey?.1:1)*(e.shiftKey?10:1);return e.upKey?+t:e.downKey?-t:0}function cn(r){return{altKey:r.altKey,downKey:r.key==="ArrowDown",shiftKey:r.shiftKey,upKey:r.key==="ArrowUp"}}function rt(r){return{altKey:r.altKey,downKey:r.key==="ArrowLeft",shiftKey:r.shiftKey,upKey:r.key==="ArrowRight"}}function Wi(r){return r==="ArrowUp"||r==="ArrowDown"}function Bn(r){return Wi(r)||r==="ArrowLeft"||r==="ArrowRight"}function ui(r,e){var t,c;const g=e.ownerDocument.defaultView,k=e.getBoundingClientRect();return{x:r.pageX-(((t=g&&g.scrollX)!==null&&t!==void 0?t:0)+k.left),y:r.pageY-(((c=g&&g.scrollY)!==null&&c!==void 0?c:0)+k.top)}}class Pt{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_(ui(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onDocumentMouseMove_(e){this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(ui(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_(ui(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 _e(r,e,t,c,g){const k=(r-e)/(t-e);return c+k*(g-c)}function di(r){return String(r.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function Me(r,e,t){return Math.min(Math.max(r,e),t)}function Ut(r,e){return(r%e+e)%e}const Ue=T("txt");class mi{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(Ue(),Ue(void 0,"num")),t.arrayPosition&&this.element.classList.add(Ue(void 0,t.arrayPosition)),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("input");c.classList.add(Ue("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(Ue()),this.inputElement.classList.add(Ue("i"));const g=e.createElement("div");g.classList.add(Ue("k")),this.element.appendChild(g),this.knobElement=g;const k=e.createElementNS(Fe,"svg");k.classList.add(Ue("g")),this.knobElement.appendChild(k);const S=e.createElementNS(Fe,"path");S.classList.add(Ue("gb")),k.appendChild(S),this.guideBodyElem_=S;const R=e.createElementNS(Fe,"path");R.classList.add(Ue("gh")),k.appendChild(R),this.guideHeadElem_=R;const W=e.createElement("div");W.classList.add(T("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(Ue(void 0,"drg"));return}this.element.classList.add(Ue(void 0,"drg"));const t=e.rawValue/this.props_.get("draggingScale"),c=t+(t>0?-1:t<0?1:0),g=Me(-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 pn{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 mi(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 Pt(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 S=e;return g!==void 0&&(S=Math.max(S,g)),k!==void 0&&(S=Math.min(S,k)),S}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_,cn(e));t!==0&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+t),{forceEmit:!1,last:!1})}onInputKeyUp_(e){Ie(this.baseStep_,cn(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 fi=T("sld");class Re{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(fi()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(fi("t")),t.viewProps.bindTabIndex(c),this.element.appendChild(c),this.trackElement=c;const g=e.createElement("div");g.classList.add(fi("k")),this.trackElement.appendChild(g),this.knobElement=g,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.update_()}update_(){const e=Me(_e(this.value.rawValue,this.props_.get("minValue"),this.props_.get("maxValue"),0,100),0,100);this.knobElement.style.width=`${e}%`}onChange_(){this.update_()}}class vi{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 Re(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new Pt(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(_e(Me(e.point.x,0,e.bounds.width),0,e.bounds.width,this.props.get("minValue"),this.props.get("maxValue")),t)}onPointerDownOrMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){const t=Ie(this.baseStep_,rt(e));t!==0&&this.value.setRawValue(this.value.rawValue+t,{forceEmit:!1,last:!1})}onKeyUp_(e){Ie(this.baseStep_,rt(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const hn=T("sldtxt");class bi{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(hn());const c=e.createElement("div");c.classList.add(hn("s")),this.sliderView_=t.sliderView,c.appendChild(this.sliderView_.element),this.element.appendChild(c);const g=e.createElement("div");g.classList.add(hn("t")),this.textView_=t.textView,g.appendChild(this.textView_.element),this.element.appendChild(g)}}class Nn{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.sliderC_=new vi(e,{baseStep:t.baseStep,props:t.sliderProps,value:t.value,viewProps:this.viewProps}),this.textC_=new pn(e,{baseStep:t.baseStep,parser:t.parser,props:t.textProps,sliderProps:t.sliderProps,value:t.value,viewProps:t.viewProps}),this.view=new bi(e,{sliderView:this.sliderC_.view,textView:this.textC_.view})}get sliderController(){return this.sliderC_}get textController(){return this.textC_}}function Ze(r,e){r.write(e)}function un(r){const e=L;if(Array.isArray(r))return e.required.array(e.required.object({text:e.required.string,value:e.required.raw}))(r).value;if(typeof r=="object")return e.required.raw(r).value}function gi(r){if(r==="inline"||r==="popup")return r}function ut(r){const e=L;return e.required.object({max:e.optional.number,min:e.optional.number,step:e.optional.number})(r).value}function Ji(r){if(Array.isArray(r))return r;const e=[];return Object.keys(r).forEach(t=>{e.push({text:t,value:r[t]})}),e}function wi(r){return y(r)?null:new rn(Ji(r))}function rr(r){const e=r?Qe(r,Tn):null;return e?e.step:null}function Fn(r,e){const t=r&&Qe(r,Tn);return t?di(t.step):Math.max(di(e),2)}function kt(r){const e=rr(r);return e??1}function Mt(r,e){var t;const c=r&&Qe(r,Tn),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 dn=T("ckb");class mn{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(dn()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("label");c.classList.add(dn("l")),this.element.appendChild(c);const g=e.createElement("input");g.classList.add(dn("i")),g.type="checkbox",c.appendChild(g),this.inputElement=g,t.viewProps.bindDisabled(this.inputElement);const k=e.createElement("div");k.classList.add(dn("w")),c.appendChild(k);const S=dt(e,"check");k.appendChild(S),t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.update_()}update_(){this.inputElement.checked=this.value.rawValue}onValueChange_(){this.update_()}}class Hi{constructor(e,t){this.onInputChange_=this.onInputChange_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new mn(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 es(r){const e=[],t=wi(r.options);return t&&e.push(t),new sn(e)}const zn={id:"input-bool",type:"input",accept:(r,e)=>{if(typeof r!="boolean")return null;const c=pe(e,{options:L.optional.custom(un)});return c?{initialValue:r,params:c}:null},binding:{reader:r=>Ui,constraint:r=>es(r.params),writer:r=>Ze},controller:r=>{const e=r.document,t=r.value,c=r.constraint,g=c&&Qe(c,rn);return g?new on(e,{props:new q({options:g.values.value("options")}),value:t,viewProps:r.viewProps}):new Hi(e,{value:t,viewProps:r.viewProps})}},At=T("col");class _i{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(At()),t.foldable.bindExpandedClass(this.element,At(void 0,"expanded")),j(t.foldable,"completed",Y(this.element,At(void 0,"cpl")));const c=e.createElement("div");c.classList.add(At("h")),this.element.appendChild(c);const g=e.createElement("div");g.classList.add(At("s")),c.appendChild(g),this.swatchElement=g;const k=e.createElement("div");if(k.classList.add(At("t")),c.appendChild(k),this.textElement=k,t.pickerLayout==="inline"){const S=e.createElement("div");S.classList.add(At("p")),this.element.appendChild(S),this.pickerElement=S}else this.pickerElement=null}}function or(r,e,t){const c=Me(r/255,0,1),g=Me(e/255,0,1),k=Me(t/255,0,1),S=Math.max(c,g,k),R=Math.min(c,g,k),W=S-R;let H=0,me=0;const be=(R+S)/2;return W!==0&&(me=W/(1-Math.abs(S+R-1)),c===S?H=(g-k)/W:g===S?H=2+(k-c)/W:H=4+(c-g)/W,H=H/6+(H<0?1:0)),[H*360,me*100,be*100]}function ar(r,e,t){const c=(r%360+360)%360,g=Me(e/100,0,1),k=Me(t/100,0,1),S=(1-Math.abs(2*k-1))*g,R=S*(1-Math.abs(c/60%2-1)),W=k-S/2;let H,me,be;return c>=0&&c<60?[H,me,be]=[S,R,0]:c>=60&&c<120?[H,me,be]=[R,S,0]:c>=120&&c<180?[H,me,be]=[0,S,R]:c>=180&&c<240?[H,me,be]=[0,R,S]:c>=240&&c<300?[H,me,be]=[R,0,S]:[H,me,be]=[S,0,R],[(H+W)*255,(me+W)*255,(be+W)*255]}function lr(r,e,t){const c=Me(r/255,0,1),g=Me(e/255,0,1),k=Me(t/255,0,1),S=Math.max(c,g,k),R=Math.min(c,g,k),W=S-R;let H;W===0?H=0:S===c?H=60*(((g-k)/W%6+6)%6):S===g?H=60*((k-c)/W+2):H=60*((c-g)/W+4);const me=S===0?0:W/S,be=S;return[H,me*100,be*100]}function ts(r,e,t){const c=Ut(r,360),g=Me(e/100,0,1),k=Me(t/100,0,1),S=k*g,R=S*(1-Math.abs(c/60%2-1)),W=k-S;let H,me,be;return c>=0&&c<60?[H,me,be]=[S,R,0]:c>=60&&c<120?[H,me,be]=[R,S,0]:c>=120&&c<180?[H,me,be]=[0,S,R]:c>=180&&c<240?[H,me,be]=[0,R,S]:c>=240&&c<300?[H,me,be]=[R,0,S]:[H,me,be]=[S,0,R],[(H+W)*255,(me+W)*255,(be+W)*255]}function m(r,e,t){const c=t+e*(100-Math.abs(2*t-100))/200;return[r,c!==0?e*(100-Math.abs(2*t-100))/c:0,t+e*(100-Math.abs(2*t-100))/(2*100)]}function a(r,e,t){const c=100-Math.abs(t*(200-e)/100-100);return[r,c!==0?e*t/c:0,t*(200-e)/(2*100)]}function h(r){return[r[0],r[1],r[2]]}function b(r,e){return[r[0],r[1],r[2],e]}const P={hsl:{hsl:(r,e,t)=>[r,e,t],hsv:m,rgb:ar},hsv:{hsl:a,hsv:(r,e,t)=>[r,e,t],rgb:ts},rgb:{hsl:or,hsv:lr,rgb:(r,e,t)=>[r,e,t]}};function A(r,e){return[e==="float"?1:r==="rgb"?255:360,e==="float"?1:r==="rgb"?255:100,e==="float"?1:r==="rgb"?255:100]}function O(r,e){return r===e?e:Ut(r,e)}function G(r,e,t){var c;const g=A(e,t);return[e==="rgb"?Me(r[0],0,g[0]):O(r[0],g[0]),Me(r[1],0,g[1]),Me(r[2],0,g[2]),Me((c=r[3])!==null&&c!==void 0?c:1,0,1)]}function le(r,e,t,c){const g=A(e,t),k=A(e,c);return r.map((S,R)=>S/g[R]*k[R])}function Ye(r,e,t){const c=le(r,e.mode,e.type,"int"),g=P[e.mode][t.mode](...c);return le(g,t.mode,"int",t.type)}function qe(r,e){return typeof r!="object"||y(r)?!1:e in r&&typeof r[e]=="number"}class ie{static black(e="int"){return new ie([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 ie(c,"rgb",t)}static toRgbaObject(e,t="int"){return e.toRgbaObject(t)}static isRgbColorObject(e){return qe(e,"r")&&qe(e,"g")&&qe(e,"b")}static isRgbaColorObject(e){return this.isRgbColorObject(e)&&qe(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 b(Ye(h(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 bt=T("colp");class cr{constructor(e,t){this.alphaViews_=null,this.element=e.createElement("div"),this.element.classList.add(bt()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(bt("hsv"));const g=e.createElement("div");g.classList.add(bt("sv")),this.svPaletteView_=t.svPaletteView,g.appendChild(this.svPaletteView_.element),c.appendChild(g);const k=e.createElement("div");k.classList.add(bt("h")),this.hPaletteView_=t.hPaletteView,k.appendChild(this.hPaletteView_.element),c.appendChild(k),this.element.appendChild(c);const S=e.createElement("div");if(S.classList.add(bt("rgb")),this.textView_=t.textView,S.appendChild(this.textView_.element),this.element.appendChild(S),t.alphaViews){this.alphaViews_={palette:t.alphaViews.palette,text:t.alphaViews.text};const R=e.createElement("div");R.classList.add(bt("a"));const W=e.createElement("div");W.classList.add(bt("ap")),W.appendChild(this.alphaViews_.palette.element),R.appendChild(W);const H=e.createElement("div");H.classList.add(bt("at")),H.appendChild(this.alphaViews_.text.element),R.appendChild(H),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 gp(r){return r==="int"?"int":r==="float"?"float":void 0}function pr(r){const e=L;return pe(r,{alpha:e.optional.boolean,color:e.optional.object({alpha:e.optional.boolean,type:e.optional.custom(gp)}),expanded:e.optional.boolean,picker:e.optional.custom(gi)})}function fn(r){return r?.1:1}function vn(r){var e;return(e=r.color)===null||e===void 0?void 0:e.type}function wp(r,e){return r.alpha===e.alpha&&r.mode===e.mode&&r.notation===e.notation&&r.type===e.type}function ot(r,e){const t=r.match(/^(.+)%$/);return Math.min(t?parseFloat(t[1])*.01*e:parseFloat(r),e)}const _p={deg:r=>r,grad:r=>r*360/400,rad:r=>r*360/(2*Math.PI),turn:r=>r*360};function lo(r){const e=r.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);if(!e)return parseFloat(r);const t=parseFloat(e[1]),c=e[2];return _p[c](t)}function co(r){const e=r.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=[ot(e[1],255),ot(e[2],255),ot(e[3],255)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function po(r){return e=>{const t=co(e);return t?new ie(t,"rgb",r):null}}function ho(r){const e=r.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=[ot(e[1],255),ot(e[2],255),ot(e[3],255),ot(e[4],1)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function uo(r){return e=>{const t=ho(e);return t?new ie(t,"rgb",r):null}}function mo(r){const e=r.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=[lo(e[1]),ot(e[2],100),ot(e[3],100)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function fo(r){return e=>{const t=mo(e);return t?new ie(t,"hsl",r):null}}function vo(r){const e=r.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=[lo(e[1]),ot(e[2],100),ot(e[3],100),ot(e[4],1)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function bo(r){return e=>{const t=vo(e);return t?new ie(t,"hsl",r):null}}function go(r){const e=r.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=r.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 yp(r){const e=go(r);return e?new ie(e,"rgb","int"):null}function wo(r){const e=r.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),_e(parseInt(e[4]+e[4],16),0,255,0,1)];const t=r.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),_e(parseInt(t[4],16),0,255,0,1)]:null}function xp(r){const e=wo(r);return e?new ie(e,"rgb","int"):null}function _o(r){const e=r.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 yo(r){return e=>{const t=_o(e);return t?new ie(t,"rgb",r):null}}function xo(r){const e=r.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 Co(r){return e=>{const t=xo(e);return t?new ie(t,"rgb",r):null}}const Cp=[{parser:go,result:{alpha:!1,mode:"rgb",notation:"hex"}},{parser:wo,result:{alpha:!0,mode:"rgb",notation:"hex"}},{parser:co,result:{alpha:!1,mode:"rgb",notation:"func"}},{parser:ho,result:{alpha:!0,mode:"rgb",notation:"func"}},{parser:mo,result:{alpha:!1,mode:"hsl",notation:"func"}},{parser:vo,result:{alpha:!0,mode:"hsl",notation:"func"}},{parser:_o,result:{alpha:!1,mode:"rgb",notation:"object"}},{parser:xo,result:{alpha:!0,mode:"rgb",notation:"object"}}];function Pp(r){return Cp.reduce((e,{parser:t,result:c})=>e||(t(r)?c:null),null)}function hr(r,e="int"){const t=Pp(r);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 Po={int:[yp,xp,po("int"),uo("int"),fo("int"),bo("int"),yo("int"),Co("int")],float:[po("float"),uo("float"),fo("float"),bo("float"),yo("float"),Co("float")]};function kp(r){const e=Po[r];return t=>{if(typeof t!="string")return ie.black(r);const c=e.reduce((g,k)=>g||k(t),null);return c??ie.black(r)}}function ur(r){const e=Po[r];return t=>e.reduce((c,g)=>c||g(t),null)}function ko(r){const e=Me(Math.floor(r),0,255).toString(16);return e.length===1?`0${e}`:e}function Mo(r,e="#"){const t=h(r.getComponents("rgb")).map(ko).join("");return`${e}${t}`}function dr(r,e="#"){const t=r.getComponents("rgb"),c=[t[0],t[1],t[2],t[3]*255].map(ko).join("");return`${e}${c}`}function Ao(r,e){const t=Le(e==="float"?2:0);return`rgb(${h(r.getComponents("rgb",e)).map(g=>t(g)).join(", ")})`}function Mp(r){return e=>Ao(e,r)}function ns(r,e){const t=Le(2),c=Le(e==="float"?2:0);return`rgba(${r.getComponents("rgb",e).map((k,S)=>(S===3?t:c)(k)).join(", ")})`}function Ap(r){return e=>ns(e,r)}function Sp(r){const e=[Le(0),ln,ln];return`hsl(${h(r.getComponents("hsl")).map((c,g)=>e[g](c)).join(", ")})`}function Lp(r){const e=[Le(0),ln,ln,Le(2)];return`hsla(${r.getComponents("hsl").map((c,g)=>e[g](c)).join(", ")})`}function So(r,e){const t=Le(e==="float"?2:0),c=["r","g","b"];return`{${h(r.getComponents("rgb",e)).map((k,S)=>`${c[S]}: ${t(k)}`).join(", ")}}`}function Vp(r){return e=>So(e,r)}function Lo(r,e){const t=Le(2),c=Le(e==="float"?2:0),g=["r","g","b","a"];return`{${r.getComponents("rgb",e).map((S,R)=>{const W=R===3?t:c;return`${g[R]}: ${W(S)}`}).join(", ")}}`}function Dp(r){return e=>Lo(e,r)}const Ip=[{format:{alpha:!1,mode:"rgb",notation:"hex",type:"int"},stringifier:Mo},{format:{alpha:!0,mode:"rgb",notation:"hex",type:"int"},stringifier:dr},{format:{alpha:!1,mode:"hsl",notation:"func",type:"int"},stringifier:Sp},{format:{alpha:!0,mode:"hsl",notation:"func",type:"int"},stringifier:Lp},...["int","float"].reduce((r,e)=>[...r,{format:{alpha:!1,mode:"rgb",notation:"func",type:e},stringifier:Mp(e)},{format:{alpha:!0,mode:"rgb",notation:"func",type:e},stringifier:Ap(e)},{format:{alpha:!1,mode:"rgb",notation:"object",type:e},stringifier:Vp(e)},{format:{alpha:!0,mode:"rgb",notation:"object",type:e},stringifier:Dp(e)}],[])];function mr(r){return Ip.reduce((e,t)=>e||(wp(t.format,r)?t.stringifier:null),null)}const yi=T("apl");class Tp{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(yi()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);const c=e.createElement("div");c.classList.add(yi("b")),this.element.appendChild(c);const g=e.createElement("div");g.classList.add(yi("c")),c.appendChild(g),this.colorElem_=g;const k=e.createElement("div");k.classList.add(yi("m")),this.element.appendChild(k),this.markerElem_=k;const S=e.createElement("div");S.classList.add(yi("p")),this.markerElem_.appendChild(S),this.previewElem_=S,this.update_()}update_(){const e=this.value.rawValue,t=e.getComponents("rgb"),c=new ie([t[0],t[1],t[2],0],"rgb"),g=new ie([t[0],t[1],t[2],255],"rgb"),k=["to right",ns(c),ns(g)];this.colorElem_.style.background=`linear-gradient(${k.join(",")})`,this.previewElem_.style.backgroundColor=ns(e);const S=_e(t[3],0,1,0,100);this.markerElem_.style.left=`${S}%`}onValueChange_(){this.update_()}}class Ep{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 Tp(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new Pt(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,S,R]=g.getComponents("hsv");this.value.setRawValue(new ie([k,S,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(fn(!0),rt(e));if(t===0)return;const c=this.value.rawValue,[g,k,S,R]=c.getComponents("hsv");this.value.setRawValue(new ie([g,k,S,R+t],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){Ie(fn(!0),rt(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const jn=T("coltxt");function Op(r){const e=r.createElement("select"),t=[{text:"RGB",value:"rgb"},{text:"HSL",value:"hsl"},{text:"HSV",value:"hsv"}];return e.appendChild(t.reduce((c,g)=>{const k=r.createElement("option");return k.textContent=g.text,k.value=g.value,c.appendChild(k),c},r.createDocumentFragment())),e}class Bp{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(jn()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(jn("m")),this.modeElem_=Op(e),this.modeElem_.classList.add(jn("ms")),c.appendChild(this.modeSelectElement),t.viewProps.bindDisabled(this.modeElem_);const g=e.createElement("div");g.classList.add(jn("mm")),g.appendChild(dt(e,"dropdown")),c.appendChild(g),this.element.appendChild(c);const k=e.createElement("div");k.classList.add(jn("w")),this.element.appendChild(k),this.textsElem_=k,this.textViews_=t.textViews,this.applyTextViews_(),U(t.colorMode,S=>{this.modeElem_.value=S})}get modeSelectElement(){return this.modeElem_}get textViews(){return this.textViews_}set textViews(e){this.textViews_=e,this.applyTextViews_()}applyTextViews_(){Wt(this.textsElem_);const e=this.element.ownerDocument;this.textViews_.forEach(t=>{const c=e.createElement("div");c.classList.add(jn("c")),c.appendChild(t.element),this.textsElem_.appendChild(c)})}}function Np(r){return Le(r==="float"?2:0)}function Fp(r,e,t){const c=A(r,e)[t];return new Ft({min:0,max:c})}function fr(r,e,t){return new pn(r,{arrayPosition:t===0?"fst":t===3-1?"lst":"mid",baseStep:fn(!1),parser:e.parser,props:q.fromObject({draggingScale:e.colorType==="float"?.01:1,formatter:Np(e.colorType)}),value:te(0,{constraint:Fp(e.colorMode,e.colorType,t)}),viewProps:e.viewProps})}class zp{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=[fr(e,t,0),fr(e,t,1),fr(e,t,2)];return c.forEach((g,k)=>{jt({primary:this.value,secondary:g.value,forward:S=>S.rawValue.getComponents(this.colorMode.rawValue,this.colorType_)[k],backward:(S,R)=>{const W=this.colorMode.rawValue,H=S.rawValue.getComponents(W,this.colorType_);return H[k]=R.rawValue,new ie(b(h(H),H[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 vr=T("hpl");class jp{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(vr()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);const c=e.createElement("div");c.classList.add(vr("c")),this.element.appendChild(c);const g=e.createElement("div");g.classList.add(vr("m")),this.element.appendChild(g),this.markerElem_=g,this.update_()}update_(){const e=this.value.rawValue,[t]=e.getComponents("hsv");this.markerElem_.style.backgroundColor=Ao(new ie([t,100,100],"hsv"));const c=_e(t,0,360,0,100);this.markerElem_.style.left=`${c}%`}onValueChange_(){this.update_()}}class Up{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 jp(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new Pt(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(Me(e.point.x,0,e.bounds.width),0,e.bounds.width,0,360),g=this.value.rawValue,[,k,S,R]=g.getComponents("hsv");this.value.setRawValue(new ie([c,k,S,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(fn(!1),rt(e));if(t===0)return;const c=this.value.rawValue,[g,k,S,R]=c.getComponents("hsv");this.value.setRawValue(new ie([g+t,k,S,R],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){Ie(fn(!1),rt(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const br=T("svp"),Vo=64;class Rp{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(br()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);const c=e.createElement("canvas");c.height=Vo,c.width=Vo,c.classList.add(br("c")),this.element.appendChild(c),this.canvasElement=c;const g=e.createElement("div");g.classList.add(br("m")),this.element.appendChild(g),this.markerElem_=g,this.update_()}update_(){const e=kn(this.canvasElement);if(!e)return;const c=this.value.rawValue.getComponents("hsv"),g=this.canvasElement.width,k=this.canvasElement.height,S=e.getImageData(0,0,g,k),R=S.data;for(let me=0;me<k;me++)for(let be=0;be<g;be++){const bn=_e(be,0,g,0,100),Ci=_e(me,0,k,100,0),Pi=ts(c[0],bn,Ci),is=(me*g+be)*4;R[is]=Pi[0],R[is+1]=Pi[1],R[is+2]=Pi[2],R[is+3]=255}e.putImageData(S,0,0);const W=_e(c[1],0,100,0,100);this.markerElem_.style.left=`${W}%`;const H=_e(c[2],0,100,100,0);this.markerElem_.style.top=`${H}%`}onValueChange_(){this.update_()}}class Gp{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 Rp(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new Pt(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(e.point.x,0,e.bounds.width,0,100),g=_e(e.point.y,0,e.bounds.height,100,0),[k,,,S]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new ie([k,c,g,S],"hsv"),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){Bn(e.key)&&e.preventDefault();const[t,c,g,k]=this.value.rawValue.getComponents("hsv"),S=fn(!1),R=Ie(S,rt(e)),W=Ie(S,cn(e));R===0&&W===0||this.value.setRawValue(new ie([t,c+R,g+W,k],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){const t=fn(!1),c=Ie(t,rt(e)),g=Ie(t,cn(e));c===0&&g===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 Up(e,{value:this.value,viewProps:this.viewProps}),this.svPaletteC_=new Gp(e,{value:this.value,viewProps:this.viewProps}),this.alphaIcs_=t.supportsAlpha?{palette:new Ep(e,{value:this.value,viewProps:this.viewProps}),text:new pn(e,{parser:st,baseStep:.1,props:q.fromObject({draggingScale:.01,formatter:Le(2)}),value:te(0,{constraint:new Ft({min:0,max:1})}),viewProps:this.viewProps})}:null,this.alphaIcs_&&jt({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 ie(k,c.rawValue.mode)}}),this.textC_=new zp(e,{colorType:t.colorType,parser:st,value:this.value,viewProps:this.viewProps}),this.view=new cr(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 gr=T("colsw");class $p{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(gr()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(gr("sw")),this.element.appendChild(c),this.swatchElem_=c;const g=e.createElement("button");g.classList.add(gr("b")),t.viewProps.bindDisabled(g),this.element.appendChild(g),this.buttonElement=g,this.update_()}update_(){const e=this.value.rawValue;this.swatchElem_.style.backgroundColor=dr(e)}onValueChange_(){this.update_()}}class Xp{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new $p(e,{value:this.value,viewProps:this.viewProps})}}class wr{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_=Te.create(t.expanded),this.swatchC_=new Xp(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 En(e,{parser:t.parser,props:q.fromObject({formatter:t.formatter}),value:this.value,viewProps:this.viewProps}),this.view=new _i(e,{foldable:this.foldable_,pickerLayout:t.pickerLayout}),this.view.swatchElement.appendChild(this.swatchC_.view.element),this.view.textElement.appendChild(this.textC_.view.element),this.popC_=t.pickerLayout==="popup"?new zi(e,{viewProps:this.viewProps}):null;const g=new Kp(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),jt({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:k=>k.rawValue,backward:(k,S)=>S.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),ze(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=mt(e);c&&t.contains(c)||c&&c===this.swatchC_.view.buttonElement&&!ct(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 Yp(r,e){return ie.isColorObject(r)?ie.fromObject(r,e):ie.black(e)}function qp(r){return h(r.getComponents("rgb")).reduce((e,t)=>e<<8|Math.floor(t)&255,0)}function Qp(r){return r.getComponents("rgb").reduce((e,t,c)=>{const g=Math.floor(c===3?t*255:t)&255;return e<<8|g},0)>>>0}function Zp(r){return new ie([r>>16&255,r>>8&255,r&255],"rgb")}function Wp(r){return new ie([r>>24&255,r>>16&255,r>>8&255,_e(r&255,0,255,0,1)],"rgb")}function Jp(r){return typeof r!="number"?ie.black():Zp(r)}function Hp(r){return typeof r!="number"?ie.black():Wp(r)}function eh(r){const e=mr(r);return e?(t,c)=>{Ze(t,e(c))}:null}function th(r){const e=r?Qp:qp;return(t,c)=>{Ze(t,e(c))}}function nh(r,e,t){const c=e.toRgbaObject(t);r.writeProperty("r",c.r),r.writeProperty("g",c.g),r.writeProperty("b",c.b),r.writeProperty("a",c.a)}function ih(r,e,t){const c=e.toRgbaObject(t);r.writeProperty("r",c.r),r.writeProperty("g",c.g),r.writeProperty("b",c.b)}function sh(r,e){return(t,c)=>{r?nh(t,c,e):ih(t,c,e)}}function _r(r){var e;return!!(r!=null&&r.alpha||!((e=r==null?void 0:r.color)===null||e===void 0)&&e.alpha)}function rh(r){return r?e=>dr(e,"0x"):e=>Mo(e,"0x")}function oh(r){return"color"in r||"view"in r&&r.view==="color"}const ah={id:"input-color-number",type:"input",accept:(r,e)=>{if(typeof r!="number"||!oh(e))return null;const t=pr(e);return t?{initialValue:r,params:t}:null},binding:{reader:r=>_r(r.params)?Hp:Jp,equals:ie.equals,writer:r=>th(_r(r.params))},controller:r=>{const e=_r(r.params),t="expanded"in r.params?r.params.expanded:void 0,c="picker"in r.params?r.params.picker:void 0;return new wr(r.document,{colorType:"int",expanded:t??!1,formatter:rh(e),parser:ur("int"),pickerLayout:c??"popup",supportsAlpha:e,value:r.value,viewProps:r.viewProps})}};function lh(r){return ie.isRgbaColorObject(r)}function ch(r){return e=>Yp(e,r)}function ph(r,e){return t=>r?Lo(t,e):So(t,e)}const hh={id:"input-color-object",type:"input",accept:(r,e)=>{if(!ie.isColorObject(r))return null;const t=pr(e);return t?{initialValue:r,params:t}:null},binding:{reader:r=>ch(vn(r.params)),equals:ie.equals,writer:r=>sh(lh(r.initialValue),vn(r.params))},controller:r=>{var e;const t=ie.isRgbaColorObject(r.initialValue),c="expanded"in r.params?r.params.expanded:void 0,g="picker"in r.params?r.params.picker:void 0,k=(e=vn(r.params))!==null&&e!==void 0?e:"int";return new wr(r.document,{colorType:k,expanded:c??!1,formatter:ph(t,k),parser:ur(k),pickerLayout:g??"popup",supportsAlpha:t,value:r.value,viewProps:r.viewProps})}},uh={id:"input-color-string",type:"input",accept:(r,e)=>{if(typeof r!="string"||"view"in e&&e.view==="text")return null;const t=hr(r,vn(e));if(!t||!mr(t))return null;const g=pr(e);return g?{initialValue:r,params:g}:null},binding:{reader:r=>{var e;return kp((e=vn(r.params))!==null&&e!==void 0?e:"int")},equals:ie.equals,writer:r=>{const e=hr(r.initialValue,vn(r.params));if(!e)throw V.shouldNeverHappen();const t=eh(e);if(!t)throw V.notBindable();return t}},controller:r=>{const e=hr(r.initialValue,vn(r.params));if(!e)throw V.shouldNeverHappen();const t=mr(e);if(!t)throw V.shouldNeverHappen();const c="expanded"in r.params?r.params.expanded:void 0,g="picker"in r.params?r.params.picker:void 0;return new wr(r.document,{colorType:e.type,expanded:c??!1,formatter:t,parser:ur(e.type),pickerLayout:g??"popup",supportsAlpha:e.alpha,value:r.value,viewProps:r.viewProps})}};class Rt{constructor(e){this.components=e.components,this.asm_=e.assembly}constrain(e){const t=this.asm_.toComponents(e).map((c,g)=>{var k,S;return(S=(k=this.components[g])===null||k===void 0?void 0:k.constrain(c))!==null&&S!==void 0?S:c});return this.asm_.fromComponents(t)}}const Do=T("pndtxt");class dh{constructor(e,t){this.textViews=t.textViews,this.element=e.createElement("div"),this.element.classList.add(Do()),this.textViews.forEach(c=>{const g=e.createElement("div");g.classList.add(Do("a")),g.appendChild(c.element),this.element.appendChild(g)})}}function mh(r,e,t){return new pn(r,{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 yr{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.acs_=t.axes.map((c,g)=>mh(e,t,g)),this.acs_.forEach((c,g)=>{jt({primary:this.value,secondary:c.value,forward:k=>t.assembly.toComponents(k.rawValue)[g],backward:(k,S)=>{const R=t.assembly.toComponents(k.rawValue);return R[g]=S.rawValue,t.assembly.fromComponents(R)}})}),this.view=new dh(e,{textViews:this.acs_.map(c=>c.view)})}}function Io(r,e){return"step"in r&&!y(r.step)?new Tn(r.step,e):null}function To(r){return!y(r.max)&&!y(r.min)?new Ft({max:r.max,min:r.min}):!y(r.max)||!y(r.min)?new ri({max:r.max,min:r.min}):null}function fh(r){const e=Qe(r,Ft);if(e)return[e.values.get("min"),e.values.get("max")];const t=Qe(r,ri);return t?[t.minValue,t.maxValue]:[void 0,void 0]}function vh(r,e){const t=[],c=Io(r,e);c&&t.push(c);const g=To(r);g&&t.push(g);const k=wi(r.options);return k&&t.push(k),new sn(t)}const bh={id:"input-number",type:"input",accept:(r,e)=>{if(typeof r!="number")return null;const t=L,c=pe(e,{format:t.optional.function,max:t.optional.number,min:t.optional.number,options:t.optional.custom(un),step:t.optional.number});return c?{initialValue:r,params:c}:null},binding:{reader:r=>ht,constraint:r=>vh(r.params,r.initialValue),writer:r=>Ze},controller:r=>{var e;const t=r.value,c=r.constraint,g=c&&Qe(c,rn);if(g)return new on(r.document,{props:new q({options:g.values.value("options")}),value:t,viewProps:r.viewProps});const k=(e="format"in r.params?r.params.format:void 0)!==null&&e!==void 0?e:Le(Fn(c,t.rawValue)),S=c&&Qe(c,Ft);return S?new Nn(r.document,{baseStep:kt(c),parser:st,sliderProps:new q({maxValue:S.values.value("max"),minValue:S.values.value("min")}),textProps:q.fromObject({draggingScale:Mt(c,t.rawValue),formatter:k}),value:t,viewProps:r.viewProps}):new pn(r.document,{baseStep:kt(c),parser:st,props:q.fromObject({draggingScale:Mt(c,t.rawValue),formatter:k}),value:t,viewProps:r.viewProps})}};class Gt{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 Eo={toComponents:r=>r.getComponents(),fromComponents:r=>new Gt(...r)},Un=T("p2d");class gh{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Un()),t.viewProps.bindClassModifiers(this.element),U(t.expanded,Y(this.element,Un(void 0,"expanded")));const c=e.createElement("div");c.classList.add(Un("h")),this.element.appendChild(c);const g=e.createElement("button");g.classList.add(Un("b")),g.appendChild(dt(e,"p2dpad")),t.viewProps.bindDisabled(g),c.appendChild(g),this.buttonElement=g;const k=e.createElement("div");if(k.classList.add(Un("t")),c.appendChild(k),this.textElement=k,t.pickerLayout==="inline"){const S=e.createElement("div");S.classList.add(Un("p")),this.element.appendChild(S),this.pickerElement=S}else this.pickerElement=null}}const Kt=T("p2dp");class wh{constructor(e,t){this.onFoldableChange_=this.onFoldableChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.invertsY_=t.invertsY,this.maxValue_=t.maxValue,this.element=e.createElement("div"),this.element.classList.add(Kt()),t.layout==="popup"&&this.element.classList.add(Kt(void 0,"p")),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(Kt("p")),t.viewProps.bindTabIndex(c),this.element.appendChild(c),this.padElement=c;const g=e.createElementNS(Fe,"svg");g.classList.add(Kt("g")),this.padElement.appendChild(g),this.svgElem_=g;const k=e.createElementNS(Fe,"line");k.classList.add(Kt("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 S=e.createElementNS(Fe,"line");S.classList.add(Kt("ax")),S.setAttributeNS(null,"x1","50%"),S.setAttributeNS(null,"y1","0"),S.setAttributeNS(null,"x2","50%"),S.setAttributeNS(null,"y2","100%"),this.svgElem_.appendChild(S);const R=e.createElementNS(Fe,"line");R.classList.add(Kt("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(Kt("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=_e(e,-c,+c,0,100),k=_e(t,-c,+c,0,100),S=this.invertsY_?100-k:k;this.lineElem_.setAttributeNS(null,"x2",`${g}%`),this.lineElem_.setAttributeNS(null,"y2",`${S}%`),this.markerElem_.style.left=`${g}%`,this.markerElem_.style.top=`${S}%`}onValueChange_(){this.update_()}onFoldableChange_(){this.update_()}}function Oo(r,e,t){return[Ie(e[0],rt(r)),Ie(e[1],cn(r))*(t?1:-1)]}class _h{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 wh(e,{invertsY:this.invertsY_,layout:t.layout,maxValue:this.maxValue_,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new Pt(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=_e(e.point.x,0,e.bounds.width,-c,+c),k=_e(this.invertsY_?e.bounds.height-e.point.y:e.point.y,0,e.bounds.height,-c,+c);this.value.setRawValue(new Gt(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){Bn(e.key)&&e.preventDefault();const[t,c]=Oo(e,this.baseSteps_,this.invertsY_);t===0&&c===0||this.value.setRawValue(new Gt(this.value.rawValue.x+t,this.value.rawValue.y+c),{forceEmit:!1,last:!1})}onPadKeyUp_(e){const[t,c]=Oo(e,this.baseSteps_,this.invertsY_);t===0&&c===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class yh{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_=Te.create(t.expanded),this.popC_=t.pickerLayout==="popup"?new zi(e,{viewProps:this.viewProps}):null;const k=new _h(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(S=>{S.addEventListener("blur",this.onPopupChildBlur_),S.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=k,this.textC_=new yr(e,{assembly:Eo,axes:t.axes,parser:t.parser,value:this.value,viewProps:this.viewProps}),this.view=new gh(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),jt({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:S=>S.rawValue,backward:(S,R)=>R.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),ze(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=mt(e);c&&t.contains(c)||c&&c===this.view.buttonElement&&!ct(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 Rn{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 Bo={toComponents:r=>r.getComponents(),fromComponents:r=>new Rn(...r)};function xh(r){return Rn.isObject(r)?new Rn(r.x,r.y,r.z):new Rn}function Ch(r,e){r.writeProperty("x",e.x),r.writeProperty("y",e.y),r.writeProperty("z",e.z)}function Ph(r,e){return new Rt({assembly:Bo,components:[St("x"in r?r.x:void 0,e.x),St("y"in r?r.y:void 0,e.y),St("z"in r?r.z:void 0,e.z)]})}function xr(r,e){return{baseStep:kt(e),constraint:e,textProps:q.fromObject({draggingScale:Mt(e,r),formatter:Le(Fn(e,r))})}}const kh={id:"input-point3d",type:"input",accept:(r,e)=>{if(!Rn.isObject(r))return null;const t=L,c=pe(e,{x:t.optional.custom(ut),y:t.optional.custom(ut),z:t.optional.custom(ut)});return c?{initialValue:r,params:c}:null},binding:{reader:r=>xh,constraint:r=>Ph(r.params,r.initialValue),equals:Rn.equals,writer:r=>Ch},controller:r=>{const e=r.value,t=r.constraint;if(!(t instanceof Rt))throw V.shouldNeverHappen();return new yr(r.document,{assembly:Bo,axes:[xr(e.rawValue.x,t.components[0]),xr(e.rawValue.y,t.components[1]),xr(e.rawValue.z,t.components[2])],parser:st,value:e,viewProps:r.viewProps})}};class Gn{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 No={toComponents:r=>r.getComponents(),fromComponents:r=>new Gn(...r)};function Mh(r){return Gn.isObject(r)?new Gn(r.x,r.y,r.z,r.w):new Gn}function Ah(r,e){r.writeProperty("x",e.x),r.writeProperty("y",e.y),r.writeProperty("z",e.z),r.writeProperty("w",e.w)}function Sh(r,e){return new Rt({assembly:No,components:[St("x"in r?r.x:void 0,e.x),St("y"in r?r.y:void 0,e.y),St("z"in r?r.z:void 0,e.z),St("w"in r?r.w:void 0,e.w)]})}function Lh(r,e){return{baseStep:kt(e),constraint:e,textProps:q.fromObject({draggingScale:Mt(e,r),formatter:Le(Fn(e,r))})}}const Vh={id:"input-point4d",type:"input",accept:(r,e)=>{if(!Gn.isObject(r))return null;const t=L,c=pe(e,{x:t.optional.custom(ut),y:t.optional.custom(ut),z:t.optional.custom(ut),w:t.optional.custom(ut)});return c?{initialValue:r,params:c}:null},binding:{reader:r=>Mh,constraint:r=>Sh(r.params,r.initialValue),equals:Gn.equals,writer:r=>Ah},controller:r=>{const e=r.value,t=r.constraint;if(!(t instanceof Rt))throw V.shouldNeverHappen();return new yr(r.document,{assembly:No,axes:e.rawValue.getComponents().map((c,g)=>Lh(c,t.components[g])),parser:st,value:e,viewProps:r.viewProps})}};function Dh(r){const e=[],t=wi(r.options);return t&&e.push(t),new sn(e)}const Ih={id:"input-string",type:"input",accept:(r,e)=>{if(typeof r!="string")return null;const c=pe(e,{options:L.optional.custom(un)});return c?{initialValue:r,params:c}:null},binding:{reader:r=>hi,constraint:r=>Dh(r.params),writer:r=>Ze},controller:r=>{const e=r.document,t=r.value,c=r.constraint,g=c&&Qe(c,rn);return g?new on(e,{props:new q({options:g.values.value("options")}),value:t,viewProps:r.viewProps}):new En(e,{parser:k=>k,props:q.fromObject({formatter:vt}),value:t,viewProps:r.viewProps})}},xi={monitor:{defaultInterval:200,defaultLineCount:3}},Fo=T("mll");class Th{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(Fo()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("textarea");c.classList.add(Fo("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 Cr{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new Th(e,{formatter:t.formatter,lineCount:t.lineCount,value:this.value,viewProps:this.viewProps})}}const zo=T("sgl");class Eh{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(zo()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("input");c.classList.add(zo("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 Pr{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new Eh(e,{formatter:t.formatter,value:this.value,viewProps:this.viewProps})}}const Oh={id:"monitor-bool",type:"monitor",accept:(r,e)=>{if(typeof r!="boolean")return null;const c=pe(e,{lineCount:L.optional.number});return c?{initialValue:r,params:c}:null},binding:{reader:r=>Ui},controller:r=>{var e;return r.value.rawValue.length===1?new Pr(r.document,{formatter:Ri,value:r.value,viewProps:r.viewProps}):new Cr(r.document,{formatter:Ri,lineCount:(e=r.params.lineCount)!==null&&e!==void 0?e:xi.monitor.defaultLineCount,value:r.value,viewProps:r.viewProps})}},$t=T("grl");class Bh{constructor(e,t){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=e.createElement("div"),this.element.classList.add($t()),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(Fe,"svg");c.classList.add($t("g")),c.style.height=`calc(var(--bld-us) * ${t.lineCount})`,this.element.appendChild(c),this.svgElem_=c;const g=e.createElementNS(Fe,"polyline");this.svgElem_.appendChild(g),this.lineElem_=g;const k=e.createElement("div");k.classList.add($t("t"),T("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((me,be)=>{if(me===void 0)return;const bn=_e(be,0,t,0,e.width),Ci=_e(me,c,g,e.height,0);k.push([bn,Ci].join(","))}),this.lineElem_.setAttributeNS(null,"points",k.join(" "));const S=this.tooltipElem_,R=this.value.rawValue[this.cursor_.rawValue];if(R===void 0){S.classList.remove($t("t","a"));return}const W=_e(this.cursor_.rawValue,0,t,0,e.width),H=_e(R,c,g,e.height,0);S.style.left=`${W}px`,S.style.top=`${H}px`,S.textContent=`${this.formatter_(R)}`,S.classList.contains($t("t","a"))||(S.classList.add($t("t","a"),$t("t","in")),tt(S),S.classList.remove($t("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class Nh{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 Bh(e,{cursor:this.cursor_,formatter:t.formatter,lineCount:t.lineCount,props:this.props_,value:this.value,viewProps:this.viewProps}),!ct(e))this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_);else{const c=new Pt(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(_e(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(_e(e.data.point.x,0,e.data.bounds.width,0,this.value.rawValue.length))}onGraphPointerUp_(){this.cursor_.rawValue=-1}}function kr(r){return"format"in r&&!y(r.format)?r.format:Le(2)}function Fh(r){var e;return r.value.rawValue.length===1?new Pr(r.document,{formatter:kr(r.params),value:r.value,viewProps:r.viewProps}):new Cr(r.document,{formatter:kr(r.params),lineCount:(e=r.params.lineCount)!==null&&e!==void 0?e:xi.monitor.defaultLineCount,value:r.value,viewProps:r.viewProps})}function zh(r){var e,t,c;return new Nh(r.document,{formatter:kr(r.params),lineCount:(e=r.params.lineCount)!==null&&e!==void 0?e:xi.monitor.defaultLineCount,props:q.fromObject({maxValue:(t="max"in r.params?r.params.max:null)!==null&&t!==void 0?t:100,minValue:(c="min"in r.params?r.params.min:null)!==null&&c!==void 0?c:0}),value:r.value,viewProps:r.viewProps})}function jo(r){return"view"in r&&r.view==="graph"}const jh={id:"monitor-number",type:"monitor",accept:(r,e)=>{if(typeof r!="number")return null;const t=L,c=pe(e,{format:t.optional.function,lineCount:t.optional.number,max:t.optional.number,min:t.optional.number,view:t.optional.string});return c?{initialValue:r,params:c}:null},binding:{defaultBufferSize:r=>jo(r)?64:1,reader:r=>ht},controller:r=>jo(r.params)?zh(r):Fh(r)},Uh={id:"monitor-string",type:"monitor",accept:(r,e)=>{if(typeof r!="string")return null;const t=L,c=pe(e,{lineCount:t.optional.number,multiline:t.optional.boolean});return c?{initialValue:r,params:c}:null},binding:{reader:r=>hi},controller:r=>{var e;const t=r.value;return t.rawValue.length>1||"multiline"in r.params&&r.params.multiline?new Cr(r.document,{formatter:vt,lineCount:(e=r.params.lineCount)!==null&&e!==void 0?e:xi.monitor.defaultLineCount,value:t,viewProps:r.viewProps}):new Pr(r.document,{formatter:vt,value:t,viewProps:r.viewProps})}};function Rh(r,e){var t;const c=r.accept(e.target.read(),e.params);if(y(c))return null;const g=L,k={target:e.target,initialValue:c.initialValue,params:c.params},S=r.binding.reader(k),R=r.binding.constraint?r.binding.constraint(k):void 0,W=te(S(c.initialValue),{constraint:R,equals:r.binding.equals}),H=new In({reader:S,target:e.target,value:W,writer:r.binding.writer(k)}),me=g.optional.boolean(e.params.disabled).value,be=g.optional.boolean(e.params.hidden).value,bn=r.controller({constraint:R,document:e.document,initialValue:c.initialValue,params:c.params,value:H.value,viewProps:Ke.create({disabled:me,hidden:be})});return new Ne(e.document,{binding:H,blade:Ce(),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:bn})}function Gh(r,e){return e===0?new Oi:new si(r,e??xi.monitor.defaultInterval)}function Kh(r,e){var t,c,g;const k=L,S=r.accept(e.target.read(),e.params);if(y(S))return null;const R={target:e.target,initialValue:S.initialValue,params:S.params},W=r.binding.reader(R),H=(c=(t=k.optional.number(e.params.bufferSize).value)!==null&&t!==void 0?t:r.binding.defaultBufferSize&&r.binding.defaultBufferSize(S.params))!==null&&c!==void 0?c:1,me=k.optional.number(e.params.interval).value,be=new js({reader:W,target:e.target,ticker:Gh(e.document,me),value:Bi(H)}),bn=k.optional.boolean(e.params.disabled).value,Ci=k.optional.boolean(e.params.hidden).value,Pi=r.controller({document:e.document,params:S.params,value:be.value,viewProps:Ke.create({disabled:bn,hidden:Ci})});return new nt(e.document,{binding:be,blade:Ce(),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:Pi})}class $h{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 V({context:{key:t.key},type:"nomatchingcontroller"});const k=this.pluginsMap_.inputs.reduce((S,R)=>S??Rh(R,{document:e,target:t,params:c}),null);if(k)return k;throw new V({context:{key:t.key},type:"nomatchingcontroller"})}createMonitor(e,t,c){const g=this.pluginsMap_.monitors.reduce((k,S)=>k??Kh(S,{document:e,params:c,target:t}),null);if(g)return g;throw new V({context:{key:t.key},type:"nomatchingcontroller"})}createBlade(e,t){const c=this.pluginsMap_.blades.reduce((g,k)=>g??zs(k,{document:e,params:t}),null);if(!c)throw new V({type:"nomatchingview",context:{params:t}});return c}createBladeApi(e){if(e instanceof Ne)return new Zn(e);if(e instanceof nt)return new Wn(e);if(e instanceof en)return new Ln(e,this);const t=this.pluginsMap_.blades.reduce((c,g)=>c??g.api({controller:e,pool:this}),null);if(!t)throw V.shouldNeverHappen();return t}}function Xh(){const r=new $h;return[Jh,kh,Vh,Ih,bh,uh,hh,ah,zn,Oh,Uh,jh,ee,Es,Bs,ii].forEach(e=>{r.register(e)}),r}function Yh(r){return Gt.isObject(r)?new Gt(r.x,r.y):new Gt}function qh(r,e){r.writeProperty("x",e.x),r.writeProperty("y",e.y)}function St(r,e){if(!r)return;const t=[],c=Io(r,e);c&&t.push(c);const g=To(r);return g&&t.push(g),new sn(t)}function Qh(r,e){return new Rt({assembly:Eo,components:[St("x"in r?r.x:void 0,e.x),St("y"in r?r.y:void 0,e.y)]})}function Uo(r,e){const[t,c]=r?fh(r):[];if(!y(t)||!y(c))return Math.max(Math.abs(t??0),Math.abs(c??0));const g=kt(r);return Math.max(Math.abs(g)*10,Math.abs(e)*10)}function Zh(r,e){const t=e instanceof Rt?e.components[0]:void 0,c=e instanceof Rt?e.components[1]:void 0,g=Uo(t,r.x),k=Uo(c,r.y);return Math.max(g,k)}function Ro(r,e){return{baseStep:kt(e),constraint:e,textProps:q.fromObject({draggingScale:Mt(e,r),formatter:Le(Fn(e,r))})}}function Wh(r){if(!("y"in r))return!1;const e=r.y;return e&&"inverted"in e?!!e.inverted:!1}const Jh={id:"input-point2d",type:"input",accept:(r,e)=>{if(!Gt.isObject(r))return null;const t=L,c=pe(e,{expanded:t.optional.boolean,picker:t.optional.custom(gi),x:t.optional.custom(ut),y:t.optional.object({inverted:t.optional.boolean,max:t.optional.number,min:t.optional.number,step:t.optional.number})});return c?{initialValue:r,params:c}:null},binding:{reader:r=>Yh,constraint:r=>Qh(r.params,r.initialValue),equals:Gt.equals,writer:r=>qh},controller:r=>{const e=r.document,t=r.value,c=r.constraint;if(!(c instanceof Rt))throw V.shouldNeverHappen();const g="expanded"in r.params?r.params.expanded:void 0,k="picker"in r.params?r.params.picker:void 0;return new yh(e,{axes:[Ro(t.rawValue.x,c.components[0]),Ro(t.rawValue.y,c.components[1])],expanded:g??!1,invertsY:Wh(r.params),maxValue:Zh(t.rawValue,c),parser:st,pickerLayout:k??"popup",value:t,viewProps:r.viewProps})}};class Go extends o{constructor(e){super(e),this.emitter_=new z,this.controller_.valueController.value.emitter.on("change",t=>{this.emitter_.emit("change",{event:new p(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 Ko extends o{constructor(e){super(e),this.emitter_=new z,this.controller_.valueController.value.emitter.on("change",t=>{this.emitter_.emit("change",{event:new p(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 $o extends o{constructor(e){super(e),this.emitter_=new z,this.controller_.valueController.value.emitter.on("change",t=>{this.emitter_.emit("change",{event:new p(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 Hh=function(){return{id:"list",type:"blade",accept(r){const e=L,t=pe(r,{options:e.required.custom(un),value:e.required.raw,view:e.required.constant("list"),label:e.optional.string});return t?{params:t}:null},controller(r){const e=new rn(Ji(r.params.options)),t=te(r.params.value,{constraint:e}),c=new on(r.document,{props:new q({options:e.values.value("options")}),value:t,viewProps:r.viewProps});return new Et(r.document,{blade:r.blade,props:q.fromObject({label:r.params.label}),valueController:c})},api(r){return!(r.controller instanceof Et)||!(r.controller.valueController instanceof on)?null:new Go(r.controller)}}}();function eu(r){return r.reduce((e,t)=>Object.assign(e,{[t.presetKey]:t.read()}),{})}function tu(r,e){r.forEach(t=>{const c=e[t.target.presetKey];c!==void 0&&t.writer(t.target,t.reader(c))})}class nu extends Jn{constructor(e,t){super(e,t)}get element(){return this.controller_.view.element}importPreset(e){const t=this.controller_.rackController.rack.find(Ne).map(c=>c.binding);tu(t,e),this.refresh()}exportPreset(){const e=this.controller_.rackController.rack.find(Ne).map(t=>t.binding.target);return eu(e)}refresh(){this.controller_.rackController.rack.find(Ne).forEach(e=>{e.binding.read()}),this.controller_.rackController.rack.find(nt).forEach(e=>{e.binding.read()})}}class iu extends Vn{constructor(e,t){super(e,{expanded:t.expanded,blade:t.blade,props:t.props,root:!0,viewProps:t.viewProps})}}const su={id:"slider",type:"blade",accept(r){const e=L,t=pe(r,{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(r){var e,t;const c=(e=r.params.value)!==null&&e!==void 0?e:0,g=new Ft({max:r.params.max,min:r.params.min}),k=new Nn(r.document,{baseStep:1,parser:st,sliderProps:new q({maxValue:g.values.value("max"),minValue:g.values.value("min")}),textProps:q.fromObject({draggingScale:Mt(void 0,c),formatter:(t=r.params.format)!==null&&t!==void 0?t:sr}),value:te(c,{constraint:g}),viewProps:r.viewProps});return new Et(r.document,{blade:r.blade,props:q.fromObject({label:r.params.label}),valueController:k})},api(r){return!(r.controller instanceof Et)||!(r.controller.valueController instanceof Nn)?null:new Ko(r.controller)}},ru=function(){return{id:"text",type:"blade",accept(r){const e=L,t=pe(r,{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(r){var e;const t=new En(r.document,{parser:r.params.parse,props:q.fromObject({formatter:(e=r.params.format)!==null&&e!==void 0?e:c=>String(c)}),value:te(r.params.value),viewProps:r.viewProps});return new Et(r.document,{blade:r.blade,props:q.fromObject({label:r.params.label}),valueController:t})},api(r){return!(r.controller instanceof Et)||!(r.controller.valueController instanceof En)?null:new $o(r.controller)}}}();function ou(r){const e=r.createElement("div");return e.classList.add(T("dfw")()),r.body&&r.body.appendChild(e),e}function Xo(r,e,t){if(r.querySelector(`style[data-tp-style=${e}]`))return;const c=r.createElement("style");c.dataset.tpStyle=e,c.textContent=t,r.head.appendChild(c)}class au extends nu{constructor(e){var t,c;const g=e??{},k=(t=g.document)!==null&&t!==void 0?t:qn(),S=Xh(),R=new iu(k,{expanded:g.expanded,blade:Ce(),props:q.fromObject({title:g.title}),viewProps:Ke.create()});super(R,S),this.pool_=S,this.containerElem_=(c=g.container)!==null&&c!==void 0?c:ou(k),this.containerElem_.appendChild(this.element),this.doc_=k,this.usesDefaultWrapper_=!g.container,this.setUpDefaultPlugins_()}get document(){if(!this.doc_)throw V.alreadyDisposed();return this.doc_}dispose(){const e=this.containerElem_;if(!e)throw V.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&&Xo(this.document,`plugin-${e.id}`,e.css)}setUpDefaultPlugins_(){Xo(this.document,"default",'.tp-tbiv_b,.tp-coltxtv_ms,.tp-ckbv_i,.tp-rotv_b,.tp-fldv_b,.tp-mllv_i,.tp-sglv_i,.tp-grlv_g,.tp-txtv_i,.tp-p2dpv_p,.tp-colswv_sw,.tp-p2dv_b,.tp-btnv_b,.tp-lstv_s{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-p2dv_b,.tp-btnv_b,.tp-lstv_s{background-color:var(--btn-bg);border-radius:var(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-p2dv_b:hover,.tp-btnv_b:hover,.tp-lstv_s:hover{background-color:var(--btn-bg-h)}.tp-p2dv_b:focus,.tp-btnv_b:focus,.tp-lstv_s:focus{background-color:var(--btn-bg-f)}.tp-p2dv_b:active,.tp-btnv_b:active,.tp-lstv_s:active{background-color:var(--btn-bg-a)}.tp-p2dv_b:disabled,.tp-btnv_b:disabled,.tp-lstv_s:disabled{opacity:.5}.tp-txtv_i,.tp-p2dpv_p,.tp-colswv_sw{background-color:var(--in-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);min-width:0;width:100%}.tp-txtv_i:hover,.tp-p2dpv_p:hover,.tp-colswv_sw:hover{background-color:var(--in-bg-h)}.tp-txtv_i:focus,.tp-p2dpv_p:focus,.tp-colswv_sw:focus{background-color:var(--in-bg-f)}.tp-txtv_i:active,.tp-p2dpv_p:active,.tp-colswv_sw:active{background-color:var(--in-bg-a)}.tp-txtv_i:disabled,.tp-p2dpv_p:disabled,.tp-colswv_sw:disabled{opacity:.5}.tp-mllv_i,.tp-sglv_i,.tp-grlv_g{background-color:var(--mo-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--mo-fg);height:var(--bld-us);scrollbar-color:currentColor rgba(0,0,0,0);scrollbar-width:thin;width:100%}.tp-mllv_i::-webkit-scrollbar,.tp-sglv_i::-webkit-scrollbar,.tp-grlv_g::-webkit-scrollbar{height:8px;width:8px}.tp-mllv_i::-webkit-scrollbar-corner,.tp-sglv_i::-webkit-scrollbar-corner,.tp-grlv_g::-webkit-scrollbar-corner{background-color:rgba(0,0,0,0)}.tp-mllv_i::-webkit-scrollbar-thumb,.tp-sglv_i::-webkit-scrollbar-thumb,.tp-grlv_g::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:currentColor;border:rgba(0,0,0,0) solid 2px;border-radius:4px}.tp-rotv{--font-family: var(--tp-font-family, Roboto Mono, Source Code Pro, Menlo, Courier, monospace);--bs-br: var(--tp-base-border-radius, 6px);--cnt-h-p: var(--tp-container-horizontal-padding, 4px);--cnt-v-p: var(--tp-container-vertical-padding, 4px);--elm-br: var(--tp-element-border-radius, 2px);--bld-s: var(--tp-blade-spacing, 4px);--bld-us: var(--tp-blade-unit-size, 20px);--bs-bg: var(--tp-base-background-color, hsl(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:[su,Hh,ii,ru]})}}const lu=new s("3.1.9");i.BladeApi=o,i.ButtonApi=F,i.FolderApi=Jn,i.InputBindingApi=Zn,i.ListApi=Go,i.MonitorBindingApi=Wn,i.Pane=au,i.SeparatorApi=Di,i.SliderApi=Ko,i.TabApi=Ti,i.TabPageApi=ni,i.TextApi=$o,i.TpChangeEvent=p,i.VERSION=lu,Object.defineProperty(i,"__esModule",{value:!0})})})(xs,xs.exports);var fp=xs.exports,Cs={exports:{}};(function(v,n){(function(i,s){s(n)})(Hr,function(i){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,h,b,P){super(a),this.value=h,this.presetKey=b,this.last=P??!0}}function p(m){return m}function u(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 h;this.message=(h=d[a.type](a.context))!==null&&h!==void 0?h:"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,h){let b=this.observers_[a];return b||(b=this.observers_[a]=[]),b.push({handler:h}),this}off(a,h){const b=this.observers_[a];return b&&(this.observers_[a]=b.filter(P=>P.handler!==h)),this}emit(a,h){const b=this.observers_[a];b&&b.forEach(P=>{P.handler(h)})}}const y="tp";function C(m){return(h,b)=>[y,"-",m,"v",h?`_${h}`:"",b?`-${b}`:""].join("")}function M(m,a){return h=>a(m(h))}function E(m){return m.rawValue}function V(m,a){m.emitter.on("change",M(E,a)),a(m.rawValue)}function I(m,a,h){V(m.value(a),h)}function F(m,a,h){h?m.classList.add(a):m.classList.remove(a)}function z(m,a){return h=>{F(m,a,h)}}function N(m,a){V(m,h=>{a.textContent=h??""})}const T=C("btn");class Q{constructor(a,h){this.element=a.createElement("div"),this.element.classList.add(T()),h.viewProps.bindClassModifiers(this.element);const b=a.createElement("button");b.classList.add(T("b")),h.viewProps.bindDisabled(b),this.element.appendChild(b),this.buttonElement=b;const P=a.createElement("div");P.classList.add(T("t")),N(h.props.value("title"),P),this.buttonElement.appendChild(P)}}class ${constructor(a,h){this.emitter=new _,this.onClick_=this.onClick_.bind(this),this.props=h.props,this.viewProps=h.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,h){var b;this.constraint_=h==null?void 0:h.constraint,this.equals_=(b=h==null?void 0:h.equals)!==null&&b!==void 0?b:(P,A)=>P===A,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,h){const b=h??{forceEmit:!1,last:!0},P=this.constraint_?this.constraint_.constrain(a):a,A=this.rawValue_;this.equals_(A,P)&&!b.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=P,this.emitter.emit("change",{options:b,previousRawValue:A,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,h){const b=h??{forceEmit:!1,last:!0},P=this.value_;P===a&&!b.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.value_=a,this.emitter.emit("change",{options:b,previousRawValue:P,rawValue:this.value_,sender:this}))}}function X(m,a){const h=a==null?void 0:a.constraint,b=a==null?void 0:a.equals;return!h&&!b?new j(m):new U(m,a)}class Y{constructor(a){this.emitter=new _,this.valMap_=a;for(const h in this.valMap_)this.valMap_[h].emitter.on("change",()=>{this.emitter.emit("change",{key:h,sender:this})})}static createCore(a){return Object.keys(a).reduce((b,P)=>Object.assign(b,{[P]:X(a[P])}),{})}static fromObject(a){const h=this.createCore(a);return new Y(h)}get(a){return this.valMap_[a].rawValue}set(a,h){this.valMap_[a].rawValue=h}value(a){return this.valMap_[a]}}function Z(m,a){const b=Object.keys(a).reduce((P,A)=>{if(P===void 0)return;const O=a[A],G=O(m[A]);return G.succeeded?Object.assign(Object.assign({},P),{[A]:G.value}):void 0},{});return b}function ue(m,a){return m.reduce((h,b)=>{if(h===void 0)return;const P=a(b);if(!(!P.succeeded||P.value===void 0))return[...h,P.value]},[])}function we(m){return m===null?!1:typeof m=="object"}function he(m){return a=>h=>{if(!a&&h===void 0)return{succeeded:!1,value:void 0};if(a&&h===void 0)return{succeeded:!0,value:void 0};const b=m(h);return b!==void 0?{succeeded:!0,value:b}:{succeeded:!1,value:void 0}}}function fe(m){return{custom:a=>he(a)(m),boolean:he(a=>typeof a=="boolean"?a:void 0)(m),number:he(a=>typeof a=="number"?a:void 0)(m),string:he(a=>typeof a=="string"?a:void 0)(m),function:he(a=>typeof a=="function"?a:void 0)(m),constant:a=>he(h=>h===a?a:void 0)(m),raw:he(a=>a)(m),object:a=>he(h=>{if(we(h))return Z(h,a)})(m),array:a=>he(h=>{if(Array.isArray(h))return ue(h,a)})(m)}}const de={optional:fe(!0),required:fe(!1)};function te(m,a){const h=de.required.object(a)(m);return h.succeeded?h.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 Pe(m){return m&&m.parentElement&&m.parentElement.removeChild(m),null}class ve{constructor(a){this.value_=a}static create(a){return[new ve(a),(h,b)=>{a.setRawValue(h,b)}]}get emitter(){return this.value_.emitter}get rawValue(){return this.value_.rawValue}}const ce=C("");function se(m,a){return z(m,ce(void 0,a))}class ge extends Y{constructor(a){var h;super(a),this.onDisabledChange_=this.onDisabledChange_.bind(this),this.onParentChange_=this.onParentChange_.bind(this),this.onParentGlobalDisabledChange_=this.onParentGlobalDisabledChange_.bind(this),[this.globalDisabled_,this.setGlobalDisabled_]=ve.create(X(this.getGlobalDisabled_())),this.value("disabled").emitter.on("change",this.onDisabledChange_),this.value("parent").emitter.on("change",this.onParentChange_),(h=this.get("parent"))===null||h===void 0||h.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_)}static create(a){var h,b,P;const A=a??{};return new ge(Y.createCore({disabled:(h=A.disabled)!==null&&h!==void 0?h:!1,disposed:!1,hidden:(b=A.hidden)!==null&&b!==void 0?b:!1,parent:(P=A.parent)!==null&&P!==void 0?P:null}))}get globalDisabled(){return this.globalDisabled_}bindClassModifiers(a){V(this.globalDisabled_,se(a,"disabled")),I(this,"hidden",se(a,"hidden"))}bindDisabled(a){V(this.globalDisabled_,h=>{a.disabled=h})}bindTabIndex(a){V(this.globalDisabled_,h=>{a.tabIndex=h?-1:0})}handleDispose(a){this.value("disposed").emitter.on("change",h=>{h&&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 h;const b=a.previousRawValue;b==null||b.globalDisabled.emitter.off("change",this.onParentGlobalDisabledChange_),(h=this.get("parent"))===null||h===void 0||h.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_),this.updateGlobalDisabled_()}}function L(){return["veryfirst","first","last","verylast"]}const pe=C(""),De={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class Be{constructor(a){this.parent_=null,this.blade=a.blade,this.view=a.view,this.viewProps=a.viewProps;const h=this.view.element;this.blade.value("positions").emitter.on("change",()=>{L().forEach(b=>{h.classList.remove(pe(void 0,De[b]))}),this.blade.get("positions").forEach(b=>{h.classList.add(pe(void 0,De[b]))})}),this.viewProps.handleDispose(()=>{Pe(h)})}get parent(){return this.parent_}set parent(a){if(this.parent_=a,!("parent"in this.viewProps.valMap_)){q({key:"parent",target:ge.name,place:"BladeController.parent"});return}this.viewProps.set("parent",this.parent_?this.parent_.viewProps:null)}}const ye="http://www.w3.org/2000/svg";function et(m){m.offsetHeight}function xn(m,a){const h=m.style.transition;m.style.transition="none",a(),m.style.transition=h}function Ke(m){return m.ontouchstart!==void 0}function Cn(m){for(;m.childNodes.length>0;)m.removeChild(m.childNodes[0])}function Qt(m){return m.relatedTarget?m.relatedTarget:"explicitOriginalTarget"in m?m.explicitOriginalTarget:null}const lt=C("lbl");function gt(m,a){const h=m.createDocumentFragment();return a.split(`
93
- `).map(P=>m.createTextNode(P)).forEach((P,A)=>{A>0&&h.appendChild(m.createElement("br")),h.appendChild(P)}),h}class Fe{constructor(a,h){this.element=a.createElement("div"),this.element.classList.add(lt()),h.viewProps.bindClassModifiers(this.element);const b=a.createElement("div");b.classList.add(lt("l")),I(h.props,"label",A=>{u(A)?this.element.classList.add(lt(void 0,"nol")):(this.element.classList.remove(lt(void 0,"nol")),Cn(b),b.appendChild(gt(a,A)))}),this.element.appendChild(b),this.labelElement=b;const P=a.createElement("div");P.classList.add(lt("v")),this.element.appendChild(P),this.valueElement=P}}class tt extends Be{constructor(a,h){const b=h.valueController.viewProps;super(Object.assign(Object.assign({},h),{view:new Fe(a,{props:h.props,viewProps:b}),viewProps:b})),this.props=h.props,this.valueController=h.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class Zt extends Be{constructor(a){super(a),this.value=a.value}}class ct extends Y{constructor(a){super(a)}static create(a){const h={completed:!0,expanded:a,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null},b=Y.createCore(h);return new ct(b)}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")&&!u(a)?`${a}px`:"auto"}bindExpandedClass(a,h){const b=()=>{this.styleExpanded?a.classList.add(h):a.classList.remove(h)};I(this,"expanded",b),I(this,"temporaryExpanded",b)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function Pn(m){return ct.create(m)}function qn(m,a){let h=0;return xn(a,()=>{m.set("expandedHeight",null),m.set("temporaryExpanded",!0),et(a),h=a.clientHeight,m.set("temporaryExpanded",null),et(a)}),h}function kn(m,a){a.style.height=m.styleHeight}function Mn(m,a){m.value("expanded").emitter.on("beforechange",()=>{m.set("completed",!1),u(m.get("expandedHeight"))&&m.set("expandedHeight",qn(m,a)),m.set("shouldFixHeight",!0),et(a)}),m.emitter.on("change",()=>{kn(m,a)}),kn(m,a),a.addEventListener("transitionend",h=>{h.propertyName==="height"&&m.cleanUpTransition()})}class dt{constructor(a,h){const b=C(h.viewName);this.element=a.createElement("div"),this.element.classList.add(b()),h.viewProps.bindClassModifiers(this.element)}}class wt extends Zt{constructor(a,h){const b=h.valueController.viewProps;super(Object.assign(Object.assign({},h),{value:h.valueController.value,view:new Fe(a,{props:h.props,viewProps:b}),viewProps:b})),this.props=h.props,this.valueController=h.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class An{constructor(){this.disabled=!1,this.emitter=new _}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class Wt{constructor(a,h){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=a,this.emitter=new _,this.interval_=h,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 Sn{constructor(a){this.constraints=a}constrain(a){return this.constraints.reduce((h,b)=>b.constrain(h),a)}}function mt(m,a){if(m instanceof a)return m;if(m instanceof Sn){const h=m.constraints.reduce((b,P)=>b||(P instanceof a?P:null),null);if(h)return h}return null}class pt{constructor(a){this.values=Y.fromObject({max:a.max,min:a.min})}constrain(a){const h=this.values.get("max"),b=this.values.get("min");return Math.min(Math.max(a,b),h)}}class _t{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 h=this.values.get("max"),b=this.values.get("min");let P=a;return u(b)||(P=Math.max(P,b)),u(h)||(P=Math.min(P,h)),P}}class D{constructor(a,h=0){this.step=a,this.origin=h}constrain(a){const h=this.origin%this.step,b=Math.round((a-h)/this.step);return h+b*this.step}}const K=C("pop");class ee{constructor(a,h){this.element=a.createElement("div"),this.element.classList.add(K()),h.viewProps.bindClassModifiers(this.element),V(h.shows,z(this.element,K(void 0,"v")))}}class re{constructor(a,h){this.shows=X(!1),this.viewProps=h.viewProps,this.view=new ee(a,{shows:this.shows,viewProps:this.viewProps})}}const Ce=C("txt");class Te{constructor(a,h){this.onChange_=this.onChange_.bind(this),this.element=a.createElement("div"),this.element.classList.add(Ce()),h.viewProps.bindClassModifiers(this.element),this.props_=h.props,this.props_.emitter.on("change",this.onChange_);const b=a.createElement("input");b.classList.add(Ce("i")),b.type="text",h.viewProps.bindDisabled(b),this.element.appendChild(b),this.inputElement=b,h.value.emitter.on("change",this.onChange_),this.value_=h.value,this.refresh()}refresh(){const a=this.props_.get("formatter");this.inputElement.value=a(this.value_.rawValue)}onChange_(){this.refresh()}}class Tt{constructor(a,h){this.onInputChange_=this.onInputChange_.bind(this),this.parser_=h.parser,this.props=h.props,this.value=h.value,this.viewProps=h.viewProps,this.view=new Te(a,{props:h.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(a){const b=a.currentTarget.value,P=this.parser_(b);u(P)||(this.value.rawValue=P),this.view.refresh()}}function Jt(m){return m==="false"?!1:!!m}class ze{constructor(a){this.text=a}evaluate(){return Number(this.text)}toString(){return this.text}}const je={"**":(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 Ps{constructor(a,h,b){this.left=h,this.operator=a,this.right=b}evaluate(){const a=je[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 ks={"+":m=>m,"-":m=>-m,"~":m=>~m};class Ms{constructor(a,h){this.operator=a,this.expression=h}evaluate(){const a=ks[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 Qn(m){return(a,h)=>{for(let b=0;b<m.length;b++){const P=m[b](a,h);if(P!=="")return P}return""}}function yt(m,a){var h;const b=m.substr(a).match(/^\s+/);return(h=b&&b[0])!==null&&h!==void 0?h:""}function Zn(m,a){const h=m.substr(a,1);return h.match(/^[1-9]$/)?h:""}function Ne(m,a){var h;const b=m.substr(a).match(/^[0-9]+/);return(h=b&&b[0])!==null&&h!==void 0?h:""}function Wn(m,a){const h=Ne(m,a);if(h!=="")return h;const b=m.substr(a,1);if(a+=1,b!=="-"&&b!=="+")return"";const P=Ne(m,a);return P===""?"":b+P}function nt(m,a){const h=m.substr(a,1);if(a+=1,h.toLowerCase()!=="e")return"";const b=Wn(m,a);return b===""?"":h+b}function Si(m,a){const h=m.substr(a,1);if(h==="0")return h;const b=Zn(m,a);return a+=b.length,b===""?"":b+Ne(m,a)}function Ht(m,a){const h=Si(m,a);if(a+=h.length,h==="")return"";const b=m.substr(a,1);if(a+=b.length,b!==".")return"";const P=Ne(m,a);return a+=P.length,h+b+P+nt(m,a)}function Li(m,a){const h=m.substr(a,1);if(a+=h.length,h!==".")return"";const b=Ne(m,a);return a+=b.length,b===""?"":h+b+nt(m,a)}function Ln(m,a){const h=Si(m,a);return a+=h.length,h===""?"":h+nt(m,a)}const Jn=Qn([Ht,Li,Ln]);function Hn(m,a){var h;const b=m.substr(a).match(/^[01]+/);return(h=b&&b[0])!==null&&h!==void 0?h:""}function As(m,a){const h=m.substr(a,2);if(a+=h.length,h.toLowerCase()!=="0b")return"";const b=Hn(m,a);return b===""?"":h+b}function Ss(m,a){var h;const b=m.substr(a).match(/^[0-7]+/);return(h=b&&b[0])!==null&&h!==void 0?h:""}function Ls(m,a){const h=m.substr(a,2);if(a+=h.length,h.toLowerCase()!=="0o")return"";const b=Ss(m,a);return b===""?"":h+b}function Vs(m,a){var h;const b=m.substr(a).match(/^[0-9a-f]+/i);return(h=b&&b[0])!==null&&h!==void 0?h:""}function ei(m,a){const h=m.substr(a,2);if(a+=h.length,h.toLowerCase()!=="0x")return"";const b=Vs(m,a);return b===""?"":h+b}const Ds=Qn([As,Ls,ei]),Is=Qn([Ds,Jn]);function en(m,a){const h=Is(m,a);return a+=h.length,h===""?null:{evaluable:new ze(h),cursor:a}}function Vi(m,a){const h=m.substr(a,1);if(a+=h.length,h!=="(")return null;const b=ti(m,a);if(!b)return null;a=b.cursor,a+=yt(m,a).length;const P=m.substr(a,1);return a+=P.length,P!==")"?null:{evaluable:b.evaluable,cursor:a}}function Ts(m,a){var h;return(h=en(m,a))!==null&&h!==void 0?h:Vi(m,a)}function Vn(m,a){const h=Ts(m,a);if(h)return h;const b=m.substr(a,1);if(a+=b.length,b!=="+"&&b!=="-"&&b!=="~")return null;const P=Vn(m,a);return P?(a=P.cursor,{cursor:a,evaluable:new Ms(b,P.evaluable)}):null}function Es(m,a,h){h+=yt(a,h).length;const b=m.filter(P=>a.startsWith(P,h))[0];return b?(h+=b.length,h+=yt(a,h).length,{cursor:h,operator:b}):null}function Et(m,a){return(h,b)=>{const P=m(h,b);if(!P)return null;b=P.cursor;let A=P.evaluable;for(;;){const O=Es(a,h,b);if(!O)break;b=O.cursor;const G=m(h,b);if(!G)return null;b=G.cursor,A=new Ps(O.operator,A,G.evaluable)}return A?{cursor:b,evaluable:A}:null}}const Di=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((m,a)=>Et(m,a),Vn);function ti(m,a){return a+=yt(m,a).length,Di(m,a)}function Os(m){const a=ti(m,0);return!a||a.cursor+yt(m,a.cursor).length!==m.length?null:a.evaluable}function tn(m){var a;const h=Os(m);return(a=h==null?void 0:h.evaluate())!==null&&a!==void 0?a:null}function Bs(m){if(typeof m=="number")return m;if(typeof m=="string"){const a=tn(m);if(!u(a))return a}return 0}function Se(m){return a=>a.toFixed(Math.max(Math.min(m,20),0))}const Ns=Se(0);function Dn(m){return Ns(m)+"%"}function Ii(m){return String(m)}function ni(m,a){for(;m.length<a;)m.push(void 0)}function Ti(m){const a=[];return ni(a,m),X(a)}function Ei(m){const a=m.indexOf(void 0);return a<0?m:m.slice(0,a)}function Fs(m,a){const h=[...Ei(m),a];return h.length>m.length?h.splice(0,h.length-m.length):ni(h,m.length),h}function Ot({primary:m,secondary:a,forward:h,backward:b}){let P=!1;function A(O){P||(P=!0,O(),P=!1)}m.emitter.on("change",O=>{A(()=>{a.setRawValue(h(m,a),O.options)})}),a.emitter.on("change",O=>{A(()=>{m.setRawValue(b(m,a),O.options)}),A(()=>{a.setRawValue(h(m,a),O.options)})}),A(()=>{a.setRawValue(h(m,a),{forceEmit:!1,last:!0})})}function Bt(m,a){const h=m*(a.altKey?.1:1)*(a.shiftKey?10:1);return a.upKey?+h:a.downKey?-h:0}function nn(m){return{altKey:m.altKey,downKey:m.key==="ArrowDown",shiftKey:m.shiftKey,upKey:m.key==="ArrowUp"}}function ii(m){return{altKey:m.altKey,downKey:m.key==="ArrowLeft",shiftKey:m.shiftKey,upKey:m.key==="ArrowRight"}}function zs(m){return m==="ArrowUp"||m==="ArrowDown"}function Oi(m){return zs(m)||m==="ArrowLeft"||m==="ArrowRight"}function si(m,a){var h,b;const P=a.ownerDocument.defaultView,A=a.getBoundingClientRect();return{x:m.pageX-(((h=P&&P.scrollX)!==null&&h!==void 0?h:0)+A.left),y:m.pageY-(((b=P&&P.scrollY)!==null&&b!==void 0?b:0)+A.top)}}class In{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 h=this.elem_.getBoundingClientRect();return{bounds:{width:h.width,height:h.height},point:a?{x:a.x,y:a.y}:null}}onMouseDown_(a){var h;a.preventDefault(),(h=a.currentTarget)===null||h===void 0||h.focus();const b=this.elem_.ownerDocument;b.addEventListener("mousemove",this.onDocumentMouseMove_),b.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:a.altKey,data:this.computePosition_(si(a,this.elem_)),sender:this,shiftKey:a.shiftKey})}onDocumentMouseMove_(a){this.emitter.emit("move",{altKey:a.altKey,data:this.computePosition_(si(a,this.elem_)),sender:this,shiftKey:a.shiftKey})}onDocumentMouseUp_(a){const h=this.elem_.ownerDocument;h.removeEventListener("mousemove",this.onDocumentMouseMove_),h.removeEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("up",{altKey:a.altKey,data:this.computePosition_(si(a,this.elem_)),sender:this,shiftKey:a.shiftKey})}onTouchStart_(a){a.preventDefault();const h=a.targetTouches.item(0),b=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:a.altKey,data:this.computePosition_(h?{x:h.clientX-b.left,y:h.clientY-b.top}:void 0),sender:this,shiftKey:a.shiftKey}),this.lastTouch_=h}onTouchMove_(a){const h=a.targetTouches.item(0),b=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:a.altKey,data:this.computePosition_(h?{x:h.clientX-b.left,y:h.clientY-b.top}:void 0),sender:this,shiftKey:a.shiftKey}),this.lastTouch_=h}onTouchEnd_(a){var h;const b=(h=a.targetTouches.item(0))!==null&&h!==void 0?h:this.lastTouch_,P=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:a.altKey,data:this.computePosition_(b?{x:b.clientX-P.left,y:b.clientY-P.top}:void 0),sender:this,shiftKey:a.shiftKey})}}function ke(m,a,h,b,P){const A=(m-a)/(h-a);return b+A*(P-b)}function Bi(m){return String(m.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function Nt(m,a,h){return Math.min(Math.max(m,a),h)}const $e=C("txt");class js{constructor(a,h){this.onChange_=this.onChange_.bind(this),this.props_=h.props,this.props_.emitter.on("change",this.onChange_),this.element=a.createElement("div"),this.element.classList.add($e(),$e(void 0,"num")),h.arrayPosition&&this.element.classList.add($e(void 0,h.arrayPosition)),h.viewProps.bindClassModifiers(this.element);const b=a.createElement("input");b.classList.add($e("i")),b.type="text",h.viewProps.bindDisabled(b),this.element.appendChild(b),this.inputElement=b,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=h.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add($e()),this.inputElement.classList.add($e("i"));const P=a.createElement("div");P.classList.add($e("k")),this.element.appendChild(P),this.knobElement=P;const A=a.createElementNS(ye,"svg");A.classList.add($e("g")),this.knobElement.appendChild(A);const O=a.createElementNS(ye,"path");O.classList.add($e("gb")),A.appendChild(O),this.guideBodyElem_=O;const G=a.createElementNS(ye,"path");G.classList.add($e("gh")),A.appendChild(G),this.guideHeadElem_=G;const le=a.createElement("div");le.classList.add(C("tt")()),this.knobElement.appendChild(le),this.tooltipElem_=le,h.value.emitter.on("change",this.onChange_),this.value=h.value,this.refresh()}onDraggingChange_(a){if(a.rawValue===null){this.element.classList.remove($e(void 0,"drg"));return}this.element.classList.add($e(void 0,"drg"));const h=a.rawValue/this.props_.get("draggingScale"),b=h+(h>0?-1:h<0?1:0),P=Nt(-b,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${b+P},0 L${b},4 L${b+P},8`,`M ${h},-1 L${h},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${h},4`);const A=this.props_.get("formatter");this.tooltipElem_.textContent=A(this.value.rawValue),this.tooltipElem_.style.left=`${h}px`}refresh(){const a=this.props_.get("formatter");this.inputElement.value=a(this.value.rawValue)}onChange_(){this.refresh()}}class sn{constructor(a,h){var b;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_=h.baseStep,this.parser_=h.parser,this.props=h.props,this.sliderProps_=(b=h.sliderProps)!==null&&b!==void 0?b:null,this.value=h.value,this.viewProps=h.viewProps,this.dragging_=X(null),this.view=new js(a,{arrayPosition:h.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 In(this.view.knobElement);P.emitter.on("down",this.onPointerDown_),P.emitter.on("move",this.onPointerMove_),P.emitter.on("up",this.onPointerUp_)}constrainValue_(a){var h,b;const P=(h=this.sliderProps_)===null||h===void 0?void 0:h.get("minValue"),A=(b=this.sliderProps_)===null||b===void 0?void 0:b.get("maxValue");let O=a;return P!==void 0&&(O=Math.max(O,P)),A!==void 0&&(O=Math.min(O,A)),O}onInputChange_(a){const b=a.currentTarget.value,P=this.parser_(b);u(P)||(this.value.rawValue=this.constrainValue_(P)),this.view.refresh()}onInputKeyDown_(a){const h=Bt(this.baseStep_,nn(a));h!==0&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+h),{forceEmit:!1,last:!1})}onInputKeyUp_(a){Bt(this.baseStep_,nn(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 h=a.point.x-a.bounds.width/2;return this.constrainValue_(this.originRawValue_+h*this.props.get("draggingScale"))}onPointerMove_(a){const h=this.computeDraggingValue_(a.data);h!==null&&(this.value.setRawValue(h,{forceEmit:!1,last:!1}),this.dragging_.rawValue=this.value.rawValue-this.originRawValue_)}onPointerUp_(a){const h=this.computeDraggingValue_(a.data);h!==null&&(this.value.setRawValue(h,{forceEmit:!0,last:!0}),this.dragging_.rawValue=null)}}function Qe(m,a){m.write(a)}function Ft(m){const a=m?mt(m,D):null;return a?a.step:null}function rn(m,a){const h=m&&mt(m,D);return h?Bi(h.step):Math.max(Bi(a),2)}function ri(m){const a=Ft(m);return a??1}function Tn(m,a){var h;const b=m&&mt(m,D),P=Math.abs((h=b==null?void 0:b.step)!==null&&h!==void 0?h:a);return P===0?.1:Math.pow(10,Math.floor(Math.log10(P))-1)}function zt(m){return[m[0],m[1],m[2]]}function Ni(m){const a=Nt(Math.floor(m),0,255).toString(16);return a.length===1?`0${a}`:a}function on(m,a="#"){const h=zt(m.getComponents("rgb")).map(Ni).join("");return`${a}${h}`}function Fi(m,a="#"){const h=m.getComponents("rgb"),b=[h[0],h[1],h[2],h[3]*255].map(Ni).join("");return`${a}${b}`}function Us(m,a){const h=Se(a==="float"?2:0);return`rgb(${zt(m.getComponents("rgb",a)).map(P=>h(P)).join(", ")})`}function zi(m){return a=>Us(a,m)}function ji(m,a){const h=Se(2),b=Se(a==="float"?2:0);return`rgba(${m.getComponents("rgb",a).map((A,O)=>(O===3?h:b)(A)).join(", ")})`}function Rs(m){return a=>ji(a,m)}function En(m){const a=[Se(0),Dn,Dn];return`hsl(${zt(m.getComponents("hsl")).map((b,P)=>a[P](b)).join(", ")})`}function Gs(m){const a=[Se(0),Dn,Dn,Se(2)];return`hsla(${m.getComponents("hsl").map((b,P)=>a[P](b)).join(", ")})`}function Ui(m,a){const h=Se(a==="float"?2:0),b=["r","g","b"];return`{${zt(m.getComponents("rgb",a)).map((A,O)=>`${b[O]}: ${h(A)}`).join(", ")}}`}function Ri(m){return a=>Ui(a,m)}function Ks(m,a){const h=Se(2),b=Se(a==="float"?2:0),P=["r","g","b","a"];return`{${m.getComponents("rgb",a).map((O,G)=>{const le=G===3?h:b;return`${P[G]}: ${le(O)}`}).join(", ")}}`}function $s(m){return a=>Ks(a,m)}[...["int","float"].reduce((m,a)=>[...m,{format:{alpha:!1,mode:"rgb",notation:"func",type:a},stringifier:zi(a)},{format:{alpha:!0,mode:"rgb",notation:"func",type:a},stringifier:Rs(a)},{format:{alpha:!1,mode:"rgb",notation:"object",type:a},stringifier:Ri(a)},{format:{alpha:!0,mode:"rgb",notation:"object",type:a},stringifier:$s(a)}],[])];class Xs{constructor(a){this.components=a.components,this.asm_=a.assembly}constrain(a){const h=this.asm_.toComponents(a).map((b,P)=>{var A,O;return(O=(A=this.components[P])===null||A===void 0?void 0:A.constrain(b))!==null&&O!==void 0?O:b});return this.asm_.fromComponents(h)}}const Gi=C("pndtxt");class Ys{constructor(a,h){this.textViews=h.textViews,this.element=a.createElement("div"),this.element.classList.add(Gi()),this.textViews.forEach(b=>{const P=a.createElement("div");P.classList.add(Gi("a")),P.appendChild(b.element),this.element.appendChild(P)})}}function oi(m,a,h){return new sn(m,{arrayPosition:h===0?"fst":h===a.axes.length-1?"lst":"mid",baseStep:a.axes[h].baseStep,parser:a.parser,props:a.axes[h].textProps,value:X(0,{constraint:a.axes[h].constraint}),viewProps:a.viewProps})}class xt{constructor(a,h){this.value=h.value,this.viewProps=h.viewProps,this.acs_=h.axes.map((b,P)=>oi(a,h,P)),this.acs_.forEach((b,P)=>{Ot({primary:this.value,secondary:b.value,forward:A=>h.assembly.toComponents(A.rawValue)[P],backward:(A,O)=>{const G=h.assembly.toComponents(A.rawValue);return G[P]=O.rawValue,h.assembly.fromComponents(G)}})}),this.view=new Ys(a,{textViews:this.acs_.map(b=>b.view)})}}function qs(m,a){return"step"in m&&!u(m.step)?new D(m.step,a):null}function an(m){return!u(m.max)&&!u(m.min)?new pt({max:m.max,min:m.min}):!u(m.max)||!u(m.min)?new _t({max:m.max,min:m.min}):null}const Qs={monitor:{defaultInterval:200,defaultLineCount:3}},it=C("grl");class Ki{constructor(a,h){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=a.createElement("div"),this.element.classList.add(it()),h.viewProps.bindClassModifiers(this.element),this.formatter_=h.formatter,this.props_=h.props,this.cursor_=h.cursor,this.cursor_.emitter.on("change",this.onCursorChange_);const b=a.createElementNS(ye,"svg");b.classList.add(it("g")),b.style.height=`calc(var(--bld-us) * ${h.lineCount})`,this.element.appendChild(b),this.svgElem_=b;const P=a.createElementNS(ye,"polyline");this.svgElem_.appendChild(P),this.lineElem_=P;const A=a.createElement("div");A.classList.add(it("t"),C("tt")()),this.element.appendChild(A),this.tooltipElem_=A,h.value.emitter.on("change",this.onValueUpdate_),this.value=h.value,this.update_()}get graphElement(){return this.svgElem_}update_(){const a=this.svgElem_.getBoundingClientRect(),h=this.value.rawValue.length-1,b=this.props_.get("minValue"),P=this.props_.get("maxValue"),A=[];this.value.rawValue.forEach((qe,ie)=>{if(qe===void 0)return;const bt=ke(ie,0,h,0,a.width),cr=ke(qe,b,P,a.height,0);A.push([bt,cr].join(","))}),this.lineElem_.setAttributeNS(null,"points",A.join(" "));const O=this.tooltipElem_,G=this.value.rawValue[this.cursor_.rawValue];if(G===void 0){O.classList.remove(it("t","a"));return}const le=ke(this.cursor_.rawValue,0,h,0,a.width),Ye=ke(G,b,P,a.height,0);O.style.left=`${le}px`,O.style.top=`${Ye}px`,O.textContent=`${this.formatter_(G)}`,O.classList.contains(it("t","a"))||(O.classList.add(it("t","a"),it("t","in")),et(O),O.classList.remove(it("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class Zs{constructor(a,h){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_=h.props,this.value=h.value,this.viewProps=h.viewProps,this.cursor_=X(-1),this.view=new Ki(a,{cursor:this.cursor_,formatter:h.formatter,lineCount:h.lineCount,props:this.props_,value:this.value,viewProps:this.viewProps}),!Ke(a))this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_);else{const b=new In(this.view.element);b.emitter.on("down",this.onGraphPointerDown_),b.emitter.on("move",this.onGraphPointerMove_),b.emitter.on("up",this.onGraphPointerUp_)}}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(a){const h=this.view.element.getBoundingClientRect();this.cursor_.rawValue=Math.floor(ke(a.offsetX,0,h.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(ke(a.data.point.x,0,a.data.bounds.width,0,this.value.rawValue.length))}onGraphPointerUp_(){this.cursor_.rawValue=-1}}class $i{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,h){const b=h.bind(this);return this.controller_.emitter.on(a,()=>{b(new o(this))}),this}}class Ws extends o{constructor(a,h,b){super(a),this.cell=h,this.index=b}}class Xi extends s{constructor(a){super(a),this.cellToApiMap_=new Map,this.emitter_=new _;const h=this.controller_.valueController;h.cellControllers.forEach((b,P)=>{const A=new $i(b);this.cellToApiMap_.set(b,A),b.emitter.on("click",()=>{const O=P%h.size[0],G=Math.floor(P/h.size[0]);this.emitter_.emit("click",{event:new Ws(this,A,[O,G])})})})}cell(a,h){const b=this.controller_.valueController,P=b.cellControllers[h*b.size[0]+a];return this.cellToApiMap_.get(P)}on(a,h){const b=h.bind(this);return this.emitter_.on(a,P=>{b(P.event)}),this}}class ai{constructor(a,h){this.size=h.size;const[b,P]=this.size,A=[];for(let O=0;O<P;O++)for(let G=0;G<b;G++){const le=new $(a,{props:Y.fromObject(Object.assign({},h.cellConfig(G,O))),viewProps:ge.create()});A.push(le)}this.cellCs_=A,this.viewProps=ge.create(),this.viewProps.handleDispose(()=>{this.cellCs_.forEach(O=>{O.viewProps.set("disposed",!0)})}),this.view=new dt(a,{viewProps:this.viewProps,viewName:"btngrid"}),this.view.element.style.gridTemplateColumns=`repeat(${b}, 1fr)`,this.cellCs_.forEach(O=>{this.view.element.appendChild(O.view.element)})}get cellControllers(){return this.cellCs_}}const Js={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=de,h=te(m,{cells:a.required.function,size:a.required.array(a.required.number),view:a.required.constant("buttongrid"),label:a.optional.string});return h?{params:h}:null},controller(m){return new tt(m.document,{blade:m.blade,props:Y.fromObject({label:m.params.label}),valueController:new ai(m.document,{cellConfig:m.params.cells,size:m.params.size})})},api(m){return!(m.controller instanceof tt)||!(m.controller.valueController instanceof ai)?null:new Xi(m.controller)}};class Yi 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,h){const b=h.bind(this);return this.controller_.valueController.value.emitter.on(a,P=>{b(new l(this,P.rawValue,void 0,P.options.last))}),this}}function Xe(m,a,h){return m*(1-h)+a*h}const Hs=20,er=.001,li=100;function tr(m,a){let h=.25,b=.5,P=-1;for(let A=0;A<Hs;A++){const[O,G]=m.curve(b);if(b+=h*(O<a?1:-1),P=G,h*=.5,Math.abs(a-O)<er)break}return P}class ft{constructor(a=0,h=0,b=1,P=1){this.cache_=[],this.comps_=[a,h,b,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 u(a)||!Array.isArray(a)?!1:typeof a[0]=="number"&&typeof a[1]=="number"&&typeof a[2]=="number"&&typeof a[3]=="number"}static equals(a,h){return a.x1===h.x1&&a.y1===h.y1&&a.x2===h.x2&&a.y2===h.y2}curve(a){const h=Xe(0,this.x1,a),b=Xe(0,this.y1,a),P=Xe(this.x1,this.x2,a),A=Xe(this.y1,this.y2,a),O=Xe(this.x2,1,a),G=Xe(this.y2,1,a),le=Xe(h,P,a),Ye=Xe(b,A,a),qe=Xe(P,O,a),ie=Xe(A,G,a);return[Xe(le,qe,a),Xe(Ye,ie,a)]}y(a){if(this.cache_.length===0){const h=[];for(let b=0;b<li;b++)h.push(tr(this,ke(b,0,li-1,0,1)));this.cache_=h}return this.cache_[Math.round(ke(Nt(a,0,1),0,1,0,li-1))]}toObject(){return[this.comps_[0],this.comps_[1],this.comps_[2],this.comps_[3]]}}const ci={toComponents:m=>m.toObject(),fromComponents:m=>new ft(...m)};function nr(m){const a=Se(2);return`cubic-bezier(${m.toObject().map(b=>a(b)).join(", ")})`}const pi=[0,.5,.5,1];function ir(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 ft(...pi);const h=[a[1],a[2],a[3],a[4]].reduce((b,P)=>{if(!b)return null;const A=Number(P);return isNaN(A)?null:[...b,A]},[]);return new ft(...h??pi)}const Ct=C("cbz");class qi{constructor(a,h){this.element=a.createElement("div"),this.element.classList.add(Ct()),h.viewProps.bindClassModifiers(this.element),h.foldable.bindExpandedClass(this.element,Ct(void 0,"expanded")),I(h.foldable,"completed",z(this.element,Ct(void 0,"cpl")));const b=a.createElement("div");b.classList.add(Ct("h")),this.element.appendChild(b);const P=a.createElement("button");P.classList.add(Ct("b")),h.viewProps.bindDisabled(P);const A=a.createElementNS(ye,"svg");A.innerHTML='<path d="M2 13C8 13 8 3 14 3"/>',P.appendChild(A),b.appendChild(P),this.buttonElement=P;const O=a.createElement("div");if(O.classList.add(Ct("t")),b.appendChild(O),this.textElement=O,h.pickerLayout==="inline"){const G=a.createElement("div");G.classList.add(Ct("p")),this.element.appendChild(G),this.pickerElement=G}else this.pickerElement=null}}const On=C("cbzp");class Qi{constructor(a,h){this.element=a.createElement("div"),this.element.classList.add(On()),h.viewProps.bindClassModifiers(this.element);const b=a.createElement("div");b.classList.add(On("g")),this.element.appendChild(b),this.graphElement=b;const P=a.createElement("div");P.classList.add(On("t")),this.element.appendChild(P),this.textElement=P}}function st(m,a){const h=new MutationObserver(P=>{for(const A of P)A.type==="childList"&&A.addedNodes.forEach(O=>{O.contains(O)&&(a(),h.disconnect())})}),b=m.ownerDocument;h.observe(b.body,{attributes:!0,childList:!0,subtree:!0})}const ht=C("cbzg");function sr(m,a){return h=>a(m(h))}class Le{constructor(a,h){this.element=a.createElement("div"),this.element.classList.add(ht()),h.viewProps.bindClassModifiers(this.element),h.viewProps.bindTabIndex(this.element);const b=a.createElement("div");b.classList.add(ht("p")),this.element.appendChild(b),this.previewElement=b;const P=a.createElementNS(ye,"svg");P.classList.add(ht("g")),this.element.appendChild(P),this.svgElem_=P;const A=a.createElementNS(ye,"path");A.classList.add(ht("u")),this.svgElem_.appendChild(A),this.guideElem_=A;const O=a.createElementNS(ye,"polyline");O.classList.add(ht("l")),this.svgElem_.appendChild(O),this.lineElem_=O,this.handleElems_=[a.createElement("div"),a.createElement("div")],this.handleElems_.forEach(G=>{G.classList.add(ht("h")),this.element.appendChild(G)}),this.vectorElems_=[a.createElementNS(ye,"line"),a.createElementNS(ye,"line")],this.vectorElems_.forEach(G=>{G.classList.add(ht("v")),this.svgElem_.appendChild(G)}),this.value_=h.value,this.value_.emitter.on("change",this.onValueChange_.bind(this)),this.sel_=h.selection,this.handleElems_.forEach((G,le)=>{V(this.sel_,sr(Ye=>Ye===le,z(G,ht("h","sel"))))}),st(this.element,()=>{this.refresh()})}getVertMargin_(a){return a*.25}valueToPosition(a,h){const b=this.element.getBoundingClientRect(),P=b.width,A=b.height,O=this.getVertMargin_(A);return{x:ke(a,0,1,0,P),y:ke(h,0,1,A-O,O)}}positionToValue(a,h){const b=this.element.getBoundingClientRect(),P=b.width,A=b.height,O=this.getVertMargin_(A);return{x:Nt(ke(a,0,P,0,1),0,1),y:ke(h,A-O,O,0,1)}}refresh(){this.guideElem_.setAttributeNS(null,"d",[0,1].map(A=>{const O=this.valueToPosition(0,A),G=this.valueToPosition(1,A);return[`M ${O.x},${O.y}`,`L ${G.x},${G.y}`].join(" ")}).join(" "));const a=this.value_.rawValue,h=[];let b=0;for(;;){const A=this.valueToPosition(...a.curve(b));if(h.push([A.x,A.y].join(",")),b>=1)break;b=Math.min(b+.05,1)}this.lineElem_.setAttributeNS(null,"points",h.join(" "));const P=a.toObject();[0,1].forEach(A=>{const O=this.valueToPosition(A,A),G=this.valueToPosition(P[A*2],P[A*2+1]),le=this.vectorElems_[A];le.setAttributeNS(null,"x1",String(O.x)),le.setAttributeNS(null,"y1",String(O.y)),le.setAttributeNS(null,"x2",String(G.x)),le.setAttributeNS(null,"y2",String(G.y));const Ye=this.handleElems_[A];Ye.style.left=`${G.x}px`,Ye.style.top=`${G.y}px`})}onValueChange_(){this.refresh()}}const Zi=24,ln=400,hi=1e3,vt=C("cbzprv");class jt{constructor(a,h){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(vt()),h.viewProps.bindClassModifiers(this.element);const b=a.createElementNS(ye,"svg");b.classList.add(vt("g")),this.element.appendChild(b),this.svgElem_=b;const P=a.createElementNS(ye,"path");P.classList.add(vt("t")),this.svgElem_.appendChild(P),this.ticksElem_=P;const A=a.createElement("div");A.classList.add(vt("m")),this.element.appendChild(A),this.markerElem_=A,this.value_=h.value,this.value_.emitter.on("change",this.onValueChange_),h.viewProps.handleDispose(this.onDispose_),st(this.element,()=>{this.refresh()})}play(){this.stop(),this.updateMarker_(0),this.markerElem_.classList.add(vt("m","a")),this.startTime_=new Date().getTime()+ln,this.stopped_=!1,requestAnimationFrame(this.onTimer_)}stop(){this.stopped_=!0,this.markerElem_.classList.remove(vt("m","a"))}onDispose_(){this.stop()}updateMarker_(a){const h=this.value_.rawValue.y(Nt(a,0,1));this.markerElem_.style.left=`${h*100}%`}refresh(){const a=this.svgElem_.getBoundingClientRect(),h=a.width,b=a.height,P=[],A=this.value_.rawValue;for(let O=0;O<Zi;O++){const G=ke(O,0,Zi-1,0,1),le=ke(A.y(G),0,1,0,h);P.push(`M ${le},0 v${b}`)}this.ticksElem_.setAttributeNS(null,"d",P.join(" "))}onTimer_(){if(this.startTime_===null)return;const a=new Date().getTime()-this.startTime_,h=a/hi;this.updateMarker_(h),a>hi+ln&&this.stop(),this.stopped_||requestAnimationFrame(this.onTimer_)}onValueChange_(){this.refresh(),this.play()}}function Ie(m,a,h,b){const P=h-m,A=b-a;return Math.sqrt(P*P+A*A)}function cn(m,a,h,b){const P=Ie(m,a,h,b),A=Math.atan2(b-a,h-m),O=Math.round(A/(Math.PI/4))*Math.PI/4;return{x:m+Math.cos(O)*P,y:a+Math.sin(O)*P}}class rt{constructor(a,h){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_=h.baseStep,this.value=h.value,this.sel_=X(0),this.viewProps=h.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 jt(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 b=new In(this.view.element);b.emitter.on("down",this.onPointerDown_),b.emitter.on("move",this.onPointerMove_),b.emitter.on("up",this.onPointerUp_)}refresh(){this.view.refresh(),this.prevView_.refresh(),this.prevView_.play()}updateValue_(a,h,b){const P=this.sel_.rawValue,A=this.value.rawValue.toObject(),O=this.view.positionToValue(a.x,a.y),G=h?cn(P,P,O.x,O.y):O;A[P*2]=G.x,A[P*2+1]=G.y,this.value.setRawValue(new ft(...A),b)}onPointerDown_(a){const h=a.data;if(!h.point)return;const b=this.value.rawValue,P=this.view.valueToPosition(b.x1,b.y1),A=Ie(h.point.x,h.point.y,P.x,P.y),O=this.view.valueToPosition(b.x2,b.y2),G=Ie(h.point.x,h.point.y,O.x,O.y);this.sel_.rawValue=A<=G?0:1,this.updateValue_(h.point,a.shiftKey,{forceEmit:!1,last:!1})}onPointerMove_(a){const h=a.data;h.point&&this.updateValue_(h.point,a.shiftKey,{forceEmit:!1,last:!1})}onPointerUp_(a){const h=a.data;h.point&&this.updateValue_(h.point,a.shiftKey,{forceEmit:!0,last:!0})}onKeyDown_(a){Oi(a.key)&&a.preventDefault();const h=this.sel_.rawValue,b=this.value.rawValue.toObject();b[h*2]+=Bt(this.baseStep_,ii(a)),b[h*2+1]+=Bt(this.baseStep_,nn(a)),this.value.setRawValue(new ft(...b),{forceEmit:!1,last:!1})}onKeyUp_(a){Oi(a.key)&&a.preventDefault();const h=Bt(this.baseStep_,ii(a)),b=Bt(this.baseStep_,nn(a));h===0&&b===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class Wi{constructor(a,h){this.value=h.value,this.viewProps=h.viewProps,this.view=new Qi(a,{viewProps:this.viewProps}),this.gc_=new rt(a,{baseStep:h.axis.baseStep,value:this.value,viewProps:this.viewProps}),this.view.graphElement.appendChild(this.gc_.view.element);const b=Object.assign(Object.assign({},h.axis),{constraint:new _t({max:1,min:0})}),P=Object.assign(Object.assign({},h.axis),{constraint:void 0});this.tc_=new xt(a,{assembly:ci,axes:[b,P,b,P],parser:tn,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 Bn{constructor(a,h){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=h.value,this.viewProps=h.viewProps,this.foldable_=Pn(h.expanded),this.view=new qi(a,{foldable:this.foldable_,pickerLayout:h.pickerLayout,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("blur",this.onButtonBlur_),this.view.buttonElement.addEventListener("click",this.onButtonClick_),this.tc_=new Tt(a,{parser:ir,props:Y.fromObject({formatter:nr}),value:this.value,viewProps:this.viewProps}),this.view.textElement.appendChild(this.tc_.view.element),this.popC_=h.pickerLayout==="popup"?new re(a,{viewProps:this.viewProps}):null;const b=new Wi(a,{axis:h.axis,value:this.value,viewProps:this.viewProps});b.allFocusableElements.forEach(P=>{P.addEventListener("blur",this.onPopupChildBlur_),P.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=b,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),V(this.popC_.shows,P=>{P&&b.refresh()}),Ot({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:P=>P.rawValue,backward:(P,A)=>A.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),Mn(this.foldable_,this.view.pickerElement))}onButtonBlur_(a){if(!this.popC_)return;const h=a.relatedTarget;(!h||!this.popC_.view.element.contains(h))&&(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 h=this.popC_.view.element,b=Qt(a);b&&h.contains(b)||b&&b===this.view.buttonElement&&!Ke(h.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(a){this.popC_&&a.key==="Escape"&&(this.popC_.shows.rawValue=!1)}}function ui(){return new Xs({assembly:ci,components:[0,1,2,3].map(m=>m%2===0?new _t({min:0,max:1}):void 0)})}const Pt={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=de,h=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(b=>b==="inline"||b==="popup"?b:void 0)});return h?{params:h}:null},controller(m){var a,h;const b=new ft(...m.params.value),P=X(b,{constraint:ui(),equals:ft.equals}),A=new Bn(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:(h=m.params.picker)!==null&&h!==void 0?h:"popup",value:P,viewProps:m.viewProps});return new wt(m.document,{blade:m.blade,props:Y.fromObject({label:m.params.label}),valueController:A})},api(m){return!(m.controller instanceof wt)||!(m.controller.valueController instanceof Bn)?null:new Yi(m.controller)}};class _e extends s{begin(){this.controller_.valueController.begin()}end(){this.controller_.valueController.end()}}const di=20;class Me{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 h=this.timestamps_[0];return 1e3*(this.frameCount_-h.frameCount)/(a-h.time)}compactTimestamps_(){if(this.timestamps_.length<=di)return;const a=this.timestamps_.length-di;this.timestamps_.splice(0,a);const h=this.timestamps_[0].frameCount;this.timestamps_.forEach(b=>{b.frameCount-=h}),this.frameCount_-=h}end(a){if(this.start_===null)return;const h=a.getTime();this.duration_=h-this.start_,this.start_=null,this.fps_=this.calculateFps_(h),this.timestamps_.push({frameCount:this.frameCount_,time:h}),++this.frameCount_,this.compactTimestamps_()}}const Ut=C("fps");class Ue{constructor(a,h){this.element=a.createElement("div"),this.element.classList.add(Ut()),h.viewProps.bindClassModifiers(this.element),this.graphElement=a.createElement("div"),this.graphElement.classList.add(Ut("g")),this.element.appendChild(this.graphElement);const b=a.createElement("div");b.classList.add(Ut("l")),this.element.appendChild(b);const P=a.createElement("span");P.classList.add(Ut("v")),P.textContent="--",b.appendChild(P),this.valueElement=P;const A=a.createElement("span");A.classList.add(Ut("u")),A.textContent="FPS",b.appendChild(A)}}class mi{constructor(a,h){this.stopwatch_=new Me,this.onTick_=this.onTick_.bind(this),this.ticker_=h.ticker,this.ticker_.emitter.on("tick",this.onTick_),this.value_=h.value,this.viewProps=h.viewProps,this.view=new Ue(a,{viewProps:this.viewProps}),this.graphC_=new Zs(a,{formatter:Se(0),lineCount:h.lineCount,props:Y.fromObject({maxValue:h.maxValue,minValue:h.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 h=this.value_.rawValue;this.value_.rawValue=Fs(h,a),this.view.valueElement.textContent=a.toFixed(0)}}}function pn(m,a){return a===0?new An:new Wt(m,a??Qs.monitor.defaultInterval)}const fi={id:"fpsgraph",type:"blade",accept(m){const a=de,h=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 h?{params:h}:null},controller(m){var a,h,b,P;const A=(a=m.params.interval)!==null&&a!==void 0?a:500;return new tt(m.document,{blade:m.blade,props:Y.fromObject({label:m.params.label}),valueController:new mi(m.document,{lineCount:(h=m.params.lineCount)!==null&&h!==void 0?h:2,maxValue:(b=m.params.max)!==null&&b!==void 0?b:90,minValue:(P=m.params.min)!==null&&P!==void 0?P:0,ticker:pn(m.document,A),value:Ti(80),viewProps:m.viewProps})})},api(m){return!(m.controller instanceof tt)||!(m.controller.valueController instanceof mi)?null:new _e(m.controller)}};class Re{constructor(a,h){this.min=a,this.max=h}static isObject(a){if(typeof a!="object"||a===null)return!1;const h=a.min,b=a.max;return!(typeof h!="number"||typeof b!="number")}static equals(a,h){return a.min===h.min&&a.max===h.max}get length(){return this.max-this.min}toObject(){return{min:this.min,max:this.max}}}const vi={fromComponents:m=>new Re(m[0],m[1]),toComponents:m=>[m.min,m.max]};class hn{constructor(a){this.edge=a}constrain(a){var h,b,P,A,O,G,le,Ye;if(a.min<=a.max)return new Re((b=(h=this.edge)===null||h===void 0?void 0:h.constrain(a.min))!==null&&b!==void 0?b:a.min,(A=(P=this.edge)===null||P===void 0?void 0:P.constrain(a.max))!==null&&A!==void 0?A:a.max);const qe=(a.min+a.max)/2;return new Re((G=(O=this.edge)===null||O===void 0?void 0:O.constrain(qe))!==null&&G!==void 0?G:qe,(Ye=(le=this.edge)===null||le===void 0?void 0:le.constrain(qe))!==null&&Ye!==void 0?Ye:qe)}}const bi=C("rsltxt");class Nn{constructor(a,h){this.sliderView_=h.sliderView,this.textView_=h.textView,this.element=a.createElement("div"),this.element.classList.add(bi());const b=a.createElement("div");b.classList.add(bi("s")),b.appendChild(this.sliderView_.element),this.element.appendChild(b);const P=a.createElement("div");P.classList.add(bi("t")),P.appendChild(this.textView_.element),this.element.appendChild(P)}}const Ze=C("rsl");class un{constructor(a,h){this.onSliderPropsChange_=this.onSliderPropsChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.sliderProps_=h.sliderProps,this.sliderProps_.emitter.on("change",this.onSliderPropsChange_),this.element=a.createElement("div"),this.element.classList.add(Ze()),h.viewProps.bindClassModifiers(this.element),this.value_=h.value,this.value_.emitter.on("change",this.onValueChange_);const b=a.createElement("div");b.classList.add(Ze("t")),this.element.appendChild(b),this.trackElement=b;const P=a.createElement("div");P.classList.add(Ze("b")),b.appendChild(P),this.barElement=P;const A=["min","max"].map(O=>{const G=a.createElement("div");return G.classList.add(Ze("k"),Ze("k",O)),b.appendChild(G),G});this.knobElements=[A[0],A[1]],this.update_()}valueToX_(a){const h=this.sliderProps_.get("minValue"),b=this.sliderProps_.get("maxValue");return Nt(ke(a,h,b,0,1),0,1)*100}update_(){const a=this.value_.rawValue;a.length===0?this.element.classList.add(Ze(void 0,"zero")):this.element.classList.remove(Ze(void 0,"zero"));const h=[this.valueToX_(a.min),this.valueToX_(a.max)];this.barElement.style.left=`${h[0]}%`,this.barElement.style.right=`${100-h[1]}%`,this.knobElements.forEach((b,P)=>{b.style.left=`${h[P]}%`})}onSliderPropsChange_(){this.update_()}onValueChange_(){this.update_()}}class gi{constructor(a,h){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=h.sliderProps,this.viewProps=h.viewProps,this.value=h.value,this.view=new un(a,{sliderProps:this.sliderProps,value:this.value,viewProps:h.viewProps});const b=new In(this.view.trackElement);b.emitter.on("down",this.onPointerDown_),b.emitter.on("move",this.onPointerMove_),b.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 h=(a.point.x+this.ofs_())/a.bounds.width,b=this.sliderProps.get("minValue"),P=this.sliderProps.get("maxValue");return ke(h,0,1,b,P)}onPointerDown_(a){if(!a.data.point)return;const h=a.data.point.x/a.data.bounds.width,b=this.value.rawValue,P=this.sliderProps.get("minValue"),A=this.sliderProps.get("maxValue"),O=ke(b.min,P,A,0,1),G=ke(b.max,P,A,0,1);Math.abs(G-h)<=.025?this.grabbing_="max":Math.abs(O-h)<=.025?this.grabbing_="min":h>=O&&h<=G?(this.grabbing_="length",this.grabOffset_=ke(h-O,0,1,0,A-P)):h<O?(this.grabbing_="min",this.onPointerMove_(a)):h>G&&(this.grabbing_="max",this.onPointerMove_(a))}applyPointToValue_(a,h){const b=this.valueFromData_(a);if(b===null)return;const P=this.sliderProps.get("minValue"),A=this.sliderProps.get("maxValue");if(this.grabbing_==="min")this.value.setRawValue(new Re(b,this.value.rawValue.max),h);else if(this.grabbing_==="max")this.value.setRawValue(new Re(this.value.rawValue.min,b),h);else if(this.grabbing_==="length"){const O=this.value.rawValue.length;let G=b-this.grabOffset_,le=G+O;G<P?(G=P,le=P+O):le>A&&(G=A-O,le=A),this.value.setRawValue(new Re(G,le),h)}}onPointerMove_(a){this.applyPointToValue_(a.data,{forceEmit:!1,last:!1})}onPointerUp_(a){this.applyPointToValue_(a.data,{forceEmit:!0,last:!0}),this.grabbing_=null}}class ut{constructor(a,h){this.value=h.value,this.viewProps=h.viewProps,this.sc_=new gi(a,h);const b={baseStep:h.baseStep,constraint:h.constraint,textProps:Y.fromObject({draggingScale:h.draggingScale,formatter:h.formatter})};this.tc_=new xt(a,{assembly:vi,axes:[b,b],parser:h.parser,value:this.value,viewProps:h.viewProps}),this.view=new Nn(a,{sliderView:this.sc_.view,textView:this.tc_.view})}get textController(){return this.tc_}}function Ji(m){return Re.isObject(m)?new Re(m.min,m.max):new Re(0,0)}function wi(m,a){m.writeProperty("max",a.max),m.writeProperty("min",a.min)}function rr(m){const a=[],h=an(m);h&&a.push(h);const b=qs(m);return b&&a.push(b),new hn(new Sn(a))}const Fn={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(!Re.isObject(m))return null;const h=de,b=te(a,{format:h.optional.function,max:h.optional.number,min:h.optional.number,step:h.optional.number});return b?{initialValue:new Re(m.min,m.max),params:b}:null},binding:{reader:m=>Ji,constraint:m=>rr(m.params),equals:Re.equals,writer:m=>wi},controller(m){var a;const h=m.value,b=m.constraint;if(!(b instanceof hn))throw w.shouldNeverHappen();const P=(h.rawValue.min+h.rawValue.max)/2,A=(a=m.params.format)!==null&&a!==void 0?a:Se(rn(b.edge,P)),O=b.edge&&mt(b.edge,pt);if(O)return new ut(m.document,{baseStep:ri(b.edge),constraint:b.edge,draggingScale:Tn(b.edge,P),formatter:A,parser:tn,sliderProps:new Y({maxValue:O.values.value("max"),minValue:O.values.value("min")}),value:h,viewProps:m.viewProps});const G={baseStep:ri(b.edge),constraint:b.edge,textProps:Y.fromObject({draggingScale:P,formatter:A})};return new xt(m.document,{assembly:vi,axes:[G,G],parser:tn,value:h,viewProps:m.viewProps})}};class kt{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 Mt extends l{constructor(a,h,b,P,A){super(a,P,A),this.cell=h,this.index=b}}class dn extends s{constructor(a){super(a),this.cellToApiMap_=new Map,this.controller_.valueController.cellControllers.forEach(b=>{const P=new kt(b);this.cellToApiMap_.set(b,P)})}get value(){return this.controller_.value}cell(a,h){const b=this.controller_.valueController,P=b.cellControllers[h*b.size[0]+a];return this.cellToApiMap_.get(P)}on(a,h){const b=h.bind(this);this.controller_.value.emitter.on(a,P=>{const A=this.controller_.valueController,O=A.findCellByValue(P.rawValue);if(!O)return;const G=this.cellToApiMap_.get(O);if(!G)return;const le=A.cellControllers.indexOf(O);b(new Mt(this,G,[le%A.size[0],Math.floor(le/A.size[0])],P.rawValue,void 0))})}}const mn=C("rad");class Hi{constructor(a,h){this.element=a.createElement("div"),this.element.classList.add(mn()),h.viewProps.bindClassModifiers(this.element);const b=a.createElement("label");b.classList.add(mn("l")),this.element.appendChild(b);const P=a.createElement("input");P.classList.add(mn("i")),P.name=h.name,P.type="radio",h.viewProps.bindDisabled(P),b.appendChild(P),this.inputElement=P;const A=a.createElement("div");A.classList.add(mn("b")),b.appendChild(A);const O=a.createElement("div");O.classList.add(mn("t")),A.appendChild(O),I(h.props,"title",G=>{O.textContent=G})}}class es{constructor(a,h){this.props=h.props,this.viewProps=h.viewProps,this.view=new Hi(a,{name:h.name,props:this.props,viewProps:this.viewProps})}}class zn{constructor(a,h){this.cellCs_=[],this.cellValues_=[],this.onCellInputChange_=this.onCellInputChange_.bind(this),this.size=h.size;const[b,P]=this.size;for(let A=0;A<P;A++)for(let O=0;O<b;O++){const G=new es(a,{name:h.groupName,props:Y.fromObject(Object.assign({},h.cellConfig(O,A))),viewProps:ge.create()});this.cellCs_.push(G),this.cellValues_.push(h.cellConfig(O,A).value)}this.value=h.value,V(this.value,A=>{const O=this.findCellByValue(A);O&&(O.view.inputElement.checked=!0)}),this.viewProps=ge.create(),this.view=new dt(a,{viewProps:this.viewProps,viewName:"radgrid"}),this.view.element.style.gridTemplateColumns=`repeat(${b}, 1fr)`,this.cellCs_.forEach(A=>{A.view.inputElement.addEventListener("change",this.onCellInputChange_),this.view.element.appendChild(A.view.element)})}get cellControllers(){return this.cellCs_}findCellByValue(a){const h=this.cellValues_.findIndex(b=>b===a);return h<0?null:this.cellCs_[h]}onCellInputChange_(a){const h=a.currentTarget,b=this.cellCs_.findIndex(P=>P.view.inputElement===h);b<0||(this.value.rawValue=this.cellValues_[b])}}const At=function(){return{id:"radiogrid",type:"blade",accept(m){const a=de,h=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 h?{params:h}:null},controller(m){return new wt(m.document,{blade:m.blade,props:Y.fromObject({label:m.params.label}),valueController:new zn(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 wt)||!(m.controller.valueController instanceof zn)?null:new dn(m.controller)}}}();function _i(m){return{id:"input-radiogrid",type:"input",accept(a,h){if(!m.isType(a))return null;const b=de,P=te(h,{cells:b.required.function,groupName:b.required.string,size:b.required.array(b.required.number),view:b.required.constant("radiogrid")});return P?{initialValue:a,params:P}:null},binding:m.binding,controller:a=>new zn(a.document,{cellConfig:a.params.cells,groupName:a.params.groupName,size:a.params.size,value:a.value})}}const or=_i({isType:m=>typeof m=="number",binding:{reader:m=>Bs,writer:m=>Qe}}),ar=_i({isType:m=>typeof m=="string",binding:{reader:m=>Ii,writer:m=>Qe}}),lr=_i({isType:m=>typeof m=="boolean",binding:{reader:m=>Jt,writer:m=>Qe}}),ts=[Js,Pt,fi,Fn,At,lr,or,ar];i.ButtonCellApi=$i,i.ButtonGridApi=Xi,i.ButtonGridController=ai,i.CubicBezier=ft,i.CubicBezierApi=Yi,i.CubicBezierAssembly=ci,i.CubicBezierController=Bn,i.CubicBezierGraphController=rt,i.CubicBezierGraphView=Le,i.CubicBezierPickerController=Wi,i.CubicBezierPickerView=Qi,i.CubicBezierPreviewView=jt,i.CubicBezierView=qi,i.FpsGraphBladeApi=_e,i.FpsGraphController=mi,i.FpsView=Ue,i.Fpswatch=Me,i.Interval=Re,i.IntervalAssembly=vi,i.IntervalConstraint=hn,i.RadioCellApi=kt,i.RadioController=es,i.RadioGridApi=dn,i.RadioGridController=zn,i.RadioView=Hi,i.RangeSliderController=gi,i.RangeSliderTextController=ut,i.RangeSliderTextView=Nn,i.RangeSliderView=un,i.TpRadioGridChangeEvent=Mt,i.plugins=ts,Object.defineProperty(i,"__esModule",{value:!0})})})(Cs,Cs.exports);var ao=Cs.exports;const vp=Yo({__proto__:null,default:Ml(ao)},[ao]);let qt,Ai;const bp=(v="tres-container")=>{qt||(qt=new fp.Pane({container:document.querySelector(v)||void 0}),qt.registerPlugin(vp),Ai=qt.addBlade({view:"fpsgraph",label:"fpsgraph"}));function n(){qt&&qt.dispose()}return x.onMounted(()=>{const{onBeforeLoop:i,onAfterLoop:s,resume:o}=Ee.useRenderLoop();o(),i(()=>Ai.begin()),s(()=>Ai.end())}),x.onUnmounted(()=>{n()}),{pane:qt,fpsGraph:Ai,disposeTweakPane:n}};J.Box=Vc,J.Circle=Tc,J.Cone=Bc,J.ContactShadows=ac,J.Dodecahedron=zc,J.Environment=Tl,J.FBXModel=pc,J.GLTFModel=cc,J.Icosahedron=Rc,J.KeyboardControls=gc,J.Levioso=nc,J.MapControls=Pc,J.MeshWobbleMaterial=Ac,J.MouseParallax=$l,J.Octahedron=$c,J.OrbitControls=mc,J.Plane=Qc,J.PointerLockControls=xc,J.Precipitation=Zl,J.Ring=Jc,J.Smoke=tc,J.Sphere=tp,J.Stars=Yl,J.Tetrahedron=rp,J.Text3D=Dl,J.Torus=lp,J.TorusKnot=hp,J.TransformControls=_c,J.Tube=mp,J.useAnimations=Il,J.useEnvironment=eo,J.useFBX=ro,J.useGLTF=so,J.useMouseParallax=io,J.useProgress=uc,J.useTweakPane=bp,Object.defineProperty(J,Symbol.toStringTag,{value:"Module"})});
95
+ vNormal = vNormal * m;`)}get time(){return this._time.value}set time(n){this._time.value=n}get factor(){return this._factor.value}set factor(n){this._factor.value=n}}const Oh=["factor"],Dh=_.defineComponent({__name:"index",props:{speed:{default:1},factor:{default:1}},setup(v){const t=v,n=_.shallowRef(),{extend:i}=Ae.useTresContext();i({MeshWobbleMaterial:Eh});const{onLoop:o}=Ae.useRenderLoop();return o(({elapsed:a})=>{n.value&&(n.value.time=a*(t==null?void 0:t.speed))}),(a,c)=>(_.openBlock(),_.createElementBlock("TresMeshWobbleMaterial",_.mergeProps({ref_key:"materialRef",ref:n,factor:a.factor},a.$attrs),null,16,Oh))}}),Vh=["args"],Ih=["color"],Bh=_.defineComponent({__name:"Box",props:{args:{default:()=>[1,1,1]},color:{default:"#ffffff"}},setup(v,{expose:t}){const n=v,{args:i,color:o}=_.toRefs(n),a=_.shallowRef();return t({value:a}),(c,p)=>(_.openBlock(),_.createElementBlock("TresMesh",_.mergeProps({ref_key:"boxRef",ref:a},c.$attrs),[_.createElementVNode("TresBoxGeometry",{args:_.unref(i)},null,8,Vh),_.renderSlot(c.$slots,"default",{},()=>[_.createElementVNode("TresMeshBasicMaterial",{color:_.unref(o)},null,8,Ih)])],16))}}),Fh=["args"],Nh=["color"],Uh=_.defineComponent({__name:"Circle",props:{args:{default:()=>[1,32,0,Math.PI*2]},color:{default:"#ffffff"}},setup(v,{expose:t}){const n=v,{args:i,color:o}=_.toRefs(n),a=_.shallowRef();return t({value:a}),(c,p)=>(_.openBlock(),_.createElementBlock("TresMesh",_.mergeProps({ref_key:"circleRef",ref:a},c.$attrs),[_.createElementVNode("TresCircleGeometry",{args:_.unref(i)},null,8,Fh),_.renderSlot(c.$slots,"default",{},()=>[_.createElementVNode("TresMeshBasicMaterial",{color:_.unref(o)},null,8,Nh)])],16))}}),zh=["args"],Rh=["color"],jh=_.defineComponent({__name:"Cone",props:{args:{default:()=>[1,1,12,12,!1,0,Math.PI*2]},color:{default:"#ffffff"}},setup(v,{expose:t}){const n=v,{args:i,color:o}=_.toRefs(n),a=_.shallowRef();return t({value:a}),(c,p)=>(_.openBlock(),_.createElementBlock("TresMesh",_.mergeProps({ref_key:"coneRef",ref:a},c.$attrs),[_.createElementVNode("TresConeGeometry",{args:_.unref(i)},null,8,zh),_.renderSlot(c.$slots,"default",{},()=>[_.createElementVNode("TresMeshBasicMaterial",{color:_.unref(o)},null,8,Rh)])],16))}}),Gh=["args"],Kh=["color"],Yh=_.defineComponent({__name:"Dodecahedron",props:{args:{default:()=>[1,0]},color:{default:"#ffffff"}},setup(v,{expose:t}){const n=v,{args:i,color:o}=_.toRefs(n),a=_.shallowRef();return t({value:a}),(c,p)=>(_.openBlock(),_.createElementBlock("TresMesh",_.mergeProps({ref_key:"dodecahedronRef",ref:a},c.$attrs),[_.createElementVNode("TresDodecahedronGeometry",{args:_.unref(i)},null,8,Gh),_.renderSlot(c.$slots,"default",{},()=>[_.createElementVNode("TresMeshBasicMaterial",{color:_.unref(o)},null,8,Kh)])],16))}}),Xh=["args"],Zh=["color"],qh=_.defineComponent({__name:"Icosahedron",props:{args:{default:()=>[1,0]},color:{default:"#ffffff"}},setup(v,{expose:t}){const n=v,{args:i,color:o}=_.toRefs(n),a=_.shallowRef();return t({value:a}),(c,p)=>(_.openBlock(),_.createElementBlock("TresMesh",_.mergeProps({ref_key:"icosahedronRef",ref:a},c.$attrs),[_.createElementVNode("TresIcosahedronGeometry",{args:_.unref(i)},null,8,Xh),_.renderSlot(c.$slots,"default",{},()=>[_.createElementVNode("TresMeshBasicMaterial",{color:_.unref(o)},null,8,Zh)])],16))}}),Qh=["args"],Wh=["color"],Jh=_.defineComponent({__name:"Octahedron",props:{args:{default:()=>[1,0]},color:{default:"#ffffff"}},setup(v,{expose:t}){const n=v,{args:i,color:o}=_.toRefs(n),a=_.shallowRef();return t({value:a}),(c,p)=>(_.openBlock(),_.createElementBlock("TresMesh",_.mergeProps({ref_key:"octahedronRef",ref:a},c.$attrs),[_.createElementVNode("TresOctahedronGeometry",{args:_.unref(i)},null,8,Qh),_.renderSlot(c.$slots,"default",{},()=>[_.createElementVNode("TresMeshBasicMaterial",{color:_.unref(o)},null,8,Wh)])],16))}}),Hh=["rotation"],$h=["args"],ep=["color"],tp=_.defineComponent({__name:"Plane",props:{args:{default:()=>[1,1]},color:{default:"#ffffff"}},setup(v,{expose:t}){const n=v,{args:i,color:o}=_.toRefs(n),a=_.shallowRef();return t({value:a}),(c,p)=>(_.openBlock(),_.createElementBlock("TresMesh",_.mergeProps({ref_key:"planeRef",ref:a,rotation:[-Math.PI/2,0,0]},c.$attrs),[_.createElementVNode("TresPlaneGeometry",{args:_.unref(i)},null,8,$h),_.renderSlot(c.$slots,"default",{},()=>[_.createElementVNode("TresMeshBasicMaterial",{color:_.unref(o)},null,8,ep)])],16,Hh))}}),np=["args"],sp=["color"],ip=_.defineComponent({__name:"Ring",props:{args:{default:()=>[.5,1,32]},color:{default:"#ffffff"}},setup(v,{expose:t}){const n=v,{args:i,color:o}=_.toRefs(n),a=_.shallowRef();return t({value:a}),(c,p)=>(_.openBlock(),_.createElementBlock("TresMesh",_.mergeProps({ref_key:"ringRef",ref:a},c.$attrs),[_.createElementVNode("TresRingGeometry",{args:_.unref(i)},null,8,np),_.renderSlot(c.$slots,"default",{},()=>[_.createElementVNode("TresMeshBasicMaterial",{color:_.unref(o)},null,8,sp)])],16))}}),rp=["args"],op=["color"],ap=_.defineComponent({__name:"Sphere",props:{args:{default:()=>[2,32,16]},color:{default:"#ffffff"}},setup(v,{expose:t}){const n=v,{args:i,color:o}=_.toRefs(n),a=_.shallowRef();return t({value:a}),(c,p)=>(_.openBlock(),_.createElementBlock("TresMesh",_.mergeProps({ref_key:"sphereRef",ref:a},c.$attrs),[_.createElementVNode("TresSphereGeometry",{args:_.unref(i)},null,8,rp),_.renderSlot(c.$slots,"default",{},()=>[_.createElementVNode("TresMeshBasicMaterial",{color:_.unref(o)},null,8,op)])],16))}}),lp=["rotation"],cp=["args"],hp=["color"],pp=_.defineComponent({__name:"Tetrahedron",props:{args:{default:()=>[1,0]},color:{default:"#ffffff"}},setup(v,{expose:t}){const n=v,{args:i,color:o}=_.toRefs(n),a=_.shallowRef();return t({value:a}),(c,p)=>(_.openBlock(),_.createElementBlock("TresMesh",_.mergeProps({ref_key:"tetrahedronRef",ref:a,rotation:[-Math.PI/2,0,0]},c.$attrs),[_.createElementVNode("TresTetrahedronGeometry",{args:_.unref(i)},null,8,cp),_.renderSlot(c.$slots,"default",{},()=>[_.createElementVNode("TresMeshBasicMaterial",{color:_.unref(o)},null,8,hp)])],16,lp))}}),up=["args"],dp=["color"],mp=_.defineComponent({__name:"Torus",props:{args:{default:()=>[1,1,16,80]},color:{default:"#ffffff"}},setup(v,{expose:t}){const n=v,{args:i,color:o}=_.toRefs(n),a=_.shallowRef();return t({value:a}),(c,p)=>(_.openBlock(),_.createElementBlock("TresMesh",_.mergeProps({ref_key:"torusRef",ref:a},c.$attrs),[_.createElementVNode("TresTorusGeometry",{args:_.unref(i)},null,8,up),_.renderSlot(c.$slots,"default",{},()=>[_.createElementVNode("TresMeshBasicMaterial",{color:_.unref(o)},null,8,dp)])],16))}}),fp=["args"],vp=["color"],_p=_.defineComponent({__name:"TorusKnot",props:{args:{default:()=>[1,.4,64,8]},color:{default:"#ffffff"}},setup(v,{expose:t}){const n=v,{args:i,color:o}=_.toRefs(n),a=_.shallowRef();return t({value:a}),(c,p)=>(_.openBlock(),_.createElementBlock("TresMesh",_.mergeProps({ref_key:"torusKnotRef",ref:a},c.$attrs),[_.createElementVNode("TresTorusKnotGeometry",{args:_.unref(i)},null,8,fp),_.renderSlot(c.$slots,"default",{},()=>[_.createElementVNode("TresMeshBasicMaterial",{color:_.unref(o)},null,8,vp)])],16))}}),gp=["args"],bp=["color"],wp=_.defineComponent({__name:"Tube",props:{args:{default:()=>[new m.QuadraticBezierCurve3(new m.Vector3(-1,0,0),new m.Vector3(0,1,0),new m.Vector3(1,0,0)),20,.2,8,!1]},color:{default:"#ffffff"}},setup(v,{expose:t}){const n=v,{args:i,color:o}=_.toRefs(n),a=_.shallowRef();return t({value:a}),(c,p)=>(_.openBlock(),_.createElementBlock("TresMesh",_.mergeProps({ref_key:"tubeRef",ref:a},c.$attrs),[_.createElementVNode("TresTubeGeometry",{args:_.unref(i)},null,8,gp),_.renderSlot(c.$slots,"default",{},()=>[_.createElementVNode("TresMeshBasicMaterial",{color:_.unref(o)},null,8,bp)])],16))}}),yp=["receive-shadow","rotation"],xp=["args"],Cp=_.createElementVNode("TresMeshStandardMaterial",{color:8421504,side:2},null,-1),Pp=_.defineComponent({__name:"Backdrop",props:{floor:{default:.25},segments:{default:20},receiveShadow:{type:Boolean,default:!1}},setup(v){const t=v,n=p=>p===0?0:Math.pow(2,10*p-10),{floor:i,segments:o,receiveShadow:a}=_.toRefs(t),c=_.ref(null);return _.watch(()=>[o.value,i.value,c.value],([p,d,g])=>{if(!g||p===null)return;let y=0;const b=p/p/2,C=g.attributes.position;for(let A=0;A<p+1;A++)for(let E=0;E<p+1;E++)C.setXYZ(y++,A/p-b+(A===0?-d:0),E/p-b,n(A/p));C.needsUpdate=!0,g.computeVertexNormals()}),(p,d)=>(_.openBlock(),_.createElementBlock("TresGroup",_.normalizeProps(_.guardReactiveProps(p.$attrs)),[_.createElementVNode("TresMesh",{"receive-shadow":_.unref(a),rotation:[-Math.PI/2,0,Math.PI/2]},[_.createElementVNode("TresPlaneGeometry",{ref_key:"planeRef",ref:c,args:[1,1,_.unref(o),_.unref(o)]},null,8,xp),_.renderSlot(p.$slots,"default",{},()=>[Cp])],8,yp)],16))}});var sr={exports:{}};/*! Tweakpane 3.1.10 (c) 2016 cocopon, licensed under the MIT license. */(function(v,t){(function(n,i){i(t)})(Io,function(n){class i{constructor(e){const[s,h]=e.split("-"),x=s.split(".");this.major=parseInt(x[0],10),this.minor=parseInt(x[1],10),this.patch=parseInt(x[2],10),this.prerelease=h??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 a{constructor(e){this.target=e}}class c extends a{constructor(e,s,h,x){super(e),this.value=s,this.presetKey=h,this.last=x??!0}}class p extends a{constructor(e,s,h){super(e),this.value=s,this.presetKey=h}}class d extends a{constructor(e,s){super(e),this.expanded=s}}class g extends a{constructor(e,s){super(e),this.index=s}}function y(r){return r}function b(r){return r==null}function C(r,e){if(r.length!==e.length)return!1;for(let s=0;s<r.length;s++)if(r[s]!==e[s])return!1;return!0}function A(r,e){let s=r;do{const h=Object.getOwnPropertyDescriptor(s,e);if(h&&(h.set!==void 0||h.writable===!0))return!0;s=Object.getPrototypeOf(s)}while(s!==null);return!1}const E={alreadydisposed:()=>"View has been already disposed",invalidparams:r=>`Invalid parameters for '${r.name}'`,nomatchingcontroller:r=>`No matching controller for '${r.key}'`,nomatchingview:r=>`No matching view for '${JSON.stringify(r.params)}'`,notbindable:()=>"Value is not bindable",propertynotfound:r=>`Property '${r.name}' not found`,shouldneverhappen:()=>"This error should never happen"};class k{static alreadyDisposed(){return new k({type:"alreadydisposed"})}static notBindable(){return new k({type:"notbindable"})}static propertyNotFound(e){return new k({type:"propertynotfound",context:{name:e}})}static shouldNeverHappen(){return new k({type:"shouldneverhappen"})}constructor(e){var s;this.message=(s=E[e.type](e.context))!==null&&s!==void 0?s:"Unexpected error",this.name=this.constructor.name,this.stack=new Error(this.message).stack,this.type=e.type}}class O{constructor(e,s,h){this.obj_=e,this.key_=s,this.presetKey_=h??s}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,s){const h=this.read();if(!O.isBindable(h))throw k.notBindable();if(!(e in h))throw k.propertyNotFound(e);h[e]=s}}class R 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,s){const h=s.bind(this);return this.controller_.valueController.emitter.on(e,()=>{h(new a(this))}),this}}class N{constructor(){this.observers_={}}on(e,s){let h=this.observers_[e];return h||(h=this.observers_[e]=[]),h.push({handler:s}),this}off(e,s){const h=this.observers_[e];return h&&(this.observers_[e]=h.filter(x=>x.handler!==s)),this}emit(e,s){const h=this.observers_[e];h&&h.forEach(x=>{x.handler(s)})}}const F="tp";function M(r){return(s,h)=>[F,"-",r,"v",s?`_${s}`:"",h?`-${h}`:""].join("")}function D(r,e){return s=>e(r(s))}function U(r){return r.rawValue}function S(r,e){r.emitter.on("change",D(U,e)),e(r.rawValue)}function T(r,e,s){S(r.value(e),s)}function j(r,e,s){s?r.classList.add(e):r.classList.remove(e)}function X(r,e){return s=>{j(r,e,s)}}function Z(r,e){S(r,s=>{e.textContent=s??""})}const J=M("btn");class le{constructor(e,s){this.element=e.createElement("div"),this.element.classList.add(J()),s.viewProps.bindClassModifiers(this.element);const h=e.createElement("button");h.classList.add(J("b")),s.viewProps.bindDisabled(h),this.element.appendChild(h),this.buttonElement=h;const x=e.createElement("div");x.classList.add(J("t")),Z(s.props.value("title"),x),this.buttonElement.appendChild(x)}}class he{constructor(e,s){this.emitter=new N,this.onClick_=this.onClick_.bind(this),this.props=s.props,this.viewProps=s.viewProps,this.view=new le(e,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class oe{constructor(e,s){var h;this.constraint_=s==null?void 0:s.constraint,this.equals_=(h=s==null?void 0:s.equals)!==null&&h!==void 0?h:(x,L)=>x===L,this.emitter=new N,this.rawValue_=e}get constraint(){return this.constraint_}get rawValue(){return this.rawValue_}set rawValue(e){this.setRawValue(e,{forceEmit:!1,last:!0})}setRawValue(e,s){const h=s??{forceEmit:!1,last:!0},x=this.constraint_?this.constraint_.constrain(e):e,L=this.rawValue_;this.equals_(L,x)&&!h.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=x,this.emitter.emit("change",{options:h,previousRawValue:L,rawValue:x,sender:this}))}}class re{constructor(e){this.emitter=new N,this.value_=e}get rawValue(){return this.value_}set rawValue(e){this.setRawValue(e,{forceEmit:!1,last:!0})}setRawValue(e,s){const h=s??{forceEmit:!1,last:!0},x=this.value_;x===e&&!h.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.value_=e,this.emitter.emit("change",{options:h,previousRawValue:x,rawValue:this.value_,sender:this}))}}function ne(r,e){const s=e==null?void 0:e.constraint,h=e==null?void 0:e.equals;return!s&&!h?new re(r):new oe(r,e)}class H{constructor(e){this.emitter=new N,this.valMap_=e;for(const s in this.valMap_)this.valMap_[s].emitter.on("change",()=>{this.emitter.emit("change",{key:s,sender:this})})}static createCore(e){return Object.keys(e).reduce((h,x)=>Object.assign(h,{[x]:ne(e[x])}),{})}static fromObject(e){const s=this.createCore(e);return new H(s)}get(e){return this.valMap_[e].rawValue}set(e,s){this.valMap_[e].rawValue=s}value(e){return this.valMap_[e]}}function Ce(r,e){const h=Object.keys(e).reduce((x,L)=>{if(x===void 0)return;const I=e[L],q=I(r[L]);return q.succeeded?Object.assign(Object.assign({},x),{[L]:q.value}):void 0},{});return h}function ge(r,e){return r.reduce((s,h)=>{if(s===void 0)return;const x=e(h);if(!(!x.succeeded||x.value===void 0))return[...s,x.value]},[])}function de(r){return r===null?!1:typeof r=="object"}function me(r){return e=>s=>{if(!e&&s===void 0)return{succeeded:!1,value:void 0};if(e&&s===void 0)return{succeeded:!0,value:void 0};const h=r(s);return h!==void 0?{succeeded:!0,value:h}:{succeeded:!1,value:void 0}}}function ke(r){return{custom:e=>me(e)(r),boolean:me(e=>typeof e=="boolean"?e:void 0)(r),number:me(e=>typeof e=="number"?e:void 0)(r),string:me(e=>typeof e=="string"?e:void 0)(r),function:me(e=>typeof e=="function"?e:void 0)(r),constant:e=>me(s=>s===e?e:void 0)(r),raw:me(e=>e)(r),object:e=>me(s=>{if(de(s))return Ce(s,e)})(r),array:e=>me(s=>{if(Array.isArray(s))return ge(s,e)})(r)}}const B={optional:ke(!0),required:ke(!1)};function we(r,e){const s=B.required.object(e)(r);return s.succeeded?s.value:void 0}function ze(r){console.warn([`Missing '${r.key}' of ${r.target} in ${r.place}.`,"Please rebuild plugins with the latest core package."].join(" "))}function Ge(r){return r&&r.parentElement&&r.parentElement.removeChild(r),null}class Te{constructor(e){this.value_=e}static create(e){return[new Te(e),(s,h)=>{e.setRawValue(s,h)}]}get emitter(){return this.value_.emitter}get rawValue(){return this.value_.rawValue}}const lt=M("");function Gn(r,e){return X(r,lt(void 0,e))}class He extends H{constructor(e){var s;super(e),this.onDisabledChange_=this.onDisabledChange_.bind(this),this.onParentChange_=this.onParentChange_.bind(this),this.onParentGlobalDisabledChange_=this.onParentGlobalDisabledChange_.bind(this),[this.globalDisabled_,this.setGlobalDisabled_]=Te.create(ne(this.getGlobalDisabled_())),this.value("disabled").emitter.on("change",this.onDisabledChange_),this.value("parent").emitter.on("change",this.onParentChange_),(s=this.get("parent"))===null||s===void 0||s.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_)}static create(e){var s,h,x;const L=e??{};return new He(H.createCore({disabled:(s=L.disabled)!==null&&s!==void 0?s:!1,disposed:!1,hidden:(h=L.hidden)!==null&&h!==void 0?h:!1,parent:(x=L.parent)!==null&&x!==void 0?x:null}))}get globalDisabled(){return this.globalDisabled_}bindClassModifiers(e){S(this.globalDisabled_,Gn(e,"disabled")),T(this,"hidden",Gn(e,"hidden"))}bindDisabled(e){S(this.globalDisabled_,s=>{e.disabled=s})}bindTabIndex(e){S(this.globalDisabled_,s=>{e.tabIndex=s?-1:0})}handleDispose(e){this.value("disposed").emitter.on("change",s=>{s&&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 s;const h=e.previousRawValue;h==null||h.globalDisabled.emitter.off("change",this.onParentGlobalDisabledChange_),(s=this.get("parent"))===null||s===void 0||s.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_),this.updateGlobalDisabled_()}}function Kn(){return["veryfirst","first","last","verylast"]}const un=M(""),gt={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class Et{constructor(e){this.parent_=null,this.blade=e.blade,this.view=e.view,this.viewProps=e.viewProps;const s=this.view.element;this.blade.value("positions").emitter.on("change",()=>{Kn().forEach(h=>{s.classList.remove(un(void 0,gt[h]))}),this.blade.get("positions").forEach(h=>{s.classList.add(un(void 0,gt[h]))})}),this.viewProps.handleDispose(()=>{Ge(s)})}get parent(){return this.parent_}set parent(e){if(this.parent_=e,!("parent"in this.viewProps.valMap_)){ze({key:"parent",target:He.name,place:"BladeController.parent"});return}this.viewProps.set("parent",this.parent_?this.parent_.viewProps:null)}}const Ye="http://www.w3.org/2000/svg";function ct(r){r.offsetHeight}function dn(r,e){const s=r.style.transition;r.style.transition="none",e(),r.style.transition=s}function bt(r){return r.ontouchstart!==void 0}function Yn(){return globalThis}function ws(){return Yn().document}function Xn(r){const e=r.ownerDocument.defaultView;return e&&"document"in e?r.getContext("2d",{willReadFrequently:!0}):null}const Zn={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 Mt(r,e){const s=r.createElementNS(Ye,"svg");return s.innerHTML=Zn[e],s}function Ot(r,e,s){r.insertBefore(e,r.children[s])}function qn(r){r.parentElement&&r.parentElement.removeChild(r)}function mn(r){for(;r.children.length>0;)r.removeChild(r.children[0])}function Qn(r){for(;r.childNodes.length>0;)r.removeChild(r.childNodes[0])}function kt(r){return r.relatedTarget?r.relatedTarget:"explicitOriginalTarget"in r?r.explicitOriginalTarget:null}const wt=M("lbl");function Dt(r,e){const s=r.createDocumentFragment();return e.split(`
96
+ `).map(x=>r.createTextNode(x)).forEach((x,L)=>{L>0&&s.appendChild(r.createElement("br")),s.appendChild(x)}),s}class z{constructor(e,s){this.element=e.createElement("div"),this.element.classList.add(wt()),s.viewProps.bindClassModifiers(this.element);const h=e.createElement("div");h.classList.add(wt("l")),T(s.props,"label",L=>{b(L)?this.element.classList.add(wt(void 0,"nol")):(this.element.classList.remove(wt(void 0,"nol")),Qn(h),h.appendChild(Dt(e,L)))}),this.element.appendChild(h),this.labelElement=h;const x=e.createElement("div");x.classList.add(wt("v")),this.element.appendChild(x),this.valueElement=x}}class W extends Et{constructor(e,s){const h=s.valueController.viewProps;super(Object.assign(Object.assign({},s),{view:new z(e,{props:s.props,viewProps:h}),viewProps:h})),this.props=s.props,this.valueController=s.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}const ae={id:"button",type:"blade",accept(r){const e=B,s=we(r,{title:e.required.string,view:e.required.constant("button"),label:e.optional.string});return s?{params:s}:null},controller(r){return new W(r.document,{blade:r.blade,props:H.fromObject({label:r.params.label}),valueController:new he(r.document,{props:H.fromObject({title:r.params.title}),viewProps:r.viewProps})})},api(r){return!(r.controller instanceof W)||!(r.controller.valueController instanceof he)?null:new R(r.controller)}};class fe extends Et{constructor(e){super(e),this.value=e.value}}function Oe(){return new H({positions:ne([],{equals:C})})}class je extends H{constructor(e){super(e)}static create(e){const s={completed:!0,expanded:e,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null},h=H.createCore(s);return new je(h)}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")&&!b(e)?`${e}px`:"auto"}bindExpandedClass(e,s){const h=()=>{this.styleExpanded?e.classList.add(s):e.classList.remove(s)};T(this,"expanded",h),T(this,"temporaryExpanded",h)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function qt(r,e){let s=0;return dn(e,()=>{r.set("expandedHeight",null),r.set("temporaryExpanded",!0),ct(e),s=e.clientHeight,r.set("temporaryExpanded",null),ct(e)}),s}function fn(r,e){e.style.height=r.styleHeight}function Xe(r,e){r.value("expanded").emitter.on("beforechange",()=>{if(r.set("completed",!1),b(r.get("expandedHeight"))){const s=qt(r,e);s>0&&r.set("expandedHeight",s)}r.set("shouldFixHeight",!0),ct(e)}),r.emitter.on("change",()=>{fn(r,e)}),fn(r,e),e.addEventListener("transitionend",s=>{s.propertyName==="height"&&r.cleanUpTransition()})}class Ze extends o{constructor(e,s){super(e),this.rackApi_=s}}function rr(r,e){return r.addBlade(Object.assign(Object.assign({},e),{view:"button"}))}function or(r,e){return r.addBlade(Object.assign(Object.assign({},e),{view:"folder"}))}function ar(r,e){const s=e??{};return r.addBlade(Object.assign(Object.assign({},s),{view:"separator"}))}function ys(r,e){return r.addBlade(Object.assign(Object.assign({},e),{view:"tab"}))}class Vt{constructor(e){this.emitter=new N,this.items_=[],this.cache_=new Set,this.onSubListAdd_=this.onSubListAdd_.bind(this),this.onSubListRemove_=this.onSubListRemove_.bind(this),this.extract_=e}get items(){return this.items_}allItems(){return Array.from(this.cache_)}find(e){for(const s of this.allItems())if(e(s))return s;return null}includes(e){return this.cache_.has(e)}add(e,s){if(this.includes(e))throw k.shouldNeverHappen();const h=s!==void 0?s:this.items_.length;this.items_.splice(h,0,e),this.cache_.add(e);const x=this.extract_(e);x&&(x.emitter.on("add",this.onSubListAdd_),x.emitter.on("remove",this.onSubListRemove_),x.allItems().forEach(L=>{this.cache_.add(L)})),this.emitter.emit("add",{index:h,item:e,root:this,target:this})}remove(e){const s=this.items_.indexOf(e);if(s<0)return;this.items_.splice(s,1),this.cache_.delete(e);const h=this.extract_(e);h&&(h.emitter.off("add",this.onSubListAdd_),h.emitter.off("remove",this.onSubListRemove_)),this.emitter.emit("remove",{index:s,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 xs extends o{constructor(e){super(e),this.onBindingChange_=this.onBindingChange_.bind(this),this.emitter_=new N,this.controller_.binding.emitter.on("change",this.onBindingChange_)}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}on(e,s){const h=s.bind(this);return this.emitter_.on(e,x=>{h(x.event)}),this}refresh(){this.controller_.binding.read()}onBindingChange_(e){const s=e.sender.target.read();this.emitter_.emit("change",{event:new c(this,s,this.controller_.binding.target.presetKey,e.options.last)})}}class Ke extends W{constructor(e,s){super(e,s),this.binding=s.binding}}class Cs extends o{constructor(e){super(e),this.onBindingUpdate_=this.onBindingUpdate_.bind(this),this.emitter_=new N,this.controller_.binding.emitter.on("update",this.onBindingUpdate_)}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}on(e,s){const h=s.bind(this);return this.emitter_.on(e,x=>{h(x.event)}),this}refresh(){this.controller_.binding.read()}onBindingUpdate_(e){const s=e.sender.target.read();this.emitter_.emit("update",{event:new p(this,s,this.controller_.binding.target.presetKey)})}}class ht extends W{constructor(e,s){super(e,s),this.binding=s.binding,this.viewProps.bindDisabled(this.binding.ticker),this.viewProps.handleDispose(()=>{this.binding.dispose()})}}function ii(r){return r instanceof Wn?r.apiSet_:r instanceof Ze?r.rackApi_.apiSet_:null}function vn(r,e){const s=r.find(h=>h.controller_===e);if(!s)throw k.shouldNeverHappen();return s}function ri(r,e,s){if(!O.isBindable(r))throw k.notBindable();return new O(r,e,s)}class Wn extends o{constructor(e,s){super(e),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this),this.onRackInputChange_=this.onRackInputChange_.bind(this),this.onRackMonitorUpdate_=this.onRackMonitorUpdate_.bind(this),this.emitter_=new N,this.apiSet_=new Vt(ii),this.pool_=s;const h=this.controller_.rack;h.emitter.on("add",this.onRackAdd_),h.emitter.on("remove",this.onRackRemove_),h.emitter.on("inputchange",this.onRackInputChange_),h.emitter.on("monitorupdate",this.onRackMonitorUpdate_),h.children.forEach(x=>{this.setUpApi_(x)})}get children(){return this.controller_.rack.children.map(e=>vn(this.apiSet_,e))}addInput(e,s,h){const x=h??{},L=this.controller_.view.element.ownerDocument,I=this.pool_.createInput(L,ri(e,s,x.presetKey),x),q=new xs(I);return this.add(q,x.index)}addMonitor(e,s,h){const x=h??{},L=this.controller_.view.element.ownerDocument,I=this.pool_.createMonitor(L,ri(e,s),x),q=new Cs(I);return this.add(q,x.index)}addFolder(e){return or(this,e)}addButton(e){return rr(this,e)}addSeparator(e){return ar(this,e)}addTab(e){return ys(this,e)}add(e,s){this.controller_.rack.add(e.controller_,s);const h=this.apiSet_.find(x=>x.controller_===e.controller_);return h&&this.apiSet_.remove(h),this.apiSet_.add(e),e}remove(e){this.controller_.rack.remove(e.controller_)}addBlade(e){const s=this.controller_.view.element.ownerDocument,h=this.pool_.createBlade(s,e),x=this.pool_.createBladeApi(h);return this.add(x,e.index)}on(e,s){const h=s.bind(this);return this.emitter_.on(e,x=>{h(x.event)}),this}setUpApi_(e){this.apiSet_.find(h=>h.controller_===e)||this.apiSet_.add(this.pool_.createBladeApi(e))}onRackAdd_(e){this.setUpApi_(e.bladeController)}onRackRemove_(e){if(e.isRoot){const s=vn(this.apiSet_,e.bladeController);this.apiSet_.remove(s)}}onRackInputChange_(e){const s=e.bladeController;if(s instanceof Ke){const h=vn(this.apiSet_,s),x=s.binding;this.emitter_.emit("change",{event:new c(h,x.target.read(),x.target.presetKey,e.options.last)})}else if(s instanceof fe){const h=vn(this.apiSet_,s);this.emitter_.emit("change",{event:new c(h,s.value.rawValue,void 0,e.options.last)})}}onRackMonitorUpdate_(e){if(!(e.bladeController instanceof ht))throw k.shouldNeverHappen();const s=vn(this.apiSet_,e.bladeController),h=e.bladeController.binding;this.emitter_.emit("update",{event:new p(s,h.target.read(),h.target.presetKey)})}}class Ps extends Ze{constructor(e,s){super(e,new Wn(e.rackController,s)),this.emitter_=new N,this.controller_.foldable.value("expanded").emitter.on("change",h=>{this.emitter_.emit("fold",{event:new d(this,h.sender.rawValue)})}),this.rackApi_.on("change",h=>{this.emitter_.emit("change",{event:h})}),this.rackApi_.on("update",h=>{this.emitter_.emit("update",{event:h})})}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,s,h){return this.rackApi_.addInput(e,s,h)}addMonitor(e,s,h){return this.rackApi_.addMonitor(e,s,h)}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,s){return this.rackApi_.add(e,s)}remove(e){this.rackApi_.remove(e)}addBlade(e){return this.rackApi_.addBlade(e)}on(e,s){const h=s.bind(this);return this.emitter_.on(e,x=>{h(x.event)}),this}}class As extends Et{constructor(e){super({blade:e.blade,view:e.view,viewProps:e.rackController.viewProps}),this.rackController=e.rackController}}class lr{constructor(e,s){const h=M(s.viewName);this.element=e.createElement("div"),this.element.classList.add(h()),s.viewProps.bindClassModifiers(this.element)}}function cr(r,e){for(let s=0;s<r.length;s++){const h=r[s];if(h instanceof Ke&&h.binding===e)return h}return null}function hr(r,e){for(let s=0;s<r.length;s++){const h=r[s];if(h instanceof ht&&h.binding===e)return h}return null}function pr(r,e){for(let s=0;s<r.length;s++){const h=r[s];if(h instanceof fe&&h.value===e)return h}return null}function Ms(r){return r instanceof _n?r.rack:r instanceof As?r.rackController.rack:null}function ur(r){const e=Ms(r);return e?e.bcSet_:null}class dr{constructor(e){var s,h;this.onBladePositionsChange_=this.onBladePositionsChange_.bind(this),this.onSetAdd_=this.onSetAdd_.bind(this),this.onSetRemove_=this.onSetRemove_.bind(this),this.onChildDispose_=this.onChildDispose_.bind(this),this.onChildPositionsChange_=this.onChildPositionsChange_.bind(this),this.onChildInputChange_=this.onChildInputChange_.bind(this),this.onChildMonitorUpdate_=this.onChildMonitorUpdate_.bind(this),this.onChildValueChange_=this.onChildValueChange_.bind(this),this.onChildViewPropsChange_=this.onChildViewPropsChange_.bind(this),this.onDescendantLayout_=this.onDescendantLayout_.bind(this),this.onDescendantInputChange_=this.onDescendantInputChange_.bind(this),this.onDescendantMonitorUpdate_=this.onDescendantMonitorUpdate_.bind(this),this.emitter=new N,this.blade_=(s=e.blade)!==null&&s!==void 0?s:null,(h=this.blade_)===null||h===void 0||h.value("positions").emitter.on("change",this.onBladePositionsChange_),this.viewProps=e.viewProps,this.bcSet_=new Vt(ur),this.bcSet_.emitter.on("add",this.onSetAdd_),this.bcSet_.emitter.on("remove",this.onSetRemove_)}get children(){return this.bcSet_.items}add(e,s){var h;(h=e.parent)===null||h===void 0||h.remove(e),A(e,"parent")?e.parent=this:(e.parent_=this,ze({key:"parent",target:"BladeController",place:"BladeRack.add"})),this.bcSet_.add(e,s)}remove(e){A(e,"parent")?e.parent=null:(e.parent_=null,ze({key:"parent",target:"BladeController",place:"BladeRack.remove"})),this.bcSet_.remove(e)}find(e){return this.bcSet_.allItems().filter(s=>s instanceof e)}onSetAdd_(e){this.updatePositions_();const s=e.target===e.root;if(this.emitter.emit("add",{bladeController:e.item,index:e.index,isRoot:s,sender:this}),!s)return;const h=e.item;if(h.viewProps.emitter.on("change",this.onChildViewPropsChange_),h.blade.value("positions").emitter.on("change",this.onChildPositionsChange_),h.viewProps.handleDispose(this.onChildDispose_),h instanceof Ke)h.binding.emitter.on("change",this.onChildInputChange_);else if(h instanceof ht)h.binding.emitter.on("update",this.onChildMonitorUpdate_);else if(h instanceof fe)h.value.emitter.on("change",this.onChildValueChange_);else{const x=Ms(h);if(x){const L=x.emitter;L.on("layout",this.onDescendantLayout_),L.on("inputchange",this.onDescendantInputChange_),L.on("monitorupdate",this.onDescendantMonitorUpdate_)}}}onSetRemove_(e){this.updatePositions_();const s=e.target===e.root;if(this.emitter.emit("remove",{bladeController:e.item,isRoot:s,sender:this}),!s)return;const h=e.item;if(h instanceof Ke)h.binding.emitter.off("change",this.onChildInputChange_);else if(h instanceof ht)h.binding.emitter.off("update",this.onChildMonitorUpdate_);else if(h instanceof fe)h.value.emitter.off("change",this.onChildValueChange_);else{const x=Ms(h);if(x){const L=x.emitter;L.off("layout",this.onDescendantLayout_),L.off("inputchange",this.onDescendantInputChange_),L.off("monitorupdate",this.onDescendantMonitorUpdate_)}}}updatePositions_(){const e=this.bcSet_.items.filter(x=>!x.viewProps.get("hidden")),s=e[0],h=e[e.length-1];this.bcSet_.items.forEach(x=>{const L=[];x===s&&(L.push("first"),(!this.blade_||this.blade_.get("positions").includes("veryfirst"))&&L.push("veryfirst")),x===h&&(L.push("last"),(!this.blade_||this.blade_.get("positions").includes("verylast"))&&L.push("verylast")),x.blade.set("positions",L)})}onChildPositionsChange_(){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildViewPropsChange_(e){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildDispose_(){this.bcSet_.items.filter(s=>s.viewProps.get("disposed")).forEach(s=>{this.bcSet_.remove(s)})}onChildInputChange_(e){const s=cr(this.find(Ke),e.sender);if(!s)throw k.alreadyDisposed();this.emitter.emit("inputchange",{bladeController:s,options:e.options,sender:this})}onChildMonitorUpdate_(e){const s=hr(this.find(ht),e.sender);if(!s)throw k.alreadyDisposed();this.emitter.emit("monitorupdate",{bladeController:s,sender:this})}onChildValueChange_(e){const s=pr(this.find(fe),e.sender);if(!s)throw k.alreadyDisposed();this.emitter.emit("inputchange",{bladeController:s,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 _n extends Et{constructor(e,s){super(Object.assign(Object.assign({},s),{view:new lr(e,{viewName:"brk",viewProps:s.viewProps})})),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this);const h=new dr({blade:s.root?void 0:s.blade,viewProps:s.viewProps});h.emitter.on("add",this.onRackAdd_),h.emitter.on("remove",this.onRackRemove_),this.rack=h,this.viewProps.handleDispose(()=>{for(let x=this.rack.children.length-1;x>=0;x--)this.rack.children[x].viewProps.set("disposed",!0)})}onRackAdd_(e){e.isRoot&&Ot(this.view.element,e.bladeController.view.element,e.index)}onRackRemove_(e){e.isRoot&&qn(e.bladeController.view.element)}}const oi=M("cnt");class mr{constructor(e,s){var h;this.className_=M((h=s.viewName)!==null&&h!==void 0?h:"fld"),this.element=e.createElement("div"),this.element.classList.add(this.className_(),oi()),s.viewProps.bindClassModifiers(this.element),this.foldable_=s.foldable,this.foldable_.bindExpandedClass(this.element,this.className_(void 0,"expanded")),T(this.foldable_,"completed",X(this.element,this.className_(void 0,"cpl")));const x=e.createElement("button");x.classList.add(this.className_("b")),T(s.props,"title",se=>{b(se)?this.element.classList.add(this.className_(void 0,"not")):this.element.classList.remove(this.className_(void 0,"not"))}),s.viewProps.bindDisabled(x),this.element.appendChild(x),this.buttonElement=x;const L=e.createElement("div");L.classList.add(this.className_("i")),this.element.appendChild(L);const I=e.createElement("div");I.classList.add(this.className_("t")),Z(s.props.value("title"),I),this.buttonElement.appendChild(I),this.titleElement=I;const q=e.createElement("div");q.classList.add(this.className_("m")),this.buttonElement.appendChild(q);const ee=s.containerElement;ee.classList.add(this.className_("c")),this.element.appendChild(ee),this.containerElement=ee}}class Jn extends As{constructor(e,s){var h;const x=je.create((h=s.expanded)!==null&&h!==void 0?h:!0),L=new _n(e,{blade:s.blade,root:s.root,viewProps:s.viewProps});super(Object.assign(Object.assign({},s),{rackController:L,view:new mr(e,{containerElement:L.view.element,foldable:x,props:s.props,viewName:s.root?"rot":void 0,viewProps:s.viewProps})})),this.onTitleClick_=this.onTitleClick_.bind(this),this.props=s.props,this.foldable=x,Xe(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 fr={id:"folder",type:"blade",accept(r){const e=B,s=we(r,{title:e.required.string,view:e.required.constant("folder"),expanded:e.optional.boolean});return s?{params:s}:null},controller(r){return new Jn(r.document,{blade:r.blade,expanded:r.params.expanded,props:H.fromObject({title:r.params.title}),viewProps:r.viewProps})},api(r){return r.controller instanceof Jn?new Ps(r.controller,r.pool):null}};class Qt extends fe{constructor(e,s){const h=s.valueController.viewProps;super(Object.assign(Object.assign({},s),{value:s.valueController.value,view:new z(e,{props:s.props,viewProps:h}),viewProps:h})),this.props=s.props,this.valueController=s.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class ai extends o{}const ks=M("spr");class vr{constructor(e,s){this.element=e.createElement("div"),this.element.classList.add(ks()),s.viewProps.bindClassModifiers(this.element);const h=e.createElement("hr");h.classList.add(ks("r")),this.element.appendChild(h)}}class gn extends Et{constructor(e,s){super(Object.assign(Object.assign({},s),{view:new vr(e,{viewProps:s.viewProps})}))}}const _r={id:"separator",type:"blade",accept(r){const s=we(r,{view:B.required.constant("separator")});return s?{params:s}:null},controller(r){return new gn(r.document,{blade:r.blade,viewProps:r.viewProps})},api(r){return r.controller instanceof gn?new ai(r.controller):null}},Fe=M("tbi");class gr{constructor(e,s){this.element=e.createElement("div"),this.element.classList.add(Fe()),s.viewProps.bindClassModifiers(this.element),T(s.props,"selected",L=>{L?this.element.classList.add(Fe(void 0,"sel")):this.element.classList.remove(Fe(void 0,"sel"))});const h=e.createElement("button");h.classList.add(Fe("b")),s.viewProps.bindDisabled(h),this.element.appendChild(h),this.buttonElement=h;const x=e.createElement("div");x.classList.add(Fe("t")),Z(s.props.value("title"),x),this.buttonElement.appendChild(x),this.titleElement=x}}class Hn{constructor(e,s){this.emitter=new N,this.onClick_=this.onClick_.bind(this),this.props=s.props,this.viewProps=s.viewProps,this.view=new gr(e,{props:s.props,viewProps:s.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class li{constructor(e,s){this.onItemClick_=this.onItemClick_.bind(this),this.ic_=new Hn(e,{props:s.itemProps,viewProps:He.create()}),this.ic_.emitter.on("click",this.onItemClick_),this.cc_=new _n(e,{blade:Oe(),viewProps:He.create()}),this.props=s.props,T(this.props,"selected",h=>{this.itemController.props.set("selected",h),this.contentController.viewProps.set("hidden",!h)})}get itemController(){return this.ic_}get contentController(){return this.cc_}onItemClick_(){this.props.set("selected",!0)}}class Ls{constructor(e,s){this.controller_=e,this.rackApi_=s}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,s){this.rackApi_.add(e,s)}remove(e){this.rackApi_.remove(e)}addInput(e,s,h){return this.rackApi_.addInput(e,s,h)}addMonitor(e,s,h){return this.rackApi_.addMonitor(e,s,h)}addBlade(e){return this.rackApi_.addBlade(e)}}class ci extends Ze{constructor(e,s){super(e,new Wn(e.rackController,s)),this.onPageAdd_=this.onPageAdd_.bind(this),this.onPageRemove_=this.onPageRemove_.bind(this),this.onSelect_=this.onSelect_.bind(this),this.emitter_=new N,this.pageApiMap_=new Map,this.rackApi_.on("change",h=>{this.emitter_.emit("change",{event:h})}),this.rackApi_.on("update",h=>{this.emitter_.emit("update",{event:h})}),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(h=>{this.setUpPageApi_(h)})}get pages(){return this.controller_.pageSet.items.map(e=>{const s=this.pageApiMap_.get(e);if(!s)throw k.shouldNeverHappen();return s})}addPage(e){const s=this.controller_.view.element.ownerDocument,h=new li(s,{itemProps:H.fromObject({selected:!1,title:e.title}),props:H.fromObject({selected:!1})});this.controller_.add(h,e.index);const x=this.pageApiMap_.get(h);if(!x)throw k.shouldNeverHappen();return x}removePage(e){this.controller_.remove(e)}on(e,s){const h=s.bind(this);return this.emitter_.on(e,x=>{h(x.event)}),this}setUpPageApi_(e){const s=this.rackApi_.apiSet_.find(x=>x.controller_===e.contentController);if(!s)throw k.shouldNeverHappen();const h=new Ls(e,s);this.pageApiMap_.set(e,h)}onPageAdd_(e){this.setUpPageApi_(e.item)}onPageRemove_(e){if(!this.pageApiMap_.get(e.item))throw k.shouldNeverHappen();this.pageApiMap_.delete(e.item)}onSelect_(e){this.emitter_.emit("select",{event:new g(this,e.rawValue)})}}const hi=-1;class br{constructor(){this.onItemSelectedChange_=this.onItemSelectedChange_.bind(this),this.empty=ne(!0),this.selectedIndex=ne(hi),this.items_=[]}add(e,s){const h=s??this.items_.length;this.items_.splice(h,0,e),e.emitter.on("change",this.onItemSelectedChange_),this.keepSelection_()}remove(e){const s=this.items_.indexOf(e);s<0||(this.items_.splice(s,1),e.emitter.off("change",this.onItemSelectedChange_),this.keepSelection_())}keepSelection_(){if(this.items_.length===0){this.selectedIndex.rawValue=hi,this.empty.rawValue=!0;return}const e=this.items_.findIndex(s=>s.rawValue);e<0?(this.items_.forEach((s,h)=>{s.rawValue=h===0}),this.selectedIndex.rawValue=0):(this.items_.forEach((s,h)=>{s.rawValue=h===e}),this.selectedIndex.rawValue=e),this.empty.rawValue=!1}onItemSelectedChange_(e){if(e.rawValue){const s=this.items_.findIndex(h=>h===e.sender);this.items_.forEach((h,x)=>{h.rawValue=x===s}),this.selectedIndex.rawValue=s}else this.keepSelection_()}}const Wt=M("tab");class Jt{constructor(e,s){this.element=e.createElement("div"),this.element.classList.add(Wt(),oi()),s.viewProps.bindClassModifiers(this.element),S(s.empty,X(this.element,Wt(void 0,"nop")));const h=e.createElement("div");h.classList.add(Wt("t")),this.element.appendChild(h),this.itemsElement=h;const x=e.createElement("div");x.classList.add(Wt("i")),this.element.appendChild(x);const L=s.contentsElement;L.classList.add(Wt("c")),this.element.appendChild(L),this.contentsElement=L}}class bn extends As{constructor(e,s){const h=new _n(e,{blade:s.blade,viewProps:s.viewProps}),x=new br;super({blade:s.blade,rackController:h,view:new Jt(e,{contentsElement:h.view.element,empty:x.empty,viewProps:s.viewProps})}),this.onPageAdd_=this.onPageAdd_.bind(this),this.onPageRemove_=this.onPageRemove_.bind(this),this.pageSet_=new Vt(()=>null),this.pageSet_.emitter.on("add",this.onPageAdd_),this.pageSet_.emitter.on("remove",this.onPageRemove_),this.tab=x}get pageSet(){return this.pageSet_}add(e,s){this.pageSet_.add(e,s)}remove(e){this.pageSet_.remove(this.pageSet_.items[e])}onPageAdd_(e){const s=e.item;Ot(this.view.itemsElement,s.itemController.view.element,e.index),s.itemController.viewProps.set("parent",this.viewProps),this.rackController.rack.add(s.contentController,e.index),this.tab.add(s.props.value("selected"))}onPageRemove_(e){const s=e.item;qn(s.itemController.view.element),s.itemController.viewProps.set("parent",null),this.rackController.rack.remove(s.contentController),this.tab.remove(s.props.value("selected"))}}const Ss={id:"tab",type:"blade",accept(r){const e=B,s=we(r,{pages:e.required.array(e.required.object({title:e.required.string})),view:e.required.constant("tab")});return!s||s.pages.length===0?null:{params:s}},controller(r){const e=new bn(r.document,{blade:r.blade,viewProps:r.viewProps});return r.params.pages.forEach(s=>{const h=new li(r.document,{itemProps:H.fromObject({selected:!1,title:s.title}),props:H.fromObject({selected:!1})});e.add(h)}),e},api(r){return r.controller instanceof bn?new ci(r.controller,r.pool):null}};function wr(r,e){const s=r.accept(e.params);if(!s)return null;const h=B.optional.boolean(e.params.disabled).value,x=B.optional.boolean(e.params.hidden).value;return r.controller({blade:Oe(),document:e.document,params:Object.assign(Object.assign({},s.params),{disabled:h,hidden:x}),viewProps:He.create({disabled:h,hidden:x})})}class pi{constructor(){this.disabled=!1,this.emitter=new N}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class Ts{constructor(e,s){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=e,this.emitter=new N,this.interval_=s,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 $n{constructor(e){this.onValueChange_=this.onValueChange_.bind(this),this.reader=e.reader,this.writer=e.writer,this.emitter=new N,this.value=e.value,this.value.emitter.on("change",this.onValueChange_),this.target=e.target,this.read()}read(){const e=this.target.read();e!==void 0&&(this.value.rawValue=this.reader(e))}write_(e){this.writer(this.target,e)}onValueChange_(e){this.write_(e.rawValue),this.emitter.emit("change",{options:e.options,rawValue:e.rawValue,sender:this})}}function Ve(r,e){for(;r.length<e;)r.push(void 0)}function ui(r){const e=[];return Ve(e,r),ne(e)}function Ht(r){const e=r.indexOf(void 0);return e<0?r:r.slice(0,e)}function $e(r,e){const s=[...Ht(r),e];return s.length>r.length?s.splice(0,s.length-r.length):Ve(s,r.length),s}class yr{constructor(e){this.onTick_=this.onTick_.bind(this),this.reader_=e.reader,this.target=e.target,this.emitter=new N,this.value=e.value,this.ticker=e.ticker,this.ticker.emitter.on("tick",this.onTick_),this.read()}dispose(){this.ticker.dispose()}read(){const e=this.target.read();if(e===void 0)return;const s=this.value.rawValue,h=this.reader_(e);this.value.rawValue=$e(s,h),this.emitter.emit("update",{rawValue:h,sender:this})}onTick_(e){this.read()}}class wn{constructor(e){this.constraints=e}constrain(e){return this.constraints.reduce((s,h)=>h.constrain(s),e)}}function st(r,e){if(r instanceof e)return r;if(r instanceof wn){const s=r.constraints.reduce((h,x)=>h||(x instanceof e?x:null),null);if(s)return s}return null}class $t{constructor(e){this.values=H.fromObject({max:e.max,min:e.min})}constrain(e){const s=this.values.get("max"),h=this.values.get("min");return Math.min(Math.max(e,h),s)}}class yn{constructor(e){this.values=H.fromObject({options:e})}get options(){return this.values.get("options")}constrain(e){const s=this.values.get("options");return s.length===0||s.filter(x=>x.value===e).length>0?e:s[0].value}}class Es{constructor(e){this.values=H.fromObject({max:e.max,min:e.min})}get maxValue(){return this.values.get("max")}get minValue(){return this.values.get("min")}constrain(e){const s=this.values.get("max"),h=this.values.get("min");let x=e;return b(h)||(x=Math.max(x,h)),b(s)||(x=Math.min(x,s)),x}}class es{constructor(e,s=0){this.step=e,this.origin=s}constrain(e){const s=this.origin%this.step,h=Math.round((e-s)/this.step);return s+h*this.step}}const en=M("lst");class di{constructor(e,s){this.onValueChange_=this.onValueChange_.bind(this),this.props_=s.props,this.element=e.createElement("div"),this.element.classList.add(en()),s.viewProps.bindClassModifiers(this.element);const h=e.createElement("select");h.classList.add(en("s")),s.viewProps.bindDisabled(h),this.element.appendChild(h),this.selectElement=h;const x=e.createElement("div");x.classList.add(en("m")),x.appendChild(Mt(e,"dropdown")),this.element.appendChild(x),s.value.emitter.on("change",this.onValueChange_),this.value_=s.value,T(this.props_,"options",L=>{mn(this.selectElement),L.forEach(I=>{const q=e.createElement("option");q.textContent=I.text,this.selectElement.appendChild(q)}),this.update_()})}update_(){const e=this.props_.get("options").map(s=>s.value);this.selectElement.selectedIndex=e.indexOf(this.value_.rawValue)}onValueChange_(){this.update_()}}class xn{constructor(e,s){this.onSelectChange_=this.onSelectChange_.bind(this),this.props=s.props,this.value=s.value,this.viewProps=s.viewProps,this.view=new di(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.view.selectElement.addEventListener("change",this.onSelectChange_)}onSelectChange_(e){const s=e.currentTarget;this.value.rawValue=this.props.get("options")[s.selectedIndex].value}}const mi=M("pop");class xr{constructor(e,s){this.element=e.createElement("div"),this.element.classList.add(mi()),s.viewProps.bindClassModifiers(this.element),S(s.shows,X(this.element,mi(void 0,"v")))}}class fi{constructor(e,s){this.shows=ne(!1),this.viewProps=s.viewProps,this.view=new xr(e,{shows:this.shows,viewProps:this.viewProps})}}const vi=M("txt");class Cr{constructor(e,s){this.onChange_=this.onChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(vi()),s.viewProps.bindClassModifiers(this.element),this.props_=s.props,this.props_.emitter.on("change",this.onChange_);const h=e.createElement("input");h.classList.add(vi("i")),h.type="text",s.viewProps.bindDisabled(h),this.element.appendChild(h),this.inputElement=h,s.value.emitter.on("change",this.onChange_),this.value_=s.value,this.refresh()}refresh(){const e=this.props_.get("formatter");this.inputElement.value=e(this.value_.rawValue)}onChange_(){this.refresh()}}class ts{constructor(e,s){this.onInputChange_=this.onInputChange_.bind(this),this.parser_=s.parser,this.props=s.props,this.value=s.value,this.viewProps=s.viewProps,this.view=new Cr(e,{props:s.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(e){const h=e.currentTarget.value,x=this.parser_(h);b(x)||(this.value.rawValue=x),this.view.refresh()}}function Pr(r){return String(r)}function _i(r){return r==="false"?!1:!!r}function gi(r){return Pr(r)}class Ar{constructor(e){this.text=e}evaluate(){return Number(this.text)}toString(){return this.text}}const Mr={"**":(r,e)=>Math.pow(r,e),"*":(r,e)=>r*e,"/":(r,e)=>r/e,"%":(r,e)=>r%e,"+":(r,e)=>r+e,"-":(r,e)=>r-e,"<<":(r,e)=>r<<e,">>":(r,e)=>r>>e,">>>":(r,e)=>r>>>e,"&":(r,e)=>r&e,"^":(r,e)=>r^e,"|":(r,e)=>r|e};class kr{constructor(e,s,h){this.left=s,this.operator=e,this.right=h}evaluate(){const e=Mr[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 bi={"+":r=>r,"-":r=>-r,"~":r=>~r};class Lr{constructor(e,s){this.operator=e,this.expression=s}evaluate(){const e=bi[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 Os(r){return(e,s)=>{for(let h=0;h<r.length;h++){const x=r[h](e,s);if(x!=="")return x}return""}}function It(r,e){var s;const h=r.substr(e).match(/^\s+/);return(s=h&&h[0])!==null&&s!==void 0?s:""}function Sr(r,e){const s=r.substr(e,1);return s.match(/^[1-9]$/)?s:""}function Cn(r,e){var s;const h=r.substr(e).match(/^[0-9]+/);return(s=h&&h[0])!==null&&s!==void 0?s:""}function Tr(r,e){const s=Cn(r,e);if(s!=="")return s;const h=r.substr(e,1);if(e+=1,h!=="-"&&h!=="+")return"";const x=Cn(r,e);return x===""?"":h+x}function pt(r,e){const s=r.substr(e,1);if(e+=1,s.toLowerCase()!=="e")return"";const h=Tr(r,e);return h===""?"":s+h}function wi(r,e){const s=r.substr(e,1);if(s==="0")return s;const h=Sr(r,e);return e+=h.length,h===""?"":h+Cn(r,e)}function Er(r,e){const s=wi(r,e);if(e+=s.length,s==="")return"";const h=r.substr(e,1);if(e+=h.length,h!==".")return"";const x=Cn(r,e);return e+=x.length,s+h+x+pt(r,e)}function yi(r,e){const s=r.substr(e,1);if(e+=s.length,s!==".")return"";const h=Cn(r,e);return e+=h.length,h===""?"":s+h+pt(r,e)}function Or(r,e){const s=wi(r,e);return e+=s.length,s===""?"":s+pt(r,e)}const xi=Os([Er,yi,Or]);function Ds(r,e){var s;const h=r.substr(e).match(/^[01]+/);return(s=h&&h[0])!==null&&s!==void 0?s:""}function Dr(r,e){const s=r.substr(e,2);if(e+=s.length,s.toLowerCase()!=="0b")return"";const h=Ds(r,e);return h===""?"":s+h}function Ci(r,e){var s;const h=r.substr(e).match(/^[0-7]+/);return(s=h&&h[0])!==null&&s!==void 0?s:""}function et(r,e){const s=r.substr(e,2);if(e+=s.length,s.toLowerCase()!=="0o")return"";const h=Ci(r,e);return h===""?"":s+h}function Vr(r,e){var s;const h=r.substr(e).match(/^[0-9a-f]+/i);return(s=h&&h[0])!==null&&s!==void 0?s:""}function Ir(r,e){const s=r.substr(e,2);if(e+=s.length,s.toLowerCase()!=="0x")return"";const h=Vr(r,e);return h===""?"":s+h}const Vs=Os([Dr,et,Ir]),Br=Os([Vs,xi]);function Lt(r,e){const s=Br(r,e);return e+=s.length,s===""?null:{evaluable:new Ar(s),cursor:e}}function Is(r,e){const s=r.substr(e,1);if(e+=s.length,s!=="(")return null;const h=ns(r,e);if(!h)return null;e=h.cursor,e+=It(r,e).length;const x=r.substr(e,1);return e+=x.length,x!==")"?null:{evaluable:h.evaluable,cursor:e}}function Fr(r,e){var s;return(s=Lt(r,e))!==null&&s!==void 0?s:Is(r,e)}function Bs(r,e){const s=Fr(r,e);if(s)return s;const h=r.substr(e,1);if(e+=h.length,h!=="+"&&h!=="-"&&h!=="~")return null;const x=Bs(r,e);return x?(e=x.cursor,{cursor:e,evaluable:new Lr(h,x.evaluable)}):null}function Nr(r,e,s){s+=It(e,s).length;const h=r.filter(x=>e.startsWith(x,s))[0];return h?(s+=h.length,s+=It(e,s).length,{cursor:s,operator:h}):null}function Bt(r,e){return(s,h)=>{const x=r(s,h);if(!x)return null;h=x.cursor;let L=x.evaluable;for(;;){const I=Nr(e,s,h);if(!I)break;h=I.cursor;const q=r(s,h);if(!q)return null;h=q.cursor,L=new kr(I.operator,L,q.evaluable)}return L?{cursor:h,evaluable:L}:null}}const Pi=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((r,e)=>Bt(r,e),Bs);function ns(r,e){return e+=It(r,e).length,Pi(r,e)}function Ai(r){const e=ns(r,0);return!e||e.cursor+It(r,e.cursor).length!==r.length?null:e.evaluable}function ut(r){var e;const s=Ai(r);return(e=s==null?void 0:s.evaluate())!==null&&e!==void 0?e:null}function yt(r){if(typeof r=="number")return r;if(typeof r=="string"){const e=ut(r);if(!b(e))return e}return 0}function Ur(r){return String(r)}function Ne(r){return e=>e.toFixed(Math.max(Math.min(r,20),0))}const Mi=Ne(0);function Pn(r){return Mi(r)+"%"}function Fs(r){return String(r)}function St(r){return r}function tn({primary:r,secondary:e,forward:s,backward:h}){let x=!1;function L(I){x||(x=!0,I(),x=!1)}r.emitter.on("change",I=>{L(()=>{e.setRawValue(s(r,e),I.options)})}),e.emitter.on("change",I=>{L(()=>{r.setRawValue(h(r,e),I.options)}),L(()=>{e.setRawValue(s(r,e),I.options)})}),L(()=>{e.setRawValue(s(r,e),{forceEmit:!1,last:!0})})}function Re(r,e){const s=r*(e.altKey?.1:1)*(e.shiftKey?10:1);return e.upKey?+s:e.downKey?-s:0}function An(r){return{altKey:r.altKey,downKey:r.key==="ArrowDown",shiftKey:r.shiftKey,upKey:r.key==="ArrowUp"}}function dt(r){return{altKey:r.altKey,downKey:r.key==="ArrowLeft",shiftKey:r.shiftKey,upKey:r.key==="ArrowRight"}}function ki(r){return r==="ArrowUp"||r==="ArrowDown"}function ss(r){return ki(r)||r==="ArrowLeft"||r==="ArrowRight"}function Ns(r,e){var s,h;const x=e.ownerDocument.defaultView,L=e.getBoundingClientRect();return{x:r.pageX-(((s=x&&x.scrollX)!==null&&s!==void 0?s:0)+L.left),y:r.pageY-(((h=x&&x.scrollY)!==null&&h!==void 0?h:0)+L.top)}}class Ft{constructor(e){this.lastTouch_=null,this.onDocumentMouseMove_=this.onDocumentMouseMove_.bind(this),this.onDocumentMouseUp_=this.onDocumentMouseUp_.bind(this),this.onMouseDown_=this.onMouseDown_.bind(this),this.onTouchEnd_=this.onTouchEnd_.bind(this),this.onTouchMove_=this.onTouchMove_.bind(this),this.onTouchStart_=this.onTouchStart_.bind(this),this.elem_=e,this.emitter=new N,e.addEventListener("touchstart",this.onTouchStart_,{passive:!1}),e.addEventListener("touchmove",this.onTouchMove_,{passive:!0}),e.addEventListener("touchend",this.onTouchEnd_),e.addEventListener("mousedown",this.onMouseDown_)}computePosition_(e){const s=this.elem_.getBoundingClientRect();return{bounds:{width:s.width,height:s.height},point:e?{x:e.x,y:e.y}:null}}onMouseDown_(e){var s;e.preventDefault(),(s=e.currentTarget)===null||s===void 0||s.focus();const h=this.elem_.ownerDocument;h.addEventListener("mousemove",this.onDocumentMouseMove_),h.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(Ns(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onDocumentMouseMove_(e){this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(Ns(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onDocumentMouseUp_(e){const s=this.elem_.ownerDocument;s.removeEventListener("mousemove",this.onDocumentMouseMove_),s.removeEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("up",{altKey:e.altKey,data:this.computePosition_(Ns(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onTouchStart_(e){e.preventDefault();const s=e.targetTouches.item(0),h=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(s?{x:s.clientX-h.left,y:s.clientY-h.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=s}onTouchMove_(e){const s=e.targetTouches.item(0),h=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(s?{x:s.clientX-h.left,y:s.clientY-h.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=s}onTouchEnd_(e){var s;const h=(s=e.targetTouches.item(0))!==null&&s!==void 0?s:this.lastTouch_,x=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:e.altKey,data:this.computePosition_(h?{x:h.clientX-x.left,y:h.clientY-x.top}:void 0),sender:this,shiftKey:e.shiftKey})}}function Le(r,e,s,h,x){const L=(r-e)/(s-e);return h+L*(x-h)}function Us(r){return String(r.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function Ie(r,e,s){return Math.min(Math.max(r,e),s)}function nn(r,e){return(r%e+e)%e}const qe=M("txt");class zs{constructor(e,s){this.onChange_=this.onChange_.bind(this),this.props_=s.props,this.props_.emitter.on("change",this.onChange_),this.element=e.createElement("div"),this.element.classList.add(qe(),qe(void 0,"num")),s.arrayPosition&&this.element.classList.add(qe(void 0,s.arrayPosition)),s.viewProps.bindClassModifiers(this.element);const h=e.createElement("input");h.classList.add(qe("i")),h.type="text",s.viewProps.bindDisabled(h),this.element.appendChild(h),this.inputElement=h,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=s.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add(qe()),this.inputElement.classList.add(qe("i"));const x=e.createElement("div");x.classList.add(qe("k")),this.element.appendChild(x),this.knobElement=x;const L=e.createElementNS(Ye,"svg");L.classList.add(qe("g")),this.knobElement.appendChild(L);const I=e.createElementNS(Ye,"path");I.classList.add(qe("gb")),L.appendChild(I),this.guideBodyElem_=I;const q=e.createElementNS(Ye,"path");q.classList.add(qe("gh")),L.appendChild(q),this.guideHeadElem_=q;const ee=e.createElement("div");ee.classList.add(M("tt")()),this.knobElement.appendChild(ee),this.tooltipElem_=ee,s.value.emitter.on("change",this.onChange_),this.value=s.value,this.refresh()}onDraggingChange_(e){if(e.rawValue===null){this.element.classList.remove(qe(void 0,"drg"));return}this.element.classList.add(qe(void 0,"drg"));const s=e.rawValue/this.props_.get("draggingScale"),h=s+(s>0?-1:s<0?1:0),x=Ie(-h,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${h+x},0 L${h},4 L${h+x},8`,`M ${s},-1 L${s},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${s},4`);const L=this.props_.get("formatter");this.tooltipElem_.textContent=L(this.value.rawValue),this.tooltipElem_.style.left=`${s}px`}refresh(){const e=this.props_.get("formatter");this.inputElement.value=e(this.value.rawValue)}onChange_(){this.refresh()}}class Mn{constructor(e,s){var h;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_=s.baseStep,this.parser_=s.parser,this.props=s.props,this.sliderProps_=(h=s.sliderProps)!==null&&h!==void 0?h:null,this.value=s.value,this.viewProps=s.viewProps,this.dragging_=ne(null),this.view=new zs(e,{arrayPosition:s.arrayPosition,dragging:this.dragging_,props:this.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.inputElement.addEventListener("keydown",this.onInputKeyDown_),this.view.inputElement.addEventListener("keyup",this.onInputKeyUp_);const x=new Ft(this.view.knobElement);x.emitter.on("down",this.onPointerDown_),x.emitter.on("move",this.onPointerMove_),x.emitter.on("up",this.onPointerUp_)}constrainValue_(e){var s,h;const x=(s=this.sliderProps_)===null||s===void 0?void 0:s.get("minValue"),L=(h=this.sliderProps_)===null||h===void 0?void 0:h.get("maxValue");let I=e;return x!==void 0&&(I=Math.max(I,x)),L!==void 0&&(I=Math.min(I,L)),I}onInputChange_(e){const h=e.currentTarget.value,x=this.parser_(h);b(x)||(this.value.rawValue=this.constrainValue_(x)),this.view.refresh()}onInputKeyDown_(e){const s=Re(this.baseStep_,An(e));s!==0&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+s),{forceEmit:!1,last:!1})}onInputKeyUp_(e){Re(this.baseStep_,An(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 s=e.point.x-e.bounds.width/2;return this.constrainValue_(this.originRawValue_+s*this.props.get("draggingScale"))}onPointerMove_(e){const s=this.computeDraggingValue_(e.data);s!==null&&(this.value.setRawValue(s,{forceEmit:!1,last:!1}),this.dragging_.rawValue=this.value.rawValue-this.originRawValue_)}onPointerUp_(e){const s=this.computeDraggingValue_(e.data);s!==null&&(this.value.setRawValue(s,{forceEmit:!0,last:!0}),this.dragging_.rawValue=null)}}const Rs=M("sld");class Qe{constructor(e,s){this.onChange_=this.onChange_.bind(this),this.props_=s.props,this.props_.emitter.on("change",this.onChange_),this.element=e.createElement("div"),this.element.classList.add(Rs()),s.viewProps.bindClassModifiers(this.element);const h=e.createElement("div");h.classList.add(Rs("t")),s.viewProps.bindTabIndex(h),this.element.appendChild(h),this.trackElement=h;const x=e.createElement("div");x.classList.add(Rs("k")),this.trackElement.appendChild(x),this.knobElement=x,s.value.emitter.on("change",this.onChange_),this.value=s.value,this.update_()}update_(){const e=Ie(Le(this.value.rawValue,this.props_.get("minValue"),this.props_.get("maxValue"),0,100),0,100);this.knobElement.style.width=`${e}%`}onChange_(){this.update_()}}class js{constructor(e,s){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_=s.baseStep,this.value=s.value,this.viewProps=s.viewProps,this.props=s.props,this.view=new Qe(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new Ft(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,s){e.point&&this.value.setRawValue(Le(Ie(e.point.x,0,e.bounds.width),0,e.bounds.width,this.props.get("minValue"),this.props.get("maxValue")),s)}onPointerDownOrMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){const s=Re(this.baseStep_,dt(e));s!==0&&this.value.setRawValue(this.value.rawValue+s,{forceEmit:!1,last:!1})}onKeyUp_(e){Re(this.baseStep_,dt(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const kn=M("sldtxt");class Gs{constructor(e,s){this.element=e.createElement("div"),this.element.classList.add(kn());const h=e.createElement("div");h.classList.add(kn("s")),this.sliderView_=s.sliderView,h.appendChild(this.sliderView_.element),this.element.appendChild(h);const x=e.createElement("div");x.classList.add(kn("t")),this.textView_=s.textView,x.appendChild(this.textView_.element),this.element.appendChild(x)}}class is{constructor(e,s){this.value=s.value,this.viewProps=s.viewProps,this.sliderC_=new js(e,{baseStep:s.baseStep,props:s.sliderProps,value:s.value,viewProps:this.viewProps}),this.textC_=new Mn(e,{baseStep:s.baseStep,parser:s.parser,props:s.textProps,sliderProps:s.sliderProps,value:s.value,viewProps:s.viewProps}),this.view=new Gs(e,{sliderView:this.sliderC_.view,textView:this.textC_.view})}get sliderController(){return this.sliderC_}get textController(){return this.textC_}}function it(r,e){r.write(e)}function Ln(r){const e=B;if(Array.isArray(r))return e.required.array(e.required.object({text:e.required.string,value:e.required.raw}))(r).value;if(typeof r=="object")return e.required.raw(r).value}function Ks(r){if(r==="inline"||r==="popup")return r}function xt(r){const e=B;return e.required.object({max:e.optional.number,min:e.optional.number,step:e.optional.number})(r).value}function Li(r){if(Array.isArray(r))return r;const e=[];return Object.keys(r).forEach(s=>{e.push({text:s,value:r[s]})}),e}function Ys(r){return b(r)?null:new yn(Li(r))}function zr(r){const e=r?st(r,es):null;return e?e.step:null}function rs(r,e){const s=r&&st(r,es);return s?Us(s.step):Math.max(Us(e),2)}function Nt(r){const e=zr(r);return e??1}function Ut(r,e){var s;const h=r&&st(r,es),x=Math.abs((s=h==null?void 0:h.step)!==null&&s!==void 0?s:e);return x===0?.1:Math.pow(10,Math.floor(Math.log10(x))-1)}const Sn=M("ckb");class Tn{constructor(e,s){this.onValueChange_=this.onValueChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(Sn()),s.viewProps.bindClassModifiers(this.element);const h=e.createElement("label");h.classList.add(Sn("l")),this.element.appendChild(h);const x=e.createElement("input");x.classList.add(Sn("i")),x.type="checkbox",h.appendChild(x),this.inputElement=x,s.viewProps.bindDisabled(this.inputElement);const L=e.createElement("div");L.classList.add(Sn("w")),h.appendChild(L);const I=Mt(e,"check");L.appendChild(I),s.value.emitter.on("change",this.onValueChange_),this.value=s.value,this.update_()}update_(){this.inputElement.checked=this.value.rawValue}onValueChange_(){this.update_()}}class Si{constructor(e,s){this.onInputChange_=this.onInputChange_.bind(this),this.value=s.value,this.viewProps=s.viewProps,this.view=new Tn(e,{value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(e){const s=e.currentTarget;this.value.rawValue=s.checked}}function Ti(r){const e=[],s=Ys(r.options);return s&&e.push(s),new wn(e)}const os={id:"input-bool",type:"input",accept:(r,e)=>{if(typeof r!="boolean")return null;const h=we(e,{options:B.optional.custom(Ln)});return h?{initialValue:r,params:h}:null},binding:{reader:r=>_i,constraint:r=>Ti(r.params),writer:r=>it},controller:r=>{const e=r.document,s=r.value,h=r.constraint,x=h&&st(h,yn);return x?new xn(e,{props:new H({options:x.values.value("options")}),value:s,viewProps:r.viewProps}):new Si(e,{value:s,viewProps:r.viewProps})}},zt=M("col");class Xs{constructor(e,s){this.element=e.createElement("div"),this.element.classList.add(zt()),s.foldable.bindExpandedClass(this.element,zt(void 0,"expanded")),T(s.foldable,"completed",X(this.element,zt(void 0,"cpl")));const h=e.createElement("div");h.classList.add(zt("h")),this.element.appendChild(h);const x=e.createElement("div");x.classList.add(zt("s")),h.appendChild(x),this.swatchElement=x;const L=e.createElement("div");if(L.classList.add(zt("t")),h.appendChild(L),this.textElement=L,s.pickerLayout==="inline"){const I=e.createElement("div");I.classList.add(zt("p")),this.element.appendChild(I),this.pickerElement=I}else this.pickerElement=null}}function Rr(r,e,s){const h=Ie(r/255,0,1),x=Ie(e/255,0,1),L=Ie(s/255,0,1),I=Math.max(h,x,L),q=Math.min(h,x,L),ee=I-q;let se=0,xe=0;const Pe=(q+I)/2;return ee!==0&&(xe=ee/(1-Math.abs(I+q-1)),h===I?se=(x-L)/ee:x===I?se=2+(L-h)/ee:se=4+(h-x)/ee,se=se/6+(se<0?1:0)),[se*360,xe*100,Pe*100]}function jr(r,e,s){const h=(r%360+360)%360,x=Ie(e/100,0,1),L=Ie(s/100,0,1),I=(1-Math.abs(2*L-1))*x,q=I*(1-Math.abs(h/60%2-1)),ee=L-I/2;let se,xe,Pe;return h>=0&&h<60?[se,xe,Pe]=[I,q,0]:h>=60&&h<120?[se,xe,Pe]=[q,I,0]:h>=120&&h<180?[se,xe,Pe]=[0,I,q]:h>=180&&h<240?[se,xe,Pe]=[0,q,I]:h>=240&&h<300?[se,xe,Pe]=[q,0,I]:[se,xe,Pe]=[I,0,q],[(se+ee)*255,(xe+ee)*255,(Pe+ee)*255]}function Gr(r,e,s){const h=Ie(r/255,0,1),x=Ie(e/255,0,1),L=Ie(s/255,0,1),I=Math.max(h,x,L),q=Math.min(h,x,L),ee=I-q;let se;ee===0?se=0:I===h?se=60*(((x-L)/ee%6+6)%6):I===x?se=60*((L-h)/ee+2):se=60*((h-x)/ee+4);const xe=I===0?0:ee/I,Pe=I;return[se,xe*100,Pe*100]}function Ei(r,e,s){const h=nn(r,360),x=Ie(e/100,0,1),L=Ie(s/100,0,1),I=L*x,q=I*(1-Math.abs(h/60%2-1)),ee=L-I;let se,xe,Pe;return h>=0&&h<60?[se,xe,Pe]=[I,q,0]:h>=60&&h<120?[se,xe,Pe]=[q,I,0]:h>=120&&h<180?[se,xe,Pe]=[0,I,q]:h>=180&&h<240?[se,xe,Pe]=[0,q,I]:h>=240&&h<300?[se,xe,Pe]=[q,0,I]:[se,xe,Pe]=[I,0,q],[(se+ee)*255,(xe+ee)*255,(Pe+ee)*255]}function f(r,e,s){const h=s+e*(100-Math.abs(2*s-100))/200;return[r,h!==0?e*(100-Math.abs(2*s-100))/h:0,s+e*(100-Math.abs(2*s-100))/(2*100)]}function l(r,e,s){const h=100-Math.abs(s*(200-e)/100-100);return[r,h!==0?e*s/h:0,s*(200-e)/(2*100)]}function u(r){return[r[0],r[1],r[2]]}function w(r,e){return[r[0],r[1],r[2],e]}const P={hsl:{hsl:(r,e,s)=>[r,e,s],hsv:f,rgb:jr},hsv:{hsl:l,hsv:(r,e,s)=>[r,e,s],rgb:Ei},rgb:{hsl:Rr,hsv:Gr,rgb:(r,e,s)=>[r,e,s]}};function V(r,e){return[e==="float"?1:r==="rgb"?255:360,e==="float"?1:r==="rgb"?255:100,e==="float"?1:r==="rgb"?255:100]}function G(r,e){return r===e?e:nn(r,e)}function Q(r,e,s){var h;const x=V(e,s);return[e==="rgb"?Ie(r[0],0,x[0]):G(r[0],x[0]),Ie(r[1],0,x[1]),Ie(r[2],0,x[2]),Ie((h=r[3])!==null&&h!==void 0?h:1,0,1)]}function be(r,e,s,h){const x=V(e,s),L=V(e,h);return r.map((I,q)=>I/x[q]*L[q])}function tt(r,e,s){const h=be(r,e.mode,e.type,"int"),x=P[e.mode][s.mode](...h);return be(x,s.mode,"int",s.type)}function nt(r,e){return typeof r!="object"||b(r)?!1:e in r&&typeof r[e]=="number"}class ue{static black(e="int"){return new ue([0,0,0],"rgb",e)}static fromObject(e,s="int"){const h="a"in e?[e.r,e.g,e.b,e.a]:[e.r,e.g,e.b];return new ue(h,"rgb",s)}static toRgbaObject(e,s="int"){return e.toRgbaObject(s)}static isRgbColorObject(e){return nt(e,"r")&&nt(e,"g")&&nt(e,"b")}static isRgbaColorObject(e){return this.isRgbColorObject(e)&&nt(e,"a")}static isColorObject(e){return this.isRgbColorObject(e)}static equals(e,s){if(e.mode!==s.mode)return!1;const h=e.comps_,x=s.comps_;for(let L=0;L<h.length;L++)if(h[L]!==x[L])return!1;return!0}constructor(e,s,h="int"){this.mode=s,this.type=h,this.comps_=Q(e,s,h)}getComponents(e,s="int"){return w(tt(u(this.comps_),{mode:this.mode,type:this.type},{mode:e??this.mode,type:s}),this.comps_[3])}toRgbaObject(e="int"){const s=this.getComponents("rgb",e);return{r:s[0],g:s[1],b:s[2],a:s[3]}}}const Tt=M("colp");class Kr{constructor(e,s){this.alphaViews_=null,this.element=e.createElement("div"),this.element.classList.add(Tt()),s.viewProps.bindClassModifiers(this.element);const h=e.createElement("div");h.classList.add(Tt("hsv"));const x=e.createElement("div");x.classList.add(Tt("sv")),this.svPaletteView_=s.svPaletteView,x.appendChild(this.svPaletteView_.element),h.appendChild(x);const L=e.createElement("div");L.classList.add(Tt("h")),this.hPaletteView_=s.hPaletteView,L.appendChild(this.hPaletteView_.element),h.appendChild(L),this.element.appendChild(h);const I=e.createElement("div");if(I.classList.add(Tt("rgb")),this.textView_=s.textView,I.appendChild(this.textView_.element),this.element.appendChild(I),s.alphaViews){this.alphaViews_={palette:s.alphaViews.palette,text:s.alphaViews.text};const q=e.createElement("div");q.classList.add(Tt("a"));const ee=e.createElement("div");ee.classList.add(Tt("ap")),ee.appendChild(this.alphaViews_.palette.element),q.appendChild(ee);const se=e.createElement("div");se.classList.add(Tt("at")),se.appendChild(this.alphaViews_.text.element),q.appendChild(se),this.element.appendChild(q)}}get allFocusableElements(){const e=[this.svPaletteView_.element,this.hPaletteView_.element,this.textView_.modeSelectElement,...this.textView_.textViews.map(s=>s.inputElement)];return this.alphaViews_&&e.push(this.alphaViews_.palette.element,this.alphaViews_.text.inputElement),e}}function Lp(r){return r==="int"?"int":r==="float"?"float":void 0}function Yr(r){const e=B;return we(r,{alpha:e.optional.boolean,color:e.optional.object({alpha:e.optional.boolean,type:e.optional.custom(Lp)}),expanded:e.optional.boolean,picker:e.optional.custom(Ks)})}function En(r){return r?.1:1}function On(r){var e;return(e=r.color)===null||e===void 0?void 0:e.type}function Sp(r,e){return r.alpha===e.alpha&&r.mode===e.mode&&r.notation===e.notation&&r.type===e.type}function mt(r,e){const s=r.match(/^(.+)%$/);return Math.min(s?parseFloat(s[1])*.01*e:parseFloat(r),e)}const Tp={deg:r=>r,grad:r=>r*360/400,rad:r=>r*360/(2*Math.PI),turn:r=>r*360};function ta(r){const e=r.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);if(!e)return parseFloat(r);const s=parseFloat(e[1]),h=e[2];return Tp[h](s)}function na(r){const e=r.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 s=[mt(e[1],255),mt(e[2],255),mt(e[3],255)];return isNaN(s[0])||isNaN(s[1])||isNaN(s[2])?null:s}function sa(r){return e=>{const s=na(e);return s?new ue(s,"rgb",r):null}}function ia(r){const e=r.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 s=[mt(e[1],255),mt(e[2],255),mt(e[3],255),mt(e[4],1)];return isNaN(s[0])||isNaN(s[1])||isNaN(s[2])||isNaN(s[3])?null:s}function ra(r){return e=>{const s=ia(e);return s?new ue(s,"rgb",r):null}}function oa(r){const e=r.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 s=[ta(e[1]),mt(e[2],100),mt(e[3],100)];return isNaN(s[0])||isNaN(s[1])||isNaN(s[2])?null:s}function aa(r){return e=>{const s=oa(e);return s?new ue(s,"hsl",r):null}}function la(r){const e=r.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 s=[ta(e[1]),mt(e[2],100),mt(e[3],100),mt(e[4],1)];return isNaN(s[0])||isNaN(s[1])||isNaN(s[2])||isNaN(s[3])?null:s}function ca(r){return e=>{const s=la(e);return s?new ue(s,"hsl",r):null}}function ha(r){const e=r.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 s=r.match(/^(?:#|0x)([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return s?[parseInt(s[1],16),parseInt(s[2],16),parseInt(s[3],16)]:null}function Ep(r){const e=ha(r);return e?new ue(e,"rgb","int"):null}function pa(r){const e=r.match(/^#?([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(e)return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16),Le(parseInt(e[4]+e[4],16),0,255,0,1)];const s=r.match(/^(?:#|0x)?([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return s?[parseInt(s[1],16),parseInt(s[2],16),parseInt(s[3],16),Le(parseInt(s[4],16),0,255,0,1)]:null}function Op(r){const e=pa(r);return e?new ue(e,"rgb","int"):null}function ua(r){const e=r.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 s=[parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3])];return isNaN(s[0])||isNaN(s[1])||isNaN(s[2])?null:s}function da(r){return e=>{const s=ua(e);return s?new ue(s,"rgb",r):null}}function ma(r){const e=r.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 s=[parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3]),parseFloat(e[4])];return isNaN(s[0])||isNaN(s[1])||isNaN(s[2])||isNaN(s[3])?null:s}function fa(r){return e=>{const s=ma(e);return s?new ue(s,"rgb",r):null}}const Dp=[{parser:ha,result:{alpha:!1,mode:"rgb",notation:"hex"}},{parser:pa,result:{alpha:!0,mode:"rgb",notation:"hex"}},{parser:na,result:{alpha:!1,mode:"rgb",notation:"func"}},{parser:ia,result:{alpha:!0,mode:"rgb",notation:"func"}},{parser:oa,result:{alpha:!1,mode:"hsl",notation:"func"}},{parser:la,result:{alpha:!0,mode:"hsl",notation:"func"}},{parser:ua,result:{alpha:!1,mode:"rgb",notation:"object"}},{parser:ma,result:{alpha:!0,mode:"rgb",notation:"object"}}];function Vp(r){return Dp.reduce((e,{parser:s,result:h})=>e||(s(r)?h:null),null)}function Xr(r,e="int"){const s=Vp(r);return s?s.notation==="hex"&&e!=="float"?Object.assign(Object.assign({},s),{type:"int"}):s.notation==="func"?Object.assign(Object.assign({},s),{type:e}):null:null}const va={int:[Ep,Op,sa("int"),ra("int"),aa("int"),ca("int"),da("int"),fa("int")],float:[sa("float"),ra("float"),aa("float"),ca("float"),da("float"),fa("float")]};function Ip(r){const e=va[r];return s=>{if(typeof s!="string")return ue.black(r);const h=e.reduce((x,L)=>x||L(s),null);return h??ue.black(r)}}function Zr(r){const e=va[r];return s=>e.reduce((h,x)=>h||x(s),null)}function _a(r){const e=Ie(Math.floor(r),0,255).toString(16);return e.length===1?`0${e}`:e}function ga(r,e="#"){const s=u(r.getComponents("rgb")).map(_a).join("");return`${e}${s}`}function qr(r,e="#"){const s=r.getComponents("rgb"),h=[s[0],s[1],s[2],s[3]*255].map(_a).join("");return`${e}${h}`}function ba(r,e){const s=Ne(e==="float"?2:0);return`rgb(${u(r.getComponents("rgb",e)).map(x=>s(x)).join(", ")})`}function Bp(r){return e=>ba(e,r)}function Oi(r,e){const s=Ne(2),h=Ne(e==="float"?2:0);return`rgba(${r.getComponents("rgb",e).map((L,I)=>(I===3?s:h)(L)).join(", ")})`}function Fp(r){return e=>Oi(e,r)}function Np(r){const e=[Ne(0),Pn,Pn];return`hsl(${u(r.getComponents("hsl")).map((h,x)=>e[x](h)).join(", ")})`}function Up(r){const e=[Ne(0),Pn,Pn,Ne(2)];return`hsla(${r.getComponents("hsl").map((h,x)=>e[x](h)).join(", ")})`}function wa(r,e){const s=Ne(e==="float"?2:0),h=["r","g","b"];return`{${u(r.getComponents("rgb",e)).map((L,I)=>`${h[I]}: ${s(L)}`).join(", ")}}`}function zp(r){return e=>wa(e,r)}function ya(r,e){const s=Ne(2),h=Ne(e==="float"?2:0),x=["r","g","b","a"];return`{${r.getComponents("rgb",e).map((I,q)=>{const ee=q===3?s:h;return`${x[q]}: ${ee(I)}`}).join(", ")}}`}function Rp(r){return e=>ya(e,r)}const jp=[{format:{alpha:!1,mode:"rgb",notation:"hex",type:"int"},stringifier:ga},{format:{alpha:!0,mode:"rgb",notation:"hex",type:"int"},stringifier:qr},{format:{alpha:!1,mode:"hsl",notation:"func",type:"int"},stringifier:Np},{format:{alpha:!0,mode:"hsl",notation:"func",type:"int"},stringifier:Up},...["int","float"].reduce((r,e)=>[...r,{format:{alpha:!1,mode:"rgb",notation:"func",type:e},stringifier:Bp(e)},{format:{alpha:!0,mode:"rgb",notation:"func",type:e},stringifier:Fp(e)},{format:{alpha:!1,mode:"rgb",notation:"object",type:e},stringifier:zp(e)},{format:{alpha:!0,mode:"rgb",notation:"object",type:e},stringifier:Rp(e)}],[])];function Qr(r){return jp.reduce((e,s)=>e||(Sp(s.format,r)?s.stringifier:null),null)}const Zs=M("apl");class Gp{constructor(e,s){this.onValueChange_=this.onValueChange_.bind(this),this.value=s.value,this.value.emitter.on("change",this.onValueChange_),this.element=e.createElement("div"),this.element.classList.add(Zs()),s.viewProps.bindClassModifiers(this.element),s.viewProps.bindTabIndex(this.element);const h=e.createElement("div");h.classList.add(Zs("b")),this.element.appendChild(h);const x=e.createElement("div");x.classList.add(Zs("c")),h.appendChild(x),this.colorElem_=x;const L=e.createElement("div");L.classList.add(Zs("m")),this.element.appendChild(L),this.markerElem_=L;const I=e.createElement("div");I.classList.add(Zs("p")),this.markerElem_.appendChild(I),this.previewElem_=I,this.update_()}update_(){const e=this.value.rawValue,s=e.getComponents("rgb"),h=new ue([s[0],s[1],s[2],0],"rgb"),x=new ue([s[0],s[1],s[2],255],"rgb"),L=["to right",Oi(h),Oi(x)];this.colorElem_.style.background=`linear-gradient(${L.join(",")})`,this.previewElem_.style.backgroundColor=Oi(e);const I=Le(s[3],0,1,0,100);this.markerElem_.style.left=`${I}%`}onValueChange_(){this.update_()}}class Kp{constructor(e,s){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=s.value,this.viewProps=s.viewProps,this.view=new Gp(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new Ft(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,s){if(!e.point)return;const h=e.point.x/e.bounds.width,x=this.value.rawValue,[L,I,q]=x.getComponents("hsv");this.value.setRawValue(new ue([L,I,q,h],"hsv"),s)}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 s=Re(En(!0),dt(e));if(s===0)return;const h=this.value.rawValue,[x,L,I,q]=h.getComponents("hsv");this.value.setRawValue(new ue([x,L,I,q+s],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){Re(En(!0),dt(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const as=M("coltxt");function Yp(r){const e=r.createElement("select"),s=[{text:"RGB",value:"rgb"},{text:"HSL",value:"hsl"},{text:"HSV",value:"hsv"}];return e.appendChild(s.reduce((h,x)=>{const L=r.createElement("option");return L.textContent=x.text,L.value=x.value,h.appendChild(L),h},r.createDocumentFragment())),e}class Xp{constructor(e,s){this.element=e.createElement("div"),this.element.classList.add(as()),s.viewProps.bindClassModifiers(this.element);const h=e.createElement("div");h.classList.add(as("m")),this.modeElem_=Yp(e),this.modeElem_.classList.add(as("ms")),h.appendChild(this.modeSelectElement),s.viewProps.bindDisabled(this.modeElem_);const x=e.createElement("div");x.classList.add(as("mm")),x.appendChild(Mt(e,"dropdown")),h.appendChild(x),this.element.appendChild(h);const L=e.createElement("div");L.classList.add(as("w")),this.element.appendChild(L),this.textsElem_=L,this.textViews_=s.textViews,this.applyTextViews_(),S(s.colorMode,I=>{this.modeElem_.value=I})}get modeSelectElement(){return this.modeElem_}get textViews(){return this.textViews_}set textViews(e){this.textViews_=e,this.applyTextViews_()}applyTextViews_(){mn(this.textsElem_);const e=this.element.ownerDocument;this.textViews_.forEach(s=>{const h=e.createElement("div");h.classList.add(as("c")),h.appendChild(s.element),this.textsElem_.appendChild(h)})}}function Zp(r){return Ne(r==="float"?2:0)}function qp(r,e,s){const h=V(r,e)[s];return new $t({min:0,max:h})}function Wr(r,e,s){return new Mn(r,{arrayPosition:s===0?"fst":s===3-1?"lst":"mid",baseStep:En(!1),parser:e.parser,props:H.fromObject({draggingScale:e.colorType==="float"?.01:1,formatter:Zp(e.colorType)}),value:ne(0,{constraint:qp(e.colorMode,e.colorType,s)}),viewProps:e.viewProps})}class Qp{constructor(e,s){this.onModeSelectChange_=this.onModeSelectChange_.bind(this),this.colorType_=s.colorType,this.parser_=s.parser,this.value=s.value,this.viewProps=s.viewProps,this.colorMode=ne(this.value.rawValue.mode),this.ccs_=this.createComponentControllers_(e),this.view=new Xp(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 s={colorMode:this.colorMode.rawValue,colorType:this.colorType_,parser:this.parser_,viewProps:this.viewProps},h=[Wr(e,s,0),Wr(e,s,1),Wr(e,s,2)];return h.forEach((x,L)=>{tn({primary:this.value,secondary:x.value,forward:I=>I.rawValue.getComponents(this.colorMode.rawValue,this.colorType_)[L],backward:(I,q)=>{const ee=this.colorMode.rawValue,se=I.rawValue.getComponents(ee,this.colorType_);return se[L]=q.rawValue,new ue(w(u(se),se[3]),ee,this.colorType_)}})}),h}onModeSelectChange_(e){const s=e.currentTarget;this.colorMode.rawValue=s.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 Jr=M("hpl");class Wp{constructor(e,s){this.onValueChange_=this.onValueChange_.bind(this),this.value=s.value,this.value.emitter.on("change",this.onValueChange_),this.element=e.createElement("div"),this.element.classList.add(Jr()),s.viewProps.bindClassModifiers(this.element),s.viewProps.bindTabIndex(this.element);const h=e.createElement("div");h.classList.add(Jr("c")),this.element.appendChild(h);const x=e.createElement("div");x.classList.add(Jr("m")),this.element.appendChild(x),this.markerElem_=x,this.update_()}update_(){const e=this.value.rawValue,[s]=e.getComponents("hsv");this.markerElem_.style.backgroundColor=ba(new ue([s,100,100],"hsv"));const h=Le(s,0,360,0,100);this.markerElem_.style.left=`${h}%`}onValueChange_(){this.update_()}}class Jp{constructor(e,s){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=s.value,this.viewProps=s.viewProps,this.view=new Wp(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new Ft(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,s){if(!e.point)return;const h=Le(Ie(e.point.x,0,e.bounds.width),0,e.bounds.width,0,360),x=this.value.rawValue,[,L,I,q]=x.getComponents("hsv");this.value.setRawValue(new ue([h,L,I,q],"hsv"),s)}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 s=Re(En(!1),dt(e));if(s===0)return;const h=this.value.rawValue,[x,L,I,q]=h.getComponents("hsv");this.value.setRawValue(new ue([x+s,L,I,q],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){Re(En(!1),dt(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const Hr=M("svp"),xa=64;class Hp{constructor(e,s){this.onValueChange_=this.onValueChange_.bind(this),this.value=s.value,this.value.emitter.on("change",this.onValueChange_),this.element=e.createElement("div"),this.element.classList.add(Hr()),s.viewProps.bindClassModifiers(this.element),s.viewProps.bindTabIndex(this.element);const h=e.createElement("canvas");h.height=xa,h.width=xa,h.classList.add(Hr("c")),this.element.appendChild(h),this.canvasElement=h;const x=e.createElement("div");x.classList.add(Hr("m")),this.element.appendChild(x),this.markerElem_=x,this.update_()}update_(){const e=Xn(this.canvasElement);if(!e)return;const h=this.value.rawValue.getComponents("hsv"),x=this.canvasElement.width,L=this.canvasElement.height,I=e.getImageData(0,0,x,L),q=I.data;for(let xe=0;xe<L;xe++)for(let Pe=0;Pe<x;Pe++){const Dn=Le(Pe,0,x,0,100),Qs=Le(xe,0,L,100,0),Ws=Ei(h[0],Dn,Qs),Di=(xe*x+Pe)*4;q[Di]=Ws[0],q[Di+1]=Ws[1],q[Di+2]=Ws[2],q[Di+3]=255}e.putImageData(I,0,0);const ee=Le(h[1],0,100,0,100);this.markerElem_.style.left=`${ee}%`;const se=Le(h[2],0,100,100,0);this.markerElem_.style.top=`${se}%`}onValueChange_(){this.update_()}}class $p{constructor(e,s){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=s.value,this.viewProps=s.viewProps,this.view=new Hp(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new Ft(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,s){if(!e.point)return;const h=Le(e.point.x,0,e.bounds.width,0,100),x=Le(e.point.y,0,e.bounds.height,100,0),[L,,,I]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new ue([L,h,x,I],"hsv"),s)}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){ss(e.key)&&e.preventDefault();const[s,h,x,L]=this.value.rawValue.getComponents("hsv"),I=En(!1),q=Re(I,dt(e)),ee=Re(I,An(e));q===0&&ee===0||this.value.setRawValue(new ue([s,h+q,x+ee,L],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){const s=En(!1),h=Re(s,dt(e)),x=Re(s,An(e));h===0&&x===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class eu{constructor(e,s){this.value=s.value,this.viewProps=s.viewProps,this.hPaletteC_=new Jp(e,{value:this.value,viewProps:this.viewProps}),this.svPaletteC_=new $p(e,{value:this.value,viewProps:this.viewProps}),this.alphaIcs_=s.supportsAlpha?{palette:new Kp(e,{value:this.value,viewProps:this.viewProps}),text:new Mn(e,{parser:ut,baseStep:.1,props:H.fromObject({draggingScale:.01,formatter:Ne(2)}),value:ne(0,{constraint:new $t({min:0,max:1})}),viewProps:this.viewProps})}:null,this.alphaIcs_&&tn({primary:this.value,secondary:this.alphaIcs_.text.value,forward:h=>h.rawValue.getComponents()[3],backward:(h,x)=>{const L=h.rawValue.getComponents();return L[3]=x.rawValue,new ue(L,h.rawValue.mode)}}),this.textC_=new Qp(e,{colorType:s.colorType,parser:ut,value:this.value,viewProps:this.viewProps}),this.view=new Kr(e,{alphaViews:this.alphaIcs_?{palette:this.alphaIcs_.palette.view,text:this.alphaIcs_.text.view}:null,hPaletteView:this.hPaletteC_.view,supportsAlpha:s.supportsAlpha,svPaletteView:this.svPaletteC_.view,textView:this.textC_.view,viewProps:this.viewProps})}get textController(){return this.textC_}}const $r=M("colsw");class tu{constructor(e,s){this.onValueChange_=this.onValueChange_.bind(this),s.value.emitter.on("change",this.onValueChange_),this.value=s.value,this.element=e.createElement("div"),this.element.classList.add($r()),s.viewProps.bindClassModifiers(this.element);const h=e.createElement("div");h.classList.add($r("sw")),this.element.appendChild(h),this.swatchElem_=h;const x=e.createElement("button");x.classList.add($r("b")),s.viewProps.bindDisabled(x),this.element.appendChild(x),this.buttonElement=x,this.update_()}update_(){const e=this.value.rawValue;this.swatchElem_.style.backgroundColor=qr(e)}onValueChange_(){this.update_()}}class nu{constructor(e,s){this.value=s.value,this.viewProps=s.viewProps,this.view=new tu(e,{value:this.value,viewProps:this.viewProps})}}class eo{constructor(e,s){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=s.value,this.viewProps=s.viewProps,this.foldable_=je.create(s.expanded),this.swatchC_=new nu(e,{value:this.value,viewProps:this.viewProps});const h=this.swatchC_.view.buttonElement;h.addEventListener("blur",this.onButtonBlur_),h.addEventListener("click",this.onButtonClick_),this.textC_=new ts(e,{parser:s.parser,props:H.fromObject({formatter:s.formatter}),value:this.value,viewProps:this.viewProps}),this.view=new Xs(e,{foldable:this.foldable_,pickerLayout:s.pickerLayout}),this.view.swatchElement.appendChild(this.swatchC_.view.element),this.view.textElement.appendChild(this.textC_.view.element),this.popC_=s.pickerLayout==="popup"?new fi(e,{viewProps:this.viewProps}):null;const x=new eu(e,{colorType:s.colorType,supportsAlpha:s.supportsAlpha,value:this.value,viewProps:this.viewProps});x.view.allFocusableElements.forEach(L=>{L.addEventListener("blur",this.onPopupChildBlur_),L.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=x,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(x.view.element),tn({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:L=>L.rawValue,backward:(L,I)=>I.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),Xe(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onButtonBlur_(e){if(!this.popC_)return;const s=this.view.element,h=e.relatedTarget;(!h||!s.contains(h))&&(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 s=this.popC_.view.element,h=kt(e);h&&s.contains(h)||h&&h===this.swatchC_.view.buttonElement&&!bt(s.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 su(r,e){return ue.isColorObject(r)?ue.fromObject(r,e):ue.black(e)}function iu(r){return u(r.getComponents("rgb")).reduce((e,s)=>e<<8|Math.floor(s)&255,0)}function ru(r){return r.getComponents("rgb").reduce((e,s,h)=>{const x=Math.floor(h===3?s*255:s)&255;return e<<8|x},0)>>>0}function ou(r){return new ue([r>>16&255,r>>8&255,r&255],"rgb")}function au(r){return new ue([r>>24&255,r>>16&255,r>>8&255,Le(r&255,0,255,0,1)],"rgb")}function lu(r){return typeof r!="number"?ue.black():ou(r)}function cu(r){return typeof r!="number"?ue.black():au(r)}function hu(r){const e=Qr(r);return e?(s,h)=>{it(s,e(h))}:null}function pu(r){const e=r?ru:iu;return(s,h)=>{it(s,e(h))}}function uu(r,e,s){const h=e.toRgbaObject(s);r.writeProperty("r",h.r),r.writeProperty("g",h.g),r.writeProperty("b",h.b),r.writeProperty("a",h.a)}function du(r,e,s){const h=e.toRgbaObject(s);r.writeProperty("r",h.r),r.writeProperty("g",h.g),r.writeProperty("b",h.b)}function mu(r,e){return(s,h)=>{r?uu(s,h,e):du(s,h,e)}}function to(r){var e;return!!(r!=null&&r.alpha||!((e=r==null?void 0:r.color)===null||e===void 0)&&e.alpha)}function fu(r){return r?e=>qr(e,"0x"):e=>ga(e,"0x")}function vu(r){return"color"in r||"view"in r&&r.view==="color"}const _u={id:"input-color-number",type:"input",accept:(r,e)=>{if(typeof r!="number"||!vu(e))return null;const s=Yr(e);return s?{initialValue:r,params:s}:null},binding:{reader:r=>to(r.params)?cu:lu,equals:ue.equals,writer:r=>pu(to(r.params))},controller:r=>{const e=to(r.params),s="expanded"in r.params?r.params.expanded:void 0,h="picker"in r.params?r.params.picker:void 0;return new eo(r.document,{colorType:"int",expanded:s??!1,formatter:fu(e),parser:Zr("int"),pickerLayout:h??"popup",supportsAlpha:e,value:r.value,viewProps:r.viewProps})}};function gu(r){return ue.isRgbaColorObject(r)}function bu(r){return e=>su(e,r)}function wu(r,e){return s=>r?ya(s,e):wa(s,e)}const yu={id:"input-color-object",type:"input",accept:(r,e)=>{if(!ue.isColorObject(r))return null;const s=Yr(e);return s?{initialValue:r,params:s}:null},binding:{reader:r=>bu(On(r.params)),equals:ue.equals,writer:r=>mu(gu(r.initialValue),On(r.params))},controller:r=>{var e;const s=ue.isRgbaColorObject(r.initialValue),h="expanded"in r.params?r.params.expanded:void 0,x="picker"in r.params?r.params.picker:void 0,L=(e=On(r.params))!==null&&e!==void 0?e:"int";return new eo(r.document,{colorType:L,expanded:h??!1,formatter:wu(s,L),parser:Zr(L),pickerLayout:x??"popup",supportsAlpha:s,value:r.value,viewProps:r.viewProps})}},xu={id:"input-color-string",type:"input",accept:(r,e)=>{if(typeof r!="string"||"view"in e&&e.view==="text")return null;const s=Xr(r,On(e));if(!s||!Qr(s))return null;const x=Yr(e);return x?{initialValue:r,params:x}:null},binding:{reader:r=>{var e;return Ip((e=On(r.params))!==null&&e!==void 0?e:"int")},equals:ue.equals,writer:r=>{const e=Xr(r.initialValue,On(r.params));if(!e)throw k.shouldNeverHappen();const s=hu(e);if(!s)throw k.notBindable();return s}},controller:r=>{const e=Xr(r.initialValue,On(r.params));if(!e)throw k.shouldNeverHappen();const s=Qr(e);if(!s)throw k.shouldNeverHappen();const h="expanded"in r.params?r.params.expanded:void 0,x="picker"in r.params?r.params.picker:void 0;return new eo(r.document,{colorType:e.type,expanded:h??!1,formatter:s,parser:Zr(e.type),pickerLayout:x??"popup",supportsAlpha:e.alpha,value:r.value,viewProps:r.viewProps})}};class sn{constructor(e){this.components=e.components,this.asm_=e.assembly}constrain(e){const s=this.asm_.toComponents(e).map((h,x)=>{var L,I;return(I=(L=this.components[x])===null||L===void 0?void 0:L.constrain(h))!==null&&I!==void 0?I:h});return this.asm_.fromComponents(s)}}const Ca=M("pndtxt");class Cu{constructor(e,s){this.textViews=s.textViews,this.element=e.createElement("div"),this.element.classList.add(Ca()),this.textViews.forEach(h=>{const x=e.createElement("div");x.classList.add(Ca("a")),x.appendChild(h.element),this.element.appendChild(x)})}}function Pu(r,e,s){return new Mn(r,{arrayPosition:s===0?"fst":s===e.axes.length-1?"lst":"mid",baseStep:e.axes[s].baseStep,parser:e.parser,props:e.axes[s].textProps,value:ne(0,{constraint:e.axes[s].constraint}),viewProps:e.viewProps})}class no{constructor(e,s){this.value=s.value,this.viewProps=s.viewProps,this.acs_=s.axes.map((h,x)=>Pu(e,s,x)),this.acs_.forEach((h,x)=>{tn({primary:this.value,secondary:h.value,forward:L=>s.assembly.toComponents(L.rawValue)[x],backward:(L,I)=>{const q=s.assembly.toComponents(L.rawValue);return q[x]=I.rawValue,s.assembly.fromComponents(q)}})}),this.view=new Cu(e,{textViews:this.acs_.map(h=>h.view)})}}function Pa(r,e){return"step"in r&&!b(r.step)?new es(r.step,e):null}function Aa(r){return!b(r.max)&&!b(r.min)?new $t({max:r.max,min:r.min}):!b(r.max)||!b(r.min)?new Es({max:r.max,min:r.min}):null}function Au(r){const e=st(r,$t);if(e)return[e.values.get("min"),e.values.get("max")];const s=st(r,Es);return s?[s.minValue,s.maxValue]:[void 0,void 0]}function Mu(r,e){const s=[],h=Pa(r,e);h&&s.push(h);const x=Aa(r);x&&s.push(x);const L=Ys(r.options);return L&&s.push(L),new wn(s)}const ku={id:"input-number",type:"input",accept:(r,e)=>{if(typeof r!="number")return null;const s=B,h=we(e,{format:s.optional.function,max:s.optional.number,min:s.optional.number,options:s.optional.custom(Ln),step:s.optional.number});return h?{initialValue:r,params:h}:null},binding:{reader:r=>yt,constraint:r=>Mu(r.params,r.initialValue),writer:r=>it},controller:r=>{var e;const s=r.value,h=r.constraint,x=h&&st(h,yn);if(x)return new xn(r.document,{props:new H({options:x.values.value("options")}),value:s,viewProps:r.viewProps});const L=(e="format"in r.params?r.params.format:void 0)!==null&&e!==void 0?e:Ne(rs(h,s.rawValue)),I=h&&st(h,$t);return I?new is(r.document,{baseStep:Nt(h),parser:ut,sliderProps:new H({maxValue:I.values.value("max"),minValue:I.values.value("min")}),textProps:H.fromObject({draggingScale:Ut(h,s.rawValue),formatter:L}),value:s,viewProps:r.viewProps}):new Mn(r.document,{baseStep:Nt(h),parser:ut,props:H.fromObject({draggingScale:Ut(h,s.rawValue),formatter:L}),value:s,viewProps:r.viewProps})}};class rn{constructor(e=0,s=0){this.x=e,this.y=s}getComponents(){return[this.x,this.y]}static isObject(e){if(b(e))return!1;const s=e.x,h=e.y;return!(typeof s!="number"||typeof h!="number")}static equals(e,s){return e.x===s.x&&e.y===s.y}toObject(){return{x:this.x,y:this.y}}}const Ma={toComponents:r=>r.getComponents(),fromComponents:r=>new rn(...r)},ls=M("p2d");class Lu{constructor(e,s){this.element=e.createElement("div"),this.element.classList.add(ls()),s.viewProps.bindClassModifiers(this.element),S(s.expanded,X(this.element,ls(void 0,"expanded")));const h=e.createElement("div");h.classList.add(ls("h")),this.element.appendChild(h);const x=e.createElement("button");x.classList.add(ls("b")),x.appendChild(Mt(e,"p2dpad")),s.viewProps.bindDisabled(x),h.appendChild(x),this.buttonElement=x;const L=e.createElement("div");if(L.classList.add(ls("t")),h.appendChild(L),this.textElement=L,s.pickerLayout==="inline"){const I=e.createElement("div");I.classList.add(ls("p")),this.element.appendChild(I),this.pickerElement=I}else this.pickerElement=null}}const on=M("p2dp");class Su{constructor(e,s){this.onFoldableChange_=this.onFoldableChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.invertsY_=s.invertsY,this.maxValue_=s.maxValue,this.element=e.createElement("div"),this.element.classList.add(on()),s.layout==="popup"&&this.element.classList.add(on(void 0,"p")),s.viewProps.bindClassModifiers(this.element);const h=e.createElement("div");h.classList.add(on("p")),s.viewProps.bindTabIndex(h),this.element.appendChild(h),this.padElement=h;const x=e.createElementNS(Ye,"svg");x.classList.add(on("g")),this.padElement.appendChild(x),this.svgElem_=x;const L=e.createElementNS(Ye,"line");L.classList.add(on("ax")),L.setAttributeNS(null,"x1","0"),L.setAttributeNS(null,"y1","50%"),L.setAttributeNS(null,"x2","100%"),L.setAttributeNS(null,"y2","50%"),this.svgElem_.appendChild(L);const I=e.createElementNS(Ye,"line");I.classList.add(on("ax")),I.setAttributeNS(null,"x1","50%"),I.setAttributeNS(null,"y1","0"),I.setAttributeNS(null,"x2","50%"),I.setAttributeNS(null,"y2","100%"),this.svgElem_.appendChild(I);const q=e.createElementNS(Ye,"line");q.classList.add(on("l")),q.setAttributeNS(null,"x1","50%"),q.setAttributeNS(null,"y1","50%"),this.svgElem_.appendChild(q),this.lineElem_=q;const ee=e.createElement("div");ee.classList.add(on("m")),this.padElement.appendChild(ee),this.markerElem_=ee,s.value.emitter.on("change",this.onValueChange_),this.value=s.value,this.update_()}get allFocusableElements(){return[this.padElement]}update_(){const[e,s]=this.value.rawValue.getComponents(),h=this.maxValue_,x=Le(e,-h,+h,0,100),L=Le(s,-h,+h,0,100),I=this.invertsY_?100-L:L;this.lineElem_.setAttributeNS(null,"x2",`${x}%`),this.lineElem_.setAttributeNS(null,"y2",`${I}%`),this.markerElem_.style.left=`${x}%`,this.markerElem_.style.top=`${I}%`}onValueChange_(){this.update_()}onFoldableChange_(){this.update_()}}function ka(r,e,s){return[Re(e[0],dt(r)),Re(e[1],An(r))*(s?1:-1)]}class Tu{constructor(e,s){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=s.value,this.viewProps=s.viewProps,this.baseSteps_=s.baseSteps,this.maxValue_=s.maxValue,this.invertsY_=s.invertsY,this.view=new Su(e,{invertsY:this.invertsY_,layout:s.layout,maxValue:this.maxValue_,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new Ft(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,s){if(!e.point)return;const h=this.maxValue_,x=Le(e.point.x,0,e.bounds.width,-h,+h),L=Le(this.invertsY_?e.bounds.height-e.point.y:e.point.y,0,e.bounds.height,-h,+h);this.value.setRawValue(new rn(x,L),s)}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){ss(e.key)&&e.preventDefault();const[s,h]=ka(e,this.baseSteps_,this.invertsY_);s===0&&h===0||this.value.setRawValue(new rn(this.value.rawValue.x+s,this.value.rawValue.y+h),{forceEmit:!1,last:!1})}onPadKeyUp_(e){const[s,h]=ka(e,this.baseSteps_,this.invertsY_);s===0&&h===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class Eu{constructor(e,s){var h,x;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=s.value,this.viewProps=s.viewProps,this.foldable_=je.create(s.expanded),this.popC_=s.pickerLayout==="popup"?new fi(e,{viewProps:this.viewProps}):null;const L=new Tu(e,{baseSteps:[s.axes[0].baseStep,s.axes[1].baseStep],invertsY:s.invertsY,layout:s.pickerLayout,maxValue:s.maxValue,value:this.value,viewProps:this.viewProps});L.view.allFocusableElements.forEach(I=>{I.addEventListener("blur",this.onPopupChildBlur_),I.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=L,this.textC_=new no(e,{assembly:Ma,axes:s.axes,parser:s.parser,value:this.value,viewProps:this.viewProps}),this.view=new Lu(e,{expanded:this.foldable_.value("expanded"),pickerLayout:s.pickerLayout,viewProps:this.viewProps}),this.view.textElement.appendChild(this.textC_.view.element),(h=this.view.buttonElement)===null||h===void 0||h.addEventListener("blur",this.onPadButtonBlur_),(x=this.view.buttonElement)===null||x===void 0||x.addEventListener("click",this.onPadButtonClick_),this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),tn({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:I=>I.rawValue,backward:(I,q)=>q.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),Xe(this.foldable_,this.view.pickerElement))}onPadButtonBlur_(e){if(!this.popC_)return;const s=this.view.element,h=e.relatedTarget;(!h||!s.contains(h))&&(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 s=this.popC_.view.element,h=kt(e);h&&s.contains(h)||h&&h===this.view.buttonElement&&!bt(s.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 cs{constructor(e=0,s=0,h=0){this.x=e,this.y=s,this.z=h}getComponents(){return[this.x,this.y,this.z]}static isObject(e){if(b(e))return!1;const s=e.x,h=e.y,x=e.z;return!(typeof s!="number"||typeof h!="number"||typeof x!="number")}static equals(e,s){return e.x===s.x&&e.y===s.y&&e.z===s.z}toObject(){return{x:this.x,y:this.y,z:this.z}}}const La={toComponents:r=>r.getComponents(),fromComponents:r=>new cs(...r)};function Ou(r){return cs.isObject(r)?new cs(r.x,r.y,r.z):new cs}function Du(r,e){r.writeProperty("x",e.x),r.writeProperty("y",e.y),r.writeProperty("z",e.z)}function Vu(r,e){return new sn({assembly:La,components:[Rt("x"in r?r.x:void 0,e.x),Rt("y"in r?r.y:void 0,e.y),Rt("z"in r?r.z:void 0,e.z)]})}function so(r,e){return{baseStep:Nt(e),constraint:e,textProps:H.fromObject({draggingScale:Ut(e,r),formatter:Ne(rs(e,r))})}}const Iu={id:"input-point3d",type:"input",accept:(r,e)=>{if(!cs.isObject(r))return null;const s=B,h=we(e,{x:s.optional.custom(xt),y:s.optional.custom(xt),z:s.optional.custom(xt)});return h?{initialValue:r,params:h}:null},binding:{reader:r=>Ou,constraint:r=>Vu(r.params,r.initialValue),equals:cs.equals,writer:r=>Du},controller:r=>{const e=r.value,s=r.constraint;if(!(s instanceof sn))throw k.shouldNeverHappen();return new no(r.document,{assembly:La,axes:[so(e.rawValue.x,s.components[0]),so(e.rawValue.y,s.components[1]),so(e.rawValue.z,s.components[2])],parser:ut,value:e,viewProps:r.viewProps})}};class hs{constructor(e=0,s=0,h=0,x=0){this.x=e,this.y=s,this.z=h,this.w=x}getComponents(){return[this.x,this.y,this.z,this.w]}static isObject(e){if(b(e))return!1;const s=e.x,h=e.y,x=e.z,L=e.w;return!(typeof s!="number"||typeof h!="number"||typeof x!="number"||typeof L!="number")}static equals(e,s){return e.x===s.x&&e.y===s.y&&e.z===s.z&&e.w===s.w}toObject(){return{x:this.x,y:this.y,z:this.z,w:this.w}}}const Sa={toComponents:r=>r.getComponents(),fromComponents:r=>new hs(...r)};function Bu(r){return hs.isObject(r)?new hs(r.x,r.y,r.z,r.w):new hs}function Fu(r,e){r.writeProperty("x",e.x),r.writeProperty("y",e.y),r.writeProperty("z",e.z),r.writeProperty("w",e.w)}function Nu(r,e){return new sn({assembly:Sa,components:[Rt("x"in r?r.x:void 0,e.x),Rt("y"in r?r.y:void 0,e.y),Rt("z"in r?r.z:void 0,e.z),Rt("w"in r?r.w:void 0,e.w)]})}function Uu(r,e){return{baseStep:Nt(e),constraint:e,textProps:H.fromObject({draggingScale:Ut(e,r),formatter:Ne(rs(e,r))})}}const zu={id:"input-point4d",type:"input",accept:(r,e)=>{if(!hs.isObject(r))return null;const s=B,h=we(e,{x:s.optional.custom(xt),y:s.optional.custom(xt),z:s.optional.custom(xt),w:s.optional.custom(xt)});return h?{initialValue:r,params:h}:null},binding:{reader:r=>Bu,constraint:r=>Nu(r.params,r.initialValue),equals:hs.equals,writer:r=>Fu},controller:r=>{const e=r.value,s=r.constraint;if(!(s instanceof sn))throw k.shouldNeverHappen();return new no(r.document,{assembly:Sa,axes:e.rawValue.getComponents().map((h,x)=>Uu(h,s.components[x])),parser:ut,value:e,viewProps:r.viewProps})}};function Ru(r){const e=[],s=Ys(r.options);return s&&e.push(s),new wn(e)}const ju={id:"input-string",type:"input",accept:(r,e)=>{if(typeof r!="string")return null;const h=we(e,{options:B.optional.custom(Ln)});return h?{initialValue:r,params:h}:null},binding:{reader:r=>Fs,constraint:r=>Ru(r.params),writer:r=>it},controller:r=>{const e=r.document,s=r.value,h=r.constraint,x=h&&st(h,yn);return x?new xn(e,{props:new H({options:x.values.value("options")}),value:s,viewProps:r.viewProps}):new ts(e,{parser:L=>L,props:H.fromObject({formatter:St}),value:s,viewProps:r.viewProps})}},qs={monitor:{defaultInterval:200,defaultLineCount:3}},Ta=M("mll");class Gu{constructor(e,s){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=s.formatter,this.element=e.createElement("div"),this.element.classList.add(Ta()),s.viewProps.bindClassModifiers(this.element);const h=e.createElement("textarea");h.classList.add(Ta("i")),h.style.height=`calc(var(--bld-us) * ${s.lineCount})`,h.readOnly=!0,s.viewProps.bindDisabled(h),this.element.appendChild(h),this.textareaElem_=h,s.value.emitter.on("change",this.onValueUpdate_),this.value=s.value,this.update_()}update_(){const e=this.textareaElem_,s=e.scrollTop===e.scrollHeight-e.clientHeight,h=[];this.value.rawValue.forEach(x=>{x!==void 0&&h.push(this.formatter_(x))}),e.textContent=h.join(`
97
+ `),s&&(e.scrollTop=e.scrollHeight)}onValueUpdate_(){this.update_()}}class io{constructor(e,s){this.value=s.value,this.viewProps=s.viewProps,this.view=new Gu(e,{formatter:s.formatter,lineCount:s.lineCount,value:this.value,viewProps:this.viewProps})}}const Ea=M("sgl");class Ku{constructor(e,s){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=s.formatter,this.element=e.createElement("div"),this.element.classList.add(Ea()),s.viewProps.bindClassModifiers(this.element);const h=e.createElement("input");h.classList.add(Ea("i")),h.readOnly=!0,h.type="text",s.viewProps.bindDisabled(h),this.element.appendChild(h),this.inputElement=h,s.value.emitter.on("change",this.onValueUpdate_),this.value=s.value,this.update_()}update_(){const e=this.value.rawValue,s=e[e.length-1];this.inputElement.value=s!==void 0?this.formatter_(s):""}onValueUpdate_(){this.update_()}}class ro{constructor(e,s){this.value=s.value,this.viewProps=s.viewProps,this.view=new Ku(e,{formatter:s.formatter,value:this.value,viewProps:this.viewProps})}}const Yu={id:"monitor-bool",type:"monitor",accept:(r,e)=>{if(typeof r!="boolean")return null;const h=we(e,{lineCount:B.optional.number});return h?{initialValue:r,params:h}:null},binding:{reader:r=>_i},controller:r=>{var e;return r.value.rawValue.length===1?new ro(r.document,{formatter:gi,value:r.value,viewProps:r.viewProps}):new io(r.document,{formatter:gi,lineCount:(e=r.params.lineCount)!==null&&e!==void 0?e:qs.monitor.defaultLineCount,value:r.value,viewProps:r.viewProps})}},an=M("grl");class Xu{constructor(e,s){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=e.createElement("div"),this.element.classList.add(an()),s.viewProps.bindClassModifiers(this.element),this.formatter_=s.formatter,this.props_=s.props,this.cursor_=s.cursor,this.cursor_.emitter.on("change",this.onCursorChange_);const h=e.createElementNS(Ye,"svg");h.classList.add(an("g")),h.style.height=`calc(var(--bld-us) * ${s.lineCount})`,this.element.appendChild(h),this.svgElem_=h;const x=e.createElementNS(Ye,"polyline");this.svgElem_.appendChild(x),this.lineElem_=x;const L=e.createElement("div");L.classList.add(an("t"),M("tt")()),this.element.appendChild(L),this.tooltipElem_=L,s.value.emitter.on("change",this.onValueUpdate_),this.value=s.value,this.update_()}get graphElement(){return this.svgElem_}update_(){const e=this.svgElem_.getBoundingClientRect(),s=this.value.rawValue.length-1,h=this.props_.get("minValue"),x=this.props_.get("maxValue"),L=[];this.value.rawValue.forEach((xe,Pe)=>{if(xe===void 0)return;const Dn=Le(Pe,0,s,0,e.width),Qs=Le(xe,h,x,e.height,0);L.push([Dn,Qs].join(","))}),this.lineElem_.setAttributeNS(null,"points",L.join(" "));const I=this.tooltipElem_,q=this.value.rawValue[this.cursor_.rawValue];if(q===void 0){I.classList.remove(an("t","a"));return}const ee=Le(this.cursor_.rawValue,0,s,0,e.width),se=Le(q,h,x,e.height,0);I.style.left=`${ee}px`,I.style.top=`${se}px`,I.textContent=`${this.formatter_(q)}`,I.classList.contains(an("t","a"))||(I.classList.add(an("t","a"),an("t","in")),ct(I),I.classList.remove(an("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class Zu{constructor(e,s){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_=s.props,this.value=s.value,this.viewProps=s.viewProps,this.cursor_=ne(-1),this.view=new Xu(e,{cursor:this.cursor_,formatter:s.formatter,lineCount:s.lineCount,props:this.props_,value:this.value,viewProps:this.viewProps}),!bt(e))this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_);else{const h=new Ft(this.view.element);h.emitter.on("down",this.onGraphPointerDown_),h.emitter.on("move",this.onGraphPointerMove_),h.emitter.on("up",this.onGraphPointerUp_)}}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(e){const s=this.view.element.getBoundingClientRect();this.cursor_.rawValue=Math.floor(Le(e.offsetX,0,s.width,0,this.value.rawValue.length))}onGraphPointerDown_(e){this.onGraphPointerMove_(e)}onGraphPointerMove_(e){if(!e.data.point){this.cursor_.rawValue=-1;return}this.cursor_.rawValue=Math.floor(Le(e.data.point.x,0,e.data.bounds.width,0,this.value.rawValue.length))}onGraphPointerUp_(){this.cursor_.rawValue=-1}}function oo(r){return"format"in r&&!b(r.format)?r.format:Ne(2)}function qu(r){var e;return r.value.rawValue.length===1?new ro(r.document,{formatter:oo(r.params),value:r.value,viewProps:r.viewProps}):new io(r.document,{formatter:oo(r.params),lineCount:(e=r.params.lineCount)!==null&&e!==void 0?e:qs.monitor.defaultLineCount,value:r.value,viewProps:r.viewProps})}function Qu(r){var e,s,h;return new Zu(r.document,{formatter:oo(r.params),lineCount:(e=r.params.lineCount)!==null&&e!==void 0?e:qs.monitor.defaultLineCount,props:H.fromObject({maxValue:(s="max"in r.params?r.params.max:null)!==null&&s!==void 0?s:100,minValue:(h="min"in r.params?r.params.min:null)!==null&&h!==void 0?h:0}),value:r.value,viewProps:r.viewProps})}function Oa(r){return"view"in r&&r.view==="graph"}const Wu={id:"monitor-number",type:"monitor",accept:(r,e)=>{if(typeof r!="number")return null;const s=B,h=we(e,{format:s.optional.function,lineCount:s.optional.number,max:s.optional.number,min:s.optional.number,view:s.optional.string});return h?{initialValue:r,params:h}:null},binding:{defaultBufferSize:r=>Oa(r)?64:1,reader:r=>yt},controller:r=>Oa(r.params)?Qu(r):qu(r)},Ju={id:"monitor-string",type:"monitor",accept:(r,e)=>{if(typeof r!="string")return null;const s=B,h=we(e,{lineCount:s.optional.number,multiline:s.optional.boolean});return h?{initialValue:r,params:h}:null},binding:{reader:r=>Fs},controller:r=>{var e;const s=r.value;return s.rawValue.length>1||"multiline"in r.params&&r.params.multiline?new io(r.document,{formatter:St,lineCount:(e=r.params.lineCount)!==null&&e!==void 0?e:qs.monitor.defaultLineCount,value:s,viewProps:r.viewProps}):new ro(r.document,{formatter:St,value:s,viewProps:r.viewProps})}};function Hu(r,e){var s;const h=r.accept(e.target.read(),e.params);if(b(h))return null;const x=B,L={target:e.target,initialValue:h.initialValue,params:h.params},I=r.binding.reader(L),q=r.binding.constraint?r.binding.constraint(L):void 0,ee=ne(I(h.initialValue),{constraint:q,equals:r.binding.equals}),se=new $n({reader:I,target:e.target,value:ee,writer:r.binding.writer(L)}),xe=x.optional.boolean(e.params.disabled).value,Pe=x.optional.boolean(e.params.hidden).value,Dn=r.controller({constraint:q,document:e.document,initialValue:h.initialValue,params:h.params,value:se.value,viewProps:He.create({disabled:xe,hidden:Pe})});return new Ke(e.document,{binding:se,blade:Oe(),props:H.fromObject({label:"label"in e.params?(s=x.optional.string(e.params.label).value)!==null&&s!==void 0?s:null:e.target.key}),valueController:Dn})}function $u(r,e){return e===0?new pi:new Ts(r,e??qs.monitor.defaultInterval)}function ed(r,e){var s,h,x;const L=B,I=r.accept(e.target.read(),e.params);if(b(I))return null;const q={target:e.target,initialValue:I.initialValue,params:I.params},ee=r.binding.reader(q),se=(h=(s=L.optional.number(e.params.bufferSize).value)!==null&&s!==void 0?s:r.binding.defaultBufferSize&&r.binding.defaultBufferSize(I.params))!==null&&h!==void 0?h:1,xe=L.optional.number(e.params.interval).value,Pe=new yr({reader:ee,target:e.target,ticker:$u(e.document,xe),value:ui(se)}),Dn=L.optional.boolean(e.params.disabled).value,Qs=L.optional.boolean(e.params.hidden).value,Ws=r.controller({document:e.document,params:I.params,value:Pe.value,viewProps:He.create({disabled:Dn,hidden:Qs})});return new ht(e.document,{binding:Pe,blade:Oe(),props:H.fromObject({label:"label"in e.params?(x=L.optional.string(e.params.label).value)!==null&&x!==void 0?x:null:e.target.key}),valueController:Ws})}class td{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,s,h){const x=s.read();if(b(x))throw new k({context:{key:s.key},type:"nomatchingcontroller"});const L=this.pluginsMap_.inputs.reduce((I,q)=>I??Hu(q,{document:e,target:s,params:h}),null);if(L)return L;throw new k({context:{key:s.key},type:"nomatchingcontroller"})}createMonitor(e,s,h){const x=this.pluginsMap_.monitors.reduce((L,I)=>L??ed(I,{document:e,params:h,target:s}),null);if(x)return x;throw new k({context:{key:s.key},type:"nomatchingcontroller"})}createBlade(e,s){const h=this.pluginsMap_.blades.reduce((x,L)=>x??wr(L,{document:e,params:s}),null);if(!h)throw new k({type:"nomatchingview",context:{params:s}});return h}createBladeApi(e){if(e instanceof Ke)return new xs(e);if(e instanceof ht)return new Cs(e);if(e instanceof _n)return new Wn(e,this);const s=this.pluginsMap_.blades.reduce((h,x)=>h??x.api({controller:e,pool:this}),null);if(!s)throw k.shouldNeverHappen();return s}}function nd(){const r=new td;return[ld,Iu,zu,ju,ku,xu,yu,_u,os,Yu,Ju,Wu,ae,fr,_r,Ss].forEach(e=>{r.register(e)}),r}function sd(r){return rn.isObject(r)?new rn(r.x,r.y):new rn}function id(r,e){r.writeProperty("x",e.x),r.writeProperty("y",e.y)}function Rt(r,e){if(!r)return;const s=[],h=Pa(r,e);h&&s.push(h);const x=Aa(r);return x&&s.push(x),new wn(s)}function rd(r,e){return new sn({assembly:Ma,components:[Rt("x"in r?r.x:void 0,e.x),Rt("y"in r?r.y:void 0,e.y)]})}function Da(r,e){const[s,h]=r?Au(r):[];if(!b(s)||!b(h))return Math.max(Math.abs(s??0),Math.abs(h??0));const x=Nt(r);return Math.max(Math.abs(x)*10,Math.abs(e)*10)}function od(r,e){const s=e instanceof sn?e.components[0]:void 0,h=e instanceof sn?e.components[1]:void 0,x=Da(s,r.x),L=Da(h,r.y);return Math.max(x,L)}function Va(r,e){return{baseStep:Nt(e),constraint:e,textProps:H.fromObject({draggingScale:Ut(e,r),formatter:Ne(rs(e,r))})}}function ad(r){if(!("y"in r))return!1;const e=r.y;return e&&"inverted"in e?!!e.inverted:!1}const ld={id:"input-point2d",type:"input",accept:(r,e)=>{if(!rn.isObject(r))return null;const s=B,h=we(e,{expanded:s.optional.boolean,picker:s.optional.custom(Ks),x:s.optional.custom(xt),y:s.optional.object({inverted:s.optional.boolean,max:s.optional.number,min:s.optional.number,step:s.optional.number})});return h?{initialValue:r,params:h}:null},binding:{reader:r=>sd,constraint:r=>rd(r.params,r.initialValue),equals:rn.equals,writer:r=>id},controller:r=>{const e=r.document,s=r.value,h=r.constraint;if(!(h instanceof sn))throw k.shouldNeverHappen();const x="expanded"in r.params?r.params.expanded:void 0,L="picker"in r.params?r.params.picker:void 0;return new Eu(e,{axes:[Va(s.rawValue.x,h.components[0]),Va(s.rawValue.y,h.components[1])],expanded:x??!1,invertsY:ad(r.params),maxValue:od(s.rawValue,h),parser:ut,pickerLayout:L??"popup",value:s,viewProps:r.viewProps})}};class Ia extends o{constructor(e){super(e),this.emitter_=new N,this.controller_.valueController.value.emitter.on("change",s=>{this.emitter_.emit("change",{event:new c(this,s.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,s){const h=s.bind(this);return this.emitter_.on(e,x=>{h(x.event)}),this}}class Ba extends o{constructor(e){super(e),this.emitter_=new N,this.controller_.valueController.value.emitter.on("change",s=>{this.emitter_.emit("change",{event:new c(this,s.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,s){const h=s.bind(this);return this.emitter_.on(e,x=>{h(x.event)}),this}}class Fa extends o{constructor(e){super(e),this.emitter_=new N,this.controller_.valueController.value.emitter.on("change",s=>{this.emitter_.emit("change",{event:new c(this,s.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,s){const h=s.bind(this);return this.emitter_.on(e,x=>{h(x.event)}),this}}const cd=function(){return{id:"list",type:"blade",accept(r){const e=B,s=we(r,{options:e.required.custom(Ln),value:e.required.raw,view:e.required.constant("list"),label:e.optional.string});return s?{params:s}:null},controller(r){const e=new yn(Li(r.params.options)),s=ne(r.params.value,{constraint:e}),h=new xn(r.document,{props:new H({options:e.values.value("options")}),value:s,viewProps:r.viewProps});return new Qt(r.document,{blade:r.blade,props:H.fromObject({label:r.params.label}),valueController:h})},api(r){return!(r.controller instanceof Qt)||!(r.controller.valueController instanceof xn)?null:new Ia(r.controller)}}}();function hd(r){return r.reduce((e,s)=>Object.assign(e,{[s.presetKey]:s.read()}),{})}function pd(r,e){r.forEach(s=>{const h=e[s.target.presetKey];h!==void 0&&s.writer(s.target,s.reader(h))})}class ud extends Ps{constructor(e,s){super(e,s)}get element(){return this.controller_.view.element}importPreset(e){const s=this.controller_.rackController.rack.find(Ke).map(h=>h.binding);pd(s,e),this.refresh()}exportPreset(){const e=this.controller_.rackController.rack.find(Ke).map(s=>s.binding.target);return hd(e)}refresh(){this.controller_.rackController.rack.find(Ke).forEach(e=>{e.binding.read()}),this.controller_.rackController.rack.find(ht).forEach(e=>{e.binding.read()})}}class dd extends Jn{constructor(e,s){super(e,{expanded:s.expanded,blade:s.blade,props:s.props,root:!0,viewProps:s.viewProps})}}const md={id:"slider",type:"blade",accept(r){const e=B,s=we(r,{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 s?{params:s}:null},controller(r){var e,s;const h=(e=r.params.value)!==null&&e!==void 0?e:0,x=new $t({max:r.params.max,min:r.params.min}),L=new is(r.document,{baseStep:1,parser:ut,sliderProps:new H({maxValue:x.values.value("max"),minValue:x.values.value("min")}),textProps:H.fromObject({draggingScale:Ut(void 0,h),formatter:(s=r.params.format)!==null&&s!==void 0?s:Ur}),value:ne(h,{constraint:x}),viewProps:r.viewProps});return new Qt(r.document,{blade:r.blade,props:H.fromObject({label:r.params.label}),valueController:L})},api(r){return!(r.controller instanceof Qt)||!(r.controller.valueController instanceof is)?null:new Ba(r.controller)}},fd=function(){return{id:"text",type:"blade",accept(r){const e=B,s=we(r,{parse:e.required.function,value:e.required.raw,view:e.required.constant("text"),format:e.optional.function,label:e.optional.string});return s?{params:s}:null},controller(r){var e;const s=new ts(r.document,{parser:r.params.parse,props:H.fromObject({formatter:(e=r.params.format)!==null&&e!==void 0?e:h=>String(h)}),value:ne(r.params.value),viewProps:r.viewProps});return new Qt(r.document,{blade:r.blade,props:H.fromObject({label:r.params.label}),valueController:s})},api(r){return!(r.controller instanceof Qt)||!(r.controller.valueController instanceof ts)?null:new Fa(r.controller)}}}();function vd(r){const e=r.createElement("div");return e.classList.add(M("dfw")()),r.body&&r.body.appendChild(e),e}function Na(r,e,s){if(r.querySelector(`style[data-tp-style=${e}]`))return;const h=r.createElement("style");h.dataset.tpStyle=e,h.textContent=s,r.head.appendChild(h)}class _d extends ud{constructor(e){var s,h;const x=e??{},L=(s=x.document)!==null&&s!==void 0?s:ws(),I=nd(),q=new dd(L,{expanded:x.expanded,blade:Oe(),props:H.fromObject({title:x.title}),viewProps:He.create()});super(q,I),this.pool_=I,this.containerElem_=(h=x.container)!==null&&h!==void 0?h:vd(L),this.containerElem_.appendChild(this.element),this.doc_=L,this.usesDefaultWrapper_=!x.container,this.setUpDefaultPlugins_()}get document(){if(!this.doc_)throw k.alreadyDisposed();return this.doc_}dispose(){const e=this.containerElem_;if(!e)throw k.alreadyDisposed();if(this.usesDefaultWrapper_){const s=e.parentElement;s&&s.removeChild(e)}this.containerElem_=null,this.doc_=null,super.dispose()}registerPlugin(e){("plugin"in e?[e.plugin]:"plugins"in e?e.plugins:[]).forEach(h=>{this.pool_.register(h),this.embedPluginStyle_(h)})}embedPluginStyle_(e){e.css&&Na(this.document,`plugin-${e.id}`,e.css)}setUpDefaultPlugins_(){Na(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:[md,cd,Ss,fd]})}}const gd=new i("3.1.10");n.BladeApi=o,n.ButtonApi=R,n.FolderApi=Ps,n.InputBindingApi=xs,n.ListApi=Ia,n.MonitorBindingApi=Cs,n.Pane=_d,n.SeparatorApi=ai,n.SliderApi=Ba,n.TabApi=ci,n.TabPageApi=Ls,n.TextApi=Fa,n.TpChangeEvent=c,n.VERSION=gd,Object.defineProperty(n,"__esModule",{value:!0})})})(sr,sr.exports);var Ap=sr.exports,ir={exports:{}};(function(v,t){(function(n,i){i(t)})(Io,function(n){class i{constructor(l){this.controller_=l}get element(){return this.controller_.view.element}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(l){this.controller_.viewProps.set("disabled",l)}get hidden(){return this.controller_.viewProps.get("hidden")}set hidden(l){this.controller_.viewProps.set("hidden",l)}dispose(){this.controller_.viewProps.set("disposed",!0)}}class o{constructor(l){this.target=l}}class a extends o{constructor(l,u,w,P){super(l),this.value=u,this.presetKey=w,this.last=P??!0}}function c(f){return f}function p(f){return f==null}const d={alreadydisposed:()=>"View has been already disposed",invalidparams:f=>`Invalid parameters for '${f.name}'`,nomatchingcontroller:f=>`No matching controller for '${f.key}'`,nomatchingview:f=>`No matching view for '${JSON.stringify(f.params)}'`,notbindable:()=>"Value is not bindable",propertynotfound:f=>`Property '${f.name}' not found`,shouldneverhappen:()=>"This error should never happen"};class g{constructor(l){var u;this.message=(u=d[l.type](l.context))!==null&&u!==void 0?u:"Unexpected error",this.name=this.constructor.name,this.stack=new Error(this.message).stack,this.type=l.type}static alreadyDisposed(){return new g({type:"alreadydisposed"})}static notBindable(){return new g({type:"notbindable"})}static propertyNotFound(l){return new g({type:"propertynotfound",context:{name:l}})}static shouldNeverHappen(){return new g({type:"shouldneverhappen"})}}class y{constructor(){this.observers_={}}on(l,u){let w=this.observers_[l];return w||(w=this.observers_[l]=[]),w.push({handler:u}),this}off(l,u){const w=this.observers_[l];return w&&(this.observers_[l]=w.filter(P=>P.handler!==u)),this}emit(l,u){const w=this.observers_[l];w&&w.forEach(P=>{P.handler(u)})}}const b="tp";function C(f){return(u,w)=>[b,"-",f,"v",u?`_${u}`:"",w?`-${w}`:""].join("")}function A(f,l){return u=>l(f(u))}function E(f){return f.rawValue}function k(f,l){f.emitter.on("change",A(E,l)),l(f.rawValue)}function O(f,l,u){k(f.value(l),u)}function R(f,l,u){u?f.classList.add(l):f.classList.remove(l)}function N(f,l){return u=>{R(f,l,u)}}function F(f,l){k(f,u=>{l.textContent=u??""})}const M=C("btn");class D{constructor(l,u){this.element=l.createElement("div"),this.element.classList.add(M()),u.viewProps.bindClassModifiers(this.element);const w=l.createElement("button");w.classList.add(M("b")),u.viewProps.bindDisabled(w),this.element.appendChild(w),this.buttonElement=w;const P=l.createElement("div");P.classList.add(M("t")),F(u.props.value("title"),P),this.buttonElement.appendChild(P)}}class U{constructor(l,u){this.emitter=new y,this.onClick_=this.onClick_.bind(this),this.props=u.props,this.viewProps=u.viewProps,this.view=new D(l,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class S{constructor(l,u){var w;this.constraint_=u==null?void 0:u.constraint,this.equals_=(w=u==null?void 0:u.equals)!==null&&w!==void 0?w:(P,V)=>P===V,this.emitter=new y,this.rawValue_=l}get constraint(){return this.constraint_}get rawValue(){return this.rawValue_}set rawValue(l){this.setRawValue(l,{forceEmit:!1,last:!0})}setRawValue(l,u){const w=u??{forceEmit:!1,last:!0},P=this.constraint_?this.constraint_.constrain(l):l,V=this.rawValue_;this.equals_(V,P)&&!w.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=P,this.emitter.emit("change",{options:w,previousRawValue:V,rawValue:P,sender:this}))}}class T{constructor(l){this.emitter=new y,this.value_=l}get rawValue(){return this.value_}set rawValue(l){this.setRawValue(l,{forceEmit:!1,last:!0})}setRawValue(l,u){const w=u??{forceEmit:!1,last:!0},P=this.value_;P===l&&!w.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.value_=l,this.emitter.emit("change",{options:w,previousRawValue:P,rawValue:this.value_,sender:this}))}}function j(f,l){const u=l==null?void 0:l.constraint,w=l==null?void 0:l.equals;return!u&&!w?new T(f):new S(f,l)}class X{constructor(l){this.emitter=new y,this.valMap_=l;for(const u in this.valMap_)this.valMap_[u].emitter.on("change",()=>{this.emitter.emit("change",{key:u,sender:this})})}static createCore(l){return Object.keys(l).reduce((w,P)=>Object.assign(w,{[P]:j(l[P])}),{})}static fromObject(l){const u=this.createCore(l);return new X(u)}get(l){return this.valMap_[l].rawValue}set(l,u){this.valMap_[l].rawValue=u}value(l){return this.valMap_[l]}}function Z(f,l){const w=Object.keys(l).reduce((P,V)=>{if(P===void 0)return;const G=l[V],Q=G(f[V]);return Q.succeeded?Object.assign(Object.assign({},P),{[V]:Q.value}):void 0},{});return w}function J(f,l){return f.reduce((u,w)=>{if(u===void 0)return;const P=l(w);if(!(!P.succeeded||P.value===void 0))return[...u,P.value]},[])}function le(f){return f===null?!1:typeof f=="object"}function he(f){return l=>u=>{if(!l&&u===void 0)return{succeeded:!1,value:void 0};if(l&&u===void 0)return{succeeded:!0,value:void 0};const w=f(u);return w!==void 0?{succeeded:!0,value:w}:{succeeded:!1,value:void 0}}}function oe(f){return{custom:l=>he(l)(f),boolean:he(l=>typeof l=="boolean"?l:void 0)(f),number:he(l=>typeof l=="number"?l:void 0)(f),string:he(l=>typeof l=="string"?l:void 0)(f),function:he(l=>typeof l=="function"?l:void 0)(f),constant:l=>he(u=>u===l?l:void 0)(f),raw:he(l=>l)(f),object:l=>he(u=>{if(le(u))return Z(u,l)})(f),array:l=>he(u=>{if(Array.isArray(u))return J(u,l)})(f)}}const re={optional:oe(!0),required:oe(!1)};function ne(f,l){const u=re.required.object(l)(f);return u.succeeded?u.value:void 0}function H(f){console.warn([`Missing '${f.key}' of ${f.target} in ${f.place}.`,"Please rebuild plugins with the latest core package."].join(" "))}function Ce(f){return f&&f.parentElement&&f.parentElement.removeChild(f),null}class ge{constructor(l){this.value_=l}static create(l){return[new ge(l),(u,w)=>{l.setRawValue(u,w)}]}get emitter(){return this.value_.emitter}get rawValue(){return this.value_.rawValue}}const de=C("");function me(f,l){return N(f,de(void 0,l))}class ke extends X{constructor(l){var u;super(l),this.onDisabledChange_=this.onDisabledChange_.bind(this),this.onParentChange_=this.onParentChange_.bind(this),this.onParentGlobalDisabledChange_=this.onParentGlobalDisabledChange_.bind(this),[this.globalDisabled_,this.setGlobalDisabled_]=ge.create(j(this.getGlobalDisabled_())),this.value("disabled").emitter.on("change",this.onDisabledChange_),this.value("parent").emitter.on("change",this.onParentChange_),(u=this.get("parent"))===null||u===void 0||u.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_)}static create(l){var u,w,P;const V=l??{};return new ke(X.createCore({disabled:(u=V.disabled)!==null&&u!==void 0?u:!1,disposed:!1,hidden:(w=V.hidden)!==null&&w!==void 0?w:!1,parent:(P=V.parent)!==null&&P!==void 0?P:null}))}get globalDisabled(){return this.globalDisabled_}bindClassModifiers(l){k(this.globalDisabled_,me(l,"disabled")),O(this,"hidden",me(l,"hidden"))}bindDisabled(l){k(this.globalDisabled_,u=>{l.disabled=u})}bindTabIndex(l){k(this.globalDisabled_,u=>{l.tabIndex=u?-1:0})}handleDispose(l){this.value("disposed").emitter.on("change",u=>{u&&l()})}getGlobalDisabled_(){const l=this.get("parent");return(l?l.globalDisabled.rawValue:!1)||this.get("disabled")}updateGlobalDisabled_(){this.setGlobalDisabled_(this.getGlobalDisabled_())}onDisabledChange_(){this.updateGlobalDisabled_()}onParentGlobalDisabledChange_(){this.updateGlobalDisabled_()}onParentChange_(l){var u;const w=l.previousRawValue;w==null||w.globalDisabled.emitter.off("change",this.onParentGlobalDisabledChange_),(u=this.get("parent"))===null||u===void 0||u.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_),this.updateGlobalDisabled_()}}function B(){return["veryfirst","first","last","verylast"]}const we=C(""),ze={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class Ge{constructor(l){this.parent_=null,this.blade=l.blade,this.view=l.view,this.viewProps=l.viewProps;const u=this.view.element;this.blade.value("positions").emitter.on("change",()=>{B().forEach(w=>{u.classList.remove(we(void 0,ze[w]))}),this.blade.get("positions").forEach(w=>{u.classList.add(we(void 0,ze[w]))})}),this.viewProps.handleDispose(()=>{Ce(u)})}get parent(){return this.parent_}set parent(l){if(this.parent_=l,!("parent"in this.viewProps.valMap_)){H({key:"parent",target:ke.name,place:"BladeController.parent"});return}this.viewProps.set("parent",this.parent_?this.parent_.viewProps:null)}}const Te="http://www.w3.org/2000/svg";function lt(f){f.offsetHeight}function Gn(f,l){const u=f.style.transition;f.style.transition="none",l(),f.style.transition=u}function He(f){return f.ontouchstart!==void 0}function Kn(f){for(;f.childNodes.length>0;)f.removeChild(f.childNodes[0])}function un(f){return f.relatedTarget?f.relatedTarget:"explicitOriginalTarget"in f?f.explicitOriginalTarget:null}const gt=C("lbl");function Et(f,l){const u=f.createDocumentFragment();return l.split(`
98
+ `).map(P=>f.createTextNode(P)).forEach((P,V)=>{V>0&&u.appendChild(f.createElement("br")),u.appendChild(P)}),u}class Ye{constructor(l,u){this.element=l.createElement("div"),this.element.classList.add(gt()),u.viewProps.bindClassModifiers(this.element);const w=l.createElement("div");w.classList.add(gt("l")),O(u.props,"label",V=>{p(V)?this.element.classList.add(gt(void 0,"nol")):(this.element.classList.remove(gt(void 0,"nol")),Kn(w),w.appendChild(Et(l,V)))}),this.element.appendChild(w),this.labelElement=w;const P=l.createElement("div");P.classList.add(gt("v")),this.element.appendChild(P),this.valueElement=P}}class ct extends Ge{constructor(l,u){const w=u.valueController.viewProps;super(Object.assign(Object.assign({},u),{view:new Ye(l,{props:u.props,viewProps:w}),viewProps:w})),this.props=u.props,this.valueController=u.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class dn extends Ge{constructor(l){super(l),this.value=l.value}}class bt extends X{constructor(l){super(l)}static create(l){const u={completed:!0,expanded:l,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null},w=X.createCore(u);return new bt(w)}get styleExpanded(){var l;return(l=this.get("temporaryExpanded"))!==null&&l!==void 0?l:this.get("expanded")}get styleHeight(){if(!this.styleExpanded)return"0";const l=this.get("expandedHeight");return this.get("shouldFixHeight")&&!p(l)?`${l}px`:"auto"}bindExpandedClass(l,u){const w=()=>{this.styleExpanded?l.classList.add(u):l.classList.remove(u)};O(this,"expanded",w),O(this,"temporaryExpanded",w)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function Yn(f){return bt.create(f)}function ws(f,l){let u=0;return Gn(l,()=>{f.set("expandedHeight",null),f.set("temporaryExpanded",!0),lt(l),u=l.clientHeight,f.set("temporaryExpanded",null),lt(l)}),u}function Xn(f,l){l.style.height=f.styleHeight}function Zn(f,l){f.value("expanded").emitter.on("beforechange",()=>{f.set("completed",!1),p(f.get("expandedHeight"))&&f.set("expandedHeight",ws(f,l)),f.set("shouldFixHeight",!0),lt(l)}),f.emitter.on("change",()=>{Xn(f,l)}),Xn(f,l),l.addEventListener("transitionend",u=>{u.propertyName==="height"&&f.cleanUpTransition()})}class Mt{constructor(l,u){const w=C(u.viewName);this.element=l.createElement("div"),this.element.classList.add(w()),u.viewProps.bindClassModifiers(this.element)}}class Ot extends dn{constructor(l,u){const w=u.valueController.viewProps;super(Object.assign(Object.assign({},u),{value:u.valueController.value,view:new Ye(l,{props:u.props,viewProps:w}),viewProps:w})),this.props=u.props,this.valueController=u.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class qn{constructor(){this.disabled=!1,this.emitter=new y}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class mn{constructor(l,u){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=l,this.emitter=new y,this.interval_=u,this.setTimer_()}get disabled(){return this.disabled_}set disabled(l){this.disabled_=l,this.disabled_?this.clearTimer_():this.setTimer_()}dispose(){this.clearTimer_()}clearTimer_(){if(this.timerId_===null)return;const l=this.doc_.defaultView;l&&l.clearInterval(this.timerId_),this.timerId_=null}setTimer_(){if(this.clearTimer_(),this.interval_<=0)return;const l=this.doc_.defaultView;l&&(this.timerId_=l.setInterval(this.onTick_,this.interval_))}onTick_(){this.disabled_||this.emitter.emit("tick",{sender:this})}}class Qn{constructor(l){this.constraints=l}constrain(l){return this.constraints.reduce((u,w)=>w.constrain(u),l)}}function kt(f,l){if(f instanceof l)return f;if(f instanceof Qn){const u=f.constraints.reduce((w,P)=>w||(P instanceof l?P:null),null);if(u)return u}return null}class wt{constructor(l){this.values=X.fromObject({max:l.max,min:l.min})}constrain(l){const u=this.values.get("max"),w=this.values.get("min");return Math.min(Math.max(l,w),u)}}class Dt{constructor(l){this.values=X.fromObject({max:l.max,min:l.min})}get maxValue(){return this.values.get("max")}get minValue(){return this.values.get("min")}constrain(l){const u=this.values.get("max"),w=this.values.get("min");let P=l;return p(w)||(P=Math.max(P,w)),p(u)||(P=Math.min(P,u)),P}}class z{constructor(l,u=0){this.step=l,this.origin=u}constrain(l){const u=this.origin%this.step,w=Math.round((l-u)/this.step);return u+w*this.step}}const W=C("pop");class ae{constructor(l,u){this.element=l.createElement("div"),this.element.classList.add(W()),u.viewProps.bindClassModifiers(this.element),k(u.shows,N(this.element,W(void 0,"v")))}}class fe{constructor(l,u){this.shows=j(!1),this.viewProps=u.viewProps,this.view=new ae(l,{shows:this.shows,viewProps:this.viewProps})}}const Oe=C("txt");class je{constructor(l,u){this.onChange_=this.onChange_.bind(this),this.element=l.createElement("div"),this.element.classList.add(Oe()),u.viewProps.bindClassModifiers(this.element),this.props_=u.props,this.props_.emitter.on("change",this.onChange_);const w=l.createElement("input");w.classList.add(Oe("i")),w.type="text",u.viewProps.bindDisabled(w),this.element.appendChild(w),this.inputElement=w,u.value.emitter.on("change",this.onChange_),this.value_=u.value,this.refresh()}refresh(){const l=this.props_.get("formatter");this.inputElement.value=l(this.value_.rawValue)}onChange_(){this.refresh()}}class qt{constructor(l,u){this.onInputChange_=this.onInputChange_.bind(this),this.parser_=u.parser,this.props=u.props,this.value=u.value,this.viewProps=u.viewProps,this.view=new je(l,{props:u.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(l){const w=l.currentTarget.value,P=this.parser_(w);p(P)||(this.value.rawValue=P),this.view.refresh()}}function fn(f){return f==="false"?!1:!!f}class Xe{constructor(l){this.text=l}evaluate(){return Number(this.text)}toString(){return this.text}}const Ze={"**":(f,l)=>Math.pow(f,l),"*":(f,l)=>f*l,"/":(f,l)=>f/l,"%":(f,l)=>f%l,"+":(f,l)=>f+l,"-":(f,l)=>f-l,"<<":(f,l)=>f<<l,">>":(f,l)=>f>>l,">>>":(f,l)=>f>>>l,"&":(f,l)=>f&l,"^":(f,l)=>f^l,"|":(f,l)=>f|l};class rr{constructor(l,u,w){this.left=u,this.operator=l,this.right=w}evaluate(){const l=Ze[this.operator];if(!l)throw new Error(`unexpected binary operator: '${this.operator}`);return l(this.left.evaluate(),this.right.evaluate())}toString(){return["b(",this.left.toString(),this.operator,this.right.toString(),")"].join(" ")}}const or={"+":f=>f,"-":f=>-f,"~":f=>~f};class ar{constructor(l,u){this.operator=l,this.expression=u}evaluate(){const l=or[this.operator];if(!l)throw new Error(`unexpected unary operator: '${this.operator}`);return l(this.expression.evaluate())}toString(){return["u(",this.operator,this.expression.toString(),")"].join(" ")}}function ys(f){return(l,u)=>{for(let w=0;w<f.length;w++){const P=f[w](l,u);if(P!=="")return P}return""}}function Vt(f,l){var u;const w=f.substr(l).match(/^\s+/);return(u=w&&w[0])!==null&&u!==void 0?u:""}function xs(f,l){const u=f.substr(l,1);return u.match(/^[1-9]$/)?u:""}function Ke(f,l){var u;const w=f.substr(l).match(/^[0-9]+/);return(u=w&&w[0])!==null&&u!==void 0?u:""}function Cs(f,l){const u=Ke(f,l);if(u!=="")return u;const w=f.substr(l,1);if(l+=1,w!=="-"&&w!=="+")return"";const P=Ke(f,l);return P===""?"":w+P}function ht(f,l){const u=f.substr(l,1);if(l+=1,u.toLowerCase()!=="e")return"";const w=Cs(f,l);return w===""?"":u+w}function ii(f,l){const u=f.substr(l,1);if(u==="0")return u;const w=xs(f,l);return l+=w.length,w===""?"":w+Ke(f,l)}function vn(f,l){const u=ii(f,l);if(l+=u.length,u==="")return"";const w=f.substr(l,1);if(l+=w.length,w!==".")return"";const P=Ke(f,l);return l+=P.length,u+w+P+ht(f,l)}function ri(f,l){const u=f.substr(l,1);if(l+=u.length,u!==".")return"";const w=Ke(f,l);return l+=w.length,w===""?"":u+w+ht(f,l)}function Wn(f,l){const u=ii(f,l);return l+=u.length,u===""?"":u+ht(f,l)}const Ps=ys([vn,ri,Wn]);function As(f,l){var u;const w=f.substr(l).match(/^[01]+/);return(u=w&&w[0])!==null&&u!==void 0?u:""}function lr(f,l){const u=f.substr(l,2);if(l+=u.length,u.toLowerCase()!=="0b")return"";const w=As(f,l);return w===""?"":u+w}function cr(f,l){var u;const w=f.substr(l).match(/^[0-7]+/);return(u=w&&w[0])!==null&&u!==void 0?u:""}function hr(f,l){const u=f.substr(l,2);if(l+=u.length,u.toLowerCase()!=="0o")return"";const w=cr(f,l);return w===""?"":u+w}function pr(f,l){var u;const w=f.substr(l).match(/^[0-9a-f]+/i);return(u=w&&w[0])!==null&&u!==void 0?u:""}function Ms(f,l){const u=f.substr(l,2);if(l+=u.length,u.toLowerCase()!=="0x")return"";const w=pr(f,l);return w===""?"":u+w}const ur=ys([lr,hr,Ms]),dr=ys([ur,Ps]);function _n(f,l){const u=dr(f,l);return l+=u.length,u===""?null:{evaluable:new Xe(u),cursor:l}}function oi(f,l){const u=f.substr(l,1);if(l+=u.length,u!=="(")return null;const w=ks(f,l);if(!w)return null;l=w.cursor,l+=Vt(f,l).length;const P=f.substr(l,1);return l+=P.length,P!==")"?null:{evaluable:w.evaluable,cursor:l}}function mr(f,l){var u;return(u=_n(f,l))!==null&&u!==void 0?u:oi(f,l)}function Jn(f,l){const u=mr(f,l);if(u)return u;const w=f.substr(l,1);if(l+=w.length,w!=="+"&&w!=="-"&&w!=="~")return null;const P=Jn(f,l);return P?(l=P.cursor,{cursor:l,evaluable:new ar(w,P.evaluable)}):null}function fr(f,l,u){u+=Vt(l,u).length;const w=f.filter(P=>l.startsWith(P,u))[0];return w?(u+=w.length,u+=Vt(l,u).length,{cursor:u,operator:w}):null}function Qt(f,l){return(u,w)=>{const P=f(u,w);if(!P)return null;w=P.cursor;let V=P.evaluable;for(;;){const G=fr(l,u,w);if(!G)break;w=G.cursor;const Q=f(u,w);if(!Q)return null;w=Q.cursor,V=new rr(G.operator,V,Q.evaluable)}return V?{cursor:w,evaluable:V}:null}}const ai=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((f,l)=>Qt(f,l),Jn);function ks(f,l){return l+=Vt(f,l).length,ai(f,l)}function vr(f){const l=ks(f,0);return!l||l.cursor+Vt(f,l.cursor).length!==f.length?null:l.evaluable}function gn(f){var l;const u=vr(f);return(l=u==null?void 0:u.evaluate())!==null&&l!==void 0?l:null}function _r(f){if(typeof f=="number")return f;if(typeof f=="string"){const l=gn(f);if(!p(l))return l}return 0}function Fe(f){return l=>l.toFixed(Math.max(Math.min(f,20),0))}const gr=Fe(0);function Hn(f){return gr(f)+"%"}function li(f){return String(f)}function Ls(f,l){for(;f.length<l;)f.push(void 0)}function ci(f){const l=[];return Ls(l,f),j(l)}function hi(f){const l=f.indexOf(void 0);return l<0?f:f.slice(0,l)}function br(f,l){const u=[...hi(f),l];return u.length>f.length?u.splice(0,u.length-f.length):Ls(u,f.length),u}function Wt({primary:f,secondary:l,forward:u,backward:w}){let P=!1;function V(G){P||(P=!0,G(),P=!1)}f.emitter.on("change",G=>{V(()=>{l.setRawValue(u(f,l),G.options)})}),l.emitter.on("change",G=>{V(()=>{f.setRawValue(w(f,l),G.options)}),V(()=>{l.setRawValue(u(f,l),G.options)})}),V(()=>{l.setRawValue(u(f,l),{forceEmit:!1,last:!0})})}function Jt(f,l){const u=f*(l.altKey?.1:1)*(l.shiftKey?10:1);return l.upKey?+u:l.downKey?-u:0}function bn(f){return{altKey:f.altKey,downKey:f.key==="ArrowDown",shiftKey:f.shiftKey,upKey:f.key==="ArrowUp"}}function Ss(f){return{altKey:f.altKey,downKey:f.key==="ArrowLeft",shiftKey:f.shiftKey,upKey:f.key==="ArrowRight"}}function wr(f){return f==="ArrowUp"||f==="ArrowDown"}function pi(f){return wr(f)||f==="ArrowLeft"||f==="ArrowRight"}function Ts(f,l){var u,w;const P=l.ownerDocument.defaultView,V=l.getBoundingClientRect();return{x:f.pageX-(((u=P&&P.scrollX)!==null&&u!==void 0?u:0)+V.left),y:f.pageY-(((w=P&&P.scrollY)!==null&&w!==void 0?w:0)+V.top)}}class $n{constructor(l){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_=l,this.emitter=new y,l.addEventListener("touchstart",this.onTouchStart_,{passive:!1}),l.addEventListener("touchmove",this.onTouchMove_,{passive:!0}),l.addEventListener("touchend",this.onTouchEnd_),l.addEventListener("mousedown",this.onMouseDown_)}computePosition_(l){const u=this.elem_.getBoundingClientRect();return{bounds:{width:u.width,height:u.height},point:l?{x:l.x,y:l.y}:null}}onMouseDown_(l){var u;l.preventDefault(),(u=l.currentTarget)===null||u===void 0||u.focus();const w=this.elem_.ownerDocument;w.addEventListener("mousemove",this.onDocumentMouseMove_),w.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:l.altKey,data:this.computePosition_(Ts(l,this.elem_)),sender:this,shiftKey:l.shiftKey})}onDocumentMouseMove_(l){this.emitter.emit("move",{altKey:l.altKey,data:this.computePosition_(Ts(l,this.elem_)),sender:this,shiftKey:l.shiftKey})}onDocumentMouseUp_(l){const u=this.elem_.ownerDocument;u.removeEventListener("mousemove",this.onDocumentMouseMove_),u.removeEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("up",{altKey:l.altKey,data:this.computePosition_(Ts(l,this.elem_)),sender:this,shiftKey:l.shiftKey})}onTouchStart_(l){l.preventDefault();const u=l.targetTouches.item(0),w=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:l.altKey,data:this.computePosition_(u?{x:u.clientX-w.left,y:u.clientY-w.top}:void 0),sender:this,shiftKey:l.shiftKey}),this.lastTouch_=u}onTouchMove_(l){const u=l.targetTouches.item(0),w=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:l.altKey,data:this.computePosition_(u?{x:u.clientX-w.left,y:u.clientY-w.top}:void 0),sender:this,shiftKey:l.shiftKey}),this.lastTouch_=u}onTouchEnd_(l){var u;const w=(u=l.targetTouches.item(0))!==null&&u!==void 0?u:this.lastTouch_,P=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:l.altKey,data:this.computePosition_(w?{x:w.clientX-P.left,y:w.clientY-P.top}:void 0),sender:this,shiftKey:l.shiftKey})}}function Ve(f,l,u,w,P){const V=(f-l)/(u-l);return w+V*(P-w)}function ui(f){return String(f.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function Ht(f,l,u){return Math.min(Math.max(f,l),u)}const $e=C("txt");class yr{constructor(l,u){this.onChange_=this.onChange_.bind(this),this.props_=u.props,this.props_.emitter.on("change",this.onChange_),this.element=l.createElement("div"),this.element.classList.add($e(),$e(void 0,"num")),u.arrayPosition&&this.element.classList.add($e(void 0,u.arrayPosition)),u.viewProps.bindClassModifiers(this.element);const w=l.createElement("input");w.classList.add($e("i")),w.type="text",u.viewProps.bindDisabled(w),this.element.appendChild(w),this.inputElement=w,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=u.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add($e()),this.inputElement.classList.add($e("i"));const P=l.createElement("div");P.classList.add($e("k")),this.element.appendChild(P),this.knobElement=P;const V=l.createElementNS(Te,"svg");V.classList.add($e("g")),this.knobElement.appendChild(V);const G=l.createElementNS(Te,"path");G.classList.add($e("gb")),V.appendChild(G),this.guideBodyElem_=G;const Q=l.createElementNS(Te,"path");Q.classList.add($e("gh")),V.appendChild(Q),this.guideHeadElem_=Q;const be=l.createElement("div");be.classList.add(C("tt")()),this.knobElement.appendChild(be),this.tooltipElem_=be,u.value.emitter.on("change",this.onChange_),this.value=u.value,this.refresh()}onDraggingChange_(l){if(l.rawValue===null){this.element.classList.remove($e(void 0,"drg"));return}this.element.classList.add($e(void 0,"drg"));const u=l.rawValue/this.props_.get("draggingScale"),w=u+(u>0?-1:u<0?1:0),P=Ht(-w,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${w+P},0 L${w},4 L${w+P},8`,`M ${u},-1 L${u},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${u},4`);const V=this.props_.get("formatter");this.tooltipElem_.textContent=V(this.value.rawValue),this.tooltipElem_.style.left=`${u}px`}refresh(){const l=this.props_.get("formatter");this.inputElement.value=l(this.value.rawValue)}onChange_(){this.refresh()}}class wn{constructor(l,u){var w;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_=u.baseStep,this.parser_=u.parser,this.props=u.props,this.sliderProps_=(w=u.sliderProps)!==null&&w!==void 0?w:null,this.value=u.value,this.viewProps=u.viewProps,this.dragging_=j(null),this.view=new yr(l,{arrayPosition:u.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 $n(this.view.knobElement);P.emitter.on("down",this.onPointerDown_),P.emitter.on("move",this.onPointerMove_),P.emitter.on("up",this.onPointerUp_)}constrainValue_(l){var u,w;const P=(u=this.sliderProps_)===null||u===void 0?void 0:u.get("minValue"),V=(w=this.sliderProps_)===null||w===void 0?void 0:w.get("maxValue");let G=l;return P!==void 0&&(G=Math.max(G,P)),V!==void 0&&(G=Math.min(G,V)),G}onInputChange_(l){const w=l.currentTarget.value,P=this.parser_(w);p(P)||(this.value.rawValue=this.constrainValue_(P)),this.view.refresh()}onInputKeyDown_(l){const u=Jt(this.baseStep_,bn(l));u!==0&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+u),{forceEmit:!1,last:!1})}onInputKeyUp_(l){Jt(this.baseStep_,bn(l))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}onPointerDown_(){this.originRawValue_=this.value.rawValue,this.dragging_.rawValue=0}computeDraggingValue_(l){if(!l.point)return null;const u=l.point.x-l.bounds.width/2;return this.constrainValue_(this.originRawValue_+u*this.props.get("draggingScale"))}onPointerMove_(l){const u=this.computeDraggingValue_(l.data);u!==null&&(this.value.setRawValue(u,{forceEmit:!1,last:!1}),this.dragging_.rawValue=this.value.rawValue-this.originRawValue_)}onPointerUp_(l){const u=this.computeDraggingValue_(l.data);u!==null&&(this.value.setRawValue(u,{forceEmit:!0,last:!0}),this.dragging_.rawValue=null)}}function st(f,l){f.write(l)}function $t(f){const l=f?kt(f,z):null;return l?l.step:null}function yn(f,l){const u=f&&kt(f,z);return u?ui(u.step):Math.max(ui(l),2)}function Es(f){const l=$t(f);return l??1}function es(f,l){var u;const w=f&&kt(f,z),P=Math.abs((u=w==null?void 0:w.step)!==null&&u!==void 0?u:l);return P===0?.1:Math.pow(10,Math.floor(Math.log10(P))-1)}function en(f){return[f[0],f[1],f[2]]}function di(f){const l=Ht(Math.floor(f),0,255).toString(16);return l.length===1?`0${l}`:l}function xn(f,l="#"){const u=en(f.getComponents("rgb")).map(di).join("");return`${l}${u}`}function mi(f,l="#"){const u=f.getComponents("rgb"),w=[u[0],u[1],u[2],u[3]*255].map(di).join("");return`${l}${w}`}function xr(f,l){const u=Fe(l==="float"?2:0);return`rgb(${en(f.getComponents("rgb",l)).map(P=>u(P)).join(", ")})`}function fi(f){return l=>xr(l,f)}function vi(f,l){const u=Fe(2),w=Fe(l==="float"?2:0);return`rgba(${f.getComponents("rgb",l).map((V,G)=>(G===3?u:w)(V)).join(", ")})`}function Cr(f){return l=>vi(l,f)}function ts(f){const l=[Fe(0),Hn,Hn];return`hsl(${en(f.getComponents("hsl")).map((w,P)=>l[P](w)).join(", ")})`}function Pr(f){const l=[Fe(0),Hn,Hn,Fe(2)];return`hsla(${f.getComponents("hsl").map((w,P)=>l[P](w)).join(", ")})`}function _i(f,l){const u=Fe(l==="float"?2:0),w=["r","g","b"];return`{${en(f.getComponents("rgb",l)).map((V,G)=>`${w[G]}: ${u(V)}`).join(", ")}}`}function gi(f){return l=>_i(l,f)}function Ar(f,l){const u=Fe(2),w=Fe(l==="float"?2:0),P=["r","g","b","a"];return`{${f.getComponents("rgb",l).map((G,Q)=>{const be=Q===3?u:w;return`${P[Q]}: ${be(G)}`}).join(", ")}}`}function Mr(f){return l=>Ar(l,f)}[...["int","float"].reduce((f,l)=>[...f,{format:{alpha:!1,mode:"rgb",notation:"func",type:l},stringifier:fi(l)},{format:{alpha:!0,mode:"rgb",notation:"func",type:l},stringifier:Cr(l)},{format:{alpha:!1,mode:"rgb",notation:"object",type:l},stringifier:gi(l)},{format:{alpha:!0,mode:"rgb",notation:"object",type:l},stringifier:Mr(l)}],[])];class kr{constructor(l){this.components=l.components,this.asm_=l.assembly}constrain(l){const u=this.asm_.toComponents(l).map((w,P)=>{var V,G;return(G=(V=this.components[P])===null||V===void 0?void 0:V.constrain(w))!==null&&G!==void 0?G:w});return this.asm_.fromComponents(u)}}const bi=C("pndtxt");class Lr{constructor(l,u){this.textViews=u.textViews,this.element=l.createElement("div"),this.element.classList.add(bi()),this.textViews.forEach(w=>{const P=l.createElement("div");P.classList.add(bi("a")),P.appendChild(w.element),this.element.appendChild(P)})}}function Os(f,l,u){return new wn(f,{arrayPosition:u===0?"fst":u===l.axes.length-1?"lst":"mid",baseStep:l.axes[u].baseStep,parser:l.parser,props:l.axes[u].textProps,value:j(0,{constraint:l.axes[u].constraint}),viewProps:l.viewProps})}class It{constructor(l,u){this.value=u.value,this.viewProps=u.viewProps,this.acs_=u.axes.map((w,P)=>Os(l,u,P)),this.acs_.forEach((w,P)=>{Wt({primary:this.value,secondary:w.value,forward:V=>u.assembly.toComponents(V.rawValue)[P],backward:(V,G)=>{const Q=u.assembly.toComponents(V.rawValue);return Q[P]=G.rawValue,u.assembly.fromComponents(Q)}})}),this.view=new Lr(l,{textViews:this.acs_.map(w=>w.view)})}}function Sr(f,l){return"step"in f&&!p(f.step)?new z(f.step,l):null}function Cn(f){return!p(f.max)&&!p(f.min)?new wt({max:f.max,min:f.min}):!p(f.max)||!p(f.min)?new Dt({max:f.max,min:f.min}):null}const Tr={monitor:{defaultInterval:200,defaultLineCount:3}},pt=C("grl");class wi{constructor(l,u){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=l.createElement("div"),this.element.classList.add(pt()),u.viewProps.bindClassModifiers(this.element),this.formatter_=u.formatter,this.props_=u.props,this.cursor_=u.cursor,this.cursor_.emitter.on("change",this.onCursorChange_);const w=l.createElementNS(Te,"svg");w.classList.add(pt("g")),w.style.height=`calc(var(--bld-us) * ${u.lineCount})`,this.element.appendChild(w),this.svgElem_=w;const P=l.createElementNS(Te,"polyline");this.svgElem_.appendChild(P),this.lineElem_=P;const V=l.createElement("div");V.classList.add(pt("t"),C("tt")()),this.element.appendChild(V),this.tooltipElem_=V,u.value.emitter.on("change",this.onValueUpdate_),this.value=u.value,this.update_()}get graphElement(){return this.svgElem_}update_(){const l=this.svgElem_.getBoundingClientRect(),u=this.value.rawValue.length-1,w=this.props_.get("minValue"),P=this.props_.get("maxValue"),V=[];this.value.rawValue.forEach((nt,ue)=>{if(nt===void 0)return;const Tt=Ve(ue,0,u,0,l.width),Kr=Ve(nt,w,P,l.height,0);V.push([Tt,Kr].join(","))}),this.lineElem_.setAttributeNS(null,"points",V.join(" "));const G=this.tooltipElem_,Q=this.value.rawValue[this.cursor_.rawValue];if(Q===void 0){G.classList.remove(pt("t","a"));return}const be=Ve(this.cursor_.rawValue,0,u,0,l.width),tt=Ve(Q,w,P,l.height,0);G.style.left=`${be}px`,G.style.top=`${tt}px`,G.textContent=`${this.formatter_(Q)}`,G.classList.contains(pt("t","a"))||(G.classList.add(pt("t","a"),pt("t","in")),lt(G),G.classList.remove(pt("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class Er{constructor(l,u){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_=u.props,this.value=u.value,this.viewProps=u.viewProps,this.cursor_=j(-1),this.view=new wi(l,{cursor:this.cursor_,formatter:u.formatter,lineCount:u.lineCount,props:this.props_,value:this.value,viewProps:this.viewProps}),!He(l))this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_);else{const w=new $n(this.view.element);w.emitter.on("down",this.onGraphPointerDown_),w.emitter.on("move",this.onGraphPointerMove_),w.emitter.on("up",this.onGraphPointerUp_)}}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(l){const u=this.view.element.getBoundingClientRect();this.cursor_.rawValue=Math.floor(Ve(l.offsetX,0,u.width,0,this.value.rawValue.length))}onGraphPointerDown_(l){this.onGraphPointerMove_(l)}onGraphPointerMove_(l){if(!l.data.point){this.cursor_.rawValue=-1;return}this.cursor_.rawValue=Math.floor(Ve(l.data.point.x,0,l.data.bounds.width,0,this.value.rawValue.length))}onGraphPointerUp_(){this.cursor_.rawValue=-1}}class yi{constructor(l){this.controller_=l}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(l){this.controller_.viewProps.set("disabled",l)}get title(){var l;return(l=this.controller_.props.get("title"))!==null&&l!==void 0?l:""}set title(l){this.controller_.props.set("title",l)}on(l,u){const w=u.bind(this);return this.controller_.emitter.on(l,()=>{w(new o(this))}),this}}class Or extends o{constructor(l,u,w){super(l),this.cell=u,this.index=w}}class xi extends i{constructor(l){super(l),this.cellToApiMap_=new Map,this.emitter_=new y;const u=this.controller_.valueController;u.cellControllers.forEach((w,P)=>{const V=new yi(w);this.cellToApiMap_.set(w,V),w.emitter.on("click",()=>{const G=P%u.size[0],Q=Math.floor(P/u.size[0]);this.emitter_.emit("click",{event:new Or(this,V,[G,Q])})})})}cell(l,u){const w=this.controller_.valueController,P=w.cellControllers[u*w.size[0]+l];return this.cellToApiMap_.get(P)}on(l,u){const w=u.bind(this);return this.emitter_.on(l,P=>{w(P.event)}),this}}class Ds{constructor(l,u){this.size=u.size;const[w,P]=this.size,V=[];for(let G=0;G<P;G++)for(let Q=0;Q<w;Q++){const be=new U(l,{props:X.fromObject(Object.assign({},u.cellConfig(Q,G))),viewProps:ke.create()});V.push(be)}this.cellCs_=V,this.viewProps=ke.create(),this.viewProps.handleDispose(()=>{this.cellCs_.forEach(G=>{G.viewProps.set("disposed",!0)})}),this.view=new Mt(l,{viewProps:this.viewProps,viewName:"btngrid"}),this.view.element.style.gridTemplateColumns=`repeat(${w}, 1fr)`,this.cellCs_.forEach(G=>{this.view.element.appendChild(G.view.element)})}get cellControllers(){return this.cellCs_}}const Dr={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(f){const l=re,u=ne(f,{cells:l.required.function,size:l.required.array(l.required.number),view:l.required.constant("buttongrid"),label:l.optional.string});return u?{params:u}:null},controller(f){return new ct(f.document,{blade:f.blade,props:X.fromObject({label:f.params.label}),valueController:new Ds(f.document,{cellConfig:f.params.cells,size:f.params.size})})},api(f){return!(f.controller instanceof ct)||!(f.controller.valueController instanceof Ds)?null:new xi(f.controller)}};class Ci extends i{get label(){return this.controller_.props.get("label")}set label(l){this.controller_.props.set("label",l)}get value(){return this.controller_.valueController.value.rawValue}set value(l){this.controller_.valueController.value.rawValue=l}on(l,u){const w=u.bind(this);return this.controller_.valueController.value.emitter.on(l,P=>{w(new a(this,P.rawValue,void 0,P.options.last))}),this}}function et(f,l,u){return f*(1-u)+l*u}const Vr=20,Ir=.001,Vs=100;function Br(f,l){let u=.25,w=.5,P=-1;for(let V=0;V<Vr;V++){const[G,Q]=f.curve(w);if(w+=u*(G<l?1:-1),P=Q,u*=.5,Math.abs(l-G)<Ir)break}return P}class Lt{constructor(l=0,u=0,w=1,P=1){this.cache_=[],this.comps_=[l,u,w,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(l){return p(l)||!Array.isArray(l)?!1:typeof l[0]=="number"&&typeof l[1]=="number"&&typeof l[2]=="number"&&typeof l[3]=="number"}static equals(l,u){return l.x1===u.x1&&l.y1===u.y1&&l.x2===u.x2&&l.y2===u.y2}curve(l){const u=et(0,this.x1,l),w=et(0,this.y1,l),P=et(this.x1,this.x2,l),V=et(this.y1,this.y2,l),G=et(this.x2,1,l),Q=et(this.y2,1,l),be=et(u,P,l),tt=et(w,V,l),nt=et(P,G,l),ue=et(V,Q,l);return[et(be,nt,l),et(tt,ue,l)]}y(l){if(this.cache_.length===0){const u=[];for(let w=0;w<Vs;w++)u.push(Br(this,Ve(w,0,Vs-1,0,1)));this.cache_=u}return this.cache_[Math.round(Ve(Ht(l,0,1),0,1,0,Vs-1))]}toObject(){return[this.comps_[0],this.comps_[1],this.comps_[2],this.comps_[3]]}}const Is={toComponents:f=>f.toObject(),fromComponents:f=>new Lt(...f)};function Fr(f){const l=Fe(2);return`cubic-bezier(${f.toObject().map(w=>l(w)).join(", ")})`}const Bs=[0,.5,.5,1];function Nr(f){const l=f.match(/^cubic-bezier\s*\(\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)\s*\)$/);if(!l)return new Lt(...Bs);const u=[l[1],l[2],l[3],l[4]].reduce((w,P)=>{if(!w)return null;const V=Number(P);return isNaN(V)?null:[...w,V]},[]);return new Lt(...u??Bs)}const Bt=C("cbz");class Pi{constructor(l,u){this.element=l.createElement("div"),this.element.classList.add(Bt()),u.viewProps.bindClassModifiers(this.element),u.foldable.bindExpandedClass(this.element,Bt(void 0,"expanded")),O(u.foldable,"completed",N(this.element,Bt(void 0,"cpl")));const w=l.createElement("div");w.classList.add(Bt("h")),this.element.appendChild(w);const P=l.createElement("button");P.classList.add(Bt("b")),u.viewProps.bindDisabled(P);const V=l.createElementNS(Te,"svg");V.innerHTML='<path d="M2 13C8 13 8 3 14 3"/>',P.appendChild(V),w.appendChild(P),this.buttonElement=P;const G=l.createElement("div");if(G.classList.add(Bt("t")),w.appendChild(G),this.textElement=G,u.pickerLayout==="inline"){const Q=l.createElement("div");Q.classList.add(Bt("p")),this.element.appendChild(Q),this.pickerElement=Q}else this.pickerElement=null}}const ns=C("cbzp");class Ai{constructor(l,u){this.element=l.createElement("div"),this.element.classList.add(ns()),u.viewProps.bindClassModifiers(this.element);const w=l.createElement("div");w.classList.add(ns("g")),this.element.appendChild(w),this.graphElement=w;const P=l.createElement("div");P.classList.add(ns("t")),this.element.appendChild(P),this.textElement=P}}function ut(f,l){const u=new MutationObserver(P=>{for(const V of P)V.type==="childList"&&V.addedNodes.forEach(G=>{G.contains(G)&&(l(),u.disconnect())})}),w=f.ownerDocument;u.observe(w.body,{attributes:!0,childList:!0,subtree:!0})}const yt=C("cbzg");function Ur(f,l){return u=>l(f(u))}class Ne{constructor(l,u){this.element=l.createElement("div"),this.element.classList.add(yt()),u.viewProps.bindClassModifiers(this.element),u.viewProps.bindTabIndex(this.element);const w=l.createElement("div");w.classList.add(yt("p")),this.element.appendChild(w),this.previewElement=w;const P=l.createElementNS(Te,"svg");P.classList.add(yt("g")),this.element.appendChild(P),this.svgElem_=P;const V=l.createElementNS(Te,"path");V.classList.add(yt("u")),this.svgElem_.appendChild(V),this.guideElem_=V;const G=l.createElementNS(Te,"polyline");G.classList.add(yt("l")),this.svgElem_.appendChild(G),this.lineElem_=G,this.handleElems_=[l.createElement("div"),l.createElement("div")],this.handleElems_.forEach(Q=>{Q.classList.add(yt("h")),this.element.appendChild(Q)}),this.vectorElems_=[l.createElementNS(Te,"line"),l.createElementNS(Te,"line")],this.vectorElems_.forEach(Q=>{Q.classList.add(yt("v")),this.svgElem_.appendChild(Q)}),this.value_=u.value,this.value_.emitter.on("change",this.onValueChange_.bind(this)),this.sel_=u.selection,this.handleElems_.forEach((Q,be)=>{k(this.sel_,Ur(tt=>tt===be,N(Q,yt("h","sel"))))}),ut(this.element,()=>{this.refresh()})}getVertMargin_(l){return l*.25}valueToPosition(l,u){const w=this.element.getBoundingClientRect(),P=w.width,V=w.height,G=this.getVertMargin_(V);return{x:Ve(l,0,1,0,P),y:Ve(u,0,1,V-G,G)}}positionToValue(l,u){const w=this.element.getBoundingClientRect(),P=w.width,V=w.height,G=this.getVertMargin_(V);return{x:Ht(Ve(l,0,P,0,1),0,1),y:Ve(u,V-G,G,0,1)}}refresh(){this.guideElem_.setAttributeNS(null,"d",[0,1].map(V=>{const G=this.valueToPosition(0,V),Q=this.valueToPosition(1,V);return[`M ${G.x},${G.y}`,`L ${Q.x},${Q.y}`].join(" ")}).join(" "));const l=this.value_.rawValue,u=[];let w=0;for(;;){const V=this.valueToPosition(...l.curve(w));if(u.push([V.x,V.y].join(",")),w>=1)break;w=Math.min(w+.05,1)}this.lineElem_.setAttributeNS(null,"points",u.join(" "));const P=l.toObject();[0,1].forEach(V=>{const G=this.valueToPosition(V,V),Q=this.valueToPosition(P[V*2],P[V*2+1]),be=this.vectorElems_[V];be.setAttributeNS(null,"x1",String(G.x)),be.setAttributeNS(null,"y1",String(G.y)),be.setAttributeNS(null,"x2",String(Q.x)),be.setAttributeNS(null,"y2",String(Q.y));const tt=this.handleElems_[V];tt.style.left=`${Q.x}px`,tt.style.top=`${Q.y}px`})}onValueChange_(){this.refresh()}}const Mi=24,Pn=400,Fs=1e3,St=C("cbzprv");class tn{constructor(l,u){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=l.createElement("div"),this.element.classList.add(St()),u.viewProps.bindClassModifiers(this.element);const w=l.createElementNS(Te,"svg");w.classList.add(St("g")),this.element.appendChild(w),this.svgElem_=w;const P=l.createElementNS(Te,"path");P.classList.add(St("t")),this.svgElem_.appendChild(P),this.ticksElem_=P;const V=l.createElement("div");V.classList.add(St("m")),this.element.appendChild(V),this.markerElem_=V,this.value_=u.value,this.value_.emitter.on("change",this.onValueChange_),u.viewProps.handleDispose(this.onDispose_),ut(this.element,()=>{this.refresh()})}play(){this.stop(),this.updateMarker_(0),this.markerElem_.classList.add(St("m","a")),this.startTime_=new Date().getTime()+Pn,this.stopped_=!1,requestAnimationFrame(this.onTimer_)}stop(){this.stopped_=!0,this.markerElem_.classList.remove(St("m","a"))}onDispose_(){this.stop()}updateMarker_(l){const u=this.value_.rawValue.y(Ht(l,0,1));this.markerElem_.style.left=`${u*100}%`}refresh(){const l=this.svgElem_.getBoundingClientRect(),u=l.width,w=l.height,P=[],V=this.value_.rawValue;for(let G=0;G<Mi;G++){const Q=Ve(G,0,Mi-1,0,1),be=Ve(V.y(Q),0,1,0,u);P.push(`M ${be},0 v${w}`)}this.ticksElem_.setAttributeNS(null,"d",P.join(" "))}onTimer_(){if(this.startTime_===null)return;const l=new Date().getTime()-this.startTime_,u=l/Fs;this.updateMarker_(u),l>Fs+Pn&&this.stop(),this.stopped_||requestAnimationFrame(this.onTimer_)}onValueChange_(){this.refresh(),this.play()}}function Re(f,l,u,w){const P=u-f,V=w-l;return Math.sqrt(P*P+V*V)}function An(f,l,u,w){const P=Re(f,l,u,w),V=Math.atan2(w-l,u-f),G=Math.round(V/(Math.PI/4))*Math.PI/4;return{x:f+Math.cos(G)*P,y:l+Math.sin(G)*P}}class dt{constructor(l,u){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_=u.baseStep,this.value=u.value,this.sel_=j(0),this.viewProps=u.viewProps,this.view=new Ne(l,{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 tn(l,{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 w=new $n(this.view.element);w.emitter.on("down",this.onPointerDown_),w.emitter.on("move",this.onPointerMove_),w.emitter.on("up",this.onPointerUp_)}refresh(){this.view.refresh(),this.prevView_.refresh(),this.prevView_.play()}updateValue_(l,u,w){const P=this.sel_.rawValue,V=this.value.rawValue.toObject(),G=this.view.positionToValue(l.x,l.y),Q=u?An(P,P,G.x,G.y):G;V[P*2]=Q.x,V[P*2+1]=Q.y,this.value.setRawValue(new Lt(...V),w)}onPointerDown_(l){const u=l.data;if(!u.point)return;const w=this.value.rawValue,P=this.view.valueToPosition(w.x1,w.y1),V=Re(u.point.x,u.point.y,P.x,P.y),G=this.view.valueToPosition(w.x2,w.y2),Q=Re(u.point.x,u.point.y,G.x,G.y);this.sel_.rawValue=V<=Q?0:1,this.updateValue_(u.point,l.shiftKey,{forceEmit:!1,last:!1})}onPointerMove_(l){const u=l.data;u.point&&this.updateValue_(u.point,l.shiftKey,{forceEmit:!1,last:!1})}onPointerUp_(l){const u=l.data;u.point&&this.updateValue_(u.point,l.shiftKey,{forceEmit:!0,last:!0})}onKeyDown_(l){pi(l.key)&&l.preventDefault();const u=this.sel_.rawValue,w=this.value.rawValue.toObject();w[u*2]+=Jt(this.baseStep_,Ss(l)),w[u*2+1]+=Jt(this.baseStep_,bn(l)),this.value.setRawValue(new Lt(...w),{forceEmit:!1,last:!1})}onKeyUp_(l){pi(l.key)&&l.preventDefault();const u=Jt(this.baseStep_,Ss(l)),w=Jt(this.baseStep_,bn(l));u===0&&w===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class ki{constructor(l,u){this.value=u.value,this.viewProps=u.viewProps,this.view=new Ai(l,{viewProps:this.viewProps}),this.gc_=new dt(l,{baseStep:u.axis.baseStep,value:this.value,viewProps:this.viewProps}),this.view.graphElement.appendChild(this.gc_.view.element);const w=Object.assign(Object.assign({},u.axis),{constraint:new Dt({max:1,min:0})}),P=Object.assign(Object.assign({},u.axis),{constraint:void 0});this.tc_=new It(l,{assembly:Is,axes:[w,P,w,P],parser:gn,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(l=>l.inputElement)]}refresh(){this.gc_.refresh()}}class ss{constructor(l,u){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=u.value,this.viewProps=u.viewProps,this.foldable_=Yn(u.expanded),this.view=new Pi(l,{foldable:this.foldable_,pickerLayout:u.pickerLayout,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("blur",this.onButtonBlur_),this.view.buttonElement.addEventListener("click",this.onButtonClick_),this.tc_=new qt(l,{parser:Nr,props:X.fromObject({formatter:Fr}),value:this.value,viewProps:this.viewProps}),this.view.textElement.appendChild(this.tc_.view.element),this.popC_=u.pickerLayout==="popup"?new fe(l,{viewProps:this.viewProps}):null;const w=new ki(l,{axis:u.axis,value:this.value,viewProps:this.viewProps});w.allFocusableElements.forEach(P=>{P.addEventListener("blur",this.onPopupChildBlur_),P.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=w,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),k(this.popC_.shows,P=>{P&&w.refresh()}),Wt({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:P=>P.rawValue,backward:(P,V)=>V.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),Zn(this.foldable_,this.view.pickerElement))}onButtonBlur_(l){if(!this.popC_)return;const u=l.relatedTarget;(!u||!this.popC_.view.element.contains(u))&&(this.popC_.shows.rawValue=!1)}onButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.allFocusableElements[0].focus()}onPopupChildBlur_(l){if(!this.popC_)return;const u=this.popC_.view.element,w=un(l);w&&u.contains(w)||w&&w===this.view.buttonElement&&!He(u.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(l){this.popC_&&l.key==="Escape"&&(this.popC_.shows.rawValue=!1)}}function Ns(){return new kr({assembly:Is,components:[0,1,2,3].map(f=>f%2===0?new Dt({min:0,max:1}):void 0)})}const Ft={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(f){const l=re,u=ne(f,{value:l.required.array(l.required.number),view:l.required.constant("cubicbezier"),expanded:l.optional.boolean,label:l.optional.string,picker:l.optional.custom(w=>w==="inline"||w==="popup"?w:void 0)});return u?{params:u}:null},controller(f){var l,u;const w=new Lt(...f.params.value),P=j(w,{constraint:Ns(),equals:Lt.equals}),V=new ss(f.document,{axis:{baseStep:.1,textProps:X.fromObject({draggingScale:.01,formatter:Fe(2)})},expanded:(l=f.params.expanded)!==null&&l!==void 0?l:!1,pickerLayout:(u=f.params.picker)!==null&&u!==void 0?u:"popup",value:P,viewProps:f.viewProps});return new Ot(f.document,{blade:f.blade,props:X.fromObject({label:f.params.label}),valueController:V})},api(f){return!(f.controller instanceof Ot)||!(f.controller.valueController instanceof ss)?null:new Ci(f.controller)}};class Le extends i{begin(){this.controller_.valueController.begin()}end(){this.controller_.valueController.end()}}const Us=20;class Ie{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(l){this.start_=l.getTime()}calculateFps_(l){if(this.timestamps_.length===0)return null;const u=this.timestamps_[0];return 1e3*(this.frameCount_-u.frameCount)/(l-u.time)}compactTimestamps_(){if(this.timestamps_.length<=Us)return;const l=this.timestamps_.length-Us;this.timestamps_.splice(0,l);const u=this.timestamps_[0].frameCount;this.timestamps_.forEach(w=>{w.frameCount-=u}),this.frameCount_-=u}end(l){if(this.start_===null)return;const u=l.getTime();this.duration_=u-this.start_,this.start_=null,this.fps_=this.calculateFps_(u),this.timestamps_.push({frameCount:this.frameCount_,time:u}),++this.frameCount_,this.compactTimestamps_()}}const nn=C("fps");class qe{constructor(l,u){this.element=l.createElement("div"),this.element.classList.add(nn()),u.viewProps.bindClassModifiers(this.element),this.graphElement=l.createElement("div"),this.graphElement.classList.add(nn("g")),this.element.appendChild(this.graphElement);const w=l.createElement("div");w.classList.add(nn("l")),this.element.appendChild(w);const P=l.createElement("span");P.classList.add(nn("v")),P.textContent="--",w.appendChild(P),this.valueElement=P;const V=l.createElement("span");V.classList.add(nn("u")),V.textContent="FPS",w.appendChild(V)}}class zs{constructor(l,u){this.stopwatch_=new Ie,this.onTick_=this.onTick_.bind(this),this.ticker_=u.ticker,this.ticker_.emitter.on("tick",this.onTick_),this.value_=u.value,this.viewProps=u.viewProps,this.view=new qe(l,{viewProps:this.viewProps}),this.graphC_=new Er(l,{formatter:Fe(0),lineCount:u.lineCount,props:X.fromObject({maxValue:u.maxValue,minValue:u.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 l=this.stopwatch_.fps;if(l!==null){const u=this.value_.rawValue;this.value_.rawValue=br(u,l),this.view.valueElement.textContent=l.toFixed(0)}}}function Mn(f,l){return l===0?new qn:new mn(f,l??Tr.monitor.defaultInterval)}const Rs={id:"fpsgraph",type:"blade",accept(f){const l=re,u=ne(f,{view:l.required.constant("fpsgraph"),interval:l.optional.number,label:l.optional.string,lineCount:l.optional.number,max:l.optional.number,min:l.optional.number});return u?{params:u}:null},controller(f){var l,u,w,P;const V=(l=f.params.interval)!==null&&l!==void 0?l:500;return new ct(f.document,{blade:f.blade,props:X.fromObject({label:f.params.label}),valueController:new zs(f.document,{lineCount:(u=f.params.lineCount)!==null&&u!==void 0?u:2,maxValue:(w=f.params.max)!==null&&w!==void 0?w:90,minValue:(P=f.params.min)!==null&&P!==void 0?P:0,ticker:Mn(f.document,V),value:ci(80),viewProps:f.viewProps})})},api(f){return!(f.controller instanceof ct)||!(f.controller.valueController instanceof zs)?null:new Le(f.controller)}};class Qe{constructor(l,u){this.min=l,this.max=u}static isObject(l){if(typeof l!="object"||l===null)return!1;const u=l.min,w=l.max;return!(typeof u!="number"||typeof w!="number")}static equals(l,u){return l.min===u.min&&l.max===u.max}get length(){return this.max-this.min}toObject(){return{min:this.min,max:this.max}}}const js={fromComponents:f=>new Qe(f[0],f[1]),toComponents:f=>[f.min,f.max]};class kn{constructor(l){this.edge=l}constrain(l){var u,w,P,V,G,Q,be,tt;if(l.min<=l.max)return new Qe((w=(u=this.edge)===null||u===void 0?void 0:u.constrain(l.min))!==null&&w!==void 0?w:l.min,(V=(P=this.edge)===null||P===void 0?void 0:P.constrain(l.max))!==null&&V!==void 0?V:l.max);const nt=(l.min+l.max)/2;return new Qe((Q=(G=this.edge)===null||G===void 0?void 0:G.constrain(nt))!==null&&Q!==void 0?Q:nt,(tt=(be=this.edge)===null||be===void 0?void 0:be.constrain(nt))!==null&&tt!==void 0?tt:nt)}}const Gs=C("rsltxt");class is{constructor(l,u){this.sliderView_=u.sliderView,this.textView_=u.textView,this.element=l.createElement("div"),this.element.classList.add(Gs());const w=l.createElement("div");w.classList.add(Gs("s")),w.appendChild(this.sliderView_.element),this.element.appendChild(w);const P=l.createElement("div");P.classList.add(Gs("t")),P.appendChild(this.textView_.element),this.element.appendChild(P)}}const it=C("rsl");class Ln{constructor(l,u){this.onSliderPropsChange_=this.onSliderPropsChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.sliderProps_=u.sliderProps,this.sliderProps_.emitter.on("change",this.onSliderPropsChange_),this.element=l.createElement("div"),this.element.classList.add(it()),u.viewProps.bindClassModifiers(this.element),this.value_=u.value,this.value_.emitter.on("change",this.onValueChange_);const w=l.createElement("div");w.classList.add(it("t")),this.element.appendChild(w),this.trackElement=w;const P=l.createElement("div");P.classList.add(it("b")),w.appendChild(P),this.barElement=P;const V=["min","max"].map(G=>{const Q=l.createElement("div");return Q.classList.add(it("k"),it("k",G)),w.appendChild(Q),Q});this.knobElements=[V[0],V[1]],this.update_()}valueToX_(l){const u=this.sliderProps_.get("minValue"),w=this.sliderProps_.get("maxValue");return Ht(Ve(l,u,w,0,1),0,1)*100}update_(){const l=this.value_.rawValue;l.length===0?this.element.classList.add(it(void 0,"zero")):this.element.classList.remove(it(void 0,"zero"));const u=[this.valueToX_(l.min),this.valueToX_(l.max)];this.barElement.style.left=`${u[0]}%`,this.barElement.style.right=`${100-u[1]}%`,this.knobElements.forEach((w,P)=>{w.style.left=`${u[P]}%`})}onSliderPropsChange_(){this.update_()}onValueChange_(){this.update_()}}class Ks{constructor(l,u){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=u.sliderProps,this.viewProps=u.viewProps,this.value=u.value,this.view=new Ln(l,{sliderProps:this.sliderProps,value:this.value,viewProps:u.viewProps});const w=new $n(this.view.trackElement);w.emitter.on("down",this.onPointerDown_),w.emitter.on("move",this.onPointerMove_),w.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_(l){if(!l.point)return null;const u=(l.point.x+this.ofs_())/l.bounds.width,w=this.sliderProps.get("minValue"),P=this.sliderProps.get("maxValue");return Ve(u,0,1,w,P)}onPointerDown_(l){if(!l.data.point)return;const u=l.data.point.x/l.data.bounds.width,w=this.value.rawValue,P=this.sliderProps.get("minValue"),V=this.sliderProps.get("maxValue"),G=Ve(w.min,P,V,0,1),Q=Ve(w.max,P,V,0,1);Math.abs(Q-u)<=.025?this.grabbing_="max":Math.abs(G-u)<=.025?this.grabbing_="min":u>=G&&u<=Q?(this.grabbing_="length",this.grabOffset_=Ve(u-G,0,1,0,V-P)):u<G?(this.grabbing_="min",this.onPointerMove_(l)):u>Q&&(this.grabbing_="max",this.onPointerMove_(l))}applyPointToValue_(l,u){const w=this.valueFromData_(l);if(w===null)return;const P=this.sliderProps.get("minValue"),V=this.sliderProps.get("maxValue");if(this.grabbing_==="min")this.value.setRawValue(new Qe(w,this.value.rawValue.max),u);else if(this.grabbing_==="max")this.value.setRawValue(new Qe(this.value.rawValue.min,w),u);else if(this.grabbing_==="length"){const G=this.value.rawValue.length;let Q=w-this.grabOffset_,be=Q+G;Q<P?(Q=P,be=P+G):be>V&&(Q=V-G,be=V),this.value.setRawValue(new Qe(Q,be),u)}}onPointerMove_(l){this.applyPointToValue_(l.data,{forceEmit:!1,last:!1})}onPointerUp_(l){this.applyPointToValue_(l.data,{forceEmit:!0,last:!0}),this.grabbing_=null}}class xt{constructor(l,u){this.value=u.value,this.viewProps=u.viewProps,this.sc_=new Ks(l,u);const w={baseStep:u.baseStep,constraint:u.constraint,textProps:X.fromObject({draggingScale:u.draggingScale,formatter:u.formatter})};this.tc_=new It(l,{assembly:js,axes:[w,w],parser:u.parser,value:this.value,viewProps:u.viewProps}),this.view=new is(l,{sliderView:this.sc_.view,textView:this.tc_.view})}get textController(){return this.tc_}}function Li(f){return Qe.isObject(f)?new Qe(f.min,f.max):new Qe(0,0)}function Ys(f,l){f.writeProperty("max",l.max),f.writeProperty("min",l.min)}function zr(f){const l=[],u=Cn(f);u&&l.push(u);const w=Sr(f);return w&&l.push(w),new kn(new Qn(l))}const rs={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:(f,l)=>{if(!Qe.isObject(f))return null;const u=re,w=ne(l,{format:u.optional.function,max:u.optional.number,min:u.optional.number,step:u.optional.number});return w?{initialValue:new Qe(f.min,f.max),params:w}:null},binding:{reader:f=>Li,constraint:f=>zr(f.params),equals:Qe.equals,writer:f=>Ys},controller(f){var l;const u=f.value,w=f.constraint;if(!(w instanceof kn))throw g.shouldNeverHappen();const P=(u.rawValue.min+u.rawValue.max)/2,V=(l=f.params.format)!==null&&l!==void 0?l:Fe(yn(w.edge,P)),G=w.edge&&kt(w.edge,wt);if(G)return new xt(f.document,{baseStep:Es(w.edge),constraint:w.edge,draggingScale:es(w.edge,P),formatter:V,parser:gn,sliderProps:new X({maxValue:G.values.value("max"),minValue:G.values.value("min")}),value:u,viewProps:f.viewProps});const Q={baseStep:Es(w.edge),constraint:w.edge,textProps:X.fromObject({draggingScale:P,formatter:V})};return new It(f.document,{assembly:js,axes:[Q,Q],parser:gn,value:u,viewProps:f.viewProps})}};class Nt{constructor(l){this.controller_=l}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(l){this.controller_.viewProps.set("disabled",l)}get title(){var l;return(l=this.controller_.props.get("title"))!==null&&l!==void 0?l:""}set title(l){this.controller_.props.set("title",l)}}class Ut extends a{constructor(l,u,w,P,V){super(l,P,V),this.cell=u,this.index=w}}class Sn extends i{constructor(l){super(l),this.cellToApiMap_=new Map,this.controller_.valueController.cellControllers.forEach(w=>{const P=new Nt(w);this.cellToApiMap_.set(w,P)})}get value(){return this.controller_.value}cell(l,u){const w=this.controller_.valueController,P=w.cellControllers[u*w.size[0]+l];return this.cellToApiMap_.get(P)}on(l,u){const w=u.bind(this);this.controller_.value.emitter.on(l,P=>{const V=this.controller_.valueController,G=V.findCellByValue(P.rawValue);if(!G)return;const Q=this.cellToApiMap_.get(G);if(!Q)return;const be=V.cellControllers.indexOf(G);w(new Ut(this,Q,[be%V.size[0],Math.floor(be/V.size[0])],P.rawValue,void 0))})}}const Tn=C("rad");class Si{constructor(l,u){this.element=l.createElement("div"),this.element.classList.add(Tn()),u.viewProps.bindClassModifiers(this.element);const w=l.createElement("label");w.classList.add(Tn("l")),this.element.appendChild(w);const P=l.createElement("input");P.classList.add(Tn("i")),P.name=u.name,P.type="radio",u.viewProps.bindDisabled(P),w.appendChild(P),this.inputElement=P;const V=l.createElement("div");V.classList.add(Tn("b")),w.appendChild(V);const G=l.createElement("div");G.classList.add(Tn("t")),V.appendChild(G),O(u.props,"title",Q=>{G.textContent=Q})}}class Ti{constructor(l,u){this.props=u.props,this.viewProps=u.viewProps,this.view=new Si(l,{name:u.name,props:this.props,viewProps:this.viewProps})}}class os{constructor(l,u){this.cellCs_=[],this.cellValues_=[],this.onCellInputChange_=this.onCellInputChange_.bind(this),this.size=u.size;const[w,P]=this.size;for(let V=0;V<P;V++)for(let G=0;G<w;G++){const Q=new Ti(l,{name:u.groupName,props:X.fromObject(Object.assign({},u.cellConfig(G,V))),viewProps:ke.create()});this.cellCs_.push(Q),this.cellValues_.push(u.cellConfig(G,V).value)}this.value=u.value,k(this.value,V=>{const G=this.findCellByValue(V);G&&(G.view.inputElement.checked=!0)}),this.viewProps=ke.create(),this.view=new Mt(l,{viewProps:this.viewProps,viewName:"radgrid"}),this.view.element.style.gridTemplateColumns=`repeat(${w}, 1fr)`,this.cellCs_.forEach(V=>{V.view.inputElement.addEventListener("change",this.onCellInputChange_),this.view.element.appendChild(V.view.element)})}get cellControllers(){return this.cellCs_}findCellByValue(l){const u=this.cellValues_.findIndex(w=>w===l);return u<0?null:this.cellCs_[u]}onCellInputChange_(l){const u=l.currentTarget,w=this.cellCs_.findIndex(P=>P.view.inputElement===u);w<0||(this.value.rawValue=this.cellValues_[w])}}const zt=function(){return{id:"radiogrid",type:"blade",accept(f){const l=re,u=ne(f,{cells:l.required.function,groupName:l.required.string,size:l.required.array(l.required.number),value:l.required.raw,view:l.required.constant("radiogrid"),label:l.optional.string});return u?{params:u}:null},controller(f){return new Ot(f.document,{blade:f.blade,props:X.fromObject({label:f.params.label}),valueController:new os(f.document,{groupName:f.params.groupName,cellConfig:f.params.cells,size:f.params.size,value:j(f.params.value)})})},api(f){return!(f.controller instanceof Ot)||!(f.controller.valueController instanceof os)?null:new Sn(f.controller)}}}();function Xs(f){return{id:"input-radiogrid",type:"input",accept(l,u){if(!f.isType(l))return null;const w=re,P=ne(u,{cells:w.required.function,groupName:w.required.string,size:w.required.array(w.required.number),view:w.required.constant("radiogrid")});return P?{initialValue:l,params:P}:null},binding:f.binding,controller:l=>new os(l.document,{cellConfig:l.params.cells,groupName:l.params.groupName,size:l.params.size,value:l.value})}}const Rr=Xs({isType:f=>typeof f=="number",binding:{reader:f=>_r,writer:f=>st}}),jr=Xs({isType:f=>typeof f=="string",binding:{reader:f=>li,writer:f=>st}}),Gr=Xs({isType:f=>typeof f=="boolean",binding:{reader:f=>fn,writer:f=>st}}),Ei=[Dr,Ft,Rs,rs,zt,Gr,Rr,jr];n.ButtonCellApi=yi,n.ButtonGridApi=xi,n.ButtonGridController=Ds,n.CubicBezier=Lt,n.CubicBezierApi=Ci,n.CubicBezierAssembly=Is,n.CubicBezierController=ss,n.CubicBezierGraphController=dt,n.CubicBezierGraphView=Ne,n.CubicBezierPickerController=ki,n.CubicBezierPickerView=Ai,n.CubicBezierPreviewView=tn,n.CubicBezierView=Pi,n.FpsGraphBladeApi=Le,n.FpsGraphController=zs,n.FpsView=qe,n.Fpswatch=Ie,n.Interval=Qe,n.IntervalAssembly=js,n.IntervalConstraint=kn,n.RadioCellApi=Nt,n.RadioController=Ti,n.RadioGridApi=Sn,n.RadioGridController=os,n.RadioView=Si,n.RangeSliderController=Ks,n.RangeSliderTextController=xt,n.RangeSliderTextView=is,n.RangeSliderView=Ln,n.TpRadioGridChangeEvent=Ut,n.plugins=Ei,Object.defineProperty(n,"__esModule",{value:!0})})})(ir,ir.exports);var ea=ir.exports;const Mp=Ua({__proto__:null,default:gc(ea)},[ea]);let _t,si;const kp=(v="body")=>{_t||(_t=new Ap.Pane({container:document.querySelector(v)}),_t.element.style.position="absolute",_t.element.style.top="1rem",_t.element.style.right="1rem",_t.element.style.zIndex="9999",_t.registerPlugin(Mp),si=_t.addBlade({view:"fpsgraph",label:"fpsgraph"}));function t(){_t&&_t.dispose()}return _.onMounted(()=>{const{onBeforeLoop:n,onAfterLoop:i,resume:o}=Ae.useRenderLoop();o(),n(()=>si.begin()),i(()=>si.end())}),_.onUnmounted(()=>{t()}),{pane:_t,fpsGraph:si,disposeTweakPane:t}};$.Backdrop=Pp,$.Box=Bh,$.CameraControls=Th,$.Circle=Uh,$.Cone=jh,$.ContactShadows=Gc,$.Dodecahedron=Yh,$.Environment=Ac,$.FBXModel=ch,$.GLTFModel=lh,$.Icosahedron=qh,$.KeyboardControls=_h,$.Levioso=Fc,$.MapControls=Ch,$.MeshWobbleMaterial=Dh,$.MouseParallax=oh,$.Octahedron=Jh,$.OrbitControls=dh,$.Plane=tp,$.PointerLockControls=yh,$.Precipitation=Ec,$.Ring=ip,$.ScrollControls=Ph,$.Smoke=Bc,$.Sphere=ap,$.Stars=Lc,$.Tetrahedron=pp,$.Text3D=Cc,$.Torus=mp,$.TorusKnot=_p,$.TransformControls=bh,$.Tube=wp,$.useAnimations=Pc,$.useEnvironment=Bo,$.useFBX=jo,$.useGLTF=Ro,$.useProgress=ph,$.useTweakPane=kp,Object.defineProperty($,Symbol.toStringTag,{value:"Module"})});