@tresjs/cientos 1.2.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/OrbitControls.vue.d.ts +2 -0
- package/dist/core/TransformControls.vue.d.ts +144 -0
- package/dist/core/useGLTF/component.d.ts +2 -0
- package/dist/index.d.ts +2 -1
- package/dist/trescientos.js +5071 -4638
- package/dist/trescientos.umd.cjs +12 -12
- package/dist/utils/index.d.ts +1 -0
- package/package.json +7 -6
package/dist/trescientos.umd.cjs
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: @tresjs/cientos
|
|
3
|
-
* version: v1.
|
|
3
|
+
* version: v1.3.0
|
|
4
4
|
* (c) 2022
|
|
5
5
|
* description: Collection of useful helpers and fully functional, ready-made abstractions for Tres
|
|
6
6
|
* author: Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)
|
|
7
7
|
*/
|
|
8
|
-
(function(Ve,$){typeof exports=="object"&&typeof module<"u"?$(exports,require("vue"),require("three"),require("@tresjs/core")):typeof define=="function"&&define.amd?define(["exports","vue","three","@tresjs/core"],$):(Ve=typeof globalThis<"u"?globalThis:Ve||self,$(Ve.trescientos={},Ve.Vue,Ve.Three,Ve.TresjsCore))})(this,function(Ve,$,y,zi){"use strict";function Ur(M,l){for(var u=0;u<l.length;u++){const a=l[u];if(typeof a!="string"&&!Array.isArray(a)){for(const d in a)if(d!=="default"&&!(d in M)){const m=Object.getOwnPropertyDescriptor(a,d);m&&Object.defineProperty(M,d,m.get?m:{enumerable:!0,get:()=>a[d]})}}}return Object.freeze(Object.defineProperty(M,Symbol.toStringTag,{value:"Module"}))}function z(M,l,u){return l in M?Object.defineProperty(M,l,{value:u,enumerable:!0,configurable:!0,writable:!0}):M[l]=u,M}const Ki=(M,l)=>(M%l+l)%l;class zr extends y.EventDispatcher{constructor(l,u){super(),z(this,"object",void 0),z(this,"domElement",void 0),z(this,"enabled",!0),z(this,"target",new y.Vector3),z(this,"minDistance",0),z(this,"maxDistance",1/0),z(this,"minZoom",0),z(this,"maxZoom",1/0),z(this,"minPolarAngle",0),z(this,"maxPolarAngle",Math.PI),z(this,"minAzimuthAngle",-1/0),z(this,"maxAzimuthAngle",1/0),z(this,"enableDamping",!1),z(this,"dampingFactor",.05),z(this,"enableZoom",!0),z(this,"zoomSpeed",1),z(this,"enableRotate",!0),z(this,"rotateSpeed",1),z(this,"enablePan",!0),z(this,"panSpeed",1),z(this,"screenSpacePanning",!0),z(this,"keyPanSpeed",7),z(this,"autoRotate",!1),z(this,"autoRotateSpeed",2),z(this,"reverseOrbit",!1),z(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),z(this,"mouseButtons",{LEFT:y.MOUSE.ROTATE,MIDDLE:y.MOUSE.DOLLY,RIGHT:y.MOUSE.PAN}),z(this,"touches",{ONE:y.TOUCH.ROTATE,TWO:y.TOUCH.DOLLY_PAN}),z(this,"target0",void 0),z(this,"position0",void 0),z(this,"zoom0",void 0),z(this,"_domElementKeyEvents",null),z(this,"getPolarAngle",void 0),z(this,"getAzimuthalAngle",void 0),z(this,"setPolarAngle",void 0),z(this,"setAzimuthalAngle",void 0),z(this,"getDistance",void 0),z(this,"listenToKeyEvents",void 0),z(this,"saveState",void 0),z(this,"reset",void 0),z(this,"update",void 0),z(this,"connect",void 0),z(this,"dispose",void 0),this.object=l,this.domElement=u,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object instanceof y.PerspectiveCamera?this.object.zoom:1,this.getPolarAngle=()=>P.phi,this.getAzimuthalAngle=()=>P.theta,this.setPolarAngle=E=>{let N=Ki(E,2*Math.PI),U=P.phi;U<0&&(U+=2*Math.PI),N<0&&(N+=2*Math.PI);let X=Math.abs(N-U);2*Math.PI-X<X&&(N<U?N+=2*Math.PI:U+=2*Math.PI),_.phi=N-U,a.update()},this.setAzimuthalAngle=E=>{let N=Ki(E,2*Math.PI),U=P.theta;U<0&&(U+=2*Math.PI),N<0&&(N+=2*Math.PI);let X=Math.abs(N-U);2*Math.PI-X<X&&(N<U?N+=2*Math.PI:U+=2*Math.PI),_.theta=N-U,a.update()},this.getDistance=()=>a.object.position.distanceTo(a.target),this.listenToKeyEvents=E=>{E.addEventListener("keydown",Ye),this._domElementKeyEvents=E},this.saveState=()=>{a.target0.copy(a.target),a.position0.copy(a.object.position),a.zoom0=a.object instanceof y.PerspectiveCamera?a.object.zoom:1},this.reset=()=>{a.target.copy(a.target0),a.object.position.copy(a.position0),a.object instanceof y.PerspectiveCamera&&(a.object.zoom=a.zoom0,a.object.updateProjectionMatrix()),a.dispatchEvent(d),a.update(),v=f.NONE},this.update=(()=>{const E=new y.Vector3,N=new y.Quaternion().setFromUnitVectors(l.up,new y.Vector3(0,1,0)),U=N.clone().invert(),X=new y.Vector3,le=new y.Quaternion,Le=2*Math.PI;return function(){const Jt=a.object.position;E.copy(Jt).sub(a.target),E.applyQuaternion(N),P.setFromVector3(E),a.autoRotate&&v===f.NONE&&Pe(ie()),a.enableDamping?(P.theta+=_.theta*a.dampingFactor,P.phi+=_.phi*a.dampingFactor):(P.theta+=_.theta,P.phi+=_.phi);let xe=a.minAzimuthAngle,ye=a.maxAzimuthAngle;return isFinite(xe)&&isFinite(ye)&&(xe<-Math.PI?xe+=Le:xe>Math.PI&&(xe-=Le),ye<-Math.PI?ye+=Le:ye>Math.PI&&(ye-=Le),xe<=ye?P.theta=Math.max(xe,Math.min(ye,P.theta)):P.theta=P.theta>(xe+ye)/2?Math.max(xe,P.theta):Math.min(ye,P.theta)),P.phi=Math.max(a.minPolarAngle,Math.min(a.maxPolarAngle,P.phi)),P.makeSafe(),P.radius*=k,P.radius=Math.max(a.minDistance,Math.min(a.maxDistance,P.radius)),a.enableDamping===!0?a.target.addScaledVector(A,a.dampingFactor):a.target.add(A),E.setFromSpherical(P),E.applyQuaternion(U),Jt.copy(a.target).add(E),a.object.lookAt(a.target),a.enableDamping===!0?(_.theta*=1-a.dampingFactor,_.phi*=1-a.dampingFactor,A.multiplyScalar(1-a.dampingFactor)):(_.set(0,0,0),A.set(0,0,0)),k=1,T||X.distanceToSquared(a.object.position)>w||8*(1-le.dot(a.object.quaternion))>w?(a.dispatchEvent(d),X.copy(a.object.position),le.copy(a.object.quaternion),T=!1,!0):!1}})(),this.connect=E=>{E===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),a.domElement=E,a.domElement.style.touchAction="none",a.domElement.addEventListener("contextmenu",Ie),a.domElement.addEventListener("pointerdown",Nt),a.domElement.addEventListener("pointercancel",He),a.domElement.addEventListener("wheel",Oe)},this.dispose=()=>{var E,N,U,X,le,Le;(E=a.domElement)===null||E===void 0||E.removeEventListener("contextmenu",Ie),(N=a.domElement)===null||N===void 0||N.removeEventListener("pointerdown",Nt),(U=a.domElement)===null||U===void 0||U.removeEventListener("pointercancel",He),(X=a.domElement)===null||X===void 0||X.removeEventListener("wheel",Oe),(le=a.domElement)===null||le===void 0||le.ownerDocument.removeEventListener("pointermove",qe),(Le=a.domElement)===null||Le===void 0||Le.ownerDocument.removeEventListener("pointerup",nt),a._domElementKeyEvents!==null&&a._domElementKeyEvents.removeEventListener("keydown",Ye)};const a=this,d={type:"change"},m={type:"start"},h={type:"end"},f={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let v=f.NONE;const w=1e-6,P=new y.Spherical,_=new y.Spherical;let k=1;const A=new y.Vector3;let T=!1;const I=new y.Vector2,V=new y.Vector2,D=new y.Vector2,Y=new y.Vector2,R=new y.Vector2,oe=new y.Vector2,he=new y.Vector2,se=new y.Vector2,W=new y.Vector2,G=[],te={};function ie(){return 2*Math.PI/60/60*a.autoRotateSpeed}function _e(){return Math.pow(.95,a.zoomSpeed)}function Pe(E){a.reverseOrbit?_.theta+=E:_.theta-=E}function me(E){a.reverseOrbit?_.phi+=E:_.phi-=E}const de=(()=>{const E=new y.Vector3;return function(U,X){E.setFromMatrixColumn(X,0),E.multiplyScalar(-U),A.add(E)}})(),be=(()=>{const E=new y.Vector3;return function(U,X){a.screenSpacePanning===!0?E.setFromMatrixColumn(X,1):(E.setFromMatrixColumn(X,0),E.crossVectors(a.object.up,E)),E.multiplyScalar(U),A.add(E)}})(),Z=(()=>{const E=new y.Vector3;return function(U,X){const le=a.domElement;if(le&&a.object instanceof y.PerspectiveCamera&&a.object.isPerspectiveCamera){const Le=a.object.position;E.copy(Le).sub(a.target);let vt=E.length();vt*=Math.tan(a.object.fov/2*Math.PI/180),de(2*U*vt/le.clientHeight,a.object.matrix),be(2*X*vt/le.clientHeight,a.object.matrix)}else le&&a.object instanceof y.OrthographicCamera&&a.object.isOrthographicCamera?(de(U*(a.object.right-a.object.left)/a.object.zoom/le.clientWidth,a.object.matrix),be(X*(a.object.top-a.object.bottom)/a.object.zoom/le.clientHeight,a.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),a.enablePan=!1)}})();function j(E){a.object instanceof y.PerspectiveCamera&&a.object.isPerspectiveCamera?k/=E:a.object instanceof y.OrthographicCamera&&a.object.isOrthographicCamera?(a.object.zoom=Math.max(a.minZoom,Math.min(a.maxZoom,a.object.zoom*E)),a.object.updateProjectionMatrix(),T=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),a.enableZoom=!1)}function ut(E){a.object instanceof y.PerspectiveCamera&&a.object.isPerspectiveCamera?k*=E:a.object instanceof y.OrthographicCamera&&a.object.isOrthographicCamera?(a.object.zoom=Math.max(a.minZoom,Math.min(a.maxZoom,a.object.zoom/E)),a.object.updateProjectionMatrix(),T=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),a.enableZoom=!1)}function Yt(E){I.set(E.clientX,E.clientY)}function Xt(E){he.set(E.clientX,E.clientY)}function we(E){Y.set(E.clientX,E.clientY)}function Tt(E){V.set(E.clientX,E.clientY),D.subVectors(V,I).multiplyScalar(a.rotateSpeed);const N=a.domElement;N&&(Pe(2*Math.PI*D.x/N.clientHeight),me(2*Math.PI*D.y/N.clientHeight)),I.copy(V),a.update()}function q(E){se.set(E.clientX,E.clientY),W.subVectors(se,he),W.y>0?j(_e()):W.y<0&&ut(_e()),he.copy(se),a.update()}function ae(E){R.set(E.clientX,E.clientY),oe.subVectors(R,Y).multiplyScalar(a.panSpeed),Z(oe.x,oe.y),Y.copy(R),a.update()}function bn(E){E.deltaY<0?ut(_e()):E.deltaY>0&&j(_e()),a.update()}function Wt(E){let N=!1;switch(E.code){case a.keys.UP:Z(0,a.keyPanSpeed),N=!0;break;case a.keys.BOTTOM:Z(0,-a.keyPanSpeed),N=!0;break;case a.keys.LEFT:Z(a.keyPanSpeed,0),N=!0;break;case a.keys.RIGHT:Z(-a.keyPanSpeed,0),N=!0;break}N&&(E.preventDefault(),a.update())}function At(){if(G.length==1)I.set(G[0].pageX,G[0].pageY);else{const E=.5*(G[0].pageX+G[1].pageX),N=.5*(G[0].pageY+G[1].pageY);I.set(E,N)}}function Vt(){if(G.length==1)Y.set(G[0].pageX,G[0].pageY);else{const E=.5*(G[0].pageX+G[1].pageX),N=.5*(G[0].pageY+G[1].pageY);Y.set(E,N)}}function Ee(){const E=G[0].pageX-G[1].pageX,N=G[0].pageY-G[1].pageY,U=Math.sqrt(E*E+N*N);he.set(0,U)}function ke(){a.enableZoom&&Ee(),a.enablePan&&Vt()}function et(){a.enableZoom&&Ee(),a.enableRotate&&At()}function tt(E){if(G.length==1)V.set(E.pageX,E.pageY);else{const U=Be(E),X=.5*(E.pageX+U.x),le=.5*(E.pageY+U.y);V.set(X,le)}D.subVectors(V,I).multiplyScalar(a.rotateSpeed);const N=a.domElement;N&&(Pe(2*Math.PI*D.x/N.clientHeight),me(2*Math.PI*D.y/N.clientHeight)),I.copy(V)}function dt(E){if(G.length==1)R.set(E.pageX,E.pageY);else{const N=Be(E),U=.5*(E.pageX+N.x),X=.5*(E.pageY+N.y);R.set(U,X)}oe.subVectors(R,Y).multiplyScalar(a.panSpeed),Z(oe.x,oe.y),Y.copy(R)}function ht(E){const N=Be(E),U=E.pageX-N.x,X=E.pageY-N.y,le=Math.sqrt(U*U+X*X);se.set(0,le),W.set(0,Math.pow(se.y/he.y,a.zoomSpeed)),j(W.y),he.copy(se)}function gn(E){a.enableZoom&&ht(E),a.enablePan&&dt(E)}function _n(E){a.enableZoom&&ht(E),a.enableRotate&&tt(E)}function Nt(E){if(a.enabled!==!1){if(G.length===0){var N,U;(N=a.domElement)===null||N===void 0||N.ownerDocument.addEventListener("pointermove",qe),(U=a.domElement)===null||U===void 0||U.ownerDocument.addEventListener("pointerup",nt)}mt(E),E.pointerType==="touch"?wn(E):Zt(E)}}function qe(E){a.enabled!==!1&&(E.pointerType==="touch"?Ot(E):Qt(E))}function nt(E){if(Me(E),G.length===0){var N,U,X;(N=a.domElement)===null||N===void 0||N.releasePointerCapture(E.pointerId),(U=a.domElement)===null||U===void 0||U.ownerDocument.removeEventListener("pointermove",qe),(X=a.domElement)===null||X===void 0||X.ownerDocument.removeEventListener("pointerup",nt)}a.dispatchEvent(h),v=f.NONE}function He(E){Me(E)}function Zt(E){let N;switch(E.button){case 0:N=a.mouseButtons.LEFT;break;case 1:N=a.mouseButtons.MIDDLE;break;case 2:N=a.mouseButtons.RIGHT;break;default:N=-1}switch(N){case y.MOUSE.DOLLY:if(a.enableZoom===!1)return;Xt(E),v=f.DOLLY;break;case y.MOUSE.ROTATE:if(E.ctrlKey||E.metaKey||E.shiftKey){if(a.enablePan===!1)return;we(E),v=f.PAN}else{if(a.enableRotate===!1)return;Yt(E),v=f.ROTATE}break;case y.MOUSE.PAN:if(E.ctrlKey||E.metaKey||E.shiftKey){if(a.enableRotate===!1)return;Yt(E),v=f.ROTATE}else{if(a.enablePan===!1)return;we(E),v=f.PAN}break;default:v=f.NONE}v!==f.NONE&&a.dispatchEvent(m)}function Qt(E){if(a.enabled!==!1)switch(v){case f.ROTATE:if(a.enableRotate===!1)return;Tt(E);break;case f.DOLLY:if(a.enableZoom===!1)return;q(E);break;case f.PAN:if(a.enablePan===!1)return;ae(E);break}}function Oe(E){a.enabled===!1||a.enableZoom===!1||v!==f.NONE&&v!==f.ROTATE||(E.preventDefault(),a.dispatchEvent(m),bn(E),a.dispatchEvent(h))}function Ye(E){a.enabled===!1||a.enablePan===!1||Wt(E)}function wn(E){switch(Fe(E),G.length){case 1:switch(a.touches.ONE){case y.TOUCH.ROTATE:if(a.enableRotate===!1)return;At(),v=f.TOUCH_ROTATE;break;case y.TOUCH.PAN:if(a.enablePan===!1)return;Vt(),v=f.TOUCH_PAN;break;default:v=f.NONE}break;case 2:switch(a.touches.TWO){case y.TOUCH.DOLLY_PAN:if(a.enableZoom===!1&&a.enablePan===!1)return;ke(),v=f.TOUCH_DOLLY_PAN;break;case y.TOUCH.DOLLY_ROTATE:if(a.enableZoom===!1&&a.enableRotate===!1)return;et(),v=f.TOUCH_DOLLY_ROTATE;break;default:v=f.NONE}break;default:v=f.NONE}v!==f.NONE&&a.dispatchEvent(m)}function Ot(E){switch(Fe(E),v){case f.TOUCH_ROTATE:if(a.enableRotate===!1)return;tt(E),a.update();break;case f.TOUCH_PAN:if(a.enablePan===!1)return;dt(E),a.update();break;case f.TOUCH_DOLLY_PAN:if(a.enableZoom===!1&&a.enablePan===!1)return;gn(E),a.update();break;case f.TOUCH_DOLLY_ROTATE:if(a.enableZoom===!1&&a.enableRotate===!1)return;_n(E),a.update();break;default:v=f.NONE}}function Ie(E){a.enabled!==!1&&E.preventDefault()}function mt(E){G.push(E)}function Me(E){delete te[E.pointerId];for(let N=0;N<G.length;N++)if(G[N].pointerId==E.pointerId){G.splice(N,1);return}}function Fe(E){let N=te[E.pointerId];N===void 0&&(N=new y.Vector2,te[E.pointerId]=N),N.set(E.pageX,E.pageY)}function Be(E){const N=E.pointerId===G[0].pointerId?G[1]:G[0];return te[N.pointerId]}u!==void 0&&this.connect(u),this.update()}}class Kr extends y.Loader{constructor(l){super(l),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(u){return new Yr(u)}),this.register(function(u){return new to(u)}),this.register(function(u){return new no(u)}),this.register(function(u){return new Wr(u)}),this.register(function(u){return new Zr(u)}),this.register(function(u){return new Qr(u)}),this.register(function(u){return new Jr(u)}),this.register(function(u){return new Hr(u)}),this.register(function(u){return new eo(u)}),this.register(function(u){return new Xr(u)}),this.register(function(u){return new $r(u)}),this.register(function(u){return new so(u)})}load(l,u,a,d){const m=this;let h;this.resourcePath!==""?h=this.resourcePath:this.path!==""?h=this.path:h=y.LoaderUtils.extractUrlBase(l),this.manager.itemStart(l);const f=function(w){d?d(w):console.error(w),m.manager.itemError(l),m.manager.itemEnd(l)},v=new y.FileLoader(this.manager);v.setPath(this.path),v.setResponseType("arraybuffer"),v.setRequestHeader(this.requestHeader),v.setWithCredentials(this.withCredentials),v.load(l,function(w){try{m.parse(w,h,function(P){u(P),m.manager.itemEnd(l)},f)}catch(P){f(P)}},a,f)}setDRACOLoader(l){return this.dracoLoader=l,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(l){return this.ktx2Loader=l,this}setMeshoptDecoder(l){return this.meshoptDecoder=l,this}register(l){return this.pluginCallbacks.indexOf(l)===-1&&this.pluginCallbacks.push(l),this}unregister(l){return this.pluginCallbacks.indexOf(l)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(l),1),this}parse(l,u,a,d){let m;const h={},f={};if(typeof l=="string")m=l;else if(y.LoaderUtils.decodeText(new Uint8Array(l,0,4))===Gi){try{h[H.KHR_BINARY_GLTF]=new io(l)}catch(_){d&&d(_);return}m=h[H.KHR_BINARY_GLTF].content}else m=y.LoaderUtils.decodeText(new Uint8Array(l));const v=JSON.parse(m);if(v.asset===void 0||v.asset.version[0]<2){d&&d(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const w=new go(v,{path:u||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});w.fileLoader.setRequestHeader(this.requestHeader);for(let P=0;P<this.pluginCallbacks.length;P++){const _=this.pluginCallbacks[P](w);f[_.name]=_,h[_.name]=!0}if(v.extensionsUsed)for(let P=0;P<v.extensionsUsed.length;++P){const _=v.extensionsUsed[P],k=v.extensionsRequired||[];switch(_){case H.KHR_MATERIALS_UNLIT:h[_]=new qr;break;case H.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:h[_]=new ao;break;case H.KHR_DRACO_MESH_COMPRESSION:h[_]=new ro(v,this.dracoLoader);break;case H.KHR_TEXTURE_TRANSFORM:h[_]=new oo;break;case H.KHR_MESH_QUANTIZATION:h[_]=new lo;break;default:k.indexOf(_)>=0&&f[_]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+_+'".')}}w.setExtensions(h),w.setPlugins(f),w.parse(a,d)}parseAsync(l,u){const a=this;return new Promise(function(d,m){a.parse(l,u,d,m)})}}function Gr(){let M={};return{get:function(l){return M[l]},add:function(l,u){M[l]=u},remove:function(l){delete M[l]},removeAll:function(){M={}}}}const H={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 $r{constructor(l){this.parser=l,this.name=H.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const l=this.parser,u=this.parser.json.nodes||[];for(let a=0,d=u.length;a<d;a++){const m=u[a];m.extensions&&m.extensions[this.name]&&m.extensions[this.name].light!==void 0&&l._addNodeRef(this.cache,m.extensions[this.name].light)}}_loadLight(l){const u=this.parser,a="light:"+l;let d=u.cache.get(a);if(d)return d;const m=u.json,v=((m.extensions&&m.extensions[this.name]||{}).lights||[])[l];let w;const P=new y.Color(16777215);v.color!==void 0&&P.fromArray(v.color);const _=v.range!==void 0?v.range:0;switch(v.type){case"directional":w=new y.DirectionalLight(P),w.target.position.set(0,0,-1),w.add(w.target);break;case"point":w=new y.PointLight(P),w.distance=_;break;case"spot":w=new y.SpotLight(P),w.distance=_,v.spot=v.spot||{},v.spot.innerConeAngle=v.spot.innerConeAngle!==void 0?v.spot.innerConeAngle:0,v.spot.outerConeAngle=v.spot.outerConeAngle!==void 0?v.spot.outerConeAngle:Math.PI/4,w.angle=v.spot.outerConeAngle,w.penumbra=1-v.spot.innerConeAngle/v.spot.outerConeAngle,w.target.position.set(0,0,-1),w.add(w.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+v.type)}return w.position.set(0,0,0),w.decay=2,v.intensity!==void 0&&(w.intensity=v.intensity),w.name=u.createUniqueName(v.name||"light_"+l),d=Promise.resolve(w),u.cache.add(a,d),d}createNodeAttachment(l){const u=this,a=this.parser,m=a.json.nodes[l],f=(m.extensions&&m.extensions[this.name]||{}).light;return f===void 0?null:this._loadLight(f).then(function(v){return a._getNodeRef(u.cache,f,v)})}}class qr{constructor(){this.name=H.KHR_MATERIALS_UNLIT}getMaterialType(){return y.MeshBasicMaterial}extendParams(l,u,a){const d=[];l.color=new y.Color(1,1,1),l.opacity=1;const m=u.pbrMetallicRoughness;if(m){if(Array.isArray(m.baseColorFactor)){const h=m.baseColorFactor;l.color.fromArray(h),l.opacity=h[3]}m.baseColorTexture!==void 0&&d.push(a.assignTexture(l,"map",m.baseColorTexture,y.sRGBEncoding))}return Promise.all(d)}}class Hr{constructor(l){this.parser=l,this.name=H.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(l,u){const d=this.parser.json.materials[l];if(!d.extensions||!d.extensions[this.name])return Promise.resolve();const m=d.extensions[this.name].emissiveStrength;return m!==void 0&&(u.emissiveIntensity=m),Promise.resolve()}}class Yr{constructor(l){this.parser=l,this.name=H.KHR_MATERIALS_CLEARCOAT}getMaterialType(l){const a=this.parser.json.materials[l];return!a.extensions||!a.extensions[this.name]?null:y.MeshPhysicalMaterial}extendMaterialParams(l,u){const a=this.parser,d=a.json.materials[l];if(!d.extensions||!d.extensions[this.name])return Promise.resolve();const m=[],h=d.extensions[this.name];if(h.clearcoatFactor!==void 0&&(u.clearcoat=h.clearcoatFactor),h.clearcoatTexture!==void 0&&m.push(a.assignTexture(u,"clearcoatMap",h.clearcoatTexture)),h.clearcoatRoughnessFactor!==void 0&&(u.clearcoatRoughness=h.clearcoatRoughnessFactor),h.clearcoatRoughnessTexture!==void 0&&m.push(a.assignTexture(u,"clearcoatRoughnessMap",h.clearcoatRoughnessTexture)),h.clearcoatNormalTexture!==void 0&&(m.push(a.assignTexture(u,"clearcoatNormalMap",h.clearcoatNormalTexture)),h.clearcoatNormalTexture.scale!==void 0)){const f=h.clearcoatNormalTexture.scale;u.clearcoatNormalScale=new y.Vector2(f,f)}return Promise.all(m)}}class Xr{constructor(l){this.parser=l,this.name=H.KHR_MATERIALS_IRIDESCENCE}getMaterialType(l){const a=this.parser.json.materials[l];return!a.extensions||!a.extensions[this.name]?null:y.MeshPhysicalMaterial}extendMaterialParams(l,u){const a=this.parser,d=a.json.materials[l];if(!d.extensions||!d.extensions[this.name])return Promise.resolve();const m=[],h=d.extensions[this.name];return h.iridescenceFactor!==void 0&&(u.iridescence=h.iridescenceFactor),h.iridescenceTexture!==void 0&&m.push(a.assignTexture(u,"iridescenceMap",h.iridescenceTexture)),h.iridescenceIor!==void 0&&(u.iridescenceIOR=h.iridescenceIor),u.iridescenceThicknessRange===void 0&&(u.iridescenceThicknessRange=[100,400]),h.iridescenceThicknessMinimum!==void 0&&(u.iridescenceThicknessRange[0]=h.iridescenceThicknessMinimum),h.iridescenceThicknessMaximum!==void 0&&(u.iridescenceThicknessRange[1]=h.iridescenceThicknessMaximum),h.iridescenceThicknessTexture!==void 0&&m.push(a.assignTexture(u,"iridescenceThicknessMap",h.iridescenceThicknessTexture)),Promise.all(m)}}class Wr{constructor(l){this.parser=l,this.name=H.KHR_MATERIALS_SHEEN}getMaterialType(l){const a=this.parser.json.materials[l];return!a.extensions||!a.extensions[this.name]?null:y.MeshPhysicalMaterial}extendMaterialParams(l,u){const a=this.parser,d=a.json.materials[l];if(!d.extensions||!d.extensions[this.name])return Promise.resolve();const m=[];u.sheenColor=new y.Color(0,0,0),u.sheenRoughness=0,u.sheen=1;const h=d.extensions[this.name];return h.sheenColorFactor!==void 0&&u.sheenColor.fromArray(h.sheenColorFactor),h.sheenRoughnessFactor!==void 0&&(u.sheenRoughness=h.sheenRoughnessFactor),h.sheenColorTexture!==void 0&&m.push(a.assignTexture(u,"sheenColorMap",h.sheenColorTexture,y.sRGBEncoding)),h.sheenRoughnessTexture!==void 0&&m.push(a.assignTexture(u,"sheenRoughnessMap",h.sheenRoughnessTexture)),Promise.all(m)}}class Zr{constructor(l){this.parser=l,this.name=H.KHR_MATERIALS_TRANSMISSION}getMaterialType(l){const a=this.parser.json.materials[l];return!a.extensions||!a.extensions[this.name]?null:y.MeshPhysicalMaterial}extendMaterialParams(l,u){const a=this.parser,d=a.json.materials[l];if(!d.extensions||!d.extensions[this.name])return Promise.resolve();const m=[],h=d.extensions[this.name];return h.transmissionFactor!==void 0&&(u.transmission=h.transmissionFactor),h.transmissionTexture!==void 0&&m.push(a.assignTexture(u,"transmissionMap",h.transmissionTexture)),Promise.all(m)}}class Qr{constructor(l){this.parser=l,this.name=H.KHR_MATERIALS_VOLUME}getMaterialType(l){const a=this.parser.json.materials[l];return!a.extensions||!a.extensions[this.name]?null:y.MeshPhysicalMaterial}extendMaterialParams(l,u){const a=this.parser,d=a.json.materials[l];if(!d.extensions||!d.extensions[this.name])return Promise.resolve();const m=[],h=d.extensions[this.name];u.thickness=h.thicknessFactor!==void 0?h.thicknessFactor:0,h.thicknessTexture!==void 0&&m.push(a.assignTexture(u,"thicknessMap",h.thicknessTexture)),u.attenuationDistance=h.attenuationDistance||1/0;const f=h.attenuationColor||[1,1,1];return u.attenuationColor=new y.Color(f[0],f[1],f[2]),Promise.all(m)}}class Jr{constructor(l){this.parser=l,this.name=H.KHR_MATERIALS_IOR}getMaterialType(l){const a=this.parser.json.materials[l];return!a.extensions||!a.extensions[this.name]?null:y.MeshPhysicalMaterial}extendMaterialParams(l,u){const d=this.parser.json.materials[l];if(!d.extensions||!d.extensions[this.name])return Promise.resolve();const m=d.extensions[this.name];return u.ior=m.ior!==void 0?m.ior:1.5,Promise.resolve()}}class eo{constructor(l){this.parser=l,this.name=H.KHR_MATERIALS_SPECULAR}getMaterialType(l){const a=this.parser.json.materials[l];return!a.extensions||!a.extensions[this.name]?null:y.MeshPhysicalMaterial}extendMaterialParams(l,u){const a=this.parser,d=a.json.materials[l];if(!d.extensions||!d.extensions[this.name])return Promise.resolve();const m=[],h=d.extensions[this.name];u.specularIntensity=h.specularFactor!==void 0?h.specularFactor:1,h.specularTexture!==void 0&&m.push(a.assignTexture(u,"specularIntensityMap",h.specularTexture));const f=h.specularColorFactor||[1,1,1];return u.specularColor=new y.Color(f[0],f[1],f[2]),h.specularColorTexture!==void 0&&m.push(a.assignTexture(u,"specularColorMap",h.specularColorTexture,y.sRGBEncoding)),Promise.all(m)}}class to{constructor(l){this.parser=l,this.name=H.KHR_TEXTURE_BASISU}loadTexture(l){const u=this.parser,a=u.json,d=a.textures[l];if(!d.extensions||!d.extensions[this.name])return null;const m=d.extensions[this.name],h=u.options.ktx2Loader;if(!h){if(a.extensionsRequired&&a.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return u.loadTextureImage(l,m.source,h)}}class no{constructor(l){this.parser=l,this.name=H.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(l){const u=this.name,a=this.parser,d=a.json,m=d.textures[l];if(!m.extensions||!m.extensions[u])return null;const h=m.extensions[u],f=d.images[h.source];let v=a.textureLoader;if(f.uri){const w=a.options.manager.getHandler(f.uri);w!==null&&(v=w)}return this.detectSupport().then(function(w){if(w)return a.loadTextureImage(l,h.source,v);if(d.extensionsRequired&&d.extensionsRequired.indexOf(u)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return a.loadTexture(l)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(l){const u=new Image;u.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",u.onload=u.onerror=function(){l(u.height===1)}})),this.isSupported}}class so{constructor(l){this.name=H.EXT_MESHOPT_COMPRESSION,this.parser=l}loadBufferView(l){const u=this.parser.json,a=u.bufferViews[l];if(a.extensions&&a.extensions[this.name]){const d=a.extensions[this.name],m=this.parser.getDependency("buffer",d.buffer),h=this.parser.options.meshoptDecoder;if(!h||!h.supported){if(u.extensionsRequired&&u.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return m.then(function(f){const v=d.byteOffset||0,w=d.byteLength||0,P=d.count,_=d.byteStride,k=new Uint8Array(f,v,w);return h.decodeGltfBufferAsync?h.decodeGltfBufferAsync(P,_,k,d.mode,d.filter).then(function(A){return A.buffer}):h.ready.then(function(){const A=new ArrayBuffer(P*_);return h.decodeGltfBuffer(new Uint8Array(A),P,_,k,d.mode,d.filter),A})})}else return null}}const Gi="glTF",mn=12,$i={JSON:1313821514,BIN:5130562};class io{constructor(l){this.name=H.KHR_BINARY_GLTF,this.content=null,this.body=null;const u=new DataView(l,0,mn);if(this.header={magic:y.LoaderUtils.decodeText(new Uint8Array(l.slice(0,4))),version:u.getUint32(4,!0),length:u.getUint32(8,!0)},this.header.magic!==Gi)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const a=this.header.length-mn,d=new DataView(l,mn);let m=0;for(;m<a;){const h=d.getUint32(m,!0);m+=4;const f=d.getUint32(m,!0);if(m+=4,f===$i.JSON){const v=new Uint8Array(l,mn+m,h);this.content=y.LoaderUtils.decodeText(v)}else if(f===$i.BIN){const v=mn+m;this.body=l.slice(v,v+h)}m+=h}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class ro{constructor(l,u){if(!u)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=H.KHR_DRACO_MESH_COMPRESSION,this.json=l,this.dracoLoader=u,this.dracoLoader.preload()}decodePrimitive(l,u){const a=this.json,d=this.dracoLoader,m=l.extensions[this.name].bufferView,h=l.extensions[this.name].attributes,f={},v={},w={};for(const P in h){const _=Ps[P]||P.toLowerCase();f[_]=h[P]}for(const P in l.attributes){const _=Ps[P]||P.toLowerCase();if(h[P]!==void 0){const k=a.accessors[l.attributes[P]],A=vn[k.componentType];w[_]=A.name,v[_]=k.normalized===!0}}return u.getDependency("bufferView",m).then(function(P){return new Promise(function(_){d.decodeDracoFile(P,function(k){for(const A in k.attributes){const T=k.attributes[A],I=v[A];I!==void 0&&(T.normalized=I)}_(k)},f,w)})})}}class oo{constructor(){this.name=H.KHR_TEXTURE_TRANSFORM}extendTexture(l,u){return u.texCoord!==void 0&&console.warn('THREE.GLTFLoader: Custom UV sets in "'+this.name+'" extension not yet supported.'),u.offset===void 0&&u.rotation===void 0&&u.scale===void 0||(l=l.clone(),u.offset!==void 0&&l.offset.fromArray(u.offset),u.rotation!==void 0&&(l.rotation=u.rotation),u.scale!==void 0&&l.repeat.fromArray(u.scale),l.needsUpdate=!0),l}}class Cs extends y.MeshStandardMaterial{constructor(l){super(),this.isGLTFSpecularGlossinessMaterial=!0;const u=["#ifdef USE_SPECULARMAP"," uniform sampler2D specularMap;","#endif"].join(`
|
|
9
|
-
`),
|
|
10
|
-
`),
|
|
11
|
-
`),
|
|
12
|
-
`),
|
|
13
|
-
`),f={specular:{value:new y.Color().setHex(16777215)},glossiness:{value:1},specularMap:{value:null},glossinessMap:{value:null}};this._extraUniforms=f,this.onBeforeCompile=function(v){for(const w in f)v.uniforms[w]=f[w];v.fragmentShader=v.fragmentShader.replace("uniform float roughness;","uniform vec3 specular;").replace("uniform float metalness;","uniform float glossiness;").replace("#include <roughnessmap_pars_fragment>",u).replace("#include <metalnessmap_pars_fragment>",a).replace("#include <roughnessmap_fragment>",d).replace("#include <metalnessmap_fragment>",m).replace("#include <lights_physical_fragment>",h)},Object.defineProperties(this,{specular:{get:function(){return f.specular.value},set:function(v){f.specular.value=v}},specularMap:{get:function(){return f.specularMap.value},set:function(v){f.specularMap.value=v,v?this.defines.USE_SPECULARMAP="":delete this.defines.USE_SPECULARMAP}},glossiness:{get:function(){return f.glossiness.value},set:function(v){f.glossiness.value=v}},glossinessMap:{get:function(){return f.glossinessMap.value},set:function(v){f.glossinessMap.value=v,v?(this.defines.USE_GLOSSINESSMAP="",this.defines.USE_UV=""):(delete this.defines.USE_GLOSSINESSMAP,delete this.defines.USE_UV)}}}),delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this.setValues(l)}copy(l){return super.copy(l),this.specularMap=l.specularMap,this.specular.copy(l.specular),this.glossinessMap=l.glossinessMap,this.glossiness=l.glossiness,delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this}}class ao{constructor(){this.name=H.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 Cs}extendParams(l,u,a){const d=u.extensions[this.name];l.color=new y.Color(1,1,1),l.opacity=1;const m=[];if(Array.isArray(d.diffuseFactor)){const h=d.diffuseFactor;l.color.fromArray(h),l.opacity=h[3]}if(d.diffuseTexture!==void 0&&m.push(a.assignTexture(l,"map",d.diffuseTexture,y.sRGBEncoding)),l.emissive=new y.Color(0,0,0),l.glossiness=d.glossinessFactor!==void 0?d.glossinessFactor:1,l.specular=new y.Color(1,1,1),Array.isArray(d.specularFactor)&&l.specular.fromArray(d.specularFactor),d.specularGlossinessTexture!==void 0){const h=d.specularGlossinessTexture;m.push(a.assignTexture(l,"glossinessMap",h)),m.push(a.assignTexture(l,"specularMap",h,y.sRGBEncoding))}return Promise.all(m)}createMaterial(l){const u=new Cs(l);return u.fog=!0,u.color=l.color,u.map=l.map===void 0?null:l.map,u.lightMap=null,u.lightMapIntensity=1,u.aoMap=l.aoMap===void 0?null:l.aoMap,u.aoMapIntensity=1,u.emissive=l.emissive,u.emissiveIntensity=l.emissiveIntensity===void 0?1:l.emissiveIntensity,u.emissiveMap=l.emissiveMap===void 0?null:l.emissiveMap,u.bumpMap=l.bumpMap===void 0?null:l.bumpMap,u.bumpScale=1,u.normalMap=l.normalMap===void 0?null:l.normalMap,u.normalMapType=y.TangentSpaceNormalMap,l.normalScale&&(u.normalScale=l.normalScale),u.displacementMap=null,u.displacementScale=1,u.displacementBias=0,u.specularMap=l.specularMap===void 0?null:l.specularMap,u.specular=l.specular,u.glossinessMap=l.glossinessMap===void 0?null:l.glossinessMap,u.glossiness=l.glossiness,u.alphaMap=null,u.envMap=l.envMap===void 0?null:l.envMap,u.envMapIntensity=1,u.refractionRatio=.98,u}}class lo{constructor(){this.name=H.KHR_MESH_QUANTIZATION}}class qi extends y.Interpolant{constructor(l,u,a,d){super(l,u,a,d)}copySampleValue_(l){const u=this.resultBuffer,a=this.sampleValues,d=this.valueSize,m=l*d*3+d;for(let h=0;h!==d;h++)u[h]=a[m+h];return u}interpolate_(l,u,a,d){const m=this.resultBuffer,h=this.sampleValues,f=this.valueSize,v=f*2,w=f*3,P=d-u,_=(a-u)/P,k=_*_,A=k*_,T=l*w,I=T-w,V=-2*A+3*k,D=A-k,Y=1-V,R=D-k+_;for(let oe=0;oe!==f;oe++){const he=h[I+oe+f],se=h[I+oe+v]*P,W=h[T+oe+f],G=h[T+oe]*P;m[oe]=Y*he+R*se+V*W+D*G}return m}}const co=new y.Quaternion;class po extends qi{interpolate_(l,u,a,d){const m=super.interpolate_(l,u,a,d);return co.fromArray(m).normalize().toArray(m),m}}const Je={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},vn={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Hi={9728:y.NearestFilter,9729:y.LinearFilter,9984:y.NearestMipmapNearestFilter,9985:y.LinearMipmapNearestFilter,9986:y.NearestMipmapLinearFilter,9987:y.LinearMipmapLinearFilter},Yi={33071:y.ClampToEdgeWrapping,33648:y.MirroredRepeatWrapping,10497:y.RepeatWrapping},Xi={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Ps={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"},uo={CUBICSPLINE:void 0,LINEAR:y.InterpolateLinear,STEP:y.InterpolateDiscrete},Es={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function ho(M){return M.DefaultMaterial===void 0&&(M.DefaultMaterial=new y.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:y.FrontSide})),M.DefaultMaterial}function fn(M,l,u){for(const a in u.extensions)M[a]===void 0&&(l.userData.gltfExtensions=l.userData.gltfExtensions||{},l.userData.gltfExtensions[a]=u.extensions[a])}function St(M,l){l.extras!==void 0&&(typeof l.extras=="object"?Object.assign(M.userData,l.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+l.extras))}function mo(M,l,u){let a=!1,d=!1,m=!1;for(let w=0,P=l.length;w<P;w++){const _=l[w];if(_.POSITION!==void 0&&(a=!0),_.NORMAL!==void 0&&(d=!0),_.COLOR_0!==void 0&&(m=!0),a&&d&&m)break}if(!a&&!d&&!m)return Promise.resolve(M);const h=[],f=[],v=[];for(let w=0,P=l.length;w<P;w++){const _=l[w];if(a){const k=_.POSITION!==void 0?u.getDependency("accessor",_.POSITION):M.attributes.position;h.push(k)}if(d){const k=_.NORMAL!==void 0?u.getDependency("accessor",_.NORMAL):M.attributes.normal;f.push(k)}if(m){const k=_.COLOR_0!==void 0?u.getDependency("accessor",_.COLOR_0):M.attributes.color;v.push(k)}}return Promise.all([Promise.all(h),Promise.all(f),Promise.all(v)]).then(function(w){const P=w[0],_=w[1],k=w[2];return a&&(M.morphAttributes.position=P),d&&(M.morphAttributes.normal=_),m&&(M.morphAttributes.color=k),M.morphTargetsRelative=!0,M})}function vo(M,l){if(M.updateMorphTargets(),l.weights!==void 0)for(let u=0,a=l.weights.length;u<a;u++)M.morphTargetInfluences[u]=l.weights[u];if(l.extras&&Array.isArray(l.extras.targetNames)){const u=l.extras.targetNames;if(M.morphTargetInfluences.length===u.length){M.morphTargetDictionary={};for(let a=0,d=u.length;a<d;a++)M.morphTargetDictionary[u[a]]=a}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function fo(M){const l=M.extensions&&M.extensions[H.KHR_DRACO_MESH_COMPRESSION];let u;return l?u="draco:"+l.bufferView+":"+l.indices+":"+Wi(l.attributes):u=M.indices+":"+Wi(M.attributes)+":"+M.mode,u}function Wi(M){let l="";const u=Object.keys(M).sort();for(let a=0,d=u.length;a<d;a++)l+=u[a]+":"+M[u[a]]+";";return l}function ks(M){switch(M){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 bo(M){return M.search(/\.jpe?g($|\?)/i)>0||M.search(/^data\:image\/jpeg/)===0?"image/jpeg":M.search(/\.webp($|\?)/i)>0||M.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}class go{constructor(l={},u={}){var a,d;this.json=l,this.extensions={},this.plugins={},this.options=u,this.cache=new Gr,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 m=typeof navigator<"u"&&/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,h=typeof navigator<"u"&&((a=navigator.userAgent)===null||a===void 0?void 0:a.indexOf("Firefox"))>-1,f=typeof navigator<"u"&&h?(d=navigator.userAgent)===null||d===void 0?void 0:d.match(/Firefox\/([0-9]+)\./)[1]:-1;typeof createImageBitmap>"u"||m||h&&f<98?this.textureLoader=new y.TextureLoader(this.options.manager):this.textureLoader=new y.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new y.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(l){this.extensions=l}setPlugins(l){this.plugins=l}parse(l,u){const a=this,d=this.json,m=this.extensions;this.cache.removeAll(),this._invokeAll(function(h){return h._markDefs&&h._markDefs()}),Promise.all(this._invokeAll(function(h){return h.beforeRoot&&h.beforeRoot()})).then(function(){return Promise.all([a.getDependencies("scene"),a.getDependencies("animation"),a.getDependencies("camera")])}).then(function(h){const f={scene:h[0][d.scene||0],scenes:h[0],animations:h[1],cameras:h[2],asset:d.asset,parser:a,userData:{}};fn(m,f,d),St(f,d),Promise.all(a._invokeAll(function(v){return v.afterRoot&&v.afterRoot(f)})).then(function(){l(f)})}).catch(u)}_markDefs(){const l=this.json.nodes||[],u=this.json.skins||[],a=this.json.meshes||[];for(let d=0,m=u.length;d<m;d++){const h=u[d].joints;for(let f=0,v=h.length;f<v;f++)l[h[f]].isBone=!0}for(let d=0,m=l.length;d<m;d++){const h=l[d];h.mesh!==void 0&&(this._addNodeRef(this.meshCache,h.mesh),h.skin!==void 0&&(a[h.mesh].isSkinnedMesh=!0)),h.camera!==void 0&&this._addNodeRef(this.cameraCache,h.camera)}}_addNodeRef(l,u){u!==void 0&&(l.refs[u]===void 0&&(l.refs[u]=l.uses[u]=0),l.refs[u]++)}_getNodeRef(l,u,a){if(l.refs[u]<=1)return a;const d=a.clone(),m=(h,f)=>{const v=this.associations.get(h);v!=null&&this.associations.set(f,v);for(const[w,P]of h.children.entries())m(P,f.children[w])};return m(a,d),d.name+="_instance_"+l.uses[u]++,d}_invokeOne(l){const u=Object.values(this.plugins);u.push(this);for(let a=0;a<u.length;a++){const d=l(u[a]);if(d)return d}return null}_invokeAll(l){const u=Object.values(this.plugins);u.unshift(this);const a=[];for(let d=0;d<u.length;d++){const m=l(u[d]);m&&a.push(m)}return a}getDependency(l,u){const a=l+":"+u;let d=this.cache.get(a);if(!d){switch(l){case"scene":d=this.loadScene(u);break;case"node":d=this.loadNode(u);break;case"mesh":d=this._invokeOne(function(m){return m.loadMesh&&m.loadMesh(u)});break;case"accessor":d=this.loadAccessor(u);break;case"bufferView":d=this._invokeOne(function(m){return m.loadBufferView&&m.loadBufferView(u)});break;case"buffer":d=this.loadBuffer(u);break;case"material":d=this._invokeOne(function(m){return m.loadMaterial&&m.loadMaterial(u)});break;case"texture":d=this._invokeOne(function(m){return m.loadTexture&&m.loadTexture(u)});break;case"skin":d=this.loadSkin(u);break;case"animation":d=this._invokeOne(function(m){return m.loadAnimation&&m.loadAnimation(u)});break;case"camera":d=this.loadCamera(u);break;default:throw new Error("Unknown type: "+l)}this.cache.add(a,d)}return d}getDependencies(l){let u=this.cache.get(l);if(!u){const a=this,d=this.json[l+(l==="mesh"?"es":"s")]||[];u=Promise.all(d.map(function(m,h){return a.getDependency(l,h)})),this.cache.add(l,u)}return u}loadBuffer(l){const u=this.json.buffers[l],a=this.fileLoader;if(u.type&&u.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+u.type+" buffer type is not supported.");if(u.uri===void 0&&l===0)return Promise.resolve(this.extensions[H.KHR_BINARY_GLTF].body);const d=this.options;return new Promise(function(m,h){a.load(y.LoaderUtils.resolveURL(u.uri,d.path),m,void 0,function(){h(new Error('THREE.GLTFLoader: Failed to load buffer "'+u.uri+'".'))})})}loadBufferView(l){const u=this.json.bufferViews[l];return this.getDependency("buffer",u.buffer).then(function(a){const d=u.byteLength||0,m=u.byteOffset||0;return a.slice(m,m+d)})}loadAccessor(l){const u=this,a=this.json,d=this.json.accessors[l];if(d.bufferView===void 0&&d.sparse===void 0)return Promise.resolve(null);const m=[];return d.bufferView!==void 0?m.push(this.getDependency("bufferView",d.bufferView)):m.push(null),d.sparse!==void 0&&(m.push(this.getDependency("bufferView",d.sparse.indices.bufferView)),m.push(this.getDependency("bufferView",d.sparse.values.bufferView))),Promise.all(m).then(function(h){const f=h[0],v=Xi[d.type],w=vn[d.componentType],P=w.BYTES_PER_ELEMENT,_=P*v,k=d.byteOffset||0,A=d.bufferView!==void 0?a.bufferViews[d.bufferView].byteStride:void 0,T=d.normalized===!0;let I,V;if(A&&A!==_){const D=Math.floor(k/A),Y="InterleavedBuffer:"+d.bufferView+":"+d.componentType+":"+D+":"+d.count;let R=u.cache.get(Y);R||(I=new w(f,D*A,d.count*A/P),R=new y.InterleavedBuffer(I,A/P),u.cache.add(Y,R)),V=new y.InterleavedBufferAttribute(R,v,k%A/P,T)}else f===null?I=new w(d.count*v):I=new w(f,k,d.count*v),V=new y.BufferAttribute(I,v,T);if(d.sparse!==void 0){const D=Xi.SCALAR,Y=vn[d.sparse.indices.componentType],R=d.sparse.indices.byteOffset||0,oe=d.sparse.values.byteOffset||0,he=new Y(h[1],R,d.sparse.count*D),se=new w(h[2],oe,d.sparse.count*v);f!==null&&(V=new y.BufferAttribute(V.array.slice(),V.itemSize,V.normalized));for(let W=0,G=he.length;W<G;W++){const te=he[W];if(V.setX(te,se[W*v]),v>=2&&V.setY(te,se[W*v+1]),v>=3&&V.setZ(te,se[W*v+2]),v>=4&&V.setW(te,se[W*v+3]),v>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return V})}loadTexture(l){const u=this.json,a=this.options,m=u.textures[l].source,h=u.images[m];let f=this.textureLoader;if(h.uri){const v=a.manager.getHandler(h.uri);v!==null&&(f=v)}return this.loadTextureImage(l,m,f)}loadTextureImage(l,u,a){const d=this,m=this.json,h=m.textures[l],f=m.images[u],v=(f.uri||f.bufferView)+":"+h.sampler;if(this.textureCache[v])return this.textureCache[v];const w=this.loadImageSource(u,a).then(function(P){P.flipY=!1,h.name&&(P.name=h.name);const k=(m.samplers||{})[h.sampler]||{};return P.magFilter=Hi[k.magFilter]||y.LinearFilter,P.minFilter=Hi[k.minFilter]||y.LinearMipmapLinearFilter,P.wrapS=Yi[k.wrapS]||y.RepeatWrapping,P.wrapT=Yi[k.wrapT]||y.RepeatWrapping,d.associations.set(P,{textures:l}),P}).catch(function(){return null});return this.textureCache[v]=w,w}loadImageSource(l,u){const a=this,d=this.json,m=this.options;if(this.sourceCache[l]!==void 0)return this.sourceCache[l].then(_=>_.clone());const h=d.images[l],f=self.URL||self.webkitURL;let v=h.uri||"",w=!1;if(h.bufferView!==void 0)v=a.getDependency("bufferView",h.bufferView).then(function(_){w=!0;const k=new Blob([_],{type:h.mimeType});return v=f.createObjectURL(k),v});else if(h.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+l+" is missing URI and bufferView");const P=Promise.resolve(v).then(function(_){return new Promise(function(k,A){let T=k;u.isImageBitmapLoader===!0&&(T=function(I){const V=new y.Texture(I);V.needsUpdate=!0,k(V)}),u.load(y.LoaderUtils.resolveURL(_,m.path),T,void 0,A)})}).then(function(_){return w===!0&&f.revokeObjectURL(v),_.userData.mimeType=h.mimeType||bo(h.uri),_}).catch(function(_){throw console.error("THREE.GLTFLoader: Couldn't load texture",v),_});return this.sourceCache[l]=P,P}assignTexture(l,u,a,d){const m=this;return this.getDependency("texture",a.index).then(function(h){if(a.texCoord!==void 0&&a.texCoord!=0&&!(u==="aoMap"&&a.texCoord==1)&&console.warn("THREE.GLTFLoader: Custom UV set "+a.texCoord+" for texture "+u+" not yet supported."),m.extensions[H.KHR_TEXTURE_TRANSFORM]){const f=a.extensions!==void 0?a.extensions[H.KHR_TEXTURE_TRANSFORM]:void 0;if(f){const v=m.associations.get(h);h=m.extensions[H.KHR_TEXTURE_TRANSFORM].extendTexture(h,f),m.associations.set(h,v)}}return d!==void 0&&(h.encoding=d),l[u]=h,h})}assignFinalMaterial(l){const u=l.geometry;let a=l.material;const d=u.attributes.tangent===void 0,m=u.attributes.color!==void 0,h=u.attributes.normal===void 0;if(l.isPoints){const f="PointsMaterial:"+a.uuid;let v=this.cache.get(f);v||(v=new y.PointsMaterial,y.Material.prototype.copy.call(v,a),v.color.copy(a.color),v.map=a.map,v.sizeAttenuation=!1,this.cache.add(f,v)),a=v}else if(l.isLine){const f="LineBasicMaterial:"+a.uuid;let v=this.cache.get(f);v||(v=new y.LineBasicMaterial,y.Material.prototype.copy.call(v,a),v.color.copy(a.color),this.cache.add(f,v)),a=v}if(d||m||h){let f="ClonedMaterial:"+a.uuid+":";a.isGLTFSpecularGlossinessMaterial&&(f+="specular-glossiness:"),d&&(f+="derivative-tangents:"),m&&(f+="vertex-colors:"),h&&(f+="flat-shading:");let v=this.cache.get(f);v||(v=a.clone(),m&&(v.vertexColors=!0),h&&(v.flatShading=!0),d&&(v.normalScale&&(v.normalScale.y*=-1),v.clearcoatNormalScale&&(v.clearcoatNormalScale.y*=-1)),this.cache.add(f,v),this.associations.set(v,this.associations.get(a))),a=v}a.aoMap&&u.attributes.uv2===void 0&&u.attributes.uv!==void 0&&u.setAttribute("uv2",u.attributes.uv),l.material=a}getMaterialType(){return y.MeshStandardMaterial}loadMaterial(l){const u=this,a=this.json,d=this.extensions,m=a.materials[l];let h;const f={},v=m.extensions||{},w=[];if(v[H.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]){const _=d[H.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS];h=_.getMaterialType(),w.push(_.extendParams(f,m,u))}else if(v[H.KHR_MATERIALS_UNLIT]){const _=d[H.KHR_MATERIALS_UNLIT];h=_.getMaterialType(),w.push(_.extendParams(f,m,u))}else{const _=m.pbrMetallicRoughness||{};if(f.color=new y.Color(1,1,1),f.opacity=1,Array.isArray(_.baseColorFactor)){const k=_.baseColorFactor;f.color.fromArray(k),f.opacity=k[3]}_.baseColorTexture!==void 0&&w.push(u.assignTexture(f,"map",_.baseColorTexture,y.sRGBEncoding)),f.metalness=_.metallicFactor!==void 0?_.metallicFactor:1,f.roughness=_.roughnessFactor!==void 0?_.roughnessFactor:1,_.metallicRoughnessTexture!==void 0&&(w.push(u.assignTexture(f,"metalnessMap",_.metallicRoughnessTexture)),w.push(u.assignTexture(f,"roughnessMap",_.metallicRoughnessTexture))),h=this._invokeOne(function(k){return k.getMaterialType&&k.getMaterialType(l)}),w.push(Promise.all(this._invokeAll(function(k){return k.extendMaterialParams&&k.extendMaterialParams(l,f)})))}m.doubleSided===!0&&(f.side=y.DoubleSide);const P=m.alphaMode||Es.OPAQUE;if(P===Es.BLEND?(f.transparent=!0,f.depthWrite=!1):(f.transparent=!1,P===Es.MASK&&(f.alphaTest=m.alphaCutoff!==void 0?m.alphaCutoff:.5)),m.normalTexture!==void 0&&h!==y.MeshBasicMaterial&&(w.push(u.assignTexture(f,"normalMap",m.normalTexture)),f.normalScale=new y.Vector2(1,1),m.normalTexture.scale!==void 0)){const _=m.normalTexture.scale;f.normalScale.set(_,_)}return m.occlusionTexture!==void 0&&h!==y.MeshBasicMaterial&&(w.push(u.assignTexture(f,"aoMap",m.occlusionTexture)),m.occlusionTexture.strength!==void 0&&(f.aoMapIntensity=m.occlusionTexture.strength)),m.emissiveFactor!==void 0&&h!==y.MeshBasicMaterial&&(f.emissive=new y.Color().fromArray(m.emissiveFactor)),m.emissiveTexture!==void 0&&h!==y.MeshBasicMaterial&&w.push(u.assignTexture(f,"emissiveMap",m.emissiveTexture,y.sRGBEncoding)),Promise.all(w).then(function(){let _;return h===Cs?_=d[H.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(f):_=new h(f),m.name&&(_.name=m.name),St(_,m),u.associations.set(_,{materials:l}),m.extensions&&fn(d,_,m),_})}createUniqueName(l){const u=y.PropertyBinding.sanitizeNodeName(l||"");let a=u;for(let d=1;this.nodeNamesUsed[a];++d)a=u+"_"+d;return this.nodeNamesUsed[a]=!0,a}loadGeometries(l){const u=this,a=this.extensions,d=this.primitiveCache;function m(f){return a[H.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(f,u).then(function(v){return Qi(v,f,u)})}const h=[];for(let f=0,v=l.length;f<v;f++){const w=l[f],P=fo(w),_=d[P];if(_)h.push(_.promise);else{let k;w.extensions&&w.extensions[H.KHR_DRACO_MESH_COMPRESSION]?k=m(w):k=Qi(new y.BufferGeometry,w,u),d[P]={primitive:w,promise:k},h.push(k)}}return Promise.all(h)}loadMesh(l){const u=this,a=this.json,d=this.extensions,m=a.meshes[l],h=m.primitives,f=[];for(let v=0,w=h.length;v<w;v++){const P=h[v].material===void 0?ho(this.cache):this.getDependency("material",h[v].material);f.push(P)}return f.push(u.loadGeometries(h)),Promise.all(f).then(function(v){const w=v.slice(0,v.length-1),P=v[v.length-1],_=[];for(let A=0,T=P.length;A<T;A++){const I=P[A],V=h[A];let D;const Y=w[A];if(V.mode===Je.TRIANGLES||V.mode===Je.TRIANGLE_STRIP||V.mode===Je.TRIANGLE_FAN||V.mode===void 0)D=m.isSkinnedMesh===!0?new y.SkinnedMesh(I,Y):new y.Mesh(I,Y),D.isSkinnedMesh===!0&&!D.geometry.attributes.skinWeight.normalized&&D.normalizeSkinWeights(),V.mode===Je.TRIANGLE_STRIP?D.geometry=Ji(D.geometry,y.TriangleStripDrawMode):V.mode===Je.TRIANGLE_FAN&&(D.geometry=Ji(D.geometry,y.TriangleFanDrawMode));else if(V.mode===Je.LINES)D=new y.LineSegments(I,Y);else if(V.mode===Je.LINE_STRIP)D=new y.Line(I,Y);else if(V.mode===Je.LINE_LOOP)D=new y.LineLoop(I,Y);else if(V.mode===Je.POINTS)D=new y.Points(I,Y);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+V.mode);Object.keys(D.geometry.morphAttributes).length>0&&vo(D,m),D.name=u.createUniqueName(m.name||"mesh_"+l),St(D,m),V.extensions&&fn(d,D,V),u.assignFinalMaterial(D),_.push(D)}for(let A=0,T=_.length;A<T;A++)u.associations.set(_[A],{meshes:l,primitives:A});if(_.length===1)return _[0];const k=new y.Group;u.associations.set(k,{meshes:l});for(let A=0,T=_.length;A<T;A++)k.add(_[A]);return k})}loadCamera(l){let u;const a=this.json.cameras[l],d=a[a.type];if(!d){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return a.type==="perspective"?u=new y.PerspectiveCamera(y.MathUtils.radToDeg(d.yfov),d.aspectRatio||1,d.znear||1,d.zfar||2e6):a.type==="orthographic"&&(u=new y.OrthographicCamera(-d.xmag,d.xmag,d.ymag,-d.ymag,d.znear,d.zfar)),a.name&&(u.name=this.createUniqueName(a.name)),St(u,a),Promise.resolve(u)}loadSkin(l){const u=this.json.skins[l],a={joints:u.joints};return u.inverseBindMatrices===void 0?Promise.resolve(a):this.getDependency("accessor",u.inverseBindMatrices).then(function(d){return a.inverseBindMatrices=d,a})}loadAnimation(l){const a=this.json.animations[l],d=[],m=[],h=[],f=[],v=[];for(let w=0,P=a.channels.length;w<P;w++){const _=a.channels[w],k=a.samplers[_.sampler],A=_.target,T=A.node,I=a.parameters!==void 0?a.parameters[k.input]:k.input,V=a.parameters!==void 0?a.parameters[k.output]:k.output;d.push(this.getDependency("node",T)),m.push(this.getDependency("accessor",I)),h.push(this.getDependency("accessor",V)),f.push(k),v.push(A)}return Promise.all([Promise.all(d),Promise.all(m),Promise.all(h),Promise.all(f),Promise.all(v)]).then(function(w){const P=w[0],_=w[1],k=w[2],A=w[3],T=w[4],I=[];for(let D=0,Y=P.length;D<Y;D++){const R=P[D],oe=_[D],he=k[D],se=A[D],W=T[D];if(R===void 0)continue;R.updateMatrix();let G;switch(pt[W.path]){case pt.weights:G=y.NumberKeyframeTrack;break;case pt.rotation:G=y.QuaternionKeyframeTrack;break;case pt.position:case pt.scale:default:G=y.VectorKeyframeTrack;break}const te=R.name?R.name:R.uuid,ie=se.interpolation!==void 0?uo[se.interpolation]:y.InterpolateLinear,_e=[];pt[W.path]===pt.weights?R.traverse(function(me){me.morphTargetInfluences&&_e.push(me.name?me.name:me.uuid)}):_e.push(te);let Pe=he.array;if(he.normalized){const me=ks(Pe.constructor),de=new Float32Array(Pe.length);for(let be=0,Z=Pe.length;be<Z;be++)de[be]=Pe[be]*me;Pe=de}for(let me=0,de=_e.length;me<de;me++){const be=new G(_e[me]+"."+pt[W.path],oe.array,Pe,ie);se.interpolation==="CUBICSPLINE"&&(be.createInterpolant=function(j){const ut=this instanceof y.QuaternionKeyframeTrack?po:qi;return new ut(this.times,this.values,this.getValueSize()/3,j)},be.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0),I.push(be)}}const V=a.name?a.name:"animation_"+l;return new y.AnimationClip(V,void 0,I)})}createNodeMesh(l){const u=this.json,a=this,d=u.nodes[l];return d.mesh===void 0?null:a.getDependency("mesh",d.mesh).then(function(m){const h=a._getNodeRef(a.meshCache,d.mesh,m);return d.weights!==void 0&&h.traverse(function(f){if(f.isMesh)for(let v=0,w=d.weights.length;v<w;v++)f.morphTargetInfluences[v]=d.weights[v]}),h})}loadNode(l){const u=this.json,a=this.extensions,d=this,m=u.nodes[l],h=m.name?d.createUniqueName(m.name):"";return function(){const f=[],v=d._invokeOne(function(w){return w.createNodeMesh&&w.createNodeMesh(l)});return v&&f.push(v),m.camera!==void 0&&f.push(d.getDependency("camera",m.camera).then(function(w){return d._getNodeRef(d.cameraCache,m.camera,w)})),d._invokeAll(function(w){return w.createNodeAttachment&&w.createNodeAttachment(l)}).forEach(function(w){f.push(w)}),Promise.all(f)}().then(function(f){let v;if(m.isBone===!0?v=new y.Bone:f.length>1?v=new y.Group:f.length===1?v=f[0]:v=new y.Object3D,v!==f[0])for(let w=0,P=f.length;w<P;w++)v.add(f[w]);if(m.name&&(v.userData.name=m.name,v.name=h),St(v,m),m.extensions&&fn(a,v,m),m.matrix!==void 0){const w=new y.Matrix4;w.fromArray(m.matrix),v.applyMatrix4(w)}else m.translation!==void 0&&v.position.fromArray(m.translation),m.rotation!==void 0&&v.quaternion.fromArray(m.rotation),m.scale!==void 0&&v.scale.fromArray(m.scale);return d.associations.has(v)||d.associations.set(v,{}),d.associations.get(v).nodes=l,v})}loadScene(l){const u=this.json,a=this.extensions,d=this.json.scenes[l],m=this,h=new y.Group;d.name&&(h.name=m.createUniqueName(d.name)),St(h,d),d.extensions&&fn(a,h,d);const f=d.nodes||[],v=[];for(let w=0,P=f.length;w<P;w++)v.push(Zi(f[w],h,u,m));return Promise.all(v).then(function(){const w=P=>{const _=new Map;for(const[k,A]of m.associations)(k instanceof y.Material||k instanceof y.Texture)&&_.set(k,A);return P.traverse(k=>{const A=m.associations.get(k);A!=null&&_.set(k,A)}),_};return m.associations=w(h),h})}}function Zi(M,l,u,a){const d=u.nodes[M];return a.getDependency("node",M).then(function(m){if(d.skin===void 0)return m;let h;return a.getDependency("skin",d.skin).then(function(f){h=f;const v=[];for(let w=0,P=h.joints.length;w<P;w++)v.push(a.getDependency("node",h.joints[w]));return Promise.all(v)}).then(function(f){return m.traverse(function(v){if(!v.isMesh)return;const w=[],P=[];for(let _=0,k=f.length;_<k;_++){const A=f[_];if(A){w.push(A);const T=new y.Matrix4;h.inverseBindMatrices!==void 0&&T.fromArray(h.inverseBindMatrices.array,_*16),P.push(T)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',h.joints[_])}v.bind(new y.Skeleton(w,P),v.matrixWorld)}),m})}).then(function(m){l.add(m);const h=[];if(d.children){const f=d.children;for(let v=0,w=f.length;v<w;v++){const P=f[v];h.push(Zi(P,m,u,a))}}return Promise.all(h)})}function _o(M,l,u){const a=l.attributes,d=new y.Box3;if(a.POSITION!==void 0){const f=u.json.accessors[a.POSITION],v=f.min,w=f.max;if(v!==void 0&&w!==void 0){if(d.set(new y.Vector3(v[0],v[1],v[2]),new y.Vector3(w[0],w[1],w[2])),f.normalized){const P=ks(vn[f.componentType]);d.min.multiplyScalar(P),d.max.multiplyScalar(P)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const m=l.targets;if(m!==void 0){const f=new y.Vector3,v=new y.Vector3;for(let w=0,P=m.length;w<P;w++){const _=m[w];if(_.POSITION!==void 0){const k=u.json.accessors[_.POSITION],A=k.min,T=k.max;if(A!==void 0&&T!==void 0){if(v.setX(Math.max(Math.abs(A[0]),Math.abs(T[0]))),v.setY(Math.max(Math.abs(A[1]),Math.abs(T[1]))),v.setZ(Math.max(Math.abs(A[2]),Math.abs(T[2]))),k.normalized){const I=ks(vn[k.componentType]);v.multiplyScalar(I)}f.max(v)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}d.expandByVector(f)}M.boundingBox=d;const h=new y.Sphere;d.getCenter(h.center),h.radius=d.min.distanceTo(d.max)/2,M.boundingSphere=h}function Qi(M,l,u){const a=l.attributes,d=[];function m(h,f){return u.getDependency("accessor",h).then(function(v){M.setAttribute(f,v)})}for(const h in a){const f=Ps[h]||h.toLowerCase();f in M.attributes||d.push(m(a[h],f))}if(l.indices!==void 0&&!M.index){const h=u.getDependency("accessor",l.indices).then(function(f){M.setIndex(f)});d.push(h)}return St(M,l),_o(M,l,u),Promise.all(d).then(function(){return l.targets!==void 0?mo(M,l.targets,u):M})}function Ji(M,l){let u=M.getIndex();if(u===null){const h=[],f=M.getAttribute("position");if(f!==void 0){for(let v=0;v<f.count;v++)h.push(v);M.setIndex(h),u=M.getIndex()}else return console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),M}const a=u.count-2,d=[];if(l===y.TriangleFanDrawMode)for(let h=1;h<=a;h++)d.push(u.getX(0)),d.push(u.getX(h)),d.push(u.getX(h+1));else for(let h=0;h<a;h++)h%2===0?(d.push(u.getX(h)),d.push(u.getX(h+1)),d.push(u.getX(h+2))):(d.push(u.getX(h+2)),d.push(u.getX(h+1)),d.push(u.getX(h)));d.length/3!==a&&console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const m=M.clone();return m.setIndex(d),m}class wo extends y.ExtrudeGeometry{constructor(l,u){const{bevelEnabled:a=!1,bevelSize:d=8,bevelThickness:m=10,font:h,height:f=50,size:v=100,lineHeight:w=1,letterSpacing:P=0,..._}=u,k=h.generateShapes(l,v,{lineHeight:w,letterSpacing:P});super(k,{..._,bevelEnabled:a,bevelSize:d,bevelThickness:m,depth:f}),this.type="TextGeometry"}}class xo extends y.Loader{constructor(l){super(l)}load(l,u,a,d){const m=new y.FileLoader(this.manager);m.setPath(this.path),m.setRequestHeader(this.requestHeader),m.setWithCredentials(this.withCredentials),m.load(l,h=>{if(typeof h!="string")throw new Error("unsupported data type");const f=JSON.parse(h),v=this.parse(f);u&&u(v)},a,d)}parse(l){return new Ms(l)}}class Ms{constructor(l){z(this,"data",void 0),this.data=l}generateShapes(l,u=100,a){const d=[],m={letterSpacing:0,lineHeight:1,...a},h=yo(l,u,this.data,m);for(let f=0,v=h.length;f<v;f++)Array.prototype.push.apply(d,h[f].toShapes(!1));return d}}z(Ms,"isFont",void 0),z(Ms,"type",void 0);function yo(M,l,u,a){const d=Array.from(M),m=l/u.resolution,h=(u.boundingBox.yMax-u.boundingBox.yMin+u.underlineThickness)*m,f=[];let v=0,w=0;for(let P=0;P<d.length;P++){const _=d[P];if(_===`
|
|
14
|
-
`)
|
|
15
|
-
`);this.workerSourceURL=URL.createObjectURL(new Blob([h]))}),this.decoderPending}_getWorker(l,u){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const d=new Worker(this.workerSourceURL);d._callbacks={},d._taskCosts={},d._taskLoad=0,d.postMessage({type:"init",decoderConfig:this.decoderConfig}),d.onmessage=function(m){const h=m.data;switch(h.type){case"decode":d._callbacks[h.id].resolve(h);break;case"error":d._callbacks[h.id].reject(h);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+h.type+'"')}},this.workerPool.push(d)}else this.workerPool.sort(function(d,m){return d._taskLoad>m._taskLoad?-1:1});const a=this.workerPool[this.workerPool.length-1];return a._taskCosts[l]=u,a._taskLoad+=u,a})}_releaseTask(l,u){l._taskLoad-=l._taskCosts[u],delete l._callbacks[u],delete l._taskCosts[u]}debug(){console.log("Task load: ",this.workerPool.map(l=>l._taskLoad))}dispose(){for(let l=0;l<this.workerPool.length;++l)this.workerPool[l].terminate();return this.workerPool.length=0,this}}function ko(){let M,l;onmessage=function(h){const f=h.data;switch(f.type){case"init":M=f.decoderConfig,l=new Promise(function(P){M.onModuleLoaded=function(_){P({draco:_})},DracoDecoderModule(M)});break;case"decode":const v=f.buffer,w=f.taskConfig;l.then(P=>{const _=P.draco,k=new _.Decoder,A=new _.DecoderBuffer;A.Init(new Int8Array(v),v.byteLength);try{const T=u(_,k,A,w),I=T.attributes.map(V=>V.array.buffer);T.index&&I.push(T.index.array.buffer),self.postMessage({type:"decode",id:f.id,geometry:T},I)}catch(T){console.error(T),self.postMessage({type:"error",id:f.id,error:T.message})}finally{_.destroy(A),_.destroy(k)}});break}};function u(h,f,v,w){const P=w.attributeIDs,_=w.attributeTypes;let k,A;const T=f.GetEncodedGeometryType(v);if(T===h.TRIANGULAR_MESH)k=new h.Mesh,A=f.DecodeBufferToMesh(v,k);else if(T===h.POINT_CLOUD)k=new h.PointCloud,A=f.DecodeBufferToPointCloud(v,k);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!A.ok()||k.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+A.error_msg());const I={index:null,attributes:[]};for(const V in P){const D=self[_[V]];let Y,R;if(w.useUniqueIDs)R=P[V],Y=f.GetAttributeByUniqueId(k,R);else{if(R=f.GetAttributeId(k,h[P[V]]),R===-1)continue;Y=f.GetAttribute(k,R)}I.attributes.push(d(h,f,k,V,D,Y))}return T===h.TRIANGULAR_MESH&&(I.index=a(h,f,k)),h.destroy(k),I}function a(h,f,v){const P=v.num_faces()*3,_=P*4,k=h._malloc(_);f.GetTrianglesUInt32Array(v,_,k);const A=new Uint32Array(h.HEAPF32.buffer,k,P).slice();return h._free(k),{array:A,itemSize:1}}function d(h,f,v,w,P,_){const k=_.num_components(),T=v.num_points()*k,I=T*P.BYTES_PER_ELEMENT,V=m(h,P),D=h._malloc(I);f.GetAttributeDataArrayForAllPoints(v,_,V,I,D);const Y=new P(h.HEAPF32.buffer,D,T).slice();return h._free(D),{name:w,array:Y,itemSize:k}}function m(h,f){switch(f){case Float32Array:return h.DT_FLOAT32;case Int8Array:return h.DT_INT8;case Int16Array:return h.DT_INT16;case Int32Array:return h.DT_INT32;case Uint8Array:return h.DT_UINT8;case Uint16Array:return h.DT_UINT16;case Uint32Array:return h.DT_UINT32}}}function tr(){return{extend:$.inject("extend")||(()=>{console.warn("No extend function provided")})}}const Mo=$.defineComponent({__name:"OrbitControls",props:{makeDefault:{type:Boolean,default:!1},camera:null,domElement:null,target:null,enableDamping:{type:Boolean}},setup(M){const l=$.ref(null),u=$.inject("camera"),a=$.inject("renderer"),{extend:d}=tr();return d({OrbitControls:zr}),(m,h)=>{var v;const f=$.resolveComponent("TresOrbitControls");return $.unref(u)&&$.unref(a)?($.openBlock(),$.createBlock(f,{key:0,ref_key:"controls",ref:l,args:[$.unref(u),(v=$.unref(a))==null?void 0:v.domElement],"enabling-dampling":M.enableDamping},null,8,["args","enabling-dampling"])):$.createCommentVNode("",!0)}}});var Ss={exports:{}};(function(M,l){(function(u,a){a(l)})(er,function(u){class a{constructor(e){const[t,i]=e.split("-"),p=t.split(".");this.major=parseInt(p[0],10),this.minor=parseInt(p[1],10),this.patch=parseInt(p[2],10),this.prerelease=i??null}toString(){const e=[this.major,this.minor,this.patch].join(".");return this.prerelease!==null?[e,this.prerelease].join("-"):e}}class d{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 m{constructor(e){this.target=e}}class h extends m{constructor(e,t,i,p){super(e),this.value=t,this.presetKey=i,this.last=p??!0}}class f extends m{constructor(e,t,i){super(e),this.value=t,this.presetKey=i}}class v extends m{constructor(e,t){super(e),this.expanded=t}}class w extends m{constructor(e,t){super(e),this.index=t}}function P(n){return n}function _(n){return n==null}function k(n,e){if(n.length!==e.length)return!1;for(let t=0;t<n.length;t++)if(n[t]!==e[t])return!1;return!0}const A={alreadydisposed:()=>"View has been already disposed",invalidparams:n=>`Invalid parameters for '${n.name}'`,nomatchingcontroller:n=>`No matching controller for '${n.key}'`,nomatchingview:n=>`No matching view for '${JSON.stringify(n.params)}'`,notbindable:()=>"Value is not bindable",propertynotfound:n=>`Property '${n.name}' not found`,shouldneverhappen:()=>"This error should never happen"};class T{constructor(e){var t;this.message=(t=A[e.type](e.context))!==null&&t!==void 0?t:"Unexpected error",this.name=this.constructor.name,this.stack=new Error(this.message).stack,this.type=e.type}static alreadyDisposed(){return new T({type:"alreadydisposed"})}static notBindable(){return new T({type:"notbindable"})}static propertyNotFound(e){return new T({type:"propertynotfound",context:{name:e}})}static shouldNeverHappen(){return new T({type:"shouldneverhappen"})}}class I{constructor(e,t,i){this.obj_=e,this.key_=t,this.presetKey_=i??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 i=this.read();if(!I.isBindable(i))throw T.notBindable();if(!(e in i))throw T.propertyNotFound(e);i[e]=t}}class V extends d{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 i=t.bind(this);return this.controller_.valueController.emitter.on(e,()=>{i(new m(this))}),this}}class D{constructor(){this.observers_={}}on(e,t){let i=this.observers_[e];return i||(i=this.observers_[e]=[]),i.push({handler:t}),this}off(e,t){const i=this.observers_[e];return i&&(this.observers_[e]=i.filter(p=>p.handler!==t)),this}emit(e,t){const i=this.observers_[e];i&&i.forEach(p=>{p.handler(t)})}}const Y="tp";function R(n){return(t,i)=>[Y,"-",n,"v",t?`_${t}`:"",i?`-${i}`:""].join("")}function oe(n,e){return t=>e(n(t))}function he(n){return n.rawValue}function se(n,e){n.emitter.on("change",oe(he,e)),e(n.rawValue)}function W(n,e,t){se(n.value(e),t)}function G(n,e,t){t?n.classList.add(e):n.classList.remove(e)}function te(n,e){return t=>{G(n,e,t)}}function ie(n,e){se(n,t=>{e.textContent=t??""})}const _e=R("btn");class Pe{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(_e()),t.viewProps.bindClassModifiers(this.element);const i=e.createElement("button");i.classList.add(_e("b")),t.viewProps.bindDisabled(i),this.element.appendChild(i),this.buttonElement=i;const p=e.createElement("div");p.classList.add(_e("t")),ie(t.props.value("title"),p),this.buttonElement.appendChild(p)}}class me{constructor(e,t){this.emitter=new D,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new Pe(e,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class de{constructor(e,t){var i;this.constraint_=t==null?void 0:t.constraint,this.equals_=(i=t==null?void 0:t.equals)!==null&&i!==void 0?i:(p,g)=>p===g,this.emitter=new D,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 i=t??{forceEmit:!1,last:!0},p=this.constraint_?this.constraint_.constrain(e):e;this.equals_(this.rawValue_,p)&&!i.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=p,this.emitter.emit("change",{options:i,rawValue:p,sender:this}))}}class be{constructor(e){this.emitter=new D,this.value_=e}get rawValue(){return this.value_}set rawValue(e){this.setRawValue(e,{forceEmit:!1,last:!0})}setRawValue(e,t){const i=t??{forceEmit:!1,last:!0};this.value_===e&&!i.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.value_=e,this.emitter.emit("change",{options:i,rawValue:this.value_,sender:this}))}}function Z(n,e){const t=e==null?void 0:e.constraint,i=e==null?void 0:e.equals;return!t&&!i?new be(n):new de(n,e)}class j{constructor(e){this.emitter=new D,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((i,p)=>Object.assign(i,{[p]:Z(e[p])}),{})}static fromObject(e){const t=this.createCore(e);return new j(t)}get(e){return this.valMap_[e].rawValue}set(e,t){this.valMap_[e].rawValue=t}value(e){return this.valMap_[e]}}function ut(n,e){const i=Object.keys(e).reduce((p,g)=>{if(p===void 0)return;const C=e[g],S=C(n[g]);return S.succeeded?Object.assign(Object.assign({},p),{[g]:S.value}):void 0},{});return i}function Yt(n,e){return n.reduce((t,i)=>{if(t===void 0)return;const p=e(i);if(!(!p.succeeded||p.value===void 0))return[...t,p.value]},[])}function Xt(n){return n===null?!1:typeof n=="object"}function we(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 i=n(t);return i!==void 0?{succeeded:!0,value:i}:{succeeded:!1,value:void 0}}}function Tt(n){return{custom:e=>we(e)(n),boolean:we(e=>typeof e=="boolean"?e:void 0)(n),number:we(e=>typeof e=="number"?e:void 0)(n),string:we(e=>typeof e=="string"?e:void 0)(n),function:we(e=>typeof e=="function"?e:void 0)(n),constant:e=>we(t=>t===e?e:void 0)(n),raw:we(e=>e)(n),object:e=>we(t=>{if(Xt(t))return ut(t,e)})(n),array:e=>we(t=>{if(Array.isArray(t))return Yt(t,e)})(n)}}const q={optional:Tt(!0),required:Tt(!1)};function ae(n,e){const t=q.required.object(e)(n);return t.succeeded?t.value:void 0}function bn(n){return n&&n.parentElement&&n.parentElement.removeChild(n),null}function Wt(){return["veryfirst","first","last","verylast"]}const At=R(""),Vt={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class Ee{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",()=>{Wt().forEach(i=>{t.classList.remove(At(void 0,Vt[i]))}),this.blade.get("positions").forEach(i=>{t.classList.add(At(void 0,Vt[i]))})}),this.viewProps.handleDispose(()=>{bn(t)})}get parent(){return this.parent_}}const ke="http://www.w3.org/2000/svg";function et(n){n.offsetHeight}function tt(n,e){const t=n.style.transition;n.style.transition="none",e(),n.style.transition=t}function dt(n){return n.ontouchstart!==void 0}function ht(){return globalThis}function gn(){return ht().document}function _n(n){const e=n.ownerDocument.defaultView;return e&&"document"in e?n.getContext("2d",{willReadFrequently:!0}):null}const Nt={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 qe(n,e){const t=n.createElementNS(ke,"svg");return t.innerHTML=Nt[e],t}function nt(n,e,t){n.insertBefore(e,n.children[t])}function He(n){n.parentElement&&n.parentElement.removeChild(n)}function Zt(n){for(;n.children.length>0;)n.removeChild(n.children[0])}function Qt(n){for(;n.childNodes.length>0;)n.removeChild(n.childNodes[0])}function Oe(n){return n.relatedTarget?n.relatedTarget:"explicitOriginalTarget"in n?n.explicitOriginalTarget:null}const Ye=R("lbl");function wn(n,e){const t=n.createDocumentFragment();return e.split(`
|
|
16
|
-
`).map(p=>n.createTextNode(p)).forEach((p,g)=>{g>0&&t.appendChild(n.createElement("br")),t.appendChild(p)}),t}class Ot{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Ye()),t.viewProps.bindClassModifiers(this.element);const i=e.createElement("div");i.classList.add(Ye("l")),W(t.props,"label",g=>{_(g)?this.element.classList.add(Ye(void 0,"nol")):(this.element.classList.remove(Ye(void 0,"nol")),Qt(i),i.appendChild(wn(e,g)))}),this.element.appendChild(i),this.labelElement=i;const p=e.createElement("div");p.classList.add(Ye("v")),this.element.appendChild(p),this.valueElement=p}}class Ie extends Ee{constructor(e,t){const i=t.valueController.viewProps;super(Object.assign(Object.assign({},t),{view:new Ot(e,{props:t.props,viewProps:i}),viewProps:i})),this.props=t.props,this.valueController=t.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}const mt={id:"button",type:"blade",accept(n){const e=q,t=ae(n,{title:e.required.string,view:e.required.constant("button"),label:e.optional.string});return t?{params:t}:null},controller(n){return new Ie(n.document,{blade:n.blade,props:j.fromObject({label:n.params.label}),valueController:new me(n.document,{props:j.fromObject({title:n.params.title}),viewProps:n.viewProps})})},api(n){return!(n.controller instanceof Ie)||!(n.controller.valueController instanceof me)?null:new V(n.controller)}};class Me extends Ee{constructor(e){super(e),this.value=e.value}}function Fe(){return new j({positions:Z([],{equals:k})})}class Be extends j{constructor(e){super(e)}static create(e){const t={completed:!0,expanded:e,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null},i=j.createCore(t);return new Be(i)}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")&&!_(e)?`${e}px`:"auto"}bindExpandedClass(e,t){const i=()=>{this.styleExpanded?e.classList.add(t):e.classList.remove(t)};W(this,"expanded",i),W(this,"temporaryExpanded",i)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function E(n,e){let t=0;return tt(e,()=>{n.set("expandedHeight",null),n.set("temporaryExpanded",!0),et(e),t=e.clientHeight,n.set("temporaryExpanded",null),et(e)}),t}function N(n,e){e.style.height=n.styleHeight}function U(n,e){n.value("expanded").emitter.on("beforechange",()=>{n.set("completed",!1),_(n.get("expandedHeight"))&&n.set("expandedHeight",E(n,e)),n.set("shouldFixHeight",!0),et(e)}),n.emitter.on("change",()=>{N(n,e)}),N(n,e),e.addEventListener("transitionend",t=>{t.propertyName==="height"&&n.cleanUpTransition()})}class X extends d{constructor(e,t){super(e),this.rackApi_=t}}function le(n,e){return n.addBlade(Object.assign(Object.assign({},e),{view:"button"}))}function Le(n,e){return n.addBlade(Object.assign(Object.assign({},e),{view:"folder"}))}function vt(n,e){const t=e??{};return n.addBlade(Object.assign(Object.assign({},t),{view:"separator"}))}function Jt(n,e){return n.addBlade(Object.assign(Object.assign({},e),{view:"tab"}))}class xe{constructor(e){this.emitter=new D,this.items_=[],this.cache_=new Set,this.onSubListAdd_=this.onSubListAdd_.bind(this),this.onSubListRemove_=this.onSubListRemove_.bind(this),this.extract_=e}get items(){return this.items_}allItems(){return Array.from(this.cache_)}find(e){for(const t of this.allItems())if(e(t))return t;return null}includes(e){return this.cache_.has(e)}add(e,t){if(this.includes(e))throw T.shouldNeverHappen();const i=t!==void 0?t:this.items_.length;this.items_.splice(i,0,e),this.cache_.add(e);const p=this.extract_(e);p&&(p.emitter.on("add",this.onSubListAdd_),p.emitter.on("remove",this.onSubListRemove_),p.allItems().forEach(g=>{this.cache_.add(g)})),this.emitter.emit("add",{index:i,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 i=this.extract_(e);i&&(i.emitter.off("add",this.onSubListAdd_),i.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 ye extends d{constructor(e){super(e),this.onBindingChange_=this.onBindingChange_.bind(this),this.emitter_=new D,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 i=t.bind(this);return this.emitter_.on(e,p=>{i(p.event)}),this}refresh(){this.controller_.binding.read()}onBindingChange_(e){const t=e.sender.target.read();this.emitter_.emit("change",{event:new h(this,t,this.controller_.binding.target.presetKey,e.options.last)})}}class Se extends Ie{constructor(e,t){super(e,t),this.binding=t.binding}}class st extends d{constructor(e){super(e),this.onBindingUpdate_=this.onBindingUpdate_.bind(this),this.emitter_=new D,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 i=t.bind(this);return this.emitter_.on(e,p=>{i(p.event)}),this}refresh(){this.controller_.binding.read()}onBindingUpdate_(e){const t=e.sender.target.read();this.emitter_.emit("update",{event:new f(this,t,this.controller_.binding.target.presetKey)})}}class Xe extends Ie{constructor(e,t){super(e,t),this.binding=t.binding,this.viewProps.bindDisabled(this.binding.ticker),this.viewProps.handleDispose(()=>{this.binding.dispose()})}}function It(n){return n instanceof Rt?n.apiSet_:n instanceof X?n.rackApi_.apiSet_:null}function Dt(n,e){const t=n.find(i=>i.controller_===e);if(!t)throw T.shouldNeverHappen();return t}function en(n,e,t){if(!I.isBindable(n))throw T.notBindable();return new I(n,e,t)}class Rt extends d{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 D,this.apiSet_=new xe(It),this.pool_=t;const i=this.controller_.rack;i.emitter.on("add",this.onRackAdd_),i.emitter.on("remove",this.onRackRemove_),i.emitter.on("inputchange",this.onRackInputChange_),i.emitter.on("monitorupdate",this.onRackMonitorUpdate_),i.children.forEach(p=>{this.setUpApi_(p)})}get children(){return this.controller_.rack.children.map(e=>Dt(this.apiSet_,e))}addInput(e,t,i){const p=i??{},g=this.controller_.view.element.ownerDocument,C=this.pool_.createInput(g,en(e,t,p.presetKey),p),S=new ye(C);return this.add(S,p.index)}addMonitor(e,t,i){const p=i??{},g=this.controller_.view.element.ownerDocument,C=this.pool_.createMonitor(g,en(e,t),p),S=new st(C);return this.add(S,p.index)}addFolder(e){return Le(this,e)}addButton(e){return le(this,e)}addSeparator(e){return vt(this,e)}addTab(e){return Jt(this,e)}add(e,t){this.controller_.rack.add(e.controller_,t);const i=this.apiSet_.find(p=>p.controller_===e.controller_);return i&&this.apiSet_.remove(i),this.apiSet_.add(e),e}remove(e){this.controller_.rack.remove(e.controller_)}addBlade(e){const t=this.controller_.view.element.ownerDocument,i=this.pool_.createBlade(t,e),p=this.pool_.createBladeApi(i);return this.add(p,e.index)}on(e,t){const i=t.bind(this);return this.emitter_.on(e,p=>{i(p.event)}),this}setUpApi_(e){this.apiSet_.find(i=>i.controller_===e)||this.apiSet_.add(this.pool_.createBladeApi(e))}onRackAdd_(e){this.setUpApi_(e.bladeController)}onRackRemove_(e){if(e.isRoot){const t=Dt(this.apiSet_,e.bladeController);this.apiSet_.remove(t)}}onRackInputChange_(e){const t=e.bladeController;if(t instanceof Se){const i=Dt(this.apiSet_,t),p=t.binding;this.emitter_.emit("change",{event:new h(i,p.target.read(),p.target.presetKey,e.options.last)})}else if(t instanceof Me){const i=Dt(this.apiSet_,t);this.emitter_.emit("change",{event:new h(i,t.value.rawValue,void 0,e.options.last)})}}onRackMonitorUpdate_(e){if(!(e.bladeController instanceof Xe))throw T.shouldNeverHappen();const t=Dt(this.apiSet_,e.bladeController),i=e.bladeController.binding;this.emitter_.emit("update",{event:new f(t,i.target.read(),i.target.presetKey)})}}class xn extends X{constructor(e,t){super(e,new Rt(e.rackController,t)),this.emitter_=new D,this.controller_.foldable.value("expanded").emitter.on("change",i=>{this.emitter_.emit("fold",{event:new v(this,i.sender.rawValue)})}),this.rackApi_.on("change",i=>{this.emitter_.emit("change",{event:i})}),this.rackApi_.on("update",i=>{this.emitter_.emit("update",{event:i})})}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,i){return this.rackApi_.addInput(e,t,i)}addMonitor(e,t,i){return this.rackApi_.addMonitor(e,t,i)}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 i=t.bind(this);return this.emitter_.on(e,p=>{i(p.event)}),this}}class yn extends Ee{constructor(e){super({blade:e.blade,view:e.view,viewProps:e.rackController.viewProps}),this.rackController=e.rackController}}class As{constructor(e,t){const i=R(t.viewName);this.element=e.createElement("div"),this.element.classList.add(i()),t.viewProps.bindClassModifiers(this.element)}}function Vs(n,e){for(let t=0;t<n.length;t++){const i=n[t];if(i instanceof Se&&i.binding===e)return i}return null}function Ns(n,e){for(let t=0;t<n.length;t++){const i=n[t];if(i instanceof Xe&&i.binding===e)return i}return null}function Os(n,e){for(let t=0;t<n.length;t++){const i=n[t];if(i instanceof Me&&i.value===e)return i}return null}function Cn(n){return n instanceof Ft?n.rack:n instanceof yn?n.rackController.rack:null}function Is(n){const e=Cn(n);return e?e.bcSet_:null}class Ds{constructor(e){var t;this.onBladePositionsChange_=this.onBladePositionsChange_.bind(this),this.onSetAdd_=this.onSetAdd_.bind(this),this.onSetRemove_=this.onSetRemove_.bind(this),this.onChildDispose_=this.onChildDispose_.bind(this),this.onChildPositionsChange_=this.onChildPositionsChange_.bind(this),this.onChildInputChange_=this.onChildInputChange_.bind(this),this.onChildMonitorUpdate_=this.onChildMonitorUpdate_.bind(this),this.onChildValueChange_=this.onChildValueChange_.bind(this),this.onChildViewPropsChange_=this.onChildViewPropsChange_.bind(this),this.onDescendantLayout_=this.onDescendantLayout_.bind(this),this.onDescendantInputChange_=this.onDescendantInputChange_.bind(this),this.onDescendantMonitorUpdate_=this.onDescendantMonitorUpdate_.bind(this),this.emitter=new D,this.blade_=e??null,(t=this.blade_)===null||t===void 0||t.value("positions").emitter.on("change",this.onBladePositionsChange_),this.bcSet_=new xe(Is),this.bcSet_.emitter.on("add",this.onSetAdd_),this.bcSet_.emitter.on("remove",this.onSetRemove_)}get children(){return this.bcSet_.items}add(e,t){e.parent&&e.parent.remove(e),e.parent_=this,this.bcSet_.add(e,t)}remove(e){e.parent_=null,this.bcSet_.remove(e)}find(e){return this.bcSet_.allItems().filter(t=>t instanceof e)}onSetAdd_(e){this.updatePositions_();const t=e.target===e.root;if(this.emitter.emit("add",{bladeController:e.item,index:e.index,isRoot:t,sender:this}),!t)return;const i=e.item;if(i.viewProps.emitter.on("change",this.onChildViewPropsChange_),i.blade.value("positions").emitter.on("change",this.onChildPositionsChange_),i.viewProps.handleDispose(this.onChildDispose_),i instanceof Se)i.binding.emitter.on("change",this.onChildInputChange_);else if(i instanceof Xe)i.binding.emitter.on("update",this.onChildMonitorUpdate_);else if(i instanceof Me)i.value.emitter.on("change",this.onChildValueChange_);else{const p=Cn(i);if(p){const g=p.emitter;g.on("layout",this.onDescendantLayout_),g.on("inputchange",this.onDescendantInputChange_),g.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 i=e.item;if(i instanceof Se)i.binding.emitter.off("change",this.onChildInputChange_);else if(i instanceof Xe)i.binding.emitter.off("update",this.onChildMonitorUpdate_);else if(i instanceof Me)i.value.emitter.off("change",this.onChildValueChange_);else{const p=Cn(i);if(p){const g=p.emitter;g.off("layout",this.onDescendantLayout_),g.off("inputchange",this.onDescendantInputChange_),g.off("monitorupdate",this.onDescendantMonitorUpdate_)}}}updatePositions_(){const e=this.bcSet_.items.filter(p=>!p.viewProps.get("hidden")),t=e[0],i=e[e.length-1];this.bcSet_.items.forEach(p=>{const g=[];p===t&&(g.push("first"),(!this.blade_||this.blade_.get("positions").includes("veryfirst"))&&g.push("veryfirst")),p===i&&(g.push("last"),(!this.blade_||this.blade_.get("positions").includes("verylast"))&&g.push("verylast")),p.blade.set("positions",g)})}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=Vs(this.find(Se),e.sender);if(!t)throw T.alreadyDisposed();this.emitter.emit("inputchange",{bladeController:t,options:e.options,sender:this})}onChildMonitorUpdate_(e){const t=Ns(this.find(Xe),e.sender);if(!t)throw T.alreadyDisposed();this.emitter.emit("monitorupdate",{bladeController:t,sender:this})}onChildValueChange_(e){const t=Os(this.find(Me),e.sender);if(!t)throw T.alreadyDisposed();this.emitter.emit("inputchange",{bladeController:t,options:e.options,sender:this})}onDescendantLayout_(e){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onDescendantInputChange_(e){this.emitter.emit("inputchange",{bladeController:e.bladeController,options:e.options,sender:this})}onDescendantMonitorUpdate_(e){this.emitter.emit("monitorupdate",{bladeController:e.bladeController,sender:this})}onBladePositionsChange_(){this.updatePositions_()}}class Ft extends Ee{constructor(e,t){super(Object.assign(Object.assign({},t),{view:new As(e,{viewName:"brk",viewProps:t.viewProps})})),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this);const i=new Ds(t.root?void 0:t.blade);i.emitter.on("add",this.onRackAdd_),i.emitter.on("remove",this.onRackRemove_),this.rack=i,this.viewProps.handleDispose(()=>{for(let p=this.rack.children.length-1;p>=0;p--)this.rack.children[p].viewProps.set("disposed",!0)})}onRackAdd_(e){e.isRoot&&nt(this.view.element,e.bladeController.view.element,e.index)}onRackRemove_(e){e.isRoot&&He(e.bladeController.view.element)}}const Zn=R("cnt");class Rs{constructor(e,t){var i;this.className_=R((i=t.viewName)!==null&&i!==void 0?i:"fld"),this.element=e.createElement("div"),this.element.classList.add(this.className_(),Zn()),t.viewProps.bindClassModifiers(this.element),this.foldable_=t.foldable,this.foldable_.bindExpandedClass(this.element,this.className_(void 0,"expanded")),W(this.foldable_,"completed",te(this.element,this.className_(void 0,"cpl")));const p=e.createElement("button");p.classList.add(this.className_("b")),W(t.props,"title",B=>{_(B)?this.element.classList.add(this.className_(void 0,"not")):this.element.classList.remove(this.className_(void 0,"not"))}),t.viewProps.bindDisabled(p),this.element.appendChild(p),this.buttonElement=p;const g=e.createElement("div");g.classList.add(this.className_("t")),ie(t.props.value("title"),g),this.buttonElement.appendChild(g),this.titleElement=g;const C=e.createElement("div");C.classList.add(this.className_("m")),this.buttonElement.appendChild(C);const S=t.containerElement;S.classList.add(this.className_("c")),this.element.appendChild(S),this.containerElement=S}}class Pn extends yn{constructor(e,t){var i;const p=Be.create((i=t.expanded)!==null&&i!==void 0?i:!0),g=new Ft(e,{blade:t.blade,root:t.root,viewProps:t.viewProps});super(Object.assign(Object.assign({},t),{rackController:g,view:new Rs(e,{containerElement:g.view.element,foldable:p,props:t.props,viewName:t.root?"rot":void 0,viewProps:t.viewProps})})),this.onTitleClick_=this.onTitleClick_.bind(this),this.props=t.props,this.foldable=p,U(this.foldable,this.view.containerElement),this.rackController.rack.emitter.on("add",()=>{this.foldable.cleanUpTransition()}),this.rackController.rack.emitter.on("remove",()=>{this.foldable.cleanUpTransition()}),this.view.buttonElement.addEventListener("click",this.onTitleClick_)}get document(){return this.view.element.ownerDocument}onTitleClick_(){this.foldable.set("expanded",!this.foldable.get("expanded"))}}const Fs={id:"folder",type:"blade",accept(n){const e=q,t=ae(n,{title:e.required.string,view:e.required.constant("folder"),expanded:e.optional.boolean});return t?{params:t}:null},controller(n){return new Pn(n.document,{blade:n.blade,expanded:n.params.expanded,props:j.fromObject({title:n.params.title}),viewProps:n.viewProps})},api(n){return n.controller instanceof Pn?new xn(n.controller,n.pool):null}};class ft extends Me{constructor(e,t){const i=t.valueController.viewProps;super(Object.assign(Object.assign({},t),{value:t.valueController.value,view:new Ot(e,{props:t.props,viewProps:i}),viewProps:i})),this.props=t.props,this.valueController=t.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class En extends d{}const Qn=R("spr");class Bs{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Qn()),t.viewProps.bindClassModifiers(this.element);const i=e.createElement("hr");i.classList.add(Qn("r")),this.element.appendChild(i)}}class Jn extends Ee{constructor(e,t){super(Object.assign(Object.assign({},t),{view:new Bs(e,{viewProps:t.viewProps})}))}}const es={id:"separator",type:"blade",accept(n){const t=ae(n,{view:q.required.constant("separator")});return t?{params:t}:null},controller(n){return new Jn(n.document,{blade:n.blade,viewProps:n.viewProps})},api(n){return n.controller instanceof Jn?new En(n.controller):null}},js=R("");function Bt(n,e){return te(n,js(void 0,e))}class We extends j{constructor(e){super(e)}static create(e){var t,i;const p=e??{},g={disabled:(t=p.disabled)!==null&&t!==void 0?t:!1,disposed:!1,hidden:(i=p.hidden)!==null&&i!==void 0?i:!1},C=j.createCore(g);return new We(C)}bindClassModifiers(e){W(this,"disabled",Bt(e,"disabled")),W(this,"hidden",Bt(e,"hidden"))}bindDisabled(e){W(this,"disabled",t=>{e.disabled=t})}bindTabIndex(e){W(this,"disabled",t=>{e.tabIndex=t?-1:0})}handleDispose(e){this.value("disposed").emitter.on("change",t=>{t&&e()})}}const ue=R("tbi");class Us{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(ue()),t.viewProps.bindClassModifiers(this.element),W(t.props,"selected",g=>{g?this.element.classList.add(ue(void 0,"sel")):this.element.classList.remove(ue(void 0,"sel"))});const i=e.createElement("button");i.classList.add(ue("b")),t.viewProps.bindDisabled(i),this.element.appendChild(i),this.buttonElement=i;const p=e.createElement("div");p.classList.add(ue("t")),ie(t.props.value("title"),p),this.buttonElement.appendChild(p),this.titleElement=p}}class tn{constructor(e,t){this.emitter=new D,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new Us(e,{props:t.props,viewProps:t.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class ts{constructor(e,t){this.onItemClick_=this.onItemClick_.bind(this),this.ic_=new tn(e,{props:t.itemProps,viewProps:We.create()}),this.ic_.emitter.on("click",this.onItemClick_),this.cc_=new Ft(e,{blade:Fe(),viewProps:We.create()}),this.props=t.props,W(this.props,"selected",i=>{this.itemController.props.set("selected",i),this.contentController.viewProps.set("hidden",!i)})}get itemController(){return this.ic_}get contentController(){return this.cc_}onItemClick_(){this.props.set("selected",!0)}}class kn{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,i){return this.rackApi_.addInput(e,t,i)}addMonitor(e,t,i){return this.rackApi_.addMonitor(e,t,i)}addBlade(e){return this.rackApi_.addBlade(e)}}class ns extends X{constructor(e,t){super(e,new Rt(e.rackController,t)),this.onPageAdd_=this.onPageAdd_.bind(this),this.onPageRemove_=this.onPageRemove_.bind(this),this.onSelect_=this.onSelect_.bind(this),this.emitter_=new D,this.pageApiMap_=new Map,this.rackApi_.on("change",i=>{this.emitter_.emit("change",{event:i})}),this.rackApi_.on("update",i=>{this.emitter_.emit("update",{event:i})}),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(i=>{this.setUpPageApi_(i)})}get pages(){return this.controller_.pageSet.items.map(e=>{const t=this.pageApiMap_.get(e);if(!t)throw T.shouldNeverHappen();return t})}addPage(e){const t=this.controller_.view.element.ownerDocument,i=new ts(t,{itemProps:j.fromObject({selected:!1,title:e.title}),props:j.fromObject({selected:!1})});this.controller_.add(i,e.index);const p=this.pageApiMap_.get(i);if(!p)throw T.shouldNeverHappen();return p}removePage(e){this.controller_.remove(e)}on(e,t){const i=t.bind(this);return this.emitter_.on(e,p=>{i(p.event)}),this}setUpPageApi_(e){const t=this.rackApi_.apiSet_.find(p=>p.controller_===e.contentController);if(!t)throw T.shouldNeverHappen();const i=new kn(e,t);this.pageApiMap_.set(e,i)}onPageAdd_(e){this.setUpPageApi_(e.item)}onPageRemove_(e){if(!this.pageApiMap_.get(e.item))throw T.shouldNeverHappen();this.pageApiMap_.delete(e.item)}onSelect_(e){this.emitter_.emit("select",{event:new w(this,e.rawValue)})}}const ss=-1;class zs{constructor(){this.onItemSelectedChange_=this.onItemSelectedChange_.bind(this),this.empty=Z(!0),this.selectedIndex=Z(ss),this.items_=[]}add(e,t){const i=t??this.items_.length;this.items_.splice(i,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=ss,this.empty.rawValue=!0;return}const e=this.items_.findIndex(t=>t.rawValue);e<0?(this.items_.forEach((t,i)=>{t.rawValue=i===0}),this.selectedIndex.rawValue=0):(this.items_.forEach((t,i)=>{t.rawValue=i===e}),this.selectedIndex.rawValue=e),this.empty.rawValue=!1}onItemSelectedChange_(e){if(e.rawValue){const t=this.items_.findIndex(i=>i===e.sender);this.items_.forEach((i,p)=>{i.rawValue=p===t}),this.selectedIndex.rawValue=t}else this.keepSelection_()}}const jt=R("tab");class bt{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(jt(),Zn()),t.viewProps.bindClassModifiers(this.element),se(t.empty,te(this.element,jt(void 0,"nop")));const i=e.createElement("div");i.classList.add(jt("i")),this.element.appendChild(i),this.itemsElement=i;const p=t.contentsElement;p.classList.add(jt("c")),this.element.appendChild(p),this.contentsElement=p}}class Ut extends yn{constructor(e,t){const i=new Ft(e,{blade:t.blade,viewProps:t.viewProps}),p=new zs;super({blade:t.blade,rackController:i,view:new bt(e,{contentsElement:i.view.element,empty:p.empty,viewProps:t.viewProps})}),this.onPageAdd_=this.onPageAdd_.bind(this),this.onPageRemove_=this.onPageRemove_.bind(this),this.pageSet_=new xe(()=>null),this.pageSet_.emitter.on("add",this.onPageAdd_),this.pageSet_.emitter.on("remove",this.onPageRemove_),this.tab=p}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;nt(this.view.itemsElement,t.itemController.view.element,e.index),this.rackController.rack.add(t.contentController,e.index),this.tab.add(t.props.value("selected"))}onPageRemove_(e){const t=e.item;He(t.itemController.view.element),this.rackController.rack.remove(t.contentController),this.tab.remove(t.props.value("selected"))}}const Mn={id:"tab",type:"blade",accept(n){const e=q,t=ae(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 Ut(n.document,{blade:n.blade,viewProps:n.viewProps});return n.params.pages.forEach(t=>{const i=new ts(n.document,{itemProps:j.fromObject({selected:!1,title:t.title}),props:j.fromObject({selected:!1})});e.add(i)}),e},api(n){return n.controller instanceof Ut?new ns(n.controller,n.pool):null}};function Ks(n,e){const t=n.accept(e.params);if(!t)return null;const i=q.optional.boolean(e.params.disabled).value,p=q.optional.boolean(e.params.hidden).value;return n.controller({blade:Fe(),document:e.document,params:Object.assign(Object.assign({},t.params),{disabled:i,hidden:p}),viewProps:We.create({disabled:i,hidden:p})})}class is{constructor(){this.disabled=!1,this.emitter=new D}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class Ln{constructor(e,t){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=e,this.emitter=new D,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 Ze{constructor(e){this.constraints=e}constrain(e){return this.constraints.reduce((t,i)=>i.constrain(t),e)}}function ee(n,e){if(n instanceof e)return n;if(n instanceof Ze){const t=n.constraints.reduce((i,p)=>i||(p instanceof e?p:null),null);if(t)return t}return null}class gt{constructor(e){this.options=e}constrain(e){const t=this.options;return t.length===0||t.filter(p=>p.value===e).length>0?e:t[0].value}}class Ne{constructor(e){this.maxValue=e.max,this.minValue=e.min}constrain(e){let t=e;return _(this.minValue)||(t=Math.max(t,this.minValue)),_(this.maxValue)||(t=Math.min(t,this.maxValue)),t}}class ve{constructor(e,t=0){this.step=e,this.origin=t}constrain(e){const t=this.origin%this.step,i=Math.round((e-t)/this.step);return t+i*this.step}}const Sn=R("lst");class Gs{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.props_=t.props,this.element=e.createElement("div"),this.element.classList.add(Sn()),t.viewProps.bindClassModifiers(this.element);const i=e.createElement("select");i.classList.add(Sn("s")),W(this.props_,"options",g=>{Zt(i),g.forEach((C,S)=>{const B=e.createElement("option");B.dataset.index=String(S),B.textContent=C.text,B.value=String(C.value),i.appendChild(B)})}),t.viewProps.bindDisabled(i),this.element.appendChild(i),this.selectElement=i;const p=e.createElement("div");p.classList.add(Sn("m")),p.appendChild(qe(e,"dropdown")),this.element.appendChild(p),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 it{constructor(e,t){this.onSelectChange_=this.onSelectChange_.bind(this),this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.view=new Gs(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.view.selectElement.addEventListener("change",this.onSelectChange_)}onSelectChange_(e){const i=e.currentTarget.selectedOptions.item(0);if(!i)return;const p=Number(i.dataset.index);this.value.rawValue=this.props.get("options")[p].value}}const rs=R("pop");class $s{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(rs()),t.viewProps.bindClassModifiers(this.element),se(t.shows,te(this.element,rs(void 0,"v")))}}class Tn{constructor(e,t){this.shows=Z(!1),this.viewProps=t.viewProps,this.view=new $s(e,{shows:this.shows,viewProps:this.viewProps})}}const os=R("txt");class nn{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(os()),t.viewProps.bindClassModifiers(this.element),this.props_=t.props,this.props_.emitter.on("change",this.onChange_);const i=e.createElement("input");i.classList.add(os("i")),i.type="text",t.viewProps.bindDisabled(i),this.element.appendChild(i),this.inputElement=i,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 zt{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 nn(e,{props:t.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(e){const i=e.currentTarget.value,p=this.parser_(i);_(p)||(this.value.rawValue=p),this.view.refresh()}}function qs(n){return String(n)}function as(n){return n==="false"?!1:!!n}function ls(n){return qs(n)}class Hs{constructor(e){this.text=e}evaluate(){return Number(this.text)}toString(){return this.text}}const Ys={"**":(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 Xs{constructor(e,t,i){this.left=t,this.operator=e,this.right=i}evaluate(){const e=Ys[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 Ws={"+":n=>n,"-":n=>-n,"~":n=>~n};class Zs{constructor(e,t){this.operator=e,this.expression=t}evaluate(){const e=Ws[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 An(n){return(e,t)=>{for(let i=0;i<n.length;i++){const p=n[i](e,t);if(p!=="")return p}return""}}function Kt(n,e){var t;const i=n.substr(e).match(/^\s+/);return(t=i&&i[0])!==null&&t!==void 0?t:""}function Qs(n,e){const t=n.substr(e,1);return t.match(/^[1-9]$/)?t:""}function Gt(n,e){var t;const i=n.substr(e).match(/^[0-9]+/);return(t=i&&i[0])!==null&&t!==void 0?t:""}function Js(n,e){const t=Gt(n,e);if(t!=="")return t;const i=n.substr(e,1);if(e+=1,i!=="-"&&i!=="+")return"";const p=Gt(n,e);return p===""?"":i+p}function sn(n,e){const t=n.substr(e,1);if(e+=1,t.toLowerCase()!=="e")return"";const i=Js(n,e);return i===""?"":t+i}function cs(n,e){const t=n.substr(e,1);if(t==="0")return t;const i=Qs(n,e);return e+=i.length,i===""?"":i+Gt(n,e)}function ei(n,e){const t=cs(n,e);if(e+=t.length,t==="")return"";const i=n.substr(e,1);if(e+=i.length,i!==".")return"";const p=Gt(n,e);return e+=p.length,t+i+p+sn(n,e)}function Vn(n,e){const t=n.substr(e,1);if(e+=t.length,t!==".")return"";const i=Gt(n,e);return e+=i.length,i===""?"":t+i+sn(n,e)}function ti(n,e){const t=cs(n,e);return e+=t.length,t===""?"":t+sn(n,e)}const ni=An([ei,Vn,ti]);function si(n,e){var t;const i=n.substr(e).match(/^[01]+/);return(t=i&&i[0])!==null&&t!==void 0?t:""}function Qe(n,e){const t=n.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0b")return"";const i=si(n,e);return i===""?"":t+i}function ii(n,e){var t;const i=n.substr(e).match(/^[0-7]+/);return(t=i&&i[0])!==null&&t!==void 0?t:""}function ri(n,e){const t=n.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0o")return"";const i=ii(n,e);return i===""?"":t+i}function oi(n,e){var t;const i=n.substr(e).match(/^[0-9a-f]+/i);return(t=i&&i[0])!==null&&t!==void 0?t:""}function ai(n,e){const t=n.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0x")return"";const i=oi(n,e);return i===""?"":t+i}const li=An([Qe,ri,ai]),ps=An([li,ni]);function ci(n,e){const t=ps(n,e);return e+=t.length,t===""?null:{evaluable:new Hs(t),cursor:e}}function pi(n,e){const t=n.substr(e,1);if(e+=t.length,t!=="(")return null;const i=je(n,e);if(!i)return null;e=i.cursor,e+=Kt(n,e).length;const p=n.substr(e,1);return e+=p.length,p!==")"?null:{evaluable:i.evaluable,cursor:e}}function Te(n,e){var t;return(t=ci(n,e))!==null&&t!==void 0?t:pi(n,e)}function us(n,e){const t=Te(n,e);if(t)return t;const i=n.substr(e,1);if(e+=i.length,i!=="+"&&i!=="-"&&i!=="~")return null;const p=us(n,e);return p?(e=p.cursor,{cursor:e,evaluable:new Zs(i,p.evaluable)}):null}function ui(n,e,t){t+=Kt(e,t).length;const i=n.filter(p=>e.startsWith(p,t))[0];return i?(t+=i.length,t+=Kt(e,t).length,{cursor:t,operator:i}):null}function Nn(n,e){return(t,i)=>{const p=n(t,i);if(!p)return null;i=p.cursor;let g=p.evaluable;for(;;){const C=ui(e,t,i);if(!C)break;i=C.cursor;const S=n(t,i);if(!S)return null;i=S.cursor,g=new Xs(C.operator,g,S.evaluable)}return g?{cursor:i,evaluable:g}:null}}const di=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((n,e)=>Nn(n,e),us);function je(n,e){return e+=Kt(n,e).length,di(n,e)}function ds(n){const e=je(n,0);return!e||e.cursor+Kt(n,e.cursor).length!==n.length?null:e.evaluable}function Ue(n){var e;const t=ds(n);return(e=t==null?void 0:t.evaluate())!==null&&e!==void 0?e:null}function On(n){if(typeof n=="number")return n;if(typeof n=="string"){const e=Ue(n);if(!_(e))return e}return 0}function hi(n){return String(n)}function re(n){return e=>e.toFixed(Math.max(Math.min(n,20),0))}const mi=re(0);function _t(n){return mi(n)+"%"}function hs(n){return String(n)}function rn(n){return n}function ze(n,e){for(;n.length<e;)n.push(void 0)}function vi(n){const e=[];return ze(e,n),Z(e)}function fi(n){const e=n.indexOf(void 0);return e<0?n:n.slice(0,e)}function ms(n,e){const t=[...fi(n),e];return t.length>n.length?t.splice(0,t.length-n.length):ze(t,n.length),t}function wt({primary:n,secondary:e,forward:t,backward:i}){let p=!1;function g(C){p||(p=!0,C(),p=!1)}n.emitter.on("change",C=>{g(()=>{e.setRawValue(t(n,e),C.options)})}),e.emitter.on("change",C=>{g(()=>{n.setRawValue(i(n,e),C.options)}),g(()=>{e.setRawValue(t(n,e),C.options)})}),g(()=>{e.setRawValue(t(n,e),{forceEmit:!1,last:!0})})}function fe(n,e){const t=n*(e.altKey?.1:1)*(e.shiftKey?10:1);return e.upKey?+t:e.downKey?-t:0}function De(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 In(n){return n==="ArrowUp"||n==="ArrowDown"}function vs(n){return In(n)||n==="ArrowLeft"||n==="ArrowRight"}function Dn(n,e){var t,i;const p=e.ownerDocument.defaultView,g=e.getBoundingClientRect();return{x:n.pageX-(((t=p&&p.scrollX)!==null&&t!==void 0?t:0)+g.left),y:n.pageY-(((i=p&&p.scrollY)!==null&&i!==void 0?i:0)+g.top)}}class rt{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 D,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 i=this.elem_.ownerDocument;i.addEventListener("mousemove",this.onDocumentMouseMove_),i.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(Dn(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onDocumentMouseMove_(e){this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(Dn(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_(Dn(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onTouchStart_(e){e.preventDefault();const t=e.targetTouches.item(0),i=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(t?{x:t.clientX-i.left,y:t.clientY-i.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=t}onTouchMove_(e){const t=e.targetTouches.item(0),i=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(t?{x:t.clientX-i.left,y:t.clientY-i.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=t}onTouchEnd_(e){var t;const i=(t=e.targetTouches.item(0))!==null&&t!==void 0?t:this.lastTouch_,p=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:e.altKey,data:this.computePosition_(i?{x:i.clientX-p.left,y:i.clientY-p.top}:void 0),sender:this,shiftKey:e.shiftKey})}}function ne(n,e,t,i,p){const g=(n-e)/(t-e);return i+g*(p-i)}function fs(n){return String(n.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function ce(n,e,t){return Math.min(Math.max(n,e),t)}function bs(n,e){return(n%e+e)%e}const Ce=R("txt");class bi{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(Ce(),Ce(void 0,"num")),t.arrayPosition&&this.element.classList.add(Ce(void 0,t.arrayPosition)),t.viewProps.bindClassModifiers(this.element);const i=e.createElement("input");i.classList.add(Ce("i")),i.type="text",t.viewProps.bindDisabled(i),this.element.appendChild(i),this.inputElement=i,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=t.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add(Ce()),this.inputElement.classList.add(Ce("i"));const p=e.createElement("div");p.classList.add(Ce("k")),this.element.appendChild(p),this.knobElement=p;const g=e.createElementNS(ke,"svg");g.classList.add(Ce("g")),this.knobElement.appendChild(g);const C=e.createElementNS(ke,"path");C.classList.add(Ce("gb")),g.appendChild(C),this.guideBodyElem_=C;const S=e.createElementNS(ke,"path");S.classList.add(Ce("gh")),g.appendChild(S),this.guideHeadElem_=S;const B=e.createElement("div");B.classList.add(R("tt")()),this.knobElement.appendChild(B),this.tooltipElem_=B,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.refresh()}onDraggingChange_(e){if(e.rawValue===null){this.element.classList.remove(Ce(void 0,"drg"));return}this.element.classList.add(Ce(void 0,"drg"));const t=e.rawValue/this.props_.get("draggingScale"),i=t+(t>0?-1:t<0?1:0),p=ce(-i,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${i+p},0 L${i},4 L${i+p},8`,`M ${t},-1 L${t},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${t},4`);const g=this.props_.get("formatter");this.tooltipElem_.textContent=g(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 Ge{constructor(e,t){var i;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_=(i=t.sliderProps)!==null&&i!==void 0?i:null,this.value=t.value,this.viewProps=t.viewProps,this.dragging_=Z(null),this.view=new bi(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 p=new rt(this.view.knobElement);p.emitter.on("down",this.onPointerDown_),p.emitter.on("move",this.onPointerMove_),p.emitter.on("up",this.onPointerUp_)}constrainValue_(e){var t,i;const p=(t=this.sliderProps_)===null||t===void 0?void 0:t.get("minValue"),g=(i=this.sliderProps_)===null||i===void 0?void 0:i.get("maxValue");let C=e;return p!==void 0&&(C=Math.max(C,p)),g!==void 0&&(C=Math.min(C,g)),C}onInputChange_(e){const i=e.currentTarget.value,p=this.parser_(i);_(p)||(this.value.rawValue=this.constrainValue_(p)),this.view.refresh()}onInputKeyDown_(e){const t=fe(this.baseStep_,De(e));t!==0&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+t),{forceEmit:!1,last:!1})}onInputKeyUp_(e){fe(this.baseStep_,De(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 Rn=R("sld");class gs{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.props_=t.props,this.props_.emitter.on("change",this.onChange_),this.element=e.createElement("div"),this.element.classList.add(Rn()),t.viewProps.bindClassModifiers(this.element);const i=e.createElement("div");i.classList.add(Rn("t")),t.viewProps.bindTabIndex(i),this.element.appendChild(i),this.trackElement=i;const p=e.createElement("div");p.classList.add(Rn("k")),this.trackElement.appendChild(p),this.knobElement=p,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.update_()}update_(){const e=ce(ne(this.value.rawValue,this.props_.get("minValue"),this.props_.get("maxValue"),0,100),0,100);this.knobElement.style.width=`${e}%`}onChange_(){this.update_()}}class gi{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDownOrMove_=this.onPointerDownOrMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=t.baseStep,this.value=t.value,this.viewProps=t.viewProps,this.props=t.props,this.view=new gs(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new rt(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(ne(ce(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=fe(this.baseStep_,Ke(e));t!==0&&this.value.setRawValue(this.value.rawValue+t,{forceEmit:!1,last:!1})}onKeyUp_(e){fe(this.baseStep_,Ke(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const Fn=R("sldtxt");class Ae{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Fn());const i=e.createElement("div");i.classList.add(Fn("s")),this.sliderView_=t.sliderView,i.appendChild(this.sliderView_.element),this.element.appendChild(i);const p=e.createElement("div");p.classList.add(Fn("t")),this.textView_=t.textView,p.appendChild(this.textView_.element),this.element.appendChild(p)}}class on{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.sliderC_=new gi(e,{baseStep:t.baseStep,props:t.sliderProps,value:t.value,viewProps:this.viewProps}),this.textC_=new Ge(e,{baseStep:t.baseStep,parser:t.parser,props:t.textProps,sliderProps:t.sliderProps,value:t.value,viewProps:t.viewProps}),this.view=new Ae(e,{sliderView:this.sliderC_.view,textView:this.textC_.view})}get sliderController(){return this.sliderC_}get textController(){return this.textC_}}function xt(n,e){n.write(e)}function yt(n){const e=q;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 _s(n){if(n==="inline"||n==="popup")return n}function ge(n){const e=q;return e.required.object({max:e.optional.number,min:e.optional.number,step:e.optional.number})(n).value}function ws(n){if(Array.isArray(n))return n;const e=[];return Object.keys(n).forEach(t=>{e.push({text:t,value:n[t]})}),e}function Bn(n){return _(n)?null:new gt(ws(n))}function jn(n){const e=n?ee(n,gt):null;return e?e.options:null}function _i(n){const e=n?ee(n,ve):null;return e?e.step:null}function an(n,e){const t=n&&ee(n,ve);return t?fs(t.step):Math.max(fs(e),2)}function Ct(n){const e=_i(n);return e??1}function Pt(n,e){var t;const i=n&&ee(n,ve),p=Math.abs((t=i==null?void 0:i.step)!==null&&t!==void 0?t:e);return p===0?.1:Math.pow(10,Math.floor(Math.log10(p))-1)}const ln=R("ckb");class wi{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(ln()),t.viewProps.bindClassModifiers(this.element);const i=e.createElement("label");i.classList.add(ln("l")),this.element.appendChild(i);const p=e.createElement("input");p.classList.add(ln("i")),p.type="checkbox",i.appendChild(p),this.inputElement=p,t.viewProps.bindDisabled(this.inputElement);const g=e.createElement("div");g.classList.add(ln("w")),i.appendChild(g);const C=qe(e,"check");g.appendChild(C),t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.update_()}update_(){this.inputElement.checked=this.value.rawValue}onValueChange_(){this.update_()}}class xi{constructor(e,t){this.onInputChange_=this.onInputChange_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new wi(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 $t(n){const e=[],t=Bn(n.options);return t&&e.push(t),new Ze(e)}const yi={id:"input-bool",type:"input",accept:(n,e)=>{if(typeof n!="boolean")return null;const i=ae(e,{options:q.optional.custom(yt)});return i?{initialValue:n,params:i}:null},binding:{reader:n=>as,constraint:n=>$t(n.params),writer:n=>xt},controller:n=>{var e;const t=n.document,i=n.value,p=n.constraint;return p&&ee(p,gt)?new it(t,{props:j.fromObject({options:(e=jn(p))!==null&&e!==void 0?e:[]}),value:i,viewProps:n.viewProps}):new xi(t,{value:i,viewProps:n.viewProps})}},ot=R("col");class Un{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(ot()),t.foldable.bindExpandedClass(this.element,ot(void 0,"expanded")),W(t.foldable,"completed",te(this.element,ot(void 0,"cpl")));const i=e.createElement("div");i.classList.add(ot("h")),this.element.appendChild(i);const p=e.createElement("div");p.classList.add(ot("s")),i.appendChild(p),this.swatchElement=p;const g=e.createElement("div");if(g.classList.add(ot("t")),i.appendChild(g),this.textElement=g,t.pickerLayout==="inline"){const C=e.createElement("div");C.classList.add(ot("p")),this.element.appendChild(C),this.pickerElement=C}else this.pickerElement=null}}function Ci(n,e,t){const i=ce(n/255,0,1),p=ce(e/255,0,1),g=ce(t/255,0,1),C=Math.max(i,p,g),S=Math.min(i,p,g),B=C-S;let K=0,Q=0;const J=(S+C)/2;return B!==0&&(Q=B/(1-Math.abs(C+S-1)),i===C?K=(p-g)/B:p===C?K=2+(g-i)/B:K=4+(i-p)/B,K=K/6+(K<0?1:0)),[K*360,Q*100,J*100]}function zn(n,e,t){const i=(n%360+360)%360,p=ce(e/100,0,1),g=ce(t/100,0,1),C=(1-Math.abs(2*g-1))*p,S=C*(1-Math.abs(i/60%2-1)),B=g-C/2;let K,Q,J;return i>=0&&i<60?[K,Q,J]=[C,S,0]:i>=60&&i<120?[K,Q,J]=[S,C,0]:i>=120&&i<180?[K,Q,J]=[0,C,S]:i>=180&&i<240?[K,Q,J]=[0,S,C]:i>=240&&i<300?[K,Q,J]=[S,0,C]:[K,Q,J]=[C,0,S],[(K+B)*255,(Q+B)*255,(J+B)*255]}function Pi(n,e,t){const i=ce(n/255,0,1),p=ce(e/255,0,1),g=ce(t/255,0,1),C=Math.max(i,p,g),S=Math.min(i,p,g),B=C-S;let K;B===0?K=0:C===i?K=60*(((p-g)/B%6+6)%6):C===p?K=60*((g-i)/B+2):K=60*((i-p)/B+4);const Q=C===0?0:B/C,J=C;return[K,Q*100,J*100]}function xs(n,e,t){const i=bs(n,360),p=ce(e/100,0,1),g=ce(t/100,0,1),C=g*p,S=C*(1-Math.abs(i/60%2-1)),B=g-C;let K,Q,J;return i>=0&&i<60?[K,Q,J]=[C,S,0]:i>=60&&i<120?[K,Q,J]=[S,C,0]:i>=120&&i<180?[K,Q,J]=[0,C,S]:i>=180&&i<240?[K,Q,J]=[0,S,C]:i>=240&&i<300?[K,Q,J]=[S,0,C]:[K,Q,J]=[C,0,S],[(K+B)*255,(Q+B)*255,(J+B)*255]}function Ei(n,e,t){const i=t+e*(100-Math.abs(2*t-100))/200;return[n,i!==0?e*(100-Math.abs(2*t-100))/i:0,t+e*(100-Math.abs(2*t-100))/(2*100)]}function ki(n,e,t){const i=100-Math.abs(t*(200-e)/100-100);return[n,i!==0?e*t/i:0,t*(200-e)/(2*100)]}function o(n){return[n[0],n[1],n[2]]}function s(n,e){return[n[0],n[1],n[2],e]}const r={hsl:{hsl:(n,e,t)=>[n,e,t],hsv:Ei,rgb:zn},hsv:{hsl:ki,hsv:(n,e,t)=>[n,e,t],rgb:xs},rgb:{hsl:Ci,hsv:Pi,rgb:(n,e,t)=>[n,e,t]}};function c(n,e){return[e==="float"?1:n==="rgb"?255:360,e==="float"?1:n==="rgb"?255:100,e==="float"?1:n==="rgb"?255:100]}function b(n,e,t){var i;const p=c(e,t);return[e==="rgb"?ce(n[0],0,p[0]):bs(n[0],p[0]),ce(n[1],0,p[1]),ce(n[2],0,p[2]),ce((i=n[3])!==null&&i!==void 0?i:1,0,1)]}function x(n,e,t,i){const p=c(e,t),g=c(e,i);return n.map((C,S)=>C/p[S]*g[S])}function L(n,e,t){const i=x(n,e.mode,e.type,"int"),p=r[e.mode][t.mode](...i);return x(p,t.mode,"int",t.type)}function O(n,e){return typeof n!="object"||_(n)?!1:e in n&&typeof n[e]=="number"}class F{constructor(e,t,i="int"){this.mode=t,this.type=i,this.comps_=b(e,t,i)}static black(e="int"){return new F([0,0,0],"rgb",e)}static fromObject(e,t="int"){const i="a"in e?[e.r,e.g,e.b,e.a]:[e.r,e.g,e.b];return new F(i,"rgb",t)}static toRgbaObject(e,t="int"){return e.toRgbaObject(t)}static isRgbColorObject(e){return O(e,"r")&&O(e,"g")&&O(e,"b")}static isRgbaColorObject(e){return this.isRgbColorObject(e)&&O(e,"a")}static isColorObject(e){return this.isRgbColorObject(e)}static equals(e,t){if(e.mode!==t.mode)return!1;const i=e.comps_,p=t.comps_;for(let g=0;g<i.length;g++)if(i[g]!==p[g])return!1;return!0}getComponents(e,t="int"){return s(L(o(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 pe=R("colp");class $e{constructor(e,t){this.alphaViews_=null,this.element=e.createElement("div"),this.element.classList.add(pe());const i=e.createElement("div");i.classList.add(pe("hsv"));const p=e.createElement("div");p.classList.add(pe("sv")),this.svPaletteView_=t.svPaletteView,p.appendChild(this.svPaletteView_.element),i.appendChild(p);const g=e.createElement("div");g.classList.add(pe("h")),this.hPaletteView_=t.hPaletteView,g.appendChild(this.hPaletteView_.element),i.appendChild(g),this.element.appendChild(i);const C=e.createElement("div");if(C.classList.add(pe("rgb")),this.textView_=t.textView,C.appendChild(this.textView_.element),this.element.appendChild(C),t.alphaViews){this.alphaViews_={palette:t.alphaViews.palette,text:t.alphaViews.text};const S=e.createElement("div");S.classList.add(pe("a"));const B=e.createElement("div");B.classList.add(pe("ap")),B.appendChild(this.alphaViews_.palette.element),S.appendChild(B);const K=e.createElement("div");K.classList.add(pe("at")),K.appendChild(this.alphaViews_.text.element),S.appendChild(K),this.element.appendChild(S)}}get allFocusableElements(){const e=[this.svPaletteView_.element,this.hPaletteView_.element,this.textView_.modeSelectElement,...this.textView_.textViews.map(t=>t.inputElement)];return this.alphaViews_&&e.push(this.alphaViews_.palette.element,this.alphaViews_.text.inputElement),e}}function Kn(n){return n==="int"?"int":n==="float"?"float":void 0}function Gn(n){const e=q;return ae(n,{alpha:e.optional.boolean,color:e.optional.object({alpha:e.optional.boolean,type:e.optional.custom(Kn)}),expanded:e.optional.boolean,picker:e.optional.custom(_s)})}function at(n){return n?.1:1}function qt(n){var e;return(e=n.color)===null||e===void 0?void 0:e.type}function Oo(n,e){return n.alpha===e.alpha&&n.mode===e.mode&&n.notation===e.notation&&n.type===e.type}function Re(n,e){const t=n.match(/^(.+)%$/);return Math.min(t?parseFloat(t[1])*.01*e:parseFloat(n),e)}const Io={deg:n=>n,grad:n=>n*360/400,rad:n=>n*360/(2*Math.PI),turn:n=>n*360};function sr(n){const e=n.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);if(!e)return parseFloat(n);const t=parseFloat(e[1]),i=e[2];return Io[i](t)}function ir(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=[Re(e[1],255),Re(e[2],255),Re(e[3],255)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function rr(n){return e=>{const t=ir(e);return t?new F(t,"rgb",n):null}}function or(n){const e=n.match(/^rgba\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const t=[Re(e[1],255),Re(e[2],255),Re(e[3],255),Re(e[4],1)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function ar(n){return e=>{const t=or(e);return t?new F(t,"rgb",n):null}}function lr(n){const e=n.match(/^hsl\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const t=[sr(e[1]),Re(e[2],100),Re(e[3],100)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function cr(n){return e=>{const t=lr(e);return t?new F(t,"hsl",n):null}}function pr(n){const e=n.match(/^hsla\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const t=[sr(e[1]),Re(e[2],100),Re(e[3],100),Re(e[4],1)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function ur(n){return e=>{const t=pr(e);return t?new F(t,"hsl",n):null}}function dr(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 Do(n){const e=dr(n);return e?new F(e,"rgb","int"):null}function hr(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),ne(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),ne(parseInt(t[4],16),0,255,0,1)]:null}function Ro(n){const e=hr(n);return e?new F(e,"rgb","int"):null}function mr(n){const e=n.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!e)return null;const t=[parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3])];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function vr(n){return e=>{const t=mr(e);return t?new F(t,"rgb",n):null}}function fr(n){const e=n.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*a\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!e)return null;const t=[parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3]),parseFloat(e[4])];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function br(n){return e=>{const t=fr(e);return t?new F(t,"rgb",n):null}}const Fo=[{parser:dr,result:{alpha:!1,mode:"rgb",notation:"hex"}},{parser:hr,result:{alpha:!0,mode:"rgb",notation:"hex"}},{parser:ir,result:{alpha:!1,mode:"rgb",notation:"func"}},{parser:or,result:{alpha:!0,mode:"rgb",notation:"func"}},{parser:lr,result:{alpha:!1,mode:"hsl",notation:"func"}},{parser:pr,result:{alpha:!0,mode:"hsl",notation:"func"}},{parser:mr,result:{alpha:!1,mode:"rgb",notation:"object"}},{parser:fr,result:{alpha:!0,mode:"rgb",notation:"object"}}];function Bo(n){return Fo.reduce((e,{parser:t,result:i})=>e||(t(n)?i:null),null)}function Mi(n,e="int"){const t=Bo(n);return t?t.notation==="hex"&&e!=="float"?Object.assign(Object.assign({},t),{type:"int"}):t.notation==="func"?Object.assign(Object.assign({},t),{type:e}):null:null}const gr={int:[Do,Ro,rr("int"),ar("int"),cr("int"),ur("int"),vr("int"),br("int")],float:[rr("float"),ar("float"),cr("float"),ur("float"),vr("float"),br("float")]};function jo(n){const e=gr[n];return t=>{if(typeof t!="string")return F.black(n);const i=e.reduce((p,g)=>p||g(t),null);return i??F.black(n)}}function Li(n){const e=gr[n];return t=>e.reduce((i,p)=>i||p(t),null)}function _r(n){const e=ce(Math.floor(n),0,255).toString(16);return e.length===1?`0${e}`:e}function wr(n,e="#"){const t=o(n.getComponents("rgb")).map(_r).join("");return`${e}${t}`}function Si(n,e="#"){const t=n.getComponents("rgb"),i=[t[0],t[1],t[2],t[3]*255].map(_r).join("");return`${e}${i}`}function xr(n,e){const t=re(e==="float"?2:0);return`rgb(${o(n.getComponents("rgb",e)).map(p=>t(p)).join(", ")})`}function Uo(n){return e=>xr(e,n)}function ys(n,e){const t=re(2),i=re(e==="float"?2:0);return`rgba(${n.getComponents("rgb",e).map((g,C)=>(C===3?t:i)(g)).join(", ")})`}function zo(n){return e=>ys(e,n)}function Ko(n){const e=[re(0),_t,_t];return`hsl(${o(n.getComponents("hsl")).map((i,p)=>e[p](i)).join(", ")})`}function Go(n){const e=[re(0),_t,_t,re(2)];return`hsla(${n.getComponents("hsl").map((i,p)=>e[p](i)).join(", ")})`}function yr(n,e){const t=re(e==="float"?2:0),i=["r","g","b"];return`{${o(n.getComponents("rgb",e)).map((g,C)=>`${i[C]}: ${t(g)}`).join(", ")}}`}function $o(n){return e=>yr(e,n)}function Cr(n,e){const t=re(2),i=re(e==="float"?2:0),p=["r","g","b","a"];return`{${n.getComponents("rgb",e).map((C,S)=>{const B=S===3?t:i;return`${p[S]}: ${B(C)}`}).join(", ")}}`}function qo(n){return e=>Cr(e,n)}const Ho=[{format:{alpha:!1,mode:"rgb",notation:"hex",type:"int"},stringifier:wr},{format:{alpha:!0,mode:"rgb",notation:"hex",type:"int"},stringifier:Si},{format:{alpha:!1,mode:"hsl",notation:"func",type:"int"},stringifier:Ko},{format:{alpha:!0,mode:"hsl",notation:"func",type:"int"},stringifier:Go},...["int","float"].reduce((n,e)=>[...n,{format:{alpha:!1,mode:"rgb",notation:"func",type:e},stringifier:Uo(e)},{format:{alpha:!0,mode:"rgb",notation:"func",type:e},stringifier:zo(e)},{format:{alpha:!1,mode:"rgb",notation:"object",type:e},stringifier:$o(e)},{format:{alpha:!0,mode:"rgb",notation:"object",type:e},stringifier:qo(e)}],[])];function Ti(n){return Ho.reduce((e,t)=>e||(Oo(t.format,n)?t.stringifier:null),null)}const $n=R("apl");class Yo{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($n()),t.viewProps.bindTabIndex(this.element);const i=e.createElement("div");i.classList.add($n("b")),this.element.appendChild(i);const p=e.createElement("div");p.classList.add($n("c")),i.appendChild(p),this.colorElem_=p;const g=e.createElement("div");g.classList.add($n("m")),this.element.appendChild(g),this.markerElem_=g;const C=e.createElement("div");C.classList.add($n("p")),this.markerElem_.appendChild(C),this.previewElem_=C,this.update_()}update_(){const e=this.value.rawValue,t=e.getComponents("rgb"),i=new F([t[0],t[1],t[2],0],"rgb"),p=new F([t[0],t[1],t[2],255],"rgb"),g=["to right",ys(i),ys(p)];this.colorElem_.style.background=`linear-gradient(${g.join(",")})`,this.previewElem_.style.backgroundColor=ys(e);const C=ne(t[3],0,1,0,100);this.markerElem_.style.left=`${C}%`}onValueChange_(){this.update_()}}class Xo{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 Yo(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new rt(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 i=e.point.x/e.bounds.width,p=this.value.rawValue,[g,C,S]=p.getComponents("hsv");this.value.setRawValue(new F([g,C,S,i],"hsv"),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){const t=fe(at(!0),Ke(e));if(t===0)return;const i=this.value.rawValue,[p,g,C,S]=i.getComponents("hsv");this.value.setRawValue(new F([p,g,C,S+t],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){fe(at(!0),Ke(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const cn=R("coltxt");function Wo(n){const e=n.createElement("select"),t=[{text:"RGB",value:"rgb"},{text:"HSL",value:"hsl"},{text:"HSV",value:"hsv"}];return e.appendChild(t.reduce((i,p)=>{const g=n.createElement("option");return g.textContent=p.text,g.value=p.value,i.appendChild(g),i},n.createDocumentFragment())),e}class Zo{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(cn());const i=e.createElement("div");i.classList.add(cn("m")),this.modeElem_=Wo(e),this.modeElem_.classList.add(cn("ms")),i.appendChild(this.modeSelectElement);const p=e.createElement("div");p.classList.add(cn("mm")),p.appendChild(qe(e,"dropdown")),i.appendChild(p),this.element.appendChild(i);const g=e.createElement("div");g.classList.add(cn("w")),this.element.appendChild(g),this.textsElem_=g,this.textViews_=t.textViews,this.applyTextViews_(),se(t.colorMode,C=>{this.modeElem_.value=C})}get modeSelectElement(){return this.modeElem_}get textViews(){return this.textViews_}set textViews(e){this.textViews_=e,this.applyTextViews_()}applyTextViews_(){Zt(this.textsElem_);const e=this.element.ownerDocument;this.textViews_.forEach(t=>{const i=e.createElement("div");i.classList.add(cn("c")),i.appendChild(t.element),this.textsElem_.appendChild(i)})}}function Qo(n){return re(n==="float"?2:0)}function Jo(n,e,t){const i=c(n,e)[t];return new Ne({min:0,max:i})}function Ai(n,e,t){return new Ge(n,{arrayPosition:t===0?"fst":t===3-1?"lst":"mid",baseStep:at(!1),parser:e.parser,props:j.fromObject({draggingScale:e.colorType==="float"?.01:1,formatter:Qo(e.colorType)}),value:Z(0,{constraint:Jo(e.colorMode,e.colorType,t)}),viewProps:e.viewProps})}class ea{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=Z(this.value.rawValue.mode),this.ccs_=this.createComponentControllers_(e),this.view=new Zo(e,{colorMode:this.colorMode,textViews:[this.ccs_[0].view,this.ccs_[1].view,this.ccs_[2].view]}),this.view.modeSelectElement.addEventListener("change",this.onModeSelectChange_)}createComponentControllers_(e){const t={colorMode:this.colorMode.rawValue,colorType:this.colorType_,parser:this.parser_,viewProps:this.viewProps},i=[Ai(e,t,0),Ai(e,t,1),Ai(e,t,2)];return i.forEach((p,g)=>{wt({primary:this.value,secondary:p.value,forward:C=>C.rawValue.getComponents(this.colorMode.rawValue,this.colorType_)[g],backward:(C,S)=>{const B=this.colorMode.rawValue,K=C.rawValue.getComponents(B,this.colorType_);return K[g]=S.rawValue,new F(s(o(K),K[3]),B,this.colorType_)}})}),i}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 Vi=R("hpl");class ta{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(Vi()),t.viewProps.bindTabIndex(this.element);const i=e.createElement("div");i.classList.add(Vi("c")),this.element.appendChild(i);const p=e.createElement("div");p.classList.add(Vi("m")),this.element.appendChild(p),this.markerElem_=p,this.update_()}update_(){const e=this.value.rawValue,[t]=e.getComponents("hsv");this.markerElem_.style.backgroundColor=xr(new F([t,100,100],"hsv"));const i=ne(t,0,360,0,100);this.markerElem_.style.left=`${i}%`}onValueChange_(){this.update_()}}class na{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 ta(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new rt(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 i=ne(ce(e.point.x,0,e.bounds.width),0,e.bounds.width,0,359),p=this.value.rawValue,[,g,C,S]=p.getComponents("hsv");this.value.setRawValue(new F([i,g,C,S],"hsv"),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){const t=fe(at(!1),Ke(e));if(t===0)return;const i=this.value.rawValue,[p,g,C,S]=i.getComponents("hsv");this.value.setRawValue(new F([p+t,g,C,S],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){fe(at(!1),Ke(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const Ni=R("svp"),Pr=64;class sa{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(Ni()),t.viewProps.bindTabIndex(this.element);const i=e.createElement("canvas");i.height=Pr,i.width=Pr,i.classList.add(Ni("c")),this.element.appendChild(i),this.canvasElement=i;const p=e.createElement("div");p.classList.add(Ni("m")),this.element.appendChild(p),this.markerElem_=p,this.update_()}update_(){const e=_n(this.canvasElement);if(!e)return;const i=this.value.rawValue.getComponents("hsv"),p=this.canvasElement.width,g=this.canvasElement.height,C=e.getImageData(0,0,p,g),S=C.data;for(let Q=0;Q<g;Q++)for(let J=0;J<p;J++){const ct=ne(J,0,p,0,100),Hn=ne(Q,0,g,100,0),Yn=xs(i[0],ct,Hn),hn=(Q*p+J)*4;S[hn]=Yn[0],S[hn+1]=Yn[1],S[hn+2]=Yn[2],S[hn+3]=255}e.putImageData(C,0,0);const B=ne(i[1],0,100,0,100);this.markerElem_.style.left=`${B}%`;const K=ne(i[2],0,100,100,0);this.markerElem_.style.top=`${K}%`}onValueChange_(){this.update_()}}class ia{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 sa(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new rt(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 i=ne(e.point.x,0,e.bounds.width,0,100),p=ne(e.point.y,0,e.bounds.height,100,0),[g,,,C]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new F([g,i,p,C],"hsv"),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){vs(e.key)&&e.preventDefault();const[t,i,p,g]=this.value.rawValue.getComponents("hsv"),C=at(!1),S=fe(C,Ke(e)),B=fe(C,De(e));S===0&&B===0||this.value.setRawValue(new F([t,i+S,p+B,g],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){const t=at(!1),i=fe(t,Ke(e)),p=fe(t,De(e));i===0&&p===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class ra{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.hPaletteC_=new na(e,{value:this.value,viewProps:this.viewProps}),this.svPaletteC_=new ia(e,{value:this.value,viewProps:this.viewProps}),this.alphaIcs_=t.supportsAlpha?{palette:new Xo(e,{value:this.value,viewProps:this.viewProps}),text:new Ge(e,{parser:Ue,baseStep:.1,props:j.fromObject({draggingScale:.01,formatter:re(2)}),value:Z(0,{constraint:new Ne({min:0,max:1})}),viewProps:this.viewProps})}:null,this.alphaIcs_&&wt({primary:this.value,secondary:this.alphaIcs_.text.value,forward:i=>i.rawValue.getComponents()[3],backward:(i,p)=>{const g=i.rawValue.getComponents();return g[3]=p.rawValue,new F(g,i.rawValue.mode)}}),this.textC_=new ea(e,{colorType:t.colorType,parser:Ue,value:this.value,viewProps:this.viewProps}),this.view=new $e(e,{alphaViews:this.alphaIcs_?{palette:this.alphaIcs_.palette.view,text:this.alphaIcs_.text.view}:null,hPaletteView:this.hPaletteC_.view,supportsAlpha:t.supportsAlpha,svPaletteView:this.svPaletteC_.view,textView:this.textC_.view})}get textController(){return this.textC_}}const Oi=R("colsw");class oa{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(Oi()),t.viewProps.bindClassModifiers(this.element);const i=e.createElement("div");i.classList.add(Oi("sw")),this.element.appendChild(i),this.swatchElem_=i;const p=e.createElement("button");p.classList.add(Oi("b")),t.viewProps.bindDisabled(p),this.element.appendChild(p),this.buttonElement=p,this.update_()}update_(){const e=this.value.rawValue;this.swatchElem_.style.backgroundColor=Si(e)}onValueChange_(){this.update_()}}class aa{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new oa(e,{value:this.value,viewProps:this.viewProps})}}class Ii{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_=Be.create(t.expanded),this.swatchC_=new aa(e,{value:this.value,viewProps:this.viewProps});const i=this.swatchC_.view.buttonElement;i.addEventListener("blur",this.onButtonBlur_),i.addEventListener("click",this.onButtonClick_),this.textC_=new zt(e,{parser:t.parser,props:j.fromObject({formatter:t.formatter}),value:this.value,viewProps:this.viewProps}),this.view=new Un(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 Tn(e,{viewProps:this.viewProps}):null;const p=new ra(e,{colorType:t.colorType,supportsAlpha:t.supportsAlpha,value:this.value,viewProps:this.viewProps});p.view.allFocusableElements.forEach(g=>{g.addEventListener("blur",this.onPopupChildBlur_),g.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=p,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(p.view.element),wt({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:g=>g.rawValue,backward:(g,C)=>C.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),U(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onButtonBlur_(e){if(!this.popC_)return;const t=this.view.element,i=e.relatedTarget;(!i||!t.contains(i))&&(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,i=Oe(e);i&&t.contains(i)||i&&i===this.swatchC_.view.buttonElement&&!dt(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 la(n,e){return F.isColorObject(n)?F.fromObject(n,e):F.black(e)}function ca(n){return o(n.getComponents("rgb")).reduce((e,t)=>e<<8|Math.floor(t)&255,0)}function pa(n){return n.getComponents("rgb").reduce((e,t,i)=>{const p=Math.floor(i===3?t*255:t)&255;return e<<8|p},0)>>>0}function ua(n){return new F([n>>16&255,n>>8&255,n&255],"rgb")}function da(n){return new F([n>>24&255,n>>16&255,n>>8&255,ne(n&255,0,255,0,1)],"rgb")}function ha(n){return typeof n!="number"?F.black():ua(n)}function ma(n){return typeof n!="number"?F.black():da(n)}function va(n){const e=Ti(n);return e?(t,i)=>{xt(t,e(i))}:null}function fa(n){const e=n?pa:ca;return(t,i)=>{xt(t,e(i))}}function ba(n,e,t){const i=e.toRgbaObject(t);n.writeProperty("r",i.r),n.writeProperty("g",i.g),n.writeProperty("b",i.b),n.writeProperty("a",i.a)}function ga(n,e,t){const i=e.toRgbaObject(t);n.writeProperty("r",i.r),n.writeProperty("g",i.g),n.writeProperty("b",i.b)}function _a(n,e){return(t,i)=>{n?ba(t,i,e):ga(t,i,e)}}function Di(n){var e;return!!(n!=null&&n.alpha||!((e=n==null?void 0:n.color)===null||e===void 0)&&e.alpha)}function wa(n){return n?e=>Si(e,"0x"):e=>wr(e,"0x")}function xa(n){return"color"in n||"view"in n&&n.view==="color"}const ya={id:"input-color-number",type:"input",accept:(n,e)=>{if(typeof n!="number"||!xa(e))return null;const t=Gn(e);return t?{initialValue:n,params:t}:null},binding:{reader:n=>Di(n.params)?ma:ha,equals:F.equals,writer:n=>fa(Di(n.params))},controller:n=>{const e=Di(n.params),t="expanded"in n.params?n.params.expanded:void 0,i="picker"in n.params?n.params.picker:void 0;return new Ii(n.document,{colorType:"int",expanded:t??!1,formatter:wa(e),parser:Li("int"),pickerLayout:i??"popup",supportsAlpha:e,value:n.value,viewProps:n.viewProps})}};function Ca(n){return F.isRgbaColorObject(n)}function Pa(n){return e=>la(e,n)}function Ea(n,e){return t=>n?Cr(t,e):yr(t,e)}const ka={id:"input-color-object",type:"input",accept:(n,e)=>{if(!F.isColorObject(n))return null;const t=Gn(e);return t?{initialValue:n,params:t}:null},binding:{reader:n=>Pa(qt(n.params)),equals:F.equals,writer:n=>_a(Ca(n.initialValue),qt(n.params))},controller:n=>{var e;const t=F.isRgbaColorObject(n.initialValue),i="expanded"in n.params?n.params.expanded:void 0,p="picker"in n.params?n.params.picker:void 0,g=(e=qt(n.params))!==null&&e!==void 0?e:"int";return new Ii(n.document,{colorType:g,expanded:i??!1,formatter:Ea(t,g),parser:Li(g),pickerLayout:p??"popup",supportsAlpha:t,value:n.value,viewProps:n.viewProps})}},Ma={id:"input-color-string",type:"input",accept:(n,e)=>{if(typeof n!="string"||"view"in e&&e.view==="text")return null;const t=Mi(n,qt(e));if(!t||!Ti(t))return null;const p=Gn(e);return p?{initialValue:n,params:p}:null},binding:{reader:n=>{var e;return jo((e=qt(n.params))!==null&&e!==void 0?e:"int")},equals:F.equals,writer:n=>{const e=Mi(n.initialValue,qt(n.params));if(!e)throw T.shouldNeverHappen();const t=va(e);if(!t)throw T.notBindable();return t}},controller:n=>{const e=Mi(n.initialValue,qt(n.params));if(!e)throw T.shouldNeverHappen();const t=Ti(e);if(!t)throw T.shouldNeverHappen();const i="expanded"in n.params?n.params.expanded:void 0,p="picker"in n.params?n.params.picker:void 0;return new Ii(n.document,{colorType:e.type,expanded:i??!1,formatter:t,parser:Li(e.type),pickerLayout:p??"popup",supportsAlpha:e.alpha,value:n.value,viewProps:n.viewProps})}};class Et{constructor(e){this.components=e.components,this.asm_=e.assembly}constrain(e){const t=this.asm_.toComponents(e).map((i,p)=>{var g,C;return(C=(g=this.components[p])===null||g===void 0?void 0:g.constrain(i))!==null&&C!==void 0?C:i});return this.asm_.fromComponents(t)}}const Er=R("pndtxt");class La{constructor(e,t){this.textViews=t.textViews,this.element=e.createElement("div"),this.element.classList.add(Er()),this.textViews.forEach(i=>{const p=e.createElement("div");p.classList.add(Er("a")),p.appendChild(i.element),this.element.appendChild(p)})}}function Sa(n,e,t){return new Ge(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:Z(0,{constraint:e.axes[t].constraint}),viewProps:e.viewProps})}class Ri{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.acs_=t.axes.map((i,p)=>Sa(e,t,p)),this.acs_.forEach((i,p)=>{wt({primary:this.value,secondary:i.value,forward:g=>t.assembly.toComponents(g.rawValue)[p],backward:(g,C)=>{const S=t.assembly.toComponents(g.rawValue);return S[p]=C.rawValue,t.assembly.fromComponents(S)}})}),this.view=new La(e,{textViews:this.acs_.map(i=>i.view)})}}function kr(n,e){return"step"in n&&!_(n.step)?new ve(n.step,e):null}function Mr(n){return"max"in n&&!_(n.max)||"min"in n&&!_(n.min)?new Ne({max:n.max,min:n.min}):null}function Ta(n,e){const t=[],i=kr(n,e);i&&t.push(i);const p=Mr(n);p&&t.push(p);const g=Bn(n.options);return g&&t.push(g),new Ze(t)}function Aa(n){const e=n?ee(n,Ne):null;return e?[e.minValue,e.maxValue]:[void 0,void 0]}function Va(n){const[e,t]=Aa(n);return[e??0,t??100]}const Na={id:"input-number",type:"input",accept:(n,e)=>{if(typeof n!="number")return null;const t=q,i=ae(e,{format:t.optional.function,max:t.optional.number,min:t.optional.number,options:t.optional.custom(yt),step:t.optional.number});return i?{initialValue:n,params:i}:null},binding:{reader:n=>On,constraint:n=>Ta(n.params,n.initialValue),writer:n=>xt},controller:n=>{var e,t;const i=n.value,p=n.constraint;if(p&&ee(p,gt))return new it(n.document,{props:j.fromObject({options:(e=jn(p))!==null&&e!==void 0?e:[]}),value:i,viewProps:n.viewProps});const g=(t="format"in n.params?n.params.format:void 0)!==null&&t!==void 0?t:re(an(p,i.rawValue));if(p&&ee(p,Ne)){const[C,S]=Va(p);return new on(n.document,{baseStep:Ct(p),parser:Ue,sliderProps:j.fromObject({maxValue:S,minValue:C}),textProps:j.fromObject({draggingScale:Pt(p,i.rawValue),formatter:g}),value:i,viewProps:n.viewProps})}return new Ge(n.document,{baseStep:Ct(p),parser:Ue,props:j.fromObject({draggingScale:Pt(p,i.rawValue),formatter:g}),value:i,viewProps:n.viewProps})}};class kt{constructor(e=0,t=0){this.x=e,this.y=t}getComponents(){return[this.x,this.y]}static isObject(e){if(_(e))return!1;const t=e.x,i=e.y;return!(typeof t!="number"||typeof i!="number")}static equals(e,t){return e.x===t.x&&e.y===t.y}toObject(){return{x:this.x,y:this.y}}}const Lr={toComponents:n=>n.getComponents(),fromComponents:n=>new kt(...n)},pn=R("p2d");class Oa{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(pn()),t.viewProps.bindClassModifiers(this.element),se(t.expanded,te(this.element,pn(void 0,"expanded")));const i=e.createElement("div");i.classList.add(pn("h")),this.element.appendChild(i);const p=e.createElement("button");p.classList.add(pn("b")),p.appendChild(qe(e,"p2dpad")),t.viewProps.bindDisabled(p),i.appendChild(p),this.buttonElement=p;const g=e.createElement("div");if(g.classList.add(pn("t")),i.appendChild(g),this.textElement=g,t.pickerLayout==="inline"){const C=e.createElement("div");C.classList.add(pn("p")),this.element.appendChild(C),this.pickerElement=C}else this.pickerElement=null}}const Mt=R("p2dp");class Ia{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(Mt()),t.layout==="popup"&&this.element.classList.add(Mt(void 0,"p"));const i=e.createElement("div");i.classList.add(Mt("p")),t.viewProps.bindTabIndex(i),this.element.appendChild(i),this.padElement=i;const p=e.createElementNS(ke,"svg");p.classList.add(Mt("g")),this.padElement.appendChild(p),this.svgElem_=p;const g=e.createElementNS(ke,"line");g.classList.add(Mt("ax")),g.setAttributeNS(null,"x1","0"),g.setAttributeNS(null,"y1","50%"),g.setAttributeNS(null,"x2","100%"),g.setAttributeNS(null,"y2","50%"),this.svgElem_.appendChild(g);const C=e.createElementNS(ke,"line");C.classList.add(Mt("ax")),C.setAttributeNS(null,"x1","50%"),C.setAttributeNS(null,"y1","0"),C.setAttributeNS(null,"x2","50%"),C.setAttributeNS(null,"y2","100%"),this.svgElem_.appendChild(C);const S=e.createElementNS(ke,"line");S.classList.add(Mt("l")),S.setAttributeNS(null,"x1","50%"),S.setAttributeNS(null,"y1","50%"),this.svgElem_.appendChild(S),this.lineElem_=S;const B=e.createElement("div");B.classList.add(Mt("m")),this.padElement.appendChild(B),this.markerElem_=B,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(),i=this.maxValue_,p=ne(e,-i,+i,0,100),g=ne(t,-i,+i,0,100),C=this.invertsY_?100-g:g;this.lineElem_.setAttributeNS(null,"x2",`${p}%`),this.lineElem_.setAttributeNS(null,"y2",`${C}%`),this.markerElem_.style.left=`${p}%`,this.markerElem_.style.top=`${C}%`}onValueChange_(){this.update_()}onFoldableChange_(){this.update_()}}function Sr(n,e,t){return[fe(e[0],Ke(n)),fe(e[1],De(n))*(t?1:-1)]}class Da{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 Ia(e,{invertsY:this.invertsY_,layout:t.layout,maxValue:this.maxValue_,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new rt(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 i=this.maxValue_,p=ne(e.point.x,0,e.bounds.width,-i,+i),g=ne(this.invertsY_?e.bounds.height-e.point.y:e.point.y,0,e.bounds.height,-i,+i);this.value.setRawValue(new kt(p,g),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){vs(e.key)&&e.preventDefault();const[t,i]=Sr(e,this.baseSteps_,this.invertsY_);t===0&&i===0||this.value.setRawValue(new kt(this.value.rawValue.x+t,this.value.rawValue.y+i),{forceEmit:!1,last:!1})}onPadKeyUp_(e){const[t,i]=Sr(e,this.baseSteps_,this.invertsY_);t===0&&i===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class Ra{constructor(e,t){var i,p;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_=Be.create(t.expanded),this.popC_=t.pickerLayout==="popup"?new Tn(e,{viewProps:this.viewProps}):null;const g=new Da(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});g.view.allFocusableElements.forEach(C=>{C.addEventListener("blur",this.onPopupChildBlur_),C.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=g,this.textC_=new Ri(e,{assembly:Lr,axes:t.axes,parser:t.parser,value:this.value,viewProps:this.viewProps}),this.view=new Oa(e,{expanded:this.foldable_.value("expanded"),pickerLayout:t.pickerLayout,viewProps:this.viewProps}),this.view.textElement.appendChild(this.textC_.view.element),(i=this.view.buttonElement)===null||i===void 0||i.addEventListener("blur",this.onPadButtonBlur_),(p=this.view.buttonElement)===null||p===void 0||p.addEventListener("click",this.onPadButtonClick_),this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),wt({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),U(this.foldable_,this.view.pickerElement))}onPadButtonBlur_(e){if(!this.popC_)return;const t=this.view.element,i=e.relatedTarget;(!i||!t.contains(i))&&(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,i=Oe(e);i&&t.contains(i)||i&&i===this.view.buttonElement&&!dt(t.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(e){this.popC_?e.key==="Escape"&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&e.key==="Escape"&&this.view.buttonElement.focus()}}function Fa(n){return kt.isObject(n)?new kt(n.x,n.y):new kt}function Ba(n,e){n.writeProperty("x",e.x),n.writeProperty("y",e.y)}function lt(n,e){if(!n)return;const t=[],i=kr(n,e);i&&t.push(i);const p=Mr(n);return p&&t.push(p),new Ze(t)}function ja(n,e){return new Et({assembly:Lr,components:[lt("x"in n?n.x:void 0,e.x),lt("y"in n?n.y:void 0,e.y)]})}function Tr(n,e){var t,i;const p=n&&ee(n,Ne);if(p)return Math.max(Math.abs((t=p.minValue)!==null&&t!==void 0?t:0),Math.abs((i=p.maxValue)!==null&&i!==void 0?i:0));const g=Ct(n);return Math.max(Math.abs(g)*10,Math.abs(e)*10)}function Ua(n,e){const t=e instanceof Et?e.components[0]:void 0,i=e instanceof Et?e.components[1]:void 0,p=Tr(t,n.x),g=Tr(i,n.y);return Math.max(p,g)}function Ar(n,e){return{baseStep:Ct(e),constraint:e,textProps:j.fromObject({draggingScale:Pt(e,n),formatter:re(an(e,n))})}}function za(n){if(!("y"in n))return!1;const e=n.y;return e&&"inverted"in e?!!e.inverted:!1}const Ka={id:"input-point2d",type:"input",accept:(n,e)=>{if(!kt.isObject(n))return null;const t=q,i=ae(e,{expanded:t.optional.boolean,picker:t.optional.custom(_s),x:t.optional.custom(ge),y:t.optional.object({inverted:t.optional.boolean,max:t.optional.number,min:t.optional.number,step:t.optional.number})});return i?{initialValue:n,params:i}:null},binding:{reader:n=>Fa,constraint:n=>ja(n.params,n.initialValue),equals:kt.equals,writer:n=>Ba},controller:n=>{const e=n.document,t=n.value,i=n.constraint;if(!(i instanceof Et))throw T.shouldNeverHappen();const p="expanded"in n.params?n.params.expanded:void 0,g="picker"in n.params?n.params.picker:void 0;return new Ra(e,{axes:[Ar(t.rawValue.x,i.components[0]),Ar(t.rawValue.y,i.components[1])],expanded:p??!1,invertsY:za(n.params),maxValue:Ua(t.rawValue,i),parser:Ue,pickerLayout:g??"popup",value:t,viewProps:n.viewProps})}};class un{constructor(e=0,t=0,i=0){this.x=e,this.y=t,this.z=i}getComponents(){return[this.x,this.y,this.z]}static isObject(e){if(_(e))return!1;const t=e.x,i=e.y,p=e.z;return!(typeof t!="number"||typeof i!="number"||typeof p!="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 Vr={toComponents:n=>n.getComponents(),fromComponents:n=>new un(...n)};function Ga(n){return un.isObject(n)?new un(n.x,n.y,n.z):new un}function $a(n,e){n.writeProperty("x",e.x),n.writeProperty("y",e.y),n.writeProperty("z",e.z)}function qa(n,e){return new Et({assembly:Vr,components:[lt("x"in n?n.x:void 0,e.x),lt("y"in n?n.y:void 0,e.y),lt("z"in n?n.z:void 0,e.z)]})}function Fi(n,e){return{baseStep:Ct(e),constraint:e,textProps:j.fromObject({draggingScale:Pt(e,n),formatter:re(an(e,n))})}}const Ha={id:"input-point3d",type:"input",accept:(n,e)=>{if(!un.isObject(n))return null;const t=q,i=ae(e,{x:t.optional.custom(ge),y:t.optional.custom(ge),z:t.optional.custom(ge)});return i?{initialValue:n,params:i}:null},binding:{reader:n=>Ga,constraint:n=>qa(n.params,n.initialValue),equals:un.equals,writer:n=>$a},controller:n=>{const e=n.value,t=n.constraint;if(!(t instanceof Et))throw T.shouldNeverHappen();return new Ri(n.document,{assembly:Vr,axes:[Fi(e.rawValue.x,t.components[0]),Fi(e.rawValue.y,t.components[1]),Fi(e.rawValue.z,t.components[2])],parser:Ue,value:e,viewProps:n.viewProps})}};class dn{constructor(e=0,t=0,i=0,p=0){this.x=e,this.y=t,this.z=i,this.w=p}getComponents(){return[this.x,this.y,this.z,this.w]}static isObject(e){if(_(e))return!1;const t=e.x,i=e.y,p=e.z,g=e.w;return!(typeof t!="number"||typeof i!="number"||typeof p!="number"||typeof g!="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 Nr={toComponents:n=>n.getComponents(),fromComponents:n=>new dn(...n)};function Ya(n){return dn.isObject(n)?new dn(n.x,n.y,n.z,n.w):new dn}function Xa(n,e){n.writeProperty("x",e.x),n.writeProperty("y",e.y),n.writeProperty("z",e.z),n.writeProperty("w",e.w)}function Wa(n,e){return new Et({assembly:Nr,components:[lt("x"in n?n.x:void 0,e.x),lt("y"in n?n.y:void 0,e.y),lt("z"in n?n.z:void 0,e.z),lt("w"in n?n.w:void 0,e.w)]})}function Za(n,e){return{baseStep:Ct(e),constraint:e,textProps:j.fromObject({draggingScale:Pt(e,n),formatter:re(an(e,n))})}}const Qa={id:"input-point4d",type:"input",accept:(n,e)=>{if(!dn.isObject(n))return null;const t=q,i=ae(e,{x:t.optional.custom(ge),y:t.optional.custom(ge),z:t.optional.custom(ge),w:t.optional.custom(ge)});return i?{initialValue:n,params:i}:null},binding:{reader:n=>Ya,constraint:n=>Wa(n.params,n.initialValue),equals:dn.equals,writer:n=>Xa},controller:n=>{const e=n.value,t=n.constraint;if(!(t instanceof Et))throw T.shouldNeverHappen();return new Ri(n.document,{assembly:Nr,axes:e.rawValue.getComponents().map((i,p)=>Za(i,t.components[p])),parser:Ue,value:e,viewProps:n.viewProps})}};function Ja(n){const e=[],t=Bn(n.options);return t&&e.push(t),new Ze(e)}const el={id:"input-string",type:"input",accept:(n,e)=>{if(typeof n!="string")return null;const i=ae(e,{options:q.optional.custom(yt)});return i?{initialValue:n,params:i}:null},binding:{reader:n=>hs,constraint:n=>Ja(n.params),writer:n=>xt},controller:n=>{var e;const t=n.document,i=n.value,p=n.constraint;return p&&ee(p,gt)?new it(t,{props:j.fromObject({options:(e=jn(p))!==null&&e!==void 0?e:[]}),value:i,viewProps:n.viewProps}):new zt(t,{parser:g=>g,props:j.fromObject({formatter:rn}),value:i,viewProps:n.viewProps})}},qn={monitor:{defaultInterval:200,defaultLineCount:3}},Or=R("mll");class tl{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(Or()),t.viewProps.bindClassModifiers(this.element);const i=e.createElement("textarea");i.classList.add(Or("i")),i.style.height=`calc(var(--bld-us) * ${t.lineCount})`,i.readOnly=!0,t.viewProps.bindDisabled(i),this.element.appendChild(i),this.textareaElem_=i,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,i=[];this.value.rawValue.forEach(p=>{p!==void 0&&i.push(this.formatter_(p))}),e.textContent=i.join(`
|
|
17
|
-
`),t&&(e.scrollTop=e.scrollHeight)}onValueUpdate_(){this.update_()}}class Bi{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new tl(e,{formatter:t.formatter,lineCount:t.lineCount,value:this.value,viewProps:this.viewProps})}}const Ir=R("sgl");class nl{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(Ir()),t.viewProps.bindClassModifiers(this.element);const i=e.createElement("input");i.classList.add(Ir("i")),i.readOnly=!0,i.type="text",t.viewProps.bindDisabled(i),this.element.appendChild(i),this.inputElement=i,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 ji{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new nl(e,{formatter:t.formatter,value:this.value,viewProps:this.viewProps})}}const sl={id:"monitor-bool",type:"monitor",accept:(n,e)=>{if(typeof n!="boolean")return null;const i=ae(e,{lineCount:q.optional.number});return i?{initialValue:n,params:i}:null},binding:{reader:n=>as},controller:n=>{var e;return n.value.rawValue.length===1?new ji(n.document,{formatter:ls,value:n.value,viewProps:n.viewProps}):new Bi(n.document,{formatter:ls,lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:qn.monitor.defaultLineCount,value:n.value,viewProps:n.viewProps})}},Lt=R("grl");class il{constructor(e,t){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=e.createElement("div"),this.element.classList.add(Lt()),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 i=e.createElementNS(ke,"svg");i.classList.add(Lt("g")),i.style.height=`calc(var(--bld-us) * ${t.lineCount})`,this.element.appendChild(i),this.svgElem_=i;const p=e.createElementNS(ke,"polyline");this.svgElem_.appendChild(p),this.lineElem_=p;const g=e.createElement("div");g.classList.add(Lt("t"),R("tt")()),this.element.appendChild(g),this.tooltipElem_=g,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,i=this.props_.get("minValue"),p=this.props_.get("maxValue"),g=[];this.value.rawValue.forEach((Q,J)=>{if(Q===void 0)return;const ct=ne(J,0,t,0,e.width),Hn=ne(Q,i,p,e.height,0);g.push([ct,Hn].join(","))}),this.lineElem_.setAttributeNS(null,"points",g.join(" "));const C=this.tooltipElem_,S=this.value.rawValue[this.cursor_.rawValue];if(S===void 0){C.classList.remove(Lt("t","a"));return}const B=ne(this.cursor_.rawValue,0,t,0,e.width),K=ne(S,i,p,e.height,0);C.style.left=`${B}px`,C.style.top=`${K}px`,C.textContent=`${this.formatter_(S)}`,C.classList.contains(Lt("t","a"))||(C.classList.add(Lt("t","a"),Lt("t","in")),et(C),C.classList.remove(Lt("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class rl{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_=Z(-1),this.view=new il(e,{cursor:this.cursor_,formatter:t.formatter,lineCount:t.lineCount,props:this.props_,value:this.value,viewProps:this.viewProps}),!dt(e))this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_);else{const i=new rt(this.view.element);i.emitter.on("down",this.onGraphPointerDown_),i.emitter.on("move",this.onGraphPointerMove_),i.emitter.on("up",this.onGraphPointerUp_)}}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(e){const t=this.view.element.getBoundingClientRect();this.cursor_.rawValue=Math.floor(ne(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(ne(e.data.point.x,0,e.data.bounds.width,0,this.value.rawValue.length))}onGraphPointerUp_(){this.cursor_.rawValue=-1}}function Ui(n){return"format"in n&&!_(n.format)?n.format:re(2)}function ol(n){var e;return n.value.rawValue.length===1?new ji(n.document,{formatter:Ui(n.params),value:n.value,viewProps:n.viewProps}):new Bi(n.document,{formatter:Ui(n.params),lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:qn.monitor.defaultLineCount,value:n.value,viewProps:n.viewProps})}function al(n){var e,t,i;return new rl(n.document,{formatter:Ui(n.params),lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:qn.monitor.defaultLineCount,props:j.fromObject({maxValue:(t="max"in n.params?n.params.max:null)!==null&&t!==void 0?t:100,minValue:(i="min"in n.params?n.params.min:null)!==null&&i!==void 0?i:0}),value:n.value,viewProps:n.viewProps})}function Dr(n){return"view"in n&&n.view==="graph"}const ll={id:"monitor-number",type:"monitor",accept:(n,e)=>{if(typeof n!="number")return null;const t=q,i=ae(e,{format:t.optional.function,lineCount:t.optional.number,max:t.optional.number,min:t.optional.number,view:t.optional.string});return i?{initialValue:n,params:i}:null},binding:{defaultBufferSize:n=>Dr(n)?64:1,reader:n=>On},controller:n=>Dr(n.params)?al(n):ol(n)},cl={id:"monitor-string",type:"monitor",accept:(n,e)=>{if(typeof n!="string")return null;const t=q,i=ae(e,{lineCount:t.optional.number,multiline:t.optional.boolean});return i?{initialValue:n,params:i}:null},binding:{reader:n=>hs},controller:n=>{var e;const t=n.value;return t.rawValue.length>1||"multiline"in n.params&&n.params.multiline?new Bi(n.document,{formatter:rn,lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:qn.monitor.defaultLineCount,value:t,viewProps:n.viewProps}):new ji(n.document,{formatter:rn,value:t,viewProps:n.viewProps})}};class pl{constructor(e){this.onValueChange_=this.onValueChange_.bind(this),this.reader=e.reader,this.writer=e.writer,this.emitter=new D,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 ul(n,e){const t=n.accept(e.target.read(),e.params);if(_(t))return null;const i=q,p={target:e.target,initialValue:t.initialValue,params:t.params},g=n.binding.reader(p),C=n.binding.constraint?n.binding.constraint(p):void 0,S=Z(g(t.initialValue),{constraint:C,equals:n.binding.equals}),B=new pl({reader:g,target:e.target,value:S,writer:n.binding.writer(p)}),K=i.optional.boolean(e.params.disabled).value,Q=i.optional.boolean(e.params.hidden).value,J=n.controller({constraint:C,document:e.document,initialValue:t.initialValue,params:t.params,value:B.value,viewProps:We.create({disabled:K,hidden:Q})}),ct=i.optional.string(e.params.label).value;return new Se(e.document,{binding:B,blade:Fe(),props:j.fromObject({label:ct??e.target.key}),valueController:J})}class dl{constructor(e){this.onTick_=this.onTick_.bind(this),this.reader_=e.reader,this.target=e.target,this.emitter=new D,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,i=this.reader_(e);this.value.rawValue=ms(t,i),this.emitter.emit("update",{rawValue:i,sender:this})}onTick_(e){this.read()}}function hl(n,e){return e===0?new is:new Ln(n,e??qn.monitor.defaultInterval)}function ml(n,e){var t,i,p;const g=q,C=n.accept(e.target.read(),e.params);if(_(C))return null;const S={target:e.target,initialValue:C.initialValue,params:C.params},B=n.binding.reader(S),K=(i=(t=g.optional.number(e.params.bufferSize).value)!==null&&t!==void 0?t:n.binding.defaultBufferSize&&n.binding.defaultBufferSize(C.params))!==null&&i!==void 0?i:1,Q=g.optional.number(e.params.interval).value,J=new dl({reader:B,target:e.target,ticker:hl(e.document,Q),value:vi(K)}),ct=g.optional.boolean(e.params.disabled).value,Hn=g.optional.boolean(e.params.hidden).value,Yn=n.controller({document:e.document,params:C.params,value:J.value,viewProps:We.create({disabled:ct,hidden:Hn})}),hn=(p=g.optional.string(e.params.label).value)!==null&&p!==void 0?p:e.target.key;return new Xe(e.document,{binding:J,blade:Fe(),props:j.fromObject({label:hn}),valueController:Yn})}class vl{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,i){const p=t.read();if(_(p))throw new T({context:{key:t.key},type:"nomatchingcontroller"});const g=this.pluginsMap_.inputs.reduce((C,S)=>C??ul(S,{document:e,target:t,params:i}),null);if(g)return g;throw new T({context:{key:t.key},type:"nomatchingcontroller"})}createMonitor(e,t,i){const p=this.pluginsMap_.monitors.reduce((g,C)=>g??ml(C,{document:e,params:i,target:t}),null);if(p)return p;throw new T({context:{key:t.key},type:"nomatchingcontroller"})}createBlade(e,t){const i=this.pluginsMap_.blades.reduce((p,g)=>p??Ks(g,{document:e,params:t}),null);if(!i)throw new T({type:"nomatchingview",context:{params:t}});return i}createBladeApi(e){if(e instanceof Se)return new ye(e);if(e instanceof Xe)return new st(e);if(e instanceof Ft)return new Rt(e,this);const t=this.pluginsMap_.blades.reduce((i,p)=>i??p.api({controller:e,pool:this}),null);if(!t)throw T.shouldNeverHappen();return t}}function fl(){const n=new vl;return[Ka,Ha,Qa,el,Na,Ma,ka,ya,yi,sl,cl,ll,mt,Fs,es,Mn].forEach(e=>{n.register(e)}),n}class Rr extends d{constructor(e){super(e),this.emitter_=new D,this.controller_.valueController.value.emitter.on("change",t=>{this.emitter_.emit("change",{event:new h(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 i=t.bind(this);return this.emitter_.on(e,p=>{i(p.event)}),this}}class Fr extends d{constructor(e){super(e),this.emitter_=new D,this.controller_.valueController.value.emitter.on("change",t=>{this.emitter_.emit("change",{event:new h(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 i=t.bind(this);return this.emitter_.on(e,p=>{i(p.event)}),this}}class Br extends d{constructor(e){super(e),this.emitter_=new D,this.controller_.valueController.value.emitter.on("change",t=>{this.emitter_.emit("change",{event:new h(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 i=t.bind(this);return this.emitter_.on(e,p=>{i(p.event)}),this}}const bl=function(){return{id:"list",type:"blade",accept(n){const e=q,t=ae(n,{options:e.required.custom(yt),value:e.required.raw,view:e.required.constant("list"),label:e.optional.string});return t?{params:t}:null},controller(n){const e=new it(n.document,{props:j.fromObject({options:ws(n.params.options)}),value:Z(n.params.value),viewProps:n.viewProps});return new ft(n.document,{blade:n.blade,props:j.fromObject({label:n.params.label}),valueController:e})},api(n){return!(n.controller instanceof ft)||!(n.controller.valueController instanceof it)?null:new Rr(n.controller)}}}();function gl(n){return n.reduce((e,t)=>Object.assign(e,{[t.presetKey]:t.read()}),{})}function _l(n,e){n.forEach(t=>{const i=e[t.presetKey];i!==void 0&&t.write(i)})}class wl extends xn{constructor(e,t){super(e,t)}get element(){return this.controller_.view.element}importPreset(e){const t=this.controller_.rackController.rack.find(Se).map(i=>i.binding.target);_l(t,e),this.refresh()}exportPreset(){const e=this.controller_.rackController.rack.find(Se).map(t=>t.binding.target);return gl(e)}refresh(){this.controller_.rackController.rack.find(Se).forEach(e=>{e.binding.read()}),this.controller_.rackController.rack.find(Xe).forEach(e=>{e.binding.read()})}}class xl extends Pn{constructor(e,t){super(e,{expanded:t.expanded,blade:t.blade,props:t.props,root:!0,viewProps:t.viewProps})}}const yl={id:"slider",type:"blade",accept(n){const e=q,t=ae(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 i=(e=n.params.value)!==null&&e!==void 0?e:0,p=new on(n.document,{baseStep:1,parser:Ue,sliderProps:j.fromObject({maxValue:n.params.max,minValue:n.params.min}),textProps:j.fromObject({draggingScale:Pt(void 0,i),formatter:(t=n.params.format)!==null&&t!==void 0?t:hi}),value:Z(i),viewProps:n.viewProps});return new ft(n.document,{blade:n.blade,props:j.fromObject({label:n.params.label}),valueController:p})},api(n){return!(n.controller instanceof ft)||!(n.controller.valueController instanceof on)?null:new Fr(n.controller)}},Cl=function(){return{id:"text",type:"blade",accept(n){const e=q,t=ae(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 zt(n.document,{parser:n.params.parse,props:j.fromObject({formatter:(e=n.params.format)!==null&&e!==void 0?e:i=>String(i)}),value:Z(n.params.value),viewProps:n.viewProps});return new ft(n.document,{blade:n.blade,props:j.fromObject({label:n.params.label}),valueController:t})},api(n){return!(n.controller instanceof ft)||!(n.controller.valueController instanceof zt)?null:new Br(n.controller)}}}();function Pl(n){const e=n.createElement("div");return e.classList.add(R("dfw")()),n.body&&n.body.appendChild(e),e}function jr(n,e,t){if(n.querySelector(`style[data-tp-style=${e}]`))return;const i=n.createElement("style");i.dataset.tpStyle=e,i.textContent=t,n.head.appendChild(i)}class El extends wl{constructor(e){var t,i;const p=e??{},g=(t=p.document)!==null&&t!==void 0?t:gn(),C=fl(),S=new xl(g,{expanded:p.expanded,blade:Fe(),props:j.fromObject({title:p.title}),viewProps:We.create()});super(S,C),this.pool_=C,this.containerElem_=(i=p.container)!==null&&i!==void 0?i:Pl(g),this.containerElem_.appendChild(this.element),this.doc_=g,this.usesDefaultWrapper_=!p.container,this.setUpDefaultPlugins_()}get document(){if(!this.doc_)throw T.alreadyDisposed();return this.doc_}dispose(){const e=this.containerElem_;if(!e)throw T.alreadyDisposed();if(this.usesDefaultWrapper_){const t=e.parentElement;t&&t.removeChild(e)}this.containerElem_=null,this.doc_=null,super.dispose()}registerPlugin(e){("plugin"in e?[e.plugin]:"plugins"in e?e.plugins:[]).forEach(i=>{this.pool_.register(i),this.embedPluginStyle_(i)})}embedPluginStyle_(e){e.css&&jr(this.document,`plugin-${e.id}`,e.css)}setUpDefaultPlugins_(){jr(this.document,"default",'.tp-tbiv_b,.tp-coltxtv_ms,.tp-ckbv_i,.tp-rotv_b,.tp-fldv_b,.tp-mllv_i,.tp-sglv_i,.tp-grlv_g,.tp-txtv_i,.tp-p2dpv_p,.tp-colswv_sw,.tp-p2dv_b,.tp-btnv_b,.tp-lstv_s{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-p2dv_b,.tp-btnv_b,.tp-lstv_s{background-color:var(--btn-bg);border-radius:var(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-p2dv_b:hover,.tp-btnv_b:hover,.tp-lstv_s:hover{background-color:var(--btn-bg-h)}.tp-p2dv_b:focus,.tp-btnv_b:focus,.tp-lstv_s:focus{background-color:var(--btn-bg-f)}.tp-p2dv_b:active,.tp-btnv_b:active,.tp-lstv_s:active{background-color:var(--btn-bg-a)}.tp-p2dv_b:disabled,.tp-btnv_b:disabled,.tp-lstv_s:disabled{opacity:.5}.tp-txtv_i,.tp-p2dpv_p,.tp-colswv_sw{background-color:var(--in-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);min-width:0;width:100%}.tp-txtv_i:hover,.tp-p2dpv_p:hover,.tp-colswv_sw:hover{background-color:var(--in-bg-h)}.tp-txtv_i:focus,.tp-p2dpv_p:focus,.tp-colswv_sw:focus{background-color:var(--in-bg-f)}.tp-txtv_i:active,.tp-p2dpv_p:active,.tp-colswv_sw:active{background-color:var(--in-bg-a)}.tp-txtv_i:disabled,.tp-p2dpv_p:disabled,.tp-colswv_sw:disabled{opacity:.5}.tp-mllv_i,.tp-sglv_i,.tp-grlv_g{background-color:var(--mo-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--mo-fg);height:var(--bld-us);scrollbar-color:currentColor rgba(0,0,0,0);scrollbar-width:thin;width:100%}.tp-mllv_i::-webkit-scrollbar,.tp-sglv_i::-webkit-scrollbar,.tp-grlv_g::-webkit-scrollbar{height:8px;width:8px}.tp-mllv_i::-webkit-scrollbar-corner,.tp-sglv_i::-webkit-scrollbar-corner,.tp-grlv_g::-webkit-scrollbar-corner{background-color:rgba(0,0,0,0)}.tp-mllv_i::-webkit-scrollbar-thumb,.tp-sglv_i::-webkit-scrollbar-thumb,.tp-grlv_g::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:currentColor;border:rgba(0,0,0,0) solid 2px;border-radius:4px}.tp-rotv{--font-family: var(--tp-font-family, Roboto Mono, Source Code Pro, Menlo, Courier, monospace);--bs-br: var(--tp-base-border-radius, 6px);--cnt-h-p: var(--tp-container-horizontal-padding, 4px);--cnt-v-p: var(--tp-container-vertical-padding, 4px);--elm-br: var(--tp-element-border-radius, 2px);--bld-s: var(--tp-blade-spacing, 4px);--bld-us: var(--tp-blade-unit-size, 20px);--bs-bg: var(--tp-base-background-color, hsl(230deg, 7%, 17%));--bs-sh: var(--tp-base-shadow-color, rgba(0, 0, 0, 0.2));--btn-bg: var(--tp-button-background-color, hsl(230deg, 7%, 70%));--btn-bg-a: var(--tp-button-background-color-active, #d6d7db);--btn-bg-f: var(--tp-button-background-color-focus, #c8cad0);--btn-bg-h: var(--tp-button-background-color-hover, #bbbcc4);--btn-fg: var(--tp-button-foreground-color, hsl(230deg, 7%, 17%));--cnt-bg: var(--tp-container-background-color, rgba(187, 188, 196, 0.1));--cnt-bg-a: var(--tp-container-background-color-active, rgba(187, 188, 196, 0.25));--cnt-bg-f: var(--tp-container-background-color-focus, rgba(187, 188, 196, 0.2));--cnt-bg-h: var(--tp-container-background-color-hover, rgba(187, 188, 196, 0.15));--cnt-fg: var(--tp-container-foreground-color, hsl(230deg, 7%, 75%));--in-bg: var(--tp-input-background-color, rgba(187, 188, 196, 0.1));--in-bg-a: var(--tp-input-background-color-active, rgba(187, 188, 196, 0.25));--in-bg-f: var(--tp-input-background-color-focus, rgba(187, 188, 196, 0.2));--in-bg-h: var(--tp-input-background-color-hover, rgba(187, 188, 196, 0.15));--in-fg: var(--tp-input-foreground-color, hsl(230deg, 7%, 75%));--lbl-fg: var(--tp-label-foreground-color, rgba(187, 188, 196, 0.7));--mo-bg: var(--tp-monitor-background-color, rgba(0, 0, 0, 0.2));--mo-fg: var(--tp-monitor-foreground-color, rgba(187, 188, 196, 0.7));--grv-fg: var(--tp-groove-foreground-color, rgba(187, 188, 196, 0.1))}.tp-rotv_c>.tp-cntv.tp-v-lst,.tp-tabv_c .tp-brkv>.tp-cntv.tp-v-lst,.tp-fldv_c>.tp-cntv.tp-v-lst{margin-bottom:calc(-1*var(--cnt-v-p))}.tp-rotv_c>.tp-fldv.tp-v-lst .tp-fldv_c,.tp-tabv_c .tp-brkv>.tp-fldv.tp-v-lst .tp-fldv_c,.tp-fldv_c>.tp-fldv.tp-v-lst .tp-fldv_c{border-bottom-left-radius:0}.tp-rotv_c>.tp-fldv.tp-v-lst .tp-fldv_b,.tp-tabv_c .tp-brkv>.tp-fldv.tp-v-lst .tp-fldv_b,.tp-fldv_c>.tp-fldv.tp-v-lst .tp-fldv_b{border-bottom-left-radius:0}.tp-rotv_c>*:not(.tp-v-fst),.tp-tabv_c .tp-brkv>*:not(.tp-v-fst),.tp-fldv_c>*:not(.tp-v-fst){margin-top:var(--bld-s)}.tp-rotv_c>.tp-sprv:not(.tp-v-fst),.tp-tabv_c .tp-brkv>.tp-sprv:not(.tp-v-fst),.tp-fldv_c>.tp-sprv:not(.tp-v-fst),.tp-rotv_c>.tp-cntv:not(.tp-v-fst),.tp-tabv_c .tp-brkv>.tp-cntv:not(.tp-v-fst),.tp-fldv_c>.tp-cntv:not(.tp-v-fst){margin-top:var(--cnt-v-p)}.tp-rotv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-tabv_c .tp-brkv>.tp-sprv+*:not(.tp-v-hidden),.tp-fldv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-rotv_c>.tp-cntv+*:not(.tp-v-hidden),.tp-tabv_c .tp-brkv>.tp-cntv+*:not(.tp-v-hidden),.tp-fldv_c>.tp-cntv+*:not(.tp-v-hidden){margin-top:var(--cnt-v-p)}.tp-rotv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-tabv_c .tp-brkv>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-fldv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-rotv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv,.tp-tabv_c .tp-brkv>.tp-cntv:not(.tp-v-hidden)+.tp-cntv,.tp-fldv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv{margin-top:0}.tp-tabv_c .tp-brkv>.tp-cntv,.tp-fldv_c>.tp-cntv{margin-left:4px}.tp-tabv_c .tp-brkv>.tp-fldv>.tp-fldv_b,.tp-fldv_c>.tp-fldv>.tp-fldv_b{border-top-left-radius:var(--elm-br);border-bottom-left-radius:var(--elm-br)}.tp-tabv_c .tp-brkv>.tp-fldv.tp-fldv-expanded>.tp-fldv_b,.tp-fldv_c>.tp-fldv.tp-fldv-expanded>.tp-fldv_b{border-bottom-left-radius:0}.tp-tabv_c .tp-brkv .tp-fldv>.tp-fldv_c,.tp-fldv_c .tp-fldv>.tp-fldv_c{border-bottom-left-radius:var(--elm-br)}.tp-tabv_c .tp-brkv>.tp-tabv>.tp-tabv_i,.tp-fldv_c>.tp-tabv>.tp-tabv_i{border-top-left-radius:var(--elm-br)}.tp-tabv_c .tp-brkv .tp-tabv>.tp-tabv_c,.tp-fldv_c .tp-tabv>.tp-tabv_c{border-bottom-left-radius:var(--elm-br)}.tp-rotv_b,.tp-fldv_b{background-color:var(--cnt-bg);color:var(--cnt-fg);cursor:pointer;display:block;height:calc(var(--bld-us) + 4px);line-height:calc(var(--bld-us) + 4px);overflow:hidden;padding-left:var(--cnt-h-p);padding-right:calc(4px + var(--bld-us) + var(--cnt-h-p));position:relative;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%;transition:border-radius .2s ease-in-out .2s}.tp-rotv_b:hover,.tp-fldv_b:hover{background-color:var(--cnt-bg-h)}.tp-rotv_b:focus,.tp-fldv_b:focus{background-color:var(--cnt-bg-f)}.tp-rotv_b:active,.tp-fldv_b:active{background-color:var(--cnt-bg-a)}.tp-rotv_b:disabled,.tp-fldv_b:disabled{opacity:.5}.tp-rotv_m,.tp-fldv_m{background:linear-gradient(to left, var(--cnt-fg), var(--cnt-fg) 2px, transparent 2px, transparent 4px, var(--cnt-fg) 4px);border-radius:2px;bottom:0;content:"";display:block;height:6px;right:calc(var(--cnt-h-p) + (var(--bld-us) + 4px - 6px)/2 - 2px);margin:auto;opacity:.5;position:absolute;top:0;transform:rotate(90deg);transition:transform .2s ease-in-out;width:6px}.tp-rotv.tp-rotv-expanded .tp-rotv_m,.tp-fldv.tp-fldv-expanded>.tp-fldv_b>.tp-fldv_m{transform:none}.tp-rotv_c,.tp-fldv_c{box-sizing:border-box;height:0;opacity:0;overflow:hidden;padding-bottom:0;padding-top:0;position:relative;transition:height .2s ease-in-out,opacity .2s linear,padding .2s ease-in-out}.tp-rotv.tp-rotv-cpl:not(.tp-rotv-expanded) .tp-rotv_c,.tp-fldv.tp-fldv-cpl:not(.tp-fldv-expanded)>.tp-fldv_c{display:none}.tp-rotv.tp-rotv-expanded .tp-rotv_c,.tp-fldv.tp-fldv-expanded>.tp-fldv_c{opacity:1;padding-bottom:var(--cnt-v-p);padding-top:var(--cnt-v-p);transform:none;overflow:visible;transition:height .2s ease-in-out,opacity .2s linear .2s,padding .2s ease-in-out}.tp-lstv,.tp-coltxtv_m{position:relative}.tp-lstv_s{padding:0 20px 0 4px;width:100%}.tp-lstv_m,.tp-coltxtv_mm{bottom:0;margin:auto;pointer-events:none;position:absolute;right:2px;top:0}.tp-lstv_m svg,.tp-coltxtv_mm svg{bottom:0;height:16px;margin:auto;position:absolute;right:0;top:0;width:16px}.tp-lstv_m svg path,.tp-coltxtv_mm svg path{fill:currentColor}.tp-pndtxtv,.tp-coltxtv_w{display:flex}.tp-pndtxtv_a,.tp-coltxtv_c{width:100%}.tp-pndtxtv_a+.tp-pndtxtv_a,.tp-coltxtv_c+.tp-pndtxtv_a,.tp-pndtxtv_a+.tp-coltxtv_c,.tp-coltxtv_c+.tp-coltxtv_c{margin-left:2px}.tp-btnv_b{width:100%}.tp-btnv_t{text-align:center}.tp-ckbv_l{display:block;position:relative}.tp-ckbv_i{left:0;opacity:0;position:absolute;top:0}.tp-ckbv_w{background-color:var(--in-bg);border-radius:var(--elm-br);cursor:pointer;display:block;height:var(--bld-us);position:relative;width:var(--bld-us)}.tp-ckbv_w svg{bottom:0;display:block;height:16px;left:0;margin:auto;opacity:0;position:absolute;right:0;top:0;width:16px}.tp-ckbv_w svg path{fill:none;stroke:var(--in-fg);stroke-width:2}.tp-ckbv_i:hover+.tp-ckbv_w{background-color:var(--in-bg-h)}.tp-ckbv_i:focus+.tp-ckbv_w{background-color:var(--in-bg-f)}.tp-ckbv_i:active+.tp-ckbv_w{background-color:var(--in-bg-a)}.tp-ckbv_i:checked+.tp-ckbv_w svg{opacity:1}.tp-ckbv.tp-v-disabled .tp-ckbv_w{opacity:.5}.tp-colv{position:relative}.tp-colv_h{display:flex}.tp-colv_s{flex-grow:0;flex-shrink:0;width:var(--bld-us)}.tp-colv_t{flex:1;margin-left:4px}.tp-colv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-colv.tp-colv-cpl .tp-colv_p{overflow:visible}.tp-colv.tp-colv-expanded .tp-colv_p{margin-top:var(--bld-s);opacity:1}.tp-colv .tp-popv{left:calc(-1*var(--cnt-h-p));right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-colpv_h,.tp-colpv_ap{margin-left:6px;margin-right:6px}.tp-colpv_h{margin-top:var(--bld-s)}.tp-colpv_rgb{display:flex;margin-top:var(--bld-s);width:100%}.tp-colpv_a{display:flex;margin-top:var(--cnt-v-p);padding-top:calc(var(--cnt-v-p) + 2px);position:relative}.tp-colpv_a:before{background-color:var(--grv-fg);content:"";height:2px;left:calc(-1*var(--cnt-h-p));position:absolute;right:calc(-1*var(--cnt-h-p));top:0}.tp-colpv_ap{align-items:center;display:flex;flex:3}.tp-colpv_at{flex:1;margin-left:4px}.tp-svpv{border-radius:var(--elm-br);outline:none;overflow:hidden;position:relative}.tp-svpv_c{cursor:crosshair;display:block;height:calc(var(--bld-us)*4);width:100%}.tp-svpv_m{border-radius:100%;border:rgba(255,255,255,.75) solid 2px;box-sizing:border-box;filter:drop-shadow(0 0 1px rgba(0, 0, 0, 0.3));height:12px;margin-left:-6px;margin-top:-6px;pointer-events:none;position:absolute;width:12px}.tp-svpv:focus .tp-svpv_m{border-color:#fff}.tp-hplv{cursor:pointer;height:var(--bld-us);outline:none;position:relative}.tp-hplv_c{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAABCAYAAABubagXAAAAQ0lEQVQoU2P8z8Dwn0GCgQEDi2OK/RBgYHjBgIpfovFh8j8YBIgzFGQxuqEgPhaDOT5gOhPkdCxOZeBg+IDFZZiGAgCaSSMYtcRHLgAAAABJRU5ErkJggg==);background-position:left top;background-repeat:no-repeat;background-size:100% 100%;border-radius:2px;display:block;height:4px;left:0;margin-top:-2px;position:absolute;top:50%;width:100%}.tp-hplv_m{border-radius:var(--elm-br);border:rgba(255,255,255,.75) solid 2px;box-shadow:0 0 2px rgba(0,0,0,.1);box-sizing:border-box;height:12px;left:50%;margin-left:-6px;margin-top:-6px;pointer-events:none;position:absolute;top:50%;width:12px}.tp-hplv:focus .tp-hplv_m{border-color:#fff}.tp-aplv{cursor:pointer;height:var(--bld-us);outline:none;position:relative;width:100%}.tp-aplv_b{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:4px 4px;background-position:0 0,2px 2px;border-radius:2px;display:block;height:4px;left:0;margin-top:-2px;overflow:hidden;position:absolute;top:50%;width:100%}.tp-aplv_c{bottom:0;left:0;position:absolute;right:0;top:0}.tp-aplv_m{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:12px 12px;background-position:0 0,6px 6px;border-radius:var(--elm-br);box-shadow:0 0 2px rgba(0,0,0,.1);height:12px;left:50%;margin-left:-6px;margin-top:-6px;overflow:hidden;pointer-events:none;position:absolute;top:50%;width:12px}.tp-aplv_p{border-radius:var(--elm-br);border:rgba(255,255,255,.75) solid 2px;box-sizing:border-box;bottom:0;left:0;position:absolute;right:0;top:0}.tp-aplv:focus .tp-aplv_p{border-color:#fff}.tp-colswv{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:10px 10px;background-position:0 0,5px 5px;border-radius:var(--elm-br);overflow:hidden}.tp-colswv.tp-v-disabled{opacity:.5}.tp-colswv_sw{border-radius:0}.tp-colswv_b{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;cursor:pointer;display:block;height:var(--bld-us);left:0;margin:0;outline:none;padding:0;position:absolute;top:0;width:var(--bld-us)}.tp-colswv_b:focus::after{border:rgba(255,255,255,.75) solid 2px;border-radius:var(--elm-br);bottom:0;content:"";display:block;left:0;position:absolute;right:0;top:0}.tp-coltxtv{display:flex;width:100%}.tp-coltxtv_m{margin-right:4px}.tp-coltxtv_ms{border-radius:var(--elm-br);color:var(--lbl-fg);cursor:pointer;height:var(--bld-us);line-height:var(--bld-us);padding:0 18px 0 4px}.tp-coltxtv_ms:hover{background-color:var(--in-bg-h)}.tp-coltxtv_ms:focus{background-color:var(--in-bg-f)}.tp-coltxtv_ms:active{background-color:var(--in-bg-a)}.tp-coltxtv_mm{color:var(--lbl-fg)}.tp-coltxtv_w{flex:1}.tp-dfwv{position:absolute;top:8px;right:8px;width:256px}.tp-fldv.tp-fldv-not .tp-fldv_b{display:none}.tp-fldv_t{padding-left:4px}.tp-fldv_c{border-left:var(--cnt-bg) solid 4px}.tp-fldv_b:hover+.tp-fldv_c{border-left-color:var(--cnt-bg-h)}.tp-fldv_b:focus+.tp-fldv_c{border-left-color:var(--cnt-bg-f)}.tp-fldv_b:active+.tp-fldv_c{border-left-color:var(--cnt-bg-a)}.tp-grlv{position:relative}.tp-grlv_g{display:block;height:calc(var(--bld-us)*3)}.tp-grlv_g polyline{fill:none;stroke:var(--mo-fg);stroke-linejoin:round}.tp-grlv_t{margin-top:-4px;transition:left .05s,top .05s;visibility:hidden}.tp-grlv_t.tp-grlv_t-a{visibility:visible}.tp-grlv_t.tp-grlv_t-in{transition:none}.tp-grlv.tp-v-disabled .tp-grlv_g{opacity:.5}.tp-grlv .tp-ttv{background-color:var(--mo-fg)}.tp-grlv .tp-ttv::before{border-top-color:var(--mo-fg)}.tp-lblv{align-items:center;display:flex;line-height:1.3;padding-left:var(--cnt-h-p);padding-right:var(--cnt-h-p)}.tp-lblv.tp-lblv-nol{display:block}.tp-lblv_l{color:var(--lbl-fg);flex:1;-webkit-hyphens:auto;hyphens:auto;overflow:hidden;padding-left:4px;padding-right:16px}.tp-lblv.tp-v-disabled .tp-lblv_l{opacity:.5}.tp-lblv.tp-lblv-nol .tp-lblv_l{display:none}.tp-lblv_v{align-self:flex-start;flex-grow:0;flex-shrink:0;width:160px}.tp-lblv.tp-lblv-nol .tp-lblv_v{width:100%}.tp-lstv_s{padding:0 20px 0 4px;width:100%}.tp-lstv_m{color:var(--btn-fg)}.tp-sglv_i{padding:0 4px}.tp-sglv.tp-v-disabled .tp-sglv_i{opacity:.5}.tp-mllv_i{display:block;height:calc(var(--bld-us)*3);line-height:var(--bld-us);padding:0 4px;resize:none;white-space:pre}.tp-mllv.tp-v-disabled .tp-mllv_i{opacity:.5}.tp-p2dv{position:relative}.tp-p2dv_h{display:flex}.tp-p2dv_b{height:var(--bld-us);margin-right:4px;position:relative;width:var(--bld-us)}.tp-p2dv_b svg{display:block;height:16px;left:50%;margin-left:-8px;margin-top:-8px;position:absolute;top:50%;width:16px}.tp-p2dv_b svg path{stroke:currentColor;stroke-width:2}.tp-p2dv_b svg circle{fill:currentColor}.tp-p2dv_t{flex:1}.tp-p2dv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-p2dv.tp-p2dv-expanded .tp-p2dv_p{margin-top:var(--bld-s);opacity:1}.tp-p2dv .tp-popv{left:calc(-1*var(--cnt-h-p));right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-p2dpv{padding-left:calc(var(--bld-us) + 4px)}.tp-p2dpv_p{cursor:crosshair;height:0;overflow:hidden;padding-bottom:100%;position:relative}.tp-p2dpv_g{display:block;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}.tp-p2dpv_ax{opacity:.1;stroke:var(--in-fg);stroke-dasharray:1}.tp-p2dpv_l{opacity:.5;stroke:var(--in-fg);stroke-dasharray:1}.tp-p2dpv_m{border:var(--in-fg) solid 1px;border-radius:50%;box-sizing:border-box;height:4px;margin-left:-2px;margin-top:-2px;position:absolute;width:4px}.tp-p2dpv_p:focus .tp-p2dpv_m{background-color:var(--in-fg);border-width:0}.tp-popv{background-color:var(--bs-bg);border-radius:6px;box-shadow:0 2px 4px var(--bs-sh);display:none;max-width:168px;padding:var(--cnt-v-p) var(--cnt-h-p);position:absolute;visibility:hidden;z-index:1000}.tp-popv.tp-popv-v{display:block;visibility:visible}.tp-sprv_r{background-color:var(--grv-fg);border-width:0;display:block;height:2px;margin:0;width:100%}.tp-sldv.tp-v-disabled{opacity:.5}.tp-sldv_t{box-sizing:border-box;cursor:pointer;height:var(--bld-us);margin:0 6px;outline:none;position:relative}.tp-sldv_t::before{background-color:var(--in-bg);border-radius:1px;bottom:0;content:"";display:block;height:2px;left:0;margin:auto;position:absolute;right:0;top:0}.tp-sldv_k{height:100%;left:0;position:absolute;top:0}.tp-sldv_k::before{background-color:var(--in-fg);border-radius:1px;bottom:0;content:"";display:block;height:2px;left:0;margin-bottom:auto;margin-top:auto;position:absolute;right:0;top:0}.tp-sldv_k::after{background-color:var(--btn-bg);border-radius:var(--elm-br);bottom:0;content:"";display:block;height:12px;margin-bottom:auto;margin-top:auto;position:absolute;right:-6px;top:0;width:12px}.tp-sldv_t:hover .tp-sldv_k::after{background-color:var(--btn-bg-h)}.tp-sldv_t:focus .tp-sldv_k::after{background-color:var(--btn-bg-f)}.tp-sldv_t:active .tp-sldv_k::after{background-color:var(--btn-bg-a)}.tp-sldtxtv{display:flex}.tp-sldtxtv_s{flex:2}.tp-sldtxtv_t{flex:1;margin-left:4px}.tp-tabv.tp-v-disabled{opacity:.5}.tp-tabv_i{align-items:flex-end;display:flex;overflow:hidden}.tp-tabv.tp-tabv-nop .tp-tabv_i{height:calc(var(--bld-us) + 4px);position:relative}.tp-tabv.tp-tabv-nop .tp-tabv_i::before{background-color:var(--cnt-bg);bottom:0;content:"";height:2px;left:0;position:absolute;right:0}.tp-tabv_c{border-left:var(--cnt-bg) solid 4px;padding-bottom:var(--cnt-v-p);padding-top:var(--cnt-v-p)}.tp-tbiv{flex:1;min-width:0;position:relative}.tp-tbiv+.tp-tbiv{margin-left:2px}.tp-tbiv+.tp-tbiv::before{background-color:var(--cnt-bg);bottom:0;content:"";height:2px;left:-2px;position:absolute;width:2px}.tp-tbiv_b{background-color:var(--cnt-bg);display:block;padding-left:calc(var(--cnt-h-p) + 4px);padding-right:calc(var(--cnt-h-p) + 4px);width:100%}.tp-tbiv_b:hover{background-color:var(--cnt-bg-h)}.tp-tbiv_b:focus{background-color:var(--cnt-bg-f)}.tp-tbiv_b:active{background-color:var(--cnt-bg-a)}.tp-tbiv_b:disabled{opacity:.5}.tp-tbiv_t{color:var(--cnt-fg);height:calc(var(--bld-us) + 4px);line-height:calc(var(--bld-us) + 4px);opacity:.5;overflow:hidden;text-overflow:ellipsis}.tp-tbiv.tp-tbiv-sel .tp-tbiv_t{opacity:1}.tp-txtv{position:relative}.tp-txtv_i{padding:0 4px}.tp-txtv.tp-txtv-fst .tp-txtv_i{border-bottom-right-radius:0;border-top-right-radius:0}.tp-txtv.tp-txtv-mid .tp-txtv_i{border-radius:0}.tp-txtv.tp-txtv-lst .tp-txtv_i{border-bottom-left-radius:0;border-top-left-radius:0}.tp-txtv.tp-txtv-num .tp-txtv_i{text-align:right}.tp-txtv.tp-txtv-drg .tp-txtv_i{opacity:.3}.tp-txtv_k{cursor:pointer;height:100%;left:-3px;position:absolute;top:0;width:12px}.tp-txtv_k::before{background-color:var(--in-fg);border-radius:1px;bottom:0;content:"";height:calc(var(--bld-us) - 4px);left:50%;margin-bottom:auto;margin-left:-1px;margin-top:auto;opacity:.1;position:absolute;top:0;transition:border-radius .1s,height .1s,transform .1s,width .1s;width:2px}.tp-txtv_k:hover::before,.tp-txtv.tp-txtv-drg .tp-txtv_k::before{opacity:1}.tp-txtv.tp-txtv-drg .tp-txtv_k::before{border-radius:50%;height:4px;transform:translateX(-1px);width:4px}.tp-txtv_g{bottom:0;display:block;height:8px;left:50%;margin:auto;overflow:visible;pointer-events:none;position:absolute;top:0;visibility:hidden;width:100%}.tp-txtv.tp-txtv-drg .tp-txtv_g{visibility:visible}.tp-txtv_gb{fill:none;stroke:var(--in-fg);stroke-dasharray:1}.tp-txtv_gh{fill:none;stroke:var(--in-fg)}.tp-txtv .tp-ttv{margin-left:6px;visibility:hidden}.tp-txtv.tp-txtv-drg .tp-ttv{visibility:visible}.tp-ttv{background-color:var(--in-fg);border-radius:var(--elm-br);color:var(--bs-bg);padding:2px 4px;pointer-events:none;position:absolute;transform:translate(-50%, -100%)}.tp-ttv::before{border-color:var(--in-fg) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);border-style:solid;border-width:2px;box-sizing:border-box;content:"";font-size:.9em;height:4px;left:50%;margin-left:-2px;position:absolute;top:100%;width:4px}.tp-rotv{background-color:var(--bs-bg);border-radius:var(--bs-br);box-shadow:0 2px 4px var(--bs-sh);font-family:var(--font-family);font-size:11px;font-weight:500;line-height:1;text-align:left}.tp-rotv_b{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br);border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br);padding-left:calc(4px + var(--bld-us) + var(--cnt-h-p));text-align:center}.tp-rotv.tp-rotv-expanded .tp-rotv_b{border-bottom-left-radius:0;border-bottom-right-radius:0}.tp-rotv.tp-rotv-not .tp-rotv_b{display:none}.tp-rotv_c>.tp-fldv.tp-v-lst>.tp-fldv_c,.tp-rotv_c>.tp-tabv.tp-v-lst>.tp-tabv_c{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c>.tp-fldv.tp-v-lst:not(.tp-fldv-expanded)>.tp-fldv_b{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c .tp-fldv.tp-v-vlst:not(.tp-fldv-expanded)>.tp-fldv_b{border-bottom-right-radius:var(--bs-br)}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-fldv.tp-v-fst{margin-top:calc(-1*var(--cnt-v-p))}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-fldv.tp-v-fst>.tp-fldv_b{border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br)}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst{margin-top:calc(-1*var(--cnt-v-p))}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst>.tp-tabv_i{border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br)}.tp-rotv.tp-v-disabled,.tp-rotv .tp-v-disabled{pointer-events:none}.tp-rotv.tp-v-hidden,.tp-rotv .tp-v-hidden{display:none}'),this.pool_.getAll().forEach(e=>{this.embedPluginStyle_(e)}),this.registerPlugin({plugins:[yl,bl,Mn,Cl]})}}const kl=new a("3.1.1");u.BladeApi=d,u.ButtonApi=V,u.FolderApi=xn,u.InputBindingApi=ye,u.ListApi=Rr,u.MonitorBindingApi=st,u.Pane=El,u.SeparatorApi=En,u.SliderApi=Fr,u.TabApi=ns,u.TabPageApi=kn,u.TextApi=Br,u.TpChangeEvent=h,u.VERSION=kl,Object.defineProperty(u,"__esModule",{value:!0})})})(Ss,Ss.exports);var Xn={exports:{}};(function(M,l){(function(u,a){a(l)})(er,function(u){class a{constructor(s){this.controller_=s}get element(){return this.controller_.view.element}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(s){this.controller_.viewProps.set("disabled",s)}get hidden(){return this.controller_.viewProps.get("hidden")}set hidden(s){this.controller_.viewProps.set("hidden",s)}dispose(){this.controller_.viewProps.set("disposed",!0)}}class d{constructor(s){this.target=s}}class m extends d{constructor(s,r,c,b){super(s),this.value=r,this.presetKey=c,this.last=b??!0}}function h(o){return o}function f(o){return o==null}const v={alreadydisposed:()=>"View has been already disposed",invalidparams:o=>`Invalid parameters for '${o.name}'`,nomatchingcontroller:o=>`No matching controller for '${o.key}'`,nomatchingview:o=>`No matching view for '${JSON.stringify(o.params)}'`,notbindable:()=>"Value is not bindable",propertynotfound:o=>`Property '${o.name}' not found`,shouldneverhappen:()=>"This error should never happen"};class w{constructor(s){var r;this.message=(r=v[s.type](s.context))!==null&&r!==void 0?r:"Unexpected error",this.name=this.constructor.name,this.stack=new Error(this.message).stack,this.type=s.type}static alreadyDisposed(){return new w({type:"alreadydisposed"})}static notBindable(){return new w({type:"notbindable"})}static propertyNotFound(s){return new w({type:"propertynotfound",context:{name:s}})}static shouldNeverHappen(){return new w({type:"shouldneverhappen"})}}class P{constructor(){this.observers_={}}on(s,r){let c=this.observers_[s];return c||(c=this.observers_[s]=[]),c.push({handler:r}),this}off(s,r){const c=this.observers_[s];return c&&(this.observers_[s]=c.filter(b=>b.handler!==r)),this}emit(s,r){const c=this.observers_[s];c&&c.forEach(b=>{b.handler(r)})}}const _="tp";function k(o){return(r,c)=>[_,"-",o,"v",r?`_${r}`:"",c?`-${c}`:""].join("")}function A(o,s){return r=>s(o(r))}function T(o){return o.rawValue}function I(o,s){o.emitter.on("change",A(T,s)),s(o.rawValue)}function V(o,s,r){I(o.value(s),r)}function D(o,s,r){r?o.classList.add(s):o.classList.remove(s)}function Y(o,s){return r=>{D(o,s,r)}}function R(o,s){I(o,r=>{s.textContent=r??""})}const oe=k("btn");class he{constructor(s,r){this.element=s.createElement("div"),this.element.classList.add(oe()),r.viewProps.bindClassModifiers(this.element);const c=s.createElement("button");c.classList.add(oe("b")),r.viewProps.bindDisabled(c),this.element.appendChild(c),this.buttonElement=c;const b=s.createElement("div");b.classList.add(oe("t")),R(r.props.value("title"),b),this.buttonElement.appendChild(b)}}class se{constructor(s,r){this.emitter=new P,this.onClick_=this.onClick_.bind(this),this.props=r.props,this.viewProps=r.viewProps,this.view=new he(s,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class W{constructor(s,r){var c;this.constraint_=r==null?void 0:r.constraint,this.equals_=(c=r==null?void 0:r.equals)!==null&&c!==void 0?c:(b,x)=>b===x,this.emitter=new P,this.rawValue_=s}get constraint(){return this.constraint_}get rawValue(){return this.rawValue_}set rawValue(s){this.setRawValue(s,{forceEmit:!1,last:!0})}setRawValue(s,r){const c=r??{forceEmit:!1,last:!0},b=this.constraint_?this.constraint_.constrain(s):s;this.equals_(this.rawValue_,b)&&!c.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=b,this.emitter.emit("change",{options:c,rawValue:b,sender:this}))}}class G{constructor(s){this.emitter=new P,this.value_=s}get rawValue(){return this.value_}set rawValue(s){this.setRawValue(s,{forceEmit:!1,last:!0})}setRawValue(s,r){const c=r??{forceEmit:!1,last:!0};this.value_===s&&!c.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.value_=s,this.emitter.emit("change",{options:c,rawValue:this.value_,sender:this}))}}function te(o,s){const r=s==null?void 0:s.constraint,c=s==null?void 0:s.equals;return!r&&!c?new G(o):new W(o,s)}class ie{constructor(s){this.emitter=new P,this.valMap_=s;for(const r in this.valMap_)this.valMap_[r].emitter.on("change",()=>{this.emitter.emit("change",{key:r,sender:this})})}static createCore(s){return Object.keys(s).reduce((c,b)=>Object.assign(c,{[b]:te(s[b])}),{})}static fromObject(s){const r=this.createCore(s);return new ie(r)}get(s){return this.valMap_[s].rawValue}set(s,r){this.valMap_[s].rawValue=r}value(s){return this.valMap_[s]}}function _e(o,s){const c=Object.keys(s).reduce((b,x)=>{if(b===void 0)return;const L=s[x],O=L(o[x]);return O.succeeded?Object.assign(Object.assign({},b),{[x]:O.value}):void 0},{});return c}function Pe(o,s){return o.reduce((r,c)=>{if(r===void 0)return;const b=s(c);if(!(!b.succeeded||b.value===void 0))return[...r,b.value]},[])}function me(o){return o===null?!1:typeof o=="object"}function de(o){return s=>r=>{if(!s&&r===void 0)return{succeeded:!1,value:void 0};if(s&&r===void 0)return{succeeded:!0,value:void 0};const c=o(r);return c!==void 0?{succeeded:!0,value:c}:{succeeded:!1,value:void 0}}}function be(o){return{custom:s=>de(s)(o),boolean:de(s=>typeof s=="boolean"?s:void 0)(o),number:de(s=>typeof s=="number"?s:void 0)(o),string:de(s=>typeof s=="string"?s:void 0)(o),function:de(s=>typeof s=="function"?s:void 0)(o),constant:s=>de(r=>r===s?s:void 0)(o),raw:de(s=>s)(o),object:s=>de(r=>{if(me(r))return _e(r,s)})(o),array:s=>de(r=>{if(Array.isArray(r))return Pe(r,s)})(o)}}const Z={optional:be(!0),required:be(!1)};function j(o,s){const r=Z.required.object(s)(o);return r.succeeded?r.value:void 0}function ut(o){return o&&o.parentElement&&o.parentElement.removeChild(o),null}function Yt(){return["veryfirst","first","last","verylast"]}const Xt=k(""),we={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class Tt{constructor(s){this.parent_=null,this.blade=s.blade,this.view=s.view,this.viewProps=s.viewProps;const r=this.view.element;this.blade.value("positions").emitter.on("change",()=>{Yt().forEach(c=>{r.classList.remove(Xt(void 0,we[c]))}),this.blade.get("positions").forEach(c=>{r.classList.add(Xt(void 0,we[c]))})}),this.viewProps.handleDispose(()=>{ut(r)})}get parent(){return this.parent_}}const q="http://www.w3.org/2000/svg";function ae(o){o.offsetHeight}function bn(o,s){const r=o.style.transition;o.style.transition="none",s(),o.style.transition=r}function Wt(o){return o.ontouchstart!==void 0}function At(o){for(;o.childNodes.length>0;)o.removeChild(o.childNodes[0])}function Vt(o){return o.relatedTarget?o.relatedTarget:"explicitOriginalTarget"in o?o.explicitOriginalTarget:null}const Ee=k("lbl");function ke(o,s){const r=o.createDocumentFragment();return s.split(`
|
|
18
|
-
`).map(b=>o.createTextNode(b)).forEach((b,x)=>{x>0&&r.appendChild(o.createElement("br")),r.appendChild(b)}),r}class et{constructor(s,r){this.element=s.createElement("div"),this.element.classList.add(Ee()),r.viewProps.bindClassModifiers(this.element);const c=s.createElement("div");c.classList.add(Ee("l")),V(r.props,"label",x=>{f(x)?this.element.classList.add(Ee(void 0,"nol")):(this.element.classList.remove(Ee(void 0,"nol")),At(c),c.appendChild(ke(s,x)))}),this.element.appendChild(c),this.labelElement=c;const b=s.createElement("div");b.classList.add(Ee("v")),this.element.appendChild(b),this.valueElement=b}}class tt extends Tt{constructor(s,r){const c=r.valueController.viewProps;super(Object.assign(Object.assign({},r),{view:new et(s,{props:r.props,viewProps:c}),viewProps:c})),this.props=r.props,this.valueController=r.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class dt extends Tt{constructor(s){super(s),this.value=s.value}}class ht extends ie{constructor(s){super(s)}static create(s){const r={completed:!0,expanded:s,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null},c=ie.createCore(r);return new ht(c)}get styleExpanded(){var s;return(s=this.get("temporaryExpanded"))!==null&&s!==void 0?s:this.get("expanded")}get styleHeight(){if(!this.styleExpanded)return"0";const s=this.get("expandedHeight");return this.get("shouldFixHeight")&&!f(s)?`${s}px`:"auto"}bindExpandedClass(s,r){const c=()=>{this.styleExpanded?s.classList.add(r):s.classList.remove(r)};V(this,"expanded",c),V(this,"temporaryExpanded",c)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function gn(o){return ht.create(o)}function _n(o,s){let r=0;return bn(s,()=>{o.set("expandedHeight",null),o.set("temporaryExpanded",!0),ae(s),r=s.clientHeight,o.set("temporaryExpanded",null),ae(s)}),r}function Nt(o,s){s.style.height=o.styleHeight}function qe(o,s){o.value("expanded").emitter.on("beforechange",()=>{o.set("completed",!1),f(o.get("expandedHeight"))&&o.set("expandedHeight",_n(o,s)),o.set("shouldFixHeight",!0),ae(s)}),o.emitter.on("change",()=>{Nt(o,s)}),Nt(o,s),s.addEventListener("transitionend",r=>{r.propertyName==="height"&&o.cleanUpTransition()})}class nt{constructor(s,r){const c=k(r.viewName);this.element=s.createElement("div"),this.element.classList.add(c()),r.viewProps.bindClassModifiers(this.element)}}class He extends dt{constructor(s,r){const c=r.valueController.viewProps;super(Object.assign(Object.assign({},r),{value:r.valueController.value,view:new et(s,{props:r.props,viewProps:c}),viewProps:c})),this.props=r.props,this.valueController=r.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}const Zt=k("");function Qt(o,s){return Y(o,Zt(void 0,s))}class Oe extends ie{constructor(s){super(s)}static create(s){var r,c;const b=s??{},x={disabled:(r=b.disabled)!==null&&r!==void 0?r:!1,disposed:!1,hidden:(c=b.hidden)!==null&&c!==void 0?c:!1},L=ie.createCore(x);return new Oe(L)}bindClassModifiers(s){V(this,"disabled",Qt(s,"disabled")),V(this,"hidden",Qt(s,"hidden"))}bindDisabled(s){V(this,"disabled",r=>{s.disabled=r})}bindTabIndex(s){V(this,"disabled",r=>{s.tabIndex=r?-1:0})}handleDispose(s){this.value("disposed").emitter.on("change",r=>{r&&s()})}}class Ye{constructor(){this.disabled=!1,this.emitter=new P}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class wn{constructor(s,r){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=s,this.emitter=new P,this.interval_=r,this.setTimer_()}get disabled(){return this.disabled_}set disabled(s){this.disabled_=s,this.disabled_?this.clearTimer_():this.setTimer_()}dispose(){this.clearTimer_()}clearTimer_(){if(this.timerId_===null)return;const s=this.doc_.defaultView;s&&s.clearInterval(this.timerId_),this.timerId_=null}setTimer_(){if(this.clearTimer_(),this.interval_<=0)return;const s=this.doc_.defaultView;s&&(this.timerId_=s.setInterval(this.onTick_,this.interval_))}onTick_(){this.disabled_||this.emitter.emit("tick",{sender:this})}}class Ot{constructor(s){this.constraints=s}constrain(s){return this.constraints.reduce((r,c)=>c.constrain(r),s)}}function Ie(o,s){if(o instanceof s)return o;if(o instanceof Ot){const r=o.constraints.reduce((c,b)=>c||(b instanceof s?b:null),null);if(r)return r}return null}class mt{constructor(s){this.maxValue=s.max,this.minValue=s.min}constrain(s){let r=s;return f(this.minValue)||(r=Math.max(r,this.minValue)),f(this.maxValue)||(r=Math.min(r,this.maxValue)),r}}class Me{constructor(s,r=0){this.step=s,this.origin=r}constrain(s){const r=this.origin%this.step,c=Math.round((s-r)/this.step);return r+c*this.step}}const Fe=k("pop");class Be{constructor(s,r){this.element=s.createElement("div"),this.element.classList.add(Fe()),r.viewProps.bindClassModifiers(this.element),I(r.shows,Y(this.element,Fe(void 0,"v")))}}class E{constructor(s,r){this.shows=te(!1),this.viewProps=r.viewProps,this.view=new Be(s,{shows:this.shows,viewProps:this.viewProps})}}const N=k("txt");class U{constructor(s,r){this.onChange_=this.onChange_.bind(this),this.element=s.createElement("div"),this.element.classList.add(N()),r.viewProps.bindClassModifiers(this.element),this.props_=r.props,this.props_.emitter.on("change",this.onChange_);const c=s.createElement("input");c.classList.add(N("i")),c.type="text",r.viewProps.bindDisabled(c),this.element.appendChild(c),this.inputElement=c,r.value.emitter.on("change",this.onChange_),this.value_=r.value,this.refresh()}refresh(){const s=this.props_.get("formatter");this.inputElement.value=s(this.value_.rawValue)}onChange_(){this.refresh()}}class X{constructor(s,r){this.onInputChange_=this.onInputChange_.bind(this),this.parser_=r.parser,this.props=r.props,this.value=r.value,this.viewProps=r.viewProps,this.view=new U(s,{props:r.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(s){const c=s.currentTarget.value,b=this.parser_(c);f(b)||(this.value.rawValue=b),this.view.refresh()}}function le(o){return o==="false"?!1:!!o}class Le{constructor(s){this.text=s}evaluate(){return Number(this.text)}toString(){return this.text}}const vt={"**":(o,s)=>Math.pow(o,s),"*":(o,s)=>o*s,"/":(o,s)=>o/s,"%":(o,s)=>o%s,"+":(o,s)=>o+s,"-":(o,s)=>o-s,"<<":(o,s)=>o<<s,">>":(o,s)=>o>>s,">>>":(o,s)=>o>>>s,"&":(o,s)=>o&s,"^":(o,s)=>o^s,"|":(o,s)=>o|s};class Jt{constructor(s,r,c){this.left=r,this.operator=s,this.right=c}evaluate(){const s=vt[this.operator];if(!s)throw new Error(`unexpected binary operator: '${this.operator}`);return s(this.left.evaluate(),this.right.evaluate())}toString(){return["b(",this.left.toString(),this.operator,this.right.toString(),")"].join(" ")}}const xe={"+":o=>o,"-":o=>-o,"~":o=>~o};class ye{constructor(s,r){this.operator=s,this.expression=r}evaluate(){const s=xe[this.operator];if(!s)throw new Error(`unexpected unary operator: '${this.operator}`);return s(this.expression.evaluate())}toString(){return["u(",this.operator,this.expression.toString(),")"].join(" ")}}function Se(o){return(s,r)=>{for(let c=0;c<o.length;c++){const b=o[c](s,r);if(b!=="")return b}return""}}function st(o,s){var r;const c=o.substr(s).match(/^\s+/);return(r=c&&c[0])!==null&&r!==void 0?r:""}function Xe(o,s){const r=o.substr(s,1);return r.match(/^[1-9]$/)?r:""}function It(o,s){var r;const c=o.substr(s).match(/^[0-9]+/);return(r=c&&c[0])!==null&&r!==void 0?r:""}function Dt(o,s){const r=It(o,s);if(r!=="")return r;const c=o.substr(s,1);if(s+=1,c!=="-"&&c!=="+")return"";const b=It(o,s);return b===""?"":c+b}function en(o,s){const r=o.substr(s,1);if(s+=1,r.toLowerCase()!=="e")return"";const c=Dt(o,s);return c===""?"":r+c}function Rt(o,s){const r=o.substr(s,1);if(r==="0")return r;const c=Xe(o,s);return s+=c.length,c===""?"":c+It(o,s)}function xn(o,s){const r=Rt(o,s);if(s+=r.length,r==="")return"";const c=o.substr(s,1);if(s+=c.length,c!==".")return"";const b=It(o,s);return s+=b.length,r+c+b+en(o,s)}function yn(o,s){const r=o.substr(s,1);if(s+=r.length,r!==".")return"";const c=It(o,s);return s+=c.length,c===""?"":r+c+en(o,s)}function As(o,s){const r=Rt(o,s);return s+=r.length,r===""?"":r+en(o,s)}const Vs=Se([xn,yn,As]);function Ns(o,s){var r;const c=o.substr(s).match(/^[01]+/);return(r=c&&c[0])!==null&&r!==void 0?r:""}function Os(o,s){const r=o.substr(s,2);if(s+=r.length,r.toLowerCase()!=="0b")return"";const c=Ns(o,s);return c===""?"":r+c}function Cn(o,s){var r;const c=o.substr(s).match(/^[0-7]+/);return(r=c&&c[0])!==null&&r!==void 0?r:""}function Is(o,s){const r=o.substr(s,2);if(s+=r.length,r.toLowerCase()!=="0o")return"";const c=Cn(o,s);return c===""?"":r+c}function Ds(o,s){var r;const c=o.substr(s).match(/^[0-9a-f]+/i);return(r=c&&c[0])!==null&&r!==void 0?r:""}function Ft(o,s){const r=o.substr(s,2);if(s+=r.length,r.toLowerCase()!=="0x")return"";const c=Ds(o,s);return c===""?"":r+c}const Zn=Se([Os,Is,Ft]),Rs=Se([Zn,Vs]);function Pn(o,s){const r=Rs(o,s);return s+=r.length,r===""?null:{evaluable:new Le(r),cursor:s}}function Fs(o,s){const r=o.substr(s,1);if(s+=r.length,r!=="(")return null;const c=es(o,s);if(!c)return null;s=c.cursor,s+=st(o,s).length;const b=o.substr(s,1);return s+=b.length,b!==")"?null:{evaluable:c.evaluable,cursor:s}}function ft(o,s){var r;return(r=Pn(o,s))!==null&&r!==void 0?r:Fs(o,s)}function En(o,s){const r=ft(o,s);if(r)return r;const c=o.substr(s,1);if(s+=c.length,c!=="+"&&c!=="-"&&c!=="~")return null;const b=En(o,s);return b?(s=b.cursor,{cursor:s,evaluable:new ye(c,b.evaluable)}):null}function Qn(o,s,r){r+=st(s,r).length;const c=o.filter(b=>s.startsWith(b,r))[0];return c?(r+=c.length,r+=st(s,r).length,{cursor:r,operator:c}):null}function Bs(o,s){return(r,c)=>{const b=o(r,c);if(!b)return null;c=b.cursor;let x=b.evaluable;for(;;){const L=Qn(s,r,c);if(!L)break;c=L.cursor;const O=o(r,c);if(!O)return null;c=O.cursor,x=new Jt(L.operator,x,O.evaluable)}return x?{cursor:c,evaluable:x}:null}}const Jn=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((o,s)=>Bs(o,s),En);function es(o,s){return s+=st(o,s).length,Jn(o,s)}function js(o){const s=es(o,0);return!s||s.cursor+st(o,s.cursor).length!==o.length?null:s.evaluable}function Bt(o){var s;const r=js(o);return(s=r==null?void 0:r.evaluate())!==null&&s!==void 0?s:null}function We(o){if(typeof o=="number")return o;if(typeof o=="string"){const s=Bt(o);if(!f(s))return s}return 0}function ue(o){return s=>s.toFixed(Math.max(Math.min(o,20),0))}const Us=ue(0);function tn(o){return Us(o)+"%"}function ts(o){return String(o)}function kn(o,s){for(;o.length<s;)o.push(void 0)}function ns(o){const s=[];return kn(s,o),te(s)}function ss(o){const s=o.indexOf(void 0);return s<0?o:o.slice(0,s)}function zs(o,s){const r=[...ss(o),s];return r.length>o.length?r.splice(0,r.length-o.length):kn(r,o.length),r}function jt({primary:o,secondary:s,forward:r,backward:c}){let b=!1;function x(L){b||(b=!0,L(),b=!1)}o.emitter.on("change",L=>{x(()=>{s.setRawValue(r(o,s),L.options)})}),s.emitter.on("change",L=>{x(()=>{o.setRawValue(c(o,s),L.options)}),x(()=>{s.setRawValue(r(o,s),L.options)})}),x(()=>{s.setRawValue(r(o,s),{forceEmit:!1,last:!0})})}function bt(o,s){const r=o*(s.altKey?.1:1)*(s.shiftKey?10:1);return s.upKey?+r:s.downKey?-r:0}function Ut(o){return{altKey:o.altKey,downKey:o.key==="ArrowDown",shiftKey:o.shiftKey,upKey:o.key==="ArrowUp"}}function Mn(o){return{altKey:o.altKey,downKey:o.key==="ArrowLeft",shiftKey:o.shiftKey,upKey:o.key==="ArrowRight"}}function Ks(o){return o==="ArrowUp"||o==="ArrowDown"}function is(o){return Ks(o)||o==="ArrowLeft"||o==="ArrowRight"}function Ln(o,s){var r,c;const b=s.ownerDocument.defaultView,x=s.getBoundingClientRect();return{x:o.pageX-(((r=b&&b.scrollX)!==null&&r!==void 0?r:0)+x.left),y:o.pageY-(((c=b&&b.scrollY)!==null&&c!==void 0?c:0)+x.top)}}class Ze{constructor(s){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_=s,this.emitter=new P,s.addEventListener("touchstart",this.onTouchStart_,{passive:!1}),s.addEventListener("touchmove",this.onTouchMove_,{passive:!0}),s.addEventListener("touchend",this.onTouchEnd_),s.addEventListener("mousedown",this.onMouseDown_)}computePosition_(s){const r=this.elem_.getBoundingClientRect();return{bounds:{width:r.width,height:r.height},point:s?{x:s.x,y:s.y}:null}}onMouseDown_(s){var r;s.preventDefault(),(r=s.currentTarget)===null||r===void 0||r.focus();const c=this.elem_.ownerDocument;c.addEventListener("mousemove",this.onDocumentMouseMove_),c.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:s.altKey,data:this.computePosition_(Ln(s,this.elem_)),sender:this,shiftKey:s.shiftKey})}onDocumentMouseMove_(s){this.emitter.emit("move",{altKey:s.altKey,data:this.computePosition_(Ln(s,this.elem_)),sender:this,shiftKey:s.shiftKey})}onDocumentMouseUp_(s){const r=this.elem_.ownerDocument;r.removeEventListener("mousemove",this.onDocumentMouseMove_),r.removeEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("up",{altKey:s.altKey,data:this.computePosition_(Ln(s,this.elem_)),sender:this,shiftKey:s.shiftKey})}onTouchStart_(s){s.preventDefault();const r=s.targetTouches.item(0),c=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:s.altKey,data:this.computePosition_(r?{x:r.clientX-c.left,y:r.clientY-c.top}:void 0),sender:this,shiftKey:s.shiftKey}),this.lastTouch_=r}onTouchMove_(s){const r=s.targetTouches.item(0),c=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:s.altKey,data:this.computePosition_(r?{x:r.clientX-c.left,y:r.clientY-c.top}:void 0),sender:this,shiftKey:s.shiftKey}),this.lastTouch_=r}onTouchEnd_(s){var r;const c=(r=s.targetTouches.item(0))!==null&&r!==void 0?r:this.lastTouch_,b=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:s.altKey,data:this.computePosition_(c?{x:c.clientX-b.left,y:c.clientY-b.top}:void 0),sender:this,shiftKey:s.shiftKey})}}function ee(o,s,r,c,b){const x=(o-s)/(r-s);return c+x*(b-c)}function gt(o){return String(o.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function Ne(o,s,r){return Math.min(Math.max(o,s),r)}const ve=k("txt");class Sn{constructor(s,r){this.onChange_=this.onChange_.bind(this),this.props_=r.props,this.props_.emitter.on("change",this.onChange_),this.element=s.createElement("div"),this.element.classList.add(ve(),ve(void 0,"num")),r.arrayPosition&&this.element.classList.add(ve(void 0,r.arrayPosition)),r.viewProps.bindClassModifiers(this.element);const c=s.createElement("input");c.classList.add(ve("i")),c.type="text",r.viewProps.bindDisabled(c),this.element.appendChild(c),this.inputElement=c,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=r.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add(ve()),this.inputElement.classList.add(ve("i"));const b=s.createElement("div");b.classList.add(ve("k")),this.element.appendChild(b),this.knobElement=b;const x=s.createElementNS(q,"svg");x.classList.add(ve("g")),this.knobElement.appendChild(x);const L=s.createElementNS(q,"path");L.classList.add(ve("gb")),x.appendChild(L),this.guideBodyElem_=L;const O=s.createElementNS(q,"path");O.classList.add(ve("gh")),x.appendChild(O),this.guideHeadElem_=O;const F=s.createElement("div");F.classList.add(k("tt")()),this.knobElement.appendChild(F),this.tooltipElem_=F,r.value.emitter.on("change",this.onChange_),this.value=r.value,this.refresh()}onDraggingChange_(s){if(s.rawValue===null){this.element.classList.remove(ve(void 0,"drg"));return}this.element.classList.add(ve(void 0,"drg"));const r=s.rawValue/this.props_.get("draggingScale"),c=r+(r>0?-1:r<0?1:0),b=Ne(-c,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${c+b},0 L${c},4 L${c+b},8`,`M ${r},-1 L${r},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${r},4`);const x=this.props_.get("formatter");this.tooltipElem_.textContent=x(this.value.rawValue),this.tooltipElem_.style.left=`${r}px`}refresh(){const s=this.props_.get("formatter");this.inputElement.value=s(this.value.rawValue)}onChange_(){this.refresh()}}class Gs{constructor(s,r){var c;this.originRawValue_=0,this.onInputChange_=this.onInputChange_.bind(this),this.onInputKeyDown_=this.onInputKeyDown_.bind(this),this.onInputKeyUp_=this.onInputKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=r.baseStep,this.parser_=r.parser,this.props=r.props,this.sliderProps_=(c=r.sliderProps)!==null&&c!==void 0?c:null,this.value=r.value,this.viewProps=r.viewProps,this.dragging_=te(null),this.view=new Sn(s,{arrayPosition:r.arrayPosition,dragging:this.dragging_,props:this.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.inputElement.addEventListener("keydown",this.onInputKeyDown_),this.view.inputElement.addEventListener("keyup",this.onInputKeyUp_);const b=new Ze(this.view.knobElement);b.emitter.on("down",this.onPointerDown_),b.emitter.on("move",this.onPointerMove_),b.emitter.on("up",this.onPointerUp_)}constrainValue_(s){var r,c;const b=(r=this.sliderProps_)===null||r===void 0?void 0:r.get("minValue"),x=(c=this.sliderProps_)===null||c===void 0?void 0:c.get("maxValue");let L=s;return b!==void 0&&(L=Math.max(L,b)),x!==void 0&&(L=Math.min(L,x)),L}onInputChange_(s){const c=s.currentTarget.value,b=this.parser_(c);f(b)||(this.value.rawValue=this.constrainValue_(b)),this.view.refresh()}onInputKeyDown_(s){const r=bt(this.baseStep_,Ut(s));r!==0&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+r),{forceEmit:!1,last:!1})}onInputKeyUp_(s){bt(this.baseStep_,Ut(s))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}onPointerDown_(){this.originRawValue_=this.value.rawValue,this.dragging_.rawValue=0}computeDraggingValue_(s){if(!s.point)return null;const r=s.point.x-s.bounds.width/2;return this.constrainValue_(this.originRawValue_+r*this.props.get("draggingScale"))}onPointerMove_(s){const r=this.computeDraggingValue_(s.data);r!==null&&(this.value.setRawValue(r,{forceEmit:!1,last:!1}),this.dragging_.rawValue=this.value.rawValue-this.originRawValue_)}onPointerUp_(s){const r=this.computeDraggingValue_(s.data);r!==null&&(this.value.setRawValue(r,{forceEmit:!0,last:!0}),this.dragging_.rawValue=null)}}function it(o,s){o.write(s)}function rs(o){const s=o?Ie(o,Me):null;return s?s.step:null}function $s(o,s){const r=o&&Ie(o,Me);return r?gt(r.step):Math.max(gt(s),2)}function Tn(o){const s=rs(o);return s??1}function os(o,s){var r;const c=o&&Ie(o,Me),b=Math.abs((r=c==null?void 0:c.step)!==null&&r!==void 0?r:s);return b===0?.1:Math.pow(10,Math.floor(Math.log10(b))-1)}function nn(o){return[o[0],o[1],o[2]]}function zt(o){const s=Ne(Math.floor(o),0,255).toString(16);return s.length===1?`0${s}`:s}function qs(o,s="#"){const r=nn(o.getComponents("rgb")).map(zt).join("");return`${s}${r}`}function as(o,s="#"){const r=o.getComponents("rgb"),c=[r[0],r[1],r[2],r[3]*255].map(zt).join("");return`${s}${c}`}function ls(o,s){const r=ue(s==="float"?2:0);return`rgb(${nn(o.getComponents("rgb",s)).map(b=>r(b)).join(", ")})`}function Hs(o){return s=>ls(s,o)}function Ys(o,s){const r=ue(2),c=ue(s==="float"?2:0);return`rgba(${o.getComponents("rgb",s).map((x,L)=>(L===3?r:c)(x)).join(", ")})`}function Xs(o){return s=>Ys(s,o)}function Ws(o){const s=[ue(0),tn,tn];return`hsl(${nn(o.getComponents("hsl")).map((c,b)=>s[b](c)).join(", ")})`}function Zs(o){const s=[ue(0),tn,tn,ue(2)];return`hsla(${o.getComponents("hsl").map((c,b)=>s[b](c)).join(", ")})`}function An(o,s){const r=ue(s==="float"?2:0),c=["r","g","b"];return`{${nn(o.getComponents("rgb",s)).map((x,L)=>`${c[L]}: ${r(x)}`).join(", ")}}`}function Kt(o){return s=>An(s,o)}function Qs(o,s){const r=ue(2),c=ue(s==="float"?2:0),b=["r","g","b","a"];return`{${o.getComponents("rgb",s).map((L,O)=>{const F=O===3?r:c;return`${b[O]}: ${F(L)}`}).join(", ")}}`}function Gt(o){return s=>Qs(s,o)}[...["int","float"].reduce((o,s)=>[...o,{format:{alpha:!1,mode:"rgb",notation:"func",type:s},stringifier:Hs(s)},{format:{alpha:!0,mode:"rgb",notation:"func",type:s},stringifier:Xs(s)},{format:{alpha:!1,mode:"rgb",notation:"object",type:s},stringifier:Kt(s)},{format:{alpha:!0,mode:"rgb",notation:"object",type:s},stringifier:Gt(s)}],[])];class Js{constructor(s){this.components=s.components,this.asm_=s.assembly}constrain(s){const r=this.asm_.toComponents(s).map((c,b)=>{var x,L;return(L=(x=this.components[b])===null||x===void 0?void 0:x.constrain(c))!==null&&L!==void 0?L:c});return this.asm_.fromComponents(r)}}const sn=k("pndtxt");class cs{constructor(s,r){this.textViews=r.textViews,this.element=s.createElement("div"),this.element.classList.add(sn()),this.textViews.forEach(c=>{const b=s.createElement("div");b.classList.add(sn("a")),b.appendChild(c.element),this.element.appendChild(b)})}}function ei(o,s,r){return new Gs(o,{arrayPosition:r===0?"fst":r===s.axes.length-1?"lst":"mid",baseStep:s.axes[r].baseStep,parser:s.parser,props:s.axes[r].textProps,value:te(0,{constraint:s.axes[r].constraint}),viewProps:s.viewProps})}class Vn{constructor(s,r){this.value=r.value,this.viewProps=r.viewProps,this.acs_=r.axes.map((c,b)=>ei(s,r,b)),this.acs_.forEach((c,b)=>{jt({primary:this.value,secondary:c.value,forward:x=>r.assembly.toComponents(x.rawValue)[b],backward:(x,L)=>{const O=r.assembly.toComponents(x.rawValue);return O[b]=L.rawValue,r.assembly.fromComponents(O)}})}),this.view=new cs(s,{textViews:this.acs_.map(c=>c.view)})}}function ti(o,s){return"step"in o&&!f(o.step)?new Me(o.step,s):null}function ni(o){return"max"in o&&!f(o.max)||"min"in o&&!f(o.min)?new mt({max:o.max,min:o.min}):null}const si={monitor:{defaultInterval:200,defaultLineCount:3}},Qe=k("grl");class ii{constructor(s,r){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=s.createElement("div"),this.element.classList.add(Qe()),r.viewProps.bindClassModifiers(this.element),this.formatter_=r.formatter,this.props_=r.props,this.cursor_=r.cursor,this.cursor_.emitter.on("change",this.onCursorChange_);const c=s.createElementNS(q,"svg");c.classList.add(Qe("g")),c.style.height=`calc(var(--bld-us) * ${r.lineCount})`,this.element.appendChild(c),this.svgElem_=c;const b=s.createElementNS(q,"polyline");this.svgElem_.appendChild(b),this.lineElem_=b;const x=s.createElement("div");x.classList.add(Qe("t"),k("tt")()),this.element.appendChild(x),this.tooltipElem_=x,r.value.emitter.on("change",this.onValueUpdate_),this.value=r.value,this.update_()}get graphElement(){return this.svgElem_}update_(){const s=this.svgElem_.getBoundingClientRect(),r=this.value.rawValue.length-1,c=this.props_.get("minValue"),b=this.props_.get("maxValue"),x=[];this.value.rawValue.forEach(($e,Kn)=>{if($e===void 0)return;const Gn=ee(Kn,0,r,0,s.width),at=ee($e,c,b,s.height,0);x.push([Gn,at].join(","))}),this.lineElem_.setAttributeNS(null,"points",x.join(" "));const L=this.tooltipElem_,O=this.value.rawValue[this.cursor_.rawValue];if(O===void 0){L.classList.remove(Qe("t","a"));return}const F=ee(this.cursor_.rawValue,0,r,0,s.width),pe=ee(O,c,b,s.height,0);L.style.left=`${F}px`,L.style.top=`${pe}px`,L.textContent=`${this.formatter_(O)}`,L.classList.contains(Qe("t","a"))||(L.classList.add(Qe("t","a"),Qe("t","in")),ae(L),L.classList.remove(Qe("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class ri{constructor(s,r){if(this.onGraphMouseMove_=this.onGraphMouseMove_.bind(this),this.onGraphMouseLeave_=this.onGraphMouseLeave_.bind(this),this.onGraphPointerDown_=this.onGraphPointerDown_.bind(this),this.onGraphPointerMove_=this.onGraphPointerMove_.bind(this),this.onGraphPointerUp_=this.onGraphPointerUp_.bind(this),this.props_=r.props,this.value=r.value,this.viewProps=r.viewProps,this.cursor_=te(-1),this.view=new ii(s,{cursor:this.cursor_,formatter:r.formatter,lineCount:r.lineCount,props:this.props_,value:this.value,viewProps:this.viewProps}),!Wt(s))this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_);else{const c=new Ze(this.view.element);c.emitter.on("down",this.onGraphPointerDown_),c.emitter.on("move",this.onGraphPointerMove_),c.emitter.on("up",this.onGraphPointerUp_)}}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(s){const r=this.view.element.getBoundingClientRect();this.cursor_.rawValue=Math.floor(ee(s.offsetX,0,r.width,0,this.value.rawValue.length))}onGraphPointerDown_(s){this.onGraphPointerMove_(s)}onGraphPointerMove_(s){if(!s.data.point){this.cursor_.rawValue=-1;return}this.cursor_.rawValue=Math.floor(ee(s.data.point.x,0,s.data.bounds.width,0,this.value.rawValue.length))}onGraphPointerUp_(){this.cursor_.rawValue=-1}}class oi{constructor(s){this.controller_=s}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(s){this.controller_.viewProps.set("disabled",s)}get title(){var s;return(s=this.controller_.props.get("title"))!==null&&s!==void 0?s:""}set title(s){this.controller_.props.set("title",s)}on(s,r){const c=r.bind(this);return this.controller_.emitter.on(s,()=>{c(new d(this))}),this}}class ai extends d{constructor(s,r,c){super(s),this.cell=r,this.index=c}}class li extends a{constructor(s){super(s),this.cellToApiMap_=new Map,this.emitter_=new P;const r=this.controller_.valueController;r.cellControllers.forEach((c,b)=>{const x=new oi(c);this.cellToApiMap_.set(c,x),c.emitter.on("click",()=>{const L=b%r.size[0],O=Math.floor(b/r.size[0]);this.emitter_.emit("click",{event:new ai(this,x,[L,O])})})})}cell(s,r){const c=this.controller_.valueController,b=c.cellControllers[r*c.size[0]+s];return this.cellToApiMap_.get(b)}on(s,r){const c=r.bind(this);return this.emitter_.on(s,b=>{c(b.event)}),this}}class ps{constructor(s,r){this.size=r.size;const[c,b]=this.size,x=[];for(let L=0;L<b;L++)for(let O=0;O<c;O++){const F=new se(s,{props:ie.fromObject(Object.assign({},r.cellConfig(O,L))),viewProps:Oe.create()});x.push(F)}this.cellCs_=x,this.viewProps=Oe.create(),this.viewProps.handleDispose(()=>{this.cellCs_.forEach(L=>{L.viewProps.set("disposed",!0)})}),this.view=new nt(s,{viewProps:this.viewProps,viewName:"btngrid"}),this.view.element.style.gridTemplateColumns=`repeat(${c}, 1fr)`,this.cellCs_.forEach(L=>{this.view.element.appendChild(L.view.element)})}get cellControllers(){return this.cellCs_}}const ci={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(o){const s=Z,r=j(o,{cells:s.required.function,size:s.required.array(s.required.number),view:s.required.constant("buttongrid"),label:s.optional.string});return r?{params:r}:null},controller(o){return new tt(o.document,{blade:o.blade,props:ie.fromObject({label:o.params.label}),valueController:new ps(o.document,{cellConfig:o.params.cells,size:o.params.size})})},api(o){return!(o.controller instanceof tt)||!(o.controller.valueController instanceof ps)?null:new li(o.controller)}};class pi extends a{get label(){return this.controller_.props.get("label")}set label(s){this.controller_.props.set("label",s)}get value(){return this.controller_.valueController.value.rawValue}set value(s){this.controller_.valueController.value.rawValue=s}on(s,r){const c=r.bind(this);return this.controller_.valueController.value.emitter.on(s,b=>{c(new m(this,b.rawValue,void 0,b.options.last))}),this}}function Te(o,s,r){return o*(1-r)+s*r}const us=20,ui=.001,Nn=100;function di(o,s){let r=.25,c=.5,b=-1;for(let x=0;x<us;x++){const[L,O]=o.curve(c);if(c+=r*(L<s?1:-1),b=O,r*=.5,Math.abs(s-L)<ui)break}return b}class je{constructor(s=0,r=0,c=1,b=1){this.cache_=[],this.comps_=[s,r,c,b]}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(s){return f(s)||!Array.isArray(s)?!1:typeof s[0]=="number"&&typeof s[1]=="number"&&typeof s[2]=="number"&&typeof s[3]=="number"}static equals(s,r){return s.x1===r.x1&&s.y1===r.y1&&s.x2===r.x2&&s.y2===r.y2}curve(s){const r=Te(0,this.x1,s),c=Te(0,this.y1,s),b=Te(this.x1,this.x2,s),x=Te(this.y1,this.y2,s),L=Te(this.x2,1,s),O=Te(this.y2,1,s),F=Te(r,b,s),pe=Te(c,x,s),$e=Te(b,L,s),Kn=Te(x,O,s);return[Te(F,$e,s),Te(pe,Kn,s)]}y(s){if(this.cache_.length===0){const r=[];for(let c=0;c<Nn;c++)r.push(di(this,ee(c,0,Nn-1,0,1)));this.cache_=r}return this.cache_[Math.round(ee(Ne(s,0,1),0,1,0,Nn-1))]}toObject(){return[this.comps_[0],this.comps_[1],this.comps_[2],this.comps_[3]]}}const ds={toComponents:o=>o.toObject(),fromComponents:o=>new je(...o)};function Ue(o){const s=ue(2);return`cubic-bezier(${o.toObject().map(c=>s(c)).join(", ")})`}const On=[0,.5,.5,1];function hi(o){const s=o.match(/^cubic-bezier\s*\(\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)\s*\)$/);if(!s)return new je(...On);const r=[s[1],s[2],s[3],s[4]].reduce((c,b)=>{if(!c)return null;const x=Number(b);return isNaN(x)?null:[...c,x]},[]);return new je(...r??On)}const re=k("cbz");class mi{constructor(s,r){this.element=s.createElement("div"),this.element.classList.add(re()),r.viewProps.bindClassModifiers(this.element),r.foldable.bindExpandedClass(this.element,re(void 0,"expanded")),V(r.foldable,"completed",Y(this.element,re(void 0,"cpl")));const c=s.createElement("div");c.classList.add(re("h")),this.element.appendChild(c);const b=s.createElement("button");b.classList.add(re("b")),r.viewProps.bindDisabled(b);const x=s.createElementNS(q,"svg");x.innerHTML='<path d="M2 13C8 13 8 3 14 3"/>',b.appendChild(x),c.appendChild(b),this.buttonElement=b;const L=s.createElement("div");if(L.classList.add(re("t")),c.appendChild(L),this.textElement=L,r.pickerLayout==="inline"){const O=s.createElement("div");O.classList.add(re("p")),this.element.appendChild(O),this.pickerElement=O}else this.pickerElement=null}}const _t=k("cbzp");class hs{constructor(s,r){this.element=s.createElement("div"),this.element.classList.add(_t()),r.viewProps.bindClassModifiers(this.element);const c=s.createElement("div");c.classList.add(_t("g")),this.element.appendChild(c),this.graphElement=c;const b=s.createElement("div");b.classList.add(_t("t")),this.element.appendChild(b),this.textElement=b}}function rn(o,s){const r=new MutationObserver(b=>{for(const x of b)x.type==="childList"&&x.addedNodes.forEach(L=>{L.contains(L)&&(s(),r.disconnect())})}),c=o.ownerDocument;r.observe(c.body,{attributes:!0,childList:!0,subtree:!0})}const ze=k("cbzg");function vi(o,s){return r=>s(o(r))}class fi{constructor(s,r){this.element=s.createElement("div"),this.element.classList.add(ze()),r.viewProps.bindClassModifiers(this.element),r.viewProps.bindTabIndex(this.element);const c=s.createElement("div");c.classList.add(ze("p")),this.element.appendChild(c),this.previewElement=c;const b=s.createElementNS(q,"svg");b.classList.add(ze("g")),this.element.appendChild(b),this.svgElem_=b;const x=s.createElementNS(q,"path");x.classList.add(ze("u")),this.svgElem_.appendChild(x),this.guideElem_=x;const L=s.createElementNS(q,"polyline");L.classList.add(ze("l")),this.svgElem_.appendChild(L),this.lineElem_=L,this.handleElems_=[s.createElement("div"),s.createElement("div")],this.handleElems_.forEach(O=>{O.classList.add(ze("h")),this.element.appendChild(O)}),this.vectorElems_=[s.createElementNS(q,"line"),s.createElementNS(q,"line")],this.vectorElems_.forEach(O=>{O.classList.add(ze("v")),this.svgElem_.appendChild(O)}),this.value_=r.value,this.value_.emitter.on("change",this.onValueChange_.bind(this)),this.sel_=r.selection,this.handleElems_.forEach((O,F)=>{I(this.sel_,vi(pe=>pe===F,Y(O,ze("h","sel"))))}),rn(this.element,()=>{this.refresh()})}getVertMargin_(s){return s*.25}valueToPosition(s,r){const c=this.element.getBoundingClientRect(),b=c.width,x=c.height,L=this.getVertMargin_(x);return{x:ee(s,0,1,0,b),y:ee(r,0,1,x-L,L)}}positionToValue(s,r){const c=this.element.getBoundingClientRect(),b=c.width,x=c.height,L=this.getVertMargin_(x);return{x:Ne(ee(s,0,b,0,1),0,1),y:ee(r,x-L,L,0,1)}}refresh(){this.guideElem_.setAttributeNS(null,"d",[0,1].map(x=>{const L=this.valueToPosition(0,x),O=this.valueToPosition(1,x);return[`M ${L.x},${L.y}`,`L ${O.x},${O.y}`].join(" ")}).join(" "));const s=this.value_.rawValue,r=[];let c=0;for(;;){const x=this.valueToPosition(...s.curve(c));if(r.push([x.x,x.y].join(",")),c>=1)break;c=Math.min(c+.05,1)}this.lineElem_.setAttributeNS(null,"points",r.join(" "));const b=s.toObject();[0,1].forEach(x=>{const L=this.valueToPosition(x,x),O=this.valueToPosition(b[x*2],b[x*2+1]),F=this.vectorElems_[x];F.setAttributeNS(null,"x1",String(L.x)),F.setAttributeNS(null,"y1",String(L.y)),F.setAttributeNS(null,"x2",String(O.x)),F.setAttributeNS(null,"y2",String(O.y));const pe=this.handleElems_[x];pe.style.left=`${O.x}px`,pe.style.top=`${O.y}px`})}onValueChange_(){this.refresh()}}const ms=24,wt=400,fe=1e3,De=k("cbzprv");class Ke{constructor(s,r){this.stopped_=!0,this.startTime_=-1,this.onDispose_=this.onDispose_.bind(this),this.onTimer_=this.onTimer_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.element=s.createElement("div"),this.element.classList.add(De()),r.viewProps.bindClassModifiers(this.element);const c=s.createElementNS(q,"svg");c.classList.add(De("g")),this.element.appendChild(c),this.svgElem_=c;const b=s.createElementNS(q,"path");b.classList.add(De("t")),this.svgElem_.appendChild(b),this.ticksElem_=b;const x=s.createElement("div");x.classList.add(De("m")),this.element.appendChild(x),this.markerElem_=x,this.value_=r.value,this.value_.emitter.on("change",this.onValueChange_),r.viewProps.handleDispose(this.onDispose_),rn(this.element,()=>{this.refresh()})}play(){this.stop(),this.updateMarker_(0),this.markerElem_.classList.add(De("m","a")),this.startTime_=new Date().getTime()+wt,this.stopped_=!1,requestAnimationFrame(this.onTimer_)}stop(){this.stopped_=!0,this.markerElem_.classList.remove(De("m","a"))}onDispose_(){this.stop()}updateMarker_(s){const r=this.value_.rawValue.y(Ne(s,0,1));this.markerElem_.style.left=`${r*100}%`}refresh(){const s=this.svgElem_.getBoundingClientRect(),r=s.width,c=s.height,b=[],x=this.value_.rawValue;for(let L=0;L<ms;L++){const O=ee(L,0,ms-1,0,1),F=ee(x.y(O),0,1,0,r);b.push(`M ${F},0 v${c}`)}this.ticksElem_.setAttributeNS(null,"d",b.join(" "))}onTimer_(){if(this.startTime_===null)return;const s=new Date().getTime()-this.startTime_,r=s/fe;this.updateMarker_(r),s>fe+wt&&this.stop(),this.stopped_||requestAnimationFrame(this.onTimer_)}onValueChange_(){this.refresh(),this.play()}}function In(o,s,r,c){const b=r-o,x=c-s;return Math.sqrt(b*b+x*x)}function vs(o,s,r,c){const b=In(o,s,r,c),x=Math.atan2(c-s,r-o),L=Math.round(x/(Math.PI/4))*Math.PI/4;return{x:o+Math.cos(L)*b,y:s+Math.sin(L)*b}}class Dn{constructor(s,r){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=r.baseStep,this.value=r.value,this.sel_=te(0),this.viewProps=r.viewProps,this.view=new fi(s,{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 Ke(s,{value:this.value,viewProps:this.viewProps}),this.prevView_.element.addEventListener("mousedown",b=>{b.stopImmediatePropagation(),b.preventDefault(),this.prevView_.play()}),this.view.previewElement.appendChild(this.prevView_.element);const c=new Ze(this.view.element);c.emitter.on("down",this.onPointerDown_),c.emitter.on("move",this.onPointerMove_),c.emitter.on("up",this.onPointerUp_)}refresh(){this.view.refresh(),this.prevView_.refresh(),this.prevView_.play()}updateValue_(s,r,c){const b=this.sel_.rawValue,x=this.value.rawValue.toObject(),L=this.view.positionToValue(s.x,s.y),O=r?vs(b,b,L.x,L.y):L;x[b*2]=O.x,x[b*2+1]=O.y,this.value.setRawValue(new je(...x),c)}onPointerDown_(s){const r=s.data;if(!r.point)return;const c=this.value.rawValue,b=this.view.valueToPosition(c.x1,c.y1),x=In(r.point.x,r.point.y,b.x,b.y),L=this.view.valueToPosition(c.x2,c.y2),O=In(r.point.x,r.point.y,L.x,L.y);this.sel_.rawValue=x<=O?0:1,this.updateValue_(r.point,s.shiftKey,{forceEmit:!1,last:!1})}onPointerMove_(s){const r=s.data;r.point&&this.updateValue_(r.point,s.shiftKey,{forceEmit:!1,last:!1})}onPointerUp_(s){const r=s.data;r.point&&this.updateValue_(r.point,s.shiftKey,{forceEmit:!0,last:!0})}onKeyDown_(s){is(s.key)&&s.preventDefault();const r=this.sel_.rawValue,c=this.value.rawValue.toObject();c[r*2]+=bt(this.baseStep_,Mn(s)),c[r*2+1]+=bt(this.baseStep_,Ut(s)),this.value.setRawValue(new je(...c),{forceEmit:!1,last:!1})}onKeyUp_(s){is(s.key)&&s.preventDefault();const r=bt(this.baseStep_,Mn(s)),c=bt(this.baseStep_,Ut(s));r===0&&c===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class rt{constructor(s,r){this.value=r.value,this.viewProps=r.viewProps,this.view=new hs(s,{viewProps:this.viewProps}),this.gc_=new Dn(s,{baseStep:r.axis.baseStep,value:this.value,viewProps:this.viewProps}),this.view.graphElement.appendChild(this.gc_.view.element);const c=Object.assign(Object.assign({},r.axis),{constraint:new mt({max:1,min:0})}),b=Object.assign(Object.assign({},r.axis),{constraint:void 0});this.tc_=new Vn(s,{assembly:ds,axes:[c,b,c,b],parser:Bt,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(s=>s.inputElement)]}refresh(){this.gc_.refresh()}}class ne{constructor(s,r){this.onButtonBlur_=this.onButtonBlur_.bind(this),this.onButtonClick_=this.onButtonClick_.bind(this),this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.value=r.value,this.viewProps=r.viewProps,this.foldable_=gn(r.expanded),this.view=new mi(s,{foldable:this.foldable_,pickerLayout:r.pickerLayout,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("blur",this.onButtonBlur_),this.view.buttonElement.addEventListener("click",this.onButtonClick_),this.tc_=new X(s,{parser:hi,props:ie.fromObject({formatter:Ue}),value:this.value,viewProps:this.viewProps}),this.view.textElement.appendChild(this.tc_.view.element),this.popC_=r.pickerLayout==="popup"?new E(s,{viewProps:this.viewProps}):null;const c=new rt(s,{axis:r.axis,value:this.value,viewProps:this.viewProps});c.allFocusableElements.forEach(b=>{b.addEventListener("blur",this.onPopupChildBlur_),b.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=c,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),I(this.popC_.shows,b=>{b&&c.refresh()}),jt({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:b=>b.rawValue,backward:(b,x)=>x.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),qe(this.foldable_,this.view.pickerElement))}onButtonBlur_(s){if(!this.popC_)return;const r=s.relatedTarget;(!r||!this.popC_.view.element.contains(r))&&(this.popC_.shows.rawValue=!1)}onButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.allFocusableElements[0].focus()}onPopupChildBlur_(s){if(!this.popC_)return;const r=this.popC_.view.element,c=Vt(s);c&&r.contains(c)||c&&c===this.view.buttonElement&&!Wt(r.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(s){this.popC_&&s.key==="Escape"&&(this.popC_.shows.rawValue=!1)}}function fs(){return new Js({assembly:ds,components:[0,1,2,3].map(o=>o%2===0?new mt({min:0,max:1}):void 0)})}const ce={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(o){const s=Z,r=j(o,{value:s.required.array(s.required.number),view:s.required.constant("cubicbezier"),expanded:s.optional.boolean,label:s.optional.string,picker:s.optional.custom(c=>c==="inline"||c==="popup"?c:void 0)});return r?{params:r}:null},controller(o){var s,r;const c=new je(...o.params.value),b=te(c,{constraint:fs(),equals:je.equals}),x=new ne(o.document,{axis:{baseStep:.1,textProps:ie.fromObject({draggingScale:.01,formatter:ue(2)})},expanded:(s=o.params.expanded)!==null&&s!==void 0?s:!1,pickerLayout:(r=o.params.picker)!==null&&r!==void 0?r:"popup",value:b,viewProps:o.viewProps});return new He(o.document,{blade:o.blade,props:ie.fromObject({label:o.params.label}),valueController:x})},api(o){return!(o.controller instanceof He)||!(o.controller.valueController instanceof ne)?null:new pi(o.controller)}};class bs extends a{begin(){this.controller_.valueController.begin()}end(){this.controller_.valueController.end()}}const Ce=20;class bi{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(s){this.start_=s.getTime()}calculateFps_(s){if(this.timestamps_.length===0)return null;const r=this.timestamps_[0];return 1e3*(this.frameCount_-r.frameCount)/(s-r.time)}compactTimestamps_(){if(this.timestamps_.length<=Ce)return;const s=this.timestamps_.length-Ce;this.timestamps_.splice(0,s);const r=this.timestamps_[0].frameCount;this.timestamps_.forEach(c=>{c.frameCount-=r}),this.frameCount_-=r}end(s){if(this.start_===null)return;const r=s.getTime();this.duration_=r-this.start_,this.start_=null,this.fps_=this.calculateFps_(r),this.timestamps_.push({frameCount:this.frameCount_,time:r}),++this.frameCount_,this.compactTimestamps_()}}const Ge=k("fps");class Rn{constructor(s,r){this.element=s.createElement("div"),this.element.classList.add(Ge()),r.viewProps.bindClassModifiers(this.element),this.graphElement=s.createElement("div"),this.graphElement.classList.add(Ge("g")),this.element.appendChild(this.graphElement);const c=s.createElement("div");c.classList.add(Ge("l")),this.element.appendChild(c);const b=s.createElement("span");b.classList.add(Ge("v")),b.textContent="--",c.appendChild(b),this.valueElement=b;const x=s.createElement("span");x.classList.add(Ge("u")),x.textContent="FPS",c.appendChild(x)}}class gs{constructor(s,r){this.stopwatch_=new bi,this.onTick_=this.onTick_.bind(this),this.ticker_=r.ticker,this.ticker_.emitter.on("tick",this.onTick_),this.value_=r.value,this.viewProps=r.viewProps,this.view=new Rn(s,{viewProps:this.viewProps}),this.graphC_=new ri(s,{formatter:ue(0),lineCount:r.lineCount,props:ie.fromObject({maxValue:r.maxValue,minValue:r.minValue}),value:this.value_,viewProps:this.viewProps}),this.view.graphElement.appendChild(this.graphC_.view.element),this.viewProps.handleDispose(()=>{this.graphC_.viewProps.set("disposed",!0),this.ticker_.dispose()})}begin(){this.stopwatch_.begin(new Date)}end(){this.stopwatch_.end(new Date)}onTick_(){const s=this.stopwatch_.fps;if(s!==null){const r=this.value_.rawValue;this.value_.rawValue=zs(r,s),this.view.valueElement.textContent=s.toFixed(0)}}}function gi(o,s){return s===0?new Ye:new wn(o,s??si.monitor.defaultInterval)}const Fn={id:"fpsgraph",type:"blade",accept(o){const s=Z,r=j(o,{view:s.required.constant("fpsgraph"),interval:s.optional.number,label:s.optional.string,lineCount:s.optional.number,max:s.optional.number,min:s.optional.number});return r?{params:r}:null},controller(o){var s,r,c,b;const x=(s=o.params.interval)!==null&&s!==void 0?s:500;return new tt(o.document,{blade:o.blade,props:ie.fromObject({label:o.params.label}),valueController:new gs(o.document,{lineCount:(r=o.params.lineCount)!==null&&r!==void 0?r:2,maxValue:(c=o.params.max)!==null&&c!==void 0?c:90,minValue:(b=o.params.min)!==null&&b!==void 0?b:0,ticker:gi(o.document,x),value:ns(80),viewProps:o.viewProps})})},api(o){return!(o.controller instanceof tt)||!(o.controller.valueController instanceof gs)?null:new bs(o.controller)}};class Ae{constructor(s,r){this.min=s,this.max=r}static isObject(s){if(typeof s!="object"||s===null)return!1;const r=s.min,c=s.max;return!(typeof r!="number"||typeof c!="number")}static equals(s,r){return s.min===r.min&&s.max===r.max}get length(){return this.max-this.min}toObject(){return{min:this.min,max:this.max}}}const on={fromComponents:o=>new Ae(o[0],o[1]),toComponents:o=>[o.min,o.max]};class xt{constructor(s){this.edge=s}constrain(s){var r,c,b,x,L,O,F,pe;if(s.min<=s.max)return new Ae((c=(r=this.edge)===null||r===void 0?void 0:r.constrain(s.min))!==null&&c!==void 0?c:s.min,(x=(b=this.edge)===null||b===void 0?void 0:b.constrain(s.max))!==null&&x!==void 0?x:s.max);const $e=(s.min+s.max)/2;return new Ae((O=(L=this.edge)===null||L===void 0?void 0:L.constrain($e))!==null&&O!==void 0?O:$e,(pe=(F=this.edge)===null||F===void 0?void 0:F.constrain($e))!==null&&pe!==void 0?pe:$e)}}const yt=k("rsltxt");class _s{constructor(s,r){this.sliderView_=r.sliderView,this.textView_=r.textView,this.element=s.createElement("div"),this.element.classList.add(yt());const c=s.createElement("div");c.classList.add(yt("s")),c.appendChild(this.sliderView_.element),this.element.appendChild(c);const b=s.createElement("div");b.classList.add(yt("t")),b.appendChild(this.textView_.element),this.element.appendChild(b)}}const ge=k("rsl");class ws{constructor(s,r){this.maxValue_=r.maxValue,this.minValue_=r.minValue,this.element=s.createElement("div"),this.element.classList.add(ge()),r.viewProps.bindClassModifiers(this.element),this.value_=r.value,this.value_.emitter.on("change",this.onValueChange_.bind(this));const c=s.createElement("div");c.classList.add(ge("t")),this.element.appendChild(c),this.trackElement=c;const b=s.createElement("div");b.classList.add(ge("b")),c.appendChild(b),this.barElement=b;const x=["min","max"].map(L=>{const O=s.createElement("div");return O.classList.add(ge("k"),ge("k",L)),c.appendChild(O),O});this.knobElements=[x[0],x[1]],this.update()}valueToX_(s){return Ne(ee(s,this.minValue_,this.maxValue_,0,1),0,1)*100}update(){const s=this.value_.rawValue;s.length===0?this.element.classList.add(ge(void 0,"zero")):this.element.classList.remove(ge(void 0,"zero"));const r=[this.valueToX_(s.min),this.valueToX_(s.max)];this.barElement.style.left=`${r[0]}%`,this.barElement.style.right=`${100-r[1]}%`,this.knobElements.forEach((c,b)=>{c.style.left=`${r[b]}%`})}onValueChange_(){this.update()}}class Bn{constructor(s,r){this.grabbing_=null,this.grabOffset_=0,this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.maxValue_=r.maxValue,this.minValue_=r.minValue,this.viewProps=r.viewProps,this.value=r.value,this.view=new ws(s,{maxValue:r.maxValue,minValue:r.minValue,value:this.value,viewProps:r.viewProps});const c=new Ze(this.view.trackElement);c.emitter.on("down",this.onPointerDown_),c.emitter.on("move",this.onPointerMove_),c.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_(s){if(!s.point)return null;const r=(s.point.x+this.ofs_())/s.bounds.width;return ee(r,0,1,this.minValue_,this.maxValue_)}onPointerDown_(s){if(!s.data.point)return;const r=s.data.point.x/s.data.bounds.width,c=this.value.rawValue,b=ee(c.min,this.minValue_,this.maxValue_,0,1),x=ee(c.max,this.minValue_,this.maxValue_,0,1);Math.abs(x-r)<=.025?this.grabbing_="max":Math.abs(b-r)<=.025?this.grabbing_="min":r>=b&&r<=x?(this.grabbing_="length",this.grabOffset_=ee(r-b,0,1,0,this.maxValue_-this.minValue_)):r<b?(this.grabbing_="min",this.onPointerMove_(s)):r>x&&(this.grabbing_="max",this.onPointerMove_(s))}applyPointToValue_(s,r){const c=this.valueFromData_(s);if(c!==null){if(this.grabbing_==="min")this.value.setRawValue(new Ae(c,this.value.rawValue.max),r);else if(this.grabbing_==="max")this.value.setRawValue(new Ae(this.value.rawValue.min,c),r);else if(this.grabbing_==="length"){const b=this.value.rawValue.length;let x=c-this.grabOffset_,L=x+b;x<this.minValue_?(x=this.minValue_,L=this.minValue_+b):L>this.maxValue_&&(x=this.maxValue_-b,L=this.maxValue_),this.value.setRawValue(new Ae(x,L),r)}}}onPointerMove_(s){this.applyPointToValue_(s.data,{forceEmit:!1,last:!1})}onPointerUp_(s){this.applyPointToValue_(s.data,{forceEmit:!0,last:!0}),this.grabbing_=null}}class jn{constructor(s,r){this.value=r.value,this.viewProps=r.viewProps,this.sc_=new Bn(s,r);const c={baseStep:r.baseStep,constraint:r.constraint,textProps:ie.fromObject({draggingScale:r.draggingScale,formatter:r.formatter})};this.tc_=new Vn(s,{assembly:on,axes:[c,c],parser:r.parser,value:this.value,viewProps:r.viewProps}),this.view=new _s(s,{sliderView:this.sc_.view,textView:this.tc_.view})}get textController(){return this.tc_}}function _i(o){return Ae.isObject(o)?new Ae(o.min,o.max):new Ae(0,0)}function an(o,s){o.writeProperty("max",s.max),o.writeProperty("min",s.min)}function Ct(o){const s=[],r=ni(o);r&&s.push(r);const c=ti(o);return c&&s.push(c),new xt(new Ot(s))}const Pt={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:(o,s)=>{if(!Ae.isObject(o))return null;const r=Z,c=j(s,{format:r.optional.function,max:r.optional.number,min:r.optional.number,step:r.optional.number});return c?{initialValue:new Ae(o.min,o.max),params:c}:null},binding:{reader:o=>_i,constraint:o=>Ct(o.params),equals:Ae.equals,writer:o=>an},controller(o){var s;const r=o.value,c=o.constraint;if(!(c instanceof xt))throw w.shouldNeverHappen();const b=(r.rawValue.min+r.rawValue.max)/2,x=(s=o.params.format)!==null&&s!==void 0?s:ue($s(c.edge,b)),L=c.edge&&Ie(c.edge,mt);if((L==null?void 0:L.minValue)!==void 0&&(L==null?void 0:L.maxValue)!==void 0)return new jn(o.document,{baseStep:Tn(c.edge),constraint:c.edge,draggingScale:os(L,b),formatter:x,maxValue:L.maxValue,minValue:L.minValue,parser:Bt,value:r,viewProps:o.viewProps});const O={baseStep:Tn(c.edge),constraint:c.edge,textProps:ie.fromObject({draggingScale:b,formatter:x})};return new Vn(o.document,{assembly:on,axes:[O,O],parser:Bt,value:r,viewProps:o.viewProps})}};class ln{constructor(s){this.controller_=s}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(s){this.controller_.viewProps.set("disabled",s)}get title(){var s;return(s=this.controller_.props.get("title"))!==null&&s!==void 0?s:""}set title(s){this.controller_.props.set("title",s)}}class wi extends m{constructor(s,r,c,b,x){super(s,b,x),this.cell=r,this.index=c}}class xi extends a{constructor(s){super(s),this.cellToApiMap_=new Map,this.controller_.valueController.cellControllers.forEach(c=>{const b=new ln(c);this.cellToApiMap_.set(c,b)})}get value(){return this.controller_.value}cell(s,r){const c=this.controller_.valueController,b=c.cellControllers[r*c.size[0]+s];return this.cellToApiMap_.get(b)}on(s,r){const c=r.bind(this);this.controller_.value.emitter.on(s,b=>{const x=this.controller_.valueController,L=x.findCellByValue(b.rawValue);if(!L)return;const O=this.cellToApiMap_.get(L);if(!O)return;const F=x.cellControllers.indexOf(L);c(new wi(this,O,[F%x.size[0],Math.floor(F/x.size[0])],b.rawValue,void 0))})}}const $t=k("rad");class yi{constructor(s,r){this.element=s.createElement("div"),this.element.classList.add($t()),r.viewProps.bindClassModifiers(this.element);const c=s.createElement("label");c.classList.add($t("l")),this.element.appendChild(c);const b=s.createElement("input");b.classList.add($t("i")),b.name=r.name,b.type="radio",r.viewProps.bindDisabled(b),c.appendChild(b),this.inputElement=b;const x=s.createElement("div");x.classList.add($t("b")),c.appendChild(x);const L=s.createElement("div");L.classList.add($t("t")),x.appendChild(L),V(r.props,"title",O=>{L.textContent=O})}}class ot{constructor(s,r){this.props=r.props,this.viewProps=r.viewProps,this.view=new yi(s,{name:r.name,props:this.props,viewProps:this.viewProps})}}class Un{constructor(s,r){this.cellCs_=[],this.cellValues_=[],this.onCellInputChange_=this.onCellInputChange_.bind(this),this.size=r.size;const[c,b]=this.size;for(let x=0;x<b;x++)for(let L=0;L<c;L++){const O=new ot(s,{name:r.groupName,props:ie.fromObject(Object.assign({},r.cellConfig(L,x))),viewProps:Oe.create()});this.cellCs_.push(O),this.cellValues_.push(r.cellConfig(L,x).value)}this.value=r.value,I(this.value,x=>{const L=this.findCellByValue(x);L&&(L.view.inputElement.checked=!0)}),this.viewProps=Oe.create(),this.view=new nt(s,{viewProps:this.viewProps,viewName:"radgrid"}),this.view.element.style.gridTemplateColumns=`repeat(${c}, 1fr)`,this.cellCs_.forEach(x=>{x.view.inputElement.addEventListener("change",this.onCellInputChange_),this.view.element.appendChild(x.view.element)})}get cellControllers(){return this.cellCs_}findCellByValue(s){const r=this.cellValues_.findIndex(c=>c===s);return r<0?null:this.cellCs_[r]}onCellInputChange_(s){const r=s.currentTarget,c=this.cellCs_.findIndex(b=>b.view.inputElement===r);c<0||(this.value.rawValue=this.cellValues_[c])}}const Ci=function(){return{id:"radiogrid",type:"blade",accept(o){const s=Z,r=j(o,{cells:s.required.function,groupName:s.required.string,size:s.required.array(s.required.number),value:s.required.raw,view:s.required.constant("radiogrid"),label:s.optional.string});return r?{params:r}:null},controller(o){return new He(o.document,{blade:o.blade,props:ie.fromObject({label:o.params.label}),valueController:new Un(o.document,{groupName:o.params.groupName,cellConfig:o.params.cells,size:o.params.size,value:te(o.params.value)})})},api(o){return!(o.controller instanceof He)||!(o.controller.valueController instanceof Un)?null:new xi(o.controller)}}}();function zn(o){return{id:"input-radiogrid",type:"input",accept(s,r){if(!o.isType(s))return null;const c=Z,b=j(r,{cells:c.required.function,groupName:c.required.string,size:c.required.array(c.required.number),view:c.required.constant("radiogrid")});return b?{initialValue:s,params:b}:null},binding:o.binding,controller:s=>new Un(s.document,{cellConfig:s.params.cells,groupName:s.params.groupName,size:s.params.size,value:s.value})}}const Pi=zn({isType:o=>typeof o=="number",binding:{reader:o=>We,writer:o=>it}}),xs=zn({isType:o=>typeof o=="string",binding:{reader:o=>ts,writer:o=>it}}),Ei=zn({isType:o=>typeof o=="boolean",binding:{reader:o=>le,writer:o=>it}}),ki=[ci,ce,Fn,Pt,Ci,Ei,Pi,xs];u.CubicBezier=je,u.plugins=ki,Object.defineProperty(u,"__esModule",{value:!0})})})(Xn,Xn.exports);const Lo=Po(Xn.exports),So=Ur({__proto__:null,default:Lo},[Xn.exports]);let Ht,Wn;const To=(M="tres-container")=>{Ht=new Ss.exports.Pane({container:document.querySelector(M)||void 0}),Ht.registerPlugin(So),Wn=Ht.addBlade({view:"fpsgraph",label:"fpsgraph"});function l(){Ht&&Ht.dispose()}return $.onMounted(()=>{const{onBeforeLoop:u,onAfterLoop:a,resume:d}=zi.useRenderLoop();d(),u(()=>Wn.begin()),a(()=>Wn.end())}),$.onUnmounted(()=>{l()}),{pane:Ht,fpsGraph:Wn,disposeTweakPane:l}};let Ts=null;function Ao(M,l){return u=>{l&&l(u),Ts||(Ts=new Eo),Ts.setDecoderPath(M.decoderPath||"https://www.gstatic.com/draco/versioned/decoders/1.4.3/")}}async function nr(M,l={draco:!1},u){return await zi.useLoader(Kr,M,Ao(l,u))}const Vo=$.defineComponent({name:"GLTFModel",props:{path:String,draco:Boolean},async setup(M){const l=$.inject("local-scene"),{scene:u}=await nr(M.path,{draco:M.draco});return l!=null&&l.value&&l.value.add(u),()=>null}}),No=$.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(M){let l,u;const a=M,{extend:d}=tr();d({TextGeometry:wo});const m=new xo,h=$.useSlots(),f=$.computed(()=>{var P;return a.text?a.text:h.default?(P=h.default()[0].children)==null?void 0:P.trim():"TresJS"}),v=([l,u]=$.withAsyncContext(()=>new Promise((P,_)=>{try{typeof a.font=="string"?m.load(a.font,k=>{P(k)}):P(a.font)}catch(k){_(console.error("cientos",k))}})),l=await l,u(),l),w=$.computed(()=>({font:v,size:a.size,height:a.height,curveSegments:a.curveSegments,bevelEnabled:a.bevelEnabled,bevelThickness:a.bevelThickness,bevelSize:a.bevelSize,bevelOffset:a.bevelOffset,bevelSegments:a.bevelSegments}));return(P,_)=>{const k=$.resolveComponent("TresTextGeometry"),A=$.resolveComponent("TresMesh");return $.unref(v)?($.openBlock(),$.createBlock(A,{key:0},{default:$.withCtx(()=>[$.unref(f)?($.openBlock(),$.createBlock(k,{key:0,args:[$.unref(f),$.unref(w)],center:M.center},null,8,["args","center"])):$.createCommentVNode("",!0),$.renderSlot(P.$slots,"default")]),_:3})):$.createCommentVNode("",!0)}}});Ve.GLTFModel=Vo,Ve.OrbitControls=Mo,Ve.Text3D=No,Ve.useGLTF=nr,Ve.useTweakPane=To,Object.defineProperty(Ve,Symbol.toStringTag,{value:"Module"})});
|
|
8
|
+
(function(Ve,R){typeof exports=="object"&&typeof module<"u"?R(exports,require("vue"),require("@tresjs/core"),require("three")):typeof define=="function"&&define.amd?define(["exports","vue","@tresjs/core","three"],R):(Ve=typeof globalThis<"u"?globalThis:Ve||self,R(Ve.trescientos={},Ve.Vue,Ve.TresjsCore,Ve.Three))})(this,function(Ve,R,Zn,m){"use strict";function Ur(L,l){for(var c=0;c<l.length;c++){const o=l[c];if(typeof o!="string"&&!Array.isArray(o)){for(const h in o)if(h!=="default"&&!(h in L)){const d=Object.getOwnPropertyDescriptor(o,h);d&&Object.defineProperty(L,h,d.get?d:{enumerable:!0,get:()=>o[h]})}}}return Object.freeze(Object.defineProperty(L,Symbol.toStringTag,{value:"Module"}))}function C(L,l,c){return l in L?Object.defineProperty(L,l,{value:c,enumerable:!0,configurable:!0,writable:!0}):L[l]=c,L}class Rr extends m.Object3D{constructor(l,c){super(),C(this,"isTransformControls",!0),C(this,"visible",!1),C(this,"domElement",void 0),C(this,"raycaster",new m.Raycaster),C(this,"gizmo",void 0),C(this,"plane",void 0),C(this,"tempVector",new m.Vector3),C(this,"tempVector2",new m.Vector3),C(this,"tempQuaternion",new m.Quaternion),C(this,"unit",{X:new m.Vector3(1,0,0),Y:new m.Vector3(0,1,0),Z:new m.Vector3(0,0,1)}),C(this,"pointStart",new m.Vector3),C(this,"pointEnd",new m.Vector3),C(this,"offset",new m.Vector3),C(this,"rotationAxis",new m.Vector3),C(this,"startNorm",new m.Vector3),C(this,"endNorm",new m.Vector3),C(this,"rotationAngle",0),C(this,"cameraPosition",new m.Vector3),C(this,"cameraQuaternion",new m.Quaternion),C(this,"cameraScale",new m.Vector3),C(this,"parentPosition",new m.Vector3),C(this,"parentQuaternion",new m.Quaternion),C(this,"parentQuaternionInv",new m.Quaternion),C(this,"parentScale",new m.Vector3),C(this,"worldPositionStart",new m.Vector3),C(this,"worldQuaternionStart",new m.Quaternion),C(this,"worldScaleStart",new m.Vector3),C(this,"worldPosition",new m.Vector3),C(this,"worldQuaternion",new m.Quaternion),C(this,"worldQuaternionInv",new m.Quaternion),C(this,"worldScale",new m.Vector3),C(this,"eye",new m.Vector3),C(this,"positionStart",new m.Vector3),C(this,"quaternionStart",new m.Quaternion),C(this,"scaleStart",new m.Vector3),C(this,"camera",void 0),C(this,"object",void 0),C(this,"enabled",!0),C(this,"axis",null),C(this,"mode","translate"),C(this,"translationSnap",null),C(this,"rotationSnap",null),C(this,"scaleSnap",null),C(this,"space","world"),C(this,"size",1),C(this,"dragging",!1),C(this,"showX",!0),C(this,"showY",!0),C(this,"showZ",!0),C(this,"changeEvent",{type:"change"}),C(this,"mouseDownEvent",{type:"mouseDown",mode:this.mode}),C(this,"mouseUpEvent",{type:"mouseUp",mode:this.mode}),C(this,"objectChangeEvent",{type:"objectChange"}),C(this,"intersectObjectWithRay",(h,d,f)=>{const v=d.intersectObject(h,!0);for(let b=0;b<v.length;b++)if(v[b].object.visible||f)return v[b];return!1}),C(this,"attach",h=>(this.object=h,this.visible=!0,this)),C(this,"detach",()=>(this.object=void 0,this.visible=!1,this.axis=null,this)),C(this,"reset",()=>this.enabled?(this.dragging&&this.object!==void 0&&(this.object.position.copy(this.positionStart),this.object.quaternion.copy(this.quaternionStart),this.object.scale.copy(this.scaleStart),this.dispatchEvent(this.changeEvent),this.dispatchEvent(this.objectChangeEvent),this.pointStart.copy(this.pointEnd)),this):this),C(this,"updateMatrixWorld",()=>{this.object!==void 0&&(this.object.updateMatrixWorld(),this.object.parent===null?console.error("TransformControls: The attached 3D object must be a part of the scene graph."):this.object.parent.matrixWorld.decompose(this.parentPosition,this.parentQuaternion,this.parentScale),this.object.matrixWorld.decompose(this.worldPosition,this.worldQuaternion,this.worldScale),this.parentQuaternionInv.copy(this.parentQuaternion).invert(),this.worldQuaternionInv.copy(this.worldQuaternion).invert()),this.camera.updateMatrixWorld(),this.camera.matrixWorld.decompose(this.cameraPosition,this.cameraQuaternion,this.cameraScale),this.eye.copy(this.cameraPosition).sub(this.worldPosition).normalize(),super.updateMatrixWorld()}),C(this,"pointerHover",h=>{if(this.object===void 0||this.dragging===!0)return;this.raycaster.setFromCamera(h,this.camera);const d=this.intersectObjectWithRay(this.gizmo.picker[this.mode],this.raycaster);d?this.axis=d.object.name:this.axis=null}),C(this,"pointerDown",h=>{if(!(this.object===void 0||this.dragging===!0||h.button!==0)&&this.axis!==null){this.raycaster.setFromCamera(h,this.camera);const d=this.intersectObjectWithRay(this.plane,this.raycaster,!0);if(d){let f=this.space;if(this.mode==="scale"?f="local":(this.axis==="E"||this.axis==="XYZE"||this.axis==="XYZ")&&(f="world"),f==="local"&&this.mode==="rotate"){const v=this.rotationSnap;this.axis==="X"&&v&&(this.object.rotation.x=Math.round(this.object.rotation.x/v)*v),this.axis==="Y"&&v&&(this.object.rotation.y=Math.round(this.object.rotation.y/v)*v),this.axis==="Z"&&v&&(this.object.rotation.z=Math.round(this.object.rotation.z/v)*v)}this.object.updateMatrixWorld(),this.object.parent&&this.object.parent.updateMatrixWorld(),this.positionStart.copy(this.object.position),this.quaternionStart.copy(this.object.quaternion),this.scaleStart.copy(this.object.scale),this.object.matrixWorld.decompose(this.worldPositionStart,this.worldQuaternionStart,this.worldScaleStart),this.pointStart.copy(d.point).sub(this.worldPositionStart)}this.dragging=!0,this.mouseDownEvent.mode=this.mode,this.dispatchEvent(this.mouseDownEvent)}}),C(this,"pointerMove",h=>{const d=this.axis,f=this.mode,v=this.object;let b=this.space;if(f==="scale"?b="local":(d==="E"||d==="XYZE"||d==="XYZ")&&(b="world"),v===void 0||d===null||this.dragging===!1||h.button!==-1)return;this.raycaster.setFromCamera(h,this.camera);const w=this.intersectObjectWithRay(this.plane,this.raycaster,!0);if(w){if(this.pointEnd.copy(w.point).sub(this.worldPositionStart),f==="translate")this.offset.copy(this.pointEnd).sub(this.pointStart),b==="local"&&d!=="XYZ"&&this.offset.applyQuaternion(this.worldQuaternionInv),d.indexOf("X")===-1&&(this.offset.x=0),d.indexOf("Y")===-1&&(this.offset.y=0),d.indexOf("Z")===-1&&(this.offset.z=0),b==="local"&&d!=="XYZ"?this.offset.applyQuaternion(this.quaternionStart).divide(this.parentScale):this.offset.applyQuaternion(this.parentQuaternionInv).divide(this.parentScale),v.position.copy(this.offset).add(this.positionStart),this.translationSnap&&(b==="local"&&(v.position.applyQuaternion(this.tempQuaternion.copy(this.quaternionStart).invert()),d.search("X")!==-1&&(v.position.x=Math.round(v.position.x/this.translationSnap)*this.translationSnap),d.search("Y")!==-1&&(v.position.y=Math.round(v.position.y/this.translationSnap)*this.translationSnap),d.search("Z")!==-1&&(v.position.z=Math.round(v.position.z/this.translationSnap)*this.translationSnap),v.position.applyQuaternion(this.quaternionStart)),b==="world"&&(v.parent&&v.position.add(this.tempVector.setFromMatrixPosition(v.parent.matrixWorld)),d.search("X")!==-1&&(v.position.x=Math.round(v.position.x/this.translationSnap)*this.translationSnap),d.search("Y")!==-1&&(v.position.y=Math.round(v.position.y/this.translationSnap)*this.translationSnap),d.search("Z")!==-1&&(v.position.z=Math.round(v.position.z/this.translationSnap)*this.translationSnap),v.parent&&v.position.sub(this.tempVector.setFromMatrixPosition(v.parent.matrixWorld))));else if(f==="scale"){if(d.search("XYZ")!==-1){let y=this.pointEnd.length()/this.pointStart.length();this.pointEnd.dot(this.pointStart)<0&&(y*=-1),this.tempVector2.set(y,y,y)}else this.tempVector.copy(this.pointStart),this.tempVector2.copy(this.pointEnd),this.tempVector.applyQuaternion(this.worldQuaternionInv),this.tempVector2.applyQuaternion(this.worldQuaternionInv),this.tempVector2.divide(this.tempVector),d.search("X")===-1&&(this.tempVector2.x=1),d.search("Y")===-1&&(this.tempVector2.y=1),d.search("Z")===-1&&(this.tempVector2.z=1);v.scale.copy(this.scaleStart).multiply(this.tempVector2),this.scaleSnap&&this.object&&(d.search("X")!==-1&&(this.object.scale.x=Math.round(v.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap),d.search("Y")!==-1&&(v.scale.y=Math.round(v.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap),d.search("Z")!==-1&&(v.scale.z=Math.round(v.scale.z/this.scaleSnap)*this.scaleSnap||this.scaleSnap))}else if(f==="rotate"){this.offset.copy(this.pointEnd).sub(this.pointStart);const y=20/this.worldPosition.distanceTo(this.tempVector.setFromMatrixPosition(this.camera.matrixWorld));d==="E"?(this.rotationAxis.copy(this.eye),this.rotationAngle=this.pointEnd.angleTo(this.pointStart),this.startNorm.copy(this.pointStart).normalize(),this.endNorm.copy(this.pointEnd).normalize(),this.rotationAngle*=this.endNorm.cross(this.startNorm).dot(this.eye)<0?1:-1):d==="XYZE"?(this.rotationAxis.copy(this.offset).cross(this.eye).normalize(),this.rotationAngle=this.offset.dot(this.tempVector.copy(this.rotationAxis).cross(this.eye))*y):(d==="X"||d==="Y"||d==="Z")&&(this.rotationAxis.copy(this.unit[d]),this.tempVector.copy(this.unit[d]),b==="local"&&this.tempVector.applyQuaternion(this.worldQuaternion),this.rotationAngle=this.offset.dot(this.tempVector.cross(this.eye).normalize())*y),this.rotationSnap&&(this.rotationAngle=Math.round(this.rotationAngle/this.rotationSnap)*this.rotationSnap),b==="local"&&d!=="E"&&d!=="XYZE"?(v.quaternion.copy(this.quaternionStart),v.quaternion.multiply(this.tempQuaternion.setFromAxisAngle(this.rotationAxis,this.rotationAngle)).normalize()):(this.rotationAxis.applyQuaternion(this.parentQuaternionInv),v.quaternion.copy(this.tempQuaternion.setFromAxisAngle(this.rotationAxis,this.rotationAngle)),v.quaternion.multiply(this.quaternionStart).normalize())}this.dispatchEvent(this.changeEvent),this.dispatchEvent(this.objectChangeEvent)}}),C(this,"pointerUp",h=>{h.button===0&&(this.dragging&&this.axis!==null&&(this.mouseUpEvent.mode=this.mode,this.dispatchEvent(this.mouseUpEvent)),this.dragging=!1,this.axis=null)}),C(this,"getPointer",h=>{var d;if(this.domElement&&(d=this.domElement.ownerDocument)!==null&&d!==void 0&&d.pointerLockElement)return{x:0,y:0,button:h.button};{var f;const v=h.changedTouches?h.changedTouches[0]:h,b=(f=this.domElement)===null||f===void 0?void 0:f.getBoundingClientRect();return{x:(v.clientX-b.left)/b.width*2-1,y:-(v.clientY-b.top)/b.height*2+1,button:h.button}}}),C(this,"onPointerHover",h=>{if(this.enabled)switch(h.pointerType){case"mouse":case"pen":this.pointerHover(this.getPointer(h));break}}),C(this,"onPointerDown",h=>{!this.enabled||!this.domElement||(this.domElement.style.touchAction="none",this.domElement.ownerDocument.addEventListener("pointermove",this.onPointerMove),this.pointerHover(this.getPointer(h)),this.pointerDown(this.getPointer(h)))}),C(this,"onPointerMove",h=>{this.enabled&&this.pointerMove(this.getPointer(h))}),C(this,"onPointerUp",h=>{!this.enabled||!this.domElement||(this.domElement.style.touchAction="",this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.pointerUp(this.getPointer(h)))}),C(this,"getMode",()=>this.mode),C(this,"setMode",h=>{this.mode=h}),C(this,"setTranslationSnap",h=>{this.translationSnap=h}),C(this,"setRotationSnap",h=>{this.rotationSnap=h}),C(this,"setScaleSnap",h=>{this.scaleSnap=h}),C(this,"setSize",h=>{this.size=h}),C(this,"setSpace",h=>{this.space=h}),C(this,"update",()=>{console.warn("THREE.TransformControls: update function has no more functionality and therefore has been deprecated.")}),C(this,"connect",h=>{h===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),this.domElement=h,this.domElement.addEventListener("pointerdown",this.onPointerDown),this.domElement.addEventListener("pointermove",this.onPointerHover),this.domElement.ownerDocument.addEventListener("pointerup",this.onPointerUp)}),C(this,"dispose",()=>{var h,d,f,v,b,w;(h=this.domElement)===null||h===void 0||h.removeEventListener("pointerdown",this.onPointerDown),(d=this.domElement)===null||d===void 0||d.removeEventListener("pointermove",this.onPointerHover),(f=this.domElement)===null||f===void 0||(v=f.ownerDocument)===null||v===void 0||v.removeEventListener("pointermove",this.onPointerMove),(b=this.domElement)===null||b===void 0||(w=b.ownerDocument)===null||w===void 0||w.removeEventListener("pointerup",this.onPointerUp),this.traverse(y=>{const x=y;x.geometry&&x.geometry.dispose(),x.material&&x.material.dispose()})}),this.domElement=c,this.camera=l,this.gizmo=new Gr,this.add(this.gizmo),this.plane=new Kr,this.add(this.plane);const o=(h,d)=>{let f=d;Object.defineProperty(this,h,{get:function(){return f!==void 0?f:d},set:function(v){f!==v&&(f=v,this.plane[h]=v,this.gizmo[h]=v,this.dispatchEvent({type:h+"-changed",value:v}),this.dispatchEvent(this.changeEvent))}}),this[h]=d,this.plane[h]=d,this.gizmo[h]=d};o("camera",this.camera),o("object",this.object),o("enabled",this.enabled),o("axis",this.axis),o("mode",this.mode),o("translationSnap",this.translationSnap),o("rotationSnap",this.rotationSnap),o("scaleSnap",this.scaleSnap),o("space",this.space),o("size",this.size),o("dragging",this.dragging),o("showX",this.showX),o("showY",this.showY),o("showZ",this.showZ),o("worldPosition",this.worldPosition),o("worldPositionStart",this.worldPositionStart),o("worldQuaternion",this.worldQuaternion),o("worldQuaternionStart",this.worldQuaternionStart),o("cameraPosition",this.cameraPosition),o("cameraQuaternion",this.cameraQuaternion),o("pointStart",this.pointStart),o("pointEnd",this.pointEnd),o("rotationAxis",this.rotationAxis),o("rotationAngle",this.rotationAngle),o("eye",this.eye),c!==void 0&&this.connect(c)}}class Gr extends m.Object3D{constructor(){super(),C(this,"isTransformControlsGizmo",!0),C(this,"type","TransformControlsGizmo"),C(this,"tempVector",new m.Vector3(0,0,0)),C(this,"tempEuler",new m.Euler),C(this,"alignVector",new m.Vector3(0,1,0)),C(this,"zeroVector",new m.Vector3(0,0,0)),C(this,"lookAtMatrix",new m.Matrix4),C(this,"tempQuaternion",new m.Quaternion),C(this,"tempQuaternion2",new m.Quaternion),C(this,"identityQuaternion",new m.Quaternion),C(this,"unitX",new m.Vector3(1,0,0)),C(this,"unitY",new m.Vector3(0,1,0)),C(this,"unitZ",new m.Vector3(0,0,1)),C(this,"gizmo",void 0),C(this,"picker",void 0),C(this,"helper",void 0),C(this,"rotationAxis",new m.Vector3),C(this,"cameraPosition",new m.Vector3),C(this,"worldPositionStart",new m.Vector3),C(this,"worldQuaternionStart",new m.Quaternion),C(this,"worldPosition",new m.Vector3),C(this,"worldQuaternion",new m.Quaternion),C(this,"eye",new m.Vector3),C(this,"camera",null),C(this,"enabled",!0),C(this,"axis",null),C(this,"mode","translate"),C(this,"space","world"),C(this,"size",1),C(this,"dragging",!1),C(this,"showX",!0),C(this,"showY",!0),C(this,"showZ",!0),C(this,"updateMatrixWorld",()=>{let ue=this.space;this.mode==="scale"&&(ue="local");const Z=ue==="local"?this.worldQuaternion:this.identityQuaternion;this.gizmo.translate.visible=this.mode==="translate",this.gizmo.rotate.visible=this.mode==="rotate",this.gizmo.scale.visible=this.mode==="scale",this.helper.translate.visible=this.mode==="translate",this.helper.rotate.visible=this.mode==="rotate",this.helper.scale.visible=this.mode==="scale";let ae=[];ae=ae.concat(this.picker[this.mode].children),ae=ae.concat(this.gizmo[this.mode].children),ae=ae.concat(this.helper[this.mode].children);for(let K=0;K<ae.length;K++){const S=ae[K];S.visible=!0,S.rotation.set(0,0,0),S.position.copy(this.worldPosition);let Ae;if(this.camera.isOrthographicCamera?Ae=(this.camera.top-this.camera.bottom)/this.camera.zoom:Ae=this.worldPosition.distanceTo(this.cameraPosition)*Math.min(1.9*Math.tan(Math.PI*this.camera.fov/360)/this.camera.zoom,7),S.scale.set(1,1,1).multiplyScalar(Ae*this.size/7),S.tag==="helper"){S.visible=!1,S.name==="AXIS"?(S.position.copy(this.worldPositionStart),S.visible=!!this.axis,this.axis==="X"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,0)),S.quaternion.copy(Z).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(Z).dot(this.eye))>.9&&(S.visible=!1)),this.axis==="Y"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,Math.PI/2)),S.quaternion.copy(Z).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(Z).dot(this.eye))>.9&&(S.visible=!1)),this.axis==="Z"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0)),S.quaternion.copy(Z).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(Z).dot(this.eye))>.9&&(S.visible=!1)),this.axis==="XYZE"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0)),this.alignVector.copy(this.rotationAxis),S.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.zeroVector,this.alignVector,this.unitY)),S.quaternion.multiply(this.tempQuaternion),S.visible=this.dragging),this.axis==="E"&&(S.visible=!1)):S.name==="START"?(S.position.copy(this.worldPositionStart),S.visible=this.dragging):S.name==="END"?(S.position.copy(this.worldPosition),S.visible=this.dragging):S.name==="DELTA"?(S.position.copy(this.worldPositionStart),S.quaternion.copy(this.worldQuaternionStart),this.tempVector.set(1e-10,1e-10,1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1),this.tempVector.applyQuaternion(this.worldQuaternionStart.clone().invert()),S.scale.copy(this.tempVector),S.visible=this.dragging):(S.quaternion.copy(Z),this.dragging?S.position.copy(this.worldPositionStart):S.position.copy(this.worldPosition),this.axis&&(S.visible=this.axis.search(S.name)!==-1));continue}S.quaternion.copy(Z),this.mode==="translate"||this.mode==="scale"?((S.name==="X"||S.name==="XYZX")&&Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(Z).dot(this.eye))>.99&&(S.scale.set(1e-10,1e-10,1e-10),S.visible=!1),(S.name==="Y"||S.name==="XYZY")&&Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(Z).dot(this.eye))>.99&&(S.scale.set(1e-10,1e-10,1e-10),S.visible=!1),(S.name==="Z"||S.name==="XYZZ")&&Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(Z).dot(this.eye))>.99&&(S.scale.set(1e-10,1e-10,1e-10),S.visible=!1),S.name==="XY"&&Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(Z).dot(this.eye))<.2&&(S.scale.set(1e-10,1e-10,1e-10),S.visible=!1),S.name==="YZ"&&Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(Z).dot(this.eye))<.2&&(S.scale.set(1e-10,1e-10,1e-10),S.visible=!1),S.name==="XZ"&&Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(Z).dot(this.eye))<.2&&(S.scale.set(1e-10,1e-10,1e-10),S.visible=!1),S.name.search("X")!==-1&&(this.alignVector.copy(this.unitX).applyQuaternion(Z).dot(this.eye)<0?S.tag==="fwd"?S.visible=!1:S.scale.x*=-1:S.tag==="bwd"&&(S.visible=!1)),S.name.search("Y")!==-1&&(this.alignVector.copy(this.unitY).applyQuaternion(Z).dot(this.eye)<0?S.tag==="fwd"?S.visible=!1:S.scale.y*=-1:S.tag==="bwd"&&(S.visible=!1)),S.name.search("Z")!==-1&&(this.alignVector.copy(this.unitZ).applyQuaternion(Z).dot(this.eye)<0?S.tag==="fwd"?S.visible=!1:S.scale.z*=-1:S.tag==="bwd"&&(S.visible=!1))):this.mode==="rotate"&&(this.tempQuaternion2.copy(Z),this.alignVector.copy(this.eye).applyQuaternion(this.tempQuaternion.copy(Z).invert()),S.name.search("E")!==-1&&S.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.eye,this.zeroVector,this.unitY)),S.name==="X"&&(this.tempQuaternion.setFromAxisAngle(this.unitX,Math.atan2(-this.alignVector.y,this.alignVector.z)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),S.quaternion.copy(this.tempQuaternion)),S.name==="Y"&&(this.tempQuaternion.setFromAxisAngle(this.unitY,Math.atan2(this.alignVector.x,this.alignVector.z)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),S.quaternion.copy(this.tempQuaternion)),S.name==="Z"&&(this.tempQuaternion.setFromAxisAngle(this.unitZ,Math.atan2(this.alignVector.y,this.alignVector.x)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),S.quaternion.copy(this.tempQuaternion))),S.visible=S.visible&&(S.name.indexOf("X")===-1||this.showX),S.visible=S.visible&&(S.name.indexOf("Y")===-1||this.showY),S.visible=S.visible&&(S.name.indexOf("Z")===-1||this.showZ),S.visible=S.visible&&(S.name.indexOf("E")===-1||this.showX&&this.showY&&this.showZ),S.material.tempOpacity=S.material.tempOpacity||S.material.opacity,S.material.tempColor=S.material.tempColor||S.material.color.clone(),S.material.color.copy(S.material.tempColor),S.material.opacity=S.material.tempOpacity,this.enabled?this.axis&&(S.name===this.axis?(S.material.opacity=1,S.material.color.lerp(new m.Color(1,1,1),.5)):this.axis.split("").some(function(Ee){return S.name===Ee})?(S.material.opacity=1,S.material.color.lerp(new m.Color(1,1,1),.5)):(S.material.opacity*=.25,S.material.color.lerp(new m.Color(1,1,1),.5))):(S.material.opacity*=.5,S.material.color.lerp(new m.Color(1,1,1),.5))}super.updateMatrixWorld()});const l=new m.MeshBasicMaterial({depthTest:!1,depthWrite:!1,transparent:!0,side:m.DoubleSide,fog:!1,toneMapped:!1}),c=new m.LineBasicMaterial({depthTest:!1,depthWrite:!1,transparent:!0,linewidth:1,fog:!1,toneMapped:!1}),o=l.clone();o.opacity=.15;const h=l.clone();h.opacity=.33;const d=l.clone();d.color.set(16711680);const f=l.clone();f.color.set(65280);const v=l.clone();v.color.set(255);const b=l.clone();b.opacity=.25;const w=b.clone();w.color.set(16776960);const y=b.clone();y.color.set(65535);const x=b.clone();x.color.set(16711935),l.clone().color.set(16776960);const D=c.clone();D.color.set(16711680);const T=c.clone();T.color.set(65280);const E=c.clone();E.color.set(255);const O=c.clone();O.color.set(65535);const N=c.clone();N.color.set(16711935);const X=c.clone();X.color.set(16776960);const z=c.clone();z.color.set(7895160);const ne=X.clone();ne.opacity=.25;const ce=new m.CylinderGeometry(0,.05,.2,12,1,!1),H=new m.BoxGeometry(.125,.125,.125),U=new m.BufferGeometry;U.setAttribute("position",new m.Float32BufferAttribute([0,0,0,1,0,0],3));const q=(ue,Z)=>{const ae=new m.BufferGeometry,K=[];for(let S=0;S<=64*Z;++S)K.push(0,Math.cos(S/32*Math.PI)*ue,Math.sin(S/32*Math.PI)*ue);return ae.setAttribute("position",new m.Float32BufferAttribute(K,3)),ae},se=()=>{const ue=new m.BufferGeometry;return ue.setAttribute("position",new m.Float32BufferAttribute([0,0,0,1,1,1],3)),ue},oe={X:[[new m.Mesh(ce,d),[1,0,0],[0,0,-Math.PI/2],null,"fwd"],[new m.Mesh(ce,d),[1,0,0],[0,0,Math.PI/2],null,"bwd"],[new m.Line(U,D)]],Y:[[new m.Mesh(ce,f),[0,1,0],null,null,"fwd"],[new m.Mesh(ce,f),[0,1,0],[Math.PI,0,0],null,"bwd"],[new m.Line(U,T),null,[0,0,Math.PI/2]]],Z:[[new m.Mesh(ce,v),[0,0,1],[Math.PI/2,0,0],null,"fwd"],[new m.Mesh(ce,v),[0,0,1],[-Math.PI/2,0,0],null,"bwd"],[new m.Line(U,E),null,[0,-Math.PI/2,0]]],XYZ:[[new m.Mesh(new m.OctahedronGeometry(.1,0),b.clone()),[0,0,0],[0,0,0]]],XY:[[new m.Mesh(new m.PlaneGeometry(.295,.295),w.clone()),[.15,.15,0]],[new m.Line(U,X),[.18,.3,0],null,[.125,1,1]],[new m.Line(U,X),[.3,.18,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new m.Mesh(new m.PlaneGeometry(.295,.295),y.clone()),[0,.15,.15],[0,Math.PI/2,0]],[new m.Line(U,O),[0,.18,.3],[0,0,Math.PI/2],[.125,1,1]],[new m.Line(U,O),[0,.3,.18],[0,-Math.PI/2,0],[.125,1,1]]],XZ:[[new m.Mesh(new m.PlaneGeometry(.295,.295),x.clone()),[.15,0,.15],[-Math.PI/2,0,0]],[new m.Line(U,N),[.18,0,.3],null,[.125,1,1]],[new m.Line(U,N),[.3,0,.18],[0,-Math.PI/2,0],[.125,1,1]]]},_e={X:[[new m.Mesh(new m.CylinderGeometry(.2,0,1,4,1,!1),o),[.6,0,0],[0,0,-Math.PI/2]]],Y:[[new m.Mesh(new m.CylinderGeometry(.2,0,1,4,1,!1),o),[0,.6,0]]],Z:[[new m.Mesh(new m.CylinderGeometry(.2,0,1,4,1,!1),o),[0,0,.6],[Math.PI/2,0,0]]],XYZ:[[new m.Mesh(new m.OctahedronGeometry(.2,0),o)]],XY:[[new m.Mesh(new m.PlaneGeometry(.4,.4),o),[.2,.2,0]]],YZ:[[new m.Mesh(new m.PlaneGeometry(.4,.4),o),[0,.2,.2],[0,Math.PI/2,0]]],XZ:[[new m.Mesh(new m.PlaneGeometry(.4,.4),o),[.2,0,.2],[-Math.PI/2,0,0]]]},Ce={START:[[new m.Mesh(new m.OctahedronGeometry(.01,2),h),null,null,null,"helper"]],END:[[new m.Mesh(new m.OctahedronGeometry(.01,2),h),null,null,null,"helper"]],DELTA:[[new m.Line(se(),h),null,null,null,"helper"]],X:[[new m.Line(U,h.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new m.Line(U,h.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new m.Line(U,h.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},ve={X:[[new m.Line(q(1,.5),D)],[new m.Mesh(new m.OctahedronGeometry(.04,0),d),[0,0,.99],null,[1,3,1]]],Y:[[new m.Line(q(1,.5),T),null,[0,0,-Math.PI/2]],[new m.Mesh(new m.OctahedronGeometry(.04,0),f),[0,0,.99],null,[3,1,1]]],Z:[[new m.Line(q(1,.5),E),null,[0,Math.PI/2,0]],[new m.Mesh(new m.OctahedronGeometry(.04,0),v),[.99,0,0],null,[1,3,1]]],E:[[new m.Line(q(1.25,1),ne),null,[0,Math.PI/2,0]],[new m.Mesh(new m.CylinderGeometry(.03,0,.15,4,1,!1),ne),[1.17,0,0],[0,0,-Math.PI/2],[1,1,.001]],[new m.Mesh(new m.CylinderGeometry(.03,0,.15,4,1,!1),ne),[-1.17,0,0],[0,0,Math.PI/2],[1,1,.001]],[new m.Mesh(new m.CylinderGeometry(.03,0,.15,4,1,!1),ne),[0,-1.17,0],[Math.PI,0,0],[1,1,.001]],[new m.Mesh(new m.CylinderGeometry(.03,0,.15,4,1,!1),ne),[0,1.17,0],[0,0,0],[1,1,.001]]],XYZE:[[new m.Line(q(1,1),z),null,[0,Math.PI/2,0]]]},he={AXIS:[[new m.Line(U,h.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]]},ge={X:[[new m.Mesh(new m.TorusGeometry(1,.1,4,24),o),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],Y:[[new m.Mesh(new m.TorusGeometry(1,.1,4,24),o),[0,0,0],[Math.PI/2,0,0]]],Z:[[new m.Mesh(new m.TorusGeometry(1,.1,4,24),o),[0,0,0],[0,0,-Math.PI/2]]],E:[[new m.Mesh(new m.TorusGeometry(1.25,.1,2,24),o)]],XYZE:[[new m.Mesh(new m.SphereGeometry(.7,10,8),o)]]},ee={X:[[new m.Mesh(H,d),[.8,0,0],[0,0,-Math.PI/2]],[new m.Line(U,D),null,null,[.8,1,1]]],Y:[[new m.Mesh(H,f),[0,.8,0]],[new m.Line(U,T),null,[0,0,Math.PI/2],[.8,1,1]]],Z:[[new m.Mesh(H,v),[0,0,.8],[Math.PI/2,0,0]],[new m.Line(U,E),null,[0,-Math.PI/2,0],[.8,1,1]]],XY:[[new m.Mesh(H,w),[.85,.85,0],null,[2,2,.2]],[new m.Line(U,X),[.855,.98,0],null,[.125,1,1]],[new m.Line(U,X),[.98,.855,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new m.Mesh(H,y),[0,.85,.85],null,[.2,2,2]],[new m.Line(U,O),[0,.855,.98],[0,0,Math.PI/2],[.125,1,1]],[new m.Line(U,O),[0,.98,.855],[0,-Math.PI/2,0],[.125,1,1]]],XZ:[[new m.Mesh(H,x),[.85,0,.85],null,[2,.2,2]],[new m.Line(U,N),[.855,0,.98],null,[.125,1,1]],[new m.Line(U,N),[.98,0,.855],[0,-Math.PI/2,0],[.125,1,1]]],XYZX:[[new m.Mesh(new m.BoxGeometry(.125,.125,.125),b.clone()),[1.1,0,0]]],XYZY:[[new m.Mesh(new m.BoxGeometry(.125,.125,.125),b.clone()),[0,1.1,0]]],XYZZ:[[new m.Mesh(new m.BoxGeometry(.125,.125,.125),b.clone()),[0,0,1.1]]]},$={X:[[new m.Mesh(new m.CylinderGeometry(.2,0,.8,4,1,!1),o),[.5,0,0],[0,0,-Math.PI/2]]],Y:[[new m.Mesh(new m.CylinderGeometry(.2,0,.8,4,1,!1),o),[0,.5,0]]],Z:[[new m.Mesh(new m.CylinderGeometry(.2,0,.8,4,1,!1),o),[0,0,.5],[Math.PI/2,0,0]]],XY:[[new m.Mesh(H,o),[.85,.85,0],null,[3,3,.2]]],YZ:[[new m.Mesh(H,o),[0,.85,.85],null,[.2,3,3]]],XZ:[[new m.Mesh(H,o),[.85,0,.85],null,[3,.2,3]]],XYZX:[[new m.Mesh(new m.BoxGeometry(.2,.2,.2),o),[1.1,0,0]]],XYZY:[[new m.Mesh(new m.BoxGeometry(.2,.2,.2),o),[0,1.1,0]]],XYZZ:[[new m.Mesh(new m.BoxGeometry(.2,.2,.2),o),[0,0,1.1]]]},Je={X:[[new m.Line(U,h.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new m.Line(U,h.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new m.Line(U,h.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},Pe=ue=>{const Z=new m.Object3D;for(let ae in ue)for(let K=ue[ae].length;K--;){const S=ue[ae][K][0].clone(),Ae=ue[ae][K][1],Ee=ue[ae][K][2],Fe=ue[ae][K][3],He=ue[ae][K][4];S.name=ae,S.tag=He,Ae&&S.position.set(Ae[0],Ae[1],Ae[2]),Ee&&S.rotation.set(Ee[0],Ee[1],Ee[2]),Fe&&S.scale.set(Fe[0],Fe[1],Fe[2]),S.updateMatrix();const we=S.geometry.clone();we.applyMatrix4(S.matrix),S.geometry=we,S.renderOrder=1/0,S.position.set(0,0,0),S.rotation.set(0,0,0),S.scale.set(1,1,1),Z.add(S)}return Z};this.gizmo={},this.picker={},this.helper={},this.add(this.gizmo.translate=Pe(oe)),this.add(this.gizmo.rotate=Pe(ve)),this.add(this.gizmo.scale=Pe(ee)),this.add(this.picker.translate=Pe(_e)),this.add(this.picker.rotate=Pe(ge)),this.add(this.picker.scale=Pe($)),this.add(this.helper.translate=Pe(Ce)),this.add(this.helper.rotate=Pe(he)),this.add(this.helper.scale=Pe(Je)),this.picker.translate.visible=!1,this.picker.rotate.visible=!1,this.picker.scale.visible=!1}}class Kr extends m.Mesh{constructor(){super(new m.PlaneGeometry(1e5,1e5,2,2),new m.MeshBasicMaterial({visible:!1,wireframe:!0,side:m.DoubleSide,transparent:!0,opacity:.1,toneMapped:!1})),C(this,"isTransformControlsPlane",!0),C(this,"type","TransformControlsPlane"),C(this,"unitX",new m.Vector3(1,0,0)),C(this,"unitY",new m.Vector3(0,1,0)),C(this,"unitZ",new m.Vector3(0,0,1)),C(this,"tempVector",new m.Vector3),C(this,"dirVector",new m.Vector3),C(this,"alignVector",new m.Vector3),C(this,"tempMatrix",new m.Matrix4),C(this,"identityQuaternion",new m.Quaternion),C(this,"cameraQuaternion",new m.Quaternion),C(this,"worldPosition",new m.Vector3),C(this,"worldQuaternion",new m.Quaternion),C(this,"eye",new m.Vector3),C(this,"axis",null),C(this,"mode","translate"),C(this,"space","world"),C(this,"updateMatrixWorld",()=>{let l=this.space;switch(this.position.copy(this.worldPosition),this.mode==="scale"&&(l="local"),this.unitX.set(1,0,0).applyQuaternion(l==="local"?this.worldQuaternion:this.identityQuaternion),this.unitY.set(0,1,0).applyQuaternion(l==="local"?this.worldQuaternion:this.identityQuaternion),this.unitZ.set(0,0,1).applyQuaternion(l==="local"?this.worldQuaternion:this.identityQuaternion),this.alignVector.copy(this.unitY),this.mode){case"translate":case"scale":switch(this.axis){case"X":this.alignVector.copy(this.eye).cross(this.unitX),this.dirVector.copy(this.unitX).cross(this.alignVector);break;case"Y":this.alignVector.copy(this.eye).cross(this.unitY),this.dirVector.copy(this.unitY).cross(this.alignVector);break;case"Z":this.alignVector.copy(this.eye).cross(this.unitZ),this.dirVector.copy(this.unitZ).cross(this.alignVector);break;case"XY":this.dirVector.copy(this.unitZ);break;case"YZ":this.dirVector.copy(this.unitX);break;case"XZ":this.alignVector.copy(this.unitZ),this.dirVector.copy(this.unitY);break;case"XYZ":case"E":this.dirVector.set(0,0,0);break}break;case"rotate":default:this.dirVector.set(0,0,0)}this.dirVector.length()===0?this.quaternion.copy(this.cameraQuaternion):(this.tempMatrix.lookAt(this.tempVector.set(0,0,0),this.dirVector,this.alignVector),this.quaternion.setFromRotationMatrix(this.tempMatrix)),super.updateMatrixWorld()})}}const Gs=(L,l)=>(L%l+l)%l;class $r extends m.EventDispatcher{constructor(l,c){super(),C(this,"object",void 0),C(this,"domElement",void 0),C(this,"enabled",!0),C(this,"target",new m.Vector3),C(this,"minDistance",0),C(this,"maxDistance",1/0),C(this,"minZoom",0),C(this,"maxZoom",1/0),C(this,"minPolarAngle",0),C(this,"maxPolarAngle",Math.PI),C(this,"minAzimuthAngle",-1/0),C(this,"maxAzimuthAngle",1/0),C(this,"enableDamping",!1),C(this,"dampingFactor",.05),C(this,"enableZoom",!0),C(this,"zoomSpeed",1),C(this,"enableRotate",!0),C(this,"rotateSpeed",1),C(this,"enablePan",!0),C(this,"panSpeed",1),C(this,"screenSpacePanning",!0),C(this,"keyPanSpeed",7),C(this,"autoRotate",!1),C(this,"autoRotateSpeed",2),C(this,"reverseOrbit",!1),C(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),C(this,"mouseButtons",{LEFT:m.MOUSE.ROTATE,MIDDLE:m.MOUSE.DOLLY,RIGHT:m.MOUSE.PAN}),C(this,"touches",{ONE:m.TOUCH.ROTATE,TWO:m.TOUCH.DOLLY_PAN}),C(this,"target0",void 0),C(this,"position0",void 0),C(this,"zoom0",void 0),C(this,"_domElementKeyEvents",null),C(this,"getPolarAngle",void 0),C(this,"getAzimuthalAngle",void 0),C(this,"setPolarAngle",void 0),C(this,"setAzimuthalAngle",void 0),C(this,"getDistance",void 0),C(this,"listenToKeyEvents",void 0),C(this,"saveState",void 0),C(this,"reset",void 0),C(this,"update",void 0),C(this,"connect",void 0),C(this,"dispose",void 0),this.object=l,this.domElement=c,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object instanceof m.PerspectiveCamera?this.object.zoom:1,this.getPolarAngle=()=>y.phi,this.getAzimuthalAngle=()=>y.theta,this.setPolarAngle=M=>{let j=Gs(M,2*Math.PI),Y=y.phi;Y<0&&(Y+=2*Math.PI),j<0&&(j+=2*Math.PI);let J=Math.abs(j-Y);2*Math.PI-J<J&&(j<Y?j+=2*Math.PI:Y+=2*Math.PI),x.phi=j-Y,o.update()},this.setAzimuthalAngle=M=>{let j=Gs(M,2*Math.PI),Y=y.theta;Y<0&&(Y+=2*Math.PI),j<0&&(j+=2*Math.PI);let J=Math.abs(j-Y);2*Math.PI-J<J&&(j<Y?j+=2*Math.PI:Y+=2*Math.PI),x.theta=j-Y,o.update()},this.getDistance=()=>o.object.position.distanceTo(o.target),this.listenToKeyEvents=M=>{M.addEventListener("keydown",nt),this._domElementKeyEvents=M},this.saveState=()=>{o.target0.copy(o.target),o.position0.copy(o.object.position),o.zoom0=o.object instanceof m.PerspectiveCamera?o.object.zoom:1},this.reset=()=>{o.target.copy(o.target0),o.object.position.copy(o.position0),o.object instanceof m.PerspectiveCamera&&(o.object.zoom=o.zoom0,o.object.updateProjectionMatrix()),o.dispatchEvent(h),o.update(),b=v.NONE},this.update=(()=>{const M=new m.Vector3,j=new m.Quaternion().setFromUnitVectors(l.up,new m.Vector3(0,1,0)),Y=j.clone().invert(),J=new m.Vector3,de=new m.Quaternion,Oe=2*Math.PI;return function(){const en=o.object.position;M.copy(en).sub(o.target),M.applyQuaternion(j),y.setFromVector3(M),o.autoRotate&&b===v.NONE&&Ce(oe()),o.enableDamping?(y.theta+=x.theta*o.dampingFactor,y.phi+=x.phi*o.dampingFactor):(y.theta+=x.theta,y.phi+=x.phi);let Me=o.minAzimuthAngle,Se=o.maxAzimuthAngle;return isFinite(Me)&&isFinite(Se)&&(Me<-Math.PI?Me+=Oe:Me>Math.PI&&(Me-=Oe),Se<-Math.PI?Se+=Oe:Se>Math.PI&&(Se-=Oe),Me<=Se?y.theta=Math.max(Me,Math.min(Se,y.theta)):y.theta=y.theta>(Me+Se)/2?Math.max(Me,y.theta):Math.min(Se,y.theta)),y.phi=Math.max(o.minPolarAngle,Math.min(o.maxPolarAngle,y.phi)),y.makeSafe(),y.radius*=V,y.radius=Math.max(o.minDistance,Math.min(o.maxDistance,y.radius)),o.enableDamping===!0?o.target.addScaledVector(D,o.dampingFactor):o.target.add(D),M.setFromSpherical(y),M.applyQuaternion(Y),en.copy(o.target).add(M),o.object.lookAt(o.target),o.enableDamping===!0?(x.theta*=1-o.dampingFactor,x.phi*=1-o.dampingFactor,D.multiplyScalar(1-o.dampingFactor)):(x.set(0,0,0),D.set(0,0,0)),V=1,T||J.distanceToSquared(o.object.position)>w||8*(1-de.dot(o.object.quaternion))>w?(o.dispatchEvent(h),J.copy(o.object.position),de.copy(o.object.quaternion),T=!1,!0):!1}})(),this.connect=M=>{M===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),o.domElement=M,o.domElement.style.touchAction="none",o.domElement.addEventListener("contextmenu",Ue),o.domElement.addEventListener("pointerdown",Ft),o.domElement.addEventListener("pointercancel",tt),o.domElement.addEventListener("wheel",Be)},this.dispose=()=>{var M,j,Y,J,de,Oe;(M=o.domElement)===null||M===void 0||M.removeEventListener("contextmenu",Ue),(j=o.domElement)===null||j===void 0||j.removeEventListener("pointerdown",Ft),(Y=o.domElement)===null||Y===void 0||Y.removeEventListener("pointercancel",tt),(J=o.domElement)===null||J===void 0||J.removeEventListener("wheel",Be),(de=o.domElement)===null||de===void 0||de.ownerDocument.removeEventListener("pointermove",et),(Oe=o.domElement)===null||Oe===void 0||Oe.ownerDocument.removeEventListener("pointerup",pt),o._domElementKeyEvents!==null&&o._domElementKeyEvents.removeEventListener("keydown",nt)};const o=this,h={type:"change"},d={type:"start"},f={type:"end"},v={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let b=v.NONE;const w=1e-6,y=new m.Spherical,x=new m.Spherical;let V=1;const D=new m.Vector3;let T=!1;const E=new m.Vector2,O=new m.Vector2,N=new m.Vector2,X=new m.Vector2,z=new m.Vector2,ne=new m.Vector2,ce=new m.Vector2,H=new m.Vector2,U=new m.Vector2,q=[],se={};function oe(){return 2*Math.PI/60/60*o.autoRotateSpeed}function _e(){return Math.pow(.95,o.zoomSpeed)}function Ce(M){o.reverseOrbit?x.theta+=M:x.theta-=M}function ve(M){o.reverseOrbit?x.phi+=M:x.phi-=M}const he=(()=>{const M=new m.Vector3;return function(Y,J){M.setFromMatrixColumn(J,0),M.multiplyScalar(-Y),D.add(M)}})(),ge=(()=>{const M=new m.Vector3;return function(Y,J){o.screenSpacePanning===!0?M.setFromMatrixColumn(J,1):(M.setFromMatrixColumn(J,0),M.crossVectors(o.object.up,M)),M.multiplyScalar(Y),D.add(M)}})(),ee=(()=>{const M=new m.Vector3;return function(Y,J){const de=o.domElement;if(de&&o.object instanceof m.PerspectiveCamera&&o.object.isPerspectiveCamera){const Oe=o.object.position;M.copy(Oe).sub(o.target);let yt=M.length();yt*=Math.tan(o.object.fov/2*Math.PI/180),he(2*Y*yt/de.clientHeight,o.object.matrix),ge(2*J*yt/de.clientHeight,o.object.matrix)}else de&&o.object instanceof m.OrthographicCamera&&o.object.isOrthographicCamera?(he(Y*(o.object.right-o.object.left)/o.object.zoom/de.clientWidth,o.object.matrix),ge(J*(o.object.top-o.object.bottom)/o.object.zoom/de.clientHeight,o.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),o.enablePan=!1)}})();function $(M){o.object instanceof m.PerspectiveCamera&&o.object.isPerspectiveCamera?V/=M:o.object instanceof m.OrthographicCamera&&o.object.isOrthographicCamera?(o.object.zoom=Math.max(o.minZoom,Math.min(o.maxZoom,o.object.zoom*M)),o.object.updateProjectionMatrix(),T=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),o.enableZoom=!1)}function Je(M){o.object instanceof m.PerspectiveCamera&&o.object.isPerspectiveCamera?V*=M:o.object instanceof m.OrthographicCamera&&o.object.isOrthographicCamera?(o.object.zoom=Math.max(o.minZoom,Math.min(o.maxZoom,o.object.zoom/M)),o.object.updateProjectionMatrix(),T=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),o.enableZoom=!1)}function Pe(M){E.set(M.clientX,M.clientY)}function ue(M){ce.set(M.clientX,M.clientY)}function Z(M){X.set(M.clientX,M.clientY)}function ae(M){O.set(M.clientX,M.clientY),N.subVectors(O,E).multiplyScalar(o.rotateSpeed);const j=o.domElement;j&&(Ce(2*Math.PI*N.x/j.clientHeight),ve(2*Math.PI*N.y/j.clientHeight)),E.copy(O),o.update()}function K(M){H.set(M.clientX,M.clientY),U.subVectors(H,ce),U.y>0?$(_e()):U.y<0&&Je(_e()),ce.copy(H),o.update()}function S(M){z.set(M.clientX,M.clientY),ne.subVectors(z,X).multiplyScalar(o.panSpeed),ee(ne.x,ne.y),X.copy(z),o.update()}function Ae(M){M.deltaY<0?Je(_e()):M.deltaY>0&&$(_e()),o.update()}function Ee(M){let j=!1;switch(M.code){case o.keys.UP:ee(0,o.keyPanSpeed),j=!0;break;case o.keys.BOTTOM:ee(0,-o.keyPanSpeed),j=!0;break;case o.keys.LEFT:ee(o.keyPanSpeed,0),j=!0;break;case o.keys.RIGHT:ee(-o.keyPanSpeed,0),j=!0;break}j&&(M.preventDefault(),o.update())}function Fe(){if(q.length==1)E.set(q[0].pageX,q[0].pageY);else{const M=.5*(q[0].pageX+q[1].pageX),j=.5*(q[0].pageY+q[1].pageY);E.set(M,j)}}function He(){if(q.length==1)X.set(q[0].pageX,q[0].pageY);else{const M=.5*(q[0].pageX+q[1].pageX),j=.5*(q[0].pageY+q[1].pageY);X.set(M,j)}}function we(){const M=q[0].pageX-q[1].pageX,j=q[0].pageY-q[1].pageY,Y=Math.sqrt(M*M+j*j);ce.set(0,Y)}function Ie(){o.enableZoom&&we(),o.enablePan&&He()}function lt(){o.enableZoom&&we(),o.enableRotate&&Fe()}function ct(M){if(q.length==1)O.set(M.pageX,M.pageY);else{const Y=$e(M),J=.5*(M.pageX+Y.x),de=.5*(M.pageY+Y.y);O.set(J,de)}N.subVectors(O,E).multiplyScalar(o.rotateSpeed);const j=o.domElement;j&&(Ce(2*Math.PI*N.x/j.clientHeight),ve(2*Math.PI*N.y/j.clientHeight)),E.copy(O)}function _t(M){if(q.length==1)z.set(M.pageX,M.pageY);else{const j=$e(M),Y=.5*(M.pageX+j.x),J=.5*(M.pageY+j.y);z.set(Y,J)}ne.subVectors(z,X).multiplyScalar(o.panSpeed),ee(ne.x,ne.y),X.copy(z)}function wt(M){const j=$e(M),Y=M.pageX-j.x,J=M.pageY-j.y,de=Math.sqrt(Y*Y+J*J);H.set(0,de),U.set(0,Math.pow(H.y/ce.y,o.zoomSpeed)),$(U.y),ce.copy(H)}function _n(M){o.enableZoom&&wt(M),o.enablePan&&_t(M)}function wn(M){o.enableZoom&&wt(M),o.enableRotate&&ct(M)}function Ft(M){if(o.enabled!==!1){if(q.length===0){var j,Y;(j=o.domElement)===null||j===void 0||j.ownerDocument.addEventListener("pointermove",et),(Y=o.domElement)===null||Y===void 0||Y.ownerDocument.addEventListener("pointerup",pt)}xt(M),M.pointerType==="touch"?xn(M):Jt(M)}}function et(M){o.enabled!==!1&&(M.pointerType==="touch"?zt(M):Ht(M))}function pt(M){if(Te(M),q.length===0){var j,Y,J;(j=o.domElement)===null||j===void 0||j.releasePointerCapture(M.pointerId),(Y=o.domElement)===null||Y===void 0||Y.ownerDocument.removeEventListener("pointermove",et),(J=o.domElement)===null||J===void 0||J.ownerDocument.removeEventListener("pointerup",pt)}o.dispatchEvent(f),b=v.NONE}function tt(M){Te(M)}function Jt(M){let j;switch(M.button){case 0:j=o.mouseButtons.LEFT;break;case 1:j=o.mouseButtons.MIDDLE;break;case 2:j=o.mouseButtons.RIGHT;break;default:j=-1}switch(j){case m.MOUSE.DOLLY:if(o.enableZoom===!1)return;ue(M),b=v.DOLLY;break;case m.MOUSE.ROTATE:if(M.ctrlKey||M.metaKey||M.shiftKey){if(o.enablePan===!1)return;Z(M),b=v.PAN}else{if(o.enableRotate===!1)return;Pe(M),b=v.ROTATE}break;case m.MOUSE.PAN:if(M.ctrlKey||M.metaKey||M.shiftKey){if(o.enableRotate===!1)return;Pe(M),b=v.ROTATE}else{if(o.enablePan===!1)return;Z(M),b=v.PAN}break;default:b=v.NONE}b!==v.NONE&&o.dispatchEvent(d)}function Ht(M){if(o.enabled!==!1)switch(b){case v.ROTATE:if(o.enableRotate===!1)return;ae(M);break;case v.DOLLY:if(o.enableZoom===!1)return;K(M);break;case v.PAN:if(o.enablePan===!1)return;S(M);break}}function Be(M){o.enabled===!1||o.enableZoom===!1||b!==v.NONE&&b!==v.ROTATE||(M.preventDefault(),o.dispatchEvent(d),Ae(M),o.dispatchEvent(f))}function nt(M){o.enabled===!1||o.enablePan===!1||Ee(M)}function xn(M){switch(Ke(M),q.length){case 1:switch(o.touches.ONE){case m.TOUCH.ROTATE:if(o.enableRotate===!1)return;Fe(),b=v.TOUCH_ROTATE;break;case m.TOUCH.PAN:if(o.enablePan===!1)return;He(),b=v.TOUCH_PAN;break;default:b=v.NONE}break;case 2:switch(o.touches.TWO){case m.TOUCH.DOLLY_PAN:if(o.enableZoom===!1&&o.enablePan===!1)return;Ie(),b=v.TOUCH_DOLLY_PAN;break;case m.TOUCH.DOLLY_ROTATE:if(o.enableZoom===!1&&o.enableRotate===!1)return;lt(),b=v.TOUCH_DOLLY_ROTATE;break;default:b=v.NONE}break;default:b=v.NONE}b!==v.NONE&&o.dispatchEvent(d)}function zt(M){switch(Ke(M),b){case v.TOUCH_ROTATE:if(o.enableRotate===!1)return;ct(M),o.update();break;case v.TOUCH_PAN:if(o.enablePan===!1)return;_t(M),o.update();break;case v.TOUCH_DOLLY_PAN:if(o.enableZoom===!1&&o.enablePan===!1)return;_n(M),o.update();break;case v.TOUCH_DOLLY_ROTATE:if(o.enableZoom===!1&&o.enableRotate===!1)return;wn(M),o.update();break;default:b=v.NONE}}function Ue(M){o.enabled!==!1&&M.preventDefault()}function xt(M){q.push(M)}function Te(M){delete se[M.pointerId];for(let j=0;j<q.length;j++)if(q[j].pointerId==M.pointerId){q.splice(j,1);return}}function Ke(M){let j=se[M.pointerId];j===void 0&&(j=new m.Vector2,se[M.pointerId]=j),j.set(M.pageX,M.pageY)}function $e(M){const j=M.pointerId===q[0].pointerId?q[1]:q[0];return se[j.pointerId]}c!==void 0&&this.connect(c),this.update()}}class Yr extends m.Loader{constructor(l){super(l),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(c){return new Wr(c)}),this.register(function(c){return new so(c)}),this.register(function(c){return new ro(c)}),this.register(function(c){return new Hr(c)}),this.register(function(c){return new eo(c)}),this.register(function(c){return new to(c)}),this.register(function(c){return new no(c)}),this.register(function(c){return new Zr(c)}),this.register(function(c){return new io(c)}),this.register(function(c){return new Jr(c)}),this.register(function(c){return new Xr(c)}),this.register(function(c){return new oo(c)})}load(l,c,o,h){const d=this;let f;this.resourcePath!==""?f=this.resourcePath:this.path!==""?f=this.path:f=m.LoaderUtils.extractUrlBase(l),this.manager.itemStart(l);const v=function(w){h?h(w):console.error(w),d.manager.itemError(l),d.manager.itemEnd(l)},b=new m.FileLoader(this.manager);b.setPath(this.path),b.setResponseType("arraybuffer"),b.setRequestHeader(this.requestHeader),b.setWithCredentials(this.withCredentials),b.load(l,function(w){try{d.parse(w,f,function(y){c(y),d.manager.itemEnd(l)},v)}catch(y){v(y)}},o,v)}setDRACOLoader(l){return this.dracoLoader=l,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(l){return this.ktx2Loader=l,this}setMeshoptDecoder(l){return this.meshoptDecoder=l,this}register(l){return this.pluginCallbacks.indexOf(l)===-1&&this.pluginCallbacks.push(l),this}unregister(l){return this.pluginCallbacks.indexOf(l)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(l),1),this}parse(l,c,o,h){let d;const f={},v={};if(typeof l=="string")d=l;else if(m.LoaderUtils.decodeText(new Uint8Array(l,0,4))===Ks){try{f[W.KHR_BINARY_GLTF]=new ao(l)}catch(x){h&&h(x);return}d=f[W.KHR_BINARY_GLTF].content}else d=m.LoaderUtils.decodeText(new Uint8Array(l));const b=JSON.parse(d);if(b.asset===void 0||b.asset.version[0]<2){h&&h(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const w=new xo(b,{path:c||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});w.fileLoader.setRequestHeader(this.requestHeader);for(let y=0;y<this.pluginCallbacks.length;y++){const x=this.pluginCallbacks[y](w);v[x.name]=x,f[x.name]=!0}if(b.extensionsUsed)for(let y=0;y<b.extensionsUsed.length;++y){const x=b.extensionsUsed[y],V=b.extensionsRequired||[];switch(x){case W.KHR_MATERIALS_UNLIT:f[x]=new Qr;break;case W.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:f[x]=new po;break;case W.KHR_DRACO_MESH_COMPRESSION:f[x]=new lo(b,this.dracoLoader);break;case W.KHR_TEXTURE_TRANSFORM:f[x]=new co;break;case W.KHR_MESH_QUANTIZATION:f[x]=new uo;break;default:V.indexOf(x)>=0&&v[x]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+x+'".')}}w.setExtensions(f),w.setPlugins(v),w.parse(o,h)}parseAsync(l,c){const o=this;return new Promise(function(h,d){o.parse(l,c,h,d)})}}function qr(){let L={};return{get:function(l){return L[l]},add:function(l,c){L[l]=c},remove:function(l){delete L[l]},removeAll:function(){L={}}}}const W={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:"KHR_materials_pbrSpecularGlossiness",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression"};class Xr{constructor(l){this.parser=l,this.name=W.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const l=this.parser,c=this.parser.json.nodes||[];for(let o=0,h=c.length;o<h;o++){const d=c[o];d.extensions&&d.extensions[this.name]&&d.extensions[this.name].light!==void 0&&l._addNodeRef(this.cache,d.extensions[this.name].light)}}_loadLight(l){const c=this.parser,o="light:"+l;let h=c.cache.get(o);if(h)return h;const d=c.json,b=((d.extensions&&d.extensions[this.name]||{}).lights||[])[l];let w;const y=new m.Color(16777215);b.color!==void 0&&y.fromArray(b.color);const x=b.range!==void 0?b.range:0;switch(b.type){case"directional":w=new m.DirectionalLight(y),w.target.position.set(0,0,-1),w.add(w.target);break;case"point":w=new m.PointLight(y),w.distance=x;break;case"spot":w=new m.SpotLight(y),w.distance=x,b.spot=b.spot||{},b.spot.innerConeAngle=b.spot.innerConeAngle!==void 0?b.spot.innerConeAngle:0,b.spot.outerConeAngle=b.spot.outerConeAngle!==void 0?b.spot.outerConeAngle:Math.PI/4,w.angle=b.spot.outerConeAngle,w.penumbra=1-b.spot.innerConeAngle/b.spot.outerConeAngle,w.target.position.set(0,0,-1),w.add(w.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+b.type)}return w.position.set(0,0,0),w.decay=2,b.intensity!==void 0&&(w.intensity=b.intensity),w.name=c.createUniqueName(b.name||"light_"+l),h=Promise.resolve(w),c.cache.add(o,h),h}createNodeAttachment(l){const c=this,o=this.parser,d=o.json.nodes[l],v=(d.extensions&&d.extensions[this.name]||{}).light;return v===void 0?null:this._loadLight(v).then(function(b){return o._getNodeRef(c.cache,v,b)})}}class Qr{constructor(){this.name=W.KHR_MATERIALS_UNLIT}getMaterialType(){return m.MeshBasicMaterial}extendParams(l,c,o){const h=[];l.color=new m.Color(1,1,1),l.opacity=1;const d=c.pbrMetallicRoughness;if(d){if(Array.isArray(d.baseColorFactor)){const f=d.baseColorFactor;l.color.fromArray(f),l.opacity=f[3]}d.baseColorTexture!==void 0&&h.push(o.assignTexture(l,"map",d.baseColorTexture,m.sRGBEncoding))}return Promise.all(h)}}class Zr{constructor(l){this.parser=l,this.name=W.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(l,c){const h=this.parser.json.materials[l];if(!h.extensions||!h.extensions[this.name])return Promise.resolve();const d=h.extensions[this.name].emissiveStrength;return d!==void 0&&(c.emissiveIntensity=d),Promise.resolve()}}class Wr{constructor(l){this.parser=l,this.name=W.KHR_MATERIALS_CLEARCOAT}getMaterialType(l){const o=this.parser.json.materials[l];return!o.extensions||!o.extensions[this.name]?null:m.MeshPhysicalMaterial}extendMaterialParams(l,c){const o=this.parser,h=o.json.materials[l];if(!h.extensions||!h.extensions[this.name])return Promise.resolve();const d=[],f=h.extensions[this.name];if(f.clearcoatFactor!==void 0&&(c.clearcoat=f.clearcoatFactor),f.clearcoatTexture!==void 0&&d.push(o.assignTexture(c,"clearcoatMap",f.clearcoatTexture)),f.clearcoatRoughnessFactor!==void 0&&(c.clearcoatRoughness=f.clearcoatRoughnessFactor),f.clearcoatRoughnessTexture!==void 0&&d.push(o.assignTexture(c,"clearcoatRoughnessMap",f.clearcoatRoughnessTexture)),f.clearcoatNormalTexture!==void 0&&(d.push(o.assignTexture(c,"clearcoatNormalMap",f.clearcoatNormalTexture)),f.clearcoatNormalTexture.scale!==void 0)){const v=f.clearcoatNormalTexture.scale;c.clearcoatNormalScale=new m.Vector2(v,v)}return Promise.all(d)}}class Jr{constructor(l){this.parser=l,this.name=W.KHR_MATERIALS_IRIDESCENCE}getMaterialType(l){const o=this.parser.json.materials[l];return!o.extensions||!o.extensions[this.name]?null:m.MeshPhysicalMaterial}extendMaterialParams(l,c){const o=this.parser,h=o.json.materials[l];if(!h.extensions||!h.extensions[this.name])return Promise.resolve();const d=[],f=h.extensions[this.name];return f.iridescenceFactor!==void 0&&(c.iridescence=f.iridescenceFactor),f.iridescenceTexture!==void 0&&d.push(o.assignTexture(c,"iridescenceMap",f.iridescenceTexture)),f.iridescenceIor!==void 0&&(c.iridescenceIOR=f.iridescenceIor),c.iridescenceThicknessRange===void 0&&(c.iridescenceThicknessRange=[100,400]),f.iridescenceThicknessMinimum!==void 0&&(c.iridescenceThicknessRange[0]=f.iridescenceThicknessMinimum),f.iridescenceThicknessMaximum!==void 0&&(c.iridescenceThicknessRange[1]=f.iridescenceThicknessMaximum),f.iridescenceThicknessTexture!==void 0&&d.push(o.assignTexture(c,"iridescenceThicknessMap",f.iridescenceThicknessTexture)),Promise.all(d)}}class Hr{constructor(l){this.parser=l,this.name=W.KHR_MATERIALS_SHEEN}getMaterialType(l){const o=this.parser.json.materials[l];return!o.extensions||!o.extensions[this.name]?null:m.MeshPhysicalMaterial}extendMaterialParams(l,c){const o=this.parser,h=o.json.materials[l];if(!h.extensions||!h.extensions[this.name])return Promise.resolve();const d=[];c.sheenColor=new m.Color(0,0,0),c.sheenRoughness=0,c.sheen=1;const f=h.extensions[this.name];return f.sheenColorFactor!==void 0&&c.sheenColor.fromArray(f.sheenColorFactor),f.sheenRoughnessFactor!==void 0&&(c.sheenRoughness=f.sheenRoughnessFactor),f.sheenColorTexture!==void 0&&d.push(o.assignTexture(c,"sheenColorMap",f.sheenColorTexture,m.sRGBEncoding)),f.sheenRoughnessTexture!==void 0&&d.push(o.assignTexture(c,"sheenRoughnessMap",f.sheenRoughnessTexture)),Promise.all(d)}}class eo{constructor(l){this.parser=l,this.name=W.KHR_MATERIALS_TRANSMISSION}getMaterialType(l){const o=this.parser.json.materials[l];return!o.extensions||!o.extensions[this.name]?null:m.MeshPhysicalMaterial}extendMaterialParams(l,c){const o=this.parser,h=o.json.materials[l];if(!h.extensions||!h.extensions[this.name])return Promise.resolve();const d=[],f=h.extensions[this.name];return f.transmissionFactor!==void 0&&(c.transmission=f.transmissionFactor),f.transmissionTexture!==void 0&&d.push(o.assignTexture(c,"transmissionMap",f.transmissionTexture)),Promise.all(d)}}class to{constructor(l){this.parser=l,this.name=W.KHR_MATERIALS_VOLUME}getMaterialType(l){const o=this.parser.json.materials[l];return!o.extensions||!o.extensions[this.name]?null:m.MeshPhysicalMaterial}extendMaterialParams(l,c){const o=this.parser,h=o.json.materials[l];if(!h.extensions||!h.extensions[this.name])return Promise.resolve();const d=[],f=h.extensions[this.name];c.thickness=f.thicknessFactor!==void 0?f.thicknessFactor:0,f.thicknessTexture!==void 0&&d.push(o.assignTexture(c,"thicknessMap",f.thicknessTexture)),c.attenuationDistance=f.attenuationDistance||1/0;const v=f.attenuationColor||[1,1,1];return c.attenuationColor=new m.Color(v[0],v[1],v[2]),Promise.all(d)}}class no{constructor(l){this.parser=l,this.name=W.KHR_MATERIALS_IOR}getMaterialType(l){const o=this.parser.json.materials[l];return!o.extensions||!o.extensions[this.name]?null:m.MeshPhysicalMaterial}extendMaterialParams(l,c){const h=this.parser.json.materials[l];if(!h.extensions||!h.extensions[this.name])return Promise.resolve();const d=h.extensions[this.name];return c.ior=d.ior!==void 0?d.ior:1.5,Promise.resolve()}}class io{constructor(l){this.parser=l,this.name=W.KHR_MATERIALS_SPECULAR}getMaterialType(l){const o=this.parser.json.materials[l];return!o.extensions||!o.extensions[this.name]?null:m.MeshPhysicalMaterial}extendMaterialParams(l,c){const o=this.parser,h=o.json.materials[l];if(!h.extensions||!h.extensions[this.name])return Promise.resolve();const d=[],f=h.extensions[this.name];c.specularIntensity=f.specularFactor!==void 0?f.specularFactor:1,f.specularTexture!==void 0&&d.push(o.assignTexture(c,"specularIntensityMap",f.specularTexture));const v=f.specularColorFactor||[1,1,1];return c.specularColor=new m.Color(v[0],v[1],v[2]),f.specularColorTexture!==void 0&&d.push(o.assignTexture(c,"specularColorMap",f.specularColorTexture,m.sRGBEncoding)),Promise.all(d)}}class so{constructor(l){this.parser=l,this.name=W.KHR_TEXTURE_BASISU}loadTexture(l){const c=this.parser,o=c.json,h=o.textures[l];if(!h.extensions||!h.extensions[this.name])return null;const d=h.extensions[this.name],f=c.options.ktx2Loader;if(!f){if(o.extensionsRequired&&o.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return c.loadTextureImage(l,d.source,f)}}class ro{constructor(l){this.parser=l,this.name=W.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(l){const c=this.name,o=this.parser,h=o.json,d=h.textures[l];if(!d.extensions||!d.extensions[c])return null;const f=d.extensions[c],v=h.images[f.source];let b=o.textureLoader;if(v.uri){const w=o.options.manager.getHandler(v.uri);w!==null&&(b=w)}return this.detectSupport().then(function(w){if(w)return o.loadTextureImage(l,f.source,b);if(h.extensionsRequired&&h.extensionsRequired.indexOf(c)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return o.loadTexture(l)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(l){const c=new Image;c.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",c.onload=c.onerror=function(){l(c.height===1)}})),this.isSupported}}class oo{constructor(l){this.name=W.EXT_MESHOPT_COMPRESSION,this.parser=l}loadBufferView(l){const c=this.parser.json,o=c.bufferViews[l];if(o.extensions&&o.extensions[this.name]){const h=o.extensions[this.name],d=this.parser.getDependency("buffer",h.buffer),f=this.parser.options.meshoptDecoder;if(!f||!f.supported){if(c.extensionsRequired&&c.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return d.then(function(v){const b=h.byteOffset||0,w=h.byteLength||0,y=h.count,x=h.byteStride,V=new Uint8Array(v,b,w);return f.decodeGltfBufferAsync?f.decodeGltfBufferAsync(y,x,V,h.mode,h.filter).then(function(D){return D.buffer}):f.ready.then(function(){const D=new ArrayBuffer(y*x);return f.decodeGltfBuffer(new Uint8Array(D),y,x,V,h.mode,h.filter),D})})}else return null}}const Ks="glTF",fn=12,$s={JSON:1313821514,BIN:5130562};class ao{constructor(l){this.name=W.KHR_BINARY_GLTF,this.content=null,this.body=null;const c=new DataView(l,0,fn);if(this.header={magic:m.LoaderUtils.decodeText(new Uint8Array(l.slice(0,4))),version:c.getUint32(4,!0),length:c.getUint32(8,!0)},this.header.magic!==Ks)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const o=this.header.length-fn,h=new DataView(l,fn);let d=0;for(;d<o;){const f=h.getUint32(d,!0);d+=4;const v=h.getUint32(d,!0);if(d+=4,v===$s.JSON){const b=new Uint8Array(l,fn+d,f);this.content=m.LoaderUtils.decodeText(b)}else if(v===$s.BIN){const b=fn+d;this.body=l.slice(b,b+f)}d+=f}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class lo{constructor(l,c){if(!c)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=W.KHR_DRACO_MESH_COMPRESSION,this.json=l,this.dracoLoader=c,this.dracoLoader.preload()}decodePrimitive(l,c){const o=this.json,h=this.dracoLoader,d=l.extensions[this.name].bufferView,f=l.extensions[this.name].attributes,v={},b={},w={};for(const y in f){const x=Si[y]||y.toLowerCase();v[x]=f[y]}for(const y in l.attributes){const x=Si[y]||y.toLowerCase();if(f[y]!==void 0){const V=o.accessors[l.attributes[y]],D=vn[V.componentType];w[x]=D.name,b[x]=V.normalized===!0}}return c.getDependency("bufferView",d).then(function(y){return new Promise(function(x){h.decodeDracoFile(y,function(V){for(const D in V.attributes){const T=V.attributes[D],E=b[D];E!==void 0&&(T.normalized=E)}x(V)},v,w)})})}}class co{constructor(){this.name=W.KHR_TEXTURE_TRANSFORM}extendTexture(l,c){return c.texCoord!==void 0&&console.warn('THREE.GLTFLoader: Custom UV sets in "'+this.name+'" extension not yet supported.'),c.offset===void 0&&c.rotation===void 0&&c.scale===void 0||(l=l.clone(),c.offset!==void 0&&l.offset.fromArray(c.offset),c.rotation!==void 0&&(l.rotation=c.rotation),c.scale!==void 0&&l.repeat.fromArray(c.scale),l.needsUpdate=!0),l}}class Mi extends m.MeshStandardMaterial{constructor(l){super(),this.isGLTFSpecularGlossinessMaterial=!0;const c=["#ifdef USE_SPECULARMAP"," uniform sampler2D specularMap;","#endif"].join(`
|
|
9
|
+
`),o=["#ifdef USE_GLOSSINESSMAP"," uniform sampler2D glossinessMap;","#endif"].join(`
|
|
10
|
+
`),h=["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
|
+
`),d=["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
|
+
`),f=["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
|
+
`),v={specular:{value:new m.Color().setHex(16777215)},glossiness:{value:1},specularMap:{value:null},glossinessMap:{value:null}};this._extraUniforms=v,this.onBeforeCompile=function(b){for(const w in v)b.uniforms[w]=v[w];b.fragmentShader=b.fragmentShader.replace("uniform float roughness;","uniform vec3 specular;").replace("uniform float metalness;","uniform float glossiness;").replace("#include <roughnessmap_pars_fragment>",c).replace("#include <metalnessmap_pars_fragment>",o).replace("#include <roughnessmap_fragment>",h).replace("#include <metalnessmap_fragment>",d).replace("#include <lights_physical_fragment>",f)},Object.defineProperties(this,{specular:{get:function(){return v.specular.value},set:function(b){v.specular.value=b}},specularMap:{get:function(){return v.specularMap.value},set:function(b){v.specularMap.value=b,b?this.defines.USE_SPECULARMAP="":delete this.defines.USE_SPECULARMAP}},glossiness:{get:function(){return v.glossiness.value},set:function(b){v.glossiness.value=b}},glossinessMap:{get:function(){return v.glossinessMap.value},set:function(b){v.glossinessMap.value=b,b?(this.defines.USE_GLOSSINESSMAP="",this.defines.USE_UV=""):(delete this.defines.USE_GLOSSINESSMAP,delete this.defines.USE_UV)}}}),delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this.setValues(l)}copy(l){return super.copy(l),this.specularMap=l.specularMap,this.specular.copy(l.specular),this.glossinessMap=l.glossinessMap,this.glossiness=l.glossiness,delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this}}class po{constructor(){this.name=W.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,this.specularGlossinessParams=["color","map","lightMap","lightMapIntensity","aoMap","aoMapIntensity","emissive","emissiveIntensity","emissiveMap","bumpMap","bumpScale","normalMap","normalMapType","displacementMap","displacementScale","displacementBias","specularMap","specular","glossinessMap","glossiness","alphaMap","envMap","envMapIntensity","refractionRatio"]}getMaterialType(){return Mi}extendParams(l,c,o){const h=c.extensions[this.name];l.color=new m.Color(1,1,1),l.opacity=1;const d=[];if(Array.isArray(h.diffuseFactor)){const f=h.diffuseFactor;l.color.fromArray(f),l.opacity=f[3]}if(h.diffuseTexture!==void 0&&d.push(o.assignTexture(l,"map",h.diffuseTexture,m.sRGBEncoding)),l.emissive=new m.Color(0,0,0),l.glossiness=h.glossinessFactor!==void 0?h.glossinessFactor:1,l.specular=new m.Color(1,1,1),Array.isArray(h.specularFactor)&&l.specular.fromArray(h.specularFactor),h.specularGlossinessTexture!==void 0){const f=h.specularGlossinessTexture;d.push(o.assignTexture(l,"glossinessMap",f)),d.push(o.assignTexture(l,"specularMap",f,m.sRGBEncoding))}return Promise.all(d)}createMaterial(l){const c=new Mi(l);return c.fog=!0,c.color=l.color,c.map=l.map===void 0?null:l.map,c.lightMap=null,c.lightMapIntensity=1,c.aoMap=l.aoMap===void 0?null:l.aoMap,c.aoMapIntensity=1,c.emissive=l.emissive,c.emissiveIntensity=l.emissiveIntensity===void 0?1:l.emissiveIntensity,c.emissiveMap=l.emissiveMap===void 0?null:l.emissiveMap,c.bumpMap=l.bumpMap===void 0?null:l.bumpMap,c.bumpScale=1,c.normalMap=l.normalMap===void 0?null:l.normalMap,c.normalMapType=m.TangentSpaceNormalMap,l.normalScale&&(c.normalScale=l.normalScale),c.displacementMap=null,c.displacementScale=1,c.displacementBias=0,c.specularMap=l.specularMap===void 0?null:l.specularMap,c.specular=l.specular,c.glossinessMap=l.glossinessMap===void 0?null:l.glossinessMap,c.glossiness=l.glossiness,c.alphaMap=null,c.envMap=l.envMap===void 0?null:l.envMap,c.envMapIntensity=1,c.refractionRatio=.98,c}}class uo{constructor(){this.name=W.KHR_MESH_QUANTIZATION}}class Ys extends m.Interpolant{constructor(l,c,o,h){super(l,c,o,h)}copySampleValue_(l){const c=this.resultBuffer,o=this.sampleValues,h=this.valueSize,d=l*h*3+h;for(let f=0;f!==h;f++)c[f]=o[d+f];return c}interpolate_(l,c,o,h){const d=this.resultBuffer,f=this.sampleValues,v=this.valueSize,b=v*2,w=v*3,y=h-c,x=(o-c)/y,V=x*x,D=V*x,T=l*w,E=T-w,O=-2*D+3*V,N=D-V,X=1-O,z=N-V+x;for(let ne=0;ne!==v;ne++){const ce=f[E+ne+v],H=f[E+ne+b]*y,U=f[T+ne+v],q=f[T+ne]*y;d[ne]=X*ce+z*H+O*U+N*q}return d}}const ho=new m.Quaternion;class mo extends Ys{interpolate_(l,c,o,h){const d=super.interpolate_(l,c,o,h);return ho.fromArray(d).normalize().toArray(d),d}}const at={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},vn={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},qs={9728:m.NearestFilter,9729:m.LinearFilter,9984:m.NearestMipmapNearestFilter,9985:m.LinearMipmapNearestFilter,9986:m.NearestMipmapLinearFilter,9987:m.LinearMipmapLinearFilter},Xs={33071:m.ClampToEdgeWrapping,33648:m.MirroredRepeatWrapping,10497:m.RepeatWrapping},Qs={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Si={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv2",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},gt={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},fo={CUBICSPLINE:void 0,LINEAR:m.InterpolateLinear,STEP:m.InterpolateDiscrete},Li={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function vo(L){return L.DefaultMaterial===void 0&&(L.DefaultMaterial=new m.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:m.FrontSide})),L.DefaultMaterial}function bn(L,l,c){for(const o in c.extensions)L[o]===void 0&&(l.userData.gltfExtensions=l.userData.gltfExtensions||{},l.userData.gltfExtensions[o]=c.extensions[o])}function Nt(L,l){l.extras!==void 0&&(typeof l.extras=="object"?Object.assign(L.userData,l.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+l.extras))}function bo(L,l,c){let o=!1,h=!1,d=!1;for(let w=0,y=l.length;w<y;w++){const x=l[w];if(x.POSITION!==void 0&&(o=!0),x.NORMAL!==void 0&&(h=!0),x.COLOR_0!==void 0&&(d=!0),o&&h&&d)break}if(!o&&!h&&!d)return Promise.resolve(L);const f=[],v=[],b=[];for(let w=0,y=l.length;w<y;w++){const x=l[w];if(o){const V=x.POSITION!==void 0?c.getDependency("accessor",x.POSITION):L.attributes.position;f.push(V)}if(h){const V=x.NORMAL!==void 0?c.getDependency("accessor",x.NORMAL):L.attributes.normal;v.push(V)}if(d){const V=x.COLOR_0!==void 0?c.getDependency("accessor",x.COLOR_0):L.attributes.color;b.push(V)}}return Promise.all([Promise.all(f),Promise.all(v),Promise.all(b)]).then(function(w){const y=w[0],x=w[1],V=w[2];return o&&(L.morphAttributes.position=y),h&&(L.morphAttributes.normal=x),d&&(L.morphAttributes.color=V),L.morphTargetsRelative=!0,L})}function go(L,l){if(L.updateMorphTargets(),l.weights!==void 0)for(let c=0,o=l.weights.length;c<o;c++)L.morphTargetInfluences[c]=l.weights[c];if(l.extras&&Array.isArray(l.extras.targetNames)){const c=l.extras.targetNames;if(L.morphTargetInfluences.length===c.length){L.morphTargetDictionary={};for(let o=0,h=c.length;o<h;o++)L.morphTargetDictionary[c[o]]=o}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function _o(L){const l=L.extensions&&L.extensions[W.KHR_DRACO_MESH_COMPRESSION];let c;return l?c="draco:"+l.bufferView+":"+l.indices+":"+Zs(l.attributes):c=L.indices+":"+Zs(L.attributes)+":"+L.mode,c}function Zs(L){let l="";const c=Object.keys(L).sort();for(let o=0,h=c.length;o<h;o++)l+=c[o]+":"+L[c[o]]+";";return l}function Vi(L){switch(L){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function wo(L){return L.search(/\.jpe?g($|\?)/i)>0||L.search(/^data\:image\/jpeg/)===0?"image/jpeg":L.search(/\.webp($|\?)/i)>0||L.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}class xo{constructor(l={},c={}){var o,h;this.json=l,this.extensions={},this.plugins={},this.options=c,this.cache=new qr,this.associations=new Map,this.primitiveCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};const d=typeof navigator<"u"&&/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,f=typeof navigator<"u"&&((o=navigator.userAgent)===null||o===void 0?void 0:o.indexOf("Firefox"))>-1,v=typeof navigator<"u"&&f?(h=navigator.userAgent)===null||h===void 0?void 0:h.match(/Firefox\/([0-9]+)\./)[1]:-1;typeof createImageBitmap>"u"||d||f&&v<98?this.textureLoader=new m.TextureLoader(this.options.manager):this.textureLoader=new m.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new m.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(l){this.extensions=l}setPlugins(l){this.plugins=l}parse(l,c){const o=this,h=this.json,d=this.extensions;this.cache.removeAll(),this._invokeAll(function(f){return f._markDefs&&f._markDefs()}),Promise.all(this._invokeAll(function(f){return f.beforeRoot&&f.beforeRoot()})).then(function(){return Promise.all([o.getDependencies("scene"),o.getDependencies("animation"),o.getDependencies("camera")])}).then(function(f){const v={scene:f[0][h.scene||0],scenes:f[0],animations:f[1],cameras:f[2],asset:h.asset,parser:o,userData:{}};bn(d,v,h),Nt(v,h),Promise.all(o._invokeAll(function(b){return b.afterRoot&&b.afterRoot(v)})).then(function(){l(v)})}).catch(c)}_markDefs(){const l=this.json.nodes||[],c=this.json.skins||[],o=this.json.meshes||[];for(let h=0,d=c.length;h<d;h++){const f=c[h].joints;for(let v=0,b=f.length;v<b;v++)l[f[v]].isBone=!0}for(let h=0,d=l.length;h<d;h++){const f=l[h];f.mesh!==void 0&&(this._addNodeRef(this.meshCache,f.mesh),f.skin!==void 0&&(o[f.mesh].isSkinnedMesh=!0)),f.camera!==void 0&&this._addNodeRef(this.cameraCache,f.camera)}}_addNodeRef(l,c){c!==void 0&&(l.refs[c]===void 0&&(l.refs[c]=l.uses[c]=0),l.refs[c]++)}_getNodeRef(l,c,o){if(l.refs[c]<=1)return o;const h=o.clone(),d=(f,v)=>{const b=this.associations.get(f);b!=null&&this.associations.set(v,b);for(const[w,y]of f.children.entries())d(y,v.children[w])};return d(o,h),h.name+="_instance_"+l.uses[c]++,h}_invokeOne(l){const c=Object.values(this.plugins);c.push(this);for(let o=0;o<c.length;o++){const h=l(c[o]);if(h)return h}return null}_invokeAll(l){const c=Object.values(this.plugins);c.unshift(this);const o=[];for(let h=0;h<c.length;h++){const d=l(c[h]);d&&o.push(d)}return o}getDependency(l,c){const o=l+":"+c;let h=this.cache.get(o);if(!h){switch(l){case"scene":h=this.loadScene(c);break;case"node":h=this.loadNode(c);break;case"mesh":h=this._invokeOne(function(d){return d.loadMesh&&d.loadMesh(c)});break;case"accessor":h=this.loadAccessor(c);break;case"bufferView":h=this._invokeOne(function(d){return d.loadBufferView&&d.loadBufferView(c)});break;case"buffer":h=this.loadBuffer(c);break;case"material":h=this._invokeOne(function(d){return d.loadMaterial&&d.loadMaterial(c)});break;case"texture":h=this._invokeOne(function(d){return d.loadTexture&&d.loadTexture(c)});break;case"skin":h=this.loadSkin(c);break;case"animation":h=this._invokeOne(function(d){return d.loadAnimation&&d.loadAnimation(c)});break;case"camera":h=this.loadCamera(c);break;default:throw new Error("Unknown type: "+l)}this.cache.add(o,h)}return h}getDependencies(l){let c=this.cache.get(l);if(!c){const o=this,h=this.json[l+(l==="mesh"?"es":"s")]||[];c=Promise.all(h.map(function(d,f){return o.getDependency(l,f)})),this.cache.add(l,c)}return c}loadBuffer(l){const c=this.json.buffers[l],o=this.fileLoader;if(c.type&&c.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+c.type+" buffer type is not supported.");if(c.uri===void 0&&l===0)return Promise.resolve(this.extensions[W.KHR_BINARY_GLTF].body);const h=this.options;return new Promise(function(d,f){o.load(m.LoaderUtils.resolveURL(c.uri,h.path),d,void 0,function(){f(new Error('THREE.GLTFLoader: Failed to load buffer "'+c.uri+'".'))})})}loadBufferView(l){const c=this.json.bufferViews[l];return this.getDependency("buffer",c.buffer).then(function(o){const h=c.byteLength||0,d=c.byteOffset||0;return o.slice(d,d+h)})}loadAccessor(l){const c=this,o=this.json,h=this.json.accessors[l];if(h.bufferView===void 0&&h.sparse===void 0)return Promise.resolve(null);const d=[];return h.bufferView!==void 0?d.push(this.getDependency("bufferView",h.bufferView)):d.push(null),h.sparse!==void 0&&(d.push(this.getDependency("bufferView",h.sparse.indices.bufferView)),d.push(this.getDependency("bufferView",h.sparse.values.bufferView))),Promise.all(d).then(function(f){const v=f[0],b=Qs[h.type],w=vn[h.componentType],y=w.BYTES_PER_ELEMENT,x=y*b,V=h.byteOffset||0,D=h.bufferView!==void 0?o.bufferViews[h.bufferView].byteStride:void 0,T=h.normalized===!0;let E,O;if(D&&D!==x){const N=Math.floor(V/D),X="InterleavedBuffer:"+h.bufferView+":"+h.componentType+":"+N+":"+h.count;let z=c.cache.get(X);z||(E=new w(v,N*D,h.count*D/y),z=new m.InterleavedBuffer(E,D/y),c.cache.add(X,z)),O=new m.InterleavedBufferAttribute(z,b,V%D/y,T)}else v===null?E=new w(h.count*b):E=new w(v,V,h.count*b),O=new m.BufferAttribute(E,b,T);if(h.sparse!==void 0){const N=Qs.SCALAR,X=vn[h.sparse.indices.componentType],z=h.sparse.indices.byteOffset||0,ne=h.sparse.values.byteOffset||0,ce=new X(f[1],z,h.sparse.count*N),H=new w(f[2],ne,h.sparse.count*b);v!==null&&(O=new m.BufferAttribute(O.array.slice(),O.itemSize,O.normalized));for(let U=0,q=ce.length;U<q;U++){const se=ce[U];if(O.setX(se,H[U*b]),b>=2&&O.setY(se,H[U*b+1]),b>=3&&O.setZ(se,H[U*b+2]),b>=4&&O.setW(se,H[U*b+3]),b>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return O})}loadTexture(l){const c=this.json,o=this.options,d=c.textures[l].source,f=c.images[d];let v=this.textureLoader;if(f.uri){const b=o.manager.getHandler(f.uri);b!==null&&(v=b)}return this.loadTextureImage(l,d,v)}loadTextureImage(l,c,o){const h=this,d=this.json,f=d.textures[l],v=d.images[c],b=(v.uri||v.bufferView)+":"+f.sampler;if(this.textureCache[b])return this.textureCache[b];const w=this.loadImageSource(c,o).then(function(y){y.flipY=!1,f.name&&(y.name=f.name);const V=(d.samplers||{})[f.sampler]||{};return y.magFilter=qs[V.magFilter]||m.LinearFilter,y.minFilter=qs[V.minFilter]||m.LinearMipmapLinearFilter,y.wrapS=Xs[V.wrapS]||m.RepeatWrapping,y.wrapT=Xs[V.wrapT]||m.RepeatWrapping,h.associations.set(y,{textures:l}),y}).catch(function(){return null});return this.textureCache[b]=w,w}loadImageSource(l,c){const o=this,h=this.json,d=this.options;if(this.sourceCache[l]!==void 0)return this.sourceCache[l].then(x=>x.clone());const f=h.images[l],v=self.URL||self.webkitURL;let b=f.uri||"",w=!1;if(f.bufferView!==void 0)b=o.getDependency("bufferView",f.bufferView).then(function(x){w=!0;const V=new Blob([x],{type:f.mimeType});return b=v.createObjectURL(V),b});else if(f.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+l+" is missing URI and bufferView");const y=Promise.resolve(b).then(function(x){return new Promise(function(V,D){let T=V;c.isImageBitmapLoader===!0&&(T=function(E){const O=new m.Texture(E);O.needsUpdate=!0,V(O)}),c.load(m.LoaderUtils.resolveURL(x,d.path),T,void 0,D)})}).then(function(x){return w===!0&&v.revokeObjectURL(b),x.userData.mimeType=f.mimeType||wo(f.uri),x}).catch(function(x){throw console.error("THREE.GLTFLoader: Couldn't load texture",b),x});return this.sourceCache[l]=y,y}assignTexture(l,c,o,h){const d=this;return this.getDependency("texture",o.index).then(function(f){if(o.texCoord!==void 0&&o.texCoord!=0&&!(c==="aoMap"&&o.texCoord==1)&&console.warn("THREE.GLTFLoader: Custom UV set "+o.texCoord+" for texture "+c+" not yet supported."),d.extensions[W.KHR_TEXTURE_TRANSFORM]){const v=o.extensions!==void 0?o.extensions[W.KHR_TEXTURE_TRANSFORM]:void 0;if(v){const b=d.associations.get(f);f=d.extensions[W.KHR_TEXTURE_TRANSFORM].extendTexture(f,v),d.associations.set(f,b)}}return h!==void 0&&(f.encoding=h),l[c]=f,f})}assignFinalMaterial(l){const c=l.geometry;let o=l.material;const h=c.attributes.tangent===void 0,d=c.attributes.color!==void 0,f=c.attributes.normal===void 0;if(l.isPoints){const v="PointsMaterial:"+o.uuid;let b=this.cache.get(v);b||(b=new m.PointsMaterial,m.Material.prototype.copy.call(b,o),b.color.copy(o.color),b.map=o.map,b.sizeAttenuation=!1,this.cache.add(v,b)),o=b}else if(l.isLine){const v="LineBasicMaterial:"+o.uuid;let b=this.cache.get(v);b||(b=new m.LineBasicMaterial,m.Material.prototype.copy.call(b,o),b.color.copy(o.color),this.cache.add(v,b)),o=b}if(h||d||f){let v="ClonedMaterial:"+o.uuid+":";o.isGLTFSpecularGlossinessMaterial&&(v+="specular-glossiness:"),h&&(v+="derivative-tangents:"),d&&(v+="vertex-colors:"),f&&(v+="flat-shading:");let b=this.cache.get(v);b||(b=o.clone(),d&&(b.vertexColors=!0),f&&(b.flatShading=!0),h&&(b.normalScale&&(b.normalScale.y*=-1),b.clearcoatNormalScale&&(b.clearcoatNormalScale.y*=-1)),this.cache.add(v,b),this.associations.set(b,this.associations.get(o))),o=b}o.aoMap&&c.attributes.uv2===void 0&&c.attributes.uv!==void 0&&c.setAttribute("uv2",c.attributes.uv),l.material=o}getMaterialType(){return m.MeshStandardMaterial}loadMaterial(l){const c=this,o=this.json,h=this.extensions,d=o.materials[l];let f;const v={},b=d.extensions||{},w=[];if(b[W.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]){const x=h[W.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS];f=x.getMaterialType(),w.push(x.extendParams(v,d,c))}else if(b[W.KHR_MATERIALS_UNLIT]){const x=h[W.KHR_MATERIALS_UNLIT];f=x.getMaterialType(),w.push(x.extendParams(v,d,c))}else{const x=d.pbrMetallicRoughness||{};if(v.color=new m.Color(1,1,1),v.opacity=1,Array.isArray(x.baseColorFactor)){const V=x.baseColorFactor;v.color.fromArray(V),v.opacity=V[3]}x.baseColorTexture!==void 0&&w.push(c.assignTexture(v,"map",x.baseColorTexture,m.sRGBEncoding)),v.metalness=x.metallicFactor!==void 0?x.metallicFactor:1,v.roughness=x.roughnessFactor!==void 0?x.roughnessFactor:1,x.metallicRoughnessTexture!==void 0&&(w.push(c.assignTexture(v,"metalnessMap",x.metallicRoughnessTexture)),w.push(c.assignTexture(v,"roughnessMap",x.metallicRoughnessTexture))),f=this._invokeOne(function(V){return V.getMaterialType&&V.getMaterialType(l)}),w.push(Promise.all(this._invokeAll(function(V){return V.extendMaterialParams&&V.extendMaterialParams(l,v)})))}d.doubleSided===!0&&(v.side=m.DoubleSide);const y=d.alphaMode||Li.OPAQUE;if(y===Li.BLEND?(v.transparent=!0,v.depthWrite=!1):(v.transparent=!1,y===Li.MASK&&(v.alphaTest=d.alphaCutoff!==void 0?d.alphaCutoff:.5)),d.normalTexture!==void 0&&f!==m.MeshBasicMaterial&&(w.push(c.assignTexture(v,"normalMap",d.normalTexture)),v.normalScale=new m.Vector2(1,1),d.normalTexture.scale!==void 0)){const x=d.normalTexture.scale;v.normalScale.set(x,x)}return d.occlusionTexture!==void 0&&f!==m.MeshBasicMaterial&&(w.push(c.assignTexture(v,"aoMap",d.occlusionTexture)),d.occlusionTexture.strength!==void 0&&(v.aoMapIntensity=d.occlusionTexture.strength)),d.emissiveFactor!==void 0&&f!==m.MeshBasicMaterial&&(v.emissive=new m.Color().fromArray(d.emissiveFactor)),d.emissiveTexture!==void 0&&f!==m.MeshBasicMaterial&&w.push(c.assignTexture(v,"emissiveMap",d.emissiveTexture,m.sRGBEncoding)),Promise.all(w).then(function(){let x;return f===Mi?x=h[W.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(v):x=new f(v),d.name&&(x.name=d.name),Nt(x,d),c.associations.set(x,{materials:l}),d.extensions&&bn(h,x,d),x})}createUniqueName(l){const c=m.PropertyBinding.sanitizeNodeName(l||"");let o=c;for(let h=1;this.nodeNamesUsed[o];++h)o=c+"_"+h;return this.nodeNamesUsed[o]=!0,o}loadGeometries(l){const c=this,o=this.extensions,h=this.primitiveCache;function d(v){return o[W.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(v,c).then(function(b){return Js(b,v,c)})}const f=[];for(let v=0,b=l.length;v<b;v++){const w=l[v],y=_o(w),x=h[y];if(x)f.push(x.promise);else{let V;w.extensions&&w.extensions[W.KHR_DRACO_MESH_COMPRESSION]?V=d(w):V=Js(new m.BufferGeometry,w,c),h[y]={primitive:w,promise:V},f.push(V)}}return Promise.all(f)}loadMesh(l){const c=this,o=this.json,h=this.extensions,d=o.meshes[l],f=d.primitives,v=[];for(let b=0,w=f.length;b<w;b++){const y=f[b].material===void 0?vo(this.cache):this.getDependency("material",f[b].material);v.push(y)}return v.push(c.loadGeometries(f)),Promise.all(v).then(function(b){const w=b.slice(0,b.length-1),y=b[b.length-1],x=[];for(let D=0,T=y.length;D<T;D++){const E=y[D],O=f[D];let N;const X=w[D];if(O.mode===at.TRIANGLES||O.mode===at.TRIANGLE_STRIP||O.mode===at.TRIANGLE_FAN||O.mode===void 0)N=d.isSkinnedMesh===!0?new m.SkinnedMesh(E,X):new m.Mesh(E,X),N.isSkinnedMesh===!0&&!N.geometry.attributes.skinWeight.normalized&&N.normalizeSkinWeights(),O.mode===at.TRIANGLE_STRIP?N.geometry=Hs(N.geometry,m.TriangleStripDrawMode):O.mode===at.TRIANGLE_FAN&&(N.geometry=Hs(N.geometry,m.TriangleFanDrawMode));else if(O.mode===at.LINES)N=new m.LineSegments(E,X);else if(O.mode===at.LINE_STRIP)N=new m.Line(E,X);else if(O.mode===at.LINE_LOOP)N=new m.LineLoop(E,X);else if(O.mode===at.POINTS)N=new m.Points(E,X);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+O.mode);Object.keys(N.geometry.morphAttributes).length>0&&go(N,d),N.name=c.createUniqueName(d.name||"mesh_"+l),Nt(N,d),O.extensions&&bn(h,N,O),c.assignFinalMaterial(N),x.push(N)}for(let D=0,T=x.length;D<T;D++)c.associations.set(x[D],{meshes:l,primitives:D});if(x.length===1)return x[0];const V=new m.Group;c.associations.set(V,{meshes:l});for(let D=0,T=x.length;D<T;D++)V.add(x[D]);return V})}loadCamera(l){let c;const o=this.json.cameras[l],h=o[o.type];if(!h){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return o.type==="perspective"?c=new m.PerspectiveCamera(m.MathUtils.radToDeg(h.yfov),h.aspectRatio||1,h.znear||1,h.zfar||2e6):o.type==="orthographic"&&(c=new m.OrthographicCamera(-h.xmag,h.xmag,h.ymag,-h.ymag,h.znear,h.zfar)),o.name&&(c.name=this.createUniqueName(o.name)),Nt(c,o),Promise.resolve(c)}loadSkin(l){const c=this.json.skins[l],o={joints:c.joints};return c.inverseBindMatrices===void 0?Promise.resolve(o):this.getDependency("accessor",c.inverseBindMatrices).then(function(h){return o.inverseBindMatrices=h,o})}loadAnimation(l){const o=this.json.animations[l],h=[],d=[],f=[],v=[],b=[];for(let w=0,y=o.channels.length;w<y;w++){const x=o.channels[w],V=o.samplers[x.sampler],D=x.target,T=D.node,E=o.parameters!==void 0?o.parameters[V.input]:V.input,O=o.parameters!==void 0?o.parameters[V.output]:V.output;h.push(this.getDependency("node",T)),d.push(this.getDependency("accessor",E)),f.push(this.getDependency("accessor",O)),v.push(V),b.push(D)}return Promise.all([Promise.all(h),Promise.all(d),Promise.all(f),Promise.all(v),Promise.all(b)]).then(function(w){const y=w[0],x=w[1],V=w[2],D=w[3],T=w[4],E=[];for(let N=0,X=y.length;N<X;N++){const z=y[N],ne=x[N],ce=V[N],H=D[N],U=T[N];if(z===void 0)continue;z.updateMatrix();let q;switch(gt[U.path]){case gt.weights:q=m.NumberKeyframeTrack;break;case gt.rotation:q=m.QuaternionKeyframeTrack;break;case gt.position:case gt.scale:default:q=m.VectorKeyframeTrack;break}const se=z.name?z.name:z.uuid,oe=H.interpolation!==void 0?fo[H.interpolation]:m.InterpolateLinear,_e=[];gt[U.path]===gt.weights?z.traverse(function(ve){ve.morphTargetInfluences&&_e.push(ve.name?ve.name:ve.uuid)}):_e.push(se);let Ce=ce.array;if(ce.normalized){const ve=Vi(Ce.constructor),he=new Float32Array(Ce.length);for(let ge=0,ee=Ce.length;ge<ee;ge++)he[ge]=Ce[ge]*ve;Ce=he}for(let ve=0,he=_e.length;ve<he;ve++){const ge=new q(_e[ve]+"."+gt[U.path],ne.array,Ce,oe);H.interpolation==="CUBICSPLINE"&&(ge.createInterpolant=function($){const Je=this instanceof m.QuaternionKeyframeTrack?mo:Ys;return new Je(this.times,this.values,this.getValueSize()/3,$)},ge.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0),E.push(ge)}}const O=o.name?o.name:"animation_"+l;return new m.AnimationClip(O,void 0,E)})}createNodeMesh(l){const c=this.json,o=this,h=c.nodes[l];return h.mesh===void 0?null:o.getDependency("mesh",h.mesh).then(function(d){const f=o._getNodeRef(o.meshCache,h.mesh,d);return h.weights!==void 0&&f.traverse(function(v){if(v.isMesh)for(let b=0,w=h.weights.length;b<w;b++)v.morphTargetInfluences[b]=h.weights[b]}),f})}loadNode(l){const c=this.json,o=this.extensions,h=this,d=c.nodes[l],f=d.name?h.createUniqueName(d.name):"";return function(){const v=[],b=h._invokeOne(function(w){return w.createNodeMesh&&w.createNodeMesh(l)});return b&&v.push(b),d.camera!==void 0&&v.push(h.getDependency("camera",d.camera).then(function(w){return h._getNodeRef(h.cameraCache,d.camera,w)})),h._invokeAll(function(w){return w.createNodeAttachment&&w.createNodeAttachment(l)}).forEach(function(w){v.push(w)}),Promise.all(v)}().then(function(v){let b;if(d.isBone===!0?b=new m.Bone:v.length>1?b=new m.Group:v.length===1?b=v[0]:b=new m.Object3D,b!==v[0])for(let w=0,y=v.length;w<y;w++)b.add(v[w]);if(d.name&&(b.userData.name=d.name,b.name=f),Nt(b,d),d.extensions&&bn(o,b,d),d.matrix!==void 0){const w=new m.Matrix4;w.fromArray(d.matrix),b.applyMatrix4(w)}else d.translation!==void 0&&b.position.fromArray(d.translation),d.rotation!==void 0&&b.quaternion.fromArray(d.rotation),d.scale!==void 0&&b.scale.fromArray(d.scale);return h.associations.has(b)||h.associations.set(b,{}),h.associations.get(b).nodes=l,b})}loadScene(l){const c=this.json,o=this.extensions,h=this.json.scenes[l],d=this,f=new m.Group;h.name&&(f.name=d.createUniqueName(h.name)),Nt(f,h),h.extensions&&bn(o,f,h);const v=h.nodes||[],b=[];for(let w=0,y=v.length;w<y;w++)b.push(Ws(v[w],f,c,d));return Promise.all(b).then(function(){const w=y=>{const x=new Map;for(const[V,D]of d.associations)(V instanceof m.Material||V instanceof m.Texture)&&x.set(V,D);return y.traverse(V=>{const D=d.associations.get(V);D!=null&&x.set(V,D)}),x};return d.associations=w(f),f})}}function Ws(L,l,c,o){const h=c.nodes[L];return o.getDependency("node",L).then(function(d){if(h.skin===void 0)return d;let f;return o.getDependency("skin",h.skin).then(function(v){f=v;const b=[];for(let w=0,y=f.joints.length;w<y;w++)b.push(o.getDependency("node",f.joints[w]));return Promise.all(b)}).then(function(v){return d.traverse(function(b){if(!b.isMesh)return;const w=[],y=[];for(let x=0,V=v.length;x<V;x++){const D=v[x];if(D){w.push(D);const T=new m.Matrix4;f.inverseBindMatrices!==void 0&&T.fromArray(f.inverseBindMatrices.array,x*16),y.push(T)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',f.joints[x])}b.bind(new m.Skeleton(w,y),b.matrixWorld)}),d})}).then(function(d){l.add(d);const f=[];if(h.children){const v=h.children;for(let b=0,w=v.length;b<w;b++){const y=v[b];f.push(Ws(y,d,c,o))}}return Promise.all(f)})}function yo(L,l,c){const o=l.attributes,h=new m.Box3;if(o.POSITION!==void 0){const v=c.json.accessors[o.POSITION],b=v.min,w=v.max;if(b!==void 0&&w!==void 0){if(h.set(new m.Vector3(b[0],b[1],b[2]),new m.Vector3(w[0],w[1],w[2])),v.normalized){const y=Vi(vn[v.componentType]);h.min.multiplyScalar(y),h.max.multiplyScalar(y)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const d=l.targets;if(d!==void 0){const v=new m.Vector3,b=new m.Vector3;for(let w=0,y=d.length;w<y;w++){const x=d[w];if(x.POSITION!==void 0){const V=c.json.accessors[x.POSITION],D=V.min,T=V.max;if(D!==void 0&&T!==void 0){if(b.setX(Math.max(Math.abs(D[0]),Math.abs(T[0]))),b.setY(Math.max(Math.abs(D[1]),Math.abs(T[1]))),b.setZ(Math.max(Math.abs(D[2]),Math.abs(T[2]))),V.normalized){const E=Vi(vn[V.componentType]);b.multiplyScalar(E)}v.max(b)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}h.expandByVector(v)}L.boundingBox=h;const f=new m.Sphere;h.getCenter(f.center),f.radius=h.min.distanceTo(h.max)/2,L.boundingSphere=f}function Js(L,l,c){const o=l.attributes,h=[];function d(f,v){return c.getDependency("accessor",f).then(function(b){L.setAttribute(v,b)})}for(const f in o){const v=Si[f]||f.toLowerCase();v in L.attributes||h.push(d(o[f],v))}if(l.indices!==void 0&&!L.index){const f=c.getDependency("accessor",l.indices).then(function(v){L.setIndex(v)});h.push(f)}return Nt(L,l),yo(L,l,c),Promise.all(h).then(function(){return l.targets!==void 0?bo(L,l.targets,c):L})}function Hs(L,l){let c=L.getIndex();if(c===null){const f=[],v=L.getAttribute("position");if(v!==void 0){for(let b=0;b<v.count;b++)f.push(b);L.setIndex(f),c=L.getIndex()}else return console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),L}const o=c.count-2,h=[];if(l===m.TriangleFanDrawMode)for(let f=1;f<=o;f++)h.push(c.getX(0)),h.push(c.getX(f)),h.push(c.getX(f+1));else for(let f=0;f<o;f++)f%2===0?(h.push(c.getX(f)),h.push(c.getX(f+1)),h.push(c.getX(f+2))):(h.push(c.getX(f+2)),h.push(c.getX(f+1)),h.push(c.getX(f)));h.length/3!==o&&console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const d=L.clone();return d.setIndex(h),d}class Co extends m.ExtrudeGeometry{constructor(l,c){const{bevelEnabled:o=!1,bevelSize:h=8,bevelThickness:d=10,font:f,height:v=50,size:b=100,lineHeight:w=1,letterSpacing:y=0,...x}=c,V=f.generateShapes(l,b,{lineHeight:w,letterSpacing:y});super(V,{...x,bevelEnabled:o,bevelSize:h,bevelThickness:d,depth:v}),this.type="TextGeometry"}}class Po extends m.Loader{constructor(l){super(l)}load(l,c,o,h){const d=new m.FileLoader(this.manager);d.setPath(this.path),d.setRequestHeader(this.requestHeader),d.setWithCredentials(this.withCredentials),d.load(l,f=>{if(typeof f!="string")throw new Error("unsupported data type");const v=JSON.parse(f),b=this.parse(v);c&&c(b)},o,h)}parse(l){return new Ai(l)}}class Ai{constructor(l){C(this,"data",void 0),this.data=l}generateShapes(l,c=100,o){const h=[],d={letterSpacing:0,lineHeight:1,...o},f=ko(l,c,this.data,d);for(let v=0,b=f.length;v<b;v++)Array.prototype.push.apply(h,f[v].toShapes(!1));return h}}C(Ai,"isFont",void 0),C(Ai,"type",void 0);function ko(L,l,c,o){const h=Array.from(L),d=l/c.resolution,f=(c.boundingBox.yMax-c.boundingBox.yMin+c.underlineThickness)*d,v=[];let b=0,w=0;for(let y=0;y<h.length;y++){const x=h[y];if(x===`
|
|
14
|
+
`)b=0,w-=f*o.lineHeight;else{const V=Mo(x,d,b,w,c);V&&(b+=V.offsetX+o.letterSpacing,v.push(V.path))}}return v}function Mo(L,l,c,o,h){const d=h.glyphs[L]||h.glyphs["?"];if(!d){console.error('THREE.Font: character "'+L+'" does not exists in font family '+h.familyName+".");return}const f=new m.ShapePath;let v,b,w,y,x,V,D,T;if(d.o){const E=d._cachedOutline||(d._cachedOutline=d.o.split(" "));for(let O=0,N=E.length;O<N;)switch(E[O++]){case"m":v=parseInt(E[O++])*l+c,b=parseInt(E[O++])*l+o,f.moveTo(v,b);break;case"l":v=parseInt(E[O++])*l+c,b=parseInt(E[O++])*l+o,f.lineTo(v,b);break;case"q":w=parseInt(E[O++])*l+c,y=parseInt(E[O++])*l+o,x=parseInt(E[O++])*l+c,V=parseInt(E[O++])*l+o,f.quadraticCurveTo(x,V,w,y);break;case"b":w=parseInt(E[O++])*l+c,y=parseInt(E[O++])*l+o,x=parseInt(E[O++])*l+c,V=parseInt(E[O++])*l+o,D=parseInt(E[O++])*l+c,T=parseInt(E[O++])*l+o,f.bezierCurveTo(x,V,D,T,w,y);break}}return{offsetX:d.ha*l,path:f}}var er=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function So(L){return L&&L.__esModule&&Object.prototype.hasOwnProperty.call(L,"default")?L.default:L}const Ei=new WeakMap;class Lo extends m.Loader{constructor(l){super(l),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(l){return this.decoderPath=l,this}setDecoderConfig(l){return this.decoderConfig=l,this}setWorkerLimit(l){return this.workerLimit=l,this}load(l,c,o,h){const d=new m.FileLoader(this.manager);d.setPath(this.path),d.setResponseType("arraybuffer"),d.setRequestHeader(this.requestHeader),d.setWithCredentials(this.withCredentials),d.load(l,f=>{const v={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(f,v).then(c).catch(h)},o,h)}decodeDracoFile(l,c,o,h){const d={attributeIDs:o||this.defaultAttributeIDs,attributeTypes:h||this.defaultAttributeTypes,useUniqueIDs:!!o};this.decodeGeometry(l,d).then(c)}decodeGeometry(l,c){for(const b in c.attributeTypes){const w=c.attributeTypes[b];w.BYTES_PER_ELEMENT!==void 0&&(c.attributeTypes[b]=w.name)}const o=JSON.stringify(c);if(Ei.has(l)){const b=Ei.get(l);if(b.key===o)return b.promise;if(l.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let h;const d=this.workerNextTaskID++,f=l.byteLength,v=this._getWorker(d,f).then(b=>(h=b,new Promise((w,y)=>{h._callbacks[d]={resolve:w,reject:y},h.postMessage({type:"decode",id:d,taskConfig:c,buffer:l},[l])}))).then(b=>this._createGeometry(b.geometry));return v.catch(()=>!0).then(()=>{h&&d&&this._releaseTask(h,d)}),Ei.set(l,{key:o,promise:v}),v}_createGeometry(l){const c=new m.BufferGeometry;l.index&&c.setIndex(new m.BufferAttribute(l.index.array,1));for(let o=0;o<l.attributes.length;o++){const h=l.attributes[o],d=h.name,f=h.array,v=h.itemSize;c.setAttribute(d,new m.BufferAttribute(f,v))}return c}_loadLibrary(l,c){const o=new m.FileLoader(this.manager);return o.setPath(this.decoderPath),o.setResponseType(c),o.setWithCredentials(this.withCredentials),new Promise((h,d)=>{o.load(l,h,void 0,d)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const l=typeof WebAssembly!="object"||this.decoderConfig.type==="js",c=[];return l?c.push(this._loadLibrary("draco_decoder.js","text")):(c.push(this._loadLibrary("draco_wasm_wrapper.js","text")),c.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(c).then(o=>{const h=o[0];l||(this.decoderConfig.wasmBinary=o[1]);const d=Vo.toString(),f=["/* draco decoder */",h,"","/* worker */",d.substring(d.indexOf("{")+1,d.lastIndexOf("}"))].join(`
|
|
15
|
+
`);this.workerSourceURL=URL.createObjectURL(new Blob([f]))}),this.decoderPending}_getWorker(l,c){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const h=new Worker(this.workerSourceURL);h._callbacks={},h._taskCosts={},h._taskLoad=0,h.postMessage({type:"init",decoderConfig:this.decoderConfig}),h.onmessage=function(d){const f=d.data;switch(f.type){case"decode":h._callbacks[f.id].resolve(f);break;case"error":h._callbacks[f.id].reject(f);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+f.type+'"')}},this.workerPool.push(h)}else this.workerPool.sort(function(h,d){return h._taskLoad>d._taskLoad?-1:1});const o=this.workerPool[this.workerPool.length-1];return o._taskCosts[l]=c,o._taskLoad+=c,o})}_releaseTask(l,c){l._taskLoad-=l._taskCosts[c],delete l._callbacks[c],delete l._taskCosts[c]}debug(){console.log("Task load: ",this.workerPool.map(l=>l._taskLoad))}dispose(){for(let l=0;l<this.workerPool.length;++l)this.workerPool[l].terminate();return this.workerPool.length=0,this}}function Vo(){let L,l;onmessage=function(f){const v=f.data;switch(v.type){case"init":L=v.decoderConfig,l=new Promise(function(y){L.onModuleLoaded=function(x){y({draco:x})},DracoDecoderModule(L)});break;case"decode":const b=v.buffer,w=v.taskConfig;l.then(y=>{const x=y.draco,V=new x.Decoder,D=new x.DecoderBuffer;D.Init(new Int8Array(b),b.byteLength);try{const T=c(x,V,D,w),E=T.attributes.map(O=>O.array.buffer);T.index&&E.push(T.index.array.buffer),self.postMessage({type:"decode",id:v.id,geometry:T},E)}catch(T){console.error(T),self.postMessage({type:"error",id:v.id,error:T.message})}finally{x.destroy(D),x.destroy(V)}});break}};function c(f,v,b,w){const y=w.attributeIDs,x=w.attributeTypes;let V,D;const T=v.GetEncodedGeometryType(b);if(T===f.TRIANGULAR_MESH)V=new f.Mesh,D=v.DecodeBufferToMesh(b,V);else if(T===f.POINT_CLOUD)V=new f.PointCloud,D=v.DecodeBufferToPointCloud(b,V);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!D.ok()||V.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+D.error_msg());const E={index:null,attributes:[]};for(const O in y){const N=self[x[O]];let X,z;if(w.useUniqueIDs)z=y[O],X=v.GetAttributeByUniqueId(V,z);else{if(z=v.GetAttributeId(V,f[y[O]]),z===-1)continue;X=v.GetAttribute(V,z)}E.attributes.push(h(f,v,V,O,N,X))}return T===f.TRIANGULAR_MESH&&(E.index=o(f,v,V)),f.destroy(V),E}function o(f,v,b){const y=b.num_faces()*3,x=y*4,V=f._malloc(x);v.GetTrianglesUInt32Array(b,x,V);const D=new Uint32Array(f.HEAPF32.buffer,V,y).slice();return f._free(V),{array:D,itemSize:1}}function h(f,v,b,w,y,x){const V=x.num_components(),T=b.num_points()*V,E=T*y.BYTES_PER_ELEMENT,O=d(f,y),N=f._malloc(E);v.GetAttributeDataArrayForAllPoints(b,x,O,E,N);const X=new y(f.HEAPF32.buffer,N,T).slice();return f._free(N),{name:w,array:X,itemSize:V}}function d(f,v){switch(v){case Float32Array:return f.DT_FLOAT32;case Int8Array:return f.DT_INT8;case Int16Array:return f.DT_INT16;case Int32Array:return f.DT_INT32;case Uint8Array:return f.DT_UINT8;case Uint16Array:return f.DT_UINT16;case Uint32Array:return f.DT_UINT32}}}function tr(){return{extend:R.inject("extend")||(()=>{console.warn("No extend function provided")})}}const Ao=R.defineComponent({__name:"OrbitControls",props:{makeDefault:{type:Boolean,default:!1},camera:null,domElement:null,target:null,enableDamping:{type:Boolean}},setup(L){const l=L,{setState:c}=Zn.useTres(),o=R.ref(null),h=R.inject("camera"),d=R.inject("renderer"),{extend:f}=tr();return f({OrbitControls:$r}),R.watch(o,v=>{v&&l.makeDefault?c("controls",v):c("controls",null)}),(v,b)=>{var y;const w=R.resolveComponent("TresOrbitControls");return R.unref(h)&&R.unref(d)?(R.openBlock(),R.createBlock(w,{key:0,ref_key:"controls",ref:o,args:[R.unref(h),(y=R.unref(d))==null?void 0:y.domElement],"enabling-dampling":L.enableDamping},null,8,["args","enabling-dampling"])):R.createCommentVNode("",!0)}}});function Eo(L,l){const c={};for(const o of l)Object.prototype.hasOwnProperty.call(L,o)&&(c[o]=L[o]);return c}const Io=R.defineComponent({__name:"TransformControls",props:{object:null,mode:null,enabled:{type:Boolean,default:!0},axis:null,translationSnap:null,rotationSnap:null,scaleSnap:null,space:null,size:null,showX:{type:Boolean},showY:{type:Boolean},showZ:{type:Boolean}},emits:["dragging","change","mouseDown","mouseUp","objectChange"],setup(L,{emit:l}){const c=L;let o=R.shallowRef();const h=R.inject("camera"),d=R.inject("renderer"),f=R.inject("local-scene"),v=R.computed(()=>Eo(c,["enabled","axis","mode","translationSnap","rotationSnap","scaleSnap","space","size","showX","showY","showZ"])),{state:b}=Zn.useTres(),w=()=>l("change",o.value),y=()=>l("mouseDown",o.value),x=()=>l("mouseUp",o.value),V=()=>l("objectChange",o.value),D=E=>{b.controls&&(b.controls.enabled=!E.value),l("dragging",E.value)};function T(E){E.addEventListener("dragging-changed",D),E.addEventListener("change",w),E.addEventListener("mouseDown",y),E.addEventListener("mouseUp",x),E.addEventListener("objectChange",V)}return R.watch(()=>c.object,()=>{h!=null&&h.value&&(d!=null&&d.value)&&(f!=null&&f.value)&&c.object&&(o.value=new Rr(h.value,R.unref(d).domElement),o.value.attach(R.unref(c.object)),f.value.add(R.unref(o)),T(R.unref(o)))},{deep:!0}),R.watch([v,o],([E,O])=>{if(E&&O)for(const N in E){const X=`set${N[0].toUpperCase()}${N.slice(1)}`;typeof O[X]=="function"&&E[N]!==void 0&&O[X](E[N])}},{immediate:!0}),R.onUnmounted(()=>{o.value&&(o.value.removeEventListener("dragging-changed",D),o.value.removeEventListener("change",w),o.value.removeEventListener("mouseDown",y),o.value.removeEventListener("mouseUp",x),o.value.removeEventListener("objectChange",V))}),(E,O)=>R.renderSlot(E.$slots,"default")}});var Wn={},To={get exports(){return Wn},set exports(L){Wn=L}};(function(L,l){(function(c,o){o(l)})(er,function(c){class o{constructor(e){const[t,s]=e.split("-"),u=t.split(".");this.major=parseInt(u[0],10),this.minor=parseInt(u[1],10),this.patch=parseInt(u[2],10),this.prerelease=s??null}toString(){const e=[this.major,this.minor,this.patch].join(".");return this.prerelease!==null?[e,this.prerelease].join("-"):e}}class h{constructor(e){this.controller_=e}get element(){return this.controller_.view.element}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(e){this.controller_.viewProps.set("disabled",e)}get hidden(){return this.controller_.viewProps.get("hidden")}set hidden(e){this.controller_.viewProps.set("hidden",e)}dispose(){this.controller_.viewProps.set("disposed",!0)}}class d{constructor(e){this.target=e}}class f extends d{constructor(e,t,s,u){super(e),this.value=t,this.presetKey=s,this.last=u??!0}}class v extends d{constructor(e,t,s){super(e),this.value=t,this.presetKey=s}}class b extends d{constructor(e,t){super(e),this.expanded=t}}class w extends d{constructor(e,t){super(e),this.index=t}}function y(n){return n}function x(n){return n==null}function V(n,e){if(n.length!==e.length)return!1;for(let t=0;t<n.length;t++)if(n[t]!==e[t])return!1;return!0}const D={alreadydisposed:()=>"View has been already disposed",invalidparams:n=>`Invalid parameters for '${n.name}'`,nomatchingcontroller:n=>`No matching controller for '${n.key}'`,nomatchingview:n=>`No matching view for '${JSON.stringify(n.params)}'`,notbindable:()=>"Value is not bindable",propertynotfound:n=>`Property '${n.name}' not found`,shouldneverhappen:()=>"This error should never happen"};class T{constructor(e){var t;this.message=(t=D[e.type](e.context))!==null&&t!==void 0?t:"Unexpected error",this.name=this.constructor.name,this.stack=new Error(this.message).stack,this.type=e.type}static alreadyDisposed(){return new T({type:"alreadydisposed"})}static notBindable(){return new T({type:"notbindable"})}static propertyNotFound(e){return new T({type:"propertynotfound",context:{name:e}})}static shouldNeverHappen(){return new T({type:"shouldneverhappen"})}}class E{constructor(e,t,s){this.obj_=e,this.key_=t,this.presetKey_=s??t}static isBindable(e){return!(e===null||typeof e!="object")}get key(){return this.key_}get presetKey(){return this.presetKey_}read(){return this.obj_[this.key_]}write(e){this.obj_[this.key_]=e}writeProperty(e,t){const s=this.read();if(!E.isBindable(s))throw T.notBindable();if(!(e in s))throw T.propertyNotFound(e);s[e]=t}}class O extends h{get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}get title(){var e;return(e=this.controller_.valueController.props.get("title"))!==null&&e!==void 0?e:""}set title(e){this.controller_.valueController.props.set("title",e)}on(e,t){const s=t.bind(this);return this.controller_.valueController.emitter.on(e,()=>{s(new d(this))}),this}}class N{constructor(){this.observers_={}}on(e,t){let s=this.observers_[e];return s||(s=this.observers_[e]=[]),s.push({handler:t}),this}off(e,t){const s=this.observers_[e];return s&&(this.observers_[e]=s.filter(u=>u.handler!==t)),this}emit(e,t){const s=this.observers_[e];s&&s.forEach(u=>{u.handler(t)})}}const X="tp";function z(n){return(t,s)=>[X,"-",n,"v",t?`_${t}`:"",s?`-${s}`:""].join("")}function ne(n,e){return t=>e(n(t))}function ce(n){return n.rawValue}function H(n,e){n.emitter.on("change",ne(ce,e)),e(n.rawValue)}function U(n,e,t){H(n.value(e),t)}function q(n,e,t){t?n.classList.add(e):n.classList.remove(e)}function se(n,e){return t=>{q(n,e,t)}}function oe(n,e){H(n,t=>{e.textContent=t??""})}const _e=z("btn");class Ce{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(_e()),t.viewProps.bindClassModifiers(this.element);const s=e.createElement("button");s.classList.add(_e("b")),t.viewProps.bindDisabled(s),this.element.appendChild(s),this.buttonElement=s;const u=e.createElement("div");u.classList.add(_e("t")),oe(t.props.value("title"),u),this.buttonElement.appendChild(u)}}class ve{constructor(e,t){this.emitter=new N,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new Ce(e,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class he{constructor(e,t){var s;this.constraint_=t==null?void 0:t.constraint,this.equals_=(s=t==null?void 0:t.equals)!==null&&s!==void 0?s:(u,_)=>u===_,this.emitter=new N,this.rawValue_=e}get constraint(){return this.constraint_}get rawValue(){return this.rawValue_}set rawValue(e){this.setRawValue(e,{forceEmit:!1,last:!0})}setRawValue(e,t){const s=t??{forceEmit:!1,last:!0},u=this.constraint_?this.constraint_.constrain(e):e;this.equals_(this.rawValue_,u)&&!s.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=u,this.emitter.emit("change",{options:s,rawValue:u,sender:this}))}}class ge{constructor(e){this.emitter=new N,this.value_=e}get rawValue(){return this.value_}set rawValue(e){this.setRawValue(e,{forceEmit:!1,last:!0})}setRawValue(e,t){const s=t??{forceEmit:!1,last:!0};this.value_===e&&!s.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.value_=e,this.emitter.emit("change",{options:s,rawValue:this.value_,sender:this}))}}function ee(n,e){const t=e==null?void 0:e.constraint,s=e==null?void 0:e.equals;return!t&&!s?new ge(n):new he(n,e)}class ${constructor(e){this.emitter=new N,this.valMap_=e;for(const t in this.valMap_)this.valMap_[t].emitter.on("change",()=>{this.emitter.emit("change",{key:t,sender:this})})}static createCore(e){return Object.keys(e).reduce((s,u)=>Object.assign(s,{[u]:ee(e[u])}),{})}static fromObject(e){const t=this.createCore(e);return new $(t)}get(e){return this.valMap_[e].rawValue}set(e,t){this.valMap_[e].rawValue=t}value(e){return this.valMap_[e]}}function Je(n,e){const s=Object.keys(e).reduce((u,_)=>{if(u===void 0)return;const k=e[_],I=k(n[_]);return I.succeeded?Object.assign(Object.assign({},u),{[_]:I.value}):void 0},{});return s}function Pe(n,e){return n.reduce((t,s)=>{if(t===void 0)return;const u=e(s);if(!(!u.succeeded||u.value===void 0))return[...t,u.value]},[])}function ue(n){return n===null?!1:typeof n=="object"}function Z(n){return e=>t=>{if(!e&&t===void 0)return{succeeded:!1,value:void 0};if(e&&t===void 0)return{succeeded:!0,value:void 0};const s=n(t);return s!==void 0?{succeeded:!0,value:s}:{succeeded:!1,value:void 0}}}function ae(n){return{custom:e=>Z(e)(n),boolean:Z(e=>typeof e=="boolean"?e:void 0)(n),number:Z(e=>typeof e=="number"?e:void 0)(n),string:Z(e=>typeof e=="string"?e:void 0)(n),function:Z(e=>typeof e=="function"?e:void 0)(n),constant:e=>Z(t=>t===e?e:void 0)(n),raw:Z(e=>e)(n),object:e=>Z(t=>{if(ue(t))return Je(t,e)})(n),array:e=>Z(t=>{if(Array.isArray(t))return Pe(t,e)})(n)}}const K={optional:ae(!0),required:ae(!1)};function S(n,e){const t=K.required.object(e)(n);return t.succeeded?t.value:void 0}function Ae(n){return n&&n.parentElement&&n.parentElement.removeChild(n),null}function Ee(){return["veryfirst","first","last","verylast"]}const Fe=z(""),He={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class we{constructor(e){this.parent_=null,this.blade=e.blade,this.view=e.view,this.viewProps=e.viewProps;const t=this.view.element;this.blade.value("positions").emitter.on("change",()=>{Ee().forEach(s=>{t.classList.remove(Fe(void 0,He[s]))}),this.blade.get("positions").forEach(s=>{t.classList.add(Fe(void 0,He[s]))})}),this.viewProps.handleDispose(()=>{Ae(t)})}get parent(){return this.parent_}}const Ie="http://www.w3.org/2000/svg";function lt(n){n.offsetHeight}function ct(n,e){const t=n.style.transition;n.style.transition="none",e(),n.style.transition=t}function _t(n){return n.ontouchstart!==void 0}function wt(){return globalThis}function _n(){return wt().document}function wn(n){const e=n.ownerDocument.defaultView;return e&&"document"in e?n.getContext("2d",{willReadFrequently:!0}):null}const Ft={check:'<path d="M2 8l4 4l8 -8"/>',dropdown:'<path d="M5 7h6l-3 3 z"/>',p2dpad:'<path d="M8 4v8"/><path d="M4 8h8"/><circle cx="12" cy="12" r="1.2"/>'};function et(n,e){const t=n.createElementNS(Ie,"svg");return t.innerHTML=Ft[e],t}function pt(n,e,t){n.insertBefore(e,n.children[t])}function tt(n){n.parentElement&&n.parentElement.removeChild(n)}function Jt(n){for(;n.children.length>0;)n.removeChild(n.children[0])}function Ht(n){for(;n.childNodes.length>0;)n.removeChild(n.childNodes[0])}function Be(n){return n.relatedTarget?n.relatedTarget:"explicitOriginalTarget"in n?n.explicitOriginalTarget:null}const nt=z("lbl");function xn(n,e){const t=n.createDocumentFragment();return e.split(`
|
|
16
|
+
`).map(u=>n.createTextNode(u)).forEach((u,_)=>{_>0&&t.appendChild(n.createElement("br")),t.appendChild(u)}),t}class zt{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(nt()),t.viewProps.bindClassModifiers(this.element);const s=e.createElement("div");s.classList.add(nt("l")),U(t.props,"label",_=>{x(_)?this.element.classList.add(nt(void 0,"nol")):(this.element.classList.remove(nt(void 0,"nol")),Ht(s),s.appendChild(xn(e,_)))}),this.element.appendChild(s),this.labelElement=s;const u=e.createElement("div");u.classList.add(nt("v")),this.element.appendChild(u),this.valueElement=u}}class Ue extends we{constructor(e,t){const s=t.valueController.viewProps;super(Object.assign(Object.assign({},t),{view:new zt(e,{props:t.props,viewProps:s}),viewProps:s})),this.props=t.props,this.valueController=t.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}const xt={id:"button",type:"blade",accept(n){const e=K,t=S(n,{title:e.required.string,view:e.required.constant("button"),label:e.optional.string});return t?{params:t}:null},controller(n){return new Ue(n.document,{blade:n.blade,props:$.fromObject({label:n.params.label}),valueController:new ve(n.document,{props:$.fromObject({title:n.params.title}),viewProps:n.viewProps})})},api(n){return!(n.controller instanceof Ue)||!(n.controller.valueController instanceof ve)?null:new O(n.controller)}};class Te extends we{constructor(e){super(e),this.value=e.value}}function Ke(){return new $({positions:ee([],{equals:V})})}class $e extends ${constructor(e){super(e)}static create(e){const t={completed:!0,expanded:e,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null},s=$.createCore(t);return new $e(s)}get styleExpanded(){var e;return(e=this.get("temporaryExpanded"))!==null&&e!==void 0?e:this.get("expanded")}get styleHeight(){if(!this.styleExpanded)return"0";const e=this.get("expandedHeight");return this.get("shouldFixHeight")&&!x(e)?`${e}px`:"auto"}bindExpandedClass(e,t){const s=()=>{this.styleExpanded?e.classList.add(t):e.classList.remove(t)};U(this,"expanded",s),U(this,"temporaryExpanded",s)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function M(n,e){let t=0;return ct(e,()=>{n.set("expandedHeight",null),n.set("temporaryExpanded",!0),lt(e),t=e.clientHeight,n.set("temporaryExpanded",null),lt(e)}),t}function j(n,e){e.style.height=n.styleHeight}function Y(n,e){n.value("expanded").emitter.on("beforechange",()=>{n.set("completed",!1),x(n.get("expandedHeight"))&&n.set("expandedHeight",M(n,e)),n.set("shouldFixHeight",!0),lt(e)}),n.emitter.on("change",()=>{j(n,e)}),j(n,e),e.addEventListener("transitionend",t=>{t.propertyName==="height"&&n.cleanUpTransition()})}class J extends h{constructor(e,t){super(e),this.rackApi_=t}}function de(n,e){return n.addBlade(Object.assign(Object.assign({},e),{view:"button"}))}function Oe(n,e){return n.addBlade(Object.assign(Object.assign({},e),{view:"folder"}))}function yt(n,e){const t=e??{};return n.addBlade(Object.assign(Object.assign({},t),{view:"separator"}))}function en(n,e){return n.addBlade(Object.assign(Object.assign({},e),{view:"tab"}))}class Me{constructor(e){this.emitter=new N,this.items_=[],this.cache_=new Set,this.onSubListAdd_=this.onSubListAdd_.bind(this),this.onSubListRemove_=this.onSubListRemove_.bind(this),this.extract_=e}get items(){return this.items_}allItems(){return Array.from(this.cache_)}find(e){for(const t of this.allItems())if(e(t))return t;return null}includes(e){return this.cache_.has(e)}add(e,t){if(this.includes(e))throw T.shouldNeverHappen();const s=t!==void 0?t:this.items_.length;this.items_.splice(s,0,e),this.cache_.add(e);const u=this.extract_(e);u&&(u.emitter.on("add",this.onSubListAdd_),u.emitter.on("remove",this.onSubListRemove_),u.allItems().forEach(_=>{this.cache_.add(_)})),this.emitter.emit("add",{index:s,item:e,root:this,target:this})}remove(e){const t=this.items_.indexOf(e);if(t<0)return;this.items_.splice(t,1),this.cache_.delete(e);const s=this.extract_(e);s&&(s.emitter.off("add",this.onSubListAdd_),s.emitter.off("remove",this.onSubListRemove_)),this.emitter.emit("remove",{index:t,item:e,root:this,target:this})}onSubListAdd_(e){this.cache_.add(e.item),this.emitter.emit("add",{index:e.index,item:e.item,root:this,target:e.target})}onSubListRemove_(e){this.cache_.delete(e.item),this.emitter.emit("remove",{index:e.index,item:e.item,root:this,target:e.target})}}class Se extends h{constructor(e){super(e),this.onBindingChange_=this.onBindingChange_.bind(this),this.emitter_=new N,this.controller_.binding.emitter.on("change",this.onBindingChange_)}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}on(e,t){const s=t.bind(this);return this.emitter_.on(e,u=>{s(u.event)}),this}refresh(){this.controller_.binding.read()}onBindingChange_(e){const t=e.sender.target.read();this.emitter_.emit("change",{event:new f(this,t,this.controller_.binding.target.presetKey,e.options.last)})}}class De extends Ue{constructor(e,t){super(e,t),this.binding=t.binding}}class ut extends h{constructor(e){super(e),this.onBindingUpdate_=this.onBindingUpdate_.bind(this),this.emitter_=new N,this.controller_.binding.emitter.on("update",this.onBindingUpdate_)}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}on(e,t){const s=t.bind(this);return this.emitter_.on(e,u=>{s(u.event)}),this}refresh(){this.controller_.binding.read()}onBindingUpdate_(e){const t=e.sender.target.read();this.emitter_.emit("update",{event:new v(this,t,this.controller_.binding.target.presetKey)})}}class it extends Ue{constructor(e,t){super(e,t),this.binding=t.binding,this.viewProps.bindDisabled(this.binding.ticker),this.viewProps.handleDispose(()=>{this.binding.dispose()})}}function Bt(n){return n instanceof Rt?n.apiSet_:n instanceof J?n.rackApi_.apiSet_:null}function Ut(n,e){const t=n.find(s=>s.controller_===e);if(!t)throw T.shouldNeverHappen();return t}function tn(n,e,t){if(!E.isBindable(n))throw T.notBindable();return new E(n,e,t)}class Rt extends h{constructor(e,t){super(e),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this),this.onRackInputChange_=this.onRackInputChange_.bind(this),this.onRackMonitorUpdate_=this.onRackMonitorUpdate_.bind(this),this.emitter_=new N,this.apiSet_=new Me(Bt),this.pool_=t;const s=this.controller_.rack;s.emitter.on("add",this.onRackAdd_),s.emitter.on("remove",this.onRackRemove_),s.emitter.on("inputchange",this.onRackInputChange_),s.emitter.on("monitorupdate",this.onRackMonitorUpdate_),s.children.forEach(u=>{this.setUpApi_(u)})}get children(){return this.controller_.rack.children.map(e=>Ut(this.apiSet_,e))}addInput(e,t,s){const u=s??{},_=this.controller_.view.element.ownerDocument,k=this.pool_.createInput(_,tn(e,t,u.presetKey),u),I=new Se(k);return this.add(I,u.index)}addMonitor(e,t,s){const u=s??{},_=this.controller_.view.element.ownerDocument,k=this.pool_.createMonitor(_,tn(e,t),u),I=new ut(k);return this.add(I,u.index)}addFolder(e){return Oe(this,e)}addButton(e){return de(this,e)}addSeparator(e){return yt(this,e)}addTab(e){return en(this,e)}add(e,t){this.controller_.rack.add(e.controller_,t);const s=this.apiSet_.find(u=>u.controller_===e.controller_);return s&&this.apiSet_.remove(s),this.apiSet_.add(e),e}remove(e){this.controller_.rack.remove(e.controller_)}addBlade(e){const t=this.controller_.view.element.ownerDocument,s=this.pool_.createBlade(t,e),u=this.pool_.createBladeApi(s);return this.add(u,e.index)}on(e,t){const s=t.bind(this);return this.emitter_.on(e,u=>{s(u.event)}),this}setUpApi_(e){this.apiSet_.find(s=>s.controller_===e)||this.apiSet_.add(this.pool_.createBladeApi(e))}onRackAdd_(e){this.setUpApi_(e.bladeController)}onRackRemove_(e){if(e.isRoot){const t=Ut(this.apiSet_,e.bladeController);this.apiSet_.remove(t)}}onRackInputChange_(e){const t=e.bladeController;if(t instanceof De){const s=Ut(this.apiSet_,t),u=t.binding;this.emitter_.emit("change",{event:new f(s,u.target.read(),u.target.presetKey,e.options.last)})}else if(t instanceof Te){const s=Ut(this.apiSet_,t);this.emitter_.emit("change",{event:new f(s,t.value.rawValue,void 0,e.options.last)})}}onRackMonitorUpdate_(e){if(!(e.bladeController instanceof it))throw T.shouldNeverHappen();const t=Ut(this.apiSet_,e.bladeController),s=e.bladeController.binding;this.emitter_.emit("update",{event:new v(t,s.target.read(),s.target.presetKey)})}}class yn extends J{constructor(e,t){super(e,new Rt(e.rackController,t)),this.emitter_=new N,this.controller_.foldable.value("expanded").emitter.on("change",s=>{this.emitter_.emit("fold",{event:new b(this,s.sender.rawValue)})}),this.rackApi_.on("change",s=>{this.emitter_.emit("change",{event:s})}),this.rackApi_.on("update",s=>{this.emitter_.emit("update",{event:s})})}get expanded(){return this.controller_.foldable.get("expanded")}set expanded(e){this.controller_.foldable.set("expanded",e)}get title(){return this.controller_.props.get("title")}set title(e){this.controller_.props.set("title",e)}get children(){return this.rackApi_.children}addInput(e,t,s){return this.rackApi_.addInput(e,t,s)}addMonitor(e,t,s){return this.rackApi_.addMonitor(e,t,s)}addFolder(e){return this.rackApi_.addFolder(e)}addButton(e){return this.rackApi_.addButton(e)}addSeparator(e){return this.rackApi_.addSeparator(e)}addTab(e){return this.rackApi_.addTab(e)}add(e,t){return this.rackApi_.add(e,t)}remove(e){this.rackApi_.remove(e)}addBlade(e){return this.rackApi_.addBlade(e)}on(e,t){const s=t.bind(this);return this.emitter_.on(e,u=>{s(u.event)}),this}}class Cn extends we{constructor(e){super({blade:e.blade,view:e.view,viewProps:e.rackController.viewProps}),this.rackController=e.rackController}}class Ii{constructor(e,t){const s=z(t.viewName);this.element=e.createElement("div"),this.element.classList.add(s()),t.viewProps.bindClassModifiers(this.element)}}function Ti(n,e){for(let t=0;t<n.length;t++){const s=n[t];if(s instanceof De&&s.binding===e)return s}return null}function Oi(n,e){for(let t=0;t<n.length;t++){const s=n[t];if(s instanceof it&&s.binding===e)return s}return null}function Di(n,e){for(let t=0;t<n.length;t++){const s=n[t];if(s instanceof Te&&s.value===e)return s}return null}function Pn(n){return n instanceof Gt?n.rack:n instanceof Cn?n.rackController.rack:null}function Ni(n){const e=Pn(n);return e?e.bcSet_:null}class ji{constructor(e){var t;this.onBladePositionsChange_=this.onBladePositionsChange_.bind(this),this.onSetAdd_=this.onSetAdd_.bind(this),this.onSetRemove_=this.onSetRemove_.bind(this),this.onChildDispose_=this.onChildDispose_.bind(this),this.onChildPositionsChange_=this.onChildPositionsChange_.bind(this),this.onChildInputChange_=this.onChildInputChange_.bind(this),this.onChildMonitorUpdate_=this.onChildMonitorUpdate_.bind(this),this.onChildValueChange_=this.onChildValueChange_.bind(this),this.onChildViewPropsChange_=this.onChildViewPropsChange_.bind(this),this.onDescendantLayout_=this.onDescendantLayout_.bind(this),this.onDescendantInputChange_=this.onDescendantInputChange_.bind(this),this.onDescendantMonitorUpdate_=this.onDescendantMonitorUpdate_.bind(this),this.emitter=new N,this.blade_=e??null,(t=this.blade_)===null||t===void 0||t.value("positions").emitter.on("change",this.onBladePositionsChange_),this.bcSet_=new Me(Ni),this.bcSet_.emitter.on("add",this.onSetAdd_),this.bcSet_.emitter.on("remove",this.onSetRemove_)}get children(){return this.bcSet_.items}add(e,t){e.parent&&e.parent.remove(e),e.parent_=this,this.bcSet_.add(e,t)}remove(e){e.parent_=null,this.bcSet_.remove(e)}find(e){return this.bcSet_.allItems().filter(t=>t instanceof e)}onSetAdd_(e){this.updatePositions_();const t=e.target===e.root;if(this.emitter.emit("add",{bladeController:e.item,index:e.index,isRoot:t,sender:this}),!t)return;const s=e.item;if(s.viewProps.emitter.on("change",this.onChildViewPropsChange_),s.blade.value("positions").emitter.on("change",this.onChildPositionsChange_),s.viewProps.handleDispose(this.onChildDispose_),s instanceof De)s.binding.emitter.on("change",this.onChildInputChange_);else if(s instanceof it)s.binding.emitter.on("update",this.onChildMonitorUpdate_);else if(s instanceof Te)s.value.emitter.on("change",this.onChildValueChange_);else{const u=Pn(s);if(u){const _=u.emitter;_.on("layout",this.onDescendantLayout_),_.on("inputchange",this.onDescendantInputChange_),_.on("monitorupdate",this.onDescendantMonitorUpdate_)}}}onSetRemove_(e){this.updatePositions_();const t=e.target===e.root;if(this.emitter.emit("remove",{bladeController:e.item,isRoot:t,sender:this}),!t)return;const s=e.item;if(s instanceof De)s.binding.emitter.off("change",this.onChildInputChange_);else if(s instanceof it)s.binding.emitter.off("update",this.onChildMonitorUpdate_);else if(s instanceof Te)s.value.emitter.off("change",this.onChildValueChange_);else{const u=Pn(s);if(u){const _=u.emitter;_.off("layout",this.onDescendantLayout_),_.off("inputchange",this.onDescendantInputChange_),_.off("monitorupdate",this.onDescendantMonitorUpdate_)}}}updatePositions_(){const e=this.bcSet_.items.filter(u=>!u.viewProps.get("hidden")),t=e[0],s=e[e.length-1];this.bcSet_.items.forEach(u=>{const _=[];u===t&&(_.push("first"),(!this.blade_||this.blade_.get("positions").includes("veryfirst"))&&_.push("veryfirst")),u===s&&(_.push("last"),(!this.blade_||this.blade_.get("positions").includes("verylast"))&&_.push("verylast")),u.blade.set("positions",_)})}onChildPositionsChange_(){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildViewPropsChange_(e){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildDispose_(){this.bcSet_.items.filter(t=>t.viewProps.get("disposed")).forEach(t=>{this.bcSet_.remove(t)})}onChildInputChange_(e){const t=Ti(this.find(De),e.sender);if(!t)throw T.alreadyDisposed();this.emitter.emit("inputchange",{bladeController:t,options:e.options,sender:this})}onChildMonitorUpdate_(e){const t=Oi(this.find(it),e.sender);if(!t)throw T.alreadyDisposed();this.emitter.emit("monitorupdate",{bladeController:t,sender:this})}onChildValueChange_(e){const t=Di(this.find(Te),e.sender);if(!t)throw T.alreadyDisposed();this.emitter.emit("inputchange",{bladeController:t,options:e.options,sender:this})}onDescendantLayout_(e){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onDescendantInputChange_(e){this.emitter.emit("inputchange",{bladeController:e.bladeController,options:e.options,sender:this})}onDescendantMonitorUpdate_(e){this.emitter.emit("monitorupdate",{bladeController:e.bladeController,sender:this})}onBladePositionsChange_(){this.updatePositions_()}}class Gt extends we{constructor(e,t){super(Object.assign(Object.assign({},t),{view:new Ii(e,{viewName:"brk",viewProps:t.viewProps})})),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this);const s=new ji(t.root?void 0:t.blade);s.emitter.on("add",this.onRackAdd_),s.emitter.on("remove",this.onRackRemove_),this.rack=s,this.viewProps.handleDispose(()=>{for(let u=this.rack.children.length-1;u>=0;u--)this.rack.children[u].viewProps.set("disposed",!0)})}onRackAdd_(e){e.isRoot&&pt(this.view.element,e.bladeController.view.element,e.index)}onRackRemove_(e){e.isRoot&&tt(e.bladeController.view.element)}}const ei=z("cnt");class Fi{constructor(e,t){var s;this.className_=z((s=t.viewName)!==null&&s!==void 0?s:"fld"),this.element=e.createElement("div"),this.element.classList.add(this.className_(),ei()),t.viewProps.bindClassModifiers(this.element),this.foldable_=t.foldable,this.foldable_.bindExpandedClass(this.element,this.className_(void 0,"expanded")),U(this.foldable_,"completed",se(this.element,this.className_(void 0,"cpl")));const u=e.createElement("button");u.classList.add(this.className_("b")),U(t.props,"title",G=>{x(G)?this.element.classList.add(this.className_(void 0,"not")):this.element.classList.remove(this.className_(void 0,"not"))}),t.viewProps.bindDisabled(u),this.element.appendChild(u),this.buttonElement=u;const _=e.createElement("div");_.classList.add(this.className_("t")),oe(t.props.value("title"),_),this.buttonElement.appendChild(_),this.titleElement=_;const k=e.createElement("div");k.classList.add(this.className_("m")),this.buttonElement.appendChild(k);const I=t.containerElement;I.classList.add(this.className_("c")),this.element.appendChild(I),this.containerElement=I}}class kn extends Cn{constructor(e,t){var s;const u=$e.create((s=t.expanded)!==null&&s!==void 0?s:!0),_=new Gt(e,{blade:t.blade,root:t.root,viewProps:t.viewProps});super(Object.assign(Object.assign({},t),{rackController:_,view:new Fi(e,{containerElement:_.view.element,foldable:u,props:t.props,viewName:t.root?"rot":void 0,viewProps:t.viewProps})})),this.onTitleClick_=this.onTitleClick_.bind(this),this.props=t.props,this.foldable=u,Y(this.foldable,this.view.containerElement),this.rackController.rack.emitter.on("add",()=>{this.foldable.cleanUpTransition()}),this.rackController.rack.emitter.on("remove",()=>{this.foldable.cleanUpTransition()}),this.view.buttonElement.addEventListener("click",this.onTitleClick_)}get document(){return this.view.element.ownerDocument}onTitleClick_(){this.foldable.set("expanded",!this.foldable.get("expanded"))}}const zi={id:"folder",type:"blade",accept(n){const e=K,t=S(n,{title:e.required.string,view:e.required.constant("folder"),expanded:e.optional.boolean});return t?{params:t}:null},controller(n){return new kn(n.document,{blade:n.blade,expanded:n.params.expanded,props:$.fromObject({title:n.params.title}),viewProps:n.viewProps})},api(n){return n.controller instanceof kn?new yn(n.controller,n.pool):null}};class Ct extends Te{constructor(e,t){const s=t.valueController.viewProps;super(Object.assign(Object.assign({},t),{value:t.valueController.value,view:new zt(e,{props:t.props,viewProps:s}),viewProps:s})),this.props=t.props,this.valueController=t.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class Mn extends h{}const ti=z("spr");class Bi{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(ti()),t.viewProps.bindClassModifiers(this.element);const s=e.createElement("hr");s.classList.add(ti("r")),this.element.appendChild(s)}}class ni extends we{constructor(e,t){super(Object.assign(Object.assign({},t),{view:new Bi(e,{viewProps:t.viewProps})}))}}const ii={id:"separator",type:"blade",accept(n){const t=S(n,{view:K.required.constant("separator")});return t?{params:t}:null},controller(n){return new ni(n.document,{blade:n.blade,viewProps:n.viewProps})},api(n){return n.controller instanceof ni?new Mn(n.controller):null}},Ui=z("");function Kt(n,e){return se(n,Ui(void 0,e))}class st extends ${constructor(e){super(e)}static create(e){var t,s;const u=e??{},_={disabled:(t=u.disabled)!==null&&t!==void 0?t:!1,disposed:!1,hidden:(s=u.hidden)!==null&&s!==void 0?s:!1},k=$.createCore(_);return new st(k)}bindClassModifiers(e){U(this,"disabled",Kt(e,"disabled")),U(this,"hidden",Kt(e,"hidden"))}bindDisabled(e){U(this,"disabled",t=>{e.disabled=t})}bindTabIndex(e){U(this,"disabled",t=>{e.tabIndex=t?-1:0})}handleDispose(e){this.value("disposed").emitter.on("change",t=>{t&&e()})}}const be=z("tbi");class Ri{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(be()),t.viewProps.bindClassModifiers(this.element),U(t.props,"selected",_=>{_?this.element.classList.add(be(void 0,"sel")):this.element.classList.remove(be(void 0,"sel"))});const s=e.createElement("button");s.classList.add(be("b")),t.viewProps.bindDisabled(s),this.element.appendChild(s),this.buttonElement=s;const u=e.createElement("div");u.classList.add(be("t")),oe(t.props.value("title"),u),this.buttonElement.appendChild(u),this.titleElement=u}}class nn{constructor(e,t){this.emitter=new N,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new Ri(e,{props:t.props,viewProps:t.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class si{constructor(e,t){this.onItemClick_=this.onItemClick_.bind(this),this.ic_=new nn(e,{props:t.itemProps,viewProps:st.create()}),this.ic_.emitter.on("click",this.onItemClick_),this.cc_=new Gt(e,{blade:Ke(),viewProps:st.create()}),this.props=t.props,U(this.props,"selected",s=>{this.itemController.props.set("selected",s),this.contentController.viewProps.set("hidden",!s)})}get itemController(){return this.ic_}get contentController(){return this.cc_}onItemClick_(){this.props.set("selected",!0)}}class Sn{constructor(e,t){this.controller_=e,this.rackApi_=t}get title(){var e;return(e=this.controller_.itemController.props.get("title"))!==null&&e!==void 0?e:""}set title(e){this.controller_.itemController.props.set("title",e)}get selected(){return this.controller_.props.get("selected")}set selected(e){this.controller_.props.set("selected",e)}get children(){return this.rackApi_.children}addButton(e){return this.rackApi_.addButton(e)}addFolder(e){return this.rackApi_.addFolder(e)}addSeparator(e){return this.rackApi_.addSeparator(e)}addTab(e){return this.rackApi_.addTab(e)}add(e,t){this.rackApi_.add(e,t)}remove(e){this.rackApi_.remove(e)}addInput(e,t,s){return this.rackApi_.addInput(e,t,s)}addMonitor(e,t,s){return this.rackApi_.addMonitor(e,t,s)}addBlade(e){return this.rackApi_.addBlade(e)}}class ri extends J{constructor(e,t){super(e,new Rt(e.rackController,t)),this.onPageAdd_=this.onPageAdd_.bind(this),this.onPageRemove_=this.onPageRemove_.bind(this),this.onSelect_=this.onSelect_.bind(this),this.emitter_=new N,this.pageApiMap_=new Map,this.rackApi_.on("change",s=>{this.emitter_.emit("change",{event:s})}),this.rackApi_.on("update",s=>{this.emitter_.emit("update",{event:s})}),this.controller_.tab.selectedIndex.emitter.on("change",this.onSelect_),this.controller_.pageSet.emitter.on("add",this.onPageAdd_),this.controller_.pageSet.emitter.on("remove",this.onPageRemove_),this.controller_.pageSet.items.forEach(s=>{this.setUpPageApi_(s)})}get pages(){return this.controller_.pageSet.items.map(e=>{const t=this.pageApiMap_.get(e);if(!t)throw T.shouldNeverHappen();return t})}addPage(e){const t=this.controller_.view.element.ownerDocument,s=new si(t,{itemProps:$.fromObject({selected:!1,title:e.title}),props:$.fromObject({selected:!1})});this.controller_.add(s,e.index);const u=this.pageApiMap_.get(s);if(!u)throw T.shouldNeverHappen();return u}removePage(e){this.controller_.remove(e)}on(e,t){const s=t.bind(this);return this.emitter_.on(e,u=>{s(u.event)}),this}setUpPageApi_(e){const t=this.rackApi_.apiSet_.find(u=>u.controller_===e.contentController);if(!t)throw T.shouldNeverHappen();const s=new Sn(e,t);this.pageApiMap_.set(e,s)}onPageAdd_(e){this.setUpPageApi_(e.item)}onPageRemove_(e){if(!this.pageApiMap_.get(e.item))throw T.shouldNeverHappen();this.pageApiMap_.delete(e.item)}onSelect_(e){this.emitter_.emit("select",{event:new w(this,e.rawValue)})}}const oi=-1;class Gi{constructor(){this.onItemSelectedChange_=this.onItemSelectedChange_.bind(this),this.empty=ee(!0),this.selectedIndex=ee(oi),this.items_=[]}add(e,t){const s=t??this.items_.length;this.items_.splice(s,0,e),e.emitter.on("change",this.onItemSelectedChange_),this.keepSelection_()}remove(e){const t=this.items_.indexOf(e);t<0||(this.items_.splice(t,1),e.emitter.off("change",this.onItemSelectedChange_),this.keepSelection_())}keepSelection_(){if(this.items_.length===0){this.selectedIndex.rawValue=oi,this.empty.rawValue=!0;return}const e=this.items_.findIndex(t=>t.rawValue);e<0?(this.items_.forEach((t,s)=>{t.rawValue=s===0}),this.selectedIndex.rawValue=0):(this.items_.forEach((t,s)=>{t.rawValue=s===e}),this.selectedIndex.rawValue=e),this.empty.rawValue=!1}onItemSelectedChange_(e){if(e.rawValue){const t=this.items_.findIndex(s=>s===e.sender);this.items_.forEach((s,u)=>{s.rawValue=u===t}),this.selectedIndex.rawValue=t}else this.keepSelection_()}}const $t=z("tab");class Pt{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add($t(),ei()),t.viewProps.bindClassModifiers(this.element),H(t.empty,se(this.element,$t(void 0,"nop")));const s=e.createElement("div");s.classList.add($t("i")),this.element.appendChild(s),this.itemsElement=s;const u=t.contentsElement;u.classList.add($t("c")),this.element.appendChild(u),this.contentsElement=u}}class Yt extends Cn{constructor(e,t){const s=new Gt(e,{blade:t.blade,viewProps:t.viewProps}),u=new Gi;super({blade:t.blade,rackController:s,view:new Pt(e,{contentsElement:s.view.element,empty:u.empty,viewProps:t.viewProps})}),this.onPageAdd_=this.onPageAdd_.bind(this),this.onPageRemove_=this.onPageRemove_.bind(this),this.pageSet_=new Me(()=>null),this.pageSet_.emitter.on("add",this.onPageAdd_),this.pageSet_.emitter.on("remove",this.onPageRemove_),this.tab=u}get pageSet(){return this.pageSet_}add(e,t){this.pageSet_.add(e,t)}remove(e){this.pageSet_.remove(this.pageSet_.items[e])}onPageAdd_(e){const t=e.item;pt(this.view.itemsElement,t.itemController.view.element,e.index),this.rackController.rack.add(t.contentController,e.index),this.tab.add(t.props.value("selected"))}onPageRemove_(e){const t=e.item;tt(t.itemController.view.element),this.rackController.rack.remove(t.contentController),this.tab.remove(t.props.value("selected"))}}const Ln={id:"tab",type:"blade",accept(n){const e=K,t=S(n,{pages:e.required.array(e.required.object({title:e.required.string})),view:e.required.constant("tab")});return!t||t.pages.length===0?null:{params:t}},controller(n){const e=new Yt(n.document,{blade:n.blade,viewProps:n.viewProps});return n.params.pages.forEach(t=>{const s=new si(n.document,{itemProps:$.fromObject({selected:!1,title:t.title}),props:$.fromObject({selected:!1})});e.add(s)}),e},api(n){return n.controller instanceof Yt?new ri(n.controller,n.pool):null}};function Ki(n,e){const t=n.accept(e.params);if(!t)return null;const s=K.optional.boolean(e.params.disabled).value,u=K.optional.boolean(e.params.hidden).value;return n.controller({blade:Ke(),document:e.document,params:Object.assign(Object.assign({},t.params),{disabled:s,hidden:u}),viewProps:st.create({disabled:s,hidden:u})})}class ai{constructor(){this.disabled=!1,this.emitter=new N}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class Vn{constructor(e,t){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=e,this.emitter=new N,this.interval_=t,this.setTimer_()}get disabled(){return this.disabled_}set disabled(e){this.disabled_=e,this.disabled_?this.clearTimer_():this.setTimer_()}dispose(){this.clearTimer_()}clearTimer_(){if(this.timerId_===null)return;const e=this.doc_.defaultView;e&&e.clearInterval(this.timerId_),this.timerId_=null}setTimer_(){if(this.clearTimer_(),this.interval_<=0)return;const e=this.doc_.defaultView;e&&(this.timerId_=e.setInterval(this.onTick_,this.interval_))}onTick_(){this.disabled_||this.emitter.emit("tick",{sender:this})}}class rt{constructor(e){this.constraints=e}constrain(e){return this.constraints.reduce((t,s)=>s.constrain(t),e)}}function re(n,e){if(n instanceof e)return n;if(n instanceof rt){const t=n.constraints.reduce((s,u)=>s||(u instanceof e?u:null),null);if(t)return t}return null}class kt{constructor(e){this.options=e}constrain(e){const t=this.options;return t.length===0||t.filter(u=>u.value===e).length>0?e:t[0].value}}class ze{constructor(e){this.maxValue=e.max,this.minValue=e.min}constrain(e){let t=e;return x(this.minValue)||(t=Math.max(t,this.minValue)),x(this.maxValue)||(t=Math.min(t,this.maxValue)),t}}class xe{constructor(e,t=0){this.step=e,this.origin=t}constrain(e){const t=this.origin%this.step,s=Math.round((e-t)/this.step);return t+s*this.step}}const An=z("lst");class $i{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.props_=t.props,this.element=e.createElement("div"),this.element.classList.add(An()),t.viewProps.bindClassModifiers(this.element);const s=e.createElement("select");s.classList.add(An("s")),U(this.props_,"options",_=>{Jt(s),_.forEach((k,I)=>{const G=e.createElement("option");G.dataset.index=String(I),G.textContent=k.text,G.value=String(k.value),s.appendChild(G)})}),t.viewProps.bindDisabled(s),this.element.appendChild(s),this.selectElement=s;const u=e.createElement("div");u.classList.add(An("m")),u.appendChild(et(e,"dropdown")),this.element.appendChild(u),t.value.emitter.on("change",this.onValueChange_),this.value_=t.value,this.update_()}update_(){this.selectElement.value=String(this.value_.rawValue)}onValueChange_(){this.update_()}}class ht{constructor(e,t){this.onSelectChange_=this.onSelectChange_.bind(this),this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.view=new $i(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.view.selectElement.addEventListener("change",this.onSelectChange_)}onSelectChange_(e){const s=e.currentTarget.selectedOptions.item(0);if(!s)return;const u=Number(s.dataset.index);this.value.rawValue=this.props.get("options")[u].value}}const li=z("pop");class Yi{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(li()),t.viewProps.bindClassModifiers(this.element),H(t.shows,se(this.element,li(void 0,"v")))}}class En{constructor(e,t){this.shows=ee(!1),this.viewProps=t.viewProps,this.view=new Yi(e,{shows:this.shows,viewProps:this.viewProps})}}const ci=z("txt");class sn{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(ci()),t.viewProps.bindClassModifiers(this.element),this.props_=t.props,this.props_.emitter.on("change",this.onChange_);const s=e.createElement("input");s.classList.add(ci("i")),s.type="text",t.viewProps.bindDisabled(s),this.element.appendChild(s),this.inputElement=s,t.value.emitter.on("change",this.onChange_),this.value_=t.value,this.refresh()}refresh(){const e=this.props_.get("formatter");this.inputElement.value=e(this.value_.rawValue)}onChange_(){this.refresh()}}class qt{constructor(e,t){this.onInputChange_=this.onInputChange_.bind(this),this.parser_=t.parser,this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.view=new sn(e,{props:t.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(e){const s=e.currentTarget.value,u=this.parser_(s);x(u)||(this.value.rawValue=u),this.view.refresh()}}function qi(n){return String(n)}function pi(n){return n==="false"?!1:!!n}function ui(n){return qi(n)}class Xi{constructor(e){this.text=e}evaluate(){return Number(this.text)}toString(){return this.text}}const Qi={"**":(n,e)=>Math.pow(n,e),"*":(n,e)=>n*e,"/":(n,e)=>n/e,"%":(n,e)=>n%e,"+":(n,e)=>n+e,"-":(n,e)=>n-e,"<<":(n,e)=>n<<e,">>":(n,e)=>n>>e,">>>":(n,e)=>n>>>e,"&":(n,e)=>n&e,"^":(n,e)=>n^e,"|":(n,e)=>n|e};class Zi{constructor(e,t,s){this.left=t,this.operator=e,this.right=s}evaluate(){const e=Qi[this.operator];if(!e)throw new Error(`unexpected binary operator: '${this.operator}`);return e(this.left.evaluate(),this.right.evaluate())}toString(){return["b(",this.left.toString(),this.operator,this.right.toString(),")"].join(" ")}}const Wi={"+":n=>n,"-":n=>-n,"~":n=>~n};class Ji{constructor(e,t){this.operator=e,this.expression=t}evaluate(){const e=Wi[this.operator];if(!e)throw new Error(`unexpected unary operator: '${this.operator}`);return e(this.expression.evaluate())}toString(){return["u(",this.operator,this.expression.toString(),")"].join(" ")}}function In(n){return(e,t)=>{for(let s=0;s<n.length;s++){const u=n[s](e,t);if(u!=="")return u}return""}}function Xt(n,e){var t;const s=n.substr(e).match(/^\s+/);return(t=s&&s[0])!==null&&t!==void 0?t:""}function Hi(n,e){const t=n.substr(e,1);return t.match(/^[1-9]$/)?t:""}function Qt(n,e){var t;const s=n.substr(e).match(/^[0-9]+/);return(t=s&&s[0])!==null&&t!==void 0?t:""}function es(n,e){const t=Qt(n,e);if(t!=="")return t;const s=n.substr(e,1);if(e+=1,s!=="-"&&s!=="+")return"";const u=Qt(n,e);return u===""?"":s+u}function rn(n,e){const t=n.substr(e,1);if(e+=1,t.toLowerCase()!=="e")return"";const s=es(n,e);return s===""?"":t+s}function hi(n,e){const t=n.substr(e,1);if(t==="0")return t;const s=Hi(n,e);return e+=s.length,s===""?"":s+Qt(n,e)}function ts(n,e){const t=hi(n,e);if(e+=t.length,t==="")return"";const s=n.substr(e,1);if(e+=s.length,s!==".")return"";const u=Qt(n,e);return e+=u.length,t+s+u+rn(n,e)}function Tn(n,e){const t=n.substr(e,1);if(e+=t.length,t!==".")return"";const s=Qt(n,e);return e+=s.length,s===""?"":t+s+rn(n,e)}function ns(n,e){const t=hi(n,e);return e+=t.length,t===""?"":t+rn(n,e)}const is=In([ts,Tn,ns]);function ss(n,e){var t;const s=n.substr(e).match(/^[01]+/);return(t=s&&s[0])!==null&&t!==void 0?t:""}function ot(n,e){const t=n.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0b")return"";const s=ss(n,e);return s===""?"":t+s}function rs(n,e){var t;const s=n.substr(e).match(/^[0-7]+/);return(t=s&&s[0])!==null&&t!==void 0?t:""}function os(n,e){const t=n.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0o")return"";const s=rs(n,e);return s===""?"":t+s}function as(n,e){var t;const s=n.substr(e).match(/^[0-9a-f]+/i);return(t=s&&s[0])!==null&&t!==void 0?t:""}function ls(n,e){const t=n.substr(e,2);if(e+=t.length,t.toLowerCase()!=="0x")return"";const s=as(n,e);return s===""?"":t+s}const cs=In([ot,os,ls]),di=In([cs,is]);function ps(n,e){const t=di(n,e);return e+=t.length,t===""?null:{evaluable:new Xi(t),cursor:e}}function us(n,e){const t=n.substr(e,1);if(e+=t.length,t!=="(")return null;const s=Ye(n,e);if(!s)return null;e=s.cursor,e+=Xt(n,e).length;const u=n.substr(e,1);return e+=u.length,u!==")"?null:{evaluable:s.evaluable,cursor:e}}function Ne(n,e){var t;return(t=ps(n,e))!==null&&t!==void 0?t:us(n,e)}function mi(n,e){const t=Ne(n,e);if(t)return t;const s=n.substr(e,1);if(e+=s.length,s!=="+"&&s!=="-"&&s!=="~")return null;const u=mi(n,e);return u?(e=u.cursor,{cursor:e,evaluable:new Ji(s,u.evaluable)}):null}function hs(n,e,t){t+=Xt(e,t).length;const s=n.filter(u=>e.startsWith(u,t))[0];return s?(t+=s.length,t+=Xt(e,t).length,{cursor:t,operator:s}):null}function On(n,e){return(t,s)=>{const u=n(t,s);if(!u)return null;s=u.cursor;let _=u.evaluable;for(;;){const k=hs(e,t,s);if(!k)break;s=k.cursor;const I=n(t,s);if(!I)return null;s=I.cursor,_=new Zi(k.operator,_,I.evaluable)}return _?{cursor:s,evaluable:_}:null}}const ds=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((n,e)=>On(n,e),mi);function Ye(n,e){return e+=Xt(n,e).length,ds(n,e)}function fi(n){const e=Ye(n,0);return!e||e.cursor+Xt(n,e.cursor).length!==n.length?null:e.evaluable}function qe(n){var e;const t=fi(n);return(e=t==null?void 0:t.evaluate())!==null&&e!==void 0?e:null}function Dn(n){if(typeof n=="number")return n;if(typeof n=="string"){const e=qe(n);if(!x(e))return e}return 0}function ms(n){return String(n)}function pe(n){return e=>e.toFixed(Math.max(Math.min(n,20),0))}const fs=pe(0);function Mt(n){return fs(n)+"%"}function vi(n){return String(n)}function on(n){return n}function Xe(n,e){for(;n.length<e;)n.push(void 0)}function vs(n){const e=[];return Xe(e,n),ee(e)}function bs(n){const e=n.indexOf(void 0);return e<0?n:n.slice(0,e)}function bi(n,e){const t=[...bs(n),e];return t.length>n.length?t.splice(0,t.length-n.length):Xe(t,n.length),t}function St({primary:n,secondary:e,forward:t,backward:s}){let u=!1;function _(k){u||(u=!0,k(),u=!1)}n.emitter.on("change",k=>{_(()=>{e.setRawValue(t(n,e),k.options)})}),e.emitter.on("change",k=>{_(()=>{n.setRawValue(s(n,e),k.options)}),_(()=>{e.setRawValue(t(n,e),k.options)})}),_(()=>{e.setRawValue(t(n,e),{forceEmit:!1,last:!0})})}function ye(n,e){const t=n*(e.altKey?.1:1)*(e.shiftKey?10:1);return e.upKey?+t:e.downKey?-t:0}function Re(n){return{altKey:n.altKey,downKey:n.key==="ArrowDown",shiftKey:n.shiftKey,upKey:n.key==="ArrowUp"}}function Qe(n){return{altKey:n.altKey,downKey:n.key==="ArrowLeft",shiftKey:n.shiftKey,upKey:n.key==="ArrowRight"}}function Nn(n){return n==="ArrowUp"||n==="ArrowDown"}function gi(n){return Nn(n)||n==="ArrowLeft"||n==="ArrowRight"}function jn(n,e){var t,s;const u=e.ownerDocument.defaultView,_=e.getBoundingClientRect();return{x:n.pageX-(((t=u&&u.scrollX)!==null&&t!==void 0?t:0)+_.left),y:n.pageY-(((s=u&&u.scrollY)!==null&&s!==void 0?s:0)+_.top)}}class dt{constructor(e){this.lastTouch_=null,this.onDocumentMouseMove_=this.onDocumentMouseMove_.bind(this),this.onDocumentMouseUp_=this.onDocumentMouseUp_.bind(this),this.onMouseDown_=this.onMouseDown_.bind(this),this.onTouchEnd_=this.onTouchEnd_.bind(this),this.onTouchMove_=this.onTouchMove_.bind(this),this.onTouchStart_=this.onTouchStart_.bind(this),this.elem_=e,this.emitter=new N,e.addEventListener("touchstart",this.onTouchStart_,{passive:!1}),e.addEventListener("touchmove",this.onTouchMove_,{passive:!0}),e.addEventListener("touchend",this.onTouchEnd_),e.addEventListener("mousedown",this.onMouseDown_)}computePosition_(e){const t=this.elem_.getBoundingClientRect();return{bounds:{width:t.width,height:t.height},point:e?{x:e.x,y:e.y}:null}}onMouseDown_(e){var t;e.preventDefault(),(t=e.currentTarget)===null||t===void 0||t.focus();const s=this.elem_.ownerDocument;s.addEventListener("mousemove",this.onDocumentMouseMove_),s.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(jn(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onDocumentMouseMove_(e){this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(jn(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onDocumentMouseUp_(e){const t=this.elem_.ownerDocument;t.removeEventListener("mousemove",this.onDocumentMouseMove_),t.removeEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("up",{altKey:e.altKey,data:this.computePosition_(jn(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onTouchStart_(e){e.preventDefault();const t=e.targetTouches.item(0),s=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(t?{x:t.clientX-s.left,y:t.clientY-s.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=t}onTouchMove_(e){const t=e.targetTouches.item(0),s=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(t?{x:t.clientX-s.left,y:t.clientY-s.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=t}onTouchEnd_(e){var t;const s=(t=e.targetTouches.item(0))!==null&&t!==void 0?t:this.lastTouch_,u=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:e.altKey,data:this.computePosition_(s?{x:s.clientX-u.left,y:s.clientY-u.top}:void 0),sender:this,shiftKey:e.shiftKey})}}function le(n,e,t,s,u){const _=(n-e)/(t-e);return s+_*(u-s)}function _i(n){return String(n.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function me(n,e,t){return Math.min(Math.max(n,e),t)}function wi(n,e){return(n%e+e)%e}const Le=z("txt");class gs{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.props_=t.props,this.props_.emitter.on("change",this.onChange_),this.element=e.createElement("div"),this.element.classList.add(Le(),Le(void 0,"num")),t.arrayPosition&&this.element.classList.add(Le(void 0,t.arrayPosition)),t.viewProps.bindClassModifiers(this.element);const s=e.createElement("input");s.classList.add(Le("i")),s.type="text",t.viewProps.bindDisabled(s),this.element.appendChild(s),this.inputElement=s,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=t.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add(Le()),this.inputElement.classList.add(Le("i"));const u=e.createElement("div");u.classList.add(Le("k")),this.element.appendChild(u),this.knobElement=u;const _=e.createElementNS(Ie,"svg");_.classList.add(Le("g")),this.knobElement.appendChild(_);const k=e.createElementNS(Ie,"path");k.classList.add(Le("gb")),_.appendChild(k),this.guideBodyElem_=k;const I=e.createElementNS(Ie,"path");I.classList.add(Le("gh")),_.appendChild(I),this.guideHeadElem_=I;const G=e.createElement("div");G.classList.add(z("tt")()),this.knobElement.appendChild(G),this.tooltipElem_=G,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.refresh()}onDraggingChange_(e){if(e.rawValue===null){this.element.classList.remove(Le(void 0,"drg"));return}this.element.classList.add(Le(void 0,"drg"));const t=e.rawValue/this.props_.get("draggingScale"),s=t+(t>0?-1:t<0?1:0),u=me(-s,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${s+u},0 L${s},4 L${s+u},8`,`M ${t},-1 L${t},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${t},4`);const _=this.props_.get("formatter");this.tooltipElem_.textContent=_(this.value.rawValue),this.tooltipElem_.style.left=`${t}px`}refresh(){const e=this.props_.get("formatter");this.inputElement.value=e(this.value.rawValue)}onChange_(){this.refresh()}}class Ze{constructor(e,t){var s;this.originRawValue_=0,this.onInputChange_=this.onInputChange_.bind(this),this.onInputKeyDown_=this.onInputKeyDown_.bind(this),this.onInputKeyUp_=this.onInputKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=t.baseStep,this.parser_=t.parser,this.props=t.props,this.sliderProps_=(s=t.sliderProps)!==null&&s!==void 0?s:null,this.value=t.value,this.viewProps=t.viewProps,this.dragging_=ee(null),this.view=new gs(e,{arrayPosition:t.arrayPosition,dragging:this.dragging_,props:this.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.inputElement.addEventListener("keydown",this.onInputKeyDown_),this.view.inputElement.addEventListener("keyup",this.onInputKeyUp_);const u=new dt(this.view.knobElement);u.emitter.on("down",this.onPointerDown_),u.emitter.on("move",this.onPointerMove_),u.emitter.on("up",this.onPointerUp_)}constrainValue_(e){var t,s;const u=(t=this.sliderProps_)===null||t===void 0?void 0:t.get("minValue"),_=(s=this.sliderProps_)===null||s===void 0?void 0:s.get("maxValue");let k=e;return u!==void 0&&(k=Math.max(k,u)),_!==void 0&&(k=Math.min(k,_)),k}onInputChange_(e){const s=e.currentTarget.value,u=this.parser_(s);x(u)||(this.value.rawValue=this.constrainValue_(u)),this.view.refresh()}onInputKeyDown_(e){const t=ye(this.baseStep_,Re(e));t!==0&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+t),{forceEmit:!1,last:!1})}onInputKeyUp_(e){ye(this.baseStep_,Re(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}onPointerDown_(){this.originRawValue_=this.value.rawValue,this.dragging_.rawValue=0}computeDraggingValue_(e){if(!e.point)return null;const t=e.point.x-e.bounds.width/2;return this.constrainValue_(this.originRawValue_+t*this.props.get("draggingScale"))}onPointerMove_(e){const t=this.computeDraggingValue_(e.data);t!==null&&(this.value.setRawValue(t,{forceEmit:!1,last:!1}),this.dragging_.rawValue=this.value.rawValue-this.originRawValue_)}onPointerUp_(e){const t=this.computeDraggingValue_(e.data);t!==null&&(this.value.setRawValue(t,{forceEmit:!0,last:!0}),this.dragging_.rawValue=null)}}const Fn=z("sld");class xi{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.props_=t.props,this.props_.emitter.on("change",this.onChange_),this.element=e.createElement("div"),this.element.classList.add(Fn()),t.viewProps.bindClassModifiers(this.element);const s=e.createElement("div");s.classList.add(Fn("t")),t.viewProps.bindTabIndex(s),this.element.appendChild(s),this.trackElement=s;const u=e.createElement("div");u.classList.add(Fn("k")),this.trackElement.appendChild(u),this.knobElement=u,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.update_()}update_(){const e=me(le(this.value.rawValue,this.props_.get("minValue"),this.props_.get("maxValue"),0,100),0,100);this.knobElement.style.width=`${e}%`}onChange_(){this.update_()}}class _s{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDownOrMove_=this.onPointerDownOrMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=t.baseStep,this.value=t.value,this.viewProps=t.viewProps,this.props=t.props,this.view=new xi(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new dt(this.view.trackElement),this.ptHandler_.emitter.on("down",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("move",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.trackElement.addEventListener("keydown",this.onKeyDown_),this.view.trackElement.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){e.point&&this.value.setRawValue(le(me(e.point.x,0,e.bounds.width),0,e.bounds.width,this.props.get("minValue"),this.props.get("maxValue")),t)}onPointerDownOrMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){const t=ye(this.baseStep_,Qe(e));t!==0&&this.value.setRawValue(this.value.rawValue+t,{forceEmit:!1,last:!1})}onKeyUp_(e){ye(this.baseStep_,Qe(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const zn=z("sldtxt");class je{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(zn());const s=e.createElement("div");s.classList.add(zn("s")),this.sliderView_=t.sliderView,s.appendChild(this.sliderView_.element),this.element.appendChild(s);const u=e.createElement("div");u.classList.add(zn("t")),this.textView_=t.textView,u.appendChild(this.textView_.element),this.element.appendChild(u)}}class an{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.sliderC_=new _s(e,{baseStep:t.baseStep,props:t.sliderProps,value:t.value,viewProps:this.viewProps}),this.textC_=new Ze(e,{baseStep:t.baseStep,parser:t.parser,props:t.textProps,sliderProps:t.sliderProps,value:t.value,viewProps:t.viewProps}),this.view=new je(e,{sliderView:this.sliderC_.view,textView:this.textC_.view})}get sliderController(){return this.sliderC_}get textController(){return this.textC_}}function Lt(n,e){n.write(e)}function Vt(n){const e=K;if(Array.isArray(n))return e.required.array(e.required.object({text:e.required.string,value:e.required.raw}))(n).value;if(typeof n=="object")return e.required.raw(n).value}function yi(n){if(n==="inline"||n==="popup")return n}function ke(n){const e=K;return e.required.object({max:e.optional.number,min:e.optional.number,step:e.optional.number})(n).value}function Ci(n){if(Array.isArray(n))return n;const e=[];return Object.keys(n).forEach(t=>{e.push({text:t,value:n[t]})}),e}function Bn(n){return x(n)?null:new kt(Ci(n))}function Un(n){const e=n?re(n,kt):null;return e?e.options:null}function ws(n){const e=n?re(n,xe):null;return e?e.step:null}function ln(n,e){const t=n&&re(n,xe);return t?_i(t.step):Math.max(_i(e),2)}function At(n){const e=ws(n);return e??1}function Et(n,e){var t;const s=n&&re(n,xe),u=Math.abs((t=s==null?void 0:s.step)!==null&&t!==void 0?t:e);return u===0?.1:Math.pow(10,Math.floor(Math.log10(u))-1)}const cn=z("ckb");class xs{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(cn()),t.viewProps.bindClassModifiers(this.element);const s=e.createElement("label");s.classList.add(cn("l")),this.element.appendChild(s);const u=e.createElement("input");u.classList.add(cn("i")),u.type="checkbox",s.appendChild(u),this.inputElement=u,t.viewProps.bindDisabled(this.inputElement);const _=e.createElement("div");_.classList.add(cn("w")),s.appendChild(_);const k=et(e,"check");_.appendChild(k),t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.update_()}update_(){this.inputElement.checked=this.value.rawValue}onValueChange_(){this.update_()}}class ys{constructor(e,t){this.onInputChange_=this.onInputChange_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new xs(e,{value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(e){const t=e.currentTarget;this.value.rawValue=t.checked}}function Zt(n){const e=[],t=Bn(n.options);return t&&e.push(t),new rt(e)}const Cs={id:"input-bool",type:"input",accept:(n,e)=>{if(typeof n!="boolean")return null;const s=S(e,{options:K.optional.custom(Vt)});return s?{initialValue:n,params:s}:null},binding:{reader:n=>pi,constraint:n=>Zt(n.params),writer:n=>Lt},controller:n=>{var e;const t=n.document,s=n.value,u=n.constraint;return u&&re(u,kt)?new ht(t,{props:$.fromObject({options:(e=Un(u))!==null&&e!==void 0?e:[]}),value:s,viewProps:n.viewProps}):new ys(t,{value:s,viewProps:n.viewProps})}},mt=z("col");class Rn{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(mt()),t.foldable.bindExpandedClass(this.element,mt(void 0,"expanded")),U(t.foldable,"completed",se(this.element,mt(void 0,"cpl")));const s=e.createElement("div");s.classList.add(mt("h")),this.element.appendChild(s);const u=e.createElement("div");u.classList.add(mt("s")),s.appendChild(u),this.swatchElement=u;const _=e.createElement("div");if(_.classList.add(mt("t")),s.appendChild(_),this.textElement=_,t.pickerLayout==="inline"){const k=e.createElement("div");k.classList.add(mt("p")),this.element.appendChild(k),this.pickerElement=k}else this.pickerElement=null}}function Ps(n,e,t){const s=me(n/255,0,1),u=me(e/255,0,1),_=me(t/255,0,1),k=Math.max(s,u,_),I=Math.min(s,u,_),G=k-I;let Q=0,te=0;const ie=(I+k)/2;return G!==0&&(te=G/(1-Math.abs(k+I-1)),s===k?Q=(u-_)/G:u===k?Q=2+(_-s)/G:Q=4+(s-u)/G,Q=Q/6+(Q<0?1:0)),[Q*360,te*100,ie*100]}function Gn(n,e,t){const s=(n%360+360)%360,u=me(e/100,0,1),_=me(t/100,0,1),k=(1-Math.abs(2*_-1))*u,I=k*(1-Math.abs(s/60%2-1)),G=_-k/2;let Q,te,ie;return s>=0&&s<60?[Q,te,ie]=[k,I,0]:s>=60&&s<120?[Q,te,ie]=[I,k,0]:s>=120&&s<180?[Q,te,ie]=[0,k,I]:s>=180&&s<240?[Q,te,ie]=[0,I,k]:s>=240&&s<300?[Q,te,ie]=[I,0,k]:[Q,te,ie]=[k,0,I],[(Q+G)*255,(te+G)*255,(ie+G)*255]}function ks(n,e,t){const s=me(n/255,0,1),u=me(e/255,0,1),_=me(t/255,0,1),k=Math.max(s,u,_),I=Math.min(s,u,_),G=k-I;let Q;G===0?Q=0:k===s?Q=60*(((u-_)/G%6+6)%6):k===u?Q=60*((_-s)/G+2):Q=60*((s-u)/G+4);const te=k===0?0:G/k,ie=k;return[Q,te*100,ie*100]}function Pi(n,e,t){const s=wi(n,360),u=me(e/100,0,1),_=me(t/100,0,1),k=_*u,I=k*(1-Math.abs(s/60%2-1)),G=_-k;let Q,te,ie;return s>=0&&s<60?[Q,te,ie]=[k,I,0]:s>=60&&s<120?[Q,te,ie]=[I,k,0]:s>=120&&s<180?[Q,te,ie]=[0,k,I]:s>=180&&s<240?[Q,te,ie]=[0,I,k]:s>=240&&s<300?[Q,te,ie]=[I,0,k]:[Q,te,ie]=[k,0,I],[(Q+G)*255,(te+G)*255,(ie+G)*255]}function Ms(n,e,t){const s=t+e*(100-Math.abs(2*t-100))/200;return[n,s!==0?e*(100-Math.abs(2*t-100))/s:0,t+e*(100-Math.abs(2*t-100))/(2*100)]}function Ss(n,e,t){const s=100-Math.abs(t*(200-e)/100-100);return[n,s!==0?e*t/s:0,t*(200-e)/(2*100)]}function a(n){return[n[0],n[1],n[2]]}function i(n,e){return[n[0],n[1],n[2],e]}const r={hsl:{hsl:(n,e,t)=>[n,e,t],hsv:Ms,rgb:Gn},hsv:{hsl:Ss,hsv:(n,e,t)=>[n,e,t],rgb:Pi},rgb:{hsl:Ps,hsv:ks,rgb:(n,e,t)=>[n,e,t]}};function p(n,e){return[e==="float"?1:n==="rgb"?255:360,e==="float"?1:n==="rgb"?255:100,e==="float"?1:n==="rgb"?255:100]}function g(n,e,t){var s;const u=p(e,t);return[e==="rgb"?me(n[0],0,u[0]):wi(n[0],u[0]),me(n[1],0,u[1]),me(n[2],0,u[2]),me((s=n[3])!==null&&s!==void 0?s:1,0,1)]}function P(n,e,t,s){const u=p(e,t),_=p(e,s);return n.map((k,I)=>k/u[I]*_[I])}function A(n,e,t){const s=P(n,e.mode,e.type,"int"),u=r[e.mode][t.mode](...s);return P(u,t.mode,"int",t.type)}function F(n,e){return typeof n!="object"||x(n)?!1:e in n&&typeof n[e]=="number"}class B{constructor(e,t,s="int"){this.mode=t,this.type=s,this.comps_=g(e,t,s)}static black(e="int"){return new B([0,0,0],"rgb",e)}static fromObject(e,t="int"){const s="a"in e?[e.r,e.g,e.b,e.a]:[e.r,e.g,e.b];return new B(s,"rgb",t)}static toRgbaObject(e,t="int"){return e.toRgbaObject(t)}static isRgbColorObject(e){return F(e,"r")&&F(e,"g")&&F(e,"b")}static isRgbaColorObject(e){return this.isRgbColorObject(e)&&F(e,"a")}static isColorObject(e){return this.isRgbColorObject(e)}static equals(e,t){if(e.mode!==t.mode)return!1;const s=e.comps_,u=t.comps_;for(let _=0;_<s.length;_++)if(s[_]!==u[_])return!1;return!0}getComponents(e,t="int"){return i(A(a(this.comps_),{mode:this.mode,type:this.type},{mode:e??this.mode,type:t}),this.comps_[3])}toRgbaObject(e="int"){const t=this.getComponents("rgb",e);return{r:t[0],g:t[1],b:t[2],a:t[3]}}}const fe=z("colp");class We{constructor(e,t){this.alphaViews_=null,this.element=e.createElement("div"),this.element.classList.add(fe());const s=e.createElement("div");s.classList.add(fe("hsv"));const u=e.createElement("div");u.classList.add(fe("sv")),this.svPaletteView_=t.svPaletteView,u.appendChild(this.svPaletteView_.element),s.appendChild(u);const _=e.createElement("div");_.classList.add(fe("h")),this.hPaletteView_=t.hPaletteView,_.appendChild(this.hPaletteView_.element),s.appendChild(_),this.element.appendChild(s);const k=e.createElement("div");if(k.classList.add(fe("rgb")),this.textView_=t.textView,k.appendChild(this.textView_.element),this.element.appendChild(k),t.alphaViews){this.alphaViews_={palette:t.alphaViews.palette,text:t.alphaViews.text};const I=e.createElement("div");I.classList.add(fe("a"));const G=e.createElement("div");G.classList.add(fe("ap")),G.appendChild(this.alphaViews_.palette.element),I.appendChild(G);const Q=e.createElement("div");Q.classList.add(fe("at")),Q.appendChild(this.alphaViews_.text.element),I.appendChild(Q),this.element.appendChild(I)}}get allFocusableElements(){const e=[this.svPaletteView_.element,this.hPaletteView_.element,this.textView_.modeSelectElement,...this.textView_.textViews.map(t=>t.inputElement)];return this.alphaViews_&&e.push(this.alphaViews_.palette.element,this.alphaViews_.text.inputElement),e}}function Kn(n){return n==="int"?"int":n==="float"?"float":void 0}function $n(n){const e=K;return S(n,{alpha:e.optional.boolean,color:e.optional.object({alpha:e.optional.boolean,type:e.optional.custom(Kn)}),expanded:e.optional.boolean,picker:e.optional.custom(yi)})}function ft(n){return n?.1:1}function Wt(n){var e;return(e=n.color)===null||e===void 0?void 0:e.type}function Bo(n,e){return n.alpha===e.alpha&&n.mode===e.mode&&n.notation===e.notation&&n.type===e.type}function Ge(n,e){const t=n.match(/^(.+)%$/);return Math.min(t?parseFloat(t[1])*.01*e:parseFloat(n),e)}const Uo={deg:n=>n,grad:n=>n*360/400,rad:n=>n*360/(2*Math.PI),turn:n=>n*360};function ir(n){const e=n.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);if(!e)return parseFloat(n);const t=parseFloat(e[1]),s=e[2];return Uo[s](t)}function sr(n){const e=n.match(/^rgb\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const t=[Ge(e[1],255),Ge(e[2],255),Ge(e[3],255)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function rr(n){return e=>{const t=sr(e);return t?new B(t,"rgb",n):null}}function or(n){const e=n.match(/^rgba\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const t=[Ge(e[1],255),Ge(e[2],255),Ge(e[3],255),Ge(e[4],1)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function ar(n){return e=>{const t=or(e);return t?new B(t,"rgb",n):null}}function lr(n){const e=n.match(/^hsl\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const t=[ir(e[1]),Ge(e[2],100),Ge(e[3],100)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function cr(n){return e=>{const t=lr(e);return t?new B(t,"hsl",n):null}}function pr(n){const e=n.match(/^hsla\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const t=[ir(e[1]),Ge(e[2],100),Ge(e[3],100),Ge(e[4],1)];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function ur(n){return e=>{const t=pr(e);return t?new B(t,"hsl",n):null}}function hr(n){const e=n.match(/^#([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(e)return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)];const t=n.match(/^(?:#|0x)([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:null}function Ro(n){const e=hr(n);return e?new B(e,"rgb","int"):null}function dr(n){const e=n.match(/^#?([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(e)return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16),le(parseInt(e[4]+e[4],16),0,255,0,1)];const t=n.match(/^(?:#|0x)?([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16),le(parseInt(t[4],16),0,255,0,1)]:null}function Go(n){const e=dr(n);return e?new B(e,"rgb","int"):null}function mr(n){const e=n.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!e)return null;const t=[parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3])];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])?null:t}function fr(n){return e=>{const t=mr(e);return t?new B(t,"rgb",n):null}}function vr(n){const e=n.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*a\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!e)return null;const t=[parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3]),parseFloat(e[4])];return isNaN(t[0])||isNaN(t[1])||isNaN(t[2])||isNaN(t[3])?null:t}function br(n){return e=>{const t=vr(e);return t?new B(t,"rgb",n):null}}const Ko=[{parser:hr,result:{alpha:!1,mode:"rgb",notation:"hex"}},{parser:dr,result:{alpha:!0,mode:"rgb",notation:"hex"}},{parser:sr,result:{alpha:!1,mode:"rgb",notation:"func"}},{parser:or,result:{alpha:!0,mode:"rgb",notation:"func"}},{parser:lr,result:{alpha:!1,mode:"hsl",notation:"func"}},{parser:pr,result:{alpha:!0,mode:"hsl",notation:"func"}},{parser:mr,result:{alpha:!1,mode:"rgb",notation:"object"}},{parser:vr,result:{alpha:!0,mode:"rgb",notation:"object"}}];function $o(n){return Ko.reduce((e,{parser:t,result:s})=>e||(t(n)?s:null),null)}function Ls(n,e="int"){const t=$o(n);return t?t.notation==="hex"&&e!=="float"?Object.assign(Object.assign({},t),{type:"int"}):t.notation==="func"?Object.assign(Object.assign({},t),{type:e}):null:null}const gr={int:[Ro,Go,rr("int"),ar("int"),cr("int"),ur("int"),fr("int"),br("int")],float:[rr("float"),ar("float"),cr("float"),ur("float"),fr("float"),br("float")]};function Yo(n){const e=gr[n];return t=>{if(typeof t!="string")return B.black(n);const s=e.reduce((u,_)=>u||_(t),null);return s??B.black(n)}}function Vs(n){const e=gr[n];return t=>e.reduce((s,u)=>s||u(t),null)}function _r(n){const e=me(Math.floor(n),0,255).toString(16);return e.length===1?`0${e}`:e}function wr(n,e="#"){const t=a(n.getComponents("rgb")).map(_r).join("");return`${e}${t}`}function As(n,e="#"){const t=n.getComponents("rgb"),s=[t[0],t[1],t[2],t[3]*255].map(_r).join("");return`${e}${s}`}function xr(n,e){const t=pe(e==="float"?2:0);return`rgb(${a(n.getComponents("rgb",e)).map(u=>t(u)).join(", ")})`}function qo(n){return e=>xr(e,n)}function ki(n,e){const t=pe(2),s=pe(e==="float"?2:0);return`rgba(${n.getComponents("rgb",e).map((_,k)=>(k===3?t:s)(_)).join(", ")})`}function Xo(n){return e=>ki(e,n)}function Qo(n){const e=[pe(0),Mt,Mt];return`hsl(${a(n.getComponents("hsl")).map((s,u)=>e[u](s)).join(", ")})`}function Zo(n){const e=[pe(0),Mt,Mt,pe(2)];return`hsla(${n.getComponents("hsl").map((s,u)=>e[u](s)).join(", ")})`}function yr(n,e){const t=pe(e==="float"?2:0),s=["r","g","b"];return`{${a(n.getComponents("rgb",e)).map((_,k)=>`${s[k]}: ${t(_)}`).join(", ")}}`}function Wo(n){return e=>yr(e,n)}function Cr(n,e){const t=pe(2),s=pe(e==="float"?2:0),u=["r","g","b","a"];return`{${n.getComponents("rgb",e).map((k,I)=>{const G=I===3?t:s;return`${u[I]}: ${G(k)}`}).join(", ")}}`}function Jo(n){return e=>Cr(e,n)}const Ho=[{format:{alpha:!1,mode:"rgb",notation:"hex",type:"int"},stringifier:wr},{format:{alpha:!0,mode:"rgb",notation:"hex",type:"int"},stringifier:As},{format:{alpha:!1,mode:"hsl",notation:"func",type:"int"},stringifier:Qo},{format:{alpha:!0,mode:"hsl",notation:"func",type:"int"},stringifier:Zo},...["int","float"].reduce((n,e)=>[...n,{format:{alpha:!1,mode:"rgb",notation:"func",type:e},stringifier:qo(e)},{format:{alpha:!0,mode:"rgb",notation:"func",type:e},stringifier:Xo(e)},{format:{alpha:!1,mode:"rgb",notation:"object",type:e},stringifier:Wo(e)},{format:{alpha:!0,mode:"rgb",notation:"object",type:e},stringifier:Jo(e)}],[])];function Es(n){return Ho.reduce((e,t)=>e||(Bo(t.format,n)?t.stringifier:null),null)}const Yn=z("apl");class ea{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.value=t.value,this.value.emitter.on("change",this.onValueChange_),this.element=e.createElement("div"),this.element.classList.add(Yn()),t.viewProps.bindTabIndex(this.element);const s=e.createElement("div");s.classList.add(Yn("b")),this.element.appendChild(s);const u=e.createElement("div");u.classList.add(Yn("c")),s.appendChild(u),this.colorElem_=u;const _=e.createElement("div");_.classList.add(Yn("m")),this.element.appendChild(_),this.markerElem_=_;const k=e.createElement("div");k.classList.add(Yn("p")),this.markerElem_.appendChild(k),this.previewElem_=k,this.update_()}update_(){const e=this.value.rawValue,t=e.getComponents("rgb"),s=new B([t[0],t[1],t[2],0],"rgb"),u=new B([t[0],t[1],t[2],255],"rgb"),_=["to right",ki(s),ki(u)];this.colorElem_.style.background=`linear-gradient(${_.join(",")})`,this.previewElem_.style.backgroundColor=ki(e);const k=le(t[3],0,1,0,100);this.markerElem_.style.left=`${k}%`}onValueChange_(){this.update_()}}class ta{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new ea(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new dt(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;const s=e.point.x/e.bounds.width,u=this.value.rawValue,[_,k,I]=u.getComponents("hsv");this.value.setRawValue(new B([_,k,I,s],"hsv"),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){const t=ye(ft(!0),Qe(e));if(t===0)return;const s=this.value.rawValue,[u,_,k,I]=s.getComponents("hsv");this.value.setRawValue(new B([u,_,k,I+t],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){ye(ft(!0),Qe(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const pn=z("coltxt");function na(n){const e=n.createElement("select"),t=[{text:"RGB",value:"rgb"},{text:"HSL",value:"hsl"},{text:"HSV",value:"hsv"}];return e.appendChild(t.reduce((s,u)=>{const _=n.createElement("option");return _.textContent=u.text,_.value=u.value,s.appendChild(_),s},n.createDocumentFragment())),e}class ia{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(pn());const s=e.createElement("div");s.classList.add(pn("m")),this.modeElem_=na(e),this.modeElem_.classList.add(pn("ms")),s.appendChild(this.modeSelectElement);const u=e.createElement("div");u.classList.add(pn("mm")),u.appendChild(et(e,"dropdown")),s.appendChild(u),this.element.appendChild(s);const _=e.createElement("div");_.classList.add(pn("w")),this.element.appendChild(_),this.textsElem_=_,this.textViews_=t.textViews,this.applyTextViews_(),H(t.colorMode,k=>{this.modeElem_.value=k})}get modeSelectElement(){return this.modeElem_}get textViews(){return this.textViews_}set textViews(e){this.textViews_=e,this.applyTextViews_()}applyTextViews_(){Jt(this.textsElem_);const e=this.element.ownerDocument;this.textViews_.forEach(t=>{const s=e.createElement("div");s.classList.add(pn("c")),s.appendChild(t.element),this.textsElem_.appendChild(s)})}}function sa(n){return pe(n==="float"?2:0)}function ra(n,e,t){const s=p(n,e)[t];return new ze({min:0,max:s})}function Is(n,e,t){return new Ze(n,{arrayPosition:t===0?"fst":t===3-1?"lst":"mid",baseStep:ft(!1),parser:e.parser,props:$.fromObject({draggingScale:e.colorType==="float"?.01:1,formatter:sa(e.colorType)}),value:ee(0,{constraint:ra(e.colorMode,e.colorType,t)}),viewProps:e.viewProps})}class oa{constructor(e,t){this.onModeSelectChange_=this.onModeSelectChange_.bind(this),this.colorType_=t.colorType,this.parser_=t.parser,this.value=t.value,this.viewProps=t.viewProps,this.colorMode=ee(this.value.rawValue.mode),this.ccs_=this.createComponentControllers_(e),this.view=new ia(e,{colorMode:this.colorMode,textViews:[this.ccs_[0].view,this.ccs_[1].view,this.ccs_[2].view]}),this.view.modeSelectElement.addEventListener("change",this.onModeSelectChange_)}createComponentControllers_(e){const t={colorMode:this.colorMode.rawValue,colorType:this.colorType_,parser:this.parser_,viewProps:this.viewProps},s=[Is(e,t,0),Is(e,t,1),Is(e,t,2)];return s.forEach((u,_)=>{St({primary:this.value,secondary:u.value,forward:k=>k.rawValue.getComponents(this.colorMode.rawValue,this.colorType_)[_],backward:(k,I)=>{const G=this.colorMode.rawValue,Q=k.rawValue.getComponents(G,this.colorType_);return Q[_]=I.rawValue,new B(i(a(Q),Q[3]),G,this.colorType_)}})}),s}onModeSelectChange_(e){const t=e.currentTarget;this.colorMode.rawValue=t.value,this.ccs_=this.createComponentControllers_(this.view.element.ownerDocument),this.view.textViews=[this.ccs_[0].view,this.ccs_[1].view,this.ccs_[2].view]}}const Ts=z("hpl");class aa{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.value=t.value,this.value.emitter.on("change",this.onValueChange_),this.element=e.createElement("div"),this.element.classList.add(Ts()),t.viewProps.bindTabIndex(this.element);const s=e.createElement("div");s.classList.add(Ts("c")),this.element.appendChild(s);const u=e.createElement("div");u.classList.add(Ts("m")),this.element.appendChild(u),this.markerElem_=u,this.update_()}update_(){const e=this.value.rawValue,[t]=e.getComponents("hsv");this.markerElem_.style.backgroundColor=xr(new B([t,100,100],"hsv"));const s=le(t,0,360,0,100);this.markerElem_.style.left=`${s}%`}onValueChange_(){this.update_()}}class la{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new aa(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new dt(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;const s=le(me(e.point.x,0,e.bounds.width),0,e.bounds.width,0,359),u=this.value.rawValue,[,_,k,I]=u.getComponents("hsv");this.value.setRawValue(new B([s,_,k,I],"hsv"),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){const t=ye(ft(!1),Qe(e));if(t===0)return;const s=this.value.rawValue,[u,_,k,I]=s.getComponents("hsv");this.value.setRawValue(new B([u+t,_,k,I],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){ye(ft(!1),Qe(e))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const Os=z("svp"),Pr=64;class ca{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.value=t.value,this.value.emitter.on("change",this.onValueChange_),this.element=e.createElement("div"),this.element.classList.add(Os()),t.viewProps.bindTabIndex(this.element);const s=e.createElement("canvas");s.height=Pr,s.width=Pr,s.classList.add(Os("c")),this.element.appendChild(s),this.canvasElement=s;const u=e.createElement("div");u.classList.add(Os("m")),this.element.appendChild(u),this.markerElem_=u,this.update_()}update_(){const e=wn(this.canvasElement);if(!e)return;const s=this.value.rawValue.getComponents("hsv"),u=this.canvasElement.width,_=this.canvasElement.height,k=e.getImageData(0,0,u,_),I=k.data;for(let te=0;te<_;te++)for(let ie=0;ie<u;ie++){const bt=le(ie,0,u,0,100),Xn=le(te,0,_,100,0),Qn=Pi(s[0],bt,Xn),mn=(te*u+ie)*4;I[mn]=Qn[0],I[mn+1]=Qn[1],I[mn+2]=Qn[2],I[mn+3]=255}e.putImageData(k,0,0);const G=le(s[1],0,100,0,100);this.markerElem_.style.left=`${G}%`;const Q=le(s[2],0,100,100,0);this.markerElem_.style.top=`${Q}%`}onValueChange_(){this.update_()}}class pa{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new ca(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new dt(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;const s=le(e.point.x,0,e.bounds.width,0,100),u=le(e.point.y,0,e.bounds.height,100,0),[_,,,k]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new B([_,s,u,k],"hsv"),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){gi(e.key)&&e.preventDefault();const[t,s,u,_]=this.value.rawValue.getComponents("hsv"),k=ft(!1),I=ye(k,Qe(e)),G=ye(k,Re(e));I===0&&G===0||this.value.setRawValue(new B([t,s+I,u+G,_],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){const t=ft(!1),s=ye(t,Qe(e)),u=ye(t,Re(e));s===0&&u===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class ua{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.hPaletteC_=new la(e,{value:this.value,viewProps:this.viewProps}),this.svPaletteC_=new pa(e,{value:this.value,viewProps:this.viewProps}),this.alphaIcs_=t.supportsAlpha?{palette:new ta(e,{value:this.value,viewProps:this.viewProps}),text:new Ze(e,{parser:qe,baseStep:.1,props:$.fromObject({draggingScale:.01,formatter:pe(2)}),value:ee(0,{constraint:new ze({min:0,max:1})}),viewProps:this.viewProps})}:null,this.alphaIcs_&&St({primary:this.value,secondary:this.alphaIcs_.text.value,forward:s=>s.rawValue.getComponents()[3],backward:(s,u)=>{const _=s.rawValue.getComponents();return _[3]=u.rawValue,new B(_,s.rawValue.mode)}}),this.textC_=new oa(e,{colorType:t.colorType,parser:qe,value:this.value,viewProps:this.viewProps}),this.view=new We(e,{alphaViews:this.alphaIcs_?{palette:this.alphaIcs_.palette.view,text:this.alphaIcs_.text.view}:null,hPaletteView:this.hPaletteC_.view,supportsAlpha:t.supportsAlpha,svPaletteView:this.svPaletteC_.view,textView:this.textC_.view})}get textController(){return this.textC_}}const Ds=z("colsw");class ha{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.element=e.createElement("div"),this.element.classList.add(Ds()),t.viewProps.bindClassModifiers(this.element);const s=e.createElement("div");s.classList.add(Ds("sw")),this.element.appendChild(s),this.swatchElem_=s;const u=e.createElement("button");u.classList.add(Ds("b")),t.viewProps.bindDisabled(u),this.element.appendChild(u),this.buttonElement=u,this.update_()}update_(){const e=this.value.rawValue;this.swatchElem_.style.backgroundColor=As(e)}onValueChange_(){this.update_()}}class da{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new ha(e,{value:this.value,viewProps:this.viewProps})}}class Ns{constructor(e,t){this.onButtonBlur_=this.onButtonBlur_.bind(this),this.onButtonClick_=this.onButtonClick_.bind(this),this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.foldable_=$e.create(t.expanded),this.swatchC_=new da(e,{value:this.value,viewProps:this.viewProps});const s=this.swatchC_.view.buttonElement;s.addEventListener("blur",this.onButtonBlur_),s.addEventListener("click",this.onButtonClick_),this.textC_=new qt(e,{parser:t.parser,props:$.fromObject({formatter:t.formatter}),value:this.value,viewProps:this.viewProps}),this.view=new Rn(e,{foldable:this.foldable_,pickerLayout:t.pickerLayout}),this.view.swatchElement.appendChild(this.swatchC_.view.element),this.view.textElement.appendChild(this.textC_.view.element),this.popC_=t.pickerLayout==="popup"?new En(e,{viewProps:this.viewProps}):null;const u=new ua(e,{colorType:t.colorType,supportsAlpha:t.supportsAlpha,value:this.value,viewProps:this.viewProps});u.view.allFocusableElements.forEach(_=>{_.addEventListener("blur",this.onPopupChildBlur_),_.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=u,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(u.view.element),St({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:_=>_.rawValue,backward:(_,k)=>k.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),Y(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onButtonBlur_(e){if(!this.popC_)return;const t=this.view.element,s=e.relatedTarget;(!s||!t.contains(s))&&(this.popC_.shows.rawValue=!1)}onButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(e){if(!this.popC_)return;const t=this.popC_.view.element,s=Be(e);s&&t.contains(s)||s&&s===this.swatchC_.view.buttonElement&&!_t(t.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(e){this.popC_?e.key==="Escape"&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&e.key==="Escape"&&this.swatchC_.view.buttonElement.focus()}}function ma(n,e){return B.isColorObject(n)?B.fromObject(n,e):B.black(e)}function fa(n){return a(n.getComponents("rgb")).reduce((e,t)=>e<<8|Math.floor(t)&255,0)}function va(n){return n.getComponents("rgb").reduce((e,t,s)=>{const u=Math.floor(s===3?t*255:t)&255;return e<<8|u},0)>>>0}function ba(n){return new B([n>>16&255,n>>8&255,n&255],"rgb")}function ga(n){return new B([n>>24&255,n>>16&255,n>>8&255,le(n&255,0,255,0,1)],"rgb")}function _a(n){return typeof n!="number"?B.black():ba(n)}function wa(n){return typeof n!="number"?B.black():ga(n)}function xa(n){const e=Es(n);return e?(t,s)=>{Lt(t,e(s))}:null}function ya(n){const e=n?va:fa;return(t,s)=>{Lt(t,e(s))}}function Ca(n,e,t){const s=e.toRgbaObject(t);n.writeProperty("r",s.r),n.writeProperty("g",s.g),n.writeProperty("b",s.b),n.writeProperty("a",s.a)}function Pa(n,e,t){const s=e.toRgbaObject(t);n.writeProperty("r",s.r),n.writeProperty("g",s.g),n.writeProperty("b",s.b)}function ka(n,e){return(t,s)=>{n?Ca(t,s,e):Pa(t,s,e)}}function js(n){var e;return!!(n!=null&&n.alpha||!((e=n==null?void 0:n.color)===null||e===void 0)&&e.alpha)}function Ma(n){return n?e=>As(e,"0x"):e=>wr(e,"0x")}function Sa(n){return"color"in n||"view"in n&&n.view==="color"}const La={id:"input-color-number",type:"input",accept:(n,e)=>{if(typeof n!="number"||!Sa(e))return null;const t=$n(e);return t?{initialValue:n,params:t}:null},binding:{reader:n=>js(n.params)?wa:_a,equals:B.equals,writer:n=>ya(js(n.params))},controller:n=>{const e=js(n.params),t="expanded"in n.params?n.params.expanded:void 0,s="picker"in n.params?n.params.picker:void 0;return new Ns(n.document,{colorType:"int",expanded:t??!1,formatter:Ma(e),parser:Vs("int"),pickerLayout:s??"popup",supportsAlpha:e,value:n.value,viewProps:n.viewProps})}};function Va(n){return B.isRgbaColorObject(n)}function Aa(n){return e=>ma(e,n)}function Ea(n,e){return t=>n?Cr(t,e):yr(t,e)}const Ia={id:"input-color-object",type:"input",accept:(n,e)=>{if(!B.isColorObject(n))return null;const t=$n(e);return t?{initialValue:n,params:t}:null},binding:{reader:n=>Aa(Wt(n.params)),equals:B.equals,writer:n=>ka(Va(n.initialValue),Wt(n.params))},controller:n=>{var e;const t=B.isRgbaColorObject(n.initialValue),s="expanded"in n.params?n.params.expanded:void 0,u="picker"in n.params?n.params.picker:void 0,_=(e=Wt(n.params))!==null&&e!==void 0?e:"int";return new Ns(n.document,{colorType:_,expanded:s??!1,formatter:Ea(t,_),parser:Vs(_),pickerLayout:u??"popup",supportsAlpha:t,value:n.value,viewProps:n.viewProps})}},Ta={id:"input-color-string",type:"input",accept:(n,e)=>{if(typeof n!="string"||"view"in e&&e.view==="text")return null;const t=Ls(n,Wt(e));if(!t||!Es(t))return null;const u=$n(e);return u?{initialValue:n,params:u}:null},binding:{reader:n=>{var e;return Yo((e=Wt(n.params))!==null&&e!==void 0?e:"int")},equals:B.equals,writer:n=>{const e=Ls(n.initialValue,Wt(n.params));if(!e)throw T.shouldNeverHappen();const t=xa(e);if(!t)throw T.notBindable();return t}},controller:n=>{const e=Ls(n.initialValue,Wt(n.params));if(!e)throw T.shouldNeverHappen();const t=Es(e);if(!t)throw T.shouldNeverHappen();const s="expanded"in n.params?n.params.expanded:void 0,u="picker"in n.params?n.params.picker:void 0;return new Ns(n.document,{colorType:e.type,expanded:s??!1,formatter:t,parser:Vs(e.type),pickerLayout:u??"popup",supportsAlpha:e.alpha,value:n.value,viewProps:n.viewProps})}};class It{constructor(e){this.components=e.components,this.asm_=e.assembly}constrain(e){const t=this.asm_.toComponents(e).map((s,u)=>{var _,k;return(k=(_=this.components[u])===null||_===void 0?void 0:_.constrain(s))!==null&&k!==void 0?k:s});return this.asm_.fromComponents(t)}}const kr=z("pndtxt");class Oa{constructor(e,t){this.textViews=t.textViews,this.element=e.createElement("div"),this.element.classList.add(kr()),this.textViews.forEach(s=>{const u=e.createElement("div");u.classList.add(kr("a")),u.appendChild(s.element),this.element.appendChild(u)})}}function Da(n,e,t){return new Ze(n,{arrayPosition:t===0?"fst":t===e.axes.length-1?"lst":"mid",baseStep:e.axes[t].baseStep,parser:e.parser,props:e.axes[t].textProps,value:ee(0,{constraint:e.axes[t].constraint}),viewProps:e.viewProps})}class Fs{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.acs_=t.axes.map((s,u)=>Da(e,t,u)),this.acs_.forEach((s,u)=>{St({primary:this.value,secondary:s.value,forward:_=>t.assembly.toComponents(_.rawValue)[u],backward:(_,k)=>{const I=t.assembly.toComponents(_.rawValue);return I[u]=k.rawValue,t.assembly.fromComponents(I)}})}),this.view=new Oa(e,{textViews:this.acs_.map(s=>s.view)})}}function Mr(n,e){return"step"in n&&!x(n.step)?new xe(n.step,e):null}function Sr(n){return"max"in n&&!x(n.max)||"min"in n&&!x(n.min)?new ze({max:n.max,min:n.min}):null}function Na(n,e){const t=[],s=Mr(n,e);s&&t.push(s);const u=Sr(n);u&&t.push(u);const _=Bn(n.options);return _&&t.push(_),new rt(t)}function ja(n){const e=n?re(n,ze):null;return e?[e.minValue,e.maxValue]:[void 0,void 0]}function Fa(n){const[e,t]=ja(n);return[e??0,t??100]}const za={id:"input-number",type:"input",accept:(n,e)=>{if(typeof n!="number")return null;const t=K,s=S(e,{format:t.optional.function,max:t.optional.number,min:t.optional.number,options:t.optional.custom(Vt),step:t.optional.number});return s?{initialValue:n,params:s}:null},binding:{reader:n=>Dn,constraint:n=>Na(n.params,n.initialValue),writer:n=>Lt},controller:n=>{var e,t;const s=n.value,u=n.constraint;if(u&&re(u,kt))return new ht(n.document,{props:$.fromObject({options:(e=Un(u))!==null&&e!==void 0?e:[]}),value:s,viewProps:n.viewProps});const _=(t="format"in n.params?n.params.format:void 0)!==null&&t!==void 0?t:pe(ln(u,s.rawValue));if(u&&re(u,ze)){const[k,I]=Fa(u);return new an(n.document,{baseStep:At(u),parser:qe,sliderProps:$.fromObject({maxValue:I,minValue:k}),textProps:$.fromObject({draggingScale:Et(u,s.rawValue),formatter:_}),value:s,viewProps:n.viewProps})}return new Ze(n.document,{baseStep:At(u),parser:qe,props:$.fromObject({draggingScale:Et(u,s.rawValue),formatter:_}),value:s,viewProps:n.viewProps})}};class Tt{constructor(e=0,t=0){this.x=e,this.y=t}getComponents(){return[this.x,this.y]}static isObject(e){if(x(e))return!1;const t=e.x,s=e.y;return!(typeof t!="number"||typeof s!="number")}static equals(e,t){return e.x===t.x&&e.y===t.y}toObject(){return{x:this.x,y:this.y}}}const Lr={toComponents:n=>n.getComponents(),fromComponents:n=>new Tt(...n)},un=z("p2d");class Ba{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(un()),t.viewProps.bindClassModifiers(this.element),H(t.expanded,se(this.element,un(void 0,"expanded")));const s=e.createElement("div");s.classList.add(un("h")),this.element.appendChild(s);const u=e.createElement("button");u.classList.add(un("b")),u.appendChild(et(e,"p2dpad")),t.viewProps.bindDisabled(u),s.appendChild(u),this.buttonElement=u;const _=e.createElement("div");if(_.classList.add(un("t")),s.appendChild(_),this.textElement=_,t.pickerLayout==="inline"){const k=e.createElement("div");k.classList.add(un("p")),this.element.appendChild(k),this.pickerElement=k}else this.pickerElement=null}}const Ot=z("p2dp");class Ua{constructor(e,t){this.onFoldableChange_=this.onFoldableChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.invertsY_=t.invertsY,this.maxValue_=t.maxValue,this.element=e.createElement("div"),this.element.classList.add(Ot()),t.layout==="popup"&&this.element.classList.add(Ot(void 0,"p"));const s=e.createElement("div");s.classList.add(Ot("p")),t.viewProps.bindTabIndex(s),this.element.appendChild(s),this.padElement=s;const u=e.createElementNS(Ie,"svg");u.classList.add(Ot("g")),this.padElement.appendChild(u),this.svgElem_=u;const _=e.createElementNS(Ie,"line");_.classList.add(Ot("ax")),_.setAttributeNS(null,"x1","0"),_.setAttributeNS(null,"y1","50%"),_.setAttributeNS(null,"x2","100%"),_.setAttributeNS(null,"y2","50%"),this.svgElem_.appendChild(_);const k=e.createElementNS(Ie,"line");k.classList.add(Ot("ax")),k.setAttributeNS(null,"x1","50%"),k.setAttributeNS(null,"y1","0"),k.setAttributeNS(null,"x2","50%"),k.setAttributeNS(null,"y2","100%"),this.svgElem_.appendChild(k);const I=e.createElementNS(Ie,"line");I.classList.add(Ot("l")),I.setAttributeNS(null,"x1","50%"),I.setAttributeNS(null,"y1","50%"),this.svgElem_.appendChild(I),this.lineElem_=I;const G=e.createElement("div");G.classList.add(Ot("m")),this.padElement.appendChild(G),this.markerElem_=G,t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.update_()}get allFocusableElements(){return[this.padElement]}update_(){const[e,t]=this.value.rawValue.getComponents(),s=this.maxValue_,u=le(e,-s,+s,0,100),_=le(t,-s,+s,0,100),k=this.invertsY_?100-_:_;this.lineElem_.setAttributeNS(null,"x2",`${u}%`),this.lineElem_.setAttributeNS(null,"y2",`${k}%`),this.markerElem_.style.left=`${u}%`,this.markerElem_.style.top=`${k}%`}onValueChange_(){this.update_()}onFoldableChange_(){this.update_()}}function Vr(n,e,t){return[ye(e[0],Qe(n)),ye(e[1],Re(n))*(t?1:-1)]}class Ra{constructor(e,t){this.onPadKeyDown_=this.onPadKeyDown_.bind(this),this.onPadKeyUp_=this.onPadKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.baseSteps_=t.baseSteps,this.maxValue_=t.maxValue,this.invertsY_=t.invertsY,this.view=new Ua(e,{invertsY:this.invertsY_,layout:t.layout,maxValue:this.maxValue_,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new dt(this.view.padElement),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.padElement.addEventListener("keydown",this.onPadKeyDown_),this.view.padElement.addEventListener("keyup",this.onPadKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;const s=this.maxValue_,u=le(e.point.x,0,e.bounds.width,-s,+s),_=le(this.invertsY_?e.bounds.height-e.point.y:e.point.y,0,e.bounds.height,-s,+s);this.value.setRawValue(new Tt(u,_),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onPadKeyDown_(e){gi(e.key)&&e.preventDefault();const[t,s]=Vr(e,this.baseSteps_,this.invertsY_);t===0&&s===0||this.value.setRawValue(new Tt(this.value.rawValue.x+t,this.value.rawValue.y+s),{forceEmit:!1,last:!1})}onPadKeyUp_(e){const[t,s]=Vr(e,this.baseSteps_,this.invertsY_);t===0&&s===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class Ga{constructor(e,t){var s,u;this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.onPadButtonBlur_=this.onPadButtonBlur_.bind(this),this.onPadButtonClick_=this.onPadButtonClick_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.foldable_=$e.create(t.expanded),this.popC_=t.pickerLayout==="popup"?new En(e,{viewProps:this.viewProps}):null;const _=new Ra(e,{baseSteps:[t.axes[0].baseStep,t.axes[1].baseStep],invertsY:t.invertsY,layout:t.pickerLayout,maxValue:t.maxValue,value:this.value,viewProps:this.viewProps});_.view.allFocusableElements.forEach(k=>{k.addEventListener("blur",this.onPopupChildBlur_),k.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=_,this.textC_=new Fs(e,{assembly:Lr,axes:t.axes,parser:t.parser,value:this.value,viewProps:this.viewProps}),this.view=new Ba(e,{expanded:this.foldable_.value("expanded"),pickerLayout:t.pickerLayout,viewProps:this.viewProps}),this.view.textElement.appendChild(this.textC_.view.element),(s=this.view.buttonElement)===null||s===void 0||s.addEventListener("blur",this.onPadButtonBlur_),(u=this.view.buttonElement)===null||u===void 0||u.addEventListener("click",this.onPadButtonClick_),this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),St({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:k=>k.rawValue,backward:(k,I)=>I.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),Y(this.foldable_,this.view.pickerElement))}onPadButtonBlur_(e){if(!this.popC_)return;const t=this.view.element,s=e.relatedTarget;(!s||!t.contains(s))&&(this.popC_.shows.rawValue=!1)}onPadButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(e){if(!this.popC_)return;const t=this.popC_.view.element,s=Be(e);s&&t.contains(s)||s&&s===this.view.buttonElement&&!_t(t.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(e){this.popC_?e.key==="Escape"&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&e.key==="Escape"&&this.view.buttonElement.focus()}}function Ka(n){return Tt.isObject(n)?new Tt(n.x,n.y):new Tt}function $a(n,e){n.writeProperty("x",e.x),n.writeProperty("y",e.y)}function vt(n,e){if(!n)return;const t=[],s=Mr(n,e);s&&t.push(s);const u=Sr(n);return u&&t.push(u),new rt(t)}function Ya(n,e){return new It({assembly:Lr,components:[vt("x"in n?n.x:void 0,e.x),vt("y"in n?n.y:void 0,e.y)]})}function Ar(n,e){var t,s;const u=n&&re(n,ze);if(u)return Math.max(Math.abs((t=u.minValue)!==null&&t!==void 0?t:0),Math.abs((s=u.maxValue)!==null&&s!==void 0?s:0));const _=At(n);return Math.max(Math.abs(_)*10,Math.abs(e)*10)}function qa(n,e){const t=e instanceof It?e.components[0]:void 0,s=e instanceof It?e.components[1]:void 0,u=Ar(t,n.x),_=Ar(s,n.y);return Math.max(u,_)}function Er(n,e){return{baseStep:At(e),constraint:e,textProps:$.fromObject({draggingScale:Et(e,n),formatter:pe(ln(e,n))})}}function Xa(n){if(!("y"in n))return!1;const e=n.y;return e&&"inverted"in e?!!e.inverted:!1}const Qa={id:"input-point2d",type:"input",accept:(n,e)=>{if(!Tt.isObject(n))return null;const t=K,s=S(e,{expanded:t.optional.boolean,picker:t.optional.custom(yi),x:t.optional.custom(ke),y:t.optional.object({inverted:t.optional.boolean,max:t.optional.number,min:t.optional.number,step:t.optional.number})});return s?{initialValue:n,params:s}:null},binding:{reader:n=>Ka,constraint:n=>Ya(n.params,n.initialValue),equals:Tt.equals,writer:n=>$a},controller:n=>{const e=n.document,t=n.value,s=n.constraint;if(!(s instanceof It))throw T.shouldNeverHappen();const u="expanded"in n.params?n.params.expanded:void 0,_="picker"in n.params?n.params.picker:void 0;return new Ga(e,{axes:[Er(t.rawValue.x,s.components[0]),Er(t.rawValue.y,s.components[1])],expanded:u??!1,invertsY:Xa(n.params),maxValue:qa(t.rawValue,s),parser:qe,pickerLayout:_??"popup",value:t,viewProps:n.viewProps})}};class hn{constructor(e=0,t=0,s=0){this.x=e,this.y=t,this.z=s}getComponents(){return[this.x,this.y,this.z]}static isObject(e){if(x(e))return!1;const t=e.x,s=e.y,u=e.z;return!(typeof t!="number"||typeof s!="number"||typeof u!="number")}static equals(e,t){return e.x===t.x&&e.y===t.y&&e.z===t.z}toObject(){return{x:this.x,y:this.y,z:this.z}}}const Ir={toComponents:n=>n.getComponents(),fromComponents:n=>new hn(...n)};function Za(n){return hn.isObject(n)?new hn(n.x,n.y,n.z):new hn}function Wa(n,e){n.writeProperty("x",e.x),n.writeProperty("y",e.y),n.writeProperty("z",e.z)}function Ja(n,e){return new It({assembly:Ir,components:[vt("x"in n?n.x:void 0,e.x),vt("y"in n?n.y:void 0,e.y),vt("z"in n?n.z:void 0,e.z)]})}function zs(n,e){return{baseStep:At(e),constraint:e,textProps:$.fromObject({draggingScale:Et(e,n),formatter:pe(ln(e,n))})}}const Ha={id:"input-point3d",type:"input",accept:(n,e)=>{if(!hn.isObject(n))return null;const t=K,s=S(e,{x:t.optional.custom(ke),y:t.optional.custom(ke),z:t.optional.custom(ke)});return s?{initialValue:n,params:s}:null},binding:{reader:n=>Za,constraint:n=>Ja(n.params,n.initialValue),equals:hn.equals,writer:n=>Wa},controller:n=>{const e=n.value,t=n.constraint;if(!(t instanceof It))throw T.shouldNeverHappen();return new Fs(n.document,{assembly:Ir,axes:[zs(e.rawValue.x,t.components[0]),zs(e.rawValue.y,t.components[1]),zs(e.rawValue.z,t.components[2])],parser:qe,value:e,viewProps:n.viewProps})}};class dn{constructor(e=0,t=0,s=0,u=0){this.x=e,this.y=t,this.z=s,this.w=u}getComponents(){return[this.x,this.y,this.z,this.w]}static isObject(e){if(x(e))return!1;const t=e.x,s=e.y,u=e.z,_=e.w;return!(typeof t!="number"||typeof s!="number"||typeof u!="number"||typeof _!="number")}static equals(e,t){return e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w}toObject(){return{x:this.x,y:this.y,z:this.z,w:this.w}}}const Tr={toComponents:n=>n.getComponents(),fromComponents:n=>new dn(...n)};function el(n){return dn.isObject(n)?new dn(n.x,n.y,n.z,n.w):new dn}function tl(n,e){n.writeProperty("x",e.x),n.writeProperty("y",e.y),n.writeProperty("z",e.z),n.writeProperty("w",e.w)}function nl(n,e){return new It({assembly:Tr,components:[vt("x"in n?n.x:void 0,e.x),vt("y"in n?n.y:void 0,e.y),vt("z"in n?n.z:void 0,e.z),vt("w"in n?n.w:void 0,e.w)]})}function il(n,e){return{baseStep:At(e),constraint:e,textProps:$.fromObject({draggingScale:Et(e,n),formatter:pe(ln(e,n))})}}const sl={id:"input-point4d",type:"input",accept:(n,e)=>{if(!dn.isObject(n))return null;const t=K,s=S(e,{x:t.optional.custom(ke),y:t.optional.custom(ke),z:t.optional.custom(ke),w:t.optional.custom(ke)});return s?{initialValue:n,params:s}:null},binding:{reader:n=>el,constraint:n=>nl(n.params,n.initialValue),equals:dn.equals,writer:n=>tl},controller:n=>{const e=n.value,t=n.constraint;if(!(t instanceof It))throw T.shouldNeverHappen();return new Fs(n.document,{assembly:Tr,axes:e.rawValue.getComponents().map((s,u)=>il(s,t.components[u])),parser:qe,value:e,viewProps:n.viewProps})}};function rl(n){const e=[],t=Bn(n.options);return t&&e.push(t),new rt(e)}const ol={id:"input-string",type:"input",accept:(n,e)=>{if(typeof n!="string")return null;const s=S(e,{options:K.optional.custom(Vt)});return s?{initialValue:n,params:s}:null},binding:{reader:n=>vi,constraint:n=>rl(n.params),writer:n=>Lt},controller:n=>{var e;const t=n.document,s=n.value,u=n.constraint;return u&&re(u,kt)?new ht(t,{props:$.fromObject({options:(e=Un(u))!==null&&e!==void 0?e:[]}),value:s,viewProps:n.viewProps}):new qt(t,{parser:_=>_,props:$.fromObject({formatter:on}),value:s,viewProps:n.viewProps})}},qn={monitor:{defaultInterval:200,defaultLineCount:3}},Or=z("mll");class al{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(Or()),t.viewProps.bindClassModifiers(this.element);const s=e.createElement("textarea");s.classList.add(Or("i")),s.style.height=`calc(var(--bld-us) * ${t.lineCount})`,s.readOnly=!0,t.viewProps.bindDisabled(s),this.element.appendChild(s),this.textareaElem_=s,t.value.emitter.on("change",this.onValueUpdate_),this.value=t.value,this.update_()}update_(){const e=this.textareaElem_,t=e.scrollTop===e.scrollHeight-e.clientHeight,s=[];this.value.rawValue.forEach(u=>{u!==void 0&&s.push(this.formatter_(u))}),e.textContent=s.join(`
|
|
17
|
+
`),t&&(e.scrollTop=e.scrollHeight)}onValueUpdate_(){this.update_()}}class Bs{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new al(e,{formatter:t.formatter,lineCount:t.lineCount,value:this.value,viewProps:this.viewProps})}}const Dr=z("sgl");class ll{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(Dr()),t.viewProps.bindClassModifiers(this.element);const s=e.createElement("input");s.classList.add(Dr("i")),s.readOnly=!0,s.type="text",t.viewProps.bindDisabled(s),this.element.appendChild(s),this.inputElement=s,t.value.emitter.on("change",this.onValueUpdate_),this.value=t.value,this.update_()}update_(){const e=this.value.rawValue,t=e[e.length-1];this.inputElement.value=t!==void 0?this.formatter_(t):""}onValueUpdate_(){this.update_()}}class Us{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new ll(e,{formatter:t.formatter,value:this.value,viewProps:this.viewProps})}}const cl={id:"monitor-bool",type:"monitor",accept:(n,e)=>{if(typeof n!="boolean")return null;const s=S(e,{lineCount:K.optional.number});return s?{initialValue:n,params:s}:null},binding:{reader:n=>pi},controller:n=>{var e;return n.value.rawValue.length===1?new Us(n.document,{formatter:ui,value:n.value,viewProps:n.viewProps}):new Bs(n.document,{formatter:ui,lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:qn.monitor.defaultLineCount,value:n.value,viewProps:n.viewProps})}},Dt=z("grl");class pl{constructor(e,t){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=e.createElement("div"),this.element.classList.add(Dt()),t.viewProps.bindClassModifiers(this.element),this.formatter_=t.formatter,this.props_=t.props,this.cursor_=t.cursor,this.cursor_.emitter.on("change",this.onCursorChange_);const s=e.createElementNS(Ie,"svg");s.classList.add(Dt("g")),s.style.height=`calc(var(--bld-us) * ${t.lineCount})`,this.element.appendChild(s),this.svgElem_=s;const u=e.createElementNS(Ie,"polyline");this.svgElem_.appendChild(u),this.lineElem_=u;const _=e.createElement("div");_.classList.add(Dt("t"),z("tt")()),this.element.appendChild(_),this.tooltipElem_=_,t.value.emitter.on("change",this.onValueUpdate_),this.value=t.value,this.update_()}get graphElement(){return this.svgElem_}update_(){const e=this.svgElem_.getBoundingClientRect(),t=this.value.rawValue.length-1,s=this.props_.get("minValue"),u=this.props_.get("maxValue"),_=[];this.value.rawValue.forEach((te,ie)=>{if(te===void 0)return;const bt=le(ie,0,t,0,e.width),Xn=le(te,s,u,e.height,0);_.push([bt,Xn].join(","))}),this.lineElem_.setAttributeNS(null,"points",_.join(" "));const k=this.tooltipElem_,I=this.value.rawValue[this.cursor_.rawValue];if(I===void 0){k.classList.remove(Dt("t","a"));return}const G=le(this.cursor_.rawValue,0,t,0,e.width),Q=le(I,s,u,e.height,0);k.style.left=`${G}px`,k.style.top=`${Q}px`,k.textContent=`${this.formatter_(I)}`,k.classList.contains(Dt("t","a"))||(k.classList.add(Dt("t","a"),Dt("t","in")),lt(k),k.classList.remove(Dt("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class ul{constructor(e,t){if(this.onGraphMouseMove_=this.onGraphMouseMove_.bind(this),this.onGraphMouseLeave_=this.onGraphMouseLeave_.bind(this),this.onGraphPointerDown_=this.onGraphPointerDown_.bind(this),this.onGraphPointerMove_=this.onGraphPointerMove_.bind(this),this.onGraphPointerUp_=this.onGraphPointerUp_.bind(this),this.props_=t.props,this.value=t.value,this.viewProps=t.viewProps,this.cursor_=ee(-1),this.view=new pl(e,{cursor:this.cursor_,formatter:t.formatter,lineCount:t.lineCount,props:this.props_,value:this.value,viewProps:this.viewProps}),!_t(e))this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_);else{const s=new dt(this.view.element);s.emitter.on("down",this.onGraphPointerDown_),s.emitter.on("move",this.onGraphPointerMove_),s.emitter.on("up",this.onGraphPointerUp_)}}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(e){const t=this.view.element.getBoundingClientRect();this.cursor_.rawValue=Math.floor(le(e.offsetX,0,t.width,0,this.value.rawValue.length))}onGraphPointerDown_(e){this.onGraphPointerMove_(e)}onGraphPointerMove_(e){if(!e.data.point){this.cursor_.rawValue=-1;return}this.cursor_.rawValue=Math.floor(le(e.data.point.x,0,e.data.bounds.width,0,this.value.rawValue.length))}onGraphPointerUp_(){this.cursor_.rawValue=-1}}function Rs(n){return"format"in n&&!x(n.format)?n.format:pe(2)}function hl(n){var e;return n.value.rawValue.length===1?new Us(n.document,{formatter:Rs(n.params),value:n.value,viewProps:n.viewProps}):new Bs(n.document,{formatter:Rs(n.params),lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:qn.monitor.defaultLineCount,value:n.value,viewProps:n.viewProps})}function dl(n){var e,t,s;return new ul(n.document,{formatter:Rs(n.params),lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:qn.monitor.defaultLineCount,props:$.fromObject({maxValue:(t="max"in n.params?n.params.max:null)!==null&&t!==void 0?t:100,minValue:(s="min"in n.params?n.params.min:null)!==null&&s!==void 0?s:0}),value:n.value,viewProps:n.viewProps})}function Nr(n){return"view"in n&&n.view==="graph"}const ml={id:"monitor-number",type:"monitor",accept:(n,e)=>{if(typeof n!="number")return null;const t=K,s=S(e,{format:t.optional.function,lineCount:t.optional.number,max:t.optional.number,min:t.optional.number,view:t.optional.string});return s?{initialValue:n,params:s}:null},binding:{defaultBufferSize:n=>Nr(n)?64:1,reader:n=>Dn},controller:n=>Nr(n.params)?dl(n):hl(n)},fl={id:"monitor-string",type:"monitor",accept:(n,e)=>{if(typeof n!="string")return null;const t=K,s=S(e,{lineCount:t.optional.number,multiline:t.optional.boolean});return s?{initialValue:n,params:s}:null},binding:{reader:n=>vi},controller:n=>{var e;const t=n.value;return t.rawValue.length>1||"multiline"in n.params&&n.params.multiline?new Bs(n.document,{formatter:on,lineCount:(e=n.params.lineCount)!==null&&e!==void 0?e:qn.monitor.defaultLineCount,value:t,viewProps:n.viewProps}):new Us(n.document,{formatter:on,value:t,viewProps:n.viewProps})}};class vl{constructor(e){this.onValueChange_=this.onValueChange_.bind(this),this.reader=e.reader,this.writer=e.writer,this.emitter=new N,this.value=e.value,this.value.emitter.on("change",this.onValueChange_),this.target=e.target,this.read()}read(){const e=this.target.read();e!==void 0&&(this.value.rawValue=this.reader(e))}write_(e){this.writer(this.target,e)}onValueChange_(e){this.write_(e.rawValue),this.emitter.emit("change",{options:e.options,rawValue:e.rawValue,sender:this})}}function bl(n,e){const t=n.accept(e.target.read(),e.params);if(x(t))return null;const s=K,u={target:e.target,initialValue:t.initialValue,params:t.params},_=n.binding.reader(u),k=n.binding.constraint?n.binding.constraint(u):void 0,I=ee(_(t.initialValue),{constraint:k,equals:n.binding.equals}),G=new vl({reader:_,target:e.target,value:I,writer:n.binding.writer(u)}),Q=s.optional.boolean(e.params.disabled).value,te=s.optional.boolean(e.params.hidden).value,ie=n.controller({constraint:k,document:e.document,initialValue:t.initialValue,params:t.params,value:G.value,viewProps:st.create({disabled:Q,hidden:te})}),bt=s.optional.string(e.params.label).value;return new De(e.document,{binding:G,blade:Ke(),props:$.fromObject({label:bt??e.target.key}),valueController:ie})}class gl{constructor(e){this.onTick_=this.onTick_.bind(this),this.reader_=e.reader,this.target=e.target,this.emitter=new N,this.value=e.value,this.ticker=e.ticker,this.ticker.emitter.on("tick",this.onTick_),this.read()}dispose(){this.ticker.dispose()}read(){const e=this.target.read();if(e===void 0)return;const t=this.value.rawValue,s=this.reader_(e);this.value.rawValue=bi(t,s),this.emitter.emit("update",{rawValue:s,sender:this})}onTick_(e){this.read()}}function _l(n,e){return e===0?new ai:new Vn(n,e??qn.monitor.defaultInterval)}function wl(n,e){var t,s,u;const _=K,k=n.accept(e.target.read(),e.params);if(x(k))return null;const I={target:e.target,initialValue:k.initialValue,params:k.params},G=n.binding.reader(I),Q=(s=(t=_.optional.number(e.params.bufferSize).value)!==null&&t!==void 0?t:n.binding.defaultBufferSize&&n.binding.defaultBufferSize(k.params))!==null&&s!==void 0?s:1,te=_.optional.number(e.params.interval).value,ie=new gl({reader:G,target:e.target,ticker:_l(e.document,te),value:vs(Q)}),bt=_.optional.boolean(e.params.disabled).value,Xn=_.optional.boolean(e.params.hidden).value,Qn=n.controller({document:e.document,params:k.params,value:ie.value,viewProps:st.create({disabled:bt,hidden:Xn})}),mn=(u=_.optional.string(e.params.label).value)!==null&&u!==void 0?u:e.target.key;return new it(e.document,{binding:ie,blade:Ke(),props:$.fromObject({label:mn}),valueController:Qn})}class xl{constructor(){this.pluginsMap_={blades:[],inputs:[],monitors:[]}}getAll(){return[...this.pluginsMap_.blades,...this.pluginsMap_.inputs,...this.pluginsMap_.monitors]}register(e){e.type==="blade"?this.pluginsMap_.blades.unshift(e):e.type==="input"?this.pluginsMap_.inputs.unshift(e):e.type==="monitor"&&this.pluginsMap_.monitors.unshift(e)}createInput(e,t,s){const u=t.read();if(x(u))throw new T({context:{key:t.key},type:"nomatchingcontroller"});const _=this.pluginsMap_.inputs.reduce((k,I)=>k??bl(I,{document:e,target:t,params:s}),null);if(_)return _;throw new T({context:{key:t.key},type:"nomatchingcontroller"})}createMonitor(e,t,s){const u=this.pluginsMap_.monitors.reduce((_,k)=>_??wl(k,{document:e,params:s,target:t}),null);if(u)return u;throw new T({context:{key:t.key},type:"nomatchingcontroller"})}createBlade(e,t){const s=this.pluginsMap_.blades.reduce((u,_)=>u??Ki(_,{document:e,params:t}),null);if(!s)throw new T({type:"nomatchingview",context:{params:t}});return s}createBladeApi(e){if(e instanceof De)return new Se(e);if(e instanceof it)return new ut(e);if(e instanceof Gt)return new Rt(e,this);const t=this.pluginsMap_.blades.reduce((s,u)=>s??u.api({controller:e,pool:this}),null);if(!t)throw T.shouldNeverHappen();return t}}function yl(){const n=new xl;return[Qa,Ha,sl,ol,za,Ta,Ia,La,Cs,cl,fl,ml,xt,zi,ii,Ln].forEach(e=>{n.register(e)}),n}class jr extends h{constructor(e){super(e),this.emitter_=new N,this.controller_.valueController.value.emitter.on("change",t=>{this.emitter_.emit("change",{event:new f(this,t.rawValue)})})}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}get options(){return this.controller_.valueController.props.get("options")}set options(e){this.controller_.valueController.props.set("options",e)}get value(){return this.controller_.valueController.value.rawValue}set value(e){this.controller_.valueController.value.rawValue=e}on(e,t){const s=t.bind(this);return this.emitter_.on(e,u=>{s(u.event)}),this}}class Fr extends h{constructor(e){super(e),this.emitter_=new N,this.controller_.valueController.value.emitter.on("change",t=>{this.emitter_.emit("change",{event:new f(this,t.rawValue)})})}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}get maxValue(){return this.controller_.valueController.sliderController.props.get("maxValue")}set maxValue(e){this.controller_.valueController.sliderController.props.set("maxValue",e)}get minValue(){return this.controller_.valueController.sliderController.props.get("minValue")}set minValue(e){this.controller_.valueController.sliderController.props.set("minValue",e)}get value(){return this.controller_.valueController.value.rawValue}set value(e){this.controller_.valueController.value.rawValue=e}on(e,t){const s=t.bind(this);return this.emitter_.on(e,u=>{s(u.event)}),this}}class zr extends h{constructor(e){super(e),this.emitter_=new N,this.controller_.valueController.value.emitter.on("change",t=>{this.emitter_.emit("change",{event:new f(this,t.rawValue)})})}get label(){return this.controller_.props.get("label")}set label(e){this.controller_.props.set("label",e)}get formatter(){return this.controller_.valueController.props.get("formatter")}set formatter(e){this.controller_.valueController.props.set("formatter",e)}get value(){return this.controller_.valueController.value.rawValue}set value(e){this.controller_.valueController.value.rawValue=e}on(e,t){const s=t.bind(this);return this.emitter_.on(e,u=>{s(u.event)}),this}}const Cl=function(){return{id:"list",type:"blade",accept(n){const e=K,t=S(n,{options:e.required.custom(Vt),value:e.required.raw,view:e.required.constant("list"),label:e.optional.string});return t?{params:t}:null},controller(n){const e=new ht(n.document,{props:$.fromObject({options:Ci(n.params.options)}),value:ee(n.params.value),viewProps:n.viewProps});return new Ct(n.document,{blade:n.blade,props:$.fromObject({label:n.params.label}),valueController:e})},api(n){return!(n.controller instanceof Ct)||!(n.controller.valueController instanceof ht)?null:new jr(n.controller)}}}();function Pl(n){return n.reduce((e,t)=>Object.assign(e,{[t.presetKey]:t.read()}),{})}function kl(n,e){n.forEach(t=>{const s=e[t.presetKey];s!==void 0&&t.write(s)})}class Ml extends yn{constructor(e,t){super(e,t)}get element(){return this.controller_.view.element}importPreset(e){const t=this.controller_.rackController.rack.find(De).map(s=>s.binding.target);kl(t,e),this.refresh()}exportPreset(){const e=this.controller_.rackController.rack.find(De).map(t=>t.binding.target);return Pl(e)}refresh(){this.controller_.rackController.rack.find(De).forEach(e=>{e.binding.read()}),this.controller_.rackController.rack.find(it).forEach(e=>{e.binding.read()})}}class Sl extends kn{constructor(e,t){super(e,{expanded:t.expanded,blade:t.blade,props:t.props,root:!0,viewProps:t.viewProps})}}const Ll={id:"slider",type:"blade",accept(n){const e=K,t=S(n,{max:e.required.number,min:e.required.number,view:e.required.constant("slider"),format:e.optional.function,label:e.optional.string,value:e.optional.number});return t?{params:t}:null},controller(n){var e,t;const s=(e=n.params.value)!==null&&e!==void 0?e:0,u=new an(n.document,{baseStep:1,parser:qe,sliderProps:$.fromObject({maxValue:n.params.max,minValue:n.params.min}),textProps:$.fromObject({draggingScale:Et(void 0,s),formatter:(t=n.params.format)!==null&&t!==void 0?t:ms}),value:ee(s),viewProps:n.viewProps});return new Ct(n.document,{blade:n.blade,props:$.fromObject({label:n.params.label}),valueController:u})},api(n){return!(n.controller instanceof Ct)||!(n.controller.valueController instanceof an)?null:new Fr(n.controller)}},Vl=function(){return{id:"text",type:"blade",accept(n){const e=K,t=S(n,{parse:e.required.function,value:e.required.raw,view:e.required.constant("text"),format:e.optional.function,label:e.optional.string});return t?{params:t}:null},controller(n){var e;const t=new qt(n.document,{parser:n.params.parse,props:$.fromObject({formatter:(e=n.params.format)!==null&&e!==void 0?e:s=>String(s)}),value:ee(n.params.value),viewProps:n.viewProps});return new Ct(n.document,{blade:n.blade,props:$.fromObject({label:n.params.label}),valueController:t})},api(n){return!(n.controller instanceof Ct)||!(n.controller.valueController instanceof qt)?null:new zr(n.controller)}}}();function Al(n){const e=n.createElement("div");return e.classList.add(z("dfw")()),n.body&&n.body.appendChild(e),e}function Br(n,e,t){if(n.querySelector(`style[data-tp-style=${e}]`))return;const s=n.createElement("style");s.dataset.tpStyle=e,s.textContent=t,n.head.appendChild(s)}class El extends Ml{constructor(e){var t,s;const u=e??{},_=(t=u.document)!==null&&t!==void 0?t:_n(),k=yl(),I=new Sl(_,{expanded:u.expanded,blade:Ke(),props:$.fromObject({title:u.title}),viewProps:st.create()});super(I,k),this.pool_=k,this.containerElem_=(s=u.container)!==null&&s!==void 0?s:Al(_),this.containerElem_.appendChild(this.element),this.doc_=_,this.usesDefaultWrapper_=!u.container,this.setUpDefaultPlugins_()}get document(){if(!this.doc_)throw T.alreadyDisposed();return this.doc_}dispose(){const e=this.containerElem_;if(!e)throw T.alreadyDisposed();if(this.usesDefaultWrapper_){const t=e.parentElement;t&&t.removeChild(e)}this.containerElem_=null,this.doc_=null,super.dispose()}registerPlugin(e){("plugin"in e?[e.plugin]:"plugins"in e?e.plugins:[]).forEach(s=>{this.pool_.register(s),this.embedPluginStyle_(s)})}embedPluginStyle_(e){e.css&&Br(this.document,`plugin-${e.id}`,e.css)}setUpDefaultPlugins_(){Br(this.document,"default",'.tp-tbiv_b,.tp-coltxtv_ms,.tp-ckbv_i,.tp-rotv_b,.tp-fldv_b,.tp-mllv_i,.tp-sglv_i,.tp-grlv_g,.tp-txtv_i,.tp-p2dpv_p,.tp-colswv_sw,.tp-p2dv_b,.tp-btnv_b,.tp-lstv_s{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-p2dv_b,.tp-btnv_b,.tp-lstv_s{background-color:var(--btn-bg);border-radius:var(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-p2dv_b:hover,.tp-btnv_b:hover,.tp-lstv_s:hover{background-color:var(--btn-bg-h)}.tp-p2dv_b:focus,.tp-btnv_b:focus,.tp-lstv_s:focus{background-color:var(--btn-bg-f)}.tp-p2dv_b:active,.tp-btnv_b:active,.tp-lstv_s:active{background-color:var(--btn-bg-a)}.tp-p2dv_b:disabled,.tp-btnv_b:disabled,.tp-lstv_s:disabled{opacity:.5}.tp-txtv_i,.tp-p2dpv_p,.tp-colswv_sw{background-color:var(--in-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);min-width:0;width:100%}.tp-txtv_i:hover,.tp-p2dpv_p:hover,.tp-colswv_sw:hover{background-color:var(--in-bg-h)}.tp-txtv_i:focus,.tp-p2dpv_p:focus,.tp-colswv_sw:focus{background-color:var(--in-bg-f)}.tp-txtv_i:active,.tp-p2dpv_p:active,.tp-colswv_sw:active{background-color:var(--in-bg-a)}.tp-txtv_i:disabled,.tp-p2dpv_p:disabled,.tp-colswv_sw:disabled{opacity:.5}.tp-mllv_i,.tp-sglv_i,.tp-grlv_g{background-color:var(--mo-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--mo-fg);height:var(--bld-us);scrollbar-color:currentColor rgba(0,0,0,0);scrollbar-width:thin;width:100%}.tp-mllv_i::-webkit-scrollbar,.tp-sglv_i::-webkit-scrollbar,.tp-grlv_g::-webkit-scrollbar{height:8px;width:8px}.tp-mllv_i::-webkit-scrollbar-corner,.tp-sglv_i::-webkit-scrollbar-corner,.tp-grlv_g::-webkit-scrollbar-corner{background-color:rgba(0,0,0,0)}.tp-mllv_i::-webkit-scrollbar-thumb,.tp-sglv_i::-webkit-scrollbar-thumb,.tp-grlv_g::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:currentColor;border:rgba(0,0,0,0) solid 2px;border-radius:4px}.tp-rotv{--font-family: var(--tp-font-family, Roboto Mono, Source Code Pro, Menlo, Courier, monospace);--bs-br: var(--tp-base-border-radius, 6px);--cnt-h-p: var(--tp-container-horizontal-padding, 4px);--cnt-v-p: var(--tp-container-vertical-padding, 4px);--elm-br: var(--tp-element-border-radius, 2px);--bld-s: var(--tp-blade-spacing, 4px);--bld-us: var(--tp-blade-unit-size, 20px);--bs-bg: var(--tp-base-background-color, hsl(230deg, 7%, 17%));--bs-sh: var(--tp-base-shadow-color, rgba(0, 0, 0, 0.2));--btn-bg: var(--tp-button-background-color, hsl(230deg, 7%, 70%));--btn-bg-a: var(--tp-button-background-color-active, #d6d7db);--btn-bg-f: var(--tp-button-background-color-focus, #c8cad0);--btn-bg-h: var(--tp-button-background-color-hover, #bbbcc4);--btn-fg: var(--tp-button-foreground-color, hsl(230deg, 7%, 17%));--cnt-bg: var(--tp-container-background-color, rgba(187, 188, 196, 0.1));--cnt-bg-a: var(--tp-container-background-color-active, rgba(187, 188, 196, 0.25));--cnt-bg-f: var(--tp-container-background-color-focus, rgba(187, 188, 196, 0.2));--cnt-bg-h: var(--tp-container-background-color-hover, rgba(187, 188, 196, 0.15));--cnt-fg: var(--tp-container-foreground-color, hsl(230deg, 7%, 75%));--in-bg: var(--tp-input-background-color, rgba(187, 188, 196, 0.1));--in-bg-a: var(--tp-input-background-color-active, rgba(187, 188, 196, 0.25));--in-bg-f: var(--tp-input-background-color-focus, rgba(187, 188, 196, 0.2));--in-bg-h: var(--tp-input-background-color-hover, rgba(187, 188, 196, 0.15));--in-fg: var(--tp-input-foreground-color, hsl(230deg, 7%, 75%));--lbl-fg: var(--tp-label-foreground-color, rgba(187, 188, 196, 0.7));--mo-bg: var(--tp-monitor-background-color, rgba(0, 0, 0, 0.2));--mo-fg: var(--tp-monitor-foreground-color, rgba(187, 188, 196, 0.7));--grv-fg: var(--tp-groove-foreground-color, rgba(187, 188, 196, 0.1))}.tp-rotv_c>.tp-cntv.tp-v-lst,.tp-tabv_c .tp-brkv>.tp-cntv.tp-v-lst,.tp-fldv_c>.tp-cntv.tp-v-lst{margin-bottom:calc(-1*var(--cnt-v-p))}.tp-rotv_c>.tp-fldv.tp-v-lst .tp-fldv_c,.tp-tabv_c .tp-brkv>.tp-fldv.tp-v-lst .tp-fldv_c,.tp-fldv_c>.tp-fldv.tp-v-lst .tp-fldv_c{border-bottom-left-radius:0}.tp-rotv_c>.tp-fldv.tp-v-lst .tp-fldv_b,.tp-tabv_c .tp-brkv>.tp-fldv.tp-v-lst .tp-fldv_b,.tp-fldv_c>.tp-fldv.tp-v-lst .tp-fldv_b{border-bottom-left-radius:0}.tp-rotv_c>*:not(.tp-v-fst),.tp-tabv_c .tp-brkv>*:not(.tp-v-fst),.tp-fldv_c>*:not(.tp-v-fst){margin-top:var(--bld-s)}.tp-rotv_c>.tp-sprv:not(.tp-v-fst),.tp-tabv_c .tp-brkv>.tp-sprv:not(.tp-v-fst),.tp-fldv_c>.tp-sprv:not(.tp-v-fst),.tp-rotv_c>.tp-cntv:not(.tp-v-fst),.tp-tabv_c .tp-brkv>.tp-cntv:not(.tp-v-fst),.tp-fldv_c>.tp-cntv:not(.tp-v-fst){margin-top:var(--cnt-v-p)}.tp-rotv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-tabv_c .tp-brkv>.tp-sprv+*:not(.tp-v-hidden),.tp-fldv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-rotv_c>.tp-cntv+*:not(.tp-v-hidden),.tp-tabv_c .tp-brkv>.tp-cntv+*:not(.tp-v-hidden),.tp-fldv_c>.tp-cntv+*:not(.tp-v-hidden){margin-top:var(--cnt-v-p)}.tp-rotv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-tabv_c .tp-brkv>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-fldv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-rotv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv,.tp-tabv_c .tp-brkv>.tp-cntv:not(.tp-v-hidden)+.tp-cntv,.tp-fldv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv{margin-top:0}.tp-tabv_c .tp-brkv>.tp-cntv,.tp-fldv_c>.tp-cntv{margin-left:4px}.tp-tabv_c .tp-brkv>.tp-fldv>.tp-fldv_b,.tp-fldv_c>.tp-fldv>.tp-fldv_b{border-top-left-radius:var(--elm-br);border-bottom-left-radius:var(--elm-br)}.tp-tabv_c .tp-brkv>.tp-fldv.tp-fldv-expanded>.tp-fldv_b,.tp-fldv_c>.tp-fldv.tp-fldv-expanded>.tp-fldv_b{border-bottom-left-radius:0}.tp-tabv_c .tp-brkv .tp-fldv>.tp-fldv_c,.tp-fldv_c .tp-fldv>.tp-fldv_c{border-bottom-left-radius:var(--elm-br)}.tp-tabv_c .tp-brkv>.tp-tabv>.tp-tabv_i,.tp-fldv_c>.tp-tabv>.tp-tabv_i{border-top-left-radius:var(--elm-br)}.tp-tabv_c .tp-brkv .tp-tabv>.tp-tabv_c,.tp-fldv_c .tp-tabv>.tp-tabv_c{border-bottom-left-radius:var(--elm-br)}.tp-rotv_b,.tp-fldv_b{background-color:var(--cnt-bg);color:var(--cnt-fg);cursor:pointer;display:block;height:calc(var(--bld-us) + 4px);line-height:calc(var(--bld-us) + 4px);overflow:hidden;padding-left:var(--cnt-h-p);padding-right:calc(4px + var(--bld-us) + var(--cnt-h-p));position:relative;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%;transition:border-radius .2s ease-in-out .2s}.tp-rotv_b:hover,.tp-fldv_b:hover{background-color:var(--cnt-bg-h)}.tp-rotv_b:focus,.tp-fldv_b:focus{background-color:var(--cnt-bg-f)}.tp-rotv_b:active,.tp-fldv_b:active{background-color:var(--cnt-bg-a)}.tp-rotv_b:disabled,.tp-fldv_b:disabled{opacity:.5}.tp-rotv_m,.tp-fldv_m{background:linear-gradient(to left, var(--cnt-fg), var(--cnt-fg) 2px, transparent 2px, transparent 4px, var(--cnt-fg) 4px);border-radius:2px;bottom:0;content:"";display:block;height:6px;right:calc(var(--cnt-h-p) + (var(--bld-us) + 4px - 6px)/2 - 2px);margin:auto;opacity:.5;position:absolute;top:0;transform:rotate(90deg);transition:transform .2s ease-in-out;width:6px}.tp-rotv.tp-rotv-expanded .tp-rotv_m,.tp-fldv.tp-fldv-expanded>.tp-fldv_b>.tp-fldv_m{transform:none}.tp-rotv_c,.tp-fldv_c{box-sizing:border-box;height:0;opacity:0;overflow:hidden;padding-bottom:0;padding-top:0;position:relative;transition:height .2s ease-in-out,opacity .2s linear,padding .2s ease-in-out}.tp-rotv.tp-rotv-cpl:not(.tp-rotv-expanded) .tp-rotv_c,.tp-fldv.tp-fldv-cpl:not(.tp-fldv-expanded)>.tp-fldv_c{display:none}.tp-rotv.tp-rotv-expanded .tp-rotv_c,.tp-fldv.tp-fldv-expanded>.tp-fldv_c{opacity:1;padding-bottom:var(--cnt-v-p);padding-top:var(--cnt-v-p);transform:none;overflow:visible;transition:height .2s ease-in-out,opacity .2s linear .2s,padding .2s ease-in-out}.tp-lstv,.tp-coltxtv_m{position:relative}.tp-lstv_s{padding:0 20px 0 4px;width:100%}.tp-lstv_m,.tp-coltxtv_mm{bottom:0;margin:auto;pointer-events:none;position:absolute;right:2px;top:0}.tp-lstv_m svg,.tp-coltxtv_mm svg{bottom:0;height:16px;margin:auto;position:absolute;right:0;top:0;width:16px}.tp-lstv_m svg path,.tp-coltxtv_mm svg path{fill:currentColor}.tp-pndtxtv,.tp-coltxtv_w{display:flex}.tp-pndtxtv_a,.tp-coltxtv_c{width:100%}.tp-pndtxtv_a+.tp-pndtxtv_a,.tp-coltxtv_c+.tp-pndtxtv_a,.tp-pndtxtv_a+.tp-coltxtv_c,.tp-coltxtv_c+.tp-coltxtv_c{margin-left:2px}.tp-btnv_b{width:100%}.tp-btnv_t{text-align:center}.tp-ckbv_l{display:block;position:relative}.tp-ckbv_i{left:0;opacity:0;position:absolute;top:0}.tp-ckbv_w{background-color:var(--in-bg);border-radius:var(--elm-br);cursor:pointer;display:block;height:var(--bld-us);position:relative;width:var(--bld-us)}.tp-ckbv_w svg{bottom:0;display:block;height:16px;left:0;margin:auto;opacity:0;position:absolute;right:0;top:0;width:16px}.tp-ckbv_w svg path{fill:none;stroke:var(--in-fg);stroke-width:2}.tp-ckbv_i:hover+.tp-ckbv_w{background-color:var(--in-bg-h)}.tp-ckbv_i:focus+.tp-ckbv_w{background-color:var(--in-bg-f)}.tp-ckbv_i:active+.tp-ckbv_w{background-color:var(--in-bg-a)}.tp-ckbv_i:checked+.tp-ckbv_w svg{opacity:1}.tp-ckbv.tp-v-disabled .tp-ckbv_w{opacity:.5}.tp-colv{position:relative}.tp-colv_h{display:flex}.tp-colv_s{flex-grow:0;flex-shrink:0;width:var(--bld-us)}.tp-colv_t{flex:1;margin-left:4px}.tp-colv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-colv.tp-colv-cpl .tp-colv_p{overflow:visible}.tp-colv.tp-colv-expanded .tp-colv_p{margin-top:var(--bld-s);opacity:1}.tp-colv .tp-popv{left:calc(-1*var(--cnt-h-p));right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-colpv_h,.tp-colpv_ap{margin-left:6px;margin-right:6px}.tp-colpv_h{margin-top:var(--bld-s)}.tp-colpv_rgb{display:flex;margin-top:var(--bld-s);width:100%}.tp-colpv_a{display:flex;margin-top:var(--cnt-v-p);padding-top:calc(var(--cnt-v-p) + 2px);position:relative}.tp-colpv_a:before{background-color:var(--grv-fg);content:"";height:2px;left:calc(-1*var(--cnt-h-p));position:absolute;right:calc(-1*var(--cnt-h-p));top:0}.tp-colpv_ap{align-items:center;display:flex;flex:3}.tp-colpv_at{flex:1;margin-left:4px}.tp-svpv{border-radius:var(--elm-br);outline:none;overflow:hidden;position:relative}.tp-svpv_c{cursor:crosshair;display:block;height:calc(var(--bld-us)*4);width:100%}.tp-svpv_m{border-radius:100%;border:rgba(255,255,255,.75) solid 2px;box-sizing:border-box;filter:drop-shadow(0 0 1px rgba(0, 0, 0, 0.3));height:12px;margin-left:-6px;margin-top:-6px;pointer-events:none;position:absolute;width:12px}.tp-svpv:focus .tp-svpv_m{border-color:#fff}.tp-hplv{cursor:pointer;height:var(--bld-us);outline:none;position:relative}.tp-hplv_c{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAABCAYAAABubagXAAAAQ0lEQVQoU2P8z8Dwn0GCgQEDi2OK/RBgYHjBgIpfovFh8j8YBIgzFGQxuqEgPhaDOT5gOhPkdCxOZeBg+IDFZZiGAgCaSSMYtcRHLgAAAABJRU5ErkJggg==);background-position:left top;background-repeat:no-repeat;background-size:100% 100%;border-radius:2px;display:block;height:4px;left:0;margin-top:-2px;position:absolute;top:50%;width:100%}.tp-hplv_m{border-radius:var(--elm-br);border:rgba(255,255,255,.75) solid 2px;box-shadow:0 0 2px rgba(0,0,0,.1);box-sizing:border-box;height:12px;left:50%;margin-left:-6px;margin-top:-6px;pointer-events:none;position:absolute;top:50%;width:12px}.tp-hplv:focus .tp-hplv_m{border-color:#fff}.tp-aplv{cursor:pointer;height:var(--bld-us);outline:none;position:relative;width:100%}.tp-aplv_b{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:4px 4px;background-position:0 0,2px 2px;border-radius:2px;display:block;height:4px;left:0;margin-top:-2px;overflow:hidden;position:absolute;top:50%;width:100%}.tp-aplv_c{bottom:0;left:0;position:absolute;right:0;top:0}.tp-aplv_m{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:12px 12px;background-position:0 0,6px 6px;border-radius:var(--elm-br);box-shadow:0 0 2px rgba(0,0,0,.1);height:12px;left:50%;margin-left:-6px;margin-top:-6px;overflow:hidden;pointer-events:none;position:absolute;top:50%;width:12px}.tp-aplv_p{border-radius:var(--elm-br);border:rgba(255,255,255,.75) solid 2px;box-sizing:border-box;bottom:0;left:0;position:absolute;right:0;top:0}.tp-aplv:focus .tp-aplv_p{border-color:#fff}.tp-colswv{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:10px 10px;background-position:0 0,5px 5px;border-radius:var(--elm-br);overflow:hidden}.tp-colswv.tp-v-disabled{opacity:.5}.tp-colswv_sw{border-radius:0}.tp-colswv_b{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;cursor:pointer;display:block;height:var(--bld-us);left:0;margin:0;outline:none;padding:0;position:absolute;top:0;width:var(--bld-us)}.tp-colswv_b:focus::after{border:rgba(255,255,255,.75) solid 2px;border-radius:var(--elm-br);bottom:0;content:"";display:block;left:0;position:absolute;right:0;top:0}.tp-coltxtv{display:flex;width:100%}.tp-coltxtv_m{margin-right:4px}.tp-coltxtv_ms{border-radius:var(--elm-br);color:var(--lbl-fg);cursor:pointer;height:var(--bld-us);line-height:var(--bld-us);padding:0 18px 0 4px}.tp-coltxtv_ms:hover{background-color:var(--in-bg-h)}.tp-coltxtv_ms:focus{background-color:var(--in-bg-f)}.tp-coltxtv_ms:active{background-color:var(--in-bg-a)}.tp-coltxtv_mm{color:var(--lbl-fg)}.tp-coltxtv_w{flex:1}.tp-dfwv{position:absolute;top:8px;right:8px;width:256px}.tp-fldv.tp-fldv-not .tp-fldv_b{display:none}.tp-fldv_t{padding-left:4px}.tp-fldv_c{border-left:var(--cnt-bg) solid 4px}.tp-fldv_b:hover+.tp-fldv_c{border-left-color:var(--cnt-bg-h)}.tp-fldv_b:focus+.tp-fldv_c{border-left-color:var(--cnt-bg-f)}.tp-fldv_b:active+.tp-fldv_c{border-left-color:var(--cnt-bg-a)}.tp-grlv{position:relative}.tp-grlv_g{display:block;height:calc(var(--bld-us)*3)}.tp-grlv_g polyline{fill:none;stroke:var(--mo-fg);stroke-linejoin:round}.tp-grlv_t{margin-top:-4px;transition:left .05s,top .05s;visibility:hidden}.tp-grlv_t.tp-grlv_t-a{visibility:visible}.tp-grlv_t.tp-grlv_t-in{transition:none}.tp-grlv.tp-v-disabled .tp-grlv_g{opacity:.5}.tp-grlv .tp-ttv{background-color:var(--mo-fg)}.tp-grlv .tp-ttv::before{border-top-color:var(--mo-fg)}.tp-lblv{align-items:center;display:flex;line-height:1.3;padding-left:var(--cnt-h-p);padding-right:var(--cnt-h-p)}.tp-lblv.tp-lblv-nol{display:block}.tp-lblv_l{color:var(--lbl-fg);flex:1;-webkit-hyphens:auto;hyphens:auto;overflow:hidden;padding-left:4px;padding-right:16px}.tp-lblv.tp-v-disabled .tp-lblv_l{opacity:.5}.tp-lblv.tp-lblv-nol .tp-lblv_l{display:none}.tp-lblv_v{align-self:flex-start;flex-grow:0;flex-shrink:0;width:160px}.tp-lblv.tp-lblv-nol .tp-lblv_v{width:100%}.tp-lstv_s{padding:0 20px 0 4px;width:100%}.tp-lstv_m{color:var(--btn-fg)}.tp-sglv_i{padding:0 4px}.tp-sglv.tp-v-disabled .tp-sglv_i{opacity:.5}.tp-mllv_i{display:block;height:calc(var(--bld-us)*3);line-height:var(--bld-us);padding:0 4px;resize:none;white-space:pre}.tp-mllv.tp-v-disabled .tp-mllv_i{opacity:.5}.tp-p2dv{position:relative}.tp-p2dv_h{display:flex}.tp-p2dv_b{height:var(--bld-us);margin-right:4px;position:relative;width:var(--bld-us)}.tp-p2dv_b svg{display:block;height:16px;left:50%;margin-left:-8px;margin-top:-8px;position:absolute;top:50%;width:16px}.tp-p2dv_b svg path{stroke:currentColor;stroke-width:2}.tp-p2dv_b svg circle{fill:currentColor}.tp-p2dv_t{flex:1}.tp-p2dv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-p2dv.tp-p2dv-expanded .tp-p2dv_p{margin-top:var(--bld-s);opacity:1}.tp-p2dv .tp-popv{left:calc(-1*var(--cnt-h-p));right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-p2dpv{padding-left:calc(var(--bld-us) + 4px)}.tp-p2dpv_p{cursor:crosshair;height:0;overflow:hidden;padding-bottom:100%;position:relative}.tp-p2dpv_g{display:block;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}.tp-p2dpv_ax{opacity:.1;stroke:var(--in-fg);stroke-dasharray:1}.tp-p2dpv_l{opacity:.5;stroke:var(--in-fg);stroke-dasharray:1}.tp-p2dpv_m{border:var(--in-fg) solid 1px;border-radius:50%;box-sizing:border-box;height:4px;margin-left:-2px;margin-top:-2px;position:absolute;width:4px}.tp-p2dpv_p:focus .tp-p2dpv_m{background-color:var(--in-fg);border-width:0}.tp-popv{background-color:var(--bs-bg);border-radius:6px;box-shadow:0 2px 4px var(--bs-sh);display:none;max-width:168px;padding:var(--cnt-v-p) var(--cnt-h-p);position:absolute;visibility:hidden;z-index:1000}.tp-popv.tp-popv-v{display:block;visibility:visible}.tp-sprv_r{background-color:var(--grv-fg);border-width:0;display:block;height:2px;margin:0;width:100%}.tp-sldv.tp-v-disabled{opacity:.5}.tp-sldv_t{box-sizing:border-box;cursor:pointer;height:var(--bld-us);margin:0 6px;outline:none;position:relative}.tp-sldv_t::before{background-color:var(--in-bg);border-radius:1px;bottom:0;content:"";display:block;height:2px;left:0;margin:auto;position:absolute;right:0;top:0}.tp-sldv_k{height:100%;left:0;position:absolute;top:0}.tp-sldv_k::before{background-color:var(--in-fg);border-radius:1px;bottom:0;content:"";display:block;height:2px;left:0;margin-bottom:auto;margin-top:auto;position:absolute;right:0;top:0}.tp-sldv_k::after{background-color:var(--btn-bg);border-radius:var(--elm-br);bottom:0;content:"";display:block;height:12px;margin-bottom:auto;margin-top:auto;position:absolute;right:-6px;top:0;width:12px}.tp-sldv_t:hover .tp-sldv_k::after{background-color:var(--btn-bg-h)}.tp-sldv_t:focus .tp-sldv_k::after{background-color:var(--btn-bg-f)}.tp-sldv_t:active .tp-sldv_k::after{background-color:var(--btn-bg-a)}.tp-sldtxtv{display:flex}.tp-sldtxtv_s{flex:2}.tp-sldtxtv_t{flex:1;margin-left:4px}.tp-tabv.tp-v-disabled{opacity:.5}.tp-tabv_i{align-items:flex-end;display:flex;overflow:hidden}.tp-tabv.tp-tabv-nop .tp-tabv_i{height:calc(var(--bld-us) + 4px);position:relative}.tp-tabv.tp-tabv-nop .tp-tabv_i::before{background-color:var(--cnt-bg);bottom:0;content:"";height:2px;left:0;position:absolute;right:0}.tp-tabv_c{border-left:var(--cnt-bg) solid 4px;padding-bottom:var(--cnt-v-p);padding-top:var(--cnt-v-p)}.tp-tbiv{flex:1;min-width:0;position:relative}.tp-tbiv+.tp-tbiv{margin-left:2px}.tp-tbiv+.tp-tbiv::before{background-color:var(--cnt-bg);bottom:0;content:"";height:2px;left:-2px;position:absolute;width:2px}.tp-tbiv_b{background-color:var(--cnt-bg);display:block;padding-left:calc(var(--cnt-h-p) + 4px);padding-right:calc(var(--cnt-h-p) + 4px);width:100%}.tp-tbiv_b:hover{background-color:var(--cnt-bg-h)}.tp-tbiv_b:focus{background-color:var(--cnt-bg-f)}.tp-tbiv_b:active{background-color:var(--cnt-bg-a)}.tp-tbiv_b:disabled{opacity:.5}.tp-tbiv_t{color:var(--cnt-fg);height:calc(var(--bld-us) + 4px);line-height:calc(var(--bld-us) + 4px);opacity:.5;overflow:hidden;text-overflow:ellipsis}.tp-tbiv.tp-tbiv-sel .tp-tbiv_t{opacity:1}.tp-txtv{position:relative}.tp-txtv_i{padding:0 4px}.tp-txtv.tp-txtv-fst .tp-txtv_i{border-bottom-right-radius:0;border-top-right-radius:0}.tp-txtv.tp-txtv-mid .tp-txtv_i{border-radius:0}.tp-txtv.tp-txtv-lst .tp-txtv_i{border-bottom-left-radius:0;border-top-left-radius:0}.tp-txtv.tp-txtv-num .tp-txtv_i{text-align:right}.tp-txtv.tp-txtv-drg .tp-txtv_i{opacity:.3}.tp-txtv_k{cursor:pointer;height:100%;left:-3px;position:absolute;top:0;width:12px}.tp-txtv_k::before{background-color:var(--in-fg);border-radius:1px;bottom:0;content:"";height:calc(var(--bld-us) - 4px);left:50%;margin-bottom:auto;margin-left:-1px;margin-top:auto;opacity:.1;position:absolute;top:0;transition:border-radius .1s,height .1s,transform .1s,width .1s;width:2px}.tp-txtv_k:hover::before,.tp-txtv.tp-txtv-drg .tp-txtv_k::before{opacity:1}.tp-txtv.tp-txtv-drg .tp-txtv_k::before{border-radius:50%;height:4px;transform:translateX(-1px);width:4px}.tp-txtv_g{bottom:0;display:block;height:8px;left:50%;margin:auto;overflow:visible;pointer-events:none;position:absolute;top:0;visibility:hidden;width:100%}.tp-txtv.tp-txtv-drg .tp-txtv_g{visibility:visible}.tp-txtv_gb{fill:none;stroke:var(--in-fg);stroke-dasharray:1}.tp-txtv_gh{fill:none;stroke:var(--in-fg)}.tp-txtv .tp-ttv{margin-left:6px;visibility:hidden}.tp-txtv.tp-txtv-drg .tp-ttv{visibility:visible}.tp-ttv{background-color:var(--in-fg);border-radius:var(--elm-br);color:var(--bs-bg);padding:2px 4px;pointer-events:none;position:absolute;transform:translate(-50%, -100%)}.tp-ttv::before{border-color:var(--in-fg) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);border-style:solid;border-width:2px;box-sizing:border-box;content:"";font-size:.9em;height:4px;left:50%;margin-left:-2px;position:absolute;top:100%;width:4px}.tp-rotv{background-color:var(--bs-bg);border-radius:var(--bs-br);box-shadow:0 2px 4px var(--bs-sh);font-family:var(--font-family);font-size:11px;font-weight:500;line-height:1;text-align:left}.tp-rotv_b{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br);border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br);padding-left:calc(4px + var(--bld-us) + var(--cnt-h-p));text-align:center}.tp-rotv.tp-rotv-expanded .tp-rotv_b{border-bottom-left-radius:0;border-bottom-right-radius:0}.tp-rotv.tp-rotv-not .tp-rotv_b{display:none}.tp-rotv_c>.tp-fldv.tp-v-lst>.tp-fldv_c,.tp-rotv_c>.tp-tabv.tp-v-lst>.tp-tabv_c{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c>.tp-fldv.tp-v-lst:not(.tp-fldv-expanded)>.tp-fldv_b{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c .tp-fldv.tp-v-vlst:not(.tp-fldv-expanded)>.tp-fldv_b{border-bottom-right-radius:var(--bs-br)}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-fldv.tp-v-fst{margin-top:calc(-1*var(--cnt-v-p))}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-fldv.tp-v-fst>.tp-fldv_b{border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br)}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst{margin-top:calc(-1*var(--cnt-v-p))}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst>.tp-tabv_i{border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br)}.tp-rotv.tp-v-disabled,.tp-rotv .tp-v-disabled{pointer-events:none}.tp-rotv.tp-v-hidden,.tp-rotv .tp-v-hidden{display:none}'),this.pool_.getAll().forEach(e=>{this.embedPluginStyle_(e)}),this.registerPlugin({plugins:[Ll,Cl,Ln,Vl]})}}const Il=new o("3.1.1");c.BladeApi=h,c.ButtonApi=O,c.FolderApi=yn,c.InputBindingApi=Se,c.ListApi=jr,c.MonitorBindingApi=ut,c.Pane=El,c.SeparatorApi=Mn,c.SliderApi=Fr,c.TabApi=ri,c.TabPageApi=Sn,c.TextApi=zr,c.TpChangeEvent=f,c.VERSION=Il,Object.defineProperty(c,"__esModule",{value:!0})})})(To,Wn);var gn={},Oo={get exports(){return gn},set exports(L){gn=L}};(function(L,l){(function(c,o){o(l)})(er,function(c){class o{constructor(i){this.controller_=i}get element(){return this.controller_.view.element}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(i){this.controller_.viewProps.set("disabled",i)}get hidden(){return this.controller_.viewProps.get("hidden")}set hidden(i){this.controller_.viewProps.set("hidden",i)}dispose(){this.controller_.viewProps.set("disposed",!0)}}class h{constructor(i){this.target=i}}class d extends h{constructor(i,r,p,g){super(i),this.value=r,this.presetKey=p,this.last=g??!0}}function f(a){return a}function v(a){return a==null}const b={alreadydisposed:()=>"View has been already disposed",invalidparams:a=>`Invalid parameters for '${a.name}'`,nomatchingcontroller:a=>`No matching controller for '${a.key}'`,nomatchingview:a=>`No matching view for '${JSON.stringify(a.params)}'`,notbindable:()=>"Value is not bindable",propertynotfound:a=>`Property '${a.name}' not found`,shouldneverhappen:()=>"This error should never happen"};class w{constructor(i){var r;this.message=(r=b[i.type](i.context))!==null&&r!==void 0?r:"Unexpected error",this.name=this.constructor.name,this.stack=new Error(this.message).stack,this.type=i.type}static alreadyDisposed(){return new w({type:"alreadydisposed"})}static notBindable(){return new w({type:"notbindable"})}static propertyNotFound(i){return new w({type:"propertynotfound",context:{name:i}})}static shouldNeverHappen(){return new w({type:"shouldneverhappen"})}}class y{constructor(){this.observers_={}}on(i,r){let p=this.observers_[i];return p||(p=this.observers_[i]=[]),p.push({handler:r}),this}off(i,r){const p=this.observers_[i];return p&&(this.observers_[i]=p.filter(g=>g.handler!==r)),this}emit(i,r){const p=this.observers_[i];p&&p.forEach(g=>{g.handler(r)})}}const x="tp";function V(a){return(r,p)=>[x,"-",a,"v",r?`_${r}`:"",p?`-${p}`:""].join("")}function D(a,i){return r=>i(a(r))}function T(a){return a.rawValue}function E(a,i){a.emitter.on("change",D(T,i)),i(a.rawValue)}function O(a,i,r){E(a.value(i),r)}function N(a,i,r){r?a.classList.add(i):a.classList.remove(i)}function X(a,i){return r=>{N(a,i,r)}}function z(a,i){E(a,r=>{i.textContent=r??""})}const ne=V("btn");class ce{constructor(i,r){this.element=i.createElement("div"),this.element.classList.add(ne()),r.viewProps.bindClassModifiers(this.element);const p=i.createElement("button");p.classList.add(ne("b")),r.viewProps.bindDisabled(p),this.element.appendChild(p),this.buttonElement=p;const g=i.createElement("div");g.classList.add(ne("t")),z(r.props.value("title"),g),this.buttonElement.appendChild(g)}}class H{constructor(i,r){this.emitter=new y,this.onClick_=this.onClick_.bind(this),this.props=r.props,this.viewProps=r.viewProps,this.view=new ce(i,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class U{constructor(i,r){var p;this.constraint_=r==null?void 0:r.constraint,this.equals_=(p=r==null?void 0:r.equals)!==null&&p!==void 0?p:(g,P)=>g===P,this.emitter=new y,this.rawValue_=i}get constraint(){return this.constraint_}get rawValue(){return this.rawValue_}set rawValue(i){this.setRawValue(i,{forceEmit:!1,last:!0})}setRawValue(i,r){const p=r??{forceEmit:!1,last:!0},g=this.constraint_?this.constraint_.constrain(i):i;this.equals_(this.rawValue_,g)&&!p.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=g,this.emitter.emit("change",{options:p,rawValue:g,sender:this}))}}class q{constructor(i){this.emitter=new y,this.value_=i}get rawValue(){return this.value_}set rawValue(i){this.setRawValue(i,{forceEmit:!1,last:!0})}setRawValue(i,r){const p=r??{forceEmit:!1,last:!0};this.value_===i&&!p.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.value_=i,this.emitter.emit("change",{options:p,rawValue:this.value_,sender:this}))}}function se(a,i){const r=i==null?void 0:i.constraint,p=i==null?void 0:i.equals;return!r&&!p?new q(a):new U(a,i)}class oe{constructor(i){this.emitter=new y,this.valMap_=i;for(const r in this.valMap_)this.valMap_[r].emitter.on("change",()=>{this.emitter.emit("change",{key:r,sender:this})})}static createCore(i){return Object.keys(i).reduce((p,g)=>Object.assign(p,{[g]:se(i[g])}),{})}static fromObject(i){const r=this.createCore(i);return new oe(r)}get(i){return this.valMap_[i].rawValue}set(i,r){this.valMap_[i].rawValue=r}value(i){return this.valMap_[i]}}function _e(a,i){const p=Object.keys(i).reduce((g,P)=>{if(g===void 0)return;const A=i[P],F=A(a[P]);return F.succeeded?Object.assign(Object.assign({},g),{[P]:F.value}):void 0},{});return p}function Ce(a,i){return a.reduce((r,p)=>{if(r===void 0)return;const g=i(p);if(!(!g.succeeded||g.value===void 0))return[...r,g.value]},[])}function ve(a){return a===null?!1:typeof a=="object"}function he(a){return i=>r=>{if(!i&&r===void 0)return{succeeded:!1,value:void 0};if(i&&r===void 0)return{succeeded:!0,value:void 0};const p=a(r);return p!==void 0?{succeeded:!0,value:p}:{succeeded:!1,value:void 0}}}function ge(a){return{custom:i=>he(i)(a),boolean:he(i=>typeof i=="boolean"?i:void 0)(a),number:he(i=>typeof i=="number"?i:void 0)(a),string:he(i=>typeof i=="string"?i:void 0)(a),function:he(i=>typeof i=="function"?i:void 0)(a),constant:i=>he(r=>r===i?i:void 0)(a),raw:he(i=>i)(a),object:i=>he(r=>{if(ve(r))return _e(r,i)})(a),array:i=>he(r=>{if(Array.isArray(r))return Ce(r,i)})(a)}}const ee={optional:ge(!0),required:ge(!1)};function $(a,i){const r=ee.required.object(i)(a);return r.succeeded?r.value:void 0}function Je(a){return a&&a.parentElement&&a.parentElement.removeChild(a),null}function Pe(){return["veryfirst","first","last","verylast"]}const ue=V(""),Z={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class ae{constructor(i){this.parent_=null,this.blade=i.blade,this.view=i.view,this.viewProps=i.viewProps;const r=this.view.element;this.blade.value("positions").emitter.on("change",()=>{Pe().forEach(p=>{r.classList.remove(ue(void 0,Z[p]))}),this.blade.get("positions").forEach(p=>{r.classList.add(ue(void 0,Z[p]))})}),this.viewProps.handleDispose(()=>{Je(r)})}get parent(){return this.parent_}}const K="http://www.w3.org/2000/svg";function S(a){a.offsetHeight}function Ae(a,i){const r=a.style.transition;a.style.transition="none",i(),a.style.transition=r}function Ee(a){return a.ontouchstart!==void 0}function Fe(a){for(;a.childNodes.length>0;)a.removeChild(a.childNodes[0])}function He(a){return a.relatedTarget?a.relatedTarget:"explicitOriginalTarget"in a?a.explicitOriginalTarget:null}const we=V("lbl");function Ie(a,i){const r=a.createDocumentFragment();return i.split(`
|
|
18
|
+
`).map(g=>a.createTextNode(g)).forEach((g,P)=>{P>0&&r.appendChild(a.createElement("br")),r.appendChild(g)}),r}class lt{constructor(i,r){this.element=i.createElement("div"),this.element.classList.add(we()),r.viewProps.bindClassModifiers(this.element);const p=i.createElement("div");p.classList.add(we("l")),O(r.props,"label",P=>{v(P)?this.element.classList.add(we(void 0,"nol")):(this.element.classList.remove(we(void 0,"nol")),Fe(p),p.appendChild(Ie(i,P)))}),this.element.appendChild(p),this.labelElement=p;const g=i.createElement("div");g.classList.add(we("v")),this.element.appendChild(g),this.valueElement=g}}class ct extends ae{constructor(i,r){const p=r.valueController.viewProps;super(Object.assign(Object.assign({},r),{view:new lt(i,{props:r.props,viewProps:p}),viewProps:p})),this.props=r.props,this.valueController=r.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class _t extends ae{constructor(i){super(i),this.value=i.value}}class wt extends oe{constructor(i){super(i)}static create(i){const r={completed:!0,expanded:i,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null},p=oe.createCore(r);return new wt(p)}get styleExpanded(){var i;return(i=this.get("temporaryExpanded"))!==null&&i!==void 0?i:this.get("expanded")}get styleHeight(){if(!this.styleExpanded)return"0";const i=this.get("expandedHeight");return this.get("shouldFixHeight")&&!v(i)?`${i}px`:"auto"}bindExpandedClass(i,r){const p=()=>{this.styleExpanded?i.classList.add(r):i.classList.remove(r)};O(this,"expanded",p),O(this,"temporaryExpanded",p)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function _n(a){return wt.create(a)}function wn(a,i){let r=0;return Ae(i,()=>{a.set("expandedHeight",null),a.set("temporaryExpanded",!0),S(i),r=i.clientHeight,a.set("temporaryExpanded",null),S(i)}),r}function Ft(a,i){i.style.height=a.styleHeight}function et(a,i){a.value("expanded").emitter.on("beforechange",()=>{a.set("completed",!1),v(a.get("expandedHeight"))&&a.set("expandedHeight",wn(a,i)),a.set("shouldFixHeight",!0),S(i)}),a.emitter.on("change",()=>{Ft(a,i)}),Ft(a,i),i.addEventListener("transitionend",r=>{r.propertyName==="height"&&a.cleanUpTransition()})}class pt{constructor(i,r){const p=V(r.viewName);this.element=i.createElement("div"),this.element.classList.add(p()),r.viewProps.bindClassModifiers(this.element)}}class tt extends _t{constructor(i,r){const p=r.valueController.viewProps;super(Object.assign(Object.assign({},r),{value:r.valueController.value,view:new lt(i,{props:r.props,viewProps:p}),viewProps:p})),this.props=r.props,this.valueController=r.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}const Jt=V("");function Ht(a,i){return X(a,Jt(void 0,i))}class Be extends oe{constructor(i){super(i)}static create(i){var r,p;const g=i??{},P={disabled:(r=g.disabled)!==null&&r!==void 0?r:!1,disposed:!1,hidden:(p=g.hidden)!==null&&p!==void 0?p:!1},A=oe.createCore(P);return new Be(A)}bindClassModifiers(i){O(this,"disabled",Ht(i,"disabled")),O(this,"hidden",Ht(i,"hidden"))}bindDisabled(i){O(this,"disabled",r=>{i.disabled=r})}bindTabIndex(i){O(this,"disabled",r=>{i.tabIndex=r?-1:0})}handleDispose(i){this.value("disposed").emitter.on("change",r=>{r&&i()})}}class nt{constructor(){this.disabled=!1,this.emitter=new y}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class xn{constructor(i,r){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=i,this.emitter=new y,this.interval_=r,this.setTimer_()}get disabled(){return this.disabled_}set disabled(i){this.disabled_=i,this.disabled_?this.clearTimer_():this.setTimer_()}dispose(){this.clearTimer_()}clearTimer_(){if(this.timerId_===null)return;const i=this.doc_.defaultView;i&&i.clearInterval(this.timerId_),this.timerId_=null}setTimer_(){if(this.clearTimer_(),this.interval_<=0)return;const i=this.doc_.defaultView;i&&(this.timerId_=i.setInterval(this.onTick_,this.interval_))}onTick_(){this.disabled_||this.emitter.emit("tick",{sender:this})}}class zt{constructor(i){this.constraints=i}constrain(i){return this.constraints.reduce((r,p)=>p.constrain(r),i)}}function Ue(a,i){if(a instanceof i)return a;if(a instanceof zt){const r=a.constraints.reduce((p,g)=>p||(g instanceof i?g:null),null);if(r)return r}return null}class xt{constructor(i){this.maxValue=i.max,this.minValue=i.min}constrain(i){let r=i;return v(this.minValue)||(r=Math.max(r,this.minValue)),v(this.maxValue)||(r=Math.min(r,this.maxValue)),r}}class Te{constructor(i,r=0){this.step=i,this.origin=r}constrain(i){const r=this.origin%this.step,p=Math.round((i-r)/this.step);return r+p*this.step}}const Ke=V("pop");class $e{constructor(i,r){this.element=i.createElement("div"),this.element.classList.add(Ke()),r.viewProps.bindClassModifiers(this.element),E(r.shows,X(this.element,Ke(void 0,"v")))}}class M{constructor(i,r){this.shows=se(!1),this.viewProps=r.viewProps,this.view=new $e(i,{shows:this.shows,viewProps:this.viewProps})}}const j=V("txt");class Y{constructor(i,r){this.onChange_=this.onChange_.bind(this),this.element=i.createElement("div"),this.element.classList.add(j()),r.viewProps.bindClassModifiers(this.element),this.props_=r.props,this.props_.emitter.on("change",this.onChange_);const p=i.createElement("input");p.classList.add(j("i")),p.type="text",r.viewProps.bindDisabled(p),this.element.appendChild(p),this.inputElement=p,r.value.emitter.on("change",this.onChange_),this.value_=r.value,this.refresh()}refresh(){const i=this.props_.get("formatter");this.inputElement.value=i(this.value_.rawValue)}onChange_(){this.refresh()}}class J{constructor(i,r){this.onInputChange_=this.onInputChange_.bind(this),this.parser_=r.parser,this.props=r.props,this.value=r.value,this.viewProps=r.viewProps,this.view=new Y(i,{props:r.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(i){const p=i.currentTarget.value,g=this.parser_(p);v(g)||(this.value.rawValue=g),this.view.refresh()}}function de(a){return a==="false"?!1:!!a}class Oe{constructor(i){this.text=i}evaluate(){return Number(this.text)}toString(){return this.text}}const yt={"**":(a,i)=>Math.pow(a,i),"*":(a,i)=>a*i,"/":(a,i)=>a/i,"%":(a,i)=>a%i,"+":(a,i)=>a+i,"-":(a,i)=>a-i,"<<":(a,i)=>a<<i,">>":(a,i)=>a>>i,">>>":(a,i)=>a>>>i,"&":(a,i)=>a&i,"^":(a,i)=>a^i,"|":(a,i)=>a|i};class en{constructor(i,r,p){this.left=r,this.operator=i,this.right=p}evaluate(){const i=yt[this.operator];if(!i)throw new Error(`unexpected binary operator: '${this.operator}`);return i(this.left.evaluate(),this.right.evaluate())}toString(){return["b(",this.left.toString(),this.operator,this.right.toString(),")"].join(" ")}}const Me={"+":a=>a,"-":a=>-a,"~":a=>~a};class Se{constructor(i,r){this.operator=i,this.expression=r}evaluate(){const i=Me[this.operator];if(!i)throw new Error(`unexpected unary operator: '${this.operator}`);return i(this.expression.evaluate())}toString(){return["u(",this.operator,this.expression.toString(),")"].join(" ")}}function De(a){return(i,r)=>{for(let p=0;p<a.length;p++){const g=a[p](i,r);if(g!=="")return g}return""}}function ut(a,i){var r;const p=a.substr(i).match(/^\s+/);return(r=p&&p[0])!==null&&r!==void 0?r:""}function it(a,i){const r=a.substr(i,1);return r.match(/^[1-9]$/)?r:""}function Bt(a,i){var r;const p=a.substr(i).match(/^[0-9]+/);return(r=p&&p[0])!==null&&r!==void 0?r:""}function Ut(a,i){const r=Bt(a,i);if(r!=="")return r;const p=a.substr(i,1);if(i+=1,p!=="-"&&p!=="+")return"";const g=Bt(a,i);return g===""?"":p+g}function tn(a,i){const r=a.substr(i,1);if(i+=1,r.toLowerCase()!=="e")return"";const p=Ut(a,i);return p===""?"":r+p}function Rt(a,i){const r=a.substr(i,1);if(r==="0")return r;const p=it(a,i);return i+=p.length,p===""?"":p+Bt(a,i)}function yn(a,i){const r=Rt(a,i);if(i+=r.length,r==="")return"";const p=a.substr(i,1);if(i+=p.length,p!==".")return"";const g=Bt(a,i);return i+=g.length,r+p+g+tn(a,i)}function Cn(a,i){const r=a.substr(i,1);if(i+=r.length,r!==".")return"";const p=Bt(a,i);return i+=p.length,p===""?"":r+p+tn(a,i)}function Ii(a,i){const r=Rt(a,i);return i+=r.length,r===""?"":r+tn(a,i)}const Ti=De([yn,Cn,Ii]);function Oi(a,i){var r;const p=a.substr(i).match(/^[01]+/);return(r=p&&p[0])!==null&&r!==void 0?r:""}function Di(a,i){const r=a.substr(i,2);if(i+=r.length,r.toLowerCase()!=="0b")return"";const p=Oi(a,i);return p===""?"":r+p}function Pn(a,i){var r;const p=a.substr(i).match(/^[0-7]+/);return(r=p&&p[0])!==null&&r!==void 0?r:""}function Ni(a,i){const r=a.substr(i,2);if(i+=r.length,r.toLowerCase()!=="0o")return"";const p=Pn(a,i);return p===""?"":r+p}function ji(a,i){var r;const p=a.substr(i).match(/^[0-9a-f]+/i);return(r=p&&p[0])!==null&&r!==void 0?r:""}function Gt(a,i){const r=a.substr(i,2);if(i+=r.length,r.toLowerCase()!=="0x")return"";const p=ji(a,i);return p===""?"":r+p}const ei=De([Di,Ni,Gt]),Fi=De([ei,Ti]);function kn(a,i){const r=Fi(a,i);return i+=r.length,r===""?null:{evaluable:new Oe(r),cursor:i}}function zi(a,i){const r=a.substr(i,1);if(i+=r.length,r!=="(")return null;const p=ii(a,i);if(!p)return null;i=p.cursor,i+=ut(a,i).length;const g=a.substr(i,1);return i+=g.length,g!==")"?null:{evaluable:p.evaluable,cursor:i}}function Ct(a,i){var r;return(r=kn(a,i))!==null&&r!==void 0?r:zi(a,i)}function Mn(a,i){const r=Ct(a,i);if(r)return r;const p=a.substr(i,1);if(i+=p.length,p!=="+"&&p!=="-"&&p!=="~")return null;const g=Mn(a,i);return g?(i=g.cursor,{cursor:i,evaluable:new Se(p,g.evaluable)}):null}function ti(a,i,r){r+=ut(i,r).length;const p=a.filter(g=>i.startsWith(g,r))[0];return p?(r+=p.length,r+=ut(i,r).length,{cursor:r,operator:p}):null}function Bi(a,i){return(r,p)=>{const g=a(r,p);if(!g)return null;p=g.cursor;let P=g.evaluable;for(;;){const A=ti(i,r,p);if(!A)break;p=A.cursor;const F=a(r,p);if(!F)return null;p=F.cursor,P=new en(A.operator,P,F.evaluable)}return P?{cursor:p,evaluable:P}:null}}const ni=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((a,i)=>Bi(a,i),Mn);function ii(a,i){return i+=ut(a,i).length,ni(a,i)}function Ui(a){const i=ii(a,0);return!i||i.cursor+ut(a,i.cursor).length!==a.length?null:i.evaluable}function Kt(a){var i;const r=Ui(a);return(i=r==null?void 0:r.evaluate())!==null&&i!==void 0?i:null}function st(a){if(typeof a=="number")return a;if(typeof a=="string"){const i=Kt(a);if(!v(i))return i}return 0}function be(a){return i=>i.toFixed(Math.max(Math.min(a,20),0))}const Ri=be(0);function nn(a){return Ri(a)+"%"}function si(a){return String(a)}function Sn(a,i){for(;a.length<i;)a.push(void 0)}function ri(a){const i=[];return Sn(i,a),se(i)}function oi(a){const i=a.indexOf(void 0);return i<0?a:a.slice(0,i)}function Gi(a,i){const r=[...oi(a),i];return r.length>a.length?r.splice(0,r.length-a.length):Sn(r,a.length),r}function $t({primary:a,secondary:i,forward:r,backward:p}){let g=!1;function P(A){g||(g=!0,A(),g=!1)}a.emitter.on("change",A=>{P(()=>{i.setRawValue(r(a,i),A.options)})}),i.emitter.on("change",A=>{P(()=>{a.setRawValue(p(a,i),A.options)}),P(()=>{i.setRawValue(r(a,i),A.options)})}),P(()=>{i.setRawValue(r(a,i),{forceEmit:!1,last:!0})})}function Pt(a,i){const r=a*(i.altKey?.1:1)*(i.shiftKey?10:1);return i.upKey?+r:i.downKey?-r:0}function Yt(a){return{altKey:a.altKey,downKey:a.key==="ArrowDown",shiftKey:a.shiftKey,upKey:a.key==="ArrowUp"}}function Ln(a){return{altKey:a.altKey,downKey:a.key==="ArrowLeft",shiftKey:a.shiftKey,upKey:a.key==="ArrowRight"}}function Ki(a){return a==="ArrowUp"||a==="ArrowDown"}function ai(a){return Ki(a)||a==="ArrowLeft"||a==="ArrowRight"}function Vn(a,i){var r,p;const g=i.ownerDocument.defaultView,P=i.getBoundingClientRect();return{x:a.pageX-(((r=g&&g.scrollX)!==null&&r!==void 0?r:0)+P.left),y:a.pageY-(((p=g&&g.scrollY)!==null&&p!==void 0?p:0)+P.top)}}class rt{constructor(i){this.lastTouch_=null,this.onDocumentMouseMove_=this.onDocumentMouseMove_.bind(this),this.onDocumentMouseUp_=this.onDocumentMouseUp_.bind(this),this.onMouseDown_=this.onMouseDown_.bind(this),this.onTouchEnd_=this.onTouchEnd_.bind(this),this.onTouchMove_=this.onTouchMove_.bind(this),this.onTouchStart_=this.onTouchStart_.bind(this),this.elem_=i,this.emitter=new y,i.addEventListener("touchstart",this.onTouchStart_,{passive:!1}),i.addEventListener("touchmove",this.onTouchMove_,{passive:!0}),i.addEventListener("touchend",this.onTouchEnd_),i.addEventListener("mousedown",this.onMouseDown_)}computePosition_(i){const r=this.elem_.getBoundingClientRect();return{bounds:{width:r.width,height:r.height},point:i?{x:i.x,y:i.y}:null}}onMouseDown_(i){var r;i.preventDefault(),(r=i.currentTarget)===null||r===void 0||r.focus();const p=this.elem_.ownerDocument;p.addEventListener("mousemove",this.onDocumentMouseMove_),p.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:i.altKey,data:this.computePosition_(Vn(i,this.elem_)),sender:this,shiftKey:i.shiftKey})}onDocumentMouseMove_(i){this.emitter.emit("move",{altKey:i.altKey,data:this.computePosition_(Vn(i,this.elem_)),sender:this,shiftKey:i.shiftKey})}onDocumentMouseUp_(i){const r=this.elem_.ownerDocument;r.removeEventListener("mousemove",this.onDocumentMouseMove_),r.removeEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("up",{altKey:i.altKey,data:this.computePosition_(Vn(i,this.elem_)),sender:this,shiftKey:i.shiftKey})}onTouchStart_(i){i.preventDefault();const r=i.targetTouches.item(0),p=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:i.altKey,data:this.computePosition_(r?{x:r.clientX-p.left,y:r.clientY-p.top}:void 0),sender:this,shiftKey:i.shiftKey}),this.lastTouch_=r}onTouchMove_(i){const r=i.targetTouches.item(0),p=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:i.altKey,data:this.computePosition_(r?{x:r.clientX-p.left,y:r.clientY-p.top}:void 0),sender:this,shiftKey:i.shiftKey}),this.lastTouch_=r}onTouchEnd_(i){var r;const p=(r=i.targetTouches.item(0))!==null&&r!==void 0?r:this.lastTouch_,g=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:i.altKey,data:this.computePosition_(p?{x:p.clientX-g.left,y:p.clientY-g.top}:void 0),sender:this,shiftKey:i.shiftKey})}}function re(a,i,r,p,g){const P=(a-i)/(r-i);return p+P*(g-p)}function kt(a){return String(a.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function ze(a,i,r){return Math.min(Math.max(a,i),r)}const xe=V("txt");class An{constructor(i,r){this.onChange_=this.onChange_.bind(this),this.props_=r.props,this.props_.emitter.on("change",this.onChange_),this.element=i.createElement("div"),this.element.classList.add(xe(),xe(void 0,"num")),r.arrayPosition&&this.element.classList.add(xe(void 0,r.arrayPosition)),r.viewProps.bindClassModifiers(this.element);const p=i.createElement("input");p.classList.add(xe("i")),p.type="text",r.viewProps.bindDisabled(p),this.element.appendChild(p),this.inputElement=p,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=r.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add(xe()),this.inputElement.classList.add(xe("i"));const g=i.createElement("div");g.classList.add(xe("k")),this.element.appendChild(g),this.knobElement=g;const P=i.createElementNS(K,"svg");P.classList.add(xe("g")),this.knobElement.appendChild(P);const A=i.createElementNS(K,"path");A.classList.add(xe("gb")),P.appendChild(A),this.guideBodyElem_=A;const F=i.createElementNS(K,"path");F.classList.add(xe("gh")),P.appendChild(F),this.guideHeadElem_=F;const B=i.createElement("div");B.classList.add(V("tt")()),this.knobElement.appendChild(B),this.tooltipElem_=B,r.value.emitter.on("change",this.onChange_),this.value=r.value,this.refresh()}onDraggingChange_(i){if(i.rawValue===null){this.element.classList.remove(xe(void 0,"drg"));return}this.element.classList.add(xe(void 0,"drg"));const r=i.rawValue/this.props_.get("draggingScale"),p=r+(r>0?-1:r<0?1:0),g=ze(-p,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${p+g},0 L${p},4 L${p+g},8`,`M ${r},-1 L${r},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${r},4`);const P=this.props_.get("formatter");this.tooltipElem_.textContent=P(this.value.rawValue),this.tooltipElem_.style.left=`${r}px`}refresh(){const i=this.props_.get("formatter");this.inputElement.value=i(this.value.rawValue)}onChange_(){this.refresh()}}class $i{constructor(i,r){var p;this.originRawValue_=0,this.onInputChange_=this.onInputChange_.bind(this),this.onInputKeyDown_=this.onInputKeyDown_.bind(this),this.onInputKeyUp_=this.onInputKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=r.baseStep,this.parser_=r.parser,this.props=r.props,this.sliderProps_=(p=r.sliderProps)!==null&&p!==void 0?p:null,this.value=r.value,this.viewProps=r.viewProps,this.dragging_=se(null),this.view=new An(i,{arrayPosition:r.arrayPosition,dragging:this.dragging_,props:this.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.inputElement.addEventListener("keydown",this.onInputKeyDown_),this.view.inputElement.addEventListener("keyup",this.onInputKeyUp_);const g=new rt(this.view.knobElement);g.emitter.on("down",this.onPointerDown_),g.emitter.on("move",this.onPointerMove_),g.emitter.on("up",this.onPointerUp_)}constrainValue_(i){var r,p;const g=(r=this.sliderProps_)===null||r===void 0?void 0:r.get("minValue"),P=(p=this.sliderProps_)===null||p===void 0?void 0:p.get("maxValue");let A=i;return g!==void 0&&(A=Math.max(A,g)),P!==void 0&&(A=Math.min(A,P)),A}onInputChange_(i){const p=i.currentTarget.value,g=this.parser_(p);v(g)||(this.value.rawValue=this.constrainValue_(g)),this.view.refresh()}onInputKeyDown_(i){const r=Pt(this.baseStep_,Yt(i));r!==0&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+r),{forceEmit:!1,last:!1})}onInputKeyUp_(i){Pt(this.baseStep_,Yt(i))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}onPointerDown_(){this.originRawValue_=this.value.rawValue,this.dragging_.rawValue=0}computeDraggingValue_(i){if(!i.point)return null;const r=i.point.x-i.bounds.width/2;return this.constrainValue_(this.originRawValue_+r*this.props.get("draggingScale"))}onPointerMove_(i){const r=this.computeDraggingValue_(i.data);r!==null&&(this.value.setRawValue(r,{forceEmit:!1,last:!1}),this.dragging_.rawValue=this.value.rawValue-this.originRawValue_)}onPointerUp_(i){const r=this.computeDraggingValue_(i.data);r!==null&&(this.value.setRawValue(r,{forceEmit:!0,last:!0}),this.dragging_.rawValue=null)}}function ht(a,i){a.write(i)}function li(a){const i=a?Ue(a,Te):null;return i?i.step:null}function Yi(a,i){const r=a&&Ue(a,Te);return r?kt(r.step):Math.max(kt(i),2)}function En(a){const i=li(a);return i??1}function ci(a,i){var r;const p=a&&Ue(a,Te),g=Math.abs((r=p==null?void 0:p.step)!==null&&r!==void 0?r:i);return g===0?.1:Math.pow(10,Math.floor(Math.log10(g))-1)}function sn(a){return[a[0],a[1],a[2]]}function qt(a){const i=ze(Math.floor(a),0,255).toString(16);return i.length===1?`0${i}`:i}function qi(a,i="#"){const r=sn(a.getComponents("rgb")).map(qt).join("");return`${i}${r}`}function pi(a,i="#"){const r=a.getComponents("rgb"),p=[r[0],r[1],r[2],r[3]*255].map(qt).join("");return`${i}${p}`}function ui(a,i){const r=be(i==="float"?2:0);return`rgb(${sn(a.getComponents("rgb",i)).map(g=>r(g)).join(", ")})`}function Xi(a){return i=>ui(i,a)}function Qi(a,i){const r=be(2),p=be(i==="float"?2:0);return`rgba(${a.getComponents("rgb",i).map((P,A)=>(A===3?r:p)(P)).join(", ")})`}function Zi(a){return i=>Qi(i,a)}function Wi(a){const i=[be(0),nn,nn];return`hsl(${sn(a.getComponents("hsl")).map((p,g)=>i[g](p)).join(", ")})`}function Ji(a){const i=[be(0),nn,nn,be(2)];return`hsla(${a.getComponents("hsl").map((p,g)=>i[g](p)).join(", ")})`}function In(a,i){const r=be(i==="float"?2:0),p=["r","g","b"];return`{${sn(a.getComponents("rgb",i)).map((P,A)=>`${p[A]}: ${r(P)}`).join(", ")}}`}function Xt(a){return i=>In(i,a)}function Hi(a,i){const r=be(2),p=be(i==="float"?2:0),g=["r","g","b","a"];return`{${a.getComponents("rgb",i).map((A,F)=>{const B=F===3?r:p;return`${g[F]}: ${B(A)}`}).join(", ")}}`}function Qt(a){return i=>Hi(i,a)}[...["int","float"].reduce((a,i)=>[...a,{format:{alpha:!1,mode:"rgb",notation:"func",type:i},stringifier:Xi(i)},{format:{alpha:!0,mode:"rgb",notation:"func",type:i},stringifier:Zi(i)},{format:{alpha:!1,mode:"rgb",notation:"object",type:i},stringifier:Xt(i)},{format:{alpha:!0,mode:"rgb",notation:"object",type:i},stringifier:Qt(i)}],[])];class es{constructor(i){this.components=i.components,this.asm_=i.assembly}constrain(i){const r=this.asm_.toComponents(i).map((p,g)=>{var P,A;return(A=(P=this.components[g])===null||P===void 0?void 0:P.constrain(p))!==null&&A!==void 0?A:p});return this.asm_.fromComponents(r)}}const rn=V("pndtxt");class hi{constructor(i,r){this.textViews=r.textViews,this.element=i.createElement("div"),this.element.classList.add(rn()),this.textViews.forEach(p=>{const g=i.createElement("div");g.classList.add(rn("a")),g.appendChild(p.element),this.element.appendChild(g)})}}function ts(a,i,r){return new $i(a,{arrayPosition:r===0?"fst":r===i.axes.length-1?"lst":"mid",baseStep:i.axes[r].baseStep,parser:i.parser,props:i.axes[r].textProps,value:se(0,{constraint:i.axes[r].constraint}),viewProps:i.viewProps})}class Tn{constructor(i,r){this.value=r.value,this.viewProps=r.viewProps,this.acs_=r.axes.map((p,g)=>ts(i,r,g)),this.acs_.forEach((p,g)=>{$t({primary:this.value,secondary:p.value,forward:P=>r.assembly.toComponents(P.rawValue)[g],backward:(P,A)=>{const F=r.assembly.toComponents(P.rawValue);return F[g]=A.rawValue,r.assembly.fromComponents(F)}})}),this.view=new hi(i,{textViews:this.acs_.map(p=>p.view)})}}function ns(a,i){return"step"in a&&!v(a.step)?new Te(a.step,i):null}function is(a){return"max"in a&&!v(a.max)||"min"in a&&!v(a.min)?new xt({max:a.max,min:a.min}):null}const ss={monitor:{defaultInterval:200,defaultLineCount:3}},ot=V("grl");class rs{constructor(i,r){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=i.createElement("div"),this.element.classList.add(ot()),r.viewProps.bindClassModifiers(this.element),this.formatter_=r.formatter,this.props_=r.props,this.cursor_=r.cursor,this.cursor_.emitter.on("change",this.onCursorChange_);const p=i.createElementNS(K,"svg");p.classList.add(ot("g")),p.style.height=`calc(var(--bld-us) * ${r.lineCount})`,this.element.appendChild(p),this.svgElem_=p;const g=i.createElementNS(K,"polyline");this.svgElem_.appendChild(g),this.lineElem_=g;const P=i.createElement("div");P.classList.add(ot("t"),V("tt")()),this.element.appendChild(P),this.tooltipElem_=P,r.value.emitter.on("change",this.onValueUpdate_),this.value=r.value,this.update_()}get graphElement(){return this.svgElem_}update_(){const i=this.svgElem_.getBoundingClientRect(),r=this.value.rawValue.length-1,p=this.props_.get("minValue"),g=this.props_.get("maxValue"),P=[];this.value.rawValue.forEach((We,Kn)=>{if(We===void 0)return;const $n=re(Kn,0,r,0,i.width),ft=re(We,p,g,i.height,0);P.push([$n,ft].join(","))}),this.lineElem_.setAttributeNS(null,"points",P.join(" "));const A=this.tooltipElem_,F=this.value.rawValue[this.cursor_.rawValue];if(F===void 0){A.classList.remove(ot("t","a"));return}const B=re(this.cursor_.rawValue,0,r,0,i.width),fe=re(F,p,g,i.height,0);A.style.left=`${B}px`,A.style.top=`${fe}px`,A.textContent=`${this.formatter_(F)}`,A.classList.contains(ot("t","a"))||(A.classList.add(ot("t","a"),ot("t","in")),S(A),A.classList.remove(ot("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class os{constructor(i,r){if(this.onGraphMouseMove_=this.onGraphMouseMove_.bind(this),this.onGraphMouseLeave_=this.onGraphMouseLeave_.bind(this),this.onGraphPointerDown_=this.onGraphPointerDown_.bind(this),this.onGraphPointerMove_=this.onGraphPointerMove_.bind(this),this.onGraphPointerUp_=this.onGraphPointerUp_.bind(this),this.props_=r.props,this.value=r.value,this.viewProps=r.viewProps,this.cursor_=se(-1),this.view=new rs(i,{cursor:this.cursor_,formatter:r.formatter,lineCount:r.lineCount,props:this.props_,value:this.value,viewProps:this.viewProps}),!Ee(i))this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_);else{const p=new rt(this.view.element);p.emitter.on("down",this.onGraphPointerDown_),p.emitter.on("move",this.onGraphPointerMove_),p.emitter.on("up",this.onGraphPointerUp_)}}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(i){const r=this.view.element.getBoundingClientRect();this.cursor_.rawValue=Math.floor(re(i.offsetX,0,r.width,0,this.value.rawValue.length))}onGraphPointerDown_(i){this.onGraphPointerMove_(i)}onGraphPointerMove_(i){if(!i.data.point){this.cursor_.rawValue=-1;return}this.cursor_.rawValue=Math.floor(re(i.data.point.x,0,i.data.bounds.width,0,this.value.rawValue.length))}onGraphPointerUp_(){this.cursor_.rawValue=-1}}class as{constructor(i){this.controller_=i}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(i){this.controller_.viewProps.set("disabled",i)}get title(){var i;return(i=this.controller_.props.get("title"))!==null&&i!==void 0?i:""}set title(i){this.controller_.props.set("title",i)}on(i,r){const p=r.bind(this);return this.controller_.emitter.on(i,()=>{p(new h(this))}),this}}class ls extends h{constructor(i,r,p){super(i),this.cell=r,this.index=p}}class cs extends o{constructor(i){super(i),this.cellToApiMap_=new Map,this.emitter_=new y;const r=this.controller_.valueController;r.cellControllers.forEach((p,g)=>{const P=new as(p);this.cellToApiMap_.set(p,P),p.emitter.on("click",()=>{const A=g%r.size[0],F=Math.floor(g/r.size[0]);this.emitter_.emit("click",{event:new ls(this,P,[A,F])})})})}cell(i,r){const p=this.controller_.valueController,g=p.cellControllers[r*p.size[0]+i];return this.cellToApiMap_.get(g)}on(i,r){const p=r.bind(this);return this.emitter_.on(i,g=>{p(g.event)}),this}}class di{constructor(i,r){this.size=r.size;const[p,g]=this.size,P=[];for(let A=0;A<g;A++)for(let F=0;F<p;F++){const B=new H(i,{props:oe.fromObject(Object.assign({},r.cellConfig(F,A))),viewProps:Be.create()});P.push(B)}this.cellCs_=P,this.viewProps=Be.create(),this.viewProps.handleDispose(()=>{this.cellCs_.forEach(A=>{A.viewProps.set("disposed",!0)})}),this.view=new pt(i,{viewProps:this.viewProps,viewName:"btngrid"}),this.view.element.style.gridTemplateColumns=`repeat(${p}, 1fr)`,this.cellCs_.forEach(A=>{this.view.element.appendChild(A.view.element)})}get cellControllers(){return this.cellCs_}}const ps={id:"buttongrid",type:"blade",css:'.tp-cbzgv,.tp-radv_b,.tp-rslv_k,.tp-cbzv_b{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-radv_b,.tp-rslv_k,.tp-cbzv_b{background-color:var(--btn-bg);border-radius:var(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-radv_b:hover,.tp-rslv_k:hover,.tp-cbzv_b:hover{background-color:var(--btn-bg-h)}.tp-radv_b:focus,.tp-rslv_k:focus,.tp-cbzv_b:focus{background-color:var(--btn-bg-f)}.tp-radv_b:active,.tp-rslv_k:active,.tp-cbzv_b:active{background-color:var(--btn-bg-a)}.tp-radv_b:disabled,.tp-rslv_k:disabled,.tp-cbzv_b:disabled{opacity:.5}.tp-cbzgv{background-color:var(--in-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);min-width:0;width:100%}.tp-cbzgv:hover{background-color:var(--in-bg-h)}.tp-cbzgv:focus{background-color:var(--in-bg-f)}.tp-cbzgv:active{background-color:var(--in-bg-a)}.tp-cbzgv:disabled{opacity:.5}.tp-btngridv{border-radius:var(--elm-br);display:grid;overflow:hidden;gap:2px}.tp-btngridv.tp-v-disabled{opacity:.5}.tp-btngridv .tp-btnv_b:disabled{opacity:1}.tp-btngridv .tp-btnv_b:disabled .tp-btnv_t{opacity:.5}.tp-btngridv .tp-btnv_b{border-radius:0}.tp-cbzv{position:relative}.tp-cbzv_h{display:flex}.tp-cbzv_b{margin-right:4px;position:relative;width:var(--bld-us)}.tp-cbzv_b svg{display:block;height:16px;left:50%;margin-left:-8px;margin-top:-8px;position:absolute;top:50%;width:16px}.tp-cbzv_b svg path{stroke:var(--bs-bg);stroke-width:2}.tp-cbzv_t{flex:1}.tp-cbzv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-cbzv.tp-cbzv-expanded .tp-cbzv_p{margin-top:var(--bld-s);opacity:1}.tp-cbzv.tp-cbzv-cpl .tp-cbzv_p{overflow:visible}.tp-cbzv .tp-popv{left:calc(-1*var(--cnt-h-p));position:absolute;right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-cbzpv_t{margin-top:var(--bld-s)}.tp-cbzgv{height:auto;overflow:hidden;position:relative}.tp-cbzgv.tp-v-disabled{opacity:.5}.tp-cbzgv_p{left:16px;position:absolute;right:16px;top:0}.tp-cbzgv_g{cursor:pointer;display:block;height:calc(var(--bld-us)*5);width:100%}.tp-cbzgv_u{opacity:.1;stroke:var(--in-fg);stroke-dasharray:1}.tp-cbzgv_l{fill:rgba(0,0,0,0);stroke:var(--in-fg)}.tp-cbzgv_v{opacity:.5;stroke:var(--in-fg);stroke-dasharray:1}.tp-cbzgv_h{border:var(--in-fg) solid 1px;border-radius:50%;box-sizing:border-box;height:4px;margin-left:-2px;margin-top:-2px;pointer-events:none;position:absolute;width:4px}.tp-cbzgv:focus .tp-cbzgv_h-sel{background-color:var(--in-fg);border-width:0}.tp-cbzprvv{cursor:pointer;height:4px;padding:4px 0;position:relative}.tp-cbzprvv_g{display:block;height:100%;overflow:visible;width:100%}.tp-cbzprvv_t{opacity:.5;stroke:var(--mo-fg)}.tp-cbzprvv_m{background-color:var(--mo-fg);border-radius:50%;height:4px;margin-left:-2px;margin-top:-2px;opacity:0;position:absolute;top:50%;transition:opacity .2s ease-out;width:4px}.tp-cbzprvv_m.tp-cbzprvv_m-a{opacity:1}.tp-fpsv{position:relative}.tp-fpsv_l{bottom:4px;color:var(--mo-fg);line-height:1;right:4px;pointer-events:none;position:absolute}.tp-fpsv_u{margin-left:.2em;opacity:.7}.tp-rslv{cursor:pointer;padding-left:8px;padding-right:8px}.tp-rslv.tp-v-disabled{opacity:.5}.tp-rslv_t{height:calc(var(--bld-us));position:relative}.tp-rslv_t::before{background-color:var(--in-bg);border-radius:1px;content:"";height:2px;margin-top:-1px;position:absolute;top:50%;left:-4px;right:-4px}.tp-rslv_b{bottom:0;top:0;position:absolute}.tp-rslv_b::before{background-color:var(--in-fg);content:"";height:2px;margin-top:-1px;position:absolute;top:50%;left:0;right:0}.tp-rslv_k{height:calc(var(--bld-us) - 8px);margin-top:calc((var(--bld-us) - 8px)/-2);position:absolute;top:50%;width:8px}.tp-rslv_k.tp-rslv_k-min{margin-left:-8px}.tp-rslv_k.tp-rslv_k-max{margin-left:0}.tp-rslv.tp-rslv-zero .tp-rslv_k.tp-rslv_k-min{border-bottom-right-radius:0;border-top-right-radius:0}.tp-rslv.tp-rslv-zero .tp-rslv_k.tp-rslv_k-max{border-bottom-left-radius:0;border-top-left-radius:0}.tp-rsltxtv{display:flex}.tp-rsltxtv_s{flex:1}.tp-rsltxtv_t{flex:1;margin-left:4px}.tp-radv_l{display:block;position:relative}.tp-radv_i{left:0;opacity:0;position:absolute;top:0}.tp-radv_b{opacity:.5}.tp-radv_i:hover+.tp-radv_b{background-color:var(--btn-bg-h)}.tp-radv_i:focus+.tp-radv_b{background-color:var(--btn-bg-f)}.tp-radv_i:active+.tp-radv_b{background-color:var(--btn-bg-a)}.tp-radv_i:checked+.tp-radv_b{opacity:1}.tp-radv_t{bottom:0;color:inherit;left:0;overflow:hidden;position:absolute;right:0;text-align:center;text-overflow:ellipsis;top:0}.tp-radv_i:disabled+.tp-radv_b>.tp-radv_t{opacity:.5}.tp-radgridv{border-radius:var(--elm-br);display:grid;overflow:hidden;gap:2px}.tp-radgridv.tp-v-disabled{opacity:.5}.tp-radgridv .tp-radv_b{border-radius:0}',accept(a){const i=ee,r=$(a,{cells:i.required.function,size:i.required.array(i.required.number),view:i.required.constant("buttongrid"),label:i.optional.string});return r?{params:r}:null},controller(a){return new ct(a.document,{blade:a.blade,props:oe.fromObject({label:a.params.label}),valueController:new di(a.document,{cellConfig:a.params.cells,size:a.params.size})})},api(a){return!(a.controller instanceof ct)||!(a.controller.valueController instanceof di)?null:new cs(a.controller)}};class us extends o{get label(){return this.controller_.props.get("label")}set label(i){this.controller_.props.set("label",i)}get value(){return this.controller_.valueController.value.rawValue}set value(i){this.controller_.valueController.value.rawValue=i}on(i,r){const p=r.bind(this);return this.controller_.valueController.value.emitter.on(i,g=>{p(new d(this,g.rawValue,void 0,g.options.last))}),this}}function Ne(a,i,r){return a*(1-r)+i*r}const mi=20,hs=.001,On=100;function ds(a,i){let r=.25,p=.5,g=-1;for(let P=0;P<mi;P++){const[A,F]=a.curve(p);if(p+=r*(A<i?1:-1),g=F,r*=.5,Math.abs(i-A)<hs)break}return g}class Ye{constructor(i=0,r=0,p=1,g=1){this.cache_=[],this.comps_=[i,r,p,g]}get x1(){return this.comps_[0]}get y1(){return this.comps_[1]}get x2(){return this.comps_[2]}get y2(){return this.comps_[3]}static isObject(i){return v(i)||!Array.isArray(i)?!1:typeof i[0]=="number"&&typeof i[1]=="number"&&typeof i[2]=="number"&&typeof i[3]=="number"}static equals(i,r){return i.x1===r.x1&&i.y1===r.y1&&i.x2===r.x2&&i.y2===r.y2}curve(i){const r=Ne(0,this.x1,i),p=Ne(0,this.y1,i),g=Ne(this.x1,this.x2,i),P=Ne(this.y1,this.y2,i),A=Ne(this.x2,1,i),F=Ne(this.y2,1,i),B=Ne(r,g,i),fe=Ne(p,P,i),We=Ne(g,A,i),Kn=Ne(P,F,i);return[Ne(B,We,i),Ne(fe,Kn,i)]}y(i){if(this.cache_.length===0){const r=[];for(let p=0;p<On;p++)r.push(ds(this,re(p,0,On-1,0,1)));this.cache_=r}return this.cache_[Math.round(re(ze(i,0,1),0,1,0,On-1))]}toObject(){return[this.comps_[0],this.comps_[1],this.comps_[2],this.comps_[3]]}}const fi={toComponents:a=>a.toObject(),fromComponents:a=>new Ye(...a)};function qe(a){const i=be(2);return`cubic-bezier(${a.toObject().map(p=>i(p)).join(", ")})`}const Dn=[0,.5,.5,1];function ms(a){const i=a.match(/^cubic-bezier\s*\(\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)\s*\)$/);if(!i)return new Ye(...Dn);const r=[i[1],i[2],i[3],i[4]].reduce((p,g)=>{if(!p)return null;const P=Number(g);return isNaN(P)?null:[...p,P]},[]);return new Ye(...r??Dn)}const pe=V("cbz");class fs{constructor(i,r){this.element=i.createElement("div"),this.element.classList.add(pe()),r.viewProps.bindClassModifiers(this.element),r.foldable.bindExpandedClass(this.element,pe(void 0,"expanded")),O(r.foldable,"completed",X(this.element,pe(void 0,"cpl")));const p=i.createElement("div");p.classList.add(pe("h")),this.element.appendChild(p);const g=i.createElement("button");g.classList.add(pe("b")),r.viewProps.bindDisabled(g);const P=i.createElementNS(K,"svg");P.innerHTML='<path d="M2 13C8 13 8 3 14 3"/>',g.appendChild(P),p.appendChild(g),this.buttonElement=g;const A=i.createElement("div");if(A.classList.add(pe("t")),p.appendChild(A),this.textElement=A,r.pickerLayout==="inline"){const F=i.createElement("div");F.classList.add(pe("p")),this.element.appendChild(F),this.pickerElement=F}else this.pickerElement=null}}const Mt=V("cbzp");class vi{constructor(i,r){this.element=i.createElement("div"),this.element.classList.add(Mt()),r.viewProps.bindClassModifiers(this.element);const p=i.createElement("div");p.classList.add(Mt("g")),this.element.appendChild(p),this.graphElement=p;const g=i.createElement("div");g.classList.add(Mt("t")),this.element.appendChild(g),this.textElement=g}}function on(a,i){const r=new MutationObserver(g=>{for(const P of g)P.type==="childList"&&P.addedNodes.forEach(A=>{A.contains(A)&&(i(),r.disconnect())})}),p=a.ownerDocument;r.observe(p.body,{attributes:!0,childList:!0,subtree:!0})}const Xe=V("cbzg");function vs(a,i){return r=>i(a(r))}class bs{constructor(i,r){this.element=i.createElement("div"),this.element.classList.add(Xe()),r.viewProps.bindClassModifiers(this.element),r.viewProps.bindTabIndex(this.element);const p=i.createElement("div");p.classList.add(Xe("p")),this.element.appendChild(p),this.previewElement=p;const g=i.createElementNS(K,"svg");g.classList.add(Xe("g")),this.element.appendChild(g),this.svgElem_=g;const P=i.createElementNS(K,"path");P.classList.add(Xe("u")),this.svgElem_.appendChild(P),this.guideElem_=P;const A=i.createElementNS(K,"polyline");A.classList.add(Xe("l")),this.svgElem_.appendChild(A),this.lineElem_=A,this.handleElems_=[i.createElement("div"),i.createElement("div")],this.handleElems_.forEach(F=>{F.classList.add(Xe("h")),this.element.appendChild(F)}),this.vectorElems_=[i.createElementNS(K,"line"),i.createElementNS(K,"line")],this.vectorElems_.forEach(F=>{F.classList.add(Xe("v")),this.svgElem_.appendChild(F)}),this.value_=r.value,this.value_.emitter.on("change",this.onValueChange_.bind(this)),this.sel_=r.selection,this.handleElems_.forEach((F,B)=>{E(this.sel_,vs(fe=>fe===B,X(F,Xe("h","sel"))))}),on(this.element,()=>{this.refresh()})}getVertMargin_(i){return i*.25}valueToPosition(i,r){const p=this.element.getBoundingClientRect(),g=p.width,P=p.height,A=this.getVertMargin_(P);return{x:re(i,0,1,0,g),y:re(r,0,1,P-A,A)}}positionToValue(i,r){const p=this.element.getBoundingClientRect(),g=p.width,P=p.height,A=this.getVertMargin_(P);return{x:ze(re(i,0,g,0,1),0,1),y:re(r,P-A,A,0,1)}}refresh(){this.guideElem_.setAttributeNS(null,"d",[0,1].map(P=>{const A=this.valueToPosition(0,P),F=this.valueToPosition(1,P);return[`M ${A.x},${A.y}`,`L ${F.x},${F.y}`].join(" ")}).join(" "));const i=this.value_.rawValue,r=[];let p=0;for(;;){const P=this.valueToPosition(...i.curve(p));if(r.push([P.x,P.y].join(",")),p>=1)break;p=Math.min(p+.05,1)}this.lineElem_.setAttributeNS(null,"points",r.join(" "));const g=i.toObject();[0,1].forEach(P=>{const A=this.valueToPosition(P,P),F=this.valueToPosition(g[P*2],g[P*2+1]),B=this.vectorElems_[P];B.setAttributeNS(null,"x1",String(A.x)),B.setAttributeNS(null,"y1",String(A.y)),B.setAttributeNS(null,"x2",String(F.x)),B.setAttributeNS(null,"y2",String(F.y));const fe=this.handleElems_[P];fe.style.left=`${F.x}px`,fe.style.top=`${F.y}px`})}onValueChange_(){this.refresh()}}const bi=24,St=400,ye=1e3,Re=V("cbzprv");class Qe{constructor(i,r){this.stopped_=!0,this.startTime_=-1,this.onDispose_=this.onDispose_.bind(this),this.onTimer_=this.onTimer_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.element=i.createElement("div"),this.element.classList.add(Re()),r.viewProps.bindClassModifiers(this.element);const p=i.createElementNS(K,"svg");p.classList.add(Re("g")),this.element.appendChild(p),this.svgElem_=p;const g=i.createElementNS(K,"path");g.classList.add(Re("t")),this.svgElem_.appendChild(g),this.ticksElem_=g;const P=i.createElement("div");P.classList.add(Re("m")),this.element.appendChild(P),this.markerElem_=P,this.value_=r.value,this.value_.emitter.on("change",this.onValueChange_),r.viewProps.handleDispose(this.onDispose_),on(this.element,()=>{this.refresh()})}play(){this.stop(),this.updateMarker_(0),this.markerElem_.classList.add(Re("m","a")),this.startTime_=new Date().getTime()+St,this.stopped_=!1,requestAnimationFrame(this.onTimer_)}stop(){this.stopped_=!0,this.markerElem_.classList.remove(Re("m","a"))}onDispose_(){this.stop()}updateMarker_(i){const r=this.value_.rawValue.y(ze(i,0,1));this.markerElem_.style.left=`${r*100}%`}refresh(){const i=this.svgElem_.getBoundingClientRect(),r=i.width,p=i.height,g=[],P=this.value_.rawValue;for(let A=0;A<bi;A++){const F=re(A,0,bi-1,0,1),B=re(P.y(F),0,1,0,r);g.push(`M ${B},0 v${p}`)}this.ticksElem_.setAttributeNS(null,"d",g.join(" "))}onTimer_(){if(this.startTime_===null)return;const i=new Date().getTime()-this.startTime_,r=i/ye;this.updateMarker_(r),i>ye+St&&this.stop(),this.stopped_||requestAnimationFrame(this.onTimer_)}onValueChange_(){this.refresh(),this.play()}}function Nn(a,i,r,p){const g=r-a,P=p-i;return Math.sqrt(g*g+P*P)}function gi(a,i,r,p){const g=Nn(a,i,r,p),P=Math.atan2(p-i,r-a),A=Math.round(P/(Math.PI/4))*Math.PI/4;return{x:a+Math.cos(A)*g,y:i+Math.sin(A)*g}}class jn{constructor(i,r){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=r.baseStep,this.value=r.value,this.sel_=se(0),this.viewProps=r.viewProps,this.view=new bs(i,{selection:this.sel_,value:this.value,viewProps:this.viewProps}),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_),this.prevView_=new Qe(i,{value:this.value,viewProps:this.viewProps}),this.prevView_.element.addEventListener("mousedown",g=>{g.stopImmediatePropagation(),g.preventDefault(),this.prevView_.play()}),this.view.previewElement.appendChild(this.prevView_.element);const p=new rt(this.view.element);p.emitter.on("down",this.onPointerDown_),p.emitter.on("move",this.onPointerMove_),p.emitter.on("up",this.onPointerUp_)}refresh(){this.view.refresh(),this.prevView_.refresh(),this.prevView_.play()}updateValue_(i,r,p){const g=this.sel_.rawValue,P=this.value.rawValue.toObject(),A=this.view.positionToValue(i.x,i.y),F=r?gi(g,g,A.x,A.y):A;P[g*2]=F.x,P[g*2+1]=F.y,this.value.setRawValue(new Ye(...P),p)}onPointerDown_(i){const r=i.data;if(!r.point)return;const p=this.value.rawValue,g=this.view.valueToPosition(p.x1,p.y1),P=Nn(r.point.x,r.point.y,g.x,g.y),A=this.view.valueToPosition(p.x2,p.y2),F=Nn(r.point.x,r.point.y,A.x,A.y);this.sel_.rawValue=P<=F?0:1,this.updateValue_(r.point,i.shiftKey,{forceEmit:!1,last:!1})}onPointerMove_(i){const r=i.data;r.point&&this.updateValue_(r.point,i.shiftKey,{forceEmit:!1,last:!1})}onPointerUp_(i){const r=i.data;r.point&&this.updateValue_(r.point,i.shiftKey,{forceEmit:!0,last:!0})}onKeyDown_(i){ai(i.key)&&i.preventDefault();const r=this.sel_.rawValue,p=this.value.rawValue.toObject();p[r*2]+=Pt(this.baseStep_,Ln(i)),p[r*2+1]+=Pt(this.baseStep_,Yt(i)),this.value.setRawValue(new Ye(...p),{forceEmit:!1,last:!1})}onKeyUp_(i){ai(i.key)&&i.preventDefault();const r=Pt(this.baseStep_,Ln(i)),p=Pt(this.baseStep_,Yt(i));r===0&&p===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class dt{constructor(i,r){this.value=r.value,this.viewProps=r.viewProps,this.view=new vi(i,{viewProps:this.viewProps}),this.gc_=new jn(i,{baseStep:r.axis.baseStep,value:this.value,viewProps:this.viewProps}),this.view.graphElement.appendChild(this.gc_.view.element);const p=Object.assign(Object.assign({},r.axis),{constraint:new xt({max:1,min:0})}),g=Object.assign(Object.assign({},r.axis),{constraint:void 0});this.tc_=new Tn(i,{assembly:fi,axes:[p,g,p,g],parser:Kt,value:this.value,viewProps:this.viewProps}),this.view.textElement.appendChild(this.tc_.view.element)}get allFocusableElements(){return[this.gc_.view.element,...this.tc_.view.textViews.map(i=>i.inputElement)]}refresh(){this.gc_.refresh()}}class le{constructor(i,r){this.onButtonBlur_=this.onButtonBlur_.bind(this),this.onButtonClick_=this.onButtonClick_.bind(this),this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.value=r.value,this.viewProps=r.viewProps,this.foldable_=_n(r.expanded),this.view=new fs(i,{foldable:this.foldable_,pickerLayout:r.pickerLayout,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("blur",this.onButtonBlur_),this.view.buttonElement.addEventListener("click",this.onButtonClick_),this.tc_=new J(i,{parser:ms,props:oe.fromObject({formatter:qe}),value:this.value,viewProps:this.viewProps}),this.view.textElement.appendChild(this.tc_.view.element),this.popC_=r.pickerLayout==="popup"?new M(i,{viewProps:this.viewProps}):null;const p=new dt(i,{axis:r.axis,value:this.value,viewProps:this.viewProps});p.allFocusableElements.forEach(g=>{g.addEventListener("blur",this.onPopupChildBlur_),g.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=p,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),E(this.popC_.shows,g=>{g&&p.refresh()}),$t({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:g=>g.rawValue,backward:(g,P)=>P.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),et(this.foldable_,this.view.pickerElement))}onButtonBlur_(i){if(!this.popC_)return;const r=i.relatedTarget;(!r||!this.popC_.view.element.contains(r))&&(this.popC_.shows.rawValue=!1)}onButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.allFocusableElements[0].focus()}onPopupChildBlur_(i){if(!this.popC_)return;const r=this.popC_.view.element,p=He(i);p&&r.contains(p)||p&&p===this.view.buttonElement&&!Ee(r.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(i){this.popC_&&i.key==="Escape"&&(this.popC_.shows.rawValue=!1)}}function _i(){return new es({assembly:fi,components:[0,1,2,3].map(a=>a%2===0?new xt({min:0,max:1}):void 0)})}const me={id:"cubic-bezier",type:"blade",css:'.tp-cbzgv,.tp-radv_b,.tp-rslv_k,.tp-cbzv_b{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-radv_b,.tp-rslv_k,.tp-cbzv_b{background-color:var(--btn-bg);border-radius:var(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-radv_b:hover,.tp-rslv_k:hover,.tp-cbzv_b:hover{background-color:var(--btn-bg-h)}.tp-radv_b:focus,.tp-rslv_k:focus,.tp-cbzv_b:focus{background-color:var(--btn-bg-f)}.tp-radv_b:active,.tp-rslv_k:active,.tp-cbzv_b:active{background-color:var(--btn-bg-a)}.tp-radv_b:disabled,.tp-rslv_k:disabled,.tp-cbzv_b:disabled{opacity:.5}.tp-cbzgv{background-color:var(--in-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);min-width:0;width:100%}.tp-cbzgv:hover{background-color:var(--in-bg-h)}.tp-cbzgv:focus{background-color:var(--in-bg-f)}.tp-cbzgv:active{background-color:var(--in-bg-a)}.tp-cbzgv:disabled{opacity:.5}.tp-btngridv{border-radius:var(--elm-br);display:grid;overflow:hidden;gap:2px}.tp-btngridv.tp-v-disabled{opacity:.5}.tp-btngridv .tp-btnv_b:disabled{opacity:1}.tp-btngridv .tp-btnv_b:disabled .tp-btnv_t{opacity:.5}.tp-btngridv .tp-btnv_b{border-radius:0}.tp-cbzv{position:relative}.tp-cbzv_h{display:flex}.tp-cbzv_b{margin-right:4px;position:relative;width:var(--bld-us)}.tp-cbzv_b svg{display:block;height:16px;left:50%;margin-left:-8px;margin-top:-8px;position:absolute;top:50%;width:16px}.tp-cbzv_b svg path{stroke:var(--bs-bg);stroke-width:2}.tp-cbzv_t{flex:1}.tp-cbzv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-cbzv.tp-cbzv-expanded .tp-cbzv_p{margin-top:var(--bld-s);opacity:1}.tp-cbzv.tp-cbzv-cpl .tp-cbzv_p{overflow:visible}.tp-cbzv .tp-popv{left:calc(-1*var(--cnt-h-p));position:absolute;right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-cbzpv_t{margin-top:var(--bld-s)}.tp-cbzgv{height:auto;overflow:hidden;position:relative}.tp-cbzgv.tp-v-disabled{opacity:.5}.tp-cbzgv_p{left:16px;position:absolute;right:16px;top:0}.tp-cbzgv_g{cursor:pointer;display:block;height:calc(var(--bld-us)*5);width:100%}.tp-cbzgv_u{opacity:.1;stroke:var(--in-fg);stroke-dasharray:1}.tp-cbzgv_l{fill:rgba(0,0,0,0);stroke:var(--in-fg)}.tp-cbzgv_v{opacity:.5;stroke:var(--in-fg);stroke-dasharray:1}.tp-cbzgv_h{border:var(--in-fg) solid 1px;border-radius:50%;box-sizing:border-box;height:4px;margin-left:-2px;margin-top:-2px;pointer-events:none;position:absolute;width:4px}.tp-cbzgv:focus .tp-cbzgv_h-sel{background-color:var(--in-fg);border-width:0}.tp-cbzprvv{cursor:pointer;height:4px;padding:4px 0;position:relative}.tp-cbzprvv_g{display:block;height:100%;overflow:visible;width:100%}.tp-cbzprvv_t{opacity:.5;stroke:var(--mo-fg)}.tp-cbzprvv_m{background-color:var(--mo-fg);border-radius:50%;height:4px;margin-left:-2px;margin-top:-2px;opacity:0;position:absolute;top:50%;transition:opacity .2s ease-out;width:4px}.tp-cbzprvv_m.tp-cbzprvv_m-a{opacity:1}.tp-fpsv{position:relative}.tp-fpsv_l{bottom:4px;color:var(--mo-fg);line-height:1;right:4px;pointer-events:none;position:absolute}.tp-fpsv_u{margin-left:.2em;opacity:.7}.tp-rslv{cursor:pointer;padding-left:8px;padding-right:8px}.tp-rslv.tp-v-disabled{opacity:.5}.tp-rslv_t{height:calc(var(--bld-us));position:relative}.tp-rslv_t::before{background-color:var(--in-bg);border-radius:1px;content:"";height:2px;margin-top:-1px;position:absolute;top:50%;left:-4px;right:-4px}.tp-rslv_b{bottom:0;top:0;position:absolute}.tp-rslv_b::before{background-color:var(--in-fg);content:"";height:2px;margin-top:-1px;position:absolute;top:50%;left:0;right:0}.tp-rslv_k{height:calc(var(--bld-us) - 8px);margin-top:calc((var(--bld-us) - 8px)/-2);position:absolute;top:50%;width:8px}.tp-rslv_k.tp-rslv_k-min{margin-left:-8px}.tp-rslv_k.tp-rslv_k-max{margin-left:0}.tp-rslv.tp-rslv-zero .tp-rslv_k.tp-rslv_k-min{border-bottom-right-radius:0;border-top-right-radius:0}.tp-rslv.tp-rslv-zero .tp-rslv_k.tp-rslv_k-max{border-bottom-left-radius:0;border-top-left-radius:0}.tp-rsltxtv{display:flex}.tp-rsltxtv_s{flex:1}.tp-rsltxtv_t{flex:1;margin-left:4px}.tp-radv_l{display:block;position:relative}.tp-radv_i{left:0;opacity:0;position:absolute;top:0}.tp-radv_b{opacity:.5}.tp-radv_i:hover+.tp-radv_b{background-color:var(--btn-bg-h)}.tp-radv_i:focus+.tp-radv_b{background-color:var(--btn-bg-f)}.tp-radv_i:active+.tp-radv_b{background-color:var(--btn-bg-a)}.tp-radv_i:checked+.tp-radv_b{opacity:1}.tp-radv_t{bottom:0;color:inherit;left:0;overflow:hidden;position:absolute;right:0;text-align:center;text-overflow:ellipsis;top:0}.tp-radv_i:disabled+.tp-radv_b>.tp-radv_t{opacity:.5}.tp-radgridv{border-radius:var(--elm-br);display:grid;overflow:hidden;gap:2px}.tp-radgridv.tp-v-disabled{opacity:.5}.tp-radgridv .tp-radv_b{border-radius:0}',accept(a){const i=ee,r=$(a,{value:i.required.array(i.required.number),view:i.required.constant("cubicbezier"),expanded:i.optional.boolean,label:i.optional.string,picker:i.optional.custom(p=>p==="inline"||p==="popup"?p:void 0)});return r?{params:r}:null},controller(a){var i,r;const p=new Ye(...a.params.value),g=se(p,{constraint:_i(),equals:Ye.equals}),P=new le(a.document,{axis:{baseStep:.1,textProps:oe.fromObject({draggingScale:.01,formatter:be(2)})},expanded:(i=a.params.expanded)!==null&&i!==void 0?i:!1,pickerLayout:(r=a.params.picker)!==null&&r!==void 0?r:"popup",value:g,viewProps:a.viewProps});return new tt(a.document,{blade:a.blade,props:oe.fromObject({label:a.params.label}),valueController:P})},api(a){return!(a.controller instanceof tt)||!(a.controller.valueController instanceof le)?null:new us(a.controller)}};class wi extends o{begin(){this.controller_.valueController.begin()}end(){this.controller_.valueController.end()}}const Le=20;class gs{constructor(){this.start_=null,this.duration_=0,this.fps_=null,this.frameCount_=0,this.timestamps_=[]}get duration(){return this.duration_}get fps(){return this.fps_}begin(i){this.start_=i.getTime()}calculateFps_(i){if(this.timestamps_.length===0)return null;const r=this.timestamps_[0];return 1e3*(this.frameCount_-r.frameCount)/(i-r.time)}compactTimestamps_(){if(this.timestamps_.length<=Le)return;const i=this.timestamps_.length-Le;this.timestamps_.splice(0,i);const r=this.timestamps_[0].frameCount;this.timestamps_.forEach(p=>{p.frameCount-=r}),this.frameCount_-=r}end(i){if(this.start_===null)return;const r=i.getTime();this.duration_=r-this.start_,this.start_=null,this.fps_=this.calculateFps_(r),this.timestamps_.push({frameCount:this.frameCount_,time:r}),++this.frameCount_,this.compactTimestamps_()}}const Ze=V("fps");class Fn{constructor(i,r){this.element=i.createElement("div"),this.element.classList.add(Ze()),r.viewProps.bindClassModifiers(this.element),this.graphElement=i.createElement("div"),this.graphElement.classList.add(Ze("g")),this.element.appendChild(this.graphElement);const p=i.createElement("div");p.classList.add(Ze("l")),this.element.appendChild(p);const g=i.createElement("span");g.classList.add(Ze("v")),g.textContent="--",p.appendChild(g),this.valueElement=g;const P=i.createElement("span");P.classList.add(Ze("u")),P.textContent="FPS",p.appendChild(P)}}class xi{constructor(i,r){this.stopwatch_=new gs,this.onTick_=this.onTick_.bind(this),this.ticker_=r.ticker,this.ticker_.emitter.on("tick",this.onTick_),this.value_=r.value,this.viewProps=r.viewProps,this.view=new Fn(i,{viewProps:this.viewProps}),this.graphC_=new os(i,{formatter:be(0),lineCount:r.lineCount,props:oe.fromObject({maxValue:r.maxValue,minValue:r.minValue}),value:this.value_,viewProps:this.viewProps}),this.view.graphElement.appendChild(this.graphC_.view.element),this.viewProps.handleDispose(()=>{this.graphC_.viewProps.set("disposed",!0),this.ticker_.dispose()})}begin(){this.stopwatch_.begin(new Date)}end(){this.stopwatch_.end(new Date)}onTick_(){const i=this.stopwatch_.fps;if(i!==null){const r=this.value_.rawValue;this.value_.rawValue=Gi(r,i),this.view.valueElement.textContent=i.toFixed(0)}}}function _s(a,i){return i===0?new nt:new xn(a,i??ss.monitor.defaultInterval)}const zn={id:"fpsgraph",type:"blade",accept(a){const i=ee,r=$(a,{view:i.required.constant("fpsgraph"),interval:i.optional.number,label:i.optional.string,lineCount:i.optional.number,max:i.optional.number,min:i.optional.number});return r?{params:r}:null},controller(a){var i,r,p,g;const P=(i=a.params.interval)!==null&&i!==void 0?i:500;return new ct(a.document,{blade:a.blade,props:oe.fromObject({label:a.params.label}),valueController:new xi(a.document,{lineCount:(r=a.params.lineCount)!==null&&r!==void 0?r:2,maxValue:(p=a.params.max)!==null&&p!==void 0?p:90,minValue:(g=a.params.min)!==null&&g!==void 0?g:0,ticker:_s(a.document,P),value:ri(80),viewProps:a.viewProps})})},api(a){return!(a.controller instanceof ct)||!(a.controller.valueController instanceof xi)?null:new wi(a.controller)}};class je{constructor(i,r){this.min=i,this.max=r}static isObject(i){if(typeof i!="object"||i===null)return!1;const r=i.min,p=i.max;return!(typeof r!="number"||typeof p!="number")}static equals(i,r){return i.min===r.min&&i.max===r.max}get length(){return this.max-this.min}toObject(){return{min:this.min,max:this.max}}}const an={fromComponents:a=>new je(a[0],a[1]),toComponents:a=>[a.min,a.max]};class Lt{constructor(i){this.edge=i}constrain(i){var r,p,g,P,A,F,B,fe;if(i.min<=i.max)return new je((p=(r=this.edge)===null||r===void 0?void 0:r.constrain(i.min))!==null&&p!==void 0?p:i.min,(P=(g=this.edge)===null||g===void 0?void 0:g.constrain(i.max))!==null&&P!==void 0?P:i.max);const We=(i.min+i.max)/2;return new je((F=(A=this.edge)===null||A===void 0?void 0:A.constrain(We))!==null&&F!==void 0?F:We,(fe=(B=this.edge)===null||B===void 0?void 0:B.constrain(We))!==null&&fe!==void 0?fe:We)}}const Vt=V("rsltxt");class yi{constructor(i,r){this.sliderView_=r.sliderView,this.textView_=r.textView,this.element=i.createElement("div"),this.element.classList.add(Vt());const p=i.createElement("div");p.classList.add(Vt("s")),p.appendChild(this.sliderView_.element),this.element.appendChild(p);const g=i.createElement("div");g.classList.add(Vt("t")),g.appendChild(this.textView_.element),this.element.appendChild(g)}}const ke=V("rsl");class Ci{constructor(i,r){this.maxValue_=r.maxValue,this.minValue_=r.minValue,this.element=i.createElement("div"),this.element.classList.add(ke()),r.viewProps.bindClassModifiers(this.element),this.value_=r.value,this.value_.emitter.on("change",this.onValueChange_.bind(this));const p=i.createElement("div");p.classList.add(ke("t")),this.element.appendChild(p),this.trackElement=p;const g=i.createElement("div");g.classList.add(ke("b")),p.appendChild(g),this.barElement=g;const P=["min","max"].map(A=>{const F=i.createElement("div");return F.classList.add(ke("k"),ke("k",A)),p.appendChild(F),F});this.knobElements=[P[0],P[1]],this.update()}valueToX_(i){return ze(re(i,this.minValue_,this.maxValue_,0,1),0,1)*100}update(){const i=this.value_.rawValue;i.length===0?this.element.classList.add(ke(void 0,"zero")):this.element.classList.remove(ke(void 0,"zero"));const r=[this.valueToX_(i.min),this.valueToX_(i.max)];this.barElement.style.left=`${r[0]}%`,this.barElement.style.right=`${100-r[1]}%`,this.knobElements.forEach((p,g)=>{p.style.left=`${r[g]}%`})}onValueChange_(){this.update()}}class Bn{constructor(i,r){this.grabbing_=null,this.grabOffset_=0,this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.maxValue_=r.maxValue,this.minValue_=r.minValue,this.viewProps=r.viewProps,this.value=r.value,this.view=new Ci(i,{maxValue:r.maxValue,minValue:r.minValue,value:this.value,viewProps:r.viewProps});const p=new rt(this.view.trackElement);p.emitter.on("down",this.onPointerDown_),p.emitter.on("move",this.onPointerMove_),p.emitter.on("up",this.onPointerUp_)}ofs_(){return this.grabbing_==="min"?this.view.knobElements[0].getBoundingClientRect().width/2:this.grabbing_==="max"?-this.view.knobElements[1].getBoundingClientRect().width/2:0}valueFromData_(i){if(!i.point)return null;const r=(i.point.x+this.ofs_())/i.bounds.width;return re(r,0,1,this.minValue_,this.maxValue_)}onPointerDown_(i){if(!i.data.point)return;const r=i.data.point.x/i.data.bounds.width,p=this.value.rawValue,g=re(p.min,this.minValue_,this.maxValue_,0,1),P=re(p.max,this.minValue_,this.maxValue_,0,1);Math.abs(P-r)<=.025?this.grabbing_="max":Math.abs(g-r)<=.025?this.grabbing_="min":r>=g&&r<=P?(this.grabbing_="length",this.grabOffset_=re(r-g,0,1,0,this.maxValue_-this.minValue_)):r<g?(this.grabbing_="min",this.onPointerMove_(i)):r>P&&(this.grabbing_="max",this.onPointerMove_(i))}applyPointToValue_(i,r){const p=this.valueFromData_(i);if(p!==null){if(this.grabbing_==="min")this.value.setRawValue(new je(p,this.value.rawValue.max),r);else if(this.grabbing_==="max")this.value.setRawValue(new je(this.value.rawValue.min,p),r);else if(this.grabbing_==="length"){const g=this.value.rawValue.length;let P=p-this.grabOffset_,A=P+g;P<this.minValue_?(P=this.minValue_,A=this.minValue_+g):A>this.maxValue_&&(P=this.maxValue_-g,A=this.maxValue_),this.value.setRawValue(new je(P,A),r)}}}onPointerMove_(i){this.applyPointToValue_(i.data,{forceEmit:!1,last:!1})}onPointerUp_(i){this.applyPointToValue_(i.data,{forceEmit:!0,last:!0}),this.grabbing_=null}}class Un{constructor(i,r){this.value=r.value,this.viewProps=r.viewProps,this.sc_=new Bn(i,r);const p={baseStep:r.baseStep,constraint:r.constraint,textProps:oe.fromObject({draggingScale:r.draggingScale,formatter:r.formatter})};this.tc_=new Tn(i,{assembly:an,axes:[p,p],parser:r.parser,value:this.value,viewProps:r.viewProps}),this.view=new yi(i,{sliderView:this.sc_.view,textView:this.tc_.view})}get textController(){return this.tc_}}function ws(a){return je.isObject(a)?new je(a.min,a.max):new je(0,0)}function ln(a,i){a.writeProperty("max",i.max),a.writeProperty("min",i.min)}function At(a){const i=[],r=is(a);r&&i.push(r);const p=ns(a);return p&&i.push(p),new Lt(new zt(i))}const Et={id:"input-interval",type:"input",css:'.tp-cbzgv,.tp-radv_b,.tp-rslv_k,.tp-cbzv_b{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-radv_b,.tp-rslv_k,.tp-cbzv_b{background-color:var(--btn-bg);border-radius:var(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-radv_b:hover,.tp-rslv_k:hover,.tp-cbzv_b:hover{background-color:var(--btn-bg-h)}.tp-radv_b:focus,.tp-rslv_k:focus,.tp-cbzv_b:focus{background-color:var(--btn-bg-f)}.tp-radv_b:active,.tp-rslv_k:active,.tp-cbzv_b:active{background-color:var(--btn-bg-a)}.tp-radv_b:disabled,.tp-rslv_k:disabled,.tp-cbzv_b:disabled{opacity:.5}.tp-cbzgv{background-color:var(--in-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);min-width:0;width:100%}.tp-cbzgv:hover{background-color:var(--in-bg-h)}.tp-cbzgv:focus{background-color:var(--in-bg-f)}.tp-cbzgv:active{background-color:var(--in-bg-a)}.tp-cbzgv:disabled{opacity:.5}.tp-btngridv{border-radius:var(--elm-br);display:grid;overflow:hidden;gap:2px}.tp-btngridv.tp-v-disabled{opacity:.5}.tp-btngridv .tp-btnv_b:disabled{opacity:1}.tp-btngridv .tp-btnv_b:disabled .tp-btnv_t{opacity:.5}.tp-btngridv .tp-btnv_b{border-radius:0}.tp-cbzv{position:relative}.tp-cbzv_h{display:flex}.tp-cbzv_b{margin-right:4px;position:relative;width:var(--bld-us)}.tp-cbzv_b svg{display:block;height:16px;left:50%;margin-left:-8px;margin-top:-8px;position:absolute;top:50%;width:16px}.tp-cbzv_b svg path{stroke:var(--bs-bg);stroke-width:2}.tp-cbzv_t{flex:1}.tp-cbzv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-cbzv.tp-cbzv-expanded .tp-cbzv_p{margin-top:var(--bld-s);opacity:1}.tp-cbzv.tp-cbzv-cpl .tp-cbzv_p{overflow:visible}.tp-cbzv .tp-popv{left:calc(-1*var(--cnt-h-p));position:absolute;right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-cbzpv_t{margin-top:var(--bld-s)}.tp-cbzgv{height:auto;overflow:hidden;position:relative}.tp-cbzgv.tp-v-disabled{opacity:.5}.tp-cbzgv_p{left:16px;position:absolute;right:16px;top:0}.tp-cbzgv_g{cursor:pointer;display:block;height:calc(var(--bld-us)*5);width:100%}.tp-cbzgv_u{opacity:.1;stroke:var(--in-fg);stroke-dasharray:1}.tp-cbzgv_l{fill:rgba(0,0,0,0);stroke:var(--in-fg)}.tp-cbzgv_v{opacity:.5;stroke:var(--in-fg);stroke-dasharray:1}.tp-cbzgv_h{border:var(--in-fg) solid 1px;border-radius:50%;box-sizing:border-box;height:4px;margin-left:-2px;margin-top:-2px;pointer-events:none;position:absolute;width:4px}.tp-cbzgv:focus .tp-cbzgv_h-sel{background-color:var(--in-fg);border-width:0}.tp-cbzprvv{cursor:pointer;height:4px;padding:4px 0;position:relative}.tp-cbzprvv_g{display:block;height:100%;overflow:visible;width:100%}.tp-cbzprvv_t{opacity:.5;stroke:var(--mo-fg)}.tp-cbzprvv_m{background-color:var(--mo-fg);border-radius:50%;height:4px;margin-left:-2px;margin-top:-2px;opacity:0;position:absolute;top:50%;transition:opacity .2s ease-out;width:4px}.tp-cbzprvv_m.tp-cbzprvv_m-a{opacity:1}.tp-fpsv{position:relative}.tp-fpsv_l{bottom:4px;color:var(--mo-fg);line-height:1;right:4px;pointer-events:none;position:absolute}.tp-fpsv_u{margin-left:.2em;opacity:.7}.tp-rslv{cursor:pointer;padding-left:8px;padding-right:8px}.tp-rslv.tp-v-disabled{opacity:.5}.tp-rslv_t{height:calc(var(--bld-us));position:relative}.tp-rslv_t::before{background-color:var(--in-bg);border-radius:1px;content:"";height:2px;margin-top:-1px;position:absolute;top:50%;left:-4px;right:-4px}.tp-rslv_b{bottom:0;top:0;position:absolute}.tp-rslv_b::before{background-color:var(--in-fg);content:"";height:2px;margin-top:-1px;position:absolute;top:50%;left:0;right:0}.tp-rslv_k{height:calc(var(--bld-us) - 8px);margin-top:calc((var(--bld-us) - 8px)/-2);position:absolute;top:50%;width:8px}.tp-rslv_k.tp-rslv_k-min{margin-left:-8px}.tp-rslv_k.tp-rslv_k-max{margin-left:0}.tp-rslv.tp-rslv-zero .tp-rslv_k.tp-rslv_k-min{border-bottom-right-radius:0;border-top-right-radius:0}.tp-rslv.tp-rslv-zero .tp-rslv_k.tp-rslv_k-max{border-bottom-left-radius:0;border-top-left-radius:0}.tp-rsltxtv{display:flex}.tp-rsltxtv_s{flex:1}.tp-rsltxtv_t{flex:1;margin-left:4px}.tp-radv_l{display:block;position:relative}.tp-radv_i{left:0;opacity:0;position:absolute;top:0}.tp-radv_b{opacity:.5}.tp-radv_i:hover+.tp-radv_b{background-color:var(--btn-bg-h)}.tp-radv_i:focus+.tp-radv_b{background-color:var(--btn-bg-f)}.tp-radv_i:active+.tp-radv_b{background-color:var(--btn-bg-a)}.tp-radv_i:checked+.tp-radv_b{opacity:1}.tp-radv_t{bottom:0;color:inherit;left:0;overflow:hidden;position:absolute;right:0;text-align:center;text-overflow:ellipsis;top:0}.tp-radv_i:disabled+.tp-radv_b>.tp-radv_t{opacity:.5}.tp-radgridv{border-radius:var(--elm-br);display:grid;overflow:hidden;gap:2px}.tp-radgridv.tp-v-disabled{opacity:.5}.tp-radgridv .tp-radv_b{border-radius:0}',accept:(a,i)=>{if(!je.isObject(a))return null;const r=ee,p=$(i,{format:r.optional.function,max:r.optional.number,min:r.optional.number,step:r.optional.number});return p?{initialValue:new je(a.min,a.max),params:p}:null},binding:{reader:a=>ws,constraint:a=>At(a.params),equals:je.equals,writer:a=>ln},controller(a){var i;const r=a.value,p=a.constraint;if(!(p instanceof Lt))throw w.shouldNeverHappen();const g=(r.rawValue.min+r.rawValue.max)/2,P=(i=a.params.format)!==null&&i!==void 0?i:be(Yi(p.edge,g)),A=p.edge&&Ue(p.edge,xt);if((A==null?void 0:A.minValue)!==void 0&&(A==null?void 0:A.maxValue)!==void 0)return new Un(a.document,{baseStep:En(p.edge),constraint:p.edge,draggingScale:ci(A,g),formatter:P,maxValue:A.maxValue,minValue:A.minValue,parser:Kt,value:r,viewProps:a.viewProps});const F={baseStep:En(p.edge),constraint:p.edge,textProps:oe.fromObject({draggingScale:g,formatter:P})};return new Tn(a.document,{assembly:an,axes:[F,F],parser:Kt,value:r,viewProps:a.viewProps})}};class cn{constructor(i){this.controller_=i}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(i){this.controller_.viewProps.set("disabled",i)}get title(){var i;return(i=this.controller_.props.get("title"))!==null&&i!==void 0?i:""}set title(i){this.controller_.props.set("title",i)}}class xs extends d{constructor(i,r,p,g,P){super(i,g,P),this.cell=r,this.index=p}}class ys extends o{constructor(i){super(i),this.cellToApiMap_=new Map,this.controller_.valueController.cellControllers.forEach(p=>{const g=new cn(p);this.cellToApiMap_.set(p,g)})}get value(){return this.controller_.value}cell(i,r){const p=this.controller_.valueController,g=p.cellControllers[r*p.size[0]+i];return this.cellToApiMap_.get(g)}on(i,r){const p=r.bind(this);this.controller_.value.emitter.on(i,g=>{const P=this.controller_.valueController,A=P.findCellByValue(g.rawValue);if(!A)return;const F=this.cellToApiMap_.get(A);if(!F)return;const B=P.cellControllers.indexOf(A);p(new xs(this,F,[B%P.size[0],Math.floor(B/P.size[0])],g.rawValue,void 0))})}}const Zt=V("rad");class Cs{constructor(i,r){this.element=i.createElement("div"),this.element.classList.add(Zt()),r.viewProps.bindClassModifiers(this.element);const p=i.createElement("label");p.classList.add(Zt("l")),this.element.appendChild(p);const g=i.createElement("input");g.classList.add(Zt("i")),g.name=r.name,g.type="radio",r.viewProps.bindDisabled(g),p.appendChild(g),this.inputElement=g;const P=i.createElement("div");P.classList.add(Zt("b")),p.appendChild(P);const A=i.createElement("div");A.classList.add(Zt("t")),P.appendChild(A),O(r.props,"title",F=>{A.textContent=F})}}class mt{constructor(i,r){this.props=r.props,this.viewProps=r.viewProps,this.view=new Cs(i,{name:r.name,props:this.props,viewProps:this.viewProps})}}class Rn{constructor(i,r){this.cellCs_=[],this.cellValues_=[],this.onCellInputChange_=this.onCellInputChange_.bind(this),this.size=r.size;const[p,g]=this.size;for(let P=0;P<g;P++)for(let A=0;A<p;A++){const F=new mt(i,{name:r.groupName,props:oe.fromObject(Object.assign({},r.cellConfig(A,P))),viewProps:Be.create()});this.cellCs_.push(F),this.cellValues_.push(r.cellConfig(A,P).value)}this.value=r.value,E(this.value,P=>{const A=this.findCellByValue(P);A&&(A.view.inputElement.checked=!0)}),this.viewProps=Be.create(),this.view=new pt(i,{viewProps:this.viewProps,viewName:"radgrid"}),this.view.element.style.gridTemplateColumns=`repeat(${p}, 1fr)`,this.cellCs_.forEach(P=>{P.view.inputElement.addEventListener("change",this.onCellInputChange_),this.view.element.appendChild(P.view.element)})}get cellControllers(){return this.cellCs_}findCellByValue(i){const r=this.cellValues_.findIndex(p=>p===i);return r<0?null:this.cellCs_[r]}onCellInputChange_(i){const r=i.currentTarget,p=this.cellCs_.findIndex(g=>g.view.inputElement===r);p<0||(this.value.rawValue=this.cellValues_[p])}}const Ps=function(){return{id:"radiogrid",type:"blade",accept(a){const i=ee,r=$(a,{cells:i.required.function,groupName:i.required.string,size:i.required.array(i.required.number),value:i.required.raw,view:i.required.constant("radiogrid"),label:i.optional.string});return r?{params:r}:null},controller(a){return new tt(a.document,{blade:a.blade,props:oe.fromObject({label:a.params.label}),valueController:new Rn(a.document,{groupName:a.params.groupName,cellConfig:a.params.cells,size:a.params.size,value:se(a.params.value)})})},api(a){return!(a.controller instanceof tt)||!(a.controller.valueController instanceof Rn)?null:new ys(a.controller)}}}();function Gn(a){return{id:"input-radiogrid",type:"input",accept(i,r){if(!a.isType(i))return null;const p=ee,g=$(r,{cells:p.required.function,groupName:p.required.string,size:p.required.array(p.required.number),view:p.required.constant("radiogrid")});return g?{initialValue:i,params:g}:null},binding:a.binding,controller:i=>new Rn(i.document,{cellConfig:i.params.cells,groupName:i.params.groupName,size:i.params.size,value:i.value})}}const ks=Gn({isType:a=>typeof a=="number",binding:{reader:a=>st,writer:a=>ht}}),Pi=Gn({isType:a=>typeof a=="string",binding:{reader:a=>si,writer:a=>ht}}),Ms=Gn({isType:a=>typeof a=="boolean",binding:{reader:a=>de,writer:a=>ht}}),Ss=[ps,me,zn,Et,Ps,Ms,ks,Pi];c.CubicBezier=Ye,c.plugins=Ss,Object.defineProperty(c,"__esModule",{value:!0})})})(Oo,gn);const Do=Ur({__proto__:null,default:So(gn)},[gn]);let jt,Jn;const No=(L="tres-container")=>{jt||(jt=new Wn.Pane({container:document.querySelector(L)||void 0}),jt.registerPlugin(Do),Jn=jt.addBlade({view:"fpsgraph",label:"fpsgraph"}));function l(){jt&&jt.dispose()}return R.onMounted(()=>{const{onBeforeLoop:c,onAfterLoop:o,resume:h}=Zn.useRenderLoop();h(),c(()=>Jn.begin()),o(()=>Jn.end())}),R.onUnmounted(()=>{l()}),{pane:jt,fpsGraph:Jn,disposeTweakPane:l}};let Hn=null;function jo(L,l){return c=>{l&&l(c),L.draco&&(Hn||(Hn=new Lo),Hn.setDecoderPath(L.decoderPath||"https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),c.setDRACOLoader(Hn))}}async function nr(L,l={draco:!1},c){return await Zn.useLoader(Yr,L,jo(l,c))}const Fo=R.defineComponent({name:"GLTFModel",props:{path:String,draco:Boolean,decoderPath:String},async setup(L){const l=R.inject("local-scene"),{scene:c}=await nr(L.path,{draco:L.draco,decoderPath:L.decoderPath});return l!=null&&l.value&&l.value.add(c),()=>null}}),zo=R.defineComponent({__name:"Text3D",props:{font:null,text:null,size:{default:.5},height:{default:.2},curveSegments:{default:5},bevelEnabled:{type:Boolean,default:!0},bevelThickness:{default:.05},bevelSize:{default:.02},bevelOffset:{default:0},bevelSegments:{default:4},center:{type:Boolean,default:!1}},async setup(L){let l,c;const o=L,{extend:h}=tr();h({TextGeometry:Co});const d=new Po,f=R.useSlots(),v=R.computed(()=>{var y;return o.text?o.text:f.default?(y=f.default()[0].children)==null?void 0:y.trim():"TresJS"}),b=([l,c]=R.withAsyncContext(()=>new Promise((y,x)=>{try{typeof o.font=="string"?d.load(o.font,V=>{y(V)}):y(o.font)}catch(V){x(console.error("cientos",V))}})),l=await l,c(),l),w=R.computed(()=>({font:b,size:o.size,height:o.height,curveSegments:o.curveSegments,bevelEnabled:o.bevelEnabled,bevelThickness:o.bevelThickness,bevelSize:o.bevelSize,bevelOffset:o.bevelOffset,bevelSegments:o.bevelSegments}));return(y,x)=>{const V=R.resolveComponent("TresTextGeometry"),D=R.resolveComponent("TresMesh");return R.unref(b)?(R.openBlock(),R.createBlock(D,{key:0},{default:R.withCtx(()=>[R.unref(v)?(R.openBlock(),R.createBlock(V,{key:0,args:[R.unref(v),R.unref(w)],center:L.center},null,8,["args","center"])):R.createCommentVNode("",!0),R.renderSlot(y.$slots,"default")]),_:3})):R.createCommentVNode("",!0)}}});Ve.GLTFModel=Fo,Ve.OrbitControls=Ao,Ve.Text3D=zo,Ve.TransformControls=Io,Ve.useGLTF=nr,Ve.useTweakPane=No,Object.defineProperty(Ve,Symbol.toStringTag,{value:"Module"})});
|