import"./aframe-forcegraph-component-B3vzsuem.js";import{c as pp}from"./_commonjsHelpers-Cpj98o6Y.js";import{i as mp}from"./Paired-C4wB-ooD.js";import"./three.module-Unazwo7z.js";import"./data-bind-mapper-D9QKwI5o.js";var Dp={exports:{}},hd={exports:{}},_u;function yp(){return _u||(_u=1,function(_i,Ln){var xn={};(function(ng,dn){_i.exports=dn()})(self,()=>(()=>{var Ir={"./node_modules/an-array/index.js":_A=>{var O=Object.prototype.toString;_A.exports=d;function d(s){return s.BYTES_PER_ELEMENT&&O.call(s.buffer)==="[object ArrayBuffer]"||Array.isArray(s)}},"./node_modules/as-number/index.js":_A=>{_A.exports=function(d,s){return typeof d=="number"?d:typeof s=="number"?s:0}},"./node_modules/base64-js/index.js":(_A,O)=>{O.byteLength=h,O.toByteArray=m,O.fromByteArray=R;for(var d=[],s=[],z=typeof Uint8Array<"u"?Uint8Array:Array,_="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",T=0,v=_.length;T0)throw new Error("Invalid string. Length must be a multiple of 4");var G=N.indexOf("=");G===-1&&(G=Y);var x=G===Y?0:4-G%4;return[G,x]}function h(N){var Y=D(N),G=Y[0],x=Y[1];return(G+x)*3/4-x}function p(N,Y,G){return(Y+G)*3/4-G}function m(N){var Y,G=D(N),x=G[0],U=G[1],j=new z(p(N,x,U)),Z=0,CA=U>0?x-4:x,QA;for(QA=0;QA>16&255,j[Z++]=Y>>8&255,j[Z++]=Y&255;return U===2&&(Y=s[N.charCodeAt(QA)]<<2|s[N.charCodeAt(QA+1)]>>4,j[Z++]=Y&255),U===1&&(Y=s[N.charCodeAt(QA)]<<10|s[N.charCodeAt(QA+1)]<<4|s[N.charCodeAt(QA+2)]>>2,j[Z++]=Y>>8&255,j[Z++]=Y&255),j}function u(N){return d[N>>18&63]+d[N>>12&63]+d[N>>6&63]+d[N&63]}function l(N,Y,G){for(var x,U=[],j=Y;jCA?CA:Z+j));return x===1?(Y=N[G-1],U.push(d[Y>>2]+d[Y<<4&63]+"==")):x===2&&(Y=(N[G-2]<<8)+N[G-1],U.push(d[Y>>10]+d[Y>>4&63]+d[Y<<2&63]+"=")),U.join("")}},"./node_modules/buffer-equal/index.js":(_A,O,d)=>{var s=d("./node_modules/buffer/index.js").Buffer;_A.exports=function(z,_){if(s.isBuffer(z)&&s.isBuffer(_)){if(typeof z.equals=="function")return z.equals(_);if(z.length!==_.length)return!1;for(var T=0;T{/*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh * @license MIT */const s=d("./node_modules/base64-js/index.js"),z=d("./node_modules/ieee754/index.js"),_=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;O.Buffer=h,O.SlowBuffer=j,O.INSPECT_MAX_BYTES=50;const T=2147483647;O.kMaxLength=T,h.TYPED_ARRAY_SUPPORT=v(),!h.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function v(){try{const aA=new Uint8Array(1),H={foo:function(){return 42}};return Object.setPrototypeOf(H,Uint8Array.prototype),Object.setPrototypeOf(aA,H),aA.foo()===42}catch{return!1}}Object.defineProperty(h.prototype,"parent",{enumerable:!0,get:function(){if(h.isBuffer(this))return this.buffer}}),Object.defineProperty(h.prototype,"offset",{enumerable:!0,get:function(){if(h.isBuffer(this))return this.byteOffset}});function D(aA){if(aA>T)throw new RangeError('The value "'+aA+'" is invalid for option "size"');const H=new Uint8Array(aA);return Object.setPrototypeOf(H,h.prototype),H}function h(aA,H,k){if(typeof aA=="number"){if(typeof H=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return l(aA)}return p(aA,H,k)}h.poolSize=8192;function p(aA,H,k){if(typeof aA=="string")return R(aA,H);if(ArrayBuffer.isView(aA))return Y(aA);if(aA==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof aA);if(vA(aA,ArrayBuffer)||aA&&vA(aA.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(vA(aA,SharedArrayBuffer)||aA&&vA(aA.buffer,SharedArrayBuffer)))return G(aA,H,k);if(typeof aA=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');const DA=aA.valueOf&&aA.valueOf();if(DA!=null&&DA!==aA)return h.from(DA,H,k);const YA=x(aA);if(YA)return YA;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof aA[Symbol.toPrimitive]=="function")return h.from(aA[Symbol.toPrimitive]("string"),H,k);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof aA)}h.from=function(aA,H,k){return p(aA,H,k)},Object.setPrototypeOf(h.prototype,Uint8Array.prototype),Object.setPrototypeOf(h,Uint8Array);function m(aA){if(typeof aA!="number")throw new TypeError('"size" argument must be of type number');if(aA<0)throw new RangeError('The value "'+aA+'" is invalid for option "size"')}function u(aA,H,k){return m(aA),aA<=0?D(aA):H!==void 0?typeof k=="string"?D(aA).fill(H,k):D(aA).fill(H):D(aA)}h.alloc=function(aA,H,k){return u(aA,H,k)};function l(aA){return m(aA),D(aA<0?0:U(aA)|0)}h.allocUnsafe=function(aA){return l(aA)},h.allocUnsafeSlow=function(aA){return l(aA)};function R(aA,H){if((typeof H!="string"||H==="")&&(H="utf8"),!h.isEncoding(H))throw new TypeError("Unknown encoding: "+H);const k=Z(aA,H)|0;let DA=D(k);const YA=DA.write(aA,H);return YA!==k&&(DA=DA.slice(0,YA)),DA}function N(aA){const H=aA.length<0?0:U(aA.length)|0,k=D(H);for(let DA=0;DA=T)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+T.toString(16)+" bytes");return aA|0}function j(aA){return+aA!=aA&&(aA=0),h.alloc(+aA)}h.isBuffer=function(H){return H!=null&&H._isBuffer===!0&&H!==h.prototype},h.compare=function(H,k){if(vA(H,Uint8Array)&&(H=h.from(H,H.offset,H.byteLength)),vA(k,Uint8Array)&&(k=h.from(k,k.offset,k.byteLength)),!h.isBuffer(H)||!h.isBuffer(k))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(H===k)return 0;let DA=H.length,YA=k.length;for(let ue=0,De=Math.min(DA,YA);ueYA.length?(h.isBuffer(De)||(De=h.from(De)),De.copy(YA,ue)):Uint8Array.prototype.set.call(YA,De,ue);else if(h.isBuffer(De))De.copy(YA,ue);else throw new TypeError('"list" argument must be an Array of Buffers');ue+=De.length}return YA};function Z(aA,H){if(h.isBuffer(aA))return aA.length;if(ArrayBuffer.isView(aA)||vA(aA,ArrayBuffer))return aA.byteLength;if(typeof aA!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof aA);const k=aA.length,DA=arguments.length>2&&arguments[2]===!0;if(!DA&&k===0)return 0;let YA=!1;for(;;)switch(H){case"ascii":case"latin1":case"binary":return k;case"utf8":case"utf-8":return Ao(aA).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return k*2;case"hex":return k>>>1;case"base64":return Kt(aA).length;default:if(YA)return DA?-1:Ao(aA).length;H=(""+H).toLowerCase(),YA=!0}}h.byteLength=Z;function CA(aA,H,k){let DA=!1;if((H===void 0||H<0)&&(H=0),H>this.length||((k===void 0||k>this.length)&&(k=this.length),k<=0)||(k>>>=0,H>>>=0,k<=H))return"";for(aA||(aA="utf8");;)switch(aA){case"hex":return Ye(this,H,k);case"utf8":case"utf-8":return HA(this,H,k);case"ascii":return Oe(this,H,k);case"latin1":case"binary":return ye(this,H,k);case"base64":return NA(this,H,k);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Et(this,H,k);default:if(DA)throw new TypeError("Unknown encoding: "+aA);aA=(aA+"").toLowerCase(),DA=!0}}h.prototype._isBuffer=!0;function QA(aA,H,k){const DA=aA[H];aA[H]=aA[k],aA[k]=DA}h.prototype.swap16=function(){const H=this.length;if(H%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let k=0;kk&&(H+=" ... "),""},_&&(h.prototype[_]=h.prototype.inspect),h.prototype.compare=function(H,k,DA,YA,ue){if(vA(H,Uint8Array)&&(H=h.from(H,H.offset,H.byteLength)),!h.isBuffer(H))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof H);if(k===void 0&&(k=0),DA===void 0&&(DA=H?H.length:0),YA===void 0&&(YA=0),ue===void 0&&(ue=this.length),k<0||DA>H.length||YA<0||ue>this.length)throw new RangeError("out of range index");if(YA>=ue&&k>=DA)return 0;if(YA>=ue)return-1;if(k>=DA)return 1;if(k>>>=0,DA>>>=0,YA>>>=0,ue>>>=0,this===H)return 0;let De=ue-YA,si=DA-k;const Mi=Math.min(De,si),Si=this.slice(YA,ue),nn=H.slice(k,DA);for(let zi=0;zi2147483647?k=2147483647:k<-2147483648&&(k=-2147483648),k=+k,ie(k)&&(k=YA?0:aA.length-1),k<0&&(k=aA.length+k),k>=aA.length){if(YA)return-1;k=aA.length-1}else if(k<0)if(YA)k=0;else return-1;if(typeof H=="string"&&(H=h.from(H,DA)),h.isBuffer(H))return H.length===0?-1:UA(aA,H,k,DA,YA);if(typeof H=="number")return H=H&255,typeof Uint8Array.prototype.indexOf=="function"?YA?Uint8Array.prototype.indexOf.call(aA,H,k):Uint8Array.prototype.lastIndexOf.call(aA,H,k):UA(aA,[H],k,DA,YA);throw new TypeError("val must be string, number or Buffer")}function UA(aA,H,k,DA,YA){let ue=1,De=aA.length,si=H.length;if(DA!==void 0&&(DA=String(DA).toLowerCase(),DA==="ucs2"||DA==="ucs-2"||DA==="utf16le"||DA==="utf-16le")){if(aA.length<2||H.length<2)return-1;ue=2,De/=2,si/=2,k/=2}function Mi(nn,zi){return ue===1?nn[zi]:nn.readUInt16BE(zi*ue)}let Si;if(YA){let nn=-1;for(Si=k;SiDe&&(k=De-si),Si=k;Si>=0;Si--){let nn=!0;for(let zi=0;ziYA&&(DA=YA)):DA=YA;const ue=H.length;DA>ue/2&&(DA=ue/2);let De;for(De=0;De>>0,isFinite(DA)?(DA=DA>>>0,YA===void 0&&(YA="utf8")):(YA=DA,DA=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");const ue=this.length-k;if((DA===void 0||DA>ue)&&(DA=ue),H.length>0&&(DA<0||k<0)||k>this.length)throw new RangeError("Attempt to write outside buffer bounds");YA||(YA="utf8");let De=!1;for(;;)switch(YA){case"hex":return TA(this,H,k,DA);case"utf8":case"utf-8":return pA(this,H,k,DA);case"ascii":case"latin1":case"binary":return hA(this,H,k,DA);case"base64":return uA(this,H,k,DA);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return lA(this,H,k,DA);default:if(De)throw new TypeError("Unknown encoding: "+YA);YA=(""+YA).toLowerCase(),De=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function NA(aA,H,k){return H===0&&k===aA.length?s.fromByteArray(aA):s.fromByteArray(aA.slice(H,k))}function HA(aA,H,k){k=Math.min(aA.length,k);const DA=[];let YA=H;for(;YA239?4:ue>223?3:ue>191?2:1;if(YA+si<=k){let Mi,Si,nn,zi;switch(si){case 1:ue<128&&(De=ue);break;case 2:Mi=aA[YA+1],(Mi&192)===128&&(zi=(ue&31)<<6|Mi&63,zi>127&&(De=zi));break;case 3:Mi=aA[YA+1],Si=aA[YA+2],(Mi&192)===128&&(Si&192)===128&&(zi=(ue&15)<<12|(Mi&63)<<6|Si&63,zi>2047&&(zi<55296||zi>57343)&&(De=zi));break;case 4:Mi=aA[YA+1],Si=aA[YA+2],nn=aA[YA+3],(Mi&192)===128&&(Si&192)===128&&(nn&192)===128&&(zi=(ue&15)<<18|(Mi&63)<<12|(Si&63)<<6|nn&63,zi>65535&&zi<1114112&&(De=zi))}}De===null?(De=65533,si=1):De>65535&&(De-=65536,DA.push(De>>>10&1023|55296),De=56320|De&1023),DA.push(De),YA+=si}return He(DA)}const pe=4096;function He(aA){const H=aA.length;if(H<=pe)return String.fromCharCode.apply(String,aA);let k="",DA=0;for(;DADA)&&(k=DA);let YA="";for(let ue=H;ueDA&&(H=DA),k<0?(k+=DA,k<0&&(k=0)):k>DA&&(k=DA),kk)throw new RangeError("Trying to access beyond buffer length")}h.prototype.readUintLE=h.prototype.readUIntLE=function(H,k,DA){H=H>>>0,k=k>>>0,DA||ct(H,k,this.length);let YA=this[H],ue=1,De=0;for(;++De>>0,k=k>>>0,DA||ct(H,k,this.length);let YA=this[H+--k],ue=1;for(;k>0&&(ue*=256);)YA+=this[H+--k]*ue;return YA},h.prototype.readUint8=h.prototype.readUInt8=function(H,k){return H=H>>>0,k||ct(H,1,this.length),this[H]},h.prototype.readUint16LE=h.prototype.readUInt16LE=function(H,k){return H=H>>>0,k||ct(H,2,this.length),this[H]|this[H+1]<<8},h.prototype.readUint16BE=h.prototype.readUInt16BE=function(H,k){return H=H>>>0,k||ct(H,2,this.length),this[H]<<8|this[H+1]},h.prototype.readUint32LE=h.prototype.readUInt32LE=function(H,k){return H=H>>>0,k||ct(H,4,this.length),(this[H]|this[H+1]<<8|this[H+2]<<16)+this[H+3]*16777216},h.prototype.readUint32BE=h.prototype.readUInt32BE=function(H,k){return H=H>>>0,k||ct(H,4,this.length),this[H]*16777216+(this[H+1]<<16|this[H+2]<<8|this[H+3])},h.prototype.readBigUInt64LE=jA(function(H){H=H>>>0,sn(H,"offset");const k=this[H],DA=this[H+7];(k===void 0||DA===void 0)&&En(H,this.length-8);const YA=k+this[++H]*2**8+this[++H]*2**16+this[++H]*2**24,ue=this[++H]+this[++H]*2**8+this[++H]*2**16+DA*2**24;return BigInt(YA)+(BigInt(ue)<>>0,sn(H,"offset");const k=this[H],DA=this[H+7];(k===void 0||DA===void 0)&&En(H,this.length-8);const YA=k*2**24+this[++H]*2**16+this[++H]*2**8+this[++H],ue=this[++H]*2**24+this[++H]*2**16+this[++H]*2**8+DA;return(BigInt(YA)<>>0,k=k>>>0,DA||ct(H,k,this.length);let YA=this[H],ue=1,De=0;for(;++De=ue&&(YA-=Math.pow(2,8*k)),YA},h.prototype.readIntBE=function(H,k,DA){H=H>>>0,k=k>>>0,DA||ct(H,k,this.length);let YA=k,ue=1,De=this[H+--YA];for(;YA>0&&(ue*=256);)De+=this[H+--YA]*ue;return ue*=128,De>=ue&&(De-=Math.pow(2,8*k)),De},h.prototype.readInt8=function(H,k){return H=H>>>0,k||ct(H,1,this.length),this[H]&128?(255-this[H]+1)*-1:this[H]},h.prototype.readInt16LE=function(H,k){H=H>>>0,k||ct(H,2,this.length);const DA=this[H]|this[H+1]<<8;return DA&32768?DA|4294901760:DA},h.prototype.readInt16BE=function(H,k){H=H>>>0,k||ct(H,2,this.length);const DA=this[H+1]|this[H]<<8;return DA&32768?DA|4294901760:DA},h.prototype.readInt32LE=function(H,k){return H=H>>>0,k||ct(H,4,this.length),this[H]|this[H+1]<<8|this[H+2]<<16|this[H+3]<<24},h.prototype.readInt32BE=function(H,k){return H=H>>>0,k||ct(H,4,this.length),this[H]<<24|this[H+1]<<16|this[H+2]<<8|this[H+3]},h.prototype.readBigInt64LE=jA(function(H){H=H>>>0,sn(H,"offset");const k=this[H],DA=this[H+7];(k===void 0||DA===void 0)&&En(H,this.length-8);const YA=this[H+4]+this[H+5]*2**8+this[H+6]*2**16+(DA<<24);return(BigInt(YA)<>>0,sn(H,"offset");const k=this[H],DA=this[H+7];(k===void 0||DA===void 0)&&En(H,this.length-8);const YA=(k<<24)+this[++H]*2**16+this[++H]*2**8+this[++H];return(BigInt(YA)<>>0,k||ct(H,4,this.length),z.read(this,H,!0,23,4)},h.prototype.readFloatBE=function(H,k){return H=H>>>0,k||ct(H,4,this.length),z.read(this,H,!1,23,4)},h.prototype.readDoubleLE=function(H,k){return H=H>>>0,k||ct(H,8,this.length),z.read(this,H,!0,52,8)},h.prototype.readDoubleBE=function(H,k){return H=H>>>0,k||ct(H,8,this.length),z.read(this,H,!1,52,8)};function q(aA,H,k,DA,YA,ue){if(!h.isBuffer(aA))throw new TypeError('"buffer" argument must be a Buffer instance');if(H>YA||HaA.length)throw new RangeError("Index out of range")}h.prototype.writeUintLE=h.prototype.writeUIntLE=function(H,k,DA,YA){if(H=+H,k=k>>>0,DA=DA>>>0,!YA){const si=Math.pow(2,8*DA)-1;q(this,H,k,DA,si,0)}let ue=1,De=0;for(this[k]=H&255;++De>>0,DA=DA>>>0,!YA){const si=Math.pow(2,8*DA)-1;q(this,H,k,DA,si,0)}let ue=DA-1,De=1;for(this[k+ue]=H&255;--ue>=0&&(De*=256);)this[k+ue]=H/De&255;return k+DA},h.prototype.writeUint8=h.prototype.writeUInt8=function(H,k,DA){return H=+H,k=k>>>0,DA||q(this,H,k,1,255,0),this[k]=H&255,k+1},h.prototype.writeUint16LE=h.prototype.writeUInt16LE=function(H,k,DA){return H=+H,k=k>>>0,DA||q(this,H,k,2,65535,0),this[k]=H&255,this[k+1]=H>>>8,k+2},h.prototype.writeUint16BE=h.prototype.writeUInt16BE=function(H,k,DA){return H=+H,k=k>>>0,DA||q(this,H,k,2,65535,0),this[k]=H>>>8,this[k+1]=H&255,k+2},h.prototype.writeUint32LE=h.prototype.writeUInt32LE=function(H,k,DA){return H=+H,k=k>>>0,DA||q(this,H,k,4,4294967295,0),this[k+3]=H>>>24,this[k+2]=H>>>16,this[k+1]=H>>>8,this[k]=H&255,k+4},h.prototype.writeUint32BE=h.prototype.writeUInt32BE=function(H,k,DA){return H=+H,k=k>>>0,DA||q(this,H,k,4,4294967295,0),this[k]=H>>>24,this[k+1]=H>>>16,this[k+2]=H>>>8,this[k+3]=H&255,k+4};function gA(aA,H,k,DA,YA){un(H,DA,YA,aA,k,7);let ue=Number(H&BigInt(4294967295));aA[k++]=ue,ue=ue>>8,aA[k++]=ue,ue=ue>>8,aA[k++]=ue,ue=ue>>8,aA[k++]=ue;let De=Number(H>>BigInt(32)&BigInt(4294967295));return aA[k++]=De,De=De>>8,aA[k++]=De,De=De>>8,aA[k++]=De,De=De>>8,aA[k++]=De,k}function yA(aA,H,k,DA,YA){un(H,DA,YA,aA,k,7);let ue=Number(H&BigInt(4294967295));aA[k+7]=ue,ue=ue>>8,aA[k+6]=ue,ue=ue>>8,aA[k+5]=ue,ue=ue>>8,aA[k+4]=ue;let De=Number(H>>BigInt(32)&BigInt(4294967295));return aA[k+3]=De,De=De>>8,aA[k+2]=De,De=De>>8,aA[k+1]=De,De=De>>8,aA[k]=De,k+8}h.prototype.writeBigUInt64LE=jA(function(H,k=0){return gA(this,H,k,BigInt(0),BigInt("0xffffffffffffffff"))}),h.prototype.writeBigUInt64BE=jA(function(H,k=0){return yA(this,H,k,BigInt(0),BigInt("0xffffffffffffffff"))}),h.prototype.writeIntLE=function(H,k,DA,YA){if(H=+H,k=k>>>0,!YA){const Mi=Math.pow(2,8*DA-1);q(this,H,k,DA,Mi-1,-Mi)}let ue=0,De=1,si=0;for(this[k]=H&255;++ue>0)-si&255;return k+DA},h.prototype.writeIntBE=function(H,k,DA,YA){if(H=+H,k=k>>>0,!YA){const Mi=Math.pow(2,8*DA-1);q(this,H,k,DA,Mi-1,-Mi)}let ue=DA-1,De=1,si=0;for(this[k+ue]=H&255;--ue>=0&&(De*=256);)H<0&&si===0&&this[k+ue+1]!==0&&(si=1),this[k+ue]=(H/De>>0)-si&255;return k+DA},h.prototype.writeInt8=function(H,k,DA){return H=+H,k=k>>>0,DA||q(this,H,k,1,127,-128),H<0&&(H=255+H+1),this[k]=H&255,k+1},h.prototype.writeInt16LE=function(H,k,DA){return H=+H,k=k>>>0,DA||q(this,H,k,2,32767,-32768),this[k]=H&255,this[k+1]=H>>>8,k+2},h.prototype.writeInt16BE=function(H,k,DA){return H=+H,k=k>>>0,DA||q(this,H,k,2,32767,-32768),this[k]=H>>>8,this[k+1]=H&255,k+2},h.prototype.writeInt32LE=function(H,k,DA){return H=+H,k=k>>>0,DA||q(this,H,k,4,2147483647,-2147483648),this[k]=H&255,this[k+1]=H>>>8,this[k+2]=H>>>16,this[k+3]=H>>>24,k+4},h.prototype.writeInt32BE=function(H,k,DA){return H=+H,k=k>>>0,DA||q(this,H,k,4,2147483647,-2147483648),H<0&&(H=4294967295+H+1),this[k]=H>>>24,this[k+1]=H>>>16,this[k+2]=H>>>8,this[k+3]=H&255,k+4},h.prototype.writeBigInt64LE=jA(function(H,k=0){return gA(this,H,k,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),h.prototype.writeBigInt64BE=jA(function(H,k=0){return yA(this,H,k,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function ge(aA,H,k,DA,YA,ue){if(k+DA>aA.length)throw new RangeError("Index out of range");if(k<0)throw new RangeError("Index out of range")}function le(aA,H,k,DA,YA){return H=+H,k=k>>>0,YA||ge(aA,H,k,4),z.write(aA,H,k,DA,23,4),k+4}h.prototype.writeFloatLE=function(H,k,DA){return le(this,H,k,!0,DA)},h.prototype.writeFloatBE=function(H,k,DA){return le(this,H,k,!1,DA)};function Qt(aA,H,k,DA,YA){return H=+H,k=k>>>0,YA||ge(aA,H,k,8),z.write(aA,H,k,DA,52,8),k+8}h.prototype.writeDoubleLE=function(H,k,DA){return Qt(this,H,k,!0,DA)},h.prototype.writeDoubleBE=function(H,k,DA){return Qt(this,H,k,!1,DA)},h.prototype.copy=function(H,k,DA,YA){if(!h.isBuffer(H))throw new TypeError("argument should be a Buffer");if(DA||(DA=0),!YA&&YA!==0&&(YA=this.length),k>=H.length&&(k=H.length),k||(k=0),YA>0&&YA=this.length)throw new RangeError("Index out of range");if(YA<0)throw new RangeError("sourceEnd out of bounds");YA>this.length&&(YA=this.length),H.length-k>>0,DA=DA===void 0?this.length:DA>>>0,H||(H=0);let ue;if(typeof H=="number")for(ue=k;ue4294967296?YA=pi(String(k)):typeof k=="bigint"&&(YA=String(k),(k>BigInt(2)**BigInt(32)||k<-(BigInt(2)**BigInt(32)))&&(YA=pi(YA)),YA+="n"),DA+=` It must be ${H}. Received ${YA}`,DA},RangeError);function pi(aA){let H="",k=aA.length;const DA=aA[0]==="-"?1:0;for(;k>=DA+4;k-=3)H=`_${aA.slice(k-3,k)}${H}`;return`${aA.slice(0,k)}${H}`}function hi(aA,H,k){sn(H,"offset"),(aA[H]===void 0||aA[H+k]===void 0)&&En(H,aA.length-(k+1))}function un(aA,H,k,DA,YA,ue){if(aA>k||aA= 0${De} and < 2${De} ** ${(ue+1)*8}${De}`:si=`>= -(2${De} ** ${(ue+1)*8-1}${De}) and < 2 ** ${(ue+1)*8-1}${De}`,new Ct.ERR_OUT_OF_RANGE("value",si,aA)}hi(DA,YA,ue)}function sn(aA,H){if(typeof aA!="number")throw new Ct.ERR_INVALID_ARG_TYPE(H,"number",aA)}function En(aA,H,k){throw Math.floor(aA)!==aA?(sn(aA,k),new Ct.ERR_OUT_OF_RANGE("offset","an integer",aA)):H<0?new Ct.ERR_BUFFER_OUT_OF_BOUNDS:new Ct.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${H}`,aA)}const bn=/[^+/0-9A-Za-z-_]/g;function go(aA){if(aA=aA.split("=")[0],aA=aA.trim().replace(bn,""),aA.length<2)return"";for(;aA.length%4!==0;)aA=aA+"=";return aA}function Ao(aA,H){H=H||1/0;let k;const DA=aA.length;let YA=null;const ue=[];for(let De=0;De55295&&k<57344){if(!YA){if(k>56319){(H-=3)>-1&&ue.push(239,191,189);continue}else if(De+1===DA){(H-=3)>-1&&ue.push(239,191,189);continue}YA=k;continue}if(k<56320){(H-=3)>-1&&ue.push(239,191,189),YA=k;continue}k=(YA-55296<<10|k-56320)+65536}else YA&&(H-=3)>-1&&ue.push(239,191,189);if(YA=null,k<128){if((H-=1)<0)break;ue.push(k)}else if(k<2048){if((H-=2)<0)break;ue.push(k>>6|192,k&63|128)}else if(k<65536){if((H-=3)<0)break;ue.push(k>>12|224,k>>6&63|128,k&63|128)}else if(k<1114112){if((H-=4)<0)break;ue.push(k>>18|240,k>>12&63|128,k>>6&63|128,k&63|128)}else throw new Error("Invalid code point")}return ue}function Kn(aA){const H=[];for(let k=0;k>8,YA=k%256,ue.push(YA),ue.push(DA);return ue}function Kt(aA){return s.toByteArray(go(aA))}function xA(aA,H,k,DA){let YA;for(YA=0;YA=H.length||YA>=aA.length);++YA)H[YA+k]=aA[YA];return YA}function vA(aA,H){return aA instanceof H||aA!=null&&aA.constructor!=null&&aA.constructor.name!=null&&aA.constructor.name===H.name}function ie(aA){return aA!==aA}const ZA=function(){const aA="0123456789abcdef",H=new Array(256);for(let k=0;k<16;++k){const DA=k*16;for(let YA=0;YA<16;++YA)H[DA+YA]=aA[k]+aA[YA]}return H}();function jA(aA){return typeof BigInt>"u"?Be:aA}function Be(){throw new Error("BigInt not supported")}},"./node_modules/css-loader/dist/runtime/api.js":_A=>{_A.exports=function(O){var d=[];return d.toString=function(){return this.map(function(z){var _="",T=typeof z[5]<"u";return z[4]&&(_+="@supports (".concat(z[4],") {")),z[2]&&(_+="@media ".concat(z[2]," {")),T&&(_+="@layer".concat(z[5].length>0?" ".concat(z[5]):""," {")),_+=O(z),T&&(_+="}"),z[2]&&(_+="}"),z[4]&&(_+="}"),_}).join("")},d.i=function(z,_,T,v,D){typeof z=="string"&&(z=[[null,z,void 0]]);var h={};if(T)for(var p=0;p"u"||(l[1]="@layer".concat(l[5].length>0?" ".concat(l[5]):""," {").concat(l[1],"}")),l[5]=D),_&&(l[2]&&(l[1]="@media ".concat(l[2]," {").concat(l[1],"}")),l[2]=_),v&&(l[4]?(l[1]="@supports (".concat(l[4],") {").concat(l[1],"}"),l[4]=v):l[4]="".concat(v)),d.push(l))}},d}},"./node_modules/css-loader/dist/runtime/getUrl.js":_A=>{_A.exports=function(O,d){return d||(d={}),O&&(O=String(O.__esModule?O.default:O),/^['"].*['"]$/.test(O)&&(O=O.slice(1,-1)),d.hash&&(O+=d.hash),/["'() \t\n]|(%20)/.test(O)||d.needQuotes?'"'.concat(O.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):O)}},"./node_modules/css-loader/dist/runtime/sourceMaps.js":_A=>{_A.exports=function(O){var d=O[1],s=O[3];if(!s)return d;if(typeof btoa=="function"){var z=btoa(unescape(encodeURIComponent(JSON.stringify(s)))),_="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(z),T="/*# ".concat(_," */");return[d].concat([T]).join(` `)}return[d].join(` `)}},"./node_modules/debug/src/browser.js":(_A,O,d)=>{O.formatArgs=z,O.save=_,O.load=T,O.useColors=s,O.storage=v(),O.destroy=(()=>{let h=!1;return()=>{h||(h=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),O.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function s(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let h;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(h=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(h[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function z(h){if(h[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+h[0]+(this.useColors?"%c ":" ")+"+"+_A.exports.humanize(this.diff),!this.useColors)return;const p="color: "+this.color;h.splice(1,0,p,"color: inherit");let m=0,u=0;h[0].replace(/%[a-zA-Z%]/g,l=>{l!=="%%"&&(m++,l==="%c"&&(u=m))}),h.splice(u,0,p)}O.log=console.debug||console.log||(()=>{});function _(h){try{h?O.storage.setItem("debug",h):O.storage.removeItem("debug")}catch{}}function T(){let h;try{h=O.storage.getItem("debug")}catch{}return!h&&typeof process<"u"&&"env"in process&&(h=xn.DEBUG),h}function v(){try{return localStorage}catch{}}_A.exports=d("./node_modules/debug/src/common.js")(O);const{formatters:D}=_A.exports;D.j=function(h){try{return JSON.stringify(h)}catch(p){return"[UnexpectedJSONParseError]: "+p.message}}},"./node_modules/debug/src/common.js":(_A,O,d)=>{function s(z){T.debug=T,T.default=T,T.coerce=u,T.disable=p,T.enable=D,T.enabled=m,T.humanize=d("./node_modules/ms/index.js"),T.destroy=l,Object.keys(z).forEach(R=>{T[R]=z[R]}),T.names=[],T.skips=[],T.formatters={};function _(R){let N=0;for(let Y=0;Y{if(TA==="%%")return"%";SA++;const hA=T.formatters[pA];if(typeof hA=="function"){const uA=j[SA];TA=hA.call(Z,uA),j.splice(SA,1),SA--}return TA}),T.formatArgs.call(Z,j),(Z.log||T.log).apply(Z,j)}return U.namespace=R,U.useColors=T.useColors(),U.color=T.selectColor(R),U.extend=v,U.destroy=T.destroy,Object.defineProperty(U,"enabled",{enumerable:!0,configurable:!1,get:()=>Y!==null?Y:(G!==T.namespaces&&(G=T.namespaces,x=T.enabled(R)),x),set:j=>{Y=j}}),typeof T.init=="function"&&T.init(U),U}function v(R,N){const Y=T(this.namespace+(typeof N>"u"?":":N)+R);return Y.log=this.log,Y}function D(R){T.save(R),T.namespaces=R,T.names=[],T.skips=[];const N=(typeof R=="string"?R:"").trim().replace(" ",",").split(",").filter(Boolean);for(const Y of N)Y[0]==="-"?T.skips.push(Y.slice(1)):T.names.push(Y)}function h(R,N){let Y=0,G=0,x=-1,U=0;for(;Y"-"+N)].join(",");return T.enable(""),R}function m(R){for(const N of T.skips)if(h(R,N))return!1;for(const N of T.names)if(h(R,N))return!0;return!1}function u(R){return R instanceof Error?R.stack||R.message:R}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return T.enable(T.load()),T}_A.exports=s},"./node_modules/deep-assign/index.js":(_A,O,d)=>{var s=d("./node_modules/is-obj/index.js"),z=Object.prototype.hasOwnProperty,_=Object.prototype.propertyIsEnumerable;function T(h){if(h==null)throw new TypeError("Sources cannot be null or undefined");return Object(h)}function v(h,p,m){var u=p[m];if(u!=null){if(z.call(h,m)&&(h[m]===void 0||h[m]===null))throw new TypeError("Cannot convert undefined or null to object ("+m+")");!z.call(h,m)||!s(u)?h[m]=u:h[m]=D(Object(h[m]),p[m])}}function D(h,p){if(h===p)return h;p=Object(p);for(var m in p)z.call(p,m)&&v(h,p,m);if(Object.getOwnPropertySymbols)for(var u=Object.getOwnPropertySymbols(p),l=0;l{_A.exports=function(O){switch(O){case"int8":return Int8Array;case"int16":return Int16Array;case"int32":return Int32Array;case"uint8":return Uint8Array;case"uint16":return Uint16Array;case"uint32":return Uint32Array;case"float32":return Float32Array;case"float64":return Float64Array;case"array":return Array;case"uint8_clamped":return Uint8ClampedArray}}},"./node_modules/global/window.js":(_A,O,d)=>{var s;typeof window<"u"?s=window:typeof d.g<"u"?s=d.g:typeof self<"u"?s=self:s={},_A.exports=s},"./node_modules/ieee754/index.js":(_A,O)=>{/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */O.read=function(d,s,z,_,T){var v,D,h=T*8-_-1,p=(1<>1,u=-7,l=z?T-1:0,R=z?-1:1,N=d[s+l];for(l+=R,v=N&(1<<-u)-1,N>>=-u,u+=h;u>0;v=v*256+d[s+l],l+=R,u-=8);for(D=v&(1<<-u)-1,v>>=-u,u+=_;u>0;D=D*256+d[s+l],l+=R,u-=8);if(v===0)v=1-m;else{if(v===p)return D?NaN:(N?-1:1)*(1/0);D=D+Math.pow(2,_),v=v-m}return(N?-1:1)*D*Math.pow(2,v-_)},O.write=function(d,s,z,_,T,v){var D,h,p,m=v*8-T-1,u=(1<>1,R=T===23?Math.pow(2,-24)-Math.pow(2,-77):0,N=_?0:v-1,Y=_?1:-1,G=s<0||s===0&&1/s<0?1:0;for(s=Math.abs(s),isNaN(s)||s===1/0?(h=isNaN(s)?1:0,D=u):(D=Math.floor(Math.log(s)/Math.LN2),s*(p=Math.pow(2,-D))<1&&(D--,p*=2),D+l>=1?s+=R/p:s+=R*Math.pow(2,1-l),s*p>=2&&(D++,p/=2),D+l>=u?(h=0,D=u):D+l>=1?(h=(s*p-1)*Math.pow(2,T),D=D+l):(h=s*Math.pow(2,l-1)*Math.pow(2,T),D=0));T>=8;d[z+N]=h&255,N+=Y,h/=256,T-=8);for(D=D<0;d[z+N]=D&255,N+=Y,D/=256,m-=8);d[z+N-Y]|=G*128}},"./node_modules/is-buffer/index.js":_A=>{/*! * Determine if an object is a Buffer * * @author Feross Aboukhadijeh * @license MIT */_A.exports=function(s){return s!=null&&(O(s)||d(s)||!!s._isBuffer)};function O(s){return!!s.constructor&&typeof s.constructor.isBuffer=="function"&&s.constructor.isBuffer(s)}function d(s){return typeof s.readFloatLE=="function"&&typeof s.slice=="function"&&O(s.slice(0,0))}},"./node_modules/is-function/index.js":_A=>{_A.exports=d;var O=Object.prototype.toString;function d(s){if(!s)return!1;var z=O.call(s);return z==="[object Function]"||typeof s=="function"&&z!=="[object RegExp]"||typeof window<"u"&&(s===window.setTimeout||s===window.alert||s===window.confirm||s===window.prompt)}},"./node_modules/is-obj/index.js":_A=>{_A.exports=function(O){var d=typeof O;return O!==null&&(d==="object"||d==="function")}},"./node_modules/layout-bmfont-text/index.js":(_A,O,d)=>{var s=d("./node_modules/word-wrapper/index.js"),z=d("./node_modules/xtend/immutable.js"),_=d("./node_modules/as-number/index.js"),T=["x","e","a","o","n","s","r","c","u","m","v","w","z"],v=["m","w"],D=["H","I","N","E","F","K","L","T","U","V","W","X","Y","Z"],h=9,p=32,m=0,u=1,l=2;_A.exports=function(UA){return new R(UA)};function R(SA){this.glyphs=[],this._measure=this.computeMetrics.bind(this),this.update(SA)}R.prototype.update=function(SA){if(SA=z({measure:this._measure},SA),this._opt=SA,this._opt.tabSize=_(this._opt.tabSize,4),!SA.font)throw new Error("must provide a valid bitmap font");var UA=this.glyphs,TA=SA.text||"",pA=SA.font;this._setupSpaceGlyphs(pA);var hA=s.lines(TA,SA),uA=SA.width||0;UA.length=0;var lA=hA.reduce(function(q,gA){return Math.max(q,gA.width,uA)},0),NA=0,HA=0,pe=_(SA.lineHeight,pA.common.lineHeight),He=pA.common.base,Oe=pe-He,ye=SA.letterSpacing||0,Ye=pe*hA.length-Oe,Et=CA(this._opt.align);HA-=Ye,this._width=lA,this._height=Ye,this._descender=pe-He,this._baseline=He,this._xHeight=x(pA),this._capHeight=j(pA),this._lineHeight=pe,this._ascender=pe-Oe-this._xHeight;var ct=this;hA.forEach(function(q,gA){for(var yA=q.start,ge=q.end,le=q.width,Qt,Ct=yA;Ct=pA||Et>=pA)break;lA=Et,NA=ct,He=pe}HA++}return He&&(NA+=He.xoffset),{start:UA,end:UA+HA,width:NA}},["width","height","descender","ascender","xHeight","baseline","capHeight","lineHeight"].forEach(N);function N(SA){Object.defineProperty(R.prototype,SA,{get:Y(SA),configurable:!0})}function Y(SA){return new Function(["return function "+SA+"() {"," return this._"+SA,"}"].join(` `))()}function G(SA,UA){if(!SA.chars||SA.chars.length===0)return null;var TA=QA(SA.chars,UA);return TA>=0?SA.chars[TA]:null}function x(SA){for(var UA=0;UA=0)return SA.chars[pA].height}return 0}function U(SA){for(var UA=0;UA=0)return SA.chars[pA]}return 0}function j(SA){for(var UA=0;UA=0)return SA.chars[pA].height}return 0}function Z(SA,UA,TA){if(!SA.kernings||SA.kernings.length===0)return 0;for(var pA=SA.kernings,hA=0;hA{var s=d("./node_modules/buffer/index.js").Buffer,z=d("./node_modules/xhr/index.js"),_=function(){},T=d("./node_modules/parse-bmfont-ascii/index.js"),v=d("./node_modules/parse-bmfont-xml/lib/browser.js"),D=d("./node_modules/parse-bmfont-binary/index.js"),h=d("./node_modules/load-bmfont/lib/is-binary.js"),p=d("./node_modules/xtend/immutable.js"),m=function(){return self.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}();_A.exports=function(R,N){N=typeof N=="function"?N:_,typeof R=="string"?R={uri:R}:R||(R={});var Y=R.binary;Y&&(R=l(R)),z(R,function(G,x,U){if(G)return N(G);if(!/^2/.test(x.statusCode))return N(new Error("http status code: "+x.statusCode));if(!U)return N(new Error("no body result"));var j=!1;if(u(U)){var Z=new Uint8Array(U);U=s.from(Z,"binary")}h(U)&&(j=!0,typeof U=="string"&&(U=s.from(U,"binary"))),j||(s.isBuffer(U)&&(U=U.toString(R.encoding)),U=U.trim());var CA;try{var QA=x.headers["content-type"];j?CA=D(U):/json/.test(QA)||U.charAt(0)==="{"?CA=JSON.parse(U):/xml/.test(QA)||U.charAt(0)==="<"?CA=v(U):CA=T(U)}catch(SA){N(new Error("error parsing font "+SA.message)),N=_}N(null,CA)})};function u(R){var N=Object.prototype.toString;return N.call(R)==="[object ArrayBuffer]"}function l(R){if(m)return p(R,{responseType:"arraybuffer"});if(typeof self.XMLHttpRequest>"u")throw new Error("your browser does not support XHR loading");var N=new self.XMLHttpRequest;return N.overrideMimeType("text/plain; charset=x-user-defined"),p({xhr:N},R)}},"./node_modules/load-bmfont/lib/is-binary.js":(_A,O,d)=>{var s=d("./node_modules/buffer/index.js").Buffer,z=d("./node_modules/buffer-equal/index.js"),_=s.from([66,77,70,3]);_A.exports=function(T){return typeof T=="string"?T.substring(0,3)==="BMF":T.length>4&&z(T.slice(0,4),_)}},"./node_modules/ms/index.js":_A=>{var O=1e3,d=O*60,s=d*60,z=s*24,_=z*7,T=z*365.25;_A.exports=function(m,u){u=u||{};var l=typeof m;if(l==="string"&&m.length>0)return v(m);if(l==="number"&&isFinite(m))return u.long?h(m):D(m);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(m))};function v(m){if(m=String(m),!(m.length>100)){var u=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(m);if(u){var l=parseFloat(u[1]),R=(u[2]||"ms").toLowerCase();switch(R){case"years":case"year":case"yrs":case"yr":case"y":return l*T;case"weeks":case"week":case"w":return l*_;case"days":case"day":case"d":return l*z;case"hours":case"hour":case"hrs":case"hr":case"h":return l*s;case"minutes":case"minute":case"mins":case"min":case"m":return l*d;case"seconds":case"second":case"secs":case"sec":case"s":return l*O;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return l;default:return}}}}function D(m){var u=Math.abs(m);return u>=z?Math.round(m/z)+"d":u>=s?Math.round(m/s)+"h":u>=d?Math.round(m/d)+"m":u>=O?Math.round(m/O)+"s":m+"ms"}function h(m){var u=Math.abs(m);return u>=z?p(m,u,z,"day"):u>=s?p(m,u,s,"hour"):u>=d?p(m,u,d,"minute"):u>=O?p(m,u,O,"second"):m+" ms"}function p(m,u,l,R){var N=u>=l*1.5;return Math.round(m/l)+" "+R+(N?"s":"")}},"./node_modules/parse-bmfont-ascii/index.js":_A=>{_A.exports=function(_){if(!_)throw new Error("no data provided");_=_.toString().trim();var T={pages:[],chars:[],kernings:[]},v=_.split(/\r\n?|\n/g);if(v.length===0)throw new Error("no data in BMFont file");for(var D=0;D{var O=[66,77,70];_A.exports=function(m){if(m.length<6)throw new Error("invalid buffer length for BMFont");var u=O.every(function(G,x){return m.readUInt8(x)===G});if(!u)throw new Error("BMFont missing BMF byte header");var l=3,R=m.readUInt8(l++);if(R>3)throw new Error("Only supports BMFont Binary v3 (BMFont App v1.10)");for(var N={kernings:[],chars:[]},Y=0;Y<5;Y++)l+=d(N,m,l);return N};function d(p,m,u){if(u>m.length-1)return 0;var l=m.readUInt8(u++),R=m.readInt32LE(u);switch(u+=4,l){case 1:p.info=s(m,u);break;case 2:p.common=z(m,u);break;case 3:p.pages=_(m,u,R);break;case 4:p.chars=T(m,u,R);break;case 5:p.kernings=v(m,u,R);break}return 5+R}function s(p,m){var u={};u.size=p.readInt16LE(m);var l=p.readUInt8(m+2);return u.smooth=l>>7&1,u.unicode=l>>6&1,u.italic=l>>5&1,u.bold=l>>4&1,l>>3&1&&(u.fixedHeight=1),u.charset=p.readUInt8(m+3)||"",u.stretchH=p.readUInt16LE(m+4),u.aa=p.readUInt8(m+6),u.padding=[p.readInt8(m+7),p.readInt8(m+8),p.readInt8(m+9),p.readInt8(m+10)],u.spacing=[p.readInt8(m+11),p.readInt8(m+12)],u.outline=p.readUInt8(m+13),u.face=h(p,m+14),u}function z(p,m){var u={};return u.lineHeight=p.readUInt16LE(m),u.base=p.readUInt16LE(m+2),u.scaleW=p.readUInt16LE(m+4),u.scaleH=p.readUInt16LE(m+6),u.pages=p.readUInt16LE(m+8),p.readUInt8(m+10),u.packed=0,u.alphaChnl=p.readUInt8(m+11),u.redChnl=p.readUInt8(m+12),u.greenChnl=p.readUInt8(m+13),u.blueChnl=p.readUInt8(m+14),u}function _(p,m,u){for(var l=[],R=D(p,m),N=R.length+1,Y=u/N,G=0;G{var s=d("./node_modules/parse-bmfont-xml/lib/parse-attribs.js"),z=d("./node_modules/xml-parse-from-string/index.js"),_={scaleh:"scaleH",scalew:"scaleW",stretchh:"stretchH",lineheight:"lineHeight",alphachnl:"alphaChnl",redchnl:"redChnl",greenchnl:"greenChnl",bluechnl:"blueChnl"};_A.exports=function(p){p=p.toString();var m=z(p),u={pages:[],chars:[],kernings:[]};["info","common"].forEach(function(U){var j=m.getElementsByTagName(U)[0];j&&(u[U]=s(T(j)))});var l=m.getElementsByTagName("pages")[0];if(!l)throw new Error("malformed file -- no element");for(var R=l.getElementsByTagName("page"),N=0;N{var O="chasrset";_A.exports=function(z){z=Object.assign({},z),O in z&&(z.charset=z[O],delete z[O]);for(var _ in z)_==="face"||_==="charset"||(_==="padding"||_==="spacing"?z[_]=d(z[_]):z[_]=parseInt(z[_],10));return z};function d(s){return s.split(",").map(function(z){return parseInt(z,10)})}},"./node_modules/parse-headers/parse-headers.js":_A=>{var O=function(s){return s.replace(/^\s+|\s+$/g,"")},d=function(s){return Object.prototype.toString.call(s)==="[object Array]"};_A.exports=function(s){if(!s)return{};for(var z={},_=O(s).split(` `),T=0;T<_.length;T++){var v=_[T],D=v.indexOf(":"),h=O(v.slice(0,D)).toLowerCase(),p=O(v.slice(D+1));typeof z[h]>"u"?z[h]=p:d(z[h])?z[h].push(p):z[h]=[z[h],p]}return z}},"./node_modules/quad-indices/index.js":(_A,O,d)=>{var s=d("./node_modules/dtype/index.js"),z=d("./node_modules/an-array/index.js"),_=d("./node_modules/is-buffer/index.js"),T=[0,2,3],v=[2,1,3];_A.exports=function(h,p){(!h||!(z(h)||_(h)))&&(p=h||{},h=null),typeof p=="number"?p={count:p}:p=p||{};for(var m=typeof p.type=="string"?p.type:"uint16",u=typeof p.count=="number"?p.count:1,l=p.start||0,R=p.clockwise!==!1?T:v,N=R[0],Y=R[1],G=R[2],x=u*6,U=h||new(s(m))(x),j=0,Z=0;j{d.r(O),d.d(O,{default:()=>Ka});var s={update:null,begin:null,loopBegin:null,changeBegin:null,change:null,changeComplete:null,loopComplete:null,complete:null,loop:1,direction:"normal",autoplay:!0,timelineOffset:0},z={duration:1e3,delay:0,endDelay:0,easing:"easeOutElastic(1, .5)",round:0},_=["translateX","translateY","translateZ","rotate","rotateX","rotateY","rotateZ","scale","scaleX","scaleY","scaleZ","skew","skewX","skewY","perspective"],T={CSS:{},springs:{}};function v(XA,me,We){return Math.min(Math.max(XA,me),We)}function D(XA,me){return XA.indexOf(me)>-1}function h(XA,me){return XA.apply(null,me)}var p=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i,m=/^rgb/,u=/^hsl/,l={arr:function(XA){return Array.isArray(XA)},obj:function(XA){return D(Object.prototype.toString.call(XA),"Object")},pth:function(XA){return l.obj(XA)&&XA.hasOwnProperty("totalLength")},svg:function(XA){return XA instanceof SVGElement},inp:function(XA){return XA instanceof HTMLInputElement},dom:function(XA){return XA.nodeType||l.svg(XA)},str:function(XA){return typeof XA=="string"},fnc:function(XA){return typeof XA=="function"},und:function(XA){return typeof XA>"u"},hex:function(XA){return p.test(XA)},rgb:function(XA){return m.test(XA)},hsl:function(XA){return u.test(XA)},col:function(XA){return l.hex(XA)||l.rgb(XA)||l.hsl(XA)},key:function(XA){return!s.hasOwnProperty(XA)&&!z.hasOwnProperty(XA)&&XA!=="targets"&&XA!=="keyframes"}},R=/\(([^)]+)\)/;function N(XA){var me=R.exec(XA);return me?me[1].split(",").map(function(We){return parseFloat(We)}):[]}function Y(XA,me){var We=N(XA),ut=v(l.und(We[0])?1:We[0],.1,100),gt=v(l.und(We[1])?100:We[1],.1,100),Gt=v(l.und(We[2])?10:We[2],.1,100),ai=v(l.und(We[3])?0:We[3],.1,100),Pi=Math.sqrt(gt/ut),xi=Gt/(2*Math.sqrt(gt*ut)),Ut=xi<1?Pi*Math.sqrt(1-xi*xi):0,Qn=1,mn=xi<1?(xi*Pi+-ai)/Ut:-ai+Pi;function Pn(Ro){var ao=me?me*Ro/1e3:Ro;return xi<1?ao=Math.exp(-ao*xi*Pi)*(Qn*Math.cos(Ut*ao)+mn*Math.sin(Ut*ao)):ao=(Qn+mn*ao)*Math.exp(-ao*Pi),Ro===0||Ro===1?Ro:1-ao}function pr(){var Ro=T.springs[XA];if(Ro)return Ro;for(var ao=1/6,Uo=0,Yr=0;;)if(Uo+=ao,Pn(Uo)===1){if(Yr++,Yr>=16)break}else Yr=0;var $r=Uo*ao*1e3;return T.springs[XA]=$r,$r}return me?Pn:pr}function G(XA,me){XA===void 0&&(XA=1),me===void 0&&(me=.5);var We=v(XA,1,10),ut=v(me,.1,2);return function(gt){return gt===0||gt===1?gt:-We*Math.pow(2,10*(gt-1))*Math.sin((gt-1-ut/(Math.PI*2)*Math.asin(1/We))*(Math.PI*2)/ut)}}function x(XA){return XA===void 0&&(XA=10),function(me){return Math.round(me*XA)*(1/XA)}}var U=function(){var XA=11,me=1/(XA-1);function We(Qn,mn){return 1-3*mn+3*Qn}function ut(Qn,mn){return 3*mn-6*Qn}function gt(Qn){return 3*Qn}function Gt(Qn,mn,Pn){return((We(mn,Pn)*Qn+ut(mn,Pn))*Qn+gt(mn))*Qn}function ai(Qn,mn,Pn){return 3*We(mn,Pn)*Qn*Qn+2*ut(mn,Pn)*Qn+gt(mn)}function Pi(Qn,mn,Pn,pr,Ro){var ao,Uo,Yr=0;do Uo=mn+(Pn-mn)/2,ao=Gt(Uo,pr,Ro)-Qn,ao>0?Pn=Uo:mn=Uo;while(Math.abs(ao)>1e-7&&++Yr<10);return Uo}function xi(Qn,mn,Pn,pr){for(var Ro=0;Ro<4;++Ro){var ao=ai(mn,Pn,pr);if(ao===0)return mn;var Uo=Gt(mn,Pn,pr)-Qn;mn-=Uo/ao}return mn}function Ut(Qn,mn,Pn,pr){if(!(0<=Qn&&Qn<=1&&0<=Pn&&Pn<=1))return;var Ro=new Float32Array(XA);if(Qn!==mn||Pn!==pr)for(var ao=0;ao=.001?xi(Yr,og,Qn,Pn):Ur===0?og:Pi(Yr,$r,$r+me,Qn,Pn)}return function(Yr){return Qn===mn&&Pn===pr||Yr===0||Yr===1?Yr:Gt(Uo(Yr),mn,pr)}}return Ut}(),j=function(){var XA=["Quad","Cubic","Quart","Quint","Sine","Expo","Circ","Back","Elastic"],me={In:[[.55,.085,.68,.53],[.55,.055,.675,.19],[.895,.03,.685,.22],[.755,.05,.855,.06],[.47,0,.745,.715],[.95,.05,.795,.035],[.6,.04,.98,.335],[.6,-.28,.735,.045],G],Out:[[.25,.46,.45,.94],[.215,.61,.355,1],[.165,.84,.44,1],[.23,1,.32,1],[.39,.575,.565,1],[.19,1,.22,1],[.075,.82,.165,1],[.175,.885,.32,1.275],function(ai,Pi){return function(xi){return 1-G(ai,Pi)(1-xi)}}],InOut:[[.455,.03,.515,.955],[.645,.045,.355,1],[.77,0,.175,1],[.86,0,.07,1],[.445,.05,.55,.95],[1,0,0,1],[.785,.135,.15,.86],[.68,-.55,.265,1.55],function(ai,Pi){return function(xi){return xi<.5?G(ai,Pi)(xi*2)/2:1-G(ai,Pi)(xi*-2+2)/2}}]},We={linear:[.25,.25,.75,.75]};for(var ut in me)for(var gt=0,Gt=me[ut].length;gt=2?arguments[1]:void 0,Gt=0;Gt1&&(Ro-=1),Ro<.16666666666666666?Pn+(pr-Pn)*6*Ro:Ro<.5?pr:Ro<.6666666666666666?Pn+(pr-Pn)*(.6666666666666666-Ro)*6:Pn}var Pi,xi,Ut;if(ut==0)Pi=xi=Ut=gt;else{var Qn=gt<.5?gt*(1+ut):gt+ut-gt*ut,mn=2*gt-Qn;Pi=ai(mn,Qn,We+.3333333333333333),xi=ai(mn,Qn,We),Ut=ai(mn,Qn,We-.3333333333333333)}return"rgba("+Pi*255+","+xi*255+","+Ut*255+","+Gt+")"}function ct(XA){if(l.rgb(XA))return HA(XA);if(l.hex(XA))return Oe(XA);if(l.hsl(XA))return Et(XA)}var q=/([\+\-]?[0-9#\.]+)(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/;function gA(XA){var me=q.exec(XA);if(me)return me[2]}function yA(XA){if(D(XA,"translate")||XA==="perspective")return"px";if(D(XA,"rotate")||D(XA,"skew"))return"deg"}function ge(XA,me){return l.fnc(XA)?XA(me.target,me.id,me.total):XA}function le(XA,me){return XA.getAttribute(me)}function Qt(XA,me,We){var ut=gA(me);if(pA([We,"deg","rad","turn"],ut))return me;var gt=T.CSS[me+We];if(!l.und(gt))return gt;var Gt=100,ai=document.createElement(XA.tagName),Pi=XA.parentNode&&XA.parentNode!==document?XA.parentNode:document.body;Pi.appendChild(ai),ai.style.position="absolute",ai.style.width=Gt+We;var xi=Gt/ai.offsetWidth;Pi.removeChild(ai);var Ut=xi*parseFloat(me);return T.CSS[me+We]=Ut,Ut}function Ct(XA,me,We){if(me in XA.style){var ut=me.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),gt=XA.style[me]||getComputedStyle(XA).getPropertyValue(ut)||"0";return We?Qt(XA,gt,We):gt}}function bt(XA,me){if(l.dom(XA)&&!l.inp(XA)&&(le(XA,me)||l.svg(XA)&&XA[me]))return"attribute";if(l.dom(XA)&&pA(_,me))return"transform";if(l.dom(XA)&&me!=="transform"&&Ct(XA,me))return"css";if(XA[me]!=null)return"object"}var pi=/(\w+)\(([^)]*)\)/g;function hi(XA){if(l.dom(XA)){for(var me=XA.style.transform||"",We=new Map,ut;ut=pi.exec(me);)We.set(ut[1],ut[2]);return We}}function un(XA,me,We,ut){var gt=D(me,"scale")?1:0+yA(me),Gt=hi(XA).get(me)||gt;return We&&(We.transforms.list.set(me,Gt),We.transforms.last=me),ut?Qt(XA,Gt,ut):Gt}function sn(XA,me,We,ut){switch(bt(XA,me)){case"transform":return un(XA,me,ut,We);case"css":return Ct(XA,me,We);case"attribute":return le(XA,me);default:return XA[me]||0}}var En=/^(\*=|\+=|-=)/;function bn(XA,me){var We=En.exec(XA);if(!We)return XA;var ut=gA(XA)||0,gt=parseFloat(me),Gt=parseFloat(XA.replace(We[0],""));switch(We[0][0]){case"+":return gt+Gt+ut;case"-":return gt-Gt+ut;case"*":return gt*Gt+ut}}var go=/\s/g;function Ao(XA,me){if(l.col(XA))return ct(XA);var We=gA(XA),ut=We?XA.substr(0,XA.length-We.length):XA;return me&&!go.test(XA)?ut+me:ut}function Kn(XA,me){return Math.sqrt(Math.pow(me.x-XA.x,2)+Math.pow(me.y-XA.y,2))}function _o(XA){return Math.PI*2*le(XA,"r")}function Kt(XA){return le(XA,"width")*2+le(XA,"height")*2}function xA(XA){return Kn({x:le(XA,"x1"),y:le(XA,"y1")},{x:le(XA,"x2"),y:le(XA,"y2")})}function vA(XA){for(var me=XA.points,We=0,ut,gt=0;gt0&&(We+=Kn(ut,Gt)),ut=Gt}return We}function ie(XA){var me=XA.points;return vA(XA)+Kn(me.getItem(me.numberOfItems-1),me.getItem(0))}function ZA(XA){if(XA.getTotalLength)return XA.getTotalLength();switch(XA.tagName.toLowerCase()){case"circle":return _o(XA);case"rect":return Kt(XA);case"line":return xA(XA);case"polyline":return vA(XA);case"polygon":return ie(XA)}}function jA(XA){var me=ZA(XA);return XA.setAttribute("stroke-dasharray",me),me}function Be(XA){for(var me=XA.parentNode;l.svg(me)&&(me=me.parentNode,!!l.svg(me.parentNode)););return me}function aA(XA,me){var We=me||{},ut=We.el||Be(XA),gt=ut.getBoundingClientRect(),Gt=le(ut,"viewBox"),ai=gt.width,Pi=gt.height,xi=We.viewBox||(Gt?Gt.split(" "):[0,0,ai,Pi]);return{el:ut,viewBox:xi,x:xi[0]/1,y:xi[1]/1,w:ai/xi[2],h:Pi/xi[3]}}function H(XA,me){var We=l.str(XA)?CA(XA)[0]:XA,ut=me||100;return function(gt){return{property:gt,el:We,svg:aA(We),totalLength:ZA(We)*(ut/100)}}}function k(XA,me){function We(Pi){Pi===void 0&&(Pi=0);var xi=me+Pi>=1?me+Pi:0;return XA.el.getPointAtLength(xi)}var ut=aA(XA.el,XA.svg),gt=We(),Gt=We(-1),ai=We(1);switch(XA.property){case"x":return(gt.x-ut.x)*ut.w;case"y":return(gt.y-ut.y)*ut.h;case"angle":return Math.atan2(ai.y-Gt.y,ai.x-Gt.x)*180/Math.PI}}var DA=/-?\d*\.?\d+/g;function YA(XA,me){var We=Ao(l.pth(XA)?XA.totalLength:XA,me)+"";return{original:We,numbers:We.match(DA)?We.match(DA).map(Number):[0],strings:l.str(XA)||me?We.split(DA):[]}}function ue(XA){var me=XA?UA(l.arr(XA)?XA.map(TA):TA(XA)):[];return SA(me,function(We,ut,gt){return gt.indexOf(We)===ut})}function De(XA){var me=ue(XA);return me.map(function(We,ut){return{target:We,id:ut,total:me.length,transforms:{list:hi(We)}}})}var si=/^spring/;function Mi(XA,me){var We=hA(me);if(si.test(We.easing)&&(We.duration=Y(We.easing)),l.arr(XA)){var ut=XA.length,gt=ut===2&&!l.obj(XA[0]);gt?XA={value:XA}:l.fnc(me.duration)||(We.duration=me.duration/ut)}var Gt=l.arr(XA)?XA:[XA];return Gt.map(function(ai,Pi){var xi=l.obj(ai)&&!l.pth(ai)?ai:{value:ai};return l.und(xi.delay)&&(xi.delay=Pi?0:me.delay),l.und(xi.endDelay)&&(xi.endDelay=Pi===Gt.length-1?me.endDelay:0),xi}).map(function(ai){return lA(ai,We)})}function Si(XA){for(var me=SA(UA(XA.map(function(Gt){return Object.keys(Gt)})),function(Gt){return l.key(Gt)}).reduce(function(Gt,ai){return Gt.indexOf(ai)<0&&Gt.push(ai),Gt},[]),We={},ut=function(Gt){var ai=me[Gt];We[ai]=XA.map(function(Pi){var xi={};for(var Ut in Pi)l.key(Ut)?Ut==ai&&(xi.value=Pi[Ut]):xi[Ut]=Pi[Ut];return xi})},gt=0;gt-1&&(ps.splice(ai,1),ut=ps.length)}gt++}XA()}else os=cancelAnimationFrame(os)}return XA}();function Kg(){if(document.hidden){for(var XA=0,me=ps.length;XA2||(hg=Math.round(hg*sa)/sa)),ga.push(hg)}var lg=ra.length;if(!lg)Zg=ga[0];else{Zg=ra[0];for(var rg=0;rg0&&(Ut.began=!0,Uo("begin"),Uo("loopBegin")),Ur<=Ys&&Ut.currentTime!==0&&ao(0),(Ur>=og&&Ut.currentTime!==Go||!Go)&&ao(Go),Ur>Ys&&Ur=Go&&(We=0,Yr(),Ut.remaining?(me=ut,Uo("loopComplete"),Uo("loopBegin"),Ut.direction==="alternate"&&Qn()):(Ut.paused=!0,Ut.completed||(Ut.completed=!0,Uo("loopComplete"),Uo("complete"),"Promise"in window&&(ai(),xi=Pi()))))}return Ut.reset=function(){var On=Ut.direction;Ut.passThrough=!1,Ut.currentTime=0,Ut.progress=0,Ut.paused=!0,Ut.began=!1,Ut.changeBegan=!1,Ut.completed=!1,Ut.changeCompleted=!1,Ut.reversePlayback=!1,Ut.reversed=On==="reverse",Ut.remaining=Ut.loop,gt=Ut.children,Gt=gt.length;for(var Go=Gt;Go--;)Ut.children[Go].reset();(Ut.reversed&&Ut.loop!==!0||On==="alternate"&&Ut.loop===1)&&Ut.remaining++,ao(0)},Ut.set=function(On,Go){return hr(On,Go),Ut},Ut.tick=function(On){ut=On,me||(me=ut),$r((ut+(We-me))*lr.speed)},Ut.seek=function(On){$r(mn(On))},Ut.pause=function(){Ut.paused=!0,Pn()},Ut.play=function(){Ut.paused&&(Ut.paused=!1,ps.push(Ut),Pn(),os||Da())},Ut.reverse=function(){Qn(),Pn()},Ut.restart=function(){Ut.reset(),Ut.play()},Ut.finished=xi,Ut.reset(),Ut.autoplay&&Ut.play(),Ut}function Nr(XA,me){for(var We=me.length;We--;)pA(XA,me[We].animatable.target)&&me.splice(We,1)}function ya(XA){for(var me=ue(XA),We=ps.length;We--;){var ut=ps[We],gt=ut.animations,Gt=ut.children;Nr(me,gt);for(var ai=Gt.length;ai--;){var Pi=Gt[ai],xi=Pi.animations;Nr(me,xi),!xi.length&&!Pi.children.length&&Gt.splice(ai,1)}!gt.length&&!Gt.length&&ut.pause()}}function oa(XA,me){me===void 0&&(me={});var We=me.direction||"normal",ut=me.easing?Z(me.easing):null,gt=me.grid,Gt=me.axis,ai=me.from||0,Pi=ai==="first",xi=ai==="center",Ut=ai==="last",Qn=l.arr(XA),mn=parseFloat(Qn?XA[0]:XA),Pn=Qn?parseFloat(XA[1]):0,pr=gA(Qn?XA[1]:XA)||0,Ro=me.start||0+(Qn?mn:0),ao=[],Uo=0;return function(Yr,$r,On){if(Pi&&(ai=0),xi&&(ai=(On-1)/2),Ut&&(ai=On-1),!ao.length){for(var Go=0;Go-1&&ps.splice(gt,1);function ai(Pn){Pn.passThrough=!0}for(var Pi=0;Pi{var s=d("./node_modules/layout-bmfont-text/index.js"),z=d("./node_modules/quad-indices/index.js"),_=d("./node_modules/three-bmfont-text/lib/vertices.js"),T=d("./node_modules/three-bmfont-text/lib/utils.js");_A.exports=function(h){return new v(h)};class v extends THREE.BufferGeometry{constructor(h){super(),typeof h=="string"&&(h={text:h}),this._opt=Object.assign({},h),h&&this.update(h)}update(h){if(typeof h=="string"&&(h={text:h}),h=Object.assign({},this._opt,h),!h.font)throw new TypeError("must specify a { font } in options");this.layout=s(h);var p=h.flipY!==!1,m=h.font,u=m.common.scaleW,l=m.common.scaleH,R=this.layout.glyphs.filter(function(U){var j=U.data;return j.width*j.height>0});this.visibleGlyphs=R;var N=_.positions(R),Y=_.uvs(R,u,l,p),G=z([],{clockwise:!0,type:"uint16",count:R.length});if(this.setIndex(G),this.setAttribute("position",new THREE.BufferAttribute(N,2)),this.setAttribute("uv",new THREE.BufferAttribute(Y,2)),!h.multipage&&"page"in this.attributes)this.removeAttribute("page");else if(h.multipage){var x=_.pages(R);this.setAttribute("page",new THREE.BufferAttribute(x,1))}this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere()}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new THREE.Sphere);var h=this.attributes.position.array,p=this.attributes.position.itemSize;if(!h||!p||h.length<2){this.boundingSphere.radius=0,this.boundingSphere.center.set(0,0,0);return}T.computeSphere(h,this.boundingSphere),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.')}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new THREE.Box3);var h=this.boundingBox,p=this.attributes.position.array,m=this.attributes.position.itemSize;if(!p||!m||p.length<2){h.makeEmpty();return}T.computeBox(p,h)}}},"./node_modules/three-bmfont-text/lib/utils.js":_A=>{var O=2,d={min:[0,0],max:[0,0]};function s(z){var _=z.length/O;d.min[0]=z[0],d.min[1]=z[1],d.max[0]=z[0],d.max[1]=z[1];for(var T=0;T<_;T++){var v=z[T*O+0],D=z[T*O+1];d.min[0]=Math.min(v,d.min[0]),d.min[1]=Math.min(D,d.min[1]),d.max[0]=Math.max(v,d.max[0]),d.max[1]=Math.max(D,d.max[1])}}_A.exports.computeBox=function(z,_){s(z),_.min.set(d.min[0],d.min[1],0),_.max.set(d.max[0],d.max[1],0)},_A.exports.computeSphere=function(z,_){s(z);var T=d.min[0],v=d.min[1],D=d.max[0],h=d.max[1],p=D-T,m=h-v,u=Math.sqrt(p*p+m*m);_.center.set(T+p/2,v+m/2,0),_.radius=u/2}},"./node_modules/three-bmfont-text/lib/vertices.js":_A=>{_A.exports.pages=function(d){var s=new Float32Array(d.length*4*1),z=0;return d.forEach(function(_){var T=_.data.page||0;s[z++]=T,s[z++]=T,s[z++]=T,s[z++]=T}),s},_A.exports.uvs=function(d,s,z,_){var T=new Float32Array(d.length*4*2),v=0;return d.forEach(function(D){var h=D.data,p=h.x+h.width,m=h.y+h.height,u=h.x/s,l=h.y/z,R=p/s,N=m/z;_&&(l=(z-h.y)/z,N=(z-m)/z),T[v++]=u,T[v++]=l,T[v++]=u,T[v++]=N,T[v++]=R,T[v++]=N,T[v++]=R,T[v++]=l}),T},_A.exports.positions=function(d){var s=new Float32Array(d.length*4*2),z=0;return d.forEach(function(_){var T=_.data,v=_.position[0]+T.xoffset,D=_.position[1]+T.yoffset,h=T.width,p=T.height;s[z++]=v,s[z++]=D,s[z++]=v,s[z++]=D+p,s[z++]=v+h,s[z++]=D+p,s[z++]=v+h,s[z++]=D}),s}},"./node_modules/word-wrapper/index.js":_A=>{var O=/\n/,d=` `,s=/\s/;_A.exports=function(h,p){var m=_A.exports.lines(h,p);return m.map(function(u){return h.substring(u.start,u.end)}).join(` `)},_A.exports.lines=function(p,m){if(m=m||{},m.width===0&&m.mode!=="nowrap")return[];p=p||"";var u=typeof m.width=="number"?m.width:Number.MAX_VALUE,l=Math.max(0,m.start||0),R=typeof m.end=="number"?m.end:p.length,N=m.mode,Y=m.measure||D;return N==="pre"?T(Y,p,l,R,u):v(Y,p,l,R,u,N)};function z(h,p,m,u){var l=h.indexOf(p,m);return l===-1||l>u?u:l}function _(h){return s.test(h)}function T(h,p,m,u,l){for(var R=[],N=m,Y=m;Ym&&!_(p.charAt(U));)U--;if(U===m)j>m+d.length&&j--,U=j;else for(j=U;U>m&&_(p.charAt(U-d.length));)U--}if(U>=m){var Z=h(p,m,U,Y);N.push(Z)}m=j}return N}function D(h,p,m,u){var l=Math.min(u,m-p);return{start:p,end:p+l}}},"./node_modules/xhr/index.js":(_A,O,d)=>{var s=d("./node_modules/global/window.js"),z=d("./node_modules/is-function/index.js"),_=d("./node_modules/parse-headers/parse-headers.js"),T=d("./node_modules/xtend/immutable.js");_A.exports=p,_A.exports.default=p,p.XMLHttpRequest=s.XMLHttpRequest||l,p.XDomainRequest="withCredentials"in new p.XMLHttpRequest?p.XMLHttpRequest:s.XDomainRequest,v(["get","put","post","patch","head","delete"],function(R){p[R==="delete"?"del":R]=function(N,Y,G){return Y=h(N,Y,G),Y.method=R.toUpperCase(),m(Y)}});function v(R,N){for(var Y=0;Y"u")throw new Error("callback argument missing");var N=!1,Y=function(pe,He,Oe){N||(N=!0,R.callback(pe,He,Oe))};function G(){Z.readyState===4&&setTimeout(j,0)}function x(){var HA=void 0;if(Z.response?HA=Z.response:HA=Z.responseText||u(Z),uA)try{HA=JSON.parse(HA)}catch{}return HA}function U(HA){return clearTimeout(lA),HA instanceof Error||(HA=new Error(""+(HA||"Unknown XMLHttpRequest Error"))),HA.statusCode=0,Y(HA,NA)}function j(){if(!QA){var HA;clearTimeout(lA),R.useXDR&&Z.status===void 0?HA=200:HA=Z.status===1223?204:Z.status;var pe=NA,He=null;return HA!==0?(pe={body:x(),statusCode:HA,method:UA,headers:{},url:SA,rawRequest:Z},Z.getAllResponseHeaders&&(pe.headers=_(Z.getAllResponseHeaders()))):He=new Error("Internal XMLHttpRequest Error"),Y(He,pe,pe.body)}}var Z=R.xhr||null;Z||(R.cors||R.useXDR?Z=new p.XDomainRequest:Z=new p.XMLHttpRequest);var CA,QA,SA=Z.url=R.uri||R.url,UA=Z.method=R.method||"GET",TA=R.body||R.data,pA=Z.headers=R.headers||{},hA=!!R.sync,uA=!1,lA,NA={body:void 0,headers:{},statusCode:0,method:UA,url:SA,rawRequest:Z};if("json"in R&&R.json!==!1&&(uA=!0,pA.accept||pA.Accept||(pA.Accept="application/json"),UA!=="GET"&&UA!=="HEAD"&&(pA["content-type"]||pA["Content-Type"]||(pA["Content-Type"]="application/json"),TA=JSON.stringify(R.json===!0?TA:R.json))),Z.onreadystatechange=G,Z.onload=j,Z.onerror=U,Z.onprogress=function(){},Z.onabort=function(){QA=!0},Z.ontimeout=U,Z.open(UA,SA,!hA,R.username,R.password),hA||(Z.withCredentials=!!R.withCredentials),!hA&&R.timeout>0&&(lA=setTimeout(function(){if(!QA){QA=!0,Z.abort("timeout");var HA=new Error("XMLHttpRequest timeout");HA.code="ETIMEDOUT",U(HA)}},R.timeout)),Z.setRequestHeader)for(CA in pA)pA.hasOwnProperty(CA)&&Z.setRequestHeader(CA,pA[CA]);else if(R.headers&&!D(R.headers))throw new Error("Headers cannot be set on an XDomainRequest object");return"responseType"in R&&(Z.responseType=R.responseType),"beforeSend"in R&&typeof R.beforeSend=="function"&&R.beforeSend(Z),Z.send(TA||null),Z}function u(R){try{if(R.responseType==="document")return R.responseXML;var N=R.responseXML&&R.responseXML.documentElement.nodeName==="parsererror";if(R.responseType===""&&!N)return R.responseXML}catch{}return null}function l(){}},"./node_modules/xml-parse-from-string/index.js":_A=>{_A.exports=function(){return typeof self.DOMParser<"u"?function(d){var s=new self.DOMParser;return s.parseFromString(d,"application/xml")}:typeof self.ActiveXObject<"u"&&new self.ActiveXObject("Microsoft.XMLDOM")?function(d){var s=new self.ActiveXObject("Microsoft.XMLDOM");return s.async="false",s.loadXML(d),s}:function(d){var s=document.createElement("div");return s.innerHTML=d,s}}()},"./node_modules/xtend/immutable.js":_A=>{_A.exports=d;var O=Object.prototype.hasOwnProperty;function d(){for(var s={},z=0;z{d.r(O),d.d(O,{Component:()=>v});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=d("./src/utils/index.js"),T=_.debug("components:anchored:warn"),v=(0,z.registerComponent)("anchored",{schema:{persistent:{default:!1}},init:function(){var h=this.el.sceneEl,p=h.getAttribute("webxr"),m=p.optionalFeatures;m.indexOf("anchors")===-1&&(m.push("anchors"),this.el.sceneEl.setAttribute("webxr",p)),this.auxQuaternion=new s.Quaternion,this.onEnterVR=this.onEnterVR.bind(this),this.el.sceneEl.addEventListener("enter-vr",this.onEnterVR)},onEnterVR:function(){this.anchor=void 0,this.requestPersistentAnchorPending=this.data.persistent,this.requestAnchorPending=!this.data.persistent},tick:function(){var h=this.el.sceneEl,p=h.renderer.xr,m,u,l,R=this.el.object3D;!h.is("ar-mode")&&!h.is("vr-mode")||(!this.anchor&&this.requestPersistentAnchorPending&&this.restorePersistentAnchor(),!this.anchor&&this.requestAnchorPending&&this.createAnchor(),this.anchor&&(m=h.frame,u=p.getReferenceSpace(),l=m.getPose(this.anchor.anchorSpace,u),R.position.copy(l.transform.position),R.quaternion.copy(l.transform.orientation)))},createAnchor:async function(p,m){var u=this.el.sceneEl,l=u.renderer.xr,R,N,Y,G,x=this.el.object3D;if(p=p||x.position,m=m||this.auxQuaternion.setFromEuler(x.rotation),!D(u)){T("This browser doesn't support the WebXR anchors module");return}this.anchor&&this.deleteAnchor(),R=u.frame,N=l.getReferenceSpace(),Y=new XRRigidTransform({x:p.x,y:p.y,z:p.z},{x:m.x,y:m.y,z:m.z,w:m.w}),this.requestAnchorPending=!1,G=await R.createAnchor(Y,N),this.data.persistent&&(this.el.id?(this.persistentHandle=await G.requestPersistentHandle(),localStorage.setItem(this.el.id,this.persistentHandle)):T("The anchor won't be persisted because the entity has no assigned id.")),u.object3D.attach(this.el.object3D),this.anchor=G},restorePersistentAnchor:async function(){var p=this.el.sceneEl.renderer.xr,m=p.getSession(),u=m.persistentAnchors,l;if(this.requestPersistentAnchorPending=!1,!this.el.id){T("The entity associated to the persistent anchor cannot be retrieved because it doesn't have an assigned id."),this.requestAnchorPending=!0;return}if(u){l=localStorage.getItem(this.el.id);for(var R=0;R{d.r(O),d.d(O,{Component:()=>x});var s=d("./node_modules/three/build/three.core.js"),z=d("./node_modules/super-animejs/lib/anime.es.js"),_=d("./src/core/component.js"),T=d("./src/utils/index.js"),v=new s.Color,D=new s.Color,h=T.entity.getComponentProperty,p=T.entity.setComponentProperty,m={},u="color",l="position",R="rotation",N="scale",Y="components",G="object3D",x=(0,_.registerComponent)("animation",{schema:{autoplay:{default:!0},delay:{default:0},dir:{default:""},dur:{default:1e3},easing:{default:"easeInQuad"},elasticity:{default:400},enabled:{default:!0},from:{default:""},loop:{default:0,parse:function(pA){return pA===!0||pA==="true"?!0:pA===!1||pA==="false"?!1:parseInt(pA,10)}},property:{default:""},startEvents:{type:"array"},pauseEvents:{type:"array"},resumeEvents:{type:"array"},round:{default:!1},to:{default:""},type:{default:""},isRawProperty:{default:!1}},multiple:!0,init:function(){var pA=this;this.eventDetail={name:this.attrName},this.time=0,this.animation=null,this.animationIsPlaying=!1,this.onStartEvent=this.onStartEvent.bind(this),this.beginAnimation=this.beginAnimation.bind(this),this.pauseAnimation=this.pauseAnimation.bind(this),this.resumeAnimation=this.resumeAnimation.bind(this),this.fromColor={},this.toColor={},this.targets={},this.targetsArray=[],this.updateConfigForDefault=this.updateConfigForDefault.bind(this),this.updateConfigForRawColor=this.updateConfigForRawColor.bind(this),this.config={complete:function(){pA.animationIsPlaying=!1,pA.el.emit("animationcomplete",pA.eventDetail,!1),pA.id&&pA.el.emit("animationcomplete__"+pA.id,pA.eventDetail,!1)}}},update:function(pA){var hA=this.config,uA=this.data;this.animationIsPlaying=!1,this.data.enabled&&uA.property&&(hA.autoplay=!1,hA.direction=uA.dir,hA.duration=uA.dur,hA.easing=uA.easing,hA.elasticity=uA.elasticity,hA.loop=uA.loop,hA.round=uA.round,this.createAndStartAnimation())},tick:function(pA,hA){this.animationIsPlaying&&(this.time+=hA,this.animation.tick(this.time))},remove:function(){this.pauseAnimation(),this.removeEventListeners()},pause:function(){this.paused=!0,this.pausedWasPlaying=this.animationIsPlaying,this.pauseAnimation(),this.removeEventListeners()},play:function(){this.paused&&(this.paused=!1,this.addEventListeners(),this.pausedWasPlaying&&(this.resumeAnimation(),this.pausedWasPlaying=!1))},createAndStartAnimation:function(){var pA=this.data;if(this.updateConfig(),this.animationIsPlaying=!1,this.animation=(0,z.default)(this.config),this.animation.began=!0,this.removeEventListeners(),this.addEventListeners(),!(!pA.autoplay||pA.startEvents&&pA.startEvents.length)){if(pA.delay){setTimeout(this.beginAnimation,pA.delay);return}this.beginAnimation()}},beginAnimation:function(){this.updateConfig(),this.animation.began=!0,this.time=0,this.animationIsPlaying=!0,this.stopRelatedAnimations(),this.el.emit("animationbegin",this.eventDetail,!1)},pauseAnimation:function(){this.animationIsPlaying=!1},resumeAnimation:function(){this.animationIsPlaying=!0},onStartEvent:function(){if(this.data.enabled){if(this.updateConfig(),this.animation&&this.animation.pause(),this.animation=(0,z.default)(this.config),this.data.delay){setTimeout(this.beginAnimation,this.data.delay);return}this.beginAnimation()}},updateConfigForRawColor:function(){var pA=this.config,hA=this.data,uA=this.el,lA,NA,HA;if(!this.waitComponentInitRawProperty(this.updateConfigForRawColor)){lA=hA.from===""?QA(uA,hA.property):hA.from,HA=hA.to,this.setColorConfig(lA,HA),lA=this.fromColor,HA=this.toColor,this.targetsArray.length=0,this.targetsArray.push(lA),pA.targets=this.targetsArray;for(NA in HA)pA[NA]=HA[NA];pA.update=function(){var pe={};return function(He){var Oe;Oe=He.animatables[0].target,!(Oe.r===pe.r&&Oe.g===pe.g&&Oe.b===pe.b)&&SA(uA,hA.property,Oe,hA.type)}}()}},updateConfigForDefault:function(){var pA=this.config,hA=this.data,uA=this.el,lA,NA,HA,pe;this.waitComponentInitRawProperty(this.updateConfigForDefault)||(hA.from===""?lA=TA(hA)?QA(uA,hA.property):h(uA,hA.property):lA=hA.from,pe=hA.to,HA=!isNaN(lA||pe),HA?(lA=parseFloat(lA),pe=parseFloat(pe)):(lA=lA&&lA.toString(),pe=pe&&pe.toString()),NA=hA.to==="true"||hA.to==="false"||hA.to===!0||hA.to===!1,NA&&(lA=hA.from==="true"||hA.from===!0?1:0,pe=hA.to==="true"||hA.to===!0?1:0),this.targets.aframeProperty=lA,pA.targets=this.targets,pA.aframeProperty=pe,pA.update=function(){var He;return function(Oe){var ye;ye=Oe.animatables[0].target.aframeProperty,ye!==He&&(He=ye,NA&&(ye=ye>=1),TA(hA)?SA(uA,hA.property,ye,hA.type):p(uA,hA.property,ye))}}())},updateConfigForVector:function(){var pA=this.config,hA=this.data,uA=this.el,lA,NA,HA,pe=UA(hA.property),He=pe[0]==="object3D"?pe[1]:pe[0];NA=hA.from!==""?T.coordinates.parse(hA.from):h(uA,He),HA=T.coordinates.parse(hA.to),He===R&&(j(NA),j(HA)),this.targetsArray.length=0,this.targetsArray.push(NA),pA.targets=this.targetsArray;for(lA in HA)pA[lA]=HA[lA];if(He===l||He===R||He===N){pA.update=function(){var Oe={};return function(ye){var Ye=ye.animatables[0].target;Ye.x===Oe.x&&Ye.y===Oe.y&&Ye.z===Oe.z||(Oe.x=Ye.x,Oe.y=Ye.y,Oe.z=Ye.z,uA.object3D[He].set(Ye.x,Ye.y,Ye.z))}}();return}pA.update=function(){var Oe={};return function(ye){var Ye=ye.animatables[0].target;Ye.x===Oe.x&&Ye.y===Oe.y&&Ye.z===Oe.z||(Oe.x=Ye.x,Oe.y=Ye.y,Oe.z=Ye.z,p(uA,hA.property,Ye))}}()},updateConfig:function(){var pA;pA=U(this.el,this.data.property),TA(this.data)&&this.data.type===u?this.updateConfigForRawColor():pA==="vec2"||pA==="vec3"||pA==="vec4"?this.updateConfigForVector():this.updateConfigForDefault()},waitComponentInitRawProperty:function(pA){var hA,uA=this.data,lA=this.el,NA=this;return uA.from!==""||!uA.property.startsWith(Y)||(hA=UA(uA.property)[1],lA.components[hA])?!1:(lA.addEventListener("componentinitialized",function HA(pe){pe.detail.name===hA&&(pA(),NA.animation=(0,z.default)(NA.config),lA.removeEventListener("componentinitialized",HA))}),!0)},stopRelatedAnimations:function(){var pA,hA;for(hA in this.el.components)pA=this.el.components[hA],hA!==this.attrName&&pA.name==="animation"&&pA.animationIsPlaying&&pA.data.property===this.data.property&&(pA.animationIsPlaying=!1)},addEventListeners:function(){var pA=this.data,hA=this.el;Z(hA,pA.startEvents,this.onStartEvent),Z(hA,pA.pauseEvents,this.pauseAnimation),Z(hA,pA.resumeEvents,this.resumeAnimation)},removeEventListeners:function(){var pA=this.data,hA=this.el;CA(hA,pA.startEvents,this.onStartEvent),CA(hA,pA.pauseEvents,this.pauseAnimation),CA(hA,pA.resumeEvents,this.resumeAnimation)},setColorConfig:function(pA,hA){v.set(pA),D.set(hA),pA=this.fromColor,hA=this.toColor,pA.r=v.r,pA.g=v.g,pA.b=v.b,hA.r=D.r,hA.g=D.g,hA.b=D.b}});function U(pA,hA){var uA,lA,NA,HA;return NA=hA.split("."),NA[0]==="object3D"&&!NA[2]&&(NA[1]==="position"||NA[1]==="rotation"||NA[1]==="scale")?"vec3":(lA=NA[0],HA=NA[1],uA=pA.components[lA]||_.components[lA],!uA||HA&&!uA.schema[HA]?null:HA?uA.schema[HA].type:uA.schema.type)}function j(pA){pA.x=s.MathUtils.degToRad(pA.x),pA.y=s.MathUtils.degToRad(pA.y),pA.z=s.MathUtils.degToRad(pA.z)}function Z(pA,hA,uA){var lA;for(lA=0;lA{d.r(O),d.d(O,{Component:()=>_});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=(0,z.registerComponent)("camera",{schema:{active:{default:!0},far:{default:1e4},fov:{default:80,min:0},near:{default:.005,min:0},spectator:{default:!1},zoom:{default:1,min:0}},init:function(){var T,v=this.el;T=this.camera=new s.PerspectiveCamera,v.setObject3D("camera",T)},update:function(T){var v=this.data,D=this.camera;D.aspect=v.aspect||window.innerWidth/window.innerHeight,D.far=v.far,D.fov=v.fov,D.near=v.near,D.zoom=v.zoom,D.updateProjectionMatrix(),this.updateActiveCamera(T),this.updateSpectatorCamera(T)},updateActiveCamera:function(T){var v=this.data,D=this.el,h=this.system;T&&T.active===v.active||v.spectator||(v.active&&h.activeCameraEl!==D?h.setActiveCamera(D):!v.active&&h.activeCameraEl===D&&h.disableActiveCamera())},updateSpectatorCamera:function(T){var v=this.data,D=this.el,h=this.system;T&&T.spectator===v.spectator||(v.spectator&&h.spectatorCameraEl!==D?h.setSpectatorCamera(D):!v.spectator&&h.spectatorCameraEl===D&&h.disableSpectatorCamera())},remove:function(){this.el.removeObject3D("camera")}})},"./src/components/cursor.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>m});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=d("./src/utils/index.js"),T={CLICK:"click",FUSING:"fusing",MOUSEENTER:"mouseenter",MOUSEDOWN:"mousedown",MOUSELEAVE:"mouseleave",MOUSEUP:"mouseup"},v={FUSING:"cursor-fusing",HOVERING:"cursor-hovering",HOVERED:"cursor-hovered"},D={DOWN:["mousedown","touchstart"],UP:["mouseup","touchend"]},h={DOWN:["selectstart"],UP:["selectend"]},p="a-mouse-cursor-hover",m=(0,z.registerComponent)("cursor",{dependencies:["raycaster"],schema:{downEvents:{default:[]},fuse:{default:_.device.isMobile()},fuseTimeout:{default:1500,min:0},mouseCursorStylesEnabled:{default:!0},upEvents:{default:[]},rayOrigin:{default:"entity",oneOf:["mouse","entity","xrselect"]}},after:["tracked-controls"],multiple:!0,init:function(){var u=this;this.fuseTimeout=void 0,this.cursorDownEl=null,this.intersectedEl=null,this.canvasBounds=document.body.getBoundingClientRect(),this.isCursorDown=!1,this.activeXRInput=null,this.updateCanvasBounds=_.debounce(function(){u.canvasBounds=u.el.sceneEl.canvas.getBoundingClientRect()},500),this.eventDetail={},this.intersectedEventDetail={cursorEl:this.el},this.onCursorDown=this.onCursorDown.bind(this),this.onCursorUp=this.onCursorUp.bind(this),this.onIntersection=this.onIntersection.bind(this),this.onIntersectionCleared=this.onIntersectionCleared.bind(this),this.onMouseMove=this.onMouseMove.bind(this),this.onEnterVR=this.onEnterVR.bind(this)},update:function(u){var l=this.data.rayOrigin;l!==u.rayOrigin&&(l==="entity"&&this.resetRaycaster(),this.updateMouseEventListeners(),(l==="xrselect"||l==="entity")&&this.addWebXREventListeners(),(u.rayOrigin==="xrselect"||u.rayOrigin==="entity")&&this.removeWebXREventListeners())},tick:function(){var u=this.el.sceneEl.frame,l=this.activeXRInput;this.data.rayOrigin==="xrselect"&&u&&l&&this.onMouseMove({frame:u,inputSource:l,type:"fakeselectevent"})},play:function(){this.addEventListeners()},pause:function(){this.removeEventListeners()},remove:function(){var u=this.el;u.removeState(v.HOVERING),u.removeState(v.FUSING),clearTimeout(this.fuseTimeout),this.intersectedEl&&this.intersectedEl.removeState(v.HOVERED),this.removeEventListeners()},addEventListeners:function(){var u,l=this.data,R=this.el,N=this;function Y(){u=R.sceneEl.canvas,!(l.downEvents.length||l.upEvents.length)&&(D.DOWN.forEach(function(G){u.addEventListener(G,N.onCursorDown,{passive:!1})}),D.UP.forEach(function(G){u.addEventListener(G,N.onCursorUp,{passive:!1})}))}u=R.sceneEl.canvas,u?Y():R.sceneEl.addEventListener("render-target-loaded",Y),l.downEvents.forEach(function(G){R.addEventListener(G,N.onCursorDown)}),l.upEvents.forEach(function(G){R.addEventListener(G,N.onCursorUp)}),R.addEventListener("raycaster-intersection",this.onIntersection),R.addEventListener("raycaster-closest-entity-changed",this.onIntersection),R.addEventListener("raycaster-intersection-cleared",this.onIntersectionCleared),R.sceneEl.addEventListener("rendererresize",this.updateCanvasBounds),R.sceneEl.addEventListener("enter-vr",this.onEnterVR),window.addEventListener("resize",this.updateCanvasBounds),window.addEventListener("scroll",this.updateCanvasBounds),this.updateMouseEventListeners()},removeEventListeners:function(){var u,l=this.data,R=this.el,N=this;u=R.sceneEl.canvas,u&&!l.downEvents.length&&!l.upEvents.length&&(D.DOWN.forEach(function(Y){u.removeEventListener(Y,N.onCursorDown)}),D.UP.forEach(function(Y){u.removeEventListener(Y,N.onCursorUp)})),l.downEvents.forEach(function(Y){R.removeEventListener(Y,N.onCursorDown)}),l.upEvents.forEach(function(Y){R.removeEventListener(Y,N.onCursorUp)}),R.removeEventListener("raycaster-intersection",this.onIntersection),R.removeEventListener("raycaster-closest-entity-changed",this.onIntersection),R.removeEventListener("raycaster-intersection-cleared",this.onIntersectionCleared),u.removeEventListener("mousemove",this.onMouseMove),u.removeEventListener("touchstart",this.onMouseMove),u.removeEventListener("touchmove",this.onMouseMove),R.sceneEl.removeEventListener("rendererresize",this.updateCanvasBounds),R.sceneEl.removeEventListener("enter-vr",this.onEnterVR),window.removeEventListener("resize",this.updateCanvasBounds),window.removeEventListener("scroll",this.updateCanvasBounds),this.removeWebXREventListeners()},updateMouseEventListeners:function(){var u,l=this.el;u=l.sceneEl.canvas,u.removeEventListener("mousemove",this.onMouseMove),u.removeEventListener("touchmove",this.onMouseMove),l.setAttribute("raycaster","useWorldCoordinates",!1),this.data.rayOrigin==="mouse"&&(u.addEventListener("mousemove",this.onMouseMove),u.addEventListener("touchmove",this.onMouseMove,{passive:!1}),l.setAttribute("raycaster","useWorldCoordinates",!0),this.updateCanvasBounds())},resetRaycaster:function(){this.el.setAttribute("raycaster",{direction:new s.Vector3().set(0,0,-1),origin:new s.Vector3})},addWebXREventListeners:function(){var u=this,l=this.el.sceneEl.xrSession;l&&(h.DOWN.forEach(function(R){l.addEventListener(R,u.onCursorDown)}),h.UP.forEach(function(R){l.addEventListener(R,u.onCursorUp)}))},removeWebXREventListeners:function(){var u=this,l=this.el.sceneEl.xrSession;l&&(h.DOWN.forEach(function(R){l.removeEventListener(R,u.onCursorDown)}),h.UP.forEach(function(R){l.removeEventListener(R,u.onCursorUp)}))},onMouseMove:function(){var u=new s.Vector3,l=new s.Vector2,R=new s.Vector3,N={origin:R,direction:u};return function(Y){var G=this.canvasBounds,x=this.el.sceneEl.camera,U,j,Z,CA,QA,SA,UA,TA,pA;x.parent.updateMatrixWorld(),Y.type==="touchmove"||Y.type==="touchstart"?Z=Y.touches.item(0):Z=Y,j=Z.clientX-G.left,CA=Z.clientY-G.top,l.x=j/G.width*2-1,l.y=-(CA/G.height)*2+1,this.data.rayOrigin==="xrselect"&&(Y.type==="selectstart"||Y.type==="fakeselectevent")?(QA=Y.frame,SA=Y.inputSource,UA=this.el.sceneEl.renderer.xr.getReferenceSpace(),TA=QA.getPose(SA.targetRaySpace,UA),TA&&(pA=TA.transform,u.set(0,0,-1),u.applyQuaternion(pA.orientation),R.copy(pA.position),U=x.el.object3D.parent,U.localToWorld(R),u.transformDirection(U.matrixWorld))):Y.type==="fakeselectout"?(u.set(0,1,0),R.set(0,9999,0)):x&&x.isPerspectiveCamera?(R.setFromMatrixPosition(x.matrixWorld),u.set(l.x,l.y,.5).unproject(x).sub(R).normalize()):x&&x.isOrthographicCamera?(R.set(l.x,l.y,(x.near+x.far)/(x.near-x.far)).unproject(x),u.set(0,0,-1).transformDirection(x.matrixWorld)):console.error("AFRAME.Raycaster: Unsupported camera type: "+x.type),this.el.setAttribute("raycaster",N),Y.type==="touchmove"&&Y.preventDefault()}}(),onCursorDown:function(u){this.isCursorDown=!0,this.data.rayOrigin==="mouse"&&u.type==="touchstart"&&(this.onMouseMove(u),this.el.components.raycaster.checkIntersections(),u.preventDefault()),this.data.rayOrigin==="xrselect"&&u.type==="selectstart"&&(this.activeXRInput=u.inputSource,this.onMouseMove(u),this.el.components.raycaster.checkIntersections(),this.el.components.raycaster.intersectedEls.length&&this.el.sceneEl.components["ar-hit-test"]!==void 0&&this.el.sceneEl.getAttribute("ar-hit-test").enabled&&(this.el.sceneEl.setAttribute("ar-hit-test","enabled",!1),this.reenableARHitTest=!0)),this.twoWayEmit(T.MOUSEDOWN,u),this.cursorDownEl=this.intersectedEl},onCursorUp:function(u){if(this.isCursorDown&&!(this.data.rayOrigin==="xrselect"&&this.activeXRInput!==u.inputSource)){this.isCursorDown=!1;var l=this.data;this.twoWayEmit(T.MOUSEUP,u),this.reenableARHitTest===!0&&(this.el.sceneEl.setAttribute("ar-hit-test","enabled",!0),this.reenableARHitTest=void 0),this.cursorDownEl&&this.cursorDownEl!==this.intersectedEl&&(this.intersectedEventDetail.intersection=null,this.cursorDownEl.emit(T.MOUSEUP,this.intersectedEventDetail)),(!l.fuse||l.rayOrigin==="mouse"||l.rayOrigin==="xrselect")&&this.intersectedEl&&this.cursorDownEl===this.intersectedEl&&this.twoWayEmit(T.CLICK,u),l.rayOrigin==="xrselect"&&this.onMouseMove({type:"fakeselectout"}),this.activeXRInput=null,this.cursorDownEl=null,u.type==="touchend"&&u.preventDefault()}},onIntersection:function(u){var l,R=this.el,N,Y,G;N=u.detail.els[0]===R?1:0,G=u.detail.intersections[N],Y=u.detail.els[N],Y&&this.intersectedEl!==Y&&(this.intersectedEl&&(l=this.el.components.raycaster.getIntersection(this.intersectedEl),l&&l.distance<=G.distance)||(this.clearCurrentIntersection(!0),this.setIntersection(Y,G)))},onIntersectionCleared:function(u){var l=u.detail.clearedEls;l.indexOf(this.intersectedEl)!==-1&&this.clearCurrentIntersection()},onEnterVR:function(){var u=this.data.rayOrigin;this.clearCurrentIntersection(!0),(u==="xrselect"||u==="entity")&&this.addWebXREventListeners()},setIntersection:function(u,l){var R=this.el,N=this.data,Y=this;this.intersectedEl!==u&&(this.intersectedEl=u,R.addState(v.HOVERING),u.addState(v.HOVERED),this.twoWayEmit(T.MOUSEENTER),this.data.mouseCursorStylesEnabled&&this.data.rayOrigin==="mouse"&&this.el.sceneEl.canvas.classList.add(p),!(N.fuseTimeout===0||!N.fuse||N.rayOrigin==="xrselect"||N.rayOrigin==="mouse")&&(R.addState(v.FUSING),this.twoWayEmit(T.FUSING),this.fuseTimeout=setTimeout(function(){R.removeState(v.FUSING),Y.twoWayEmit(T.CLICK)},N.fuseTimeout)))},clearCurrentIntersection:function(u){var l,R,N,Y=this.el;this.intersectedEl&&(this.intersectedEl.removeState(v.HOVERED),Y.removeState(v.HOVERING),Y.removeState(v.FUSING),this.twoWayEmit(T.MOUSELEAVE),this.data.mouseCursorStylesEnabled&&this.data.rayOrigin==="mouse"&&this.el.sceneEl.canvas.classList.remove(p),this.intersectedEl=null,clearTimeout(this.fuseTimeout),u!==!0&&(N=this.el.components.raycaster.intersections,N.length!==0&&(l=N[0].object.el===Y?1:0,R=N[l],R&&this.setIntersection(R.object.el,R))))},twoWayEmit:function(u,l){var R=this.el,N=this.intersectedEl,Y;function G(x,U){l instanceof MouseEvent?x.mouseEvent=l:typeof TouchEvent<"u"&&l instanceof TouchEvent&&(x.touchEvent=l)}Y=this.el.components.raycaster.getIntersection(N),this.eventDetail.intersectedEl=N,this.eventDetail.intersection=Y,G(this.eventDetail),R.emit(u,this.eventDetail),N&&(this.intersectedEventDetail.intersection=Y,G(this.intersectedEventDetail),N.emit(u,this.intersectedEventDetail))}})},"./src/components/generic-tracked-controller-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>v});var s=d("./src/core/component.js"),z=d("./src/utils/tracked-controls.js"),_="generic",T={axes:{touchpad:[0,1],thumbstick:[2,3]},buttons:["trigger","squeeze","touchpad","thumbstick"]},v=(0,s.registerComponent)("generic-tracked-controller-controls",{schema:{hand:{default:""},defaultModel:{default:!0},defaultModelColor:{default:"gray"},disabled:{default:!1}},after:["tracked-controls"],mapping:T,bindMethods:function(){this.onControllersUpdate=this.onControllersUpdate.bind(this),this.checkIfControllerPresent=this.checkIfControllerPresent.bind(this),this.removeControllersUpdateListener=this.removeControllersUpdateListener.bind(this),this.onAxisMoved=this.onAxisMoved.bind(this)},init:function(){var D=this;this.onButtonChanged=this.onButtonChanged.bind(this),this.onButtonDown=function(h){(0,z.onButtonEvent)(h.detail.id,"down",D)},this.onButtonUp=function(h){(0,z.onButtonEvent)(h.detail.id,"up",D)},this.onButtonTouchStart=function(h){(0,z.onButtonEvent)(h.detail.id,"touchstart",D)},this.onButtonTouchEnd=function(h){(0,z.onButtonEvent)(h.detail.id,"touchend",D)},this.controllerPresent=!1,this.wasControllerConnected=!1,this.bindMethods(),this.el.addEventListener("controllerconnected",function(h){h.detail.name!==D.name&&(D.wasControllerConnected=!0,D.removeEventListeners(),D.removeControllersUpdateListener())})},addEventListeners:function(){var D=this.el;D.addEventListener("buttonchanged",this.onButtonChanged),D.addEventListener("buttondown",this.onButtonDown),D.addEventListener("buttonup",this.onButtonUp),D.addEventListener("touchstart",this.onButtonTouchStart),D.addEventListener("touchend",this.onButtonTouchEnd),D.addEventListener("axismove",this.onAxisMoved),this.controllerEventsActive=!0},removeEventListeners:function(){var D=this.el;D.removeEventListener("buttonchanged",this.onButtonChanged),D.removeEventListener("buttondown",this.onButtonDown),D.removeEventListener("buttonup",this.onButtonUp),D.removeEventListener("touchstart",this.onButtonTouchStart),D.removeEventListener("touchend",this.onButtonTouchEnd),D.removeEventListener("axismove",this.onAxisMoved),this.controllerEventsActive=!1},checkIfControllerPresent:function(){var D=this.data,h=D.hand?D.hand:void 0;(0,z.checkControllerPresentAndSetup)(this,_,{hand:h,iterateControllerProfiles:!0})},play:function(){this.wasControllerConnected||(this.checkIfControllerPresent(),this.addControllersUpdateListener())},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},injectTrackedControls:function(){var D=this.el,h=this.data;if(this.el.components["tracked-controls"]){this.removeEventListeners();return}D.setAttribute("tracked-controls",{hand:h.hand,idPrefix:_,iterateControllerProfiles:!0}),this.data.defaultModel&&this.initDefaultModel()},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener("controllersupdated",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener("controllersupdated",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.wasControllerConnected&&this.checkIfControllerPresent()},onButtonChanged:function(D){var h=this.mapping.buttons[D.detail.id];h&&this.el.emit(h+"changed",D.detail.state)},onAxisMoved:function(D){(0,z.emitIfAxesChanged)(this,this.mapping.axes,D)},initDefaultModel:function(){var D=this.modelEl=document.createElement("a-entity");D.setAttribute("geometry",{primitive:"sphere",radius:.03}),D.setAttribute("material",{color:this.data.color}),this.el.appendChild(D),this.el.emit("controllermodelready",{name:"generic-tracked-controller-controls",model:this.modelEl,rayOrigin:{origin:{x:0,y:0,z:-.01},direction:{x:0,y:0,z:-1}}})}})},"./src/components/geometry.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>v});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/geometry.js"),_=d("./src/core/component.js"),T=new s.BufferGeometry,v=(0,_.registerComponent)("geometry",{schema:{buffer:{default:!0},primitive:{default:"box",oneOf:z.geometryNames,schemaChange:!0},skipCache:{default:!1}},init:function(){this.geometry=null},update:function(D){var h=this.data,p=this.el,m,u=this.system;this.geometry&&(u.unuseGeometry(D),this.geometry=null),this.geometry=u.getOrCreateGeometry(h),m=p.getObject3D("mesh"),m?m.geometry=this.geometry:(m=new s.Mesh,m.geometry=this.geometry,this.el.getAttribute("material")||(m.material=new s.MeshStandardMaterial({color:Math.random()*16777215,metalness:0,roughness:.5})),p.setObject3D("mesh",m))},remove:function(){this.system.unuseGeometry(this.data),this.el.getObject3D("mesh").geometry=T,this.geometry=null},updateSchema:function(D){var h=this.oldData&&this.oldData.primitive,p=D.primitive,m=z.geometries[p]&&z.geometries[p].schema;if(!m)throw new Error("Unknown geometry schema `"+p+"`");h&&h===p||this.extendSchema(m)}})},"./src/components/gltf-model.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>v});var s=d("./node_modules/three/examples/jsm/loaders/GLTFLoader.js"),z=d("./src/core/component.js"),_=d("./src/utils/index.js"),T=_.debug("components:gltf-model:warn"),v=(0,z.registerComponent)("gltf-model",{schema:{type:"model"},init:function(){var D=this,h=this.system.getDRACOLoader(),p=this.system.getMeshoptDecoder(),m=this.system.getKTX2Loader();this.model=null,this.loader=new s.GLTFLoader,h&&this.loader.setDRACOLoader(h),p?this.ready=p.then(function(u){D.loader.setMeshoptDecoder(u)}):this.ready=Promise.resolve(),m&&this.loader.setKTX2Loader(m)},update:function(){var D=this,h=this.el,p=this.data;p&&(this.remove(),this.ready.then(function(){D.loader.load(p,function(u){D.model=u.scene||u.scenes[0],D.model.animations=u.animations,h.setObject3D("mesh",D.model),h.emit("model-loaded",{format:"gltf",model:D.model})},void 0,function(u){var l=u&&u.message?u.message:"Failed to load glTF model";T(l),h.emit("model-error",{format:"gltf",src:p})})}))},remove:function(){this.model&&this.el.removeObject3D("mesh")}})},"./src/components/grabbable.js":(_A,O,d)=>{d.r(O);var s=d("./src/core/component.js");(0,s.registerComponent)("grabbable",{init:function(){this.el.setAttribute("obb-collider","centerModel: true")}})},"./src/components/hand-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>p});var s=d("./node_modules/three/build/three.core.js"),z=d("./node_modules/three/examples/jsm/loaders/GLTFLoader.js"),_=d("./src/core/component.js"),T=d("./src/constants/index.js"),v={toonLeft:T.AFRAME_CDN_ROOT+"controllers/hands/leftHand.glb",toonRight:T.AFRAME_CDN_ROOT+"controllers/hands/rightHand.glb",lowPolyLeft:T.AFRAME_CDN_ROOT+"controllers/hands/leftHandLow.glb",lowPolyRight:T.AFRAME_CDN_ROOT+"controllers/hands/rightHandLow.glb",highPolyLeft:T.AFRAME_CDN_ROOT+"controllers/hands/leftHandHigh.glb",highPolyRight:T.AFRAME_CDN_ROOT+"controllers/hands/rightHandHigh.glb"},D={open:"Open",point:"Point",pointThumb:"Point + Thumb",fist:"Fist",hold:"Hold",thumbUp:"Thumb Up"},h={};h[D.fist]="grip",h[D.thumbUp]="pistol",h[D.point]="pointing";var p=(0,_.registerComponent)("hand-controls",{schema:{color:{default:"white",type:"color"},hand:{default:"left"},handModelStyle:{default:"lowPoly",oneOf:["lowPoly","highPoly","toon"]}},after:["tracked-controls"],init:function(){var l=this,R=this.el;this.pressedButtons={},this.touchedButtons={},this.loader=new z.GLTFLoader,this.loader.setCrossOrigin("anonymous"),this.onGripDown=function(){l.handleButton("grip","down")},this.onGripUp=function(){l.handleButton("grip","up")},this.onTrackpadDown=function(){l.handleButton("trackpad","down")},this.onTrackpadUp=function(){l.handleButton("trackpad","up")},this.onTrackpadTouchStart=function(){l.handleButton("trackpad","touchstart")},this.onTrackpadTouchEnd=function(){l.handleButton("trackpad","touchend")},this.onTriggerDown=function(){l.handleButton("trigger","down")},this.onTriggerUp=function(){l.handleButton("trigger","up")},this.onTriggerTouchStart=function(){l.handleButton("trigger","touchstart")},this.onTriggerTouchEnd=function(){l.handleButton("trigger","touchend")},this.onGripTouchStart=function(){l.handleButton("grip","touchstart")},this.onGripTouchEnd=function(){l.handleButton("grip","touchend")},this.onThumbstickDown=function(){l.handleButton("thumbstick","down")},this.onThumbstickUp=function(){l.handleButton("thumbstick","up")},this.onAorXTouchStart=function(){l.handleButton("AorX","touchstart")},this.onAorXTouchEnd=function(){l.handleButton("AorX","touchend")},this.onBorYTouchStart=function(){l.handleButton("BorY","touchstart")},this.onBorYTouchEnd=function(){l.handleButton("BorY","touchend")},this.onSurfaceTouchStart=function(){l.handleButton("surface","touchstart")},this.onSurfaceTouchEnd=function(){l.handleButton("surface","touchend")},this.onControllerConnected=this.onControllerConnected.bind(this),this.onControllerDisconnected=this.onControllerDisconnected.bind(this),R.addEventListener("controllerconnected",this.onControllerConnected),R.addEventListener("controllerdisconnected",this.onControllerDisconnected),R.object3D.visible=!1},play:function(){this.addEventListeners()},pause:function(){this.removeEventListeners()},tick:function(l,R){var N=this.el.getObject3D("mesh");!N||!N.mixer||N.mixer.update(R/1e3)},onControllerConnected:function(l){var R=this.el,N=this.data.hand,Y=this.el.getObject3D("mesh");R.object3D.visible=!0;var G=N==="left"?Math.PI/2:-Math.PI/2,x=R.sceneEl.hasWebXR?-Math.PI/2:0;l.detail.name==="pico-controls"&&(x+=Math.PI/4),Y.position.set(0,0,0),Y.rotation.set(x,0,G)},onControllerDisconnected:function(){this.el.object3D.visible=!1},addEventListeners:function(){var l=this.el;l.addEventListener("gripdown",this.onGripDown),l.addEventListener("gripup",this.onGripUp),l.addEventListener("trackpaddown",this.onTrackpadDown),l.addEventListener("trackpadup",this.onTrackpadUp),l.addEventListener("trackpadtouchstart",this.onTrackpadTouchStart),l.addEventListener("trackpadtouchend",this.onTrackpadTouchEnd),l.addEventListener("triggerdown",this.onTriggerDown),l.addEventListener("triggerup",this.onTriggerUp),l.addEventListener("triggertouchstart",this.onTriggerTouchStart),l.addEventListener("triggertouchend",this.onTriggerTouchEnd),l.addEventListener("griptouchstart",this.onGripTouchStart),l.addEventListener("griptouchend",this.onGripTouchEnd),l.addEventListener("thumbstickdown",this.onThumbstickDown),l.addEventListener("thumbstickup",this.onThumbstickUp),l.addEventListener("abuttontouchstart",this.onAorXTouchStart),l.addEventListener("abuttontouchend",this.onAorXTouchEnd),l.addEventListener("bbuttontouchstart",this.onBorYTouchStart),l.addEventListener("bbuttontouchend",this.onBorYTouchEnd),l.addEventListener("xbuttontouchstart",this.onAorXTouchStart),l.addEventListener("xbuttontouchend",this.onAorXTouchEnd),l.addEventListener("ybuttontouchstart",this.onBorYTouchStart),l.addEventListener("ybuttontouchend",this.onBorYTouchEnd),l.addEventListener("surfacetouchstart",this.onSurfaceTouchStart),l.addEventListener("surfacetouchend",this.onSurfaceTouchEnd)},removeEventListeners:function(){var l=this.el;l.removeEventListener("gripdown",this.onGripDown),l.removeEventListener("gripup",this.onGripUp),l.removeEventListener("trackpaddown",this.onTrackpadDown),l.removeEventListener("trackpadup",this.onTrackpadUp),l.removeEventListener("trackpadtouchstart",this.onTrackpadTouchStart),l.removeEventListener("trackpadtouchend",this.onTrackpadTouchEnd),l.removeEventListener("triggerdown",this.onTriggerDown),l.removeEventListener("triggerup",this.onTriggerUp),l.removeEventListener("triggertouchstart",this.onTriggerTouchStart),l.removeEventListener("triggertouchend",this.onTriggerTouchEnd),l.removeEventListener("griptouchstart",this.onGripTouchStart),l.removeEventListener("griptouchend",this.onGripTouchEnd),l.removeEventListener("thumbstickdown",this.onThumbstickDown),l.removeEventListener("thumbstickup",this.onThumbstickUp),l.removeEventListener("abuttontouchstart",this.onAorXTouchStart),l.removeEventListener("abuttontouchend",this.onAorXTouchEnd),l.removeEventListener("bbuttontouchstart",this.onBorYTouchStart),l.removeEventListener("bbuttontouchend",this.onBorYTouchEnd),l.removeEventListener("xbuttontouchstart",this.onAorXTouchStart),l.removeEventListener("xbuttontouchend",this.onAorXTouchEnd),l.removeEventListener("ybuttontouchstart",this.onBorYTouchStart),l.removeEventListener("ybuttontouchend",this.onBorYTouchEnd),l.removeEventListener("surfacetouchstart",this.onSurfaceTouchStart),l.removeEventListener("surfacetouchend",this.onSurfaceTouchEnd)},update:function(l){var R,N=this.el,Y=this.data.hand,G=this.data.handModelStyle,x=this.data.color,U=this;if(R={hand:Y,model:!1},Y!==l){var j=v[G+Y.charAt(0).toUpperCase()+Y.slice(1)];this.loader.load(j,function(Z){var CA=Z.scene.children[0];CA.mixer=new s.AnimationMixer(CA),U.clips=Z.animations,N.setObject3D("mesh",CA),CA.traverse(function(QA){QA.isMesh&&(QA.material.color=new s.Color(x))}),N.setAttribute("magicleap-controls",R),N.setAttribute("vive-controls",R),N.setAttribute("meta-touch-controls",R),N.setAttribute("pico-controls",R),N.setAttribute("windows-motion-controls",R),N.setAttribute("hp-mixed-reality-controls",R)})}},remove:function(){this.el.removeObject3D("mesh")},handleButton:function(l,R){var N,Y=R==="down",G=R==="touchstart";if(R.indexOf("touch")===0){if(G===this.touchedButtons[l])return;this.touchedButtons[l]=G}else{if(Y===this.pressedButtons[l])return;this.pressedButtons[l]=Y}N=this.gesture,this.gesture=this.determineGesture(),this.gesture!==N&&(this.animateGesture(this.gesture,N),this.emitGestureEvents(this.gesture,N))},determineGesture:function(){var l,R=this.pressedButtons.grip,N=this.pressedButtons.surface||this.touchedButtons.surface,Y=this.pressedButtons.trackpad||this.touchedButtons.trackpad,G=this.pressedButtons.trigger||this.touchedButtons.trigger,x=this.touchedButtons.AorX||this.touchedButtons.BorY,U=u(this.el.components["tracked-controls"]);return U?R||G?l=D.fist:Y&&(l=D.point):R?N||x||Y?l=G?D.fist:D.point:l=G?D.thumbUp:D.pointThumb:G&&(l=D.hold),l},getClip:function(l){var R,N;for(N=0;N{d.r(O),d.d(O,{Component:()=>Y});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=d("./src/core/a-entity.js"),T=d("./src/utils/tracked-controls.js"),v=d("./src/constants/index.js"),D=v.AFRAME_CDN_ROOT+"controllers/oculus-hands/v4/left.glb",h=v.AFRAME_CDN_ROOT+"controllers/oculus-hands/v4/right.glb",p=["wrist","thumb-metacarpal","thumb-phalanx-proximal","thumb-phalanx-distal","thumb-tip","index-finger-metacarpal","index-finger-phalanx-proximal","index-finger-phalanx-intermediate","index-finger-phalanx-distal","index-finger-tip","middle-finger-metacarpal","middle-finger-phalanx-proximal","middle-finger-phalanx-intermediate","middle-finger-phalanx-distal","middle-finger-tip","ring-finger-metacarpal","ring-finger-phalanx-proximal","ring-finger-phalanx-intermediate","ring-finger-phalanx-distal","ring-finger-tip","pinky-finger-metacarpal","pinky-finger-phalanx-proximal","pinky-finger-phalanx-intermediate","pinky-finger-phalanx-distal","pinky-finger-tip"],m=0,u=4,l=9,R=.015,N=.02,Y=(0,z.registerComponent)("hand-tracking-controls",{schema:{hand:{default:"right",oneOf:["left","right"]},modelStyle:{default:"mesh",oneOf:["dots","mesh"]},modelColor:{default:"white"},modelOpacity:{default:1}},after:["tracked-controls"],bindMethods:function(){this.onControllersUpdate=this.onControllersUpdate.bind(this),this.checkIfControllerPresent=this.checkIfControllerPresent.bind(this),this.removeControllersUpdateListener=this.removeControllersUpdateListener.bind(this)},addEventListeners:function(){this.el.addEventListener("model-loaded",this.onModelLoaded);for(var G=0;GN&&this.isPinched===!0&&(this.isPinched=!1,j.position.copy(U).add(G).multiplyScalar(.5),this.el.emit("pinchended",j)),this.isPinched&&(j.position.copy(U).add(G).multiplyScalar(.5),this.el.emit("pinchmoved",j))}}}(),pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},injectTrackedControls:function(){var G=this.el,x=this.data;if(G.setAttribute("tracked-controls",{id:"",hand:x.hand,iterateControllerProfiles:!0,handTrackingEnabled:!0}),this.mesh){this.mesh!==G.getObject3D("mesh")&&G.setObject3D("mesh",this.mesh);return}this.initDefaultModel()},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener("controllersupdated",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener("controllersupdated",this.onControllersUpdate,!1)},onControllersUpdate:function(){var G=this.el,x;this.checkIfControllerPresent(),x=G.components["tracked-controls"]&&G.components["tracked-controls"].controller,this.mesh&&x&&x.hand&&x.hand instanceof XRHand&&G.setObject3D("mesh",this.mesh)},initDefaultModel:function(){var G=this.data;G.modelStyle==="dots"&&this.initDotsModel(),G.modelStyle==="mesh"&&this.initMeshHandModel(),this.el.object3D.visible=!0,this.wristObject3D.visible=!0},initDotsModel:function(){if(this.jointEls.length===0){for(var G=0;G{d.r(O);var s=d("./src/core/component.js"),z=d("./node_modules/three/build/three.core.js");(0,s.registerComponent)("hand-tracking-grab-controls",{schema:{hand:{default:"right",oneOf:["left","right"]},color:{type:"color",default:"white"},hoverColor:{type:"color",default:"#538df1"},hoverEnabled:{default:!1}},init:function(){var _=this.el,T=this.data,v;T.hand==="right"?v="components.hand-tracking-controls.bones.3":v="components.hand-tracking-controls.bones.21",_.setAttribute("hand-tracking-controls",{hand:T.hand}),_.setAttribute("obb-collider",{trackedObject3D:v,size:.04}),this.auxMatrix=new z.Matrix4,this.onCollisionStarted=this.onCollisionStarted.bind(this),this.el.addEventListener("obbcollisionstarted",this.onCollisionStarted),this.onCollisionEnded=this.onCollisionEnded.bind(this),this.el.addEventListener("obbcollisionended",this.onCollisionEnded),this.onPinchStarted=this.onPinchStarted.bind(this),this.el.addEventListener("pinchstarted",this.onPinchStarted),this.onPinchEnded=this.onPinchEnded.bind(this),this.el.addEventListener("pinchended",this.onPinchEnded)},transferEntityOwnership:function(){for(var _,T=this.el.sceneEl.querySelectorAll("[hand-tracking-grab-controls]"),v=0;v{d.r(O),d.d(O,{Component:()=>z});var s=d("./src/core/component.js"),z=(0,s.registerComponent)("hide-on-enter-ar",{init:function(){var _=this;this.el.sceneEl.addEventListener("enter-vr",function(){_.el.sceneEl.is("ar-mode")&&(_.el.object3D.visible=!1)}),this.el.sceneEl.addEventListener("exit-vr",function(){_.el.object3D.visible=!0})}})},"./src/components/hide-on-enter-vr.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>z});var s=d("./src/core/component.js"),z=(0,s.registerComponent)("hide-on-enter-vr",{init:function(){var _=this;this.el.sceneEl.addEventListener("enter-vr",function(){_.el.sceneEl.is("vr-mode")&&(_.el.object3D.visible=!1)}),this.el.sceneEl.addEventListener("exit-vr",function(){_.el.object3D.visible=!0})}})},"./src/components/hp-mixed-reality-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>u});var s=d("./src/core/component.js"),z=d("./node_modules/three/build/three.core.js"),_=d("./src/constants/index.js"),T=d("./src/utils/tracked-controls.js"),v="hp-mixed-reality",D=_.AFRAME_CDN_ROOT+"controllers/hp/mixed-reality/",h={x:0,y:0,z:.06},p={_x:Math.PI/4,_y:0,_z:0,_order:"XYZ"},m={left:{axes:{touchpad:[2,3]},buttons:["trigger","grip","none","thumbstick","xbutton","ybutton"]},right:{axes:{touchpad:[2,3]},buttons:["trigger","grip","none","thumbstick","abutton","bbutton"]}},u=(0,s.registerComponent)("hp-mixed-reality-controls",{schema:{hand:{default:"none"},model:{default:!0}},mapping:m,init:function(){var l=this;this.controllerPresent=!1,this.onButtonChanged=this.onButtonChanged.bind(this),this.onButtonDown=function(R){(0,T.onButtonEvent)(R.detail.id,"down",l,l.data.hand)},this.onButtonUp=function(R){(0,T.onButtonEvent)(R.detail.id,"up",l,l.data.hand)},this.onButtonTouchEnd=function(R){(0,T.onButtonEvent)(R.detail.id,"touchend",l,l.data.hand)},this.onButtonTouchStart=function(R){(0,T.onButtonEvent)(R.detail.id,"touchstart",l,l.data.hand)},this.previousButtonValues={},this.bindMethods()},update:function(){var l=this.data;this.controllerIndex=l.hand==="right"?0:l.hand==="left"?1:2},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},bindMethods:function(){this.onModelLoaded=this.onModelLoaded.bind(this),this.onControllersUpdate=this.onControllersUpdate.bind(this),this.checkIfControllerPresent=this.checkIfControllerPresent.bind(this),this.removeControllersUpdateListener=this.removeControllersUpdateListener.bind(this),this.onAxisMoved=this.onAxisMoved.bind(this)},addEventListeners:function(){var l=this.el;l.addEventListener("buttonchanged",this.onButtonChanged),l.addEventListener("buttondown",this.onButtonDown),l.addEventListener("buttonup",this.onButtonUp),l.addEventListener("touchstart",this.onButtonTouchStart),l.addEventListener("touchend",this.onButtonTouchEnd),l.addEventListener("axismove",this.onAxisMoved),l.addEventListener("model-loaded",this.onModelLoaded),this.controllerEventsActive=!0},removeEventListeners:function(){var l=this.el;l.removeEventListener("buttonchanged",this.onButtonChanged),l.removeEventListener("buttondown",this.onButtonDown),l.removeEventListener("buttonup",this.onButtonUp),l.removeEventListener("touchstart",this.onButtonTouchStart),l.removeEventListener("touchend",this.onButtonTouchEnd),l.removeEventListener("axismove",this.onAxisMoved),l.removeEventListener("model-loaded",this.onModelLoaded),this.controllerEventsActive=!1},checkIfControllerPresent:function(){var l=this.data;(0,T.checkControllerPresentAndSetup)(this,v,{index:this.controllerIndex,hand:l.hand})},injectTrackedControls:function(){var l=this.el,R=this.data;l.setAttribute("tracked-controls",{idPrefix:v,hand:R.hand,controller:this.controllerIndex}),this.data.model&&this.el.setAttribute("gltf-model",D+this.data.hand+".glb")},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener("controllersupdated",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener("controllersupdated",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onButtonChanged:function(l){var R=this.mapping[this.data.hand].buttons[l.detail.id],N;R&&(R==="trigger"&&(N=l.detail.state.value,console.log("analog value of trigger press: "+N)),this.el.emit(R+"changed",l.detail.state))},onModelLoaded:function(l){var R=l.detail.model;this.data.model&&(R.position.copy(h),R.rotation.copy(p),this.el.emit("controllermodelready",{name:"hp-mixed-reality-controls",model:this.data.model,rayOrigin:new z.Vector3(0,0,0)}))},onAxisMoved:function(l){(0,T.emitIfAxesChanged)(this,this.mapping.axes,l)}})},"./src/components/index.js":(_A,O,d)=>{d.r(O),d("./src/components/animation.js"),d("./src/components/anchored.js"),d("./src/components/camera.js"),d("./src/components/cursor.js"),d("./src/components/geometry.js"),d("./src/components/generic-tracked-controller-controls.js"),d("./src/components/gltf-model.js"),d("./src/components/grabbable.js"),d("./src/components/hand-tracking-controls.js"),d("./src/components/hand-tracking-grab-controls.js"),d("./src/components/hand-controls.js"),d("./src/components/hide-on-enter-ar.js"),d("./src/components/hide-on-enter-vr.js"),d("./src/components/hp-mixed-reality-controls.js"),d("./src/components/layer.js"),d("./src/components/laser-controls.js"),d("./src/components/light.js"),d("./src/components/line.js"),d("./src/components/link.js"),d("./src/components/logitech-mx-ink-controls.js"),d("./src/components/look-controls.js"),d("./src/components/magicleap-controls.js"),d("./src/components/material.js"),d("./src/components/meta-touch-controls.js"),d("./src/components/obb-collider.js"),d("./src/components/obj-model.js"),d("./src/components/oculus-go-controls.js"),d("./src/components/pico-controls.js"),d("./src/components/position.js"),d("./src/components/raycaster.js"),d("./src/components/rotation.js"),d("./src/components/scale.js"),d("./src/components/shadow.js"),d("./src/components/sound.js"),d("./src/components/text.js"),d("./src/components/tracked-controls.js"),d("./src/components/visible.js"),d("./src/components/valve-index-controls.js"),d("./src/components/vive-controls.js"),d("./src/components/vive-focus-controls.js"),d("./src/components/wasd-controls.js"),d("./src/components/windows-motion-controls.js"),d("./src/components/scene/ar-hit-test.js"),d("./src/components/scene/background.js"),d("./src/components/scene/debug.js"),d("./src/components/scene/device-orientation-permission-ui.js"),d("./src/components/scene/embedded.js"),d("./src/components/scene/inspector.js"),d("./src/components/scene/fog.js"),d("./src/components/scene/keyboard-shortcuts.js"),d("./src/components/scene/pool.js"),d("./src/components/scene/real-world-meshing.js"),d("./src/components/scene/reflection.js"),d("./src/components/scene/screenshot.js"),d("./src/components/scene/stats.js"),d("./src/components/scene/xr-mode-ui.js")},"./src/components/laser-controls.js":(_A,O,d)=>{d.r(O);var s=d("./src/core/component.js"),z=d("./src/utils/index.js");(0,s.registerComponent)("laser-controls",{schema:{hand:{default:"right"},model:{default:!0},defaultModelColor:{type:"color",default:"grey"}},init:function(){var _=this.config,T=this.data,v=this.el,D=this,h={hand:T.hand,model:T.model};v.setAttribute("hp-mixed-reality-controls",h),v.setAttribute("magicleap-controls",h),v.setAttribute("oculus-go-controls",h),v.setAttribute("meta-touch-controls",h),v.setAttribute("pico-controls",h),v.setAttribute("valve-index-controls",h),v.setAttribute("vive-controls",h),v.setAttribute("vive-focus-controls",h),v.setAttribute("windows-motion-controls",h),v.setAttribute("generic-tracked-controller-controls",{hand:h.hand}),v.addEventListener("controllerconnected",p),v.addEventListener("controllerdisconnected",m),v.addEventListener("controllermodelready",function(u){p(u),D.modelReady=!0});function p(u){var l=_[u.detail.name];if(l){var R=z.extend({showLine:!0},l.raycaster||{});u.detail.rayOrigin&&(R.origin=u.detail.rayOrigin.origin,R.direction=u.detail.rayOrigin.direction,R.showLine=!0),u.detail.rayOrigin||!D.modelReady?v.setAttribute("raycaster",R):v.setAttribute("raycaster","showLine",!0),v.setAttribute("cursor",z.extend({fuse:!1},l.cursor))}}function m(u){var l=_[u.detail.name];l&&v.setAttribute("raycaster","showLine",!1)}},config:{"generic-tracked-controller-controls":{cursor:{downEvents:["triggerdown"],upEvents:["triggerup"]}},"hp-mixed-reality-controls":{cursor:{downEvents:["triggerdown"],upEvents:["triggerup"]},raycaster:{origin:{x:0,y:0,z:0}}},"magicleap-controls":{cursor:{downEvents:["trackpaddown","triggerdown"],upEvents:["trackpadup","triggerup"]}},"oculus-go-controls":{cursor:{downEvents:["triggerdown"],upEvents:["triggerup"]},raycaster:{origin:{x:0,y:5e-4,z:0}}},"meta-touch-controls":{cursor:{downEvents:["triggerdown"],upEvents:["triggerup"]},raycaster:{origin:{x:0,y:0,z:0}}},"pico-controls":{cursor:{downEvents:["triggerdown"],upEvents:["triggerup"]}},"valve-index-controls":{cursor:{downEvents:["triggerdown"],upEvents:["triggerup"]}},"vive-controls":{cursor:{downEvents:["triggerdown"],upEvents:["triggerup"]}},"vive-focus-controls":{cursor:{downEvents:["trackpaddown","triggerdown"],upEvents:["trackpadup","triggerup"]}},"windows-motion-controls":{cursor:{downEvents:["triggerdown"],upEvents:["triggerup"]},raycaster:{showLine:!1}}}})},"./src/components/layer.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>v});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=d("./src/utils/index.js"),T=_.debug("components:layer:warn"),v=(0,z.registerComponent)("layer",{schema:{type:{default:"quad",oneOf:["quad","monocubemap","stereocubemap"]},src:{type:"map"},rotateCubemap:{default:!1},width:{default:0},height:{default:0}},init:function(){var h=this.el.sceneEl.renderer.getContext();this.quaternion=new s.Quaternion,this.position=new s.Vector3,this.bindMethods(),this.needsRedraw=!1,this.frameBuffer=h.createFramebuffer();var p=this.el.sceneEl.getAttribute("webxr"),m=p.requiredFeatures;m.indexOf("layers")===-1&&(m.push("layers"),this.el.sceneEl.setAttribute("webxr",p)),this.el.sceneEl.addEventListener("enter-vr",this.onEnterVR),this.el.sceneEl.addEventListener("exit-vr",this.onExitVR)},bindMethods:function(){this.onRequestedReferenceSpace=this.onRequestedReferenceSpace.bind(this),this.onEnterVR=this.onEnterVR.bind(this),this.onExitVR=this.onExitVR.bind(this)},update:function(h){this.data.src!==h.src&&this.updateSrc()},updateSrc:function(){var h=this.data.type;if(this.texture=void 0,h==="quad"){this.loadQuadImage();return}if(h==="monocubemap"||h==="stereocubemap"){this.loadCubeMapImages();return}},loadCubeMapImages:function(){var h,p=this.xrGLFactory,m=this.el.sceneEl.frame,u=this.data.src,l=this.data.type;this.visibilityChanged=!1,this.layer&&(l!=="monocubemap"&&l!=="stereocubemap"||(u.complete?this.pendingCubeMapUpdate=!1:this.pendingCubeMapUpdate=!0,this.loadingScreen?this.loadingScreen=!1:this.loadingScreen=!0,l==="monocubemap"?(h=p.getSubImage(this.layer,m),this.loadCubeMapImage(h.colorTexture,u,0)):(h=p.getSubImage(this.layer,m,"left"),this.loadCubeMapImage(h.colorTexture,u,0),h=p.getSubImage(this.layer,m,"right"),this.loadCubeMapImage(h.colorTexture,u,6))))},loadQuadImage:function(){var h=this.data.src,p=this;this.el.sceneEl.systems.material.loadTexture(h,{src:h},function(u){p.el.sceneEl.renderer.initTexture(u),p.texture=u,h.tagName==="VIDEO"&&setTimeout(function(){p.textureIsVideo=!0},1e3),p.layer&&(p.layer.height=p.data.height/2||p.texture.image.height/1e3,p.layer.width=p.data.width/2||p.texture.image.width/1e3,p.needsRedraw=!0),p.updateQuadPanel()})},preGenerateCubeMapTextures:function(h,p){this.data.type==="monocubemap"?this.generateCubeMapTextures(h,0,p):(this.generateCubeMapTextures(h,0,p),this.generateCubeMapTextures(h,6,p))},generateCubeMapTextures:function(h,p,m){for(var u=this.data,l=this.cubeFaceSize,R=Math.min(h.width,h.height),N=[],Y,G,x=0;x<6;x++){var U=document.createElement("CANVAS");U.width=U.height=l;var j=U.getContext("2d");u.rotateCubemap&&(x===2||x===3)&&(j.save(),j.translate(l,l),j.rotate(Math.PI)),j.drawImage(h,(x+p)*R,0,R,R,0,0,l,l),j.restore(),m&&m(),N.push(U)}return u.rotateCubemap&&(Y=N[0],G=N[1],N[0]=G,N[1]=Y,Y=N[4],G=N[5],N[4]=G,N[5]=Y),m&&m(),N},loadCubeMapImage:function(h,p,m){var u=this.el.sceneEl.renderer.getContext(),l;u.pixelStorei(u.UNPACK_FLIP_Y_WEBGL,!1),u.bindTexture(u.TEXTURE_CUBE_MAP,h),!p.complete||this.loadingScreen?l=this.loadingScreenImages:l=this.generateCubeMapTextures(p,m);var R=0;l.forEach(function(N,Y){u.texSubImage2D(u.TEXTURE_CUBE_MAP_POSITIVE_X+Y,0,0,0,u.RGBA,u.UNSIGNED_BYTE,N),R=u.getError()}),R!==0&&console.log("renderingError, WebGL Error Code: "+R),u.bindTexture(u.TEXTURE_CUBE_MAP,null)},tick:function(){this.el.sceneEl.xrSession&&this.referenceSpace&&(!this.layer&&(this.el.sceneEl.is("vr-mode")||this.el.sceneEl.is("ar-mode"))&&this.initLayer(),this.updateTransform(),this.data.src.complete&&(this.pendingCubeMapUpdate||this.loadingScreen||this.visibilityChanged)&&this.loadCubeMapImages(),!(!this.needsRedraw&&!this.layer.needsRedraw&&!this.textureIsVideo)&&(this.data.type==="quad"&&this.draw(),this.needsRedraw=!1))},initLayer:function(){var h=this,p=this.data.type;if(this.el.sceneEl.xrSession.onvisibilitychange=function(m){h.visibilityChanged=m.session.visibilityState!=="hidden"},p==="quad"){this.initQuadLayer();return}if(p==="monocubemap"||p==="stereocubemap"){this.initCubeMapLayer();return}},initQuadLayer:function(){var h=this.el.sceneEl,p=h.renderer.getContext(),m=this.xrGLFactory=new XRWebGLBinding(h.xrSession,p);this.texture&&(this.layer=m.createQuadLayer({space:this.referenceSpace,viewPixelHeight:2048,viewPixelWidth:2048,height:this.data.height/2||this.texture.image.height/1e3,width:this.data.width/2||this.texture.image.width/1e3}),this.initLoadingScreenImages(),h.renderer.xr.addLayer(this.layer))},initCubeMapLayer:function(){var h=this.data.src,p=this.el.sceneEl,m=p.renderer.getContext(),u=m.getParameter(m.MAX_CUBE_MAP_TEXTURE_SIZE),l=this.cubeFaceSize=Math.min(u,Math.min(h.width,h.height)),R=this.xrGLFactory=new XRWebGLBinding(p.xrSession,m);this.layer=R.createCubeLayer({space:this.referenceSpace,viewPixelWidth:l,viewPixelHeight:l,layout:this.data.type==="monocubemap"?"mono":"stereo",isStatic:!1}),this.initLoadingScreenImages(),this.loadCubeMapImages(),p.renderer.xr.addLayer(this.layer)},initLoadingScreenImages:function(){for(var h=this.cubeFaceSize,p=this.loadingScreenImages=[],m=0;m<6;m++){var u=document.createElement("CANVAS");u.width=u.height=h;var l=u.getContext("2d");u.width=u.height=h,l.fillStyle="black",l.fillRect(0,0,h,h),m!==2&&m!==3&&(l.translate(h,0),l.scale(-1,1),l.fillStyle="white",l.font="30px Arial",l.fillText("Loading",h/2,h/2)),p.push(u)}},destroyLayer:function(){this.layer&&(this.el.sceneEl.renderer.xr.removeLayer(this.layer),this.layer.destroy(),this.layer=void 0)},toggleCompositorLayer:function(){this.enableCompositorLayer(!this.layerEnabled)},enableCompositorLayer:function(h){this.layerEnabled=h,this.quadPanelEl.object3D.visible=!this.layerEnabled},updateQuadPanel:function(){var h=this.quadPanelEl;this.quadPanelEl||(h=this.quadPanelEl=document.createElement("a-entity"),this.el.appendChild(h)),h.setAttribute("material",{shader:"flat",src:this.data.src,transparent:!0}),h.setAttribute("geometry",{primitive:"plane",height:this.data.height||this.texture.image.height/1e3,width:this.data.width||this.texture.image.height/1e3})},draw:function(){var h=this.el.sceneEl,p=this.el.sceneEl.renderer.getContext(),m=this.xrGLFactory.getSubImage(this.layer,h.frame),u=h.renderer.properties.get(this.texture).__webglTexture,l=p.getParameter(p.FRAMEBUFFER_BINDING);p.viewport(m.viewport.x,m.viewport.y,m.viewport.width,m.viewport.height),p.bindFramebuffer(p.FRAMEBUFFER,this.frameBuffer),p.framebufferTexture2D(p.FRAMEBUFFER,p.COLOR_ATTACHMENT0,p.TEXTURE_2D,m.colorTexture,0),D(p,u,m,this.data.src),p.bindFramebuffer(p.FRAMEBUFFER,l)},updateTransform:function(){var h=this.el,p=this.position,m=this.quaternion;h.object3D.updateMatrixWorld(),p.setFromMatrixPosition(h.object3D.matrixWorld),m.setFromRotationMatrix(h.object3D.matrixWorld),this.layerEnabled||p.set(0,0,1e8),this.layer.transform=new XRRigidTransform(p,m)},onEnterVR:function(){var h=this.el.sceneEl,p=h.xrSession;if(!h.hasWebXR||!XRWebGLBinding||!p){T("The layer component requires WebXR and the layers API enabled");return}p.requestReferenceSpace("local-floor").then(this.onRequestedReferenceSpace),this.layerEnabled=!0,this.quadPanelEl&&(this.quadPanelEl.object3D.visible=!1),this.data.src.play&&this.data.src.play()},onExitVR:function(){this.quadPanelEl&&(this.quadPanelEl.object3D.visible=!0),this.destroyLayer()},onRequestedReferenceSpace:function(h){this.referenceSpace=h}});function D(h,p,m,u){var l=h.createFramebuffer(),R=m.viewport.x,N=m.viewport.y,Y=m.viewport.x+m.viewport.width,G=m.viewport.y+m.viewport.height;u.tagName==="VIDEO"&&(h.bindTexture(h.TEXTURE_2D,p),h.texSubImage2D(h.TEXTURE_2D,0,0,0,u.width,u.height,h.RGB,h.UNSIGNED_BYTE,u)),h.bindFramebuffer(h.READ_FRAMEBUFFER,l),h.framebufferTexture2D(h.READ_FRAMEBUFFER,h.COLOR_ATTACHMENT0,h.TEXTURE_2D,p,0),h.readBuffer(h.COLOR_ATTACHMENT0),h.blitFramebuffer(0,0,u.width,u.height,R,N,Y,G,h.COLOR_BUFFER_BIT,h.NEAREST),h.bindFramebuffer(h.READ_FRAMEBUFFER,null),h.deleteFramebuffer(l)}},"./src/components/light.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>u});var s=d("./node_modules/three/build/three.core.js"),z=d("./node_modules/three/examples/jsm/lights/LightProbeGenerator.js"),_=d("./src/utils/index.js"),T=d("./src/core/component.js"),v=d("./src/utils/math.js"),D=s.MathUtils.degToRad,h=(0,_.debug)("components:light:warn"),p=new s.CubeTextureLoader,m={},u=(0,T.registerComponent)("light",{schema:{angle:{default:60,if:{type:["spot"]}},color:{type:"color",if:{type:["ambient","directional","hemisphere","point","spot"]}},envMap:{default:"",if:{type:["probe"]}},groundColor:{type:"color",if:{type:["hemisphere"]}},decay:{default:1,if:{type:["point","spot"]}},distance:{default:0,min:0,if:{type:["point","spot"]}},intensity:{default:3.14,min:0,if:{type:["ambient","directional","hemisphere","point","spot","probe"]}},penumbra:{default:0,min:0,max:1,if:{type:["spot"]}},type:{default:"directional",oneOf:["ambient","directional","hemisphere","point","spot","probe"],schemaChange:!0},target:{type:"selector",if:{type:["spot","directional"]}},castShadow:{default:!1,if:{type:["point","spot","directional"]}},shadowBias:{default:0,if:{castShadow:!0}},shadowCameraFar:{default:500,if:{castShadow:!0}},shadowCameraFov:{default:90,if:{castShadow:!0}},shadowCameraNear:{default:.5,if:{castShadow:!0}},shadowCameraTop:{default:5,if:{castShadow:!0}},shadowCameraRight:{default:5,if:{castShadow:!0}},shadowCameraBottom:{default:-5,if:{castShadow:!0}},shadowCameraLeft:{default:-5,if:{castShadow:!0}},shadowCameraVisible:{default:!1,if:{castShadow:!0}},shadowCameraAutomatic:{default:"",if:{type:["directional"]}},shadowMapHeight:{default:512,if:{castShadow:!0}},shadowMapWidth:{default:512,if:{castShadow:!0}},shadowRadius:{default:1,if:{castShadow:!0}}},init:function(){var l=this.el;this.light=null,this.defaultTarget=null,this.system.registerLight(l)},update:function(l){var R=this.data,N=(0,_.diff)(R,l),Y=this.light,G=this;if(Y&&!("type"in N)){var x=!1;Object.keys(N).forEach(function(U){var j=R[U];switch(U){case"color":{Y.color.set(j);break}case"groundColor":{Y.groundColor.set(j);break}case"angle":{Y.angle=D(j);break}case"target":{j===null?(R.type==="spot"||R.type==="directional")&&(Y.target=G.defaultTarget):j.hasLoaded?G.onSetTarget(j,Y):j.addEventListener("loaded",G.onSetTarget.bind(G,j,Y));break}case"envMap":G.updateProbeMap(R,Y);break;case"castShadow":case"shadowBias":case"shadowCameraFar":case"shadowCameraFov":case"shadowCameraNear":case"shadowCameraTop":case"shadowCameraRight":case"shadowCameraBottom":case"shadowCameraLeft":case"shadowCameraVisible":case"shadowMapHeight":case"shadowMapWidth":case"shadowRadius":x||(G.updateShadow(),x=!0);break;case"shadowCameraAutomatic":R.shadowCameraAutomatic?G.shadowCameraAutomaticEls=Array.from(document.querySelectorAll(R.shadowCameraAutomatic)):G.shadowCameraAutomaticEls=[];break;default:Y[U]=j}});return}this.setLight(this.data),this.updateShadow()},tick:function(){var l=new s.Box3,R=new s.Vector3,N=new s.Vector3,Y=new s.Matrix4,G=new s.Sphere,x=new s.Vector3;return function(){if(this.data.type==="directional"&&this.light.shadow&&this.light.shadow.camera instanceof s.OrthographicCamera&&this.shadowCameraAutomaticEls.length){var U=this.light.shadow.camera;U.getWorldDirection(R),U.getWorldPosition(N),Y.copy(U.matrixWorld),Y.invert(),U.near=1,U.left=1e5,U.right=-1e5,U.top=-1e5,U.bottom=1e5,this.shadowCameraAutomaticEls.forEach(function(j){l.setFromObject(j.object3D),l.getBoundingSphere(G);var Z=v.distanceOfPointFromPlane(N,R,G.center),CA=v.nearestPointInPlane(N,R,G.center,x),QA=CA.applyMatrix4(Y);U.near=Math.min(-Z-G.radius-1,U.near),U.left=Math.min(-G.radius+QA.x,U.left),U.right=Math.max(G.radius+QA.x,U.right),U.top=Math.max(G.radius+QA.y,U.top),U.bottom=Math.min(-G.radius+QA.y,U.bottom)}),U.updateProjectionMatrix()}}}(),setLight:function(l){var R=this.el,N=this.getLight(l);N&&(this.light&&R.removeObject3D("light"),this.light=N,this.light.el=R,R.setObject3D("light",this.light),(l.type==="spot"||l.type==="directional"||l.type==="hemisphere")&&R.getObject3D("light").translateY(-1),l.type==="spot"&&(R.setObject3D("light-target",this.defaultTarget),R.getObject3D("light-target").position.set(0,0,-1)),l.shadowCameraAutomatic?this.shadowCameraAutomaticEls=Array.from(document.querySelectorAll(l.shadowCameraAutomatic)):this.shadowCameraAutomaticEls=[])},updateShadow:function(){var l=this.el,R=this.data,N=this.light;N.castShadow=R.castShadow;var Y=l.getObject3D("cameraHelper");if(R.shadowCameraVisible&&!Y?(Y=new s.CameraHelper(N.shadow.camera),l.setObject3D("cameraHelper",Y)):!R.shadowCameraVisible&&Y&&l.removeObject3D("cameraHelper"),!R.castShadow)return N;N.shadow.bias=R.shadowBias,N.shadow.radius=R.shadowRadius,N.shadow.mapSize.height=R.shadowMapHeight,N.shadow.mapSize.width=R.shadowMapWidth,N.shadow.camera.near=R.shadowCameraNear,N.shadow.camera.far=R.shadowCameraFar,N.shadow.camera instanceof s.OrthographicCamera?(N.shadow.camera.top=R.shadowCameraTop,N.shadow.camera.right=R.shadowCameraRight,N.shadow.camera.bottom=R.shadowCameraBottom,N.shadow.camera.left=R.shadowCameraLeft):N.shadow.camera.fov=R.shadowCameraFov,N.shadow.camera.updateProjectionMatrix(),Y&&Y.update()},getLight:function(l){var R=l.angle,N=new s.Color(l.color);N=N.getHex();var Y=l.decay,G=l.distance,x=new s.Color(l.groundColor);x=x.getHex();var U=l.intensity,j=l.type,Z=l.target,CA=null;switch(j.toLowerCase()){case"ambient":return new s.AmbientLight(N,U);case"directional":return CA=new s.DirectionalLight(N,U),this.defaultTarget=CA.target,Z&&(Z.hasLoaded?this.onSetTarget(Z,CA):Z.addEventListener("loaded",this.onSetTarget.bind(this,Z,CA))),CA;case"hemisphere":return new s.HemisphereLight(N,x,U);case"point":return new s.PointLight(N,U,G,Y);case"spot":return CA=new s.SpotLight(N,U,G,D(R),l.penumbra,Y),this.defaultTarget=CA.target,Z&&(Z.hasLoaded?this.onSetTarget(Z,CA):Z.addEventListener("loaded",this.onSetTarget.bind(this,Z,CA))),CA;case"probe":return CA=new s.LightProbe,this.updateProbeMap(l,CA),CA;default:h("%s is not a valid light type. Choose from ambient, directional, hemisphere, point, spot.",j)}},updateProbeMap:function(l,R){if(!l.envMap){R.copy(new s.LightProbe);return}m[l.envMap]===void 0&&(m[l.envMap]=new window.Promise(function(N){_.srcLoader.validateCubemapSrc(l.envMap,function(G){p.load(G,function(x){var U=z.LightProbeGenerator.fromCubeTexture(x);m[l.envMap]=U,N(U)})})})),m[l.envMap]instanceof window.Promise?m[l.envMap].then(function(N){R.copy(N)}):m[l.envMap]instanceof s.LightProbe&&R.copy(m[l.envMap])},onSetTarget:function(l,R){R.target=l.object3D},remove:function(){var l=this.el;l.removeObject3D("light"),l.getObject3D("cameraHelper")&&l.removeObject3D("cameraHelper")}})},"./src/components/line.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>_});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=(0,z.registerComponent)("line",{schema:{start:{type:"vec3",default:{x:0,y:0,z:0}},end:{type:"vec3",default:{x:0,y:0,z:0}},color:{type:"color",default:"#74BEC1"},opacity:{type:"number",default:1},visible:{default:!0}},multiple:!0,init:function(){var v=this.data,D,h;h=this.material=new s.LineBasicMaterial({color:v.color,opacity:v.opacity,transparent:v.opacity<1,visible:v.visible}),D=this.geometry=new s.BufferGeometry,D.setAttribute("position",new s.BufferAttribute(new Float32Array(2*3),3)),this.line=new s.Line(D,h),this.el.setObject3D(this.attrName,this.line)},update:function(v){var D=this.data,h=this.geometry,p=!1,m=this.material,u=h.attributes.position.array;T(D.start,v.start)||(u[0]=D.start.x,u[1]=D.start.y,u[2]=D.start.z,p=!0),T(D.end,v.end)||(u[3]=D.end.x,u[4]=D.end.y,u[5]=D.end.z,p=!0),p&&(h.attributes.position.needsUpdate=!0,h.computeBoundingSphere()),m.color.setStyle(D.color),m.opacity=D.opacity,m.transparent=D.opacity<1,m.visible=D.visible},remove:function(){this.el.removeObject3D(this.attrName,this.line)}});function T(v,D){return!v||!D?!1:v.x===D.x&&v.y===D.y&&v.z===D.z}},"./src/components/link.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>v});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=d("./src/core/shader.js"),T=15,v=(0,z.registerComponent)("link",{schema:{backgroundColor:{default:"red",type:"color"},borderColor:{default:"white",type:"color"},highlighted:{default:!1},highlightedColor:{default:"#24CAFF",type:"color"},href:{default:""},image:{type:"asset"},on:{default:"click"},peekMode:{default:!1},title:{default:""},titleColor:{default:"white",type:"color"},visualAspectEnabled:{default:!1}},init:function(){this.navigate=this.navigate.bind(this),this.previousQuaternion=void 0,this.quaternionClone=new s.Quaternion,this.hiddenEls=[]},update:function(D){var h=this.data,p=this.el,m,u;if(h.visualAspectEnabled){var l=this.el.getAttribute("scale");this.previewDistance=T*(l.x+l.y)/2,this.initVisualAspect(),m=h.highlighted?h.highlightedColor:h.backgroundColor,u=h.highlighted?h.highlightedColor:h.borderColor,p.setAttribute("material","backgroundColor",m),p.setAttribute("material","strokeColor",u),h.on!==D.on&&this.updateEventListener(),D.peekMode!==void 0&&h.peekMode!==D.peekMode&&this.updatePeekMode(),!(!h.image||D.image===h.image)&&p.setAttribute("material","pano",typeof h.image=="string"?h.image:h.image.src)}},updatePeekMode:function(){var D=this.el,h=this.sphereEl;this.data.peekMode?(this.hideAll(),D.getObject3D("mesh").visible=!1,h.setAttribute("visible",!0)):(this.showAll(),D.getObject3D("mesh").visible=!0,h.setAttribute("visible",!1))},play:function(){this.updateEventListener()},pause:function(){this.removeEventListener()},updateEventListener:function(){var D=this.el;D.isPlaying&&(this.removeEventListener(),D.addEventListener(this.data.on,this.navigate))},removeEventListener:function(){var D=this.data.on;D&&this.el.removeEventListener(D,this.navigate)},initVisualAspect:function(){var D=this.el,h,p,m;!this.data.visualAspectEnabled||this.visualAspectInitialized||(m=this.textEl=this.textEl||document.createElement("a-entity"),p=this.sphereEl=this.sphereEl||document.createElement("a-entity"),h=this.semiSphereEl=this.semiSphereEl||document.createElement("a-entity"),D.setAttribute("geometry",{primitive:"circle",radius:1,segments:64}),D.setAttribute("material",{shader:"portal",pano:this.data.image,side:"double",previewDistance:this.previewDistance}),m.setAttribute("text",{color:this.data.titleColor,align:"center",font:"kelsonsans",value:this.data.title||this.data.href,width:4}),m.setAttribute("position","0 1.5 0"),D.appendChild(m),h.setAttribute("geometry",{primitive:"sphere",radius:1,phiStart:0,segmentsWidth:64,segmentsHeight:64,phiLength:180,thetaStart:0,thetaLength:360}),h.setAttribute("material",{shader:"portal",borderEnabled:0,pano:this.data.image,side:"back",previewDistance:this.previewDistance}),h.setAttribute("rotation","0 180 0"),h.setAttribute("position","0 0 0"),h.setAttribute("visible",!1),D.appendChild(h),p.setAttribute("geometry",{primitive:"sphere",radius:10,segmentsWidth:64,segmentsHeight:64}),p.setAttribute("material",{shader:"portal",borderEnabled:0,pano:this.data.image,side:"back",previewDistance:this.previewDistance}),p.setAttribute("visible",!1),D.appendChild(p),this.visualAspectInitialized=!0)},navigate:function(){window.location=this.data.href},tick:function(){var D=new s.Vector3,h=new s.Vector3,p=new s.Quaternion,m=new s.Vector3;return function(){var u=this.el,l=u.object3D,R=u.sceneEl.camera,N,Y,G=this.textEl;if(this.data.visualAspectEnabled)if(l.updateMatrixWorld(),R.parent.updateMatrixWorld(),R.updateMatrixWorld(),l.matrix.decompose(h,p,m),h.setFromMatrixPosition(l.matrixWorld),D.setFromMatrixPosition(R.matrixWorld),Y=h.distanceTo(D),Y>this.previewDistance*1.33333)this.previousQuaternion||(this.quaternionClone.copy(p),this.previousQuaternion=this.quaternionClone),l.lookAt(D);else{if(N=this.calculateCameraPortalOrientation(),Y<.5){if(this.semiSphereEl.getAttribute("visible")===!0)return;G.setAttribute("text","width",1.5),N<=0?(G.setAttribute("position","0 0 0.75"),G.setAttribute("rotation","0 180 0"),this.semiSphereEl.setAttribute("rotation","0 0 0")):(G.setAttribute("position","0 0 -0.75"),G.setAttribute("rotation","0 0 0"),this.semiSphereEl.setAttribute("rotation","0 180 0")),u.getObject3D("mesh").visible=!1,this.semiSphereEl.setAttribute("visible",!0),this.peekCameraPortalOrientation=N}else N<=0?G.setAttribute("rotation","0 180 0"):G.setAttribute("rotation","0 0 0"),G.setAttribute("text","width",5),G.setAttribute("position","0 1.5 0"),u.getObject3D("mesh").visible=!0,this.semiSphereEl.setAttribute("visible",!1),this.peekCameraPortalOrientation=void 0;this.previousQuaternion&&(l.quaternion.copy(this.previousQuaternion),this.previousQuaternion=void 0)}}}(),hideAll:function(){var D=this.el,h=this.hiddenEls,p=this;h.length>0||D.sceneEl.object3D.traverse(function(m){m&&m.el&&m.el.hasAttribute("link-controls")||!m.el||m===D.sceneEl.object3D||m.el===D||m.el===p.sphereEl||m.el===D.sceneEl.cameraEl||m.el.getAttribute("visible")===!1||m.el===p.textEl||m.el===p.semiSphereEl||(m.el.setAttribute("visible",!1),h.push(m.el))})},showAll:function(){this.hiddenEls.forEach(function(D){D.setAttribute("visible",!0)}),this.hiddenEls=[]},calculateCameraPortalOrientation:function(){var D=new s.Matrix4,h=new s.Vector3,p=new s.Vector3(0,0,1),m=new s.Vector3(0,0,0);return function(){var u=this.el,l=u.sceneEl.camera;return h.set(0,0,0),p.set(0,0,1),m.set(0,0,0),u.object3D.matrixWorld.extractRotation(D),p.applyMatrix4(D),u.object3D.updateMatrixWorld(),u.object3D.localToWorld(m),l.parent.parent.updateMatrixWorld(),l.parent.updateMatrixWorld(),l.updateMatrixWorld(),l.localToWorld(h),h.sub(m).normalize(),p.normalize(),Math.sign(p.dot(h))}}(),remove:function(){this.removeEventListener()}});(0,_.registerShader)("portal",{schema:{borderEnabled:{default:1,type:"int",is:"uniform"},backgroundColor:{default:"red",type:"color",is:"uniform"},pano:{type:"map",is:"uniform"},strokeColor:{default:"white",type:"color",is:"uniform"},previewDistance:{default:T,type:"float",is:"uniform"}},vertexShader:["vec3 portalPosition;","varying vec3 vWorldPosition;","varying float vDistanceToCenter;","varying float vDistance;","void main() {","vDistanceToCenter = clamp(length(position - vec3(0.0, 0.0, 0.0)), 0.0, 1.0);","portalPosition = (modelMatrix * vec4(0.0, 0.0, 0.0, 1.0)).xyz;","vDistance = length(portalPosition - cameraPosition);","vWorldPosition = (modelMatrix * vec4(position, 1.0)).xyz;","gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);","}"].join(` `),fragmentShader:["#define RECIPROCAL_PI2 0.15915494","uniform sampler2D pano;","uniform vec3 strokeColor;","uniform vec3 backgroundColor;","uniform float borderEnabled;","uniform float previewDistance;","varying float vDistanceToCenter;","varying float vDistance;","varying vec3 vWorldPosition;","void main() {","vec3 direction = normalize(vWorldPosition - cameraPosition);","vec2 sampleUV;","float borderThickness = clamp(exp(-vDistance / 50.0), 0.6, 0.95);","sampleUV.y = clamp(direction.y * 0.5 + 0.5, 0.0, 1.0);","sampleUV.x = atan(direction.z, -direction.x) * -RECIPROCAL_PI2 + 0.5;","if (vDistanceToCenter > borderThickness && borderEnabled == 1.0) {","gl_FragColor = vec4(strokeColor, 1.0);","} else {","gl_FragColor = mix(texture2D(pano, sampleUV), vec4(backgroundColor, 1.0), clamp(pow((vDistance / previewDistance), 2.0), 0.0, 1.0));","}","}"].join(` `)})},"./src/components/logitech-mx-ink-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>p});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=d("./src/constants/index.js"),T=d("./src/utils/tracked-controls.js"),v="logitech-mx-ink",D=_.AFRAME_CDN_ROOT+"controllers/logitech/",h={left:{buttons:["front","back","none","none","none","tip"]},right:{buttons:["front","back","none","none","none","tip"]}},p=(0,z.registerComponent)("logitech-mx-ink-controls",{schema:{hand:{default:"left"},model:{default:!0},orientationOffset:{type:"vec3"}},mapping:h,init:function(){var m=this;this.onButtonChanged=this.onButtonChanged.bind(this),this.onButtonDown=function(u){(0,T.onButtonEvent)(u.detail.id,"down",m,m.data.hand)},this.onButtonUp=function(u){(0,T.onButtonEvent)(u.detail.id,"up",m,m.data.hand)},this.onButtonTouchEnd=function(u){(0,T.onButtonEvent)(u.detail.id,"touchend",m,m.data.hand)},this.onButtonTouchStart=function(u){(0,T.onButtonEvent)(u.detail.id,"touchstart",m,m.data.hand)},this.bindMethods()},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},bindMethods:function(){this.onModelLoaded=this.onModelLoaded.bind(this),this.onControllersUpdate=this.onControllersUpdate.bind(this),this.checkIfControllerPresent=this.checkIfControllerPresent.bind(this),this.removeControllersUpdateListener=this.removeControllersUpdateListener.bind(this),this.onAxisMoved=this.onAxisMoved.bind(this)},addEventListeners:function(){var m=this.el;m.addEventListener("buttonchanged",this.onButtonChanged),m.addEventListener("buttondown",this.onButtonDown),m.addEventListener("buttonup",this.onButtonUp),m.addEventListener("touchstart",this.onButtonTouchStart),m.addEventListener("touchend",this.onButtonTouchEnd),m.addEventListener("axismove",this.onAxisMoved),m.addEventListener("model-loaded",this.onModelLoaded),this.controllerEventsActive=!0},removeEventListeners:function(){var m=this.el;m.removeEventListener("buttonchanged",this.onButtonChanged),m.removeEventListener("buttondown",this.onButtonDown),m.removeEventListener("buttonup",this.onButtonUp),m.removeEventListener("touchstart",this.onButtonTouchStart),m.removeEventListener("touchend",this.onButtonTouchEnd),m.removeEventListener("axismove",this.onAxisMoved),m.removeEventListener("model-loaded",this.onModelLoaded),m.sceneEl.removeEventListener("enter-vr",this.onEnterVR),m.sceneEl.removeEventListener("exit-vr",this.onExitVR),this.controllerEventsActive=!1},checkIfControllerPresent:function(){var m=this.controllerObject3D;m&&(m.visible=!1),(0,T.checkControllerPresentAndSetup)(this,v,{hand:this.data.hand,iterateControllerProfiles:!0})},injectTrackedControls:function(){var m=this.el,u=this.data,l=v;m.setAttribute("tracked-controls",{id:l,hand:u.hand,handTrackingEnabled:!1,iterateControllerProfiles:!0,orientationOffset:u.orientationOffset}),this.loadModel()},loadModel:function(){var m=this.controllerObject3D;if(this.data.model){if(m){m.visible=this.el.sceneEl.is("vr-mode"),this.el.setObject3D("mesh",m);return}this.el.setAttribute("gltf-model",D+"logitech-mx-ink.glb")}},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener("controllersupdated",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener("controllersupdated",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onButtonChanged:function(m){var u=this.mapping[this.data.hand].buttons[m.detail.id],l;u&&(u==="trigger"&&(l=m.detail.state.value,console.log("analog value of trigger press: "+l)),this.el.emit(u+"changed",m.detail.state))},onModelLoaded:function(m){m.target!==this.el||!this.data.model||(this.el.emit("controllermodelready",{name:"logitech-mx-ink-controls",model:this.data.model,rayOrigin:new s.Vector3(0,0,0)}),this.controllerObject3D=this.el.getObject3D("mesh"),this.controllerObject3D.visible=this.el.sceneEl.is("vr-mode"))},onAxisMoved:function(m){(0,T.emitIfAxesChanged)(this,this.mapping.axes,m)}})},"./src/components/look-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>D});var s=d("./node_modules/three/build/three.core.js"),z=d("./vendor/DeviceOrientationControls.js"),_=d("./src/core/component.js"),T=d("./src/utils/index.js"),v=Math.PI/2,D=(0,_.registerComponent)("look-controls",{dependencies:["position","rotation"],schema:{enabled:{default:!0},magicWindowTrackingEnabled:{default:!0},pointerLockEnabled:{default:!1},reverseMouseDrag:{default:!1},reverseTouchDrag:{default:!1},touchEnabled:{default:!0},mouseEnabled:{default:!0}},init:function(){this.deltaYaw=0,this.previousHMDPosition=new s.Vector3,this.hmdQuaternion=new s.Quaternion,this.magicWindowAbsoluteEuler=new s.Euler,this.magicWindowDeltaEuler=new s.Euler,this.position=new s.Vector3,this.magicWindowObject=new s.Object3D,this.rotation={},this.deltaRotation={},this.savedPose=null,this.pointerLocked=!1,this.setupMouseControls(),this.bindMethods(),this.previousMouseEvent={},this.setupMagicWindowControls(),this.savedPose={position:new s.Vector3,rotation:new s.Euler},(this.el.sceneEl.is("vr-mode")||this.el.sceneEl.is("ar-mode"))&&this.onEnterVR()},setupMagicWindowControls:function(){var h,p=this.data;(T.device.isMobile()||T.device.isMobileDeviceRequestingDesktopSite())&&(h=this.magicWindowControls=new z.DeviceOrientationControls(this.magicWindowObject),typeof DeviceOrientationEvent<"u"&&DeviceOrientationEvent.requestPermission&&(h.enabled=!1,this.el.sceneEl.components["device-orientation-permission-ui"].permissionGranted?h.enabled=p.magicWindowTrackingEnabled:this.el.sceneEl.addEventListener("deviceorientationpermissiongranted",function(){h.enabled=p.magicWindowTrackingEnabled})))},update:function(h){var p=this.data;p.enabled!==h.enabled&&this.updateGrabCursor(p.enabled),h&&!p.magicWindowTrackingEnabled&&h.magicWindowTrackingEnabled&&(this.magicWindowAbsoluteEuler.set(0,0,0),this.magicWindowDeltaEuler.set(0,0,0)),this.magicWindowControls&&(this.magicWindowControls.enabled=p.magicWindowTrackingEnabled),h&&!p.pointerLockEnabled!==h.pointerLockEnabled&&(this.removeEventListeners(),this.addEventListeners(),this.pointerLocked&&this.exitPointerLock())},tick:function(h){var p=this.data;p.enabled&&this.updateOrientation()},play:function(){this.addEventListeners()},pause:function(){this.removeEventListeners(),this.pointerLocked&&this.exitPointerLock()},remove:function(){this.removeEventListeners(),this.pointerLocked&&this.exitPointerLock()},bindMethods:function(){this.onMouseDown=this.onMouseDown.bind(this),this.onMouseMove=this.onMouseMove.bind(this),this.onMouseUp=this.onMouseUp.bind(this),this.onTouchStart=this.onTouchStart.bind(this),this.onTouchMove=this.onTouchMove.bind(this),this.onTouchEnd=this.onTouchEnd.bind(this),this.onEnterVR=this.onEnterVR.bind(this),this.onExitVR=this.onExitVR.bind(this),this.onPointerLockChange=this.onPointerLockChange.bind(this),this.onPointerLockError=this.onPointerLockError.bind(this)},setupMouseControls:function(){this.mouseDown=!1,this.pitchObject=new s.Object3D,this.yawObject=new s.Object3D,this.yawObject.position.y=10,this.yawObject.add(this.pitchObject)},addEventListeners:function(){var h=this.el.sceneEl,p=h.canvas;if(!p){h.addEventListener("render-target-loaded",this.addEventListeners.bind(this));return}p.addEventListener("mousedown",this.onMouseDown,!1),window.addEventListener("mousemove",this.onMouseMove,!1),window.addEventListener("mouseup",this.onMouseUp,!1),p.addEventListener("touchstart",this.onTouchStart,{passive:!0}),window.addEventListener("touchmove",this.onTouchMove,{passive:!0}),window.addEventListener("touchend",this.onTouchEnd,{passive:!0}),h.addEventListener("enter-vr",this.onEnterVR),h.addEventListener("exit-vr",this.onExitVR),this.data.pointerLockEnabled&&(document.addEventListener("pointerlockchange",this.onPointerLockChange,!1),document.addEventListener("mozpointerlockchange",this.onPointerLockChange,!1),document.addEventListener("pointerlockerror",this.onPointerLockError,!1))},removeEventListeners:function(){var h=this.el.sceneEl,p=h&&h.canvas;p&&(p.removeEventListener("mousedown",this.onMouseDown),window.removeEventListener("mousemove",this.onMouseMove),window.removeEventListener("mouseup",this.onMouseUp),p.removeEventListener("touchstart",this.onTouchStart),window.removeEventListener("touchmove",this.onTouchMove),window.removeEventListener("touchend",this.onTouchEnd),h.removeEventListener("enter-vr",this.onEnterVR),h.removeEventListener("exit-vr",this.onExitVR),document.removeEventListener("pointerlockchange",this.onPointerLockChange,!1),document.removeEventListener("mozpointerlockchange",this.onPointerLockChange,!1),document.removeEventListener("pointerlockerror",this.onPointerLockError,!1))},updateOrientation:function(){var h=this.el.object3D,p=this.pitchObject,m=this.yawObject,u=this.el.sceneEl;(u.is("vr-mode")||u.is("ar-mode"))&&u.checkHeadsetConnected()||(this.updateMagicWindowOrientation(),h.rotation.x=this.magicWindowDeltaEuler.x+p.rotation.x,h.rotation.y=this.magicWindowDeltaEuler.y+m.rotation.y,h.rotation.z=this.magicWindowDeltaEuler.z)},updateMagicWindowOrientation:function(){var h=this.magicWindowAbsoluteEuler,p=this.magicWindowDeltaEuler;this.magicWindowControls&&this.magicWindowControls.enabled&&(this.magicWindowControls.update(),h.setFromQuaternion(this.magicWindowObject.quaternion,"YXZ"),!this.previousMagicWindowYaw&&h.y!==0&&(this.previousMagicWindowYaw=h.y),this.previousMagicWindowYaw&&(p.x=h.x,p.y+=h.y-this.previousMagicWindowYaw,p.z=h.z,this.previousMagicWindowYaw=h.y))},onMouseMove:function(h){var p,m,u,l=this.pitchObject,R=this.previousMouseEvent,N=this.yawObject;!this.data.enabled||!this.mouseDown&&!this.pointerLocked||(this.pointerLocked?(m=h.movementX||h.mozMovementX||0,u=h.movementY||h.mozMovementY||0):(m=h.screenX-R.screenX,u=h.screenY-R.screenY),this.previousMouseEvent.screenX=h.screenX,this.previousMouseEvent.screenY=h.screenY,p=this.data.reverseMouseDrag?1:-1,N.rotation.y+=m*.002*p,l.rotation.x+=u*.002*p,l.rotation.x=Math.max(-v,Math.min(v,l.rotation.x)))},onMouseDown:function(h){var p=this.el.sceneEl;if(!(!this.data.enabled||!this.data.mouseEnabled||(p.is("vr-mode")||p.is("ar-mode"))&&p.checkHeadsetConnected())&&h.button===0){var m=p&&p.canvas;this.mouseDown=!0,this.previousMouseEvent.screenX=h.screenX,this.previousMouseEvent.screenY=h.screenY,this.showGrabbingCursor(),this.data.pointerLockEnabled&&!this.pointerLocked&&(m.requestPointerLock?m.requestPointerLock():m.mozRequestPointerLock&&m.mozRequestPointerLock())}},showGrabbingCursor:function(){this.el.sceneEl.canvas.style.cursor="grabbing"},hideGrabbingCursor:function(){this.el.sceneEl.canvas.style.cursor=""},onMouseUp:function(){this.mouseDown=!1,this.hideGrabbingCursor()},onTouchStart:function(h){h.touches.length!==1||!this.data.touchEnabled||this.el.sceneEl.is("vr-mode")||this.el.sceneEl.is("ar-mode")||(this.touchStart={x:h.touches[0].pageX,y:h.touches[0].pageY},this.touchStarted=!0)},onTouchMove:function(h){var p,m=this.el.sceneEl.canvas,u,l=this.yawObject;!this.touchStarted||!this.data.touchEnabled||(u=2*Math.PI*(h.touches[0].pageX-this.touchStart.x)/m.clientWidth,p=this.data.reverseTouchDrag?1:-1,l.rotation.y-=u*.5*p,this.touchStart={x:h.touches[0].pageX,y:h.touches[0].pageY})},onTouchEnd:function(){this.touchStarted=!1},onEnterVR:function(){var h=this.el.sceneEl;h.checkHeadsetConnected()&&(this.saveCameraPose(),this.el.object3D.position.set(0,0,0),this.el.object3D.rotation.set(0,0,0),h.hasWebXR&&(this.el.object3D.matrixAutoUpdate=!1,this.el.object3D.updateMatrix()))},onExitVR:function(){this.el.sceneEl.checkHeadsetConnected()&&(this.restoreCameraPose(),this.previousHMDPosition.set(0,0,0),this.el.object3D.matrixAutoUpdate=!0)},onPointerLockChange:function(){this.pointerLocked=!!(document.pointerLockElement||document.mozPointerLockElement)},onPointerLockError:function(){this.pointerLocked=!1},exitPointerLock:function(){document.exitPointerLock(),this.pointerLocked=!1},updateGrabCursor:function(h){var p=this.el.sceneEl;function m(){p.canvas.classList.add("a-grab-cursor")}function u(){p.canvas.classList.remove("a-grab-cursor")}if(!p.canvas){h?p.addEventListener("render-target-loaded",m):p.addEventListener("render-target-loaded",u);return}if(h){m();return}u()},saveCameraPose:function(){var h=this.el;this.savedPose.position.copy(h.object3D.position),this.savedPose.rotation.copy(h.object3D.rotation),this.hasSavedPose=!0},restoreCameraPose:function(){var h=this.el,p=this.savedPose;this.hasSavedPose&&(h.object3D.position.copy(p.position),h.object3D.rotation.copy(p.rotation),this.hasSavedPose=!1)}})},"./src/components/magicleap-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>m});var s=d("./src/core/component.js"),z=d("./src/constants/index.js"),_=d("./src/utils/tracked-controls.js"),T="magicleap",v="-one",D=T+v,h=z.AFRAME_CDN_ROOT+"controllers/magicleap/magicleap-one-controller.glb",p={axes:{touchpad:[0,1]},buttons:["trigger","grip","touchpad","menu"]},m=(0,s.registerComponent)("magicleap-controls",{schema:{hand:{default:"none"},model:{default:!0}},mapping:p,init:function(){var u=this;this.controllerPresent=!1,this.onButtonChanged=this.onButtonChanged.bind(this),this.onButtonDown=function(l){(0,_.onButtonEvent)(l.detail.id,"down",u)},this.onButtonUp=function(l){(0,_.onButtonEvent)(l.detail.id,"up",u)},this.onButtonTouchEnd=function(l){(0,_.onButtonEvent)(l.detail.id,"touchend",u)},this.onButtonTouchStart=function(l){(0,_.onButtonEvent)(l.detail.id,"touchstart",u)},this.previousButtonValues={},this.bindMethods()},update:function(){var u=this.data;this.controllerIndex=u.hand==="right"?0:u.hand==="left"?1:2},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},bindMethods:function(){this.onModelLoaded=this.onModelLoaded.bind(this),this.onControllersUpdate=this.onControllersUpdate.bind(this),this.checkIfControllerPresent=this.checkIfControllerPresent.bind(this),this.removeControllersUpdateListener=this.removeControllersUpdateListener.bind(this),this.onAxisMoved=this.onAxisMoved.bind(this)},addEventListeners:function(){var u=this.el;u.addEventListener("buttonchanged",this.onButtonChanged),u.addEventListener("buttondown",this.onButtonDown),u.addEventListener("buttonup",this.onButtonUp),u.addEventListener("touchstart",this.onButtonTouchStart),u.addEventListener("touchend",this.onButtonTouchEnd),u.addEventListener("axismove",this.onAxisMoved),u.addEventListener("model-loaded",this.onModelLoaded),this.controllerEventsActive=!0},removeEventListeners:function(){var u=this.el;u.removeEventListener("buttonchanged",this.onButtonChanged),u.removeEventListener("buttondown",this.onButtonDown),u.removeEventListener("buttonup",this.onButtonUp),u.removeEventListener("touchstart",this.onButtonTouchStart),u.removeEventListener("touchend",this.onButtonTouchEnd),u.removeEventListener("axismove",this.onAxisMoved),u.removeEventListener("model-loaded",this.onModelLoaded),this.controllerEventsActive=!1},checkIfControllerPresent:function(){var u=this.data;(0,_.checkControllerPresentAndSetup)(this,D,{index:this.controllerIndex,hand:u.hand})},injectTrackedControls:function(){var u=this.el,l=this.data;u.setAttribute("tracked-controls",{idPrefix:D,hand:l.hand,controller:this.controllerIndex}),this.data.model&&this.el.setAttribute("gltf-model",h)},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener("controllersupdated",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener("controllersupdated",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onButtonChanged:function(u){var l=this.mapping.buttons[u.detail.id],R;l&&(l==="trigger"&&(R=u.detail.state.value,console.log("analog value of trigger press: "+R)),this.el.emit(l+"changed",u.detail.state))},onModelLoaded:function(u){var l=u.detail.model;l.scale.set(.01,.01,.01)},onAxisMoved:function(u){(0,_.emitIfAxesChanged)(this,this.mapping.axes,u)},updateModel:function(u,l){},setButtonColor:function(u,l){}})},"./src/components/material.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>D});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/utils/index.js"),_=d("./src/core/component.js"),T=d("./src/core/shader.js"),v=z.debug("components:material:error"),D=(0,_.registerComponent)("material",{schema:{alphaTest:{default:0,min:0,max:1},depthTest:{default:!0},depthWrite:{default:!0},flatShading:{default:!1},npot:{default:!1},offset:{type:"vec2",default:{x:0,y:0}},opacity:{default:1,min:0,max:1},repeat:{type:"vec2",default:{x:1,y:1}},shader:{default:"standard",oneOf:T.shaderNames,schemaChange:!0},side:{default:"front",oneOf:["front","back","double"]},transparent:{default:!1},vertexColorsEnabled:{default:!1},visible:{default:!0},blending:{default:"normal",oneOf:["none","normal","additive","subtractive","multiply"]},dithering:{default:!0},anisotropy:{default:0,min:0}},init:function(){this.material=null},update:function(u){var l=this.data;(!this.shader||l.shader!==u.shader)&&this.updateShader(l.shader),this.shader.update(this.data),this.updateMaterial(u)},updateSchema:function(u){var l,R,N,Y;R=u&&u.shader,l=this.oldData&&this.oldData.shader,Y=R||l,N=T.shaders[Y]&&T.shaders[Y].schema,N||v("Unknown shader schema "+Y),!(l&&R===l)&&(this.extendSchema(N),this.updateBehavior())},updateBehavior:function(){var u,l=this.el.sceneEl,R=this.schema,N=this,Y;function G(x,U){var j;for(j in Y)Y[j]=x;N.shader.update(Y)}this.tick=void 0,Y={};for(u in R)R[u].type==="time"&&(this.tick=G,Y[u]=!0);l&&(this.tick?l.addBehavior(this):l.removeBehavior(this))},updateShader:function(u){var l=this.data,R=T.shaders[u]&&T.shaders[u].Shader,N;if(!R)throw new Error("Unknown shader "+u);N=this.shader=new R,N.el=this.el,N.init(l),this.setMaterial(N.material),this.updateSchema(l)},updateMaterial:function(u){var l=this.data,R=this.material,N;R.alphaTest=l.alphaTest,R.depthTest=l.depthTest!==!1,R.depthWrite=l.depthWrite!==!1,R.opacity=l.opacity,R.flatShading=l.flatShading,R.side=h(l.side),R.transparent=l.transparent!==!1||l.opacity<1,R.vertexColors=l.vertexColorsEnabled,R.visible=l.visible,R.blending=p(l.blending),R.dithering=l.dithering;for(N in u)break;N&&(u.alphaTest!==l.alphaTest||u.side!==l.side||u.vertexColorsEnabled!==l.vertexColorsEnabled)&&(R.needsUpdate=!0)},remove:function(){var u=new s.MeshBasicMaterial,l=this.material,R=this.el.getObject3D("mesh");R&&(R.material=u),m(l,this.system)},setMaterial:function(u){var l=this.el,R,N=this.system;this.material&&m(this.material,N),this.material=u,N.registerMaterial(u),R=l.getObject3D("mesh"),R?R.material=u:l.addEventListener("object3dset",function Y(G){G.detail.type!=="mesh"||G.target!==l||(l.getObject3D("mesh").material=u,l.removeEventListener("object3dset",Y))})}});function h(u){switch(u){case"back":return s.BackSide;case"double":return s.DoubleSide;default:return s.FrontSide}}function p(u){switch(u){case"none":return s.NoBlending;case"additive":return s.AdditiveBlending;case"subtractive":return s.SubtractiveBlending;case"multiply":return s.MultiplyBlending;default:return s.NormalBlending}}function m(u,l){u.dispose(),l.unregisterMaterial(u),Object.keys(u).filter(function(R){return u[R]&&u[R].isTexture}).forEach(function(R){u[R].dispose()})}},"./src/components/meta-touch-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>N});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=d("./src/constants/index.js"),T=d("./src/utils/tracked-controls.js"),v="oculus-touch",D=_.AFRAME_CDN_ROOT+"controllers/oculus/oculus-touch-controller-",h=_.AFRAME_CDN_ROOT+"controllers/meta/",p={left:{modelUrl:D+"left.gltf",rayOrigin:{origin:{x:.002,y:-.005,z:-.03},direction:{x:0,y:-.8,z:-1}},modelPivotOffset:new s.Vector3(-.005,.036,-.037),modelPivotRotation:new s.Euler(Math.PI/4.5,0,0)},right:{modelUrl:D+"right.gltf",rayOrigin:{origin:{x:-.002,y:-.005,z:-.03},direction:{x:0,y:-.8,z:-1}},modelPivotOffset:new s.Vector3(.005,.036,-.037),modelPivotRotation:new s.Euler(Math.PI/4.5,0,0)}},m="oculus-touch",u={"oculus-touch":p,"oculus-touch-v2":{left:{modelUrl:D+"gen2-left.gltf",rayOrigin:{origin:{x:-.006,y:-.03,z:-.04},direction:{x:0,y:-.9,z:-1}},modelPivotOffset:new s.Vector3(0,-.007,-.021),modelPivotRotation:new s.Euler(-Math.PI/4,0,0)},right:{modelUrl:D+"gen2-right.gltf",rayOrigin:{origin:{x:.006,y:-.03,z:-.04},direction:{x:0,y:-.9,z:-1}},modelPivotOffset:new s.Vector3(0,-.007,-.021),modelPivotRotation:new s.Euler(-Math.PI/4,0,0)}},"oculus-touch-v3":{left:{modelUrl:D+"v3-left.glb",rayOrigin:{origin:{x:.0065,y:-.0186,z:-.05},direction:{x:.12394785839500175,y:-.5944043672340157,z:-.7945567170519814}},modelPivotOffset:new s.Vector3(0,0,0),modelPivotRotation:new s.Euler(0,0,0)},right:{modelUrl:D+"v3-right.glb",rayOrigin:{origin:{x:-.0065,y:-.0186,z:-.05},direction:{x:-.12394785839500175,y:-.5944043672340157,z:-.7945567170519814}},modelPivotOffset:new s.Vector3(0,0,0),modelPivotRotation:new s.Euler(0,0,0)}},"meta-quest-touch-pro":{left:{modelUrl:h+"quest-touch-pro-left.glb",rayOrigin:{origin:{x:.0065,y:-.0186,z:-.05},direction:{x:.12394785839500175,y:-.5944043672340157,z:-.7945567170519814}},modelPivotOffset:new s.Vector3(0,0,0),modelPivotRotation:new s.Euler(0,0,0)},right:{modelUrl:h+"quest-touch-pro-right.glb",rayOrigin:{origin:{x:-.0065,y:-.0186,z:-.05},direction:{x:-.12394785839500175,y:-.5944043672340157,z:-.7945567170519814}},modelPivotOffset:new s.Vector3(0,0,0),modelPivotRotation:new s.Euler(0,0,0)}},"meta-quest-touch-plus":{left:{modelUrl:h+"quest-touch-plus-left.glb",rayOrigin:{origin:{x:.0065,y:-.0186,z:-.05},direction:{x:.12394785839500175,y:-.5944043672340157,z:-.7945567170519814}},modelPivotOffset:new s.Vector3(0,0,0),modelPivotRotation:new s.Euler(0,0,0)},right:{modelUrl:h+"quest-touch-plus-right.glb",rayOrigin:{origin:{x:-.0065,y:-.0186,z:-.05},direction:{x:-.12394785839500175,y:-.5944043672340157,z:-.7945567170519814}},modelPivotOffset:new s.Vector3(0,0,0),modelPivotRotation:new s.Euler(0,0,0)}}},l={left:{axes:{thumbstick:[2,3]},buttons:["trigger","grip","none","thumbstick","xbutton","ybutton","surface"]},right:{axes:{thumbstick:[2,3]},buttons:["trigger","grip","none","thumbstick","abutton","bbutton","surface"]}},R={schema:{hand:{default:"left"},buttonColor:{type:"color",default:"#999"},buttonTouchColor:{type:"color",default:"#8AB"},buttonHighlightColor:{type:"color",default:"#2DF"},model:{default:!0},controllerType:{default:"auto",oneOf:["auto","oculus-touch","oculus-touch-v2","oculus-touch-v3"]}},after:["tracked-controls"],mapping:l,bindMethods:function(){this.onButtonChanged=this.onButtonChanged.bind(this),this.onThumbstickMoved=this.onThumbstickMoved.bind(this),this.onModelLoaded=this.onModelLoaded.bind(this),this.onControllersUpdate=this.onControllersUpdate.bind(this),this.checkIfControllerPresent=this.checkIfControllerPresent.bind(this),this.onAxisMoved=this.onAxisMoved.bind(this)},init:function(){var G=this;this.onButtonDown=function(x){(0,T.onButtonEvent)(x.detail.id,"down",G,G.data.hand)},this.onButtonUp=function(x){(0,T.onButtonEvent)(x.detail.id,"up",G,G.data.hand)},this.onButtonTouchStart=function(x){(0,T.onButtonEvent)(x.detail.id,"touchstart",G,G.data.hand)},this.onButtonTouchEnd=function(x){(0,T.onButtonEvent)(x.detail.id,"touchend",G,G.data.hand)},this.controllerPresent=!1,this.previousButtonValues={},this.bindMethods(),this.triggerEuler=new s.Euler},addEventListeners:function(){var G=this.el;G.addEventListener("buttonchanged",this.onButtonChanged),G.addEventListener("buttondown",this.onButtonDown),G.addEventListener("buttonup",this.onButtonUp),G.addEventListener("touchstart",this.onButtonTouchStart),G.addEventListener("touchend",this.onButtonTouchEnd),G.addEventListener("axismove",this.onAxisMoved),G.addEventListener("model-loaded",this.onModelLoaded),G.addEventListener("thumbstickmoved",this.onThumbstickMoved),this.controllerEventsActive=!0},removeEventListeners:function(){var G=this.el;G.removeEventListener("buttonchanged",this.onButtonChanged),G.removeEventListener("buttondown",this.onButtonDown),G.removeEventListener("buttonup",this.onButtonUp),G.removeEventListener("touchstart",this.onButtonTouchStart),G.removeEventListener("touchend",this.onButtonTouchEnd),G.removeEventListener("axismove",this.onAxisMoved),G.removeEventListener("model-loaded",this.onModelLoaded),G.removeEventListener("thumbstickmoved",this.onThumbstickMoved),this.controllerEventsActive=!1},checkIfControllerPresent:function(){var G=this.controllerObject3D;G&&(G.visible=!1),(0,T.checkControllerPresentAndSetup)(this,v,{hand:this.data.hand,iterateControllerProfiles:!0})},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},loadModel:function(G){var x=this.data,U;if(x.model){if(this.controllerObject3D){this.controllerObject3D.visible=!0,this.el.setObject3D("mesh",this.controllerObject3D);return}if(this.displayModel=u[x.controllerType]||u[m],x.controllerType==="auto"){U=m;for(var j=Object.keys(u),Z=0;Z{d.r(O);var s=d("./node_modules/three/build/three.core.js"),z=d("./node_modules/three/examples/jsm/math/OBB.js"),_=d("./src/core/component.js");(0,_.registerComponent)("obb-collider",{schema:{size:{default:0},trackedObject3D:{default:""},minimumColliderDimension:{default:.02},centerModel:{default:!1}},init:function(){this.previousScale=new s.Vector3().copy(this.el.object3D.scale),this.auxEuler=new s.Euler,this.boundingBox=new s.Box3,this.boundingBoxSize=new s.Vector3,this.updateCollider=this.updateCollider.bind(this),this.onModelLoaded=this.onModelLoaded.bind(this),this.updateBoundingBox=this.updateBoundingBox.bind(this),this.el.addEventListener("model-loaded",this.onModelLoaded),this.updateCollider(),this.system.addCollider(this.el)},remove:function(){this.system.removeCollider(this.el)},update:function(){this.data.trackedObject3D&&(this.trackedObject3DPath=this.data.trackedObject3D.split("."))},onModelLoaded:function(){this.data.centerModel&&this.centerModel(),this.updateCollider()},centerModel:function(){var T=this.el,v=T.components["gltf-model"]&&T.components["gltf-model"].model,D,h;v&&(this.el.removeObject3D("mesh"),D=new s.Box3().setFromObject(v),h=D.getCenter(new s.Vector3),v.position.x+=v.position.x-h.x,v.position.y+=v.position.y-h.y,v.position.z+=v.position.z-h.z,this.el.setObject3D("mesh",v))},updateCollider:function(){var T=this.el,v=this.boundingBoxSize,D=this.aabb=this.aabb||new z.OBB;if(this.obb=this.obb||new z.OBB,!T.hasLoaded){T.addEventListener("loaded",this.updateCollider);return}this.updateBoundingBox(),D.halfSize.copy(v).multiplyScalar(.5),this.el.sceneEl.systems["obb-collider"].data.showColliders&&this.showCollider()},showCollider:function(){this.updateColliderMesh(),this.renderColliderMesh.visible=!0},updateColliderMesh:function(){var T=this.renderColliderMesh,v=this.boundingBoxSize;if(!T){this.initColliderMesh();return}T.geometry.dispose(),T.geometry=new s.BoxGeometry(v.x,v.y,v.z)},hideCollider:function(){this.renderColliderMesh&&(this.renderColliderMesh.visible=!1)},initColliderMesh:function(){var T,v,D;T=this.boundingBoxSize,v=this.renderColliderGeometry=new s.BoxGeometry(T.x,T.y,T.z),D=this.renderColliderMesh=new s.Mesh(v,new s.MeshLambertMaterial({color:65280,side:s.DoubleSide})),D.matrixAutoUpdate=!1,D.matrixWorldAutoUpdate=!1,D.updateMatrixWorld=function(){},this.el.sceneEl.object3D.add(D)},updateBoundingBox:function(){var T=new s.Vector3,v=new s.Vector3,D=new s.Quaternion,h=new s.Quaternion,p=new s.Matrix4;return function(){var m=this.auxEuler,u=this.boundingBox,l=this.data.size,R=this.trackedObject3D||this.el.object3D,N=this.boundingBoxSize,Y=this.data.minimumColliderDimension;if(l){this.boundingBoxSize.x=l,this.boundingBoxSize.y=l,this.boundingBoxSize.z=l;return}m.copy(R.rotation),R.rotation.set(0,0,0),R.parent.matrixWorld.decompose(T,D,v),p.compose(T,h,v),R.parent.matrixWorld.copy(p),u.setFromObject(R,!0),u.getSize(N),N.x=N.x1e-4||Math.abs(v.y-this.previousScale.y)>1e-4||Math.abs(v.z-this.previousScale.z)>1e-4)&&this.updateCollider(),this.previousScale.copy(v),v.set(1,1,1),h.compose(T,D,v),m&&m.matrixWorld.copy(h),p.copy(this.aabb),p.applyMatrix4(h))}}()})},"./src/components/obj-model.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>h});var s=d("./node_modules/three/build/three.core.js"),z=d("./node_modules/three/examples/jsm/loaders/OBJLoader.js"),_=d("./node_modules/three/examples/jsm/loaders/MTLLoader.js"),T=d("./src/utils/index.js"),v=d("./src/core/component.js"),D=(0,T.debug)("components:obj-model:warn"),h=(0,v.registerComponent)("obj-model",{schema:{mtl:{type:"model"},obj:{type:"model"}},init:function(){var p=this;this.model=null,this.objLoader=new z.OBJLoader,this.mtlLoader=new _.MTLLoader(this.objLoader.manager),this.mtlLoader.crossOrigin="",this.el.addEventListener("componentinitialized",function(m){p.model&&m.detail.name==="material"&&p.applyMaterial()})},update:function(){var p=this.data;p.obj&&(this.resetMesh(),this.loadObj(p.obj,p.mtl))},remove:function(){this.resetMesh()},resetMesh:function(){this.model&&this.el.removeObject3D("mesh")},loadObj:function(p,m){var u=this,l=this.el,R=this.mtlLoader,N=this.objLoader,Y=this.el.sceneEl.systems.renderer,G=m.substr(0,m.lastIndexOf("/")+1);if(m){l.hasAttribute("material")&&D("Material component properties are ignored when a .MTL is provided"),R.setResourcePath(G),R.load(m,function(x){x.preload(),N.setMaterials(x),N.load(p,function(U){u.model=U,u.model.traverse(function(j){if(j.isMesh){var Z=j.material;Z.map&&Y.applyColorCorrection(Z.map),Z.emissiveMap&&Y.applyColorCorrection(Z.emissiveMap)}}),l.setObject3D("mesh",U),l.emit("model-loaded",{format:"obj",model:U})})});return}N.load(p,function(U){u.model=U,u.applyMaterial(),l.setObject3D("mesh",U),l.emit("model-loaded",{format:"obj",model:U})})},applyMaterial:function(){var p=this.el.components.material;p&&this.model.traverse(function(m){m instanceof s.Mesh&&(m.material=p.material)})}})},"./src/components/oculus-go-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>h});var s=d("./src/core/component.js"),z=d("./src/constants/index.js"),_=d("./src/utils/tracked-controls.js"),T=z.AFRAME_CDN_ROOT+"controllers/oculus/go/oculus-go-controller.gltf",v="oculus-go",D={axes:{touchpad:[0,1]},buttons:["trigger","none","touchpad"]},h=(0,s.registerComponent)("oculus-go-controls",{schema:{hand:{default:""},buttonColor:{type:"color",default:"#FFFFFF"},buttonTouchedColor:{type:"color",default:"#BBBBBB"},buttonHighlightColor:{type:"color",default:"#7A7A7A"},model:{default:!0}},mapping:D,bindMethods:function(){this.onModelLoaded=this.onModelLoaded.bind(this),this.onControllersUpdate=this.onControllersUpdate.bind(this),this.checkIfControllerPresent=this.checkIfControllerPresent.bind(this),this.removeControllersUpdateListener=this.removeControllersUpdateListener.bind(this),this.onAxisMoved=this.onAxisMoved.bind(this)},init:function(){var p=this;this.onButtonChanged=this.onButtonChanged.bind(this),this.onButtonDown=function(m){(0,_.onButtonEvent)(m.detail.id,"down",p)},this.onButtonUp=function(m){(0,_.onButtonEvent)(m.detail.id,"up",p)},this.onButtonTouchStart=function(m){(0,_.onButtonEvent)(m.detail.id,"touchstart",p)},this.onButtonTouchEnd=function(m){(0,_.onButtonEvent)(m.detail.id,"touchend",p)},this.controllerPresent=!1,this.bindMethods()},addEventListeners:function(){var p=this.el;p.addEventListener("buttonchanged",this.onButtonChanged),p.addEventListener("buttondown",this.onButtonDown),p.addEventListener("buttonup",this.onButtonUp),p.addEventListener("touchstart",this.onButtonTouchStart),p.addEventListener("touchend",this.onButtonTouchEnd),p.addEventListener("model-loaded",this.onModelLoaded),p.addEventListener("axismove",this.onAxisMoved),this.controllerEventsActive=!0},removeEventListeners:function(){var p=this.el;p.removeEventListener("buttonchanged",this.onButtonChanged),p.removeEventListener("buttondown",this.onButtonDown),p.removeEventListener("buttonup",this.onButtonUp),p.removeEventListener("touchstart",this.onButtonTouchStart),p.removeEventListener("touchend",this.onButtonTouchEnd),p.removeEventListener("model-loaded",this.onModelLoaded),p.removeEventListener("axismove",this.onAxisMoved),this.controllerEventsActive=!1},checkIfControllerPresent:function(){(0,_.checkControllerPresentAndSetup)(this,v,this.data.hand?{hand:this.data.hand}:{})},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},injectTrackedControls:function(){var p=this.el,m=this.data;p.setAttribute("tracked-controls",{hand:m.hand,idPrefix:v}),this.data.model&&this.el.setAttribute("gltf-model",T)},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener("controllersupdated",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener("controllersupdated",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onModelLoaded:function(p){var m=p.detail.model,u;p.target!==this.el||!this.data.model||(u=this.buttonMeshes={},u.trigger=m.getObjectByName("oculus_go_button_trigger"),u.trackpad=m.getObjectByName("oculus_go_touchpad"),u.touchpad=m.getObjectByName("oculus_go_touchpad"))},onButtonChanged:function(p){var m=this.mapping.buttons[p.detail.id];m&&this.el.emit(m+"changed",p.detail.state)},onAxisMoved:function(p){(0,_.emitIfAxesChanged)(this,this.mapping.axes,p)},updateModel:function(p,m){this.data.model&&this.updateButtonModel(p,m)},updateButtonModel:function(p,m){var u=this.buttonMeshes;if(!(!u||!u[p])){var l,R;switch(m){case"down":l=this.data.buttonHighlightColor;break;case"touchstart":l=this.data.buttonTouchedColor;break;default:l=this.data.buttonColor}R=u[p],R.material.color.set(l)}}})},"./src/components/pico-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>p});var s=d("./src/core/component.js"),z=d("./node_modules/three/build/three.core.js"),_=d("./src/constants/index.js"),T=d("./src/utils/tracked-controls.js"),v="pico-4",D=_.AFRAME_CDN_ROOT+"controllers/pico/pico4/",h={left:{axes:{thumbstick:[2,3]},buttons:["trigger","grip","none","thumbstick","xbutton","ybutton"]},right:{axes:{thumbstick:[2,3]},buttons:["trigger","grip","none","thumbstick","abutton","bbutton"]}},p=(0,s.registerComponent)("pico-controls",{schema:{hand:{default:"none"},model:{default:!0}},mapping:h,init:function(){var m=this;this.onButtonChanged=this.onButtonChanged.bind(this),this.onButtonDown=function(u){(0,T.onButtonEvent)(u.detail.id,"down",m,m.data.hand)},this.onButtonUp=function(u){(0,T.onButtonEvent)(u.detail.id,"up",m,m.data.hand)},this.onButtonTouchEnd=function(u){(0,T.onButtonEvent)(u.detail.id,"touchend",m,m.data.hand)},this.onButtonTouchStart=function(u){(0,T.onButtonEvent)(u.detail.id,"touchstart",m,m.data.hand)},this.bindMethods()},update:function(){var m=this.data;this.controllerIndex=m.hand==="right"?0:m.hand==="left"?1:2},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},bindMethods:function(){this.onModelLoaded=this.onModelLoaded.bind(this),this.onControllersUpdate=this.onControllersUpdate.bind(this),this.checkIfControllerPresent=this.checkIfControllerPresent.bind(this),this.removeControllersUpdateListener=this.removeControllersUpdateListener.bind(this),this.onAxisMoved=this.onAxisMoved.bind(this)},addEventListeners:function(){var m=this.el;m.addEventListener("buttonchanged",this.onButtonChanged),m.addEventListener("buttondown",this.onButtonDown),m.addEventListener("buttonup",this.onButtonUp),m.addEventListener("touchstart",this.onButtonTouchStart),m.addEventListener("touchend",this.onButtonTouchEnd),m.addEventListener("axismove",this.onAxisMoved),m.addEventListener("model-loaded",this.onModelLoaded),this.controllerEventsActive=!0},removeEventListeners:function(){var m=this.el;m.removeEventListener("buttonchanged",this.onButtonChanged),m.removeEventListener("buttondown",this.onButtonDown),m.removeEventListener("buttonup",this.onButtonUp),m.removeEventListener("touchstart",this.onButtonTouchStart),m.removeEventListener("touchend",this.onButtonTouchEnd),m.removeEventListener("axismove",this.onAxisMoved),m.removeEventListener("model-loaded",this.onModelLoaded),this.controllerEventsActive=!1},checkIfControllerPresent:function(){var m=this.data;(0,T.checkControllerPresentAndSetup)(this,v,{index:this.controllerIndex,hand:m.hand})},injectTrackedControls:function(){var m=this.el,u=this.data;m.setAttribute("tracked-controls",{idPrefix:v,hand:u.hand,controller:this.controllerIndex}),this.data.model&&this.el.setAttribute("gltf-model",D+this.data.hand+".glb")},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener("controllersupdated",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener("controllersupdated",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onButtonChanged:function(m){var u=this.mapping[this.data.hand].buttons[m.detail.id],l;u&&(u==="trigger"&&(l=m.detail.state.value,console.log("analog value of trigger press: "+l)),this.el.emit(u+"changed",m.detail.state))},onModelLoaded:function(m){m.target!==this.el||!this.data.model||this.el.emit("controllermodelready",{name:"pico-controls",model:this.data.model,rayOrigin:new z.Vector3(0,0,0)})},onAxisMoved:function(m){(0,T.emitIfAxesChanged)(this,this.mapping[this.data.hand].axes,m)}})},"./src/components/position.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>z});var s=d("./src/core/component.js"),z=(0,s.registerComponent)("position",{schema:{type:"vec3"},update:function(){var _=this.el.object3D,T=this.data;_.position.set(T.x,T.y,T.z)},remove:function(){this.el.object3D.position.set(0,0,0)}})},"./src/components/raycaster.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>p});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=d("./src/utils/index.js"),T=_.debug("components:raycaster:warn"),v=/^[\w\s-.,[\]#]*$/,D={childList:!0,attributes:!0,subtree:!0},h={INTERSECT:"raycaster-intersected",INTERSECTION:"raycaster-intersection",INTERSECT_CLEAR:"raycaster-intersected-cleared",INTERSECTION_CLEAR:"raycaster-intersection-cleared",INTERSECTION_CLOSEST_ENTITY_CHANGED:"raycaster-closest-entity-changed"},p=(0,z.registerComponent)("raycaster",{schema:{autoRefresh:{default:!0},direction:{type:"vec3",default:{x:0,y:0,z:-1}},enabled:{default:!0},far:{default:1e3},interval:{default:0},near:{default:0},objects:{default:""},origin:{type:"vec3"},showLine:{default:!1},lineColor:{default:"white"},lineOpacity:{default:1},useWorldCoordinates:{default:!1}},multiple:!0,init:function(){this.clearedIntersectedEls=[],this.unitLineEndVec3=new s.Vector3,this.intersectedEls=[],this.intersections=[],this.newIntersectedEls=[],this.newIntersections=[],this.objects=[],this.prevCheckTime=void 0,this.prevIntersectedEls=[],this.rawIntersections=[],this.raycaster=new s.Raycaster,this.updateOriginDirection(),this.setDirty=this.setDirty.bind(this),this.updateLine=this.updateLine.bind(this),this.observer=new MutationObserver(this.setDirty),this.dirty=!0,this.lineEndVec3=new s.Vector3,this.otherLineEndVec3=new s.Vector3,this.lineData={end:this.lineEndVec3},this.getIntersection=this.getIntersection.bind(this),this.intersectedDetail={el:this.el,getIntersection:this.getIntersection},this.intersectedClearedDetail={el:this.el},this.intersectionClearedDetail={clearedEls:this.clearedIntersectedEls},this.intersectionDetail={}},update:function(u){var l=this.data,R=this.el,N=this.raycaster;N.far=l.far,N.near=l.near,l.showLine&&(l.far!==u.far||l.origin!==u.origin||l.direction!==u.direction||!u.showLine)&&(this.unitLineEndVec3.copy(l.direction).normalize(),this.drawLine()),!l.showLine&&u.showLine&&R.removeAttribute("line"),l.objects!==u.objects&&!v.test(l.objects)&&T('[raycaster] Selector "'+l.objects+'" may not update automatically with DOM changes.'),l.objects||T('[raycaster] For performance, please define raycaster.objects when using raycaster or cursor components to whitelist which entities to intersect with. e.g., raycaster="objects: [data-raycastable]".'),l.autoRefresh!==u.autoRefresh&&R.isPlaying&&(l.autoRefresh?this.addEventListeners():this.removeEventListeners()),u.enabled&&!l.enabled&&this.clearAllIntersections(),l.objects!==u.objects&&this.setDirty()},play:function(){this.addEventListeners()},pause:function(){this.removeEventListeners()},remove:function(){this.data.showLine&&this.el.removeAttribute("line"),this.clearAllIntersections()},addEventListeners:function(){this.data.autoRefresh&&(this.observer.observe(this.el.sceneEl,D),this.el.sceneEl.addEventListener("object3dset",this.setDirty),this.el.sceneEl.addEventListener("object3dremove",this.setDirty))},removeEventListeners:function(){this.observer.disconnect(),this.el.sceneEl.removeEventListener("object3dset",this.setDirty),this.el.sceneEl.removeEventListener("object3dremove",this.setDirty)},setDirty:function(){this.dirty=!0},refreshObjects:function(){var u=this.data,l;l=u.objects?this.el.sceneEl.querySelectorAll(u.objects):this.el.sceneEl.querySelectorAll("*"),this.objects=this.flattenObject3DMaps(l),this.dirty=!1},tock:function(u){var l=this.data,R=this.prevCheckTime;l.enabled&&(R&&u-R0||Z.length>0&&x.length===0||Z.length&&x.length&&Z[0]!==x[0].object.el)&&(this.intersectionDetail.els=this.intersectedEls,this.intersectionDetail.intersections=x,l.emit(h.INTERSECTION_CLOSEST_ENTITY_CHANGED,this.intersectionDetail)),R.showLine&&setTimeout(this.updateLine)},updateLine:function(){var u=this.el,l=this.intersections,R;l.length&&(l[0].object.el===u&&l[1]?R=l[1].distance:R=l[0].distance),this.drawLine(R)},getIntersection:function(u){var l,R;for(l=0;l{d.r(O),d.d(O,{Component:()=>T});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=s.MathUtils.degToRad,T=(0,z.registerComponent)("rotation",{schema:{type:"vec3"},update:function(){var v=this.data,D=this.el.object3D;D.rotation.set(_(v.x),_(v.y),_(v.z),"YXZ")},remove:function(){this.el.object3D.rotation.set(0,0,0)}})},"./src/components/scale.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>z});var s=d("./src/core/component.js"),z=(0,s.registerComponent)("scale",{schema:{type:"vec3",default:{x:1,y:1,z:1}},update:function(){var _=this.data,T=this.el.object3D;T.scale.set(_.x,_.y,_.z)},remove:function(){this.el.object3D.scale.set(1,1,1)}})},"./src/components/scene/ar-hit-test.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>m});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_="data:image/webp;base64,UklGRkQHAABXRUJQVlA4WAoAAAAQAAAA/wEA/wEAQUxQSL0DAAARDzD/ERGCjrY9sYYFfgo6aa1kJ7K0w9Lo3AadLSVeFxevQwj5kuM8RfR/Atw/C0+ozB/oUBrloFZs6ElSW88j1KA4yExNWQaqRZquIDF0JYmlq0hAuUDTFu66tng3teW7pa3cQf1V1edvur54M/Slm6Wv3Gx9zw0MXlQLntcsBN6wkHjTQuYtC4W3LTw8mGRVG57TbAROtxHfZNhInGkjc5aNwtk2Hg6Mvki14k+NkZzCwQgCxalcAv3kddRTPI1DcUrXId1FLf1uHpzaQz4tquhZVLlKesbVpqKeTj0n0F5PpXDlFN9UqmhalL/ImuZFo6KmToWLoKlddMprqlS8cKovBvHo2kTiFV2LN4msaxKZl3QNiair8xYRdDWivIvXVXmbcMqJ51UebZuFXxZt6xd4laxtciqRtA3Cv0nU1t+kEUFbI8JvCa+tvkm3FDlO/W+OR99+kWEp/YYo+tYfTVnf/K8cE/F///3vv//993eeL+a+uvjawLcX3xjYvJotBFY3kVjTRGFtE+BU2AiMbiQyhpHMWEYeBozAH5qNBYRDB5KBCaTDBKKBAZTDBoKBDjwHAN5ABeCJBsAZcAAC0YHHxAYSMYBiYgGZWEA2MYFCbCCZGAAIANFEB+AnYgMQTDQAYSJ2AN5EBZAm4gDgTDgAeSIu4DGygTIRN1CMLOCZiACykQlg4jsAycgA8AO+BxCNdJyDkcbwRirDGXGnx8w+FDPrkM3MQ9JQZMYhiiwV/RDMtIM3U1/DmXHUo+IR2kSR2ToWkQ1NIn2qf2J8LCqJKiDUiSADHY3whirhdHgZ94HKaR97PhE+twEUJUFoAcgyTct8hfSxSkShASDKdMJ/ritKHwgyQ0sD4D/miCxU5SbhOOUDTnZpccCjYP/i0bZ/8bAgtVGEoGapWIQXyzKVKLwgNJFk2rtMIgoNRJlOZF7SNSSyUEeQmbxBFKEmtYjEe8S8zOZ1AkJVCmS88FJOtF40Ksg4oUaFiygk3C8qlTVNyl8UTevCUdAE2t14PfVqU1FPp57TopKeQZWromddTQp6QOfTOEQt/ZDuipZ11w/wOiqO8dRORcc6BQEkDQMClaHcn5wV9yLbxsNZNgpn2sicYSNxuo34Js1G4FQbnuNsOPa28PCWhcKbFjJvWEi8ZiHwqgXPcxbc5db33Cx95WboSzddX7yp+vyN0+eul7ZyN7Xlu64t3jVt4c5pc4JLV5EYupJE0xUknC4nOjVlmaYpyLit53HCQ0+ScnqceNcS5dzUkd0/CwMAVlA4IGADAAAQXwCdASoAAgACP8ne6Wy/tjCpqJ/IA/A5CWlu4XYBG/Pz8AfwD8APz//f3v8E1fuHZnxKYACtfuHZnxKYACrYTb5mOslhxu843ecbvON3nG7zjd3a0VCn7G1MABVxwH/Xd25gAK1+4dmfEpe2+PHhQaj75++riG6FuYACtfuHZnxKYACRrK3q9xO8Ss3uWKnMhs/rDF1hi6wxdYYusMXWGI5QRcCFDZog5OgqNlse1NDuz/UoFa/cOzPiUwAEsAOK4/nu5eZHK2tlXxJfNYlMABWv3Dsz4bvNJ5YA/LtxJ38SmAArX7h2Z8Sk5vdZUYv7mZPiUwAFa/cOzPh21s5OgZxf1mfEpemRyFr/rM+JS9noA/LtxJ38SmAAlUJIotzAASn6TjdhK+D3Dsz4dyvB7h2Z8O2tnJ0DOL+sz4lL2nKLT4lL/+iSLOocxq639w7M34MNZdm55uJ8v8ra2cpVZnxKTq2F3PN/cNksAfl24k7+JTAASqrD37h2Z7b1W+VtbOUqsz4lJ1bC7nm/uGyWAPy7cSd/EpgAJVVh79w7M9t6rfK2tnKVWZ8Sk6thdzzf3DZLAH5duJO/iUwAEqqw9+4dme29VvlbWzlKrM+JSdWwu55v7hslgD8u3EnfxKYACVVYe/cOzPbeq3ytrZylVme0kYJ8557FLerqFrzIbPrrf3DZLAH5duJO/iUvaVMS9BoaF4p7pSDFTP1XMyfElelrM0DOL+sz4eBJ13nV1OppBGPuKb4YzXQgq9uH19uS/0+JS9t9fr6ZUlQBelDG6GMgq97otb5QMPJwtKyBTbFp8Sl7b6/X0ykkawEOsgdiE6Fi0vb/Eve6xkwsmug0Z4nGNHQO8839bpTsjpz7SWIJxKagvd1QWMa6FYT1KEw3j4XDT6vJ9Xk+nyfT5Pq8n1eEmk5dinMM/9Fcfz4Z3Dsz3KD2dw7LxBRxKrqUUGQPH/7zxr1KIfNpLEJ0MZB2ITM/0Z2EFoh12NlXnEcpYcbvON3nG7zjd5xu84vfcNIAAP7+y8ceyzbVxkakPYY4lcr72fqOnDwipv+yxC71wAADBrjKnAAAAAAAAAAAAAAw7oNGHttqWONcoFN/2WIDc2pa6WVFtFYROlsaMaTXdcOjXHz93+YxAglKa4AAAAA=",T=21,v=function(){var u=new s.Quaternion,l=new s.Vector3;function R(N,Y,G){Y.position.copy(N.transform.position),Y.quaternion.copy(N.transform.orientation),l.copy(G),u.copy(N.transform.orientation),l.applyQuaternion(u),Y.position.sub(l)}return R}();v.tempFakePose={transform:{orientation:new s.Quaternion,position:new s.Vector3}};function D(u,l){this.renderer=u,this.xrHitTestSource=null,u.xr.addEventListener("sessionend",(function(){this.xrHitTestSource=null}).bind(this)),u.xr.addEventListener("sessionstart",(function(){this.sessionStart(l)}).bind(this)),this.renderer.xr.isPresenting&&this.sessionStart(l)}D.prototype.previousFrameAnchors=new Set,D.prototype.anchorToObject3D=new Map;function h(u){console.warn(u.message),console.warn('Cannot requestHitTestSource Are you missing: webxr="optionalFeatures: hit-test;" from ?')}D.prototype.sessionStart=function(l){if(this.session=this.renderer.xr.getSession(),!("requestHitTestSource"in this.session)){h({message:"No requestHitTestSource on the session."});return}l.space?this.session.requestHitTestSource(l).then((function(R){this.xrHitTestSource=R}).bind(this)).catch(h):l.profile&&this.session.requestHitTestSourceForTransientInput(l).then((function(R){this.xrHitTestSource=R,this.transient=!0}).bind(this)).catch(h)},D.prototype.anchorFromLastHitTestResult=function(u,l){var R=this.lastHitTest;if(R){var N={object3D:u,offset:l};Array.from(this.anchorToObject3D.entries()).forEach((function(Y){var G=Y[1].object3D,x=Y[0];G===u&&(this.anchorToObject3D.delete(x),x.delete())}).bind(this)),R.createAnchor&&R.createAnchor().then((function(Y){this.anchorToObject3D.set(Y,N)}).bind(this)).catch(function(Y){console.warn(Y.message),console.warn('Cannot create anchor, are you missing: webxr="optionalFeatures: anchors;" from ?')})}},D.prototype.doHit=function(l){if(this.renderer.xr.isPresenting){var R=this.renderer.xr.getReferenceSpace(),N=l.getViewerPose(R),Y,G;if(this.xrHitTestSource&&N)return this.transient?(Y=l.getHitTestResultsForTransientInput(this.xrHitTestSource),Y.length>0?(G=Y[0].results,G.length>0?(this.lastHitTest=G[0],G[0].getPose(R)):!1):!1):(Y=l.getHitTestResults(this.xrHitTestSource),Y.length>0?(this.lastHitTest=Y[0],Y[0].getPose(R)):!1)}},D.updateAnchorPoses=function(u,l){var R=u.trackedAnchors||D.prototype.previousFrameAnchors;D.prototype.previousFrameAnchors.forEach(function(N){R.has(N)||D.prototype.anchorToObject3D.delete(N)}),R.forEach(function(N){var Y,G,x,U;try{if(Y=u.getPose(N.anchorSpace,l),Y){if(G=D.prototype.anchorToObject3D.get(N),!G)return;x=G.offset,U=G.object3D,v(Y,U,x)}}catch(j){console.error("while updating anchor poses:",j)}}),D.prototype.previousFrameAnchors=R};var p,m=(0,z.registerComponent)("ar-hit-test",{schema:{target:{type:"selector"},enabled:{default:!0},src:{default:_,type:"map"},type:{default:"footprint",oneOf:["footprint","map"]},footprintDepth:{default:.1},mapSize:{type:"vec2",default:{x:.5,y:.5}}},sceneOnly:!0,init:function(){this.hitTest=null,this.imageDataArray=new Uint8ClampedArray(512*512*4),this.imageData=new ImageData(this.imageDataArray,512,512),this.textureCache=new Map,this.orthoCam=new s.OrthographicCamera,this.orthoCam.layers.set(T),this.textureTarget=new s.WebGLRenderTarget(512,512,{}),this.basicMaterial=new s.MeshBasicMaterial({color:0,side:s.DoubleSide}),this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),this.context.imageSmoothingEnabled=!1,this.canvas.width=512,this.canvas.height=512,this.canvasTexture=new s.CanvasTexture(this.canvas,{alpha:!0}),this.canvasTexture.flipY=!1;var u=this.el.getAttribute("webxr"),l=u.optionalFeatures;(!l.includes("hit-test")||!l.includes("anchors"))&&(l.push("hit-test"),l.push("anchors"),this.el.setAttribute("webxr",u)),this.el.sceneEl.renderer.xr.addEventListener("sessionend",(function(){this.hitTest=null}).bind(this)),this.el.sceneEl.addEventListener("enter-vr",(function(){if(this.el.is("ar-mode")){var R=this.el.sceneEl.renderer,N=this.session=R.xr.getSession();this.hasPosedOnce=!1,this.bboxMesh.visible=!1,p||(p=new Map),N.requestReferenceSpace("viewer").then((function(U){this.viewerHitTest=this.hitTest=new D(R,{space:U}),this.el.emit("ar-hit-test-start")}).bind(this));var Y=this;this.el.sceneEl.addEventListener("controllersupdated",function(){var U=this,j=U.xrSession&&U.xrSession.inputSources;if(j){for(var Z=0;Z{d.r(O),d.d(O,{Component:()=>_});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=(0,z.registerComponent)("background",{schema:{color:{type:"color",default:"black"},transparent:{default:!1}},sceneOnly:!0,update:function(){var T=this.data,v=this.el.object3D;T.transparent?v.background=null:v.background=new s.Color(T.color)},remove:function(){var T=this.el.object3D;T.background=null}})},"./src/components/scene/debug.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>z});var s=d("./src/core/component.js"),z=(0,s.registerComponent)("debug",{schema:{default:!0},sceneOnly:!0})},"./src/components/scene/device-orientation-permission-ui.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>R});var s=d("./src/core/component.js"),z=d("./src/constants/index.js"),_="a-modal",T="a-dialog",v="a-dialog-text",D="a-dialog-text-container",h="a-dialog-buttons-container",p="a-dialog-button",m="a-dialog-allow-button",u="a-dialog-deny-button",l="a-dialog-ok-button",R=(0,s.registerComponent)("device-orientation-permission-ui",{schema:{enabled:{default:!0},deviceMotionMessage:{default:"This immersive website requires access to your device motion sensors."},httpsMessage:{default:"Access this site over HTTPS to enter VR mode and grant access to the device sensors."},denyButtonText:{default:"Deny"},allowButtonText:{default:"Allow"},cancelButtonText:{default:"Cancel"}},sceneOnly:!0,init:function(){var x=this;if(this.data.enabled){if(window.isSecureContext||this.showHTTPAlert(),typeof DeviceOrientationEvent>"u"||!DeviceOrientationEvent.requestPermission){this.permissionGranted=!0;return}this.onDeviceMotionDialogAllowClicked=this.onDeviceMotionDialogAllowClicked.bind(this),this.onDeviceMotionDialogDenyClicked=this.onDeviceMotionDialogDenyClicked.bind(this),DeviceOrientationEvent.requestPermission().then(function(){x.el.emit("deviceorientationpermissiongranted"),x.permissionGranted=!0}).catch(function(){x.devicePermissionDialogEl=N(x.data.denyButtonText,x.data.allowButtonText,x.data.deviceMotionMessage,x.onDeviceMotionDialogAllowClicked,x.onDeviceMotionDialogDenyClicked),x.el.appendChild(x.devicePermissionDialogEl)})}},remove:function(){this.devicePermissionDialogEl&&this.el.removeChild(this.devicePermissionDialogEl)},onDeviceMotionDialogDenyClicked:function(){this.remove()},showHTTPAlert:function(){var x=this,U=Y(x.data.cancelButtonText,x.data.httpsMessage,function(){x.el.removeChild(U)});this.el.appendChild(U)},onDeviceMotionDialogAllowClicked:function(){var x=this;this.el.emit("deviceorientationpermissionrequested"),DeviceOrientationEvent.requestPermission().then(function(U){U==="granted"?(x.el.emit("deviceorientationpermissiongranted"),x.permissionGranted=!0):x.el.emit("deviceorientationpermissionrejected"),x.remove()}).catch(console.error)}});function N(x,U,j,Z,CA){var QA,SA,UA;return QA=document.createElement("div"),QA.classList.add(h),SA=document.createElement("button"),SA.classList.add(p,u),SA.setAttribute(z.AFRAME_INJECTED,""),SA.innerHTML=x,QA.appendChild(SA),UA=document.createElement("button"),UA.classList.add(p,m),UA.setAttribute(z.AFRAME_INJECTED,""),UA.innerHTML=U,QA.appendChild(UA),UA.addEventListener("click",function(TA){TA.stopPropagation(),Z()}),SA.addEventListener("click",function(TA){TA.stopPropagation(),CA()}),G(j,QA)}function Y(x,U,j){var Z,CA;return Z=document.createElement("div"),Z.classList.add(h),CA=document.createElement("button"),CA.classList.add(p,l),CA.setAttribute(z.AFRAME_INJECTED,""),CA.innerHTML=x,Z.appendChild(CA),CA.addEventListener("click",function(QA){QA.stopPropagation(),j()}),G(U,Z)}function G(x,U){var j,Z,CA,QA;return j=document.createElement("div"),j.classList.add(_),j.setAttribute(z.AFRAME_INJECTED,""),Z=document.createElement("div"),Z.className=T,Z.setAttribute(z.AFRAME_INJECTED,""),j.appendChild(Z),CA=document.createElement("div"),CA.classList.add(D),Z.appendChild(CA),QA=document.createElement("div"),QA.classList.add(v),QA.innerHTML=x,CA.appendChild(QA),Z.appendChild(U),j}},"./src/components/scene/embedded.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>z});var s=d("./src/core/component.js"),z=(0,s.registerComponent)("embedded",{dependencies:["xr-mode-ui"],schema:{default:!0},sceneOnly:!0,update:function(){var _=this.el,T=_.querySelector(".a-enter-vr");this.data===!0?(T&&T.classList.add("embedded"),_.removeFullScreenStyles()):(T&&T.classList.remove("embedded"),_.addFullScreenStyles())}})},"./src/components/scene/fog.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>_});var s=d("./src/core/component.js"),z=d("./node_modules/three/build/three.core.js"),_=(0,s.registerComponent)("fog",{schema:{color:{type:"color",default:"#000"},density:{default:25e-5},far:{default:1e3,min:0},near:{default:1,min:0},type:{default:"linear",oneOf:["linear","exponential"]}},sceneOnly:!0,update:function(){var v=this.data,D=this.el,h=this.el.object3D.fog;if(!h||v.type!==h.name){D.object3D.fog=T(v);return}Object.keys(this.schema).forEach(function(p){var m=v[p];p==="color"&&(m=new z.Color(m)),h[p]=m})},remove:function(){var v=this.el,D=this.el.object3D.fog;D&&(v.object3D.fog=null)}});function T(v){var D;return v.type==="exponential"?D=new z.FogExp2(v.color,v.density):D=new z.Fog(v.color,v.near,v.far),D.name=v.type,D}},"./src/components/scene/inspector.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>u});var s=d("./src/constants/index.js"),z=d("./src/core/component.js"),_=d("./package.json"),T=d("./src/utils/index.js");function v(l){var R=l.split(".");return R[2]="x",R.join(".")}var D="https://unpkg.com/aframe-inspector@"+v(_.version)+"/dist/aframe-inspector.min.js",h=D,p="Loading Inspector",m="Error loading Inspector",u=(0,z.registerComponent)("inspector",{schema:{url:{default:h}},sceneOnly:!0,init:function(){this.firstPlay=!0,this.onKeydown=this.onKeydown.bind(this),this.onMessage=this.onMessage.bind(this),this.initOverlay(),window.addEventListener("keydown",this.onKeydown),window.addEventListener("message",this.onMessage)},play:function(){var l;this.firstPlay&&(l=T.getUrlParameter("inspector"),l!=="false"&&l&&(this.openInspector(),this.firstPlay=!1))},initOverlay:function(){var l='...';this.loadingMessageEl=document.createElement("div"),this.loadingMessageEl.classList.add("a-inspector-loader"),this.loadingMessageEl.innerHTML=p+l},remove:function(){this.removeEventListeners()},onKeydown:function(l){var R=l.keyCode===73&&(l.ctrlKey&&l.altKey||l.getModifierState("AltGraph"));R&&this.openInspector()},showLoader:function(){document.body.appendChild(this.loadingMessageEl)},hideLoader:function(){document.body.removeChild(this.loadingMessageEl)},onMessage:function(l){l.data==="INJECT_AFRAME_INSPECTOR"&&this.openInspector()},openInspector:function(l){var R=this,N;if(AFRAME.INSPECTOR||AFRAME.inspectorInjected){AFRAME.INSPECTOR.open(l);return}this.showLoader(),N=document.createElement("script"),N.src=this.data.url,N.setAttribute("data-name","aframe-inspector"),N.setAttribute(s.AFRAME_INJECTED,""),N.onload=function(){AFRAME.INSPECTOR.open(l),R.hideLoader(),R.removeEventListeners()},N.onerror=function(){R.loadingMessageEl.innerHTML=m},document.head.appendChild(N),AFRAME.inspectorInjected=!0},removeEventListeners:function(){window.removeEventListener("keydown",this.onKeydown),window.removeEventListener("message",this.onMessage)}})},"./src/components/scene/keyboard-shortcuts.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>_});var s=d("./src/core/component.js"),z=d("./src/utils/index.js"),_=(0,s.registerComponent)("keyboard-shortcuts",{schema:{enterVR:{default:!0},exitVR:{default:!0}},sceneOnly:!0,init:function(){this.onKeyup=this.onKeyup.bind(this)},play:function(){window.addEventListener("keyup",this.onKeyup,!1)},pause:function(){window.removeEventListener("keyup",this.onKeyup)},onKeyup:function(T){var v=this.el;(0,z.shouldCaptureKeyEvent)(T)&&(this.data.enterVR&&T.keyCode===70&&v.enterVR(),this.data.exitVR&&T.keyCode===27&&v.exitVR())}})},"./src/components/scene/pool.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>T});var s=d("./src/utils/index.js"),z=d("./src/core/component.js"),_=(0,s.debug)("components:pool:warn"),T=(0,z.registerComponent)("pool",{schema:{container:{default:""},mixin:{default:""},size:{default:0},dynamic:{default:!1}},sceneOnly:!0,multiple:!0,initPool:function(){var v;for(this.availableEls=[],this.usedEls=[],this.data.mixin||_("No mixin provided for pool component."),this.data.container&&(this.container=document.querySelector(this.data.container),this.container||_("Container "+this.data.container+" not found.")),this.container=this.container||this.el,v=0;v{d.r(O),d.d(O,{Component:()=>_});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=(0,z.registerComponent)("real-world-meshing",{schema:{filterLabels:{type:"array"},meshesEnabled:{default:!0},meshMixin:{default:!0},planesEnabled:{default:!0},planeMixin:{default:""}},sceneOnly:!0,init:function(){var T=this.el.getAttribute("webxr"),v=T.requiredFeatures;v.indexOf("mesh-detection")===-1&&(v.push("mesh-detection"),this.el.setAttribute("webxr",T)),v.indexOf("plane-detection")===-1&&(v.push("plane-detection"),this.el.setAttribute("webxr",T)),this.meshEntities=[],this.initWorldMeshEntity=this.initWorldMeshEntity.bind(this)},tick:function(){this.el.is("ar-mode")&&(this.detectMeshes(),this.updateMeshes())},detectMeshes:function(){var T=this.data,v,D,h=this.el,p,m=this.meshEntities,u=!1,l=[],R=this.data.filterLabels;p=h.frame,v=p.detectedMeshes,D=p.detectedPlanes;for(var N=0;N{d.r(O),d.d(O,{Component:()=>T});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js");function _(v,D,h,p){var m=Math.max(v.primaryLightIntensity.x,Math.max(v.primaryLightIntensity.y,v.primaryLightIntensity.z));D.sh.fromArray(v.sphericalHarmonicsCoefficients),D.intensity=3.14,h&&(h.color.setRGB(v.primaryLightIntensity.x/m,v.primaryLightIntensity.y/m,v.primaryLightIntensity.z/m),h.intensity=m,p.copy(v.primaryLightDirection))}var T=(0,z.registerComponent)("reflection",{schema:{directionalLight:{type:"selector"}},sceneOnly:!0,init:function(){var v=this;this.cubeRenderTarget=new s.WebGLCubeRenderTarget(16),this.cubeCamera=new s.CubeCamera(.1,1e3,this.cubeRenderTarget),this.lightingEstimationTexture=new s.WebGLCubeRenderTarget(16).texture,this.needsVREnvironmentUpdate=!0;var D=this.el.getAttribute("webxr"),h=D.optionalFeatures;h.includes("light-estimation")||(h.push("light-estimation"),this.el.setAttribute("webxr",D)),this.el.addEventListener("enter-vr",function(){if(v.el.is("ar-mode")){var p=v.el.renderer,m=p.xr.getSession();m.requestLightProbe&&v.startLightProbe()}}),this.el.addEventListener("exit-vr",function(){v.xrLightProbe&&v.stopLightProbe()}),this.el.object3D.environment=this.cubeRenderTarget.texture},stopLightProbe:function(){this.xrLightProbe=null,this.probeLight&&(this.probeLight.components.light.light.intensity=0),this.needsVREnvironmentUpdate=!0,this.el.object3D.environment=this.cubeRenderTarget.texture},startLightProbe:function(){this.needsLightProbeUpdate=!0},setupLightProbe:function(){var v=this.el.renderer,D=v.xr.getSession(),h=this,p=v.getContext();if(!this.probeLight){var m=document.createElement("a-light");m.setAttribute("type","probe"),m.setAttribute("intensity",0),this.el.appendChild(m),this.probeLight=m}switch(D.preferredReflectionFormat){case"srgba8":p.getExtension("EXT_sRGB");break;case"rgba16f":p.getExtension("OES_texture_half_float");break}this.glBinding=new XRWebGLBinding(D,p),p.getExtension("EXT_sRGB"),p.getExtension("OES_texture_half_float"),D.requestLightProbe().then(function(u){h.xrLightProbe=u,u.addEventListener("reflectionchange",h.updateXRCubeMap.bind(h))}).catch(function(u){console.warn("Lighting estimation not supported: "+u.message),console.warn('Are you missing: webxr="optionalFeatures: light-estimation;" from ?')})},updateXRCubeMap:function(){var v=this.el.renderer,D=this.glBinding.getReflectionCubeMap(this.xrLightProbe);if(D){var h=v.properties.get(this.lightingEstimationTexture);h.__webglTexture=D,this.lightingEstimationTexture.needsPMREMUpdate=!0,this.el.object3D.environment=this.lightingEstimationTexture}},tick:function(){var v=this.el.object3D,D=this.el.renderer,h=this.el.frame;if(h&&this.xrLightProbe){var p=h.getLightEstimate(this.xrLightProbe);p&&_(p,this.probeLight.components.light.light,this.data.directionalLight&&this.data.directionalLight.components.light.light,this.data.directionalLight&&this.data.directionalLight.object3D.position)}this.needsVREnvironmentUpdate&&(v.environment=null,this.needsVREnvironmentUpdate=!1,this.cubeCamera.position.set(0,1.6,0),this.cubeCamera.update(D,v),v.environment=this.cubeRenderTarget.texture),this.needsLightProbeUpdate&&h&&(this.setupLightProbe(),this.needsLightProbeUpdate=!1)},remove:function(){this.el.object3D.environment=null,this.probeLight&&this.el.removeChild(this.probeLight)}})},"./src/components/scene/screenshot.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>v});var s=d("./src/core/component.js"),z=d("./node_modules/three/build/three.core.js"),_=["attribute vec3 position;","attribute vec2 uv;","uniform mat4 projectionMatrix;","uniform mat4 modelViewMatrix;","varying vec2 vUv;","void main() {"," vUv = vec2( 1.- uv.x, uv.y );"," gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );","}"].join(` `),T=["precision mediump float;","uniform samplerCube map;","varying vec2 vUv;","#define M_PI 3.141592653589793238462643383279","void main() {"," vec2 uv = vUv;"," float longitude = uv.x * 2. * M_PI - M_PI + M_PI / 2.;"," float latitude = uv.y * M_PI;"," vec3 dir = vec3("," - sin( longitude ) * sin( latitude ),"," cos( latitude ),"," - cos( longitude ) * sin( latitude )"," );"," normalize( dir );"," gl_FragColor = vec4( textureCube( map, dir ).rgb, 1.0 );","}"].join(` `),v=(0,s.registerComponent)("screenshot",{schema:{width:{default:4096},height:{default:2048},camera:{type:"selector"}},sceneOnly:!0,setup:function(){var D=this.el;if(!this.canvas){var h=D.renderer.getContext();h&&(this.cubeMapSize=h.getParameter(h.MAX_CUBE_MAP_TEXTURE_SIZE),this.material=new z.RawShaderMaterial({uniforms:{map:{type:"t",value:null}},vertexShader:_,fragmentShader:T,side:z.DoubleSide}),this.quad=new z.Mesh(new z.PlaneGeometry(1,1),this.material),this.quad.visible=!1,this.camera=new z.OrthographicCamera(-1/2,1/2,1/2,-1/2,-1e4,1e4),this.canvas=document.createElement("canvas"),this.ctx=this.canvas.getContext("2d"),D.object3D.add(this.quad),this.onKeyDown=this.onKeyDown.bind(this))}},getRenderTarget:function(D,h){return new z.WebGLRenderTarget(D,h,{colorSpace:this.el.sceneEl.renderer.outputColorSpace,minFilter:z.LinearFilter,magFilter:z.LinearFilter,wrapS:z.ClampToEdgeWrapping,wrapT:z.ClampToEdgeWrapping,format:z.RGBAFormat,type:z.UnsignedByteType})},resize:function(D,h){this.quad.scale.set(D,h,1),this.camera.left=-1*D/2,this.camera.right=D/2,this.camera.top=h/2,this.camera.bottom=-1*h/2,this.camera.updateProjectionMatrix(),this.canvas.width=D,this.canvas.height=h},play:function(){window.addEventListener("keydown",this.onKeyDown)},onKeyDown:function(D){var h=D.keyCode===83&&D.ctrlKey&&D.altKey;if(!(!this.data||!h)){var p=D.shiftKey?"equirectangular":"perspective";this.capture(p)}},setCapture:function(D){var h=this.el,p,m,u,l;return D==="perspective"?(this.quad.visible=!1,m=this.data.camera&&this.data.camera.components.camera.camera||h.camera,p={width:this.data.width,height:this.data.height}):(m=this.camera,l=new z.WebGLCubeRenderTarget(Math.min(this.cubeMapSize,2048),{format:z.RGBFormat,generateMipmaps:!0,minFilter:z.LinearMipmapLinearFilter,colorSpace:z.SRGBColorSpace}),u=new z.CubeCamera(h.camera.near,h.camera.far,l),h.camera.getWorldPosition(u.position),h.camera.getWorldQuaternion(u.quaternion),u.update(h.renderer,h.object3D),this.quad.material.uniforms.map.value=u.renderTarget.texture,p={width:this.data.width,height:this.data.height},this.quad.visible=!0),{camera:m,size:p,projection:D}},capture:function(D){var h=this.el.renderer.xr.enabled,p=this.el.renderer,m;this.setup(),p.xr.enabled=!1,m=this.setCapture(D),this.renderCapture(m.camera,m.size,m.projection),this.saveCapture(),p.xr.enabled=h},getCanvas:function(D){var h=this.el.renderer.xr.enabled,p=this.el.renderer;this.setup();var m=this.setCapture(D);return p.xr.enabled=!1,this.renderCapture(m.camera,m.size,m.projection),p.xr.enabled=h,this.canvas},renderCapture:function(D,h,p){var m=this.el.renderer.autoClear,u=this.el,l,R,N,Y=u.renderer;R=this.getRenderTarget(h.width,h.height),N=new Uint8Array(4*h.width*h.height),this.resize(h.width,h.height),Y.autoClear=!0,Y.clear(),Y.setRenderTarget(R),Y.render(u.object3D,D),Y.autoClear=m,Y.readRenderTargetPixels(R,0,0,h.width,h.height,N),Y.setRenderTarget(null),p==="perspective"&&(N=this.flipPixelsVertically(N,h.width,h.height)),l=new ImageData(new Uint8ClampedArray(N),h.width,h.height),this.quad.visible=!1,this.ctx.putImageData(l,0,0)},flipPixelsVertically:function(D,h,p){for(var m=D.slice(0),u=0;u{d.r(O),d.d(O,{Component:()=>p});var s=d("./src/core/component.js"),z=d("./vendor/rStats.js"),_=d.n(z),T=d("./src/utils/index.js");d("./vendor/rStats.extras.js"),d("./src/lib/rStatsAframe.js");var v=window.aframeStats,D="a-hidden",h=window.threeStats,p=(0,s.registerComponent)("stats",{schema:{default:!0},sceneOnly:!0,init:function(){var u=this.el;T.getUrlParameter("stats")!=="false"&&(this.stats=m(u),this.statsEl=document.querySelector(".rs-base"),this.hideBound=this.hide.bind(this),this.showBound=this.show.bind(this),u.addEventListener("enter-vr",this.hideBound),u.addEventListener("exit-vr",this.showBound))},update:function(){if(this.stats)return this.data?this.show():this.hide()},remove:function(){this.el.removeEventListener("enter-vr",this.hideBound),this.el.removeEventListener("exit-vr",this.showBound),this.statsEl&&this.statsEl.parentNode.removeChild(this.statsEl)},tick:function(){var u=this.stats;u&&(u("rAF").tick(),u("FPS").frame(),u().update())},hide:function(){this.statsEl.classList.add(D)},show:function(){this.statsEl.classList.remove(D)}});function m(u){var l=new h(u.renderer),R=new v(u),N=u.isMobile?[]:[l,R];return new(_())({css:[],values:{fps:{caption:"fps",below:30}},groups:[{caption:"Framerate",values:["fps","raf"]}],plugins:N})}},"./src/components/scene/xr-mode-ui.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>u});var s=d("./src/core/component.js"),z=d("./src/constants/index.js"),_=d("./src/utils/index.js"),T="a-enter-vr",v="a-enter-ar",D="a-enter-vr-button",h="a-enter-ar-button",p="a-hidden",m="a-orientation-modal",u=(0,s.registerComponent)("xr-mode-ui",{dependencies:["canvas"],schema:{enabled:{default:!0},enterVRButton:{default:""},enterVREnabled:{default:!0},enterARButton:{default:""},enterAREnabled:{default:!0},XRMode:{default:"vr",oneOf:["vr","ar","xr"]}},sceneOnly:!0,init:function(){var G=this,x=this.el;_.getUrlParameter("ui")!=="false"&&(this.insideLoader=!1,this.enterVREl=null,this.enterAREl=null,this.orientationModalEl=null,this.bindMethods(),x.addEventListener("enter-vr",this.updateEnterInterfaces),x.addEventListener("exit-vr",this.updateEnterInterfaces),x.addEventListener("update-vr-devices",this.updateEnterInterfaces),window.addEventListener("message",function(U){U.data.type==="loaderReady"&&(G.insideLoader=!0,G.remove())}),window.addEventListener("orientationchange",this.toggleOrientationModalIfNeeded))},bindMethods:function(){this.onEnterVRButtonClick=this.onEnterVRButtonClick.bind(this),this.onEnterARButtonClick=this.onEnterARButtonClick.bind(this),this.onModalClick=this.onModalClick.bind(this),this.toggleOrientationModalIfNeeded=this.toggleOrientationModalIfNeeded.bind(this),this.updateEnterInterfaces=this.updateEnterInterfaces.bind(this)},onModalClick:function(){this.el.exitVR()},onEnterVRButtonClick:function(){this.el.enterVR()},onEnterARButtonClick:function(){this.el.enterAR()},update:function(){var G=this.data,x=this.el;if(!G.enabled||this.insideLoader||_.getUrlParameter("ui")==="false")return this.remove();this.enterVREl||this.enterAREl||this.orientationModalEl||(!this.enterVREl&&G.enterVREnabled&&(G.XRMode==="xr"||G.XRMode==="vr")&&(G.enterVRButton?(this.enterVREl=document.querySelector(G.enterVRButton),this.enterVREl.addEventListener("click",this.onEnterVRButtonClick)):(this.enterVREl=l(this.onEnterVRButtonClick),x.appendChild(this.enterVREl))),!this.enterAREl&&G.enterAREnabled&&(G.XRMode==="xr"||G.XRMode==="ar")&&(G.enterARButton?(this.enterAREl=document.querySelector(G.enterARButton),this.enterAREl.addEventListener("click",this.onEnterARButtonClick)):(this.enterAREl=R(this.onEnterARButtonClick,G.XRMode==="xr"),x.appendChild(this.enterAREl))),this.orientationModalEl=N(this.onModalClick),x.appendChild(this.orientationModalEl),this.updateEnterInterfaces())},remove:function(){[this.enterVREl,this.enterAREl,this.orientationModalEl].forEach(function(G){G&&G.parentNode&&G.parentNode.removeChild(G)}),this.enterVREl=void 0,this.enterAREl=void 0,this.orientationModalEl=void 0},updateEnterInterfaces:function(){this.toggleEnterVRButtonIfNeeded(),this.toggleEnterARButtonIfNeeded(),this.toggleOrientationModalIfNeeded()},toggleEnterVRButtonIfNeeded:function(){var G=this.el;this.enterVREl&&(G.is("vr-mode")||(G.isMobile||_.device.isMobileDeviceRequestingDesktopSite())&&!_.device.checkVRSupport()?this.enterVREl.classList.add(p):(_.device.checkVRSupport()||this.enterVREl.classList.add("fullscreen"),this.enterVREl.classList.remove(p),G.enterVR(!1,!0)))},toggleEnterARButtonIfNeeded:function(){var G=this.el;this.enterAREl&&(G.is("vr-mode")||!_.device.checkARSupport()?this.enterAREl.classList.add(p):(this.enterAREl.classList.remove(p),G.enterVR(!0,!0)))},toggleOrientationModalIfNeeded:function(){var G=this.el,x=this.orientationModalEl;!x||!G.isMobile||(!_.device.isLandscape()&&G.is("vr-mode")?x.classList.remove(p):x.classList.add(p))}});function l(G){var x,U;return U=document.createElement("div"),U.classList.add(T),U.setAttribute(z.AFRAME_INJECTED,""),x=document.createElement("button"),x.className=D,x.setAttribute("title","Enter VR mode with a headset or fullscreen without"),x.setAttribute(z.AFRAME_INJECTED,""),_.device.isMobile()&&Y(x),U.appendChild(x),x.addEventListener("click",function(j){G(),j.stopPropagation()}),U}function R(G,x){var U,j;return j=document.createElement("div"),j.classList.add(v),x&&j.classList.add("xr"),j.setAttribute(z.AFRAME_INJECTED,""),U=document.createElement("button"),U.className=h,U.setAttribute("title","Enter AR mode with a headset or handheld device."),U.setAttribute(z.AFRAME_INJECTED,""),_.device.isMobile()&&Y(U),j.appendChild(U),U.addEventListener("click",function(Z){G(),Z.stopPropagation()}),j}function N(G){var x=document.createElement("div");x.className=m,x.classList.add(p),x.setAttribute(z.AFRAME_INJECTED,"");var U=document.createElement("button");return U.setAttribute(z.AFRAME_INJECTED,""),U.innerHTML="Exit VR",U.addEventListener("click",G),x.appendChild(U),x}function Y(G){G.addEventListener("touchstart",function(){G.classList.remove("resethover")},{passive:!0}),G.addEventListener("touchend",function(){G.classList.add("resethover")},{passive:!0})}},"./src/components/shadow.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>_});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=(0,z.registerComponent)("shadow",{schema:{cast:{default:!0},receive:{default:!0}},init:function(){this.onMeshChanged=this.update.bind(this),this.el.addEventListener("object3dset",this.onMeshChanged),this.system.setShadowMapEnabled(!0)},update:function(){var T=this.data;this.updateDescendants(T.cast,T.receive)},remove:function(){var T=this.el;T.removeEventListener("object3dset",this.onMeshChanged),this.updateDescendants(!1,!1)},updateDescendants:function(T,v){var D=this.el.sceneEl;this.el.object3D.traverse(function(h){if(h instanceof s.Mesh&&(h.castShadow=T,h.receiveShadow=v,D.hasLoaded&&h.material))for(var p=Array.isArray(h.material)?h.material:[h.material],m=0;m{d.r(O),d.d(O,{Component:()=>v});var s=d("./src/core/component.js"),z=d("./src/utils/index.js"),_=d("./node_modules/three/build/three.core.js"),T=(0,z.debug)("components:sound:warn"),v=(0,s.registerComponent)("sound",{schema:{autoplay:{default:!1},distanceModel:{default:"inverse",oneOf:["linear","inverse","exponential"]},loop:{default:!1},loopStart:{default:0},loopEnd:{default:0},maxDistance:{default:1e4},on:{default:""},poolSize:{default:1},positional:{default:!0},refDistance:{default:1},rolloffFactor:{default:1},src:{type:"audio"},volume:{default:1}},multiple:!0,init:function(){var D=this;this.listener=null,this.audioLoader=new _.AudioLoader,this.pool=new _.Group,this.loaded=!1,this.mustPlay=!1,this.playSoundBound=function(){D.playSound()}},update:function(D){var h=this.data,p,m,u=h.src!==D.src;if(u){if(!h.src)return;this.setupSound()}for(p=0;p0&&(this.stopSound(),D.removeObject3D("sound"));var l=this.listener=p.audioListener||new _.AudioListener;for(p.audioListener=l,p.camera&&p.camera.add(l),p.addEventListener("camera-set-active",function(R){R.detail.cameraEl.getObject3D("camera").add(l)}),this.pool=new _.Group,h=0;h{d.r(O),d.d(O,{Component:()=>SA,FONTS:()=>G});var s=d("./node_modules/three-bmfont-text/index.js"),z=d.n(s),_=d("./node_modules/load-bmfont/browser.js"),T=d.n(_),v=d("./src/core/component.js"),D=d("./src/core/shader.js"),h=d("./node_modules/three/build/three.core.js"),p=d("./src/utils/index.js"),m=d("./src/constants/index.js"),u=p.debug("components:text:error"),l=p.debug("components:text:warn"),R=1,N=16,Y=m.AFRAME_CDN_ROOT+"fonts/",G={aileronsemibold:Y+"Aileron-Semibold.fnt",dejavu:Y+"DejaVu-sdf.fnt",exo2bold:Y+"Exo2Bold.fnt",exo2semibold:Y+"Exo2SemiBold.fnt",kelsonsans:Y+"KelsonSans.fnt",monoid:Y+"Monoid.fnt",mozillavr:Y+"mozillavr.fnt",roboto:Y+"Roboto-msdf.json",sourcecodepro:Y+"SourceCodePro.fnt"},x=["roboto"],U="roboto",j=new NA,Z={},CA={},QA=/^\w+:/,SA=(0,v.registerComponent)("text",{multiple:!0,schema:{align:{type:"string",default:"left",oneOf:["left","right","center"]},alphaTest:{default:.5},anchor:{default:"center",oneOf:["left","right","center","align"]},baseline:{default:"center",oneOf:["top","center","bottom"]},color:{type:"color",default:"#FFF"},font:{type:"string",default:U},fontImage:{type:"string"},height:{type:"number"},letterSpacing:{type:"number",default:0},lineHeight:{type:"number"},negate:{type:"boolean",default:!0},opacity:{type:"number",default:1},shader:{default:"sdf",oneOf:D.shaders},side:{default:"front",oneOf:["front","back","double"]},tabSize:{default:4},transparent:{default:!0},value:{type:"string"},whiteSpace:{default:"normal",oneOf:["normal","pre","nowrap"]},width:{type:"number"},wrapCount:{type:"number",default:40},wrapPixels:{type:"number"},xOffset:{type:"number",default:0},yOffset:{type:"number",default:0},zOffset:{type:"number",default:.001}},init:function(){this.shaderData={},this.geometry=z()(),this.createOrUpdateMaterial(),this.explicitGeoDimensionsChecked=!1},update:function(HA){var pe=this.data,He=this.currentFont;if(CA[pe.font]?this.texture=CA[pe.font]:(this.texture=CA[pe.font]=new h.Texture,this.texture.anisotropy=N),this.createOrUpdateMaterial(),HA.font!==pe.font){this.updateFont();return}He&&(this.updateGeometry(this.geometry,He),this.updateLayout())},remove:function(){this.geometry.dispose(),this.geometry=null,this.el.removeObject3D(this.attrName),this.material.dispose(),this.material=null,this.texture.dispose(),this.texture=null,this.shaderObject&&delete this.shaderObject},createOrUpdateMaterial:function(){var HA=this.data,pe,He=this.material,Oe,ye=this.shaderData,Ye;if(Ye=HA.shader,x.indexOf(HA.font)!==-1||HA.font.indexOf("-msdf.")>=0?Ye="msdf":HA.font in G&&x.indexOf(HA.font)===-1&&(Ye="sdf"),pe=(this.shaderObject&&this.shaderObject.name)!==Ye,ye.alphaTest=HA.alphaTest,ye.color=HA.color,ye.map=this.texture,ye.opacity=HA.opacity,ye.side=UA(HA.side),ye.transparent=HA.transparent,ye.negate=HA.negate,!pe){this.shaderObject.update(ye),He.transparent=ye.transparent,He.side=ye.side;return}Oe=hA(this.el,Ye,ye),this.material=Oe.material,this.shaderObject=Oe.shader,this.material.side=ye.side,this.mesh&&(this.mesh.material=this.material)},updateFont:function(){var HA=this.data,pe=this.el,He,Oe=this.geometry,ye=this;HA.font||l("No font specified. Using the default font."),this.mesh&&(this.mesh.visible=!1),He=this.lookupFont(HA.font||U)||HA.font,j.get(He,function(){return TA(He,HA.yOffset)}).then(function(Et){var ct;if(Et.pages.length!==1)throw new Error("Currently only single-page bitmap fonts are supported.");Z[He]||(Et.widthFactor=Z[Et]=lA(Et)),ye.currentFont=Et,ct=ye.getFontImageSrc(),j.get(ct,function(){return pA(ct)}).then(function(q){var gA=ye.texture;gA&&(gA.image=q,gA.needsUpdate=!0,CA[HA.font]=gA,ye.texture=gA,ye.initMesh(),ye.currentFont=Et,ye.updateGeometry(Oe,Et),ye.updateLayout(),ye.mesh.visible=!0,pe.emit("textfontset",{font:HA.font,fontObj:Et}))}).catch(function(q){u(q.message),u(q.stack)})}).catch(function(Ye){u(Ye.message),u(Ye.stack)})},initMesh:function(){this.mesh||(this.mesh=new h.Mesh(this.geometry,this.material),this.el.setObject3D(this.attrName,this.mesh))},getFontImageSrc:function(){if(this.data.fontImage)return this.data.fontImage;var HA=this.lookupFont(this.data.font||U)||this.data.font,pe=this.currentFont.pages[0];return pe.match(QA)&&pe.indexOf("http")!==0?HA.replace(/(\.fnt)|(\.json)/,".png"):h.LoaderUtils.extractUrlBase(HA)+pe},updateLayout:function(){var HA,pe,He=this.el,Oe=this.data,ye=this.geometry,Ye,Et,ct,q=this.mesh,gA,yA,ge,le,Qt;if(!(!q||!ye.layout)){if(Ye=He.getAttribute("geometry"),ge=Oe.width||Ye&&Ye.width||R,gA=uA(Oe.wrapPixels,Oe.wrapCount,this.currentFont.widthFactor),yA=ge/gA,ct=ye.layout,Et=yA*(ct.height+ct.descender),Ye&&Ye.primitive==="plane"&&(this.explicitGeoDimensionsChecked||(this.explicitGeoDimensionsChecked=!0,this.hasExplicitGeoWidth=!!Ye.width,this.hasExplicitGeoHeight=!!Ye.height),this.hasExplicitGeoWidth||He.setAttribute("geometry","width",ge),this.hasExplicitGeoHeight||He.setAttribute("geometry","height",Et)),HA=Oe.anchor==="align"?Oe.align:Oe.anchor,HA==="left")le=0;else if(HA==="right")le=-1*ct.width;else if(HA==="center")le=-1*ct.width/2;else throw new TypeError("Invalid text.anchor property value",HA);if(pe=Oe.baseline,pe==="bottom")Qt=0;else if(pe==="top")Qt=-1*ct.height+ct.ascender;else if(pe==="center")Qt=-1*ct.height/2;else throw new TypeError("Invalid text.baseline property value",pe);q.position.x=le*yA+Oe.xOffset,q.position.y=Qt*yA,q.position.z=Oe.zOffset,q.scale.set(yA,-1*yA,yA)}},lookupFont:function(HA){return G[HA]},updateGeometry:function(){var HA={},pe={},He=/\\n/g,Oe=/\\t/g;return function(ye,Ye){var Et=this.data;pe.font=Ye,pe.lineHeight=Et.lineHeight&&isFinite(Et.lineHeight)?Et.lineHeight:Ye.common.lineHeight,pe.text=Et.value.toString().replace(He,` `).replace(Oe," "),pe.width=uA(Et.wrapPixels,Et.wrapCount,Ye.widthFactor),ye.update(p.extend(HA,Et,pe))}}()});function UA(HA){switch(HA){case"back":return h.FrontSide;case"double":return h.DoubleSide;default:return h.BackSide}}function TA(HA,pe){return new Promise(function(He,Oe){T()(HA,function(ye,Ye){if(ye){u("Error loading font",HA),Oe(ye);return}HA.indexOf("/Roboto-msdf.json")>=0&&(pe=30),pe&&Ye.chars.forEach(function(ct){ct.yoffset+=pe}),He(Ye)})})}function pA(HA){return new Promise(function(pe,He){new h.ImageLoader().load(HA,function(Oe){pe(Oe)},void 0,function(){u("Error loading font image",HA),He(null)})})}function hA(HA,pe,He){var Oe,ye;return ye=new D.shaders[pe].Shader,ye.el=HA,ye.init(He),ye.update(He),Oe=ye.material,Oe.transparent=He.transparent,{material:Oe,shader:ye}}function uA(HA,pe,He){return HA||(.5+pe)*He}function lA(HA){var pe=0,He=0,Oe=0;return HA.chars.forEach(function(ye){pe+=ye.xadvance,ye.id>=48&&ye.id<=57&&(Oe++,He+=ye.xadvance)}),Oe?He/Oe:pe/HA.chars.length}function NA(){var HA=this.cache={};this.get=function(pe,He){return pe in HA||(HA[pe]=He()),HA[pe]}}},"./src/components/tracked-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>T});var s=d("./src/core/component.js"),z=d("./src/utils/tracked-controls.js"),_={AXISMOVE:"axismove",BUTTONCHANGED:"buttonchanged",BUTTONDOWN:"buttondown",BUTTONUP:"buttonup",TOUCHSTART:"touchstart",TOUCHEND:"touchend"},T=(0,s.registerComponent)("tracked-controls",{schema:{id:{type:"string",default:""},controller:{default:-1},autoHide:{default:!0},hand:{type:"string",default:""},handTrackingEnabled:{default:!1},iterateControllerProfiles:{default:!1}},init:function(){this.buttonEventDetails={},this.buttonStates=this.el.components["tracked-controls"].buttonStates={},this.axis=this.el.components["tracked-controls"].axis=[0,0,0],this.changedAxes=[],this.axisMoveEventDetail={axis:this.axis,changed:this.changedAxes},this.updateController=this.updateController.bind(this)},update:function(){this.updateController()},play:function(){var v=this.el.sceneEl;this.updateController(),v.addEventListener("controllersupdated",this.updateController)},pause:function(){var v=this.el.sceneEl;v.removeEventListener("controllersupdated",this.updateController)},isControllerPresent:function(v){return!(!this.controller||this.controller.gamepad||v.inputSource.handedness!=="none"&&v.inputSource.handedness!==this.data.hand)},updateController:function(){this.controller=z.findMatchingControllerWebXR(this.system.controllers,this.data.id,this.data.hand,this.data.controller,this.data.iterateControllerProfiles,this.data.handTrackingEnabled),this.el.components["tracked-controls"].controller=this.controller},tick:function(){var v=this.el.sceneEl,D=this.controller,h=v.frame;this.data.autoHide&&(this.el.object3D.visible=!!D),!(!D||!v.frame||!this.system.referenceSpace)&&(D.hand||(this.pose=h.getPose(D.gripSpace,this.system.referenceSpace),this.updatePose(),this.updateButtons()))},updatePose:function(){var v=this.el.object3D,D=this.pose;D&&(v.matrix.elements=D.transform.matrix,v.matrix.decompose(v.position,v.rotation,v.scale))},updateButtons:function(){var v,D,h=this.controller,p;if(!(!h||!h.gamepad)){for(p=h.gamepad,D=0;D{d.r(O),d.d(O,{Component:()=>u});var s=d("./src/core/component.js"),z=d("./node_modules/three/build/three.core.js"),_=d("./src/constants/index.js"),T=d("./src/utils/tracked-controls.js"),v=_.AFRAME_CDN_ROOT+"controllers/valve/index/valve-index-",D={left:v+"left.glb",right:v+"right.glb"},h="valve",p={left:{x:0,y:-.05,z:.06},right:{x:0,y:-.05,z:.06}},m={left:{_x:Math.PI/3,_y:0,_z:0,_order:"XYZ"},right:{_x:Math.PI/3,_y:0,_z:0,_order:"XYZ"}},u=(0,s.registerComponent)("valve-index-controls",{schema:{hand:{default:"left"},buttonColor:{type:"color",default:"#FAFAFA"},buttonHighlightColor:{type:"color",default:"#22D1EE"},model:{default:!0}},after:["tracked-controls"],mapping:{axes:{trackpad:[0,1],thumbstick:[2,3]},buttons:["trigger","grip","trackpad","thumbstick","abutton"]},init:function(){var l=this;this.controllerPresent=!1,this.onButtonChanged=this.onButtonChanged.bind(this),this.onButtonDown=function(R){(0,T.onButtonEvent)(R.detail.id,"down",l)},this.onButtonUp=function(R){(0,T.onButtonEvent)(R.detail.id,"up",l)},this.onButtonTouchEnd=function(R){(0,T.onButtonEvent)(R.detail.id,"touchend",l)},this.onButtonTouchStart=function(R){(0,T.onButtonEvent)(R.detail.id,"touchstart",l)},this.previousButtonValues={},this.bindMethods()},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},bindMethods:function(){this.onModelLoaded=this.onModelLoaded.bind(this),this.onControllersUpdate=this.onControllersUpdate.bind(this),this.checkIfControllerPresent=this.checkIfControllerPresent.bind(this),this.removeControllersUpdateListener=this.removeControllersUpdateListener.bind(this),this.onAxisMoved=this.onAxisMoved.bind(this)},addEventListeners:function(){var l=this.el;l.addEventListener("buttonchanged",this.onButtonChanged),l.addEventListener("buttondown",this.onButtonDown),l.addEventListener("buttonup",this.onButtonUp),l.addEventListener("touchend",this.onButtonTouchEnd),l.addEventListener("touchstart",this.onButtonTouchStart),l.addEventListener("model-loaded",this.onModelLoaded),l.addEventListener("axismove",this.onAxisMoved),this.controllerEventsActive=!0},removeEventListeners:function(){var l=this.el;l.removeEventListener("buttonchanged",this.onButtonChanged),l.removeEventListener("buttondown",this.onButtonDown),l.removeEventListener("buttonup",this.onButtonUp),l.removeEventListener("touchend",this.onButtonTouchEnd),l.removeEventListener("touchstart",this.onButtonTouchStart),l.removeEventListener("model-loaded",this.onModelLoaded),l.removeEventListener("axismove",this.onAxisMoved),this.controllerEventsActive=!1},checkIfControllerPresent:function(){var l=this.data,R=l.hand==="right"?0:l.hand==="left"?1:2;(0,T.checkControllerPresentAndSetup)(this,h,{index:R,iterateControllerProfiles:!0,hand:l.hand})},injectTrackedControls:function(){var l=this.el,R=this.data;l.setAttribute("tracked-controls",{idPrefix:h,controller:R.hand==="right"?1:R.hand==="left"?0:2,hand:R.hand}),this.loadModel()},loadModel:function(){var l=this.data;l.model&&this.el.setAttribute("gltf-model",""+D[l.hand])},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener("controllersupdated",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener("controllersupdated",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onButtonChanged:function(l){var R=this.mapping.buttons[l.detail.id],N=this.buttonMeshes,Y;R&&(R==="trigger"&&(Y=l.detail.state.value,N&&N.trigger&&(N.trigger.rotation.x=this.triggerOriginalRotationX-Y*(Math.PI/40))),this.el.emit(R+"changed",l.detail.state))},onModelLoaded:function(l){var R,N=l.detail.model,Y=this;l.target!==this.el||!this.data.model||(R=this.buttonMeshes={},R.grip={left:N.getObjectByName("leftgrip"),right:N.getObjectByName("rightgrip")},R.menu=N.getObjectByName("menubutton"),R.system=N.getObjectByName("systembutton"),R.trackpad=N.getObjectByName("touchpad"),R.trigger=N.getObjectByName("trigger"),this.triggerOriginalRotationX=R.trigger.rotation.x,Object.keys(R).forEach(function(G){Y.setButtonColor(G,Y.data.buttonColor)}),N.position.copy(m[this.data.hand]),N.rotation.copy(p[this.data.hand]),this.el.emit("controllermodelready",{name:"valve-index-controls",model:this.data.model,rayOrigin:new z.Vector3(0,0,0)}))},onAxisMoved:function(l){(0,T.emitIfAxesChanged)(this,this.mapping.axes,l)},updateModel:function(l,R){var N,Y;this.data.model&&(Y=R.indexOf("touch")!==-1,!Y&&(N=R==="up"?this.data.buttonColor:this.data.buttonHighlightColor,this.setButtonColor(l,N)))},setButtonColor:function(l,R){}})},"./src/components/visible.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>z});var s=d("./src/core/component.js"),z=(0,s.registerComponent)("visible",{schema:{default:!0},update:function(){this.el.object3D.visible=this.data}})},"./src/components/vive-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>p});var s=d("./src/core/component.js"),z=d("./src/constants/index.js"),_=d("./src/utils/tracked-controls.js"),T=z.AFRAME_CDN_ROOT+"controllers/vive/vr_controller_vive.obj",v=z.AFRAME_CDN_ROOT+"controllers/vive/vr_controller_vive.mtl",D="htc-vive",h={axes:{touchpad:[0,1]},buttons:["trigger","grip","touchpad","none"]},p=(0,s.registerComponent)("vive-controls",{schema:{hand:{default:"left"},buttonColor:{type:"color",default:"#FAFAFA"},buttonHighlightColor:{type:"color",default:"#22D1EE"},model:{default:!0}},after:["tracked-controls"],mapping:h,init:function(){var m=this;this.controllerPresent=!1,this.onButtonChanged=this.onButtonChanged.bind(this),this.onButtonDown=function(u){(0,_.onButtonEvent)(u.detail.id,"down",m)},this.onButtonUp=function(u){(0,_.onButtonEvent)(u.detail.id,"up",m)},this.onButtonTouchEnd=function(u){(0,_.onButtonEvent)(u.detail.id,"touchend",m)},this.onButtonTouchStart=function(u){(0,_.onButtonEvent)(u.detail.id,"touchstart",m)},this.previousButtonValues={},this.bindMethods()},update:function(){var m=this.data;this.controllerIndex=m.hand==="right"?0:m.hand==="left"?1:2},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},bindMethods:function(){this.onModelLoaded=this.onModelLoaded.bind(this),this.onControllersUpdate=this.onControllersUpdate.bind(this),this.checkIfControllerPresent=this.checkIfControllerPresent.bind(this),this.removeControllersUpdateListener=this.removeControllersUpdateListener.bind(this),this.onAxisMoved=this.onAxisMoved.bind(this)},addEventListeners:function(){var m=this.el;m.addEventListener("buttonchanged",this.onButtonChanged),m.addEventListener("buttondown",this.onButtonDown),m.addEventListener("buttonup",this.onButtonUp),m.addEventListener("touchend",this.onButtonTouchEnd),m.addEventListener("touchstart",this.onButtonTouchStart),m.addEventListener("model-loaded",this.onModelLoaded),m.addEventListener("axismove",this.onAxisMoved),this.controllerEventsActive=!0},removeEventListeners:function(){var m=this.el;m.removeEventListener("buttonchanged",this.onButtonChanged),m.removeEventListener("buttondown",this.onButtonDown),m.removeEventListener("buttonup",this.onButtonUp),m.removeEventListener("touchend",this.onButtonTouchEnd),m.removeEventListener("touchstart",this.onButtonTouchStart),m.removeEventListener("model-loaded",this.onModelLoaded),m.removeEventListener("axismove",this.onAxisMoved),this.controllerEventsActive=!1},checkIfControllerPresent:function(){var m=this.data;(0,_.checkControllerPresentAndSetup)(this,D,{index:this.controllerIndex,hand:m.hand})},injectTrackedControls:function(){var m=this.el,u=this.data;m.setAttribute("tracked-controls",{idPrefix:D,hand:u.hand,controller:this.controllerIndex}),this.data.model&&this.el.setAttribute("obj-model",{obj:T,mtl:v})},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener("controllersupdated",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener("controllersupdated",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onButtonChanged:function(m){var u=this.mapping.buttons[m.detail.id],l=this.buttonMeshes,R;u&&(u==="trigger"&&(R=m.detail.state.value,l&&l.trigger&&(l.trigger.rotation.x=-R*(Math.PI/12))),this.el.emit(u+"changed",m.detail.state))},onModelLoaded:function(m){var u,l=m.detail.model,R=this;m.target!==this.el||!this.data.model||(u=this.buttonMeshes={},u.grip={left:l.getObjectByName("leftgrip"),right:l.getObjectByName("rightgrip")},u.menu=l.getObjectByName("menubutton"),u.system=l.getObjectByName("systembutton"),u.trackpad=l.getObjectByName("touchpad"),u.touchpad=l.getObjectByName("touchpad"),u.trigger=l.getObjectByName("trigger"),Object.keys(u).forEach(function(N){R.setButtonColor(N,R.data.buttonColor)}),l.position.set(0,-.015,.04))},onAxisMoved:function(m){(0,_.emitIfAxesChanged)(this,this.mapping.axes,m)},updateModel:function(m,u){var l,R;this.data.model&&(R=u.indexOf("touch")!==-1,!R&&(l=u==="up"?this.data.buttonColor:this.data.buttonHighlightColor,this.setButtonColor(m,l)))},setButtonColor:function(m,u){var l=this.buttonMeshes;if(l){if(m==="grip"){l.grip.left.material.color.set(u),l.grip.right.material.color.set(u);return}l[m].material.color.set(u)}}})},"./src/components/vive-focus-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>h});var s=d("./src/core/component.js"),z=d("./src/constants/index.js"),_=d("./src/utils/tracked-controls.js"),T=z.AFRAME_CDN_ROOT+"controllers/vive/focus-controller/focus-controller.gltf",v="htc-vive-focus",D={axes:{touchpad:[0,1]},buttons:["trigger","none","touchpad","none","menu"]},h=(0,s.registerComponent)("vive-focus-controls",{schema:{hand:{default:""},buttonTouchedColor:{type:"color",default:"#BBBBBB"},buttonHighlightColor:{type:"color",default:"#7A7A7A"},model:{default:!0}},after:["tracked-controls"],mapping:D,bindMethods:function(){this.onModelLoaded=this.onModelLoaded.bind(this),this.onControllersUpdate=this.onControllersUpdate.bind(this),this.checkIfControllerPresent=this.checkIfControllerPresent.bind(this),this.removeControllersUpdateListener=this.removeControllersUpdateListener.bind(this),this.onAxisMoved=this.onAxisMoved.bind(this)},init:function(){var p=this;this.onButtonChanged=this.onButtonChanged.bind(this),this.onButtonDown=function(m){(0,_.onButtonEvent)(m.detail.id,"down",p)},this.onButtonUp=function(m){(0,_.onButtonEvent)(m.detail.id,"up",p)},this.onButtonTouchStart=function(m){(0,_.onButtonEvent)(m.detail.id,"touchstart",p)},this.onButtonTouchEnd=function(m){(0,_.onButtonEvent)(m.detail.id,"touchend",p)},this.controllerPresent=!1,this.bindMethods()},addEventListeners:function(){var p=this.el;p.addEventListener("buttonchanged",this.onButtonChanged),p.addEventListener("buttondown",this.onButtonDown),p.addEventListener("buttonup",this.onButtonUp),p.addEventListener("touchstart",this.onButtonTouchStart),p.addEventListener("touchend",this.onButtonTouchEnd),p.addEventListener("model-loaded",this.onModelLoaded),p.addEventListener("axismove",this.onAxisMoved),this.controllerEventsActive=!0,this.addControllersUpdateListener()},removeEventListeners:function(){var p=this.el;p.removeEventListener("buttonchanged",this.onButtonChanged),p.removeEventListener("buttondown",this.onButtonDown),p.removeEventListener("buttonup",this.onButtonUp),p.removeEventListener("touchstart",this.onButtonTouchStart),p.removeEventListener("touchend",this.onButtonTouchEnd),p.removeEventListener("model-loaded",this.onModelLoaded),p.removeEventListener("axismove",this.onAxisMoved),this.controllerEventsActive=!1,this.removeControllersUpdateListener()},checkIfControllerPresent:function(){(0,_.checkControllerPresentAndSetup)(this,v,this.data.hand?{hand:this.data.hand}:{})},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},injectTrackedControls:function(){var p=this.el;p.setAttribute("tracked-controls",{idPrefix:v}),this.data.model&&this.el.setAttribute("gltf-model",T)},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener("controllersupdated",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener("controllersupdated",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onModelLoaded:function(p){var m=p.detail.model,u;p.target!==this.el||!this.data.model||(u=this.buttonMeshes={},u.trigger=m.getObjectByName("BumperKey"),u.triggerPressed=m.getObjectByName("BumperKey_Press"),u.triggerPressed&&(u.triggerPressed.visible=!1),u.touchpad=m.getObjectByName("TouchPad"),u.touchpadPressed=m.getObjectByName("TouchPad_Press"),u.trackpad=m.getObjectByName("TouchPad"),u.trackpadPressed=m.getObjectByName("TouchPad_Press"),u.trackpadPressed&&(u.trackpadPressed.visible=!1))},onButtonChanged:function(p){var m=this.mapping.buttons[p.detail.id];m&&this.el.emit(m+"changed",p.detail.state)},onAxisMoved:function(p){(0,_.emitIfAxesChanged)(this,this.mapping.axes,p)},updateModel:function(p,m){this.data.model&&this.updateButtonModel(p,m)},updateButtonModel:function(p,m){var u=this.buttonMeshes,l=p+"Pressed";if(!(!u||!u[p]||!u[l])){var R;switch(m){case"down":R=this.data.buttonHighlightColor;break;case"touchstart":R=this.data.buttonTouchedColor;break}R&&u[l].material.color.set(R),u[l].visible=!!R,u[p].visible=!R}}})},"./src/components/wasd-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>m});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/constants/keyboardevent.js"),_=d("./src/core/component.js"),T=d("./src/utils/index.js"),v=T.shouldCaptureKeyEvent,D=1e-5,h=.2,p=["KeyW","KeyA","KeyS","KeyD","ArrowUp","ArrowLeft","ArrowRight","ArrowDown"],m=(0,_.registerComponent)("wasd-controls",{schema:{acceleration:{default:65},adAxis:{default:"x",oneOf:["x","y","z"]},adEnabled:{default:!0},adInverted:{default:!1},enabled:{default:!0},fly:{default:!1},wsAxis:{default:"z",oneOf:["x","y","z"]},wsEnabled:{default:!0},wsInverted:{default:!1}},after:["look-controls"],init:function(){this.keys={},this.easing=1.1,this.velocity=new s.Vector3,this.onBlur=this.onBlur.bind(this),this.onContextMenu=this.onContextMenu.bind(this),this.onFocus=this.onFocus.bind(this),this.onKeyDown=this.onKeyDown.bind(this),this.onKeyUp=this.onKeyUp.bind(this),this.onVisibilityChange=this.onVisibilityChange.bind(this),this.attachVisibilityEventListeners()},tick:function(l,R){var N=this.data,Y=this.el,G=this.velocity;!G[N.adAxis]&&!G[N.wsAxis]&&u(this.keys)||(R=R/1e3,this.updateVelocity(R),!(!G[N.adAxis]&&!G[N.wsAxis])&&Y.object3D.position.add(this.getMovementVector(R)))},update:function(l){l.adAxis!==this.data.adAxis&&(this.velocity[l.adAxis]=0),l.wsAxis!==this.data.wsAxis&&(this.velocity[l.wsAxis]=0)},remove:function(){this.removeKeyEventListeners(),this.removeVisibilityEventListeners()},play:function(){this.attachKeyEventListeners()},pause:function(){this.keys={},this.removeKeyEventListeners()},updateVelocity:function(l){var R,N,Y,G=this.data,x=this.keys,U=this.velocity,j,Z;if(N=G.adAxis,j=G.wsAxis,l>h){U[N]=0,U[j]=0;return}var CA=Math.pow(1/this.easing,l*60);U[N]!==0&&(U[N]=U[N]*CA),U[j]!==0&&(U[j]=U[j]*CA),Math.abs(U[N]){d.r(O),d.d(O,{Component:()=>R});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=d("./src/utils/index.js"),T=d("./src/constants/index.js"),v=d("./src/utils/tracked-controls.js"),D=_.debug("components:windows-motion-controls:debug"),h=_.debug("components:windows-motion-controls:warn"),p=T.AFRAME_CDN_ROOT+"controllers/microsoft/",m={left:"left.glb",right:"right.glb",default:"universal.glb"},u="windows-mixed-reality",l={axes:{touchpad:[0,1],thumbstick:[2,3]},buttons:["trigger","squeeze","touchpad","thumbstick","menu"],axisMeshNames:["TOUCHPAD_TOUCH_X","TOUCHPAD_TOUCH_X","THUMBSTICK_X","THUMBSTICK_Y"],buttonMeshNames:{trigger:"SELECT",menu:"MENU",squeeze:"GRASP",thumbstick:"THUMBSTICK_PRESS",touchpad:"TOUCHPAD_PRESS"},pointingPoseMeshName:"POINTING_POSE"},R=(0,z.registerComponent)("windows-motion-controls",{schema:{hand:{default:T.DEFAULT_HANDEDNESS},pair:{default:0},model:{default:!0}},after:["tracked-controls"],mapping:l,bindMethods:function(){this.onModelError=this.onModelError.bind(this),this.onModelLoaded=this.onModelLoaded.bind(this),this.onControllersUpdate=this.onControllersUpdate.bind(this),this.checkIfControllerPresent=this.checkIfControllerPresent.bind(this),this.onAxisMoved=this.onAxisMoved.bind(this)},init:function(){var N=this,Y=this.el;this.onButtonChanged=this.onButtonChanged.bind(this),this.onButtonDown=function(G){(0,v.onButtonEvent)(G.detail.id,"down",N)},this.onButtonUp=function(G){(0,v.onButtonEvent)(G.detail.id,"up",N)},this.onButtonTouchStart=function(G){(0,v.onButtonEvent)(G.detail.id,"touchstart",N)},this.onButtonTouchEnd=function(G){(0,v.onButtonEvent)(G.detail.id,"touchend",N)},this.onControllerConnected=function(){N.setModelVisibility(!0)},this.onControllerDisconnected=function(){N.setModelVisibility(!1)},this.controllerPresent=!1,this.previousButtonValues={},this.bindMethods(),this.loadedMeshInfo={buttonMeshes:null,axisMeshes:null},this.rayOrigin={origin:new s.Vector3,direction:new s.Vector3(0,0,-1),createdFromMesh:!1},Y.addEventListener("controllerconnected",this.onControllerConnected),Y.addEventListener("controllerdisconnected",this.onControllerDisconnected)},addEventListeners:function(){var N=this.el;N.addEventListener("buttonchanged",this.onButtonChanged),N.addEventListener("buttondown",this.onButtonDown),N.addEventListener("buttonup",this.onButtonUp),N.addEventListener("touchstart",this.onButtonTouchStart),N.addEventListener("touchend",this.onButtonTouchEnd),N.addEventListener("axismove",this.onAxisMoved),N.addEventListener("model-error",this.onModelError),N.addEventListener("model-loaded",this.onModelLoaded),this.controllerEventsActive=!0},removeEventListeners:function(){var N=this.el;N.removeEventListener("buttonchanged",this.onButtonChanged),N.removeEventListener("buttondown",this.onButtonDown),N.removeEventListener("buttonup",this.onButtonUp),N.removeEventListener("touchstart",this.onButtonTouchStart),N.removeEventListener("touchend",this.onButtonTouchEnd),N.removeEventListener("axismove",this.onAxisMoved),N.removeEventListener("model-error",this.onModelError),N.removeEventListener("model-loaded",this.onModelLoaded),this.controllerEventsActive=!1},checkIfControllerPresent:function(){(0,v.checkControllerPresentAndSetup)(this,u,{hand:this.data.hand,index:this.data.pair,iterateControllerProfiles:!0})},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},updateControllerModel:function(){if(!this.data.model||this.rayOrigin.createdFromMesh){this.modelReady();return}var N=this.createControllerModelUrl();this.loadModel(N)},createControllerModelUrl:function(N){var Y="default",G=this.data.hand,x;return x=m[G]||m.default,p+Y+"/"+x},injectTrackedControls:function(){var N=this.data;this.el.setAttribute("tracked-controls",{idPrefix:u,controller:N.pair,hand:N.hand}),this.updateControllerModel()},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener("controllersupdated",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener("controllersupdated",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onModelError:function(N){var Y=this.createControllerModelUrl(!0);N.detail.src!==Y?(h("Failed to load controller model for device, attempting to load default."),this.loadModel(Y)):h("Failed to load default controller model.")},loadModel:function(N){this.el.setAttribute("gltf-model","url("+N+")")},onModelLoaded:function(N){var Y=this.controllerModel=N.detail.model,G=this.loadedMeshInfo,x,U,j,Z;if(N.target!==this.el)return;if(D("Processing model"),G.buttonMeshes={},G.axisMeshes={},Y){for(x=0;x{d.r(O),d.d(O,{AFRAME_CDN_ROOT:()=>s,AFRAME_INJECTED:()=>z,DEFAULT_CAMERA_HEIGHT:()=>_,DEFAULT_HANDEDNESS:()=>T});var s=window.AFRAME_CDN_ROOT||"https://cdn.aframe.io/",z="aframe-injected",_=1.6,T="right"},"./src/constants/keyboardevent.js":(_A,O,d)=>{d.r(O),d.d(O,{KEYCODE_TO_CODE:()=>s});var s={38:"ArrowUp",37:"ArrowLeft",40:"ArrowDown",39:"ArrowRight",87:"KeyW",65:"KeyA",83:"KeyS",68:"KeyD"}},"./src/core/a-assets.js":(_A,O,d)=>{d.r(O),d.d(O,{getFileNameFromURL:()=>N,inferResponseType:()=>R});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/a-node.js"),_=d("./src/utils/index.js"),T=new s.FileLoader,v=(0,_.debug)("core:a-assets:warn");class D extends z.ANode{constructor(){super(),this.isAssets=!0,this.fileLoader=T,this.timeout=null}doConnectedCallback(){var G=this,x,U=[],j,Z,CA,QA,SA,UA;if(super.doConnectedCallback(),!this.parentNode.isScene)throw new Error(" must be a child of a .");for(QA=this.querySelectorAll("img"),x=0;x=Y.duration&&(Y.tagName==="VIDEO"&&s.Cache.add(Y.getAttribute("src"),Y),G())}})}function m(Y){var G=u(Y);return G.tagName&&G.tagName.toLowerCase()==="video"&&(G.setAttribute("playsinline",""),G.setAttribute("webkit-playsinline","")),G!==Y&&(Y.parentNode.appendChild(G),Y.parentNode.removeChild(Y)),G}function u(Y){var G,x;return Y.hasAttribute("crossorigin")||(x=Y.getAttribute("src"),x!==null&&(x.indexOf("://")===-1||l(x)===window.location.host))?Y:(v('Cross-origin element (e.g., ) was requested without `crossorigin` set. A-Frame will re-request the asset with `crossorigin` attribute set. Please set `crossorigin` on the element (e.g., )',x),Y.crossOrigin="anonymous",G=Y.cloneNode(!0),G)}function l(Y){var G=Y.indexOf("://")>-1?Y.split("/")[2]:Y.split("/")[0];return G.substring(0,G.indexOf(":"))}function R(Y){var G=N(Y),x=G.lastIndexOf(".");if(x>=0){var U=G.slice(x,Y.search(/\?|#|$/));if(U===".glb")return"arraybuffer"}return"text"}function N(Y){var G=document.createElement("a");G.href=Y;var x=G.search.replace(/^\?/,""),U=Y.replace(x,"").replace("?","");return U.substring(U.lastIndexOf("/")+1)}},"./src/core/a-cubemap.js":(_A,O,d)=>{d.r(O);var s=d("./src/utils/index.js"),z=(0,s.debug)("core:cubemap:warn");class _ extends HTMLElement{constructor(v){return v=super(v),v}onReadyStateChange(){document.readyState==="complete"&&this.doConnectedCallback()}connectedCallback(){if(document.readyState!=="complete"){document.addEventListener("readystatechange",this.onReadyStateChange.bind(this));return}_.prototype.doConnectedCallback.call(this)}doConnectedCallback(){this.srcs=this.validate()}validate(){var v=this.querySelectorAll("[src]"),D,h=[];if(v.length===6){for(D=0;D did not contain exactly six elements each with a `src` attribute.")}}customElements.define("a-cubemap",_)},"./src/core/a-entity.js":(_A,O,d)=>{d.r(O),d.d(O,{AEntity:()=>u});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/a-node.js"),_=d("./src/core/component.js"),T=d("./src/utils/index.js"),v=T.debug("core:a-entity:debug"),D=T.debug("core:a-entity:warn"),h="__",p=["position","rotation","scale","visible"],m={once:!0};class u extends z.ANode{constructor(){super(),this.components={},this.initializingComponents={},this.componentsToUpdate={},this.isEntity=!0,this.isPlaying=!1,this.object3D=new s.Group,this.object3D.rotation.order="YXZ",this.object3D.el=this,this.object3DMap={},this.parentEl=null,this.rotationObj={},this.states=[]}attributeChangedCallback(U,j,Z){var CA=this.components[U];if(super.attributeChangedCallback(),CA&&CA.justInitialized&&Z===""){delete CA.justInitialized;return}!CA&&Z===null||this.setEntityAttribute(U,j,Z)}doConnectedCallback(){var U=this,j,Z;if(super.doConnectedCallback(),Z=this.sceneEl,this.addToParent(),!this.isScene){if(!Z){this.load();return}if(j=Z.querySelector("a-assets"),j&&!j.hasLoaded){j.addEventListener("loaded",function(){U.load()});return}this.load()}}disconnectedCallback(){var U;if(this.parentEl){for(U in this.components)this.removeComponent(U,!1);this.isScene||(this.removeFromParent(),super.disconnectedCallback(),this.object3D.el=null)}}getObject3D(U){return this.object3DMap[U]}setObject3D(U,j){var Z,CA=this;if(!(j instanceof s.Object3D))throw new Error("`Entity.setObject3D` was called with an object that was not an instance of THREE.Object3D.");Z=this.getObject3D(U),Z&&this.object3D.remove(Z),j.el=this,j.children.length&&j.traverse(function(SA){SA.el=CA}),this.object3D.add(j),this.object3DMap[U]=j,this.emit("object3dset",{object:j,type:U})}removeObject3D(U){var j=this.getObject3D(U);if(!j){D("Tried to remove `Object3D` of type:",U,"which was not defined.");return}this.object3D.remove(j),delete this.object3DMap[U],this.emit("object3dremove",{type:U})}getOrCreateObject3D(U,j){var Z=this.getObject3D(U);return!Z&&j&&(Z=new j,this.setObject3D(U,Z)),D("`getOrCreateObject3D` has been deprecated. Use `setObject3D()` and `object3dset` event instead."),Z}add(U){if(!U.object3D)throw new Error("Trying to add an element that doesn't have an `object3D`");this.object3D.add(U.object3D),this.emit("child-attached",{el:U})}addToParent(){var U=this.parentEl=this.parentNode;!U||!U.add||this.attachedToParent||(U.add(this),this.attachedToParent=!0)}removeFromParent(){var U=this.parentEl;this.parentEl.remove(this),this.attachedToParent=!1,this.parentEl=null,U.emit("child-detached",{el:this})}load(){var U=this;this.hasLoaded||!this.parentEl||super.load.call(this,function(){U.parentEl&&(U.updateComponents(),(U.isScene||U.parentEl.isPlaying)&&U.play())})}remove(U){U?this.object3D.remove(U.object3D):this.parentNode.removeChild(this)}getChildEntities(){for(var U=this.children,j=[],Z=0;Z2?SA.slice(1).join("__"):SA[1],_.components[UA]&&(TA=l(this,U)||j!==void 0,!(!TA&&!Z)&&(U in this.components||(this.initComponentDependencies(UA),CA=new _.components[UA].Component(this,j,QA),this.isPlaying&&CA.play(),this.hasAttribute(U)||(CA.justInitialized=!0,window.HTMLElement.prototype.setAttribute.call(this,U,"")),v("Component initialized: %s",U))))}initComponentDependencies(U){var j=this,Z=_.components[U],CA,QA;if(Z&&(CA=_.components[U].dependencies,!!CA))for(QA=0;QA0?U.substring(0,TA):U,!_.components[UA]){U==="mixin"&&this.mixinUpdate(j),super.setAttribute.call(this,U,j);return}if(!this.components[U]&&this.hasAttribute(U)&&this.updateComponent(U,window.HTMLElement.prototype.getAttribute.call(this,U)),typeof Z<"u"&&typeof j=="string"&&j.length>0&&typeof T.styleParser.parse(j)=="string"){for(hA in CA)delete CA[hA];QA=CA,QA[j]=Z,SA=!1}else QA=j,SA=Z===!0;this.updateComponent(U,QA,SA),pA=this.sceneEl&&this.sceneEl.getAttribute("debug"),pA&&this.components[U].flushToDOM()}flushToDOM(U){var j=this.components,Z,CA=this.children,QA,SA;for(SA in j)j[SA].flushToDOM();if(U)for(QA=0;QA{d.r(O);var s=d("./src/core/a-node.js"),z=d("./src/core/component.js"),_=d("./src/utils/index.js"),T=d("./src/utils/styleParser.js"),v="__";class D extends s.ANode{constructor(){super(),this.componentCache={},this.rawAttributeCache={},this.isMixin=!0}doConnectedCallback(){super.doConnectedCallback(),this.sceneEl=this.closestScene(),this.id=this.getAttribute("id"),this.cacheAttributes(),this.updateEntities(),this.load()}attributeChangedCallback(p,m,u){super.attributeChangedCallback(),this.cacheAttribute(p,u),this.updateEntities()}setAttribute(p,m){window.HTMLElement.prototype.setAttribute.call(this,p,m),this.cacheAttribute(p,m)}cacheAttribute(p,m){var u,l;l=_.split(p,v)[0],u=z.components[l],m===void 0&&(m=window.HTMLElement.prototype.getAttribute.call(this,p)),this.rawAttributeCache[p]=m,u&&(this.componentCache[p]=this.parseComponentAttrValue(u,m))}parseComponentAttrValue(p,m){var u;return typeof m!="string"?m:(p.isSingleProperty?(u=p.schema.parse(m),typeof u=="string"&&(u=m)):u=T.parse(m),u)}getAttribute(p){return this.componentCache[p]||window.HTMLElement.prototype.getAttribute.call(this,p)}cacheAttributes(){var p=this.attributes,m,u;for(u=0;u{d.r(O),d.d(O,{ANode:()=>D,knownTags:()=>T});var s=d("./src/utils/index.js"),z=d("./src/core/readyState.js"),_=s.debug("core:a-node:warn"),T={"a-scene":!0,"a-assets":!0,"a-assets-items":!0,"a-cubemap":!0,"a-mixin":!0,"a-node":!0,"a-entity":!0};function v(h){return h.tagName.toLowerCase()in T||h.isANode}class D extends HTMLElement{constructor(){super(),this.computedMixinStr="",this.hasLoaded=!1,this.isANode=!0,this.mixinEls=[]}connectedCallback(){if(!z.canInitializeElements){document.addEventListener("aframeready",this.connectedCallback.bind(this));return}this.doConnectedCallback()}doConnectedCallback(){var p;this.sceneEl=this.closestScene(),this.sceneEl||_("You are attempting to attach <"+this.tagName+"> outside of an A-Frame scene. Append this element to `` instead."),this.hasLoaded=!1,this.emit("nodeready",void 0,!1),this.isMixin||(p=this.getAttribute("mixin"),p&&this.updateMixins(p))}attributeChangedCallback(p,m,u){u!==this.computedMixinStr&&p==="mixin"&&!this.isMixin&&this.updateMixins(u,m)}closestScene(){for(var p=this;p&&!p.isScene;)p=p.parentElement;return p}closest(p){for(var m=this.matches||this.mozMatchesSelector||this.msMatchesSelector||this.oMatchesSelector||this.webkitMatchesSelector,u=this;u&&!m.call(u,p);)u=u.parentElement;return u}disconnectedCallback(){this.hasLoaded=!1}load(p,m){var u,l,R=this;this.hasLoaded||(m=m||v,u=this.getChildren(),l=u.filter(m).map(function(N){return new Promise(function(G,x){if(N.hasLoaded)return G();N.addEventListener("loaded",G),N.addEventListener("error",x)})}),Promise.allSettled(l).then(function(Y){Y.forEach(function(x){x.status==="rejected"&&_("Rendering scene with errors on node: ",x.reason.target)}),R.isLoading=!0,R.setupMutationObserver(),p&&p(),R.isLoading=!1,R.hasLoaded=!0,R.emit("loaded-private",void 0,!1),R.emit("loaded",void 0,!1)}))}setupMutationObserver(){var p=this,m={attributes:!0,attributeOldValue:!0},u=new MutationObserver(function(R){var N;for(N=0;N{d.r(O),d.d(O,{Component:()=>Z,components:()=>v,registerComponent:()=>SA,registrationOrderWarnings:()=>QA});var s=d("./src/core/schema.js"),z=d("./src/core/scene/scenes.js"),_=d("./src/core/system.js"),T=d("./src/utils/index.js"),v={},D=s.parseProperty,h=s.process,p=s.isSingleProperty,m=s.stringifyProperties,u=s.stringifyProperty,l=T.styleParser,R=T.debug("core:component:warn"),N=document.currentScript,Y=new RegExp("[A-Z]+"),G={},x=Object.freeze({}),U=[],j={get:function(uA,lA){return uA.getComputedPropertyValue(lA)},set:function(uA,lA,NA){return lA in uA.schema?uA.recomputeProperty(lA,NA):NA!==void 0&&uA.handleUnknownProperty(lA,NA),!0}},Z=function(uA,lA,NA){var HA=this;if(this.sceneOnly&&!uA.isScene)throw new Error("Component `"+this.name+"` can only be applied to ");if(NA&&!this.multiple)throw new Error("Trying to initialize multiple components of type `"+this.name+"`. There can only be one component of this type per entity.");this.el=uA,this.id=NA,this.attrName=this.name+(NA?"__"+NA:""),this.evtDetail={id:this.id,name:this.name},this.initialized=!1,this.el.components[this.attrName]=this,this.objectPool=G[this.name];var pe=this.events;this.events={},CA(this,pe),this.attrValue=void 0,this.isObjectBased?(this.data=this.objectPool.use(),T.objectPool.removeUnusedKeys(this.data,this.schema),this.oldData=this.objectPool.use(),T.objectPool.removeUnusedKeys(this.oldData,this.schema),this.attrValueProxy=new Proxy(this,j)):(this.data=void 0,this.oldData=void 0,this.attrValueProxy=void 0),this.deferUnknownPropertyWarnings=!!this.updateSchema,this.throttledEmitComponentChanged=T.throttleLeadingAndTrailing(function(){uA.emit("componentchanged",HA.evtDetail,!1)},200),this.updateProperties(lA,!0)};Z.prototype={schema:{},init:function(){},events:{},update:function(uA){},updateSchema:void 0,tick:void 0,tock:void 0,play:function(){},pause:function(){},remove:function(){},stringify:function(uA){var lA=this.schema;return typeof uA=="string"?uA:this.isSingleProperty?u(uA,lA):(uA=m(uA,lA),l.stringify(uA))},flushToDOM:function(uA){var lA=uA?this.data:this.attrValue;lA!=null&&window.HTMLElement.prototype.setAttribute.call(this.el,this.attrName,this.stringify(lA))},updateProperties:function(uA,lA){var NA=this.el;this.updateData(uA,lA),!(!NA.hasLoaded&&!NA.isLoading)&&(this.initialized?this.callUpdateHandler():this.initComponent())},initComponent:function(){var uA=this.el,lA;uA.initializingComponents[this.name]||(uA.initializingComponents[this.name]=!0,this.init(),this.initialized=!0,delete uA.initializingComponents[this.name],lA=this.isObjectBased?x:void 0,this.dataChanged=!1,this.storeOldData(),this.update(lA),uA.isPlaying&&this.play(),uA.emit("componentinitialized",this.evtDetail,!1))},updateData:function(uA,lA){if(this.isSingleProperty){this.recomputeProperty(void 0,uA);return}lA?(T.objectPool.clearObject(this.attrValue),this.recomputeData(uA),this.schemaChangeRequired=!!this.updateSchema):typeof uA=="string"?l.parse(uA,this.attrValueProxy):T.extend(this.attrValueProxy,uA),this.updateSchemaIfNeeded(uA)},updateSchemaIfNeeded:function(uA){if(this.schemaChangeRequired&&this.updateSchema){U.length=0,this.updateSchema(this.data),T.objectPool.removeUnusedKeys(this.data,this.schema),this.recomputeData(uA),this.schemaChangeRequired=!1;for(var lA in this.attrValue)this.attrValue[lA]!==void 0&&U.indexOf(lA)===-1&&(lA in this.schema||R("Unknown property `"+lA+"` for component `"+this.name+"`."))}for(var NA=0;NA=0;HA--){var pe=lA[HA].getAttribute(this.attrName);if(!(pe===null||uA&&!(uA in pe)))return uA?pe[uA]:pe}var He=uA?this.schema[uA].default:this.schema.default;return He},recomputeProperty:function(uA,lA){var NA=uA?this.schema[uA]:this.schema;if(lA!=null){this.attrValue===void 0&&this.isObjectBased&&(this.attrValue=this.objectPool.use());var HA=uA?this.attrValue[uA]:this.attrValue;HA=NA.isCacheable?D(lA,NA,HA):lA,typeof HA=="string"&&(HA=lA===""?void 0:lA),uA?this.attrValue[uA]=HA:this.attrValue=HA}this.oldDataInUse&&(this.oldData=this.objectPool.use(),T.objectPool.removeUnusedKeys(this.oldData,this.schema),this.storeOldData(),this.oldDataInUse=!1);var pe=uA?this.oldData[uA]:this.oldData,He=uA?this.data[uA]:this.data,Oe=D(this.getComputedPropertyValue(uA),NA,He);return NA.type==="array"&&!uA&&(Oe=T.clone(Oe)),NA.equals(Oe,pe)||(this.dataChanged=!0,NA.schemaChange&&(this.schemaChangeRequired=!0)),uA?this.data[uA]=Oe:this.data=Oe,Oe},handleUnknownProperty:function(uA,lA){this.attrValue===void 0&&(this.attrValue=this.objectPool.use()),this.attrValue[uA]=lA,this.deferUnknownPropertyWarnings?U.push(uA):this.silenceUnknownPropertyWarnings||R("Unknown property `"+uA+"` for component `"+this.name+"`.")},storeOldData:function(){if(!this.isObjectBased){this.oldData=this.data;return}if(this.isSingleProperty){this.oldData=D(this.data,this.schema,this.oldData);return}var uA;for(uA in this.schema)this.data[uA]!==void 0&&(this.data[uA]&&typeof this.data[uA]=="object"?this.oldData[uA]=D(this.data[uA],this.schema[uA],this.oldData[uA]):this.oldData[uA]=this.data[uA])},recomputeData:function(uA){var lA;if(this.isSingleProperty){this.recomputeProperty(void 0,uA);return}for(lA in this.schema)this.attrValueProxy[lA]=void 0;uA&&typeof uA=="object"?T.extend(this.attrValueProxy,uA):typeof uA=="string"&&l.parse(uA,this.attrValueProxy)},eventsAttach:function(){var uA;this.eventsDetach();for(uA in this.events)this.el.addEventListener(uA,this.events[uA])},eventsDetach:function(){var uA;for(uA in this.events)this.el.removeEventListener(uA,this.events[uA])},destroy:function(){this.objectPool.recycle(this.attrValue),this.objectPool.recycle(this.data),this.objectPool.recycle(this.oldData),this.attrValue=this.data=this.oldData=this.attrValueProxy=void 0}};function CA(uA,lA){var NA;for(NA in lA)uA.events[NA]=lA[NA].bind(uA)}var QA={};function SA(uA,lA){var NA,HA={},pe,He;if(document.currentScript&&document.currentScript!==N&&z.default.forEach(function(Ye){Ye.hasLoaded||document.currentScript.compareDocumentPosition(Ye)!==Node.DOCUMENT_POSITION_FOLLOWING&&(R("The component `"+uA+"` was registered in a