@tresjs/cientos 1.7.0 → 1.8.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/useAnimations.d.ts +9 -0
- package/dist/core/useCientos.d.ts +6 -0
- package/dist/core/useEnvironment/const.d.ts +31 -0
- package/dist/core/useEnvironment/index.d.ts +14 -0
- package/dist/core/useFBX/index.d.ts +7 -0
- package/dist/core/useGLTF/component.d.ts +24 -0
- package/dist/core/useGLTF/index.d.ts +23 -0
- package/dist/core/usePamCameraMouse/component.d.ts +26 -0
- package/dist/core/usePamCameraMouse/index.d.ts +2 -0
- package/dist/index.d.ts +3 -1
- package/dist/trescientos.js +2243 -2065
- package/dist/trescientos.umd.cjs +10 -10
- package/dist/utils/index.d.ts +18 -0
- package/package.json +3 -3
package/dist/trescientos.umd.cjs
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: @tresjs/cientos
|
|
3
|
-
* version: v1.
|
|
3
|
+
* version: v1.8.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(pe,M){typeof exports=="object"&&typeof module<"u"?M(exports,require("vue"),require("@tresjs/core"),require("three")):typeof define=="function"&&define.amd?define(["exports","vue","@tresjs/core","three"],M):(pe=typeof globalThis<"u"?globalThis:pe||self,M(pe.trescientos={},pe.Vue,pe.TresjsCore,pe.Three))})(this,function(pe,M,ln,f){"use strict";function Ao(g,i){for(var r=0;r<i.length;r++){const s=i[r];if(typeof s!="string"&&!Array.isArray(s)){for(const a in s)if(a!=="default"&&!(a in g)){const c=Object.getOwnPropertyDescriptor(s,a);c&&Object.defineProperty(g,a,c.get?c:{enumerable:!0,get:()=>s[a]})}}}return Object.freeze(Object.defineProperty(g,Symbol.toStringTag,{value:"Module"}))}function Tn(g){return Tn=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(i){return typeof i}:function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},Tn(g)}function Vo(g,i){if(Tn(g)!=="object"||g===null)return g;var r=g[Symbol.toPrimitive];if(r!==void 0){var s=r.call(g,i||"default");if(Tn(s)!=="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(i==="string"?String:Number)(g)}function Io(g){var i=Vo(g,"string");return Tn(i)==="symbol"?i:String(i)}function k(g,i,r){return i=Io(i),i in g?Object.defineProperty(g,i,{value:r,enumerable:!0,configurable:!0,writable:!0}):g[i]=r,g}var $e=Uint8Array,xt=Uint16Array,Ji=Uint32Array,mr=new $e([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]),fr=new $e([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]),Do=new $e([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),vr=function(g,i){for(var r=new xt(31),s=0;s<31;++s)r[s]=i+=1<<g[s-1];for(var a=new Ji(r[30]),s=1;s<30;++s)for(var c=r[s];c<r[s+1];++c)a[c]=c-r[s]<<5|s;return[r,a]},br=vr(mr,2),gr=br[0],To=br[1];gr[28]=258,To[258]=28;for(var Oo=vr(fr,0),Eo=Oo[0],Hi=new xt(32768),Ce=0;Ce<32768;++Ce){var Ct=(Ce&43690)>>>1|(Ce&21845)<<1;Ct=(Ct&52428)>>>2|(Ct&13107)<<2,Ct=(Ct&61680)>>>4|(Ct&3855)<<4,Hi[Ce]=((Ct&65280)>>>8|(Ct&255)<<8)>>>1}for(var On=function(g,i,r){for(var s=g.length,a=0,c=new xt(i);a<s;++a)++c[g[a]-1];var u=new xt(i);for(a=0;a<i;++a)u[a]=u[a-1]+c[a-1]<<1;var h;if(r){h=new xt(1<<i);var m=15-i;for(a=0;a<s;++a)if(g[a])for(var _=a<<4|g[a],y=i-g[a],w=u[g[a]-1]++<<y,x=w|(1<<y)-1;w<=x;++w)h[Hi[w]>>>m]=_}else for(h=new xt(s),a=0;a<s;++a)g[a]&&(h[a]=Hi[u[g[a]-1]++]>>>15-g[a]);return h},En=new $e(288),Ce=0;Ce<144;++Ce)En[Ce]=8;for(var Ce=144;Ce<256;++Ce)En[Ce]=9;for(var Ce=256;Ce<280;++Ce)En[Ce]=7;for(var Ce=280;Ce<288;++Ce)En[Ce]=8;for(var _r=new $e(32),Ce=0;Ce<32;++Ce)_r[Ce]=5;var Bo=On(En,9,1),No=On(_r,5,1),es=function(g){for(var i=g[0],r=1;r<g.length;++r)g[r]>i&&(i=g[r]);return i},He=function(g,i,r){var s=i/8|0;return(g[s]|g[s+1]<<8)>>(i&7)&r},ts=function(g,i){var r=i/8|0;return(g[r]|g[r+1]<<8|g[r+2]<<16)>>(i&7)},Fo=function(g){return(g/8|0)+(g&7&&1)},jo=function(g,i,r){(i==null||i<0)&&(i=0),(r==null||r>g.length)&&(r=g.length);var s=new(g instanceof xt?xt:g instanceof Ji?Ji:$e)(r-i);return s.set(g.subarray(i,r)),s},zo=function(g,i,r){var s=g.length;if(!s||r&&!r.l&&s<5)return i||new $e(0);var a=!i||r,c=!r||r.i;r||(r={}),i||(i=new $e(s*3));var u=function(Ve){var Oe=i.length;if(Ve>Oe){var we=new $e(Math.max(Oe*2,Ve));we.set(i),i=we}},h=r.f||0,m=r.p||0,_=r.b||0,y=r.l,w=r.d,x=r.m,L=r.n,E=s*8;do{if(!y){r.f=h=He(g,m,1);var D=He(g,m+1,3);if(m+=3,D)if(D==1)y=Bo,w=No,x=9,L=5;else if(D==2){var B=He(g,m,31)+257,N=He(g,m+10,15)+4,Q=B+He(g,m+5,31)+1;m+=14;for(var $=new $e(Q),j=new $e(19),F=0;F<N;++F)j[Do[F]]=He(g,m+F*3,7);m+=N*3;for(var X=es(j),Y=(1<<X)-1,Z=On(j,X,1),F=0;F<Q;){var ue=Z[He(g,m,Y)];m+=ue&15;var O=ue>>>4;if(O<16)$[F++]=O;else{var ge=0,ce=0;for(O==16?(ce=3+He(g,m,3),m+=2,ge=$[F-1]):O==17?(ce=3+He(g,m,7),m+=3):O==18&&(ce=11+He(g,m,127),m+=7);ce--;)$[F++]=ge}}var me=$.subarray(0,B),he=$.subarray(B);x=es(me),L=es(he),y=On(me,x,1),w=On(he,L,1)}else throw"invalid block type";else{var O=Fo(m)+4,G=g[O-4]|g[O-3]<<8,z=O+G;if(z>s){if(c)throw"unexpected EOF";break}a&&u(_+G),i.set(g.subarray(O,z),_),r.b=_+=G,r.p=m=z*8;continue}if(m>E){if(c)throw"unexpected EOF";break}}a&&u(_+131072);for(var te=(1<<x)-1,q=(1<<L)-1,Pe=m;;Pe=m){var ge=y[ts(g,m)&te],fe=ge>>>4;if(m+=ge&15,m>E){if(c)throw"unexpected EOF";break}if(!ge)throw"invalid length/literal";if(fe<256)i[_++]=fe;else if(fe==256){Pe=m,y=null;break}else{var ae=fe-254;if(fe>264){var F=fe-257,ne=mr[F];ae=He(g,m,(1<<ne)-1)+gr[F],m+=ne}var be=w[ts(g,m)&q],V=be>>>4;if(!be)throw"invalid distance";m+=be&15;var he=Eo[V];if(V>3){var ne=fr[V];he+=ts(g,m)&(1<<ne)-1,m+=ne}if(m>E){if(c)throw"unexpected EOF";break}a&&u(_+131072);for(var le=_+ae;_<le;_+=4)i[_]=i[_-he],i[_+1]=i[_+1-he],i[_+2]=i[_+2-he],i[_+3]=i[_+3-he];_=le}}r.l=y,r.p=Pe,r.b=_,y&&(h=1,r.m=x,r.d=w,r.n=L)}while(!h);return _==i.length?i:jo(i,0,_)},Uo=new $e(0),Go=function(g){if((g[0]&15)!=8||g[0]>>>4>7||(g[0]<<8|g[1])%31)throw"invalid zlib data";if(g[1]&32)throw"invalid zlib data: preset dictionaries not supported"};function Ro(g,i){return zo((Go(g),g.subarray(2,-4)),i)}var Ko=typeof TextDecoder<"u"&&new TextDecoder,$o=0;try{Ko.decode(Uo,{stream:!0}),$o=1}catch{}class Xo extends f.Object3D{constructor(i,r){super(),k(this,"isTransformControls",!0),k(this,"visible",!1),k(this,"domElement",void 0),k(this,"raycaster",new f.Raycaster),k(this,"gizmo",void 0),k(this,"plane",void 0),k(this,"tempVector",new f.Vector3),k(this,"tempVector2",new f.Vector3),k(this,"tempQuaternion",new f.Quaternion),k(this,"unit",{X:new f.Vector3(1,0,0),Y:new f.Vector3(0,1,0),Z:new f.Vector3(0,0,1)}),k(this,"pointStart",new f.Vector3),k(this,"pointEnd",new f.Vector3),k(this,"offset",new f.Vector3),k(this,"rotationAxis",new f.Vector3),k(this,"startNorm",new f.Vector3),k(this,"endNorm",new f.Vector3),k(this,"rotationAngle",0),k(this,"cameraPosition",new f.Vector3),k(this,"cameraQuaternion",new f.Quaternion),k(this,"cameraScale",new f.Vector3),k(this,"parentPosition",new f.Vector3),k(this,"parentQuaternion",new f.Quaternion),k(this,"parentQuaternionInv",new f.Quaternion),k(this,"parentScale",new f.Vector3),k(this,"worldPositionStart",new f.Vector3),k(this,"worldQuaternionStart",new f.Quaternion),k(this,"worldScaleStart",new f.Vector3),k(this,"worldPosition",new f.Vector3),k(this,"worldQuaternion",new f.Quaternion),k(this,"worldQuaternionInv",new f.Quaternion),k(this,"worldScale",new f.Vector3),k(this,"eye",new f.Vector3),k(this,"positionStart",new f.Vector3),k(this,"quaternionStart",new f.Quaternion),k(this,"scaleStart",new f.Vector3),k(this,"camera",void 0),k(this,"object",void 0),k(this,"enabled",!0),k(this,"axis",null),k(this,"mode","translate"),k(this,"translationSnap",null),k(this,"rotationSnap",null),k(this,"scaleSnap",null),k(this,"space","world"),k(this,"size",1),k(this,"dragging",!1),k(this,"showX",!0),k(this,"showY",!0),k(this,"showZ",!0),k(this,"changeEvent",{type:"change"}),k(this,"mouseDownEvent",{type:"mouseDown",mode:this.mode}),k(this,"mouseUpEvent",{type:"mouseUp",mode:this.mode}),k(this,"objectChangeEvent",{type:"objectChange"}),k(this,"intersectObjectWithRay",(a,c,u)=>{const h=c.intersectObject(a,!0);for(let m=0;m<h.length;m++)if(h[m].object.visible||u)return h[m];return!1}),k(this,"attach",a=>(this.object=a,this.visible=!0,this)),k(this,"detach",()=>(this.object=void 0,this.visible=!1,this.axis=null,this)),k(this,"reset",()=>this.enabled?(this.dragging&&this.object!==void 0&&(this.object.position.copy(this.positionStart),this.object.quaternion.copy(this.quaternionStart),this.object.scale.copy(this.scaleStart),this.dispatchEvent(this.changeEvent),this.dispatchEvent(this.objectChangeEvent),this.pointStart.copy(this.pointEnd)),this):this),k(this,"updateMatrixWorld",()=>{this.object!==void 0&&(this.object.updateMatrixWorld(),this.object.parent===null?console.error("TransformControls: The attached 3D object must be a part of the scene graph."):this.object.parent.matrixWorld.decompose(this.parentPosition,this.parentQuaternion,this.parentScale),this.object.matrixWorld.decompose(this.worldPosition,this.worldQuaternion,this.worldScale),this.parentQuaternionInv.copy(this.parentQuaternion).invert(),this.worldQuaternionInv.copy(this.worldQuaternion).invert()),this.camera.updateMatrixWorld(),this.camera.matrixWorld.decompose(this.cameraPosition,this.cameraQuaternion,this.cameraScale),this.eye.copy(this.cameraPosition).sub(this.worldPosition).normalize(),super.updateMatrixWorld()}),k(this,"pointerHover",a=>{if(this.object===void 0||this.dragging===!0)return;this.raycaster.setFromCamera(a,this.camera);const c=this.intersectObjectWithRay(this.gizmo.picker[this.mode],this.raycaster);c?this.axis=c.object.name:this.axis=null}),k(this,"pointerDown",a=>{if(!(this.object===void 0||this.dragging===!0||a.button!==0)&&this.axis!==null){this.raycaster.setFromCamera(a,this.camera);const c=this.intersectObjectWithRay(this.plane,this.raycaster,!0);if(c){let u=this.space;if(this.mode==="scale"?u="local":(this.axis==="E"||this.axis==="XYZE"||this.axis==="XYZ")&&(u="world"),u==="local"&&this.mode==="rotate"){const h=this.rotationSnap;this.axis==="X"&&h&&(this.object.rotation.x=Math.round(this.object.rotation.x/h)*h),this.axis==="Y"&&h&&(this.object.rotation.y=Math.round(this.object.rotation.y/h)*h),this.axis==="Z"&&h&&(this.object.rotation.z=Math.round(this.object.rotation.z/h)*h)}this.object.updateMatrixWorld(),this.object.parent&&this.object.parent.updateMatrixWorld(),this.positionStart.copy(this.object.position),this.quaternionStart.copy(this.object.quaternion),this.scaleStart.copy(this.object.scale),this.object.matrixWorld.decompose(this.worldPositionStart,this.worldQuaternionStart,this.worldScaleStart),this.pointStart.copy(c.point).sub(this.worldPositionStart)}this.dragging=!0,this.mouseDownEvent.mode=this.mode,this.dispatchEvent(this.mouseDownEvent)}}),k(this,"pointerMove",a=>{const c=this.axis,u=this.mode,h=this.object;let m=this.space;if(u==="scale"?m="local":(c==="E"||c==="XYZE"||c==="XYZ")&&(m="world"),h===void 0||c===null||this.dragging===!1||a.button!==-1)return;this.raycaster.setFromCamera(a,this.camera);const _=this.intersectObjectWithRay(this.plane,this.raycaster,!0);if(_){if(this.pointEnd.copy(_.point).sub(this.worldPositionStart),u==="translate")this.offset.copy(this.pointEnd).sub(this.pointStart),m==="local"&&c!=="XYZ"&&this.offset.applyQuaternion(this.worldQuaternionInv),c.indexOf("X")===-1&&(this.offset.x=0),c.indexOf("Y")===-1&&(this.offset.y=0),c.indexOf("Z")===-1&&(this.offset.z=0),m==="local"&&c!=="XYZ"?this.offset.applyQuaternion(this.quaternionStart).divide(this.parentScale):this.offset.applyQuaternion(this.parentQuaternionInv).divide(this.parentScale),h.position.copy(this.offset).add(this.positionStart),this.translationSnap&&(m==="local"&&(h.position.applyQuaternion(this.tempQuaternion.copy(this.quaternionStart).invert()),c.search("X")!==-1&&(h.position.x=Math.round(h.position.x/this.translationSnap)*this.translationSnap),c.search("Y")!==-1&&(h.position.y=Math.round(h.position.y/this.translationSnap)*this.translationSnap),c.search("Z")!==-1&&(h.position.z=Math.round(h.position.z/this.translationSnap)*this.translationSnap),h.position.applyQuaternion(this.quaternionStart)),m==="world"&&(h.parent&&h.position.add(this.tempVector.setFromMatrixPosition(h.parent.matrixWorld)),c.search("X")!==-1&&(h.position.x=Math.round(h.position.x/this.translationSnap)*this.translationSnap),c.search("Y")!==-1&&(h.position.y=Math.round(h.position.y/this.translationSnap)*this.translationSnap),c.search("Z")!==-1&&(h.position.z=Math.round(h.position.z/this.translationSnap)*this.translationSnap),h.parent&&h.position.sub(this.tempVector.setFromMatrixPosition(h.parent.matrixWorld))));else if(u==="scale"){if(c.search("XYZ")!==-1){let y=this.pointEnd.length()/this.pointStart.length();this.pointEnd.dot(this.pointStart)<0&&(y*=-1),this.tempVector2.set(y,y,y)}else this.tempVector.copy(this.pointStart),this.tempVector2.copy(this.pointEnd),this.tempVector.applyQuaternion(this.worldQuaternionInv),this.tempVector2.applyQuaternion(this.worldQuaternionInv),this.tempVector2.divide(this.tempVector),c.search("X")===-1&&(this.tempVector2.x=1),c.search("Y")===-1&&(this.tempVector2.y=1),c.search("Z")===-1&&(this.tempVector2.z=1);h.scale.copy(this.scaleStart).multiply(this.tempVector2),this.scaleSnap&&this.object&&(c.search("X")!==-1&&(this.object.scale.x=Math.round(h.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap),c.search("Y")!==-1&&(h.scale.y=Math.round(h.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap),c.search("Z")!==-1&&(h.scale.z=Math.round(h.scale.z/this.scaleSnap)*this.scaleSnap||this.scaleSnap))}else if(u==="rotate"){this.offset.copy(this.pointEnd).sub(this.pointStart);const y=20/this.worldPosition.distanceTo(this.tempVector.setFromMatrixPosition(this.camera.matrixWorld));c==="E"?(this.rotationAxis.copy(this.eye),this.rotationAngle=this.pointEnd.angleTo(this.pointStart),this.startNorm.copy(this.pointStart).normalize(),this.endNorm.copy(this.pointEnd).normalize(),this.rotationAngle*=this.endNorm.cross(this.startNorm).dot(this.eye)<0?1:-1):c==="XYZE"?(this.rotationAxis.copy(this.offset).cross(this.eye).normalize(),this.rotationAngle=this.offset.dot(this.tempVector.copy(this.rotationAxis).cross(this.eye))*y):(c==="X"||c==="Y"||c==="Z")&&(this.rotationAxis.copy(this.unit[c]),this.tempVector.copy(this.unit[c]),m==="local"&&this.tempVector.applyQuaternion(this.worldQuaternion),this.rotationAngle=this.offset.dot(this.tempVector.cross(this.eye).normalize())*y),this.rotationSnap&&(this.rotationAngle=Math.round(this.rotationAngle/this.rotationSnap)*this.rotationSnap),m==="local"&&c!=="E"&&c!=="XYZE"?(h.quaternion.copy(this.quaternionStart),h.quaternion.multiply(this.tempQuaternion.setFromAxisAngle(this.rotationAxis,this.rotationAngle)).normalize()):(this.rotationAxis.applyQuaternion(this.parentQuaternionInv),h.quaternion.copy(this.tempQuaternion.setFromAxisAngle(this.rotationAxis,this.rotationAngle)),h.quaternion.multiply(this.quaternionStart).normalize())}this.dispatchEvent(this.changeEvent),this.dispatchEvent(this.objectChangeEvent)}}),k(this,"pointerUp",a=>{a.button===0&&(this.dragging&&this.axis!==null&&(this.mouseUpEvent.mode=this.mode,this.dispatchEvent(this.mouseUpEvent)),this.dragging=!1,this.axis=null)}),k(this,"getPointer",a=>{var c;if(this.domElement&&(c=this.domElement.ownerDocument)!==null&&c!==void 0&&c.pointerLockElement)return{x:0,y:0,button:a.button};{var u;const h=a.changedTouches?a.changedTouches[0]:a,m=(u=this.domElement)===null||u===void 0?void 0:u.getBoundingClientRect();return{x:(h.clientX-m.left)/m.width*2-1,y:-(h.clientY-m.top)/m.height*2+1,button:a.button}}}),k(this,"onPointerHover",a=>{if(this.enabled)switch(a.pointerType){case"mouse":case"pen":this.pointerHover(this.getPointer(a));break}}),k(this,"onPointerDown",a=>{!this.enabled||!this.domElement||(this.domElement.style.touchAction="none",this.domElement.ownerDocument.addEventListener("pointermove",this.onPointerMove),this.pointerHover(this.getPointer(a)),this.pointerDown(this.getPointer(a)))}),k(this,"onPointerMove",a=>{this.enabled&&this.pointerMove(this.getPointer(a))}),k(this,"onPointerUp",a=>{!this.enabled||!this.domElement||(this.domElement.style.touchAction="",this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.pointerUp(this.getPointer(a)))}),k(this,"getMode",()=>this.mode),k(this,"setMode",a=>{this.mode=a}),k(this,"setTranslationSnap",a=>{this.translationSnap=a}),k(this,"setRotationSnap",a=>{this.rotationSnap=a}),k(this,"setScaleSnap",a=>{this.scaleSnap=a}),k(this,"setSize",a=>{this.size=a}),k(this,"setSpace",a=>{this.space=a}),k(this,"update",()=>{console.warn("THREE.TransformControls: update function has no more functionality and therefore has been deprecated.")}),k(this,"connect",a=>{a===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),this.domElement=a,this.domElement.addEventListener("pointerdown",this.onPointerDown),this.domElement.addEventListener("pointermove",this.onPointerHover),this.domElement.ownerDocument.addEventListener("pointerup",this.onPointerUp)}),k(this,"dispose",()=>{var a,c,u,h,m,_;(a=this.domElement)===null||a===void 0||a.removeEventListener("pointerdown",this.onPointerDown),(c=this.domElement)===null||c===void 0||c.removeEventListener("pointermove",this.onPointerHover),(u=this.domElement)===null||u===void 0||(h=u.ownerDocument)===null||h===void 0||h.removeEventListener("pointermove",this.onPointerMove),(m=this.domElement)===null||m===void 0||(_=m.ownerDocument)===null||_===void 0||_.removeEventListener("pointerup",this.onPointerUp),this.traverse(y=>{const w=y;w.geometry&&w.geometry.dispose(),w.material&&w.material.dispose()})}),this.domElement=r,this.camera=i,this.gizmo=new Yo,this.add(this.gizmo),this.plane=new qo,this.add(this.plane);const s=(a,c)=>{let u=c;Object.defineProperty(this,a,{get:function(){return u!==void 0?u:c},set:function(h){u!==h&&(u=h,this.plane[a]=h,this.gizmo[a]=h,this.dispatchEvent({type:a+"-changed",value:h}),this.dispatchEvent(this.changeEvent))}}),this[a]=c,this.plane[a]=c,this.gizmo[a]=c};s("camera",this.camera),s("object",this.object),s("enabled",this.enabled),s("axis",this.axis),s("mode",this.mode),s("translationSnap",this.translationSnap),s("rotationSnap",this.rotationSnap),s("scaleSnap",this.scaleSnap),s("space",this.space),s("size",this.size),s("dragging",this.dragging),s("showX",this.showX),s("showY",this.showY),s("showZ",this.showZ),s("worldPosition",this.worldPosition),s("worldPositionStart",this.worldPositionStart),s("worldQuaternion",this.worldQuaternion),s("worldQuaternionStart",this.worldQuaternionStart),s("cameraPosition",this.cameraPosition),s("cameraQuaternion",this.cameraQuaternion),s("pointStart",this.pointStart),s("pointEnd",this.pointEnd),s("rotationAxis",this.rotationAxis),s("rotationAngle",this.rotationAngle),s("eye",this.eye),r!==void 0&&this.connect(r)}}class Yo extends f.Object3D{constructor(){super(),k(this,"isTransformControlsGizmo",!0),k(this,"type","TransformControlsGizmo"),k(this,"tempVector",new f.Vector3(0,0,0)),k(this,"tempEuler",new f.Euler),k(this,"alignVector",new f.Vector3(0,1,0)),k(this,"zeroVector",new f.Vector3(0,0,0)),k(this,"lookAtMatrix",new f.Matrix4),k(this,"tempQuaternion",new f.Quaternion),k(this,"tempQuaternion2",new f.Quaternion),k(this,"identityQuaternion",new f.Quaternion),k(this,"unitX",new f.Vector3(1,0,0)),k(this,"unitY",new f.Vector3(0,1,0)),k(this,"unitZ",new f.Vector3(0,0,1)),k(this,"gizmo",void 0),k(this,"picker",void 0),k(this,"helper",void 0),k(this,"rotationAxis",new f.Vector3),k(this,"cameraPosition",new f.Vector3),k(this,"worldPositionStart",new f.Vector3),k(this,"worldQuaternionStart",new f.Quaternion),k(this,"worldPosition",new f.Vector3),k(this,"worldQuaternion",new f.Quaternion),k(this,"eye",new f.Vector3),k(this,"camera",null),k(this,"enabled",!0),k(this,"axis",null),k(this,"mode","translate"),k(this,"space","world"),k(this,"size",1),k(this,"dragging",!1),k(this,"showX",!0),k(this,"showY",!0),k(this,"showZ",!0),k(this,"updateMatrixWorld",()=>{let fe=this.space;this.mode==="scale"&&(fe="local");const ae=fe==="local"?this.worldQuaternion:this.identityQuaternion;this.gizmo.translate.visible=this.mode==="translate",this.gizmo.rotate.visible=this.mode==="rotate",this.gizmo.scale.visible=this.mode==="scale",this.helper.translate.visible=this.mode==="translate",this.helper.rotate.visible=this.mode==="rotate",this.helper.scale.visible=this.mode==="scale";let ne=[];ne=ne.concat(this.picker[this.mode].children),ne=ne.concat(this.gizmo[this.mode].children),ne=ne.concat(this.helper[this.mode].children);for(let be=0;be<ne.length;be++){const V=ne[be];V.visible=!0,V.rotation.set(0,0,0),V.position.copy(this.worldPosition);let le;if(this.camera.isOrthographicCamera?le=(this.camera.top-this.camera.bottom)/this.camera.zoom:le=this.worldPosition.distanceTo(this.cameraPosition)*Math.min(1.9*Math.tan(Math.PI*this.camera.fov/360)/this.camera.zoom,7),V.scale.set(1,1,1).multiplyScalar(le*this.size/7),V.tag==="helper"){V.visible=!1,V.name==="AXIS"?(V.position.copy(this.worldPositionStart),V.visible=!!this.axis,this.axis==="X"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,0)),V.quaternion.copy(ae).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(ae).dot(this.eye))>.9&&(V.visible=!1)),this.axis==="Y"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,Math.PI/2)),V.quaternion.copy(ae).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(ae).dot(this.eye))>.9&&(V.visible=!1)),this.axis==="Z"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0)),V.quaternion.copy(ae).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(ae).dot(this.eye))>.9&&(V.visible=!1)),this.axis==="XYZE"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0)),this.alignVector.copy(this.rotationAxis),V.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.zeroVector,this.alignVector,this.unitY)),V.quaternion.multiply(this.tempQuaternion),V.visible=this.dragging),this.axis==="E"&&(V.visible=!1)):V.name==="START"?(V.position.copy(this.worldPositionStart),V.visible=this.dragging):V.name==="END"?(V.position.copy(this.worldPosition),V.visible=this.dragging):V.name==="DELTA"?(V.position.copy(this.worldPositionStart),V.quaternion.copy(this.worldQuaternionStart),this.tempVector.set(1e-10,1e-10,1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1),this.tempVector.applyQuaternion(this.worldQuaternionStart.clone().invert()),V.scale.copy(this.tempVector),V.visible=this.dragging):(V.quaternion.copy(ae),this.dragging?V.position.copy(this.worldPositionStart):V.position.copy(this.worldPosition),this.axis&&(V.visible=this.axis.search(V.name)!==-1));continue}V.quaternion.copy(ae),this.mode==="translate"||this.mode==="scale"?((V.name==="X"||V.name==="XYZX")&&Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(ae).dot(this.eye))>.99&&(V.scale.set(1e-10,1e-10,1e-10),V.visible=!1),(V.name==="Y"||V.name==="XYZY")&&Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(ae).dot(this.eye))>.99&&(V.scale.set(1e-10,1e-10,1e-10),V.visible=!1),(V.name==="Z"||V.name==="XYZZ")&&Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(ae).dot(this.eye))>.99&&(V.scale.set(1e-10,1e-10,1e-10),V.visible=!1),V.name==="XY"&&Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(ae).dot(this.eye))<.2&&(V.scale.set(1e-10,1e-10,1e-10),V.visible=!1),V.name==="YZ"&&Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(ae).dot(this.eye))<.2&&(V.scale.set(1e-10,1e-10,1e-10),V.visible=!1),V.name==="XZ"&&Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(ae).dot(this.eye))<.2&&(V.scale.set(1e-10,1e-10,1e-10),V.visible=!1),V.name.search("X")!==-1&&(this.alignVector.copy(this.unitX).applyQuaternion(ae).dot(this.eye)<0?V.tag==="fwd"?V.visible=!1:V.scale.x*=-1:V.tag==="bwd"&&(V.visible=!1)),V.name.search("Y")!==-1&&(this.alignVector.copy(this.unitY).applyQuaternion(ae).dot(this.eye)<0?V.tag==="fwd"?V.visible=!1:V.scale.y*=-1:V.tag==="bwd"&&(V.visible=!1)),V.name.search("Z")!==-1&&(this.alignVector.copy(this.unitZ).applyQuaternion(ae).dot(this.eye)<0?V.tag==="fwd"?V.visible=!1:V.scale.z*=-1:V.tag==="bwd"&&(V.visible=!1))):this.mode==="rotate"&&(this.tempQuaternion2.copy(ae),this.alignVector.copy(this.eye).applyQuaternion(this.tempQuaternion.copy(ae).invert()),V.name.search("E")!==-1&&V.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.eye,this.zeroVector,this.unitY)),V.name==="X"&&(this.tempQuaternion.setFromAxisAngle(this.unitX,Math.atan2(-this.alignVector.y,this.alignVector.z)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),V.quaternion.copy(this.tempQuaternion)),V.name==="Y"&&(this.tempQuaternion.setFromAxisAngle(this.unitY,Math.atan2(this.alignVector.x,this.alignVector.z)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),V.quaternion.copy(this.tempQuaternion)),V.name==="Z"&&(this.tempQuaternion.setFromAxisAngle(this.unitZ,Math.atan2(this.alignVector.y,this.alignVector.x)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),V.quaternion.copy(this.tempQuaternion))),V.visible=V.visible&&(V.name.indexOf("X")===-1||this.showX),V.visible=V.visible&&(V.name.indexOf("Y")===-1||this.showY),V.visible=V.visible&&(V.name.indexOf("Z")===-1||this.showZ),V.visible=V.visible&&(V.name.indexOf("E")===-1||this.showX&&this.showY&&this.showZ),V.material.tempOpacity=V.material.tempOpacity||V.material.opacity,V.material.tempColor=V.material.tempColor||V.material.color.clone(),V.material.color.copy(V.material.tempColor),V.material.opacity=V.material.tempOpacity,this.enabled?this.axis&&(V.name===this.axis?(V.material.opacity=1,V.material.color.lerp(new f.Color(1,1,1),.5)):this.axis.split("").some(function(Ve){return V.name===Ve})?(V.material.opacity=1,V.material.color.lerp(new f.Color(1,1,1),.5)):(V.material.opacity*=.25,V.material.color.lerp(new f.Color(1,1,1),.5))):(V.material.opacity*=.5,V.material.color.lerp(new f.Color(1,1,1),.5))}super.updateMatrixWorld()});const i=new f.MeshBasicMaterial({depthTest:!1,depthWrite:!1,transparent:!0,side:f.DoubleSide,fog:!1,toneMapped:!1}),r=new f.LineBasicMaterial({depthTest:!1,depthWrite:!1,transparent:!0,linewidth:1,fog:!1,toneMapped:!1}),s=i.clone();s.opacity=.15;const a=i.clone();a.opacity=.33;const c=i.clone();c.color.set(16711680);const u=i.clone();u.color.set(65280);const h=i.clone();h.color.set(255);const m=i.clone();m.opacity=.25;const _=m.clone();_.color.set(16776960);const y=m.clone();y.color.set(65535);const w=m.clone();w.color.set(16711935),i.clone().color.set(16776960);const L=r.clone();L.color.set(16711680);const E=r.clone();E.color.set(65280);const D=r.clone();D.color.set(255);const O=r.clone();O.color.set(65535);const G=r.clone();G.color.set(16711935);const z=r.clone();z.color.set(16776960);const B=r.clone();B.color.set(7895160);const N=z.clone();N.opacity=.25;const Q=new f.CylinderGeometry(0,.05,.2,12,1,!1),$=new f.BoxGeometry(.125,.125,.125),j=new f.BufferGeometry;j.setAttribute("position",new f.Float32BufferAttribute([0,0,0,1,0,0],3));const F=(fe,ae)=>{const ne=new f.BufferGeometry,be=[];for(let V=0;V<=64*ae;++V)be.push(0,Math.cos(V/32*Math.PI)*fe,Math.sin(V/32*Math.PI)*fe);return ne.setAttribute("position",new f.Float32BufferAttribute(be,3)),ne},X=()=>{const fe=new f.BufferGeometry;return fe.setAttribute("position",new f.Float32BufferAttribute([0,0,0,1,1,1],3)),fe},Y={X:[[new f.Mesh(Q,c),[1,0,0],[0,0,-Math.PI/2],null,"fwd"],[new f.Mesh(Q,c),[1,0,0],[0,0,Math.PI/2],null,"bwd"],[new f.Line(j,L)]],Y:[[new f.Mesh(Q,u),[0,1,0],null,null,"fwd"],[new f.Mesh(Q,u),[0,1,0],[Math.PI,0,0],null,"bwd"],[new f.Line(j,E),null,[0,0,Math.PI/2]]],Z:[[new f.Mesh(Q,h),[0,0,1],[Math.PI/2,0,0],null,"fwd"],[new f.Mesh(Q,h),[0,0,1],[-Math.PI/2,0,0],null,"bwd"],[new f.Line(j,D),null,[0,-Math.PI/2,0]]],XYZ:[[new f.Mesh(new f.OctahedronGeometry(.1,0),m.clone()),[0,0,0],[0,0,0]]],XY:[[new f.Mesh(new f.PlaneGeometry(.295,.295),_.clone()),[.15,.15,0]],[new f.Line(j,z),[.18,.3,0],null,[.125,1,1]],[new f.Line(j,z),[.3,.18,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new f.Mesh(new f.PlaneGeometry(.295,.295),y.clone()),[0,.15,.15],[0,Math.PI/2,0]],[new f.Line(j,O),[0,.18,.3],[0,0,Math.PI/2],[.125,1,1]],[new f.Line(j,O),[0,.3,.18],[0,-Math.PI/2,0],[.125,1,1]]],XZ:[[new f.Mesh(new f.PlaneGeometry(.295,.295),w.clone()),[.15,0,.15],[-Math.PI/2,0,0]],[new f.Line(j,G),[.18,0,.3],null,[.125,1,1]],[new f.Line(j,G),[.3,0,.18],[0,-Math.PI/2,0],[.125,1,1]]]},Z={X:[[new f.Mesh(new f.CylinderGeometry(.2,0,1,4,1,!1),s),[.6,0,0],[0,0,-Math.PI/2]]],Y:[[new f.Mesh(new f.CylinderGeometry(.2,0,1,4,1,!1),s),[0,.6,0]]],Z:[[new f.Mesh(new f.CylinderGeometry(.2,0,1,4,1,!1),s),[0,0,.6],[Math.PI/2,0,0]]],XYZ:[[new f.Mesh(new f.OctahedronGeometry(.2,0),s)]],XY:[[new f.Mesh(new f.PlaneGeometry(.4,.4),s),[.2,.2,0]]],YZ:[[new f.Mesh(new f.PlaneGeometry(.4,.4),s),[0,.2,.2],[0,Math.PI/2,0]]],XZ:[[new f.Mesh(new f.PlaneGeometry(.4,.4),s),[.2,0,.2],[-Math.PI/2,0,0]]]},ue={START:[[new f.Mesh(new f.OctahedronGeometry(.01,2),a),null,null,null,"helper"]],END:[[new f.Mesh(new f.OctahedronGeometry(.01,2),a),null,null,null,"helper"]],DELTA:[[new f.Line(X(),a),null,null,null,"helper"]],X:[[new f.Line(j,a.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new f.Line(j,a.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new f.Line(j,a.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},ge={X:[[new f.Line(F(1,.5),L)],[new f.Mesh(new f.OctahedronGeometry(.04,0),c),[0,0,.99],null,[1,3,1]]],Y:[[new f.Line(F(1,.5),E),null,[0,0,-Math.PI/2]],[new f.Mesh(new f.OctahedronGeometry(.04,0),u),[0,0,.99],null,[3,1,1]]],Z:[[new f.Line(F(1,.5),D),null,[0,Math.PI/2,0]],[new f.Mesh(new f.OctahedronGeometry(.04,0),h),[.99,0,0],null,[1,3,1]]],E:[[new f.Line(F(1.25,1),N),null,[0,Math.PI/2,0]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),N),[1.17,0,0],[0,0,-Math.PI/2],[1,1,.001]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),N),[-1.17,0,0],[0,0,Math.PI/2],[1,1,.001]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),N),[0,-1.17,0],[Math.PI,0,0],[1,1,.001]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),N),[0,1.17,0],[0,0,0],[1,1,.001]]],XYZE:[[new f.Line(F(1,1),B),null,[0,Math.PI/2,0]]]},ce={AXIS:[[new f.Line(j,a.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]]},me={X:[[new f.Mesh(new f.TorusGeometry(1,.1,4,24),s),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],Y:[[new f.Mesh(new f.TorusGeometry(1,.1,4,24),s),[0,0,0],[Math.PI/2,0,0]]],Z:[[new f.Mesh(new f.TorusGeometry(1,.1,4,24),s),[0,0,0],[0,0,-Math.PI/2]]],E:[[new f.Mesh(new f.TorusGeometry(1.25,.1,2,24),s)]],XYZE:[[new f.Mesh(new f.SphereGeometry(.7,10,8),s)]]},he={X:[[new f.Mesh($,c),[.8,0,0],[0,0,-Math.PI/2]],[new f.Line(j,L),null,null,[.8,1,1]]],Y:[[new f.Mesh($,u),[0,.8,0]],[new f.Line(j,E),null,[0,0,Math.PI/2],[.8,1,1]]],Z:[[new f.Mesh($,h),[0,0,.8],[Math.PI/2,0,0]],[new f.Line(j,D),null,[0,-Math.PI/2,0],[.8,1,1]]],XY:[[new f.Mesh($,_),[.85,.85,0],null,[2,2,.2]],[new f.Line(j,z),[.855,.98,0],null,[.125,1,1]],[new f.Line(j,z),[.98,.855,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new f.Mesh($,y),[0,.85,.85],null,[.2,2,2]],[new f.Line(j,O),[0,.855,.98],[0,0,Math.PI/2],[.125,1,1]],[new f.Line(j,O),[0,.98,.855],[0,-Math.PI/2,0],[.125,1,1]]],XZ:[[new f.Mesh($,w),[.85,0,.85],null,[2,.2,2]],[new f.Line(j,G),[.855,0,.98],null,[.125,1,1]],[new f.Line(j,G),[.98,0,.855],[0,-Math.PI/2,0],[.125,1,1]]],XYZX:[[new f.Mesh(new f.BoxGeometry(.125,.125,.125),m.clone()),[1.1,0,0]]],XYZY:[[new f.Mesh(new f.BoxGeometry(.125,.125,.125),m.clone()),[0,1.1,0]]],XYZZ:[[new f.Mesh(new f.BoxGeometry(.125,.125,.125),m.clone()),[0,0,1.1]]]},te={X:[[new f.Mesh(new f.CylinderGeometry(.2,0,.8,4,1,!1),s),[.5,0,0],[0,0,-Math.PI/2]]],Y:[[new f.Mesh(new f.CylinderGeometry(.2,0,.8,4,1,!1),s),[0,.5,0]]],Z:[[new f.Mesh(new f.CylinderGeometry(.2,0,.8,4,1,!1),s),[0,0,.5],[Math.PI/2,0,0]]],XY:[[new f.Mesh($,s),[.85,.85,0],null,[3,3,.2]]],YZ:[[new f.Mesh($,s),[0,.85,.85],null,[.2,3,3]]],XZ:[[new f.Mesh($,s),[.85,0,.85],null,[3,.2,3]]],XYZX:[[new f.Mesh(new f.BoxGeometry(.2,.2,.2),s),[1.1,0,0]]],XYZY:[[new f.Mesh(new f.BoxGeometry(.2,.2,.2),s),[0,1.1,0]]],XYZZ:[[new f.Mesh(new f.BoxGeometry(.2,.2,.2),s),[0,0,1.1]]]},q={X:[[new f.Line(j,a.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new f.Line(j,a.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new f.Line(j,a.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},Pe=fe=>{const ae=new f.Object3D;for(let ne in fe)for(let be=fe[ne].length;be--;){const V=fe[ne][be][0].clone(),le=fe[ne][be][1],Ve=fe[ne][be][2],Oe=fe[ne][be][3],we=fe[ne][be][4];V.name=ne,V.tag=we,le&&V.position.set(le[0],le[1],le[2]),Ve&&V.rotation.set(Ve[0],Ve[1],Ve[2]),Oe&&V.scale.set(Oe[0],Oe[1],Oe[2]),V.updateMatrix();const Xe=V.geometry.clone();Xe.applyMatrix4(V.matrix),V.geometry=Xe,V.renderOrder=1/0,V.position.set(0,0,0),V.rotation.set(0,0,0),V.scale.set(1,1,1),ae.add(V)}return ae};this.gizmo={},this.picker={},this.helper={},this.add(this.gizmo.translate=Pe(Y)),this.add(this.gizmo.rotate=Pe(ge)),this.add(this.gizmo.scale=Pe(he)),this.add(this.picker.translate=Pe(Z)),this.add(this.picker.rotate=Pe(me)),this.add(this.picker.scale=Pe(te)),this.add(this.helper.translate=Pe(ue)),this.add(this.helper.rotate=Pe(ce)),this.add(this.helper.scale=Pe(q)),this.picker.translate.visible=!1,this.picker.rotate.visible=!1,this.picker.scale.visible=!1}}class qo 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})),k(this,"isTransformControlsPlane",!0),k(this,"type","TransformControlsPlane"),k(this,"unitX",new f.Vector3(1,0,0)),k(this,"unitY",new f.Vector3(0,1,0)),k(this,"unitZ",new f.Vector3(0,0,1)),k(this,"tempVector",new f.Vector3),k(this,"dirVector",new f.Vector3),k(this,"alignVector",new f.Vector3),k(this,"tempMatrix",new f.Matrix4),k(this,"identityQuaternion",new f.Quaternion),k(this,"cameraQuaternion",new f.Quaternion),k(this,"worldPosition",new f.Vector3),k(this,"worldQuaternion",new f.Quaternion),k(this,"eye",new f.Vector3),k(this,"axis",null),k(this,"mode","translate"),k(this,"space","world"),k(this,"updateMatrixWorld",()=>{let i=this.space;switch(this.position.copy(this.worldPosition),this.mode==="scale"&&(i="local"),this.unitX.set(1,0,0).applyQuaternion(i==="local"?this.worldQuaternion:this.identityQuaternion),this.unitY.set(0,1,0).applyQuaternion(i==="local"?this.worldQuaternion:this.identityQuaternion),this.unitZ.set(0,0,1).applyQuaternion(i==="local"?this.worldQuaternion:this.identityQuaternion),this.alignVector.copy(this.unitY),this.mode){case"translate":case"scale":switch(this.axis){case"X":this.alignVector.copy(this.eye).cross(this.unitX),this.dirVector.copy(this.unitX).cross(this.alignVector);break;case"Y":this.alignVector.copy(this.eye).cross(this.unitY),this.dirVector.copy(this.unitY).cross(this.alignVector);break;case"Z":this.alignVector.copy(this.eye).cross(this.unitZ),this.dirVector.copy(this.unitZ).cross(this.alignVector);break;case"XY":this.dirVector.copy(this.unitZ);break;case"YZ":this.dirVector.copy(this.unitX);break;case"XZ":this.alignVector.copy(this.unitZ),this.dirVector.copy(this.unitY);break;case"XYZ":case"E":this.dirVector.set(0,0,0);break}break;case"rotate":default:this.dirVector.set(0,0,0)}this.dirVector.length()===0?this.quaternion.copy(this.cameraQuaternion):(this.tempMatrix.lookAt(this.tempVector.set(0,0,0),this.dirVector,this.alignVector),this.quaternion.setFromRotationMatrix(this.tempMatrix)),super.updateMatrixWorld()})}}const wr=(g,i)=>(g%i+i)%i;class Qo extends f.EventDispatcher{constructor(i,r){super(),k(this,"object",void 0),k(this,"domElement",void 0),k(this,"enabled",!0),k(this,"target",new f.Vector3),k(this,"minDistance",0),k(this,"maxDistance",1/0),k(this,"minZoom",0),k(this,"maxZoom",1/0),k(this,"minPolarAngle",0),k(this,"maxPolarAngle",Math.PI),k(this,"minAzimuthAngle",-1/0),k(this,"maxAzimuthAngle",1/0),k(this,"enableDamping",!1),k(this,"dampingFactor",.05),k(this,"enableZoom",!0),k(this,"zoomSpeed",1),k(this,"enableRotate",!0),k(this,"rotateSpeed",1),k(this,"enablePan",!0),k(this,"panSpeed",1),k(this,"screenSpacePanning",!0),k(this,"keyPanSpeed",7),k(this,"autoRotate",!1),k(this,"autoRotateSpeed",2),k(this,"reverseOrbit",!1),k(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),k(this,"mouseButtons",{LEFT:f.MOUSE.ROTATE,MIDDLE:f.MOUSE.DOLLY,RIGHT:f.MOUSE.PAN}),k(this,"touches",{ONE:f.TOUCH.ROTATE,TWO:f.TOUCH.DOLLY_PAN}),k(this,"target0",void 0),k(this,"position0",void 0),k(this,"zoom0",void 0),k(this,"_domElementKeyEvents",null),k(this,"getPolarAngle",void 0),k(this,"getAzimuthalAngle",void 0),k(this,"setPolarAngle",void 0),k(this,"setAzimuthalAngle",void 0),k(this,"getDistance",void 0),k(this,"listenToKeyEvents",void 0),k(this,"saveState",void 0),k(this,"reset",void 0),k(this,"update",void 0),k(this,"connect",void 0),k(this,"dispose",void 0),this.object=i,this.domElement=r,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object instanceof f.PerspectiveCamera?this.object.zoom:1,this.getPolarAngle=()=>y.phi,this.getAzimuthalAngle=()=>y.theta,this.setPolarAngle=I=>{let K=wr(I,2*Math.PI),H=y.phi;H<0&&(H+=2*Math.PI),K<0&&(K+=2*Math.PI);let ie=Math.abs(K-H);2*Math.PI-ie<ie&&(K<H?K+=2*Math.PI:H+=2*Math.PI),w.phi=K-H,s.update()},this.setAzimuthalAngle=I=>{let K=wr(I,2*Math.PI),H=y.theta;H<0&&(H+=2*Math.PI),K<0&&(K+=2*Math.PI);let ie=Math.abs(K-H);2*Math.PI-ie<ie&&(K<H?K+=2*Math.PI:H+=2*Math.PI),w.theta=K-H,s.update()},this.getDistance=()=>s.object.position.distanceTo(s.target),this.listenToKeyEvents=I=>{I.addEventListener("keydown",rt),this._domElementKeyEvents=I},this.saveState=()=>{s.target0.copy(s.target),s.position0.copy(s.object.position),s.zoom0=s.object instanceof f.PerspectiveCamera?s.object.zoom:1},this.reset=()=>{s.target.copy(s.target0),s.object.position.copy(s.position0),s.object instanceof f.PerspectiveCamera&&(s.object.zoom=s.zoom0,s.object.updateProjectionMatrix()),s.dispatchEvent(a),s.update(),m=h.NONE},this.update=(()=>{const I=new f.Vector3,K=new f.Quaternion().setFromUnitVectors(i.up,new f.Vector3(0,1,0)),H=K.clone().invert(),ie=new f.Vector3,ye=new f.Quaternion,Ie=2*Math.PI;return function(){const Rt=s.object.position;I.copy(Rt).sub(s.target),I.applyQuaternion(K),y.setFromVector3(I),s.autoRotate&&m===h.NONE&&ue(Y()),s.enableDamping?(y.theta+=w.theta*s.dampingFactor,y.phi+=w.phi*s.dampingFactor):(y.theta+=w.theta,y.phi+=w.phi);let Ne=s.minAzimuthAngle,Fe=s.maxAzimuthAngle;return isFinite(Ne)&&isFinite(Fe)&&(Ne<-Math.PI?Ne+=Ie:Ne>Math.PI&&(Ne-=Ie),Fe<-Math.PI?Fe+=Ie:Fe>Math.PI&&(Fe-=Ie),Ne<=Fe?y.theta=Math.max(Ne,Math.min(Fe,y.theta)):y.theta=y.theta>(Ne+Fe)/2?Math.max(Ne,y.theta):Math.min(Fe,y.theta)),y.phi=Math.max(s.minPolarAngle,Math.min(s.maxPolarAngle,y.phi)),y.makeSafe(),y.radius*=x,y.radius=Math.max(s.minDistance,Math.min(s.maxDistance,y.radius)),s.enableDamping===!0?s.target.addScaledVector(L,s.dampingFactor):s.target.add(L),I.setFromSpherical(y),I.applyQuaternion(H),Rt.copy(s.target).add(I),s.object.lookAt(s.target),s.enableDamping===!0?(w.theta*=1-s.dampingFactor,w.phi*=1-s.dampingFactor,L.multiplyScalar(1-s.dampingFactor)):(w.set(0,0,0),L.set(0,0,0)),x=1,E||ie.distanceToSquared(s.object.position)>_||8*(1-ye.dot(s.object.quaternion))>_?(s.dispatchEvent(a),ie.copy(s.object.position),ye.copy(s.object.quaternion),E=!1,!0):!1}})(),this.connect=I=>{I===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),s.domElement=I,s.domElement.style.touchAction="none",s.domElement.addEventListener("contextmenu",Gt),s.domElement.addEventListener("pointerdown",Ye),s.domElement.addEventListener("pointercancel",dn),s.domElement.addEventListener("wheel",fn)},this.dispose=()=>{var I,K,H,ie,ye,Ie;(I=s.domElement)===null||I===void 0||I.removeEventListener("contextmenu",Gt),(K=s.domElement)===null||K===void 0||K.removeEventListener("pointerdown",Ye),(H=s.domElement)===null||H===void 0||H.removeEventListener("pointercancel",dn),(ie=s.domElement)===null||ie===void 0||ie.removeEventListener("wheel",fn),(ye=s.domElement)===null||ye===void 0||ye.ownerDocument.removeEventListener("pointermove",Ut),(Ie=s.domElement)===null||Ie===void 0||Ie.ownerDocument.removeEventListener("pointerup",tt),s._domElementKeyEvents!==null&&s._domElementKeyEvents.removeEventListener("keydown",rt)};const s=this,a={type:"change"},c={type:"start"},u={type:"end"},h={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let m=h.NONE;const _=1e-6,y=new f.Spherical,w=new f.Spherical;let x=1;const L=new f.Vector3;let E=!1;const D=new f.Vector2,O=new f.Vector2,G=new f.Vector2,z=new f.Vector2,B=new f.Vector2,N=new f.Vector2,Q=new f.Vector2,$=new f.Vector2,j=new f.Vector2,F=[],X={};function Y(){return 2*Math.PI/60/60*s.autoRotateSpeed}function Z(){return Math.pow(.95,s.zoomSpeed)}function ue(I){s.reverseOrbit?w.theta+=I:w.theta-=I}function ge(I){s.reverseOrbit?w.phi+=I:w.phi-=I}const ce=(()=>{const I=new f.Vector3;return function(H,ie){I.setFromMatrixColumn(ie,0),I.multiplyScalar(-H),L.add(I)}})(),me=(()=>{const I=new f.Vector3;return function(H,ie){s.screenSpacePanning===!0?I.setFromMatrixColumn(ie,1):(I.setFromMatrixColumn(ie,0),I.crossVectors(s.object.up,I)),I.multiplyScalar(H),L.add(I)}})(),he=(()=>{const I=new f.Vector3;return function(H,ie){const ye=s.domElement;if(ye&&s.object instanceof f.PerspectiveCamera&&s.object.isPerspectiveCamera){const Ie=s.object.position;I.copy(Ie).sub(s.target);let Mt=I.length();Mt*=Math.tan(s.object.fov/2*Math.PI/180),ce(2*H*Mt/ye.clientHeight,s.object.matrix),me(2*ie*Mt/ye.clientHeight,s.object.matrix)}else ye&&s.object instanceof f.OrthographicCamera&&s.object.isOrthographicCamera?(ce(H*(s.object.right-s.object.left)/s.object.zoom/ye.clientWidth,s.object.matrix),me(ie*(s.object.top-s.object.bottom)/s.object.zoom/ye.clientHeight,s.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),s.enablePan=!1)}})();function te(I){s.object instanceof f.PerspectiveCamera&&s.object.isPerspectiveCamera?x/=I:s.object instanceof f.OrthographicCamera&&s.object.isOrthographicCamera?(s.object.zoom=Math.max(s.minZoom,Math.min(s.maxZoom,s.object.zoom*I)),s.object.updateProjectionMatrix(),E=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),s.enableZoom=!1)}function q(I){s.object instanceof f.PerspectiveCamera&&s.object.isPerspectiveCamera?x*=I:s.object instanceof f.OrthographicCamera&&s.object.isOrthographicCamera?(s.object.zoom=Math.max(s.minZoom,Math.min(s.maxZoom,s.object.zoom/I)),s.object.updateProjectionMatrix(),E=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),s.enableZoom=!1)}function Pe(I){D.set(I.clientX,I.clientY)}function fe(I){Q.set(I.clientX,I.clientY)}function ae(I){z.set(I.clientX,I.clientY)}function ne(I){O.set(I.clientX,I.clientY),G.subVectors(O,D).multiplyScalar(s.rotateSpeed);const K=s.domElement;K&&(ue(2*Math.PI*G.x/K.clientHeight),ge(2*Math.PI*G.y/K.clientHeight)),D.copy(O),s.update()}function be(I){$.set(I.clientX,I.clientY),j.subVectors($,Q),j.y>0?te(Z()):j.y<0&&q(Z()),Q.copy($),s.update()}function V(I){B.set(I.clientX,I.clientY),N.subVectors(B,z).multiplyScalar(s.panSpeed),he(N.x,N.y),z.copy(B),s.update()}function le(I){I.deltaY<0?q(Z()):I.deltaY>0&&te(Z()),s.update()}function Ve(I){let K=!1;switch(I.code){case s.keys.UP:he(0,s.keyPanSpeed),K=!0;break;case s.keys.BOTTOM:he(0,-s.keyPanSpeed),K=!0;break;case s.keys.LEFT:he(s.keyPanSpeed,0),K=!0;break;case s.keys.RIGHT:he(-s.keyPanSpeed,0),K=!0;break}K&&(I.preventDefault(),s.update())}function Oe(){if(F.length==1)D.set(F[0].pageX,F[0].pageY);else{const I=.5*(F[0].pageX+F[1].pageX),K=.5*(F[0].pageY+F[1].pageY);D.set(I,K)}}function we(){if(F.length==1)z.set(F[0].pageX,F[0].pageY);else{const I=.5*(F[0].pageX+F[1].pageX),K=.5*(F[0].pageY+F[1].pageY);z.set(I,K)}}function Xe(){const I=F[0].pageX-F[1].pageX,K=F[0].pageY-F[1].pageY,H=Math.sqrt(I*I+K*K);Q.set(0,H)}function un(){s.enableZoom&&Xe(),s.enablePan&&we()}function Ge(){s.enableZoom&&Xe(),s.enableRotate&&Oe()}function hn(I){if(F.length==1)O.set(I.pageX,I.pageY);else{const H=ft(I),ie=.5*(I.pageX+H.x),ye=.5*(I.pageY+H.y);O.set(ie,ye)}G.subVectors(O,D).multiplyScalar(s.rotateSpeed);const K=s.domElement;K&&(ue(2*Math.PI*G.x/K.clientHeight),ge(2*Math.PI*G.y/K.clientHeight)),D.copy(O)}function zt(I){if(F.length==1)B.set(I.pageX,I.pageY);else{const K=ft(I),H=.5*(I.pageX+K.x),ie=.5*(I.pageY+K.y);B.set(H,ie)}N.subVectors(B,z).multiplyScalar(s.panSpeed),he(N.x,N.y),z.copy(B)}function et(I){const K=ft(I),H=I.pageX-K.x,ie=I.pageY-K.y,ye=Math.sqrt(H*H+ie*ie);$.set(0,ye),j.set(0,Math.pow($.y/Q.y,s.zoomSpeed)),te(j.y),Q.copy($)}function dt(I){s.enableZoom&&et(I),s.enablePan&&zt(I)}function Be(I){s.enableZoom&&et(I),s.enableRotate&&hn(I)}function Ye(I){if(s.enabled!==!1){if(F.length===0){var K,H;(K=s.domElement)===null||K===void 0||K.ownerDocument.addEventListener("pointermove",Ut),(H=s.domElement)===null||H===void 0||H.ownerDocument.addEventListener("pointerup",tt)}bn(I),I.pointerType==="touch"?mt(I):zn(I)}}function Ut(I){s.enabled!==!1&&(I.pointerType==="touch"?vn(I):mn(I))}function tt(I){if(ot(I),F.length===0){var K,H,ie;(K=s.domElement)===null||K===void 0||K.releasePointerCapture(I.pointerId),(H=s.domElement)===null||H===void 0||H.ownerDocument.removeEventListener("pointermove",Ut),(ie=s.domElement)===null||ie===void 0||ie.ownerDocument.removeEventListener("pointerup",tt)}s.dispatchEvent(u),m=h.NONE}function dn(I){ot(I)}function zn(I){let K;switch(I.button){case 0:K=s.mouseButtons.LEFT;break;case 1:K=s.mouseButtons.MIDDLE;break;case 2:K=s.mouseButtons.RIGHT;break;default:K=-1}switch(K){case f.MOUSE.DOLLY:if(s.enableZoom===!1)return;fe(I),m=h.DOLLY;break;case f.MOUSE.ROTATE:if(I.ctrlKey||I.metaKey||I.shiftKey){if(s.enablePan===!1)return;ae(I),m=h.PAN}else{if(s.enableRotate===!1)return;Pe(I),m=h.ROTATE}break;case f.MOUSE.PAN:if(I.ctrlKey||I.metaKey||I.shiftKey){if(s.enableRotate===!1)return;Pe(I),m=h.ROTATE}else{if(s.enablePan===!1)return;ae(I),m=h.PAN}break;default:m=h.NONE}m!==h.NONE&&s.dispatchEvent(c)}function mn(I){if(s.enabled!==!1)switch(m){case h.ROTATE:if(s.enableRotate===!1)return;ne(I);break;case h.DOLLY:if(s.enableZoom===!1)return;be(I);break;case h.PAN:if(s.enablePan===!1)return;V(I);break}}function fn(I){s.enabled===!1||s.enableZoom===!1||m!==h.NONE&&m!==h.ROTATE||(I.preventDefault(),s.dispatchEvent(c),le(I),s.dispatchEvent(u))}function rt(I){s.enabled===!1||s.enablePan===!1||Ve(I)}function mt(I){switch(nt(I),F.length){case 1:switch(s.touches.ONE){case f.TOUCH.ROTATE:if(s.enableRotate===!1)return;Oe(),m=h.TOUCH_ROTATE;break;case f.TOUCH.PAN:if(s.enablePan===!1)return;we(),m=h.TOUCH_PAN;break;default:m=h.NONE}break;case 2:switch(s.touches.TWO){case f.TOUCH.DOLLY_PAN:if(s.enableZoom===!1&&s.enablePan===!1)return;un(),m=h.TOUCH_DOLLY_PAN;break;case f.TOUCH.DOLLY_ROTATE:if(s.enableZoom===!1&&s.enableRotate===!1)return;Ge(),m=h.TOUCH_DOLLY_ROTATE;break;default:m=h.NONE}break;default:m=h.NONE}m!==h.NONE&&s.dispatchEvent(c)}function vn(I){switch(nt(I),m){case h.TOUCH_ROTATE:if(s.enableRotate===!1)return;hn(I),s.update();break;case h.TOUCH_PAN:if(s.enablePan===!1)return;zt(I),s.update();break;case h.TOUCH_DOLLY_PAN:if(s.enableZoom===!1&&s.enablePan===!1)return;dt(I),s.update();break;case h.TOUCH_DOLLY_ROTATE:if(s.enableZoom===!1&&s.enableRotate===!1)return;Be(I),s.update();break;default:m=h.NONE}}function Gt(I){s.enabled!==!1&&I.preventDefault()}function bn(I){F.push(I)}function ot(I){delete X[I.pointerId];for(let K=0;K<F.length;K++)if(F[K].pointerId==I.pointerId){F.splice(K,1);return}}function nt(I){let K=X[I.pointerId];K===void 0&&(K=new f.Vector2,X[I.pointerId]=K),K.set(I.pageX,I.pageY)}function ft(I){const K=I.pointerId===F[0].pointerId?F[1]:F[0];return X[K.pointerId]}r!==void 0&&this.connect(r),this.update()}}class Zo extends f.Loader{constructor(i){super(i),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(r){return new ta(r)}),this.register(function(r){return new la(r)}),this.register(function(r){return new ca(r)}),this.register(function(r){return new ia(r)}),this.register(function(r){return new sa(r)}),this.register(function(r){return new ra(r)}),this.register(function(r){return new oa(r)}),this.register(function(r){return new ea(r)}),this.register(function(r){return new aa(r)}),this.register(function(r){return new na(r)}),this.register(function(r){return new Jo(r)}),this.register(function(r){return new pa(r)})}load(i,r,s,a){const c=this;let u;this.resourcePath!==""?u=this.resourcePath:this.path!==""?u=this.path:u=f.LoaderUtils.extractUrlBase(i),this.manager.itemStart(i);const h=function(_){a?a(_):console.error(_),c.manager.itemError(i),c.manager.itemEnd(i)},m=new f.FileLoader(this.manager);m.setPath(this.path),m.setResponseType("arraybuffer"),m.setRequestHeader(this.requestHeader),m.setWithCredentials(this.withCredentials),m.load(i,function(_){try{c.parse(_,u,function(y){r(y),c.manager.itemEnd(i)},h)}catch(y){h(y)}},s,h)}setDRACOLoader(i){return this.dracoLoader=i,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(i){return this.ktx2Loader=i,this}setMeshoptDecoder(i){return this.meshoptDecoder=i,this}register(i){return this.pluginCallbacks.indexOf(i)===-1&&this.pluginCallbacks.push(i),this}unregister(i){return this.pluginCallbacks.indexOf(i)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(i),1),this}parse(i,r,s,a){let c;const u={},h={};if(typeof i=="string")c=i;else if(f.LoaderUtils.decodeText(new Uint8Array(i,0,4))===yr){try{u[se.KHR_BINARY_GLTF]=new ua(i)}catch(w){a&&a(w);return}c=u[se.KHR_BINARY_GLTF].content}else c=f.LoaderUtils.decodeText(new Uint8Array(i));const m=JSON.parse(c);if(m.asset===void 0||m.asset.version[0]<2){a&&a(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const _=new Pa(m,{path:r||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});_.fileLoader.setRequestHeader(this.requestHeader);for(let y=0;y<this.pluginCallbacks.length;y++){const w=this.pluginCallbacks[y](_);h[w.name]=w,u[w.name]=!0}if(m.extensionsUsed)for(let y=0;y<m.extensionsUsed.length;++y){const w=m.extensionsUsed[y],x=m.extensionsRequired||[];switch(w){case se.KHR_MATERIALS_UNLIT:u[w]=new Ho;break;case se.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:u[w]=new ma;break;case se.KHR_DRACO_MESH_COMPRESSION:u[w]=new ha(m,this.dracoLoader);break;case se.KHR_TEXTURE_TRANSFORM:u[w]=new da;break;case se.KHR_MESH_QUANTIZATION:u[w]=new fa;break;default:x.indexOf(w)>=0&&h[w]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+w+'".')}}_.setExtensions(u),_.setPlugins(h),_.parse(s,a)}parseAsync(i,r){const s=this;return new Promise(function(a,c){s.parse(i,r,a,c)})}}function Wo(){let g={};return{get:function(i){return g[i]},add:function(i,r){g[i]=r},remove:function(i){delete g[i]},removeAll:function(){g={}}}}const se={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:"KHR_materials_pbrSpecularGlossiness",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression"};class Jo{constructor(i){this.parser=i,this.name=se.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const i=this.parser,r=this.parser.json.nodes||[];for(let s=0,a=r.length;s<a;s++){const c=r[s];c.extensions&&c.extensions[this.name]&&c.extensions[this.name].light!==void 0&&i._addNodeRef(this.cache,c.extensions[this.name].light)}}_loadLight(i){const r=this.parser,s="light:"+i;let a=r.cache.get(s);if(a)return a;const c=r.json,m=((c.extensions&&c.extensions[this.name]||{}).lights||[])[i];let _;const y=new f.Color(16777215);m.color!==void 0&&y.fromArray(m.color);const w=m.range!==void 0?m.range:0;switch(m.type){case"directional":_=new f.DirectionalLight(y),_.target.position.set(0,0,-1),_.add(_.target);break;case"point":_=new f.PointLight(y),_.distance=w;break;case"spot":_=new f.SpotLight(y),_.distance=w,m.spot=m.spot||{},m.spot.innerConeAngle=m.spot.innerConeAngle!==void 0?m.spot.innerConeAngle:0,m.spot.outerConeAngle=m.spot.outerConeAngle!==void 0?m.spot.outerConeAngle:Math.PI/4,_.angle=m.spot.outerConeAngle,_.penumbra=1-m.spot.innerConeAngle/m.spot.outerConeAngle,_.target.position.set(0,0,-1),_.add(_.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+m.type)}return _.position.set(0,0,0),_.decay=2,m.intensity!==void 0&&(_.intensity=m.intensity),_.name=r.createUniqueName(m.name||"light_"+i),a=Promise.resolve(_),r.cache.add(s,a),a}createNodeAttachment(i){const r=this,s=this.parser,c=s.json.nodes[i],h=(c.extensions&&c.extensions[this.name]||{}).light;return h===void 0?null:this._loadLight(h).then(function(m){return s._getNodeRef(r.cache,h,m)})}}class Ho{constructor(){this.name=se.KHR_MATERIALS_UNLIT}getMaterialType(){return f.MeshBasicMaterial}extendParams(i,r,s){const a=[];i.color=new f.Color(1,1,1),i.opacity=1;const c=r.pbrMetallicRoughness;if(c){if(Array.isArray(c.baseColorFactor)){const u=c.baseColorFactor;i.color.fromArray(u),i.opacity=u[3]}c.baseColorTexture!==void 0&&a.push(s.assignTexture(i,"map",c.baseColorTexture,f.sRGBEncoding))}return Promise.all(a)}}class ea{constructor(i){this.parser=i,this.name=se.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(i,r){const a=this.parser.json.materials[i];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const c=a.extensions[this.name].emissiveStrength;return c!==void 0&&(r.emissiveIntensity=c),Promise.resolve()}}class ta{constructor(i){this.parser=i,this.name=se.KHR_MATERIALS_CLEARCOAT}getMaterialType(i){const s=this.parser.json.materials[i];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,r){const s=this.parser,a=s.json.materials[i];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const c=[],u=a.extensions[this.name];if(u.clearcoatFactor!==void 0&&(r.clearcoat=u.clearcoatFactor),u.clearcoatTexture!==void 0&&c.push(s.assignTexture(r,"clearcoatMap",u.clearcoatTexture)),u.clearcoatRoughnessFactor!==void 0&&(r.clearcoatRoughness=u.clearcoatRoughnessFactor),u.clearcoatRoughnessTexture!==void 0&&c.push(s.assignTexture(r,"clearcoatRoughnessMap",u.clearcoatRoughnessTexture)),u.clearcoatNormalTexture!==void 0&&(c.push(s.assignTexture(r,"clearcoatNormalMap",u.clearcoatNormalTexture)),u.clearcoatNormalTexture.scale!==void 0)){const h=u.clearcoatNormalTexture.scale;r.clearcoatNormalScale=new f.Vector2(h,h)}return Promise.all(c)}}class na{constructor(i){this.parser=i,this.name=se.KHR_MATERIALS_IRIDESCENCE}getMaterialType(i){const s=this.parser.json.materials[i];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,r){const s=this.parser,a=s.json.materials[i];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const c=[],u=a.extensions[this.name];return u.iridescenceFactor!==void 0&&(r.iridescence=u.iridescenceFactor),u.iridescenceTexture!==void 0&&c.push(s.assignTexture(r,"iridescenceMap",u.iridescenceTexture)),u.iridescenceIor!==void 0&&(r.iridescenceIOR=u.iridescenceIor),r.iridescenceThicknessRange===void 0&&(r.iridescenceThicknessRange=[100,400]),u.iridescenceThicknessMinimum!==void 0&&(r.iridescenceThicknessRange[0]=u.iridescenceThicknessMinimum),u.iridescenceThicknessMaximum!==void 0&&(r.iridescenceThicknessRange[1]=u.iridescenceThicknessMaximum),u.iridescenceThicknessTexture!==void 0&&c.push(s.assignTexture(r,"iridescenceThicknessMap",u.iridescenceThicknessTexture)),Promise.all(c)}}class ia{constructor(i){this.parser=i,this.name=se.KHR_MATERIALS_SHEEN}getMaterialType(i){const s=this.parser.json.materials[i];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,r){const s=this.parser,a=s.json.materials[i];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const c=[];r.sheenColor=new f.Color(0,0,0),r.sheenRoughness=0,r.sheen=1;const u=a.extensions[this.name];return u.sheenColorFactor!==void 0&&r.sheenColor.fromArray(u.sheenColorFactor),u.sheenRoughnessFactor!==void 0&&(r.sheenRoughness=u.sheenRoughnessFactor),u.sheenColorTexture!==void 0&&c.push(s.assignTexture(r,"sheenColorMap",u.sheenColorTexture,f.sRGBEncoding)),u.sheenRoughnessTexture!==void 0&&c.push(s.assignTexture(r,"sheenRoughnessMap",u.sheenRoughnessTexture)),Promise.all(c)}}class sa{constructor(i){this.parser=i,this.name=se.KHR_MATERIALS_TRANSMISSION}getMaterialType(i){const s=this.parser.json.materials[i];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,r){const s=this.parser,a=s.json.materials[i];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const c=[],u=a.extensions[this.name];return u.transmissionFactor!==void 0&&(r.transmission=u.transmissionFactor),u.transmissionTexture!==void 0&&c.push(s.assignTexture(r,"transmissionMap",u.transmissionTexture)),Promise.all(c)}}class ra{constructor(i){this.parser=i,this.name=se.KHR_MATERIALS_VOLUME}getMaterialType(i){const s=this.parser.json.materials[i];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,r){const s=this.parser,a=s.json.materials[i];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const c=[],u=a.extensions[this.name];r.thickness=u.thicknessFactor!==void 0?u.thicknessFactor:0,u.thicknessTexture!==void 0&&c.push(s.assignTexture(r,"thicknessMap",u.thicknessTexture)),r.attenuationDistance=u.attenuationDistance||1/0;const h=u.attenuationColor||[1,1,1];return r.attenuationColor=new f.Color(h[0],h[1],h[2]),Promise.all(c)}}class oa{constructor(i){this.parser=i,this.name=se.KHR_MATERIALS_IOR}getMaterialType(i){const s=this.parser.json.materials[i];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,r){const a=this.parser.json.materials[i];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const c=a.extensions[this.name];return r.ior=c.ior!==void 0?c.ior:1.5,Promise.resolve()}}class aa{constructor(i){this.parser=i,this.name=se.KHR_MATERIALS_SPECULAR}getMaterialType(i){const s=this.parser.json.materials[i];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,r){const s=this.parser,a=s.json.materials[i];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const c=[],u=a.extensions[this.name];r.specularIntensity=u.specularFactor!==void 0?u.specularFactor:1,u.specularTexture!==void 0&&c.push(s.assignTexture(r,"specularIntensityMap",u.specularTexture));const h=u.specularColorFactor||[1,1,1];return r.specularColor=new f.Color(h[0],h[1],h[2]),u.specularColorTexture!==void 0&&c.push(s.assignTexture(r,"specularColorMap",u.specularColorTexture,f.sRGBEncoding)),Promise.all(c)}}class la{constructor(i){this.parser=i,this.name=se.KHR_TEXTURE_BASISU}loadTexture(i){const r=this.parser,s=r.json,a=s.textures[i];if(!a.extensions||!a.extensions[this.name])return null;const c=a.extensions[this.name],u=r.options.ktx2Loader;if(!u){if(s.extensionsRequired&&s.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return r.loadTextureImage(i,c.source,u)}}class ca{constructor(i){this.parser=i,this.name=se.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(i){const r=this.name,s=this.parser,a=s.json,c=a.textures[i];if(!c.extensions||!c.extensions[r])return null;const u=c.extensions[r],h=a.images[u.source];let m=s.textureLoader;if(h.uri){const _=s.options.manager.getHandler(h.uri);_!==null&&(m=_)}return this.detectSupport().then(function(_){if(_)return s.loadTextureImage(i,u.source,m);if(a.extensionsRequired&&a.extensionsRequired.indexOf(r)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return s.loadTexture(i)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(i){const r=new Image;r.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",r.onload=r.onerror=function(){i(r.height===1)}})),this.isSupported}}class pa{constructor(i){this.name=se.EXT_MESHOPT_COMPRESSION,this.parser=i}loadBufferView(i){const r=this.parser.json,s=r.bufferViews[i];if(s.extensions&&s.extensions[this.name]){const a=s.extensions[this.name],c=this.parser.getDependency("buffer",a.buffer),u=this.parser.options.meshoptDecoder;if(!u||!u.supported){if(r.extensionsRequired&&r.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return c.then(function(h){const m=a.byteOffset||0,_=a.byteLength||0,y=a.count,w=a.byteStride,x=new Uint8Array(h,m,_);return u.decodeGltfBufferAsync?u.decodeGltfBufferAsync(y,w,x,a.mode,a.filter).then(function(L){return L.buffer}):u.ready.then(function(){const L=new ArrayBuffer(y*w);return u.decodeGltfBuffer(new Uint8Array(L),y,w,x,a.mode,a.filter),L})})}else return null}}const yr="glTF",Bn=12,xr={JSON:1313821514,BIN:5130562};class ua{constructor(i){this.name=se.KHR_BINARY_GLTF,this.content=null,this.body=null;const r=new DataView(i,0,Bn);if(this.header={magic:f.LoaderUtils.decodeText(new Uint8Array(i.slice(0,4))),version:r.getUint32(4,!0),length:r.getUint32(8,!0)},this.header.magic!==yr)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const s=this.header.length-Bn,a=new DataView(i,Bn);let c=0;for(;c<s;){const u=a.getUint32(c,!0);c+=4;const h=a.getUint32(c,!0);if(c+=4,h===xr.JSON){const m=new Uint8Array(i,Bn+c,u);this.content=f.LoaderUtils.decodeText(m)}else if(h===xr.BIN){const m=Bn+c;this.body=i.slice(m,m+u)}c+=u}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class ha{constructor(i,r){if(!r)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=se.KHR_DRACO_MESH_COMPRESSION,this.json=i,this.dracoLoader=r,this.dracoLoader.preload()}decodePrimitive(i,r){const s=this.json,a=this.dracoLoader,c=i.extensions[this.name].bufferView,u=i.extensions[this.name].attributes,h={},m={},_={};for(const y in u){const w=is[y]||y.toLowerCase();h[w]=u[y]}for(const y in i.attributes){const w=is[y]||y.toLowerCase();if(u[y]!==void 0){const x=s.accessors[i.attributes[y]],L=Nn[x.componentType];_[w]=L.name,m[w]=x.normalized===!0}}return r.getDependency("bufferView",c).then(function(y){return new Promise(function(w){a.decodeDracoFile(y,function(x){for(const L in x.attributes){const E=x.attributes[L],D=m[L];D!==void 0&&(E.normalized=D)}w(x)},h,_)})})}}class da{constructor(){this.name=se.KHR_TEXTURE_TRANSFORM}extendTexture(i,r){return r.texCoord!==void 0&&console.warn('THREE.GLTFLoader: Custom UV sets in "'+this.name+'" extension not yet supported.'),r.offset===void 0&&r.rotation===void 0&&r.scale===void 0||(i=i.clone(),r.offset!==void 0&&i.offset.fromArray(r.offset),r.rotation!==void 0&&(i.rotation=r.rotation),r.scale!==void 0&&i.repeat.fromArray(r.scale),i.needsUpdate=!0),i}}class ns extends f.MeshStandardMaterial{constructor(i){super(),this.isGLTFSpecularGlossinessMaterial=!0;const r=["#ifdef USE_SPECULARMAP"," uniform sampler2D specularMap;","#endif"].join(`
|
|
8
|
+
(function(ae,M){typeof exports=="object"&&typeof module<"u"?M(exports,require("vue"),require("@tresjs/core"),require("three")):typeof define=="function"&&define.amd?define(["exports","vue","@tresjs/core","three"],M):(ae=typeof globalThis<"u"?globalThis:ae||self,M(ae.trescientos={},ae.Vue,ae.TresjsCore,ae.Three))})(this,function(ae,M,pn,f){"use strict";function Uo(g,i){for(var r=0;r<i.length;r++){const s=i[r];if(typeof s!="string"&&!Array.isArray(s)){for(const a in s)if(a!=="default"&&!(a in g)){const c=Object.getOwnPropertyDescriptor(s,a);c&&Object.defineProperty(g,a,c.get?c:{enumerable:!0,get:()=>s[a]})}}}return Object.freeze(Object.defineProperty(g,Symbol.toStringTag,{value:"Module"}))}function On(g){return On=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(i){return typeof i}:function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},On(g)}function Go(g,i){if(On(g)!=="object"||g===null)return g;var r=g[Symbol.toPrimitive];if(r!==void 0){var s=r.call(g,i||"default");if(On(s)!=="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(i==="string"?String:Number)(g)}function Ro(g){var i=Go(g,"string");return On(i)==="symbol"?i:String(i)}function S(g,i,r){return i=Ro(i),i in g?Object.defineProperty(g,i,{value:r,enumerable:!0,configurable:!0,writable:!0}):g[i]=r,g}var $e=Uint8Array,xt=Uint16Array,Hi=Uint32Array,gr=new $e([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]),_r=new $e([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 $e([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),wr=function(g,i){for(var r=new xt(31),s=0;s<31;++s)r[s]=i+=1<<g[s-1];for(var a=new Hi(r[30]),s=1;s<30;++s)for(var c=r[s];c<r[s+1];++c)a[c]=c-r[s]<<5|s;return[r,a]},yr=wr(gr,2),xr=yr[0],$o=yr[1];xr[28]=258,$o[258]=28;for(var Xo=wr(_r,0),Yo=Xo[0],es=new xt(32768),Ce=0;Ce<32768;++Ce){var Ct=(Ce&43690)>>>1|(Ce&21845)<<1;Ct=(Ct&52428)>>>2|(Ct&13107)<<2,Ct=(Ct&61680)>>>4|(Ct&3855)<<4,es[Ce]=((Ct&65280)>>>8|(Ct&255)<<8)>>>1}for(var En=function(g,i,r){for(var s=g.length,a=0,c=new xt(i);a<s;++a)++c[g[a]-1];var u=new xt(i);for(a=0;a<i;++a)u[a]=u[a-1]+c[a-1]<<1;var h;if(r){h=new xt(1<<i);var m=15-i;for(a=0;a<s;++a)if(g[a])for(var _=a<<4|g[a],y=i-g[a],w=u[g[a]-1]++<<y,x=w|(1<<y)-1;w<=x;++w)h[es[w]>>>m]=_}else for(h=new xt(s),a=0;a<s;++a)g[a]&&(h[a]=es[u[g[a]-1]++]>>>15-g[a]);return h},Bn=new $e(288),Ce=0;Ce<144;++Ce)Bn[Ce]=8;for(var Ce=144;Ce<256;++Ce)Bn[Ce]=9;for(var Ce=256;Ce<280;++Ce)Bn[Ce]=7;for(var Ce=280;Ce<288;++Ce)Bn[Ce]=8;for(var Cr=new $e(32),Ce=0;Ce<32;++Ce)Cr[Ce]=5;var qo=En(Bn,9,1),Qo=En(Cr,5,1),ts=function(g){for(var i=g[0],r=1;r<g.length;++r)g[r]>i&&(i=g[r]);return i},He=function(g,i,r){var s=i/8|0;return(g[s]|g[s+1]<<8)>>(i&7)&r},ns=function(g,i){var r=i/8|0;return(g[r]|g[r+1]<<8|g[r+2]<<16)>>(i&7)},Zo=function(g){return(g/8|0)+(g&7&&1)},Wo=function(g,i,r){(i==null||i<0)&&(i=0),(r==null||r>g.length)&&(r=g.length);var s=new(g instanceof xt?xt:g instanceof Hi?Hi:$e)(r-i);return s.set(g.subarray(i,r)),s},Jo=function(g,i,r){var s=g.length;if(!s||r&&!r.l&&s<5)return i||new $e(0);var a=!i||r,c=!r||r.i;r||(r={}),i||(i=new $e(s*3));var u=function(Ve){var Oe=i.length;if(Ve>Oe){var we=new $e(Math.max(Oe*2,Ve));we.set(i),i=we}},h=r.f||0,m=r.p||0,_=r.b||0,y=r.l,w=r.d,x=r.m,k=r.n,E=s*8;do{if(!y){r.f=h=He(g,m,1);var I=He(g,m+1,3);if(m+=3,I)if(I==1)y=qo,w=Qo,x=9,k=5;else if(I==2){var B=He(g,m,31)+257,N=He(g,m+10,15)+4,Q=B+He(g,m+5,31)+1;m+=14;for(var $=new $e(Q),j=new $e(19),F=0;F<N;++F)j[Ko[F]]=He(g,m+F*3,7);m+=N*3;for(var X=ts(j),Y=(1<<X)-1,Z=En(j,X,1),F=0;F<Q;){var ue=Z[He(g,m,Y)];m+=ue&15;var O=ue>>>4;if(O<16)$[F++]=O;else{var ge=0,pe=0;for(O==16?(pe=3+He(g,m,3),m+=2,ge=$[F-1]):O==17?(pe=3+He(g,m,7),m+=3):O==18&&(pe=11+He(g,m,127),m+=7);pe--;)$[F++]=ge}}var me=$.subarray(0,B),he=$.subarray(B);x=ts(me),k=ts(he),y=En(me,x,1),w=En(he,k,1)}else throw"invalid block type";else{var O=Zo(m)+4,G=g[O-4]|g[O-3]<<8,z=O+G;if(z>s){if(c)throw"unexpected EOF";break}a&&u(_+G),i.set(g.subarray(O,z),_),r.b=_+=G,r.p=m=z*8;continue}if(m>E){if(c)throw"unexpected EOF";break}}a&&u(_+131072);for(var te=(1<<x)-1,q=(1<<k)-1,Pe=m;;Pe=m){var ge=y[ns(g,m)&te],fe=ge>>>4;if(m+=ge&15,m>E){if(c)throw"unexpected EOF";break}if(!ge)throw"invalid length/literal";if(fe<256)i[_++]=fe;else if(fe==256){Pe=m,y=null;break}else{var le=fe-254;if(fe>264){var F=fe-257,ne=gr[F];le=He(g,m,(1<<ne)-1)+xr[F],m+=ne}var be=w[ns(g,m)&q],V=be>>>4;if(!be)throw"invalid distance";m+=be&15;var he=Yo[V];if(V>3){var ne=_r[V];he+=ns(g,m)&(1<<ne)-1,m+=ne}if(m>E){if(c)throw"unexpected EOF";break}a&&u(_+131072);for(var ce=_+le;_<ce;_+=4)i[_]=i[_-he],i[_+1]=i[_+1-he],i[_+2]=i[_+2-he],i[_+3]=i[_+3-he];_=ce}}r.l=y,r.p=Pe,r.b=_,y&&(h=1,r.m=x,r.d=w,r.n=k)}while(!h);return _==i.length?i:Wo(i,0,_)},Ho=new $e(0),ea=function(g){if((g[0]&15)!=8||g[0]>>>4>7||(g[0]<<8|g[1])%31)throw"invalid zlib data";if(g[1]&32)throw"invalid zlib data: preset dictionaries not supported"};function ta(g,i){return Jo((ea(g),g.subarray(2,-4)),i)}var na=typeof TextDecoder<"u"&&new TextDecoder,ia=0;try{na.decode(Ho,{stream:!0}),ia=1}catch{}class sa extends f.Object3D{constructor(i,r){super(),S(this,"isTransformControls",!0),S(this,"visible",!1),S(this,"domElement",void 0),S(this,"raycaster",new f.Raycaster),S(this,"gizmo",void 0),S(this,"plane",void 0),S(this,"tempVector",new f.Vector3),S(this,"tempVector2",new f.Vector3),S(this,"tempQuaternion",new f.Quaternion),S(this,"unit",{X:new f.Vector3(1,0,0),Y:new f.Vector3(0,1,0),Z:new f.Vector3(0,0,1)}),S(this,"pointStart",new f.Vector3),S(this,"pointEnd",new f.Vector3),S(this,"offset",new f.Vector3),S(this,"rotationAxis",new f.Vector3),S(this,"startNorm",new f.Vector3),S(this,"endNorm",new f.Vector3),S(this,"rotationAngle",0),S(this,"cameraPosition",new f.Vector3),S(this,"cameraQuaternion",new f.Quaternion),S(this,"cameraScale",new f.Vector3),S(this,"parentPosition",new f.Vector3),S(this,"parentQuaternion",new f.Quaternion),S(this,"parentQuaternionInv",new f.Quaternion),S(this,"parentScale",new f.Vector3),S(this,"worldPositionStart",new f.Vector3),S(this,"worldQuaternionStart",new f.Quaternion),S(this,"worldScaleStart",new f.Vector3),S(this,"worldPosition",new f.Vector3),S(this,"worldQuaternion",new f.Quaternion),S(this,"worldQuaternionInv",new f.Quaternion),S(this,"worldScale",new f.Vector3),S(this,"eye",new f.Vector3),S(this,"positionStart",new f.Vector3),S(this,"quaternionStart",new f.Quaternion),S(this,"scaleStart",new f.Vector3),S(this,"camera",void 0),S(this,"object",void 0),S(this,"enabled",!0),S(this,"axis",null),S(this,"mode","translate"),S(this,"translationSnap",null),S(this,"rotationSnap",null),S(this,"scaleSnap",null),S(this,"space","world"),S(this,"size",1),S(this,"dragging",!1),S(this,"showX",!0),S(this,"showY",!0),S(this,"showZ",!0),S(this,"changeEvent",{type:"change"}),S(this,"mouseDownEvent",{type:"mouseDown",mode:this.mode}),S(this,"mouseUpEvent",{type:"mouseUp",mode:this.mode}),S(this,"objectChangeEvent",{type:"objectChange"}),S(this,"intersectObjectWithRay",(a,c,u)=>{const h=c.intersectObject(a,!0);for(let m=0;m<h.length;m++)if(h[m].object.visible||u)return h[m];return!1}),S(this,"attach",a=>(this.object=a,this.visible=!0,this)),S(this,"detach",()=>(this.object=void 0,this.visible=!1,this.axis=null,this)),S(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),S(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()}),S(this,"pointerHover",a=>{if(this.object===void 0||this.dragging===!0)return;this.raycaster.setFromCamera(a,this.camera);const c=this.intersectObjectWithRay(this.gizmo.picker[this.mode],this.raycaster);c?this.axis=c.object.name:this.axis=null}),S(this,"pointerDown",a=>{if(!(this.object===void 0||this.dragging===!0||a.button!==0)&&this.axis!==null){this.raycaster.setFromCamera(a,this.camera);const c=this.intersectObjectWithRay(this.plane,this.raycaster,!0);if(c){let u=this.space;if(this.mode==="scale"?u="local":(this.axis==="E"||this.axis==="XYZE"||this.axis==="XYZ")&&(u="world"),u==="local"&&this.mode==="rotate"){const h=this.rotationSnap;this.axis==="X"&&h&&(this.object.rotation.x=Math.round(this.object.rotation.x/h)*h),this.axis==="Y"&&h&&(this.object.rotation.y=Math.round(this.object.rotation.y/h)*h),this.axis==="Z"&&h&&(this.object.rotation.z=Math.round(this.object.rotation.z/h)*h)}this.object.updateMatrixWorld(),this.object.parent&&this.object.parent.updateMatrixWorld(),this.positionStart.copy(this.object.position),this.quaternionStart.copy(this.object.quaternion),this.scaleStart.copy(this.object.scale),this.object.matrixWorld.decompose(this.worldPositionStart,this.worldQuaternionStart,this.worldScaleStart),this.pointStart.copy(c.point).sub(this.worldPositionStart)}this.dragging=!0,this.mouseDownEvent.mode=this.mode,this.dispatchEvent(this.mouseDownEvent)}}),S(this,"pointerMove",a=>{const c=this.axis,u=this.mode,h=this.object;let m=this.space;if(u==="scale"?m="local":(c==="E"||c==="XYZE"||c==="XYZ")&&(m="world"),h===void 0||c===null||this.dragging===!1||a.button!==-1)return;this.raycaster.setFromCamera(a,this.camera);const _=this.intersectObjectWithRay(this.plane,this.raycaster,!0);if(_){if(this.pointEnd.copy(_.point).sub(this.worldPositionStart),u==="translate")this.offset.copy(this.pointEnd).sub(this.pointStart),m==="local"&&c!=="XYZ"&&this.offset.applyQuaternion(this.worldQuaternionInv),c.indexOf("X")===-1&&(this.offset.x=0),c.indexOf("Y")===-1&&(this.offset.y=0),c.indexOf("Z")===-1&&(this.offset.z=0),m==="local"&&c!=="XYZ"?this.offset.applyQuaternion(this.quaternionStart).divide(this.parentScale):this.offset.applyQuaternion(this.parentQuaternionInv).divide(this.parentScale),h.position.copy(this.offset).add(this.positionStart),this.translationSnap&&(m==="local"&&(h.position.applyQuaternion(this.tempQuaternion.copy(this.quaternionStart).invert()),c.search("X")!==-1&&(h.position.x=Math.round(h.position.x/this.translationSnap)*this.translationSnap),c.search("Y")!==-1&&(h.position.y=Math.round(h.position.y/this.translationSnap)*this.translationSnap),c.search("Z")!==-1&&(h.position.z=Math.round(h.position.z/this.translationSnap)*this.translationSnap),h.position.applyQuaternion(this.quaternionStart)),m==="world"&&(h.parent&&h.position.add(this.tempVector.setFromMatrixPosition(h.parent.matrixWorld)),c.search("X")!==-1&&(h.position.x=Math.round(h.position.x/this.translationSnap)*this.translationSnap),c.search("Y")!==-1&&(h.position.y=Math.round(h.position.y/this.translationSnap)*this.translationSnap),c.search("Z")!==-1&&(h.position.z=Math.round(h.position.z/this.translationSnap)*this.translationSnap),h.parent&&h.position.sub(this.tempVector.setFromMatrixPosition(h.parent.matrixWorld))));else if(u==="scale"){if(c.search("XYZ")!==-1){let y=this.pointEnd.length()/this.pointStart.length();this.pointEnd.dot(this.pointStart)<0&&(y*=-1),this.tempVector2.set(y,y,y)}else this.tempVector.copy(this.pointStart),this.tempVector2.copy(this.pointEnd),this.tempVector.applyQuaternion(this.worldQuaternionInv),this.tempVector2.applyQuaternion(this.worldQuaternionInv),this.tempVector2.divide(this.tempVector),c.search("X")===-1&&(this.tempVector2.x=1),c.search("Y")===-1&&(this.tempVector2.y=1),c.search("Z")===-1&&(this.tempVector2.z=1);h.scale.copy(this.scaleStart).multiply(this.tempVector2),this.scaleSnap&&this.object&&(c.search("X")!==-1&&(this.object.scale.x=Math.round(h.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap),c.search("Y")!==-1&&(h.scale.y=Math.round(h.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap),c.search("Z")!==-1&&(h.scale.z=Math.round(h.scale.z/this.scaleSnap)*this.scaleSnap||this.scaleSnap))}else if(u==="rotate"){this.offset.copy(this.pointEnd).sub(this.pointStart);const y=20/this.worldPosition.distanceTo(this.tempVector.setFromMatrixPosition(this.camera.matrixWorld));c==="E"?(this.rotationAxis.copy(this.eye),this.rotationAngle=this.pointEnd.angleTo(this.pointStart),this.startNorm.copy(this.pointStart).normalize(),this.endNorm.copy(this.pointEnd).normalize(),this.rotationAngle*=this.endNorm.cross(this.startNorm).dot(this.eye)<0?1:-1):c==="XYZE"?(this.rotationAxis.copy(this.offset).cross(this.eye).normalize(),this.rotationAngle=this.offset.dot(this.tempVector.copy(this.rotationAxis).cross(this.eye))*y):(c==="X"||c==="Y"||c==="Z")&&(this.rotationAxis.copy(this.unit[c]),this.tempVector.copy(this.unit[c]),m==="local"&&this.tempVector.applyQuaternion(this.worldQuaternion),this.rotationAngle=this.offset.dot(this.tempVector.cross(this.eye).normalize())*y),this.rotationSnap&&(this.rotationAngle=Math.round(this.rotationAngle/this.rotationSnap)*this.rotationSnap),m==="local"&&c!=="E"&&c!=="XYZE"?(h.quaternion.copy(this.quaternionStart),h.quaternion.multiply(this.tempQuaternion.setFromAxisAngle(this.rotationAxis,this.rotationAngle)).normalize()):(this.rotationAxis.applyQuaternion(this.parentQuaternionInv),h.quaternion.copy(this.tempQuaternion.setFromAxisAngle(this.rotationAxis,this.rotationAngle)),h.quaternion.multiply(this.quaternionStart).normalize())}this.dispatchEvent(this.changeEvent),this.dispatchEvent(this.objectChangeEvent)}}),S(this,"pointerUp",a=>{a.button===0&&(this.dragging&&this.axis!==null&&(this.mouseUpEvent.mode=this.mode,this.dispatchEvent(this.mouseUpEvent)),this.dragging=!1,this.axis=null)}),S(this,"getPointer",a=>{var c;if(this.domElement&&(c=this.domElement.ownerDocument)!==null&&c!==void 0&&c.pointerLockElement)return{x:0,y:0,button:a.button};{var u;const h=a.changedTouches?a.changedTouches[0]:a,m=(u=this.domElement)===null||u===void 0?void 0:u.getBoundingClientRect();return{x:(h.clientX-m.left)/m.width*2-1,y:-(h.clientY-m.top)/m.height*2+1,button:a.button}}}),S(this,"onPointerHover",a=>{if(this.enabled)switch(a.pointerType){case"mouse":case"pen":this.pointerHover(this.getPointer(a));break}}),S(this,"onPointerDown",a=>{!this.enabled||!this.domElement||(this.domElement.style.touchAction="none",this.domElement.ownerDocument.addEventListener("pointermove",this.onPointerMove),this.pointerHover(this.getPointer(a)),this.pointerDown(this.getPointer(a)))}),S(this,"onPointerMove",a=>{this.enabled&&this.pointerMove(this.getPointer(a))}),S(this,"onPointerUp",a=>{!this.enabled||!this.domElement||(this.domElement.style.touchAction="",this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.pointerUp(this.getPointer(a)))}),S(this,"getMode",()=>this.mode),S(this,"setMode",a=>{this.mode=a}),S(this,"setTranslationSnap",a=>{this.translationSnap=a}),S(this,"setRotationSnap",a=>{this.rotationSnap=a}),S(this,"setScaleSnap",a=>{this.scaleSnap=a}),S(this,"setSize",a=>{this.size=a}),S(this,"setSpace",a=>{this.space=a}),S(this,"update",()=>{console.warn("THREE.TransformControls: update function has no more functionality and therefore has been deprecated.")}),S(this,"connect",a=>{a===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),this.domElement=a,this.domElement.addEventListener("pointerdown",this.onPointerDown),this.domElement.addEventListener("pointermove",this.onPointerHover),this.domElement.ownerDocument.addEventListener("pointerup",this.onPointerUp)}),S(this,"dispose",()=>{var a,c,u,h,m,_;(a=this.domElement)===null||a===void 0||a.removeEventListener("pointerdown",this.onPointerDown),(c=this.domElement)===null||c===void 0||c.removeEventListener("pointermove",this.onPointerHover),(u=this.domElement)===null||u===void 0||(h=u.ownerDocument)===null||h===void 0||h.removeEventListener("pointermove",this.onPointerMove),(m=this.domElement)===null||m===void 0||(_=m.ownerDocument)===null||_===void 0||_.removeEventListener("pointerup",this.onPointerUp),this.traverse(y=>{const w=y;w.geometry&&w.geometry.dispose(),w.material&&w.material.dispose()})}),this.domElement=r,this.camera=i,this.gizmo=new ra,this.add(this.gizmo),this.plane=new oa,this.add(this.plane);const s=(a,c)=>{let u=c;Object.defineProperty(this,a,{get:function(){return u!==void 0?u:c},set:function(h){u!==h&&(u=h,this.plane[a]=h,this.gizmo[a]=h,this.dispatchEvent({type:a+"-changed",value:h}),this.dispatchEvent(this.changeEvent))}}),this[a]=c,this.plane[a]=c,this.gizmo[a]=c};s("camera",this.camera),s("object",this.object),s("enabled",this.enabled),s("axis",this.axis),s("mode",this.mode),s("translationSnap",this.translationSnap),s("rotationSnap",this.rotationSnap),s("scaleSnap",this.scaleSnap),s("space",this.space),s("size",this.size),s("dragging",this.dragging),s("showX",this.showX),s("showY",this.showY),s("showZ",this.showZ),s("worldPosition",this.worldPosition),s("worldPositionStart",this.worldPositionStart),s("worldQuaternion",this.worldQuaternion),s("worldQuaternionStart",this.worldQuaternionStart),s("cameraPosition",this.cameraPosition),s("cameraQuaternion",this.cameraQuaternion),s("pointStart",this.pointStart),s("pointEnd",this.pointEnd),s("rotationAxis",this.rotationAxis),s("rotationAngle",this.rotationAngle),s("eye",this.eye),r!==void 0&&this.connect(r)}}class ra extends f.Object3D{constructor(){super(),S(this,"isTransformControlsGizmo",!0),S(this,"type","TransformControlsGizmo"),S(this,"tempVector",new f.Vector3(0,0,0)),S(this,"tempEuler",new f.Euler),S(this,"alignVector",new f.Vector3(0,1,0)),S(this,"zeroVector",new f.Vector3(0,0,0)),S(this,"lookAtMatrix",new f.Matrix4),S(this,"tempQuaternion",new f.Quaternion),S(this,"tempQuaternion2",new f.Quaternion),S(this,"identityQuaternion",new f.Quaternion),S(this,"unitX",new f.Vector3(1,0,0)),S(this,"unitY",new f.Vector3(0,1,0)),S(this,"unitZ",new f.Vector3(0,0,1)),S(this,"gizmo",void 0),S(this,"picker",void 0),S(this,"helper",void 0),S(this,"rotationAxis",new f.Vector3),S(this,"cameraPosition",new f.Vector3),S(this,"worldPositionStart",new f.Vector3),S(this,"worldQuaternionStart",new f.Quaternion),S(this,"worldPosition",new f.Vector3),S(this,"worldQuaternion",new f.Quaternion),S(this,"eye",new f.Vector3),S(this,"camera",null),S(this,"enabled",!0),S(this,"axis",null),S(this,"mode","translate"),S(this,"space","world"),S(this,"size",1),S(this,"dragging",!1),S(this,"showX",!0),S(this,"showY",!0),S(this,"showZ",!0),S(this,"updateMatrixWorld",()=>{let fe=this.space;this.mode==="scale"&&(fe="local");const le=fe==="local"?this.worldQuaternion:this.identityQuaternion;this.gizmo.translate.visible=this.mode==="translate",this.gizmo.rotate.visible=this.mode==="rotate",this.gizmo.scale.visible=this.mode==="scale",this.helper.translate.visible=this.mode==="translate",this.helper.rotate.visible=this.mode==="rotate",this.helper.scale.visible=this.mode==="scale";let ne=[];ne=ne.concat(this.picker[this.mode].children),ne=ne.concat(this.gizmo[this.mode].children),ne=ne.concat(this.helper[this.mode].children);for(let be=0;be<ne.length;be++){const V=ne[be];V.visible=!0,V.rotation.set(0,0,0),V.position.copy(this.worldPosition);let ce;if(this.camera.isOrthographicCamera?ce=(this.camera.top-this.camera.bottom)/this.camera.zoom:ce=this.worldPosition.distanceTo(this.cameraPosition)*Math.min(1.9*Math.tan(Math.PI*this.camera.fov/360)/this.camera.zoom,7),V.scale.set(1,1,1).multiplyScalar(ce*this.size/7),V.tag==="helper"){V.visible=!1,V.name==="AXIS"?(V.position.copy(this.worldPositionStart),V.visible=!!this.axis,this.axis==="X"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,0)),V.quaternion.copy(le).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(le).dot(this.eye))>.9&&(V.visible=!1)),this.axis==="Y"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,Math.PI/2)),V.quaternion.copy(le).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(le).dot(this.eye))>.9&&(V.visible=!1)),this.axis==="Z"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0)),V.quaternion.copy(le).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(le).dot(this.eye))>.9&&(V.visible=!1)),this.axis==="XYZE"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0)),this.alignVector.copy(this.rotationAxis),V.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.zeroVector,this.alignVector,this.unitY)),V.quaternion.multiply(this.tempQuaternion),V.visible=this.dragging),this.axis==="E"&&(V.visible=!1)):V.name==="START"?(V.position.copy(this.worldPositionStart),V.visible=this.dragging):V.name==="END"?(V.position.copy(this.worldPosition),V.visible=this.dragging):V.name==="DELTA"?(V.position.copy(this.worldPositionStart),V.quaternion.copy(this.worldQuaternionStart),this.tempVector.set(1e-10,1e-10,1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1),this.tempVector.applyQuaternion(this.worldQuaternionStart.clone().invert()),V.scale.copy(this.tempVector),V.visible=this.dragging):(V.quaternion.copy(le),this.dragging?V.position.copy(this.worldPositionStart):V.position.copy(this.worldPosition),this.axis&&(V.visible=this.axis.search(V.name)!==-1));continue}V.quaternion.copy(le),this.mode==="translate"||this.mode==="scale"?((V.name==="X"||V.name==="XYZX")&&Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(le).dot(this.eye))>.99&&(V.scale.set(1e-10,1e-10,1e-10),V.visible=!1),(V.name==="Y"||V.name==="XYZY")&&Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(le).dot(this.eye))>.99&&(V.scale.set(1e-10,1e-10,1e-10),V.visible=!1),(V.name==="Z"||V.name==="XYZZ")&&Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(le).dot(this.eye))>.99&&(V.scale.set(1e-10,1e-10,1e-10),V.visible=!1),V.name==="XY"&&Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(le).dot(this.eye))<.2&&(V.scale.set(1e-10,1e-10,1e-10),V.visible=!1),V.name==="YZ"&&Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(le).dot(this.eye))<.2&&(V.scale.set(1e-10,1e-10,1e-10),V.visible=!1),V.name==="XZ"&&Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(le).dot(this.eye))<.2&&(V.scale.set(1e-10,1e-10,1e-10),V.visible=!1),V.name.search("X")!==-1&&(this.alignVector.copy(this.unitX).applyQuaternion(le).dot(this.eye)<0?V.tag==="fwd"?V.visible=!1:V.scale.x*=-1:V.tag==="bwd"&&(V.visible=!1)),V.name.search("Y")!==-1&&(this.alignVector.copy(this.unitY).applyQuaternion(le).dot(this.eye)<0?V.tag==="fwd"?V.visible=!1:V.scale.y*=-1:V.tag==="bwd"&&(V.visible=!1)),V.name.search("Z")!==-1&&(this.alignVector.copy(this.unitZ).applyQuaternion(le).dot(this.eye)<0?V.tag==="fwd"?V.visible=!1:V.scale.z*=-1:V.tag==="bwd"&&(V.visible=!1))):this.mode==="rotate"&&(this.tempQuaternion2.copy(le),this.alignVector.copy(this.eye).applyQuaternion(this.tempQuaternion.copy(le).invert()),V.name.search("E")!==-1&&V.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.eye,this.zeroVector,this.unitY)),V.name==="X"&&(this.tempQuaternion.setFromAxisAngle(this.unitX,Math.atan2(-this.alignVector.y,this.alignVector.z)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),V.quaternion.copy(this.tempQuaternion)),V.name==="Y"&&(this.tempQuaternion.setFromAxisAngle(this.unitY,Math.atan2(this.alignVector.x,this.alignVector.z)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),V.quaternion.copy(this.tempQuaternion)),V.name==="Z"&&(this.tempQuaternion.setFromAxisAngle(this.unitZ,Math.atan2(this.alignVector.y,this.alignVector.x)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),V.quaternion.copy(this.tempQuaternion))),V.visible=V.visible&&(V.name.indexOf("X")===-1||this.showX),V.visible=V.visible&&(V.name.indexOf("Y")===-1||this.showY),V.visible=V.visible&&(V.name.indexOf("Z")===-1||this.showZ),V.visible=V.visible&&(V.name.indexOf("E")===-1||this.showX&&this.showY&&this.showZ),V.material.tempOpacity=V.material.tempOpacity||V.material.opacity,V.material.tempColor=V.material.tempColor||V.material.color.clone(),V.material.color.copy(V.material.tempColor),V.material.opacity=V.material.tempOpacity,this.enabled?this.axis&&(V.name===this.axis?(V.material.opacity=1,V.material.color.lerp(new f.Color(1,1,1),.5)):this.axis.split("").some(function(Ve){return V.name===Ve})?(V.material.opacity=1,V.material.color.lerp(new f.Color(1,1,1),.5)):(V.material.opacity*=.25,V.material.color.lerp(new f.Color(1,1,1),.5))):(V.material.opacity*=.5,V.material.color.lerp(new f.Color(1,1,1),.5))}super.updateMatrixWorld()});const i=new f.MeshBasicMaterial({depthTest:!1,depthWrite:!1,transparent:!0,side:f.DoubleSide,fog:!1,toneMapped:!1}),r=new f.LineBasicMaterial({depthTest:!1,depthWrite:!1,transparent:!0,linewidth:1,fog:!1,toneMapped:!1}),s=i.clone();s.opacity=.15;const a=i.clone();a.opacity=.33;const c=i.clone();c.color.set(16711680);const u=i.clone();u.color.set(65280);const h=i.clone();h.color.set(255);const m=i.clone();m.opacity=.25;const _=m.clone();_.color.set(16776960);const y=m.clone();y.color.set(65535);const w=m.clone();w.color.set(16711935),i.clone().color.set(16776960);const k=r.clone();k.color.set(16711680);const E=r.clone();E.color.set(65280);const I=r.clone();I.color.set(255);const O=r.clone();O.color.set(65535);const G=r.clone();G.color.set(16711935);const z=r.clone();z.color.set(16776960);const B=r.clone();B.color.set(7895160);const N=z.clone();N.opacity=.25;const Q=new f.CylinderGeometry(0,.05,.2,12,1,!1),$=new f.BoxGeometry(.125,.125,.125),j=new f.BufferGeometry;j.setAttribute("position",new f.Float32BufferAttribute([0,0,0,1,0,0],3));const F=(fe,le)=>{const ne=new f.BufferGeometry,be=[];for(let V=0;V<=64*le;++V)be.push(0,Math.cos(V/32*Math.PI)*fe,Math.sin(V/32*Math.PI)*fe);return ne.setAttribute("position",new f.Float32BufferAttribute(be,3)),ne},X=()=>{const fe=new f.BufferGeometry;return fe.setAttribute("position",new f.Float32BufferAttribute([0,0,0,1,1,1],3)),fe},Y={X:[[new f.Mesh(Q,c),[1,0,0],[0,0,-Math.PI/2],null,"fwd"],[new f.Mesh(Q,c),[1,0,0],[0,0,Math.PI/2],null,"bwd"],[new f.Line(j,k)]],Y:[[new f.Mesh(Q,u),[0,1,0],null,null,"fwd"],[new f.Mesh(Q,u),[0,1,0],[Math.PI,0,0],null,"bwd"],[new f.Line(j,E),null,[0,0,Math.PI/2]]],Z:[[new f.Mesh(Q,h),[0,0,1],[Math.PI/2,0,0],null,"fwd"],[new f.Mesh(Q,h),[0,0,1],[-Math.PI/2,0,0],null,"bwd"],[new f.Line(j,I),null,[0,-Math.PI/2,0]]],XYZ:[[new f.Mesh(new f.OctahedronGeometry(.1,0),m.clone()),[0,0,0],[0,0,0]]],XY:[[new f.Mesh(new f.PlaneGeometry(.295,.295),_.clone()),[.15,.15,0]],[new f.Line(j,z),[.18,.3,0],null,[.125,1,1]],[new f.Line(j,z),[.3,.18,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new f.Mesh(new f.PlaneGeometry(.295,.295),y.clone()),[0,.15,.15],[0,Math.PI/2,0]],[new f.Line(j,O),[0,.18,.3],[0,0,Math.PI/2],[.125,1,1]],[new f.Line(j,O),[0,.3,.18],[0,-Math.PI/2,0],[.125,1,1]]],XZ:[[new f.Mesh(new f.PlaneGeometry(.295,.295),w.clone()),[.15,0,.15],[-Math.PI/2,0,0]],[new f.Line(j,G),[.18,0,.3],null,[.125,1,1]],[new f.Line(j,G),[.3,0,.18],[0,-Math.PI/2,0],[.125,1,1]]]},Z={X:[[new f.Mesh(new f.CylinderGeometry(.2,0,1,4,1,!1),s),[.6,0,0],[0,0,-Math.PI/2]]],Y:[[new f.Mesh(new f.CylinderGeometry(.2,0,1,4,1,!1),s),[0,.6,0]]],Z:[[new f.Mesh(new f.CylinderGeometry(.2,0,1,4,1,!1),s),[0,0,.6],[Math.PI/2,0,0]]],XYZ:[[new f.Mesh(new f.OctahedronGeometry(.2,0),s)]],XY:[[new f.Mesh(new f.PlaneGeometry(.4,.4),s),[.2,.2,0]]],YZ:[[new f.Mesh(new f.PlaneGeometry(.4,.4),s),[0,.2,.2],[0,Math.PI/2,0]]],XZ:[[new f.Mesh(new f.PlaneGeometry(.4,.4),s),[.2,0,.2],[-Math.PI/2,0,0]]]},ue={START:[[new f.Mesh(new f.OctahedronGeometry(.01,2),a),null,null,null,"helper"]],END:[[new f.Mesh(new f.OctahedronGeometry(.01,2),a),null,null,null,"helper"]],DELTA:[[new f.Line(X(),a),null,null,null,"helper"]],X:[[new f.Line(j,a.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new f.Line(j,a.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new f.Line(j,a.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},ge={X:[[new f.Line(F(1,.5),k)],[new f.Mesh(new f.OctahedronGeometry(.04,0),c),[0,0,.99],null,[1,3,1]]],Y:[[new f.Line(F(1,.5),E),null,[0,0,-Math.PI/2]],[new f.Mesh(new f.OctahedronGeometry(.04,0),u),[0,0,.99],null,[3,1,1]]],Z:[[new f.Line(F(1,.5),I),null,[0,Math.PI/2,0]],[new f.Mesh(new f.OctahedronGeometry(.04,0),h),[.99,0,0],null,[1,3,1]]],E:[[new f.Line(F(1.25,1),N),null,[0,Math.PI/2,0]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),N),[1.17,0,0],[0,0,-Math.PI/2],[1,1,.001]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),N),[-1.17,0,0],[0,0,Math.PI/2],[1,1,.001]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),N),[0,-1.17,0],[Math.PI,0,0],[1,1,.001]],[new f.Mesh(new f.CylinderGeometry(.03,0,.15,4,1,!1),N),[0,1.17,0],[0,0,0],[1,1,.001]]],XYZE:[[new f.Line(F(1,1),B),null,[0,Math.PI/2,0]]]},pe={AXIS:[[new f.Line(j,a.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]]},me={X:[[new f.Mesh(new f.TorusGeometry(1,.1,4,24),s),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],Y:[[new f.Mesh(new f.TorusGeometry(1,.1,4,24),s),[0,0,0],[Math.PI/2,0,0]]],Z:[[new f.Mesh(new f.TorusGeometry(1,.1,4,24),s),[0,0,0],[0,0,-Math.PI/2]]],E:[[new f.Mesh(new f.TorusGeometry(1.25,.1,2,24),s)]],XYZE:[[new f.Mesh(new f.SphereGeometry(.7,10,8),s)]]},he={X:[[new f.Mesh($,c),[.8,0,0],[0,0,-Math.PI/2]],[new f.Line(j,k),null,null,[.8,1,1]]],Y:[[new f.Mesh($,u),[0,.8,0]],[new f.Line(j,E),null,[0,0,Math.PI/2],[.8,1,1]]],Z:[[new f.Mesh($,h),[0,0,.8],[Math.PI/2,0,0]],[new f.Line(j,I),null,[0,-Math.PI/2,0],[.8,1,1]]],XY:[[new f.Mesh($,_),[.85,.85,0],null,[2,2,.2]],[new f.Line(j,z),[.855,.98,0],null,[.125,1,1]],[new f.Line(j,z),[.98,.855,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new f.Mesh($,y),[0,.85,.85],null,[.2,2,2]],[new f.Line(j,O),[0,.855,.98],[0,0,Math.PI/2],[.125,1,1]],[new f.Line(j,O),[0,.98,.855],[0,-Math.PI/2,0],[.125,1,1]]],XZ:[[new f.Mesh($,w),[.85,0,.85],null,[2,.2,2]],[new f.Line(j,G),[.855,0,.98],null,[.125,1,1]],[new f.Line(j,G),[.98,0,.855],[0,-Math.PI/2,0],[.125,1,1]]],XYZX:[[new f.Mesh(new f.BoxGeometry(.125,.125,.125),m.clone()),[1.1,0,0]]],XYZY:[[new f.Mesh(new f.BoxGeometry(.125,.125,.125),m.clone()),[0,1.1,0]]],XYZZ:[[new f.Mesh(new f.BoxGeometry(.125,.125,.125),m.clone()),[0,0,1.1]]]},te={X:[[new f.Mesh(new f.CylinderGeometry(.2,0,.8,4,1,!1),s),[.5,0,0],[0,0,-Math.PI/2]]],Y:[[new f.Mesh(new f.CylinderGeometry(.2,0,.8,4,1,!1),s),[0,.5,0]]],Z:[[new f.Mesh(new f.CylinderGeometry(.2,0,.8,4,1,!1),s),[0,0,.5],[Math.PI/2,0,0]]],XY:[[new f.Mesh($,s),[.85,.85,0],null,[3,3,.2]]],YZ:[[new f.Mesh($,s),[0,.85,.85],null,[.2,3,3]]],XZ:[[new f.Mesh($,s),[.85,0,.85],null,[3,.2,3]]],XYZX:[[new f.Mesh(new f.BoxGeometry(.2,.2,.2),s),[1.1,0,0]]],XYZY:[[new f.Mesh(new f.BoxGeometry(.2,.2,.2),s),[0,1.1,0]]],XYZZ:[[new f.Mesh(new f.BoxGeometry(.2,.2,.2),s),[0,0,1.1]]]},q={X:[[new f.Line(j,a.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new f.Line(j,a.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new f.Line(j,a.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},Pe=fe=>{const le=new f.Object3D;for(let ne in fe)for(let be=fe[ne].length;be--;){const V=fe[ne][be][0].clone(),ce=fe[ne][be][1],Ve=fe[ne][be][2],Oe=fe[ne][be][3],we=fe[ne][be][4];V.name=ne,V.tag=we,ce&&V.position.set(ce[0],ce[1],ce[2]),Ve&&V.rotation.set(Ve[0],Ve[1],Ve[2]),Oe&&V.scale.set(Oe[0],Oe[1],Oe[2]),V.updateMatrix();const Xe=V.geometry.clone();Xe.applyMatrix4(V.matrix),V.geometry=Xe,V.renderOrder=1/0,V.position.set(0,0,0),V.rotation.set(0,0,0),V.scale.set(1,1,1),le.add(V)}return le};this.gizmo={},this.picker={},this.helper={},this.add(this.gizmo.translate=Pe(Y)),this.add(this.gizmo.rotate=Pe(ge)),this.add(this.gizmo.scale=Pe(he)),this.add(this.picker.translate=Pe(Z)),this.add(this.picker.rotate=Pe(me)),this.add(this.picker.scale=Pe(te)),this.add(this.helper.translate=Pe(ue)),this.add(this.helper.rotate=Pe(pe)),this.add(this.helper.scale=Pe(q)),this.picker.translate.visible=!1,this.picker.rotate.visible=!1,this.picker.scale.visible=!1}}class oa extends f.Mesh{constructor(){super(new f.PlaneGeometry(1e5,1e5,2,2),new f.MeshBasicMaterial({visible:!1,wireframe:!0,side:f.DoubleSide,transparent:!0,opacity:.1,toneMapped:!1})),S(this,"isTransformControlsPlane",!0),S(this,"type","TransformControlsPlane"),S(this,"unitX",new f.Vector3(1,0,0)),S(this,"unitY",new f.Vector3(0,1,0)),S(this,"unitZ",new f.Vector3(0,0,1)),S(this,"tempVector",new f.Vector3),S(this,"dirVector",new f.Vector3),S(this,"alignVector",new f.Vector3),S(this,"tempMatrix",new f.Matrix4),S(this,"identityQuaternion",new f.Quaternion),S(this,"cameraQuaternion",new f.Quaternion),S(this,"worldPosition",new f.Vector3),S(this,"worldQuaternion",new f.Quaternion),S(this,"eye",new f.Vector3),S(this,"axis",null),S(this,"mode","translate"),S(this,"space","world"),S(this,"updateMatrixWorld",()=>{let i=this.space;switch(this.position.copy(this.worldPosition),this.mode==="scale"&&(i="local"),this.unitX.set(1,0,0).applyQuaternion(i==="local"?this.worldQuaternion:this.identityQuaternion),this.unitY.set(0,1,0).applyQuaternion(i==="local"?this.worldQuaternion:this.identityQuaternion),this.unitZ.set(0,0,1).applyQuaternion(i==="local"?this.worldQuaternion:this.identityQuaternion),this.alignVector.copy(this.unitY),this.mode){case"translate":case"scale":switch(this.axis){case"X":this.alignVector.copy(this.eye).cross(this.unitX),this.dirVector.copy(this.unitX).cross(this.alignVector);break;case"Y":this.alignVector.copy(this.eye).cross(this.unitY),this.dirVector.copy(this.unitY).cross(this.alignVector);break;case"Z":this.alignVector.copy(this.eye).cross(this.unitZ),this.dirVector.copy(this.unitZ).cross(this.alignVector);break;case"XY":this.dirVector.copy(this.unitZ);break;case"YZ":this.dirVector.copy(this.unitX);break;case"XZ":this.alignVector.copy(this.unitZ),this.dirVector.copy(this.unitY);break;case"XYZ":case"E":this.dirVector.set(0,0,0);break}break;case"rotate":default:this.dirVector.set(0,0,0)}this.dirVector.length()===0?this.quaternion.copy(this.cameraQuaternion):(this.tempMatrix.lookAt(this.tempVector.set(0,0,0),this.dirVector,this.alignVector),this.quaternion.setFromRotationMatrix(this.tempMatrix)),super.updateMatrixWorld()})}}const Pr=(g,i)=>(g%i+i)%i;class aa extends f.EventDispatcher{constructor(i,r){super(),S(this,"object",void 0),S(this,"domElement",void 0),S(this,"enabled",!0),S(this,"target",new f.Vector3),S(this,"minDistance",0),S(this,"maxDistance",1/0),S(this,"minZoom",0),S(this,"maxZoom",1/0),S(this,"minPolarAngle",0),S(this,"maxPolarAngle",Math.PI),S(this,"minAzimuthAngle",-1/0),S(this,"maxAzimuthAngle",1/0),S(this,"enableDamping",!1),S(this,"dampingFactor",.05),S(this,"enableZoom",!0),S(this,"zoomSpeed",1),S(this,"enableRotate",!0),S(this,"rotateSpeed",1),S(this,"enablePan",!0),S(this,"panSpeed",1),S(this,"screenSpacePanning",!0),S(this,"keyPanSpeed",7),S(this,"autoRotate",!1),S(this,"autoRotateSpeed",2),S(this,"reverseOrbit",!1),S(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),S(this,"mouseButtons",{LEFT:f.MOUSE.ROTATE,MIDDLE:f.MOUSE.DOLLY,RIGHT:f.MOUSE.PAN}),S(this,"touches",{ONE:f.TOUCH.ROTATE,TWO:f.TOUCH.DOLLY_PAN}),S(this,"target0",void 0),S(this,"position0",void 0),S(this,"zoom0",void 0),S(this,"_domElementKeyEvents",null),S(this,"getPolarAngle",void 0),S(this,"getAzimuthalAngle",void 0),S(this,"setPolarAngle",void 0),S(this,"setAzimuthalAngle",void 0),S(this,"getDistance",void 0),S(this,"listenToKeyEvents",void 0),S(this,"saveState",void 0),S(this,"reset",void 0),S(this,"update",void 0),S(this,"connect",void 0),S(this,"dispose",void 0),this.object=i,this.domElement=r,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object instanceof f.PerspectiveCamera?this.object.zoom:1,this.getPolarAngle=()=>y.phi,this.getAzimuthalAngle=()=>y.theta,this.setPolarAngle=D=>{let K=Pr(D,2*Math.PI),H=y.phi;H<0&&(H+=2*Math.PI),K<0&&(K+=2*Math.PI);let ie=Math.abs(K-H);2*Math.PI-ie<ie&&(K<H?K+=2*Math.PI:H+=2*Math.PI),w.phi=K-H,s.update()},this.setAzimuthalAngle=D=>{let K=Pr(D,2*Math.PI),H=y.theta;H<0&&(H+=2*Math.PI),K<0&&(K+=2*Math.PI);let ie=Math.abs(K-H);2*Math.PI-ie<ie&&(K<H?K+=2*Math.PI:H+=2*Math.PI),w.theta=K-H,s.update()},this.getDistance=()=>s.object.position.distanceTo(s.target),this.listenToKeyEvents=D=>{D.addEventListener("keydown",rt),this._domElementKeyEvents=D},this.saveState=()=>{s.target0.copy(s.target),s.position0.copy(s.object.position),s.zoom0=s.object instanceof f.PerspectiveCamera?s.object.zoom:1},this.reset=()=>{s.target.copy(s.target0),s.object.position.copy(s.position0),s.object instanceof f.PerspectiveCamera&&(s.object.zoom=s.zoom0,s.object.updateProjectionMatrix()),s.dispatchEvent(a),s.update(),m=h.NONE},this.update=(()=>{const D=new f.Vector3,K=new f.Quaternion().setFromUnitVectors(i.up,new f.Vector3(0,1,0)),H=K.clone().invert(),ie=new f.Vector3,ye=new f.Quaternion,Ie=2*Math.PI;return function(){const $t=s.object.position;D.copy($t).sub(s.target),D.applyQuaternion(K),y.setFromVector3(D),s.autoRotate&&m===h.NONE&&ue(Y()),s.enableDamping?(y.theta+=w.theta*s.dampingFactor,y.phi+=w.phi*s.dampingFactor):(y.theta+=w.theta,y.phi+=w.phi);let Ne=s.minAzimuthAngle,Fe=s.maxAzimuthAngle;return isFinite(Ne)&&isFinite(Fe)&&(Ne<-Math.PI?Ne+=Ie:Ne>Math.PI&&(Ne-=Ie),Fe<-Math.PI?Fe+=Ie:Fe>Math.PI&&(Fe-=Ie),Ne<=Fe?y.theta=Math.max(Ne,Math.min(Fe,y.theta)):y.theta=y.theta>(Ne+Fe)/2?Math.max(Ne,y.theta):Math.min(Fe,y.theta)),y.phi=Math.max(s.minPolarAngle,Math.min(s.maxPolarAngle,y.phi)),y.makeSafe(),y.radius*=x,y.radius=Math.max(s.minDistance,Math.min(s.maxDistance,y.radius)),s.enableDamping===!0?s.target.addScaledVector(k,s.dampingFactor):s.target.add(k),D.setFromSpherical(y),D.applyQuaternion(H),$t.copy(s.target).add(D),s.object.lookAt(s.target),s.enableDamping===!0?(w.theta*=1-s.dampingFactor,w.phi*=1-s.dampingFactor,k.multiplyScalar(1-s.dampingFactor)):(w.set(0,0,0),k.set(0,0,0)),x=1,E||ie.distanceToSquared(s.object.position)>_||8*(1-ye.dot(s.object.quaternion))>_?(s.dispatchEvent(a),ie.copy(s.object.position),ye.copy(s.object.quaternion),E=!1,!0):!1}})(),this.connect=D=>{D===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),s.domElement=D,s.domElement.style.touchAction="none",s.domElement.addEventListener("contextmenu",Kt),s.domElement.addEventListener("pointerdown",Ye),s.domElement.addEventListener("pointercancel",mn),s.domElement.addEventListener("wheel",vn)},this.dispose=()=>{var D,K,H,ie,ye,Ie;(D=s.domElement)===null||D===void 0||D.removeEventListener("contextmenu",Kt),(K=s.domElement)===null||K===void 0||K.removeEventListener("pointerdown",Ye),(H=s.domElement)===null||H===void 0||H.removeEventListener("pointercancel",mn),(ie=s.domElement)===null||ie===void 0||ie.removeEventListener("wheel",vn),(ye=s.domElement)===null||ye===void 0||ye.ownerDocument.removeEventListener("pointermove",Rt),(Ie=s.domElement)===null||Ie===void 0||Ie.ownerDocument.removeEventListener("pointerup",tt),s._domElementKeyEvents!==null&&s._domElementKeyEvents.removeEventListener("keydown",rt)};const s=this,a={type:"change"},c={type:"start"},u={type:"end"},h={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let m=h.NONE;const _=1e-6,y=new f.Spherical,w=new f.Spherical;let x=1;const k=new f.Vector3;let E=!1;const I=new f.Vector2,O=new f.Vector2,G=new f.Vector2,z=new f.Vector2,B=new f.Vector2,N=new f.Vector2,Q=new f.Vector2,$=new f.Vector2,j=new f.Vector2,F=[],X={};function Y(){return 2*Math.PI/60/60*s.autoRotateSpeed}function Z(){return Math.pow(.95,s.zoomSpeed)}function ue(D){s.reverseOrbit?w.theta+=D:w.theta-=D}function ge(D){s.reverseOrbit?w.phi+=D:w.phi-=D}const pe=(()=>{const D=new f.Vector3;return function(H,ie){D.setFromMatrixColumn(ie,0),D.multiplyScalar(-H),k.add(D)}})(),me=(()=>{const D=new f.Vector3;return function(H,ie){s.screenSpacePanning===!0?D.setFromMatrixColumn(ie,1):(D.setFromMatrixColumn(ie,0),D.crossVectors(s.object.up,D)),D.multiplyScalar(H),k.add(D)}})(),he=(()=>{const D=new f.Vector3;return function(H,ie){const ye=s.domElement;if(ye&&s.object instanceof f.PerspectiveCamera&&s.object.isPerspectiveCamera){const Ie=s.object.position;D.copy(Ie).sub(s.target);let Mt=D.length();Mt*=Math.tan(s.object.fov/2*Math.PI/180),pe(2*H*Mt/ye.clientHeight,s.object.matrix),me(2*ie*Mt/ye.clientHeight,s.object.matrix)}else ye&&s.object instanceof f.OrthographicCamera&&s.object.isOrthographicCamera?(pe(H*(s.object.right-s.object.left)/s.object.zoom/ye.clientWidth,s.object.matrix),me(ie*(s.object.top-s.object.bottom)/s.object.zoom/ye.clientHeight,s.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),s.enablePan=!1)}})();function te(D){s.object instanceof f.PerspectiveCamera&&s.object.isPerspectiveCamera?x/=D:s.object instanceof f.OrthographicCamera&&s.object.isOrthographicCamera?(s.object.zoom=Math.max(s.minZoom,Math.min(s.maxZoom,s.object.zoom*D)),s.object.updateProjectionMatrix(),E=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),s.enableZoom=!1)}function q(D){s.object instanceof f.PerspectiveCamera&&s.object.isPerspectiveCamera?x*=D:s.object instanceof f.OrthographicCamera&&s.object.isOrthographicCamera?(s.object.zoom=Math.max(s.minZoom,Math.min(s.maxZoom,s.object.zoom/D)),s.object.updateProjectionMatrix(),E=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),s.enableZoom=!1)}function Pe(D){I.set(D.clientX,D.clientY)}function fe(D){Q.set(D.clientX,D.clientY)}function le(D){z.set(D.clientX,D.clientY)}function ne(D){O.set(D.clientX,D.clientY),G.subVectors(O,I).multiplyScalar(s.rotateSpeed);const K=s.domElement;K&&(ue(2*Math.PI*G.x/K.clientHeight),ge(2*Math.PI*G.y/K.clientHeight)),I.copy(O),s.update()}function be(D){$.set(D.clientX,D.clientY),j.subVectors($,Q),j.y>0?te(Z()):j.y<0&&q(Z()),Q.copy($),s.update()}function V(D){B.set(D.clientX,D.clientY),N.subVectors(B,z).multiplyScalar(s.panSpeed),he(N.x,N.y),z.copy(B),s.update()}function ce(D){D.deltaY<0?q(Z()):D.deltaY>0&&te(Z()),s.update()}function Ve(D){let K=!1;switch(D.code){case s.keys.UP:he(0,s.keyPanSpeed),K=!0;break;case s.keys.BOTTOM:he(0,-s.keyPanSpeed),K=!0;break;case s.keys.LEFT:he(s.keyPanSpeed,0),K=!0;break;case s.keys.RIGHT:he(-s.keyPanSpeed,0),K=!0;break}K&&(D.preventDefault(),s.update())}function Oe(){if(F.length==1)I.set(F[0].pageX,F[0].pageY);else{const D=.5*(F[0].pageX+F[1].pageX),K=.5*(F[0].pageY+F[1].pageY);I.set(D,K)}}function we(){if(F.length==1)z.set(F[0].pageX,F[0].pageY);else{const D=.5*(F[0].pageX+F[1].pageX),K=.5*(F[0].pageY+F[1].pageY);z.set(D,K)}}function Xe(){const D=F[0].pageX-F[1].pageX,K=F[0].pageY-F[1].pageY,H=Math.sqrt(D*D+K*K);Q.set(0,H)}function hn(){s.enableZoom&&Xe(),s.enablePan&&we()}function Ge(){s.enableZoom&&Xe(),s.enableRotate&&Oe()}function dn(D){if(F.length==1)O.set(D.pageX,D.pageY);else{const H=ft(D),ie=.5*(D.pageX+H.x),ye=.5*(D.pageY+H.y);O.set(ie,ye)}G.subVectors(O,I).multiplyScalar(s.rotateSpeed);const K=s.domElement;K&&(ue(2*Math.PI*G.x/K.clientHeight),ge(2*Math.PI*G.y/K.clientHeight)),I.copy(O)}function Gt(D){if(F.length==1)B.set(D.pageX,D.pageY);else{const K=ft(D),H=.5*(D.pageX+K.x),ie=.5*(D.pageY+K.y);B.set(H,ie)}N.subVectors(B,z).multiplyScalar(s.panSpeed),he(N.x,N.y),z.copy(B)}function et(D){const K=ft(D),H=D.pageX-K.x,ie=D.pageY-K.y,ye=Math.sqrt(H*H+ie*ie);$.set(0,ye),j.set(0,Math.pow($.y/Q.y,s.zoomSpeed)),te(j.y),Q.copy($)}function dt(D){s.enableZoom&&et(D),s.enablePan&&Gt(D)}function Be(D){s.enableZoom&&et(D),s.enableRotate&&dn(D)}function Ye(D){if(s.enabled!==!1){if(F.length===0){var K,H;(K=s.domElement)===null||K===void 0||K.ownerDocument.addEventListener("pointermove",Rt),(H=s.domElement)===null||H===void 0||H.ownerDocument.addEventListener("pointerup",tt)}gn(D),D.pointerType==="touch"?mt(D):Un(D)}}function Rt(D){s.enabled!==!1&&(D.pointerType==="touch"?bn(D):fn(D))}function tt(D){if(ot(D),F.length===0){var K,H,ie;(K=s.domElement)===null||K===void 0||K.releasePointerCapture(D.pointerId),(H=s.domElement)===null||H===void 0||H.ownerDocument.removeEventListener("pointermove",Rt),(ie=s.domElement)===null||ie===void 0||ie.ownerDocument.removeEventListener("pointerup",tt)}s.dispatchEvent(u),m=h.NONE}function mn(D){ot(D)}function Un(D){let K;switch(D.button){case 0:K=s.mouseButtons.LEFT;break;case 1:K=s.mouseButtons.MIDDLE;break;case 2:K=s.mouseButtons.RIGHT;break;default:K=-1}switch(K){case f.MOUSE.DOLLY:if(s.enableZoom===!1)return;fe(D),m=h.DOLLY;break;case f.MOUSE.ROTATE:if(D.ctrlKey||D.metaKey||D.shiftKey){if(s.enablePan===!1)return;le(D),m=h.PAN}else{if(s.enableRotate===!1)return;Pe(D),m=h.ROTATE}break;case f.MOUSE.PAN:if(D.ctrlKey||D.metaKey||D.shiftKey){if(s.enableRotate===!1)return;Pe(D),m=h.ROTATE}else{if(s.enablePan===!1)return;le(D),m=h.PAN}break;default:m=h.NONE}m!==h.NONE&&s.dispatchEvent(c)}function fn(D){if(s.enabled!==!1)switch(m){case h.ROTATE:if(s.enableRotate===!1)return;ne(D);break;case h.DOLLY:if(s.enableZoom===!1)return;be(D);break;case h.PAN:if(s.enablePan===!1)return;V(D);break}}function vn(D){s.enabled===!1||s.enableZoom===!1||m!==h.NONE&&m!==h.ROTATE||(D.preventDefault(),s.dispatchEvent(c),ce(D),s.dispatchEvent(u))}function rt(D){s.enabled===!1||s.enablePan===!1||Ve(D)}function mt(D){switch(nt(D),F.length){case 1:switch(s.touches.ONE){case f.TOUCH.ROTATE:if(s.enableRotate===!1)return;Oe(),m=h.TOUCH_ROTATE;break;case f.TOUCH.PAN:if(s.enablePan===!1)return;we(),m=h.TOUCH_PAN;break;default:m=h.NONE}break;case 2:switch(s.touches.TWO){case f.TOUCH.DOLLY_PAN:if(s.enableZoom===!1&&s.enablePan===!1)return;hn(),m=h.TOUCH_DOLLY_PAN;break;case f.TOUCH.DOLLY_ROTATE:if(s.enableZoom===!1&&s.enableRotate===!1)return;Ge(),m=h.TOUCH_DOLLY_ROTATE;break;default:m=h.NONE}break;default:m=h.NONE}m!==h.NONE&&s.dispatchEvent(c)}function bn(D){switch(nt(D),m){case h.TOUCH_ROTATE:if(s.enableRotate===!1)return;dn(D),s.update();break;case h.TOUCH_PAN:if(s.enablePan===!1)return;Gt(D),s.update();break;case h.TOUCH_DOLLY_PAN:if(s.enableZoom===!1&&s.enablePan===!1)return;dt(D),s.update();break;case h.TOUCH_DOLLY_ROTATE:if(s.enableZoom===!1&&s.enableRotate===!1)return;Be(D),s.update();break;default:m=h.NONE}}function Kt(D){s.enabled!==!1&&D.preventDefault()}function gn(D){F.push(D)}function ot(D){delete X[D.pointerId];for(let K=0;K<F.length;K++)if(F[K].pointerId==D.pointerId){F.splice(K,1);return}}function nt(D){let K=X[D.pointerId];K===void 0&&(K=new f.Vector2,X[D.pointerId]=K),K.set(D.pageX,D.pageY)}function ft(D){const K=D.pointerId===F[0].pointerId?F[1]:F[0];return X[K.pointerId]}r!==void 0&&this.connect(r),this.update()}}class la extends f.Loader{constructor(i){super(i),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(r){return new da(r)}),this.register(function(r){return new wa(r)}),this.register(function(r){return new ya(r)}),this.register(function(r){return new fa(r)}),this.register(function(r){return new va(r)}),this.register(function(r){return new ba(r)}),this.register(function(r){return new ga(r)}),this.register(function(r){return new ha(r)}),this.register(function(r){return new _a(r)}),this.register(function(r){return new ma(r)}),this.register(function(r){return new pa(r)}),this.register(function(r){return new xa(r)})}load(i,r,s,a){const c=this;let u;this.resourcePath!==""?u=this.resourcePath:this.path!==""?u=this.path:u=f.LoaderUtils.extractUrlBase(i),this.manager.itemStart(i);const h=function(_){a?a(_):console.error(_),c.manager.itemError(i),c.manager.itemEnd(i)},m=new f.FileLoader(this.manager);m.setPath(this.path),m.setResponseType("arraybuffer"),m.setRequestHeader(this.requestHeader),m.setWithCredentials(this.withCredentials),m.load(i,function(_){try{c.parse(_,u,function(y){r(y),c.manager.itemEnd(i)},h)}catch(y){h(y)}},s,h)}setDRACOLoader(i){return this.dracoLoader=i,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(i){return this.ktx2Loader=i,this}setMeshoptDecoder(i){return this.meshoptDecoder=i,this}register(i){return this.pluginCallbacks.indexOf(i)===-1&&this.pluginCallbacks.push(i),this}unregister(i){return this.pluginCallbacks.indexOf(i)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(i),1),this}parse(i,r,s,a){let c;const u={},h={};if(typeof i=="string")c=i;else if(f.LoaderUtils.decodeText(new Uint8Array(i,0,4))===Mr){try{u[se.KHR_BINARY_GLTF]=new Ca(i)}catch(w){a&&a(w);return}c=u[se.KHR_BINARY_GLTF].content}else c=f.LoaderUtils.decodeText(new Uint8Array(i));const m=JSON.parse(c);if(m.asset===void 0||m.asset.version[0]<2){a&&a(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const _=new Ba(m,{path:r||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});_.fileLoader.setRequestHeader(this.requestHeader);for(let y=0;y<this.pluginCallbacks.length;y++){const w=this.pluginCallbacks[y](_);h[w.name]=w,u[w.name]=!0}if(m.extensionsUsed)for(let y=0;y<m.extensionsUsed.length;++y){const w=m.extensionsUsed[y],x=m.extensionsRequired||[];switch(w){case se.KHR_MATERIALS_UNLIT:u[w]=new ua;break;case se.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:u[w]=new ka;break;case se.KHR_DRACO_MESH_COMPRESSION:u[w]=new Pa(m,this.dracoLoader);break;case se.KHR_TEXTURE_TRANSFORM:u[w]=new Ma;break;case se.KHR_MESH_QUANTIZATION:u[w]=new Sa;break;default:x.indexOf(w)>=0&&h[w]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+w+'".')}}_.setExtensions(u),_.setPlugins(h),_.parse(s,a)}parseAsync(i,r){const s=this;return new Promise(function(a,c){s.parse(i,r,a,c)})}}function ca(){let g={};return{get:function(i){return g[i]},add:function(i,r){g[i]=r},remove:function(i){delete g[i]},removeAll:function(){g={}}}}const se={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:"KHR_materials_pbrSpecularGlossiness",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression"};class pa{constructor(i){this.parser=i,this.name=se.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const i=this.parser,r=this.parser.json.nodes||[];for(let s=0,a=r.length;s<a;s++){const c=r[s];c.extensions&&c.extensions[this.name]&&c.extensions[this.name].light!==void 0&&i._addNodeRef(this.cache,c.extensions[this.name].light)}}_loadLight(i){const r=this.parser,s="light:"+i;let a=r.cache.get(s);if(a)return a;const c=r.json,m=((c.extensions&&c.extensions[this.name]||{}).lights||[])[i];let _;const y=new f.Color(16777215);m.color!==void 0&&y.fromArray(m.color);const w=m.range!==void 0?m.range:0;switch(m.type){case"directional":_=new f.DirectionalLight(y),_.target.position.set(0,0,-1),_.add(_.target);break;case"point":_=new f.PointLight(y),_.distance=w;break;case"spot":_=new f.SpotLight(y),_.distance=w,m.spot=m.spot||{},m.spot.innerConeAngle=m.spot.innerConeAngle!==void 0?m.spot.innerConeAngle:0,m.spot.outerConeAngle=m.spot.outerConeAngle!==void 0?m.spot.outerConeAngle:Math.PI/4,_.angle=m.spot.outerConeAngle,_.penumbra=1-m.spot.innerConeAngle/m.spot.outerConeAngle,_.target.position.set(0,0,-1),_.add(_.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+m.type)}return _.position.set(0,0,0),_.decay=2,m.intensity!==void 0&&(_.intensity=m.intensity),_.name=r.createUniqueName(m.name||"light_"+i),a=Promise.resolve(_),r.cache.add(s,a),a}createNodeAttachment(i){const r=this,s=this.parser,c=s.json.nodes[i],h=(c.extensions&&c.extensions[this.name]||{}).light;return h===void 0?null:this._loadLight(h).then(function(m){return s._getNodeRef(r.cache,h,m)})}}class ua{constructor(){this.name=se.KHR_MATERIALS_UNLIT}getMaterialType(){return f.MeshBasicMaterial}extendParams(i,r,s){const a=[];i.color=new f.Color(1,1,1),i.opacity=1;const c=r.pbrMetallicRoughness;if(c){if(Array.isArray(c.baseColorFactor)){const u=c.baseColorFactor;i.color.fromArray(u),i.opacity=u[3]}c.baseColorTexture!==void 0&&a.push(s.assignTexture(i,"map",c.baseColorTexture,f.sRGBEncoding))}return Promise.all(a)}}class ha{constructor(i){this.parser=i,this.name=se.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(i,r){const a=this.parser.json.materials[i];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const c=a.extensions[this.name].emissiveStrength;return c!==void 0&&(r.emissiveIntensity=c),Promise.resolve()}}class da{constructor(i){this.parser=i,this.name=se.KHR_MATERIALS_CLEARCOAT}getMaterialType(i){const s=this.parser.json.materials[i];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,r){const s=this.parser,a=s.json.materials[i];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const c=[],u=a.extensions[this.name];if(u.clearcoatFactor!==void 0&&(r.clearcoat=u.clearcoatFactor),u.clearcoatTexture!==void 0&&c.push(s.assignTexture(r,"clearcoatMap",u.clearcoatTexture)),u.clearcoatRoughnessFactor!==void 0&&(r.clearcoatRoughness=u.clearcoatRoughnessFactor),u.clearcoatRoughnessTexture!==void 0&&c.push(s.assignTexture(r,"clearcoatRoughnessMap",u.clearcoatRoughnessTexture)),u.clearcoatNormalTexture!==void 0&&(c.push(s.assignTexture(r,"clearcoatNormalMap",u.clearcoatNormalTexture)),u.clearcoatNormalTexture.scale!==void 0)){const h=u.clearcoatNormalTexture.scale;r.clearcoatNormalScale=new f.Vector2(h,h)}return Promise.all(c)}}class ma{constructor(i){this.parser=i,this.name=se.KHR_MATERIALS_IRIDESCENCE}getMaterialType(i){const s=this.parser.json.materials[i];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,r){const s=this.parser,a=s.json.materials[i];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const c=[],u=a.extensions[this.name];return u.iridescenceFactor!==void 0&&(r.iridescence=u.iridescenceFactor),u.iridescenceTexture!==void 0&&c.push(s.assignTexture(r,"iridescenceMap",u.iridescenceTexture)),u.iridescenceIor!==void 0&&(r.iridescenceIOR=u.iridescenceIor),r.iridescenceThicknessRange===void 0&&(r.iridescenceThicknessRange=[100,400]),u.iridescenceThicknessMinimum!==void 0&&(r.iridescenceThicknessRange[0]=u.iridescenceThicknessMinimum),u.iridescenceThicknessMaximum!==void 0&&(r.iridescenceThicknessRange[1]=u.iridescenceThicknessMaximum),u.iridescenceThicknessTexture!==void 0&&c.push(s.assignTexture(r,"iridescenceThicknessMap",u.iridescenceThicknessTexture)),Promise.all(c)}}class fa{constructor(i){this.parser=i,this.name=se.KHR_MATERIALS_SHEEN}getMaterialType(i){const s=this.parser.json.materials[i];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,r){const s=this.parser,a=s.json.materials[i];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const c=[];r.sheenColor=new f.Color(0,0,0),r.sheenRoughness=0,r.sheen=1;const u=a.extensions[this.name];return u.sheenColorFactor!==void 0&&r.sheenColor.fromArray(u.sheenColorFactor),u.sheenRoughnessFactor!==void 0&&(r.sheenRoughness=u.sheenRoughnessFactor),u.sheenColorTexture!==void 0&&c.push(s.assignTexture(r,"sheenColorMap",u.sheenColorTexture,f.sRGBEncoding)),u.sheenRoughnessTexture!==void 0&&c.push(s.assignTexture(r,"sheenRoughnessMap",u.sheenRoughnessTexture)),Promise.all(c)}}class va{constructor(i){this.parser=i,this.name=se.KHR_MATERIALS_TRANSMISSION}getMaterialType(i){const s=this.parser.json.materials[i];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,r){const s=this.parser,a=s.json.materials[i];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const c=[],u=a.extensions[this.name];return u.transmissionFactor!==void 0&&(r.transmission=u.transmissionFactor),u.transmissionTexture!==void 0&&c.push(s.assignTexture(r,"transmissionMap",u.transmissionTexture)),Promise.all(c)}}class ba{constructor(i){this.parser=i,this.name=se.KHR_MATERIALS_VOLUME}getMaterialType(i){const s=this.parser.json.materials[i];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,r){const s=this.parser,a=s.json.materials[i];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const c=[],u=a.extensions[this.name];r.thickness=u.thicknessFactor!==void 0?u.thicknessFactor:0,u.thicknessTexture!==void 0&&c.push(s.assignTexture(r,"thicknessMap",u.thicknessTexture)),r.attenuationDistance=u.attenuationDistance||1/0;const h=u.attenuationColor||[1,1,1];return r.attenuationColor=new f.Color(h[0],h[1],h[2]),Promise.all(c)}}class ga{constructor(i){this.parser=i,this.name=se.KHR_MATERIALS_IOR}getMaterialType(i){const s=this.parser.json.materials[i];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,r){const a=this.parser.json.materials[i];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const c=a.extensions[this.name];return r.ior=c.ior!==void 0?c.ior:1.5,Promise.resolve()}}class _a{constructor(i){this.parser=i,this.name=se.KHR_MATERIALS_SPECULAR}getMaterialType(i){const s=this.parser.json.materials[i];return!s.extensions||!s.extensions[this.name]?null:f.MeshPhysicalMaterial}extendMaterialParams(i,r){const s=this.parser,a=s.json.materials[i];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const c=[],u=a.extensions[this.name];r.specularIntensity=u.specularFactor!==void 0?u.specularFactor:1,u.specularTexture!==void 0&&c.push(s.assignTexture(r,"specularIntensityMap",u.specularTexture));const h=u.specularColorFactor||[1,1,1];return r.specularColor=new f.Color(h[0],h[1],h[2]),u.specularColorTexture!==void 0&&c.push(s.assignTexture(r,"specularColorMap",u.specularColorTexture,f.sRGBEncoding)),Promise.all(c)}}class wa{constructor(i){this.parser=i,this.name=se.KHR_TEXTURE_BASISU}loadTexture(i){const r=this.parser,s=r.json,a=s.textures[i];if(!a.extensions||!a.extensions[this.name])return null;const c=a.extensions[this.name],u=r.options.ktx2Loader;if(!u){if(s.extensionsRequired&&s.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return r.loadTextureImage(i,c.source,u)}}class ya{constructor(i){this.parser=i,this.name=se.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(i){const r=this.name,s=this.parser,a=s.json,c=a.textures[i];if(!c.extensions||!c.extensions[r])return null;const u=c.extensions[r],h=a.images[u.source];let m=s.textureLoader;if(h.uri){const _=s.options.manager.getHandler(h.uri);_!==null&&(m=_)}return this.detectSupport().then(function(_){if(_)return s.loadTextureImage(i,u.source,m);if(a.extensionsRequired&&a.extensionsRequired.indexOf(r)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return s.loadTexture(i)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(i){const r=new Image;r.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",r.onload=r.onerror=function(){i(r.height===1)}})),this.isSupported}}class xa{constructor(i){this.name=se.EXT_MESHOPT_COMPRESSION,this.parser=i}loadBufferView(i){const r=this.parser.json,s=r.bufferViews[i];if(s.extensions&&s.extensions[this.name]){const a=s.extensions[this.name],c=this.parser.getDependency("buffer",a.buffer),u=this.parser.options.meshoptDecoder;if(!u||!u.supported){if(r.extensionsRequired&&r.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return c.then(function(h){const m=a.byteOffset||0,_=a.byteLength||0,y=a.count,w=a.byteStride,x=new Uint8Array(h,m,_);return u.decodeGltfBufferAsync?u.decodeGltfBufferAsync(y,w,x,a.mode,a.filter).then(function(k){return k.buffer}):u.ready.then(function(){const k=new ArrayBuffer(y*w);return u.decodeGltfBuffer(new Uint8Array(k),y,w,x,a.mode,a.filter),k})})}else return null}}const Mr="glTF",Nn=12,kr={JSON:1313821514,BIN:5130562};class Ca{constructor(i){this.name=se.KHR_BINARY_GLTF,this.content=null,this.body=null;const r=new DataView(i,0,Nn);if(this.header={magic:f.LoaderUtils.decodeText(new Uint8Array(i.slice(0,4))),version:r.getUint32(4,!0),length:r.getUint32(8,!0)},this.header.magic!==Mr)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const s=this.header.length-Nn,a=new DataView(i,Nn);let c=0;for(;c<s;){const u=a.getUint32(c,!0);c+=4;const h=a.getUint32(c,!0);if(c+=4,h===kr.JSON){const m=new Uint8Array(i,Nn+c,u);this.content=f.LoaderUtils.decodeText(m)}else if(h===kr.BIN){const m=Nn+c;this.body=i.slice(m,m+u)}c+=u}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class Pa{constructor(i,r){if(!r)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=se.KHR_DRACO_MESH_COMPRESSION,this.json=i,this.dracoLoader=r,this.dracoLoader.preload()}decodePrimitive(i,r){const s=this.json,a=this.dracoLoader,c=i.extensions[this.name].bufferView,u=i.extensions[this.name].attributes,h={},m={},_={};for(const y in u){const w=ss[y]||y.toLowerCase();h[w]=u[y]}for(const y in i.attributes){const w=ss[y]||y.toLowerCase();if(u[y]!==void 0){const x=s.accessors[i.attributes[y]],k=Fn[x.componentType];_[w]=k.name,m[w]=x.normalized===!0}}return r.getDependency("bufferView",c).then(function(y){return new Promise(function(w){a.decodeDracoFile(y,function(x){for(const k in x.attributes){const E=x.attributes[k],I=m[k];I!==void 0&&(E.normalized=I)}w(x)},h,_)})})}}class Ma{constructor(){this.name=se.KHR_TEXTURE_TRANSFORM}extendTexture(i,r){return r.texCoord!==void 0&&console.warn('THREE.GLTFLoader: Custom UV sets in "'+this.name+'" extension not yet supported.'),r.offset===void 0&&r.rotation===void 0&&r.scale===void 0||(i=i.clone(),r.offset!==void 0&&i.offset.fromArray(r.offset),r.rotation!==void 0&&(i.rotation=r.rotation),r.scale!==void 0&&i.repeat.fromArray(r.scale),i.needsUpdate=!0),i}}class is extends f.MeshStandardMaterial{constructor(i){super(),this.isGLTFSpecularGlossinessMaterial=!0;const r=["#ifdef USE_SPECULARMAP"," uniform sampler2D specularMap;","#endif"].join(`
|
|
9
9
|
`),s=["#ifdef USE_GLOSSINESSMAP"," uniform sampler2D glossinessMap;","#endif"].join(`
|
|
10
10
|
`),a=["vec3 specularFactor = specular;","#ifdef USE_SPECULARMAP"," vec4 texelSpecular = texture2D( specularMap, vUv );"," // reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture"," specularFactor *= texelSpecular.rgb;","#endif"].join(`
|
|
11
11
|
`),c=["float glossinessFactor = glossiness;","#ifdef USE_GLOSSINESSMAP"," vec4 texelGlossiness = texture2D( glossinessMap, vUv );"," // reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture"," glossinessFactor *= texelGlossiness.a;","#endif"].join(`
|
|
12
12
|
`),u=["PhysicalMaterial material;","material.diffuseColor = diffuseColor.rgb * ( 1. - max( specularFactor.r, max( specularFactor.g, specularFactor.b ) ) );","vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );","material.roughness = max( 1.0 - glossinessFactor, 0.0525 ); // 0.0525 corresponds to the base mip of a 256 cubemap.","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.specularColor = specularFactor;"].join(`
|
|
13
|
-
`),h={specular:{value:new f.Color().setHex(16777215)},glossiness:{value:1},specularMap:{value:null},glossinessMap:{value:null}};this._extraUniforms=h,this.onBeforeCompile=function(m){for(const _ in h)m.uniforms[_]=h[_];m.fragmentShader=m.fragmentShader.replace("uniform float roughness;","uniform vec3 specular;").replace("uniform float metalness;","uniform float glossiness;").replace("#include <roughnessmap_pars_fragment>",r).replace("#include <metalnessmap_pars_fragment>",s).replace("#include <roughnessmap_fragment>",a).replace("#include <metalnessmap_fragment>",c).replace("#include <lights_physical_fragment>",u)},Object.defineProperties(this,{specular:{get:function(){return h.specular.value},set:function(m){h.specular.value=m}},specularMap:{get:function(){return h.specularMap.value},set:function(m){h.specularMap.value=m,m?this.defines.USE_SPECULARMAP="":delete this.defines.USE_SPECULARMAP}},glossiness:{get:function(){return h.glossiness.value},set:function(m){h.glossiness.value=m}},glossinessMap:{get:function(){return h.glossinessMap.value},set:function(m){h.glossinessMap.value=m,m?(this.defines.USE_GLOSSINESSMAP="",this.defines.USE_UV=""):(delete this.defines.USE_GLOSSINESSMAP,delete this.defines.USE_UV)}}}),delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this.setValues(i)}copy(i){return super.copy(i),this.specularMap=i.specularMap,this.specular.copy(i.specular),this.glossinessMap=i.glossinessMap,this.glossiness=i.glossiness,delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this}}class ma{constructor(){this.name=se.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,this.specularGlossinessParams=["color","map","lightMap","lightMapIntensity","aoMap","aoMapIntensity","emissive","emissiveIntensity","emissiveMap","bumpMap","bumpScale","normalMap","normalMapType","displacementMap","displacementScale","displacementBias","specularMap","specular","glossinessMap","glossiness","alphaMap","envMap","envMapIntensity","refractionRatio"]}getMaterialType(){return ns}extendParams(i,r,s){const a=r.extensions[this.name];i.color=new f.Color(1,1,1),i.opacity=1;const c=[];if(Array.isArray(a.diffuseFactor)){const u=a.diffuseFactor;i.color.fromArray(u),i.opacity=u[3]}if(a.diffuseTexture!==void 0&&c.push(s.assignTexture(i,"map",a.diffuseTexture,f.sRGBEncoding)),i.emissive=new f.Color(0,0,0),i.glossiness=a.glossinessFactor!==void 0?a.glossinessFactor:1,i.specular=new f.Color(1,1,1),Array.isArray(a.specularFactor)&&i.specular.fromArray(a.specularFactor),a.specularGlossinessTexture!==void 0){const u=a.specularGlossinessTexture;c.push(s.assignTexture(i,"glossinessMap",u)),c.push(s.assignTexture(i,"specularMap",u,f.sRGBEncoding))}return Promise.all(c)}createMaterial(i){const r=new ns(i);return r.fog=!0,r.color=i.color,r.map=i.map===void 0?null:i.map,r.lightMap=null,r.lightMapIntensity=1,r.aoMap=i.aoMap===void 0?null:i.aoMap,r.aoMapIntensity=1,r.emissive=i.emissive,r.emissiveIntensity=i.emissiveIntensity===void 0?1:i.emissiveIntensity,r.emissiveMap=i.emissiveMap===void 0?null:i.emissiveMap,r.bumpMap=i.bumpMap===void 0?null:i.bumpMap,r.bumpScale=1,r.normalMap=i.normalMap===void 0?null:i.normalMap,r.normalMapType=f.TangentSpaceNormalMap,i.normalScale&&(r.normalScale=i.normalScale),r.displacementMap=null,r.displacementScale=1,r.displacementBias=0,r.specularMap=i.specularMap===void 0?null:i.specularMap,r.specular=i.specular,r.glossinessMap=i.glossinessMap===void 0?null:i.glossinessMap,r.glossiness=i.glossiness,r.alphaMap=null,r.envMap=i.envMap===void 0?null:i.envMap,r.envMapIntensity=1,r.refractionRatio=.98,r}}class fa{constructor(){this.name=se.KHR_MESH_QUANTIZATION}}class Cr extends f.Interpolant{constructor(i,r,s,a){super(i,r,s,a)}copySampleValue_(i){const r=this.resultBuffer,s=this.sampleValues,a=this.valueSize,c=i*a*3+a;for(let u=0;u!==a;u++)r[u]=s[c+u];return r}interpolate_(i,r,s,a){const c=this.resultBuffer,u=this.sampleValues,h=this.valueSize,m=h*2,_=h*3,y=a-r,w=(s-r)/y,x=w*w,L=x*w,E=i*_,D=E-_,O=-2*L+3*x,G=L-x,z=1-O,B=G-x+w;for(let N=0;N!==h;N++){const Q=u[D+N+h],$=u[D+N+m]*y,j=u[E+N+h],F=u[E+N]*y;c[N]=z*Q+B*$+O*j+G*F}return c}}const va=new f.Quaternion;class ba extends Cr{interpolate_(i,r,s,a){const c=super.interpolate_(i,r,s,a);return va.fromArray(c).normalize().toArray(c),c}}const ht={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},Nn={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Pr={9728:f.NearestFilter,9729:f.LinearFilter,9984:f.NearestMipmapNearestFilter,9985:f.LinearMipmapNearestFilter,9986:f.NearestMipmapLinearFilter,9987:f.LinearMipmapLinearFilter},Mr={33071:f.ClampToEdgeWrapping,33648:f.MirroredRepeatWrapping,10497:f.RepeatWrapping},kr={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},is={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv2",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},Pt={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},ga={CUBICSPLINE:void 0,LINEAR:f.InterpolateLinear,STEP:f.InterpolateDiscrete},ss={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function _a(g){return g.DefaultMaterial===void 0&&(g.DefaultMaterial=new f.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:f.FrontSide})),g.DefaultMaterial}function Fn(g,i,r){for(const s in r.extensions)g[s]===void 0&&(i.userData.gltfExtensions=i.userData.gltfExtensions||{},i.userData.gltfExtensions[s]=r.extensions[s])}function Ft(g,i){i.extras!==void 0&&(typeof i.extras=="object"?Object.assign(g.userData,i.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+i.extras))}function wa(g,i,r){let s=!1,a=!1,c=!1;for(let _=0,y=i.length;_<y;_++){const w=i[_];if(w.POSITION!==void 0&&(s=!0),w.NORMAL!==void 0&&(a=!0),w.COLOR_0!==void 0&&(c=!0),s&&a&&c)break}if(!s&&!a&&!c)return Promise.resolve(g);const u=[],h=[],m=[];for(let _=0,y=i.length;_<y;_++){const w=i[_];if(s){const x=w.POSITION!==void 0?r.getDependency("accessor",w.POSITION):g.attributes.position;u.push(x)}if(a){const x=w.NORMAL!==void 0?r.getDependency("accessor",w.NORMAL):g.attributes.normal;h.push(x)}if(c){const x=w.COLOR_0!==void 0?r.getDependency("accessor",w.COLOR_0):g.attributes.color;m.push(x)}}return Promise.all([Promise.all(u),Promise.all(h),Promise.all(m)]).then(function(_){const y=_[0],w=_[1],x=_[2];return s&&(g.morphAttributes.position=y),a&&(g.morphAttributes.normal=w),c&&(g.morphAttributes.color=x),g.morphTargetsRelative=!0,g})}function ya(g,i){if(g.updateMorphTargets(),i.weights!==void 0)for(let r=0,s=i.weights.length;r<s;r++)g.morphTargetInfluences[r]=i.weights[r];if(i.extras&&Array.isArray(i.extras.targetNames)){const r=i.extras.targetNames;if(g.morphTargetInfluences.length===r.length){g.morphTargetDictionary={};for(let s=0,a=r.length;s<a;s++)g.morphTargetDictionary[r[s]]=s}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function xa(g){const i=g.extensions&&g.extensions[se.KHR_DRACO_MESH_COMPRESSION];let r;return i?r="draco:"+i.bufferView+":"+i.indices+":"+Sr(i.attributes):r=g.indices+":"+Sr(g.attributes)+":"+g.mode,r}function Sr(g){let i="";const r=Object.keys(g).sort();for(let s=0,a=r.length;s<a;s++)i+=r[s]+":"+g[r[s]]+";";return i}function rs(g){switch(g){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function Ca(g){return g.search(/\.jpe?g($|\?)/i)>0||g.search(/^data\:image\/jpeg/)===0?"image/jpeg":g.search(/\.webp($|\?)/i)>0||g.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}class Pa{constructor(i={},r={}){var s,a;this.json=i,this.extensions={},this.plugins={},this.options=r,this.cache=new Wo,this.associations=new Map,this.primitiveCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};const c=typeof navigator<"u"&&/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,u=typeof navigator<"u"&&((s=navigator.userAgent)===null||s===void 0?void 0:s.indexOf("Firefox"))>-1,h=typeof navigator<"u"&&u?(a=navigator.userAgent)===null||a===void 0?void 0:a.match(/Firefox\/([0-9]+)\./)[1]:-1;typeof createImageBitmap>"u"||c||u&&h<98?this.textureLoader=new f.TextureLoader(this.options.manager):this.textureLoader=new f.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new f.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(i){this.extensions=i}setPlugins(i){this.plugins=i}parse(i,r){const s=this,a=this.json,c=this.extensions;this.cache.removeAll(),this._invokeAll(function(u){return u._markDefs&&u._markDefs()}),Promise.all(this._invokeAll(function(u){return u.beforeRoot&&u.beforeRoot()})).then(function(){return Promise.all([s.getDependencies("scene"),s.getDependencies("animation"),s.getDependencies("camera")])}).then(function(u){const h={scene:u[0][a.scene||0],scenes:u[0],animations:u[1],cameras:u[2],asset:a.asset,parser:s,userData:{}};Fn(c,h,a),Ft(h,a),Promise.all(s._invokeAll(function(m){return m.afterRoot&&m.afterRoot(h)})).then(function(){i(h)})}).catch(r)}_markDefs(){const i=this.json.nodes||[],r=this.json.skins||[],s=this.json.meshes||[];for(let a=0,c=r.length;a<c;a++){const u=r[a].joints;for(let h=0,m=u.length;h<m;h++)i[u[h]].isBone=!0}for(let a=0,c=i.length;a<c;a++){const u=i[a];u.mesh!==void 0&&(this._addNodeRef(this.meshCache,u.mesh),u.skin!==void 0&&(s[u.mesh].isSkinnedMesh=!0)),u.camera!==void 0&&this._addNodeRef(this.cameraCache,u.camera)}}_addNodeRef(i,r){r!==void 0&&(i.refs[r]===void 0&&(i.refs[r]=i.uses[r]=0),i.refs[r]++)}_getNodeRef(i,r,s){if(i.refs[r]<=1)return s;const a=s.clone(),c=(u,h)=>{const m=this.associations.get(u);m!=null&&this.associations.set(h,m);for(const[_,y]of u.children.entries())c(y,h.children[_])};return c(s,a),a.name+="_instance_"+i.uses[r]++,a}_invokeOne(i){const r=Object.values(this.plugins);r.push(this);for(let s=0;s<r.length;s++){const a=i(r[s]);if(a)return a}return null}_invokeAll(i){const r=Object.values(this.plugins);r.unshift(this);const s=[];for(let a=0;a<r.length;a++){const c=i(r[a]);c&&s.push(c)}return s}getDependency(i,r){const s=i+":"+r;let a=this.cache.get(s);if(!a){switch(i){case"scene":a=this.loadScene(r);break;case"node":a=this.loadNode(r);break;case"mesh":a=this._invokeOne(function(c){return c.loadMesh&&c.loadMesh(r)});break;case"accessor":a=this.loadAccessor(r);break;case"bufferView":a=this._invokeOne(function(c){return c.loadBufferView&&c.loadBufferView(r)});break;case"buffer":a=this.loadBuffer(r);break;case"material":a=this._invokeOne(function(c){return c.loadMaterial&&c.loadMaterial(r)});break;case"texture":a=this._invokeOne(function(c){return c.loadTexture&&c.loadTexture(r)});break;case"skin":a=this.loadSkin(r);break;case"animation":a=this._invokeOne(function(c){return c.loadAnimation&&c.loadAnimation(r)});break;case"camera":a=this.loadCamera(r);break;default:throw new Error("Unknown type: "+i)}this.cache.add(s,a)}return a}getDependencies(i){let r=this.cache.get(i);if(!r){const s=this,a=this.json[i+(i==="mesh"?"es":"s")]||[];r=Promise.all(a.map(function(c,u){return s.getDependency(i,u)})),this.cache.add(i,r)}return r}loadBuffer(i){const r=this.json.buffers[i],s=this.fileLoader;if(r.type&&r.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+r.type+" buffer type is not supported.");if(r.uri===void 0&&i===0)return Promise.resolve(this.extensions[se.KHR_BINARY_GLTF].body);const a=this.options;return new Promise(function(c,u){s.load(f.LoaderUtils.resolveURL(r.uri,a.path),c,void 0,function(){u(new Error('THREE.GLTFLoader: Failed to load buffer "'+r.uri+'".'))})})}loadBufferView(i){const r=this.json.bufferViews[i];return this.getDependency("buffer",r.buffer).then(function(s){const a=r.byteLength||0,c=r.byteOffset||0;return s.slice(c,c+a)})}loadAccessor(i){const r=this,s=this.json,a=this.json.accessors[i];if(a.bufferView===void 0&&a.sparse===void 0)return Promise.resolve(null);const c=[];return a.bufferView!==void 0?c.push(this.getDependency("bufferView",a.bufferView)):c.push(null),a.sparse!==void 0&&(c.push(this.getDependency("bufferView",a.sparse.indices.bufferView)),c.push(this.getDependency("bufferView",a.sparse.values.bufferView))),Promise.all(c).then(function(u){const h=u[0],m=kr[a.type],_=Nn[a.componentType],y=_.BYTES_PER_ELEMENT,w=y*m,x=a.byteOffset||0,L=a.bufferView!==void 0?s.bufferViews[a.bufferView].byteStride:void 0,E=a.normalized===!0;let D,O;if(L&&L!==w){const G=Math.floor(x/L),z="InterleavedBuffer:"+a.bufferView+":"+a.componentType+":"+G+":"+a.count;let B=r.cache.get(z);B||(D=new _(h,G*L,a.count*L/y),B=new f.InterleavedBuffer(D,L/y),r.cache.add(z,B)),O=new f.InterleavedBufferAttribute(B,m,x%L/y,E)}else h===null?D=new _(a.count*m):D=new _(h,x,a.count*m),O=new f.BufferAttribute(D,m,E);if(a.sparse!==void 0){const G=kr.SCALAR,z=Nn[a.sparse.indices.componentType],B=a.sparse.indices.byteOffset||0,N=a.sparse.values.byteOffset||0,Q=new z(u[1],B,a.sparse.count*G),$=new _(u[2],N,a.sparse.count*m);h!==null&&(O=new f.BufferAttribute(O.array.slice(),O.itemSize,O.normalized));for(let j=0,F=Q.length;j<F;j++){const X=Q[j];if(O.setX(X,$[j*m]),m>=2&&O.setY(X,$[j*m+1]),m>=3&&O.setZ(X,$[j*m+2]),m>=4&&O.setW(X,$[j*m+3]),m>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return O})}loadTexture(i){const r=this.json,s=this.options,c=r.textures[i].source,u=r.images[c];let h=this.textureLoader;if(u.uri){const m=s.manager.getHandler(u.uri);m!==null&&(h=m)}return this.loadTextureImage(i,c,h)}loadTextureImage(i,r,s){const a=this,c=this.json,u=c.textures[i],h=c.images[r],m=(h.uri||h.bufferView)+":"+u.sampler;if(this.textureCache[m])return this.textureCache[m];const _=this.loadImageSource(r,s).then(function(y){y.flipY=!1,u.name&&(y.name=u.name);const x=(c.samplers||{})[u.sampler]||{};return y.magFilter=Pr[x.magFilter]||f.LinearFilter,y.minFilter=Pr[x.minFilter]||f.LinearMipmapLinearFilter,y.wrapS=Mr[x.wrapS]||f.RepeatWrapping,y.wrapT=Mr[x.wrapT]||f.RepeatWrapping,a.associations.set(y,{textures:i}),y}).catch(function(){return null});return this.textureCache[m]=_,_}loadImageSource(i,r){const s=this,a=this.json,c=this.options;if(this.sourceCache[i]!==void 0)return this.sourceCache[i].then(w=>w.clone());const u=a.images[i],h=self.URL||self.webkitURL;let m=u.uri||"",_=!1;if(u.bufferView!==void 0)m=s.getDependency("bufferView",u.bufferView).then(function(w){_=!0;const x=new Blob([w],{type:u.mimeType});return m=h.createObjectURL(x),m});else if(u.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+i+" is missing URI and bufferView");const y=Promise.resolve(m).then(function(w){return new Promise(function(x,L){let E=x;r.isImageBitmapLoader===!0&&(E=function(D){const O=new f.Texture(D);O.needsUpdate=!0,x(O)}),r.load(f.LoaderUtils.resolveURL(w,c.path),E,void 0,L)})}).then(function(w){return _===!0&&h.revokeObjectURL(m),w.userData.mimeType=u.mimeType||Ca(u.uri),w}).catch(function(w){throw console.error("THREE.GLTFLoader: Couldn't load texture",m),w});return this.sourceCache[i]=y,y}assignTexture(i,r,s,a){const c=this;return this.getDependency("texture",s.index).then(function(u){if(s.texCoord!==void 0&&s.texCoord!=0&&!(r==="aoMap"&&s.texCoord==1)&&console.warn("THREE.GLTFLoader: Custom UV set "+s.texCoord+" for texture "+r+" not yet supported."),c.extensions[se.KHR_TEXTURE_TRANSFORM]){const h=s.extensions!==void 0?s.extensions[se.KHR_TEXTURE_TRANSFORM]:void 0;if(h){const m=c.associations.get(u);u=c.extensions[se.KHR_TEXTURE_TRANSFORM].extendTexture(u,h),c.associations.set(u,m)}}return a!==void 0&&(u.encoding=a),i[r]=u,u})}assignFinalMaterial(i){const r=i.geometry;let s=i.material;const a=r.attributes.tangent===void 0,c=r.attributes.color!==void 0,u=r.attributes.normal===void 0;if(i.isPoints){const h="PointsMaterial:"+s.uuid;let m=this.cache.get(h);m||(m=new f.PointsMaterial,f.Material.prototype.copy.call(m,s),m.color.copy(s.color),m.map=s.map,m.sizeAttenuation=!1,this.cache.add(h,m)),s=m}else if(i.isLine){const h="LineBasicMaterial:"+s.uuid;let m=this.cache.get(h);m||(m=new f.LineBasicMaterial,f.Material.prototype.copy.call(m,s),m.color.copy(s.color),this.cache.add(h,m)),s=m}if(a||c||u){let h="ClonedMaterial:"+s.uuid+":";s.isGLTFSpecularGlossinessMaterial&&(h+="specular-glossiness:"),a&&(h+="derivative-tangents:"),c&&(h+="vertex-colors:"),u&&(h+="flat-shading:");let m=this.cache.get(h);m||(m=s.clone(),c&&(m.vertexColors=!0),u&&(m.flatShading=!0),a&&(m.normalScale&&(m.normalScale.y*=-1),m.clearcoatNormalScale&&(m.clearcoatNormalScale.y*=-1)),this.cache.add(h,m),this.associations.set(m,this.associations.get(s))),s=m}s.aoMap&&r.attributes.uv2===void 0&&r.attributes.uv!==void 0&&r.setAttribute("uv2",r.attributes.uv),i.material=s}getMaterialType(){return f.MeshStandardMaterial}loadMaterial(i){const r=this,s=this.json,a=this.extensions,c=s.materials[i];let u;const h={},m=c.extensions||{},_=[];if(m[se.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]){const w=a[se.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS];u=w.getMaterialType(),_.push(w.extendParams(h,c,r))}else if(m[se.KHR_MATERIALS_UNLIT]){const w=a[se.KHR_MATERIALS_UNLIT];u=w.getMaterialType(),_.push(w.extendParams(h,c,r))}else{const w=c.pbrMetallicRoughness||{};if(h.color=new f.Color(1,1,1),h.opacity=1,Array.isArray(w.baseColorFactor)){const x=w.baseColorFactor;h.color.fromArray(x),h.opacity=x[3]}w.baseColorTexture!==void 0&&_.push(r.assignTexture(h,"map",w.baseColorTexture,f.sRGBEncoding)),h.metalness=w.metallicFactor!==void 0?w.metallicFactor:1,h.roughness=w.roughnessFactor!==void 0?w.roughnessFactor:1,w.metallicRoughnessTexture!==void 0&&(_.push(r.assignTexture(h,"metalnessMap",w.metallicRoughnessTexture)),_.push(r.assignTexture(h,"roughnessMap",w.metallicRoughnessTexture))),u=this._invokeOne(function(x){return x.getMaterialType&&x.getMaterialType(i)}),_.push(Promise.all(this._invokeAll(function(x){return x.extendMaterialParams&&x.extendMaterialParams(i,h)})))}c.doubleSided===!0&&(h.side=f.DoubleSide);const y=c.alphaMode||ss.OPAQUE;if(y===ss.BLEND?(h.transparent=!0,h.depthWrite=!1):(h.transparent=!1,y===ss.MASK&&(h.alphaTest=c.alphaCutoff!==void 0?c.alphaCutoff:.5)),c.normalTexture!==void 0&&u!==f.MeshBasicMaterial&&(_.push(r.assignTexture(h,"normalMap",c.normalTexture)),h.normalScale=new f.Vector2(1,1),c.normalTexture.scale!==void 0)){const w=c.normalTexture.scale;h.normalScale.set(w,w)}return c.occlusionTexture!==void 0&&u!==f.MeshBasicMaterial&&(_.push(r.assignTexture(h,"aoMap",c.occlusionTexture)),c.occlusionTexture.strength!==void 0&&(h.aoMapIntensity=c.occlusionTexture.strength)),c.emissiveFactor!==void 0&&u!==f.MeshBasicMaterial&&(h.emissive=new f.Color().fromArray(c.emissiveFactor)),c.emissiveTexture!==void 0&&u!==f.MeshBasicMaterial&&_.push(r.assignTexture(h,"emissiveMap",c.emissiveTexture,f.sRGBEncoding)),Promise.all(_).then(function(){let w;return u===ns?w=a[se.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(h):w=new u(h),c.name&&(w.name=c.name),Ft(w,c),r.associations.set(w,{materials:i}),c.extensions&&Fn(a,w,c),w})}createUniqueName(i){const r=f.PropertyBinding.sanitizeNodeName(i||"");let s=r;for(let a=1;this.nodeNamesUsed[s];++a)s=r+"_"+a;return this.nodeNamesUsed[s]=!0,s}loadGeometries(i){const r=this,s=this.extensions,a=this.primitiveCache;function c(h){return s[se.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(h,r).then(function(m){return Ar(m,h,r)})}const u=[];for(let h=0,m=i.length;h<m;h++){const _=i[h],y=xa(_),w=a[y];if(w)u.push(w.promise);else{let x;_.extensions&&_.extensions[se.KHR_DRACO_MESH_COMPRESSION]?x=c(_):x=Ar(new f.BufferGeometry,_,r),a[y]={primitive:_,promise:x},u.push(x)}}return Promise.all(u)}loadMesh(i){const r=this,s=this.json,a=this.extensions,c=s.meshes[i],u=c.primitives,h=[];for(let m=0,_=u.length;m<_;m++){const y=u[m].material===void 0?_a(this.cache):this.getDependency("material",u[m].material);h.push(y)}return h.push(r.loadGeometries(u)),Promise.all(h).then(function(m){const _=m.slice(0,m.length-1),y=m[m.length-1],w=[];for(let L=0,E=y.length;L<E;L++){const D=y[L],O=u[L];let G;const z=_[L];if(O.mode===ht.TRIANGLES||O.mode===ht.TRIANGLE_STRIP||O.mode===ht.TRIANGLE_FAN||O.mode===void 0)G=c.isSkinnedMesh===!0?new f.SkinnedMesh(D,z):new f.Mesh(D,z),G.isSkinnedMesh===!0&&!G.geometry.attributes.skinWeight.normalized&&G.normalizeSkinWeights(),O.mode===ht.TRIANGLE_STRIP?G.geometry=Vr(G.geometry,f.TriangleStripDrawMode):O.mode===ht.TRIANGLE_FAN&&(G.geometry=Vr(G.geometry,f.TriangleFanDrawMode));else if(O.mode===ht.LINES)G=new f.LineSegments(D,z);else if(O.mode===ht.LINE_STRIP)G=new f.Line(D,z);else if(O.mode===ht.LINE_LOOP)G=new f.LineLoop(D,z);else if(O.mode===ht.POINTS)G=new f.Points(D,z);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+O.mode);Object.keys(G.geometry.morphAttributes).length>0&&ya(G,c),G.name=r.createUniqueName(c.name||"mesh_"+i),Ft(G,c),O.extensions&&Fn(a,G,O),r.assignFinalMaterial(G),w.push(G)}for(let L=0,E=w.length;L<E;L++)r.associations.set(w[L],{meshes:i,primitives:L});if(w.length===1)return w[0];const x=new f.Group;r.associations.set(x,{meshes:i});for(let L=0,E=w.length;L<E;L++)x.add(w[L]);return x})}loadCamera(i){let r;const s=this.json.cameras[i],a=s[s.type];if(!a){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return s.type==="perspective"?r=new f.PerspectiveCamera(f.MathUtils.radToDeg(a.yfov),a.aspectRatio||1,a.znear||1,a.zfar||2e6):s.type==="orthographic"&&(r=new f.OrthographicCamera(-a.xmag,a.xmag,a.ymag,-a.ymag,a.znear,a.zfar)),s.name&&(r.name=this.createUniqueName(s.name)),Ft(r,s),Promise.resolve(r)}loadSkin(i){const r=this.json.skins[i],s={joints:r.joints};return r.inverseBindMatrices===void 0?Promise.resolve(s):this.getDependency("accessor",r.inverseBindMatrices).then(function(a){return s.inverseBindMatrices=a,s})}loadAnimation(i){const s=this.json.animations[i],a=[],c=[],u=[],h=[],m=[];for(let _=0,y=s.channels.length;_<y;_++){const w=s.channels[_],x=s.samplers[w.sampler],L=w.target,E=L.node,D=s.parameters!==void 0?s.parameters[x.input]:x.input,O=s.parameters!==void 0?s.parameters[x.output]:x.output;a.push(this.getDependency("node",E)),c.push(this.getDependency("accessor",D)),u.push(this.getDependency("accessor",O)),h.push(x),m.push(L)}return Promise.all([Promise.all(a),Promise.all(c),Promise.all(u),Promise.all(h),Promise.all(m)]).then(function(_){const y=_[0],w=_[1],x=_[2],L=_[3],E=_[4],D=[];for(let G=0,z=y.length;G<z;G++){const B=y[G],N=w[G],Q=x[G],$=L[G],j=E[G];if(B===void 0)continue;B.updateMatrix();let F;switch(Pt[j.path]){case Pt.weights:F=f.NumberKeyframeTrack;break;case Pt.rotation:F=f.QuaternionKeyframeTrack;break;case Pt.position:case Pt.scale:default:F=f.VectorKeyframeTrack;break}const X=B.name?B.name:B.uuid,Y=$.interpolation!==void 0?ga[$.interpolation]:f.InterpolateLinear,Z=[];Pt[j.path]===Pt.weights?B.traverse(function(ge){ge.morphTargetInfluences&&Z.push(ge.name?ge.name:ge.uuid)}):Z.push(X);let ue=Q.array;if(Q.normalized){const ge=rs(ue.constructor),ce=new Float32Array(ue.length);for(let me=0,he=ue.length;me<he;me++)ce[me]=ue[me]*ge;ue=ce}for(let ge=0,ce=Z.length;ge<ce;ge++){const me=new F(Z[ge]+"."+Pt[j.path],N.array,ue,Y);$.interpolation==="CUBICSPLINE"&&(me.createInterpolant=function(te){const q=this instanceof f.QuaternionKeyframeTrack?ba:Cr;return new q(this.times,this.values,this.getValueSize()/3,te)},me.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0),D.push(me)}}const O=s.name?s.name:"animation_"+i;return new f.AnimationClip(O,void 0,D)})}createNodeMesh(i){const r=this.json,s=this,a=r.nodes[i];return a.mesh===void 0?null:s.getDependency("mesh",a.mesh).then(function(c){const u=s._getNodeRef(s.meshCache,a.mesh,c);return a.weights!==void 0&&u.traverse(function(h){if(h.isMesh)for(let m=0,_=a.weights.length;m<_;m++)h.morphTargetInfluences[m]=a.weights[m]}),u})}loadNode(i){const r=this.json,s=this.extensions,a=this,c=r.nodes[i],u=c.name?a.createUniqueName(c.name):"";return function(){const h=[],m=a._invokeOne(function(_){return _.createNodeMesh&&_.createNodeMesh(i)});return m&&h.push(m),c.camera!==void 0&&h.push(a.getDependency("camera",c.camera).then(function(_){return a._getNodeRef(a.cameraCache,c.camera,_)})),a._invokeAll(function(_){return _.createNodeAttachment&&_.createNodeAttachment(i)}).forEach(function(_){h.push(_)}),Promise.all(h)}().then(function(h){let m;if(c.isBone===!0?m=new f.Bone:h.length>1?m=new f.Group:h.length===1?m=h[0]:m=new f.Object3D,m!==h[0])for(let _=0,y=h.length;_<y;_++)m.add(h[_]);if(c.name&&(m.userData.name=c.name,m.name=u),Ft(m,c),c.extensions&&Fn(s,m,c),c.matrix!==void 0){const _=new f.Matrix4;_.fromArray(c.matrix),m.applyMatrix4(_)}else c.translation!==void 0&&m.position.fromArray(c.translation),c.rotation!==void 0&&m.quaternion.fromArray(c.rotation),c.scale!==void 0&&m.scale.fromArray(c.scale);return a.associations.has(m)||a.associations.set(m,{}),a.associations.get(m).nodes=i,m})}loadScene(i){const r=this.json,s=this.extensions,a=this.json.scenes[i],c=this,u=new f.Group;a.name&&(u.name=c.createUniqueName(a.name)),Ft(u,a),a.extensions&&Fn(s,u,a);const h=a.nodes||[],m=[];for(let _=0,y=h.length;_<y;_++)m.push(Lr(h[_],u,r,c));return Promise.all(m).then(function(){const _=y=>{const w=new Map;for(const[x,L]of c.associations)(x instanceof f.Material||x instanceof f.Texture)&&w.set(x,L);return y.traverse(x=>{const L=c.associations.get(x);L!=null&&w.set(x,L)}),w};return c.associations=_(u),u})}}function Lr(g,i,r,s){const a=r.nodes[g];return s.getDependency("node",g).then(function(c){if(a.skin===void 0)return c;let u;return s.getDependency("skin",a.skin).then(function(h){u=h;const m=[];for(let _=0,y=u.joints.length;_<y;_++)m.push(s.getDependency("node",u.joints[_]));return Promise.all(m)}).then(function(h){return c.traverse(function(m){if(!m.isMesh)return;const _=[],y=[];for(let w=0,x=h.length;w<x;w++){const L=h[w];if(L){_.push(L);const E=new f.Matrix4;u.inverseBindMatrices!==void 0&&E.fromArray(u.inverseBindMatrices.array,w*16),y.push(E)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',u.joints[w])}m.bind(new f.Skeleton(_,y),m.matrixWorld)}),c})}).then(function(c){i.add(c);const u=[];if(a.children){const h=a.children;for(let m=0,_=h.length;m<_;m++){const y=h[m];u.push(Lr(y,c,r,s))}}return Promise.all(u)})}function Ma(g,i,r){const s=i.attributes,a=new f.Box3;if(s.POSITION!==void 0){const h=r.json.accessors[s.POSITION],m=h.min,_=h.max;if(m!==void 0&&_!==void 0){if(a.set(new f.Vector3(m[0],m[1],m[2]),new f.Vector3(_[0],_[1],_[2])),h.normalized){const y=rs(Nn[h.componentType]);a.min.multiplyScalar(y),a.max.multiplyScalar(y)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const c=i.targets;if(c!==void 0){const h=new f.Vector3,m=new f.Vector3;for(let _=0,y=c.length;_<y;_++){const w=c[_];if(w.POSITION!==void 0){const x=r.json.accessors[w.POSITION],L=x.min,E=x.max;if(L!==void 0&&E!==void 0){if(m.setX(Math.max(Math.abs(L[0]),Math.abs(E[0]))),m.setY(Math.max(Math.abs(L[1]),Math.abs(E[1]))),m.setZ(Math.max(Math.abs(L[2]),Math.abs(E[2]))),x.normalized){const D=rs(Nn[x.componentType]);m.multiplyScalar(D)}h.max(m)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}a.expandByVector(h)}g.boundingBox=a;const u=new f.Sphere;a.getCenter(u.center),u.radius=a.min.distanceTo(a.max)/2,g.boundingSphere=u}function Ar(g,i,r){const s=i.attributes,a=[];function c(u,h){return r.getDependency("accessor",u).then(function(m){g.setAttribute(h,m)})}for(const u in s){const h=is[u]||u.toLowerCase();h in g.attributes||a.push(c(s[u],h))}if(i.indices!==void 0&&!g.index){const u=r.getDependency("accessor",i.indices).then(function(h){g.setIndex(h)});a.push(u)}return Ft(g,i),Ma(g,i,r),Promise.all(a).then(function(){return i.targets!==void 0?wa(g,i.targets,r):g})}function Vr(g,i){let r=g.getIndex();if(r===null){const u=[],h=g.getAttribute("position");if(h!==void 0){for(let m=0;m<h.count;m++)u.push(m);g.setIndex(u),r=g.getIndex()}else return console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),g}const s=r.count-2,a=[];if(i===f.TriangleFanDrawMode)for(let u=1;u<=s;u++)a.push(r.getX(0)),a.push(r.getX(u)),a.push(r.getX(u+1));else for(let u=0;u<s;u++)u%2===0?(a.push(r.getX(u)),a.push(r.getX(u+1)),a.push(r.getX(u+2))):(a.push(r.getX(u+2)),a.push(r.getX(u+1)),a.push(r.getX(u)));a.length/3!==s&&console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const c=g.clone();return c.setIndex(a),c}class ka extends f.ExtrudeGeometry{constructor(i,r={}){const{bevelEnabled:s=!1,bevelSize:a=8,bevelThickness:c=10,font:u,height:h=50,size:m=100,lineHeight:_=1,letterSpacing:y=0,...w}=r;if(u===void 0)super();else{const x=u.generateShapes(i,m,{lineHeight:_,letterSpacing:y});super(x,{...w,bevelEnabled:s,bevelSize:a,bevelThickness:c,depth:h})}this.type="TextGeometry"}}function Ir(g,i,r){const s=r.length-g-1;if(i>=r[s])return s-1;if(i<=r[g])return g;let a=g,c=s,u=Math.floor((a+c)/2);for(;i<r[u]||i>=r[u+1];)i<r[u]?c=u:a=u,u=Math.floor((a+c)/2);return u}function Sa(g,i,r,s){const a=[],c=[],u=[];a[0]=1;for(let h=1;h<=r;++h){c[h]=i-s[g+1-h],u[h]=s[g+h]-i;let m=0;for(let _=0;_<h;++_){const y=u[_+1],w=c[h-_],x=a[_]/(y+w);a[_]=m+y*x,m=w*x}a[h]=m}return a}function La(g,i,r,s){const a=Ir(g,s,i),c=Sa(a,s,g,i),u=new f.Vector4(0,0,0,0);for(let h=0;h<=g;++h){const m=r[a-g+h],_=c[h],y=m.w*_;u.x+=m.x*y,u.y+=m.y*y,u.z+=m.z*y,u.w+=m.w*_}return u}function Aa(g,i,r,s,a){const c=[];for(let x=0;x<=r;++x)c[x]=0;const u=[];for(let x=0;x<=s;++x)u[x]=c.slice(0);const h=[];for(let x=0;x<=r;++x)h[x]=c.slice(0);h[0][0]=1;const m=c.slice(0),_=c.slice(0);for(let x=1;x<=r;++x){m[x]=i-a[g+1-x],_[x]=a[g+x]-i;let L=0;for(let E=0;E<x;++E){const D=_[E+1],O=m[x-E];h[x][E]=D+O;const G=h[E][x-1]/h[x][E];h[E][x]=L+D*G,L=O*G}h[x][x]=L}for(let x=0;x<=r;++x)u[0][x]=h[x][r];for(let x=0;x<=r;++x){let L=0,E=1;const D=[];for(let O=0;O<=r;++O)D[O]=c.slice(0);D[0][0]=1;for(let O=1;O<=s;++O){let G=0;const z=x-O,B=r-O;x>=O&&(D[E][0]=D[L][0]/h[B+1][z],G=D[E][0]*h[z][B]);const N=z>=-1?1:-z,Q=x-1<=B?O-1:r-x;for(let $=N;$<=Q;++$)D[E][$]=(D[L][$]-D[L][$-1])/h[B+1][z+$],G+=D[E][$]*h[z+$][B];x<=B&&(D[E][O]=-D[L][O-1]/h[B+1][x],G+=D[E][O]*h[x][B]),u[O][x]=G;var y=L;L=E,E=y}}var w=r;for(let x=1;x<=s;++x){for(let L=0;L<=r;++L)u[x][L]*=w;w*=r-x}return u}function Va(g,i,r,s,a){const c=a<g?a:g,u=[],h=Ir(g,s,i),m=Aa(h,s,g,c,i),_=[];for(let w=0;w<r.length;++w){var y=r[w].clone();const x=y.w;y.x*=x,y.y*=x,y.z*=x,_[w]=y}for(let w=0;w<=c;++w){var y=_[h-g].clone().multiplyScalar(m[w][0]);for(let L=1;L<=g;++L)y.add(_[h-g+L].clone().multiplyScalar(m[w][L]));u[w]=y}for(let w=c+1;w<=a+1;++w)u[w]=new f.Vector4(0,0,0);return u}function Ia(g,i){let r=1;for(let a=2;a<=g;++a)r*=a;let s=1;for(let a=2;a<=i;++a)s*=a;for(let a=2;a<=g-i;++a)s*=a;return r/s}function Da(g){const i=g.length,r=[],s=[];for(let c=0;c<i;++c){const u=g[c];r[c]=new f.Vector3(u.x,u.y,u.z),s[c]=u.w}const a=[];for(let c=0;c<i;++c){const u=r[c].clone();for(let h=1;h<=c;++h)u.sub(a[c-h].clone().multiplyScalar(Ia(c,h)*s[h]));a[c]=u.divideScalar(s[0])}return a}function Ta(g,i,r,s,a){const c=Va(g,i,r,s,a);return Da(c)}class Dr extends f.Curve{constructor(i,r,s,a,c){super(),this.degree=i,this.knots=r,this.controlPoints=[],this.startKnot=a||0,this.endKnot=c||this.knots.length-1;for(let u=0;u<s.length;++u){const h=s[u];this.controlPoints[u]=new f.Vector4(h.x,h.y,h.z,h.w)}}getPoint(i,r){const s=r||new f.Vector3,a=this.knots[this.startKnot]+i*(this.knots[this.endKnot]-this.knots[this.startKnot]),c=La(this.degree,this.knots,this.controlPoints,a);return c.w!=1&&c.divideScalar(c.w),s.set(c.x,c.y,c.z)}getTangent(i,r){const s=r||new f.Vector3,a=this.knots[0]+i*(this.knots[this.knots.length-1]-this.knots[0]),c=Ta(this.degree,this.knots,this.controlPoints,a,1);return s.copy(c[1]).normalize(),s}}let re,ke,Ue;class Oa extends f.Loader{constructor(i){super(i)}load(i,r,s,a){const c=this,u=c.path===""?f.LoaderUtils.extractUrlBase(i):c.path,h=new f.FileLoader(this.manager);h.setPath(c.path),h.setResponseType("arraybuffer"),h.setRequestHeader(c.requestHeader),h.setWithCredentials(c.withCredentials),h.load(i,function(m){try{r(c.parse(m,u))}catch(_){a?a(_):console.error(_),c.manager.itemError(i)}},s,a)}parse(i,r){if(za(i))re=new ja().parse(i);else{const a=Fr(i);if(!Ua(a))throw new Error("THREE.FBXLoader: Unknown format.");if(Er(a)<7e3)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+Er(a));re=new Fa().parse(a)}const s=new f.TextureLoader(this.manager).setPath(this.resourcePath||r).setCrossOrigin(this.crossOrigin);return new Ea(s,this.manager).parse(re)}}class Ea{constructor(i,r){this.textureLoader=i,this.manager=r}parse(){ke=this.parseConnections();const i=this.parseImages(),r=this.parseTextures(i),s=this.parseMaterials(r),a=this.parseDeformers(),c=new Ba().parse(a);return this.parseScene(a,c,s),Ue}parseConnections(){const i=new Map;return"Connections"in re&&re.Connections.connections.forEach(function(s){const a=s[0],c=s[1],u=s[2];i.has(a)||i.set(a,{parents:[],children:[]});const h={ID:c,relationship:u};i.get(a).parents.push(h),i.has(c)||i.set(c,{parents:[],children:[]});const m={ID:a,relationship:u};i.get(c).children.push(m)}),i}parseImages(){const i={},r={};if("Video"in re.Objects){const s=re.Objects.Video;for(const a in s){const c=s[a],u=parseInt(a);if(i[u]=c.RelativeFilename||c.Filename,"Content"in c){const h=c.Content instanceof ArrayBuffer&&c.Content.byteLength>0,m=typeof c.Content=="string"&&c.Content!=="";if(h||m){const _=this.parseImage(s[a]);r[c.RelativeFilename||c.Filename]=_}}}}for(const s in i){const a=i[s];r[a]!==void 0?i[s]=r[a]:i[s]=i[s].split("\\").pop()}return i}parseImage(i){const r=i.Content,s=i.RelativeFilename||i.Filename,a=s.slice(s.lastIndexOf(".")+1).toLowerCase();let c;switch(a){case"bmp":c="image/bmp";break;case"jpg":case"jpeg":c="image/jpeg";break;case"png":c="image/png";break;case"tif":c="image/tiff";break;case"tga":this.manager.getHandler(".tga")===null&&console.warn("FBXLoader: TGA loader not found, skipping ",s),c="image/tga";break;default:console.warn('FBXLoader: Image type "'+a+'" is not supported.');return}if(typeof r=="string")return"data:"+c+";base64,"+r;{const u=new Uint8Array(r);return window.URL.createObjectURL(new Blob([u],{type:c}))}}parseTextures(i){const r=new Map;if("Texture"in re.Objects){const s=re.Objects.Texture;for(const a in s){const c=this.parseTexture(s[a],i);r.set(parseInt(a),c)}}return r}parseTexture(i,r){const s=this.loadTexture(i,r);s.ID=i.id,s.name=i.attrName;const a=i.WrapModeU,c=i.WrapModeV,u=a!==void 0?a.value:0,h=c!==void 0?c.value:0;if(s.wrapS=u===0?f.RepeatWrapping:f.ClampToEdgeWrapping,s.wrapT=h===0?f.RepeatWrapping:f.ClampToEdgeWrapping,"Scaling"in i){const m=i.Scaling.value;s.repeat.x=m[0],s.repeat.y=m[1]}return s}loadTexture(i,r){let s;const a=this.textureLoader.path,c=ke.get(i.id).children;c!==void 0&&c.length>0&&r[c[0].ID]!==void 0&&(s=r[c[0].ID],(s.indexOf("blob:")===0||s.indexOf("data:")===0)&&this.textureLoader.setPath(void 0));let u;const h=i.FileName.slice(-3).toLowerCase();if(h==="tga"){const m=this.manager.getHandler(".tga");m===null?(console.warn("FBXLoader: TGA loader not found, creating placeholder texture for",i.RelativeFilename),u=new f.Texture):(m.setPath(this.textureLoader.path),u=m.load(s))}else h==="psd"?(console.warn("FBXLoader: PSD textures are not supported, creating placeholder texture for",i.RelativeFilename),u=new f.Texture):u=this.textureLoader.load(s);return this.textureLoader.setPath(a),u}parseMaterials(i){const r=new Map;if("Material"in re.Objects){const s=re.Objects.Material;for(const a in s){const c=this.parseMaterial(s[a],i);c!==null&&r.set(parseInt(a),c)}}return r}parseMaterial(i,r){const s=i.id,a=i.attrName;let c=i.ShadingModel;if(typeof c=="object"&&(c=c.value),!ke.has(s))return null;const u=this.parseParameters(i,r,s);let h;switch(c.toLowerCase()){case"phong":h=new f.MeshPhongMaterial;break;case"lambert":h=new f.MeshLambertMaterial;break;default:console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.',c),h=new f.MeshPhongMaterial;break}return h.setValues(u),h.name=a,h}parseParameters(i,r,s){const a={};i.BumpFactor&&(a.bumpScale=i.BumpFactor.value),i.Diffuse?a.color=new f.Color().fromArray(i.Diffuse.value):i.DiffuseColor&&(i.DiffuseColor.type==="Color"||i.DiffuseColor.type==="ColorRGB")&&(a.color=new f.Color().fromArray(i.DiffuseColor.value)),i.DisplacementFactor&&(a.displacementScale=i.DisplacementFactor.value),i.Emissive?a.emissive=new f.Color().fromArray(i.Emissive.value):i.EmissiveColor&&(i.EmissiveColor.type==="Color"||i.EmissiveColor.type==="ColorRGB")&&(a.emissive=new f.Color().fromArray(i.EmissiveColor.value)),i.EmissiveFactor&&(a.emissiveIntensity=parseFloat(i.EmissiveFactor.value)),i.Opacity&&(a.opacity=parseFloat(i.Opacity.value)),a.opacity<1&&(a.transparent=!0),i.ReflectionFactor&&(a.reflectivity=i.ReflectionFactor.value),i.Shininess&&(a.shininess=i.Shininess.value),i.Specular?a.specular=new f.Color().fromArray(i.Specular.value):i.SpecularColor&&i.SpecularColor.type==="Color"&&(a.specular=new f.Color().fromArray(i.SpecularColor.value));const c=this;return ke.get(s).children.forEach(function(u){const h=u.relationship;switch(h){case"Bump":a.bumpMap=c.getTexture(r,u.ID);break;case"Maya|TEX_ao_map":a.aoMap=c.getTexture(r,u.ID);break;case"DiffuseColor":case"Maya|TEX_color_map":a.map=c.getTexture(r,u.ID),a.map!==void 0&&(a.map.encoding=f.sRGBEncoding);break;case"DisplacementColor":a.displacementMap=c.getTexture(r,u.ID);break;case"EmissiveColor":a.emissiveMap=c.getTexture(r,u.ID),a.emissiveMap!==void 0&&(a.emissiveMap.encoding=f.sRGBEncoding);break;case"NormalMap":case"Maya|TEX_normal_map":a.normalMap=c.getTexture(r,u.ID);break;case"ReflectionColor":a.envMap=c.getTexture(r,u.ID),a.envMap!==void 0&&(a.envMap.mapping=f.EquirectangularReflectionMapping,a.envMap.encoding=f.sRGBEncoding);break;case"SpecularColor":a.specularMap=c.getTexture(r,u.ID),a.specularMap!==void 0&&(a.specularMap.encoding=f.sRGBEncoding);break;case"TransparentColor":case"TransparencyFactor":a.alphaMap=c.getTexture(r,u.ID),a.transparent=!0;break;case"AmbientColor":case"ShininessExponent":case"SpecularFactor":case"VectorDisplacementColor":default:console.warn("THREE.FBXLoader: %s map is not supported in three.js, skipping texture.",h);break}}),a}getTexture(i,r){return"LayeredTexture"in re.Objects&&r in re.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),r=ke.get(r).children[0].ID),i.get(r)}parseDeformers(){const i={},r={};if("Deformer"in re.Objects){const s=re.Objects.Deformer;for(const a in s){const c=s[a],u=ke.get(parseInt(a));if(c.attrType==="Skin"){const h=this.parseSkeleton(u,s);h.ID=a,u.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),h.geometryID=u.parents[0].ID,i[a]=h}else if(c.attrType==="BlendShape"){const h={id:a};h.rawTargets=this.parseMorphTargets(u,s),h.id=a,u.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),r[a]=h}}}return{skeletons:i,morphTargets:r}}parseSkeleton(i,r){const s=[];return i.children.forEach(function(a){const c=r[a.ID];if(c.attrType!=="Cluster")return;const u={ID:a.ID,indices:[],weights:[],transformLink:new f.Matrix4().fromArray(c.TransformLink.a)};"Indexes"in c&&(u.indices=c.Indexes.a,u.weights=c.Weights.a),s.push(u)}),{rawBones:s,bones:[]}}parseMorphTargets(i,r){const s=[];for(let a=0;a<i.children.length;a++){const c=i.children[a],u=r[c.ID],h={name:u.attrName,initialWeight:u.DeformPercent,id:u.id,fullWeights:u.FullWeights.a};if(u.attrType!=="BlendShapeChannel")return;h.geoID=ke.get(parseInt(c.ID)).children.filter(function(m){return m.relationship===void 0})[0].ID,s.push(h)}return s}parseScene(i,r,s){Ue=new f.Group;const a=this.parseModels(i.skeletons,r,s),c=re.Objects.Model,u=this;a.forEach(function(m){const _=c[m.ID];u.setLookAtProperties(m,_),ke.get(m.ID).parents.forEach(function(w){const x=a.get(w.ID);x!==void 0&&x.add(m)}),m.parent===null&&Ue.add(m)}),this.bindSkeleton(i.skeletons,r,a),this.createAmbientLight(),Ue.traverse(function(m){if(m.userData.transformData){m.parent&&(m.userData.transformData.parentMatrix=m.parent.matrix,m.userData.transformData.parentMatrixWorld=m.parent.matrixWorld);const _=Br(m.userData.transformData);m.applyMatrix4(_),m.updateWorldMatrix()}});const h=new Na().parse();Ue.children.length===1&&Ue.children[0].isGroup&&(Ue.children[0].animations=h,Ue=Ue.children[0]),Ue.animations=h}parseModels(i,r,s){const a=new Map,c=re.Objects.Model;for(const u in c){const h=parseInt(u),m=c[u],_=ke.get(h);let y=this.buildSkeleton(_,i,h,m.attrName);if(!y){switch(m.attrType){case"Camera":y=this.createCamera(_);break;case"Light":y=this.createLight(_);break;case"Mesh":y=this.createMesh(_,r,s);break;case"NurbsCurve":y=this.createCurve(_,r);break;case"LimbNode":case"Root":y=new f.Bone;break;case"Null":default:y=new f.Group;break}y.name=m.attrName?f.PropertyBinding.sanitizeNodeName(m.attrName):"",y.ID=h}this.getTransformData(y,m),a.set(h,y)}return a}buildSkeleton(i,r,s,a){let c=null;return i.parents.forEach(function(u){for(const h in r){const m=r[h];m.rawBones.forEach(function(_,y){if(_.ID===u.ID){const w=c;c=new f.Bone,c.matrixWorld.copy(_.transformLink),c.name=a?f.PropertyBinding.sanitizeNodeName(a):"",c.ID=s,m.bones[y]=c,w!==null&&c.add(w)}})}}),c}createCamera(i){let r,s;if(i.children.forEach(function(a){const c=re.Objects.NodeAttribute[a.ID];c!==void 0&&(s=c)}),s===void 0)r=new f.Object3D;else{let a=0;s.CameraProjectionType!==void 0&&s.CameraProjectionType.value===1&&(a=1);let c=1;s.NearPlane!==void 0&&(c=s.NearPlane.value/1e3);let u=1e3;s.FarPlane!==void 0&&(u=s.FarPlane.value/1e3);let h=window.innerWidth,m=window.innerHeight;s.AspectWidth!==void 0&&s.AspectHeight!==void 0&&(h=s.AspectWidth.value,m=s.AspectHeight.value);const _=h/m;let y=45;s.FieldOfView!==void 0&&(y=s.FieldOfView.value);const w=s.FocalLength?s.FocalLength.value:null;switch(a){case 0:r=new f.PerspectiveCamera(y,_,c,u),w!==null&&r.setFocalLength(w);break;case 1:r=new f.OrthographicCamera(-h/2,h/2,m/2,-m/2,c,u);break;default:console.warn("THREE.FBXLoader: Unknown camera type "+a+"."),r=new f.Object3D;break}}return r}createLight(i){let r,s;if(i.children.forEach(function(a){const c=re.Objects.NodeAttribute[a.ID];c!==void 0&&(s=c)}),s===void 0)r=new f.Object3D;else{let a;s.LightType===void 0?a=0:a=s.LightType.value;let c=16777215;s.Color!==void 0&&(c=new f.Color().fromArray(s.Color.value));let u=s.Intensity===void 0?1:s.Intensity.value/100;s.CastLightOnObject!==void 0&&s.CastLightOnObject.value===0&&(u=0);let h=0;s.FarAttenuationEnd!==void 0&&(s.EnableFarAttenuation!==void 0&&s.EnableFarAttenuation.value===0?h=0:h=s.FarAttenuationEnd.value);const m=1;switch(a){case 0:r=new f.PointLight(c,u,h,m);break;case 1:r=new f.DirectionalLight(c,u);break;case 2:let _=Math.PI/3;s.InnerAngle!==void 0&&(_=f.MathUtils.degToRad(s.InnerAngle.value));let y=0;s.OuterAngle!==void 0&&(y=f.MathUtils.degToRad(s.OuterAngle.value),y=Math.max(y,1)),r=new f.SpotLight(c,u,h,_,y,m);break;default:console.warn("THREE.FBXLoader: Unknown light type "+s.LightType.value+", defaulting to a PointLight."),r=new f.PointLight(c,u);break}s.CastShadows!==void 0&&s.CastShadows.value===1&&(r.castShadow=!0)}return r}createMesh(i,r,s){let a,c=null,u=null;const h=[];return i.children.forEach(function(m){r.has(m.ID)&&(c=r.get(m.ID)),s.has(m.ID)&&h.push(s.get(m.ID))}),h.length>1?u=h:h.length>0?u=h[0]:(u=new f.MeshPhongMaterial({color:13421772}),h.push(u)),"color"in c.attributes&&h.forEach(function(m){m.vertexColors=!0}),c.FBX_Deformer?(a=new f.SkinnedMesh(c,u),a.normalizeSkinWeights()):a=new f.Mesh(c,u),a}createCurve(i,r){const s=i.children.reduce(function(c,u){return r.has(u.ID)&&(c=r.get(u.ID)),c},null),a=new f.LineBasicMaterial({color:3342591,linewidth:1});return new f.Line(s,a)}getTransformData(i,r){const s={};"InheritType"in r&&(s.inheritType=parseInt(r.InheritType.value)),"RotationOrder"in r?s.eulerOrder=Nr(r.RotationOrder.value):s.eulerOrder="ZYX","Lcl_Translation"in r&&(s.translation=r.Lcl_Translation.value),"PreRotation"in r&&(s.preRotation=r.PreRotation.value),"Lcl_Rotation"in r&&(s.rotation=r.Lcl_Rotation.value),"PostRotation"in r&&(s.postRotation=r.PostRotation.value),"Lcl_Scaling"in r&&(s.scale=r.Lcl_Scaling.value),"ScalingOffset"in r&&(s.scalingOffset=r.ScalingOffset.value),"ScalingPivot"in r&&(s.scalingPivot=r.ScalingPivot.value),"RotationOffset"in r&&(s.rotationOffset=r.RotationOffset.value),"RotationPivot"in r&&(s.rotationPivot=r.RotationPivot.value),i.userData.transformData=s}setLookAtProperties(i,r){"LookAtProperty"in r&&ke.get(i.ID).children.forEach(function(a){if(a.relationship==="LookAtProperty"){const c=re.Objects.Model[a.ID];if("Lcl_Translation"in c){const u=c.Lcl_Translation.value;i.target!==void 0?(i.target.position.fromArray(u),Ue.add(i.target)):i.lookAt(new f.Vector3().fromArray(u))}}})}bindSkeleton(i,r,s){const a=this.parsePoseNodes();for(const c in i){const u=i[c];ke.get(parseInt(u.ID)).parents.forEach(function(m){if(r.has(m.ID)){const _=m.ID;ke.get(_).parents.forEach(function(w){s.has(w.ID)&&s.get(w.ID).bind(new f.Skeleton(u.bones),a[w.ID])})}})}}parsePoseNodes(){const i={};if("Pose"in re.Objects){const r=re.Objects.Pose;for(const s in r)if(r[s].attrType==="BindPose"&&r[s].NbPoseNodes>0){const a=r[s].PoseNode;Array.isArray(a)?a.forEach(function(c){i[c.Node]=new f.Matrix4().fromArray(c.Matrix.a)}):i[a.Node]=new f.Matrix4().fromArray(a.Matrix.a)}}return i}createAmbientLight(){if("GlobalSettings"in re&&"AmbientColor"in re.GlobalSettings){const i=re.GlobalSettings.AmbientColor.value,r=i[0],s=i[1],a=i[2];if(r!==0||s!==0||a!==0){const c=new f.Color(r,s,a);Ue.add(new f.AmbientLight(c,1))}}}}class Ba{parse(i){const r=new Map;if("Geometry"in re.Objects){const s=re.Objects.Geometry;for(const a in s){const c=ke.get(parseInt(a)),u=this.parseGeometry(c,s[a],i);r.set(parseInt(a),u)}}return r}parseGeometry(i,r,s){switch(r.attrType){case"Mesh":return this.parseMeshGeometry(i,r,s);case"NurbsCurve":return this.parseNurbsGeometry(r)}}parseMeshGeometry(i,r,s){const a=s.skeletons,c=[],u=i.parents.map(function(w){return re.Objects.Model[w.ID]});if(u.length===0)return;const h=i.children.reduce(function(w,x){return a[x.ID]!==void 0&&(w=a[x.ID]),w},null);i.children.forEach(function(w){s.morphTargets[w.ID]!==void 0&&c.push(s.morphTargets[w.ID])});const m=u[0],_={};"RotationOrder"in m&&(_.eulerOrder=Nr(m.RotationOrder.value)),"InheritType"in m&&(_.inheritType=parseInt(m.InheritType.value)),"GeometricTranslation"in m&&(_.translation=m.GeometricTranslation.value),"GeometricRotation"in m&&(_.rotation=m.GeometricRotation.value),"GeometricScaling"in m&&(_.scale=m.GeometricScaling.value);const y=Br(_);return this.genGeometry(r,h,c,y)}genGeometry(i,r,s,a){const c=new f.BufferGeometry;i.attrName&&(c.name=i.attrName);const u=this.parseGeoNode(i,r),h=this.genBuffers(u),m=new f.Float32BufferAttribute(h.vertex,3);if(m.applyMatrix4(a),c.setAttribute("position",m),h.colors.length>0&&c.setAttribute("color",new f.Float32BufferAttribute(h.colors,3)),r&&(c.setAttribute("skinIndex",new f.Uint16BufferAttribute(h.weightsIndices,4)),c.setAttribute("skinWeight",new f.Float32BufferAttribute(h.vertexWeights,4)),c.FBX_Deformer=r),h.normal.length>0){const _=new f.Matrix3().getNormalMatrix(a),y=new f.Float32BufferAttribute(h.normal,3);y.applyNormalMatrix(_),c.setAttribute("normal",y)}if(h.uvs.forEach(function(_,y){let w="uv"+(y+1).toString();y===0&&(w="uv"),c.setAttribute(w,new f.Float32BufferAttribute(h.uvs[y],2))}),u.material&&u.material.mappingType!=="AllSame"){let _=h.materialIndex[0],y=0;if(h.materialIndex.forEach(function(w,x){w!==_&&(c.addGroup(y,x-y,_),_=w,y=x)}),c.groups.length>0){const w=c.groups[c.groups.length-1],x=w.start+w.count;x!==h.materialIndex.length&&c.addGroup(x,h.materialIndex.length-x,_)}c.groups.length===0&&c.addGroup(0,h.materialIndex.length,h.materialIndex[0])}return this.addMorphTargets(c,i,s,a),c}parseGeoNode(i,r){const s={};if(s.vertexPositions=i.Vertices!==void 0?i.Vertices.a:[],s.vertexIndices=i.PolygonVertexIndex!==void 0?i.PolygonVertexIndex.a:[],i.LayerElementColor&&(s.color=this.parseVertexColors(i.LayerElementColor[0])),i.LayerElementMaterial&&(s.material=this.parseMaterialIndices(i.LayerElementMaterial[0])),i.LayerElementNormal&&(s.normal=this.parseNormals(i.LayerElementNormal[0])),i.LayerElementUV){s.uv=[];let a=0;for(;i.LayerElementUV[a];)i.LayerElementUV[a].UV&&s.uv.push(this.parseUVs(i.LayerElementUV[a])),a++}return s.weightTable={},r!==null&&(s.skeleton=r,r.rawBones.forEach(function(a,c){a.indices.forEach(function(u,h){s.weightTable[u]===void 0&&(s.weightTable[u]=[]),s.weightTable[u].push({id:c,weight:a.weights[h]})})})),s}genBuffers(i){const r={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]};let s=0,a=0,c=!1,u=[],h=[],m=[],_=[],y=[],w=[];const x=this;return i.vertexIndices.forEach(function(L,E){let D,O=!1;L<0&&(L=L^-1,O=!0);let G=[],z=[];if(u.push(L*3,L*3+1,L*3+2),i.color){const B=bi(E,s,L,i.color);m.push(B[0],B[1],B[2])}if(i.skeleton){if(i.weightTable[L]!==void 0&&i.weightTable[L].forEach(function(B){z.push(B.weight),G.push(B.id)}),z.length>4){c||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),c=!0);const B=[0,0,0,0],N=[0,0,0,0];z.forEach(function(Q,$){let j=Q,F=G[$];N.forEach(function(X,Y,Z){if(j>X){Z[Y]=j,j=X;const ue=B[Y];B[Y]=F,F=ue}})}),G=B,z=N}for(;z.length<4;)z.push(0),G.push(0);for(let B=0;B<4;++B)y.push(z[B]),w.push(G[B])}if(i.normal){const B=bi(E,s,L,i.normal);h.push(B[0],B[1],B[2])}i.material&&i.material.mappingType!=="AllSame"&&(D=bi(E,s,L,i.material)[0]),i.uv&&i.uv.forEach(function(B,N){const Q=bi(E,s,L,B);_[N]===void 0&&(_[N]=[]),_[N].push(Q[0]),_[N].push(Q[1])}),a++,O&&(x.genFace(r,i,u,D,h,m,_,y,w,a),s++,a=0,u=[],h=[],m=[],_=[],y=[],w=[])}),r}genFace(i,r,s,a,c,u,h,m,_,y){for(let w=2;w<y;w++)i.vertex.push(r.vertexPositions[s[0]]),i.vertex.push(r.vertexPositions[s[1]]),i.vertex.push(r.vertexPositions[s[2]]),i.vertex.push(r.vertexPositions[s[(w-1)*3]]),i.vertex.push(r.vertexPositions[s[(w-1)*3+1]]),i.vertex.push(r.vertexPositions[s[(w-1)*3+2]]),i.vertex.push(r.vertexPositions[s[w*3]]),i.vertex.push(r.vertexPositions[s[w*3+1]]),i.vertex.push(r.vertexPositions[s[w*3+2]]),r.skeleton&&(i.vertexWeights.push(m[0]),i.vertexWeights.push(m[1]),i.vertexWeights.push(m[2]),i.vertexWeights.push(m[3]),i.vertexWeights.push(m[(w-1)*4]),i.vertexWeights.push(m[(w-1)*4+1]),i.vertexWeights.push(m[(w-1)*4+2]),i.vertexWeights.push(m[(w-1)*4+3]),i.vertexWeights.push(m[w*4]),i.vertexWeights.push(m[w*4+1]),i.vertexWeights.push(m[w*4+2]),i.vertexWeights.push(m[w*4+3]),i.weightsIndices.push(_[0]),i.weightsIndices.push(_[1]),i.weightsIndices.push(_[2]),i.weightsIndices.push(_[3]),i.weightsIndices.push(_[(w-1)*4]),i.weightsIndices.push(_[(w-1)*4+1]),i.weightsIndices.push(_[(w-1)*4+2]),i.weightsIndices.push(_[(w-1)*4+3]),i.weightsIndices.push(_[w*4]),i.weightsIndices.push(_[w*4+1]),i.weightsIndices.push(_[w*4+2]),i.weightsIndices.push(_[w*4+3])),r.color&&(i.colors.push(u[0]),i.colors.push(u[1]),i.colors.push(u[2]),i.colors.push(u[(w-1)*3]),i.colors.push(u[(w-1)*3+1]),i.colors.push(u[(w-1)*3+2]),i.colors.push(u[w*3]),i.colors.push(u[w*3+1]),i.colors.push(u[w*3+2])),r.material&&r.material.mappingType!=="AllSame"&&(i.materialIndex.push(a),i.materialIndex.push(a),i.materialIndex.push(a)),r.normal&&(i.normal.push(c[0]),i.normal.push(c[1]),i.normal.push(c[2]),i.normal.push(c[(w-1)*3]),i.normal.push(c[(w-1)*3+1]),i.normal.push(c[(w-1)*3+2]),i.normal.push(c[w*3]),i.normal.push(c[w*3+1]),i.normal.push(c[w*3+2])),r.uv&&r.uv.forEach(function(x,L){i.uvs[L]===void 0&&(i.uvs[L]=[]),i.uvs[L].push(h[L][0]),i.uvs[L].push(h[L][1]),i.uvs[L].push(h[L][(w-1)*2]),i.uvs[L].push(h[L][(w-1)*2+1]),i.uvs[L].push(h[L][w*2]),i.uvs[L].push(h[L][w*2+1])})}addMorphTargets(i,r,s,a){if(s.length===0)return;i.morphTargetsRelative=!0,i.morphAttributes.position=[];const c=this;s.forEach(function(u){u.rawTargets.forEach(function(h){const m=re.Objects.Geometry[h.geoID];m!==void 0&&c.genMorphGeometry(i,r,m,a,h.name)})})}genMorphGeometry(i,r,s,a,c){const u=r.PolygonVertexIndex!==void 0?r.PolygonVertexIndex.a:[],h=s.Vertices!==void 0?s.Vertices.a:[],m=s.Indexes!==void 0?s.Indexes.a:[],_=i.attributes.position.count*3,y=new Float32Array(_);for(let E=0;E<m.length;E++){const D=m[E]*3;y[D]=h[E*3],y[D+1]=h[E*3+1],y[D+2]=h[E*3+2]}const w={vertexIndices:u,vertexPositions:y},x=this.genBuffers(w),L=new f.Float32BufferAttribute(x.vertex,3);L.name=c||s.attrName,L.applyMatrix4(a),i.morphAttributes.position.push(L)}parseNormals(i){const r=i.MappingInformationType,s=i.ReferenceInformationType,a=i.Normals.a;let c=[];return s==="IndexToDirect"&&("NormalIndex"in i?c=i.NormalIndex.a:"NormalsIndex"in i&&(c=i.NormalsIndex.a)),{dataSize:3,buffer:a,indices:c,mappingType:r,referenceType:s}}parseUVs(i){const r=i.MappingInformationType,s=i.ReferenceInformationType,a=i.UV.a;let c=[];return s==="IndexToDirect"&&(c=i.UVIndex.a),{dataSize:2,buffer:a,indices:c,mappingType:r,referenceType:s}}parseVertexColors(i){const r=i.MappingInformationType,s=i.ReferenceInformationType,a=i.Colors.a;let c=[];return s==="IndexToDirect"&&(c=i.ColorIndex.a),{dataSize:4,buffer:a,indices:c,mappingType:r,referenceType:s}}parseMaterialIndices(i){const r=i.MappingInformationType,s=i.ReferenceInformationType;if(r==="NoMappingInformation")return{dataSize:1,buffer:[0],indices:[0],mappingType:"AllSame",referenceType:s};const a=i.Materials.a,c=[];for(let u=0;u<a.length;++u)c.push(u);return{dataSize:1,buffer:a,indices:c,mappingType:r,referenceType:s}}parseNurbsGeometry(i){if(Dr===void 0)return console.error("THREE.FBXLoader: The loader relies on NURBSCurve for any nurbs present in the model. Nurbs will show up as empty geometry."),new f.BufferGeometry;const r=parseInt(i.Order);if(isNaN(r))return console.error("THREE.FBXLoader: Invalid Order %s given for geometry ID: %s",i.Order,i.id),new f.BufferGeometry;const s=r-1,a=i.KnotVector.a,c=[],u=i.Points.a;for(let w=0,x=u.length;w<x;w+=4)c.push(new f.Vector4().fromArray(u,w));let h,m;if(i.Form==="Closed")c.push(c[0]);else if(i.Form==="Periodic"){h=s,m=a.length-1-h;for(let w=0;w<s;++w)c.push(c[w])}const y=new Dr(s,a,c,h,m).getPoints(c.length*12);return new f.BufferGeometry().setFromPoints(y)}}class Na{parse(){const i=[],r=this.parseClips();if(r!==void 0)for(const s in r){const a=r[s],c=this.addClip(a);i.push(c)}return i}parseClips(){if(re.Objects.AnimationCurve===void 0)return;const i=this.parseAnimationCurveNodes();this.parseAnimationCurves(i);const r=this.parseAnimationLayers(i);return this.parseAnimStacks(r)}parseAnimationCurveNodes(){const i=re.Objects.AnimationCurveNode,r=new Map;for(const s in i){const a=i[s];if(a.attrName.match(/S|R|T|DeformPercent/)!==null){const c={id:a.id,attr:a.attrName,curves:{}};r.set(c.id,c)}}return r}parseAnimationCurves(i){const r=re.Objects.AnimationCurve;for(const s in r){const a={id:r[s].id,times:r[s].KeyTime.a.map(Ga),values:r[s].KeyValueFloat.a},c=ke.get(a.id);if(c!==void 0){const u=c.parents[0].ID,h=c.parents[0].relationship;h.match(/X/)?i.get(u).curves.x=a:h.match(/Y/)?i.get(u).curves.y=a:h.match(/Z/)?i.get(u).curves.z=a:h.match(/d|DeformPercent/)&&i.has(u)&&(i.get(u).curves.morph=a)}}}parseAnimationLayers(i){const r=re.Objects.AnimationLayer,s=new Map;for(const a in r){const c=[],u=ke.get(parseInt(a));u!==void 0&&(u.children.forEach(function(m,_){if(i.has(m.ID)){const y=i.get(m.ID);if(y.curves.x!==void 0||y.curves.y!==void 0||y.curves.z!==void 0){if(c[_]===void 0){const w=ke.get(m.ID).parents.filter(function(x){return x.relationship!==void 0})[0].ID;if(w!==void 0){const x=re.Objects.Model[w.toString()];if(x===void 0){console.warn("THREE.FBXLoader: Encountered a unused curve.",m);return}const L={modelName:x.attrName?f.PropertyBinding.sanitizeNodeName(x.attrName):"",ID:x.id,initialPosition:[0,0,0],initialRotation:[0,0,0],initialScale:[1,1,1]};Ue.traverse(function(E){E.ID===x.id&&(L.transform=E.matrix,E.userData.transformData&&(L.eulerOrder=E.userData.transformData.eulerOrder))}),L.transform||(L.transform=new f.Matrix4),"PreRotation"in x&&(L.preRotation=x.PreRotation.value),"PostRotation"in x&&(L.postRotation=x.PostRotation.value),c[_]=L}}c[_]&&(c[_][y.attr]=y)}else if(y.curves.morph!==void 0){if(c[_]===void 0){const w=ke.get(m.ID).parents.filter(function(G){return G.relationship!==void 0})[0].ID,x=ke.get(w).parents[0].ID,L=ke.get(x).parents[0].ID,E=ke.get(L).parents[0].ID,D=re.Objects.Model[E],O={modelName:D.attrName?f.PropertyBinding.sanitizeNodeName(D.attrName):"",morphName:re.Objects.Deformer[w].attrName};c[_]=O}c[_][y.attr]=y}}}),s.set(parseInt(a),c))}return s}parseAnimStacks(i){const r=re.Objects.AnimationStack,s={};for(const a in r){const c=ke.get(parseInt(a)).children;c.length>1&&console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.");const u=i.get(c[0].ID);s[a]={name:r[a].attrName,layer:u}}return s}addClip(i){let r=[];const s=this;return i.layer.forEach(function(a){r=r.concat(s.generateTracks(a))}),new f.AnimationClip(i.name,-1,r)}generateTracks(i){const r=[];let s=new f.Vector3,a=new f.Quaternion,c=new f.Vector3;if(i.transform&&i.transform.decompose(s,a,c),s=s.toArray(),a=new f.Euler().setFromQuaternion(a,i.eulerOrder).toArray(),c=c.toArray(),i.T!==void 0&&Object.keys(i.T.curves).length>0){const u=this.generateVectorTrack(i.modelName,i.T.curves,s,"position");u!==void 0&&r.push(u)}if(i.R!==void 0&&Object.keys(i.R.curves).length>0){const u=this.generateRotationTrack(i.modelName,i.R.curves,a,i.preRotation,i.postRotation,i.eulerOrder);u!==void 0&&r.push(u)}if(i.S!==void 0&&Object.keys(i.S.curves).length>0){const u=this.generateVectorTrack(i.modelName,i.S.curves,c,"scale");u!==void 0&&r.push(u)}if(i.DeformPercent!==void 0){const u=this.generateMorphTrack(i);u!==void 0&&r.push(u)}return r}generateVectorTrack(i,r,s,a){const c=this.getTimesForAllAxes(r),u=this.getKeyframeTrackValues(c,r,s);return new f.VectorKeyframeTrack(i+"."+a,c,u)}generateRotationTrack(i,r,s,a,c,u){r.x!==void 0&&(this.interpolateRotations(r.x),r.x.values=r.x.values.map(f.MathUtils.degToRad)),r.y!==void 0&&(this.interpolateRotations(r.y),r.y.values=r.y.values.map(f.MathUtils.degToRad)),r.z!==void 0&&(this.interpolateRotations(r.z),r.z.values=r.z.values.map(f.MathUtils.degToRad));const h=this.getTimesForAllAxes(r),m=this.getKeyframeTrackValues(h,r,s);a!==void 0&&(a=a.map(f.MathUtils.degToRad),a.push(u),a=new f.Euler().fromArray(a),a=new f.Quaternion().setFromEuler(a)),c!==void 0&&(c=c.map(f.MathUtils.degToRad),c.push(u),c=new f.Euler().fromArray(c),c=new f.Quaternion().setFromEuler(c).invert());const _=new f.Quaternion,y=new f.Euler,w=[];for(let x=0;x<m.length;x+=3)y.set(m[x],m[x+1],m[x+2],u),_.setFromEuler(y),a!==void 0&&_.premultiply(a),c!==void 0&&_.multiply(c),_.toArray(w,x/3*4);return new f.QuaternionKeyframeTrack(i+".quaternion",h,w)}generateMorphTrack(i){const r=i.DeformPercent.curves.morph,s=r.values.map(function(c){return c/100}),a=Ue.getObjectByName(i.modelName).morphTargetDictionary[i.morphName];return new f.NumberKeyframeTrack(i.modelName+".morphTargetInfluences["+a+"]",r.times,s)}getTimesForAllAxes(i){let r=[];if(i.x!==void 0&&(r=r.concat(i.x.times)),i.y!==void 0&&(r=r.concat(i.y.times)),i.z!==void 0&&(r=r.concat(i.z.times)),r=r.sort(function(s,a){return s-a}),r.length>1){let s=1,a=r[0];for(let c=1;c<r.length;c++){const u=r[c];u!==a&&(r[s]=u,a=u,s++)}r=r.slice(0,s)}return r}getKeyframeTrackValues(i,r,s){const a=s,c=[];let u=-1,h=-1,m=-1;return i.forEach(function(_){if(r.x&&(u=r.x.times.indexOf(_)),r.y&&(h=r.y.times.indexOf(_)),r.z&&(m=r.z.times.indexOf(_)),u!==-1){const y=r.x.values[u];c.push(y),a[0]=y}else c.push(a[0]);if(h!==-1){const y=r.y.values[h];c.push(y),a[1]=y}else c.push(a[1]);if(m!==-1){const y=r.z.values[m];c.push(y),a[2]=y}else c.push(a[2])}),c}interpolateRotations(i){for(let r=1;r<i.values.length;r++){const s=i.values[r-1],a=i.values[r]-s,c=Math.abs(a);if(c>=180){const u=c/180,h=a/u;let m=s+h;const _=i.times[r-1],w=(i.times[r]-_)/u;let x=_+w;const L=[],E=[];for(;x<i.times[r];)L.push(x),x+=w,E.push(m),m+=h;i.times=jr(i.times,r,L),i.values=jr(i.values,r,E)}}}}class Fa{getPrevNode(){return this.nodeStack[this.currentIndent-2]}getCurrentNode(){return this.nodeStack[this.currentIndent-1]}getCurrentProp(){return this.currentProp}pushStack(i){this.nodeStack.push(i),this.currentIndent+=1}popStack(){this.nodeStack.pop(),this.currentIndent-=1}setCurrentProp(i,r){this.currentProp=i,this.currentPropName=r}parse(i){this.currentIndent=0,this.allNodes=new Or,this.nodeStack=[],this.currentProp=[],this.currentPropName="";const r=this,s=i.split(/[\r\n]+/);return s.forEach(function(a,c){const u=a.match(/^[\s\t]*;/),h=a.match(/^[\s\t]*$/);if(u||h)return;const m=a.match("^\\t{"+r.currentIndent+"}(\\w+):(.*){",""),_=a.match("^\\t{"+r.currentIndent+"}(\\w+):[\\s\\t\\r\\n](.*)"),y=a.match("^\\t{"+(r.currentIndent-1)+"}}");m?r.parseNodeBegin(a,m):_?r.parseNodeProperty(a,_,s[++c]):y?r.popStack():a.match(/^[^\s\t}]/)&&r.parseNodePropertyContinued(a)}),this.allNodes}parseNodeBegin(i,r){const s=r[1].trim().replace(/^"/,"").replace(/"$/,""),a=r[2].split(",").map(function(m){return m.trim().replace(/^"/,"").replace(/"$/,"")}),c={name:s},u=this.parseNodeAttr(a),h=this.getCurrentNode();this.currentIndent===0?this.allNodes.add(s,c):s in h?(s==="PoseNode"?h.PoseNode.push(c):h[s].id!==void 0&&(h[s]={},h[s][h[s].id]=h[s]),u.id!==""&&(h[s][u.id]=c)):typeof u.id=="number"?(h[s]={},h[s][u.id]=c):s!=="Properties70"&&(s==="PoseNode"?h[s]=[c]:h[s]=c),typeof u.id=="number"&&(c.id=u.id),u.name!==""&&(c.attrName=u.name),u.type!==""&&(c.attrType=u.type),this.pushStack(c)}parseNodeAttr(i){let r=i[0];i[0]!==""&&(r=parseInt(i[0]),isNaN(r)&&(r=i[0]));let s="",a="";return i.length>1&&(s=i[1].replace(/^(\w+)::/,""),a=i[2]),{id:r,name:s,type:a}}parseNodeProperty(i,r,s){let a=r[1].replace(/^"/,"").replace(/"$/,"").trim(),c=r[2].replace(/^"/,"").replace(/"$/,"").trim();a==="Content"&&c===","&&(c=s.replace(/"/g,"").replace(/,$/,"").trim());const u=this.getCurrentNode();if(u.name==="Properties70"){this.parseNodeSpecialProperty(i,a,c);return}if(a==="C"){const m=c.split(",").slice(1),_=parseInt(m[0]),y=parseInt(m[1]);let w=c.split(",").slice(3);w=w.map(function(x){return x.trim().replace(/^"/,"")}),a="connections",c=[_,y],Ka(c,w),u[a]===void 0&&(u[a]=[])}a==="Node"&&(u.id=c),a in u&&Array.isArray(u[a])?u[a].push(c):a!=="a"?u[a]=c:u.a=c,this.setCurrentProp(u,a),a==="a"&&c.slice(-1)!==","&&(u.a=as(c))}parseNodePropertyContinued(i){const r=this.getCurrentNode();r.a+=i,i.slice(-1)!==","&&(r.a=as(r.a))}parseNodeSpecialProperty(i,r,s){const a=s.split('",').map(function(y){return y.trim().replace(/^\"/,"").replace(/\s/,"_")}),c=a[0],u=a[1],h=a[2],m=a[3];let _=a[4];switch(u){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":_=as(_);break}this.getPrevNode()[c]={type:u,type2:h,flag:m,value:_},this.setCurrentProp(this.getPrevNode(),c)}}class ja{parse(i){const r=new Tr(i);r.skip(23);const s=r.getUint32();if(s<6400)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+s);const a=new Or;for(;!this.endOfContent(r);){const c=this.parseNode(r,s);c!==null&&a.add(c.name,c)}return a}endOfContent(i){return i.size()%16===0?(i.getOffset()+160+16&-16)>=i.size():i.getOffset()+160+16>=i.size()}parseNode(i,r){const s={},a=r>=7500?i.getUint64():i.getUint32(),c=r>=7500?i.getUint64():i.getUint32();r>=7500?i.getUint64():i.getUint32();const u=i.getUint8(),h=i.getString(u);if(a===0)return null;const m=[];for(let x=0;x<c;x++)m.push(this.parseProperty(i));const _=m.length>0?m[0]:"",y=m.length>1?m[1]:"",w=m.length>2?m[2]:"";for(s.singleProperty=c===1&&i.getOffset()===a;a>i.getOffset();){const x=this.parseNode(i,r);x!==null&&this.parseSubNode(h,s,x)}return s.propertyList=m,typeof _=="number"&&(s.id=_),y!==""&&(s.attrName=y),w!==""&&(s.attrType=w),h!==""&&(s.name=h),s}parseSubNode(i,r,s){if(s.singleProperty===!0){const a=s.propertyList[0];Array.isArray(a)?(r[s.name]=s,s.a=a):r[s.name]=a}else if(i==="Connections"&&s.name==="C"){const a=[];s.propertyList.forEach(function(c,u){u!==0&&a.push(c)}),r.connections===void 0&&(r.connections=[]),r.connections.push(a)}else if(s.name==="Properties70")Object.keys(s).forEach(function(c){r[c]=s[c]});else if(i==="Properties70"&&s.name==="P"){let a=s.propertyList[0],c=s.propertyList[1];const u=s.propertyList[2],h=s.propertyList[3];let m;a.indexOf("Lcl ")===0&&(a=a.replace("Lcl ","Lcl_")),c.indexOf("Lcl ")===0&&(c=c.replace("Lcl ","Lcl_")),c==="Color"||c==="ColorRGB"||c==="Vector"||c==="Vector3D"||c.indexOf("Lcl_")===0?m=[s.propertyList[4],s.propertyList[5],s.propertyList[6]]:m=s.propertyList[4],r[a]={type:c,type2:u,flag:h,value:m}}else r[s.name]===void 0?typeof s.id=="number"?(r[s.name]={},r[s.name][s.id]=s):r[s.name]=s:s.name==="PoseNode"?(Array.isArray(r[s.name])||(r[s.name]=[r[s.name]]),r[s.name].push(s)):r[s.name][s.id]===void 0&&(r[s.name][s.id]=s)}parseProperty(i){const r=i.getString(1);let s;switch(r){case"C":return i.getBoolean();case"D":return i.getFloat64();case"F":return i.getFloat32();case"I":return i.getInt32();case"L":return i.getInt64();case"R":return s=i.getUint32(),i.getArrayBuffer(s);case"S":return s=i.getUint32(),i.getString(s);case"Y":return i.getInt16();case"b":case"c":case"d":case"f":case"i":case"l":const a=i.getUint32(),c=i.getUint32(),u=i.getUint32();if(c===0)switch(r){case"b":case"c":return i.getBooleanArray(a);case"d":return i.getFloat64Array(a);case"f":return i.getFloat32Array(a);case"i":return i.getInt32Array(a);case"l":return i.getInt64Array(a)}const h=Ro(new Uint8Array(i.getArrayBuffer(u))),m=new Tr(h.buffer);switch(r){case"b":case"c":return m.getBooleanArray(a);case"d":return m.getFloat64Array(a);case"f":return m.getFloat32Array(a);case"i":return m.getInt32Array(a);case"l":return m.getInt64Array(a)}default:throw new Error("THREE.FBXLoader: Unknown property type "+r)}}}class Tr{constructor(i,r){this.dv=new DataView(i),this.offset=0,this.littleEndian=r!==void 0?r:!0}getOffset(){return this.offset}size(){return this.dv.buffer.byteLength}skip(i){this.offset+=i}getBoolean(){return(this.getUint8()&1)===1}getBooleanArray(i){const r=[];for(let s=0;s<i;s++)r.push(this.getBoolean());return r}getUint8(){const i=this.dv.getUint8(this.offset);return this.offset+=1,i}getInt16(){const i=this.dv.getInt16(this.offset,this.littleEndian);return this.offset+=2,i}getInt32(){const i=this.dv.getInt32(this.offset,this.littleEndian);return this.offset+=4,i}getInt32Array(i){const r=[];for(let s=0;s<i;s++)r.push(this.getInt32());return r}getUint32(){const i=this.dv.getUint32(this.offset,this.littleEndian);return this.offset+=4,i}getInt64(){let i,r;return this.littleEndian?(i=this.getUint32(),r=this.getUint32()):(r=this.getUint32(),i=this.getUint32()),r&2147483648?(r=~r&4294967295,i=~i&4294967295,i===4294967295&&(r=r+1&4294967295),i=i+1&4294967295,-(r*4294967296+i)):r*4294967296+i}getInt64Array(i){const r=[];for(let s=0;s<i;s++)r.push(this.getInt64());return r}getUint64(){let i,r;return this.littleEndian?(i=this.getUint32(),r=this.getUint32()):(r=this.getUint32(),i=this.getUint32()),r*4294967296+i}getFloat32(){const i=this.dv.getFloat32(this.offset,this.littleEndian);return this.offset+=4,i}getFloat32Array(i){const r=[];for(let s=0;s<i;s++)r.push(this.getFloat32());return r}getFloat64(){const i=this.dv.getFloat64(this.offset,this.littleEndian);return this.offset+=8,i}getFloat64Array(i){const r=[];for(let s=0;s<i;s++)r.push(this.getFloat64());return r}getArrayBuffer(i){const r=this.dv.buffer.slice(this.offset,this.offset+i);return this.offset+=i,r}getString(i){let r=[];for(let a=0;a<i;a++)r[a]=this.getUint8();const s=r.indexOf(0);return s>=0&&(r=r.slice(0,s)),f.LoaderUtils.decodeText(new Uint8Array(r))}}class Or{add(i,r){this[i]=r}}function za(g){const i="Kaydara FBX Binary \0";return g.byteLength>=i.length&&i===Fr(g,0,i.length)}function Ua(g){const i=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"];let r=0;function s(a){const c=g[a-1];return g=g.slice(r+a),r++,c}for(let a=0;a<i.length;++a)if(s(1)===i[a])return!1;return!0}function Er(g){const i=/FBXVersion: (\d+)/,r=g.match(i);if(r)return parseInt(r[1]);throw new Error("THREE.FBXLoader: Cannot find the version number for the file given.")}function Ga(g){return g/46186158e3}const Ra=[];function bi(g,i,r,s){let a;switch(s.mappingType){case"ByPolygonVertex":a=g;break;case"ByPolygon":a=i;break;case"ByVertice":a=r;break;case"AllSame":a=s.indices[0];break;default:console.warn("THREE.FBXLoader: unknown attribute mapping type "+s.mappingType)}s.referenceType==="IndexToDirect"&&(a=s.indices[a]);const c=a*s.dataSize,u=c+s.dataSize;return $a(Ra,s.buffer,c,u)}const os=new f.Euler,cn=new f.Vector3;function Br(g){const i=new f.Matrix4,r=new f.Matrix4,s=new f.Matrix4,a=new f.Matrix4,c=new f.Matrix4,u=new f.Matrix4,h=new f.Matrix4,m=new f.Matrix4,_=new f.Matrix4,y=new f.Matrix4,w=new f.Matrix4,x=new f.Matrix4,L=g.inheritType?g.inheritType:0;if(g.translation&&i.setPosition(cn.fromArray(g.translation)),g.preRotation){const Y=g.preRotation.map(f.MathUtils.degToRad);Y.push(g.eulerOrder),r.makeRotationFromEuler(os.fromArray(Y))}if(g.rotation){const Y=g.rotation.map(f.MathUtils.degToRad);Y.push(g.eulerOrder),s.makeRotationFromEuler(os.fromArray(Y))}if(g.postRotation){const Y=g.postRotation.map(f.MathUtils.degToRad);Y.push(g.eulerOrder),a.makeRotationFromEuler(os.fromArray(Y)),a.invert()}g.scale&&c.scale(cn.fromArray(g.scale)),g.scalingOffset&&h.setPosition(cn.fromArray(g.scalingOffset)),g.scalingPivot&&u.setPosition(cn.fromArray(g.scalingPivot)),g.rotationOffset&&m.setPosition(cn.fromArray(g.rotationOffset)),g.rotationPivot&&_.setPosition(cn.fromArray(g.rotationPivot)),g.parentMatrixWorld&&(w.copy(g.parentMatrix),y.copy(g.parentMatrixWorld));const E=r.clone().multiply(s).multiply(a),D=new f.Matrix4;D.extractRotation(y);const O=new f.Matrix4;O.copyPosition(y);const G=O.clone().invert().multiply(y),z=D.clone().invert().multiply(G),B=c,N=new f.Matrix4;if(L===0)N.copy(D).multiply(E).multiply(z).multiply(B);else if(L===1)N.copy(D).multiply(z).multiply(E).multiply(B);else{const Z=new f.Matrix4().scale(new f.Vector3().setFromMatrixScale(w)).clone().invert(),ue=z.clone().multiply(Z);N.copy(D).multiply(E).multiply(ue).multiply(B)}const Q=_.clone().invert(),$=u.clone().invert();let j=i.clone().multiply(m).multiply(_).multiply(r).multiply(s).multiply(a).multiply(Q).multiply(h).multiply(u).multiply(c).multiply($);const F=new f.Matrix4().copyPosition(j),X=y.clone().multiply(F);return x.copyPosition(X),j=x.clone().multiply(N),j.premultiply(y.invert()),j}function Nr(g){g=g||0;const i=["ZYX","YZX","XZY","ZXY","YXZ","XYZ"];return g===6?(console.warn("THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect."),i[0]):i[g]}function as(g){return g.split(",").map(function(r){return parseFloat(r)})}function Fr(g,i,r){return i===void 0&&(i=0),r===void 0&&(r=g.byteLength),f.LoaderUtils.decodeText(new Uint8Array(g,i,r))}function Ka(g,i){for(let r=0,s=g.length,a=i.length;r<a;r++,s++)g[s]=i[r]}function $a(g,i,r,s){for(let a=r,c=0;a<s;a++,c++)g[c]=i[a];return g}function jr(g,i,r){return g.slice(0,i).concat(r).concat(g.slice(i))}class Xa extends f.Loader{constructor(i){super(i)}load(i,r,s,a){const c=new f.FileLoader(this.manager);c.setPath(this.path),c.setRequestHeader(this.requestHeader),c.setWithCredentials(this.withCredentials),c.load(i,u=>{if(typeof u!="string")throw new Error("unsupported data type");const h=JSON.parse(u),m=this.parse(h);r&&r(m)},s,a)}parse(i){return new ls(i)}}class ls{constructor(i){k(this,"data",void 0),this.data=i}generateShapes(i,r=100,s){const a=[],c={letterSpacing:0,lineHeight:1,...s},u=Ya(i,r,this.data,c);for(let h=0,m=u.length;h<m;h++)Array.prototype.push.apply(a,u[h].toShapes(!1));return a}}k(ls,"isFont",void 0),k(ls,"type",void 0);function Ya(g,i,r,s){const a=Array.from(g),c=i/r.resolution,u=(r.boundingBox.yMax-r.boundingBox.yMin+r.underlineThickness)*c,h=[];let m=0,_=0;for(let y=0;y<a.length;y++){const w=a[y];if(w===`
|
|
14
|
-
`)m=0,_-=u*s.lineHeight;else{const x=
|
|
15
|
-
`,x=function(B,N,Q){N=N||1024;let j=B.pos,F=-1,X=0,Y="",Z=String.fromCharCode.apply(null,new Uint16Array(B.subarray(j,j+128)));for(;0>(F=Z.indexOf(w))&&X<N&&j<B.byteLength;)Y+=Z,X+=Z.length,j+=128,Z+=String.fromCharCode.apply(null,new Uint16Array(B.subarray(j,j+128)));return-1<F?(Q!==!1&&(B.pos+=X+F+1),Y+Z.slice(0,F)):!1},
|
|
13
|
+
`),h={specular:{value:new f.Color().setHex(16777215)},glossiness:{value:1},specularMap:{value:null},glossinessMap:{value:null}};this._extraUniforms=h,this.onBeforeCompile=function(m){for(const _ in h)m.uniforms[_]=h[_];m.fragmentShader=m.fragmentShader.replace("uniform float roughness;","uniform vec3 specular;").replace("uniform float metalness;","uniform float glossiness;").replace("#include <roughnessmap_pars_fragment>",r).replace("#include <metalnessmap_pars_fragment>",s).replace("#include <roughnessmap_fragment>",a).replace("#include <metalnessmap_fragment>",c).replace("#include <lights_physical_fragment>",u)},Object.defineProperties(this,{specular:{get:function(){return h.specular.value},set:function(m){h.specular.value=m}},specularMap:{get:function(){return h.specularMap.value},set:function(m){h.specularMap.value=m,m?this.defines.USE_SPECULARMAP="":delete this.defines.USE_SPECULARMAP}},glossiness:{get:function(){return h.glossiness.value},set:function(m){h.glossiness.value=m}},glossinessMap:{get:function(){return h.glossinessMap.value},set:function(m){h.glossinessMap.value=m,m?(this.defines.USE_GLOSSINESSMAP="",this.defines.USE_UV=""):(delete this.defines.USE_GLOSSINESSMAP,delete this.defines.USE_UV)}}}),delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this.setValues(i)}copy(i){return super.copy(i),this.specularMap=i.specularMap,this.specular.copy(i.specular),this.glossinessMap=i.glossinessMap,this.glossiness=i.glossiness,delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this}}class ka{constructor(){this.name=se.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,this.specularGlossinessParams=["color","map","lightMap","lightMapIntensity","aoMap","aoMapIntensity","emissive","emissiveIntensity","emissiveMap","bumpMap","bumpScale","normalMap","normalMapType","displacementMap","displacementScale","displacementBias","specularMap","specular","glossinessMap","glossiness","alphaMap","envMap","envMapIntensity","refractionRatio"]}getMaterialType(){return is}extendParams(i,r,s){const a=r.extensions[this.name];i.color=new f.Color(1,1,1),i.opacity=1;const c=[];if(Array.isArray(a.diffuseFactor)){const u=a.diffuseFactor;i.color.fromArray(u),i.opacity=u[3]}if(a.diffuseTexture!==void 0&&c.push(s.assignTexture(i,"map",a.diffuseTexture,f.sRGBEncoding)),i.emissive=new f.Color(0,0,0),i.glossiness=a.glossinessFactor!==void 0?a.glossinessFactor:1,i.specular=new f.Color(1,1,1),Array.isArray(a.specularFactor)&&i.specular.fromArray(a.specularFactor),a.specularGlossinessTexture!==void 0){const u=a.specularGlossinessTexture;c.push(s.assignTexture(i,"glossinessMap",u)),c.push(s.assignTexture(i,"specularMap",u,f.sRGBEncoding))}return Promise.all(c)}createMaterial(i){const r=new is(i);return r.fog=!0,r.color=i.color,r.map=i.map===void 0?null:i.map,r.lightMap=null,r.lightMapIntensity=1,r.aoMap=i.aoMap===void 0?null:i.aoMap,r.aoMapIntensity=1,r.emissive=i.emissive,r.emissiveIntensity=i.emissiveIntensity===void 0?1:i.emissiveIntensity,r.emissiveMap=i.emissiveMap===void 0?null:i.emissiveMap,r.bumpMap=i.bumpMap===void 0?null:i.bumpMap,r.bumpScale=1,r.normalMap=i.normalMap===void 0?null:i.normalMap,r.normalMapType=f.TangentSpaceNormalMap,i.normalScale&&(r.normalScale=i.normalScale),r.displacementMap=null,r.displacementScale=1,r.displacementBias=0,r.specularMap=i.specularMap===void 0?null:i.specularMap,r.specular=i.specular,r.glossinessMap=i.glossinessMap===void 0?null:i.glossinessMap,r.glossiness=i.glossiness,r.alphaMap=null,r.envMap=i.envMap===void 0?null:i.envMap,r.envMapIntensity=1,r.refractionRatio=.98,r}}class Sa{constructor(){this.name=se.KHR_MESH_QUANTIZATION}}class Sr extends f.Interpolant{constructor(i,r,s,a){super(i,r,s,a)}copySampleValue_(i){const r=this.resultBuffer,s=this.sampleValues,a=this.valueSize,c=i*a*3+a;for(let u=0;u!==a;u++)r[u]=s[c+u];return r}interpolate_(i,r,s,a){const c=this.resultBuffer,u=this.sampleValues,h=this.valueSize,m=h*2,_=h*3,y=a-r,w=(s-r)/y,x=w*w,k=x*w,E=i*_,I=E-_,O=-2*k+3*x,G=k-x,z=1-O,B=G-x+w;for(let N=0;N!==h;N++){const Q=u[I+N+h],$=u[I+N+m]*y,j=u[E+N+h],F=u[E+N]*y;c[N]=z*Q+B*$+O*j+G*F}return c}}const La=new f.Quaternion;class Aa extends Sr{interpolate_(i,r,s,a){const c=super.interpolate_(i,r,s,a);return La.fromArray(c).normalize().toArray(c),c}}const ht={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},Fn={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Lr={9728:f.NearestFilter,9729:f.LinearFilter,9984:f.NearestMipmapNearestFilter,9985:f.LinearMipmapNearestFilter,9986:f.NearestMipmapLinearFilter,9987:f.LinearMipmapLinearFilter},Ar={33071:f.ClampToEdgeWrapping,33648:f.MirroredRepeatWrapping,10497:f.RepeatWrapping},Vr={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},ss={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv2",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},Pt={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},Va={CUBICSPLINE:void 0,LINEAR:f.InterpolateLinear,STEP:f.InterpolateDiscrete},rs={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function Ia(g){return g.DefaultMaterial===void 0&&(g.DefaultMaterial=new f.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:f.FrontSide})),g.DefaultMaterial}function jn(g,i,r){for(const s in r.extensions)g[s]===void 0&&(i.userData.gltfExtensions=i.userData.gltfExtensions||{},i.userData.gltfExtensions[s]=r.extensions[s])}function Ft(g,i){i.extras!==void 0&&(typeof i.extras=="object"?Object.assign(g.userData,i.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+i.extras))}function Da(g,i,r){let s=!1,a=!1,c=!1;for(let _=0,y=i.length;_<y;_++){const w=i[_];if(w.POSITION!==void 0&&(s=!0),w.NORMAL!==void 0&&(a=!0),w.COLOR_0!==void 0&&(c=!0),s&&a&&c)break}if(!s&&!a&&!c)return Promise.resolve(g);const u=[],h=[],m=[];for(let _=0,y=i.length;_<y;_++){const w=i[_];if(s){const x=w.POSITION!==void 0?r.getDependency("accessor",w.POSITION):g.attributes.position;u.push(x)}if(a){const x=w.NORMAL!==void 0?r.getDependency("accessor",w.NORMAL):g.attributes.normal;h.push(x)}if(c){const x=w.COLOR_0!==void 0?r.getDependency("accessor",w.COLOR_0):g.attributes.color;m.push(x)}}return Promise.all([Promise.all(u),Promise.all(h),Promise.all(m)]).then(function(_){const y=_[0],w=_[1],x=_[2];return s&&(g.morphAttributes.position=y),a&&(g.morphAttributes.normal=w),c&&(g.morphAttributes.color=x),g.morphTargetsRelative=!0,g})}function Ta(g,i){if(g.updateMorphTargets(),i.weights!==void 0)for(let r=0,s=i.weights.length;r<s;r++)g.morphTargetInfluences[r]=i.weights[r];if(i.extras&&Array.isArray(i.extras.targetNames)){const r=i.extras.targetNames;if(g.morphTargetInfluences.length===r.length){g.morphTargetDictionary={};for(let s=0,a=r.length;s<a;s++)g.morphTargetDictionary[r[s]]=s}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function Oa(g){const i=g.extensions&&g.extensions[se.KHR_DRACO_MESH_COMPRESSION];let r;return i?r="draco:"+i.bufferView+":"+i.indices+":"+Ir(i.attributes):r=g.indices+":"+Ir(g.attributes)+":"+g.mode,r}function Ir(g){let i="";const r=Object.keys(g).sort();for(let s=0,a=r.length;s<a;s++)i+=r[s]+":"+g[r[s]]+";";return i}function os(g){switch(g){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function Ea(g){return g.search(/\.jpe?g($|\?)/i)>0||g.search(/^data\:image\/jpeg/)===0?"image/jpeg":g.search(/\.webp($|\?)/i)>0||g.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}class Ba{constructor(i={},r={}){var s,a;this.json=i,this.extensions={},this.plugins={},this.options=r,this.cache=new ca,this.associations=new Map,this.primitiveCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};const c=typeof navigator<"u"&&/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,u=typeof navigator<"u"&&((s=navigator.userAgent)===null||s===void 0?void 0:s.indexOf("Firefox"))>-1,h=typeof navigator<"u"&&u?(a=navigator.userAgent)===null||a===void 0?void 0:a.match(/Firefox\/([0-9]+)\./)[1]:-1;typeof createImageBitmap>"u"||c||u&&h<98?this.textureLoader=new f.TextureLoader(this.options.manager):this.textureLoader=new f.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new f.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(i){this.extensions=i}setPlugins(i){this.plugins=i}parse(i,r){const s=this,a=this.json,c=this.extensions;this.cache.removeAll(),this._invokeAll(function(u){return u._markDefs&&u._markDefs()}),Promise.all(this._invokeAll(function(u){return u.beforeRoot&&u.beforeRoot()})).then(function(){return Promise.all([s.getDependencies("scene"),s.getDependencies("animation"),s.getDependencies("camera")])}).then(function(u){const h={scene:u[0][a.scene||0],scenes:u[0],animations:u[1],cameras:u[2],asset:a.asset,parser:s,userData:{}};jn(c,h,a),Ft(h,a),Promise.all(s._invokeAll(function(m){return m.afterRoot&&m.afterRoot(h)})).then(function(){i(h)})}).catch(r)}_markDefs(){const i=this.json.nodes||[],r=this.json.skins||[],s=this.json.meshes||[];for(let a=0,c=r.length;a<c;a++){const u=r[a].joints;for(let h=0,m=u.length;h<m;h++)i[u[h]].isBone=!0}for(let a=0,c=i.length;a<c;a++){const u=i[a];u.mesh!==void 0&&(this._addNodeRef(this.meshCache,u.mesh),u.skin!==void 0&&(s[u.mesh].isSkinnedMesh=!0)),u.camera!==void 0&&this._addNodeRef(this.cameraCache,u.camera)}}_addNodeRef(i,r){r!==void 0&&(i.refs[r]===void 0&&(i.refs[r]=i.uses[r]=0),i.refs[r]++)}_getNodeRef(i,r,s){if(i.refs[r]<=1)return s;const a=s.clone(),c=(u,h)=>{const m=this.associations.get(u);m!=null&&this.associations.set(h,m);for(const[_,y]of u.children.entries())c(y,h.children[_])};return c(s,a),a.name+="_instance_"+i.uses[r]++,a}_invokeOne(i){const r=Object.values(this.plugins);r.push(this);for(let s=0;s<r.length;s++){const a=i(r[s]);if(a)return a}return null}_invokeAll(i){const r=Object.values(this.plugins);r.unshift(this);const s=[];for(let a=0;a<r.length;a++){const c=i(r[a]);c&&s.push(c)}return s}getDependency(i,r){const s=i+":"+r;let a=this.cache.get(s);if(!a){switch(i){case"scene":a=this.loadScene(r);break;case"node":a=this.loadNode(r);break;case"mesh":a=this._invokeOne(function(c){return c.loadMesh&&c.loadMesh(r)});break;case"accessor":a=this.loadAccessor(r);break;case"bufferView":a=this._invokeOne(function(c){return c.loadBufferView&&c.loadBufferView(r)});break;case"buffer":a=this.loadBuffer(r);break;case"material":a=this._invokeOne(function(c){return c.loadMaterial&&c.loadMaterial(r)});break;case"texture":a=this._invokeOne(function(c){return c.loadTexture&&c.loadTexture(r)});break;case"skin":a=this.loadSkin(r);break;case"animation":a=this._invokeOne(function(c){return c.loadAnimation&&c.loadAnimation(r)});break;case"camera":a=this.loadCamera(r);break;default:throw new Error("Unknown type: "+i)}this.cache.add(s,a)}return a}getDependencies(i){let r=this.cache.get(i);if(!r){const s=this,a=this.json[i+(i==="mesh"?"es":"s")]||[];r=Promise.all(a.map(function(c,u){return s.getDependency(i,u)})),this.cache.add(i,r)}return r}loadBuffer(i){const r=this.json.buffers[i],s=this.fileLoader;if(r.type&&r.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+r.type+" buffer type is not supported.");if(r.uri===void 0&&i===0)return Promise.resolve(this.extensions[se.KHR_BINARY_GLTF].body);const a=this.options;return new Promise(function(c,u){s.load(f.LoaderUtils.resolveURL(r.uri,a.path),c,void 0,function(){u(new Error('THREE.GLTFLoader: Failed to load buffer "'+r.uri+'".'))})})}loadBufferView(i){const r=this.json.bufferViews[i];return this.getDependency("buffer",r.buffer).then(function(s){const a=r.byteLength||0,c=r.byteOffset||0;return s.slice(c,c+a)})}loadAccessor(i){const r=this,s=this.json,a=this.json.accessors[i];if(a.bufferView===void 0&&a.sparse===void 0)return Promise.resolve(null);const c=[];return a.bufferView!==void 0?c.push(this.getDependency("bufferView",a.bufferView)):c.push(null),a.sparse!==void 0&&(c.push(this.getDependency("bufferView",a.sparse.indices.bufferView)),c.push(this.getDependency("bufferView",a.sparse.values.bufferView))),Promise.all(c).then(function(u){const h=u[0],m=Vr[a.type],_=Fn[a.componentType],y=_.BYTES_PER_ELEMENT,w=y*m,x=a.byteOffset||0,k=a.bufferView!==void 0?s.bufferViews[a.bufferView].byteStride:void 0,E=a.normalized===!0;let I,O;if(k&&k!==w){const G=Math.floor(x/k),z="InterleavedBuffer:"+a.bufferView+":"+a.componentType+":"+G+":"+a.count;let B=r.cache.get(z);B||(I=new _(h,G*k,a.count*k/y),B=new f.InterleavedBuffer(I,k/y),r.cache.add(z,B)),O=new f.InterleavedBufferAttribute(B,m,x%k/y,E)}else h===null?I=new _(a.count*m):I=new _(h,x,a.count*m),O=new f.BufferAttribute(I,m,E);if(a.sparse!==void 0){const G=Vr.SCALAR,z=Fn[a.sparse.indices.componentType],B=a.sparse.indices.byteOffset||0,N=a.sparse.values.byteOffset||0,Q=new z(u[1],B,a.sparse.count*G),$=new _(u[2],N,a.sparse.count*m);h!==null&&(O=new f.BufferAttribute(O.array.slice(),O.itemSize,O.normalized));for(let j=0,F=Q.length;j<F;j++){const X=Q[j];if(O.setX(X,$[j*m]),m>=2&&O.setY(X,$[j*m+1]),m>=3&&O.setZ(X,$[j*m+2]),m>=4&&O.setW(X,$[j*m+3]),m>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return O})}loadTexture(i){const r=this.json,s=this.options,c=r.textures[i].source,u=r.images[c];let h=this.textureLoader;if(u.uri){const m=s.manager.getHandler(u.uri);m!==null&&(h=m)}return this.loadTextureImage(i,c,h)}loadTextureImage(i,r,s){const a=this,c=this.json,u=c.textures[i],h=c.images[r],m=(h.uri||h.bufferView)+":"+u.sampler;if(this.textureCache[m])return this.textureCache[m];const _=this.loadImageSource(r,s).then(function(y){y.flipY=!1,u.name&&(y.name=u.name);const x=(c.samplers||{})[u.sampler]||{};return y.magFilter=Lr[x.magFilter]||f.LinearFilter,y.minFilter=Lr[x.minFilter]||f.LinearMipmapLinearFilter,y.wrapS=Ar[x.wrapS]||f.RepeatWrapping,y.wrapT=Ar[x.wrapT]||f.RepeatWrapping,a.associations.set(y,{textures:i}),y}).catch(function(){return null});return this.textureCache[m]=_,_}loadImageSource(i,r){const s=this,a=this.json,c=this.options;if(this.sourceCache[i]!==void 0)return this.sourceCache[i].then(w=>w.clone());const u=a.images[i],h=self.URL||self.webkitURL;let m=u.uri||"",_=!1;if(u.bufferView!==void 0)m=s.getDependency("bufferView",u.bufferView).then(function(w){_=!0;const x=new Blob([w],{type:u.mimeType});return m=h.createObjectURL(x),m});else if(u.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+i+" is missing URI and bufferView");const y=Promise.resolve(m).then(function(w){return new Promise(function(x,k){let E=x;r.isImageBitmapLoader===!0&&(E=function(I){const O=new f.Texture(I);O.needsUpdate=!0,x(O)}),r.load(f.LoaderUtils.resolveURL(w,c.path),E,void 0,k)})}).then(function(w){return _===!0&&h.revokeObjectURL(m),w.userData.mimeType=u.mimeType||Ea(u.uri),w}).catch(function(w){throw console.error("THREE.GLTFLoader: Couldn't load texture",m),w});return this.sourceCache[i]=y,y}assignTexture(i,r,s,a){const c=this;return this.getDependency("texture",s.index).then(function(u){if(s.texCoord!==void 0&&s.texCoord!=0&&!(r==="aoMap"&&s.texCoord==1)&&console.warn("THREE.GLTFLoader: Custom UV set "+s.texCoord+" for texture "+r+" not yet supported."),c.extensions[se.KHR_TEXTURE_TRANSFORM]){const h=s.extensions!==void 0?s.extensions[se.KHR_TEXTURE_TRANSFORM]:void 0;if(h){const m=c.associations.get(u);u=c.extensions[se.KHR_TEXTURE_TRANSFORM].extendTexture(u,h),c.associations.set(u,m)}}return a!==void 0&&(u.encoding=a),i[r]=u,u})}assignFinalMaterial(i){const r=i.geometry;let s=i.material;const a=r.attributes.tangent===void 0,c=r.attributes.color!==void 0,u=r.attributes.normal===void 0;if(i.isPoints){const h="PointsMaterial:"+s.uuid;let m=this.cache.get(h);m||(m=new f.PointsMaterial,f.Material.prototype.copy.call(m,s),m.color.copy(s.color),m.map=s.map,m.sizeAttenuation=!1,this.cache.add(h,m)),s=m}else if(i.isLine){const h="LineBasicMaterial:"+s.uuid;let m=this.cache.get(h);m||(m=new f.LineBasicMaterial,f.Material.prototype.copy.call(m,s),m.color.copy(s.color),this.cache.add(h,m)),s=m}if(a||c||u){let h="ClonedMaterial:"+s.uuid+":";s.isGLTFSpecularGlossinessMaterial&&(h+="specular-glossiness:"),a&&(h+="derivative-tangents:"),c&&(h+="vertex-colors:"),u&&(h+="flat-shading:");let m=this.cache.get(h);m||(m=s.clone(),c&&(m.vertexColors=!0),u&&(m.flatShading=!0),a&&(m.normalScale&&(m.normalScale.y*=-1),m.clearcoatNormalScale&&(m.clearcoatNormalScale.y*=-1)),this.cache.add(h,m),this.associations.set(m,this.associations.get(s))),s=m}s.aoMap&&r.attributes.uv2===void 0&&r.attributes.uv!==void 0&&r.setAttribute("uv2",r.attributes.uv),i.material=s}getMaterialType(){return f.MeshStandardMaterial}loadMaterial(i){const r=this,s=this.json,a=this.extensions,c=s.materials[i];let u;const h={},m=c.extensions||{},_=[];if(m[se.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]){const w=a[se.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS];u=w.getMaterialType(),_.push(w.extendParams(h,c,r))}else if(m[se.KHR_MATERIALS_UNLIT]){const w=a[se.KHR_MATERIALS_UNLIT];u=w.getMaterialType(),_.push(w.extendParams(h,c,r))}else{const w=c.pbrMetallicRoughness||{};if(h.color=new f.Color(1,1,1),h.opacity=1,Array.isArray(w.baseColorFactor)){const x=w.baseColorFactor;h.color.fromArray(x),h.opacity=x[3]}w.baseColorTexture!==void 0&&_.push(r.assignTexture(h,"map",w.baseColorTexture,f.sRGBEncoding)),h.metalness=w.metallicFactor!==void 0?w.metallicFactor:1,h.roughness=w.roughnessFactor!==void 0?w.roughnessFactor:1,w.metallicRoughnessTexture!==void 0&&(_.push(r.assignTexture(h,"metalnessMap",w.metallicRoughnessTexture)),_.push(r.assignTexture(h,"roughnessMap",w.metallicRoughnessTexture))),u=this._invokeOne(function(x){return x.getMaterialType&&x.getMaterialType(i)}),_.push(Promise.all(this._invokeAll(function(x){return x.extendMaterialParams&&x.extendMaterialParams(i,h)})))}c.doubleSided===!0&&(h.side=f.DoubleSide);const y=c.alphaMode||rs.OPAQUE;if(y===rs.BLEND?(h.transparent=!0,h.depthWrite=!1):(h.transparent=!1,y===rs.MASK&&(h.alphaTest=c.alphaCutoff!==void 0?c.alphaCutoff:.5)),c.normalTexture!==void 0&&u!==f.MeshBasicMaterial&&(_.push(r.assignTexture(h,"normalMap",c.normalTexture)),h.normalScale=new f.Vector2(1,1),c.normalTexture.scale!==void 0)){const w=c.normalTexture.scale;h.normalScale.set(w,w)}return c.occlusionTexture!==void 0&&u!==f.MeshBasicMaterial&&(_.push(r.assignTexture(h,"aoMap",c.occlusionTexture)),c.occlusionTexture.strength!==void 0&&(h.aoMapIntensity=c.occlusionTexture.strength)),c.emissiveFactor!==void 0&&u!==f.MeshBasicMaterial&&(h.emissive=new f.Color().fromArray(c.emissiveFactor)),c.emissiveTexture!==void 0&&u!==f.MeshBasicMaterial&&_.push(r.assignTexture(h,"emissiveMap",c.emissiveTexture,f.sRGBEncoding)),Promise.all(_).then(function(){let w;return u===is?w=a[se.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(h):w=new u(h),c.name&&(w.name=c.name),Ft(w,c),r.associations.set(w,{materials:i}),c.extensions&&jn(a,w,c),w})}createUniqueName(i){const r=f.PropertyBinding.sanitizeNodeName(i||"");let s=r;for(let a=1;this.nodeNamesUsed[s];++a)s=r+"_"+a;return this.nodeNamesUsed[s]=!0,s}loadGeometries(i){const r=this,s=this.extensions,a=this.primitiveCache;function c(h){return s[se.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(h,r).then(function(m){return Tr(m,h,r)})}const u=[];for(let h=0,m=i.length;h<m;h++){const _=i[h],y=Oa(_),w=a[y];if(w)u.push(w.promise);else{let x;_.extensions&&_.extensions[se.KHR_DRACO_MESH_COMPRESSION]?x=c(_):x=Tr(new f.BufferGeometry,_,r),a[y]={primitive:_,promise:x},u.push(x)}}return Promise.all(u)}loadMesh(i){const r=this,s=this.json,a=this.extensions,c=s.meshes[i],u=c.primitives,h=[];for(let m=0,_=u.length;m<_;m++){const y=u[m].material===void 0?Ia(this.cache):this.getDependency("material",u[m].material);h.push(y)}return h.push(r.loadGeometries(u)),Promise.all(h).then(function(m){const _=m.slice(0,m.length-1),y=m[m.length-1],w=[];for(let k=0,E=y.length;k<E;k++){const I=y[k],O=u[k];let G;const z=_[k];if(O.mode===ht.TRIANGLES||O.mode===ht.TRIANGLE_STRIP||O.mode===ht.TRIANGLE_FAN||O.mode===void 0)G=c.isSkinnedMesh===!0?new f.SkinnedMesh(I,z):new f.Mesh(I,z),G.isSkinnedMesh===!0&&!G.geometry.attributes.skinWeight.normalized&&G.normalizeSkinWeights(),O.mode===ht.TRIANGLE_STRIP?G.geometry=Or(G.geometry,f.TriangleStripDrawMode):O.mode===ht.TRIANGLE_FAN&&(G.geometry=Or(G.geometry,f.TriangleFanDrawMode));else if(O.mode===ht.LINES)G=new f.LineSegments(I,z);else if(O.mode===ht.LINE_STRIP)G=new f.Line(I,z);else if(O.mode===ht.LINE_LOOP)G=new f.LineLoop(I,z);else if(O.mode===ht.POINTS)G=new f.Points(I,z);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+O.mode);Object.keys(G.geometry.morphAttributes).length>0&&Ta(G,c),G.name=r.createUniqueName(c.name||"mesh_"+i),Ft(G,c),O.extensions&&jn(a,G,O),r.assignFinalMaterial(G),w.push(G)}for(let k=0,E=w.length;k<E;k++)r.associations.set(w[k],{meshes:i,primitives:k});if(w.length===1)return w[0];const x=new f.Group;r.associations.set(x,{meshes:i});for(let k=0,E=w.length;k<E;k++)x.add(w[k]);return x})}loadCamera(i){let r;const s=this.json.cameras[i],a=s[s.type];if(!a){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return s.type==="perspective"?r=new f.PerspectiveCamera(f.MathUtils.radToDeg(a.yfov),a.aspectRatio||1,a.znear||1,a.zfar||2e6):s.type==="orthographic"&&(r=new f.OrthographicCamera(-a.xmag,a.xmag,a.ymag,-a.ymag,a.znear,a.zfar)),s.name&&(r.name=this.createUniqueName(s.name)),Ft(r,s),Promise.resolve(r)}loadSkin(i){const r=this.json.skins[i],s={joints:r.joints};return r.inverseBindMatrices===void 0?Promise.resolve(s):this.getDependency("accessor",r.inverseBindMatrices).then(function(a){return s.inverseBindMatrices=a,s})}loadAnimation(i){const s=this.json.animations[i],a=[],c=[],u=[],h=[],m=[];for(let _=0,y=s.channels.length;_<y;_++){const w=s.channels[_],x=s.samplers[w.sampler],k=w.target,E=k.node,I=s.parameters!==void 0?s.parameters[x.input]:x.input,O=s.parameters!==void 0?s.parameters[x.output]:x.output;a.push(this.getDependency("node",E)),c.push(this.getDependency("accessor",I)),u.push(this.getDependency("accessor",O)),h.push(x),m.push(k)}return Promise.all([Promise.all(a),Promise.all(c),Promise.all(u),Promise.all(h),Promise.all(m)]).then(function(_){const y=_[0],w=_[1],x=_[2],k=_[3],E=_[4],I=[];for(let G=0,z=y.length;G<z;G++){const B=y[G],N=w[G],Q=x[G],$=k[G],j=E[G];if(B===void 0)continue;B.updateMatrix();let F;switch(Pt[j.path]){case Pt.weights:F=f.NumberKeyframeTrack;break;case Pt.rotation:F=f.QuaternionKeyframeTrack;break;case Pt.position:case Pt.scale:default:F=f.VectorKeyframeTrack;break}const X=B.name?B.name:B.uuid,Y=$.interpolation!==void 0?Va[$.interpolation]:f.InterpolateLinear,Z=[];Pt[j.path]===Pt.weights?B.traverse(function(ge){ge.morphTargetInfluences&&Z.push(ge.name?ge.name:ge.uuid)}):Z.push(X);let ue=Q.array;if(Q.normalized){const ge=os(ue.constructor),pe=new Float32Array(ue.length);for(let me=0,he=ue.length;me<he;me++)pe[me]=ue[me]*ge;ue=pe}for(let ge=0,pe=Z.length;ge<pe;ge++){const me=new F(Z[ge]+"."+Pt[j.path],N.array,ue,Y);$.interpolation==="CUBICSPLINE"&&(me.createInterpolant=function(te){const q=this instanceof f.QuaternionKeyframeTrack?Aa:Sr;return new q(this.times,this.values,this.getValueSize()/3,te)},me.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0),I.push(me)}}const O=s.name?s.name:"animation_"+i;return new f.AnimationClip(O,void 0,I)})}createNodeMesh(i){const r=this.json,s=this,a=r.nodes[i];return a.mesh===void 0?null:s.getDependency("mesh",a.mesh).then(function(c){const u=s._getNodeRef(s.meshCache,a.mesh,c);return a.weights!==void 0&&u.traverse(function(h){if(h.isMesh)for(let m=0,_=a.weights.length;m<_;m++)h.morphTargetInfluences[m]=a.weights[m]}),u})}loadNode(i){const r=this.json,s=this.extensions,a=this,c=r.nodes[i],u=c.name?a.createUniqueName(c.name):"";return function(){const h=[],m=a._invokeOne(function(_){return _.createNodeMesh&&_.createNodeMesh(i)});return m&&h.push(m),c.camera!==void 0&&h.push(a.getDependency("camera",c.camera).then(function(_){return a._getNodeRef(a.cameraCache,c.camera,_)})),a._invokeAll(function(_){return _.createNodeAttachment&&_.createNodeAttachment(i)}).forEach(function(_){h.push(_)}),Promise.all(h)}().then(function(h){let m;if(c.isBone===!0?m=new f.Bone:h.length>1?m=new f.Group:h.length===1?m=h[0]:m=new f.Object3D,m!==h[0])for(let _=0,y=h.length;_<y;_++)m.add(h[_]);if(c.name&&(m.userData.name=c.name,m.name=u),Ft(m,c),c.extensions&&jn(s,m,c),c.matrix!==void 0){const _=new f.Matrix4;_.fromArray(c.matrix),m.applyMatrix4(_)}else c.translation!==void 0&&m.position.fromArray(c.translation),c.rotation!==void 0&&m.quaternion.fromArray(c.rotation),c.scale!==void 0&&m.scale.fromArray(c.scale);return a.associations.has(m)||a.associations.set(m,{}),a.associations.get(m).nodes=i,m})}loadScene(i){const r=this.json,s=this.extensions,a=this.json.scenes[i],c=this,u=new f.Group;a.name&&(u.name=c.createUniqueName(a.name)),Ft(u,a),a.extensions&&jn(s,u,a);const h=a.nodes||[],m=[];for(let _=0,y=h.length;_<y;_++)m.push(Dr(h[_],u,r,c));return Promise.all(m).then(function(){const _=y=>{const w=new Map;for(const[x,k]of c.associations)(x instanceof f.Material||x instanceof f.Texture)&&w.set(x,k);return y.traverse(x=>{const k=c.associations.get(x);k!=null&&w.set(x,k)}),w};return c.associations=_(u),u})}}function Dr(g,i,r,s){const a=r.nodes[g];return s.getDependency("node",g).then(function(c){if(a.skin===void 0)return c;let u;return s.getDependency("skin",a.skin).then(function(h){u=h;const m=[];for(let _=0,y=u.joints.length;_<y;_++)m.push(s.getDependency("node",u.joints[_]));return Promise.all(m)}).then(function(h){return c.traverse(function(m){if(!m.isMesh)return;const _=[],y=[];for(let w=0,x=h.length;w<x;w++){const k=h[w];if(k){_.push(k);const E=new f.Matrix4;u.inverseBindMatrices!==void 0&&E.fromArray(u.inverseBindMatrices.array,w*16),y.push(E)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',u.joints[w])}m.bind(new f.Skeleton(_,y),m.matrixWorld)}),c})}).then(function(c){i.add(c);const u=[];if(a.children){const h=a.children;for(let m=0,_=h.length;m<_;m++){const y=h[m];u.push(Dr(y,c,r,s))}}return Promise.all(u)})}function Na(g,i,r){const s=i.attributes,a=new f.Box3;if(s.POSITION!==void 0){const h=r.json.accessors[s.POSITION],m=h.min,_=h.max;if(m!==void 0&&_!==void 0){if(a.set(new f.Vector3(m[0],m[1],m[2]),new f.Vector3(_[0],_[1],_[2])),h.normalized){const y=os(Fn[h.componentType]);a.min.multiplyScalar(y),a.max.multiplyScalar(y)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const c=i.targets;if(c!==void 0){const h=new f.Vector3,m=new f.Vector3;for(let _=0,y=c.length;_<y;_++){const w=c[_];if(w.POSITION!==void 0){const x=r.json.accessors[w.POSITION],k=x.min,E=x.max;if(k!==void 0&&E!==void 0){if(m.setX(Math.max(Math.abs(k[0]),Math.abs(E[0]))),m.setY(Math.max(Math.abs(k[1]),Math.abs(E[1]))),m.setZ(Math.max(Math.abs(k[2]),Math.abs(E[2]))),x.normalized){const I=os(Fn[x.componentType]);m.multiplyScalar(I)}h.max(m)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}a.expandByVector(h)}g.boundingBox=a;const u=new f.Sphere;a.getCenter(u.center),u.radius=a.min.distanceTo(a.max)/2,g.boundingSphere=u}function Tr(g,i,r){const s=i.attributes,a=[];function c(u,h){return r.getDependency("accessor",u).then(function(m){g.setAttribute(h,m)})}for(const u in s){const h=ss[u]||u.toLowerCase();h in g.attributes||a.push(c(s[u],h))}if(i.indices!==void 0&&!g.index){const u=r.getDependency("accessor",i.indices).then(function(h){g.setIndex(h)});a.push(u)}return Ft(g,i),Na(g,i,r),Promise.all(a).then(function(){return i.targets!==void 0?Da(g,i.targets,r):g})}function Or(g,i){let r=g.getIndex();if(r===null){const u=[],h=g.getAttribute("position");if(h!==void 0){for(let m=0;m<h.count;m++)u.push(m);g.setIndex(u),r=g.getIndex()}else return console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),g}const s=r.count-2,a=[];if(i===f.TriangleFanDrawMode)for(let u=1;u<=s;u++)a.push(r.getX(0)),a.push(r.getX(u)),a.push(r.getX(u+1));else for(let u=0;u<s;u++)u%2===0?(a.push(r.getX(u)),a.push(r.getX(u+1)),a.push(r.getX(u+2))):(a.push(r.getX(u+2)),a.push(r.getX(u+1)),a.push(r.getX(u)));a.length/3!==s&&console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const c=g.clone();return c.setIndex(a),c}class Fa extends f.ExtrudeGeometry{constructor(i,r={}){const{bevelEnabled:s=!1,bevelSize:a=8,bevelThickness:c=10,font:u,height:h=50,size:m=100,lineHeight:_=1,letterSpacing:y=0,...w}=r;if(u===void 0)super();else{const x=u.generateShapes(i,m,{lineHeight:_,letterSpacing:y});super(x,{...w,bevelEnabled:s,bevelSize:a,bevelThickness:c,depth:h})}this.type="TextGeometry"}}function Er(g,i,r){const s=r.length-g-1;if(i>=r[s])return s-1;if(i<=r[g])return g;let a=g,c=s,u=Math.floor((a+c)/2);for(;i<r[u]||i>=r[u+1];)i<r[u]?c=u:a=u,u=Math.floor((a+c)/2);return u}function ja(g,i,r,s){const a=[],c=[],u=[];a[0]=1;for(let h=1;h<=r;++h){c[h]=i-s[g+1-h],u[h]=s[g+h]-i;let m=0;for(let _=0;_<h;++_){const y=u[_+1],w=c[h-_],x=a[_]/(y+w);a[_]=m+y*x,m=w*x}a[h]=m}return a}function za(g,i,r,s){const a=Er(g,s,i),c=ja(a,s,g,i),u=new f.Vector4(0,0,0,0);for(let h=0;h<=g;++h){const m=r[a-g+h],_=c[h],y=m.w*_;u.x+=m.x*y,u.y+=m.y*y,u.z+=m.z*y,u.w+=m.w*_}return u}function Ua(g,i,r,s,a){const c=[];for(let x=0;x<=r;++x)c[x]=0;const u=[];for(let x=0;x<=s;++x)u[x]=c.slice(0);const h=[];for(let x=0;x<=r;++x)h[x]=c.slice(0);h[0][0]=1;const m=c.slice(0),_=c.slice(0);for(let x=1;x<=r;++x){m[x]=i-a[g+1-x],_[x]=a[g+x]-i;let k=0;for(let E=0;E<x;++E){const I=_[E+1],O=m[x-E];h[x][E]=I+O;const G=h[E][x-1]/h[x][E];h[E][x]=k+I*G,k=O*G}h[x][x]=k}for(let x=0;x<=r;++x)u[0][x]=h[x][r];for(let x=0;x<=r;++x){let k=0,E=1;const I=[];for(let O=0;O<=r;++O)I[O]=c.slice(0);I[0][0]=1;for(let O=1;O<=s;++O){let G=0;const z=x-O,B=r-O;x>=O&&(I[E][0]=I[k][0]/h[B+1][z],G=I[E][0]*h[z][B]);const N=z>=-1?1:-z,Q=x-1<=B?O-1:r-x;for(let $=N;$<=Q;++$)I[E][$]=(I[k][$]-I[k][$-1])/h[B+1][z+$],G+=I[E][$]*h[z+$][B];x<=B&&(I[E][O]=-I[k][O-1]/h[B+1][x],G+=I[E][O]*h[x][B]),u[O][x]=G;var y=k;k=E,E=y}}var w=r;for(let x=1;x<=s;++x){for(let k=0;k<=r;++k)u[x][k]*=w;w*=r-x}return u}function Ga(g,i,r,s,a){const c=a<g?a:g,u=[],h=Er(g,s,i),m=Ua(h,s,g,c,i),_=[];for(let w=0;w<r.length;++w){var y=r[w].clone();const x=y.w;y.x*=x,y.y*=x,y.z*=x,_[w]=y}for(let w=0;w<=c;++w){var y=_[h-g].clone().multiplyScalar(m[w][0]);for(let k=1;k<=g;++k)y.add(_[h-g+k].clone().multiplyScalar(m[w][k]));u[w]=y}for(let w=c+1;w<=a+1;++w)u[w]=new f.Vector4(0,0,0);return u}function Ra(g,i){let r=1;for(let a=2;a<=g;++a)r*=a;let s=1;for(let a=2;a<=i;++a)s*=a;for(let a=2;a<=g-i;++a)s*=a;return r/s}function Ka(g){const i=g.length,r=[],s=[];for(let c=0;c<i;++c){const u=g[c];r[c]=new f.Vector3(u.x,u.y,u.z),s[c]=u.w}const a=[];for(let c=0;c<i;++c){const u=r[c].clone();for(let h=1;h<=c;++h)u.sub(a[c-h].clone().multiplyScalar(Ra(c,h)*s[h]));a[c]=u.divideScalar(s[0])}return a}function $a(g,i,r,s,a){const c=Ga(g,i,r,s,a);return Ka(c)}class Br extends f.Curve{constructor(i,r,s,a,c){super(),this.degree=i,this.knots=r,this.controlPoints=[],this.startKnot=a||0,this.endKnot=c||this.knots.length-1;for(let u=0;u<s.length;++u){const h=s[u];this.controlPoints[u]=new f.Vector4(h.x,h.y,h.z,h.w)}}getPoint(i,r){const s=r||new f.Vector3,a=this.knots[this.startKnot]+i*(this.knots[this.endKnot]-this.knots[this.startKnot]),c=za(this.degree,this.knots,this.controlPoints,a);return c.w!=1&&c.divideScalar(c.w),s.set(c.x,c.y,c.z)}getTangent(i,r){const s=r||new f.Vector3,a=this.knots[0]+i*(this.knots[this.knots.length-1]-this.knots[0]),c=$a(this.degree,this.knots,this.controlPoints,a,1);return s.copy(c[1]).normalize(),s}}let re,ke,Ue;class Xa extends f.Loader{constructor(i){super(i)}load(i,r,s,a){const c=this,u=c.path===""?f.LoaderUtils.extractUrlBase(i):c.path,h=new f.FileLoader(this.manager);h.setPath(c.path),h.setResponseType("arraybuffer"),h.setRequestHeader(c.requestHeader),h.setWithCredentials(c.withCredentials),h.load(i,function(m){try{r(c.parse(m,u))}catch(_){a?a(_):console.error(_),c.manager.itemError(i)}},s,a)}parse(i,r){if(Ja(i))re=new Wa().parse(i);else{const a=Gr(i);if(!Ha(a))throw new Error("THREE.FBXLoader: Unknown format.");if(jr(a)<7e3)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+jr(a));re=new Za().parse(a)}const s=new f.TextureLoader(this.manager).setPath(this.resourcePath||r).setCrossOrigin(this.crossOrigin);return new Ya(s,this.manager).parse(re)}}class Ya{constructor(i,r){this.textureLoader=i,this.manager=r}parse(){ke=this.parseConnections();const i=this.parseImages(),r=this.parseTextures(i),s=this.parseMaterials(r),a=this.parseDeformers(),c=new qa().parse(a);return this.parseScene(a,c,s),Ue}parseConnections(){const i=new Map;return"Connections"in re&&re.Connections.connections.forEach(function(s){const a=s[0],c=s[1],u=s[2];i.has(a)||i.set(a,{parents:[],children:[]});const h={ID:c,relationship:u};i.get(a).parents.push(h),i.has(c)||i.set(c,{parents:[],children:[]});const m={ID:a,relationship:u};i.get(c).children.push(m)}),i}parseImages(){const i={},r={};if("Video"in re.Objects){const s=re.Objects.Video;for(const a in s){const c=s[a],u=parseInt(a);if(i[u]=c.RelativeFilename||c.Filename,"Content"in c){const h=c.Content instanceof ArrayBuffer&&c.Content.byteLength>0,m=typeof c.Content=="string"&&c.Content!=="";if(h||m){const _=this.parseImage(s[a]);r[c.RelativeFilename||c.Filename]=_}}}}for(const s in i){const a=i[s];r[a]!==void 0?i[s]=r[a]:i[s]=i[s].split("\\").pop()}return i}parseImage(i){const r=i.Content,s=i.RelativeFilename||i.Filename,a=s.slice(s.lastIndexOf(".")+1).toLowerCase();let c;switch(a){case"bmp":c="image/bmp";break;case"jpg":case"jpeg":c="image/jpeg";break;case"png":c="image/png";break;case"tif":c="image/tiff";break;case"tga":this.manager.getHandler(".tga")===null&&console.warn("FBXLoader: TGA loader not found, skipping ",s),c="image/tga";break;default:console.warn('FBXLoader: Image type "'+a+'" is not supported.');return}if(typeof r=="string")return"data:"+c+";base64,"+r;{const u=new Uint8Array(r);return window.URL.createObjectURL(new Blob([u],{type:c}))}}parseTextures(i){const r=new Map;if("Texture"in re.Objects){const s=re.Objects.Texture;for(const a in s){const c=this.parseTexture(s[a],i);r.set(parseInt(a),c)}}return r}parseTexture(i,r){const s=this.loadTexture(i,r);s.ID=i.id,s.name=i.attrName;const a=i.WrapModeU,c=i.WrapModeV,u=a!==void 0?a.value:0,h=c!==void 0?c.value:0;if(s.wrapS=u===0?f.RepeatWrapping:f.ClampToEdgeWrapping,s.wrapT=h===0?f.RepeatWrapping:f.ClampToEdgeWrapping,"Scaling"in i){const m=i.Scaling.value;s.repeat.x=m[0],s.repeat.y=m[1]}return s}loadTexture(i,r){let s;const a=this.textureLoader.path,c=ke.get(i.id).children;c!==void 0&&c.length>0&&r[c[0].ID]!==void 0&&(s=r[c[0].ID],(s.indexOf("blob:")===0||s.indexOf("data:")===0)&&this.textureLoader.setPath(void 0));let u;const h=i.FileName.slice(-3).toLowerCase();if(h==="tga"){const m=this.manager.getHandler(".tga");m===null?(console.warn("FBXLoader: TGA loader not found, creating placeholder texture for",i.RelativeFilename),u=new f.Texture):(m.setPath(this.textureLoader.path),u=m.load(s))}else h==="psd"?(console.warn("FBXLoader: PSD textures are not supported, creating placeholder texture for",i.RelativeFilename),u=new f.Texture):u=this.textureLoader.load(s);return this.textureLoader.setPath(a),u}parseMaterials(i){const r=new Map;if("Material"in re.Objects){const s=re.Objects.Material;for(const a in s){const c=this.parseMaterial(s[a],i);c!==null&&r.set(parseInt(a),c)}}return r}parseMaterial(i,r){const s=i.id,a=i.attrName;let c=i.ShadingModel;if(typeof c=="object"&&(c=c.value),!ke.has(s))return null;const u=this.parseParameters(i,r,s);let h;switch(c.toLowerCase()){case"phong":h=new f.MeshPhongMaterial;break;case"lambert":h=new f.MeshLambertMaterial;break;default:console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.',c),h=new f.MeshPhongMaterial;break}return h.setValues(u),h.name=a,h}parseParameters(i,r,s){const a={};i.BumpFactor&&(a.bumpScale=i.BumpFactor.value),i.Diffuse?a.color=new f.Color().fromArray(i.Diffuse.value):i.DiffuseColor&&(i.DiffuseColor.type==="Color"||i.DiffuseColor.type==="ColorRGB")&&(a.color=new f.Color().fromArray(i.DiffuseColor.value)),i.DisplacementFactor&&(a.displacementScale=i.DisplacementFactor.value),i.Emissive?a.emissive=new f.Color().fromArray(i.Emissive.value):i.EmissiveColor&&(i.EmissiveColor.type==="Color"||i.EmissiveColor.type==="ColorRGB")&&(a.emissive=new f.Color().fromArray(i.EmissiveColor.value)),i.EmissiveFactor&&(a.emissiveIntensity=parseFloat(i.EmissiveFactor.value)),i.Opacity&&(a.opacity=parseFloat(i.Opacity.value)),a.opacity<1&&(a.transparent=!0),i.ReflectionFactor&&(a.reflectivity=i.ReflectionFactor.value),i.Shininess&&(a.shininess=i.Shininess.value),i.Specular?a.specular=new f.Color().fromArray(i.Specular.value):i.SpecularColor&&i.SpecularColor.type==="Color"&&(a.specular=new f.Color().fromArray(i.SpecularColor.value));const c=this;return ke.get(s).children.forEach(function(u){const h=u.relationship;switch(h){case"Bump":a.bumpMap=c.getTexture(r,u.ID);break;case"Maya|TEX_ao_map":a.aoMap=c.getTexture(r,u.ID);break;case"DiffuseColor":case"Maya|TEX_color_map":a.map=c.getTexture(r,u.ID),a.map!==void 0&&(a.map.encoding=f.sRGBEncoding);break;case"DisplacementColor":a.displacementMap=c.getTexture(r,u.ID);break;case"EmissiveColor":a.emissiveMap=c.getTexture(r,u.ID),a.emissiveMap!==void 0&&(a.emissiveMap.encoding=f.sRGBEncoding);break;case"NormalMap":case"Maya|TEX_normal_map":a.normalMap=c.getTexture(r,u.ID);break;case"ReflectionColor":a.envMap=c.getTexture(r,u.ID),a.envMap!==void 0&&(a.envMap.mapping=f.EquirectangularReflectionMapping,a.envMap.encoding=f.sRGBEncoding);break;case"SpecularColor":a.specularMap=c.getTexture(r,u.ID),a.specularMap!==void 0&&(a.specularMap.encoding=f.sRGBEncoding);break;case"TransparentColor":case"TransparencyFactor":a.alphaMap=c.getTexture(r,u.ID),a.transparent=!0;break;case"AmbientColor":case"ShininessExponent":case"SpecularFactor":case"VectorDisplacementColor":default:console.warn("THREE.FBXLoader: %s map is not supported in three.js, skipping texture.",h);break}}),a}getTexture(i,r){return"LayeredTexture"in re.Objects&&r in re.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),r=ke.get(r).children[0].ID),i.get(r)}parseDeformers(){const i={},r={};if("Deformer"in re.Objects){const s=re.Objects.Deformer;for(const a in s){const c=s[a],u=ke.get(parseInt(a));if(c.attrType==="Skin"){const h=this.parseSkeleton(u,s);h.ID=a,u.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),h.geometryID=u.parents[0].ID,i[a]=h}else if(c.attrType==="BlendShape"){const h={id:a};h.rawTargets=this.parseMorphTargets(u,s),h.id=a,u.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),r[a]=h}}}return{skeletons:i,morphTargets:r}}parseSkeleton(i,r){const s=[];return i.children.forEach(function(a){const c=r[a.ID];if(c.attrType!=="Cluster")return;const u={ID:a.ID,indices:[],weights:[],transformLink:new f.Matrix4().fromArray(c.TransformLink.a)};"Indexes"in c&&(u.indices=c.Indexes.a,u.weights=c.Weights.a),s.push(u)}),{rawBones:s,bones:[]}}parseMorphTargets(i,r){const s=[];for(let a=0;a<i.children.length;a++){const c=i.children[a],u=r[c.ID],h={name:u.attrName,initialWeight:u.DeformPercent,id:u.id,fullWeights:u.FullWeights.a};if(u.attrType!=="BlendShapeChannel")return;h.geoID=ke.get(parseInt(c.ID)).children.filter(function(m){return m.relationship===void 0})[0].ID,s.push(h)}return s}parseScene(i,r,s){Ue=new f.Group;const a=this.parseModels(i.skeletons,r,s),c=re.Objects.Model,u=this;a.forEach(function(m){const _=c[m.ID];u.setLookAtProperties(m,_),ke.get(m.ID).parents.forEach(function(w){const x=a.get(w.ID);x!==void 0&&x.add(m)}),m.parent===null&&Ue.add(m)}),this.bindSkeleton(i.skeletons,r,a),this.createAmbientLight(),Ue.traverse(function(m){if(m.userData.transformData){m.parent&&(m.userData.transformData.parentMatrix=m.parent.matrix,m.userData.transformData.parentMatrixWorld=m.parent.matrixWorld);const _=zr(m.userData.transformData);m.applyMatrix4(_),m.updateWorldMatrix()}});const h=new Qa().parse();Ue.children.length===1&&Ue.children[0].isGroup&&(Ue.children[0].animations=h,Ue=Ue.children[0]),Ue.animations=h}parseModels(i,r,s){const a=new Map,c=re.Objects.Model;for(const u in c){const h=parseInt(u),m=c[u],_=ke.get(h);let y=this.buildSkeleton(_,i,h,m.attrName);if(!y){switch(m.attrType){case"Camera":y=this.createCamera(_);break;case"Light":y=this.createLight(_);break;case"Mesh":y=this.createMesh(_,r,s);break;case"NurbsCurve":y=this.createCurve(_,r);break;case"LimbNode":case"Root":y=new f.Bone;break;case"Null":default:y=new f.Group;break}y.name=m.attrName?f.PropertyBinding.sanitizeNodeName(m.attrName):"",y.ID=h}this.getTransformData(y,m),a.set(h,y)}return a}buildSkeleton(i,r,s,a){let c=null;return i.parents.forEach(function(u){for(const h in r){const m=r[h];m.rawBones.forEach(function(_,y){if(_.ID===u.ID){const w=c;c=new f.Bone,c.matrixWorld.copy(_.transformLink),c.name=a?f.PropertyBinding.sanitizeNodeName(a):"",c.ID=s,m.bones[y]=c,w!==null&&c.add(w)}})}}),c}createCamera(i){let r,s;if(i.children.forEach(function(a){const c=re.Objects.NodeAttribute[a.ID];c!==void 0&&(s=c)}),s===void 0)r=new f.Object3D;else{let a=0;s.CameraProjectionType!==void 0&&s.CameraProjectionType.value===1&&(a=1);let c=1;s.NearPlane!==void 0&&(c=s.NearPlane.value/1e3);let u=1e3;s.FarPlane!==void 0&&(u=s.FarPlane.value/1e3);let h=window.innerWidth,m=window.innerHeight;s.AspectWidth!==void 0&&s.AspectHeight!==void 0&&(h=s.AspectWidth.value,m=s.AspectHeight.value);const _=h/m;let y=45;s.FieldOfView!==void 0&&(y=s.FieldOfView.value);const w=s.FocalLength?s.FocalLength.value:null;switch(a){case 0:r=new f.PerspectiveCamera(y,_,c,u),w!==null&&r.setFocalLength(w);break;case 1:r=new f.OrthographicCamera(-h/2,h/2,m/2,-m/2,c,u);break;default:console.warn("THREE.FBXLoader: Unknown camera type "+a+"."),r=new f.Object3D;break}}return r}createLight(i){let r,s;if(i.children.forEach(function(a){const c=re.Objects.NodeAttribute[a.ID];c!==void 0&&(s=c)}),s===void 0)r=new f.Object3D;else{let a;s.LightType===void 0?a=0:a=s.LightType.value;let c=16777215;s.Color!==void 0&&(c=new f.Color().fromArray(s.Color.value));let u=s.Intensity===void 0?1:s.Intensity.value/100;s.CastLightOnObject!==void 0&&s.CastLightOnObject.value===0&&(u=0);let h=0;s.FarAttenuationEnd!==void 0&&(s.EnableFarAttenuation!==void 0&&s.EnableFarAttenuation.value===0?h=0:h=s.FarAttenuationEnd.value);const m=1;switch(a){case 0:r=new f.PointLight(c,u,h,m);break;case 1:r=new f.DirectionalLight(c,u);break;case 2:let _=Math.PI/3;s.InnerAngle!==void 0&&(_=f.MathUtils.degToRad(s.InnerAngle.value));let y=0;s.OuterAngle!==void 0&&(y=f.MathUtils.degToRad(s.OuterAngle.value),y=Math.max(y,1)),r=new f.SpotLight(c,u,h,_,y,m);break;default:console.warn("THREE.FBXLoader: Unknown light type "+s.LightType.value+", defaulting to a PointLight."),r=new f.PointLight(c,u);break}s.CastShadows!==void 0&&s.CastShadows.value===1&&(r.castShadow=!0)}return r}createMesh(i,r,s){let a,c=null,u=null;const h=[];return i.children.forEach(function(m){r.has(m.ID)&&(c=r.get(m.ID)),s.has(m.ID)&&h.push(s.get(m.ID))}),h.length>1?u=h:h.length>0?u=h[0]:(u=new f.MeshPhongMaterial({color:13421772}),h.push(u)),"color"in c.attributes&&h.forEach(function(m){m.vertexColors=!0}),c.FBX_Deformer?(a=new f.SkinnedMesh(c,u),a.normalizeSkinWeights()):a=new f.Mesh(c,u),a}createCurve(i,r){const s=i.children.reduce(function(c,u){return r.has(u.ID)&&(c=r.get(u.ID)),c},null),a=new f.LineBasicMaterial({color:3342591,linewidth:1});return new f.Line(s,a)}getTransformData(i,r){const s={};"InheritType"in r&&(s.inheritType=parseInt(r.InheritType.value)),"RotationOrder"in r?s.eulerOrder=Ur(r.RotationOrder.value):s.eulerOrder="ZYX","Lcl_Translation"in r&&(s.translation=r.Lcl_Translation.value),"PreRotation"in r&&(s.preRotation=r.PreRotation.value),"Lcl_Rotation"in r&&(s.rotation=r.Lcl_Rotation.value),"PostRotation"in r&&(s.postRotation=r.PostRotation.value),"Lcl_Scaling"in r&&(s.scale=r.Lcl_Scaling.value),"ScalingOffset"in r&&(s.scalingOffset=r.ScalingOffset.value),"ScalingPivot"in r&&(s.scalingPivot=r.ScalingPivot.value),"RotationOffset"in r&&(s.rotationOffset=r.RotationOffset.value),"RotationPivot"in r&&(s.rotationPivot=r.RotationPivot.value),i.userData.transformData=s}setLookAtProperties(i,r){"LookAtProperty"in r&&ke.get(i.ID).children.forEach(function(a){if(a.relationship==="LookAtProperty"){const c=re.Objects.Model[a.ID];if("Lcl_Translation"in c){const u=c.Lcl_Translation.value;i.target!==void 0?(i.target.position.fromArray(u),Ue.add(i.target)):i.lookAt(new f.Vector3().fromArray(u))}}})}bindSkeleton(i,r,s){const a=this.parsePoseNodes();for(const c in i){const u=i[c];ke.get(parseInt(u.ID)).parents.forEach(function(m){if(r.has(m.ID)){const _=m.ID;ke.get(_).parents.forEach(function(w){s.has(w.ID)&&s.get(w.ID).bind(new f.Skeleton(u.bones),a[w.ID])})}})}}parsePoseNodes(){const i={};if("Pose"in re.Objects){const r=re.Objects.Pose;for(const s in r)if(r[s].attrType==="BindPose"&&r[s].NbPoseNodes>0){const a=r[s].PoseNode;Array.isArray(a)?a.forEach(function(c){i[c.Node]=new f.Matrix4().fromArray(c.Matrix.a)}):i[a.Node]=new f.Matrix4().fromArray(a.Matrix.a)}}return i}createAmbientLight(){if("GlobalSettings"in re&&"AmbientColor"in re.GlobalSettings){const i=re.GlobalSettings.AmbientColor.value,r=i[0],s=i[1],a=i[2];if(r!==0||s!==0||a!==0){const c=new f.Color(r,s,a);Ue.add(new f.AmbientLight(c,1))}}}}class qa{parse(i){const r=new Map;if("Geometry"in re.Objects){const s=re.Objects.Geometry;for(const a in s){const c=ke.get(parseInt(a)),u=this.parseGeometry(c,s[a],i);r.set(parseInt(a),u)}}return r}parseGeometry(i,r,s){switch(r.attrType){case"Mesh":return this.parseMeshGeometry(i,r,s);case"NurbsCurve":return this.parseNurbsGeometry(r)}}parseMeshGeometry(i,r,s){const a=s.skeletons,c=[],u=i.parents.map(function(w){return re.Objects.Model[w.ID]});if(u.length===0)return;const h=i.children.reduce(function(w,x){return a[x.ID]!==void 0&&(w=a[x.ID]),w},null);i.children.forEach(function(w){s.morphTargets[w.ID]!==void 0&&c.push(s.morphTargets[w.ID])});const m=u[0],_={};"RotationOrder"in m&&(_.eulerOrder=Ur(m.RotationOrder.value)),"InheritType"in m&&(_.inheritType=parseInt(m.InheritType.value)),"GeometricTranslation"in m&&(_.translation=m.GeometricTranslation.value),"GeometricRotation"in m&&(_.rotation=m.GeometricRotation.value),"GeometricScaling"in m&&(_.scale=m.GeometricScaling.value);const y=zr(_);return this.genGeometry(r,h,c,y)}genGeometry(i,r,s,a){const c=new f.BufferGeometry;i.attrName&&(c.name=i.attrName);const u=this.parseGeoNode(i,r),h=this.genBuffers(u),m=new f.Float32BufferAttribute(h.vertex,3);if(m.applyMatrix4(a),c.setAttribute("position",m),h.colors.length>0&&c.setAttribute("color",new f.Float32BufferAttribute(h.colors,3)),r&&(c.setAttribute("skinIndex",new f.Uint16BufferAttribute(h.weightsIndices,4)),c.setAttribute("skinWeight",new f.Float32BufferAttribute(h.vertexWeights,4)),c.FBX_Deformer=r),h.normal.length>0){const _=new f.Matrix3().getNormalMatrix(a),y=new f.Float32BufferAttribute(h.normal,3);y.applyNormalMatrix(_),c.setAttribute("normal",y)}if(h.uvs.forEach(function(_,y){let w="uv"+(y+1).toString();y===0&&(w="uv"),c.setAttribute(w,new f.Float32BufferAttribute(h.uvs[y],2))}),u.material&&u.material.mappingType!=="AllSame"){let _=h.materialIndex[0],y=0;if(h.materialIndex.forEach(function(w,x){w!==_&&(c.addGroup(y,x-y,_),_=w,y=x)}),c.groups.length>0){const w=c.groups[c.groups.length-1],x=w.start+w.count;x!==h.materialIndex.length&&c.addGroup(x,h.materialIndex.length-x,_)}c.groups.length===0&&c.addGroup(0,h.materialIndex.length,h.materialIndex[0])}return this.addMorphTargets(c,i,s,a),c}parseGeoNode(i,r){const s={};if(s.vertexPositions=i.Vertices!==void 0?i.Vertices.a:[],s.vertexIndices=i.PolygonVertexIndex!==void 0?i.PolygonVertexIndex.a:[],i.LayerElementColor&&(s.color=this.parseVertexColors(i.LayerElementColor[0])),i.LayerElementMaterial&&(s.material=this.parseMaterialIndices(i.LayerElementMaterial[0])),i.LayerElementNormal&&(s.normal=this.parseNormals(i.LayerElementNormal[0])),i.LayerElementUV){s.uv=[];let a=0;for(;i.LayerElementUV[a];)i.LayerElementUV[a].UV&&s.uv.push(this.parseUVs(i.LayerElementUV[a])),a++}return s.weightTable={},r!==null&&(s.skeleton=r,r.rawBones.forEach(function(a,c){a.indices.forEach(function(u,h){s.weightTable[u]===void 0&&(s.weightTable[u]=[]),s.weightTable[u].push({id:c,weight:a.weights[h]})})})),s}genBuffers(i){const r={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]};let s=0,a=0,c=!1,u=[],h=[],m=[],_=[],y=[],w=[];const x=this;return i.vertexIndices.forEach(function(k,E){let I,O=!1;k<0&&(k=k^-1,O=!0);let G=[],z=[];if(u.push(k*3,k*3+1,k*3+2),i.color){const B=gi(E,s,k,i.color);m.push(B[0],B[1],B[2])}if(i.skeleton){if(i.weightTable[k]!==void 0&&i.weightTable[k].forEach(function(B){z.push(B.weight),G.push(B.id)}),z.length>4){c||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),c=!0);const B=[0,0,0,0],N=[0,0,0,0];z.forEach(function(Q,$){let j=Q,F=G[$];N.forEach(function(X,Y,Z){if(j>X){Z[Y]=j,j=X;const ue=B[Y];B[Y]=F,F=ue}})}),G=B,z=N}for(;z.length<4;)z.push(0),G.push(0);for(let B=0;B<4;++B)y.push(z[B]),w.push(G[B])}if(i.normal){const B=gi(E,s,k,i.normal);h.push(B[0],B[1],B[2])}i.material&&i.material.mappingType!=="AllSame"&&(I=gi(E,s,k,i.material)[0]),i.uv&&i.uv.forEach(function(B,N){const Q=gi(E,s,k,B);_[N]===void 0&&(_[N]=[]),_[N].push(Q[0]),_[N].push(Q[1])}),a++,O&&(x.genFace(r,i,u,I,h,m,_,y,w,a),s++,a=0,u=[],h=[],m=[],_=[],y=[],w=[])}),r}genFace(i,r,s,a,c,u,h,m,_,y){for(let w=2;w<y;w++)i.vertex.push(r.vertexPositions[s[0]]),i.vertex.push(r.vertexPositions[s[1]]),i.vertex.push(r.vertexPositions[s[2]]),i.vertex.push(r.vertexPositions[s[(w-1)*3]]),i.vertex.push(r.vertexPositions[s[(w-1)*3+1]]),i.vertex.push(r.vertexPositions[s[(w-1)*3+2]]),i.vertex.push(r.vertexPositions[s[w*3]]),i.vertex.push(r.vertexPositions[s[w*3+1]]),i.vertex.push(r.vertexPositions[s[w*3+2]]),r.skeleton&&(i.vertexWeights.push(m[0]),i.vertexWeights.push(m[1]),i.vertexWeights.push(m[2]),i.vertexWeights.push(m[3]),i.vertexWeights.push(m[(w-1)*4]),i.vertexWeights.push(m[(w-1)*4+1]),i.vertexWeights.push(m[(w-1)*4+2]),i.vertexWeights.push(m[(w-1)*4+3]),i.vertexWeights.push(m[w*4]),i.vertexWeights.push(m[w*4+1]),i.vertexWeights.push(m[w*4+2]),i.vertexWeights.push(m[w*4+3]),i.weightsIndices.push(_[0]),i.weightsIndices.push(_[1]),i.weightsIndices.push(_[2]),i.weightsIndices.push(_[3]),i.weightsIndices.push(_[(w-1)*4]),i.weightsIndices.push(_[(w-1)*4+1]),i.weightsIndices.push(_[(w-1)*4+2]),i.weightsIndices.push(_[(w-1)*4+3]),i.weightsIndices.push(_[w*4]),i.weightsIndices.push(_[w*4+1]),i.weightsIndices.push(_[w*4+2]),i.weightsIndices.push(_[w*4+3])),r.color&&(i.colors.push(u[0]),i.colors.push(u[1]),i.colors.push(u[2]),i.colors.push(u[(w-1)*3]),i.colors.push(u[(w-1)*3+1]),i.colors.push(u[(w-1)*3+2]),i.colors.push(u[w*3]),i.colors.push(u[w*3+1]),i.colors.push(u[w*3+2])),r.material&&r.material.mappingType!=="AllSame"&&(i.materialIndex.push(a),i.materialIndex.push(a),i.materialIndex.push(a)),r.normal&&(i.normal.push(c[0]),i.normal.push(c[1]),i.normal.push(c[2]),i.normal.push(c[(w-1)*3]),i.normal.push(c[(w-1)*3+1]),i.normal.push(c[(w-1)*3+2]),i.normal.push(c[w*3]),i.normal.push(c[w*3+1]),i.normal.push(c[w*3+2])),r.uv&&r.uv.forEach(function(x,k){i.uvs[k]===void 0&&(i.uvs[k]=[]),i.uvs[k].push(h[k][0]),i.uvs[k].push(h[k][1]),i.uvs[k].push(h[k][(w-1)*2]),i.uvs[k].push(h[k][(w-1)*2+1]),i.uvs[k].push(h[k][w*2]),i.uvs[k].push(h[k][w*2+1])})}addMorphTargets(i,r,s,a){if(s.length===0)return;i.morphTargetsRelative=!0,i.morphAttributes.position=[];const c=this;s.forEach(function(u){u.rawTargets.forEach(function(h){const m=re.Objects.Geometry[h.geoID];m!==void 0&&c.genMorphGeometry(i,r,m,a,h.name)})})}genMorphGeometry(i,r,s,a,c){const u=r.PolygonVertexIndex!==void 0?r.PolygonVertexIndex.a:[],h=s.Vertices!==void 0?s.Vertices.a:[],m=s.Indexes!==void 0?s.Indexes.a:[],_=i.attributes.position.count*3,y=new Float32Array(_);for(let E=0;E<m.length;E++){const I=m[E]*3;y[I]=h[E*3],y[I+1]=h[E*3+1],y[I+2]=h[E*3+2]}const w={vertexIndices:u,vertexPositions:y},x=this.genBuffers(w),k=new f.Float32BufferAttribute(x.vertex,3);k.name=c||s.attrName,k.applyMatrix4(a),i.morphAttributes.position.push(k)}parseNormals(i){const r=i.MappingInformationType,s=i.ReferenceInformationType,a=i.Normals.a;let c=[];return s==="IndexToDirect"&&("NormalIndex"in i?c=i.NormalIndex.a:"NormalsIndex"in i&&(c=i.NormalsIndex.a)),{dataSize:3,buffer:a,indices:c,mappingType:r,referenceType:s}}parseUVs(i){const r=i.MappingInformationType,s=i.ReferenceInformationType,a=i.UV.a;let c=[];return s==="IndexToDirect"&&(c=i.UVIndex.a),{dataSize:2,buffer:a,indices:c,mappingType:r,referenceType:s}}parseVertexColors(i){const r=i.MappingInformationType,s=i.ReferenceInformationType,a=i.Colors.a;let c=[];return s==="IndexToDirect"&&(c=i.ColorIndex.a),{dataSize:4,buffer:a,indices:c,mappingType:r,referenceType:s}}parseMaterialIndices(i){const r=i.MappingInformationType,s=i.ReferenceInformationType;if(r==="NoMappingInformation")return{dataSize:1,buffer:[0],indices:[0],mappingType:"AllSame",referenceType:s};const a=i.Materials.a,c=[];for(let u=0;u<a.length;++u)c.push(u);return{dataSize:1,buffer:a,indices:c,mappingType:r,referenceType:s}}parseNurbsGeometry(i){if(Br===void 0)return console.error("THREE.FBXLoader: The loader relies on NURBSCurve for any nurbs present in the model. Nurbs will show up as empty geometry."),new f.BufferGeometry;const r=parseInt(i.Order);if(isNaN(r))return console.error("THREE.FBXLoader: Invalid Order %s given for geometry ID: %s",i.Order,i.id),new f.BufferGeometry;const s=r-1,a=i.KnotVector.a,c=[],u=i.Points.a;for(let w=0,x=u.length;w<x;w+=4)c.push(new f.Vector4().fromArray(u,w));let h,m;if(i.Form==="Closed")c.push(c[0]);else if(i.Form==="Periodic"){h=s,m=a.length-1-h;for(let w=0;w<s;++w)c.push(c[w])}const y=new Br(s,a,c,h,m).getPoints(c.length*12);return new f.BufferGeometry().setFromPoints(y)}}class Qa{parse(){const i=[],r=this.parseClips();if(r!==void 0)for(const s in r){const a=r[s],c=this.addClip(a);i.push(c)}return i}parseClips(){if(re.Objects.AnimationCurve===void 0)return;const i=this.parseAnimationCurveNodes();this.parseAnimationCurves(i);const r=this.parseAnimationLayers(i);return this.parseAnimStacks(r)}parseAnimationCurveNodes(){const i=re.Objects.AnimationCurveNode,r=new Map;for(const s in i){const a=i[s];if(a.attrName.match(/S|R|T|DeformPercent/)!==null){const c={id:a.id,attr:a.attrName,curves:{}};r.set(c.id,c)}}return r}parseAnimationCurves(i){const r=re.Objects.AnimationCurve;for(const s in r){const a={id:r[s].id,times:r[s].KeyTime.a.map(el),values:r[s].KeyValueFloat.a},c=ke.get(a.id);if(c!==void 0){const u=c.parents[0].ID,h=c.parents[0].relationship;h.match(/X/)?i.get(u).curves.x=a:h.match(/Y/)?i.get(u).curves.y=a:h.match(/Z/)?i.get(u).curves.z=a:h.match(/d|DeformPercent/)&&i.has(u)&&(i.get(u).curves.morph=a)}}}parseAnimationLayers(i){const r=re.Objects.AnimationLayer,s=new Map;for(const a in r){const c=[],u=ke.get(parseInt(a));u!==void 0&&(u.children.forEach(function(m,_){if(i.has(m.ID)){const y=i.get(m.ID);if(y.curves.x!==void 0||y.curves.y!==void 0||y.curves.z!==void 0){if(c[_]===void 0){const w=ke.get(m.ID).parents.filter(function(x){return x.relationship!==void 0})[0].ID;if(w!==void 0){const x=re.Objects.Model[w.toString()];if(x===void 0){console.warn("THREE.FBXLoader: Encountered a unused curve.",m);return}const k={modelName:x.attrName?f.PropertyBinding.sanitizeNodeName(x.attrName):"",ID:x.id,initialPosition:[0,0,0],initialRotation:[0,0,0],initialScale:[1,1,1]};Ue.traverse(function(E){E.ID===x.id&&(k.transform=E.matrix,E.userData.transformData&&(k.eulerOrder=E.userData.transformData.eulerOrder))}),k.transform||(k.transform=new f.Matrix4),"PreRotation"in x&&(k.preRotation=x.PreRotation.value),"PostRotation"in x&&(k.postRotation=x.PostRotation.value),c[_]=k}}c[_]&&(c[_][y.attr]=y)}else if(y.curves.morph!==void 0){if(c[_]===void 0){const w=ke.get(m.ID).parents.filter(function(G){return G.relationship!==void 0})[0].ID,x=ke.get(w).parents[0].ID,k=ke.get(x).parents[0].ID,E=ke.get(k).parents[0].ID,I=re.Objects.Model[E],O={modelName:I.attrName?f.PropertyBinding.sanitizeNodeName(I.attrName):"",morphName:re.Objects.Deformer[w].attrName};c[_]=O}c[_][y.attr]=y}}}),s.set(parseInt(a),c))}return s}parseAnimStacks(i){const r=re.Objects.AnimationStack,s={};for(const a in r){const c=ke.get(parseInt(a)).children;c.length>1&&console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.");const u=i.get(c[0].ID);s[a]={name:r[a].attrName,layer:u}}return s}addClip(i){let r=[];const s=this;return i.layer.forEach(function(a){r=r.concat(s.generateTracks(a))}),new f.AnimationClip(i.name,-1,r)}generateTracks(i){const r=[];let s=new f.Vector3,a=new f.Quaternion,c=new f.Vector3;if(i.transform&&i.transform.decompose(s,a,c),s=s.toArray(),a=new f.Euler().setFromQuaternion(a,i.eulerOrder).toArray(),c=c.toArray(),i.T!==void 0&&Object.keys(i.T.curves).length>0){const u=this.generateVectorTrack(i.modelName,i.T.curves,s,"position");u!==void 0&&r.push(u)}if(i.R!==void 0&&Object.keys(i.R.curves).length>0){const u=this.generateRotationTrack(i.modelName,i.R.curves,a,i.preRotation,i.postRotation,i.eulerOrder);u!==void 0&&r.push(u)}if(i.S!==void 0&&Object.keys(i.S.curves).length>0){const u=this.generateVectorTrack(i.modelName,i.S.curves,c,"scale");u!==void 0&&r.push(u)}if(i.DeformPercent!==void 0){const u=this.generateMorphTrack(i);u!==void 0&&r.push(u)}return r}generateVectorTrack(i,r,s,a){const c=this.getTimesForAllAxes(r),u=this.getKeyframeTrackValues(c,r,s);return new f.VectorKeyframeTrack(i+"."+a,c,u)}generateRotationTrack(i,r,s,a,c,u){r.x!==void 0&&(this.interpolateRotations(r.x),r.x.values=r.x.values.map(f.MathUtils.degToRad)),r.y!==void 0&&(this.interpolateRotations(r.y),r.y.values=r.y.values.map(f.MathUtils.degToRad)),r.z!==void 0&&(this.interpolateRotations(r.z),r.z.values=r.z.values.map(f.MathUtils.degToRad));const h=this.getTimesForAllAxes(r),m=this.getKeyframeTrackValues(h,r,s);a!==void 0&&(a=a.map(f.MathUtils.degToRad),a.push(u),a=new f.Euler().fromArray(a),a=new f.Quaternion().setFromEuler(a)),c!==void 0&&(c=c.map(f.MathUtils.degToRad),c.push(u),c=new f.Euler().fromArray(c),c=new f.Quaternion().setFromEuler(c).invert());const _=new f.Quaternion,y=new f.Euler,w=[];for(let x=0;x<m.length;x+=3)y.set(m[x],m[x+1],m[x+2],u),_.setFromEuler(y),a!==void 0&&_.premultiply(a),c!==void 0&&_.multiply(c),_.toArray(w,x/3*4);return new f.QuaternionKeyframeTrack(i+".quaternion",h,w)}generateMorphTrack(i){const r=i.DeformPercent.curves.morph,s=r.values.map(function(c){return c/100}),a=Ue.getObjectByName(i.modelName).morphTargetDictionary[i.morphName];return new f.NumberKeyframeTrack(i.modelName+".morphTargetInfluences["+a+"]",r.times,s)}getTimesForAllAxes(i){let r=[];if(i.x!==void 0&&(r=r.concat(i.x.times)),i.y!==void 0&&(r=r.concat(i.y.times)),i.z!==void 0&&(r=r.concat(i.z.times)),r=r.sort(function(s,a){return s-a}),r.length>1){let s=1,a=r[0];for(let c=1;c<r.length;c++){const u=r[c];u!==a&&(r[s]=u,a=u,s++)}r=r.slice(0,s)}return r}getKeyframeTrackValues(i,r,s){const a=s,c=[];let u=-1,h=-1,m=-1;return i.forEach(function(_){if(r.x&&(u=r.x.times.indexOf(_)),r.y&&(h=r.y.times.indexOf(_)),r.z&&(m=r.z.times.indexOf(_)),u!==-1){const y=r.x.values[u];c.push(y),a[0]=y}else c.push(a[0]);if(h!==-1){const y=r.y.values[h];c.push(y),a[1]=y}else c.push(a[1]);if(m!==-1){const y=r.z.values[m];c.push(y),a[2]=y}else c.push(a[2])}),c}interpolateRotations(i){for(let r=1;r<i.values.length;r++){const s=i.values[r-1],a=i.values[r]-s,c=Math.abs(a);if(c>=180){const u=c/180,h=a/u;let m=s+h;const _=i.times[r-1],w=(i.times[r]-_)/u;let x=_+w;const k=[],E=[];for(;x<i.times[r];)k.push(x),x+=w,E.push(m),m+=h;i.times=Rr(i.times,r,k),i.values=Rr(i.values,r,E)}}}}class Za{getPrevNode(){return this.nodeStack[this.currentIndent-2]}getCurrentNode(){return this.nodeStack[this.currentIndent-1]}getCurrentProp(){return this.currentProp}pushStack(i){this.nodeStack.push(i),this.currentIndent+=1}popStack(){this.nodeStack.pop(),this.currentIndent-=1}setCurrentProp(i,r){this.currentProp=i,this.currentPropName=r}parse(i){this.currentIndent=0,this.allNodes=new Fr,this.nodeStack=[],this.currentProp=[],this.currentPropName="";const r=this,s=i.split(/[\r\n]+/);return s.forEach(function(a,c){const u=a.match(/^[\s\t]*;/),h=a.match(/^[\s\t]*$/);if(u||h)return;const m=a.match("^\\t{"+r.currentIndent+"}(\\w+):(.*){",""),_=a.match("^\\t{"+r.currentIndent+"}(\\w+):[\\s\\t\\r\\n](.*)"),y=a.match("^\\t{"+(r.currentIndent-1)+"}}");m?r.parseNodeBegin(a,m):_?r.parseNodeProperty(a,_,s[++c]):y?r.popStack():a.match(/^[^\s\t}]/)&&r.parseNodePropertyContinued(a)}),this.allNodes}parseNodeBegin(i,r){const s=r[1].trim().replace(/^"/,"").replace(/"$/,""),a=r[2].split(",").map(function(m){return m.trim().replace(/^"/,"").replace(/"$/,"")}),c={name:s},u=this.parseNodeAttr(a),h=this.getCurrentNode();this.currentIndent===0?this.allNodes.add(s,c):s in h?(s==="PoseNode"?h.PoseNode.push(c):h[s].id!==void 0&&(h[s]={},h[s][h[s].id]=h[s]),u.id!==""&&(h[s][u.id]=c)):typeof u.id=="number"?(h[s]={},h[s][u.id]=c):s!=="Properties70"&&(s==="PoseNode"?h[s]=[c]:h[s]=c),typeof u.id=="number"&&(c.id=u.id),u.name!==""&&(c.attrName=u.name),u.type!==""&&(c.attrType=u.type),this.pushStack(c)}parseNodeAttr(i){let r=i[0];i[0]!==""&&(r=parseInt(i[0]),isNaN(r)&&(r=i[0]));let s="",a="";return i.length>1&&(s=i[1].replace(/^(\w+)::/,""),a=i[2]),{id:r,name:s,type:a}}parseNodeProperty(i,r,s){let a=r[1].replace(/^"/,"").replace(/"$/,"").trim(),c=r[2].replace(/^"/,"").replace(/"$/,"").trim();a==="Content"&&c===","&&(c=s.replace(/"/g,"").replace(/,$/,"").trim());const u=this.getCurrentNode();if(u.name==="Properties70"){this.parseNodeSpecialProperty(i,a,c);return}if(a==="C"){const m=c.split(",").slice(1),_=parseInt(m[0]),y=parseInt(m[1]);let w=c.split(",").slice(3);w=w.map(function(x){return x.trim().replace(/^"/,"")}),a="connections",c=[_,y],nl(c,w),u[a]===void 0&&(u[a]=[])}a==="Node"&&(u.id=c),a in u&&Array.isArray(u[a])?u[a].push(c):a!=="a"?u[a]=c:u.a=c,this.setCurrentProp(u,a),a==="a"&&c.slice(-1)!==","&&(u.a=ls(c))}parseNodePropertyContinued(i){const r=this.getCurrentNode();r.a+=i,i.slice(-1)!==","&&(r.a=ls(r.a))}parseNodeSpecialProperty(i,r,s){const a=s.split('",').map(function(y){return y.trim().replace(/^\"/,"").replace(/\s/,"_")}),c=a[0],u=a[1],h=a[2],m=a[3];let _=a[4];switch(u){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":_=ls(_);break}this.getPrevNode()[c]={type:u,type2:h,flag:m,value:_},this.setCurrentProp(this.getPrevNode(),c)}}class Wa{parse(i){const r=new Nr(i);r.skip(23);const s=r.getUint32();if(s<6400)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+s);const a=new Fr;for(;!this.endOfContent(r);){const c=this.parseNode(r,s);c!==null&&a.add(c.name,c)}return a}endOfContent(i){return i.size()%16===0?(i.getOffset()+160+16&-16)>=i.size():i.getOffset()+160+16>=i.size()}parseNode(i,r){const s={},a=r>=7500?i.getUint64():i.getUint32(),c=r>=7500?i.getUint64():i.getUint32();r>=7500?i.getUint64():i.getUint32();const u=i.getUint8(),h=i.getString(u);if(a===0)return null;const m=[];for(let x=0;x<c;x++)m.push(this.parseProperty(i));const _=m.length>0?m[0]:"",y=m.length>1?m[1]:"",w=m.length>2?m[2]:"";for(s.singleProperty=c===1&&i.getOffset()===a;a>i.getOffset();){const x=this.parseNode(i,r);x!==null&&this.parseSubNode(h,s,x)}return s.propertyList=m,typeof _=="number"&&(s.id=_),y!==""&&(s.attrName=y),w!==""&&(s.attrType=w),h!==""&&(s.name=h),s}parseSubNode(i,r,s){if(s.singleProperty===!0){const a=s.propertyList[0];Array.isArray(a)?(r[s.name]=s,s.a=a):r[s.name]=a}else if(i==="Connections"&&s.name==="C"){const a=[];s.propertyList.forEach(function(c,u){u!==0&&a.push(c)}),r.connections===void 0&&(r.connections=[]),r.connections.push(a)}else if(s.name==="Properties70")Object.keys(s).forEach(function(c){r[c]=s[c]});else if(i==="Properties70"&&s.name==="P"){let a=s.propertyList[0],c=s.propertyList[1];const u=s.propertyList[2],h=s.propertyList[3];let m;a.indexOf("Lcl ")===0&&(a=a.replace("Lcl ","Lcl_")),c.indexOf("Lcl ")===0&&(c=c.replace("Lcl ","Lcl_")),c==="Color"||c==="ColorRGB"||c==="Vector"||c==="Vector3D"||c.indexOf("Lcl_")===0?m=[s.propertyList[4],s.propertyList[5],s.propertyList[6]]:m=s.propertyList[4],r[a]={type:c,type2:u,flag:h,value:m}}else r[s.name]===void 0?typeof s.id=="number"?(r[s.name]={},r[s.name][s.id]=s):r[s.name]=s:s.name==="PoseNode"?(Array.isArray(r[s.name])||(r[s.name]=[r[s.name]]),r[s.name].push(s)):r[s.name][s.id]===void 0&&(r[s.name][s.id]=s)}parseProperty(i){const r=i.getString(1);let s;switch(r){case"C":return i.getBoolean();case"D":return i.getFloat64();case"F":return i.getFloat32();case"I":return i.getInt32();case"L":return i.getInt64();case"R":return s=i.getUint32(),i.getArrayBuffer(s);case"S":return s=i.getUint32(),i.getString(s);case"Y":return i.getInt16();case"b":case"c":case"d":case"f":case"i":case"l":const a=i.getUint32(),c=i.getUint32(),u=i.getUint32();if(c===0)switch(r){case"b":case"c":return i.getBooleanArray(a);case"d":return i.getFloat64Array(a);case"f":return i.getFloat32Array(a);case"i":return i.getInt32Array(a);case"l":return i.getInt64Array(a)}const h=ta(new Uint8Array(i.getArrayBuffer(u))),m=new Nr(h.buffer);switch(r){case"b":case"c":return m.getBooleanArray(a);case"d":return m.getFloat64Array(a);case"f":return m.getFloat32Array(a);case"i":return m.getInt32Array(a);case"l":return m.getInt64Array(a)}default:throw new Error("THREE.FBXLoader: Unknown property type "+r)}}}class Nr{constructor(i,r){this.dv=new DataView(i),this.offset=0,this.littleEndian=r!==void 0?r:!0}getOffset(){return this.offset}size(){return this.dv.buffer.byteLength}skip(i){this.offset+=i}getBoolean(){return(this.getUint8()&1)===1}getBooleanArray(i){const r=[];for(let s=0;s<i;s++)r.push(this.getBoolean());return r}getUint8(){const i=this.dv.getUint8(this.offset);return this.offset+=1,i}getInt16(){const i=this.dv.getInt16(this.offset,this.littleEndian);return this.offset+=2,i}getInt32(){const i=this.dv.getInt32(this.offset,this.littleEndian);return this.offset+=4,i}getInt32Array(i){const r=[];for(let s=0;s<i;s++)r.push(this.getInt32());return r}getUint32(){const i=this.dv.getUint32(this.offset,this.littleEndian);return this.offset+=4,i}getInt64(){let i,r;return this.littleEndian?(i=this.getUint32(),r=this.getUint32()):(r=this.getUint32(),i=this.getUint32()),r&2147483648?(r=~r&4294967295,i=~i&4294967295,i===4294967295&&(r=r+1&4294967295),i=i+1&4294967295,-(r*4294967296+i)):r*4294967296+i}getInt64Array(i){const r=[];for(let s=0;s<i;s++)r.push(this.getInt64());return r}getUint64(){let i,r;return this.littleEndian?(i=this.getUint32(),r=this.getUint32()):(r=this.getUint32(),i=this.getUint32()),r*4294967296+i}getFloat32(){const i=this.dv.getFloat32(this.offset,this.littleEndian);return this.offset+=4,i}getFloat32Array(i){const r=[];for(let s=0;s<i;s++)r.push(this.getFloat32());return r}getFloat64(){const i=this.dv.getFloat64(this.offset,this.littleEndian);return this.offset+=8,i}getFloat64Array(i){const r=[];for(let s=0;s<i;s++)r.push(this.getFloat64());return r}getArrayBuffer(i){const r=this.dv.buffer.slice(this.offset,this.offset+i);return this.offset+=i,r}getString(i){let r=[];for(let a=0;a<i;a++)r[a]=this.getUint8();const s=r.indexOf(0);return s>=0&&(r=r.slice(0,s)),f.LoaderUtils.decodeText(new Uint8Array(r))}}class Fr{add(i,r){this[i]=r}}function Ja(g){const i="Kaydara FBX Binary \0";return g.byteLength>=i.length&&i===Gr(g,0,i.length)}function Ha(g){const i=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"];let r=0;function s(a){const c=g[a-1];return g=g.slice(r+a),r++,c}for(let a=0;a<i.length;++a)if(s(1)===i[a])return!1;return!0}function jr(g){const i=/FBXVersion: (\d+)/,r=g.match(i);if(r)return parseInt(r[1]);throw new Error("THREE.FBXLoader: Cannot find the version number for the file given.")}function el(g){return g/46186158e3}const tl=[];function gi(g,i,r,s){let a;switch(s.mappingType){case"ByPolygonVertex":a=g;break;case"ByPolygon":a=i;break;case"ByVertice":a=r;break;case"AllSame":a=s.indices[0];break;default:console.warn("THREE.FBXLoader: unknown attribute mapping type "+s.mappingType)}s.referenceType==="IndexToDirect"&&(a=s.indices[a]);const c=a*s.dataSize,u=c+s.dataSize;return il(tl,s.buffer,c,u)}const as=new f.Euler,un=new f.Vector3;function zr(g){const i=new f.Matrix4,r=new f.Matrix4,s=new f.Matrix4,a=new f.Matrix4,c=new f.Matrix4,u=new f.Matrix4,h=new f.Matrix4,m=new f.Matrix4,_=new f.Matrix4,y=new f.Matrix4,w=new f.Matrix4,x=new f.Matrix4,k=g.inheritType?g.inheritType:0;if(g.translation&&i.setPosition(un.fromArray(g.translation)),g.preRotation){const Y=g.preRotation.map(f.MathUtils.degToRad);Y.push(g.eulerOrder),r.makeRotationFromEuler(as.fromArray(Y))}if(g.rotation){const Y=g.rotation.map(f.MathUtils.degToRad);Y.push(g.eulerOrder),s.makeRotationFromEuler(as.fromArray(Y))}if(g.postRotation){const Y=g.postRotation.map(f.MathUtils.degToRad);Y.push(g.eulerOrder),a.makeRotationFromEuler(as.fromArray(Y)),a.invert()}g.scale&&c.scale(un.fromArray(g.scale)),g.scalingOffset&&h.setPosition(un.fromArray(g.scalingOffset)),g.scalingPivot&&u.setPosition(un.fromArray(g.scalingPivot)),g.rotationOffset&&m.setPosition(un.fromArray(g.rotationOffset)),g.rotationPivot&&_.setPosition(un.fromArray(g.rotationPivot)),g.parentMatrixWorld&&(w.copy(g.parentMatrix),y.copy(g.parentMatrixWorld));const E=r.clone().multiply(s).multiply(a),I=new f.Matrix4;I.extractRotation(y);const O=new f.Matrix4;O.copyPosition(y);const G=O.clone().invert().multiply(y),z=I.clone().invert().multiply(G),B=c,N=new f.Matrix4;if(k===0)N.copy(I).multiply(E).multiply(z).multiply(B);else if(k===1)N.copy(I).multiply(z).multiply(E).multiply(B);else{const Z=new f.Matrix4().scale(new f.Vector3().setFromMatrixScale(w)).clone().invert(),ue=z.clone().multiply(Z);N.copy(I).multiply(E).multiply(ue).multiply(B)}const Q=_.clone().invert(),$=u.clone().invert();let j=i.clone().multiply(m).multiply(_).multiply(r).multiply(s).multiply(a).multiply(Q).multiply(h).multiply(u).multiply(c).multiply($);const F=new f.Matrix4().copyPosition(j),X=y.clone().multiply(F);return x.copyPosition(X),j=x.clone().multiply(N),j.premultiply(y.invert()),j}function Ur(g){g=g||0;const i=["ZYX","YZX","XZY","ZXY","YXZ","XYZ"];return g===6?(console.warn("THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect."),i[0]):i[g]}function ls(g){return g.split(",").map(function(r){return parseFloat(r)})}function Gr(g,i,r){return i===void 0&&(i=0),r===void 0&&(r=g.byteLength),f.LoaderUtils.decodeText(new Uint8Array(g,i,r))}function nl(g,i){for(let r=0,s=g.length,a=i.length;r<a;r++,s++)g[s]=i[r]}function il(g,i,r,s){for(let a=r,c=0;a<s;a++,c++)g[c]=i[a];return g}function Rr(g,i,r){return g.slice(0,i).concat(r).concat(g.slice(i))}class sl extends f.Loader{constructor(i){super(i)}load(i,r,s,a){const c=new f.FileLoader(this.manager);c.setPath(this.path),c.setRequestHeader(this.requestHeader),c.setWithCredentials(this.withCredentials),c.load(i,u=>{if(typeof u!="string")throw new Error("unsupported data type");const h=JSON.parse(u),m=this.parse(h);r&&r(m)},s,a)}parse(i){return new cs(i)}}class cs{constructor(i){S(this,"data",void 0),this.data=i}generateShapes(i,r=100,s){const a=[],c={letterSpacing:0,lineHeight:1,...s},u=rl(i,r,this.data,c);for(let h=0,m=u.length;h<m;h++)Array.prototype.push.apply(a,u[h].toShapes(!1));return a}}S(cs,"isFont",void 0),S(cs,"type",void 0);function rl(g,i,r,s){const a=Array.from(g),c=i/r.resolution,u=(r.boundingBox.yMax-r.boundingBox.yMin+r.underlineThickness)*c,h=[];let m=0,_=0;for(let y=0;y<a.length;y++){const w=a[y];if(w===`
|
|
14
|
+
`)m=0,_-=u*s.lineHeight;else{const x=ol(w,c,m,_,r);x&&(m+=x.offsetX+s.letterSpacing,h.push(x.path))}}return h}function ol(g,i,r,s,a){const c=a.glyphs[g]||a.glyphs["?"];if(!c){console.error('THREE.Font: character "'+g+'" does not exists in font family '+a.familyName+".");return}const u=new f.ShapePath;let h,m,_,y,w,x,k,E;if(c.o){const I=c._cachedOutline||(c._cachedOutline=c.o.split(" "));for(let O=0,G=I.length;O<G;)switch(I[O++]){case"m":h=parseInt(I[O++])*i+r,m=parseInt(I[O++])*i+s,u.moveTo(h,m);break;case"l":h=parseInt(I[O++])*i+r,m=parseInt(I[O++])*i+s,u.lineTo(h,m);break;case"q":_=parseInt(I[O++])*i+r,y=parseInt(I[O++])*i+s,w=parseInt(I[O++])*i+r,x=parseInt(I[O++])*i+s,u.quadraticCurveTo(w,x,_,y);break;case"b":_=parseInt(I[O++])*i+r,y=parseInt(I[O++])*i+s,w=parseInt(I[O++])*i+r,x=parseInt(I[O++])*i+s,k=parseInt(I[O++])*i+r,E=parseInt(I[O++])*i+s,u.bezierCurveTo(w,x,k,E,_,y);break}}return{offsetX:c.ha*i,path:u}}var Kr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function al(g){return g&&g.__esModule&&Object.prototype.hasOwnProperty.call(g,"default")?g.default:g}class ll extends f.DataTextureLoader{constructor(i){super(i),this.type=f.HalfFloatType}parse(i){const h=function(B,N){switch(B){case 1:console.error("THREE.RGBELoader Read Error: "+(N||""));break;case 2:console.error("THREE.RGBELoader Write Error: "+(N||""));break;case 3:console.error("THREE.RGBELoader Bad File Format: "+(N||""));break;default:case 4:console.error("THREE.RGBELoader: Error: "+(N||""))}return-1},w=`
|
|
15
|
+
`,x=function(B,N,Q){N=N||1024;let j=B.pos,F=-1,X=0,Y="",Z=String.fromCharCode.apply(null,new Uint16Array(B.subarray(j,j+128)));for(;0>(F=Z.indexOf(w))&&X<N&&j<B.byteLength;)Y+=Z,X+=Z.length,j+=128,Z+=String.fromCharCode.apply(null,new Uint16Array(B.subarray(j,j+128)));return-1<F?(Q!==!1&&(B.pos+=X+F+1),Y+Z.slice(0,F)):!1},k=function(B){const N=/^#\?(\S+)/,Q=/^\s*GAMMA\s*=\s*(\d+(\.\d+)?)\s*$/,$=/^\s*EXPOSURE\s*=\s*(\d+(\.\d+)?)\s*$/,j=/^\s*FORMAT=(\S+)\s*$/,F=/^\s*\-Y\s+(\d+)\s+\+X\s+(\d+)\s*$/,X={valid:0,string:"",comments:"",programtype:"RGBE",format:"",gamma:1,exposure:1,width:0,height:0};let Y,Z;if(B.pos>=B.byteLength||!(Y=x(B)))return h(1,"no header found");if(!(Z=Y.match(N)))return h(3,"bad initial token");for(X.valid|=1,X.programtype=Z[1],X.string+=Y+`
|
|
16
16
|
`;Y=x(B),Y!==!1;){if(X.string+=Y+`
|
|
17
17
|
`,Y.charAt(0)==="#"){X.comments+=Y+`
|
|
18
|
-
`;continue}if((Z=Y.match(Q))&&(X.gamma=parseFloat(Z[1])),(Z=Y.match($))&&(X.exposure=parseFloat(Z[1])),(Z=Y.match(j))&&(X.valid|=2,X.format=Z[1]),(Z=Y.match(F))&&(X.valid|=4,X.height=parseInt(Z[1],10),X.width=parseInt(Z[2],10)),X.valid&2&&X.valid&4)break}return X.valid&2?X.valid&4?X:h(3,"missing image size specifier"):h(3,"missing format specifier")},E=function(B,N,Q){const $=N;if($<8||$>32767||B[0]!==2||B[1]!==2||B[2]&128)return new Uint8Array(B);if($!==(B[2]<<8|B[3]))return h(3,"wrong scanline width");const j=new Uint8Array(4*N*Q);if(!j.length)return h(4,"unable to allocate buffer space");let F=0,X=0;const Y=4*$,Z=new Uint8Array(4),ue=new Uint8Array(Y);let ge=Q;for(;ge>0&&X<B.byteLength;){if(X+4>B.byteLength)return h(1);if(Z[0]=B[X++],Z[1]=B[X++],Z[2]=B[X++],Z[3]=B[X++],Z[0]!=2||Z[1]!=2||(Z[2]<<8|Z[3])!=$)return h(3,"bad rgbe scanline format");let
|
|
19
|
-
`);this.workerSourceURL=URL.createObjectURL(new Blob([u]))}),this.decoderPending}_getWorker(i,r){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const a=new Worker(this.workerSourceURL);a._callbacks={},a._taskCosts={},a._taskLoad=0,a.postMessage({type:"init",decoderConfig:this.decoderConfig}),a.onmessage=function(c){const u=c.data;switch(u.type){case"decode":a._callbacks[u.id].resolve(u);break;case"error":a._callbacks[u.id].reject(u);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+u.type+'"')}},this.workerPool.push(a)}else this.workerPool.sort(function(a,c){return a._taskLoad>c._taskLoad?-1:1});const s=this.workerPool[this.workerPool.length-1];return s._taskCosts[i]=r,s._taskLoad+=r,s})}_releaseTask(i,r){i._taskLoad-=i._taskCosts[r],delete i._callbacks[r],delete i._taskCosts[r]}debug(){console.log("Task load: ",this.workerPool.map(i=>i._taskLoad))}dispose(){for(let i=0;i<this.workerPool.length;++i)this.workerPool[i].terminate();return this.workerPool.length=0,this}}function Ja(){let g,i;onmessage=function(u){const h=u.data;switch(h.type){case"init":g=h.decoderConfig,i=new Promise(function(y){g.onModuleLoaded=function(w){y({draco:w})},DracoDecoderModule(g)});break;case"decode":const m=h.buffer,_=h.taskConfig;i.then(y=>{const w=y.draco,x=new w.Decoder,L=new w.DecoderBuffer;L.Init(new Int8Array(m),m.byteLength);try{const E=r(w,x,L,_),D=E.attributes.map(O=>O.array.buffer);E.index&&D.push(E.index.array.buffer),self.postMessage({type:"decode",id:h.id,geometry:E},D)}catch(E){console.error(E),self.postMessage({type:"error",id:h.id,error:E.message})}finally{w.destroy(L),w.destroy(x)}});break}};function r(u,h,m,_){const y=_.attributeIDs,w=_.attributeTypes;let x,L;const E=h.GetEncodedGeometryType(m);if(E===u.TRIANGULAR_MESH)x=new u.Mesh,L=h.DecodeBufferToMesh(m,x);else if(E===u.POINT_CLOUD)x=new u.PointCloud,L=h.DecodeBufferToPointCloud(m,x);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!L.ok()||x.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+L.error_msg());const D={index:null,attributes:[]};for(const O in y){const G=self[w[O]];let z,B;if(_.useUniqueIDs)B=y[O],z=h.GetAttributeByUniqueId(x,B);else{if(B=h.GetAttributeId(x,u[y[O]]),B===-1)continue;z=h.GetAttribute(x,B)}D.attributes.push(a(u,h,x,O,G,z))}return E===u.TRIANGULAR_MESH&&(D.index=s(u,h,x)),u.destroy(x),D}function s(u,h,m){const y=m.num_faces()*3,w=y*4,x=u._malloc(w);h.GetTrianglesUInt32Array(m,w,x);const L=new Uint32Array(u.HEAPF32.buffer,x,y).slice();return u._free(x),{array:L,itemSize:1}}function a(u,h,m,_,y,w){const x=w.num_components(),E=m.num_points()*x,D=E*y.BYTES_PER_ELEMENT,O=c(u,y),G=u._malloc(D);h.GetAttributeDataArrayForAllPoints(m,w,O,D,G);const z=new y(u.HEAPF32.buffer,G,E).slice();return u._free(G),{name:_,array:z,itemSize:x}}function c(u,h){switch(h){case Float32Array:return u.DT_FLOAT32;case Int8Array:return u.DT_INT8;case Int16Array:return u.DT_INT16;case Int32Array:return u.DT_INT32;case Uint8Array:return u.DT_UINT8;case Uint16Array:return u.DT_UINT16;case Uint32Array:return u.DT_UINT32}}}function pn(){const g=M.inject("extend")||(()=>{console.warn("No extend function provided")}),{state:i,setState:r}=M.inject("useTres",ln.useTres());return{state:i,setState:r,extend:g}}const Ha=M.defineComponent({__name:"OrbitControls",props:{makeDefault:{type:Boolean,default:!1},camera:null,domElement:null,target:null,enableDamping:{type:Boolean}},setup(g){const i=g,{state:r,setState:s,extend:a}=pn(),c=M.ref(null);return a({OrbitControls:Qo}),M.watch(c,u=>{u&&i.makeDefault?s("controls",u):s("controls",null)}),(u,h)=>{var _;const m=M.resolveComponent("TresOrbitControls");return M.unref(r).camera&&M.unref(r).renderer?(M.openBlock(),M.createBlock(m,{key:0,ref_key:"controls",ref:c,args:[M.unref(M.unref(r).camera),(_=M.unref(r).renderer)==null?void 0:_.domElement],"enabling-dampling":g.enableDamping},null,8,["args","enabling-dampling"])):M.createCommentVNode("",!0)}}});function el(g,i){const r={};for(const s of i)Object.prototype.hasOwnProperty.call(g,s)&&(r[s]=g[s]);return r}function tl(g,i){const r=`set${i[0].toUpperCase()}${i.slice(1)}`;return g[r]!==void 0}const nl=M.defineComponent({__name:"TransformControls",props:{object:null,mode:null,enabled:{type:Boolean,default:!0},axis:null,translationSnap:null,rotationSnap:null,scaleSnap:null,space:null,size:null,showX:{type:Boolean},showY:{type:Boolean},showZ:{type:Boolean}},emits:["dragging","change","mouseDown","mouseUp","objectChange"],setup(g,{emit:i}){const r=g;let s=M.shallowRef();const{state:a}=pn(),c=M.computed(()=>el(r,["enabled","axis","mode","translationSnap","rotationSnap","scaleSnap","space","size","showX","showY","showZ"])),u=()=>i("change",s.value),h=()=>i("mouseDown",s.value),m=()=>i("mouseUp",s.value),_=()=>i("objectChange",s.value),y=x=>{a.controls&&(a.controls.enabled=!x.value),i("dragging",x.value)};function w(x){x.addEventListener("dragging-changed",y),x.addEventListener("change",u),x.addEventListener("mouseDown",h),x.addEventListener("mouseUp",m),x.addEventListener("objectChange",_)}return M.watch(()=>r.object,()=>{var x;(x=a.camera)!=null&&x.value&&a.renderer&&a.scene&&r.object&&(s.value=new Xo(a.camera.value,M.unref(a.renderer).domElement),s.value.attach(M.unref(r.object)),a.scene.add(M.unref(s)),w(M.unref(s)))},{deep:!0}),M.watch([c,s],([x,L])=>{if(x&&L)for(const E in x)if(!tl(L,E))L[E]=x[E];else{const D=`set${E[0].toUpperCase()}${E.slice(1)}`;typeof L[D]=="function"&&x[E]!==void 0&&L[D](x[E])}},{immediate:!0}),M.onUnmounted(()=>{s.value&&(s.value.removeEventListener("dragging-changed",y),s.value.removeEventListener("change",u),s.value.removeEventListener("mouseDown",h),s.value.removeEventListener("mouseUp",m),s.value.removeEventListener("objectChange",_))}),(x,L)=>M.renderSlot(x.$slots,"default")}});var gi={},il={get exports(){return gi},set exports(g){gi=g}};/*! Tweakpane 3.1.4 (c) 2016 cocopon, licensed under the MIT license. */(function(g,i){(function(r,s){s(i)})(zr,function(r){class s{constructor(e){const[t,l]=e.split("-"),b=t.split(".");this.major=parseInt(b[0],10),this.minor=parseInt(b[1],10),this.patch=parseInt(b[2],10),this.prerelease=l??null}toString(){const e=[this.major,this.minor,this.patch].join(".");return this.prerelease!==null?[e,this.prerelease].join("-"):e}}class a{constructor(e){this.controller_=e}get element(){return this.controller_.view.element}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(e){this.controller_.viewProps.set("disabled",e)}get hidden(){return this.controller_.viewProps.get("hidden")}set hidden(e){this.controller_.viewProps.set("hidden",e)}dispose(){this.controller_.viewProps.set("disposed",!0)}}class c{constructor(e){this.target=e}}class u extends c{constructor(e,t,l,b){super(e),this.value=t,this.presetKey=l,this.last=b??!0}}class h extends c{constructor(e,t,l){super(e),this.value=t,this.presetKey=l}}class m extends c{constructor(e,t){super(e),this.expanded=t}}class _ extends c{constructor(e,t){super(e),this.index=t}}function y(n){return n}function w(n){return n==null}function x(n,e){if(n.length!==e.length)return!1;for(let t=0;t<n.length;t++)if(n[t]!==e[t])return!1;return!0}function L(n,e){let t=n;do{const l=Object.getOwnPropertyDescriptor(t,e);if(l&&(l.set!==void 0||l.writable===!0))return!0;t=Object.getPrototypeOf(t)}while(t!==null);return!1}const E={alreadydisposed:()=>"View has been already disposed",invalidparams:n=>`Invalid parameters for '${n.name}'`,nomatchingcontroller:n=>`No matching controller for '${n.key}'`,nomatchingview:n=>`No matching view for '${JSON.stringify(n.params)}'`,notbindable:()=>"Value is not bindable",propertynotfound:n=>`Property '${n.name}' not found`,shouldneverhappen:()=>"This error should never happen"};class D{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}static alreadyDisposed(){return new D({type:"alreadydisposed"})}static notBindable(){return new D({type:"notbindable"})}static propertyNotFound(e){return new D({type:"propertynotfound",context:{name:e}})}static shouldNeverHappen(){return new D({type:"shouldneverhappen"})}}class O{constructor(e,t,l){this.obj_=e,this.key_=t,this.presetKey_=l??t}static isBindable(e){return!(e===null||typeof e!="object")}get key(){return this.key_}get presetKey(){return this.presetKey_}read(){return this.obj_[this.key_]}write(e){this.obj_[this.key_]=e}writeProperty(e,t){const l=this.read();if(!O.isBindable(l))throw D.notBindable();if(!(e in l))throw D.propertyNotFound(e);l[e]=t}}class G extends a{get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}get title(){var e;return(e=this.controller_.valueController.props.get("title"))!==null&&e!==void 0?e:""}set title(e){this.controller_.valueController.props.set("title",e)}on(e,t){const l=t.bind(this);return this.controller_.valueController.emitter.on(e,()=>{l(new c(this))}),this}}class z{constructor(){this.observers_={}}on(e,t){let l=this.observers_[e];return l||(l=this.observers_[e]=[]),l.push({handler:t}),this}off(e,t){const l=this.observers_[e];return l&&(this.observers_[e]=l.filter(b=>b.handler!==t)),this}emit(e,t){const l=this.observers_[e];l&&l.forEach(b=>{b.handler(t)})}}const B="tp";function N(n){return(t,l)=>[B,"-",n,"v",t?`_${t}`:"",l?`-${l}`:""].join("")}function Q(n,e){return t=>e(n(t))}function $(n){return n.rawValue}function j(n,e){n.emitter.on("change",Q($,e)),e(n.rawValue)}function F(n,e,t){j(n.value(e),t)}function X(n,e,t){t?n.classList.add(e):n.classList.remove(e)}function Y(n,e){return t=>{X(n,e,t)}}function Z(n,e){j(n,t=>{e.textContent=t??""})}const ue=N("btn");class ge{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(ue()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("button");l.classList.add(ue("b")),t.viewProps.bindDisabled(l),this.element.appendChild(l),this.buttonElement=l;const b=e.createElement("div");b.classList.add(ue("t")),Z(t.props.value("title"),b),this.buttonElement.appendChild(b)}}class ce{constructor(e,t){this.emitter=new z,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new ge(e,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class me{constructor(e,t){var l;this.constraint_=t==null?void 0:t.constraint,this.equals_=(l=t==null?void 0:t.equals)!==null&&l!==void 0?l:(b,P)=>b===P,this.emitter=new z,this.rawValue_=e}get constraint(){return this.constraint_}get rawValue(){return this.rawValue_}set rawValue(e){this.setRawValue(e,{forceEmit:!1,last:!0})}setRawValue(e,t){const l=t??{forceEmit:!1,last:!0},b=this.constraint_?this.constraint_.constrain(e):e,P=this.rawValue_;this.equals_(P,b)&&!l.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=b,this.emitter.emit("change",{options:l,previousRawValue:P,rawValue:b,sender:this}))}}class he{constructor(e){this.emitter=new z,this.value_=e}get rawValue(){return this.value_}set rawValue(e){this.setRawValue(e,{forceEmit:!1,last:!0})}setRawValue(e,t){const l=t??{forceEmit:!1,last:!0},b=this.value_;b===e&&!l.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.value_=e,this.emitter.emit("change",{options:l,previousRawValue:b,rawValue:this.value_,sender:this}))}}function te(n,e){const t=e==null?void 0:e.constraint,l=e==null?void 0:e.equals;return!t&&!l?new he(n):new me(n,e)}class q{constructor(e){this.emitter=new z,this.valMap_=e;for(const t in this.valMap_)this.valMap_[t].emitter.on("change",()=>{this.emitter.emit("change",{key:t,sender:this})})}static createCore(e){return Object.keys(e).reduce((l,b)=>Object.assign(l,{[b]:te(e[b])}),{})}static fromObject(e){const t=this.createCore(e);return new q(t)}get(e){return this.valMap_[e].rawValue}set(e,t){this.valMap_[e].rawValue=t}value(e){return this.valMap_[e]}}function Pe(n,e){const l=Object.keys(e).reduce((b,P)=>{if(b===void 0)return;const A=e[P],U=A(n[P]);return U.succeeded?Object.assign(Object.assign({},b),{[P]:U.value}):void 0},{});return l}function fe(n,e){return n.reduce((t,l)=>{if(t===void 0)return;const b=e(l);if(!(!b.succeeded||b.value===void 0))return[...t,b.value]},[])}function ae(n){return n===null?!1:typeof n=="object"}function ne(n){return e=>t=>{if(!e&&t===void 0)return{succeeded:!1,value:void 0};if(e&&t===void 0)return{succeeded:!0,value:void 0};const l=n(t);return l!==void 0?{succeeded:!0,value:l}:{succeeded:!1,value:void 0}}}function be(n){return{custom:e=>ne(e)(n),boolean:ne(e=>typeof e=="boolean"?e:void 0)(n),number:ne(e=>typeof e=="number"?e:void 0)(n),string:ne(e=>typeof e=="string"?e:void 0)(n),function:ne(e=>typeof e=="function"?e:void 0)(n),constant:e=>ne(t=>t===e?e:void 0)(n),raw:ne(e=>e)(n),object:e=>ne(t=>{if(ae(t))return Pe(t,e)})(n),array:e=>ne(t=>{if(Array.isArray(t))return fe(t,e)})(n)}}const V={optional:be(!0),required:be(!1)};function le(n,e){const t=V.required.object(e)(n);return t.succeeded?t.value:void 0}function Ve(n){console.warn([`Missing '${n.key}' of ${n.target} in ${n.place}.`,"Please rebuild plugins with the latest core package."].join(" "))}function Oe(n){return n&&n.parentElement&&n.parentElement.removeChild(n),null}class we{constructor(e){this.value_=e}static create(e){return[new we(e),(t,l)=>{e.setRawValue(t,l)}]}get emitter(){return this.value_.emitter}get rawValue(){return this.value_.rawValue}}const Xe=N("");function un(n,e){return Y(n,Xe(void 0,e))}class Ge 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_]=we.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,l,b;const P=e??{};return new Ge(q.createCore({disabled:(t=P.disabled)!==null&&t!==void 0?t:!1,disposed:!1,hidden:(l=P.hidden)!==null&&l!==void 0?l:!1,parent:(b=P.parent)!==null&&b!==void 0?b:null}))}get globalDisabled(){return this.globalDisabled_}bindClassModifiers(e){j(this.globalDisabled_,un(e,"disabled")),F(this,"hidden",un(e,"hidden"))}bindDisabled(e){j(this.globalDisabled_,t=>{e.disabled=t})}bindTabIndex(e){j(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 l=e.previousRawValue;l==null||l.globalDisabled.emitter.off("change",this.onParentGlobalDisabledChange_),(t=this.get("parent"))===null||t===void 0||t.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_),this.updateGlobalDisabled_()}}function hn(){return["veryfirst","first","last","verylast"]}const zt=N(""),et={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class dt{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",()=>{hn().forEach(l=>{t.classList.remove(zt(void 0,et[l]))}),this.blade.get("positions").forEach(l=>{t.classList.add(zt(void 0,et[l]))})}),this.viewProps.handleDispose(()=>{Oe(t)})}get parent(){return this.parent_}set parent(e){if(this.parent_=e,!("parent"in this.viewProps.valMap_)){Ve({key:"parent",target:Ge.name,place:"BladeController.parent"});return}this.viewProps.set("parent",this.parent_?this.parent_.viewProps:null)}}const Be="http://www.w3.org/2000/svg";function Ye(n){n.offsetHeight}function Ut(n,e){const t=n.style.transition;n.style.transition="none",e(),n.style.transition=t}function tt(n){return n.ontouchstart!==void 0}function dn(){return globalThis}function zn(){return dn().document}function mn(n){const e=n.ownerDocument.defaultView;return e&&"document"in e?n.getContext("2d",{willReadFrequently:!0}):null}const fn={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 rt(n,e){const t=n.createElementNS(Be,"svg");return t.innerHTML=fn[e],t}function mt(n,e,t){n.insertBefore(e,n.children[t])}function vn(n){n.parentElement&&n.parentElement.removeChild(n)}function Gt(n){for(;n.children.length>0;)n.removeChild(n.children[0])}function bn(n){for(;n.childNodes.length>0;)n.removeChild(n.childNodes[0])}function ot(n){return n.relatedTarget?n.relatedTarget:"explicitOriginalTarget"in n?n.explicitOriginalTarget:null}const nt=N("lbl");function ft(n,e){const t=n.createDocumentFragment();return e.split(`
|
|
20
|
-
`).map(b=>n.createTextNode(b)).forEach((b,P)=>{P>0&&t.appendChild(n.createElement("br")),t.appendChild(b)}),t}class I{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(nt()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("div");l.classList.add(nt("l")),F(t.props,"label",P=>{w(P)?this.element.classList.add(nt(void 0,"nol")):(this.element.classList.remove(nt(void 0,"nol")),bn(l),l.appendChild(ft(e,P)))}),this.element.appendChild(l),this.labelElement=l;const b=e.createElement("div");b.classList.add(nt("v")),this.element.appendChild(b),this.valueElement=b}}class K extends dt{constructor(e,t){const l=t.valueController.viewProps;super(Object.assign(Object.assign({},t),{view:new I(e,{props:t.props,viewProps:l}),viewProps:l})),this.props=t.props,this.valueController=t.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}const H={id:"button",type:"blade",accept(n){const e=V,t=le(n,{title:e.required.string,view:e.required.constant("button"),label:e.optional.string});return t?{params:t}:null},controller(n){return new K(n.document,{blade:n.blade,props:q.fromObject({label:n.params.label}),valueController:new ce(n.document,{props:q.fromObject({title:n.params.title}),viewProps:n.viewProps})})},api(n){return!(n.controller instanceof K)||!(n.controller.valueController instanceof ce)?null:new G(n.controller)}};class ie extends dt{constructor(e){super(e),this.value=e.value}}function ye(){return new q({positions:te([],{equals:x})})}class Ie extends q{constructor(e){super(e)}static create(e){const t={completed:!0,expanded:e,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null},l=q.createCore(t);return new Ie(l)}get styleExpanded(){var e;return(e=this.get("temporaryExpanded"))!==null&&e!==void 0?e:this.get("expanded")}get styleHeight(){if(!this.styleExpanded)return"0";const e=this.get("expandedHeight");return this.get("shouldFixHeight")&&!w(e)?`${e}px`:"auto"}bindExpandedClass(e,t){const l=()=>{this.styleExpanded?e.classList.add(t):e.classList.remove(t)};F(this,"expanded",l),F(this,"temporaryExpanded",l)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function Mt(n,e){let t=0;return Ut(e,()=>{n.set("expandedHeight",null),n.set("temporaryExpanded",!0),Ye(e),t=e.clientHeight,n.set("temporaryExpanded",null),Ye(e)}),t}function Rt(n,e){e.style.height=n.styleHeight}function Ne(n,e){n.value("expanded").emitter.on("beforechange",()=>{n.set("completed",!1),w(n.get("expandedHeight"))&&n.set("expandedHeight",Mt(n,e)),n.set("shouldFixHeight",!0),Ye(e)}),n.emitter.on("change",()=>{Rt(n,e)}),Rt(n,e),e.addEventListener("transitionend",t=>{t.propertyName==="height"&&n.cleanUpTransition()})}class Fe extends a{constructor(e,t){super(e),this.rackApi_=t}}function us(n,e){return n.addBlade(Object.assign(Object.assign({},e),{view:"button"}))}function hs(n,e){return n.addBlade(Object.assign(Object.assign({},e),{view:"folder"}))}function ds(n,e){const t=e??{};return n.addBlade(Object.assign(Object.assign({},t),{view:"separator"}))}function Un(n,e){return n.addBlade(Object.assign(Object.assign({},e),{view:"tab"}))}class vt{constructor(e){this.emitter=new z,this.items_=[],this.cache_=new Set,this.onSubListAdd_=this.onSubListAdd_.bind(this),this.onSubListRemove_=this.onSubListRemove_.bind(this),this.extract_=e}get items(){return this.items_}allItems(){return Array.from(this.cache_)}find(e){for(const t of this.allItems())if(e(t))return t;return null}includes(e){return this.cache_.has(e)}add(e,t){if(this.includes(e))throw D.shouldNeverHappen();const l=t!==void 0?t:this.items_.length;this.items_.splice(l,0,e),this.cache_.add(e);const b=this.extract_(e);b&&(b.emitter.on("add",this.onSubListAdd_),b.emitter.on("remove",this.onSubListRemove_),b.allItems().forEach(P=>{this.cache_.add(P)})),this.emitter.emit("add",{index:l,item:e,root:this,target:this})}remove(e){const t=this.items_.indexOf(e);if(t<0)return;this.items_.splice(t,1),this.cache_.delete(e);const l=this.extract_(e);l&&(l.emitter.off("add",this.onSubListAdd_),l.emitter.off("remove",this.onSubListRemove_)),this.emitter.emit("remove",{index:t,item:e,root:this,target:this})}onSubListAdd_(e){this.cache_.add(e.item),this.emitter.emit("add",{index:e.index,item:e.item,root:this,target:e.target})}onSubListRemove_(e){this.cache_.delete(e.item),this.emitter.emit("remove",{index:e.index,item:e.item,root:this,target:e.target})}}class Gn extends a{constructor(e){super(e),this.onBindingChange_=this.onBindingChange_.bind(this),this.emitter_=new z,this.controller_.binding.emitter.on("change",this.onBindingChange_)}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}on(e,t){const l=t.bind(this);return this.emitter_.on(e,b=>{l(b.event)}),this}refresh(){this.controller_.binding.read()}onBindingChange_(e){const t=e.sender.target.read();this.emitter_.emit("change",{event:new u(this,t,this.controller_.binding.target.presetKey,e.options.last)})}}class Ee extends K{constructor(e,t){super(e,t),this.binding=t.binding}}class Rn extends a{constructor(e){super(e),this.onBindingUpdate_=this.onBindingUpdate_.bind(this),this.emitter_=new z,this.controller_.binding.emitter.on("update",this.onBindingUpdate_)}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}on(e,t){const l=t.bind(this);return this.emitter_.on(e,b=>{l(b.event)}),this}refresh(){this.controller_.binding.read()}onBindingUpdate_(e){const t=e.sender.target.read();this.emitter_.emit("update",{event:new h(this,t,this.controller_.binding.target.presetKey)})}}class qe 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 yi(n){return n instanceof gn?n.apiSet_:n instanceof Fe?n.rackApi_.apiSet_:null}function Kt(n,e){const t=n.find(l=>l.controller_===e);if(!t)throw D.shouldNeverHappen();return t}function xi(n,e,t){if(!O.isBindable(n))throw D.notBindable();return new O(n,e,t)}class gn extends a{constructor(e,t){super(e),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this),this.onRackInputChange_=this.onRackInputChange_.bind(this),this.onRackMonitorUpdate_=this.onRackMonitorUpdate_.bind(this),this.emitter_=new z,this.apiSet_=new vt(yi),this.pool_=t;const l=this.controller_.rack;l.emitter.on("add",this.onRackAdd_),l.emitter.on("remove",this.onRackRemove_),l.emitter.on("inputchange",this.onRackInputChange_),l.emitter.on("monitorupdate",this.onRackMonitorUpdate_),l.children.forEach(b=>{this.setUpApi_(b)})}get children(){return this.controller_.rack.children.map(e=>Kt(this.apiSet_,e))}addInput(e,t,l){const b=l??{},P=this.controller_.view.element.ownerDocument,A=this.pool_.createInput(P,xi(e,t,b.presetKey),b),U=new Gn(A);return this.add(U,b.index)}addMonitor(e,t,l){const b=l??{},P=this.controller_.view.element.ownerDocument,A=this.pool_.createMonitor(P,xi(e,t),b),U=new Rn(A);return this.add(U,b.index)}addFolder(e){return hs(this,e)}addButton(e){return us(this,e)}addSeparator(e){return ds(this,e)}addTab(e){return Un(this,e)}add(e,t){this.controller_.rack.add(e.controller_,t);const l=this.apiSet_.find(b=>b.controller_===e.controller_);return l&&this.apiSet_.remove(l),this.apiSet_.add(e),e}remove(e){this.controller_.rack.remove(e.controller_)}addBlade(e){const t=this.controller_.view.element.ownerDocument,l=this.pool_.createBlade(t,e),b=this.pool_.createBladeApi(l);return this.add(b,e.index)}on(e,t){const l=t.bind(this);return this.emitter_.on(e,b=>{l(b.event)}),this}setUpApi_(e){this.apiSet_.find(l=>l.controller_===e)||this.apiSet_.add(this.pool_.createBladeApi(e))}onRackAdd_(e){this.setUpApi_(e.bladeController)}onRackRemove_(e){if(e.isRoot){const t=Kt(this.apiSet_,e.bladeController);this.apiSet_.remove(t)}}onRackInputChange_(e){const t=e.bladeController;if(t instanceof Ee){const l=Kt(this.apiSet_,t),b=t.binding;this.emitter_.emit("change",{event:new u(l,b.target.read(),b.target.presetKey,e.options.last)})}else if(t instanceof ie){const l=Kt(this.apiSet_,t);this.emitter_.emit("change",{event:new u(l,t.value.rawValue,void 0,e.options.last)})}}onRackMonitorUpdate_(e){if(!(e.bladeController instanceof qe))throw D.shouldNeverHappen();const t=Kt(this.apiSet_,e.bladeController),l=e.bladeController.binding;this.emitter_.emit("update",{event:new h(t,l.target.read(),l.target.presetKey)})}}class Kn extends Fe{constructor(e,t){super(e,new gn(e.rackController,t)),this.emitter_=new z,this.controller_.foldable.value("expanded").emitter.on("change",l=>{this.emitter_.emit("fold",{event:new m(this,l.sender.rawValue)})}),this.rackApi_.on("change",l=>{this.emitter_.emit("change",{event:l})}),this.rackApi_.on("update",l=>{this.emitter_.emit("update",{event:l})})}get expanded(){return this.controller_.foldable.get("expanded")}set expanded(e){this.controller_.foldable.set("expanded",e)}get title(){return this.controller_.props.get("title")}set title(e){this.controller_.props.set("title",e)}get children(){return this.rackApi_.children}addInput(e,t,l){return this.rackApi_.addInput(e,t,l)}addMonitor(e,t,l){return this.rackApi_.addMonitor(e,t,l)}addFolder(e){return this.rackApi_.addFolder(e)}addButton(e){return this.rackApi_.addButton(e)}addSeparator(e){return this.rackApi_.addSeparator(e)}addTab(e){return this.rackApi_.addTab(e)}add(e,t){return this.rackApi_.add(e,t)}remove(e){this.rackApi_.remove(e)}addBlade(e){return this.rackApi_.addBlade(e)}on(e,t){const l=t.bind(this);return this.emitter_.on(e,b=>{l(b.event)}),this}}class $n extends dt{constructor(e){super({blade:e.blade,view:e.view,viewProps:e.rackController.viewProps}),this.rackController=e.rackController}}class ms{constructor(e,t){const l=N(t.viewName);this.element=e.createElement("div"),this.element.classList.add(l()),t.viewProps.bindClassModifiers(this.element)}}function fs(n,e){for(let t=0;t<n.length;t++){const l=n[t];if(l instanceof Ee&&l.binding===e)return l}return null}function vs(n,e){for(let t=0;t<n.length;t++){const l=n[t];if(l instanceof qe&&l.binding===e)return l}return null}function bs(n,e){for(let t=0;t<n.length;t++){const l=n[t];if(l instanceof ie&&l.value===e)return l}return null}function Xn(n){return n instanceof $t?n.rack:n instanceof $n?n.rackController.rack:null}function gs(n){const e=Xn(n);return e?e.bcSet_:null}class _s{constructor(e){var t,l;this.onBladePositionsChange_=this.onBladePositionsChange_.bind(this),this.onSetAdd_=this.onSetAdd_.bind(this),this.onSetRemove_=this.onSetRemove_.bind(this),this.onChildDispose_=this.onChildDispose_.bind(this),this.onChildPositionsChange_=this.onChildPositionsChange_.bind(this),this.onChildInputChange_=this.onChildInputChange_.bind(this),this.onChildMonitorUpdate_=this.onChildMonitorUpdate_.bind(this),this.onChildValueChange_=this.onChildValueChange_.bind(this),this.onChildViewPropsChange_=this.onChildViewPropsChange_.bind(this),this.onDescendantLayout_=this.onDescendantLayout_.bind(this),this.onDescendantInputChange_=this.onDescendantInputChange_.bind(this),this.onDescendantMonitorUpdate_=this.onDescendantMonitorUpdate_.bind(this),this.emitter=new z,this.blade_=(t=e.blade)!==null&&t!==void 0?t:null,(l=this.blade_)===null||l===void 0||l.value("positions").emitter.on("change",this.onBladePositionsChange_),this.viewProps=e.viewProps,this.bcSet_=new vt(gs),this.bcSet_.emitter.on("add",this.onSetAdd_),this.bcSet_.emitter.on("remove",this.onSetRemove_)}get children(){return this.bcSet_.items}add(e,t){var l;(l=e.parent)===null||l===void 0||l.remove(e),L(e,"parent")?e.parent=this:(e.parent_=this,Ve({key:"parent",target:"BladeController",place:"BladeRack.add"})),this.bcSet_.add(e,t)}remove(e){L(e,"parent")?e.parent=null:(e.parent_=null,Ve({key:"parent",target:"BladeController",place:"BladeRack.remove"})),this.bcSet_.remove(e)}find(e){return this.bcSet_.allItems().filter(t=>t instanceof e)}onSetAdd_(e){this.updatePositions_();const t=e.target===e.root;if(this.emitter.emit("add",{bladeController:e.item,index:e.index,isRoot:t,sender:this}),!t)return;const l=e.item;if(l.viewProps.emitter.on("change",this.onChildViewPropsChange_),l.blade.value("positions").emitter.on("change",this.onChildPositionsChange_),l.viewProps.handleDispose(this.onChildDispose_),l instanceof Ee)l.binding.emitter.on("change",this.onChildInputChange_);else if(l instanceof qe)l.binding.emitter.on("update",this.onChildMonitorUpdate_);else if(l instanceof ie)l.value.emitter.on("change",this.onChildValueChange_);else{const b=Xn(l);if(b){const P=b.emitter;P.on("layout",this.onDescendantLayout_),P.on("inputchange",this.onDescendantInputChange_),P.on("monitorupdate",this.onDescendantMonitorUpdate_)}}}onSetRemove_(e){this.updatePositions_();const t=e.target===e.root;if(this.emitter.emit("remove",{bladeController:e.item,isRoot:t,sender:this}),!t)return;const l=e.item;if(l instanceof Ee)l.binding.emitter.off("change",this.onChildInputChange_);else if(l instanceof qe)l.binding.emitter.off("update",this.onChildMonitorUpdate_);else if(l instanceof ie)l.value.emitter.off("change",this.onChildValueChange_);else{const b=Xn(l);if(b){const P=b.emitter;P.off("layout",this.onDescendantLayout_),P.off("inputchange",this.onDescendantInputChange_),P.off("monitorupdate",this.onDescendantMonitorUpdate_)}}}updatePositions_(){const e=this.bcSet_.items.filter(b=>!b.viewProps.get("hidden")),t=e[0],l=e[e.length-1];this.bcSet_.items.forEach(b=>{const P=[];b===t&&(P.push("first"),(!this.blade_||this.blade_.get("positions").includes("veryfirst"))&&P.push("veryfirst")),b===l&&(P.push("last"),(!this.blade_||this.blade_.get("positions").includes("verylast"))&&P.push("verylast")),b.blade.set("positions",P)})}onChildPositionsChange_(){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildViewPropsChange_(e){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildDispose_(){this.bcSet_.items.filter(t=>t.viewProps.get("disposed")).forEach(t=>{this.bcSet_.remove(t)})}onChildInputChange_(e){const t=fs(this.find(Ee),e.sender);if(!t)throw D.alreadyDisposed();this.emitter.emit("inputchange",{bladeController:t,options:e.options,sender:this})}onChildMonitorUpdate_(e){const t=vs(this.find(qe),e.sender);if(!t)throw D.alreadyDisposed();this.emitter.emit("monitorupdate",{bladeController:t,sender:this})}onChildValueChange_(e){const t=bs(this.find(ie),e.sender);if(!t)throw D.alreadyDisposed();this.emitter.emit("inputchange",{bladeController:t,options:e.options,sender:this})}onDescendantLayout_(e){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onDescendantInputChange_(e){this.emitter.emit("inputchange",{bladeController:e.bladeController,options:e.options,sender:this})}onDescendantMonitorUpdate_(e){this.emitter.emit("monitorupdate",{bladeController:e.bladeController,sender:this})}onBladePositionsChange_(){this.updatePositions_()}}class $t extends dt{constructor(e,t){super(Object.assign(Object.assign({},t),{view:new ms(e,{viewName:"brk",viewProps:t.viewProps})})),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this);const l=new _s({blade:t.root?void 0:t.blade,viewProps:t.viewProps});l.emitter.on("add",this.onRackAdd_),l.emitter.on("remove",this.onRackRemove_),this.rack=l,this.viewProps.handleDispose(()=>{for(let b=this.rack.children.length-1;b>=0;b--)this.rack.children[b].viewProps.set("disposed",!0)})}onRackAdd_(e){e.isRoot&&mt(this.view.element,e.bladeController.view.element,e.index)}onRackRemove_(e){e.isRoot&&vn(e.bladeController.view.element)}}const Ci=N("cnt");class ws{constructor(e,t){var l;this.className_=N((l=t.viewName)!==null&&l!==void 0?l:"fld"),this.element=e.createElement("div"),this.element.classList.add(this.className_(),Ci()),t.viewProps.bindClassModifiers(this.element),this.foldable_=t.foldable,this.foldable_.bindExpandedClass(this.element,this.className_(void 0,"expanded")),F(this.foldable_,"completed",Y(this.element,this.className_(void 0,"cpl")));const b=e.createElement("button");b.classList.add(this.className_("b")),F(t.props,"title",ee=>{w(ee)?this.element.classList.add(this.className_(void 0,"not")):this.element.classList.remove(this.className_(void 0,"not"))}),t.viewProps.bindDisabled(b),this.element.appendChild(b),this.buttonElement=b;const P=e.createElement("div");P.classList.add(this.className_("i")),this.element.appendChild(P);const A=e.createElement("div");A.classList.add(this.className_("t")),Z(t.props.value("title"),A),this.buttonElement.appendChild(A),this.titleElement=A;const U=e.createElement("div");U.classList.add(this.className_("m")),this.buttonElement.appendChild(U);const W=t.containerElement;W.classList.add(this.className_("c")),this.element.appendChild(W),this.containerElement=W}}class _n extends $n{constructor(e,t){var l;const b=Ie.create((l=t.expanded)!==null&&l!==void 0?l:!0),P=new $t(e,{blade:t.blade,root:t.root,viewProps:t.viewProps});super(Object.assign(Object.assign({},t),{rackController:P,view:new ws(e,{containerElement:P.view.element,foldable:b,props:t.props,viewName:t.root?"rot":void 0,viewProps:t.viewProps})})),this.onTitleClick_=this.onTitleClick_.bind(this),this.props=t.props,this.foldable=b,Ne(this.foldable,this.view.containerElement),this.rackController.rack.emitter.on("add",()=>{this.foldable.cleanUpTransition()}),this.rackController.rack.emitter.on("remove",()=>{this.foldable.cleanUpTransition()}),this.view.buttonElement.addEventListener("click",this.onTitleClick_)}get document(){return this.view.element.ownerDocument}onTitleClick_(){this.foldable.set("expanded",!this.foldable.get("expanded"))}}const ys={id:"folder",type:"blade",accept(n){const e=V,t=le(n,{title:e.required.string,view:e.required.constant("folder"),expanded:e.optional.boolean});return t?{params:t}:null},controller(n){return new _n(n.document,{blade:n.blade,expanded:n.params.expanded,props:q.fromObject({title:n.params.title}),viewProps:n.viewProps})},api(n){return n.controller instanceof _n?new Kn(n.controller,n.pool):null}};class kt extends ie{constructor(e,t){const l=t.valueController.viewProps;super(Object.assign(Object.assign({},t),{value:t.valueController.value,view:new I(e,{props:t.props,viewProps:l}),viewProps:l})),this.props=t.props,this.valueController=t.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class Pi extends a{}const Yn=N("spr");class xs{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Yn()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("hr");l.classList.add(Yn("r")),this.element.appendChild(l)}}class Xt extends dt{constructor(e,t){super(Object.assign(Object.assign({},t),{view:new xs(e,{viewProps:t.viewProps})}))}}const Cs={id:"separator",type:"blade",accept(n){const t=le(n,{view:V.required.constant("separator")});return t?{params:t}:null},controller(n){return new Xt(n.document,{blade:n.blade,viewProps:n.viewProps})},api(n){return n.controller instanceof Xt?new Pi(n.controller):null}},Le=N("tbi");class Ps{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Le()),t.viewProps.bindClassModifiers(this.element),F(t.props,"selected",P=>{P?this.element.classList.add(Le(void 0,"sel")):this.element.classList.remove(Le(void 0,"sel"))});const l=e.createElement("button");l.classList.add(Le("b")),t.viewProps.bindDisabled(l),this.element.appendChild(l),this.buttonElement=l;const b=e.createElement("div");b.classList.add(Le("t")),Z(t.props.value("title"),b),this.buttonElement.appendChild(b),this.titleElement=b}}class wn{constructor(e,t){this.emitter=new z,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new Ps(e,{props:t.props,viewProps:t.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class Mi{constructor(e,t){this.onItemClick_=this.onItemClick_.bind(this),this.ic_=new wn(e,{props:t.itemProps,viewProps:Ge.create()}),this.ic_.emitter.on("click",this.onItemClick_),this.cc_=new $t(e,{blade:ye(),viewProps:Ge.create()}),this.props=t.props,F(this.props,"selected",l=>{this.itemController.props.set("selected",l),this.contentController.viewProps.set("hidden",!l)})}get itemController(){return this.ic_}get contentController(){return this.cc_}onItemClick_(){this.props.set("selected",!0)}}class qn{constructor(e,t){this.controller_=e,this.rackApi_=t}get title(){var e;return(e=this.controller_.itemController.props.get("title"))!==null&&e!==void 0?e:""}set title(e){this.controller_.itemController.props.set("title",e)}get selected(){return this.controller_.props.get("selected")}set selected(e){this.controller_.props.set("selected",e)}get children(){return this.rackApi_.children}addButton(e){return this.rackApi_.addButton(e)}addFolder(e){return this.rackApi_.addFolder(e)}addSeparator(e){return this.rackApi_.addSeparator(e)}addTab(e){return this.rackApi_.addTab(e)}add(e,t){this.rackApi_.add(e,t)}remove(e){this.rackApi_.remove(e)}addInput(e,t,l){return this.rackApi_.addInput(e,t,l)}addMonitor(e,t,l){return this.rackApi_.addMonitor(e,t,l)}addBlade(e){return this.rackApi_.addBlade(e)}}class ki extends Fe{constructor(e,t){super(e,new gn(e.rackController,t)),this.onPageAdd_=this.onPageAdd_.bind(this),this.onPageRemove_=this.onPageRemove_.bind(this),this.onSelect_=this.onSelect_.bind(this),this.emitter_=new z,this.pageApiMap_=new Map,this.rackApi_.on("change",l=>{this.emitter_.emit("change",{event:l})}),this.rackApi_.on("update",l=>{this.emitter_.emit("update",{event:l})}),this.controller_.tab.selectedIndex.emitter.on("change",this.onSelect_),this.controller_.pageSet.emitter.on("add",this.onPageAdd_),this.controller_.pageSet.emitter.on("remove",this.onPageRemove_),this.controller_.pageSet.items.forEach(l=>{this.setUpPageApi_(l)})}get pages(){return this.controller_.pageSet.items.map(e=>{const t=this.pageApiMap_.get(e);if(!t)throw D.shouldNeverHappen();return t})}addPage(e){const t=this.controller_.view.element.ownerDocument,l=new Mi(t,{itemProps:q.fromObject({selected:!1,title:e.title}),props:q.fromObject({selected:!1})});this.controller_.add(l,e.index);const b=this.pageApiMap_.get(l);if(!b)throw D.shouldNeverHappen();return b}removePage(e){this.controller_.remove(e)}on(e,t){const l=t.bind(this);return this.emitter_.on(e,b=>{l(b.event)}),this}setUpPageApi_(e){const t=this.rackApi_.apiSet_.find(b=>b.controller_===e.contentController);if(!t)throw D.shouldNeverHappen();const l=new qn(e,t);this.pageApiMap_.set(e,l)}onPageAdd_(e){this.setUpPageApi_(e.item)}onPageRemove_(e){if(!this.pageApiMap_.get(e.item))throw D.shouldNeverHappen();this.pageApiMap_.delete(e.item)}onSelect_(e){this.emitter_.emit("select",{event:new _(this,e.rawValue)})}}const Si=-1;class Ms{constructor(){this.onItemSelectedChange_=this.onItemSelectedChange_.bind(this),this.empty=te(!0),this.selectedIndex=te(Si),this.items_=[]}add(e,t){const l=t??this.items_.length;this.items_.splice(l,0,e),e.emitter.on("change",this.onItemSelectedChange_),this.keepSelection_()}remove(e){const t=this.items_.indexOf(e);t<0||(this.items_.splice(t,1),e.emitter.off("change",this.onItemSelectedChange_),this.keepSelection_())}keepSelection_(){if(this.items_.length===0){this.selectedIndex.rawValue=Si,this.empty.rawValue=!0;return}const e=this.items_.findIndex(t=>t.rawValue);e<0?(this.items_.forEach((t,l)=>{t.rawValue=l===0}),this.selectedIndex.rawValue=0):(this.items_.forEach((t,l)=>{t.rawValue=l===e}),this.selectedIndex.rawValue=e),this.empty.rawValue=!1}onItemSelectedChange_(e){if(e.rawValue){const t=this.items_.findIndex(l=>l===e.sender);this.items_.forEach((l,b)=>{l.rawValue=b===t}),this.selectedIndex.rawValue=t}else this.keepSelection_()}}const St=N("tab");class Lt{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(St(),Ci()),t.viewProps.bindClassModifiers(this.element),j(t.empty,Y(this.element,St(void 0,"nop")));const l=e.createElement("div");l.classList.add(St("t")),this.element.appendChild(l),this.itemsElement=l;const b=e.createElement("div");b.classList.add(St("i")),this.element.appendChild(b);const P=t.contentsElement;P.classList.add(St("c")),this.element.appendChild(P),this.contentsElement=P}}class Yt extends $n{constructor(e,t){const l=new $t(e,{blade:t.blade,viewProps:t.viewProps}),b=new Ms;super({blade:t.blade,rackController:l,view:new Lt(e,{contentsElement:l.view.element,empty:b.empty,viewProps:t.viewProps})}),this.onPageAdd_=this.onPageAdd_.bind(this),this.onPageRemove_=this.onPageRemove_.bind(this),this.pageSet_=new vt(()=>null),this.pageSet_.emitter.on("add",this.onPageAdd_),this.pageSet_.emitter.on("remove",this.onPageRemove_),this.tab=b}get pageSet(){return this.pageSet_}add(e,t){this.pageSet_.add(e,t)}remove(e){this.pageSet_.remove(this.pageSet_.items[e])}onPageAdd_(e){const t=e.item;mt(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 Qn={id:"tab",type:"blade",accept(n){const e=V,t=le(n,{pages:e.required.array(e.required.object({title:e.required.string})),view:e.required.constant("tab")});return!t||t.pages.length===0?null:{params:t}},controller(n){const e=new Yt(n.document,{blade:n.blade,viewProps:n.viewProps});return n.params.pages.forEach(t=>{const l=new Mi(n.document,{itemProps:q.fromObject({selected:!1,title:t.title}),props:q.fromObject({selected:!1})});e.add(l)}),e},api(n){return n.controller instanceof Yt?new ki(n.controller,n.pool):null}};function ks(n,e){const t=n.accept(e.params);if(!t)return null;const l=V.optional.boolean(e.params.disabled).value,b=V.optional.boolean(e.params.hidden).value;return n.controller({blade:ye(),document:e.document,params:Object.assign(Object.assign({},t.params),{disabled:l,hidden:b}),viewProps:Ge.create({disabled:l,hidden:b})})}class Li{constructor(){this.disabled=!1,this.emitter=new z}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class Zn{constructor(e,t){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=e,this.emitter=new z,this.interval_=t,this.setTimer_()}get disabled(){return this.disabled_}set disabled(e){this.disabled_=e,this.disabled_?this.clearTimer_():this.setTimer_()}dispose(){this.clearTimer_()}clearTimer_(){if(this.timerId_===null)return;const e=this.doc_.defaultView;e&&e.clearInterval(this.timerId_),this.timerId_=null}setTimer_(){if(this.clearTimer_(),this.interval_<=0)return;const e=this.doc_.defaultView;e&&(this.timerId_=e.setInterval(this.onTick_,this.interval_))}onTick_(){this.disabled_||this.emitter.emit("tick",{sender:this})}}class at{constructor(e){this.constraints=e}constrain(e){return this.constraints.reduce((t,l)=>l.constrain(t),e)}}function _e(n,e){if(n instanceof e)return n;if(n instanceof at){const t=n.constraints.reduce((l,b)=>l||(b instanceof e?b:null),null);if(t)return t}return null}class bt{constructor(e){this.values=q.fromObject({max:e.max,min:e.min})}constrain(e){const t=this.values.get("max"),l=this.values.get("min");return Math.min(Math.max(e,l),t)}}class Qe{constructor(e){this.values=q.fromObject({options:e})}get options(){return this.values.get("options")}constrain(e){const t=this.values.get("options");return t.length===0||t.filter(b=>b.value===e).length>0?e:t[0].value}}class je{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"),l=this.values.get("min");let b=e;return w(l)||(b=Math.max(b,l)),w(t)||(b=Math.min(b,t)),b}}class yn{constructor(e,t=0){this.step=e,this.origin=t}constrain(e){const t=this.origin%this.step,l=Math.round((e-t)/this.step);return t+l*this.step}}const Wn=N("lst");class Jn{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.props_=t.props,this.element=e.createElement("div"),this.element.classList.add(Wn()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("select");l.classList.add(Wn("s")),F(this.props_,"options",P=>{Gt(l),P.forEach((A,U)=>{const W=e.createElement("option");W.dataset.index=String(U),W.textContent=A.text,W.value=String(A.value),l.appendChild(W)})}),t.viewProps.bindDisabled(l),this.element.appendChild(l),this.selectElement=l;const b=e.createElement("div");b.classList.add(Wn("m")),b.appendChild(rt(e,"dropdown")),this.element.appendChild(b),t.value.emitter.on("change",this.onValueChange_),this.value_=t.value,this.update_()}update_(){this.selectElement.value=String(this.value_.rawValue)}onValueChange_(){this.update_()}}class qt{constructor(e,t){this.onSelectChange_=this.onSelectChange_.bind(this),this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.view=new Jn(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.view.selectElement.addEventListener("change",this.onSelectChange_)}onSelectChange_(e){const l=e.currentTarget.selectedOptions.item(0);if(!l)return;const b=Number(l.dataset.index);this.value.rawValue=this.props.get("options")[b].value}}const Ai=N("pop");class Vi{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Ai()),t.viewProps.bindClassModifiers(this.element),j(t.shows,Y(this.element,Ai(void 0,"v")))}}class Ii{constructor(e,t){this.shows=te(!1),this.viewProps=t.viewProps,this.view=new Vi(e,{shows:this.shows,viewProps:this.viewProps})}}const Qt=N("txt");class Di{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(Qt()),t.viewProps.bindClassModifiers(this.element),this.props_=t.props,this.props_.emitter.on("change",this.onChange_);const l=e.createElement("input");l.classList.add(Qt("i")),l.type="text",t.viewProps.bindDisabled(l),this.element.appendChild(l),this.inputElement=l,t.value.emitter.on("change",this.onChange_),this.value_=t.value,this.refresh()}refresh(){const e=this.props_.get("formatter");this.inputElement.value=e(this.value_.rawValue)}onChange_(){this.refresh()}}class xn{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 Di(e,{props:t.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(e){const l=e.currentTarget.value,b=this.parser_(l);w(b)||(this.value.rawValue=b),this.view.refresh()}}function Ss(n){return String(n)}function Ti(n){return n==="false"?!1:!!n}function Oi(n){return Ss(n)}class Ls{constructor(e){this.text=e}evaluate(){return Number(this.text)}toString(){return this.text}}const As={"**":(n,e)=>Math.pow(n,e),"*":(n,e)=>n*e,"/":(n,e)=>n/e,"%":(n,e)=>n%e,"+":(n,e)=>n+e,"-":(n,e)=>n-e,"<<":(n,e)=>n<<e,">>":(n,e)=>n>>e,">>>":(n,e)=>n>>>e,"&":(n,e)=>n&e,"^":(n,e)=>n^e,"|":(n,e)=>n|e};class Vs{constructor(e,t,l){this.left=t,this.operator=e,this.right=l}evaluate(){const e=As[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 Is={"+":n=>n,"-":n=>-n,"~":n=>~n};class Ds{constructor(e,t){this.operator=e,this.expression=t}evaluate(){const e=Is[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 Hn(n){return(e,t)=>{for(let l=0;l<n.length;l++){const b=n[l](e,t);if(b!=="")return b}return""}}function Zt(n,e){var t;const l=n.substr(e).match(/^\s+/);return(t=l&&l[0])!==null&&t!==void 0?t:""}function Ts(n,e){const t=n.substr(e,1);return t.match(/^[1-9]$/)?t:""}function Wt(n,e){var t;const l=n.substr(e).match(/^[0-9]+/);return(t=l&&l[0])!==null&&t!==void 0?t:""}function Ei(n,e){const t=Wt(n,e);if(t!=="")return t;const l=n.substr(e,1);if(e+=1,l!=="-"&&l!=="+")return"";const b=Wt(n,e);return b===""?"":l+b}function ei(n,e){const t=n.substr(e,1);if(e+=1,t.toLowerCase()!=="e")return"";const l=Ei(n,e);return l===""?"":t+l}function Bi(n,e){const t=n.substr(e,1);if(t==="0")return t;const l=Ts(n,e);return e+=l.length,l===""?"":l+Wt(n,e)}function ti(n,e){const t=Bi(n,e);if(e+=t.length,t==="")return"";const l=n.substr(e,1);if(e+=l.length,l!==".")return"";const b=Wt(n,e);return e+=b.length,t+l+b+ei(n,e)}function Os(n,e){const t=n.substr(e,1);if(e+=t.length,t!==".")return"";const l=Wt(n,e);return e+=l.length,l===""?"":t+l+ei(n,e)}function Es(n,e){const t=Bi(n,e);return e+=t.length,t===""?"":t+ei(n,e)}const Bs=Hn([ti,Os,Es]);function lt(n,e){var t;const l=n.substr(e).match(/^[01]+/);return(t=l&&l[0])!==null&&t!==void 0?t:""}function Ns(n,e){const t=n.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0b")return"";const l=lt(n,e);return l===""?"":t+l}function Fs(n,e){var t;const l=n.substr(e).match(/^[0-7]+/);return(t=l&&l[0])!==null&&t!==void 0?t:""}function Ni(n,e){const t=n.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0o")return"";const l=Fs(n,e);return l===""?"":t+l}function js(n,e){var t;const l=n.substr(e).match(/^[0-9a-f]+/i);return(t=l&&l[0])!==null&&t!==void 0?t:""}function Fi(n,e){const t=n.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0x")return"";const l=js(n,e);return l===""?"":t+l}const ni=Hn([Ns,Ni,Fi]),zs=Hn([ni,Bs]);function ji(n,e){const t=zs(n,e);return e+=t.length,t===""?null:{evaluable:new Ls(t),cursor:e}}function Re(n,e){const t=n.substr(e,1);if(e+=t.length,t!=="(")return null;const l=Cn(n,e);if(!l)return null;e=l.cursor,e+=Zt(n,e).length;const b=n.substr(e,1);return e+=b.length,b!==")"?null:{evaluable:l.evaluable,cursor:e}}function Us(n,e){var t;return(t=ji(n,e))!==null&&t!==void 0?t:Re(n,e)}function zi(n,e){const t=Us(n,e);if(t)return t;const l=n.substr(e,1);if(e+=l.length,l!=="+"&&l!=="-"&&l!=="~")return null;const b=zi(n,e);return b?(e=b.cursor,{cursor:e,evaluable:new Ds(l,b.evaluable)}):null}function ii(n,e,t){t+=Zt(e,t).length;const l=n.filter(b=>e.startsWith(b,t))[0];return l?(t+=l.length,t+=Zt(e,t).length,{cursor:t,operator:l}):null}function Gs(n,e){return(t,l)=>{const b=n(t,l);if(!b)return null;l=b.cursor;let P=b.evaluable;for(;;){const A=ii(e,t,l);if(!A)break;l=A.cursor;const U=n(t,l);if(!U)return null;l=U.cursor,P=new Vs(A.operator,P,U.evaluable)}return P?{cursor:l,evaluable:P}:null}}const ct=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((n,e)=>Gs(n,e),zi);function Cn(n,e){return e+=Zt(n,e).length,ct(n,e)}function Rs(n){const e=Cn(n,0);return!e||e.cursor+Zt(n,e.cursor).length!==n.length?null:e.evaluable}function Ze(n){var e;const t=Rs(n);return(e=t==null?void 0:t.evaluate())!==null&&e!==void 0?e:null}function Ui(n){if(typeof n=="number")return n;if(typeof n=="string"){const e=Ze(n);if(!w(e))return e}return 0}function gt(n){return String(n)}function Ae(n){return e=>e.toFixed(Math.max(Math.min(n,20),0))}const si=Ae(0);function Jt(n){return si(n)+"%"}function ri(n){return String(n)}function We(n){return n}function Gi(n,e){for(;n.length<e;)n.push(void 0)}function Ri(n){const e=[];return Gi(e,n),te(e)}function Ki(n){const e=n.indexOf(void 0);return e<0?n:n.slice(0,e)}function $i(n,e){const t=[...Ki(n),e];return t.length>n.length?t.splice(0,t.length-n.length):Gi(t,n.length),t}function At({primary:n,secondary:e,forward:t,backward:l}){let b=!1;function P(A){b||(b=!0,A(),b=!1)}n.emitter.on("change",A=>{P(()=>{e.setRawValue(t(n,e),A.options)})}),e.emitter.on("change",A=>{P(()=>{n.setRawValue(l(n,e),A.options)}),P(()=>{e.setRawValue(t(n,e),A.options)})}),P(()=>{e.setRawValue(t(n,e),{forceEmit:!1,last:!0})})}function Se(n,e){const t=n*(e.altKey?.1:1)*(e.shiftKey?10:1);return e.upKey?+t:e.downKey?-t:0}function Vt(n){return{altKey:n.altKey,downKey:n.key==="ArrowDown",shiftKey:n.shiftKey,upKey:n.key==="ArrowUp"}}function Ke(n){return{altKey:n.altKey,downKey:n.key==="ArrowLeft",shiftKey:n.shiftKey,upKey:n.key==="ArrowRight"}}function Ks(n){return n==="ArrowUp"||n==="ArrowDown"}function oi(n){return Ks(n)||n==="ArrowLeft"||n==="ArrowRight"}function Pn(n,e){var t,l;const b=e.ownerDocument.defaultView,P=e.getBoundingClientRect();return{x:n.pageX-(((t=b&&b.scrollX)!==null&&t!==void 0?t:0)+P.left),y:n.pageY-(((l=b&&b.scrollY)!==null&&l!==void 0?l:0)+P.top)}}class it{constructor(e){this.lastTouch_=null,this.onDocumentMouseMove_=this.onDocumentMouseMove_.bind(this),this.onDocumentMouseUp_=this.onDocumentMouseUp_.bind(this),this.onMouseDown_=this.onMouseDown_.bind(this),this.onTouchEnd_=this.onTouchEnd_.bind(this),this.onTouchMove_=this.onTouchMove_.bind(this),this.onTouchStart_=this.onTouchStart_.bind(this),this.elem_=e,this.emitter=new z,e.addEventListener("touchstart",this.onTouchStart_,{passive:!1}),e.addEventListener("touchmove",this.onTouchMove_,{passive:!0}),e.addEventListener("touchend",this.onTouchEnd_),e.addEventListener("mousedown",this.onMouseDown_)}computePosition_(e){const t=this.elem_.getBoundingClientRect();return{bounds:{width:t.width,height:t.height},point:e?{x:e.x,y:e.y}:null}}onMouseDown_(e){var t;e.preventDefault(),(t=e.currentTarget)===null||t===void 0||t.focus();const l=this.elem_.ownerDocument;l.addEventListener("mousemove",this.onDocumentMouseMove_),l.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(Pn(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onDocumentMouseMove_(e){this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(Pn(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_(Pn(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onTouchStart_(e){e.preventDefault();const t=e.targetTouches.item(0),l=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(t?{x:t.clientX-l.left,y:t.clientY-l.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=t}onTouchMove_(e){const t=e.targetTouches.item(0),l=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(t?{x:t.clientX-l.left,y:t.clientY-l.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=t}onTouchEnd_(e){var t;const l=(t=e.targetTouches.item(0))!==null&&t!==void 0?t:this.lastTouch_,b=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:e.altKey,data:this.computePosition_(l?{x:l.clientX-b.left,y:l.clientY-b.top}:void 0),sender:this,shiftKey:e.shiftKey})}}function xe(n,e,t,l,b){const P=(n-e)/(t-e);return l+P*(b-l)}function Xi(n){return String(n.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function Me(n,e,t){return Math.min(Math.max(n,e),t)}function ai(n,e){return(n%e+e)%e}const ze=N("txt");class Ht{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.props_=t.props,this.props_.emitter.on("change",this.onChange_),this.element=e.createElement("div"),this.element.classList.add(ze(),ze(void 0,"num")),t.arrayPosition&&this.element.classList.add(ze(void 0,t.arrayPosition)),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("input");l.classList.add(ze("i")),l.type="text",t.viewProps.bindDisabled(l),this.element.appendChild(l),this.inputElement=l,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=t.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add(ze()),this.inputElement.classList.add(ze("i"));const b=e.createElement("div");b.classList.add(ze("k")),this.element.appendChild(b),this.knobElement=b;const P=e.createElementNS(Be,"svg");P.classList.add(ze("g")),this.knobElement.appendChild(P);const A=e.createElementNS(Be,"path");A.classList.add(ze("gb")),P.appendChild(A),this.guideBodyElem_=A;const U=e.createElementNS(Be,"path");U.classList.add(ze("gh")),P.appendChild(U),this.guideHeadElem_=U;const W=e.createElement("div");W.classList.add(N("tt")()),this.knobElement.appendChild(W),this.tooltipElem_=W,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.refresh()}onDraggingChange_(e){if(e.rawValue===null){this.element.classList.remove(ze(void 0,"drg"));return}this.element.classList.add(ze(void 0,"drg"));const t=e.rawValue/this.props_.get("draggingScale"),l=t+(t>0?-1:t<0?1:0),b=Me(-l,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${l+b},0 L${l},4 L${l+b},8`,`M ${t},-1 L${t},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${t},4`);const P=this.props_.get("formatter");this.tooltipElem_.textContent=P(this.value.rawValue),this.tooltipElem_.style.left=`${t}px`}refresh(){const e=this.props_.get("formatter");this.inputElement.value=e(this.value.rawValue)}onChange_(){this.refresh()}}class It{constructor(e,t){var l;this.originRawValue_=0,this.onInputChange_=this.onInputChange_.bind(this),this.onInputKeyDown_=this.onInputKeyDown_.bind(this),this.onInputKeyUp_=this.onInputKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=t.baseStep,this.parser_=t.parser,this.props=t.props,this.sliderProps_=(l=t.sliderProps)!==null&&l!==void 0?l:null,this.value=t.value,this.viewProps=t.viewProps,this.dragging_=te(null),this.view=new Ht(e,{arrayPosition:t.arrayPosition,dragging:this.dragging_,props:this.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.inputElement.addEventListener("keydown",this.onInputKeyDown_),this.view.inputElement.addEventListener("keyup",this.onInputKeyUp_);const b=new it(this.view.knobElement);b.emitter.on("down",this.onPointerDown_),b.emitter.on("move",this.onPointerMove_),b.emitter.on("up",this.onPointerUp_)}constrainValue_(e){var t,l;const b=(t=this.sliderProps_)===null||t===void 0?void 0:t.get("minValue"),P=(l=this.sliderProps_)===null||l===void 0?void 0:l.get("maxValue");let A=e;return b!==void 0&&(A=Math.max(A,b)),P!==void 0&&(A=Math.min(A,P)),A}onInputChange_(e){const l=e.currentTarget.value,b=this.parser_(l);w(b)||(this.value.rawValue=this.constrainValue_(b)),this.view.refresh()}onInputKeyDown_(e){const t=Se(this.baseStep_,Vt(e));t!==0&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+t),{forceEmit:!1,last:!1})}onInputKeyUp_(e){Se(this.baseStep_,Vt(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 en=N("sld");class $s{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(en()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("div");l.classList.add(en("t")),t.viewProps.bindTabIndex(l),this.element.appendChild(l),this.trackElement=l;const b=e.createElement("div");b.classList.add(en("k")),this.trackElement.appendChild(b),this.knobElement=b,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.update_()}update_(){const e=Me(xe(this.value.rawValue,this.props_.get("minValue"),this.props_.get("maxValue"),0,100),0,100);this.knobElement.style.width=`${e}%`}onChange_(){this.update_()}}class Xs{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 $s(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new it(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(xe(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=Se(this.baseStep_,Ke(e));t!==0&&this.value.setRawValue(this.value.rawValue+t,{forceEmit:!1,last:!1})}onKeyUp_(e){Se(this.baseStep_,Ke(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const Te=N("sldtxt");class li{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Te());const l=e.createElement("div");l.classList.add(Te("s")),this.sliderView_=t.sliderView,l.appendChild(this.sliderView_.element),this.element.appendChild(l);const b=e.createElement("div");b.classList.add(Te("t")),this.textView_=t.textView,b.appendChild(this.textView_.element),this.element.appendChild(b)}}class tn{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.sliderC_=new Xs(e,{baseStep:t.baseStep,props:t.sliderProps,value:t.value,viewProps:this.viewProps}),this.textC_=new It(e,{baseStep:t.baseStep,parser:t.parser,props:t.textProps,sliderProps:t.sliderProps,value:t.value,viewProps:t.viewProps}),this.view=new li(e,{sliderView:this.sliderC_.view,textView:this.textC_.view})}get sliderController(){return this.sliderC_}get textController(){return this.textC_}}function _t(n,e){n.write(e)}function nn(n){const e=V;if(Array.isArray(n))return e.required.array(e.required.object({text:e.required.string,value:e.required.raw}))(n).value;if(typeof n=="object")return e.required.raw(n).value}function pt(n){if(n==="inline"||n==="popup")return n}function st(n){const e=V;return e.required.object({max:e.optional.number,min:e.optional.number,step:e.optional.number})(n).value}function ci(n){if(Array.isArray(n))return n;const e=[];return Object.keys(n).forEach(t=>{e.push({text:t,value:n[t]})}),e}function Mn(n){return w(n)?null:new Qe(ci(n))}function Ys(n){const e=n?_e(n,yn):null;return e?e.step:null}function kn(n,e){const t=n&&_e(n,yn);return t?Xi(t.step):Math.max(Xi(e),2)}function Dt(n){const e=Ys(n);return e??1}function Tt(n,e){var t;const l=n&&_e(n,yn),b=Math.abs((t=l==null?void 0:l.step)!==null&&t!==void 0?t:e);return b===0?.1:Math.pow(10,Math.floor(Math.log10(b))-1)}const sn=N("ckb");class Yi{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(sn()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("label");l.classList.add(sn("l")),this.element.appendChild(l);const b=e.createElement("input");b.classList.add(sn("i")),b.type="checkbox",l.appendChild(b),this.inputElement=b,t.viewProps.bindDisabled(this.inputElement);const P=e.createElement("div");P.classList.add(sn("w")),l.appendChild(P);const A=rt(e,"check");P.appendChild(A),t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.update_()}update_(){this.inputElement.checked=this.value.rawValue}onValueChange_(){this.update_()}}class qi{constructor(e,t){this.onInputChange_=this.onInputChange_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new Yi(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 rn(n){const e=[],t=Mn(n.options);return t&&e.push(t),new at(e)}const Qi={id:"input-bool",type:"input",accept:(n,e)=>{if(typeof n!="boolean")return null;const l=le(e,{options:V.optional.custom(nn)});return l?{initialValue:n,params:l}:null},binding:{reader:n=>Ti,constraint:n=>rn(n.params),writer:n=>_t},controller:n=>{const e=n.document,t=n.value,l=n.constraint,b=l&&_e(l,Qe);return b?new qt(e,{props:new q({options:b.values.value("options")}),value:t,viewProps:n.viewProps}):new qi(e,{value:t,viewProps:n.viewProps})}},ut=N("col");class Sn{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(ut()),t.foldable.bindExpandedClass(this.element,ut(void 0,"expanded")),F(t.foldable,"completed",Y(this.element,ut(void 0,"cpl")));const l=e.createElement("div");l.classList.add(ut("h")),this.element.appendChild(l);const b=e.createElement("div");b.classList.add(ut("s")),l.appendChild(b),this.swatchElement=b;const P=e.createElement("div");if(P.classList.add(ut("t")),l.appendChild(P),this.textElement=P,t.pickerLayout==="inline"){const A=e.createElement("div");A.classList.add(ut("p")),this.element.appendChild(A),this.pickerElement=A}else this.pickerElement=null}}function qs(n,e,t){const l=Me(n/255,0,1),b=Me(e/255,0,1),P=Me(t/255,0,1),A=Math.max(l,b,P),U=Math.min(l,b,P),W=A-U;let ee=0,de=0;const ve=(U+A)/2;return W!==0&&(de=W/(1-Math.abs(A+U-1)),l===A?ee=(b-P)/W:b===A?ee=2+(P-l)/W:ee=4+(l-b)/W,ee=ee/6+(ee<0?1:0)),[ee*360,de*100,ve*100]}function pi(n,e,t){const l=(n%360+360)%360,b=Me(e/100,0,1),P=Me(t/100,0,1),A=(1-Math.abs(2*P-1))*b,U=A*(1-Math.abs(l/60%2-1)),W=P-A/2;let ee,de,ve;return l>=0&&l<60?[ee,de,ve]=[A,U,0]:l>=60&&l<120?[ee,de,ve]=[U,A,0]:l>=120&&l<180?[ee,de,ve]=[0,A,U]:l>=180&&l<240?[ee,de,ve]=[0,U,A]:l>=240&&l<300?[ee,de,ve]=[U,0,A]:[ee,de,ve]=[A,0,U],[(ee+W)*255,(de+W)*255,(ve+W)*255]}function Qs(n,e,t){const l=Me(n/255,0,1),b=Me(e/255,0,1),P=Me(t/255,0,1),A=Math.max(l,b,P),U=Math.min(l,b,P),W=A-U;let ee;W===0?ee=0:A===l?ee=60*(((b-P)/W%6+6)%6):A===b?ee=60*((P-l)/W+2):ee=60*((l-b)/W+4);const de=A===0?0:W/A,ve=A;return[ee,de*100,ve*100]}function Zi(n,e,t){const l=ai(n,360),b=Me(e/100,0,1),P=Me(t/100,0,1),A=P*b,U=A*(1-Math.abs(l/60%2-1)),W=P-A;let ee,de,ve;return l>=0&&l<60?[ee,de,ve]=[A,U,0]:l>=60&&l<120?[ee,de,ve]=[U,A,0]:l>=120&&l<180?[ee,de,ve]=[0,A,U]:l>=180&&l<240?[ee,de,ve]=[0,U,A]:l>=240&&l<300?[ee,de,ve]=[U,0,A]:[ee,de,ve]=[A,0,U],[(ee+W)*255,(de+W)*255,(ve+W)*255]}function Zs(n,e,t){const l=t+e*(100-Math.abs(2*t-100))/200;return[n,l!==0?e*(100-Math.abs(2*t-100))/l:0,t+e*(100-Math.abs(2*t-100))/(2*100)]}function Ws(n,e,t){const l=100-Math.abs(t*(200-e)/100-100);return[n,l!==0?e*t/l:0,t*(200-e)/(2*100)]}function d(n){return[n[0],n[1],n[2]]}function o(n,e){return[n[0],n[1],n[2],e]}const p={hsl:{hsl:(n,e,t)=>[n,e,t],hsv:Zs,rgb:pi},hsv:{hsl:Ws,hsv:(n,e,t)=>[n,e,t],rgb:Zi},rgb:{hsl:qs,hsv:Qs,rgb:(n,e,t)=>[n,e,t]}};function v(n,e){return[e==="float"?1:n==="rgb"?255:360,e==="float"?1:n==="rgb"?255:100,e==="float"?1:n==="rgb"?255:100]}function C(n,e){return n===e?e:ai(n,e)}function S(n,e,t){var l;const b=v(e,t);return[e==="rgb"?Me(n[0],0,b[0]):C(n[0],b[0]),Me(n[1],0,b[1]),Me(n[2],0,b[2]),Me((l=n[3])!==null&&l!==void 0?l:1,0,1)]}function T(n,e,t,l){const b=v(e,t),P=v(e,l);return n.map((A,U)=>A/b[U]*P[U])}function R(n,e,t){const l=T(n,e.mode,e.type,"int"),b=p[e.mode][t.mode](...l);return T(b,t.mode,"int",t.type)}function oe(n,e){return typeof n!="object"||w(n)?!1:e in n&&typeof n[e]=="number"}class J{constructor(e,t,l="int"){this.mode=t,this.type=l,this.comps_=S(e,t,l)}static black(e="int"){return new J([0,0,0],"rgb",e)}static fromObject(e,t="int"){const l="a"in e?[e.r,e.g,e.b,e.a]:[e.r,e.g,e.b];return new J(l,"rgb",t)}static toRgbaObject(e,t="int"){return e.toRgbaObject(t)}static isRgbColorObject(e){return oe(e,"r")&&oe(e,"g")&&oe(e,"b")}static isRgbaColorObject(e){return this.isRgbColorObject(e)&&oe(e,"a")}static isColorObject(e){return this.isRgbColorObject(e)}static equals(e,t){if(e.mode!==t.mode)return!1;const l=e.comps_,b=t.comps_;for(let P=0;P<l.length;P++)if(l[P]!==b[P])return!1;return!0}getComponents(e,t="int"){return o(R(d(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 De=N("colp");class ui{constructor(e,t){this.alphaViews_=null,this.element=e.createElement("div"),this.element.classList.add(De()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("div");l.classList.add(De("hsv"));const b=e.createElement("div");b.classList.add(De("sv")),this.svPaletteView_=t.svPaletteView,b.appendChild(this.svPaletteView_.element),l.appendChild(b);const P=e.createElement("div");P.classList.add(De("h")),this.hPaletteView_=t.hPaletteView,P.appendChild(this.hPaletteView_.element),l.appendChild(P),this.element.appendChild(l);const A=e.createElement("div");if(A.classList.add(De("rgb")),this.textView_=t.textView,A.appendChild(this.textView_.element),this.element.appendChild(A),t.alphaViews){this.alphaViews_={palette:t.alphaViews.palette,text:t.alphaViews.text};const U=e.createElement("div");U.classList.add(De("a"));const W=e.createElement("div");W.classList.add(De("ap")),W.appendChild(this.alphaViews_.palette.element),U.appendChild(W);const ee=e.createElement("div");ee.classList.add(De("at")),ee.appendChild(this.alphaViews_.text.element),U.appendChild(ee),this.element.appendChild(U)}}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 Js(n){return n==="int"?"int":n==="float"?"float":void 0}function hi(n){const e=V;return le(n,{alpha:e.optional.boolean,color:e.optional.object({alpha:e.optional.boolean,type:e.optional.custom(Js)}),expanded:e.optional.boolean,picker:e.optional.custom(pt)})}function on(n){return n?.1:1}function an(n){var e;return(e=n.color)===null||e===void 0?void 0:e.type}function kl(n,e){return n.alpha===e.alpha&&n.mode===e.mode&&n.notation===e.notation&&n.type===e.type}function Je(n,e){const t=n.match(/^(.+)%$/);return Math.min(t?parseFloat(t[1])*.01*e:parseFloat(n),e)}const Sl={deg:n=>n,grad:n=>n*360/400,rad:n=>n*360/(2*Math.PI),turn:n=>n*360};function Kr(n){const e=n.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);if(!e)return parseFloat(n);const t=parseFloat(e[1]),l=e[2];return Sl[l](t)}function $r(n){const e=n.match(/^rgb\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const t=[Je(e[1],255),Je(e[2],255),Je(e[3],255)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function Xr(n){return e=>{const t=$r(e);return t?new J(t,"rgb",n):null}}function Yr(n){const e=n.match(/^rgba\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const t=[Je(e[1],255),Je(e[2],255),Je(e[3],255),Je(e[4],1)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function qr(n){return e=>{const t=Yr(e);return t?new J(t,"rgb",n):null}}function Qr(n){const e=n.match(/^hsl\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const t=[Kr(e[1]),Je(e[2],100),Je(e[3],100)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function Zr(n){return e=>{const t=Qr(e);return t?new J(t,"hsl",n):null}}function Wr(n){const e=n.match(/^hsla\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const t=[Kr(e[1]),Je(e[2],100),Je(e[3],100),Je(e[4],1)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function Jr(n){return e=>{const t=Wr(e);return t?new J(t,"hsl",n):null}}function Hr(n){const e=n.match(/^#([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(e)return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)];const t=n.match(/^(?:#|0x)([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:null}function Ll(n){const e=Hr(n);return e?new J(e,"rgb","int"):null}function eo(n){const e=n.match(/^#?([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(e)return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16),xe(parseInt(e[4]+e[4],16),0,255,0,1)];const t=n.match(/^(?:#|0x)?([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16),xe(parseInt(t[4],16),0,255,0,1)]:null}function Al(n){const e=eo(n);return e?new J(e,"rgb","int"):null}function to(n){const e=n.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!e)return null;const t=[parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3])];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function no(n){return e=>{const t=to(e);return t?new J(t,"rgb",n):null}}function io(n){const e=n.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*a\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!e)return null;const t=[parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3]),parseFloat(e[4])];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function so(n){return e=>{const t=io(e);return t?new J(t,"rgb",n):null}}const Vl=[{parser:Hr,result:{alpha:!1,mode:"rgb",notation:"hex"}},{parser:eo,result:{alpha:!0,mode:"rgb",notation:"hex"}},{parser:$r,result:{alpha:!1,mode:"rgb",notation:"func"}},{parser:Yr,result:{alpha:!0,mode:"rgb",notation:"func"}},{parser:Qr,result:{alpha:!1,mode:"hsl",notation:"func"}},{parser:Wr,result:{alpha:!0,mode:"hsl",notation:"func"}},{parser:to,result:{alpha:!1,mode:"rgb",notation:"object"}},{parser:io,result:{alpha:!0,mode:"rgb",notation:"object"}}];function Il(n){return Vl.reduce((e,{parser:t,result:l})=>e||(t(n)?l:null),null)}function Hs(n,e="int"){const t=Il(n);return t?t.notation==="hex"&&e!=="float"?Object.assign(Object.assign({},t),{type:"int"}):t.notation==="func"?Object.assign(Object.assign({},t),{type:e}):null:null}const ro={int:[Ll,Al,Xr("int"),qr("int"),Zr("int"),Jr("int"),no("int"),so("int")],float:[Xr("float"),qr("float"),Zr("float"),Jr("float"),no("float"),so("float")]};function Dl(n){const e=ro[n];return t=>{if(typeof t!="string")return J.black(n);const l=e.reduce((b,P)=>b||P(t),null);return l??J.black(n)}}function er(n){const e=ro[n];return t=>e.reduce((l,b)=>l||b(t),null)}function oo(n){const e=Me(Math.floor(n),0,255).toString(16);return e.length===1?`0${e}`:e}function ao(n,e="#"){const t=d(n.getComponents("rgb")).map(oo).join("");return`${e}${t}`}function tr(n,e="#"){const t=n.getComponents("rgb"),l=[t[0],t[1],t[2],t[3]*255].map(oo).join("");return`${e}${l}`}function lo(n,e){const t=Ae(e==="float"?2:0);return`rgb(${d(n.getComponents("rgb",e)).map(b=>t(b)).join(", ")})`}function Tl(n){return e=>lo(e,n)}function Wi(n,e){const t=Ae(2),l=Ae(e==="float"?2:0);return`rgba(${n.getComponents("rgb",e).map((P,A)=>(A===3?t:l)(P)).join(", ")})`}function Ol(n){return e=>Wi(e,n)}function El(n){const e=[Ae(0),Jt,Jt];return`hsl(${d(n.getComponents("hsl")).map((l,b)=>e[b](l)).join(", ")})`}function Bl(n){const e=[Ae(0),Jt,Jt,Ae(2)];return`hsla(${n.getComponents("hsl").map((l,b)=>e[b](l)).join(", ")})`}function co(n,e){const t=Ae(e==="float"?2:0),l=["r","g","b"];return`{${d(n.getComponents("rgb",e)).map((P,A)=>`${l[A]}: ${t(P)}`).join(", ")}}`}function Nl(n){return e=>co(e,n)}function po(n,e){const t=Ae(2),l=Ae(e==="float"?2:0),b=["r","g","b","a"];return`{${n.getComponents("rgb",e).map((A,U)=>{const W=U===3?t:l;return`${b[U]}: ${W(A)}`}).join(", ")}}`}function Fl(n){return e=>po(e,n)}const jl=[{format:{alpha:!1,mode:"rgb",notation:"hex",type:"int"},stringifier:ao},{format:{alpha:!0,mode:"rgb",notation:"hex",type:"int"},stringifier:tr},{format:{alpha:!1,mode:"hsl",notation:"func",type:"int"},stringifier:El},{format:{alpha:!0,mode:"hsl",notation:"func",type:"int"},stringifier:Bl},...["int","float"].reduce((n,e)=>[...n,{format:{alpha:!1,mode:"rgb",notation:"func",type:e},stringifier:Tl(e)},{format:{alpha:!0,mode:"rgb",notation:"func",type:e},stringifier:Ol(e)},{format:{alpha:!1,mode:"rgb",notation:"object",type:e},stringifier:Nl(e)},{format:{alpha:!0,mode:"rgb",notation:"object",type:e},stringifier:Fl(e)}],[])];function nr(n){return jl.reduce((e,t)=>e||(kl(t.format,n)?t.stringifier:null),null)}const di=N("apl");class zl{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(di()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);const l=e.createElement("div");l.classList.add(di("b")),this.element.appendChild(l);const b=e.createElement("div");b.classList.add(di("c")),l.appendChild(b),this.colorElem_=b;const P=e.createElement("div");P.classList.add(di("m")),this.element.appendChild(P),this.markerElem_=P;const A=e.createElement("div");A.classList.add(di("p")),this.markerElem_.appendChild(A),this.previewElem_=A,this.update_()}update_(){const e=this.value.rawValue,t=e.getComponents("rgb"),l=new J([t[0],t[1],t[2],0],"rgb"),b=new J([t[0],t[1],t[2],255],"rgb"),P=["to right",Wi(l),Wi(b)];this.colorElem_.style.background=`linear-gradient(${P.join(",")})`,this.previewElem_.style.backgroundColor=Wi(e);const A=xe(t[3],0,1,0,100);this.markerElem_.style.left=`${A}%`}onValueChange_(){this.update_()}}class Ul{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 zl(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new it(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;const l=e.point.x/e.bounds.width,b=this.value.rawValue,[P,A,U]=b.getComponents("hsv");this.value.setRawValue(new J([P,A,U,l],"hsv"),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){const t=Se(on(!0),Ke(e));if(t===0)return;const l=this.value.rawValue,[b,P,A,U]=l.getComponents("hsv");this.value.setRawValue(new J([b,P,A,U+t],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){Se(on(!0),Ke(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const Ln=N("coltxt");function Gl(n){const e=n.createElement("select"),t=[{text:"RGB",value:"rgb"},{text:"HSL",value:"hsl"},{text:"HSV",value:"hsv"}];return e.appendChild(t.reduce((l,b)=>{const P=n.createElement("option");return P.textContent=b.text,P.value=b.value,l.appendChild(P),l},n.createDocumentFragment())),e}class Rl{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Ln()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("div");l.classList.add(Ln("m")),this.modeElem_=Gl(e),this.modeElem_.classList.add(Ln("ms")),l.appendChild(this.modeSelectElement),t.viewProps.bindDisabled(this.modeElem_);const b=e.createElement("div");b.classList.add(Ln("mm")),b.appendChild(rt(e,"dropdown")),l.appendChild(b),this.element.appendChild(l);const P=e.createElement("div");P.classList.add(Ln("w")),this.element.appendChild(P),this.textsElem_=P,this.textViews_=t.textViews,this.applyTextViews_(),j(t.colorMode,A=>{this.modeElem_.value=A})}get modeSelectElement(){return this.modeElem_}get textViews(){return this.textViews_}set textViews(e){this.textViews_=e,this.applyTextViews_()}applyTextViews_(){Gt(this.textsElem_);const e=this.element.ownerDocument;this.textViews_.forEach(t=>{const l=e.createElement("div");l.classList.add(Ln("c")),l.appendChild(t.element),this.textsElem_.appendChild(l)})}}function Kl(n){return Ae(n==="float"?2:0)}function $l(n,e,t){const l=v(n,e)[t];return new bt({min:0,max:l})}function ir(n,e,t){return new It(n,{arrayPosition:t===0?"fst":t===3-1?"lst":"mid",baseStep:on(!1),parser:e.parser,props:q.fromObject({draggingScale:e.colorType==="float"?.01:1,formatter:Kl(e.colorType)}),value:te(0,{constraint:$l(e.colorMode,e.colorType,t)}),viewProps:e.viewProps})}class Xl{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 Rl(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},l=[ir(e,t,0),ir(e,t,1),ir(e,t,2)];return l.forEach((b,P)=>{At({primary:this.value,secondary:b.value,forward:A=>A.rawValue.getComponents(this.colorMode.rawValue,this.colorType_)[P],backward:(A,U)=>{const W=this.colorMode.rawValue,ee=A.rawValue.getComponents(W,this.colorType_);return ee[P]=U.rawValue,new J(o(d(ee),ee[3]),W,this.colorType_)}})}),l}onModeSelectChange_(e){const t=e.currentTarget;this.colorMode.rawValue=t.value,this.ccs_=this.createComponentControllers_(this.view.element.ownerDocument),this.view.textViews=[this.ccs_[0].view,this.ccs_[1].view,this.ccs_[2].view]}}const sr=N("hpl");class Yl{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(sr()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);const l=e.createElement("div");l.classList.add(sr("c")),this.element.appendChild(l);const b=e.createElement("div");b.classList.add(sr("m")),this.element.appendChild(b),this.markerElem_=b,this.update_()}update_(){const e=this.value.rawValue,[t]=e.getComponents("hsv");this.markerElem_.style.backgroundColor=lo(new J([t,100,100],"hsv"));const l=xe(t,0,360,0,100);this.markerElem_.style.left=`${l}%`}onValueChange_(){this.update_()}}class ql{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 Yl(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new it(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;const l=xe(Me(e.point.x,0,e.bounds.width),0,e.bounds.width,0,360),b=this.value.rawValue,[,P,A,U]=b.getComponents("hsv");this.value.setRawValue(new J([l,P,A,U],"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=Se(on(!1),Ke(e));if(t===0)return;const l=this.value.rawValue,[b,P,A,U]=l.getComponents("hsv");this.value.setRawValue(new J([b+t,P,A,U],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){Se(on(!1),Ke(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const rr=N("svp"),uo=64;class Ql{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(rr()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);const l=e.createElement("canvas");l.height=uo,l.width=uo,l.classList.add(rr("c")),this.element.appendChild(l),this.canvasElement=l;const b=e.createElement("div");b.classList.add(rr("m")),this.element.appendChild(b),this.markerElem_=b,this.update_()}update_(){const e=mn(this.canvasElement);if(!e)return;const l=this.value.rawValue.getComponents("hsv"),b=this.canvasElement.width,P=this.canvasElement.height,A=e.getImageData(0,0,b,P),U=A.data;for(let de=0;de<P;de++)for(let ve=0;ve<b;ve++){const yt=xe(ve,0,b,0,100),fi=xe(de,0,P,100,0),vi=Zi(l[0],yt,fi),Dn=(de*b+ve)*4;U[Dn]=vi[0],U[Dn+1]=vi[1],U[Dn+2]=vi[2],U[Dn+3]=255}e.putImageData(A,0,0);const W=xe(l[1],0,100,0,100);this.markerElem_.style.left=`${W}%`;const ee=xe(l[2],0,100,100,0);this.markerElem_.style.top=`${ee}%`}onValueChange_(){this.update_()}}class Zl{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 Ql(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new it(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;const l=xe(e.point.x,0,e.bounds.width,0,100),b=xe(e.point.y,0,e.bounds.height,100,0),[P,,,A]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new J([P,l,b,A],"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){oi(e.key)&&e.preventDefault();const[t,l,b,P]=this.value.rawValue.getComponents("hsv"),A=on(!1),U=Se(A,Ke(e)),W=Se(A,Vt(e));U===0&&W===0||this.value.setRawValue(new J([t,l+U,b+W,P],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){const t=on(!1),l=Se(t,Ke(e)),b=Se(t,Vt(e));l===0&&b===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class Wl{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.hPaletteC_=new ql(e,{value:this.value,viewProps:this.viewProps}),this.svPaletteC_=new Zl(e,{value:this.value,viewProps:this.viewProps}),this.alphaIcs_=t.supportsAlpha?{palette:new Ul(e,{value:this.value,viewProps:this.viewProps}),text:new It(e,{parser:Ze,baseStep:.1,props:q.fromObject({draggingScale:.01,formatter:Ae(2)}),value:te(0,{constraint:new bt({min:0,max:1})}),viewProps:this.viewProps})}:null,this.alphaIcs_&&At({primary:this.value,secondary:this.alphaIcs_.text.value,forward:l=>l.rawValue.getComponents()[3],backward:(l,b)=>{const P=l.rawValue.getComponents();return P[3]=b.rawValue,new J(P,l.rawValue.mode)}}),this.textC_=new Xl(e,{colorType:t.colorType,parser:Ze,value:this.value,viewProps:this.viewProps}),this.view=new ui(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 or=N("colsw");class Jl{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(or()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("div");l.classList.add(or("sw")),this.element.appendChild(l),this.swatchElem_=l;const b=e.createElement("button");b.classList.add(or("b")),t.viewProps.bindDisabled(b),this.element.appendChild(b),this.buttonElement=b,this.update_()}update_(){const e=this.value.rawValue;this.swatchElem_.style.backgroundColor=tr(e)}onValueChange_(){this.update_()}}class Hl{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new Jl(e,{value:this.value,viewProps:this.viewProps})}}class ar{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_=Ie.create(t.expanded),this.swatchC_=new Hl(e,{value:this.value,viewProps:this.viewProps});const l=this.swatchC_.view.buttonElement;l.addEventListener("blur",this.onButtonBlur_),l.addEventListener("click",this.onButtonClick_),this.textC_=new xn(e,{parser:t.parser,props:q.fromObject({formatter:t.formatter}),value:this.value,viewProps:this.viewProps}),this.view=new Sn(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 Ii(e,{viewProps:this.viewProps}):null;const b=new Wl(e,{colorType:t.colorType,supportsAlpha:t.supportsAlpha,value:this.value,viewProps:this.viewProps});b.view.allFocusableElements.forEach(P=>{P.addEventListener("blur",this.onPopupChildBlur_),P.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=b,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(b.view.element),At({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),Ne(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onButtonBlur_(e){if(!this.popC_)return;const t=this.view.element,l=e.relatedTarget;(!l||!t.contains(l))&&(this.popC_.shows.rawValue=!1)}onButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(e){if(!this.popC_)return;const t=this.popC_.view.element,l=ot(e);l&&t.contains(l)||l&&l===this.swatchC_.view.buttonElement&&!tt(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 ec(n,e){return J.isColorObject(n)?J.fromObject(n,e):J.black(e)}function tc(n){return d(n.getComponents("rgb")).reduce((e,t)=>e<<8|Math.floor(t)&255,0)}function nc(n){return n.getComponents("rgb").reduce((e,t,l)=>{const b=Math.floor(l===3?t*255:t)&255;return e<<8|b},0)>>>0}function ic(n){return new J([n>>16&255,n>>8&255,n&255],"rgb")}function sc(n){return new J([n>>24&255,n>>16&255,n>>8&255,xe(n&255,0,255,0,1)],"rgb")}function rc(n){return typeof n!="number"?J.black():ic(n)}function oc(n){return typeof n!="number"?J.black():sc(n)}function ac(n){const e=nr(n);return e?(t,l)=>{_t(t,e(l))}:null}function lc(n){const e=n?nc:tc;return(t,l)=>{_t(t,e(l))}}function cc(n,e,t){const l=e.toRgbaObject(t);n.writeProperty("r",l.r),n.writeProperty("g",l.g),n.writeProperty("b",l.b),n.writeProperty("a",l.a)}function pc(n,e,t){const l=e.toRgbaObject(t);n.writeProperty("r",l.r),n.writeProperty("g",l.g),n.writeProperty("b",l.b)}function uc(n,e){return(t,l)=>{n?cc(t,l,e):pc(t,l,e)}}function lr(n){var e;return!!(n!=null&&n.alpha||!((e=n==null?void 0:n.color)===null||e===void 0)&&e.alpha)}function hc(n){return n?e=>tr(e,"0x"):e=>ao(e,"0x")}function dc(n){return"color"in n||"view"in n&&n.view==="color"}const mc={id:"input-color-number",type:"input",accept:(n,e)=>{if(typeof n!="number"||!dc(e))return null;const t=hi(e);return t?{initialValue:n,params:t}:null},binding:{reader:n=>lr(n.params)?oc:rc,equals:J.equals,writer:n=>lc(lr(n.params))},controller:n=>{const e=lr(n.params),t="expanded"in n.params?n.params.expanded:void 0,l="picker"in n.params?n.params.picker:void 0;return new ar(n.document,{colorType:"int",expanded:t??!1,formatter:hc(e),parser:er("int"),pickerLayout:l??"popup",supportsAlpha:e,value:n.value,viewProps:n.viewProps})}};function fc(n){return J.isRgbaColorObject(n)}function vc(n){return e=>ec(e,n)}function bc(n,e){return t=>n?po(t,e):co(t,e)}const gc={id:"input-color-object",type:"input",accept:(n,e)=>{if(!J.isColorObject(n))return null;const t=hi(e);return t?{initialValue:n,params:t}:null},binding:{reader:n=>vc(an(n.params)),equals:J.equals,writer:n=>uc(fc(n.initialValue),an(n.params))},controller:n=>{var e;const t=J.isRgbaColorObject(n.initialValue),l="expanded"in n.params?n.params.expanded:void 0,b="picker"in n.params?n.params.picker:void 0,P=(e=an(n.params))!==null&&e!==void 0?e:"int";return new ar(n.document,{colorType:P,expanded:l??!1,formatter:bc(t,P),parser:er(P),pickerLayout:b??"popup",supportsAlpha:t,value:n.value,viewProps:n.viewProps})}},_c={id:"input-color-string",type:"input",accept:(n,e)=>{if(typeof n!="string"||"view"in e&&e.view==="text")return null;const t=Hs(n,an(e));if(!t||!nr(t))return null;const b=hi(e);return b?{initialValue:n,params:b}:null},binding:{reader:n=>{var e;return Dl((e=an(n.params))!==null&&e!==void 0?e:"int")},equals:J.equals,writer:n=>{const e=Hs(n.initialValue,an(n.params));if(!e)throw D.shouldNeverHappen();const t=ac(e);if(!t)throw D.notBindable();return t}},controller:n=>{const e=Hs(n.initialValue,an(n.params));if(!e)throw D.shouldNeverHappen();const t=nr(e);if(!t)throw D.shouldNeverHappen();const l="expanded"in n.params?n.params.expanded:void 0,b="picker"in n.params?n.params.picker:void 0;return new ar(n.document,{colorType:e.type,expanded:l??!1,formatter:t,parser:er(e.type),pickerLayout:b??"popup",supportsAlpha:e.alpha,value:n.value,viewProps:n.viewProps})}};class Ot{constructor(e){this.components=e.components,this.asm_=e.assembly}constrain(e){const t=this.asm_.toComponents(e).map((l,b)=>{var P,A;return(A=(P=this.components[b])===null||P===void 0?void 0:P.constrain(l))!==null&&A!==void 0?A:l});return this.asm_.fromComponents(t)}}const ho=N("pndtxt");class wc{constructor(e,t){this.textViews=t.textViews,this.element=e.createElement("div"),this.element.classList.add(ho()),this.textViews.forEach(l=>{const b=e.createElement("div");b.classList.add(ho("a")),b.appendChild(l.element),this.element.appendChild(b)})}}function yc(n,e,t){return new It(n,{arrayPosition:t===0?"fst":t===e.axes.length-1?"lst":"mid",baseStep:e.axes[t].baseStep,parser:e.parser,props:e.axes[t].textProps,value:te(0,{constraint:e.axes[t].constraint}),viewProps:e.viewProps})}class cr{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.acs_=t.axes.map((l,b)=>yc(e,t,b)),this.acs_.forEach((l,b)=>{At({primary:this.value,secondary:l.value,forward:P=>t.assembly.toComponents(P.rawValue)[b],backward:(P,A)=>{const U=t.assembly.toComponents(P.rawValue);return U[b]=A.rawValue,t.assembly.fromComponents(U)}})}),this.view=new wc(e,{textViews:this.acs_.map(l=>l.view)})}}function mo(n,e){return"step"in n&&!w(n.step)?new yn(n.step,e):null}function fo(n){return!w(n.max)&&!w(n.min)?new bt({max:n.max,min:n.min}):!w(n.max)||!w(n.min)?new je({max:n.max,min:n.min}):null}function xc(n){const e=_e(n,bt);if(e)return[e.values.get("min"),e.values.get("max")];const t=_e(n,je);return t?[t.minValue,t.maxValue]:[void 0,void 0]}function Cc(n,e){const t=[],l=mo(n,e);l&&t.push(l);const b=fo(n);b&&t.push(b);const P=Mn(n.options);return P&&t.push(P),new at(t)}const Pc={id:"input-number",type:"input",accept:(n,e)=>{if(typeof n!="number")return null;const t=V,l=le(e,{format:t.optional.function,max:t.optional.number,min:t.optional.number,options:t.optional.custom(nn),step:t.optional.number});return l?{initialValue:n,params:l}:null},binding:{reader:n=>Ui,constraint:n=>Cc(n.params,n.initialValue),writer:n=>_t},controller:n=>{var e;const t=n.value,l=n.constraint,b=l&&_e(l,Qe);if(b)return new qt(n.document,{props:new q({options:b.values.value("options")}),value:t,viewProps:n.viewProps});const P=(e="format"in n.params?n.params.format:void 0)!==null&&e!==void 0?e:Ae(kn(l,t.rawValue)),A=l&&_e(l,bt);return A?new tn(n.document,{baseStep:Dt(l),parser:Ze,sliderProps:new q({maxValue:A.values.value("max"),minValue:A.values.value("min")}),textProps:q.fromObject({draggingScale:Tt(l,t.rawValue),formatter:P}),value:t,viewProps:n.viewProps}):new It(n.document,{baseStep:Dt(l),parser:Ze,props:q.fromObject({draggingScale:Tt(l,t.rawValue),formatter:P}),value:t,viewProps:n.viewProps})}};class Et{constructor(e=0,t=0){this.x=e,this.y=t}getComponents(){return[this.x,this.y]}static isObject(e){if(w(e))return!1;const t=e.x,l=e.y;return!(typeof t!="number"||typeof l!="number")}static equals(e,t){return e.x===t.x&&e.y===t.y}toObject(){return{x:this.x,y:this.y}}}const vo={toComponents:n=>n.getComponents(),fromComponents:n=>new Et(...n)},An=N("p2d");class Mc{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(An()),t.viewProps.bindClassModifiers(this.element),j(t.expanded,Y(this.element,An(void 0,"expanded")));const l=e.createElement("div");l.classList.add(An("h")),this.element.appendChild(l);const b=e.createElement("button");b.classList.add(An("b")),b.appendChild(rt(e,"p2dpad")),t.viewProps.bindDisabled(b),l.appendChild(b),this.buttonElement=b;const P=e.createElement("div");if(P.classList.add(An("t")),l.appendChild(P),this.textElement=P,t.pickerLayout==="inline"){const A=e.createElement("div");A.classList.add(An("p")),this.element.appendChild(A),this.pickerElement=A}else this.pickerElement=null}}const Bt=N("p2dp");class kc{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(Bt()),t.layout==="popup"&&this.element.classList.add(Bt(void 0,"p")),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("div");l.classList.add(Bt("p")),t.viewProps.bindTabIndex(l),this.element.appendChild(l),this.padElement=l;const b=e.createElementNS(Be,"svg");b.classList.add(Bt("g")),this.padElement.appendChild(b),this.svgElem_=b;const P=e.createElementNS(Be,"line");P.classList.add(Bt("ax")),P.setAttributeNS(null,"x1","0"),P.setAttributeNS(null,"y1","50%"),P.setAttributeNS(null,"x2","100%"),P.setAttributeNS(null,"y2","50%"),this.svgElem_.appendChild(P);const A=e.createElementNS(Be,"line");A.classList.add(Bt("ax")),A.setAttributeNS(null,"x1","50%"),A.setAttributeNS(null,"y1","0"),A.setAttributeNS(null,"x2","50%"),A.setAttributeNS(null,"y2","100%"),this.svgElem_.appendChild(A);const U=e.createElementNS(Be,"line");U.classList.add(Bt("l")),U.setAttributeNS(null,"x1","50%"),U.setAttributeNS(null,"y1","50%"),this.svgElem_.appendChild(U),this.lineElem_=U;const W=e.createElement("div");W.classList.add(Bt("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(),l=this.maxValue_,b=xe(e,-l,+l,0,100),P=xe(t,-l,+l,0,100),A=this.invertsY_?100-P:P;this.lineElem_.setAttributeNS(null,"x2",`${b}%`),this.lineElem_.setAttributeNS(null,"y2",`${A}%`),this.markerElem_.style.left=`${b}%`,this.markerElem_.style.top=`${A}%`}onValueChange_(){this.update_()}onFoldableChange_(){this.update_()}}function bo(n,e,t){return[Se(e[0],Ke(n)),Se(e[1],Vt(n))*(t?1:-1)]}class Sc{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 kc(e,{invertsY:this.invertsY_,layout:t.layout,maxValue:this.maxValue_,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new it(this.view.padElement),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.padElement.addEventListener("keydown",this.onPadKeyDown_),this.view.padElement.addEventListener("keyup",this.onPadKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;const l=this.maxValue_,b=xe(e.point.x,0,e.bounds.width,-l,+l),P=xe(this.invertsY_?e.bounds.height-e.point.y:e.point.y,0,e.bounds.height,-l,+l);this.value.setRawValue(new Et(b,P),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onPadKeyDown_(e){oi(e.key)&&e.preventDefault();const[t,l]=bo(e,this.baseSteps_,this.invertsY_);t===0&&l===0||this.value.setRawValue(new Et(this.value.rawValue.x+t,this.value.rawValue.y+l),{forceEmit:!1,last:!1})}onPadKeyUp_(e){const[t,l]=bo(e,this.baseSteps_,this.invertsY_);t===0&&l===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class Lc{constructor(e,t){var l,b;this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.onPadButtonBlur_=this.onPadButtonBlur_.bind(this),this.onPadButtonClick_=this.onPadButtonClick_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.foldable_=Ie.create(t.expanded),this.popC_=t.pickerLayout==="popup"?new Ii(e,{viewProps:this.viewProps}):null;const P=new Sc(e,{baseSteps:[t.axes[0].baseStep,t.axes[1].baseStep],invertsY:t.invertsY,layout:t.pickerLayout,maxValue:t.maxValue,value:this.value,viewProps:this.viewProps});P.view.allFocusableElements.forEach(A=>{A.addEventListener("blur",this.onPopupChildBlur_),A.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=P,this.textC_=new cr(e,{assembly:vo,axes:t.axes,parser:t.parser,value:this.value,viewProps:this.viewProps}),this.view=new Mc(e,{expanded:this.foldable_.value("expanded"),pickerLayout:t.pickerLayout,viewProps:this.viewProps}),this.view.textElement.appendChild(this.textC_.view.element),(l=this.view.buttonElement)===null||l===void 0||l.addEventListener("blur",this.onPadButtonBlur_),(b=this.view.buttonElement)===null||b===void 0||b.addEventListener("click",this.onPadButtonClick_),this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),At({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:A=>A.rawValue,backward:(A,U)=>U.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),Ne(this.foldable_,this.view.pickerElement))}onPadButtonBlur_(e){if(!this.popC_)return;const t=this.view.element,l=e.relatedTarget;(!l||!t.contains(l))&&(this.popC_.shows.rawValue=!1)}onPadButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(e){if(!this.popC_)return;const t=this.popC_.view.element,l=ot(e);l&&t.contains(l)||l&&l===this.view.buttonElement&&!tt(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 Vn{constructor(e=0,t=0,l=0){this.x=e,this.y=t,this.z=l}getComponents(){return[this.x,this.y,this.z]}static isObject(e){if(w(e))return!1;const t=e.x,l=e.y,b=e.z;return!(typeof t!="number"||typeof l!="number"||typeof b!="number")}static equals(e,t){return e.x===t.x&&e.y===t.y&&e.z===t.z}toObject(){return{x:this.x,y:this.y,z:this.z}}}const go={toComponents:n=>n.getComponents(),fromComponents:n=>new Vn(...n)};function Ac(n){return Vn.isObject(n)?new Vn(n.x,n.y,n.z):new Vn}function Vc(n,e){n.writeProperty("x",e.x),n.writeProperty("y",e.y),n.writeProperty("z",e.z)}function Ic(n,e){return new Ot({assembly:go,components:[wt("x"in n?n.x:void 0,e.x),wt("y"in n?n.y:void 0,e.y),wt("z"in n?n.z:void 0,e.z)]})}function pr(n,e){return{baseStep:Dt(e),constraint:e,textProps:q.fromObject({draggingScale:Tt(e,n),formatter:Ae(kn(e,n))})}}const Dc={id:"input-point3d",type:"input",accept:(n,e)=>{if(!Vn.isObject(n))return null;const t=V,l=le(e,{x:t.optional.custom(st),y:t.optional.custom(st),z:t.optional.custom(st)});return l?{initialValue:n,params:l}:null},binding:{reader:n=>Ac,constraint:n=>Ic(n.params,n.initialValue),equals:Vn.equals,writer:n=>Vc},controller:n=>{const e=n.value,t=n.constraint;if(!(t instanceof Ot))throw D.shouldNeverHappen();return new cr(n.document,{assembly:go,axes:[pr(e.rawValue.x,t.components[0]),pr(e.rawValue.y,t.components[1]),pr(e.rawValue.z,t.components[2])],parser:Ze,value:e,viewProps:n.viewProps})}};class In{constructor(e=0,t=0,l=0,b=0){this.x=e,this.y=t,this.z=l,this.w=b}getComponents(){return[this.x,this.y,this.z,this.w]}static isObject(e){if(w(e))return!1;const t=e.x,l=e.y,b=e.z,P=e.w;return!(typeof t!="number"||typeof l!="number"||typeof b!="number"||typeof P!="number")}static equals(e,t){return e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w}toObject(){return{x:this.x,y:this.y,z:this.z,w:this.w}}}const _o={toComponents:n=>n.getComponents(),fromComponents:n=>new In(...n)};function Tc(n){return In.isObject(n)?new In(n.x,n.y,n.z,n.w):new In}function Oc(n,e){n.writeProperty("x",e.x),n.writeProperty("y",e.y),n.writeProperty("z",e.z),n.writeProperty("w",e.w)}function Ec(n,e){return new Ot({assembly:_o,components:[wt("x"in n?n.x:void 0,e.x),wt("y"in n?n.y:void 0,e.y),wt("z"in n?n.z:void 0,e.z),wt("w"in n?n.w:void 0,e.w)]})}function Bc(n,e){return{baseStep:Dt(e),constraint:e,textProps:q.fromObject({draggingScale:Tt(e,n),formatter:Ae(kn(e,n))})}}const Nc={id:"input-point4d",type:"input",accept:(n,e)=>{if(!In.isObject(n))return null;const t=V,l=le(e,{x:t.optional.custom(st),y:t.optional.custom(st),z:t.optional.custom(st),w:t.optional.custom(st)});return l?{initialValue:n,params:l}:null},binding:{reader:n=>Tc,constraint:n=>Ec(n.params,n.initialValue),equals:In.equals,writer:n=>Oc},controller:n=>{const e=n.value,t=n.constraint;if(!(t instanceof Ot))throw D.shouldNeverHappen();return new cr(n.document,{assembly:_o,axes:e.rawValue.getComponents().map((l,b)=>Bc(l,t.components[b])),parser:Ze,value:e,viewProps:n.viewProps})}};function Fc(n){const e=[],t=Mn(n.options);return t&&e.push(t),new at(e)}const jc={id:"input-string",type:"input",accept:(n,e)=>{if(typeof n!="string")return null;const l=le(e,{options:V.optional.custom(nn)});return l?{initialValue:n,params:l}:null},binding:{reader:n=>ri,constraint:n=>Fc(n.params),writer:n=>_t},controller:n=>{const e=n.document,t=n.value,l=n.constraint,b=l&&_e(l,Qe);return b?new qt(e,{props:new q({options:b.values.value("options")}),value:t,viewProps:n.viewProps}):new xn(e,{parser:P=>P,props:q.fromObject({formatter:We}),value:t,viewProps:n.viewProps})}},mi={monitor:{defaultInterval:200,defaultLineCount:3}},wo=N("mll");class zc{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(wo()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("textarea");l.classList.add(wo("i")),l.style.height=`calc(var(--bld-us) * ${t.lineCount})`,l.readOnly=!0,t.viewProps.bindDisabled(l),this.element.appendChild(l),this.textareaElem_=l,t.value.emitter.on("change",this.onValueUpdate_),this.value=t.value,this.update_()}update_(){const e=this.textareaElem_,t=e.scrollTop===e.scrollHeight-e.clientHeight,l=[];this.value.rawValue.forEach(b=>{b!==void 0&&l.push(this.formatter_(b))}),e.textContent=l.join(`
|
|
21
|
-
`),t&&(e.scrollTop=e.scrollHeight)}onValueUpdate_(){this.update_()}}class ur{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new zc(e,{formatter:t.formatter,lineCount:t.lineCount,value:this.value,viewProps:this.viewProps})}}const yo=N("sgl");class Uc{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(yo()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("input");l.classList.add(yo("i")),l.readOnly=!0,l.type="text",t.viewProps.bindDisabled(l),this.element.appendChild(l),this.inputElement=l,t.value.emitter.on("change",this.onValueUpdate_),this.value=t.value,this.update_()}update_(){const e=this.value.rawValue,t=e[e.length-1];this.inputElement.value=t!==void 0?this.formatter_(t):""}onValueUpdate_(){this.update_()}}class hr{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new Uc(e,{formatter:t.formatter,value:this.value,viewProps:this.viewProps})}}const Gc={id:"monitor-bool",type:"monitor",accept:(n,e)=>{if(typeof n!="boolean")return null;const l=le(e,{lineCount:V.optional.number});return l?{initialValue:n,params:l}:null},binding:{reader:n=>Ti},controller:n=>{var e;return n.value.rawValue.length===1?new hr(n.document,{formatter:Oi,value:n.value,viewProps:n.viewProps}):new ur(n.document,{formatter:Oi,lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:mi.monitor.defaultLineCount,value:n.value,viewProps:n.viewProps})}},Nt=N("grl");class Rc{constructor(e,t){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=e.createElement("div"),this.element.classList.add(Nt()),t.viewProps.bindClassModifiers(this.element),this.formatter_=t.formatter,this.props_=t.props,this.cursor_=t.cursor,this.cursor_.emitter.on("change",this.onCursorChange_);const l=e.createElementNS(Be,"svg");l.classList.add(Nt("g")),l.style.height=`calc(var(--bld-us) * ${t.lineCount})`,this.element.appendChild(l),this.svgElem_=l;const b=e.createElementNS(Be,"polyline");this.svgElem_.appendChild(b),this.lineElem_=b;const P=e.createElement("div");P.classList.add(Nt("t"),N("tt")()),this.element.appendChild(P),this.tooltipElem_=P,t.value.emitter.on("change",this.onValueUpdate_),this.value=t.value,this.update_()}get graphElement(){return this.svgElem_}update_(){const e=this.svgElem_.getBoundingClientRect(),t=this.value.rawValue.length-1,l=this.props_.get("minValue"),b=this.props_.get("maxValue"),P=[];this.value.rawValue.forEach((de,ve)=>{if(de===void 0)return;const yt=xe(ve,0,t,0,e.width),fi=xe(de,l,b,e.height,0);P.push([yt,fi].join(","))}),this.lineElem_.setAttributeNS(null,"points",P.join(" "));const A=this.tooltipElem_,U=this.value.rawValue[this.cursor_.rawValue];if(U===void 0){A.classList.remove(Nt("t","a"));return}const W=xe(this.cursor_.rawValue,0,t,0,e.width),ee=xe(U,l,b,e.height,0);A.style.left=`${W}px`,A.style.top=`${ee}px`,A.textContent=`${this.formatter_(U)}`,A.classList.contains(Nt("t","a"))||(A.classList.add(Nt("t","a"),Nt("t","in")),Ye(A),A.classList.remove(Nt("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class Kc{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 Rc(e,{cursor:this.cursor_,formatter:t.formatter,lineCount:t.lineCount,props:this.props_,value:this.value,viewProps:this.viewProps}),!tt(e))this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_);else{const l=new it(this.view.element);l.emitter.on("down",this.onGraphPointerDown_),l.emitter.on("move",this.onGraphPointerMove_),l.emitter.on("up",this.onGraphPointerUp_)}}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(e){const t=this.view.element.getBoundingClientRect();this.cursor_.rawValue=Math.floor(xe(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(xe(e.data.point.x,0,e.data.bounds.width,0,this.value.rawValue.length))}onGraphPointerUp_(){this.cursor_.rawValue=-1}}function dr(n){return"format"in n&&!w(n.format)?n.format:Ae(2)}function $c(n){var e;return n.value.rawValue.length===1?new hr(n.document,{formatter:dr(n.params),value:n.value,viewProps:n.viewProps}):new ur(n.document,{formatter:dr(n.params),lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:mi.monitor.defaultLineCount,value:n.value,viewProps:n.viewProps})}function Xc(n){var e,t,l;return new Kc(n.document,{formatter:dr(n.params),lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:mi.monitor.defaultLineCount,props:q.fromObject({maxValue:(t="max"in n.params?n.params.max:null)!==null&&t!==void 0?t:100,minValue:(l="min"in n.params?n.params.min:null)!==null&&l!==void 0?l:0}),value:n.value,viewProps:n.viewProps})}function xo(n){return"view"in n&&n.view==="graph"}const Yc={id:"monitor-number",type:"monitor",accept:(n,e)=>{if(typeof n!="number")return null;const t=V,l=le(e,{format:t.optional.function,lineCount:t.optional.number,max:t.optional.number,min:t.optional.number,view:t.optional.string});return l?{initialValue:n,params:l}:null},binding:{defaultBufferSize:n=>xo(n)?64:1,reader:n=>Ui},controller:n=>xo(n.params)?Xc(n):$c(n)},qc={id:"monitor-string",type:"monitor",accept:(n,e)=>{if(typeof n!="string")return null;const t=V,l=le(e,{lineCount:t.optional.number,multiline:t.optional.boolean});return l?{initialValue:n,params:l}:null},binding:{reader:n=>ri},controller:n=>{var e;const t=n.value;return t.rawValue.length>1||"multiline"in n.params&&n.params.multiline?new ur(n.document,{formatter:We,lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:mi.monitor.defaultLineCount,value:t,viewProps:n.viewProps}):new hr(n.document,{formatter:We,value:t,viewProps:n.viewProps})}};class Qc{constructor(e){this.onValueChange_=this.onValueChange_.bind(this),this.reader=e.reader,this.writer=e.writer,this.emitter=new z,this.value=e.value,this.value.emitter.on("change",this.onValueChange_),this.target=e.target,this.read()}read(){const e=this.target.read();e!==void 0&&(this.value.rawValue=this.reader(e))}write_(e){this.writer(this.target,e)}onValueChange_(e){this.write_(e.rawValue),this.emitter.emit("change",{options:e.options,rawValue:e.rawValue,sender:this})}}function Zc(n,e){const t=n.accept(e.target.read(),e.params);if(w(t))return null;const l=V,b={target:e.target,initialValue:t.initialValue,params:t.params},P=n.binding.reader(b),A=n.binding.constraint?n.binding.constraint(b):void 0,U=te(P(t.initialValue),{constraint:A,equals:n.binding.equals}),W=new Qc({reader:P,target:e.target,value:U,writer:n.binding.writer(b)}),ee=l.optional.boolean(e.params.disabled).value,de=l.optional.boolean(e.params.hidden).value,ve=n.controller({constraint:A,document:e.document,initialValue:t.initialValue,params:t.params,value:W.value,viewProps:Ge.create({disabled:ee,hidden:de})}),yt=l.optional.string(e.params.label).value;return new Ee(e.document,{binding:W,blade:ye(),props:q.fromObject({label:yt??e.target.key}),valueController:ve})}class Wc{constructor(e){this.onTick_=this.onTick_.bind(this),this.reader_=e.reader,this.target=e.target,this.emitter=new z,this.value=e.value,this.ticker=e.ticker,this.ticker.emitter.on("tick",this.onTick_),this.read()}dispose(){this.ticker.dispose()}read(){const e=this.target.read();if(e===void 0)return;const t=this.value.rawValue,l=this.reader_(e);this.value.rawValue=$i(t,l),this.emitter.emit("update",{rawValue:l,sender:this})}onTick_(e){this.read()}}function Jc(n,e){return e===0?new Li:new Zn(n,e??mi.monitor.defaultInterval)}function Hc(n,e){var t,l,b;const P=V,A=n.accept(e.target.read(),e.params);if(w(A))return null;const U={target:e.target,initialValue:A.initialValue,params:A.params},W=n.binding.reader(U),ee=(l=(t=P.optional.number(e.params.bufferSize).value)!==null&&t!==void 0?t:n.binding.defaultBufferSize&&n.binding.defaultBufferSize(A.params))!==null&&l!==void 0?l:1,de=P.optional.number(e.params.interval).value,ve=new Wc({reader:W,target:e.target,ticker:Jc(e.document,de),value:Ri(ee)}),yt=P.optional.boolean(e.params.disabled).value,fi=P.optional.boolean(e.params.hidden).value,vi=n.controller({document:e.document,params:A.params,value:ve.value,viewProps:Ge.create({disabled:yt,hidden:fi})}),Dn=(b=P.optional.string(e.params.label).value)!==null&&b!==void 0?b:e.target.key;return new qe(e.document,{binding:ve,blade:ye(),props:q.fromObject({label:Dn}),valueController:vi})}class ep{constructor(){this.pluginsMap_={blades:[],inputs:[],monitors:[]}}getAll(){return[...this.pluginsMap_.blades,...this.pluginsMap_.inputs,...this.pluginsMap_.monitors]}register(e){e.type==="blade"?this.pluginsMap_.blades.unshift(e):e.type==="input"?this.pluginsMap_.inputs.unshift(e):e.type==="monitor"&&this.pluginsMap_.monitors.unshift(e)}createInput(e,t,l){const b=t.read();if(w(b))throw new D({context:{key:t.key},type:"nomatchingcontroller"});const P=this.pluginsMap_.inputs.reduce((A,U)=>A??Zc(U,{document:e,target:t,params:l}),null);if(P)return P;throw new D({context:{key:t.key},type:"nomatchingcontroller"})}createMonitor(e,t,l){const b=this.pluginsMap_.monitors.reduce((P,A)=>P??Hc(A,{document:e,params:l,target:t}),null);if(b)return b;throw new D({context:{key:t.key},type:"nomatchingcontroller"})}createBlade(e,t){const l=this.pluginsMap_.blades.reduce((b,P)=>b??ks(P,{document:e,params:t}),null);if(!l)throw new D({type:"nomatchingview",context:{params:t}});return l}createBladeApi(e){if(e instanceof Ee)return new Gn(e);if(e instanceof qe)return new Rn(e);if(e instanceof $t)return new gn(e,this);const t=this.pluginsMap_.blades.reduce((l,b)=>l??b.api({controller:e,pool:this}),null);if(!t)throw D.shouldNeverHappen();return t}}function tp(){const n=new ep;return[ap,Dc,Nc,jc,Pc,_c,gc,mc,Qi,Gc,qc,Yc,H,ys,Cs,Qn].forEach(e=>{n.register(e)}),n}function np(n){return Et.isObject(n)?new Et(n.x,n.y):new Et}function ip(n,e){n.writeProperty("x",e.x),n.writeProperty("y",e.y)}function wt(n,e){if(!n)return;const t=[],l=mo(n,e);l&&t.push(l);const b=fo(n);return b&&t.push(b),new at(t)}function sp(n,e){return new Ot({assembly:vo,components:[wt("x"in n?n.x:void 0,e.x),wt("y"in n?n.y:void 0,e.y)]})}function Co(n,e){const[t,l]=n?xc(n):[];if(!w(t)||!w(l))return Math.max(Math.abs(t??0),Math.abs(l??0));const b=Dt(n);return Math.max(Math.abs(b)*10,Math.abs(e)*10)}function rp(n,e){const t=e instanceof Ot?e.components[0]:void 0,l=e instanceof Ot?e.components[1]:void 0,b=Co(t,n.x),P=Co(l,n.y);return Math.max(b,P)}function Po(n,e){return{baseStep:Dt(e),constraint:e,textProps:q.fromObject({draggingScale:Tt(e,n),formatter:Ae(kn(e,n))})}}function op(n){if(!("y"in n))return!1;const e=n.y;return e&&"inverted"in e?!!e.inverted:!1}const ap={id:"input-point2d",type:"input",accept:(n,e)=>{if(!Et.isObject(n))return null;const t=V,l=le(e,{expanded:t.optional.boolean,picker:t.optional.custom(pt),x:t.optional.custom(st),y:t.optional.object({inverted:t.optional.boolean,max:t.optional.number,min:t.optional.number,step:t.optional.number})});return l?{initialValue:n,params:l}:null},binding:{reader:n=>np,constraint:n=>sp(n.params,n.initialValue),equals:Et.equals,writer:n=>ip},controller:n=>{const e=n.document,t=n.value,l=n.constraint;if(!(l instanceof Ot))throw D.shouldNeverHappen();const b="expanded"in n.params?n.params.expanded:void 0,P="picker"in n.params?n.params.picker:void 0;return new Lc(e,{axes:[Po(t.rawValue.x,l.components[0]),Po(t.rawValue.y,l.components[1])],expanded:b??!1,invertsY:op(n.params),maxValue:rp(t.rawValue,l),parser:Ze,pickerLayout:P??"popup",value:t,viewProps:n.viewProps})}};class Mo extends a{constructor(e){super(e),this.emitter_=new z,this.controller_.valueController.value.emitter.on("change",t=>{this.emitter_.emit("change",{event:new u(this,t.rawValue)})})}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}get options(){return this.controller_.valueController.props.get("options")}set options(e){this.controller_.valueController.props.set("options",e)}get value(){return this.controller_.valueController.value.rawValue}set value(e){this.controller_.valueController.value.rawValue=e}on(e,t){const l=t.bind(this);return this.emitter_.on(e,b=>{l(b.event)}),this}}class ko extends a{constructor(e){super(e),this.emitter_=new z,this.controller_.valueController.value.emitter.on("change",t=>{this.emitter_.emit("change",{event:new u(this,t.rawValue)})})}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}get maxValue(){return this.controller_.valueController.sliderController.props.get("maxValue")}set maxValue(e){this.controller_.valueController.sliderController.props.set("maxValue",e)}get minValue(){return this.controller_.valueController.sliderController.props.get("minValue")}set minValue(e){this.controller_.valueController.sliderController.props.set("minValue",e)}get value(){return this.controller_.valueController.value.rawValue}set value(e){this.controller_.valueController.value.rawValue=e}on(e,t){const l=t.bind(this);return this.emitter_.on(e,b=>{l(b.event)}),this}}class So extends a{constructor(e){super(e),this.emitter_=new z,this.controller_.valueController.value.emitter.on("change",t=>{this.emitter_.emit("change",{event:new u(this,t.rawValue)})})}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}get formatter(){return this.controller_.valueController.props.get("formatter")}set formatter(e){this.controller_.valueController.props.set("formatter",e)}get value(){return this.controller_.valueController.value.rawValue}set value(e){this.controller_.valueController.value.rawValue=e}on(e,t){const l=t.bind(this);return this.emitter_.on(e,b=>{l(b.event)}),this}}const lp=function(){return{id:"list",type:"blade",accept(n){const e=V,t=le(n,{options:e.required.custom(nn),value:e.required.raw,view:e.required.constant("list"),label:e.optional.string});return t?{params:t}:null},controller(n){const e=new Qe(ci(n.params.options)),t=te(n.params.value,{constraint:e}),l=new qt(n.document,{props:new q({options:e.values.value("options")}),value:t,viewProps:n.viewProps});return new kt(n.document,{blade:n.blade,props:q.fromObject({label:n.params.label}),valueController:l})},api(n){return!(n.controller instanceof kt)||!(n.controller.valueController instanceof qt)?null:new Mo(n.controller)}}}();function cp(n){return n.reduce((e,t)=>Object.assign(e,{[t.presetKey]:t.read()}),{})}function pp(n,e){n.forEach(t=>{const l=e[t.presetKey];l!==void 0&&t.write(l)})}class up extends Kn{constructor(e,t){super(e,t)}get element(){return this.controller_.view.element}importPreset(e){const t=this.controller_.rackController.rack.find(Ee).map(l=>l.binding.target);pp(t,e),this.refresh()}exportPreset(){const e=this.controller_.rackController.rack.find(Ee).map(t=>t.binding.target);return cp(e)}refresh(){this.controller_.rackController.rack.find(Ee).forEach(e=>{e.binding.read()}),this.controller_.rackController.rack.find(qe).forEach(e=>{e.binding.read()})}}class hp extends _n{constructor(e,t){super(e,{expanded:t.expanded,blade:t.blade,props:t.props,root:!0,viewProps:t.viewProps})}}const dp={id:"slider",type:"blade",accept(n){const e=V,t=le(n,{max:e.required.number,min:e.required.number,view:e.required.constant("slider"),format:e.optional.function,label:e.optional.string,value:e.optional.number});return t?{params:t}:null},controller(n){var e,t;const l=(e=n.params.value)!==null&&e!==void 0?e:0,b=new bt({max:n.params.max,min:n.params.min}),P=new tn(n.document,{baseStep:1,parser:Ze,sliderProps:new q({maxValue:b.values.value("max"),minValue:b.values.value("min")}),textProps:q.fromObject({draggingScale:Tt(void 0,l),formatter:(t=n.params.format)!==null&&t!==void 0?t:gt}),value:te(l,{constraint:b}),viewProps:n.viewProps});return new kt(n.document,{blade:n.blade,props:q.fromObject({label:n.params.label}),valueController:P})},api(n){return!(n.controller instanceof kt)||!(n.controller.valueController instanceof tn)?null:new ko(n.controller)}},mp=function(){return{id:"text",type:"blade",accept(n){const e=V,t=le(n,{parse:e.required.function,value:e.required.raw,view:e.required.constant("text"),format:e.optional.function,label:e.optional.string});return t?{params:t}:null},controller(n){var e;const t=new xn(n.document,{parser:n.params.parse,props:q.fromObject({formatter:(e=n.params.format)!==null&&e!==void 0?e:l=>String(l)}),value:te(n.params.value),viewProps:n.viewProps});return new kt(n.document,{blade:n.blade,props:q.fromObject({label:n.params.label}),valueController:t})},api(n){return!(n.controller instanceof kt)||!(n.controller.valueController instanceof xn)?null:new So(n.controller)}}}();function fp(n){const e=n.createElement("div");return e.classList.add(N("dfw")()),n.body&&n.body.appendChild(e),e}function Lo(n,e,t){if(n.querySelector(`style[data-tp-style=${e}]`))return;const l=n.createElement("style");l.dataset.tpStyle=e,l.textContent=t,n.head.appendChild(l)}class vp extends up{constructor(e){var t,l;const b=e??{},P=(t=b.document)!==null&&t!==void 0?t:zn(),A=tp(),U=new hp(P,{expanded:b.expanded,blade:ye(),props:q.fromObject({title:b.title}),viewProps:Ge.create()});super(U,A),this.pool_=A,this.containerElem_=(l=b.container)!==null&&l!==void 0?l:fp(P),this.containerElem_.appendChild(this.element),this.doc_=P,this.usesDefaultWrapper_=!b.container,this.setUpDefaultPlugins_()}get document(){if(!this.doc_)throw D.alreadyDisposed();return this.doc_}dispose(){const e=this.containerElem_;if(!e)throw D.alreadyDisposed();if(this.usesDefaultWrapper_){const t=e.parentElement;t&&t.removeChild(e)}this.containerElem_=null,this.doc_=null,super.dispose()}registerPlugin(e){("plugin"in e?[e.plugin]:"plugins"in e?e.plugins:[]).forEach(l=>{this.pool_.register(l),this.embedPluginStyle_(l)})}embedPluginStyle_(e){e.css&&Lo(this.document,`plugin-${e.id}`,e.css)}setUpDefaultPlugins_(){Lo(this.document,"default",'.tp-tbiv_b,.tp-coltxtv_ms,.tp-ckbv_i,.tp-rotv_b,.tp-fldv_b,.tp-mllv_i,.tp-sglv_i,.tp-grlv_g,.tp-txtv_i,.tp-p2dpv_p,.tp-colswv_sw,.tp-p2dv_b,.tp-btnv_b,.tp-lstv_s{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-p2dv_b,.tp-btnv_b,.tp-lstv_s{background-color:var(--btn-bg);border-radius:var(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-p2dv_b:hover,.tp-btnv_b:hover,.tp-lstv_s:hover{background-color:var(--btn-bg-h)}.tp-p2dv_b:focus,.tp-btnv_b:focus,.tp-lstv_s:focus{background-color:var(--btn-bg-f)}.tp-p2dv_b:active,.tp-btnv_b:active,.tp-lstv_s:active{background-color:var(--btn-bg-a)}.tp-p2dv_b:disabled,.tp-btnv_b:disabled,.tp-lstv_s:disabled{opacity:.5}.tp-txtv_i,.tp-p2dpv_p,.tp-colswv_sw{background-color:var(--in-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);min-width:0;width:100%}.tp-txtv_i:hover,.tp-p2dpv_p:hover,.tp-colswv_sw:hover{background-color:var(--in-bg-h)}.tp-txtv_i:focus,.tp-p2dpv_p:focus,.tp-colswv_sw:focus{background-color:var(--in-bg-f)}.tp-txtv_i:active,.tp-p2dpv_p:active,.tp-colswv_sw:active{background-color:var(--in-bg-a)}.tp-txtv_i:disabled,.tp-p2dpv_p:disabled,.tp-colswv_sw:disabled{opacity:.5}.tp-mllv_i,.tp-sglv_i,.tp-grlv_g{background-color:var(--mo-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--mo-fg);height:var(--bld-us);scrollbar-color:currentColor rgba(0,0,0,0);scrollbar-width:thin;width:100%}.tp-mllv_i::-webkit-scrollbar,.tp-sglv_i::-webkit-scrollbar,.tp-grlv_g::-webkit-scrollbar{height:8px;width:8px}.tp-mllv_i::-webkit-scrollbar-corner,.tp-sglv_i::-webkit-scrollbar-corner,.tp-grlv_g::-webkit-scrollbar-corner{background-color:rgba(0,0,0,0)}.tp-mllv_i::-webkit-scrollbar-thumb,.tp-sglv_i::-webkit-scrollbar-thumb,.tp-grlv_g::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:currentColor;border:rgba(0,0,0,0) solid 2px;border-radius:4px}.tp-rotv{--font-family: var(--tp-font-family, Roboto Mono, Source Code Pro, Menlo, Courier, monospace);--bs-br: var(--tp-base-border-radius, 6px);--cnt-h-p: var(--tp-container-horizontal-padding, 4px);--cnt-v-p: var(--tp-container-vertical-padding, 4px);--elm-br: var(--tp-element-border-radius, 2px);--bld-s: var(--tp-blade-spacing, 4px);--bld-us: var(--tp-blade-unit-size, 20px);--bs-bg: var(--tp-base-background-color, hsl(230deg, 7%, 17%));--bs-sh: var(--tp-base-shadow-color, rgba(0, 0, 0, 0.2));--btn-bg: var(--tp-button-background-color, hsl(230deg, 7%, 70%));--btn-bg-a: var(--tp-button-background-color-active, #d6d7db);--btn-bg-f: var(--tp-button-background-color-focus, #c8cad0);--btn-bg-h: var(--tp-button-background-color-hover, #bbbcc4);--btn-fg: var(--tp-button-foreground-color, hsl(230deg, 7%, 17%));--cnt-bg: var(--tp-container-background-color, rgba(187, 188, 196, 0.1));--cnt-bg-a: var(--tp-container-background-color-active, rgba(187, 188, 196, 0.25));--cnt-bg-f: var(--tp-container-background-color-focus, rgba(187, 188, 196, 0.2));--cnt-bg-h: var(--tp-container-background-color-hover, rgba(187, 188, 196, 0.15));--cnt-fg: var(--tp-container-foreground-color, hsl(230deg, 7%, 75%));--in-bg: var(--tp-input-background-color, rgba(187, 188, 196, 0.1));--in-bg-a: var(--tp-input-background-color-active, rgba(187, 188, 196, 0.25));--in-bg-f: var(--tp-input-background-color-focus, rgba(187, 188, 196, 0.2));--in-bg-h: var(--tp-input-background-color-hover, rgba(187, 188, 196, 0.15));--in-fg: var(--tp-input-foreground-color, hsl(230deg, 7%, 75%));--lbl-fg: var(--tp-label-foreground-color, rgba(187, 188, 196, 0.7));--mo-bg: var(--tp-monitor-background-color, rgba(0, 0, 0, 0.2));--mo-fg: var(--tp-monitor-foreground-color, rgba(187, 188, 196, 0.7));--grv-fg: var(--tp-groove-foreground-color, rgba(187, 188, 196, 0.1))}.tp-rotv_c>.tp-cntv.tp-v-lst,.tp-tabv_c .tp-brkv>.tp-cntv.tp-v-lst,.tp-fldv_c>.tp-cntv.tp-v-lst{margin-bottom:calc(-1*var(--cnt-v-p))}.tp-rotv_c>.tp-fldv.tp-v-lst .tp-fldv_c,.tp-tabv_c .tp-brkv>.tp-fldv.tp-v-lst .tp-fldv_c,.tp-fldv_c>.tp-fldv.tp-v-lst .tp-fldv_c{border-bottom-left-radius:0}.tp-rotv_c>.tp-fldv.tp-v-lst .tp-fldv_b,.tp-tabv_c .tp-brkv>.tp-fldv.tp-v-lst .tp-fldv_b,.tp-fldv_c>.tp-fldv.tp-v-lst .tp-fldv_b{border-bottom-left-radius:0}.tp-rotv_c>*:not(.tp-v-fst),.tp-tabv_c .tp-brkv>*:not(.tp-v-fst),.tp-fldv_c>*:not(.tp-v-fst){margin-top:var(--bld-s)}.tp-rotv_c>.tp-sprv:not(.tp-v-fst),.tp-tabv_c .tp-brkv>.tp-sprv:not(.tp-v-fst),.tp-fldv_c>.tp-sprv:not(.tp-v-fst),.tp-rotv_c>.tp-cntv:not(.tp-v-fst),.tp-tabv_c .tp-brkv>.tp-cntv:not(.tp-v-fst),.tp-fldv_c>.tp-cntv:not(.tp-v-fst){margin-top:var(--cnt-v-p)}.tp-rotv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-tabv_c .tp-brkv>.tp-sprv+*:not(.tp-v-hidden),.tp-fldv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-rotv_c>.tp-cntv+*:not(.tp-v-hidden),.tp-tabv_c .tp-brkv>.tp-cntv+*:not(.tp-v-hidden),.tp-fldv_c>.tp-cntv+*:not(.tp-v-hidden){margin-top:var(--cnt-v-p)}.tp-rotv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-tabv_c .tp-brkv>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-fldv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-rotv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv,.tp-tabv_c .tp-brkv>.tp-cntv:not(.tp-v-hidden)+.tp-cntv,.tp-fldv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv{margin-top:0}.tp-tabv_c .tp-brkv>.tp-cntv,.tp-fldv_c>.tp-cntv{margin-left:4px}.tp-tabv_c .tp-brkv>.tp-fldv>.tp-fldv_b,.tp-fldv_c>.tp-fldv>.tp-fldv_b{border-top-left-radius:var(--elm-br);border-bottom-left-radius:var(--elm-br)}.tp-tabv_c .tp-brkv>.tp-fldv.tp-fldv-expanded>.tp-fldv_b,.tp-fldv_c>.tp-fldv.tp-fldv-expanded>.tp-fldv_b{border-bottom-left-radius:0}.tp-tabv_c .tp-brkv .tp-fldv>.tp-fldv_c,.tp-fldv_c .tp-fldv>.tp-fldv_c{border-bottom-left-radius:var(--elm-br)}.tp-tabv_c .tp-brkv>.tp-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-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:[dp,lp,Qn,mp]})}}const bp=new s("3.1.4");r.BladeApi=a,r.ButtonApi=G,r.FolderApi=Kn,r.InputBindingApi=Gn,r.ListApi=Mo,r.MonitorBindingApi=Rn,r.Pane=vp,r.SeparatorApi=Pi,r.SliderApi=ko,r.TabApi=ki,r.TabPageApi=qn,r.TextApi=So,r.TpChangeEvent=u,r.VERSION=bp,Object.defineProperty(r,"__esModule",{value:!0})})})(il,gi);var jn={},sl={get exports(){return jn},set exports(g){jn=g}};(function(g,i){(function(r,s){s(i)})(zr,function(r){class s{constructor(o){this.controller_=o}get element(){return this.controller_.view.element}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(o){this.controller_.viewProps.set("disabled",o)}get hidden(){return this.controller_.viewProps.get("hidden")}set hidden(o){this.controller_.viewProps.set("hidden",o)}dispose(){this.controller_.viewProps.set("disposed",!0)}}class a{constructor(o){this.target=o}}class c extends a{constructor(o,p,v,C){super(o),this.value=p,this.presetKey=v,this.last=C??!0}}function u(d){return d}function h(d){return d==null}const m={alreadydisposed:()=>"View has been already disposed",invalidparams:d=>`Invalid parameters for '${d.name}'`,nomatchingcontroller:d=>`No matching controller for '${d.key}'`,nomatchingview:d=>`No matching view for '${JSON.stringify(d.params)}'`,notbindable:()=>"Value is not bindable",propertynotfound:d=>`Property '${d.name}' not found`,shouldneverhappen:()=>"This error should never happen"};class _{constructor(o){var p;this.message=(p=m[o.type](o.context))!==null&&p!==void 0?p:"Unexpected error",this.name=this.constructor.name,this.stack=new Error(this.message).stack,this.type=o.type}static alreadyDisposed(){return new _({type:"alreadydisposed"})}static notBindable(){return new _({type:"notbindable"})}static propertyNotFound(o){return new _({type:"propertynotfound",context:{name:o}})}static shouldNeverHappen(){return new _({type:"shouldneverhappen"})}}class y{constructor(){this.observers_={}}on(o,p){let v=this.observers_[o];return v||(v=this.observers_[o]=[]),v.push({handler:p}),this}off(o,p){const v=this.observers_[o];return v&&(this.observers_[o]=v.filter(C=>C.handler!==p)),this}emit(o,p){const v=this.observers_[o];v&&v.forEach(C=>{C.handler(p)})}}const w="tp";function x(d){return(p,v)=>[w,"-",d,"v",p?`_${p}`:"",v?`-${v}`:""].join("")}function L(d,o){return p=>o(d(p))}function E(d){return d.rawValue}function D(d,o){d.emitter.on("change",L(E,o)),o(d.rawValue)}function O(d,o,p){D(d.value(o),p)}function G(d,o,p){p?d.classList.add(o):d.classList.remove(o)}function z(d,o){return p=>{G(d,o,p)}}function B(d,o){D(d,p=>{o.textContent=p??""})}const N=x("btn");class Q{constructor(o,p){this.element=o.createElement("div"),this.element.classList.add(N()),p.viewProps.bindClassModifiers(this.element);const v=o.createElement("button");v.classList.add(N("b")),p.viewProps.bindDisabled(v),this.element.appendChild(v),this.buttonElement=v;const C=o.createElement("div");C.classList.add(N("t")),B(p.props.value("title"),C),this.buttonElement.appendChild(C)}}class ${constructor(o,p){this.emitter=new y,this.onClick_=this.onClick_.bind(this),this.props=p.props,this.viewProps=p.viewProps,this.view=new Q(o,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class j{constructor(o,p){var v;this.constraint_=p==null?void 0:p.constraint,this.equals_=(v=p==null?void 0:p.equals)!==null&&v!==void 0?v:(C,S)=>C===S,this.emitter=new y,this.rawValue_=o}get constraint(){return this.constraint_}get rawValue(){return this.rawValue_}set rawValue(o){this.setRawValue(o,{forceEmit:!1,last:!0})}setRawValue(o,p){const v=p??{forceEmit:!1,last:!0},C=this.constraint_?this.constraint_.constrain(o):o,S=this.rawValue_;this.equals_(S,C)&&!v.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=C,this.emitter.emit("change",{options:v,previousRawValue:S,rawValue:C,sender:this}))}}class F{constructor(o){this.emitter=new y,this.value_=o}get rawValue(){return this.value_}set rawValue(o){this.setRawValue(o,{forceEmit:!1,last:!0})}setRawValue(o,p){const v=p??{forceEmit:!1,last:!0},C=this.value_;C===o&&!v.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.value_=o,this.emitter.emit("change",{options:v,previousRawValue:C,rawValue:this.value_,sender:this}))}}function X(d,o){const p=o==null?void 0:o.constraint,v=o==null?void 0:o.equals;return!p&&!v?new F(d):new j(d,o)}class Y{constructor(o){this.emitter=new y,this.valMap_=o;for(const p in this.valMap_)this.valMap_[p].emitter.on("change",()=>{this.emitter.emit("change",{key:p,sender:this})})}static createCore(o){return Object.keys(o).reduce((v,C)=>Object.assign(v,{[C]:X(o[C])}),{})}static fromObject(o){const p=this.createCore(o);return new Y(p)}get(o){return this.valMap_[o].rawValue}set(o,p){this.valMap_[o].rawValue=p}value(o){return this.valMap_[o]}}function Z(d,o){const v=Object.keys(o).reduce((C,S)=>{if(C===void 0)return;const T=o[S],R=T(d[S]);return R.succeeded?Object.assign(Object.assign({},C),{[S]:R.value}):void 0},{});return v}function ue(d,o){return d.reduce((p,v)=>{if(p===void 0)return;const C=o(v);if(!(!C.succeeded||C.value===void 0))return[...p,C.value]},[])}function ge(d){return d===null?!1:typeof d=="object"}function ce(d){return o=>p=>{if(!o&&p===void 0)return{succeeded:!1,value:void 0};if(o&&p===void 0)return{succeeded:!0,value:void 0};const v=d(p);return v!==void 0?{succeeded:!0,value:v}:{succeeded:!1,value:void 0}}}function me(d){return{custom:o=>ce(o)(d),boolean:ce(o=>typeof o=="boolean"?o:void 0)(d),number:ce(o=>typeof o=="number"?o:void 0)(d),string:ce(o=>typeof o=="string"?o:void 0)(d),function:ce(o=>typeof o=="function"?o:void 0)(d),constant:o=>ce(p=>p===o?o:void 0)(d),raw:ce(o=>o)(d),object:o=>ce(p=>{if(ge(p))return Z(p,o)})(d),array:o=>ce(p=>{if(Array.isArray(p))return ue(p,o)})(d)}}const he={optional:me(!0),required:me(!1)};function te(d,o){const p=he.required.object(o)(d);return p.succeeded?p.value:void 0}function q(d){console.warn([`Missing '${d.key}' of ${d.target} in ${d.place}.`,"Please rebuild plugins with the latest core package."].join(" "))}function Pe(d){return d&&d.parentElement&&d.parentElement.removeChild(d),null}class fe{constructor(o){this.value_=o}static create(o){return[new fe(o),(p,v)=>{o.setRawValue(p,v)}]}get emitter(){return this.value_.emitter}get rawValue(){return this.value_.rawValue}}const ae=x("");function ne(d,o){return z(d,ae(void 0,o))}class be extends Y{constructor(o){var p;super(o),this.onDisabledChange_=this.onDisabledChange_.bind(this),this.onParentChange_=this.onParentChange_.bind(this),this.onParentGlobalDisabledChange_=this.onParentGlobalDisabledChange_.bind(this),[this.globalDisabled_,this.setGlobalDisabled_]=fe.create(X(this.getGlobalDisabled_())),this.value("disabled").emitter.on("change",this.onDisabledChange_),this.value("parent").emitter.on("change",this.onParentChange_),(p=this.get("parent"))===null||p===void 0||p.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_)}static create(o){var p,v,C;const S=o??{};return new be(Y.createCore({disabled:(p=S.disabled)!==null&&p!==void 0?p:!1,disposed:!1,hidden:(v=S.hidden)!==null&&v!==void 0?v:!1,parent:(C=S.parent)!==null&&C!==void 0?C:null}))}get globalDisabled(){return this.globalDisabled_}bindClassModifiers(o){D(this.globalDisabled_,ne(o,"disabled")),O(this,"hidden",ne(o,"hidden"))}bindDisabled(o){D(this.globalDisabled_,p=>{o.disabled=p})}bindTabIndex(o){D(this.globalDisabled_,p=>{o.tabIndex=p?-1:0})}handleDispose(o){this.value("disposed").emitter.on("change",p=>{p&&o()})}getGlobalDisabled_(){const o=this.get("parent");return(o?o.globalDisabled.rawValue:!1)||this.get("disabled")}updateGlobalDisabled_(){this.setGlobalDisabled_(this.getGlobalDisabled_())}onDisabledChange_(){this.updateGlobalDisabled_()}onParentGlobalDisabledChange_(){this.updateGlobalDisabled_()}onParentChange_(o){var p;const v=o.previousRawValue;v==null||v.globalDisabled.emitter.off("change",this.onParentGlobalDisabledChange_),(p=this.get("parent"))===null||p===void 0||p.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_),this.updateGlobalDisabled_()}}function V(){return["veryfirst","first","last","verylast"]}const le=x(""),Ve={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class Oe{constructor(o){this.parent_=null,this.blade=o.blade,this.view=o.view,this.viewProps=o.viewProps;const p=this.view.element;this.blade.value("positions").emitter.on("change",()=>{V().forEach(v=>{p.classList.remove(le(void 0,Ve[v]))}),this.blade.get("positions").forEach(v=>{p.classList.add(le(void 0,Ve[v]))})}),this.viewProps.handleDispose(()=>{Pe(p)})}get parent(){return this.parent_}set parent(o){if(this.parent_=o,!("parent"in this.viewProps.valMap_)){q({key:"parent",target:be.name,place:"BladeController.parent"});return}this.viewProps.set("parent",this.parent_?this.parent_.viewProps:null)}}const we="http://www.w3.org/2000/svg";function Xe(d){d.offsetHeight}function un(d,o){const p=d.style.transition;d.style.transition="none",o(),d.style.transition=p}function Ge(d){return d.ontouchstart!==void 0}function hn(d){for(;d.childNodes.length>0;)d.removeChild(d.childNodes[0])}function zt(d){return d.relatedTarget?d.relatedTarget:"explicitOriginalTarget"in d?d.explicitOriginalTarget:null}const et=x("lbl");function dt(d,o){const p=d.createDocumentFragment();return o.split(`
|
|
22
|
-
`).map(C=>d.createTextNode(C)).forEach((C,S)=>{S>0&&p.appendChild(d.createElement("br")),p.appendChild(C)}),p}class Be{constructor(o,p){this.element=o.createElement("div"),this.element.classList.add(et()),p.viewProps.bindClassModifiers(this.element);const v=o.createElement("div");v.classList.add(et("l")),O(p.props,"label",S=>{h(S)?this.element.classList.add(et(void 0,"nol")):(this.element.classList.remove(et(void 0,"nol")),hn(v),v.appendChild(dt(o,S)))}),this.element.appendChild(v),this.labelElement=v;const C=o.createElement("div");C.classList.add(et("v")),this.element.appendChild(C),this.valueElement=C}}class Ye extends Oe{constructor(o,p){const v=p.valueController.viewProps;super(Object.assign(Object.assign({},p),{view:new Be(o,{props:p.props,viewProps:v}),viewProps:v})),this.props=p.props,this.valueController=p.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class Ut extends Oe{constructor(o){super(o),this.value=o.value}}class tt extends Y{constructor(o){super(o)}static create(o){const p={completed:!0,expanded:o,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null},v=Y.createCore(p);return new tt(v)}get styleExpanded(){var o;return(o=this.get("temporaryExpanded"))!==null&&o!==void 0?o:this.get("expanded")}get styleHeight(){if(!this.styleExpanded)return"0";const o=this.get("expandedHeight");return this.get("shouldFixHeight")&&!h(o)?`${o}px`:"auto"}bindExpandedClass(o,p){const v=()=>{this.styleExpanded?o.classList.add(p):o.classList.remove(p)};O(this,"expanded",v),O(this,"temporaryExpanded",v)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function dn(d){return tt.create(d)}function zn(d,o){let p=0;return un(o,()=>{d.set("expandedHeight",null),d.set("temporaryExpanded",!0),Xe(o),p=o.clientHeight,d.set("temporaryExpanded",null),Xe(o)}),p}function mn(d,o){o.style.height=d.styleHeight}function fn(d,o){d.value("expanded").emitter.on("beforechange",()=>{d.set("completed",!1),h(d.get("expandedHeight"))&&d.set("expandedHeight",zn(d,o)),d.set("shouldFixHeight",!0),Xe(o)}),d.emitter.on("change",()=>{mn(d,o)}),mn(d,o),o.addEventListener("transitionend",p=>{p.propertyName==="height"&&d.cleanUpTransition()})}class rt{constructor(o,p){const v=x(p.viewName);this.element=o.createElement("div"),this.element.classList.add(v()),p.viewProps.bindClassModifiers(this.element)}}class mt extends Ut{constructor(o,p){const v=p.valueController.viewProps;super(Object.assign(Object.assign({},p),{value:p.valueController.value,view:new Be(o,{props:p.props,viewProps:v}),viewProps:v})),this.props=p.props,this.valueController=p.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class vn{constructor(){this.disabled=!1,this.emitter=new y}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class Gt{constructor(o,p){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=o,this.emitter=new y,this.interval_=p,this.setTimer_()}get disabled(){return this.disabled_}set disabled(o){this.disabled_=o,this.disabled_?this.clearTimer_():this.setTimer_()}dispose(){this.clearTimer_()}clearTimer_(){if(this.timerId_===null)return;const o=this.doc_.defaultView;o&&o.clearInterval(this.timerId_),this.timerId_=null}setTimer_(){if(this.clearTimer_(),this.interval_<=0)return;const o=this.doc_.defaultView;o&&(this.timerId_=o.setInterval(this.onTick_,this.interval_))}onTick_(){this.disabled_||this.emitter.emit("tick",{sender:this})}}class bn{constructor(o){this.constraints=o}constrain(o){return this.constraints.reduce((p,v)=>v.constrain(p),o)}}function ot(d,o){if(d instanceof o)return d;if(d instanceof bn){const p=d.constraints.reduce((v,C)=>v||(C instanceof o?C:null),null);if(p)return p}return null}class nt{constructor(o){this.values=Y.fromObject({max:o.max,min:o.min})}constrain(o){const p=this.values.get("max"),v=this.values.get("min");return Math.min(Math.max(o,v),p)}}class ft{constructor(o){this.values=Y.fromObject({max:o.max,min:o.min})}get maxValue(){return this.values.get("max")}get minValue(){return this.values.get("min")}constrain(o){const p=this.values.get("max"),v=this.values.get("min");let C=o;return h(v)||(C=Math.max(C,v)),h(p)||(C=Math.min(C,p)),C}}class I{constructor(o,p=0){this.step=o,this.origin=p}constrain(o){const p=this.origin%this.step,v=Math.round((o-p)/this.step);return p+v*this.step}}const K=x("pop");class H{constructor(o,p){this.element=o.createElement("div"),this.element.classList.add(K()),p.viewProps.bindClassModifiers(this.element),D(p.shows,z(this.element,K(void 0,"v")))}}class ie{constructor(o,p){this.shows=X(!1),this.viewProps=p.viewProps,this.view=new H(o,{shows:this.shows,viewProps:this.viewProps})}}const ye=x("txt");class Ie{constructor(o,p){this.onChange_=this.onChange_.bind(this),this.element=o.createElement("div"),this.element.classList.add(ye()),p.viewProps.bindClassModifiers(this.element),this.props_=p.props,this.props_.emitter.on("change",this.onChange_);const v=o.createElement("input");v.classList.add(ye("i")),v.type="text",p.viewProps.bindDisabled(v),this.element.appendChild(v),this.inputElement=v,p.value.emitter.on("change",this.onChange_),this.value_=p.value,this.refresh()}refresh(){const o=this.props_.get("formatter");this.inputElement.value=o(this.value_.rawValue)}onChange_(){this.refresh()}}class Mt{constructor(o,p){this.onInputChange_=this.onInputChange_.bind(this),this.parser_=p.parser,this.props=p.props,this.value=p.value,this.viewProps=p.viewProps,this.view=new Ie(o,{props:p.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(o){const v=o.currentTarget.value,C=this.parser_(v);h(C)||(this.value.rawValue=C),this.view.refresh()}}function Rt(d){return d==="false"?!1:!!d}class Ne{constructor(o){this.text=o}evaluate(){return Number(this.text)}toString(){return this.text}}const Fe={"**":(d,o)=>Math.pow(d,o),"*":(d,o)=>d*o,"/":(d,o)=>d/o,"%":(d,o)=>d%o,"+":(d,o)=>d+o,"-":(d,o)=>d-o,"<<":(d,o)=>d<<o,">>":(d,o)=>d>>o,">>>":(d,o)=>d>>>o,"&":(d,o)=>d&o,"^":(d,o)=>d^o,"|":(d,o)=>d|o};class us{constructor(o,p,v){this.left=p,this.operator=o,this.right=v}evaluate(){const o=Fe[this.operator];if(!o)throw new Error(`unexpected binary operator: '${this.operator}`);return o(this.left.evaluate(),this.right.evaluate())}toString(){return["b(",this.left.toString(),this.operator,this.right.toString(),")"].join(" ")}}const hs={"+":d=>d,"-":d=>-d,"~":d=>~d};class ds{constructor(o,p){this.operator=o,this.expression=p}evaluate(){const o=hs[this.operator];if(!o)throw new Error(`unexpected unary operator: '${this.operator}`);return o(this.expression.evaluate())}toString(){return["u(",this.operator,this.expression.toString(),")"].join(" ")}}function Un(d){return(o,p)=>{for(let v=0;v<d.length;v++){const C=d[v](o,p);if(C!=="")return C}return""}}function vt(d,o){var p;const v=d.substr(o).match(/^\s+/);return(p=v&&v[0])!==null&&p!==void 0?p:""}function Gn(d,o){const p=d.substr(o,1);return p.match(/^[1-9]$/)?p:""}function Ee(d,o){var p;const v=d.substr(o).match(/^[0-9]+/);return(p=v&&v[0])!==null&&p!==void 0?p:""}function Rn(d,o){const p=Ee(d,o);if(p!=="")return p;const v=d.substr(o,1);if(o+=1,v!=="-"&&v!=="+")return"";const C=Ee(d,o);return C===""?"":v+C}function qe(d,o){const p=d.substr(o,1);if(o+=1,p.toLowerCase()!=="e")return"";const v=Rn(d,o);return v===""?"":p+v}function yi(d,o){const p=d.substr(o,1);if(p==="0")return p;const v=Gn(d,o);return o+=v.length,v===""?"":v+Ee(d,o)}function Kt(d,o){const p=yi(d,o);if(o+=p.length,p==="")return"";const v=d.substr(o,1);if(o+=v.length,v!==".")return"";const C=Ee(d,o);return o+=C.length,p+v+C+qe(d,o)}function xi(d,o){const p=d.substr(o,1);if(o+=p.length,p!==".")return"";const v=Ee(d,o);return o+=v.length,v===""?"":p+v+qe(d,o)}function gn(d,o){const p=yi(d,o);return o+=p.length,p===""?"":p+qe(d,o)}const Kn=Un([Kt,xi,gn]);function $n(d,o){var p;const v=d.substr(o).match(/^[01]+/);return(p=v&&v[0])!==null&&p!==void 0?p:""}function ms(d,o){const p=d.substr(o,2);if(o+=p.length,p.toLowerCase()!=="0b")return"";const v=$n(d,o);return v===""?"":p+v}function fs(d,o){var p;const v=d.substr(o).match(/^[0-7]+/);return(p=v&&v[0])!==null&&p!==void 0?p:""}function vs(d,o){const p=d.substr(o,2);if(o+=p.length,p.toLowerCase()!=="0o")return"";const v=fs(d,o);return v===""?"":p+v}function bs(d,o){var p;const v=d.substr(o).match(/^[0-9a-f]+/i);return(p=v&&v[0])!==null&&p!==void 0?p:""}function Xn(d,o){const p=d.substr(o,2);if(o+=p.length,p.toLowerCase()!=="0x")return"";const v=bs(d,o);return v===""?"":p+v}const gs=Un([ms,vs,Xn]),_s=Un([gs,Kn]);function $t(d,o){const p=_s(d,o);return o+=p.length,p===""?null:{evaluable:new Ne(p),cursor:o}}function Ci(d,o){const p=d.substr(o,1);if(o+=p.length,p!=="(")return null;const v=Yn(d,o);if(!v)return null;o=v.cursor,o+=vt(d,o).length;const C=d.substr(o,1);return o+=C.length,C!==")"?null:{evaluable:v.evaluable,cursor:o}}function ws(d,o){var p;return(p=$t(d,o))!==null&&p!==void 0?p:Ci(d,o)}function _n(d,o){const p=ws(d,o);if(p)return p;const v=d.substr(o,1);if(o+=v.length,v!=="+"&&v!=="-"&&v!=="~")return null;const C=_n(d,o);return C?(o=C.cursor,{cursor:o,evaluable:new ds(v,C.evaluable)}):null}function ys(d,o,p){p+=vt(o,p).length;const v=d.filter(C=>o.startsWith(C,p))[0];return v?(p+=v.length,p+=vt(o,p).length,{cursor:p,operator:v}):null}function kt(d,o){return(p,v)=>{const C=d(p,v);if(!C)return null;v=C.cursor;let S=C.evaluable;for(;;){const T=ys(o,p,v);if(!T)break;v=T.cursor;const R=d(p,v);if(!R)return null;v=R.cursor,S=new us(T.operator,S,R.evaluable)}return S?{cursor:v,evaluable:S}:null}}const Pi=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((d,o)=>kt(d,o),_n);function Yn(d,o){return o+=vt(d,o).length,Pi(d,o)}function xs(d){const o=Yn(d,0);return!o||o.cursor+vt(d,o.cursor).length!==d.length?null:o.evaluable}function Xt(d){var o;const p=xs(d);return(o=p==null?void 0:p.evaluate())!==null&&o!==void 0?o:null}function Cs(d){if(typeof d=="number")return d;if(typeof d=="string"){const o=Xt(d);if(!h(o))return o}return 0}function Le(d){return o=>o.toFixed(Math.max(Math.min(d,20),0))}const Ps=Le(0);function wn(d){return Ps(d)+"%"}function Mi(d){return String(d)}function qn(d,o){for(;d.length<o;)d.push(void 0)}function ki(d){const o=[];return qn(o,d),X(o)}function Si(d){const o=d.indexOf(void 0);return o<0?d:d.slice(0,o)}function Ms(d,o){const p=[...Si(d),o];return p.length>d.length?p.splice(0,p.length-d.length):qn(p,d.length),p}function St({primary:d,secondary:o,forward:p,backward:v}){let C=!1;function S(T){C||(C=!0,T(),C=!1)}d.emitter.on("change",T=>{S(()=>{o.setRawValue(p(d,o),T.options)})}),o.emitter.on("change",T=>{S(()=>{d.setRawValue(v(d,o),T.options)}),S(()=>{o.setRawValue(p(d,o),T.options)})}),S(()=>{o.setRawValue(p(d,o),{forceEmit:!1,last:!0})})}function Lt(d,o){const p=d*(o.altKey?.1:1)*(o.shiftKey?10:1);return o.upKey?+p:o.downKey?-p:0}function Yt(d){return{altKey:d.altKey,downKey:d.key==="ArrowDown",shiftKey:d.shiftKey,upKey:d.key==="ArrowUp"}}function Qn(d){return{altKey:d.altKey,downKey:d.key==="ArrowLeft",shiftKey:d.shiftKey,upKey:d.key==="ArrowRight"}}function ks(d){return d==="ArrowUp"||d==="ArrowDown"}function Li(d){return ks(d)||d==="ArrowLeft"||d==="ArrowRight"}function Zn(d,o){var p,v;const C=o.ownerDocument.defaultView,S=o.getBoundingClientRect();return{x:d.pageX-(((p=C&&C.scrollX)!==null&&p!==void 0?p:0)+S.left),y:d.pageY-(((v=C&&C.scrollY)!==null&&v!==void 0?v:0)+S.top)}}class at{constructor(o){this.lastTouch_=null,this.onDocumentMouseMove_=this.onDocumentMouseMove_.bind(this),this.onDocumentMouseUp_=this.onDocumentMouseUp_.bind(this),this.onMouseDown_=this.onMouseDown_.bind(this),this.onTouchEnd_=this.onTouchEnd_.bind(this),this.onTouchMove_=this.onTouchMove_.bind(this),this.onTouchStart_=this.onTouchStart_.bind(this),this.elem_=o,this.emitter=new y,o.addEventListener("touchstart",this.onTouchStart_,{passive:!1}),o.addEventListener("touchmove",this.onTouchMove_,{passive:!0}),o.addEventListener("touchend",this.onTouchEnd_),o.addEventListener("mousedown",this.onMouseDown_)}computePosition_(o){const p=this.elem_.getBoundingClientRect();return{bounds:{width:p.width,height:p.height},point:o?{x:o.x,y:o.y}:null}}onMouseDown_(o){var p;o.preventDefault(),(p=o.currentTarget)===null||p===void 0||p.focus();const v=this.elem_.ownerDocument;v.addEventListener("mousemove",this.onDocumentMouseMove_),v.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:o.altKey,data:this.computePosition_(Zn(o,this.elem_)),sender:this,shiftKey:o.shiftKey})}onDocumentMouseMove_(o){this.emitter.emit("move",{altKey:o.altKey,data:this.computePosition_(Zn(o,this.elem_)),sender:this,shiftKey:o.shiftKey})}onDocumentMouseUp_(o){const p=this.elem_.ownerDocument;p.removeEventListener("mousemove",this.onDocumentMouseMove_),p.removeEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("up",{altKey:o.altKey,data:this.computePosition_(Zn(o,this.elem_)),sender:this,shiftKey:o.shiftKey})}onTouchStart_(o){o.preventDefault();const p=o.targetTouches.item(0),v=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:o.altKey,data:this.computePosition_(p?{x:p.clientX-v.left,y:p.clientY-v.top}:void 0),sender:this,shiftKey:o.shiftKey}),this.lastTouch_=p}onTouchMove_(o){const p=o.targetTouches.item(0),v=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:o.altKey,data:this.computePosition_(p?{x:p.clientX-v.left,y:p.clientY-v.top}:void 0),sender:this,shiftKey:o.shiftKey}),this.lastTouch_=p}onTouchEnd_(o){var p;const v=(p=o.targetTouches.item(0))!==null&&p!==void 0?p:this.lastTouch_,C=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:o.altKey,data:this.computePosition_(v?{x:v.clientX-C.left,y:v.clientY-C.top}:void 0),sender:this,shiftKey:o.shiftKey})}}function _e(d,o,p,v,C){const S=(d-o)/(p-o);return v+S*(C-v)}function bt(d){return String(d.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function Qe(d,o,p){return Math.min(Math.max(d,o),p)}const je=x("txt");class yn{constructor(o,p){this.onChange_=this.onChange_.bind(this),this.props_=p.props,this.props_.emitter.on("change",this.onChange_),this.element=o.createElement("div"),this.element.classList.add(je(),je(void 0,"num")),p.arrayPosition&&this.element.classList.add(je(void 0,p.arrayPosition)),p.viewProps.bindClassModifiers(this.element);const v=o.createElement("input");v.classList.add(je("i")),v.type="text",p.viewProps.bindDisabled(v),this.element.appendChild(v),this.inputElement=v,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=p.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add(je()),this.inputElement.classList.add(je("i"));const C=o.createElement("div");C.classList.add(je("k")),this.element.appendChild(C),this.knobElement=C;const S=o.createElementNS(we,"svg");S.classList.add(je("g")),this.knobElement.appendChild(S);const T=o.createElementNS(we,"path");T.classList.add(je("gb")),S.appendChild(T),this.guideBodyElem_=T;const R=o.createElementNS(we,"path");R.classList.add(je("gh")),S.appendChild(R),this.guideHeadElem_=R;const oe=o.createElement("div");oe.classList.add(x("tt")()),this.knobElement.appendChild(oe),this.tooltipElem_=oe,p.value.emitter.on("change",this.onChange_),this.value=p.value,this.refresh()}onDraggingChange_(o){if(o.rawValue===null){this.element.classList.remove(je(void 0,"drg"));return}this.element.classList.add(je(void 0,"drg"));const p=o.rawValue/this.props_.get("draggingScale"),v=p+(p>0?-1:p<0?1:0),C=Qe(-v,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${v+C},0 L${v},4 L${v+C},8`,`M ${p},-1 L${p},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${p},4`);const S=this.props_.get("formatter");this.tooltipElem_.textContent=S(this.value.rawValue),this.tooltipElem_.style.left=`${p}px`}refresh(){const o=this.props_.get("formatter");this.inputElement.value=o(this.value.rawValue)}onChange_(){this.refresh()}}class Wn{constructor(o,p){var v;this.originRawValue_=0,this.onInputChange_=this.onInputChange_.bind(this),this.onInputKeyDown_=this.onInputKeyDown_.bind(this),this.onInputKeyUp_=this.onInputKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=p.baseStep,this.parser_=p.parser,this.props=p.props,this.sliderProps_=(v=p.sliderProps)!==null&&v!==void 0?v:null,this.value=p.value,this.viewProps=p.viewProps,this.dragging_=X(null),this.view=new yn(o,{arrayPosition:p.arrayPosition,dragging:this.dragging_,props:this.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.inputElement.addEventListener("keydown",this.onInputKeyDown_),this.view.inputElement.addEventListener("keyup",this.onInputKeyUp_);const C=new at(this.view.knobElement);C.emitter.on("down",this.onPointerDown_),C.emitter.on("move",this.onPointerMove_),C.emitter.on("up",this.onPointerUp_)}constrainValue_(o){var p,v;const C=(p=this.sliderProps_)===null||p===void 0?void 0:p.get("minValue"),S=(v=this.sliderProps_)===null||v===void 0?void 0:v.get("maxValue");let T=o;return C!==void 0&&(T=Math.max(T,C)),S!==void 0&&(T=Math.min(T,S)),T}onInputChange_(o){const v=o.currentTarget.value,C=this.parser_(v);h(C)||(this.value.rawValue=this.constrainValue_(C)),this.view.refresh()}onInputKeyDown_(o){const p=Lt(this.baseStep_,Yt(o));p!==0&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+p),{forceEmit:!1,last:!1})}onInputKeyUp_(o){Lt(this.baseStep_,Yt(o))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}onPointerDown_(){this.originRawValue_=this.value.rawValue,this.dragging_.rawValue=0}computeDraggingValue_(o){if(!o.point)return null;const p=o.point.x-o.bounds.width/2;return this.constrainValue_(this.originRawValue_+p*this.props.get("draggingScale"))}onPointerMove_(o){const p=this.computeDraggingValue_(o.data);p!==null&&(this.value.setRawValue(p,{forceEmit:!1,last:!1}),this.dragging_.rawValue=this.value.rawValue-this.originRawValue_)}onPointerUp_(o){const p=this.computeDraggingValue_(o.data);p!==null&&(this.value.setRawValue(p,{forceEmit:!0,last:!0}),this.dragging_.rawValue=null)}}function Jn(d,o){d.write(o)}function qt(d){const o=d?ot(d,I):null;return o?o.step:null}function Ai(d,o){const p=d&&ot(d,I);return p?bt(p.step):Math.max(bt(o),2)}function Vi(d){const o=qt(d);return o??1}function Ii(d,o){var p;const v=d&&ot(d,I),C=Math.abs((p=v==null?void 0:v.step)!==null&&p!==void 0?p:o);return C===0?.1:Math.pow(10,Math.floor(Math.log10(C))-1)}function Qt(d){return[d[0],d[1],d[2]]}function Di(d){const o=Qe(Math.floor(d),0,255).toString(16);return o.length===1?`0${o}`:o}function xn(d,o="#"){const p=Qt(d.getComponents("rgb")).map(Di).join("");return`${o}${p}`}function Ss(d,o="#"){const p=d.getComponents("rgb"),v=[p[0],p[1],p[2],p[3]*255].map(Di).join("");return`${o}${v}`}function Ti(d,o){const p=Le(o==="float"?2:0);return`rgb(${Qt(d.getComponents("rgb",o)).map(C=>p(C)).join(", ")})`}function Oi(d){return o=>Ti(o,d)}function Ls(d,o){const p=Le(2),v=Le(o==="float"?2:0);return`rgba(${d.getComponents("rgb",o).map((S,T)=>(T===3?p:v)(S)).join(", ")})`}function As(d){return o=>Ls(o,d)}function Vs(d){const o=[Le(0),wn,wn];return`hsl(${Qt(d.getComponents("hsl")).map((v,C)=>o[C](v)).join(", ")})`}function Is(d){const o=[Le(0),wn,wn,Le(2)];return`hsla(${d.getComponents("hsl").map((v,C)=>o[C](v)).join(", ")})`}function Ds(d,o){const p=Le(o==="float"?2:0),v=["r","g","b"];return`{${Qt(d.getComponents("rgb",o)).map((S,T)=>`${v[T]}: ${p(S)}`).join(", ")}}`}function Hn(d){return o=>Ds(o,d)}function Zt(d,o){const p=Le(2),v=Le(o==="float"?2:0),C=["r","g","b","a"];return`{${d.getComponents("rgb",o).map((T,R)=>{const oe=R===3?p:v;return`${C[R]}: ${oe(T)}`}).join(", ")}}`}function Ts(d){return o=>Zt(o,d)}[...["int","float"].reduce((d,o)=>[...d,{format:{alpha:!1,mode:"rgb",notation:"func",type:o},stringifier:Oi(o)},{format:{alpha:!0,mode:"rgb",notation:"func",type:o},stringifier:As(o)},{format:{alpha:!1,mode:"rgb",notation:"object",type:o},stringifier:Hn(o)},{format:{alpha:!0,mode:"rgb",notation:"object",type:o},stringifier:Ts(o)}],[])];class Wt{constructor(o){this.components=o.components,this.asm_=o.assembly}constrain(o){const p=this.asm_.toComponents(o).map((v,C)=>{var S,T;return(T=(S=this.components[C])===null||S===void 0?void 0:S.constrain(v))!==null&&T!==void 0?T:v});return this.asm_.fromComponents(p)}}const Ei=x("pndtxt");class ei{constructor(o,p){this.textViews=p.textViews,this.element=o.createElement("div"),this.element.classList.add(Ei()),this.textViews.forEach(v=>{const C=o.createElement("div");C.classList.add(Ei("a")),C.appendChild(v.element),this.element.appendChild(C)})}}function Bi(d,o,p){return new Wn(d,{arrayPosition:p===0?"fst":p===o.axes.length-1?"lst":"mid",baseStep:o.axes[p].baseStep,parser:o.parser,props:o.axes[p].textProps,value:X(0,{constraint:o.axes[p].constraint}),viewProps:o.viewProps})}class ti{constructor(o,p){this.value=p.value,this.viewProps=p.viewProps,this.acs_=p.axes.map((v,C)=>Bi(o,p,C)),this.acs_.forEach((v,C)=>{St({primary:this.value,secondary:v.value,forward:S=>p.assembly.toComponents(S.rawValue)[C],backward:(S,T)=>{const R=p.assembly.toComponents(S.rawValue);return R[C]=T.rawValue,p.assembly.fromComponents(R)}})}),this.view=new ei(o,{textViews:this.acs_.map(v=>v.view)})}}function Os(d,o){return"step"in d&&!h(d.step)?new I(d.step,o):null}function Es(d){return!h(d.max)&&!h(d.min)?new nt({max:d.max,min:d.min}):!h(d.max)||!h(d.min)?new ft({max:d.max,min:d.min}):null}const Bs={monitor:{defaultInterval:200,defaultLineCount:3}},lt=x("grl");class Ns{constructor(o,p){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=o.createElement("div"),this.element.classList.add(lt()),p.viewProps.bindClassModifiers(this.element),this.formatter_=p.formatter,this.props_=p.props,this.cursor_=p.cursor,this.cursor_.emitter.on("change",this.onCursorChange_);const v=o.createElementNS(we,"svg");v.classList.add(lt("g")),v.style.height=`calc(var(--bld-us) * ${p.lineCount})`,this.element.appendChild(v),this.svgElem_=v;const C=o.createElementNS(we,"polyline");this.svgElem_.appendChild(C),this.lineElem_=C;const S=o.createElement("div");S.classList.add(lt("t"),x("tt")()),this.element.appendChild(S),this.tooltipElem_=S,p.value.emitter.on("change",this.onValueUpdate_),this.value=p.value,this.update_()}get graphElement(){return this.svgElem_}update_(){const o=this.svgElem_.getBoundingClientRect(),p=this.value.rawValue.length-1,v=this.props_.get("minValue"),C=this.props_.get("maxValue"),S=[];this.value.rawValue.forEach((De,ui)=>{if(De===void 0)return;const Js=_e(ui,0,p,0,o.width),hi=_e(De,v,C,o.height,0);S.push([Js,hi].join(","))}),this.lineElem_.setAttributeNS(null,"points",S.join(" "));const T=this.tooltipElem_,R=this.value.rawValue[this.cursor_.rawValue];if(R===void 0){T.classList.remove(lt("t","a"));return}const oe=_e(this.cursor_.rawValue,0,p,0,o.width),J=_e(R,v,C,o.height,0);T.style.left=`${oe}px`,T.style.top=`${J}px`,T.textContent=`${this.formatter_(R)}`,T.classList.contains(lt("t","a"))||(T.classList.add(lt("t","a"),lt("t","in")),Xe(T),T.classList.remove(lt("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class Fs{constructor(o,p){if(this.onGraphMouseMove_=this.onGraphMouseMove_.bind(this),this.onGraphMouseLeave_=this.onGraphMouseLeave_.bind(this),this.onGraphPointerDown_=this.onGraphPointerDown_.bind(this),this.onGraphPointerMove_=this.onGraphPointerMove_.bind(this),this.onGraphPointerUp_=this.onGraphPointerUp_.bind(this),this.props_=p.props,this.value=p.value,this.viewProps=p.viewProps,this.cursor_=X(-1),this.view=new Ns(o,{cursor:this.cursor_,formatter:p.formatter,lineCount:p.lineCount,props:this.props_,value:this.value,viewProps:this.viewProps}),!Ge(o))this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_);else{const v=new at(this.view.element);v.emitter.on("down",this.onGraphPointerDown_),v.emitter.on("move",this.onGraphPointerMove_),v.emitter.on("up",this.onGraphPointerUp_)}}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(o){const p=this.view.element.getBoundingClientRect();this.cursor_.rawValue=Math.floor(_e(o.offsetX,0,p.width,0,this.value.rawValue.length))}onGraphPointerDown_(o){this.onGraphPointerMove_(o)}onGraphPointerMove_(o){if(!o.data.point){this.cursor_.rawValue=-1;return}this.cursor_.rawValue=Math.floor(_e(o.data.point.x,0,o.data.bounds.width,0,this.value.rawValue.length))}onGraphPointerUp_(){this.cursor_.rawValue=-1}}class Ni{constructor(o){this.controller_=o}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(o){this.controller_.viewProps.set("disabled",o)}get title(){var o;return(o=this.controller_.props.get("title"))!==null&&o!==void 0?o:""}set title(o){this.controller_.props.set("title",o)}on(o,p){const v=p.bind(this);return this.controller_.emitter.on(o,()=>{v(new a(this))}),this}}class js extends a{constructor(o,p,v){super(o),this.cell=p,this.index=v}}class Fi extends s{constructor(o){super(o),this.cellToApiMap_=new Map,this.emitter_=new y;const p=this.controller_.valueController;p.cellControllers.forEach((v,C)=>{const S=new Ni(v);this.cellToApiMap_.set(v,S),v.emitter.on("click",()=>{const T=C%p.size[0],R=Math.floor(C/p.size[0]);this.emitter_.emit("click",{event:new js(this,S,[T,R])})})})}cell(o,p){const v=this.controller_.valueController,C=v.cellControllers[p*v.size[0]+o];return this.cellToApiMap_.get(C)}on(o,p){const v=p.bind(this);return this.emitter_.on(o,C=>{v(C.event)}),this}}class ni{constructor(o,p){this.size=p.size;const[v,C]=this.size,S=[];for(let T=0;T<C;T++)for(let R=0;R<v;R++){const oe=new $(o,{props:Y.fromObject(Object.assign({},p.cellConfig(R,T))),viewProps:be.create()});S.push(oe)}this.cellCs_=S,this.viewProps=be.create(),this.viewProps.handleDispose(()=>{this.cellCs_.forEach(T=>{T.viewProps.set("disposed",!0)})}),this.view=new rt(o,{viewProps:this.viewProps,viewName:"btngrid"}),this.view.element.style.gridTemplateColumns=`repeat(${v}, 1fr)`,this.cellCs_.forEach(T=>{this.view.element.appendChild(T.view.element)})}get cellControllers(){return this.cellCs_}}const zs={id:"buttongrid",type:"blade",css:'.tp-cbzgv,.tp-radv_b,.tp-rslv_k,.tp-cbzv_b{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-radv_b,.tp-rslv_k,.tp-cbzv_b{background-color:var(--btn-bg);border-radius:var(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-radv_b:hover,.tp-rslv_k:hover,.tp-cbzv_b:hover{background-color:var(--btn-bg-h)}.tp-radv_b:focus,.tp-rslv_k:focus,.tp-cbzv_b:focus{background-color:var(--btn-bg-f)}.tp-radv_b:active,.tp-rslv_k:active,.tp-cbzv_b:active{background-color:var(--btn-bg-a)}.tp-radv_b:disabled,.tp-rslv_k:disabled,.tp-cbzv_b:disabled{opacity:.5}.tp-cbzgv{background-color:var(--in-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);min-width:0;width:100%}.tp-cbzgv:hover{background-color:var(--in-bg-h)}.tp-cbzgv:focus{background-color:var(--in-bg-f)}.tp-cbzgv:active{background-color:var(--in-bg-a)}.tp-cbzgv:disabled{opacity:.5}.tp-btngridv{border-radius:var(--elm-br);display:grid;overflow:hidden;gap:2px}.tp-btngridv.tp-v-disabled{opacity:.5}.tp-btngridv .tp-btnv_b:disabled{opacity:1}.tp-btngridv .tp-btnv_b:disabled .tp-btnv_t{opacity:.5}.tp-btngridv .tp-btnv_b{border-radius:0}.tp-cbzv{position:relative}.tp-cbzv_h{display:flex}.tp-cbzv_b{margin-right:4px;position:relative;width:var(--bld-us)}.tp-cbzv_b svg{display:block;height:16px;left:50%;margin-left:-8px;margin-top:-8px;position:absolute;top:50%;width:16px}.tp-cbzv_b svg path{stroke:var(--bs-bg);stroke-width:2}.tp-cbzv_t{flex:1}.tp-cbzv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-cbzv.tp-cbzv-expanded .tp-cbzv_p{margin-top:var(--bld-s);opacity:1}.tp-cbzv.tp-cbzv-cpl .tp-cbzv_p{overflow:visible}.tp-cbzv .tp-popv{left:calc(-1*var(--cnt-h-p));position:absolute;right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-cbzpv_t{margin-top:var(--bld-s)}.tp-cbzgv{height:auto;overflow:hidden;position:relative}.tp-cbzgv.tp-v-disabled{opacity:.5}.tp-cbzgv_p{left:16px;position:absolute;right:16px;top:0}.tp-cbzgv_g{cursor:pointer;display:block;height:calc(var(--bld-us)*5);width:100%}.tp-cbzgv_u{opacity:.1;stroke:var(--in-fg);stroke-dasharray:1}.tp-cbzgv_l{fill:rgba(0,0,0,0);stroke:var(--in-fg)}.tp-cbzgv_v{opacity:.5;stroke:var(--in-fg);stroke-dasharray:1}.tp-cbzgv_h{border:var(--in-fg) solid 1px;border-radius:50%;box-sizing:border-box;height:4px;margin-left:-2px;margin-top:-2px;pointer-events:none;position:absolute;width:4px}.tp-cbzgv:focus .tp-cbzgv_h-sel{background-color:var(--in-fg);border-width:0}.tp-cbzprvv{cursor:pointer;height:4px;padding:4px 0;position:relative}.tp-cbzprvv_g{display:block;height:100%;overflow:visible;width:100%}.tp-cbzprvv_t{opacity:.5;stroke:var(--mo-fg)}.tp-cbzprvv_m{background-color:var(--mo-fg);border-radius:50%;height:4px;margin-left:-2px;margin-top:-2px;opacity:0;position:absolute;top:50%;transition:opacity .2s ease-out;width:4px}.tp-cbzprvv_m.tp-cbzprvv_m-a{opacity:1}.tp-fpsv{position:relative}.tp-fpsv_l{bottom:4px;color:var(--mo-fg);line-height:1;right:4px;pointer-events:none;position:absolute}.tp-fpsv_u{margin-left:.2em;opacity:.7}.tp-rslv{cursor:pointer;padding-left:8px;padding-right:8px}.tp-rslv.tp-v-disabled{opacity:.5}.tp-rslv_t{height:calc(var(--bld-us));position:relative}.tp-rslv_t::before{background-color:var(--in-bg);border-radius:1px;content:"";height:2px;margin-top:-1px;position:absolute;top:50%;left:-4px;right:-4px}.tp-rslv_b{bottom:0;top:0;position:absolute}.tp-rslv_b::before{background-color:var(--in-fg);content:"";height:2px;margin-top:-1px;position:absolute;top:50%;left:0;right:0}.tp-rslv_k{height:calc(var(--bld-us) - 8px);margin-top:calc((var(--bld-us) - 8px)/-2);position:absolute;top:50%;width:8px}.tp-rslv_k.tp-rslv_k-min{margin-left:-8px}.tp-rslv_k.tp-rslv_k-max{margin-left:0}.tp-rslv.tp-rslv-zero .tp-rslv_k.tp-rslv_k-min{border-bottom-right-radius:0;border-top-right-radius:0}.tp-rslv.tp-rslv-zero .tp-rslv_k.tp-rslv_k-max{border-bottom-left-radius:0;border-top-left-radius:0}.tp-rsltxtv{display:flex}.tp-rsltxtv_s{flex:1}.tp-rsltxtv_t{flex:1;margin-left:4px}.tp-radv_l{display:block;position:relative}.tp-radv_i{left:0;opacity:0;position:absolute;top:0}.tp-radv_b{opacity:.5}.tp-radv_i:hover+.tp-radv_b{background-color:var(--btn-bg-h)}.tp-radv_i:focus+.tp-radv_b{background-color:var(--btn-bg-f)}.tp-radv_i:active+.tp-radv_b{background-color:var(--btn-bg-a)}.tp-radv_i:checked+.tp-radv_b{opacity:1}.tp-radv_t{bottom:0;color:inherit;left:0;overflow:hidden;position:absolute;right:0;text-align:center;text-overflow:ellipsis;top:0}.tp-radv_i:disabled+.tp-radv_b>.tp-radv_t{opacity:.5}.tp-radgridv{border-radius:var(--elm-br);display:grid;overflow:hidden;gap:2px}.tp-radgridv.tp-v-disabled{opacity:.5}.tp-radgridv .tp-radv_b{border-radius:0}',accept(d){const o=he,p=te(d,{cells:o.required.function,size:o.required.array(o.required.number),view:o.required.constant("buttongrid"),label:o.optional.string});return p?{params:p}:null},controller(d){return new Ye(d.document,{blade:d.blade,props:Y.fromObject({label:d.params.label}),valueController:new ni(d.document,{cellConfig:d.params.cells,size:d.params.size})})},api(d){return!(d.controller instanceof Ye)||!(d.controller.valueController instanceof ni)?null:new Fi(d.controller)}};class ji extends s{get label(){return this.controller_.props.get("label")}set label(o){this.controller_.props.set("label",o)}get value(){return this.controller_.valueController.value.rawValue}set value(o){this.controller_.valueController.value.rawValue=o}on(o,p){const v=p.bind(this);return this.controller_.valueController.value.emitter.on(o,C=>{v(new c(this,C.rawValue,void 0,C.options.last))}),this}}function Re(d,o,p){return d*(1-p)+o*p}const Us=20,zi=.001,ii=100;function Gs(d,o){let p=.25,v=.5,C=-1;for(let S=0;S<Us;S++){const[T,R]=d.curve(v);if(v+=p*(T<o?1:-1),C=R,p*=.5,Math.abs(o-T)<zi)break}return C}class ct{constructor(o=0,p=0,v=1,C=1){this.cache_=[],this.comps_=[o,p,v,C]}get x1(){return this.comps_[0]}get y1(){return this.comps_[1]}get x2(){return this.comps_[2]}get y2(){return this.comps_[3]}static isObject(o){return h(o)||!Array.isArray(o)?!1:typeof o[0]=="number"&&typeof o[1]=="number"&&typeof o[2]=="number"&&typeof o[3]=="number"}static equals(o,p){return o.x1===p.x1&&o.y1===p.y1&&o.x2===p.x2&&o.y2===p.y2}curve(o){const p=Re(0,this.x1,o),v=Re(0,this.y1,o),C=Re(this.x1,this.x2,o),S=Re(this.y1,this.y2,o),T=Re(this.x2,1,o),R=Re(this.y2,1,o),oe=Re(p,C,o),J=Re(v,S,o),De=Re(C,T,o),ui=Re(S,R,o);return[Re(oe,De,o),Re(J,ui,o)]}y(o){if(this.cache_.length===0){const p=[];for(let v=0;v<ii;v++)p.push(Gs(this,_e(v,0,ii-1,0,1)));this.cache_=p}return this.cache_[Math.round(_e(Qe(o,0,1),0,1,0,ii-1))]}toObject(){return[this.comps_[0],this.comps_[1],this.comps_[2],this.comps_[3]]}}const Cn={toComponents:d=>d.toObject(),fromComponents:d=>new ct(...d)};function Rs(d){const o=Le(2);return`cubic-bezier(${d.toObject().map(v=>o(v)).join(", ")})`}const Ze=[0,.5,.5,1];function Ui(d){const o=d.match(/^cubic-bezier\s*\(\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)\s*\)$/);if(!o)return new ct(...Ze);const p=[o[1],o[2],o[3],o[4]].reduce((v,C)=>{if(!v)return null;const S=Number(C);return isNaN(S)?null:[...v,S]},[]);return new ct(...p??Ze)}const gt=x("cbz");class Ae{constructor(o,p){this.element=o.createElement("div"),this.element.classList.add(gt()),p.viewProps.bindClassModifiers(this.element),p.foldable.bindExpandedClass(this.element,gt(void 0,"expanded")),O(p.foldable,"completed",z(this.element,gt(void 0,"cpl")));const v=o.createElement("div");v.classList.add(gt("h")),this.element.appendChild(v);const C=o.createElement("button");C.classList.add(gt("b")),p.viewProps.bindDisabled(C);const S=o.createElementNS(we,"svg");S.innerHTML='<path d="M2 13C8 13 8 3 14 3"/>',C.appendChild(S),v.appendChild(C),this.buttonElement=C;const T=o.createElement("div");if(T.classList.add(gt("t")),v.appendChild(T),this.textElement=T,p.pickerLayout==="inline"){const R=o.createElement("div");R.classList.add(gt("p")),this.element.appendChild(R),this.pickerElement=R}else this.pickerElement=null}}const si=x("cbzp");class Jt{constructor(o,p){this.element=o.createElement("div"),this.element.classList.add(si()),p.viewProps.bindClassModifiers(this.element);const v=o.createElement("div");v.classList.add(si("g")),this.element.appendChild(v),this.graphElement=v;const C=o.createElement("div");C.classList.add(si("t")),this.element.appendChild(C),this.textElement=C}}function ri(d,o){const p=new MutationObserver(C=>{for(const S of C)S.type==="childList"&&S.addedNodes.forEach(T=>{T.contains(T)&&(o(),p.disconnect())})}),v=d.ownerDocument;p.observe(v.body,{attributes:!0,childList:!0,subtree:!0})}const We=x("cbzg");function Gi(d,o){return p=>o(d(p))}class Ri{constructor(o,p){this.element=o.createElement("div"),this.element.classList.add(We()),p.viewProps.bindClassModifiers(this.element),p.viewProps.bindTabIndex(this.element);const v=o.createElement("div");v.classList.add(We("p")),this.element.appendChild(v),this.previewElement=v;const C=o.createElementNS(we,"svg");C.classList.add(We("g")),this.element.appendChild(C),this.svgElem_=C;const S=o.createElementNS(we,"path");S.classList.add(We("u")),this.svgElem_.appendChild(S),this.guideElem_=S;const T=o.createElementNS(we,"polyline");T.classList.add(We("l")),this.svgElem_.appendChild(T),this.lineElem_=T,this.handleElems_=[o.createElement("div"),o.createElement("div")],this.handleElems_.forEach(R=>{R.classList.add(We("h")),this.element.appendChild(R)}),this.vectorElems_=[o.createElementNS(we,"line"),o.createElementNS(we,"line")],this.vectorElems_.forEach(R=>{R.classList.add(We("v")),this.svgElem_.appendChild(R)}),this.value_=p.value,this.value_.emitter.on("change",this.onValueChange_.bind(this)),this.sel_=p.selection,this.handleElems_.forEach((R,oe)=>{D(this.sel_,Gi(J=>J===oe,z(R,We("h","sel"))))}),ri(this.element,()=>{this.refresh()})}getVertMargin_(o){return o*.25}valueToPosition(o,p){const v=this.element.getBoundingClientRect(),C=v.width,S=v.height,T=this.getVertMargin_(S);return{x:_e(o,0,1,0,C),y:_e(p,0,1,S-T,T)}}positionToValue(o,p){const v=this.element.getBoundingClientRect(),C=v.width,S=v.height,T=this.getVertMargin_(S);return{x:Qe(_e(o,0,C,0,1),0,1),y:_e(p,S-T,T,0,1)}}refresh(){this.guideElem_.setAttributeNS(null,"d",[0,1].map(S=>{const T=this.valueToPosition(0,S),R=this.valueToPosition(1,S);return[`M ${T.x},${T.y}`,`L ${R.x},${R.y}`].join(" ")}).join(" "));const o=this.value_.rawValue,p=[];let v=0;for(;;){const S=this.valueToPosition(...o.curve(v));if(p.push([S.x,S.y].join(",")),v>=1)break;v=Math.min(v+.05,1)}this.lineElem_.setAttributeNS(null,"points",p.join(" "));const C=o.toObject();[0,1].forEach(S=>{const T=this.valueToPosition(S,S),R=this.valueToPosition(C[S*2],C[S*2+1]),oe=this.vectorElems_[S];oe.setAttributeNS(null,"x1",String(T.x)),oe.setAttributeNS(null,"y1",String(T.y)),oe.setAttributeNS(null,"x2",String(R.x)),oe.setAttributeNS(null,"y2",String(R.y));const J=this.handleElems_[S];J.style.left=`${R.x}px`,J.style.top=`${R.y}px`})}onValueChange_(){this.refresh()}}const Ki=24,$i=400,At=1e3,Se=x("cbzprv");class Vt{constructor(o,p){this.stopped_=!0,this.startTime_=-1,this.onDispose_=this.onDispose_.bind(this),this.onTimer_=this.onTimer_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.element=o.createElement("div"),this.element.classList.add(Se()),p.viewProps.bindClassModifiers(this.element);const v=o.createElementNS(we,"svg");v.classList.add(Se("g")),this.element.appendChild(v),this.svgElem_=v;const C=o.createElementNS(we,"path");C.classList.add(Se("t")),this.svgElem_.appendChild(C),this.ticksElem_=C;const S=o.createElement("div");S.classList.add(Se("m")),this.element.appendChild(S),this.markerElem_=S,this.value_=p.value,this.value_.emitter.on("change",this.onValueChange_),p.viewProps.handleDispose(this.onDispose_),ri(this.element,()=>{this.refresh()})}play(){this.stop(),this.updateMarker_(0),this.markerElem_.classList.add(Se("m","a")),this.startTime_=new Date().getTime()+$i,this.stopped_=!1,requestAnimationFrame(this.onTimer_)}stop(){this.stopped_=!0,this.markerElem_.classList.remove(Se("m","a"))}onDispose_(){this.stop()}updateMarker_(o){const p=this.value_.rawValue.y(Qe(o,0,1));this.markerElem_.style.left=`${p*100}%`}refresh(){const o=this.svgElem_.getBoundingClientRect(),p=o.width,v=o.height,C=[],S=this.value_.rawValue;for(let T=0;T<Ki;T++){const R=_e(T,0,Ki-1,0,1),oe=_e(S.y(R),0,1,0,p);C.push(`M ${oe},0 v${v}`)}this.ticksElem_.setAttributeNS(null,"d",C.join(" "))}onTimer_(){if(this.startTime_===null)return;const o=new Date().getTime()-this.startTime_,p=o/At;this.updateMarker_(p),o>At+$i&&this.stop(),this.stopped_||requestAnimationFrame(this.onTimer_)}onValueChange_(){this.refresh(),this.play()}}function Ke(d,o,p,v){const C=p-d,S=v-o;return Math.sqrt(C*C+S*S)}function Ks(d,o,p,v){const C=Ke(d,o,p,v),S=Math.atan2(v-o,p-d),T=Math.round(S/(Math.PI/4))*Math.PI/4;return{x:d+Math.cos(T)*C,y:o+Math.sin(T)*C}}class oi{constructor(o,p){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=p.baseStep,this.value=p.value,this.sel_=X(0),this.viewProps=p.viewProps,this.view=new Ri(o,{selection:this.sel_,value:this.value,viewProps:this.viewProps}),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_),this.prevView_=new Vt(o,{value:this.value,viewProps:this.viewProps}),this.prevView_.element.addEventListener("mousedown",C=>{C.stopImmediatePropagation(),C.preventDefault(),this.prevView_.play()}),this.view.previewElement.appendChild(this.prevView_.element);const v=new at(this.view.element);v.emitter.on("down",this.onPointerDown_),v.emitter.on("move",this.onPointerMove_),v.emitter.on("up",this.onPointerUp_)}refresh(){this.view.refresh(),this.prevView_.refresh(),this.prevView_.play()}updateValue_(o,p,v){const C=this.sel_.rawValue,S=this.value.rawValue.toObject(),T=this.view.positionToValue(o.x,o.y),R=p?Ks(C,C,T.x,T.y):T;S[C*2]=R.x,S[C*2+1]=R.y,this.value.setRawValue(new ct(...S),v)}onPointerDown_(o){const p=o.data;if(!p.point)return;const v=this.value.rawValue,C=this.view.valueToPosition(v.x1,v.y1),S=Ke(p.point.x,p.point.y,C.x,C.y),T=this.view.valueToPosition(v.x2,v.y2),R=Ke(p.point.x,p.point.y,T.x,T.y);this.sel_.rawValue=S<=R?0:1,this.updateValue_(p.point,o.shiftKey,{forceEmit:!1,last:!1})}onPointerMove_(o){const p=o.data;p.point&&this.updateValue_(p.point,o.shiftKey,{forceEmit:!1,last:!1})}onPointerUp_(o){const p=o.data;p.point&&this.updateValue_(p.point,o.shiftKey,{forceEmit:!0,last:!0})}onKeyDown_(o){Li(o.key)&&o.preventDefault();const p=this.sel_.rawValue,v=this.value.rawValue.toObject();v[p*2]+=Lt(this.baseStep_,Qn(o)),v[p*2+1]+=Lt(this.baseStep_,Yt(o)),this.value.setRawValue(new ct(...v),{forceEmit:!1,last:!1})}onKeyUp_(o){Li(o.key)&&o.preventDefault();const p=Lt(this.baseStep_,Qn(o)),v=Lt(this.baseStep_,Yt(o));p===0&&v===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class Pn{constructor(o,p){this.value=p.value,this.viewProps=p.viewProps,this.view=new Jt(o,{viewProps:this.viewProps}),this.gc_=new oi(o,{baseStep:p.axis.baseStep,value:this.value,viewProps:this.viewProps}),this.view.graphElement.appendChild(this.gc_.view.element);const v=Object.assign(Object.assign({},p.axis),{constraint:new ft({max:1,min:0})}),C=Object.assign(Object.assign({},p.axis),{constraint:void 0});this.tc_=new ti(o,{assembly:Cn,axes:[v,C,v,C],parser:Xt,value:this.value,viewProps:this.viewProps}),this.view.textElement.appendChild(this.tc_.view.element)}get allFocusableElements(){return[this.gc_.view.element,...this.tc_.view.textViews.map(o=>o.inputElement)]}refresh(){this.gc_.refresh()}}class it{constructor(o,p){this.onButtonBlur_=this.onButtonBlur_.bind(this),this.onButtonClick_=this.onButtonClick_.bind(this),this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.value=p.value,this.viewProps=p.viewProps,this.foldable_=dn(p.expanded),this.view=new Ae(o,{foldable:this.foldable_,pickerLayout:p.pickerLayout,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("blur",this.onButtonBlur_),this.view.buttonElement.addEventListener("click",this.onButtonClick_),this.tc_=new Mt(o,{parser:Ui,props:Y.fromObject({formatter:Rs}),value:this.value,viewProps:this.viewProps}),this.view.textElement.appendChild(this.tc_.view.element),this.popC_=p.pickerLayout==="popup"?new ie(o,{viewProps:this.viewProps}):null;const v=new Pn(o,{axis:p.axis,value:this.value,viewProps:this.viewProps});v.allFocusableElements.forEach(C=>{C.addEventListener("blur",this.onPopupChildBlur_),C.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=v,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),D(this.popC_.shows,C=>{C&&v.refresh()}),St({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:C=>C.rawValue,backward:(C,S)=>S.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),fn(this.foldable_,this.view.pickerElement))}onButtonBlur_(o){if(!this.popC_)return;const p=o.relatedTarget;(!p||!this.popC_.view.element.contains(p))&&(this.popC_.shows.rawValue=!1)}onButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.allFocusableElements[0].focus()}onPopupChildBlur_(o){if(!this.popC_)return;const p=this.popC_.view.element,v=zt(o);v&&p.contains(v)||v&&v===this.view.buttonElement&&!Ge(p.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(o){this.popC_&&o.key==="Escape"&&(this.popC_.shows.rawValue=!1)}}function xe(){return new Wt({assembly:Cn,components:[0,1,2,3].map(d=>d%2===0?new ft({min:0,max:1}):void 0)})}const Xi={id:"cubic-bezier",type:"blade",css:'.tp-cbzgv,.tp-radv_b,.tp-rslv_k,.tp-cbzv_b{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-radv_b,.tp-rslv_k,.tp-cbzv_b{background-color:var(--btn-bg);border-radius:var(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-radv_b:hover,.tp-rslv_k:hover,.tp-cbzv_b:hover{background-color:var(--btn-bg-h)}.tp-radv_b:focus,.tp-rslv_k:focus,.tp-cbzv_b:focus{background-color:var(--btn-bg-f)}.tp-radv_b:active,.tp-rslv_k:active,.tp-cbzv_b:active{background-color:var(--btn-bg-a)}.tp-radv_b:disabled,.tp-rslv_k:disabled,.tp-cbzv_b:disabled{opacity:.5}.tp-cbzgv{background-color:var(--in-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);min-width:0;width:100%}.tp-cbzgv:hover{background-color:var(--in-bg-h)}.tp-cbzgv:focus{background-color:var(--in-bg-f)}.tp-cbzgv:active{background-color:var(--in-bg-a)}.tp-cbzgv:disabled{opacity:.5}.tp-btngridv{border-radius:var(--elm-br);display:grid;overflow:hidden;gap:2px}.tp-btngridv.tp-v-disabled{opacity:.5}.tp-btngridv .tp-btnv_b:disabled{opacity:1}.tp-btngridv .tp-btnv_b:disabled .tp-btnv_t{opacity:.5}.tp-btngridv .tp-btnv_b{border-radius:0}.tp-cbzv{position:relative}.tp-cbzv_h{display:flex}.tp-cbzv_b{margin-right:4px;position:relative;width:var(--bld-us)}.tp-cbzv_b svg{display:block;height:16px;left:50%;margin-left:-8px;margin-top:-8px;position:absolute;top:50%;width:16px}.tp-cbzv_b svg path{stroke:var(--bs-bg);stroke-width:2}.tp-cbzv_t{flex:1}.tp-cbzv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-cbzv.tp-cbzv-expanded .tp-cbzv_p{margin-top:var(--bld-s);opacity:1}.tp-cbzv.tp-cbzv-cpl .tp-cbzv_p{overflow:visible}.tp-cbzv .tp-popv{left:calc(-1*var(--cnt-h-p));position:absolute;right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-cbzpv_t{margin-top:var(--bld-s)}.tp-cbzgv{height:auto;overflow:hidden;position:relative}.tp-cbzgv.tp-v-disabled{opacity:.5}.tp-cbzgv_p{left:16px;position:absolute;right:16px;top:0}.tp-cbzgv_g{cursor:pointer;display:block;height:calc(var(--bld-us)*5);width:100%}.tp-cbzgv_u{opacity:.1;stroke:var(--in-fg);stroke-dasharray:1}.tp-cbzgv_l{fill:rgba(0,0,0,0);stroke:var(--in-fg)}.tp-cbzgv_v{opacity:.5;stroke:var(--in-fg);stroke-dasharray:1}.tp-cbzgv_h{border:var(--in-fg) solid 1px;border-radius:50%;box-sizing:border-box;height:4px;margin-left:-2px;margin-top:-2px;pointer-events:none;position:absolute;width:4px}.tp-cbzgv:focus .tp-cbzgv_h-sel{background-color:var(--in-fg);border-width:0}.tp-cbzprvv{cursor:pointer;height:4px;padding:4px 0;position:relative}.tp-cbzprvv_g{display:block;height:100%;overflow:visible;width:100%}.tp-cbzprvv_t{opacity:.5;stroke:var(--mo-fg)}.tp-cbzprvv_m{background-color:var(--mo-fg);border-radius:50%;height:4px;margin-left:-2px;margin-top:-2px;opacity:0;position:absolute;top:50%;transition:opacity .2s ease-out;width:4px}.tp-cbzprvv_m.tp-cbzprvv_m-a{opacity:1}.tp-fpsv{position:relative}.tp-fpsv_l{bottom:4px;color:var(--mo-fg);line-height:1;right:4px;pointer-events:none;position:absolute}.tp-fpsv_u{margin-left:.2em;opacity:.7}.tp-rslv{cursor:pointer;padding-left:8px;padding-right:8px}.tp-rslv.tp-v-disabled{opacity:.5}.tp-rslv_t{height:calc(var(--bld-us));position:relative}.tp-rslv_t::before{background-color:var(--in-bg);border-radius:1px;content:"";height:2px;margin-top:-1px;position:absolute;top:50%;left:-4px;right:-4px}.tp-rslv_b{bottom:0;top:0;position:absolute}.tp-rslv_b::before{background-color:var(--in-fg);content:"";height:2px;margin-top:-1px;position:absolute;top:50%;left:0;right:0}.tp-rslv_k{height:calc(var(--bld-us) - 8px);margin-top:calc((var(--bld-us) - 8px)/-2);position:absolute;top:50%;width:8px}.tp-rslv_k.tp-rslv_k-min{margin-left:-8px}.tp-rslv_k.tp-rslv_k-max{margin-left:0}.tp-rslv.tp-rslv-zero .tp-rslv_k.tp-rslv_k-min{border-bottom-right-radius:0;border-top-right-radius:0}.tp-rslv.tp-rslv-zero .tp-rslv_k.tp-rslv_k-max{border-bottom-left-radius:0;border-top-left-radius:0}.tp-rsltxtv{display:flex}.tp-rsltxtv_s{flex:1}.tp-rsltxtv_t{flex:1;margin-left:4px}.tp-radv_l{display:block;position:relative}.tp-radv_i{left:0;opacity:0;position:absolute;top:0}.tp-radv_b{opacity:.5}.tp-radv_i:hover+.tp-radv_b{background-color:var(--btn-bg-h)}.tp-radv_i:focus+.tp-radv_b{background-color:var(--btn-bg-f)}.tp-radv_i:active+.tp-radv_b{background-color:var(--btn-bg-a)}.tp-radv_i:checked+.tp-radv_b{opacity:1}.tp-radv_t{bottom:0;color:inherit;left:0;overflow:hidden;position:absolute;right:0;text-align:center;text-overflow:ellipsis;top:0}.tp-radv_i:disabled+.tp-radv_b>.tp-radv_t{opacity:.5}.tp-radgridv{border-radius:var(--elm-br);display:grid;overflow:hidden;gap:2px}.tp-radgridv.tp-v-disabled{opacity:.5}.tp-radgridv .tp-radv_b{border-radius:0}',accept(d){const o=he,p=te(d,{value:o.required.array(o.required.number),view:o.required.constant("cubicbezier"),expanded:o.optional.boolean,label:o.optional.string,picker:o.optional.custom(v=>v==="inline"||v==="popup"?v:void 0)});return p?{params:p}:null},controller(d){var o,p;const v=new ct(...d.params.value),C=X(v,{constraint:xe(),equals:ct.equals}),S=new it(d.document,{axis:{baseStep:.1,textProps:Y.fromObject({draggingScale:.01,formatter:Le(2)})},expanded:(o=d.params.expanded)!==null&&o!==void 0?o:!1,pickerLayout:(p=d.params.picker)!==null&&p!==void 0?p:"popup",value:C,viewProps:d.viewProps});return new mt(d.document,{blade:d.blade,props:Y.fromObject({label:d.params.label}),valueController:S})},api(d){return!(d.controller instanceof mt)||!(d.controller.valueController instanceof it)?null:new ji(d.controller)}};class Me extends s{begin(){this.controller_.valueController.begin()}end(){this.controller_.valueController.end()}}const ai=20;class ze{constructor(){this.start_=null,this.duration_=0,this.fps_=null,this.frameCount_=0,this.timestamps_=[]}get duration(){return this.duration_}get fps(){return this.fps_}begin(o){this.start_=o.getTime()}calculateFps_(o){if(this.timestamps_.length===0)return null;const p=this.timestamps_[0];return 1e3*(this.frameCount_-p.frameCount)/(o-p.time)}compactTimestamps_(){if(this.timestamps_.length<=ai)return;const o=this.timestamps_.length-ai;this.timestamps_.splice(0,o);const p=this.timestamps_[0].frameCount;this.timestamps_.forEach(v=>{v.frameCount-=p}),this.frameCount_-=p}end(o){if(this.start_===null)return;const p=o.getTime();this.duration_=p-this.start_,this.start_=null,this.fps_=this.calculateFps_(p),this.timestamps_.push({frameCount:this.frameCount_,time:p}),++this.frameCount_,this.compactTimestamps_()}}const Ht=x("fps");class It{constructor(o,p){this.element=o.createElement("div"),this.element.classList.add(Ht()),p.viewProps.bindClassModifiers(this.element),this.graphElement=o.createElement("div"),this.graphElement.classList.add(Ht("g")),this.element.appendChild(this.graphElement);const v=o.createElement("div");v.classList.add(Ht("l")),this.element.appendChild(v);const C=o.createElement("span");C.classList.add(Ht("v")),C.textContent="--",v.appendChild(C),this.valueElement=C;const S=o.createElement("span");S.classList.add(Ht("u")),S.textContent="FPS",v.appendChild(S)}}class en{constructor(o,p){this.stopwatch_=new ze,this.onTick_=this.onTick_.bind(this),this.ticker_=p.ticker,this.ticker_.emitter.on("tick",this.onTick_),this.value_=p.value,this.viewProps=p.viewProps,this.view=new It(o,{viewProps:this.viewProps}),this.graphC_=new Fs(o,{formatter:Le(0),lineCount:p.lineCount,props:Y.fromObject({maxValue:p.maxValue,minValue:p.minValue}),value:this.value_,viewProps:this.viewProps}),this.view.graphElement.appendChild(this.graphC_.view.element),this.viewProps.handleDispose(()=>{this.graphC_.viewProps.set("disposed",!0),this.ticker_.dispose()})}begin(){this.stopwatch_.begin(new Date)}end(){this.stopwatch_.end(new Date)}onTick_(){const o=this.stopwatch_.fps;if(o!==null){const p=this.value_.rawValue;this.value_.rawValue=Ms(p,o),this.view.valueElement.textContent=o.toFixed(0)}}}function $s(d,o){return o===0?new vn:new Gt(d,o??Bs.monitor.defaultInterval)}const Xs={id:"fpsgraph",type:"blade",accept(d){const o=he,p=te(d,{view:o.required.constant("fpsgraph"),interval:o.optional.number,label:o.optional.string,lineCount:o.optional.number,max:o.optional.number,min:o.optional.number});return p?{params:p}:null},controller(d){var o,p,v,C;const S=(o=d.params.interval)!==null&&o!==void 0?o:500;return new Ye(d.document,{blade:d.blade,props:Y.fromObject({label:d.params.label}),valueController:new en(d.document,{lineCount:(p=d.params.lineCount)!==null&&p!==void 0?p:2,maxValue:(v=d.params.max)!==null&&v!==void 0?v:90,minValue:(C=d.params.min)!==null&&C!==void 0?C:0,ticker:$s(d.document,S),value:ki(80),viewProps:d.viewProps})})},api(d){return!(d.controller instanceof Ye)||!(d.controller.valueController instanceof en)?null:new Me(d.controller)}};class Te{constructor(o,p){this.min=o,this.max=p}static isObject(o){if(typeof o!="object"||o===null)return!1;const p=o.min,v=o.max;return!(typeof p!="number"||typeof v!="number")}static equals(o,p){return o.min===p.min&&o.max===p.max}get length(){return this.max-this.min}toObject(){return{min:this.min,max:this.max}}}const li={fromComponents:d=>new Te(d[0],d[1]),toComponents:d=>[d.min,d.max]};class tn{constructor(o){this.edge=o}constrain(o){var p,v,C,S,T,R,oe,J;if(o.min<=o.max)return new Te((v=(p=this.edge)===null||p===void 0?void 0:p.constrain(o.min))!==null&&v!==void 0?v:o.min,(S=(C=this.edge)===null||C===void 0?void 0:C.constrain(o.max))!==null&&S!==void 0?S:o.max);const De=(o.min+o.max)/2;return new Te((R=(T=this.edge)===null||T===void 0?void 0:T.constrain(De))!==null&&R!==void 0?R:De,(J=(oe=this.edge)===null||oe===void 0?void 0:oe.constrain(De))!==null&&J!==void 0?J:De)}}const _t=x("rsltxt");class nn{constructor(o,p){this.sliderView_=p.sliderView,this.textView_=p.textView,this.element=o.createElement("div"),this.element.classList.add(_t());const v=o.createElement("div");v.classList.add(_t("s")),v.appendChild(this.sliderView_.element),this.element.appendChild(v);const C=o.createElement("div");C.classList.add(_t("t")),C.appendChild(this.textView_.element),this.element.appendChild(C)}}const pt=x("rsl");class st{constructor(o,p){this.onSliderPropsChange_=this.onSliderPropsChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.sliderProps_=p.sliderProps,this.sliderProps_.emitter.on("change",this.onSliderPropsChange_),this.element=o.createElement("div"),this.element.classList.add(pt()),p.viewProps.bindClassModifiers(this.element),this.value_=p.value,this.value_.emitter.on("change",this.onValueChange_);const v=o.createElement("div");v.classList.add(pt("t")),this.element.appendChild(v),this.trackElement=v;const C=o.createElement("div");C.classList.add(pt("b")),v.appendChild(C),this.barElement=C;const S=["min","max"].map(T=>{const R=o.createElement("div");return R.classList.add(pt("k"),pt("k",T)),v.appendChild(R),R});this.knobElements=[S[0],S[1]],this.update_()}valueToX_(o){const p=this.sliderProps_.get("minValue"),v=this.sliderProps_.get("maxValue");return Qe(_e(o,p,v,0,1),0,1)*100}update_(){const o=this.value_.rawValue;o.length===0?this.element.classList.add(pt(void 0,"zero")):this.element.classList.remove(pt(void 0,"zero"));const p=[this.valueToX_(o.min),this.valueToX_(o.max)];this.barElement.style.left=`${p[0]}%`,this.barElement.style.right=`${100-p[1]}%`,this.knobElements.forEach((v,C)=>{v.style.left=`${p[C]}%`})}onSliderPropsChange_(){this.update_()}onValueChange_(){this.update_()}}class ci{constructor(o,p){this.grabbing_=null,this.grabOffset_=0,this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.sliderProps=p.sliderProps,this.viewProps=p.viewProps,this.value=p.value,this.view=new st(o,{sliderProps:this.sliderProps,value:this.value,viewProps:p.viewProps});const v=new at(this.view.trackElement);v.emitter.on("down",this.onPointerDown_),v.emitter.on("move",this.onPointerMove_),v.emitter.on("up",this.onPointerUp_)}ofs_(){return this.grabbing_==="min"?this.view.knobElements[0].getBoundingClientRect().width/2:this.grabbing_==="max"?-this.view.knobElements[1].getBoundingClientRect().width/2:0}valueFromData_(o){if(!o.point)return null;const p=(o.point.x+this.ofs_())/o.bounds.width,v=this.sliderProps.get("minValue"),C=this.sliderProps.get("maxValue");return _e(p,0,1,v,C)}onPointerDown_(o){if(!o.data.point)return;const p=o.data.point.x/o.data.bounds.width,v=this.value.rawValue,C=this.sliderProps.get("minValue"),S=this.sliderProps.get("maxValue"),T=_e(v.min,C,S,0,1),R=_e(v.max,C,S,0,1);Math.abs(R-p)<=.025?this.grabbing_="max":Math.abs(T-p)<=.025?this.grabbing_="min":p>=T&&p<=R?(this.grabbing_="length",this.grabOffset_=_e(p-T,0,1,0,S-C)):p<T?(this.grabbing_="min",this.onPointerMove_(o)):p>R&&(this.grabbing_="max",this.onPointerMove_(o))}applyPointToValue_(o,p){const v=this.valueFromData_(o);if(v===null)return;const C=this.sliderProps.get("minValue"),S=this.sliderProps.get("maxValue");if(this.grabbing_==="min")this.value.setRawValue(new Te(v,this.value.rawValue.max),p);else if(this.grabbing_==="max")this.value.setRawValue(new Te(this.value.rawValue.min,v),p);else if(this.grabbing_==="length"){const T=this.value.rawValue.length;let R=v-this.grabOffset_,oe=R+T;R<C?(R=C,oe=C+T):oe>S&&(R=S-T,oe=S),this.value.setRawValue(new Te(R,oe),p)}}onPointerMove_(o){this.applyPointToValue_(o.data,{forceEmit:!1,last:!1})}onPointerUp_(o){this.applyPointToValue_(o.data,{forceEmit:!0,last:!0}),this.grabbing_=null}}class Mn{constructor(o,p){this.value=p.value,this.viewProps=p.viewProps,this.sc_=new ci(o,p);const v={baseStep:p.baseStep,constraint:p.constraint,textProps:Y.fromObject({draggingScale:p.draggingScale,formatter:p.formatter})};this.tc_=new ti(o,{assembly:li,axes:[v,v],parser:p.parser,value:this.value,viewProps:p.viewProps}),this.view=new nn(o,{sliderView:this.sc_.view,textView:this.tc_.view})}get textController(){return this.tc_}}function Ys(d){return Te.isObject(d)?new Te(d.min,d.max):new Te(0,0)}function kn(d,o){d.writeProperty("max",o.max),d.writeProperty("min",o.min)}function Dt(d){const o=[],p=Es(d);p&&o.push(p);const v=Os(d);return v&&o.push(v),new tn(new bn(o))}const Tt={id:"input-interval",type:"input",css:'.tp-cbzgv,.tp-radv_b,.tp-rslv_k,.tp-cbzv_b{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-radv_b,.tp-rslv_k,.tp-cbzv_b{background-color:var(--btn-bg);border-radius:var(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-radv_b:hover,.tp-rslv_k:hover,.tp-cbzv_b:hover{background-color:var(--btn-bg-h)}.tp-radv_b:focus,.tp-rslv_k:focus,.tp-cbzv_b:focus{background-color:var(--btn-bg-f)}.tp-radv_b:active,.tp-rslv_k:active,.tp-cbzv_b:active{background-color:var(--btn-bg-a)}.tp-radv_b:disabled,.tp-rslv_k:disabled,.tp-cbzv_b:disabled{opacity:.5}.tp-cbzgv{background-color:var(--in-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);min-width:0;width:100%}.tp-cbzgv:hover{background-color:var(--in-bg-h)}.tp-cbzgv:focus{background-color:var(--in-bg-f)}.tp-cbzgv:active{background-color:var(--in-bg-a)}.tp-cbzgv:disabled{opacity:.5}.tp-btngridv{border-radius:var(--elm-br);display:grid;overflow:hidden;gap:2px}.tp-btngridv.tp-v-disabled{opacity:.5}.tp-btngridv .tp-btnv_b:disabled{opacity:1}.tp-btngridv .tp-btnv_b:disabled .tp-btnv_t{opacity:.5}.tp-btngridv .tp-btnv_b{border-radius:0}.tp-cbzv{position:relative}.tp-cbzv_h{display:flex}.tp-cbzv_b{margin-right:4px;position:relative;width:var(--bld-us)}.tp-cbzv_b svg{display:block;height:16px;left:50%;margin-left:-8px;margin-top:-8px;position:absolute;top:50%;width:16px}.tp-cbzv_b svg path{stroke:var(--bs-bg);stroke-width:2}.tp-cbzv_t{flex:1}.tp-cbzv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-cbzv.tp-cbzv-expanded .tp-cbzv_p{margin-top:var(--bld-s);opacity:1}.tp-cbzv.tp-cbzv-cpl .tp-cbzv_p{overflow:visible}.tp-cbzv .tp-popv{left:calc(-1*var(--cnt-h-p));position:absolute;right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-cbzpv_t{margin-top:var(--bld-s)}.tp-cbzgv{height:auto;overflow:hidden;position:relative}.tp-cbzgv.tp-v-disabled{opacity:.5}.tp-cbzgv_p{left:16px;position:absolute;right:16px;top:0}.tp-cbzgv_g{cursor:pointer;display:block;height:calc(var(--bld-us)*5);width:100%}.tp-cbzgv_u{opacity:.1;stroke:var(--in-fg);stroke-dasharray:1}.tp-cbzgv_l{fill:rgba(0,0,0,0);stroke:var(--in-fg)}.tp-cbzgv_v{opacity:.5;stroke:var(--in-fg);stroke-dasharray:1}.tp-cbzgv_h{border:var(--in-fg) solid 1px;border-radius:50%;box-sizing:border-box;height:4px;margin-left:-2px;margin-top:-2px;pointer-events:none;position:absolute;width:4px}.tp-cbzgv:focus .tp-cbzgv_h-sel{background-color:var(--in-fg);border-width:0}.tp-cbzprvv{cursor:pointer;height:4px;padding:4px 0;position:relative}.tp-cbzprvv_g{display:block;height:100%;overflow:visible;width:100%}.tp-cbzprvv_t{opacity:.5;stroke:var(--mo-fg)}.tp-cbzprvv_m{background-color:var(--mo-fg);border-radius:50%;height:4px;margin-left:-2px;margin-top:-2px;opacity:0;position:absolute;top:50%;transition:opacity .2s ease-out;width:4px}.tp-cbzprvv_m.tp-cbzprvv_m-a{opacity:1}.tp-fpsv{position:relative}.tp-fpsv_l{bottom:4px;color:var(--mo-fg);line-height:1;right:4px;pointer-events:none;position:absolute}.tp-fpsv_u{margin-left:.2em;opacity:.7}.tp-rslv{cursor:pointer;padding-left:8px;padding-right:8px}.tp-rslv.tp-v-disabled{opacity:.5}.tp-rslv_t{height:calc(var(--bld-us));position:relative}.tp-rslv_t::before{background-color:var(--in-bg);border-radius:1px;content:"";height:2px;margin-top:-1px;position:absolute;top:50%;left:-4px;right:-4px}.tp-rslv_b{bottom:0;top:0;position:absolute}.tp-rslv_b::before{background-color:var(--in-fg);content:"";height:2px;margin-top:-1px;position:absolute;top:50%;left:0;right:0}.tp-rslv_k{height:calc(var(--bld-us) - 8px);margin-top:calc((var(--bld-us) - 8px)/-2);position:absolute;top:50%;width:8px}.tp-rslv_k.tp-rslv_k-min{margin-left:-8px}.tp-rslv_k.tp-rslv_k-max{margin-left:0}.tp-rslv.tp-rslv-zero .tp-rslv_k.tp-rslv_k-min{border-bottom-right-radius:0;border-top-right-radius:0}.tp-rslv.tp-rslv-zero .tp-rslv_k.tp-rslv_k-max{border-bottom-left-radius:0;border-top-left-radius:0}.tp-rsltxtv{display:flex}.tp-rsltxtv_s{flex:1}.tp-rsltxtv_t{flex:1;margin-left:4px}.tp-radv_l{display:block;position:relative}.tp-radv_i{left:0;opacity:0;position:absolute;top:0}.tp-radv_b{opacity:.5}.tp-radv_i:hover+.tp-radv_b{background-color:var(--btn-bg-h)}.tp-radv_i:focus+.tp-radv_b{background-color:var(--btn-bg-f)}.tp-radv_i:active+.tp-radv_b{background-color:var(--btn-bg-a)}.tp-radv_i:checked+.tp-radv_b{opacity:1}.tp-radv_t{bottom:0;color:inherit;left:0;overflow:hidden;position:absolute;right:0;text-align:center;text-overflow:ellipsis;top:0}.tp-radv_i:disabled+.tp-radv_b>.tp-radv_t{opacity:.5}.tp-radgridv{border-radius:var(--elm-br);display:grid;overflow:hidden;gap:2px}.tp-radgridv.tp-v-disabled{opacity:.5}.tp-radgridv .tp-radv_b{border-radius:0}',accept:(d,o)=>{if(!Te.isObject(d))return null;const p=he,v=te(o,{format:p.optional.function,max:p.optional.number,min:p.optional.number,step:p.optional.number});return v?{initialValue:new Te(d.min,d.max),params:v}:null},binding:{reader:d=>Ys,constraint:d=>Dt(d.params),equals:Te.equals,writer:d=>kn},controller(d){var o;const p=d.value,v=d.constraint;if(!(v instanceof tn))throw _.shouldNeverHappen();const C=(p.rawValue.min+p.rawValue.max)/2,S=(o=d.params.format)!==null&&o!==void 0?o:Le(Ai(v.edge,C)),T=v.edge&&ot(v.edge,nt);if(T)return new Mn(d.document,{baseStep:Vi(v.edge),constraint:v.edge,draggingScale:Ii(v.edge,C),formatter:S,parser:Xt,sliderProps:new Y({maxValue:T.values.value("max"),minValue:T.values.value("min")}),value:p,viewProps:d.viewProps});const R={baseStep:Vi(v.edge),constraint:v.edge,textProps:Y.fromObject({draggingScale:C,formatter:S})};return new ti(d.document,{assembly:li,axes:[R,R],parser:Xt,value:p,viewProps:d.viewProps})}};class sn{constructor(o){this.controller_=o}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(o){this.controller_.viewProps.set("disabled",o)}get title(){var o;return(o=this.controller_.props.get("title"))!==null&&o!==void 0?o:""}set title(o){this.controller_.props.set("title",o)}}class Yi extends c{constructor(o,p,v,C,S){super(o,C,S),this.cell=p,this.index=v}}class qi extends s{constructor(o){super(o),this.cellToApiMap_=new Map,this.controller_.valueController.cellControllers.forEach(v=>{const C=new sn(v);this.cellToApiMap_.set(v,C)})}get value(){return this.controller_.value}cell(o,p){const v=this.controller_.valueController,C=v.cellControllers[p*v.size[0]+o];return this.cellToApiMap_.get(C)}on(o,p){const v=p.bind(this);this.controller_.value.emitter.on(o,C=>{const S=this.controller_.valueController,T=S.findCellByValue(C.rawValue);if(!T)return;const R=this.cellToApiMap_.get(T);if(!R)return;const oe=S.cellControllers.indexOf(T);v(new Yi(this,R,[oe%S.size[0],Math.floor(oe/S.size[0])],C.rawValue,void 0))})}}const rn=x("rad");class Qi{constructor(o,p){this.element=o.createElement("div"),this.element.classList.add(rn()),p.viewProps.bindClassModifiers(this.element);const v=o.createElement("label");v.classList.add(rn("l")),this.element.appendChild(v);const C=o.createElement("input");C.classList.add(rn("i")),C.name=p.name,C.type="radio",p.viewProps.bindDisabled(C),v.appendChild(C),this.inputElement=C;const S=o.createElement("div");S.classList.add(rn("b")),v.appendChild(S);const T=o.createElement("div");T.classList.add(rn("t")),S.appendChild(T),O(p.props,"title",R=>{T.textContent=R})}}class ut{constructor(o,p){this.props=p.props,this.viewProps=p.viewProps,this.view=new Qi(o,{name:p.name,props:this.props,viewProps:this.viewProps})}}class Sn{constructor(o,p){this.cellCs_=[],this.cellValues_=[],this.onCellInputChange_=this.onCellInputChange_.bind(this),this.size=p.size;const[v,C]=this.size;for(let S=0;S<C;S++)for(let T=0;T<v;T++){const R=new ut(o,{name:p.groupName,props:Y.fromObject(Object.assign({},p.cellConfig(T,S))),viewProps:be.create()});this.cellCs_.push(R),this.cellValues_.push(p.cellConfig(T,S).value)}this.value=p.value,D(this.value,S=>{const T=this.findCellByValue(S);T&&(T.view.inputElement.checked=!0)}),this.viewProps=be.create(),this.view=new rt(o,{viewProps:this.viewProps,viewName:"radgrid"}),this.view.element.style.gridTemplateColumns=`repeat(${v}, 1fr)`,this.cellCs_.forEach(S=>{S.view.inputElement.addEventListener("change",this.onCellInputChange_),this.view.element.appendChild(S.view.element)})}get cellControllers(){return this.cellCs_}findCellByValue(o){const p=this.cellValues_.findIndex(v=>v===o);return p<0?null:this.cellCs_[p]}onCellInputChange_(o){const p=o.currentTarget,v=this.cellCs_.findIndex(C=>C.view.inputElement===p);v<0||(this.value.rawValue=this.cellValues_[v])}}const qs=function(){return{id:"radiogrid",type:"blade",accept(d){const o=he,p=te(d,{cells:o.required.function,groupName:o.required.string,size:o.required.array(o.required.number),value:o.required.raw,view:o.required.constant("radiogrid"),label:o.optional.string});return p?{params:p}:null},controller(d){return new mt(d.document,{blade:d.blade,props:Y.fromObject({label:d.params.label}),valueController:new Sn(d.document,{groupName:d.params.groupName,cellConfig:d.params.cells,size:d.params.size,value:X(d.params.value)})})},api(d){return!(d.controller instanceof mt)||!(d.controller.valueController instanceof Sn)?null:new qi(d.controller)}}}();function pi(d){return{id:"input-radiogrid",type:"input",accept(o,p){if(!d.isType(o))return null;const v=he,C=te(p,{cells:v.required.function,groupName:v.required.string,size:v.required.array(v.required.number),view:v.required.constant("radiogrid")});return C?{initialValue:o,params:C}:null},binding:d.binding,controller:o=>new Sn(o.document,{cellConfig:o.params.cells,groupName:o.params.groupName,size:o.params.size,value:o.value})}}const Qs=pi({isType:d=>typeof d=="number",binding:{reader:d=>Cs,writer:d=>Jn}}),Zi=pi({isType:d=>typeof d=="string",binding:{reader:d=>Mi,writer:d=>Jn}}),Zs=pi({isType:d=>typeof d=="boolean",binding:{reader:d=>Rt,writer:d=>Jn}}),Ws=[zs,Xi,Xs,Tt,qs,Zs,Qs,Zi];r.ButtonCellApi=Ni,r.ButtonGridApi=Fi,r.ButtonGridController=ni,r.CubicBezier=ct,r.CubicBezierApi=ji,r.CubicBezierAssembly=Cn,r.CubicBezierController=it,r.CubicBezierGraphController=oi,r.CubicBezierGraphView=Ri,r.CubicBezierPickerController=Pn,r.CubicBezierPickerView=Jt,r.CubicBezierPreviewView=Vt,r.CubicBezierView=Ae,r.FpsGraphBladeApi=Me,r.FpsGraphController=en,r.FpsView=It,r.Fpswatch=ze,r.Interval=Te,r.IntervalAssembly=li,r.IntervalConstraint=tn,r.RadioCellApi=sn,r.RadioController=ut,r.RadioGridApi=qi,r.RadioGridController=Sn,r.RadioView=Qi,r.RangeSliderController=ci,r.RangeSliderTextController=Mn,r.RangeSliderTextView=nn,r.RangeSliderView=st,r.TpRadioGridChangeEvent=Yi,r.plugins=Ws,Object.defineProperty(r,"__esModule",{value:!0})})})(sl,jn);const rl=Ao({__proto__:null,default:Qa(jn)},[jn]);let jt,_i;const ol=(g="tres-container")=>{jt||(jt=new gi.Pane({container:document.querySelector(g)||void 0}),jt.registerPlugin(rl),_i=jt.addBlade({view:"fpsgraph",label:"fpsgraph"}));function i(){jt&&jt.dispose()}return M.onMounted(()=>{const{onBeforeLoop:r,onAfterLoop:s,resume:a}=ln.useRenderLoop();a(),r(()=>_i.begin()),s(()=>_i.end())}),M.onUnmounted(()=>{i()}),{pane:jt,fpsGraph:_i,disposeTweakPane:i}};function al(g,i){const r=M.ref(i),s=new f.AnimationMixer(r.value),a=M.shallowReactive({});g.forEach(u=>{const h=s.clipAction(u,r.value);a[u.name]=h});const{onLoop:c}=ln.useRenderLoop();return c(({delta:u})=>{s.update(u)}),{actions:a,mixer:s}}let wi=null;function ll(g,i){return r=>{i&&i(r),g.draco&&(wi||(wi=new Wa),wi.setDecoderPath(g.decoderPath||"https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),r.setDRACOLoader(wi))}}async function Ur(g,i={draco:!1},r){return await ln.useLoader(Zo,g,ll(i,r))}const cl=M.defineComponent({name:"GLTFModel",props:{path:String,draco:Boolean,decoderPath:String},async setup(g,{expose:i}){const{state:r}=pn();function s(){return a}i({getModel:s});const{scene:a}=await Ur(g.path,{draco:g.draco,decoderPath:g.decoderPath});return r.scene&&r.scene.add(a),()=>{}}});async function Gr(g){return await ln.useLoader(Oa,g)}const pl=M.defineComponent({name:"FBXModel",props:{path:{type:String,required:!0}},async setup(g,{expose:i}){const{state:r}=pn();let s=null;function a(){return s}return i({getModel:a}),s=await Gr(g.path),r.scene&&s.isObject3D&&r.scene.add(s),()=>{}}}),ul=M.defineComponent({__name:"Text3D",props:{font:null,text:null,size:{default:.5},height:{default:.2},curveSegments:{default:5},bevelEnabled:{type:Boolean,default:!0},bevelThickness:{default:.05},bevelSize:{default:.02},bevelOffset:{default:0},bevelSegments:{default:4},center:{type:Boolean,default:!1}},async setup(g){let i,r;const s=g,{extend:a}=pn();a({TextGeometry:ka});const c=new Xa,u=M.useSlots(),h=M.computed(()=>{var y;return s.text?s.text:u.default?(y=u.default()[0].children)==null?void 0:y.trim():"TresJS"}),m=([i,r]=M.withAsyncContext(()=>new Promise((y,w)=>{try{typeof s.font=="string"?c.load(s.font,x=>{y(x)}):y(s.font)}catch(x){w(console.error("cientos",x))}})),i=await i,r(),i),_=M.computed(()=>({font:m,size:s.size,height:s.height,curveSegments:s.curveSegments,bevelEnabled:s.bevelEnabled,bevelThickness:s.bevelThickness,bevelSize:s.bevelSize,bevelOffset:s.bevelOffset,bevelSegments:s.bevelSegments}));return(y,w)=>{const x=M.resolveComponent("TresTextGeometry"),L=M.resolveComponent("TresMesh");return M.unref(m)?(M.openBlock(),M.createBlock(L,{key:0},{default:M.withCtx(()=>[M.unref(h)?(M.openBlock(),M.createBlock(x,{key:0,args:[M.unref(h),M.unref(_)],center:g.center},null,8,["args","center"])):M.createCommentVNode("",!0),M.renderSlot(y.$slots,"default")]),_:3})):M.createCommentVNode("",!0)}}}),hl=M.defineComponent({__name:"Plane",props:{args:{default:()=>[1,1]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresPlaneGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"planeRef",ref:r,rotation:[-Math.PI/2,0,0]},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16,["rotation"])}}}),dl=M.defineComponent({__name:"Box",props:{args:{default:()=>[1,1,1]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresBoxGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"boxRef",ref:r},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16)}}}),ml=M.defineComponent({__name:"Sphere",props:{args:{default:()=>[2,32,16]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresSphereGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"sphereRef",ref:r},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16)}}}),fl=M.defineComponent({__name:"Torus",props:{args:{default:()=>[1,1,16,80]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresTorusGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"torusRef",ref:r},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16)}}}),vl=M.defineComponent({__name:"TorusKnot",props:{args:{default:()=>[1,.4,64,8]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresTorusKnotGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"torusKnotRef",ref:r},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16)}}}),bl=M.defineComponent({__name:"Circle",props:{args:{default:()=>[1,32]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresCircleGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"circleRef",ref:r},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16)}}}),gl=M.defineComponent({__name:"Cone",props:{args:{default:()=>[1,1,12]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresConeGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"coneRef",ref:r},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16)}}}),_l=M.defineComponent({__name:"Tube",props:{args:{default:()=>[new f.QuadraticBezierCurve3(new f.Vector3(-1,0,0),new f.Vector3(0,1,0),new f.Vector3(1,0,0)),20,.2,8,!1]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresTubeGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"tubeRef",ref:r},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16)}}}),wl=M.defineComponent({__name:"Ring",props:{args:{default:()=>[.5,1,32]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresRingGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"ringRef",ref:r},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16)}}}),yl=M.defineComponent({__name:"Tetrahedron",props:{args:{default:()=>[1,0]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresTetrahedronGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"tetrahedronRef",ref:r,rotation:[-Math.PI/2,0,0]},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16,["rotation"])}}}),xl=M.defineComponent({__name:"Icosahedron",props:{args:{default:()=>[1,0]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresIcosahedronGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"icosahedronRef",ref:r},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16)}}}),Cl=M.defineComponent({__name:"Octahedron",props:{args:{default:()=>[1,0]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresOctahedronGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"octahedronRef",ref:r},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16)}}}),Pl=M.defineComponent({__name:"Dodecahedron",props:{args:{default:()=>[1,0]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresDodecahedronGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"dodecahedronRef",ref:r},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16)}}}),ps={sunset:"venice/venice_sunset_4k.hdr"};async function Rr({files:g=["/px.png","/nx.png","/py.png","/ny.png","/pz.png","/nz.png"],blur:i=0,background:r=!1,path:s=void 0,preset:a=void 0,encoding:c=void 0}){const{state:u}=pn();if(a){if(!(a in ps))throw new Error("Preset must be one of: "+Object.keys(ps).join(", "));g=ps[a],s="https://raw.githubusercontent.com/Tresjs/assets/main/textures/hdr/"}const h=Array.isArray(g),m=h?f.CubeTextureLoader:Za,_=await ln.useLoader(m,h?[g]:g,w=>{s&&w.setPath(s),c&&(w.encoding=c)}),y=h?_[0]:_;return y&&(y.mapping=h?f.CubeReflectionMapping:f.EquirectangularReflectionMapping,y.encoding=c??h?f.sRGBEncoding:f.LinearEncoding),r&&u.scene&&(u.scene.environment=y,u.scene.background=y,i&&(u.scene.backgroundBlurriness=i|0)),y}const Ml=M.defineComponent({name:"Environment",props:{background:{type:Boolean,default:!1},blur:{type:Number,default:0},files:{type:[String,Array]},encoding:Object,path:String,preset:Object},async setup(g,{expose:i}){let r=null;return i({getTexture:()=>r}),r=await Rr(g),()=>{}}});pe.Box=dl,pe.Circle=bl,pe.Cone=gl,pe.Dodecahedron=Pl,pe.Environment=Ml,pe.FBXModel=pl,pe.GLTFModel=cl,pe.Icosahedron=xl,pe.Octahedron=Cl,pe.OrbitControls=Ha,pe.Plane=hl,pe.Ring=wl,pe.Sphere=ml,pe.Tetrahedron=yl,pe.Text3D=ul,pe.Torus=fl,pe.TorusKnot=vl,pe.TransformControls=nl,pe.Tube=_l,pe.useAnimations=al,pe.useEnvironment=Rr,pe.useFBX=Gr,pe.useGLTF=Ur,pe.useTweakPane=ol,Object.defineProperty(pe,Symbol.toStringTag,{value:"Module"})});
|
|
18
|
+
`;continue}if((Z=Y.match(Q))&&(X.gamma=parseFloat(Z[1])),(Z=Y.match($))&&(X.exposure=parseFloat(Z[1])),(Z=Y.match(j))&&(X.valid|=2,X.format=Z[1]),(Z=Y.match(F))&&(X.valid|=4,X.height=parseInt(Z[1],10),X.width=parseInt(Z[2],10)),X.valid&2&&X.valid&4)break}return X.valid&2?X.valid&4?X:h(3,"missing image size specifier"):h(3,"missing format specifier")},E=function(B,N,Q){const $=N;if($<8||$>32767||B[0]!==2||B[1]!==2||B[2]&128)return new Uint8Array(B);if($!==(B[2]<<8|B[3]))return h(3,"wrong scanline width");const j=new Uint8Array(4*N*Q);if(!j.length)return h(4,"unable to allocate buffer space");let F=0,X=0;const Y=4*$,Z=new Uint8Array(4),ue=new Uint8Array(Y);let ge=Q;for(;ge>0&&X<B.byteLength;){if(X+4>B.byteLength)return h(1);if(Z[0]=B[X++],Z[1]=B[X++],Z[2]=B[X++],Z[3]=B[X++],Z[0]!=2||Z[1]!=2||(Z[2]<<8|Z[3])!=$)return h(3,"bad rgbe scanline format");let pe=0,me;for(;pe<Y&&X<B.byteLength;){me=B[X++];const te=me>128;if(te&&(me-=128),me===0||pe+me>Y)return h(3,"bad scanline data");if(te){const q=B[X++];for(let Pe=0;Pe<me;Pe++)ue[pe++]=q}else ue.set(B.subarray(X,X+me),pe),pe+=me,X+=me}const he=$;for(let te=0;te<he;te++){let q=0;j[F]=ue[te+q],q+=$,j[F+1]=ue[te+q],q+=$,j[F+2]=ue[te+q],q+=$,j[F+3]=ue[te+q],F+=4}ge--}return j},I=function(B,N,Q,$){const j=B[N+3],F=Math.pow(2,j-128)/255;Q[$+0]=B[N+0]*F,Q[$+1]=B[N+1]*F,Q[$+2]=B[N+2]*F,Q[$+3]=1},O=function(B,N,Q,$){const j=B[N+3],F=Math.pow(2,j-128)/255;Q[$+0]=f.DataUtils.toHalfFloat(Math.min(B[N+0]*F,65504)),Q[$+1]=f.DataUtils.toHalfFloat(Math.min(B[N+1]*F,65504)),Q[$+2]=f.DataUtils.toHalfFloat(Math.min(B[N+2]*F,65504)),Q[$+3]=f.DataUtils.toHalfFloat(1)},G=new Uint8Array(i);G.pos=0;const z=k(G);if(z!==-1){const B=z.width,N=z.height,Q=E(G.subarray(G.pos),B,N);if(Q!==-1){let $,j,F;switch(this.type){case f.FloatType:F=Q.length/4;const X=new Float32Array(F*4);for(let Z=0;Z<F;Z++)I(Q,Z*4,X,Z*4);$=X,j=f.FloatType;break;case f.HalfFloatType:F=Q.length/4;const Y=new Uint16Array(F*4);for(let Z=0;Z<F;Z++)O(Q,Z*4,Y,Z*4);$=Y,j=f.HalfFloatType;break;default:console.error("THREE.RGBELoader: unsupported type: ",this.type);break}return{width:B,height:N,data:$,header:z.string,gamma:z.gamma,exposure:z.exposure,type:j}}}return null}setDataType(i){return this.type=i,this}load(i,r,s,a){function c(u,h){switch(u.type){case f.FloatType:case f.HalfFloatType:u.encoding=f.LinearEncoding,u.minFilter=f.LinearFilter,u.magFilter=f.LinearFilter,u.generateMipmaps=!1,u.flipY=!0;break}r&&r(u,h)}return super.load(i,c,s,a)}}const ps=new WeakMap;class cl extends f.Loader{constructor(i){super(i),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(i){return this.decoderPath=i,this}setDecoderConfig(i){return this.decoderConfig=i,this}setWorkerLimit(i){return this.workerLimit=i,this}load(i,r,s,a){const c=new f.FileLoader(this.manager);c.setPath(this.path),c.setResponseType("arraybuffer"),c.setRequestHeader(this.requestHeader),c.setWithCredentials(this.withCredentials),c.load(i,u=>{const h={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(u,h).then(r).catch(a)},s,a)}decodeDracoFile(i,r,s,a){const c={attributeIDs:s||this.defaultAttributeIDs,attributeTypes:a||this.defaultAttributeTypes,useUniqueIDs:!!s};this.decodeGeometry(i,c).then(r)}decodeGeometry(i,r){for(const m in r.attributeTypes){const _=r.attributeTypes[m];_.BYTES_PER_ELEMENT!==void 0&&(r.attributeTypes[m]=_.name)}const s=JSON.stringify(r);if(ps.has(i)){const m=ps.get(i);if(m.key===s)return m.promise;if(i.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let a;const c=this.workerNextTaskID++,u=i.byteLength,h=this._getWorker(c,u).then(m=>(a=m,new Promise((_,y)=>{a._callbacks[c]={resolve:_,reject:y},a.postMessage({type:"decode",id:c,taskConfig:r,buffer:i},[i])}))).then(m=>this._createGeometry(m.geometry));return h.catch(()=>!0).then(()=>{a&&c&&this._releaseTask(a,c)}),ps.set(i,{key:s,promise:h}),h}_createGeometry(i){const r=new f.BufferGeometry;i.index&&r.setIndex(new f.BufferAttribute(i.index.array,1));for(let s=0;s<i.attributes.length;s++){const a=i.attributes[s],c=a.name,u=a.array,h=a.itemSize;r.setAttribute(c,new f.BufferAttribute(u,h))}return r}_loadLibrary(i,r){const s=new f.FileLoader(this.manager);return s.setPath(this.decoderPath),s.setResponseType(r),s.setWithCredentials(this.withCredentials),new Promise((a,c)=>{s.load(i,a,void 0,c)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const i=typeof WebAssembly!="object"||this.decoderConfig.type==="js",r=[];return i?r.push(this._loadLibrary("draco_decoder.js","text")):(r.push(this._loadLibrary("draco_wasm_wrapper.js","text")),r.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(r).then(s=>{const a=s[0];i||(this.decoderConfig.wasmBinary=s[1]);const c=pl.toString(),u=["/* draco decoder */",a,"","/* worker */",c.substring(c.indexOf("{")+1,c.lastIndexOf("}"))].join(`
|
|
19
|
+
`);this.workerSourceURL=URL.createObjectURL(new Blob([u]))}),this.decoderPending}_getWorker(i,r){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const a=new Worker(this.workerSourceURL);a._callbacks={},a._taskCosts={},a._taskLoad=0,a.postMessage({type:"init",decoderConfig:this.decoderConfig}),a.onmessage=function(c){const u=c.data;switch(u.type){case"decode":a._callbacks[u.id].resolve(u);break;case"error":a._callbacks[u.id].reject(u);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+u.type+'"')}},this.workerPool.push(a)}else this.workerPool.sort(function(a,c){return a._taskLoad>c._taskLoad?-1:1});const s=this.workerPool[this.workerPool.length-1];return s._taskCosts[i]=r,s._taskLoad+=r,s})}_releaseTask(i,r){i._taskLoad-=i._taskCosts[r],delete i._callbacks[r],delete i._taskCosts[r]}debug(){console.log("Task load: ",this.workerPool.map(i=>i._taskLoad))}dispose(){for(let i=0;i<this.workerPool.length;++i)this.workerPool[i].terminate();return this.workerPool.length=0,this}}function pl(){let g,i;onmessage=function(u){const h=u.data;switch(h.type){case"init":g=h.decoderConfig,i=new Promise(function(y){g.onModuleLoaded=function(w){y({draco:w})},DracoDecoderModule(g)});break;case"decode":const m=h.buffer,_=h.taskConfig;i.then(y=>{const w=y.draco,x=new w.Decoder,k=new w.DecoderBuffer;k.Init(new Int8Array(m),m.byteLength);try{const E=r(w,x,k,_),I=E.attributes.map(O=>O.array.buffer);E.index&&I.push(E.index.array.buffer),self.postMessage({type:"decode",id:h.id,geometry:E},I)}catch(E){console.error(E),self.postMessage({type:"error",id:h.id,error:E.message})}finally{w.destroy(k),w.destroy(x)}});break}};function r(u,h,m,_){const y=_.attributeIDs,w=_.attributeTypes;let x,k;const E=h.GetEncodedGeometryType(m);if(E===u.TRIANGULAR_MESH)x=new u.Mesh,k=h.DecodeBufferToMesh(m,x);else if(E===u.POINT_CLOUD)x=new u.PointCloud,k=h.DecodeBufferToPointCloud(m,x);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!k.ok()||x.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+k.error_msg());const I={index:null,attributes:[]};for(const O in y){const G=self[w[O]];let z,B;if(_.useUniqueIDs)B=y[O],z=h.GetAttributeByUniqueId(x,B);else{if(B=h.GetAttributeId(x,u[y[O]]),B===-1)continue;z=h.GetAttribute(x,B)}I.attributes.push(a(u,h,x,O,G,z))}return E===u.TRIANGULAR_MESH&&(I.index=s(u,h,x)),u.destroy(x),I}function s(u,h,m){const y=m.num_faces()*3,w=y*4,x=u._malloc(w);h.GetTrianglesUInt32Array(m,w,x);const k=new Uint32Array(u.HEAPF32.buffer,x,y).slice();return u._free(x),{array:k,itemSize:1}}function a(u,h,m,_,y,w){const x=w.num_components(),E=m.num_points()*x,I=E*y.BYTES_PER_ELEMENT,O=c(u,y),G=u._malloc(I);h.GetAttributeDataArrayForAllPoints(m,w,O,I,G);const z=new y(u.HEAPF32.buffer,G,E).slice();return u._free(G),{name:_,array:z,itemSize:x}}function c(u,h){switch(h){case Float32Array:return u.DT_FLOAT32;case Int8Array:return u.DT_INT8;case Int16Array:return u.DT_INT16;case Int32Array:return u.DT_INT32;case Uint8Array:return u.DT_UINT8;case Uint16Array:return u.DT_UINT16;case Uint32Array:return u.DT_UINT32}}}function jt(){const g=M.inject("extend")||(()=>{console.warn("No extend function provided")}),{state:i,setState:r}=M.inject("useTres",pn.useTres());return{state:i,setState:r,extend:g}}const ul=M.defineComponent({__name:"OrbitControls",props:{makeDefault:{type:Boolean,default:!1},camera:null,domElement:null,target:null,enableDamping:{type:Boolean}},setup(g){const i=g,{state:r,setState:s,extend:a}=jt(),c=M.ref(null);return a({OrbitControls:aa}),M.watch(c,u=>{u&&i.makeDefault?s("controls",u):s("controls",null)}),(u,h)=>{var _;const m=M.resolveComponent("TresOrbitControls");return M.unref(r).camera&&M.unref(r).renderer?(M.openBlock(),M.createBlock(m,{key:0,ref_key:"controls",ref:c,args:[M.unref(M.unref(r).camera),(_=M.unref(r).renderer)==null?void 0:_.domElement],"enabling-dampling":g.enableDamping},null,8,["args","enabling-dampling"])):M.createCommentVNode("",!0)}}});function hl(g,i){const r={};for(const s of i)Object.prototype.hasOwnProperty.call(g,s)&&(r[s]=g[s]);return r}function dl(g,i){const r=`set${i[0].toUpperCase()}${i.slice(1)}`;return g[r]!==void 0}const ml=M.defineComponent({__name:"TransformControls",props:{object:null,mode:null,enabled:{type:Boolean,default:!0},axis:null,translationSnap:null,rotationSnap:null,scaleSnap:null,space:null,size:null,showX:{type:Boolean},showY:{type:Boolean},showZ:{type:Boolean}},emits:["dragging","change","mouseDown","mouseUp","objectChange"],setup(g,{emit:i}){const r=g;let s=M.shallowRef();const{state:a}=jt(),c=M.computed(()=>hl(r,["enabled","axis","mode","translationSnap","rotationSnap","scaleSnap","space","size","showX","showY","showZ"])),u=()=>i("change",s.value),h=()=>i("mouseDown",s.value),m=()=>i("mouseUp",s.value),_=()=>i("objectChange",s.value),y=x=>{a.controls&&(a.controls.enabled=!x.value),i("dragging",x.value)};function w(x){x.addEventListener("dragging-changed",y),x.addEventListener("change",u),x.addEventListener("mouseDown",h),x.addEventListener("mouseUp",m),x.addEventListener("objectChange",_)}return M.watch(()=>r.object,()=>{a.camera&&a.renderer&&a.scene&&r.object&&(s.value=new sa(a.camera,M.unref(a.renderer).domElement),s.value.attach(M.unref(r.object)),a.scene.add(M.unref(s)),w(M.unref(s)))},{deep:!0}),M.watch([c,s],([x,k])=>{if(x&&k)for(const E in x)if(!dl(k,E))k[E]=x[E];else{const I=`set${E[0].toUpperCase()}${E.slice(1)}`;typeof k[I]=="function"&&x[E]!==void 0&&k[I](x[E])}},{immediate:!0}),M.onUnmounted(()=>{s.value&&(s.value.removeEventListener("dragging-changed",y),s.value.removeEventListener("change",u),s.value.removeEventListener("mouseDown",h),s.value.removeEventListener("mouseUp",m),s.value.removeEventListener("objectChange",_))}),(x,k)=>M.renderSlot(x.$slots,"default")}});var $r;const Xr=typeof window<"u",fl=g=>typeof g=="string",vl=()=>{};Xr&&(($r=window==null?void 0:window.navigator)!=null&&$r.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function Yr(g){return typeof g=="function"?g():M.unref(g)}function bl(g){return g}function gl(g){return M.getCurrentScope()?(M.onScopeDispose(g),!0):!1}function _l(g,i=!0){M.getCurrentInstance()?M.onMounted(g):i?g():M.nextTick(g)}function wl(g){var i;const r=Yr(g);return(i=r==null?void 0:r.$el)!=null?i:r}const us=Xr?window:void 0;function zt(...g){let i,r,s,a;if(fl(g[0])||Array.isArray(g[0])?([r,s,a]=g,i=us):[i,r,s,a]=g,!i)return vl;Array.isArray(r)||(r=[r]),Array.isArray(s)||(s=[s]);const c=[],u=()=>{c.forEach(y=>y()),c.length=0},h=(y,w,x,k)=>(y.addEventListener(w,x,k),()=>y.removeEventListener(w,x,k)),m=M.watch(()=>[wl(i),Yr(a)],([y,w])=>{u(),y&&c.push(...r.flatMap(x=>s.map(k=>h(y,x,k,w))))},{immediate:!0,flush:"post"}),_=()=>{m(),u()};return gl(_),_}const hs=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},ds="__vueuse_ssr_handlers__";hs[ds]=hs[ds]||{},hs[ds];function yl(g={}){const{type:i="page",touch:r=!0,resetOnTouchEnds:s=!1,initialValue:a={x:0,y:0},window:c=us,eventFilter:u}=g,h=M.ref(a.x),m=M.ref(a.y),_=M.ref(null),y=I=>{i==="page"?(h.value=I.pageX,m.value=I.pageY):i==="client"?(h.value=I.clientX,m.value=I.clientY):i==="movement"&&(h.value=I.movementX,m.value=I.movementY),_.value="mouse"},w=()=>{h.value=a.x,m.value=a.y},x=I=>{if(I.touches.length>0){const O=I.touches[0];i==="page"?(h.value=O.pageX,m.value=O.pageY):i==="client"&&(h.value=O.clientX,m.value=O.clientY),_.value="touch"}},k=I=>u===void 0?y(I):u(()=>y(I),{}),E=I=>u===void 0?x(I):u(()=>x(I),{});return c&&(zt(c,"mousemove",k,{passive:!0}),zt(c,"dragover",k,{passive:!0}),r&&i!=="movement"&&(zt(c,"touchstart",E,{passive:!0}),zt(c,"touchmove",E,{passive:!0}),s&&zt(c,"touchend",w,{passive:!0}))),{x:h,y:m,sourceType:_}}var qr;(function(g){g.UP="UP",g.RIGHT="RIGHT",g.DOWN="DOWN",g.LEFT="LEFT",g.NONE="NONE"})(qr||(qr={}));var xl=Object.defineProperty,Qr=Object.getOwnPropertySymbols,Cl=Object.prototype.hasOwnProperty,Pl=Object.prototype.propertyIsEnumerable,Zr=(g,i,r)=>i in g?xl(g,i,{enumerable:!0,configurable:!0,writable:!0,value:r}):g[i]=r,Ml=(g,i)=>{for(var r in i||(i={}))Cl.call(i,r)&&Zr(g,r,i[r]);if(Qr)for(var r of Qr(i))Pl.call(i,r)&&Zr(g,r,i[r]);return g};Ml({linear:bl},{easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]});function kl(g={}){const{window:i=us,initialWidth:r=1/0,initialHeight:s=1/0,listenOrientation:a=!0,includeScrollbar:c=!0}=g,u=M.ref(r),h=M.ref(s),m=()=>{i&&(c?(u.value=i.innerWidth,h.value=i.innerHeight):(u.value=i.document.documentElement.clientWidth,h.value=i.document.documentElement.clientHeight))};return m(),_l(m),zt("resize",m,{passive:!0}),a&&zt("orientationchange",m,{passive:!0}),{width:u,height:h}}const Wr="[TresJS - Cientos ▲ ■ ♥] ";function Sl(){function g(s,a){console.error(`${Wr} ${s}`,a||"")}function i(s){console.warn(`${Wr} ${s}`)}function r(s,a){}return{logError:g,logWarning:i,logMessage:r}}function Jr(g=!1,i=5,r){const{x:s,y:a}=yl(),{logWarning:c}=Sl(),{width:u,height:h}=kl(),m=M.computed(()=>(s.value/u.value-.5)*i),_=M.computed(()=>-(a.value/h.value-.5)*i);if(r){const{x:y,y:w}=r.position;M.watchEffect(()=>{g||r&&(r.position.x=y+m.value,r.position.y=w+_.value)})}else c("Scene must contain a Camera component to use this composable")}const Ll=M.defineComponent({name:"PamCameraMouse",props:{disabled:{type:Boolean,required:!1,default:!1},factor:{type:Number,required:!1,default:5}},setup(g){const{state:i}=jt(),r=i==null?void 0:i.camera;return Jr(g.disabled,g.factor,r),()=>{}}});var _i={},Al={get exports(){return _i},set exports(g){_i=g}};/*! Tweakpane 3.1.4 (c) 2016 cocopon, licensed under the MIT license. */(function(g,i){(function(r,s){s(i)})(Kr,function(r){class s{constructor(e){const[t,l]=e.split("-"),b=t.split(".");this.major=parseInt(b[0],10),this.minor=parseInt(b[1],10),this.patch=parseInt(b[2],10),this.prerelease=l??null}toString(){const e=[this.major,this.minor,this.patch].join(".");return this.prerelease!==null?[e,this.prerelease].join("-"):e}}class a{constructor(e){this.controller_=e}get element(){return this.controller_.view.element}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(e){this.controller_.viewProps.set("disabled",e)}get hidden(){return this.controller_.viewProps.get("hidden")}set hidden(e){this.controller_.viewProps.set("hidden",e)}dispose(){this.controller_.viewProps.set("disposed",!0)}}class c{constructor(e){this.target=e}}class u extends c{constructor(e,t,l,b){super(e),this.value=t,this.presetKey=l,this.last=b??!0}}class h extends c{constructor(e,t,l){super(e),this.value=t,this.presetKey=l}}class m extends c{constructor(e,t){super(e),this.expanded=t}}class _ extends c{constructor(e,t){super(e),this.index=t}}function y(n){return n}function w(n){return n==null}function x(n,e){if(n.length!==e.length)return!1;for(let t=0;t<n.length;t++)if(n[t]!==e[t])return!1;return!0}function k(n,e){let t=n;do{const l=Object.getOwnPropertyDescriptor(t,e);if(l&&(l.set!==void 0||l.writable===!0))return!0;t=Object.getPrototypeOf(t)}while(t!==null);return!1}const E={alreadydisposed:()=>"View has been already disposed",invalidparams:n=>`Invalid parameters for '${n.name}'`,nomatchingcontroller:n=>`No matching controller for '${n.key}'`,nomatchingview:n=>`No matching view for '${JSON.stringify(n.params)}'`,notbindable:()=>"Value is not bindable",propertynotfound:n=>`Property '${n.name}' not found`,shouldneverhappen:()=>"This error should never happen"};class I{constructor(e){var t;this.message=(t=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}static alreadyDisposed(){return new I({type:"alreadydisposed"})}static notBindable(){return new I({type:"notbindable"})}static propertyNotFound(e){return new I({type:"propertynotfound",context:{name:e}})}static shouldNeverHappen(){return new I({type:"shouldneverhappen"})}}class O{constructor(e,t,l){this.obj_=e,this.key_=t,this.presetKey_=l??t}static isBindable(e){return!(e===null||typeof e!="object")}get key(){return this.key_}get presetKey(){return this.presetKey_}read(){return this.obj_[this.key_]}write(e){this.obj_[this.key_]=e}writeProperty(e,t){const l=this.read();if(!O.isBindable(l))throw I.notBindable();if(!(e in l))throw I.propertyNotFound(e);l[e]=t}}class G extends a{get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}get title(){var e;return(e=this.controller_.valueController.props.get("title"))!==null&&e!==void 0?e:""}set title(e){this.controller_.valueController.props.set("title",e)}on(e,t){const l=t.bind(this);return this.controller_.valueController.emitter.on(e,()=>{l(new c(this))}),this}}class z{constructor(){this.observers_={}}on(e,t){let l=this.observers_[e];return l||(l=this.observers_[e]=[]),l.push({handler:t}),this}off(e,t){const l=this.observers_[e];return l&&(this.observers_[e]=l.filter(b=>b.handler!==t)),this}emit(e,t){const l=this.observers_[e];l&&l.forEach(b=>{b.handler(t)})}}const B="tp";function N(n){return(t,l)=>[B,"-",n,"v",t?`_${t}`:"",l?`-${l}`:""].join("")}function Q(n,e){return t=>e(n(t))}function $(n){return n.rawValue}function j(n,e){n.emitter.on("change",Q($,e)),e(n.rawValue)}function F(n,e,t){j(n.value(e),t)}function X(n,e,t){t?n.classList.add(e):n.classList.remove(e)}function Y(n,e){return t=>{X(n,e,t)}}function Z(n,e){j(n,t=>{e.textContent=t??""})}const ue=N("btn");class ge{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(ue()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("button");l.classList.add(ue("b")),t.viewProps.bindDisabled(l),this.element.appendChild(l),this.buttonElement=l;const b=e.createElement("div");b.classList.add(ue("t")),Z(t.props.value("title"),b),this.buttonElement.appendChild(b)}}class pe{constructor(e,t){this.emitter=new z,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new ge(e,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class me{constructor(e,t){var l;this.constraint_=t==null?void 0:t.constraint,this.equals_=(l=t==null?void 0:t.equals)!==null&&l!==void 0?l:(b,P)=>b===P,this.emitter=new z,this.rawValue_=e}get constraint(){return this.constraint_}get rawValue(){return this.rawValue_}set rawValue(e){this.setRawValue(e,{forceEmit:!1,last:!0})}setRawValue(e,t){const l=t??{forceEmit:!1,last:!0},b=this.constraint_?this.constraint_.constrain(e):e,P=this.rawValue_;this.equals_(P,b)&&!l.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=b,this.emitter.emit("change",{options:l,previousRawValue:P,rawValue:b,sender:this}))}}class he{constructor(e){this.emitter=new z,this.value_=e}get rawValue(){return this.value_}set rawValue(e){this.setRawValue(e,{forceEmit:!1,last:!0})}setRawValue(e,t){const l=t??{forceEmit:!1,last:!0},b=this.value_;b===e&&!l.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.value_=e,this.emitter.emit("change",{options:l,previousRawValue:b,rawValue:this.value_,sender:this}))}}function te(n,e){const t=e==null?void 0:e.constraint,l=e==null?void 0:e.equals;return!t&&!l?new he(n):new me(n,e)}class q{constructor(e){this.emitter=new z,this.valMap_=e;for(const t in this.valMap_)this.valMap_[t].emitter.on("change",()=>{this.emitter.emit("change",{key:t,sender:this})})}static createCore(e){return Object.keys(e).reduce((l,b)=>Object.assign(l,{[b]:te(e[b])}),{})}static fromObject(e){const t=this.createCore(e);return new q(t)}get(e){return this.valMap_[e].rawValue}set(e,t){this.valMap_[e].rawValue=t}value(e){return this.valMap_[e]}}function Pe(n,e){const l=Object.keys(e).reduce((b,P)=>{if(b===void 0)return;const A=e[P],U=A(n[P]);return U.succeeded?Object.assign(Object.assign({},b),{[P]:U.value}):void 0},{});return l}function fe(n,e){return n.reduce((t,l)=>{if(t===void 0)return;const b=e(l);if(!(!b.succeeded||b.value===void 0))return[...t,b.value]},[])}function le(n){return n===null?!1:typeof n=="object"}function ne(n){return e=>t=>{if(!e&&t===void 0)return{succeeded:!1,value:void 0};if(e&&t===void 0)return{succeeded:!0,value:void 0};const l=n(t);return l!==void 0?{succeeded:!0,value:l}:{succeeded:!1,value:void 0}}}function be(n){return{custom:e=>ne(e)(n),boolean:ne(e=>typeof e=="boolean"?e:void 0)(n),number:ne(e=>typeof e=="number"?e:void 0)(n),string:ne(e=>typeof e=="string"?e:void 0)(n),function:ne(e=>typeof e=="function"?e:void 0)(n),constant:e=>ne(t=>t===e?e:void 0)(n),raw:ne(e=>e)(n),object:e=>ne(t=>{if(le(t))return Pe(t,e)})(n),array:e=>ne(t=>{if(Array.isArray(t))return fe(t,e)})(n)}}const V={optional:be(!0),required:be(!1)};function ce(n,e){const t=V.required.object(e)(n);return t.succeeded?t.value:void 0}function Ve(n){console.warn([`Missing '${n.key}' of ${n.target} in ${n.place}.`,"Please rebuild plugins with the latest core package."].join(" "))}function Oe(n){return n&&n.parentElement&&n.parentElement.removeChild(n),null}class we{constructor(e){this.value_=e}static create(e){return[new we(e),(t,l)=>{e.setRawValue(t,l)}]}get emitter(){return this.value_.emitter}get rawValue(){return this.value_.rawValue}}const Xe=N("");function hn(n,e){return Y(n,Xe(void 0,e))}class Ge 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_]=we.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,l,b;const P=e??{};return new Ge(q.createCore({disabled:(t=P.disabled)!==null&&t!==void 0?t:!1,disposed:!1,hidden:(l=P.hidden)!==null&&l!==void 0?l:!1,parent:(b=P.parent)!==null&&b!==void 0?b:null}))}get globalDisabled(){return this.globalDisabled_}bindClassModifiers(e){j(this.globalDisabled_,hn(e,"disabled")),F(this,"hidden",hn(e,"hidden"))}bindDisabled(e){j(this.globalDisabled_,t=>{e.disabled=t})}bindTabIndex(e){j(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 l=e.previousRawValue;l==null||l.globalDisabled.emitter.off("change",this.onParentGlobalDisabledChange_),(t=this.get("parent"))===null||t===void 0||t.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_),this.updateGlobalDisabled_()}}function dn(){return["veryfirst","first","last","verylast"]}const Gt=N(""),et={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class dt{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",()=>{dn().forEach(l=>{t.classList.remove(Gt(void 0,et[l]))}),this.blade.get("positions").forEach(l=>{t.classList.add(Gt(void 0,et[l]))})}),this.viewProps.handleDispose(()=>{Oe(t)})}get parent(){return this.parent_}set parent(e){if(this.parent_=e,!("parent"in this.viewProps.valMap_)){Ve({key:"parent",target:Ge.name,place:"BladeController.parent"});return}this.viewProps.set("parent",this.parent_?this.parent_.viewProps:null)}}const Be="http://www.w3.org/2000/svg";function Ye(n){n.offsetHeight}function Rt(n,e){const t=n.style.transition;n.style.transition="none",e(),n.style.transition=t}function tt(n){return n.ontouchstart!==void 0}function mn(){return globalThis}function Un(){return mn().document}function fn(n){const e=n.ownerDocument.defaultView;return e&&"document"in e?n.getContext("2d",{willReadFrequently:!0}):null}const vn={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 rt(n,e){const t=n.createElementNS(Be,"svg");return t.innerHTML=vn[e],t}function mt(n,e,t){n.insertBefore(e,n.children[t])}function bn(n){n.parentElement&&n.parentElement.removeChild(n)}function Kt(n){for(;n.children.length>0;)n.removeChild(n.children[0])}function gn(n){for(;n.childNodes.length>0;)n.removeChild(n.childNodes[0])}function ot(n){return n.relatedTarget?n.relatedTarget:"explicitOriginalTarget"in n?n.explicitOriginalTarget:null}const nt=N("lbl");function ft(n,e){const t=n.createDocumentFragment();return e.split(`
|
|
20
|
+
`).map(b=>n.createTextNode(b)).forEach((b,P)=>{P>0&&t.appendChild(n.createElement("br")),t.appendChild(b)}),t}class D{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(nt()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("div");l.classList.add(nt("l")),F(t.props,"label",P=>{w(P)?this.element.classList.add(nt(void 0,"nol")):(this.element.classList.remove(nt(void 0,"nol")),gn(l),l.appendChild(ft(e,P)))}),this.element.appendChild(l),this.labelElement=l;const b=e.createElement("div");b.classList.add(nt("v")),this.element.appendChild(b),this.valueElement=b}}class K extends dt{constructor(e,t){const l=t.valueController.viewProps;super(Object.assign(Object.assign({},t),{view:new D(e,{props:t.props,viewProps:l}),viewProps:l})),this.props=t.props,this.valueController=t.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}const H={id:"button",type:"blade",accept(n){const e=V,t=ce(n,{title:e.required.string,view:e.required.constant("button"),label:e.optional.string});return t?{params:t}:null},controller(n){return new K(n.document,{blade:n.blade,props:q.fromObject({label:n.params.label}),valueController:new pe(n.document,{props:q.fromObject({title:n.params.title}),viewProps:n.viewProps})})},api(n){return!(n.controller instanceof K)||!(n.controller.valueController instanceof pe)?null:new G(n.controller)}};class ie extends dt{constructor(e){super(e),this.value=e.value}}function ye(){return new q({positions:te([],{equals:x})})}class Ie extends q{constructor(e){super(e)}static create(e){const t={completed:!0,expanded:e,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null},l=q.createCore(t);return new Ie(l)}get styleExpanded(){var e;return(e=this.get("temporaryExpanded"))!==null&&e!==void 0?e:this.get("expanded")}get styleHeight(){if(!this.styleExpanded)return"0";const e=this.get("expandedHeight");return this.get("shouldFixHeight")&&!w(e)?`${e}px`:"auto"}bindExpandedClass(e,t){const l=()=>{this.styleExpanded?e.classList.add(t):e.classList.remove(t)};F(this,"expanded",l),F(this,"temporaryExpanded",l)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function Mt(n,e){let t=0;return Rt(e,()=>{n.set("expandedHeight",null),n.set("temporaryExpanded",!0),Ye(e),t=e.clientHeight,n.set("temporaryExpanded",null),Ye(e)}),t}function $t(n,e){e.style.height=n.styleHeight}function Ne(n,e){n.value("expanded").emitter.on("beforechange",()=>{n.set("completed",!1),w(n.get("expandedHeight"))&&n.set("expandedHeight",Mt(n,e)),n.set("shouldFixHeight",!0),Ye(e)}),n.emitter.on("change",()=>{$t(n,e)}),$t(n,e),e.addEventListener("transitionend",t=>{t.propertyName==="height"&&n.cleanUpTransition()})}class Fe extends a{constructor(e,t){super(e),this.rackApi_=t}}function fs(n,e){return n.addBlade(Object.assign(Object.assign({},e),{view:"button"}))}function vs(n,e){return n.addBlade(Object.assign(Object.assign({},e),{view:"folder"}))}function bs(n,e){const t=e??{};return n.addBlade(Object.assign(Object.assign({},t),{view:"separator"}))}function Gn(n,e){return n.addBlade(Object.assign(Object.assign({},e),{view:"tab"}))}class vt{constructor(e){this.emitter=new z,this.items_=[],this.cache_=new Set,this.onSubListAdd_=this.onSubListAdd_.bind(this),this.onSubListRemove_=this.onSubListRemove_.bind(this),this.extract_=e}get items(){return this.items_}allItems(){return Array.from(this.cache_)}find(e){for(const t of this.allItems())if(e(t))return t;return null}includes(e){return this.cache_.has(e)}add(e,t){if(this.includes(e))throw I.shouldNeverHappen();const l=t!==void 0?t:this.items_.length;this.items_.splice(l,0,e),this.cache_.add(e);const b=this.extract_(e);b&&(b.emitter.on("add",this.onSubListAdd_),b.emitter.on("remove",this.onSubListRemove_),b.allItems().forEach(P=>{this.cache_.add(P)})),this.emitter.emit("add",{index:l,item:e,root:this,target:this})}remove(e){const t=this.items_.indexOf(e);if(t<0)return;this.items_.splice(t,1),this.cache_.delete(e);const l=this.extract_(e);l&&(l.emitter.off("add",this.onSubListAdd_),l.emitter.off("remove",this.onSubListRemove_)),this.emitter.emit("remove",{index:t,item:e,root:this,target:this})}onSubListAdd_(e){this.cache_.add(e.item),this.emitter.emit("add",{index:e.index,item:e.item,root:this,target:e.target})}onSubListRemove_(e){this.cache_.delete(e.item),this.emitter.emit("remove",{index:e.index,item:e.item,root:this,target:e.target})}}class Rn extends a{constructor(e){super(e),this.onBindingChange_=this.onBindingChange_.bind(this),this.emitter_=new z,this.controller_.binding.emitter.on("change",this.onBindingChange_)}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}on(e,t){const l=t.bind(this);return this.emitter_.on(e,b=>{l(b.event)}),this}refresh(){this.controller_.binding.read()}onBindingChange_(e){const t=e.sender.target.read();this.emitter_.emit("change",{event:new u(this,t,this.controller_.binding.target.presetKey,e.options.last)})}}class Ee extends K{constructor(e,t){super(e,t),this.binding=t.binding}}class Kn extends a{constructor(e){super(e),this.onBindingUpdate_=this.onBindingUpdate_.bind(this),this.emitter_=new z,this.controller_.binding.emitter.on("update",this.onBindingUpdate_)}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}on(e,t){const l=t.bind(this);return this.emitter_.on(e,b=>{l(b.event)}),this}refresh(){this.controller_.binding.read()}onBindingUpdate_(e){const t=e.sender.target.read();this.emitter_.emit("update",{event:new h(this,t,this.controller_.binding.target.presetKey)})}}class qe 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 xi(n){return n instanceof _n?n.apiSet_:n instanceof Fe?n.rackApi_.apiSet_:null}function Xt(n,e){const t=n.find(l=>l.controller_===e);if(!t)throw I.shouldNeverHappen();return t}function Ci(n,e,t){if(!O.isBindable(n))throw I.notBindable();return new O(n,e,t)}class _n extends a{constructor(e,t){super(e),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this),this.onRackInputChange_=this.onRackInputChange_.bind(this),this.onRackMonitorUpdate_=this.onRackMonitorUpdate_.bind(this),this.emitter_=new z,this.apiSet_=new vt(xi),this.pool_=t;const l=this.controller_.rack;l.emitter.on("add",this.onRackAdd_),l.emitter.on("remove",this.onRackRemove_),l.emitter.on("inputchange",this.onRackInputChange_),l.emitter.on("monitorupdate",this.onRackMonitorUpdate_),l.children.forEach(b=>{this.setUpApi_(b)})}get children(){return this.controller_.rack.children.map(e=>Xt(this.apiSet_,e))}addInput(e,t,l){const b=l??{},P=this.controller_.view.element.ownerDocument,A=this.pool_.createInput(P,Ci(e,t,b.presetKey),b),U=new Rn(A);return this.add(U,b.index)}addMonitor(e,t,l){const b=l??{},P=this.controller_.view.element.ownerDocument,A=this.pool_.createMonitor(P,Ci(e,t),b),U=new Kn(A);return this.add(U,b.index)}addFolder(e){return vs(this,e)}addButton(e){return fs(this,e)}addSeparator(e){return bs(this,e)}addTab(e){return Gn(this,e)}add(e,t){this.controller_.rack.add(e.controller_,t);const l=this.apiSet_.find(b=>b.controller_===e.controller_);return l&&this.apiSet_.remove(l),this.apiSet_.add(e),e}remove(e){this.controller_.rack.remove(e.controller_)}addBlade(e){const t=this.controller_.view.element.ownerDocument,l=this.pool_.createBlade(t,e),b=this.pool_.createBladeApi(l);return this.add(b,e.index)}on(e,t){const l=t.bind(this);return this.emitter_.on(e,b=>{l(b.event)}),this}setUpApi_(e){this.apiSet_.find(l=>l.controller_===e)||this.apiSet_.add(this.pool_.createBladeApi(e))}onRackAdd_(e){this.setUpApi_(e.bladeController)}onRackRemove_(e){if(e.isRoot){const t=Xt(this.apiSet_,e.bladeController);this.apiSet_.remove(t)}}onRackInputChange_(e){const t=e.bladeController;if(t instanceof Ee){const l=Xt(this.apiSet_,t),b=t.binding;this.emitter_.emit("change",{event:new u(l,b.target.read(),b.target.presetKey,e.options.last)})}else if(t instanceof ie){const l=Xt(this.apiSet_,t);this.emitter_.emit("change",{event:new u(l,t.value.rawValue,void 0,e.options.last)})}}onRackMonitorUpdate_(e){if(!(e.bladeController instanceof qe))throw I.shouldNeverHappen();const t=Xt(this.apiSet_,e.bladeController),l=e.bladeController.binding;this.emitter_.emit("update",{event:new h(t,l.target.read(),l.target.presetKey)})}}class $n extends Fe{constructor(e,t){super(e,new _n(e.rackController,t)),this.emitter_=new z,this.controller_.foldable.value("expanded").emitter.on("change",l=>{this.emitter_.emit("fold",{event:new m(this,l.sender.rawValue)})}),this.rackApi_.on("change",l=>{this.emitter_.emit("change",{event:l})}),this.rackApi_.on("update",l=>{this.emitter_.emit("update",{event:l})})}get expanded(){return this.controller_.foldable.get("expanded")}set expanded(e){this.controller_.foldable.set("expanded",e)}get title(){return this.controller_.props.get("title")}set title(e){this.controller_.props.set("title",e)}get children(){return this.rackApi_.children}addInput(e,t,l){return this.rackApi_.addInput(e,t,l)}addMonitor(e,t,l){return this.rackApi_.addMonitor(e,t,l)}addFolder(e){return this.rackApi_.addFolder(e)}addButton(e){return this.rackApi_.addButton(e)}addSeparator(e){return this.rackApi_.addSeparator(e)}addTab(e){return this.rackApi_.addTab(e)}add(e,t){return this.rackApi_.add(e,t)}remove(e){this.rackApi_.remove(e)}addBlade(e){return this.rackApi_.addBlade(e)}on(e,t){const l=t.bind(this);return this.emitter_.on(e,b=>{l(b.event)}),this}}class Xn extends dt{constructor(e){super({blade:e.blade,view:e.view,viewProps:e.rackController.viewProps}),this.rackController=e.rackController}}class gs{constructor(e,t){const l=N(t.viewName);this.element=e.createElement("div"),this.element.classList.add(l()),t.viewProps.bindClassModifiers(this.element)}}function _s(n,e){for(let t=0;t<n.length;t++){const l=n[t];if(l instanceof Ee&&l.binding===e)return l}return null}function ws(n,e){for(let t=0;t<n.length;t++){const l=n[t];if(l instanceof qe&&l.binding===e)return l}return null}function ys(n,e){for(let t=0;t<n.length;t++){const l=n[t];if(l instanceof ie&&l.value===e)return l}return null}function Yn(n){return n instanceof Yt?n.rack:n instanceof Xn?n.rackController.rack:null}function xs(n){const e=Yn(n);return e?e.bcSet_:null}class Cs{constructor(e){var t,l;this.onBladePositionsChange_=this.onBladePositionsChange_.bind(this),this.onSetAdd_=this.onSetAdd_.bind(this),this.onSetRemove_=this.onSetRemove_.bind(this),this.onChildDispose_=this.onChildDispose_.bind(this),this.onChildPositionsChange_=this.onChildPositionsChange_.bind(this),this.onChildInputChange_=this.onChildInputChange_.bind(this),this.onChildMonitorUpdate_=this.onChildMonitorUpdate_.bind(this),this.onChildValueChange_=this.onChildValueChange_.bind(this),this.onChildViewPropsChange_=this.onChildViewPropsChange_.bind(this),this.onDescendantLayout_=this.onDescendantLayout_.bind(this),this.onDescendantInputChange_=this.onDescendantInputChange_.bind(this),this.onDescendantMonitorUpdate_=this.onDescendantMonitorUpdate_.bind(this),this.emitter=new z,this.blade_=(t=e.blade)!==null&&t!==void 0?t:null,(l=this.blade_)===null||l===void 0||l.value("positions").emitter.on("change",this.onBladePositionsChange_),this.viewProps=e.viewProps,this.bcSet_=new vt(xs),this.bcSet_.emitter.on("add",this.onSetAdd_),this.bcSet_.emitter.on("remove",this.onSetRemove_)}get children(){return this.bcSet_.items}add(e,t){var l;(l=e.parent)===null||l===void 0||l.remove(e),k(e,"parent")?e.parent=this:(e.parent_=this,Ve({key:"parent",target:"BladeController",place:"BladeRack.add"})),this.bcSet_.add(e,t)}remove(e){k(e,"parent")?e.parent=null:(e.parent_=null,Ve({key:"parent",target:"BladeController",place:"BladeRack.remove"})),this.bcSet_.remove(e)}find(e){return this.bcSet_.allItems().filter(t=>t instanceof e)}onSetAdd_(e){this.updatePositions_();const t=e.target===e.root;if(this.emitter.emit("add",{bladeController:e.item,index:e.index,isRoot:t,sender:this}),!t)return;const l=e.item;if(l.viewProps.emitter.on("change",this.onChildViewPropsChange_),l.blade.value("positions").emitter.on("change",this.onChildPositionsChange_),l.viewProps.handleDispose(this.onChildDispose_),l instanceof Ee)l.binding.emitter.on("change",this.onChildInputChange_);else if(l instanceof qe)l.binding.emitter.on("update",this.onChildMonitorUpdate_);else if(l instanceof ie)l.value.emitter.on("change",this.onChildValueChange_);else{const b=Yn(l);if(b){const P=b.emitter;P.on("layout",this.onDescendantLayout_),P.on("inputchange",this.onDescendantInputChange_),P.on("monitorupdate",this.onDescendantMonitorUpdate_)}}}onSetRemove_(e){this.updatePositions_();const t=e.target===e.root;if(this.emitter.emit("remove",{bladeController:e.item,isRoot:t,sender:this}),!t)return;const l=e.item;if(l instanceof Ee)l.binding.emitter.off("change",this.onChildInputChange_);else if(l instanceof qe)l.binding.emitter.off("update",this.onChildMonitorUpdate_);else if(l instanceof ie)l.value.emitter.off("change",this.onChildValueChange_);else{const b=Yn(l);if(b){const P=b.emitter;P.off("layout",this.onDescendantLayout_),P.off("inputchange",this.onDescendantInputChange_),P.off("monitorupdate",this.onDescendantMonitorUpdate_)}}}updatePositions_(){const e=this.bcSet_.items.filter(b=>!b.viewProps.get("hidden")),t=e[0],l=e[e.length-1];this.bcSet_.items.forEach(b=>{const P=[];b===t&&(P.push("first"),(!this.blade_||this.blade_.get("positions").includes("veryfirst"))&&P.push("veryfirst")),b===l&&(P.push("last"),(!this.blade_||this.blade_.get("positions").includes("verylast"))&&P.push("verylast")),b.blade.set("positions",P)})}onChildPositionsChange_(){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildViewPropsChange_(e){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildDispose_(){this.bcSet_.items.filter(t=>t.viewProps.get("disposed")).forEach(t=>{this.bcSet_.remove(t)})}onChildInputChange_(e){const t=_s(this.find(Ee),e.sender);if(!t)throw I.alreadyDisposed();this.emitter.emit("inputchange",{bladeController:t,options:e.options,sender:this})}onChildMonitorUpdate_(e){const t=ws(this.find(qe),e.sender);if(!t)throw I.alreadyDisposed();this.emitter.emit("monitorupdate",{bladeController:t,sender:this})}onChildValueChange_(e){const t=ys(this.find(ie),e.sender);if(!t)throw I.alreadyDisposed();this.emitter.emit("inputchange",{bladeController:t,options:e.options,sender:this})}onDescendantLayout_(e){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onDescendantInputChange_(e){this.emitter.emit("inputchange",{bladeController:e.bladeController,options:e.options,sender:this})}onDescendantMonitorUpdate_(e){this.emitter.emit("monitorupdate",{bladeController:e.bladeController,sender:this})}onBladePositionsChange_(){this.updatePositions_()}}class Yt extends dt{constructor(e,t){super(Object.assign(Object.assign({},t),{view:new gs(e,{viewName:"brk",viewProps:t.viewProps})})),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this);const l=new Cs({blade:t.root?void 0:t.blade,viewProps:t.viewProps});l.emitter.on("add",this.onRackAdd_),l.emitter.on("remove",this.onRackRemove_),this.rack=l,this.viewProps.handleDispose(()=>{for(let b=this.rack.children.length-1;b>=0;b--)this.rack.children[b].viewProps.set("disposed",!0)})}onRackAdd_(e){e.isRoot&&mt(this.view.element,e.bladeController.view.element,e.index)}onRackRemove_(e){e.isRoot&&bn(e.bladeController.view.element)}}const Pi=N("cnt");class Ps{constructor(e,t){var l;this.className_=N((l=t.viewName)!==null&&l!==void 0?l:"fld"),this.element=e.createElement("div"),this.element.classList.add(this.className_(),Pi()),t.viewProps.bindClassModifiers(this.element),this.foldable_=t.foldable,this.foldable_.bindExpandedClass(this.element,this.className_(void 0,"expanded")),F(this.foldable_,"completed",Y(this.element,this.className_(void 0,"cpl")));const b=e.createElement("button");b.classList.add(this.className_("b")),F(t.props,"title",ee=>{w(ee)?this.element.classList.add(this.className_(void 0,"not")):this.element.classList.remove(this.className_(void 0,"not"))}),t.viewProps.bindDisabled(b),this.element.appendChild(b),this.buttonElement=b;const P=e.createElement("div");P.classList.add(this.className_("i")),this.element.appendChild(P);const A=e.createElement("div");A.classList.add(this.className_("t")),Z(t.props.value("title"),A),this.buttonElement.appendChild(A),this.titleElement=A;const U=e.createElement("div");U.classList.add(this.className_("m")),this.buttonElement.appendChild(U);const W=t.containerElement;W.classList.add(this.className_("c")),this.element.appendChild(W),this.containerElement=W}}class wn extends Xn{constructor(e,t){var l;const b=Ie.create((l=t.expanded)!==null&&l!==void 0?l:!0),P=new Yt(e,{blade:t.blade,root:t.root,viewProps:t.viewProps});super(Object.assign(Object.assign({},t),{rackController:P,view:new Ps(e,{containerElement:P.view.element,foldable:b,props:t.props,viewName:t.root?"rot":void 0,viewProps:t.viewProps})})),this.onTitleClick_=this.onTitleClick_.bind(this),this.props=t.props,this.foldable=b,Ne(this.foldable,this.view.containerElement),this.rackController.rack.emitter.on("add",()=>{this.foldable.cleanUpTransition()}),this.rackController.rack.emitter.on("remove",()=>{this.foldable.cleanUpTransition()}),this.view.buttonElement.addEventListener("click",this.onTitleClick_)}get document(){return this.view.element.ownerDocument}onTitleClick_(){this.foldable.set("expanded",!this.foldable.get("expanded"))}}const Ms={id:"folder",type:"blade",accept(n){const e=V,t=ce(n,{title:e.required.string,view:e.required.constant("folder"),expanded:e.optional.boolean});return t?{params:t}:null},controller(n){return new wn(n.document,{blade:n.blade,expanded:n.params.expanded,props:q.fromObject({title:n.params.title}),viewProps:n.viewProps})},api(n){return n.controller instanceof wn?new $n(n.controller,n.pool):null}};class kt extends ie{constructor(e,t){const l=t.valueController.viewProps;super(Object.assign(Object.assign({},t),{value:t.valueController.value,view:new D(e,{props:t.props,viewProps:l}),viewProps:l})),this.props=t.props,this.valueController=t.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class Mi extends a{}const qn=N("spr");class ks{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(qn()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("hr");l.classList.add(qn("r")),this.element.appendChild(l)}}class qt extends dt{constructor(e,t){super(Object.assign(Object.assign({},t),{view:new ks(e,{viewProps:t.viewProps})}))}}const Ss={id:"separator",type:"blade",accept(n){const t=ce(n,{view:V.required.constant("separator")});return t?{params:t}:null},controller(n){return new qt(n.document,{blade:n.blade,viewProps:n.viewProps})},api(n){return n.controller instanceof qt?new Mi(n.controller):null}},Le=N("tbi");class Ls{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Le()),t.viewProps.bindClassModifiers(this.element),F(t.props,"selected",P=>{P?this.element.classList.add(Le(void 0,"sel")):this.element.classList.remove(Le(void 0,"sel"))});const l=e.createElement("button");l.classList.add(Le("b")),t.viewProps.bindDisabled(l),this.element.appendChild(l),this.buttonElement=l;const b=e.createElement("div");b.classList.add(Le("t")),Z(t.props.value("title"),b),this.buttonElement.appendChild(b),this.titleElement=b}}class yn{constructor(e,t){this.emitter=new z,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new Ls(e,{props:t.props,viewProps:t.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class ki{constructor(e,t){this.onItemClick_=this.onItemClick_.bind(this),this.ic_=new yn(e,{props:t.itemProps,viewProps:Ge.create()}),this.ic_.emitter.on("click",this.onItemClick_),this.cc_=new Yt(e,{blade:ye(),viewProps:Ge.create()}),this.props=t.props,F(this.props,"selected",l=>{this.itemController.props.set("selected",l),this.contentController.viewProps.set("hidden",!l)})}get itemController(){return this.ic_}get contentController(){return this.cc_}onItemClick_(){this.props.set("selected",!0)}}class Qn{constructor(e,t){this.controller_=e,this.rackApi_=t}get title(){var e;return(e=this.controller_.itemController.props.get("title"))!==null&&e!==void 0?e:""}set title(e){this.controller_.itemController.props.set("title",e)}get selected(){return this.controller_.props.get("selected")}set selected(e){this.controller_.props.set("selected",e)}get children(){return this.rackApi_.children}addButton(e){return this.rackApi_.addButton(e)}addFolder(e){return this.rackApi_.addFolder(e)}addSeparator(e){return this.rackApi_.addSeparator(e)}addTab(e){return this.rackApi_.addTab(e)}add(e,t){this.rackApi_.add(e,t)}remove(e){this.rackApi_.remove(e)}addInput(e,t,l){return this.rackApi_.addInput(e,t,l)}addMonitor(e,t,l){return this.rackApi_.addMonitor(e,t,l)}addBlade(e){return this.rackApi_.addBlade(e)}}class Si extends Fe{constructor(e,t){super(e,new _n(e.rackController,t)),this.onPageAdd_=this.onPageAdd_.bind(this),this.onPageRemove_=this.onPageRemove_.bind(this),this.onSelect_=this.onSelect_.bind(this),this.emitter_=new z,this.pageApiMap_=new Map,this.rackApi_.on("change",l=>{this.emitter_.emit("change",{event:l})}),this.rackApi_.on("update",l=>{this.emitter_.emit("update",{event:l})}),this.controller_.tab.selectedIndex.emitter.on("change",this.onSelect_),this.controller_.pageSet.emitter.on("add",this.onPageAdd_),this.controller_.pageSet.emitter.on("remove",this.onPageRemove_),this.controller_.pageSet.items.forEach(l=>{this.setUpPageApi_(l)})}get pages(){return this.controller_.pageSet.items.map(e=>{const t=this.pageApiMap_.get(e);if(!t)throw I.shouldNeverHappen();return t})}addPage(e){const t=this.controller_.view.element.ownerDocument,l=new ki(t,{itemProps:q.fromObject({selected:!1,title:e.title}),props:q.fromObject({selected:!1})});this.controller_.add(l,e.index);const b=this.pageApiMap_.get(l);if(!b)throw I.shouldNeverHappen();return b}removePage(e){this.controller_.remove(e)}on(e,t){const l=t.bind(this);return this.emitter_.on(e,b=>{l(b.event)}),this}setUpPageApi_(e){const t=this.rackApi_.apiSet_.find(b=>b.controller_===e.contentController);if(!t)throw I.shouldNeverHappen();const l=new Qn(e,t);this.pageApiMap_.set(e,l)}onPageAdd_(e){this.setUpPageApi_(e.item)}onPageRemove_(e){if(!this.pageApiMap_.get(e.item))throw I.shouldNeverHappen();this.pageApiMap_.delete(e.item)}onSelect_(e){this.emitter_.emit("select",{event:new _(this,e.rawValue)})}}const Li=-1;class As{constructor(){this.onItemSelectedChange_=this.onItemSelectedChange_.bind(this),this.empty=te(!0),this.selectedIndex=te(Li),this.items_=[]}add(e,t){const l=t??this.items_.length;this.items_.splice(l,0,e),e.emitter.on("change",this.onItemSelectedChange_),this.keepSelection_()}remove(e){const t=this.items_.indexOf(e);t<0||(this.items_.splice(t,1),e.emitter.off("change",this.onItemSelectedChange_),this.keepSelection_())}keepSelection_(){if(this.items_.length===0){this.selectedIndex.rawValue=Li,this.empty.rawValue=!0;return}const e=this.items_.findIndex(t=>t.rawValue);e<0?(this.items_.forEach((t,l)=>{t.rawValue=l===0}),this.selectedIndex.rawValue=0):(this.items_.forEach((t,l)=>{t.rawValue=l===e}),this.selectedIndex.rawValue=e),this.empty.rawValue=!1}onItemSelectedChange_(e){if(e.rawValue){const t=this.items_.findIndex(l=>l===e.sender);this.items_.forEach((l,b)=>{l.rawValue=b===t}),this.selectedIndex.rawValue=t}else this.keepSelection_()}}const St=N("tab");class Lt{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(St(),Pi()),t.viewProps.bindClassModifiers(this.element),j(t.empty,Y(this.element,St(void 0,"nop")));const l=e.createElement("div");l.classList.add(St("t")),this.element.appendChild(l),this.itemsElement=l;const b=e.createElement("div");b.classList.add(St("i")),this.element.appendChild(b);const P=t.contentsElement;P.classList.add(St("c")),this.element.appendChild(P),this.contentsElement=P}}class Qt extends Xn{constructor(e,t){const l=new Yt(e,{blade:t.blade,viewProps:t.viewProps}),b=new As;super({blade:t.blade,rackController:l,view:new Lt(e,{contentsElement:l.view.element,empty:b.empty,viewProps:t.viewProps})}),this.onPageAdd_=this.onPageAdd_.bind(this),this.onPageRemove_=this.onPageRemove_.bind(this),this.pageSet_=new vt(()=>null),this.pageSet_.emitter.on("add",this.onPageAdd_),this.pageSet_.emitter.on("remove",this.onPageRemove_),this.tab=b}get pageSet(){return this.pageSet_}add(e,t){this.pageSet_.add(e,t)}remove(e){this.pageSet_.remove(this.pageSet_.items[e])}onPageAdd_(e){const t=e.item;mt(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;bn(t.itemController.view.element),t.itemController.viewProps.set("parent",null),this.rackController.rack.remove(t.contentController),this.tab.remove(t.props.value("selected"))}}const Zn={id:"tab",type:"blade",accept(n){const e=V,t=ce(n,{pages:e.required.array(e.required.object({title:e.required.string})),view:e.required.constant("tab")});return!t||t.pages.length===0?null:{params:t}},controller(n){const e=new Qt(n.document,{blade:n.blade,viewProps:n.viewProps});return n.params.pages.forEach(t=>{const l=new ki(n.document,{itemProps:q.fromObject({selected:!1,title:t.title}),props:q.fromObject({selected:!1})});e.add(l)}),e},api(n){return n.controller instanceof Qt?new Si(n.controller,n.pool):null}};function Vs(n,e){const t=n.accept(e.params);if(!t)return null;const l=V.optional.boolean(e.params.disabled).value,b=V.optional.boolean(e.params.hidden).value;return n.controller({blade:ye(),document:e.document,params:Object.assign(Object.assign({},t.params),{disabled:l,hidden:b}),viewProps:Ge.create({disabled:l,hidden:b})})}class Ai{constructor(){this.disabled=!1,this.emitter=new z}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class Wn{constructor(e,t){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=e,this.emitter=new z,this.interval_=t,this.setTimer_()}get disabled(){return this.disabled_}set disabled(e){this.disabled_=e,this.disabled_?this.clearTimer_():this.setTimer_()}dispose(){this.clearTimer_()}clearTimer_(){if(this.timerId_===null)return;const e=this.doc_.defaultView;e&&e.clearInterval(this.timerId_),this.timerId_=null}setTimer_(){if(this.clearTimer_(),this.interval_<=0)return;const e=this.doc_.defaultView;e&&(this.timerId_=e.setInterval(this.onTick_,this.interval_))}onTick_(){this.disabled_||this.emitter.emit("tick",{sender:this})}}class at{constructor(e){this.constraints=e}constrain(e){return this.constraints.reduce((t,l)=>l.constrain(t),e)}}function _e(n,e){if(n instanceof e)return n;if(n instanceof at){const t=n.constraints.reduce((l,b)=>l||(b instanceof e?b:null),null);if(t)return t}return null}class bt{constructor(e){this.values=q.fromObject({max:e.max,min:e.min})}constrain(e){const t=this.values.get("max"),l=this.values.get("min");return Math.min(Math.max(e,l),t)}}class Qe{constructor(e){this.values=q.fromObject({options:e})}get options(){return this.values.get("options")}constrain(e){const t=this.values.get("options");return t.length===0||t.filter(b=>b.value===e).length>0?e:t[0].value}}class je{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"),l=this.values.get("min");let b=e;return w(l)||(b=Math.max(b,l)),w(t)||(b=Math.min(b,t)),b}}class xn{constructor(e,t=0){this.step=e,this.origin=t}constrain(e){const t=this.origin%this.step,l=Math.round((e-t)/this.step);return t+l*this.step}}const Jn=N("lst");class Hn{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.props_=t.props,this.element=e.createElement("div"),this.element.classList.add(Jn()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("select");l.classList.add(Jn("s")),F(this.props_,"options",P=>{Kt(l),P.forEach((A,U)=>{const W=e.createElement("option");W.dataset.index=String(U),W.textContent=A.text,W.value=String(A.value),l.appendChild(W)})}),t.viewProps.bindDisabled(l),this.element.appendChild(l),this.selectElement=l;const b=e.createElement("div");b.classList.add(Jn("m")),b.appendChild(rt(e,"dropdown")),this.element.appendChild(b),t.value.emitter.on("change",this.onValueChange_),this.value_=t.value,this.update_()}update_(){this.selectElement.value=String(this.value_.rawValue)}onValueChange_(){this.update_()}}class Zt{constructor(e,t){this.onSelectChange_=this.onSelectChange_.bind(this),this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.view=new Hn(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.view.selectElement.addEventListener("change",this.onSelectChange_)}onSelectChange_(e){const l=e.currentTarget.selectedOptions.item(0);if(!l)return;const b=Number(l.dataset.index);this.value.rawValue=this.props.get("options")[b].value}}const Vi=N("pop");class Ii{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Vi()),t.viewProps.bindClassModifiers(this.element),j(t.shows,Y(this.element,Vi(void 0,"v")))}}class Di{constructor(e,t){this.shows=te(!1),this.viewProps=t.viewProps,this.view=new Ii(e,{shows:this.shows,viewProps:this.viewProps})}}const Wt=N("txt");class Ti{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(Wt()),t.viewProps.bindClassModifiers(this.element),this.props_=t.props,this.props_.emitter.on("change",this.onChange_);const l=e.createElement("input");l.classList.add(Wt("i")),l.type="text",t.viewProps.bindDisabled(l),this.element.appendChild(l),this.inputElement=l,t.value.emitter.on("change",this.onChange_),this.value_=t.value,this.refresh()}refresh(){const e=this.props_.get("formatter");this.inputElement.value=e(this.value_.rawValue)}onChange_(){this.refresh()}}class Cn{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 Ti(e,{props:t.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(e){const l=e.currentTarget.value,b=this.parser_(l);w(b)||(this.value.rawValue=b),this.view.refresh()}}function Is(n){return String(n)}function Oi(n){return n==="false"?!1:!!n}function Ei(n){return Is(n)}class Ds{constructor(e){this.text=e}evaluate(){return Number(this.text)}toString(){return this.text}}const Ts={"**":(n,e)=>Math.pow(n,e),"*":(n,e)=>n*e,"/":(n,e)=>n/e,"%":(n,e)=>n%e,"+":(n,e)=>n+e,"-":(n,e)=>n-e,"<<":(n,e)=>n<<e,">>":(n,e)=>n>>e,">>>":(n,e)=>n>>>e,"&":(n,e)=>n&e,"^":(n,e)=>n^e,"|":(n,e)=>n|e};class Os{constructor(e,t,l){this.left=t,this.operator=e,this.right=l}evaluate(){const e=Ts[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 Es={"+":n=>n,"-":n=>-n,"~":n=>~n};class Bs{constructor(e,t){this.operator=e,this.expression=t}evaluate(){const e=Es[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 ei(n){return(e,t)=>{for(let l=0;l<n.length;l++){const b=n[l](e,t);if(b!=="")return b}return""}}function Jt(n,e){var t;const l=n.substr(e).match(/^\s+/);return(t=l&&l[0])!==null&&t!==void 0?t:""}function Ns(n,e){const t=n.substr(e,1);return t.match(/^[1-9]$/)?t:""}function Ht(n,e){var t;const l=n.substr(e).match(/^[0-9]+/);return(t=l&&l[0])!==null&&t!==void 0?t:""}function Bi(n,e){const t=Ht(n,e);if(t!=="")return t;const l=n.substr(e,1);if(e+=1,l!=="-"&&l!=="+")return"";const b=Ht(n,e);return b===""?"":l+b}function ti(n,e){const t=n.substr(e,1);if(e+=1,t.toLowerCase()!=="e")return"";const l=Bi(n,e);return l===""?"":t+l}function Ni(n,e){const t=n.substr(e,1);if(t==="0")return t;const l=Ns(n,e);return e+=l.length,l===""?"":l+Ht(n,e)}function ni(n,e){const t=Ni(n,e);if(e+=t.length,t==="")return"";const l=n.substr(e,1);if(e+=l.length,l!==".")return"";const b=Ht(n,e);return e+=b.length,t+l+b+ti(n,e)}function Fs(n,e){const t=n.substr(e,1);if(e+=t.length,t!==".")return"";const l=Ht(n,e);return e+=l.length,l===""?"":t+l+ti(n,e)}function js(n,e){const t=Ni(n,e);return e+=t.length,t===""?"":t+ti(n,e)}const zs=ei([ni,Fs,js]);function lt(n,e){var t;const l=n.substr(e).match(/^[01]+/);return(t=l&&l[0])!==null&&t!==void 0?t:""}function Us(n,e){const t=n.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0b")return"";const l=lt(n,e);return l===""?"":t+l}function Gs(n,e){var t;const l=n.substr(e).match(/^[0-7]+/);return(t=l&&l[0])!==null&&t!==void 0?t:""}function Fi(n,e){const t=n.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0o")return"";const l=Gs(n,e);return l===""?"":t+l}function Rs(n,e){var t;const l=n.substr(e).match(/^[0-9a-f]+/i);return(t=l&&l[0])!==null&&t!==void 0?t:""}function ji(n,e){const t=n.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0x")return"";const l=Rs(n,e);return l===""?"":t+l}const ii=ei([Us,Fi,ji]),Ks=ei([ii,zs]);function zi(n,e){const t=Ks(n,e);return e+=t.length,t===""?null:{evaluable:new Ds(t),cursor:e}}function Re(n,e){const t=n.substr(e,1);if(e+=t.length,t!=="(")return null;const l=Pn(n,e);if(!l)return null;e=l.cursor,e+=Jt(n,e).length;const b=n.substr(e,1);return e+=b.length,b!==")"?null:{evaluable:l.evaluable,cursor:e}}function $s(n,e){var t;return(t=zi(n,e))!==null&&t!==void 0?t:Re(n,e)}function Ui(n,e){const t=$s(n,e);if(t)return t;const l=n.substr(e,1);if(e+=l.length,l!=="+"&&l!=="-"&&l!=="~")return null;const b=Ui(n,e);return b?(e=b.cursor,{cursor:e,evaluable:new Bs(l,b.evaluable)}):null}function si(n,e,t){t+=Jt(e,t).length;const l=n.filter(b=>e.startsWith(b,t))[0];return l?(t+=l.length,t+=Jt(e,t).length,{cursor:t,operator:l}):null}function Xs(n,e){return(t,l)=>{const b=n(t,l);if(!b)return null;l=b.cursor;let P=b.evaluable;for(;;){const A=si(e,t,l);if(!A)break;l=A.cursor;const U=n(t,l);if(!U)return null;l=U.cursor,P=new Os(A.operator,P,U.evaluable)}return P?{cursor:l,evaluable:P}:null}}const ct=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((n,e)=>Xs(n,e),Ui);function Pn(n,e){return e+=Jt(n,e).length,ct(n,e)}function Ys(n){const e=Pn(n,0);return!e||e.cursor+Jt(n,e.cursor).length!==n.length?null:e.evaluable}function Ze(n){var e;const t=Ys(n);return(e=t==null?void 0:t.evaluate())!==null&&e!==void 0?e:null}function Gi(n){if(typeof n=="number")return n;if(typeof n=="string"){const e=Ze(n);if(!w(e))return e}return 0}function gt(n){return String(n)}function Ae(n){return e=>e.toFixed(Math.max(Math.min(n,20),0))}const ri=Ae(0);function en(n){return ri(n)+"%"}function oi(n){return String(n)}function We(n){return n}function Ri(n,e){for(;n.length<e;)n.push(void 0)}function Ki(n){const e=[];return Ri(e,n),te(e)}function $i(n){const e=n.indexOf(void 0);return e<0?n:n.slice(0,e)}function Xi(n,e){const t=[...$i(n),e];return t.length>n.length?t.splice(0,t.length-n.length):Ri(t,n.length),t}function At({primary:n,secondary:e,forward:t,backward:l}){let b=!1;function P(A){b||(b=!0,A(),b=!1)}n.emitter.on("change",A=>{P(()=>{e.setRawValue(t(n,e),A.options)})}),e.emitter.on("change",A=>{P(()=>{n.setRawValue(l(n,e),A.options)}),P(()=>{e.setRawValue(t(n,e),A.options)})}),P(()=>{e.setRawValue(t(n,e),{forceEmit:!1,last:!0})})}function Se(n,e){const t=n*(e.altKey?.1:1)*(e.shiftKey?10:1);return e.upKey?+t:e.downKey?-t:0}function Vt(n){return{altKey:n.altKey,downKey:n.key==="ArrowDown",shiftKey:n.shiftKey,upKey:n.key==="ArrowUp"}}function Ke(n){return{altKey:n.altKey,downKey:n.key==="ArrowLeft",shiftKey:n.shiftKey,upKey:n.key==="ArrowRight"}}function qs(n){return n==="ArrowUp"||n==="ArrowDown"}function ai(n){return qs(n)||n==="ArrowLeft"||n==="ArrowRight"}function Mn(n,e){var t,l;const b=e.ownerDocument.defaultView,P=e.getBoundingClientRect();return{x:n.pageX-(((t=b&&b.scrollX)!==null&&t!==void 0?t:0)+P.left),y:n.pageY-(((l=b&&b.scrollY)!==null&&l!==void 0?l:0)+P.top)}}class it{constructor(e){this.lastTouch_=null,this.onDocumentMouseMove_=this.onDocumentMouseMove_.bind(this),this.onDocumentMouseUp_=this.onDocumentMouseUp_.bind(this),this.onMouseDown_=this.onMouseDown_.bind(this),this.onTouchEnd_=this.onTouchEnd_.bind(this),this.onTouchMove_=this.onTouchMove_.bind(this),this.onTouchStart_=this.onTouchStart_.bind(this),this.elem_=e,this.emitter=new z,e.addEventListener("touchstart",this.onTouchStart_,{passive:!1}),e.addEventListener("touchmove",this.onTouchMove_,{passive:!0}),e.addEventListener("touchend",this.onTouchEnd_),e.addEventListener("mousedown",this.onMouseDown_)}computePosition_(e){const t=this.elem_.getBoundingClientRect();return{bounds:{width:t.width,height:t.height},point:e?{x:e.x,y:e.y}:null}}onMouseDown_(e){var t;e.preventDefault(),(t=e.currentTarget)===null||t===void 0||t.focus();const l=this.elem_.ownerDocument;l.addEventListener("mousemove",this.onDocumentMouseMove_),l.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(Mn(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onDocumentMouseMove_(e){this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(Mn(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_(Mn(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onTouchStart_(e){e.preventDefault();const t=e.targetTouches.item(0),l=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(t?{x:t.clientX-l.left,y:t.clientY-l.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=t}onTouchMove_(e){const t=e.targetTouches.item(0),l=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(t?{x:t.clientX-l.left,y:t.clientY-l.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=t}onTouchEnd_(e){var t;const l=(t=e.targetTouches.item(0))!==null&&t!==void 0?t:this.lastTouch_,b=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:e.altKey,data:this.computePosition_(l?{x:l.clientX-b.left,y:l.clientY-b.top}:void 0),sender:this,shiftKey:e.shiftKey})}}function xe(n,e,t,l,b){const P=(n-e)/(t-e);return l+P*(b-l)}function Yi(n){return String(n.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function Me(n,e,t){return Math.min(Math.max(n,e),t)}function li(n,e){return(n%e+e)%e}const ze=N("txt");class tn{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.props_=t.props,this.props_.emitter.on("change",this.onChange_),this.element=e.createElement("div"),this.element.classList.add(ze(),ze(void 0,"num")),t.arrayPosition&&this.element.classList.add(ze(void 0,t.arrayPosition)),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("input");l.classList.add(ze("i")),l.type="text",t.viewProps.bindDisabled(l),this.element.appendChild(l),this.inputElement=l,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=t.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add(ze()),this.inputElement.classList.add(ze("i"));const b=e.createElement("div");b.classList.add(ze("k")),this.element.appendChild(b),this.knobElement=b;const P=e.createElementNS(Be,"svg");P.classList.add(ze("g")),this.knobElement.appendChild(P);const A=e.createElementNS(Be,"path");A.classList.add(ze("gb")),P.appendChild(A),this.guideBodyElem_=A;const U=e.createElementNS(Be,"path");U.classList.add(ze("gh")),P.appendChild(U),this.guideHeadElem_=U;const W=e.createElement("div");W.classList.add(N("tt")()),this.knobElement.appendChild(W),this.tooltipElem_=W,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.refresh()}onDraggingChange_(e){if(e.rawValue===null){this.element.classList.remove(ze(void 0,"drg"));return}this.element.classList.add(ze(void 0,"drg"));const t=e.rawValue/this.props_.get("draggingScale"),l=t+(t>0?-1:t<0?1:0),b=Me(-l,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${l+b},0 L${l},4 L${l+b},8`,`M ${t},-1 L${t},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${t},4`);const P=this.props_.get("formatter");this.tooltipElem_.textContent=P(this.value.rawValue),this.tooltipElem_.style.left=`${t}px`}refresh(){const e=this.props_.get("formatter");this.inputElement.value=e(this.value.rawValue)}onChange_(){this.refresh()}}class It{constructor(e,t){var l;this.originRawValue_=0,this.onInputChange_=this.onInputChange_.bind(this),this.onInputKeyDown_=this.onInputKeyDown_.bind(this),this.onInputKeyUp_=this.onInputKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=t.baseStep,this.parser_=t.parser,this.props=t.props,this.sliderProps_=(l=t.sliderProps)!==null&&l!==void 0?l:null,this.value=t.value,this.viewProps=t.viewProps,this.dragging_=te(null),this.view=new tn(e,{arrayPosition:t.arrayPosition,dragging:this.dragging_,props:this.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.inputElement.addEventListener("keydown",this.onInputKeyDown_),this.view.inputElement.addEventListener("keyup",this.onInputKeyUp_);const b=new it(this.view.knobElement);b.emitter.on("down",this.onPointerDown_),b.emitter.on("move",this.onPointerMove_),b.emitter.on("up",this.onPointerUp_)}constrainValue_(e){var t,l;const b=(t=this.sliderProps_)===null||t===void 0?void 0:t.get("minValue"),P=(l=this.sliderProps_)===null||l===void 0?void 0:l.get("maxValue");let A=e;return b!==void 0&&(A=Math.max(A,b)),P!==void 0&&(A=Math.min(A,P)),A}onInputChange_(e){const l=e.currentTarget.value,b=this.parser_(l);w(b)||(this.value.rawValue=this.constrainValue_(b)),this.view.refresh()}onInputKeyDown_(e){const t=Se(this.baseStep_,Vt(e));t!==0&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+t),{forceEmit:!1,last:!1})}onInputKeyUp_(e){Se(this.baseStep_,Vt(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 nn=N("sld");class Qs{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(nn()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("div");l.classList.add(nn("t")),t.viewProps.bindTabIndex(l),this.element.appendChild(l),this.trackElement=l;const b=e.createElement("div");b.classList.add(nn("k")),this.trackElement.appendChild(b),this.knobElement=b,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.update_()}update_(){const e=Me(xe(this.value.rawValue,this.props_.get("minValue"),this.props_.get("maxValue"),0,100),0,100);this.knobElement.style.width=`${e}%`}onChange_(){this.update_()}}class Zs{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 Qs(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new it(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(xe(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=Se(this.baseStep_,Ke(e));t!==0&&this.value.setRawValue(this.value.rawValue+t,{forceEmit:!1,last:!1})}onKeyUp_(e){Se(this.baseStep_,Ke(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const Te=N("sldtxt");class ci{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Te());const l=e.createElement("div");l.classList.add(Te("s")),this.sliderView_=t.sliderView,l.appendChild(this.sliderView_.element),this.element.appendChild(l);const b=e.createElement("div");b.classList.add(Te("t")),this.textView_=t.textView,b.appendChild(this.textView_.element),this.element.appendChild(b)}}class sn{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.sliderC_=new Zs(e,{baseStep:t.baseStep,props:t.sliderProps,value:t.value,viewProps:this.viewProps}),this.textC_=new It(e,{baseStep:t.baseStep,parser:t.parser,props:t.textProps,sliderProps:t.sliderProps,value:t.value,viewProps:t.viewProps}),this.view=new ci(e,{sliderView:this.sliderC_.view,textView:this.textC_.view})}get sliderController(){return this.sliderC_}get textController(){return this.textC_}}function _t(n,e){n.write(e)}function rn(n){const e=V;if(Array.isArray(n))return e.required.array(e.required.object({text:e.required.string,value:e.required.raw}))(n).value;if(typeof n=="object")return e.required.raw(n).value}function pt(n){if(n==="inline"||n==="popup")return n}function st(n){const e=V;return e.required.object({max:e.optional.number,min:e.optional.number,step:e.optional.number})(n).value}function pi(n){if(Array.isArray(n))return n;const e=[];return Object.keys(n).forEach(t=>{e.push({text:t,value:n[t]})}),e}function kn(n){return w(n)?null:new Qe(pi(n))}function Ws(n){const e=n?_e(n,xn):null;return e?e.step:null}function Sn(n,e){const t=n&&_e(n,xn);return t?Yi(t.step):Math.max(Yi(e),2)}function Dt(n){const e=Ws(n);return e??1}function Tt(n,e){var t;const l=n&&_e(n,xn),b=Math.abs((t=l==null?void 0:l.step)!==null&&t!==void 0?t:e);return b===0?.1:Math.pow(10,Math.floor(Math.log10(b))-1)}const on=N("ckb");class qi{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(on()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("label");l.classList.add(on("l")),this.element.appendChild(l);const b=e.createElement("input");b.classList.add(on("i")),b.type="checkbox",l.appendChild(b),this.inputElement=b,t.viewProps.bindDisabled(this.inputElement);const P=e.createElement("div");P.classList.add(on("w")),l.appendChild(P);const A=rt(e,"check");P.appendChild(A),t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.update_()}update_(){this.inputElement.checked=this.value.rawValue}onValueChange_(){this.update_()}}class Qi{constructor(e,t){this.onInputChange_=this.onInputChange_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new qi(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 an(n){const e=[],t=kn(n.options);return t&&e.push(t),new at(e)}const Zi={id:"input-bool",type:"input",accept:(n,e)=>{if(typeof n!="boolean")return null;const l=ce(e,{options:V.optional.custom(rn)});return l?{initialValue:n,params:l}:null},binding:{reader:n=>Oi,constraint:n=>an(n.params),writer:n=>_t},controller:n=>{const e=n.document,t=n.value,l=n.constraint,b=l&&_e(l,Qe);return b?new Zt(e,{props:new q({options:b.values.value("options")}),value:t,viewProps:n.viewProps}):new Qi(e,{value:t,viewProps:n.viewProps})}},ut=N("col");class Ln{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(ut()),t.foldable.bindExpandedClass(this.element,ut(void 0,"expanded")),F(t.foldable,"completed",Y(this.element,ut(void 0,"cpl")));const l=e.createElement("div");l.classList.add(ut("h")),this.element.appendChild(l);const b=e.createElement("div");b.classList.add(ut("s")),l.appendChild(b),this.swatchElement=b;const P=e.createElement("div");if(P.classList.add(ut("t")),l.appendChild(P),this.textElement=P,t.pickerLayout==="inline"){const A=e.createElement("div");A.classList.add(ut("p")),this.element.appendChild(A),this.pickerElement=A}else this.pickerElement=null}}function Js(n,e,t){const l=Me(n/255,0,1),b=Me(e/255,0,1),P=Me(t/255,0,1),A=Math.max(l,b,P),U=Math.min(l,b,P),W=A-U;let ee=0,de=0;const ve=(U+A)/2;return W!==0&&(de=W/(1-Math.abs(A+U-1)),l===A?ee=(b-P)/W:b===A?ee=2+(P-l)/W:ee=4+(l-b)/W,ee=ee/6+(ee<0?1:0)),[ee*360,de*100,ve*100]}function ui(n,e,t){const l=(n%360+360)%360,b=Me(e/100,0,1),P=Me(t/100,0,1),A=(1-Math.abs(2*P-1))*b,U=A*(1-Math.abs(l/60%2-1)),W=P-A/2;let ee,de,ve;return l>=0&&l<60?[ee,de,ve]=[A,U,0]:l>=60&&l<120?[ee,de,ve]=[U,A,0]:l>=120&&l<180?[ee,de,ve]=[0,A,U]:l>=180&&l<240?[ee,de,ve]=[0,U,A]:l>=240&&l<300?[ee,de,ve]=[U,0,A]:[ee,de,ve]=[A,0,U],[(ee+W)*255,(de+W)*255,(ve+W)*255]}function Hs(n,e,t){const l=Me(n/255,0,1),b=Me(e/255,0,1),P=Me(t/255,0,1),A=Math.max(l,b,P),U=Math.min(l,b,P),W=A-U;let ee;W===0?ee=0:A===l?ee=60*(((b-P)/W%6+6)%6):A===b?ee=60*((P-l)/W+2):ee=60*((l-b)/W+4);const de=A===0?0:W/A,ve=A;return[ee,de*100,ve*100]}function Wi(n,e,t){const l=li(n,360),b=Me(e/100,0,1),P=Me(t/100,0,1),A=P*b,U=A*(1-Math.abs(l/60%2-1)),W=P-A;let ee,de,ve;return l>=0&&l<60?[ee,de,ve]=[A,U,0]:l>=60&&l<120?[ee,de,ve]=[U,A,0]:l>=120&&l<180?[ee,de,ve]=[0,A,U]:l>=180&&l<240?[ee,de,ve]=[0,U,A]:l>=240&&l<300?[ee,de,ve]=[U,0,A]:[ee,de,ve]=[A,0,U],[(ee+W)*255,(de+W)*255,(ve+W)*255]}function er(n,e,t){const l=t+e*(100-Math.abs(2*t-100))/200;return[n,l!==0?e*(100-Math.abs(2*t-100))/l:0,t+e*(100-Math.abs(2*t-100))/(2*100)]}function tr(n,e,t){const l=100-Math.abs(t*(200-e)/100-100);return[n,l!==0?e*t/l:0,t*(200-e)/(2*100)]}function d(n){return[n[0],n[1],n[2]]}function o(n,e){return[n[0],n[1],n[2],e]}const p={hsl:{hsl:(n,e,t)=>[n,e,t],hsv:er,rgb:ui},hsv:{hsl:tr,hsv:(n,e,t)=>[n,e,t],rgb:Wi},rgb:{hsl:Js,hsv:Hs,rgb:(n,e,t)=>[n,e,t]}};function v(n,e){return[e==="float"?1:n==="rgb"?255:360,e==="float"?1:n==="rgb"?255:100,e==="float"?1:n==="rgb"?255:100]}function C(n,e){return n===e?e:li(n,e)}function L(n,e,t){var l;const b=v(e,t);return[e==="rgb"?Me(n[0],0,b[0]):C(n[0],b[0]),Me(n[1],0,b[1]),Me(n[2],0,b[2]),Me((l=n[3])!==null&&l!==void 0?l:1,0,1)]}function T(n,e,t,l){const b=v(e,t),P=v(e,l);return n.map((A,U)=>A/b[U]*P[U])}function R(n,e,t){const l=T(n,e.mode,e.type,"int"),b=p[e.mode][t.mode](...l);return T(b,t.mode,"int",t.type)}function oe(n,e){return typeof n!="object"||w(n)?!1:e in n&&typeof n[e]=="number"}class J{constructor(e,t,l="int"){this.mode=t,this.type=l,this.comps_=L(e,t,l)}static black(e="int"){return new J([0,0,0],"rgb",e)}static fromObject(e,t="int"){const l="a"in e?[e.r,e.g,e.b,e.a]:[e.r,e.g,e.b];return new J(l,"rgb",t)}static toRgbaObject(e,t="int"){return e.toRgbaObject(t)}static isRgbColorObject(e){return oe(e,"r")&&oe(e,"g")&&oe(e,"b")}static isRgbaColorObject(e){return this.isRgbColorObject(e)&&oe(e,"a")}static isColorObject(e){return this.isRgbColorObject(e)}static equals(e,t){if(e.mode!==t.mode)return!1;const l=e.comps_,b=t.comps_;for(let P=0;P<l.length;P++)if(l[P]!==b[P])return!1;return!0}getComponents(e,t="int"){return o(R(d(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 De=N("colp");class hi{constructor(e,t){this.alphaViews_=null,this.element=e.createElement("div"),this.element.classList.add(De()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("div");l.classList.add(De("hsv"));const b=e.createElement("div");b.classList.add(De("sv")),this.svPaletteView_=t.svPaletteView,b.appendChild(this.svPaletteView_.element),l.appendChild(b);const P=e.createElement("div");P.classList.add(De("h")),this.hPaletteView_=t.hPaletteView,P.appendChild(this.hPaletteView_.element),l.appendChild(P),this.element.appendChild(l);const A=e.createElement("div");if(A.classList.add(De("rgb")),this.textView_=t.textView,A.appendChild(this.textView_.element),this.element.appendChild(A),t.alphaViews){this.alphaViews_={palette:t.alphaViews.palette,text:t.alphaViews.text};const U=e.createElement("div");U.classList.add(De("a"));const W=e.createElement("div");W.classList.add(De("ap")),W.appendChild(this.alphaViews_.palette.element),U.appendChild(W);const ee=e.createElement("div");ee.classList.add(De("at")),ee.appendChild(this.alphaViews_.text.element),U.appendChild(ee),this.element.appendChild(U)}}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 nr(n){return n==="int"?"int":n==="float"?"float":void 0}function di(n){const e=V;return ce(n,{alpha:e.optional.boolean,color:e.optional.object({alpha:e.optional.boolean,type:e.optional.custom(nr)}),expanded:e.optional.boolean,picker:e.optional.custom(pt)})}function ln(n){return n?.1:1}function cn(n){var e;return(e=n.color)===null||e===void 0?void 0:e.type}function Jl(n,e){return n.alpha===e.alpha&&n.mode===e.mode&&n.notation===e.notation&&n.type===e.type}function Je(n,e){const t=n.match(/^(.+)%$/);return Math.min(t?parseFloat(t[1])*.01*e:parseFloat(n),e)}const Hl={deg:n=>n,grad:n=>n*360/400,rad:n=>n*360/(2*Math.PI),turn:n=>n*360};function no(n){const e=n.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);if(!e)return parseFloat(n);const t=parseFloat(e[1]),l=e[2];return Hl[l](t)}function io(n){const e=n.match(/^rgb\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const t=[Je(e[1],255),Je(e[2],255),Je(e[3],255)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function so(n){return e=>{const t=io(e);return t?new J(t,"rgb",n):null}}function ro(n){const e=n.match(/^rgba\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const t=[Je(e[1],255),Je(e[2],255),Je(e[3],255),Je(e[4],1)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function oo(n){return e=>{const t=ro(e);return t?new J(t,"rgb",n):null}}function ao(n){const e=n.match(/^hsl\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const t=[no(e[1]),Je(e[2],100),Je(e[3],100)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function lo(n){return e=>{const t=ao(e);return t?new J(t,"hsl",n):null}}function co(n){const e=n.match(/^hsla\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const t=[no(e[1]),Je(e[2],100),Je(e[3],100),Je(e[4],1)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function po(n){return e=>{const t=co(e);return t?new J(t,"hsl",n):null}}function uo(n){const e=n.match(/^#([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(e)return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)];const t=n.match(/^(?:#|0x)([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:null}function ec(n){const e=uo(n);return e?new J(e,"rgb","int"):null}function ho(n){const e=n.match(/^#?([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(e)return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16),xe(parseInt(e[4]+e[4],16),0,255,0,1)];const t=n.match(/^(?:#|0x)?([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16),xe(parseInt(t[4],16),0,255,0,1)]:null}function tc(n){const e=ho(n);return e?new J(e,"rgb","int"):null}function mo(n){const e=n.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!e)return null;const t=[parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3])];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function fo(n){return e=>{const t=mo(e);return t?new J(t,"rgb",n):null}}function vo(n){const e=n.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*a\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!e)return null;const t=[parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3]),parseFloat(e[4])];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function bo(n){return e=>{const t=vo(e);return t?new J(t,"rgb",n):null}}const nc=[{parser:uo,result:{alpha:!1,mode:"rgb",notation:"hex"}},{parser:ho,result:{alpha:!0,mode:"rgb",notation:"hex"}},{parser:io,result:{alpha:!1,mode:"rgb",notation:"func"}},{parser:ro,result:{alpha:!0,mode:"rgb",notation:"func"}},{parser:ao,result:{alpha:!1,mode:"hsl",notation:"func"}},{parser:co,result:{alpha:!0,mode:"hsl",notation:"func"}},{parser:mo,result:{alpha:!1,mode:"rgb",notation:"object"}},{parser:vo,result:{alpha:!0,mode:"rgb",notation:"object"}}];function ic(n){return nc.reduce((e,{parser:t,result:l})=>e||(t(n)?l:null),null)}function ir(n,e="int"){const t=ic(n);return t?t.notation==="hex"&&e!=="float"?Object.assign(Object.assign({},t),{type:"int"}):t.notation==="func"?Object.assign(Object.assign({},t),{type:e}):null:null}const go={int:[ec,tc,so("int"),oo("int"),lo("int"),po("int"),fo("int"),bo("int")],float:[so("float"),oo("float"),lo("float"),po("float"),fo("float"),bo("float")]};function sc(n){const e=go[n];return t=>{if(typeof t!="string")return J.black(n);const l=e.reduce((b,P)=>b||P(t),null);return l??J.black(n)}}function sr(n){const e=go[n];return t=>e.reduce((l,b)=>l||b(t),null)}function _o(n){const e=Me(Math.floor(n),0,255).toString(16);return e.length===1?`0${e}`:e}function wo(n,e="#"){const t=d(n.getComponents("rgb")).map(_o).join("");return`${e}${t}`}function rr(n,e="#"){const t=n.getComponents("rgb"),l=[t[0],t[1],t[2],t[3]*255].map(_o).join("");return`${e}${l}`}function yo(n,e){const t=Ae(e==="float"?2:0);return`rgb(${d(n.getComponents("rgb",e)).map(b=>t(b)).join(", ")})`}function rc(n){return e=>yo(e,n)}function Ji(n,e){const t=Ae(2),l=Ae(e==="float"?2:0);return`rgba(${n.getComponents("rgb",e).map((P,A)=>(A===3?t:l)(P)).join(", ")})`}function oc(n){return e=>Ji(e,n)}function ac(n){const e=[Ae(0),en,en];return`hsl(${d(n.getComponents("hsl")).map((l,b)=>e[b](l)).join(", ")})`}function lc(n){const e=[Ae(0),en,en,Ae(2)];return`hsla(${n.getComponents("hsl").map((l,b)=>e[b](l)).join(", ")})`}function xo(n,e){const t=Ae(e==="float"?2:0),l=["r","g","b"];return`{${d(n.getComponents("rgb",e)).map((P,A)=>`${l[A]}: ${t(P)}`).join(", ")}}`}function cc(n){return e=>xo(e,n)}function Co(n,e){const t=Ae(2),l=Ae(e==="float"?2:0),b=["r","g","b","a"];return`{${n.getComponents("rgb",e).map((A,U)=>{const W=U===3?t:l;return`${b[U]}: ${W(A)}`}).join(", ")}}`}function pc(n){return e=>Co(e,n)}const uc=[{format:{alpha:!1,mode:"rgb",notation:"hex",type:"int"},stringifier:wo},{format:{alpha:!0,mode:"rgb",notation:"hex",type:"int"},stringifier:rr},{format:{alpha:!1,mode:"hsl",notation:"func",type:"int"},stringifier:ac},{format:{alpha:!0,mode:"hsl",notation:"func",type:"int"},stringifier:lc},...["int","float"].reduce((n,e)=>[...n,{format:{alpha:!1,mode:"rgb",notation:"func",type:e},stringifier:rc(e)},{format:{alpha:!0,mode:"rgb",notation:"func",type:e},stringifier:oc(e)},{format:{alpha:!1,mode:"rgb",notation:"object",type:e},stringifier:cc(e)},{format:{alpha:!0,mode:"rgb",notation:"object",type:e},stringifier:pc(e)}],[])];function or(n){return uc.reduce((e,t)=>e||(Jl(t.format,n)?t.stringifier:null),null)}const mi=N("apl");class hc{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(mi()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);const l=e.createElement("div");l.classList.add(mi("b")),this.element.appendChild(l);const b=e.createElement("div");b.classList.add(mi("c")),l.appendChild(b),this.colorElem_=b;const P=e.createElement("div");P.classList.add(mi("m")),this.element.appendChild(P),this.markerElem_=P;const A=e.createElement("div");A.classList.add(mi("p")),this.markerElem_.appendChild(A),this.previewElem_=A,this.update_()}update_(){const e=this.value.rawValue,t=e.getComponents("rgb"),l=new J([t[0],t[1],t[2],0],"rgb"),b=new J([t[0],t[1],t[2],255],"rgb"),P=["to right",Ji(l),Ji(b)];this.colorElem_.style.background=`linear-gradient(${P.join(",")})`,this.previewElem_.style.backgroundColor=Ji(e);const A=xe(t[3],0,1,0,100);this.markerElem_.style.left=`${A}%`}onValueChange_(){this.update_()}}class dc{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 hc(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new it(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;const l=e.point.x/e.bounds.width,b=this.value.rawValue,[P,A,U]=b.getComponents("hsv");this.value.setRawValue(new J([P,A,U,l],"hsv"),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){const t=Se(ln(!0),Ke(e));if(t===0)return;const l=this.value.rawValue,[b,P,A,U]=l.getComponents("hsv");this.value.setRawValue(new J([b,P,A,U+t],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){Se(ln(!0),Ke(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const An=N("coltxt");function mc(n){const e=n.createElement("select"),t=[{text:"RGB",value:"rgb"},{text:"HSL",value:"hsl"},{text:"HSV",value:"hsv"}];return e.appendChild(t.reduce((l,b)=>{const P=n.createElement("option");return P.textContent=b.text,P.value=b.value,l.appendChild(P),l},n.createDocumentFragment())),e}class fc{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(An()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("div");l.classList.add(An("m")),this.modeElem_=mc(e),this.modeElem_.classList.add(An("ms")),l.appendChild(this.modeSelectElement),t.viewProps.bindDisabled(this.modeElem_);const b=e.createElement("div");b.classList.add(An("mm")),b.appendChild(rt(e,"dropdown")),l.appendChild(b),this.element.appendChild(l);const P=e.createElement("div");P.classList.add(An("w")),this.element.appendChild(P),this.textsElem_=P,this.textViews_=t.textViews,this.applyTextViews_(),j(t.colorMode,A=>{this.modeElem_.value=A})}get modeSelectElement(){return this.modeElem_}get textViews(){return this.textViews_}set textViews(e){this.textViews_=e,this.applyTextViews_()}applyTextViews_(){Kt(this.textsElem_);const e=this.element.ownerDocument;this.textViews_.forEach(t=>{const l=e.createElement("div");l.classList.add(An("c")),l.appendChild(t.element),this.textsElem_.appendChild(l)})}}function vc(n){return Ae(n==="float"?2:0)}function bc(n,e,t){const l=v(n,e)[t];return new bt({min:0,max:l})}function ar(n,e,t){return new It(n,{arrayPosition:t===0?"fst":t===3-1?"lst":"mid",baseStep:ln(!1),parser:e.parser,props:q.fromObject({draggingScale:e.colorType==="float"?.01:1,formatter:vc(e.colorType)}),value:te(0,{constraint:bc(e.colorMode,e.colorType,t)}),viewProps:e.viewProps})}class gc{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 fc(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},l=[ar(e,t,0),ar(e,t,1),ar(e,t,2)];return l.forEach((b,P)=>{At({primary:this.value,secondary:b.value,forward:A=>A.rawValue.getComponents(this.colorMode.rawValue,this.colorType_)[P],backward:(A,U)=>{const W=this.colorMode.rawValue,ee=A.rawValue.getComponents(W,this.colorType_);return ee[P]=U.rawValue,new J(o(d(ee),ee[3]),W,this.colorType_)}})}),l}onModeSelectChange_(e){const t=e.currentTarget;this.colorMode.rawValue=t.value,this.ccs_=this.createComponentControllers_(this.view.element.ownerDocument),this.view.textViews=[this.ccs_[0].view,this.ccs_[1].view,this.ccs_[2].view]}}const lr=N("hpl");class _c{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(lr()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);const l=e.createElement("div");l.classList.add(lr("c")),this.element.appendChild(l);const b=e.createElement("div");b.classList.add(lr("m")),this.element.appendChild(b),this.markerElem_=b,this.update_()}update_(){const e=this.value.rawValue,[t]=e.getComponents("hsv");this.markerElem_.style.backgroundColor=yo(new J([t,100,100],"hsv"));const l=xe(t,0,360,0,100);this.markerElem_.style.left=`${l}%`}onValueChange_(){this.update_()}}class wc{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 _c(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new it(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;const l=xe(Me(e.point.x,0,e.bounds.width),0,e.bounds.width,0,360),b=this.value.rawValue,[,P,A,U]=b.getComponents("hsv");this.value.setRawValue(new J([l,P,A,U],"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=Se(ln(!1),Ke(e));if(t===0)return;const l=this.value.rawValue,[b,P,A,U]=l.getComponents("hsv");this.value.setRawValue(new J([b+t,P,A,U],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){Se(ln(!1),Ke(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const cr=N("svp"),Po=64;class yc{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.value=t.value,this.value.emitter.on("change",this.onValueChange_),this.element=e.createElement("div"),this.element.classList.add(cr()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);const l=e.createElement("canvas");l.height=Po,l.width=Po,l.classList.add(cr("c")),this.element.appendChild(l),this.canvasElement=l;const b=e.createElement("div");b.classList.add(cr("m")),this.element.appendChild(b),this.markerElem_=b,this.update_()}update_(){const e=fn(this.canvasElement);if(!e)return;const l=this.value.rawValue.getComponents("hsv"),b=this.canvasElement.width,P=this.canvasElement.height,A=e.getImageData(0,0,b,P),U=A.data;for(let de=0;de<P;de++)for(let ve=0;ve<b;ve++){const yt=xe(ve,0,b,0,100),vi=xe(de,0,P,100,0),bi=Wi(l[0],yt,vi),Tn=(de*b+ve)*4;U[Tn]=bi[0],U[Tn+1]=bi[1],U[Tn+2]=bi[2],U[Tn+3]=255}e.putImageData(A,0,0);const W=xe(l[1],0,100,0,100);this.markerElem_.style.left=`${W}%`;const ee=xe(l[2],0,100,100,0);this.markerElem_.style.top=`${ee}%`}onValueChange_(){this.update_()}}class xc{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 yc(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new it(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;const l=xe(e.point.x,0,e.bounds.width,0,100),b=xe(e.point.y,0,e.bounds.height,100,0),[P,,,A]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new J([P,l,b,A],"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){ai(e.key)&&e.preventDefault();const[t,l,b,P]=this.value.rawValue.getComponents("hsv"),A=ln(!1),U=Se(A,Ke(e)),W=Se(A,Vt(e));U===0&&W===0||this.value.setRawValue(new J([t,l+U,b+W,P],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){const t=ln(!1),l=Se(t,Ke(e)),b=Se(t,Vt(e));l===0&&b===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class Cc{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.hPaletteC_=new wc(e,{value:this.value,viewProps:this.viewProps}),this.svPaletteC_=new xc(e,{value:this.value,viewProps:this.viewProps}),this.alphaIcs_=t.supportsAlpha?{palette:new dc(e,{value:this.value,viewProps:this.viewProps}),text:new It(e,{parser:Ze,baseStep:.1,props:q.fromObject({draggingScale:.01,formatter:Ae(2)}),value:te(0,{constraint:new bt({min:0,max:1})}),viewProps:this.viewProps})}:null,this.alphaIcs_&&At({primary:this.value,secondary:this.alphaIcs_.text.value,forward:l=>l.rawValue.getComponents()[3],backward:(l,b)=>{const P=l.rawValue.getComponents();return P[3]=b.rawValue,new J(P,l.rawValue.mode)}}),this.textC_=new gc(e,{colorType:t.colorType,parser:Ze,value:this.value,viewProps:this.viewProps}),this.view=new hi(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 pr=N("colsw");class Pc{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(pr()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("div");l.classList.add(pr("sw")),this.element.appendChild(l),this.swatchElem_=l;const b=e.createElement("button");b.classList.add(pr("b")),t.viewProps.bindDisabled(b),this.element.appendChild(b),this.buttonElement=b,this.update_()}update_(){const e=this.value.rawValue;this.swatchElem_.style.backgroundColor=rr(e)}onValueChange_(){this.update_()}}class Mc{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new Pc(e,{value:this.value,viewProps:this.viewProps})}}class ur{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_=Ie.create(t.expanded),this.swatchC_=new Mc(e,{value:this.value,viewProps:this.viewProps});const l=this.swatchC_.view.buttonElement;l.addEventListener("blur",this.onButtonBlur_),l.addEventListener("click",this.onButtonClick_),this.textC_=new Cn(e,{parser:t.parser,props:q.fromObject({formatter:t.formatter}),value:this.value,viewProps:this.viewProps}),this.view=new Ln(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 Di(e,{viewProps:this.viewProps}):null;const b=new Cc(e,{colorType:t.colorType,supportsAlpha:t.supportsAlpha,value:this.value,viewProps:this.viewProps});b.view.allFocusableElements.forEach(P=>{P.addEventListener("blur",this.onPopupChildBlur_),P.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=b,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(b.view.element),At({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),Ne(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onButtonBlur_(e){if(!this.popC_)return;const t=this.view.element,l=e.relatedTarget;(!l||!t.contains(l))&&(this.popC_.shows.rawValue=!1)}onButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(e){if(!this.popC_)return;const t=this.popC_.view.element,l=ot(e);l&&t.contains(l)||l&&l===this.swatchC_.view.buttonElement&&!tt(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 kc(n,e){return J.isColorObject(n)?J.fromObject(n,e):J.black(e)}function Sc(n){return d(n.getComponents("rgb")).reduce((e,t)=>e<<8|Math.floor(t)&255,0)}function Lc(n){return n.getComponents("rgb").reduce((e,t,l)=>{const b=Math.floor(l===3?t*255:t)&255;return e<<8|b},0)>>>0}function Ac(n){return new J([n>>16&255,n>>8&255,n&255],"rgb")}function Vc(n){return new J([n>>24&255,n>>16&255,n>>8&255,xe(n&255,0,255,0,1)],"rgb")}function Ic(n){return typeof n!="number"?J.black():Ac(n)}function Dc(n){return typeof n!="number"?J.black():Vc(n)}function Tc(n){const e=or(n);return e?(t,l)=>{_t(t,e(l))}:null}function Oc(n){const e=n?Lc:Sc;return(t,l)=>{_t(t,e(l))}}function Ec(n,e,t){const l=e.toRgbaObject(t);n.writeProperty("r",l.r),n.writeProperty("g",l.g),n.writeProperty("b",l.b),n.writeProperty("a",l.a)}function Bc(n,e,t){const l=e.toRgbaObject(t);n.writeProperty("r",l.r),n.writeProperty("g",l.g),n.writeProperty("b",l.b)}function Nc(n,e){return(t,l)=>{n?Ec(t,l,e):Bc(t,l,e)}}function hr(n){var e;return!!(n!=null&&n.alpha||!((e=n==null?void 0:n.color)===null||e===void 0)&&e.alpha)}function Fc(n){return n?e=>rr(e,"0x"):e=>wo(e,"0x")}function jc(n){return"color"in n||"view"in n&&n.view==="color"}const zc={id:"input-color-number",type:"input",accept:(n,e)=>{if(typeof n!="number"||!jc(e))return null;const t=di(e);return t?{initialValue:n,params:t}:null},binding:{reader:n=>hr(n.params)?Dc:Ic,equals:J.equals,writer:n=>Oc(hr(n.params))},controller:n=>{const e=hr(n.params),t="expanded"in n.params?n.params.expanded:void 0,l="picker"in n.params?n.params.picker:void 0;return new ur(n.document,{colorType:"int",expanded:t??!1,formatter:Fc(e),parser:sr("int"),pickerLayout:l??"popup",supportsAlpha:e,value:n.value,viewProps:n.viewProps})}};function Uc(n){return J.isRgbaColorObject(n)}function Gc(n){return e=>kc(e,n)}function Rc(n,e){return t=>n?Co(t,e):xo(t,e)}const Kc={id:"input-color-object",type:"input",accept:(n,e)=>{if(!J.isColorObject(n))return null;const t=di(e);return t?{initialValue:n,params:t}:null},binding:{reader:n=>Gc(cn(n.params)),equals:J.equals,writer:n=>Nc(Uc(n.initialValue),cn(n.params))},controller:n=>{var e;const t=J.isRgbaColorObject(n.initialValue),l="expanded"in n.params?n.params.expanded:void 0,b="picker"in n.params?n.params.picker:void 0,P=(e=cn(n.params))!==null&&e!==void 0?e:"int";return new ur(n.document,{colorType:P,expanded:l??!1,formatter:Rc(t,P),parser:sr(P),pickerLayout:b??"popup",supportsAlpha:t,value:n.value,viewProps:n.viewProps})}},$c={id:"input-color-string",type:"input",accept:(n,e)=>{if(typeof n!="string"||"view"in e&&e.view==="text")return null;const t=ir(n,cn(e));if(!t||!or(t))return null;const b=di(e);return b?{initialValue:n,params:b}:null},binding:{reader:n=>{var e;return sc((e=cn(n.params))!==null&&e!==void 0?e:"int")},equals:J.equals,writer:n=>{const e=ir(n.initialValue,cn(n.params));if(!e)throw I.shouldNeverHappen();const t=Tc(e);if(!t)throw I.notBindable();return t}},controller:n=>{const e=ir(n.initialValue,cn(n.params));if(!e)throw I.shouldNeverHappen();const t=or(e);if(!t)throw I.shouldNeverHappen();const l="expanded"in n.params?n.params.expanded:void 0,b="picker"in n.params?n.params.picker:void 0;return new ur(n.document,{colorType:e.type,expanded:l??!1,formatter:t,parser:sr(e.type),pickerLayout:b??"popup",supportsAlpha:e.alpha,value:n.value,viewProps:n.viewProps})}};class Ot{constructor(e){this.components=e.components,this.asm_=e.assembly}constrain(e){const t=this.asm_.toComponents(e).map((l,b)=>{var P,A;return(A=(P=this.components[b])===null||P===void 0?void 0:P.constrain(l))!==null&&A!==void 0?A:l});return this.asm_.fromComponents(t)}}const Mo=N("pndtxt");class Xc{constructor(e,t){this.textViews=t.textViews,this.element=e.createElement("div"),this.element.classList.add(Mo()),this.textViews.forEach(l=>{const b=e.createElement("div");b.classList.add(Mo("a")),b.appendChild(l.element),this.element.appendChild(b)})}}function Yc(n,e,t){return new It(n,{arrayPosition:t===0?"fst":t===e.axes.length-1?"lst":"mid",baseStep:e.axes[t].baseStep,parser:e.parser,props:e.axes[t].textProps,value:te(0,{constraint:e.axes[t].constraint}),viewProps:e.viewProps})}class dr{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.acs_=t.axes.map((l,b)=>Yc(e,t,b)),this.acs_.forEach((l,b)=>{At({primary:this.value,secondary:l.value,forward:P=>t.assembly.toComponents(P.rawValue)[b],backward:(P,A)=>{const U=t.assembly.toComponents(P.rawValue);return U[b]=A.rawValue,t.assembly.fromComponents(U)}})}),this.view=new Xc(e,{textViews:this.acs_.map(l=>l.view)})}}function ko(n,e){return"step"in n&&!w(n.step)?new xn(n.step,e):null}function So(n){return!w(n.max)&&!w(n.min)?new bt({max:n.max,min:n.min}):!w(n.max)||!w(n.min)?new je({max:n.max,min:n.min}):null}function qc(n){const e=_e(n,bt);if(e)return[e.values.get("min"),e.values.get("max")];const t=_e(n,je);return t?[t.minValue,t.maxValue]:[void 0,void 0]}function Qc(n,e){const t=[],l=ko(n,e);l&&t.push(l);const b=So(n);b&&t.push(b);const P=kn(n.options);return P&&t.push(P),new at(t)}const Zc={id:"input-number",type:"input",accept:(n,e)=>{if(typeof n!="number")return null;const t=V,l=ce(e,{format:t.optional.function,max:t.optional.number,min:t.optional.number,options:t.optional.custom(rn),step:t.optional.number});return l?{initialValue:n,params:l}:null},binding:{reader:n=>Gi,constraint:n=>Qc(n.params,n.initialValue),writer:n=>_t},controller:n=>{var e;const t=n.value,l=n.constraint,b=l&&_e(l,Qe);if(b)return new Zt(n.document,{props:new q({options:b.values.value("options")}),value:t,viewProps:n.viewProps});const P=(e="format"in n.params?n.params.format:void 0)!==null&&e!==void 0?e:Ae(Sn(l,t.rawValue)),A=l&&_e(l,bt);return A?new sn(n.document,{baseStep:Dt(l),parser:Ze,sliderProps:new q({maxValue:A.values.value("max"),minValue:A.values.value("min")}),textProps:q.fromObject({draggingScale:Tt(l,t.rawValue),formatter:P}),value:t,viewProps:n.viewProps}):new It(n.document,{baseStep:Dt(l),parser:Ze,props:q.fromObject({draggingScale:Tt(l,t.rawValue),formatter:P}),value:t,viewProps:n.viewProps})}};class Et{constructor(e=0,t=0){this.x=e,this.y=t}getComponents(){return[this.x,this.y]}static isObject(e){if(w(e))return!1;const t=e.x,l=e.y;return!(typeof t!="number"||typeof l!="number")}static equals(e,t){return e.x===t.x&&e.y===t.y}toObject(){return{x:this.x,y:this.y}}}const Lo={toComponents:n=>n.getComponents(),fromComponents:n=>new Et(...n)},Vn=N("p2d");class Wc{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Vn()),t.viewProps.bindClassModifiers(this.element),j(t.expanded,Y(this.element,Vn(void 0,"expanded")));const l=e.createElement("div");l.classList.add(Vn("h")),this.element.appendChild(l);const b=e.createElement("button");b.classList.add(Vn("b")),b.appendChild(rt(e,"p2dpad")),t.viewProps.bindDisabled(b),l.appendChild(b),this.buttonElement=b;const P=e.createElement("div");if(P.classList.add(Vn("t")),l.appendChild(P),this.textElement=P,t.pickerLayout==="inline"){const A=e.createElement("div");A.classList.add(Vn("p")),this.element.appendChild(A),this.pickerElement=A}else this.pickerElement=null}}const Bt=N("p2dp");class Jc{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(Bt()),t.layout==="popup"&&this.element.classList.add(Bt(void 0,"p")),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("div");l.classList.add(Bt("p")),t.viewProps.bindTabIndex(l),this.element.appendChild(l),this.padElement=l;const b=e.createElementNS(Be,"svg");b.classList.add(Bt("g")),this.padElement.appendChild(b),this.svgElem_=b;const P=e.createElementNS(Be,"line");P.classList.add(Bt("ax")),P.setAttributeNS(null,"x1","0"),P.setAttributeNS(null,"y1","50%"),P.setAttributeNS(null,"x2","100%"),P.setAttributeNS(null,"y2","50%"),this.svgElem_.appendChild(P);const A=e.createElementNS(Be,"line");A.classList.add(Bt("ax")),A.setAttributeNS(null,"x1","50%"),A.setAttributeNS(null,"y1","0"),A.setAttributeNS(null,"x2","50%"),A.setAttributeNS(null,"y2","100%"),this.svgElem_.appendChild(A);const U=e.createElementNS(Be,"line");U.classList.add(Bt("l")),U.setAttributeNS(null,"x1","50%"),U.setAttributeNS(null,"y1","50%"),this.svgElem_.appendChild(U),this.lineElem_=U;const W=e.createElement("div");W.classList.add(Bt("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(),l=this.maxValue_,b=xe(e,-l,+l,0,100),P=xe(t,-l,+l,0,100),A=this.invertsY_?100-P:P;this.lineElem_.setAttributeNS(null,"x2",`${b}%`),this.lineElem_.setAttributeNS(null,"y2",`${A}%`),this.markerElem_.style.left=`${b}%`,this.markerElem_.style.top=`${A}%`}onValueChange_(){this.update_()}onFoldableChange_(){this.update_()}}function Ao(n,e,t){return[Se(e[0],Ke(n)),Se(e[1],Vt(n))*(t?1:-1)]}class Hc{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 Jc(e,{invertsY:this.invertsY_,layout:t.layout,maxValue:this.maxValue_,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new it(this.view.padElement),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.padElement.addEventListener("keydown",this.onPadKeyDown_),this.view.padElement.addEventListener("keyup",this.onPadKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;const l=this.maxValue_,b=xe(e.point.x,0,e.bounds.width,-l,+l),P=xe(this.invertsY_?e.bounds.height-e.point.y:e.point.y,0,e.bounds.height,-l,+l);this.value.setRawValue(new Et(b,P),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onPadKeyDown_(e){ai(e.key)&&e.preventDefault();const[t,l]=Ao(e,this.baseSteps_,this.invertsY_);t===0&&l===0||this.value.setRawValue(new Et(this.value.rawValue.x+t,this.value.rawValue.y+l),{forceEmit:!1,last:!1})}onPadKeyUp_(e){const[t,l]=Ao(e,this.baseSteps_,this.invertsY_);t===0&&l===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class ep{constructor(e,t){var l,b;this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.onPadButtonBlur_=this.onPadButtonBlur_.bind(this),this.onPadButtonClick_=this.onPadButtonClick_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.foldable_=Ie.create(t.expanded),this.popC_=t.pickerLayout==="popup"?new Di(e,{viewProps:this.viewProps}):null;const P=new Hc(e,{baseSteps:[t.axes[0].baseStep,t.axes[1].baseStep],invertsY:t.invertsY,layout:t.pickerLayout,maxValue:t.maxValue,value:this.value,viewProps:this.viewProps});P.view.allFocusableElements.forEach(A=>{A.addEventListener("blur",this.onPopupChildBlur_),A.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=P,this.textC_=new dr(e,{assembly:Lo,axes:t.axes,parser:t.parser,value:this.value,viewProps:this.viewProps}),this.view=new Wc(e,{expanded:this.foldable_.value("expanded"),pickerLayout:t.pickerLayout,viewProps:this.viewProps}),this.view.textElement.appendChild(this.textC_.view.element),(l=this.view.buttonElement)===null||l===void 0||l.addEventListener("blur",this.onPadButtonBlur_),(b=this.view.buttonElement)===null||b===void 0||b.addEventListener("click",this.onPadButtonClick_),this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),At({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:A=>A.rawValue,backward:(A,U)=>U.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),Ne(this.foldable_,this.view.pickerElement))}onPadButtonBlur_(e){if(!this.popC_)return;const t=this.view.element,l=e.relatedTarget;(!l||!t.contains(l))&&(this.popC_.shows.rawValue=!1)}onPadButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(e){if(!this.popC_)return;const t=this.popC_.view.element,l=ot(e);l&&t.contains(l)||l&&l===this.view.buttonElement&&!tt(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 In{constructor(e=0,t=0,l=0){this.x=e,this.y=t,this.z=l}getComponents(){return[this.x,this.y,this.z]}static isObject(e){if(w(e))return!1;const t=e.x,l=e.y,b=e.z;return!(typeof t!="number"||typeof l!="number"||typeof b!="number")}static equals(e,t){return e.x===t.x&&e.y===t.y&&e.z===t.z}toObject(){return{x:this.x,y:this.y,z:this.z}}}const Vo={toComponents:n=>n.getComponents(),fromComponents:n=>new In(...n)};function tp(n){return In.isObject(n)?new In(n.x,n.y,n.z):new In}function np(n,e){n.writeProperty("x",e.x),n.writeProperty("y",e.y),n.writeProperty("z",e.z)}function ip(n,e){return new Ot({assembly:Vo,components:[wt("x"in n?n.x:void 0,e.x),wt("y"in n?n.y:void 0,e.y),wt("z"in n?n.z:void 0,e.z)]})}function mr(n,e){return{baseStep:Dt(e),constraint:e,textProps:q.fromObject({draggingScale:Tt(e,n),formatter:Ae(Sn(e,n))})}}const sp={id:"input-point3d",type:"input",accept:(n,e)=>{if(!In.isObject(n))return null;const t=V,l=ce(e,{x:t.optional.custom(st),y:t.optional.custom(st),z:t.optional.custom(st)});return l?{initialValue:n,params:l}:null},binding:{reader:n=>tp,constraint:n=>ip(n.params,n.initialValue),equals:In.equals,writer:n=>np},controller:n=>{const e=n.value,t=n.constraint;if(!(t instanceof Ot))throw I.shouldNeverHappen();return new dr(n.document,{assembly:Vo,axes:[mr(e.rawValue.x,t.components[0]),mr(e.rawValue.y,t.components[1]),mr(e.rawValue.z,t.components[2])],parser:Ze,value:e,viewProps:n.viewProps})}};class Dn{constructor(e=0,t=0,l=0,b=0){this.x=e,this.y=t,this.z=l,this.w=b}getComponents(){return[this.x,this.y,this.z,this.w]}static isObject(e){if(w(e))return!1;const t=e.x,l=e.y,b=e.z,P=e.w;return!(typeof t!="number"||typeof l!="number"||typeof b!="number"||typeof P!="number")}static equals(e,t){return e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w}toObject(){return{x:this.x,y:this.y,z:this.z,w:this.w}}}const Io={toComponents:n=>n.getComponents(),fromComponents:n=>new Dn(...n)};function rp(n){return Dn.isObject(n)?new Dn(n.x,n.y,n.z,n.w):new Dn}function op(n,e){n.writeProperty("x",e.x),n.writeProperty("y",e.y),n.writeProperty("z",e.z),n.writeProperty("w",e.w)}function ap(n,e){return new Ot({assembly:Io,components:[wt("x"in n?n.x:void 0,e.x),wt("y"in n?n.y:void 0,e.y),wt("z"in n?n.z:void 0,e.z),wt("w"in n?n.w:void 0,e.w)]})}function lp(n,e){return{baseStep:Dt(e),constraint:e,textProps:q.fromObject({draggingScale:Tt(e,n),formatter:Ae(Sn(e,n))})}}const cp={id:"input-point4d",type:"input",accept:(n,e)=>{if(!Dn.isObject(n))return null;const t=V,l=ce(e,{x:t.optional.custom(st),y:t.optional.custom(st),z:t.optional.custom(st),w:t.optional.custom(st)});return l?{initialValue:n,params:l}:null},binding:{reader:n=>rp,constraint:n=>ap(n.params,n.initialValue),equals:Dn.equals,writer:n=>op},controller:n=>{const e=n.value,t=n.constraint;if(!(t instanceof Ot))throw I.shouldNeverHappen();return new dr(n.document,{assembly:Io,axes:e.rawValue.getComponents().map((l,b)=>lp(l,t.components[b])),parser:Ze,value:e,viewProps:n.viewProps})}};function pp(n){const e=[],t=kn(n.options);return t&&e.push(t),new at(e)}const up={id:"input-string",type:"input",accept:(n,e)=>{if(typeof n!="string")return null;const l=ce(e,{options:V.optional.custom(rn)});return l?{initialValue:n,params:l}:null},binding:{reader:n=>oi,constraint:n=>pp(n.params),writer:n=>_t},controller:n=>{const e=n.document,t=n.value,l=n.constraint,b=l&&_e(l,Qe);return b?new Zt(e,{props:new q({options:b.values.value("options")}),value:t,viewProps:n.viewProps}):new Cn(e,{parser:P=>P,props:q.fromObject({formatter:We}),value:t,viewProps:n.viewProps})}},fi={monitor:{defaultInterval:200,defaultLineCount:3}},Do=N("mll");class hp{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(Do()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("textarea");l.classList.add(Do("i")),l.style.height=`calc(var(--bld-us) * ${t.lineCount})`,l.readOnly=!0,t.viewProps.bindDisabled(l),this.element.appendChild(l),this.textareaElem_=l,t.value.emitter.on("change",this.onValueUpdate_),this.value=t.value,this.update_()}update_(){const e=this.textareaElem_,t=e.scrollTop===e.scrollHeight-e.clientHeight,l=[];this.value.rawValue.forEach(b=>{b!==void 0&&l.push(this.formatter_(b))}),e.textContent=l.join(`
|
|
21
|
+
`),t&&(e.scrollTop=e.scrollHeight)}onValueUpdate_(){this.update_()}}class fr{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new hp(e,{formatter:t.formatter,lineCount:t.lineCount,value:this.value,viewProps:this.viewProps})}}const To=N("sgl");class dp{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(To()),t.viewProps.bindClassModifiers(this.element);const l=e.createElement("input");l.classList.add(To("i")),l.readOnly=!0,l.type="text",t.viewProps.bindDisabled(l),this.element.appendChild(l),this.inputElement=l,t.value.emitter.on("change",this.onValueUpdate_),this.value=t.value,this.update_()}update_(){const e=this.value.rawValue,t=e[e.length-1];this.inputElement.value=t!==void 0?this.formatter_(t):""}onValueUpdate_(){this.update_()}}class vr{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new dp(e,{formatter:t.formatter,value:this.value,viewProps:this.viewProps})}}const mp={id:"monitor-bool",type:"monitor",accept:(n,e)=>{if(typeof n!="boolean")return null;const l=ce(e,{lineCount:V.optional.number});return l?{initialValue:n,params:l}:null},binding:{reader:n=>Oi},controller:n=>{var e;return n.value.rawValue.length===1?new vr(n.document,{formatter:Ei,value:n.value,viewProps:n.viewProps}):new fr(n.document,{formatter:Ei,lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:fi.monitor.defaultLineCount,value:n.value,viewProps:n.viewProps})}},Nt=N("grl");class fp{constructor(e,t){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=e.createElement("div"),this.element.classList.add(Nt()),t.viewProps.bindClassModifiers(this.element),this.formatter_=t.formatter,this.props_=t.props,this.cursor_=t.cursor,this.cursor_.emitter.on("change",this.onCursorChange_);const l=e.createElementNS(Be,"svg");l.classList.add(Nt("g")),l.style.height=`calc(var(--bld-us) * ${t.lineCount})`,this.element.appendChild(l),this.svgElem_=l;const b=e.createElementNS(Be,"polyline");this.svgElem_.appendChild(b),this.lineElem_=b;const P=e.createElement("div");P.classList.add(Nt("t"),N("tt")()),this.element.appendChild(P),this.tooltipElem_=P,t.value.emitter.on("change",this.onValueUpdate_),this.value=t.value,this.update_()}get graphElement(){return this.svgElem_}update_(){const e=this.svgElem_.getBoundingClientRect(),t=this.value.rawValue.length-1,l=this.props_.get("minValue"),b=this.props_.get("maxValue"),P=[];this.value.rawValue.forEach((de,ve)=>{if(de===void 0)return;const yt=xe(ve,0,t,0,e.width),vi=xe(de,l,b,e.height,0);P.push([yt,vi].join(","))}),this.lineElem_.setAttributeNS(null,"points",P.join(" "));const A=this.tooltipElem_,U=this.value.rawValue[this.cursor_.rawValue];if(U===void 0){A.classList.remove(Nt("t","a"));return}const W=xe(this.cursor_.rawValue,0,t,0,e.width),ee=xe(U,l,b,e.height,0);A.style.left=`${W}px`,A.style.top=`${ee}px`,A.textContent=`${this.formatter_(U)}`,A.classList.contains(Nt("t","a"))||(A.classList.add(Nt("t","a"),Nt("t","in")),Ye(A),A.classList.remove(Nt("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class vp{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 fp(e,{cursor:this.cursor_,formatter:t.formatter,lineCount:t.lineCount,props:this.props_,value:this.value,viewProps:this.viewProps}),!tt(e))this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_);else{const l=new it(this.view.element);l.emitter.on("down",this.onGraphPointerDown_),l.emitter.on("move",this.onGraphPointerMove_),l.emitter.on("up",this.onGraphPointerUp_)}}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(e){const t=this.view.element.getBoundingClientRect();this.cursor_.rawValue=Math.floor(xe(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(xe(e.data.point.x,0,e.data.bounds.width,0,this.value.rawValue.length))}onGraphPointerUp_(){this.cursor_.rawValue=-1}}function br(n){return"format"in n&&!w(n.format)?n.format:Ae(2)}function bp(n){var e;return n.value.rawValue.length===1?new vr(n.document,{formatter:br(n.params),value:n.value,viewProps:n.viewProps}):new fr(n.document,{formatter:br(n.params),lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:fi.monitor.defaultLineCount,value:n.value,viewProps:n.viewProps})}function gp(n){var e,t,l;return new vp(n.document,{formatter:br(n.params),lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:fi.monitor.defaultLineCount,props:q.fromObject({maxValue:(t="max"in n.params?n.params.max:null)!==null&&t!==void 0?t:100,minValue:(l="min"in n.params?n.params.min:null)!==null&&l!==void 0?l:0}),value:n.value,viewProps:n.viewProps})}function Oo(n){return"view"in n&&n.view==="graph"}const _p={id:"monitor-number",type:"monitor",accept:(n,e)=>{if(typeof n!="number")return null;const t=V,l=ce(e,{format:t.optional.function,lineCount:t.optional.number,max:t.optional.number,min:t.optional.number,view:t.optional.string});return l?{initialValue:n,params:l}:null},binding:{defaultBufferSize:n=>Oo(n)?64:1,reader:n=>Gi},controller:n=>Oo(n.params)?gp(n):bp(n)},wp={id:"monitor-string",type:"monitor",accept:(n,e)=>{if(typeof n!="string")return null;const t=V,l=ce(e,{lineCount:t.optional.number,multiline:t.optional.boolean});return l?{initialValue:n,params:l}:null},binding:{reader:n=>oi},controller:n=>{var e;const t=n.value;return t.rawValue.length>1||"multiline"in n.params&&n.params.multiline?new fr(n.document,{formatter:We,lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:fi.monitor.defaultLineCount,value:t,viewProps:n.viewProps}):new vr(n.document,{formatter:We,value:t,viewProps:n.viewProps})}};class yp{constructor(e){this.onValueChange_=this.onValueChange_.bind(this),this.reader=e.reader,this.writer=e.writer,this.emitter=new z,this.value=e.value,this.value.emitter.on("change",this.onValueChange_),this.target=e.target,this.read()}read(){const e=this.target.read();e!==void 0&&(this.value.rawValue=this.reader(e))}write_(e){this.writer(this.target,e)}onValueChange_(e){this.write_(e.rawValue),this.emitter.emit("change",{options:e.options,rawValue:e.rawValue,sender:this})}}function xp(n,e){const t=n.accept(e.target.read(),e.params);if(w(t))return null;const l=V,b={target:e.target,initialValue:t.initialValue,params:t.params},P=n.binding.reader(b),A=n.binding.constraint?n.binding.constraint(b):void 0,U=te(P(t.initialValue),{constraint:A,equals:n.binding.equals}),W=new yp({reader:P,target:e.target,value:U,writer:n.binding.writer(b)}),ee=l.optional.boolean(e.params.disabled).value,de=l.optional.boolean(e.params.hidden).value,ve=n.controller({constraint:A,document:e.document,initialValue:t.initialValue,params:t.params,value:W.value,viewProps:Ge.create({disabled:ee,hidden:de})}),yt=l.optional.string(e.params.label).value;return new Ee(e.document,{binding:W,blade:ye(),props:q.fromObject({label:yt??e.target.key}),valueController:ve})}class Cp{constructor(e){this.onTick_=this.onTick_.bind(this),this.reader_=e.reader,this.target=e.target,this.emitter=new z,this.value=e.value,this.ticker=e.ticker,this.ticker.emitter.on("tick",this.onTick_),this.read()}dispose(){this.ticker.dispose()}read(){const e=this.target.read();if(e===void 0)return;const t=this.value.rawValue,l=this.reader_(e);this.value.rawValue=Xi(t,l),this.emitter.emit("update",{rawValue:l,sender:this})}onTick_(e){this.read()}}function Pp(n,e){return e===0?new Ai:new Wn(n,e??fi.monitor.defaultInterval)}function Mp(n,e){var t,l,b;const P=V,A=n.accept(e.target.read(),e.params);if(w(A))return null;const U={target:e.target,initialValue:A.initialValue,params:A.params},W=n.binding.reader(U),ee=(l=(t=P.optional.number(e.params.bufferSize).value)!==null&&t!==void 0?t:n.binding.defaultBufferSize&&n.binding.defaultBufferSize(A.params))!==null&&l!==void 0?l:1,de=P.optional.number(e.params.interval).value,ve=new Cp({reader:W,target:e.target,ticker:Pp(e.document,de),value:Ki(ee)}),yt=P.optional.boolean(e.params.disabled).value,vi=P.optional.boolean(e.params.hidden).value,bi=n.controller({document:e.document,params:A.params,value:ve.value,viewProps:Ge.create({disabled:yt,hidden:vi})}),Tn=(b=P.optional.string(e.params.label).value)!==null&&b!==void 0?b:e.target.key;return new qe(e.document,{binding:ve,blade:ye(),props:q.fromObject({label:Tn}),valueController:bi})}class kp{constructor(){this.pluginsMap_={blades:[],inputs:[],monitors:[]}}getAll(){return[...this.pluginsMap_.blades,...this.pluginsMap_.inputs,...this.pluginsMap_.monitors]}register(e){e.type==="blade"?this.pluginsMap_.blades.unshift(e):e.type==="input"?this.pluginsMap_.inputs.unshift(e):e.type==="monitor"&&this.pluginsMap_.monitors.unshift(e)}createInput(e,t,l){const b=t.read();if(w(b))throw new I({context:{key:t.key},type:"nomatchingcontroller"});const P=this.pluginsMap_.inputs.reduce((A,U)=>A??xp(U,{document:e,target:t,params:l}),null);if(P)return P;throw new I({context:{key:t.key},type:"nomatchingcontroller"})}createMonitor(e,t,l){const b=this.pluginsMap_.monitors.reduce((P,A)=>P??Mp(A,{document:e,params:l,target:t}),null);if(b)return b;throw new I({context:{key:t.key},type:"nomatchingcontroller"})}createBlade(e,t){const l=this.pluginsMap_.blades.reduce((b,P)=>b??Vs(P,{document:e,params:t}),null);if(!l)throw new I({type:"nomatchingview",context:{params:t}});return l}createBladeApi(e){if(e instanceof Ee)return new Rn(e);if(e instanceof qe)return new Kn(e);if(e instanceof Yt)return new _n(e,this);const t=this.pluginsMap_.blades.reduce((l,b)=>l??b.api({controller:e,pool:this}),null);if(!t)throw I.shouldNeverHappen();return t}}function Sp(){const n=new kp;return[Tp,sp,cp,up,Zc,$c,Kc,zc,Zi,mp,wp,_p,H,Ms,Ss,Zn].forEach(e=>{n.register(e)}),n}function Lp(n){return Et.isObject(n)?new Et(n.x,n.y):new Et}function Ap(n,e){n.writeProperty("x",e.x),n.writeProperty("y",e.y)}function wt(n,e){if(!n)return;const t=[],l=ko(n,e);l&&t.push(l);const b=So(n);return b&&t.push(b),new at(t)}function Vp(n,e){return new Ot({assembly:Lo,components:[wt("x"in n?n.x:void 0,e.x),wt("y"in n?n.y:void 0,e.y)]})}function Eo(n,e){const[t,l]=n?qc(n):[];if(!w(t)||!w(l))return Math.max(Math.abs(t??0),Math.abs(l??0));const b=Dt(n);return Math.max(Math.abs(b)*10,Math.abs(e)*10)}function Ip(n,e){const t=e instanceof Ot?e.components[0]:void 0,l=e instanceof Ot?e.components[1]:void 0,b=Eo(t,n.x),P=Eo(l,n.y);return Math.max(b,P)}function Bo(n,e){return{baseStep:Dt(e),constraint:e,textProps:q.fromObject({draggingScale:Tt(e,n),formatter:Ae(Sn(e,n))})}}function Dp(n){if(!("y"in n))return!1;const e=n.y;return e&&"inverted"in e?!!e.inverted:!1}const Tp={id:"input-point2d",type:"input",accept:(n,e)=>{if(!Et.isObject(n))return null;const t=V,l=ce(e,{expanded:t.optional.boolean,picker:t.optional.custom(pt),x:t.optional.custom(st),y:t.optional.object({inverted:t.optional.boolean,max:t.optional.number,min:t.optional.number,step:t.optional.number})});return l?{initialValue:n,params:l}:null},binding:{reader:n=>Lp,constraint:n=>Vp(n.params,n.initialValue),equals:Et.equals,writer:n=>Ap},controller:n=>{const e=n.document,t=n.value,l=n.constraint;if(!(l instanceof Ot))throw I.shouldNeverHappen();const b="expanded"in n.params?n.params.expanded:void 0,P="picker"in n.params?n.params.picker:void 0;return new ep(e,{axes:[Bo(t.rawValue.x,l.components[0]),Bo(t.rawValue.y,l.components[1])],expanded:b??!1,invertsY:Dp(n.params),maxValue:Ip(t.rawValue,l),parser:Ze,pickerLayout:P??"popup",value:t,viewProps:n.viewProps})}};class No extends a{constructor(e){super(e),this.emitter_=new z,this.controller_.valueController.value.emitter.on("change",t=>{this.emitter_.emit("change",{event:new u(this,t.rawValue)})})}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}get options(){return this.controller_.valueController.props.get("options")}set options(e){this.controller_.valueController.props.set("options",e)}get value(){return this.controller_.valueController.value.rawValue}set value(e){this.controller_.valueController.value.rawValue=e}on(e,t){const l=t.bind(this);return this.emitter_.on(e,b=>{l(b.event)}),this}}class Fo extends a{constructor(e){super(e),this.emitter_=new z,this.controller_.valueController.value.emitter.on("change",t=>{this.emitter_.emit("change",{event:new u(this,t.rawValue)})})}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}get maxValue(){return this.controller_.valueController.sliderController.props.get("maxValue")}set maxValue(e){this.controller_.valueController.sliderController.props.set("maxValue",e)}get minValue(){return this.controller_.valueController.sliderController.props.get("minValue")}set minValue(e){this.controller_.valueController.sliderController.props.set("minValue",e)}get value(){return this.controller_.valueController.value.rawValue}set value(e){this.controller_.valueController.value.rawValue=e}on(e,t){const l=t.bind(this);return this.emitter_.on(e,b=>{l(b.event)}),this}}class jo extends a{constructor(e){super(e),this.emitter_=new z,this.controller_.valueController.value.emitter.on("change",t=>{this.emitter_.emit("change",{event:new u(this,t.rawValue)})})}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}get formatter(){return this.controller_.valueController.props.get("formatter")}set formatter(e){this.controller_.valueController.props.set("formatter",e)}get value(){return this.controller_.valueController.value.rawValue}set value(e){this.controller_.valueController.value.rawValue=e}on(e,t){const l=t.bind(this);return this.emitter_.on(e,b=>{l(b.event)}),this}}const Op=function(){return{id:"list",type:"blade",accept(n){const e=V,t=ce(n,{options:e.required.custom(rn),value:e.required.raw,view:e.required.constant("list"),label:e.optional.string});return t?{params:t}:null},controller(n){const e=new Qe(pi(n.params.options)),t=te(n.params.value,{constraint:e}),l=new Zt(n.document,{props:new q({options:e.values.value("options")}),value:t,viewProps:n.viewProps});return new kt(n.document,{blade:n.blade,props:q.fromObject({label:n.params.label}),valueController:l})},api(n){return!(n.controller instanceof kt)||!(n.controller.valueController instanceof Zt)?null:new No(n.controller)}}}();function Ep(n){return n.reduce((e,t)=>Object.assign(e,{[t.presetKey]:t.read()}),{})}function Bp(n,e){n.forEach(t=>{const l=e[t.presetKey];l!==void 0&&t.write(l)})}class Np extends $n{constructor(e,t){super(e,t)}get element(){return this.controller_.view.element}importPreset(e){const t=this.controller_.rackController.rack.find(Ee).map(l=>l.binding.target);Bp(t,e),this.refresh()}exportPreset(){const e=this.controller_.rackController.rack.find(Ee).map(t=>t.binding.target);return Ep(e)}refresh(){this.controller_.rackController.rack.find(Ee).forEach(e=>{e.binding.read()}),this.controller_.rackController.rack.find(qe).forEach(e=>{e.binding.read()})}}class Fp extends wn{constructor(e,t){super(e,{expanded:t.expanded,blade:t.blade,props:t.props,root:!0,viewProps:t.viewProps})}}const jp={id:"slider",type:"blade",accept(n){const e=V,t=ce(n,{max:e.required.number,min:e.required.number,view:e.required.constant("slider"),format:e.optional.function,label:e.optional.string,value:e.optional.number});return t?{params:t}:null},controller(n){var e,t;const l=(e=n.params.value)!==null&&e!==void 0?e:0,b=new bt({max:n.params.max,min:n.params.min}),P=new sn(n.document,{baseStep:1,parser:Ze,sliderProps:new q({maxValue:b.values.value("max"),minValue:b.values.value("min")}),textProps:q.fromObject({draggingScale:Tt(void 0,l),formatter:(t=n.params.format)!==null&&t!==void 0?t:gt}),value:te(l,{constraint:b}),viewProps:n.viewProps});return new kt(n.document,{blade:n.blade,props:q.fromObject({label:n.params.label}),valueController:P})},api(n){return!(n.controller instanceof kt)||!(n.controller.valueController instanceof sn)?null:new Fo(n.controller)}},zp=function(){return{id:"text",type:"blade",accept(n){const e=V,t=ce(n,{parse:e.required.function,value:e.required.raw,view:e.required.constant("text"),format:e.optional.function,label:e.optional.string});return t?{params:t}:null},controller(n){var e;const t=new Cn(n.document,{parser:n.params.parse,props:q.fromObject({formatter:(e=n.params.format)!==null&&e!==void 0?e:l=>String(l)}),value:te(n.params.value),viewProps:n.viewProps});return new kt(n.document,{blade:n.blade,props:q.fromObject({label:n.params.label}),valueController:t})},api(n){return!(n.controller instanceof kt)||!(n.controller.valueController instanceof Cn)?null:new jo(n.controller)}}}();function Up(n){const e=n.createElement("div");return e.classList.add(N("dfw")()),n.body&&n.body.appendChild(e),e}function zo(n,e,t){if(n.querySelector(`style[data-tp-style=${e}]`))return;const l=n.createElement("style");l.dataset.tpStyle=e,l.textContent=t,n.head.appendChild(l)}class Gp extends Np{constructor(e){var t,l;const b=e??{},P=(t=b.document)!==null&&t!==void 0?t:Un(),A=Sp(),U=new Fp(P,{expanded:b.expanded,blade:ye(),props:q.fromObject({title:b.title}),viewProps:Ge.create()});super(U,A),this.pool_=A,this.containerElem_=(l=b.container)!==null&&l!==void 0?l:Up(P),this.containerElem_.appendChild(this.element),this.doc_=P,this.usesDefaultWrapper_=!b.container,this.setUpDefaultPlugins_()}get document(){if(!this.doc_)throw I.alreadyDisposed();return this.doc_}dispose(){const e=this.containerElem_;if(!e)throw I.alreadyDisposed();if(this.usesDefaultWrapper_){const t=e.parentElement;t&&t.removeChild(e)}this.containerElem_=null,this.doc_=null,super.dispose()}registerPlugin(e){("plugin"in e?[e.plugin]:"plugins"in e?e.plugins:[]).forEach(l=>{this.pool_.register(l),this.embedPluginStyle_(l)})}embedPluginStyle_(e){e.css&&zo(this.document,`plugin-${e.id}`,e.css)}setUpDefaultPlugins_(){zo(this.document,"default",'.tp-tbiv_b,.tp-coltxtv_ms,.tp-ckbv_i,.tp-rotv_b,.tp-fldv_b,.tp-mllv_i,.tp-sglv_i,.tp-grlv_g,.tp-txtv_i,.tp-p2dpv_p,.tp-colswv_sw,.tp-p2dv_b,.tp-btnv_b,.tp-lstv_s{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-p2dv_b,.tp-btnv_b,.tp-lstv_s{background-color:var(--btn-bg);border-radius:var(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-p2dv_b:hover,.tp-btnv_b:hover,.tp-lstv_s:hover{background-color:var(--btn-bg-h)}.tp-p2dv_b:focus,.tp-btnv_b:focus,.tp-lstv_s:focus{background-color:var(--btn-bg-f)}.tp-p2dv_b:active,.tp-btnv_b:active,.tp-lstv_s:active{background-color:var(--btn-bg-a)}.tp-p2dv_b:disabled,.tp-btnv_b:disabled,.tp-lstv_s:disabled{opacity:.5}.tp-txtv_i,.tp-p2dpv_p,.tp-colswv_sw{background-color:var(--in-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);min-width:0;width:100%}.tp-txtv_i:hover,.tp-p2dpv_p:hover,.tp-colswv_sw:hover{background-color:var(--in-bg-h)}.tp-txtv_i:focus,.tp-p2dpv_p:focus,.tp-colswv_sw:focus{background-color:var(--in-bg-f)}.tp-txtv_i:active,.tp-p2dpv_p:active,.tp-colswv_sw:active{background-color:var(--in-bg-a)}.tp-txtv_i:disabled,.tp-p2dpv_p:disabled,.tp-colswv_sw:disabled{opacity:.5}.tp-mllv_i,.tp-sglv_i,.tp-grlv_g{background-color:var(--mo-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--mo-fg);height:var(--bld-us);scrollbar-color:currentColor rgba(0,0,0,0);scrollbar-width:thin;width:100%}.tp-mllv_i::-webkit-scrollbar,.tp-sglv_i::-webkit-scrollbar,.tp-grlv_g::-webkit-scrollbar{height:8px;width:8px}.tp-mllv_i::-webkit-scrollbar-corner,.tp-sglv_i::-webkit-scrollbar-corner,.tp-grlv_g::-webkit-scrollbar-corner{background-color:rgba(0,0,0,0)}.tp-mllv_i::-webkit-scrollbar-thumb,.tp-sglv_i::-webkit-scrollbar-thumb,.tp-grlv_g::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:currentColor;border:rgba(0,0,0,0) solid 2px;border-radius:4px}.tp-rotv{--font-family: var(--tp-font-family, Roboto Mono, Source Code Pro, Menlo, Courier, monospace);--bs-br: var(--tp-base-border-radius, 6px);--cnt-h-p: var(--tp-container-horizontal-padding, 4px);--cnt-v-p: var(--tp-container-vertical-padding, 4px);--elm-br: var(--tp-element-border-radius, 2px);--bld-s: var(--tp-blade-spacing, 4px);--bld-us: var(--tp-blade-unit-size, 20px);--bs-bg: var(--tp-base-background-color, hsl(230deg, 7%, 17%));--bs-sh: var(--tp-base-shadow-color, rgba(0, 0, 0, 0.2));--btn-bg: var(--tp-button-background-color, hsl(230deg, 7%, 70%));--btn-bg-a: var(--tp-button-background-color-active, #d6d7db);--btn-bg-f: var(--tp-button-background-color-focus, #c8cad0);--btn-bg-h: var(--tp-button-background-color-hover, #bbbcc4);--btn-fg: var(--tp-button-foreground-color, hsl(230deg, 7%, 17%));--cnt-bg: var(--tp-container-background-color, rgba(187, 188, 196, 0.1));--cnt-bg-a: var(--tp-container-background-color-active, rgba(187, 188, 196, 0.25));--cnt-bg-f: var(--tp-container-background-color-focus, rgba(187, 188, 196, 0.2));--cnt-bg-h: var(--tp-container-background-color-hover, rgba(187, 188, 196, 0.15));--cnt-fg: var(--tp-container-foreground-color, hsl(230deg, 7%, 75%));--in-bg: var(--tp-input-background-color, rgba(187, 188, 196, 0.1));--in-bg-a: var(--tp-input-background-color-active, rgba(187, 188, 196, 0.25));--in-bg-f: var(--tp-input-background-color-focus, rgba(187, 188, 196, 0.2));--in-bg-h: var(--tp-input-background-color-hover, rgba(187, 188, 196, 0.15));--in-fg: var(--tp-input-foreground-color, hsl(230deg, 7%, 75%));--lbl-fg: var(--tp-label-foreground-color, rgba(187, 188, 196, 0.7));--mo-bg: var(--tp-monitor-background-color, rgba(0, 0, 0, 0.2));--mo-fg: var(--tp-monitor-foreground-color, rgba(187, 188, 196, 0.7));--grv-fg: var(--tp-groove-foreground-color, rgba(187, 188, 196, 0.1))}.tp-rotv_c>.tp-cntv.tp-v-lst,.tp-tabv_c .tp-brkv>.tp-cntv.tp-v-lst,.tp-fldv_c>.tp-cntv.tp-v-lst{margin-bottom:calc(-1*var(--cnt-v-p))}.tp-rotv_c>.tp-fldv.tp-v-lst .tp-fldv_c,.tp-tabv_c .tp-brkv>.tp-fldv.tp-v-lst .tp-fldv_c,.tp-fldv_c>.tp-fldv.tp-v-lst .tp-fldv_c{border-bottom-left-radius:0}.tp-rotv_c>.tp-fldv.tp-v-lst .tp-fldv_b,.tp-tabv_c .tp-brkv>.tp-fldv.tp-v-lst .tp-fldv_b,.tp-fldv_c>.tp-fldv.tp-v-lst .tp-fldv_b{border-bottom-left-radius:0}.tp-rotv_c>*:not(.tp-v-fst),.tp-tabv_c .tp-brkv>*:not(.tp-v-fst),.tp-fldv_c>*:not(.tp-v-fst){margin-top:var(--bld-s)}.tp-rotv_c>.tp-sprv:not(.tp-v-fst),.tp-tabv_c .tp-brkv>.tp-sprv:not(.tp-v-fst),.tp-fldv_c>.tp-sprv:not(.tp-v-fst),.tp-rotv_c>.tp-cntv:not(.tp-v-fst),.tp-tabv_c .tp-brkv>.tp-cntv:not(.tp-v-fst),.tp-fldv_c>.tp-cntv:not(.tp-v-fst){margin-top:var(--cnt-v-p)}.tp-rotv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-tabv_c .tp-brkv>.tp-sprv+*:not(.tp-v-hidden),.tp-fldv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-rotv_c>.tp-cntv+*:not(.tp-v-hidden),.tp-tabv_c .tp-brkv>.tp-cntv+*:not(.tp-v-hidden),.tp-fldv_c>.tp-cntv+*:not(.tp-v-hidden){margin-top:var(--cnt-v-p)}.tp-rotv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-tabv_c .tp-brkv>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-fldv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-rotv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv,.tp-tabv_c .tp-brkv>.tp-cntv:not(.tp-v-hidden)+.tp-cntv,.tp-fldv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv{margin-top:0}.tp-tabv_c .tp-brkv>.tp-cntv,.tp-fldv_c>.tp-cntv{margin-left:4px}.tp-tabv_c .tp-brkv>.tp-fldv>.tp-fldv_b,.tp-fldv_c>.tp-fldv>.tp-fldv_b{border-top-left-radius:var(--elm-br);border-bottom-left-radius:var(--elm-br)}.tp-tabv_c .tp-brkv>.tp-fldv.tp-fldv-expanded>.tp-fldv_b,.tp-fldv_c>.tp-fldv.tp-fldv-expanded>.tp-fldv_b{border-bottom-left-radius:0}.tp-tabv_c .tp-brkv .tp-fldv>.tp-fldv_c,.tp-fldv_c .tp-fldv>.tp-fldv_c{border-bottom-left-radius:var(--elm-br)}.tp-tabv_c .tp-brkv>.tp-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-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:[jp,Op,Zn,zp]})}}const Rp=new s("3.1.4");r.BladeApi=a,r.ButtonApi=G,r.FolderApi=$n,r.InputBindingApi=Rn,r.ListApi=No,r.MonitorBindingApi=Kn,r.Pane=Gp,r.SeparatorApi=Mi,r.SliderApi=Fo,r.TabApi=Si,r.TabPageApi=Qn,r.TextApi=jo,r.TpChangeEvent=u,r.VERSION=Rp,Object.defineProperty(r,"__esModule",{value:!0})})})(Al,_i);var zn={},Vl={get exports(){return zn},set exports(g){zn=g}};(function(g,i){(function(r,s){s(i)})(Kr,function(r){class s{constructor(o){this.controller_=o}get element(){return this.controller_.view.element}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(o){this.controller_.viewProps.set("disabled",o)}get hidden(){return this.controller_.viewProps.get("hidden")}set hidden(o){this.controller_.viewProps.set("hidden",o)}dispose(){this.controller_.viewProps.set("disposed",!0)}}class a{constructor(o){this.target=o}}class c extends a{constructor(o,p,v,C){super(o),this.value=p,this.presetKey=v,this.last=C??!0}}function u(d){return d}function h(d){return d==null}const m={alreadydisposed:()=>"View has been already disposed",invalidparams:d=>`Invalid parameters for '${d.name}'`,nomatchingcontroller:d=>`No matching controller for '${d.key}'`,nomatchingview:d=>`No matching view for '${JSON.stringify(d.params)}'`,notbindable:()=>"Value is not bindable",propertynotfound:d=>`Property '${d.name}' not found`,shouldneverhappen:()=>"This error should never happen"};class _{constructor(o){var p;this.message=(p=m[o.type](o.context))!==null&&p!==void 0?p:"Unexpected error",this.name=this.constructor.name,this.stack=new Error(this.message).stack,this.type=o.type}static alreadyDisposed(){return new _({type:"alreadydisposed"})}static notBindable(){return new _({type:"notbindable"})}static propertyNotFound(o){return new _({type:"propertynotfound",context:{name:o}})}static shouldNeverHappen(){return new _({type:"shouldneverhappen"})}}class y{constructor(){this.observers_={}}on(o,p){let v=this.observers_[o];return v||(v=this.observers_[o]=[]),v.push({handler:p}),this}off(o,p){const v=this.observers_[o];return v&&(this.observers_[o]=v.filter(C=>C.handler!==p)),this}emit(o,p){const v=this.observers_[o];v&&v.forEach(C=>{C.handler(p)})}}const w="tp";function x(d){return(p,v)=>[w,"-",d,"v",p?`_${p}`:"",v?`-${v}`:""].join("")}function k(d,o){return p=>o(d(p))}function E(d){return d.rawValue}function I(d,o){d.emitter.on("change",k(E,o)),o(d.rawValue)}function O(d,o,p){I(d.value(o),p)}function G(d,o,p){p?d.classList.add(o):d.classList.remove(o)}function z(d,o){return p=>{G(d,o,p)}}function B(d,o){I(d,p=>{o.textContent=p??""})}const N=x("btn");class Q{constructor(o,p){this.element=o.createElement("div"),this.element.classList.add(N()),p.viewProps.bindClassModifiers(this.element);const v=o.createElement("button");v.classList.add(N("b")),p.viewProps.bindDisabled(v),this.element.appendChild(v),this.buttonElement=v;const C=o.createElement("div");C.classList.add(N("t")),B(p.props.value("title"),C),this.buttonElement.appendChild(C)}}class ${constructor(o,p){this.emitter=new y,this.onClick_=this.onClick_.bind(this),this.props=p.props,this.viewProps=p.viewProps,this.view=new Q(o,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class j{constructor(o,p){var v;this.constraint_=p==null?void 0:p.constraint,this.equals_=(v=p==null?void 0:p.equals)!==null&&v!==void 0?v:(C,L)=>C===L,this.emitter=new y,this.rawValue_=o}get constraint(){return this.constraint_}get rawValue(){return this.rawValue_}set rawValue(o){this.setRawValue(o,{forceEmit:!1,last:!0})}setRawValue(o,p){const v=p??{forceEmit:!1,last:!0},C=this.constraint_?this.constraint_.constrain(o):o,L=this.rawValue_;this.equals_(L,C)&&!v.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=C,this.emitter.emit("change",{options:v,previousRawValue:L,rawValue:C,sender:this}))}}class F{constructor(o){this.emitter=new y,this.value_=o}get rawValue(){return this.value_}set rawValue(o){this.setRawValue(o,{forceEmit:!1,last:!0})}setRawValue(o,p){const v=p??{forceEmit:!1,last:!0},C=this.value_;C===o&&!v.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.value_=o,this.emitter.emit("change",{options:v,previousRawValue:C,rawValue:this.value_,sender:this}))}}function X(d,o){const p=o==null?void 0:o.constraint,v=o==null?void 0:o.equals;return!p&&!v?new F(d):new j(d,o)}class Y{constructor(o){this.emitter=new y,this.valMap_=o;for(const p in this.valMap_)this.valMap_[p].emitter.on("change",()=>{this.emitter.emit("change",{key:p,sender:this})})}static createCore(o){return Object.keys(o).reduce((v,C)=>Object.assign(v,{[C]:X(o[C])}),{})}static fromObject(o){const p=this.createCore(o);return new Y(p)}get(o){return this.valMap_[o].rawValue}set(o,p){this.valMap_[o].rawValue=p}value(o){return this.valMap_[o]}}function Z(d,o){const v=Object.keys(o).reduce((C,L)=>{if(C===void 0)return;const T=o[L],R=T(d[L]);return R.succeeded?Object.assign(Object.assign({},C),{[L]:R.value}):void 0},{});return v}function ue(d,o){return d.reduce((p,v)=>{if(p===void 0)return;const C=o(v);if(!(!C.succeeded||C.value===void 0))return[...p,C.value]},[])}function ge(d){return d===null?!1:typeof d=="object"}function pe(d){return o=>p=>{if(!o&&p===void 0)return{succeeded:!1,value:void 0};if(o&&p===void 0)return{succeeded:!0,value:void 0};const v=d(p);return v!==void 0?{succeeded:!0,value:v}:{succeeded:!1,value:void 0}}}function me(d){return{custom:o=>pe(o)(d),boolean:pe(o=>typeof o=="boolean"?o:void 0)(d),number:pe(o=>typeof o=="number"?o:void 0)(d),string:pe(o=>typeof o=="string"?o:void 0)(d),function:pe(o=>typeof o=="function"?o:void 0)(d),constant:o=>pe(p=>p===o?o:void 0)(d),raw:pe(o=>o)(d),object:o=>pe(p=>{if(ge(p))return Z(p,o)})(d),array:o=>pe(p=>{if(Array.isArray(p))return ue(p,o)})(d)}}const he={optional:me(!0),required:me(!1)};function te(d,o){const p=he.required.object(o)(d);return p.succeeded?p.value:void 0}function q(d){console.warn([`Missing '${d.key}' of ${d.target} in ${d.place}.`,"Please rebuild plugins with the latest core package."].join(" "))}function Pe(d){return d&&d.parentElement&&d.parentElement.removeChild(d),null}class fe{constructor(o){this.value_=o}static create(o){return[new fe(o),(p,v)=>{o.setRawValue(p,v)}]}get emitter(){return this.value_.emitter}get rawValue(){return this.value_.rawValue}}const le=x("");function ne(d,o){return z(d,le(void 0,o))}class be extends Y{constructor(o){var p;super(o),this.onDisabledChange_=this.onDisabledChange_.bind(this),this.onParentChange_=this.onParentChange_.bind(this),this.onParentGlobalDisabledChange_=this.onParentGlobalDisabledChange_.bind(this),[this.globalDisabled_,this.setGlobalDisabled_]=fe.create(X(this.getGlobalDisabled_())),this.value("disabled").emitter.on("change",this.onDisabledChange_),this.value("parent").emitter.on("change",this.onParentChange_),(p=this.get("parent"))===null||p===void 0||p.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_)}static create(o){var p,v,C;const L=o??{};return new be(Y.createCore({disabled:(p=L.disabled)!==null&&p!==void 0?p:!1,disposed:!1,hidden:(v=L.hidden)!==null&&v!==void 0?v:!1,parent:(C=L.parent)!==null&&C!==void 0?C:null}))}get globalDisabled(){return this.globalDisabled_}bindClassModifiers(o){I(this.globalDisabled_,ne(o,"disabled")),O(this,"hidden",ne(o,"hidden"))}bindDisabled(o){I(this.globalDisabled_,p=>{o.disabled=p})}bindTabIndex(o){I(this.globalDisabled_,p=>{o.tabIndex=p?-1:0})}handleDispose(o){this.value("disposed").emitter.on("change",p=>{p&&o()})}getGlobalDisabled_(){const o=this.get("parent");return(o?o.globalDisabled.rawValue:!1)||this.get("disabled")}updateGlobalDisabled_(){this.setGlobalDisabled_(this.getGlobalDisabled_())}onDisabledChange_(){this.updateGlobalDisabled_()}onParentGlobalDisabledChange_(){this.updateGlobalDisabled_()}onParentChange_(o){var p;const v=o.previousRawValue;v==null||v.globalDisabled.emitter.off("change",this.onParentGlobalDisabledChange_),(p=this.get("parent"))===null||p===void 0||p.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_),this.updateGlobalDisabled_()}}function V(){return["veryfirst","first","last","verylast"]}const ce=x(""),Ve={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class Oe{constructor(o){this.parent_=null,this.blade=o.blade,this.view=o.view,this.viewProps=o.viewProps;const p=this.view.element;this.blade.value("positions").emitter.on("change",()=>{V().forEach(v=>{p.classList.remove(ce(void 0,Ve[v]))}),this.blade.get("positions").forEach(v=>{p.classList.add(ce(void 0,Ve[v]))})}),this.viewProps.handleDispose(()=>{Pe(p)})}get parent(){return this.parent_}set parent(o){if(this.parent_=o,!("parent"in this.viewProps.valMap_)){q({key:"parent",target:be.name,place:"BladeController.parent"});return}this.viewProps.set("parent",this.parent_?this.parent_.viewProps:null)}}const we="http://www.w3.org/2000/svg";function Xe(d){d.offsetHeight}function hn(d,o){const p=d.style.transition;d.style.transition="none",o(),d.style.transition=p}function Ge(d){return d.ontouchstart!==void 0}function dn(d){for(;d.childNodes.length>0;)d.removeChild(d.childNodes[0])}function Gt(d){return d.relatedTarget?d.relatedTarget:"explicitOriginalTarget"in d?d.explicitOriginalTarget:null}const et=x("lbl");function dt(d,o){const p=d.createDocumentFragment();return o.split(`
|
|
22
|
+
`).map(C=>d.createTextNode(C)).forEach((C,L)=>{L>0&&p.appendChild(d.createElement("br")),p.appendChild(C)}),p}class Be{constructor(o,p){this.element=o.createElement("div"),this.element.classList.add(et()),p.viewProps.bindClassModifiers(this.element);const v=o.createElement("div");v.classList.add(et("l")),O(p.props,"label",L=>{h(L)?this.element.classList.add(et(void 0,"nol")):(this.element.classList.remove(et(void 0,"nol")),dn(v),v.appendChild(dt(o,L)))}),this.element.appendChild(v),this.labelElement=v;const C=o.createElement("div");C.classList.add(et("v")),this.element.appendChild(C),this.valueElement=C}}class Ye extends Oe{constructor(o,p){const v=p.valueController.viewProps;super(Object.assign(Object.assign({},p),{view:new Be(o,{props:p.props,viewProps:v}),viewProps:v})),this.props=p.props,this.valueController=p.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class Rt extends Oe{constructor(o){super(o),this.value=o.value}}class tt extends Y{constructor(o){super(o)}static create(o){const p={completed:!0,expanded:o,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null},v=Y.createCore(p);return new tt(v)}get styleExpanded(){var o;return(o=this.get("temporaryExpanded"))!==null&&o!==void 0?o:this.get("expanded")}get styleHeight(){if(!this.styleExpanded)return"0";const o=this.get("expandedHeight");return this.get("shouldFixHeight")&&!h(o)?`${o}px`:"auto"}bindExpandedClass(o,p){const v=()=>{this.styleExpanded?o.classList.add(p):o.classList.remove(p)};O(this,"expanded",v),O(this,"temporaryExpanded",v)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function mn(d){return tt.create(d)}function Un(d,o){let p=0;return hn(o,()=>{d.set("expandedHeight",null),d.set("temporaryExpanded",!0),Xe(o),p=o.clientHeight,d.set("temporaryExpanded",null),Xe(o)}),p}function fn(d,o){o.style.height=d.styleHeight}function vn(d,o){d.value("expanded").emitter.on("beforechange",()=>{d.set("completed",!1),h(d.get("expandedHeight"))&&d.set("expandedHeight",Un(d,o)),d.set("shouldFixHeight",!0),Xe(o)}),d.emitter.on("change",()=>{fn(d,o)}),fn(d,o),o.addEventListener("transitionend",p=>{p.propertyName==="height"&&d.cleanUpTransition()})}class rt{constructor(o,p){const v=x(p.viewName);this.element=o.createElement("div"),this.element.classList.add(v()),p.viewProps.bindClassModifiers(this.element)}}class mt extends Rt{constructor(o,p){const v=p.valueController.viewProps;super(Object.assign(Object.assign({},p),{value:p.valueController.value,view:new Be(o,{props:p.props,viewProps:v}),viewProps:v})),this.props=p.props,this.valueController=p.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class bn{constructor(){this.disabled=!1,this.emitter=new y}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class Kt{constructor(o,p){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=o,this.emitter=new y,this.interval_=p,this.setTimer_()}get disabled(){return this.disabled_}set disabled(o){this.disabled_=o,this.disabled_?this.clearTimer_():this.setTimer_()}dispose(){this.clearTimer_()}clearTimer_(){if(this.timerId_===null)return;const o=this.doc_.defaultView;o&&o.clearInterval(this.timerId_),this.timerId_=null}setTimer_(){if(this.clearTimer_(),this.interval_<=0)return;const o=this.doc_.defaultView;o&&(this.timerId_=o.setInterval(this.onTick_,this.interval_))}onTick_(){this.disabled_||this.emitter.emit("tick",{sender:this})}}class gn{constructor(o){this.constraints=o}constrain(o){return this.constraints.reduce((p,v)=>v.constrain(p),o)}}function ot(d,o){if(d instanceof o)return d;if(d instanceof gn){const p=d.constraints.reduce((v,C)=>v||(C instanceof o?C:null),null);if(p)return p}return null}class nt{constructor(o){this.values=Y.fromObject({max:o.max,min:o.min})}constrain(o){const p=this.values.get("max"),v=this.values.get("min");return Math.min(Math.max(o,v),p)}}class ft{constructor(o){this.values=Y.fromObject({max:o.max,min:o.min})}get maxValue(){return this.values.get("max")}get minValue(){return this.values.get("min")}constrain(o){const p=this.values.get("max"),v=this.values.get("min");let C=o;return h(v)||(C=Math.max(C,v)),h(p)||(C=Math.min(C,p)),C}}class D{constructor(o,p=0){this.step=o,this.origin=p}constrain(o){const p=this.origin%this.step,v=Math.round((o-p)/this.step);return p+v*this.step}}const K=x("pop");class H{constructor(o,p){this.element=o.createElement("div"),this.element.classList.add(K()),p.viewProps.bindClassModifiers(this.element),I(p.shows,z(this.element,K(void 0,"v")))}}class ie{constructor(o,p){this.shows=X(!1),this.viewProps=p.viewProps,this.view=new H(o,{shows:this.shows,viewProps:this.viewProps})}}const ye=x("txt");class Ie{constructor(o,p){this.onChange_=this.onChange_.bind(this),this.element=o.createElement("div"),this.element.classList.add(ye()),p.viewProps.bindClassModifiers(this.element),this.props_=p.props,this.props_.emitter.on("change",this.onChange_);const v=o.createElement("input");v.classList.add(ye("i")),v.type="text",p.viewProps.bindDisabled(v),this.element.appendChild(v),this.inputElement=v,p.value.emitter.on("change",this.onChange_),this.value_=p.value,this.refresh()}refresh(){const o=this.props_.get("formatter");this.inputElement.value=o(this.value_.rawValue)}onChange_(){this.refresh()}}class Mt{constructor(o,p){this.onInputChange_=this.onInputChange_.bind(this),this.parser_=p.parser,this.props=p.props,this.value=p.value,this.viewProps=p.viewProps,this.view=new Ie(o,{props:p.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(o){const v=o.currentTarget.value,C=this.parser_(v);h(C)||(this.value.rawValue=C),this.view.refresh()}}function $t(d){return d==="false"?!1:!!d}class Ne{constructor(o){this.text=o}evaluate(){return Number(this.text)}toString(){return this.text}}const Fe={"**":(d,o)=>Math.pow(d,o),"*":(d,o)=>d*o,"/":(d,o)=>d/o,"%":(d,o)=>d%o,"+":(d,o)=>d+o,"-":(d,o)=>d-o,"<<":(d,o)=>d<<o,">>":(d,o)=>d>>o,">>>":(d,o)=>d>>>o,"&":(d,o)=>d&o,"^":(d,o)=>d^o,"|":(d,o)=>d|o};class fs{constructor(o,p,v){this.left=p,this.operator=o,this.right=v}evaluate(){const o=Fe[this.operator];if(!o)throw new Error(`unexpected binary operator: '${this.operator}`);return o(this.left.evaluate(),this.right.evaluate())}toString(){return["b(",this.left.toString(),this.operator,this.right.toString(),")"].join(" ")}}const vs={"+":d=>d,"-":d=>-d,"~":d=>~d};class bs{constructor(o,p){this.operator=o,this.expression=p}evaluate(){const o=vs[this.operator];if(!o)throw new Error(`unexpected unary operator: '${this.operator}`);return o(this.expression.evaluate())}toString(){return["u(",this.operator,this.expression.toString(),")"].join(" ")}}function Gn(d){return(o,p)=>{for(let v=0;v<d.length;v++){const C=d[v](o,p);if(C!=="")return C}return""}}function vt(d,o){var p;const v=d.substr(o).match(/^\s+/);return(p=v&&v[0])!==null&&p!==void 0?p:""}function Rn(d,o){const p=d.substr(o,1);return p.match(/^[1-9]$/)?p:""}function Ee(d,o){var p;const v=d.substr(o).match(/^[0-9]+/);return(p=v&&v[0])!==null&&p!==void 0?p:""}function Kn(d,o){const p=Ee(d,o);if(p!=="")return p;const v=d.substr(o,1);if(o+=1,v!=="-"&&v!=="+")return"";const C=Ee(d,o);return C===""?"":v+C}function qe(d,o){const p=d.substr(o,1);if(o+=1,p.toLowerCase()!=="e")return"";const v=Kn(d,o);return v===""?"":p+v}function xi(d,o){const p=d.substr(o,1);if(p==="0")return p;const v=Rn(d,o);return o+=v.length,v===""?"":v+Ee(d,o)}function Xt(d,o){const p=xi(d,o);if(o+=p.length,p==="")return"";const v=d.substr(o,1);if(o+=v.length,v!==".")return"";const C=Ee(d,o);return o+=C.length,p+v+C+qe(d,o)}function Ci(d,o){const p=d.substr(o,1);if(o+=p.length,p!==".")return"";const v=Ee(d,o);return o+=v.length,v===""?"":p+v+qe(d,o)}function _n(d,o){const p=xi(d,o);return o+=p.length,p===""?"":p+qe(d,o)}const $n=Gn([Xt,Ci,_n]);function Xn(d,o){var p;const v=d.substr(o).match(/^[01]+/);return(p=v&&v[0])!==null&&p!==void 0?p:""}function gs(d,o){const p=d.substr(o,2);if(o+=p.length,p.toLowerCase()!=="0b")return"";const v=Xn(d,o);return v===""?"":p+v}function _s(d,o){var p;const v=d.substr(o).match(/^[0-7]+/);return(p=v&&v[0])!==null&&p!==void 0?p:""}function ws(d,o){const p=d.substr(o,2);if(o+=p.length,p.toLowerCase()!=="0o")return"";const v=_s(d,o);return v===""?"":p+v}function ys(d,o){var p;const v=d.substr(o).match(/^[0-9a-f]+/i);return(p=v&&v[0])!==null&&p!==void 0?p:""}function Yn(d,o){const p=d.substr(o,2);if(o+=p.length,p.toLowerCase()!=="0x")return"";const v=ys(d,o);return v===""?"":p+v}const xs=Gn([gs,ws,Yn]),Cs=Gn([xs,$n]);function Yt(d,o){const p=Cs(d,o);return o+=p.length,p===""?null:{evaluable:new Ne(p),cursor:o}}function Pi(d,o){const p=d.substr(o,1);if(o+=p.length,p!=="(")return null;const v=qn(d,o);if(!v)return null;o=v.cursor,o+=vt(d,o).length;const C=d.substr(o,1);return o+=C.length,C!==")"?null:{evaluable:v.evaluable,cursor:o}}function Ps(d,o){var p;return(p=Yt(d,o))!==null&&p!==void 0?p:Pi(d,o)}function wn(d,o){const p=Ps(d,o);if(p)return p;const v=d.substr(o,1);if(o+=v.length,v!=="+"&&v!=="-"&&v!=="~")return null;const C=wn(d,o);return C?(o=C.cursor,{cursor:o,evaluable:new bs(v,C.evaluable)}):null}function Ms(d,o,p){p+=vt(o,p).length;const v=d.filter(C=>o.startsWith(C,p))[0];return v?(p+=v.length,p+=vt(o,p).length,{cursor:p,operator:v}):null}function kt(d,o){return(p,v)=>{const C=d(p,v);if(!C)return null;v=C.cursor;let L=C.evaluable;for(;;){const T=Ms(o,p,v);if(!T)break;v=T.cursor;const R=d(p,v);if(!R)return null;v=R.cursor,L=new fs(T.operator,L,R.evaluable)}return L?{cursor:v,evaluable:L}:null}}const Mi=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((d,o)=>kt(d,o),wn);function qn(d,o){return o+=vt(d,o).length,Mi(d,o)}function ks(d){const o=qn(d,0);return!o||o.cursor+vt(d,o.cursor).length!==d.length?null:o.evaluable}function qt(d){var o;const p=ks(d);return(o=p==null?void 0:p.evaluate())!==null&&o!==void 0?o:null}function Ss(d){if(typeof d=="number")return d;if(typeof d=="string"){const o=qt(d);if(!h(o))return o}return 0}function Le(d){return o=>o.toFixed(Math.max(Math.min(d,20),0))}const Ls=Le(0);function yn(d){return Ls(d)+"%"}function ki(d){return String(d)}function Qn(d,o){for(;d.length<o;)d.push(void 0)}function Si(d){const o=[];return Qn(o,d),X(o)}function Li(d){const o=d.indexOf(void 0);return o<0?d:d.slice(0,o)}function As(d,o){const p=[...Li(d),o];return p.length>d.length?p.splice(0,p.length-d.length):Qn(p,d.length),p}function St({primary:d,secondary:o,forward:p,backward:v}){let C=!1;function L(T){C||(C=!0,T(),C=!1)}d.emitter.on("change",T=>{L(()=>{o.setRawValue(p(d,o),T.options)})}),o.emitter.on("change",T=>{L(()=>{d.setRawValue(v(d,o),T.options)}),L(()=>{o.setRawValue(p(d,o),T.options)})}),L(()=>{o.setRawValue(p(d,o),{forceEmit:!1,last:!0})})}function Lt(d,o){const p=d*(o.altKey?.1:1)*(o.shiftKey?10:1);return o.upKey?+p:o.downKey?-p:0}function Qt(d){return{altKey:d.altKey,downKey:d.key==="ArrowDown",shiftKey:d.shiftKey,upKey:d.key==="ArrowUp"}}function Zn(d){return{altKey:d.altKey,downKey:d.key==="ArrowLeft",shiftKey:d.shiftKey,upKey:d.key==="ArrowRight"}}function Vs(d){return d==="ArrowUp"||d==="ArrowDown"}function Ai(d){return Vs(d)||d==="ArrowLeft"||d==="ArrowRight"}function Wn(d,o){var p,v;const C=o.ownerDocument.defaultView,L=o.getBoundingClientRect();return{x:d.pageX-(((p=C&&C.scrollX)!==null&&p!==void 0?p:0)+L.left),y:d.pageY-(((v=C&&C.scrollY)!==null&&v!==void 0?v:0)+L.top)}}class at{constructor(o){this.lastTouch_=null,this.onDocumentMouseMove_=this.onDocumentMouseMove_.bind(this),this.onDocumentMouseUp_=this.onDocumentMouseUp_.bind(this),this.onMouseDown_=this.onMouseDown_.bind(this),this.onTouchEnd_=this.onTouchEnd_.bind(this),this.onTouchMove_=this.onTouchMove_.bind(this),this.onTouchStart_=this.onTouchStart_.bind(this),this.elem_=o,this.emitter=new y,o.addEventListener("touchstart",this.onTouchStart_,{passive:!1}),o.addEventListener("touchmove",this.onTouchMove_,{passive:!0}),o.addEventListener("touchend",this.onTouchEnd_),o.addEventListener("mousedown",this.onMouseDown_)}computePosition_(o){const p=this.elem_.getBoundingClientRect();return{bounds:{width:p.width,height:p.height},point:o?{x:o.x,y:o.y}:null}}onMouseDown_(o){var p;o.preventDefault(),(p=o.currentTarget)===null||p===void 0||p.focus();const v=this.elem_.ownerDocument;v.addEventListener("mousemove",this.onDocumentMouseMove_),v.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:o.altKey,data:this.computePosition_(Wn(o,this.elem_)),sender:this,shiftKey:o.shiftKey})}onDocumentMouseMove_(o){this.emitter.emit("move",{altKey:o.altKey,data:this.computePosition_(Wn(o,this.elem_)),sender:this,shiftKey:o.shiftKey})}onDocumentMouseUp_(o){const p=this.elem_.ownerDocument;p.removeEventListener("mousemove",this.onDocumentMouseMove_),p.removeEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("up",{altKey:o.altKey,data:this.computePosition_(Wn(o,this.elem_)),sender:this,shiftKey:o.shiftKey})}onTouchStart_(o){o.preventDefault();const p=o.targetTouches.item(0),v=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:o.altKey,data:this.computePosition_(p?{x:p.clientX-v.left,y:p.clientY-v.top}:void 0),sender:this,shiftKey:o.shiftKey}),this.lastTouch_=p}onTouchMove_(o){const p=o.targetTouches.item(0),v=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:o.altKey,data:this.computePosition_(p?{x:p.clientX-v.left,y:p.clientY-v.top}:void 0),sender:this,shiftKey:o.shiftKey}),this.lastTouch_=p}onTouchEnd_(o){var p;const v=(p=o.targetTouches.item(0))!==null&&p!==void 0?p:this.lastTouch_,C=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:o.altKey,data:this.computePosition_(v?{x:v.clientX-C.left,y:v.clientY-C.top}:void 0),sender:this,shiftKey:o.shiftKey})}}function _e(d,o,p,v,C){const L=(d-o)/(p-o);return v+L*(C-v)}function bt(d){return String(d.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function Qe(d,o,p){return Math.min(Math.max(d,o),p)}const je=x("txt");class xn{constructor(o,p){this.onChange_=this.onChange_.bind(this),this.props_=p.props,this.props_.emitter.on("change",this.onChange_),this.element=o.createElement("div"),this.element.classList.add(je(),je(void 0,"num")),p.arrayPosition&&this.element.classList.add(je(void 0,p.arrayPosition)),p.viewProps.bindClassModifiers(this.element);const v=o.createElement("input");v.classList.add(je("i")),v.type="text",p.viewProps.bindDisabled(v),this.element.appendChild(v),this.inputElement=v,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=p.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add(je()),this.inputElement.classList.add(je("i"));const C=o.createElement("div");C.classList.add(je("k")),this.element.appendChild(C),this.knobElement=C;const L=o.createElementNS(we,"svg");L.classList.add(je("g")),this.knobElement.appendChild(L);const T=o.createElementNS(we,"path");T.classList.add(je("gb")),L.appendChild(T),this.guideBodyElem_=T;const R=o.createElementNS(we,"path");R.classList.add(je("gh")),L.appendChild(R),this.guideHeadElem_=R;const oe=o.createElement("div");oe.classList.add(x("tt")()),this.knobElement.appendChild(oe),this.tooltipElem_=oe,p.value.emitter.on("change",this.onChange_),this.value=p.value,this.refresh()}onDraggingChange_(o){if(o.rawValue===null){this.element.classList.remove(je(void 0,"drg"));return}this.element.classList.add(je(void 0,"drg"));const p=o.rawValue/this.props_.get("draggingScale"),v=p+(p>0?-1:p<0?1:0),C=Qe(-v,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${v+C},0 L${v},4 L${v+C},8`,`M ${p},-1 L${p},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${p},4`);const L=this.props_.get("formatter");this.tooltipElem_.textContent=L(this.value.rawValue),this.tooltipElem_.style.left=`${p}px`}refresh(){const o=this.props_.get("formatter");this.inputElement.value=o(this.value.rawValue)}onChange_(){this.refresh()}}class Jn{constructor(o,p){var v;this.originRawValue_=0,this.onInputChange_=this.onInputChange_.bind(this),this.onInputKeyDown_=this.onInputKeyDown_.bind(this),this.onInputKeyUp_=this.onInputKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=p.baseStep,this.parser_=p.parser,this.props=p.props,this.sliderProps_=(v=p.sliderProps)!==null&&v!==void 0?v:null,this.value=p.value,this.viewProps=p.viewProps,this.dragging_=X(null),this.view=new xn(o,{arrayPosition:p.arrayPosition,dragging:this.dragging_,props:this.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.inputElement.addEventListener("keydown",this.onInputKeyDown_),this.view.inputElement.addEventListener("keyup",this.onInputKeyUp_);const C=new at(this.view.knobElement);C.emitter.on("down",this.onPointerDown_),C.emitter.on("move",this.onPointerMove_),C.emitter.on("up",this.onPointerUp_)}constrainValue_(o){var p,v;const C=(p=this.sliderProps_)===null||p===void 0?void 0:p.get("minValue"),L=(v=this.sliderProps_)===null||v===void 0?void 0:v.get("maxValue");let T=o;return C!==void 0&&(T=Math.max(T,C)),L!==void 0&&(T=Math.min(T,L)),T}onInputChange_(o){const v=o.currentTarget.value,C=this.parser_(v);h(C)||(this.value.rawValue=this.constrainValue_(C)),this.view.refresh()}onInputKeyDown_(o){const p=Lt(this.baseStep_,Qt(o));p!==0&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+p),{forceEmit:!1,last:!1})}onInputKeyUp_(o){Lt(this.baseStep_,Qt(o))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}onPointerDown_(){this.originRawValue_=this.value.rawValue,this.dragging_.rawValue=0}computeDraggingValue_(o){if(!o.point)return null;const p=o.point.x-o.bounds.width/2;return this.constrainValue_(this.originRawValue_+p*this.props.get("draggingScale"))}onPointerMove_(o){const p=this.computeDraggingValue_(o.data);p!==null&&(this.value.setRawValue(p,{forceEmit:!1,last:!1}),this.dragging_.rawValue=this.value.rawValue-this.originRawValue_)}onPointerUp_(o){const p=this.computeDraggingValue_(o.data);p!==null&&(this.value.setRawValue(p,{forceEmit:!0,last:!0}),this.dragging_.rawValue=null)}}function Hn(d,o){d.write(o)}function Zt(d){const o=d?ot(d,D):null;return o?o.step:null}function Vi(d,o){const p=d&&ot(d,D);return p?bt(p.step):Math.max(bt(o),2)}function Ii(d){const o=Zt(d);return o??1}function Di(d,o){var p;const v=d&&ot(d,D),C=Math.abs((p=v==null?void 0:v.step)!==null&&p!==void 0?p:o);return C===0?.1:Math.pow(10,Math.floor(Math.log10(C))-1)}function Wt(d){return[d[0],d[1],d[2]]}function Ti(d){const o=Qe(Math.floor(d),0,255).toString(16);return o.length===1?`0${o}`:o}function Cn(d,o="#"){const p=Wt(d.getComponents("rgb")).map(Ti).join("");return`${o}${p}`}function Is(d,o="#"){const p=d.getComponents("rgb"),v=[p[0],p[1],p[2],p[3]*255].map(Ti).join("");return`${o}${v}`}function Oi(d,o){const p=Le(o==="float"?2:0);return`rgb(${Wt(d.getComponents("rgb",o)).map(C=>p(C)).join(", ")})`}function Ei(d){return o=>Oi(o,d)}function Ds(d,o){const p=Le(2),v=Le(o==="float"?2:0);return`rgba(${d.getComponents("rgb",o).map((L,T)=>(T===3?p:v)(L)).join(", ")})`}function Ts(d){return o=>Ds(o,d)}function Os(d){const o=[Le(0),yn,yn];return`hsl(${Wt(d.getComponents("hsl")).map((v,C)=>o[C](v)).join(", ")})`}function Es(d){const o=[Le(0),yn,yn,Le(2)];return`hsla(${d.getComponents("hsl").map((v,C)=>o[C](v)).join(", ")})`}function Bs(d,o){const p=Le(o==="float"?2:0),v=["r","g","b"];return`{${Wt(d.getComponents("rgb",o)).map((L,T)=>`${v[T]}: ${p(L)}`).join(", ")}}`}function ei(d){return o=>Bs(o,d)}function Jt(d,o){const p=Le(2),v=Le(o==="float"?2:0),C=["r","g","b","a"];return`{${d.getComponents("rgb",o).map((T,R)=>{const oe=R===3?p:v;return`${C[R]}: ${oe(T)}`}).join(", ")}}`}function Ns(d){return o=>Jt(o,d)}[...["int","float"].reduce((d,o)=>[...d,{format:{alpha:!1,mode:"rgb",notation:"func",type:o},stringifier:Ei(o)},{format:{alpha:!0,mode:"rgb",notation:"func",type:o},stringifier:Ts(o)},{format:{alpha:!1,mode:"rgb",notation:"object",type:o},stringifier:ei(o)},{format:{alpha:!0,mode:"rgb",notation:"object",type:o},stringifier:Ns(o)}],[])];class Ht{constructor(o){this.components=o.components,this.asm_=o.assembly}constrain(o){const p=this.asm_.toComponents(o).map((v,C)=>{var L,T;return(T=(L=this.components[C])===null||L===void 0?void 0:L.constrain(v))!==null&&T!==void 0?T:v});return this.asm_.fromComponents(p)}}const Bi=x("pndtxt");class ti{constructor(o,p){this.textViews=p.textViews,this.element=o.createElement("div"),this.element.classList.add(Bi()),this.textViews.forEach(v=>{const C=o.createElement("div");C.classList.add(Bi("a")),C.appendChild(v.element),this.element.appendChild(C)})}}function Ni(d,o,p){return new Jn(d,{arrayPosition:p===0?"fst":p===o.axes.length-1?"lst":"mid",baseStep:o.axes[p].baseStep,parser:o.parser,props:o.axes[p].textProps,value:X(0,{constraint:o.axes[p].constraint}),viewProps:o.viewProps})}class ni{constructor(o,p){this.value=p.value,this.viewProps=p.viewProps,this.acs_=p.axes.map((v,C)=>Ni(o,p,C)),this.acs_.forEach((v,C)=>{St({primary:this.value,secondary:v.value,forward:L=>p.assembly.toComponents(L.rawValue)[C],backward:(L,T)=>{const R=p.assembly.toComponents(L.rawValue);return R[C]=T.rawValue,p.assembly.fromComponents(R)}})}),this.view=new ti(o,{textViews:this.acs_.map(v=>v.view)})}}function Fs(d,o){return"step"in d&&!h(d.step)?new D(d.step,o):null}function js(d){return!h(d.max)&&!h(d.min)?new nt({max:d.max,min:d.min}):!h(d.max)||!h(d.min)?new ft({max:d.max,min:d.min}):null}const zs={monitor:{defaultInterval:200,defaultLineCount:3}},lt=x("grl");class Us{constructor(o,p){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=o.createElement("div"),this.element.classList.add(lt()),p.viewProps.bindClassModifiers(this.element),this.formatter_=p.formatter,this.props_=p.props,this.cursor_=p.cursor,this.cursor_.emitter.on("change",this.onCursorChange_);const v=o.createElementNS(we,"svg");v.classList.add(lt("g")),v.style.height=`calc(var(--bld-us) * ${p.lineCount})`,this.element.appendChild(v),this.svgElem_=v;const C=o.createElementNS(we,"polyline");this.svgElem_.appendChild(C),this.lineElem_=C;const L=o.createElement("div");L.classList.add(lt("t"),x("tt")()),this.element.appendChild(L),this.tooltipElem_=L,p.value.emitter.on("change",this.onValueUpdate_),this.value=p.value,this.update_()}get graphElement(){return this.svgElem_}update_(){const o=this.svgElem_.getBoundingClientRect(),p=this.value.rawValue.length-1,v=this.props_.get("minValue"),C=this.props_.get("maxValue"),L=[];this.value.rawValue.forEach((De,hi)=>{if(De===void 0)return;const nr=_e(hi,0,p,0,o.width),di=_e(De,v,C,o.height,0);L.push([nr,di].join(","))}),this.lineElem_.setAttributeNS(null,"points",L.join(" "));const T=this.tooltipElem_,R=this.value.rawValue[this.cursor_.rawValue];if(R===void 0){T.classList.remove(lt("t","a"));return}const oe=_e(this.cursor_.rawValue,0,p,0,o.width),J=_e(R,v,C,o.height,0);T.style.left=`${oe}px`,T.style.top=`${J}px`,T.textContent=`${this.formatter_(R)}`,T.classList.contains(lt("t","a"))||(T.classList.add(lt("t","a"),lt("t","in")),Xe(T),T.classList.remove(lt("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class Gs{constructor(o,p){if(this.onGraphMouseMove_=this.onGraphMouseMove_.bind(this),this.onGraphMouseLeave_=this.onGraphMouseLeave_.bind(this),this.onGraphPointerDown_=this.onGraphPointerDown_.bind(this),this.onGraphPointerMove_=this.onGraphPointerMove_.bind(this),this.onGraphPointerUp_=this.onGraphPointerUp_.bind(this),this.props_=p.props,this.value=p.value,this.viewProps=p.viewProps,this.cursor_=X(-1),this.view=new Us(o,{cursor:this.cursor_,formatter:p.formatter,lineCount:p.lineCount,props:this.props_,value:this.value,viewProps:this.viewProps}),!Ge(o))this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_);else{const v=new at(this.view.element);v.emitter.on("down",this.onGraphPointerDown_),v.emitter.on("move",this.onGraphPointerMove_),v.emitter.on("up",this.onGraphPointerUp_)}}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(o){const p=this.view.element.getBoundingClientRect();this.cursor_.rawValue=Math.floor(_e(o.offsetX,0,p.width,0,this.value.rawValue.length))}onGraphPointerDown_(o){this.onGraphPointerMove_(o)}onGraphPointerMove_(o){if(!o.data.point){this.cursor_.rawValue=-1;return}this.cursor_.rawValue=Math.floor(_e(o.data.point.x,0,o.data.bounds.width,0,this.value.rawValue.length))}onGraphPointerUp_(){this.cursor_.rawValue=-1}}class Fi{constructor(o){this.controller_=o}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(o){this.controller_.viewProps.set("disabled",o)}get title(){var o;return(o=this.controller_.props.get("title"))!==null&&o!==void 0?o:""}set title(o){this.controller_.props.set("title",o)}on(o,p){const v=p.bind(this);return this.controller_.emitter.on(o,()=>{v(new a(this))}),this}}class Rs extends a{constructor(o,p,v){super(o),this.cell=p,this.index=v}}class ji extends s{constructor(o){super(o),this.cellToApiMap_=new Map,this.emitter_=new y;const p=this.controller_.valueController;p.cellControllers.forEach((v,C)=>{const L=new Fi(v);this.cellToApiMap_.set(v,L),v.emitter.on("click",()=>{const T=C%p.size[0],R=Math.floor(C/p.size[0]);this.emitter_.emit("click",{event:new Rs(this,L,[T,R])})})})}cell(o,p){const v=this.controller_.valueController,C=v.cellControllers[p*v.size[0]+o];return this.cellToApiMap_.get(C)}on(o,p){const v=p.bind(this);return this.emitter_.on(o,C=>{v(C.event)}),this}}class ii{constructor(o,p){this.size=p.size;const[v,C]=this.size,L=[];for(let T=0;T<C;T++)for(let R=0;R<v;R++){const oe=new $(o,{props:Y.fromObject(Object.assign({},p.cellConfig(R,T))),viewProps:be.create()});L.push(oe)}this.cellCs_=L,this.viewProps=be.create(),this.viewProps.handleDispose(()=>{this.cellCs_.forEach(T=>{T.viewProps.set("disposed",!0)})}),this.view=new rt(o,{viewProps:this.viewProps,viewName:"btngrid"}),this.view.element.style.gridTemplateColumns=`repeat(${v}, 1fr)`,this.cellCs_.forEach(T=>{this.view.element.appendChild(T.view.element)})}get cellControllers(){return this.cellCs_}}const Ks={id:"buttongrid",type:"blade",css:'.tp-cbzgv,.tp-radv_b,.tp-rslv_k,.tp-cbzv_b{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-radv_b,.tp-rslv_k,.tp-cbzv_b{background-color:var(--btn-bg);border-radius:var(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-radv_b:hover,.tp-rslv_k:hover,.tp-cbzv_b:hover{background-color:var(--btn-bg-h)}.tp-radv_b:focus,.tp-rslv_k:focus,.tp-cbzv_b:focus{background-color:var(--btn-bg-f)}.tp-radv_b:active,.tp-rslv_k:active,.tp-cbzv_b:active{background-color:var(--btn-bg-a)}.tp-radv_b:disabled,.tp-rslv_k:disabled,.tp-cbzv_b:disabled{opacity:.5}.tp-cbzgv{background-color:var(--in-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);min-width:0;width:100%}.tp-cbzgv:hover{background-color:var(--in-bg-h)}.tp-cbzgv:focus{background-color:var(--in-bg-f)}.tp-cbzgv:active{background-color:var(--in-bg-a)}.tp-cbzgv:disabled{opacity:.5}.tp-btngridv{border-radius:var(--elm-br);display:grid;overflow:hidden;gap:2px}.tp-btngridv.tp-v-disabled{opacity:.5}.tp-btngridv .tp-btnv_b:disabled{opacity:1}.tp-btngridv .tp-btnv_b:disabled .tp-btnv_t{opacity:.5}.tp-btngridv .tp-btnv_b{border-radius:0}.tp-cbzv{position:relative}.tp-cbzv_h{display:flex}.tp-cbzv_b{margin-right:4px;position:relative;width:var(--bld-us)}.tp-cbzv_b svg{display:block;height:16px;left:50%;margin-left:-8px;margin-top:-8px;position:absolute;top:50%;width:16px}.tp-cbzv_b svg path{stroke:var(--bs-bg);stroke-width:2}.tp-cbzv_t{flex:1}.tp-cbzv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-cbzv.tp-cbzv-expanded .tp-cbzv_p{margin-top:var(--bld-s);opacity:1}.tp-cbzv.tp-cbzv-cpl .tp-cbzv_p{overflow:visible}.tp-cbzv .tp-popv{left:calc(-1*var(--cnt-h-p));position:absolute;right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-cbzpv_t{margin-top:var(--bld-s)}.tp-cbzgv{height:auto;overflow:hidden;position:relative}.tp-cbzgv.tp-v-disabled{opacity:.5}.tp-cbzgv_p{left:16px;position:absolute;right:16px;top:0}.tp-cbzgv_g{cursor:pointer;display:block;height:calc(var(--bld-us)*5);width:100%}.tp-cbzgv_u{opacity:.1;stroke:var(--in-fg);stroke-dasharray:1}.tp-cbzgv_l{fill:rgba(0,0,0,0);stroke:var(--in-fg)}.tp-cbzgv_v{opacity:.5;stroke:var(--in-fg);stroke-dasharray:1}.tp-cbzgv_h{border:var(--in-fg) solid 1px;border-radius:50%;box-sizing:border-box;height:4px;margin-left:-2px;margin-top:-2px;pointer-events:none;position:absolute;width:4px}.tp-cbzgv:focus .tp-cbzgv_h-sel{background-color:var(--in-fg);border-width:0}.tp-cbzprvv{cursor:pointer;height:4px;padding:4px 0;position:relative}.tp-cbzprvv_g{display:block;height:100%;overflow:visible;width:100%}.tp-cbzprvv_t{opacity:.5;stroke:var(--mo-fg)}.tp-cbzprvv_m{background-color:var(--mo-fg);border-radius:50%;height:4px;margin-left:-2px;margin-top:-2px;opacity:0;position:absolute;top:50%;transition:opacity .2s ease-out;width:4px}.tp-cbzprvv_m.tp-cbzprvv_m-a{opacity:1}.tp-fpsv{position:relative}.tp-fpsv_l{bottom:4px;color:var(--mo-fg);line-height:1;right:4px;pointer-events:none;position:absolute}.tp-fpsv_u{margin-left:.2em;opacity:.7}.tp-rslv{cursor:pointer;padding-left:8px;padding-right:8px}.tp-rslv.tp-v-disabled{opacity:.5}.tp-rslv_t{height:calc(var(--bld-us));position:relative}.tp-rslv_t::before{background-color:var(--in-bg);border-radius:1px;content:"";height:2px;margin-top:-1px;position:absolute;top:50%;left:-4px;right:-4px}.tp-rslv_b{bottom:0;top:0;position:absolute}.tp-rslv_b::before{background-color:var(--in-fg);content:"";height:2px;margin-top:-1px;position:absolute;top:50%;left:0;right:0}.tp-rslv_k{height:calc(var(--bld-us) - 8px);margin-top:calc((var(--bld-us) - 8px)/-2);position:absolute;top:50%;width:8px}.tp-rslv_k.tp-rslv_k-min{margin-left:-8px}.tp-rslv_k.tp-rslv_k-max{margin-left:0}.tp-rslv.tp-rslv-zero .tp-rslv_k.tp-rslv_k-min{border-bottom-right-radius:0;border-top-right-radius:0}.tp-rslv.tp-rslv-zero .tp-rslv_k.tp-rslv_k-max{border-bottom-left-radius:0;border-top-left-radius:0}.tp-rsltxtv{display:flex}.tp-rsltxtv_s{flex:1}.tp-rsltxtv_t{flex:1;margin-left:4px}.tp-radv_l{display:block;position:relative}.tp-radv_i{left:0;opacity:0;position:absolute;top:0}.tp-radv_b{opacity:.5}.tp-radv_i:hover+.tp-radv_b{background-color:var(--btn-bg-h)}.tp-radv_i:focus+.tp-radv_b{background-color:var(--btn-bg-f)}.tp-radv_i:active+.tp-radv_b{background-color:var(--btn-bg-a)}.tp-radv_i:checked+.tp-radv_b{opacity:1}.tp-radv_t{bottom:0;color:inherit;left:0;overflow:hidden;position:absolute;right:0;text-align:center;text-overflow:ellipsis;top:0}.tp-radv_i:disabled+.tp-radv_b>.tp-radv_t{opacity:.5}.tp-radgridv{border-radius:var(--elm-br);display:grid;overflow:hidden;gap:2px}.tp-radgridv.tp-v-disabled{opacity:.5}.tp-radgridv .tp-radv_b{border-radius:0}',accept(d){const o=he,p=te(d,{cells:o.required.function,size:o.required.array(o.required.number),view:o.required.constant("buttongrid"),label:o.optional.string});return p?{params:p}:null},controller(d){return new Ye(d.document,{blade:d.blade,props:Y.fromObject({label:d.params.label}),valueController:new ii(d.document,{cellConfig:d.params.cells,size:d.params.size})})},api(d){return!(d.controller instanceof Ye)||!(d.controller.valueController instanceof ii)?null:new ji(d.controller)}};class zi extends s{get label(){return this.controller_.props.get("label")}set label(o){this.controller_.props.set("label",o)}get value(){return this.controller_.valueController.value.rawValue}set value(o){this.controller_.valueController.value.rawValue=o}on(o,p){const v=p.bind(this);return this.controller_.valueController.value.emitter.on(o,C=>{v(new c(this,C.rawValue,void 0,C.options.last))}),this}}function Re(d,o,p){return d*(1-p)+o*p}const $s=20,Ui=.001,si=100;function Xs(d,o){let p=.25,v=.5,C=-1;for(let L=0;L<$s;L++){const[T,R]=d.curve(v);if(v+=p*(T<o?1:-1),C=R,p*=.5,Math.abs(o-T)<Ui)break}return C}class ct{constructor(o=0,p=0,v=1,C=1){this.cache_=[],this.comps_=[o,p,v,C]}get x1(){return this.comps_[0]}get y1(){return this.comps_[1]}get x2(){return this.comps_[2]}get y2(){return this.comps_[3]}static isObject(o){return h(o)||!Array.isArray(o)?!1:typeof o[0]=="number"&&typeof o[1]=="number"&&typeof o[2]=="number"&&typeof o[3]=="number"}static equals(o,p){return o.x1===p.x1&&o.y1===p.y1&&o.x2===p.x2&&o.y2===p.y2}curve(o){const p=Re(0,this.x1,o),v=Re(0,this.y1,o),C=Re(this.x1,this.x2,o),L=Re(this.y1,this.y2,o),T=Re(this.x2,1,o),R=Re(this.y2,1,o),oe=Re(p,C,o),J=Re(v,L,o),De=Re(C,T,o),hi=Re(L,R,o);return[Re(oe,De,o),Re(J,hi,o)]}y(o){if(this.cache_.length===0){const p=[];for(let v=0;v<si;v++)p.push(Xs(this,_e(v,0,si-1,0,1)));this.cache_=p}return this.cache_[Math.round(_e(Qe(o,0,1),0,1,0,si-1))]}toObject(){return[this.comps_[0],this.comps_[1],this.comps_[2],this.comps_[3]]}}const Pn={toComponents:d=>d.toObject(),fromComponents:d=>new ct(...d)};function Ys(d){const o=Le(2);return`cubic-bezier(${d.toObject().map(v=>o(v)).join(", ")})`}const Ze=[0,.5,.5,1];function Gi(d){const o=d.match(/^cubic-bezier\s*\(\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)\s*\)$/);if(!o)return new ct(...Ze);const p=[o[1],o[2],o[3],o[4]].reduce((v,C)=>{if(!v)return null;const L=Number(C);return isNaN(L)?null:[...v,L]},[]);return new ct(...p??Ze)}const gt=x("cbz");class Ae{constructor(o,p){this.element=o.createElement("div"),this.element.classList.add(gt()),p.viewProps.bindClassModifiers(this.element),p.foldable.bindExpandedClass(this.element,gt(void 0,"expanded")),O(p.foldable,"completed",z(this.element,gt(void 0,"cpl")));const v=o.createElement("div");v.classList.add(gt("h")),this.element.appendChild(v);const C=o.createElement("button");C.classList.add(gt("b")),p.viewProps.bindDisabled(C);const L=o.createElementNS(we,"svg");L.innerHTML='<path d="M2 13C8 13 8 3 14 3"/>',C.appendChild(L),v.appendChild(C),this.buttonElement=C;const T=o.createElement("div");if(T.classList.add(gt("t")),v.appendChild(T),this.textElement=T,p.pickerLayout==="inline"){const R=o.createElement("div");R.classList.add(gt("p")),this.element.appendChild(R),this.pickerElement=R}else this.pickerElement=null}}const ri=x("cbzp");class en{constructor(o,p){this.element=o.createElement("div"),this.element.classList.add(ri()),p.viewProps.bindClassModifiers(this.element);const v=o.createElement("div");v.classList.add(ri("g")),this.element.appendChild(v),this.graphElement=v;const C=o.createElement("div");C.classList.add(ri("t")),this.element.appendChild(C),this.textElement=C}}function oi(d,o){const p=new MutationObserver(C=>{for(const L of C)L.type==="childList"&&L.addedNodes.forEach(T=>{T.contains(T)&&(o(),p.disconnect())})}),v=d.ownerDocument;p.observe(v.body,{attributes:!0,childList:!0,subtree:!0})}const We=x("cbzg");function Ri(d,o){return p=>o(d(p))}class Ki{constructor(o,p){this.element=o.createElement("div"),this.element.classList.add(We()),p.viewProps.bindClassModifiers(this.element),p.viewProps.bindTabIndex(this.element);const v=o.createElement("div");v.classList.add(We("p")),this.element.appendChild(v),this.previewElement=v;const C=o.createElementNS(we,"svg");C.classList.add(We("g")),this.element.appendChild(C),this.svgElem_=C;const L=o.createElementNS(we,"path");L.classList.add(We("u")),this.svgElem_.appendChild(L),this.guideElem_=L;const T=o.createElementNS(we,"polyline");T.classList.add(We("l")),this.svgElem_.appendChild(T),this.lineElem_=T,this.handleElems_=[o.createElement("div"),o.createElement("div")],this.handleElems_.forEach(R=>{R.classList.add(We("h")),this.element.appendChild(R)}),this.vectorElems_=[o.createElementNS(we,"line"),o.createElementNS(we,"line")],this.vectorElems_.forEach(R=>{R.classList.add(We("v")),this.svgElem_.appendChild(R)}),this.value_=p.value,this.value_.emitter.on("change",this.onValueChange_.bind(this)),this.sel_=p.selection,this.handleElems_.forEach((R,oe)=>{I(this.sel_,Ri(J=>J===oe,z(R,We("h","sel"))))}),oi(this.element,()=>{this.refresh()})}getVertMargin_(o){return o*.25}valueToPosition(o,p){const v=this.element.getBoundingClientRect(),C=v.width,L=v.height,T=this.getVertMargin_(L);return{x:_e(o,0,1,0,C),y:_e(p,0,1,L-T,T)}}positionToValue(o,p){const v=this.element.getBoundingClientRect(),C=v.width,L=v.height,T=this.getVertMargin_(L);return{x:Qe(_e(o,0,C,0,1),0,1),y:_e(p,L-T,T,0,1)}}refresh(){this.guideElem_.setAttributeNS(null,"d",[0,1].map(L=>{const T=this.valueToPosition(0,L),R=this.valueToPosition(1,L);return[`M ${T.x},${T.y}`,`L ${R.x},${R.y}`].join(" ")}).join(" "));const o=this.value_.rawValue,p=[];let v=0;for(;;){const L=this.valueToPosition(...o.curve(v));if(p.push([L.x,L.y].join(",")),v>=1)break;v=Math.min(v+.05,1)}this.lineElem_.setAttributeNS(null,"points",p.join(" "));const C=o.toObject();[0,1].forEach(L=>{const T=this.valueToPosition(L,L),R=this.valueToPosition(C[L*2],C[L*2+1]),oe=this.vectorElems_[L];oe.setAttributeNS(null,"x1",String(T.x)),oe.setAttributeNS(null,"y1",String(T.y)),oe.setAttributeNS(null,"x2",String(R.x)),oe.setAttributeNS(null,"y2",String(R.y));const J=this.handleElems_[L];J.style.left=`${R.x}px`,J.style.top=`${R.y}px`})}onValueChange_(){this.refresh()}}const $i=24,Xi=400,At=1e3,Se=x("cbzprv");class Vt{constructor(o,p){this.stopped_=!0,this.startTime_=-1,this.onDispose_=this.onDispose_.bind(this),this.onTimer_=this.onTimer_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.element=o.createElement("div"),this.element.classList.add(Se()),p.viewProps.bindClassModifiers(this.element);const v=o.createElementNS(we,"svg");v.classList.add(Se("g")),this.element.appendChild(v),this.svgElem_=v;const C=o.createElementNS(we,"path");C.classList.add(Se("t")),this.svgElem_.appendChild(C),this.ticksElem_=C;const L=o.createElement("div");L.classList.add(Se("m")),this.element.appendChild(L),this.markerElem_=L,this.value_=p.value,this.value_.emitter.on("change",this.onValueChange_),p.viewProps.handleDispose(this.onDispose_),oi(this.element,()=>{this.refresh()})}play(){this.stop(),this.updateMarker_(0),this.markerElem_.classList.add(Se("m","a")),this.startTime_=new Date().getTime()+Xi,this.stopped_=!1,requestAnimationFrame(this.onTimer_)}stop(){this.stopped_=!0,this.markerElem_.classList.remove(Se("m","a"))}onDispose_(){this.stop()}updateMarker_(o){const p=this.value_.rawValue.y(Qe(o,0,1));this.markerElem_.style.left=`${p*100}%`}refresh(){const o=this.svgElem_.getBoundingClientRect(),p=o.width,v=o.height,C=[],L=this.value_.rawValue;for(let T=0;T<$i;T++){const R=_e(T,0,$i-1,0,1),oe=_e(L.y(R),0,1,0,p);C.push(`M ${oe},0 v${v}`)}this.ticksElem_.setAttributeNS(null,"d",C.join(" "))}onTimer_(){if(this.startTime_===null)return;const o=new Date().getTime()-this.startTime_,p=o/At;this.updateMarker_(p),o>At+Xi&&this.stop(),this.stopped_||requestAnimationFrame(this.onTimer_)}onValueChange_(){this.refresh(),this.play()}}function Ke(d,o,p,v){const C=p-d,L=v-o;return Math.sqrt(C*C+L*L)}function qs(d,o,p,v){const C=Ke(d,o,p,v),L=Math.atan2(v-o,p-d),T=Math.round(L/(Math.PI/4))*Math.PI/4;return{x:d+Math.cos(T)*C,y:o+Math.sin(T)*C}}class ai{constructor(o,p){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=p.baseStep,this.value=p.value,this.sel_=X(0),this.viewProps=p.viewProps,this.view=new Ki(o,{selection:this.sel_,value:this.value,viewProps:this.viewProps}),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_),this.prevView_=new Vt(o,{value:this.value,viewProps:this.viewProps}),this.prevView_.element.addEventListener("mousedown",C=>{C.stopImmediatePropagation(),C.preventDefault(),this.prevView_.play()}),this.view.previewElement.appendChild(this.prevView_.element);const v=new at(this.view.element);v.emitter.on("down",this.onPointerDown_),v.emitter.on("move",this.onPointerMove_),v.emitter.on("up",this.onPointerUp_)}refresh(){this.view.refresh(),this.prevView_.refresh(),this.prevView_.play()}updateValue_(o,p,v){const C=this.sel_.rawValue,L=this.value.rawValue.toObject(),T=this.view.positionToValue(o.x,o.y),R=p?qs(C,C,T.x,T.y):T;L[C*2]=R.x,L[C*2+1]=R.y,this.value.setRawValue(new ct(...L),v)}onPointerDown_(o){const p=o.data;if(!p.point)return;const v=this.value.rawValue,C=this.view.valueToPosition(v.x1,v.y1),L=Ke(p.point.x,p.point.y,C.x,C.y),T=this.view.valueToPosition(v.x2,v.y2),R=Ke(p.point.x,p.point.y,T.x,T.y);this.sel_.rawValue=L<=R?0:1,this.updateValue_(p.point,o.shiftKey,{forceEmit:!1,last:!1})}onPointerMove_(o){const p=o.data;p.point&&this.updateValue_(p.point,o.shiftKey,{forceEmit:!1,last:!1})}onPointerUp_(o){const p=o.data;p.point&&this.updateValue_(p.point,o.shiftKey,{forceEmit:!0,last:!0})}onKeyDown_(o){Ai(o.key)&&o.preventDefault();const p=this.sel_.rawValue,v=this.value.rawValue.toObject();v[p*2]+=Lt(this.baseStep_,Zn(o)),v[p*2+1]+=Lt(this.baseStep_,Qt(o)),this.value.setRawValue(new ct(...v),{forceEmit:!1,last:!1})}onKeyUp_(o){Ai(o.key)&&o.preventDefault();const p=Lt(this.baseStep_,Zn(o)),v=Lt(this.baseStep_,Qt(o));p===0&&v===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class Mn{constructor(o,p){this.value=p.value,this.viewProps=p.viewProps,this.view=new en(o,{viewProps:this.viewProps}),this.gc_=new ai(o,{baseStep:p.axis.baseStep,value:this.value,viewProps:this.viewProps}),this.view.graphElement.appendChild(this.gc_.view.element);const v=Object.assign(Object.assign({},p.axis),{constraint:new ft({max:1,min:0})}),C=Object.assign(Object.assign({},p.axis),{constraint:void 0});this.tc_=new ni(o,{assembly:Pn,axes:[v,C,v,C],parser:qt,value:this.value,viewProps:this.viewProps}),this.view.textElement.appendChild(this.tc_.view.element)}get allFocusableElements(){return[this.gc_.view.element,...this.tc_.view.textViews.map(o=>o.inputElement)]}refresh(){this.gc_.refresh()}}class it{constructor(o,p){this.onButtonBlur_=this.onButtonBlur_.bind(this),this.onButtonClick_=this.onButtonClick_.bind(this),this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.value=p.value,this.viewProps=p.viewProps,this.foldable_=mn(p.expanded),this.view=new Ae(o,{foldable:this.foldable_,pickerLayout:p.pickerLayout,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("blur",this.onButtonBlur_),this.view.buttonElement.addEventListener("click",this.onButtonClick_),this.tc_=new Mt(o,{parser:Gi,props:Y.fromObject({formatter:Ys}),value:this.value,viewProps:this.viewProps}),this.view.textElement.appendChild(this.tc_.view.element),this.popC_=p.pickerLayout==="popup"?new ie(o,{viewProps:this.viewProps}):null;const v=new Mn(o,{axis:p.axis,value:this.value,viewProps:this.viewProps});v.allFocusableElements.forEach(C=>{C.addEventListener("blur",this.onPopupChildBlur_),C.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=v,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),I(this.popC_.shows,C=>{C&&v.refresh()}),St({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:C=>C.rawValue,backward:(C,L)=>L.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),vn(this.foldable_,this.view.pickerElement))}onButtonBlur_(o){if(!this.popC_)return;const p=o.relatedTarget;(!p||!this.popC_.view.element.contains(p))&&(this.popC_.shows.rawValue=!1)}onButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.allFocusableElements[0].focus()}onPopupChildBlur_(o){if(!this.popC_)return;const p=this.popC_.view.element,v=Gt(o);v&&p.contains(v)||v&&v===this.view.buttonElement&&!Ge(p.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(o){this.popC_&&o.key==="Escape"&&(this.popC_.shows.rawValue=!1)}}function xe(){return new Ht({assembly:Pn,components:[0,1,2,3].map(d=>d%2===0?new ft({min:0,max:1}):void 0)})}const Yi={id:"cubic-bezier",type:"blade",css:'.tp-cbzgv,.tp-radv_b,.tp-rslv_k,.tp-cbzv_b{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-radv_b,.tp-rslv_k,.tp-cbzv_b{background-color:var(--btn-bg);border-radius:var(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-radv_b:hover,.tp-rslv_k:hover,.tp-cbzv_b:hover{background-color:var(--btn-bg-h)}.tp-radv_b:focus,.tp-rslv_k:focus,.tp-cbzv_b:focus{background-color:var(--btn-bg-f)}.tp-radv_b:active,.tp-rslv_k:active,.tp-cbzv_b:active{background-color:var(--btn-bg-a)}.tp-radv_b:disabled,.tp-rslv_k:disabled,.tp-cbzv_b:disabled{opacity:.5}.tp-cbzgv{background-color:var(--in-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);min-width:0;width:100%}.tp-cbzgv:hover{background-color:var(--in-bg-h)}.tp-cbzgv:focus{background-color:var(--in-bg-f)}.tp-cbzgv:active{background-color:var(--in-bg-a)}.tp-cbzgv:disabled{opacity:.5}.tp-btngridv{border-radius:var(--elm-br);display:grid;overflow:hidden;gap:2px}.tp-btngridv.tp-v-disabled{opacity:.5}.tp-btngridv .tp-btnv_b:disabled{opacity:1}.tp-btngridv .tp-btnv_b:disabled .tp-btnv_t{opacity:.5}.tp-btngridv .tp-btnv_b{border-radius:0}.tp-cbzv{position:relative}.tp-cbzv_h{display:flex}.tp-cbzv_b{margin-right:4px;position:relative;width:var(--bld-us)}.tp-cbzv_b svg{display:block;height:16px;left:50%;margin-left:-8px;margin-top:-8px;position:absolute;top:50%;width:16px}.tp-cbzv_b svg path{stroke:var(--bs-bg);stroke-width:2}.tp-cbzv_t{flex:1}.tp-cbzv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-cbzv.tp-cbzv-expanded .tp-cbzv_p{margin-top:var(--bld-s);opacity:1}.tp-cbzv.tp-cbzv-cpl .tp-cbzv_p{overflow:visible}.tp-cbzv .tp-popv{left:calc(-1*var(--cnt-h-p));position:absolute;right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-cbzpv_t{margin-top:var(--bld-s)}.tp-cbzgv{height:auto;overflow:hidden;position:relative}.tp-cbzgv.tp-v-disabled{opacity:.5}.tp-cbzgv_p{left:16px;position:absolute;right:16px;top:0}.tp-cbzgv_g{cursor:pointer;display:block;height:calc(var(--bld-us)*5);width:100%}.tp-cbzgv_u{opacity:.1;stroke:var(--in-fg);stroke-dasharray:1}.tp-cbzgv_l{fill:rgba(0,0,0,0);stroke:var(--in-fg)}.tp-cbzgv_v{opacity:.5;stroke:var(--in-fg);stroke-dasharray:1}.tp-cbzgv_h{border:var(--in-fg) solid 1px;border-radius:50%;box-sizing:border-box;height:4px;margin-left:-2px;margin-top:-2px;pointer-events:none;position:absolute;width:4px}.tp-cbzgv:focus .tp-cbzgv_h-sel{background-color:var(--in-fg);border-width:0}.tp-cbzprvv{cursor:pointer;height:4px;padding:4px 0;position:relative}.tp-cbzprvv_g{display:block;height:100%;overflow:visible;width:100%}.tp-cbzprvv_t{opacity:.5;stroke:var(--mo-fg)}.tp-cbzprvv_m{background-color:var(--mo-fg);border-radius:50%;height:4px;margin-left:-2px;margin-top:-2px;opacity:0;position:absolute;top:50%;transition:opacity .2s ease-out;width:4px}.tp-cbzprvv_m.tp-cbzprvv_m-a{opacity:1}.tp-fpsv{position:relative}.tp-fpsv_l{bottom:4px;color:var(--mo-fg);line-height:1;right:4px;pointer-events:none;position:absolute}.tp-fpsv_u{margin-left:.2em;opacity:.7}.tp-rslv{cursor:pointer;padding-left:8px;padding-right:8px}.tp-rslv.tp-v-disabled{opacity:.5}.tp-rslv_t{height:calc(var(--bld-us));position:relative}.tp-rslv_t::before{background-color:var(--in-bg);border-radius:1px;content:"";height:2px;margin-top:-1px;position:absolute;top:50%;left:-4px;right:-4px}.tp-rslv_b{bottom:0;top:0;position:absolute}.tp-rslv_b::before{background-color:var(--in-fg);content:"";height:2px;margin-top:-1px;position:absolute;top:50%;left:0;right:0}.tp-rslv_k{height:calc(var(--bld-us) - 8px);margin-top:calc((var(--bld-us) - 8px)/-2);position:absolute;top:50%;width:8px}.tp-rslv_k.tp-rslv_k-min{margin-left:-8px}.tp-rslv_k.tp-rslv_k-max{margin-left:0}.tp-rslv.tp-rslv-zero .tp-rslv_k.tp-rslv_k-min{border-bottom-right-radius:0;border-top-right-radius:0}.tp-rslv.tp-rslv-zero .tp-rslv_k.tp-rslv_k-max{border-bottom-left-radius:0;border-top-left-radius:0}.tp-rsltxtv{display:flex}.tp-rsltxtv_s{flex:1}.tp-rsltxtv_t{flex:1;margin-left:4px}.tp-radv_l{display:block;position:relative}.tp-radv_i{left:0;opacity:0;position:absolute;top:0}.tp-radv_b{opacity:.5}.tp-radv_i:hover+.tp-radv_b{background-color:var(--btn-bg-h)}.tp-radv_i:focus+.tp-radv_b{background-color:var(--btn-bg-f)}.tp-radv_i:active+.tp-radv_b{background-color:var(--btn-bg-a)}.tp-radv_i:checked+.tp-radv_b{opacity:1}.tp-radv_t{bottom:0;color:inherit;left:0;overflow:hidden;position:absolute;right:0;text-align:center;text-overflow:ellipsis;top:0}.tp-radv_i:disabled+.tp-radv_b>.tp-radv_t{opacity:.5}.tp-radgridv{border-radius:var(--elm-br);display:grid;overflow:hidden;gap:2px}.tp-radgridv.tp-v-disabled{opacity:.5}.tp-radgridv .tp-radv_b{border-radius:0}',accept(d){const o=he,p=te(d,{value:o.required.array(o.required.number),view:o.required.constant("cubicbezier"),expanded:o.optional.boolean,label:o.optional.string,picker:o.optional.custom(v=>v==="inline"||v==="popup"?v:void 0)});return p?{params:p}:null},controller(d){var o,p;const v=new ct(...d.params.value),C=X(v,{constraint:xe(),equals:ct.equals}),L=new it(d.document,{axis:{baseStep:.1,textProps:Y.fromObject({draggingScale:.01,formatter:Le(2)})},expanded:(o=d.params.expanded)!==null&&o!==void 0?o:!1,pickerLayout:(p=d.params.picker)!==null&&p!==void 0?p:"popup",value:C,viewProps:d.viewProps});return new mt(d.document,{blade:d.blade,props:Y.fromObject({label:d.params.label}),valueController:L})},api(d){return!(d.controller instanceof mt)||!(d.controller.valueController instanceof it)?null:new zi(d.controller)}};class Me extends s{begin(){this.controller_.valueController.begin()}end(){this.controller_.valueController.end()}}const li=20;class ze{constructor(){this.start_=null,this.duration_=0,this.fps_=null,this.frameCount_=0,this.timestamps_=[]}get duration(){return this.duration_}get fps(){return this.fps_}begin(o){this.start_=o.getTime()}calculateFps_(o){if(this.timestamps_.length===0)return null;const p=this.timestamps_[0];return 1e3*(this.frameCount_-p.frameCount)/(o-p.time)}compactTimestamps_(){if(this.timestamps_.length<=li)return;const o=this.timestamps_.length-li;this.timestamps_.splice(0,o);const p=this.timestamps_[0].frameCount;this.timestamps_.forEach(v=>{v.frameCount-=p}),this.frameCount_-=p}end(o){if(this.start_===null)return;const p=o.getTime();this.duration_=p-this.start_,this.start_=null,this.fps_=this.calculateFps_(p),this.timestamps_.push({frameCount:this.frameCount_,time:p}),++this.frameCount_,this.compactTimestamps_()}}const tn=x("fps");class It{constructor(o,p){this.element=o.createElement("div"),this.element.classList.add(tn()),p.viewProps.bindClassModifiers(this.element),this.graphElement=o.createElement("div"),this.graphElement.classList.add(tn("g")),this.element.appendChild(this.graphElement);const v=o.createElement("div");v.classList.add(tn("l")),this.element.appendChild(v);const C=o.createElement("span");C.classList.add(tn("v")),C.textContent="--",v.appendChild(C),this.valueElement=C;const L=o.createElement("span");L.classList.add(tn("u")),L.textContent="FPS",v.appendChild(L)}}class nn{constructor(o,p){this.stopwatch_=new ze,this.onTick_=this.onTick_.bind(this),this.ticker_=p.ticker,this.ticker_.emitter.on("tick",this.onTick_),this.value_=p.value,this.viewProps=p.viewProps,this.view=new It(o,{viewProps:this.viewProps}),this.graphC_=new Gs(o,{formatter:Le(0),lineCount:p.lineCount,props:Y.fromObject({maxValue:p.maxValue,minValue:p.minValue}),value:this.value_,viewProps:this.viewProps}),this.view.graphElement.appendChild(this.graphC_.view.element),this.viewProps.handleDispose(()=>{this.graphC_.viewProps.set("disposed",!0),this.ticker_.dispose()})}begin(){this.stopwatch_.begin(new Date)}end(){this.stopwatch_.end(new Date)}onTick_(){const o=this.stopwatch_.fps;if(o!==null){const p=this.value_.rawValue;this.value_.rawValue=As(p,o),this.view.valueElement.textContent=o.toFixed(0)}}}function Qs(d,o){return o===0?new bn:new Kt(d,o??zs.monitor.defaultInterval)}const Zs={id:"fpsgraph",type:"blade",accept(d){const o=he,p=te(d,{view:o.required.constant("fpsgraph"),interval:o.optional.number,label:o.optional.string,lineCount:o.optional.number,max:o.optional.number,min:o.optional.number});return p?{params:p}:null},controller(d){var o,p,v,C;const L=(o=d.params.interval)!==null&&o!==void 0?o:500;return new Ye(d.document,{blade:d.blade,props:Y.fromObject({label:d.params.label}),valueController:new nn(d.document,{lineCount:(p=d.params.lineCount)!==null&&p!==void 0?p:2,maxValue:(v=d.params.max)!==null&&v!==void 0?v:90,minValue:(C=d.params.min)!==null&&C!==void 0?C:0,ticker:Qs(d.document,L),value:Si(80),viewProps:d.viewProps})})},api(d){return!(d.controller instanceof Ye)||!(d.controller.valueController instanceof nn)?null:new Me(d.controller)}};class Te{constructor(o,p){this.min=o,this.max=p}static isObject(o){if(typeof o!="object"||o===null)return!1;const p=o.min,v=o.max;return!(typeof p!="number"||typeof v!="number")}static equals(o,p){return o.min===p.min&&o.max===p.max}get length(){return this.max-this.min}toObject(){return{min:this.min,max:this.max}}}const ci={fromComponents:d=>new Te(d[0],d[1]),toComponents:d=>[d.min,d.max]};class sn{constructor(o){this.edge=o}constrain(o){var p,v,C,L,T,R,oe,J;if(o.min<=o.max)return new Te((v=(p=this.edge)===null||p===void 0?void 0:p.constrain(o.min))!==null&&v!==void 0?v:o.min,(L=(C=this.edge)===null||C===void 0?void 0:C.constrain(o.max))!==null&&L!==void 0?L:o.max);const De=(o.min+o.max)/2;return new Te((R=(T=this.edge)===null||T===void 0?void 0:T.constrain(De))!==null&&R!==void 0?R:De,(J=(oe=this.edge)===null||oe===void 0?void 0:oe.constrain(De))!==null&&J!==void 0?J:De)}}const _t=x("rsltxt");class rn{constructor(o,p){this.sliderView_=p.sliderView,this.textView_=p.textView,this.element=o.createElement("div"),this.element.classList.add(_t());const v=o.createElement("div");v.classList.add(_t("s")),v.appendChild(this.sliderView_.element),this.element.appendChild(v);const C=o.createElement("div");C.classList.add(_t("t")),C.appendChild(this.textView_.element),this.element.appendChild(C)}}const pt=x("rsl");class st{constructor(o,p){this.onSliderPropsChange_=this.onSliderPropsChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.sliderProps_=p.sliderProps,this.sliderProps_.emitter.on("change",this.onSliderPropsChange_),this.element=o.createElement("div"),this.element.classList.add(pt()),p.viewProps.bindClassModifiers(this.element),this.value_=p.value,this.value_.emitter.on("change",this.onValueChange_);const v=o.createElement("div");v.classList.add(pt("t")),this.element.appendChild(v),this.trackElement=v;const C=o.createElement("div");C.classList.add(pt("b")),v.appendChild(C),this.barElement=C;const L=["min","max"].map(T=>{const R=o.createElement("div");return R.classList.add(pt("k"),pt("k",T)),v.appendChild(R),R});this.knobElements=[L[0],L[1]],this.update_()}valueToX_(o){const p=this.sliderProps_.get("minValue"),v=this.sliderProps_.get("maxValue");return Qe(_e(o,p,v,0,1),0,1)*100}update_(){const o=this.value_.rawValue;o.length===0?this.element.classList.add(pt(void 0,"zero")):this.element.classList.remove(pt(void 0,"zero"));const p=[this.valueToX_(o.min),this.valueToX_(o.max)];this.barElement.style.left=`${p[0]}%`,this.barElement.style.right=`${100-p[1]}%`,this.knobElements.forEach((v,C)=>{v.style.left=`${p[C]}%`})}onSliderPropsChange_(){this.update_()}onValueChange_(){this.update_()}}class pi{constructor(o,p){this.grabbing_=null,this.grabOffset_=0,this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.sliderProps=p.sliderProps,this.viewProps=p.viewProps,this.value=p.value,this.view=new st(o,{sliderProps:this.sliderProps,value:this.value,viewProps:p.viewProps});const v=new at(this.view.trackElement);v.emitter.on("down",this.onPointerDown_),v.emitter.on("move",this.onPointerMove_),v.emitter.on("up",this.onPointerUp_)}ofs_(){return this.grabbing_==="min"?this.view.knobElements[0].getBoundingClientRect().width/2:this.grabbing_==="max"?-this.view.knobElements[1].getBoundingClientRect().width/2:0}valueFromData_(o){if(!o.point)return null;const p=(o.point.x+this.ofs_())/o.bounds.width,v=this.sliderProps.get("minValue"),C=this.sliderProps.get("maxValue");return _e(p,0,1,v,C)}onPointerDown_(o){if(!o.data.point)return;const p=o.data.point.x/o.data.bounds.width,v=this.value.rawValue,C=this.sliderProps.get("minValue"),L=this.sliderProps.get("maxValue"),T=_e(v.min,C,L,0,1),R=_e(v.max,C,L,0,1);Math.abs(R-p)<=.025?this.grabbing_="max":Math.abs(T-p)<=.025?this.grabbing_="min":p>=T&&p<=R?(this.grabbing_="length",this.grabOffset_=_e(p-T,0,1,0,L-C)):p<T?(this.grabbing_="min",this.onPointerMove_(o)):p>R&&(this.grabbing_="max",this.onPointerMove_(o))}applyPointToValue_(o,p){const v=this.valueFromData_(o);if(v===null)return;const C=this.sliderProps.get("minValue"),L=this.sliderProps.get("maxValue");if(this.grabbing_==="min")this.value.setRawValue(new Te(v,this.value.rawValue.max),p);else if(this.grabbing_==="max")this.value.setRawValue(new Te(this.value.rawValue.min,v),p);else if(this.grabbing_==="length"){const T=this.value.rawValue.length;let R=v-this.grabOffset_,oe=R+T;R<C?(R=C,oe=C+T):oe>L&&(R=L-T,oe=L),this.value.setRawValue(new Te(R,oe),p)}}onPointerMove_(o){this.applyPointToValue_(o.data,{forceEmit:!1,last:!1})}onPointerUp_(o){this.applyPointToValue_(o.data,{forceEmit:!0,last:!0}),this.grabbing_=null}}class kn{constructor(o,p){this.value=p.value,this.viewProps=p.viewProps,this.sc_=new pi(o,p);const v={baseStep:p.baseStep,constraint:p.constraint,textProps:Y.fromObject({draggingScale:p.draggingScale,formatter:p.formatter})};this.tc_=new ni(o,{assembly:ci,axes:[v,v],parser:p.parser,value:this.value,viewProps:p.viewProps}),this.view=new rn(o,{sliderView:this.sc_.view,textView:this.tc_.view})}get textController(){return this.tc_}}function Ws(d){return Te.isObject(d)?new Te(d.min,d.max):new Te(0,0)}function Sn(d,o){d.writeProperty("max",o.max),d.writeProperty("min",o.min)}function Dt(d){const o=[],p=js(d);p&&o.push(p);const v=Fs(d);return v&&o.push(v),new sn(new gn(o))}const Tt={id:"input-interval",type:"input",css:'.tp-cbzgv,.tp-radv_b,.tp-rslv_k,.tp-cbzv_b{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-radv_b,.tp-rslv_k,.tp-cbzv_b{background-color:var(--btn-bg);border-radius:var(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-radv_b:hover,.tp-rslv_k:hover,.tp-cbzv_b:hover{background-color:var(--btn-bg-h)}.tp-radv_b:focus,.tp-rslv_k:focus,.tp-cbzv_b:focus{background-color:var(--btn-bg-f)}.tp-radv_b:active,.tp-rslv_k:active,.tp-cbzv_b:active{background-color:var(--btn-bg-a)}.tp-radv_b:disabled,.tp-rslv_k:disabled,.tp-cbzv_b:disabled{opacity:.5}.tp-cbzgv{background-color:var(--in-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);min-width:0;width:100%}.tp-cbzgv:hover{background-color:var(--in-bg-h)}.tp-cbzgv:focus{background-color:var(--in-bg-f)}.tp-cbzgv:active{background-color:var(--in-bg-a)}.tp-cbzgv:disabled{opacity:.5}.tp-btngridv{border-radius:var(--elm-br);display:grid;overflow:hidden;gap:2px}.tp-btngridv.tp-v-disabled{opacity:.5}.tp-btngridv .tp-btnv_b:disabled{opacity:1}.tp-btngridv .tp-btnv_b:disabled .tp-btnv_t{opacity:.5}.tp-btngridv .tp-btnv_b{border-radius:0}.tp-cbzv{position:relative}.tp-cbzv_h{display:flex}.tp-cbzv_b{margin-right:4px;position:relative;width:var(--bld-us)}.tp-cbzv_b svg{display:block;height:16px;left:50%;margin-left:-8px;margin-top:-8px;position:absolute;top:50%;width:16px}.tp-cbzv_b svg path{stroke:var(--bs-bg);stroke-width:2}.tp-cbzv_t{flex:1}.tp-cbzv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-cbzv.tp-cbzv-expanded .tp-cbzv_p{margin-top:var(--bld-s);opacity:1}.tp-cbzv.tp-cbzv-cpl .tp-cbzv_p{overflow:visible}.tp-cbzv .tp-popv{left:calc(-1*var(--cnt-h-p));position:absolute;right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-cbzpv_t{margin-top:var(--bld-s)}.tp-cbzgv{height:auto;overflow:hidden;position:relative}.tp-cbzgv.tp-v-disabled{opacity:.5}.tp-cbzgv_p{left:16px;position:absolute;right:16px;top:0}.tp-cbzgv_g{cursor:pointer;display:block;height:calc(var(--bld-us)*5);width:100%}.tp-cbzgv_u{opacity:.1;stroke:var(--in-fg);stroke-dasharray:1}.tp-cbzgv_l{fill:rgba(0,0,0,0);stroke:var(--in-fg)}.tp-cbzgv_v{opacity:.5;stroke:var(--in-fg);stroke-dasharray:1}.tp-cbzgv_h{border:var(--in-fg) solid 1px;border-radius:50%;box-sizing:border-box;height:4px;margin-left:-2px;margin-top:-2px;pointer-events:none;position:absolute;width:4px}.tp-cbzgv:focus .tp-cbzgv_h-sel{background-color:var(--in-fg);border-width:0}.tp-cbzprvv{cursor:pointer;height:4px;padding:4px 0;position:relative}.tp-cbzprvv_g{display:block;height:100%;overflow:visible;width:100%}.tp-cbzprvv_t{opacity:.5;stroke:var(--mo-fg)}.tp-cbzprvv_m{background-color:var(--mo-fg);border-radius:50%;height:4px;margin-left:-2px;margin-top:-2px;opacity:0;position:absolute;top:50%;transition:opacity .2s ease-out;width:4px}.tp-cbzprvv_m.tp-cbzprvv_m-a{opacity:1}.tp-fpsv{position:relative}.tp-fpsv_l{bottom:4px;color:var(--mo-fg);line-height:1;right:4px;pointer-events:none;position:absolute}.tp-fpsv_u{margin-left:.2em;opacity:.7}.tp-rslv{cursor:pointer;padding-left:8px;padding-right:8px}.tp-rslv.tp-v-disabled{opacity:.5}.tp-rslv_t{height:calc(var(--bld-us));position:relative}.tp-rslv_t::before{background-color:var(--in-bg);border-radius:1px;content:"";height:2px;margin-top:-1px;position:absolute;top:50%;left:-4px;right:-4px}.tp-rslv_b{bottom:0;top:0;position:absolute}.tp-rslv_b::before{background-color:var(--in-fg);content:"";height:2px;margin-top:-1px;position:absolute;top:50%;left:0;right:0}.tp-rslv_k{height:calc(var(--bld-us) - 8px);margin-top:calc((var(--bld-us) - 8px)/-2);position:absolute;top:50%;width:8px}.tp-rslv_k.tp-rslv_k-min{margin-left:-8px}.tp-rslv_k.tp-rslv_k-max{margin-left:0}.tp-rslv.tp-rslv-zero .tp-rslv_k.tp-rslv_k-min{border-bottom-right-radius:0;border-top-right-radius:0}.tp-rslv.tp-rslv-zero .tp-rslv_k.tp-rslv_k-max{border-bottom-left-radius:0;border-top-left-radius:0}.tp-rsltxtv{display:flex}.tp-rsltxtv_s{flex:1}.tp-rsltxtv_t{flex:1;margin-left:4px}.tp-radv_l{display:block;position:relative}.tp-radv_i{left:0;opacity:0;position:absolute;top:0}.tp-radv_b{opacity:.5}.tp-radv_i:hover+.tp-radv_b{background-color:var(--btn-bg-h)}.tp-radv_i:focus+.tp-radv_b{background-color:var(--btn-bg-f)}.tp-radv_i:active+.tp-radv_b{background-color:var(--btn-bg-a)}.tp-radv_i:checked+.tp-radv_b{opacity:1}.tp-radv_t{bottom:0;color:inherit;left:0;overflow:hidden;position:absolute;right:0;text-align:center;text-overflow:ellipsis;top:0}.tp-radv_i:disabled+.tp-radv_b>.tp-radv_t{opacity:.5}.tp-radgridv{border-radius:var(--elm-br);display:grid;overflow:hidden;gap:2px}.tp-radgridv.tp-v-disabled{opacity:.5}.tp-radgridv .tp-radv_b{border-radius:0}',accept:(d,o)=>{if(!Te.isObject(d))return null;const p=he,v=te(o,{format:p.optional.function,max:p.optional.number,min:p.optional.number,step:p.optional.number});return v?{initialValue:new Te(d.min,d.max),params:v}:null},binding:{reader:d=>Ws,constraint:d=>Dt(d.params),equals:Te.equals,writer:d=>Sn},controller(d){var o;const p=d.value,v=d.constraint;if(!(v instanceof sn))throw _.shouldNeverHappen();const C=(p.rawValue.min+p.rawValue.max)/2,L=(o=d.params.format)!==null&&o!==void 0?o:Le(Vi(v.edge,C)),T=v.edge&&ot(v.edge,nt);if(T)return new kn(d.document,{baseStep:Ii(v.edge),constraint:v.edge,draggingScale:Di(v.edge,C),formatter:L,parser:qt,sliderProps:new Y({maxValue:T.values.value("max"),minValue:T.values.value("min")}),value:p,viewProps:d.viewProps});const R={baseStep:Ii(v.edge),constraint:v.edge,textProps:Y.fromObject({draggingScale:C,formatter:L})};return new ni(d.document,{assembly:ci,axes:[R,R],parser:qt,value:p,viewProps:d.viewProps})}};class on{constructor(o){this.controller_=o}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(o){this.controller_.viewProps.set("disabled",o)}get title(){var o;return(o=this.controller_.props.get("title"))!==null&&o!==void 0?o:""}set title(o){this.controller_.props.set("title",o)}}class qi extends c{constructor(o,p,v,C,L){super(o,C,L),this.cell=p,this.index=v}}class Qi extends s{constructor(o){super(o),this.cellToApiMap_=new Map,this.controller_.valueController.cellControllers.forEach(v=>{const C=new on(v);this.cellToApiMap_.set(v,C)})}get value(){return this.controller_.value}cell(o,p){const v=this.controller_.valueController,C=v.cellControllers[p*v.size[0]+o];return this.cellToApiMap_.get(C)}on(o,p){const v=p.bind(this);this.controller_.value.emitter.on(o,C=>{const L=this.controller_.valueController,T=L.findCellByValue(C.rawValue);if(!T)return;const R=this.cellToApiMap_.get(T);if(!R)return;const oe=L.cellControllers.indexOf(T);v(new qi(this,R,[oe%L.size[0],Math.floor(oe/L.size[0])],C.rawValue,void 0))})}}const an=x("rad");class Zi{constructor(o,p){this.element=o.createElement("div"),this.element.classList.add(an()),p.viewProps.bindClassModifiers(this.element);const v=o.createElement("label");v.classList.add(an("l")),this.element.appendChild(v);const C=o.createElement("input");C.classList.add(an("i")),C.name=p.name,C.type="radio",p.viewProps.bindDisabled(C),v.appendChild(C),this.inputElement=C;const L=o.createElement("div");L.classList.add(an("b")),v.appendChild(L);const T=o.createElement("div");T.classList.add(an("t")),L.appendChild(T),O(p.props,"title",R=>{T.textContent=R})}}class ut{constructor(o,p){this.props=p.props,this.viewProps=p.viewProps,this.view=new Zi(o,{name:p.name,props:this.props,viewProps:this.viewProps})}}class Ln{constructor(o,p){this.cellCs_=[],this.cellValues_=[],this.onCellInputChange_=this.onCellInputChange_.bind(this),this.size=p.size;const[v,C]=this.size;for(let L=0;L<C;L++)for(let T=0;T<v;T++){const R=new ut(o,{name:p.groupName,props:Y.fromObject(Object.assign({},p.cellConfig(T,L))),viewProps:be.create()});this.cellCs_.push(R),this.cellValues_.push(p.cellConfig(T,L).value)}this.value=p.value,I(this.value,L=>{const T=this.findCellByValue(L);T&&(T.view.inputElement.checked=!0)}),this.viewProps=be.create(),this.view=new rt(o,{viewProps:this.viewProps,viewName:"radgrid"}),this.view.element.style.gridTemplateColumns=`repeat(${v}, 1fr)`,this.cellCs_.forEach(L=>{L.view.inputElement.addEventListener("change",this.onCellInputChange_),this.view.element.appendChild(L.view.element)})}get cellControllers(){return this.cellCs_}findCellByValue(o){const p=this.cellValues_.findIndex(v=>v===o);return p<0?null:this.cellCs_[p]}onCellInputChange_(o){const p=o.currentTarget,v=this.cellCs_.findIndex(C=>C.view.inputElement===p);v<0||(this.value.rawValue=this.cellValues_[v])}}const Js=function(){return{id:"radiogrid",type:"blade",accept(d){const o=he,p=te(d,{cells:o.required.function,groupName:o.required.string,size:o.required.array(o.required.number),value:o.required.raw,view:o.required.constant("radiogrid"),label:o.optional.string});return p?{params:p}:null},controller(d){return new mt(d.document,{blade:d.blade,props:Y.fromObject({label:d.params.label}),valueController:new Ln(d.document,{groupName:d.params.groupName,cellConfig:d.params.cells,size:d.params.size,value:X(d.params.value)})})},api(d){return!(d.controller instanceof mt)||!(d.controller.valueController instanceof Ln)?null:new Qi(d.controller)}}}();function ui(d){return{id:"input-radiogrid",type:"input",accept(o,p){if(!d.isType(o))return null;const v=he,C=te(p,{cells:v.required.function,groupName:v.required.string,size:v.required.array(v.required.number),view:v.required.constant("radiogrid")});return C?{initialValue:o,params:C}:null},binding:d.binding,controller:o=>new Ln(o.document,{cellConfig:o.params.cells,groupName:o.params.groupName,size:o.params.size,value:o.value})}}const Hs=ui({isType:d=>typeof d=="number",binding:{reader:d=>Ss,writer:d=>Hn}}),Wi=ui({isType:d=>typeof d=="string",binding:{reader:d=>ki,writer:d=>Hn}}),er=ui({isType:d=>typeof d=="boolean",binding:{reader:d=>$t,writer:d=>Hn}}),tr=[Ks,Yi,Zs,Tt,Js,er,Hs,Wi];r.ButtonCellApi=Fi,r.ButtonGridApi=ji,r.ButtonGridController=ii,r.CubicBezier=ct,r.CubicBezierApi=zi,r.CubicBezierAssembly=Pn,r.CubicBezierController=it,r.CubicBezierGraphController=ai,r.CubicBezierGraphView=Ki,r.CubicBezierPickerController=Mn,r.CubicBezierPickerView=en,r.CubicBezierPreviewView=Vt,r.CubicBezierView=Ae,r.FpsGraphBladeApi=Me,r.FpsGraphController=nn,r.FpsView=It,r.Fpswatch=ze,r.Interval=Te,r.IntervalAssembly=ci,r.IntervalConstraint=sn,r.RadioCellApi=on,r.RadioController=ut,r.RadioGridApi=Qi,r.RadioGridController=Ln,r.RadioView=Zi,r.RangeSliderController=pi,r.RangeSliderTextController=kn,r.RangeSliderTextView=rn,r.RangeSliderView=st,r.TpRadioGridChangeEvent=qi,r.plugins=tr,Object.defineProperty(r,"__esModule",{value:!0})})})(Vl,zn);const Il=Uo({__proto__:null,default:al(zn)},[zn]);let Ut,wi;const Dl=(g="tres-container")=>{Ut||(Ut=new _i.Pane({container:document.querySelector(g)||void 0}),Ut.registerPlugin(Il),wi=Ut.addBlade({view:"fpsgraph",label:"fpsgraph"}));function i(){Ut&&Ut.dispose()}return M.onMounted(()=>{const{onBeforeLoop:r,onAfterLoop:s,resume:a}=pn.useRenderLoop();a(),r(()=>wi.begin()),s(()=>wi.end())}),M.onUnmounted(()=>{i()}),{pane:Ut,fpsGraph:wi,disposeTweakPane:i}};function Tl(g,i){const r=M.ref(i),s=new f.AnimationMixer(r.value),a=M.shallowReactive({});g.forEach(u=>{const h=s.clipAction(u,r.value);a[u.name]=h});const{onLoop:c}=pn.useRenderLoop();return c(({delta:u})=>{s.update(u)}),{actions:a,mixer:s}}let yi=null;function Ol(g,i){return r=>{i&&i(r),g.draco&&(yi||(yi=new cl),yi.setDecoderPath(g.decoderPath||"https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),r.setDRACOLoader(yi))}}async function Hr(g,i={draco:!1},r){return await pn.useLoader(la,g,Ol(i,r))}const El=M.defineComponent({name:"GLTFModel",props:{path:String,draco:Boolean,decoderPath:String},async setup(g,{expose:i}){const{state:r}=jt();function s(){return a}i({getModel:s});const{scene:a}=await Hr(g.path,{draco:g.draco,decoderPath:g.decoderPath});return r.scene&&r.scene.add(a),()=>{}}});async function eo(g){return await pn.useLoader(Xa,g)}const Bl=M.defineComponent({name:"FBXModel",props:{path:{type:String,required:!0}},async setup(g,{expose:i}){const{state:r}=jt();let s=null;function a(){return s}return i({getModel:a}),s=await eo(g.path),r.scene&&s.isObject3D&&r.scene.add(s),()=>{}}}),Nl=M.defineComponent({__name:"Text3D",props:{font:null,text:null,size:{default:.5},height:{default:.2},curveSegments:{default:5},bevelEnabled:{type:Boolean,default:!0},bevelThickness:{default:.05},bevelSize:{default:.02},bevelOffset:{default:0},bevelSegments:{default:4},center:{type:Boolean,default:!1}},async setup(g){let i,r;const s=g,{extend:a}=jt();a({TextGeometry:Fa});const c=new sl,u=M.useSlots(),h=M.computed(()=>{var y;return s.text?s.text:u.default?(y=u.default()[0].children)==null?void 0:y.trim():"TresJS"}),m=([i,r]=M.withAsyncContext(()=>new Promise((y,w)=>{try{typeof s.font=="string"?c.load(s.font,x=>{y(x)}):y(s.font)}catch(x){w(console.error("cientos",x))}})),i=await i,r(),i),_=M.computed(()=>({font:m,size:s.size,height:s.height,curveSegments:s.curveSegments,bevelEnabled:s.bevelEnabled,bevelThickness:s.bevelThickness,bevelSize:s.bevelSize,bevelOffset:s.bevelOffset,bevelSegments:s.bevelSegments}));return(y,w)=>{const x=M.resolveComponent("TresTextGeometry"),k=M.resolveComponent("TresMesh");return M.unref(m)?(M.openBlock(),M.createBlock(k,{key:0},{default:M.withCtx(()=>[M.unref(h)?(M.openBlock(),M.createBlock(x,{key:0,args:[M.unref(h),M.unref(_)],center:g.center},null,8,["args","center"])):M.createCommentVNode("",!0),M.renderSlot(y.$slots,"default")]),_:3})):M.createCommentVNode("",!0)}}}),Fl=M.defineComponent({__name:"Plane",props:{args:{default:()=>[1,1]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresPlaneGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"planeRef",ref:r,rotation:[-Math.PI/2,0,0]},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16,["rotation"])}}}),jl=M.defineComponent({__name:"Box",props:{args:{default:()=>[1,1,1]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresBoxGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"boxRef",ref:r},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16)}}}),zl=M.defineComponent({__name:"Sphere",props:{args:{default:()=>[2,32,16]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresSphereGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"sphereRef",ref:r},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16)}}}),Ul=M.defineComponent({__name:"Torus",props:{args:{default:()=>[1,1,16,80]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresTorusGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"torusRef",ref:r},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16)}}}),Gl=M.defineComponent({__name:"TorusKnot",props:{args:{default:()=>[1,.4,64,8]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresTorusKnotGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"torusKnotRef",ref:r},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16)}}}),Rl=M.defineComponent({__name:"Circle",props:{args:{default:()=>[1,32]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresCircleGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"circleRef",ref:r},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16)}}}),Kl=M.defineComponent({__name:"Cone",props:{args:{default:()=>[1,1,12]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresConeGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"coneRef",ref:r},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16)}}}),$l=M.defineComponent({__name:"Tube",props:{args:{default:()=>[new f.QuadraticBezierCurve3(new f.Vector3(-1,0,0),new f.Vector3(0,1,0),new f.Vector3(1,0,0)),20,.2,8,!1]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresTubeGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"tubeRef",ref:r},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16)}}}),Xl=M.defineComponent({__name:"Ring",props:{args:{default:()=>[.5,1,32]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresRingGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"ringRef",ref:r},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16)}}}),Yl=M.defineComponent({__name:"Tetrahedron",props:{args:{default:()=>[1,0]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresTetrahedronGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"tetrahedronRef",ref:r,rotation:[-Math.PI/2,0,0]},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16,["rotation"])}}}),ql=M.defineComponent({__name:"Icosahedron",props:{args:{default:()=>[1,0]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresIcosahedronGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"icosahedronRef",ref:r},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16)}}}),Ql=M.defineComponent({__name:"Octahedron",props:{args:{default:()=>[1,0]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresOctahedronGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"octahedronRef",ref:r},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16)}}}),Zl=M.defineComponent({__name:"Dodecahedron",props:{args:{default:()=>[1,0]},color:{default:"0xffffff"}},setup(g,{expose:i}){const r=M.shallowRef();return i({value:r}),(s,a)=>{const c=M.resolveComponent("TresDodecahedronGeometry"),u=M.resolveComponent("TresMeshBasicMaterial"),h=M.resolveComponent("TresMesh");return M.openBlock(),M.createBlock(h,M.mergeProps({ref_key:"dodecahedronRef",ref:r},s.$attrs),{default:M.withCtx(()=>[M.createVNode(c,{args:g.args},null,8,["args"]),M.renderSlot(s.$slots,"default",{},()=>[M.createVNode(u,{color:g.color},null,8,["color"])])]),_:3},16)}}}),ms={sunset:"venice/venice_sunset_4k.hdr"};async function to({files:g=["/px.png","/nx.png","/py.png","/ny.png","/pz.png","/nz.png"],blur:i=0,background:r=!1,path:s=void 0,preset:a=void 0,encoding:c=void 0}){const{state:u}=jt();if(a){if(!(a in ms))throw new Error("Preset must be one of: "+Object.keys(ms).join(", "));g=ms[a],s="https://raw.githubusercontent.com/Tresjs/assets/main/textures/hdr/"}const h=Array.isArray(g),m=h?f.CubeTextureLoader:ll,_=await pn.useLoader(m,h?[g]:g,w=>{s&&w.setPath(s),c&&(w.encoding=c)}),y=h?_[0]:_;return y&&(y.mapping=h?f.CubeReflectionMapping:f.EquirectangularReflectionMapping,y.encoding=c??h?f.sRGBEncoding:f.LinearEncoding),r&&u.scene&&(u.scene.environment=y,u.scene.background=y,i&&(u.scene.backgroundBlurriness=i|0)),y}const Wl=M.defineComponent({name:"Environment",props:{background:{type:Boolean,default:!1},blur:{type:Number,default:0},files:{type:[String,Array]},encoding:Object,path:String,preset:Object},async setup(g,{expose:i}){let r=null;return i({getTexture:()=>r}),r=await to(g),()=>{}}});ae.Box=jl,ae.Circle=Rl,ae.Cone=Kl,ae.Dodecahedron=Zl,ae.Environment=Wl,ae.FBXModel=Bl,ae.GLTFModel=El,ae.Icosahedron=ql,ae.Octahedron=Ql,ae.OrbitControls=ul,ae.PamCameraMouse=Ll,ae.Plane=Fl,ae.Ring=Xl,ae.Sphere=zl,ae.Tetrahedron=Yl,ae.Text3D=Nl,ae.Torus=Ul,ae.TorusKnot=Gl,ae.TransformControls=ml,ae.Tube=$l,ae.useAnimations=Tl,ae.useEnvironment=to,ae.useFBX=eo,ae.useGLTF=Hr,ae.usePamCameraMouse=Jr,ae.useTweakPane=Dl,Object.defineProperty(ae,Symbol.toStringTag,{value:"Module"})});
|