@tresjs/cientos 1.2.1 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/useGLTF/component.d.ts +2 -0
- package/dist/trescientos.js +289 -288
- package/dist/trescientos.umd.cjs +8 -8
- package/package.json +3 -3
package/dist/trescientos.umd.cjs
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: @tresjs/cientos
|
|
3
|
-
* version: v1.
|
|
3
|
+
* version: v1.2.2
|
|
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(`
|
|
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 _=Es[P]||P.toLowerCase();f[_]=h[P]}for(const P in l.attributes){const _=Es[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 Ps extends y.MeshStandardMaterial{constructor(l){super(),this.isGLTFSpecularGlossinessMaterial=!0;const u=["#ifdef USE_SPECULARMAP"," uniform sampler2D specularMap;","#endif"].join(`
|
|
9
9
|
`),a=["#ifdef USE_GLOSSINESSMAP"," uniform sampler2D glossinessMap;","#endif"].join(`
|
|
10
10
|
`),d=["vec3 specularFactor = specular;","#ifdef USE_SPECULARMAP"," vec4 texelSpecular = texture2D( specularMap, vUv );"," // reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture"," specularFactor *= texelSpecular.rgb;","#endif"].join(`
|
|
11
11
|
`),m=["float glossinessFactor = glossiness;","#ifdef USE_GLOSSINESSMAP"," vec4 texelGlossiness = texture2D( glossinessMap, vUv );"," // reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture"," glossinessFactor *= texelGlossiness.a;","#endif"].join(`
|
|
12
12
|
`),h=["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
|
-
`),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
|
-
`)v=0,w-=h*a.lineHeight;else{const k=Co(_,m,v,w,u);k&&(v+=k.offsetX+a.letterSpacing,f.push(k.path))}}return f}function Co(M,l,u,a,d){const m=d.glyphs[M]||d.glyphs["?"];if(!m){console.error('THREE.Font: character "'+M+'" does not exists in font family '+d.familyName+".");return}const h=new y.ShapePath;let f,v,w,P,_,k,A,T;if(m.o){const I=m._cachedOutline||(m._cachedOutline=m.o.split(" "));for(let V=0,D=I.length;V<D;)switch(I[V++]){case"m":f=parseInt(I[V++])*l+u,v=parseInt(I[V++])*l+a,h.moveTo(f,v);break;case"l":f=parseInt(I[V++])*l+u,v=parseInt(I[V++])*l+a,h.lineTo(f,v);break;case"q":w=parseInt(I[V++])*l+u,P=parseInt(I[V++])*l+a,_=parseInt(I[V++])*l+u,k=parseInt(I[V++])*l+a,h.quadraticCurveTo(_,k,w,P);break;case"b":w=parseInt(I[V++])*l+u,P=parseInt(I[V++])*l+a,_=parseInt(I[V++])*l+u,k=parseInt(I[V++])*l+a,A=parseInt(I[V++])*l+u,T=parseInt(I[V++])*l+a,h.bezierCurveTo(_,k,A,T,w,P);break}}return{offsetX:m.ha*l,path:h}}var er=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Po(M){return M&&M.__esModule&&Object.prototype.hasOwnProperty.call(M,"default")?M.default:M}const
|
|
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"})});
|
|
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 Ps}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 Ps(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},Es={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},ks={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 Ms(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||ks.OPAQUE;if(P===ks.BLEND?(f.transparent=!0,f.depthWrite=!1):(f.transparent=!1,P===ks.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===Ps?_=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=Ms(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=Ms(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=Ms(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=Es[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 Ls(l)}}class Ls{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(Ls,"isFont",void 0),z(Ls,"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
|
+
`)v=0,w-=h*a.lineHeight;else{const k=Co(_,m,v,w,u);k&&(v+=k.offsetX+a.letterSpacing,f.push(k.path))}}return f}function Co(M,l,u,a,d){const m=d.glyphs[M]||d.glyphs["?"];if(!m){console.error('THREE.Font: character "'+M+'" does not exists in font family '+d.familyName+".");return}const h=new y.ShapePath;let f,v,w,P,_,k,A,T;if(m.o){const I=m._cachedOutline||(m._cachedOutline=m.o.split(" "));for(let V=0,D=I.length;V<D;)switch(I[V++]){case"m":f=parseInt(I[V++])*l+u,v=parseInt(I[V++])*l+a,h.moveTo(f,v);break;case"l":f=parseInt(I[V++])*l+u,v=parseInt(I[V++])*l+a,h.lineTo(f,v);break;case"q":w=parseInt(I[V++])*l+u,P=parseInt(I[V++])*l+a,_=parseInt(I[V++])*l+u,k=parseInt(I[V++])*l+a,h.quadraticCurveTo(_,k,w,P);break;case"b":w=parseInt(I[V++])*l+u,P=parseInt(I[V++])*l+a,_=parseInt(I[V++])*l+u,k=parseInt(I[V++])*l+a,A=parseInt(I[V++])*l+u,T=parseInt(I[V++])*l+a,h.bezierCurveTo(_,k,A,T,w,P);break}}return{offsetX:m.ha*l,path:h}}var er=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Po(M){return M&&M.__esModule&&Object.prototype.hasOwnProperty.call(M,"default")?M.default:M}const Ss=new WeakMap;class Eo extends y.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,u,a,d){const m=new y.FileLoader(this.manager);m.setPath(this.path),m.setResponseType("arraybuffer"),m.setRequestHeader(this.requestHeader),m.setWithCredentials(this.withCredentials),m.load(l,h=>{const f={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(h,f).then(u).catch(d)},a,d)}decodeDracoFile(l,u,a,d){const m={attributeIDs:a||this.defaultAttributeIDs,attributeTypes:d||this.defaultAttributeTypes,useUniqueIDs:!!a};this.decodeGeometry(l,m).then(u)}decodeGeometry(l,u){for(const v in u.attributeTypes){const w=u.attributeTypes[v];w.BYTES_PER_ELEMENT!==void 0&&(u.attributeTypes[v]=w.name)}const a=JSON.stringify(u);if(Ss.has(l)){const v=Ss.get(l);if(v.key===a)return v.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 d;const m=this.workerNextTaskID++,h=l.byteLength,f=this._getWorker(m,h).then(v=>(d=v,new Promise((w,P)=>{d._callbacks[m]={resolve:w,reject:P},d.postMessage({type:"decode",id:m,taskConfig:u,buffer:l},[l])}))).then(v=>this._createGeometry(v.geometry));return f.catch(()=>!0).then(()=>{d&&m&&this._releaseTask(d,m)}),Ss.set(l,{key:a,promise:f}),f}_createGeometry(l){const u=new y.BufferGeometry;l.index&&u.setIndex(new y.BufferAttribute(l.index.array,1));for(let a=0;a<l.attributes.length;a++){const d=l.attributes[a],m=d.name,h=d.array,f=d.itemSize;u.setAttribute(m,new y.BufferAttribute(h,f))}return u}_loadLibrary(l,u){const a=new y.FileLoader(this.manager);return a.setPath(this.decoderPath),a.setResponseType(u),a.setWithCredentials(this.withCredentials),new Promise((d,m)=>{a.load(l,d,void 0,m)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const l=typeof WebAssembly!="object"||this.decoderConfig.type==="js",u=[];return l?u.push(this._loadLibrary("draco_decoder.js","text")):(u.push(this._loadLibrary("draco_wasm_wrapper.js","text")),u.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(u).then(a=>{const d=a[0];l||(this.decoderConfig.wasmBinary=a[1]);const m=ko.toString(),h=["/* draco decoder */",d,"","/* worker */",m.substring(m.indexOf("{")+1,m.lastIndexOf("}"))].join(`
|
|
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 Ts={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 Qn=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_(),Qn()),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 Jn=R("spr");class Bs{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(Jn()),t.viewProps.bindClassModifiers(this.element);const i=e.createElement("hr");i.classList.add(Jn("r")),this.element.appendChild(i)}}class es extends Ee{constructor(e,t){super(Object.assign(Object.assign({},t),{view:new Bs(e,{viewProps:t.viewProps})}))}}const ts={id:"separator",type:"blade",accept(n){const t=ae(n,{view:q.required.constant("separator")});return t?{params:t}:null},controller(n){return new es(n.document,{blade:n.blade,viewProps:n.viewProps})},api(n){return n.controller instanceof es?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 ns{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 ss 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 ns(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 is=-1;class zs{constructor(){this.onItemSelectedChange_=this.onItemSelectedChange_.bind(this),this.empty=Z(!0),this.selectedIndex=Z(is),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=is,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(),Qn()),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 ns(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 ss(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 rs{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 os=R("pop");class $s{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(os()),t.viewProps.bindClassModifiers(this.element),se(t.shows,te(this.element,os(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 as=R("txt");class nn{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(as()),t.viewProps.bindClassModifiers(this.element),this.props_=t.props,this.props_.emitter.on("change",this.onChange_);const i=e.createElement("input");i.classList.add(as("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 ls(n){return n==="false"?!1:!!n}function cs(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 ps(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=ps(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=ps(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]),us=An([li,ni]);function ci(n,e){const t=us(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 ds(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=ds(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),ds);function je(n,e){return e+=Kt(n,e).length,di(n,e)}function hs(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=hs(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 ms(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 vs(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 fs(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 bs(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 gs(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 _s{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.props_=t.props,this.props_.emitter.on("change",this.onChange_),this.element=e.createElement("div"),this.element.classList.add(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 _s(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 ws(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 xs(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(xs(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?bs(t.step):Math.max(bs(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=>ls,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 ys(n,e,t){const i=gs(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:ys},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]):gs(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(ws)})}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 Cs(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=>Cs(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",Cs(i),Cs(p)];this.colorElem_.style.background=`linear-gradient(${g.join(",")})`,this.previewElem_.style.backgroundColor=Cs(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=ys(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){fs(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){fs(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(ws),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=>ms,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=>ls},controller:n=>{var e;return n.value.rawValue.length===1?new ji(n.document,{formatter:cs,value:n.value,viewProps:n.viewProps}):new Bi(n.document,{formatter:cs,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=>ms},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=vs(t,i),this.emitter.emit("update",{rawValue:i,sender:this})}onTick_(e){this.read()}}function hl(n,e){return e===0?new rs: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,ts,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:xs(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=ss,u.TabPageApi=kn,u.TextApi=Br,u.TpChangeEvent=h,u.VERSION=kl,Object.defineProperty(u,"__esModule",{value:!0})})})(Ts,Ts.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 Qn=Se([Os,Is,Ft]),Rs=Se([Qn,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=ts(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 Jn(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=Jn(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 es=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((o,s)=>Bs(o,s),En);function ts(o,s){return s+=st(o,s).length,es(o,s)}function js(o){const s=ts(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 ns(o){return String(o)}function kn(o,s){for(;o.length<s;)o.push(void 0)}function ss(o){const s=[];return kn(s,o),te(s)}function is(o){const s=o.indexOf(void 0);return s<0?o:o.slice(0,s)}function zs(o,s){const r=[...is(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 rs(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 os(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=os(o);return s??1}function as(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 ls(o,s="#"){const r=o.getComponents("rgb"),c=[r[0],r[1],r[2],r[3]*255].map(zt).join("");return`${s}${c}`}function cs(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=>cs(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 ps{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 ps(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 us{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 us(o.document,{cellConfig:o.params.cells,size:o.params.size})})},api(o){return!(o.controller instanceof tt)||!(o.controller.valueController instanceof us)?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 ds=20,ui=.001,Nn=100;function di(o,s){let r=.25,c=.5,b=-1;for(let x=0;x<ds;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 hs={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 ms{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 vs=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<vs;L++){const O=ee(L,0,vs-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 fs(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?fs(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){rs(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){rs(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 ms(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:hs,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 bs(){return new Js({assembly:hs,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:bs(),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 gs 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 _s{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 _s(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:ss(80),viewProps:o.viewProps})})},api(o){return!(o.controller instanceof tt)||!(o.controller.valueController instanceof _s)?null:new gs(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 ws{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 xs{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 xs(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 ws(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:as(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}}),ys=zn({isType:o=>typeof o=="string",binding:{reader:o=>ns,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,ys];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 Ts.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 Zn=null;function Ao(M,l){return u=>{l&&l(u),M.draco&&(Zn||(Zn=new Eo),Zn.setDecoderPath(M.decoderPath||"https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),u.setDRACOLoader(Zn))}}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,decoderPath:String},async setup(M){const l=$.inject("local-scene"),{scene:u}=await nr(M.path,{draco:M.draco,decoderPath:M.decoderPath});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"})});
|