@tresjs/cientos 2.1.4 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/composables/useLogger.d.ts +8 -0
- package/dist/core/abstractions/Levioso.vue.d.ts +24 -22
- package/dist/core/abstractions/Precipitation.vue.d.ts +84 -77
- package/dist/core/abstractions/Smoke.vue.d.ts +60 -50
- package/dist/core/abstractions/Stars.vue.d.ts +52 -69
- package/dist/core/abstractions/Text3D.vue.d.ts +63 -77
- package/dist/core/abstractions/index.d.ts +1 -1
- package/dist/core/controls/KeyboardControls.vue.d.ts +167 -0
- package/dist/core/controls/MapControls.vue.d.ts +13 -20
- package/dist/core/controls/OrbitControls.vue.d.ts +141 -117
- package/dist/core/controls/PointerLockControls.vue.d.ts +3242 -25
- package/dist/core/controls/ScrollControls.vue.d.ts +101 -0
- package/dist/core/controls/TransformControls.vue.d.ts +60 -58
- package/dist/core/controls/index.d.ts +3 -1
- package/dist/core/loaders/index.d.ts +2 -1
- package/dist/core/loaders/useFBX/component.vue.d.ts +7 -6
- package/dist/core/loaders/useGLTF/component.vue.d.ts +13 -16
- package/dist/core/loaders/useProgress.d.ts +6 -0
- package/dist/core/materials/meshWobbleMaterial/index.vue.d.ts +8 -13
- package/dist/core/shapes/Box.vue.d.ts +25 -14
- package/dist/core/shapes/Circle.vue.d.ts +25 -14
- package/dist/core/shapes/Cone.vue.d.ts +26 -15
- package/dist/core/shapes/Dodecahedron.vue.d.ts +25 -14
- package/dist/core/shapes/Icosahedron.vue.d.ts +25 -14
- package/dist/core/shapes/Octahedron.vue.d.ts +25 -14
- package/dist/core/shapes/Plane.vue.d.ts +25 -14
- package/dist/core/shapes/Ring.vue.d.ts +25 -14
- package/dist/core/shapes/Sphere.vue.d.ts +25 -14
- package/dist/core/shapes/Tetrahedron.vue.d.ts +25 -14
- package/dist/core/shapes/Torus.vue.d.ts +25 -14
- package/dist/core/shapes/TorusKnot.vue.d.ts +25 -14
- package/dist/core/shapes/Tube.vue.d.ts +26 -15
- package/dist/style.css +8 -0
- package/dist/trescientos.js +5463 -5066
- package/dist/trescientos.umd.cjs +17 -17
- package/dist/utils/index.d.ts +20 -0
- package/package.json +20 -20
- package/dist/core/abstractions/ContactShadows.vue.d.ts +0 -251
package/dist/trescientos.umd.cjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: @tresjs/cientos
|
|
3
|
-
* version: v2.
|
|
3
|
+
* version: v2.3.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,Be){"use strict";var Hh=Object.defineProperty;var eu=(J,x,f)=>x in J?Hh(J,x,{enumerable:!0,configurable:!0,writable:!0,value:f}):J[x]=f;var xr=(J,x,f)=>(eu(J,typeof x!="symbol"?x+"":x,f),f);function Go(b,i){for(var n=0;n<i.length;n++){const r=i[n];if(typeof r!="string"&&!Array.isArray(r)){for(const o in r)if(o!=="default"&&!(o in b)){const l=Object.getOwnPropertyDescriptor(r,o);l&&Object.defineProperty(b,o,l.get?l:{enumerable:!0,get:()=>r[o]})}}}return Object.freeze(Object.defineProperty(b,Symbol.toStringTag,{value:"Module"}))}function Cr(b,i){if(i===f.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),b;if(i===f.TriangleFanDrawMode||i===f.TriangleStripDrawMode){let n=b.getIndex();if(n===null){const p=[],u=b.getAttribute("position");if(u!==void 0){for(let d=0;d<u.count;d++)p.push(d);b.setIndex(p),n=b.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),b}const r=n.count-2,o=[];if(n)if(i===f.TriangleFanDrawMode)for(let p=1;p<=r;p++)o.push(n.getX(0)),o.push(n.getX(p)),o.push(n.getX(p+1));else for(let p=0;p<r;p++)p%2===0?(o.push(n.getX(p)),o.push(n.getX(p+1)),o.push(n.getX(p+2))):(o.push(n.getX(p+2)),o.push(n.getX(p+1)),o.push(n.getX(p)));o.length/3!==r&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const l=b.clone();return l.setIndex(o),l.clearGroups(),l}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",i),b}var We=Uint8Array,Lt=Uint16Array,is=Uint32Array,Pr=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]),kr=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]),Ko=new We([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Mr=function(b,i){for(var n=new Lt(31),r=0;r<31;++r)n[r]=i+=1<<b[r-1];for(var o=new is(n[30]),r=1;r<30;++r)for(var l=n[r];l<n[r+1];++l)o[l]=l-n[r]<<5|r;return[n,o]},Ar=Mr(Pr,2),Sr=Ar[0],$o=Ar[1];Sr[28]=258,$o[258]=28;for(var Xo=Mr(kr,0),Yo=Xo[0],ss=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,ss[xe]=((Vt&65280)>>>8|(Vt&255)<<8)>>>1}for(var Gn=function(b,i,n){for(var r=b.length,o=0,l=new Lt(i);o<r;++o)++l[b[o]-1];var p=new Lt(i);for(o=0;o<i;++o)p[o]=p[o-1]+l[o-1]<<1;var u;if(n){u=new Lt(1<<i);var d=15-i;for(o=0;o<r;++o)if(b[o])for(var _=o<<4|b[o],w=i-b[o],y=p[b[o]-1]++<<w,C=y|(1<<w)-1;y<=C;++y)u[ss[y]>>>d]=_}else for(u=new Lt(r),o=0;o<r;++o)b[o]&&(u[o]=ss[p[b[o]-1]++]>>>15-b[o]);return u},Kn=new We(288),xe=0;xe<144;++xe)Kn[xe]=8;for(var xe=144;xe<256;++xe)Kn[xe]=9;for(var xe=256;xe<280;++xe)Kn[xe]=7;for(var xe=280;xe<288;++xe)Kn[xe]=8;for(var Lr=new We(32),xe=0;xe<32;++xe)Lr[xe]=5;var qo=Gn(Kn,9,1),Qo=Gn(Lr,5,1),rs=function(b){for(var i=b[0],n=1;n<b.length;++n)b[n]>i&&(i=b[n]);return i},ot=function(b,i,n){var r=i/8|0;return(b[r]|b[r+1]<<8)>>(i&7)&n},os=function(b,i){var n=i/8|0;return(b[n]|b[n+1]<<8|b[n+2]<<16)>>(i&7)},Zo=function(b){return(b/8|0)+(b&7&&1)},Wo=function(b,i,n){(i==null||i<0)&&(i=0),(n==null||n>b.length)&&(n=b.length);var r=new(b instanceof Lt?Lt:b instanceof is?is:We)(n-i);return r.set(b.subarray(i,n)),r},Jo=function(b,i,n){var r=b.length;if(!r||n&&!n.l&&r<5)return i||new We(0);var o=!i||n,l=!n||n.i;n||(n={}),i||(i=new We(r*3));var p=function(De){var Ee=i.length;if(De>Ee){var ye=new We(Math.max(Ee*2,De));ye.set(i),i=ye}},u=n.f||0,d=n.p||0,_=n.b||0,w=n.l,y=n.d,C=n.m,M=n.n,T=r*8;do{if(!w){n.f=u=ot(b,d,1);var V=ot(b,d+1,3);if(d+=3,V)if(V==1)w=qo,y=Qo,C=9,M=5;else if(V==2){var N=ot(b,d,31)+257,I=ot(b,d+10,15)+4,Q=N+ot(b,d+5,31)+1;d+=14;for(var $=new We(Q),U=new We(19),j=0;j<I;++j)U[Ko[j]]=ot(b,d+j*3,7);d+=I*3;for(var X=rs(U),Y=(1<<X)-1,Z=Gn(U,X,1),j=0;j<Q;){var ue=Z[ot(b,d,Y)];d+=ue&15;var O=ue>>>4;if(O<16)$[j++]=O;else{var _e=0,he=0;for(O==16?(he=3+ot(b,d,3),d+=2,_e=$[j-1]):O==17?(he=3+ot(b,d,7),d+=3):O==18&&(he=11+ot(b,d,127),d+=7);he--;)$[j++]=_e}}var fe=$.subarray(0,N),de=$.subarray(N);C=rs(fe),M=rs(de),w=Gn(fe,C,1),y=Gn(de,M,1)}else throw"invalid block type";else{var O=Zo(d)+4,z=b[O-4]|b[O-3]<<8,F=O+z;if(F>r){if(l)throw"unexpected EOF";break}o&&p(_+z),i.set(b.subarray(O,F),_),n.b=_+=z,n.p=d=F*8;continue}if(d>T){if(l)throw"unexpected EOF";break}}o&&p(_+131072);for(var te=(1<<C)-1,q=(1<<M)-1,Pe=d;;Pe=d){var _e=w[os(b,d)&te],ve=_e>>>4;if(d+=_e&15,d>T){if(l)throw"unexpected EOF";break}if(!_e)throw"invalid length/literal";if(ve<256)i[_++]=ve;else if(ve==256){Pe=d,w=null;break}else{var ce=ve-254;if(ve>264){var j=ve-257,se=Pr[j];ce=ot(b,d,(1<<se)-1)+Sr[j],d+=se}var ge=y[os(b,d)&q],L=ge>>>4;if(!ge)throw"invalid distance";d+=ge&15;var de=Yo[L];if(L>3){var se=kr[L];de+=os(b,d)&(1<<se)-1,d+=se}if(d>T){if(l)throw"unexpected EOF";break}o&&p(_+131072);for(var pe=_+ce;_<pe;_+=4)i[_]=i[_-de],i[_+1]=i[_+1-de],i[_+2]=i[_+2-de],i[_+3]=i[_+3-de];_=pe}}n.l=w,n.p=Pe,n.b=_,w&&(u=1,n.m=C,n.d=y,n.n=M)}while(!u);return _==i.length?i:Wo(i,0,_)},Ho=new We(0),ea=function(b){if((b[0]&15)!=8||b[0]>>>4>7||(b[0]<<8|b[1])%31)throw"invalid zlib data";if(b[1]&32)throw"invalid zlib data: preset dictionaries not supported"};function ta(b,i){return Jo((ea(b),b.subarray(2,-4)),i)}var na=typeof TextDecoder<"u"&&new TextDecoder,ia=0;try{na.decode(Ho,{stream:!0}),ia=1}catch{}var sa=Object.defineProperty,ra=(b,i,n)=>i in b?sa(b,i,{enumerable:!0,configurable:!0,writable:!0,value:n}):b[i]=n,B=(b,i,n)=>(ra(b,typeof i!="symbol"?i+"":i,n),n);class oa extends f.Object3D{constructor(i,n){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 _=this.intersectObjectWithRay(this.plane,this.raycaster,!0);if(_){if(this.pointEnd.copy(_.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 w=this.pointEnd.length()/this.pointStart.length();this.pointEnd.dot(this.pointStart)<0&&(w*=-1),this.tempVector2.set(w,w,w)}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 w=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))*w):(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())*w),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,_;(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),(_=(d=this.domElement)==null?void 0:d.ownerDocument)==null||_.removeEventListener("pointerup",this.onPointerUp),this.traverse(w=>{const y=w;y.geometry&&y.geometry.dispose(),y.material&&y.material.dispose()})}),this.domElement=n,this.camera=i,this.gizmo=new aa,this.add(this.gizmo),this.plane=new la,this.add(this.plane);const r=(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};r("camera",this.camera),r("object",this.object),r("enabled",this.enabled),r("axis",this.axis),r("mode",this.mode),r("translationSnap",this.translationSnap),r("rotationSnap",this.rotationSnap),r("scaleSnap",this.scaleSnap),r("space",this.space),r("size",this.size),r("dragging",this.dragging),r("showX",this.showX),r("showY",this.showY),r("showZ",this.showZ),r("worldPosition",this.worldPosition),r("worldPositionStart",this.worldPositionStart),r("worldQuaternion",this.worldQuaternion),r("worldQuaternionStart",this.worldQuaternionStart),r("cameraPosition",this.cameraPosition),r("cameraQuaternion",this.cameraQuaternion),r("pointStart",this.pointStart),r("pointEnd",this.pointEnd),r("rotationAxis",this.rotationAxis),r("rotationAngle",this.rotationAngle),r("eye",this.eye),n!==void 0&&this.connect(n)}}class aa 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 i=new f.MeshBasicMaterial({depthTest:!1,depthWrite:!1,transparent:!0,side:f.DoubleSide,fog:!1,toneMapped:!1}),n=new f.LineBasicMaterial({depthTest:!1,depthWrite:!1,transparent:!0,linewidth:1,fog:!1,toneMapped:!1}),r=i.clone();r.opacity=.15;const o=i.clone();o.opacity=.33;const l=i.clone();l.color.set(16711680);const p=i.clone();p.color.set(65280);const u=i.clone();u.color.set(255);const d=i.clone();d.opacity=.25;const _=d.clone();_.color.set(16776960);const w=d.clone();w.color.set(65535);const y=d.clone();y.color.set(16711935),i.clone().color.set(16776960);const M=n.clone();M.color.set(16711680);const T=n.clone();T.color.set(65280);const V=n.clone();V.color.set(255);const O=n.clone();O.color.set(65535);const z=n.clone();z.color.set(16711935);const F=n.clone();F.color.set(16776960);const N=n.clone();N.color.set(7895160);const I=F.clone();I.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,T),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),_.clone()),[.15,.15,0]],[new f.Line(U,F),[.18,.3,0],null,[.125,1,1]],[new f.Line(U,F),[.3,.18,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new f.Mesh(new f.PlaneGeometry(.295,.295),w.clone()),[0,.15,.15],[0,Math.PI/2,0]],[new f.Line(U,O),[0,.18,.3],[0,0,Math.PI/2],[.125,1,1]],[new f.Line(U,O),[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,z),[.18,0,.3],null,[.125,1,1]],[new f.Line(U,z),[.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),r),[.6,0,0],[0,0,-Math.PI/2]]],Y:[[new f.Mesh(new f.CylinderGeometry(.2,0,1,4,1,!1),r),[0,.6,0]]],Z:[[new f.Mesh(new f.CylinderGeometry(.2,0,1,4,1,!1),r),[0,0,.6],[Math.PI/2,0,0]]],XYZ:[[new f.Mesh(new f.OctahedronGeometry(.2,0),r)]],XY:[[new f.Mesh(new f.PlaneGeometry(.4,.4),r),[.2,.2,0]]],YZ:[[new f.Mesh(new f.PlaneGeometry(.4,.4),r),[0,.2,.2],[0,Math.PI/2,0]]],XZ:[[new f.Mesh(new f.PlaneGeometry(.4,.4),r),[.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"]]},_e={X:[[new f.Line(j(1,.5),M)],[new f.Mesh(new f.OctahedronGeometry(.04,0),l),[0,0,.99],null,[1,3,1]]],Y:[[new f.Line(j(1,.5),T),null,[0,0,-Math.PI/2]],[new f.Mesh(new f.OctahedronGeometry(.04,0),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),I),null,[0,Math.PI/2,0]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),I),[1.17,0,0],[0,0,-Math.PI/2],[1,1,.001]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),I),[-1.17,0,0],[0,0,Math.PI/2],[1,1,.001]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),I),[0,-1.17,0],[Math.PI,0,0],[1,1,.001]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),I),[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),r),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],Y:[[new f.Mesh(new f.TorusGeometry(1,.1,4,24),r),[0,0,0],[Math.PI/2,0,0]]],Z:[[new f.Mesh(new f.TorusGeometry(1,.1,4,24),r),[0,0,0],[0,0,-Math.PI/2]]],E:[[new f.Mesh(new f.TorusGeometry(1.25,.1,2,24),r)]],XYZE:[[new f.Mesh(new f.SphereGeometry(.7,10,8),r)]]},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,T),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($,_),[.85,.85,0],null,[2,2,.2]],[new f.Line(U,F),[.855,.98,0],null,[.125,1,1]],[new f.Line(U,F),[.98,.855,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new f.Mesh($,w),[0,.85,.85],null,[.2,2,2]],[new f.Line(U,O),[0,.855,.98],[0,0,Math.PI/2],[.125,1,1]],[new f.Line(U,O),[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,z),[.855,0,.98],null,[.125,1,1]],[new f.Line(U,z),[.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),r),[.5,0,0],[0,0,-Math.PI/2]]],Y:[[new f.Mesh(new f.CylinderGeometry(.2,0,.8,4,1,!1),r),[0,.5,0]]],Z:[[new f.Mesh(new f.CylinderGeometry(.2,0,.8,4,1,!1),r),[0,0,.5],[Math.PI/2,0,0]]],XY:[[new f.Mesh($,r),[.85,.85,0],null,[3,3,.2]]],YZ:[[new f.Mesh($,r),[0,.85,.85],null,[.2,3,3]]],XZ:[[new f.Mesh($,r),[.85,0,.85],null,[3,.2,3]]],XYZX:[[new f.Mesh(new f.BoxGeometry(.2,.2,.2),r),[1.1,0,0]]],XYZY:[[new f.Mesh(new f.BoxGeometry(.2,.2,.2),r),[0,1.1,0]]],XYZZ:[[new f.Mesh(new f.BoxGeometry(.2,.2,.2),r),[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],Ee=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]),Ee&&L.scale.set(Ee[0],Ee[1],Ee[2]),L.updateMatrix();const He=L.geometry.clone();He.applyMatrix4(L.matrix),L.geometry=He,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(_e)),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 la 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 i=this.space;switch(this.position.copy(this.worldPosition),this.mode==="scale"&&(i="local"),this.unitX.set(1,0,0).applyQuaternion(i==="local"?this.worldQuaternion:this.identityQuaternion),this.unitY.set(0,1,0).applyQuaternion(i==="local"?this.worldQuaternion:this.identityQuaternion),this.unitZ.set(0,0,1).applyQuaternion(i==="local"?this.worldQuaternion:this.identityQuaternion),this.alignVector.copy(this.unitY),this.mode){case"translate":case"scale":switch(this.axis){case"X":this.alignVector.copy(this.eye).cross(this.unitX),this.dirVector.copy(this.unitX).cross(this.alignVector);break;case"Y":this.alignVector.copy(this.eye).cross(this.unitY),this.dirVector.copy(this.unitY).cross(this.alignVector);break;case"Z":this.alignVector.copy(this.eye).cross(this.unitZ),this.dirVector.copy(this.unitZ).cross(this.alignVector);break;case"XY":this.dirVector.copy(this.unitZ);break;case"YZ":this.dirVector.copy(this.unitX);break;case"XZ":this.alignVector.copy(this.unitZ),this.dirVector.copy(this.unitY);break;case"XYZ":case"E":this.dirVector.set(0,0,0);break}break;case"rotate":default:this.dirVector.set(0,0,0)}this.dirVector.length()===0?this.quaternion.copy(this.cameraQuaternion):(this.tempMatrix.lookAt(this.tempVector.set(0,0,0),this.dirVector,this.alignVector),this.quaternion.setFromRotationMatrix(this.tempMatrix)),super.updateMatrixWorld()})}}var ca=Object.defineProperty,pa=(b,i,n)=>i in b?ca(b,i,{enumerable:!0,configurable:!0,writable:!0,value:n}):b[i]=n,Ve=(b,i,n)=>(pa(b,typeof i!="symbol"?i+"":i,n),n);const bn=new f.Euler(0,0,0,"YXZ"),gn=new f.Vector3,ha={type:"change"},ua={type:"lock"},da={type:"unlock"},Vr=Math.PI/2;class ma extends f.EventDispatcher{constructor(i,n){super(),Ve(this,"camera"),Ve(this,"domElement"),Ve(this,"isLocked"),Ve(this,"minPolarAngle"),Ve(this,"maxPolarAngle"),Ve(this,"pointerSpeed"),Ve(this,"onMouseMove",r=>{if(!this.domElement||this.isLocked===!1)return;const o=r.movementX||r.mozMovementX||r.webkitMovementX||0,l=r.movementY||r.mozMovementY||r.webkitMovementY||0;bn.setFromQuaternion(this.camera.quaternion),bn.y-=o*.002*this.pointerSpeed,bn.x-=l*.002*this.pointerSpeed,bn.x=Math.max(Vr-this.maxPolarAngle,Math.min(Vr-this.minPolarAngle,bn.x)),this.camera.quaternion.setFromEuler(bn),this.dispatchEvent(ha)}),Ve(this,"onPointerlockChange",()=>{this.domElement&&(this.domElement.ownerDocument.pointerLockElement===this.domElement?(this.dispatchEvent(ua),this.isLocked=!0):(this.dispatchEvent(da),this.isLocked=!1))}),Ve(this,"onPointerlockError",()=>{console.error("THREE.PointerLockControls: Unable to use Pointer Lock API")}),Ve(this,"connect",r=>{this.domElement=r||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",r=>r.copy(this.direction).applyQuaternion(this.camera.quaternion)),Ve(this,"moveForward",r=>{gn.setFromMatrixColumn(this.camera.matrix,0),gn.crossVectors(this.camera.up,gn),this.camera.position.addScaledVector(gn,r)}),Ve(this,"moveRight",r=>{gn.setFromMatrixColumn(this.camera.matrix,0),this.camera.position.addScaledVector(gn,r)}),Ve(this,"lock",()=>{this.domElement&&this.domElement.requestPointerLock()}),Ve(this,"unlock",()=>{this.domElement&&this.domElement.ownerDocument.exitPointerLock()}),this.camera=i,this.domElement=n,this.isLocked=!1,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.pointerSpeed=1,n&&this.connect(n)}}var fa=Object.defineProperty,va=(b,i,n)=>i in b?fa(b,i,{enumerable:!0,configurable:!0,writable:!0,value:n}):b[i]=n,ne=(b,i,n)=>(va(b,typeof i!="symbol"?i+"":i,n),n);const Dr=(b,i)=>(b%i+i)%i;class Ir extends f.EventDispatcher{constructor(i,n){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=i,this.domElement=n,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.getPolarAngle=()=>w.phi,this.getAzimuthalAngle=()=>w.theta,this.setPolarAngle=D=>{let K=Dr(D,2*Math.PI),ee=w.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,r.update()},this.setAzimuthalAngle=D=>{let K=Dr(D,2*Math.PI),ee=w.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,r.update()},this.getDistance=()=>r.object.position.distanceTo(r.target),this.listenToKeyEvents=D=>{D.addEventListener("keydown",dt),this._domElementKeyEvents=D},this.saveState=()=>{r.target0.copy(r.target),r.position0.copy(r.object.position),r.zoom0=r.object.zoom},this.reset=()=>{r.target.copy(r.target0),r.object.position.copy(r.position0),r.object.zoom=r.zoom0,r.object.updateProjectionMatrix(),r.dispatchEvent(o),r.update(),d=u.NONE},this.update=(()=>{const D=new f.Vector3,K=new f.Quaternion().setFromUnitVectors(i.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 Wt=r.object.position;D.copy(Wt).sub(r.target),D.applyQuaternion(K),w.setFromVector3(D),r.autoRotate&&d===u.NONE&&ue(Y()),r.enableDamping?(w.theta+=y.theta*r.dampingFactor,w.phi+=y.phi*r.dampingFactor):(w.theta+=y.theta,w.phi+=y.phi);let ze=r.minAzimuthAngle,je=r.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?w.theta=Math.max(ze,Math.min(je,w.theta)):w.theta=w.theta>(ze+je)/2?Math.max(ze,w.theta):Math.min(je,w.theta)),w.phi=Math.max(r.minPolarAngle,Math.min(r.maxPolarAngle,w.phi)),w.makeSafe(),w.radius*=C,w.radius=Math.max(r.minDistance,Math.min(r.maxDistance,w.radius)),r.enableDamping===!0?r.target.addScaledVector(M,r.dampingFactor):r.target.add(M),D.setFromSpherical(w),D.applyQuaternion(ee),Wt.copy(r.target).add(D),r.object.lookAt(r.target),r.enableDamping===!0?(y.theta*=1-r.dampingFactor,y.phi*=1-r.dampingFactor,M.multiplyScalar(1-r.dampingFactor)):(y.set(0,0,0),M.set(0,0,0)),C=1,T||re.distanceToSquared(r.object.position)>_||8*(1-Ce.dot(r.object.quaternion))>_?(r.dispatchEvent(o),re.copy(r.object.position),Ce.copy(r.object.quaternion),T=!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.'),r.domElement=D,r.domElement.style.touchAction="none",r.domElement.addEventListener("contextmenu",Zt),r.domElement.addEventListener("pointerdown",et),r.domElement.addEventListener("pointercancel",Cn),r.domElement.addEventListener("wheel",kn)},this.dispose=()=>{var D,K,ee,re,Ce,Te;(D=r.domElement)==null||D.removeEventListener("contextmenu",Zt),(K=r.domElement)==null||K.removeEventListener("pointerdown",et),(ee=r.domElement)==null||ee.removeEventListener("pointercancel",Cn),(re=r.domElement)==null||re.removeEventListener("wheel",kn),(Ce=r.domElement)==null||Ce.ownerDocument.removeEventListener("pointermove",Qt),(Te=r.domElement)==null||Te.ownerDocument.removeEventListener("pointerup",ct),r._domElementKeyEvents!==null&&r._domElementKeyEvents.removeEventListener("keydown",dt)};const r=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 _=1e-6,w=new f.Spherical,y=new f.Spherical;let C=1;const M=new f.Vector3;let T=!1;const V=new f.Vector2,O=new f.Vector2,z=new f.Vector2,F=new f.Vector2,N=new f.Vector2,I=new f.Vector2,Q=new f.Vector2,$=new f.Vector2,U=new f.Vector2,j=[],X={};function Y(){return 2*Math.PI/60/60*r.autoRotateSpeed}function Z(){return Math.pow(.95,r.zoomSpeed)}function ue(D){r.reverseOrbit?y.theta+=D:y.theta-=D}function _e(D){r.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){r.screenSpacePanning===!0?D.setFromMatrixColumn(re,1):(D.setFromMatrixColumn(re,0),D.crossVectors(r.object.up,D)),D.multiplyScalar(ee),M.add(D)}})(),de=(()=>{const D=new f.Vector3;return function(ee,re){const Ce=r.domElement;if(Ce&&r.object instanceof f.PerspectiveCamera&&r.object.isPerspectiveCamera){const Te=r.object.position;D.copy(Te).sub(r.target);let Tt=D.length();Tt*=Math.tan(r.object.fov/2*Math.PI/180),he(2*ee*Tt/Ce.clientHeight,r.object.matrix),fe(2*re*Tt/Ce.clientHeight,r.object.matrix)}else Ce&&r.object instanceof f.OrthographicCamera&&r.object.isOrthographicCamera?(he(ee*(r.object.right-r.object.left)/r.object.zoom/Ce.clientWidth,r.object.matrix),fe(re*(r.object.top-r.object.bottom)/r.object.zoom/Ce.clientHeight,r.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),r.enablePan=!1)}})();function te(D){r.object instanceof f.PerspectiveCamera&&r.object.isPerspectiveCamera?C/=D:r.object instanceof f.OrthographicCamera&&r.object.isOrthographicCamera?(r.object.zoom=Math.max(r.minZoom,Math.min(r.maxZoom,r.object.zoom*D)),r.object.updateProjectionMatrix(),T=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),r.enableZoom=!1)}function q(D){r.object instanceof f.PerspectiveCamera&&r.object.isPerspectiveCamera?C*=D:r.object instanceof f.OrthographicCamera&&r.object.isOrthographicCamera?(r.object.zoom=Math.max(r.minZoom,Math.min(r.maxZoom,r.object.zoom/D)),r.object.updateProjectionMatrix(),T=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),r.enableZoom=!1)}function Pe(D){V.set(D.clientX,D.clientY)}function ve(D){Q.set(D.clientX,D.clientY)}function ce(D){F.set(D.clientX,D.clientY)}function se(D){O.set(D.clientX,D.clientY),z.subVectors(O,V).multiplyScalar(r.rotateSpeed);const K=r.domElement;K&&(ue(2*Math.PI*z.x/K.clientHeight),_e(2*Math.PI*z.y/K.clientHeight)),V.copy(O),r.update()}function ge(D){$.set(D.clientX,D.clientY),U.subVectors($,Q),U.y>0?te(Z()):U.y<0&&q(Z()),Q.copy($),r.update()}function L(D){N.set(D.clientX,D.clientY),I.subVectors(N,F).multiplyScalar(r.panSpeed),de(I.x,I.y),F.copy(N),r.update()}function pe(D){D.deltaY<0?q(Z()):D.deltaY>0&&te(Z()),r.update()}function De(D){let K=!1;switch(D.code){case r.keys.UP:de(0,r.keyPanSpeed),K=!0;break;case r.keys.BOTTOM:de(0,-r.keyPanSpeed),K=!0;break;case r.keys.LEFT:de(r.keyPanSpeed,0),K=!0;break;case r.keys.RIGHT:de(-r.keyPanSpeed,0),K=!0;break}K&&(D.preventDefault(),r.update())}function Ee(){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)F.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);F.set(D,K)}}function He(){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 yn(){r.enableZoom&&He(),r.enablePan&&ye()}function Ke(){r.enableZoom&&He(),r.enableRotate&&Ee()}function xn(D){if(j.length==1)O.set(D.pageX,D.pageY);else{const ee=wt(D),re=.5*(D.pageX+ee.x),Ce=.5*(D.pageY+ee.y);O.set(re,Ce)}z.subVectors(O,V).multiplyScalar(r.rotateSpeed);const K=r.domElement;K&&(ue(2*Math.PI*z.x/K.clientHeight),_e(2*Math.PI*z.y/K.clientHeight)),V.copy(O)}function qt(D){if(j.length==1)N.set(D.pageX,D.pageY);else{const K=wt(D),ee=.5*(D.pageX+K.x),re=.5*(D.pageY+K.y);N.set(ee,re)}I.subVectors(N,F).multiplyScalar(r.panSpeed),de(I.x,I.y),F.copy(N)}function lt(D){const K=wt(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,r.zoomSpeed)),te(U.y),Q.copy($)}function gt(D){r.enableZoom&<(D),r.enablePan&&qt(D)}function Fe(D){r.enableZoom&<(D),r.enableRotate&&xn(D)}function et(D){var K,ee;r.enabled!==!1&&(j.length===0&&((K=r.domElement)==null||K.ownerDocument.addEventListener("pointermove",Qt),(ee=r.domElement)==null||ee.ownerDocument.addEventListener("pointerup",ct)),An(D),D.pointerType==="touch"?_t(D):Xn(D))}function Qt(D){r.enabled!==!1&&(D.pointerType==="touch"?Mn(D):Pn(D))}function ct(D){var K,ee,re;mt(D),j.length===0&&((K=r.domElement)==null||K.releasePointerCapture(D.pointerId),(ee=r.domElement)==null||ee.ownerDocument.removeEventListener("pointermove",Qt),(re=r.domElement)==null||re.ownerDocument.removeEventListener("pointerup",ct)),r.dispatchEvent(p),d=u.NONE}function Cn(D){mt(D)}function Xn(D){let K;switch(D.button){case 0:K=r.mouseButtons.LEFT;break;case 1:K=r.mouseButtons.MIDDLE;break;case 2:K=r.mouseButtons.RIGHT;break;default:K=-1}switch(K){case f.MOUSE.DOLLY:if(r.enableZoom===!1)return;ve(D),d=u.DOLLY;break;case f.MOUSE.ROTATE:if(D.ctrlKey||D.metaKey||D.shiftKey){if(r.enablePan===!1)return;ce(D),d=u.PAN}else{if(r.enableRotate===!1)return;Pe(D),d=u.ROTATE}break;case f.MOUSE.PAN:if(D.ctrlKey||D.metaKey||D.shiftKey){if(r.enableRotate===!1)return;Pe(D),d=u.ROTATE}else{if(r.enablePan===!1)return;ce(D),d=u.PAN}break;default:d=u.NONE}d!==u.NONE&&r.dispatchEvent(l)}function Pn(D){if(r.enabled!==!1)switch(d){case u.ROTATE:if(r.enableRotate===!1)return;se(D);break;case u.DOLLY:if(r.enableZoom===!1)return;ge(D);break;case u.PAN:if(r.enablePan===!1)return;L(D);break}}function kn(D){r.enabled===!1||r.enableZoom===!1||d!==u.NONE&&d!==u.ROTATE||(D.preventDefault(),r.dispatchEvent(l),pe(D),r.dispatchEvent(p))}function dt(D){r.enabled===!1||r.enablePan===!1||De(D)}function _t(D){switch(pt(D),j.length){case 1:switch(r.touches.ONE){case f.TOUCH.ROTATE:if(r.enableRotate===!1)return;Ee(),d=u.TOUCH_ROTATE;break;case f.TOUCH.PAN:if(r.enablePan===!1)return;ye(),d=u.TOUCH_PAN;break;default:d=u.NONE}break;case 2:switch(r.touches.TWO){case f.TOUCH.DOLLY_PAN:if(r.enableZoom===!1&&r.enablePan===!1)return;yn(),d=u.TOUCH_DOLLY_PAN;break;case f.TOUCH.DOLLY_ROTATE:if(r.enableZoom===!1&&r.enableRotate===!1)return;Ke(),d=u.TOUCH_DOLLY_ROTATE;break;default:d=u.NONE}break;default:d=u.NONE}d!==u.NONE&&r.dispatchEvent(l)}function Mn(D){switch(pt(D),d){case u.TOUCH_ROTATE:if(r.enableRotate===!1)return;xn(D),r.update();break;case u.TOUCH_PAN:if(r.enablePan===!1)return;qt(D),r.update();break;case u.TOUCH_DOLLY_PAN:if(r.enableZoom===!1&&r.enablePan===!1)return;gt(D),r.update();break;case u.TOUCH_DOLLY_ROTATE:if(r.enableZoom===!1&&r.enableRotate===!1)return;Fe(D),r.update();break;default:d=u.NONE}}function Zt(D){r.enabled!==!1&&D.preventDefault()}function An(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 wt(D){const K=D.pointerId===j[0].pointerId?j[1]:j[0];return X[K.pointerId]}n!==void 0&&this.connect(n),this.update()}}class ba extends Ir{constructor(i,n){super(i,n),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 ga extends f.Loader{constructor(i){super(i),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(n){return new Ca(n)}),this.register(function(n){return new Da(n)}),this.register(function(n){return new Ia(n)}),this.register(function(n){return new Ta(n)}),this.register(function(n){return new ka(n)}),this.register(function(n){return new Ma(n)}),this.register(function(n){return new Aa(n)}),this.register(function(n){return new Sa(n)}),this.register(function(n){return new xa(n)}),this.register(function(n){return new La(n)}),this.register(function(n){return new Pa(n)}),this.register(function(n){return new Va(n)}),this.register(function(n){return new wa(n)}),this.register(function(n){return new Ea(n)}),this.register(function(n){return new Oa(n)})}load(i,n,r,o){const l=this;let p;this.resourcePath!==""?p=this.resourcePath:this.path!==""?p=this.path:p=f.LoaderUtils.extractUrlBase(i),this.manager.itemStart(i);const u=function(_){o?o(_):console.error(_),l.manager.itemError(i),l.manager.itemEnd(i)},d=new f.FileLoader(this.manager);d.setPath(this.path),d.setResponseType("arraybuffer"),d.setRequestHeader(this.requestHeader),d.setWithCredentials(this.withCredentials),d.load(i,function(_){try{l.parse(_,p,function(w){n(w),l.manager.itemEnd(i)},u)}catch(w){u(w)}},r,u)}setDRACOLoader(i){return this.dracoLoader=i,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(i){return this.ktx2Loader=i,this}setMeshoptDecoder(i){return this.meshoptDecoder=i,this}register(i){return this.pluginCallbacks.indexOf(i)===-1&&this.pluginCallbacks.push(i),this}unregister(i){return this.pluginCallbacks.indexOf(i)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(i),1),this}parse(i,n,r,o){let l;const p={},u={};if(typeof i=="string")l=JSON.parse(i);else if(i instanceof ArrayBuffer)if(f.LoaderUtils.decodeText(new Uint8Array(i.slice(0,4)))===Tr){try{p[ae.KHR_BINARY_GLTF]=new Ba(i)}catch(w){o&&o(w);return}l=JSON.parse(p[ae.KHR_BINARY_GLTF].content)}else l=JSON.parse(f.LoaderUtils.decodeText(new Uint8Array(i)));else l=i;if(l.asset===void 0||l.asset.version[0]<2){o&&o(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const d=new Qa(l,{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 _=0;_<this.pluginCallbacks.length;_++){const w=this.pluginCallbacks[_](d);u[w.name]=w,p[w.name]=!0}if(l.extensionsUsed)for(let _=0;_<l.extensionsUsed.length;++_){const w=l.extensionsUsed[_],y=l.extensionsRequired||[];switch(w){case ae.KHR_MATERIALS_UNLIT:p[w]=new ya;break;case ae.KHR_DRACO_MESH_COMPRESSION:p[w]=new Na(l,this.dracoLoader);break;case ae.KHR_TEXTURE_TRANSFORM:p[w]=new Fa;break;case ae.KHR_MESH_QUANTIZATION:p[w]=new za;break;default:y.indexOf(w)>=0&&u[w]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+w+'".')}}d.setExtensions(p),d.setPlugins(u),d.parse(r,o)}parseAsync(i,n){const r=this;return new Promise(function(o,l){r.parse(i,n,o,l)})}}function _a(){let b={};return{get:function(i){return b[i]},add:function(i,n){b[i]=n},remove:function(i){delete b[i]},removeAll:function(){b={}}}}const ae={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_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 wa{constructor(i){this.parser=i,this.name=ae.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const i=this.parser,n=this.parser.json.nodes||[];for(let r=0,o=n.length;r<o;r++){const l=n[r];l.extensions&&l.extensions[this.name]&&l.extensions[this.name].light!==void 0&&i._addNodeRef(this.cache,l.extensions[this.name].light)}}_loadLight(i){const n=this.parser,r="light:"+i;let o=n.cache.get(r);if(o)return o;const l=n.json,d=((l.extensions&&l.extensions[this.name]||{}).lights||[])[i];let _;const w=new f.Color(16777215);d.color!==void 0&&w.fromArray(d.color);const y=d.range!==void 0?d.range:0;switch(d.type){case"directional":_=new f.DirectionalLight(w),_.target.position.set(0,0,-1),_.add(_.target);break;case"point":_=new f.PointLight(w),_.distance=y;break;case"spot":_=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,_.angle=d.spot.outerConeAngle,_.penumbra=1-d.spot.innerConeAngle/d.spot.outerConeAngle,_.target.position.set(0,0,-1),_.add(_.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+d.type)}return _.position.set(0,0,0),_.decay=2,It(_,d),d.intensity!==void 0&&(_.intensity=d.intensity),_.name=n.createUniqueName(d.name||"light_"+i),o=Promise.resolve(_),n.cache.add(r,o),o}getDependency(i,n){if(i==="light")return this._loadLight(n)}createNodeAttachment(i){const n=this,r=this.parser,l=r.json.nodes[i],u=(l.extensions&&l.extensions[this.name]||{}).light;return u===void 0?null:this._loadLight(u).then(function(d){return r._getNodeRef(n.cache,u,d)})}}class ya{constructor(){this.name=ae.KHR_MATERIALS_UNLIT}getMaterialType(){return f.MeshBasicMaterial}extendParams(i,n,r){const o=[];i.color=new f.Color(1,1,1),i.opacity=1;const l=n.pbrMetallicRoughness;if(l){if(Array.isArray(l.baseColorFactor)){const p=l.baseColorFactor;i.color.fromArray(p),i.opacity=p[3]}l.baseColorTexture!==void 0&&o.push(r.assignTexture(i,"map",l.baseColorTexture,3001))}return Promise.all(o)}}class xa{constructor(i){this.parser=i,this.name=ae.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(i,n){const o=this.parser.json.materials[i];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=o.extensions[this.name].emissiveStrength;return l!==void 0&&(n.emissiveIntensity=l),Promise.resolve()}}class Ca{constructor(i){this.parser=i,this.name=ae.KHR_MATERIALS_CLEARCOAT}getMaterialType(i){const r=this.parser.json.materials[i];return!r.extensions||!r.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,n){const r=this.parser,o=r.json.materials[i];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[],p=o.extensions[this.name];if(p.clearcoatFactor!==void 0&&(n.clearcoat=p.clearcoatFactor),p.clearcoatTexture!==void 0&&l.push(r.assignTexture(n,"clearcoatMap",p.clearcoatTexture)),p.clearcoatRoughnessFactor!==void 0&&(n.clearcoatRoughness=p.clearcoatRoughnessFactor),p.clearcoatRoughnessTexture!==void 0&&l.push(r.assignTexture(n,"clearcoatRoughnessMap",p.clearcoatRoughnessTexture)),p.clearcoatNormalTexture!==void 0&&(l.push(r.assignTexture(n,"clearcoatNormalMap",p.clearcoatNormalTexture)),p.clearcoatNormalTexture.scale!==void 0)){const u=p.clearcoatNormalTexture.scale;n.clearcoatNormalScale=new f.Vector2(u,u)}return Promise.all(l)}}class Pa{constructor(i){this.parser=i,this.name=ae.KHR_MATERIALS_IRIDESCENCE}getMaterialType(i){const r=this.parser.json.materials[i];return!r.extensions||!r.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,n){const r=this.parser,o=r.json.materials[i];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[],p=o.extensions[this.name];return p.iridescenceFactor!==void 0&&(n.iridescence=p.iridescenceFactor),p.iridescenceTexture!==void 0&&l.push(r.assignTexture(n,"iridescenceMap",p.iridescenceTexture)),p.iridescenceIor!==void 0&&(n.iridescenceIOR=p.iridescenceIor),n.iridescenceThicknessRange===void 0&&(n.iridescenceThicknessRange=[100,400]),p.iridescenceThicknessMinimum!==void 0&&(n.iridescenceThicknessRange[0]=p.iridescenceThicknessMinimum),p.iridescenceThicknessMaximum!==void 0&&(n.iridescenceThicknessRange[1]=p.iridescenceThicknessMaximum),p.iridescenceThicknessTexture!==void 0&&l.push(r.assignTexture(n,"iridescenceThicknessMap",p.iridescenceThicknessTexture)),Promise.all(l)}}class ka{constructor(i){this.parser=i,this.name=ae.KHR_MATERIALS_SHEEN}getMaterialType(i){const r=this.parser.json.materials[i];return!r.extensions||!r.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,n){const r=this.parser,o=r.json.materials[i];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[];n.sheenColor=new f.Color(0,0,0),n.sheenRoughness=0,n.sheen=1;const p=o.extensions[this.name];return p.sheenColorFactor!==void 0&&n.sheenColor.fromArray(p.sheenColorFactor),p.sheenRoughnessFactor!==void 0&&(n.sheenRoughness=p.sheenRoughnessFactor),p.sheenColorTexture!==void 0&&l.push(r.assignTexture(n,"sheenColorMap",p.sheenColorTexture,3001)),p.sheenRoughnessTexture!==void 0&&l.push(r.assignTexture(n,"sheenRoughnessMap",p.sheenRoughnessTexture)),Promise.all(l)}}class Ma{constructor(i){this.parser=i,this.name=ae.KHR_MATERIALS_TRANSMISSION}getMaterialType(i){const r=this.parser.json.materials[i];return!r.extensions||!r.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,n){const r=this.parser,o=r.json.materials[i];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[],p=o.extensions[this.name];return p.transmissionFactor!==void 0&&(n.transmission=p.transmissionFactor),p.transmissionTexture!==void 0&&l.push(r.assignTexture(n,"transmissionMap",p.transmissionTexture)),Promise.all(l)}}class Aa{constructor(i){this.parser=i,this.name=ae.KHR_MATERIALS_VOLUME}getMaterialType(i){const r=this.parser.json.materials[i];return!r.extensions||!r.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,n){const r=this.parser,o=r.json.materials[i];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[],p=o.extensions[this.name];n.thickness=p.thicknessFactor!==void 0?p.thicknessFactor:0,p.thicknessTexture!==void 0&&l.push(r.assignTexture(n,"thicknessMap",p.thicknessTexture)),n.attenuationDistance=p.attenuationDistance||1/0;const u=p.attenuationColor||[1,1,1];return n.attenuationColor=new f.Color(u[0],u[1],u[2]),Promise.all(l)}}class Sa{constructor(i){this.parser=i,this.name=ae.KHR_MATERIALS_IOR}getMaterialType(i){const r=this.parser.json.materials[i];return!r.extensions||!r.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,n){const o=this.parser.json.materials[i];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=o.extensions[this.name];return n.ior=l.ior!==void 0?l.ior:1.5,Promise.resolve()}}class La{constructor(i){this.parser=i,this.name=ae.KHR_MATERIALS_SPECULAR}getMaterialType(i){const r=this.parser.json.materials[i];return!r.extensions||!r.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,n){const r=this.parser,o=r.json.materials[i];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[],p=o.extensions[this.name];n.specularIntensity=p.specularFactor!==void 0?p.specularFactor:1,p.specularTexture!==void 0&&l.push(r.assignTexture(n,"specularIntensityMap",p.specularTexture));const u=p.specularColorFactor||[1,1,1];return n.specularColor=new f.Color(u[0],u[1],u[2]),p.specularColorTexture!==void 0&&l.push(r.assignTexture(n,"specularColorMap",p.specularColorTexture,3001)),Promise.all(l)}}class Va{constructor(i){this.parser=i,this.name=ae.KHR_MATERIALS_ANISOTROPY}getMaterialType(i){const r=this.parser.json.materials[i];return!r.extensions||!r.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,n){const r=this.parser,o=r.json.materials[i];if(!o.extensions||!o.extensions[this.name])return Promise.resolve();const l=[],p=o.extensions[this.name];return p.anisotropyStrength!==void 0&&(n.anisotropy=p.anisotropyStrength),p.anisotropyRotation!==void 0&&(n.anisotropyRotation=p.anisotropyRotation),p.anisotropyTexture!==void 0&&l.push(r.assignTexture(n,"anisotropyMap",p.anisotropyTexture)),Promise.all(l)}}class Da{constructor(i){this.parser=i,this.name=ae.KHR_TEXTURE_BASISU}loadTexture(i){const n=this.parser,r=n.json,o=r.textures[i];if(!o.extensions||!o.extensions[this.name])return null;const l=o.extensions[this.name],p=n.options.ktx2Loader;if(!p){if(r.extensionsRequired&&r.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return n.loadTextureImage(i,l.source,p)}}class Ia{constructor(i){this.parser=i,this.name=ae.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(i){const n=this.name,r=this.parser,o=r.json,l=o.textures[i];if(!l.extensions||!l.extensions[n])return null;const p=l.extensions[n],u=o.images[p.source];let d=r.textureLoader;if(u.uri){const _=r.options.manager.getHandler(u.uri);_!==null&&(d=_)}return this.detectSupport().then(function(_){if(_)return r.loadTextureImage(i,p.source,d);if(o.extensionsRequired&&o.extensionsRequired.indexOf(n)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return r.loadTexture(i)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(i){const n=new Image;n.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",n.onload=n.onerror=function(){i(n.height===1)}})),this.isSupported}}class Ta{constructor(i){this.parser=i,this.name=ae.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(i){const n=this.name,r=this.parser,o=r.json,l=o.textures[i];if(!l.extensions||!l.extensions[n])return null;const p=l.extensions[n],u=o.images[p.source];let d=r.textureLoader;if(u.uri){const _=r.options.manager.getHandler(u.uri);_!==null&&(d=_)}return this.detectSupport().then(function(_){if(_)return r.loadTextureImage(i,p.source,d);if(o.extensionsRequired&&o.extensionsRequired.indexOf(n)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return r.loadTexture(i)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(i){const n=new Image;n.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",n.onload=n.onerror=function(){i(n.height===1)}})),this.isSupported}}class Ea{constructor(i){this.name=ae.EXT_MESHOPT_COMPRESSION,this.parser=i}loadBufferView(i){const n=this.parser.json,r=n.bufferViews[i];if(r.extensions&&r.extensions[this.name]){const o=r.extensions[this.name],l=this.parser.getDependency("buffer",o.buffer),p=this.parser.options.meshoptDecoder;if(!p||!p.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 l.then(function(u){const d=o.byteOffset||0,_=o.byteLength||0,w=o.count,y=o.byteStride,C=new Uint8Array(u,d,_);return p.decodeGltfBufferAsync?p.decodeGltfBufferAsync(w,y,C,o.mode,o.filter).then(function(M){return M.buffer}):p.ready.then(function(){const M=new ArrayBuffer(w*y);return p.decodeGltfBuffer(new Uint8Array(M),w,y,C,o.mode,o.filter),M})})}else return null}}class Oa{constructor(i){this.name=ae.EXT_MESH_GPU_INSTANCING,this.parser=i}createNodeMesh(i){const n=this.parser.json,r=n.nodes[i];if(!r.extensions||!r.extensions[this.name]||r.mesh===void 0)return null;const o=n.meshes[r.mesh];for(const _ of o.primitives)if(_.mode!==Je.TRIANGLES&&_.mode!==Je.TRIANGLE_STRIP&&_.mode!==Je.TRIANGLE_FAN&&_.mode!==void 0)return null;const p=r.extensions[this.name].attributes,u=[],d={};for(const _ in p)u.push(this.parser.getDependency("accessor",p[_]).then(w=>(d[_]=w,d[_])));return u.length<1?null:(u.push(this.parser.createNodeMesh(i)),Promise.all(u).then(_=>{const w=_.pop(),y=w.isGroup?w.children:[w],C=_[0].count,M=[];for(const T of y){const V=new f.Matrix4,O=new f.Vector3,z=new f.Quaternion,F=new f.Vector3(1,1,1),N=new f.InstancedMesh(T.geometry,T.material,C);for(let I=0;I<C;I++)d.TRANSLATION&&O.fromBufferAttribute(d.TRANSLATION,I),d.ROTATION&&z.fromBufferAttribute(d.ROTATION,I),d.SCALE&&F.fromBufferAttribute(d.SCALE,I),N.setMatrixAt(I,V.compose(O,z,F));for(const I in d)I!=="TRANSLATION"&&I!=="ROTATION"&&I!=="SCALE"&&T.geometry.setAttribute(I,d[I]);f.Object3D.prototype.copy.call(N,T),this.parser.assignFinalMaterial(N),M.push(N)}return w.isGroup?(w.clear(),w.add(...M),w):M[0]}))}}const Tr="glTF",$n=12,Er={JSON:1313821514,BIN:5130562};class Ba{constructor(i){this.name=ae.KHR_BINARY_GLTF,this.content=null,this.body=null;const n=new DataView(i,0,$n);if(this.header={magic:f.LoaderUtils.decodeText(new Uint8Array(i.slice(0,4))),version:n.getUint32(4,!0),length:n.getUint32(8,!0)},this.header.magic!==Tr)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const r=this.header.length-$n,o=new DataView(i,$n);let l=0;for(;l<r;){const p=o.getUint32(l,!0);l+=4;const u=o.getUint32(l,!0);if(l+=4,u===Er.JSON){const d=new Uint8Array(i,$n+l,p);this.content=f.LoaderUtils.decodeText(d)}else if(u===Er.BIN){const d=$n+l;this.body=i.slice(d,d+p)}l+=p}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class Na{constructor(i,n){if(!n)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=ae.KHR_DRACO_MESH_COMPRESSION,this.json=i,this.dracoLoader=n,this.dracoLoader.preload()}decodePrimitive(i,n){const r=this.json,o=this.dracoLoader,l=i.extensions[this.name].bufferView,p=i.extensions[this.name].attributes,u={},d={},_={};for(const w in p){const y=ls[w]||w.toLowerCase();u[y]=p[w]}for(const w in i.attributes){const y=ls[w]||w.toLowerCase();if(p[w]!==void 0){const C=r.accessors[i.attributes[w]],M=_n[C.componentType];_[y]=M.name,d[y]=C.normalized===!0}}return n.getDependency("bufferView",l).then(function(w){return new Promise(function(y){o.decodeDracoFile(w,function(C){for(const M in C.attributes){const T=C.attributes[M],V=d[M];V!==void 0&&(T.normalized=V)}y(C)},u,_)})})}}class Fa{constructor(){this.name=ae.KHR_TEXTURE_TRANSFORM}extendTexture(i,n){return(n.texCoord===void 0||n.texCoord===i.channel)&&n.offset===void 0&&n.rotation===void 0&&n.scale===void 0||(i=i.clone(),n.texCoord!==void 0&&(i.channel=n.texCoord),n.offset!==void 0&&i.offset.fromArray(n.offset),n.rotation!==void 0&&(i.rotation=n.rotation),n.scale!==void 0&&i.repeat.fromArray(n.scale),i.needsUpdate=!0),i}}class za{constructor(){this.name=ae.KHR_MESH_QUANTIZATION}}class Or extends f.Interpolant{constructor(i,n,r,o){super(i,n,r,o)}copySampleValue_(i){const n=this.resultBuffer,r=this.sampleValues,o=this.valueSize,l=i*o*3+o;for(let p=0;p!==o;p++)n[p]=r[l+p];return n}interpolate_(i,n,r,o){const l=this.resultBuffer,p=this.sampleValues,u=this.valueSize,d=u*2,_=u*3,w=o-n,y=(r-n)/w,C=y*y,M=C*y,T=i*_,V=T-_,O=-2*M+3*C,z=M-C,F=1-O,N=z-C+y;for(let I=0;I!==u;I++){const Q=p[V+I+u],$=p[V+I+d]*w,U=p[T+I+u],j=p[T+I]*w;l[I]=F*Q+N*$+O*U+z*j}return l}}const ja=new f.Quaternion;class Ua extends Or{interpolate_(i,n,r,o){const l=super.interpolate_(i,n,r,o);return ja.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},Br={9728:f.NearestFilter,9729:f.LinearFilter,9984:f.NearestMipmapNearestFilter,9985:f.LinearMipmapNearestFilter,9986:f.NearestMipmapLinearFilter,9987:f.LinearMipmapLinearFilter},Nr={33071:f.ClampToEdgeWrapping,33648:f.MirroredRepeatWrapping,10497:f.RepeatWrapping},as={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},ls={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"},Ra={CUBICSPLINE:void 0,LINEAR:f.InterpolateLinear,STEP:f.InterpolateDiscrete},cs={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function Ga(b){return b.DefaultMaterial===void 0&&(b.DefaultMaterial=new f.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:f.FrontSide})),b.DefaultMaterial}function Xt(b,i,n){for(const r in n.extensions)b[r]===void 0&&(i.userData.gltfExtensions=i.userData.gltfExtensions||{},i.userData.gltfExtensions[r]=n.extensions[r])}function It(b,i){i.extras!==void 0&&(typeof i.extras=="object"?Object.assign(b.userData,i.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+i.extras))}function Ka(b,i,n){let r=!1,o=!1,l=!1;for(let _=0,w=i.length;_<w;_++){const y=i[_];if(y.POSITION!==void 0&&(r=!0),y.NORMAL!==void 0&&(o=!0),y.COLOR_0!==void 0&&(l=!0),r&&o&&l)break}if(!r&&!o&&!l)return Promise.resolve(b);const p=[],u=[],d=[];for(let _=0,w=i.length;_<w;_++){const y=i[_];if(r){const C=y.POSITION!==void 0?n.getDependency("accessor",y.POSITION):b.attributes.position;p.push(C)}if(o){const C=y.NORMAL!==void 0?n.getDependency("accessor",y.NORMAL):b.attributes.normal;u.push(C)}if(l){const C=y.COLOR_0!==void 0?n.getDependency("accessor",y.COLOR_0):b.attributes.color;d.push(C)}}return Promise.all([Promise.all(p),Promise.all(u),Promise.all(d)]).then(function(_){const w=_[0],y=_[1],C=_[2];return r&&(b.morphAttributes.position=w),o&&(b.morphAttributes.normal=y),l&&(b.morphAttributes.color=C),b.morphTargetsRelative=!0,b})}function $a(b,i){if(b.updateMorphTargets(),i.weights!==void 0)for(let n=0,r=i.weights.length;n<r;n++)b.morphTargetInfluences[n]=i.weights[n];if(i.extras&&Array.isArray(i.extras.targetNames)){const n=i.extras.targetNames;if(b.morphTargetInfluences.length===n.length){b.morphTargetDictionary={};for(let r=0,o=n.length;r<o;r++)b.morphTargetDictionary[n[r]]=r}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function Xa(b){let i;const n=b.extensions&&b.extensions[ae.KHR_DRACO_MESH_COMPRESSION];if(n?i="draco:"+n.bufferView+":"+n.indices+":"+ps(n.attributes):i=b.indices+":"+ps(b.attributes)+":"+b.mode,b.targets!==void 0)for(let r=0,o=b.targets.length;r<o;r++)i+=":"+ps(b.targets[r]);return i}function ps(b){let i="";const n=Object.keys(b).sort();for(let r=0,o=n.length;r<o;r++)i+=n[r]+":"+b[n[r]]+";";return i}function hs(b){switch(b){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function Ya(b){return b.search(/\.jpe?g($|\?)/i)>0||b.search(/^data\:image\/jpeg/)===0?"image/jpeg":b.search(/\.webp($|\?)/i)>0||b.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const qa=new f.Matrix4;class Qa{constructor(i={},n={}){this.json=i,this.extensions={},this.plugins={},this.options=n,this.cache=new _a,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 r=!1,o=!1,l=-1;typeof navigator<"u"&&(r=/^((?!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"||r||o&&l<98?this.textureLoader=new f.TextureLoader(this.options.manager):this.textureLoader=new f.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new f.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(i){this.extensions=i}setPlugins(i){this.plugins=i}parse(i,n){const r=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([r.getDependencies("scene"),r.getDependencies("animation"),r.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:r,userData:{}};Xt(l,u,o),It(u,o),Promise.all(r._invokeAll(function(d){return d.afterRoot&&d.afterRoot(u)})).then(function(){i(u)})}).catch(n)}_markDefs(){const i=this.json.nodes||[],n=this.json.skins||[],r=this.json.meshes||[];for(let o=0,l=n.length;o<l;o++){const p=n[o].joints;for(let u=0,d=p.length;u<d;u++)i[p[u]].isBone=!0}for(let o=0,l=i.length;o<l;o++){const p=i[o];p.mesh!==void 0&&(this._addNodeRef(this.meshCache,p.mesh),p.skin!==void 0&&(r[p.mesh].isSkinnedMesh=!0)),p.camera!==void 0&&this._addNodeRef(this.cameraCache,p.camera)}}_addNodeRef(i,n){n!==void 0&&(i.refs[n]===void 0&&(i.refs[n]=i.uses[n]=0),i.refs[n]++)}_getNodeRef(i,n,r){if(i.refs[n]<=1)return r;const o=r.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(w,u.children[_])};return l(r,o),o.name+="_instance_"+i.uses[n]++,o}_invokeOne(i){const n=Object.values(this.plugins);n.push(this);for(let r=0;r<n.length;r++){const o=i(n[r]);if(o)return o}return null}_invokeAll(i){const n=Object.values(this.plugins);n.unshift(this);const r=[];for(let o=0;o<n.length;o++){const l=i(n[o]);l&&r.push(l)}return r}getDependency(i,n){const r=i+":"+n;let o=this.cache.get(r);if(!o){switch(i){case"scene":o=this.loadScene(n);break;case"node":o=this._invokeOne(function(l){return l.loadNode&&l.loadNode(n)});break;case"mesh":o=this._invokeOne(function(l){return l.loadMesh&&l.loadMesh(n)});break;case"accessor":o=this.loadAccessor(n);break;case"bufferView":o=this._invokeOne(function(l){return l.loadBufferView&&l.loadBufferView(n)});break;case"buffer":o=this.loadBuffer(n);break;case"material":o=this._invokeOne(function(l){return l.loadMaterial&&l.loadMaterial(n)});break;case"texture":o=this._invokeOne(function(l){return l.loadTexture&&l.loadTexture(n)});break;case"skin":o=this.loadSkin(n);break;case"animation":o=this._invokeOne(function(l){return l.loadAnimation&&l.loadAnimation(n)});break;case"camera":o=this.loadCamera(n);break;default:if(o=this._invokeOne(function(l){return l!=this&&l.getDependency&&l.getDependency(i,n)}),!o)throw new Error("Unknown type: "+i);break}this.cache.add(r,o)}return o}getDependencies(i){let n=this.cache.get(i);if(!n){const r=this,o=this.json[i+(i==="mesh"?"es":"s")]||[];n=Promise.all(o.map(function(l,p){return r.getDependency(i,p)})),this.cache.add(i,n)}return n}loadBuffer(i){const n=this.json.buffers[i],r=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&&i===0)return Promise.resolve(this.extensions[ae.KHR_BINARY_GLTF].body);const o=this.options;return new Promise(function(l,p){r.load(f.LoaderUtils.resolveURL(n.uri,o.path),l,void 0,function(){p(new Error('THREE.GLTFLoader: Failed to load buffer "'+n.uri+'".'))})})}loadBufferView(i){const n=this.json.bufferViews[i];return this.getDependency("buffer",n.buffer).then(function(r){const o=n.byteLength||0,l=n.byteOffset||0;return r.slice(l,l+o)})}loadAccessor(i){const n=this,r=this.json,o=this.json.accessors[i];if(o.bufferView===void 0&&o.sparse===void 0){const p=as[o.type],u=_n[o.componentType],d=o.normalized===!0,_=new u(o.count*p);return Promise.resolve(new f.BufferAttribute(_,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=as[o.type],_=_n[o.componentType],w=_.BYTES_PER_ELEMENT,y=w*d,C=o.byteOffset||0,M=o.bufferView!==void 0?r.bufferViews[o.bufferView].byteStride:void 0,T=o.normalized===!0;let V,O;if(M&&M!==y){const z=Math.floor(C/M),F="InterleavedBuffer:"+o.bufferView+":"+o.componentType+":"+z+":"+o.count;let N=n.cache.get(F);N||(V=new _(u,z*M,o.count*M/w),N=new f.InterleavedBuffer(V,M/w),n.cache.add(F,N)),O=new f.InterleavedBufferAttribute(N,d,C%M/w,T)}else u===null?V=new _(o.count*d):V=new _(u,C,o.count*d),O=new f.BufferAttribute(V,d,T);if(o.sparse!==void 0){const z=as.SCALAR,F=_n[o.sparse.indices.componentType],N=o.sparse.indices.byteOffset||0,I=o.sparse.values.byteOffset||0,Q=new F(p[1],N,o.sparse.count*z),$=new _(p[2],I,o.sparse.count*d);u!==null&&(O=new f.BufferAttribute(O.array.slice(),O.itemSize,O.normalized));for(let U=0,j=Q.length;U<j;U++){const X=Q[U];if(O.setX(X,$[U*d]),d>=2&&O.setY(X,$[U*d+1]),d>=3&&O.setZ(X,$[U*d+2]),d>=4&&O.setW(X,$[U*d+3]),d>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return O})}loadTexture(i){const n=this.json,r=this.options,l=n.textures[i].source,p=n.images[l];let u=this.textureLoader;if(p.uri){const d=r.manager.getHandler(p.uri);d!==null&&(u=d)}return this.loadTextureImage(i,l,u)}loadTextureImage(i,n,r){const o=this,l=this.json,p=l.textures[i],u=l.images[n],d=(u.uri||u.bufferView)+":"+p.sampler;if(this.textureCache[d])return this.textureCache[d];const _=this.loadImageSource(n,r).then(function(w){w.flipY=!1,w.name=p.name||u.name||"",w.name===""&&typeof u.uri=="string"&&u.uri.startsWith("data:image/")===!1&&(w.name=u.uri);const C=(l.samplers||{})[p.sampler]||{};return w.magFilter=Br[C.magFilter]||f.LinearFilter,w.minFilter=Br[C.minFilter]||f.LinearMipmapLinearFilter,w.wrapS=Nr[C.wrapS]||f.RepeatWrapping,w.wrapT=Nr[C.wrapT]||f.RepeatWrapping,o.associations.set(w,{textures:i}),w}).catch(function(){return null});return this.textureCache[d]=_,_}loadImageSource(i,n){const r=this,o=this.json,l=this.options;if(this.sourceCache[i]!==void 0)return this.sourceCache[i].then(y=>y.clone());const p=o.images[i],u=self.URL||self.webkitURL;let d=p.uri||"",_=!1;if(p.bufferView!==void 0)d=r.getDependency("bufferView",p.bufferView).then(function(y){_=!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 "+i+" is missing URI and bufferView");const w=Promise.resolve(d).then(function(y){return new Promise(function(C,M){let T=C;n.isImageBitmapLoader===!0&&(T=function(V){const O=new f.Texture(V);O.needsUpdate=!0,C(O)}),n.load(f.LoaderUtils.resolveURL(y,l.path),T,void 0,M)})}).then(function(y){return _===!0&&u.revokeObjectURL(d),y.userData.mimeType=p.mimeType||Ya(p.uri),y}).catch(function(y){throw console.error("THREE.GLTFLoader: Couldn't load texture",d),y});return this.sourceCache[i]=w,w}assignTexture(i,n,r,o){const l=this;return this.getDependency("texture",r.index).then(function(p){if(!p)return null;if(r.texCoord!==void 0&&r.texCoord>0&&(p=p.clone(),p.channel=r.texCoord),l.extensions[ae.KHR_TEXTURE_TRANSFORM]){const u=r.extensions!==void 0?r.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),i[n]=p,p})}assignFinalMaterial(i){const n=i.geometry;let r=i.material;const o=n.attributes.tangent===void 0,l=n.attributes.color!==void 0,p=n.attributes.normal===void 0;if(i.isPoints){const u="PointsMaterial:"+r.uuid;let d=this.cache.get(u);d||(d=new f.PointsMaterial,f.Material.prototype.copy.call(d,r),d.color.copy(r.color),d.map=r.map,d.sizeAttenuation=!1,this.cache.add(u,d)),r=d}else if(i.isLine){const u="LineBasicMaterial:"+r.uuid;let d=this.cache.get(u);d||(d=new f.LineBasicMaterial,f.Material.prototype.copy.call(d,r),d.color.copy(r.color),d.map=r.map,this.cache.add(u,d)),r=d}if(o||l||p){let u="ClonedMaterial:"+r.uuid+":";o&&(u+="derivative-tangents:"),l&&(u+="vertex-colors:"),p&&(u+="flat-shading:");let d=this.cache.get(u);d||(d=r.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(r))),r=d}i.material=r}getMaterialType(){return f.MeshStandardMaterial}loadMaterial(i){const n=this,r=this.json,o=this.extensions,l=r.materials[i];let p;const u={},d=l.extensions||{},_=[];if(d[ae.KHR_MATERIALS_UNLIT]){const y=o[ae.KHR_MATERIALS_UNLIT];p=y.getMaterialType(),_.push(y.extendParams(u,l,n))}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&&_.push(n.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&&(_.push(n.assignTexture(u,"metalnessMap",y.metallicRoughnessTexture)),_.push(n.assignTexture(u,"roughnessMap",y.metallicRoughnessTexture))),p=this._invokeOne(function(C){return C.getMaterialType&&C.getMaterialType(i)}),_.push(Promise.all(this._invokeAll(function(C){return C.extendMaterialParams&&C.extendMaterialParams(i,u)})))}l.doubleSided===!0&&(u.side=f.DoubleSide);const w=l.alphaMode||cs.OPAQUE;if(w===cs.BLEND?(u.transparent=!0,u.depthWrite=!1):(u.transparent=!1,w===cs.MASK&&(u.alphaTest=l.alphaCutoff!==void 0?l.alphaCutoff:.5)),l.normalTexture!==void 0&&p!==f.MeshBasicMaterial&&(_.push(n.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&&(_.push(n.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&&_.push(n.assignTexture(u,"emissiveMap",l.emissiveTexture,3001)),Promise.all(_).then(function(){const y=new p(u);return l.name&&(y.name=l.name),It(y,l),n.associations.set(y,{materials:i}),l.extensions&&Xt(o,y,l),y})}createUniqueName(i){const n=f.PropertyBinding.sanitizeNodeName(i||"");return n in this.nodeNamesUsed?n+"_"+ ++this.nodeNamesUsed[n]:(this.nodeNamesUsed[n]=0,n)}loadGeometries(i){const n=this,r=this.extensions,o=this.primitiveCache;function l(u){return r[ae.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(u,n).then(function(d){return Fr(d,u,n)})}const p=[];for(let u=0,d=i.length;u<d;u++){const _=i[u],w=Xa(_),y=o[w];if(y)p.push(y.promise);else{let C;_.extensions&&_.extensions[ae.KHR_DRACO_MESH_COMPRESSION]?C=l(_):C=Fr(new f.BufferGeometry,_,n),o[w]={primitive:_,promise:C},p.push(C)}}return Promise.all(p)}loadMesh(i){const n=this,r=this.json,o=this.extensions,l=r.meshes[i],p=l.primitives,u=[];for(let d=0,_=p.length;d<_;d++){const w=p[d].material===void 0?Ga(this.cache):this.getDependency("material",p[d].material);u.push(w)}return u.push(n.loadGeometries(p)),Promise.all(u).then(function(d){const _=d.slice(0,d.length-1),w=d[d.length-1],y=[];for(let M=0,T=w.length;M<T;M++){const V=w[M],O=p[M];let z;const F=_[M];if(O.mode===Je.TRIANGLES||O.mode===Je.TRIANGLE_STRIP||O.mode===Je.TRIANGLE_FAN||O.mode===void 0)z=l.isSkinnedMesh===!0?new f.SkinnedMesh(V,F):new f.Mesh(V,F),z.isSkinnedMesh===!0&&z.normalizeSkinWeights(),O.mode===Je.TRIANGLE_STRIP?z.geometry=Cr(z.geometry,f.TriangleStripDrawMode):O.mode===Je.TRIANGLE_FAN&&(z.geometry=Cr(z.geometry,f.TriangleFanDrawMode));else if(O.mode===Je.LINES)z=new f.LineSegments(V,F);else if(O.mode===Je.LINE_STRIP)z=new f.Line(V,F);else if(O.mode===Je.LINE_LOOP)z=new f.LineLoop(V,F);else if(O.mode===Je.POINTS)z=new f.Points(V,F);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+O.mode);Object.keys(z.geometry.morphAttributes).length>0&&$a(z,l),z.name=n.createUniqueName(l.name||"mesh_"+i),It(z,l),O.extensions&&Xt(o,z,O),n.assignFinalMaterial(z),y.push(z)}for(let M=0,T=y.length;M<T;M++)n.associations.set(y[M],{meshes:i,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),n.associations.set(C,{meshes:i});for(let M=0,T=y.length;M<T;M++)C.add(y[M]);return C})}loadCamera(i){let n;const r=this.json.cameras[i],o=r[r.type];if(!o){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return r.type==="perspective"?n=new f.PerspectiveCamera(f.MathUtils.radToDeg(o.yfov),o.aspectRatio||1,o.znear||1,o.zfar||2e6):r.type==="orthographic"&&(n=new f.OrthographicCamera(-o.xmag,o.xmag,o.ymag,-o.ymag,o.znear,o.zfar)),r.name&&(n.name=this.createUniqueName(r.name)),It(n,r),Promise.resolve(n)}loadSkin(i){const n=this.json.skins[i],r=[];for(let o=0,l=n.joints.length;o<l;o++)r.push(this._loadNodeShallow(n.joints[o]));return n.inverseBindMatrices!==void 0?r.push(this.getDependency("accessor",n.inverseBindMatrices)):r.push(null),Promise.all(r).then(function(o){const l=o.pop(),p=o,u=[],d=[];for(let _=0,w=p.length;_<w;_++){const y=p[_];if(y){u.push(y);const C=new f.Matrix4;l!==null&&C.fromArray(l.array,_*16),d.push(C)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',n.joints[_])}return new f.Skeleton(u,d)})}loadAnimation(i){const r=this.json.animations[i],o=r.name?r.name:"animation_"+i,l=[],p=[],u=[],d=[],_=[];for(let w=0,y=r.channels.length;w<y;w++){const C=r.channels[w],M=r.samplers[C.sampler],T=C.target,V=T.node,O=r.parameters!==void 0?r.parameters[M.input]:M.input,z=r.parameters!==void 0?r.parameters[M.output]:M.output;T.node!==void 0&&(l.push(this.getDependency("node",V)),p.push(this.getDependency("accessor",O)),u.push(this.getDependency("accessor",z)),d.push(M),_.push(T))}return Promise.all([Promise.all(l),Promise.all(p),Promise.all(u),Promise.all(d),Promise.all(_)]).then(function(w){const y=w[0],C=w[1],M=w[2],T=w[3],V=w[4],O=[];for(let z=0,F=y.length;z<F;z++){const N=y[z],I=C[z],Q=M[z],$=T[z],U=V[z];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?Ra[$.interpolation]:f.InterpolateLinear,Z=[];Dt[U.path]===Dt.weights?N.traverse(function(_e){_e.morphTargetInfluences&&Z.push(_e.name?_e.name:_e.uuid)}):Z.push(X);let ue=Q.array;if(Q.normalized){const _e=hs(ue.constructor),he=new Float32Array(ue.length);for(let fe=0,de=ue.length;fe<de;fe++)he[fe]=ue[fe]*_e;ue=he}for(let _e=0,he=Z.length;_e<he;_e++){const fe=new j(Z[_e]+"."+Dt[U.path],I.array,ue,Y);$.interpolation==="CUBICSPLINE"&&(fe.createInterpolant=function(te){const q=this instanceof f.QuaternionKeyframeTrack?Ua:Or;return new q(this.times,this.values,this.getValueSize()/3,te)},fe.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0),O.push(fe)}}return new f.AnimationClip(o,void 0,O)})}createNodeMesh(i){const n=this.json,r=this,o=n.nodes[i];return o.mesh===void 0?null:r.getDependency("mesh",o.mesh).then(function(l){const p=r._getNodeRef(r.meshCache,o.mesh,l);return o.weights!==void 0&&p.traverse(function(u){if(u.isMesh)for(let d=0,_=o.weights.length;d<_;d++)u.morphTargetInfluences[d]=o.weights[d]}),p})}loadNode(i){const n=this.json,r=this,o=n.nodes[i],l=r._loadNodeShallow(i),p=[],u=o.children||[];for(let _=0,w=u.length;_<w;_++)p.push(r.getDependency("node",u[_]));const d=o.skin===void 0?Promise.resolve(null):r.getDependency("skin",o.skin);return Promise.all([l,Promise.all(p),d]).then(function(_){const w=_[0],y=_[1],C=_[2];C!==null&&w.traverse(function(M){M.isSkinnedMesh&&M.bind(C,qa)});for(let M=0,T=y.length;M<T;M++)w.add(y[M]);return w})}_loadNodeShallow(i){const n=this.json,r=this.extensions,o=this;if(this.nodeCache[i]!==void 0)return this.nodeCache[i];const l=n.nodes[i],p=l.name?o.createUniqueName(l.name):"",u=[],d=o._invokeOne(function(_){return _.createNodeMesh&&_.createNodeMesh(i)});return d&&u.push(d),l.camera!==void 0&&u.push(o.getDependency("camera",l.camera).then(function(_){return o._getNodeRef(o.cameraCache,l.camera,_)})),o._invokeAll(function(_){return _.createNodeAttachment&&_.createNodeAttachment(i)}).forEach(function(_){u.push(_)}),this.nodeCache[i]=Promise.all(u).then(function(_){let w;if(l.isBone===!0?w=new f.Bone:_.length>1?w=new f.Group:_.length===1?w=_[0]:w=new f.Object3D,w!==_[0])for(let y=0,C=_.length;y<C;y++)w.add(_[y]);if(l.name&&(w.userData.name=l.name,w.name=p),It(w,l),l.extensions&&Xt(r,w,l),l.matrix!==void 0){const y=new f.Matrix4;y.fromArray(l.matrix),w.applyMatrix4(y)}else l.translation!==void 0&&w.position.fromArray(l.translation),l.rotation!==void 0&&w.quaternion.fromArray(l.rotation),l.scale!==void 0&&w.scale.fromArray(l.scale);return o.associations.has(w)||o.associations.set(w,{}),o.associations.get(w).nodes=i,w}),this.nodeCache[i]}loadScene(i){const n=this.extensions,r=this.json.scenes[i],o=this,l=new f.Group;r.name&&(l.name=o.createUniqueName(r.name)),It(l,r),r.extensions&&Xt(n,l,r);const p=r.nodes||[],u=[];for(let d=0,_=p.length;d<_;d++)u.push(o.getDependency("node",p[d]));return Promise.all(u).then(function(d){for(let w=0,y=d.length;w<y;w++)l.add(d[w]);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 w.traverse(C=>{const M=o.associations.get(C);M!=null&&y.set(C,M)}),y};return o.associations=_(l),l})}}function Za(b,i,n){const r=i.attributes,o=new f.Box3;if(r.POSITION!==void 0){const u=n.json.accessors[r.POSITION],d=u.min,_=u.max;if(d!==void 0&&_!==void 0){if(o.set(new f.Vector3(d[0],d[1],d[2]),new f.Vector3(_[0],_[1],_[2])),u.normalized){const w=hs(_n[u.componentType]);o.min.multiplyScalar(w),o.max.multiplyScalar(w)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const l=i.targets;if(l!==void 0){const u=new f.Vector3,d=new f.Vector3;for(let _=0,w=l.length;_<w;_++){const y=l[_];if(y.POSITION!==void 0){const C=n.json.accessors[y.POSITION],M=C.min,T=C.max;if(M!==void 0&&T!==void 0){if(d.setX(Math.max(Math.abs(M[0]),Math.abs(T[0]))),d.setY(Math.max(Math.abs(M[1]),Math.abs(T[1]))),d.setZ(Math.max(Math.abs(M[2]),Math.abs(T[2]))),C.normalized){const V=hs(_n[C.componentType]);d.multiplyScalar(V)}u.max(d)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}o.expandByVector(u)}b.boundingBox=o;const p=new f.Sphere;o.getCenter(p.center),p.radius=o.min.distanceTo(o.max)/2,b.boundingSphere=p}function Fr(b,i,n){const r=i.attributes,o=[];function l(p,u){return n.getDependency("accessor",p).then(function(d){b.setAttribute(u,d)})}for(const p in r){const u=ls[p]||p.toLowerCase();u in b.attributes||o.push(l(r[p],u))}if(i.indices!==void 0&&!b.index){const p=n.getDependency("accessor",i.indices).then(function(u){b.setIndex(u)});o.push(p)}return It(b,i),Za(b,i,n),Promise.all(o).then(function(){return i.targets!==void 0?Ka(b,i.targets,n):b})}class zr extends f.ExtrudeGeometry{constructor(i,n={}){const{bevelEnabled:r=!1,bevelSize:o=8,bevelThickness:l=10,font:p,height:u=50,size:d=100,lineHeight:_=1,letterSpacing:w=0,...y}=n;if(p===void 0)super();else{const C=p.generateShapes(i,d,{lineHeight:_,letterSpacing:w});super(C,{...y,bevelEnabled:r,bevelSize:o,bevelThickness:l,depth:u})}this.type="TextGeometry"}}const Wa={uniforms:{tDiffuse:{value:null},h:{value:1/512}},vertexShader:`
|
|
8
|
+
(function(Z,g){typeof exports=="object"&&typeof module<"u"?g(exports,require("vue"),require("three"),require("@tresjs/core")):typeof define=="function"&&define.amd?define(["exports","vue","three","@tresjs/core"],g):(Z=typeof globalThis<"u"?globalThis:Z||self,g(Z.trescientos={},Z.Vue,Z.Three,Z.TresjsCore))})(this,function(Z,g,f,Te){"use strict";var _h=Object.defineProperty;var wh=(Z,g,f)=>g in Z?_h(Z,g,{enumerable:!0,configurable:!0,writable:!0,value:f}):Z[g]=f;var Ar=(Z,g,f)=>(wh(Z,typeof g!="symbol"?g+"":g,f),f);function Wo(v,n){for(var i=0;i<n.length;i++){const r=n[i];if(typeof r!="string"&&!Array.isArray(r)){for(const o in r)if(o!=="default"&&!(o in v)){const l=Object.getOwnPropertyDescriptor(r,o);l&&Object.defineProperty(v,o,l.get?l:{enumerable:!0,get:()=>r[o]})}}}return Object.freeze(Object.defineProperty(v,Symbol.toStringTag,{value:"Module"}))}function Sr(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=[],h=v.getAttribute("position");if(h!==void 0){for(let d=0;d<h.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 r=i.count-2,o=[];if(i)if(n===f.TriangleFanDrawMode)for(let p=1;p<=r;p++)o.push(i.getX(0)),o.push(i.getX(p)),o.push(i.getX(p+1));else for(let p=0;p<r;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!==r&&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 Je=Uint8Array,Vt=Uint16Array,os=Uint32Array,Lr=new Je([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]),Vr=new Je([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]),Zo=new Je([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Dr=function(v,n){for(var i=new Vt(31),r=0;r<31;++r)i[r]=n+=1<<v[r-1];for(var o=new os(i[30]),r=1;r<30;++r)for(var l=i[r];l<i[r+1];++l)o[l]=l-i[r]<<5|r;return[i,o]},Ir=Dr(Lr,2),Tr=Ir[0],Jo=Ir[1];Tr[28]=258,Jo[258]=28;for(var Ho=Dr(Vr,0),ea=Ho[0],as=new Vt(32768),xe=0;xe<32768;++xe){var Dt=(xe&43690)>>>1|(xe&21845)<<1;Dt=(Dt&52428)>>>2|(Dt&13107)<<2,Dt=(Dt&61680)>>>4|(Dt&3855)<<4,as[xe]=((Dt&65280)>>>8|(Dt&255)<<8)>>>1}for(var Yn=function(v,n,i){for(var r=v.length,o=0,l=new Vt(n);o<r;++o)++l[v[o]-1];var p=new Vt(n);for(o=0;o<n;++o)p[o]=p[o-1]+l[o-1]<<1;var h;if(i){h=new Vt(1<<n);var d=15-n;for(o=0;o<r;++o)if(v[o])for(var y=o<<4|v[o],x=n-v[o],w=p[v[o]-1]++<<x,C=w|(1<<x)-1;w<=C;++w)h[as[w]>>>d]=y}else for(h=new Vt(r),o=0;o<r;++o)v[o]&&(h[o]=as[p[v[o]-1]++]>>>15-v[o]);return h},qn=new Je(288),xe=0;xe<144;++xe)qn[xe]=8;for(var xe=144;xe<256;++xe)qn[xe]=9;for(var xe=256;xe<280;++xe)qn[xe]=7;for(var xe=280;xe<288;++xe)qn[xe]=8;for(var Er=new Je(32),xe=0;xe<32;++xe)Er[xe]=5;var ta=Yn(qn,9,1),na=Yn(Er,5,1),ls=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 r=n/8|0;return(v[r]|v[r+1]<<8)>>(n&7)&i},cs=function(v,n){var i=n/8|0;return(v[i]|v[i+1]<<8|v[i+2]<<16)>>(n&7)},ia=function(v){return(v/8|0)+(v&7&&1)},sa=function(v,n,i){(n==null||n<0)&&(n=0),(i==null||i>v.length)&&(i=v.length);var r=new(v instanceof Vt?Vt:v instanceof os?os:Je)(i-n);return r.set(v.subarray(n,i)),r},ra=function(v,n,i){var r=v.length;if(!r||i&&!i.l&&r<5)return n||new Je(0);var o=!n||i,l=!i||i.i;i||(i={}),n||(n=new Je(r*3));var p=function(Ie){var Be=n.length;if(Ie>Be){var ye=new Je(Math.max(Be*2,Ie));ye.set(n),n=ye}},h=i.f||0,d=i.p||0,y=i.b||0,x=i.l,w=i.d,C=i.m,M=i.n,E=r*8;do{if(!x){i.f=h=at(v,d,1);var A=at(v,d+1,3);if(d+=3,A)if(A==1)x=ta,w=na,C=9,M=5;else if(A==2){var N=at(v,d,31)+257,I=at(v,d+10,15)+4,O=N+at(v,d+5,31)+1;d+=14;for(var F=new Je(O),G=new Je(19),B=0;B<I;++B)G[Zo[B]]=at(v,d+B*3,7);d+=I*3;for(var K=ls(G),$=(1<<K)-1,q=Yn(G,K,1),B=0;B<O;){var se=q[at(v,d,$)];d+=se&15;var L=se>>>4;if(L<16)F[B++]=L;else{var he=0,ie=0;for(L==16?(ie=3+at(v,d,3),d+=2,he=F[B-1]):L==17?(ie=3+at(v,d,7),d+=3):L==18&&(ie=11+at(v,d,127),d+=7);ie--;)F[B++]=he}}var fe=F.subarray(0,N),pe=F.subarray(N);C=ls(fe),M=ls(pe),x=Yn(fe,C,1),w=Yn(pe,M,1)}else throw"invalid block type";else{var L=ia(d)+4,z=v[L-4]|v[L-3]<<8,R=L+z;if(R>r){if(l)throw"unexpected EOF";break}o&&p(y+z),n.set(v.subarray(L,R),y),i.b=y+=z,i.p=d=R*8;continue}if(d>E){if(l)throw"unexpected EOF";break}}o&&p(y+131072);for(var te=(1<<C)-1,W=(1<<M)-1,Pe=d;;Pe=d){var he=x[cs(v,d)&te],be=he>>>4;if(d+=he&15,d>E){if(l)throw"unexpected EOF";break}if(!he)throw"invalid length/literal";if(be<256)n[y++]=be;else if(be==256){Pe=d,x=null;break}else{var de=be-254;if(be>264){var B=be-257,oe=Lr[B];de=at(v,d,(1<<oe)-1)+Tr[B],d+=oe}var _e=w[cs(v,d)&W],D=_e>>>4;if(!_e)throw"invalid distance";d+=_e&15;var pe=ea[D];if(D>3){var oe=Vr[D];pe+=cs(v,d)&(1<<oe)-1,d+=oe}if(d>E){if(l)throw"unexpected EOF";break}o&&p(y+131072);for(var me=y+de;y<me;y+=4)n[y]=n[y-pe],n[y+1]=n[y+1-pe],n[y+2]=n[y+2-pe],n[y+3]=n[y+3-pe];y=me}}i.l=x,i.p=Pe,i.b=y,x&&(h=1,i.m=C,i.d=w,i.n=M)}while(!h);return y==n.length?n:sa(n,0,y)},oa=new Je(0),aa=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 la(v,n){return ra((aa(v),v.subarray(2,-4)),n)}var ca=typeof TextDecoder<"u"&&new TextDecoder,pa=0;try{ca.decode(oa,{stream:!0}),pa=1}catch{}var ua=Object.defineProperty,ha=(v,n,i)=>n in v?ua(v,n,{enumerable:!0,configurable:!0,writable:!0,value:i}):v[n]=i,U=(v,n,i)=>(ha(v,typeof n!="symbol"?n+"":n,i),i);class da extends f.Object3D{constructor(n,i){super(),U(this,"isTransformControls",!0),U(this,"visible",!1),U(this,"domElement"),U(this,"raycaster",new f.Raycaster),U(this,"gizmo"),U(this,"plane"),U(this,"tempVector",new f.Vector3),U(this,"tempVector2",new f.Vector3),U(this,"tempQuaternion",new f.Quaternion),U(this,"unit",{X:new f.Vector3(1,0,0),Y:new f.Vector3(0,1,0),Z:new f.Vector3(0,0,1)}),U(this,"pointStart",new f.Vector3),U(this,"pointEnd",new f.Vector3),U(this,"offset",new f.Vector3),U(this,"rotationAxis",new f.Vector3),U(this,"startNorm",new f.Vector3),U(this,"endNorm",new f.Vector3),U(this,"rotationAngle",0),U(this,"cameraPosition",new f.Vector3),U(this,"cameraQuaternion",new f.Quaternion),U(this,"cameraScale",new f.Vector3),U(this,"parentPosition",new f.Vector3),U(this,"parentQuaternion",new f.Quaternion),U(this,"parentQuaternionInv",new f.Quaternion),U(this,"parentScale",new f.Vector3),U(this,"worldPositionStart",new f.Vector3),U(this,"worldQuaternionStart",new f.Quaternion),U(this,"worldScaleStart",new f.Vector3),U(this,"worldPosition",new f.Vector3),U(this,"worldQuaternion",new f.Quaternion),U(this,"worldQuaternionInv",new f.Quaternion),U(this,"worldScale",new f.Vector3),U(this,"eye",new f.Vector3),U(this,"positionStart",new f.Vector3),U(this,"quaternionStart",new f.Quaternion),U(this,"scaleStart",new f.Vector3),U(this,"camera"),U(this,"object"),U(this,"enabled",!0),U(this,"axis",null),U(this,"mode","translate"),U(this,"translationSnap",null),U(this,"rotationSnap",null),U(this,"scaleSnap",null),U(this,"space","world"),U(this,"size",1),U(this,"dragging",!1),U(this,"showX",!0),U(this,"showY",!0),U(this,"showZ",!0),U(this,"changeEvent",{type:"change"}),U(this,"mouseDownEvent",{type:"mouseDown",mode:this.mode}),U(this,"mouseUpEvent",{type:"mouseUp",mode:this.mode}),U(this,"objectChangeEvent",{type:"objectChange"}),U(this,"intersectObjectWithRay",(o,l,p)=>{const h=l.intersectObject(o,!0);for(let d=0;d<h.length;d++)if(h[d].object.visible||p)return h[d];return!1}),U(this,"attach",o=>(this.object=o,this.visible=!0,this)),U(this,"detach",()=>(this.object=void 0,this.visible=!1,this.axis=null,this)),U(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),U(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()}),U(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}),U(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 h=this.rotationSnap;this.axis==="X"&&h&&(this.object.rotation.x=Math.round(this.object.rotation.x/h)*h),this.axis==="Y"&&h&&(this.object.rotation.y=Math.round(this.object.rotation.y/h)*h),this.axis==="Z"&&h&&(this.object.rotation.z=Math.round(this.object.rotation.z/h)*h)}this.object.updateMatrixWorld(),this.object.parent&&this.object.parent.updateMatrixWorld(),this.positionStart.copy(this.object.position),this.quaternionStart.copy(this.object.quaternion),this.scaleStart.copy(this.object.scale),this.object.matrixWorld.decompose(this.worldPositionStart,this.worldQuaternionStart,this.worldScaleStart),this.pointStart.copy(l.point).sub(this.worldPositionStart)}this.dragging=!0,this.mouseDownEvent.mode=this.mode,this.dispatchEvent(this.mouseDownEvent)}}),U(this,"pointerMove",o=>{const l=this.axis,p=this.mode,h=this.object;let d=this.space;if(p==="scale"?d="local":(l==="E"||l==="XYZE"||l==="XYZ")&&(d="world"),h===void 0||l===null||this.dragging===!1||o.button!==-1)return;this.raycaster.setFromCamera(o,this.camera);const y=this.intersectObjectWithRay(this.plane,this.raycaster,!0);if(y){if(this.pointEnd.copy(y.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),h.position.copy(this.offset).add(this.positionStart),this.translationSnap&&(d==="local"&&(h.position.applyQuaternion(this.tempQuaternion.copy(this.quaternionStart).invert()),l.search("X")!==-1&&(h.position.x=Math.round(h.position.x/this.translationSnap)*this.translationSnap),l.search("Y")!==-1&&(h.position.y=Math.round(h.position.y/this.translationSnap)*this.translationSnap),l.search("Z")!==-1&&(h.position.z=Math.round(h.position.z/this.translationSnap)*this.translationSnap),h.position.applyQuaternion(this.quaternionStart)),d==="world"&&(h.parent&&h.position.add(this.tempVector.setFromMatrixPosition(h.parent.matrixWorld)),l.search("X")!==-1&&(h.position.x=Math.round(h.position.x/this.translationSnap)*this.translationSnap),l.search("Y")!==-1&&(h.position.y=Math.round(h.position.y/this.translationSnap)*this.translationSnap),l.search("Z")!==-1&&(h.position.z=Math.round(h.position.z/this.translationSnap)*this.translationSnap),h.parent&&h.position.sub(this.tempVector.setFromMatrixPosition(h.parent.matrixWorld))));else if(p==="scale"){if(l.search("XYZ")!==-1){let x=this.pointEnd.length()/this.pointStart.length();this.pointEnd.dot(this.pointStart)<0&&(x*=-1),this.tempVector2.set(x,x,x)}else this.tempVector.copy(this.pointStart),this.tempVector2.copy(this.pointEnd),this.tempVector.applyQuaternion(this.worldQuaternionInv),this.tempVector2.applyQuaternion(this.worldQuaternionInv),this.tempVector2.divide(this.tempVector),l.search("X")===-1&&(this.tempVector2.x=1),l.search("Y")===-1&&(this.tempVector2.y=1),l.search("Z")===-1&&(this.tempVector2.z=1);h.scale.copy(this.scaleStart).multiply(this.tempVector2),this.scaleSnap&&this.object&&(l.search("X")!==-1&&(this.object.scale.x=Math.round(h.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap),l.search("Y")!==-1&&(h.scale.y=Math.round(h.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap),l.search("Z")!==-1&&(h.scale.z=Math.round(h.scale.z/this.scaleSnap)*this.scaleSnap||this.scaleSnap))}else if(p==="rotate"){this.offset.copy(this.pointEnd).sub(this.pointStart);const x=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))*x):(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())*x),this.rotationSnap&&(this.rotationAngle=Math.round(this.rotationAngle/this.rotationSnap)*this.rotationSnap),d==="local"&&l!=="E"&&l!=="XYZE"?(h.quaternion.copy(this.quaternionStart),h.quaternion.multiply(this.tempQuaternion.setFromAxisAngle(this.rotationAxis,this.rotationAngle)).normalize()):(this.rotationAxis.applyQuaternion(this.parentQuaternionInv),h.quaternion.copy(this.tempQuaternion.setFromAxisAngle(this.rotationAxis,this.rotationAngle)),h.quaternion.multiply(this.quaternionStart).normalize())}this.dispatchEvent(this.changeEvent),this.dispatchEvent(this.objectChangeEvent)}}),U(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)}),U(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 h=o.changedTouches?o.changedTouches[0]:o,d=(p=this.domElement)==null?void 0:p.getBoundingClientRect();return{x:(h.clientX-d.left)/d.width*2-1,y:-(h.clientY-d.top)/d.height*2+1,button:o.button}}}),U(this,"onPointerHover",o=>{if(this.enabled)switch(o.pointerType){case"mouse":case"pen":this.pointerHover(this.getPointer(o));break}}),U(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)))}),U(this,"onPointerMove",o=>{this.enabled&&this.pointerMove(this.getPointer(o))}),U(this,"onPointerUp",o=>{!this.enabled||!this.domElement||(this.domElement.style.touchAction="",this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.pointerUp(this.getPointer(o)))}),U(this,"getMode",()=>this.mode),U(this,"setMode",o=>{this.mode=o}),U(this,"setTranslationSnap",o=>{this.translationSnap=o}),U(this,"setRotationSnap",o=>{this.rotationSnap=o}),U(this,"setScaleSnap",o=>{this.scaleSnap=o}),U(this,"setSize",o=>{this.size=o}),U(this,"setSpace",o=>{this.space=o}),U(this,"update",()=>{console.warn("THREE.TransformControls: update function has no more functionality and therefore has been deprecated.")}),U(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)}),U(this,"dispose",()=>{var o,l,p,h,d,y;(o=this.domElement)==null||o.removeEventListener("pointerdown",this.onPointerDown),(l=this.domElement)==null||l.removeEventListener("pointermove",this.onPointerHover),(h=(p=this.domElement)==null?void 0:p.ownerDocument)==null||h.removeEventListener("pointermove",this.onPointerMove),(y=(d=this.domElement)==null?void 0:d.ownerDocument)==null||y.removeEventListener("pointerup",this.onPointerUp),this.traverse(x=>{const w=x;w.geometry&&w.geometry.dispose(),w.material&&w.material.dispose()})}),this.domElement=i,this.camera=n,this.gizmo=new ma,this.add(this.gizmo),this.plane=new fa,this.add(this.plane);const r=(o,l)=>{let p=l;Object.defineProperty(this,o,{get:function(){return p!==void 0?p:l},set:function(h){p!==h&&(p=h,this.plane[o]=h,this.gizmo[o]=h,this.dispatchEvent({type:o+"-changed",value:h}),this.dispatchEvent(this.changeEvent))}}),this[o]=l,this.plane[o]=l,this.gizmo[o]=l};r("camera",this.camera),r("object",this.object),r("enabled",this.enabled),r("axis",this.axis),r("mode",this.mode),r("translationSnap",this.translationSnap),r("rotationSnap",this.rotationSnap),r("scaleSnap",this.scaleSnap),r("space",this.space),r("size",this.size),r("dragging",this.dragging),r("showX",this.showX),r("showY",this.showY),r("showZ",this.showZ),r("worldPosition",this.worldPosition),r("worldPositionStart",this.worldPositionStart),r("worldQuaternion",this.worldQuaternion),r("worldQuaternionStart",this.worldQuaternionStart),r("cameraPosition",this.cameraPosition),r("cameraQuaternion",this.cameraQuaternion),r("pointStart",this.pointStart),r("pointEnd",this.pointEnd),r("rotationAxis",this.rotationAxis),r("rotationAngle",this.rotationAngle),r("eye",this.eye),i!==void 0&&this.connect(i)}}class ma extends f.Object3D{constructor(){super(),U(this,"isTransformControlsGizmo",!0),U(this,"type","TransformControlsGizmo"),U(this,"tempVector",new f.Vector3(0,0,0)),U(this,"tempEuler",new f.Euler),U(this,"alignVector",new f.Vector3(0,1,0)),U(this,"zeroVector",new f.Vector3(0,0,0)),U(this,"lookAtMatrix",new f.Matrix4),U(this,"tempQuaternion",new f.Quaternion),U(this,"tempQuaternion2",new f.Quaternion),U(this,"identityQuaternion",new f.Quaternion),U(this,"unitX",new f.Vector3(1,0,0)),U(this,"unitY",new f.Vector3(0,1,0)),U(this,"unitZ",new f.Vector3(0,0,1)),U(this,"gizmo"),U(this,"picker"),U(this,"helper"),U(this,"rotationAxis",new f.Vector3),U(this,"cameraPosition",new f.Vector3),U(this,"worldPositionStart",new f.Vector3),U(this,"worldQuaternionStart",new f.Quaternion),U(this,"worldPosition",new f.Vector3),U(this,"worldQuaternion",new f.Quaternion),U(this,"eye",new f.Vector3),U(this,"camera",null),U(this,"enabled",!0),U(this,"axis",null),U(this,"mode","translate"),U(this,"space","world"),U(this,"size",1),U(this,"dragging",!1),U(this,"showX",!0),U(this,"showY",!0),U(this,"showZ",!0),U(this,"updateMatrixWorld",()=>{let be=this.space;this.mode==="scale"&&(be="local");const de=be==="local"?this.worldQuaternion:this.identityQuaternion;this.gizmo.translate.visible=this.mode==="translate",this.gizmo.rotate.visible=this.mode==="rotate",this.gizmo.scale.visible=this.mode==="scale",this.helper.translate.visible=this.mode==="translate",this.helper.rotate.visible=this.mode==="rotate",this.helper.scale.visible=this.mode==="scale";let oe=[];oe=oe.concat(this.picker[this.mode].children),oe=oe.concat(this.gizmo[this.mode].children),oe=oe.concat(this.helper[this.mode].children);for(let _e=0;_e<oe.length;_e++){const D=oe[_e];D.visible=!0,D.rotation.set(0,0,0),D.position.copy(this.worldPosition);let me;if(this.camera.isOrthographicCamera?me=(this.camera.top-this.camera.bottom)/this.camera.zoom:me=this.worldPosition.distanceTo(this.cameraPosition)*Math.min(1.9*Math.tan(Math.PI*this.camera.fov/360)/this.camera.zoom,7),D.scale.set(1,1,1).multiplyScalar(me*this.size/7),D.tag==="helper"){D.visible=!1,D.name==="AXIS"?(D.position.copy(this.worldPositionStart),D.visible=!!this.axis,this.axis==="X"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,0)),D.quaternion.copy(de).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(de).dot(this.eye))>.9&&(D.visible=!1)),this.axis==="Y"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,Math.PI/2)),D.quaternion.copy(de).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(de).dot(this.eye))>.9&&(D.visible=!1)),this.axis==="Z"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0)),D.quaternion.copy(de).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(de).dot(this.eye))>.9&&(D.visible=!1)),this.axis==="XYZE"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0)),this.alignVector.copy(this.rotationAxis),D.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.zeroVector,this.alignVector,this.unitY)),D.quaternion.multiply(this.tempQuaternion),D.visible=this.dragging),this.axis==="E"&&(D.visible=!1)):D.name==="START"?(D.position.copy(this.worldPositionStart),D.visible=this.dragging):D.name==="END"?(D.position.copy(this.worldPosition),D.visible=this.dragging):D.name==="DELTA"?(D.position.copy(this.worldPositionStart),D.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()),D.scale.copy(this.tempVector),D.visible=this.dragging):(D.quaternion.copy(de),this.dragging?D.position.copy(this.worldPositionStart):D.position.copy(this.worldPosition),this.axis&&(D.visible=this.axis.search(D.name)!==-1));continue}D.quaternion.copy(de),this.mode==="translate"||this.mode==="scale"?((D.name==="X"||D.name==="XYZX")&&Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(de).dot(this.eye))>.99&&(D.scale.set(1e-10,1e-10,1e-10),D.visible=!1),(D.name==="Y"||D.name==="XYZY")&&Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(de).dot(this.eye))>.99&&(D.scale.set(1e-10,1e-10,1e-10),D.visible=!1),(D.name==="Z"||D.name==="XYZZ")&&Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(de).dot(this.eye))>.99&&(D.scale.set(1e-10,1e-10,1e-10),D.visible=!1),D.name==="XY"&&Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(de).dot(this.eye))<.2&&(D.scale.set(1e-10,1e-10,1e-10),D.visible=!1),D.name==="YZ"&&Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(de).dot(this.eye))<.2&&(D.scale.set(1e-10,1e-10,1e-10),D.visible=!1),D.name==="XZ"&&Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(de).dot(this.eye))<.2&&(D.scale.set(1e-10,1e-10,1e-10),D.visible=!1),D.name.search("X")!==-1&&(this.alignVector.copy(this.unitX).applyQuaternion(de).dot(this.eye)<0?D.tag==="fwd"?D.visible=!1:D.scale.x*=-1:D.tag==="bwd"&&(D.visible=!1)),D.name.search("Y")!==-1&&(this.alignVector.copy(this.unitY).applyQuaternion(de).dot(this.eye)<0?D.tag==="fwd"?D.visible=!1:D.scale.y*=-1:D.tag==="bwd"&&(D.visible=!1)),D.name.search("Z")!==-1&&(this.alignVector.copy(this.unitZ).applyQuaternion(de).dot(this.eye)<0?D.tag==="fwd"?D.visible=!1:D.scale.z*=-1:D.tag==="bwd"&&(D.visible=!1))):this.mode==="rotate"&&(this.tempQuaternion2.copy(de),this.alignVector.copy(this.eye).applyQuaternion(this.tempQuaternion.copy(de).invert()),D.name.search("E")!==-1&&D.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.eye,this.zeroVector,this.unitY)),D.name==="X"&&(this.tempQuaternion.setFromAxisAngle(this.unitX,Math.atan2(-this.alignVector.y,this.alignVector.z)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),D.quaternion.copy(this.tempQuaternion)),D.name==="Y"&&(this.tempQuaternion.setFromAxisAngle(this.unitY,Math.atan2(this.alignVector.x,this.alignVector.z)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),D.quaternion.copy(this.tempQuaternion)),D.name==="Z"&&(this.tempQuaternion.setFromAxisAngle(this.unitZ,Math.atan2(this.alignVector.y,this.alignVector.x)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),D.quaternion.copy(this.tempQuaternion))),D.visible=D.visible&&(D.name.indexOf("X")===-1||this.showX),D.visible=D.visible&&(D.name.indexOf("Y")===-1||this.showY),D.visible=D.visible&&(D.name.indexOf("Z")===-1||this.showZ),D.visible=D.visible&&(D.name.indexOf("E")===-1||this.showX&&this.showY&&this.showZ),D.material.tempOpacity=D.material.tempOpacity||D.material.opacity,D.material.tempColor=D.material.tempColor||D.material.color.clone(),D.material.color.copy(D.material.tempColor),D.material.opacity=D.material.tempOpacity,this.enabled?this.axis&&(D.name===this.axis?(D.material.opacity=1,D.material.color.lerp(new f.Color(1,1,1),.5)):this.axis.split("").some(function(Ie){return D.name===Ie})?(D.material.opacity=1,D.material.color.lerp(new f.Color(1,1,1),.5)):(D.material.opacity*=.25,D.material.color.lerp(new f.Color(1,1,1),.5))):(D.material.opacity*=.5,D.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}),r=n.clone();r.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 h=n.clone();h.color.set(255);const d=n.clone();d.opacity=.25;const y=d.clone();y.color.set(16776960);const x=d.clone();x.color.set(65535);const w=d.clone();w.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 A=i.clone();A.color.set(255);const L=i.clone();L.color.set(65535);const z=i.clone();z.color.set(16711935);const R=i.clone();R.color.set(16776960);const N=i.clone();N.color.set(7895160);const I=R.clone();I.opacity=.25;const O=new f.CylinderGeometry(0,.05,.2,12,1,!1),F=new f.BoxGeometry(.125,.125,.125),G=new f.BufferGeometry;G.setAttribute("position",new f.Float32BufferAttribute([0,0,0,1,0,0],3));const B=(be,de)=>{const oe=new f.BufferGeometry,_e=[];for(let D=0;D<=64*de;++D)_e.push(0,Math.cos(D/32*Math.PI)*be,Math.sin(D/32*Math.PI)*be);return oe.setAttribute("position",new f.Float32BufferAttribute(_e,3)),oe},K=()=>{const be=new f.BufferGeometry;return be.setAttribute("position",new f.Float32BufferAttribute([0,0,0,1,1,1],3)),be},$={X:[[new f.Mesh(O,l),[1,0,0],[0,0,-Math.PI/2],null,"fwd"],[new f.Mesh(O,l),[1,0,0],[0,0,Math.PI/2],null,"bwd"],[new f.Line(G,M)]],Y:[[new f.Mesh(O,p),[0,1,0],null,null,"fwd"],[new f.Mesh(O,p),[0,1,0],[Math.PI,0,0],null,"bwd"],[new f.Line(G,E),null,[0,0,Math.PI/2]]],Z:[[new f.Mesh(O,h),[0,0,1],[Math.PI/2,0,0],null,"fwd"],[new f.Mesh(O,h),[0,0,1],[-Math.PI/2,0,0],null,"bwd"],[new f.Line(G,A),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),y.clone()),[.15,.15,0]],[new f.Line(G,R),[.18,.3,0],null,[.125,1,1]],[new f.Line(G,R),[.3,.18,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new f.Mesh(new f.PlaneGeometry(.295,.295),x.clone()),[0,.15,.15],[0,Math.PI/2,0]],[new f.Line(G,L),[0,.18,.3],[0,0,Math.PI/2],[.125,1,1]],[new f.Line(G,L),[0,.3,.18],[0,-Math.PI/2,0],[.125,1,1]]],XZ:[[new f.Mesh(new f.PlaneGeometry(.295,.295),w.clone()),[.15,0,.15],[-Math.PI/2,0,0]],[new f.Line(G,z),[.18,0,.3],null,[.125,1,1]],[new f.Line(G,z),[.3,0,.18],[0,-Math.PI/2,0],[.125,1,1]]]},q={X:[[new f.Mesh(new f.CylinderGeometry(.2,0,1,4,1,!1),r),[.6,0,0],[0,0,-Math.PI/2]]],Y:[[new f.Mesh(new f.CylinderGeometry(.2,0,1,4,1,!1),r),[0,.6,0]]],Z:[[new f.Mesh(new f.CylinderGeometry(.2,0,1,4,1,!1),r),[0,0,.6],[Math.PI/2,0,0]]],XYZ:[[new f.Mesh(new f.OctahedronGeometry(.2,0),r)]],XY:[[new f.Mesh(new f.PlaneGeometry(.4,.4),r),[.2,.2,0]]],YZ:[[new f.Mesh(new f.PlaneGeometry(.4,.4),r),[0,.2,.2],[0,Math.PI/2,0]]],XZ:[[new f.Mesh(new f.PlaneGeometry(.4,.4),r),[.2,0,.2],[-Math.PI/2,0,0]]]},se={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(K(),o),null,null,null,"helper"]],X:[[new f.Line(G,o.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new f.Line(G,o.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new f.Line(G,o.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},he={X:[[new f.Line(B(1,.5),M)],[new f.Mesh(new f.OctahedronGeometry(.04,0),l),[0,0,.99],null,[1,3,1]]],Y:[[new f.Line(B(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(B(1,.5),A),null,[0,Math.PI/2,0]],[new f.Mesh(new f.OctahedronGeometry(.04,0),h),[.99,0,0],null,[1,3,1]]],E:[[new f.Line(B(1.25,1),I),null,[0,Math.PI/2,0]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),I),[1.17,0,0],[0,0,-Math.PI/2],[1,1,.001]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),I),[-1.17,0,0],[0,0,Math.PI/2],[1,1,.001]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),I),[0,-1.17,0],[Math.PI,0,0],[1,1,.001]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),I),[0,1.17,0],[0,0,0],[1,1,.001]]],XYZE:[[new f.Line(B(1,1),N),null,[0,Math.PI/2,0]]]},ie={AXIS:[[new f.Line(G,o.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]]},fe={X:[[new f.Mesh(new f.TorusGeometry(1,.1,4,24),r),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],Y:[[new f.Mesh(new f.TorusGeometry(1,.1,4,24),r),[0,0,0],[Math.PI/2,0,0]]],Z:[[new f.Mesh(new f.TorusGeometry(1,.1,4,24),r),[0,0,0],[0,0,-Math.PI/2]]],E:[[new f.Mesh(new f.TorusGeometry(1.25,.1,2,24),r)]],XYZE:[[new f.Mesh(new f.SphereGeometry(.7,10,8),r)]]},pe={X:[[new f.Mesh(F,l),[.8,0,0],[0,0,-Math.PI/2]],[new f.Line(G,M),null,null,[.8,1,1]]],Y:[[new f.Mesh(F,p),[0,.8,0]],[new f.Line(G,E),null,[0,0,Math.PI/2],[.8,1,1]]],Z:[[new f.Mesh(F,h),[0,0,.8],[Math.PI/2,0,0]],[new f.Line(G,A),null,[0,-Math.PI/2,0],[.8,1,1]]],XY:[[new f.Mesh(F,y),[.85,.85,0],null,[2,2,.2]],[new f.Line(G,R),[.855,.98,0],null,[.125,1,1]],[new f.Line(G,R),[.98,.855,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new f.Mesh(F,x),[0,.85,.85],null,[.2,2,2]],[new f.Line(G,L),[0,.855,.98],[0,0,Math.PI/2],[.125,1,1]],[new f.Line(G,L),[0,.98,.855],[0,-Math.PI/2,0],[.125,1,1]]],XZ:[[new f.Mesh(F,w),[.85,0,.85],null,[2,.2,2]],[new f.Line(G,z),[.855,0,.98],null,[.125,1,1]],[new f.Line(G,z),[.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),r),[.5,0,0],[0,0,-Math.PI/2]]],Y:[[new f.Mesh(new f.CylinderGeometry(.2,0,.8,4,1,!1),r),[0,.5,0]]],Z:[[new f.Mesh(new f.CylinderGeometry(.2,0,.8,4,1,!1),r),[0,0,.5],[Math.PI/2,0,0]]],XY:[[new f.Mesh(F,r),[.85,.85,0],null,[3,3,.2]]],YZ:[[new f.Mesh(F,r),[0,.85,.85],null,[.2,3,3]]],XZ:[[new f.Mesh(F,r),[.85,0,.85],null,[3,.2,3]]],XYZX:[[new f.Mesh(new f.BoxGeometry(.2,.2,.2),r),[1.1,0,0]]],XYZY:[[new f.Mesh(new f.BoxGeometry(.2,.2,.2),r),[0,1.1,0]]],XYZZ:[[new f.Mesh(new f.BoxGeometry(.2,.2,.2),r),[0,0,1.1]]]},W={X:[[new f.Line(G,o.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new f.Line(G,o.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new f.Line(G,o.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},Pe=be=>{const de=new f.Object3D;for(let oe in be)for(let _e=be[oe].length;_e--;){const D=be[oe][_e][0].clone(),me=be[oe][_e][1],Ie=be[oe][_e][2],Be=be[oe][_e][3],ye=be[oe][_e][4];D.name=oe,D.tag=ye,me&&D.position.set(me[0],me[1],me[2]),Ie&&D.rotation.set(Ie[0],Ie[1],Ie[2]),Be&&D.scale.set(Be[0],Be[1],Be[2]),D.updateMatrix();const et=D.geometry.clone();et.applyMatrix4(D.matrix),D.geometry=et,D.renderOrder=1/0,D.position.set(0,0,0),D.rotation.set(0,0,0),D.scale.set(1,1,1),de.add(D)}return de};this.gizmo={},this.picker={},this.helper={},this.add(this.gizmo.translate=Pe($)),this.add(this.gizmo.rotate=Pe(he)),this.add(this.gizmo.scale=Pe(pe)),this.add(this.picker.translate=Pe(q)),this.add(this.picker.rotate=Pe(fe)),this.add(this.picker.scale=Pe(te)),this.add(this.helper.translate=Pe(se)),this.add(this.helper.rotate=Pe(ie)),this.add(this.helper.scale=Pe(W)),this.picker.translate.visible=!1,this.picker.rotate.visible=!1,this.picker.scale.visible=!1}}class fa 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})),U(this,"isTransformControlsPlane",!0),U(this,"type","TransformControlsPlane"),U(this,"unitX",new f.Vector3(1,0,0)),U(this,"unitY",new f.Vector3(0,1,0)),U(this,"unitZ",new f.Vector3(0,0,1)),U(this,"tempVector",new f.Vector3),U(this,"dirVector",new f.Vector3),U(this,"alignVector",new f.Vector3),U(this,"tempMatrix",new f.Matrix4),U(this,"identityQuaternion",new f.Quaternion),U(this,"cameraQuaternion",new f.Quaternion),U(this,"worldPosition",new f.Vector3),U(this,"worldQuaternion",new f.Quaternion),U(this,"eye",new f.Vector3),U(this,"axis",null),U(this,"mode","translate"),U(this,"space","world"),U(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 va=Object.defineProperty,ba=(v,n,i)=>n in v?va(v,n,{enumerable:!0,configurable:!0,writable:!0,value:i}):v[n]=i,Ve=(v,n,i)=>(ba(v,typeof n!="symbol"?n+"":n,i),i);const wn=new f.Euler(0,0,0,"YXZ"),yn=new f.Vector3,ga={type:"change"},_a={type:"lock"},wa={type:"unlock"},Or=Math.PI/2;class ps 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",r=>{if(!this.domElement||this.isLocked===!1)return;const o=r.movementX||r.mozMovementX||r.webkitMovementX||0,l=r.movementY||r.mozMovementY||r.webkitMovementY||0;wn.setFromQuaternion(this.camera.quaternion),wn.y-=o*.002*this.pointerSpeed,wn.x-=l*.002*this.pointerSpeed,wn.x=Math.max(Or-this.maxPolarAngle,Math.min(Or-this.minPolarAngle,wn.x)),this.camera.quaternion.setFromEuler(wn),this.dispatchEvent(ga)}),Ve(this,"onPointerlockChange",()=>{this.domElement&&(this.domElement.ownerDocument.pointerLockElement===this.domElement?(this.dispatchEvent(_a),this.isLocked=!0):(this.dispatchEvent(wa),this.isLocked=!1))}),Ve(this,"onPointerlockError",()=>{console.error("THREE.PointerLockControls: Unable to use Pointer Lock API")}),Ve(this,"connect",r=>{this.domElement=r||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",r=>r.copy(this.direction).applyQuaternion(this.camera.quaternion)),Ve(this,"moveForward",r=>{yn.setFromMatrixColumn(this.camera.matrix,0),yn.crossVectors(this.camera.up,yn),this.camera.position.addScaledVector(yn,r)}),Ve(this,"moveRight",r=>{yn.setFromMatrixColumn(this.camera.matrix,0),this.camera.position.addScaledVector(yn,r)}),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 ya=Object.defineProperty,xa=(v,n,i)=>n in v?ya(v,n,{enumerable:!0,configurable:!0,writable:!0,value:i}):v[n]=i,ne=(v,n,i)=>(xa(v,typeof n!="symbol"?n+"":n,i),i);const Br=(v,n)=>(v%n+n)%n;class Nr 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=()=>x.phi,this.getAzimuthalAngle=()=>x.theta,this.setPolarAngle=T=>{let Q=Br(T,2*Math.PI),ee=x.phi;ee<0&&(ee+=2*Math.PI),Q<0&&(Q+=2*Math.PI);let ae=Math.abs(Q-ee);2*Math.PI-ae<ae&&(Q<ee?Q+=2*Math.PI:ee+=2*Math.PI),w.phi=Q-ee,r.update()},this.setAzimuthalAngle=T=>{let Q=Br(T,2*Math.PI),ee=x.theta;ee<0&&(ee+=2*Math.PI),Q<0&&(Q+=2*Math.PI);let ae=Math.abs(Q-ee);2*Math.PI-ae<ae&&(Q<ee?Q+=2*Math.PI:ee+=2*Math.PI),w.theta=Q-ee,r.update()},this.getDistance=()=>r.object.position.distanceTo(r.target),this.listenToKeyEvents=T=>{T.addEventListener("keydown",mt),this._domElementKeyEvents=T},this.saveState=()=>{r.target0.copy(r.target),r.position0.copy(r.object.position),r.zoom0=r.object.zoom},this.reset=()=>{r.target.copy(r.target0),r.object.position.copy(r.position0),r.object.zoom=r.zoom0,r.object.updateProjectionMatrix(),r.dispatchEvent(o),r.update(),d=h.NONE},this.update=(()=>{const T=new f.Vector3,Q=new f.Quaternion().setFromUnitVectors(n.up,new f.Vector3(0,1,0)),ee=Q.clone().invert(),ae=new f.Vector3,Ce=new f.Quaternion,Oe=2*Math.PI;return function(){const en=r.object.position;T.copy(en).sub(r.target),T.applyQuaternion(Q),x.setFromVector3(T),r.autoRotate&&d===h.NONE&&se($()),r.enableDamping?(x.theta+=w.theta*r.dampingFactor,x.phi+=w.phi*r.dampingFactor):(x.theta+=w.theta,x.phi+=w.phi);let ze=r.minAzimuthAngle,je=r.maxAzimuthAngle;return isFinite(ze)&&isFinite(je)&&(ze<-Math.PI?ze+=Oe:ze>Math.PI&&(ze-=Oe),je<-Math.PI?je+=Oe:je>Math.PI&&(je-=Oe),ze<=je?x.theta=Math.max(ze,Math.min(je,x.theta)):x.theta=x.theta>(ze+je)/2?Math.max(ze,x.theta):Math.min(je,x.theta)),x.phi=Math.max(r.minPolarAngle,Math.min(r.maxPolarAngle,x.phi)),x.makeSafe(),x.radius*=C,x.radius=Math.max(r.minDistance,Math.min(r.maxDistance,x.radius)),r.enableDamping===!0?r.target.addScaledVector(M,r.dampingFactor):r.target.add(M),T.setFromSpherical(x),T.applyQuaternion(ee),en.copy(r.target).add(T),r.object.lookAt(r.target),r.enableDamping===!0?(w.theta*=1-r.dampingFactor,w.phi*=1-r.dampingFactor,M.multiplyScalar(1-r.dampingFactor)):(w.set(0,0,0),M.set(0,0,0)),C=1,E||ae.distanceToSquared(r.object.position)>y||8*(1-Ce.dot(r.object.quaternion))>y?(r.dispatchEvent(o),ae.copy(r.object.position),Ce.copy(r.object.quaternion),E=!1,!0):!1}})(),this.connect=T=>{T===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),r.domElement=T,r.domElement.style.touchAction="none",r.domElement.addEventListener("contextmenu",Ht),r.domElement.addEventListener("pointerdown",tt),r.domElement.addEventListener("pointercancel",An),r.domElement.addEventListener("wheel",Ln)},this.dispose=()=>{var T,Q,ee,ae,Ce,Oe;(T=r.domElement)==null||T.removeEventListener("contextmenu",Ht),(Q=r.domElement)==null||Q.removeEventListener("pointerdown",tt),(ee=r.domElement)==null||ee.removeEventListener("pointercancel",An),(ae=r.domElement)==null||ae.removeEventListener("wheel",Ln),(Ce=r.domElement)==null||Ce.ownerDocument.removeEventListener("pointermove",Jt),(Oe=r.domElement)==null||Oe.ownerDocument.removeEventListener("pointerup",pt),r._domElementKeyEvents!==null&&r._domElementKeyEvents.removeEventListener("keydown",mt)};const r=this,o={type:"change"},l={type:"start"},p={type:"end"},h={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let d=h.NONE;const y=1e-6,x=new f.Spherical,w=new f.Spherical;let C=1;const M=new f.Vector3;let E=!1;const A=new f.Vector2,L=new f.Vector2,z=new f.Vector2,R=new f.Vector2,N=new f.Vector2,I=new f.Vector2,O=new f.Vector2,F=new f.Vector2,G=new f.Vector2,B=[],K={};function $(){return 2*Math.PI/60/60*r.autoRotateSpeed}function q(){return Math.pow(.95,r.zoomSpeed)}function se(T){r.reverseOrbit?w.theta+=T:w.theta-=T}function he(T){r.reverseOrbit?w.phi+=T:w.phi-=T}const ie=(()=>{const T=new f.Vector3;return function(ee,ae){T.setFromMatrixColumn(ae,0),T.multiplyScalar(-ee),M.add(T)}})(),fe=(()=>{const T=new f.Vector3;return function(ee,ae){r.screenSpacePanning===!0?T.setFromMatrixColumn(ae,1):(T.setFromMatrixColumn(ae,0),T.crossVectors(r.object.up,T)),T.multiplyScalar(ee),M.add(T)}})(),pe=(()=>{const T=new f.Vector3;return function(ee,ae){const Ce=r.domElement;if(Ce&&r.object instanceof f.PerspectiveCamera&&r.object.isPerspectiveCamera){const Oe=r.object.position;T.copy(Oe).sub(r.target);let Ot=T.length();Ot*=Math.tan(r.object.fov/2*Math.PI/180),ie(2*ee*Ot/Ce.clientHeight,r.object.matrix),fe(2*ae*Ot/Ce.clientHeight,r.object.matrix)}else Ce&&r.object instanceof f.OrthographicCamera&&r.object.isOrthographicCamera?(ie(ee*(r.object.right-r.object.left)/r.object.zoom/Ce.clientWidth,r.object.matrix),fe(ae*(r.object.top-r.object.bottom)/r.object.zoom/Ce.clientHeight,r.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),r.enablePan=!1)}})();function te(T){r.object instanceof f.PerspectiveCamera&&r.object.isPerspectiveCamera?C/=T:r.object instanceof f.OrthographicCamera&&r.object.isOrthographicCamera?(r.object.zoom=Math.max(r.minZoom,Math.min(r.maxZoom,r.object.zoom*T)),r.object.updateProjectionMatrix(),E=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),r.enableZoom=!1)}function W(T){r.object instanceof f.PerspectiveCamera&&r.object.isPerspectiveCamera?C*=T:r.object instanceof f.OrthographicCamera&&r.object.isOrthographicCamera?(r.object.zoom=Math.max(r.minZoom,Math.min(r.maxZoom,r.object.zoom/T)),r.object.updateProjectionMatrix(),E=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),r.enableZoom=!1)}function Pe(T){A.set(T.clientX,T.clientY)}function be(T){O.set(T.clientX,T.clientY)}function de(T){R.set(T.clientX,T.clientY)}function oe(T){L.set(T.clientX,T.clientY),z.subVectors(L,A).multiplyScalar(r.rotateSpeed);const Q=r.domElement;Q&&(se(2*Math.PI*z.x/Q.clientHeight),he(2*Math.PI*z.y/Q.clientHeight)),A.copy(L),r.update()}function _e(T){F.set(T.clientX,T.clientY),G.subVectors(F,O),G.y>0?te(q()):G.y<0&&W(q()),O.copy(F),r.update()}function D(T){N.set(T.clientX,T.clientY),I.subVectors(N,R).multiplyScalar(r.panSpeed),pe(I.x,I.y),R.copy(N),r.update()}function me(T){T.deltaY<0?W(q()):T.deltaY>0&&te(q()),r.update()}function Ie(T){let Q=!1;switch(T.code){case r.keys.UP:pe(0,r.keyPanSpeed),Q=!0;break;case r.keys.BOTTOM:pe(0,-r.keyPanSpeed),Q=!0;break;case r.keys.LEFT:pe(r.keyPanSpeed,0),Q=!0;break;case r.keys.RIGHT:pe(-r.keyPanSpeed,0),Q=!0;break}Q&&(T.preventDefault(),r.update())}function Be(){if(B.length==1)A.set(B[0].pageX,B[0].pageY);else{const T=.5*(B[0].pageX+B[1].pageX),Q=.5*(B[0].pageY+B[1].pageY);A.set(T,Q)}}function ye(){if(B.length==1)R.set(B[0].pageX,B[0].pageY);else{const T=.5*(B[0].pageX+B[1].pageX),Q=.5*(B[0].pageY+B[1].pageY);R.set(T,Q)}}function et(){const T=B[0].pageX-B[1].pageX,Q=B[0].pageY-B[1].pageY,ee=Math.sqrt(T*T+Q*Q);O.set(0,ee)}function kn(){r.enableZoom&&et(),r.enablePan&&ye()}function Ke(){r.enableZoom&&et(),r.enableRotate&&Be()}function Mn(T){if(B.length==1)L.set(T.pageX,T.pageY);else{const ee=yt(T),ae=.5*(T.pageX+ee.x),Ce=.5*(T.pageY+ee.y);L.set(ae,Ce)}z.subVectors(L,A).multiplyScalar(r.rotateSpeed);const Q=r.domElement;Q&&(se(2*Math.PI*z.x/Q.clientHeight),he(2*Math.PI*z.y/Q.clientHeight)),A.copy(L)}function Zt(T){if(B.length==1)N.set(T.pageX,T.pageY);else{const Q=yt(T),ee=.5*(T.pageX+Q.x),ae=.5*(T.pageY+Q.y);N.set(ee,ae)}I.subVectors(N,R).multiplyScalar(r.panSpeed),pe(I.x,I.y),R.copy(N)}function ct(T){const Q=yt(T),ee=T.pageX-Q.x,ae=T.pageY-Q.y,Ce=Math.sqrt(ee*ee+ae*ae);F.set(0,Ce),G.set(0,Math.pow(F.y/O.y,r.zoomSpeed)),te(G.y),O.copy(F)}function _t(T){r.enableZoom&&ct(T),r.enablePan&&Zt(T)}function Fe(T){r.enableZoom&&ct(T),r.enableRotate&&Mn(T)}function tt(T){var Q,ee;r.enabled!==!1&&(B.length===0&&((Q=r.domElement)==null||Q.ownerDocument.addEventListener("pointermove",Jt),(ee=r.domElement)==null||ee.ownerDocument.addEventListener("pointerup",pt)),Dn(T),T.pointerType==="touch"?wt(T):Wn(T))}function Jt(T){r.enabled!==!1&&(T.pointerType==="touch"?Vn(T):Sn(T))}function pt(T){var Q,ee,ae;ft(T),B.length===0&&((Q=r.domElement)==null||Q.releasePointerCapture(T.pointerId),(ee=r.domElement)==null||ee.ownerDocument.removeEventListener("pointermove",Jt),(ae=r.domElement)==null||ae.ownerDocument.removeEventListener("pointerup",pt)),r.dispatchEvent(p),d=h.NONE}function An(T){ft(T)}function Wn(T){let Q;switch(T.button){case 0:Q=r.mouseButtons.LEFT;break;case 1:Q=r.mouseButtons.MIDDLE;break;case 2:Q=r.mouseButtons.RIGHT;break;default:Q=-1}switch(Q){case f.MOUSE.DOLLY:if(r.enableZoom===!1)return;be(T),d=h.DOLLY;break;case f.MOUSE.ROTATE:if(T.ctrlKey||T.metaKey||T.shiftKey){if(r.enablePan===!1)return;de(T),d=h.PAN}else{if(r.enableRotate===!1)return;Pe(T),d=h.ROTATE}break;case f.MOUSE.PAN:if(T.ctrlKey||T.metaKey||T.shiftKey){if(r.enableRotate===!1)return;Pe(T),d=h.ROTATE}else{if(r.enablePan===!1)return;de(T),d=h.PAN}break;default:d=h.NONE}d!==h.NONE&&r.dispatchEvent(l)}function Sn(T){if(r.enabled!==!1)switch(d){case h.ROTATE:if(r.enableRotate===!1)return;oe(T);break;case h.DOLLY:if(r.enableZoom===!1)return;_e(T);break;case h.PAN:if(r.enablePan===!1)return;D(T);break}}function Ln(T){r.enabled===!1||r.enableZoom===!1||d!==h.NONE&&d!==h.ROTATE||(T.preventDefault(),r.dispatchEvent(l),me(T),r.dispatchEvent(p))}function mt(T){r.enabled===!1||r.enablePan===!1||Ie(T)}function wt(T){switch(ut(T),B.length){case 1:switch(r.touches.ONE){case f.TOUCH.ROTATE:if(r.enableRotate===!1)return;Be(),d=h.TOUCH_ROTATE;break;case f.TOUCH.PAN:if(r.enablePan===!1)return;ye(),d=h.TOUCH_PAN;break;default:d=h.NONE}break;case 2:switch(r.touches.TWO){case f.TOUCH.DOLLY_PAN:if(r.enableZoom===!1&&r.enablePan===!1)return;kn(),d=h.TOUCH_DOLLY_PAN;break;case f.TOUCH.DOLLY_ROTATE:if(r.enableZoom===!1&&r.enableRotate===!1)return;Ke(),d=h.TOUCH_DOLLY_ROTATE;break;default:d=h.NONE}break;default:d=h.NONE}d!==h.NONE&&r.dispatchEvent(l)}function Vn(T){switch(ut(T),d){case h.TOUCH_ROTATE:if(r.enableRotate===!1)return;Mn(T),r.update();break;case h.TOUCH_PAN:if(r.enablePan===!1)return;Zt(T),r.update();break;case h.TOUCH_DOLLY_PAN:if(r.enableZoom===!1&&r.enablePan===!1)return;_t(T),r.update();break;case h.TOUCH_DOLLY_ROTATE:if(r.enableZoom===!1&&r.enableRotate===!1)return;Fe(T),r.update();break;default:d=h.NONE}}function Ht(T){r.enabled!==!1&&T.preventDefault()}function Dn(T){B.push(T)}function ft(T){delete K[T.pointerId];for(let Q=0;Q<B.length;Q++)if(B[Q].pointerId==T.pointerId){B.splice(Q,1);return}}function ut(T){let Q=K[T.pointerId];Q===void 0&&(Q=new f.Vector2,K[T.pointerId]=Q),Q.set(T.pageX,T.pageY)}function yt(T){const Q=T.pointerId===B[0].pointerId?B[1]:B[0];return K[Q.pointerId]}i!==void 0&&this.connect(i),this.update()}}class Ca extends Nr{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 Pa extends f.Loader{constructor(n){super(n),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(i){return new La(i)}),this.register(function(i){return new Na(i)}),this.register(function(i){return new Fa(i)}),this.register(function(i){return new za(i)}),this.register(function(i){return new Da(i)}),this.register(function(i){return new Ia(i)}),this.register(function(i){return new Ta(i)}),this.register(function(i){return new Ea(i)}),this.register(function(i){return new Sa(i)}),this.register(function(i){return new Oa(i)}),this.register(function(i){return new Va(i)}),this.register(function(i){return new Ba(i)}),this.register(function(i){return new Ma(i)}),this.register(function(i){return new ja(i)}),this.register(function(i){return new Ra(i)})}load(n,i,r,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 h=function(y){o?o(y):console.error(y),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(y){try{l.parse(y,p,function(x){i(x),l.manager.itemEnd(n)},h)}catch(x){h(x)}},r,h)}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,r,o){let l;const p={},h={};if(typeof n=="string")l=JSON.parse(n);else if(n instanceof ArrayBuffer)if(f.LoaderUtils.decodeText(new Uint8Array(n.slice(0,4)))===Fr){try{p[ce.KHR_BINARY_GLTF]=new Ua(n)}catch(x){o&&o(x);return}l=JSON.parse(p[ce.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 tl(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 y=0;y<this.pluginCallbacks.length;y++){const x=this.pluginCallbacks[y](d);h[x.name]=x,p[x.name]=!0}if(l.extensionsUsed)for(let y=0;y<l.extensionsUsed.length;++y){const x=l.extensionsUsed[y],w=l.extensionsRequired||[];switch(x){case ce.KHR_MATERIALS_UNLIT:p[x]=new Aa;break;case ce.KHR_DRACO_MESH_COMPRESSION:p[x]=new Ga(l,this.dracoLoader);break;case ce.KHR_TEXTURE_TRANSFORM:p[x]=new Ka;break;case ce.KHR_MESH_QUANTIZATION:p[x]=new $a;break;default:w.indexOf(x)>=0&&h[x]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+x+'".')}}d.setExtensions(p),d.setPlugins(h),d.parse(r,o)}parseAsync(n,i){const r=this;return new Promise(function(o,l){r.parse(n,i,o,l)})}}function ka(){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 ce={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 Ma{constructor(n){this.parser=n,this.name=ce.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const n=this.parser,i=this.parser.json.nodes||[];for(let r=0,o=i.length;r<o;r++){const l=i[r];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,r="light:"+n;let o=i.cache.get(r);if(o)return o;const l=i.json,d=((l.extensions&&l.extensions[this.name]||{}).lights||[])[n];let y;const x=new f.Color(16777215);d.color!==void 0&&x.fromArray(d.color);const w=d.range!==void 0?d.range:0;switch(d.type){case"directional":y=new f.DirectionalLight(x),y.target.position.set(0,0,-1),y.add(y.target);break;case"point":y=new f.PointLight(x),y.distance=w;break;case"spot":y=new f.SpotLight(x),y.distance=w,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,y.angle=d.spot.outerConeAngle,y.penumbra=1-d.spot.innerConeAngle/d.spot.outerConeAngle,y.target.position.set(0,0,-1),y.add(y.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+d.type)}return y.position.set(0,0,0),y.decay=2,Tt(y,d),d.intensity!==void 0&&(y.intensity=d.intensity),y.name=i.createUniqueName(d.name||"light_"+n),o=Promise.resolve(y),i.cache.add(r,o),o}getDependency(n,i){if(n==="light")return this._loadLight(i)}createNodeAttachment(n){const i=this,r=this.parser,l=r.json.nodes[n],h=(l.extensions&&l.extensions[this.name]||{}).light;return h===void 0?null:this._loadLight(h).then(function(d){return r._getNodeRef(i.cache,h,d)})}}class Aa{constructor(){this.name=ce.KHR_MATERIALS_UNLIT}getMaterialType(){return f.MeshBasicMaterial}extendParams(n,i,r){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(r.assignTexture(n,"map",l.baseColorTexture,3001))}return Promise.all(o)}}class Sa{constructor(n){this.parser=n,this.name=ce.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 La{constructor(n){this.parser=n,this.name=ce.KHR_MATERIALS_CLEARCOAT}getMaterialType(n){const r=this.parser.json.materials[n];return!r.extensions||!r.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(n,i){const r=this.parser,o=r.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(r.assignTexture(i,"clearcoatMap",p.clearcoatTexture)),p.clearcoatRoughnessFactor!==void 0&&(i.clearcoatRoughness=p.clearcoatRoughnessFactor),p.clearcoatRoughnessTexture!==void 0&&l.push(r.assignTexture(i,"clearcoatRoughnessMap",p.clearcoatRoughnessTexture)),p.clearcoatNormalTexture!==void 0&&(l.push(r.assignTexture(i,"clearcoatNormalMap",p.clearcoatNormalTexture)),p.clearcoatNormalTexture.scale!==void 0)){const h=p.clearcoatNormalTexture.scale;i.clearcoatNormalScale=new f.Vector2(h,h)}return Promise.all(l)}}class Va{constructor(n){this.parser=n,this.name=ce.KHR_MATERIALS_IRIDESCENCE}getMaterialType(n){const r=this.parser.json.materials[n];return!r.extensions||!r.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(n,i){const r=this.parser,o=r.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(r.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(r.assignTexture(i,"iridescenceThicknessMap",p.iridescenceThicknessTexture)),Promise.all(l)}}class Da{constructor(n){this.parser=n,this.name=ce.KHR_MATERIALS_SHEEN}getMaterialType(n){const r=this.parser.json.materials[n];return!r.extensions||!r.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(n,i){const r=this.parser,o=r.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(r.assignTexture(i,"sheenColorMap",p.sheenColorTexture,3001)),p.sheenRoughnessTexture!==void 0&&l.push(r.assignTexture(i,"sheenRoughnessMap",p.sheenRoughnessTexture)),Promise.all(l)}}class Ia{constructor(n){this.parser=n,this.name=ce.KHR_MATERIALS_TRANSMISSION}getMaterialType(n){const r=this.parser.json.materials[n];return!r.extensions||!r.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(n,i){const r=this.parser,o=r.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(r.assignTexture(i,"transmissionMap",p.transmissionTexture)),Promise.all(l)}}class Ta{constructor(n){this.parser=n,this.name=ce.KHR_MATERIALS_VOLUME}getMaterialType(n){const r=this.parser.json.materials[n];return!r.extensions||!r.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(n,i){const r=this.parser,o=r.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(r.assignTexture(i,"thicknessMap",p.thicknessTexture)),i.attenuationDistance=p.attenuationDistance||1/0;const h=p.attenuationColor||[1,1,1];return i.attenuationColor=new f.Color(h[0],h[1],h[2]),Promise.all(l)}}class Ea{constructor(n){this.parser=n,this.name=ce.KHR_MATERIALS_IOR}getMaterialType(n){const r=this.parser.json.materials[n];return!r.extensions||!r.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 Oa{constructor(n){this.parser=n,this.name=ce.KHR_MATERIALS_SPECULAR}getMaterialType(n){const r=this.parser.json.materials[n];return!r.extensions||!r.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(n,i){const r=this.parser,o=r.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(r.assignTexture(i,"specularIntensityMap",p.specularTexture));const h=p.specularColorFactor||[1,1,1];return i.specularColor=new f.Color(h[0],h[1],h[2]),p.specularColorTexture!==void 0&&l.push(r.assignTexture(i,"specularColorMap",p.specularColorTexture,3001)),Promise.all(l)}}class Ba{constructor(n){this.parser=n,this.name=ce.KHR_MATERIALS_ANISOTROPY}getMaterialType(n){const r=this.parser.json.materials[n];return!r.extensions||!r.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(n,i){const r=this.parser,o=r.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(r.assignTexture(i,"anisotropyMap",p.anisotropyTexture)),Promise.all(l)}}class Na{constructor(n){this.parser=n,this.name=ce.KHR_TEXTURE_BASISU}loadTexture(n){const i=this.parser,r=i.json,o=r.textures[n];if(!o.extensions||!o.extensions[this.name])return null;const l=o.extensions[this.name],p=i.options.ktx2Loader;if(!p){if(r.extensionsRequired&&r.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 Fa{constructor(n){this.parser=n,this.name=ce.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(n){const i=this.name,r=this.parser,o=r.json,l=o.textures[n];if(!l.extensions||!l.extensions[i])return null;const p=l.extensions[i],h=o.images[p.source];let d=r.textureLoader;if(h.uri){const y=r.options.manager.getHandler(h.uri);y!==null&&(d=y)}return this.detectSupport().then(function(y){if(y)return r.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 r.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 za{constructor(n){this.parser=n,this.name=ce.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(n){const i=this.name,r=this.parser,o=r.json,l=o.textures[n];if(!l.extensions||!l.extensions[i])return null;const p=l.extensions[i],h=o.images[p.source];let d=r.textureLoader;if(h.uri){const y=r.options.manager.getHandler(h.uri);y!==null&&(d=y)}return this.detectSupport().then(function(y){if(y)return r.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 r.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 ja{constructor(n){this.name=ce.EXT_MESHOPT_COMPRESSION,this.parser=n}loadBufferView(n){const i=this.parser.json,r=i.bufferViews[n];if(r.extensions&&r.extensions[this.name]){const o=r.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(h){const d=o.byteOffset||0,y=o.byteLength||0,x=o.count,w=o.byteStride,C=new Uint8Array(h,d,y);return p.decodeGltfBufferAsync?p.decodeGltfBufferAsync(x,w,C,o.mode,o.filter).then(function(M){return M.buffer}):p.ready.then(function(){const M=new ArrayBuffer(x*w);return p.decodeGltfBuffer(new Uint8Array(M),x,w,C,o.mode,o.filter),M})})}else return null}}class Ra{constructor(n){this.name=ce.EXT_MESH_GPU_INSTANCING,this.parser=n}createNodeMesh(n){const i=this.parser.json,r=i.nodes[n];if(!r.extensions||!r.extensions[this.name]||r.mesh===void 0)return null;const o=i.meshes[r.mesh];for(const y of o.primitives)if(y.mode!==He.TRIANGLES&&y.mode!==He.TRIANGLE_STRIP&&y.mode!==He.TRIANGLE_FAN&&y.mode!==void 0)return null;const p=r.extensions[this.name].attributes,h=[],d={};for(const y in p)h.push(this.parser.getDependency("accessor",p[y]).then(x=>(d[y]=x,d[y])));return h.length<1?null:(h.push(this.parser.createNodeMesh(n)),Promise.all(h).then(y=>{const x=y.pop(),w=x.isGroup?x.children:[x],C=y[0].count,M=[];for(const E of w){const A=new f.Matrix4,L=new f.Vector3,z=new f.Quaternion,R=new f.Vector3(1,1,1),N=new f.InstancedMesh(E.geometry,E.material,C);for(let I=0;I<C;I++)d.TRANSLATION&&L.fromBufferAttribute(d.TRANSLATION,I),d.ROTATION&&z.fromBufferAttribute(d.ROTATION,I),d.SCALE&&R.fromBufferAttribute(d.SCALE,I),N.setMatrixAt(I,A.compose(L,z,R));for(const I in d)I!=="TRANSLATION"&&I!=="ROTATION"&&I!=="SCALE"&&E.geometry.setAttribute(I,d[I]);f.Object3D.prototype.copy.call(N,E),this.parser.assignFinalMaterial(N),M.push(N)}return x.isGroup?(x.clear(),x.add(...M),x):M[0]}))}}const Fr="glTF",Qn=12,zr={JSON:1313821514,BIN:5130562};class Ua{constructor(n){this.name=ce.KHR_BINARY_GLTF,this.content=null,this.body=null;const i=new DataView(n,0,Qn);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!==Fr)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const r=this.header.length-Qn,o=new DataView(n,Qn);let l=0;for(;l<r;){const p=o.getUint32(l,!0);l+=4;const h=o.getUint32(l,!0);if(l+=4,h===zr.JSON){const d=new Uint8Array(n,Qn+l,p);this.content=f.LoaderUtils.decodeText(d)}else if(h===zr.BIN){const d=Qn+l;this.body=n.slice(d,d+p)}l+=p}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class Ga{constructor(n,i){if(!i)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=ce.KHR_DRACO_MESH_COMPRESSION,this.json=n,this.dracoLoader=i,this.dracoLoader.preload()}decodePrimitive(n,i){const r=this.json,o=this.dracoLoader,l=n.extensions[this.name].bufferView,p=n.extensions[this.name].attributes,h={},d={},y={};for(const x in p){const w=hs[x]||x.toLowerCase();h[w]=p[x]}for(const x in n.attributes){const w=hs[x]||x.toLowerCase();if(p[x]!==void 0){const C=r.accessors[n.attributes[x]],M=xn[C.componentType];y[w]=M.name,d[w]=C.normalized===!0}}return i.getDependency("bufferView",l).then(function(x){return new Promise(function(w){o.decodeDracoFile(x,function(C){for(const M in C.attributes){const E=C.attributes[M],A=d[M];A!==void 0&&(E.normalized=A)}w(C)},h,y)})})}}class Ka{constructor(){this.name=ce.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 $a{constructor(){this.name=ce.KHR_MESH_QUANTIZATION}}class jr extends f.Interpolant{constructor(n,i,r,o){super(n,i,r,o)}copySampleValue_(n){const i=this.resultBuffer,r=this.sampleValues,o=this.valueSize,l=n*o*3+o;for(let p=0;p!==o;p++)i[p]=r[l+p];return i}interpolate_(n,i,r,o){const l=this.resultBuffer,p=this.sampleValues,h=this.valueSize,d=h*2,y=h*3,x=o-i,w=(r-i)/x,C=w*w,M=C*w,E=n*y,A=E-y,L=-2*M+3*C,z=M-C,R=1-L,N=z-C+w;for(let I=0;I!==h;I++){const O=p[A+I+h],F=p[A+I+d]*x,G=p[E+I+h],B=p[E+I]*x;l[I]=R*O+N*F+L*G+z*B}return l}}const Xa=new f.Quaternion;class Ya extends jr{interpolate_(n,i,r,o){const l=super.interpolate_(n,i,r,o);return Xa.fromArray(l).normalize().toArray(l),l}}const He={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},xn={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Rr={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},us={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},hs={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"},It={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},qa={CUBICSPLINE:void 0,LINEAR:f.InterpolateLinear,STEP:f.InterpolateDiscrete},ds={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function Qa(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 qt(v,n,i){for(const r in i.extensions)v[r]===void 0&&(n.userData.gltfExtensions=n.userData.gltfExtensions||{},n.userData.gltfExtensions[r]=i.extensions[r])}function Tt(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 Wa(v,n,i){let r=!1,o=!1,l=!1;for(let y=0,x=n.length;y<x;y++){const w=n[y];if(w.POSITION!==void 0&&(r=!0),w.NORMAL!==void 0&&(o=!0),w.COLOR_0!==void 0&&(l=!0),r&&o&&l)break}if(!r&&!o&&!l)return Promise.resolve(v);const p=[],h=[],d=[];for(let y=0,x=n.length;y<x;y++){const w=n[y];if(r){const C=w.POSITION!==void 0?i.getDependency("accessor",w.POSITION):v.attributes.position;p.push(C)}if(o){const C=w.NORMAL!==void 0?i.getDependency("accessor",w.NORMAL):v.attributes.normal;h.push(C)}if(l){const C=w.COLOR_0!==void 0?i.getDependency("accessor",w.COLOR_0):v.attributes.color;d.push(C)}}return Promise.all([Promise.all(p),Promise.all(h),Promise.all(d)]).then(function(y){const x=y[0],w=y[1],C=y[2];return r&&(v.morphAttributes.position=x),o&&(v.morphAttributes.normal=w),l&&(v.morphAttributes.color=C),v.morphTargetsRelative=!0,v})}function Za(v,n){if(v.updateMorphTargets(),n.weights!==void 0)for(let i=0,r=n.weights.length;i<r;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 r=0,o=i.length;r<o;r++)v.morphTargetDictionary[i[r]]=r}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function Ja(v){let n;const i=v.extensions&&v.extensions[ce.KHR_DRACO_MESH_COMPRESSION];if(i?n="draco:"+i.bufferView+":"+i.indices+":"+ms(i.attributes):n=v.indices+":"+ms(v.attributes)+":"+v.mode,v.targets!==void 0)for(let r=0,o=v.targets.length;r<o;r++)n+=":"+ms(v.targets[r]);return n}function ms(v){let n="";const i=Object.keys(v).sort();for(let r=0,o=i.length;r<o;r++)n+=i[r]+":"+v[i[r]]+";";return n}function fs(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 Ha(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 el=new f.Matrix4;class tl{constructor(n={},i={}){this.json=n,this.extensions={},this.plugins={},this.options=i,this.cache=new ka,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 r=!1,o=!1,l=-1;typeof navigator<"u"&&typeof navigator.userAgent<"u"&&(r=/^((?!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"||r||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 r=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([r.getDependencies("scene"),r.getDependencies("animation"),r.getDependencies("camera")])}).then(function(p){const h={scene:p[0][o.scene||0],scenes:p[0],animations:p[1],cameras:p[2],asset:o.asset,parser:r,userData:{}};qt(l,h,o),Tt(h,o),Promise.all(r._invokeAll(function(d){return d.afterRoot&&d.afterRoot(h)})).then(function(){n(h)})}).catch(i)}_markDefs(){const n=this.json.nodes||[],i=this.json.skins||[],r=this.json.meshes||[];for(let o=0,l=i.length;o<l;o++){const p=i[o].joints;for(let h=0,d=p.length;h<d;h++)n[p[h]].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&&(r[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,r){if(n.refs[i]<=1)return r;const o=r.clone(),l=(p,h)=>{const d=this.associations.get(p);d!=null&&this.associations.set(h,d);for(const[y,x]of p.children.entries())l(x,h.children[y])};return l(r,o),o.name+="_instance_"+n.uses[i]++,o}_invokeOne(n){const i=Object.values(this.plugins);i.push(this);for(let r=0;r<i.length;r++){const o=n(i[r]);if(o)return o}return null}_invokeAll(n){const i=Object.values(this.plugins);i.unshift(this);const r=[];for(let o=0;o<i.length;o++){const l=n(i[o]);l&&r.push(l)}return r}getDependency(n,i){const r=n+":"+i;let o=this.cache.get(r);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(r,o)}return o}getDependencies(n){let i=this.cache.get(n);if(!i){const r=this,o=this.json[n+(n==="mesh"?"es":"s")]||[];i=Promise.all(o.map(function(l,p){return r.getDependency(n,p)})),this.cache.add(n,i)}return i}loadBuffer(n){const i=this.json.buffers[n],r=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[ce.KHR_BINARY_GLTF].body);const o=this.options;return new Promise(function(l,p){r.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(r){const o=i.byteLength||0,l=i.byteOffset||0;return r.slice(l,l+o)})}loadAccessor(n){const i=this,r=this.json,o=this.json.accessors[n];if(o.bufferView===void 0&&o.sparse===void 0){const p=us[o.type],h=xn[o.componentType],d=o.normalized===!0,y=new h(o.count*p);return Promise.resolve(new f.BufferAttribute(y,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 h=p[0],d=us[o.type],y=xn[o.componentType],x=y.BYTES_PER_ELEMENT,w=x*d,C=o.byteOffset||0,M=o.bufferView!==void 0?r.bufferViews[o.bufferView].byteStride:void 0,E=o.normalized===!0;let A,L;if(M&&M!==w){const z=Math.floor(C/M),R="InterleavedBuffer:"+o.bufferView+":"+o.componentType+":"+z+":"+o.count;let N=i.cache.get(R);N||(A=new y(h,z*M,o.count*M/x),N=new f.InterleavedBuffer(A,M/x),i.cache.add(R,N)),L=new f.InterleavedBufferAttribute(N,d,C%M/x,E)}else h===null?A=new y(o.count*d):A=new y(h,C,o.count*d),L=new f.BufferAttribute(A,d,E);if(o.sparse!==void 0){const z=us.SCALAR,R=xn[o.sparse.indices.componentType],N=o.sparse.indices.byteOffset||0,I=o.sparse.values.byteOffset||0,O=new R(p[1],N,o.sparse.count*z),F=new y(p[2],I,o.sparse.count*d);h!==null&&(L=new f.BufferAttribute(L.array.slice(),L.itemSize,L.normalized));for(let G=0,B=O.length;G<B;G++){const K=O[G];if(L.setX(K,F[G*d]),d>=2&&L.setY(K,F[G*d+1]),d>=3&&L.setZ(K,F[G*d+2]),d>=4&&L.setW(K,F[G*d+3]),d>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return L})}loadTexture(n){const i=this.json,r=this.options,l=i.textures[n].source,p=i.images[l];let h=this.textureLoader;if(p.uri){const d=r.manager.getHandler(p.uri);d!==null&&(h=d)}return this.loadTextureImage(n,l,h)}loadTextureImage(n,i,r){const o=this,l=this.json,p=l.textures[n],h=l.images[i],d=(h.uri||h.bufferView)+":"+p.sampler;if(this.textureCache[d])return this.textureCache[d];const y=this.loadImageSource(i,r).then(function(x){x.flipY=!1,x.name=p.name||h.name||"",x.name===""&&typeof h.uri=="string"&&h.uri.startsWith("data:image/")===!1&&(x.name=h.uri);const C=(l.samplers||{})[p.sampler]||{};return x.magFilter=Rr[C.magFilter]||f.LinearFilter,x.minFilter=Rr[C.minFilter]||f.LinearMipmapLinearFilter,x.wrapS=Ur[C.wrapS]||f.RepeatWrapping,x.wrapT=Ur[C.wrapT]||f.RepeatWrapping,o.associations.set(x,{textures:n}),x}).catch(function(){return null});return this.textureCache[d]=y,y}loadImageSource(n,i){const r=this,o=this.json,l=this.options;if(this.sourceCache[n]!==void 0)return this.sourceCache[n].then(w=>w.clone());const p=o.images[n],h=self.URL||self.webkitURL;let d=p.uri||"",y=!1;if(p.bufferView!==void 0)d=r.getDependency("bufferView",p.bufferView).then(function(w){y=!0;const C=new Blob([w],{type:p.mimeType});return d=h.createObjectURL(C),d});else if(p.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+n+" is missing URI and bufferView");const x=Promise.resolve(d).then(function(w){return new Promise(function(C,M){let E=C;i.isImageBitmapLoader===!0&&(E=function(A){const L=new f.Texture(A);L.needsUpdate=!0,C(L)}),i.load(f.LoaderUtils.resolveURL(w,l.path),E,void 0,M)})}).then(function(w){return y===!0&&h.revokeObjectURL(d),w.userData.mimeType=p.mimeType||Ha(p.uri),w}).catch(function(w){throw console.error("THREE.GLTFLoader: Couldn't load texture",d),w});return this.sourceCache[n]=x,x}assignTexture(n,i,r,o){const l=this;return this.getDependency("texture",r.index).then(function(p){if(!p)return null;if(r.texCoord!==void 0&&r.texCoord>0&&(p=p.clone(),p.channel=r.texCoord),l.extensions[ce.KHR_TEXTURE_TRANSFORM]){const h=r.extensions!==void 0?r.extensions[ce.KHR_TEXTURE_TRANSFORM]:void 0;if(h){const d=l.associations.get(p);p=l.extensions[ce.KHR_TEXTURE_TRANSFORM].extendTexture(p,h),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 r=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 h="PointsMaterial:"+r.uuid;let d=this.cache.get(h);d||(d=new f.PointsMaterial,f.Material.prototype.copy.call(d,r),d.color.copy(r.color),d.map=r.map,d.sizeAttenuation=!1,this.cache.add(h,d)),r=d}else if(n.isLine){const h="LineBasicMaterial:"+r.uuid;let d=this.cache.get(h);d||(d=new f.LineBasicMaterial,f.Material.prototype.copy.call(d,r),d.color.copy(r.color),d.map=r.map,this.cache.add(h,d)),r=d}if(o||l||p){let h="ClonedMaterial:"+r.uuid+":";o&&(h+="derivative-tangents:"),l&&(h+="vertex-colors:"),p&&(h+="flat-shading:");let d=this.cache.get(h);d||(d=r.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(h,d),this.associations.set(d,this.associations.get(r))),r=d}n.material=r}getMaterialType(){return f.MeshStandardMaterial}loadMaterial(n){const i=this,r=this.json,o=this.extensions,l=r.materials[n];let p;const h={},d=l.extensions||{},y=[];if(d[ce.KHR_MATERIALS_UNLIT]){const w=o[ce.KHR_MATERIALS_UNLIT];p=w.getMaterialType(),y.push(w.extendParams(h,l,i))}else{const w=l.pbrMetallicRoughness||{};if(h.color=new f.Color(1,1,1),h.opacity=1,Array.isArray(w.baseColorFactor)){const C=w.baseColorFactor;h.color.fromArray(C),h.opacity=C[3]}w.baseColorTexture!==void 0&&y.push(i.assignTexture(h,"map",w.baseColorTexture,3001)),h.metalness=w.metallicFactor!==void 0?w.metallicFactor:1,h.roughness=w.roughnessFactor!==void 0?w.roughnessFactor:1,w.metallicRoughnessTexture!==void 0&&(y.push(i.assignTexture(h,"metalnessMap",w.metallicRoughnessTexture)),y.push(i.assignTexture(h,"roughnessMap",w.metallicRoughnessTexture))),p=this._invokeOne(function(C){return C.getMaterialType&&C.getMaterialType(n)}),y.push(Promise.all(this._invokeAll(function(C){return C.extendMaterialParams&&C.extendMaterialParams(n,h)})))}l.doubleSided===!0&&(h.side=f.DoubleSide);const x=l.alphaMode||ds.OPAQUE;if(x===ds.BLEND?(h.transparent=!0,h.depthWrite=!1):(h.transparent=!1,x===ds.MASK&&(h.alphaTest=l.alphaCutoff!==void 0?l.alphaCutoff:.5)),l.normalTexture!==void 0&&p!==f.MeshBasicMaterial&&(y.push(i.assignTexture(h,"normalMap",l.normalTexture)),h.normalScale=new f.Vector2(1,1),l.normalTexture.scale!==void 0)){const w=l.normalTexture.scale;h.normalScale.set(w,w)}return l.occlusionTexture!==void 0&&p!==f.MeshBasicMaterial&&(y.push(i.assignTexture(h,"aoMap",l.occlusionTexture)),l.occlusionTexture.strength!==void 0&&(h.aoMapIntensity=l.occlusionTexture.strength)),l.emissiveFactor!==void 0&&p!==f.MeshBasicMaterial&&(h.emissive=new f.Color().fromArray(l.emissiveFactor)),l.emissiveTexture!==void 0&&p!==f.MeshBasicMaterial&&y.push(i.assignTexture(h,"emissiveMap",l.emissiveTexture,3001)),Promise.all(y).then(function(){const w=new p(h);return l.name&&(w.name=l.name),Tt(w,l),i.associations.set(w,{materials:n}),l.extensions&&qt(o,w,l),w})}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,r=this.extensions,o=this.primitiveCache;function l(h){return r[ce.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(h,i).then(function(d){return Gr(d,h,i)})}const p=[];for(let h=0,d=n.length;h<d;h++){const y=n[h],x=Ja(y),w=o[x];if(w)p.push(w.promise);else{let C;y.extensions&&y.extensions[ce.KHR_DRACO_MESH_COMPRESSION]?C=l(y):C=Gr(new f.BufferGeometry,y,i),o[x]={primitive:y,promise:C},p.push(C)}}return Promise.all(p)}loadMesh(n){const i=this,r=this.json,o=this.extensions,l=r.meshes[n],p=l.primitives,h=[];for(let d=0,y=p.length;d<y;d++){const x=p[d].material===void 0?Qa(this.cache):this.getDependency("material",p[d].material);h.push(x)}return h.push(i.loadGeometries(p)),Promise.all(h).then(function(d){const y=d.slice(0,d.length-1),x=d[d.length-1],w=[];for(let M=0,E=x.length;M<E;M++){const A=x[M],L=p[M];let z;const R=y[M];if(L.mode===He.TRIANGLES||L.mode===He.TRIANGLE_STRIP||L.mode===He.TRIANGLE_FAN||L.mode===void 0)z=l.isSkinnedMesh===!0?new f.SkinnedMesh(A,R):new f.Mesh(A,R),z.isSkinnedMesh===!0&&z.normalizeSkinWeights(),L.mode===He.TRIANGLE_STRIP?z.geometry=Sr(z.geometry,f.TriangleStripDrawMode):L.mode===He.TRIANGLE_FAN&&(z.geometry=Sr(z.geometry,f.TriangleFanDrawMode));else if(L.mode===He.LINES)z=new f.LineSegments(A,R);else if(L.mode===He.LINE_STRIP)z=new f.Line(A,R);else if(L.mode===He.LINE_LOOP)z=new f.LineLoop(A,R);else if(L.mode===He.POINTS)z=new f.Points(A,R);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+L.mode);Object.keys(z.geometry.morphAttributes).length>0&&Za(z,l),z.name=i.createUniqueName(l.name||"mesh_"+n),Tt(z,l),L.extensions&&qt(o,z,L),i.assignFinalMaterial(z),w.push(z)}for(let M=0,E=w.length;M<E;M++)i.associations.set(w[M],{meshes:n,primitives:M});if(w.length===1)return l.extensions&&qt(o,w[0],l),w[0];const C=new f.Group;l.extensions&&qt(o,C,l),i.associations.set(C,{meshes:n});for(let M=0,E=w.length;M<E;M++)C.add(w[M]);return C})}loadCamera(n){let i;const r=this.json.cameras[n],o=r[r.type];if(!o){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return r.type==="perspective"?i=new f.PerspectiveCamera(f.MathUtils.radToDeg(o.yfov),o.aspectRatio||1,o.znear||1,o.zfar||2e6):r.type==="orthographic"&&(i=new f.OrthographicCamera(-o.xmag,o.xmag,o.ymag,-o.ymag,o.znear,o.zfar)),r.name&&(i.name=this.createUniqueName(r.name)),Tt(i,r),Promise.resolve(i)}loadSkin(n){const i=this.json.skins[n],r=[];for(let o=0,l=i.joints.length;o<l;o++)r.push(this._loadNodeShallow(i.joints[o]));return i.inverseBindMatrices!==void 0?r.push(this.getDependency("accessor",i.inverseBindMatrices)):r.push(null),Promise.all(r).then(function(o){const l=o.pop(),p=o,h=[],d=[];for(let y=0,x=p.length;y<x;y++){const w=p[y];if(w){h.push(w);const C=new f.Matrix4;l!==null&&C.fromArray(l.array,y*16),d.push(C)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',i.joints[y])}return new f.Skeleton(h,d)})}loadAnimation(n){const r=this.json.animations[n],o=r.name?r.name:"animation_"+n,l=[],p=[],h=[],d=[],y=[];for(let x=0,w=r.channels.length;x<w;x++){const C=r.channels[x],M=r.samplers[C.sampler],E=C.target,A=E.node,L=r.parameters!==void 0?r.parameters[M.input]:M.input,z=r.parameters!==void 0?r.parameters[M.output]:M.output;E.node!==void 0&&(l.push(this.getDependency("node",A)),p.push(this.getDependency("accessor",L)),h.push(this.getDependency("accessor",z)),d.push(M),y.push(E))}return Promise.all([Promise.all(l),Promise.all(p),Promise.all(h),Promise.all(d),Promise.all(y)]).then(function(x){const w=x[0],C=x[1],M=x[2],E=x[3],A=x[4],L=[];for(let z=0,R=w.length;z<R;z++){const N=w[z],I=C[z],O=M[z],F=E[z],G=A[z];if(N===void 0)continue;N.updateMatrix();let B;switch(It[G.path]){case It.weights:B=f.NumberKeyframeTrack;break;case It.rotation:B=f.QuaternionKeyframeTrack;break;case It.position:case It.scale:default:B=f.VectorKeyframeTrack;break}const K=N.name?N.name:N.uuid,$=F.interpolation!==void 0?qa[F.interpolation]:f.InterpolateLinear,q=[];It[G.path]===It.weights?N.traverse(function(he){he.morphTargetInfluences&&q.push(he.name?he.name:he.uuid)}):q.push(K);let se=O.array;if(O.normalized){const he=fs(se.constructor),ie=new Float32Array(se.length);for(let fe=0,pe=se.length;fe<pe;fe++)ie[fe]=se[fe]*he;se=ie}for(let he=0,ie=q.length;he<ie;he++){const fe=new B(q[he]+"."+It[G.path],I.array,se,$);F.interpolation==="CUBICSPLINE"&&(fe.createInterpolant=function(te){const W=this instanceof f.QuaternionKeyframeTrack?Ya:jr;return new W(this.times,this.values,this.getValueSize()/3,te)},fe.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0),L.push(fe)}}return new f.AnimationClip(o,void 0,L)})}createNodeMesh(n){const i=this.json,r=this,o=i.nodes[n];return o.mesh===void 0?null:r.getDependency("mesh",o.mesh).then(function(l){const p=r._getNodeRef(r.meshCache,o.mesh,l);return o.weights!==void 0&&p.traverse(function(h){if(h.isMesh)for(let d=0,y=o.weights.length;d<y;d++)h.morphTargetInfluences[d]=o.weights[d]}),p})}loadNode(n){const i=this.json,r=this,o=i.nodes[n],l=r._loadNodeShallow(n),p=[],h=o.children||[];for(let y=0,x=h.length;y<x;y++)p.push(r.getDependency("node",h[y]));const d=o.skin===void 0?Promise.resolve(null):r.getDependency("skin",o.skin);return Promise.all([l,Promise.all(p),d]).then(function(y){const x=y[0],w=y[1],C=y[2];C!==null&&x.traverse(function(M){M.isSkinnedMesh&&M.bind(C,el)});for(let M=0,E=w.length;M<E;M++)x.add(w[M]);return x})}_loadNodeShallow(n){const i=this.json,r=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):"",h=[],d=o._invokeOne(function(y){return y.createNodeMesh&&y.createNodeMesh(n)});return d&&h.push(d),l.camera!==void 0&&h.push(o.getDependency("camera",l.camera).then(function(y){return o._getNodeRef(o.cameraCache,l.camera,y)})),o._invokeAll(function(y){return y.createNodeAttachment&&y.createNodeAttachment(n)}).forEach(function(y){h.push(y)}),this.nodeCache[n]=Promise.all(h).then(function(y){let x;if(l.isBone===!0?x=new f.Bone:y.length>1?x=new f.Group:y.length===1?x=y[0]:x=new f.Object3D,x!==y[0])for(let w=0,C=y.length;w<C;w++)x.add(y[w]);if(l.name&&(x.userData.name=l.name,x.name=p),Tt(x,l),l.extensions&&qt(r,x,l),l.matrix!==void 0){const w=new f.Matrix4;w.fromArray(l.matrix),x.applyMatrix4(w)}else l.translation!==void 0&&x.position.fromArray(l.translation),l.rotation!==void 0&&x.quaternion.fromArray(l.rotation),l.scale!==void 0&&x.scale.fromArray(l.scale);return o.associations.has(x)||o.associations.set(x,{}),o.associations.get(x).nodes=n,x}),this.nodeCache[n]}loadScene(n){const i=this.extensions,r=this.json.scenes[n],o=this,l=new f.Group;r.name&&(l.name=o.createUniqueName(r.name)),Tt(l,r),r.extensions&&qt(i,l,r);const p=r.nodes||[],h=[];for(let d=0,y=p.length;d<y;d++)h.push(o.getDependency("node",p[d]));return Promise.all(h).then(function(d){for(let x=0,w=d.length;x<w;x++)l.add(d[x]);const y=x=>{const w=new Map;for(const[C,M]of o.associations)(C instanceof f.Material||C instanceof f.Texture)&&w.set(C,M);return x.traverse(C=>{const M=o.associations.get(C);M!=null&&w.set(C,M)}),w};return o.associations=y(l),l})}}function nl(v,n,i){const r=n.attributes,o=new f.Box3;if(r.POSITION!==void 0){const h=i.json.accessors[r.POSITION],d=h.min,y=h.max;if(d!==void 0&&y!==void 0){if(o.set(new f.Vector3(d[0],d[1],d[2]),new f.Vector3(y[0],y[1],y[2])),h.normalized){const x=fs(xn[h.componentType]);o.min.multiplyScalar(x),o.max.multiplyScalar(x)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const l=n.targets;if(l!==void 0){const h=new f.Vector3,d=new f.Vector3;for(let y=0,x=l.length;y<x;y++){const w=l[y];if(w.POSITION!==void 0){const C=i.json.accessors[w.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 A=fs(xn[C.componentType]);d.multiplyScalar(A)}h.max(d)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}o.expandByVector(h)}v.boundingBox=o;const p=new f.Sphere;o.getCenter(p.center),p.radius=o.min.distanceTo(o.max)/2,v.boundingSphere=p}function Gr(v,n,i){const r=n.attributes,o=[];function l(p,h){return i.getDependency("accessor",p).then(function(d){v.setAttribute(h,d)})}for(const p in r){const h=hs[p]||p.toLowerCase();h in v.attributes||o.push(l(r[p],h))}if(n.indices!==void 0&&!v.index){const p=i.getDependency("accessor",n.indices).then(function(h){v.setIndex(h)});o.push(p)}return Tt(v,n),nl(v,n,i),Promise.all(o).then(function(){return n.targets!==void 0?Wa(v,n.targets,i):v})}class Kr extends f.ExtrudeGeometry{constructor(n,i={}){const{bevelEnabled:r=!1,bevelSize:o=8,bevelThickness:l=10,font:p,height:h=50,size:d=100,lineHeight:y=1,letterSpacing:x=0,...w}=i;if(p===void 0)super();else{const C=p.generateShapes(n,d,{lineHeight:y,letterSpacing:x});super(C,{...w,bevelEnabled:r,bevelSize:o,bevelThickness:l,depth:h})}this.type="TextGeometry"}}const il={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
|
-
`},
|
|
40
|
+
`},sl={uniforms:{tDiffuse:{value:null},v:{value:1/512}},vertexShader:`
|
|
41
41
|
varying vec2 vUv;
|
|
42
42
|
|
|
43
43
|
void main() {
|
|
@@ -70,24 +70,24 @@
|
|
|
70
70
|
gl_FragColor = sum;
|
|
71
71
|
|
|
72
72
|
}
|
|
73
|
-
`};function jr(b,i,n){const r=n.length-b-1;if(i>=n[r])return r-1;if(i<=n[b])return b;let o=b,l=r,p=Math.floor((o+l)/2);for(;i<n[p]||i>=n[p+1];)i<n[p]?l=p:o=p,p=Math.floor((o+l)/2);return p}function Ha(b,i,n,r){const o=[],l=[],p=[];o[0]=1;for(let u=1;u<=n;++u){l[u]=i-r[b+1-u],p[u]=r[b+u]-i;let d=0;for(let _=0;_<u;++_){const w=p[_+1],y=l[u-_],C=o[_]/(w+y);o[_]=d+w*C,d=y*C}o[u]=d}return o}function el(b,i,n,r){const o=jr(b,r,i),l=Ha(o,r,b,i),p=new f.Vector4(0,0,0,0);for(let u=0;u<=b;++u){const d=n[o-b+u],_=l[u],w=d.w*_;p.x+=d.x*w,p.y+=d.y*w,p.z+=d.z*w,p.w+=d.w*_}return p}function tl(b,i,n,r,o){const l=[];for(let y=0;y<=n;++y)l[y]=0;const p=[];for(let y=0;y<=r;++y)p[y]=l.slice(0);const u=[];for(let y=0;y<=n;++y)u[y]=l.slice(0);u[0][0]=1;const d=l.slice(0),_=l.slice(0);for(let y=1;y<=n;++y){d[y]=i-o[b+1-y],_[y]=o[b+y]-i;let C=0;for(let M=0;M<y;++M){const T=_[M+1],V=d[y-M];u[y][M]=T+V;const O=u[M][y-1]/u[y][M];u[M][y]=C+T*O,C=V*O}u[y][y]=C}for(let y=0;y<=n;++y)p[0][y]=u[y][n];for(let y=0;y<=n;++y){let C=0,M=1;const T=[];for(let V=0;V<=n;++V)T[V]=l.slice(0);T[0][0]=1;for(let V=1;V<=r;++V){let O=0;const z=y-V,F=n-V;y>=V&&(T[M][0]=T[C][0]/u[F+1][z],O=T[M][0]*u[z][F]);const N=z>=-1?1:-z,I=y-1<=F?V-1:n-y;for(let $=N;$<=I;++$)T[M][$]=(T[C][$]-T[C][$-1])/u[F+1][z+$],O+=T[M][$]*u[z+$][F];y<=F&&(T[M][V]=-T[C][V-1]/u[F+1][y],O+=T[M][V]*u[y][F]),p[V][y]=O;const Q=C;C=M,M=Q}}let w=n;for(let y=1;y<=r;++y){for(let C=0;C<=n;++C)p[y][C]*=w;w*=n-y}return p}function nl(b,i,n,r,o){const l=o<b?o:b,p=[],u=jr(b,r,i),d=tl(u,r,b,l,i),_=[];for(let w=0;w<n.length;++w){const y=n[w].clone(),C=y.w;y.x*=C,y.y*=C,y.z*=C,_[w]=y}for(let w=0;w<=l;++w){const y=_[u-b].clone().multiplyScalar(d[w][0]);for(let C=1;C<=b;++C)y.add(_[u-b+C].clone().multiplyScalar(d[w][C]));p[w]=y}for(let w=l+1;w<=o+1;++w)p[w]=new f.Vector4(0,0,0);return p}function il(b,i){let n=1;for(let o=2;o<=b;++o)n*=o;let r=1;for(let o=2;o<=i;++o)r*=o;for(let o=2;o<=b-i;++o)r*=o;return n/r}function sl(b){const i=b.length,n=[],r=[];for(let l=0;l<i;++l){const p=b[l];n[l]=new f.Vector3(p.x,p.y,p.z),r[l]=p.w}const o=[];for(let l=0;l<i;++l){const p=n[l].clone();for(let u=1;u<=l;++u)p.sub(o[l-u].clone().multiplyScalar(il(l,u)*r[u]));o[l]=p.divideScalar(r[0])}return o}function rl(b,i,n,r,o){const l=nl(b,i,n,r,o);return sl(l)}class Ur extends f.Curve{constructor(i,n,r,o,l){super(),this.degree=i,this.knots=n,this.controlPoints=[],this.startKnot=o||0,this.endKnot=l||this.knots.length-1;for(let p=0;p<r.length;++p){const u=r[p];this.controlPoints[p]=new f.Vector4(u.x,u.y,u.z,u.w)}}getPoint(i,n){const r=n||new f.Vector3,o=this.knots[this.startKnot]+i*(this.knots[this.endKnot]-this.knots[this.startKnot]),l=el(this.degree,this.knots,this.controlPoints,o);return l.w!=1&&l.divideScalar(l.w),r.set(l.x,l.y,l.z)}getTangent(i,n){const r=n||new f.Vector3,o=this.knots[0]+i*(this.knots[this.knots.length-1]-this.knots[0]),l=rl(this.degree,this.knots,this.controlPoints,o,1);return r.copy(l[1]).normalize(),r}}let oe,Ae,Ge;class ol extends f.Loader{constructor(i){super(i)}load(i,n,r,o){const l=this,p=l.path===""?f.LoaderUtils.extractUrlBase(i):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(i,function(d){try{n(l.parse(d,p))}catch(_){o?o(_):console.error(_),l.manager.itemError(i)}},r,o)}parse(i,n){if(ul(i))oe=new hl().parse(i);else{const o=Yr(i);if(!dl(o))throw new Error("THREE.FBXLoader: Unknown format.");if(Kr(o)<7e3)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+Kr(o));oe=new pl().parse(o)}const r=new f.TextureLoader(this.manager).setPath(this.resourcePath||n).setCrossOrigin(this.crossOrigin);return new al(r,this.manager).parse(oe)}}class al{constructor(i,n){this.textureLoader=i,this.manager=n}parse(){Ae=this.parseConnections();const i=this.parseImages(),n=this.parseTextures(i),r=this.parseMaterials(n),o=this.parseDeformers(),l=new ll().parse(o);return this.parseScene(o,l,r),Ge}parseConnections(){const i=new Map;return"Connections"in oe&&oe.Connections.connections.forEach(function(r){const o=r[0],l=r[1],p=r[2];i.has(o)||i.set(o,{parents:[],children:[]});const u={ID:l,relationship:p};i.get(o).parents.push(u),i.has(l)||i.set(l,{parents:[],children:[]});const d={ID:o,relationship:p};i.get(l).children.push(d)}),i}parseImages(){const i={},n={};if("Video"in oe.Objects){const r=oe.Objects.Video;for(const o in r){const l=r[o],p=parseInt(o);if(i[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 _=this.parseImage(r[o]);n[l.RelativeFilename||l.Filename]=_}}}}for(const r in i){const o=i[r];n[o]!==void 0?i[r]=n[o]:i[r]=i[r].split("\\").pop()}return i}parseImage(i){const n=i.Content,r=i.RelativeFilename||i.Filename,o=r.slice(r.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 ",r),l="image/tga";break;default:console.warn('FBXLoader: Image type "'+o+'" is not supported.');return}if(typeof n=="string")return"data:"+l+";base64,"+n;{const p=new Uint8Array(n);return window.URL.createObjectURL(new Blob([p],{type:l}))}}parseTextures(i){const n=new Map;if("Texture"in oe.Objects){const r=oe.Objects.Texture;for(const o in r){const l=this.parseTexture(r[o],i);n.set(parseInt(o),l)}}return n}parseTexture(i,n){const r=this.loadTexture(i,n);r.ID=i.id,r.name=i.attrName;const o=i.WrapModeU,l=i.WrapModeV,p=o!==void 0?o.value:0,u=l!==void 0?l.value:0;if(r.wrapS=p===0?f.RepeatWrapping:f.ClampToEdgeWrapping,r.wrapT=u===0?f.RepeatWrapping:f.ClampToEdgeWrapping,"Scaling"in i){const d=i.Scaling.value;r.repeat.x=d[0],r.repeat.y=d[1]}return r}loadTexture(i,n){let r;const o=this.textureLoader.path,l=Ae.get(i.id).children;l!==void 0&&l.length>0&&n[l[0].ID]!==void 0&&(r=n[l[0].ID],(r.indexOf("blob:")===0||r.indexOf("data:")===0)&&this.textureLoader.setPath(void 0));let p;const u=i.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",i.RelativeFilename),p=new f.Texture):(d.setPath(this.textureLoader.path),p=d.load(r))}else u==="psd"?(console.warn("FBXLoader: PSD textures are not supported, creating placeholder texture for",i.RelativeFilename),p=new f.Texture):p=this.textureLoader.load(r);return this.textureLoader.setPath(o),p}parseMaterials(i){const n=new Map;if("Material"in oe.Objects){const r=oe.Objects.Material;for(const o in r){const l=this.parseMaterial(r[o],i);l!==null&&n.set(parseInt(o),l)}}return n}parseMaterial(i,n){const r=i.id,o=i.attrName;let l=i.ShadingModel;if(typeof l=="object"&&(l=l.value),!Ae.has(r))return null;const p=this.parseParameters(i,n,r);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(i,n,r){const o={};i.BumpFactor&&(o.bumpScale=i.BumpFactor.value),i.Diffuse?o.color=new f.Color().fromArray(i.Diffuse.value):i.DiffuseColor&&(i.DiffuseColor.type==="Color"||i.DiffuseColor.type==="ColorRGB")&&(o.color=new f.Color().fromArray(i.DiffuseColor.value)),i.DisplacementFactor&&(o.displacementScale=i.DisplacementFactor.value),i.Emissive?o.emissive=new f.Color().fromArray(i.Emissive.value):i.EmissiveColor&&(i.EmissiveColor.type==="Color"||i.EmissiveColor.type==="ColorRGB")&&(o.emissive=new f.Color().fromArray(i.EmissiveColor.value)),i.EmissiveFactor&&(o.emissiveIntensity=parseFloat(i.EmissiveFactor.value)),i.Opacity&&(o.opacity=parseFloat(i.Opacity.value)),o.opacity<1&&(o.transparent=!0),i.ReflectionFactor&&(o.reflectivity=i.ReflectionFactor.value),i.Shininess&&(o.shininess=i.Shininess.value),i.Specular?o.specular=new f.Color().fromArray(i.Specular.value):i.SpecularColor&&i.SpecularColor.type==="Color"&&(o.specular=new f.Color().fromArray(i.SpecularColor.value));const l=this;return Ae.get(r).children.forEach(function(p){const u=p.relationship;switch(u){case"Bump":o.bumpMap=l.getTexture(n,p.ID);break;case"Maya|TEX_ao_map":o.aoMap=l.getTexture(n,p.ID);break;case"DiffuseColor":case"Maya|TEX_color_map":o.map=l.getTexture(n,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(n,p.ID);break;case"EmissiveColor":o.emissiveMap=l.getTexture(n,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(n,p.ID);break;case"ReflectionColor":o.envMap=l.getTexture(n,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(n,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(n,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(i,n){return"LayeredTexture"in oe.Objects&&n in oe.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),n=Ae.get(n).children[0].ID),i.get(n)}parseDeformers(){const i={},n={};if("Deformer"in oe.Objects){const r=oe.Objects.Deformer;for(const o in r){const l=r[o],p=Ae.get(parseInt(o));if(l.attrType==="Skin"){const u=this.parseSkeleton(p,r);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,i[o]=u}else if(l.attrType==="BlendShape"){const u={id:o};u.rawTargets=this.parseMorphTargets(p,r),u.id=o,p.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),n[o]=u}}}return{skeletons:i,morphTargets:n}}parseSkeleton(i,n){const r=[];return i.children.forEach(function(o){const l=n[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),r.push(p)}),{rawBones:r,bones:[]}}parseMorphTargets(i,n){const r=[];for(let o=0;o<i.children.length;o++){const l=i.children[o],p=n[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,r.push(u)}return r}parseScene(i,n,r){Ge=new f.Group;const o=this.parseModels(i.skeletons,n,r),l=oe.Objects.Model,p=this;o.forEach(function(d){const _=l[d.ID];p.setLookAtProperties(d,_),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(i.skeletons,n,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 _=$r(d.userData.transformData);d.applyMatrix4(_),d.updateWorldMatrix()}});const u=new cl().parse();Ge.children.length===1&&Ge.children[0].isGroup&&(Ge.children[0].animations=u,Ge=Ge.children[0]),Ge.animations=u}parseModels(i,n,r){const o=new Map,l=oe.Objects.Model;for(const p in l){const u=parseInt(p),d=l[p],_=Ae.get(u);let w=this.buildSkeleton(_,i,u,d.attrName);if(!w){switch(d.attrType){case"Camera":w=this.createCamera(_);break;case"Light":w=this.createLight(_);break;case"Mesh":w=this.createMesh(_,n,r);break;case"NurbsCurve":w=this.createCurve(_,n);break;case"LimbNode":case"Root":w=new f.Bone;break;case"Null":default:w=new f.Group;break}w.name=d.attrName?f.PropertyBinding.sanitizeNodeName(d.attrName):"",w.ID=u}this.getTransformData(w,d),o.set(u,w)}return o}buildSkeleton(i,n,r,o){let l=null;return i.parents.forEach(function(p){for(const u in n){const d=n[u];d.rawBones.forEach(function(_,w){if(_.ID===p.ID){const y=l;l=new f.Bone,l.matrixWorld.copy(_.transformLink),l.name=o?f.PropertyBinding.sanitizeNodeName(o):"",l.ID=r,d.bones[w]=l,y!==null&&l.add(y)}})}}),l}createCamera(i){let n,r;if(i.children.forEach(function(o){const l=oe.Objects.NodeAttribute[o.ID];l!==void 0&&(r=l)}),r===void 0)n=new f.Object3D;else{let o=0;r.CameraProjectionType!==void 0&&r.CameraProjectionType.value===1&&(o=1);let l=1;r.NearPlane!==void 0&&(l=r.NearPlane.value/1e3);let p=1e3;r.FarPlane!==void 0&&(p=r.FarPlane.value/1e3);let u=window.innerWidth,d=window.innerHeight;r.AspectWidth!==void 0&&r.AspectHeight!==void 0&&(u=r.AspectWidth.value,d=r.AspectHeight.value);const _=u/d;let w=45;r.FieldOfView!==void 0&&(w=r.FieldOfView.value);const y=r.FocalLength?r.FocalLength.value:null;switch(o){case 0:n=new f.PerspectiveCamera(w,_,l,p),y!==null&&n.setFocalLength(y);break;case 1:n=new f.OrthographicCamera(-u/2,u/2,d/2,-d/2,l,p);break;default:console.warn("THREE.FBXLoader: Unknown camera type "+o+"."),n=new f.Object3D;break}}return n}createLight(i){let n,r;if(i.children.forEach(function(o){const l=oe.Objects.NodeAttribute[o.ID];l!==void 0&&(r=l)}),r===void 0)n=new f.Object3D;else{let o;r.LightType===void 0?o=0:o=r.LightType.value;let l=16777215;r.Color!==void 0&&(l=new f.Color().fromArray(r.Color.value));let p=r.Intensity===void 0?1:r.Intensity.value/100;r.CastLightOnObject!==void 0&&r.CastLightOnObject.value===0&&(p=0);let u=0;r.FarAttenuationEnd!==void 0&&(r.EnableFarAttenuation!==void 0&&r.EnableFarAttenuation.value===0?u=0:u=r.FarAttenuationEnd.value);const d=1;switch(o){case 0:n=new f.PointLight(l,p,u,d);break;case 1:n=new f.DirectionalLight(l,p);break;case 2:let _=Math.PI/3;r.InnerAngle!==void 0&&(_=f.MathUtils.degToRad(r.InnerAngle.value));let w=0;r.OuterAngle!==void 0&&(w=f.MathUtils.degToRad(r.OuterAngle.value),w=Math.max(w,1)),n=new f.SpotLight(l,p,u,_,w,d);break;default:console.warn("THREE.FBXLoader: Unknown light type "+r.LightType.value+", defaulting to a PointLight."),n=new f.PointLight(l,p);break}r.CastShadows!==void 0&&r.CastShadows.value===1&&(n.castShadow=!0)}return n}createMesh(i,n,r){let o,l=null,p=null;const u=[];return i.children.forEach(function(d){n.has(d.ID)&&(l=n.get(d.ID)),r.has(d.ID)&&u.push(r.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(i,n){const r=i.children.reduce(function(l,p){return n.has(p.ID)&&(l=n.get(p.ID)),l},null),o=new f.LineBasicMaterial({color:3342591,linewidth:1});return new f.Line(r,o)}getTransformData(i,n){const r={};"InheritType"in n&&(r.inheritType=parseInt(n.InheritType.value)),"RotationOrder"in n?r.eulerOrder=Xr(n.RotationOrder.value):r.eulerOrder="ZYX","Lcl_Translation"in n&&(r.translation=n.Lcl_Translation.value),"PreRotation"in n&&(r.preRotation=n.PreRotation.value),"Lcl_Rotation"in n&&(r.rotation=n.Lcl_Rotation.value),"PostRotation"in n&&(r.postRotation=n.PostRotation.value),"Lcl_Scaling"in n&&(r.scale=n.Lcl_Scaling.value),"ScalingOffset"in n&&(r.scalingOffset=n.ScalingOffset.value),"ScalingPivot"in n&&(r.scalingPivot=n.ScalingPivot.value),"RotationOffset"in n&&(r.rotationOffset=n.RotationOffset.value),"RotationPivot"in n&&(r.rotationPivot=n.RotationPivot.value),i.userData.transformData=r}setLookAtProperties(i,n){"LookAtProperty"in n&&Ae.get(i.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;i.target!==void 0?(i.target.position.fromArray(p),Ge.add(i.target)):i.lookAt(new f.Vector3().fromArray(p))}}})}bindSkeleton(i,n,r){const o=this.parsePoseNodes();for(const l in i){const p=i[l];Ae.get(parseInt(p.ID)).parents.forEach(function(d){if(n.has(d.ID)){const _=d.ID;Ae.get(_).parents.forEach(function(y){r.has(y.ID)&&r.get(y.ID).bind(new f.Skeleton(p.bones),o[y.ID])})}})}}parsePoseNodes(){const i={};if("Pose"in oe.Objects){const n=oe.Objects.Pose;for(const r in n)if(n[r].attrType==="BindPose"&&n[r].NbPoseNodes>0){const o=n[r].PoseNode;Array.isArray(o)?o.forEach(function(l){i[l.Node]=new f.Matrix4().fromArray(l.Matrix.a)}):i[o.Node]=new f.Matrix4().fromArray(o.Matrix.a)}}return i}createAmbientLight(){if("GlobalSettings"in oe&&"AmbientColor"in oe.GlobalSettings){const i=oe.GlobalSettings.AmbientColor.value,n=i[0],r=i[1],o=i[2];if(n!==0||r!==0||o!==0){const l=new f.Color(n,r,o);Ge.add(new f.AmbientLight(l,1))}}}}class ll{parse(i){const n=new Map;if("Geometry"in oe.Objects){const r=oe.Objects.Geometry;for(const o in r){const l=Ae.get(parseInt(o)),p=this.parseGeometry(l,r[o],i);n.set(parseInt(o),p)}}return n}parseGeometry(i,n,r){switch(n.attrType){case"Mesh":return this.parseMeshGeometry(i,n,r);case"NurbsCurve":return this.parseNurbsGeometry(n)}}parseMeshGeometry(i,n,r){const o=r.skeletons,l=[],p=i.parents.map(function(y){return oe.Objects.Model[y.ID]});if(p.length===0)return;const u=i.children.reduce(function(y,C){return o[C.ID]!==void 0&&(y=o[C.ID]),y},null);i.children.forEach(function(y){r.morphTargets[y.ID]!==void 0&&l.push(r.morphTargets[y.ID])});const d=p[0],_={};"RotationOrder"in d&&(_.eulerOrder=Xr(d.RotationOrder.value)),"InheritType"in d&&(_.inheritType=parseInt(d.InheritType.value)),"GeometricTranslation"in d&&(_.translation=d.GeometricTranslation.value),"GeometricRotation"in d&&(_.rotation=d.GeometricRotation.value),"GeometricScaling"in d&&(_.scale=d.GeometricScaling.value);const w=$r(_);return this.genGeometry(n,u,l,w)}genGeometry(i,n,r,o){const l=new f.BufferGeometry;i.attrName&&(l.name=i.attrName);const p=this.parseGeoNode(i,n),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)),n&&(l.setAttribute("skinIndex",new f.Uint16BufferAttribute(u.weightsIndices,4)),l.setAttribute("skinWeight",new f.Float32BufferAttribute(u.vertexWeights,4)),l.FBX_Deformer=n),u.normal.length>0){const _=new f.Matrix3().getNormalMatrix(o),w=new f.Float32BufferAttribute(u.normal,3);w.applyNormalMatrix(_),l.setAttribute("normal",w)}if(u.uvs.forEach(function(_,w){let y="uv"+(w+1).toString();w===0&&(y="uv"),l.setAttribute(y,new f.Float32BufferAttribute(u.uvs[w],2))}),p.material&&p.material.mappingType!=="AllSame"){let _=u.materialIndex[0],w=0;if(u.materialIndex.forEach(function(y,C){y!==_&&(l.addGroup(w,C-w,_),_=y,w=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,_)}l.groups.length===0&&l.addGroup(0,u.materialIndex.length,u.materialIndex[0])}return this.addMorphTargets(l,i,r,o),l}parseGeoNode(i,n){const r={};if(r.vertexPositions=i.Vertices!==void 0?i.Vertices.a:[],r.vertexIndices=i.PolygonVertexIndex!==void 0?i.PolygonVertexIndex.a:[],i.LayerElementColor&&(r.color=this.parseVertexColors(i.LayerElementColor[0])),i.LayerElementMaterial&&(r.material=this.parseMaterialIndices(i.LayerElementMaterial[0])),i.LayerElementNormal&&(r.normal=this.parseNormals(i.LayerElementNormal[0])),i.LayerElementUV){r.uv=[];let o=0;for(;i.LayerElementUV[o];)i.LayerElementUV[o].UV&&r.uv.push(this.parseUVs(i.LayerElementUV[o])),o++}return r.weightTable={},n!==null&&(r.skeleton=n,n.rawBones.forEach(function(o,l){o.indices.forEach(function(p,u){r.weightTable[p]===void 0&&(r.weightTable[p]=[]),r.weightTable[p].push({id:l,weight:o.weights[u]})})})),r}genBuffers(i){const n={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]};let r=0,o=0,l=!1,p=[],u=[],d=[],_=[],w=[],y=[];const C=this;return i.vertexIndices.forEach(function(M,T){let V,O=!1;M<0&&(M=M^-1,O=!0);let z=[],F=[];if(p.push(M*3,M*3+1,M*3+2),i.color){const N=Ci(T,r,M,i.color);d.push(N[0],N[1],N[2])}if(i.skeleton){if(i.weightTable[M]!==void 0&&i.weightTable[M].forEach(function(N){F.push(N.weight),z.push(N.id)}),F.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],I=[0,0,0,0];F.forEach(function(Q,$){let U=Q,j=z[$];I.forEach(function(X,Y,Z){if(U>X){Z[Y]=U,U=X;const ue=N[Y];N[Y]=j,j=ue}})}),z=N,F=I}for(;F.length<4;)F.push(0),z.push(0);for(let N=0;N<4;++N)w.push(F[N]),y.push(z[N])}if(i.normal){const N=Ci(T,r,M,i.normal);u.push(N[0],N[1],N[2])}i.material&&i.material.mappingType!=="AllSame"&&(V=Ci(T,r,M,i.material)[0]),i.uv&&i.uv.forEach(function(N,I){const Q=Ci(T,r,M,N);_[I]===void 0&&(_[I]=[]),_[I].push(Q[0]),_[I].push(Q[1])}),o++,O&&(C.genFace(n,i,p,V,u,d,_,w,y,o),r++,o=0,p=[],u=[],d=[],_=[],w=[],y=[])}),n}genFace(i,n,r,o,l,p,u,d,_,w){for(let y=2;y<w;y++)i.vertex.push(n.vertexPositions[r[0]]),i.vertex.push(n.vertexPositions[r[1]]),i.vertex.push(n.vertexPositions[r[2]]),i.vertex.push(n.vertexPositions[r[(y-1)*3]]),i.vertex.push(n.vertexPositions[r[(y-1)*3+1]]),i.vertex.push(n.vertexPositions[r[(y-1)*3+2]]),i.vertex.push(n.vertexPositions[r[y*3]]),i.vertex.push(n.vertexPositions[r[y*3+1]]),i.vertex.push(n.vertexPositions[r[y*3+2]]),n.skeleton&&(i.vertexWeights.push(d[0]),i.vertexWeights.push(d[1]),i.vertexWeights.push(d[2]),i.vertexWeights.push(d[3]),i.vertexWeights.push(d[(y-1)*4]),i.vertexWeights.push(d[(y-1)*4+1]),i.vertexWeights.push(d[(y-1)*4+2]),i.vertexWeights.push(d[(y-1)*4+3]),i.vertexWeights.push(d[y*4]),i.vertexWeights.push(d[y*4+1]),i.vertexWeights.push(d[y*4+2]),i.vertexWeights.push(d[y*4+3]),i.weightsIndices.push(_[0]),i.weightsIndices.push(_[1]),i.weightsIndices.push(_[2]),i.weightsIndices.push(_[3]),i.weightsIndices.push(_[(y-1)*4]),i.weightsIndices.push(_[(y-1)*4+1]),i.weightsIndices.push(_[(y-1)*4+2]),i.weightsIndices.push(_[(y-1)*4+3]),i.weightsIndices.push(_[y*4]),i.weightsIndices.push(_[y*4+1]),i.weightsIndices.push(_[y*4+2]),i.weightsIndices.push(_[y*4+3])),n.color&&(i.colors.push(p[0]),i.colors.push(p[1]),i.colors.push(p[2]),i.colors.push(p[(y-1)*3]),i.colors.push(p[(y-1)*3+1]),i.colors.push(p[(y-1)*3+2]),i.colors.push(p[y*3]),i.colors.push(p[y*3+1]),i.colors.push(p[y*3+2])),n.material&&n.material.mappingType!=="AllSame"&&(i.materialIndex.push(o),i.materialIndex.push(o),i.materialIndex.push(o)),n.normal&&(i.normal.push(l[0]),i.normal.push(l[1]),i.normal.push(l[2]),i.normal.push(l[(y-1)*3]),i.normal.push(l[(y-1)*3+1]),i.normal.push(l[(y-1)*3+2]),i.normal.push(l[y*3]),i.normal.push(l[y*3+1]),i.normal.push(l[y*3+2])),n.uv&&n.uv.forEach(function(C,M){i.uvs[M]===void 0&&(i.uvs[M]=[]),i.uvs[M].push(u[M][0]),i.uvs[M].push(u[M][1]),i.uvs[M].push(u[M][(y-1)*2]),i.uvs[M].push(u[M][(y-1)*2+1]),i.uvs[M].push(u[M][y*2]),i.uvs[M].push(u[M][y*2+1])})}addMorphTargets(i,n,r,o){if(r.length===0)return;i.morphTargetsRelative=!0,i.morphAttributes.position=[];const l=this;r.forEach(function(p){p.rawTargets.forEach(function(u){const d=oe.Objects.Geometry[u.geoID];d!==void 0&&l.genMorphGeometry(i,n,d,o,u.name)})})}genMorphGeometry(i,n,r,o,l){const p=n.PolygonVertexIndex!==void 0?n.PolygonVertexIndex.a:[],u=r.Vertices!==void 0?r.Vertices.a:[],d=r.Indexes!==void 0?r.Indexes.a:[],_=i.attributes.position.count*3,w=new Float32Array(_);for(let T=0;T<d.length;T++){const V=d[T]*3;w[V]=u[T*3],w[V+1]=u[T*3+1],w[V+2]=u[T*3+2]}const y={vertexIndices:p,vertexPositions:w},C=this.genBuffers(y),M=new f.Float32BufferAttribute(C.vertex,3);M.name=l||r.attrName,M.applyMatrix4(o),i.morphAttributes.position.push(M)}parseNormals(i){const n=i.MappingInformationType,r=i.ReferenceInformationType,o=i.Normals.a;let l=[];return r==="IndexToDirect"&&("NormalIndex"in i?l=i.NormalIndex.a:"NormalsIndex"in i&&(l=i.NormalsIndex.a)),{dataSize:3,buffer:o,indices:l,mappingType:n,referenceType:r}}parseUVs(i){const n=i.MappingInformationType,r=i.ReferenceInformationType,o=i.UV.a;let l=[];return r==="IndexToDirect"&&(l=i.UVIndex.a),{dataSize:2,buffer:o,indices:l,mappingType:n,referenceType:r}}parseVertexColors(i){const n=i.MappingInformationType,r=i.ReferenceInformationType,o=i.Colors.a;let l=[];return r==="IndexToDirect"&&(l=i.ColorIndex.a),{dataSize:4,buffer:o,indices:l,mappingType:n,referenceType:r}}parseMaterialIndices(i){const n=i.MappingInformationType,r=i.ReferenceInformationType;if(n==="NoMappingInformation")return{dataSize:1,buffer:[0],indices:[0],mappingType:"AllSame",referenceType:r};const o=i.Materials.a,l=[];for(let p=0;p<o.length;++p)l.push(p);return{dataSize:1,buffer:o,indices:l,mappingType:n,referenceType:r}}parseNurbsGeometry(i){if(Ur===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 n=parseInt(i.Order);if(isNaN(n))return console.error("THREE.FBXLoader: Invalid Order %s given for geometry ID: %s",i.Order,i.id),new f.BufferGeometry;const r=n-1,o=i.KnotVector.a,l=[],p=i.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(i.Form==="Closed")l.push(l[0]);else if(i.Form==="Periodic"){u=r,d=o.length-1-u;for(let y=0;y<r;++y)l.push(l[y])}const w=new Ur(r,o,l,u,d).getPoints(l.length*12);return new f.BufferGeometry().setFromPoints(w)}}class cl{parse(){const i=[],n=this.parseClips();if(n!==void 0)for(const r in n){const o=n[r],l=this.addClip(o);i.push(l)}return i}parseClips(){if(oe.Objects.AnimationCurve===void 0)return;const i=this.parseAnimationCurveNodes();this.parseAnimationCurves(i);const n=this.parseAnimationLayers(i);return this.parseAnimStacks(n)}parseAnimationCurveNodes(){const i=oe.Objects.AnimationCurveNode,n=new Map;for(const r in i){const o=i[r];if(o.attrName.match(/S|R|T|DeformPercent/)!==null){const l={id:o.id,attr:o.attrName,curves:{}};n.set(l.id,l)}}return n}parseAnimationCurves(i){const n=oe.Objects.AnimationCurve;for(const r in n){const o={id:n[r].id,times:n[r].KeyTime.a.map(ml),values:n[r].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/)?i.get(p).curves.x=o:u.match(/Y/)?i.get(p).curves.y=o:u.match(/Z/)?i.get(p).curves.z=o:u.match(/d|DeformPercent/)&&i.has(p)&&(i.get(p).curves.morph=o)}}}parseAnimationLayers(i){const n=oe.Objects.AnimationLayer,r=new Map;for(const o in n){const l=[],p=Ae.get(parseInt(o));p!==void 0&&(p.children.forEach(function(d,_){if(i.has(d.ID)){const w=i.get(d.ID);if(w.curves.x!==void 0||w.curves.y!==void 0||w.curves.z!==void 0){if(l[_]===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(T){T.ID===C.id&&(M.transform=T.matrix,T.userData.transformData&&(M.eulerOrder=T.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[_]=M}}l[_]&&(l[_][w.attr]=w)}else if(w.curves.morph!==void 0){if(l[_]===void 0){const y=Ae.get(d.ID).parents.filter(function(z){return z.relationship!==void 0})[0].ID,C=Ae.get(y).parents[0].ID,M=Ae.get(C).parents[0].ID,T=Ae.get(M).parents[0].ID,V=oe.Objects.Model[T],O={modelName:V.attrName?f.PropertyBinding.sanitizeNodeName(V.attrName):"",morphName:oe.Objects.Deformer[y].attrName};l[_]=O}l[_][w.attr]=w}}}),r.set(parseInt(o),l))}return r}parseAnimStacks(i){const n=oe.Objects.AnimationStack,r={};for(const o in n){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=i.get(l[0].ID);r[o]={name:n[o].attrName,layer:p}}return r}addClip(i){let n=[];const r=this;return i.layer.forEach(function(o){n=n.concat(r.generateTracks(o))}),new f.AnimationClip(i.name,-1,n)}generateTracks(i){const n=[];let r=new f.Vector3,o=new f.Quaternion,l=new f.Vector3;if(i.transform&&i.transform.decompose(r,o,l),r=r.toArray(),o=new f.Euler().setFromQuaternion(o,i.eulerOrder).toArray(),l=l.toArray(),i.T!==void 0&&Object.keys(i.T.curves).length>0){const p=this.generateVectorTrack(i.modelName,i.T.curves,r,"position");p!==void 0&&n.push(p)}if(i.R!==void 0&&Object.keys(i.R.curves).length>0){const p=this.generateRotationTrack(i.modelName,i.R.curves,o,i.preRotation,i.postRotation,i.eulerOrder);p!==void 0&&n.push(p)}if(i.S!==void 0&&Object.keys(i.S.curves).length>0){const p=this.generateVectorTrack(i.modelName,i.S.curves,l,"scale");p!==void 0&&n.push(p)}if(i.DeformPercent!==void 0){const p=this.generateMorphTrack(i);p!==void 0&&n.push(p)}return n}generateVectorTrack(i,n,r,o){const l=this.getTimesForAllAxes(n),p=this.getKeyframeTrackValues(l,n,r);return new f.VectorKeyframeTrack(i+"."+o,l,p)}generateRotationTrack(i,n,r,o,l,p){n.x!==void 0&&(this.interpolateRotations(n.x),n.x.values=n.x.values.map(f.MathUtils.degToRad)),n.y!==void 0&&(this.interpolateRotations(n.y),n.y.values=n.y.values.map(f.MathUtils.degToRad)),n.z!==void 0&&(this.interpolateRotations(n.z),n.z.values=n.z.values.map(f.MathUtils.degToRad));const u=this.getTimesForAllAxes(n),d=this.getKeyframeTrackValues(u,n,r);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 _=new f.Quaternion,w=new f.Euler,y=[];for(let C=0;C<d.length;C+=3)w.set(d[C],d[C+1],d[C+2],p),_.setFromEuler(w),o!==void 0&&_.premultiply(o),l!==void 0&&_.multiply(l),_.toArray(y,C/3*4);return new f.QuaternionKeyframeTrack(i+".quaternion",u,y)}generateMorphTrack(i){const n=i.DeformPercent.curves.morph,r=n.values.map(function(l){return l/100}),o=Ge.getObjectByName(i.modelName).morphTargetDictionary[i.morphName];return new f.NumberKeyframeTrack(i.modelName+".morphTargetInfluences["+o+"]",n.times,r)}getTimesForAllAxes(i){let n=[];if(i.x!==void 0&&(n=n.concat(i.x.times)),i.y!==void 0&&(n=n.concat(i.y.times)),i.z!==void 0&&(n=n.concat(i.z.times)),n=n.sort(function(r,o){return r-o}),n.length>1){let r=1,o=n[0];for(let l=1;l<n.length;l++){const p=n[l];p!==o&&(n[r]=p,o=p,r++)}n=n.slice(0,r)}return n}getKeyframeTrackValues(i,n,r){const o=r,l=[];let p=-1,u=-1,d=-1;return i.forEach(function(_){if(n.x&&(p=n.x.times.indexOf(_)),n.y&&(u=n.y.times.indexOf(_)),n.z&&(d=n.z.times.indexOf(_)),p!==-1){const w=n.x.values[p];l.push(w),o[0]=w}else l.push(o[0]);if(u!==-1){const w=n.y.values[u];l.push(w),o[1]=w}else l.push(o[1]);if(d!==-1){const w=n.z.values[d];l.push(w),o[2]=w}else l.push(o[2])}),l}interpolateRotations(i){for(let n=1;n<i.values.length;n++){const r=i.values[n-1],o=i.values[n]-r,l=Math.abs(o);if(l>=180){const p=l/180,u=o/p;let d=r+u;const _=i.times[n-1],y=(i.times[n]-_)/p;let C=_+y;const M=[],T=[];for(;C<i.times[n];)M.push(C),C+=y,T.push(d),d+=u;i.times=qr(i.times,n,M),i.values=qr(i.values,n,T)}}}}class pl{getPrevNode(){return this.nodeStack[this.currentIndent-2]}getCurrentNode(){return this.nodeStack[this.currentIndent-1]}getCurrentProp(){return this.currentProp}pushStack(i){this.nodeStack.push(i),this.currentIndent+=1}popStack(){this.nodeStack.pop(),this.currentIndent-=1}setCurrentProp(i,n){this.currentProp=i,this.currentPropName=n}parse(i){this.currentIndent=0,this.allNodes=new Gr,this.nodeStack=[],this.currentProp=[],this.currentPropName="";const n=this,r=i.split(/[\r\n]+/);return r.forEach(function(o,l){const p=o.match(/^[\s\t]*;/),u=o.match(/^[\s\t]*$/);if(p||u)return;const d=o.match("^\\t{"+n.currentIndent+"}(\\w+):(.*){",""),_=o.match("^\\t{"+n.currentIndent+"}(\\w+):[\\s\\t\\r\\n](.*)"),w=o.match("^\\t{"+(n.currentIndent-1)+"}}");d?n.parseNodeBegin(o,d):_?n.parseNodeProperty(o,_,r[++l]):w?n.popStack():o.match(/^[^\s\t}]/)&&n.parseNodePropertyContinued(o)}),this.allNodes}parseNodeBegin(i,n){const r=n[1].trim().replace(/^"/,"").replace(/"$/,""),o=n[2].split(",").map(function(d){return d.trim().replace(/^"/,"").replace(/"$/,"")}),l={name:r},p=this.parseNodeAttr(o),u=this.getCurrentNode();this.currentIndent===0?this.allNodes.add(r,l):r in u?(r==="PoseNode"?u.PoseNode.push(l):u[r].id!==void 0&&(u[r]={},u[r][u[r].id]=u[r]),p.id!==""&&(u[r][p.id]=l)):typeof p.id=="number"?(u[r]={},u[r][p.id]=l):r!=="Properties70"&&(r==="PoseNode"?u[r]=[l]:u[r]=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(i){let n=i[0];i[0]!==""&&(n=parseInt(i[0]),isNaN(n)&&(n=i[0]));let r="",o="";return i.length>1&&(r=i[1].replace(/^(\w+)::/,""),o=i[2]),{id:n,name:r,type:o}}parseNodeProperty(i,n,r){let o=n[1].replace(/^"/,"").replace(/"$/,"").trim(),l=n[2].replace(/^"/,"").replace(/"$/,"").trim();o==="Content"&&l===","&&(l=r.replace(/"/g,"").replace(/,$/,"").trim());const p=this.getCurrentNode();if(p.name==="Properties70"){this.parseNodeSpecialProperty(i,o,l);return}if(o==="C"){const d=l.split(",").slice(1),_=parseInt(d[0]),w=parseInt(d[1]);let y=l.split(",").slice(3);y=y.map(function(C){return C.trim().replace(/^"/,"")}),o="connections",l=[_,w],vl(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=ds(l))}parseNodePropertyContinued(i){const n=this.getCurrentNode();n.a+=i,i.slice(-1)!==","&&(n.a=ds(n.a))}parseNodeSpecialProperty(i,n,r){const o=r.split('",').map(function(w){return w.trim().replace(/^\"/,"").replace(/\s/,"_")}),l=o[0],p=o[1],u=o[2],d=o[3];let _=o[4];switch(p){case"int":case"enum":case"bool":case"ULongLong":case"double":case"Number":case"FieldOfView":_=parseFloat(_);break;case"Color":case"ColorRGB":case"Vector3D":case"Lcl_Translation":case"Lcl_Rotation":case"Lcl_Scaling":_=ds(_);break}this.getPrevNode()[l]={type:p,type2:u,flag:d,value:_},this.setCurrentProp(this.getPrevNode(),l)}}class hl{parse(i){const n=new Rr(i);n.skip(23);const r=n.getUint32();if(r<6400)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+r);const o=new Gr;for(;!this.endOfContent(n);){const l=this.parseNode(n,r);l!==null&&o.add(l.name,l)}return o}endOfContent(i){return i.size()%16===0?(i.getOffset()+160+16&-16)>=i.size():i.getOffset()+160+16>=i.size()}parseNode(i,n){const r={},o=n>=7500?i.getUint64():i.getUint32(),l=n>=7500?i.getUint64():i.getUint32();n>=7500?i.getUint64():i.getUint32();const p=i.getUint8(),u=i.getString(p);if(o===0)return null;const d=[];for(let C=0;C<l;C++)d.push(this.parseProperty(i));const _=d.length>0?d[0]:"",w=d.length>1?d[1]:"",y=d.length>2?d[2]:"";for(r.singleProperty=l===1&&i.getOffset()===o;o>i.getOffset();){const C=this.parseNode(i,n);C!==null&&this.parseSubNode(u,r,C)}return r.propertyList=d,typeof _=="number"&&(r.id=_),w!==""&&(r.attrName=w),y!==""&&(r.attrType=y),u!==""&&(r.name=u),r}parseSubNode(i,n,r){if(r.singleProperty===!0){const o=r.propertyList[0];Array.isArray(o)?(n[r.name]=r,r.a=o):n[r.name]=o}else if(i==="Connections"&&r.name==="C"){const o=[];r.propertyList.forEach(function(l,p){p!==0&&o.push(l)}),n.connections===void 0&&(n.connections=[]),n.connections.push(o)}else if(r.name==="Properties70")Object.keys(r).forEach(function(l){n[l]=r[l]});else if(i==="Properties70"&&r.name==="P"){let o=r.propertyList[0],l=r.propertyList[1];const p=r.propertyList[2],u=r.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=[r.propertyList[4],r.propertyList[5],r.propertyList[6]]:d=r.propertyList[4],n[o]={type:l,type2:p,flag:u,value:d}}else n[r.name]===void 0?typeof r.id=="number"?(n[r.name]={},n[r.name][r.id]=r):n[r.name]=r:r.name==="PoseNode"?(Array.isArray(n[r.name])||(n[r.name]=[n[r.name]]),n[r.name].push(r)):n[r.name][r.id]===void 0&&(n[r.name][r.id]=r)}parseProperty(i){const n=i.getString(1);let r;switch(n){case"C":return i.getBoolean();case"D":return i.getFloat64();case"F":return i.getFloat32();case"I":return i.getInt32();case"L":return i.getInt64();case"R":return r=i.getUint32(),i.getArrayBuffer(r);case"S":return r=i.getUint32(),i.getString(r);case"Y":return i.getInt16();case"b":case"c":case"d":case"f":case"i":case"l":const o=i.getUint32(),l=i.getUint32(),p=i.getUint32();if(l===0)switch(n){case"b":case"c":return i.getBooleanArray(o);case"d":return i.getFloat64Array(o);case"f":return i.getFloat32Array(o);case"i":return i.getInt32Array(o);case"l":return i.getInt64Array(o)}const u=ta(new Uint8Array(i.getArrayBuffer(p))),d=new Rr(u.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 Rr{constructor(i,n){this.dv=new DataView(i),this.offset=0,this.littleEndian=n!==void 0?n:!0}getOffset(){return this.offset}size(){return this.dv.buffer.byteLength}skip(i){this.offset+=i}getBoolean(){return(this.getUint8()&1)===1}getBooleanArray(i){const n=[];for(let r=0;r<i;r++)n.push(this.getBoolean());return n}getUint8(){const i=this.dv.getUint8(this.offset);return this.offset+=1,i}getInt16(){const i=this.dv.getInt16(this.offset,this.littleEndian);return this.offset+=2,i}getInt32(){const i=this.dv.getInt32(this.offset,this.littleEndian);return this.offset+=4,i}getInt32Array(i){const n=[];for(let r=0;r<i;r++)n.push(this.getInt32());return n}getUint32(){const i=this.dv.getUint32(this.offset,this.littleEndian);return this.offset+=4,i}getInt64(){let i,n;return this.littleEndian?(i=this.getUint32(),n=this.getUint32()):(n=this.getUint32(),i=this.getUint32()),n&2147483648?(n=~n&4294967295,i=~i&4294967295,i===4294967295&&(n=n+1&4294967295),i=i+1&4294967295,-(n*4294967296+i)):n*4294967296+i}getInt64Array(i){const n=[];for(let r=0;r<i;r++)n.push(this.getInt64());return n}getUint64(){let i,n;return this.littleEndian?(i=this.getUint32(),n=this.getUint32()):(n=this.getUint32(),i=this.getUint32()),n*4294967296+i}getFloat32(){const i=this.dv.getFloat32(this.offset,this.littleEndian);return this.offset+=4,i}getFloat32Array(i){const n=[];for(let r=0;r<i;r++)n.push(this.getFloat32());return n}getFloat64(){const i=this.dv.getFloat64(this.offset,this.littleEndian);return this.offset+=8,i}getFloat64Array(i){const n=[];for(let r=0;r<i;r++)n.push(this.getFloat64());return n}getArrayBuffer(i){const n=this.dv.buffer.slice(this.offset,this.offset+i);return this.offset+=i,n}getString(i){let n=[];for(let o=0;o<i;o++)n[o]=this.getUint8();const r=n.indexOf(0);return r>=0&&(n=n.slice(0,r)),f.LoaderUtils.decodeText(new Uint8Array(n))}}class Gr{add(i,n){this[i]=n}}function ul(b){const i="Kaydara FBX Binary \0";return b.byteLength>=i.length&&i===Yr(b,0,i.length)}function dl(b){const i=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"];let n=0;function r(o){const l=b[o-1];return b=b.slice(n+o),n++,l}for(let o=0;o<i.length;++o)if(r(1)===i[o])return!1;return!0}function Kr(b){const i=/FBXVersion: (\d+)/,n=b.match(i);if(n)return parseInt(n[1]);throw new Error("THREE.FBXLoader: Cannot find the version number for the file given.")}function ml(b){return b/46186158e3}const fl=[];function Ci(b,i,n,r){let o;switch(r.mappingType){case"ByPolygonVertex":o=b;break;case"ByPolygon":o=i;break;case"ByVertice":o=n;break;case"AllSame":o=r.indices[0];break;default:console.warn("THREE.FBXLoader: unknown attribute mapping type "+r.mappingType)}r.referenceType==="IndexToDirect"&&(o=r.indices[o]);const l=o*r.dataSize,p=l+r.dataSize;return bl(fl,r.buffer,l,p)}const us=new f.Euler,wn=new f.Vector3;function $r(b){const i=new f.Matrix4,n=new f.Matrix4,r=new f.Matrix4,o=new f.Matrix4,l=new f.Matrix4,p=new f.Matrix4,u=new f.Matrix4,d=new f.Matrix4,_=new f.Matrix4,w=new f.Matrix4,y=new f.Matrix4,C=new f.Matrix4,M=b.inheritType?b.inheritType:0;if(b.translation&&i.setPosition(wn.fromArray(b.translation)),b.preRotation){const Y=b.preRotation.map(f.MathUtils.degToRad);Y.push(b.eulerOrder),n.makeRotationFromEuler(us.fromArray(Y))}if(b.rotation){const Y=b.rotation.map(f.MathUtils.degToRad);Y.push(b.eulerOrder),r.makeRotationFromEuler(us.fromArray(Y))}if(b.postRotation){const Y=b.postRotation.map(f.MathUtils.degToRad);Y.push(b.eulerOrder),o.makeRotationFromEuler(us.fromArray(Y)),o.invert()}b.scale&&l.scale(wn.fromArray(b.scale)),b.scalingOffset&&u.setPosition(wn.fromArray(b.scalingOffset)),b.scalingPivot&&p.setPosition(wn.fromArray(b.scalingPivot)),b.rotationOffset&&d.setPosition(wn.fromArray(b.rotationOffset)),b.rotationPivot&&_.setPosition(wn.fromArray(b.rotationPivot)),b.parentMatrixWorld&&(y.copy(b.parentMatrix),w.copy(b.parentMatrixWorld));const T=n.clone().multiply(r).multiply(o),V=new f.Matrix4;V.extractRotation(w);const O=new f.Matrix4;O.copyPosition(w);const z=O.clone().invert().multiply(w),F=V.clone().invert().multiply(z),N=l,I=new f.Matrix4;if(M===0)I.copy(V).multiply(T).multiply(F).multiply(N);else if(M===1)I.copy(V).multiply(F).multiply(T).multiply(N);else{const Z=new f.Matrix4().scale(new f.Vector3().setFromMatrixScale(y)).clone().invert(),ue=F.clone().multiply(Z);I.copy(V).multiply(T).multiply(ue).multiply(N)}const Q=_.clone().invert(),$=p.clone().invert();let U=i.clone().multiply(d).multiply(_).multiply(n).multiply(r).multiply(o).multiply(Q).multiply(u).multiply(p).multiply(l).multiply($);const j=new f.Matrix4().copyPosition(U),X=w.clone().multiply(j);return C.copyPosition(X),U=C.clone().multiply(I),U.premultiply(w.invert()),U}function Xr(b){b=b||0;const i=["ZYX","YZX","XZY","ZXY","YXZ","XYZ"];return b===6?(console.warn("THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect."),i[0]):i[b]}function ds(b){return b.split(",").map(function(n){return parseFloat(n)})}function Yr(b,i,n){return i===void 0&&(i=0),n===void 0&&(n=b.byteLength),f.LoaderUtils.decodeText(new Uint8Array(b,i,n))}function vl(b,i){for(let n=0,r=b.length,o=i.length;n<o;n++,r++)b[r]=i[n]}function bl(b,i,n,r){for(let o=n,l=0;o<r;o++,l++)b[l]=i[o];return b}function qr(b,i,n){return b.slice(0,i).concat(n).concat(b.slice(i))}var gl=Object.defineProperty,_l=(b,i,n)=>i in b?gl(b,i,{enumerable:!0,configurable:!0,writable:!0,value:n}):b[i]=n,ms=(b,i,n)=>(_l(b,typeof i!="symbol"?i+"":i,n),n);class wl extends f.Loader{constructor(i){super(i)}load(i,n,r,o){const l=new f.FileLoader(this.manager);l.setPath(this.path),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(i,p=>{if(typeof p!="string")throw new Error("unsupported data type");const u=JSON.parse(p),d=this.parse(u);n&&n(d)},r,o)}loadAsync(i,n){return super.loadAsync(i,n)}parse(i){return new fs(i)}}class fs{constructor(i){ms(this,"data"),this.data=i}generateShapes(i,n=100,r){const o=[],l={letterSpacing:0,lineHeight:1,...r},p=yl(i,n,this.data,l);for(let u=0,d=p.length;u<d;u++)Array.prototype.push.apply(o,p[u].toShapes(!1));return o}}ms(fs,"isFont"),ms(fs,"type");function yl(b,i,n,r){const o=Array.from(b),l=i/n.resolution,p=(n.boundingBox.yMax-n.boundingBox.yMin+n.underlineThickness)*l,u=[];let d=0,_=0;for(let w=0;w<o.length;w++){const y=o[w];if(y===`
|
|
74
|
-
`)d=0,
|
|
75
|
-
`,C=function(N,I,
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
`;continue}if((
|
|
79
|
-
`);this.workerSourceURL=URL.createObjectURL(new Blob([p]))}),this.decoderPending}_getWorker(i,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(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 r=this.workerPool[this.workerPool.length-1];return r._taskCosts[i]=n,r._taskLoad+=n,r})}_releaseTask(i,n){i._taskLoad-=i._taskCosts[n],delete i._callbacks[n],delete i._taskCosts[n]}debug(){console.log("Task load: ",this.workerPool.map(i=>i._taskLoad))}dispose(){for(let i=0;i<this.workerPool.length;++i)this.workerPool[i].terminate();return this.workerPool.length=0,this}}function Ml(){let b,i;onmessage=function(p){const u=p.data;switch(u.type){case"init":b=u.decoderConfig,i=new Promise(function(w){b.onModuleLoaded=function(y){w({draco:y})},DracoDecoderModule(b)});break;case"decode":const d=u.buffer,_=u.taskConfig;i.then(w=>{const y=w.draco,C=new y.Decoder,M=new y.DecoderBuffer;M.Init(new Int8Array(d),d.byteLength);try{const T=n(y,C,M,_),V=T.attributes.map(O=>O.array.buffer);T.index&&V.push(T.index.array.buffer),self.postMessage({type:"decode",id:u.id,geometry:T},V)}catch(T){console.error(T),self.postMessage({type:"error",id:u.id,error:T.message})}finally{y.destroy(M),y.destroy(C)}});break}};function n(p,u,d,_){const w=_.attributeIDs,y=_.attributeTypes;let C,M;const T=u.GetEncodedGeometryType(d);if(T===p.TRIANGULAR_MESH)C=new p.Mesh,M=u.DecodeBufferToMesh(d,C);else if(T===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 O in w){const z=self[y[O]];let F,N;if(_.useUniqueIDs)N=w[O],F=u.GetAttributeByUniqueId(C,N);else{if(N=u.GetAttributeId(C,p[w[O]]),N===-1)continue;F=u.GetAttribute(C,N)}V.attributes.push(o(p,u,C,O,z,F))}return T===p.TRIANGULAR_MESH&&(V.index=r(p,u,C)),p.destroy(C),V}function r(p,u,d){const w=d.num_faces()*3,y=w*4,C=p._malloc(y);u.GetTrianglesUInt32Array(d,y,C);const M=new Uint32Array(p.HEAPF32.buffer,C,w).slice();return p._free(C),{array:M,itemSize:1}}function o(p,u,d,_,w,y){const C=y.num_components(),T=d.num_points()*C,V=T*w.BYTES_PER_ELEMENT,O=l(p,w),z=p._malloc(V);u.GetAttributeDataArrayForAllPoints(d,y,O,V,z);const F=new w(p.HEAPF32.buffer,z,T).slice();return p._free(z),{name:_,array:F,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 at(){const{state:b,setState:i}=x.inject("useTres",Be.useTres()),n=x.inject("extend")||(()=>{});return{state:b,setState:i,extend:n}}const Al=["args","center"],Sl=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(b,{expose:i}){let n,r;const o=b,{extend:l}=at();l({TextGeometry:zr});const p=new wl,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"}),_=x.shallowRef();i({value:_});const w=([n,r]=x.withAsyncContext(()=>new Promise((C,M)=>{try{typeof o.font=="string"?p.load(o.font,T=>{C(T)}):C(o.font)}catch(T){M(console.error("cientos",T))}})),n=await n,r(),n),y=x.computed(()=>({font:w,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(()=>{_.value&&o.needUpdates&&(_.value.geometry.dispose(),_.value.geometry=new zr(d.value,y.value),o.center&&_.value.geometry.center())}),(C,M)=>x.unref(w)?(x.openBlock(),x.createElementBlock("TresMesh",{key:0,ref_key:"text3DRef",ref:_},[d.value?(x.openBlock(),x.createElementBlock("TresTextGeometry",{key:0,args:[d.value,y.value],center:C.center},null,8,Al)):x.createCommentVNode("",!0),x.renderSlot(C.$slots,"default")],512)):x.createCommentVNode("",!0)}});function Ll(b,i){const n=x.ref(i),r=new f.AnimationMixer(n.value),o=x.shallowReactive({});b.forEach(p=>{const u=r.clipAction(p,n.value);o[p.name]=u});const{onLoop:l}=Be.useRenderLoop();return l(({delta:p})=>{r.update(p)}),{actions:o,mixer:r}}const bs={sunset:"venice/venice_sunset_4k.hdr"};async function Zr({files:b=["/px.png","/nx.png","/py.png","/ny.png","/pz.png","/nz.png"],blur:i=0,background:n=!1,path:r="/",preset:o=void 0}){const{state:l}=at();if(o){if(!(o in bs))throw new Error("Preset must be one of: "+Object.keys(bs).join(", "));b=bs[o],r="https://raw.githubusercontent.com/Tresjs/assets/main/textures/hdr/"}const p=Array.isArray(b),u=p?f.CubeTextureLoader:Pl,d=await Be.useLoader(u,p?[b]:b,w=>{r&&w.setPath(r)}),_=p?d[0]:d;return _&&(_.mapping=p?f.CubeReflectionMapping:f.EquirectangularReflectionMapping,_.colorSpace=f.SRGBColorSpace),l.scene&&(l.scene.environment=_,n!==void 0&&(l.scene.background=_),i&&(l.scene.backgroundBlurriness=i|0)),_}const Vl=x.defineComponent({name:"Environment",props:["background","blur","files","encoding","path","preset"],async setup(b,{expose:i}){let n=null;return i({getTexture:()=>n}),n=await Zr(b),()=>{}}});function Wr(b){return x.getCurrentScope()?(x.onScopeDispose(b),!0):!1}function Jr(b){return typeof b=="function"?b():x.unref(b)}const Dl=typeof window<"u",Hr=()=>{};function Il(...b){if(b.length!==1)return x.toRef(...b);const i=b[0];return typeof i=="function"?x.readonly(x.customRef(()=>({get:i,set:Hr}))):x.ref(i)}function Tl(b,i=!0){x.getCurrentInstance()?x.onMounted(b):i?b():x.nextTick(b)}function El(b){var i;const n=Jr(b);return(i=n==null?void 0:n.$el)!=null?i:n}const Pi=Dl?window:void 0;function Ne(...b){let i,n,r,o;if(typeof b[0]=="string"||Array.isArray(b[0])?([n,r,o]=b,i=Pi):[i,n,r,o]=b,!i)return Hr;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const l=[],p=()=>{l.forEach(w=>w()),l.length=0},u=(w,y,C,M)=>(w.addEventListener(y,C,M),()=>w.removeEventListener(y,C,M)),d=x.watch(()=>[El(i),Jr(o)],([w,y])=>{p(),w&&l.push(...n.flatMap(C=>r.map(M=>u(w,C,M,y))))},{immediate:!0,flush:"post"}),_=()=>{d(),p()};return Wr(_),_}function Ol(){const b=x.ref(!1);return x.getCurrentInstance()&&x.onMounted(()=>{b.value=!0}),b}function Bl(b){const i=Ol();return x.computed(()=>(i.value,!!b()))}function Nl(b,i={}){const{window:n=Pi}=i,r=Bl(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let o;const l=x.ref(!1),p=()=>{o&&("removeEventListener"in o?o.removeEventListener("change",u):o.removeListener(u))},u=()=>{r.value&&(p(),o=n.matchMedia(Il(b).value),l.value=!!(o!=null&&o.matches),o&&("addEventListener"in o?o.addEventListener("change",u):o.addListener(u)))};return x.watchEffect(u),Wr(()=>p()),l}const Fl={page:b=>[b.pageX,b.pageY],client:b=>[b.clientX,b.clientY],screen:b=>[b.screenX,b.screenY],movement:b=>b instanceof Touch?null:[b.movementX,b.movementY]};function zl(b={}){const{type:i="page",touch:n=!0,resetOnTouchEnds:r=!1,initialValue:o={x:0,y:0},window:l=Pi,target:p=l,eventFilter:u}=b,d=x.ref(o.x),_=x.ref(o.y),w=x.ref(null),y=typeof i=="function"?i:Fl[i],C=z=>{const F=y(z);F&&([d.value,_.value]=F,w.value="mouse")},M=z=>{if(z.touches.length>0){const F=y(z.touches[0]);F&&([d.value,_.value]=F,w.value="touch")}},T=()=>{d.value=o.x,_.value=o.y},V=u?z=>u(()=>C(z),{}):z=>C(z),O=u?z=>u(()=>M(z),{}):z=>M(z);return p&&(Ne(p,"mousemove",V,{passive:!0}),Ne(p,"dragover",V,{passive:!0}),n&&i!=="movement"&&(Ne(p,"touchstart",O,{passive:!0}),Ne(p,"touchmove",O,{passive:!0}),r&&Ne(p,"touchend",T,{passive:!0}))),{x:d,y:_,sourceType:w}}function jl(b={}){const{window:i=Pi,initialWidth:n=1/0,initialHeight:r=1/0,listenOrientation:o=!0,includeScrollbar:l=!0}=b,p=x.ref(n),u=x.ref(r),d=()=>{i&&(l?(p.value=i.innerWidth,u.value=i.innerHeight):(p.value=i.document.documentElement.clientWidth,u.value=i.document.documentElement.clientHeight))};if(d(),Tl(d),Ne("resize",d,{passive:!0}),o){const _=Nl("(orientation: portrait)");x.watch(_,()=>d())}return{width:p,height:u}}function eo(b=!1,i=2.5,n=!0,r){var V;const{x:o,y:l}=zl(),{logWarning:p}=Be.useLogger(),{state:u}=at(),{width:d,height:_}=jl(),{onLoop:w}=Be.useRenderLoop(),y=new f.Group,C=n?2.5:30,M=x.computed(()=>(o.value/d.value-.5)*i),T=x.computed(()=>-(l.value/_.value-.5)*i);r&&u.scene?(y.add(r),(V=u.scene)==null||V.add(y),w(({delta:O})=>{b||(y.position.x+=(M.value-y.position.x)*C*O,y.position.y+=(T.value-y.position.y)*C*O)})):p("Scene must contain a Camera component to use this composable")}const Ul=x.defineComponent({name:"PamCameraMouse",props:["disabled","factor","ease"],setup(b){const{state:i}=at();return x.watchEffect(()=>{if(i!=null&&i.camera){const n=i==null?void 0:i.camera;eo(b.disabled,b.factor,b.ease,n)}}),()=>{}}}),Rl=["position","a-scale"],Gl=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(b,{expose:i}){const n=b;let r=n.radius+n.depth;const o=n.depth/n.count,l=[],p=Array.from({length:n.count},()=>(.5+.5*Math.random())*n.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<n.count;C++)r-=o*Math.random(),l.push(...u(r).toArray());const d=new Float32Array(l),_=new Float32Array(p),w=x.computed(()=>({size:n.size,sizeAttenuation:n.sizeAttenuation,transparent:n.transparent,alphaTest:n.alphaTest,alphaMap:n.alphaMap})),y=x.shallowRef();return i({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(_),1]},null,8,Rl),x.createElementVNode("TresPointsMaterial",x.normalizeProps(x.guardReactiveProps(w.value)),null,16)],512))}}),Kl=["size","color","alpha-map","map","opacity","alpha-test","depth-write","transparent","size-attenuation"],$l=["position","velocity"],Xl=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(b){const i=x.shallowRef();let n=[],r=[];const o=()=>{n=new Float32Array(b.count*3);for(let u=0;u<b.count;u++){const d=u*3;n[d]=(Math.random()-.5)*b.area[0],n[d+1]=(Math.random()-.5)*b.area[1],n[d+2]=(Math.random()-.5)*b.area[2]}},l=()=>{r=new Float32Array(b.count*2);for(let u=0;u<b.count*2;u+=2)r[u]=(Math.random()-.5)/5*b.speed*b.randomness,r[u+1]=Math.random()/5*b.speed+.01};l(),o(),x.watchEffect(()=>{l(),o()});const{onLoop:p}=Be.useRenderLoop();return p(()=>{var u,d;if((u=i.value)!=null&&u.attributes.position.array&&((d=i.value)!=null&&d.attributes.position.count)){const _=i.value.attributes.position.array;for(let w=0;w<i.value.attributes.position.count;w++){const y=r[w*2],C=r[w*2+1];_[w*3]+=y,_[w*3+1]-=C,(_[w*3]<=-b.area[0]/2||_[w*3]>=b.area[0]/2)&&(_[w*3]=_[w*3]*-1),(_[w*3+1]<=-b.area[1]/2||_[w*3+1]>=b.area[1]/2)&&(_[w*3+1]=_[w*3+1]*-1)}i.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,Kl),x.createElementVNode("TresBufferGeometry",{ref_key:"geometryRef",ref:i,position:[x.unref(n),3],velocity:[x.unref(r)]},null,8,$l)]))}}),Yl=["position"],ql=["position"],Ql=["scale"],Zl=["map","depth-test","color-space","color","opacity"],Wl=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(b,{expose:i}){let n,r;const o=x.shallowRef(),l=x.shallowRef();i({value:o});const p=[...new Array(b.segments)].map((C,M)=>({x:b.width/2-Math.random()*b.width,y:b.width/2-Math.random()*b.width,scale:.4+Math.sin((M+1)/b.segments*Math.PI)*((.2+Math.random())*10),density:Math.max(.2,Math.random()),rotation:Math.max(.002,.005*Math.random())*b.speed})),u=(C,M)=>C/6*M*b.opacity,{map:d}=([n,r]=x.withAsyncContext(()=>Be.useTexture({map:b.texture})),n=await n,r(),n),{state:_}=at(),w=x.computed(()=>{var C;return(C=_.renderer)==null?void 0:C.outputColorSpace}),{onLoop:y}=Be.useRenderLoop();return y(()=>{var C,M;o.value&&_.camera&&l.value&&((C=l.value)==null||C.children.forEach((T,V)=>{T.rotation.z+=p[V].rotation}),o.value.lookAt((M=_.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:T,x:V,y:O,density:z},F)=>(x.openBlock(),x.createElementBlock("TresMesh",{key:`${F}`,position:[V,O,-F*C.depth]},[x.createElementVNode("TresPlaneGeometry",{scale:[T,T,T],rotation:[0,0,0]},null,8,Ql),x.createElementVNode("TresMeshStandardMaterial",{map:x.unref(d),"depth-test":C.depthTest,"color-space":w.value,color:C.color,"depth-write":!1,transparent:"",opacity:u(T,z)},null,8,Zl)],8,ql))),128))],8,Yl)],16))}}),Jl=x.defineComponent({__name:"Levioso",props:{speed:{default:1},rotationFactor:{default:1},floatFactor:{default:1},range:{default:()=>[-.1,.1]}},setup(b,{expose:i}){const n=b,r=x.shallowRef();i({value:r});const{onLoop:o}=Be.useRenderLoop(),l=x.ref(Math.random()*1e4);return o(({elapsed:p})=>{var _,w;if(!r.value)return;const u=l.value+p;r.value.rotation.x=Math.cos(u/4*n.speed)/8*n.rotationFactor,r.value.rotation.y=Math.sin(u/4*n.speed)/8*n.rotationFactor,r.value.rotation.z=Math.sin(u/4*n.speed)/20*n.rotationFactor;let d=Math.sin(u/4*n.speed)/10;d=f.MathUtils.mapLinear(d,-.1,.1,((_=n.range)==null?void 0:_[0])??-.1,((w=n.range)==null?void 0:w[1])??.1),r.value.position.y=d*n.floatFactor}),(p,u)=>(x.openBlock(),x.createElementBlock("TresGroup",x.mergeProps(p.$attrs,{ref_key:"groupRef",ref:r}),[x.renderSlot(p.$slots,"default")],16))}}),Hl=["geometry"],ec=["map","opacity","depth-write"],tc=["args"],nc=["rotation-x","args"],ic=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(b,{expose:i}){const n=b,r=x.shallowRef(),o=x.shallowRef();i(r);let l,p,u,d,_;const{state:w}=at(),y=x.computed(()=>n.width*(Array.isArray(n.scale)?n.scale[0]:n.scale||1)),C=x.computed(()=>n.height*(Array.isArray(n.scale)?n.scale[1]:n.scale||1));x.watchEffect(()=>{l&&l.dispose(),p&&p.dispose(),u&&u.dispose(),d&&d.geometry.dispose(),l=new f.WebGLRenderTarget(n.resolution,n.resolution),p=new f.WebGLRenderTarget(n.resolution,n.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(()=>{n.color&&(_&&_.dispose(),_=new f.MeshDepthMaterial,_.depthTest=_.depthWrite=!1,_.onBeforeCompile=I=>{I.uniforms={...I.uniforms,ucolor:{value:n.color?new f.Color(n.color):new f.Color}},I.fragmentShader=I.fragmentShader.replace("void main() {",`uniform vec3 ucolor;
|
|
73
|
+
`};function $r(v,n,i){const r=i.length-v-1;if(n>=i[r])return r-1;if(n<=i[v])return v;let o=v,l=r,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 rl(v,n,i,r){const o=[],l=[],p=[];o[0]=1;for(let h=1;h<=i;++h){l[h]=n-r[v+1-h],p[h]=r[v+h]-n;let d=0;for(let y=0;y<h;++y){const x=p[y+1],w=l[h-y],C=o[y]/(x+w);o[y]=d+x*C,d=w*C}o[h]=d}return o}function ol(v,n,i,r){const o=$r(v,r,n),l=rl(o,r,v,n),p=new f.Vector4(0,0,0,0);for(let h=0;h<=v;++h){const d=i[o-v+h],y=l[h],x=d.w*y;p.x+=d.x*x,p.y+=d.y*x,p.z+=d.z*x,p.w+=d.w*y}return p}function al(v,n,i,r,o){const l=[];for(let w=0;w<=i;++w)l[w]=0;const p=[];for(let w=0;w<=r;++w)p[w]=l.slice(0);const h=[];for(let w=0;w<=i;++w)h[w]=l.slice(0);h[0][0]=1;const d=l.slice(0),y=l.slice(0);for(let w=1;w<=i;++w){d[w]=n-o[v+1-w],y[w]=o[v+w]-n;let C=0;for(let M=0;M<w;++M){const E=y[M+1],A=d[w-M];h[w][M]=E+A;const L=h[M][w-1]/h[w][M];h[M][w]=C+E*L,C=A*L}h[w][w]=C}for(let w=0;w<=i;++w)p[0][w]=h[w][i];for(let w=0;w<=i;++w){let C=0,M=1;const E=[];for(let A=0;A<=i;++A)E[A]=l.slice(0);E[0][0]=1;for(let A=1;A<=r;++A){let L=0;const z=w-A,R=i-A;w>=A&&(E[M][0]=E[C][0]/h[R+1][z],L=E[M][0]*h[z][R]);const N=z>=-1?1:-z,I=w-1<=R?A-1:i-w;for(let F=N;F<=I;++F)E[M][F]=(E[C][F]-E[C][F-1])/h[R+1][z+F],L+=E[M][F]*h[z+F][R];w<=R&&(E[M][A]=-E[C][A-1]/h[R+1][w],L+=E[M][A]*h[w][R]),p[A][w]=L;const O=C;C=M,M=O}}let x=i;for(let w=1;w<=r;++w){for(let C=0;C<=i;++C)p[w][C]*=x;x*=i-w}return p}function ll(v,n,i,r,o){const l=o<v?o:v,p=[],h=$r(v,r,n),d=al(h,r,v,l,n),y=[];for(let x=0;x<i.length;++x){const w=i[x].clone(),C=w.w;w.x*=C,w.y*=C,w.z*=C,y[x]=w}for(let x=0;x<=l;++x){const w=y[h-v].clone().multiplyScalar(d[x][0]);for(let C=1;C<=v;++C)w.add(y[h-v+C].clone().multiplyScalar(d[x][C]));p[x]=w}for(let x=l+1;x<=o+1;++x)p[x]=new f.Vector4(0,0,0);return p}function cl(v,n){let i=1;for(let o=2;o<=v;++o)i*=o;let r=1;for(let o=2;o<=n;++o)r*=o;for(let o=2;o<=v-n;++o)r*=o;return i/r}function pl(v){const n=v.length,i=[],r=[];for(let l=0;l<n;++l){const p=v[l];i[l]=new f.Vector3(p.x,p.y,p.z),r[l]=p.w}const o=[];for(let l=0;l<n;++l){const p=i[l].clone();for(let h=1;h<=l;++h)p.sub(o[l-h].clone().multiplyScalar(cl(l,h)*r[h]));o[l]=p.divideScalar(r[0])}return o}function ul(v,n,i,r,o){const l=ll(v,n,i,r,o);return pl(l)}class Xr extends f.Curve{constructor(n,i,r,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<r.length;++p){const h=r[p];this.controlPoints[p]=new f.Vector4(h.x,h.y,h.z,h.w)}}getPoint(n,i){const r=i||new f.Vector3,o=this.knots[this.startKnot]+n*(this.knots[this.endKnot]-this.knots[this.startKnot]),l=ol(this.degree,this.knots,this.controlPoints,o);return l.w!=1&&l.divideScalar(l.w),r.set(l.x,l.y,l.z)}getTangent(n,i){const r=i||new f.Vector3,o=this.knots[0]+n*(this.knots[this.knots.length-1]-this.knots[0]),l=ul(this.degree,this.knots,this.controlPoints,o,1);return r.copy(l[1]).normalize(),r}}let le,Ae,Ge;class hl extends f.Loader{constructor(n){super(n)}load(n,i,r,o){const l=this,p=l.path===""?f.LoaderUtils.extractUrlBase(n):l.path,h=new f.FileLoader(this.manager);h.setPath(l.path),h.setResponseType("arraybuffer"),h.setRequestHeader(l.requestHeader),h.setWithCredentials(l.withCredentials),h.load(n,function(d){try{i(l.parse(d,p))}catch(y){o?o(y):console.error(y),l.manager.itemError(n)}},r,o)}parse(n,i){if(gl(n))le=new bl().parse(n);else{const o=Jr(n);if(!_l(o))throw new Error("THREE.FBXLoader: Unknown format.");if(Qr(o)<7e3)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+Qr(o));le=new vl().parse(o)}const r=new f.TextureLoader(this.manager).setPath(this.resourcePath||i).setCrossOrigin(this.crossOrigin);return new dl(r,this.manager).parse(le)}}class dl{constructor(n,i){this.textureLoader=n,this.manager=i}parse(){Ae=this.parseConnections();const n=this.parseImages(),i=this.parseTextures(n),r=this.parseMaterials(i),o=this.parseDeformers(),l=new ml().parse(o);return this.parseScene(o,l,r),Ge}parseConnections(){const n=new Map;return"Connections"in le&&le.Connections.connections.forEach(function(r){const o=r[0],l=r[1],p=r[2];n.has(o)||n.set(o,{parents:[],children:[]});const h={ID:l,relationship:p};n.get(o).parents.push(h),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 le.Objects){const r=le.Objects.Video;for(const o in r){const l=r[o],p=parseInt(o);if(n[p]=l.RelativeFilename||l.Filename,"Content"in l){const h=l.Content instanceof ArrayBuffer&&l.Content.byteLength>0,d=typeof l.Content=="string"&&l.Content!=="";if(h||d){const y=this.parseImage(r[o]);i[l.RelativeFilename||l.Filename]=y}}}}for(const r in n){const o=n[r];i[o]!==void 0?n[r]=i[o]:n[r]=n[r].split("\\").pop()}return n}parseImage(n){const i=n.Content,r=n.RelativeFilename||n.Filename,o=r.slice(r.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 ",r),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 le.Objects){const r=le.Objects.Texture;for(const o in r){const l=this.parseTexture(r[o],n);i.set(parseInt(o),l)}}return i}parseTexture(n,i){const r=this.loadTexture(n,i);r.ID=n.id,r.name=n.attrName;const o=n.WrapModeU,l=n.WrapModeV,p=o!==void 0?o.value:0,h=l!==void 0?l.value:0;if(r.wrapS=p===0?f.RepeatWrapping:f.ClampToEdgeWrapping,r.wrapT=h===0?f.RepeatWrapping:f.ClampToEdgeWrapping,"Scaling"in n){const d=n.Scaling.value;r.repeat.x=d[0],r.repeat.y=d[1]}return r}loadTexture(n,i){let r;const o=this.textureLoader.path,l=Ae.get(n.id).children;l!==void 0&&l.length>0&&i[l[0].ID]!==void 0&&(r=i[l[0].ID],(r.indexOf("blob:")===0||r.indexOf("data:")===0)&&this.textureLoader.setPath(void 0));let p;const h=n.FileName.slice(-3).toLowerCase();if(h==="tga"){const d=this.manager.getHandler(".tga");d===null?(console.warn("FBXLoader: TGA loader not found, creating placeholder texture for",n.RelativeFilename),p=new f.Texture):(d.setPath(this.textureLoader.path),p=d.load(r))}else h==="psd"?(console.warn("FBXLoader: PSD textures are not supported, creating placeholder texture for",n.RelativeFilename),p=new f.Texture):p=this.textureLoader.load(r);return this.textureLoader.setPath(o),p}parseMaterials(n){const i=new Map;if("Material"in le.Objects){const r=le.Objects.Material;for(const o in r){const l=this.parseMaterial(r[o],n);l!==null&&i.set(parseInt(o),l)}}return i}parseMaterial(n,i){const r=n.id,o=n.attrName;let l=n.ShadingModel;if(typeof l=="object"&&(l=l.value),!Ae.has(r))return null;const p=this.parseParameters(n,i,r);let h;switch(l.toLowerCase()){case"phong":h=new f.MeshPhongMaterial;break;case"lambert":h=new f.MeshLambertMaterial;break;default:console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.',l),h=new f.MeshPhongMaterial;break}return h.setValues(p),h.name=o,h}parseParameters(n,i,r){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(r).children.forEach(function(p){const h=p.relationship;switch(h){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.",h);break}}),o}getTexture(n,i){return"LayeredTexture"in le.Objects&&i in le.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 le.Objects){const r=le.Objects.Deformer;for(const o in r){const l=r[o],p=Ae.get(parseInt(o));if(l.attrType==="Skin"){const h=this.parseSkeleton(p,r);h.ID=o,p.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),h.geometryID=p.parents[0].ID,n[o]=h}else if(l.attrType==="BlendShape"){const h={id:o};h.rawTargets=this.parseMorphTargets(p,r),h.id=o,p.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),i[o]=h}}}return{skeletons:n,morphTargets:i}}parseSkeleton(n,i){const r=[];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),r.push(p)}),{rawBones:r,bones:[]}}parseMorphTargets(n,i){const r=[];for(let o=0;o<n.children.length;o++){const l=n.children[o],p=i[l.ID],h={name:p.attrName,initialWeight:p.DeformPercent,id:p.id,fullWeights:p.FullWeights.a};if(p.attrType!=="BlendShapeChannel")return;h.geoID=Ae.get(parseInt(l.ID)).children.filter(function(d){return d.relationship===void 0})[0].ID,r.push(h)}return r}parseScene(n,i,r){Ge=new f.Group;const o=this.parseModels(n.skeletons,i,r),l=le.Objects.Model,p=this;o.forEach(function(d){const y=l[d.ID];p.setLookAtProperties(d,y),Ae.get(d.ID).parents.forEach(function(w){const C=o.get(w.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 y=Wr(d.userData.transformData);d.applyMatrix4(y),d.updateWorldMatrix()}});const h=new fl().parse();Ge.children.length===1&&Ge.children[0].isGroup&&(Ge.children[0].animations=h,Ge=Ge.children[0]),Ge.animations=h}parseModels(n,i,r){const o=new Map,l=le.Objects.Model;for(const p in l){const h=parseInt(p),d=l[p],y=Ae.get(h);let x=this.buildSkeleton(y,n,h,d.attrName);if(!x){switch(d.attrType){case"Camera":x=this.createCamera(y);break;case"Light":x=this.createLight(y);break;case"Mesh":x=this.createMesh(y,i,r);break;case"NurbsCurve":x=this.createCurve(y,i);break;case"LimbNode":case"Root":x=new f.Bone;break;case"Null":default:x=new f.Group;break}x.name=d.attrName?f.PropertyBinding.sanitizeNodeName(d.attrName):"",x.ID=h}this.getTransformData(x,d),o.set(h,x)}return o}buildSkeleton(n,i,r,o){let l=null;return n.parents.forEach(function(p){for(const h in i){const d=i[h];d.rawBones.forEach(function(y,x){if(y.ID===p.ID){const w=l;l=new f.Bone,l.matrixWorld.copy(y.transformLink),l.name=o?f.PropertyBinding.sanitizeNodeName(o):"",l.ID=r,d.bones[x]=l,w!==null&&l.add(w)}})}}),l}createCamera(n){let i,r;if(n.children.forEach(function(o){const l=le.Objects.NodeAttribute[o.ID];l!==void 0&&(r=l)}),r===void 0)i=new f.Object3D;else{let o=0;r.CameraProjectionType!==void 0&&r.CameraProjectionType.value===1&&(o=1);let l=1;r.NearPlane!==void 0&&(l=r.NearPlane.value/1e3);let p=1e3;r.FarPlane!==void 0&&(p=r.FarPlane.value/1e3);let h=window.innerWidth,d=window.innerHeight;r.AspectWidth!==void 0&&r.AspectHeight!==void 0&&(h=r.AspectWidth.value,d=r.AspectHeight.value);const y=h/d;let x=45;r.FieldOfView!==void 0&&(x=r.FieldOfView.value);const w=r.FocalLength?r.FocalLength.value:null;switch(o){case 0:i=new f.PerspectiveCamera(x,y,l,p),w!==null&&i.setFocalLength(w);break;case 1:i=new f.OrthographicCamera(-h/2,h/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,r;if(n.children.forEach(function(o){const l=le.Objects.NodeAttribute[o.ID];l!==void 0&&(r=l)}),r===void 0)i=new f.Object3D;else{let o;r.LightType===void 0?o=0:o=r.LightType.value;let l=16777215;r.Color!==void 0&&(l=new f.Color().fromArray(r.Color.value));let p=r.Intensity===void 0?1:r.Intensity.value/100;r.CastLightOnObject!==void 0&&r.CastLightOnObject.value===0&&(p=0);let h=0;r.FarAttenuationEnd!==void 0&&(r.EnableFarAttenuation!==void 0&&r.EnableFarAttenuation.value===0?h=0:h=r.FarAttenuationEnd.value);const d=1;switch(o){case 0:i=new f.PointLight(l,p,h,d);break;case 1:i=new f.DirectionalLight(l,p);break;case 2:let y=Math.PI/3;r.InnerAngle!==void 0&&(y=f.MathUtils.degToRad(r.InnerAngle.value));let x=0;r.OuterAngle!==void 0&&(x=f.MathUtils.degToRad(r.OuterAngle.value),x=Math.max(x,1)),i=new f.SpotLight(l,p,h,y,x,d);break;default:console.warn("THREE.FBXLoader: Unknown light type "+r.LightType.value+", defaulting to a PointLight."),i=new f.PointLight(l,p);break}r.CastShadows!==void 0&&r.CastShadows.value===1&&(i.castShadow=!0)}return i}createMesh(n,i,r){let o,l=null,p=null;const h=[];return n.children.forEach(function(d){i.has(d.ID)&&(l=i.get(d.ID)),r.has(d.ID)&&h.push(r.get(d.ID))}),h.length>1?p=h:h.length>0?p=h[0]:(p=new f.MeshPhongMaterial({color:13421772}),h.push(p)),"color"in l.attributes&&h.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 r=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(r,o)}getTransformData(n,i){const r={};"InheritType"in i&&(r.inheritType=parseInt(i.InheritType.value)),"RotationOrder"in i?r.eulerOrder=Zr(i.RotationOrder.value):r.eulerOrder="ZYX","Lcl_Translation"in i&&(r.translation=i.Lcl_Translation.value),"PreRotation"in i&&(r.preRotation=i.PreRotation.value),"Lcl_Rotation"in i&&(r.rotation=i.Lcl_Rotation.value),"PostRotation"in i&&(r.postRotation=i.PostRotation.value),"Lcl_Scaling"in i&&(r.scale=i.Lcl_Scaling.value),"ScalingOffset"in i&&(r.scalingOffset=i.ScalingOffset.value),"ScalingPivot"in i&&(r.scalingPivot=i.ScalingPivot.value),"RotationOffset"in i&&(r.rotationOffset=i.RotationOffset.value),"RotationPivot"in i&&(r.rotationPivot=i.RotationPivot.value),n.userData.transformData=r}setLookAtProperties(n,i){"LookAtProperty"in i&&Ae.get(n.ID).children.forEach(function(o){if(o.relationship==="LookAtProperty"){const l=le.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,r){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 y=d.ID;Ae.get(y).parents.forEach(function(w){r.has(w.ID)&&r.get(w.ID).bind(new f.Skeleton(p.bones),o[w.ID])})}})}}parsePoseNodes(){const n={};if("Pose"in le.Objects){const i=le.Objects.Pose;for(const r in i)if(i[r].attrType==="BindPose"&&i[r].NbPoseNodes>0){const o=i[r].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 le&&"AmbientColor"in le.GlobalSettings){const n=le.GlobalSettings.AmbientColor.value,i=n[0],r=n[1],o=n[2];if(i!==0||r!==0||o!==0){const l=new f.Color(i,r,o);Ge.add(new f.AmbientLight(l,1))}}}}class ml{parse(n){const i=new Map;if("Geometry"in le.Objects){const r=le.Objects.Geometry;for(const o in r){const l=Ae.get(parseInt(o)),p=this.parseGeometry(l,r[o],n);i.set(parseInt(o),p)}}return i}parseGeometry(n,i,r){switch(i.attrType){case"Mesh":return this.parseMeshGeometry(n,i,r);case"NurbsCurve":return this.parseNurbsGeometry(i)}}parseMeshGeometry(n,i,r){const o=r.skeletons,l=[],p=n.parents.map(function(w){return le.Objects.Model[w.ID]});if(p.length===0)return;const h=n.children.reduce(function(w,C){return o[C.ID]!==void 0&&(w=o[C.ID]),w},null);n.children.forEach(function(w){r.morphTargets[w.ID]!==void 0&&l.push(r.morphTargets[w.ID])});const d=p[0],y={};"RotationOrder"in d&&(y.eulerOrder=Zr(d.RotationOrder.value)),"InheritType"in d&&(y.inheritType=parseInt(d.InheritType.value)),"GeometricTranslation"in d&&(y.translation=d.GeometricTranslation.value),"GeometricRotation"in d&&(y.rotation=d.GeometricRotation.value),"GeometricScaling"in d&&(y.scale=d.GeometricScaling.value);const x=Wr(y);return this.genGeometry(i,h,l,x)}genGeometry(n,i,r,o){const l=new f.BufferGeometry;n.attrName&&(l.name=n.attrName);const p=this.parseGeoNode(n,i),h=this.genBuffers(p),d=new f.Float32BufferAttribute(h.vertex,3);if(d.applyMatrix4(o),l.setAttribute("position",d),h.colors.length>0&&l.setAttribute("color",new f.Float32BufferAttribute(h.colors,3)),i&&(l.setAttribute("skinIndex",new f.Uint16BufferAttribute(h.weightsIndices,4)),l.setAttribute("skinWeight",new f.Float32BufferAttribute(h.vertexWeights,4)),l.FBX_Deformer=i),h.normal.length>0){const y=new f.Matrix3().getNormalMatrix(o),x=new f.Float32BufferAttribute(h.normal,3);x.applyNormalMatrix(y),l.setAttribute("normal",x)}if(h.uvs.forEach(function(y,x){let w="uv"+(x+1).toString();x===0&&(w="uv"),l.setAttribute(w,new f.Float32BufferAttribute(h.uvs[x],2))}),p.material&&p.material.mappingType!=="AllSame"){let y=h.materialIndex[0],x=0;if(h.materialIndex.forEach(function(w,C){w!==y&&(l.addGroup(x,C-x,y),y=w,x=C)}),l.groups.length>0){const w=l.groups[l.groups.length-1],C=w.start+w.count;C!==h.materialIndex.length&&l.addGroup(C,h.materialIndex.length-C,y)}l.groups.length===0&&l.addGroup(0,h.materialIndex.length,h.materialIndex[0])}return this.addMorphTargets(l,n,r,o),l}parseGeoNode(n,i){const r={};if(r.vertexPositions=n.Vertices!==void 0?n.Vertices.a:[],r.vertexIndices=n.PolygonVertexIndex!==void 0?n.PolygonVertexIndex.a:[],n.LayerElementColor&&(r.color=this.parseVertexColors(n.LayerElementColor[0])),n.LayerElementMaterial&&(r.material=this.parseMaterialIndices(n.LayerElementMaterial[0])),n.LayerElementNormal&&(r.normal=this.parseNormals(n.LayerElementNormal[0])),n.LayerElementUV){r.uv=[];let o=0;for(;n.LayerElementUV[o];)n.LayerElementUV[o].UV&&r.uv.push(this.parseUVs(n.LayerElementUV[o])),o++}return r.weightTable={},i!==null&&(r.skeleton=i,i.rawBones.forEach(function(o,l){o.indices.forEach(function(p,h){r.weightTable[p]===void 0&&(r.weightTable[p]=[]),r.weightTable[p].push({id:l,weight:o.weights[h]})})})),r}genBuffers(n){const i={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]};let r=0,o=0,l=!1,p=[],h=[],d=[],y=[],x=[],w=[];const C=this;return n.vertexIndices.forEach(function(M,E){let A,L=!1;M<0&&(M=M^-1,L=!0);let z=[],R=[];if(p.push(M*3,M*3+1,M*3+2),n.color){const N=Ai(E,r,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){R.push(N.weight),z.push(N.id)}),R.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],I=[0,0,0,0];R.forEach(function(O,F){let G=O,B=z[F];I.forEach(function(K,$,q){if(G>K){q[$]=G,G=K;const se=N[$];N[$]=B,B=se}})}),z=N,R=I}for(;R.length<4;)R.push(0),z.push(0);for(let N=0;N<4;++N)x.push(R[N]),w.push(z[N])}if(n.normal){const N=Ai(E,r,M,n.normal);h.push(N[0],N[1],N[2])}n.material&&n.material.mappingType!=="AllSame"&&(A=Ai(E,r,M,n.material)[0]),n.uv&&n.uv.forEach(function(N,I){const O=Ai(E,r,M,N);y[I]===void 0&&(y[I]=[]),y[I].push(O[0]),y[I].push(O[1])}),o++,L&&(C.genFace(i,n,p,A,h,d,y,x,w,o),r++,o=0,p=[],h=[],d=[],y=[],x=[],w=[])}),i}genFace(n,i,r,o,l,p,h,d,y,x){for(let w=2;w<x;w++)n.vertex.push(i.vertexPositions[r[0]]),n.vertex.push(i.vertexPositions[r[1]]),n.vertex.push(i.vertexPositions[r[2]]),n.vertex.push(i.vertexPositions[r[(w-1)*3]]),n.vertex.push(i.vertexPositions[r[(w-1)*3+1]]),n.vertex.push(i.vertexPositions[r[(w-1)*3+2]]),n.vertex.push(i.vertexPositions[r[w*3]]),n.vertex.push(i.vertexPositions[r[w*3+1]]),n.vertex.push(i.vertexPositions[r[w*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[(w-1)*4]),n.vertexWeights.push(d[(w-1)*4+1]),n.vertexWeights.push(d[(w-1)*4+2]),n.vertexWeights.push(d[(w-1)*4+3]),n.vertexWeights.push(d[w*4]),n.vertexWeights.push(d[w*4+1]),n.vertexWeights.push(d[w*4+2]),n.vertexWeights.push(d[w*4+3]),n.weightsIndices.push(y[0]),n.weightsIndices.push(y[1]),n.weightsIndices.push(y[2]),n.weightsIndices.push(y[3]),n.weightsIndices.push(y[(w-1)*4]),n.weightsIndices.push(y[(w-1)*4+1]),n.weightsIndices.push(y[(w-1)*4+2]),n.weightsIndices.push(y[(w-1)*4+3]),n.weightsIndices.push(y[w*4]),n.weightsIndices.push(y[w*4+1]),n.weightsIndices.push(y[w*4+2]),n.weightsIndices.push(y[w*4+3])),i.color&&(n.colors.push(p[0]),n.colors.push(p[1]),n.colors.push(p[2]),n.colors.push(p[(w-1)*3]),n.colors.push(p[(w-1)*3+1]),n.colors.push(p[(w-1)*3+2]),n.colors.push(p[w*3]),n.colors.push(p[w*3+1]),n.colors.push(p[w*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[(w-1)*3]),n.normal.push(l[(w-1)*3+1]),n.normal.push(l[(w-1)*3+2]),n.normal.push(l[w*3]),n.normal.push(l[w*3+1]),n.normal.push(l[w*3+2])),i.uv&&i.uv.forEach(function(C,M){n.uvs[M]===void 0&&(n.uvs[M]=[]),n.uvs[M].push(h[M][0]),n.uvs[M].push(h[M][1]),n.uvs[M].push(h[M][(w-1)*2]),n.uvs[M].push(h[M][(w-1)*2+1]),n.uvs[M].push(h[M][w*2]),n.uvs[M].push(h[M][w*2+1])})}addMorphTargets(n,i,r,o){if(r.length===0)return;n.morphTargetsRelative=!0,n.morphAttributes.position=[];const l=this;r.forEach(function(p){p.rawTargets.forEach(function(h){const d=le.Objects.Geometry[h.geoID];d!==void 0&&l.genMorphGeometry(n,i,d,o,h.name)})})}genMorphGeometry(n,i,r,o,l){const p=i.PolygonVertexIndex!==void 0?i.PolygonVertexIndex.a:[],h=r.Vertices!==void 0?r.Vertices.a:[],d=r.Indexes!==void 0?r.Indexes.a:[],y=n.attributes.position.count*3,x=new Float32Array(y);for(let E=0;E<d.length;E++){const A=d[E]*3;x[A]=h[E*3],x[A+1]=h[E*3+1],x[A+2]=h[E*3+2]}const w={vertexIndices:p,vertexPositions:x},C=this.genBuffers(w),M=new f.Float32BufferAttribute(C.vertex,3);M.name=l||r.attrName,M.applyMatrix4(o),n.morphAttributes.position.push(M)}parseNormals(n){const i=n.MappingInformationType,r=n.ReferenceInformationType,o=n.Normals.a;let l=[];return r==="IndexToDirect"&&("NormalIndex"in n?l=n.NormalIndex.a:"NormalsIndex"in n&&(l=n.NormalsIndex.a)),{dataSize:3,buffer:o,indices:l,mappingType:i,referenceType:r}}parseUVs(n){const i=n.MappingInformationType,r=n.ReferenceInformationType,o=n.UV.a;let l=[];return r==="IndexToDirect"&&(l=n.UVIndex.a),{dataSize:2,buffer:o,indices:l,mappingType:i,referenceType:r}}parseVertexColors(n){const i=n.MappingInformationType,r=n.ReferenceInformationType,o=n.Colors.a;let l=[];return r==="IndexToDirect"&&(l=n.ColorIndex.a),{dataSize:4,buffer:o,indices:l,mappingType:i,referenceType:r}}parseMaterialIndices(n){const i=n.MappingInformationType,r=n.ReferenceInformationType;if(i==="NoMappingInformation")return{dataSize:1,buffer:[0],indices:[0],mappingType:"AllSame",referenceType:r};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:r}}parseNurbsGeometry(n){if(Xr===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 r=i-1,o=n.KnotVector.a,l=[],p=n.Points.a;for(let w=0,C=p.length;w<C;w+=4)l.push(new f.Vector4().fromArray(p,w));let h,d;if(n.Form==="Closed")l.push(l[0]);else if(n.Form==="Periodic"){h=r,d=o.length-1-h;for(let w=0;w<r;++w)l.push(l[w])}const x=new Xr(r,o,l,h,d).getPoints(l.length*12);return new f.BufferGeometry().setFromPoints(x)}}class fl{parse(){const n=[],i=this.parseClips();if(i!==void 0)for(const r in i){const o=i[r],l=this.addClip(o);n.push(l)}return n}parseClips(){if(le.Objects.AnimationCurve===void 0)return;const n=this.parseAnimationCurveNodes();this.parseAnimationCurves(n);const i=this.parseAnimationLayers(n);return this.parseAnimStacks(i)}parseAnimationCurveNodes(){const n=le.Objects.AnimationCurveNode,i=new Map;for(const r in n){const o=n[r];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=le.Objects.AnimationCurve;for(const r in i){const o={id:i[r].id,times:i[r].KeyTime.a.map(wl),values:i[r].KeyValueFloat.a},l=Ae.get(o.id);if(l!==void 0){const p=l.parents[0].ID,h=l.parents[0].relationship;h.match(/X/)?n.get(p).curves.x=o:h.match(/Y/)?n.get(p).curves.y=o:h.match(/Z/)?n.get(p).curves.z=o:h.match(/d|DeformPercent/)&&n.has(p)&&(n.get(p).curves.morph=o)}}}parseAnimationLayers(n){const i=le.Objects.AnimationLayer,r=new Map;for(const o in i){const l=[],p=Ae.get(parseInt(o));p!==void 0&&(p.children.forEach(function(d,y){if(n.has(d.ID)){const x=n.get(d.ID);if(x.curves.x!==void 0||x.curves.y!==void 0||x.curves.z!==void 0){if(l[y]===void 0){const w=Ae.get(d.ID).parents.filter(function(C){return C.relationship!==void 0})[0].ID;if(w!==void 0){const C=le.Objects.Model[w.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[y]=M}}l[y]&&(l[y][x.attr]=x)}else if(x.curves.morph!==void 0){if(l[y]===void 0){const w=Ae.get(d.ID).parents.filter(function(z){return z.relationship!==void 0})[0].ID,C=Ae.get(w).parents[0].ID,M=Ae.get(C).parents[0].ID,E=Ae.get(M).parents[0].ID,A=le.Objects.Model[E],L={modelName:A.attrName?f.PropertyBinding.sanitizeNodeName(A.attrName):"",morphName:le.Objects.Deformer[w].attrName};l[y]=L}l[y][x.attr]=x}}}),r.set(parseInt(o),l))}return r}parseAnimStacks(n){const i=le.Objects.AnimationStack,r={};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);r[o]={name:i[o].attrName,layer:p}}return r}addClip(n){let i=[];const r=this;return n.layer.forEach(function(o){i=i.concat(r.generateTracks(o))}),new f.AnimationClip(n.name,-1,i)}generateTracks(n){const i=[];let r=new f.Vector3,o=new f.Quaternion,l=new f.Vector3;if(n.transform&&n.transform.decompose(r,o,l),r=r.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,r,"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,r,o){const l=this.getTimesForAllAxes(i),p=this.getKeyframeTrackValues(l,i,r);return new f.VectorKeyframeTrack(n+"."+o,l,p)}generateRotationTrack(n,i,r,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 h=this.getTimesForAllAxes(i),d=this.getKeyframeTrackValues(h,i,r);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 y=new f.Quaternion,x=new f.Euler,w=[];for(let C=0;C<d.length;C+=3)x.set(d[C],d[C+1],d[C+2],p),y.setFromEuler(x),o!==void 0&&y.premultiply(o),l!==void 0&&y.multiply(l),y.toArray(w,C/3*4);return new f.QuaternionKeyframeTrack(n+".quaternion",h,w)}generateMorphTrack(n){const i=n.DeformPercent.curves.morph,r=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,r)}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(r,o){return r-o}),i.length>1){let r=1,o=i[0];for(let l=1;l<i.length;l++){const p=i[l];p!==o&&(i[r]=p,o=p,r++)}i=i.slice(0,r)}return i}getKeyframeTrackValues(n,i,r){const o=r,l=[];let p=-1,h=-1,d=-1;return n.forEach(function(y){if(i.x&&(p=i.x.times.indexOf(y)),i.y&&(h=i.y.times.indexOf(y)),i.z&&(d=i.z.times.indexOf(y)),p!==-1){const x=i.x.values[p];l.push(x),o[0]=x}else l.push(o[0]);if(h!==-1){const x=i.y.values[h];l.push(x),o[1]=x}else l.push(o[1]);if(d!==-1){const x=i.z.values[d];l.push(x),o[2]=x}else l.push(o[2])}),l}interpolateRotations(n){for(let i=1;i<n.values.length;i++){const r=n.values[i-1],o=n.values[i]-r,l=Math.abs(o);if(l>=180){const p=l/180,h=o/p;let d=r+h;const y=n.times[i-1],w=(n.times[i]-y)/p;let C=y+w;const M=[],E=[];for(;C<n.times[i];)M.push(C),C+=w,E.push(d),d+=h;n.times=Hr(n.times,i,M),n.values=Hr(n.values,i,E)}}}}class vl{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 qr,this.nodeStack=[],this.currentProp=[],this.currentPropName="";const i=this,r=n.split(/[\r\n]+/);return r.forEach(function(o,l){const p=o.match(/^[\s\t]*;/),h=o.match(/^[\s\t]*$/);if(p||h)return;const d=o.match("^\\t{"+i.currentIndent+"}(\\w+):(.*){",""),y=o.match("^\\t{"+i.currentIndent+"}(\\w+):[\\s\\t\\r\\n](.*)"),x=o.match("^\\t{"+(i.currentIndent-1)+"}}");d?i.parseNodeBegin(o,d):y?i.parseNodeProperty(o,y,r[++l]):x?i.popStack():o.match(/^[^\s\t}]/)&&i.parseNodePropertyContinued(o)}),this.allNodes}parseNodeBegin(n,i){const r=i[1].trim().replace(/^"/,"").replace(/"$/,""),o=i[2].split(",").map(function(d){return d.trim().replace(/^"/,"").replace(/"$/,"")}),l={name:r},p=this.parseNodeAttr(o),h=this.getCurrentNode();this.currentIndent===0?this.allNodes.add(r,l):r in h?(r==="PoseNode"?h.PoseNode.push(l):h[r].id!==void 0&&(h[r]={},h[r][h[r].id]=h[r]),p.id!==""&&(h[r][p.id]=l)):typeof p.id=="number"?(h[r]={},h[r][p.id]=l):r!=="Properties70"&&(r==="PoseNode"?h[r]=[l]:h[r]=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 r="",o="";return n.length>1&&(r=n[1].replace(/^(\w+)::/,""),o=n[2]),{id:i,name:r,type:o}}parseNodeProperty(n,i,r){let o=i[1].replace(/^"/,"").replace(/"$/,"").trim(),l=i[2].replace(/^"/,"").replace(/"$/,"").trim();o==="Content"&&l===","&&(l=r.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),y=parseInt(d[0]),x=parseInt(d[1]);let w=l.split(",").slice(3);w=w.map(function(C){return C.trim().replace(/^"/,"")}),o="connections",l=[y,x],xl(l,w),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=bs(l))}parseNodePropertyContinued(n){const i=this.getCurrentNode();i.a+=n,n.slice(-1)!==","&&(i.a=bs(i.a))}parseNodeSpecialProperty(n,i,r){const o=r.split('",').map(function(x){return x.trim().replace(/^\"/,"").replace(/\s/,"_")}),l=o[0],p=o[1],h=o[2],d=o[3];let y=o[4];switch(p){case"int":case"enum":case"bool":case"ULongLong":case"double":case"Number":case"FieldOfView":y=parseFloat(y);break;case"Color":case"ColorRGB":case"Vector3D":case"Lcl_Translation":case"Lcl_Rotation":case"Lcl_Scaling":y=bs(y);break}this.getPrevNode()[l]={type:p,type2:h,flag:d,value:y},this.setCurrentProp(this.getPrevNode(),l)}}class bl{parse(n){const i=new Yr(n);i.skip(23);const r=i.getUint32();if(r<6400)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+r);const o=new qr;for(;!this.endOfContent(i);){const l=this.parseNode(i,r);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 r={},o=i>=7500?n.getUint64():n.getUint32(),l=i>=7500?n.getUint64():n.getUint32();i>=7500?n.getUint64():n.getUint32();const p=n.getUint8(),h=n.getString(p);if(o===0)return null;const d=[];for(let C=0;C<l;C++)d.push(this.parseProperty(n));const y=d.length>0?d[0]:"",x=d.length>1?d[1]:"",w=d.length>2?d[2]:"";for(r.singleProperty=l===1&&n.getOffset()===o;o>n.getOffset();){const C=this.parseNode(n,i);C!==null&&this.parseSubNode(h,r,C)}return r.propertyList=d,typeof y=="number"&&(r.id=y),x!==""&&(r.attrName=x),w!==""&&(r.attrType=w),h!==""&&(r.name=h),r}parseSubNode(n,i,r){if(r.singleProperty===!0){const o=r.propertyList[0];Array.isArray(o)?(i[r.name]=r,r.a=o):i[r.name]=o}else if(n==="Connections"&&r.name==="C"){const o=[];r.propertyList.forEach(function(l,p){p!==0&&o.push(l)}),i.connections===void 0&&(i.connections=[]),i.connections.push(o)}else if(r.name==="Properties70")Object.keys(r).forEach(function(l){i[l]=r[l]});else if(n==="Properties70"&&r.name==="P"){let o=r.propertyList[0],l=r.propertyList[1];const p=r.propertyList[2],h=r.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=[r.propertyList[4],r.propertyList[5],r.propertyList[6]]:d=r.propertyList[4],i[o]={type:l,type2:p,flag:h,value:d}}else i[r.name]===void 0?typeof r.id=="number"?(i[r.name]={},i[r.name][r.id]=r):i[r.name]=r:r.name==="PoseNode"?(Array.isArray(i[r.name])||(i[r.name]=[i[r.name]]),i[r.name].push(r)):i[r.name][r.id]===void 0&&(i[r.name][r.id]=r)}parseProperty(n){const i=n.getString(1);let r;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 r=n.getUint32(),n.getArrayBuffer(r);case"S":return r=n.getUint32(),n.getString(r);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 h=la(new Uint8Array(n.getArrayBuffer(p))),d=new Yr(h.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 Yr{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 r=0;r<n;r++)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 r=0;r<n;r++)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 r=0;r<n;r++)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 r=0;r<n;r++)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 r=0;r<n;r++)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 r=i.indexOf(0);return r>=0&&(i=i.slice(0,r)),f.LoaderUtils.decodeText(new Uint8Array(i))}}class qr{add(n,i){this[n]=i}}function gl(v){const n="Kaydara FBX Binary \0";return v.byteLength>=n.length&&n===Jr(v,0,n.length)}function _l(v){const n=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"];let i=0;function r(o){const l=v[o-1];return v=v.slice(i+o),i++,l}for(let o=0;o<n.length;++o)if(r(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 wl(v){return v/46186158e3}const yl=[];function Ai(v,n,i,r){let o;switch(r.mappingType){case"ByPolygonVertex":o=v;break;case"ByPolygon":o=n;break;case"ByVertice":o=i;break;case"AllSame":o=r.indices[0];break;default:console.warn("THREE.FBXLoader: unknown attribute mapping type "+r.mappingType)}r.referenceType==="IndexToDirect"&&(o=r.indices[o]);const l=o*r.dataSize,p=l+r.dataSize;return Cl(yl,r.buffer,l,p)}const vs=new f.Euler,Cn=new f.Vector3;function Wr(v){const n=new f.Matrix4,i=new f.Matrix4,r=new f.Matrix4,o=new f.Matrix4,l=new f.Matrix4,p=new f.Matrix4,h=new f.Matrix4,d=new f.Matrix4,y=new f.Matrix4,x=new f.Matrix4,w=new f.Matrix4,C=new f.Matrix4,M=v.inheritType?v.inheritType:0;if(v.translation&&n.setPosition(Cn.fromArray(v.translation)),v.preRotation){const $=v.preRotation.map(f.MathUtils.degToRad);$.push(v.eulerOrder),i.makeRotationFromEuler(vs.fromArray($))}if(v.rotation){const $=v.rotation.map(f.MathUtils.degToRad);$.push(v.eulerOrder),r.makeRotationFromEuler(vs.fromArray($))}if(v.postRotation){const $=v.postRotation.map(f.MathUtils.degToRad);$.push(v.eulerOrder),o.makeRotationFromEuler(vs.fromArray($)),o.invert()}v.scale&&l.scale(Cn.fromArray(v.scale)),v.scalingOffset&&h.setPosition(Cn.fromArray(v.scalingOffset)),v.scalingPivot&&p.setPosition(Cn.fromArray(v.scalingPivot)),v.rotationOffset&&d.setPosition(Cn.fromArray(v.rotationOffset)),v.rotationPivot&&y.setPosition(Cn.fromArray(v.rotationPivot)),v.parentMatrixWorld&&(w.copy(v.parentMatrix),x.copy(v.parentMatrixWorld));const E=i.clone().multiply(r).multiply(o),A=new f.Matrix4;A.extractRotation(x);const L=new f.Matrix4;L.copyPosition(x);const z=L.clone().invert().multiply(x),R=A.clone().invert().multiply(z),N=l,I=new f.Matrix4;if(M===0)I.copy(A).multiply(E).multiply(R).multiply(N);else if(M===1)I.copy(A).multiply(R).multiply(E).multiply(N);else{const q=new f.Matrix4().scale(new f.Vector3().setFromMatrixScale(w)).clone().invert(),se=R.clone().multiply(q);I.copy(A).multiply(E).multiply(se).multiply(N)}const O=y.clone().invert(),F=p.clone().invert();let G=n.clone().multiply(d).multiply(y).multiply(i).multiply(r).multiply(o).multiply(O).multiply(h).multiply(p).multiply(l).multiply(F);const B=new f.Matrix4().copyPosition(G),K=x.clone().multiply(B);return C.copyPosition(K),G=C.clone().multiply(I),G.premultiply(x.invert()),G}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 bs(v){return v.split(",").map(function(i){return parseFloat(i)})}function Jr(v,n,i){return n===void 0&&(n=0),i===void 0&&(i=v.byteLength),f.LoaderUtils.decodeText(new Uint8Array(v,n,i))}function xl(v,n){for(let i=0,r=v.length,o=n.length;i<o;i++,r++)v[r]=n[i]}function Cl(v,n,i,r){for(let o=i,l=0;o<r;o++,l++)v[l]=n[o];return v}function Hr(v,n,i){return v.slice(0,n).concat(i).concat(v.slice(n))}var Pl=Object.defineProperty,kl=(v,n,i)=>n in v?Pl(v,n,{enumerable:!0,configurable:!0,writable:!0,value:i}):v[n]=i,gs=(v,n,i)=>(kl(v,typeof n!="symbol"?n+"":n,i),i);class Ml extends f.Loader{constructor(n){super(n)}load(n,i,r,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 h=JSON.parse(p),d=this.parse(h);i&&i(d)},r,o)}loadAsync(n,i){return super.loadAsync(n,i)}parse(n){return new _s(n)}}class _s{constructor(n){gs(this,"data"),this.data=n}generateShapes(n,i=100,r){const o=[],l={letterSpacing:0,lineHeight:1,...r},p=Al(n,i,this.data,l);for(let h=0,d=p.length;h<d;h++)Array.prototype.push.apply(o,p[h].toShapes(!1));return o}}gs(_s,"isFont"),gs(_s,"type");function Al(v,n,i,r){const o=Array.from(v),l=n/i.resolution,p=(i.boundingBox.yMax-i.boundingBox.yMin+i.underlineThickness)*l,h=[];let d=0,y=0;for(let x=0;x<o.length;x++){const w=o[x];if(w===`
|
|
74
|
+
`)d=0,y-=p*r.lineHeight;else{const C=Sl(w,l,d,y,i);C&&(d+=C.offsetX+r.letterSpacing,h.push(C.path))}}return h}function Sl(v,n,i,r,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 h,d,y,x,w,C,M,E;if(l.o){const A=l._cachedOutline||(l._cachedOutline=l.o.split(" "));for(let L=0,z=A.length;L<z;)switch(A[L++]){case"m":h=parseInt(A[L++])*n+i,d=parseInt(A[L++])*n+r,p.moveTo(h,d);break;case"l":h=parseInt(A[L++])*n+i,d=parseInt(A[L++])*n+r,p.lineTo(h,d);break;case"q":y=parseInt(A[L++])*n+i,x=parseInt(A[L++])*n+r,w=parseInt(A[L++])*n+i,C=parseInt(A[L++])*n+r,p.quadraticCurveTo(w,C,y,x);break;case"b":y=parseInt(A[L++])*n+i,x=parseInt(A[L++])*n+r,w=parseInt(A[L++])*n+i,C=parseInt(A[L++])*n+r,M=parseInt(A[L++])*n+i,E=parseInt(A[L++])*n+r,p.bezierCurveTo(w,C,M,E,y,x);break}}return{offsetX:l.ha*n,path:p}}var eo=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ll(v){return v&&v.__esModule&&Object.prototype.hasOwnProperty.call(v,"default")?v.default:v}class Vl extends f.DataTextureLoader{constructor(n){super(n),this.type=f.HalfFloatType}parse(n){const h=function(N,I){switch(N){case 1:console.error("THREE.RGBELoader Read Error: "+(I||""));break;case 2:console.error("THREE.RGBELoader Write Error: "+(I||""));break;case 3:console.error("THREE.RGBELoader Bad File Format: "+(I||""));break;default:case 4:console.error("THREE.RGBELoader: Error: "+(I||""))}return-1},w=`
|
|
75
|
+
`,C=function(N,I,O){I=I||1024;let G=N.pos,B=-1,K=0,$="",q=String.fromCharCode.apply(null,new Uint16Array(N.subarray(G,G+128)));for(;0>(B=q.indexOf(w))&&K<I&&G<N.byteLength;)$+=q,K+=q.length,G+=128,q+=String.fromCharCode.apply(null,new Uint16Array(N.subarray(G,G+128)));return-1<B?(O!==!1&&(N.pos+=K+B+1),$+q.slice(0,B)):!1},M=function(N){const I=/^#\?(\S+)/,O=/^\s*GAMMA\s*=\s*(\d+(\.\d+)?)\s*$/,F=/^\s*EXPOSURE\s*=\s*(\d+(\.\d+)?)\s*$/,G=/^\s*FORMAT=(\S+)\s*$/,B=/^\s*\-Y\s+(\d+)\s+\+X\s+(\d+)\s*$/,K={valid:0,string:"",comments:"",programtype:"RGBE",format:"",gamma:1,exposure:1,width:0,height:0};let $,q;if(N.pos>=N.byteLength||!($=C(N)))return h(1,"no header found");if(!(q=$.match(I)))return h(3,"bad initial token");for(K.valid|=1,K.programtype=q[1],K.string+=$+`
|
|
76
|
+
`;$=C(N),$!==!1;){if(K.string+=$+`
|
|
77
|
+
`,$.charAt(0)==="#"){K.comments+=$+`
|
|
78
|
+
`;continue}if((q=$.match(O))&&(K.gamma=parseFloat(q[1])),(q=$.match(F))&&(K.exposure=parseFloat(q[1])),(q=$.match(G))&&(K.valid|=2,K.format=q[1]),(q=$.match(B))&&(K.valid|=4,K.height=parseInt(q[1],10),K.width=parseInt(q[2],10)),K.valid&2&&K.valid&4)break}return K.valid&2?K.valid&4?K:h(3,"missing image size specifier"):h(3,"missing format specifier")},E=function(N,I,O){const F=I;if(F<8||F>32767||N[0]!==2||N[1]!==2||N[2]&128)return new Uint8Array(N);if(F!==(N[2]<<8|N[3]))return h(3,"wrong scanline width");const G=new Uint8Array(4*I*O);if(!G.length)return h(4,"unable to allocate buffer space");let B=0,K=0;const $=4*F,q=new Uint8Array(4),se=new Uint8Array($);let he=O;for(;he>0&&K<N.byteLength;){if(K+4>N.byteLength)return h(1);if(q[0]=N[K++],q[1]=N[K++],q[2]=N[K++],q[3]=N[K++],q[0]!=2||q[1]!=2||(q[2]<<8|q[3])!=F)return h(3,"bad rgbe scanline format");let ie=0,fe;for(;ie<$&&K<N.byteLength;){fe=N[K++];const te=fe>128;if(te&&(fe-=128),fe===0||ie+fe>$)return h(3,"bad scanline data");if(te){const W=N[K++];for(let Pe=0;Pe<fe;Pe++)se[ie++]=W}else se.set(N.subarray(K,K+fe),ie),ie+=fe,K+=fe}const pe=F;for(let te=0;te<pe;te++){let W=0;G[B]=se[te+W],W+=F,G[B+1]=se[te+W],W+=F,G[B+2]=se[te+W],W+=F,G[B+3]=se[te+W],B+=4}he--}return G},A=function(N,I,O,F){const G=N[I+3],B=Math.pow(2,G-128)/255;O[F+0]=N[I+0]*B,O[F+1]=N[I+1]*B,O[F+2]=N[I+2]*B,O[F+3]=1},L=function(N,I,O,F){const G=N[I+3],B=Math.pow(2,G-128)/255;O[F+0]=f.DataUtils.toHalfFloat(Math.min(N[I+0]*B,65504)),O[F+1]=f.DataUtils.toHalfFloat(Math.min(N[I+1]*B,65504)),O[F+2]=f.DataUtils.toHalfFloat(Math.min(N[I+2]*B,65504)),O[F+3]=f.DataUtils.toHalfFloat(1)},z=new Uint8Array(n);z.pos=0;const R=M(z);if(R!==-1){const N=R.width,I=R.height,O=E(z.subarray(z.pos),N,I);if(O!==-1){let F,G,B;switch(this.type){case f.FloatType:B=O.length/4;const K=new Float32Array(B*4);for(let q=0;q<B;q++)A(O,q*4,K,q*4);F=K,G=f.FloatType;break;case f.HalfFloatType:B=O.length/4;const $=new Uint16Array(B*4);for(let q=0;q<B;q++)L(O,q*4,$,q*4);F=$,G=f.HalfFloatType;break;default:console.error("THREE.RGBELoader: unsupported type: ",this.type);break}return{width:N,height:I,data:F,header:R.string,gamma:R.gamma,exposure:R.exposure,type:G}}}return null}setDataType(n){return this.type=n,this}load(n,i,r,o){function l(p,h){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,h)}return super.load(n,l,r,o)}}const ws=new WeakMap;class Dl 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,r,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 h={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(p,h).then(i).catch(o)},r,o)}decodeDracoFile(n,i,r,o){const l={attributeIDs:r||this.defaultAttributeIDs,attributeTypes:o||this.defaultAttributeTypes,useUniqueIDs:!!r};this.decodeGeometry(n,l).then(i)}decodeGeometry(n,i){for(const d in i.attributeTypes){const y=i.attributeTypes[d];y.BYTES_PER_ELEMENT!==void 0&&(i.attributeTypes[d]=y.name)}const r=JSON.stringify(i);if(ws.has(n)){const d=ws.get(n);if(d.key===r)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,h=this._getWorker(l,p).then(d=>(o=d,new Promise((y,x)=>{o._callbacks[l]={resolve:y,reject:x},o.postMessage({type:"decode",id:l,taskConfig:i,buffer:n},[n])}))).then(d=>this._createGeometry(d.geometry));return h.catch(()=>!0).then(()=>{o&&l&&this._releaseTask(o,l)}),ws.set(n,{key:r,promise:h}),h}_createGeometry(n){const i=new f.BufferGeometry;n.index&&i.setIndex(new f.BufferAttribute(n.index.array,1));for(let r=0;r<n.attributes.length;r++){const o=n.attributes[r],l=o.name,p=o.array,h=o.itemSize;i.setAttribute(l,new f.BufferAttribute(p,h))}return i}_loadLibrary(n,i){const r=new f.FileLoader(this.manager);return r.setPath(this.decoderPath),r.setResponseType(i),r.setWithCredentials(this.withCredentials),new Promise((o,l)=>{r.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(r=>{const o=r[0];n||(this.decoderConfig.wasmBinary=r[1]);const l=Il.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 r=this.workerPool[this.workerPool.length-1];return r._taskCosts[n]=i,r._taskLoad+=i,r})}_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 Il(){let v,n;onmessage=function(p){const h=p.data;switch(h.type){case"init":v=h.decoderConfig,n=new Promise(function(x){v.onModuleLoaded=function(w){x({draco:w})},DracoDecoderModule(v)});break;case"decode":const d=h.buffer,y=h.taskConfig;n.then(x=>{const w=x.draco,C=new w.Decoder,M=new w.DecoderBuffer;M.Init(new Int8Array(d),d.byteLength);try{const E=i(w,C,M,y),A=E.attributes.map(L=>L.array.buffer);E.index&&A.push(E.index.array.buffer),self.postMessage({type:"decode",id:h.id,geometry:E},A)}catch(E){console.error(E),self.postMessage({type:"error",id:h.id,error:E.message})}finally{w.destroy(M),w.destroy(C)}});break}};function i(p,h,d,y){const x=y.attributeIDs,w=y.attributeTypes;let C,M;const E=h.GetEncodedGeometryType(d);if(E===p.TRIANGULAR_MESH)C=new p.Mesh,M=h.DecodeBufferToMesh(d,C);else if(E===p.POINT_CLOUD)C=new p.PointCloud,M=h.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 A={index:null,attributes:[]};for(const L in x){const z=self[w[L]];let R,N;if(y.useUniqueIDs)N=x[L],R=h.GetAttributeByUniqueId(C,N);else{if(N=h.GetAttributeId(C,p[x[L]]),N===-1)continue;R=h.GetAttribute(C,N)}A.attributes.push(o(p,h,C,L,z,R))}return E===p.TRIANGULAR_MESH&&(A.index=r(p,h,C)),p.destroy(C),A}function r(p,h,d){const x=d.num_faces()*3,w=x*4,C=p._malloc(w);h.GetTrianglesUInt32Array(d,w,C);const M=new Uint32Array(p.HEAPF32.buffer,C,x).slice();return p._free(C),{array:M,itemSize:1}}function o(p,h,d,y,x,w){const C=w.num_components(),E=d.num_points()*C,A=E*x.BYTES_PER_ELEMENT,L=l(p,x),z=p._malloc(A);h.GetAttributeDataArrayForAllPoints(d,w,L,A,z);const R=new x(p.HEAPF32.buffer,z,E).slice();return p._free(z),{name:y,array:R,itemSize:C}}function l(p,h){switch(h){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 Qe(){const{state:v,setState:n}=g.inject("useTres",Te.useTres()),i=g.inject("extend")||(()=>{});return{state:v,setState:n,extend:i}}const Tl=["args","center"],El=g.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,r;const o=v,{center:l,font:p,text:h,needUpdates:d,size:y,height:x,curveSegments:w,bevelEnabled:C,bevelThickness:M,bevelSize:E,bevelOffset:A,bevelSegments:L}=g.toRefs(o),{extend:z}=Qe();z({TextGeometry:Kr});const R=new Ml,N=g.useSlots(),I=g.computed(()=>{var B;return h!=null&&h.value?h.value:N.default?(B=N.default()[0].children)==null?void 0:B.trim():d.value?"":"TresJS"}),O=g.shallowRef();n({value:O});const F=([i,r]=g.withAsyncContext(()=>new Promise((B,K)=>{try{typeof p.value=="string"?R.load(p.value,$=>{B($)}):B(p.value)}catch($){K(console.error("cientos",$))}})),i=await i,r(),i),G=g.computed(()=>({font:F,size:g.toValue(y),height:g.toValue(x),curveSegments:g.toValue(w),bevelEnabled:g.toValue(C),bevelThickness:g.toValue(M),bevelSize:g.toValue(E),bevelOffset:g.toValue(A),bevelSegments:g.toValue(L)}));return g.watchEffect(()=>{O.value&&d.value&&(O.value.geometry.dispose(),O.value.geometry=new Kr(I.value,G.value),l.value&&O.value.geometry.center())}),(B,K)=>g.unref(p)?(g.openBlock(),g.createElementBlock("TresMesh",{key:0,ref_key:"text3DRef",ref:O},[I.value?(g.openBlock(),g.createElementBlock("TresTextGeometry",{key:0,args:[I.value,G.value],center:g.unref(l)},null,8,Tl)):g.createCommentVNode("",!0),g.renderSlot(B.$slots,"default")],512)):g.createCommentVNode("",!0)}});function Ol(v,n){const i=g.ref(n),r=new f.AnimationMixer(i.value),o=g.shallowReactive({});v.forEach(p=>{const h=r.clipAction(p,i.value);o[p.name]=h});const{onLoop:l}=Te.useRenderLoop();return l(({delta:p})=>{r.update(p)}),{actions:o,mixer:r}}const ys={sunset:"venice/venice_sunset_4k.hdr"};async function to({files:v=["/px.png","/nx.png","/py.png","/ny.png","/pz.png","/nz.png"],blur:n=0,background:i=!1,path:r="/",preset:o=void 0}){const{state:l}=Qe();if(o){if(!(o in ys))throw new Error("Preset must be one of: "+Object.keys(ys).join(", "));v=ys[o],r="https://raw.githubusercontent.com/Tresjs/assets/main/textures/hdr/"}const p=Array.isArray(v),h=p?f.CubeTextureLoader:Vl,d=await Te.useLoader(h,p?[v]:v,x=>{r&&x.setPath(r)}),y=p?d[0]:d;return y&&(y.mapping=p?f.CubeReflectionMapping:f.EquirectangularReflectionMapping,y.colorSpace=f.SRGBColorSpace),l.scene&&(l.scene.environment=y,i!==void 0&&(l.scene.background=y),n&&(l.scene.backgroundBlurriness=n|0)),y}const Bl=g.defineComponent({name:"Environment",props:["background","blur","files","encoding","path","preset"],async setup(v,{expose:n}){let i=null;return n({getTexture:()=>i}),i=await to(v),()=>{}}});function no(v){return g.getCurrentScope()?(g.onScopeDispose(v),!0):!1}function lt(v){return typeof v=="function"?v():g.unref(v)}const Nl=typeof window<"u",Et=()=>{};function io(v,n){function i(...r){return new Promise((o,l)=>{Promise.resolve(v(()=>n.apply(this,r),{fn:n,thisArg:this,args:r})).then(o).catch(l)})}return i}function Fl(v,n={}){let i,r,o=Et;const l=h=>{clearTimeout(h),o(),o=Et};return h=>{const d=lt(v),y=lt(n.maxWait);return i&&l(i),d<=0||y!==void 0&&y<=0?(r&&(l(r),r=null),Promise.resolve(h())):new Promise((x,w)=>{o=n.rejectOnCancel?w:x,y&&!r&&(r=setTimeout(()=>{i&&l(i),r=null,x(h())},y)),i=setTimeout(()=>{r&&l(r),r=null,x(h())},d)})}}function zl(v,n=!0,i=!0,r=!1){let o=0,l,p=!0,h=Et,d;const y=()=>{l&&(clearTimeout(l),l=void 0,h(),h=Et)};return w=>{const C=lt(v),M=Date.now()-o,E=()=>d=w();return y(),C<=0?(o=Date.now(),E()):(M>C&&(i||!p)?(o=Date.now(),E()):n&&(d=new Promise((A,L)=>{h=r?L:A,l=setTimeout(()=>{o=Date.now(),p=!0,A(E()),y()},Math.max(0,C-M))})),!i&&!l&&(l=setTimeout(()=>p=!0,C)),p=!1,d)}}function jl(...v){if(v.length!==1)return g.toRef(...v);const n=v[0];return typeof n=="function"?g.readonly(g.customRef(()=>({get:n,set:Et}))):g.ref(n)}function Rl(v,n=200,i={}){return io(Fl(n,i),v)}function Ul(v,n=200,i=!1,r=!0,o=!1){return io(zl(n,i,r,o),v)}function Gl(v,n=!0){g.getCurrentInstance()?g.onMounted(v):n?v():g.nextTick(v)}function Kl(v){var n;const i=lt(v);return(n=i==null?void 0:i.$el)!=null?n:i}const Pn=Nl?window:void 0;function De(...v){let n,i,r,o;if(typeof v[0]=="string"||Array.isArray(v[0])?([i,r,o]=v,n=Pn):[n,i,r,o]=v,!n)return Et;Array.isArray(i)||(i=[i]),Array.isArray(r)||(r=[r]);const l=[],p=()=>{l.forEach(x=>x()),l.length=0},h=(x,w,C,M)=>(x.addEventListener(w,C,M),()=>x.removeEventListener(w,C,M)),d=g.watch(()=>[Kl(n),lt(o)],([x,w])=>{p(),x&&l.push(...i.flatMap(C=>r.map(M=>h(x,C,M,w))))},{immediate:!0,flush:"post"}),y=()=>{d(),p()};return no(y),y}function $l(v){return typeof v=="function"?v:typeof v=="string"?n=>n.key===v:Array.isArray(v)?n=>v.includes(n.key):()=>!0}function Qt(...v){let n,i,r={};v.length===3?(n=v[0],i=v[1],r=v[2]):v.length===2?typeof v[1]=="object"?(n=!0,i=v[0],r=v[1]):(n=v[0],i=v[1]):(n=!0,i=v[0]);const{target:o=Pn,eventName:l="keydown",passive:p=!1,dedupe:h=!1}=r,d=$l(n);return De(o,l,x=>{x.repeat&<(h)||d(x)&&i(x)},p)}function Xl(){const v=g.ref(!1);return g.getCurrentInstance()&&g.onMounted(()=>{v.value=!0}),v}function Yl(v){const n=Xl();return g.computed(()=>(n.value,!!v()))}function ql(v,n={}){const{window:i=Pn}=n,r=Yl(()=>i&&"matchMedia"in i&&typeof i.matchMedia=="function");let o;const l=g.ref(!1),p=()=>{o&&("removeEventListener"in o?o.removeEventListener("change",h):o.removeListener(h))},h=()=>{r.value&&(p(),o=i.matchMedia(jl(v).value),l.value=!!(o!=null&&o.matches),o&&("addEventListener"in o?o.addEventListener("change",h):o.addListener(h)))};return g.watchEffect(h),no(()=>p()),l}const so=1;function Ql(v,n={}){const{throttle:i=0,idle:r=200,onStop:o=Et,onScroll:l=Et,offset:p={left:0,right:0,top:0,bottom:0},eventListenerOptions:h={capture:!1,passive:!0},behavior:d="auto"}=n,y=g.ref(0),x=g.ref(0),w=g.computed({get(){return y.value},set(O){M(O,void 0)}}),C=g.computed({get(){return x.value},set(O){M(void 0,O)}});function M(O,F){var G,B,K;const $=lt(v);$&&((K=$ instanceof Document?document.body:$)==null||K.scrollTo({top:(G=lt(F))!=null?G:C.value,left:(B=lt(O))!=null?B:w.value,behavior:lt(d)}))}const E=g.ref(!1),A=g.reactive({left:!0,right:!1,top:!0,bottom:!1}),L=g.reactive({left:!1,right:!1,top:!1,bottom:!1}),z=O=>{E.value&&(E.value=!1,L.left=!1,L.right=!1,L.top=!1,L.bottom=!1,o(O))},R=Rl(z,i+r),N=O=>{const F=O===window?O.document.documentElement:O===document?O.documentElement:O,{display:G,flexDirection:B}=getComputedStyle(F),K=F.scrollLeft;L.left=K<y.value,L.right=K>y.value;const $=Math.abs(K)<=0+(p.left||0),q=Math.abs(K)+F.clientWidth>=F.scrollWidth-(p.right||0)-so;G==="flex"&&B==="row-reverse"?(A.left=q,A.right=$):(A.left=$,A.right=q),y.value=K;let se=F.scrollTop;O===document&&!se&&(se=document.body.scrollTop),L.top=se<x.value,L.bottom=se>x.value;const he=Math.abs(se)<=0+(p.top||0),ie=Math.abs(se)+F.clientHeight>=F.scrollHeight-(p.bottom||0)-so;G==="flex"&&B==="column-reverse"?(A.top=ie,A.bottom=he):(A.top=he,A.bottom=ie),x.value=se},I=O=>{const F=O.target===document?O.target.documentElement:O.target;N(F),E.value=!0,R(O),l(O)};return De(v,"scroll",i?Ul(I,i,!0,!1):I,h),De(v,"scrollend",z,h),{x:w,y:C,isScrolling:E,arrivedState:A,directions:L,measure(){const O=lt(v);O&&N(O)}}}const Wl={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 Zl(v={}){const{type:n="page",touch:i=!0,resetOnTouchEnds:r=!1,initialValue:o={x:0,y:0},window:l=Pn,target:p=l,eventFilter:h}=v,d=g.ref(o.x),y=g.ref(o.y),x=g.ref(null),w=typeof n=="function"?n:Wl[n],C=z=>{const R=w(z);R&&([d.value,y.value]=R,x.value="mouse")},M=z=>{if(z.touches.length>0){const R=w(z.touches[0]);R&&([d.value,y.value]=R,x.value="touch")}},E=()=>{d.value=o.x,y.value=o.y},A=h?z=>h(()=>C(z),{}):z=>C(z),L=h?z=>h(()=>M(z),{}):z=>M(z);return p&&(De(p,"mousemove",A,{passive:!0}),De(p,"dragover",A,{passive:!0}),i&&n!=="movement"&&(De(p,"touchstart",L,{passive:!0}),De(p,"touchmove",L,{passive:!0}),r&&De(p,"touchend",E,{passive:!0}))),{x:d,y,sourceType:x}}function Jl({window:v=Pn}={}){if(!v)return{x:g.ref(0),y:g.ref(0)};const n=g.ref(v.scrollX),i=g.ref(v.scrollY);return De(v,"scroll",()=>{n.value=v.scrollX,i.value=v.scrollY},{capture:!1,passive:!0}),{x:n,y:i}}function ro(v={}){const{window:n=Pn,initialWidth:i=1/0,initialHeight:r=1/0,listenOrientation:o=!0,includeScrollbar:l=!0}=v,p=g.ref(i),h=g.ref(r),d=()=>{n&&(l?(p.value=n.innerWidth,h.value=n.innerHeight):(p.value=n.document.documentElement.clientWidth,h.value=n.document.documentElement.clientHeight))};if(d(),Gl(d),De("resize",d,{passive:!0}),o){const y=ql("(orientation: portrait)");g.watch(y,()=>d())}return{width:p,height:h}}function oo(v=!1,n=2.5,i=!0,r){var A;const{x:o,y:l}=Zl(),{logWarning:p}=Te.useLogger(),{state:h}=Qe(),{width:d,height:y}=ro(),{onLoop:x}=Te.useRenderLoop(),w=new f.Group,C=i?2.5:30,M=g.computed(()=>(o.value/d.value-.5)*n),E=g.computed(()=>-(l.value/y.value-.5)*n);r&&h.scene?(w.add(r),(A=h.scene)==null||A.add(w),x(({delta:L})=>{v||(w.position.x+=(M.value-w.position.x)*C*L,w.position.y+=(E.value-w.position.y)*C*L)})):p("Scene must contain a Camera component to use this composable")}const Hl=g.defineComponent({name:"PamCameraMouse",props:["disabled","factor","ease"],setup(v){const{state:n}=Qe();return g.watchEffect(()=>{if(n!=null&&n.camera){const i=n==null?void 0:n.camera;oo(v.disabled,v.factor,v.ease,i)}}),()=>{}}}),ec=["position","a-scale"],tc=["size","size-attenuation","transparent","alpha-test","alpha-map"],nc=g.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,{radius:r,depth:o,count:l,factor:p,size:h,sizeAttenuation:d,transparent:y,alphaMap:x,alphaTest:w}=g.toRefs(i);let C=r.value+o.value;const M=g.computed(()=>o.value/l.value),E=[],A=Array.from({length:l.value},()=>(.5+.5*Math.random())*p.value),L=I=>new f.Vector3().setFromSpherical(new f.Spherical(I,Math.acos(1-Math.random()*2),Math.random()*2*Math.PI)).toArray();for(let I=0;I<l.value;I++)C-=M.value*Math.random(),E.push(...L(C));const z=new Float32Array(E),R=new Float32Array(A),N=g.shallowRef();return n({value:N}),(I,O)=>(g.openBlock(),g.createElementBlock("TresPoints",{ref_key:"starsRef",ref:N},[g.createElementVNode("TresBufferGeometry",{position:[g.unref(z),3],"a-scale":[g.unref(R),1]},null,8,ec),g.createElementVNode("TresPointsMaterial",{size:g.unref(h),"size-attenuation":g.unref(d),transparent:g.unref(y),"alpha-test":g.unref(w),"alpha-map":g.unref(x)},null,8,tc)],512))}}),ic=["size","color","alpha-map","map","opacity","alpha-test","depth-write","transparent","size-attenuation"],sc=["position","velocity"],rc=g.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 n=v,{size:i,area:r,color:o,alphaMap:l,map:p,opacity:h,alphaTest:d,depthWrite:y,transparent:x,sizeAttenuation:w,count:C,speed:M,randomness:E}=g.toRefs(n),A=g.shallowRef();let L=[],z=[];const R=()=>{L=new Float32Array(C.value*3);for(let O=0;O<C.value;O++){const F=O*3;L[F]=(Math.random()-.5)*r.value[0],L[F+1]=(Math.random()-.5)*r.value[1],L[F+2]=(Math.random()-.5)*r.value[2]}},N=()=>{z=new Float32Array(C.value*2);for(let O=0;O<C.value*2;O+=2)z[O]=(Math.random()-.5)/5*M.value*E.value,z[O+1]=Math.random()/5*M.value+.01};N(),R(),g.watchEffect(()=>{N(),R()});const{onLoop:I}=Te.useRenderLoop();return I(()=>{var O,F;if((O=A.value)!=null&&O.attributes.position.array&&((F=A.value)!=null&&F.attributes.position.count)){const G=A.value.attributes.position.array;for(let B=0;B<A.value.attributes.position.count;B++){const K=z[B*2],$=z[B*2+1];G[B*3]+=K,G[B*3+1]-=$,(G[B*3]<=-r.value[0]/2||G[B*3]>=r.value[0]/2)&&(G[B*3]=G[B*3]*-1),(G[B*3+1]<=-r.value[1]/2||G[B*3+1]>=r.value[1]/2)&&(G[B*3+1]=G[B*3+1]*-1)}A.value.attributes.position.needsUpdate=!0}}),(O,F)=>(g.openBlock(),g.createElementBlock("TresPoints",null,[g.createElementVNode("TresPointsMaterial",{size:g.unref(i),color:g.unref(o),"alpha-map":g.unref(l),map:g.unref(p),opacity:g.unref(h),"alpha-test":g.unref(d),"depth-write":g.unref(y),transparent:g.unref(x),"size-attenuation":g.unref(w)},null,8,ic),g.createElementVNode("TresBufferGeometry",{ref_key:"geometryRef",ref:A,position:[g.unref(L),3],velocity:[g.unref(z)]},null,8,sc)]))}}),oc=["position"],ac=["position"],lc=["scale"],cc=["map","depth-test","color-space","color","opacity"],pc=g.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,r;const o=v,{width:l,depth:p,segments:h,texture:d,color:y,depthTest:x,opacity:w,speed:C}=g.toRefs(o),M=g.shallowRef(),E=g.shallowRef();n({value:M});const A=[...new Array(h)].map((O,F)=>({x:l.value/2-Math.random()*l.value,y:l.value/2-Math.random()*l.value,scale:.4+Math.sin((F+1)/h.value*Math.PI)*((.2+Math.random())*10),density:Math.max(.2,Math.random()),rotation:Math.max(.002,.005*Math.random())*C.value})),L=(O,F)=>O/6*F*w.value,{map:z}=([i,r]=g.withAsyncContext(()=>Te.useTexture({map:d.value})),i=await i,r(),i),{state:R}=Qe(),N=g.computed(()=>{var O;return(O=R.renderer)==null?void 0:O.outputColorSpace}),{onLoop:I}=Te.useRenderLoop();return I(()=>{var O,F;M.value&&R.camera&&E.value&&((O=E.value)==null||O.children.forEach((G,B)=>{G.rotation.z+=A[B].rotation}),M.value.lookAt((F=R.camera)==null?void 0:F.position))}),(O,F)=>(g.openBlock(),g.createElementBlock("TresGroup",g.mergeProps({ref_key:"smokeRef",ref:M},O.$attrs),[g.createElementVNode("TresGroup",{ref_key:"groupRef",ref:E,position:[0,0,g.unref(h)/2*g.unref(p)]},[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(g.unref(A),({scale:G,x:B,y:K,density:$},q)=>(g.openBlock(),g.createElementBlock("TresMesh",{key:`${q}`,position:[B,K,-q*g.unref(p)]},[g.createElementVNode("TresPlaneGeometry",{scale:[G,G,G],rotation:[0,0,0]},null,8,lc),g.createElementVNode("TresMeshStandardMaterial",{map:g.unref(z),"depth-test":g.unref(x),"color-space":N.value,color:g.unref(y),"depth-write":!1,transparent:"",opacity:L(G,$)},null,8,cc)],8,ac))),128))],8,oc)],16))}}),uc=g.defineComponent({__name:"Levioso",props:{speed:{default:1},rotationFactor:{default:1},floatFactor:{default:1},range:{default:()=>[-.1,.1]}},setup(v,{expose:n}){const i=v,r=g.shallowRef();n({value:r});const{onLoop:o}=Te.useRenderLoop(),l=g.ref(Math.random()*1e4);return o(({elapsed:p})=>{var y,x;if(!r.value)return;const h=l.value+p;r.value.rotation.x=Math.cos(h/4*i.speed)/8*i.rotationFactor,r.value.rotation.y=Math.sin(h/4*i.speed)/8*i.rotationFactor,r.value.rotation.z=Math.sin(h/4*i.speed)/20*i.rotationFactor;let d=Math.sin(h/4*i.speed)/10;d=f.MathUtils.mapLinear(d,-.1,.1,((y=i.range)==null?void 0:y[0])??-.1,((x=i.range)==null?void 0:x[1])??.1),r.value.position.y=d*i.floatFactor}),(p,h)=>(g.openBlock(),g.createElementBlock("TresGroup",g.mergeProps(p.$attrs,{ref_key:"groupRef",ref:r}),[g.renderSlot(p.$slots,"default")],16))}}),hc=["geometry"],dc=["map","opacity","depth-write"],mc=["args"],fc=["rotation-x","args"],vc=g.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,r=g.shallowRef(),o=g.shallowRef();n(r);let l,p,h,d,y;const{state:x}=Qe(),w=g.computed(()=>i.width*(Array.isArray(i.scale)?i.scale[0]:i.scale||1)),C=g.computed(()=>i.height*(Array.isArray(i.scale)?i.scale[1]:i.scale||1));g.watchEffect(()=>{l&&l.dispose(),p&&p.dispose(),h&&h.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,h=new f.PlaneGeometry(w.value,C.value).rotateX(Math.PI/2),d=new f.Mesh(h),d.visible=!1}),g.watchEffect(()=>{i.color&&(y&&y.dispose(),y=new f.MeshDepthMaterial,y.depthTest=y.depthWrite=!1,y.onBeforeCompile=I=>{I.uniforms={...I.uniforms,ucolor:{value:i.color?new f.Color(i.color):new f.Color}},I.fragmentShader=I.fragmentShader.replace("void main() {",`uniform vec3 ucolor;
|
|
80
80
|
void main() {
|
|
81
|
-
`),I.fragmentShader=I.fragmentShader.replace("vec4( vec3( 1.0 - fragCoordZ ), opacity );","vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );")})});const M=new f.ShaderMaterial(Wa),T=new f.ShaderMaterial(Ja);T.depthTest=M.depthTest=!1;function V(I){!w.renderer||!o.value||(d.visible=!0,d.material=M,M.uniforms.tDiffuse.value=l.texture,M.uniforms.h.value=I/256,w.renderer.setRenderTarget(p),w.renderer.render(d,o.value),d.material=T,T.uniforms.tDiffuse.value=p.texture,T.uniforms.v.value=I/256,w.renderer.setRenderTarget(l),w.renderer.render(d,o.value),d.visible=!1)}const{onLoop:O}=Be.useRenderLoop();let z=0,F,N;return O(()=>{!o.value||w.scene===void 0||w.renderer===void 0||(n.frames===1/0||z<n.frames)&&(z++,F=w.scene.background,N=w.scene.overrideMaterial,r.value.visible=!1,w.scene.background=null,w.scene.overrideMaterial=_,w.renderer.setRenderTarget(l),w.renderer.render(w.scene,o.value),V(n.blur),n.smooth&&V(n.blur*.4),w.renderer.setRenderTarget(null),r.value.visible=!0,w.scene.background=F,w.scene.overrideMaterial=N)}),(I,Q)=>{const $=x.resolveComponent("primitive");return x.openBlock(),x.createElementBlock("TresGroup",x.mergeProps({ref_key:"groupRef",ref:r},I.$attrs),[x.createElementVNode("TresMesh",{scale:[1,-1,1],geometry:x.unref(u)},[x.createElementVNode("TresMeshBasicMaterial",{map:x.unref(l).texture,opacity:I.opacity,"depth-write":I.depthWrite,transparent:!0},null,8,ec)],8,Hl),x.createVNode($,{object:x.unref(d)},null,8,["object"]),o.value&&I.helper?(x.openBlock(),x.createElementBlock("TresCameraHelper",{key:0,args:[o.value]},null,8,tc)):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,I.far]},null,8,nc)],16)}}});let ki=null;function sc(b,i){return n=>{i&&i(n),b.draco&&(ki||(ki=new kl),ki.setDecoderPath(b.decoderPath||"https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),n.setDRACOLoader(ki))}}async function to(b,i={draco:!1},n){return await Be.useLoader(ga,b,sc(i,n))}const rc=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(b,{expose:i}){let n,r;const o=b,l=x.ref();i({value:l});const{scene:p}=([n,r]=x.withAsyncContext(()=>to(o.path,{draco:o.draco,decoderPath:o.decoderPath})),n=await n,r(),n);return(u,d)=>{const _=x.resolveComponent("primitive");return x.openBlock(),x.createBlock(_,x.mergeProps({ref_key:"modelRef",ref:l,object:x.unref(p)},u.$attrs),null,16,["object"])}}});async function no(b){return await Be.useLoader(ol,b)}const oc=x.defineComponent({__name:"component",props:{path:{}},async setup(b,{expose:i}){let n,r;const o=b,l=x.ref();i({value:l});const p=([n,r]=x.withAsyncContext(()=>no(o.path)),n=await n,r(),n);return(u,d)=>{const _=x.resolveComponent("primitive");return x.openBlock(),x.createBlock(_,x.mergeProps({ref_key:"modelRef",ref:l,object:x.unref(p)},u.$attrs),null,16,["object"])}}}),ac=["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"],lc=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:{},enableZoom:{type:Boolean,default:!0},zoomSpeed:{default:1},enableRotate:{type:Boolean,default:!0},rotateSpeed:{default:1}},emits:["change","start","end"],setup(b,{emit:i}){const{state:n,setState:r,extend:o}=at(),l=x.ref(null);o({OrbitControls:Ir}),x.watch(l,d=>{p(),d&&b.makeDefault?r("controls",d):r("controls",null)});function p(){Ne(l.value,"change",()=>i("change",l.value)),Ne(l.value,"start",()=>i("start",l.value)),Ne(l.value,"end",()=>i("end",l.value))}const{onLoop:u}=Be.useRenderLoop();return u(()=>{l.value&&(b.enableDamping||b.autoRotate)&&l.value.update()}),x.onUnmounted(()=>{l.value&&l.value.dispose()}),(d,_)=>{var w;return x.unref(n).camera&&x.unref(n).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(n).camera||d.camera,((w=x.unref(n).renderer)==null?void 0:w.domElement)||d.domElement]},null,8,ac)):x.createCommentVNode("",!0)}}}),cc=["object","args","mode","enabled","axis","translation-snap","rotation-snap","scale-snap","space","size","show-x","show-y","show-z"],pc=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(b,{emit:i}){const n=x.shallowRef(),{state:r,extend:o}=at();o({TransformControls:oa});const l=u=>{r.controls&&(r.controls.enabled=!u.value),i("dragging",u.value)};function p(){Ne(n.value,"change",()=>i("change")),Ne(n.value,"dragging-changed",l),Ne(n.value,"mouseDown",()=>i("mouseDown")),Ne(n.value,"mouseUp",()=>i("mouseUp")),Ne(n.value,"objectChange",()=>i("objectChange"))}return x.watchEffect(()=>{n.value&&p()}),x.onUnmounted(()=>{n.value&&n.value.dispose()}),(u,d)=>x.unref(r).camera&&x.unref(r).renderer?(x.openBlock(),x.createElementBlock("TresTransformControls",{key:0,ref_key:"controls",ref:n,object:u.object,args:[x.unref(r).camera,x.unref(r).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,cc)):x.createCommentVNode("",!0)}}),hc=["args"],uc=x.defineComponent({__name:"PointerLockControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{},selector:{}},setup(b,{expose:i}){const n=b,{state:r,setState:o,extend:l}=at(),p=x.ref(null);let u;return l({PointerLockControls:ma}),x.watch(p,d=>{var w;d&&n.makeDefault?o("controls",d):o("controls",null);const _=document.getElementById(n.selector||"");u=_||((w=r.renderer)==null?void 0:w.domElement),Ne(u,"click",()=>{var y;(y=p.value)==null||y.lock()})}),i({value:p}),(d,_)=>{var w;return x.unref(r).camera&&x.unref(r).renderer?(x.openBlock(),x.createElementBlock("TresPointerLockControls",{key:0,ref_key:"controls",ref:p,args:[x.unref(r).camera||d.camera,((w=x.unref(r).renderer)==null?void 0:w.domElement)||d.domElement]},null,8,hc)):x.createCommentVNode("",!0)}}}),dc=["args"],mc=x.defineComponent({__name:"MapControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{}},setup(b){const i=b,{state:n,setState:r,extend:o}=at(),l=x.ref(null);return o({MapControls:ba}),x.watch(l,p=>{p&&i.makeDefault?r("controls",p):r("controls",null)}),(p,u)=>{var d;return x.unref(n).camera&&x.unref(n).renderer?(x.openBlock(),x.createElementBlock("TresMapControls",{key:0,ref_key:"controls",ref:l,args:[x.unref(n).camera||p.camera,((d=x.unref(n).renderer)==null?void 0:d.domElement)||p.domElement]},null,8,dc)):x.createCommentVNode("",!0)}}});class fc extends f.MeshStandardMaterial{constructor(n={}){super(n);xr(this,"_time");xr(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=`
|
|
81
|
+
`),I.fragmentShader=I.fragmentShader.replace("vec4( vec3( 1.0 - fragCoordZ ), opacity );","vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );")})});const M=new f.ShaderMaterial(il),E=new f.ShaderMaterial(sl);E.depthTest=M.depthTest=!1;function A(I){!x.renderer||!o.value||(d.visible=!0,d.material=M,M.uniforms.tDiffuse.value=l.texture,M.uniforms.h.value=I/256,x.renderer.setRenderTarget(p),x.renderer.render(d,o.value),d.material=E,E.uniforms.tDiffuse.value=p.texture,E.uniforms.v.value=I/256,x.renderer.setRenderTarget(l),x.renderer.render(d,o.value),d.visible=!1)}const{onLoop:L}=Te.useRenderLoop();let z=0,R,N;return L(()=>{!o.value||x.scene===void 0||x.renderer===void 0||(i.frames===1/0||z<i.frames)&&(z++,R=x.scene.background,N=x.scene.overrideMaterial,r.value.visible=!1,x.scene.background=null,x.scene.overrideMaterial=y,x.renderer.setRenderTarget(l),x.renderer.render(x.scene,o.value),A(i.blur),i.smooth&&A(i.blur*.4),x.renderer.setRenderTarget(null),r.value.visible=!0,x.scene.background=R,x.scene.overrideMaterial=N)}),(I,O)=>{const F=g.resolveComponent("primitive");return g.openBlock(),g.createElementBlock("TresGroup",g.mergeProps({ref_key:"groupRef",ref:r},I.$attrs),[g.createElementVNode("TresMesh",{scale:[1,-1,1],geometry:g.unref(h)},[g.createElementVNode("TresMeshBasicMaterial",{map:g.unref(l).texture,opacity:I.opacity,"depth-write":I.depthWrite,transparent:!0},null,8,dc)],8,hc),g.createVNode(F,{object:g.unref(d)},null,8,["object"]),o.value&&I.helper?(g.openBlock(),g.createElementBlock("TresCameraHelper",{key:0,args:[o.value]},null,8,mc)):g.createCommentVNode("",!0),g.createElementVNode("TresOrthographicCamera",{ref_key:"shadowCamera",ref:o,"rotation-x":Math.PI/2,args:[-w.value/2,w.value/2,C.value/2,-C.value/2,0,I.far]},null,8,fc)],16)}}});let Si=null;function bc(v,n){return i=>{n&&n(i),v.draco&&(Si||(Si=new Dl),Si.setDecoderPath(v.decoderPath||"https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),i.setDRACOLoader(Si))}}async function ao(v,n={draco:!1},i){return await Te.useLoader(Pa,v,bc(n,i))}const gc=g.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,r;const o=v,l=g.ref();n({value:l});const{scene:p}=([i,r]=g.withAsyncContext(()=>ao(o.path,{draco:o.draco,decoderPath:o.decoderPath})),i=await i,r(),i);return(h,d)=>{const y=g.resolveComponent("primitive");return g.openBlock(),g.createBlock(y,g.mergeProps({ref_key:"modelRef",ref:l,object:g.unref(p)},h.$attrs),null,16,["object"])}}});async function lo(v){return await Te.useLoader(hl,v)}const _c=g.defineComponent({__name:"component",props:{path:{}},async setup(v,{expose:n}){let i,r;const o=v,l=g.ref();n({value:l});const p=([i,r]=g.withAsyncContext(()=>lo(o.path)),i=await i,r(),i);return(h,d)=>{const y=g.resolveComponent("primitive");return g.openBlock(),g.createBlock(y,g.mergeProps({ref_key:"modelRef",ref:l,object:g.unref(p)},h.$attrs),null,16,["object"])}}}),co="[TresJS - Cientos ▲ ■ ♥] ";function wc(){function v(r,o){console.error(`${co} ${r}`,o||"")}function n(r){console.warn(`${co} ${r}`)}function i(r,o){}return{logError:v,logWarning:n,logMessage:i}}let xs=0;function yc(){const v=g.ref(!1),n=g.ref(0),i=g.ref([]),{logError:r}=wc();return new Promise(o=>{f.DefaultLoadingManager.onStart=()=>{v.value=!1},f.DefaultLoadingManager.onLoad=()=>{v.value=!0},f.DefaultLoadingManager.onProgress=(l,p,h)=>{p===h&&(xs=h,v.value=!0,i.value.push(l)),n.value=Math.round((p-xs)/(h-xs)*100||100,2)},f.DefaultLoadingManager.onError=l=>{r("Error loading assets",new Error(l)),v.value=!0},o({items:i,hasFinishLoading:v,progress:n})})}const xc=["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"],Cc=g.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 i=v,{makeDefault:r,autoRotate:o,autoRotateSpeed:l,enableDamping:p,dampingFactor:h,enablePan:d,keyPanSpeed:y,maxAzimuthAngle:x,minAzimuthAngle:w,maxPolarAngle:C,minPolarAngle:M,minDistance:E,maxDistance:A,minZoom:L,maxZoom:z,enableZoom:R,zoomSpeed:N,enableRotate:I,touches:O,rotateSpeed:F,target:G}=g.toRefs(i),{state:B,setState:K,extend:$}=Qe(),q=g.ref(null);$({OrbitControls:Nr}),g.watch(q,ie=>{se(),ie&&r.value?K("controls",ie):K("controls",null)});function se(){De(q.value,"change",()=>n("change",q.value)),De(q.value,"start",()=>n("start",q.value)),De(q.value,"end",()=>n("end",q.value))}const{onLoop:he}=Te.useRenderLoop();return he(()=>{q.value&&(p.value||o.value)&&q.value.update()}),g.onUnmounted(()=>{q.value&&q.value.dispose()}),(ie,fe)=>{var pe;return g.unref(B).camera&&g.unref(B).renderer?(g.openBlock(),g.createElementBlock("TresOrbitControls",{key:0,ref_key:"controls",ref:q,target:g.unref(G),"auto-rotate":g.unref(o),"auto-rotate-speed":g.unref(l),"enable-damping":g.unref(p),"damping-factor":g.unref(h),"enable-pan":g.unref(d),"key-pan-speed":g.unref(y),keys:ie.keys,"max-azimuth-angle":g.unref(x),"min-azimuth-angle":g.unref(w),"max-polar-angle":g.unref(C),"min-polar-angle":g.unref(M),"min-distance":g.unref(E),"max-distance":g.unref(A),"min-zoom":g.unref(L),"max-zoom":g.unref(z),touches:g.unref(O),"enable-zoom":g.unref(R),"zoom-speed":g.unref(N),"enable-rotate":g.unref(I),"rotate-speed":g.unref(F),args:[g.unref(B).camera||ie.camera,((pe=g.unref(B).renderer)==null?void 0:pe.domElement)||ie.domElement]},null,8,xc)):g.createCommentVNode("",!0)}}}),Pc=5,kc=6,Mc=.3,Ac=g.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){const n=v,{forward:i,back:r,left:o,right:l,jump:p,gravity:h,moveSpeed:d,headBobbing:y,is2D:x}=g.toRefs(n),{state:w}=Qe(),C=g.ref(0),M=g.ref(0),E=g.ref(!1),A=g.ref(!1),L=g.ref(0),z=g.shallowRef(),R=x.value?"y":"z";let N=0;g.watch(()=>w.camera,()=>{var K,$;N=(($=(K=w.camera)==null?void 0:K.position)==null?void 0:$.y)||0}),Qt(i.value,()=>{E.value=!0,M.value=d.value},{eventName:"keydown"}),Qt(r.value,()=>{E.value=!0,M.value=-d.value},{eventName:"keydown"}),Qt([...i.value,...r.value],()=>{E.value=!1,M.value=0},{eventName:"keyup"}),Qt(o.value,()=>{E.value=!0,C.value=-d.value},{eventName:"keydown"}),Qt(l.value,()=>{E.value=!0,C.value=d.value},{eventName:"keydown"}),Qt([...o.value,...l.value],()=>{E.value=!1,C.value=0},{eventName:"keyup"}),Qt(p.value,()=>{A.value||(L.value=Date.now()),A.value=!0});const I=K=>E.value?Math.sin(K*Pc)*Mc+N:N,O=()=>(Date.now()-L.value)/1e3*3,F=K=>N+kc*K-.5*h.value*Math.pow(K,2),G=()=>{if(A.value){const K=F(O());return K<=N&&(A.value=!1),K}return 0},{onLoop:B}=Te.useRenderLoop();return B(({elapsed:K})=>{var $,q;w.controls instanceof ps&&(($=w==null?void 0:w.controls)!=null&&$.isLocked)?(w.controls.moveForward(M.value),w.controls.moveRight(C.value),(q=w.camera)!=null&&q.position&&(w.camera.position.y=y.value?I(K):N,w.camera.position.y+=G())):z.value.children.length>0&&!(w.controls instanceof ps)&&(z.value.position.x+=C.value,z.value.position[R]+=x.value?M.value:-M.value)}),(K,$)=>(g.openBlock(),g.createElementBlock("TresGroup",{ref_key:"wrapperRef",ref:z},[g.renderSlot(K.$slots,"default")],512))}}),Sc=["object","args","mode","enabled","axis","translation-snap","rotation-snap","scale-snap","space","size","show-x","show-y","show-z"],Lc=g.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:n}){const i=v,{object:r,mode:o,enabled:l,axis:p,translationSnap:h,rotationSnap:d,scaleSnap:y,space:x,size:w,showX:C,showY:M,showZ:E}=g.toRefs(i),A=g.shallowRef(),{state:L,extend:z}=Qe();z({TransformControls:da});const R=I=>{L.controls&&(L.controls.enabled=!I.value),n("dragging",I.value)};function N(){De(A.value,"change",()=>n("change")),De(A.value,"dragging-changed",R),De(A.value,"mouseDown",()=>n("mouseDown")),De(A.value,"mouseUp",()=>n("mouseUp")),De(A.value,"objectChange",()=>n("objectChange"))}return g.watchEffect(()=>{A.value&&N()}),g.onUnmounted(()=>{A.value&&A.value.dispose()}),(I,O)=>g.unref(L).camera&&g.unref(L).renderer?(g.openBlock(),g.createElementBlock("TresTransformControls",{key:0,ref_key:"controls",ref:A,object:g.unref(r),args:[g.unref(L).camera,g.unref(L).renderer.domElement],mode:g.unref(o),enabled:g.unref(l),axis:g.unref(p),"translation-snap":g.unref(h),"rotation-snap":g.unref(d),"scale-snap":g.unref(y),space:g.unref(x),size:g.unref(w),"show-x":g.unref(C),"show-y":g.unref(M),"show-z":g.unref(E),visible:!0},null,8,Sc)):g.createCommentVNode("",!0)}}),Vc=["args"],Dc=g.defineComponent({__name:"PointerLockControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{},selector:{}},setup(v,{expose:n}){const i=v,{state:r,setState:o,extend:l}=Qe(),p=g.ref(null);let h;return l({PointerLockControls:ps}),g.watch(p,d=>{var x;d&&i.makeDefault?o("controls",d):o("controls",null);const y=document.getElementById(i.selector||"");h=y||((x=r.renderer)==null?void 0:x.domElement),De(h,"click",()=>{var w;(w=p.value)==null||w.lock()})}),n({value:p}),(d,y)=>{var x;return g.unref(r).camera&&g.unref(r).renderer?(g.openBlock(),g.createElementBlock("TresPointerLockControls",{key:0,ref_key:"controls",ref:p,args:[g.unref(r).camera||d.camera,((x=g.unref(r).renderer)==null?void 0:x.domElement)||d.domElement]},null,8,Vc)):g.createCommentVNode("",!0)}}}),Ic=["args"],Tc=g.defineComponent({__name:"MapControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{}},setup(v){const n=v,{state:i,setState:r,extend:o}=Qe(),l=g.ref(null);return o({MapControls:Ca}),g.watch(l,p=>{p&&n.makeDefault?r("controls",p):r("controls",null)}),(p,h)=>{var d;return g.unref(i).camera&&g.unref(i).renderer?(g.openBlock(),g.createElementBlock("TresMapControls",{key:0,ref_key:"controls",ref:l,args:[g.unref(i).camera||p.camera,((d=g.unref(i).renderer)==null?void 0:d.domElement)||p.domElement]},null,8,Ic)):g.createCommentVNode("",!0)}}}),Ec=g.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:n}){const i=v,{logWarning:r}=Te.useLogger();i.smoothScroll<0&&r("SmoothControl must be greater than zero"),i.pages<0&&r("Pages must be greater than zero");const{state:o}=Qe(),l=g.shallowRef(),p=document.createElement("div"),{y:h}=Jl(),{x:d,y,isScrolling:x}=Ql(p),{height:w,width:C}=ro();let M=0;const E=g.ref(!1),A=g.ref(0),L=g.ref(0),z=g.ref(0),R=i.horizontal?"x":"y",N=g.watch(()=>o.camera,O=>{if(E.value){N();return}M=i.horizontal?(O==null?void 0:O.position.x)||0:(O==null?void 0:O.position.y)||0,E.value=!0});g.watch(x,O=>{o.controls&&(o.controls.enabled=!O)}),g.watch(h,O=>{!x.value&&!i.htmlScroll||(L.value=parseFloat((O/w.value/(z.value/w.value-1)).toFixed(2)),A.value=-1*L.value,n("update:modelValue",L.value))}),g.watch(y,O=>{L.value=parseFloat((O/w.value/(z.value/w.value)).toFixed(2)),A.value=-1*L.value,n("update:modelValue",L.value)}),g.watch(d,O=>{L.value=parseFloat((O/C.value/(z.value/C.value-1)).toFixed(2)),A.value=+L.value,n("update:modelValue",L.value)}),g.watch(()=>o.renderer,O=>{var G,B;const F=O==null?void 0:O.domElement;if(i.htmlScroll&&(O!=null&&O.domElement))F!=null&&F.style.width&&(F!=null&&F.style.position)&&(F!=null&&F.style.top)&&(F!=null&&F.style.left)&&(o.container.value.style.height="0px",F.style.width="100%",F.style.position="fixed",F.style.zIndex=" -99999",F.style.top="0",F.style.left="0"),z.value=document.body.scrollHeight;else{const K=document.createElement("div"),$=document.createElement("div");p.style[i.horizontal?"overflowX":"overflowY"]="auto",p.style[i.horizontal?"overflowY":"overflowX"]="hidden",p.classList.add("scrollContainer"),K.classList.add("fixedContainer"),p.appendChild(K),$.style.height=i.horizontal?"100%":`${w.value*i.pages}px`,$.style.width=i.horizontal?`${C.value*i.pages}px`:"100vw",$.style.pointerEvents="none",F!=null&&F.style.width&&(F.style.width="100%"),p.appendChild($),(B=(G=O==null?void 0:O.domElement)==null?void 0:G.parentNode)==null||B.appendChild(p),z.value=i.horizontal?C.value*i.pages:w.value*i.pages}});const{onLoop:I}=Te.useRenderLoop();return I(()=>{var O;if((O=o.camera)!=null&&O.position){const F=(A.value*i.distance-o.camera.position[R]+M)*i.smoothScroll;o.camera.position[R]+=F,l.value.children.length>0&&(l.value.position[R]+=F)}}),(O,F)=>(g.openBlock(),g.createElementBlock("TresGroup",{ref_key:"wrapperRef",ref:l},[g.renderSlot(O.$slots,"default")],512))}}),yh="";class Oc extends f.MeshStandardMaterial{constructor(i={}){super(i);Ar(this,"_time");Ar(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=`
|
|
82
82
|
uniform float time;
|
|
83
83
|
uniform float factor;
|
|
84
|
-
${
|
|
85
|
-
`,
|
|
84
|
+
${i.vertexShader}
|
|
85
|
+
`,i.vertexShader=i.vertexShader.replace("#include <begin_vertex>",`float theta = sin( time + position.y ) / 2.0 * factor;
|
|
86
86
|
float c = cos( theta );
|
|
87
87
|
float s = sin( theta );
|
|
88
88
|
mat3 m = mat3( c, 0, s, 0, 1, 0, -s, 0, c );
|
|
89
89
|
vec3 transformed = vec3( position ) * m;
|
|
90
|
-
vNormal = vNormal * m;`)}get time(){return this._time.value}set time(n){this._time.value=n}get factor(){return this._factor.value}set factor(n){this._factor.value=n}}const vc=["factor"],bc=x.defineComponent({__name:"index",props:{speed:{default:1},factor:{default:1}},setup(b){const i=b,n=x.shallowRef(),{extend:r}=at();r({MeshWobbleMaterial:fc});const{onLoop:o}=Be.useRenderLoop();return o(({elapsed:l})=>{n.value&&(n.value.time=l*(i==null?void 0:i.speed))}),(l,p)=>(x.openBlock(),x.createElementBlock("TresMeshWobbleMaterial",x.mergeProps({ref_key:"materialRef",ref:n,factor:l.factor},l.$attrs),null,16,vc))}}),gc=["args"],_c=["color"],wc=x.defineComponent({__name:"Box",props:{args:{default:()=>[1,1,1]},color:{default:"0xffffff"}},setup(b,{expose:i}){const n=x.shallowRef();return i({value:n}),(r,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"boxRef",ref:n},r.$attrs),[x.createElementVNode("TresBoxGeometry",{args:r.args},null,8,gc),x.renderSlot(r.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:r.color},null,8,_c)])],16))}}),yc=["args"],xc=["color"],Cc=x.defineComponent({__name:"Circle",props:{args:{default:()=>[1,32,0,Math.PI*2]},color:{default:"0xffffff"}},setup(b,{expose:i}){const n=x.shallowRef();return i({value:n}),(r,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"circleRef",ref:n},r.$attrs),[x.createElementVNode("TresCircleGeometry",{args:r.args},null,8,yc),x.renderSlot(r.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:r.color},null,8,xc)])],16))}}),Pc=["args"],kc=["color"],Mc=x.defineComponent({__name:"Cone",props:{args:{default:()=>[1,1,12,!1,0,Math.PI*2]},color:{default:"0xffffff"}},setup(b,{expose:i}){const n=x.shallowRef();return i({value:n}),(r,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"coneRef",ref:n},r.$attrs),[x.createElementVNode("TresConeGeometry",{args:r.args},null,8,Pc),x.renderSlot(r.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:r.color},null,8,kc)])],16))}}),Ac=["args"],Sc=["color"],Lc=x.defineComponent({__name:"Dodecahedron",props:{args:{default:()=>[1,0]},color:{default:"0xffffff"}},setup(b,{expose:i}){const n=x.shallowRef();return i({value:n}),(r,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"dodecahedronRef",ref:n},r.$attrs),[x.createElementVNode("TresDodecahedronGeometry",{args:r.args},null,8,Ac),x.renderSlot(r.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:r.color},null,8,Sc)])],16))}}),Vc=["args"],Dc=["color"],Ic=x.defineComponent({__name:"Icosahedron",props:{args:{default:()=>[1,0]},color:{default:"0xffffff"}},setup(b,{expose:i}){const n=x.shallowRef();return i({value:n}),(r,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"icosahedronRef",ref:n},r.$attrs),[x.createElementVNode("TresIcosahedronGeometry",{args:r.args},null,8,Vc),x.renderSlot(r.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:r.color},null,8,Dc)])],16))}}),Tc=["args"],Ec=["color"],Oc=x.defineComponent({__name:"Octahedron",props:{args:{default:()=>[1,0]},color:{default:"0xffffff"}},setup(b,{expose:i}){const n=x.shallowRef();return i({value:n}),(r,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"octahedronRef",ref:n},r.$attrs),[x.createElementVNode("TresOctahedronGeometry",{args:r.args},null,8,Tc),x.renderSlot(r.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:r.color},null,8,Ec)])],16))}}),Bc=["rotation"],Nc=["args"],Fc=["color"],zc=x.defineComponent({__name:"Plane",props:{args:{default:()=>[1,1]},color:{default:"0xffffff"}},setup(b,{expose:i}){const n=x.shallowRef();return i({value:n}),(r,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"planeRef",ref:n,rotation:[-Math.PI/2,0,0]},r.$attrs),[x.createElementVNode("TresPlaneGeometry",{args:r.args},null,8,Nc),x.renderSlot(r.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:r.color},null,8,Fc)])],16,Bc))}}),jc=["args"],Uc=["color"],Rc=x.defineComponent({__name:"Ring",props:{args:{default:()=>[.5,1,32]},color:{default:"0xffffff"}},setup(b,{expose:i}){const n=x.shallowRef();return i({value:n}),(r,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"ringRef",ref:n},r.$attrs),[x.createElementVNode("TresRingGeometry",{args:r.args},null,8,jc),x.renderSlot(r.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:r.color},null,8,Uc)])],16))}}),Gc=["args"],Kc=["color"],$c=x.defineComponent({__name:"Sphere",props:{args:{default:()=>[2,32,16]},color:{default:"0xffffff"}},setup(b,{expose:i}){const n=x.shallowRef();return i({value:n}),(r,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"sphereRef",ref:n},r.$attrs),[x.createElementVNode("TresSphereGeometry",{args:r.args},null,8,Gc),x.renderSlot(r.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:r.color},null,8,Kc)])],16))}}),Xc=["rotation"],Yc=["args"],qc=["color"],Qc=x.defineComponent({__name:"Tetrahedron",props:{args:{default:()=>[1,0]},color:{default:"0xffffff"}},setup(b,{expose:i}){const n=x.shallowRef();return i({value:n}),(r,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"tetrahedronRef",ref:n,rotation:[-Math.PI/2,0,0]},r.$attrs),[x.createElementVNode("TresTetrahedronGeometry",{args:r.args},null,8,Yc),x.renderSlot(r.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:r.color},null,8,qc)])],16,Xc))}}),Zc=["args"],Wc=["color"],Jc=x.defineComponent({__name:"Torus",props:{args:{default:()=>[1,1,16,80]},color:{default:"0xffffff"}},setup(b,{expose:i}){const n=x.shallowRef();return i({value:n}),(r,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"torusRef",ref:n},r.$attrs),[x.createElementVNode("TresTorusGeometry",{args:r.args},null,8,Zc),x.renderSlot(r.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:r.color},null,8,Wc)])],16))}}),Hc=["args"],ep=["color"],tp=x.defineComponent({__name:"TorusKnot",props:{args:{default:()=>[1,.4,64,8]},color:{default:"0xffffff"}},setup(b,{expose:i}){const n=x.shallowRef();return i({value:n}),(r,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"torusKnotRef",ref:n},r.$attrs),[x.createElementVNode("TresTorusKnotGeometry",{args:r.args},null,8,Hc),x.renderSlot(r.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:r.color},null,8,ep)])],16))}}),np=["args"],ip=["color"],sp=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(b,{expose:i}){const n=x.shallowRef();return i({value:n}),(r,o)=>(x.openBlock(),x.createElementBlock("TresMesh",x.mergeProps({ref_key:"tubeRef",ref:n},r.$attrs),[x.createElementVNode("TresTubeGeometry",{args:r.args},null,8,np),x.renderSlot(r.$slots,"default",{},()=>[x.createElementVNode("TresMeshBasicMaterial",{color:r.color},null,8,ip)])],16))}});var gs={exports:{}};/*! Tweakpane 3.1.9 (c) 2016 cocopon, licensed under the MIT license. */(function(b,i){(function(n,r){r(i)})(Qr,function(n){class r{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 _ extends l{constructor(e,t){super(e),this.index=t}}function w(s){return s}function y(s){return s==null}function C(s,e){if(s.length!==e.length)return!1;for(let t=0;t<s.length;t++)if(s[t]!==e[t])return!1;return!0}function M(s,e){let t=s;do{const c=Object.getOwnPropertyDescriptor(t,e);if(c&&(c.set!==void 0||c.writable===!0))return!0;t=Object.getPrototypeOf(t)}while(t!==null);return!1}const T={alreadydisposed:()=>"View has been already disposed",invalidparams:s=>`Invalid parameters for '${s.name}'`,nomatchingcontroller:s=>`No matching controller for '${s.key}'`,nomatchingview:s=>`No matching view for '${JSON.stringify(s.params)}'`,notbindable:()=>"Value is not bindable",propertynotfound:s=>`Property '${s.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=T[e.type](e.context))!==null&&t!==void 0?t:"Unexpected error",this.name=this.constructor.name,this.stack=new Error(this.message).stack,this.type=e.type}}class O{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(!O.isBindable(c))throw V.notBindable();if(!(e in c))throw V.propertyNotFound(e);c[e]=t}}class z 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 F{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 I(s){return(t,c)=>[N,"-",s,"v",t?`_${t}`:"",c?`-${c}`:""].join("")}function Q(s,e){return t=>e(s(t))}function $(s){return s.rawValue}function U(s,e){s.emitter.on("change",Q($,e)),e(s.rawValue)}function j(s,e,t){U(s.value(e),t)}function X(s,e,t){t?s.classList.add(e):s.classList.remove(e)}function Y(s,e){return t=>{X(s,e,t)}}function Z(s,e){U(s,t=>{e.textContent=t??""})}const ue=I("btn");class _e{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 F,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new _e(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 F,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 F,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(s,e){const t=e==null?void 0:e.constraint,c=e==null?void 0:e.equals;return!t&&!c?new de(s):new fe(s,e)}class q{constructor(e){this.emitter=new F,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(s,e){const c=Object.keys(e).reduce((g,k)=>{if(g===void 0)return;const S=e[k],R=S(s[k]);return R.succeeded?Object.assign(Object.assign({},g),{[k]:R.value}):void 0},{});return c}function ve(s,e){return s.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(s){return s===null?!1:typeof s=="object"}function se(s){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=s(t);return c!==void 0?{succeeded:!0,value:c}:{succeeded:!1,value:void 0}}}function ge(s){return{custom:e=>se(e)(s),boolean:se(e=>typeof e=="boolean"?e:void 0)(s),number:se(e=>typeof e=="number"?e:void 0)(s),string:se(e=>typeof e=="string"?e:void 0)(s),function:se(e=>typeof e=="function"?e:void 0)(s),constant:e=>se(t=>t===e?e:void 0)(s),raw:se(e=>e)(s),object:e=>se(t=>{if(ce(t))return Pe(t,e)})(s),array:e=>se(t=>{if(Array.isArray(t))return ve(t,e)})(s)}}const L={optional:ge(!0),required:ge(!1)};function pe(s,e){const t=L.required.object(e)(s);return t.succeeded?t.value:void 0}function De(s){console.warn([`Missing '${s.key}' of ${s.target} in ${s.place}.`,"Please rebuild plugins with the latest core package."].join(" "))}function Ee(s){return s&&s.parentElement&&s.parentElement.removeChild(s),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 He=I("");function yn(s,e){return Y(s,He(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_,yn(e,"disabled")),j(this,"hidden",yn(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 xn(){return["veryfirst","first","last","verylast"]}const qt=I(""),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",()=>{xn().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(()=>{Ee(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 et(s){s.offsetHeight}function Qt(s,e){const t=s.style.transition;s.style.transition="none",e(),s.style.transition=t}function ct(s){return s.ontouchstart!==void 0}function Cn(){return globalThis}function Xn(){return Cn().document}function Pn(s){const e=s.ownerDocument.defaultView;return e&&"document"in e?s.getContext("2d",{willReadFrequently:!0}):null}const kn={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(s,e){const t=s.createElementNS(Fe,"svg");return t.innerHTML=kn[e],t}function _t(s,e,t){s.insertBefore(e,s.children[t])}function Mn(s){s.parentElement&&s.parentElement.removeChild(s)}function Zt(s){for(;s.children.length>0;)s.removeChild(s.children[0])}function An(s){for(;s.childNodes.length>0;)s.removeChild(s.childNodes[0])}function mt(s){return s.relatedTarget?s.relatedTarget:"explicitOriginalTarget"in s?s.explicitOriginalTarget:null}const pt=I("lbl");function wt(s,e){const t=s.createDocumentFragment();return e.split(`
|
|
91
|
-
`).map(g=>s.createTextNode(g)).forEach((g,k)=>{k>0&&t.appendChild(s.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")),An(c),c.appendChild(wt(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(s){const e=L,t=pe(s,{title:e.required.string,view:e.required.constant("button"),label:e.optional.string});return t?{params:t}:null},controller(s){return new K(s.document,{blade:s.blade,props:q.fromObject({label:s.params.label}),valueController:new he(s.document,{props:q.fromObject({title:s.params.title}),viewProps:s.viewProps})})},api(s){return!(s.controller instanceof K)||!(s.controller.valueController instanceof he)?null:new z(s.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(s,e){let t=0;return Qt(e,()=>{s.set("expandedHeight",null),s.set("temporaryExpanded",!0),et(e),t=e.clientHeight,s.set("temporaryExpanded",null),et(e)}),t}function Wt(s,e){e.style.height=s.styleHeight}function ze(s,e){s.value("expanded").emitter.on("beforechange",()=>{if(s.set("completed",!1),y(s.get("expandedHeight"))){const t=Tt(s,e);t>0&&s.set("expandedHeight",t)}s.set("shouldFixHeight",!0),et(e)}),s.emitter.on("change",()=>{Wt(s,e)}),Wt(s,e),e.addEventListener("transitionend",t=>{t.propertyName==="height"&&s.cleanUpTransition()})}class je extends o{constructor(e,t){super(e),this.rackApi_=t}}function ws(s,e){return s.addBlade(Object.assign(Object.assign({},e),{view:"button"}))}function ys(s,e){return s.addBlade(Object.assign(Object.assign({},e),{view:"folder"}))}function xs(s,e){const t=e??{};return s.addBlade(Object.assign(Object.assign({},t),{view:"separator"}))}function Yn(s,e){return s.addBlade(Object.assign(Object.assign({},e),{view:"tab"}))}class yt{constructor(e){this.emitter=new F,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 qn extends o{constructor(e){super(e),this.onBindingChange_=this.onBindingChange_.bind(this),this.emitter_=new F,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 Oe extends K{constructor(e,t){super(e,t),this.binding=t.binding}}class Qn extends o{constructor(e){super(e),this.onBindingUpdate_=this.onBindingUpdate_.bind(this),this.emitter_=new F,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 tt 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 Ai(s){return s instanceof Sn?s.apiSet_:s instanceof je?s.rackApi_.apiSet_:null}function Jt(s,e){const t=s.find(c=>c.controller_===e);if(!t)throw V.shouldNeverHappen();return t}function Si(s,e,t){if(!O.isBindable(s))throw V.notBindable();return new O(s,e,t)}class Sn 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 F,this.apiSet_=new yt(Ai),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=>Jt(this.apiSet_,e))}addInput(e,t,c){const g=c??{},k=this.controller_.view.element.ownerDocument,S=this.pool_.createInput(k,Si(e,t,g.presetKey),g),R=new qn(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,Si(e,t),g),R=new Qn(S);return this.add(R,g.index)}addFolder(e){return ys(this,e)}addButton(e){return ws(this,e)}addSeparator(e){return xs(this,e)}addTab(e){return Yn(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=Jt(this.apiSet_,e.bladeController);this.apiSet_.remove(t)}}onRackInputChange_(e){const t=e.bladeController;if(t instanceof Oe){const c=Jt(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=Jt(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 tt))throw V.shouldNeverHappen();const t=Jt(this.apiSet_,e.bladeController),c=e.bladeController.binding;this.emitter_.emit("update",{event:new u(t,c.target.read(),c.target.presetKey)})}}class Zn extends je{constructor(e,t){super(e,new Sn(e.rackController,t)),this.emitter_=new F,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 Wn extends gt{constructor(e){super({blade:e.blade,view:e.view,viewProps:e.rackController.viewProps}),this.rackController=e.rackController}}class Cs{constructor(e,t){const c=I(t.viewName);this.element=e.createElement("div"),this.element.classList.add(c()),t.viewProps.bindClassModifiers(this.element)}}function Ps(s,e){for(let t=0;t<s.length;t++){const c=s[t];if(c instanceof Oe&&c.binding===e)return c}return null}function ks(s,e){for(let t=0;t<s.length;t++){const c=s[t];if(c instanceof tt&&c.binding===e)return c}return null}function Ms(s,e){for(let t=0;t<s.length;t++){const c=s[t];if(c instanceof re&&c.value===e)return c}return null}function Jn(s){return s instanceof Ht?s.rack:s instanceof Wn?s.rackController.rack:null}function As(s){const e=Jn(s);return e?e.bcSet_:null}class Ss{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 F,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(As),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 Oe)c.binding.emitter.on("change",this.onChildInputChange_);else if(c instanceof tt)c.binding.emitter.on("update",this.onChildMonitorUpdate_);else if(c instanceof re)c.value.emitter.on("change",this.onChildValueChange_);else{const g=Jn(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 Oe)c.binding.emitter.off("change",this.onChildInputChange_);else if(c instanceof tt)c.binding.emitter.off("update",this.onChildMonitorUpdate_);else if(c instanceof re)c.value.emitter.off("change",this.onChildValueChange_);else{const g=Jn(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=Ps(this.find(Oe),e.sender);if(!t)throw V.alreadyDisposed();this.emitter.emit("inputchange",{bladeController:t,options:e.options,sender:this})}onChildMonitorUpdate_(e){const t=ks(this.find(tt),e.sender);if(!t)throw V.alreadyDisposed();this.emitter.emit("monitorupdate",{bladeController:t,sender:this})}onChildValueChange_(e){const t=Ms(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 Ht extends gt{constructor(e,t){super(Object.assign(Object.assign({},t),{view:new Cs(e,{viewName:"brk",viewProps:t.viewProps})})),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this);const c=new Ss({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&&_t(this.view.element,e.bladeController.view.element,e.index)}onRackRemove_(e){e.isRoot&&Mn(e.bladeController.view.element)}}const Li=I("cnt");class Ls{constructor(e,t){var c;this.className_=I((c=t.viewName)!==null&&c!==void 0?c:"fld"),this.element=e.createElement("div"),this.element.classList.add(this.className_(),Li()),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 Ln extends Wn{constructor(e,t){var c;const g=Te.create((c=t.expanded)!==null&&c!==void 0?c:!0),k=new Ht(e,{blade:t.blade,root:t.root,viewProps:t.viewProps});super(Object.assign(Object.assign({},t),{rackController:k,view:new Ls(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 Vs={id:"folder",type:"blade",accept(s){const e=L,t=pe(s,{title:e.required.string,view:e.required.constant("folder"),expanded:e.optional.boolean});return t?{params:t}:null},controller(s){return new Ln(s.document,{blade:s.blade,expanded:s.params.expanded,props:q.fromObject({title:s.params.title}),viewProps:s.viewProps})},api(s){return s.controller instanceof Ln?new Zn(s.controller,s.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 Vi extends o{}const Hn=I("spr");class Ds{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Hn()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("hr");c.classList.add(Hn("r")),this.element.appendChild(c)}}class en extends gt{constructor(e,t){super(Object.assign(Object.assign({},t),{view:new Ds(e,{viewProps:t.viewProps})}))}}const Is={id:"separator",type:"blade",accept(s){const t=pe(s,{view:L.required.constant("separator")});return t?{params:t}:null},controller(s){return new en(s.document,{blade:s.blade,viewProps:s.viewProps})},api(s){return s.controller instanceof en?new Vi(s.controller):null}},Se=I("tbi");class Ts{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 Vn{constructor(e,t){this.emitter=new F,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new Ts(e,{props:t.props,viewProps:t.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class Di{constructor(e,t){this.onItemClick_=this.onItemClick_.bind(this),this.ic_=new Vn(e,{props:t.itemProps,viewProps:Ke.create()}),this.ic_.emitter.on("click",this.onItemClick_),this.cc_=new Ht(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 ei{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 Ii extends je{constructor(e,t){super(e,new Sn(e.rackController,t)),this.onPageAdd_=this.onPageAdd_.bind(this),this.onPageRemove_=this.onPageRemove_.bind(this),this.onSelect_=this.onSelect_.bind(this),this.emitter_=new F,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 Di(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 ei(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 _(this,e.rawValue)})}}const Ti=-1;class Es{constructor(){this.onItemSelectedChange_=this.onItemSelectedChange_.bind(this),this.empty=te(!0),this.selectedIndex=te(Ti),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=Ti,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=I("tab");class Bt{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Ot(),Li()),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 tn extends Wn{constructor(e,t){const c=new Ht(e,{blade:t.blade,viewProps:t.viewProps}),g=new Es;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;_t(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;Mn(t.itemController.view.element),t.itemController.viewProps.set("parent",null),this.rackController.rack.remove(t.contentController),this.tab.remove(t.props.value("selected"))}}const ti={id:"tab",type:"blade",accept(s){const e=L,t=pe(s,{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(s){const e=new tn(s.document,{blade:s.blade,viewProps:s.viewProps});return s.params.pages.forEach(t=>{const c=new Di(s.document,{itemProps:q.fromObject({selected:!1,title:t.title}),props:q.fromObject({selected:!1})});e.add(c)}),e},api(s){return s.controller instanceof tn?new Ii(s.controller,s.pool):null}};function Os(s,e){const t=s.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 s.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 Ei{constructor(){this.disabled=!1,this.emitter=new F}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class ni{constructor(e,t){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=e,this.emitter=new F,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 Dn{constructor(e){this.onValueChange_=this.onValueChange_.bind(this),this.reader=e.reader,this.writer=e.writer,this.emitter=new F,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(s,e){for(;s.length<e;)s.push(void 0)}function Oi(s){const e=[];return ke(e,s),te(e)}function Nt(s){const e=s.indexOf(void 0);return e<0?s:s.slice(0,e)}function $e(s,e){const t=[...Nt(s),e];return t.length>s.length?t.splice(0,t.length-s.length):ke(t,s.length),t}class Bs{constructor(e){this.onTick_=this.onTick_.bind(this),this.reader_=e.reader,this.target=e.target,this.emitter=new F,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 nn{constructor(e){this.constraints=e}constrain(e){return this.constraints.reduce((t,c)=>c.constrain(t),e)}}function Qe(s,e){if(s instanceof e)return s;if(s instanceof nn){const t=s.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 sn{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 ii{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 In{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=I("lst");class Bi{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=>{Zt(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 rn{constructor(e,t){this.onSelectChange_=this.onSelectChange_.bind(this),this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.view=new Bi(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 Ni=I("pop");class Ns{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Ni()),t.viewProps.bindClassModifiers(this.element),U(t.shows,Y(this.element,Ni(void 0,"v")))}}class Fi{constructor(e,t){this.shows=te(!1),this.viewProps=t.viewProps,this.view=new Ns(e,{shows:this.shows,viewProps:this.viewProps})}}const zi=I("txt");class Fs{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(zi()),t.viewProps.bindClassModifiers(this.element),this.props_=t.props,this.props_.emitter.on("change",this.onChange_);const c=e.createElement("input");c.classList.add(zi("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 Tn{constructor(e,t){this.onInputChange_=this.onInputChange_.bind(this),this.parser_=t.parser,this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.view=new Fs(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 zs(s){return String(s)}function ji(s){return s==="false"?!1:!!s}function Ui(s){return zs(s)}class js{constructor(e){this.text=e}evaluate(){return Number(this.text)}toString(){return this.text}}const Us={"**":(s,e)=>Math.pow(s,e),"*":(s,e)=>s*e,"/":(s,e)=>s/e,"%":(s,e)=>s%e,"+":(s,e)=>s+e,"-":(s,e)=>s-e,"<<":(s,e)=>s<<e,">>":(s,e)=>s>>e,">>>":(s,e)=>s>>>e,"&":(s,e)=>s&e,"^":(s,e)=>s^e,"|":(s,e)=>s|e};class Rs{constructor(e,t,c){this.left=t,this.operator=e,this.right=c}evaluate(){const e=Us[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 Ri={"+":s=>s,"-":s=>-s,"~":s=>~s};class Gs{constructor(e,t){this.operator=e,this.expression=t}evaluate(){const e=Ri[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 si(s){return(e,t)=>{for(let c=0;c<s.length;c++){const g=s[c](e,t);if(g!=="")return g}return""}}function xt(s,e){var t;const c=s.substr(e).match(/^\s+/);return(t=c&&c[0])!==null&&t!==void 0?t:""}function Ks(s,e){const t=s.substr(e,1);return t.match(/^[1-9]$/)?t:""}function on(s,e){var t;const c=s.substr(e).match(/^[0-9]+/);return(t=c&&c[0])!==null&&t!==void 0?t:""}function $s(s,e){const t=on(s,e);if(t!=="")return t;const c=s.substr(e,1);if(e+=1,c!=="-"&&c!=="+")return"";const g=on(s,e);return g===""?"":c+g}function nt(s,e){const t=s.substr(e,1);if(e+=1,t.toLowerCase()!=="e")return"";const c=$s(s,e);return c===""?"":t+c}function Gi(s,e){const t=s.substr(e,1);if(t==="0")return t;const c=Ks(s,e);return e+=c.length,c===""?"":c+on(s,e)}function Xs(s,e){const t=Gi(s,e);if(e+=t.length,t==="")return"";const c=s.substr(e,1);if(e+=c.length,c!==".")return"";const g=on(s,e);return e+=g.length,t+c+g+nt(s,e)}function Ki(s,e){const t=s.substr(e,1);if(e+=t.length,t!==".")return"";const c=on(s,e);return e+=c.length,c===""?"":t+c+nt(s,e)}function Ys(s,e){const t=Gi(s,e);return e+=t.length,t===""?"":t+nt(s,e)}const $i=si([Xs,Ki,Ys]);function ri(s,e){var t;const c=s.substr(e).match(/^[01]+/);return(t=c&&c[0])!==null&&t!==void 0?t:""}function qs(s,e){const t=s.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0b")return"";const c=ri(s,e);return c===""?"":t+c}function Xi(s,e){var t;const c=s.substr(e).match(/^[0-7]+/);return(t=c&&c[0])!==null&&t!==void 0?t:""}function Xe(s,e){const t=s.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0o")return"";const c=Xi(s,e);return c===""?"":t+c}function Qs(s,e){var t;const c=s.substr(e).match(/^[0-9a-f]+/i);return(t=c&&c[0])!==null&&t!==void 0?t:""}function Zs(s,e){const t=s.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0x")return"";const c=Qs(s,e);return c===""?"":t+c}const oi=si([qs,Xe,Zs]),Ws=si([oi,$i]);function ft(s,e){const t=Ws(s,e);return e+=t.length,t===""?null:{evaluable:new js(t),cursor:e}}function ai(s,e){const t=s.substr(e,1);if(e+=t.length,t!=="(")return null;const c=En(s,e);if(!c)return null;e=c.cursor,e+=xt(s,e).length;const g=s.substr(e,1);return e+=g.length,g!==")"?null:{evaluable:c.evaluable,cursor:e}}function Js(s,e){var t;return(t=ft(s,e))!==null&&t!==void 0?t:ai(s,e)}function li(s,e){const t=Js(s,e);if(t)return t;const c=s.substr(e,1);if(e+=c.length,c!=="+"&&c!=="-"&&c!=="~")return null;const g=li(s,e);return g?(e=g.cursor,{cursor:e,evaluable:new Gs(c,g.evaluable)}):null}function Hs(s,e,t){t+=xt(e,t).length;const c=s.filter(g=>e.startsWith(g,t))[0];return c?(t+=c.length,t+=xt(e,t).length,{cursor:t,operator:c}):null}function Ct(s,e){return(t,c)=>{const g=s(t,c);if(!g)return null;c=g.cursor;let k=g.evaluable;for(;;){const S=Hs(e,t,c);if(!S)break;c=S.cursor;const R=s(t,c);if(!R)return null;c=R.cursor,k=new Rs(S.operator,k,R.evaluable)}return k?{cursor:c,evaluable:k}:null}}const Yi=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((s,e)=>Ct(s,e),li);function En(s,e){return e+=xt(s,e).length,Yi(s,e)}function qi(s){const e=En(s,0);return!e||e.cursor+xt(s,e.cursor).length!==s.length?null:e.evaluable}function it(s){var e;const t=qi(s);return(e=t==null?void 0:t.evaluate())!==null&&e!==void 0?e:null}function ht(s){if(typeof s=="number")return s;if(typeof s=="string"){const e=it(s);if(!y(e))return e}return 0}function er(s){return String(s)}function Le(s){return e=>e.toFixed(Math.max(Math.min(s,20),0))}const Qi=Le(0);function an(s){return Qi(s)+"%"}function ci(s){return String(s)}function vt(s){return s}function jt({primary:s,secondary:e,forward:t,backward:c}){let g=!1;function k(S){g||(g=!0,S(),g=!1)}s.emitter.on("change",S=>{k(()=>{e.setRawValue(t(s,e),S.options)})}),e.emitter.on("change",S=>{k(()=>{s.setRawValue(c(s,e),S.options)}),k(()=>{e.setRawValue(t(s,e),S.options)})}),k(()=>{e.setRawValue(t(s,e),{forceEmit:!1,last:!0})})}function Ie(s,e){const t=s*(e.altKey?.1:1)*(e.shiftKey?10:1);return e.upKey?+t:e.downKey?-t:0}function ln(s){return{altKey:s.altKey,downKey:s.key==="ArrowDown",shiftKey:s.shiftKey,upKey:s.key==="ArrowUp"}}function st(s){return{altKey:s.altKey,downKey:s.key==="ArrowLeft",shiftKey:s.shiftKey,upKey:s.key==="ArrowRight"}}function Zi(s){return s==="ArrowUp"||s==="ArrowDown"}function On(s){return Zi(s)||s==="ArrowLeft"||s==="ArrowRight"}function pi(s,e){var t,c;const g=e.ownerDocument.defaultView,k=e.getBoundingClientRect();return{x:s.pageX-(((t=g&&g.scrollX)!==null&&t!==void 0?t:0)+k.left),y:s.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 F,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_(pi(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onDocumentMouseMove_(e){this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(pi(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_(pi(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onTouchStart_(e){e.preventDefault();const t=e.targetTouches.item(0),c=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(t?{x:t.clientX-c.left,y:t.clientY-c.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=t}onTouchMove_(e){const t=e.targetTouches.item(0),c=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(t?{x:t.clientX-c.left,y:t.clientY-c.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=t}onTouchEnd_(e){var t;const c=(t=e.targetTouches.item(0))!==null&&t!==void 0?t:this.lastTouch_,g=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:e.altKey,data:this.computePosition_(c?{x:c.clientX-g.left,y:c.clientY-g.top}:void 0),sender:this,shiftKey:e.shiftKey})}}function we(s,e,t,c,g){const k=(s-e)/(t-e);return c+k*(g-c)}function hi(s){return String(s.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function Me(s,e,t){return Math.min(Math.max(s,e),t)}function Ut(s,e){return(s%e+e)%e}const Ue=I("txt");class ui{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.props_=t.props,this.props_.emitter.on("change",this.onChange_),this.element=e.createElement("div"),this.element.classList.add(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(I("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 cn{constructor(e,t){var c;this.originRawValue_=0,this.onInputChange_=this.onInputChange_.bind(this),this.onInputKeyDown_=this.onInputKeyDown_.bind(this),this.onInputKeyUp_=this.onInputKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=t.baseStep,this.parser_=t.parser,this.props=t.props,this.sliderProps_=(c=t.sliderProps)!==null&&c!==void 0?c:null,this.value=t.value,this.viewProps=t.viewProps,this.dragging_=te(null),this.view=new ui(e,{arrayPosition:t.arrayPosition,dragging:this.dragging_,props:this.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.inputElement.addEventListener("keydown",this.onInputKeyDown_),this.view.inputElement.addEventListener("keyup",this.onInputKeyUp_);const g=new 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_,ln(e));t!==0&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+t),{forceEmit:!1,last:!1})}onInputKeyUp_(e){Ie(this.baseStep_,ln(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 di=I("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(di()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(di("t")),t.viewProps.bindTabIndex(c),this.element.appendChild(c),this.trackElement=c;const g=e.createElement("div");g.classList.add(di("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(we(this.value.rawValue,this.props_.get("minValue"),this.props_.get("maxValue"),0,100),0,100);this.knobElement.style.width=`${e}%`}onChange_(){this.update_()}}class mi{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(we(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_,st(e));t!==0&&this.value.setRawValue(this.value.rawValue+t,{forceEmit:!1,last:!1})}onKeyUp_(e){Ie(this.baseStep_,st(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const pn=I("sldtxt");class fi{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(pn());const c=e.createElement("div");c.classList.add(pn("s")),this.sliderView_=t.sliderView,c.appendChild(this.sliderView_.element),this.element.appendChild(c);const g=e.createElement("div");g.classList.add(pn("t")),this.textView_=t.textView,g.appendChild(this.textView_.element),this.element.appendChild(g)}}class Bn{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.sliderC_=new mi(e,{baseStep:t.baseStep,props:t.sliderProps,value:t.value,viewProps:this.viewProps}),this.textC_=new cn(e,{baseStep:t.baseStep,parser:t.parser,props:t.textProps,sliderProps:t.sliderProps,value:t.value,viewProps:t.viewProps}),this.view=new fi(e,{sliderView:this.sliderC_.view,textView:this.textC_.view})}get sliderController(){return this.sliderC_}get textController(){return this.textC_}}function Ze(s,e){s.write(e)}function hn(s){const e=L;if(Array.isArray(s))return e.required.array(e.required.object({text:e.required.string,value:e.required.raw}))(s).value;if(typeof s=="object")return e.required.raw(s).value}function vi(s){if(s==="inline"||s==="popup")return s}function ut(s){const e=L;return e.required.object({max:e.optional.number,min:e.optional.number,step:e.optional.number})(s).value}function Wi(s){if(Array.isArray(s))return s;const e=[];return Object.keys(s).forEach(t=>{e.push({text:t,value:s[t]})}),e}function bi(s){return y(s)?null:new sn(Wi(s))}function tr(s){const e=s?Qe(s,In):null;return e?e.step:null}function Nn(s,e){const t=s&&Qe(s,In);return t?hi(t.step):Math.max(hi(e),2)}function kt(s){const e=tr(s);return e??1}function Mt(s,e){var t;const c=s&&Qe(s,In),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 un=I("ckb");class dn{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(un()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("label");c.classList.add(un("l")),this.element.appendChild(c);const g=e.createElement("input");g.classList.add(un("i")),g.type="checkbox",c.appendChild(g),this.inputElement=g,t.viewProps.bindDisabled(this.inputElement);const k=e.createElement("div");k.classList.add(un("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 Ji{constructor(e,t){this.onInputChange_=this.onInputChange_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new dn(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 Hi(s){const e=[],t=bi(s.options);return t&&e.push(t),new nn(e)}const Fn={id:"input-bool",type:"input",accept:(s,e)=>{if(typeof s!="boolean")return null;const c=pe(e,{options:L.optional.custom(hn)});return c?{initialValue:s,params:c}:null},binding:{reader:s=>ji,constraint:s=>Hi(s.params),writer:s=>Ze},controller:s=>{const e=s.document,t=s.value,c=s.constraint,g=c&&Qe(c,sn);return g?new rn(e,{props:new q({options:g.values.value("options")}),value:t,viewProps:s.viewProps}):new Ji(e,{value:t,viewProps:s.viewProps})}},At=I("col");class gi{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 nr(s,e,t){const c=Me(s/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 ir(s,e,t){const c=(s%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 sr(s,e,t){const c=Me(s/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 es(s,e,t){const c=Ut(s,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(s,e,t){const c=t+e*(100-Math.abs(2*t-100))/200;return[s,c!==0?e*(100-Math.abs(2*t-100))/c:0,t+e*(100-Math.abs(2*t-100))/(2*100)]}function a(s,e,t){const c=100-Math.abs(t*(200-e)/100-100);return[s,c!==0?e*t/c:0,t*(200-e)/(2*100)]}function h(s){return[s[0],s[1],s[2]]}function v(s,e){return[s[0],s[1],s[2],e]}const P={hsl:{hsl:(s,e,t)=>[s,e,t],hsv:m,rgb:ir},hsv:{hsl:a,hsv:(s,e,t)=>[s,e,t],rgb:es},rgb:{hsl:nr,hsv:sr,rgb:(s,e,t)=>[s,e,t]}};function A(s,e){return[e==="float"?1:s==="rgb"?255:360,e==="float"?1:s==="rgb"?255:100,e==="float"?1:s==="rgb"?255:100]}function E(s,e){return s===e?e:Ut(s,e)}function G(s,e,t){var c;const g=A(e,t);return[e==="rgb"?Me(s[0],0,g[0]):E(s[0],g[0]),Me(s[1],0,g[1]),Me(s[2],0,g[2]),Me((c=s[3])!==null&&c!==void 0?c:1,0,1)]}function le(s,e,t,c){const g=A(e,t),k=A(e,c);return s.map((S,R)=>S/g[R]*k[R])}function Ye(s,e,t){const c=le(s,e.mode,e.type,"int"),g=P[e.mode][t.mode](...c);return le(g,t.mode,"int",t.type)}function qe(s,e){return typeof s!="object"||y(s)?!1:e in s&&typeof s[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 v(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=I("colp");class rr{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 lp(s){return s==="int"?"int":s==="float"?"float":void 0}function or(s){const e=L;return pe(s,{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(vi)})}function mn(s){return s?.1:1}function fn(s){var e;return(e=s.color)===null||e===void 0?void 0:e.type}function cp(s,e){return s.alpha===e.alpha&&s.mode===e.mode&&s.notation===e.notation&&s.type===e.type}function rt(s,e){const t=s.match(/^(.+)%$/);return Math.min(t?parseFloat(t[1])*.01*e:parseFloat(s),e)}const pp={deg:s=>s,grad:s=>s*360/400,rad:s=>s*360/(2*Math.PI),turn:s=>s*360};function so(s){const e=s.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);if(!e)return parseFloat(s);const t=parseFloat(e[1]),c=e[2];return pp[c](t)}function ro(s){const e=s.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=[rt(e[1],255),rt(e[2],255),rt(e[3],255)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function oo(s){return e=>{const t=ro(e);return t?new ie(t,"rgb",s):null}}function ao(s){const e=s.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=[rt(e[1],255),rt(e[2],255),rt(e[3],255),rt(e[4],1)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function lo(s){return e=>{const t=ao(e);return t?new ie(t,"rgb",s):null}}function co(s){const e=s.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=[so(e[1]),rt(e[2],100),rt(e[3],100)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function po(s){return e=>{const t=co(e);return t?new ie(t,"hsl",s):null}}function ho(s){const e=s.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=[so(e[1]),rt(e[2],100),rt(e[3],100),rt(e[4],1)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function uo(s){return e=>{const t=ho(e);return t?new ie(t,"hsl",s):null}}function mo(s){const e=s.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=s.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 hp(s){const e=mo(s);return e?new ie(e,"rgb","int"):null}function fo(s){const e=s.match(/^#?([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(e)return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16),we(parseInt(e[4]+e[4],16),0,255,0,1)];const t=s.match(/^(?:#|0x)?([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16),we(parseInt(t[4],16),0,255,0,1)]:null}function up(s){const e=fo(s);return e?new ie(e,"rgb","int"):null}function vo(s){const e=s.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 bo(s){return e=>{const t=vo(e);return t?new ie(t,"rgb",s):null}}function go(s){const e=s.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 _o(s){return e=>{const t=go(e);return t?new ie(t,"rgb",s):null}}const dp=[{parser:mo,result:{alpha:!1,mode:"rgb",notation:"hex"}},{parser:fo,result:{alpha:!0,mode:"rgb",notation:"hex"}},{parser:ro,result:{alpha:!1,mode:"rgb",notation:"func"}},{parser:ao,result:{alpha:!0,mode:"rgb",notation:"func"}},{parser:co,result:{alpha:!1,mode:"hsl",notation:"func"}},{parser:ho,result:{alpha:!0,mode:"hsl",notation:"func"}},{parser:vo,result:{alpha:!1,mode:"rgb",notation:"object"}},{parser:go,result:{alpha:!0,mode:"rgb",notation:"object"}}];function mp(s){return dp.reduce((e,{parser:t,result:c})=>e||(t(s)?c:null),null)}function ar(s,e="int"){const t=mp(s);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 wo={int:[hp,up,oo("int"),lo("int"),po("int"),uo("int"),bo("int"),_o("int")],float:[oo("float"),lo("float"),po("float"),uo("float"),bo("float"),_o("float")]};function fp(s){const e=wo[s];return t=>{if(typeof t!="string")return ie.black(s);const c=e.reduce((g,k)=>g||k(t),null);return c??ie.black(s)}}function lr(s){const e=wo[s];return t=>e.reduce((c,g)=>c||g(t),null)}function yo(s){const e=Me(Math.floor(s),0,255).toString(16);return e.length===1?`0${e}`:e}function xo(s,e="#"){const t=h(s.getComponents("rgb")).map(yo).join("");return`${e}${t}`}function cr(s,e="#"){const t=s.getComponents("rgb"),c=[t[0],t[1],t[2],t[3]*255].map(yo).join("");return`${e}${c}`}function Co(s,e){const t=Le(e==="float"?2:0);return`rgb(${h(s.getComponents("rgb",e)).map(g=>t(g)).join(", ")})`}function vp(s){return e=>Co(e,s)}function ts(s,e){const t=Le(2),c=Le(e==="float"?2:0);return`rgba(${s.getComponents("rgb",e).map((k,S)=>(S===3?t:c)(k)).join(", ")})`}function bp(s){return e=>ts(e,s)}function gp(s){const e=[Le(0),an,an];return`hsl(${h(s.getComponents("hsl")).map((c,g)=>e[g](c)).join(", ")})`}function _p(s){const e=[Le(0),an,an,Le(2)];return`hsla(${s.getComponents("hsl").map((c,g)=>e[g](c)).join(", ")})`}function Po(s,e){const t=Le(e==="float"?2:0),c=["r","g","b"];return`{${h(s.getComponents("rgb",e)).map((k,S)=>`${c[S]}: ${t(k)}`).join(", ")}}`}function wp(s){return e=>Po(e,s)}function ko(s,e){const t=Le(2),c=Le(e==="float"?2:0),g=["r","g","b","a"];return`{${s.getComponents("rgb",e).map((S,R)=>{const W=R===3?t:c;return`${g[R]}: ${W(S)}`}).join(", ")}}`}function yp(s){return e=>ko(e,s)}const xp=[{format:{alpha:!1,mode:"rgb",notation:"hex",type:"int"},stringifier:xo},{format:{alpha:!0,mode:"rgb",notation:"hex",type:"int"},stringifier:cr},{format:{alpha:!1,mode:"hsl",notation:"func",type:"int"},stringifier:gp},{format:{alpha:!0,mode:"hsl",notation:"func",type:"int"},stringifier:_p},...["int","float"].reduce((s,e)=>[...s,{format:{alpha:!1,mode:"rgb",notation:"func",type:e},stringifier:vp(e)},{format:{alpha:!0,mode:"rgb",notation:"func",type:e},stringifier:bp(e)},{format:{alpha:!1,mode:"rgb",notation:"object",type:e},stringifier:wp(e)},{format:{alpha:!0,mode:"rgb",notation:"object",type:e},stringifier:yp(e)}],[])];function pr(s){return xp.reduce((e,t)=>e||(cp(t.format,s)?t.stringifier:null),null)}const _i=I("apl");class Cp{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.value=t.value,this.value.emitter.on("change",this.onValueChange_),this.element=e.createElement("div"),this.element.classList.add(_i()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);const c=e.createElement("div");c.classList.add(_i("b")),this.element.appendChild(c);const g=e.createElement("div");g.classList.add(_i("c")),c.appendChild(g),this.colorElem_=g;const k=e.createElement("div");k.classList.add(_i("m")),this.element.appendChild(k),this.markerElem_=k;const S=e.createElement("div");S.classList.add(_i("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",ts(c),ts(g)];this.colorElem_.style.background=`linear-gradient(${k.join(",")})`,this.previewElem_.style.backgroundColor=ts(e);const S=we(t[3],0,1,0,100);this.markerElem_.style.left=`${S}%`}onValueChange_(){this.update_()}}class Pp{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new Cp(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new 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(mn(!0),st(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(mn(!0),st(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const zn=I("coltxt");function kp(s){const e=s.createElement("select"),t=[{text:"RGB",value:"rgb"},{text:"HSL",value:"hsl"},{text:"HSV",value:"hsv"}];return e.appendChild(t.reduce((c,g)=>{const k=s.createElement("option");return k.textContent=g.text,k.value=g.value,c.appendChild(k),c},s.createDocumentFragment())),e}class Mp{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(zn()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(zn("m")),this.modeElem_=kp(e),this.modeElem_.classList.add(zn("ms")),c.appendChild(this.modeSelectElement),t.viewProps.bindDisabled(this.modeElem_);const g=e.createElement("div");g.classList.add(zn("mm")),g.appendChild(dt(e,"dropdown")),c.appendChild(g),this.element.appendChild(c);const k=e.createElement("div");k.classList.add(zn("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_(){Zt(this.textsElem_);const e=this.element.ownerDocument;this.textViews_.forEach(t=>{const c=e.createElement("div");c.classList.add(zn("c")),c.appendChild(t.element),this.textsElem_.appendChild(c)})}}function Ap(s){return Le(s==="float"?2:0)}function Sp(s,e,t){const c=A(s,e)[t];return new Ft({min:0,max:c})}function hr(s,e,t){return new cn(s,{arrayPosition:t===0?"fst":t===3-1?"lst":"mid",baseStep:mn(!1),parser:e.parser,props:q.fromObject({draggingScale:e.colorType==="float"?.01:1,formatter:Ap(e.colorType)}),value:te(0,{constraint:Sp(e.colorMode,e.colorType,t)}),viewProps:e.viewProps})}class Lp{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 Mp(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=[hr(e,t,0),hr(e,t,1),hr(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(v(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 ur=I("hpl");class Vp{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(ur()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);const c=e.createElement("div");c.classList.add(ur("c")),this.element.appendChild(c);const g=e.createElement("div");g.classList.add(ur("m")),this.element.appendChild(g),this.markerElem_=g,this.update_()}update_(){const e=this.value.rawValue,[t]=e.getComponents("hsv");this.markerElem_.style.backgroundColor=Co(new ie([t,100,100],"hsv"));const c=we(t,0,360,0,100);this.markerElem_.style.left=`${c}%`}onValueChange_(){this.update_()}}class Dp{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 Vp(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=we(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(mn(!1),st(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(mn(!1),st(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const dr=I("svp"),Mo=64;class Ip{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(dr()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);const c=e.createElement("canvas");c.height=Mo,c.width=Mo,c.classList.add(dr("c")),this.element.appendChild(c),this.canvasElement=c;const g=e.createElement("div");g.classList.add(dr("m")),this.element.appendChild(g),this.markerElem_=g,this.update_()}update_(){const e=Pn(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 vn=we(be,0,g,0,100),yi=we(me,0,k,100,0),xi=es(c[0],vn,yi),ns=(me*g+be)*4;R[ns]=xi[0],R[ns+1]=xi[1],R[ns+2]=xi[2],R[ns+3]=255}e.putImageData(S,0,0);const W=we(c[1],0,100,0,100);this.markerElem_.style.left=`${W}%`;const H=we(c[2],0,100,100,0);this.markerElem_.style.top=`${H}%`}onValueChange_(){this.update_()}}class Tp{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 Ip(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=we(e.point.x,0,e.bounds.width,0,100),g=we(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){On(e.key)&&e.preventDefault();const[t,c,g,k]=this.value.rawValue.getComponents("hsv"),S=mn(!1),R=Ie(S,st(e)),W=Ie(S,ln(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=mn(!1),c=Ie(t,st(e)),g=Ie(t,ln(e));c===0&&g===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class Ep{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.hPaletteC_=new Dp(e,{value:this.value,viewProps:this.viewProps}),this.svPaletteC_=new Tp(e,{value:this.value,viewProps:this.viewProps}),this.alphaIcs_=t.supportsAlpha?{palette:new Pp(e,{value:this.value,viewProps:this.viewProps}),text:new cn(e,{parser:it,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 Lp(e,{colorType:t.colorType,parser:it,value:this.value,viewProps:this.viewProps}),this.view=new rr(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 mr=I("colsw");class Op{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(mr()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(mr("sw")),this.element.appendChild(c),this.swatchElem_=c;const g=e.createElement("button");g.classList.add(mr("b")),t.viewProps.bindDisabled(g),this.element.appendChild(g),this.buttonElement=g,this.update_()}update_(){const e=this.value.rawValue;this.swatchElem_.style.backgroundColor=cr(e)}onValueChange_(){this.update_()}}class Bp{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new Op(e,{value:this.value,viewProps:this.viewProps})}}class fr{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 Bp(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 Tn(e,{parser:t.parser,props:q.fromObject({formatter:t.formatter}),value:this.value,viewProps:this.viewProps}),this.view=new gi(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 Fi(e,{viewProps:this.viewProps}):null;const g=new Ep(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 Np(s,e){return ie.isColorObject(s)?ie.fromObject(s,e):ie.black(e)}function Fp(s){return h(s.getComponents("rgb")).reduce((e,t)=>e<<8|Math.floor(t)&255,0)}function zp(s){return s.getComponents("rgb").reduce((e,t,c)=>{const g=Math.floor(c===3?t*255:t)&255;return e<<8|g},0)>>>0}function jp(s){return new ie([s>>16&255,s>>8&255,s&255],"rgb")}function Up(s){return new ie([s>>24&255,s>>16&255,s>>8&255,we(s&255,0,255,0,1)],"rgb")}function Rp(s){return typeof s!="number"?ie.black():jp(s)}function Gp(s){return typeof s!="number"?ie.black():Up(s)}function Kp(s){const e=pr(s);return e?(t,c)=>{Ze(t,e(c))}:null}function $p(s){const e=s?zp:Fp;return(t,c)=>{Ze(t,e(c))}}function Xp(s,e,t){const c=e.toRgbaObject(t);s.writeProperty("r",c.r),s.writeProperty("g",c.g),s.writeProperty("b",c.b),s.writeProperty("a",c.a)}function Yp(s,e,t){const c=e.toRgbaObject(t);s.writeProperty("r",c.r),s.writeProperty("g",c.g),s.writeProperty("b",c.b)}function qp(s,e){return(t,c)=>{s?Xp(t,c,e):Yp(t,c,e)}}function vr(s){var e;return!!(s!=null&&s.alpha||!((e=s==null?void 0:s.color)===null||e===void 0)&&e.alpha)}function Qp(s){return s?e=>cr(e,"0x"):e=>xo(e,"0x")}function Zp(s){return"color"in s||"view"in s&&s.view==="color"}const Wp={id:"input-color-number",type:"input",accept:(s,e)=>{if(typeof s!="number"||!Zp(e))return null;const t=or(e);return t?{initialValue:s,params:t}:null},binding:{reader:s=>vr(s.params)?Gp:Rp,equals:ie.equals,writer:s=>$p(vr(s.params))},controller:s=>{const e=vr(s.params),t="expanded"in s.params?s.params.expanded:void 0,c="picker"in s.params?s.params.picker:void 0;return new fr(s.document,{colorType:"int",expanded:t??!1,formatter:Qp(e),parser:lr("int"),pickerLayout:c??"popup",supportsAlpha:e,value:s.value,viewProps:s.viewProps})}};function Jp(s){return ie.isRgbaColorObject(s)}function Hp(s){return e=>Np(e,s)}function eh(s,e){return t=>s?ko(t,e):Po(t,e)}const th={id:"input-color-object",type:"input",accept:(s,e)=>{if(!ie.isColorObject(s))return null;const t=or(e);return t?{initialValue:s,params:t}:null},binding:{reader:s=>Hp(fn(s.params)),equals:ie.equals,writer:s=>qp(Jp(s.initialValue),fn(s.params))},controller:s=>{var e;const t=ie.isRgbaColorObject(s.initialValue),c="expanded"in s.params?s.params.expanded:void 0,g="picker"in s.params?s.params.picker:void 0,k=(e=fn(s.params))!==null&&e!==void 0?e:"int";return new fr(s.document,{colorType:k,expanded:c??!1,formatter:eh(t,k),parser:lr(k),pickerLayout:g??"popup",supportsAlpha:t,value:s.value,viewProps:s.viewProps})}},nh={id:"input-color-string",type:"input",accept:(s,e)=>{if(typeof s!="string"||"view"in e&&e.view==="text")return null;const t=ar(s,fn(e));if(!t||!pr(t))return null;const g=or(e);return g?{initialValue:s,params:g}:null},binding:{reader:s=>{var e;return fp((e=fn(s.params))!==null&&e!==void 0?e:"int")},equals:ie.equals,writer:s=>{const e=ar(s.initialValue,fn(s.params));if(!e)throw V.shouldNeverHappen();const t=Kp(e);if(!t)throw V.notBindable();return t}},controller:s=>{const e=ar(s.initialValue,fn(s.params));if(!e)throw V.shouldNeverHappen();const t=pr(e);if(!t)throw V.shouldNeverHappen();const c="expanded"in s.params?s.params.expanded:void 0,g="picker"in s.params?s.params.picker:void 0;return new fr(s.document,{colorType:e.type,expanded:c??!1,formatter:t,parser:lr(e.type),pickerLayout:g??"popup",supportsAlpha:e.alpha,value:s.value,viewProps:s.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 Ao=I("pndtxt");class ih{constructor(e,t){this.textViews=t.textViews,this.element=e.createElement("div"),this.element.classList.add(Ao()),this.textViews.forEach(c=>{const g=e.createElement("div");g.classList.add(Ao("a")),g.appendChild(c.element),this.element.appendChild(g)})}}function sh(s,e,t){return new cn(s,{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 br{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.acs_=t.axes.map((c,g)=>sh(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 ih(e,{textViews:this.acs_.map(c=>c.view)})}}function So(s,e){return"step"in s&&!y(s.step)?new In(s.step,e):null}function Lo(s){return!y(s.max)&&!y(s.min)?new Ft({max:s.max,min:s.min}):!y(s.max)||!y(s.min)?new ii({max:s.max,min:s.min}):null}function rh(s){const e=Qe(s,Ft);if(e)return[e.values.get("min"),e.values.get("max")];const t=Qe(s,ii);return t?[t.minValue,t.maxValue]:[void 0,void 0]}function oh(s,e){const t=[],c=So(s,e);c&&t.push(c);const g=Lo(s);g&&t.push(g);const k=bi(s.options);return k&&t.push(k),new nn(t)}const ah={id:"input-number",type:"input",accept:(s,e)=>{if(typeof s!="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(hn),step:t.optional.number});return c?{initialValue:s,params:c}:null},binding:{reader:s=>ht,constraint:s=>oh(s.params,s.initialValue),writer:s=>Ze},controller:s=>{var e;const t=s.value,c=s.constraint,g=c&&Qe(c,sn);if(g)return new rn(s.document,{props:new q({options:g.values.value("options")}),value:t,viewProps:s.viewProps});const k=(e="format"in s.params?s.params.format:void 0)!==null&&e!==void 0?e:Le(Nn(c,t.rawValue)),S=c&&Qe(c,Ft);return S?new Bn(s.document,{baseStep:kt(c),parser:it,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:s.viewProps}):new cn(s.document,{baseStep:kt(c),parser:it,props:q.fromObject({draggingScale:Mt(c,t.rawValue),formatter:k}),value:t,viewProps:s.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 Vo={toComponents:s=>s.getComponents(),fromComponents:s=>new Gt(...s)},jn=I("p2d");class lh{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(jn()),t.viewProps.bindClassModifiers(this.element),U(t.expanded,Y(this.element,jn(void 0,"expanded")));const c=e.createElement("div");c.classList.add(jn("h")),this.element.appendChild(c);const g=e.createElement("button");g.classList.add(jn("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(jn("t")),c.appendChild(k),this.textElement=k,t.pickerLayout==="inline"){const S=e.createElement("div");S.classList.add(jn("p")),this.element.appendChild(S),this.pickerElement=S}else this.pickerElement=null}}const Kt=I("p2dp");class ch{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=we(e,-c,+c,0,100),k=we(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 Do(s,e,t){return[Ie(e[0],st(s)),Ie(e[1],ln(s))*(t?1:-1)]}class ph{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 ch(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=we(e.point.x,0,e.bounds.width,-c,+c),k=we(this.invertsY_?e.bounds.height-e.point.y:e.point.y,0,e.bounds.height,-c,+c);this.value.setRawValue(new 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){On(e.key)&&e.preventDefault();const[t,c]=Do(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]=Do(e,this.baseSteps_,this.invertsY_);t===0&&c===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class hh{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 Fi(e,{viewProps:this.viewProps}):null;const k=new ph(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 br(e,{assembly:Vo,axes:t.axes,parser:t.parser,value:this.value,viewProps:this.viewProps}),this.view=new lh(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 Un{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 Io={toComponents:s=>s.getComponents(),fromComponents:s=>new Un(...s)};function uh(s){return Un.isObject(s)?new Un(s.x,s.y,s.z):new Un}function dh(s,e){s.writeProperty("x",e.x),s.writeProperty("y",e.y),s.writeProperty("z",e.z)}function mh(s,e){return new Rt({assembly:Io,components:[St("x"in s?s.x:void 0,e.x),St("y"in s?s.y:void 0,e.y),St("z"in s?s.z:void 0,e.z)]})}function gr(s,e){return{baseStep:kt(e),constraint:e,textProps:q.fromObject({draggingScale:Mt(e,s),formatter:Le(Nn(e,s))})}}const fh={id:"input-point3d",type:"input",accept:(s,e)=>{if(!Un.isObject(s))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:s,params:c}:null},binding:{reader:s=>uh,constraint:s=>mh(s.params,s.initialValue),equals:Un.equals,writer:s=>dh},controller:s=>{const e=s.value,t=s.constraint;if(!(t instanceof Rt))throw V.shouldNeverHappen();return new br(s.document,{assembly:Io,axes:[gr(e.rawValue.x,t.components[0]),gr(e.rawValue.y,t.components[1]),gr(e.rawValue.z,t.components[2])],parser:it,value:e,viewProps:s.viewProps})}};class Rn{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 To={toComponents:s=>s.getComponents(),fromComponents:s=>new Rn(...s)};function vh(s){return Rn.isObject(s)?new Rn(s.x,s.y,s.z,s.w):new Rn}function bh(s,e){s.writeProperty("x",e.x),s.writeProperty("y",e.y),s.writeProperty("z",e.z),s.writeProperty("w",e.w)}function gh(s,e){return new Rt({assembly:To,components:[St("x"in s?s.x:void 0,e.x),St("y"in s?s.y:void 0,e.y),St("z"in s?s.z:void 0,e.z),St("w"in s?s.w:void 0,e.w)]})}function _h(s,e){return{baseStep:kt(e),constraint:e,textProps:q.fromObject({draggingScale:Mt(e,s),formatter:Le(Nn(e,s))})}}const wh={id:"input-point4d",type:"input",accept:(s,e)=>{if(!Rn.isObject(s))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:s,params:c}:null},binding:{reader:s=>vh,constraint:s=>gh(s.params,s.initialValue),equals:Rn.equals,writer:s=>bh},controller:s=>{const e=s.value,t=s.constraint;if(!(t instanceof Rt))throw V.shouldNeverHappen();return new br(s.document,{assembly:To,axes:e.rawValue.getComponents().map((c,g)=>_h(c,t.components[g])),parser:it,value:e,viewProps:s.viewProps})}};function yh(s){const e=[],t=bi(s.options);return t&&e.push(t),new nn(e)}const xh={id:"input-string",type:"input",accept:(s,e)=>{if(typeof s!="string")return null;const c=pe(e,{options:L.optional.custom(hn)});return c?{initialValue:s,params:c}:null},binding:{reader:s=>ci,constraint:s=>yh(s.params),writer:s=>Ze},controller:s=>{const e=s.document,t=s.value,c=s.constraint,g=c&&Qe(c,sn);return g?new rn(e,{props:new q({options:g.values.value("options")}),value:t,viewProps:s.viewProps}):new Tn(e,{parser:k=>k,props:q.fromObject({formatter:vt}),value:t,viewProps:s.viewProps})}},wi={monitor:{defaultInterval:200,defaultLineCount:3}},Eo=I("mll");class Ch{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(Eo()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("textarea");c.classList.add(Eo("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 _r{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new Ch(e,{formatter:t.formatter,lineCount:t.lineCount,value:this.value,viewProps:this.viewProps})}}const Oo=I("sgl");class Ph{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(Oo()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("input");c.classList.add(Oo("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 wr{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new Ph(e,{formatter:t.formatter,value:this.value,viewProps:this.viewProps})}}const kh={id:"monitor-bool",type:"monitor",accept:(s,e)=>{if(typeof s!="boolean")return null;const c=pe(e,{lineCount:L.optional.number});return c?{initialValue:s,params:c}:null},binding:{reader:s=>ji},controller:s=>{var e;return s.value.rawValue.length===1?new wr(s.document,{formatter:Ui,value:s.value,viewProps:s.viewProps}):new _r(s.document,{formatter:Ui,lineCount:(e=s.params.lineCount)!==null&&e!==void 0?e:wi.monitor.defaultLineCount,value:s.value,viewProps:s.viewProps})}},$t=I("grl");class Mh{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"),I("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 vn=we(be,0,t,0,e.width),yi=we(me,c,g,e.height,0);k.push([vn,yi].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=we(this.cursor_.rawValue,0,t,0,e.width),H=we(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")),et(S),S.classList.remove($t("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class Ah{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 Mh(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(we(e.offsetX,0,t.width,0,this.value.rawValue.length))}onGraphPointerDown_(e){this.onGraphPointerMove_(e)}onGraphPointerMove_(e){if(!e.data.point){this.cursor_.rawValue=-1;return}this.cursor_.rawValue=Math.floor(we(e.data.point.x,0,e.data.bounds.width,0,this.value.rawValue.length))}onGraphPointerUp_(){this.cursor_.rawValue=-1}}function yr(s){return"format"in s&&!y(s.format)?s.format:Le(2)}function Sh(s){var e;return s.value.rawValue.length===1?new wr(s.document,{formatter:yr(s.params),value:s.value,viewProps:s.viewProps}):new _r(s.document,{formatter:yr(s.params),lineCount:(e=s.params.lineCount)!==null&&e!==void 0?e:wi.monitor.defaultLineCount,value:s.value,viewProps:s.viewProps})}function Lh(s){var e,t,c;return new Ah(s.document,{formatter:yr(s.params),lineCount:(e=s.params.lineCount)!==null&&e!==void 0?e:wi.monitor.defaultLineCount,props:q.fromObject({maxValue:(t="max"in s.params?s.params.max:null)!==null&&t!==void 0?t:100,minValue:(c="min"in s.params?s.params.min:null)!==null&&c!==void 0?c:0}),value:s.value,viewProps:s.viewProps})}function Bo(s){return"view"in s&&s.view==="graph"}const Vh={id:"monitor-number",type:"monitor",accept:(s,e)=>{if(typeof s!="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:s,params:c}:null},binding:{defaultBufferSize:s=>Bo(s)?64:1,reader:s=>ht},controller:s=>Bo(s.params)?Lh(s):Sh(s)},Dh={id:"monitor-string",type:"monitor",accept:(s,e)=>{if(typeof s!="string")return null;const t=L,c=pe(e,{lineCount:t.optional.number,multiline:t.optional.boolean});return c?{initialValue:s,params:c}:null},binding:{reader:s=>ci},controller:s=>{var e;const t=s.value;return t.rawValue.length>1||"multiline"in s.params&&s.params.multiline?new _r(s.document,{formatter:vt,lineCount:(e=s.params.lineCount)!==null&&e!==void 0?e:wi.monitor.defaultLineCount,value:t,viewProps:s.viewProps}):new wr(s.document,{formatter:vt,value:t,viewProps:s.viewProps})}};function Ih(s,e){var t;const c=s.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=s.binding.reader(k),R=s.binding.constraint?s.binding.constraint(k):void 0,W=te(S(c.initialValue),{constraint:R,equals:s.binding.equals}),H=new Dn({reader:S,target:e.target,value:W,writer:s.binding.writer(k)}),me=g.optional.boolean(e.params.disabled).value,be=g.optional.boolean(e.params.hidden).value,vn=s.controller({constraint:R,document:e.document,initialValue:c.initialValue,params:c.params,value:H.value,viewProps:Ke.create({disabled:me,hidden:be})});return new Oe(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:vn})}function Th(s,e){return e===0?new Ei:new ni(s,e??wi.monitor.defaultInterval)}function Eh(s,e){var t,c,g;const k=L,S=s.accept(e.target.read(),e.params);if(y(S))return null;const R={target:e.target,initialValue:S.initialValue,params:S.params},W=s.binding.reader(R),H=(c=(t=k.optional.number(e.params.bufferSize).value)!==null&&t!==void 0?t:s.binding.defaultBufferSize&&s.binding.defaultBufferSize(S.params))!==null&&c!==void 0?c:1,me=k.optional.number(e.params.interval).value,be=new Bs({reader:W,target:e.target,ticker:Th(e.document,me),value:Oi(H)}),vn=k.optional.boolean(e.params.disabled).value,yi=k.optional.boolean(e.params.hidden).value,xi=s.controller({document:e.document,params:S.params,value:be.value,viewProps:Ke.create({disabled:vn,hidden:yi})});return new tt(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:xi})}class Oh{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??Ih(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??Eh(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??Os(k,{document:e,params:t}),null);if(!c)throw new V({type:"nomatchingview",context:{params:t}});return c}createBladeApi(e){if(e instanceof Oe)return new qn(e);if(e instanceof tt)return new Qn(e);if(e instanceof Ht)return new Sn(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 Bh(){const s=new Oh;return[Rh,fh,wh,xh,ah,nh,th,Wp,Fn,kh,Dh,Vh,ee,Vs,Is,ti].forEach(e=>{s.register(e)}),s}function Nh(s){return Gt.isObject(s)?new Gt(s.x,s.y):new Gt}function Fh(s,e){s.writeProperty("x",e.x),s.writeProperty("y",e.y)}function St(s,e){if(!s)return;const t=[],c=So(s,e);c&&t.push(c);const g=Lo(s);return g&&t.push(g),new nn(t)}function zh(s,e){return new Rt({assembly:Vo,components:[St("x"in s?s.x:void 0,e.x),St("y"in s?s.y:void 0,e.y)]})}function No(s,e){const[t,c]=s?rh(s):[];if(!y(t)||!y(c))return Math.max(Math.abs(t??0),Math.abs(c??0));const g=kt(s);return Math.max(Math.abs(g)*10,Math.abs(e)*10)}function jh(s,e){const t=e instanceof Rt?e.components[0]:void 0,c=e instanceof Rt?e.components[1]:void 0,g=No(t,s.x),k=No(c,s.y);return Math.max(g,k)}function Fo(s,e){return{baseStep:kt(e),constraint:e,textProps:q.fromObject({draggingScale:Mt(e,s),formatter:Le(Nn(e,s))})}}function Uh(s){if(!("y"in s))return!1;const e=s.y;return e&&"inverted"in e?!!e.inverted:!1}const Rh={id:"input-point2d",type:"input",accept:(s,e)=>{if(!Gt.isObject(s))return null;const t=L,c=pe(e,{expanded:t.optional.boolean,picker:t.optional.custom(vi),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:s,params:c}:null},binding:{reader:s=>Nh,constraint:s=>zh(s.params,s.initialValue),equals:Gt.equals,writer:s=>Fh},controller:s=>{const e=s.document,t=s.value,c=s.constraint;if(!(c instanceof Rt))throw V.shouldNeverHappen();const g="expanded"in s.params?s.params.expanded:void 0,k="picker"in s.params?s.params.picker:void 0;return new hh(e,{axes:[Fo(t.rawValue.x,c.components[0]),Fo(t.rawValue.y,c.components[1])],expanded:g??!1,invertsY:Uh(s.params),maxValue:jh(t.rawValue,c),parser:it,pickerLayout:k??"popup",value:t,viewProps:s.viewProps})}};class zo extends o{constructor(e){super(e),this.emitter_=new F,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 jo extends o{constructor(e){super(e),this.emitter_=new F,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 Uo extends o{constructor(e){super(e),this.emitter_=new F,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 Gh=function(){return{id:"list",type:"blade",accept(s){const e=L,t=pe(s,{options:e.required.custom(hn),value:e.required.raw,view:e.required.constant("list"),label:e.optional.string});return t?{params:t}:null},controller(s){const e=new sn(Wi(s.params.options)),t=te(s.params.value,{constraint:e}),c=new rn(s.document,{props:new q({options:e.values.value("options")}),value:t,viewProps:s.viewProps});return new Et(s.document,{blade:s.blade,props:q.fromObject({label:s.params.label}),valueController:c})},api(s){return!(s.controller instanceof Et)||!(s.controller.valueController instanceof rn)?null:new zo(s.controller)}}}();function Kh(s){return s.reduce((e,t)=>Object.assign(e,{[t.presetKey]:t.read()}),{})}function $h(s,e){s.forEach(t=>{const c=e[t.target.presetKey];c!==void 0&&t.writer(t.target,t.reader(c))})}class Xh extends Zn{constructor(e,t){super(e,t)}get element(){return this.controller_.view.element}importPreset(e){const t=this.controller_.rackController.rack.find(Oe).map(c=>c.binding);$h(t,e),this.refresh()}exportPreset(){const e=this.controller_.rackController.rack.find(Oe).map(t=>t.binding.target);return Kh(e)}refresh(){this.controller_.rackController.rack.find(Oe).forEach(e=>{e.binding.read()}),this.controller_.rackController.rack.find(tt).forEach(e=>{e.binding.read()})}}class Yh extends Ln{constructor(e,t){super(e,{expanded:t.expanded,blade:t.blade,props:t.props,root:!0,viewProps:t.viewProps})}}const qh={id:"slider",type:"blade",accept(s){const e=L,t=pe(s,{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(s){var e,t;const c=(e=s.params.value)!==null&&e!==void 0?e:0,g=new Ft({max:s.params.max,min:s.params.min}),k=new Bn(s.document,{baseStep:1,parser:it,sliderProps:new q({maxValue:g.values.value("max"),minValue:g.values.value("min")}),textProps:q.fromObject({draggingScale:Mt(void 0,c),formatter:(t=s.params.format)!==null&&t!==void 0?t:er}),value:te(c,{constraint:g}),viewProps:s.viewProps});return new Et(s.document,{blade:s.blade,props:q.fromObject({label:s.params.label}),valueController:k})},api(s){return!(s.controller instanceof Et)||!(s.controller.valueController instanceof Bn)?null:new jo(s.controller)}},Qh=function(){return{id:"text",type:"blade",accept(s){const e=L,t=pe(s,{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(s){var e;const t=new Tn(s.document,{parser:s.params.parse,props:q.fromObject({formatter:(e=s.params.format)!==null&&e!==void 0?e:c=>String(c)}),value:te(s.params.value),viewProps:s.viewProps});return new Et(s.document,{blade:s.blade,props:q.fromObject({label:s.params.label}),valueController:t})},api(s){return!(s.controller instanceof Et)||!(s.controller.valueController instanceof Tn)?null:new Uo(s.controller)}}}();function Zh(s){const e=s.createElement("div");return e.classList.add(I("dfw")()),s.body&&s.body.appendChild(e),e}function Ro(s,e,t){if(s.querySelector(`style[data-tp-style=${e}]`))return;const c=s.createElement("style");c.dataset.tpStyle=e,c.textContent=t,s.head.appendChild(c)}class Wh extends Xh{constructor(e){var t,c;const g=e??{},k=(t=g.document)!==null&&t!==void 0?t:Xn(),S=Bh(),R=new Yh(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:Zh(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&&Ro(this.document,`plugin-${e.id}`,e.css)}setUpDefaultPlugins_(){Ro(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:[qh,Gh,ti,Qh]})}}const Jh=new r("3.1.9");n.BladeApi=o,n.ButtonApi=z,n.FolderApi=Zn,n.InputBindingApi=qn,n.ListApi=zo,n.MonitorBindingApi=Qn,n.Pane=Wh,n.SeparatorApi=Vi,n.SliderApi=jo,n.TabApi=Ii,n.TabPageApi=ei,n.TextApi=Uo,n.TpChangeEvent=p,n.VERSION=Jh,Object.defineProperty(n,"__esModule",{value:!0})})})(gs,gs.exports);var rp=gs.exports,_s={exports:{}};(function(b,i){(function(n,r){r(i)})(Qr,function(n){class r{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,v,P){super(a),this.value=h,this.presetKey=v,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 _{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 _({type:"alreadydisposed"})}static notBindable(){return new _({type:"notbindable"})}static propertyNotFound(a){return new _({type:"propertynotfound",context:{name:a}})}static shouldNeverHappen(){return new _({type:"shouldneverhappen"})}}class w{constructor(){this.observers_={}}on(a,h){let v=this.observers_[a];return v||(v=this.observers_[a]=[]),v.push({handler:h}),this}off(a,h){const v=this.observers_[a];return v&&(this.observers_[a]=v.filter(P=>P.handler!==h)),this}emit(a,h){const v=this.observers_[a];v&&v.forEach(P=>{P.handler(h)})}}const y="tp";function C(m){return(h,v)=>[y,"-",m,"v",h?`_${h}`:"",v?`-${v}`:""].join("")}function M(m,a){return h=>a(m(h))}function T(m){return m.rawValue}function V(m,a){m.emitter.on("change",M(T,a)),a(m.rawValue)}function O(m,a,h){V(m.value(a),h)}function z(m,a,h){h?m.classList.add(a):m.classList.remove(a)}function F(m,a){return h=>{z(m,a,h)}}function N(m,a){V(m,h=>{a.textContent=h??""})}const I=C("btn");class Q{constructor(a,h){this.element=a.createElement("div"),this.element.classList.add(I()),h.viewProps.bindClassModifiers(this.element);const v=a.createElement("button");v.classList.add(I("b")),h.viewProps.bindDisabled(v),this.element.appendChild(v),this.buttonElement=v;const P=a.createElement("div");P.classList.add(I("t")),N(h.props.value("title"),P),this.buttonElement.appendChild(P)}}class ${constructor(a,h){this.emitter=new w,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 v;this.constraint_=h==null?void 0:h.constraint,this.equals_=(v=h==null?void 0:h.equals)!==null&&v!==void 0?v:(P,A)=>P===A,this.emitter=new w,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 v=h??{forceEmit:!1,last:!0},P=this.constraint_?this.constraint_.constrain(a):a,A=this.rawValue_;this.equals_(A,P)&&!v.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=P,this.emitter.emit("change",{options:v,previousRawValue:A,rawValue:P,sender:this}))}}class j{constructor(a){this.emitter=new w,this.value_=a}get rawValue(){return this.value_}set rawValue(a){this.setRawValue(a,{forceEmit:!1,last:!0})}setRawValue(a,h){const v=h??{forceEmit:!1,last:!0},P=this.value_;P===a&&!v.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.value_=a,this.emitter.emit("change",{options:v,previousRawValue:P,rawValue:this.value_,sender:this}))}}function X(m,a){const h=a==null?void 0:a.constraint,v=a==null?void 0:a.equals;return!h&&!v?new j(m):new U(m,a)}class Y{constructor(a){this.emitter=new w,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((v,P)=>Object.assign(v,{[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 v=Object.keys(a).reduce((P,A)=>{if(P===void 0)return;const E=a[A],G=E(m[A]);return G.succeeded?Object.assign(Object.assign({},P),{[A]:G.value}):void 0},{});return v}function ue(m,a){return m.reduce((h,v)=>{if(h===void 0)return;const P=a(v);if(!(!P.succeeded||P.value===void 0))return[...h,P.value]},[])}function _e(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 v=m(h);return v!==void 0?{succeeded:!0,value:v}:{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(_e(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,v)=>{a.setRawValue(h,v)}]}get emitter(){return this.value_.emitter}get rawValue(){return this.value_.rawValue}}const ce=C("");function se(m,a){return F(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,v,P;const A=a??{};return new ge(Y.createCore({disabled:(h=A.disabled)!==null&&h!==void 0?h:!1,disposed:!1,hidden:(v=A.hidden)!==null&&v!==void 0?v:!1,parent:(P=A.parent)!==null&&P!==void 0?P:null}))}get globalDisabled(){return this.globalDisabled_}bindClassModifiers(a){V(this.globalDisabled_,se(a,"disabled")),O(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 v=a.previousRawValue;v==null||v.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 Ee{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(v=>{h.classList.remove(pe(void 0,De[v]))}),this.blade.get("positions").forEach(v=>{h.classList.add(pe(void 0,De[v]))})}),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 He(m){m.offsetHeight}function yn(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 xn(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 v=a.createElement("div");v.classList.add(lt("l")),O(h.props,"label",A=>{u(A)?this.element.classList.add(lt(void 0,"nol")):(this.element.classList.remove(lt(void 0,"nol")),xn(v),v.appendChild(gt(a,A)))}),this.element.appendChild(v),this.labelElement=v;const P=a.createElement("div");P.classList.add(lt("v")),this.element.appendChild(P),this.valueElement=P}}class et extends Ee{constructor(a,h){const v=h.valueController.viewProps;super(Object.assign(Object.assign({},h),{view:new Fe(a,{props:h.props,viewProps:v}),viewProps:v})),this.props=h.props,this.valueController=h.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class Qt extends Ee{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},v=Y.createCore(h);return new ct(v)}get styleExpanded(){var a;return(a=this.get("temporaryExpanded"))!==null&&a!==void 0?a:this.get("expanded")}get styleHeight(){if(!this.styleExpanded)return"0";const a=this.get("expandedHeight");return this.get("shouldFixHeight")&&!u(a)?`${a}px`:"auto"}bindExpandedClass(a,h){const v=()=>{this.styleExpanded?a.classList.add(h):a.classList.remove(h)};O(this,"expanded",v),O(this,"temporaryExpanded",v)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function Cn(m){return ct.create(m)}function Xn(m,a){let h=0;return yn(a,()=>{m.set("expandedHeight",null),m.set("temporaryExpanded",!0),He(a),h=a.clientHeight,m.set("temporaryExpanded",null),He(a)}),h}function Pn(m,a){a.style.height=m.styleHeight}function kn(m,a){m.value("expanded").emitter.on("beforechange",()=>{m.set("completed",!1),u(m.get("expandedHeight"))&&m.set("expandedHeight",Xn(m,a)),m.set("shouldFixHeight",!0),He(a)}),m.emitter.on("change",()=>{Pn(m,a)}),Pn(m,a),a.addEventListener("transitionend",h=>{h.propertyName==="height"&&m.cleanUpTransition()})}class dt{constructor(a,h){const v=C(h.viewName);this.element=a.createElement("div"),this.element.classList.add(v()),h.viewProps.bindClassModifiers(this.element)}}class _t extends Qt{constructor(a,h){const v=h.valueController.viewProps;super(Object.assign(Object.assign({},h),{value:h.valueController.value,view:new Fe(a,{props:h.props,viewProps:v}),viewProps:v})),this.props=h.props,this.valueController=h.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class Mn{constructor(){this.disabled=!1,this.emitter=new w}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class Zt{constructor(a,h){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=a,this.emitter=new w,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 An{constructor(a){this.constraints=a}constrain(a){return this.constraints.reduce((h,v)=>v.constrain(h),a)}}function mt(m,a){if(m instanceof a)return m;if(m instanceof An){const h=m.constraints.reduce((v,P)=>v||(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"),v=this.values.get("min");return Math.min(Math.max(a,v),h)}}class wt{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"),v=this.values.get("min");let P=a;return u(v)||(P=Math.max(P,v)),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,v=Math.round((a-h)/this.step);return h+v*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,F(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 v=a.createElement("input");v.classList.add(Ce("i")),v.type="text",h.viewProps.bindDisabled(v),this.element.appendChild(v),this.inputElement=v,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 v=a.currentTarget.value,P=this.parser_(v);u(P)||(this.value.rawValue=P),this.view.refresh()}}function Wt(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 ws{constructor(a,h,v){this.left=h,this.operator=a,this.right=v}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 ys={"+":m=>m,"-":m=>-m,"~":m=>~m};class xs{constructor(a,h){this.operator=a,this.expression=h}evaluate(){const a=ys[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 Yn(m){return(a,h)=>{for(let v=0;v<m.length;v++){const P=m[v](a,h);if(P!=="")return P}return""}}function yt(m,a){var h;const v=m.substr(a).match(/^\s+/);return(h=v&&v[0])!==null&&h!==void 0?h:""}function qn(m,a){const h=m.substr(a,1);return h.match(/^[1-9]$/)?h:""}function Oe(m,a){var h;const v=m.substr(a).match(/^[0-9]+/);return(h=v&&v[0])!==null&&h!==void 0?h:""}function Qn(m,a){const h=Oe(m,a);if(h!=="")return h;const v=m.substr(a,1);if(a+=1,v!=="-"&&v!=="+")return"";const P=Oe(m,a);return P===""?"":v+P}function tt(m,a){const h=m.substr(a,1);if(a+=1,h.toLowerCase()!=="e")return"";const v=Qn(m,a);return v===""?"":h+v}function Ai(m,a){const h=m.substr(a,1);if(h==="0")return h;const v=qn(m,a);return a+=v.length,v===""?"":v+Oe(m,a)}function Jt(m,a){const h=Ai(m,a);if(a+=h.length,h==="")return"";const v=m.substr(a,1);if(a+=v.length,v!==".")return"";const P=Oe(m,a);return a+=P.length,h+v+P+tt(m,a)}function Si(m,a){const h=m.substr(a,1);if(a+=h.length,h!==".")return"";const v=Oe(m,a);return a+=v.length,v===""?"":h+v+tt(m,a)}function Sn(m,a){const h=Ai(m,a);return a+=h.length,h===""?"":h+tt(m,a)}const Zn=Yn([Jt,Si,Sn]);function Wn(m,a){var h;const v=m.substr(a).match(/^[01]+/);return(h=v&&v[0])!==null&&h!==void 0?h:""}function Cs(m,a){const h=m.substr(a,2);if(a+=h.length,h.toLowerCase()!=="0b")return"";const v=Wn(m,a);return v===""?"":h+v}function Ps(m,a){var h;const v=m.substr(a).match(/^[0-7]+/);return(h=v&&v[0])!==null&&h!==void 0?h:""}function ks(m,a){const h=m.substr(a,2);if(a+=h.length,h.toLowerCase()!=="0o")return"";const v=Ps(m,a);return v===""?"":h+v}function Ms(m,a){var h;const v=m.substr(a).match(/^[0-9a-f]+/i);return(h=v&&v[0])!==null&&h!==void 0?h:""}function Jn(m,a){const h=m.substr(a,2);if(a+=h.length,h.toLowerCase()!=="0x")return"";const v=Ms(m,a);return v===""?"":h+v}const As=Yn([Cs,ks,Jn]),Ss=Yn([As,Zn]);function Ht(m,a){const h=Ss(m,a);return a+=h.length,h===""?null:{evaluable:new ze(h),cursor:a}}function Li(m,a){const h=m.substr(a,1);if(a+=h.length,h!=="(")return null;const v=Hn(m,a);if(!v)return null;a=v.cursor,a+=yt(m,a).length;const P=m.substr(a,1);return a+=P.length,P!==")"?null:{evaluable:v.evaluable,cursor:a}}function Ls(m,a){var h;return(h=Ht(m,a))!==null&&h!==void 0?h:Li(m,a)}function Ln(m,a){const h=Ls(m,a);if(h)return h;const v=m.substr(a,1);if(a+=v.length,v!=="+"&&v!=="-"&&v!=="~")return null;const P=Ln(m,a);return P?(a=P.cursor,{cursor:a,evaluable:new xs(v,P.evaluable)}):null}function Vs(m,a,h){h+=yt(a,h).length;const v=m.filter(P=>a.startsWith(P,h))[0];return v?(h+=v.length,h+=yt(a,h).length,{cursor:h,operator:v}):null}function Et(m,a){return(h,v)=>{const P=m(h,v);if(!P)return null;v=P.cursor;let A=P.evaluable;for(;;){const E=Vs(a,h,v);if(!E)break;v=E.cursor;const G=m(h,v);if(!G)return null;v=G.cursor,A=new ws(E.operator,A,G.evaluable)}return A?{cursor:v,evaluable:A}:null}}const Vi=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((m,a)=>Et(m,a),Ln);function Hn(m,a){return a+=yt(m,a).length,Vi(m,a)}function Ds(m){const a=Hn(m,0);return!a||a.cursor+yt(m,a.cursor).length!==m.length?null:a.evaluable}function en(m){var a;const h=Ds(m);return(a=h==null?void 0:h.evaluate())!==null&&a!==void 0?a:null}function Is(m){if(typeof m=="number")return m;if(typeof m=="string"){const a=en(m);if(!u(a))return a}return 0}function Se(m){return a=>a.toFixed(Math.max(Math.min(m,20),0))}const Ts=Se(0);function Vn(m){return Ts(m)+"%"}function Di(m){return String(m)}function ei(m,a){for(;m.length<a;)m.push(void 0)}function Ii(m){const a=[];return ei(a,m),X(a)}function Ti(m){const a=m.indexOf(void 0);return a<0?m:m.slice(0,a)}function Es(m,a){const h=[...Ti(m),a];return h.length>m.length?h.splice(0,h.length-m.length):ei(h,m.length),h}function Ot({primary:m,secondary:a,forward:h,backward:v}){let P=!1;function A(E){P||(P=!0,E(),P=!1)}m.emitter.on("change",E=>{A(()=>{a.setRawValue(h(m,a),E.options)})}),a.emitter.on("change",E=>{A(()=>{m.setRawValue(v(m,a),E.options)}),A(()=>{a.setRawValue(h(m,a),E.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 tn(m){return{altKey:m.altKey,downKey:m.key==="ArrowDown",shiftKey:m.shiftKey,upKey:m.key==="ArrowUp"}}function ti(m){return{altKey:m.altKey,downKey:m.key==="ArrowLeft",shiftKey:m.shiftKey,upKey:m.key==="ArrowRight"}}function Os(m){return m==="ArrowUp"||m==="ArrowDown"}function Ei(m){return Os(m)||m==="ArrowLeft"||m==="ArrowRight"}function ni(m,a){var h,v;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-(((v=P&&P.scrollY)!==null&&v!==void 0?v:0)+A.top)}}class Dn{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 w,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 v=this.elem_.ownerDocument;v.addEventListener("mousemove",this.onDocumentMouseMove_),v.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:a.altKey,data:this.computePosition_(ni(a,this.elem_)),sender:this,shiftKey:a.shiftKey})}onDocumentMouseMove_(a){this.emitter.emit("move",{altKey:a.altKey,data:this.computePosition_(ni(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_(ni(a,this.elem_)),sender:this,shiftKey:a.shiftKey})}onTouchStart_(a){a.preventDefault();const h=a.targetTouches.item(0),v=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:a.altKey,data:this.computePosition_(h?{x:h.clientX-v.left,y:h.clientY-v.top}:void 0),sender:this,shiftKey:a.shiftKey}),this.lastTouch_=h}onTouchMove_(a){const h=a.targetTouches.item(0),v=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:a.altKey,data:this.computePosition_(h?{x:h.clientX-v.left,y:h.clientY-v.top}:void 0),sender:this,shiftKey:a.shiftKey}),this.lastTouch_=h}onTouchEnd_(a){var h;const v=(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_(v?{x:v.clientX-P.left,y:v.clientY-P.top}:void 0),sender:this,shiftKey:a.shiftKey})}}function ke(m,a,h,v,P){const A=(m-a)/(h-a);return v+A*(P-v)}function Oi(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 Bs{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 v=a.createElement("input");v.classList.add($e("i")),v.type="text",h.viewProps.bindDisabled(v),this.element.appendChild(v),this.inputElement=v,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 E=a.createElementNS(ye,"path");E.classList.add($e("gb")),A.appendChild(E),this.guideBodyElem_=E;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"),v=h+(h>0?-1:h<0?1:0),P=Nt(-v,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${v+P},0 L${v},4 L${v+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 nn{constructor(a,h){var v;this.originRawValue_=0,this.onInputChange_=this.onInputChange_.bind(this),this.onInputKeyDown_=this.onInputKeyDown_.bind(this),this.onInputKeyUp_=this.onInputKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=h.baseStep,this.parser_=h.parser,this.props=h.props,this.sliderProps_=(v=h.sliderProps)!==null&&v!==void 0?v:null,this.value=h.value,this.viewProps=h.viewProps,this.dragging_=X(null),this.view=new Bs(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 Dn(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,v;const P=(h=this.sliderProps_)===null||h===void 0?void 0:h.get("minValue"),A=(v=this.sliderProps_)===null||v===void 0?void 0:v.get("maxValue");let E=a;return P!==void 0&&(E=Math.max(E,P)),A!==void 0&&(E=Math.min(E,A)),E}onInputChange_(a){const v=a.currentTarget.value,P=this.parser_(v);u(P)||(this.value.rawValue=this.constrainValue_(P)),this.view.refresh()}onInputKeyDown_(a){const h=Bt(this.baseStep_,tn(a));h!==0&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+h),{forceEmit:!1,last:!1})}onInputKeyUp_(a){Bt(this.baseStep_,tn(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 sn(m,a){const h=m&&mt(m,D);return h?Oi(h.step):Math.max(Oi(a),2)}function ii(m){const a=Ft(m);return a??1}function In(m,a){var h;const v=m&&mt(m,D),P=Math.abs((h=v==null?void 0:v.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 Bi(m){const a=Nt(Math.floor(m),0,255).toString(16);return a.length===1?`0${a}`:a}function rn(m,a="#"){const h=zt(m.getComponents("rgb")).map(Bi).join("");return`${a}${h}`}function Ni(m,a="#"){const h=m.getComponents("rgb"),v=[h[0],h[1],h[2],h[3]*255].map(Bi).join("");return`${a}${v}`}function Ns(m,a){const h=Se(a==="float"?2:0);return`rgb(${zt(m.getComponents("rgb",a)).map(P=>h(P)).join(", ")})`}function Fi(m){return a=>Ns(a,m)}function zi(m,a){const h=Se(2),v=Se(a==="float"?2:0);return`rgba(${m.getComponents("rgb",a).map((A,E)=>(E===3?h:v)(A)).join(", ")})`}function Fs(m){return a=>zi(a,m)}function Tn(m){const a=[Se(0),Vn,Vn];return`hsl(${zt(m.getComponents("hsl")).map((v,P)=>a[P](v)).join(", ")})`}function zs(m){const a=[Se(0),Vn,Vn,Se(2)];return`hsla(${m.getComponents("hsl").map((v,P)=>a[P](v)).join(", ")})`}function ji(m,a){const h=Se(a==="float"?2:0),v=["r","g","b"];return`{${zt(m.getComponents("rgb",a)).map((A,E)=>`${v[E]}: ${h(A)}`).join(", ")}}`}function Ui(m){return a=>ji(a,m)}function js(m,a){const h=Se(2),v=Se(a==="float"?2:0),P=["r","g","b","a"];return`{${m.getComponents("rgb",a).map((E,G)=>{const le=G===3?h:v;return`${P[G]}: ${le(E)}`}).join(", ")}}`}function Us(m){return a=>js(a,m)}[...["int","float"].reduce((m,a)=>[...m,{format:{alpha:!1,mode:"rgb",notation:"func",type:a},stringifier:Fi(a)},{format:{alpha:!0,mode:"rgb",notation:"func",type:a},stringifier:Fs(a)},{format:{alpha:!1,mode:"rgb",notation:"object",type:a},stringifier:Ui(a)},{format:{alpha:!0,mode:"rgb",notation:"object",type:a},stringifier:Us(a)}],[])];class Rs{constructor(a){this.components=a.components,this.asm_=a.assembly}constrain(a){const h=this.asm_.toComponents(a).map((v,P)=>{var A,E;return(E=(A=this.components[P])===null||A===void 0?void 0:A.constrain(v))!==null&&E!==void 0?E:v});return this.asm_.fromComponents(h)}}const Ri=C("pndtxt");class Gs{constructor(a,h){this.textViews=h.textViews,this.element=a.createElement("div"),this.element.classList.add(Ri()),this.textViews.forEach(v=>{const P=a.createElement("div");P.classList.add(Ri("a")),P.appendChild(v.element),this.element.appendChild(P)})}}function si(m,a,h){return new nn(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((v,P)=>si(a,h,P)),this.acs_.forEach((v,P)=>{Ot({primary:this.value,secondary:v.value,forward:A=>h.assembly.toComponents(A.rawValue)[P],backward:(A,E)=>{const G=h.assembly.toComponents(A.rawValue);return G[P]=E.rawValue,h.assembly.fromComponents(G)}})}),this.view=new Gs(a,{textViews:this.acs_.map(v=>v.view)})}}function Ks(m,a){return"step"in m&&!u(m.step)?new D(m.step,a):null}function on(m){return!u(m.max)&&!u(m.min)?new pt({max:m.max,min:m.min}):!u(m.max)||!u(m.min)?new wt({max:m.max,min:m.min}):null}const $s={monitor:{defaultInterval:200,defaultLineCount:3}},nt=C("grl");class Gi{constructor(a,h){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=a.createElement("div"),this.element.classList.add(nt()),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 v=a.createElementNS(ye,"svg");v.classList.add(nt("g")),v.style.height=`calc(var(--bld-us) * ${h.lineCount})`,this.element.appendChild(v),this.svgElem_=v;const P=a.createElementNS(ye,"polyline");this.svgElem_.appendChild(P),this.lineElem_=P;const A=a.createElement("div");A.classList.add(nt("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,v=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),rr=ke(qe,v,P,a.height,0);A.push([bt,rr].join(","))}),this.lineElem_.setAttributeNS(null,"points",A.join(" "));const E=this.tooltipElem_,G=this.value.rawValue[this.cursor_.rawValue];if(G===void 0){E.classList.remove(nt("t","a"));return}const le=ke(this.cursor_.rawValue,0,h,0,a.width),Ye=ke(G,v,P,a.height,0);E.style.left=`${le}px`,E.style.top=`${Ye}px`,E.textContent=`${this.formatter_(G)}`,E.classList.contains(nt("t","a"))||(E.classList.add(nt("t","a"),nt("t","in")),He(E),E.classList.remove(nt("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class Xs{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 Gi(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 v=new Dn(this.view.element);v.emitter.on("down",this.onGraphPointerDown_),v.emitter.on("move",this.onGraphPointerMove_),v.emitter.on("up",this.onGraphPointerUp_)}}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(a){const 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 Ki{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 v=h.bind(this);return this.controller_.emitter.on(a,()=>{v(new o(this))}),this}}class Ys extends o{constructor(a,h,v){super(a),this.cell=h,this.index=v}}class $i extends r{constructor(a){super(a),this.cellToApiMap_=new Map,this.emitter_=new w;const h=this.controller_.valueController;h.cellControllers.forEach((v,P)=>{const A=new Ki(v);this.cellToApiMap_.set(v,A),v.emitter.on("click",()=>{const E=P%h.size[0],G=Math.floor(P/h.size[0]);this.emitter_.emit("click",{event:new Ys(this,A,[E,G])})})})}cell(a,h){const v=this.controller_.valueController,P=v.cellControllers[h*v.size[0]+a];return this.cellToApiMap_.get(P)}on(a,h){const v=h.bind(this);return this.emitter_.on(a,P=>{v(P.event)}),this}}class ri{constructor(a,h){this.size=h.size;const[v,P]=this.size,A=[];for(let E=0;E<P;E++)for(let G=0;G<v;G++){const le=new $(a,{props:Y.fromObject(Object.assign({},h.cellConfig(G,E))),viewProps:ge.create()});A.push(le)}this.cellCs_=A,this.viewProps=ge.create(),this.viewProps.handleDispose(()=>{this.cellCs_.forEach(E=>{E.viewProps.set("disposed",!0)})}),this.view=new dt(a,{viewProps:this.viewProps,viewName:"btngrid"}),this.view.element.style.gridTemplateColumns=`repeat(${v}, 1fr)`,this.cellCs_.forEach(E=>{this.view.element.appendChild(E.view.element)})}get cellControllers(){return this.cellCs_}}const qs={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 et(m.document,{blade:m.blade,props:Y.fromObject({label:m.params.label}),valueController:new ri(m.document,{cellConfig:m.params.cells,size:m.params.size})})},api(m){return!(m.controller instanceof et)||!(m.controller.valueController instanceof ri)?null:new $i(m.controller)}};class Xi extends r{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 v=h.bind(this);return this.controller_.valueController.value.emitter.on(a,P=>{v(new l(this,P.rawValue,void 0,P.options.last))}),this}}function Xe(m,a,h){return m*(1-h)+a*h}const Qs=20,Zs=.001,oi=100;function Ws(m,a){let h=.25,v=.5,P=-1;for(let A=0;A<Qs;A++){const[E,G]=m.curve(v);if(v+=h*(E<a?1:-1),P=G,h*=.5,Math.abs(a-E)<Zs)break}return P}class ft{constructor(a=0,h=0,v=1,P=1){this.cache_=[],this.comps_=[a,h,v,P]}get x1(){return this.comps_[0]}get y1(){return this.comps_[1]}get x2(){return this.comps_[2]}get y2(){return this.comps_[3]}static isObject(a){return 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),v=Xe(0,this.y1,a),P=Xe(this.x1,this.x2,a),A=Xe(this.y1,this.y2,a),E=Xe(this.x2,1,a),G=Xe(this.y2,1,a),le=Xe(h,P,a),Ye=Xe(v,A,a),qe=Xe(P,E,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 v=0;v<oi;v++)h.push(Ws(this,ke(v,0,oi-1,0,1)));this.cache_=h}return this.cache_[Math.round(ke(Nt(a,0,1),0,1,0,oi-1))]}toObject(){return[this.comps_[0],this.comps_[1],this.comps_[2],this.comps_[3]]}}const ai={toComponents:m=>m.toObject(),fromComponents:m=>new ft(...m)};function Js(m){const a=Se(2);return`cubic-bezier(${m.toObject().map(v=>a(v)).join(", ")})`}const li=[0,.5,.5,1];function Hs(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(...li);const h=[a[1],a[2],a[3],a[4]].reduce((v,P)=>{if(!v)return null;const A=Number(P);return isNaN(A)?null:[...v,A]},[]);return new ft(...h??li)}const Ct=C("cbz");class Yi{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")),O(h.foldable,"completed",F(this.element,Ct(void 0,"cpl")));const v=a.createElement("div");v.classList.add(Ct("h")),this.element.appendChild(v);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),v.appendChild(P),this.buttonElement=P;const E=a.createElement("div");if(E.classList.add(Ct("t")),v.appendChild(E),this.textElement=E,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 En=C("cbzp");class qi{constructor(a,h){this.element=a.createElement("div"),this.element.classList.add(En()),h.viewProps.bindClassModifiers(this.element);const v=a.createElement("div");v.classList.add(En("g")),this.element.appendChild(v),this.graphElement=v;const P=a.createElement("div");P.classList.add(En("t")),this.element.appendChild(P),this.textElement=P}}function it(m,a){const h=new MutationObserver(P=>{for(const A of P)A.type==="childList"&&A.addedNodes.forEach(E=>{E.contains(E)&&(a(),h.disconnect())})}),v=m.ownerDocument;h.observe(v.body,{attributes:!0,childList:!0,subtree:!0})}const ht=C("cbzg");function er(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 v=a.createElement("div");v.classList.add(ht("p")),this.element.appendChild(v),this.previewElement=v;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 E=a.createElementNS(ye,"polyline");E.classList.add(ht("l")),this.svgElem_.appendChild(E),this.lineElem_=E,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_,er(Ye=>Ye===le,F(G,ht("h","sel"))))}),it(this.element,()=>{this.refresh()})}getVertMargin_(a){return a*.25}valueToPosition(a,h){const v=this.element.getBoundingClientRect(),P=v.width,A=v.height,E=this.getVertMargin_(A);return{x:ke(a,0,1,0,P),y:ke(h,0,1,A-E,E)}}positionToValue(a,h){const v=this.element.getBoundingClientRect(),P=v.width,A=v.height,E=this.getVertMargin_(A);return{x:Nt(ke(a,0,P,0,1),0,1),y:ke(h,A-E,E,0,1)}}refresh(){this.guideElem_.setAttributeNS(null,"d",[0,1].map(A=>{const E=this.valueToPosition(0,A),G=this.valueToPosition(1,A);return[`M ${E.x},${E.y}`,`L ${G.x},${G.y}`].join(" ")}).join(" "));const a=this.value_.rawValue,h=[];let v=0;for(;;){const A=this.valueToPosition(...a.curve(v));if(h.push([A.x,A.y].join(",")),v>=1)break;v=Math.min(v+.05,1)}this.lineElem_.setAttributeNS(null,"points",h.join(" "));const P=a.toObject();[0,1].forEach(A=>{const E=this.valueToPosition(A,A),G=this.valueToPosition(P[A*2],P[A*2+1]),le=this.vectorElems_[A];le.setAttributeNS(null,"x1",String(E.x)),le.setAttributeNS(null,"y1",String(E.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 Qi=24,an=400,ci=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 v=a.createElementNS(ye,"svg");v.classList.add(vt("g")),this.element.appendChild(v),this.svgElem_=v;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_),it(this.element,()=>{this.refresh()})}play(){this.stop(),this.updateMarker_(0),this.markerElem_.classList.add(vt("m","a")),this.startTime_=new Date().getTime()+an,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,v=a.height,P=[],A=this.value_.rawValue;for(let E=0;E<Qi;E++){const G=ke(E,0,Qi-1,0,1),le=ke(A.y(G),0,1,0,h);P.push(`M ${le},0 v${v}`)}this.ticksElem_.setAttributeNS(null,"d",P.join(" "))}onTimer_(){if(this.startTime_===null)return;const a=new Date().getTime()-this.startTime_,h=a/ci;this.updateMarker_(h),a>ci+an&&this.stop(),this.stopped_||requestAnimationFrame(this.onTimer_)}onValueChange_(){this.refresh(),this.play()}}function Ie(m,a,h,v){const P=h-m,A=v-a;return Math.sqrt(P*P+A*A)}function ln(m,a,h,v){const P=Ie(m,a,h,v),A=Math.atan2(v-a,h-m),E=Math.round(A/(Math.PI/4))*Math.PI/4;return{x:m+Math.cos(E)*P,y:a+Math.sin(E)*P}}class st{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 v=new Dn(this.view.element);v.emitter.on("down",this.onPointerDown_),v.emitter.on("move",this.onPointerMove_),v.emitter.on("up",this.onPointerUp_)}refresh(){this.view.refresh(),this.prevView_.refresh(),this.prevView_.play()}updateValue_(a,h,v){const P=this.sel_.rawValue,A=this.value.rawValue.toObject(),E=this.view.positionToValue(a.x,a.y),G=h?ln(P,P,E.x,E.y):E;A[P*2]=G.x,A[P*2+1]=G.y,this.value.setRawValue(new ft(...A),v)}onPointerDown_(a){const h=a.data;if(!h.point)return;const v=this.value.rawValue,P=this.view.valueToPosition(v.x1,v.y1),A=Ie(h.point.x,h.point.y,P.x,P.y),E=this.view.valueToPosition(v.x2,v.y2),G=Ie(h.point.x,h.point.y,E.x,E.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){Ei(a.key)&&a.preventDefault();const h=this.sel_.rawValue,v=this.value.rawValue.toObject();v[h*2]+=Bt(this.baseStep_,ti(a)),v[h*2+1]+=Bt(this.baseStep_,tn(a)),this.value.setRawValue(new ft(...v),{forceEmit:!1,last:!1})}onKeyUp_(a){Ei(a.key)&&a.preventDefault();const h=Bt(this.baseStep_,ti(a)),v=Bt(this.baseStep_,tn(a));h===0&&v===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class Zi{constructor(a,h){this.value=h.value,this.viewProps=h.viewProps,this.view=new qi(a,{viewProps:this.viewProps}),this.gc_=new st(a,{baseStep:h.axis.baseStep,value:this.value,viewProps:this.viewProps}),this.view.graphElement.appendChild(this.gc_.view.element);const v=Object.assign(Object.assign({},h.axis),{constraint:new wt({max:1,min:0})}),P=Object.assign(Object.assign({},h.axis),{constraint:void 0});this.tc_=new xt(a,{assembly:ai,axes:[v,P,v,P],parser:en,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 On{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_=Cn(h.expanded),this.view=new Yi(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:Hs,props:Y.fromObject({formatter:Js}),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 v=new Zi(a,{axis:h.axis,value:this.value,viewProps:this.viewProps});v.allFocusableElements.forEach(P=>{P.addEventListener("blur",this.onPopupChildBlur_),P.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=v,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),V(this.popC_.shows,P=>{P&&v.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),kn(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,v=qt(a);v&&h.contains(v)||v&&v===this.view.buttonElement&&!Ke(h.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(a){this.popC_&&a.key==="Escape"&&(this.popC_.shows.rawValue=!1)}}function pi(){return new Rs({assembly:ai,components:[0,1,2,3].map(m=>m%2===0?new wt({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(v=>v==="inline"||v==="popup"?v:void 0)});return h?{params:h}:null},controller(m){var a,h;const v=new ft(...m.params.value),P=X(v,{constraint:pi(),equals:ft.equals}),A=new On(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 _t(m.document,{blade:m.blade,props:Y.fromObject({label:m.params.label}),valueController:A})},api(m){return!(m.controller instanceof _t)||!(m.controller.valueController instanceof On)?null:new Xi(m.controller)}};class we extends r{begin(){this.controller_.valueController.begin()}end(){this.controller_.valueController.end()}}const hi=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<=hi)return;const a=this.timestamps_.length-hi;this.timestamps_.splice(0,a);const h=this.timestamps_[0].frameCount;this.timestamps_.forEach(v=>{v.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 v=a.createElement("div");v.classList.add(Ut("l")),this.element.appendChild(v);const P=a.createElement("span");P.classList.add(Ut("v")),P.textContent="--",v.appendChild(P),this.valueElement=P;const A=a.createElement("span");A.classList.add(Ut("u")),A.textContent="FPS",v.appendChild(A)}}class ui{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 Xs(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=Es(h,a),this.view.valueElement.textContent=a.toFixed(0)}}}function cn(m,a){return a===0?new Mn:new Zt(m,a??$s.monitor.defaultInterval)}const di={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,v,P;const A=(a=m.params.interval)!==null&&a!==void 0?a:500;return new et(m.document,{blade:m.blade,props:Y.fromObject({label:m.params.label}),valueController:new ui(m.document,{lineCount:(h=m.params.lineCount)!==null&&h!==void 0?h:2,maxValue:(v=m.params.max)!==null&&v!==void 0?v:90,minValue:(P=m.params.min)!==null&&P!==void 0?P:0,ticker:cn(m.document,A),value:Ii(80),viewProps:m.viewProps})})},api(m){return!(m.controller instanceof et)||!(m.controller.valueController instanceof ui)?null:new we(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,v=a.max;return!(typeof h!="number"||typeof v!="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 mi={fromComponents:m=>new Re(m[0],m[1]),toComponents:m=>[m.min,m.max]};class pn{constructor(a){this.edge=a}constrain(a){var h,v,P,A,E,G,le,Ye;if(a.min<=a.max)return new Re((v=(h=this.edge)===null||h===void 0?void 0:h.constrain(a.min))!==null&&v!==void 0?v: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=(E=this.edge)===null||E===void 0?void 0:E.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 fi=C("rsltxt");class Bn{constructor(a,h){this.sliderView_=h.sliderView,this.textView_=h.textView,this.element=a.createElement("div"),this.element.classList.add(fi());const v=a.createElement("div");v.classList.add(fi("s")),v.appendChild(this.sliderView_.element),this.element.appendChild(v);const P=a.createElement("div");P.classList.add(fi("t")),P.appendChild(this.textView_.element),this.element.appendChild(P)}}const Ze=C("rsl");class hn{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 v=a.createElement("div");v.classList.add(Ze("t")),this.element.appendChild(v),this.trackElement=v;const P=a.createElement("div");P.classList.add(Ze("b")),v.appendChild(P),this.barElement=P;const A=["min","max"].map(E=>{const G=a.createElement("div");return G.classList.add(Ze("k"),Ze("k",E)),v.appendChild(G),G});this.knobElements=[A[0],A[1]],this.update_()}valueToX_(a){const h=this.sliderProps_.get("minValue"),v=this.sliderProps_.get("maxValue");return Nt(ke(a,h,v,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((v,P)=>{v.style.left=`${h[P]}%`})}onSliderPropsChange_(){this.update_()}onValueChange_(){this.update_()}}class vi{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 hn(a,{sliderProps:this.sliderProps,value:this.value,viewProps:h.viewProps});const v=new Dn(this.view.trackElement);v.emitter.on("down",this.onPointerDown_),v.emitter.on("move",this.onPointerMove_),v.emitter.on("up",this.onPointerUp_)}ofs_(){return this.grabbing_==="min"?this.view.knobElements[0].getBoundingClientRect().width/2:this.grabbing_==="max"?-this.view.knobElements[1].getBoundingClientRect().width/2:0}valueFromData_(a){if(!a.point)return null;const h=(a.point.x+this.ofs_())/a.bounds.width,v=this.sliderProps.get("minValue"),P=this.sliderProps.get("maxValue");return ke(h,0,1,v,P)}onPointerDown_(a){if(!a.data.point)return;const h=a.data.point.x/a.data.bounds.width,v=this.value.rawValue,P=this.sliderProps.get("minValue"),A=this.sliderProps.get("maxValue"),E=ke(v.min,P,A,0,1),G=ke(v.max,P,A,0,1);Math.abs(G-h)<=.025?this.grabbing_="max":Math.abs(E-h)<=.025?this.grabbing_="min":h>=E&&h<=G?(this.grabbing_="length",this.grabOffset_=ke(h-E,0,1,0,A-P)):h<E?(this.grabbing_="min",this.onPointerMove_(a)):h>G&&(this.grabbing_="max",this.onPointerMove_(a))}applyPointToValue_(a,h){const v=this.valueFromData_(a);if(v===null)return;const P=this.sliderProps.get("minValue"),A=this.sliderProps.get("maxValue");if(this.grabbing_==="min")this.value.setRawValue(new Re(v,this.value.rawValue.max),h);else if(this.grabbing_==="max")this.value.setRawValue(new Re(this.value.rawValue.min,v),h);else if(this.grabbing_==="length"){const E=this.value.rawValue.length;let G=v-this.grabOffset_,le=G+E;G<P?(G=P,le=P+E):le>A&&(G=A-E,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 vi(a,h);const v={baseStep:h.baseStep,constraint:h.constraint,textProps:Y.fromObject({draggingScale:h.draggingScale,formatter:h.formatter})};this.tc_=new xt(a,{assembly:mi,axes:[v,v],parser:h.parser,value:this.value,viewProps:h.viewProps}),this.view=new Bn(a,{sliderView:this.sc_.view,textView:this.tc_.view})}get textController(){return this.tc_}}function Wi(m){return Re.isObject(m)?new Re(m.min,m.max):new Re(0,0)}function bi(m,a){m.writeProperty("max",a.max),m.writeProperty("min",a.min)}function tr(m){const a=[],h=on(m);h&&a.push(h);const v=Ks(m);return v&&a.push(v),new pn(new An(a))}const Nn={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,v=te(a,{format:h.optional.function,max:h.optional.number,min:h.optional.number,step:h.optional.number});return v?{initialValue:new Re(m.min,m.max),params:v}:null},binding:{reader:m=>Wi,constraint:m=>tr(m.params),equals:Re.equals,writer:m=>bi},controller(m){var a;const h=m.value,v=m.constraint;if(!(v instanceof pn))throw _.shouldNeverHappen();const P=(h.rawValue.min+h.rawValue.max)/2,A=(a=m.params.format)!==null&&a!==void 0?a:Se(sn(v.edge,P)),E=v.edge&&mt(v.edge,pt);if(E)return new ut(m.document,{baseStep:ii(v.edge),constraint:v.edge,draggingScale:In(v.edge,P),formatter:A,parser:en,sliderProps:new Y({maxValue:E.values.value("max"),minValue:E.values.value("min")}),value:h,viewProps:m.viewProps});const G={baseStep:ii(v.edge),constraint:v.edge,textProps:Y.fromObject({draggingScale:P,formatter:A})};return new xt(m.document,{assembly:mi,axes:[G,G],parser:en,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,v,P,A){super(a,P,A),this.cell=h,this.index=v}}class un extends r{constructor(a){super(a),this.cellToApiMap_=new Map,this.controller_.valueController.cellControllers.forEach(v=>{const P=new kt(v);this.cellToApiMap_.set(v,P)})}get value(){return this.controller_.value}cell(a,h){const v=this.controller_.valueController,P=v.cellControllers[h*v.size[0]+a];return this.cellToApiMap_.get(P)}on(a,h){const v=h.bind(this);this.controller_.value.emitter.on(a,P=>{const A=this.controller_.valueController,E=A.findCellByValue(P.rawValue);if(!E)return;const G=this.cellToApiMap_.get(E);if(!G)return;const le=A.cellControllers.indexOf(E);v(new Mt(this,G,[le%A.size[0],Math.floor(le/A.size[0])],P.rawValue,void 0))})}}const dn=C("rad");class Ji{constructor(a,h){this.element=a.createElement("div"),this.element.classList.add(dn()),h.viewProps.bindClassModifiers(this.element);const v=a.createElement("label");v.classList.add(dn("l")),this.element.appendChild(v);const P=a.createElement("input");P.classList.add(dn("i")),P.name=h.name,P.type="radio",h.viewProps.bindDisabled(P),v.appendChild(P),this.inputElement=P;const A=a.createElement("div");A.classList.add(dn("b")),v.appendChild(A);const E=a.createElement("div");E.classList.add(dn("t")),A.appendChild(E),O(h.props,"title",G=>{E.textContent=G})}}class Hi{constructor(a,h){this.props=h.props,this.viewProps=h.viewProps,this.view=new Ji(a,{name:h.name,props:this.props,viewProps:this.viewProps})}}class Fn{constructor(a,h){this.cellCs_=[],this.cellValues_=[],this.onCellInputChange_=this.onCellInputChange_.bind(this),this.size=h.size;const[v,P]=this.size;for(let A=0;A<P;A++)for(let E=0;E<v;E++){const G=new Hi(a,{name:h.groupName,props:Y.fromObject(Object.assign({},h.cellConfig(E,A))),viewProps:ge.create()});this.cellCs_.push(G),this.cellValues_.push(h.cellConfig(E,A).value)}this.value=h.value,V(this.value,A=>{const E=this.findCellByValue(A);E&&(E.view.inputElement.checked=!0)}),this.viewProps=ge.create(),this.view=new dt(a,{viewProps:this.viewProps,viewName:"radgrid"}),this.view.element.style.gridTemplateColumns=`repeat(${v}, 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(v=>v===a);return h<0?null:this.cellCs_[h]}onCellInputChange_(a){const h=a.currentTarget,v=this.cellCs_.findIndex(P=>P.view.inputElement===h);v<0||(this.value.rawValue=this.cellValues_[v])}}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 _t(m.document,{blade:m.blade,props:Y.fromObject({label:m.params.label}),valueController:new Fn(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 _t)||!(m.controller.valueController instanceof Fn)?null:new un(m.controller)}}}();function gi(m){return{id:"input-radiogrid",type:"input",accept(a,h){if(!m.isType(a))return null;const v=de,P=te(h,{cells:v.required.function,groupName:v.required.string,size:v.required.array(v.required.number),view:v.required.constant("radiogrid")});return P?{initialValue:a,params:P}:null},binding:m.binding,controller:a=>new Fn(a.document,{cellConfig:a.params.cells,groupName:a.params.groupName,size:a.params.size,value:a.value})}}const nr=gi({isType:m=>typeof m=="number",binding:{reader:m=>Is,writer:m=>Qe}}),ir=gi({isType:m=>typeof m=="string",binding:{reader:m=>Di,writer:m=>Qe}}),sr=gi({isType:m=>typeof m=="boolean",binding:{reader:m=>Wt,writer:m=>Qe}}),es=[qs,Pt,di,Nn,At,sr,nr,ir];n.ButtonCellApi=Ki,n.ButtonGridApi=$i,n.ButtonGridController=ri,n.CubicBezier=ft,n.CubicBezierApi=Xi,n.CubicBezierAssembly=ai,n.CubicBezierController=On,n.CubicBezierGraphController=st,n.CubicBezierGraphView=Le,n.CubicBezierPickerController=Zi,n.CubicBezierPickerView=qi,n.CubicBezierPreviewView=jt,n.CubicBezierView=Yi,n.FpsGraphBladeApi=we,n.FpsGraphController=ui,n.FpsView=Ue,n.Fpswatch=Me,n.Interval=Re,n.IntervalAssembly=mi,n.IntervalConstraint=pn,n.RadioCellApi=kt,n.RadioController=Hi,n.RadioGridApi=un,n.RadioGridController=Fn,n.RadioView=Ji,n.RangeSliderController=vi,n.RangeSliderTextController=ut,n.RangeSliderTextView=Bn,n.RangeSliderView=hn,n.TpRadioGridChangeEvent=Mt,n.plugins=es,Object.defineProperty(n,"__esModule",{value:!0})})})(_s,_s.exports);var io=_s.exports;const op=Go({__proto__:null,default:Cl(io)},[io]);let Yt,Mi;const ap=(b="tres-container")=>{Yt||(Yt=new rp.Pane({container:document.querySelector(b)||void 0}),Yt.registerPlugin(op),Mi=Yt.addBlade({view:"fpsgraph",label:"fpsgraph"}));function i(){Yt&&Yt.dispose()}return x.onMounted(()=>{const{onBeforeLoop:n,onAfterLoop:r,resume:o}=Be.useRenderLoop();o(),n(()=>Mi.begin()),r(()=>Mi.end())}),x.onUnmounted(()=>{i()}),{pane:Yt,fpsGraph:Mi,disposeTweakPane:i}};J.Box=wc,J.Circle=Cc,J.Cone=Mc,J.ContactShadows=ic,J.Dodecahedron=Lc,J.Environment=Vl,J.FBXModel=oc,J.GLTFModel=rc,J.Icosahedron=Ic,J.Levioso=Jl,J.MapControls=mc,J.MeshWobbleMaterial=bc,J.MouseParallax=Ul,J.Octahedron=Oc,J.OrbitControls=lc,J.Plane=zc,J.PointerLockControls=uc,J.Precipitation=Xl,J.Ring=Rc,J.Smoke=Wl,J.Sphere=$c,J.Stars=Gl,J.Tetrahedron=Qc,J.Text3D=Sl,J.Torus=Jc,J.TorusKnot=tp,J.TransformControls=pc,J.Tube=sp,J.useAnimations=Ll,J.useEnvironment=Zr,J.useFBX=no,J.useGLTF=to,J.useMouseParallax=eo,J.useTweakPane=ap,Object.defineProperty(J,Symbol.toStringTag,{value:"Module"})});
|
|
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 Bc=["factor"],Nc=g.defineComponent({__name:"index",props:{speed:{default:1},factor:{default:1}},setup(v){const n=v,i=g.shallowRef(),{extend:r}=Qe();r({MeshWobbleMaterial:Oc});const{onLoop:o}=Te.useRenderLoop();return o(({elapsed:l})=>{i.value&&(i.value.time=l*(n==null?void 0:n.speed))}),(l,p)=>(g.openBlock(),g.createElementBlock("TresMeshWobbleMaterial",g.mergeProps({ref_key:"materialRef",ref:i,factor:l.factor},l.$attrs),null,16,Bc))}}),Fc=["args"],zc=["color"],jc=g.defineComponent({__name:"Box",props:{args:{default:()=>[1,1,1]},color:{default:"#ffffff"}},setup(v,{expose:n}){const i=v,{args:r,color:o}=g.toRefs(i),l=g.shallowRef();return n({value:l}),(p,h)=>(g.openBlock(),g.createElementBlock("TresMesh",g.mergeProps({ref_key:"boxRef",ref:l},p.$attrs),[g.createElementVNode("TresBoxGeometry",{args:g.unref(r)},null,8,Fc),g.renderSlot(p.$slots,"default",{},()=>[g.createElementVNode("TresMeshBasicMaterial",{color:g.unref(o)},null,8,zc)])],16))}}),Rc=["args"],Uc=["color"],Gc=g.defineComponent({__name:"Circle",props:{args:{default:()=>[1,32,0,Math.PI*2]},color:{default:"#ffffff"}},setup(v,{expose:n}){const i=v,{args:r,color:o}=g.toRefs(i),l=g.shallowRef();return n({value:l}),(p,h)=>(g.openBlock(),g.createElementBlock("TresMesh",g.mergeProps({ref_key:"circleRef",ref:l},p.$attrs),[g.createElementVNode("TresCircleGeometry",{args:g.unref(r)},null,8,Rc),g.renderSlot(p.$slots,"default",{},()=>[g.createElementVNode("TresMeshBasicMaterial",{color:g.unref(o)},null,8,Uc)])],16))}}),Kc=["args"],$c=["color"],Xc=g.defineComponent({__name:"Cone",props:{args:{default:()=>[1,1,12,12,!1,0,Math.PI*2]},color:{default:"#ffffff"}},setup(v,{expose:n}){const i=v,{args:r,color:o}=g.toRefs(i),l=g.shallowRef();return n({value:l}),(p,h)=>(g.openBlock(),g.createElementBlock("TresMesh",g.mergeProps({ref_key:"coneRef",ref:l},p.$attrs),[g.createElementVNode("TresConeGeometry",{args:g.unref(r)},null,8,Kc),g.renderSlot(p.$slots,"default",{},()=>[g.createElementVNode("TresMeshBasicMaterial",{color:g.unref(o)},null,8,$c)])],16))}}),Yc=["args"],qc=["color"],Qc=g.defineComponent({__name:"Dodecahedron",props:{args:{default:()=>[1,0]},color:{default:"#ffffff"}},setup(v,{expose:n}){const i=v,{args:r,color:o}=g.toRefs(i),l=g.shallowRef();return n({value:l}),(p,h)=>(g.openBlock(),g.createElementBlock("TresMesh",g.mergeProps({ref_key:"dodecahedronRef",ref:l},p.$attrs),[g.createElementVNode("TresDodecahedronGeometry",{args:g.unref(r)},null,8,Yc),g.renderSlot(p.$slots,"default",{},()=>[g.createElementVNode("TresMeshBasicMaterial",{color:g.unref(o)},null,8,qc)])],16))}}),Wc=["args"],Zc=["color"],Jc=g.defineComponent({__name:"Icosahedron",props:{args:{default:()=>[1,0]},color:{default:"#ffffff"}},setup(v,{expose:n}){const i=v,{args:r,color:o}=g.toRefs(i),l=g.shallowRef();return n({value:l}),(p,h)=>(g.openBlock(),g.createElementBlock("TresMesh",g.mergeProps({ref_key:"icosahedronRef",ref:l},p.$attrs),[g.createElementVNode("TresIcosahedronGeometry",{args:g.unref(r)},null,8,Wc),g.renderSlot(p.$slots,"default",{},()=>[g.createElementVNode("TresMeshBasicMaterial",{color:g.unref(o)},null,8,Zc)])],16))}}),Hc=["args"],ep=["color"],tp=g.defineComponent({__name:"Octahedron",props:{args:{default:()=>[1,0]},color:{default:"#ffffff"}},setup(v,{expose:n}){const i=v,{args:r,color:o}=g.toRefs(i),l=g.shallowRef();return n({value:l}),(p,h)=>(g.openBlock(),g.createElementBlock("TresMesh",g.mergeProps({ref_key:"octahedronRef",ref:l},p.$attrs),[g.createElementVNode("TresOctahedronGeometry",{args:g.unref(r)},null,8,Hc),g.renderSlot(p.$slots,"default",{},()=>[g.createElementVNode("TresMeshBasicMaterial",{color:g.unref(o)},null,8,ep)])],16))}}),np=["rotation"],ip=["args"],sp=["color"],rp=g.defineComponent({__name:"Plane",props:{args:{default:()=>[1,1]},color:{default:"#ffffff"}},setup(v,{expose:n}){const i=v,{args:r,color:o}=g.toRefs(i),l=g.shallowRef();return n({value:l}),(p,h)=>(g.openBlock(),g.createElementBlock("TresMesh",g.mergeProps({ref_key:"planeRef",ref:l,rotation:[-Math.PI/2,0,0]},p.$attrs),[g.createElementVNode("TresPlaneGeometry",{args:g.unref(r)},null,8,ip),g.renderSlot(p.$slots,"default",{},()=>[g.createElementVNode("TresMeshBasicMaterial",{color:g.unref(o)},null,8,sp)])],16,np))}}),op=["args"],ap=["color"],lp=g.defineComponent({__name:"Ring",props:{args:{default:()=>[.5,1,32]},color:{default:"#ffffff"}},setup(v,{expose:n}){const i=v,{args:r,color:o}=g.toRefs(i),l=g.shallowRef();return n({value:l}),(p,h)=>(g.openBlock(),g.createElementBlock("TresMesh",g.mergeProps({ref_key:"ringRef",ref:l},p.$attrs),[g.createElementVNode("TresRingGeometry",{args:g.unref(r)},null,8,op),g.renderSlot(p.$slots,"default",{},()=>[g.createElementVNode("TresMeshBasicMaterial",{color:g.unref(o)},null,8,ap)])],16))}}),cp=["args"],pp=["color"],up=g.defineComponent({__name:"Sphere",props:{args:{default:()=>[2,32,16]},color:{default:"#ffffff"}},setup(v,{expose:n}){const i=v,{args:r,color:o}=g.toRefs(i),l=g.shallowRef();return n({value:l}),(p,h)=>(g.openBlock(),g.createElementBlock("TresMesh",g.mergeProps({ref_key:"sphereRef",ref:l},p.$attrs),[g.createElementVNode("TresSphereGeometry",{args:g.unref(r)},null,8,cp),g.renderSlot(p.$slots,"default",{},()=>[g.createElementVNode("TresMeshBasicMaterial",{color:g.unref(o)},null,8,pp)])],16))}}),hp=["rotation"],dp=["args"],mp=["color"],fp=g.defineComponent({__name:"Tetrahedron",props:{args:{default:()=>[1,0]},color:{default:"#ffffff"}},setup(v,{expose:n}){const i=v,{args:r,color:o}=g.toRefs(i),l=g.shallowRef();return n({value:l}),(p,h)=>(g.openBlock(),g.createElementBlock("TresMesh",g.mergeProps({ref_key:"tetrahedronRef",ref:l,rotation:[-Math.PI/2,0,0]},p.$attrs),[g.createElementVNode("TresTetrahedronGeometry",{args:g.unref(r)},null,8,dp),g.renderSlot(p.$slots,"default",{},()=>[g.createElementVNode("TresMeshBasicMaterial",{color:g.unref(o)},null,8,mp)])],16,hp))}}),vp=["args"],bp=["color"],gp=g.defineComponent({__name:"Torus",props:{args:{default:()=>[1,1,16,80]},color:{default:"#ffffff"}},setup(v,{expose:n}){const i=v,{args:r,color:o}=g.toRefs(i),l=g.shallowRef();return n({value:l}),(p,h)=>(g.openBlock(),g.createElementBlock("TresMesh",g.mergeProps({ref_key:"torusRef",ref:l},p.$attrs),[g.createElementVNode("TresTorusGeometry",{args:g.unref(r)},null,8,vp),g.renderSlot(p.$slots,"default",{},()=>[g.createElementVNode("TresMeshBasicMaterial",{color:g.unref(o)},null,8,bp)])],16))}}),_p=["args"],wp=["color"],yp=g.defineComponent({__name:"TorusKnot",props:{args:{default:()=>[1,.4,64,8]},color:{default:"#ffffff"}},setup(v,{expose:n}){const i=v,{args:r,color:o}=g.toRefs(i),l=g.shallowRef();return n({value:l}),(p,h)=>(g.openBlock(),g.createElementBlock("TresMesh",g.mergeProps({ref_key:"torusKnotRef",ref:l},p.$attrs),[g.createElementVNode("TresTorusKnotGeometry",{args:g.unref(r)},null,8,_p),g.renderSlot(p.$slots,"default",{},()=>[g.createElementVNode("TresMeshBasicMaterial",{color:g.unref(o)},null,8,wp)])],16))}}),xp=["args"],Cp=["color"],Pp=g.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:"#ffffff"}},setup(v,{expose:n}){const i=v,{args:r,color:o}=g.toRefs(i),l=g.shallowRef();return n({value:l}),(p,h)=>(g.openBlock(),g.createElementBlock("TresMesh",g.mergeProps({ref_key:"tubeRef",ref:l},p.$attrs),[g.createElementVNode("TresTubeGeometry",{args:g.unref(r)},null,8,xp),g.renderSlot(p.$slots,"default",{},()=>[g.createElementVNode("TresMeshBasicMaterial",{color:g.unref(o)},null,8,Cp)])],16))}});var Cs={exports:{}};/*! Tweakpane 3.1.10 (c) 2016 cocopon, licensed under the MIT license. */(function(v,n){(function(i,r){r(n)})(eo,function(i){class r{constructor(e){const[t,c]=e.split("-"),_=t.split(".");this.major=parseInt(_[0],10),this.minor=parseInt(_[1],10),this.patch=parseInt(_[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,_){super(e),this.value=t,this.presetKey=c,this.last=_??!0}}class h extends l{constructor(e,t,c){super(e),this.value=t,this.presetKey=c}}class d extends l{constructor(e,t){super(e),this.expanded=t}}class y extends l{constructor(e,t){super(e),this.index=t}}function x(s){return s}function w(s){return s==null}function C(s,e){if(s.length!==e.length)return!1;for(let t=0;t<s.length;t++)if(s[t]!==e[t])return!1;return!0}function M(s,e){let t=s;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:s=>`Invalid parameters for '${s.name}'`,nomatchingcontroller:s=>`No matching controller for '${s.key}'`,nomatchingview:s=>`No matching view for '${JSON.stringify(s.params)}'`,notbindable:()=>"Value is not bindable",propertynotfound:s=>`Property '${s.name}' not found`,shouldneverhappen:()=>"This error should never happen"};class A{static alreadyDisposed(){return new A({type:"alreadydisposed"})}static notBindable(){return new A({type:"notbindable"})}static propertyNotFound(e){return new A({type:"propertynotfound",context:{name:e}})}static shouldNeverHappen(){return new A({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 L{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(!L.isBindable(c))throw A.notBindable();if(!(e in c))throw A.propertyNotFound(e);c[e]=t}}class z 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 R{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(_=>_.handler!==t)),this}emit(e,t){const c=this.observers_[e];c&&c.forEach(_=>{_.handler(t)})}}const N="tp";function I(s){return(t,c)=>[N,"-",s,"v",t?`_${t}`:"",c?`-${c}`:""].join("")}function O(s,e){return t=>e(s(t))}function F(s){return s.rawValue}function G(s,e){s.emitter.on("change",O(F,e)),e(s.rawValue)}function B(s,e,t){G(s.value(e),t)}function K(s,e,t){t?s.classList.add(e):s.classList.remove(e)}function $(s,e){return t=>{K(s,e,t)}}function q(s,e){G(s,t=>{e.textContent=t??""})}const se=I("btn");class he{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(se()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("button");c.classList.add(se("b")),t.viewProps.bindDisabled(c),this.element.appendChild(c),this.buttonElement=c;const _=e.createElement("div");_.classList.add(se("t")),q(t.props.value("title"),_),this.buttonElement.appendChild(_)}}class ie{constructor(e,t){this.emitter=new R,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new he(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:(_,k)=>_===k,this.emitter=new R,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},_=this.constraint_?this.constraint_.constrain(e):e,k=this.rawValue_;this.equals_(k,_)&&!c.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=_,this.emitter.emit("change",{options:c,previousRawValue:k,rawValue:_,sender:this}))}}class pe{constructor(e){this.emitter=new R,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},_=this.value_;_===e&&!c.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.value_=e,this.emitter.emit("change",{options:c,previousRawValue:_,rawValue:this.value_,sender:this}))}}function te(s,e){const t=e==null?void 0:e.constraint,c=e==null?void 0:e.equals;return!t&&!c?new pe(s):new fe(s,e)}class W{constructor(e){this.emitter=new R,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,_)=>Object.assign(c,{[_]:te(e[_])}),{})}static fromObject(e){const t=this.createCore(e);return new W(t)}get(e){return this.valMap_[e].rawValue}set(e,t){this.valMap_[e].rawValue=t}value(e){return this.valMap_[e]}}function Pe(s,e){const c=Object.keys(e).reduce((_,k)=>{if(_===void 0)return;const V=e[k],X=V(s[k]);return X.succeeded?Object.assign(Object.assign({},_),{[k]:X.value}):void 0},{});return c}function be(s,e){return s.reduce((t,c)=>{if(t===void 0)return;const _=e(c);if(!(!_.succeeded||_.value===void 0))return[...t,_.value]},[])}function de(s){return s===null?!1:typeof s=="object"}function oe(s){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=s(t);return c!==void 0?{succeeded:!0,value:c}:{succeeded:!1,value:void 0}}}function _e(s){return{custom:e=>oe(e)(s),boolean:oe(e=>typeof e=="boolean"?e:void 0)(s),number:oe(e=>typeof e=="number"?e:void 0)(s),string:oe(e=>typeof e=="string"?e:void 0)(s),function:oe(e=>typeof e=="function"?e:void 0)(s),constant:e=>oe(t=>t===e?e:void 0)(s),raw:oe(e=>e)(s),object:e=>oe(t=>{if(de(t))return Pe(t,e)})(s),array:e=>oe(t=>{if(Array.isArray(t))return be(t,e)})(s)}}const D={optional:_e(!0),required:_e(!1)};function me(s,e){const t=D.required.object(e)(s);return t.succeeded?t.value:void 0}function Ie(s){console.warn([`Missing '${s.key}' of ${s.target} in ${s.place}.`,"Please rebuild plugins with the latest core package."].join(" "))}function Be(s){return s&&s.parentElement&&s.parentElement.removeChild(s),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=I("");function kn(s,e){return $(s,et(void 0,e))}class Ke extends W{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,_;const k=e??{};return new Ke(W.createCore({disabled:(t=k.disabled)!==null&&t!==void 0?t:!1,disposed:!1,hidden:(c=k.hidden)!==null&&c!==void 0?c:!1,parent:(_=k.parent)!==null&&_!==void 0?_:null}))}get globalDisabled(){return this.globalDisabled_}bindClassModifiers(e){G(this.globalDisabled_,kn(e,"disabled")),B(this,"hidden",kn(e,"hidden"))}bindDisabled(e){G(this.globalDisabled_,t=>{e.disabled=t})}bindTabIndex(e){G(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 Mn(){return["veryfirst","first","last","verylast"]}const Zt=I(""),ct={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class _t{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",()=>{Mn().forEach(c=>{t.classList.remove(Zt(void 0,ct[c]))}),this.blade.get("positions").forEach(c=>{t.classList.add(Zt(void 0,ct[c]))})}),this.viewProps.handleDispose(()=>{Be(t)})}get parent(){return this.parent_}set parent(e){if(this.parent_=e,!("parent"in this.viewProps.valMap_)){Ie({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(s){s.offsetHeight}function Jt(s,e){const t=s.style.transition;s.style.transition="none",e(),s.style.transition=t}function pt(s){return s.ontouchstart!==void 0}function An(){return globalThis}function Wn(){return An().document}function Sn(s){const e=s.ownerDocument.defaultView;return e&&"document"in e?s.getContext("2d",{willReadFrequently:!0}):null}const Ln={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(s,e){const t=s.createElementNS(Fe,"svg");return t.innerHTML=Ln[e],t}function wt(s,e,t){s.insertBefore(e,s.children[t])}function Vn(s){s.parentElement&&s.parentElement.removeChild(s)}function Ht(s){for(;s.children.length>0;)s.removeChild(s.children[0])}function Dn(s){for(;s.childNodes.length>0;)s.removeChild(s.childNodes[0])}function ft(s){return s.relatedTarget?s.relatedTarget:"explicitOriginalTarget"in s?s.explicitOriginalTarget:null}const ut=I("lbl");function yt(s,e){const t=s.createDocumentFragment();return e.split(`
|
|
91
|
+
`).map(_=>s.createTextNode(_)).forEach((_,k)=>{k>0&&t.appendChild(s.createElement("br")),t.appendChild(_)}),t}class T{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(ut()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(ut("l")),B(t.props,"label",k=>{w(k)?this.element.classList.add(ut(void 0,"nol")):(this.element.classList.remove(ut(void 0,"nol")),Dn(c),c.appendChild(yt(e,k)))}),this.element.appendChild(c),this.labelElement=c;const _=e.createElement("div");_.classList.add(ut("v")),this.element.appendChild(_),this.valueElement=_}}class Q extends _t{constructor(e,t){const c=t.valueController.viewProps;super(Object.assign(Object.assign({},t),{view:new T(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(s){const e=D,t=me(s,{title:e.required.string,view:e.required.constant("button"),label:e.optional.string});return t?{params:t}:null},controller(s){return new Q(s.document,{blade:s.blade,props:W.fromObject({label:s.params.label}),valueController:new ie(s.document,{props:W.fromObject({title:s.params.title}),viewProps:s.viewProps})})},api(s){return!(s.controller instanceof Q)||!(s.controller.valueController instanceof ie)?null:new z(s.controller)}};class ae extends _t{constructor(e){super(e),this.value=e.value}}function Ce(){return new W({positions:te([],{equals:C})})}class Oe extends W{constructor(e){super(e)}static create(e){const t={completed:!0,expanded:e,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null},c=W.createCore(t);return new Oe(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")&&!w(e)?`${e}px`:"auto"}bindExpandedClass(e,t){const c=()=>{this.styleExpanded?e.classList.add(t):e.classList.remove(t)};B(this,"expanded",c),B(this,"temporaryExpanded",c)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function Ot(s,e){let t=0;return Jt(e,()=>{s.set("expandedHeight",null),s.set("temporaryExpanded",!0),tt(e),t=e.clientHeight,s.set("temporaryExpanded",null),tt(e)}),t}function en(s,e){e.style.height=s.styleHeight}function ze(s,e){s.value("expanded").emitter.on("beforechange",()=>{if(s.set("completed",!1),w(s.get("expandedHeight"))){const t=Ot(s,e);t>0&&s.set("expandedHeight",t)}s.set("shouldFixHeight",!0),tt(e)}),s.emitter.on("change",()=>{en(s,e)}),en(s,e),e.addEventListener("transitionend",t=>{t.propertyName==="height"&&s.cleanUpTransition()})}class je extends o{constructor(e,t){super(e),this.rackApi_=t}}function ks(s,e){return s.addBlade(Object.assign(Object.assign({},e),{view:"button"}))}function Ms(s,e){return s.addBlade(Object.assign(Object.assign({},e),{view:"folder"}))}function As(s,e){const t=e??{};return s.addBlade(Object.assign(Object.assign({},t),{view:"separator"}))}function Zn(s,e){return s.addBlade(Object.assign(Object.assign({},e),{view:"tab"}))}class xt{constructor(e){this.emitter=new R,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 A.shouldNeverHappen();const c=t!==void 0?t:this.items_.length;this.items_.splice(c,0,e),this.cache_.add(e);const _=this.extract_(e);_&&(_.emitter.on("add",this.onSubListAdd_),_.emitter.on("remove",this.onSubListRemove_),_.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 Jn extends o{constructor(e){super(e),this.onBindingChange_=this.onBindingChange_.bind(this),this.emitter_=new R,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,_=>{c(_.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 Q{constructor(e,t){super(e,t),this.binding=t.binding}}class Hn extends o{constructor(e){super(e),this.onBindingUpdate_=this.onBindingUpdate_.bind(this),this.emitter_=new R,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,_=>{c(_.event)}),this}refresh(){this.controller_.binding.read()}onBindingUpdate_(e){const t=e.sender.target.read();this.emitter_.emit("update",{event:new h(this,t,this.controller_.binding.target.presetKey)})}}class nt extends Q{constructor(e,t){super(e,t),this.binding=t.binding,this.viewProps.bindDisabled(this.binding.ticker),this.viewProps.handleDispose(()=>{this.binding.dispose()})}}function Vi(s){return s instanceof In?s.apiSet_:s instanceof je?s.rackApi_.apiSet_:null}function tn(s,e){const t=s.find(c=>c.controller_===e);if(!t)throw A.shouldNeverHappen();return t}function Di(s,e,t){if(!L.isBindable(s))throw A.notBindable();return new L(s,e,t)}class In 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 R,this.apiSet_=new xt(Vi),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(_=>{this.setUpApi_(_)})}get children(){return this.controller_.rack.children.map(e=>tn(this.apiSet_,e))}addInput(e,t,c){const _=c??{},k=this.controller_.view.element.ownerDocument,V=this.pool_.createInput(k,Di(e,t,_.presetKey),_),X=new Jn(V);return this.add(X,_.index)}addMonitor(e,t,c){const _=c??{},k=this.controller_.view.element.ownerDocument,V=this.pool_.createMonitor(k,Di(e,t),_),X=new Hn(V);return this.add(X,_.index)}addFolder(e){return Ms(this,e)}addButton(e){return ks(this,e)}addSeparator(e){return As(this,e)}addTab(e){return Zn(this,e)}add(e,t){this.controller_.rack.add(e.controller_,t);const c=this.apiSet_.find(_=>_.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),_=this.pool_.createBladeApi(c);return this.add(_,e.index)}on(e,t){const c=t.bind(this);return this.emitter_.on(e,_=>{c(_.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=tn(this.apiSet_,e.bladeController);this.apiSet_.remove(t)}}onRackInputChange_(e){const t=e.bladeController;if(t instanceof Ne){const c=tn(this.apiSet_,t),_=t.binding;this.emitter_.emit("change",{event:new p(c,_.target.read(),_.target.presetKey,e.options.last)})}else if(t instanceof ae){const c=tn(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 A.shouldNeverHappen();const t=tn(this.apiSet_,e.bladeController),c=e.bladeController.binding;this.emitter_.emit("update",{event:new h(t,c.target.read(),c.target.presetKey)})}}class ei extends je{constructor(e,t){super(e,new In(e.rackController,t)),this.emitter_=new R,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,_=>{c(_.event)}),this}}class ti extends _t{constructor(e){super({blade:e.blade,view:e.view,viewProps:e.rackController.viewProps}),this.rackController=e.rackController}}class Ss{constructor(e,t){const c=I(t.viewName);this.element=e.createElement("div"),this.element.classList.add(c()),t.viewProps.bindClassModifiers(this.element)}}function Ls(s,e){for(let t=0;t<s.length;t++){const c=s[t];if(c instanceof Ne&&c.binding===e)return c}return null}function Vs(s,e){for(let t=0;t<s.length;t++){const c=s[t];if(c instanceof nt&&c.binding===e)return c}return null}function Ds(s,e){for(let t=0;t<s.length;t++){const c=s[t];if(c instanceof ae&&c.value===e)return c}return null}function ni(s){return s instanceof nn?s.rack:s instanceof ti?s.rackController.rack:null}function Is(s){const e=ni(s);return e?e.bcSet_:null}class Ts{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 R,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 xt(Is),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,Ie({key:"parent",target:"BladeController",place:"BladeRack.add"})),this.bcSet_.add(e,t)}remove(e){M(e,"parent")?e.parent=null:(e.parent_=null,Ie({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 ae)c.value.emitter.on("change",this.onChildValueChange_);else{const _=ni(c);if(_){const k=_.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 ae)c.value.emitter.off("change",this.onChildValueChange_);else{const _=ni(c);if(_){const k=_.emitter;k.off("layout",this.onDescendantLayout_),k.off("inputchange",this.onDescendantInputChange_),k.off("monitorupdate",this.onDescendantMonitorUpdate_)}}}updatePositions_(){const e=this.bcSet_.items.filter(_=>!_.viewProps.get("hidden")),t=e[0],c=e[e.length-1];this.bcSet_.items.forEach(_=>{const k=[];_===t&&(k.push("first"),(!this.blade_||this.blade_.get("positions").includes("veryfirst"))&&k.push("veryfirst")),_===c&&(k.push("last"),(!this.blade_||this.blade_.get("positions").includes("verylast"))&&k.push("verylast")),_.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=Ls(this.find(Ne),e.sender);if(!t)throw A.alreadyDisposed();this.emitter.emit("inputchange",{bladeController:t,options:e.options,sender:this})}onChildMonitorUpdate_(e){const t=Vs(this.find(nt),e.sender);if(!t)throw A.alreadyDisposed();this.emitter.emit("monitorupdate",{bladeController:t,sender:this})}onChildValueChange_(e){const t=Ds(this.find(ae),e.sender);if(!t)throw A.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 nn extends _t{constructor(e,t){super(Object.assign(Object.assign({},t),{view:new Ss(e,{viewName:"brk",viewProps:t.viewProps})})),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this);const c=new Ts({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 _=this.rack.children.length-1;_>=0;_--)this.rack.children[_].viewProps.set("disposed",!0)})}onRackAdd_(e){e.isRoot&&wt(this.view.element,e.bladeController.view.element,e.index)}onRackRemove_(e){e.isRoot&&Vn(e.bladeController.view.element)}}const Ii=I("cnt");class Es{constructor(e,t){var c;this.className_=I((c=t.viewName)!==null&&c!==void 0?c:"fld"),this.element=e.createElement("div"),this.element.classList.add(this.className_(),Ii()),t.viewProps.bindClassModifiers(this.element),this.foldable_=t.foldable,this.foldable_.bindExpandedClass(this.element,this.className_(void 0,"expanded")),B(this.foldable_,"completed",$(this.element,this.className_(void 0,"cpl")));const _=e.createElement("button");_.classList.add(this.className_("b")),B(t.props,"title",H=>{w(H)?this.element.classList.add(this.className_(void 0,"not")):this.element.classList.remove(this.className_(void 0,"not"))}),t.viewProps.bindDisabled(_),this.element.appendChild(_),this.buttonElement=_;const k=e.createElement("div");k.classList.add(this.className_("i")),this.element.appendChild(k);const V=e.createElement("div");V.classList.add(this.className_("t")),q(t.props.value("title"),V),this.buttonElement.appendChild(V),this.titleElement=V;const X=e.createElement("div");X.classList.add(this.className_("m")),this.buttonElement.appendChild(X);const J=t.containerElement;J.classList.add(this.className_("c")),this.element.appendChild(J),this.containerElement=J}}class Tn extends ti{constructor(e,t){var c;const _=Oe.create((c=t.expanded)!==null&&c!==void 0?c:!0),k=new nn(e,{blade:t.blade,root:t.root,viewProps:t.viewProps});super(Object.assign(Object.assign({},t),{rackController:k,view:new Es(e,{containerElement:k.view.element,foldable:_,props:t.props,viewName:t.root?"rot":void 0,viewProps:t.viewProps})})),this.onTitleClick_=this.onTitleClick_.bind(this),this.props=t.props,this.foldable=_,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 Os={id:"folder",type:"blade",accept(s){const e=D,t=me(s,{title:e.required.string,view:e.required.constant("folder"),expanded:e.optional.boolean});return t?{params:t}:null},controller(s){return new Tn(s.document,{blade:s.blade,expanded:s.params.expanded,props:W.fromObject({title:s.params.title}),viewProps:s.viewProps})},api(s){return s.controller instanceof Tn?new ei(s.controller,s.pool):null}};class Bt extends ae{constructor(e,t){const c=t.valueController.viewProps;super(Object.assign(Object.assign({},t),{value:t.valueController.value,view:new T(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 Ti extends o{}const ii=I("spr");class Bs{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(ii()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("hr");c.classList.add(ii("r")),this.element.appendChild(c)}}class sn extends _t{constructor(e,t){super(Object.assign(Object.assign({},t),{view:new Bs(e,{viewProps:t.viewProps})}))}}const Ns={id:"separator",type:"blade",accept(s){const t=me(s,{view:D.required.constant("separator")});return t?{params:t}:null},controller(s){return new sn(s.document,{blade:s.blade,viewProps:s.viewProps})},api(s){return s.controller instanceof sn?new Ti(s.controller):null}},Se=I("tbi");class Fs{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Se()),t.viewProps.bindClassModifiers(this.element),B(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 _=e.createElement("div");_.classList.add(Se("t")),q(t.props.value("title"),_),this.buttonElement.appendChild(_),this.titleElement=_}}class En{constructor(e,t){this.emitter=new R,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new Fs(e,{props:t.props,viewProps:t.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class Ei{constructor(e,t){this.onItemClick_=this.onItemClick_.bind(this),this.ic_=new En(e,{props:t.itemProps,viewProps:Ke.create()}),this.ic_.emitter.on("click",this.onItemClick_),this.cc_=new nn(e,{blade:Ce(),viewProps:Ke.create()}),this.props=t.props,B(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 si{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 Oi extends je{constructor(e,t){super(e,new In(e.rackController,t)),this.onPageAdd_=this.onPageAdd_.bind(this),this.onPageRemove_=this.onPageRemove_.bind(this),this.onSelect_=this.onSelect_.bind(this),this.emitter_=new R,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 A.shouldNeverHappen();return t})}addPage(e){const t=this.controller_.view.element.ownerDocument,c=new Ei(t,{itemProps:W.fromObject({selected:!1,title:e.title}),props:W.fromObject({selected:!1})});this.controller_.add(c,e.index);const _=this.pageApiMap_.get(c);if(!_)throw A.shouldNeverHappen();return _}removePage(e){this.controller_.remove(e)}on(e,t){const c=t.bind(this);return this.emitter_.on(e,_=>{c(_.event)}),this}setUpPageApi_(e){const t=this.rackApi_.apiSet_.find(_=>_.controller_===e.contentController);if(!t)throw A.shouldNeverHappen();const c=new si(e,t);this.pageApiMap_.set(e,c)}onPageAdd_(e){this.setUpPageApi_(e.item)}onPageRemove_(e){if(!this.pageApiMap_.get(e.item))throw A.shouldNeverHappen();this.pageApiMap_.delete(e.item)}onSelect_(e){this.emitter_.emit("select",{event:new y(this,e.rawValue)})}}const Bi=-1;class zs{constructor(){this.onItemSelectedChange_=this.onItemSelectedChange_.bind(this),this.empty=te(!0),this.selectedIndex=te(Bi),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=Bi,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,_)=>{c.rawValue=_===t}),this.selectedIndex.rawValue=t}else this.keepSelection_()}}const Nt=I("tab");class Ft{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Nt(),Ii()),t.viewProps.bindClassModifiers(this.element),G(t.empty,$(this.element,Nt(void 0,"nop")));const c=e.createElement("div");c.classList.add(Nt("t")),this.element.appendChild(c),this.itemsElement=c;const _=e.createElement("div");_.classList.add(Nt("i")),this.element.appendChild(_);const k=t.contentsElement;k.classList.add(Nt("c")),this.element.appendChild(k),this.contentsElement=k}}class rn extends ti{constructor(e,t){const c=new nn(e,{blade:t.blade,viewProps:t.viewProps}),_=new zs;super({blade:t.blade,rackController:c,view:new Ft(e,{contentsElement:c.view.element,empty:_.empty,viewProps:t.viewProps})}),this.onPageAdd_=this.onPageAdd_.bind(this),this.onPageRemove_=this.onPageRemove_.bind(this),this.pageSet_=new xt(()=>null),this.pageSet_.emitter.on("add",this.onPageAdd_),this.pageSet_.emitter.on("remove",this.onPageRemove_),this.tab=_}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;Vn(t.itemController.view.element),t.itemController.viewProps.set("parent",null),this.rackController.rack.remove(t.contentController),this.tab.remove(t.props.value("selected"))}}const ri={id:"tab",type:"blade",accept(s){const e=D,t=me(s,{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(s){const e=new rn(s.document,{blade:s.blade,viewProps:s.viewProps});return s.params.pages.forEach(t=>{const c=new Ei(s.document,{itemProps:W.fromObject({selected:!1,title:t.title}),props:W.fromObject({selected:!1})});e.add(c)}),e},api(s){return s.controller instanceof rn?new Oi(s.controller,s.pool):null}};function js(s,e){const t=s.accept(e.params);if(!t)return null;const c=D.optional.boolean(e.params.disabled).value,_=D.optional.boolean(e.params.hidden).value;return s.controller({blade:Ce(),document:e.document,params:Object.assign(Object.assign({},t.params),{disabled:c,hidden:_}),viewProps:Ke.create({disabled:c,hidden:_})})}class Ni{constructor(){this.disabled=!1,this.emitter=new R}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class oi{constructor(e,t){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=e,this.emitter=new R,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 On{constructor(e){this.onValueChange_=this.onValueChange_.bind(this),this.reader=e.reader,this.writer=e.writer,this.emitter=new R,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(s,e){for(;s.length<e;)s.push(void 0)}function Fi(s){const e=[];return ke(e,s),te(e)}function zt(s){const e=s.indexOf(void 0);return e<0?s:s.slice(0,e)}function $e(s,e){const t=[...zt(s),e];return t.length>s.length?t.splice(0,t.length-s.length):ke(t,s.length),t}class Rs{constructor(e){this.onTick_=this.onTick_.bind(this),this.reader_=e.reader,this.target=e.target,this.emitter=new R,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 on{constructor(e){this.constraints=e}constrain(e){return this.constraints.reduce((t,c)=>c.constrain(t),e)}}function We(s,e){if(s instanceof e)return s;if(s instanceof on){const t=s.constraints.reduce((c,_)=>c||(_ instanceof e?_:null),null);if(t)return t}return null}class jt{constructor(e){this.values=W.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 an{constructor(e){this.values=W.fromObject({options:e})}get options(){return this.values.get("options")}constrain(e){const t=this.values.get("options");return t.length===0||t.filter(_=>_.value===e).length>0?e:t[0].value}}class ai{constructor(e){this.values=W.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 _=e;return w(c)||(_=Math.max(_,c)),w(t)||(_=Math.min(_,t)),_}}class Bn{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 Rt=I("lst");class zi{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.props_=t.props,this.element=e.createElement("div"),this.element.classList.add(Rt()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("select");c.classList.add(Rt("s")),t.viewProps.bindDisabled(c),this.element.appendChild(c),this.selectElement=c;const _=e.createElement("div");_.classList.add(Rt("m")),_.appendChild(mt(e,"dropdown")),this.element.appendChild(_),t.value.emitter.on("change",this.onValueChange_),this.value_=t.value,B(this.props_,"options",k=>{Ht(this.selectElement),k.forEach(V=>{const X=e.createElement("option");X.textContent=V.text,this.selectElement.appendChild(X)}),this.update_()})}update_(){const e=this.props_.get("options").map(t=>t.value);this.selectElement.selectedIndex=e.indexOf(this.value_.rawValue)}onValueChange_(){this.update_()}}class ln{constructor(e,t){this.onSelectChange_=this.onSelectChange_.bind(this),this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.view=new zi(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.view.selectElement.addEventListener("change",this.onSelectChange_)}onSelectChange_(e){const t=e.currentTarget;this.value.rawValue=this.props.get("options")[t.selectedIndex].value}}const ji=I("pop");class Us{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(ji()),t.viewProps.bindClassModifiers(this.element),G(t.shows,$(this.element,ji(void 0,"v")))}}class Ri{constructor(e,t){this.shows=te(!1),this.viewProps=t.viewProps,this.view=new Us(e,{shows:this.shows,viewProps:this.viewProps})}}const Ui=I("txt");class Gs{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(Ui()),t.viewProps.bindClassModifiers(this.element),this.props_=t.props,this.props_.emitter.on("change",this.onChange_);const c=e.createElement("input");c.classList.add(Ui("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 Nn{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 Gs(e,{props:t.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(e){const c=e.currentTarget.value,_=this.parser_(c);w(_)||(this.value.rawValue=_),this.view.refresh()}}function Ks(s){return String(s)}function Gi(s){return s==="false"?!1:!!s}function Ki(s){return Ks(s)}class $s{constructor(e){this.text=e}evaluate(){return Number(this.text)}toString(){return this.text}}const Xs={"**":(s,e)=>Math.pow(s,e),"*":(s,e)=>s*e,"/":(s,e)=>s/e,"%":(s,e)=>s%e,"+":(s,e)=>s+e,"-":(s,e)=>s-e,"<<":(s,e)=>s<<e,">>":(s,e)=>s>>e,">>>":(s,e)=>s>>>e,"&":(s,e)=>s&e,"^":(s,e)=>s^e,"|":(s,e)=>s|e};class Ys{constructor(e,t,c){this.left=t,this.operator=e,this.right=c}evaluate(){const e=Xs[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 $i={"+":s=>s,"-":s=>-s,"~":s=>~s};class qs{constructor(e,t){this.operator=e,this.expression=t}evaluate(){const e=$i[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 li(s){return(e,t)=>{for(let c=0;c<s.length;c++){const _=s[c](e,t);if(_!=="")return _}return""}}function Ct(s,e){var t;const c=s.substr(e).match(/^\s+/);return(t=c&&c[0])!==null&&t!==void 0?t:""}function Qs(s,e){const t=s.substr(e,1);return t.match(/^[1-9]$/)?t:""}function cn(s,e){var t;const c=s.substr(e).match(/^[0-9]+/);return(t=c&&c[0])!==null&&t!==void 0?t:""}function Ws(s,e){const t=cn(s,e);if(t!=="")return t;const c=s.substr(e,1);if(e+=1,c!=="-"&&c!=="+")return"";const _=cn(s,e);return _===""?"":c+_}function it(s,e){const t=s.substr(e,1);if(e+=1,t.toLowerCase()!=="e")return"";const c=Ws(s,e);return c===""?"":t+c}function Xi(s,e){const t=s.substr(e,1);if(t==="0")return t;const c=Qs(s,e);return e+=c.length,c===""?"":c+cn(s,e)}function Zs(s,e){const t=Xi(s,e);if(e+=t.length,t==="")return"";const c=s.substr(e,1);if(e+=c.length,c!==".")return"";const _=cn(s,e);return e+=_.length,t+c+_+it(s,e)}function Yi(s,e){const t=s.substr(e,1);if(e+=t.length,t!==".")return"";const c=cn(s,e);return e+=c.length,c===""?"":t+c+it(s,e)}function Js(s,e){const t=Xi(s,e);return e+=t.length,t===""?"":t+it(s,e)}const qi=li([Zs,Yi,Js]);function ci(s,e){var t;const c=s.substr(e).match(/^[01]+/);return(t=c&&c[0])!==null&&t!==void 0?t:""}function Hs(s,e){const t=s.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0b")return"";const c=ci(s,e);return c===""?"":t+c}function Qi(s,e){var t;const c=s.substr(e).match(/^[0-7]+/);return(t=c&&c[0])!==null&&t!==void 0?t:""}function Xe(s,e){const t=s.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0o")return"";const c=Qi(s,e);return c===""?"":t+c}function er(s,e){var t;const c=s.substr(e).match(/^[0-9a-f]+/i);return(t=c&&c[0])!==null&&t!==void 0?t:""}function tr(s,e){const t=s.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0x")return"";const c=er(s,e);return c===""?"":t+c}const pi=li([Hs,Xe,tr]),nr=li([pi,qi]);function vt(s,e){const t=nr(s,e);return e+=t.length,t===""?null:{evaluable:new $s(t),cursor:e}}function ui(s,e){const t=s.substr(e,1);if(e+=t.length,t!=="(")return null;const c=Fn(s,e);if(!c)return null;e=c.cursor,e+=Ct(s,e).length;const _=s.substr(e,1);return e+=_.length,_!==")"?null:{evaluable:c.evaluable,cursor:e}}function ir(s,e){var t;return(t=vt(s,e))!==null&&t!==void 0?t:ui(s,e)}function hi(s,e){const t=ir(s,e);if(t)return t;const c=s.substr(e,1);if(e+=c.length,c!=="+"&&c!=="-"&&c!=="~")return null;const _=hi(s,e);return _?(e=_.cursor,{cursor:e,evaluable:new qs(c,_.evaluable)}):null}function sr(s,e,t){t+=Ct(e,t).length;const c=s.filter(_=>e.startsWith(_,t))[0];return c?(t+=c.length,t+=Ct(e,t).length,{cursor:t,operator:c}):null}function Pt(s,e){return(t,c)=>{const _=s(t,c);if(!_)return null;c=_.cursor;let k=_.evaluable;for(;;){const V=sr(e,t,c);if(!V)break;c=V.cursor;const X=s(t,c);if(!X)return null;c=X.cursor,k=new Ys(V.operator,k,X.evaluable)}return k?{cursor:c,evaluable:k}:null}}const Wi=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((s,e)=>Pt(s,e),hi);function Fn(s,e){return e+=Ct(s,e).length,Wi(s,e)}function Zi(s){const e=Fn(s,0);return!e||e.cursor+Ct(s,e.cursor).length!==s.length?null:e.evaluable}function st(s){var e;const t=Zi(s);return(e=t==null?void 0:t.evaluate())!==null&&e!==void 0?e:null}function ht(s){if(typeof s=="number")return s;if(typeof s=="string"){const e=st(s);if(!w(e))return e}return 0}function rr(s){return String(s)}function Le(s){return e=>e.toFixed(Math.max(Math.min(s,20),0))}const Ji=Le(0);function pn(s){return Ji(s)+"%"}function di(s){return String(s)}function bt(s){return s}function Ut({primary:s,secondary:e,forward:t,backward:c}){let _=!1;function k(V){_||(_=!0,V(),_=!1)}s.emitter.on("change",V=>{k(()=>{e.setRawValue(t(s,e),V.options)})}),e.emitter.on("change",V=>{k(()=>{s.setRawValue(c(s,e),V.options)}),k(()=>{e.setRawValue(t(s,e),V.options)})}),k(()=>{e.setRawValue(t(s,e),{forceEmit:!1,last:!0})})}function Ee(s,e){const t=s*(e.altKey?.1:1)*(e.shiftKey?10:1);return e.upKey?+t:e.downKey?-t:0}function un(s){return{altKey:s.altKey,downKey:s.key==="ArrowDown",shiftKey:s.shiftKey,upKey:s.key==="ArrowUp"}}function rt(s){return{altKey:s.altKey,downKey:s.key==="ArrowLeft",shiftKey:s.shiftKey,upKey:s.key==="ArrowRight"}}function Hi(s){return s==="ArrowUp"||s==="ArrowDown"}function zn(s){return Hi(s)||s==="ArrowLeft"||s==="ArrowRight"}function mi(s,e){var t,c;const _=e.ownerDocument.defaultView,k=e.getBoundingClientRect();return{x:s.pageX-(((t=_&&_.scrollX)!==null&&t!==void 0?t:0)+k.left),y:s.pageY-(((c=_&&_.scrollY)!==null&&c!==void 0?c:0)+k.top)}}class kt{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 R,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_(mi(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onDocumentMouseMove_(e){this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(mi(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_(mi(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_,_=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:e.altKey,data:this.computePosition_(c?{x:c.clientX-_.left,y:c.clientY-_.top}:void 0),sender:this,shiftKey:e.shiftKey})}}function we(s,e,t,c,_){const k=(s-e)/(t-e);return c+k*(_-c)}function fi(s){return String(s.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function Me(s,e,t){return Math.min(Math.max(s,e),t)}function Gt(s,e){return(s%e+e)%e}const Re=I("txt");class vi{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(Re(),Re(void 0,"num")),t.arrayPosition&&this.element.classList.add(Re(void 0,t.arrayPosition)),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("input");c.classList.add(Re("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(Re()),this.inputElement.classList.add(Re("i"));const _=e.createElement("div");_.classList.add(Re("k")),this.element.appendChild(_),this.knobElement=_;const k=e.createElementNS(Fe,"svg");k.classList.add(Re("g")),this.knobElement.appendChild(k);const V=e.createElementNS(Fe,"path");V.classList.add(Re("gb")),k.appendChild(V),this.guideBodyElem_=V;const X=e.createElementNS(Fe,"path");X.classList.add(Re("gh")),k.appendChild(X),this.guideHeadElem_=X;const J=e.createElement("div");J.classList.add(I("tt")()),this.knobElement.appendChild(J),this.tooltipElem_=J,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.refresh()}onDraggingChange_(e){if(e.rawValue===null){this.element.classList.remove(Re(void 0,"drg"));return}this.element.classList.add(Re(void 0,"drg"));const t=e.rawValue/this.props_.get("draggingScale"),c=t+(t>0?-1:t<0?1:0),_=Me(-c,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${c+_},0 L${c},4 L${c+_},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 hn{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 vi(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 _=new kt(this.view.knobElement);_.emitter.on("down",this.onPointerDown_),_.emitter.on("move",this.onPointerMove_),_.emitter.on("up",this.onPointerUp_)}constrainValue_(e){var t,c;const _=(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 V=e;return _!==void 0&&(V=Math.max(V,_)),k!==void 0&&(V=Math.min(V,k)),V}onInputChange_(e){const c=e.currentTarget.value,_=this.parser_(c);w(_)||(this.value.rawValue=this.constrainValue_(_)),this.view.refresh()}onInputKeyDown_(e){const t=Ee(this.baseStep_,un(e));t!==0&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+t),{forceEmit:!1,last:!1})}onInputKeyUp_(e){Ee(this.baseStep_,un(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 bi=I("sld");class Ue{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(bi()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(bi("t")),t.viewProps.bindTabIndex(c),this.element.appendChild(c),this.trackElement=c;const _=e.createElement("div");_.classList.add(bi("k")),this.trackElement.appendChild(_),this.knobElement=_,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.update_()}update_(){const e=Me(we(this.value.rawValue,this.props_.get("minValue"),this.props_.get("maxValue"),0,100),0,100);this.knobElement.style.width=`${e}%`}onChange_(){this.update_()}}class gi{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 Ue(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new kt(this.view.trackElement),this.ptHandler_.emitter.on("down",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("move",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.trackElement.addEventListener("keydown",this.onKeyDown_),this.view.trackElement.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){e.point&&this.value.setRawValue(we(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=Ee(this.baseStep_,rt(e));t!==0&&this.value.setRawValue(this.value.rawValue+t,{forceEmit:!1,last:!1})}onKeyUp_(e){Ee(this.baseStep_,rt(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const dn=I("sldtxt");class _i{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(dn());const c=e.createElement("div");c.classList.add(dn("s")),this.sliderView_=t.sliderView,c.appendChild(this.sliderView_.element),this.element.appendChild(c);const _=e.createElement("div");_.classList.add(dn("t")),this.textView_=t.textView,_.appendChild(this.textView_.element),this.element.appendChild(_)}}class jn{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.sliderC_=new gi(e,{baseStep:t.baseStep,props:t.sliderProps,value:t.value,viewProps:this.viewProps}),this.textC_=new hn(e,{baseStep:t.baseStep,parser:t.parser,props:t.textProps,sliderProps:t.sliderProps,value:t.value,viewProps:t.viewProps}),this.view=new _i(e,{sliderView:this.sliderC_.view,textView:this.textC_.view})}get sliderController(){return this.sliderC_}get textController(){return this.textC_}}function Ze(s,e){s.write(e)}function mn(s){const e=D;if(Array.isArray(s))return e.required.array(e.required.object({text:e.required.string,value:e.required.raw}))(s).value;if(typeof s=="object")return e.required.raw(s).value}function wi(s){if(s==="inline"||s==="popup")return s}function dt(s){const e=D;return e.required.object({max:e.optional.number,min:e.optional.number,step:e.optional.number})(s).value}function es(s){if(Array.isArray(s))return s;const e=[];return Object.keys(s).forEach(t=>{e.push({text:t,value:s[t]})}),e}function yi(s){return w(s)?null:new an(es(s))}function or(s){const e=s?We(s,Bn):null;return e?e.step:null}function Rn(s,e){const t=s&&We(s,Bn);return t?fi(t.step):Math.max(fi(e),2)}function Mt(s){const e=or(s);return e??1}function At(s,e){var t;const c=s&&We(s,Bn),_=Math.abs((t=c==null?void 0:c.step)!==null&&t!==void 0?t:e);return _===0?.1:Math.pow(10,Math.floor(Math.log10(_))-1)}const fn=I("ckb");class vn{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(fn()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("label");c.classList.add(fn("l")),this.element.appendChild(c);const _=e.createElement("input");_.classList.add(fn("i")),_.type="checkbox",c.appendChild(_),this.inputElement=_,t.viewProps.bindDisabled(this.inputElement);const k=e.createElement("div");k.classList.add(fn("w")),c.appendChild(k);const V=mt(e,"check");k.appendChild(V),t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.update_()}update_(){this.inputElement.checked=this.value.rawValue}onValueChange_(){this.update_()}}class ts{constructor(e,t){this.onInputChange_=this.onInputChange_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new vn(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 ns(s){const e=[],t=yi(s.options);return t&&e.push(t),new on(e)}const Un={id:"input-bool",type:"input",accept:(s,e)=>{if(typeof s!="boolean")return null;const c=me(e,{options:D.optional.custom(mn)});return c?{initialValue:s,params:c}:null},binding:{reader:s=>Gi,constraint:s=>ns(s.params),writer:s=>Ze},controller:s=>{const e=s.document,t=s.value,c=s.constraint,_=c&&We(c,an);return _?new ln(e,{props:new W({options:_.values.value("options")}),value:t,viewProps:s.viewProps}):new ts(e,{value:t,viewProps:s.viewProps})}},St=I("col");class xi{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(St()),t.foldable.bindExpandedClass(this.element,St(void 0,"expanded")),B(t.foldable,"completed",$(this.element,St(void 0,"cpl")));const c=e.createElement("div");c.classList.add(St("h")),this.element.appendChild(c);const _=e.createElement("div");_.classList.add(St("s")),c.appendChild(_),this.swatchElement=_;const k=e.createElement("div");if(k.classList.add(St("t")),c.appendChild(k),this.textElement=k,t.pickerLayout==="inline"){const V=e.createElement("div");V.classList.add(St("p")),this.element.appendChild(V),this.pickerElement=V}else this.pickerElement=null}}function ar(s,e,t){const c=Me(s/255,0,1),_=Me(e/255,0,1),k=Me(t/255,0,1),V=Math.max(c,_,k),X=Math.min(c,_,k),J=V-X;let H=0,ve=0;const ge=(X+V)/2;return J!==0&&(ve=J/(1-Math.abs(V+X-1)),c===V?H=(_-k)/J:_===V?H=2+(k-c)/J:H=4+(c-_)/J,H=H/6+(H<0?1:0)),[H*360,ve*100,ge*100]}function lr(s,e,t){const c=(s%360+360)%360,_=Me(e/100,0,1),k=Me(t/100,0,1),V=(1-Math.abs(2*k-1))*_,X=V*(1-Math.abs(c/60%2-1)),J=k-V/2;let H,ve,ge;return c>=0&&c<60?[H,ve,ge]=[V,X,0]:c>=60&&c<120?[H,ve,ge]=[X,V,0]:c>=120&&c<180?[H,ve,ge]=[0,V,X]:c>=180&&c<240?[H,ve,ge]=[0,X,V]:c>=240&&c<300?[H,ve,ge]=[X,0,V]:[H,ve,ge]=[V,0,X],[(H+J)*255,(ve+J)*255,(ge+J)*255]}function cr(s,e,t){const c=Me(s/255,0,1),_=Me(e/255,0,1),k=Me(t/255,0,1),V=Math.max(c,_,k),X=Math.min(c,_,k),J=V-X;let H;J===0?H=0:V===c?H=60*(((_-k)/J%6+6)%6):V===_?H=60*((k-c)/J+2):H=60*((c-_)/J+4);const ve=V===0?0:J/V,ge=V;return[H,ve*100,ge*100]}function is(s,e,t){const c=Gt(s,360),_=Me(e/100,0,1),k=Me(t/100,0,1),V=k*_,X=V*(1-Math.abs(c/60%2-1)),J=k-V;let H,ve,ge;return c>=0&&c<60?[H,ve,ge]=[V,X,0]:c>=60&&c<120?[H,ve,ge]=[X,V,0]:c>=120&&c<180?[H,ve,ge]=[0,V,X]:c>=180&&c<240?[H,ve,ge]=[0,X,V]:c>=240&&c<300?[H,ve,ge]=[X,0,V]:[H,ve,ge]=[V,0,X],[(H+J)*255,(ve+J)*255,(ge+J)*255]}function m(s,e,t){const c=t+e*(100-Math.abs(2*t-100))/200;return[s,c!==0?e*(100-Math.abs(2*t-100))/c:0,t+e*(100-Math.abs(2*t-100))/(2*100)]}function a(s,e,t){const c=100-Math.abs(t*(200-e)/100-100);return[s,c!==0?e*t/c:0,t*(200-e)/(2*100)]}function u(s){return[s[0],s[1],s[2]]}function b(s,e){return[s[0],s[1],s[2],e]}const P={hsl:{hsl:(s,e,t)=>[s,e,t],hsv:m,rgb:lr},hsv:{hsl:a,hsv:(s,e,t)=>[s,e,t],rgb:is},rgb:{hsl:ar,hsv:cr,rgb:(s,e,t)=>[s,e,t]}};function S(s,e){return[e==="float"?1:s==="rgb"?255:360,e==="float"?1:s==="rgb"?255:100,e==="float"?1:s==="rgb"?255:100]}function j(s,e){return s===e?e:Gt(s,e)}function Y(s,e,t){var c;const _=S(e,t);return[e==="rgb"?Me(s[0],0,_[0]):j(s[0],_[0]),Me(s[1],0,_[1]),Me(s[2],0,_[2]),Me((c=s[3])!==null&&c!==void 0?c:1,0,1)]}function ue(s,e,t,c){const _=S(e,t),k=S(e,c);return s.map((V,X)=>V/_[X]*k[X])}function Ye(s,e,t){const c=ue(s,e.mode,e.type,"int"),_=P[e.mode][t.mode](...c);return ue(_,t.mode,"int",t.type)}function qe(s,e){return typeof s!="object"||w(s)?!1:e in s&&typeof s[e]=="number"}class re{static black(e="int"){return new re([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 re(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_,_=t.comps_;for(let k=0;k<c.length;k++)if(c[k]!==_[k])return!1;return!0}constructor(e,t,c="int"){this.mode=t,this.type=c,this.comps_=Y(e,t,c)}getComponents(e,t="int"){return b(Ye(u(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 gt=I("colp");class pr{constructor(e,t){this.alphaViews_=null,this.element=e.createElement("div"),this.element.classList.add(gt()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(gt("hsv"));const _=e.createElement("div");_.classList.add(gt("sv")),this.svPaletteView_=t.svPaletteView,_.appendChild(this.svPaletteView_.element),c.appendChild(_);const k=e.createElement("div");k.classList.add(gt("h")),this.hPaletteView_=t.hPaletteView,k.appendChild(this.hPaletteView_.element),c.appendChild(k),this.element.appendChild(c);const V=e.createElement("div");if(V.classList.add(gt("rgb")),this.textView_=t.textView,V.appendChild(this.textView_.element),this.element.appendChild(V),t.alphaViews){this.alphaViews_={palette:t.alphaViews.palette,text:t.alphaViews.text};const X=e.createElement("div");X.classList.add(gt("a"));const J=e.createElement("div");J.classList.add(gt("ap")),J.appendChild(this.alphaViews_.palette.element),X.appendChild(J);const H=e.createElement("div");H.classList.add(gt("at")),H.appendChild(this.alphaViews_.text.element),X.appendChild(H),this.element.appendChild(X)}}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 Sp(s){return s==="int"?"int":s==="float"?"float":void 0}function ur(s){const e=D;return me(s,{alpha:e.optional.boolean,color:e.optional.object({alpha:e.optional.boolean,type:e.optional.custom(Sp)}),expanded:e.optional.boolean,picker:e.optional.custom(wi)})}function bn(s){return s?.1:1}function gn(s){var e;return(e=s.color)===null||e===void 0?void 0:e.type}function Lp(s,e){return s.alpha===e.alpha&&s.mode===e.mode&&s.notation===e.notation&&s.type===e.type}function ot(s,e){const t=s.match(/^(.+)%$/);return Math.min(t?parseFloat(t[1])*.01*e:parseFloat(s),e)}const Vp={deg:s=>s,grad:s=>s*360/400,rad:s=>s*360/(2*Math.PI),turn:s=>s*360};function uo(s){const e=s.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);if(!e)return parseFloat(s);const t=parseFloat(e[1]),c=e[2];return Vp[c](t)}function ho(s){const e=s.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 mo(s){return e=>{const t=ho(e);return t?new re(t,"rgb",s):null}}function fo(s){const e=s.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 vo(s){return e=>{const t=fo(e);return t?new re(t,"rgb",s):null}}function bo(s){const e=s.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=[uo(e[1]),ot(e[2],100),ot(e[3],100)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function go(s){return e=>{const t=bo(e);return t?new re(t,"hsl",s):null}}function _o(s){const e=s.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=[uo(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 wo(s){return e=>{const t=_o(e);return t?new re(t,"hsl",s):null}}function yo(s){const e=s.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=s.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 Dp(s){const e=yo(s);return e?new re(e,"rgb","int"):null}function xo(s){const e=s.match(/^#?([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(e)return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16),we(parseInt(e[4]+e[4],16),0,255,0,1)];const t=s.match(/^(?:#|0x)?([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16),we(parseInt(t[4],16),0,255,0,1)]:null}function Ip(s){const e=xo(s);return e?new re(e,"rgb","int"):null}function Co(s){const e=s.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 Po(s){return e=>{const t=Co(e);return t?new re(t,"rgb",s):null}}function ko(s){const e=s.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 Mo(s){return e=>{const t=ko(e);return t?new re(t,"rgb",s):null}}const Tp=[{parser:yo,result:{alpha:!1,mode:"rgb",notation:"hex"}},{parser:xo,result:{alpha:!0,mode:"rgb",notation:"hex"}},{parser:ho,result:{alpha:!1,mode:"rgb",notation:"func"}},{parser:fo,result:{alpha:!0,mode:"rgb",notation:"func"}},{parser:bo,result:{alpha:!1,mode:"hsl",notation:"func"}},{parser:_o,result:{alpha:!0,mode:"hsl",notation:"func"}},{parser:Co,result:{alpha:!1,mode:"rgb",notation:"object"}},{parser:ko,result:{alpha:!0,mode:"rgb",notation:"object"}}];function Ep(s){return Tp.reduce((e,{parser:t,result:c})=>e||(t(s)?c:null),null)}function hr(s,e="int"){const t=Ep(s);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 Ao={int:[Dp,Ip,mo("int"),vo("int"),go("int"),wo("int"),Po("int"),Mo("int")],float:[mo("float"),vo("float"),go("float"),wo("float"),Po("float"),Mo("float")]};function Op(s){const e=Ao[s];return t=>{if(typeof t!="string")return re.black(s);const c=e.reduce((_,k)=>_||k(t),null);return c??re.black(s)}}function dr(s){const e=Ao[s];return t=>e.reduce((c,_)=>c||_(t),null)}function So(s){const e=Me(Math.floor(s),0,255).toString(16);return e.length===1?`0${e}`:e}function Lo(s,e="#"){const t=u(s.getComponents("rgb")).map(So).join("");return`${e}${t}`}function mr(s,e="#"){const t=s.getComponents("rgb"),c=[t[0],t[1],t[2],t[3]*255].map(So).join("");return`${e}${c}`}function Vo(s,e){const t=Le(e==="float"?2:0);return`rgb(${u(s.getComponents("rgb",e)).map(_=>t(_)).join(", ")})`}function Bp(s){return e=>Vo(e,s)}function ss(s,e){const t=Le(2),c=Le(e==="float"?2:0);return`rgba(${s.getComponents("rgb",e).map((k,V)=>(V===3?t:c)(k)).join(", ")})`}function Np(s){return e=>ss(e,s)}function Fp(s){const e=[Le(0),pn,pn];return`hsl(${u(s.getComponents("hsl")).map((c,_)=>e[_](c)).join(", ")})`}function zp(s){const e=[Le(0),pn,pn,Le(2)];return`hsla(${s.getComponents("hsl").map((c,_)=>e[_](c)).join(", ")})`}function Do(s,e){const t=Le(e==="float"?2:0),c=["r","g","b"];return`{${u(s.getComponents("rgb",e)).map((k,V)=>`${c[V]}: ${t(k)}`).join(", ")}}`}function jp(s){return e=>Do(e,s)}function Io(s,e){const t=Le(2),c=Le(e==="float"?2:0),_=["r","g","b","a"];return`{${s.getComponents("rgb",e).map((V,X)=>{const J=X===3?t:c;return`${_[X]}: ${J(V)}`}).join(", ")}}`}function Rp(s){return e=>Io(e,s)}const Up=[{format:{alpha:!1,mode:"rgb",notation:"hex",type:"int"},stringifier:Lo},{format:{alpha:!0,mode:"rgb",notation:"hex",type:"int"},stringifier:mr},{format:{alpha:!1,mode:"hsl",notation:"func",type:"int"},stringifier:Fp},{format:{alpha:!0,mode:"hsl",notation:"func",type:"int"},stringifier:zp},...["int","float"].reduce((s,e)=>[...s,{format:{alpha:!1,mode:"rgb",notation:"func",type:e},stringifier:Bp(e)},{format:{alpha:!0,mode:"rgb",notation:"func",type:e},stringifier:Np(e)},{format:{alpha:!1,mode:"rgb",notation:"object",type:e},stringifier:jp(e)},{format:{alpha:!0,mode:"rgb",notation:"object",type:e},stringifier:Rp(e)}],[])];function fr(s){return Up.reduce((e,t)=>e||(Lp(t.format,s)?t.stringifier:null),null)}const Ci=I("apl");class Gp{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(Ci()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);const c=e.createElement("div");c.classList.add(Ci("b")),this.element.appendChild(c);const _=e.createElement("div");_.classList.add(Ci("c")),c.appendChild(_),this.colorElem_=_;const k=e.createElement("div");k.classList.add(Ci("m")),this.element.appendChild(k),this.markerElem_=k;const V=e.createElement("div");V.classList.add(Ci("p")),this.markerElem_.appendChild(V),this.previewElem_=V,this.update_()}update_(){const e=this.value.rawValue,t=e.getComponents("rgb"),c=new re([t[0],t[1],t[2],0],"rgb"),_=new re([t[0],t[1],t[2],255],"rgb"),k=["to right",ss(c),ss(_)];this.colorElem_.style.background=`linear-gradient(${k.join(",")})`,this.previewElem_.style.backgroundColor=ss(e);const V=we(t[3],0,1,0,100);this.markerElem_.style.left=`${V}%`}onValueChange_(){this.update_()}}class Kp{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new Gp(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new kt(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,_=this.value.rawValue,[k,V,X]=_.getComponents("hsv");this.value.setRawValue(new re([k,V,X,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=Ee(bn(!0),rt(e));if(t===0)return;const c=this.value.rawValue,[_,k,V,X]=c.getComponents("hsv");this.value.setRawValue(new re([_,k,V,X+t],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){Ee(bn(!0),rt(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const Gn=I("coltxt");function $p(s){const e=s.createElement("select"),t=[{text:"RGB",value:"rgb"},{text:"HSL",value:"hsl"},{text:"HSV",value:"hsv"}];return e.appendChild(t.reduce((c,_)=>{const k=s.createElement("option");return k.textContent=_.text,k.value=_.value,c.appendChild(k),c},s.createDocumentFragment())),e}class Xp{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Gn()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(Gn("m")),this.modeElem_=$p(e),this.modeElem_.classList.add(Gn("ms")),c.appendChild(this.modeSelectElement),t.viewProps.bindDisabled(this.modeElem_);const _=e.createElement("div");_.classList.add(Gn("mm")),_.appendChild(mt(e,"dropdown")),c.appendChild(_),this.element.appendChild(c);const k=e.createElement("div");k.classList.add(Gn("w")),this.element.appendChild(k),this.textsElem_=k,this.textViews_=t.textViews,this.applyTextViews_(),G(t.colorMode,V=>{this.modeElem_.value=V})}get modeSelectElement(){return this.modeElem_}get textViews(){return this.textViews_}set textViews(e){this.textViews_=e,this.applyTextViews_()}applyTextViews_(){Ht(this.textsElem_);const e=this.element.ownerDocument;this.textViews_.forEach(t=>{const c=e.createElement("div");c.classList.add(Gn("c")),c.appendChild(t.element),this.textsElem_.appendChild(c)})}}function Yp(s){return Le(s==="float"?2:0)}function qp(s,e,t){const c=S(s,e)[t];return new jt({min:0,max:c})}function vr(s,e,t){return new hn(s,{arrayPosition:t===0?"fst":t===3-1?"lst":"mid",baseStep:bn(!1),parser:e.parser,props:W.fromObject({draggingScale:e.colorType==="float"?.01:1,formatter:Yp(e.colorType)}),value:te(0,{constraint:qp(e.colorMode,e.colorType,t)}),viewProps:e.viewProps})}class Qp{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 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 t={colorMode:this.colorMode.rawValue,colorType:this.colorType_,parser:this.parser_,viewProps:this.viewProps},c=[vr(e,t,0),vr(e,t,1),vr(e,t,2)];return c.forEach((_,k)=>{Ut({primary:this.value,secondary:_.value,forward:V=>V.rawValue.getComponents(this.colorMode.rawValue,this.colorType_)[k],backward:(V,X)=>{const J=this.colorMode.rawValue,H=V.rawValue.getComponents(J,this.colorType_);return H[k]=X.rawValue,new re(b(u(H),H[3]),J,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 br=I("hpl");class Wp{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("div");c.classList.add(br("c")),this.element.appendChild(c);const _=e.createElement("div");_.classList.add(br("m")),this.element.appendChild(_),this.markerElem_=_,this.update_()}update_(){const e=this.value.rawValue,[t]=e.getComponents("hsv");this.markerElem_.style.backgroundColor=Vo(new re([t,100,100],"hsv"));const c=we(t,0,360,0,100);this.markerElem_.style.left=`${c}%`}onValueChange_(){this.update_()}}class Zp{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 Wp(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new kt(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;const c=we(Me(e.point.x,0,e.bounds.width),0,e.bounds.width,0,360),_=this.value.rawValue,[,k,V,X]=_.getComponents("hsv");this.value.setRawValue(new re([c,k,V,X],"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=Ee(bn(!1),rt(e));if(t===0)return;const c=this.value.rawValue,[_,k,V,X]=c.getComponents("hsv");this.value.setRawValue(new re([_+t,k,V,X],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){Ee(bn(!1),rt(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const gr=I("svp"),To=64;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(gr()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);const c=e.createElement("canvas");c.height=To,c.width=To,c.classList.add(gr("c")),this.element.appendChild(c),this.canvasElement=c;const _=e.createElement("div");_.classList.add(gr("m")),this.element.appendChild(_),this.markerElem_=_,this.update_()}update_(){const e=Sn(this.canvasElement);if(!e)return;const c=this.value.rawValue.getComponents("hsv"),_=this.canvasElement.width,k=this.canvasElement.height,V=e.getImageData(0,0,_,k),X=V.data;for(let ve=0;ve<k;ve++)for(let ge=0;ge<_;ge++){const _n=we(ge,0,_,0,100),ki=we(ve,0,k,100,0),Mi=is(c[0],_n,ki),rs=(ve*_+ge)*4;X[rs]=Mi[0],X[rs+1]=Mi[1],X[rs+2]=Mi[2],X[rs+3]=255}e.putImageData(V,0,0);const J=we(c[1],0,100,0,100);this.markerElem_.style.left=`${J}%`;const H=we(c[2],0,100,100,0);this.markerElem_.style.top=`${H}%`}onValueChange_(){this.update_()}}class Hp{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 kt(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;const c=we(e.point.x,0,e.bounds.width,0,100),_=we(e.point.y,0,e.bounds.height,100,0),[k,,,V]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new re([k,c,_,V],"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){zn(e.key)&&e.preventDefault();const[t,c,_,k]=this.value.rawValue.getComponents("hsv"),V=bn(!1),X=Ee(V,rt(e)),J=Ee(V,un(e));X===0&&J===0||this.value.setRawValue(new re([t,c+X,_+J,k],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){const t=bn(!1),c=Ee(t,rt(e)),_=Ee(t,un(e));c===0&&_===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class eu{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.hPaletteC_=new Zp(e,{value:this.value,viewProps:this.viewProps}),this.svPaletteC_=new Hp(e,{value:this.value,viewProps:this.viewProps}),this.alphaIcs_=t.supportsAlpha?{palette:new Kp(e,{value:this.value,viewProps:this.viewProps}),text:new hn(e,{parser:st,baseStep:.1,props:W.fromObject({draggingScale:.01,formatter:Le(2)}),value:te(0,{constraint:new jt({min:0,max:1})}),viewProps:this.viewProps})}:null,this.alphaIcs_&&Ut({primary:this.value,secondary:this.alphaIcs_.text.value,forward:c=>c.rawValue.getComponents()[3],backward:(c,_)=>{const k=c.rawValue.getComponents();return k[3]=_.rawValue,new re(k,c.rawValue.mode)}}),this.textC_=new Qp(e,{colorType:t.colorType,parser:st,value:this.value,viewProps:this.viewProps}),this.view=new pr(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 _r=I("colsw");class tu{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(_r()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(_r("sw")),this.element.appendChild(c),this.swatchElem_=c;const _=e.createElement("button");_.classList.add(_r("b")),t.viewProps.bindDisabled(_),this.element.appendChild(_),this.buttonElement=_,this.update_()}update_(){const e=this.value.rawValue;this.swatchElem_.style.backgroundColor=mr(e)}onValueChange_(){this.update_()}}class nu{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new tu(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_=Oe.create(t.expanded),this.swatchC_=new nu(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 Nn(e,{parser:t.parser,props:W.fromObject({formatter:t.formatter}),value:this.value,viewProps:this.viewProps}),this.view=new xi(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 Ri(e,{viewProps:this.viewProps}):null;const _=new eu(e,{colorType:t.colorType,supportsAlpha:t.supportsAlpha,value:this.value,viewProps:this.viewProps});_.view.allFocusableElements.forEach(k=>{k.addEventListener("blur",this.onPopupChildBlur_),k.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=_,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(_.view.element),Ut({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:k=>k.rawValue,backward:(k,V)=>V.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=ft(e);c&&t.contains(c)||c&&c===this.swatchC_.view.buttonElement&&!pt(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 iu(s,e){return re.isColorObject(s)?re.fromObject(s,e):re.black(e)}function su(s){return u(s.getComponents("rgb")).reduce((e,t)=>e<<8|Math.floor(t)&255,0)}function ru(s){return s.getComponents("rgb").reduce((e,t,c)=>{const _=Math.floor(c===3?t*255:t)&255;return e<<8|_},0)>>>0}function ou(s){return new re([s>>16&255,s>>8&255,s&255],"rgb")}function au(s){return new re([s>>24&255,s>>16&255,s>>8&255,we(s&255,0,255,0,1)],"rgb")}function lu(s){return typeof s!="number"?re.black():ou(s)}function cu(s){return typeof s!="number"?re.black():au(s)}function pu(s){const e=fr(s);return e?(t,c)=>{Ze(t,e(c))}:null}function uu(s){const e=s?ru:su;return(t,c)=>{Ze(t,e(c))}}function hu(s,e,t){const c=e.toRgbaObject(t);s.writeProperty("r",c.r),s.writeProperty("g",c.g),s.writeProperty("b",c.b),s.writeProperty("a",c.a)}function du(s,e,t){const c=e.toRgbaObject(t);s.writeProperty("r",c.r),s.writeProperty("g",c.g),s.writeProperty("b",c.b)}function mu(s,e){return(t,c)=>{s?hu(t,c,e):du(t,c,e)}}function yr(s){var e;return!!(s!=null&&s.alpha||!((e=s==null?void 0:s.color)===null||e===void 0)&&e.alpha)}function fu(s){return s?e=>mr(e,"0x"):e=>Lo(e,"0x")}function vu(s){return"color"in s||"view"in s&&s.view==="color"}const bu={id:"input-color-number",type:"input",accept:(s,e)=>{if(typeof s!="number"||!vu(e))return null;const t=ur(e);return t?{initialValue:s,params:t}:null},binding:{reader:s=>yr(s.params)?cu:lu,equals:re.equals,writer:s=>uu(yr(s.params))},controller:s=>{const e=yr(s.params),t="expanded"in s.params?s.params.expanded:void 0,c="picker"in s.params?s.params.picker:void 0;return new wr(s.document,{colorType:"int",expanded:t??!1,formatter:fu(e),parser:dr("int"),pickerLayout:c??"popup",supportsAlpha:e,value:s.value,viewProps:s.viewProps})}};function gu(s){return re.isRgbaColorObject(s)}function _u(s){return e=>iu(e,s)}function wu(s,e){return t=>s?Io(t,e):Do(t,e)}const yu={id:"input-color-object",type:"input",accept:(s,e)=>{if(!re.isColorObject(s))return null;const t=ur(e);return t?{initialValue:s,params:t}:null},binding:{reader:s=>_u(gn(s.params)),equals:re.equals,writer:s=>mu(gu(s.initialValue),gn(s.params))},controller:s=>{var e;const t=re.isRgbaColorObject(s.initialValue),c="expanded"in s.params?s.params.expanded:void 0,_="picker"in s.params?s.params.picker:void 0,k=(e=gn(s.params))!==null&&e!==void 0?e:"int";return new wr(s.document,{colorType:k,expanded:c??!1,formatter:wu(t,k),parser:dr(k),pickerLayout:_??"popup",supportsAlpha:t,value:s.value,viewProps:s.viewProps})}},xu={id:"input-color-string",type:"input",accept:(s,e)=>{if(typeof s!="string"||"view"in e&&e.view==="text")return null;const t=hr(s,gn(e));if(!t||!fr(t))return null;const _=ur(e);return _?{initialValue:s,params:_}:null},binding:{reader:s=>{var e;return Op((e=gn(s.params))!==null&&e!==void 0?e:"int")},equals:re.equals,writer:s=>{const e=hr(s.initialValue,gn(s.params));if(!e)throw A.shouldNeverHappen();const t=pu(e);if(!t)throw A.notBindable();return t}},controller:s=>{const e=hr(s.initialValue,gn(s.params));if(!e)throw A.shouldNeverHappen();const t=fr(e);if(!t)throw A.shouldNeverHappen();const c="expanded"in s.params?s.params.expanded:void 0,_="picker"in s.params?s.params.picker:void 0;return new wr(s.document,{colorType:e.type,expanded:c??!1,formatter:t,parser:dr(e.type),pickerLayout:_??"popup",supportsAlpha:e.alpha,value:s.value,viewProps:s.viewProps})}};class Kt{constructor(e){this.components=e.components,this.asm_=e.assembly}constrain(e){const t=this.asm_.toComponents(e).map((c,_)=>{var k,V;return(V=(k=this.components[_])===null||k===void 0?void 0:k.constrain(c))!==null&&V!==void 0?V:c});return this.asm_.fromComponents(t)}}const Eo=I("pndtxt");class Cu{constructor(e,t){this.textViews=t.textViews,this.element=e.createElement("div"),this.element.classList.add(Eo()),this.textViews.forEach(c=>{const _=e.createElement("div");_.classList.add(Eo("a")),_.appendChild(c.element),this.element.appendChild(_)})}}function Pu(s,e,t){return new hn(s,{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 xr{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.acs_=t.axes.map((c,_)=>Pu(e,t,_)),this.acs_.forEach((c,_)=>{Ut({primary:this.value,secondary:c.value,forward:k=>t.assembly.toComponents(k.rawValue)[_],backward:(k,V)=>{const X=t.assembly.toComponents(k.rawValue);return X[_]=V.rawValue,t.assembly.fromComponents(X)}})}),this.view=new Cu(e,{textViews:this.acs_.map(c=>c.view)})}}function Oo(s,e){return"step"in s&&!w(s.step)?new Bn(s.step,e):null}function Bo(s){return!w(s.max)&&!w(s.min)?new jt({max:s.max,min:s.min}):!w(s.max)||!w(s.min)?new ai({max:s.max,min:s.min}):null}function ku(s){const e=We(s,jt);if(e)return[e.values.get("min"),e.values.get("max")];const t=We(s,ai);return t?[t.minValue,t.maxValue]:[void 0,void 0]}function Mu(s,e){const t=[],c=Oo(s,e);c&&t.push(c);const _=Bo(s);_&&t.push(_);const k=yi(s.options);return k&&t.push(k),new on(t)}const Au={id:"input-number",type:"input",accept:(s,e)=>{if(typeof s!="number")return null;const t=D,c=me(e,{format:t.optional.function,max:t.optional.number,min:t.optional.number,options:t.optional.custom(mn),step:t.optional.number});return c?{initialValue:s,params:c}:null},binding:{reader:s=>ht,constraint:s=>Mu(s.params,s.initialValue),writer:s=>Ze},controller:s=>{var e;const t=s.value,c=s.constraint,_=c&&We(c,an);if(_)return new ln(s.document,{props:new W({options:_.values.value("options")}),value:t,viewProps:s.viewProps});const k=(e="format"in s.params?s.params.format:void 0)!==null&&e!==void 0?e:Le(Rn(c,t.rawValue)),V=c&&We(c,jt);return V?new jn(s.document,{baseStep:Mt(c),parser:st,sliderProps:new W({maxValue:V.values.value("max"),minValue:V.values.value("min")}),textProps:W.fromObject({draggingScale:At(c,t.rawValue),formatter:k}),value:t,viewProps:s.viewProps}):new hn(s.document,{baseStep:Mt(c),parser:st,props:W.fromObject({draggingScale:At(c,t.rawValue),formatter:k}),value:t,viewProps:s.viewProps})}};class $t{constructor(e=0,t=0){this.x=e,this.y=t}getComponents(){return[this.x,this.y]}static isObject(e){if(w(e))return!1;const t=e.x,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 No={toComponents:s=>s.getComponents(),fromComponents:s=>new $t(...s)},Kn=I("p2d");class Su{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Kn()),t.viewProps.bindClassModifiers(this.element),G(t.expanded,$(this.element,Kn(void 0,"expanded")));const c=e.createElement("div");c.classList.add(Kn("h")),this.element.appendChild(c);const _=e.createElement("button");_.classList.add(Kn("b")),_.appendChild(mt(e,"p2dpad")),t.viewProps.bindDisabled(_),c.appendChild(_),this.buttonElement=_;const k=e.createElement("div");if(k.classList.add(Kn("t")),c.appendChild(k),this.textElement=k,t.pickerLayout==="inline"){const V=e.createElement("div");V.classList.add(Kn("p")),this.element.appendChild(V),this.pickerElement=V}else this.pickerElement=null}}const Xt=I("p2dp");class Lu{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(Xt()),t.layout==="popup"&&this.element.classList.add(Xt(void 0,"p")),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("div");c.classList.add(Xt("p")),t.viewProps.bindTabIndex(c),this.element.appendChild(c),this.padElement=c;const _=e.createElementNS(Fe,"svg");_.classList.add(Xt("g")),this.padElement.appendChild(_),this.svgElem_=_;const k=e.createElementNS(Fe,"line");k.classList.add(Xt("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 V=e.createElementNS(Fe,"line");V.classList.add(Xt("ax")),V.setAttributeNS(null,"x1","50%"),V.setAttributeNS(null,"y1","0"),V.setAttributeNS(null,"x2","50%"),V.setAttributeNS(null,"y2","100%"),this.svgElem_.appendChild(V);const X=e.createElementNS(Fe,"line");X.classList.add(Xt("l")),X.setAttributeNS(null,"x1","50%"),X.setAttributeNS(null,"y1","50%"),this.svgElem_.appendChild(X),this.lineElem_=X;const J=e.createElement("div");J.classList.add(Xt("m")),this.padElement.appendChild(J),this.markerElem_=J,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_,_=we(e,-c,+c,0,100),k=we(t,-c,+c,0,100),V=this.invertsY_?100-k:k;this.lineElem_.setAttributeNS(null,"x2",`${_}%`),this.lineElem_.setAttributeNS(null,"y2",`${V}%`),this.markerElem_.style.left=`${_}%`,this.markerElem_.style.top=`${V}%`}onValueChange_(){this.update_()}onFoldableChange_(){this.update_()}}function Fo(s,e,t){return[Ee(e[0],rt(s)),Ee(e[1],un(s))*(t?1:-1)]}class Vu{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 Lu(e,{invertsY:this.invertsY_,layout:t.layout,maxValue:this.maxValue_,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new kt(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_,_=we(e.point.x,0,e.bounds.width,-c,+c),k=we(this.invertsY_?e.bounds.height-e.point.y:e.point.y,0,e.bounds.height,-c,+c);this.value.setRawValue(new $t(_,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){zn(e.key)&&e.preventDefault();const[t,c]=Fo(e,this.baseSteps_,this.invertsY_);t===0&&c===0||this.value.setRawValue(new $t(this.value.rawValue.x+t,this.value.rawValue.y+c),{forceEmit:!1,last:!1})}onPadKeyUp_(e){const[t,c]=Fo(e,this.baseSteps_,this.invertsY_);t===0&&c===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class Du{constructor(e,t){var c,_;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_=Oe.create(t.expanded),this.popC_=t.pickerLayout==="popup"?new Ri(e,{viewProps:this.viewProps}):null;const k=new Vu(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(V=>{V.addEventListener("blur",this.onPopupChildBlur_),V.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=k,this.textC_=new xr(e,{assembly:No,axes:t.axes,parser:t.parser,value:this.value,viewProps:this.viewProps}),this.view=new Su(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_),(_=this.view.buttonElement)===null||_===void 0||_.addEventListener("click",this.onPadButtonClick_),this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),Ut({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:V=>V.rawValue,backward:(V,X)=>X.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=ft(e);c&&t.contains(c)||c&&c===this.view.buttonElement&&!pt(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 $n{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(w(e))return!1;const t=e.x,c=e.y,_=e.z;return!(typeof t!="number"||typeof c!="number"||typeof _!="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 zo={toComponents:s=>s.getComponents(),fromComponents:s=>new $n(...s)};function Iu(s){return $n.isObject(s)?new $n(s.x,s.y,s.z):new $n}function Tu(s,e){s.writeProperty("x",e.x),s.writeProperty("y",e.y),s.writeProperty("z",e.z)}function Eu(s,e){return new Kt({assembly:zo,components:[Lt("x"in s?s.x:void 0,e.x),Lt("y"in s?s.y:void 0,e.y),Lt("z"in s?s.z:void 0,e.z)]})}function Cr(s,e){return{baseStep:Mt(e),constraint:e,textProps:W.fromObject({draggingScale:At(e,s),formatter:Le(Rn(e,s))})}}const Ou={id:"input-point3d",type:"input",accept:(s,e)=>{if(!$n.isObject(s))return null;const t=D,c=me(e,{x:t.optional.custom(dt),y:t.optional.custom(dt),z:t.optional.custom(dt)});return c?{initialValue:s,params:c}:null},binding:{reader:s=>Iu,constraint:s=>Eu(s.params,s.initialValue),equals:$n.equals,writer:s=>Tu},controller:s=>{const e=s.value,t=s.constraint;if(!(t instanceof Kt))throw A.shouldNeverHappen();return new xr(s.document,{assembly:zo,axes:[Cr(e.rawValue.x,t.components[0]),Cr(e.rawValue.y,t.components[1]),Cr(e.rawValue.z,t.components[2])],parser:st,value:e,viewProps:s.viewProps})}};class Xn{constructor(e=0,t=0,c=0,_=0){this.x=e,this.y=t,this.z=c,this.w=_}getComponents(){return[this.x,this.y,this.z,this.w]}static isObject(e){if(w(e))return!1;const t=e.x,c=e.y,_=e.z,k=e.w;return!(typeof t!="number"||typeof c!="number"||typeof _!="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 jo={toComponents:s=>s.getComponents(),fromComponents:s=>new Xn(...s)};function Bu(s){return Xn.isObject(s)?new Xn(s.x,s.y,s.z,s.w):new Xn}function Nu(s,e){s.writeProperty("x",e.x),s.writeProperty("y",e.y),s.writeProperty("z",e.z),s.writeProperty("w",e.w)}function Fu(s,e){return new Kt({assembly:jo,components:[Lt("x"in s?s.x:void 0,e.x),Lt("y"in s?s.y:void 0,e.y),Lt("z"in s?s.z:void 0,e.z),Lt("w"in s?s.w:void 0,e.w)]})}function zu(s,e){return{baseStep:Mt(e),constraint:e,textProps:W.fromObject({draggingScale:At(e,s),formatter:Le(Rn(e,s))})}}const ju={id:"input-point4d",type:"input",accept:(s,e)=>{if(!Xn.isObject(s))return null;const t=D,c=me(e,{x:t.optional.custom(dt),y:t.optional.custom(dt),z:t.optional.custom(dt),w:t.optional.custom(dt)});return c?{initialValue:s,params:c}:null},binding:{reader:s=>Bu,constraint:s=>Fu(s.params,s.initialValue),equals:Xn.equals,writer:s=>Nu},controller:s=>{const e=s.value,t=s.constraint;if(!(t instanceof Kt))throw A.shouldNeverHappen();return new xr(s.document,{assembly:jo,axes:e.rawValue.getComponents().map((c,_)=>zu(c,t.components[_])),parser:st,value:e,viewProps:s.viewProps})}};function Ru(s){const e=[],t=yi(s.options);return t&&e.push(t),new on(e)}const Uu={id:"input-string",type:"input",accept:(s,e)=>{if(typeof s!="string")return null;const c=me(e,{options:D.optional.custom(mn)});return c?{initialValue:s,params:c}:null},binding:{reader:s=>di,constraint:s=>Ru(s.params),writer:s=>Ze},controller:s=>{const e=s.document,t=s.value,c=s.constraint,_=c&&We(c,an);return _?new ln(e,{props:new W({options:_.values.value("options")}),value:t,viewProps:s.viewProps}):new Nn(e,{parser:k=>k,props:W.fromObject({formatter:bt}),value:t,viewProps:s.viewProps})}},Pi={monitor:{defaultInterval:200,defaultLineCount:3}},Ro=I("mll");class Gu{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(Ro()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("textarea");c.classList.add(Ro("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(_=>{_!==void 0&&c.push(this.formatter_(_))}),e.textContent=c.join(`
|
|
92
|
+
`),t&&(e.scrollTop=e.scrollHeight)}onValueUpdate_(){this.update_()}}class Pr{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new Gu(e,{formatter:t.formatter,lineCount:t.lineCount,value:this.value,viewProps:this.viewProps})}}const Uo=I("sgl");class Ku{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(Uo()),t.viewProps.bindClassModifiers(this.element);const c=e.createElement("input");c.classList.add(Uo("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 kr{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new Ku(e,{formatter:t.formatter,value:this.value,viewProps:this.viewProps})}}const $u={id:"monitor-bool",type:"monitor",accept:(s,e)=>{if(typeof s!="boolean")return null;const c=me(e,{lineCount:D.optional.number});return c?{initialValue:s,params:c}:null},binding:{reader:s=>Gi},controller:s=>{var e;return s.value.rawValue.length===1?new kr(s.document,{formatter:Ki,value:s.value,viewProps:s.viewProps}):new Pr(s.document,{formatter:Ki,lineCount:(e=s.params.lineCount)!==null&&e!==void 0?e:Pi.monitor.defaultLineCount,value:s.value,viewProps:s.viewProps})}},Yt=I("grl");class Xu{constructor(e,t){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=e.createElement("div"),this.element.classList.add(Yt()),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(Yt("g")),c.style.height=`calc(var(--bld-us) * ${t.lineCount})`,this.element.appendChild(c),this.svgElem_=c;const _=e.createElementNS(Fe,"polyline");this.svgElem_.appendChild(_),this.lineElem_=_;const k=e.createElement("div");k.classList.add(Yt("t"),I("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"),_=this.props_.get("maxValue"),k=[];this.value.rawValue.forEach((ve,ge)=>{if(ve===void 0)return;const _n=we(ge,0,t,0,e.width),ki=we(ve,c,_,e.height,0);k.push([_n,ki].join(","))}),this.lineElem_.setAttributeNS(null,"points",k.join(" "));const V=this.tooltipElem_,X=this.value.rawValue[this.cursor_.rawValue];if(X===void 0){V.classList.remove(Yt("t","a"));return}const J=we(this.cursor_.rawValue,0,t,0,e.width),H=we(X,c,_,e.height,0);V.style.left=`${J}px`,V.style.top=`${H}px`,V.textContent=`${this.formatter_(X)}`,V.classList.contains(Yt("t","a"))||(V.classList.add(Yt("t","a"),Yt("t","in")),tt(V),V.classList.remove(Yt("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class Yu{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 Xu(e,{cursor:this.cursor_,formatter:t.formatter,lineCount:t.lineCount,props:this.props_,value:this.value,viewProps:this.viewProps}),!pt(e))this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_);else{const c=new kt(this.view.element);c.emitter.on("down",this.onGraphPointerDown_),c.emitter.on("move",this.onGraphPointerMove_),c.emitter.on("up",this.onGraphPointerUp_)}}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(e){const t=this.view.element.getBoundingClientRect();this.cursor_.rawValue=Math.floor(we(e.offsetX,0,t.width,0,this.value.rawValue.length))}onGraphPointerDown_(e){this.onGraphPointerMove_(e)}onGraphPointerMove_(e){if(!e.data.point){this.cursor_.rawValue=-1;return}this.cursor_.rawValue=Math.floor(we(e.data.point.x,0,e.data.bounds.width,0,this.value.rawValue.length))}onGraphPointerUp_(){this.cursor_.rawValue=-1}}function Mr(s){return"format"in s&&!w(s.format)?s.format:Le(2)}function qu(s){var e;return s.value.rawValue.length===1?new kr(s.document,{formatter:Mr(s.params),value:s.value,viewProps:s.viewProps}):new Pr(s.document,{formatter:Mr(s.params),lineCount:(e=s.params.lineCount)!==null&&e!==void 0?e:Pi.monitor.defaultLineCount,value:s.value,viewProps:s.viewProps})}function Qu(s){var e,t,c;return new Yu(s.document,{formatter:Mr(s.params),lineCount:(e=s.params.lineCount)!==null&&e!==void 0?e:Pi.monitor.defaultLineCount,props:W.fromObject({maxValue:(t="max"in s.params?s.params.max:null)!==null&&t!==void 0?t:100,minValue:(c="min"in s.params?s.params.min:null)!==null&&c!==void 0?c:0}),value:s.value,viewProps:s.viewProps})}function Go(s){return"view"in s&&s.view==="graph"}const Wu={id:"monitor-number",type:"monitor",accept:(s,e)=>{if(typeof s!="number")return null;const t=D,c=me(e,{format:t.optional.function,lineCount:t.optional.number,max:t.optional.number,min:t.optional.number,view:t.optional.string});return c?{initialValue:s,params:c}:null},binding:{defaultBufferSize:s=>Go(s)?64:1,reader:s=>ht},controller:s=>Go(s.params)?Qu(s):qu(s)},Zu={id:"monitor-string",type:"monitor",accept:(s,e)=>{if(typeof s!="string")return null;const t=D,c=me(e,{lineCount:t.optional.number,multiline:t.optional.boolean});return c?{initialValue:s,params:c}:null},binding:{reader:s=>di},controller:s=>{var e;const t=s.value;return t.rawValue.length>1||"multiline"in s.params&&s.params.multiline?new Pr(s.document,{formatter:bt,lineCount:(e=s.params.lineCount)!==null&&e!==void 0?e:Pi.monitor.defaultLineCount,value:t,viewProps:s.viewProps}):new kr(s.document,{formatter:bt,value:t,viewProps:s.viewProps})}};function Ju(s,e){var t;const c=s.accept(e.target.read(),e.params);if(w(c))return null;const _=D,k={target:e.target,initialValue:c.initialValue,params:c.params},V=s.binding.reader(k),X=s.binding.constraint?s.binding.constraint(k):void 0,J=te(V(c.initialValue),{constraint:X,equals:s.binding.equals}),H=new On({reader:V,target:e.target,value:J,writer:s.binding.writer(k)}),ve=_.optional.boolean(e.params.disabled).value,ge=_.optional.boolean(e.params.hidden).value,_n=s.controller({constraint:X,document:e.document,initialValue:c.initialValue,params:c.params,value:H.value,viewProps:Ke.create({disabled:ve,hidden:ge})});return new Ne(e.document,{binding:H,blade:Ce(),props:W.fromObject({label:"label"in e.params?(t=_.optional.string(e.params.label).value)!==null&&t!==void 0?t:null:e.target.key}),valueController:_n})}function Hu(s,e){return e===0?new Ni:new oi(s,e??Pi.monitor.defaultInterval)}function eh(s,e){var t,c,_;const k=D,V=s.accept(e.target.read(),e.params);if(w(V))return null;const X={target:e.target,initialValue:V.initialValue,params:V.params},J=s.binding.reader(X),H=(c=(t=k.optional.number(e.params.bufferSize).value)!==null&&t!==void 0?t:s.binding.defaultBufferSize&&s.binding.defaultBufferSize(V.params))!==null&&c!==void 0?c:1,ve=k.optional.number(e.params.interval).value,ge=new Rs({reader:J,target:e.target,ticker:Hu(e.document,ve),value:Fi(H)}),_n=k.optional.boolean(e.params.disabled).value,ki=k.optional.boolean(e.params.hidden).value,Mi=s.controller({document:e.document,params:V.params,value:ge.value,viewProps:Ke.create({disabled:_n,hidden:ki})});return new nt(e.document,{binding:ge,blade:Ce(),props:W.fromObject({label:"label"in e.params?(_=k.optional.string(e.params.label).value)!==null&&_!==void 0?_:null:e.target.key}),valueController:Mi})}class th{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 _=t.read();if(w(_))throw new A({context:{key:t.key},type:"nomatchingcontroller"});const k=this.pluginsMap_.inputs.reduce((V,X)=>V??Ju(X,{document:e,target:t,params:c}),null);if(k)return k;throw new A({context:{key:t.key},type:"nomatchingcontroller"})}createMonitor(e,t,c){const _=this.pluginsMap_.monitors.reduce((k,V)=>k??eh(V,{document:e,params:c,target:t}),null);if(_)return _;throw new A({context:{key:t.key},type:"nomatchingcontroller"})}createBlade(e,t){const c=this.pluginsMap_.blades.reduce((_,k)=>_??js(k,{document:e,params:t}),null);if(!c)throw new A({type:"nomatchingview",context:{params:t}});return c}createBladeApi(e){if(e instanceof Ne)return new Jn(e);if(e instanceof nt)return new Hn(e);if(e instanceof nn)return new In(e,this);const t=this.pluginsMap_.blades.reduce((c,_)=>c??_.api({controller:e,pool:this}),null);if(!t)throw A.shouldNeverHappen();return t}}function nh(){const s=new th;return[lh,Ou,ju,Uu,Au,xu,yu,bu,Un,$u,Zu,Wu,ee,Os,Ns,ri].forEach(e=>{s.register(e)}),s}function ih(s){return $t.isObject(s)?new $t(s.x,s.y):new $t}function sh(s,e){s.writeProperty("x",e.x),s.writeProperty("y",e.y)}function Lt(s,e){if(!s)return;const t=[],c=Oo(s,e);c&&t.push(c);const _=Bo(s);return _&&t.push(_),new on(t)}function rh(s,e){return new Kt({assembly:No,components:[Lt("x"in s?s.x:void 0,e.x),Lt("y"in s?s.y:void 0,e.y)]})}function Ko(s,e){const[t,c]=s?ku(s):[];if(!w(t)||!w(c))return Math.max(Math.abs(t??0),Math.abs(c??0));const _=Mt(s);return Math.max(Math.abs(_)*10,Math.abs(e)*10)}function oh(s,e){const t=e instanceof Kt?e.components[0]:void 0,c=e instanceof Kt?e.components[1]:void 0,_=Ko(t,s.x),k=Ko(c,s.y);return Math.max(_,k)}function $o(s,e){return{baseStep:Mt(e),constraint:e,textProps:W.fromObject({draggingScale:At(e,s),formatter:Le(Rn(e,s))})}}function ah(s){if(!("y"in s))return!1;const e=s.y;return e&&"inverted"in e?!!e.inverted:!1}const lh={id:"input-point2d",type:"input",accept:(s,e)=>{if(!$t.isObject(s))return null;const t=D,c=me(e,{expanded:t.optional.boolean,picker:t.optional.custom(wi),x:t.optional.custom(dt),y:t.optional.object({inverted:t.optional.boolean,max:t.optional.number,min:t.optional.number,step:t.optional.number})});return c?{initialValue:s,params:c}:null},binding:{reader:s=>ih,constraint:s=>rh(s.params,s.initialValue),equals:$t.equals,writer:s=>sh},controller:s=>{const e=s.document,t=s.value,c=s.constraint;if(!(c instanceof Kt))throw A.shouldNeverHappen();const _="expanded"in s.params?s.params.expanded:void 0,k="picker"in s.params?s.params.picker:void 0;return new Du(e,{axes:[$o(t.rawValue.x,c.components[0]),$o(t.rawValue.y,c.components[1])],expanded:_??!1,invertsY:ah(s.params),maxValue:oh(t.rawValue,c),parser:st,pickerLayout:k??"popup",value:t,viewProps:s.viewProps})}};class Xo extends o{constructor(e){super(e),this.emitter_=new R,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,_=>{c(_.event)}),this}}class Yo extends o{constructor(e){super(e),this.emitter_=new R,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,_=>{c(_.event)}),this}}class qo extends o{constructor(e){super(e),this.emitter_=new R,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,_=>{c(_.event)}),this}}const ch=function(){return{id:"list",type:"blade",accept(s){const e=D,t=me(s,{options:e.required.custom(mn),value:e.required.raw,view:e.required.constant("list"),label:e.optional.string});return t?{params:t}:null},controller(s){const e=new an(es(s.params.options)),t=te(s.params.value,{constraint:e}),c=new ln(s.document,{props:new W({options:e.values.value("options")}),value:t,viewProps:s.viewProps});return new Bt(s.document,{blade:s.blade,props:W.fromObject({label:s.params.label}),valueController:c})},api(s){return!(s.controller instanceof Bt)||!(s.controller.valueController instanceof ln)?null:new Xo(s.controller)}}}();function ph(s){return s.reduce((e,t)=>Object.assign(e,{[t.presetKey]:t.read()}),{})}function uh(s,e){s.forEach(t=>{const c=e[t.target.presetKey];c!==void 0&&t.writer(t.target,t.reader(c))})}class hh extends ei{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);uh(t,e),this.refresh()}exportPreset(){const e=this.controller_.rackController.rack.find(Ne).map(t=>t.binding.target);return ph(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 dh extends Tn{constructor(e,t){super(e,{expanded:t.expanded,blade:t.blade,props:t.props,root:!0,viewProps:t.viewProps})}}const mh={id:"slider",type:"blade",accept(s){const e=D,t=me(s,{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(s){var e,t;const c=(e=s.params.value)!==null&&e!==void 0?e:0,_=new jt({max:s.params.max,min:s.params.min}),k=new jn(s.document,{baseStep:1,parser:st,sliderProps:new W({maxValue:_.values.value("max"),minValue:_.values.value("min")}),textProps:W.fromObject({draggingScale:At(void 0,c),formatter:(t=s.params.format)!==null&&t!==void 0?t:rr}),value:te(c,{constraint:_}),viewProps:s.viewProps});return new Bt(s.document,{blade:s.blade,props:W.fromObject({label:s.params.label}),valueController:k})},api(s){return!(s.controller instanceof Bt)||!(s.controller.valueController instanceof jn)?null:new Yo(s.controller)}},fh=function(){return{id:"text",type:"blade",accept(s){const e=D,t=me(s,{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(s){var e;const t=new Nn(s.document,{parser:s.params.parse,props:W.fromObject({formatter:(e=s.params.format)!==null&&e!==void 0?e:c=>String(c)}),value:te(s.params.value),viewProps:s.viewProps});return new Bt(s.document,{blade:s.blade,props:W.fromObject({label:s.params.label}),valueController:t})},api(s){return!(s.controller instanceof Bt)||!(s.controller.valueController instanceof Nn)?null:new qo(s.controller)}}}();function vh(s){const e=s.createElement("div");return e.classList.add(I("dfw")()),s.body&&s.body.appendChild(e),e}function Qo(s,e,t){if(s.querySelector(`style[data-tp-style=${e}]`))return;const c=s.createElement("style");c.dataset.tpStyle=e,c.textContent=t,s.head.appendChild(c)}class bh extends hh{constructor(e){var t,c;const _=e??{},k=(t=_.document)!==null&&t!==void 0?t:Wn(),V=nh(),X=new dh(k,{expanded:_.expanded,blade:Ce(),props:W.fromObject({title:_.title}),viewProps:Ke.create()});super(X,V),this.pool_=V,this.containerElem_=(c=_.container)!==null&&c!==void 0?c:vh(k),this.containerElem_.appendChild(this.element),this.doc_=k,this.usesDefaultWrapper_=!_.container,this.setUpDefaultPlugins_()}get document(){if(!this.doc_)throw A.alreadyDisposed();return this.doc_}dispose(){const e=this.containerElem_;if(!e)throw A.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&&Qo(this.document,`plugin-${e.id}`,e.css)}setUpDefaultPlugins_(){Qo(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:[mh,ch,ri,fh]})}}const gh=new r("3.1.10");i.BladeApi=o,i.ButtonApi=z,i.FolderApi=ei,i.InputBindingApi=Jn,i.ListApi=Xo,i.MonitorBindingApi=Hn,i.Pane=bh,i.SeparatorApi=Ti,i.SliderApi=Yo,i.TabApi=Oi,i.TabPageApi=si,i.TextApi=qo,i.TpChangeEvent=p,i.VERSION=gh,Object.defineProperty(i,"__esModule",{value:!0})})})(Cs,Cs.exports);var kp=Cs.exports,Ps={exports:{}};(function(v,n){(function(i,r){r(n)})(eo,function(i){class r{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,u,b,P){super(a),this.value=u,this.presetKey=b,this.last=P??!0}}function p(m){return m}function h(m){return m==null}const d={alreadydisposed:()=>"View has been already disposed",invalidparams:m=>`Invalid parameters for '${m.name}'`,nomatchingcontroller:m=>`No matching controller for '${m.key}'`,nomatchingview:m=>`No matching view for '${JSON.stringify(m.params)}'`,notbindable:()=>"Value is not bindable",propertynotfound:m=>`Property '${m.name}' not found`,shouldneverhappen:()=>"This error should never happen"};class y{constructor(a){var u;this.message=(u=d[a.type](a.context))!==null&&u!==void 0?u:"Unexpected error",this.name=this.constructor.name,this.stack=new Error(this.message).stack,this.type=a.type}static alreadyDisposed(){return new y({type:"alreadydisposed"})}static notBindable(){return new y({type:"notbindable"})}static propertyNotFound(a){return new y({type:"propertynotfound",context:{name:a}})}static shouldNeverHappen(){return new y({type:"shouldneverhappen"})}}class x{constructor(){this.observers_={}}on(a,u){let b=this.observers_[a];return b||(b=this.observers_[a]=[]),b.push({handler:u}),this}off(a,u){const b=this.observers_[a];return b&&(this.observers_[a]=b.filter(P=>P.handler!==u)),this}emit(a,u){const b=this.observers_[a];b&&b.forEach(P=>{P.handler(u)})}}const w="tp";function C(m){return(u,b)=>[w,"-",m,"v",u?`_${u}`:"",b?`-${b}`:""].join("")}function M(m,a){return u=>a(m(u))}function E(m){return m.rawValue}function A(m,a){m.emitter.on("change",M(E,a)),a(m.rawValue)}function L(m,a,u){A(m.value(a),u)}function z(m,a,u){u?m.classList.add(a):m.classList.remove(a)}function R(m,a){return u=>{z(m,a,u)}}function N(m,a){A(m,u=>{a.textContent=u??""})}const I=C("btn");class O{constructor(a,u){this.element=a.createElement("div"),this.element.classList.add(I()),u.viewProps.bindClassModifiers(this.element);const b=a.createElement("button");b.classList.add(I("b")),u.viewProps.bindDisabled(b),this.element.appendChild(b),this.buttonElement=b;const P=a.createElement("div");P.classList.add(I("t")),N(u.props.value("title"),P),this.buttonElement.appendChild(P)}}class F{constructor(a,u){this.emitter=new x,this.onClick_=this.onClick_.bind(this),this.props=u.props,this.viewProps=u.viewProps,this.view=new O(a,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class G{constructor(a,u){var b;this.constraint_=u==null?void 0:u.constraint,this.equals_=(b=u==null?void 0:u.equals)!==null&&b!==void 0?b:(P,S)=>P===S,this.emitter=new x,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,u){const b=u??{forceEmit:!1,last:!0},P=this.constraint_?this.constraint_.constrain(a):a,S=this.rawValue_;this.equals_(S,P)&&!b.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=P,this.emitter.emit("change",{options:b,previousRawValue:S,rawValue:P,sender:this}))}}class B{constructor(a){this.emitter=new x,this.value_=a}get rawValue(){return this.value_}set rawValue(a){this.setRawValue(a,{forceEmit:!1,last:!0})}setRawValue(a,u){const b=u??{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 K(m,a){const u=a==null?void 0:a.constraint,b=a==null?void 0:a.equals;return!u&&!b?new B(m):new G(m,a)}class ${constructor(a){this.emitter=new x,this.valMap_=a;for(const u in this.valMap_)this.valMap_[u].emitter.on("change",()=>{this.emitter.emit("change",{key:u,sender:this})})}static createCore(a){return Object.keys(a).reduce((b,P)=>Object.assign(b,{[P]:K(a[P])}),{})}static fromObject(a){const u=this.createCore(a);return new $(u)}get(a){return this.valMap_[a].rawValue}set(a,u){this.valMap_[a].rawValue=u}value(a){return this.valMap_[a]}}function q(m,a){const b=Object.keys(a).reduce((P,S)=>{if(P===void 0)return;const j=a[S],Y=j(m[S]);return Y.succeeded?Object.assign(Object.assign({},P),{[S]:Y.value}):void 0},{});return b}function se(m,a){return m.reduce((u,b)=>{if(u===void 0)return;const P=a(b);if(!(!P.succeeded||P.value===void 0))return[...u,P.value]},[])}function he(m){return m===null?!1:typeof m=="object"}function ie(m){return a=>u=>{if(!a&&u===void 0)return{succeeded:!1,value:void 0};if(a&&u===void 0)return{succeeded:!0,value:void 0};const b=m(u);return b!==void 0?{succeeded:!0,value:b}:{succeeded:!1,value:void 0}}}function fe(m){return{custom:a=>ie(a)(m),boolean:ie(a=>typeof a=="boolean"?a:void 0)(m),number:ie(a=>typeof a=="number"?a:void 0)(m),string:ie(a=>typeof a=="string"?a:void 0)(m),function:ie(a=>typeof a=="function"?a:void 0)(m),constant:a=>ie(u=>u===a?a:void 0)(m),raw:ie(a=>a)(m),object:a=>ie(u=>{if(he(u))return q(u,a)})(m),array:a=>ie(u=>{if(Array.isArray(u))return se(u,a)})(m)}}const pe={optional:fe(!0),required:fe(!1)};function te(m,a){const u=pe.required.object(a)(m);return u.succeeded?u.value:void 0}function W(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 be{constructor(a){this.value_=a}static create(a){return[new be(a),(u,b)=>{a.setRawValue(u,b)}]}get emitter(){return this.value_.emitter}get rawValue(){return this.value_.rawValue}}const de=C("");function oe(m,a){return R(m,de(void 0,a))}class _e extends ${constructor(a){var u;super(a),this.onDisabledChange_=this.onDisabledChange_.bind(this),this.onParentChange_=this.onParentChange_.bind(this),this.onParentGlobalDisabledChange_=this.onParentGlobalDisabledChange_.bind(this),[this.globalDisabled_,this.setGlobalDisabled_]=be.create(K(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(a){var u,b,P;const S=a??{};return new _e($.createCore({disabled:(u=S.disabled)!==null&&u!==void 0?u:!1,disposed:!1,hidden:(b=S.hidden)!==null&&b!==void 0?b:!1,parent:(P=S.parent)!==null&&P!==void 0?P:null}))}get globalDisabled(){return this.globalDisabled_}bindClassModifiers(a){A(this.globalDisabled_,oe(a,"disabled")),L(this,"hidden",oe(a,"hidden"))}bindDisabled(a){A(this.globalDisabled_,u=>{a.disabled=u})}bindTabIndex(a){A(this.globalDisabled_,u=>{a.tabIndex=u?-1:0})}handleDispose(a){this.value("disposed").emitter.on("change",u=>{u&&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 u;const b=a.previousRawValue;b==null||b.globalDisabled.emitter.off("change",this.onParentGlobalDisabledChange_),(u=this.get("parent"))===null||u===void 0||u.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_),this.updateGlobalDisabled_()}}function D(){return["veryfirst","first","last","verylast"]}const me=C(""),Ie={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 u=this.view.element;this.blade.value("positions").emitter.on("change",()=>{D().forEach(b=>{u.classList.remove(me(void 0,Ie[b]))}),this.blade.get("positions").forEach(b=>{u.classList.add(me(void 0,Ie[b]))})}),this.viewProps.handleDispose(()=>{Pe(u)})}get parent(){return this.parent_}set parent(a){if(this.parent_=a,!("parent"in this.viewProps.valMap_)){W({key:"parent",target:_e.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 kn(m,a){const u=m.style.transition;m.style.transition="none",a(),m.style.transition=u}function Ke(m){return m.ontouchstart!==void 0}function Mn(m){for(;m.childNodes.length>0;)m.removeChild(m.childNodes[0])}function Zt(m){return m.relatedTarget?m.relatedTarget:"explicitOriginalTarget"in m?m.explicitOriginalTarget:null}const ct=C("lbl");function _t(m,a){const u=m.createDocumentFragment();return a.split(`
|
|
93
|
+
`).map(P=>m.createTextNode(P)).forEach((P,S)=>{S>0&&u.appendChild(m.createElement("br")),u.appendChild(P)}),u}class Fe{constructor(a,u){this.element=a.createElement("div"),this.element.classList.add(ct()),u.viewProps.bindClassModifiers(this.element);const b=a.createElement("div");b.classList.add(ct("l")),L(u.props,"label",S=>{h(S)?this.element.classList.add(ct(void 0,"nol")):(this.element.classList.remove(ct(void 0,"nol")),Mn(b),b.appendChild(_t(a,S)))}),this.element.appendChild(b),this.labelElement=b;const P=a.createElement("div");P.classList.add(ct("v")),this.element.appendChild(P),this.valueElement=P}}class tt extends Be{constructor(a,u){const b=u.valueController.viewProps;super(Object.assign(Object.assign({},u),{view:new Fe(a,{props:u.props,viewProps:b}),viewProps:b})),this.props=u.props,this.valueController=u.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class Jt extends Be{constructor(a){super(a),this.value=a.value}}class pt extends ${constructor(a){super(a)}static create(a){const u={completed:!0,expanded:a,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null},b=$.createCore(u);return new pt(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")&&!h(a)?`${a}px`:"auto"}bindExpandedClass(a,u){const b=()=>{this.styleExpanded?a.classList.add(u):a.classList.remove(u)};L(this,"expanded",b),L(this,"temporaryExpanded",b)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function An(m){return pt.create(m)}function Wn(m,a){let u=0;return kn(a,()=>{m.set("expandedHeight",null),m.set("temporaryExpanded",!0),et(a),u=a.clientHeight,m.set("temporaryExpanded",null),et(a)}),u}function Sn(m,a){a.style.height=m.styleHeight}function Ln(m,a){m.value("expanded").emitter.on("beforechange",()=>{m.set("completed",!1),h(m.get("expandedHeight"))&&m.set("expandedHeight",Wn(m,a)),m.set("shouldFixHeight",!0),et(a)}),m.emitter.on("change",()=>{Sn(m,a)}),Sn(m,a),a.addEventListener("transitionend",u=>{u.propertyName==="height"&&m.cleanUpTransition()})}class mt{constructor(a,u){const b=C(u.viewName);this.element=a.createElement("div"),this.element.classList.add(b()),u.viewProps.bindClassModifiers(this.element)}}class wt extends Jt{constructor(a,u){const b=u.valueController.viewProps;super(Object.assign(Object.assign({},u),{value:u.valueController.value,view:new Fe(a,{props:u.props,viewProps:b}),viewProps:b})),this.props=u.props,this.valueController=u.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class Vn{constructor(){this.disabled=!1,this.emitter=new x}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class Ht{constructor(a,u){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=a,this.emitter=new x,this.interval_=u,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 Dn{constructor(a){this.constraints=a}constrain(a){return this.constraints.reduce((u,b)=>b.constrain(u),a)}}function ft(m,a){if(m instanceof a)return m;if(m instanceof Dn){const u=m.constraints.reduce((b,P)=>b||(P instanceof a?P:null),null);if(u)return u}return null}class ut{constructor(a){this.values=$.fromObject({max:a.max,min:a.min})}constrain(a){const u=this.values.get("max"),b=this.values.get("min");return Math.min(Math.max(a,b),u)}}class yt{constructor(a){this.values=$.fromObject({max:a.max,min:a.min})}get maxValue(){return this.values.get("max")}get minValue(){return this.values.get("min")}constrain(a){const u=this.values.get("max"),b=this.values.get("min");let P=a;return h(b)||(P=Math.max(P,b)),h(u)||(P=Math.min(P,u)),P}}class T{constructor(a,u=0){this.step=a,this.origin=u}constrain(a){const u=this.origin%this.step,b=Math.round((a-u)/this.step);return u+b*this.step}}const Q=C("pop");class ee{constructor(a,u){this.element=a.createElement("div"),this.element.classList.add(Q()),u.viewProps.bindClassModifiers(this.element),A(u.shows,R(this.element,Q(void 0,"v")))}}class ae{constructor(a,u){this.shows=K(!1),this.viewProps=u.viewProps,this.view=new ee(a,{shows:this.shows,viewProps:this.viewProps})}}const Ce=C("txt");class Oe{constructor(a,u){this.onChange_=this.onChange_.bind(this),this.element=a.createElement("div"),this.element.classList.add(Ce()),u.viewProps.bindClassModifiers(this.element),this.props_=u.props,this.props_.emitter.on("change",this.onChange_);const b=a.createElement("input");b.classList.add(Ce("i")),b.type="text",u.viewProps.bindDisabled(b),this.element.appendChild(b),this.inputElement=b,u.value.emitter.on("change",this.onChange_),this.value_=u.value,this.refresh()}refresh(){const a=this.props_.get("formatter");this.inputElement.value=a(this.value_.rawValue)}onChange_(){this.refresh()}}class Ot{constructor(a,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 Oe(a,{props:u.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);h(P)||(this.value.rawValue=P),this.view.refresh()}}function en(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 ks{constructor(a,u,b){this.left=u,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 Ms={"+":m=>m,"-":m=>-m,"~":m=>~m};class As{constructor(a,u){this.operator=a,this.expression=u}evaluate(){const a=Ms[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 Zn(m){return(a,u)=>{for(let b=0;b<m.length;b++){const P=m[b](a,u);if(P!=="")return P}return""}}function xt(m,a){var u;const b=m.substr(a).match(/^\s+/);return(u=b&&b[0])!==null&&u!==void 0?u:""}function Jn(m,a){const u=m.substr(a,1);return u.match(/^[1-9]$/)?u:""}function Ne(m,a){var u;const b=m.substr(a).match(/^[0-9]+/);return(u=b&&b[0])!==null&&u!==void 0?u:""}function Hn(m,a){const u=Ne(m,a);if(u!=="")return u;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 u=m.substr(a,1);if(a+=1,u.toLowerCase()!=="e")return"";const b=Hn(m,a);return b===""?"":u+b}function Vi(m,a){const u=m.substr(a,1);if(u==="0")return u;const b=Jn(m,a);return a+=b.length,b===""?"":b+Ne(m,a)}function tn(m,a){const u=Vi(m,a);if(a+=u.length,u==="")return"";const b=m.substr(a,1);if(a+=b.length,b!==".")return"";const P=Ne(m,a);return a+=P.length,u+b+P+nt(m,a)}function Di(m,a){const u=m.substr(a,1);if(a+=u.length,u!==".")return"";const b=Ne(m,a);return a+=b.length,b===""?"":u+b+nt(m,a)}function In(m,a){const u=Vi(m,a);return a+=u.length,u===""?"":u+nt(m,a)}const ei=Zn([tn,Di,In]);function ti(m,a){var u;const b=m.substr(a).match(/^[01]+/);return(u=b&&b[0])!==null&&u!==void 0?u:""}function Ss(m,a){const u=m.substr(a,2);if(a+=u.length,u.toLowerCase()!=="0b")return"";const b=ti(m,a);return b===""?"":u+b}function Ls(m,a){var u;const b=m.substr(a).match(/^[0-7]+/);return(u=b&&b[0])!==null&&u!==void 0?u:""}function Vs(m,a){const u=m.substr(a,2);if(a+=u.length,u.toLowerCase()!=="0o")return"";const b=Ls(m,a);return b===""?"":u+b}function Ds(m,a){var u;const b=m.substr(a).match(/^[0-9a-f]+/i);return(u=b&&b[0])!==null&&u!==void 0?u:""}function ni(m,a){const u=m.substr(a,2);if(a+=u.length,u.toLowerCase()!=="0x")return"";const b=Ds(m,a);return b===""?"":u+b}const Is=Zn([Ss,Vs,ni]),Ts=Zn([Is,ei]);function nn(m,a){const u=Ts(m,a);return a+=u.length,u===""?null:{evaluable:new ze(u),cursor:a}}function Ii(m,a){const u=m.substr(a,1);if(a+=u.length,u!=="(")return null;const b=ii(m,a);if(!b)return null;a=b.cursor,a+=xt(m,a).length;const P=m.substr(a,1);return a+=P.length,P!==")"?null:{evaluable:b.evaluable,cursor:a}}function Es(m,a){var u;return(u=nn(m,a))!==null&&u!==void 0?u:Ii(m,a)}function Tn(m,a){const u=Es(m,a);if(u)return u;const b=m.substr(a,1);if(a+=b.length,b!=="+"&&b!=="-"&&b!=="~")return null;const P=Tn(m,a);return P?(a=P.cursor,{cursor:a,evaluable:new As(b,P.evaluable)}):null}function Os(m,a,u){u+=xt(a,u).length;const b=m.filter(P=>a.startsWith(P,u))[0];return b?(u+=b.length,u+=xt(a,u).length,{cursor:u,operator:b}):null}function Bt(m,a){return(u,b)=>{const P=m(u,b);if(!P)return null;b=P.cursor;let S=P.evaluable;for(;;){const j=Os(a,u,b);if(!j)break;b=j.cursor;const Y=m(u,b);if(!Y)return null;b=Y.cursor,S=new ks(j.operator,S,Y.evaluable)}return S?{cursor:b,evaluable:S}:null}}const Ti=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((m,a)=>Bt(m,a),Tn);function ii(m,a){return a+=xt(m,a).length,Ti(m,a)}function Bs(m){const a=ii(m,0);return!a||a.cursor+xt(m,a.cursor).length!==m.length?null:a.evaluable}function sn(m){var a;const u=Bs(m);return(a=u==null?void 0:u.evaluate())!==null&&a!==void 0?a:null}function Ns(m){if(typeof m=="number")return m;if(typeof m=="string"){const a=sn(m);if(!h(a))return a}return 0}function Se(m){return a=>a.toFixed(Math.max(Math.min(m,20),0))}const Fs=Se(0);function En(m){return Fs(m)+"%"}function Ei(m){return String(m)}function si(m,a){for(;m.length<a;)m.push(void 0)}function Oi(m){const a=[];return si(a,m),K(a)}function Bi(m){const a=m.indexOf(void 0);return a<0?m:m.slice(0,a)}function zs(m,a){const u=[...Bi(m),a];return u.length>m.length?u.splice(0,u.length-m.length):si(u,m.length),u}function Nt({primary:m,secondary:a,forward:u,backward:b}){let P=!1;function S(j){P||(P=!0,j(),P=!1)}m.emitter.on("change",j=>{S(()=>{a.setRawValue(u(m,a),j.options)})}),a.emitter.on("change",j=>{S(()=>{m.setRawValue(b(m,a),j.options)}),S(()=>{a.setRawValue(u(m,a),j.options)})}),S(()=>{a.setRawValue(u(m,a),{forceEmit:!1,last:!0})})}function Ft(m,a){const u=m*(a.altKey?.1:1)*(a.shiftKey?10:1);return a.upKey?+u:a.downKey?-u:0}function rn(m){return{altKey:m.altKey,downKey:m.key==="ArrowDown",shiftKey:m.shiftKey,upKey:m.key==="ArrowUp"}}function ri(m){return{altKey:m.altKey,downKey:m.key==="ArrowLeft",shiftKey:m.shiftKey,upKey:m.key==="ArrowRight"}}function js(m){return m==="ArrowUp"||m==="ArrowDown"}function Ni(m){return js(m)||m==="ArrowLeft"||m==="ArrowRight"}function oi(m,a){var u,b;const P=a.ownerDocument.defaultView,S=a.getBoundingClientRect();return{x:m.pageX-(((u=P&&P.scrollX)!==null&&u!==void 0?u:0)+S.left),y:m.pageY-(((b=P&&P.scrollY)!==null&&b!==void 0?b:0)+S.top)}}class On{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 x,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 u=this.elem_.getBoundingClientRect();return{bounds:{width:u.width,height:u.height},point:a?{x:a.x,y:a.y}:null}}onMouseDown_(a){var u;a.preventDefault(),(u=a.currentTarget)===null||u===void 0||u.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_(oi(a,this.elem_)),sender:this,shiftKey:a.shiftKey})}onDocumentMouseMove_(a){this.emitter.emit("move",{altKey:a.altKey,data:this.computePosition_(oi(a,this.elem_)),sender:this,shiftKey:a.shiftKey})}onDocumentMouseUp_(a){const u=this.elem_.ownerDocument;u.removeEventListener("mousemove",this.onDocumentMouseMove_),u.removeEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("up",{altKey:a.altKey,data:this.computePosition_(oi(a,this.elem_)),sender:this,shiftKey:a.shiftKey})}onTouchStart_(a){a.preventDefault();const u=a.targetTouches.item(0),b=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:a.altKey,data:this.computePosition_(u?{x:u.clientX-b.left,y:u.clientY-b.top}:void 0),sender:this,shiftKey:a.shiftKey}),this.lastTouch_=u}onTouchMove_(a){const u=a.targetTouches.item(0),b=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:a.altKey,data:this.computePosition_(u?{x:u.clientX-b.left,y:u.clientY-b.top}:void 0),sender:this,shiftKey:a.shiftKey}),this.lastTouch_=u}onTouchEnd_(a){var u;const b=(u=a.targetTouches.item(0))!==null&&u!==void 0?u: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,u,b,P){const S=(m-a)/(u-a);return b+S*(P-b)}function Fi(m){return String(m.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function zt(m,a,u){return Math.min(Math.max(m,a),u)}const $e=C("txt");class Rs{constructor(a,u){this.onChange_=this.onChange_.bind(this),this.props_=u.props,this.props_.emitter.on("change",this.onChange_),this.element=a.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 b=a.createElement("input");b.classList.add($e("i")),b.type="text",u.viewProps.bindDisabled(b),this.element.appendChild(b),this.inputElement=b,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=a.createElement("div");P.classList.add($e("k")),this.element.appendChild(P),this.knobElement=P;const S=a.createElementNS(ye,"svg");S.classList.add($e("g")),this.knobElement.appendChild(S);const j=a.createElementNS(ye,"path");j.classList.add($e("gb")),S.appendChild(j),this.guideBodyElem_=j;const Y=a.createElementNS(ye,"path");Y.classList.add($e("gh")),S.appendChild(Y),this.guideHeadElem_=Y;const ue=a.createElement("div");ue.classList.add(C("tt")()),this.knobElement.appendChild(ue),this.tooltipElem_=ue,u.value.emitter.on("change",this.onChange_),this.value=u.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 u=a.rawValue/this.props_.get("draggingScale"),b=u+(u>0?-1:u<0?1:0),P=zt(-b,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${b+P},0 L${b},4 L${b+P},8`,`M ${u},-1 L${u},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${u},4`);const S=this.props_.get("formatter");this.tooltipElem_.textContent=S(this.value.rawValue),this.tooltipElem_.style.left=`${u}px`}refresh(){const a=this.props_.get("formatter");this.inputElement.value=a(this.value.rawValue)}onChange_(){this.refresh()}}class on{constructor(a,u){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_=u.baseStep,this.parser_=u.parser,this.props=u.props,this.sliderProps_=(b=u.sliderProps)!==null&&b!==void 0?b:null,this.value=u.value,this.viewProps=u.viewProps,this.dragging_=K(null),this.view=new Rs(a,{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 On(this.view.knobElement);P.emitter.on("down",this.onPointerDown_),P.emitter.on("move",this.onPointerMove_),P.emitter.on("up",this.onPointerUp_)}constrainValue_(a){var u,b;const P=(u=this.sliderProps_)===null||u===void 0?void 0:u.get("minValue"),S=(b=this.sliderProps_)===null||b===void 0?void 0:b.get("maxValue");let j=a;return P!==void 0&&(j=Math.max(j,P)),S!==void 0&&(j=Math.min(j,S)),j}onInputChange_(a){const b=a.currentTarget.value,P=this.parser_(b);h(P)||(this.value.rawValue=this.constrainValue_(P)),this.view.refresh()}onInputKeyDown_(a){const u=Ft(this.baseStep_,rn(a));u!==0&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+u),{forceEmit:!1,last:!1})}onInputKeyUp_(a){Ft(this.baseStep_,rn(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 u=a.point.x-a.bounds.width/2;return this.constrainValue_(this.originRawValue_+u*this.props.get("draggingScale"))}onPointerMove_(a){const u=this.computeDraggingValue_(a.data);u!==null&&(this.value.setRawValue(u,{forceEmit:!1,last:!1}),this.dragging_.rawValue=this.value.rawValue-this.originRawValue_)}onPointerUp_(a){const u=this.computeDraggingValue_(a.data);u!==null&&(this.value.setRawValue(u,{forceEmit:!0,last:!0}),this.dragging_.rawValue=null)}}function We(m,a){m.write(a)}function jt(m){const a=m?ft(m,T):null;return a?a.step:null}function an(m,a){const u=m&&ft(m,T);return u?Fi(u.step):Math.max(Fi(a),2)}function ai(m){const a=jt(m);return a??1}function Bn(m,a){var u;const b=m&&ft(m,T),P=Math.abs((u=b==null?void 0:b.step)!==null&&u!==void 0?u:a);return P===0?.1:Math.pow(10,Math.floor(Math.log10(P))-1)}function Rt(m){return[m[0],m[1],m[2]]}function zi(m){const a=zt(Math.floor(m),0,255).toString(16);return a.length===1?`0${a}`:a}function ln(m,a="#"){const u=Rt(m.getComponents("rgb")).map(zi).join("");return`${a}${u}`}function ji(m,a="#"){const u=m.getComponents("rgb"),b=[u[0],u[1],u[2],u[3]*255].map(zi).join("");return`${a}${b}`}function Us(m,a){const u=Se(a==="float"?2:0);return`rgb(${Rt(m.getComponents("rgb",a)).map(P=>u(P)).join(", ")})`}function Ri(m){return a=>Us(a,m)}function Ui(m,a){const u=Se(2),b=Se(a==="float"?2:0);return`rgba(${m.getComponents("rgb",a).map((S,j)=>(j===3?u:b)(S)).join(", ")})`}function Gs(m){return a=>Ui(a,m)}function Nn(m){const a=[Se(0),En,En];return`hsl(${Rt(m.getComponents("hsl")).map((b,P)=>a[P](b)).join(", ")})`}function Ks(m){const a=[Se(0),En,En,Se(2)];return`hsla(${m.getComponents("hsl").map((b,P)=>a[P](b)).join(", ")})`}function Gi(m,a){const u=Se(a==="float"?2:0),b=["r","g","b"];return`{${Rt(m.getComponents("rgb",a)).map((S,j)=>`${b[j]}: ${u(S)}`).join(", ")}}`}function Ki(m){return a=>Gi(a,m)}function $s(m,a){const u=Se(2),b=Se(a==="float"?2:0),P=["r","g","b","a"];return`{${m.getComponents("rgb",a).map((j,Y)=>{const ue=Y===3?u:b;return`${P[Y]}: ${ue(j)}`}).join(", ")}}`}function Xs(m){return a=>$s(a,m)}[...["int","float"].reduce((m,a)=>[...m,{format:{alpha:!1,mode:"rgb",notation:"func",type:a},stringifier:Ri(a)},{format:{alpha:!0,mode:"rgb",notation:"func",type:a},stringifier:Gs(a)},{format:{alpha:!1,mode:"rgb",notation:"object",type:a},stringifier:Ki(a)},{format:{alpha:!0,mode:"rgb",notation:"object",type:a},stringifier:Xs(a)}],[])];class Ys{constructor(a){this.components=a.components,this.asm_=a.assembly}constrain(a){const u=this.asm_.toComponents(a).map((b,P)=>{var S,j;return(j=(S=this.components[P])===null||S===void 0?void 0:S.constrain(b))!==null&&j!==void 0?j:b});return this.asm_.fromComponents(u)}}const $i=C("pndtxt");class qs{constructor(a,u){this.textViews=u.textViews,this.element=a.createElement("div"),this.element.classList.add($i()),this.textViews.forEach(b=>{const P=a.createElement("div");P.classList.add($i("a")),P.appendChild(b.element),this.element.appendChild(P)})}}function li(m,a,u){return new on(m,{arrayPosition:u===0?"fst":u===a.axes.length-1?"lst":"mid",baseStep:a.axes[u].baseStep,parser:a.parser,props:a.axes[u].textProps,value:K(0,{constraint:a.axes[u].constraint}),viewProps:a.viewProps})}class Ct{constructor(a,u){this.value=u.value,this.viewProps=u.viewProps,this.acs_=u.axes.map((b,P)=>li(a,u,P)),this.acs_.forEach((b,P)=>{Nt({primary:this.value,secondary:b.value,forward:S=>u.assembly.toComponents(S.rawValue)[P],backward:(S,j)=>{const Y=u.assembly.toComponents(S.rawValue);return Y[P]=j.rawValue,u.assembly.fromComponents(Y)}})}),this.view=new qs(a,{textViews:this.acs_.map(b=>b.view)})}}function Qs(m,a){return"step"in m&&!h(m.step)?new T(m.step,a):null}function cn(m){return!h(m.max)&&!h(m.min)?new ut({max:m.max,min:m.min}):!h(m.max)||!h(m.min)?new yt({max:m.max,min:m.min}):null}const Ws={monitor:{defaultInterval:200,defaultLineCount:3}},it=C("grl");class Xi{constructor(a,u){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=a.createElement("div"),this.element.classList.add(it()),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 b=a.createElementNS(ye,"svg");b.classList.add(it("g")),b.style.height=`calc(var(--bld-us) * ${u.lineCount})`,this.element.appendChild(b),this.svgElem_=b;const P=a.createElementNS(ye,"polyline");this.svgElem_.appendChild(P),this.lineElem_=P;const S=a.createElement("div");S.classList.add(it("t"),C("tt")()),this.element.appendChild(S),this.tooltipElem_=S,u.value.emitter.on("change",this.onValueUpdate_),this.value=u.value,this.update_()}get graphElement(){return this.svgElem_}update_(){const a=this.svgElem_.getBoundingClientRect(),u=this.value.rawValue.length-1,b=this.props_.get("minValue"),P=this.props_.get("maxValue"),S=[];this.value.rawValue.forEach((qe,re)=>{if(qe===void 0)return;const gt=ke(re,0,u,0,a.width),pr=ke(qe,b,P,a.height,0);S.push([gt,pr].join(","))}),this.lineElem_.setAttributeNS(null,"points",S.join(" "));const j=this.tooltipElem_,Y=this.value.rawValue[this.cursor_.rawValue];if(Y===void 0){j.classList.remove(it("t","a"));return}const ue=ke(this.cursor_.rawValue,0,u,0,a.width),Ye=ke(Y,b,P,a.height,0);j.style.left=`${ue}px`,j.style.top=`${Ye}px`,j.textContent=`${this.formatter_(Y)}`,j.classList.contains(it("t","a"))||(j.classList.add(it("t","a"),it("t","in")),et(j),j.classList.remove(it("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class Zs{constructor(a,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_=K(-1),this.view=new Xi(a,{cursor:this.cursor_,formatter:u.formatter,lineCount:u.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 On(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 u=this.view.element.getBoundingClientRect();this.cursor_.rawValue=Math.floor(ke(a.offsetX,0,u.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 Yi{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,u){const b=u.bind(this);return this.controller_.emitter.on(a,()=>{b(new o(this))}),this}}class Js extends o{constructor(a,u,b){super(a),this.cell=u,this.index=b}}class qi extends r{constructor(a){super(a),this.cellToApiMap_=new Map,this.emitter_=new x;const u=this.controller_.valueController;u.cellControllers.forEach((b,P)=>{const S=new Yi(b);this.cellToApiMap_.set(b,S),b.emitter.on("click",()=>{const j=P%u.size[0],Y=Math.floor(P/u.size[0]);this.emitter_.emit("click",{event:new Js(this,S,[j,Y])})})})}cell(a,u){const b=this.controller_.valueController,P=b.cellControllers[u*b.size[0]+a];return this.cellToApiMap_.get(P)}on(a,u){const b=u.bind(this);return this.emitter_.on(a,P=>{b(P.event)}),this}}class ci{constructor(a,u){this.size=u.size;const[b,P]=this.size,S=[];for(let j=0;j<P;j++)for(let Y=0;Y<b;Y++){const ue=new F(a,{props:$.fromObject(Object.assign({},u.cellConfig(Y,j))),viewProps:_e.create()});S.push(ue)}this.cellCs_=S,this.viewProps=_e.create(),this.viewProps.handleDispose(()=>{this.cellCs_.forEach(j=>{j.viewProps.set("disposed",!0)})}),this.view=new mt(a,{viewProps:this.viewProps,viewName:"btngrid"}),this.view.element.style.gridTemplateColumns=`repeat(${b}, 1fr)`,this.cellCs_.forEach(j=>{this.view.element.appendChild(j.view.element)})}get cellControllers(){return this.cellCs_}}const Hs={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=pe,u=te(m,{cells:a.required.function,size:a.required.array(a.required.number),view:a.required.constant("buttongrid"),label:a.optional.string});return u?{params:u}:null},controller(m){return new tt(m.document,{blade:m.blade,props:$.fromObject({label:m.params.label}),valueController:new ci(m.document,{cellConfig:m.params.cells,size:m.params.size})})},api(m){return!(m.controller instanceof tt)||!(m.controller.valueController instanceof ci)?null:new qi(m.controller)}};class Qi extends r{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,u){const b=u.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,u){return m*(1-u)+a*u}const er=20,tr=.001,pi=100;function nr(m,a){let u=.25,b=.5,P=-1;for(let S=0;S<er;S++){const[j,Y]=m.curve(b);if(b+=u*(j<a?1:-1),P=Y,u*=.5,Math.abs(a-j)<tr)break}return P}class vt{constructor(a=0,u=0,b=1,P=1){this.cache_=[],this.comps_=[a,u,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 h(a)||!Array.isArray(a)?!1:typeof a[0]=="number"&&typeof a[1]=="number"&&typeof a[2]=="number"&&typeof a[3]=="number"}static equals(a,u){return a.x1===u.x1&&a.y1===u.y1&&a.x2===u.x2&&a.y2===u.y2}curve(a){const u=Xe(0,this.x1,a),b=Xe(0,this.y1,a),P=Xe(this.x1,this.x2,a),S=Xe(this.y1,this.y2,a),j=Xe(this.x2,1,a),Y=Xe(this.y2,1,a),ue=Xe(u,P,a),Ye=Xe(b,S,a),qe=Xe(P,j,a),re=Xe(S,Y,a);return[Xe(ue,qe,a),Xe(Ye,re,a)]}y(a){if(this.cache_.length===0){const u=[];for(let b=0;b<pi;b++)u.push(nr(this,ke(b,0,pi-1,0,1)));this.cache_=u}return this.cache_[Math.round(ke(zt(a,0,1),0,1,0,pi-1))]}toObject(){return[this.comps_[0],this.comps_[1],this.comps_[2],this.comps_[3]]}}const ui={toComponents:m=>m.toObject(),fromComponents:m=>new vt(...m)};function ir(m){const a=Se(2);return`cubic-bezier(${m.toObject().map(b=>a(b)).join(", ")})`}const hi=[0,.5,.5,1];function sr(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 vt(...hi);const u=[a[1],a[2],a[3],a[4]].reduce((b,P)=>{if(!b)return null;const S=Number(P);return isNaN(S)?null:[...b,S]},[]);return new vt(...u??hi)}const Pt=C("cbz");class Wi{constructor(a,u){this.element=a.createElement("div"),this.element.classList.add(Pt()),u.viewProps.bindClassModifiers(this.element),u.foldable.bindExpandedClass(this.element,Pt(void 0,"expanded")),L(u.foldable,"completed",R(this.element,Pt(void 0,"cpl")));const b=a.createElement("div");b.classList.add(Pt("h")),this.element.appendChild(b);const P=a.createElement("button");P.classList.add(Pt("b")),u.viewProps.bindDisabled(P);const S=a.createElementNS(ye,"svg");S.innerHTML='<path d="M2 13C8 13 8 3 14 3"/>',P.appendChild(S),b.appendChild(P),this.buttonElement=P;const j=a.createElement("div");if(j.classList.add(Pt("t")),b.appendChild(j),this.textElement=j,u.pickerLayout==="inline"){const Y=a.createElement("div");Y.classList.add(Pt("p")),this.element.appendChild(Y),this.pickerElement=Y}else this.pickerElement=null}}const Fn=C("cbzp");class Zi{constructor(a,u){this.element=a.createElement("div"),this.element.classList.add(Fn()),u.viewProps.bindClassModifiers(this.element);const b=a.createElement("div");b.classList.add(Fn("g")),this.element.appendChild(b),this.graphElement=b;const P=a.createElement("div");P.classList.add(Fn("t")),this.element.appendChild(P),this.textElement=P}}function st(m,a){const u=new MutationObserver(P=>{for(const S of P)S.type==="childList"&&S.addedNodes.forEach(j=>{j.contains(j)&&(a(),u.disconnect())})}),b=m.ownerDocument;u.observe(b.body,{attributes:!0,childList:!0,subtree:!0})}const ht=C("cbzg");function rr(m,a){return u=>a(m(u))}class Le{constructor(a,u){this.element=a.createElement("div"),this.element.classList.add(ht()),u.viewProps.bindClassModifiers(this.element),u.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 S=a.createElementNS(ye,"path");S.classList.add(ht("u")),this.svgElem_.appendChild(S),this.guideElem_=S;const j=a.createElementNS(ye,"polyline");j.classList.add(ht("l")),this.svgElem_.appendChild(j),this.lineElem_=j,this.handleElems_=[a.createElement("div"),a.createElement("div")],this.handleElems_.forEach(Y=>{Y.classList.add(ht("h")),this.element.appendChild(Y)}),this.vectorElems_=[a.createElementNS(ye,"line"),a.createElementNS(ye,"line")],this.vectorElems_.forEach(Y=>{Y.classList.add(ht("v")),this.svgElem_.appendChild(Y)}),this.value_=u.value,this.value_.emitter.on("change",this.onValueChange_.bind(this)),this.sel_=u.selection,this.handleElems_.forEach((Y,ue)=>{A(this.sel_,rr(Ye=>Ye===ue,R(Y,ht("h","sel"))))}),st(this.element,()=>{this.refresh()})}getVertMargin_(a){return a*.25}valueToPosition(a,u){const b=this.element.getBoundingClientRect(),P=b.width,S=b.height,j=this.getVertMargin_(S);return{x:ke(a,0,1,0,P),y:ke(u,0,1,S-j,j)}}positionToValue(a,u){const b=this.element.getBoundingClientRect(),P=b.width,S=b.height,j=this.getVertMargin_(S);return{x:zt(ke(a,0,P,0,1),0,1),y:ke(u,S-j,j,0,1)}}refresh(){this.guideElem_.setAttributeNS(null,"d",[0,1].map(S=>{const j=this.valueToPosition(0,S),Y=this.valueToPosition(1,S);return[`M ${j.x},${j.y}`,`L ${Y.x},${Y.y}`].join(" ")}).join(" "));const a=this.value_.rawValue,u=[];let b=0;for(;;){const S=this.valueToPosition(...a.curve(b));if(u.push([S.x,S.y].join(",")),b>=1)break;b=Math.min(b+.05,1)}this.lineElem_.setAttributeNS(null,"points",u.join(" "));const P=a.toObject();[0,1].forEach(S=>{const j=this.valueToPosition(S,S),Y=this.valueToPosition(P[S*2],P[S*2+1]),ue=this.vectorElems_[S];ue.setAttributeNS(null,"x1",String(j.x)),ue.setAttributeNS(null,"y1",String(j.y)),ue.setAttributeNS(null,"x2",String(Y.x)),ue.setAttributeNS(null,"y2",String(Y.y));const Ye=this.handleElems_[S];Ye.style.left=`${Y.x}px`,Ye.style.top=`${Y.y}px`})}onValueChange_(){this.refresh()}}const Ji=24,pn=400,di=1e3,bt=C("cbzprv");class Ut{constructor(a,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=a.createElement("div"),this.element.classList.add(bt()),u.viewProps.bindClassModifiers(this.element);const b=a.createElementNS(ye,"svg");b.classList.add(bt("g")),this.element.appendChild(b),this.svgElem_=b;const P=a.createElementNS(ye,"path");P.classList.add(bt("t")),this.svgElem_.appendChild(P),this.ticksElem_=P;const S=a.createElement("div");S.classList.add(bt("m")),this.element.appendChild(S),this.markerElem_=S,this.value_=u.value,this.value_.emitter.on("change",this.onValueChange_),u.viewProps.handleDispose(this.onDispose_),st(this.element,()=>{this.refresh()})}play(){this.stop(),this.updateMarker_(0),this.markerElem_.classList.add(bt("m","a")),this.startTime_=new Date().getTime()+pn,this.stopped_=!1,requestAnimationFrame(this.onTimer_)}stop(){this.stopped_=!0,this.markerElem_.classList.remove(bt("m","a"))}onDispose_(){this.stop()}updateMarker_(a){const u=this.value_.rawValue.y(zt(a,0,1));this.markerElem_.style.left=`${u*100}%`}refresh(){const a=this.svgElem_.getBoundingClientRect(),u=a.width,b=a.height,P=[],S=this.value_.rawValue;for(let j=0;j<Ji;j++){const Y=ke(j,0,Ji-1,0,1),ue=ke(S.y(Y),0,1,0,u);P.push(`M ${ue},0 v${b}`)}this.ticksElem_.setAttributeNS(null,"d",P.join(" "))}onTimer_(){if(this.startTime_===null)return;const a=new Date().getTime()-this.startTime_,u=a/di;this.updateMarker_(u),a>di+pn&&this.stop(),this.stopped_||requestAnimationFrame(this.onTimer_)}onValueChange_(){this.refresh(),this.play()}}function Ee(m,a,u,b){const P=u-m,S=b-a;return Math.sqrt(P*P+S*S)}function un(m,a,u,b){const P=Ee(m,a,u,b),S=Math.atan2(b-a,u-m),j=Math.round(S/(Math.PI/4))*Math.PI/4;return{x:m+Math.cos(j)*P,y:a+Math.sin(j)*P}}class rt{constructor(a,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_=K(0),this.viewProps=u.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 Ut(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 On(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,u,b){const P=this.sel_.rawValue,S=this.value.rawValue.toObject(),j=this.view.positionToValue(a.x,a.y),Y=u?un(P,P,j.x,j.y):j;S[P*2]=Y.x,S[P*2+1]=Y.y,this.value.setRawValue(new vt(...S),b)}onPointerDown_(a){const u=a.data;if(!u.point)return;const b=this.value.rawValue,P=this.view.valueToPosition(b.x1,b.y1),S=Ee(u.point.x,u.point.y,P.x,P.y),j=this.view.valueToPosition(b.x2,b.y2),Y=Ee(u.point.x,u.point.y,j.x,j.y);this.sel_.rawValue=S<=Y?0:1,this.updateValue_(u.point,a.shiftKey,{forceEmit:!1,last:!1})}onPointerMove_(a){const u=a.data;u.point&&this.updateValue_(u.point,a.shiftKey,{forceEmit:!1,last:!1})}onPointerUp_(a){const u=a.data;u.point&&this.updateValue_(u.point,a.shiftKey,{forceEmit:!0,last:!0})}onKeyDown_(a){Ni(a.key)&&a.preventDefault();const u=this.sel_.rawValue,b=this.value.rawValue.toObject();b[u*2]+=Ft(this.baseStep_,ri(a)),b[u*2+1]+=Ft(this.baseStep_,rn(a)),this.value.setRawValue(new vt(...b),{forceEmit:!1,last:!1})}onKeyUp_(a){Ni(a.key)&&a.preventDefault();const u=Ft(this.baseStep_,ri(a)),b=Ft(this.baseStep_,rn(a));u===0&&b===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class Hi{constructor(a,u){this.value=u.value,this.viewProps=u.viewProps,this.view=new Zi(a,{viewProps:this.viewProps}),this.gc_=new rt(a,{baseStep:u.axis.baseStep,value:this.value,viewProps:this.viewProps}),this.view.graphElement.appendChild(this.gc_.view.element);const b=Object.assign(Object.assign({},u.axis),{constraint:new yt({max:1,min:0})}),P=Object.assign(Object.assign({},u.axis),{constraint:void 0});this.tc_=new Ct(a,{assembly:ui,axes:[b,P,b,P],parser:sn,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 zn{constructor(a,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_=An(u.expanded),this.view=new Wi(a,{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 Ot(a,{parser:sr,props:$.fromObject({formatter:ir}),value:this.value,viewProps:this.viewProps}),this.view.textElement.appendChild(this.tc_.view.element),this.popC_=u.pickerLayout==="popup"?new ae(a,{viewProps:this.viewProps}):null;const b=new Hi(a,{axis:u.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),A(this.popC_.shows,P=>{P&&b.refresh()}),Nt({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:P=>P.rawValue,backward:(P,S)=>S.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),Ln(this.foldable_,this.view.pickerElement))}onButtonBlur_(a){if(!this.popC_)return;const u=a.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_(a){if(!this.popC_)return;const u=this.popC_.view.element,b=Zt(a);b&&u.contains(b)||b&&b===this.view.buttonElement&&!Ke(u.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(a){this.popC_&&a.key==="Escape"&&(this.popC_.shows.rawValue=!1)}}function mi(){return new Ys({assembly:ui,components:[0,1,2,3].map(m=>m%2===0?new yt({min:0,max:1}):void 0)})}const kt={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=pe,u=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 u?{params:u}:null},controller(m){var a,u;const b=new vt(...m.params.value),P=K(b,{constraint:mi(),equals:vt.equals}),S=new zn(m.document,{axis:{baseStep:.1,textProps:$.fromObject({draggingScale:.01,formatter:Se(2)})},expanded:(a=m.params.expanded)!==null&&a!==void 0?a:!1,pickerLayout:(u=m.params.picker)!==null&&u!==void 0?u:"popup",value:P,viewProps:m.viewProps});return new wt(m.document,{blade:m.blade,props:$.fromObject({label:m.params.label}),valueController:S})},api(m){return!(m.controller instanceof wt)||!(m.controller.valueController instanceof zn)?null:new Qi(m.controller)}};class we extends r{begin(){this.controller_.valueController.begin()}end(){this.controller_.valueController.end()}}const fi=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 u=this.timestamps_[0];return 1e3*(this.frameCount_-u.frameCount)/(a-u.time)}compactTimestamps_(){if(this.timestamps_.length<=fi)return;const a=this.timestamps_.length-fi;this.timestamps_.splice(0,a);const u=this.timestamps_[0].frameCount;this.timestamps_.forEach(b=>{b.frameCount-=u}),this.frameCount_-=u}end(a){if(this.start_===null)return;const u=a.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 Gt=C("fps");class Re{constructor(a,u){this.element=a.createElement("div"),this.element.classList.add(Gt()),u.viewProps.bindClassModifiers(this.element),this.graphElement=a.createElement("div"),this.graphElement.classList.add(Gt("g")),this.element.appendChild(this.graphElement);const b=a.createElement("div");b.classList.add(Gt("l")),this.element.appendChild(b);const P=a.createElement("span");P.classList.add(Gt("v")),P.textContent="--",b.appendChild(P),this.valueElement=P;const S=a.createElement("span");S.classList.add(Gt("u")),S.textContent="FPS",b.appendChild(S)}}class vi{constructor(a,u){this.stopwatch_=new Me,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 Re(a,{viewProps:this.viewProps}),this.graphC_=new Zs(a,{formatter:Se(0),lineCount:u.lineCount,props:$.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 a=this.stopwatch_.fps;if(a!==null){const u=this.value_.rawValue;this.value_.rawValue=zs(u,a),this.view.valueElement.textContent=a.toFixed(0)}}}function hn(m,a){return a===0?new Vn:new Ht(m,a??Ws.monitor.defaultInterval)}const bi={id:"fpsgraph",type:"blade",accept(m){const a=pe,u=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 u?{params:u}:null},controller(m){var a,u,b,P;const S=(a=m.params.interval)!==null&&a!==void 0?a:500;return new tt(m.document,{blade:m.blade,props:$.fromObject({label:m.params.label}),valueController:new vi(m.document,{lineCount:(u=m.params.lineCount)!==null&&u!==void 0?u:2,maxValue:(b=m.params.max)!==null&&b!==void 0?b:90,minValue:(P=m.params.min)!==null&&P!==void 0?P:0,ticker:hn(m.document,S),value:Oi(80),viewProps:m.viewProps})})},api(m){return!(m.controller instanceof tt)||!(m.controller.valueController instanceof vi)?null:new we(m.controller)}};class Ue{constructor(a,u){this.min=a,this.max=u}static isObject(a){if(typeof a!="object"||a===null)return!1;const u=a.min,b=a.max;return!(typeof u!="number"||typeof b!="number")}static equals(a,u){return a.min===u.min&&a.max===u.max}get length(){return this.max-this.min}toObject(){return{min:this.min,max:this.max}}}const gi={fromComponents:m=>new Ue(m[0],m[1]),toComponents:m=>[m.min,m.max]};class dn{constructor(a){this.edge=a}constrain(a){var u,b,P,S,j,Y,ue,Ye;if(a.min<=a.max)return new Ue((b=(u=this.edge)===null||u===void 0?void 0:u.constrain(a.min))!==null&&b!==void 0?b:a.min,(S=(P=this.edge)===null||P===void 0?void 0:P.constrain(a.max))!==null&&S!==void 0?S:a.max);const qe=(a.min+a.max)/2;return new Ue((Y=(j=this.edge)===null||j===void 0?void 0:j.constrain(qe))!==null&&Y!==void 0?Y:qe,(Ye=(ue=this.edge)===null||ue===void 0?void 0:ue.constrain(qe))!==null&&Ye!==void 0?Ye:qe)}}const _i=C("rsltxt");class jn{constructor(a,u){this.sliderView_=u.sliderView,this.textView_=u.textView,this.element=a.createElement("div"),this.element.classList.add(_i());const b=a.createElement("div");b.classList.add(_i("s")),b.appendChild(this.sliderView_.element),this.element.appendChild(b);const P=a.createElement("div");P.classList.add(_i("t")),P.appendChild(this.textView_.element),this.element.appendChild(P)}}const Ze=C("rsl");class mn{constructor(a,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=a.createElement("div"),this.element.classList.add(Ze()),u.viewProps.bindClassModifiers(this.element),this.value_=u.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 S=["min","max"].map(j=>{const Y=a.createElement("div");return Y.classList.add(Ze("k"),Ze("k",j)),b.appendChild(Y),Y});this.knobElements=[S[0],S[1]],this.update_()}valueToX_(a){const u=this.sliderProps_.get("minValue"),b=this.sliderProps_.get("maxValue");return zt(ke(a,u,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 u=[this.valueToX_(a.min),this.valueToX_(a.max)];this.barElement.style.left=`${u[0]}%`,this.barElement.style.right=`${100-u[1]}%`,this.knobElements.forEach((b,P)=>{b.style.left=`${u[P]}%`})}onSliderPropsChange_(){this.update_()}onValueChange_(){this.update_()}}class wi{constructor(a,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 mn(a,{sliderProps:this.sliderProps,value:this.value,viewProps:u.viewProps});const b=new On(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 u=(a.point.x+this.ofs_())/a.bounds.width,b=this.sliderProps.get("minValue"),P=this.sliderProps.get("maxValue");return ke(u,0,1,b,P)}onPointerDown_(a){if(!a.data.point)return;const u=a.data.point.x/a.data.bounds.width,b=this.value.rawValue,P=this.sliderProps.get("minValue"),S=this.sliderProps.get("maxValue"),j=ke(b.min,P,S,0,1),Y=ke(b.max,P,S,0,1);Math.abs(Y-u)<=.025?this.grabbing_="max":Math.abs(j-u)<=.025?this.grabbing_="min":u>=j&&u<=Y?(this.grabbing_="length",this.grabOffset_=ke(u-j,0,1,0,S-P)):u<j?(this.grabbing_="min",this.onPointerMove_(a)):u>Y&&(this.grabbing_="max",this.onPointerMove_(a))}applyPointToValue_(a,u){const b=this.valueFromData_(a);if(b===null)return;const P=this.sliderProps.get("minValue"),S=this.sliderProps.get("maxValue");if(this.grabbing_==="min")this.value.setRawValue(new Ue(b,this.value.rawValue.max),u);else if(this.grabbing_==="max")this.value.setRawValue(new Ue(this.value.rawValue.min,b),u);else if(this.grabbing_==="length"){const j=this.value.rawValue.length;let Y=b-this.grabOffset_,ue=Y+j;Y<P?(Y=P,ue=P+j):ue>S&&(Y=S-j,ue=S),this.value.setRawValue(new Ue(Y,ue),u)}}onPointerMove_(a){this.applyPointToValue_(a.data,{forceEmit:!1,last:!1})}onPointerUp_(a){this.applyPointToValue_(a.data,{forceEmit:!0,last:!0}),this.grabbing_=null}}class dt{constructor(a,u){this.value=u.value,this.viewProps=u.viewProps,this.sc_=new wi(a,u);const b={baseStep:u.baseStep,constraint:u.constraint,textProps:$.fromObject({draggingScale:u.draggingScale,formatter:u.formatter})};this.tc_=new Ct(a,{assembly:gi,axes:[b,b],parser:u.parser,value:this.value,viewProps:u.viewProps}),this.view=new jn(a,{sliderView:this.sc_.view,textView:this.tc_.view})}get textController(){return this.tc_}}function es(m){return Ue.isObject(m)?new Ue(m.min,m.max):new Ue(0,0)}function yi(m,a){m.writeProperty("max",a.max),m.writeProperty("min",a.min)}function or(m){const a=[],u=cn(m);u&&a.push(u);const b=Qs(m);return b&&a.push(b),new dn(new Dn(a))}const Rn={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(!Ue.isObject(m))return null;const u=pe,b=te(a,{format:u.optional.function,max:u.optional.number,min:u.optional.number,step:u.optional.number});return b?{initialValue:new Ue(m.min,m.max),params:b}:null},binding:{reader:m=>es,constraint:m=>or(m.params),equals:Ue.equals,writer:m=>yi},controller(m){var a;const u=m.value,b=m.constraint;if(!(b instanceof dn))throw y.shouldNeverHappen();const P=(u.rawValue.min+u.rawValue.max)/2,S=(a=m.params.format)!==null&&a!==void 0?a:Se(an(b.edge,P)),j=b.edge&&ft(b.edge,ut);if(j)return new dt(m.document,{baseStep:ai(b.edge),constraint:b.edge,draggingScale:Bn(b.edge,P),formatter:S,parser:sn,sliderProps:new $({maxValue:j.values.value("max"),minValue:j.values.value("min")}),value:u,viewProps:m.viewProps});const Y={baseStep:ai(b.edge),constraint:b.edge,textProps:$.fromObject({draggingScale:P,formatter:S})};return new Ct(m.document,{assembly:gi,axes:[Y,Y],parser:sn,value:u,viewProps:m.viewProps})}};class Mt{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 At extends l{constructor(a,u,b,P,S){super(a,P,S),this.cell=u,this.index=b}}class fn extends r{constructor(a){super(a),this.cellToApiMap_=new Map,this.controller_.valueController.cellControllers.forEach(b=>{const P=new Mt(b);this.cellToApiMap_.set(b,P)})}get value(){return this.controller_.value}cell(a,u){const b=this.controller_.valueController,P=b.cellControllers[u*b.size[0]+a];return this.cellToApiMap_.get(P)}on(a,u){const b=u.bind(this);this.controller_.value.emitter.on(a,P=>{const S=this.controller_.valueController,j=S.findCellByValue(P.rawValue);if(!j)return;const Y=this.cellToApiMap_.get(j);if(!Y)return;const ue=S.cellControllers.indexOf(j);b(new At(this,Y,[ue%S.size[0],Math.floor(ue/S.size[0])],P.rawValue,void 0))})}}const vn=C("rad");class ts{constructor(a,u){this.element=a.createElement("div"),this.element.classList.add(vn()),u.viewProps.bindClassModifiers(this.element);const b=a.createElement("label");b.classList.add(vn("l")),this.element.appendChild(b);const P=a.createElement("input");P.classList.add(vn("i")),P.name=u.name,P.type="radio",u.viewProps.bindDisabled(P),b.appendChild(P),this.inputElement=P;const S=a.createElement("div");S.classList.add(vn("b")),b.appendChild(S);const j=a.createElement("div");j.classList.add(vn("t")),S.appendChild(j),L(u.props,"title",Y=>{j.textContent=Y})}}class ns{constructor(a,u){this.props=u.props,this.viewProps=u.viewProps,this.view=new ts(a,{name:u.name,props:this.props,viewProps:this.viewProps})}}class Un{constructor(a,u){this.cellCs_=[],this.cellValues_=[],this.onCellInputChange_=this.onCellInputChange_.bind(this),this.size=u.size;const[b,P]=this.size;for(let S=0;S<P;S++)for(let j=0;j<b;j++){const Y=new ns(a,{name:u.groupName,props:$.fromObject(Object.assign({},u.cellConfig(j,S))),viewProps:_e.create()});this.cellCs_.push(Y),this.cellValues_.push(u.cellConfig(j,S).value)}this.value=u.value,A(this.value,S=>{const j=this.findCellByValue(S);j&&(j.view.inputElement.checked=!0)}),this.viewProps=_e.create(),this.view=new mt(a,{viewProps:this.viewProps,viewName:"radgrid"}),this.view.element.style.gridTemplateColumns=`repeat(${b}, 1fr)`,this.cellCs_.forEach(S=>{S.view.inputElement.addEventListener("change",this.onCellInputChange_),this.view.element.appendChild(S.view.element)})}get cellControllers(){return this.cellCs_}findCellByValue(a){const u=this.cellValues_.findIndex(b=>b===a);return u<0?null:this.cellCs_[u]}onCellInputChange_(a){const u=a.currentTarget,b=this.cellCs_.findIndex(P=>P.view.inputElement===u);b<0||(this.value.rawValue=this.cellValues_[b])}}const St=function(){return{id:"radiogrid",type:"blade",accept(m){const a=pe,u=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 u?{params:u}:null},controller(m){return new wt(m.document,{blade:m.blade,props:$.fromObject({label:m.params.label}),valueController:new Un(m.document,{groupName:m.params.groupName,cellConfig:m.params.cells,size:m.params.size,value:K(m.params.value)})})},api(m){return!(m.controller instanceof wt)||!(m.controller.valueController instanceof Un)?null:new fn(m.controller)}}}();function xi(m){return{id:"input-radiogrid",type:"input",accept(a,u){if(!m.isType(a))return null;const b=pe,P=te(u,{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 Un(a.document,{cellConfig:a.params.cells,groupName:a.params.groupName,size:a.params.size,value:a.value})}}const ar=xi({isType:m=>typeof m=="number",binding:{reader:m=>Ns,writer:m=>We}}),lr=xi({isType:m=>typeof m=="string",binding:{reader:m=>Ei,writer:m=>We}}),cr=xi({isType:m=>typeof m=="boolean",binding:{reader:m=>en,writer:m=>We}}),is=[Hs,kt,bi,Rn,St,cr,ar,lr];i.ButtonCellApi=Yi,i.ButtonGridApi=qi,i.ButtonGridController=ci,i.CubicBezier=vt,i.CubicBezierApi=Qi,i.CubicBezierAssembly=ui,i.CubicBezierController=zn,i.CubicBezierGraphController=rt,i.CubicBezierGraphView=Le,i.CubicBezierPickerController=Hi,i.CubicBezierPickerView=Zi,i.CubicBezierPreviewView=Ut,i.CubicBezierView=Wi,i.FpsGraphBladeApi=we,i.FpsGraphController=vi,i.FpsView=Re,i.Fpswatch=Me,i.Interval=Ue,i.IntervalAssembly=gi,i.IntervalConstraint=dn,i.RadioCellApi=Mt,i.RadioController=ns,i.RadioGridApi=fn,i.RadioGridController=Un,i.RadioView=ts,i.RangeSliderController=wi,i.RangeSliderTextController=dt,i.RangeSliderTextView=jn,i.RangeSliderView=mn,i.TpRadioGridChangeEvent=At,i.plugins=is,Object.defineProperty(i,"__esModule",{value:!0})})})(Ps,Ps.exports);var po=Ps.exports;const Mp=Wo({__proto__:null,default:Ll(po)},[po]);let Wt,Li;const Ap=(v="tres-container")=>{Wt||(Wt=new kp.Pane({container:document.querySelector(v)||void 0}),Wt.registerPlugin(Mp),Li=Wt.addBlade({view:"fpsgraph",label:"fpsgraph"}));function n(){Wt&&Wt.dispose()}return g.onMounted(()=>{const{onBeforeLoop:i,onAfterLoop:r,resume:o}=Te.useRenderLoop();o(),i(()=>Li.begin()),r(()=>Li.end())}),g.onUnmounted(()=>{n()}),{pane:Wt,fpsGraph:Li,disposeTweakPane:n}};Z.Box=jc,Z.Circle=Gc,Z.Cone=Xc,Z.ContactShadows=vc,Z.Dodecahedron=Qc,Z.Environment=Bl,Z.FBXModel=_c,Z.GLTFModel=gc,Z.Icosahedron=Jc,Z.KeyboardControls=Ac,Z.Levioso=uc,Z.MapControls=Tc,Z.MeshWobbleMaterial=Nc,Z.MouseParallax=Hl,Z.Octahedron=tp,Z.OrbitControls=Cc,Z.Plane=rp,Z.PointerLockControls=Dc,Z.Precipitation=rc,Z.Ring=lp,Z.ScrollControls=Ec,Z.Smoke=pc,Z.Sphere=up,Z.Stars=nc,Z.Tetrahedron=fp,Z.Text3D=El,Z.Torus=gp,Z.TorusKnot=yp,Z.TransformControls=Lc,Z.Tube=Pp,Z.useAnimations=Ol,Z.useEnvironment=to,Z.useFBX=lo,Z.useGLTF=ao,Z.useMouseParallax=oo,Z.useProgress=yc,Z.useTweakPane=Ap,Object.defineProperty(Z,Symbol.toStringTag,{value:"Module"})});
|