@playcanvas/web-components 0.14.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/joint-component.d.cts +521 -0
- package/dist/components/joint-component.d.ts +521 -0
- package/dist/custom-elements.json +916 -0
- package/dist/index.d.cts +4 -1
- package/dist/index.d.ts +4 -1
- package/dist/pwc.cjs +917 -14
- package/dist/pwc.cjs.map +1 -1
- package/dist/pwc.js +917 -14
- package/dist/pwc.js.map +1 -1
- package/dist/pwc.min.js +1 -1
- package/dist/pwc.min.js.map +1 -1
- package/dist/pwc.min.mjs +1 -1
- package/dist/pwc.min.mjs.map +1 -1
- package/dist/pwc.mjs +917 -15
- package/dist/pwc.mjs.map +1 -1
- package/dist/vscode.html-custom-data.json +192 -0
- package/dist/web-types.json +348 -1
- package/package.json +3 -2
- package/src/app.ts +18 -0
- package/src/components/joint-component.ts +984 -0
- package/src/entity.ts +28 -7
- package/src/index.ts +4 -0
- package/src/node.ts +2 -7
package/dist/pwc.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("playcanvas")):"function"==typeof define&&define.amd?define(["exports","playcanvas"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).pwc={},e.pc)}(this,function(e,t){"use strict";class a extends HTMLElement{_readyPromise;_readyResolve;_readyResolved=!1;constructor(){super(),this._readyPromise=new Promise(e=>{this._readyResolve=e})}get closestApp(){return this.parentElement?.closest("pc-app")??null}get closestEntity(){return this.parentElement?.closest("pc-entity, pc-node")??null}_onReady(){this._readyResolved||(this._readyResolved=!0,this._readyResolve(),this.dispatchEvent(new CustomEvent("ready",{bubbles:!0,composed:!0})))}_resetReady(){this._readyResolved&&(this._readyResolved=!1,this._readyPromise=new Promise(e=>{this._readyResolve=e}))}ready(){return this._readyPromise.then(()=>this)}}class s extends a{_loadPromise=null;connectedCallback(){this._getLoadPromise()}async _loadModule(){const e=this.getAttribute("name");if(!e)return void console.warn("pc-module requires a 'name' attribute - no module was configured");const a={glueUrl:this.getAttribute("glue")??void 0,wasmUrl:this.getAttribute("wasm")??void 0,fallbackUrl:this.getAttribute("fallback")??void 0};"Basis"===e?t.basisInitialize(a):(t.WasmModule.setConfig(e,a),await new Promise(a=>{t.WasmModule.getInstance(e,()=>a())})),this._onReady()}_getLoadPromise(){return this._loadPromise||(this._loadPromise=this._loadModule()),this._loadPromise}}customElements.define("pc-module",s);class i{_track;_fill;_sweep=null;_removal=null;constructor(e){this._track=document.createElement("div"),this._track.setAttribute("role","progressbar"),this._track.setAttribute("aria-label","Loading"),this._track.setAttribute("aria-valuemin","0"),this._track.setAttribute("aria-valuemax","100"),this._track.style.cssText=["position: absolute","top: 0","left: 0","width: 100%","height: var(--pc-loading-bar-height, 3px)","background: var(--pc-loading-bar-background, rgba(0, 0, 0, 0.1))","z-index: 10000","pointer-events: none","opacity: 1","transition: opacity 0.2s ease"].join("; "),this._fill=document.createElement("div"),this._fill.style.cssText=["width: 100%","height: 100%","transform-origin: left center","transform: scaleX(0)","background: var(--pc-loading-bar-color, #f60)","transition: transform 0.2s ease"].join("; "),this._track.appendChild(this._fill),e.appendChild(this._track),"function"==typeof this._fill.animate&&(this._sweep=this._fill.animate([{transform:"scaleX(0.25) translateX(-100%)"},{transform:"scaleX(0.25) translateX(500%)"}],{duration:1e3,iterations:1/0,easing:"ease-in-out"}))}progress(e,t){this._sweep&&(this._sweep.cancel(),this._sweep=null);const a=0===t?1:e/t;this._track.setAttribute("aria-valuenow",String(Math.round(100*a))),this._fill.style.transform=`scaleX(${a})`}complete(){null===this._removal&&(this._sweep&&(this._sweep.cancel(),this._sweep=null),this._track.setAttribute("aria-valuenow","100"),this._fill.style.transform="scaleX(1)",this._track.style.opacity="0",this._removal=setTimeout(()=>this._track.remove(),250))}destroy(){this._sweep&&(this._sweep.cancel(),this._sweep=null),null!==this._removal&&(clearTimeout(this._removal),this._removal=null),this._track.remove()}}const n={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},o=(e,t)=>{const a=e.trim().split(/\s+/).map(Number);return a.length!==t||a.some(e=>!Number.isFinite(e))?null:a},r=e=>null===e?null:e.clone(),c=(e,t)=>null===e?t:"false"!==e,l=(e,a,s)=>{if(null===e)return r(a);const i=n[e.toLowerCase()];if(i)return(new t.Color).fromString(i);if(/^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(e)){let a=e.slice(1);return 3!==a.length&&4!==a.length||(a=a.split("").map(e=>e+e).join("")),(new t.Color).fromString(`#${a}`)}const c=o(e,4)??o(e,3);return c?new t.Color(c):(console.warn(`Invalid value '${e}' for attribute '${s}'. Expected a CSS color name, a hex color or 3 or 4 space-separated numbers. Using '${a}'.`),r(a))},h=(e,t,a,s)=>{if(null===e)return a;const i=Array.isArray(t)?t:[...t.keys()];return i.includes(e)?e:(console.warn(`Invalid value '${e}' for attribute '${s}'. Valid values: ${i.join(", ")}. Using '${a}'.`),a)},p=(e,t,a)=>{if(null===e)return t;const s=""===e.trim()?NaN:Number(e);return Number.isFinite(s)?s:(console.warn(`Invalid value '${e}' for attribute '${a}'. Expected a finite number. Using '${t}'.`),t)},b=(e,a,s)=>{if(null===e)return r(a);const i=o(e,3);return i?(new t.Quat).setFromEulerAngles(i[0],i[1],i[2]):(console.warn(`Invalid value '${e}' for attribute '${s}'. Expected 3 space-separated numbers. Using '${a}'.`),r(a))},d=(e,t=[])=>null===e?[...t]:e.split(",").map(e=>e.trim()).filter(e=>""!==e),u=(e,a,s)=>{if(null===e)return r(a);const i=o(e,2);return i?new t.Vec2(i):(console.warn(`Invalid value '${e}' for attribute '${s}'. Expected 2 space-separated numbers. Using '${a}'.`),r(a))},m=(e,a,s)=>{if(null===e)return r(a);const i=o(e,3);return i?new t.Vec3(i):(console.warn(`Invalid value '${e}' for attribute '${s}'. Expected 3 space-separated numbers. Using '${a}'.`),r(a))},g=(e,a,s)=>{if(null===e)return r(a);const i=o(e,4);return i?new t.Vec4(i):(console.warn(`Invalid value '${e}' for attribute '${s}'. Expected 4 space-separated numbers. Using '${a}'.`),r(a))},f=e=>{if(!e)return null;let t=null;try{t=document.querySelector(e)}catch{t=null}return t||(t=document.getElementById(e)??document.querySelector(`pc-entity[name="${e}"]`)),t?.entity??null},_=["pointermove","pointerdown","pointerup","pointerenter","pointerleave"];class v extends a{_canvas=null;_alpha=!0;_backend="webgpu";_antialias=!0;_depthBuffer=!0;_stencilBuffer=!0;_maxPixelRatio=1/0;_loadingBar=!0;_optionsLocked=!1;_bar=null;_hierarchyReady=!1;_bootGeneration=0;_entityElements=new Map;_picker=null;_hasPointerListeners={pointerenter:!1,pointerleave:!1,pointerdown:!1,pointerup:!1,pointermove:!1};_hoveredEntity=null;_pickToken=0;_pointerHandlers={pointermove:null,pointerdown:null,pointerup:null};_app=null;_loadProgress=0;_resizeObserver=null;get app(){return this._app}get loadProgress(){return this._loadProgress}constructor(){super(),_.forEach(e=>{this.addEventListener(`${e}:connect`,()=>this._onPointerListenerAdded(e)),this.addEventListener(`${e}:disconnect`,()=>this._onPointerListenerRemoved(e))})}async connectedCallback(){const e=++this._bootGeneration;(()=>{const e="pc-app-styles";if(document.getElementById(e))return;const t=document.createElement("style");t.id=e,t.textContent=":where(pc-app) { display: block; position: relative; width: 300px; height: 150px; }",document.head.appendChild(t)})(),this._loadingBar&&!this._bar&&(this._bar=new i(this));const a=this.querySelectorAll(":scope > pc-module");if(await Promise.all(Array.from(a).map(e=>e._getLoadPromise())),e!==this._bootGeneration)return;this._canvas=document.createElement("canvas"),this._canvas.style.cssText="display: block; width: 100%; height: 100%; touch-action: none;",this.appendChild(this._canvas);const s={webgpu:["webgpu","webgl2"],webgl2:["webgl2"],null:["null"]}[this._backend]||[];this._optionsLocked=!0;const n=s.join(", ");let o;try{o=await t.createGraphicsDevice(this._canvas,{alpha:this._alpha,antialias:this._antialias,depth:this._depthBuffer,deviceTypes:s,stencil:this._stencilBuffer})}catch(t){if(e!==this._bootGeneration)return;this._canvas&&this.contains(this._canvas)&&this.removeChild(this._canvas),this._canvas=null,this._bar?.destroy(),this._bar=null;const a=`pc-app failed to create a graphics device (${n}) - ${t instanceof Error?t.message:String(t)}`;return console.error(a,t),void this.dispatchEvent(new ErrorEvent("error",{message:a,error:t}))}if(e!==this._bootGeneration)return void o.destroy();o.maxPixelRatio=this._maxPixelRatio;const r=new t.AppOptions;r.graphicsDevice=o,r.keyboard=new t.Keyboard(window),r.mouse=new t.Mouse(this._canvas),r.elementInput=new t.ElementInput(this._canvas,{useMouse:!0,useTouch:!0}),r.componentSystems=[t.AnimComponentSystem,t.AnimationComponentSystem,t.AudioListenerComponentSystem,t.ButtonComponentSystem,t.CameraComponentSystem,t.CollisionComponentSystem,t.ElementComponentSystem,t.GSplatComponentSystem,t.JointComponentSystem,t.LayoutChildComponentSystem,t.LayoutGroupComponentSystem,t.LightComponentSystem,t.ModelComponentSystem,t.ParticleSystemComponentSystem,t.RenderComponentSystem,t.RigidBodyComponentSystem,t.ScreenComponentSystem,t.ScriptComponentSystem,t.ScrollbarComponentSystem,t.ScrollViewComponentSystem,t.SoundComponentSystem,t.SpriteComponentSystem,t.ZoneComponentSystem],r.resourceHandlers=[t.AnimClipHandler,t.AnimationHandler,t.AnimStateGraphHandler,t.AudioHandler,t.BinaryHandler,t.CssHandler,t.ContainerHandler,t.CubemapHandler,t.FolderHandler,t.FontHandler,t.GSplatHandler,t.HierarchyHandler,t.HtmlHandler,t.JsonHandler,t.MaterialHandler,t.ModelHandler,t.RenderHandler,t.ScriptHandler,t.SceneHandler,t.ShaderHandler,t.SpriteHandler,t.TemplateHandler,t.TextHandler,t.TextureAtlasHandler,t.TextureHandler],r.soundManager=new t.SoundManager,r.lightmapper=t.Lightmapper,r.batchManager=t.BatchManager,r.xr=t.XrManager;const c=new t.AppBase(this._canvas);this._app=c,c.init(r),c.setCanvasFillMode(t.FILLMODE_NONE),c.setCanvasResolution(t.RESOLUTION_AUTO),this._pickerCreate(),"undefined"!=typeof ResizeObserver&&(this._resizeObserver=new ResizeObserver(()=>this._syncCanvasSize()),this._resizeObserver.observe(this));const l=this.querySelectorAll(":scope > pc-asset");for(const t of Array.from(l)){t._createAsset();const a=t.asset;if(a&&(c.assets.add(a),e!==this._bootGeneration))return}const h=this.querySelectorAll(":scope > pc-material");Array.from(h).forEach(e=>{e._createMaterial()});const p=this.querySelectorAll("pc-entity");if(Array.from(p).forEach(e=>{e._createEntity(c)}),p.forEach(e=>{e._buildHierarchy(c)}),e!==this._bootGeneration)return;this._hierarchyReady=!0;const b=c.assets.list({preload:!0}).length;let d=0;const u=()=>{d+=1,this._loadProgress=d/b,this._bar?.progress(d,b),this.dispatchEvent(new ProgressEvent("progress",{lengthComputable:!0,loaded:d,total:b}))};c.on("preload:progress",u),this._loadProgress=0===b?1:0,this._bar?.progress(0,b),this.dispatchEvent(new ProgressEvent("progress",{lengthComputable:!0,loaded:0,total:b})),e===this._bootGeneration&&c.preload(()=>{e===this._bootGeneration&&(c.off("preload:progress",u),this._loadProgress=1,c.start(),c.once("frameend",()=>this._bar?.complete()),this._onReady())})}disconnectedCallback(){this._bootGeneration++,this._optionsLocked=!1,this._pickerDestroy(),this._app&&(this._app.destroy(),this._app=null),this._entityElements.clear(),this._loadProgress=0,this._bar?.destroy(),this._bar=null,this._hierarchyReady=!1,this._resetReady(),this._resizeObserver?.disconnect(),this._resizeObserver=null,this._canvas&&this.contains(this._canvas)&&(this.removeChild(this._canvas),this._canvas=null)}_syncCanvasSize(){if(!this.app||this.app.xr?.active)return;this.app.updateCanvasSize();const{width:e,height:t}=this.app.graphicsDevice;this._picker?.resize(e,t)}_pickerCreate(){const{width:e,height:a}=this.app.graphicsDevice;this._picker=new t.Picker(this.app,e,a);const s=e=>t=>{e.call(this,t)};this._pointerHandlers.pointermove=s(this._onPointerMove),this._pointerHandlers.pointerdown=s(this._onPointerDown),this._pointerHandlers.pointerup=s(this._onPointerUp),_.forEach(e=>{Array.from(this.querySelectorAll("pc-entity, pc-node")).some(t=>t._hasListeners(e))&&this._onPointerListenerAdded(e)})}_pickerDestroy(){this._canvas&&Object.entries(this._pointerHandlers).forEach(([e,t])=>{t&&this._canvas.removeEventListener(e,t)}),this._picker=null,this._hoveredEntity=null,this._pointerHandlers={pointermove:null,pointerdown:null,pointerup:null},this._hasPointerListeners={pointerenter:!1,pointerleave:!1,pointerdown:!1,pointerup:!1,pointermove:!1}}_registerEntityElement(e,t){this._entityElements.set(e,t)}_unregisterEntityElement(e){this._entityElements.delete(e)}elementFromEntity(e){return this._entityElements.get(e)??null}_elementFromNode(e){for(;null!==e;){const t=this._entityElements.get(e);if(t)return t;e=e.parent}return null}_elementWithListener(e,t){for(;null!==e;){const a=this._entityElements.get(e);if(a?._hasListeners(t))return a;e=e.parent}return null}_getPickerCoordinates(e,t){const a=t.getBoundingClientRect();if(0===a.width||0===a.height)return{x:e.clientX,y:e.clientY,mapped:!1};const s=t.width/a.width,i=t.height/a.height;return{x:(e.clientX-a.left)*s,y:(e.clientY-a.top)*i,mapped:!0}}_cameraContains(e,t,a,s){const i=e.rect,n=i.x*s.width,o=(1-i.y)*s.height,r=o-i.w*s.height;return t>=n&&t<n+i.z*s.width&&a>=r&&a<o}async _pickNode(e){const a=this.app,s=this._picker,i=this._canvas;if(!a||!s||!i)return null;const{x:n,y:o,mapped:r}=this._getPickerCoordinates(e,i),c=a.systems.camera?.cameras??[];for(let e=c.length-1;e>=0;e--){const l=c.at(e);if(!l||l.renderTarget)continue;if(r&&!this._cameraContains(l,n,o,i))continue;s.prepare(l,a.scene);const h=await s.getSelectionAsync(n,o);if(!this._picker||!this.app)return null;if(h.length>0){const e=h[0];return e instanceof t.MeshInstance?e.node:e.entity}if(l.clearColorBuffer)return null}return null}async _onPointerMove(e){if(!this._picker||!this.app)return;const t=++this._pickToken,a=await this._pickNode(e);if(t!==this._pickToken||!this._picker)return;const s=this._elementFromNode(a);this._hoveredEntity!==s&&(this._hoveredEntity&&this._hoveredEntity._hasListeners("pointerleave")&&this._hoveredEntity.dispatchEvent(new PointerEvent("pointerleave",e)),s&&s._hasListeners("pointerenter")&&s.dispatchEvent(new PointerEvent("pointerenter",e))),this._hoveredEntity=s,s&&s._hasListeners("pointermove")&&s.dispatchEvent(new PointerEvent("pointermove",e))}async _onPointerDown(e){if(!this._picker||!this.app)return;const t=await this._pickNode(e);if(!this._picker)return;const a=this._elementWithListener(t,"pointerdown");a&&a.dispatchEvent(new PointerEvent("pointerdown",e))}async _onPointerUp(e){if(!this._picker||!this.app)return;const t=await this._pickNode(e);if(!this._picker)return;const a=this._elementWithListener(t,"pointerup");a&&a.dispatchEvent(new PointerEvent("pointerup",e))}_onPointerListenerAdded(e){if(!this._hasPointerListeners[e]&&this._canvas){this._hasPointerListeners[e]=!0;const t="pointerenter"===e||"pointerleave"===e?this._pointerHandlers.pointermove:this._pointerHandlers[e];t&&this._canvas.addEventListener("pointerenter"===e||"pointerleave"===e?"pointermove":e,t)}}_onPointerListenerRemoved(e){if(!Array.from(this.querySelectorAll("pc-entity, pc-node")).some(t=>t._hasListeners(e))&&this._canvas){this._hasPointerListeners[e]=!1;const t="pointerenter"===e||"pointerleave"===e?this._pointerHandlers.pointermove:this._pointerHandlers[e];t&&this._canvas.removeEventListener("pointerenter"===e||"pointerleave"===e?"pointermove":e,t)}}_warnIfBooted(e){this._optionsLocked&&console.warn(`Attribute '${e}' on <pc-app> is only read when the application boots, so this change has no effect. Set it before the element is connected, or remove and re-insert the element to reboot with the new value.`)}set alpha(e){this._warnIfBooted("alpha"),this._alpha=e}get alpha(){return this._alpha}set antialias(e){this._warnIfBooted("antialias"),this._antialias=e}get antialias(){return this._antialias}set backend(e){this._warnIfBooted("backend"),this._backend=e}get backend(){return this._backend}set depthBuffer(e){this._warnIfBooted("depth-buffer"),this._depthBuffer=e}get depthBuffer(){return this._depthBuffer}set loadingBar(e){this._loadingBar=e,!e&&this._bar&&(this._bar.destroy(),this._bar=null)}get loadingBar(){return this._loadingBar}set maxPixelRatio(e){this._maxPixelRatio=e,this.app&&(this.app.graphicsDevice.maxPixelRatio=e,this._syncCanvasSize())}get maxPixelRatio(){return this._maxPixelRatio}set stencilBuffer(e){this._warnIfBooted("stencil-buffer"),this._stencilBuffer=e}get stencilBuffer(){return this._stencilBuffer}static get observedAttributes(){return["alpha","antialias","backend","depth-buffer","loading-bar","max-pixel-ratio","stencil-buffer"]}attributeChangedCallback(e,t,a){switch(e){case"alpha":this.alpha=c(a,!0);break;case"antialias":this.antialias=c(a,!0);break;case"backend":this.backend=h(a,["webgpu","webgl2","null"],"webgpu",e);break;case"depth-buffer":this.depthBuffer=c(a,!0);break;case"loading-bar":this.loadingBar=c(a,!0);break;case"max-pixel-ratio":this.maxPixelRatio=p(a,1/0,e);break;case"stencil-buffer":this.stencilBuffer=c(a,!0)}}}customElements.define("pc-app",v);const y=["onpointerenter","onpointerleave","onpointerdown","onpointerup","onpointermove"];class k extends a{_entity=null;_appElement=null;_listeners={};_inlineHandlerTypes=new Set;get entity(){return this._entity}_registerEntity(e){this._appElement=this.closestApp,this._appElement?._registerEntityElement(e,this)}_unregisterEntity(e){this._appElement?._unregisterEntityElement(e),this._appElement=null}_updateInlineHandler(e,t){const a=e.substring(2),s=this._inlineHandlerTypes.has(a),i=null!==t;i&&!s?(this._inlineHandlerTypes.add(a),this.dispatchEvent(new CustomEvent(`${a}:connect`,{bubbles:!0}))):!i&&s&&(this._inlineHandlerTypes.delete(a),this.dispatchEvent(new CustomEvent(`${a}:disconnect`,{bubbles:!0})))}addEventListener(e,t,a){this._listeners[e]||(this._listeners[e]=[]),this._listeners[e].push(t),super.addEventListener(e,t,a),e.startsWith("pointer")&&this.dispatchEvent(new CustomEvent(`${e}:connect`,{bubbles:!0}))}removeEventListener(e,t,a){this._listeners[e]&&(this._listeners[e]=this._listeners[e].filter(e=>e!==t)),super.removeEventListener(e,t,a),e.startsWith("pointer")&&this.dispatchEvent(new CustomEvent(`${e}:disconnect`,{bubbles:!0}))}_hasListeners(e){return Boolean(this._listeners[e]?.length)||this._inlineHandlerTypes.has(e)}}class w extends k{_enabled=!0;_name="Untitled";_position=new t.Vec3;_rotation=new t.Vec3;_scale=new t.Vec3(1,1,1);_tags=[];_built=!1;_createEntity(e){if(this._entity)return;const a=new t.Entity(this._name,e);this._entity=a,a.enabled=this._enabled,a.setLocalPosition(this._position),a.setLocalEulerAngles(this._rotation),a.setLocalScale(this._scale),this._tags.length>0&&a.tags.add(this._tags),this._registerEntity(a),a.once("destroy",this._onEntityDestroy,this)}_onEntityDestroy(e){this._unregisterEntity(e),this._entity=null,this._built=!1,this._resetReady()}_buildHierarchy(e){if(!this.entity||this._built)return;const t=this.closestEntity;t&&!t.entity||(this._built=!0,t?.entity?t.entity.addChild(this.entity):e.root.addChild(this.entity),this._onReady())}connectedCallback(){const e=this.closestApp;if(!e){const e=this.getAttribute("name"),t=e?` '${e}'`:"";return void console.warn(`pc-entity${t} must be a descendant of pc-app - entity not created`)}if(e._hierarchyReady){const t=e.app;this._createEntity(t),this._buildHierarchy(t);const a=this.querySelectorAll("pc-entity");a.forEach(e=>{e._createEntity(t)}),a.forEach(e=>{e._buildHierarchy(t)})}}disconnectedCallback(){this._entity?.destroy()}set enabled(e){this._enabled=e,this.entity&&(this.entity.enabled=e)}get enabled(){return this._enabled}set name(e){this._name=e,this.entity&&(this.entity.name=e)}get name(){return this._name}set position(e){this._position=e,this.entity&&this.entity.setLocalPosition(this._position)}get position(){return this._position}set rotation(e){this._rotation=e,this.entity&&this.entity.setLocalEulerAngles(this._rotation)}get rotation(){return this._rotation}set scale(e){this._scale=e,this.entity&&this.entity.setLocalScale(this._scale)}get scale(){return this._scale}set tags(e){this._tags=e,this.entity&&(this.entity.tags.clear(),this.entity.tags.add(this._tags))}get tags(){return this._tags}static get observedAttributes(){return["enabled","name","position","rotation","scale","tags",...y]}attributeChangedCallback(e,a,s){switch(e){case"enabled":this.enabled=c(s,!0);break;case"name":this.name=s??"Untitled";break;case"position":this.position=m(s,t.Vec3.ZERO,e);break;case"rotation":this.rotation=m(s,t.Vec3.ZERO,e);break;case"scale":this.scale=m(s,t.Vec3.ONE,e);break;case"tags":this.tags=d(s);break;case"onpointerenter":case"onpointerleave":case"onpointerdown":case"onpointerup":case"onpointermove":this._updateInlineHandler(e,s)}}}customElements.define("pc-entity",w);var M=function(){var e=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),t=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if("object"!=typeof WebAssembly)return{supported:!1};var a,s=WebAssembly.validate(e)?"b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb":"b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb",i=WebAssembly.instantiate(n(s),{}).then(function(e){(a=e.instance).exports.__wasm_call_ctors()});function n(e){for(var a=new Uint8Array(e.length),s=0;s<e.length;++s){var i=e.charCodeAt(s);a[s]=i>96?i-97:i>64?i-39:i+4}var n=0;for(s=0;s<e.length;++s)a[n++]=a[s]<60?t[a[s]]:64*(a[s]-60)+a[++s];return a.buffer.slice(0,n)}function o(e,t,s,i,n,o){var r=a.exports.sbrk,c=s+3&-4,l=r(c*i),h=r(n.length),p=new Uint8Array(a.exports.memory.buffer);p.set(n,h);var b=e(l,s,i,h,n.length);if(0==b&&o&&o(l,c,i),t.set(p.subarray(l,l+s*i)),r(l-r(0)),0!=b)throw new Error("Malformed buffer data: "+b)}var r={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},c={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},l=[],h=0;function p(e){var t={object:new Worker(e),pending:0,requests:{}};return t.object.onmessage=function(e){var a=e.data;t.pending-=a.count,t.requests[a.id][a.action](a.value),delete t.requests[a.id]},t}function b(e){for(var t="var instance; var ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(n(s))+"]), {}).then(function(result) { instance = result.instance; instance.exports.__wasm_call_ctors(); });self.onmessage = workerProcess;"+o.toString()+d.toString(),a=new Blob([t],{type:"text/javascript"}),i=URL.createObjectURL(a),r=0;r<e;++r)l[r]=p(i);URL.revokeObjectURL(i)}function d(e){i.then(function(){var t=e.data;try{var s=new Uint8Array(t.count*t.size);o(a.exports[t.mode],s,t.count,t.size,t.source,a.exports[t.filter]),self.postMessage({id:t.id,count:t.count,action:"resolve",value:s},[s.buffer])}catch(e){self.postMessage({id:t.id,count:t.count,action:"reject",value:e})}})}return{ready:i,supported:!0,useWorkers:function(e){b(e)},decodeVertexBuffer:function(e,t,s,i,n){o(a.exports.meshopt_decodeVertexBuffer,e,t,s,i,a.exports[r[n]])},decodeIndexBuffer:function(e,t,s,i){o(a.exports.meshopt_decodeIndexBuffer,e,t,s,i)},decodeIndexSequence:function(e,t,s,i){o(a.exports.meshopt_decodeIndexSequence,e,t,s,i)},decodeGltfBuffer:function(e,t,s,i,n,l){o(a.exports[c[n]],e,t,s,i,a.exports[r[l]])},decodeGltfBufferAsync:function(e,t,s,n,p){return l.length>0?function(e,t,a,s,i){for(var n=l[0],o=1;o<l.length;++o)l[o].pending<n.pending&&(n=l[o]);return new Promise(function(o,r){var c=new Uint8Array(a),l=h++;n.pending+=e,n.requests[l]={resolve:o,reject:r},n.object.postMessage({id:l,count:e,size:t,source:c,mode:s,filter:i},[c.buffer])})}(e,t,s,c[n],r[p]):i.then(function(){var i=new Uint8Array(e*t);return o(a.exports[c[n]],i,e,t,s,a.exports[r[p]]),i})}}}();const S=new Map([["simple",t.SPRITE_RENDERMODE_SIMPLE],["sliced",t.SPRITE_RENDERMODE_SLICED],["tiled",t.SPRITE_RENDERMODE_TILED]]),C=new Map([["repeat",t.ADDRESS_REPEAT],["clamp",t.ADDRESS_CLAMP_TO_EDGE],["mirror",t.ADDRESS_MIRRORED_REPEAT]]),E=new Map([["nearest",t.FILTER_NEAREST],["linear",t.FILTER_LINEAR],["nearest-mip-nearest",t.FILTER_NEAREST_MIPMAP_NEAREST],["linear-mip-nearest",t.FILTER_LINEAR_MIPMAP_NEAREST],["nearest-mip-linear",t.FILTER_NEAREST_MIPMAP_LINEAR],["linear-mip-linear",t.FILTER_LINEAR_MIPMAP_LINEAR]]),x=new Map([["nearest",t.FILTER_NEAREST],["linear",t.FILTER_LINEAR]]),A=e=>e.replace(/-/g,"_"),F={addressU:t.ADDRESS_REPEAT,addressV:t.ADDRESS_REPEAT,anisotropy:1,flipY:!1,magFilter:t.FILTER_LINEAR,minFilter:t.FILTER_LINEAR_MIPMAP_LINEAR,mipmaps:!0,srgb:!1},R=[[["address-u","address-v","anisotropy","flip-y","mag-filter","min-filter","mipmaps","srgb"],["texture","textureatlas"]],[["atlas","frame-keys","pixels-per-unit","render-mode"],["sprite"]]],O=new Map([["bin","binary"],["css","css"],["frag","shader"],["glb","container"],["glsl","shader"],["gltf","container"],["hdr","texture"],["html","html"],["jpg","texture"],["js","script"],["json","json"],["ktx2","texture"],["mp3","audio"],["mjs","script"],["ply","gsplat"],["png","texture"],["sog","gsplat"],["txt","text"],["vert","shader"],["webp","texture"]]),T=(e,t,a)=>{if(e.extensions&&e.extensions.EXT_meshopt_compression){const s=e.extensions.EXT_meshopt_compression;Promise.all([M.ready,t[s.buffer]]).then(e=>{const t=e[1],i=s.byteOffset||0,n=s.byteLength||0,o=s.count,r=s.byteStride,c=new Uint8Array(o*r),l=new Uint8Array(t.buffer,t.byteOffset+i,n);M.decodeGltfBuffer(c,o,r,l,s.mode,s.filter),a(null,c)})}else a(null,null)};class j extends a{_addressU=null;_addressV=null;_anisotropy=null;_flipY=null;_lazy=!1;_magFilter=null;_minFilter=null;_mipmaps=null;_srgb=null;asset=null;async connectedCallback(){const e=this.closestApp;if(e)if(this.parentElement===e){if(await e.ready(),this.isConnected&&this.parentElement===e){if(!this.asset){const t=e.app;if(!t)return;this._createAsset(),this.asset&&(t.assets.add(this.asset),this.lazy||t.assets.load(this.asset))}this.asset&&this._onReady()}}else console.warn(`pc-asset '${this.getAttribute("id")??this.getAttribute("src")}' must be a direct child of pc-app - asset not created`)}disconnectedCallback(){this._destroyAsset(),this._resetReady()}_onAssetLoad(){this.dispatchEvent(new Event("load"))}_onAssetError(e){this.dispatchEvent(new ErrorEvent("error",{message:e instanceof Error?e.message:String(e)}))}_createAsset(){const e=this.getAttribute("id")||"",a=this.getAttribute("src")||"";let s=this.getAttribute("type");if(!s){const e=a.split(".").pop();s=O.get(e||"")??null}if(!s)return void console.warn(`Unsupported asset type: ${a}`);const i=R.filter(([,e])=>!e.includes(s)).flatMap(([e])=>e).filter(e=>this.hasAttribute(e));i.length>0&&console.warn(`pc-asset '${e||a}' has attributes that do not apply to asset type '${s}' and are ignored: ${i.join(", ")}`);const n=this._buildData(s);this.asset="container"===s?new t.Asset(e,s,{url:a},void 0,{bufferView:{processAsync:T.bind(this)}}):"sprite"===s?new t.Asset(e,s,null,n):new t.Asset(e,s,a?{url:a}:null,n),this.asset.preload=!this._lazy,this.asset.on("load",this._onAssetLoad,this),this.asset.on("error",this._onAssetError,this)}_buildData(e){let a;const s=this.getAttribute("data");if(s)try{a=JSON.parse(s)}catch(e){console.warn(`Invalid 'data' JSON on pc-asset: ${s}`)}if("texture"!==e&&"textureatlas"!==e||(a=a??{},null!==this._addressU&&(a.addressu=this._addressU),null!==this._addressV&&(a.addressv=this._addressV),null!==this._anisotropy&&(a.anisotropy=this._anisotropy),null!==this._flipY&&(a.flipY=this._flipY),null!==this._magFilter&&(a.magfilter=A(this._magFilter)),null!==this._minFilter&&(a.minfilter=A(this._minFilter)),null!==this._mipmaps&&(a.mipmaps=this._mipmaps),null!==this._srgb&&(a.srgb=this._srgb)),"sprite"===e){a=a??{};const e=this.getAttribute("atlas")??a.textureAtlasAsset;if("string"==typeof e){const t=j.get(e);t?a.textureAtlasAsset=t.id:console.warn(`pc-asset sprite '${this.getAttribute("id")}' could not find atlas '${e}'`)}const s=this.getAttribute("frame-keys");null!==s&&(a.frameKeys=s.split(/[\s,]+/).filter(Boolean));const i=this.getAttribute("pixels-per-unit");null!==i&&(a.pixelsPerUnit=p(i,1,"pixels-per-unit"));const n=this.getAttribute("render-mode");null!==n&&(a.renderMode=S.get(h(n,S,"simple","render-mode"))),a.renderMode=a.renderMode??t.SPRITE_RENDERMODE_SIMPLE,a.pixelsPerUnit=a.pixelsPerUnit??1,a.frameKeys=a.frameKeys??[]}return a}_texture(){const e=this.asset;return e?.resource?"texture"===e.type?e.resource:"textureatlas"===e.type?e.resource.texture??null:null:null}_applyTextureOption(e,t,a,s){const i=this.asset;if(!i||"texture"!==i.type&&"textureatlas"!==i.type)return;const n=i.data;null===a?delete n[e]:n[e]=a;const o=this._texture();o&&(o[t]=s??F[t])}_destroyAsset(){this.asset&&(this.asset.off("load",this._onAssetLoad,this),this.asset.off("error",this._onAssetError,this),this.asset.registry?.remove(this.asset),this.asset.unload(),this.asset=null)}set addressU(e){this._addressU=e;const a=null===e?null:C.get(e)??t.ADDRESS_REPEAT;this._applyTextureOption("addressu","addressU",e,a)}get addressU(){return this._addressU}set addressV(e){this._addressV=e;const a=null===e?null:C.get(e)??t.ADDRESS_REPEAT;this._applyTextureOption("addressv","addressV",e,a)}get addressV(){return this._addressV}set anisotropy(e){this._anisotropy=e,this._applyTextureOption("anisotropy","anisotropy",e,e)}get anisotropy(){return this._anisotropy}set flipY(e){this._flipY=e,this._applyTextureOption("flipY","flipY",e,e)}get flipY(){return this._flipY}set lazy(e){this._lazy=e,this.asset&&(this.asset.preload=!e,e||this.asset.registry?.load(this.asset))}get lazy(){return this._lazy}set magFilter(e){this._magFilter=e;const a=null===e?null:A(e),s=null===e?null:x.get(e)??t.FILTER_LINEAR;this._applyTextureOption("magfilter","magFilter",a,s)}get magFilter(){return this._magFilter}set minFilter(e){this._minFilter=e;const a=null===e?null:A(e),s=null===e?null:E.get(e)??t.FILTER_LINEAR_MIPMAP_LINEAR;this._applyTextureOption("minfilter","minFilter",a,s)}get minFilter(){return this._minFilter}set mipmaps(e){this._mipmaps=e,this._applyTextureOption("mipmaps","mipmaps",e,e)}get mipmaps(){return this._mipmaps}set srgb(e){this._srgb=e,this._applyTextureOption("srgb","srgb",e,e)}get srgb(){return this._srgb}static get(e){const t=document.querySelector(`pc-asset[id="${e}"]`);return t?.asset}static get observedAttributes(){return["address-u","address-v","anisotropy","flip-y","lazy","mag-filter","min-filter","mipmaps","srgb"]}attributeChangedCallback(e,t,a){switch(e){case"address-u":this.addressU=null!==a?h(a,C,"repeat",e):null;break;case"address-v":this.addressV=null!==a?h(a,C,"repeat",e):null;break;case"anisotropy":this.anisotropy=null!==a?p(a,1,e):null;break;case"flip-y":this.flipY=null!==a?c(a,!1):null;break;case"lazy":this.lazy=c(a,!1);break;case"mag-filter":this.magFilter=null!==a?h(a,x,"linear",e):null;break;case"min-filter":this.minFilter=null!==a?h(a,E,"linear-mip-linear",e):null;break;case"mipmaps":this.mipmaps=null!==a?c(a,!0):null;break;case"srgb":this.srgb=null!==a?c(a,!1):null}}}customElements.define("pc-asset",j);const P=e=>{const t=j.get(e);return t&&t.registry?.load(t),t};class L extends a{_componentName;_enabled=!0;_component=null;_appElement=null;_hostElement=null;_hostReadyListener=null;_connectionGeneration=0;constructor(e){super(),this._componentName=e}getInitialComponentData(){return{}}_applyComponent(){const e=this._hostElement?.entity??null;if(this._component&&this._component.entity===e)return;const t=this._component;if(t?.entity&&t.entity.c[this._componentName]===t&&t.entity.removeComponent(this._componentName),this._component=null,e){if(e.c[this._componentName]){const t=this.id?` '${this.id}'`:"";return void console.warn(`${this.tagName.toLowerCase()}${t} - '${e.name}' already has a '${this._componentName}' component - component not added`)}this._component=e.addComponent(this._componentName,this.getInitialComponentData())}}async _addComponent(){const e=this._connectionGeneration,t=this.closestEntity;if(!t){const e=this.id?` '${this.id}'`:"";return void console.warn(`${this.tagName.toLowerCase()}${e} must be a descendant of pc-entity - component not added`)}await t.ready(),e===this._connectionGeneration&&(this._hostElement=t,this._applyComponent(),this._hostReadyListener=t=>{t.target===this._hostElement&&e===this._connectionGeneration&&this._hostCycled()},t.addEventListener("ready",this._hostReadyListener))}_hostCycled(){this._resetReady(),this._applyComponent(),this._hostElement?.entity&&(this.initComponent(),this._onReady())}initComponent(){}async connectedCallback(){const e=++this._connectionGeneration;this._appElement=this.closestApp??null,await(this._appElement?.ready()),e===this._connectionGeneration&&(await this._addComponent(),e===this._connectionGeneration&&(this.initComponent(),this._onReady()))}disconnectedCallback(){this._connectionGeneration++,this._hostElement&&this._hostReadyListener&&this._hostElement.removeEventListener("ready",this._hostReadyListener),this._hostElement=null,this._hostReadyListener=null,this._appElement?.app&&this._component?.entity&&this._component.entity.removeComponent(this._componentName),this._component=null,this._appElement=null,this._resetReady()}get component(){return this._component}set enabled(e){this._enabled=e,this.component&&(this.component.enabled=e)}get enabled(){return this._enabled}static get observedAttributes(){return["enabled"]}attributeChangedCallback(e,t,a){if("enabled"===e)this.enabled=c(a,!0)}}class D extends L{constructor(){super("audiolistener")}get component(){return super.component}}customElements.define("pc-listener",D);const H=new Map([["tint",t.BUTTON_TRANSITION_MODE_TINT],["sprite",t.BUTTON_TRANSITION_MODE_SPRITE_CHANGE]]);class z extends L{_active=!0;_image="";_hitPadding=new t.Vec4(0,0,0,0);_transitionMode="tint";_hoverTint=new t.Color(1,1,1,1);_pressedTint=new t.Color(1,1,1,1);_inactiveTint=new t.Color(1,1,1,1);_fadeDuration=0;_hoverSpriteAsset="";_hoverSpriteFrame=0;_pressedSpriteAsset="";_pressedSpriteFrame=0;_inactiveSpriteAsset="";_inactiveSpriteFrame=0;constructor(){super("button")}getInitialComponentData(){const e={active:this._active,hitPadding:this._hitPadding,transitionMode:H.get(this._transitionMode),hoverTint:this._hoverTint,pressedTint:this._pressedTint,inactiveTint:this._inactiveTint,fadeDuration:this._fadeDuration,hoverSpriteFrame:this._hoverSpriteFrame,pressedSpriteFrame:this._pressedSpriteFrame,inactiveSpriteFrame:this._inactiveSpriteFrame},t=this._image?f(this._image):this.closestEntity?.entity;t&&(e.imageEntity=t);const a=P(this._hoverSpriteAsset);a&&(e.hoverSpriteAsset=a.id);const s=P(this._pressedSpriteAsset);s&&(e.pressedSpriteAsset=s.id);const i=P(this._inactiveSpriteAsset);return i&&(e.inactiveSpriteAsset=i.id),e}get component(){return super.component}set active(e){this._active=e,this.component&&(this.component.active=e)}get active(){return this._active}set image(e){this._image=e;const t=f(e);this.component&&t&&(this.component.imageEntity=t)}get image(){return this._image}set hitPadding(e){this._hitPadding=e,this.component&&(this.component.hitPadding=e)}get hitPadding(){return this._hitPadding}set transitionMode(e){this._transitionMode=e,this.component&&(this.component.transitionMode=H.get(e)??t.BUTTON_TRANSITION_MODE_TINT)}get transitionMode(){return this._transitionMode}set hoverTint(e){this._hoverTint=e,this.component&&(this.component.hoverTint=e)}get hoverTint(){return this._hoverTint}set pressedTint(e){this._pressedTint=e,this.component&&(this.component.pressedTint=e)}get pressedTint(){return this._pressedTint}set inactiveTint(e){this._inactiveTint=e,this.component&&(this.component.inactiveTint=e)}get inactiveTint(){return this._inactiveTint}set fadeDuration(e){this._fadeDuration=e,this.component&&(this.component.fadeDuration=e)}get fadeDuration(){return this._fadeDuration}set hoverSpriteAsset(e){this._hoverSpriteAsset=e;const t=P(e);this.component&&t&&(this.component.hoverSpriteAsset=t.id)}get hoverSpriteAsset(){return this._hoverSpriteAsset}set hoverSpriteFrame(e){this._hoverSpriteFrame=e,this.component&&(this.component.hoverSpriteFrame=e)}get hoverSpriteFrame(){return this._hoverSpriteFrame}set pressedSpriteAsset(e){this._pressedSpriteAsset=e;const t=P(e);this.component&&t&&(this.component.pressedSpriteAsset=t.id)}get pressedSpriteAsset(){return this._pressedSpriteAsset}set pressedSpriteFrame(e){this._pressedSpriteFrame=e,this.component&&(this.component.pressedSpriteFrame=e)}get pressedSpriteFrame(){return this._pressedSpriteFrame}set inactiveSpriteAsset(e){this._inactiveSpriteAsset=e;const t=P(e);this.component&&t&&(this.component.inactiveSpriteAsset=t.id)}get inactiveSpriteAsset(){return this._inactiveSpriteAsset}set inactiveSpriteFrame(e){this._inactiveSpriteFrame=e,this.component&&(this.component.inactiveSpriteFrame=e)}get inactiveSpriteFrame(){return this._inactiveSpriteFrame}static get observedAttributes(){return[...super.observedAttributes,"active","image","hit-padding","transition-mode","hover-tint","pressed-tint","inactive-tint","fade-duration","hover-sprite-asset","hover-sprite-frame","pressed-sprite-asset","pressed-sprite-frame","inactive-sprite-asset","inactive-sprite-frame"]}attributeChangedCallback(e,a,s){switch(super.attributeChangedCallback(e,a,s),e){case"active":this.active=c(s,!0);break;case"image":this.image=s??"";break;case"hit-padding":this.hitPadding=g(s,t.Vec4.ZERO,e);break;case"transition-mode":this.transitionMode=h(s,H,"tint",e);break;case"hover-tint":this.hoverTint=l(s,t.Color.WHITE,e);break;case"pressed-tint":this.pressedTint=l(s,t.Color.WHITE,e);break;case"inactive-tint":this.inactiveTint=l(s,t.Color.WHITE,e);break;case"fade-duration":this.fadeDuration=p(s,0,e);break;case"hover-sprite-asset":this.hoverSpriteAsset=s??"";break;case"hover-sprite-frame":this.hoverSpriteFrame=p(s,0,e);break;case"pressed-sprite-asset":this.pressedSpriteAsset=s??"";break;case"pressed-sprite-frame":this.pressedSpriteFrame=p(s,0,e);break;case"inactive-sprite-asset":this.inactiveSpriteAsset=s??"";break;case"inactive-sprite-frame":this.inactiveSpriteFrame=p(s,0,e)}}}customElements.define("pc-button",z);const G=new Map([["perspective",t.PROJECTION_PERSPECTIVE],["orthographic",t.PROJECTION_ORTHOGRAPHIC]]),B=new Map([["none",t.TONEMAP_NONE],["linear",t.TONEMAP_LINEAR],["filmic",t.TONEMAP_FILMIC],["hejl",t.TONEMAP_HEJL],["aces",t.TONEMAP_ACES],["aces2",t.TONEMAP_ACES2],["neutral",t.TONEMAP_NEUTRAL]]);class U extends L{_clearColor=new t.Color(.75,.75,.75,1);_clearColorBuffer=!0;_clearDepthBuffer=!0;_clearStencilBuffer=!1;_cullFaces=!0;_farClip=1e3;_flipFaces=!1;_fov=45;_frustumCulling=!0;_gamma="srgb";_horizontalFov=!1;_nearClip=.1;_projection="perspective";_orthoHeight=10;_priority=0;_rect=new t.Vec4(0,0,1,1);_scissorRect=new t.Vec4(0,0,1,1);_tonemap="none";constructor(){super("camera")}getInitialComponentData(){return{clearColor:this._clearColor,clearColorBuffer:this._clearColorBuffer,clearDepthBuffer:this._clearDepthBuffer,clearStencilBuffer:this._clearStencilBuffer,cullFaces:this._cullFaces,farClip:this._farClip,flipFaces:this._flipFaces,fov:this._fov,frustumCulling:this._frustumCulling,gammaCorrection:"srgb"===this._gamma?t.GAMMA_SRGB:t.GAMMA_NONE,horizontalFov:this._horizontalFov,nearClip:this._nearClip,projection:G.get(this._projection)??t.PROJECTION_PERSPECTIVE,orthoHeight:this._orthoHeight,priority:this._priority,rect:this._rect,scissorRect:this._scissorRect,toneMapping:B.get(this._tonemap)??t.TONEMAP_NONE}}get xrAvailable(){const e=this.component?.system.app.xr;return e&&e.supported&&e.isAvailable(t.XRTYPE_VR)}startXr(e,t){this.component&&this.xrAvailable&&this.component.startXr(e,t,{callback:e=>{e&&console.error(`WebXR Immersive VR failed to start: ${e.message}`)}})}endXr(){this.component&&this.component.endXr()}get component(){return super.component}set clearColor(e){this._clearColor=e,this.component&&(this.component.clearColor=e)}get clearColor(){return this._clearColor}set clearColorBuffer(e){this._clearColorBuffer=e,this.component&&(this.component.clearColorBuffer=e)}get clearColorBuffer(){return this._clearColorBuffer}set clearDepthBuffer(e){this._clearDepthBuffer=e,this.component&&(this.component.clearDepthBuffer=e)}get clearDepthBuffer(){return this._clearDepthBuffer}set clearStencilBuffer(e){this._clearStencilBuffer=e,this.component&&(this.component.clearStencilBuffer=e)}get clearStencilBuffer(){return this._clearStencilBuffer}set cullFaces(e){this._cullFaces=e,this.component&&(this.component.cullFaces=e)}get cullFaces(){return this._cullFaces}set farClip(e){this._farClip=e,this.component&&(this.component.farClip=e)}get farClip(){return this._farClip}set flipFaces(e){this._flipFaces=e,this.component&&(this.component.flipFaces=e)}get flipFaces(){return this._flipFaces}set fov(e){this._fov=e,this.component&&(this.component.fov=e)}get fov(){return this._fov}set frustumCulling(e){this._frustumCulling=e,this.component&&(this.component.frustumCulling=e)}get frustumCulling(){return this._frustumCulling}set gamma(e){this._gamma=e,this.component&&(this.component.gammaCorrection="srgb"===e?t.GAMMA_SRGB:t.GAMMA_NONE)}get gamma(){return this._gamma}set horizontalFov(e){this._horizontalFov=e,this.component&&(this.component.horizontalFov=e)}get horizontalFov(){return this._horizontalFov}set nearClip(e){this._nearClip=e,this.component&&(this.component.nearClip=e)}get nearClip(){return this._nearClip}set orthoHeight(e){this._orthoHeight=e,this.component&&(this.component.orthoHeight=e)}get orthoHeight(){return this._orthoHeight}set priority(e){this._priority=e,this.component&&(this.component.priority=e)}get priority(){return this._priority}set projection(e){this._projection=e,this.component&&(this.component.projection=G.get(e)??t.PROJECTION_PERSPECTIVE)}get projection(){return this._projection}set rect(e){this._rect=e,this.component&&(this.component.rect=e)}get rect(){return this._rect}set scissorRect(e){this._scissorRect=e,this.component&&(this.component.scissorRect=e)}get scissorRect(){return this._scissorRect}set tonemap(e){this._tonemap=e,this.component&&(this.component.toneMapping=B.get(e)??t.TONEMAP_NONE)}get tonemap(){return this._tonemap}static get observedAttributes(){return[...super.observedAttributes,"clear-color","clear-color-buffer","clear-depth-buffer","clear-stencil-buffer","cull-faces","far-clip","flip-faces","fov","frustum-culling","gamma","horizontal-fov","near-clip","ortho-height","priority","projection","rect","scissor-rect","tonemap"]}attributeChangedCallback(e,a,s){switch(super.attributeChangedCallback(e,a,s),e){case"clear-color":this.clearColor=l(s,new t.Color(.75,.75,.75,1),e);break;case"clear-color-buffer":this.clearColorBuffer=c(s,!0);break;case"clear-depth-buffer":this.clearDepthBuffer=c(s,!0);break;case"clear-stencil-buffer":this.clearStencilBuffer=c(s,!1);break;case"cull-faces":this.cullFaces=c(s,!0);break;case"far-clip":this.farClip=p(s,1e3,e);break;case"flip-faces":this.flipFaces=c(s,!1);break;case"fov":this.fov=p(s,45,e);break;case"frustum-culling":this.frustumCulling=c(s,!0);break;case"gamma":this.gamma=h(s,["linear","srgb"],"srgb",e);break;case"horizontal-fov":this.horizontalFov=c(s,!1);break;case"near-clip":this.nearClip=p(s,.1,e);break;case"ortho-height":this.orthoHeight=p(s,10,e);break;case"priority":this.priority=p(s,0,e);break;case"projection":this.projection=h(s,G,"perspective",e);break;case"rect":this.rect=g(s,new t.Vec4(0,0,1,1),e);break;case"scissor-rect":this.scissorRect=g(s,new t.Vec4(0,0,1,1),e);break;case"tonemap":this.tonemap=h(s,B,"none",e)}}}customElements.define("pc-camera",U);class I extends L{_angularOffset=new t.Quat;_axis=1;_convexHull=!1;_halfExtents=new t.Vec3(.5,.5,.5);_height=2;_linearOffset=new t.Vec3;_radius=.5;_type="box";constructor(){super("collision")}getInitialComponentData(){return{axis:this._axis,angularOffset:this._angularOffset,convexHull:this._convexHull,halfExtents:this._halfExtents,height:this._height,linearOffset:this._linearOffset,radius:this._radius,type:this._type}}initComponent(){this._applyMeshGeometryDefault()}_applyMeshGeometryDefault(){const e=this.component;if(!e||"mesh"!==this._type||null!==e.renderAsset)return;const t=e.entity.render?.asset??null;null!==t?e.renderAsset=t:console.warn(`pc-collision type="mesh" on '${e.entity.name}' found no asset-backed render component to take geometry from - collider has no shape`)}get component(){return super.component}set angularOffset(e){this._angularOffset=e,this.component&&(this.component.angularOffset=e)}get angularOffset(){return this._angularOffset}set axis(e){this._axis=e,this.component&&(this.component.axis=e)}get axis(){return this._axis}set convexHull(e){this._convexHull=e,this.component&&(this.component.convexHull=e)}get convexHull(){return this._convexHull}set halfExtents(e){this._halfExtents=e,this.component&&(this.component.halfExtents=e)}get halfExtents(){return this._halfExtents}set height(e){this._height=e,this.component&&(this.component.height=e)}get height(){return this._height}set linearOffset(e){this._linearOffset=e,this.component&&(this.component.linearOffset=e)}get linearOffset(){return this._linearOffset}set radius(e){this._radius=e,this.component&&(this.component.radius=e)}get radius(){return this._radius}set type(e){this._type=e,this.component&&(this.component.type=e,this._applyMeshGeometryDefault())}get type(){return this._type}static get observedAttributes(){return[...super.observedAttributes,"angular-offset","axis","convex-hull","half-extents","height","linear-offset","radius","type"]}attributeChangedCallback(e,a,s){switch(super.attributeChangedCallback(e,a,s),e){case"angular-offset":this.angularOffset=b(s,t.Quat.IDENTITY,e);break;case"axis":this.axis=p(s,1,e);break;case"convex-hull":this.convexHull=c(s,!1);break;case"half-extents":this.halfExtents=m(s,new t.Vec3(.5,.5,.5),e);break;case"height":this.height=p(s,2,e);break;case"linear-offset":this.linearOffset=m(s,t.Vec3.ZERO,e);break;case"radius":this.radius=p(s,.5,e);break;case"type":this.type=h(s,["box","capsule","compound","cone","cylinder","mesh","sphere"],"box",e)}}}customElements.define("pc-collision",I);class N extends L{_anchor=new t.Vec4(.5,.5,.5,.5);_autoWidth=!0;_autoHeight=!0;_autoFitWidth=!1;_autoFitHeight=!1;_color=new t.Color(1,1,1,1);_enableMarkup=!1;_fontAsset="";_fontSize=32;_maxFontSize=32;_minFontSize=8;_height=0;_lineHeight=32;_margin=null;_mask=!1;_opacity=1;_pivot=new t.Vec2(.5,.5);_pixelsPerUnit=null;_spriteAsset="";_spriteFrame=0;_text="";_textureAsset="";_type="group";_useInput=!1;_width=0;_wrapLines=!1;constructor(){super("element")}initComponent(){const e=this.component;e&&(e._text?._material&&(e._text._material.useFog=!0),e._dirtifyMask?.())}getInitialComponentData(){const e={anchor:this._anchor,autoWidth:this._autoWidth,autoHeight:this._autoHeight,autoFitWidth:this._autoFitWidth,autoFitHeight:this._autoFitHeight,color:this._color,enableMarkup:this._enableMarkup,fontSize:this._fontSize,maxFontSize:this._maxFontSize,minFontSize:this._minFontSize,height:this._height,lineHeight:this._lineHeight,mask:this._mask,opacity:this._opacity,pivot:this._pivot,spriteFrame:this._spriteFrame,type:this._type,text:this._text,useInput:this._useInput,width:this._width,wrapLines:this._wrapLines},t=P(this._fontAsset);t&&(e.fontAsset=t.id);const a=P(this._spriteAsset);a&&(e.spriteAsset=a.id);const s=P(this._textureAsset);return s&&(e.textureAsset=s.id),this._margin&&(e.margin=this._margin),null!==this._pixelsPerUnit&&(e.pixelsPerUnit=this._pixelsPerUnit),e}get component(){return super.component}set anchor(e){this._anchor=e,this.component&&(this.component.anchor=e)}get anchor(){return this._anchor}set autoWidth(e){this._autoWidth=e,this.component&&(this.component.autoWidth=e)}get autoWidth(){return this._autoWidth}set autoHeight(e){this._autoHeight=e,this.component&&(this.component.autoHeight=e)}get autoHeight(){return this._autoHeight}set color(e){this._color=e,this.component&&(this.component.color=e)}get color(){return this._color}set enableMarkup(e){this._enableMarkup=e,this.component&&(this.component.enableMarkup=e)}get enableMarkup(){return this._enableMarkup}set fontAsset(e){this._fontAsset=e;const t=P(e);this.component&&t&&(this.component.fontAsset=t.id)}get fontAsset(){return this._fontAsset}set fontSize(e){this._fontSize=e,this.component&&(this.component.fontSize=e)}get fontSize(){return this._fontSize}set height(e){this._height=e,this.component&&(this.component.height=e)}get height(){return this._height}set lineHeight(e){this._lineHeight=e,this.component&&(this.component.lineHeight=e)}get lineHeight(){return this._lineHeight}set margin(e){this._margin=e,this.component&&e&&(this.component.margin=e)}get margin(){return this._margin}set mask(e){this._mask=e,this.component&&(this.component.mask=e)}get mask(){return this._mask}set opacity(e){this._opacity=e,this.component&&(this.component.opacity=e)}get opacity(){return this._opacity}set pivot(e){this._pivot=e,this.component&&(this.component.pivot=e)}get pivot(){return this._pivot}set pixelsPerUnit(e){this._pixelsPerUnit=e,this.component&&null!==e&&(this.component.pixelsPerUnit=e)}get pixelsPerUnit(){return this._pixelsPerUnit}set spriteAsset(e){this._spriteAsset=e;const t=P(e);this.component&&t&&(this.component.spriteAsset=t.id)}get spriteAsset(){return this._spriteAsset}set spriteFrame(e){this._spriteFrame=e,this.component&&(this.component.spriteFrame=e)}get spriteFrame(){return this._spriteFrame}set text(e){this._text=e,this.component&&(this.component.text=e)}get text(){return this._text}set textureAsset(e){this._textureAsset=e;const t=P(e);this.component&&t&&(this.component.textureAsset=t.id)}get textureAsset(){return this._textureAsset}set type(e){this._type=e,this.component&&(this.component.type=e)}get type(){return this._type}set useInput(e){this._useInput=e,this.component&&(this.component.useInput=e)}get useInput(){return this._useInput}set width(e){this._width=e,this.component&&(this.component.width=e)}get width(){return this._width}set wrapLines(e){this._wrapLines=e,this.component&&(this.component.wrapLines=e)}get wrapLines(){return this._wrapLines}set autoFitWidth(e){this._autoFitWidth=e,this.component&&(this.component.autoFitWidth=e)}get autoFitWidth(){return this._autoFitWidth}set autoFitHeight(e){this._autoFitHeight=e,this.component&&(this.component.autoFitHeight=e)}get autoFitHeight(){return this._autoFitHeight}set minFontSize(e){this._minFontSize=e,this.component&&(this.component.minFontSize=e)}get minFontSize(){return this._minFontSize}set maxFontSize(e){this._maxFontSize=e,this.component&&(this.component.maxFontSize=e)}get maxFontSize(){return this._maxFontSize}static get observedAttributes(){return[...super.observedAttributes,"anchor","auto-width","auto-height","auto-fit-width","auto-fit-height","color","enable-markup","font-asset","font-size","max-font-size","min-font-size","height","line-height","margin","mask","opacity","pivot","pixels-per-unit","sprite-asset","sprite-frame","text","texture-asset","type","use-input","width","wrap-lines"]}attributeChangedCallback(e,a,s){switch(super.attributeChangedCallback(e,a,s),e){case"anchor":this.anchor=g(s,new t.Vec4(.5,.5,.5,.5),e);break;case"auto-width":this.autoWidth=c(s,!0);break;case"auto-height":this.autoHeight=c(s,!0);break;case"auto-fit-width":this.autoFitWidth=c(s,!1);break;case"auto-fit-height":this.autoFitHeight=c(s,!1);break;case"color":this.color=l(s,t.Color.WHITE,e);break;case"enable-markup":this.enableMarkup=c(s,!1);break;case"font-asset":this.fontAsset=s??"";break;case"font-size":this.fontSize=p(s,32,e);break;case"max-font-size":this.maxFontSize=p(s,32,e);break;case"min-font-size":this.minFontSize=p(s,8,e);break;case"height":this.height=p(s,0,e);break;case"line-height":this.lineHeight=p(s,32,e);break;case"margin":this.margin=g(s,null,e);break;case"mask":this.mask=c(s,!1);break;case"opacity":this.opacity=p(s,1,e);break;case"pivot":this.pivot=u(s,new t.Vec2(.5,.5),e);break;case"pixels-per-unit":this.pixelsPerUnit=p(s,null,e);break;case"sprite-asset":this.spriteAsset=s??"";break;case"sprite-frame":this.spriteFrame=p(s,0,e);break;case"text":this.text=s??"";break;case"texture-asset":this.textureAsset=s??"";break;case"type":this.type=h(s,["group","image","text"],"group",e);break;case"use-input":this.useInput=c(s,!1);break;case"width":this.width=p(s,0,e);break;case"wrap-lines":this.wrapLines=c(s,!1)}}}customElements.define("pc-element",N);class W extends L{_minWidth=0;_minHeight=0;_maxWidth=null;_maxHeight=null;_fitWidthProportion=0;_fitHeightProportion=0;_excludeFromLayout=!1;constructor(){super("layoutchild")}getInitialComponentData(){return{minWidth:this._minWidth,minHeight:this._minHeight,maxWidth:this._maxWidth,maxHeight:this._maxHeight,fitWidthProportion:this._fitWidthProportion,fitHeightProportion:this._fitHeightProportion,excludeFromLayout:this._excludeFromLayout}}get component(){return super.component}set minWidth(e){this._minWidth=e,this.component&&(this.component.minWidth=e)}get minWidth(){return this._minWidth}set minHeight(e){this._minHeight=e,this.component&&(this.component.minHeight=e)}get minHeight(){return this._minHeight}set maxWidth(e){this._maxWidth=e,this.component&&(this.component.maxWidth=e)}get maxWidth(){return this._maxWidth}set maxHeight(e){this._maxHeight=e,this.component&&(this.component.maxHeight=e)}get maxHeight(){return this._maxHeight}set fitWidthProportion(e){this._fitWidthProportion=e,this.component&&(this.component.fitWidthProportion=e)}get fitWidthProportion(){return this._fitWidthProportion}set fitHeightProportion(e){this._fitHeightProportion=e,this.component&&(this.component.fitHeightProportion=e)}get fitHeightProportion(){return this._fitHeightProportion}set excludeFromLayout(e){this._excludeFromLayout=e,this.component&&(this.component.excludeFromLayout=e)}get excludeFromLayout(){return this._excludeFromLayout}static get observedAttributes(){return[...super.observedAttributes,"min-width","min-height","max-width","max-height","fit-width-proportion","fit-height-proportion","exclude-from-layout"]}attributeChangedCallback(e,t,a){switch(super.attributeChangedCallback(e,t,a),e){case"min-width":this.minWidth=p(a,0,e);break;case"min-height":this.minHeight=p(a,0,e);break;case"max-width":this.maxWidth=p(a,null,e);break;case"max-height":this.maxHeight=p(a,null,e);break;case"fit-width-proportion":this.fitWidthProportion=p(a,0,e);break;case"fit-height-proportion":this.fitHeightProportion=p(a,0,e);break;case"exclude-from-layout":this.excludeFromLayout=c(a,!1)}}}customElements.define("pc-layoutchild",W);const V=new Map([["horizontal",t.ORIENTATION_HORIZONTAL],["vertical",t.ORIENTATION_VERTICAL]]),q=new Map([["none",t.FITTING_NONE],["stretch",t.FITTING_STRETCH],["shrink",t.FITTING_SHRINK],["both",t.FITTING_BOTH]]);class K extends L{_orientation="horizontal";_reverseX=!1;_reverseY=!1;_alignment=new t.Vec2(0,1);_padding=new t.Vec4(0,0,0,0);_spacing=new t.Vec2(0,0);_widthFitting="none";_heightFitting="none";_wrap=!1;constructor(){super("layoutgroup")}getInitialComponentData(){return{orientation:V.get(this._orientation),reverseX:this._reverseX,reverseY:this._reverseY,alignment:this._alignment,padding:this._padding,spacing:this._spacing,widthFitting:q.get(this._widthFitting),heightFitting:q.get(this._heightFitting),wrap:this._wrap}}get component(){return super.component}set orientation(e){this._orientation=e,this.component&&(this.component.orientation=V.get(e)??t.ORIENTATION_HORIZONTAL)}get orientation(){return this._orientation}set reverseX(e){this._reverseX=e,this.component&&(this.component.reverseX=e)}get reverseX(){return this._reverseX}set reverseY(e){this._reverseY=e,this.component&&(this.component.reverseY=e)}get reverseY(){return this._reverseY}set alignment(e){this._alignment=e,this.component&&(this.component.alignment=e)}get alignment(){return this._alignment}set padding(e){this._padding=e,this.component&&(this.component.padding=e)}get padding(){return this._padding}set spacing(e){this._spacing=e,this.component&&(this.component.spacing=e)}get spacing(){return this._spacing}set widthFitting(e){this._widthFitting=e,this.component&&(this.component.widthFitting=q.get(e)??t.FITTING_NONE)}get widthFitting(){return this._widthFitting}set heightFitting(e){this._heightFitting=e,this.component&&(this.component.heightFitting=q.get(e)??t.FITTING_NONE)}get heightFitting(){return this._heightFitting}set wrap(e){this._wrap=e,this.component&&(this.component.wrap=e)}get wrap(){return this._wrap}static get observedAttributes(){return[...super.observedAttributes,"orientation","reverse-x","reverse-y","alignment","padding","spacing","width-fitting","height-fitting","wrap"]}attributeChangedCallback(e,a,s){switch(super.attributeChangedCallback(e,a,s),e){case"orientation":this.orientation=h(s,V,"horizontal",e);break;case"reverse-x":this.reverseX=c(s,!1);break;case"reverse-y":this.reverseY=c(s,!1);break;case"alignment":this.alignment=u(s,new t.Vec2(0,1),e);break;case"padding":this.padding=g(s,t.Vec4.ZERO,e);break;case"spacing":this.spacing=u(s,t.Vec2.ZERO,e);break;case"width-fitting":this.widthFitting=h(s,q,"none",e);break;case"height-fitting":this.heightFitting=h(s,q,"none",e);break;case"wrap":this.wrap=c(s,!1)}}}customElements.define("pc-layoutgroup",K);const Q=new Map([["pcf1-16f",t.SHADOW_PCF1_16F],["pcf1-32f",t.SHADOW_PCF1_32F],["pcf3-16f",t.SHADOW_PCF3_16F],["pcf3-32f",t.SHADOW_PCF3_32F],["pcf5-16f",t.SHADOW_PCF5_16F],["pcf5-32f",t.SHADOW_PCF5_32F],["vsm-16f",t.SHADOW_VSM_16F],["vsm-32f",t.SHADOW_VSM_32F],["pcss-32f",t.SHADOW_PCSS_32F]]);class $ extends L{_castShadows=!1;_color=new t.Color(1,1,1);_innerConeAngle=40;_intensity=1;_normalOffsetBias=.05;_outerConeAngle=45;_range=10;_shadowBias=.2;_shadowDistance=16;_shadowIntensity=1;_shadowResolution=1024;_shadowType="pcf3-32f";_type="directional";_vsmBias=.01;_vsmBlurSize=11;_penumbraSize=1;_penumbraFalloff=1;_shadowSamples=16;_shadowBlockerSamples=16;constructor(){super("light")}getInitialComponentData(){return{castShadows:this._castShadows,color:this._color,innerConeAngle:this._innerConeAngle,intensity:this._intensity,normalOffsetBias:this._normalOffsetBias,outerConeAngle:this._outerConeAngle,penumbraFalloff:this._penumbraFalloff,penumbraSize:this._penumbraSize,range:this._range,shadowBias:this._shadowBias,shadowBlockerSamples:this._shadowBlockerSamples,shadowDistance:this._shadowDistance,shadowIntensity:this._shadowIntensity,shadowResolution:this._shadowResolution,shadowSamples:this._shadowSamples,shadowType:Q.get(this._shadowType),type:this._type,vsmBias:this._vsmBias,vsmBlurSize:this._vsmBlurSize}}get component(){return super.component}set castShadows(e){this._castShadows=e,this.component&&(this.component.castShadows=e)}get castShadows(){return this._castShadows}set color(e){this._color=e,this.component&&(this.component.color=e)}get color(){return this._color}set innerConeAngle(e){this._innerConeAngle=e,this.component&&(this.component.innerConeAngle=e)}get innerConeAngle(){return this._innerConeAngle}set intensity(e){this._intensity=e,this.component&&(this.component.intensity=e)}get intensity(){return this._intensity}set normalOffsetBias(e){this._normalOffsetBias=e,this.component&&(this.component.normalOffsetBias=e)}get normalOffsetBias(){return this._normalOffsetBias}set outerConeAngle(e){this._outerConeAngle=e,this.component&&(this.component.outerConeAngle=e)}get outerConeAngle(){return this._outerConeAngle}set range(e){this._range=e,this.component&&(this.component.range=e)}get range(){return this._range}set shadowBias(e){this._shadowBias=e,this.component&&(this.component.shadowBias=e)}get shadowBias(){return this._shadowBias}set shadowDistance(e){this._shadowDistance=e,this.component&&(this.component.shadowDistance=e)}get shadowDistance(){return this._shadowDistance}set shadowIntensity(e){this._shadowIntensity=e,this.component&&(this.component.shadowIntensity=e)}get shadowIntensity(){return this._shadowIntensity}set shadowResolution(e){this._shadowResolution=e,this.component&&(this.component.shadowResolution=e)}get shadowResolution(){return this._shadowResolution}set shadowType(e){this._shadowType=e,this.component&&(this.component.shadowType=Q.get(e)??t.SHADOW_PCF3_32F)}get shadowType(){return this._shadowType}set type(e){this._type=e,this.component&&(this.component.type=e)}get type(){return this._type}set vsmBias(e){this._vsmBias=e,this.component&&(this.component.vsmBias=e)}get vsmBias(){return this._vsmBias}set vsmBlurSize(e){this._vsmBlurSize=e,this.component&&(this.component.vsmBlurSize=e)}get vsmBlurSize(){return this._vsmBlurSize}set penumbraSize(e){this._penumbraSize=e,this.component&&(this.component.penumbraSize=e)}get penumbraSize(){return this._penumbraSize}set penumbraFalloff(e){this._penumbraFalloff=e,this.component&&(this.component.penumbraFalloff=e)}get penumbraFalloff(){return this._penumbraFalloff}set shadowSamples(e){this._shadowSamples=e,this.component&&(this.component.shadowSamples=e)}get shadowSamples(){return this._shadowSamples}set shadowBlockerSamples(e){this._shadowBlockerSamples=e,this.component&&(this.component.shadowBlockerSamples=e)}get shadowBlockerSamples(){return this._shadowBlockerSamples}static get observedAttributes(){return[...super.observedAttributes,"color","cast-shadows","intensity","inner-cone-angle","normal-offset-bias","outer-cone-angle","penumbra-falloff","penumbra-size","range","shadow-bias","shadow-blocker-samples","shadow-distance","shadow-intensity","shadow-resolution","shadow-samples","shadow-type","type","vsm-bias","vsm-blur-size"]}attributeChangedCallback(e,a,s){switch(super.attributeChangedCallback(e,a,s),e){case"color":this.color=l(s,t.Color.WHITE,e);break;case"cast-shadows":this.castShadows=c(s,!1);break;case"inner-cone-angle":this.innerConeAngle=p(s,40,e);break;case"intensity":this.intensity=p(s,1,e);break;case"normal-offset-bias":this.normalOffsetBias=p(s,.05,e);break;case"outer-cone-angle":this.outerConeAngle=p(s,45,e);break;case"penumbra-falloff":this.penumbraFalloff=p(s,1,e);break;case"penumbra-size":this.penumbraSize=p(s,1,e);break;case"range":this.range=p(s,10,e);break;case"shadow-bias":this.shadowBias=p(s,.2,e);break;case"shadow-distance":this.shadowDistance=p(s,16,e);break;case"shadow-blocker-samples":this.shadowBlockerSamples=p(s,16,e);break;case"shadow-resolution":this.shadowResolution=p(s,1024,e);break;case"shadow-intensity":this.shadowIntensity=p(s,1,e);break;case"shadow-samples":this.shadowSamples=p(s,16,e);break;case"shadow-type":this.shadowType=h(s,Q,"pcf3-32f",e);break;case"type":this.type=h(s,["directional","omni","spot"],"directional",e);break;case"vsm-bias":this.vsmBias=p(s,.01,e);break;case"vsm-blur-size":this.vsmBlurSize=p(s,11,e)}}}customElements.define("pc-light",$);class J extends L{_asset="";constructor(){super("particlesystem")}getInitialComponentData(){const e=P(this._asset);if(!e||!e.resource)return{};if(e.resource.colorMapAsset){const t=e.resource.colorMapAsset,a=P(t)?.id;a&&(e.resource.colorMapAsset=a)}return e.resource}get component(){return super.component}applyConfig(e){if(this.component)for(const t in e)Object.hasOwn(e,t)&&(this.component[t]=e[t])}async _loadAsset(){await(this.closestApp?.ready());const e=P(this._asset);e&&(e.loaded?this.applyConfig(e.resource):e.once("load",()=>{this.applyConfig(e.resource)}))}set asset(e){this._asset=e,this.isConnected&&this._loadAsset()}get asset(){return this._asset}play(){this.component&&this.component.play()}pause(){this.component&&this.component.pause()}reset(){this.component&&this.component.reset()}stop(){this.component&&this.component.stop()}static get observedAttributes(){return[...super.observedAttributes,"asset"]}attributeChangedCallback(e,t,a){if(super.attributeChangedCallback(e,t,a),"asset"===e)this.asset=a??""}}customElements.define("pc-particles",J);const Y=new Map([["none",t.BLEND_NONE],["normal",t.BLEND_NORMAL],["additive",t.BLEND_ADDITIVE],["additive-alpha",t.BLEND_ADDITIVEALPHA],["premultiplied",t.BLEND_PREMULTIPLIED],["multiplicative",t.BLEND_MULTIPLICATIVE],["multiplicative-2x",t.BLEND_MULTIPLICATIVE2X],["screen",t.BLEND_SCREEN],["min",t.BLEND_MIN],["max",t.BLEND_MAX],["subtractive",t.BLEND_SUBTRACTIVE]]),X=new Map([["none",t.CULLFACE_NONE],["back",t.CULLFACE_BACK],["front",t.CULLFACE_FRONT],["front-and-back",t.CULLFACE_FRONTANDBACK]]),Z=new Map([["none",t.FRESNEL_NONE],["schlick",t.FRESNEL_SCHLICK]]),ee=new Map([["none",t.SPECOCC_NONE],["ao",t.SPECOCC_AO],["gloss-dependent",t.SPECOCC_GLOSSDEPENDENT]]),te=["none","bayer8","bluenoise","ignnoise"],ae=["r","g","b","a","rgb"],se=["r","g","b","a"],ie=["gloss","gloss-invert","gloss-map"],ne=["roughness","roughness-map"];class oe extends HTMLElement{_alphaTest=0;_alphaToCoverage=!1;_aoIntensity=1;_aoMap="";_aoMapChannel="g";_aoMapOffset=new t.Vec2(0,0);_aoMapRotation=0;_aoMapTiling=new t.Vec2(1,1);_aoMapUv=0;_blendType="none";_bumpiness=1;_cull="back";_depthBias=0;_depthTest=!0;_depthWrite=!0;_diffuse=new t.Color(1,1,1);_diffuseMap="";_diffuseMapChannel="rgb";_diffuseMapOffset=new t.Vec2(0,0);_diffuseMapRotation=0;_diffuseMapTiling=new t.Vec2(1,1);_diffuseMapUv=0;_emissive=new t.Color(0,0,0);_emissiveIntensity=1;_emissiveMap="";_emissiveMapChannel="rgb";_emissiveMapOffset=new t.Vec2(0,0);_emissiveMapRotation=0;_emissiveMapTiling=new t.Vec2(1,1);_emissiveMapUv=0;_enableGGXSpecular=!1;_fresnelModel="schlick";_gloss=.25;_glossInvert=!1;_glossMap="";_glossMapChannel="g";_glossMapOffset=new t.Vec2(0,0);_glossMapRotation=0;_glossMapTiling=new t.Vec2(1,1);_glossMapUv=0;_heightMap="";_heightMapChannel="g";_heightMapFactor=1;_heightMapOffset=new t.Vec2(0,0);_heightMapRotation=0;_heightMapTiling=new t.Vec2(1,1);_heightMapUv=0;_metalness=0;_metalnessMap="";_metalnessMapChannel="g";_metalnessMapOffset=new t.Vec2(0,0);_metalnessMapRotation=0;_metalnessMapTiling=new t.Vec2(1,1);_metalnessMapUv=0;_name="Untitled";_normalMap="";_normalMapOffset=new t.Vec2(0,0);_normalMapRotation=0;_normalMapTiling=new t.Vec2(1,1);_normalMapUv=0;_occludeDirect=!1;_occludeSpecular="ao";_opacity=1;_opacityDither="none";_opacityFadesSpecular=!0;_opacityMap="";_opacityMapChannel="a";_opacityMapOffset=new t.Vec2(0,0);_opacityMapRotation=0;_opacityMapTiling=new t.Vec2(1,1);_opacityMapUv=0;_slopeDepthBias=0;_specular=new t.Color(0,0,0);_specularityFactor=1;_twoSidedLighting=!1;_useFog=!0;_useLighting=!0;_useMetalness=!0;_useMetalnessSpecularColor=!1;_useSkybox=!0;_useTonemap=!0;_mapHandles=new Map;_updateScheduled=!1;_glossConflictWarned=!1;material=null;async connectedCallback(){const e=this.parentElement?.closest("pc-app")??null;if(e&&this.parentElement===e){if(await e.ready(),this.isConnected&&this.parentElement===e&&!this.material){if(!e.app)return;this._createMaterial()}}else console.warn(`pc-material '${this.id}' must be a direct child of pc-app - material not created`)}_createMaterial(){const e=new t.StandardMaterial;this.material=e,e.alphaTest=this._alphaTest,e.alphaToCoverage=this._alphaToCoverage,e.aoIntensity=this._aoIntensity,e.aoMapChannel=this._aoMapChannel,e.aoMapOffset=this._aoMapOffset,e.aoMapRotation=this._aoMapRotation,e.aoMapTiling=this._aoMapTiling,e.aoMapUv=this._aoMapUv,e.blendType=Y.get(this._blendType)??t.BLEND_NONE,e.bumpiness=this._bumpiness,e.cull=X.get(this._cull)??t.CULLFACE_BACK,e.depthBias=this._depthBias,e.depthTest=this._depthTest,e.depthWrite=this._depthWrite,e.diffuse=this._diffuse,e.diffuseMapChannel=this._diffuseMapChannel,e.diffuseMapOffset=this._diffuseMapOffset,e.diffuseMapRotation=this._diffuseMapRotation,e.diffuseMapTiling=this._diffuseMapTiling,e.diffuseMapUv=this._diffuseMapUv,e.emissive=this._emissive,e.emissiveIntensity=this._emissiveIntensity,e.emissiveMapChannel=this._emissiveMapChannel,e.emissiveMapOffset=this._emissiveMapOffset,e.emissiveMapRotation=this._emissiveMapRotation,e.emissiveMapTiling=this._emissiveMapTiling,e.emissiveMapUv=this._emissiveMapUv,e.enableGGXSpecular=this._enableGGXSpecular,e.fresnelModel=Z.get(this._fresnelModel)??t.FRESNEL_SCHLICK,e.gloss=this._gloss,e.glossInvert=this._glossInvert,e.glossMapChannel=this._glossMapChannel,e.glossMapOffset=this._glossMapOffset,e.glossMapRotation=this._glossMapRotation,e.glossMapTiling=this._glossMapTiling,e.glossMapUv=this._glossMapUv,e.heightMapChannel=this._heightMapChannel,e.heightMapFactor=this._heightMapFactor,e.heightMapOffset=this._heightMapOffset,e.heightMapRotation=this._heightMapRotation,e.heightMapTiling=this._heightMapTiling,e.heightMapUv=this._heightMapUv,e.metalness=this._metalness,e.metalnessMapChannel=this._metalnessMapChannel,e.metalnessMapOffset=this._metalnessMapOffset,e.metalnessMapRotation=this._metalnessMapRotation,e.metalnessMapTiling=this._metalnessMapTiling,e.metalnessMapUv=this._metalnessMapUv,e.name=this._name,e.normalMapOffset=this._normalMapOffset,e.normalMapRotation=this._normalMapRotation,e.normalMapTiling=this._normalMapTiling,e.normalMapUv=this._normalMapUv,e.occludeDirect=this._occludeDirect,e.occludeSpecular=ee.get(this._occludeSpecular)??t.SPECOCC_AO,e.opacity=this._opacity,e.opacityDither=this._opacityDither,e.opacityFadesSpecular=this._opacityFadesSpecular,e.opacityMapChannel=this._opacityMapChannel,e.opacityMapOffset=this._opacityMapOffset,e.opacityMapRotation=this._opacityMapRotation,e.opacityMapTiling=this._opacityMapTiling,e.opacityMapUv=this._opacityMapUv,e.slopeDepthBias=this._slopeDepthBias,e.specular=this._specular,e.specularityFactor=this._specularityFactor,e.twoSidedLighting=this._twoSidedLighting,e.useFog=this._useFog,e.useLighting=this._useLighting,e.useMetalness=this._useMetalness,e.useMetalnessSpecularColor=this._useMetalnessSpecularColor,e.useSkybox=this._useSkybox,e.useTonemap=this._useTonemap,this.aoMap=this._aoMap,this.diffuseMap=this._diffuseMap,this.emissiveMap=this._emissiveMap,this.glossMap=this._glossMap,this.heightMap=this._heightMap,this.metalnessMap=this._metalnessMap,this.normalMap=this._normalMap,this.opacityMap=this._opacityMap,e.update()}disconnectedCallback(){for(const e of this._mapHandles.values())e.off();this._mapHandles.clear(),this.material&&(this.material.destroy(),this.material=null)}_scheduleUpdate(){this._updateScheduled||(this._updateScheduled=!0,queueMicrotask(()=>{this._updateScheduled=!1,this.material?.update()}))}_warnGlossConflict(){const e=e=>`'${e.join("', '")}'`,t=ne.filter(e=>this.hasAttribute(e)),a=ie.filter(e=>this.hasAttribute(e));0!==t.length&&0!==a.length?this._glossConflictWarned||(this._glossConflictWarned=!0,console.warn(`pc-material '${this.id}' sets both ${e(t)} and ${e(a)} - the roughness-* attributes invert gloss, so the two families contradict each other. Use one or the other.`)):this._glossConflictWarned=!1}_setMap(e,t){if(this._mapHandles.get(t)?.off(),this._mapHandles.delete(t),!this.material)return;if(!e)return this.material[t]=null,void this._scheduleUpdate();const a=P(e);a&&(a.loaded?this._applyMap(t,a.resource):this._mapHandles.set(t,a.once("load",()=>{this._mapHandles.delete(t),this._applyMap(t,a.resource)})))}_applyMap(e,t){this.material&&(this.material[e]=t,this._scheduleUpdate())}set alphaTest(e){this._alphaTest=e,this.material&&(this.material.alphaTest=e,this._scheduleUpdate())}get alphaTest(){return this._alphaTest}set alphaToCoverage(e){this._alphaToCoverage=e,this.material&&(this.material.alphaToCoverage=e,this._scheduleUpdate())}get alphaToCoverage(){return this._alphaToCoverage}set aoIntensity(e){this._aoIntensity=e,this.material&&(this.material.aoIntensity=e,this._scheduleUpdate())}get aoIntensity(){return this._aoIntensity}set aoMap(e){this._aoMap=e,this._setMap(e,"aoMap")}get aoMap(){return this._aoMap}set aoMapChannel(e){this._aoMapChannel=e,this.material&&(this.material.aoMapChannel=e,this._scheduleUpdate())}get aoMapChannel(){return this._aoMapChannel}set aoMapOffset(e){this._aoMapOffset=e,this.material&&(this.material.aoMapOffset=e,this._scheduleUpdate())}get aoMapOffset(){return this._aoMapOffset}set aoMapRotation(e){this._aoMapRotation=e,this.material&&(this.material.aoMapRotation=e,this._scheduleUpdate())}get aoMapRotation(){return this._aoMapRotation}set aoMapTiling(e){this._aoMapTiling=e,this.material&&(this.material.aoMapTiling=e,this._scheduleUpdate())}get aoMapTiling(){return this._aoMapTiling}set aoMapUv(e){this._aoMapUv=e,this.material&&(this.material.aoMapUv=e,this._scheduleUpdate())}get aoMapUv(){return this._aoMapUv}set blendType(e){this._blendType=e,this.material&&(this.material.blendType=Y.get(e)??t.BLEND_NONE,this._scheduleUpdate())}get blendType(){return this._blendType}set bumpiness(e){this._bumpiness=e,this.material&&(this.material.bumpiness=e,this._scheduleUpdate())}get bumpiness(){return this._bumpiness}set cull(e){this._cull=e,this.material&&(this.material.cull=X.get(e)??t.CULLFACE_BACK,this._scheduleUpdate())}get cull(){return this._cull}set depthBias(e){this._depthBias=e,this.material&&(this.material.depthBias=e,this._scheduleUpdate())}get depthBias(){return this._depthBias}set depthTest(e){this._depthTest=e,this.material&&(this.material.depthTest=e,this._scheduleUpdate())}get depthTest(){return this._depthTest}set depthWrite(e){this._depthWrite=e,this.material&&(this.material.depthWrite=e,this._scheduleUpdate())}get depthWrite(){return this._depthWrite}set diffuse(e){this._diffuse=e,this.material&&(this.material.diffuse=e,this._scheduleUpdate())}get diffuse(){return this._diffuse}set diffuseMap(e){this._diffuseMap=e,this._setMap(e,"diffuseMap")}get diffuseMap(){return this._diffuseMap}set diffuseMapChannel(e){this._diffuseMapChannel=e,this.material&&(this.material.diffuseMapChannel=e,this._scheduleUpdate())}get diffuseMapChannel(){return this._diffuseMapChannel}set diffuseMapOffset(e){this._diffuseMapOffset=e,this.material&&(this.material.diffuseMapOffset=e,this._scheduleUpdate())}get diffuseMapOffset(){return this._diffuseMapOffset}set diffuseMapRotation(e){this._diffuseMapRotation=e,this.material&&(this.material.diffuseMapRotation=e,this._scheduleUpdate())}get diffuseMapRotation(){return this._diffuseMapRotation}set diffuseMapTiling(e){this._diffuseMapTiling=e,this.material&&(this.material.diffuseMapTiling=e,this._scheduleUpdate())}get diffuseMapTiling(){return this._diffuseMapTiling}set diffuseMapUv(e){this._diffuseMapUv=e,this.material&&(this.material.diffuseMapUv=e,this._scheduleUpdate())}get diffuseMapUv(){return this._diffuseMapUv}set emissive(e){this._emissive=e,this.material&&(this.material.emissive=e,this._scheduleUpdate())}get emissive(){return this._emissive}set emissiveIntensity(e){this._emissiveIntensity=e,this.material&&(this.material.emissiveIntensity=e,this._scheduleUpdate())}get emissiveIntensity(){return this._emissiveIntensity}set emissiveMap(e){this._emissiveMap=e,this._setMap(e,"emissiveMap")}get emissiveMap(){return this._emissiveMap}set emissiveMapChannel(e){this._emissiveMapChannel=e,this.material&&(this.material.emissiveMapChannel=e,this._scheduleUpdate())}get emissiveMapChannel(){return this._emissiveMapChannel}set emissiveMapOffset(e){this._emissiveMapOffset=e,this.material&&(this.material.emissiveMapOffset=e,this._scheduleUpdate())}get emissiveMapOffset(){return this._emissiveMapOffset}set emissiveMapRotation(e){this._emissiveMapRotation=e,this.material&&(this.material.emissiveMapRotation=e,this._scheduleUpdate())}get emissiveMapRotation(){return this._emissiveMapRotation}set emissiveMapTiling(e){this._emissiveMapTiling=e,this.material&&(this.material.emissiveMapTiling=e,this._scheduleUpdate())}get emissiveMapTiling(){return this._emissiveMapTiling}set emissiveMapUv(e){this._emissiveMapUv=e,this.material&&(this.material.emissiveMapUv=e,this._scheduleUpdate())}get emissiveMapUv(){return this._emissiveMapUv}set enableGGXSpecular(e){this._enableGGXSpecular=e,this.material&&(this.material.enableGGXSpecular=e,this._scheduleUpdate())}get enableGGXSpecular(){return this._enableGGXSpecular}set fresnelModel(e){this._fresnelModel=e,this.material&&(this.material.fresnelModel=Z.get(e)??t.FRESNEL_SCHLICK,this._scheduleUpdate())}get fresnelModel(){return this._fresnelModel}set gloss(e){this._gloss=e,this.material&&(this.material.gloss=e,this._scheduleUpdate())}get gloss(){return this._gloss}set glossInvert(e){this._glossInvert=e,this.material&&(this.material.glossInvert=e,this._scheduleUpdate())}get glossInvert(){return this._glossInvert}set glossMap(e){this._glossMap=e,this._setMap(e,"glossMap")}get glossMap(){return this._glossMap}set glossMapChannel(e){this._glossMapChannel=e,this.material&&(this.material.glossMapChannel=e,this._scheduleUpdate())}get glossMapChannel(){return this._glossMapChannel}set glossMapOffset(e){this._glossMapOffset=e,this.material&&(this.material.glossMapOffset=e,this._scheduleUpdate())}get glossMapOffset(){return this._glossMapOffset}set glossMapRotation(e){this._glossMapRotation=e,this.material&&(this.material.glossMapRotation=e,this._scheduleUpdate())}get glossMapRotation(){return this._glossMapRotation}set glossMapTiling(e){this._glossMapTiling=e,this.material&&(this.material.glossMapTiling=e,this._scheduleUpdate())}get glossMapTiling(){return this._glossMapTiling}set glossMapUv(e){this._glossMapUv=e,this.material&&(this.material.glossMapUv=e,this._scheduleUpdate())}get glossMapUv(){return this._glossMapUv}set heightMap(e){this._heightMap=e,this._setMap(e,"heightMap")}get heightMap(){return this._heightMap}set heightMapChannel(e){this._heightMapChannel=e,this.material&&(this.material.heightMapChannel=e,this._scheduleUpdate())}get heightMapChannel(){return this._heightMapChannel}set heightMapFactor(e){this._heightMapFactor=e,this.material&&(this.material.heightMapFactor=e,this._scheduleUpdate())}get heightMapFactor(){return this._heightMapFactor}set heightMapOffset(e){this._heightMapOffset=e,this.material&&(this.material.heightMapOffset=e,this._scheduleUpdate())}get heightMapOffset(){return this._heightMapOffset}set heightMapRotation(e){this._heightMapRotation=e,this.material&&(this.material.heightMapRotation=e,this._scheduleUpdate())}get heightMapRotation(){return this._heightMapRotation}set heightMapTiling(e){this._heightMapTiling=e,this.material&&(this.material.heightMapTiling=e,this._scheduleUpdate())}get heightMapTiling(){return this._heightMapTiling}set heightMapUv(e){this._heightMapUv=e,this.material&&(this.material.heightMapUv=e,this._scheduleUpdate())}get heightMapUv(){return this._heightMapUv}set metalness(e){this._metalness=e,this.material&&(this.material.metalness=e,this._scheduleUpdate())}get metalness(){return this._metalness}set metalnessMap(e){this._metalnessMap=e,this._setMap(e,"metalnessMap")}get metalnessMap(){return this._metalnessMap}set metalnessMapChannel(e){this._metalnessMapChannel=e,this.material&&(this.material.metalnessMapChannel=e,this._scheduleUpdate())}get metalnessMapChannel(){return this._metalnessMapChannel}set metalnessMapOffset(e){this._metalnessMapOffset=e,this.material&&(this.material.metalnessMapOffset=e,this._scheduleUpdate())}get metalnessMapOffset(){return this._metalnessMapOffset}set metalnessMapRotation(e){this._metalnessMapRotation=e,this.material&&(this.material.metalnessMapRotation=e,this._scheduleUpdate())}get metalnessMapRotation(){return this._metalnessMapRotation}set metalnessMapTiling(e){this._metalnessMapTiling=e,this.material&&(this.material.metalnessMapTiling=e,this._scheduleUpdate())}get metalnessMapTiling(){return this._metalnessMapTiling}set metalnessMapUv(e){this._metalnessMapUv=e,this.material&&(this.material.metalnessMapUv=e,this._scheduleUpdate())}get metalnessMapUv(){return this._metalnessMapUv}set name(e){this._name=e,this.material&&(this.material.name=e)}get name(){return this._name}set normalMap(e){this._normalMap=e,this._setMap(e,"normalMap")}get normalMap(){return this._normalMap}set normalMapOffset(e){this._normalMapOffset=e,this.material&&(this.material.normalMapOffset=e,this._scheduleUpdate())}get normalMapOffset(){return this._normalMapOffset}set normalMapRotation(e){this._normalMapRotation=e,this.material&&(this.material.normalMapRotation=e,this._scheduleUpdate())}get normalMapRotation(){return this._normalMapRotation}set normalMapTiling(e){this._normalMapTiling=e,this.material&&(this.material.normalMapTiling=e,this._scheduleUpdate())}get normalMapTiling(){return this._normalMapTiling}set normalMapUv(e){this._normalMapUv=e,this.material&&(this.material.normalMapUv=e,this._scheduleUpdate())}get normalMapUv(){return this._normalMapUv}set occludeDirect(e){this._occludeDirect=e,this.material&&(this.material.occludeDirect=e,this._scheduleUpdate())}get occludeDirect(){return this._occludeDirect}set occludeSpecular(e){this._occludeSpecular=e,this.material&&(this.material.occludeSpecular=ee.get(e)??t.SPECOCC_AO,this._scheduleUpdate())}get occludeSpecular(){return this._occludeSpecular}set opacity(e){this._opacity=e,this.material&&(this.material.opacity=e,this._scheduleUpdate())}get opacity(){return this._opacity}set opacityDither(e){this._opacityDither=e,this.material&&(this.material.opacityDither=e,this._scheduleUpdate())}get opacityDither(){return this._opacityDither}set opacityFadesSpecular(e){this._opacityFadesSpecular=e,this.material&&(this.material.opacityFadesSpecular=e,this._scheduleUpdate())}get opacityFadesSpecular(){return this._opacityFadesSpecular}set opacityMap(e){this._opacityMap=e,this._setMap(e,"opacityMap")}get opacityMap(){return this._opacityMap}set opacityMapChannel(e){this._opacityMapChannel=e,this.material&&(this.material.opacityMapChannel=e,this._scheduleUpdate())}get opacityMapChannel(){return this._opacityMapChannel}set opacityMapOffset(e){this._opacityMapOffset=e,this.material&&(this.material.opacityMapOffset=e,this._scheduleUpdate())}get opacityMapOffset(){return this._opacityMapOffset}set opacityMapRotation(e){this._opacityMapRotation=e,this.material&&(this.material.opacityMapRotation=e,this._scheduleUpdate())}get opacityMapRotation(){return this._opacityMapRotation}set opacityMapTiling(e){this._opacityMapTiling=e,this.material&&(this.material.opacityMapTiling=e,this._scheduleUpdate())}get opacityMapTiling(){return this._opacityMapTiling}set opacityMapUv(e){this._opacityMapUv=e,this.material&&(this.material.opacityMapUv=e,this._scheduleUpdate())}get opacityMapUv(){return this._opacityMapUv}set roughness(e){this.gloss=e,this.glossInvert=!0}get roughness(){return this._gloss}set roughnessMap(e){this.glossMap=e,this.glossInvert=!0}get roughnessMap(){return this._glossMap}set slopeDepthBias(e){this._slopeDepthBias=e,this.material&&(this.material.slopeDepthBias=e,this._scheduleUpdate())}get slopeDepthBias(){return this._slopeDepthBias}set specular(e){this._specular=e,this.material&&(this.material.specular=e,this._scheduleUpdate())}get specular(){return this._specular}set specularityFactor(e){this._specularityFactor=e,this.material&&(this.material.specularityFactor=e,this._scheduleUpdate())}get specularityFactor(){return this._specularityFactor}set twoSidedLighting(e){this._twoSidedLighting=e,this.material&&(this.material.twoSidedLighting=e,this._scheduleUpdate())}get twoSidedLighting(){return this._twoSidedLighting}set useFog(e){this._useFog=e,this.material&&(this.material.useFog=e,this._scheduleUpdate())}get useFog(){return this._useFog}set useLighting(e){this._useLighting=e,this.material&&(this.material.useLighting=e,this._scheduleUpdate())}get useLighting(){return this._useLighting}set useMetalness(e){this._useMetalness=e,this.material&&(this.material.useMetalness=e,this._scheduleUpdate())}get useMetalness(){return this._useMetalness}set useMetalnessSpecularColor(e){this._useMetalnessSpecularColor=e,this.material&&(this.material.useMetalnessSpecularColor=e,this._scheduleUpdate())}get useMetalnessSpecularColor(){return this._useMetalnessSpecularColor}set useSkybox(e){this._useSkybox=e,this.material&&(this.material.useSkybox=e,this._scheduleUpdate())}get useSkybox(){return this._useSkybox}set useTonemap(e){this._useTonemap=e,this.material&&(this.material.useTonemap=e,this._scheduleUpdate())}get useTonemap(){return this._useTonemap}static get(e){const t=document.querySelector(`pc-material[id="${e}"]`);return t?.material}static get observedAttributes(){return["alpha-test","alpha-to-coverage","ao-intensity","ao-map","ao-map-channel","ao-map-offset","ao-map-rotation","ao-map-tiling","ao-map-uv","blend-type","bumpiness","cull","depth-bias","depth-test","depth-write","diffuse","diffuse-map","diffuse-map-channel","diffuse-map-offset","diffuse-map-rotation","diffuse-map-tiling","diffuse-map-uv","emissive","emissive-intensity","emissive-map","emissive-map-channel","emissive-map-offset","emissive-map-rotation","emissive-map-tiling","emissive-map-uv","enable-ggx-specular","fresnel-model","gloss","gloss-invert","gloss-map","gloss-map-channel","gloss-map-offset","gloss-map-rotation","gloss-map-tiling","gloss-map-uv","height-map","height-map-channel","height-map-factor","height-map-offset","height-map-rotation","height-map-tiling","height-map-uv","metalness","metalness-map","metalness-map-channel","metalness-map-offset","metalness-map-rotation","metalness-map-tiling","metalness-map-uv","name","normal-map","normal-map-offset","normal-map-rotation","normal-map-tiling","normal-map-uv","occlude-direct","occlude-specular","opacity","opacity-dither","opacity-fades-specular","opacity-map","opacity-map-channel","opacity-map-offset","opacity-map-rotation","opacity-map-tiling","opacity-map-uv","roughness","roughness-map","slope-depth-bias","specular","specularity-factor","two-sided-lighting","use-fog","use-lighting","use-metalness","use-metalness-specular-color","use-skybox","use-tonemap"]}attributeChangedCallback(e,a,s){switch(e){case"alpha-test":this.alphaTest=p(s,0,e);break;case"alpha-to-coverage":this.alphaToCoverage=c(s,!1);break;case"ao-intensity":this.aoIntensity=p(s,1,e);break;case"ao-map":this.aoMap=s??"";break;case"ao-map-channel":this.aoMapChannel=h(s,se,"g",e);break;case"ao-map-offset":this.aoMapOffset=u(s,new t.Vec2(0,0),e);break;case"ao-map-rotation":this.aoMapRotation=p(s,0,e);break;case"ao-map-tiling":this.aoMapTiling=u(s,new t.Vec2(1,1),e);break;case"ao-map-uv":this.aoMapUv=p(s,0,e);break;case"blend-type":this.blendType=h(s,Y,"none",e);break;case"bumpiness":this.bumpiness=p(s,1,e);break;case"cull":this.cull=h(s,X,"back",e);break;case"depth-bias":this.depthBias=p(s,0,e);break;case"depth-test":this.depthTest=c(s,!0);break;case"depth-write":this.depthWrite=c(s,!0);break;case"diffuse":this.diffuse=l(s,new t.Color(1,1,1),e);break;case"diffuse-map":this.diffuseMap=s??"";break;case"diffuse-map-channel":this.diffuseMapChannel=h(s,ae,"rgb",e);break;case"diffuse-map-offset":this.diffuseMapOffset=u(s,new t.Vec2(0,0),e);break;case"diffuse-map-rotation":this.diffuseMapRotation=p(s,0,e);break;case"diffuse-map-tiling":this.diffuseMapTiling=u(s,new t.Vec2(1,1),e);break;case"diffuse-map-uv":this.diffuseMapUv=p(s,0,e);break;case"emissive":this.emissive=l(s,new t.Color(0,0,0),e);break;case"emissive-intensity":this.emissiveIntensity=p(s,1,e);break;case"emissive-map":this.emissiveMap=s??"";break;case"emissive-map-channel":this.emissiveMapChannel=h(s,ae,"rgb",e);break;case"emissive-map-offset":this.emissiveMapOffset=u(s,new t.Vec2(0,0),e);break;case"emissive-map-rotation":this.emissiveMapRotation=p(s,0,e);break;case"emissive-map-tiling":this.emissiveMapTiling=u(s,new t.Vec2(1,1),e);break;case"emissive-map-uv":this.emissiveMapUv=p(s,0,e);break;case"enable-ggx-specular":this.enableGGXSpecular=c(s,!1);break;case"fresnel-model":this.fresnelModel=h(s,Z,"schlick",e);break;case"gloss":this.gloss=p(s,.25,e),this._warnGlossConflict();break;case"gloss-invert":this.glossInvert=c(s,!1),this._warnGlossConflict();break;case"gloss-map":this.glossMap=s??"",this._warnGlossConflict();break;case"gloss-map-channel":this.glossMapChannel=h(s,se,"g",e);break;case"gloss-map-offset":this.glossMapOffset=u(s,new t.Vec2(0,0),e);break;case"gloss-map-rotation":this.glossMapRotation=p(s,0,e);break;case"gloss-map-tiling":this.glossMapTiling=u(s,new t.Vec2(1,1),e);break;case"gloss-map-uv":this.glossMapUv=p(s,0,e);break;case"height-map":this.heightMap=s??"";break;case"height-map-channel":this.heightMapChannel=h(s,se,"g",e);break;case"height-map-factor":this.heightMapFactor=p(s,1,e);break;case"height-map-offset":this.heightMapOffset=u(s,new t.Vec2(0,0),e);break;case"height-map-rotation":this.heightMapRotation=p(s,0,e);break;case"height-map-tiling":this.heightMapTiling=u(s,new t.Vec2(1,1),e);break;case"height-map-uv":this.heightMapUv=p(s,0,e);break;case"metalness":this.metalness=p(s,0,e);break;case"metalness-map":this.metalnessMap=s??"";break;case"metalness-map-channel":this.metalnessMapChannel=h(s,se,"g",e);break;case"metalness-map-offset":this.metalnessMapOffset=u(s,new t.Vec2(0,0),e);break;case"metalness-map-rotation":this.metalnessMapRotation=p(s,0,e);break;case"metalness-map-tiling":this.metalnessMapTiling=u(s,new t.Vec2(1,1),e);break;case"metalness-map-uv":this.metalnessMapUv=p(s,0,e);break;case"name":this.name=s??"Untitled";break;case"normal-map":this.normalMap=s??"";break;case"normal-map-offset":this.normalMapOffset=u(s,new t.Vec2(0,0),e);break;case"normal-map-rotation":this.normalMapRotation=p(s,0,e);break;case"normal-map-tiling":this.normalMapTiling=u(s,new t.Vec2(1,1),e);break;case"normal-map-uv":this.normalMapUv=p(s,0,e);break;case"occlude-direct":this.occludeDirect=c(s,!1);break;case"occlude-specular":this.occludeSpecular=h(s,ee,"ao",e);break;case"opacity":this.opacity=p(s,1,e);break;case"opacity-dither":this.opacityDither=h(s,te,"none",e);break;case"opacity-fades-specular":this.opacityFadesSpecular=c(s,!0);break;case"opacity-map":this.opacityMap=s??"";break;case"opacity-map-channel":this.opacityMapChannel=h(s,se,"a",e);break;case"opacity-map-offset":this.opacityMapOffset=u(s,new t.Vec2(0,0),e);break;case"opacity-map-rotation":this.opacityMapRotation=p(s,0,e);break;case"opacity-map-tiling":this.opacityMapTiling=u(s,new t.Vec2(1,1),e);break;case"opacity-map-uv":this.opacityMapUv=p(s,0,e);break;case"roughness":this.gloss=p(s,.25,e),this.glossInvert=null!==s,this._warnGlossConflict();break;case"roughness-map":this.glossMap=s??"",this.glossInvert=null!==s,this._warnGlossConflict();break;case"slope-depth-bias":this.slopeDepthBias=p(s,0,e);break;case"specular":this.specular=l(s,new t.Color(0,0,0),e);break;case"specularity-factor":this.specularityFactor=p(s,1,e);break;case"two-sided-lighting":this.twoSidedLighting=c(s,!1);break;case"use-fog":this.useFog=c(s,!0);break;case"use-lighting":this.useLighting=c(s,!0);break;case"use-metalness":this.useMetalness=c(s,!0);break;case"use-metalness-specular-color":this.useMetalnessSpecularColor=c(s,!1);break;case"use-skybox":this.useSkybox=c(s,!0);break;case"use-tonemap":this.useTonemap=c(s,!0)}}}customElements.define("pc-material",oe);class re extends L{_castShadows=!0;_material="";_receiveShadows=!0;_type="box";constructor(){super("render")}getInitialComponentData(){return{type:this._type,castShadows:this._castShadows,material:oe.get(this._material),receiveShadows:this._receiveShadows}}get component(){return super.component}set type(e){this._type=e,this.component&&(this.component.type=e)}get type(){return this._type}set castShadows(e){this._castShadows=e,this.component&&(this.component.castShadows=e)}get castShadows(){return this._castShadows}set material(e){this._material=e;const t=oe.get(e);this.component&&t&&(this.component.material=t)}get material(){return this._material}set receiveShadows(e){this._receiveShadows=e,this.component&&(this.component.receiveShadows=e)}get receiveShadows(){return this._receiveShadows}static get observedAttributes(){return[...super.observedAttributes,"cast-shadows","material","receive-shadows","type"]}attributeChangedCallback(e,t,a){switch(super.attributeChangedCallback(e,t,a),e){case"cast-shadows":this.castShadows=c(a,!0);break;case"material":this.material=a??"";break;case"receive-shadows":this.receiveShadows=c(a,!0);break;case"type":this.type=h(a,["box","capsule","cone","cylinder","plane","sphere"],"box",e)}}}customElements.define("pc-render",re);class ce extends L{_angularDamping=0;_angularFactor=new t.Vec3(1,1,1);_friction=.5;_linearDamping=0;_linearFactor=new t.Vec3(1,1,1);_mass=1;_restitution=0;_rollingFriction=0;_type="static";constructor(){super("rigidbody")}getInitialComponentData(){return{angularDamping:this._angularDamping,angularFactor:this._angularFactor,friction:this._friction,linearDamping:this._linearDamping,linearFactor:this._linearFactor,mass:this._mass,restitution:this._restitution,rollingFriction:this._rollingFriction,type:this._type}}get component(){return super.component}set angularDamping(e){this._angularDamping=e,this.component&&(this.component.angularDamping=e)}get angularDamping(){return this._angularDamping}set angularFactor(e){this._angularFactor=e,this.component&&(this.component.angularFactor=e)}get angularFactor(){return this._angularFactor}set friction(e){this._friction=e,this.component&&(this.component.friction=e)}get friction(){return this._friction}set linearDamping(e){this._linearDamping=e,this.component&&(this.component.linearDamping=e)}get linearDamping(){return this._linearDamping}set linearFactor(e){this._linearFactor=e,this.component&&(this.component.linearFactor=e)}get linearFactor(){return this._linearFactor}set mass(e){this._mass=e,this.component&&(this.component.mass=e)}get mass(){return this._mass}set restitution(e){this._restitution=e,this.component&&(this.component.restitution=e)}get restitution(){return this._restitution}set rollingFriction(e){this._rollingFriction=e,this.component&&(this.component.rollingFriction=e)}get rollingFriction(){return this._rollingFriction}set type(e){this._type=e,this.component&&(this.component.type=e)}get type(){return this._type}static get observedAttributes(){return[...super.observedAttributes,"angular-damping","angular-factor","friction","linear-damping","linear-factor","mass","restitution","rolling-friction","type"]}attributeChangedCallback(e,a,s){switch(super.attributeChangedCallback(e,a,s),e){case"angular-damping":this.angularDamping=p(s,0,e);break;case"angular-factor":this.angularFactor=m(s,t.Vec3.ONE,e);break;case"friction":this.friction=p(s,.5,e);break;case"linear-damping":this.linearDamping=p(s,0,e);break;case"linear-factor":this.linearFactor=m(s,t.Vec3.ONE,e);break;case"mass":this.mass=p(s,1,e);break;case"restitution":this.restitution=p(s,0,e);break;case"rolling-friction":this.rollingFriction=p(s,0,e);break;case"type":this.type=h(s,["static","dynamic","kinematic"],"static",e)}}}customElements.define("pc-rigidbody",ce);const le=new Map([["none",t.SCALEMODE_NONE],["blend",t.SCALEMODE_BLEND]]);class he extends L{_screenSpace=!1;_resolution=new t.Vec2(640,320);_referenceResolution=new t.Vec2(640,320);_priority=0;_scaleMode="none";_scaleBlend=.5;constructor(){super("screen")}getInitialComponentData(){return{priority:this._priority,referenceResolution:this._referenceResolution,resolution:this._resolution,scaleBlend:this._scaleBlend,scaleMode:le.get(this._scaleMode)??t.SCALEMODE_NONE,screenSpace:this._screenSpace}}get component(){return super.component}set priority(e){this._priority=e,this.component&&(this.component.priority=this._priority)}get priority(){return this._priority}set referenceResolution(e){this._referenceResolution=e,this.component&&(this.component.referenceResolution=this._referenceResolution)}get referenceResolution(){return this._referenceResolution}set resolution(e){this._resolution=e,this.component&&(this.component.resolution=this._resolution)}get resolution(){return this._resolution}set scaleBlend(e){this._scaleBlend=e,this.component&&(this.component.scaleBlend=this._scaleBlend)}get scaleBlend(){return this._scaleBlend}set scaleMode(e){this._scaleMode=e,this.component&&(this.component.scaleMode=le.get(e)??t.SCALEMODE_NONE)}get scaleMode(){return this._scaleMode}set screenSpace(e){this._screenSpace=e,this.component&&(this.component.screenSpace=this._screenSpace)}get screenSpace(){return this._screenSpace}static get observedAttributes(){return[...super.observedAttributes,"screen-space","resolution","reference-resolution","priority","scale-blend","scale-mode"]}attributeChangedCallback(e,a,s){switch(super.attributeChangedCallback(e,a,s),e){case"priority":this.priority=p(s,0,e);break;case"reference-resolution":this.referenceResolution=u(s,new t.Vec2(640,320),e);break;case"resolution":this.resolution=u(s,new t.Vec2(640,320),e);break;case"scale-blend":this.scaleBlend=p(s,.5,e);break;case"scale-mode":this.scaleMode=h(s,le,"none",e);break;case"screen-space":this.screenSpace=c(s,!1)}}}customElements.define("pc-screen",he);const pe=new Map([["horizontal",t.ORIENTATION_HORIZONTAL],["vertical",t.ORIENTATION_VERTICAL]]);class be extends L{_orientation="horizontal";_value=0;_handleSize=.5;_handle="";constructor(){super("scrollbar")}getInitialComponentData(){const e={orientation:pe.get(this._orientation),value:this._value,handleSize:this._handleSize},t=f(this._handle);return t&&(e.handleEntity=t),e}get component(){return super.component}set orientation(e){this._orientation=e,this.component&&(this.component.orientation=pe.get(e)??t.ORIENTATION_HORIZONTAL)}get orientation(){return this._orientation}set value(e){this._value=e,this.component&&(this.component.value=e)}get value(){return this._value}set handleSize(e){this._handleSize=e,this.component&&(this.component.handleSize=e)}get handleSize(){return this._handleSize}set handle(e){this._handle=e;const t=f(e);this.component&&t&&(this.component.handleEntity=t)}get handle(){return this._handle}static get observedAttributes(){return[...super.observedAttributes,"orientation","value","handle-size","handle"]}attributeChangedCallback(e,t,a){switch(super.attributeChangedCallback(e,t,a),e){case"orientation":this.orientation=h(a,pe,"horizontal",e);break;case"value":this.value=p(a,0,e);break;case"handle-size":this.handleSize=p(a,.5,e);break;case"handle":this.handle=a??""}}}customElements.define("pc-scrollbar",be);const de=new Map([["clamp",t.SCROLL_MODE_CLAMP],["bounce",t.SCROLL_MODE_BOUNCE],["infinite",t.SCROLL_MODE_INFINITE]]),ue=new Map([["always",t.SCROLLBAR_VISIBILITY_SHOW_ALWAYS],["when-required",t.SCROLLBAR_VISIBILITY_SHOW_WHEN_REQUIRED]]);class me extends L{_horizontal=!0;_vertical=!0;_scrollMode="bounce";_bounceAmount=.1;_friction=.05;_useMouseWheel=!0;_mouseWheelSensitivity=new t.Vec2(1,1);_horizontalScrollbarVisibility="when-required";_verticalScrollbarVisibility="when-required";_viewport="";_content="";_horizontalScrollbar="";_verticalScrollbar="";constructor(){super("scrollview")}getInitialComponentData(){const e={horizontal:this._horizontal,vertical:this._vertical,scrollMode:de.get(this._scrollMode),bounceAmount:this._bounceAmount,friction:this._friction,useMouseWheel:this._useMouseWheel,mouseWheelSensitivity:this._mouseWheelSensitivity,horizontalScrollbarVisibility:ue.get(this._horizontalScrollbarVisibility),verticalScrollbarVisibility:ue.get(this._verticalScrollbarVisibility)},t=f(this._viewport);t&&(e.viewportEntity=t);const a=f(this._content);a&&(e.contentEntity=a);const s=f(this._horizontalScrollbar);s&&(e.horizontalScrollbarEntity=s);const i=f(this._verticalScrollbar);return i&&(e.verticalScrollbarEntity=i),e}get component(){return super.component}set horizontal(e){this._horizontal=e,this.component&&(this.component.horizontal=e)}get horizontal(){return this._horizontal}set vertical(e){this._vertical=e,this.component&&(this.component.vertical=e)}get vertical(){return this._vertical}set scrollMode(e){this._scrollMode=e,this.component&&(this.component.scrollMode=de.get(e)??t.SCROLL_MODE_BOUNCE)}get scrollMode(){return this._scrollMode}set bounceAmount(e){this._bounceAmount=e,this.component&&(this.component.bounceAmount=e)}get bounceAmount(){return this._bounceAmount}set friction(e){this._friction=e,this.component&&(this.component.friction=e)}get friction(){return this._friction}set useMouseWheel(e){this._useMouseWheel=e,this.component&&(this.component.useMouseWheel=e)}get useMouseWheel(){return this._useMouseWheel}set mouseWheelSensitivity(e){this._mouseWheelSensitivity=e,this.component&&(this.component.mouseWheelSensitivity=e)}get mouseWheelSensitivity(){return this._mouseWheelSensitivity}set horizontalScrollbarVisibility(e){this._horizontalScrollbarVisibility=e,this.component&&(this.component.horizontalScrollbarVisibility=ue.get(e)??t.SCROLLBAR_VISIBILITY_SHOW_WHEN_REQUIRED)}get horizontalScrollbarVisibility(){return this._horizontalScrollbarVisibility}set verticalScrollbarVisibility(e){this._verticalScrollbarVisibility=e,this.component&&(this.component.verticalScrollbarVisibility=ue.get(e)??t.SCROLLBAR_VISIBILITY_SHOW_WHEN_REQUIRED)}get verticalScrollbarVisibility(){return this._verticalScrollbarVisibility}set viewport(e){this._viewport=e;const t=f(e);this.component&&t&&(this.component.viewportEntity=t)}get viewport(){return this._viewport}set content(e){this._content=e;const t=f(e);this.component&&t&&(this.component.contentEntity=t)}get content(){return this._content}set horizontalScrollbar(e){this._horizontalScrollbar=e;const t=f(e);this.component&&t&&(this.component.horizontalScrollbarEntity=t)}get horizontalScrollbar(){return this._horizontalScrollbar}set verticalScrollbar(e){this._verticalScrollbar=e;const t=f(e);this.component&&t&&(this.component.verticalScrollbarEntity=t)}get verticalScrollbar(){return this._verticalScrollbar}static get observedAttributes(){return[...super.observedAttributes,"horizontal","vertical","scroll-mode","bounce-amount","friction","use-mouse-wheel","mouse-wheel-sensitivity","horizontal-scrollbar-visibility","vertical-scrollbar-visibility","viewport","content","horizontal-scrollbar","vertical-scrollbar"]}attributeChangedCallback(e,a,s){switch(super.attributeChangedCallback(e,a,s),e){case"horizontal":this.horizontal=c(s,!0);break;case"vertical":this.vertical=c(s,!0);break;case"scroll-mode":this.scrollMode=h(s,de,"bounce",e);break;case"bounce-amount":this.bounceAmount=p(s,.1,e);break;case"friction":this.friction=p(s,.05,e);break;case"use-mouse-wheel":this.useMouseWheel=c(s,!0);break;case"mouse-wheel-sensitivity":this.mouseWheelSensitivity=u(s,t.Vec2.ONE,e);break;case"horizontal-scrollbar-visibility":this.horizontalScrollbarVisibility=h(s,ue,"when-required",e);break;case"vertical-scrollbar-visibility":this.verticalScrollbarVisibility=h(s,ue,"when-required",e);break;case"viewport":this.viewport=s??"";break;case"content":this.content=s??"";break;case"horizontal-scrollbar":this.horizontalScrollbar=s??"";break;case"vertical-scrollbar":this.verticalScrollbar=s??""}}}customElements.define("pc-scrollview",me);class ge extends a{_attributes={};_enabled=!0;_script=null;set scriptAttributes(e){this._attributes=e??{},this.dispatchEvent(new CustomEvent("scriptattributeschange",{detail:{attributes:this._attributes},bubbles:!0}))}get scriptAttributes(){return this._attributes}set enabled(e){this._enabled=e,this.dispatchEvent(new CustomEvent("scriptenablechange",{detail:{enabled:e},bubbles:!0}))}get enabled(){return this._enabled}set name(e){this.setAttribute("name",e)}get name(){return this.getAttribute("name")??""}get script(){return this._script}connectedCallback(){"PC-SCRIPTS"!==this.parentElement?.tagName&&console.warn(`pc-script '${this.getAttribute("name")}' must be a direct child of pc-scripts - script not created`)}disconnectedCallback(){this._resetReady()}_onScriptCreated(){this._onReady()}static get observedAttributes(){return["attributes","enabled","name"]}attributeChangedCallback(e,t,a){switch(e){case"attributes":if(null===a){this.scriptAttributes={};break}try{this.scriptAttributes=JSON.parse(a)}catch(e){console.warn(`Invalid 'attributes' JSON on pc-script '${this.getAttribute("name")}': ${e.message}`)}break;case"enabled":this.enabled=c(a,!0);break;case"name":null!==t&&t!==a&&this.dispatchEvent(new CustomEvent("scriptnamechange",{detail:{oldName:t,newName:a},bubbles:!0}))}}}customElements.define("pc-script",ge);const fe=new Set([...ge.observedAttributes,"accesskey","autocapitalize","autofocus","class","contenteditable","dir","draggable","exportparts","hidden","id","inert","is","itemid","itemprop","itemref","itemscope","itemtype","lang","nonce","part","popover","role","slot","spellcheck","style","tabindex","title","translate"]),_e=e=>fe.has(e)||e.startsWith("data-")||e.startsWith("aria-")||e.startsWith("_")||e.startsWith("on")&&e in HTMLElement.prototype,ve=new Set(["app","entity","destroy","initialize","postInitialize","postUpdate","swap","update"]),ye=e=>e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase()),ke=(e,t)=>(a,s)=>{const i=o(a,e);return i?new t(i):(console.warn(`Invalid script attribute value '${s}'. Expected ${e} space-separated numbers after 'vec${e}:'.`),s)},we=new Map([["asset",(e,t)=>{const a=P(e);return a||(console.warn(`Unable to resolve '${t}' in script attributes - no pc-asset found with id '${e}'.`),t)}],["entity",(e,t)=>{const a=f(e);return a||(console.warn(`Unable to resolve '${t}' in script attributes - no pc-entity found matching '${e}'.`),t)}],["vec2",ke(2,t.Vec2)],["vec3",ke(3,t.Vec3)],["vec4",ke(4,t.Vec4)],["color",(e,a)=>{const s=o(e,4)??o(e,3);return s?new t.Color(s):(console.warn(`Invalid script attribute value '${a}'. Expected 3 or 4 space-separated numbers after 'color:'.`),a)}]]),Me=e=>{const t=e.indexOf(":");if(t<=0)return null;const a=we.get(e.slice(0,t));return a?{convert:a,rest:e.slice(t+1)}:null};class Se extends L{observer;constructor(){super("script"),this.observer=new MutationObserver(this.handleMutations.bind(this)),this.addEventListener("scriptattributeschange",this.handleScriptAttributesChange.bind(this)),this.addEventListener("scriptenablechange",this.handleScriptEnableChange.bind(this)),this.addEventListener("scriptnamechange",this.handleScriptNameChange.bind(this))}connectedCallback(){return this.observer.observe(this,{childList:!0,subtree:!0,attributes:!0}),super.connectedCallback()}initComponent(){this.querySelectorAll(":scope > pc-script").forEach(e=>{this.createScript(e)})}convertAttributes(e){if("string"==typeof e){const t=Me(e);return t?t.convert(t.rest,e):e}if(Array.isArray(e))return e.map(e=>this.convertAttributes(e));if(e&&"object"==typeof e){const t={};for(const a in e)t[a]=this.convertAttributes(e[a]);return t}return e}mergeDeep(e,t){for(const a in t){const s=t[a],i=e[a];if(this.isMathType(i)&&Array.isArray(s)){const t=this.arrayToMathType(i,s,a);t&&(e[a]=t);continue}s&&"object"==typeof s&&!Array.isArray(s)&&Object.getPrototypeOf(s)===Object.prototype?(i&&"object"==typeof i||(e[a]={}),this.mergeDeep(e[a],s)):e[a]=s}return e}isMathType(e){return e instanceof t.Vec2||e instanceof t.Vec3||e instanceof t.Vec4||e instanceof t.Color||e instanceof t.Quat}arrayToMathType(e,a,s){if(a.every(e=>"number"==typeof e&&Number.isFinite(e))){if(e instanceof t.Vec2&&2===a.length)return new t.Vec2(a);if(e instanceof t.Vec3&&3===a.length)return new t.Vec3(a);if(e instanceof t.Vec4&&4===a.length)return new t.Vec4(a);if(e instanceof t.Color&&(3===a.length||4===a.length))return new t.Color(a);if(e instanceof t.Quat&&3===a.length)return(new t.Quat).setFromEulerAngles(a[0],a[1],a[2])}return console.warn(`Cannot convert script attribute '${s}' array [${a}] to ${e.constructor.name}. Keeping the current value.`),null}applyAttributes(e,t,a){const s=this.convertAttributes(t);if(s&&"object"==typeof s&&(delete s.enabled,a))for(const e of a)delete s[e];this.mergeDeep(e,s)}inlineKeys(e){const t=new Set;for(const a of Array.from(e.attributes))_e(a.name)||t.add(ye(a.name));return t}scriptFor(e){const t=e.getAttribute("name");if(!t||!this.component)return null;const a=this.component.get(t);return a&&a===e._script?a:null}handleScriptAttributesChange(e){const t=e.target,a=this.scriptFor(t);a&&this.applyAttributes(a,e.detail.attributes,this.inlineKeys(t))}handleScriptEnableChange(e){const t=e.target;this.handleMutations(this.observer.takeRecords());const a=this.scriptFor(t);a&&(a.enabled=e.detail.enabled)}handleScriptNameChange(e){const t=e.target;if(t.parentElement!==this)return;if(!this.component)return;const{oldName:a}=e.detail;a&&t._script&&this.component.get(a)===t._script&&this.destroyScript(a),t._script=null,this.createScript(t)}createScript(e){const t=e.getAttribute("name");if(!t||!this.component)return null;const a=this.component.create(t,{enabled:!1});return a?(e._script=a,this.applyAttributes(a,e.scriptAttributes,this.inlineKeys(e)),this.applyInlineAttributes(a,e),a.enabled=e.enabled,e._onScriptCreated(),a):null}applyInlineAttributes(e,t){const a=t.getAttribute("name")??"";for(const s of Array.from(t.attributes))_e(s.name)||this.setScriptProperty(e,a,s.name,s.value)}applyScriptProperty(e,t){const a=this.scriptFor(e);if(!a)return;const s=e.getAttribute(t);if(null===s){const s=ye(t),i=e.scriptAttributes[s];return void(void 0!==i&&this.applyAttributes(a,{[s]:i}))}this.setScriptProperty(a,e.getAttribute("name")??"",t,s)}setScriptProperty(e,a,s,i){const n=ye(s);try{const r=e[n];if("function"==typeof r||ve.has(n))return void console.warn(`Ignoring attribute '${s}' on pc-script '${a}' - '${n}' is part of the Script API.`);if("string"==typeof r)e[n]=i;else if(Me(i)){const t=this.convertAttributes(i);t===i&&null!=r||(e[n]=t)}else if("number"==typeof r)e[n]=p(i,r,s);else if("boolean"==typeof r)e[n]=c(i,r);else if(r instanceof t.Vec2)e[n]=u(i,r,s);else if(r instanceof t.Vec3)e[n]=m(i,r,s);else if(r instanceof t.Vec4)e[n]=g(i,r,s);else if(r instanceof t.Color)e[n]=l(i,r,s);else if(r instanceof t.Quat)e[n]=b(i,r,s);else{const t=((e,t)=>{const a=new Set(Object.keys(e));for(const t of Object.getOwnPropertyNames(Object.getPrototypeOf(e)))a.add(t);for(const e of a)if(e!==t&&e.toLowerCase()===t.toLowerCase())return e;return null})(e,n);if(t)return void console.warn(`Script '${a}' has no attribute '${n}' - did you mean '${o=t,o.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}'? Attribute names are kebab-case.`);console.warn(`Script '${a}' has no typed attribute '${n}' - assigning the raw string from '${s}'.`),e[n]=i}}catch(e){console.warn(`Error applying attribute '${s}' to script '${a}': ${e.message}`)}var o}destroyScript(e){this.component&&this.component.destroy(e)}handleMutations(e){for(const t of e){if("attributes"===t.type){const e=t.target;e instanceof ge&&e.parentElement===this&&t.attributeName&&!_e(t.attributeName)&&this.applyScriptProperty(e,t.attributeName);continue}t.target===this&&(t.removedNodes.forEach(e=>{if(e instanceof ge){const t=e.getAttribute("name");t&&e._script&&this.component&&this.component.get(t)===e._script&&this.destroyScript(t),e._script=null}}),t.addedNodes.forEach(e=>{e instanceof ge&&this.createScript(e)}))}}disconnectedCallback(){this.observer.disconnect(),super.disconnectedCallback?.()}get component(){return super.component}}customElements.define("pc-scripts",Se);class Ce extends L{_distanceModel="linear";_maxDistance=1e4;_pitch=1;_positional=!1;_refDistance=1;_rollOffFactor=1;_volume=1;constructor(){super("sound")}getInitialComponentData(){return{distanceModel:this._distanceModel,maxDistance:this._maxDistance,pitch:this._pitch,positional:this._positional,refDistance:this._refDistance,rollOffFactor:this._rollOffFactor,volume:this._volume}}get component(){return super.component}set distanceModel(e){this._distanceModel=e,this.component&&(this.component.distanceModel=e)}get distanceModel(){return this._distanceModel}set maxDistance(e){this._maxDistance=e,this.component&&(this.component.maxDistance=e)}get maxDistance(){return this._maxDistance}set pitch(e){this._pitch=e,this.component&&(this.component.pitch=e)}get pitch(){return this._pitch}set positional(e){this._positional=e,this.component&&(this.component.positional=e)}get positional(){return this._positional}set refDistance(e){this._refDistance=e,this.component&&(this.component.refDistance=e)}get refDistance(){return this._refDistance}set rollOffFactor(e){this._rollOffFactor=e,this.component&&(this.component.rollOffFactor=e)}get rollOffFactor(){return this._rollOffFactor}set volume(e){this._volume=e,this.component&&(this.component.volume=e)}get volume(){return this._volume}static get observedAttributes(){return[...super.observedAttributes,"distance-model","max-distance","pitch","positional","ref-distance","roll-off-factor","volume"]}attributeChangedCallback(e,t,a){switch(super.attributeChangedCallback(e,t,a),e){case"distance-model":this.distanceModel=h(a,["exponential","inverse","linear"],"linear",e);break;case"max-distance":this.maxDistance=p(a,1e4,e);break;case"pitch":this.pitch=p(a,1,e);break;case"positional":this.positional=c(a,!1);break;case"ref-distance":this.refDistance=p(a,1,e);break;case"roll-off-factor":this.rollOffFactor=p(a,1,e);break;case"volume":this.volume=p(a,1,e)}}}customElements.define("pc-sounds",Ce);class Ee extends a{_asset="";_autoPlay=!1;_duration=null;_loop=!1;_name="";_overlap=!1;_pitch=1;_startTime=0;_volume=1;_soundElement=null;_connectionGeneration=0;soundSlot=null;async connectedCallback(){const e=++this._connectionGeneration,t=this.soundElement;await(t?.ready());const a=t?.component;if(e!==this._connectionGeneration||!a)return;const s={autoPlay:this._autoPlay,loop:this._loop,overlap:this._overlap,pitch:this._pitch,startTime:this._startTime,volume:this._volume};this._duration&&(s.duration=this._duration),this._soundElement=t,this.soundSlot=a.addSlot(this._name,s),this.asset=this._asset,this._autoPlay&&this.soundSlot.play(),this._onReady()}disconnectedCallback(){this._connectionGeneration++,this._soundElement?.component?.removeSlot(this._name),this._soundElement=null,this.soundSlot=null,this._resetReady()}get soundElement(){const e=this.parentElement;return e instanceof Ce?e:(console.warn("pc-sound must be a direct child of a pc-sounds element"),null)}set asset(e){if(this._asset=e,this.soundSlot){const t=P(e)?.id;t&&(this.soundSlot.asset=t)}}get asset(){return this._asset}set autoPlay(e){this._autoPlay=e,this.soundSlot&&(this.soundSlot.autoPlay=e)}get autoPlay(){return this._autoPlay}set duration(e){this._duration=e,this.soundSlot&&null!==e&&(this.soundSlot.duration=e)}get duration(){return this._duration}set loop(e){this._loop=e,this.soundSlot&&(this.soundSlot.loop=e)}get loop(){return this._loop}set name(e){this._name=e,this.soundSlot&&(this.soundSlot.name=e)}get name(){return this._name}set overlap(e){this._overlap=e,this.soundSlot&&(this.soundSlot.overlap=e)}get overlap(){return this._overlap}set pitch(e){this._pitch=e,this.soundSlot&&(this.soundSlot.pitch=e)}get pitch(){return this._pitch}set startTime(e){this._startTime=e,this.soundSlot&&(this.soundSlot.startTime=e)}get startTime(){return this._startTime}set volume(e){this._volume=e,this.soundSlot&&(this.soundSlot.volume=e)}get volume(){return this._volume}static get observedAttributes(){return["asset","auto-play","duration","loop","name","overlap","pitch","start-time","volume"]}attributeChangedCallback(e,t,a){switch(e){case"asset":this.asset=a??"";break;case"auto-play":this.autoPlay=c(a,!1);break;case"duration":this.duration=p(a,null,e);break;case"loop":this.loop=c(a,!1);break;case"name":this.name=a??"";break;case"overlap":this.overlap=c(a,!1);break;case"pitch":this.pitch=p(a,1,e);break;case"start-time":this.startTime=p(a,0,e);break;case"volume":this.volume=p(a,1,e)}}}customElements.define("pc-sound",Ee);class xe extends L{_asset="";_castShadows=!1;_lodBaseDistance=5;_lodMultiplier=3;_lodRangeMin=0;_lodRangeMax=99;constructor(){super("gsplat")}getInitialComponentData(){return{asset:P(this._asset),castShadows:this._castShadows,lodBaseDistance:this._lodBaseDistance,lodMultiplier:this._lodMultiplier,lodRangeMin:this._lodRangeMin,lodRangeMax:this._lodRangeMax}}get component(){return super.component}set asset(e){this._asset=e;const t=P(e);this.component&&t&&(this.component.asset=t)}get asset(){return this._asset}set castShadows(e){this._castShadows=e,this.component&&(this.component.castShadows=e)}get castShadows(){return this._castShadows}set lodBaseDistance(e){this._lodBaseDistance=e,this.component&&(this.component.lodBaseDistance=e)}get lodBaseDistance(){return this._lodBaseDistance}set lodMultiplier(e){this._lodMultiplier=e,this.component&&(this.component.lodMultiplier=e)}get lodMultiplier(){return this._lodMultiplier}set lodRangeMin(e){this._lodRangeMin=e,this.component&&(this.component.lodRangeMin=e)}get lodRangeMin(){return this._lodRangeMin}set lodRangeMax(e){this._lodRangeMax=e,this.component&&(this.component.lodRangeMax=e)}get lodRangeMax(){return this._lodRangeMax}static get observedAttributes(){return[...super.observedAttributes,"asset","cast-shadows","lod-base-distance","lod-multiplier","lod-range-min","lod-range-max"]}attributeChangedCallback(e,t,a){switch(super.attributeChangedCallback(e,t,a),e){case"asset":this.asset=a??"";break;case"cast-shadows":this.castShadows=c(a,!1);break;case"lod-base-distance":this.lodBaseDistance=p(a,5,e);break;case"lod-multiplier":this.lodMultiplier=p(a,3,e);break;case"lod-range-min":this.lodRangeMin=p(a,0,e);break;case"lod-range-max":this.lodRangeMax=p(a,99,e)}}}customElements.define("pc-gsplat",xe);const Ae=(e,t)=>{const a=(t.get(e.name)??0)>1?` [${e.index}]`:"",s=e.components.length>0?` (${e.components.join(", ")})`:"",i=e.materials.length>0?` {${e.materials.map(e=>e.name??"null").join(", ")}}`:"";return`${e.name}${a}${s}${i}`};class Fe extends a{_asset="";_entity=null;_loadGeneration=0;_loadHandle=null;_errorHandle=null;get entity(){return this._entity}hierarchy(){const e=this._entity;if(!e)return null;const t=new Map,a=(e,s)=>{const i=t.get(e.name)??0;t.set(e.name,i+1);const n={name:e.name,path:s||e.name,index:i,components:Object.keys(e.c??{}).sort(),materials:(e.render?.meshInstances??[]).map((e,t)=>({index:t,name:e.material?.name??null})),children:e.children.map(e=>a(e,s?`${s}/${e.name}`:e.name))};return Object.defineProperty(n,"toString",{enumerable:!1,value:()=>((e,t)=>{const a=[Ae(e,t)],s=(e,i)=>{e.children.forEach((n,o)=>{const r=o===e.children.length-1;a.push(`${i}${r?"└─ ":"├─ "}${Ae(n,t)}`),s(n,`${i}${r?" ":"│ "}`)})};return s(e,""),a.join("\n")})(n,t)}),n};return a(e,"")}connectedCallback(){if(!this.closestApp){const e=this._asset?` '${this._asset}'`:"";return void console.warn(`pc-model${e} must be a descendant of pc-app - model not created`)}this._loadModel()}disconnectedCallback(){this._loadGeneration++,this._detachLoadHandlers(),this._unloadModel(),this._resetReady()}_detachLoadHandlers(){this._loadHandle?.off(),this._loadHandle=null,this._errorHandle?.off(),this._errorHandle=null}_announceLoad(){this._onReady(),this.dispatchEvent(new Event("load"))}_instantiate(e){const t=this._loadGeneration,a=e.instantiateRenderEntity();this._entity=a,e.animations.length>0&&(a.addComponent("anim"),a.anim.assignAnimation("animation",e.animations[0].resource));const s=this.closestEntity;if(s)s.ready().then(()=>{t===this._loadGeneration&&(s.entity.addChild(a),this._announceLoad())});else{const e=this.closestApp;e&&e.ready().then(()=>{t===this._loadGeneration&&(e.app.root.addChild(a),this._announceLoad())})}}async _loadModel(){this._unloadModel();const e=++this._loadGeneration;this._detachLoadHandlers(),this._resetReady();const t=this.closestApp;if(!t)return;if(await t.ready(),e!==this._loadGeneration)return;const a=P(this._asset);a?a.loaded?this._instantiate(a.resource):(this._loadHandle=a.once("load",()=>{this._detachLoadHandlers(),e===this._loadGeneration&&this._instantiate(a.resource)}),this._errorHandle=a.once("error",t=>{this._detachLoadHandlers(),e===this._loadGeneration&&(this.dispatchEvent(new ErrorEvent("error",{message:t instanceof Error?t.message:String(t)})),this._onReady())})):this._asset&&console.warn(`pc-model could not find asset '${this._asset}' - model not created`)}_unloadModel(){this._entity?.destroy(),this._entity=null}set asset(e){this._asset=e,this.isConnected&&this._loadModel()}get asset(){return this._asset}static get observedAttributes(){return["asset"]}attributeChangedCallback(e,t,a){if("asset"===e)this.asset=a??""}}customElements.define("pc-model",Fe);class Re extends k{_name="";_index=null;_state="pending";_path=null;_host=null;_hostListener=null;_destroyHandle=null;_authored={};_authoredRender=null;_baseline=null;_enabled=null;_position=null;_rotation=null;_scale=null;_tags=null;_materialOverrides=null;get state(){return this._state}get path(){return this._path}connectedCallback(){const e=this.parentElement?.closest("pc-model, pc-node")??null;if(!e){const e=this._name?` '${this._name}'`:"";return void console.warn(`pc-node${e} must be a descendant of pc-model - node not bound`)}this._host=e,this._hostListener=e=>{e.target===this._host&&this._rebind()},e.addEventListener("ready",this._hostListener),this._rebind()}disconnectedCallback(){this._host&&this._hostListener&&this._host.removeEventListener("ready",this._hostListener),this._host=null,this._hostListener=null,this._unbind(),this._state="pending"}_rebind(){const e=this._host?.entity??null;if(!e||!this._name)return this._unbind(),void(this._state="pending");const t=this._resolve(e);t&&t===this._entity?this._path=this._pathOf(t,e):(this._unbind(),t&&this._bind(t,e))}_resolve(e){const t=e.find(e=>e.name===this._name);if(0===t.length){const t=this._closestName(e),a=t?` - closest match: '${t}'`:"";return console.warn(`pc-node '${this._name}' not found in ${this._describeHost()}${a}`),this._state="missing",null}let a;if(null!==this._index){if(this._index>=t.length)return console.warn(`pc-node '${this._name}' index ${this._index} is out of range - ${t.length} match(es) in ${this._describeHost()}`),this._state="missing",null;a=t[this._index]}else{if(t.length>1){const a=t.map((t,a)=>`[${a}] ${this._pathOf(t,e)}`).join(", ");return console.warn(`pc-node '${this._name}' is ambiguous in ${this._describeHost()} - specify index: ${a}`),this._state="ambiguous",null}a=t[0]}const s=this.closestApp?.elementFromEntity(a);return s&&s!==this?(console.warn(`pc-node '${this._name}' resolves to a node already bound by another element - element ignored`),this._state="duplicate",null):a}_bind(e,t){this._entity=e,this._registerEntity(e),this._destroyHandle=e.once("destroy",this._onEntityDestroy,this),this._state="bound",this._path=this._pathOf(e,t),this._authoredRender=e.render??null,this._applyOverrides(),this._onReady(),this._buildChildren()}_unbind(){const e=this._entity;e&&(this._revertOverrides(),this.querySelectorAll("pc-entity").forEach(e=>{e.closestEntity===this&&e.entity?.destroy()}),this._destroyHandle?.off(),this._destroyHandle=null,this._unregisterEntity(e),this._entity=null,this._path=null,this._authored={},this._authoredRender=null,this.querySelectorAll("*").forEach(e=>{e instanceof L&&e.closestEntity===this&&e._hostCycled()}),this._resetReady())}_onEntityDestroy(e){this._destroyHandle=null,this._unregisterEntity(e),this._entity=null,this._path=null,this._authored={},this._authoredRender=null,this._baseline=null,this._state="pending",this._resetReady()}_buildChildren(){const e=this.closestApp?.app;if(!e)return;const t=this.querySelectorAll("pc-entity");t.forEach(t=>{t._createEntity(e)}),t.forEach(t=>{t._buildHierarchy(e)})}_applyOverrides(){null!==this._enabled&&(this.enabled=this._enabled),null!==this._position&&(this.position=this._position),null!==this._rotation&&(this.rotation=this._rotation),null!==this._scale&&(this.scale=this._scale),null!==this._tags&&(this.tags=this._tags),null!==this._materialOverrides&&this._applyMaterialOverrides()}_revertOverrides(){const e=this._entity,t=this._authored;void 0!==t.enabled&&(e.enabled=t.enabled),t.position&&e.setLocalPosition(t.position),t.rotation&&e.setLocalRotation(t.rotation),t.scale&&e.setLocalScale(t.scale),t.tags&&(e.tags.clear(),e.tags.add(t.tags)),this._authored={},this._restoreBaseline()}_applyMaterialOverrides(){const e=`pc-node '${this._name}'`,t=this._materialOverrides?((e,t)=>{const a=[];for(const[s,i]of Object.entries(e))if("string"!=typeof i||""===i)console.warn(`${t} material-overrides '${s}' needs a pc-material id - rule ignored`);else if(s.startsWith("name:")){const e=s.slice(5);""===e?console.warn(`${t} material-overrides 'name:' selector is empty - rule ignored`):a.push({kind:"name",name:e,id:i})}else if(s.startsWith("index:")){const e=s.slice(6).trim(),n=""===e?NaN:Number(e);!Number.isInteger(n)||n<0?console.warn(`${t} material-overrides '${s}' is not a non-negative integer index - rule ignored`):a.push({kind:"index",index:n,id:i})}else console.warn(`${t} material-overrides '${s}' has no 'name:' or 'index:' prefix - rule ignored`);return a})(this._materialOverrides,e):[];if(0===t.length)return void this._restoreBaseline();if(!this._baseline){if(!this._authoredRender)return void console.warn(`${e} is bound to a node without an authored render component - material-overrides ignored`);this._baseline=this._authoredRender.meshInstances.map(e=>({meshInstance:e,material:e.material??null,name:e.material?.name??null}))}const a=this._baseline,s=t=>{const a=oe.get(t);return a||console.warn(`${e} material-overrides could not resolve pc-material '${t}' - rule ignored`),a??null},i=a.map(e=>e.material);for(const n of t){if("name"!==n.kind)continue;const t=s(n.id);if(!t)continue;let o=!1;if(a.forEach((e,a)=>{e.name===n.name&&(i[a]=t,o=!0)}),!o){const t=a.map(e=>`'${e.name}'`).join(", ");console.warn(`${e} material-overrides 'name:${n.name}' matches no assignment - baseline names: ${t||"(none)"}`)}}for(const n of t){if("index"!==n.kind)continue;if(n.index>=a.length){console.warn(`${e} material-overrides 'index:${n.index}' is out of range - ${a.length} assignment(s)`);continue}const t=s(n.id);t&&(i[n.index]=t)}a.forEach((e,t)=>{e.meshInstance.material!==i[t]&&(e.meshInstance.material=i[t])})}_restoreBaseline(){const e=this._baseline;if(e){this._baseline=null;for(const t of e)t.meshInstance.material!==t.material&&(t.meshInstance.material=t.material)}}_pathOf(e,t){const a=[];for(let s=e;s&&s!==t;s=s.parent)a.unshift(s.name);return a.join("/")||e.name}_describeHost(){return this._host instanceof Fe?`model '${this._host.asset}'`:`pc-node '${this._host?.name??""}' subtree`}_closestName(e){let t=null,a=3;return e.find(e=>{const s=((e,t)=>{const a=Array.from({length:t.length+1},(e,t)=>t);for(let s=1;s<=e.length;s++){let i=a[0];a[0]=s;for(let n=1;n<=t.length;n++){const o=a[n];a[n]=Math.min(a[n]+1,a[n-1]+1,i+(e[s-1]===t[n-1]?0:1)),i=o}}return a[t.length]})(this._name,e.name);return s<a&&(a=s,t=e.name),!1}),t}set name(e){this._name=e,this.isConnected&&this._host&&this._rebind()}get name(){return this._name}set index(e){this._index=e,this.isConnected&&this._host&&this._rebind()}get index(){return this._index}set enabled(e){this._enabled=e;const t="bound"===this._state?this._entity:null;t&&(null!==e?(this._authored.enabled??=t.enabled,t.enabled=e):void 0!==this._authored.enabled&&(t.enabled=this._authored.enabled,delete this._authored.enabled))}get enabled(){return this._enabled}set position(e){this._position=e;const t="bound"===this._state?this._entity:null;t&&(null!==e?(this._authored.position??=t.getLocalPosition().clone(),t.setLocalPosition(e)):this._authored.position&&(t.setLocalPosition(this._authored.position),delete this._authored.position))}get position(){return this._position}set rotation(e){this._rotation=e;const t="bound"===this._state?this._entity:null;t&&(null!==e?(this._authored.rotation??=t.getLocalRotation().clone(),t.setLocalEulerAngles(e)):this._authored.rotation&&(t.setLocalRotation(this._authored.rotation),delete this._authored.rotation))}get rotation(){return this._rotation}set scale(e){this._scale=e;const t="bound"===this._state?this._entity:null;t&&(null!==e?(this._authored.scale??=t.getLocalScale().clone(),t.setLocalScale(e)):this._authored.scale&&(t.setLocalScale(this._authored.scale),delete this._authored.scale))}get scale(){return this._scale}set tags(e){this._tags=e;const t="bound"===this._state?this._entity:null;t&&(null!==e?(this._authored.tags??=t.tags.list().slice(),t.tags.clear(),t.tags.add(e)):this._authored.tags&&(t.tags.clear(),t.tags.add(this._authored.tags),delete this._authored.tags))}get tags(){return this._tags}set materialOverrides(e){this._materialOverrides=null===e?null:Object.freeze({...e}),"bound"===this._state&&this._applyMaterialOverrides()}get materialOverrides(){return this._materialOverrides}static get observedAttributes(){return["enabled","index","material-overrides","name","position","rotation","scale","tags",...y]}attributeChangedCallback(e,a,s){switch(e){case"enabled":this.enabled=null===s?null:c(s,!0);break;case"index":if(null===s)this.index=null;else{const e=""===s.trim()?NaN:Number(s);!Number.isInteger(e)||e<0?(console.warn(`pc-node index '${s}' is not a non-negative integer - treated as absent`),this.index=null):this.index=e}break;case"material-overrides":this.materialOverrides=null===s?null:((e,t)=>{let a;try{a=JSON.parse(e)}catch(e){return console.warn(`${t} material-overrides is not valid JSON - treated as absent: ${e.message}`),null}return null===a||"object"!=typeof a||Array.isArray(a)?(console.warn(`${t} material-overrides must be a JSON object - treated as absent`),null):a})(s,`pc-node '${this._name}'`);break;case"name":this.name=s??"";break;case"position":this.position=null===s?null:m(s,t.Vec3.ZERO,e);break;case"rotation":this.rotation=null===s?null:m(s,t.Vec3.ZERO,e);break;case"scale":this.scale=null===s?null:m(s,t.Vec3.ONE,e);break;case"tags":this.tags=null===s?null:d(s);break;case"onpointerenter":case"onpointerleave":case"onpointerdown":case"onpointerup":case"onpointermove":this._updateInlineHandler(e,s)}}}customElements.define("pc-node",Re);class Oe extends a{_fog="none";_fogColor=new t.Color(1,1,1);_fogDensity=0;_fogStart=0;_fogEnd=1e3;_gravity=new t.Vec3(0,-9.81,0);_scene=null;get scene(){return this._scene}async connectedCallback(){const e=this.closestApp;if(!e)return void console.warn("pc-scene must be a descendant of pc-app - scene settings not applied");if(await e.ready(),!this.isConnected||this.closestApp!==e)return;const t=e.app;t&&(this._scene=t.scene,this._updateSceneSettings(),this._onReady())}disconnectedCallback(){this._scene=null,this._resetReady()}_updateSceneSettings(){this._scene&&(this._scene.fog.type=this._fog,this._scene.fog.color=this._fogColor,this._scene.fog.density=this._fogDensity,this._scene.fog.start=this._fogStart,this._scene.fog.end=this._fogEnd,this._applyGravity(this._gravity))}_applyGravity(e){this.closestApp?.app?.systems.rigidbody?.gravity.copy(e)}set fog(e){this._fog=e,this.scene&&(this.scene.fog.type=e)}get fog(){return this._fog}set fogColor(e){this._fogColor=e,this.scene&&(this.scene.fog.color=e)}get fogColor(){return this._fogColor}set fogDensity(e){this._fogDensity=e,this.scene&&(this.scene.fog.density=e)}get fogDensity(){return this._fogDensity}set fogStart(e){this._fogStart=e,this.scene&&(this.scene.fog.start=e)}get fogStart(){return this._fogStart}set fogEnd(e){this._fogEnd=e,this.scene&&(this.scene.fog.end=e)}get fogEnd(){return this._fogEnd}set gravity(e){this._gravity=e,this._scene&&this._applyGravity(e)}get gravity(){return this._gravity}static get observedAttributes(){return["fog","fog-color","fog-density","fog-start","fog-end","gravity"]}attributeChangedCallback(e,a,s){switch(e){case"fog":this.fog=h(s,["none","linear","exp","exp2"],"none",e);break;case"fog-color":this.fogColor=l(s,t.Color.WHITE,e);break;case"fog-density":this.fogDensity=p(s,0,e);break;case"fog-start":this.fogStart=p(s,0,e);break;case"fog-end":this.fogEnd=p(s,1e3,e);break;case"gravity":this.gravity=m(s,new t.Vec3(0,-9.81,0),e)}}}customElements.define("pc-scene",Oe);class Te extends a{_asset="";_center=new t.Vec3(0,.01,0);_intensity=1;_rotation=new t.Vec3;_mipLevel=0;_lighting=!1;_scale=new t.Vec3(100,100,100);_type="infinite";_scene=null;_appElement=null;_loadGeneration=0;_loadHandle=null;connectedCallback(){this._loadSkybox(),this._onReady()}disconnectedCallback(){this._loadGeneration++,this._detachLoadHandler(),this._unloadSkybox(),this._appElement=null,this._resetReady()}_detachLoadHandler(){this._loadHandle?.off(),this._loadHandle=null}_generateSkybox(e){if(!this._scene)return;const a=e.resource,s=t.EnvLighting.generateSkyboxCubemap(a);if(this._scene.skybox?.destroy(),this._scene.skybox=s,this._lighting){const e=t.EnvLighting.generateLightingSource(a),s=t.EnvLighting.generateAtlas(e);e.destroy(),this._scene.envAtlas?.destroy(),this._scene.envAtlas=s}const i=this._scene.layers.getLayerById(t.LAYERID_SKYBOX);i&&(i.enabled="none"!==this._type),this._scene.sky.type=this._type,this._scene.sky.node.setLocalScale(this._scale),this._scene.sky.center=this._center,this._scene.skyboxIntensity=this._intensity,this._scene.skyboxMip=this._mipLevel}async _loadSkybox(){const e=++this._loadGeneration;this._detachLoadHandler();const t=await(this.closestApp?.ready());if(e!==this._loadGeneration)return;const a=t?.app;if(!t||!a)return;this._appElement=t;const s=P(this._asset);s&&(this._scene=a.scene,s.loaded?this._generateSkybox(s):this._loadHandle=s.once("load",()=>{this._loadHandle=null,e===this._loadGeneration&&this._generateSkybox(s)}))}_unloadSkybox(){const e=this._scene;e&&(this._scene=null,this._appElement?.app&&(e.skybox?.destroy(),e.skybox=null,e.envAtlas?.destroy(),e.envAtlas=null))}set asset(e){this._asset=e,this.isConnected&&this._loadSkybox()}get asset(){return this._asset}set center(e){this._center=e,this._scene&&(this._scene.sky.center=this._center)}get center(){return this._center}set intensity(e){this._intensity=e,this._scene&&(this._scene.skyboxIntensity=this._intensity)}get intensity(){return this._intensity}set lighting(e){this._lighting=e}get lighting(){return this._lighting}set mipLevel(e){this._mipLevel=e,this._scene&&(this._scene.skyboxMip=this._mipLevel)}get mipLevel(){return this._mipLevel}set rotation(e){this._rotation=e,this._scene&&(this._scene.skyboxRotation=(new t.Quat).setFromEulerAngles(e))}get rotation(){return this._rotation}set scale(e){this._scale=e,this._scene&&this._scene.sky.node.setLocalScale(this._scale)}get scale(){return this._scale}set type(e){if(this._type=e,this._scene){this._scene.sky.type=this._type;const e=this._scene.layers.getLayerById(t.LAYERID_SKYBOX);e&&(e.enabled="none"!==this._type)}}get type(){return this._type}static get observedAttributes(){return["asset","center","intensity","lighting","mip-level","rotation","scale","type"]}attributeChangedCallback(e,a,s){switch(e){case"asset":this.asset=s??"";break;case"center":this.center=m(s,new t.Vec3(0,.01,0),e);break;case"intensity":this.intensity=p(s,1,e);break;case"lighting":this.lighting=c(s,!1);break;case"mip-level":this.mipLevel=p(s,0,e);break;case"rotation":this.rotation=m(s,t.Vec3.ZERO,e);break;case"scale":this.scale=m(s,new t.Vec3(100,100,100),e);break;case"type":this.type=h(s,["box","dome","infinite","none"],"infinite",e)}}}customElements.define("pc-sky",Te),e.AppElement=v,e.AssetElement=j,e.AsyncElement=a,e.ButtonComponentElement=z,e.CameraComponentElement=U,e.CollisionComponentElement=I,e.ComponentElement=L,e.ElementComponentElement=N,e.EntityBaseElement=k,e.EntityElement=w,e.GSplatComponentElement=xe,e.LayoutChildComponentElement=W,e.LayoutGroupComponentElement=K,e.LightComponentElement=$,e.ListenerComponentElement=D,e.MaterialElement=oe,e.ModelElement=Fe,e.ModuleElement=s,e.NodeElement=Re,e.ParticleSystemComponentElement=J,e.RenderComponentElement=re,e.RigidBodyComponentElement=ce,e.SceneElement=Oe,e.ScreenComponentElement=he,e.ScriptComponentElement=Se,e.ScriptElement=ge,e.ScrollViewComponentElement=me,e.ScrollbarComponentElement=be,e.SkyElement=Te,e.SoundComponentElement=Ce,e.SoundSlotElement=Ee,e.whenReady=async function(e){let t;if("string"==typeof e){"loading"===document.readyState&&await new Promise(e=>{document.addEventListener("DOMContentLoaded",e,{once:!0})});try{t=document.querySelector(e)}catch{throw new Error(`whenReady: '${e}' is not a valid CSS selector`)}if(!t)throw new Error(`whenReady: no element found matching '${e}'`)}else t=e;if(!(t instanceof a)){const a=t instanceof Element?`<${t.tagName.toLowerCase()}>`:String(e);throw new Error(`whenReady: ${a} does not initialize asynchronously`)}return await t.ready(),t}});
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("playcanvas")):"function"==typeof define&&define.amd?define(["exports","playcanvas"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).pwc={},e.pc)}(this,function(e,t){"use strict";class i extends HTMLElement{_readyPromise;_readyResolve;_readyResolved=!1;constructor(){super(),this._readyPromise=new Promise(e=>{this._readyResolve=e})}get closestApp(){return this.parentElement?.closest("pc-app")??null}get closestEntity(){return this.parentElement?.closest("pc-entity, pc-node")??null}_onReady(){this._readyResolved||(this._readyResolved=!0,this._readyResolve(),this.dispatchEvent(new CustomEvent("ready",{bubbles:!0,composed:!0})))}_resetReady(){this._readyResolved&&(this._readyResolved=!1,this._readyPromise=new Promise(e=>{this._readyResolve=e}))}ready(){return this._readyPromise.then(()=>this)}}class a extends i{_loadPromise=null;connectedCallback(){this._getLoadPromise()}async _loadModule(){const e=this.getAttribute("name");if(!e)return void console.warn("pc-module requires a 'name' attribute - no module was configured");const i={glueUrl:this.getAttribute("glue")??void 0,wasmUrl:this.getAttribute("wasm")??void 0,fallbackUrl:this.getAttribute("fallback")??void 0};"Basis"===e?t.basisInitialize(i):(t.WasmModule.setConfig(e,i),await new Promise(i=>{t.WasmModule.getInstance(e,()=>i())})),this._onReady()}_getLoadPromise(){return this._loadPromise||(this._loadPromise=this._loadModule()),this._loadPromise}}customElements.define("pc-module",a);class s{_track;_fill;_sweep=null;_removal=null;constructor(e){this._track=document.createElement("div"),this._track.setAttribute("role","progressbar"),this._track.setAttribute("aria-label","Loading"),this._track.setAttribute("aria-valuemin","0"),this._track.setAttribute("aria-valuemax","100"),this._track.style.cssText=["position: absolute","top: 0","left: 0","width: 100%","height: var(--pc-loading-bar-height, 3px)","background: var(--pc-loading-bar-background, rgba(0, 0, 0, 0.1))","z-index: 10000","pointer-events: none","opacity: 1","transition: opacity 0.2s ease"].join("; "),this._fill=document.createElement("div"),this._fill.style.cssText=["width: 100%","height: 100%","transform-origin: left center","transform: scaleX(0)","background: var(--pc-loading-bar-color, #f60)","transition: transform 0.2s ease"].join("; "),this._track.appendChild(this._fill),e.appendChild(this._track),"function"==typeof this._fill.animate&&(this._sweep=this._fill.animate([{transform:"scaleX(0.25) translateX(-100%)"},{transform:"scaleX(0.25) translateX(500%)"}],{duration:1e3,iterations:1/0,easing:"ease-in-out"}))}progress(e,t){this._sweep&&(this._sweep.cancel(),this._sweep=null);const i=0===t?1:e/t;this._track.setAttribute("aria-valuenow",String(Math.round(100*i))),this._fill.style.transform=`scaleX(${i})`}complete(){null===this._removal&&(this._sweep&&(this._sweep.cancel(),this._sweep=null),this._track.setAttribute("aria-valuenow","100"),this._fill.style.transform="scaleX(1)",this._track.style.opacity="0",this._removal=setTimeout(()=>this._track.remove(),250))}destroy(){this._sweep&&(this._sweep.cancel(),this._sweep=null),null!==this._removal&&(clearTimeout(this._removal),this._removal=null),this._track.remove()}}const n={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},o=(e,t)=>{const i=e.trim().split(/\s+/).map(Number);return i.length!==t||i.some(e=>!Number.isFinite(e))?null:i},r=e=>null===e?null:e.clone(),l=(e,t)=>null===e?t:"false"!==e,c=(e,i,a)=>{if(null===e)return r(i);const s=n[e.toLowerCase()];if(s)return(new t.Color).fromString(s);if(/^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(e)){let i=e.slice(1);return 3!==i.length&&4!==i.length||(i=i.split("").map(e=>e+e).join("")),(new t.Color).fromString(`#${i}`)}const l=o(e,4)??o(e,3);return l?new t.Color(l):(console.warn(`Invalid value '${e}' for attribute '${a}'. Expected a CSS color name, a hex color or 3 or 4 space-separated numbers. Using '${i}'.`),r(i))},h=(e,t,i,a)=>{if(null===e)return i;const s=Array.isArray(t)?t:[...t.keys()];return s.includes(e)?e:(console.warn(`Invalid value '${e}' for attribute '${a}'. Valid values: ${s.join(", ")}. Using '${i}'.`),i)},p=(e,t,i)=>{if(null===e)return t;const a=""===e.trim()?NaN:Number(e);return Number.isFinite(a)?a:(console.warn(`Invalid value '${e}' for attribute '${i}'. Expected a finite number. Using '${t}'.`),t)},b=(e,i,a)=>{if(null===e)return r(i);const s=o(e,3);return s?(new t.Quat).setFromEulerAngles(s[0],s[1],s[2]):(console.warn(`Invalid value '${e}' for attribute '${a}'. Expected 3 space-separated numbers. Using '${i}'.`),r(i))},d=(e,t=[])=>null===e?[...t]:e.split(",").map(e=>e.trim()).filter(e=>""!==e),m=(e,i,a)=>{if(null===e)return r(i);const s=o(e,2);return s?new t.Vec2(s):(console.warn(`Invalid value '${e}' for attribute '${a}'. Expected 2 space-separated numbers. Using '${i}'.`),r(i))},u=(e,i,a)=>{if(null===e)return r(i);const s=o(e,3);return s?new t.Vec3(s):(console.warn(`Invalid value '${e}' for attribute '${a}'. Expected 3 space-separated numbers. Using '${i}'.`),r(i))},g=(e,i,a)=>{if(null===e)return r(i);const s=o(e,4);return s?new t.Vec4(s):(console.warn(`Invalid value '${e}' for attribute '${a}'. Expected 4 space-separated numbers. Using '${i}'.`),r(i))},_=e=>{if(!e)return null;let t=null;try{t=document.querySelector(e)}catch{t=null}return t||(t=document.getElementById(e)??document.querySelector(`pc-entity[name="${e}"]`)),t?.entity??null},f=["pointermove","pointerdown","pointerup","pointerenter","pointerleave"];class v extends i{_canvas=null;_alpha=!0;_backend="webgpu";_antialias=!0;_depthBuffer=!0;_stencilBuffer=!0;_maxPixelRatio=1/0;_loadingBar=!0;_optionsLocked=!1;_bar=null;_hierarchyReady=!1;_bootGeneration=0;_entityElements=new Map;_picker=null;_hasPointerListeners={pointerenter:!1,pointerleave:!1,pointerdown:!1,pointerup:!1,pointermove:!1};_hoveredEntity=null;_pickToken=0;_pointerHandlers={pointermove:null,pointerdown:null,pointerup:null};_app=null;_loadProgress=0;_resizeObserver=null;get app(){return this._app}get loadProgress(){return this._loadProgress}constructor(){super(),f.forEach(e=>{this.addEventListener(`${e}:connect`,()=>this._onPointerListenerAdded(e)),this.addEventListener(`${e}:disconnect`,()=>this._onPointerListenerRemoved(e))})}async connectedCallback(){const e=++this._bootGeneration;(()=>{const e="pc-app-styles";if(document.getElementById(e))return;const t=document.createElement("style");t.id=e,t.textContent=":where(pc-app) { display: block; position: relative; width: 300px; height: 150px; }",document.head.appendChild(t)})(),this._loadingBar&&!this._bar&&(this._bar=new s(this)),customElements.upgrade(this);const i=this.querySelectorAll(":scope > pc-module");if(await Promise.all(Array.from(i).map(e=>e._getLoadPromise())),e!==this._bootGeneration)return;this._canvas=document.createElement("canvas"),this._canvas.style.cssText="display: block; width: 100%; height: 100%; touch-action: none;",this.appendChild(this._canvas);const a={webgpu:["webgpu","webgl2"],webgl2:["webgl2"],null:["null"]}[this._backend]||[];this._optionsLocked=!0;const n=a.join(", ");let o;try{o=await t.createGraphicsDevice(this._canvas,{alpha:this._alpha,antialias:this._antialias,depth:this._depthBuffer,deviceTypes:a,stencil:this._stencilBuffer})}catch(t){if(e!==this._bootGeneration)return;this._canvas&&this.contains(this._canvas)&&this.removeChild(this._canvas),this._canvas=null,this._bar?.destroy(),this._bar=null;const i=`pc-app failed to create a graphics device (${n}) - ${t instanceof Error?t.message:String(t)}`;return console.error(i,t),void this.dispatchEvent(new ErrorEvent("error",{message:i,error:t}))}if(e!==this._bootGeneration)return void o.destroy();o.maxPixelRatio=this._maxPixelRatio;const r=new t.AppOptions;r.graphicsDevice=o,r.keyboard=new t.Keyboard(window),r.mouse=new t.Mouse(this._canvas),r.elementInput=new t.ElementInput(this._canvas,{useMouse:!0,useTouch:!0}),r.componentSystems=[t.AnimComponentSystem,t.AnimationComponentSystem,t.AudioListenerComponentSystem,t.ButtonComponentSystem,t.CameraComponentSystem,t.CollisionComponentSystem,t.ElementComponentSystem,t.GSplatComponentSystem,t.JointComponentSystem,t.LayoutChildComponentSystem,t.LayoutGroupComponentSystem,t.LightComponentSystem,t.ModelComponentSystem,t.ParticleSystemComponentSystem,t.RenderComponentSystem,t.RigidBodyComponentSystem,t.ScreenComponentSystem,t.ScriptComponentSystem,t.ScrollbarComponentSystem,t.ScrollViewComponentSystem,t.SoundComponentSystem,t.SpriteComponentSystem,t.ZoneComponentSystem],r.resourceHandlers=[t.AnimClipHandler,t.AnimationHandler,t.AnimStateGraphHandler,t.AudioHandler,t.BinaryHandler,t.CssHandler,t.ContainerHandler,t.CubemapHandler,t.FolderHandler,t.FontHandler,t.GSplatHandler,t.HierarchyHandler,t.HtmlHandler,t.JsonHandler,t.MaterialHandler,t.ModelHandler,t.RenderHandler,t.ScriptHandler,t.SceneHandler,t.ShaderHandler,t.SpriteHandler,t.TemplateHandler,t.TextHandler,t.TextureAtlasHandler,t.TextureHandler],r.soundManager=new t.SoundManager,r.lightmapper=t.Lightmapper,r.batchManager=t.BatchManager,r.xr=t.XrManager;const l=new t.AppBase(this._canvas);this._app=l,l.init(r),l.setCanvasFillMode(t.FILLMODE_NONE),l.setCanvasResolution(t.RESOLUTION_AUTO),this._pickerCreate(),"undefined"!=typeof ResizeObserver&&(this._resizeObserver=new ResizeObserver(()=>this._syncCanvasSize()),this._resizeObserver.observe(this));const c=this.querySelectorAll(":scope > pc-asset");for(const t of Array.from(c)){t._createAsset();const i=t.asset;if(i&&(l.assets.add(i),e!==this._bootGeneration))return}const h=this.querySelectorAll(":scope > pc-material");Array.from(h).forEach(e=>{e._createMaterial()});const p=this.querySelectorAll("pc-entity");if(Array.from(p).forEach(e=>{e._createEntity(l)}),p.forEach(e=>{e._buildHierarchy(l)}),e!==this._bootGeneration)return;this._hierarchyReady=!0;const b=l.assets.list({preload:!0}).length;let d=0;const m=()=>{d+=1,this._loadProgress=d/b,this._bar?.progress(d,b),this.dispatchEvent(new ProgressEvent("progress",{lengthComputable:!0,loaded:d,total:b}))};l.on("preload:progress",m),this._loadProgress=0===b?1:0,this._bar?.progress(0,b),this.dispatchEvent(new ProgressEvent("progress",{lengthComputable:!0,loaded:0,total:b})),e===this._bootGeneration&&l.preload(()=>{e===this._bootGeneration&&(l.off("preload:progress",m),this._loadProgress=1,l.start(),l.once("frameend",()=>this._bar?.complete()),this._onReady())})}disconnectedCallback(){this._bootGeneration++,this._optionsLocked=!1,this._pickerDestroy(),this._app&&(this._app.destroy(),this._app=null),this._entityElements.clear(),this._loadProgress=0,this._bar?.destroy(),this._bar=null,this._hierarchyReady=!1,this._resetReady(),this._resizeObserver?.disconnect(),this._resizeObserver=null,this._canvas&&this.contains(this._canvas)&&(this.removeChild(this._canvas),this._canvas=null)}_syncCanvasSize(){if(!this.app||this.app.xr?.active)return;this.app.updateCanvasSize();const{width:e,height:t}=this.app.graphicsDevice;this._picker?.resize(e,t)}_pickerCreate(){const{width:e,height:i}=this.app.graphicsDevice;this._picker=new t.Picker(this.app,e,i);const a=e=>t=>{e.call(this,t)};this._pointerHandlers.pointermove=a(this._onPointerMove),this._pointerHandlers.pointerdown=a(this._onPointerDown),this._pointerHandlers.pointerup=a(this._onPointerUp),f.forEach(e=>{Array.from(this.querySelectorAll("pc-entity, pc-node")).some(t=>t._hasListeners(e))&&this._onPointerListenerAdded(e)})}_pickerDestroy(){this._canvas&&Object.entries(this._pointerHandlers).forEach(([e,t])=>{t&&this._canvas.removeEventListener(e,t)}),this._picker=null,this._hoveredEntity=null,this._pointerHandlers={pointermove:null,pointerdown:null,pointerup:null},this._hasPointerListeners={pointerenter:!1,pointerleave:!1,pointerdown:!1,pointerup:!1,pointermove:!1}}_registerEntityElement(e,t){this._entityElements.set(e,t)}_unregisterEntityElement(e){this._entityElements.delete(e)}elementFromEntity(e){return this._entityElements.get(e)??null}_elementFromNode(e){for(;null!==e;){const t=this._entityElements.get(e);if(t)return t;e=e.parent}return null}_elementWithListener(e,t){for(;null!==e;){const i=this._entityElements.get(e);if(i?._hasListeners(t))return i;e=e.parent}return null}_getPickerCoordinates(e,t){const i=t.getBoundingClientRect();if(0===i.width||0===i.height)return{x:e.clientX,y:e.clientY,mapped:!1};const a=t.width/i.width,s=t.height/i.height;return{x:(e.clientX-i.left)*a,y:(e.clientY-i.top)*s,mapped:!0}}_cameraContains(e,t,i,a){const s=e.rect,n=s.x*a.width,o=(1-s.y)*a.height,r=o-s.w*a.height;return t>=n&&t<n+s.z*a.width&&i>=r&&i<o}async _pickNode(e){const i=this.app,a=this._picker,s=this._canvas;if(!i||!a||!s)return null;const{x:n,y:o,mapped:r}=this._getPickerCoordinates(e,s),l=i.systems.camera?.cameras??[];for(let e=l.length-1;e>=0;e--){const c=l.at(e);if(!c||c.renderTarget)continue;if(r&&!this._cameraContains(c,n,o,s))continue;a.prepare(c,i.scene);const h=await a.getSelectionAsync(n,o);if(!this._picker||!this.app)return null;if(h.length>0){const e=h[0];return e instanceof t.MeshInstance?e.node:e.entity}if(c.clearColorBuffer)return null}return null}async _onPointerMove(e){if(!this._picker||!this.app)return;const t=++this._pickToken,i=await this._pickNode(e);if(t!==this._pickToken||!this._picker)return;const a=this._elementFromNode(i);this._hoveredEntity!==a&&(this._hoveredEntity&&this._hoveredEntity._hasListeners("pointerleave")&&this._hoveredEntity.dispatchEvent(new PointerEvent("pointerleave",e)),a&&a._hasListeners("pointerenter")&&a.dispatchEvent(new PointerEvent("pointerenter",e))),this._hoveredEntity=a,a&&a._hasListeners("pointermove")&&a.dispatchEvent(new PointerEvent("pointermove",e))}async _onPointerDown(e){if(!this._picker||!this.app)return;const t=await this._pickNode(e);if(!this._picker)return;const i=this._elementWithListener(t,"pointerdown");i&&i.dispatchEvent(new PointerEvent("pointerdown",e))}async _onPointerUp(e){if(!this._picker||!this.app)return;const t=await this._pickNode(e);if(!this._picker)return;const i=this._elementWithListener(t,"pointerup");i&&i.dispatchEvent(new PointerEvent("pointerup",e))}_onPointerListenerAdded(e){if(!this._hasPointerListeners[e]&&this._canvas){this._hasPointerListeners[e]=!0;const t="pointerenter"===e||"pointerleave"===e?this._pointerHandlers.pointermove:this._pointerHandlers[e];t&&this._canvas.addEventListener("pointerenter"===e||"pointerleave"===e?"pointermove":e,t)}}_onPointerListenerRemoved(e){if(!Array.from(this.querySelectorAll("pc-entity, pc-node")).some(t=>t._hasListeners(e))&&this._canvas){this._hasPointerListeners[e]=!1;const t="pointerenter"===e||"pointerleave"===e?this._pointerHandlers.pointermove:this._pointerHandlers[e];t&&this._canvas.removeEventListener("pointerenter"===e||"pointerleave"===e?"pointermove":e,t)}}_warnIfBooted(e){this._optionsLocked&&console.warn(`Attribute '${e}' on <pc-app> is only read when the application boots, so this change has no effect. Set it before the element is connected, or remove and re-insert the element to reboot with the new value.`)}set alpha(e){this._warnIfBooted("alpha"),this._alpha=e}get alpha(){return this._alpha}set antialias(e){this._warnIfBooted("antialias"),this._antialias=e}get antialias(){return this._antialias}set backend(e){this._warnIfBooted("backend"),this._backend=e}get backend(){return this._backend}set depthBuffer(e){this._warnIfBooted("depth-buffer"),this._depthBuffer=e}get depthBuffer(){return this._depthBuffer}set loadingBar(e){this._loadingBar=e,!e&&this._bar&&(this._bar.destroy(),this._bar=null)}get loadingBar(){return this._loadingBar}set maxPixelRatio(e){this._maxPixelRatio=e,this.app&&(this.app.graphicsDevice.maxPixelRatio=e,this._syncCanvasSize())}get maxPixelRatio(){return this._maxPixelRatio}set stencilBuffer(e){this._warnIfBooted("stencil-buffer"),this._stencilBuffer=e}get stencilBuffer(){return this._stencilBuffer}static get observedAttributes(){return["alpha","antialias","backend","depth-buffer","loading-bar","max-pixel-ratio","stencil-buffer"]}attributeChangedCallback(e,t,i){switch(e){case"alpha":this.alpha=l(i,!0);break;case"antialias":this.antialias=l(i,!0);break;case"backend":this.backend=h(i,["webgpu","webgl2","null"],"webgpu",e);break;case"depth-buffer":this.depthBuffer=l(i,!0);break;case"loading-bar":this.loadingBar=l(i,!0);break;case"max-pixel-ratio":this.maxPixelRatio=p(i,1/0,e);break;case"stencil-buffer":this.stencilBuffer=l(i,!0)}}}customElements.define("pc-app",v);const y=["onpointerenter","onpointerleave","onpointerdown","onpointerup","onpointermove"];class k extends i{_entity=null;_appElement=null;_listeners={};_inlineHandlerTypes=new Set;get entity(){return this._entity}_registerEntity(e){this._appElement=this.closestApp,this._appElement?._registerEntityElement(e,this)}_unregisterEntity(e){this._appElement?._unregisterEntityElement(e),this._appElement=null}_updateInlineHandler(e,t){const i=e.substring(2),a=this._inlineHandlerTypes.has(i),s=null!==t;s&&!a?(this._inlineHandlerTypes.add(i),this.dispatchEvent(new CustomEvent(`${i}:connect`,{bubbles:!0}))):!s&&a&&(this._inlineHandlerTypes.delete(i),this.dispatchEvent(new CustomEvent(`${i}:disconnect`,{bubbles:!0})))}addEventListener(e,t,i){this._listeners[e]||(this._listeners[e]=[]),this._listeners[e].push(t),super.addEventListener(e,t,i),e.startsWith("pointer")&&this.dispatchEvent(new CustomEvent(`${e}:connect`,{bubbles:!0}))}removeEventListener(e,t,i){this._listeners[e]&&(this._listeners[e]=this._listeners[e].filter(e=>e!==t)),super.removeEventListener(e,t,i),e.startsWith("pointer")&&this.dispatchEvent(new CustomEvent(`${e}:disconnect`,{bubbles:!0}))}_hasListeners(e){return Boolean(this._listeners[e]?.length)||this._inlineHandlerTypes.has(e)}}const M=(e,t)=>{const i=Array.from(e.querySelectorAll("pc-entity")).filter(e=>e instanceof w);i.forEach(e=>e._createEntity(t)),i.forEach(e=>e._buildHierarchy(t))};class w extends k{_enabled=!0;_name="Untitled";_position=new t.Vec3;_rotation=new t.Vec3;_scale=new t.Vec3(1,1,1);_tags=[];_built=!1;_createEntity(e){if(this._entity)return;const i=new t.Entity(this._name,e);this._entity=i,i.enabled=this._enabled,i.setLocalPosition(this._position),i.setLocalEulerAngles(this._rotation),i.setLocalScale(this._scale),this._tags.length>0&&i.tags.add(this._tags),this._registerEntity(i),i.once("destroy",this._onEntityDestroy,this)}_onEntityDestroy(e){this._unregisterEntity(e),this._entity=null,this._built=!1,this._resetReady()}_buildHierarchy(e){if(!this.entity||this._built)return;const t=this.closestEntity;t&&!t.entity||(this._built=!0,t?.entity?t.entity.addChild(this.entity):e.root.addChild(this.entity),this._onReady())}connectedCallback(){const e=this.closestApp;if(!e){const e=this.getAttribute("name"),t=e?` '${e}'`:"";return void console.warn(`pc-entity${t} must be a descendant of pc-app - entity not created`)}if(e._hierarchyReady){const t=e.app;this._createEntity(t),this._buildHierarchy(t),M(this,t)}}disconnectedCallback(){this._entity?.destroy()}set enabled(e){this._enabled=e,this.entity&&(this.entity.enabled=e)}get enabled(){return this._enabled}set name(e){this._name=e,this.entity&&(this.entity.name=e)}get name(){return this._name}set position(e){this._position=e,this.entity&&this.entity.setLocalPosition(this._position)}get position(){return this._position}set rotation(e){this._rotation=e,this.entity&&this.entity.setLocalEulerAngles(this._rotation)}get rotation(){return this._rotation}set scale(e){this._scale=e,this.entity&&this.entity.setLocalScale(this._scale)}get scale(){return this._scale}set tags(e){this._tags=e,this.entity&&(this.entity.tags.clear(),this.entity.tags.add(this._tags))}get tags(){return this._tags}static get observedAttributes(){return["enabled","name","position","rotation","scale","tags",...y]}attributeChangedCallback(e,i,a){switch(e){case"enabled":this.enabled=l(a,!0);break;case"name":this.name=a??"Untitled";break;case"position":this.position=u(a,t.Vec3.ZERO,e);break;case"rotation":this.rotation=u(a,t.Vec3.ZERO,e);break;case"scale":this.scale=u(a,t.Vec3.ONE,e);break;case"tags":this.tags=d(a);break;case"onpointerenter":case"onpointerleave":case"onpointerdown":case"onpointerup":case"onpointermove":this._updateInlineHandler(e,a)}}}customElements.define("pc-entity",w);var S=function(){var e=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),t=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if("object"!=typeof WebAssembly)return{supported:!1};var i,a=WebAssembly.validate(e)?"b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb":"b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb",s=WebAssembly.instantiate(n(a),{}).then(function(e){(i=e.instance).exports.__wasm_call_ctors()});function n(e){for(var i=new Uint8Array(e.length),a=0;a<e.length;++a){var s=e.charCodeAt(a);i[a]=s>96?s-97:s>64?s-39:s+4}var n=0;for(a=0;a<e.length;++a)i[n++]=i[a]<60?t[i[a]]:64*(i[a]-60)+i[++a];return i.buffer.slice(0,n)}function o(e,t,a,s,n,o){var r=i.exports.sbrk,l=a+3&-4,c=r(l*s),h=r(n.length),p=new Uint8Array(i.exports.memory.buffer);p.set(n,h);var b=e(c,a,s,h,n.length);if(0==b&&o&&o(c,l,s),t.set(p.subarray(c,c+a*s)),r(c-r(0)),0!=b)throw new Error("Malformed buffer data: "+b)}var r={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},l={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},c=[],h=0;function p(e){var t={object:new Worker(e),pending:0,requests:{}};return t.object.onmessage=function(e){var i=e.data;t.pending-=i.count,t.requests[i.id][i.action](i.value),delete t.requests[i.id]},t}function b(e){for(var t="var instance; var ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(n(a))+"]), {}).then(function(result) { instance = result.instance; instance.exports.__wasm_call_ctors(); });self.onmessage = workerProcess;"+o.toString()+d.toString(),i=new Blob([t],{type:"text/javascript"}),s=URL.createObjectURL(i),r=0;r<e;++r)c[r]=p(s);URL.revokeObjectURL(s)}function d(e){s.then(function(){var t=e.data;try{var a=new Uint8Array(t.count*t.size);o(i.exports[t.mode],a,t.count,t.size,t.source,i.exports[t.filter]),self.postMessage({id:t.id,count:t.count,action:"resolve",value:a},[a.buffer])}catch(e){self.postMessage({id:t.id,count:t.count,action:"reject",value:e})}})}return{ready:s,supported:!0,useWorkers:function(e){b(e)},decodeVertexBuffer:function(e,t,a,s,n){o(i.exports.meshopt_decodeVertexBuffer,e,t,a,s,i.exports[r[n]])},decodeIndexBuffer:function(e,t,a,s){o(i.exports.meshopt_decodeIndexBuffer,e,t,a,s)},decodeIndexSequence:function(e,t,a,s){o(i.exports.meshopt_decodeIndexSequence,e,t,a,s)},decodeGltfBuffer:function(e,t,a,s,n,c){o(i.exports[l[n]],e,t,a,s,i.exports[r[c]])},decodeGltfBufferAsync:function(e,t,a,n,p){return c.length>0?function(e,t,i,a,s){for(var n=c[0],o=1;o<c.length;++o)c[o].pending<n.pending&&(n=c[o]);return new Promise(function(o,r){var l=new Uint8Array(i),c=h++;n.pending+=e,n.requests[c]={resolve:o,reject:r},n.object.postMessage({id:c,count:e,size:t,source:l,mode:a,filter:s},[l.buffer])})}(e,t,a,l[n],r[p]):s.then(function(){var s=new Uint8Array(e*t);return o(i.exports[l[n]],s,e,t,a,i.exports[r[p]]),s})}}}();const E=new Map([["simple",t.SPRITE_RENDERMODE_SIMPLE],["sliced",t.SPRITE_RENDERMODE_SLICED],["tiled",t.SPRITE_RENDERMODE_TILED]]),C=new Map([["repeat",t.ADDRESS_REPEAT],["clamp",t.ADDRESS_CLAMP_TO_EDGE],["mirror",t.ADDRESS_MIRRORED_REPEAT]]),x=new Map([["nearest",t.FILTER_NEAREST],["linear",t.FILTER_LINEAR],["nearest-mip-nearest",t.FILTER_NEAREST_MIPMAP_NEAREST],["linear-mip-nearest",t.FILTER_LINEAR_MIPMAP_NEAREST],["nearest-mip-linear",t.FILTER_NEAREST_MIPMAP_LINEAR],["linear-mip-linear",t.FILTER_LINEAR_MIPMAP_LINEAR]]),A=new Map([["nearest",t.FILTER_NEAREST],["linear",t.FILTER_LINEAR]]),F=e=>e.replace(/-/g,"_"),R={addressU:t.ADDRESS_REPEAT,addressV:t.ADDRESS_REPEAT,anisotropy:1,flipY:!1,magFilter:t.FILTER_LINEAR,minFilter:t.FILTER_LINEAR_MIPMAP_LINEAR,mipmaps:!0,srgb:!1},O=[[["address-u","address-v","anisotropy","flip-y","mag-filter","min-filter","mipmaps","srgb"],["texture","textureatlas"]],[["atlas","frame-keys","pixels-per-unit","render-mode"],["sprite"]]],L=new Map([["bin","binary"],["css","css"],["frag","shader"],["glb","container"],["glsl","shader"],["gltf","container"],["hdr","texture"],["html","html"],["jpg","texture"],["js","script"],["json","json"],["ktx2","texture"],["mp3","audio"],["mjs","script"],["ply","gsplat"],["png","texture"],["sog","gsplat"],["txt","text"],["vert","shader"],["webp","texture"]]),T=(e,t,i)=>{if(e.extensions&&e.extensions.EXT_meshopt_compression){const a=e.extensions.EXT_meshopt_compression;Promise.all([S.ready,t[a.buffer]]).then(e=>{const t=e[1],s=a.byteOffset||0,n=a.byteLength||0,o=a.count,r=a.byteStride,l=new Uint8Array(o*r),c=new Uint8Array(t.buffer,t.byteOffset+s,n);S.decodeGltfBuffer(l,o,r,c,a.mode,a.filter),i(null,l)})}else i(null,null)};class j extends i{_addressU=null;_addressV=null;_anisotropy=null;_flipY=null;_lazy=!1;_magFilter=null;_minFilter=null;_mipmaps=null;_srgb=null;asset=null;async connectedCallback(){const e=this.closestApp;if(e)if(this.parentElement===e){if(await e.ready(),this.isConnected&&this.parentElement===e){if(!this.asset){const t=e.app;if(!t)return;this._createAsset(),this.asset&&(t.assets.add(this.asset),this.lazy||t.assets.load(this.asset))}this.asset&&this._onReady()}}else console.warn(`pc-asset '${this.getAttribute("id")??this.getAttribute("src")}' must be a direct child of pc-app - asset not created`)}disconnectedCallback(){this._destroyAsset(),this._resetReady()}_onAssetLoad(){this.dispatchEvent(new Event("load"))}_onAssetError(e){this.dispatchEvent(new ErrorEvent("error",{message:e instanceof Error?e.message:String(e)}))}_createAsset(){const e=this.getAttribute("id")||"",i=this.getAttribute("src")||"";let a=this.getAttribute("type");if(!a){const e=i.split(".").pop();a=L.get(e||"")??null}if(!a)return void console.warn(`Unsupported asset type: ${i}`);const s=O.filter(([,e])=>!e.includes(a)).flatMap(([e])=>e).filter(e=>this.hasAttribute(e));s.length>0&&console.warn(`pc-asset '${e||i}' has attributes that do not apply to asset type '${a}' and are ignored: ${s.join(", ")}`);const n=this._buildData(a);this.asset="container"===a?new t.Asset(e,a,{url:i},void 0,{bufferView:{processAsync:T.bind(this)}}):"sprite"===a?new t.Asset(e,a,null,n):new t.Asset(e,a,i?{url:i}:null,n),this.asset.preload=!this._lazy,this.asset.on("load",this._onAssetLoad,this),this.asset.on("error",this._onAssetError,this)}_buildData(e){let i;const a=this.getAttribute("data");if(a)try{i=JSON.parse(a)}catch(e){console.warn(`Invalid 'data' JSON on pc-asset: ${a}`)}if("texture"!==e&&"textureatlas"!==e||(i=i??{},null!==this._addressU&&(i.addressu=this._addressU),null!==this._addressV&&(i.addressv=this._addressV),null!==this._anisotropy&&(i.anisotropy=this._anisotropy),null!==this._flipY&&(i.flipY=this._flipY),null!==this._magFilter&&(i.magfilter=F(this._magFilter)),null!==this._minFilter&&(i.minfilter=F(this._minFilter)),null!==this._mipmaps&&(i.mipmaps=this._mipmaps),null!==this._srgb&&(i.srgb=this._srgb)),"sprite"===e){i=i??{};const e=this.getAttribute("atlas")??i.textureAtlasAsset;if("string"==typeof e){const t=j.get(e);t?i.textureAtlasAsset=t.id:console.warn(`pc-asset sprite '${this.getAttribute("id")}' could not find atlas '${e}'`)}const a=this.getAttribute("frame-keys");null!==a&&(i.frameKeys=a.split(/[\s,]+/).filter(Boolean));const s=this.getAttribute("pixels-per-unit");null!==s&&(i.pixelsPerUnit=p(s,1,"pixels-per-unit"));const n=this.getAttribute("render-mode");null!==n&&(i.renderMode=E.get(h(n,E,"simple","render-mode"))),i.renderMode=i.renderMode??t.SPRITE_RENDERMODE_SIMPLE,i.pixelsPerUnit=i.pixelsPerUnit??1,i.frameKeys=i.frameKeys??[]}return i}_texture(){const e=this.asset;return e?.resource?"texture"===e.type?e.resource:"textureatlas"===e.type?e.resource.texture??null:null:null}_applyTextureOption(e,t,i,a){const s=this.asset;if(!s||"texture"!==s.type&&"textureatlas"!==s.type)return;const n=s.data;null===i?delete n[e]:n[e]=i;const o=this._texture();o&&(o[t]=a??R[t])}_destroyAsset(){this.asset&&(this.asset.off("load",this._onAssetLoad,this),this.asset.off("error",this._onAssetError,this),this.asset.registry?.remove(this.asset),this.asset.unload(),this.asset=null)}set addressU(e){this._addressU=e;const i=null===e?null:C.get(e)??t.ADDRESS_REPEAT;this._applyTextureOption("addressu","addressU",e,i)}get addressU(){return this._addressU}set addressV(e){this._addressV=e;const i=null===e?null:C.get(e)??t.ADDRESS_REPEAT;this._applyTextureOption("addressv","addressV",e,i)}get addressV(){return this._addressV}set anisotropy(e){this._anisotropy=e,this._applyTextureOption("anisotropy","anisotropy",e,e)}get anisotropy(){return this._anisotropy}set flipY(e){this._flipY=e,this._applyTextureOption("flipY","flipY",e,e)}get flipY(){return this._flipY}set lazy(e){this._lazy=e,this.asset&&(this.asset.preload=!e,e||this.asset.registry?.load(this.asset))}get lazy(){return this._lazy}set magFilter(e){this._magFilter=e;const i=null===e?null:F(e),a=null===e?null:A.get(e)??t.FILTER_LINEAR;this._applyTextureOption("magfilter","magFilter",i,a)}get magFilter(){return this._magFilter}set minFilter(e){this._minFilter=e;const i=null===e?null:F(e),a=null===e?null:x.get(e)??t.FILTER_LINEAR_MIPMAP_LINEAR;this._applyTextureOption("minfilter","minFilter",i,a)}get minFilter(){return this._minFilter}set mipmaps(e){this._mipmaps=e,this._applyTextureOption("mipmaps","mipmaps",e,e)}get mipmaps(){return this._mipmaps}set srgb(e){this._srgb=e,this._applyTextureOption("srgb","srgb",e,e)}get srgb(){return this._srgb}static get(e){const t=document.querySelector(`pc-asset[id="${e}"]`);return t?.asset}static get observedAttributes(){return["address-u","address-v","anisotropy","flip-y","lazy","mag-filter","min-filter","mipmaps","srgb"]}attributeChangedCallback(e,t,i){switch(e){case"address-u":this.addressU=null!==i?h(i,C,"repeat",e):null;break;case"address-v":this.addressV=null!==i?h(i,C,"repeat",e):null;break;case"anisotropy":this.anisotropy=null!==i?p(i,1,e):null;break;case"flip-y":this.flipY=null!==i?l(i,!1):null;break;case"lazy":this.lazy=l(i,!1);break;case"mag-filter":this.magFilter=null!==i?h(i,A,"linear",e):null;break;case"min-filter":this.minFilter=null!==i?h(i,x,"linear-mip-linear",e):null;break;case"mipmaps":this.mipmaps=null!==i?l(i,!0):null;break;case"srgb":this.srgb=null!==i?l(i,!1):null}}}customElements.define("pc-asset",j);const D=e=>{const t=j.get(e);return t&&t.registry?.load(t),t};class P extends i{_componentName;_enabled=!0;_component=null;_appElement=null;_hostElement=null;_hostReadyListener=null;_connectionGeneration=0;constructor(e){super(),this._componentName=e}getInitialComponentData(){return{}}_applyComponent(){const e=this._hostElement?.entity??null;if(this._component&&this._component.entity===e)return;const t=this._component;if(t?.entity&&t.entity.c[this._componentName]===t&&t.entity.removeComponent(this._componentName),this._component=null,e){if(e.c[this._componentName]){const t=this.id?` '${this.id}'`:"";return void console.warn(`${this.tagName.toLowerCase()}${t} - '${e.name}' already has a '${this._componentName}' component - component not added`)}this._component=e.addComponent(this._componentName,this.getInitialComponentData())}}async _addComponent(){const e=this._connectionGeneration,t=this.closestEntity;if(!t){const e=this.id?` '${this.id}'`:"";return void console.warn(`${this.tagName.toLowerCase()}${e} must be a descendant of pc-entity - component not added`)}await t.ready(),e===this._connectionGeneration&&(this._hostElement=t,this._applyComponent(),this._hostReadyListener=t=>{t.target===this._hostElement&&e===this._connectionGeneration&&this._hostCycled()},t.addEventListener("ready",this._hostReadyListener))}_hostCycled(){this._resetReady(),this._applyComponent(),this._hostElement?.entity&&(this.initComponent(),this._onReady())}initComponent(){}async connectedCallback(){const e=++this._connectionGeneration;this._appElement=this.closestApp??null,await(this._appElement?.ready()),e===this._connectionGeneration&&(await this._addComponent(),e===this._connectionGeneration&&(this.initComponent(),this._onReady()))}disconnectedCallback(){this._connectionGeneration++,this._hostElement&&this._hostReadyListener&&this._hostElement.removeEventListener("ready",this._hostReadyListener),this._hostElement=null,this._hostReadyListener=null,this._appElement?.app&&this._component?.entity&&this._component.entity.removeComponent(this._componentName),this._component=null,this._appElement=null,this._resetReady()}get component(){return this._component}set enabled(e){this._enabled=e,this.component&&(this.component.enabled=e)}get enabled(){return this._enabled}static get observedAttributes(){return["enabled"]}attributeChangedCallback(e,t,i){if("enabled"===e)this.enabled=l(i,!0)}}class H extends P{constructor(){super("audiolistener")}get component(){return super.component}}customElements.define("pc-listener",H);const z=new Map([["tint",t.BUTTON_TRANSITION_MODE_TINT],["sprite",t.BUTTON_TRANSITION_MODE_SPRITE_CHANGE]]);class B extends P{_active=!0;_image="";_hitPadding=new t.Vec4(0,0,0,0);_transitionMode="tint";_hoverTint=new t.Color(1,1,1,1);_pressedTint=new t.Color(1,1,1,1);_inactiveTint=new t.Color(1,1,1,1);_fadeDuration=0;_hoverSpriteAsset="";_hoverSpriteFrame=0;_pressedSpriteAsset="";_pressedSpriteFrame=0;_inactiveSpriteAsset="";_inactiveSpriteFrame=0;constructor(){super("button")}getInitialComponentData(){const e={active:this._active,hitPadding:this._hitPadding,transitionMode:z.get(this._transitionMode),hoverTint:this._hoverTint,pressedTint:this._pressedTint,inactiveTint:this._inactiveTint,fadeDuration:this._fadeDuration,hoverSpriteFrame:this._hoverSpriteFrame,pressedSpriteFrame:this._pressedSpriteFrame,inactiveSpriteFrame:this._inactiveSpriteFrame},t=this._image?_(this._image):this.closestEntity?.entity;t&&(e.imageEntity=t);const i=D(this._hoverSpriteAsset);i&&(e.hoverSpriteAsset=i.id);const a=D(this._pressedSpriteAsset);a&&(e.pressedSpriteAsset=a.id);const s=D(this._inactiveSpriteAsset);return s&&(e.inactiveSpriteAsset=s.id),e}get component(){return super.component}set active(e){this._active=e,this.component&&(this.component.active=e)}get active(){return this._active}set image(e){this._image=e;const t=_(e);this.component&&t&&(this.component.imageEntity=t)}get image(){return this._image}set hitPadding(e){this._hitPadding=e,this.component&&(this.component.hitPadding=e)}get hitPadding(){return this._hitPadding}set transitionMode(e){this._transitionMode=e,this.component&&(this.component.transitionMode=z.get(e)??t.BUTTON_TRANSITION_MODE_TINT)}get transitionMode(){return this._transitionMode}set hoverTint(e){this._hoverTint=e,this.component&&(this.component.hoverTint=e)}get hoverTint(){return this._hoverTint}set pressedTint(e){this._pressedTint=e,this.component&&(this.component.pressedTint=e)}get pressedTint(){return this._pressedTint}set inactiveTint(e){this._inactiveTint=e,this.component&&(this.component.inactiveTint=e)}get inactiveTint(){return this._inactiveTint}set fadeDuration(e){this._fadeDuration=e,this.component&&(this.component.fadeDuration=e)}get fadeDuration(){return this._fadeDuration}set hoverSpriteAsset(e){this._hoverSpriteAsset=e;const t=D(e);this.component&&t&&(this.component.hoverSpriteAsset=t.id)}get hoverSpriteAsset(){return this._hoverSpriteAsset}set hoverSpriteFrame(e){this._hoverSpriteFrame=e,this.component&&(this.component.hoverSpriteFrame=e)}get hoverSpriteFrame(){return this._hoverSpriteFrame}set pressedSpriteAsset(e){this._pressedSpriteAsset=e;const t=D(e);this.component&&t&&(this.component.pressedSpriteAsset=t.id)}get pressedSpriteAsset(){return this._pressedSpriteAsset}set pressedSpriteFrame(e){this._pressedSpriteFrame=e,this.component&&(this.component.pressedSpriteFrame=e)}get pressedSpriteFrame(){return this._pressedSpriteFrame}set inactiveSpriteAsset(e){this._inactiveSpriteAsset=e;const t=D(e);this.component&&t&&(this.component.inactiveSpriteAsset=t.id)}get inactiveSpriteAsset(){return this._inactiveSpriteAsset}set inactiveSpriteFrame(e){this._inactiveSpriteFrame=e,this.component&&(this.component.inactiveSpriteFrame=e)}get inactiveSpriteFrame(){return this._inactiveSpriteFrame}static get observedAttributes(){return[...super.observedAttributes,"active","image","hit-padding","transition-mode","hover-tint","pressed-tint","inactive-tint","fade-duration","hover-sprite-asset","hover-sprite-frame","pressed-sprite-asset","pressed-sprite-frame","inactive-sprite-asset","inactive-sprite-frame"]}attributeChangedCallback(e,i,a){switch(super.attributeChangedCallback(e,i,a),e){case"active":this.active=l(a,!0);break;case"image":this.image=a??"";break;case"hit-padding":this.hitPadding=g(a,t.Vec4.ZERO,e);break;case"transition-mode":this.transitionMode=h(a,z,"tint",e);break;case"hover-tint":this.hoverTint=c(a,t.Color.WHITE,e);break;case"pressed-tint":this.pressedTint=c(a,t.Color.WHITE,e);break;case"inactive-tint":this.inactiveTint=c(a,t.Color.WHITE,e);break;case"fade-duration":this.fadeDuration=p(a,0,e);break;case"hover-sprite-asset":this.hoverSpriteAsset=a??"";break;case"hover-sprite-frame":this.hoverSpriteFrame=p(a,0,e);break;case"pressed-sprite-asset":this.pressedSpriteAsset=a??"";break;case"pressed-sprite-frame":this.pressedSpriteFrame=p(a,0,e);break;case"inactive-sprite-asset":this.inactiveSpriteAsset=a??"";break;case"inactive-sprite-frame":this.inactiveSpriteFrame=p(a,0,e)}}}customElements.define("pc-button",B);const G=new Map([["perspective",t.PROJECTION_PERSPECTIVE],["orthographic",t.PROJECTION_ORTHOGRAPHIC]]),U=new Map([["none",t.TONEMAP_NONE],["linear",t.TONEMAP_LINEAR],["filmic",t.TONEMAP_FILMIC],["hejl",t.TONEMAP_HEJL],["aces",t.TONEMAP_ACES],["aces2",t.TONEMAP_ACES2],["neutral",t.TONEMAP_NEUTRAL]]);class I extends P{_clearColor=new t.Color(.75,.75,.75,1);_clearColorBuffer=!0;_clearDepthBuffer=!0;_clearStencilBuffer=!1;_cullFaces=!0;_farClip=1e3;_flipFaces=!1;_fov=45;_frustumCulling=!0;_gamma="srgb";_horizontalFov=!1;_nearClip=.1;_projection="perspective";_orthoHeight=10;_priority=0;_rect=new t.Vec4(0,0,1,1);_scissorRect=new t.Vec4(0,0,1,1);_tonemap="none";constructor(){super("camera")}getInitialComponentData(){return{clearColor:this._clearColor,clearColorBuffer:this._clearColorBuffer,clearDepthBuffer:this._clearDepthBuffer,clearStencilBuffer:this._clearStencilBuffer,cullFaces:this._cullFaces,farClip:this._farClip,flipFaces:this._flipFaces,fov:this._fov,frustumCulling:this._frustumCulling,gammaCorrection:"srgb"===this._gamma?t.GAMMA_SRGB:t.GAMMA_NONE,horizontalFov:this._horizontalFov,nearClip:this._nearClip,projection:G.get(this._projection)??t.PROJECTION_PERSPECTIVE,orthoHeight:this._orthoHeight,priority:this._priority,rect:this._rect,scissorRect:this._scissorRect,toneMapping:U.get(this._tonemap)??t.TONEMAP_NONE}}get xrAvailable(){const e=this.component?.system.app.xr;return e&&e.supported&&e.isAvailable(t.XRTYPE_VR)}startXr(e,t){this.component&&this.xrAvailable&&this.component.startXr(e,t,{callback:e=>{e&&console.error(`WebXR Immersive VR failed to start: ${e.message}`)}})}endXr(){this.component&&this.component.endXr()}get component(){return super.component}set clearColor(e){this._clearColor=e,this.component&&(this.component.clearColor=e)}get clearColor(){return this._clearColor}set clearColorBuffer(e){this._clearColorBuffer=e,this.component&&(this.component.clearColorBuffer=e)}get clearColorBuffer(){return this._clearColorBuffer}set clearDepthBuffer(e){this._clearDepthBuffer=e,this.component&&(this.component.clearDepthBuffer=e)}get clearDepthBuffer(){return this._clearDepthBuffer}set clearStencilBuffer(e){this._clearStencilBuffer=e,this.component&&(this.component.clearStencilBuffer=e)}get clearStencilBuffer(){return this._clearStencilBuffer}set cullFaces(e){this._cullFaces=e,this.component&&(this.component.cullFaces=e)}get cullFaces(){return this._cullFaces}set farClip(e){this._farClip=e,this.component&&(this.component.farClip=e)}get farClip(){return this._farClip}set flipFaces(e){this._flipFaces=e,this.component&&(this.component.flipFaces=e)}get flipFaces(){return this._flipFaces}set fov(e){this._fov=e,this.component&&(this.component.fov=e)}get fov(){return this._fov}set frustumCulling(e){this._frustumCulling=e,this.component&&(this.component.frustumCulling=e)}get frustumCulling(){return this._frustumCulling}set gamma(e){this._gamma=e,this.component&&(this.component.gammaCorrection="srgb"===e?t.GAMMA_SRGB:t.GAMMA_NONE)}get gamma(){return this._gamma}set horizontalFov(e){this._horizontalFov=e,this.component&&(this.component.horizontalFov=e)}get horizontalFov(){return this._horizontalFov}set nearClip(e){this._nearClip=e,this.component&&(this.component.nearClip=e)}get nearClip(){return this._nearClip}set orthoHeight(e){this._orthoHeight=e,this.component&&(this.component.orthoHeight=e)}get orthoHeight(){return this._orthoHeight}set priority(e){this._priority=e,this.component&&(this.component.priority=e)}get priority(){return this._priority}set projection(e){this._projection=e,this.component&&(this.component.projection=G.get(e)??t.PROJECTION_PERSPECTIVE)}get projection(){return this._projection}set rect(e){this._rect=e,this.component&&(this.component.rect=e)}get rect(){return this._rect}set scissorRect(e){this._scissorRect=e,this.component&&(this.component.scissorRect=e)}get scissorRect(){return this._scissorRect}set tonemap(e){this._tonemap=e,this.component&&(this.component.toneMapping=U.get(e)??t.TONEMAP_NONE)}get tonemap(){return this._tonemap}static get observedAttributes(){return[...super.observedAttributes,"clear-color","clear-color-buffer","clear-depth-buffer","clear-stencil-buffer","cull-faces","far-clip","flip-faces","fov","frustum-culling","gamma","horizontal-fov","near-clip","ortho-height","priority","projection","rect","scissor-rect","tonemap"]}attributeChangedCallback(e,i,a){switch(super.attributeChangedCallback(e,i,a),e){case"clear-color":this.clearColor=c(a,new t.Color(.75,.75,.75,1),e);break;case"clear-color-buffer":this.clearColorBuffer=l(a,!0);break;case"clear-depth-buffer":this.clearDepthBuffer=l(a,!0);break;case"clear-stencil-buffer":this.clearStencilBuffer=l(a,!1);break;case"cull-faces":this.cullFaces=l(a,!0);break;case"far-clip":this.farClip=p(a,1e3,e);break;case"flip-faces":this.flipFaces=l(a,!1);break;case"fov":this.fov=p(a,45,e);break;case"frustum-culling":this.frustumCulling=l(a,!0);break;case"gamma":this.gamma=h(a,["linear","srgb"],"srgb",e);break;case"horizontal-fov":this.horizontalFov=l(a,!1);break;case"near-clip":this.nearClip=p(a,.1,e);break;case"ortho-height":this.orthoHeight=p(a,10,e);break;case"priority":this.priority=p(a,0,e);break;case"projection":this.projection=h(a,G,"perspective",e);break;case"rect":this.rect=g(a,new t.Vec4(0,0,1,1),e);break;case"scissor-rect":this.scissorRect=g(a,new t.Vec4(0,0,1,1),e);break;case"tonemap":this.tonemap=h(a,U,"none",e)}}}customElements.define("pc-camera",I);class N extends P{_angularOffset=new t.Quat;_axis=1;_convexHull=!1;_halfExtents=new t.Vec3(.5,.5,.5);_height=2;_linearOffset=new t.Vec3;_radius=.5;_type="box";constructor(){super("collision")}getInitialComponentData(){return{axis:this._axis,angularOffset:this._angularOffset,convexHull:this._convexHull,halfExtents:this._halfExtents,height:this._height,linearOffset:this._linearOffset,radius:this._radius,type:this._type}}initComponent(){this._applyMeshGeometryDefault()}_applyMeshGeometryDefault(){const e=this.component;if(!e||"mesh"!==this._type||null!==e.renderAsset)return;const t=e.entity.render?.asset??null;null!==t?e.renderAsset=t:console.warn(`pc-collision type="mesh" on '${e.entity.name}' found no asset-backed render component to take geometry from - collider has no shape`)}get component(){return super.component}set angularOffset(e){this._angularOffset=e,this.component&&(this.component.angularOffset=e)}get angularOffset(){return this._angularOffset}set axis(e){this._axis=e,this.component&&(this.component.axis=e)}get axis(){return this._axis}set convexHull(e){this._convexHull=e,this.component&&(this.component.convexHull=e)}get convexHull(){return this._convexHull}set halfExtents(e){this._halfExtents=e,this.component&&(this.component.halfExtents=e)}get halfExtents(){return this._halfExtents}set height(e){this._height=e,this.component&&(this.component.height=e)}get height(){return this._height}set linearOffset(e){this._linearOffset=e,this.component&&(this.component.linearOffset=e)}get linearOffset(){return this._linearOffset}set radius(e){this._radius=e,this.component&&(this.component.radius=e)}get radius(){return this._radius}set type(e){this._type=e,this.component&&(this.component.type=e,this._applyMeshGeometryDefault())}get type(){return this._type}static get observedAttributes(){return[...super.observedAttributes,"angular-offset","axis","convex-hull","half-extents","height","linear-offset","radius","type"]}attributeChangedCallback(e,i,a){switch(super.attributeChangedCallback(e,i,a),e){case"angular-offset":this.angularOffset=b(a,t.Quat.IDENTITY,e);break;case"axis":this.axis=p(a,1,e);break;case"convex-hull":this.convexHull=l(a,!1);break;case"half-extents":this.halfExtents=u(a,new t.Vec3(.5,.5,.5),e);break;case"height":this.height=p(a,2,e);break;case"linear-offset":this.linearOffset=u(a,t.Vec3.ZERO,e);break;case"radius":this.radius=p(a,.5,e);break;case"type":this.type=h(a,["box","capsule","compound","cone","cylinder","mesh","sphere"],"box",e)}}}customElements.define("pc-collision",N);class V extends P{_anchor=new t.Vec4(.5,.5,.5,.5);_autoWidth=!0;_autoHeight=!0;_autoFitWidth=!1;_autoFitHeight=!1;_color=new t.Color(1,1,1,1);_enableMarkup=!1;_fontAsset="";_fontSize=32;_maxFontSize=32;_minFontSize=8;_height=0;_lineHeight=32;_margin=null;_mask=!1;_opacity=1;_pivot=new t.Vec2(.5,.5);_pixelsPerUnit=null;_spriteAsset="";_spriteFrame=0;_text="";_textureAsset="";_type="group";_useInput=!1;_width=0;_wrapLines=!1;constructor(){super("element")}initComponent(){const e=this.component;e&&(e._text?._material&&(e._text._material.useFog=!0),e._dirtifyMask?.())}getInitialComponentData(){const e={anchor:this._anchor,autoWidth:this._autoWidth,autoHeight:this._autoHeight,autoFitWidth:this._autoFitWidth,autoFitHeight:this._autoFitHeight,color:this._color,enableMarkup:this._enableMarkup,fontSize:this._fontSize,maxFontSize:this._maxFontSize,minFontSize:this._minFontSize,height:this._height,lineHeight:this._lineHeight,mask:this._mask,opacity:this._opacity,pivot:this._pivot,spriteFrame:this._spriteFrame,type:this._type,text:this._text,useInput:this._useInput,width:this._width,wrapLines:this._wrapLines},t=D(this._fontAsset);t&&(e.fontAsset=t.id);const i=D(this._spriteAsset);i&&(e.spriteAsset=i.id);const a=D(this._textureAsset);return a&&(e.textureAsset=a.id),this._margin&&(e.margin=this._margin),null!==this._pixelsPerUnit&&(e.pixelsPerUnit=this._pixelsPerUnit),e}get component(){return super.component}set anchor(e){this._anchor=e,this.component&&(this.component.anchor=e)}get anchor(){return this._anchor}set autoWidth(e){this._autoWidth=e,this.component&&(this.component.autoWidth=e)}get autoWidth(){return this._autoWidth}set autoHeight(e){this._autoHeight=e,this.component&&(this.component.autoHeight=e)}get autoHeight(){return this._autoHeight}set color(e){this._color=e,this.component&&(this.component.color=e)}get color(){return this._color}set enableMarkup(e){this._enableMarkup=e,this.component&&(this.component.enableMarkup=e)}get enableMarkup(){return this._enableMarkup}set fontAsset(e){this._fontAsset=e;const t=D(e);this.component&&t&&(this.component.fontAsset=t.id)}get fontAsset(){return this._fontAsset}set fontSize(e){this._fontSize=e,this.component&&(this.component.fontSize=e)}get fontSize(){return this._fontSize}set height(e){this._height=e,this.component&&(this.component.height=e)}get height(){return this._height}set lineHeight(e){this._lineHeight=e,this.component&&(this.component.lineHeight=e)}get lineHeight(){return this._lineHeight}set margin(e){this._margin=e,this.component&&e&&(this.component.margin=e)}get margin(){return this._margin}set mask(e){this._mask=e,this.component&&(this.component.mask=e)}get mask(){return this._mask}set opacity(e){this._opacity=e,this.component&&(this.component.opacity=e)}get opacity(){return this._opacity}set pivot(e){this._pivot=e,this.component&&(this.component.pivot=e)}get pivot(){return this._pivot}set pixelsPerUnit(e){this._pixelsPerUnit=e,this.component&&null!==e&&(this.component.pixelsPerUnit=e)}get pixelsPerUnit(){return this._pixelsPerUnit}set spriteAsset(e){this._spriteAsset=e;const t=D(e);this.component&&t&&(this.component.spriteAsset=t.id)}get spriteAsset(){return this._spriteAsset}set spriteFrame(e){this._spriteFrame=e,this.component&&(this.component.spriteFrame=e)}get spriteFrame(){return this._spriteFrame}set text(e){this._text=e,this.component&&(this.component.text=e)}get text(){return this._text}set textureAsset(e){this._textureAsset=e;const t=D(e);this.component&&t&&(this.component.textureAsset=t.id)}get textureAsset(){return this._textureAsset}set type(e){this._type=e,this.component&&(this.component.type=e)}get type(){return this._type}set useInput(e){this._useInput=e,this.component&&(this.component.useInput=e)}get useInput(){return this._useInput}set width(e){this._width=e,this.component&&(this.component.width=e)}get width(){return this._width}set wrapLines(e){this._wrapLines=e,this.component&&(this.component.wrapLines=e)}get wrapLines(){return this._wrapLines}set autoFitWidth(e){this._autoFitWidth=e,this.component&&(this.component.autoFitWidth=e)}get autoFitWidth(){return this._autoFitWidth}set autoFitHeight(e){this._autoFitHeight=e,this.component&&(this.component.autoFitHeight=e)}get autoFitHeight(){return this._autoFitHeight}set minFontSize(e){this._minFontSize=e,this.component&&(this.component.minFontSize=e)}get minFontSize(){return this._minFontSize}set maxFontSize(e){this._maxFontSize=e,this.component&&(this.component.maxFontSize=e)}get maxFontSize(){return this._maxFontSize}static get observedAttributes(){return[...super.observedAttributes,"anchor","auto-width","auto-height","auto-fit-width","auto-fit-height","color","enable-markup","font-asset","font-size","max-font-size","min-font-size","height","line-height","margin","mask","opacity","pivot","pixels-per-unit","sprite-asset","sprite-frame","text","texture-asset","type","use-input","width","wrap-lines"]}attributeChangedCallback(e,i,a){switch(super.attributeChangedCallback(e,i,a),e){case"anchor":this.anchor=g(a,new t.Vec4(.5,.5,.5,.5),e);break;case"auto-width":this.autoWidth=l(a,!0);break;case"auto-height":this.autoHeight=l(a,!0);break;case"auto-fit-width":this.autoFitWidth=l(a,!1);break;case"auto-fit-height":this.autoFitHeight=l(a,!1);break;case"color":this.color=c(a,t.Color.WHITE,e);break;case"enable-markup":this.enableMarkup=l(a,!1);break;case"font-asset":this.fontAsset=a??"";break;case"font-size":this.fontSize=p(a,32,e);break;case"max-font-size":this.maxFontSize=p(a,32,e);break;case"min-font-size":this.minFontSize=p(a,8,e);break;case"height":this.height=p(a,0,e);break;case"line-height":this.lineHeight=p(a,32,e);break;case"margin":this.margin=g(a,null,e);break;case"mask":this.mask=l(a,!1);break;case"opacity":this.opacity=p(a,1,e);break;case"pivot":this.pivot=m(a,new t.Vec2(.5,.5),e);break;case"pixels-per-unit":this.pixelsPerUnit=p(a,null,e);break;case"sprite-asset":this.spriteAsset=a??"";break;case"sprite-frame":this.spriteFrame=p(a,0,e);break;case"text":this.text=a??"";break;case"texture-asset":this.textureAsset=a??"";break;case"type":this.type=h(a,["group","image","text"],"group",e);break;case"use-input":this.useInput=l(a,!1);break;case"width":this.width=p(a,0,e);break;case"wrap-lines":this.wrapLines=l(a,!1)}}}customElements.define("pc-element",V);class q extends P{_angularDamping=new t.Vec3(1,1,1);_angularEquilibrium=new t.Vec3;_angularLimitsX=new t.Vec2;_angularLimitsY=new t.Vec2;_angularLimitsZ=new t.Vec2;_angularMotionX="locked";_angularMotionY="locked";_angularMotionZ="locked";_angularStiffness=new t.Vec3;_breakImpulse=1/0;_enableCollision=!1;_enableLimits=!1;_entityA="";_entityB="";_limits=new t.Vec2(-45,45);_linearDamping=new t.Vec3(1,1,1);_linearEquilibrium=new t.Vec3;_linearLimitsX=new t.Vec2;_linearLimitsY=new t.Vec2;_linearLimitsZ=new t.Vec2;_linearMotionX="locked";_linearMotionY="locked";_linearMotionZ="locked";_linearStiffness=new t.Vec3;_maxMotorForce=0;_motorSpeed=0;_swingLimitY=45;_swingLimitZ=45;_twistLimit=20;_type="fixed";constructor(){super("joint")}getInitialComponentData(){return{angularDamping:this._angularDamping,angularEquilibrium:this._angularEquilibrium,angularLimitsX:this._angularLimitsX,angularLimitsY:this._angularLimitsY,angularLimitsZ:this._angularLimitsZ,angularMotionX:this._angularMotionX,angularMotionY:this._angularMotionY,angularMotionZ:this._angularMotionZ,angularStiffness:this._angularStiffness,breakImpulse:this._breakImpulse,enableCollision:this._enableCollision,enableLimits:this._enableLimits,entityA:_(this._entityA),entityB:_(this._entityB),limits:this._limits,linearDamping:this._linearDamping,linearEquilibrium:this._linearEquilibrium,linearLimitsX:this._linearLimitsX,linearLimitsY:this._linearLimitsY,linearLimitsZ:this._linearLimitsZ,linearMotionX:this._linearMotionX,linearMotionY:this._linearMotionY,linearMotionZ:this._linearMotionZ,linearStiffness:this._linearStiffness,maxMotorForce:this._maxMotorForce,motorSpeed:this._motorSpeed,swingLimitY:this._swingLimitY,swingLimitZ:this._swingLimitZ,twistLimit:this._twistLimit,type:this._type}}_onBreak(){this.dispatchEvent(new CustomEvent("break",{bubbles:!0,composed:!0}))}initComponent(){const e=this.component;e&&(e.off("break",this._onBreak,this),e.on("break",this._onBreak,this))}get component(){return super.component}set angularDamping(e){this._angularDamping=e,this.component&&(this.component.angularDamping=e)}get angularDamping(){return this._angularDamping}set angularEquilibrium(e){this._angularEquilibrium=e,this.component&&(this.component.angularEquilibrium=e)}get angularEquilibrium(){return this._angularEquilibrium}set angularLimitsX(e){this._angularLimitsX=e,this.component&&(this.component.angularLimitsX=e)}get angularLimitsX(){return this._angularLimitsX}set angularLimitsY(e){this._angularLimitsY=e,this.component&&(this.component.angularLimitsY=e)}get angularLimitsY(){return this._angularLimitsY}set angularLimitsZ(e){this._angularLimitsZ=e,this.component&&(this.component.angularLimitsZ=e)}get angularLimitsZ(){return this._angularLimitsZ}set angularMotionX(e){this._angularMotionX=e,this.component&&(this.component.angularMotionX=e)}get angularMotionX(){return this._angularMotionX}set angularMotionY(e){this._angularMotionY=e,this.component&&(this.component.angularMotionY=e)}get angularMotionY(){return this._angularMotionY}set angularMotionZ(e){this._angularMotionZ=e,this.component&&(this.component.angularMotionZ=e)}get angularMotionZ(){return this._angularMotionZ}set angularStiffness(e){this._angularStiffness=e,this.component&&(this.component.angularStiffness=e)}get angularStiffness(){return this._angularStiffness}set breakImpulse(e){this._breakImpulse=e,this.component&&(this.component.breakImpulse=e)}get breakImpulse(){return this._breakImpulse}set enableCollision(e){this._enableCollision=e,this.component&&(this.component.enableCollision=e)}get enableCollision(){return this._enableCollision}set enableLimits(e){this._enableLimits=e,this.component&&(this.component.enableLimits=e)}get enableLimits(){return this._enableLimits}set entityA(e){this._entityA=e,this.component&&(this.component.entityA=_(e))}get entityA(){return this._entityA}set entityB(e){this._entityB=e,this.component&&(this.component.entityB=_(e))}get entityB(){return this._entityB}set limits(e){this._limits=e,this.component&&(this.component.limits=e)}get limits(){return this._limits}set linearDamping(e){this._linearDamping=e,this.component&&(this.component.linearDamping=e)}get linearDamping(){return this._linearDamping}set linearEquilibrium(e){this._linearEquilibrium=e,this.component&&(this.component.linearEquilibrium=e)}get linearEquilibrium(){return this._linearEquilibrium}set linearLimitsX(e){this._linearLimitsX=e,this.component&&(this.component.linearLimitsX=e)}get linearLimitsX(){return this._linearLimitsX}set linearLimitsY(e){this._linearLimitsY=e,this.component&&(this.component.linearLimitsY=e)}get linearLimitsY(){return this._linearLimitsY}set linearLimitsZ(e){this._linearLimitsZ=e,this.component&&(this.component.linearLimitsZ=e)}get linearLimitsZ(){return this._linearLimitsZ}set linearMotionX(e){this._linearMotionX=e,this.component&&(this.component.linearMotionX=e)}get linearMotionX(){return this._linearMotionX}set linearMotionY(e){this._linearMotionY=e,this.component&&(this.component.linearMotionY=e)}get linearMotionY(){return this._linearMotionY}set linearMotionZ(e){this._linearMotionZ=e,this.component&&(this.component.linearMotionZ=e)}get linearMotionZ(){return this._linearMotionZ}set linearStiffness(e){this._linearStiffness=e,this.component&&(this.component.linearStiffness=e)}get linearStiffness(){return this._linearStiffness}set maxMotorForce(e){this._maxMotorForce=e,this.component&&(this.component.maxMotorForce=e)}get maxMotorForce(){return this._maxMotorForce}set motorSpeed(e){this._motorSpeed=e,this.component&&(this.component.motorSpeed=e)}get motorSpeed(){return this._motorSpeed}set swingLimitY(e){this._swingLimitY=e,this.component&&(this.component.swingLimitY=e)}get swingLimitY(){return this._swingLimitY}set swingLimitZ(e){this._swingLimitZ=e,this.component&&(this.component.swingLimitZ=e)}get swingLimitZ(){return this._swingLimitZ}set twistLimit(e){this._twistLimit=e,this.component&&(this.component.twistLimit=e)}get twistLimit(){return this._twistLimit}set type(e){this._type=e,this.component&&(this.component.type=e)}get type(){return this._type}static get observedAttributes(){return[...super.observedAttributes,"angular-damping","angular-equilibrium","angular-limits-x","angular-limits-y","angular-limits-z","angular-motion-x","angular-motion-y","angular-motion-z","angular-stiffness","break-impulse","enable-collision","enable-limits","entity-a","entity-b","limits","linear-damping","linear-equilibrium","linear-limits-x","linear-limits-y","linear-limits-z","linear-motion-x","linear-motion-y","linear-motion-z","linear-stiffness","max-motor-force","motor-speed","swing-limit-y","swing-limit-z","twist-limit","type"]}attributeChangedCallback(e,i,a){switch(super.attributeChangedCallback(e,i,a),e){case"angular-damping":this.angularDamping=u(a,t.Vec3.ONE,e);break;case"angular-equilibrium":this.angularEquilibrium=u(a,t.Vec3.ZERO,e);break;case"angular-limits-x":this.angularLimitsX=m(a,t.Vec2.ZERO,e);break;case"angular-limits-y":this.angularLimitsY=m(a,t.Vec2.ZERO,e);break;case"angular-limits-z":this.angularLimitsZ=m(a,t.Vec2.ZERO,e);break;case"angular-motion-x":this.angularMotionX=h(a,["locked","limited","free"],"locked",e);break;case"angular-motion-y":this.angularMotionY=h(a,["locked","limited","free"],"locked",e);break;case"angular-motion-z":this.angularMotionZ=h(a,["locked","limited","free"],"locked",e);break;case"angular-stiffness":this.angularStiffness=u(a,t.Vec3.ZERO,e);break;case"break-impulse":this.breakImpulse=p(a,1/0,e);break;case"enable-collision":this.enableCollision=l(a,!1);break;case"enable-limits":this.enableLimits=l(a,!1);break;case"entity-a":this.entityA=a??"";break;case"entity-b":this.entityB=a??"";break;case"limits":this.limits=m(a,new t.Vec2(-45,45),e);break;case"linear-damping":this.linearDamping=u(a,t.Vec3.ONE,e);break;case"linear-equilibrium":this.linearEquilibrium=u(a,t.Vec3.ZERO,e);break;case"linear-limits-x":this.linearLimitsX=m(a,t.Vec2.ZERO,e);break;case"linear-limits-y":this.linearLimitsY=m(a,t.Vec2.ZERO,e);break;case"linear-limits-z":this.linearLimitsZ=m(a,t.Vec2.ZERO,e);break;case"linear-motion-x":this.linearMotionX=h(a,["locked","limited","free"],"locked",e);break;case"linear-motion-y":this.linearMotionY=h(a,["locked","limited","free"],"locked",e);break;case"linear-motion-z":this.linearMotionZ=h(a,["locked","limited","free"],"locked",e);break;case"linear-stiffness":this.linearStiffness=u(a,t.Vec3.ZERO,e);break;case"max-motor-force":this.maxMotorForce=p(a,0,e);break;case"motor-speed":this.motorSpeed=p(a,0,e);break;case"swing-limit-y":this.swingLimitY=p(a,45,e);break;case"swing-limit-z":this.swingLimitZ=p(a,45,e);break;case"twist-limit":this.twistLimit=p(a,20,e);break;case"type":this.type=h(a,["fixed","ball","hinge","slider","6dof"],"fixed",e)}}}customElements.define("pc-joint",q);class W extends P{_minWidth=0;_minHeight=0;_maxWidth=null;_maxHeight=null;_fitWidthProportion=0;_fitHeightProportion=0;_excludeFromLayout=!1;constructor(){super("layoutchild")}getInitialComponentData(){return{minWidth:this._minWidth,minHeight:this._minHeight,maxWidth:this._maxWidth,maxHeight:this._maxHeight,fitWidthProportion:this._fitWidthProportion,fitHeightProportion:this._fitHeightProportion,excludeFromLayout:this._excludeFromLayout}}get component(){return super.component}set minWidth(e){this._minWidth=e,this.component&&(this.component.minWidth=e)}get minWidth(){return this._minWidth}set minHeight(e){this._minHeight=e,this.component&&(this.component.minHeight=e)}get minHeight(){return this._minHeight}set maxWidth(e){this._maxWidth=e,this.component&&(this.component.maxWidth=e)}get maxWidth(){return this._maxWidth}set maxHeight(e){this._maxHeight=e,this.component&&(this.component.maxHeight=e)}get maxHeight(){return this._maxHeight}set fitWidthProportion(e){this._fitWidthProportion=e,this.component&&(this.component.fitWidthProportion=e)}get fitWidthProportion(){return this._fitWidthProportion}set fitHeightProportion(e){this._fitHeightProportion=e,this.component&&(this.component.fitHeightProportion=e)}get fitHeightProportion(){return this._fitHeightProportion}set excludeFromLayout(e){this._excludeFromLayout=e,this.component&&(this.component.excludeFromLayout=e)}get excludeFromLayout(){return this._excludeFromLayout}static get observedAttributes(){return[...super.observedAttributes,"min-width","min-height","max-width","max-height","fit-width-proportion","fit-height-proportion","exclude-from-layout"]}attributeChangedCallback(e,t,i){switch(super.attributeChangedCallback(e,t,i),e){case"min-width":this.minWidth=p(i,0,e);break;case"min-height":this.minHeight=p(i,0,e);break;case"max-width":this.maxWidth=p(i,null,e);break;case"max-height":this.maxHeight=p(i,null,e);break;case"fit-width-proportion":this.fitWidthProportion=p(i,0,e);break;case"fit-height-proportion":this.fitHeightProportion=p(i,0,e);break;case"exclude-from-layout":this.excludeFromLayout=l(i,!1)}}}customElements.define("pc-layoutchild",W);const Y=new Map([["horizontal",t.ORIENTATION_HORIZONTAL],["vertical",t.ORIENTATION_VERTICAL]]),K=new Map([["none",t.FITTING_NONE],["stretch",t.FITTING_STRETCH],["shrink",t.FITTING_SHRINK],["both",t.FITTING_BOTH]]);class Q extends P{_orientation="horizontal";_reverseX=!1;_reverseY=!1;_alignment=new t.Vec2(0,1);_padding=new t.Vec4(0,0,0,0);_spacing=new t.Vec2(0,0);_widthFitting="none";_heightFitting="none";_wrap=!1;constructor(){super("layoutgroup")}getInitialComponentData(){return{orientation:Y.get(this._orientation),reverseX:this._reverseX,reverseY:this._reverseY,alignment:this._alignment,padding:this._padding,spacing:this._spacing,widthFitting:K.get(this._widthFitting),heightFitting:K.get(this._heightFitting),wrap:this._wrap}}get component(){return super.component}set orientation(e){this._orientation=e,this.component&&(this.component.orientation=Y.get(e)??t.ORIENTATION_HORIZONTAL)}get orientation(){return this._orientation}set reverseX(e){this._reverseX=e,this.component&&(this.component.reverseX=e)}get reverseX(){return this._reverseX}set reverseY(e){this._reverseY=e,this.component&&(this.component.reverseY=e)}get reverseY(){return this._reverseY}set alignment(e){this._alignment=e,this.component&&(this.component.alignment=e)}get alignment(){return this._alignment}set padding(e){this._padding=e,this.component&&(this.component.padding=e)}get padding(){return this._padding}set spacing(e){this._spacing=e,this.component&&(this.component.spacing=e)}get spacing(){return this._spacing}set widthFitting(e){this._widthFitting=e,this.component&&(this.component.widthFitting=K.get(e)??t.FITTING_NONE)}get widthFitting(){return this._widthFitting}set heightFitting(e){this._heightFitting=e,this.component&&(this.component.heightFitting=K.get(e)??t.FITTING_NONE)}get heightFitting(){return this._heightFitting}set wrap(e){this._wrap=e,this.component&&(this.component.wrap=e)}get wrap(){return this._wrap}static get observedAttributes(){return[...super.observedAttributes,"orientation","reverse-x","reverse-y","alignment","padding","spacing","width-fitting","height-fitting","wrap"]}attributeChangedCallback(e,i,a){switch(super.attributeChangedCallback(e,i,a),e){case"orientation":this.orientation=h(a,Y,"horizontal",e);break;case"reverse-x":this.reverseX=l(a,!1);break;case"reverse-y":this.reverseY=l(a,!1);break;case"alignment":this.alignment=m(a,new t.Vec2(0,1),e);break;case"padding":this.padding=g(a,t.Vec4.ZERO,e);break;case"spacing":this.spacing=m(a,t.Vec2.ZERO,e);break;case"width-fitting":this.widthFitting=h(a,K,"none",e);break;case"height-fitting":this.heightFitting=h(a,K,"none",e);break;case"wrap":this.wrap=l(a,!1)}}}customElements.define("pc-layoutgroup",Q);const $=new Map([["pcf1-16f",t.SHADOW_PCF1_16F],["pcf1-32f",t.SHADOW_PCF1_32F],["pcf3-16f",t.SHADOW_PCF3_16F],["pcf3-32f",t.SHADOW_PCF3_32F],["pcf5-16f",t.SHADOW_PCF5_16F],["pcf5-32f",t.SHADOW_PCF5_32F],["vsm-16f",t.SHADOW_VSM_16F],["vsm-32f",t.SHADOW_VSM_32F],["pcss-32f",t.SHADOW_PCSS_32F]]);class X extends P{_castShadows=!1;_color=new t.Color(1,1,1);_innerConeAngle=40;_intensity=1;_normalOffsetBias=.05;_outerConeAngle=45;_range=10;_shadowBias=.2;_shadowDistance=16;_shadowIntensity=1;_shadowResolution=1024;_shadowType="pcf3-32f";_type="directional";_vsmBias=.01;_vsmBlurSize=11;_penumbraSize=1;_penumbraFalloff=1;_shadowSamples=16;_shadowBlockerSamples=16;constructor(){super("light")}getInitialComponentData(){return{castShadows:this._castShadows,color:this._color,innerConeAngle:this._innerConeAngle,intensity:this._intensity,normalOffsetBias:this._normalOffsetBias,outerConeAngle:this._outerConeAngle,penumbraFalloff:this._penumbraFalloff,penumbraSize:this._penumbraSize,range:this._range,shadowBias:this._shadowBias,shadowBlockerSamples:this._shadowBlockerSamples,shadowDistance:this._shadowDistance,shadowIntensity:this._shadowIntensity,shadowResolution:this._shadowResolution,shadowSamples:this._shadowSamples,shadowType:$.get(this._shadowType),type:this._type,vsmBias:this._vsmBias,vsmBlurSize:this._vsmBlurSize}}get component(){return super.component}set castShadows(e){this._castShadows=e,this.component&&(this.component.castShadows=e)}get castShadows(){return this._castShadows}set color(e){this._color=e,this.component&&(this.component.color=e)}get color(){return this._color}set innerConeAngle(e){this._innerConeAngle=e,this.component&&(this.component.innerConeAngle=e)}get innerConeAngle(){return this._innerConeAngle}set intensity(e){this._intensity=e,this.component&&(this.component.intensity=e)}get intensity(){return this._intensity}set normalOffsetBias(e){this._normalOffsetBias=e,this.component&&(this.component.normalOffsetBias=e)}get normalOffsetBias(){return this._normalOffsetBias}set outerConeAngle(e){this._outerConeAngle=e,this.component&&(this.component.outerConeAngle=e)}get outerConeAngle(){return this._outerConeAngle}set range(e){this._range=e,this.component&&(this.component.range=e)}get range(){return this._range}set shadowBias(e){this._shadowBias=e,this.component&&(this.component.shadowBias=e)}get shadowBias(){return this._shadowBias}set shadowDistance(e){this._shadowDistance=e,this.component&&(this.component.shadowDistance=e)}get shadowDistance(){return this._shadowDistance}set shadowIntensity(e){this._shadowIntensity=e,this.component&&(this.component.shadowIntensity=e)}get shadowIntensity(){return this._shadowIntensity}set shadowResolution(e){this._shadowResolution=e,this.component&&(this.component.shadowResolution=e)}get shadowResolution(){return this._shadowResolution}set shadowType(e){this._shadowType=e,this.component&&(this.component.shadowType=$.get(e)??t.SHADOW_PCF3_32F)}get shadowType(){return this._shadowType}set type(e){this._type=e,this.component&&(this.component.type=e)}get type(){return this._type}set vsmBias(e){this._vsmBias=e,this.component&&(this.component.vsmBias=e)}get vsmBias(){return this._vsmBias}set vsmBlurSize(e){this._vsmBlurSize=e,this.component&&(this.component.vsmBlurSize=e)}get vsmBlurSize(){return this._vsmBlurSize}set penumbraSize(e){this._penumbraSize=e,this.component&&(this.component.penumbraSize=e)}get penumbraSize(){return this._penumbraSize}set penumbraFalloff(e){this._penumbraFalloff=e,this.component&&(this.component.penumbraFalloff=e)}get penumbraFalloff(){return this._penumbraFalloff}set shadowSamples(e){this._shadowSamples=e,this.component&&(this.component.shadowSamples=e)}get shadowSamples(){return this._shadowSamples}set shadowBlockerSamples(e){this._shadowBlockerSamples=e,this.component&&(this.component.shadowBlockerSamples=e)}get shadowBlockerSamples(){return this._shadowBlockerSamples}static get observedAttributes(){return[...super.observedAttributes,"color","cast-shadows","intensity","inner-cone-angle","normal-offset-bias","outer-cone-angle","penumbra-falloff","penumbra-size","range","shadow-bias","shadow-blocker-samples","shadow-distance","shadow-intensity","shadow-resolution","shadow-samples","shadow-type","type","vsm-bias","vsm-blur-size"]}attributeChangedCallback(e,i,a){switch(super.attributeChangedCallback(e,i,a),e){case"color":this.color=c(a,t.Color.WHITE,e);break;case"cast-shadows":this.castShadows=l(a,!1);break;case"inner-cone-angle":this.innerConeAngle=p(a,40,e);break;case"intensity":this.intensity=p(a,1,e);break;case"normal-offset-bias":this.normalOffsetBias=p(a,.05,e);break;case"outer-cone-angle":this.outerConeAngle=p(a,45,e);break;case"penumbra-falloff":this.penumbraFalloff=p(a,1,e);break;case"penumbra-size":this.penumbraSize=p(a,1,e);break;case"range":this.range=p(a,10,e);break;case"shadow-bias":this.shadowBias=p(a,.2,e);break;case"shadow-distance":this.shadowDistance=p(a,16,e);break;case"shadow-blocker-samples":this.shadowBlockerSamples=p(a,16,e);break;case"shadow-resolution":this.shadowResolution=p(a,1024,e);break;case"shadow-intensity":this.shadowIntensity=p(a,1,e);break;case"shadow-samples":this.shadowSamples=p(a,16,e);break;case"shadow-type":this.shadowType=h(a,$,"pcf3-32f",e);break;case"type":this.type=h(a,["directional","omni","spot"],"directional",e);break;case"vsm-bias":this.vsmBias=p(a,.01,e);break;case"vsm-blur-size":this.vsmBlurSize=p(a,11,e)}}}customElements.define("pc-light",X);class J extends P{_asset="";constructor(){super("particlesystem")}getInitialComponentData(){const e=D(this._asset);if(!e||!e.resource)return{};if(e.resource.colorMapAsset){const t=e.resource.colorMapAsset,i=D(t)?.id;i&&(e.resource.colorMapAsset=i)}return e.resource}get component(){return super.component}applyConfig(e){if(this.component)for(const t in e)Object.hasOwn(e,t)&&(this.component[t]=e[t])}async _loadAsset(){await(this.closestApp?.ready());const e=D(this._asset);e&&(e.loaded?this.applyConfig(e.resource):e.once("load",()=>{this.applyConfig(e.resource)}))}set asset(e){this._asset=e,this.isConnected&&this._loadAsset()}get asset(){return this._asset}play(){this.component&&this.component.play()}pause(){this.component&&this.component.pause()}reset(){this.component&&this.component.reset()}stop(){this.component&&this.component.stop()}static get observedAttributes(){return[...super.observedAttributes,"asset"]}attributeChangedCallback(e,t,i){if(super.attributeChangedCallback(e,t,i),"asset"===e)this.asset=i??""}}customElements.define("pc-particles",J);const Z=new Map([["none",t.BLEND_NONE],["normal",t.BLEND_NORMAL],["additive",t.BLEND_ADDITIVE],["additive-alpha",t.BLEND_ADDITIVEALPHA],["premultiplied",t.BLEND_PREMULTIPLIED],["multiplicative",t.BLEND_MULTIPLICATIVE],["multiplicative-2x",t.BLEND_MULTIPLICATIVE2X],["screen",t.BLEND_SCREEN],["min",t.BLEND_MIN],["max",t.BLEND_MAX],["subtractive",t.BLEND_SUBTRACTIVE]]),ee=new Map([["none",t.CULLFACE_NONE],["back",t.CULLFACE_BACK],["front",t.CULLFACE_FRONT],["front-and-back",t.CULLFACE_FRONTANDBACK]]),te=new Map([["none",t.FRESNEL_NONE],["schlick",t.FRESNEL_SCHLICK]]),ie=new Map([["none",t.SPECOCC_NONE],["ao",t.SPECOCC_AO],["gloss-dependent",t.SPECOCC_GLOSSDEPENDENT]]),ae=["none","bayer8","bluenoise","ignnoise"],se=["r","g","b","a","rgb"],ne=["r","g","b","a"],oe=["gloss","gloss-invert","gloss-map"],re=["roughness","roughness-map"];class le extends HTMLElement{_alphaTest=0;_alphaToCoverage=!1;_aoIntensity=1;_aoMap="";_aoMapChannel="g";_aoMapOffset=new t.Vec2(0,0);_aoMapRotation=0;_aoMapTiling=new t.Vec2(1,1);_aoMapUv=0;_blendType="none";_bumpiness=1;_cull="back";_depthBias=0;_depthTest=!0;_depthWrite=!0;_diffuse=new t.Color(1,1,1);_diffuseMap="";_diffuseMapChannel="rgb";_diffuseMapOffset=new t.Vec2(0,0);_diffuseMapRotation=0;_diffuseMapTiling=new t.Vec2(1,1);_diffuseMapUv=0;_emissive=new t.Color(0,0,0);_emissiveIntensity=1;_emissiveMap="";_emissiveMapChannel="rgb";_emissiveMapOffset=new t.Vec2(0,0);_emissiveMapRotation=0;_emissiveMapTiling=new t.Vec2(1,1);_emissiveMapUv=0;_enableGGXSpecular=!1;_fresnelModel="schlick";_gloss=.25;_glossInvert=!1;_glossMap="";_glossMapChannel="g";_glossMapOffset=new t.Vec2(0,0);_glossMapRotation=0;_glossMapTiling=new t.Vec2(1,1);_glossMapUv=0;_heightMap="";_heightMapChannel="g";_heightMapFactor=1;_heightMapOffset=new t.Vec2(0,0);_heightMapRotation=0;_heightMapTiling=new t.Vec2(1,1);_heightMapUv=0;_metalness=0;_metalnessMap="";_metalnessMapChannel="g";_metalnessMapOffset=new t.Vec2(0,0);_metalnessMapRotation=0;_metalnessMapTiling=new t.Vec2(1,1);_metalnessMapUv=0;_name="Untitled";_normalMap="";_normalMapOffset=new t.Vec2(0,0);_normalMapRotation=0;_normalMapTiling=new t.Vec2(1,1);_normalMapUv=0;_occludeDirect=!1;_occludeSpecular="ao";_opacity=1;_opacityDither="none";_opacityFadesSpecular=!0;_opacityMap="";_opacityMapChannel="a";_opacityMapOffset=new t.Vec2(0,0);_opacityMapRotation=0;_opacityMapTiling=new t.Vec2(1,1);_opacityMapUv=0;_slopeDepthBias=0;_specular=new t.Color(0,0,0);_specularityFactor=1;_twoSidedLighting=!1;_useFog=!0;_useLighting=!0;_useMetalness=!0;_useMetalnessSpecularColor=!1;_useSkybox=!0;_useTonemap=!0;_mapHandles=new Map;_updateScheduled=!1;_glossConflictWarned=!1;material=null;async connectedCallback(){const e=this.parentElement?.closest("pc-app")??null;if(e&&this.parentElement===e){if(await e.ready(),this.isConnected&&this.parentElement===e&&!this.material){if(!e.app)return;this._createMaterial()}}else console.warn(`pc-material '${this.id}' must be a direct child of pc-app - material not created`)}_createMaterial(){const e=new t.StandardMaterial;this.material=e,e.alphaTest=this._alphaTest,e.alphaToCoverage=this._alphaToCoverage,e.aoIntensity=this._aoIntensity,e.aoMapChannel=this._aoMapChannel,e.aoMapOffset=this._aoMapOffset,e.aoMapRotation=this._aoMapRotation,e.aoMapTiling=this._aoMapTiling,e.aoMapUv=this._aoMapUv,e.blendType=Z.get(this._blendType)??t.BLEND_NONE,e.bumpiness=this._bumpiness,e.cull=ee.get(this._cull)??t.CULLFACE_BACK,e.depthBias=this._depthBias,e.depthTest=this._depthTest,e.depthWrite=this._depthWrite,e.diffuse=this._diffuse,e.diffuseMapChannel=this._diffuseMapChannel,e.diffuseMapOffset=this._diffuseMapOffset,e.diffuseMapRotation=this._diffuseMapRotation,e.diffuseMapTiling=this._diffuseMapTiling,e.diffuseMapUv=this._diffuseMapUv,e.emissive=this._emissive,e.emissiveIntensity=this._emissiveIntensity,e.emissiveMapChannel=this._emissiveMapChannel,e.emissiveMapOffset=this._emissiveMapOffset,e.emissiveMapRotation=this._emissiveMapRotation,e.emissiveMapTiling=this._emissiveMapTiling,e.emissiveMapUv=this._emissiveMapUv,e.enableGGXSpecular=this._enableGGXSpecular,e.fresnelModel=te.get(this._fresnelModel)??t.FRESNEL_SCHLICK,e.gloss=this._gloss,e.glossInvert=this._glossInvert,e.glossMapChannel=this._glossMapChannel,e.glossMapOffset=this._glossMapOffset,e.glossMapRotation=this._glossMapRotation,e.glossMapTiling=this._glossMapTiling,e.glossMapUv=this._glossMapUv,e.heightMapChannel=this._heightMapChannel,e.heightMapFactor=this._heightMapFactor,e.heightMapOffset=this._heightMapOffset,e.heightMapRotation=this._heightMapRotation,e.heightMapTiling=this._heightMapTiling,e.heightMapUv=this._heightMapUv,e.metalness=this._metalness,e.metalnessMapChannel=this._metalnessMapChannel,e.metalnessMapOffset=this._metalnessMapOffset,e.metalnessMapRotation=this._metalnessMapRotation,e.metalnessMapTiling=this._metalnessMapTiling,e.metalnessMapUv=this._metalnessMapUv,e.name=this._name,e.normalMapOffset=this._normalMapOffset,e.normalMapRotation=this._normalMapRotation,e.normalMapTiling=this._normalMapTiling,e.normalMapUv=this._normalMapUv,e.occludeDirect=this._occludeDirect,e.occludeSpecular=ie.get(this._occludeSpecular)??t.SPECOCC_AO,e.opacity=this._opacity,e.opacityDither=this._opacityDither,e.opacityFadesSpecular=this._opacityFadesSpecular,e.opacityMapChannel=this._opacityMapChannel,e.opacityMapOffset=this._opacityMapOffset,e.opacityMapRotation=this._opacityMapRotation,e.opacityMapTiling=this._opacityMapTiling,e.opacityMapUv=this._opacityMapUv,e.slopeDepthBias=this._slopeDepthBias,e.specular=this._specular,e.specularityFactor=this._specularityFactor,e.twoSidedLighting=this._twoSidedLighting,e.useFog=this._useFog,e.useLighting=this._useLighting,e.useMetalness=this._useMetalness,e.useMetalnessSpecularColor=this._useMetalnessSpecularColor,e.useSkybox=this._useSkybox,e.useTonemap=this._useTonemap,this.aoMap=this._aoMap,this.diffuseMap=this._diffuseMap,this.emissiveMap=this._emissiveMap,this.glossMap=this._glossMap,this.heightMap=this._heightMap,this.metalnessMap=this._metalnessMap,this.normalMap=this._normalMap,this.opacityMap=this._opacityMap,e.update()}disconnectedCallback(){for(const e of this._mapHandles.values())e.off();this._mapHandles.clear(),this.material&&(this.material.destroy(),this.material=null)}_scheduleUpdate(){this._updateScheduled||(this._updateScheduled=!0,queueMicrotask(()=>{this._updateScheduled=!1,this.material?.update()}))}_warnGlossConflict(){const e=e=>`'${e.join("', '")}'`,t=re.filter(e=>this.hasAttribute(e)),i=oe.filter(e=>this.hasAttribute(e));0!==t.length&&0!==i.length?this._glossConflictWarned||(this._glossConflictWarned=!0,console.warn(`pc-material '${this.id}' sets both ${e(t)} and ${e(i)} - the roughness-* attributes invert gloss, so the two families contradict each other. Use one or the other.`)):this._glossConflictWarned=!1}_setMap(e,t){if(this._mapHandles.get(t)?.off(),this._mapHandles.delete(t),!this.material)return;if(!e)return this.material[t]=null,void this._scheduleUpdate();const i=D(e);i&&(i.loaded?this._applyMap(t,i.resource):this._mapHandles.set(t,i.once("load",()=>{this._mapHandles.delete(t),this._applyMap(t,i.resource)})))}_applyMap(e,t){this.material&&(this.material[e]=t,this._scheduleUpdate())}set alphaTest(e){this._alphaTest=e,this.material&&(this.material.alphaTest=e,this._scheduleUpdate())}get alphaTest(){return this._alphaTest}set alphaToCoverage(e){this._alphaToCoverage=e,this.material&&(this.material.alphaToCoverage=e,this._scheduleUpdate())}get alphaToCoverage(){return this._alphaToCoverage}set aoIntensity(e){this._aoIntensity=e,this.material&&(this.material.aoIntensity=e,this._scheduleUpdate())}get aoIntensity(){return this._aoIntensity}set aoMap(e){this._aoMap=e,this._setMap(e,"aoMap")}get aoMap(){return this._aoMap}set aoMapChannel(e){this._aoMapChannel=e,this.material&&(this.material.aoMapChannel=e,this._scheduleUpdate())}get aoMapChannel(){return this._aoMapChannel}set aoMapOffset(e){this._aoMapOffset=e,this.material&&(this.material.aoMapOffset=e,this._scheduleUpdate())}get aoMapOffset(){return this._aoMapOffset}set aoMapRotation(e){this._aoMapRotation=e,this.material&&(this.material.aoMapRotation=e,this._scheduleUpdate())}get aoMapRotation(){return this._aoMapRotation}set aoMapTiling(e){this._aoMapTiling=e,this.material&&(this.material.aoMapTiling=e,this._scheduleUpdate())}get aoMapTiling(){return this._aoMapTiling}set aoMapUv(e){this._aoMapUv=e,this.material&&(this.material.aoMapUv=e,this._scheduleUpdate())}get aoMapUv(){return this._aoMapUv}set blendType(e){this._blendType=e,this.material&&(this.material.blendType=Z.get(e)??t.BLEND_NONE,this._scheduleUpdate())}get blendType(){return this._blendType}set bumpiness(e){this._bumpiness=e,this.material&&(this.material.bumpiness=e,this._scheduleUpdate())}get bumpiness(){return this._bumpiness}set cull(e){this._cull=e,this.material&&(this.material.cull=ee.get(e)??t.CULLFACE_BACK,this._scheduleUpdate())}get cull(){return this._cull}set depthBias(e){this._depthBias=e,this.material&&(this.material.depthBias=e,this._scheduleUpdate())}get depthBias(){return this._depthBias}set depthTest(e){this._depthTest=e,this.material&&(this.material.depthTest=e,this._scheduleUpdate())}get depthTest(){return this._depthTest}set depthWrite(e){this._depthWrite=e,this.material&&(this.material.depthWrite=e,this._scheduleUpdate())}get depthWrite(){return this._depthWrite}set diffuse(e){this._diffuse=e,this.material&&(this.material.diffuse=e,this._scheduleUpdate())}get diffuse(){return this._diffuse}set diffuseMap(e){this._diffuseMap=e,this._setMap(e,"diffuseMap")}get diffuseMap(){return this._diffuseMap}set diffuseMapChannel(e){this._diffuseMapChannel=e,this.material&&(this.material.diffuseMapChannel=e,this._scheduleUpdate())}get diffuseMapChannel(){return this._diffuseMapChannel}set diffuseMapOffset(e){this._diffuseMapOffset=e,this.material&&(this.material.diffuseMapOffset=e,this._scheduleUpdate())}get diffuseMapOffset(){return this._diffuseMapOffset}set diffuseMapRotation(e){this._diffuseMapRotation=e,this.material&&(this.material.diffuseMapRotation=e,this._scheduleUpdate())}get diffuseMapRotation(){return this._diffuseMapRotation}set diffuseMapTiling(e){this._diffuseMapTiling=e,this.material&&(this.material.diffuseMapTiling=e,this._scheduleUpdate())}get diffuseMapTiling(){return this._diffuseMapTiling}set diffuseMapUv(e){this._diffuseMapUv=e,this.material&&(this.material.diffuseMapUv=e,this._scheduleUpdate())}get diffuseMapUv(){return this._diffuseMapUv}set emissive(e){this._emissive=e,this.material&&(this.material.emissive=e,this._scheduleUpdate())}get emissive(){return this._emissive}set emissiveIntensity(e){this._emissiveIntensity=e,this.material&&(this.material.emissiveIntensity=e,this._scheduleUpdate())}get emissiveIntensity(){return this._emissiveIntensity}set emissiveMap(e){this._emissiveMap=e,this._setMap(e,"emissiveMap")}get emissiveMap(){return this._emissiveMap}set emissiveMapChannel(e){this._emissiveMapChannel=e,this.material&&(this.material.emissiveMapChannel=e,this._scheduleUpdate())}get emissiveMapChannel(){return this._emissiveMapChannel}set emissiveMapOffset(e){this._emissiveMapOffset=e,this.material&&(this.material.emissiveMapOffset=e,this._scheduleUpdate())}get emissiveMapOffset(){return this._emissiveMapOffset}set emissiveMapRotation(e){this._emissiveMapRotation=e,this.material&&(this.material.emissiveMapRotation=e,this._scheduleUpdate())}get emissiveMapRotation(){return this._emissiveMapRotation}set emissiveMapTiling(e){this._emissiveMapTiling=e,this.material&&(this.material.emissiveMapTiling=e,this._scheduleUpdate())}get emissiveMapTiling(){return this._emissiveMapTiling}set emissiveMapUv(e){this._emissiveMapUv=e,this.material&&(this.material.emissiveMapUv=e,this._scheduleUpdate())}get emissiveMapUv(){return this._emissiveMapUv}set enableGGXSpecular(e){this._enableGGXSpecular=e,this.material&&(this.material.enableGGXSpecular=e,this._scheduleUpdate())}get enableGGXSpecular(){return this._enableGGXSpecular}set fresnelModel(e){this._fresnelModel=e,this.material&&(this.material.fresnelModel=te.get(e)??t.FRESNEL_SCHLICK,this._scheduleUpdate())}get fresnelModel(){return this._fresnelModel}set gloss(e){this._gloss=e,this.material&&(this.material.gloss=e,this._scheduleUpdate())}get gloss(){return this._gloss}set glossInvert(e){this._glossInvert=e,this.material&&(this.material.glossInvert=e,this._scheduleUpdate())}get glossInvert(){return this._glossInvert}set glossMap(e){this._glossMap=e,this._setMap(e,"glossMap")}get glossMap(){return this._glossMap}set glossMapChannel(e){this._glossMapChannel=e,this.material&&(this.material.glossMapChannel=e,this._scheduleUpdate())}get glossMapChannel(){return this._glossMapChannel}set glossMapOffset(e){this._glossMapOffset=e,this.material&&(this.material.glossMapOffset=e,this._scheduleUpdate())}get glossMapOffset(){return this._glossMapOffset}set glossMapRotation(e){this._glossMapRotation=e,this.material&&(this.material.glossMapRotation=e,this._scheduleUpdate())}get glossMapRotation(){return this._glossMapRotation}set glossMapTiling(e){this._glossMapTiling=e,this.material&&(this.material.glossMapTiling=e,this._scheduleUpdate())}get glossMapTiling(){return this._glossMapTiling}set glossMapUv(e){this._glossMapUv=e,this.material&&(this.material.glossMapUv=e,this._scheduleUpdate())}get glossMapUv(){return this._glossMapUv}set heightMap(e){this._heightMap=e,this._setMap(e,"heightMap")}get heightMap(){return this._heightMap}set heightMapChannel(e){this._heightMapChannel=e,this.material&&(this.material.heightMapChannel=e,this._scheduleUpdate())}get heightMapChannel(){return this._heightMapChannel}set heightMapFactor(e){this._heightMapFactor=e,this.material&&(this.material.heightMapFactor=e,this._scheduleUpdate())}get heightMapFactor(){return this._heightMapFactor}set heightMapOffset(e){this._heightMapOffset=e,this.material&&(this.material.heightMapOffset=e,this._scheduleUpdate())}get heightMapOffset(){return this._heightMapOffset}set heightMapRotation(e){this._heightMapRotation=e,this.material&&(this.material.heightMapRotation=e,this._scheduleUpdate())}get heightMapRotation(){return this._heightMapRotation}set heightMapTiling(e){this._heightMapTiling=e,this.material&&(this.material.heightMapTiling=e,this._scheduleUpdate())}get heightMapTiling(){return this._heightMapTiling}set heightMapUv(e){this._heightMapUv=e,this.material&&(this.material.heightMapUv=e,this._scheduleUpdate())}get heightMapUv(){return this._heightMapUv}set metalness(e){this._metalness=e,this.material&&(this.material.metalness=e,this._scheduleUpdate())}get metalness(){return this._metalness}set metalnessMap(e){this._metalnessMap=e,this._setMap(e,"metalnessMap")}get metalnessMap(){return this._metalnessMap}set metalnessMapChannel(e){this._metalnessMapChannel=e,this.material&&(this.material.metalnessMapChannel=e,this._scheduleUpdate())}get metalnessMapChannel(){return this._metalnessMapChannel}set metalnessMapOffset(e){this._metalnessMapOffset=e,this.material&&(this.material.metalnessMapOffset=e,this._scheduleUpdate())}get metalnessMapOffset(){return this._metalnessMapOffset}set metalnessMapRotation(e){this._metalnessMapRotation=e,this.material&&(this.material.metalnessMapRotation=e,this._scheduleUpdate())}get metalnessMapRotation(){return this._metalnessMapRotation}set metalnessMapTiling(e){this._metalnessMapTiling=e,this.material&&(this.material.metalnessMapTiling=e,this._scheduleUpdate())}get metalnessMapTiling(){return this._metalnessMapTiling}set metalnessMapUv(e){this._metalnessMapUv=e,this.material&&(this.material.metalnessMapUv=e,this._scheduleUpdate())}get metalnessMapUv(){return this._metalnessMapUv}set name(e){this._name=e,this.material&&(this.material.name=e)}get name(){return this._name}set normalMap(e){this._normalMap=e,this._setMap(e,"normalMap")}get normalMap(){return this._normalMap}set normalMapOffset(e){this._normalMapOffset=e,this.material&&(this.material.normalMapOffset=e,this._scheduleUpdate())}get normalMapOffset(){return this._normalMapOffset}set normalMapRotation(e){this._normalMapRotation=e,this.material&&(this.material.normalMapRotation=e,this._scheduleUpdate())}get normalMapRotation(){return this._normalMapRotation}set normalMapTiling(e){this._normalMapTiling=e,this.material&&(this.material.normalMapTiling=e,this._scheduleUpdate())}get normalMapTiling(){return this._normalMapTiling}set normalMapUv(e){this._normalMapUv=e,this.material&&(this.material.normalMapUv=e,this._scheduleUpdate())}get normalMapUv(){return this._normalMapUv}set occludeDirect(e){this._occludeDirect=e,this.material&&(this.material.occludeDirect=e,this._scheduleUpdate())}get occludeDirect(){return this._occludeDirect}set occludeSpecular(e){this._occludeSpecular=e,this.material&&(this.material.occludeSpecular=ie.get(e)??t.SPECOCC_AO,this._scheduleUpdate())}get occludeSpecular(){return this._occludeSpecular}set opacity(e){this._opacity=e,this.material&&(this.material.opacity=e,this._scheduleUpdate())}get opacity(){return this._opacity}set opacityDither(e){this._opacityDither=e,this.material&&(this.material.opacityDither=e,this._scheduleUpdate())}get opacityDither(){return this._opacityDither}set opacityFadesSpecular(e){this._opacityFadesSpecular=e,this.material&&(this.material.opacityFadesSpecular=e,this._scheduleUpdate())}get opacityFadesSpecular(){return this._opacityFadesSpecular}set opacityMap(e){this._opacityMap=e,this._setMap(e,"opacityMap")}get opacityMap(){return this._opacityMap}set opacityMapChannel(e){this._opacityMapChannel=e,this.material&&(this.material.opacityMapChannel=e,this._scheduleUpdate())}get opacityMapChannel(){return this._opacityMapChannel}set opacityMapOffset(e){this._opacityMapOffset=e,this.material&&(this.material.opacityMapOffset=e,this._scheduleUpdate())}get opacityMapOffset(){return this._opacityMapOffset}set opacityMapRotation(e){this._opacityMapRotation=e,this.material&&(this.material.opacityMapRotation=e,this._scheduleUpdate())}get opacityMapRotation(){return this._opacityMapRotation}set opacityMapTiling(e){this._opacityMapTiling=e,this.material&&(this.material.opacityMapTiling=e,this._scheduleUpdate())}get opacityMapTiling(){return this._opacityMapTiling}set opacityMapUv(e){this._opacityMapUv=e,this.material&&(this.material.opacityMapUv=e,this._scheduleUpdate())}get opacityMapUv(){return this._opacityMapUv}set roughness(e){this.gloss=e,this.glossInvert=!0}get roughness(){return this._gloss}set roughnessMap(e){this.glossMap=e,this.glossInvert=!0}get roughnessMap(){return this._glossMap}set slopeDepthBias(e){this._slopeDepthBias=e,this.material&&(this.material.slopeDepthBias=e,this._scheduleUpdate())}get slopeDepthBias(){return this._slopeDepthBias}set specular(e){this._specular=e,this.material&&(this.material.specular=e,this._scheduleUpdate())}get specular(){return this._specular}set specularityFactor(e){this._specularityFactor=e,this.material&&(this.material.specularityFactor=e,this._scheduleUpdate())}get specularityFactor(){return this._specularityFactor}set twoSidedLighting(e){this._twoSidedLighting=e,this.material&&(this.material.twoSidedLighting=e,this._scheduleUpdate())}get twoSidedLighting(){return this._twoSidedLighting}set useFog(e){this._useFog=e,this.material&&(this.material.useFog=e,this._scheduleUpdate())}get useFog(){return this._useFog}set useLighting(e){this._useLighting=e,this.material&&(this.material.useLighting=e,this._scheduleUpdate())}get useLighting(){return this._useLighting}set useMetalness(e){this._useMetalness=e,this.material&&(this.material.useMetalness=e,this._scheduleUpdate())}get useMetalness(){return this._useMetalness}set useMetalnessSpecularColor(e){this._useMetalnessSpecularColor=e,this.material&&(this.material.useMetalnessSpecularColor=e,this._scheduleUpdate())}get useMetalnessSpecularColor(){return this._useMetalnessSpecularColor}set useSkybox(e){this._useSkybox=e,this.material&&(this.material.useSkybox=e,this._scheduleUpdate())}get useSkybox(){return this._useSkybox}set useTonemap(e){this._useTonemap=e,this.material&&(this.material.useTonemap=e,this._scheduleUpdate())}get useTonemap(){return this._useTonemap}static get(e){const t=document.querySelector(`pc-material[id="${e}"]`);return t?.material}static get observedAttributes(){return["alpha-test","alpha-to-coverage","ao-intensity","ao-map","ao-map-channel","ao-map-offset","ao-map-rotation","ao-map-tiling","ao-map-uv","blend-type","bumpiness","cull","depth-bias","depth-test","depth-write","diffuse","diffuse-map","diffuse-map-channel","diffuse-map-offset","diffuse-map-rotation","diffuse-map-tiling","diffuse-map-uv","emissive","emissive-intensity","emissive-map","emissive-map-channel","emissive-map-offset","emissive-map-rotation","emissive-map-tiling","emissive-map-uv","enable-ggx-specular","fresnel-model","gloss","gloss-invert","gloss-map","gloss-map-channel","gloss-map-offset","gloss-map-rotation","gloss-map-tiling","gloss-map-uv","height-map","height-map-channel","height-map-factor","height-map-offset","height-map-rotation","height-map-tiling","height-map-uv","metalness","metalness-map","metalness-map-channel","metalness-map-offset","metalness-map-rotation","metalness-map-tiling","metalness-map-uv","name","normal-map","normal-map-offset","normal-map-rotation","normal-map-tiling","normal-map-uv","occlude-direct","occlude-specular","opacity","opacity-dither","opacity-fades-specular","opacity-map","opacity-map-channel","opacity-map-offset","opacity-map-rotation","opacity-map-tiling","opacity-map-uv","roughness","roughness-map","slope-depth-bias","specular","specularity-factor","two-sided-lighting","use-fog","use-lighting","use-metalness","use-metalness-specular-color","use-skybox","use-tonemap"]}attributeChangedCallback(e,i,a){switch(e){case"alpha-test":this.alphaTest=p(a,0,e);break;case"alpha-to-coverage":this.alphaToCoverage=l(a,!1);break;case"ao-intensity":this.aoIntensity=p(a,1,e);break;case"ao-map":this.aoMap=a??"";break;case"ao-map-channel":this.aoMapChannel=h(a,ne,"g",e);break;case"ao-map-offset":this.aoMapOffset=m(a,new t.Vec2(0,0),e);break;case"ao-map-rotation":this.aoMapRotation=p(a,0,e);break;case"ao-map-tiling":this.aoMapTiling=m(a,new t.Vec2(1,1),e);break;case"ao-map-uv":this.aoMapUv=p(a,0,e);break;case"blend-type":this.blendType=h(a,Z,"none",e);break;case"bumpiness":this.bumpiness=p(a,1,e);break;case"cull":this.cull=h(a,ee,"back",e);break;case"depth-bias":this.depthBias=p(a,0,e);break;case"depth-test":this.depthTest=l(a,!0);break;case"depth-write":this.depthWrite=l(a,!0);break;case"diffuse":this.diffuse=c(a,new t.Color(1,1,1),e);break;case"diffuse-map":this.diffuseMap=a??"";break;case"diffuse-map-channel":this.diffuseMapChannel=h(a,se,"rgb",e);break;case"diffuse-map-offset":this.diffuseMapOffset=m(a,new t.Vec2(0,0),e);break;case"diffuse-map-rotation":this.diffuseMapRotation=p(a,0,e);break;case"diffuse-map-tiling":this.diffuseMapTiling=m(a,new t.Vec2(1,1),e);break;case"diffuse-map-uv":this.diffuseMapUv=p(a,0,e);break;case"emissive":this.emissive=c(a,new t.Color(0,0,0),e);break;case"emissive-intensity":this.emissiveIntensity=p(a,1,e);break;case"emissive-map":this.emissiveMap=a??"";break;case"emissive-map-channel":this.emissiveMapChannel=h(a,se,"rgb",e);break;case"emissive-map-offset":this.emissiveMapOffset=m(a,new t.Vec2(0,0),e);break;case"emissive-map-rotation":this.emissiveMapRotation=p(a,0,e);break;case"emissive-map-tiling":this.emissiveMapTiling=m(a,new t.Vec2(1,1),e);break;case"emissive-map-uv":this.emissiveMapUv=p(a,0,e);break;case"enable-ggx-specular":this.enableGGXSpecular=l(a,!1);break;case"fresnel-model":this.fresnelModel=h(a,te,"schlick",e);break;case"gloss":this.gloss=p(a,.25,e),this._warnGlossConflict();break;case"gloss-invert":this.glossInvert=l(a,!1),this._warnGlossConflict();break;case"gloss-map":this.glossMap=a??"",this._warnGlossConflict();break;case"gloss-map-channel":this.glossMapChannel=h(a,ne,"g",e);break;case"gloss-map-offset":this.glossMapOffset=m(a,new t.Vec2(0,0),e);break;case"gloss-map-rotation":this.glossMapRotation=p(a,0,e);break;case"gloss-map-tiling":this.glossMapTiling=m(a,new t.Vec2(1,1),e);break;case"gloss-map-uv":this.glossMapUv=p(a,0,e);break;case"height-map":this.heightMap=a??"";break;case"height-map-channel":this.heightMapChannel=h(a,ne,"g",e);break;case"height-map-factor":this.heightMapFactor=p(a,1,e);break;case"height-map-offset":this.heightMapOffset=m(a,new t.Vec2(0,0),e);break;case"height-map-rotation":this.heightMapRotation=p(a,0,e);break;case"height-map-tiling":this.heightMapTiling=m(a,new t.Vec2(1,1),e);break;case"height-map-uv":this.heightMapUv=p(a,0,e);break;case"metalness":this.metalness=p(a,0,e);break;case"metalness-map":this.metalnessMap=a??"";break;case"metalness-map-channel":this.metalnessMapChannel=h(a,ne,"g",e);break;case"metalness-map-offset":this.metalnessMapOffset=m(a,new t.Vec2(0,0),e);break;case"metalness-map-rotation":this.metalnessMapRotation=p(a,0,e);break;case"metalness-map-tiling":this.metalnessMapTiling=m(a,new t.Vec2(1,1),e);break;case"metalness-map-uv":this.metalnessMapUv=p(a,0,e);break;case"name":this.name=a??"Untitled";break;case"normal-map":this.normalMap=a??"";break;case"normal-map-offset":this.normalMapOffset=m(a,new t.Vec2(0,0),e);break;case"normal-map-rotation":this.normalMapRotation=p(a,0,e);break;case"normal-map-tiling":this.normalMapTiling=m(a,new t.Vec2(1,1),e);break;case"normal-map-uv":this.normalMapUv=p(a,0,e);break;case"occlude-direct":this.occludeDirect=l(a,!1);break;case"occlude-specular":this.occludeSpecular=h(a,ie,"ao",e);break;case"opacity":this.opacity=p(a,1,e);break;case"opacity-dither":this.opacityDither=h(a,ae,"none",e);break;case"opacity-fades-specular":this.opacityFadesSpecular=l(a,!0);break;case"opacity-map":this.opacityMap=a??"";break;case"opacity-map-channel":this.opacityMapChannel=h(a,ne,"a",e);break;case"opacity-map-offset":this.opacityMapOffset=m(a,new t.Vec2(0,0),e);break;case"opacity-map-rotation":this.opacityMapRotation=p(a,0,e);break;case"opacity-map-tiling":this.opacityMapTiling=m(a,new t.Vec2(1,1),e);break;case"opacity-map-uv":this.opacityMapUv=p(a,0,e);break;case"roughness":this.gloss=p(a,.25,e),this.glossInvert=null!==a,this._warnGlossConflict();break;case"roughness-map":this.glossMap=a??"",this.glossInvert=null!==a,this._warnGlossConflict();break;case"slope-depth-bias":this.slopeDepthBias=p(a,0,e);break;case"specular":this.specular=c(a,new t.Color(0,0,0),e);break;case"specularity-factor":this.specularityFactor=p(a,1,e);break;case"two-sided-lighting":this.twoSidedLighting=l(a,!1);break;case"use-fog":this.useFog=l(a,!0);break;case"use-lighting":this.useLighting=l(a,!0);break;case"use-metalness":this.useMetalness=l(a,!0);break;case"use-metalness-specular-color":this.useMetalnessSpecularColor=l(a,!1);break;case"use-skybox":this.useSkybox=l(a,!0);break;case"use-tonemap":this.useTonemap=l(a,!0)}}}customElements.define("pc-material",le);class ce extends P{_castShadows=!0;_material="";_receiveShadows=!0;_type="box";constructor(){super("render")}getInitialComponentData(){return{type:this._type,castShadows:this._castShadows,material:le.get(this._material),receiveShadows:this._receiveShadows}}get component(){return super.component}set type(e){this._type=e,this.component&&(this.component.type=e)}get type(){return this._type}set castShadows(e){this._castShadows=e,this.component&&(this.component.castShadows=e)}get castShadows(){return this._castShadows}set material(e){this._material=e;const t=le.get(e);this.component&&t&&(this.component.material=t)}get material(){return this._material}set receiveShadows(e){this._receiveShadows=e,this.component&&(this.component.receiveShadows=e)}get receiveShadows(){return this._receiveShadows}static get observedAttributes(){return[...super.observedAttributes,"cast-shadows","material","receive-shadows","type"]}attributeChangedCallback(e,t,i){switch(super.attributeChangedCallback(e,t,i),e){case"cast-shadows":this.castShadows=l(i,!0);break;case"material":this.material=i??"";break;case"receive-shadows":this.receiveShadows=l(i,!0);break;case"type":this.type=h(i,["box","capsule","cone","cylinder","plane","sphere"],"box",e)}}}customElements.define("pc-render",ce);class he extends P{_angularDamping=0;_angularFactor=new t.Vec3(1,1,1);_friction=.5;_linearDamping=0;_linearFactor=new t.Vec3(1,1,1);_mass=1;_restitution=0;_rollingFriction=0;_type="static";constructor(){super("rigidbody")}getInitialComponentData(){return{angularDamping:this._angularDamping,angularFactor:this._angularFactor,friction:this._friction,linearDamping:this._linearDamping,linearFactor:this._linearFactor,mass:this._mass,restitution:this._restitution,rollingFriction:this._rollingFriction,type:this._type}}get component(){return super.component}set angularDamping(e){this._angularDamping=e,this.component&&(this.component.angularDamping=e)}get angularDamping(){return this._angularDamping}set angularFactor(e){this._angularFactor=e,this.component&&(this.component.angularFactor=e)}get angularFactor(){return this._angularFactor}set friction(e){this._friction=e,this.component&&(this.component.friction=e)}get friction(){return this._friction}set linearDamping(e){this._linearDamping=e,this.component&&(this.component.linearDamping=e)}get linearDamping(){return this._linearDamping}set linearFactor(e){this._linearFactor=e,this.component&&(this.component.linearFactor=e)}get linearFactor(){return this._linearFactor}set mass(e){this._mass=e,this.component&&(this.component.mass=e)}get mass(){return this._mass}set restitution(e){this._restitution=e,this.component&&(this.component.restitution=e)}get restitution(){return this._restitution}set rollingFriction(e){this._rollingFriction=e,this.component&&(this.component.rollingFriction=e)}get rollingFriction(){return this._rollingFriction}set type(e){this._type=e,this.component&&(this.component.type=e)}get type(){return this._type}static get observedAttributes(){return[...super.observedAttributes,"angular-damping","angular-factor","friction","linear-damping","linear-factor","mass","restitution","rolling-friction","type"]}attributeChangedCallback(e,i,a){switch(super.attributeChangedCallback(e,i,a),e){case"angular-damping":this.angularDamping=p(a,0,e);break;case"angular-factor":this.angularFactor=u(a,t.Vec3.ONE,e);break;case"friction":this.friction=p(a,.5,e);break;case"linear-damping":this.linearDamping=p(a,0,e);break;case"linear-factor":this.linearFactor=u(a,t.Vec3.ONE,e);break;case"mass":this.mass=p(a,1,e);break;case"restitution":this.restitution=p(a,0,e);break;case"rolling-friction":this.rollingFriction=p(a,0,e);break;case"type":this.type=h(a,["static","dynamic","kinematic"],"static",e)}}}customElements.define("pc-rigidbody",he);const pe=new Map([["none",t.SCALEMODE_NONE],["blend",t.SCALEMODE_BLEND]]);class be extends P{_screenSpace=!1;_resolution=new t.Vec2(640,320);_referenceResolution=new t.Vec2(640,320);_priority=0;_scaleMode="none";_scaleBlend=.5;constructor(){super("screen")}getInitialComponentData(){return{priority:this._priority,referenceResolution:this._referenceResolution,resolution:this._resolution,scaleBlend:this._scaleBlend,scaleMode:pe.get(this._scaleMode)??t.SCALEMODE_NONE,screenSpace:this._screenSpace}}get component(){return super.component}set priority(e){this._priority=e,this.component&&(this.component.priority=this._priority)}get priority(){return this._priority}set referenceResolution(e){this._referenceResolution=e,this.component&&(this.component.referenceResolution=this._referenceResolution)}get referenceResolution(){return this._referenceResolution}set resolution(e){this._resolution=e,this.component&&(this.component.resolution=this._resolution)}get resolution(){return this._resolution}set scaleBlend(e){this._scaleBlend=e,this.component&&(this.component.scaleBlend=this._scaleBlend)}get scaleBlend(){return this._scaleBlend}set scaleMode(e){this._scaleMode=e,this.component&&(this.component.scaleMode=pe.get(e)??t.SCALEMODE_NONE)}get scaleMode(){return this._scaleMode}set screenSpace(e){this._screenSpace=e,this.component&&(this.component.screenSpace=this._screenSpace)}get screenSpace(){return this._screenSpace}static get observedAttributes(){return[...super.observedAttributes,"screen-space","resolution","reference-resolution","priority","scale-blend","scale-mode"]}attributeChangedCallback(e,i,a){switch(super.attributeChangedCallback(e,i,a),e){case"priority":this.priority=p(a,0,e);break;case"reference-resolution":this.referenceResolution=m(a,new t.Vec2(640,320),e);break;case"resolution":this.resolution=m(a,new t.Vec2(640,320),e);break;case"scale-blend":this.scaleBlend=p(a,.5,e);break;case"scale-mode":this.scaleMode=h(a,pe,"none",e);break;case"screen-space":this.screenSpace=l(a,!1)}}}customElements.define("pc-screen",be);const de=new Map([["horizontal",t.ORIENTATION_HORIZONTAL],["vertical",t.ORIENTATION_VERTICAL]]);class me extends P{_orientation="horizontal";_value=0;_handleSize=.5;_handle="";constructor(){super("scrollbar")}getInitialComponentData(){const e={orientation:de.get(this._orientation),value:this._value,handleSize:this._handleSize},t=_(this._handle);return t&&(e.handleEntity=t),e}get component(){return super.component}set orientation(e){this._orientation=e,this.component&&(this.component.orientation=de.get(e)??t.ORIENTATION_HORIZONTAL)}get orientation(){return this._orientation}set value(e){this._value=e,this.component&&(this.component.value=e)}get value(){return this._value}set handleSize(e){this._handleSize=e,this.component&&(this.component.handleSize=e)}get handleSize(){return this._handleSize}set handle(e){this._handle=e;const t=_(e);this.component&&t&&(this.component.handleEntity=t)}get handle(){return this._handle}static get observedAttributes(){return[...super.observedAttributes,"orientation","value","handle-size","handle"]}attributeChangedCallback(e,t,i){switch(super.attributeChangedCallback(e,t,i),e){case"orientation":this.orientation=h(i,de,"horizontal",e);break;case"value":this.value=p(i,0,e);break;case"handle-size":this.handleSize=p(i,.5,e);break;case"handle":this.handle=i??""}}}customElements.define("pc-scrollbar",me);const ue=new Map([["clamp",t.SCROLL_MODE_CLAMP],["bounce",t.SCROLL_MODE_BOUNCE],["infinite",t.SCROLL_MODE_INFINITE]]),ge=new Map([["always",t.SCROLLBAR_VISIBILITY_SHOW_ALWAYS],["when-required",t.SCROLLBAR_VISIBILITY_SHOW_WHEN_REQUIRED]]);class _e extends P{_horizontal=!0;_vertical=!0;_scrollMode="bounce";_bounceAmount=.1;_friction=.05;_useMouseWheel=!0;_mouseWheelSensitivity=new t.Vec2(1,1);_horizontalScrollbarVisibility="when-required";_verticalScrollbarVisibility="when-required";_viewport="";_content="";_horizontalScrollbar="";_verticalScrollbar="";constructor(){super("scrollview")}getInitialComponentData(){const e={horizontal:this._horizontal,vertical:this._vertical,scrollMode:ue.get(this._scrollMode),bounceAmount:this._bounceAmount,friction:this._friction,useMouseWheel:this._useMouseWheel,mouseWheelSensitivity:this._mouseWheelSensitivity,horizontalScrollbarVisibility:ge.get(this._horizontalScrollbarVisibility),verticalScrollbarVisibility:ge.get(this._verticalScrollbarVisibility)},t=_(this._viewport);t&&(e.viewportEntity=t);const i=_(this._content);i&&(e.contentEntity=i);const a=_(this._horizontalScrollbar);a&&(e.horizontalScrollbarEntity=a);const s=_(this._verticalScrollbar);return s&&(e.verticalScrollbarEntity=s),e}get component(){return super.component}set horizontal(e){this._horizontal=e,this.component&&(this.component.horizontal=e)}get horizontal(){return this._horizontal}set vertical(e){this._vertical=e,this.component&&(this.component.vertical=e)}get vertical(){return this._vertical}set scrollMode(e){this._scrollMode=e,this.component&&(this.component.scrollMode=ue.get(e)??t.SCROLL_MODE_BOUNCE)}get scrollMode(){return this._scrollMode}set bounceAmount(e){this._bounceAmount=e,this.component&&(this.component.bounceAmount=e)}get bounceAmount(){return this._bounceAmount}set friction(e){this._friction=e,this.component&&(this.component.friction=e)}get friction(){return this._friction}set useMouseWheel(e){this._useMouseWheel=e,this.component&&(this.component.useMouseWheel=e)}get useMouseWheel(){return this._useMouseWheel}set mouseWheelSensitivity(e){this._mouseWheelSensitivity=e,this.component&&(this.component.mouseWheelSensitivity=e)}get mouseWheelSensitivity(){return this._mouseWheelSensitivity}set horizontalScrollbarVisibility(e){this._horizontalScrollbarVisibility=e,this.component&&(this.component.horizontalScrollbarVisibility=ge.get(e)??t.SCROLLBAR_VISIBILITY_SHOW_WHEN_REQUIRED)}get horizontalScrollbarVisibility(){return this._horizontalScrollbarVisibility}set verticalScrollbarVisibility(e){this._verticalScrollbarVisibility=e,this.component&&(this.component.verticalScrollbarVisibility=ge.get(e)??t.SCROLLBAR_VISIBILITY_SHOW_WHEN_REQUIRED)}get verticalScrollbarVisibility(){return this._verticalScrollbarVisibility}set viewport(e){this._viewport=e;const t=_(e);this.component&&t&&(this.component.viewportEntity=t)}get viewport(){return this._viewport}set content(e){this._content=e;const t=_(e);this.component&&t&&(this.component.contentEntity=t)}get content(){return this._content}set horizontalScrollbar(e){this._horizontalScrollbar=e;const t=_(e);this.component&&t&&(this.component.horizontalScrollbarEntity=t)}get horizontalScrollbar(){return this._horizontalScrollbar}set verticalScrollbar(e){this._verticalScrollbar=e;const t=_(e);this.component&&t&&(this.component.verticalScrollbarEntity=t)}get verticalScrollbar(){return this._verticalScrollbar}static get observedAttributes(){return[...super.observedAttributes,"horizontal","vertical","scroll-mode","bounce-amount","friction","use-mouse-wheel","mouse-wheel-sensitivity","horizontal-scrollbar-visibility","vertical-scrollbar-visibility","viewport","content","horizontal-scrollbar","vertical-scrollbar"]}attributeChangedCallback(e,i,a){switch(super.attributeChangedCallback(e,i,a),e){case"horizontal":this.horizontal=l(a,!0);break;case"vertical":this.vertical=l(a,!0);break;case"scroll-mode":this.scrollMode=h(a,ue,"bounce",e);break;case"bounce-amount":this.bounceAmount=p(a,.1,e);break;case"friction":this.friction=p(a,.05,e);break;case"use-mouse-wheel":this.useMouseWheel=l(a,!0);break;case"mouse-wheel-sensitivity":this.mouseWheelSensitivity=m(a,t.Vec2.ONE,e);break;case"horizontal-scrollbar-visibility":this.horizontalScrollbarVisibility=h(a,ge,"when-required",e);break;case"vertical-scrollbar-visibility":this.verticalScrollbarVisibility=h(a,ge,"when-required",e);break;case"viewport":this.viewport=a??"";break;case"content":this.content=a??"";break;case"horizontal-scrollbar":this.horizontalScrollbar=a??"";break;case"vertical-scrollbar":this.verticalScrollbar=a??""}}}customElements.define("pc-scrollview",_e);class fe extends i{_attributes={};_enabled=!0;_script=null;set scriptAttributes(e){this._attributes=e??{},this.dispatchEvent(new CustomEvent("scriptattributeschange",{detail:{attributes:this._attributes},bubbles:!0}))}get scriptAttributes(){return this._attributes}set enabled(e){this._enabled=e,this.dispatchEvent(new CustomEvent("scriptenablechange",{detail:{enabled:e},bubbles:!0}))}get enabled(){return this._enabled}set name(e){this.setAttribute("name",e)}get name(){return this.getAttribute("name")??""}get script(){return this._script}connectedCallback(){"PC-SCRIPTS"!==this.parentElement?.tagName&&console.warn(`pc-script '${this.getAttribute("name")}' must be a direct child of pc-scripts - script not created`)}disconnectedCallback(){this._resetReady()}_onScriptCreated(){this._onReady()}static get observedAttributes(){return["attributes","enabled","name"]}attributeChangedCallback(e,t,i){switch(e){case"attributes":if(null===i){this.scriptAttributes={};break}try{this.scriptAttributes=JSON.parse(i)}catch(e){console.warn(`Invalid 'attributes' JSON on pc-script '${this.getAttribute("name")}': ${e.message}`)}break;case"enabled":this.enabled=l(i,!0);break;case"name":null!==t&&t!==i&&this.dispatchEvent(new CustomEvent("scriptnamechange",{detail:{oldName:t,newName:i},bubbles:!0}))}}}customElements.define("pc-script",fe);const ve=new Set([...fe.observedAttributes,"accesskey","autocapitalize","autofocus","class","contenteditable","dir","draggable","exportparts","hidden","id","inert","is","itemid","itemprop","itemref","itemscope","itemtype","lang","nonce","part","popover","role","slot","spellcheck","style","tabindex","title","translate"]),ye=e=>ve.has(e)||e.startsWith("data-")||e.startsWith("aria-")||e.startsWith("_")||e.startsWith("on")&&e in HTMLElement.prototype,ke=new Set(["app","entity","destroy","initialize","postInitialize","postUpdate","swap","update"]),Me=e=>e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase()),we=(e,t)=>(i,a)=>{const s=o(i,e);return s?new t(s):(console.warn(`Invalid script attribute value '${a}'. Expected ${e} space-separated numbers after 'vec${e}:'.`),a)},Se=new Map([["asset",(e,t)=>{const i=D(e);return i||(console.warn(`Unable to resolve '${t}' in script attributes - no pc-asset found with id '${e}'.`),t)}],["entity",(e,t)=>{const i=_(e);return i||(console.warn(`Unable to resolve '${t}' in script attributes - no pc-entity found matching '${e}'.`),t)}],["vec2",we(2,t.Vec2)],["vec3",we(3,t.Vec3)],["vec4",we(4,t.Vec4)],["color",(e,i)=>{const a=o(e,4)??o(e,3);return a?new t.Color(a):(console.warn(`Invalid script attribute value '${i}'. Expected 3 or 4 space-separated numbers after 'color:'.`),i)}]]),Ee=e=>{const t=e.indexOf(":");if(t<=0)return null;const i=Se.get(e.slice(0,t));return i?{convert:i,rest:e.slice(t+1)}:null};class Ce extends P{observer;constructor(){super("script"),this.observer=new MutationObserver(this.handleMutations.bind(this)),this.addEventListener("scriptattributeschange",this.handleScriptAttributesChange.bind(this)),this.addEventListener("scriptenablechange",this.handleScriptEnableChange.bind(this)),this.addEventListener("scriptnamechange",this.handleScriptNameChange.bind(this))}connectedCallback(){return this.observer.observe(this,{childList:!0,subtree:!0,attributes:!0}),super.connectedCallback()}initComponent(){this.querySelectorAll(":scope > pc-script").forEach(e=>{this.createScript(e)})}convertAttributes(e){if("string"==typeof e){const t=Ee(e);return t?t.convert(t.rest,e):e}if(Array.isArray(e))return e.map(e=>this.convertAttributes(e));if(e&&"object"==typeof e){const t={};for(const i in e)t[i]=this.convertAttributes(e[i]);return t}return e}mergeDeep(e,t){for(const i in t){const a=t[i],s=e[i];if(this.isMathType(s)&&Array.isArray(a)){const t=this.arrayToMathType(s,a,i);t&&(e[i]=t);continue}a&&"object"==typeof a&&!Array.isArray(a)&&Object.getPrototypeOf(a)===Object.prototype?(s&&"object"==typeof s||(e[i]={}),this.mergeDeep(e[i],a)):e[i]=a}return e}isMathType(e){return e instanceof t.Vec2||e instanceof t.Vec3||e instanceof t.Vec4||e instanceof t.Color||e instanceof t.Quat}arrayToMathType(e,i,a){if(i.every(e=>"number"==typeof e&&Number.isFinite(e))){if(e instanceof t.Vec2&&2===i.length)return new t.Vec2(i);if(e instanceof t.Vec3&&3===i.length)return new t.Vec3(i);if(e instanceof t.Vec4&&4===i.length)return new t.Vec4(i);if(e instanceof t.Color&&(3===i.length||4===i.length))return new t.Color(i);if(e instanceof t.Quat&&3===i.length)return(new t.Quat).setFromEulerAngles(i[0],i[1],i[2])}return console.warn(`Cannot convert script attribute '${a}' array [${i}] to ${e.constructor.name}. Keeping the current value.`),null}applyAttributes(e,t,i){const a=this.convertAttributes(t);if(a&&"object"==typeof a&&(delete a.enabled,i))for(const e of i)delete a[e];this.mergeDeep(e,a)}inlineKeys(e){const t=new Set;for(const i of Array.from(e.attributes))ye(i.name)||t.add(Me(i.name));return t}scriptFor(e){const t=e.getAttribute("name");if(!t||!this.component)return null;const i=this.component.get(t);return i&&i===e._script?i:null}handleScriptAttributesChange(e){const t=e.target,i=this.scriptFor(t);i&&this.applyAttributes(i,e.detail.attributes,this.inlineKeys(t))}handleScriptEnableChange(e){const t=e.target;this.handleMutations(this.observer.takeRecords());const i=this.scriptFor(t);i&&(i.enabled=e.detail.enabled)}handleScriptNameChange(e){const t=e.target;if(t.parentElement!==this)return;if(!this.component)return;const{oldName:i}=e.detail;i&&t._script&&this.component.get(i)===t._script&&this.destroyScript(i),t._script=null,this.createScript(t)}createScript(e){const t=e.getAttribute("name");if(!t||!this.component)return null;const i=this.component.create(t,{enabled:!1});return i?(e._script=i,this.applyAttributes(i,e.scriptAttributes,this.inlineKeys(e)),this.applyInlineAttributes(i,e),i.enabled=e.enabled,e._onScriptCreated(),i):null}applyInlineAttributes(e,t){const i=t.getAttribute("name")??"";for(const a of Array.from(t.attributes))ye(a.name)||this.setScriptProperty(e,i,a.name,a.value)}applyScriptProperty(e,t){const i=this.scriptFor(e);if(!i)return;const a=e.getAttribute(t);if(null===a){const a=Me(t),s=e.scriptAttributes[a];return void(void 0!==s&&this.applyAttributes(i,{[a]:s}))}this.setScriptProperty(i,e.getAttribute("name")??"",t,a)}setScriptProperty(e,i,a,s){const n=Me(a);try{const r=e[n];if("function"==typeof r||ke.has(n))return void console.warn(`Ignoring attribute '${a}' on pc-script '${i}' - '${n}' is part of the Script API.`);if("string"==typeof r)e[n]=s;else if(Ee(s)){const t=this.convertAttributes(s);t===s&&null!=r||(e[n]=t)}else if("number"==typeof r)e[n]=p(s,r,a);else if("boolean"==typeof r)e[n]=l(s,r);else if(r instanceof t.Vec2)e[n]=m(s,r,a);else if(r instanceof t.Vec3)e[n]=u(s,r,a);else if(r instanceof t.Vec4)e[n]=g(s,r,a);else if(r instanceof t.Color)e[n]=c(s,r,a);else if(r instanceof t.Quat)e[n]=b(s,r,a);else{const t=((e,t)=>{const i=new Set(Object.keys(e));for(const t of Object.getOwnPropertyNames(Object.getPrototypeOf(e)))i.add(t);for(const e of i)if(e!==t&&e.toLowerCase()===t.toLowerCase())return e;return null})(e,n);if(t)return void console.warn(`Script '${i}' has no attribute '${n}' - did you mean '${o=t,o.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}'? Attribute names are kebab-case.`);console.warn(`Script '${i}' has no typed attribute '${n}' - assigning the raw string from '${a}'.`),e[n]=s}}catch(e){console.warn(`Error applying attribute '${a}' to script '${i}': ${e.message}`)}var o}destroyScript(e){this.component&&this.component.destroy(e)}handleMutations(e){for(const t of e){if("attributes"===t.type){const e=t.target;e instanceof fe&&e.parentElement===this&&t.attributeName&&!ye(t.attributeName)&&this.applyScriptProperty(e,t.attributeName);continue}t.target===this&&(t.removedNodes.forEach(e=>{if(e instanceof fe){const t=e.getAttribute("name");t&&e._script&&this.component&&this.component.get(t)===e._script&&this.destroyScript(t),e._script=null}}),t.addedNodes.forEach(e=>{e instanceof fe&&this.createScript(e)}))}}disconnectedCallback(){this.observer.disconnect(),super.disconnectedCallback?.()}get component(){return super.component}}customElements.define("pc-scripts",Ce);class xe extends P{_distanceModel="linear";_maxDistance=1e4;_pitch=1;_positional=!1;_refDistance=1;_rollOffFactor=1;_volume=1;constructor(){super("sound")}getInitialComponentData(){return{distanceModel:this._distanceModel,maxDistance:this._maxDistance,pitch:this._pitch,positional:this._positional,refDistance:this._refDistance,rollOffFactor:this._rollOffFactor,volume:this._volume}}get component(){return super.component}set distanceModel(e){this._distanceModel=e,this.component&&(this.component.distanceModel=e)}get distanceModel(){return this._distanceModel}set maxDistance(e){this._maxDistance=e,this.component&&(this.component.maxDistance=e)}get maxDistance(){return this._maxDistance}set pitch(e){this._pitch=e,this.component&&(this.component.pitch=e)}get pitch(){return this._pitch}set positional(e){this._positional=e,this.component&&(this.component.positional=e)}get positional(){return this._positional}set refDistance(e){this._refDistance=e,this.component&&(this.component.refDistance=e)}get refDistance(){return this._refDistance}set rollOffFactor(e){this._rollOffFactor=e,this.component&&(this.component.rollOffFactor=e)}get rollOffFactor(){return this._rollOffFactor}set volume(e){this._volume=e,this.component&&(this.component.volume=e)}get volume(){return this._volume}static get observedAttributes(){return[...super.observedAttributes,"distance-model","max-distance","pitch","positional","ref-distance","roll-off-factor","volume"]}attributeChangedCallback(e,t,i){switch(super.attributeChangedCallback(e,t,i),e){case"distance-model":this.distanceModel=h(i,["exponential","inverse","linear"],"linear",e);break;case"max-distance":this.maxDistance=p(i,1e4,e);break;case"pitch":this.pitch=p(i,1,e);break;case"positional":this.positional=l(i,!1);break;case"ref-distance":this.refDistance=p(i,1,e);break;case"roll-off-factor":this.rollOffFactor=p(i,1,e);break;case"volume":this.volume=p(i,1,e)}}}customElements.define("pc-sounds",xe);class Ae extends i{_asset="";_autoPlay=!1;_duration=null;_loop=!1;_name="";_overlap=!1;_pitch=1;_startTime=0;_volume=1;_soundElement=null;_connectionGeneration=0;soundSlot=null;async connectedCallback(){const e=++this._connectionGeneration,t=this.soundElement;await(t?.ready());const i=t?.component;if(e!==this._connectionGeneration||!i)return;const a={autoPlay:this._autoPlay,loop:this._loop,overlap:this._overlap,pitch:this._pitch,startTime:this._startTime,volume:this._volume};this._duration&&(a.duration=this._duration),this._soundElement=t,this.soundSlot=i.addSlot(this._name,a),this.asset=this._asset,this._autoPlay&&this.soundSlot.play(),this._onReady()}disconnectedCallback(){this._connectionGeneration++,this._soundElement?.component?.removeSlot(this._name),this._soundElement=null,this.soundSlot=null,this._resetReady()}get soundElement(){const e=this.parentElement;return e instanceof xe?e:(console.warn("pc-sound must be a direct child of a pc-sounds element"),null)}set asset(e){if(this._asset=e,this.soundSlot){const t=D(e)?.id;t&&(this.soundSlot.asset=t)}}get asset(){return this._asset}set autoPlay(e){this._autoPlay=e,this.soundSlot&&(this.soundSlot.autoPlay=e)}get autoPlay(){return this._autoPlay}set duration(e){this._duration=e,this.soundSlot&&null!==e&&(this.soundSlot.duration=e)}get duration(){return this._duration}set loop(e){this._loop=e,this.soundSlot&&(this.soundSlot.loop=e)}get loop(){return this._loop}set name(e){this._name=e,this.soundSlot&&(this.soundSlot.name=e)}get name(){return this._name}set overlap(e){this._overlap=e,this.soundSlot&&(this.soundSlot.overlap=e)}get overlap(){return this._overlap}set pitch(e){this._pitch=e,this.soundSlot&&(this.soundSlot.pitch=e)}get pitch(){return this._pitch}set startTime(e){this._startTime=e,this.soundSlot&&(this.soundSlot.startTime=e)}get startTime(){return this._startTime}set volume(e){this._volume=e,this.soundSlot&&(this.soundSlot.volume=e)}get volume(){return this._volume}static get observedAttributes(){return["asset","auto-play","duration","loop","name","overlap","pitch","start-time","volume"]}attributeChangedCallback(e,t,i){switch(e){case"asset":this.asset=i??"";break;case"auto-play":this.autoPlay=l(i,!1);break;case"duration":this.duration=p(i,null,e);break;case"loop":this.loop=l(i,!1);break;case"name":this.name=i??"";break;case"overlap":this.overlap=l(i,!1);break;case"pitch":this.pitch=p(i,1,e);break;case"start-time":this.startTime=p(i,0,e);break;case"volume":this.volume=p(i,1,e)}}}customElements.define("pc-sound",Ae);class Fe extends P{_asset="";_castShadows=!1;_lodBaseDistance=5;_lodMultiplier=3;_lodRangeMin=0;_lodRangeMax=99;constructor(){super("gsplat")}getInitialComponentData(){return{asset:D(this._asset),castShadows:this._castShadows,lodBaseDistance:this._lodBaseDistance,lodMultiplier:this._lodMultiplier,lodRangeMin:this._lodRangeMin,lodRangeMax:this._lodRangeMax}}get component(){return super.component}set asset(e){this._asset=e;const t=D(e);this.component&&t&&(this.component.asset=t)}get asset(){return this._asset}set castShadows(e){this._castShadows=e,this.component&&(this.component.castShadows=e)}get castShadows(){return this._castShadows}set lodBaseDistance(e){this._lodBaseDistance=e,this.component&&(this.component.lodBaseDistance=e)}get lodBaseDistance(){return this._lodBaseDistance}set lodMultiplier(e){this._lodMultiplier=e,this.component&&(this.component.lodMultiplier=e)}get lodMultiplier(){return this._lodMultiplier}set lodRangeMin(e){this._lodRangeMin=e,this.component&&(this.component.lodRangeMin=e)}get lodRangeMin(){return this._lodRangeMin}set lodRangeMax(e){this._lodRangeMax=e,this.component&&(this.component.lodRangeMax=e)}get lodRangeMax(){return this._lodRangeMax}static get observedAttributes(){return[...super.observedAttributes,"asset","cast-shadows","lod-base-distance","lod-multiplier","lod-range-min","lod-range-max"]}attributeChangedCallback(e,t,i){switch(super.attributeChangedCallback(e,t,i),e){case"asset":this.asset=i??"";break;case"cast-shadows":this.castShadows=l(i,!1);break;case"lod-base-distance":this.lodBaseDistance=p(i,5,e);break;case"lod-multiplier":this.lodMultiplier=p(i,3,e);break;case"lod-range-min":this.lodRangeMin=p(i,0,e);break;case"lod-range-max":this.lodRangeMax=p(i,99,e)}}}customElements.define("pc-gsplat",Fe);const Re=(e,t)=>{const i=(t.get(e.name)??0)>1?` [${e.index}]`:"",a=e.components.length>0?` (${e.components.join(", ")})`:"",s=e.materials.length>0?` {${e.materials.map(e=>e.name??"null").join(", ")}}`:"";return`${e.name}${i}${a}${s}`};class Oe extends i{_asset="";_entity=null;_loadGeneration=0;_loadHandle=null;_errorHandle=null;get entity(){return this._entity}hierarchy(){const e=this._entity;if(!e)return null;const t=new Map,i=(e,a)=>{const s=t.get(e.name)??0;t.set(e.name,s+1);const n={name:e.name,path:a||e.name,index:s,components:Object.keys(e.c??{}).sort(),materials:(e.render?.meshInstances??[]).map((e,t)=>({index:t,name:e.material?.name??null})),children:e.children.map(e=>i(e,a?`${a}/${e.name}`:e.name))};return Object.defineProperty(n,"toString",{enumerable:!1,value:()=>((e,t)=>{const i=[Re(e,t)],a=(e,s)=>{e.children.forEach((n,o)=>{const r=o===e.children.length-1;i.push(`${s}${r?"└─ ":"├─ "}${Re(n,t)}`),a(n,`${s}${r?" ":"│ "}`)})};return a(e,""),i.join("\n")})(n,t)}),n};return i(e,"")}connectedCallback(){if(!this.closestApp){const e=this._asset?` '${this._asset}'`:"";return void console.warn(`pc-model${e} must be a descendant of pc-app - model not created`)}this._loadModel()}disconnectedCallback(){this._loadGeneration++,this._detachLoadHandlers(),this._unloadModel(),this._resetReady()}_detachLoadHandlers(){this._loadHandle?.off(),this._loadHandle=null,this._errorHandle?.off(),this._errorHandle=null}_announceLoad(){this._onReady(),this.dispatchEvent(new Event("load"))}_instantiate(e){const t=this._loadGeneration,i=e.instantiateRenderEntity();this._entity=i,e.animations.length>0&&(i.addComponent("anim"),i.anim.assignAnimation("animation",e.animations[0].resource));const a=this.closestEntity;if(a)a.ready().then(()=>{t===this._loadGeneration&&(a.entity.addChild(i),this._announceLoad())});else{const e=this.closestApp;e&&e.ready().then(()=>{t===this._loadGeneration&&(e.app.root.addChild(i),this._announceLoad())})}}async _loadModel(){this._unloadModel();const e=++this._loadGeneration;this._detachLoadHandlers(),this._resetReady();const t=this.closestApp;if(!t)return;if(await t.ready(),e!==this._loadGeneration)return;const i=D(this._asset);i?i.loaded?this._instantiate(i.resource):(this._loadHandle=i.once("load",()=>{this._detachLoadHandlers(),e===this._loadGeneration&&this._instantiate(i.resource)}),this._errorHandle=i.once("error",t=>{this._detachLoadHandlers(),e===this._loadGeneration&&(this.dispatchEvent(new ErrorEvent("error",{message:t instanceof Error?t.message:String(t)})),this._onReady())})):this._asset&&console.warn(`pc-model could not find asset '${this._asset}' - model not created`)}_unloadModel(){this._entity?.destroy(),this._entity=null}set asset(e){this._asset=e,this.isConnected&&this._loadModel()}get asset(){return this._asset}static get observedAttributes(){return["asset"]}attributeChangedCallback(e,t,i){if("asset"===e)this.asset=i??""}}customElements.define("pc-model",Oe);class Le extends k{_name="";_index=null;_state="pending";_path=null;_host=null;_hostListener=null;_destroyHandle=null;_authored={};_authoredRender=null;_baseline=null;_enabled=null;_position=null;_rotation=null;_scale=null;_tags=null;_materialOverrides=null;get state(){return this._state}get path(){return this._path}connectedCallback(){const e=this.parentElement?.closest("pc-model, pc-node")??null;if(!e){const e=this._name?` '${this._name}'`:"";return void console.warn(`pc-node${e} must be a descendant of pc-model - node not bound`)}this._host=e,this._hostListener=e=>{e.target===this._host&&this._rebind()},e.addEventListener("ready",this._hostListener),this._rebind()}disconnectedCallback(){this._host&&this._hostListener&&this._host.removeEventListener("ready",this._hostListener),this._host=null,this._hostListener=null,this._unbind(),this._state="pending"}_rebind(){const e=this._host?.entity??null;if(!e||!this._name)return this._unbind(),void(this._state="pending");const t=this._resolve(e);t&&t===this._entity?this._path=this._pathOf(t,e):(this._unbind(),t&&this._bind(t,e))}_resolve(e){const t=e.find(e=>e.name===this._name);if(0===t.length){const t=this._closestName(e),i=t?` - closest match: '${t}'`:"";return console.warn(`pc-node '${this._name}' not found in ${this._describeHost()}${i}`),this._state="missing",null}let i;if(null!==this._index){if(this._index>=t.length)return console.warn(`pc-node '${this._name}' index ${this._index} is out of range - ${t.length} match(es) in ${this._describeHost()}`),this._state="missing",null;i=t[this._index]}else{if(t.length>1){const i=t.map((t,i)=>`[${i}] ${this._pathOf(t,e)}`).join(", ");return console.warn(`pc-node '${this._name}' is ambiguous in ${this._describeHost()} - specify index: ${i}`),this._state="ambiguous",null}i=t[0]}const a=this.closestApp?.elementFromEntity(i);return a&&a!==this?(console.warn(`pc-node '${this._name}' resolves to a node already bound by another element - element ignored`),this._state="duplicate",null):i}_bind(e,t){this._entity=e,this._registerEntity(e),this._destroyHandle=e.once("destroy",this._onEntityDestroy,this),this._state="bound",this._path=this._pathOf(e,t),this._authoredRender=e.render??null,this._applyOverrides(),this._onReady(),this._buildChildren()}_unbind(){const e=this._entity;e&&(this._revertOverrides(),this.querySelectorAll("pc-entity").forEach(e=>{e.closestEntity===this&&e.entity?.destroy()}),this._destroyHandle?.off(),this._destroyHandle=null,this._unregisterEntity(e),this._entity=null,this._path=null,this._authored={},this._authoredRender=null,this.querySelectorAll("*").forEach(e=>{e instanceof P&&e.closestEntity===this&&e._hostCycled()}),this._resetReady())}_onEntityDestroy(e){this._destroyHandle=null,this._unregisterEntity(e),this._entity=null,this._path=null,this._authored={},this._authoredRender=null,this._baseline=null,this._state="pending",this._resetReady()}_buildChildren(){const e=this.closestApp?.app;e&&M(this,e)}_applyOverrides(){null!==this._enabled&&(this.enabled=this._enabled),null!==this._position&&(this.position=this._position),null!==this._rotation&&(this.rotation=this._rotation),null!==this._scale&&(this.scale=this._scale),null!==this._tags&&(this.tags=this._tags),null!==this._materialOverrides&&this._applyMaterialOverrides()}_revertOverrides(){const e=this._entity,t=this._authored;void 0!==t.enabled&&(e.enabled=t.enabled),t.position&&e.setLocalPosition(t.position),t.rotation&&e.setLocalRotation(t.rotation),t.scale&&e.setLocalScale(t.scale),t.tags&&(e.tags.clear(),e.tags.add(t.tags)),this._authored={},this._restoreBaseline()}_applyMaterialOverrides(){const e=`pc-node '${this._name}'`,t=this._materialOverrides?((e,t)=>{const i=[];for(const[a,s]of Object.entries(e))if("string"!=typeof s||""===s)console.warn(`${t} material-overrides '${a}' needs a pc-material id - rule ignored`);else if(a.startsWith("name:")){const e=a.slice(5);""===e?console.warn(`${t} material-overrides 'name:' selector is empty - rule ignored`):i.push({kind:"name",name:e,id:s})}else if(a.startsWith("index:")){const e=a.slice(6).trim(),n=""===e?NaN:Number(e);!Number.isInteger(n)||n<0?console.warn(`${t} material-overrides '${a}' is not a non-negative integer index - rule ignored`):i.push({kind:"index",index:n,id:s})}else console.warn(`${t} material-overrides '${a}' has no 'name:' or 'index:' prefix - rule ignored`);return i})(this._materialOverrides,e):[];if(0===t.length)return void this._restoreBaseline();if(!this._baseline){if(!this._authoredRender)return void console.warn(`${e} is bound to a node without an authored render component - material-overrides ignored`);this._baseline=this._authoredRender.meshInstances.map(e=>({meshInstance:e,material:e.material??null,name:e.material?.name??null}))}const i=this._baseline,a=t=>{const i=le.get(t);return i||console.warn(`${e} material-overrides could not resolve pc-material '${t}' - rule ignored`),i??null},s=i.map(e=>e.material);for(const n of t){if("name"!==n.kind)continue;const t=a(n.id);if(!t)continue;let o=!1;if(i.forEach((e,i)=>{e.name===n.name&&(s[i]=t,o=!0)}),!o){const t=i.map(e=>`'${e.name}'`).join(", ");console.warn(`${e} material-overrides 'name:${n.name}' matches no assignment - baseline names: ${t||"(none)"}`)}}for(const n of t){if("index"!==n.kind)continue;if(n.index>=i.length){console.warn(`${e} material-overrides 'index:${n.index}' is out of range - ${i.length} assignment(s)`);continue}const t=a(n.id);t&&(s[n.index]=t)}i.forEach((e,t)=>{e.meshInstance.material!==s[t]&&(e.meshInstance.material=s[t])})}_restoreBaseline(){const e=this._baseline;if(e){this._baseline=null;for(const t of e)t.meshInstance.material!==t.material&&(t.meshInstance.material=t.material)}}_pathOf(e,t){const i=[];for(let a=e;a&&a!==t;a=a.parent)i.unshift(a.name);return i.join("/")||e.name}_describeHost(){return this._host instanceof Oe?`model '${this._host.asset}'`:`pc-node '${this._host?.name??""}' subtree`}_closestName(e){let t=null,i=3;return e.find(e=>{const a=((e,t)=>{const i=Array.from({length:t.length+1},(e,t)=>t);for(let a=1;a<=e.length;a++){let s=i[0];i[0]=a;for(let n=1;n<=t.length;n++){const o=i[n];i[n]=Math.min(i[n]+1,i[n-1]+1,s+(e[a-1]===t[n-1]?0:1)),s=o}}return i[t.length]})(this._name,e.name);return a<i&&(i=a,t=e.name),!1}),t}set name(e){this._name=e,this.isConnected&&this._host&&this._rebind()}get name(){return this._name}set index(e){this._index=e,this.isConnected&&this._host&&this._rebind()}get index(){return this._index}set enabled(e){this._enabled=e;const t="bound"===this._state?this._entity:null;t&&(null!==e?(this._authored.enabled??=t.enabled,t.enabled=e):void 0!==this._authored.enabled&&(t.enabled=this._authored.enabled,delete this._authored.enabled))}get enabled(){return this._enabled}set position(e){this._position=e;const t="bound"===this._state?this._entity:null;t&&(null!==e?(this._authored.position??=t.getLocalPosition().clone(),t.setLocalPosition(e)):this._authored.position&&(t.setLocalPosition(this._authored.position),delete this._authored.position))}get position(){return this._position}set rotation(e){this._rotation=e;const t="bound"===this._state?this._entity:null;t&&(null!==e?(this._authored.rotation??=t.getLocalRotation().clone(),t.setLocalEulerAngles(e)):this._authored.rotation&&(t.setLocalRotation(this._authored.rotation),delete this._authored.rotation))}get rotation(){return this._rotation}set scale(e){this._scale=e;const t="bound"===this._state?this._entity:null;t&&(null!==e?(this._authored.scale??=t.getLocalScale().clone(),t.setLocalScale(e)):this._authored.scale&&(t.setLocalScale(this._authored.scale),delete this._authored.scale))}get scale(){return this._scale}set tags(e){this._tags=e;const t="bound"===this._state?this._entity:null;t&&(null!==e?(this._authored.tags??=t.tags.list().slice(),t.tags.clear(),t.tags.add(e)):this._authored.tags&&(t.tags.clear(),t.tags.add(this._authored.tags),delete this._authored.tags))}get tags(){return this._tags}set materialOverrides(e){this._materialOverrides=null===e?null:Object.freeze({...e}),"bound"===this._state&&this._applyMaterialOverrides()}get materialOverrides(){return this._materialOverrides}static get observedAttributes(){return["enabled","index","material-overrides","name","position","rotation","scale","tags",...y]}attributeChangedCallback(e,i,a){switch(e){case"enabled":this.enabled=null===a?null:l(a,!0);break;case"index":if(null===a)this.index=null;else{const e=""===a.trim()?NaN:Number(a);!Number.isInteger(e)||e<0?(console.warn(`pc-node index '${a}' is not a non-negative integer - treated as absent`),this.index=null):this.index=e}break;case"material-overrides":this.materialOverrides=null===a?null:((e,t)=>{let i;try{i=JSON.parse(e)}catch(e){return console.warn(`${t} material-overrides is not valid JSON - treated as absent: ${e.message}`),null}return null===i||"object"!=typeof i||Array.isArray(i)?(console.warn(`${t} material-overrides must be a JSON object - treated as absent`),null):i})(a,`pc-node '${this._name}'`);break;case"name":this.name=a??"";break;case"position":this.position=null===a?null:u(a,t.Vec3.ZERO,e);break;case"rotation":this.rotation=null===a?null:u(a,t.Vec3.ZERO,e);break;case"scale":this.scale=null===a?null:u(a,t.Vec3.ONE,e);break;case"tags":this.tags=null===a?null:d(a);break;case"onpointerenter":case"onpointerleave":case"onpointerdown":case"onpointerup":case"onpointermove":this._updateInlineHandler(e,a)}}}customElements.define("pc-node",Le);class Te extends i{_fog="none";_fogColor=new t.Color(1,1,1);_fogDensity=0;_fogStart=0;_fogEnd=1e3;_gravity=new t.Vec3(0,-9.81,0);_scene=null;get scene(){return this._scene}async connectedCallback(){const e=this.closestApp;if(!e)return void console.warn("pc-scene must be a descendant of pc-app - scene settings not applied");if(await e.ready(),!this.isConnected||this.closestApp!==e)return;const t=e.app;t&&(this._scene=t.scene,this._updateSceneSettings(),this._onReady())}disconnectedCallback(){this._scene=null,this._resetReady()}_updateSceneSettings(){this._scene&&(this._scene.fog.type=this._fog,this._scene.fog.color=this._fogColor,this._scene.fog.density=this._fogDensity,this._scene.fog.start=this._fogStart,this._scene.fog.end=this._fogEnd,this._applyGravity(this._gravity))}_applyGravity(e){this.closestApp?.app?.systems.rigidbody?.gravity.copy(e)}set fog(e){this._fog=e,this.scene&&(this.scene.fog.type=e)}get fog(){return this._fog}set fogColor(e){this._fogColor=e,this.scene&&(this.scene.fog.color=e)}get fogColor(){return this._fogColor}set fogDensity(e){this._fogDensity=e,this.scene&&(this.scene.fog.density=e)}get fogDensity(){return this._fogDensity}set fogStart(e){this._fogStart=e,this.scene&&(this.scene.fog.start=e)}get fogStart(){return this._fogStart}set fogEnd(e){this._fogEnd=e,this.scene&&(this.scene.fog.end=e)}get fogEnd(){return this._fogEnd}set gravity(e){this._gravity=e,this._scene&&this._applyGravity(e)}get gravity(){return this._gravity}static get observedAttributes(){return["fog","fog-color","fog-density","fog-start","fog-end","gravity"]}attributeChangedCallback(e,i,a){switch(e){case"fog":this.fog=h(a,["none","linear","exp","exp2"],"none",e);break;case"fog-color":this.fogColor=c(a,t.Color.WHITE,e);break;case"fog-density":this.fogDensity=p(a,0,e);break;case"fog-start":this.fogStart=p(a,0,e);break;case"fog-end":this.fogEnd=p(a,1e3,e);break;case"gravity":this.gravity=u(a,new t.Vec3(0,-9.81,0),e)}}}customElements.define("pc-scene",Te);class je extends i{_asset="";_center=new t.Vec3(0,.01,0);_intensity=1;_rotation=new t.Vec3;_mipLevel=0;_lighting=!1;_scale=new t.Vec3(100,100,100);_type="infinite";_scene=null;_appElement=null;_loadGeneration=0;_loadHandle=null;connectedCallback(){this._loadSkybox(),this._onReady()}disconnectedCallback(){this._loadGeneration++,this._detachLoadHandler(),this._unloadSkybox(),this._appElement=null,this._resetReady()}_detachLoadHandler(){this._loadHandle?.off(),this._loadHandle=null}_generateSkybox(e){if(!this._scene)return;const i=e.resource,a=t.EnvLighting.generateSkyboxCubemap(i);if(this._scene.skybox?.destroy(),this._scene.skybox=a,this._lighting){const e=t.EnvLighting.generateLightingSource(i),a=t.EnvLighting.generateAtlas(e);e.destroy(),this._scene.envAtlas?.destroy(),this._scene.envAtlas=a}const s=this._scene.layers.getLayerById(t.LAYERID_SKYBOX);s&&(s.enabled="none"!==this._type),this._scene.sky.type=this._type,this._scene.sky.node.setLocalScale(this._scale),this._scene.sky.center=this._center,this._scene.skyboxIntensity=this._intensity,this._scene.skyboxMip=this._mipLevel}async _loadSkybox(){const e=++this._loadGeneration;this._detachLoadHandler();const t=await(this.closestApp?.ready());if(e!==this._loadGeneration)return;const i=t?.app;if(!t||!i)return;this._appElement=t;const a=D(this._asset);a&&(this._scene=i.scene,a.loaded?this._generateSkybox(a):this._loadHandle=a.once("load",()=>{this._loadHandle=null,e===this._loadGeneration&&this._generateSkybox(a)}))}_unloadSkybox(){const e=this._scene;e&&(this._scene=null,this._appElement?.app&&(e.skybox?.destroy(),e.skybox=null,e.envAtlas?.destroy(),e.envAtlas=null))}set asset(e){this._asset=e,this.isConnected&&this._loadSkybox()}get asset(){return this._asset}set center(e){this._center=e,this._scene&&(this._scene.sky.center=this._center)}get center(){return this._center}set intensity(e){this._intensity=e,this._scene&&(this._scene.skyboxIntensity=this._intensity)}get intensity(){return this._intensity}set lighting(e){this._lighting=e}get lighting(){return this._lighting}set mipLevel(e){this._mipLevel=e,this._scene&&(this._scene.skyboxMip=this._mipLevel)}get mipLevel(){return this._mipLevel}set rotation(e){this._rotation=e,this._scene&&(this._scene.skyboxRotation=(new t.Quat).setFromEulerAngles(e))}get rotation(){return this._rotation}set scale(e){this._scale=e,this._scene&&this._scene.sky.node.setLocalScale(this._scale)}get scale(){return this._scale}set type(e){if(this._type=e,this._scene){this._scene.sky.type=this._type;const e=this._scene.layers.getLayerById(t.LAYERID_SKYBOX);e&&(e.enabled="none"!==this._type)}}get type(){return this._type}static get observedAttributes(){return["asset","center","intensity","lighting","mip-level","rotation","scale","type"]}attributeChangedCallback(e,i,a){switch(e){case"asset":this.asset=a??"";break;case"center":this.center=u(a,new t.Vec3(0,.01,0),e);break;case"intensity":this.intensity=p(a,1,e);break;case"lighting":this.lighting=l(a,!1);break;case"mip-level":this.mipLevel=p(a,0,e);break;case"rotation":this.rotation=u(a,t.Vec3.ZERO,e);break;case"scale":this.scale=u(a,new t.Vec3(100,100,100),e);break;case"type":this.type=h(a,["box","dome","infinite","none"],"infinite",e)}}}customElements.define("pc-sky",je),e.AppElement=v,e.AssetElement=j,e.AsyncElement=i,e.ButtonComponentElement=B,e.CameraComponentElement=I,e.CollisionComponentElement=N,e.ComponentElement=P,e.ElementComponentElement=V,e.EntityBaseElement=k,e.EntityElement=w,e.GSplatComponentElement=Fe,e.JointComponentElement=q,e.LayoutChildComponentElement=W,e.LayoutGroupComponentElement=Q,e.LightComponentElement=X,e.ListenerComponentElement=H,e.MaterialElement=le,e.ModelElement=Oe,e.ModuleElement=a,e.NodeElement=Le,e.ParticleSystemComponentElement=J,e.RenderComponentElement=ce,e.RigidBodyComponentElement=he,e.SceneElement=Te,e.ScreenComponentElement=be,e.ScriptComponentElement=Ce,e.ScriptElement=fe,e.ScrollViewComponentElement=_e,e.ScrollbarComponentElement=me,e.SkyElement=je,e.SoundComponentElement=xe,e.SoundSlotElement=Ae,e.whenReady=async function(e){let t;if("string"==typeof e){"loading"===document.readyState&&await new Promise(e=>{document.addEventListener("DOMContentLoaded",e,{once:!0})});try{t=document.querySelector(e)}catch{throw new Error(`whenReady: '${e}' is not a valid CSS selector`)}if(!t)throw new Error(`whenReady: no element found matching '${e}'`)}else t=e;if(!(t instanceof i)){const i=t instanceof Element?`<${t.tagName.toLowerCase()}>`:String(e);throw new Error(`whenReady: ${i} does not initialize asynchronously`)}return await t.ready(),t}});
|
|
2
2
|
//# sourceMappingURL=pwc.min.js.map
|