From e08b60fafb43f004d799383da1109f3c709caa72 Mon Sep 17 00:00:00 2001 From: koneko Date: Sat, 11 Jan 2025 20:43:24 +0000 Subject: [PATCH] deploy: d95c44373a37e709395b417122eca4f017d8c396 --- ...-DzPCdZj-.js => SharedSystems-DeBRvkiC.js} | 2 +- ...-z8lHFjkk.js => WebGLRenderer-DyicnGup.js} | 2 +- ...BBQkeqcg.js => WebGPURenderer-BR803xQA.js} | 2 +- ...All-CjAcs4Zl.js => browserAll-CrzJE7an.js} | 2 +- ...BGjOuL4T.js => colorToUniform-CAElEulk.js} | 2 +- assets/gui/wave.png | Bin 0 -> 273161 bytes .../{index-ChER3YqS.js => index-BT5ZfHPv.js} | 68 +++++++++--------- assets/missions/mission_01.json | 20 ++++++ ...l-C0L-Jtox.js => webworkerAll-DW2oDrMC.js} | 2 +- index.html | 2 +- latest_commit | 2 +- 11 files changed, 62 insertions(+), 42 deletions(-) rename assets/{SharedSystems-DzPCdZj-.js => SharedSystems-DeBRvkiC.js} (99%) rename assets/{WebGLRenderer-z8lHFjkk.js => WebGLRenderer-DyicnGup.js} (99%) rename assets/{WebGPURenderer-BBQkeqcg.js => WebGPURenderer-BR803xQA.js} (99%) rename assets/{browserAll-CjAcs4Zl.js => browserAll-CrzJE7an.js} (99%) rename assets/{colorToUniform-BGjOuL4T.js => colorToUniform-CAElEulk.js} (98%) create mode 100644 assets/gui/wave.png rename assets/{index-ChER3YqS.js => index-BT5ZfHPv.js} (71%) rename assets/{webworkerAll-C0L-Jtox.js => webworkerAll-DW2oDrMC.js} (99%) diff --git a/assets/SharedSystems-DzPCdZj-.js b/assets/SharedSystems-DeBRvkiC.js similarity index 99% rename from assets/SharedSystems-DzPCdZj-.js rename to assets/SharedSystems-DeBRvkiC.js index 21c0fcf..88d9092 100644 --- a/assets/SharedSystems-DzPCdZj-.js +++ b/assets/SharedSystems-DeBRvkiC.js @@ -1,4 +1,4 @@ -import{u as We,G as te,v as re,x as Ve,l as se,M as g,E as u,e as D,y as ne,z as _,F as je,R as E,H as ae,I as ie,J as Ne,a as m,S as p,j as B,w as oe,K as $,L as $e,d as q,B as k,k as U,N as M,T as b,O as S,Q as qe,c as Ke,C as w,V as le,W as ue,X as de,Y as ce,Z as Ye,P as Je,h as Xe,b as K,D as he,_ as Y,$ as Qe,a0 as Ze,a1 as et}from"./index-ChER3YqS.js";import{S as fe,T as J,B as tt,c as rt}from"./colorToUniform-BGjOuL4T.js";const pe=class A extends We{constructor(e){e={...A.defaultOptions,...e},super(e),this.enabled=!0,this._state=fe.for2d(),this.blendMode=e.blendMode,this.padding=e.padding,typeof e.antialias=="boolean"?this.antialias=e.antialias?"on":"off":this.antialias=e.antialias,this.resolution=e.resolution,this.blendRequired=e.blendRequired,this.addResource("uTexture",0,1)}apply(e,t,r,n){e.applyFilter(this,t,r,n)}get blendMode(){return this._state.blendMode}set blendMode(e){this._state.blendMode=e}static from(e){const{gpu:t,gl:r,...n}=e;let a,i;return t&&(a=te.from(t)),r&&(i=re.from(r)),new A({gpuProgram:a,glProgram:i,...n})}};pe.defaultOptions={blendMode:"normal",resolution:1,padding:0,antialias:"off",blendRequired:!1};let st=pe;var nt=`in vec2 vMaskCoord; +import{u as We,G as te,v as re,x as Ve,l as se,M as g,E as u,e as D,y as ne,z as _,F as je,R as E,H as ae,I as ie,J as Ne,a as m,S as p,j as B,w as oe,K as $,L as $e,d as q,B as k,k as U,N as M,T as b,O as S,Q as qe,c as Ke,C as w,V as le,W as ue,X as de,Y as ce,Z as Ye,P as Je,h as Xe,b as K,D as he,_ as Y,$ as Qe,a0 as Ze,a1 as et}from"./index-BT5ZfHPv.js";import{S as fe,T as J,B as tt,c as rt}from"./colorToUniform-CAElEulk.js";const pe=class A extends We{constructor(e){e={...A.defaultOptions,...e},super(e),this.enabled=!0,this._state=fe.for2d(),this.blendMode=e.blendMode,this.padding=e.padding,typeof e.antialias=="boolean"?this.antialias=e.antialias?"on":"off":this.antialias=e.antialias,this.resolution=e.resolution,this.blendRequired=e.blendRequired,this.addResource("uTexture",0,1)}apply(e,t,r,n){e.applyFilter(this,t,r,n)}get blendMode(){return this._state.blendMode}set blendMode(e){this._state.blendMode=e}static from(e){const{gpu:t,gl:r,...n}=e;let a,i;return t&&(a=te.from(t)),r&&(i=re.from(r)),new A({gpuProgram:a,glProgram:i,...n})}};pe.defaultOptions={blendMode:"normal",resolution:1,padding:0,antialias:"off",blendRequired:!1};let st=pe;var nt=`in vec2 vMaskCoord; in vec2 vTextureCoord; uniform sampler2D uTexture; diff --git a/assets/WebGLRenderer-z8lHFjkk.js b/assets/WebGLRenderer-DyicnGup.js similarity index 99% rename from assets/WebGLRenderer-z8lHFjkk.js rename to assets/WebGLRenderer-DyicnGup.js index db00d54..c51d4bb 100644 --- a/assets/WebGLRenderer-z8lHFjkk.js +++ b/assets/WebGLRenderer-DyicnGup.js @@ -1,4 +1,4 @@ -import{E as l,B as A,w as m,D as S,K,a2 as Ae,v as Be,u as G,a as p,T as $,S as R,O as L,k as H,j as B,l as U,s as z,M as Y,a3 as q,a4 as Ne,a5 as Ie,a6 as Z,a7 as De,e as x,A as ye,R as Ce}from"./index-ChER3YqS.js";import{S as O,b as Q}from"./colorToUniform-BGjOuL4T.js";import{e as Ge,G as Ue,c as Oe,b as Pe,U as Fe,R as Me,B as J,d as N,f as Le,S as He,a as we}from"./SharedSystems-DzPCdZj-.js";class ee{constructor(){this._didUpload=!1,this._tempState=O.for2d()}init(e){e.renderer.runners.contextChange.add(this)}contextChange(){this._didUpload=!1}start(e,r,s){const n=e.renderer;n.shader.bind(s,this._didUpload),n.shader.updateUniformGroup(n.globalUniforms.uniformGroup),n.geometry.bind(r,s.glProgram)}execute(e,r){const s=e.renderer;this._didUpload=!0,this._tempState.blendMode=r.blendMode,s.state.set(this._tempState);const n=r.textures.textures;for(let i=0;i(t[t.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",t[t.ARRAY_BUFFER=34962]="ARRAY_BUFFER",t[t.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",t))(T||{});class Ve{constructor(e,r){this.buffer=e||null,this.updateID=-1,this.byteLength=-1,this.type=r}}class te{constructor(e){this._gpuBuffers=Object.create(null),this._boundBufferBases=Object.create(null),this._renderer=e}destroy(){this._renderer=null,this._gl=null,this._gpuBuffers=null,this._boundBufferBases=null}contextChange(){this._gpuBuffers=Object.create(null),this._gl=this._renderer.gl}getGlBuffer(e){return this._gpuBuffers[e.uid]||this.createGLBuffer(e)}bind(e){const{_gl:r}=this,s=this.getGlBuffer(e);r.bindBuffer(s.type,s.buffer)}bindBufferBase(e,r){const{_gl:s}=this;if(this._boundBufferBases[r]!==e){const n=this.getGlBuffer(e);this._boundBufferBases[r]=e,s.bindBufferBase(s.UNIFORM_BUFFER,r,n.buffer)}}bindBufferRange(e,r,s){const{_gl:n}=this;s=s||0;const i=this.getGlBuffer(e);n.bindBufferRange(n.UNIFORM_BUFFER,r||0,i.buffer,s*256,256)}updateBuffer(e){const{_gl:r}=this,s=this.getGlBuffer(e);if(e._updateID===s.updateID)return s;s.updateID=e._updateID,r.bindBuffer(s.type,s.buffer);const n=e.data;if(s.byteLength>=e.data.byteLength)r.bufferSubData(s.type,0,n,0,e._updateSize/n.BYTES_PER_ELEMENT);else{const i=e.descriptor.usage&A.STATIC?r.STATIC_DRAW:r.DYNAMIC_DRAW;s.byteLength=n.byteLength,r.bufferData(s.type,n,i)}return s}destroyAll(){const e=this._gl;for(const r in this._gpuBuffers)e.deleteBuffer(this._gpuBuffers[r].buffer);this._gpuBuffers=Object.create(null)}onBufferDestroy(e,r){const s=this._gpuBuffers[e.uid],n=this._gl;r||n.deleteBuffer(s.buffer),this._gpuBuffers[e.uid]=null}createGLBuffer(e){const{_gl:r}=this;let s=T.ARRAY_BUFFER;e.descriptor.usage&A.INDEX?s=T.ELEMENT_ARRAY_BUFFER:e.descriptor.usage&A.UNIFORM&&(s=T.UNIFORM_BUFFER);const n=new Ve(r.createBuffer(),s);return this._gpuBuffers[e.uid]=n,e.on("destroy",this.onBufferDestroy,this),n}}te.extension={type:[l.WebGLSystem],name:"buffer"};const P=class re{constructor(e){this.supports={uint32Indices:!0,uniformBufferObject:!0,vertexArrayObject:!0,srgbTextures:!0,nonPowOf2wrapping:!0,msaa:!0,nonPowOf2mipmaps:!0},this._renderer=e,this.extensions=Object.create(null),this.handleContextLost=this.handleContextLost.bind(this),this.handleContextRestored=this.handleContextRestored.bind(this)}get isLost(){return!this.gl||this.gl.isContextLost()}contextChange(e){this.gl=e,this._renderer.gl=e}init(e){e={...re.defaultOptions,...e};let r=this.multiView=e.multiView;if(e.context&&r&&(m("Renderer created with both a context and multiview enabled. Disabling multiView as both cannot work together."),r=!1),r?this.canvas=S.get().createCanvas(this._renderer.canvas.width,this._renderer.canvas.height):this.canvas=this._renderer.view.canvas,e.context)this.initFromContext(e.context);else{const s=this._renderer.background.alpha<1,n=e.premultipliedAlpha??!0,i=e.antialias&&!this._renderer.backBuffer.useBackBuffer;this.createContext(e.preferWebGLVersion,{alpha:s,premultipliedAlpha:n,antialias:i,stencil:!0,preserveDrawingBuffer:e.preserveDrawingBuffer,powerPreference:e.powerPreference??"default"})}}ensureCanvasSize(e){if(!this.multiView){e!==this.canvas&&m("multiView is disabled, but targetCanvas is not the main canvas");return}const{canvas:r}=this;(r.width{var r;this.gl.isContextLost()&&((r=this.extensions.loseContext)==null||r.restoreContext())},0))}handleContextRestored(){this._renderer.runners.contextChange.emit(this.gl)}destroy(){var r;const e=this._renderer.view.canvas;this._renderer=null,e.removeEventListener("webglcontextlost",this.handleContextLost),e.removeEventListener("webglcontextrestored",this.handleContextRestored),this.gl.useProgram(null),(r=this.extensions.loseContext)==null||r.loseContext()}forceContextLoss(){var e;(e=this.extensions.loseContext)==null||e.loseContext(),this._contextLossForced=!0}validateContext(e){const r=e.getContextAttributes();r&&!r.stencil&&m("Provided WebGL context does not have a stencil buffer, masks may not render correctly");const s=this.supports,n=this.webGLVersion===2,i=this.extensions;s.uint32Indices=n||!!i.uint32ElementIndex,s.uniformBufferObject=n,s.vertexArrayObject=n||!!i.vertexArrayObject,s.srgbTextures=n||!!i.srgb,s.nonPowOf2wrapping=n,s.nonPowOf2mipmaps=n,s.msaa=n,s.uint32Indices||m("Provided WebGL context does not support 32 index buffer, large scenes may not render correctly")}};P.extension={type:[l.WebGLSystem],name:"context"};P.defaultOptions={context:null,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:void 0,preferWebGLVersion:2,multiView:!1};let ke=P;var y=(t=>(t[t.RGBA=6408]="RGBA",t[t.RGB=6407]="RGB",t[t.RG=33319]="RG",t[t.RED=6403]="RED",t[t.RGBA_INTEGER=36249]="RGBA_INTEGER",t[t.RGB_INTEGER=36248]="RGB_INTEGER",t[t.RG_INTEGER=33320]="RG_INTEGER",t[t.RED_INTEGER=36244]="RED_INTEGER",t[t.ALPHA=6406]="ALPHA",t[t.LUMINANCE=6409]="LUMINANCE",t[t.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",t[t.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",t[t.DEPTH_STENCIL=34041]="DEPTH_STENCIL",t))(y||{}),se=(t=>(t[t.TEXTURE_2D=3553]="TEXTURE_2D",t[t.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",t[t.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",t[t.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",t[t.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",t[t.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",t[t.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",t[t.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",t[t.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",t))(se||{}),f=(t=>(t[t.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",t[t.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",t[t.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",t[t.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",t[t.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",t[t.UNSIGNED_INT=5125]="UNSIGNED_INT",t[t.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",t[t.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",t[t.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",t[t.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",t[t.BYTE=5120]="BYTE",t[t.SHORT=5122]="SHORT",t[t.INT=5124]="INT",t[t.FLOAT=5126]="FLOAT",t[t.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",t[t.HALF_FLOAT=36193]="HALF_FLOAT",t))(f||{});const w={uint8x2:f.UNSIGNED_BYTE,uint8x4:f.UNSIGNED_BYTE,sint8x2:f.BYTE,sint8x4:f.BYTE,unorm8x2:f.UNSIGNED_BYTE,unorm8x4:f.UNSIGNED_BYTE,snorm8x2:f.BYTE,snorm8x4:f.BYTE,uint16x2:f.UNSIGNED_SHORT,uint16x4:f.UNSIGNED_SHORT,sint16x2:f.SHORT,sint16x4:f.SHORT,unorm16x2:f.UNSIGNED_SHORT,unorm16x4:f.UNSIGNED_SHORT,snorm16x2:f.SHORT,snorm16x4:f.SHORT,float16x2:f.HALF_FLOAT,float16x4:f.HALF_FLOAT,float32:f.FLOAT,float32x2:f.FLOAT,float32x3:f.FLOAT,float32x4:f.FLOAT,uint32:f.UNSIGNED_INT,uint32x2:f.UNSIGNED_INT,uint32x3:f.UNSIGNED_INT,uint32x4:f.UNSIGNED_INT,sint32:f.INT,sint32x2:f.INT,sint32x3:f.INT,sint32x4:f.INT};function Xe(t){return w[t]??w.float32}const We={"point-list":0,"line-list":1,"line-strip":3,"triangle-list":4,"triangle-strip":5};class ne{constructor(e){this._geometryVaoHash=Object.create(null),this._renderer=e,this._activeGeometry=null,this._activeVao=null,this.hasVao=!0,this.hasInstance=!0}contextChange(){const e=this.gl=this._renderer.gl;if(!this._renderer.context.supports.vertexArrayObject)throw new Error("[PixiJS] Vertex Array Objects are not supported on this device");const r=this._renderer.context.extensions.vertexArrayObject;r&&(e.createVertexArray=()=>r.createVertexArrayOES(),e.bindVertexArray=n=>r.bindVertexArrayOES(n),e.deleteVertexArray=n=>r.deleteVertexArrayOES(n));const s=this._renderer.context.extensions.vertexAttribDivisorANGLE;s&&(e.drawArraysInstanced=(n,i,a,o)=>{s.drawArraysInstancedANGLE(n,i,a,o)},e.drawElementsInstanced=(n,i,a,o,c)=>{s.drawElementsInstancedANGLE(n,i,a,o,c)},e.vertexAttribDivisor=(n,i)=>s.vertexAttribDivisorANGLE(n,i)),this._activeGeometry=null,this._activeVao=null,this._geometryVaoHash=Object.create(null)}bind(e,r){const s=this.gl;this._activeGeometry=e;const n=this.getVao(e,r);this._activeVao!==n&&(this._activeVao=n,s.bindVertexArray(n)),this.updateBuffers()}reset(){this.unbind()}updateBuffers(){const e=this._activeGeometry,r=this._renderer.buffer;for(let s=0;s1?i.drawElementsInstanced(o,r||a.indexBuffer.data.length,u,(s||0)*c,n):i.drawElements(o,r||a.indexBuffer.data.length,u,(s||0)*c)}else n>1?i.drawArraysInstanced(o,s||0,r||a.getSize(),n):i.drawArrays(o,s||0,r||a.getSize());return this}unbind(){this.gl.bindVertexArray(null),this._activeVao=null,this._activeGeometry=null}destroy(){this._renderer=null,this.gl=null,this._activeVao=null,this._activeGeometry=null}}ne.extension={type:[l.WebGLSystem],name:"geometry"};const je=new Ae({attributes:{aPosition:[-1,-1,3,-1,-1,3]}}),F=class ie{constructor(e){this.useBackBuffer=!1,this._useBackBufferThisRender=!1,this._renderer=e}init(e={}){const{useBackBuffer:r,antialias:s}={...ie.defaultOptions,...e};this.useBackBuffer=r,this._antialias=s,this._renderer.context.supports.msaa||(m("antialiasing, is not supported on when using the back buffer"),this._antialias=!1),this._state=O.for2d();const n=new Be({vertex:` +import{E as l,B as A,w as m,D as S,K,a2 as Ae,v as Be,u as G,a as p,T as $,S as R,O as L,k as H,j as B,l as U,s as z,M as Y,a3 as q,a4 as Ne,a5 as Ie,a6 as Z,a7 as De,e as x,A as ye,R as Ce}from"./index-BT5ZfHPv.js";import{S as O,b as Q}from"./colorToUniform-CAElEulk.js";import{e as Ge,G as Ue,c as Oe,b as Pe,U as Fe,R as Me,B as J,d as N,f as Le,S as He,a as we}from"./SharedSystems-DeBRvkiC.js";class ee{constructor(){this._didUpload=!1,this._tempState=O.for2d()}init(e){e.renderer.runners.contextChange.add(this)}contextChange(){this._didUpload=!1}start(e,r,s){const n=e.renderer;n.shader.bind(s,this._didUpload),n.shader.updateUniformGroup(n.globalUniforms.uniformGroup),n.geometry.bind(r,s.glProgram)}execute(e,r){const s=e.renderer;this._didUpload=!0,this._tempState.blendMode=r.blendMode,s.state.set(this._tempState);const n=r.textures.textures;for(let i=0;i(t[t.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",t[t.ARRAY_BUFFER=34962]="ARRAY_BUFFER",t[t.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",t))(T||{});class Ve{constructor(e,r){this.buffer=e||null,this.updateID=-1,this.byteLength=-1,this.type=r}}class te{constructor(e){this._gpuBuffers=Object.create(null),this._boundBufferBases=Object.create(null),this._renderer=e}destroy(){this._renderer=null,this._gl=null,this._gpuBuffers=null,this._boundBufferBases=null}contextChange(){this._gpuBuffers=Object.create(null),this._gl=this._renderer.gl}getGlBuffer(e){return this._gpuBuffers[e.uid]||this.createGLBuffer(e)}bind(e){const{_gl:r}=this,s=this.getGlBuffer(e);r.bindBuffer(s.type,s.buffer)}bindBufferBase(e,r){const{_gl:s}=this;if(this._boundBufferBases[r]!==e){const n=this.getGlBuffer(e);this._boundBufferBases[r]=e,s.bindBufferBase(s.UNIFORM_BUFFER,r,n.buffer)}}bindBufferRange(e,r,s){const{_gl:n}=this;s=s||0;const i=this.getGlBuffer(e);n.bindBufferRange(n.UNIFORM_BUFFER,r||0,i.buffer,s*256,256)}updateBuffer(e){const{_gl:r}=this,s=this.getGlBuffer(e);if(e._updateID===s.updateID)return s;s.updateID=e._updateID,r.bindBuffer(s.type,s.buffer);const n=e.data;if(s.byteLength>=e.data.byteLength)r.bufferSubData(s.type,0,n,0,e._updateSize/n.BYTES_PER_ELEMENT);else{const i=e.descriptor.usage&A.STATIC?r.STATIC_DRAW:r.DYNAMIC_DRAW;s.byteLength=n.byteLength,r.bufferData(s.type,n,i)}return s}destroyAll(){const e=this._gl;for(const r in this._gpuBuffers)e.deleteBuffer(this._gpuBuffers[r].buffer);this._gpuBuffers=Object.create(null)}onBufferDestroy(e,r){const s=this._gpuBuffers[e.uid],n=this._gl;r||n.deleteBuffer(s.buffer),this._gpuBuffers[e.uid]=null}createGLBuffer(e){const{_gl:r}=this;let s=T.ARRAY_BUFFER;e.descriptor.usage&A.INDEX?s=T.ELEMENT_ARRAY_BUFFER:e.descriptor.usage&A.UNIFORM&&(s=T.UNIFORM_BUFFER);const n=new Ve(r.createBuffer(),s);return this._gpuBuffers[e.uid]=n,e.on("destroy",this.onBufferDestroy,this),n}}te.extension={type:[l.WebGLSystem],name:"buffer"};const P=class re{constructor(e){this.supports={uint32Indices:!0,uniformBufferObject:!0,vertexArrayObject:!0,srgbTextures:!0,nonPowOf2wrapping:!0,msaa:!0,nonPowOf2mipmaps:!0},this._renderer=e,this.extensions=Object.create(null),this.handleContextLost=this.handleContextLost.bind(this),this.handleContextRestored=this.handleContextRestored.bind(this)}get isLost(){return!this.gl||this.gl.isContextLost()}contextChange(e){this.gl=e,this._renderer.gl=e}init(e){e={...re.defaultOptions,...e};let r=this.multiView=e.multiView;if(e.context&&r&&(m("Renderer created with both a context and multiview enabled. Disabling multiView as both cannot work together."),r=!1),r?this.canvas=S.get().createCanvas(this._renderer.canvas.width,this._renderer.canvas.height):this.canvas=this._renderer.view.canvas,e.context)this.initFromContext(e.context);else{const s=this._renderer.background.alpha<1,n=e.premultipliedAlpha??!0,i=e.antialias&&!this._renderer.backBuffer.useBackBuffer;this.createContext(e.preferWebGLVersion,{alpha:s,premultipliedAlpha:n,antialias:i,stencil:!0,preserveDrawingBuffer:e.preserveDrawingBuffer,powerPreference:e.powerPreference??"default"})}}ensureCanvasSize(e){if(!this.multiView){e!==this.canvas&&m("multiView is disabled, but targetCanvas is not the main canvas");return}const{canvas:r}=this;(r.width{var r;this.gl.isContextLost()&&((r=this.extensions.loseContext)==null||r.restoreContext())},0))}handleContextRestored(){this._renderer.runners.contextChange.emit(this.gl)}destroy(){var r;const e=this._renderer.view.canvas;this._renderer=null,e.removeEventListener("webglcontextlost",this.handleContextLost),e.removeEventListener("webglcontextrestored",this.handleContextRestored),this.gl.useProgram(null),(r=this.extensions.loseContext)==null||r.loseContext()}forceContextLoss(){var e;(e=this.extensions.loseContext)==null||e.loseContext(),this._contextLossForced=!0}validateContext(e){const r=e.getContextAttributes();r&&!r.stencil&&m("Provided WebGL context does not have a stencil buffer, masks may not render correctly");const s=this.supports,n=this.webGLVersion===2,i=this.extensions;s.uint32Indices=n||!!i.uint32ElementIndex,s.uniformBufferObject=n,s.vertexArrayObject=n||!!i.vertexArrayObject,s.srgbTextures=n||!!i.srgb,s.nonPowOf2wrapping=n,s.nonPowOf2mipmaps=n,s.msaa=n,s.uint32Indices||m("Provided WebGL context does not support 32 index buffer, large scenes may not render correctly")}};P.extension={type:[l.WebGLSystem],name:"context"};P.defaultOptions={context:null,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:void 0,preferWebGLVersion:2,multiView:!1};let ke=P;var y=(t=>(t[t.RGBA=6408]="RGBA",t[t.RGB=6407]="RGB",t[t.RG=33319]="RG",t[t.RED=6403]="RED",t[t.RGBA_INTEGER=36249]="RGBA_INTEGER",t[t.RGB_INTEGER=36248]="RGB_INTEGER",t[t.RG_INTEGER=33320]="RG_INTEGER",t[t.RED_INTEGER=36244]="RED_INTEGER",t[t.ALPHA=6406]="ALPHA",t[t.LUMINANCE=6409]="LUMINANCE",t[t.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",t[t.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",t[t.DEPTH_STENCIL=34041]="DEPTH_STENCIL",t))(y||{}),se=(t=>(t[t.TEXTURE_2D=3553]="TEXTURE_2D",t[t.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",t[t.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",t[t.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",t[t.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",t[t.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",t[t.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",t[t.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",t[t.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",t))(se||{}),f=(t=>(t[t.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",t[t.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",t[t.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",t[t.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",t[t.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",t[t.UNSIGNED_INT=5125]="UNSIGNED_INT",t[t.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",t[t.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",t[t.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",t[t.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",t[t.BYTE=5120]="BYTE",t[t.SHORT=5122]="SHORT",t[t.INT=5124]="INT",t[t.FLOAT=5126]="FLOAT",t[t.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",t[t.HALF_FLOAT=36193]="HALF_FLOAT",t))(f||{});const w={uint8x2:f.UNSIGNED_BYTE,uint8x4:f.UNSIGNED_BYTE,sint8x2:f.BYTE,sint8x4:f.BYTE,unorm8x2:f.UNSIGNED_BYTE,unorm8x4:f.UNSIGNED_BYTE,snorm8x2:f.BYTE,snorm8x4:f.BYTE,uint16x2:f.UNSIGNED_SHORT,uint16x4:f.UNSIGNED_SHORT,sint16x2:f.SHORT,sint16x4:f.SHORT,unorm16x2:f.UNSIGNED_SHORT,unorm16x4:f.UNSIGNED_SHORT,snorm16x2:f.SHORT,snorm16x4:f.SHORT,float16x2:f.HALF_FLOAT,float16x4:f.HALF_FLOAT,float32:f.FLOAT,float32x2:f.FLOAT,float32x3:f.FLOAT,float32x4:f.FLOAT,uint32:f.UNSIGNED_INT,uint32x2:f.UNSIGNED_INT,uint32x3:f.UNSIGNED_INT,uint32x4:f.UNSIGNED_INT,sint32:f.INT,sint32x2:f.INT,sint32x3:f.INT,sint32x4:f.INT};function Xe(t){return w[t]??w.float32}const We={"point-list":0,"line-list":1,"line-strip":3,"triangle-list":4,"triangle-strip":5};class ne{constructor(e){this._geometryVaoHash=Object.create(null),this._renderer=e,this._activeGeometry=null,this._activeVao=null,this.hasVao=!0,this.hasInstance=!0}contextChange(){const e=this.gl=this._renderer.gl;if(!this._renderer.context.supports.vertexArrayObject)throw new Error("[PixiJS] Vertex Array Objects are not supported on this device");const r=this._renderer.context.extensions.vertexArrayObject;r&&(e.createVertexArray=()=>r.createVertexArrayOES(),e.bindVertexArray=n=>r.bindVertexArrayOES(n),e.deleteVertexArray=n=>r.deleteVertexArrayOES(n));const s=this._renderer.context.extensions.vertexAttribDivisorANGLE;s&&(e.drawArraysInstanced=(n,i,a,o)=>{s.drawArraysInstancedANGLE(n,i,a,o)},e.drawElementsInstanced=(n,i,a,o,c)=>{s.drawElementsInstancedANGLE(n,i,a,o,c)},e.vertexAttribDivisor=(n,i)=>s.vertexAttribDivisorANGLE(n,i)),this._activeGeometry=null,this._activeVao=null,this._geometryVaoHash=Object.create(null)}bind(e,r){const s=this.gl;this._activeGeometry=e;const n=this.getVao(e,r);this._activeVao!==n&&(this._activeVao=n,s.bindVertexArray(n)),this.updateBuffers()}reset(){this.unbind()}updateBuffers(){const e=this._activeGeometry,r=this._renderer.buffer;for(let s=0;s1?i.drawElementsInstanced(o,r||a.indexBuffer.data.length,u,(s||0)*c,n):i.drawElements(o,r||a.indexBuffer.data.length,u,(s||0)*c)}else n>1?i.drawArraysInstanced(o,s||0,r||a.getSize(),n):i.drawArrays(o,s||0,r||a.getSize());return this}unbind(){this.gl.bindVertexArray(null),this._activeVao=null,this._activeGeometry=null}destroy(){this._renderer=null,this.gl=null,this._activeVao=null,this._activeGeometry=null}}ne.extension={type:[l.WebGLSystem],name:"geometry"};const je=new Ae({attributes:{aPosition:[-1,-1,3,-1,-1,3]}}),F=class ie{constructor(e){this.useBackBuffer=!1,this._useBackBufferThisRender=!1,this._renderer=e}init(e={}){const{useBackBuffer:r,antialias:s}={...ie.defaultOptions,...e};this.useBackBuffer=r,this._antialias=s,this._renderer.context.supports.msaa||(m("antialiasing, is not supported on when using the back buffer"),this._antialias=!1),this._state=O.for2d();const n=new Be({vertex:` attribute vec2 aPosition; out vec2 vUv; diff --git a/assets/WebGPURenderer-BBQkeqcg.js b/assets/WebGPURenderer-BR803xQA.js similarity index 99% rename from assets/WebGPURenderer-BBQkeqcg.js rename to assets/WebGPURenderer-BR803xQA.js index 5d27a85..3906eef 100644 --- a/assets/WebGPURenderer-BBQkeqcg.js +++ b/assets/WebGPURenderer-BR803xQA.js @@ -1,4 +1,4 @@ -import{g as w,E as l,f as ne,D as P,S as T,B as S,d as oe,h as R,i as C,w as E,j as b,k as ae,T as ue,l as A,m as U,M as k,o as L,p as ce,q as de,s as he,t as D,u as z,a as M,e as G,A as pe,R as le}from"./index-ChER3YqS.js";import{S as F,l as fe,a as ge}from"./colorToUniform-BGjOuL4T.js";import{c as me,u as _e,U as be,B as ye,G as xe,e as Ge,R as Be,t as Se,S as Pe,a as Te}from"./SharedSystems-DzPCdZj-.js";const y=F.for2d();class O{start(e,t,r){const s=e.renderer,i=s.encoder,n=r.gpuProgram;this._shader=r,this._geometry=t,i.setGeometry(t,n),y.blendMode="normal",s.pipeline.getPipeline(t,n,y);const o=s.globalUniforms.bindGroup;i.resetBindGroup(1),i.setBindGroup(0,o,n)}execute(e,t){const r=this._shader.gpuProgram,s=e.renderer,i=s.encoder;if(!t.bindGroup){const u=t.textures;t.bindGroup=w(u.textures,u.count)}y.blendMode=t.blendMode;const n=s.bindGroup.getBindGroup(t.bindGroup,r,1),o=s.pipeline.getPipeline(this._geometry,r,y);t.bindGroup._touch(s.textureGC.count),i.setPipeline(o),i.renderPassEncoder.setBindGroup(1,n),i.renderPassEncoder.drawIndexed(t.size,1,t.start)}}O.extension={type:[l.WebGPUPipesAdaptor],name:"batch"};class H{constructor(e){this._hash=Object.create(null),this._renderer=e}contextChange(e){this._gpu=e}getBindGroup(e,t,r){return e._updateKey(),this._hash[e._key]||this._createBindGroup(e,t,r)}_createBindGroup(e,t,r){const s=this._gpu.device,i=t.layout[r],n=[],o=this._renderer;for(const f in i){const h=e.resources[f]??e.resources[i[f]];let p;if(h._resourceType==="uniformGroup"){const d=h;o.ubo.updateUniformGroup(d);const g=d.buffer;p={buffer:o.buffer.getGPUBuffer(g),offset:0,size:g.descriptor.size}}else if(h._resourceType==="buffer"){const d=h;p={buffer:o.buffer.getGPUBuffer(d),offset:0,size:d.descriptor.size}}else if(h._resourceType==="bufferResource"){const d=h;p={buffer:o.buffer.getGPUBuffer(d.buffer),offset:d.offset,size:d.size}}else if(h._resourceType==="textureSampler"){const d=h;p=o.texture.getGpuSampler(d)}else if(h._resourceType==="textureSource"){const d=h;p=o.texture.getGpuSource(d).createView({})}n.push({binding:i[f],resource:p})}const u=o.shader.getProgramData(t).bindGroups[r],c=s.createBindGroup({layout:u,entries:n});return this._hash[e._key]=c,c}destroy(){for(const e of Object.keys(this._hash))this._hash[e]=null;this._hash=null,this._renderer=null}}H.extension={type:[l.WebGPUSystem],name:"bindGroup"};class W{constructor(){this._gpuBuffers=Object.create(null),this._managedBuffers=[]}contextChange(e){this._gpu=e}getGPUBuffer(e){return this._gpuBuffers[e.uid]||this.createGPUBuffer(e)}updateBuffer(e){const t=this._gpuBuffers[e.uid]||this.createGPUBuffer(e),r=e.data;return e._updateID&&r&&(e._updateID=0,this._gpu.device.queue.writeBuffer(t,0,r.buffer,0,(e._updateSize||r.byteLength)+3&-4)),t}destroyAll(){for(const e in this._gpuBuffers)this._gpuBuffers[e].destroy();this._gpuBuffers={}}createGPUBuffer(e){this._gpuBuffers[e.uid]||(e.on("update",this.updateBuffer,this),e.on("change",this.onBufferChange,this),e.on("destroy",this.onBufferDestroy,this),this._managedBuffers.push(e));const t=this._gpu.device.createBuffer(e.descriptor);return e._updateID=0,e.data&&(ne(e.data.buffer,t.getMappedRange()),t.unmap()),this._gpuBuffers[e.uid]=t,t}onBufferChange(e){this._gpuBuffers[e.uid].destroy(),e._updateID=0,this._gpuBuffers[e.uid]=this.createGPUBuffer(e)}onBufferDestroy(e){this._managedBuffers.splice(this._managedBuffers.indexOf(e),1),this._destroyBuffer(e)}destroy(){this._managedBuffers.forEach(e=>this._destroyBuffer(e)),this._managedBuffers=null,this._gpuBuffers=null}_destroyBuffer(e){this._gpuBuffers[e.uid].destroy(),e.off("update",this.updateBuffer,this),e.off("change",this.onBufferChange,this),e.off("destroy",this.onBufferDestroy,this),this._gpuBuffers[e.uid]=null}}W.extension={type:[l.WebGPUSystem],name:"buffer"};class ve{constructor({minUniformOffsetAlignment:e}){this._minUniformOffsetAlignment=256,this.byteIndex=0,this._minUniformOffsetAlignment=e,this.data=new Float32Array(65535)}clear(){this.byteIndex=0}addEmptyGroup(e){if(e>this._minUniformOffsetAlignment/4)throw new Error(`UniformBufferBatch: array is too large: ${e*4}`);const t=this.byteIndex;let r=t+e*4;if(r=Math.ceil(r/this._minUniformOffsetAlignment)*this._minUniformOffsetAlignment,r>this.data.length*4)throw new Error("UniformBufferBatch: ubo batch got too big");return this.byteIndex=r,t}addGroup(e){const t=this.addEmptyGroup(e.length);for(let r=0;r{this.gpu=t,this._renderer.runners.contextChange.emit(this.gpu)}),this._initPromise)}contextChange(e){this._renderer.gpu=e}async _createDeviceAndAdaptor(e){const t=await P.get().getNavigator().gpu.requestAdapter({powerPreference:e.powerPreference,forceFallbackAdapter:e.forceFallbackAdapter}),r=["texture-compression-bc","texture-compression-astc","texture-compression-etc2"].filter(i=>t.features.has(i)),s=await t.requestDevice({requiredFeatures:r});return{adapter:t,device:s}}destroy(){this.gpu=null,this._renderer=null}}v.extension={type:[l.WebGPUSystem],name:"device"};v.defaultOptions={powerPreference:void 0,forceFallbackAdapter:!1};class V{constructor(e){this._boundBindGroup=Object.create(null),this._boundVertexBuffer=Object.create(null),this._renderer=e}renderStart(){this.commandFinished=new Promise(e=>{this._resolveCommandFinished=e}),this.commandEncoder=this._renderer.gpu.device.createCommandEncoder()}beginRenderPass(e){this.endRenderPass(),this._clearCache(),this.renderPassEncoder=this.commandEncoder.beginRenderPass(e.descriptor)}endRenderPass(){this.renderPassEncoder&&this.renderPassEncoder.end(),this.renderPassEncoder=null}setViewport(e){this.renderPassEncoder.setViewport(e.x,e.y,e.width,e.height,0,1)}setPipelineFromGeometryProgramAndState(e,t,r,s){const i=this._renderer.pipeline.getPipeline(e,t,r,s);this.setPipeline(i)}setPipeline(e){this._boundPipeline!==e&&(this._boundPipeline=e,this.renderPassEncoder.setPipeline(e))}_setVertexBuffer(e,t){this._boundVertexBuffer[e]!==t&&(this._boundVertexBuffer[e]=t,this.renderPassEncoder.setVertexBuffer(e,this._renderer.buffer.updateBuffer(t)))}_setIndexBuffer(e){if(this._boundIndexBuffer===e)return;this._boundIndexBuffer=e;const t=e.data.BYTES_PER_ELEMENT===2?"uint16":"uint32";this.renderPassEncoder.setIndexBuffer(this._renderer.buffer.updateBuffer(e),t)}resetBindGroup(e){this._boundBindGroup[e]=null}setBindGroup(e,t,r){if(this._boundBindGroup[e]===t)return;this._boundBindGroup[e]=t,t._touch(this._renderer.textureGC.count);const s=this._renderer.bindGroup.getBindGroup(t,r,e);this.renderPassEncoder.setBindGroup(e,s)}setGeometry(e,t){const r=this._renderer.pipeline.getBufferNamesToBind(e,t);for(const s in r)this._setVertexBuffer(s,e.attributes[r[s]].buffer);e.indexBuffer&&this._setIndexBuffer(e.indexBuffer)}_setShaderBindGroups(e,t){for(const r in e.groups){const s=e.groups[r];t||this._syncBindGroup(s),this.setBindGroup(r,s,e.gpuProgram)}}_syncBindGroup(e){for(const t in e.resources){const r=e.resources[t];r.isUniformGroup&&this._renderer.ubo.updateUniformGroup(r)}}draw(e){const{geometry:t,shader:r,state:s,topology:i,size:n,start:o,instanceCount:u,skipSync:c}=e;this.setPipelineFromGeometryProgramAndState(t,r.gpuProgram,s,i),this.setGeometry(t,r.gpuProgram),this._setShaderBindGroups(r,c),t.indexBuffer?this.renderPassEncoder.drawIndexed(n||t.indexBuffer.data.length,u||t.instanceCount,o||0):this.renderPassEncoder.draw(n||t.getSize(),u||t.instanceCount,o||0)}finishRenderPass(){this.renderPassEncoder&&(this.renderPassEncoder.end(),this.renderPassEncoder=null)}postrender(){this.finishRenderPass(),this._gpu.device.queue.submit([this.commandEncoder.finish()]),this._resolveCommandFinished(),this.commandEncoder=null}restoreRenderPass(){const e=this._renderer.renderTarget.adaptor.getDescriptor(this._renderer.renderTarget.renderTarget,!1,[0,0,0,1]);this.renderPassEncoder=this.commandEncoder.beginRenderPass(e);const t=this._boundPipeline,r={...this._boundVertexBuffer},s=this._boundIndexBuffer,i={...this._boundBindGroup};this._clearCache();const n=this._renderer.renderTarget.viewport;this.renderPassEncoder.setViewport(n.x,n.y,n.width,n.height,0,1),this.setPipeline(t);for(const o in r)this._setVertexBuffer(o,r[o]);for(const o in i)this.setBindGroup(o,i[o],null);this._setIndexBuffer(s)}_clearCache(){for(let e=0;e<16;e++)this._boundBindGroup[e]=null,this._boundVertexBuffer[e]=null;this._boundIndexBuffer=null,this._boundPipeline=null}destroy(){this._renderer=null,this._gpu=null,this._boundBindGroup=null,this._boundVertexBuffer=null,this._boundIndexBuffer=null,this._boundPipeline=null}contextChange(e){this._gpu=e}}V.extension={type:[l.WebGPUSystem],name:"encoder",priority:1};class N{constructor(e){this._renderTargetStencilState=Object.create(null),this._renderer=e,e.renderTarget.onRenderTargetChange.add(this)}onRenderTargetChange(e){let t=this._renderTargetStencilState[e.uid];t||(t=this._renderTargetStencilState[e.uid]={stencilMode:T.DISABLED,stencilReference:0}),this._activeRenderTarget=e,this.setStencilMode(t.stencilMode,t.stencilReference)}setStencilMode(e,t){const r=this._renderTargetStencilState[this._activeRenderTarget.uid];r.stencilMode=e,r.stencilReference=t;const s=this._renderer;s.pipeline.setStencilMode(e),s.encoder.renderPassEncoder.setStencilReference(t)}destroy(){this._renderer.renderTarget.onRenderTargetChange.remove(this),this._renderer=null,this._activeRenderTarget=null,this._renderTargetStencilState=null}}N.extension={type:[l.WebGPUSystem],name:"stencil"};const x={i32:{align:4,size:4},u32:{align:4,size:4},f32:{align:4,size:4},f16:{align:2,size:2},"vec2":{align:8,size:8},"vec2":{align:8,size:8},"vec2":{align:8,size:8},"vec2":{align:4,size:4},"vec3":{align:16,size:12},"vec3":{align:16,size:12},"vec3":{align:16,size:12},"vec3":{align:8,size:6},"vec4":{align:16,size:16},"vec4":{align:16,size:16},"vec4":{align:16,size:16},"vec4":{align:8,size:8},"mat2x2":{align:8,size:16},"mat2x2":{align:4,size:8},"mat3x2":{align:8,size:24},"mat3x2":{align:4,size:12},"mat4x2":{align:8,size:32},"mat4x2":{align:4,size:16},"mat2x3":{align:16,size:32},"mat2x3":{align:8,size:16},"mat3x3":{align:16,size:48},"mat3x3":{align:8,size:24},"mat4x3":{align:16,size:64},"mat4x3":{align:8,size:32},"mat2x4":{align:16,size:32},"mat2x4":{align:8,size:16},"mat3x4":{align:16,size:48},"mat3x4":{align:8,size:24},"mat4x4":{align:16,size:64},"mat4x4":{align:8,size:32}};function Ce(a){const e=a.map(r=>({data:r,offset:0,size:0}));let t=0;for(let r=0;r1&&(i=Math.max(i,n)*s.data.size),t=Math.ceil(t/n)*n,s.size=i,s.offset=t,t+=i}return t=Math.ceil(t/16)*16,{uboElements:e,size:t}}function Ue(a,e){const{size:t,align:r}=x[a.data.type],s=(r-t)/4;return` +import{g as w,E as l,f as ne,D as P,S as T,B as S,d as oe,h as R,i as C,w as E,j as b,k as ae,T as ue,l as A,m as U,M as k,o as L,p as ce,q as de,s as he,t as D,u as z,a as M,e as G,A as pe,R as le}from"./index-BT5ZfHPv.js";import{S as F,l as fe,a as ge}from"./colorToUniform-CAElEulk.js";import{c as me,u as _e,U as be,B as ye,G as xe,e as Ge,R as Be,t as Se,S as Pe,a as Te}from"./SharedSystems-DeBRvkiC.js";const y=F.for2d();class O{start(e,t,r){const s=e.renderer,i=s.encoder,n=r.gpuProgram;this._shader=r,this._geometry=t,i.setGeometry(t,n),y.blendMode="normal",s.pipeline.getPipeline(t,n,y);const o=s.globalUniforms.bindGroup;i.resetBindGroup(1),i.setBindGroup(0,o,n)}execute(e,t){const r=this._shader.gpuProgram,s=e.renderer,i=s.encoder;if(!t.bindGroup){const u=t.textures;t.bindGroup=w(u.textures,u.count)}y.blendMode=t.blendMode;const n=s.bindGroup.getBindGroup(t.bindGroup,r,1),o=s.pipeline.getPipeline(this._geometry,r,y);t.bindGroup._touch(s.textureGC.count),i.setPipeline(o),i.renderPassEncoder.setBindGroup(1,n),i.renderPassEncoder.drawIndexed(t.size,1,t.start)}}O.extension={type:[l.WebGPUPipesAdaptor],name:"batch"};class H{constructor(e){this._hash=Object.create(null),this._renderer=e}contextChange(e){this._gpu=e}getBindGroup(e,t,r){return e._updateKey(),this._hash[e._key]||this._createBindGroup(e,t,r)}_createBindGroup(e,t,r){const s=this._gpu.device,i=t.layout[r],n=[],o=this._renderer;for(const f in i){const h=e.resources[f]??e.resources[i[f]];let p;if(h._resourceType==="uniformGroup"){const d=h;o.ubo.updateUniformGroup(d);const g=d.buffer;p={buffer:o.buffer.getGPUBuffer(g),offset:0,size:g.descriptor.size}}else if(h._resourceType==="buffer"){const d=h;p={buffer:o.buffer.getGPUBuffer(d),offset:0,size:d.descriptor.size}}else if(h._resourceType==="bufferResource"){const d=h;p={buffer:o.buffer.getGPUBuffer(d.buffer),offset:d.offset,size:d.size}}else if(h._resourceType==="textureSampler"){const d=h;p=o.texture.getGpuSampler(d)}else if(h._resourceType==="textureSource"){const d=h;p=o.texture.getGpuSource(d).createView({})}n.push({binding:i[f],resource:p})}const u=o.shader.getProgramData(t).bindGroups[r],c=s.createBindGroup({layout:u,entries:n});return this._hash[e._key]=c,c}destroy(){for(const e of Object.keys(this._hash))this._hash[e]=null;this._hash=null,this._renderer=null}}H.extension={type:[l.WebGPUSystem],name:"bindGroup"};class W{constructor(){this._gpuBuffers=Object.create(null),this._managedBuffers=[]}contextChange(e){this._gpu=e}getGPUBuffer(e){return this._gpuBuffers[e.uid]||this.createGPUBuffer(e)}updateBuffer(e){const t=this._gpuBuffers[e.uid]||this.createGPUBuffer(e),r=e.data;return e._updateID&&r&&(e._updateID=0,this._gpu.device.queue.writeBuffer(t,0,r.buffer,0,(e._updateSize||r.byteLength)+3&-4)),t}destroyAll(){for(const e in this._gpuBuffers)this._gpuBuffers[e].destroy();this._gpuBuffers={}}createGPUBuffer(e){this._gpuBuffers[e.uid]||(e.on("update",this.updateBuffer,this),e.on("change",this.onBufferChange,this),e.on("destroy",this.onBufferDestroy,this),this._managedBuffers.push(e));const t=this._gpu.device.createBuffer(e.descriptor);return e._updateID=0,e.data&&(ne(e.data.buffer,t.getMappedRange()),t.unmap()),this._gpuBuffers[e.uid]=t,t}onBufferChange(e){this._gpuBuffers[e.uid].destroy(),e._updateID=0,this._gpuBuffers[e.uid]=this.createGPUBuffer(e)}onBufferDestroy(e){this._managedBuffers.splice(this._managedBuffers.indexOf(e),1),this._destroyBuffer(e)}destroy(){this._managedBuffers.forEach(e=>this._destroyBuffer(e)),this._managedBuffers=null,this._gpuBuffers=null}_destroyBuffer(e){this._gpuBuffers[e.uid].destroy(),e.off("update",this.updateBuffer,this),e.off("change",this.onBufferChange,this),e.off("destroy",this.onBufferDestroy,this),this._gpuBuffers[e.uid]=null}}W.extension={type:[l.WebGPUSystem],name:"buffer"};class ve{constructor({minUniformOffsetAlignment:e}){this._minUniformOffsetAlignment=256,this.byteIndex=0,this._minUniformOffsetAlignment=e,this.data=new Float32Array(65535)}clear(){this.byteIndex=0}addEmptyGroup(e){if(e>this._minUniformOffsetAlignment/4)throw new Error(`UniformBufferBatch: array is too large: ${e*4}`);const t=this.byteIndex;let r=t+e*4;if(r=Math.ceil(r/this._minUniformOffsetAlignment)*this._minUniformOffsetAlignment,r>this.data.length*4)throw new Error("UniformBufferBatch: ubo batch got too big");return this.byteIndex=r,t}addGroup(e){const t=this.addEmptyGroup(e.length);for(let r=0;r{this.gpu=t,this._renderer.runners.contextChange.emit(this.gpu)}),this._initPromise)}contextChange(e){this._renderer.gpu=e}async _createDeviceAndAdaptor(e){const t=await P.get().getNavigator().gpu.requestAdapter({powerPreference:e.powerPreference,forceFallbackAdapter:e.forceFallbackAdapter}),r=["texture-compression-bc","texture-compression-astc","texture-compression-etc2"].filter(i=>t.features.has(i)),s=await t.requestDevice({requiredFeatures:r});return{adapter:t,device:s}}destroy(){this.gpu=null,this._renderer=null}}v.extension={type:[l.WebGPUSystem],name:"device"};v.defaultOptions={powerPreference:void 0,forceFallbackAdapter:!1};class V{constructor(e){this._boundBindGroup=Object.create(null),this._boundVertexBuffer=Object.create(null),this._renderer=e}renderStart(){this.commandFinished=new Promise(e=>{this._resolveCommandFinished=e}),this.commandEncoder=this._renderer.gpu.device.createCommandEncoder()}beginRenderPass(e){this.endRenderPass(),this._clearCache(),this.renderPassEncoder=this.commandEncoder.beginRenderPass(e.descriptor)}endRenderPass(){this.renderPassEncoder&&this.renderPassEncoder.end(),this.renderPassEncoder=null}setViewport(e){this.renderPassEncoder.setViewport(e.x,e.y,e.width,e.height,0,1)}setPipelineFromGeometryProgramAndState(e,t,r,s){const i=this._renderer.pipeline.getPipeline(e,t,r,s);this.setPipeline(i)}setPipeline(e){this._boundPipeline!==e&&(this._boundPipeline=e,this.renderPassEncoder.setPipeline(e))}_setVertexBuffer(e,t){this._boundVertexBuffer[e]!==t&&(this._boundVertexBuffer[e]=t,this.renderPassEncoder.setVertexBuffer(e,this._renderer.buffer.updateBuffer(t)))}_setIndexBuffer(e){if(this._boundIndexBuffer===e)return;this._boundIndexBuffer=e;const t=e.data.BYTES_PER_ELEMENT===2?"uint16":"uint32";this.renderPassEncoder.setIndexBuffer(this._renderer.buffer.updateBuffer(e),t)}resetBindGroup(e){this._boundBindGroup[e]=null}setBindGroup(e,t,r){if(this._boundBindGroup[e]===t)return;this._boundBindGroup[e]=t,t._touch(this._renderer.textureGC.count);const s=this._renderer.bindGroup.getBindGroup(t,r,e);this.renderPassEncoder.setBindGroup(e,s)}setGeometry(e,t){const r=this._renderer.pipeline.getBufferNamesToBind(e,t);for(const s in r)this._setVertexBuffer(s,e.attributes[r[s]].buffer);e.indexBuffer&&this._setIndexBuffer(e.indexBuffer)}_setShaderBindGroups(e,t){for(const r in e.groups){const s=e.groups[r];t||this._syncBindGroup(s),this.setBindGroup(r,s,e.gpuProgram)}}_syncBindGroup(e){for(const t in e.resources){const r=e.resources[t];r.isUniformGroup&&this._renderer.ubo.updateUniformGroup(r)}}draw(e){const{geometry:t,shader:r,state:s,topology:i,size:n,start:o,instanceCount:u,skipSync:c}=e;this.setPipelineFromGeometryProgramAndState(t,r.gpuProgram,s,i),this.setGeometry(t,r.gpuProgram),this._setShaderBindGroups(r,c),t.indexBuffer?this.renderPassEncoder.drawIndexed(n||t.indexBuffer.data.length,u||t.instanceCount,o||0):this.renderPassEncoder.draw(n||t.getSize(),u||t.instanceCount,o||0)}finishRenderPass(){this.renderPassEncoder&&(this.renderPassEncoder.end(),this.renderPassEncoder=null)}postrender(){this.finishRenderPass(),this._gpu.device.queue.submit([this.commandEncoder.finish()]),this._resolveCommandFinished(),this.commandEncoder=null}restoreRenderPass(){const e=this._renderer.renderTarget.adaptor.getDescriptor(this._renderer.renderTarget.renderTarget,!1,[0,0,0,1]);this.renderPassEncoder=this.commandEncoder.beginRenderPass(e);const t=this._boundPipeline,r={...this._boundVertexBuffer},s=this._boundIndexBuffer,i={...this._boundBindGroup};this._clearCache();const n=this._renderer.renderTarget.viewport;this.renderPassEncoder.setViewport(n.x,n.y,n.width,n.height,0,1),this.setPipeline(t);for(const o in r)this._setVertexBuffer(o,r[o]);for(const o in i)this.setBindGroup(o,i[o],null);this._setIndexBuffer(s)}_clearCache(){for(let e=0;e<16;e++)this._boundBindGroup[e]=null,this._boundVertexBuffer[e]=null;this._boundIndexBuffer=null,this._boundPipeline=null}destroy(){this._renderer=null,this._gpu=null,this._boundBindGroup=null,this._boundVertexBuffer=null,this._boundIndexBuffer=null,this._boundPipeline=null}contextChange(e){this._gpu=e}}V.extension={type:[l.WebGPUSystem],name:"encoder",priority:1};class N{constructor(e){this._renderTargetStencilState=Object.create(null),this._renderer=e,e.renderTarget.onRenderTargetChange.add(this)}onRenderTargetChange(e){let t=this._renderTargetStencilState[e.uid];t||(t=this._renderTargetStencilState[e.uid]={stencilMode:T.DISABLED,stencilReference:0}),this._activeRenderTarget=e,this.setStencilMode(t.stencilMode,t.stencilReference)}setStencilMode(e,t){const r=this._renderTargetStencilState[this._activeRenderTarget.uid];r.stencilMode=e,r.stencilReference=t;const s=this._renderer;s.pipeline.setStencilMode(e),s.encoder.renderPassEncoder.setStencilReference(t)}destroy(){this._renderer.renderTarget.onRenderTargetChange.remove(this),this._renderer=null,this._activeRenderTarget=null,this._renderTargetStencilState=null}}N.extension={type:[l.WebGPUSystem],name:"stencil"};const x={i32:{align:4,size:4},u32:{align:4,size:4},f32:{align:4,size:4},f16:{align:2,size:2},"vec2":{align:8,size:8},"vec2":{align:8,size:8},"vec2":{align:8,size:8},"vec2":{align:4,size:4},"vec3":{align:16,size:12},"vec3":{align:16,size:12},"vec3":{align:16,size:12},"vec3":{align:8,size:6},"vec4":{align:16,size:16},"vec4":{align:16,size:16},"vec4":{align:16,size:16},"vec4":{align:8,size:8},"mat2x2":{align:8,size:16},"mat2x2":{align:4,size:8},"mat3x2":{align:8,size:24},"mat3x2":{align:4,size:12},"mat4x2":{align:8,size:32},"mat4x2":{align:4,size:16},"mat2x3":{align:16,size:32},"mat2x3":{align:8,size:16},"mat3x3":{align:16,size:48},"mat3x3":{align:8,size:24},"mat4x3":{align:16,size:64},"mat4x3":{align:8,size:32},"mat2x4":{align:16,size:32},"mat2x4":{align:8,size:16},"mat3x4":{align:16,size:48},"mat3x4":{align:8,size:24},"mat4x4":{align:16,size:64},"mat4x4":{align:8,size:32}};function Ce(a){const e=a.map(r=>({data:r,offset:0,size:0}));let t=0;for(let r=0;r1&&(i=Math.max(i,n)*s.data.size),t=Math.ceil(t/n)*n,s.size=i,s.offset=t,t+=i}return t=Math.ceil(t/16)*16,{uboElements:e,size:t}}function Ue(a,e){const{size:t,align:r}=x[a.data.type],s=(r-t)/4;return` v = uv.${a.data.name}; ${e!==0?`offset += ${e};`:""} diff --git a/assets/browserAll-CjAcs4Zl.js b/assets/browserAll-CrzJE7an.js similarity index 99% rename from assets/browserAll-CjAcs4Zl.js rename to assets/browserAll-CrzJE7an.js index 2a5c317..c2b7cd2 100644 --- a/assets/browserAll-CjAcs4Zl.js +++ b/assets/browserAll-CrzJE7an.js @@ -1 +1 @@ -import{P as m,r as J,E as w,b as L,U as Q,c as ee,w as y,e as z,C as Z}from"./index-ChER3YqS.js";import"./webworkerAll-C0L-Jtox.js";import"./colorToUniform-BGjOuL4T.js";class M{constructor(e){this.bubbles=!0,this.cancelBubble=!0,this.cancelable=!1,this.composed=!1,this.defaultPrevented=!1,this.eventPhase=M.prototype.NONE,this.propagationStopped=!1,this.propagationImmediatelyStopped=!1,this.layer=new m,this.page=new m,this.NONE=0,this.CAPTURING_PHASE=1,this.AT_TARGET=2,this.BUBBLING_PHASE=3,this.manager=e}get layerX(){return this.layer.x}get layerY(){return this.layer.y}get pageX(){return this.page.x}get pageY(){return this.page.y}get data(){return this}composedPath(){return this.manager&&(!this.path||this.path[this.path.length-1]!==this.target)&&(this.path=this.target?this.manager.propagationPath(this.target):[]),this.path}initEvent(e,t,i){throw new Error("initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}initUIEvent(e,t,i,n,s){throw new Error("initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}preventDefault(){this.nativeEvent instanceof Event&&this.nativeEvent.cancelable&&this.nativeEvent.preventDefault(),this.defaultPrevented=!0}stopImmediatePropagation(){this.propagationImmediatelyStopped=!0}stopPropagation(){this.propagationStopped=!0}}var O=/iPhone/i,C=/iPod/i,S=/iPad/i,U=/\biOS-universal(?:.+)Mac\b/i,k=/\bAndroid(?:.+)Mobile\b/i,H=/Android/i,b=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,A=/Silk/i,g=/Windows Phone/i,X=/\bWindows(?:.+)ARM\b/i,R=/BlackBerry/i,F=/BB10/i,Y=/Opera Mini/i,K=/\b(CriOS|Chrome)(?:.+)Mobile/i,$=/Mobile(?:.+)Firefox\b/i,G=function(r){return typeof r<"u"&&r.platform==="MacIntel"&&typeof r.maxTouchPoints=="number"&&r.maxTouchPoints>1&&typeof MSStream>"u"};function te(r){return function(e){return e.test(r)}}function W(r){var e={userAgent:"",platform:"",maxTouchPoints:0};!r&&typeof navigator<"u"?e={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0}:typeof r=="string"?e.userAgent=r:r&&r.userAgent&&(e={userAgent:r.userAgent,platform:r.platform,maxTouchPoints:r.maxTouchPoints||0});var t=e.userAgent,i=t.split("[FBAN");typeof i[1]<"u"&&(t=i[0]),i=t.split("Twitter"),typeof i[1]<"u"&&(t=i[0]);var n=te(t),s={apple:{phone:n(O)&&!n(g),ipod:n(C),tablet:!n(O)&&(n(S)||G(e))&&!n(g),universal:n(U),device:(n(O)||n(C)||n(S)||n(U)||G(e))&&!n(g)},amazon:{phone:n(b),tablet:!n(b)&&n(A),device:n(b)||n(A)},android:{phone:!n(g)&&n(b)||!n(g)&&n(k),tablet:!n(g)&&!n(b)&&!n(k)&&(n(A)||n(H)),device:!n(g)&&(n(b)||n(A)||n(k)||n(H))||n(/\bokhttp\b/i)},windows:{phone:n(g),tablet:n(X),device:n(g)||n(X)},other:{blackberry:n(R),blackberry10:n(F),opera:n(Y),firefox:n($),chrome:n(K),device:n(R)||n(F)||n(Y)||n($)||n(K)},any:!1,phone:!1,tablet:!1};return s.any=s.apple.device||s.android.device||s.windows.device||s.other.device,s.phone=s.apple.phone||s.android.phone||s.windows.phone,s.tablet=s.apple.tablet||s.android.tablet||s.windows.tablet,s}const ie=W.default??W,ne=ie(globalThis.navigator),se=9,I=100,oe=0,re=0,j=2,N=1,ae=-1e3,he=-1e3,le=2;class V{constructor(e,t=ne){this._mobileInfo=t,this.debug=!1,this._isActive=!1,this._isMobileAccessibility=!1,this._pool=[],this._renderId=0,this._children=[],this._androidUpdateCount=0,this._androidUpdateFrequency=500,this._hookDiv=null,(t.tablet||t.phone)&&this._createTouchHook();const i=document.createElement("div");i.style.width=`${I}px`,i.style.height=`${I}px`,i.style.position="absolute",i.style.top=`${oe}px`,i.style.left=`${re}px`,i.style.zIndex=j.toString(),this._div=i,this._renderer=e,this._onKeyDown=this._onKeyDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),globalThis.addEventListener("keydown",this._onKeyDown,!1)}get isActive(){return this._isActive}get isMobileAccessibility(){return this._isMobileAccessibility}get hookDiv(){return this._hookDiv}_createTouchHook(){const e=document.createElement("button");e.style.width=`${N}px`,e.style.height=`${N}px`,e.style.position="absolute",e.style.top=`${ae}px`,e.style.left=`${he}px`,e.style.zIndex=le.toString(),e.style.backgroundColor="#FF0000",e.title="select to enable accessibility for this content",e.addEventListener("focus",()=>{this._isMobileAccessibility=!0,this._activate(),this._destroyTouchHook()}),document.body.appendChild(e),this._hookDiv=e}_destroyTouchHook(){this._hookDiv&&(document.body.removeChild(this._hookDiv),this._hookDiv=null)}_activate(){var e;this._isActive||(this._isActive=!0,globalThis.document.addEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown,!1),this._renderer.runners.postrender.add(this),(e=this._renderer.view.canvas.parentNode)==null||e.appendChild(this._div))}_deactivate(){var e;!this._isActive||this._isMobileAccessibility||(this._isActive=!1,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.addEventListener("keydown",this._onKeyDown,!1),this._renderer.runners.postrender.remove(this),(e=this._div.parentNode)==null||e.removeChild(this._div))}_updateAccessibleObjects(e){if(!e.visible||!e.accessibleChildren)return;e.accessible&&e.isInteractive()&&(e._accessibleActive||this._addChild(e),e._renderId=this._renderId);const t=e.children;if(t)for(let i=0;i title : ${e.title}
tabIndex: ${e.tabIndex}`}_capHitArea(e){e.x<0&&(e.width+=e.x,e.x=0),e.y<0&&(e.height+=e.y,e.y=0);const{width:t,height:i}=this._renderer;e.x+e.width>t&&(e.width=t-e.x),e.y+e.height>i&&(e.height=i-e.y)}_addChild(e){let t=this._pool.pop();t||(t=document.createElement("button"),t.style.width=`${I}px`,t.style.height=`${I}px`,t.style.backgroundColor=this.debug?"rgba(255,255,255,0.5)":"transparent",t.style.position="absolute",t.style.zIndex=j.toString(),t.style.borderStyle="none",navigator.userAgent.toLowerCase().includes("chrome")?t.setAttribute("aria-live","off"):t.setAttribute("aria-live","polite"),navigator.userAgent.match(/rv:.*Gecko\//)?t.setAttribute("aria-relevant","additions"):t.setAttribute("aria-relevant","text"),t.addEventListener("click",this._onClick.bind(this)),t.addEventListener("focus",this._onFocus.bind(this)),t.addEventListener("focusout",this._onFocusOut.bind(this))),t.style.pointerEvents=e.accessiblePointerEvents,t.type=e.accessibleType,e.accessibleTitle&&e.accessibleTitle!==null?t.title=e.accessibleTitle:(!e.accessibleHint||e.accessibleHint===null)&&(t.title=`container ${e.tabIndex}`),e.accessibleHint&&e.accessibleHint!==null&&t.setAttribute("aria-label",e.accessibleHint),this.debug&&this._updateDebugHTML(t),e._accessibleActive=!0,e._accessibleDiv=t,t.container=e,this._children.push(e),this._div.appendChild(e._accessibleDiv),e._accessibleDiv.tabIndex=e.tabIndex}_dispatchEvent(e,t){const{container:i}=e.target,n=this._renderer.events.rootBoundary,s=Object.assign(new M(n),{target:i});n.rootTarget=this._renderer.lastObjectRendered,t.forEach(o=>n.dispatchEvent(s,o))}_onClick(e){this._dispatchEvent(e,["click","pointertap","tap"])}_onFocus(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","assertive"),this._dispatchEvent(e,["mouseover"])}_onFocusOut(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","polite"),this._dispatchEvent(e,["mouseout"])}_onKeyDown(e){e.keyCode===se&&this._activate()}_onMouseMove(e){e.movementX===0&&e.movementY===0||this._deactivate()}destroy(){this._destroyTouchHook(),this._div=null,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown),this._pool=null,this._children=null,this._renderer=null}}V.extension={type:[w.WebGLSystem,w.WebGPUSystem],name:"accessibility"};const ue={accessible:!1,accessibleTitle:null,accessibleHint:null,tabIndex:0,_accessibleActive:!1,_accessibleDiv:null,accessibleType:"button",accessiblePointerEvents:"auto",accessibleChildren:!0,_renderId:-1};class de{constructor(){this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this._tickerAdded=!1,this._pauseUpdate=!0}init(e){this.removeTickerListener(),this.events=e,this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this._tickerAdded=!1,this._pauseUpdate=!0}get pauseUpdate(){return this._pauseUpdate}set pauseUpdate(e){this._pauseUpdate=e}addTickerListener(){this._tickerAdded||!this.domElement||(L.system.add(this._tickerUpdate,this,Q.INTERACTION),this._tickerAdded=!0)}removeTickerListener(){this._tickerAdded&&(L.system.remove(this._tickerUpdate,this),this._tickerAdded=!1)}pointerMoved(){this._didMove=!0}_update(){if(!this.domElement||this._pauseUpdate)return;if(this._didMove){this._didMove=!1;return}const e=this.events._rootPointerEvent;this.events.supportsTouchEvents&&e.pointerType==="touch"||globalThis.document.dispatchEvent(new PointerEvent("pointermove",{clientX:e.clientX,clientY:e.clientY,pointerType:e.pointerType,pointerId:e.pointerId}))}_tickerUpdate(e){this._deltaTime+=e.deltaTime,!(this._deltaTimei.priority-n.priority)}dispatchEvent(e,t){e.propagationStopped=!1,e.propagationImmediatelyStopped=!1,this.propagate(e,t),this.dispatch.emit(t||e.type,e)}mapEvent(e){if(!this.rootTarget)return;const t=this.mappingTable[e.type];if(t)for(let i=0,n=t.length;i=0;n--)if(e.currentTarget=i[n],this.notifyTarget(e,t),e.propagationStopped||e.propagationImmediatelyStopped)return}}all(e,t,i=this._allInteractiveElements){if(i.length===0)return;e.eventPhase=e.BUBBLING_PHASE;const n=Array.isArray(t)?t:[t];for(let s=i.length-1;s>=0;s--)n.forEach(o=>{e.currentTarget=i[s],this.notifyTarget(e,o)})}propagationPath(e){const t=[e];for(let i=0;i=0;h--){const l=v[h],u=this.hitTestMoveRecursive(l,this._isInteractive(t)?t:l.eventMode,i,n,s,o||s(e,i));if(u){if(u.length>0&&!u[u.length-1].parent)continue;const d=e.isInteractive();(u.length>0||d)&&(d&&this._allInteractiveElements.push(e),u.push(e)),this._hitElements.length===0&&(this._hitElements=u),a=!0}}}const c=this._isInteractive(t),p=e.isInteractive();return p&&p&&this._allInteractiveElements.push(e),o||this._hitElements.length>0?null:a?this._hitElements:c&&!s(e,i)&&n(e,i)?p?[e]:[]:null}hitTestRecursive(e,t,i,n,s){if(this._interactivePrune(e)||s(e,i))return null;if((e.eventMode==="dynamic"||t==="dynamic")&&(E.pauseUpdate=!1),e.interactiveChildren&&e.children){const c=e.children,p=i;for(let v=c.length-1;v>=0;v--){const h=c[v],l=this.hitTestRecursive(h,this._isInteractive(t)?t:h.eventMode,p,n,s);if(l){if(l.length>0&&!l[l.length-1].parent)continue;const u=e.isInteractive();return(l.length>0||u)&&l.push(e),l}}}const o=this._isInteractive(t),a=e.isInteractive();return o&&n(e,i)?a?[e]:[]:null}_isInteractive(e){return e==="static"||e==="dynamic"}_interactivePrune(e){return!e||!e.visible||!e.renderable||!e.includeInBuild||!e.measurable||e.eventMode==="none"||e.eventMode==="passive"&&!e.interactiveChildren}hitPruneFn(e,t){if(e.hitArea&&(e.worldTransform.applyInverse(t,P),!e.hitArea.contains(P.x,P.y)))return!0;if(e.effects&&e.effects.length)for(let i=0;i0&&s!==t.target){const v=e.type==="mousemove"?"mouseout":"pointerout",h=this.createPointerEvent(e,v,s);if(this.dispatchEvent(h,"pointerout"),i&&this.dispatchEvent(h,"mouseout"),!t.composedPath().includes(s)){const l=this.createPointerEvent(e,"pointerleave",s);for(l.eventPhase=l.AT_TARGET;l.target&&!t.composedPath().includes(l.target);)l.currentTarget=l.target,this.notifyTarget(l),i&&this.notifyTarget(l,"mouseleave"),l.target=l.target.parent;this.freeEvent(l)}this.freeEvent(h)}if(s!==t.target){const v=e.type==="mousemove"?"mouseover":"pointerover",h=this.clonePointerEvent(t,v);this.dispatchEvent(h,"pointerover"),i&&this.dispatchEvent(h,"mouseover");let l=s==null?void 0:s.parent;for(;l&&l!==this.rootTarget.parent&&l!==t.target;)l=l.parent;if(!l||l===this.rootTarget.parent){const d=this.clonePointerEvent(t,"pointerenter");for(d.eventPhase=d.AT_TARGET;d.target&&d.target!==s&&d.target!==this.rootTarget.parent;)d.currentTarget=d.target,this.notifyTarget(d),i&&this.notifyTarget(d,"mouseenter"),d.target=d.target.parent;this.freeEvent(d)}this.freeEvent(h)}const o=[],a=this.enableGlobalMoveEvents??!0;this.moveOnAll?o.push("pointermove"):this.dispatchEvent(t,"pointermove"),a&&o.push("globalpointermove"),t.pointerType==="touch"&&(this.moveOnAll?o.splice(1,0,"touchmove"):this.dispatchEvent(t,"touchmove"),a&&o.push("globaltouchmove")),i&&(this.moveOnAll?o.splice(1,0,"mousemove"):this.dispatchEvent(t,"mousemove"),a&&o.push("globalmousemove"),this.cursor=(p=t.target)==null?void 0:p.cursor),o.length>0&&this.all(t,o),this._allInteractiveElements.length=0,this._hitElements.length=0,n.overTargets=t.composedPath(),this.freeEvent(t)}mapPointerOver(e){var o;if(!(e instanceof f)){y("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId),i=this.createPointerEvent(e),n=i.pointerType==="mouse"||i.pointerType==="pen";this.dispatchEvent(i,"pointerover"),n&&this.dispatchEvent(i,"mouseover"),i.pointerType==="mouse"&&(this.cursor=(o=i.target)==null?void 0:o.cursor);const s=this.clonePointerEvent(i,"pointerenter");for(s.eventPhase=s.AT_TARGET;s.target&&s.target!==this.rootTarget.parent;)s.currentTarget=s.target,this.notifyTarget(s),n&&this.notifyTarget(s,"mouseenter"),s.target=s.target.parent;t.overTargets=i.composedPath(),this.freeEvent(i),this.freeEvent(s)}mapPointerOut(e){if(!(e instanceof f)){y("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId);if(t.overTargets){const i=e.pointerType==="mouse"||e.pointerType==="pen",n=this.findMountedTarget(t.overTargets),s=this.createPointerEvent(e,"pointerout",n);this.dispatchEvent(s),i&&this.dispatchEvent(s,"mouseout");const o=this.createPointerEvent(e,"pointerleave",n);for(o.eventPhase=o.AT_TARGET;o.target&&o.target!==this.rootTarget.parent;)o.currentTarget=o.target,this.notifyTarget(o),i&&this.notifyTarget(o,"mouseleave"),o.target=o.target.parent;t.overTargets=null,this.freeEvent(s),this.freeEvent(o)}this.cursor=null}mapPointerUp(e){if(!(e instanceof f)){y("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=performance.now(),i=this.createPointerEvent(e);if(this.dispatchEvent(i,"pointerup"),i.pointerType==="touch")this.dispatchEvent(i,"touchend");else if(i.pointerType==="mouse"||i.pointerType==="pen"){const a=i.button===2;this.dispatchEvent(i,a?"rightup":"mouseup")}const n=this.trackingData(e.pointerId),s=this.findMountedTarget(n.pressTargetsByButton[e.button]);let o=s;if(s&&!i.composedPath().includes(s)){let a=s;for(;a&&!i.composedPath().includes(a);){if(i.currentTarget=a,this.notifyTarget(i,"pointerupoutside"),i.pointerType==="touch")this.notifyTarget(i,"touchendoutside");else if(i.pointerType==="mouse"||i.pointerType==="pen"){const c=i.button===2;this.notifyTarget(i,c?"rightupoutside":"mouseupoutside")}a=a.parent}delete n.pressTargetsByButton[e.button],o=a}if(o){const a=this.clonePointerEvent(i,"click");a.target=o,a.path=null,n.clicksByButton[e.button]||(n.clicksByButton[e.button]={clickCount:0,target:a.target,timeStamp:t});const c=n.clicksByButton[e.button];if(c.target===a.target&&t-c.timeStamp<200?++c.clickCount:c.clickCount=1,c.target=a.target,c.timeStamp=t,a.detail=c.clickCount,a.pointerType==="mouse"){const p=a.button===2;this.dispatchEvent(a,p?"rightclick":"click")}else a.pointerType==="touch"&&this.dispatchEvent(a,"tap");this.dispatchEvent(a,"pointertap"),this.freeEvent(a)}this.freeEvent(i)}mapPointerUpOutside(e){if(!(e instanceof f)){y("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId),i=this.findMountedTarget(t.pressTargetsByButton[e.button]),n=this.createPointerEvent(e);if(i){let s=i;for(;s;)n.currentTarget=s,this.notifyTarget(n,"pointerupoutside"),n.pointerType==="touch"?this.notifyTarget(n,"touchendoutside"):(n.pointerType==="mouse"||n.pointerType==="pen")&&this.notifyTarget(n,n.button===2?"rightupoutside":"mouseupoutside"),s=s.parent;delete t.pressTargetsByButton[e.button]}this.freeEvent(n)}mapWheel(e){if(!(e instanceof T)){y("EventBoundary cannot map a non-wheel event as a wheel event");return}const t=this.createWheelEvent(e);this.dispatchEvent(t),this.freeEvent(t)}findMountedTarget(e){if(!e)return null;let t=e[0];for(let i=1;i(i==="globalMove"&&(this.rootBoundary.enableGlobalMoveEvents=n),t[i]=n,!0)}),this._onPointerDown=this._onPointerDown.bind(this),this._onPointerMove=this._onPointerMove.bind(this),this._onPointerUp=this._onPointerUp.bind(this),this._onPointerOverOut=this._onPointerOverOut.bind(this),this.onWheel=this.onWheel.bind(this)}static get defaultEventMode(){return this._defaultEventMode}init(e){const{canvas:t,resolution:i}=this.renderer;this.setTargetElement(t),this.resolution=i,x._defaultEventMode=e.eventMode??"passive",Object.assign(this.features,e.eventFeatures??{}),this.rootBoundary.enableGlobalMoveEvents=this.features.globalMove}resolutionChange(e){this.resolution=e}destroy(){this.setTargetElement(null),this.renderer=null,this._currentCursor=null}setCursor(e){e=e||"default";let t=!0;if(globalThis.OffscreenCanvas&&this.domElement instanceof OffscreenCanvas&&(t=!1),this._currentCursor===e)return;this._currentCursor=e;const i=this.cursorStyles[e];if(i)switch(typeof i){case"string":t&&(this.domElement.style.cursor=i);break;case"function":i(e);break;case"object":t&&Object.assign(this.domElement.style,i);break}else t&&typeof e=="string"&&!Object.prototype.hasOwnProperty.call(this.cursorStyles,e)&&(this.domElement.style.cursor=e)}get pointer(){return this._rootPointerEvent}_onPointerDown(e){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;const t=this._normalizeToPointerData(e);this.autoPreventDefault&&t[0].isNormalized&&(e.cancelable||!("cancelable"in e))&&e.preventDefault();for(let i=0,n=t.length;i0&&(t=e.composedPath()[0]);const i=t!==this.domElement?"outside":"",n=this._normalizeToPointerData(e);for(let s=0,o=n.length;s"u"&&(s.button=0),typeof s.buttons>"u"&&(s.buttons=1),typeof s.isPrimary>"u"&&(s.isPrimary=e.touches.length===1&&e.type==="touchstart"),typeof s.width>"u"&&(s.width=s.radiusX||1),typeof s.height>"u"&&(s.height=s.radiusY||1),typeof s.tiltX>"u"&&(s.tiltX=0),typeof s.tiltY>"u"&&(s.tiltY=0),typeof s.pointerType>"u"&&(s.pointerType="touch"),typeof s.pointerId>"u"&&(s.pointerId=s.identifier||0),typeof s.pressure>"u"&&(s.pressure=s.force||.5),typeof s.twist>"u"&&(s.twist=0),typeof s.tangentialPressure>"u"&&(s.tangentialPressure=0),typeof s.layerX>"u"&&(s.layerX=s.offsetX=s.clientX),typeof s.layerY>"u"&&(s.layerY=s.offsetY=s.clientY),s.isNormalized=!0,s.type=e.type,t.push(s)}else if(!globalThis.MouseEvent||e instanceof MouseEvent&&(!this.supportsPointerEvents||!(e instanceof globalThis.PointerEvent))){const i=e;typeof i.isPrimary>"u"&&(i.isPrimary=!0),typeof i.width>"u"&&(i.width=1),typeof i.height>"u"&&(i.height=1),typeof i.tiltX>"u"&&(i.tiltX=0),typeof i.tiltY>"u"&&(i.tiltY=0),typeof i.pointerType>"u"&&(i.pointerType="mouse"),typeof i.pointerId>"u"&&(i.pointerId=fe),typeof i.pressure>"u"&&(i.pressure=.5),typeof i.twist>"u"&&(i.twist=0),typeof i.tangentialPressure>"u"&&(i.tangentialPressure=0),i.isNormalized=!0,t.push(i)}else t.push(e);return t}normalizeWheelEvent(e){const t=this._rootWheelEvent;return this._transferMouseData(t,e),t.deltaX=e.deltaX,t.deltaY=e.deltaY,t.deltaZ=e.deltaZ,t.deltaMode=e.deltaMode,this.mapPositionToPoint(t.screen,e.clientX,e.clientY),t.global.copyFrom(t.screen),t.offset.copyFrom(t.screen),t.nativeEvent=e,t.type=e.type,t}_bootstrapEvent(e,t){return e.originalEvent=null,e.nativeEvent=t,e.pointerId=t.pointerId,e.width=t.width,e.height=t.height,e.isPrimary=t.isPrimary,e.pointerType=t.pointerType,e.pressure=t.pressure,e.tangentialPressure=t.tangentialPressure,e.tiltX=t.tiltX,e.tiltY=t.tiltY,e.twist=t.twist,this._transferMouseData(e,t),this.mapPositionToPoint(e.screen,t.clientX,t.clientY),e.global.copyFrom(e.screen),e.offset.copyFrom(e.screen),e.isTrusted=t.isTrusted,e.type==="pointerleave"&&(e.type="pointerout"),e.type.startsWith("mouse")&&(e.type=e.type.replace("mouse","pointer")),e.type.startsWith("touch")&&(e.type=ge[e.type]||e.type),e}_transferMouseData(e,t){e.isTrusted=t.isTrusted,e.srcElement=t.srcElement,e.timeStamp=performance.now(),e.type=t.type,e.altKey=t.altKey,e.button=t.button,e.buttons=t.buttons,e.client.x=t.clientX,e.client.y=t.clientY,e.ctrlKey=t.ctrlKey,e.metaKey=t.metaKey,e.movement.x=t.movementX,e.movement.y=t.movementY,e.page.x=t.pageX,e.page.y=t.pageY,e.relatedTarget=null,e.shiftKey=t.shiftKey}};B.extension={name:"events",type:[w.WebGLSystem,w.CanvasSystem,w.WebGPUSystem],priority:-1};B.defaultEventFeatures={move:!0,globalMove:!0,click:!0,wheel:!0};let q=B;const me={onclick:null,onmousedown:null,onmouseenter:null,onmouseleave:null,onmousemove:null,onglobalmousemove:null,onmouseout:null,onmouseover:null,onmouseup:null,onmouseupoutside:null,onpointercancel:null,onpointerdown:null,onpointerenter:null,onpointerleave:null,onpointermove:null,onglobalpointermove:null,onpointerout:null,onpointerover:null,onpointertap:null,onpointerup:null,onpointerupoutside:null,onrightclick:null,onrightdown:null,onrightup:null,onrightupoutside:null,ontap:null,ontouchcancel:null,ontouchend:null,ontouchendoutside:null,ontouchmove:null,onglobaltouchmove:null,ontouchstart:null,onwheel:null,get interactive(){return this.eventMode==="dynamic"||this.eventMode==="static"},set interactive(r){this.eventMode=r?"static":"passive"},_internalEventMode:void 0,get eventMode(){return this._internalEventMode??q.defaultEventMode},set eventMode(r){this._internalEventMode=r},isInteractive(){return this.eventMode==="static"||this.eventMode==="dynamic"},interactiveChildren:!0,hitArea:null,addEventListener(r,e,t){const i=typeof t=="boolean"&&t||typeof t=="object"&&t.capture,n=typeof t=="object"?t.signal:void 0,s=typeof t=="object"?t.once===!0:!1,o=typeof e=="function"?void 0:e;r=i?`${r}capture`:r;const a=typeof e=="function"?e:e.handleEvent,c=this;n&&n.addEventListener("abort",()=>{c.off(r,a,o)}),s?c.once(r,a,o):c.on(r,a,o)},removeEventListener(r,e,t){const i=typeof t=="boolean"&&t||typeof t=="object"&&t.capture,n=typeof e=="function"?void 0:e;r=i?`${r}capture`:r,e=typeof e=="function"?e:e.handleEvent,this.off(r,e,n)},dispatchEvent(r){if(!(r instanceof M))throw new Error("Container cannot propagate events outside of the Federated Events API");return r.defaultPrevented=!1,r.path=null,r.target=this,r.manager.dispatchEvent(r),!r.defaultPrevented}};z.add(V);Z.mixin(ue);z.add(q);Z.mixin(me); +import{P as m,r as J,E as w,b as L,U as Q,c as ee,w as y,e as z,C as Z}from"./index-BT5ZfHPv.js";import"./webworkerAll-DW2oDrMC.js";import"./colorToUniform-CAElEulk.js";class M{constructor(e){this.bubbles=!0,this.cancelBubble=!0,this.cancelable=!1,this.composed=!1,this.defaultPrevented=!1,this.eventPhase=M.prototype.NONE,this.propagationStopped=!1,this.propagationImmediatelyStopped=!1,this.layer=new m,this.page=new m,this.NONE=0,this.CAPTURING_PHASE=1,this.AT_TARGET=2,this.BUBBLING_PHASE=3,this.manager=e}get layerX(){return this.layer.x}get layerY(){return this.layer.y}get pageX(){return this.page.x}get pageY(){return this.page.y}get data(){return this}composedPath(){return this.manager&&(!this.path||this.path[this.path.length-1]!==this.target)&&(this.path=this.target?this.manager.propagationPath(this.target):[]),this.path}initEvent(e,t,i){throw new Error("initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}initUIEvent(e,t,i,n,s){throw new Error("initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}preventDefault(){this.nativeEvent instanceof Event&&this.nativeEvent.cancelable&&this.nativeEvent.preventDefault(),this.defaultPrevented=!0}stopImmediatePropagation(){this.propagationImmediatelyStopped=!0}stopPropagation(){this.propagationStopped=!0}}var O=/iPhone/i,C=/iPod/i,S=/iPad/i,U=/\biOS-universal(?:.+)Mac\b/i,k=/\bAndroid(?:.+)Mobile\b/i,H=/Android/i,b=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,A=/Silk/i,g=/Windows Phone/i,X=/\bWindows(?:.+)ARM\b/i,R=/BlackBerry/i,F=/BB10/i,Y=/Opera Mini/i,K=/\b(CriOS|Chrome)(?:.+)Mobile/i,$=/Mobile(?:.+)Firefox\b/i,G=function(r){return typeof r<"u"&&r.platform==="MacIntel"&&typeof r.maxTouchPoints=="number"&&r.maxTouchPoints>1&&typeof MSStream>"u"};function te(r){return function(e){return e.test(r)}}function W(r){var e={userAgent:"",platform:"",maxTouchPoints:0};!r&&typeof navigator<"u"?e={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0}:typeof r=="string"?e.userAgent=r:r&&r.userAgent&&(e={userAgent:r.userAgent,platform:r.platform,maxTouchPoints:r.maxTouchPoints||0});var t=e.userAgent,i=t.split("[FBAN");typeof i[1]<"u"&&(t=i[0]),i=t.split("Twitter"),typeof i[1]<"u"&&(t=i[0]);var n=te(t),s={apple:{phone:n(O)&&!n(g),ipod:n(C),tablet:!n(O)&&(n(S)||G(e))&&!n(g),universal:n(U),device:(n(O)||n(C)||n(S)||n(U)||G(e))&&!n(g)},amazon:{phone:n(b),tablet:!n(b)&&n(A),device:n(b)||n(A)},android:{phone:!n(g)&&n(b)||!n(g)&&n(k),tablet:!n(g)&&!n(b)&&!n(k)&&(n(A)||n(H)),device:!n(g)&&(n(b)||n(A)||n(k)||n(H))||n(/\bokhttp\b/i)},windows:{phone:n(g),tablet:n(X),device:n(g)||n(X)},other:{blackberry:n(R),blackberry10:n(F),opera:n(Y),firefox:n($),chrome:n(K),device:n(R)||n(F)||n(Y)||n($)||n(K)},any:!1,phone:!1,tablet:!1};return s.any=s.apple.device||s.android.device||s.windows.device||s.other.device,s.phone=s.apple.phone||s.android.phone||s.windows.phone,s.tablet=s.apple.tablet||s.android.tablet||s.windows.tablet,s}const ie=W.default??W,ne=ie(globalThis.navigator),se=9,I=100,oe=0,re=0,j=2,N=1,ae=-1e3,he=-1e3,le=2;class V{constructor(e,t=ne){this._mobileInfo=t,this.debug=!1,this._isActive=!1,this._isMobileAccessibility=!1,this._pool=[],this._renderId=0,this._children=[],this._androidUpdateCount=0,this._androidUpdateFrequency=500,this._hookDiv=null,(t.tablet||t.phone)&&this._createTouchHook();const i=document.createElement("div");i.style.width=`${I}px`,i.style.height=`${I}px`,i.style.position="absolute",i.style.top=`${oe}px`,i.style.left=`${re}px`,i.style.zIndex=j.toString(),this._div=i,this._renderer=e,this._onKeyDown=this._onKeyDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),globalThis.addEventListener("keydown",this._onKeyDown,!1)}get isActive(){return this._isActive}get isMobileAccessibility(){return this._isMobileAccessibility}get hookDiv(){return this._hookDiv}_createTouchHook(){const e=document.createElement("button");e.style.width=`${N}px`,e.style.height=`${N}px`,e.style.position="absolute",e.style.top=`${ae}px`,e.style.left=`${he}px`,e.style.zIndex=le.toString(),e.style.backgroundColor="#FF0000",e.title="select to enable accessibility for this content",e.addEventListener("focus",()=>{this._isMobileAccessibility=!0,this._activate(),this._destroyTouchHook()}),document.body.appendChild(e),this._hookDiv=e}_destroyTouchHook(){this._hookDiv&&(document.body.removeChild(this._hookDiv),this._hookDiv=null)}_activate(){var e;this._isActive||(this._isActive=!0,globalThis.document.addEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown,!1),this._renderer.runners.postrender.add(this),(e=this._renderer.view.canvas.parentNode)==null||e.appendChild(this._div))}_deactivate(){var e;!this._isActive||this._isMobileAccessibility||(this._isActive=!1,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.addEventListener("keydown",this._onKeyDown,!1),this._renderer.runners.postrender.remove(this),(e=this._div.parentNode)==null||e.removeChild(this._div))}_updateAccessibleObjects(e){if(!e.visible||!e.accessibleChildren)return;e.accessible&&e.isInteractive()&&(e._accessibleActive||this._addChild(e),e._renderId=this._renderId);const t=e.children;if(t)for(let i=0;i title : ${e.title}
tabIndex: ${e.tabIndex}`}_capHitArea(e){e.x<0&&(e.width+=e.x,e.x=0),e.y<0&&(e.height+=e.y,e.y=0);const{width:t,height:i}=this._renderer;e.x+e.width>t&&(e.width=t-e.x),e.y+e.height>i&&(e.height=i-e.y)}_addChild(e){let t=this._pool.pop();t||(t=document.createElement("button"),t.style.width=`${I}px`,t.style.height=`${I}px`,t.style.backgroundColor=this.debug?"rgba(255,255,255,0.5)":"transparent",t.style.position="absolute",t.style.zIndex=j.toString(),t.style.borderStyle="none",navigator.userAgent.toLowerCase().includes("chrome")?t.setAttribute("aria-live","off"):t.setAttribute("aria-live","polite"),navigator.userAgent.match(/rv:.*Gecko\//)?t.setAttribute("aria-relevant","additions"):t.setAttribute("aria-relevant","text"),t.addEventListener("click",this._onClick.bind(this)),t.addEventListener("focus",this._onFocus.bind(this)),t.addEventListener("focusout",this._onFocusOut.bind(this))),t.style.pointerEvents=e.accessiblePointerEvents,t.type=e.accessibleType,e.accessibleTitle&&e.accessibleTitle!==null?t.title=e.accessibleTitle:(!e.accessibleHint||e.accessibleHint===null)&&(t.title=`container ${e.tabIndex}`),e.accessibleHint&&e.accessibleHint!==null&&t.setAttribute("aria-label",e.accessibleHint),this.debug&&this._updateDebugHTML(t),e._accessibleActive=!0,e._accessibleDiv=t,t.container=e,this._children.push(e),this._div.appendChild(e._accessibleDiv),e._accessibleDiv.tabIndex=e.tabIndex}_dispatchEvent(e,t){const{container:i}=e.target,n=this._renderer.events.rootBoundary,s=Object.assign(new M(n),{target:i});n.rootTarget=this._renderer.lastObjectRendered,t.forEach(o=>n.dispatchEvent(s,o))}_onClick(e){this._dispatchEvent(e,["click","pointertap","tap"])}_onFocus(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","assertive"),this._dispatchEvent(e,["mouseover"])}_onFocusOut(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","polite"),this._dispatchEvent(e,["mouseout"])}_onKeyDown(e){e.keyCode===se&&this._activate()}_onMouseMove(e){e.movementX===0&&e.movementY===0||this._deactivate()}destroy(){this._destroyTouchHook(),this._div=null,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown),this._pool=null,this._children=null,this._renderer=null}}V.extension={type:[w.WebGLSystem,w.WebGPUSystem],name:"accessibility"};const ue={accessible:!1,accessibleTitle:null,accessibleHint:null,tabIndex:0,_accessibleActive:!1,_accessibleDiv:null,accessibleType:"button",accessiblePointerEvents:"auto",accessibleChildren:!0,_renderId:-1};class de{constructor(){this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this._tickerAdded=!1,this._pauseUpdate=!0}init(e){this.removeTickerListener(),this.events=e,this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this._tickerAdded=!1,this._pauseUpdate=!0}get pauseUpdate(){return this._pauseUpdate}set pauseUpdate(e){this._pauseUpdate=e}addTickerListener(){this._tickerAdded||!this.domElement||(L.system.add(this._tickerUpdate,this,Q.INTERACTION),this._tickerAdded=!0)}removeTickerListener(){this._tickerAdded&&(L.system.remove(this._tickerUpdate,this),this._tickerAdded=!1)}pointerMoved(){this._didMove=!0}_update(){if(!this.domElement||this._pauseUpdate)return;if(this._didMove){this._didMove=!1;return}const e=this.events._rootPointerEvent;this.events.supportsTouchEvents&&e.pointerType==="touch"||globalThis.document.dispatchEvent(new PointerEvent("pointermove",{clientX:e.clientX,clientY:e.clientY,pointerType:e.pointerType,pointerId:e.pointerId}))}_tickerUpdate(e){this._deltaTime+=e.deltaTime,!(this._deltaTimei.priority-n.priority)}dispatchEvent(e,t){e.propagationStopped=!1,e.propagationImmediatelyStopped=!1,this.propagate(e,t),this.dispatch.emit(t||e.type,e)}mapEvent(e){if(!this.rootTarget)return;const t=this.mappingTable[e.type];if(t)for(let i=0,n=t.length;i=0;n--)if(e.currentTarget=i[n],this.notifyTarget(e,t),e.propagationStopped||e.propagationImmediatelyStopped)return}}all(e,t,i=this._allInteractiveElements){if(i.length===0)return;e.eventPhase=e.BUBBLING_PHASE;const n=Array.isArray(t)?t:[t];for(let s=i.length-1;s>=0;s--)n.forEach(o=>{e.currentTarget=i[s],this.notifyTarget(e,o)})}propagationPath(e){const t=[e];for(let i=0;i=0;h--){const l=v[h],u=this.hitTestMoveRecursive(l,this._isInteractive(t)?t:l.eventMode,i,n,s,o||s(e,i));if(u){if(u.length>0&&!u[u.length-1].parent)continue;const d=e.isInteractive();(u.length>0||d)&&(d&&this._allInteractiveElements.push(e),u.push(e)),this._hitElements.length===0&&(this._hitElements=u),a=!0}}}const c=this._isInteractive(t),p=e.isInteractive();return p&&p&&this._allInteractiveElements.push(e),o||this._hitElements.length>0?null:a?this._hitElements:c&&!s(e,i)&&n(e,i)?p?[e]:[]:null}hitTestRecursive(e,t,i,n,s){if(this._interactivePrune(e)||s(e,i))return null;if((e.eventMode==="dynamic"||t==="dynamic")&&(E.pauseUpdate=!1),e.interactiveChildren&&e.children){const c=e.children,p=i;for(let v=c.length-1;v>=0;v--){const h=c[v],l=this.hitTestRecursive(h,this._isInteractive(t)?t:h.eventMode,p,n,s);if(l){if(l.length>0&&!l[l.length-1].parent)continue;const u=e.isInteractive();return(l.length>0||u)&&l.push(e),l}}}const o=this._isInteractive(t),a=e.isInteractive();return o&&n(e,i)?a?[e]:[]:null}_isInteractive(e){return e==="static"||e==="dynamic"}_interactivePrune(e){return!e||!e.visible||!e.renderable||!e.includeInBuild||!e.measurable||e.eventMode==="none"||e.eventMode==="passive"&&!e.interactiveChildren}hitPruneFn(e,t){if(e.hitArea&&(e.worldTransform.applyInverse(t,P),!e.hitArea.contains(P.x,P.y)))return!0;if(e.effects&&e.effects.length)for(let i=0;i0&&s!==t.target){const v=e.type==="mousemove"?"mouseout":"pointerout",h=this.createPointerEvent(e,v,s);if(this.dispatchEvent(h,"pointerout"),i&&this.dispatchEvent(h,"mouseout"),!t.composedPath().includes(s)){const l=this.createPointerEvent(e,"pointerleave",s);for(l.eventPhase=l.AT_TARGET;l.target&&!t.composedPath().includes(l.target);)l.currentTarget=l.target,this.notifyTarget(l),i&&this.notifyTarget(l,"mouseleave"),l.target=l.target.parent;this.freeEvent(l)}this.freeEvent(h)}if(s!==t.target){const v=e.type==="mousemove"?"mouseover":"pointerover",h=this.clonePointerEvent(t,v);this.dispatchEvent(h,"pointerover"),i&&this.dispatchEvent(h,"mouseover");let l=s==null?void 0:s.parent;for(;l&&l!==this.rootTarget.parent&&l!==t.target;)l=l.parent;if(!l||l===this.rootTarget.parent){const d=this.clonePointerEvent(t,"pointerenter");for(d.eventPhase=d.AT_TARGET;d.target&&d.target!==s&&d.target!==this.rootTarget.parent;)d.currentTarget=d.target,this.notifyTarget(d),i&&this.notifyTarget(d,"mouseenter"),d.target=d.target.parent;this.freeEvent(d)}this.freeEvent(h)}const o=[],a=this.enableGlobalMoveEvents??!0;this.moveOnAll?o.push("pointermove"):this.dispatchEvent(t,"pointermove"),a&&o.push("globalpointermove"),t.pointerType==="touch"&&(this.moveOnAll?o.splice(1,0,"touchmove"):this.dispatchEvent(t,"touchmove"),a&&o.push("globaltouchmove")),i&&(this.moveOnAll?o.splice(1,0,"mousemove"):this.dispatchEvent(t,"mousemove"),a&&o.push("globalmousemove"),this.cursor=(p=t.target)==null?void 0:p.cursor),o.length>0&&this.all(t,o),this._allInteractiveElements.length=0,this._hitElements.length=0,n.overTargets=t.composedPath(),this.freeEvent(t)}mapPointerOver(e){var o;if(!(e instanceof f)){y("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId),i=this.createPointerEvent(e),n=i.pointerType==="mouse"||i.pointerType==="pen";this.dispatchEvent(i,"pointerover"),n&&this.dispatchEvent(i,"mouseover"),i.pointerType==="mouse"&&(this.cursor=(o=i.target)==null?void 0:o.cursor);const s=this.clonePointerEvent(i,"pointerenter");for(s.eventPhase=s.AT_TARGET;s.target&&s.target!==this.rootTarget.parent;)s.currentTarget=s.target,this.notifyTarget(s),n&&this.notifyTarget(s,"mouseenter"),s.target=s.target.parent;t.overTargets=i.composedPath(),this.freeEvent(i),this.freeEvent(s)}mapPointerOut(e){if(!(e instanceof f)){y("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId);if(t.overTargets){const i=e.pointerType==="mouse"||e.pointerType==="pen",n=this.findMountedTarget(t.overTargets),s=this.createPointerEvent(e,"pointerout",n);this.dispatchEvent(s),i&&this.dispatchEvent(s,"mouseout");const o=this.createPointerEvent(e,"pointerleave",n);for(o.eventPhase=o.AT_TARGET;o.target&&o.target!==this.rootTarget.parent;)o.currentTarget=o.target,this.notifyTarget(o),i&&this.notifyTarget(o,"mouseleave"),o.target=o.target.parent;t.overTargets=null,this.freeEvent(s),this.freeEvent(o)}this.cursor=null}mapPointerUp(e){if(!(e instanceof f)){y("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=performance.now(),i=this.createPointerEvent(e);if(this.dispatchEvent(i,"pointerup"),i.pointerType==="touch")this.dispatchEvent(i,"touchend");else if(i.pointerType==="mouse"||i.pointerType==="pen"){const a=i.button===2;this.dispatchEvent(i,a?"rightup":"mouseup")}const n=this.trackingData(e.pointerId),s=this.findMountedTarget(n.pressTargetsByButton[e.button]);let o=s;if(s&&!i.composedPath().includes(s)){let a=s;for(;a&&!i.composedPath().includes(a);){if(i.currentTarget=a,this.notifyTarget(i,"pointerupoutside"),i.pointerType==="touch")this.notifyTarget(i,"touchendoutside");else if(i.pointerType==="mouse"||i.pointerType==="pen"){const c=i.button===2;this.notifyTarget(i,c?"rightupoutside":"mouseupoutside")}a=a.parent}delete n.pressTargetsByButton[e.button],o=a}if(o){const a=this.clonePointerEvent(i,"click");a.target=o,a.path=null,n.clicksByButton[e.button]||(n.clicksByButton[e.button]={clickCount:0,target:a.target,timeStamp:t});const c=n.clicksByButton[e.button];if(c.target===a.target&&t-c.timeStamp<200?++c.clickCount:c.clickCount=1,c.target=a.target,c.timeStamp=t,a.detail=c.clickCount,a.pointerType==="mouse"){const p=a.button===2;this.dispatchEvent(a,p?"rightclick":"click")}else a.pointerType==="touch"&&this.dispatchEvent(a,"tap");this.dispatchEvent(a,"pointertap"),this.freeEvent(a)}this.freeEvent(i)}mapPointerUpOutside(e){if(!(e instanceof f)){y("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId),i=this.findMountedTarget(t.pressTargetsByButton[e.button]),n=this.createPointerEvent(e);if(i){let s=i;for(;s;)n.currentTarget=s,this.notifyTarget(n,"pointerupoutside"),n.pointerType==="touch"?this.notifyTarget(n,"touchendoutside"):(n.pointerType==="mouse"||n.pointerType==="pen")&&this.notifyTarget(n,n.button===2?"rightupoutside":"mouseupoutside"),s=s.parent;delete t.pressTargetsByButton[e.button]}this.freeEvent(n)}mapWheel(e){if(!(e instanceof T)){y("EventBoundary cannot map a non-wheel event as a wheel event");return}const t=this.createWheelEvent(e);this.dispatchEvent(t),this.freeEvent(t)}findMountedTarget(e){if(!e)return null;let t=e[0];for(let i=1;i(i==="globalMove"&&(this.rootBoundary.enableGlobalMoveEvents=n),t[i]=n,!0)}),this._onPointerDown=this._onPointerDown.bind(this),this._onPointerMove=this._onPointerMove.bind(this),this._onPointerUp=this._onPointerUp.bind(this),this._onPointerOverOut=this._onPointerOverOut.bind(this),this.onWheel=this.onWheel.bind(this)}static get defaultEventMode(){return this._defaultEventMode}init(e){const{canvas:t,resolution:i}=this.renderer;this.setTargetElement(t),this.resolution=i,x._defaultEventMode=e.eventMode??"passive",Object.assign(this.features,e.eventFeatures??{}),this.rootBoundary.enableGlobalMoveEvents=this.features.globalMove}resolutionChange(e){this.resolution=e}destroy(){this.setTargetElement(null),this.renderer=null,this._currentCursor=null}setCursor(e){e=e||"default";let t=!0;if(globalThis.OffscreenCanvas&&this.domElement instanceof OffscreenCanvas&&(t=!1),this._currentCursor===e)return;this._currentCursor=e;const i=this.cursorStyles[e];if(i)switch(typeof i){case"string":t&&(this.domElement.style.cursor=i);break;case"function":i(e);break;case"object":t&&Object.assign(this.domElement.style,i);break}else t&&typeof e=="string"&&!Object.prototype.hasOwnProperty.call(this.cursorStyles,e)&&(this.domElement.style.cursor=e)}get pointer(){return this._rootPointerEvent}_onPointerDown(e){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;const t=this._normalizeToPointerData(e);this.autoPreventDefault&&t[0].isNormalized&&(e.cancelable||!("cancelable"in e))&&e.preventDefault();for(let i=0,n=t.length;i0&&(t=e.composedPath()[0]);const i=t!==this.domElement?"outside":"",n=this._normalizeToPointerData(e);for(let s=0,o=n.length;s"u"&&(s.button=0),typeof s.buttons>"u"&&(s.buttons=1),typeof s.isPrimary>"u"&&(s.isPrimary=e.touches.length===1&&e.type==="touchstart"),typeof s.width>"u"&&(s.width=s.radiusX||1),typeof s.height>"u"&&(s.height=s.radiusY||1),typeof s.tiltX>"u"&&(s.tiltX=0),typeof s.tiltY>"u"&&(s.tiltY=0),typeof s.pointerType>"u"&&(s.pointerType="touch"),typeof s.pointerId>"u"&&(s.pointerId=s.identifier||0),typeof s.pressure>"u"&&(s.pressure=s.force||.5),typeof s.twist>"u"&&(s.twist=0),typeof s.tangentialPressure>"u"&&(s.tangentialPressure=0),typeof s.layerX>"u"&&(s.layerX=s.offsetX=s.clientX),typeof s.layerY>"u"&&(s.layerY=s.offsetY=s.clientY),s.isNormalized=!0,s.type=e.type,t.push(s)}else if(!globalThis.MouseEvent||e instanceof MouseEvent&&(!this.supportsPointerEvents||!(e instanceof globalThis.PointerEvent))){const i=e;typeof i.isPrimary>"u"&&(i.isPrimary=!0),typeof i.width>"u"&&(i.width=1),typeof i.height>"u"&&(i.height=1),typeof i.tiltX>"u"&&(i.tiltX=0),typeof i.tiltY>"u"&&(i.tiltY=0),typeof i.pointerType>"u"&&(i.pointerType="mouse"),typeof i.pointerId>"u"&&(i.pointerId=fe),typeof i.pressure>"u"&&(i.pressure=.5),typeof i.twist>"u"&&(i.twist=0),typeof i.tangentialPressure>"u"&&(i.tangentialPressure=0),i.isNormalized=!0,t.push(i)}else t.push(e);return t}normalizeWheelEvent(e){const t=this._rootWheelEvent;return this._transferMouseData(t,e),t.deltaX=e.deltaX,t.deltaY=e.deltaY,t.deltaZ=e.deltaZ,t.deltaMode=e.deltaMode,this.mapPositionToPoint(t.screen,e.clientX,e.clientY),t.global.copyFrom(t.screen),t.offset.copyFrom(t.screen),t.nativeEvent=e,t.type=e.type,t}_bootstrapEvent(e,t){return e.originalEvent=null,e.nativeEvent=t,e.pointerId=t.pointerId,e.width=t.width,e.height=t.height,e.isPrimary=t.isPrimary,e.pointerType=t.pointerType,e.pressure=t.pressure,e.tangentialPressure=t.tangentialPressure,e.tiltX=t.tiltX,e.tiltY=t.tiltY,e.twist=t.twist,this._transferMouseData(e,t),this.mapPositionToPoint(e.screen,t.clientX,t.clientY),e.global.copyFrom(e.screen),e.offset.copyFrom(e.screen),e.isTrusted=t.isTrusted,e.type==="pointerleave"&&(e.type="pointerout"),e.type.startsWith("mouse")&&(e.type=e.type.replace("mouse","pointer")),e.type.startsWith("touch")&&(e.type=ge[e.type]||e.type),e}_transferMouseData(e,t){e.isTrusted=t.isTrusted,e.srcElement=t.srcElement,e.timeStamp=performance.now(),e.type=t.type,e.altKey=t.altKey,e.button=t.button,e.buttons=t.buttons,e.client.x=t.clientX,e.client.y=t.clientY,e.ctrlKey=t.ctrlKey,e.metaKey=t.metaKey,e.movement.x=t.movementX,e.movement.y=t.movementY,e.page.x=t.pageX,e.page.y=t.pageY,e.relatedTarget=null,e.shiftKey=t.shiftKey}};B.extension={name:"events",type:[w.WebGLSystem,w.CanvasSystem,w.WebGPUSystem],priority:-1};B.defaultEventFeatures={move:!0,globalMove:!0,click:!0,wheel:!0};let q=B;const me={onclick:null,onmousedown:null,onmouseenter:null,onmouseleave:null,onmousemove:null,onglobalmousemove:null,onmouseout:null,onmouseover:null,onmouseup:null,onmouseupoutside:null,onpointercancel:null,onpointerdown:null,onpointerenter:null,onpointerleave:null,onpointermove:null,onglobalpointermove:null,onpointerout:null,onpointerover:null,onpointertap:null,onpointerup:null,onpointerupoutside:null,onrightclick:null,onrightdown:null,onrightup:null,onrightupoutside:null,ontap:null,ontouchcancel:null,ontouchend:null,ontouchendoutside:null,ontouchmove:null,onglobaltouchmove:null,ontouchstart:null,onwheel:null,get interactive(){return this.eventMode==="dynamic"||this.eventMode==="static"},set interactive(r){this.eventMode=r?"static":"passive"},_internalEventMode:void 0,get eventMode(){return this._internalEventMode??q.defaultEventMode},set eventMode(r){this._internalEventMode=r},isInteractive(){return this.eventMode==="static"||this.eventMode==="dynamic"},interactiveChildren:!0,hitArea:null,addEventListener(r,e,t){const i=typeof t=="boolean"&&t||typeof t=="object"&&t.capture,n=typeof t=="object"?t.signal:void 0,s=typeof t=="object"?t.once===!0:!1,o=typeof e=="function"?void 0:e;r=i?`${r}capture`:r;const a=typeof e=="function"?e:e.handleEvent,c=this;n&&n.addEventListener("abort",()=>{c.off(r,a,o)}),s?c.once(r,a,o):c.on(r,a,o)},removeEventListener(r,e,t){const i=typeof t=="boolean"&&t||typeof t=="object"&&t.capture,n=typeof e=="function"?void 0:e;r=i?`${r}capture`:r,e=typeof e=="function"?e:e.handleEvent,this.off(r,e,n)},dispatchEvent(r){if(!(r instanceof M))throw new Error("Container cannot propagate events outside of the Federated Events API");return r.defaultPrevented=!1,r.path=null,r.target=this,r.manager.dispatchEvent(r),!r.defaultPrevented}};z.add(V);Z.mixin(ue);z.add(q);Z.mixin(me); diff --git a/assets/colorToUniform-BGjOuL4T.js b/assets/colorToUniform-CAElEulk.js similarity index 98% rename from assets/colorToUniform-BGjOuL4T.js rename to assets/colorToUniform-CAElEulk.js index 19dbbb1..a92d92c 100644 --- a/assets/colorToUniform-BGjOuL4T.js +++ b/assets/colorToUniform-CAElEulk.js @@ -1,4 +1,4 @@ -import{T as _,a as M,n as g}from"./index-ChER3YqS.js";const P={normal:0,add:1,multiply:2,screen:3,overlay:4,erase:5,"normal-npm":6,"add-npm":7,"screen-npm":8,min:9,max:10},u=0,h=1,c=2,d=3,f=4,p=5,x=class b{constructor(){this.data=0,this.blendMode="normal",this.polygonOffset=0,this.blend=!0,this.depthMask=!0}get blend(){return!!(this.data&1<, diff --git a/assets/gui/wave.png b/assets/gui/wave.png new file mode 100644 index 0000000000000000000000000000000000000000..8c8f1e3b5abfc7eb687e2f9d18d5c70dc0d6e873 GIT binary patch literal 273161 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.map(i=>d[i]); -var pa=Object.defineProperty;var ga=(s,t,e)=>t in s?pa(s,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[t]=e;var b=(s,t,e)=>ga(s,typeof t!="symbol"?t+"":t,e);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const n of r)if(n.type==="childList")for(const a of n.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&i(a)}).observe(document,{childList:!0,subtree:!0});function e(r){const n={};return r.integrity&&(n.integrity=r.integrity),r.referrerPolicy&&(n.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?n.credentials="include":r.crossOrigin==="anonymous"?n.credentials="omit":n.credentials="same-origin",n}function i(r){if(r.ep)return;r.ep=!0;const n=e(r);fetch(r.href,n)}})();const ma="modulepreload",xa=function(s){return"/"+s},Ci={},je=function(t,e,i){let r=Promise.resolve();if(e&&e.length>0){document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),o=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));r=Promise.allSettled(e.map(h=>{if(h=xa(h),h in Ci)return;Ci[h]=!0;const c=h.endsWith(".css"),l=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${h}"]${l}`))return;const u=document.createElement("link");if(u.rel=c?"stylesheet":ma,c||(u.as="script"),u.crossOrigin="",u.href=h,o&&u.setAttribute("nonce",o),document.head.appendChild(u),c)return new Promise((d,f)=>{u.addEventListener("load",d),u.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${h}`)))})}))}function n(a){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=a,window.dispatchEvent(o),!o.defaultPrevented)throw a}return r.then(a=>{for(const o of a||[])o.status==="rejected"&&n(o.reason);return t().catch(n)})};var P=(s=>(s.Application="application",s.WebGLPipes="webgl-pipes",s.WebGLPipesAdaptor="webgl-pipes-adaptor",s.WebGLSystem="webgl-system",s.WebGPUPipes="webgpu-pipes",s.WebGPUPipesAdaptor="webgpu-pipes-adaptor",s.WebGPUSystem="webgpu-system",s.CanvasSystem="canvas-system",s.CanvasPipesAdaptor="canvas-pipes-adaptor",s.CanvasPipes="canvas-pipes",s.Asset="asset",s.LoadParser="load-parser",s.ResolveParser="resolve-parser",s.CacheParser="cache-parser",s.DetectionParser="detection-parser",s.MaskEffect="mask-effect",s.BlendMode="blend-mode",s.TextureSource="texture-source",s.Environment="environment",s.ShapeBuilder="shape-builder",s.Batcher="batcher",s))(P||{});const Fs=s=>{if(typeof s=="function"||typeof s=="object"&&s.extension){if(!s.extension)throw new Error("Extension class must have an extension object");s={...typeof s.extension!="object"?{type:s.extension}:s.extension,ref:s}}if(typeof s=="object")s={...s};else throw new Error("Invalid extension type");return typeof s.type=="string"&&(s.type=[s.type]),s},Fe=(s,t)=>Fs(s).priority??t,nt={_addHandlers:{},_removeHandlers:{},_queue:{},remove(...s){return s.map(Fs).forEach(t=>{t.type.forEach(e=>{var i,r;return(r=(i=this._removeHandlers)[e])==null?void 0:r.call(i,t)})}),this},add(...s){return s.map(Fs).forEach(t=>{t.type.forEach(e=>{var n,a;const i=this._addHandlers,r=this._queue;i[e]?(a=i[e])==null||a.call(i,t):(r[e]=r[e]||[],(n=r[e])==null||n.push(t))})}),this},handle(s,t,e){var a;const i=this._addHandlers,r=this._removeHandlers;if(i[s]||r[s])throw new Error(`Extension type ${s} already has a handler`);i[s]=t,r[s]=e;const n=this._queue;return n[s]&&((a=n[s])==null||a.forEach(o=>t(o)),delete n[s]),this},handleByMap(s,t){return this.handle(s,e=>{e.name&&(t[e.name]=e.ref)},e=>{e.name&&delete t[e.name]})},handleByNamedList(s,t,e=-1){return this.handle(s,i=>{t.findIndex(n=>n.name===i.name)>=0||(t.push({name:i.name,value:i.ref}),t.sort((n,a)=>Fe(a.value,e)-Fe(n.value,e)))},i=>{const r=t.findIndex(n=>n.name===i.name);r!==-1&&t.splice(r,1)})},handleByList(s,t,e=-1){return this.handle(s,i=>{t.includes(i.ref)||(t.push(i.ref),t.sort((r,n)=>Fe(n,e)-Fe(r,e)))},i=>{const r=t.indexOf(i.ref);r!==-1&&t.splice(r,1)})}},ya={extension:{type:P.Environment,name:"browser",priority:-1},test:()=>!0,load:async()=>{await je(()=>import("./browserAll-CjAcs4Zl.js"),__vite__mapDeps([0,1,2]))}},_a={extension:{type:P.Environment,name:"webworker",priority:0},test:()=>typeof self<"u"&&self.WorkerGlobalScope!==void 0,load:async()=>{await je(()=>import("./webworkerAll-C0L-Jtox.js"),__vite__mapDeps([1,2]))}};class ot{constructor(t,e,i){this._x=e||0,this._y=i||0,this._observer=t}clone(t){return new ot(t??this._observer,this._x,this._y)}set(t=0,e=t){return(this._x!==t||this._y!==e)&&(this._x=t,this._y=e,this._observer._onUpdate(this)),this}copyFrom(t){return(this._x!==t.x||this._y!==t.y)&&(this._x=t.x,this._y=t.y,this._observer._onUpdate(this)),this}copyTo(t){return t.set(this._x,this._y),t}equals(t){return t.x===this._x&&t.y===this._y}toString(){return`[pixi.js/math:ObservablePoint x=0 y=0 scope=${this._observer}]`}get x(){return this._x}set x(t){this._x!==t&&(this._x=t,this._observer._onUpdate(this))}get y(){return this._y}set y(t){this._y!==t&&(this._y=t,this._observer._onUpdate(this))}}function ii(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var Er={exports:{}};(function(s){var t=Object.prototype.hasOwnProperty,e="~";function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(e=!1));function r(h,c,l){this.fn=h,this.context=c,this.once=l||!1}function n(h,c,l,u,d){if(typeof l!="function")throw new TypeError("The listener must be a function");var f=new r(l,u||h,d),p=e?e+c:c;return h._events[p]?h._events[p].fn?h._events[p]=[h._events[p],f]:h._events[p].push(f):(h._events[p]=f,h._eventsCount++),h}function a(h,c){--h._eventsCount===0?h._events=new i:delete h._events[c]}function o(){this._events=new i,this._eventsCount=0}o.prototype.eventNames=function(){var c=[],l,u;if(this._eventsCount===0)return c;for(u in l=this._events)t.call(l,u)&&c.push(e?u.slice(1):u);return Object.getOwnPropertySymbols?c.concat(Object.getOwnPropertySymbols(l)):c},o.prototype.listeners=function(c){var l=e?e+c:c,u=this._events[l];if(!u)return[];if(u.fn)return[u.fn];for(var d=0,f=u.length,p=new Array(f);dLt[s],uY:s=>Gt[s],vX:s=>Ot[s],vY:s=>Wt[s],inv:s=>s&8?s&15:-s&7,add:(s,t)=>Rs[s][t],sub:(s,t)=>Rs[s][V.inv(t)],rotate180:s=>s^4,isVertical:s=>(s&3)===2,byDirection:(s,t)=>Math.abs(s)*2<=Math.abs(t)?t>=0?V.S:V.N:Math.abs(t)*2<=Math.abs(s)?s>0?V.E:V.W:t>0?s>0?V.SE:V.SW:s>0?V.NE:V.NW,matrixAppendRotationInv:(s,t,e=0,i=0)=>{const r=Br[V.inv(t)];r.tx=e,r.ty=i,s.append(r)}},Le=[new it,new it,new it,new it];class U{constructor(t=0,e=0,i=0,r=0){this.type="rectangle",this.x=Number(t),this.y=Number(e),this.width=Number(i),this.height=Number(r)}get left(){return this.x}get right(){return this.x+this.width}get top(){return this.y}get bottom(){return this.y+this.height}isEmpty(){return this.left===this.right||this.top===this.bottom}static get EMPTY(){return new U(0,0,0,0)}clone(){return new U(this.x,this.y,this.width,this.height)}copyFromBounds(t){return this.x=t.minX,this.y=t.minY,this.width=t.maxX-t.minX,this.height=t.maxY-t.minY,this}copyFrom(t){return this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height,this}copyTo(t){return t.copyFrom(this),t}contains(t,e){return this.width<=0||this.height<=0?!1:t>=this.x&&t=this.y&&e=h&&t<=c&&e>=l&&e<=u&&!(t>d&&tp&&et.right?t.right:this.right)<=k)return!1;const S=this.yt.bottom?t.bottom:this.bottom)>S}const i=this.left,r=this.right,n=this.top,a=this.bottom;if(r<=i||a<=n)return!1;const o=Le[0].set(t.left,t.top),h=Le[1].set(t.left,t.bottom),c=Le[2].set(t.right,t.top),l=Le[3].set(t.right,t.bottom);if(c.x<=o.x||h.y<=o.y)return!1;const u=Math.sign(e.a*e.d-e.b*e.c);if(u===0||(e.apply(o,o),e.apply(h,h),e.apply(c,c),e.apply(l,l),Math.max(o.x,h.x,c.x,l.x)<=i||Math.min(o.x,h.x,c.x,l.x)>=r||Math.max(o.y,h.y,c.y,l.y)<=n||Math.min(o.y,h.y,c.y,l.y)>=a))return!1;const d=u*(h.y-o.y),f=u*(o.x-h.x),p=d*i+f*n,m=d*r+f*n,g=d*i+f*a,x=d*r+f*a;if(Math.max(p,m,g,x)<=d*o.x+f*o.y||Math.min(p,m,g,x)>=d*l.x+f*l.y)return!1;const y=u*(o.y-c.y),_=u*(c.x-o.x),w=y*i+_*n,C=y*r+_*n,I=y*i+_*a,M=y*r+_*a;return!(Math.max(w,C,I,M)<=y*o.x+_*o.y||Math.min(w,C,I,M)>=y*l.x+_*l.y)}pad(t=0,e=t){return this.x-=t,this.y-=e,this.width+=t*2,this.height+=e*2,this}fit(t){const e=Math.max(this.x,t.x),i=Math.min(this.x+this.width,t.x+t.width),r=Math.max(this.y,t.y),n=Math.min(this.y+this.height,t.y+t.height);return this.x=e,this.width=Math.max(i-e,0),this.y=r,this.height=Math.max(n-r,0),this}ceil(t=1,e=.001){const i=Math.ceil((this.x+this.width-e)*t)/t,r=Math.ceil((this.y+this.height-e)*t)/t;return this.x=Math.floor((this.x+e)*t)/t,this.y=Math.floor((this.y+e)*t)/t,this.width=i-this.x,this.height=r-this.y,this}enlarge(t){const e=Math.min(this.x,t.x),i=Math.max(this.x+this.width,t.x+t.width),r=Math.min(this.y,t.y),n=Math.max(this.y+this.height,t.y+t.height);return this.x=e,this.width=i-e,this.y=r,this.height=n-r,this}getBounds(t){return t=t||new U,t.copyFrom(this),t}toString(){return`[pixi.js/math:Rectangle x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`}}const os={default:-1};function tt(s="default"){return os[s]===void 0&&(os[s]=-1),++os[s]}const Ti={},W="8.0.0",Ma="8.3.4";function O(s,t,e=3){if(Ti[t])return;let i=new Error().stack;typeof i>"u"?console.warn("PixiJS Deprecation Warning: ",`${t} +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/browserAll-CrzJE7an.js","assets/webworkerAll-DW2oDrMC.js","assets/colorToUniform-CAElEulk.js","assets/WebGPURenderer-BR803xQA.js","assets/SharedSystems-DeBRvkiC.js","assets/WebGLRenderer-DyicnGup.js"])))=>i.map(i=>d[i]); +var ga=Object.defineProperty;var ma=(s,t,e)=>t in s?ga(s,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[t]=e;var b=(s,t,e)=>ma(s,typeof t!="symbol"?t+"":t,e);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const n of r)if(n.type==="childList")for(const a of n.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&i(a)}).observe(document,{childList:!0,subtree:!0});function e(r){const n={};return r.integrity&&(n.integrity=r.integrity),r.referrerPolicy&&(n.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?n.credentials="include":r.crossOrigin==="anonymous"?n.credentials="omit":n.credentials="same-origin",n}function i(r){if(r.ep)return;r.ep=!0;const n=e(r);fetch(r.href,n)}})();const xa="modulepreload",ya=function(s){return"/"+s},Ci={},qe=function(t,e,i){let r=Promise.resolve();if(e&&e.length>0){document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),o=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));r=Promise.allSettled(e.map(h=>{if(h=ya(h),h in Ci)return;Ci[h]=!0;const c=h.endsWith(".css"),l=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${h}"]${l}`))return;const u=document.createElement("link");if(u.rel=c?"stylesheet":xa,c||(u.as="script"),u.crossOrigin="",u.href=h,o&&u.setAttribute("nonce",o),document.head.appendChild(u),c)return new Promise((d,f)=>{u.addEventListener("load",d),u.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${h}`)))})}))}function n(a){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=a,window.dispatchEvent(o),!o.defaultPrevented)throw a}return r.then(a=>{for(const o of a||[])o.status==="rejected"&&n(o.reason);return t().catch(n)})};var P=(s=>(s.Application="application",s.WebGLPipes="webgl-pipes",s.WebGLPipesAdaptor="webgl-pipes-adaptor",s.WebGLSystem="webgl-system",s.WebGPUPipes="webgpu-pipes",s.WebGPUPipesAdaptor="webgpu-pipes-adaptor",s.WebGPUSystem="webgpu-system",s.CanvasSystem="canvas-system",s.CanvasPipesAdaptor="canvas-pipes-adaptor",s.CanvasPipes="canvas-pipes",s.Asset="asset",s.LoadParser="load-parser",s.ResolveParser="resolve-parser",s.CacheParser="cache-parser",s.DetectionParser="detection-parser",s.MaskEffect="mask-effect",s.BlendMode="blend-mode",s.TextureSource="texture-source",s.Environment="environment",s.ShapeBuilder="shape-builder",s.Batcher="batcher",s))(P||{});const Rs=s=>{if(typeof s=="function"||typeof s=="object"&&s.extension){if(!s.extension)throw new Error("Extension class must have an extension object");s={...typeof s.extension!="object"?{type:s.extension}:s.extension,ref:s}}if(typeof s=="object")s={...s};else throw new Error("Invalid extension type");return typeof s.type=="string"&&(s.type=[s.type]),s},Re=(s,t)=>Rs(s).priority??t,nt={_addHandlers:{},_removeHandlers:{},_queue:{},remove(...s){return s.map(Rs).forEach(t=>{t.type.forEach(e=>{var i,r;return(r=(i=this._removeHandlers)[e])==null?void 0:r.call(i,t)})}),this},add(...s){return s.map(Rs).forEach(t=>{t.type.forEach(e=>{var n,a;const i=this._addHandlers,r=this._queue;i[e]?(a=i[e])==null||a.call(i,t):(r[e]=r[e]||[],(n=r[e])==null||n.push(t))})}),this},handle(s,t,e){var a;const i=this._addHandlers,r=this._removeHandlers;if(i[s]||r[s])throw new Error(`Extension type ${s} already has a handler`);i[s]=t,r[s]=e;const n=this._queue;return n[s]&&((a=n[s])==null||a.forEach(o=>t(o)),delete n[s]),this},handleByMap(s,t){return this.handle(s,e=>{e.name&&(t[e.name]=e.ref)},e=>{e.name&&delete t[e.name]})},handleByNamedList(s,t,e=-1){return this.handle(s,i=>{t.findIndex(n=>n.name===i.name)>=0||(t.push({name:i.name,value:i.ref}),t.sort((n,a)=>Re(a.value,e)-Re(n.value,e)))},i=>{const r=t.findIndex(n=>n.name===i.name);r!==-1&&t.splice(r,1)})},handleByList(s,t,e=-1){return this.handle(s,i=>{t.includes(i.ref)||(t.push(i.ref),t.sort((r,n)=>Re(n,e)-Re(r,e)))},i=>{const r=t.indexOf(i.ref);r!==-1&&t.splice(r,1)})}},_a={extension:{type:P.Environment,name:"browser",priority:-1},test:()=>!0,load:async()=>{await qe(()=>import("./browserAll-CrzJE7an.js"),__vite__mapDeps([0,1,2]))}},ba={extension:{type:P.Environment,name:"webworker",priority:0},test:()=>typeof self<"u"&&self.WorkerGlobalScope!==void 0,load:async()=>{await qe(()=>import("./webworkerAll-DW2oDrMC.js"),__vite__mapDeps([1,2]))}};class at{constructor(t,e,i){this._x=e||0,this._y=i||0,this._observer=t}clone(t){return new at(t??this._observer,this._x,this._y)}set(t=0,e=t){return(this._x!==t||this._y!==e)&&(this._x=t,this._y=e,this._observer._onUpdate(this)),this}copyFrom(t){return(this._x!==t.x||this._y!==t.y)&&(this._x=t.x,this._y=t.y,this._observer._onUpdate(this)),this}copyTo(t){return t.set(this._x,this._y),t}equals(t){return t.x===this._x&&t.y===this._y}toString(){return`[pixi.js/math:ObservablePoint x=0 y=0 scope=${this._observer}]`}get x(){return this._x}set x(t){this._x!==t&&(this._x=t,this._observer._onUpdate(this))}get y(){return this._y}set y(t){this._y!==t&&(this._y=t,this._observer._onUpdate(this))}}function ii(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var Br={exports:{}};(function(s){var t=Object.prototype.hasOwnProperty,e="~";function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(e=!1));function r(h,c,l){this.fn=h,this.context=c,this.once=l||!1}function n(h,c,l,u,d){if(typeof l!="function")throw new TypeError("The listener must be a function");var f=new r(l,u||h,d),p=e?e+c:c;return h._events[p]?h._events[p].fn?h._events[p]=[h._events[p],f]:h._events[p].push(f):(h._events[p]=f,h._eventsCount++),h}function a(h,c){--h._eventsCount===0?h._events=new i:delete h._events[c]}function o(){this._events=new i,this._eventsCount=0}o.prototype.eventNames=function(){var c=[],l,u;if(this._eventsCount===0)return c;for(u in l=this._events)t.call(l,u)&&c.push(e?u.slice(1):u);return Object.getOwnPropertySymbols?c.concat(Object.getOwnPropertySymbols(l)):c},o.prototype.listeners=function(c){var l=e?e+c:c,u=this._events[l];if(!u)return[];if(u.fn)return[u.fn];for(var d=0,f=u.length,p=new Array(f);dOt[s],uY:s=>Wt[s],vX:s=>Dt[s],vY:s=>Ut[s],inv:s=>s&8?s&15:-s&7,add:(s,t)=>Gs[s][t],sub:(s,t)=>Gs[s][V.inv(t)],rotate180:s=>s^4,isVertical:s=>(s&3)===2,byDirection:(s,t)=>Math.abs(s)*2<=Math.abs(t)?t>=0?V.S:V.N:Math.abs(t)*2<=Math.abs(s)?s>0?V.E:V.W:t>0?s>0?V.SE:V.SW:s>0?V.NE:V.NW,matrixAppendRotationInv:(s,t,e=0,i=0)=>{const r=Er[V.inv(t)];r.tx=e,r.ty=i,s.append(r)}},Le=[new it,new it,new it,new it];class U{constructor(t=0,e=0,i=0,r=0){this.type="rectangle",this.x=Number(t),this.y=Number(e),this.width=Number(i),this.height=Number(r)}get left(){return this.x}get right(){return this.x+this.width}get top(){return this.y}get bottom(){return this.y+this.height}isEmpty(){return this.left===this.right||this.top===this.bottom}static get EMPTY(){return new U(0,0,0,0)}clone(){return new U(this.x,this.y,this.width,this.height)}copyFromBounds(t){return this.x=t.minX,this.y=t.minY,this.width=t.maxX-t.minX,this.height=t.maxY-t.minY,this}copyFrom(t){return this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height,this}copyTo(t){return t.copyFrom(this),t}contains(t,e){return this.width<=0||this.height<=0?!1:t>=this.x&&t=this.y&&e=h&&t<=c&&e>=l&&e<=u&&!(t>d&&tp&&et.right?t.right:this.right)<=k)return!1;const S=this.yt.bottom?t.bottom:this.bottom)>S}const i=this.left,r=this.right,n=this.top,a=this.bottom;if(r<=i||a<=n)return!1;const o=Le[0].set(t.left,t.top),h=Le[1].set(t.left,t.bottom),c=Le[2].set(t.right,t.top),l=Le[3].set(t.right,t.bottom);if(c.x<=o.x||h.y<=o.y)return!1;const u=Math.sign(e.a*e.d-e.b*e.c);if(u===0||(e.apply(o,o),e.apply(h,h),e.apply(c,c),e.apply(l,l),Math.max(o.x,h.x,c.x,l.x)<=i||Math.min(o.x,h.x,c.x,l.x)>=r||Math.max(o.y,h.y,c.y,l.y)<=n||Math.min(o.y,h.y,c.y,l.y)>=a))return!1;const d=u*(h.y-o.y),f=u*(o.x-h.x),p=d*i+f*n,m=d*r+f*n,g=d*i+f*a,x=d*r+f*a;if(Math.max(p,m,g,x)<=d*o.x+f*o.y||Math.min(p,m,g,x)>=d*l.x+f*l.y)return!1;const y=u*(o.y-c.y),_=u*(c.x-o.x),w=y*i+_*n,C=y*r+_*n,I=y*i+_*a,M=y*r+_*a;return!(Math.max(w,C,I,M)<=y*o.x+_*o.y||Math.min(w,C,I,M)>=y*l.x+_*l.y)}pad(t=0,e=t){return this.x-=t,this.y-=e,this.width+=t*2,this.height+=e*2,this}fit(t){const e=Math.max(this.x,t.x),i=Math.min(this.x+this.width,t.x+t.width),r=Math.max(this.y,t.y),n=Math.min(this.y+this.height,t.y+t.height);return this.x=e,this.width=Math.max(i-e,0),this.y=r,this.height=Math.max(n-r,0),this}ceil(t=1,e=.001){const i=Math.ceil((this.x+this.width-e)*t)/t,r=Math.ceil((this.y+this.height-e)*t)/t;return this.x=Math.floor((this.x+e)*t)/t,this.y=Math.floor((this.y+e)*t)/t,this.width=i-this.x,this.height=r-this.y,this}enlarge(t){const e=Math.min(this.x,t.x),i=Math.max(this.x+this.width,t.x+t.width),r=Math.min(this.y,t.y),n=Math.max(this.y+this.height,t.y+t.height);return this.x=e,this.width=i-e,this.y=r,this.height=n-r,this}getBounds(t){return t=t||new U,t.copyFrom(this),t}toString(){return`[pixi.js/math:Rectangle x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`}}const hs={default:-1};function tt(s="default"){return hs[s]===void 0&&(hs[s]=-1),++hs[s]}const Ti={},W="8.0.0",Pa="8.3.4";function O(s,t,e=3){if(Ti[t])return;let i=new Error().stack;typeof i>"u"?console.warn("PixiJS Deprecation Warning: ",`${t} Deprecated since v${s}`):(i=i.split(` `).splice(e).join(` `),console.groupCollapsed?(console.groupCollapsed("%cPixiJS Deprecation Warning: %c%s","color:#614108;background:#fffbe6","font-weight:normal;color:#614108;background:#fffbe6",`${t} Deprecated since v${s}`),console.warn(i),console.groupEnd()):(console.warn("PixiJS Deprecation Warning: ",`${t} -Deprecated since v${s}`),console.warn(i))),Ti[t]=!0}const Ir=()=>{};function Mi(s){return s+=s===0?1:0,--s,s|=s>>>1,s|=s>>>2,s|=s>>>4,s|=s>>>8,s|=s>>>16,s+1}function Pi(s){return!(s&s-1)&&!!s}function Pa(s){const t={};for(const e in s)s[e]!==void 0&&(t[e]=s[e]);return t}const ki=Object.create(null);function ka(s){const t=ki[s];return t===void 0&&(ki[s]=tt("resource")),t}const Fr=class Rr extends at{constructor(t={}){super(),this._resourceType="textureSampler",this._touched=0,this._maxAnisotropy=1,this.destroyed=!1,t={...Rr.defaultOptions,...t},this.addressMode=t.addressMode,this.addressModeU=t.addressModeU??this.addressModeU,this.addressModeV=t.addressModeV??this.addressModeV,this.addressModeW=t.addressModeW??this.addressModeW,this.scaleMode=t.scaleMode,this.magFilter=t.magFilter??this.magFilter,this.minFilter=t.minFilter??this.minFilter,this.mipmapFilter=t.mipmapFilter??this.mipmapFilter,this.lodMinClamp=t.lodMinClamp,this.lodMaxClamp=t.lodMaxClamp,this.compare=t.compare,this.maxAnisotropy=t.maxAnisotropy??1}set addressMode(t){this.addressModeU=t,this.addressModeV=t,this.addressModeW=t}get addressMode(){return this.addressModeU}set wrapMode(t){O(W,"TextureStyle.wrapMode is now TextureStyle.addressMode"),this.addressMode=t}get wrapMode(){return this.addressMode}set scaleMode(t){this.magFilter=t,this.minFilter=t,this.mipmapFilter=t}get scaleMode(){return this.magFilter}set maxAnisotropy(t){this._maxAnisotropy=Math.min(t,16),this._maxAnisotropy>1&&(this.scaleMode="linear")}get maxAnisotropy(){return this._maxAnisotropy}get _resourceId(){return this._sharedResourceId||this._generateResourceId()}update(){this.emit("change",this),this._sharedResourceId=null}_generateResourceId(){const t=`${this.addressModeU}-${this.addressModeV}-${this.addressModeW}-${this.magFilter}-${this.minFilter}-${this.mipmapFilter}-${this.lodMinClamp}-${this.lodMaxClamp}-${this.compare}-${this._maxAnisotropy}`;return this._sharedResourceId=ka(t),this._resourceId}destroy(){this.destroyed=!0,this.emit("destroy",this),this.emit("change",this),this.removeAllListeners()}};Fr.defaultOptions={addressMode:"clamp-to-edge",scaleMode:"linear"};let Ea=Fr;const Lr=class Gr extends at{constructor(t={}){super(),this.options=t,this.uid=tt("textureSource"),this._resourceType="textureSource",this._resourceId=tt("resource"),this.uploadMethodId="unknown",this._resolution=1,this.pixelWidth=1,this.pixelHeight=1,this.width=1,this.height=1,this.sampleCount=1,this.mipLevelCount=1,this.autoGenerateMipmaps=!1,this.format="rgba8unorm",this.dimension="2d",this.antialias=!1,this._touched=0,this._batchTick=-1,this._textureBindLocation=-1,t={...Gr.defaultOptions,...t},this.label=t.label??"",this.resource=t.resource,this.autoGarbageCollect=t.autoGarbageCollect,this._resolution=t.resolution,t.width?this.pixelWidth=t.width*this._resolution:this.pixelWidth=this.resource?this.resourceWidth??1:1,t.height?this.pixelHeight=t.height*this._resolution:this.pixelHeight=this.resource?this.resourceHeight??1:1,this.width=this.pixelWidth/this._resolution,this.height=this.pixelHeight/this._resolution,this.format=t.format,this.dimension=t.dimensions,this.mipLevelCount=t.mipLevelCount,this.autoGenerateMipmaps=t.autoGenerateMipmaps,this.sampleCount=t.sampleCount,this.antialias=t.antialias,this.alphaMode=t.alphaMode,this.style=new Ea(Pa(t)),this.destroyed=!1,this._refreshPOT()}get source(){return this}get style(){return this._style}set style(t){var e,i;this.style!==t&&((e=this._style)==null||e.off("change",this._onStyleChange,this),this._style=t,(i=this._style)==null||i.on("change",this._onStyleChange,this),this._onStyleChange())}get addressMode(){return this._style.addressMode}set addressMode(t){this._style.addressMode=t}get repeatMode(){return this._style.addressMode}set repeatMode(t){this._style.addressMode=t}get magFilter(){return this._style.magFilter}set magFilter(t){this._style.magFilter=t}get minFilter(){return this._style.minFilter}set minFilter(t){this._style.minFilter=t}get mipmapFilter(){return this._style.mipmapFilter}set mipmapFilter(t){this._style.mipmapFilter=t}get lodMinClamp(){return this._style.lodMinClamp}set lodMinClamp(t){this._style.lodMinClamp=t}get lodMaxClamp(){return this._style.lodMaxClamp}set lodMaxClamp(t){this._style.lodMaxClamp=t}_onStyleChange(){this.emit("styleChange",this)}update(){if(this.resource){const t=this._resolution;if(this.resize(this.resourceWidth/t,this.resourceHeight/t))return}this.emit("update",this)}destroy(){this.destroyed=!0,this.emit("destroy",this),this.emit("change",this),this._style&&(this._style.destroy(),this._style=null),this.uploadMethodId=null,this.resource=null,this.removeAllListeners()}unload(){this._resourceId=tt("resource"),this.emit("change",this),this.emit("unload",this)}get resourceWidth(){const{resource:t}=this;return t.naturalWidth||t.videoWidth||t.displayWidth||t.width}get resourceHeight(){const{resource:t}=this;return t.naturalHeight||t.videoHeight||t.displayHeight||t.height}get resolution(){return this._resolution}set resolution(t){this._resolution!==t&&(this._resolution=t,this.width=this.pixelWidth/t,this.height=this.pixelHeight/t)}resize(t,e,i){i=i||this._resolution,t=t||this.width,e=e||this.height;const r=Math.round(t*i),n=Math.round(e*i);return this.width=r/i,this.height=n/i,this._resolution=i,this.pixelWidth===r&&this.pixelHeight===n?!1:(this._refreshPOT(),this.pixelWidth=r,this.pixelHeight=n,this.emit("resize",this),this._resourceId=tt("resource"),this.emit("change",this),!0)}updateMipmaps(){this.autoGenerateMipmaps&&this.mipLevelCount>1&&this.emit("updateMipmaps",this)}set wrapMode(t){this._style.wrapMode=t}get wrapMode(){return this._style.wrapMode}set scaleMode(t){this._style.scaleMode=t}get scaleMode(){return this._style.scaleMode}_refreshPOT(){this.isPowerOfTwo=Pi(this.pixelWidth)&&Pi(this.pixelHeight)}static test(t){throw new Error("Unimplemented")}};Lr.defaultOptions={resolution:1,format:"bgra8unorm",alphaMode:"premultiply-alpha-on-upload",dimensions:"2d",mipLevelCount:1,autoGenerateMipmaps:!1,sampleCount:1,antialias:!1,autoGarbageCollect:!1};let Ct=Lr;class ri extends Ct{constructor(t){const e=t.resource||new Float32Array(t.width*t.height*4);let i=t.format;i||(e instanceof Float32Array?i="rgba32float":e instanceof Int32Array||e instanceof Uint32Array?i="rgba32uint":e instanceof Int16Array||e instanceof Uint16Array?i="rgba16uint":(e instanceof Int8Array,i="bgra8unorm")),super({...t,resource:e,format:i}),this.uploadMethodId="buffer"}static test(t){return t instanceof Int8Array||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array}}ri.extension=P.TextureSource;const Ei=new D;class Ba{constructor(t,e){this.mapCoord=new D,this.uClampFrame=new Float32Array(4),this.uClampOffset=new Float32Array(2),this._textureID=-1,this._updateID=0,this.clampOffset=0,typeof e>"u"?this.clampMargin=t.width<10?0:.5:this.clampMargin=e,this.isSimple=!1,this.texture=t}get texture(){return this._texture}set texture(t){var e;this.texture!==t&&((e=this._texture)==null||e.removeListener("update",this.update,this),this._texture=t,this._texture.addListener("update",this.update,this),this.update())}multiplyUvs(t,e){e===void 0&&(e=t);const i=this.mapCoord;for(let r=0;rthis.maxX||this.minY>this.maxY}get rectangle(){this._rectangle||(this._rectangle=new U);const t=this._rectangle;return this.minX>this.maxX||this.minY>this.maxY?(t.x=0,t.y=0,t.width=0,t.height=0):t.copyFromBounds(this),t}clear(){return this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.matrix=Bi,this}set(t,e,i,r){this.minX=t,this.minY=e,this.maxX=i,this.maxY=r}addFrame(t,e,i,r,n){n||(n=this.matrix);const a=n.a,o=n.b,h=n.c,c=n.d,l=n.tx,u=n.ty;let d=this.minX,f=this.minY,p=this.maxX,m=this.maxY,g=a*t+h*e+l,x=o*t+c*e+u;gp&&(p=g),x>m&&(m=x),g=a*i+h*e+l,x=o*i+c*e+u,gp&&(p=g),x>m&&(m=x),g=a*t+h*r+l,x=o*t+c*r+u,gp&&(p=g),x>m&&(m=x),g=a*i+h*r+l,x=o*i+c*r+u,gp&&(p=g),x>m&&(m=x),this.minX=d,this.minY=f,this.maxX=p,this.maxY=m}addRect(t,e){this.addFrame(t.x,t.y,t.x+t.width,t.y+t.height,e)}addBounds(t,e){this.addFrame(t.minX,t.minY,t.maxX,t.maxY,e)}addBoundsMask(t){this.minX=this.minX>t.minX?this.minX:t.minX,this.minY=this.minY>t.minY?this.minY:t.minY,this.maxX=this.maxXthis.maxX?d:this.maxX,this.maxY=f>this.maxY?f:this.maxY,d=a*e+h*n+l,f=o*e+c*n+u,this.minX=dthis.maxX?d:this.maxX,this.maxY=f>this.maxY?f:this.maxY,d=a*r+h*n+l,f=o*r+c*n+u,this.minX=dthis.maxX?d:this.maxX,this.maxY=f>this.maxY?f:this.maxY}fit(t){return this.minXt.right&&(this.maxX=t.right),this.minYt.bottom&&(this.maxY=t.bottom),this}fitBounds(t,e,i,r){return this.minXe&&(this.maxX=e),this.minYr&&(this.maxY=r),this}pad(t,e=t){return this.minX-=t,this.maxX+=t,this.minY-=e,this.maxY+=e,this}ceil(){return this.minX=Math.floor(this.minX),this.minY=Math.floor(this.minY),this.maxX=Math.ceil(this.maxX),this.maxY=Math.ceil(this.maxY),this}clone(){return new bt(this.minX,this.minY,this.maxX,this.maxY)}scale(t,e=t){return this.minX*=t,this.minY*=e,this.maxX*=t,this.maxY*=e,this}get x(){return this.minX}set x(t){const e=this.maxX-this.minX;this.minX=t,this.maxX=t+e}get y(){return this.minY}set y(t){const e=this.maxY-this.minY;this.minY=t,this.maxY=t+e}get width(){return this.maxX-this.minX}set width(t){this.maxX=this.minX+t}get height(){return this.maxY-this.minY}set height(t){this.maxY=this.minY+t}get left(){return this.minX}get right(){return this.maxX}get top(){return this.minY}get bottom(){return this.maxY}get isPositive(){return this.maxX-this.minX>0&&this.maxY-this.minY>0}get isValid(){return this.minX+this.minY!==1/0}addVertexData(t,e,i,r){let n=this.minX,a=this.minY,o=this.maxX,h=this.maxY;r||(r=this.matrix);const c=r.a,l=r.b,u=r.c,d=r.d,f=r.tx,p=r.ty;for(let m=e;mo?y:o,h=_>h?_:h}this.minX=n,this.minY=a,this.maxX=o,this.maxY=h}containsPoint(t,e){return this.minX<=t&&this.minY<=e&&this.maxX>=t&&this.maxY>=e}toString(){return`[pixi.js:Bounds minX=${this.minX} minY=${this.minY} maxX=${this.maxX} maxY=${this.maxY} width=${this.width} height=${this.height}]`}}var Fa={grad:.9,turn:360,rad:360/(2*Math.PI)},vt=function(s){return typeof s=="string"?s.length>0:typeof s=="number"},st=function(s,t,e){return t===void 0&&(t=0),e===void 0&&(e=Math.pow(10,t)),Math.round(e*s)/e+0},ut=function(s,t,e){return t===void 0&&(t=0),e===void 0&&(e=1),s>e?e:s>t?s:t},Or=function(s){return(s=isFinite(s)?s%360:0)>0?s:s+360},Ii=function(s){return{r:ut(s.r,0,255),g:ut(s.g,0,255),b:ut(s.b,0,255),a:ut(s.a)}},hs=function(s){return{r:st(s.r),g:st(s.g),b:st(s.b),a:st(s.a,3)}},Ra=/^#([0-9a-f]{3,8})$/i,Ge=function(s){var t=s.toString(16);return t.length<2?"0"+t:t},Wr=function(s){var t=s.r,e=s.g,i=s.b,r=s.a,n=Math.max(t,e,i),a=n-Math.min(t,e,i),o=a?n===t?(e-i)/a:n===e?2+(i-t)/a:4+(t-e)/a:0;return{h:60*(o<0?o+6:o),s:n?a/n*100:0,v:n/255*100,a:r}},Dr=function(s){var t=s.h,e=s.s,i=s.v,r=s.a;t=t/360*6,e/=100,i/=100;var n=Math.floor(t),a=i*(1-e),o=i*(1-(t-n)*e),h=i*(1-(1-t+n)*e),c=n%6;return{r:255*[i,o,a,a,h,i][c],g:255*[h,i,i,o,a,a][c],b:255*[a,a,h,i,i,o][c],a:r}},Fi=function(s){return{h:Or(s.h),s:ut(s.s,0,100),l:ut(s.l,0,100),a:ut(s.a)}},Ri=function(s){return{h:st(s.h),s:st(s.s),l:st(s.l),a:st(s.a,3)}},Li=function(s){return Dr((e=(t=s).s,{h:t.h,s:(e*=((i=t.l)<50?i:100-i)/100)>0?2*e/(i+e)*100:0,v:i+e,a:t.a}));var t,e,i},_e=function(s){return{h:(t=Wr(s)).h,s:(r=(200-(e=t.s))*(i=t.v)/100)>0&&r<200?e*i/100/(r<=100?r:200-r)*100:0,l:r/2,a:t.a};var t,e,i,r},La=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Ga=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Oa=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Wa=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Ls={string:[[function(s){var t=Ra.exec(s);return t?(s=t[1]).length<=4?{r:parseInt(s[0]+s[0],16),g:parseInt(s[1]+s[1],16),b:parseInt(s[2]+s[2],16),a:s.length===4?st(parseInt(s[3]+s[3],16)/255,2):1}:s.length===6||s.length===8?{r:parseInt(s.substr(0,2),16),g:parseInt(s.substr(2,2),16),b:parseInt(s.substr(4,2),16),a:s.length===8?st(parseInt(s.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(s){var t=Oa.exec(s)||Wa.exec(s);return t?t[2]!==t[4]||t[4]!==t[6]?null:Ii({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(s){var t=La.exec(s)||Ga.exec(s);if(!t)return null;var e,i,r=Fi({h:(e=t[1],i=t[2],i===void 0&&(i="deg"),Number(e)*(Fa[i]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return Li(r)},"hsl"]],object:[[function(s){var t=s.r,e=s.g,i=s.b,r=s.a,n=r===void 0?1:r;return vt(t)&&vt(e)&&vt(i)?Ii({r:Number(t),g:Number(e),b:Number(i),a:Number(n)}):null},"rgb"],[function(s){var t=s.h,e=s.s,i=s.l,r=s.a,n=r===void 0?1:r;if(!vt(t)||!vt(e)||!vt(i))return null;var a=Fi({h:Number(t),s:Number(e),l:Number(i),a:Number(n)});return Li(a)},"hsl"],[function(s){var t=s.h,e=s.s,i=s.v,r=s.a,n=r===void 0?1:r;if(!vt(t)||!vt(e)||!vt(i))return null;var a=function(o){return{h:Or(o.h),s:ut(o.s,0,100),v:ut(o.v,0,100),a:ut(o.a)}}({h:Number(t),s:Number(e),v:Number(i),a:Number(n)});return Dr(a)},"hsv"]]},Gi=function(s,t){for(var e=0;e=.5},s.prototype.toHex=function(){return t=hs(this.rgba),e=t.r,i=t.g,r=t.b,a=(n=t.a)<1?Ge(st(255*n)):"","#"+Ge(e)+Ge(i)+Ge(r)+a;var t,e,i,r,n,a},s.prototype.toRgb=function(){return hs(this.rgba)},s.prototype.toRgbString=function(){return t=hs(this.rgba),e=t.r,i=t.g,r=t.b,(n=t.a)<1?"rgba("+e+", "+i+", "+r+", "+n+")":"rgb("+e+", "+i+", "+r+")";var t,e,i,r,n},s.prototype.toHsl=function(){return Ri(_e(this.rgba))},s.prototype.toHslString=function(){return t=Ri(_e(this.rgba)),e=t.h,i=t.s,r=t.l,(n=t.a)<1?"hsla("+e+", "+i+"%, "+r+"%, "+n+")":"hsl("+e+", "+i+"%, "+r+"%)";var t,e,i,r,n},s.prototype.toHsv=function(){return t=Wr(this.rgba),{h:st(t.h),s:st(t.s),v:st(t.v),a:st(t.a,3)};var t},s.prototype.invert=function(){return yt({r:255-(t=this.rgba).r,g:255-t.g,b:255-t.b,a:t.a});var t},s.prototype.saturate=function(t){return t===void 0&&(t=.1),yt(ls(this.rgba,t))},s.prototype.desaturate=function(t){return t===void 0&&(t=.1),yt(ls(this.rgba,-t))},s.prototype.grayscale=function(){return yt(ls(this.rgba,-1))},s.prototype.lighten=function(t){return t===void 0&&(t=.1),yt(Oi(this.rgba,t))},s.prototype.darken=function(t){return t===void 0&&(t=.1),yt(Oi(this.rgba,-t))},s.prototype.rotate=function(t){return t===void 0&&(t=15),this.hue(this.hue()+t)},s.prototype.alpha=function(t){return typeof t=="number"?yt({r:(e=this.rgba).r,g:e.g,b:e.b,a:t}):st(this.rgba.a,3);var e},s.prototype.hue=function(t){var e=_e(this.rgba);return typeof t=="number"?yt({h:t,s:e.s,l:e.l,a:e.a}):st(e.h)},s.prototype.isEqual=function(t){return this.toHex()===yt(t).toHex()},s}(),yt=function(s){return s instanceof Gs?s:new Gs(s)},Wi=[],Ua=function(s){s.forEach(function(t){Wi.indexOf(t)<0&&(t(Gs,Ls),Wi.push(t))})};function za(s,t){var e={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},i={};for(var r in e)i[e[r]]=r;var n={};s.prototype.toName=function(a){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var o,h,c=i[this.toHex()];if(c)return c;if(a!=null&&a.closest){var l=this.toRgb(),u=1/0,d="black";if(!n.length)for(var f in e)n[f]=new s(e[f]).toRgb();for(var p in e){var m=(o=l,h=n[p],Math.pow(o.r-h.r,2)+Math.pow(o.g-h.g,2)+Math.pow(o.b-h.b,2));mn===e[a]);if(t!==null&&e!==null){const n=Object.keys(t),a=Object.keys(e);return n.length!==a.length?!1:n.every(o=>t[o]===e[o])}return t===e}toRgba(){const[t,e,i,r]=this._components;return{r:t,g:e,b:i,a:r}}toRgb(){const[t,e,i]=this._components;return{r:t,g:e,b:i}}toRgbaString(){const[t,e,i]=this.toUint8RgbArray();return`rgba(${t},${e},${i},${this.alpha})`}toUint8RgbArray(t){const[e,i,r]=this._components;return this._arrayRgb||(this._arrayRgb=[]),t=t||this._arrayRgb,t[0]=Math.round(e*255),t[1]=Math.round(i*255),t[2]=Math.round(r*255),t}toArray(t){this._arrayRgba||(this._arrayRgba=[]),t=t||this._arrayRgba;const[e,i,r,n]=this._components;return t[0]=e,t[1]=i,t[2]=r,t[3]=n,t}toRgbArray(t){this._arrayRgb||(this._arrayRgb=[]),t=t||this._arrayRgb;const[e,i,r]=this._components;return t[0]=e,t[1]=i,t[2]=r,t}toNumber(){return this._int}toBgrNumber(){const[t,e,i]=this.toUint8RgbArray();return(i<<16)+(e<<8)+t}toLittleEndianNumber(){const t=this._int;return(t>>16)+(t&65280)+((t&255)<<16)}multiply(t){const[e,i,r,n]=me._temp.setValue(t)._components;return this._components[0]*=e,this._components[1]*=i,this._components[2]*=r,this._components[3]*=n,this._refreshInt(),this._value=null,this}premultiply(t,e=!0){return e&&(this._components[0]*=t,this._components[1]*=t,this._components[2]*=t),this._components[3]=t,this._refreshInt(),this._value=null,this}toPremultiplied(t,e=!0){if(t===1)return(255<<24)+this._int;if(t===0)return e?0:this._int;let i=this._int>>16&255,r=this._int>>8&255,n=this._int&255;return e&&(i=i*t+.5|0,r=r*t+.5|0,n=n*t+.5|0),(t*255<<24)+(i<<16)+(r<<8)+n}toHex(){const t=this._int.toString(16);return`#${"000000".substring(0,6-t.length)+t}`}toHexa(){const e=Math.round(this._components[3]*255).toString(16);return this.toHex()+"00".substring(0,2-e.length)+e}setAlpha(t){return this._components[3]=this._clamp(t),this}_normalize(t){let e,i,r,n;if((typeof t=="number"||t instanceof Number)&&t>=0&&t<=16777215){const a=t;e=(a>>16&255)/255,i=(a>>8&255)/255,r=(a&255)/255,n=1}else if((Array.isArray(t)||t instanceof Float32Array)&&t.length>=3&&t.length<=4)t=this._clamp(t),[e,i,r,n=1]=t;else if((t instanceof Uint8Array||t instanceof Uint8ClampedArray)&&t.length>=3&&t.length<=4)t=this._clamp(t,0,255),[e,i,r,n=255]=t,e/=255,i/=255,r/=255,n/=255;else if(typeof t=="string"||typeof t=="object"){if(typeof t=="string"){const o=me.HEX_PATTERN.exec(t);o&&(t=`#${o[2]}`)}const a=yt(t);a.isValid()&&({r:e,g:i,b:r,a:n}=a.rgba,e/=255,i/=255,r/=255)}if(e!==void 0)this._components[0]=e,this._components[1]=i,this._components[2]=r,this._components[3]=n,this._refreshInt();else throw new Error(`Unable to convert color ${t}`)}_refreshInt(){this._clamp(this._components);const[t,e,i]=this._components;this._int=(t*255<<16)+(e*255<<8)+(i*255|0)}_clamp(t,e=0,i=1){return typeof t=="number"?Math.min(Math.max(t,e),i):(t.forEach((r,n)=>{t[n]=Math.min(Math.max(r,e),i)}),t)}static isColorLike(t){return typeof t=="number"||typeof t=="string"||t instanceof Number||t instanceof me||Array.isArray(t)||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Float32Array||t.r!==void 0&&t.g!==void 0&&t.b!==void 0||t.r!==void 0&&t.g!==void 0&&t.b!==void 0&&t.a!==void 0||t.h!==void 0&&t.s!==void 0&&t.l!==void 0||t.h!==void 0&&t.s!==void 0&&t.l!==void 0&&t.a!==void 0||t.h!==void 0&&t.s!==void 0&&t.v!==void 0||t.h!==void 0&&t.s!==void 0&&t.v!==void 0&&t.a!==void 0}};Zt.shared=new Zt;Zt._temp=new Zt;Zt.HEX_PATTERN=/^(#|0x)?(([a-f0-9]{3}){1,2}([a-f0-9]{2})?)$/i;let Q=Zt;const Ha={cullArea:null,cullable:!1,cullableChildren:!0};class ni{constructor(t,e){this._pool=[],this._count=0,this._index=0,this._classType=t,e&&this.prepopulate(e)}prepopulate(t){for(let e=0;e0?e=this._pool[--this._index]:e=new this._classType,(i=e.init)==null||i.call(e,t),e}return(t){var e;(e=t.reset)==null||e.call(t),this._pool[this._index++]=t}get totalSize(){return this._count}get totalFree(){return this._index}get totalUsed(){return this._count-this._index}clear(){this._pool.length=0,this._index=0}}class Na{constructor(){this._poolsByClass=new Map}prepopulate(t,e){this.getPool(t).prepopulate(e)}get(t,e){return this.getPool(t).get(e)}return(t){this.getPool(t.constructor).return(t)}getPool(t){return this._poolsByClass.has(t)||this._poolsByClass.set(t,new ni(t)),this._poolsByClass.get(t)}stats(){const t={};return this._poolsByClass.forEach(e=>{const i=t[e._classType.name]?e._classType.name+e._classType.ID:e._classType.name;t[i]={free:e.totalFree,used:e.totalUsed,size:e.totalSize}}),t}}const At=new Na;function Va(s,t,e){const i=s.length;let r;if(t>=i||e===0)return;e=t+e>i?i-t:e;const n=i-e;for(r=t;r0&&i<=e){for(let a=e-1;a>=s;a--){const o=this.children[a];o&&(r.push(o),o.parent=null)}Va(this.children,s,e);const n=this.renderGroup||this.parentRenderGroup;n&&n.removeChildren(r);for(let a=0;a=this.children.length)throw new Error(`getChildAt: Index (${s}) does not exist.`);return this.children[s]},setChildIndex(s,t){if(t<0||t>=this.children.length)throw new Error(`The index ${t} supplied is out of bounds ${this.children.length}`);this.getChildIndex(s),this.addChildAt(s,t)},getChildIndex(s){const t=this.children.indexOf(s);if(t===-1)throw new Error("The supplied Container must be a child of the caller");return t},addChildAt(s,t){this.allowChildren||O(W,"addChildAt: Only Containers will be allowed to add children in v8.0.0");const{children:e}=this;if(t<0||t>e.length)throw new Error(`${s}addChildAt: The index ${t} supplied is out of bounds ${e.length}`);if(s.parent){const r=s.parent.children.indexOf(s);if(s.parent===this&&r===t)return s;r!==-1&&s.parent.children.splice(r,1)}t===e.length?e.push(s):e.splice(t,0,s),s.parent=this,s.didChange=!0,s.didViewUpdate=!1,s._updateFlags=15;const i=this.renderGroup||this.parentRenderGroup;return i&&i.addChild(s),this.sortableChildren&&(this.sortDirty=!0),this.emit("childAdded",s,this,t),s.emit("added",this),s},swapChildren(s,t){if(s===t)return;const e=this.getChildIndex(s),i=this.getChildIndex(t);this.children[e]=t,this.children[i]=s;const r=this.renderGroup||this.parentRenderGroup;r&&(r.structureDidChange=!0),this._didContainerChangeTick++},removeFromParent(){var s;(s=this.parent)==null||s.removeChild(this)},reparentChild(...s){return s.length===1?this.reparentChildAt(s[0],this.children.length):(s.forEach(t=>this.reparentChildAt(t,this.children.length)),s[0])},reparentChildAt(s,t){if(s.parent===this)return this.setChildIndex(s,t),s;const e=s.worldTransform.clone();s.removeFromParent(),this.addChildAt(s,t);const i=this.worldTransform.clone();return i.invert(),e.prepend(i),s.setFromMatrix(e),s}};class Di{constructor(){this.pipe="filter",this.priority=1}destroy(){for(let t=0;t{this.add({test:t.test,maskClass:t})}))}add(t){this._tests.push(t)}getMaskEffect(t){this._initialized||this.init();for(let e=0;ei.priority-r.priority);const e=this.renderGroup||this.parentRenderGroup;e&&(e.structureDidChange=!0),this._updateIsSimple()},removeEffect(s){const t=this.effects.indexOf(s);t!==-1&&(this.effects.splice(t,1),this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateIsSimple())},set mask(s){const t=this._maskEffect;(t==null?void 0:t.mask)!==s&&(t&&(this.removeEffect(t),Os.returnMaskEffect(t),this._maskEffect=null),s!=null&&(this._maskEffect=Os.getMaskEffect(s),this.addEffect(this._maskEffect)))},get mask(){var s;return(s=this._maskEffect)==null?void 0:s.mask},set filters(s){var n;!Array.isArray(s)&&s&&(s=[s]);const t=this._filterEffect||(this._filterEffect=new Di);s=s;const e=(s==null?void 0:s.length)>0,i=((n=t.filters)==null?void 0:n.length)>0,r=e!==i;s=Array.isArray(s)?s.slice(0):s,t.filters=Object.freeze(s),r&&(e?this.addEffect(t):(this.removeEffect(t),t.filters=s??null))},get filters(){var s;return(s=this._filterEffect)==null?void 0:s.filters},set filterArea(s){this._filterEffect||(this._filterEffect=new Di),this._filterEffect.filterArea=s},get filterArea(){var s;return(s=this._filterEffect)==null?void 0:s.filterArea}},ja={label:null,get name(){return O(W,"Container.name property has been removed, use Container.label instead"),this.label},set name(s){O(W,"Container.name property has been removed, use Container.label instead"),this.label=s},getChildByName(s,t=!1){return this.getChildByLabel(s,t)},getChildByLabel(s,t=!1){const e=this.children;for(let i=0;i-1&&this.renderGroupChildren.splice(e,1),t.renderGroupParent=null}addChild(t){if(this.structureDidChange=!0,t.parentRenderGroup=this,t.updateTick=-1,t.parent===this.root?t.relativeRenderGroupDepth=1:t.relativeRenderGroupDepth=t.parent.relativeRenderGroupDepth+1,t.didChange=!0,this.onChildUpdate(t),t.renderGroup){this.addRenderGroupChild(t.renderGroup);return}t._onRender&&this.addOnRender(t);const e=t.children;for(let i=0;i0}addOnRender(t){this._onRenderContainers.push(t)}removeOnRender(t){this._onRenderContainers.splice(this._onRenderContainers.indexOf(t),1)}runOnRender(){for(let t=0;tthis.addChild(r)),(i=t.parent)==null||i.addChild(this)}static mixin(t){Object.defineProperties(rt.prototype,Object.getOwnPropertyDescriptors(t))}set _didChangeId(t){this._didViewChangeTick=t>>12&4095,this._didContainerChangeTick=t&4095}get _didChangeId(){return this._didContainerChangeTick&4095|(this._didViewChangeTick&4095)<<12}addChild(...t){if(this.allowChildren||O(W,"addChild: Only Containers will be allowed to add children in v8.0.0"),t.length>1){for(let r=0;r1){for(let r=0;r-1&&(this._didViewChangeTick++,this.children.splice(i,1),this.renderGroup?this.renderGroup.removeChild(e):this.parentRenderGroup&&this.parentRenderGroup.removeChild(e),e.parent=null,this.emit("childRemoved",e,this,i),e.emit("removed",this)),e}_onUpdate(t){t&&t===this._skew&&this._updateSkew(),this._didContainerChangeTick++,!this.didChange&&(this.didChange=!0,this.parentRenderGroup&&this.parentRenderGroup.onChildUpdate(this))}set isRenderGroup(t){!!this.renderGroup!==t&&(t?this.enableRenderGroup():this.disableRenderGroup())}get isRenderGroup(){return!!this.renderGroup}enableRenderGroup(){if(this.renderGroup)return;const t=this.parentRenderGroup;t==null||t.removeChild(this),this.renderGroup=At.get(so,this),this.groupTransform=D.IDENTITY,t==null||t.addChild(this),this._updateIsSimple()}disableRenderGroup(){if(!this.renderGroup)return;const t=this.parentRenderGroup;t==null||t.removeChild(this),At.return(this.renderGroup),this.renderGroup=null,this.groupTransform=this.relativeGroupTransform,t==null||t.addChild(this),this._updateIsSimple()}_updateIsSimple(){this.isSimple=!this.renderGroup&&this.effects.length===0}get worldTransform(){return this._worldTransform||(this._worldTransform=new D),this.renderGroup?this._worldTransform.copyFrom(this.renderGroup.worldTransform):this.parentRenderGroup&&this._worldTransform.appendFrom(this.relativeGroupTransform,this.parentRenderGroup.worldTransform),this._worldTransform}get x(){return this._position.x}set x(t){this._position.x=t}get y(){return this._position.y}set y(t){this._position.y=t}get position(){return this._position}set position(t){this._position.copyFrom(t)}get rotation(){return this._rotation}set rotation(t){this._rotation!==t&&(this._rotation=t,this._onUpdate(this._skew))}get angle(){return this.rotation*va}set angle(t){this.rotation=t*Aa}get pivot(){return this._pivot===fs&&(this._pivot=new ot(this,0,0)),this._pivot}set pivot(t){this._pivot===fs&&(this._pivot=new ot(this,0,0)),typeof t=="number"?this._pivot.set(t):this._pivot.copyFrom(t)}get skew(){return this._skew===ds&&(this._skew=new ot(this,0,0)),this._skew}set skew(t){this._skew===ds&&(this._skew=new ot(this,0,0)),this._skew.copyFrom(t)}get scale(){return this._scale===ps&&(this._scale=new ot(this,1,1)),this._scale}set scale(t){this._scale===ps&&(this._scale=new ot(this,0,0)),typeof t=="number"?this._scale.set(t):this._scale.copyFrom(t)}get width(){return Math.abs(this.scale.x*this.getLocalBounds().width)}set width(t){const e=this.getLocalBounds().width;this._setWidth(t,e)}get height(){return Math.abs(this.scale.y*this.getLocalBounds().height)}set height(t){const e=this.getLocalBounds().height;this._setHeight(t,e)}getSize(t){t||(t={});const e=this.getLocalBounds();return t.width=Math.abs(this.scale.x*e.width),t.height=Math.abs(this.scale.y*e.height),t}setSize(t,e){const i=this.getLocalBounds();typeof t=="object"?(e=t.height??t.width,t=t.width):e??(e=t),t!==void 0&&this._setWidth(t,i.width),e!==void 0&&this._setHeight(e,i.height)}_updateSkew(){const t=this._rotation,e=this._skew;this._cx=Math.cos(t+e._y),this._sx=Math.sin(t+e._y),this._cy=-Math.sin(t-e._x),this._sy=Math.cos(t-e._x)}updateTransform(t){return this.position.set(typeof t.x=="number"?t.x:this.position.x,typeof t.y=="number"?t.y:this.position.y),this.scale.set(typeof t.scaleX=="number"?t.scaleX||1:this.scale.x,typeof t.scaleY=="number"?t.scaleY||1:this.scale.y),this.rotation=typeof t.rotation=="number"?t.rotation:this.rotation,this.skew.set(typeof t.skewX=="number"?t.skewX:this.skew.x,typeof t.skewY=="number"?t.skewY:this.skew.y),this.pivot.set(typeof t.pivotX=="number"?t.pivotX:this.pivot.x,typeof t.pivotY=="number"?t.pivotY:this.pivot.y),this}setFromMatrix(t){t.decompose(this)}updateLocalTransform(){const t=this._didContainerChangeTick;if(this._didLocalTransformChangeId===t)return;this._didLocalTransformChangeId=t;const e=this.localTransform,i=this._scale,r=this._pivot,n=this._position,a=i._x,o=i._y,h=r._x,c=r._y;e.a=this._cx*a,e.b=this._sx*a,e.c=this._cy*o,e.d=this._sy*o,e.tx=n._x-(h*e.a+c*e.c),e.ty=n._y-(h*e.b+c*e.d)}set alpha(t){t!==this.localAlpha&&(this.localAlpha=t,this._updateFlags|=zi,this._onUpdate())}get alpha(){return this.localAlpha}set tint(t){const i=Q.shared.setValue(t??16777215).toBgrNumber();i!==this.localColor&&(this.localColor=i,this._updateFlags|=zi,this._onUpdate())}get tint(){const t=this.localColor;return((t&255)<<16)+(t&65280)+(t>>16&255)}set blendMode(t){this.localBlendMode!==t&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=ro,this.localBlendMode=t,this._onUpdate())}get blendMode(){return this.localBlendMode}get visible(){return!!(this.localDisplayStatus&2)}set visible(t){const e=t?2:0;(this.localDisplayStatus&2)!==e&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=gs,this.localDisplayStatus^=2,this._onUpdate())}get culled(){return!(this.localDisplayStatus&4)}set culled(t){const e=t?0:4;(this.localDisplayStatus&4)!==e&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=gs,this.localDisplayStatus^=4,this._onUpdate())}get renderable(){return!!(this.localDisplayStatus&1)}set renderable(t){const e=t?1:0;(this.localDisplayStatus&1)!==e&&(this._updateFlags|=gs,this.localDisplayStatus^=1,this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._onUpdate())}get isRenderable(){return this.localDisplayStatus===7&&this.groupAlpha>0}destroy(t=!1){var r;if(this.destroyed)return;this.destroyed=!0;const e=this.removeChildren(0,this.children.length);if(this.removeFromParent(),this.parent=null,this._maskEffect=null,this._filterEffect=null,this.effects=null,this._position=null,this._scale=null,this._pivot=null,this._skew=null,this.emit("destroyed",this),this.removeAllListeners(),typeof t=="boolean"?t:t==null?void 0:t.children)for(let n=0;n=e.minX&&i<=e.maxX&&r>=e.minY&&r<=e.maxY}destroy(t){super.destroy(t),this._bounds=null}}class dt extends Qe{constructor(t=G.EMPTY){t instanceof G&&(t={texture:t});const{texture:e=G.EMPTY,anchor:i,roundPixels:r,width:n,height:a,...o}=t;super({label:"Sprite",...o}),this.renderPipeId="sprite",this.batched=!0,this._didSpriteUpdate=!1,this._sourceBounds={minX:0,maxX:1,minY:0,maxY:0},this._sourceBoundsDirty=!0,this._anchor=new ot({_onUpdate:()=>{this.onViewUpdate()}}),i?this.anchor=i:e.defaultAnchor&&(this.anchor=e.defaultAnchor),this.texture=e,this.allowChildren=!1,this.roundPixels=r??!1,n!==void 0&&(this.width=n),a!==void 0&&(this.height=a)}static from(t,e=!1){return t instanceof G?new dt(t):new dt(G.from(t,e))}set texture(t){t||(t=G.EMPTY);const e=this._texture;e!==t&&(e&&e.dynamic&&e.off("update",this.onViewUpdate,this),t.dynamic&&t.on("update",this.onViewUpdate,this),this._texture=t,this._width&&this._setWidth(this._width,this._texture.orig.width),this._height&&this._setHeight(this._height,this._texture.orig.height),this.onViewUpdate())}get texture(){return this._texture}get bounds(){return this._boundsDirty&&(this._updateBounds(),this._boundsDirty=!1),this._bounds}get sourceBounds(){return this._sourceBoundsDirty&&(this._updateSourceBounds(),this._sourceBoundsDirty=!1),this._sourceBounds}containsPoint(t){const e=this.sourceBounds;return t.x>=e.maxX&&t.x<=e.minX&&t.y>=e.maxY&&t.y<=e.minY}addBounds(t){const e=this._texture.trim?this.sourceBounds:this.bounds;t.addFrame(e.minX,e.minY,e.maxX,e.maxY)}onViewUpdate(){if(this._didViewChangeTick++,this._didSpriteUpdate=!0,this._sourceBoundsDirty=this._boundsDirty=!0,this.didViewUpdate)return;this.didViewUpdate=!0;const t=this.renderGroup||this.parentRenderGroup;t&&t.onChildViewUpdate(this)}_updateBounds(){Ia(this._bounds,this._anchor,this._texture,0)}_updateSourceBounds(){const t=this._anchor,e=this._texture,i=this._sourceBounds,{width:r,height:n}=e.orig;i.maxX=-t._x*r,i.minX=i.maxX+r,i.maxY=-t._y*n,i.minY=i.maxY+n}destroy(t=!1){if(super.destroy(t),typeof t=="boolean"?t:t==null?void 0:t.texture){const i=typeof t=="boolean"?t:t==null?void 0:t.textureSource;this._texture.destroy(i)}this._texture=null,this._bounds=null,this._sourceBounds=null,this._anchor=null}get anchor(){return this._anchor}set anchor(t){typeof t=="number"?this._anchor.set(t):this._anchor.copyFrom(t)}get width(){return Math.abs(this.scale.x)*this._texture.orig.width}set width(t){this._setWidth(t,this._texture.orig.width),this._width=t}get height(){return Math.abs(this.scale.y)*this._texture.orig.height}set height(t){this._setHeight(t,this._texture.orig.height),this._height=t}getSize(t){return t||(t={}),t.width=Math.abs(this.scale.x)*this._texture.orig.width,t.height=Math.abs(this.scale.y)*this._texture.orig.height,t}setSize(t,e){typeof t=="object"?(e=t.height??t.width,t=t.width):e??(e=t),t!==void 0&&this._setWidth(t,this._texture.orig.width),e!==void 0&&this._setHeight(e,this._texture.orig.height)}}const no=new bt;function Yr(s,t,e){const i=no;s.measurable=!0,Ur(s,e,i),t.addBoundsMask(i),s.measurable=!1}function Xr(s,t,e){const i=Qt.get();s.measurable=!0;const r=St.get().identity(),n=jr(s,e,r);Hr(s,i,n),s.measurable=!1,t.addBoundsMask(i),St.return(r),Qt.return(i)}function jr(s,t,e){return s?(s!==t&&(jr(s.parent,t,e),s.updateLocalTransform(),e.append(s.localTransform)),e):(J("Mask bounds, renderable is not inside the root container"),e)}class qr{constructor(t){this.priority=0,this.pipe="alphaMask",t!=null&&t.mask&&this.init(t.mask)}init(t){this.mask=t,this.renderMaskToTexture=!(t instanceof dt),this.mask.renderable=this.renderMaskToTexture,this.mask.includeInBuild=!this.renderMaskToTexture,this.mask.measurable=!1}reset(){this.mask.measurable=!0,this.mask=null}addBounds(t,e){Yr(this.mask,t,e)}addLocalBounds(t,e){Xr(this.mask,t,e)}containsPoint(t,e){const i=this.mask;return e(i,t)}destroy(){this.reset()}static test(t){return t instanceof dt}}qr.extension=P.MaskEffect;class Kr{constructor(t){this.priority=0,this.pipe="colorMask",t!=null&&t.mask&&this.init(t.mask)}init(t){this.mask=t}destroy(){}static test(t){return typeof t=="number"}}Kr.extension=P.MaskEffect;class Zr{constructor(t){this.priority=0,this.pipe="stencilMask",t!=null&&t.mask&&this.init(t.mask)}init(t){this.mask=t,this.mask.includeInBuild=!1,this.mask.measurable=!1}reset(){this.mask.measurable=!0,this.mask.includeInBuild=!0,this.mask=null}addBounds(t,e){Yr(this.mask,t,e)}addLocalBounds(t,e){Xr(this.mask,t,e)}containsPoint(t,e){const i=this.mask;return e(i,t)}destroy(){this.reset()}static test(t){return t instanceof rt}}Zr.extension=P.MaskEffect;const ao={createCanvas:(s,t)=>{const e=document.createElement("canvas");return e.width=s,e.height=t,e},getCanvasRenderingContext2D:()=>CanvasRenderingContext2D,getWebGLRenderingContext:()=>WebGLRenderingContext,getNavigator:()=>navigator,getBaseUrl:()=>document.baseURI??window.location.href,getFontFaceSet:()=>document.fonts,fetch:(s,t)=>fetch(s,t),parseXML:s=>new DOMParser().parseFromString(s,"text/xml")};let Hi=ao;const j={get(){return Hi},set(s){Hi=s}};class Qr extends Ct{constructor(t){t.resource||(t.resource=j.get().createCanvas()),t.width||(t.width=t.resource.width,t.autoDensity||(t.width/=t.resolution)),t.height||(t.height=t.resource.height,t.autoDensity||(t.height/=t.resolution)),super(t),this.uploadMethodId="image",this.autoDensity=t.autoDensity;const e=t.resource;(this.pixelWidth!==e.width||this.pixelWidth!==e.height)&&this.resizeCanvas(),this.transparent=!!t.transparent}resizeCanvas(){this.autoDensity&&(this.resource.style.width=`${this.width}px`,this.resource.style.height=`${this.height}px`),(this.resource.width!==this.pixelWidth||this.resource.height!==this.pixelHeight)&&(this.resource.width=this.pixelWidth,this.resource.height=this.pixelHeight)}resize(t=this.width,e=this.height,i=this._resolution){const r=super.resize(t,e,i);return r&&this.resizeCanvas(),r}static test(t){return globalThis.HTMLCanvasElement&&t instanceof HTMLCanvasElement||globalThis.OffscreenCanvas&&t instanceof OffscreenCanvas}get context2D(){return this._context2D||(this._context2D=this.resource.getContext("2d"))}}Qr.extension=P.TextureSource;class ie extends Ct{constructor(t){if(t.resource&&globalThis.HTMLImageElement&&t.resource instanceof HTMLImageElement){const e=j.get().createCanvas(t.resource.width,t.resource.height);e.getContext("2d").drawImage(t.resource,0,0,t.resource.width,t.resource.height),t.resource=e,J("ImageSource: Image element passed, converting to canvas. Use CanvasSource instead.")}super(t),this.uploadMethodId="image",this.autoGarbageCollect=!0}static test(t){return globalThis.HTMLImageElement&&t instanceof HTMLImageElement||typeof ImageBitmap<"u"&&t instanceof ImageBitmap||globalThis.VideoFrame&&t instanceof VideoFrame}}ie.extension=P.TextureSource;var Ws=(s=>(s[s.INTERACTION=50]="INTERACTION",s[s.HIGH=25]="HIGH",s[s.NORMAL=0]="NORMAL",s[s.LOW=-25]="LOW",s[s.UTILITY=-50]="UTILITY",s))(Ws||{});class ms{constructor(t,e=null,i=0,r=!1){this.next=null,this.previous=null,this._destroyed=!1,this._fn=t,this._context=e,this.priority=i,this._once=r}match(t,e=null){return this._fn===t&&this._context===e}emit(t){this._fn&&(this._context?this._fn.call(this._context,t):this._fn(t));const e=this.next;return this._once&&this.destroy(!0),this._destroyed&&(this.next=null),e}connect(t){this.previous=t,t.next&&(t.next.previous=this),this.next=t.next,t.next=this}destroy(t=!1){this._destroyed=!0,this._fn=null,this._context=null,this.previous&&(this.previous.next=this.next),this.next&&(this.next.previous=this.previous);const e=this.next;return this.next=t?null:e,this.previous=null,e}}const Jr=class ht{constructor(){this.autoStart=!1,this.deltaTime=1,this.lastTime=-1,this.speed=1,this.started=!1,this._requestId=null,this._maxElapsedMS=100,this._minElapsedMS=0,this._protected=!1,this._lastFrame=-1,this._head=new ms(null,null,1/0),this.deltaMS=1/ht.targetFPMS,this.elapsedMS=1/ht.targetFPMS,this._tick=t=>{this._requestId=null,this.started&&(this.update(t),this.started&&this._requestId===null&&this._head.next&&(this._requestId=requestAnimationFrame(this._tick)))}}_requestIfNeeded(){this._requestId===null&&this._head.next&&(this.lastTime=performance.now(),this._lastFrame=this.lastTime,this._requestId=requestAnimationFrame(this._tick))}_cancelIfNeeded(){this._requestId!==null&&(cancelAnimationFrame(this._requestId),this._requestId=null)}_startIfPossible(){this.started?this._requestIfNeeded():this.autoStart&&this.start()}add(t,e,i=Ws.NORMAL){return this._addListener(new ms(t,e,i))}addOnce(t,e,i=Ws.NORMAL){return this._addListener(new ms(t,e,i,!0))}_addListener(t){let e=this._head.next,i=this._head;if(!e)t.connect(i);else{for(;e;){if(t.priority>e.priority){t.connect(i);break}i=e,e=e.next}t.previous||t.connect(i)}return this._startIfPossible(),this}remove(t,e){let i=this._head.next;for(;i;)i.match(t,e)?i=i.destroy():i=i.next;return this._head.next||this._cancelIfNeeded(),this}get count(){if(!this._head)return 0;let t=0,e=this._head;for(;e=e.next;)t++;return t}start(){this.started||(this.started=!0,this._requestIfNeeded())}stop(){this.started&&(this.started=!1,this._cancelIfNeeded())}destroy(){if(!this._protected){this.stop();let t=this._head.next;for(;t;)t=t.destroy(!0);this._head.destroy(),this._head=null}}update(t=performance.now()){let e;if(t>this.lastTime){if(e=this.elapsedMS=t-this.lastTime,e>this._maxElapsedMS&&(e=this._maxElapsedMS),e*=this.speed,this._minElapsedMS){const n=t-this._lastFrame|0;if(n{var a;const t=document.createElement("canvas").getContext("webgl");if(!t)return"premultiply-alpha-on-upload";const e=await new Promise(o=>{const h=document.createElement("video");h.onloadeddata=()=>o(h),h.onerror=()=>o(null),h.autoplay=!1,h.crossOrigin="anonymous",h.preload="auto",h.src="data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQJChYECGFOAZwEAAAAAAAHTEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHGTbuMU6uEElTDZ1OsggEXTbuMU6uEHFO7a1OsggG97AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmoCrXsYMPQkBNgIRMYXZmV0GETGF2ZkSJiEBEAAAAAAAAFlSua8yuAQAAAAAAAEPXgQFzxYgAAAAAAAAAAZyBACK1nIN1bmSIgQCGhVZfVlA5g4EBI+ODhAJiWgDglLCBArqBApqBAlPAgQFVsIRVuYEBElTDZ9Vzc9JjwItjxYgAAAAAAAAAAWfInEWjh0VOQ09ERVJEh49MYXZjIGxpYnZweC12cDlnyKJFo4hEVVJBVElPTkSHlDAwOjAwOjAwLjA0MDAwMDAwMAAAH0O2dcfngQCgwqGggQAAAIJJg0IAABAAFgA4JBwYSgAAICAAEb///4r+AAB1oZ2mm+6BAaWWgkmDQgAAEAAWADgkHBhKAAAgIABIQBxTu2uRu4+zgQC3iveBAfGCAXHwgQM=",h.load()});if(!e)return"premultiply-alpha-on-upload";const i=t.createTexture();t.bindTexture(t.TEXTURE_2D,i);const r=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,r),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,i,0),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,t.NONE),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e);const n=new Uint8Array(4);return t.readPixels(0,0,1,1,t.RGBA,t.UNSIGNED_BYTE,n),t.deleteFramebuffer(r),t.deleteTexture(i),(a=t.getExtension("WEBGL_lose_context"))==null||a.loseContext(),n[0]<=n[3]?"premultiplied-alpha":"premultiply-alpha-on-upload"})()),xs}const Je=class en extends Ct{constructor(t){super(t),this.isReady=!1,this.uploadMethodId="video",t={...en.defaultOptions,...t},this._autoUpdate=!0,this._isConnectedToTicker=!1,this._updateFPS=t.updateFPS||0,this._msToNextUpdate=0,this.autoPlay=t.autoPlay!==!1,this.alphaMode=t.alphaMode??"premultiply-alpha-on-upload",this._videoFrameRequestCallback=this._videoFrameRequestCallback.bind(this),this._videoFrameRequestCallbackHandle=null,this._load=null,this._resolve=null,this._reject=null,this._onCanPlay=this._onCanPlay.bind(this),this._onCanPlayThrough=this._onCanPlayThrough.bind(this),this._onError=this._onError.bind(this),this._onPlayStart=this._onPlayStart.bind(this),this._onPlayStop=this._onPlayStop.bind(this),this._onSeeked=this._onSeeked.bind(this),t.autoLoad!==!1&&this.load()}updateFrame(){if(!this.destroyed){if(this._updateFPS){const t=Xt.shared.elapsedMS*this.resource.playbackRate;this._msToNextUpdate=Math.floor(this._msToNextUpdate-t)}(!this._updateFPS||this._msToNextUpdate<=0)&&(this._msToNextUpdate=this._updateFPS?Math.floor(1e3/this._updateFPS):0),this.isValid&&this.update()}}_videoFrameRequestCallback(){this.updateFrame(),this.destroyed?this._videoFrameRequestCallbackHandle=null:this._videoFrameRequestCallbackHandle=this.resource.requestVideoFrameCallback(this._videoFrameRequestCallback)}get isValid(){return!!this.resource.videoWidth&&!!this.resource.videoHeight}async load(){if(this._load)return this._load;const t=this.resource,e=this.options;return(t.readyState===t.HAVE_ENOUGH_DATA||t.readyState===t.HAVE_FUTURE_DATA)&&t.width&&t.height&&(t.complete=!0),t.addEventListener("play",this._onPlayStart),t.addEventListener("pause",this._onPlayStop),t.addEventListener("seeked",this._onSeeked),this._isSourceReady()?this._mediaReady():(e.preload||t.addEventListener("canplay",this._onCanPlay),t.addEventListener("canplaythrough",this._onCanPlayThrough),t.addEventListener("error",this._onError,!0)),this.alphaMode=await tn(),this._load=new Promise((i,r)=>{this.isValid?i(this):(this._resolve=i,this._reject=r,e.preloadTimeoutMs!==void 0&&(this._preloadTimeout=setTimeout(()=>{this._onError(new ErrorEvent(`Preload exceeded timeout of ${e.preloadTimeoutMs}ms`))})),t.load())}),this._load}_onError(t){this.resource.removeEventListener("error",this._onError,!0),this.emit("error",t),this._reject&&(this._reject(t),this._reject=null,this._resolve=null)}_isSourcePlaying(){const t=this.resource;return!t.paused&&!t.ended}_isSourceReady(){return this.resource.readyState>2}_onPlayStart(){this.isValid||this._mediaReady(),this._configureAutoUpdate()}_onPlayStop(){this._configureAutoUpdate()}_onSeeked(){this._autoUpdate&&!this._isSourcePlaying()&&(this._msToNextUpdate=0,this.updateFrame(),this._msToNextUpdate=0)}_onCanPlay(){this.resource.removeEventListener("canplay",this._onCanPlay),this._mediaReady()}_onCanPlayThrough(){this.resource.removeEventListener("canplaythrough",this._onCanPlay),this._preloadTimeout&&(clearTimeout(this._preloadTimeout),this._preloadTimeout=void 0),this._mediaReady()}_mediaReady(){const t=this.resource;this.isValid&&(this.isReady=!0,this.resize(t.videoWidth,t.videoHeight)),this._msToNextUpdate=0,this.updateFrame(),this._msToNextUpdate=0,this._resolve&&(this._resolve(this),this._resolve=null,this._reject=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&this.resource.play()}destroy(){this._configureAutoUpdate();const t=this.resource;t&&(t.removeEventListener("play",this._onPlayStart),t.removeEventListener("pause",this._onPlayStop),t.removeEventListener("seeked",this._onSeeked),t.removeEventListener("canplay",this._onCanPlay),t.removeEventListener("canplaythrough",this._onCanPlayThrough),t.removeEventListener("error",this._onError,!0),t.pause(),t.src="",t.load()),super.destroy()}get autoUpdate(){return this._autoUpdate}set autoUpdate(t){t!==this._autoUpdate&&(this._autoUpdate=t,this._configureAutoUpdate())}get updateFPS(){return this._updateFPS}set updateFPS(t){t!==this._updateFPS&&(this._updateFPS=t,this._configureAutoUpdate())}_configureAutoUpdate(){this._autoUpdate&&this._isSourcePlaying()?!this._updateFPS&&this.resource.requestVideoFrameCallback?(this._isConnectedToTicker&&(Xt.shared.remove(this.updateFrame,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0),this._videoFrameRequestCallbackHandle===null&&(this._videoFrameRequestCallbackHandle=this.resource.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._videoFrameRequestCallbackHandle!==null&&(this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker||(Xt.shared.add(this.updateFrame,this),this._isConnectedToTicker=!0,this._msToNextUpdate=0)):(this._videoFrameRequestCallbackHandle!==null&&(this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker&&(Xt.shared.remove(this.updateFrame,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0))}static test(t){return globalThis.HTMLVideoElement&&t instanceof HTMLVideoElement}};Je.extension=P.TextureSource;Je.defaultOptions={...Ct.defaultOptions,autoLoad:!0,autoPlay:!0,updateFPS:0,crossorigin:!0,loop:!1,muted:!0,playsinline:!0,preload:!1};Je.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"};let $e=Je;const gt=(s,t,e=!1)=>(Array.isArray(s)||(s=[s]),t?s.map(i=>typeof i=="string"||e?t(i):i):s);class oo{constructor(){this._parsers=[],this._cache=new Map,this._cacheMap=new Map}reset(){this._cacheMap.clear(),this._cache.clear()}has(t){return this._cache.has(t)}get(t){const e=this._cache.get(t);return e||J(`[Assets] Asset id ${t} was not found in the Cache`),e}set(t,e){const i=gt(t);let r;for(let h=0;h{n.set(h,e)});const a=[...n.keys()],o={cacheKeys:a,keys:i};i.forEach(h=>{this._cacheMap.set(h,o)}),a.forEach(h=>{const c=r?r[h]:e;this._cache.has(h)&&this._cache.get(h)!==c&&J("[Cache] already has key:",h),this._cache.set(h,n.get(h))})}remove(t){if(!this._cacheMap.has(t)){J(`[Assets] Asset id ${t} was not found in the Cache`);return}const e=this._cacheMap.get(t);e.cacheKeys.forEach(r=>{this._cache.delete(r)}),e.keys.forEach(r=>{this._cacheMap.delete(r)})}get parsers(){return this._parsers}}const $=new oo,Ds=[];nt.handleByList(P.TextureSource,Ds);function sn(s={}){const t=s&&s.resource,e=t?s.resource:s,i=t?s:{resource:s};for(let r=0;r{$.has(i)&&$.remove(i)}),t||$.set(i,n),n}function lo(s,t=!1){return typeof s=="string"?$.get(s):s instanceof Ct?new G({source:s}):ho(s,t)}G.from=lo;Ct.from=sn;nt.add(qr,Kr,Zr,$e,ie,Qr,ri);var kt=(s=>(s[s.Low=0]="Low",s[s.Normal=1]="Normal",s[s.High=2]="High",s))(kt||{});function pt(s){if(typeof s!="string")throw new TypeError(`Path must be a string. Received ${JSON.stringify(s)}`)}function de(s){return s.split("?")[0].split("#")[0]}function co(s){return s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function uo(s,t,e){return s.replace(new RegExp(co(t),"g"),e)}function fo(s,t){let e="",i=0,r=-1,n=0,a=-1;for(let o=0;o<=s.length;++o){if(o2){const h=e.lastIndexOf("/");if(h!==e.length-1){h===-1?(e="",i=0):(e=e.slice(0,h),i=e.length-1-e.lastIndexOf("/")),r=o,n=0;continue}}else if(e.length===2||e.length===1){e="",i=0,r=o,n=0;continue}}}else e.length>0?e+=`/${s.slice(r+1,o)}`:e=s.slice(r+1,o),i=o-r-1;r=o,n=0}else a===46&&n!==-1?++n:n=-1}return e}const lt={toPosix(s){return uo(s,"\\","/")},isUrl(s){return/^https?:/.test(this.toPosix(s))},isDataUrl(s){return/^data:([a-z]+\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s<>]*?)$/i.test(s)},isBlobUrl(s){return s.startsWith("blob:")},hasProtocol(s){return/^[^/:]+:/.test(this.toPosix(s))},getProtocol(s){pt(s),s=this.toPosix(s);const t=/^file:\/\/\//.exec(s);if(t)return t[0];const e=/^[^/:]+:\/{0,2}/.exec(s);return e?e[0]:""},toAbsolute(s,t,e){if(pt(s),this.isDataUrl(s)||this.isBlobUrl(s))return s;const i=de(this.toPosix(t??j.get().getBaseUrl())),r=de(this.toPosix(e??this.rootname(i)));return s=this.toPosix(s),s.startsWith("/")?lt.join(r,s.slice(1)):this.isAbsolute(s)?s:this.join(i,s)},normalize(s){if(pt(s),s.length===0)return".";if(this.isDataUrl(s)||this.isBlobUrl(s))return s;s=this.toPosix(s);let t="";const e=s.startsWith("/");this.hasProtocol(s)&&(t=this.rootname(s),s=s.slice(t.length));const i=s.endsWith("/");return s=fo(s),s.length>0&&i&&(s+="/"),e?`/${s}`:t+s},isAbsolute(s){return pt(s),s=this.toPosix(s),this.hasProtocol(s)?!0:s.startsWith("/")},join(...s){if(s.length===0)return".";let t;for(let e=0;e0)if(t===void 0)t=i;else{const r=s[e-1]??"";this.joinExtensions.includes(this.extname(r).toLowerCase())?t+=`/../${i}`:t+=`/${i}`}}return t===void 0?".":this.normalize(t)},dirname(s){if(pt(s),s.length===0)return".";s=this.toPosix(s);let t=s.charCodeAt(0);const e=t===47;let i=-1,r=!0;const n=this.getProtocol(s),a=s;s=s.slice(n.length);for(let o=s.length-1;o>=1;--o)if(t=s.charCodeAt(o),t===47){if(!r){i=o;break}}else r=!1;return i===-1?e?"/":this.isUrl(a)?n+s:n:e&&i===1?"//":n+s.slice(0,i)},rootname(s){pt(s),s=this.toPosix(s);let t="";if(s.startsWith("/")?t="/":t=this.getProtocol(s),this.isUrl(s)){const e=s.indexOf("/",t.length);e!==-1?t=s.slice(0,e):t=s,t.endsWith("/")||(t+="/")}return t},basename(s,t){pt(s),t&&pt(t),s=de(this.toPosix(s));let e=0,i=-1,r=!0,n;if(t!==void 0&&t.length>0&&t.length<=s.length){if(t.length===s.length&&t===s)return"";let a=t.length-1,o=-1;for(n=s.length-1;n>=0;--n){const h=s.charCodeAt(n);if(h===47){if(!r){e=n+1;break}}else o===-1&&(r=!1,o=n+1),a>=0&&(h===t.charCodeAt(a)?--a===-1&&(i=n):(a=-1,i=o))}return e===i?i=o:i===-1&&(i=s.length),s.slice(e,i)}for(n=s.length-1;n>=0;--n)if(s.charCodeAt(n)===47){if(!r){e=n+1;break}}else i===-1&&(r=!1,i=n+1);return i===-1?"":s.slice(e,i)},extname(s){pt(s),s=de(this.toPosix(s));let t=-1,e=0,i=-1,r=!0,n=0;for(let a=s.length-1;a>=0;--a){const o=s.charCodeAt(a);if(o===47){if(!r){e=a+1;break}continue}i===-1&&(r=!1,i=a+1),o===46?t===-1?t=a:n!==1&&(n=1):t!==-1&&(n=-1)}return t===-1||i===-1||n===0||n===1&&t===i-1&&t===e+1?"":s.slice(t,i)},parse(s){pt(s);const t={root:"",dir:"",base:"",ext:"",name:""};if(s.length===0)return t;s=de(this.toPosix(s));let e=s.charCodeAt(0);const i=this.isAbsolute(s);let r;t.root=this.rootname(s),i||this.hasProtocol(s)?r=1:r=0;let n=-1,a=0,o=-1,h=!0,c=s.length-1,l=0;for(;c>=r;--c){if(e=s.charCodeAt(c),e===47){if(!h){a=c+1;break}continue}o===-1&&(h=!1,o=c+1),e===46?n===-1?n=c:l!==1&&(l=1):n!==-1&&(l=-1)}return n===-1||o===-1||l===0||l===1&&n===o-1&&n===a+1?o!==-1&&(a===0&&i?t.base=t.name=s.slice(1,o):t.base=t.name=s.slice(a,o)):(a===0&&i?(t.name=s.slice(1,n),t.base=s.slice(1,o)):(t.name=s.slice(a,n),t.base=s.slice(a,o)),t.ext=s.slice(n,o)),t.dir=this.dirname(s),t},sep:"/",delimiter:":",joinExtensions:[".html"]};function rn(s,t,e,i,r){const n=t[e];for(let a=0;a{const a=n.substring(1,n.length-1).split(",");r.push(a)}),rn(s,r,0,e,i)}else i.push(s);return i}const Ke=s=>!Array.isArray(s);class re{constructor(){this._defaultBundleIdentifierOptions={connector:"-",createBundleAssetId:(t,e)=>`${t}${this._bundleIdConnector}${e}`,extractAssetIdFromBundle:(t,e)=>e.replace(`${t}${this._bundleIdConnector}`,"")},this._bundleIdConnector=this._defaultBundleIdentifierOptions.connector,this._createBundleAssetId=this._defaultBundleIdentifierOptions.createBundleAssetId,this._extractAssetIdFromBundle=this._defaultBundleIdentifierOptions.extractAssetIdFromBundle,this._assetMap={},this._preferredOrder=[],this._parsers=[],this._resolverHash={},this._bundles={}}setBundleIdentifier(t){if(this._bundleIdConnector=t.connector??this._bundleIdConnector,this._createBundleAssetId=t.createBundleAssetId??this._createBundleAssetId,this._extractAssetIdFromBundle=t.extractAssetIdFromBundle??this._extractAssetIdFromBundle,this._extractAssetIdFromBundle("foo",this._createBundleAssetId("foo","bar"))!=="bar")throw new Error("[Resolver] GenerateBundleAssetId are not working correctly")}prefer(...t){t.forEach(e=>{this._preferredOrder.push(e),e.priority||(e.priority=Object.keys(e.params))}),this._resolverHash={}}set basePath(t){this._basePath=t}get basePath(){return this._basePath}set rootPath(t){this._rootPath=t}get rootPath(){return this._rootPath}get parsers(){return this._parsers}reset(){this.setBundleIdentifier(this._defaultBundleIdentifierOptions),this._assetMap={},this._preferredOrder=[],this._resolverHash={},this._rootPath=null,this._basePath=null,this._manifest=null,this._bundles={},this._defaultSearchParams=null}setDefaultSearchParams(t){if(typeof t=="string")this._defaultSearchParams=t;else{const e=t;this._defaultSearchParams=Object.keys(e).map(i=>`${encodeURIComponent(i)}=${encodeURIComponent(e[i])}`).join("&")}}getAlias(t){const{alias:e,src:i}=t;return gt(e||i,n=>typeof n=="string"?n:Array.isArray(n)?n.map(a=>(a==null?void 0:a.src)??a):n!=null&&n.src?n.src:n,!0)}addManifest(t){this._manifest&&J("[Resolver] Manifest already exists, this will be overwritten"),this._manifest=t,t.bundles.forEach(e=>{this.addBundle(e.name,e.assets)})}addBundle(t,e){const i=[];let r=e;Array.isArray(e)||(r=Object.entries(e).map(([n,a])=>typeof a=="string"||Array.isArray(a)?{alias:n,src:a}:{alias:n,...a})),r.forEach(n=>{const a=n.src,o=n.alias;let h;if(typeof o=="string"){const c=this._createBundleAssetId(t,o);i.push(c),h=[o,c]}else{const c=o.map(l=>this._createBundleAssetId(t,l));i.push(...c),h=[...o,...c]}this.add({...n,alias:h,src:a})}),this._bundles[t]=i}add(t){const e=[];Array.isArray(t)?e.push(...t):e.push(t);let i;i=n=>{this.hasKey(n)&&J(`[Resolver] already has key: ${n} overwriting`)},gt(e).forEach(n=>{const{src:a}=n;let{data:o,format:h,loadParser:c}=n;const l=gt(a).map(f=>typeof f=="string"?po(f):Array.isArray(f)?f:[f]),u=this.getAlias(n);Array.isArray(u)?u.forEach(i):i(u);const d=[];l.forEach(f=>{f.forEach(p=>{let m={};if(typeof p!="object"){m.src=p;for(let g=0;g{this._assetMap[f]=d})})}resolveBundle(t){const e=Ke(t);t=gt(t);const i={};return t.forEach(r=>{const n=this._bundles[r];if(n){const a=this.resolve(n),o={};for(const h in a){const c=a[h];o[this._extractAssetIdFromBundle(r,h)]=c}i[r]=o}}),e?i[t[0]]:i}resolveUrl(t){const e=this.resolve(t);if(typeof t!="string"){const i={};for(const r in e)i[r]=e[r].src;return i}return e.src}resolve(t){const e=Ke(t);t=gt(t);const i={};return t.forEach(r=>{if(!this._resolverHash[r])if(this._assetMap[r]){let n=this._assetMap[r];const a=this._getPreferredOrder(n);a==null||a.priority.forEach(o=>{a.params[o].forEach(h=>{const c=n.filter(l=>l[o]?l[o]===h:!1);c.length&&(n=c)})}),this._resolverHash[r]=n[0]}else this._resolverHash[r]=this._buildResolvedAsset({alias:[r],src:r},{});i[r]=this._resolverHash[r]}),e?i[t[0]]:i}hasKey(t){return!!this._assetMap[t]}hasBundle(t){return!!this._bundles[t]}_getPreferredOrder(t){for(let e=0;en.params.format.includes(i.format));if(r)return r}return this._preferredOrder[0]}_appendDefaultSearchParams(t){if(!this._defaultSearchParams)return t;const e=/\?/.test(t)?"&":"?";return`${t}${e}${this._defaultSearchParams}`}_buildResolvedAsset(t,e){const{aliases:i,data:r,loadParser:n,format:a}=e;return(this._basePath||this._rootPath)&&(t.src=lt.toAbsolute(t.src,this._basePath,this._rootPath)),t.alias=i??t.alias??[t.src],t.src=this._appendDefaultSearchParams(t.src),t.data={...r||{},...t.data},t.loadParser=n??t.loadParser,t.format=a??t.format??go(t.src),t}}re.RETINA_PREFIX=/@([0-9\.]+)x/;function go(s){return s.split(".").pop().split("?").shift().split("#").shift()}const Us=(s,t)=>{const e=t.split("?")[1];return e&&(s+=`?${e}`),s},nn=class xe{constructor(t,e){this.linkedSheets=[],this._texture=t instanceof G?t:null,this.textureSource=t.source,this.textures={},this.animations={},this.data=e;const i=parseFloat(e.meta.scale);i?(this.resolution=i,t.source.resolution=this.resolution):this.resolution=t.source._resolution,this._frames=this.data.frames,this._frameKeys=Object.keys(this._frames),this._batchIndex=0,this._callback=null}parse(){return new Promise(t=>{this._callback=t,this._batchIndex=0,this._frameKeys.length<=xe.BATCH_SIZE?(this._processFrames(0),this._processAnimations(),this._parseComplete()):this._nextBatch()})}_processFrames(t){let e=t;const i=xe.BATCH_SIZE;for(;e-t{this._batchIndex*xe.BATCH_SIZE{i[r]=t}),Object.keys(t.textures).forEach(r=>{i[r]=t.textures[r]}),!e){const r=lt.dirname(s[0]);t.linkedSheets.forEach((n,a)=>{const o=an([`${r}/${t.data.meta.related_multi_packs[a]}`],n,!0);Object.assign(i,o)})}return i}const xo={extension:P.Asset,cache:{test:s=>s instanceof Ni,getCacheableAssets:(s,t)=>an(s,t,!1)},resolver:{extension:{type:P.ResolveParser,name:"resolveSpritesheet"},test:s=>{const e=s.split("?")[0].split("."),i=e.pop(),r=e.pop();return i==="json"&&mo.includes(r)},parse:s=>{var e;const t=s.split(".");return{resolution:parseFloat(((e=re.RETINA_PREFIX.exec(s))==null?void 0:e[1])??"1"),format:t[t.length-2],src:s}}},loader:{name:"spritesheetLoader",extension:{type:P.LoadParser,priority:kt.Normal,name:"spritesheetLoader"},async testParse(s,t){return lt.extname(t.src).toLowerCase()===".json"&&!!s.frames},async parse(s,t,e){var c,l;const{texture:i,imageFilename:r}=(t==null?void 0:t.data)??{};let n=lt.dirname(t.src);n&&n.lastIndexOf("/")!==n.length-1&&(n+="/");let a;if(i instanceof G)a=i;else{const u=Us(n+(r??s.meta.image),t.src);a=(await e.load([u]))[u]}const o=new Ni(a.source,s);await o.parse();const h=(c=s==null?void 0:s.meta)==null?void 0:c.related_multi_packs;if(Array.isArray(h)){const u=[];for(const f of h){if(typeof f!="string")continue;let p=n+f;(l=t.data)!=null&&l.ignoreMultiPack||(p=Us(p,t.src),u.push(e.load({src:p,data:{ignoreMultiPack:!0}})))}const d=await Promise.all(u);o.linkedSheets=d,d.forEach(f=>{f.linkedSheets=[o].concat(o.linkedSheets.filter(p=>p!==f))})}return o},async unload(s,t,e){await e.unload(s.textureSource._sourceOrigin),s.destroy(!1)}}};nt.add(xo);const ys=Object.create(null),Vi=Object.create(null);function ai(s,t){let e=Vi[s];return e===void 0&&(ys[t]===void 0&&(ys[t]=1),Vi[s]=e=ys[t]++),e}let Nt;function on(){return(!Nt||Nt!=null&&Nt.isContextLost())&&(Nt=j.get().createCanvas().getContext("webgl",{})),Nt}let Oe;function yo(){if(!Oe){Oe="mediump";const s=on();s&&s.getShaderPrecisionFormat&&(Oe=s.getShaderPrecisionFormat(s.FRAGMENT_SHADER,s.HIGH_FLOAT).precision?"highp":"mediump")}return Oe}function _o(s,t,e){return t?s:e?(s=s.replace("out vec4 finalColor;",""),` +Deprecated since v${s}`),console.warn(i))),Ti[t]=!0}const Ir=()=>{};function Mi(s){return s+=s===0?1:0,--s,s|=s>>>1,s|=s>>>2,s|=s>>>4,s|=s>>>8,s|=s>>>16,s+1}function Pi(s){return!(s&s-1)&&!!s}function ka(s){const t={};for(const e in s)s[e]!==void 0&&(t[e]=s[e]);return t}const ki=Object.create(null);function Ba(s){const t=ki[s];return t===void 0&&(ki[s]=tt("resource")),t}const Fr=class Rr extends ot{constructor(t={}){super(),this._resourceType="textureSampler",this._touched=0,this._maxAnisotropy=1,this.destroyed=!1,t={...Rr.defaultOptions,...t},this.addressMode=t.addressMode,this.addressModeU=t.addressModeU??this.addressModeU,this.addressModeV=t.addressModeV??this.addressModeV,this.addressModeW=t.addressModeW??this.addressModeW,this.scaleMode=t.scaleMode,this.magFilter=t.magFilter??this.magFilter,this.minFilter=t.minFilter??this.minFilter,this.mipmapFilter=t.mipmapFilter??this.mipmapFilter,this.lodMinClamp=t.lodMinClamp,this.lodMaxClamp=t.lodMaxClamp,this.compare=t.compare,this.maxAnisotropy=t.maxAnisotropy??1}set addressMode(t){this.addressModeU=t,this.addressModeV=t,this.addressModeW=t}get addressMode(){return this.addressModeU}set wrapMode(t){O(W,"TextureStyle.wrapMode is now TextureStyle.addressMode"),this.addressMode=t}get wrapMode(){return this.addressMode}set scaleMode(t){this.magFilter=t,this.minFilter=t,this.mipmapFilter=t}get scaleMode(){return this.magFilter}set maxAnisotropy(t){this._maxAnisotropy=Math.min(t,16),this._maxAnisotropy>1&&(this.scaleMode="linear")}get maxAnisotropy(){return this._maxAnisotropy}get _resourceId(){return this._sharedResourceId||this._generateResourceId()}update(){this.emit("change",this),this._sharedResourceId=null}_generateResourceId(){const t=`${this.addressModeU}-${this.addressModeV}-${this.addressModeW}-${this.magFilter}-${this.minFilter}-${this.mipmapFilter}-${this.lodMinClamp}-${this.lodMaxClamp}-${this.compare}-${this._maxAnisotropy}`;return this._sharedResourceId=Ba(t),this._resourceId}destroy(){this.destroyed=!0,this.emit("destroy",this),this.emit("change",this),this.removeAllListeners()}};Fr.defaultOptions={addressMode:"clamp-to-edge",scaleMode:"linear"};let Ea=Fr;const Gr=class Lr extends ot{constructor(t={}){super(),this.options=t,this.uid=tt("textureSource"),this._resourceType="textureSource",this._resourceId=tt("resource"),this.uploadMethodId="unknown",this._resolution=1,this.pixelWidth=1,this.pixelHeight=1,this.width=1,this.height=1,this.sampleCount=1,this.mipLevelCount=1,this.autoGenerateMipmaps=!1,this.format="rgba8unorm",this.dimension="2d",this.antialias=!1,this._touched=0,this._batchTick=-1,this._textureBindLocation=-1,t={...Lr.defaultOptions,...t},this.label=t.label??"",this.resource=t.resource,this.autoGarbageCollect=t.autoGarbageCollect,this._resolution=t.resolution,t.width?this.pixelWidth=t.width*this._resolution:this.pixelWidth=this.resource?this.resourceWidth??1:1,t.height?this.pixelHeight=t.height*this._resolution:this.pixelHeight=this.resource?this.resourceHeight??1:1,this.width=this.pixelWidth/this._resolution,this.height=this.pixelHeight/this._resolution,this.format=t.format,this.dimension=t.dimensions,this.mipLevelCount=t.mipLevelCount,this.autoGenerateMipmaps=t.autoGenerateMipmaps,this.sampleCount=t.sampleCount,this.antialias=t.antialias,this.alphaMode=t.alphaMode,this.style=new Ea(ka(t)),this.destroyed=!1,this._refreshPOT()}get source(){return this}get style(){return this._style}set style(t){var e,i;this.style!==t&&((e=this._style)==null||e.off("change",this._onStyleChange,this),this._style=t,(i=this._style)==null||i.on("change",this._onStyleChange,this),this._onStyleChange())}get addressMode(){return this._style.addressMode}set addressMode(t){this._style.addressMode=t}get repeatMode(){return this._style.addressMode}set repeatMode(t){this._style.addressMode=t}get magFilter(){return this._style.magFilter}set magFilter(t){this._style.magFilter=t}get minFilter(){return this._style.minFilter}set minFilter(t){this._style.minFilter=t}get mipmapFilter(){return this._style.mipmapFilter}set mipmapFilter(t){this._style.mipmapFilter=t}get lodMinClamp(){return this._style.lodMinClamp}set lodMinClamp(t){this._style.lodMinClamp=t}get lodMaxClamp(){return this._style.lodMaxClamp}set lodMaxClamp(t){this._style.lodMaxClamp=t}_onStyleChange(){this.emit("styleChange",this)}update(){if(this.resource){const t=this._resolution;if(this.resize(this.resourceWidth/t,this.resourceHeight/t))return}this.emit("update",this)}destroy(){this.destroyed=!0,this.emit("destroy",this),this.emit("change",this),this._style&&(this._style.destroy(),this._style=null),this.uploadMethodId=null,this.resource=null,this.removeAllListeners()}unload(){this._resourceId=tt("resource"),this.emit("change",this),this.emit("unload",this)}get resourceWidth(){const{resource:t}=this;return t.naturalWidth||t.videoWidth||t.displayWidth||t.width}get resourceHeight(){const{resource:t}=this;return t.naturalHeight||t.videoHeight||t.displayHeight||t.height}get resolution(){return this._resolution}set resolution(t){this._resolution!==t&&(this._resolution=t,this.width=this.pixelWidth/t,this.height=this.pixelHeight/t)}resize(t,e,i){i=i||this._resolution,t=t||this.width,e=e||this.height;const r=Math.round(t*i),n=Math.round(e*i);return this.width=r/i,this.height=n/i,this._resolution=i,this.pixelWidth===r&&this.pixelHeight===n?!1:(this._refreshPOT(),this.pixelWidth=r,this.pixelHeight=n,this.emit("resize",this),this._resourceId=tt("resource"),this.emit("change",this),!0)}updateMipmaps(){this.autoGenerateMipmaps&&this.mipLevelCount>1&&this.emit("updateMipmaps",this)}set wrapMode(t){this._style.wrapMode=t}get wrapMode(){return this._style.wrapMode}set scaleMode(t){this._style.scaleMode=t}get scaleMode(){return this._style.scaleMode}_refreshPOT(){this.isPowerOfTwo=Pi(this.pixelWidth)&&Pi(this.pixelHeight)}static test(t){throw new Error("Unimplemented")}};Gr.defaultOptions={resolution:1,format:"bgra8unorm",alphaMode:"premultiply-alpha-on-upload",dimensions:"2d",mipLevelCount:1,autoGenerateMipmaps:!1,sampleCount:1,antialias:!1,autoGarbageCollect:!1};let Tt=Gr;class ri extends Tt{constructor(t){const e=t.resource||new Float32Array(t.width*t.height*4);let i=t.format;i||(e instanceof Float32Array?i="rgba32float":e instanceof Int32Array||e instanceof Uint32Array?i="rgba32uint":e instanceof Int16Array||e instanceof Uint16Array?i="rgba16uint":(e instanceof Int8Array,i="bgra8unorm")),super({...t,resource:e,format:i}),this.uploadMethodId="buffer"}static test(t){return t instanceof Int8Array||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array}}ri.extension=P.TextureSource;const Bi=new D;class Ia{constructor(t,e){this.mapCoord=new D,this.uClampFrame=new Float32Array(4),this.uClampOffset=new Float32Array(2),this._textureID=-1,this._updateID=0,this.clampOffset=0,typeof e>"u"?this.clampMargin=t.width<10?0:.5:this.clampMargin=e,this.isSimple=!1,this.texture=t}get texture(){return this._texture}set texture(t){var e;this.texture!==t&&((e=this._texture)==null||e.removeListener("update",this.update,this),this._texture=t,this._texture.addListener("update",this.update,this),this.update())}multiplyUvs(t,e){e===void 0&&(e=t);const i=this.mapCoord;for(let r=0;rthis.maxX||this.minY>this.maxY}get rectangle(){this._rectangle||(this._rectangle=new U);const t=this._rectangle;return this.minX>this.maxX||this.minY>this.maxY?(t.x=0,t.y=0,t.width=0,t.height=0):t.copyFromBounds(this),t}clear(){return this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.matrix=Ei,this}set(t,e,i,r){this.minX=t,this.minY=e,this.maxX=i,this.maxY=r}addFrame(t,e,i,r,n){n||(n=this.matrix);const a=n.a,o=n.b,h=n.c,c=n.d,l=n.tx,u=n.ty;let d=this.minX,f=this.minY,p=this.maxX,m=this.maxY,g=a*t+h*e+l,x=o*t+c*e+u;gp&&(p=g),x>m&&(m=x),g=a*i+h*e+l,x=o*i+c*e+u,gp&&(p=g),x>m&&(m=x),g=a*t+h*r+l,x=o*t+c*r+u,gp&&(p=g),x>m&&(m=x),g=a*i+h*r+l,x=o*i+c*r+u,gp&&(p=g),x>m&&(m=x),this.minX=d,this.minY=f,this.maxX=p,this.maxY=m}addRect(t,e){this.addFrame(t.x,t.y,t.x+t.width,t.y+t.height,e)}addBounds(t,e){this.addFrame(t.minX,t.minY,t.maxX,t.maxY,e)}addBoundsMask(t){this.minX=this.minX>t.minX?this.minX:t.minX,this.minY=this.minY>t.minY?this.minY:t.minY,this.maxX=this.maxXthis.maxX?d:this.maxX,this.maxY=f>this.maxY?f:this.maxY,d=a*e+h*n+l,f=o*e+c*n+u,this.minX=dthis.maxX?d:this.maxX,this.maxY=f>this.maxY?f:this.maxY,d=a*r+h*n+l,f=o*r+c*n+u,this.minX=dthis.maxX?d:this.maxX,this.maxY=f>this.maxY?f:this.maxY}fit(t){return this.minXt.right&&(this.maxX=t.right),this.minYt.bottom&&(this.maxY=t.bottom),this}fitBounds(t,e,i,r){return this.minXe&&(this.maxX=e),this.minYr&&(this.maxY=r),this}pad(t,e=t){return this.minX-=t,this.maxX+=t,this.minY-=e,this.maxY+=e,this}ceil(){return this.minX=Math.floor(this.minX),this.minY=Math.floor(this.minY),this.maxX=Math.ceil(this.maxX),this.maxY=Math.ceil(this.maxY),this}clone(){return new bt(this.minX,this.minY,this.maxX,this.maxY)}scale(t,e=t){return this.minX*=t,this.minY*=e,this.maxX*=t,this.maxY*=e,this}get x(){return this.minX}set x(t){const e=this.maxX-this.minX;this.minX=t,this.maxX=t+e}get y(){return this.minY}set y(t){const e=this.maxY-this.minY;this.minY=t,this.maxY=t+e}get width(){return this.maxX-this.minX}set width(t){this.maxX=this.minX+t}get height(){return this.maxY-this.minY}set height(t){this.maxY=this.minY+t}get left(){return this.minX}get right(){return this.maxX}get top(){return this.minY}get bottom(){return this.maxY}get isPositive(){return this.maxX-this.minX>0&&this.maxY-this.minY>0}get isValid(){return this.minX+this.minY!==1/0}addVertexData(t,e,i,r){let n=this.minX,a=this.minY,o=this.maxX,h=this.maxY;r||(r=this.matrix);const c=r.a,l=r.b,u=r.c,d=r.d,f=r.tx,p=r.ty;for(let m=e;mo?y:o,h=_>h?_:h}this.minX=n,this.minY=a,this.maxX=o,this.maxY=h}containsPoint(t,e){return this.minX<=t&&this.minY<=e&&this.maxX>=t&&this.maxY>=e}toString(){return`[pixi.js:Bounds minX=${this.minX} minY=${this.minY} maxX=${this.maxX} maxY=${this.maxY} width=${this.width} height=${this.height}]`}}var Ra={grad:.9,turn:360,rad:360/(2*Math.PI)},vt=function(s){return typeof s=="string"?s.length>0:typeof s=="number"},st=function(s,t,e){return t===void 0&&(t=0),e===void 0&&(e=Math.pow(10,t)),Math.round(e*s)/e+0},ft=function(s,t,e){return t===void 0&&(t=0),e===void 0&&(e=1),s>e?e:s>t?s:t},Or=function(s){return(s=isFinite(s)?s%360:0)>0?s:s+360},Ii=function(s){return{r:ft(s.r,0,255),g:ft(s.g,0,255),b:ft(s.b,0,255),a:ft(s.a)}},ls=function(s){return{r:st(s.r),g:st(s.g),b:st(s.b),a:st(s.a,3)}},Ga=/^#([0-9a-f]{3,8})$/i,Oe=function(s){var t=s.toString(16);return t.length<2?"0"+t:t},Wr=function(s){var t=s.r,e=s.g,i=s.b,r=s.a,n=Math.max(t,e,i),a=n-Math.min(t,e,i),o=a?n===t?(e-i)/a:n===e?2+(i-t)/a:4+(t-e)/a:0;return{h:60*(o<0?o+6:o),s:n?a/n*100:0,v:n/255*100,a:r}},Dr=function(s){var t=s.h,e=s.s,i=s.v,r=s.a;t=t/360*6,e/=100,i/=100;var n=Math.floor(t),a=i*(1-e),o=i*(1-(t-n)*e),h=i*(1-(1-t+n)*e),c=n%6;return{r:255*[i,o,a,a,h,i][c],g:255*[h,i,i,o,a,a][c],b:255*[a,a,h,i,i,o][c],a:r}},Fi=function(s){return{h:Or(s.h),s:ft(s.s,0,100),l:ft(s.l,0,100),a:ft(s.a)}},Ri=function(s){return{h:st(s.h),s:st(s.s),l:st(s.l),a:st(s.a,3)}},Gi=function(s){return Dr((e=(t=s).s,{h:t.h,s:(e*=((i=t.l)<50?i:100-i)/100)>0?2*e/(i+e)*100:0,v:i+e,a:t.a}));var t,e,i},_e=function(s){return{h:(t=Wr(s)).h,s:(r=(200-(e=t.s))*(i=t.v)/100)>0&&r<200?e*i/100/(r<=100?r:200-r)*100:0,l:r/2,a:t.a};var t,e,i,r},La=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Oa=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Wa=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Da=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Ls={string:[[function(s){var t=Ga.exec(s);return t?(s=t[1]).length<=4?{r:parseInt(s[0]+s[0],16),g:parseInt(s[1]+s[1],16),b:parseInt(s[2]+s[2],16),a:s.length===4?st(parseInt(s[3]+s[3],16)/255,2):1}:s.length===6||s.length===8?{r:parseInt(s.substr(0,2),16),g:parseInt(s.substr(2,2),16),b:parseInt(s.substr(4,2),16),a:s.length===8?st(parseInt(s.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(s){var t=Wa.exec(s)||Da.exec(s);return t?t[2]!==t[4]||t[4]!==t[6]?null:Ii({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(s){var t=La.exec(s)||Oa.exec(s);if(!t)return null;var e,i,r=Fi({h:(e=t[1],i=t[2],i===void 0&&(i="deg"),Number(e)*(Ra[i]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return Gi(r)},"hsl"]],object:[[function(s){var t=s.r,e=s.g,i=s.b,r=s.a,n=r===void 0?1:r;return vt(t)&&vt(e)&&vt(i)?Ii({r:Number(t),g:Number(e),b:Number(i),a:Number(n)}):null},"rgb"],[function(s){var t=s.h,e=s.s,i=s.l,r=s.a,n=r===void 0?1:r;if(!vt(t)||!vt(e)||!vt(i))return null;var a=Fi({h:Number(t),s:Number(e),l:Number(i),a:Number(n)});return Gi(a)},"hsl"],[function(s){var t=s.h,e=s.s,i=s.v,r=s.a,n=r===void 0?1:r;if(!vt(t)||!vt(e)||!vt(i))return null;var a=function(o){return{h:Or(o.h),s:ft(o.s,0,100),v:ft(o.v,0,100),a:ft(o.a)}}({h:Number(t),s:Number(e),v:Number(i),a:Number(n)});return Dr(a)},"hsv"]]},Li=function(s,t){for(var e=0;e=.5},s.prototype.toHex=function(){return t=ls(this.rgba),e=t.r,i=t.g,r=t.b,a=(n=t.a)<1?Oe(st(255*n)):"","#"+Oe(e)+Oe(i)+Oe(r)+a;var t,e,i,r,n,a},s.prototype.toRgb=function(){return ls(this.rgba)},s.prototype.toRgbString=function(){return t=ls(this.rgba),e=t.r,i=t.g,r=t.b,(n=t.a)<1?"rgba("+e+", "+i+", "+r+", "+n+")":"rgb("+e+", "+i+", "+r+")";var t,e,i,r,n},s.prototype.toHsl=function(){return Ri(_e(this.rgba))},s.prototype.toHslString=function(){return t=Ri(_e(this.rgba)),e=t.h,i=t.s,r=t.l,(n=t.a)<1?"hsla("+e+", "+i+"%, "+r+"%, "+n+")":"hsl("+e+", "+i+"%, "+r+"%)";var t,e,i,r,n},s.prototype.toHsv=function(){return t=Wr(this.rgba),{h:st(t.h),s:st(t.s),v:st(t.v),a:st(t.a,3)};var t},s.prototype.invert=function(){return yt({r:255-(t=this.rgba).r,g:255-t.g,b:255-t.b,a:t.a});var t},s.prototype.saturate=function(t){return t===void 0&&(t=.1),yt(cs(this.rgba,t))},s.prototype.desaturate=function(t){return t===void 0&&(t=.1),yt(cs(this.rgba,-t))},s.prototype.grayscale=function(){return yt(cs(this.rgba,-1))},s.prototype.lighten=function(t){return t===void 0&&(t=.1),yt(Oi(this.rgba,t))},s.prototype.darken=function(t){return t===void 0&&(t=.1),yt(Oi(this.rgba,-t))},s.prototype.rotate=function(t){return t===void 0&&(t=15),this.hue(this.hue()+t)},s.prototype.alpha=function(t){return typeof t=="number"?yt({r:(e=this.rgba).r,g:e.g,b:e.b,a:t}):st(this.rgba.a,3);var e},s.prototype.hue=function(t){var e=_e(this.rgba);return typeof t=="number"?yt({h:t,s:e.s,l:e.l,a:e.a}):st(e.h)},s.prototype.isEqual=function(t){return this.toHex()===yt(t).toHex()},s}(),yt=function(s){return s instanceof Os?s:new Os(s)},Wi=[],za=function(s){s.forEach(function(t){Wi.indexOf(t)<0&&(t(Os,Ls),Wi.push(t))})};function Na(s,t){var e={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},i={};for(var r in e)i[e[r]]=r;var n={};s.prototype.toName=function(a){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var o,h,c=i[this.toHex()];if(c)return c;if(a!=null&&a.closest){var l=this.toRgb(),u=1/0,d="black";if(!n.length)for(var f in e)n[f]=new s(e[f]).toRgb();for(var p in e){var m=(o=l,h=n[p],Math.pow(o.r-h.r,2)+Math.pow(o.g-h.g,2)+Math.pow(o.b-h.b,2));mn===e[a]);if(t!==null&&e!==null){const n=Object.keys(t),a=Object.keys(e);return n.length!==a.length?!1:n.every(o=>t[o]===e[o])}return t===e}toRgba(){const[t,e,i,r]=this._components;return{r:t,g:e,b:i,a:r}}toRgb(){const[t,e,i]=this._components;return{r:t,g:e,b:i}}toRgbaString(){const[t,e,i]=this.toUint8RgbArray();return`rgba(${t},${e},${i},${this.alpha})`}toUint8RgbArray(t){const[e,i,r]=this._components;return this._arrayRgb||(this._arrayRgb=[]),t=t||this._arrayRgb,t[0]=Math.round(e*255),t[1]=Math.round(i*255),t[2]=Math.round(r*255),t}toArray(t){this._arrayRgba||(this._arrayRgba=[]),t=t||this._arrayRgba;const[e,i,r,n]=this._components;return t[0]=e,t[1]=i,t[2]=r,t[3]=n,t}toRgbArray(t){this._arrayRgb||(this._arrayRgb=[]),t=t||this._arrayRgb;const[e,i,r]=this._components;return t[0]=e,t[1]=i,t[2]=r,t}toNumber(){return this._int}toBgrNumber(){const[t,e,i]=this.toUint8RgbArray();return(i<<16)+(e<<8)+t}toLittleEndianNumber(){const t=this._int;return(t>>16)+(t&65280)+((t&255)<<16)}multiply(t){const[e,i,r,n]=me._temp.setValue(t)._components;return this._components[0]*=e,this._components[1]*=i,this._components[2]*=r,this._components[3]*=n,this._refreshInt(),this._value=null,this}premultiply(t,e=!0){return e&&(this._components[0]*=t,this._components[1]*=t,this._components[2]*=t),this._components[3]=t,this._refreshInt(),this._value=null,this}toPremultiplied(t,e=!0){if(t===1)return(255<<24)+this._int;if(t===0)return e?0:this._int;let i=this._int>>16&255,r=this._int>>8&255,n=this._int&255;return e&&(i=i*t+.5|0,r=r*t+.5|0,n=n*t+.5|0),(t*255<<24)+(i<<16)+(r<<8)+n}toHex(){const t=this._int.toString(16);return`#${"000000".substring(0,6-t.length)+t}`}toHexa(){const e=Math.round(this._components[3]*255).toString(16);return this.toHex()+"00".substring(0,2-e.length)+e}setAlpha(t){return this._components[3]=this._clamp(t),this}_normalize(t){let e,i,r,n;if((typeof t=="number"||t instanceof Number)&&t>=0&&t<=16777215){const a=t;e=(a>>16&255)/255,i=(a>>8&255)/255,r=(a&255)/255,n=1}else if((Array.isArray(t)||t instanceof Float32Array)&&t.length>=3&&t.length<=4)t=this._clamp(t),[e,i,r,n=1]=t;else if((t instanceof Uint8Array||t instanceof Uint8ClampedArray)&&t.length>=3&&t.length<=4)t=this._clamp(t,0,255),[e,i,r,n=255]=t,e/=255,i/=255,r/=255,n/=255;else if(typeof t=="string"||typeof t=="object"){if(typeof t=="string"){const o=me.HEX_PATTERN.exec(t);o&&(t=`#${o[2]}`)}const a=yt(t);a.isValid()&&({r:e,g:i,b:r,a:n}=a.rgba,e/=255,i/=255,r/=255)}if(e!==void 0)this._components[0]=e,this._components[1]=i,this._components[2]=r,this._components[3]=n,this._refreshInt();else throw new Error(`Unable to convert color ${t}`)}_refreshInt(){this._clamp(this._components);const[t,e,i]=this._components;this._int=(t*255<<16)+(e*255<<8)+(i*255|0)}_clamp(t,e=0,i=1){return typeof t=="number"?Math.min(Math.max(t,e),i):(t.forEach((r,n)=>{t[n]=Math.min(Math.max(r,e),i)}),t)}static isColorLike(t){return typeof t=="number"||typeof t=="string"||t instanceof Number||t instanceof me||Array.isArray(t)||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Float32Array||t.r!==void 0&&t.g!==void 0&&t.b!==void 0||t.r!==void 0&&t.g!==void 0&&t.b!==void 0&&t.a!==void 0||t.h!==void 0&&t.s!==void 0&&t.l!==void 0||t.h!==void 0&&t.s!==void 0&&t.l!==void 0&&t.a!==void 0||t.h!==void 0&&t.s!==void 0&&t.v!==void 0||t.h!==void 0&&t.s!==void 0&&t.v!==void 0&&t.a!==void 0}};Qt.shared=new Qt;Qt._temp=new Qt;Qt.HEX_PATTERN=/^(#|0x)?(([a-f0-9]{3}){1,2}([a-f0-9]{2})?)$/i;let Q=Qt;const Ha={cullArea:null,cullable:!1,cullableChildren:!0};class ni{constructor(t,e){this._pool=[],this._count=0,this._index=0,this._classType=t,e&&this.prepopulate(e)}prepopulate(t){for(let e=0;e0?e=this._pool[--this._index]:e=new this._classType,(i=e.init)==null||i.call(e,t),e}return(t){var e;(e=t.reset)==null||e.call(t),this._pool[this._index++]=t}get totalSize(){return this._count}get totalFree(){return this._index}get totalUsed(){return this._count-this._index}clear(){this._pool.length=0,this._index=0}}class Va{constructor(){this._poolsByClass=new Map}prepopulate(t,e){this.getPool(t).prepopulate(e)}get(t,e){return this.getPool(t).get(e)}return(t){this.getPool(t.constructor).return(t)}getPool(t){return this._poolsByClass.has(t)||this._poolsByClass.set(t,new ni(t)),this._poolsByClass.get(t)}stats(){const t={};return this._poolsByClass.forEach(e=>{const i=t[e._classType.name]?e._classType.name+e._classType.ID:e._classType.name;t[i]={free:e.totalFree,used:e.totalUsed,size:e.totalSize}}),t}}const At=new Va;function $a(s,t,e){const i=s.length;let r;if(t>=i||e===0)return;e=t+e>i?i-t:e;const n=i-e;for(r=t;r0&&i<=e){for(let a=e-1;a>=s;a--){const o=this.children[a];o&&(r.push(o),o.parent=null)}$a(this.children,s,e);const n=this.renderGroup||this.parentRenderGroup;n&&n.removeChildren(r);for(let a=0;a=this.children.length)throw new Error(`getChildAt: Index (${s}) does not exist.`);return this.children[s]},setChildIndex(s,t){if(t<0||t>=this.children.length)throw new Error(`The index ${t} supplied is out of bounds ${this.children.length}`);this.getChildIndex(s),this.addChildAt(s,t)},getChildIndex(s){const t=this.children.indexOf(s);if(t===-1)throw new Error("The supplied Container must be a child of the caller");return t},addChildAt(s,t){this.allowChildren||O(W,"addChildAt: Only Containers will be allowed to add children in v8.0.0");const{children:e}=this;if(t<0||t>e.length)throw new Error(`${s}addChildAt: The index ${t} supplied is out of bounds ${e.length}`);if(s.parent){const r=s.parent.children.indexOf(s);if(s.parent===this&&r===t)return s;r!==-1&&s.parent.children.splice(r,1)}t===e.length?e.push(s):e.splice(t,0,s),s.parent=this,s.didChange=!0,s.didViewUpdate=!1,s._updateFlags=15;const i=this.renderGroup||this.parentRenderGroup;return i&&i.addChild(s),this.sortableChildren&&(this.sortDirty=!0),this.emit("childAdded",s,this,t),s.emit("added",this),s},swapChildren(s,t){if(s===t)return;const e=this.getChildIndex(s),i=this.getChildIndex(t);this.children[e]=t,this.children[i]=s;const r=this.renderGroup||this.parentRenderGroup;r&&(r.structureDidChange=!0),this._didContainerChangeTick++},removeFromParent(){var s;(s=this.parent)==null||s.removeChild(this)},reparentChild(...s){return s.length===1?this.reparentChildAt(s[0],this.children.length):(s.forEach(t=>this.reparentChildAt(t,this.children.length)),s[0])},reparentChildAt(s,t){if(s.parent===this)return this.setChildIndex(s,t),s;const e=s.worldTransform.clone();s.removeFromParent(),this.addChildAt(s,t);const i=this.worldTransform.clone();return i.invert(),e.prepend(i),s.setFromMatrix(e),s}};class Di{constructor(){this.pipe="filter",this.priority=1}destroy(){for(let t=0;t{this.add({test:t.test,maskClass:t})}))}add(t){this._tests.push(t)}getMaskEffect(t){this._initialized||this.init();for(let e=0;ei.priority-r.priority);const e=this.renderGroup||this.parentRenderGroup;e&&(e.structureDidChange=!0),this._updateIsSimple()},removeEffect(s){const t=this.effects.indexOf(s);t!==-1&&(this.effects.splice(t,1),this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateIsSimple())},set mask(s){const t=this._maskEffect;(t==null?void 0:t.mask)!==s&&(t&&(this.removeEffect(t),Ws.returnMaskEffect(t),this._maskEffect=null),s!=null&&(this._maskEffect=Ws.getMaskEffect(s),this.addEffect(this._maskEffect)))},get mask(){var s;return(s=this._maskEffect)==null?void 0:s.mask},set filters(s){var n;!Array.isArray(s)&&s&&(s=[s]);const t=this._filterEffect||(this._filterEffect=new Di);s=s;const e=(s==null?void 0:s.length)>0,i=((n=t.filters)==null?void 0:n.length)>0,r=e!==i;s=Array.isArray(s)?s.slice(0):s,t.filters=Object.freeze(s),r&&(e?this.addEffect(t):(this.removeEffect(t),t.filters=s??null))},get filters(){var s;return(s=this._filterEffect)==null?void 0:s.filters},set filterArea(s){this._filterEffect||(this._filterEffect=new Di),this._filterEffect.filterArea=s},get filterArea(){var s;return(s=this._filterEffect)==null?void 0:s.filterArea}},qa={label:null,get name(){return O(W,"Container.name property has been removed, use Container.label instead"),this.label},set name(s){O(W,"Container.name property has been removed, use Container.label instead"),this.label=s},getChildByName(s,t=!1){return this.getChildByLabel(s,t)},getChildByLabel(s,t=!1){const e=this.children;for(let i=0;i-1&&this.renderGroupChildren.splice(e,1),t.renderGroupParent=null}addChild(t){if(this.structureDidChange=!0,t.parentRenderGroup=this,t.updateTick=-1,t.parent===this.root?t.relativeRenderGroupDepth=1:t.relativeRenderGroupDepth=t.parent.relativeRenderGroupDepth+1,t.didChange=!0,this.onChildUpdate(t),t.renderGroup){this.addRenderGroupChild(t.renderGroup);return}t._onRender&&this.addOnRender(t);const e=t.children;for(let i=0;i0}addOnRender(t){this._onRenderContainers.push(t)}removeOnRender(t){this._onRenderContainers.splice(this._onRenderContainers.indexOf(t),1)}runOnRender(){for(let t=0;tthis.addChild(r)),(i=t.parent)==null||i.addChild(this)}static mixin(t){Object.defineProperties(rt.prototype,Object.getOwnPropertyDescriptors(t))}set _didChangeId(t){this._didViewChangeTick=t>>12&4095,this._didContainerChangeTick=t&4095}get _didChangeId(){return this._didContainerChangeTick&4095|(this._didViewChangeTick&4095)<<12}addChild(...t){if(this.allowChildren||O(W,"addChild: Only Containers will be allowed to add children in v8.0.0"),t.length>1){for(let r=0;r1){for(let r=0;r-1&&(this._didViewChangeTick++,this.children.splice(i,1),this.renderGroup?this.renderGroup.removeChild(e):this.parentRenderGroup&&this.parentRenderGroup.removeChild(e),e.parent=null,this.emit("childRemoved",e,this,i),e.emit("removed",this)),e}_onUpdate(t){t&&t===this._skew&&this._updateSkew(),this._didContainerChangeTick++,!this.didChange&&(this.didChange=!0,this.parentRenderGroup&&this.parentRenderGroup.onChildUpdate(this))}set isRenderGroup(t){!!this.renderGroup!==t&&(t?this.enableRenderGroup():this.disableRenderGroup())}get isRenderGroup(){return!!this.renderGroup}enableRenderGroup(){if(this.renderGroup)return;const t=this.parentRenderGroup;t==null||t.removeChild(this),this.renderGroup=At.get(io,this),this.groupTransform=D.IDENTITY,t==null||t.addChild(this),this._updateIsSimple()}disableRenderGroup(){if(!this.renderGroup)return;const t=this.parentRenderGroup;t==null||t.removeChild(this),At.return(this.renderGroup),this.renderGroup=null,this.groupTransform=this.relativeGroupTransform,t==null||t.addChild(this),this._updateIsSimple()}_updateIsSimple(){this.isSimple=!this.renderGroup&&this.effects.length===0}get worldTransform(){return this._worldTransform||(this._worldTransform=new D),this.renderGroup?this._worldTransform.copyFrom(this.renderGroup.worldTransform):this.parentRenderGroup&&this._worldTransform.appendFrom(this.relativeGroupTransform,this.parentRenderGroup.worldTransform),this._worldTransform}get x(){return this._position.x}set x(t){this._position.x=t}get y(){return this._position.y}set y(t){this._position.y=t}get position(){return this._position}set position(t){this._position.copyFrom(t)}get rotation(){return this._rotation}set rotation(t){this._rotation!==t&&(this._rotation=t,this._onUpdate(this._skew))}get angle(){return this.rotation*Aa}set angle(t){this.rotation=t*Sa}get pivot(){return this._pivot===ps&&(this._pivot=new at(this,0,0)),this._pivot}set pivot(t){this._pivot===ps&&(this._pivot=new at(this,0,0)),typeof t=="number"?this._pivot.set(t):this._pivot.copyFrom(t)}get skew(){return this._skew===fs&&(this._skew=new at(this,0,0)),this._skew}set skew(t){this._skew===fs&&(this._skew=new at(this,0,0)),this._skew.copyFrom(t)}get scale(){return this._scale===gs&&(this._scale=new at(this,1,1)),this._scale}set scale(t){this._scale===gs&&(this._scale=new at(this,0,0)),typeof t=="number"?this._scale.set(t):this._scale.copyFrom(t)}get width(){return Math.abs(this.scale.x*this.getLocalBounds().width)}set width(t){const e=this.getLocalBounds().width;this._setWidth(t,e)}get height(){return Math.abs(this.scale.y*this.getLocalBounds().height)}set height(t){const e=this.getLocalBounds().height;this._setHeight(t,e)}getSize(t){t||(t={});const e=this.getLocalBounds();return t.width=Math.abs(this.scale.x*e.width),t.height=Math.abs(this.scale.y*e.height),t}setSize(t,e){const i=this.getLocalBounds();typeof t=="object"?(e=t.height??t.width,t=t.width):e??(e=t),t!==void 0&&this._setWidth(t,i.width),e!==void 0&&this._setHeight(e,i.height)}_updateSkew(){const t=this._rotation,e=this._skew;this._cx=Math.cos(t+e._y),this._sx=Math.sin(t+e._y),this._cy=-Math.sin(t-e._x),this._sy=Math.cos(t-e._x)}updateTransform(t){return this.position.set(typeof t.x=="number"?t.x:this.position.x,typeof t.y=="number"?t.y:this.position.y),this.scale.set(typeof t.scaleX=="number"?t.scaleX||1:this.scale.x,typeof t.scaleY=="number"?t.scaleY||1:this.scale.y),this.rotation=typeof t.rotation=="number"?t.rotation:this.rotation,this.skew.set(typeof t.skewX=="number"?t.skewX:this.skew.x,typeof t.skewY=="number"?t.skewY:this.skew.y),this.pivot.set(typeof t.pivotX=="number"?t.pivotX:this.pivot.x,typeof t.pivotY=="number"?t.pivotY:this.pivot.y),this}setFromMatrix(t){t.decompose(this)}updateLocalTransform(){const t=this._didContainerChangeTick;if(this._didLocalTransformChangeId===t)return;this._didLocalTransformChangeId=t;const e=this.localTransform,i=this._scale,r=this._pivot,n=this._position,a=i._x,o=i._y,h=r._x,c=r._y;e.a=this._cx*a,e.b=this._sx*a,e.c=this._cy*o,e.d=this._sy*o,e.tx=n._x-(h*e.a+c*e.c),e.ty=n._y-(h*e.b+c*e.d)}set alpha(t){t!==this.localAlpha&&(this.localAlpha=t,this._updateFlags|=zi,this._onUpdate())}get alpha(){return this.localAlpha}set tint(t){const i=Q.shared.setValue(t??16777215).toBgrNumber();i!==this.localColor&&(this.localColor=i,this._updateFlags|=zi,this._onUpdate())}get tint(){const t=this.localColor;return((t&255)<<16)+(t&65280)+(t>>16&255)}set blendMode(t){this.localBlendMode!==t&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=no,this.localBlendMode=t,this._onUpdate())}get blendMode(){return this.localBlendMode}get visible(){return!!(this.localDisplayStatus&2)}set visible(t){const e=t?2:0;(this.localDisplayStatus&2)!==e&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=ms,this.localDisplayStatus^=2,this._onUpdate())}get culled(){return!(this.localDisplayStatus&4)}set culled(t){const e=t?0:4;(this.localDisplayStatus&4)!==e&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=ms,this.localDisplayStatus^=4,this._onUpdate())}get renderable(){return!!(this.localDisplayStatus&1)}set renderable(t){const e=t?1:0;(this.localDisplayStatus&1)!==e&&(this._updateFlags|=ms,this.localDisplayStatus^=1,this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._onUpdate())}get isRenderable(){return this.localDisplayStatus===7&&this.groupAlpha>0}destroy(t=!1){var r;if(this.destroyed)return;this.destroyed=!0;const e=this.removeChildren(0,this.children.length);if(this.removeFromParent(),this.parent=null,this._maskEffect=null,this._filterEffect=null,this.effects=null,this._position=null,this._scale=null,this._pivot=null,this._skew=null,this.emit("destroyed",this),this.removeAllListeners(),typeof t=="boolean"?t:t==null?void 0:t.children)for(let n=0;n=e.minX&&i<=e.maxX&&r>=e.minY&&r<=e.maxY}destroy(t){super.destroy(t),this._bounds=null}}class lt extends Je{constructor(t=L.EMPTY){t instanceof L&&(t={texture:t});const{texture:e=L.EMPTY,anchor:i,roundPixels:r,width:n,height:a,...o}=t;super({label:"Sprite",...o}),this.renderPipeId="sprite",this.batched=!0,this._didSpriteUpdate=!1,this._sourceBounds={minX:0,maxX:1,minY:0,maxY:0},this._sourceBoundsDirty=!0,this._anchor=new at({_onUpdate:()=>{this.onViewUpdate()}}),i?this.anchor=i:e.defaultAnchor&&(this.anchor=e.defaultAnchor),this.texture=e,this.allowChildren=!1,this.roundPixels=r??!1,n!==void 0&&(this.width=n),a!==void 0&&(this.height=a)}static from(t,e=!1){return t instanceof L?new lt(t):new lt(L.from(t,e))}set texture(t){t||(t=L.EMPTY);const e=this._texture;e!==t&&(e&&e.dynamic&&e.off("update",this.onViewUpdate,this),t.dynamic&&t.on("update",this.onViewUpdate,this),this._texture=t,this._width&&this._setWidth(this._width,this._texture.orig.width),this._height&&this._setHeight(this._height,this._texture.orig.height),this.onViewUpdate())}get texture(){return this._texture}get bounds(){return this._boundsDirty&&(this._updateBounds(),this._boundsDirty=!1),this._bounds}get sourceBounds(){return this._sourceBoundsDirty&&(this._updateSourceBounds(),this._sourceBoundsDirty=!1),this._sourceBounds}containsPoint(t){const e=this.sourceBounds;return t.x>=e.maxX&&t.x<=e.minX&&t.y>=e.maxY&&t.y<=e.minY}addBounds(t){const e=this._texture.trim?this.sourceBounds:this.bounds;t.addFrame(e.minX,e.minY,e.maxX,e.maxY)}onViewUpdate(){if(this._didViewChangeTick++,this._didSpriteUpdate=!0,this._sourceBoundsDirty=this._boundsDirty=!0,this.didViewUpdate)return;this.didViewUpdate=!0;const t=this.renderGroup||this.parentRenderGroup;t&&t.onChildViewUpdate(this)}_updateBounds(){Fa(this._bounds,this._anchor,this._texture,0)}_updateSourceBounds(){const t=this._anchor,e=this._texture,i=this._sourceBounds,{width:r,height:n}=e.orig;i.maxX=-t._x*r,i.minX=i.maxX+r,i.maxY=-t._y*n,i.minY=i.maxY+n}destroy(t=!1){if(super.destroy(t),typeof t=="boolean"?t:t==null?void 0:t.texture){const i=typeof t=="boolean"?t:t==null?void 0:t.textureSource;this._texture.destroy(i)}this._texture=null,this._bounds=null,this._sourceBounds=null,this._anchor=null}get anchor(){return this._anchor}set anchor(t){typeof t=="number"?this._anchor.set(t):this._anchor.copyFrom(t)}get width(){return Math.abs(this.scale.x)*this._texture.orig.width}set width(t){this._setWidth(t,this._texture.orig.width),this._width=t}get height(){return Math.abs(this.scale.y)*this._texture.orig.height}set height(t){this._setHeight(t,this._texture.orig.height),this._height=t}getSize(t){return t||(t={}),t.width=Math.abs(this.scale.x)*this._texture.orig.width,t.height=Math.abs(this.scale.y)*this._texture.orig.height,t}setSize(t,e){typeof t=="object"?(e=t.height??t.width,t=t.width):e??(e=t),t!==void 0&&this._setWidth(t,this._texture.orig.width),e!==void 0&&this._setHeight(e,this._texture.orig.height)}}const ao=new bt;function Yr(s,t,e){const i=ao;s.measurable=!0,Ur(s,e,i),t.addBoundsMask(i),s.measurable=!1}function jr(s,t,e){const i=Jt.get();s.measurable=!0;const r=St.get().identity(),n=Xr(s,e,r);Nr(s,i,n),s.measurable=!1,t.addBoundsMask(i),St.return(r),Jt.return(i)}function Xr(s,t,e){return s?(s!==t&&(Xr(s.parent,t,e),s.updateLocalTransform(),e.append(s.localTransform)),e):(J("Mask bounds, renderable is not inside the root container"),e)}class qr{constructor(t){this.priority=0,this.pipe="alphaMask",t!=null&&t.mask&&this.init(t.mask)}init(t){this.mask=t,this.renderMaskToTexture=!(t instanceof lt),this.mask.renderable=this.renderMaskToTexture,this.mask.includeInBuild=!this.renderMaskToTexture,this.mask.measurable=!1}reset(){this.mask.measurable=!0,this.mask=null}addBounds(t,e){Yr(this.mask,t,e)}addLocalBounds(t,e){jr(this.mask,t,e)}containsPoint(t,e){const i=this.mask;return e(i,t)}destroy(){this.reset()}static test(t){return t instanceof lt}}qr.extension=P.MaskEffect;class Kr{constructor(t){this.priority=0,this.pipe="colorMask",t!=null&&t.mask&&this.init(t.mask)}init(t){this.mask=t}destroy(){}static test(t){return typeof t=="number"}}Kr.extension=P.MaskEffect;class Zr{constructor(t){this.priority=0,this.pipe="stencilMask",t!=null&&t.mask&&this.init(t.mask)}init(t){this.mask=t,this.mask.includeInBuild=!1,this.mask.measurable=!1}reset(){this.mask.measurable=!0,this.mask.includeInBuild=!0,this.mask=null}addBounds(t,e){Yr(this.mask,t,e)}addLocalBounds(t,e){jr(this.mask,t,e)}containsPoint(t,e){const i=this.mask;return e(i,t)}destroy(){this.reset()}static test(t){return t instanceof rt}}Zr.extension=P.MaskEffect;const oo={createCanvas:(s,t)=>{const e=document.createElement("canvas");return e.width=s,e.height=t,e},getCanvasRenderingContext2D:()=>CanvasRenderingContext2D,getWebGLRenderingContext:()=>WebGLRenderingContext,getNavigator:()=>navigator,getBaseUrl:()=>document.baseURI??window.location.href,getFontFaceSet:()=>document.fonts,fetch:(s,t)=>fetch(s,t),parseXML:s=>new DOMParser().parseFromString(s,"text/xml")};let Ni=oo;const q={get(){return Ni},set(s){Ni=s}};class Qr extends Tt{constructor(t){t.resource||(t.resource=q.get().createCanvas()),t.width||(t.width=t.resource.width,t.autoDensity||(t.width/=t.resolution)),t.height||(t.height=t.resource.height,t.autoDensity||(t.height/=t.resolution)),super(t),this.uploadMethodId="image",this.autoDensity=t.autoDensity;const e=t.resource;(this.pixelWidth!==e.width||this.pixelWidth!==e.height)&&this.resizeCanvas(),this.transparent=!!t.transparent}resizeCanvas(){this.autoDensity&&(this.resource.style.width=`${this.width}px`,this.resource.style.height=`${this.height}px`),(this.resource.width!==this.pixelWidth||this.resource.height!==this.pixelHeight)&&(this.resource.width=this.pixelWidth,this.resource.height=this.pixelHeight)}resize(t=this.width,e=this.height,i=this._resolution){const r=super.resize(t,e,i);return r&&this.resizeCanvas(),r}static test(t){return globalThis.HTMLCanvasElement&&t instanceof HTMLCanvasElement||globalThis.OffscreenCanvas&&t instanceof OffscreenCanvas}get context2D(){return this._context2D||(this._context2D=this.resource.getContext("2d"))}}Qr.extension=P.TextureSource;class re extends Tt{constructor(t){if(t.resource&&globalThis.HTMLImageElement&&t.resource instanceof HTMLImageElement){const e=q.get().createCanvas(t.resource.width,t.resource.height);e.getContext("2d").drawImage(t.resource,0,0,t.resource.width,t.resource.height),t.resource=e,J("ImageSource: Image element passed, converting to canvas. Use CanvasSource instead.")}super(t),this.uploadMethodId="image",this.autoGarbageCollect=!0}static test(t){return globalThis.HTMLImageElement&&t instanceof HTMLImageElement||typeof ImageBitmap<"u"&&t instanceof ImageBitmap||globalThis.VideoFrame&&t instanceof VideoFrame}}re.extension=P.TextureSource;var Ds=(s=>(s[s.INTERACTION=50]="INTERACTION",s[s.HIGH=25]="HIGH",s[s.NORMAL=0]="NORMAL",s[s.LOW=-25]="LOW",s[s.UTILITY=-50]="UTILITY",s))(Ds||{});class xs{constructor(t,e=null,i=0,r=!1){this.next=null,this.previous=null,this._destroyed=!1,this._fn=t,this._context=e,this.priority=i,this._once=r}match(t,e=null){return this._fn===t&&this._context===e}emit(t){this._fn&&(this._context?this._fn.call(this._context,t):this._fn(t));const e=this.next;return this._once&&this.destroy(!0),this._destroyed&&(this.next=null),e}connect(t){this.previous=t,t.next&&(t.next.previous=this),this.next=t.next,t.next=this}destroy(t=!1){this._destroyed=!0,this._fn=null,this._context=null,this.previous&&(this.previous.next=this.next),this.next&&(this.next.previous=this.previous);const e=this.next;return this.next=t?null:e,this.previous=null,e}}const Jr=class ht{constructor(){this.autoStart=!1,this.deltaTime=1,this.lastTime=-1,this.speed=1,this.started=!1,this._requestId=null,this._maxElapsedMS=100,this._minElapsedMS=0,this._protected=!1,this._lastFrame=-1,this._head=new xs(null,null,1/0),this.deltaMS=1/ht.targetFPMS,this.elapsedMS=1/ht.targetFPMS,this._tick=t=>{this._requestId=null,this.started&&(this.update(t),this.started&&this._requestId===null&&this._head.next&&(this._requestId=requestAnimationFrame(this._tick)))}}_requestIfNeeded(){this._requestId===null&&this._head.next&&(this.lastTime=performance.now(),this._lastFrame=this.lastTime,this._requestId=requestAnimationFrame(this._tick))}_cancelIfNeeded(){this._requestId!==null&&(cancelAnimationFrame(this._requestId),this._requestId=null)}_startIfPossible(){this.started?this._requestIfNeeded():this.autoStart&&this.start()}add(t,e,i=Ds.NORMAL){return this._addListener(new xs(t,e,i))}addOnce(t,e,i=Ds.NORMAL){return this._addListener(new xs(t,e,i,!0))}_addListener(t){let e=this._head.next,i=this._head;if(!e)t.connect(i);else{for(;e;){if(t.priority>e.priority){t.connect(i);break}i=e,e=e.next}t.previous||t.connect(i)}return this._startIfPossible(),this}remove(t,e){let i=this._head.next;for(;i;)i.match(t,e)?i=i.destroy():i=i.next;return this._head.next||this._cancelIfNeeded(),this}get count(){if(!this._head)return 0;let t=0,e=this._head;for(;e=e.next;)t++;return t}start(){this.started||(this.started=!0,this._requestIfNeeded())}stop(){this.started&&(this.started=!1,this._cancelIfNeeded())}destroy(){if(!this._protected){this.stop();let t=this._head.next;for(;t;)t=t.destroy(!0);this._head.destroy(),this._head=null}}update(t=performance.now()){let e;if(t>this.lastTime){if(e=this.elapsedMS=t-this.lastTime,e>this._maxElapsedMS&&(e=this._maxElapsedMS),e*=this.speed,this._minElapsedMS){const n=t-this._lastFrame|0;if(n{var a;const t=document.createElement("canvas").getContext("webgl");if(!t)return"premultiply-alpha-on-upload";const e=await new Promise(o=>{const h=document.createElement("video");h.onloadeddata=()=>o(h),h.onerror=()=>o(null),h.autoplay=!1,h.crossOrigin="anonymous",h.preload="auto",h.src="data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQJChYECGFOAZwEAAAAAAAHTEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHGTbuMU6uEElTDZ1OsggEXTbuMU6uEHFO7a1OsggG97AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmoCrXsYMPQkBNgIRMYXZmV0GETGF2ZkSJiEBEAAAAAAAAFlSua8yuAQAAAAAAAEPXgQFzxYgAAAAAAAAAAZyBACK1nIN1bmSIgQCGhVZfVlA5g4EBI+ODhAJiWgDglLCBArqBApqBAlPAgQFVsIRVuYEBElTDZ9Vzc9JjwItjxYgAAAAAAAAAAWfInEWjh0VOQ09ERVJEh49MYXZjIGxpYnZweC12cDlnyKJFo4hEVVJBVElPTkSHlDAwOjAwOjAwLjA0MDAwMDAwMAAAH0O2dcfngQCgwqGggQAAAIJJg0IAABAAFgA4JBwYSgAAICAAEb///4r+AAB1oZ2mm+6BAaWWgkmDQgAAEAAWADgkHBhKAAAgIABIQBxTu2uRu4+zgQC3iveBAfGCAXHwgQM=",h.load()});if(!e)return"premultiply-alpha-on-upload";const i=t.createTexture();t.bindTexture(t.TEXTURE_2D,i);const r=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,r),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,i,0),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,t.NONE),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e);const n=new Uint8Array(4);return t.readPixels(0,0,1,1,t.RGBA,t.UNSIGNED_BYTE,n),t.deleteFramebuffer(r),t.deleteTexture(i),(a=t.getExtension("WEBGL_lose_context"))==null||a.loseContext(),n[0]<=n[3]?"premultiplied-alpha":"premultiply-alpha-on-upload"})()),ys}const ts=class en extends Tt{constructor(t){super(t),this.isReady=!1,this.uploadMethodId="video",t={...en.defaultOptions,...t},this._autoUpdate=!0,this._isConnectedToTicker=!1,this._updateFPS=t.updateFPS||0,this._msToNextUpdate=0,this.autoPlay=t.autoPlay!==!1,this.alphaMode=t.alphaMode??"premultiply-alpha-on-upload",this._videoFrameRequestCallback=this._videoFrameRequestCallback.bind(this),this._videoFrameRequestCallbackHandle=null,this._load=null,this._resolve=null,this._reject=null,this._onCanPlay=this._onCanPlay.bind(this),this._onCanPlayThrough=this._onCanPlayThrough.bind(this),this._onError=this._onError.bind(this),this._onPlayStart=this._onPlayStart.bind(this),this._onPlayStop=this._onPlayStop.bind(this),this._onSeeked=this._onSeeked.bind(this),t.autoLoad!==!1&&this.load()}updateFrame(){if(!this.destroyed){if(this._updateFPS){const t=Xt.shared.elapsedMS*this.resource.playbackRate;this._msToNextUpdate=Math.floor(this._msToNextUpdate-t)}(!this._updateFPS||this._msToNextUpdate<=0)&&(this._msToNextUpdate=this._updateFPS?Math.floor(1e3/this._updateFPS):0),this.isValid&&this.update()}}_videoFrameRequestCallback(){this.updateFrame(),this.destroyed?this._videoFrameRequestCallbackHandle=null:this._videoFrameRequestCallbackHandle=this.resource.requestVideoFrameCallback(this._videoFrameRequestCallback)}get isValid(){return!!this.resource.videoWidth&&!!this.resource.videoHeight}async load(){if(this._load)return this._load;const t=this.resource,e=this.options;return(t.readyState===t.HAVE_ENOUGH_DATA||t.readyState===t.HAVE_FUTURE_DATA)&&t.width&&t.height&&(t.complete=!0),t.addEventListener("play",this._onPlayStart),t.addEventListener("pause",this._onPlayStop),t.addEventListener("seeked",this._onSeeked),this._isSourceReady()?this._mediaReady():(e.preload||t.addEventListener("canplay",this._onCanPlay),t.addEventListener("canplaythrough",this._onCanPlayThrough),t.addEventListener("error",this._onError,!0)),this.alphaMode=await tn(),this._load=new Promise((i,r)=>{this.isValid?i(this):(this._resolve=i,this._reject=r,e.preloadTimeoutMs!==void 0&&(this._preloadTimeout=setTimeout(()=>{this._onError(new ErrorEvent(`Preload exceeded timeout of ${e.preloadTimeoutMs}ms`))})),t.load())}),this._load}_onError(t){this.resource.removeEventListener("error",this._onError,!0),this.emit("error",t),this._reject&&(this._reject(t),this._reject=null,this._resolve=null)}_isSourcePlaying(){const t=this.resource;return!t.paused&&!t.ended}_isSourceReady(){return this.resource.readyState>2}_onPlayStart(){this.isValid||this._mediaReady(),this._configureAutoUpdate()}_onPlayStop(){this._configureAutoUpdate()}_onSeeked(){this._autoUpdate&&!this._isSourcePlaying()&&(this._msToNextUpdate=0,this.updateFrame(),this._msToNextUpdate=0)}_onCanPlay(){this.resource.removeEventListener("canplay",this._onCanPlay),this._mediaReady()}_onCanPlayThrough(){this.resource.removeEventListener("canplaythrough",this._onCanPlay),this._preloadTimeout&&(clearTimeout(this._preloadTimeout),this._preloadTimeout=void 0),this._mediaReady()}_mediaReady(){const t=this.resource;this.isValid&&(this.isReady=!0,this.resize(t.videoWidth,t.videoHeight)),this._msToNextUpdate=0,this.updateFrame(),this._msToNextUpdate=0,this._resolve&&(this._resolve(this),this._resolve=null,this._reject=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&this.resource.play()}destroy(){this._configureAutoUpdate();const t=this.resource;t&&(t.removeEventListener("play",this._onPlayStart),t.removeEventListener("pause",this._onPlayStop),t.removeEventListener("seeked",this._onSeeked),t.removeEventListener("canplay",this._onCanPlay),t.removeEventListener("canplaythrough",this._onCanPlayThrough),t.removeEventListener("error",this._onError,!0),t.pause(),t.src="",t.load()),super.destroy()}get autoUpdate(){return this._autoUpdate}set autoUpdate(t){t!==this._autoUpdate&&(this._autoUpdate=t,this._configureAutoUpdate())}get updateFPS(){return this._updateFPS}set updateFPS(t){t!==this._updateFPS&&(this._updateFPS=t,this._configureAutoUpdate())}_configureAutoUpdate(){this._autoUpdate&&this._isSourcePlaying()?!this._updateFPS&&this.resource.requestVideoFrameCallback?(this._isConnectedToTicker&&(Xt.shared.remove(this.updateFrame,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0),this._videoFrameRequestCallbackHandle===null&&(this._videoFrameRequestCallbackHandle=this.resource.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._videoFrameRequestCallbackHandle!==null&&(this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker||(Xt.shared.add(this.updateFrame,this),this._isConnectedToTicker=!0,this._msToNextUpdate=0)):(this._videoFrameRequestCallbackHandle!==null&&(this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker&&(Xt.shared.remove(this.updateFrame,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0))}static test(t){return globalThis.HTMLVideoElement&&t instanceof HTMLVideoElement}};ts.extension=P.TextureSource;ts.defaultOptions={...Tt.defaultOptions,autoLoad:!0,autoPlay:!0,updateFPS:0,crossorigin:!0,loop:!1,muted:!0,playsinline:!0,preload:!1};ts.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"};let Ye=ts;const mt=(s,t,e=!1)=>(Array.isArray(s)||(s=[s]),t?s.map(i=>typeof i=="string"||e?t(i):i):s);class ho{constructor(){this._parsers=[],this._cache=new Map,this._cacheMap=new Map}reset(){this._cacheMap.clear(),this._cache.clear()}has(t){return this._cache.has(t)}get(t){const e=this._cache.get(t);return e||J(`[Assets] Asset id ${t} was not found in the Cache`),e}set(t,e){const i=mt(t);let r;for(let h=0;h{n.set(h,e)});const a=[...n.keys()],o={cacheKeys:a,keys:i};i.forEach(h=>{this._cacheMap.set(h,o)}),a.forEach(h=>{const c=r?r[h]:e;this._cache.has(h)&&this._cache.get(h)!==c&&J("[Cache] already has key:",h),this._cache.set(h,n.get(h))})}remove(t){if(!this._cacheMap.has(t)){J(`[Assets] Asset id ${t} was not found in the Cache`);return}const e=this._cacheMap.get(t);e.cacheKeys.forEach(r=>{this._cache.delete(r)}),e.keys.forEach(r=>{this._cacheMap.delete(r)})}get parsers(){return this._parsers}}const $=new ho,Us=[];nt.handleByList(P.TextureSource,Us);function sn(s={}){const t=s&&s.resource,e=t?s.resource:s,i=t?s:{resource:s};for(let r=0;r{$.has(i)&&$.remove(i)}),t||$.set(i,n),n}function co(s,t=!1){return typeof s=="string"?$.get(s):s instanceof Tt?new L({source:s}):lo(s,t)}L.from=co;Tt.from=sn;nt.add(qr,Kr,Zr,Ye,re,Qr,ri);var Bt=(s=>(s[s.Low=0]="Low",s[s.Normal=1]="Normal",s[s.High=2]="High",s))(Bt||{});function gt(s){if(typeof s!="string")throw new TypeError(`Path must be a string. Received ${JSON.stringify(s)}`)}function de(s){return s.split("?")[0].split("#")[0]}function uo(s){return s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function fo(s,t,e){return s.replace(new RegExp(uo(t),"g"),e)}function po(s,t){let e="",i=0,r=-1,n=0,a=-1;for(let o=0;o<=s.length;++o){if(o2){const h=e.lastIndexOf("/");if(h!==e.length-1){h===-1?(e="",i=0):(e=e.slice(0,h),i=e.length-1-e.lastIndexOf("/")),r=o,n=0;continue}}else if(e.length===2||e.length===1){e="",i=0,r=o,n=0;continue}}}else e.length>0?e+=`/${s.slice(r+1,o)}`:e=s.slice(r+1,o),i=o-r-1;r=o,n=0}else a===46&&n!==-1?++n:n=-1}return e}const ct={toPosix(s){return fo(s,"\\","/")},isUrl(s){return/^https?:/.test(this.toPosix(s))},isDataUrl(s){return/^data:([a-z]+\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s<>]*?)$/i.test(s)},isBlobUrl(s){return s.startsWith("blob:")},hasProtocol(s){return/^[^/:]+:/.test(this.toPosix(s))},getProtocol(s){gt(s),s=this.toPosix(s);const t=/^file:\/\/\//.exec(s);if(t)return t[0];const e=/^[^/:]+:\/{0,2}/.exec(s);return e?e[0]:""},toAbsolute(s,t,e){if(gt(s),this.isDataUrl(s)||this.isBlobUrl(s))return s;const i=de(this.toPosix(t??q.get().getBaseUrl())),r=de(this.toPosix(e??this.rootname(i)));return s=this.toPosix(s),s.startsWith("/")?ct.join(r,s.slice(1)):this.isAbsolute(s)?s:this.join(i,s)},normalize(s){if(gt(s),s.length===0)return".";if(this.isDataUrl(s)||this.isBlobUrl(s))return s;s=this.toPosix(s);let t="";const e=s.startsWith("/");this.hasProtocol(s)&&(t=this.rootname(s),s=s.slice(t.length));const i=s.endsWith("/");return s=po(s),s.length>0&&i&&(s+="/"),e?`/${s}`:t+s},isAbsolute(s){return gt(s),s=this.toPosix(s),this.hasProtocol(s)?!0:s.startsWith("/")},join(...s){if(s.length===0)return".";let t;for(let e=0;e0)if(t===void 0)t=i;else{const r=s[e-1]??"";this.joinExtensions.includes(this.extname(r).toLowerCase())?t+=`/../${i}`:t+=`/${i}`}}return t===void 0?".":this.normalize(t)},dirname(s){if(gt(s),s.length===0)return".";s=this.toPosix(s);let t=s.charCodeAt(0);const e=t===47;let i=-1,r=!0;const n=this.getProtocol(s),a=s;s=s.slice(n.length);for(let o=s.length-1;o>=1;--o)if(t=s.charCodeAt(o),t===47){if(!r){i=o;break}}else r=!1;return i===-1?e?"/":this.isUrl(a)?n+s:n:e&&i===1?"//":n+s.slice(0,i)},rootname(s){gt(s),s=this.toPosix(s);let t="";if(s.startsWith("/")?t="/":t=this.getProtocol(s),this.isUrl(s)){const e=s.indexOf("/",t.length);e!==-1?t=s.slice(0,e):t=s,t.endsWith("/")||(t+="/")}return t},basename(s,t){gt(s),t&>(t),s=de(this.toPosix(s));let e=0,i=-1,r=!0,n;if(t!==void 0&&t.length>0&&t.length<=s.length){if(t.length===s.length&&t===s)return"";let a=t.length-1,o=-1;for(n=s.length-1;n>=0;--n){const h=s.charCodeAt(n);if(h===47){if(!r){e=n+1;break}}else o===-1&&(r=!1,o=n+1),a>=0&&(h===t.charCodeAt(a)?--a===-1&&(i=n):(a=-1,i=o))}return e===i?i=o:i===-1&&(i=s.length),s.slice(e,i)}for(n=s.length-1;n>=0;--n)if(s.charCodeAt(n)===47){if(!r){e=n+1;break}}else i===-1&&(r=!1,i=n+1);return i===-1?"":s.slice(e,i)},extname(s){gt(s),s=de(this.toPosix(s));let t=-1,e=0,i=-1,r=!0,n=0;for(let a=s.length-1;a>=0;--a){const o=s.charCodeAt(a);if(o===47){if(!r){e=a+1;break}continue}i===-1&&(r=!1,i=a+1),o===46?t===-1?t=a:n!==1&&(n=1):t!==-1&&(n=-1)}return t===-1||i===-1||n===0||n===1&&t===i-1&&t===e+1?"":s.slice(t,i)},parse(s){gt(s);const t={root:"",dir:"",base:"",ext:"",name:""};if(s.length===0)return t;s=de(this.toPosix(s));let e=s.charCodeAt(0);const i=this.isAbsolute(s);let r;t.root=this.rootname(s),i||this.hasProtocol(s)?r=1:r=0;let n=-1,a=0,o=-1,h=!0,c=s.length-1,l=0;for(;c>=r;--c){if(e=s.charCodeAt(c),e===47){if(!h){a=c+1;break}continue}o===-1&&(h=!1,o=c+1),e===46?n===-1?n=c:l!==1&&(l=1):n!==-1&&(l=-1)}return n===-1||o===-1||l===0||l===1&&n===o-1&&n===a+1?o!==-1&&(a===0&&i?t.base=t.name=s.slice(1,o):t.base=t.name=s.slice(a,o)):(a===0&&i?(t.name=s.slice(1,n),t.base=s.slice(1,o)):(t.name=s.slice(a,n),t.base=s.slice(a,o)),t.ext=s.slice(n,o)),t.dir=this.dirname(s),t},sep:"/",delimiter:":",joinExtensions:[".html"]};function rn(s,t,e,i,r){const n=t[e];for(let a=0;a{const a=n.substring(1,n.length-1).split(",");r.push(a)}),rn(s,r,0,e,i)}else i.push(s);return i}const Ze=s=>!Array.isArray(s);class ne{constructor(){this._defaultBundleIdentifierOptions={connector:"-",createBundleAssetId:(t,e)=>`${t}${this._bundleIdConnector}${e}`,extractAssetIdFromBundle:(t,e)=>e.replace(`${t}${this._bundleIdConnector}`,"")},this._bundleIdConnector=this._defaultBundleIdentifierOptions.connector,this._createBundleAssetId=this._defaultBundleIdentifierOptions.createBundleAssetId,this._extractAssetIdFromBundle=this._defaultBundleIdentifierOptions.extractAssetIdFromBundle,this._assetMap={},this._preferredOrder=[],this._parsers=[],this._resolverHash={},this._bundles={}}setBundleIdentifier(t){if(this._bundleIdConnector=t.connector??this._bundleIdConnector,this._createBundleAssetId=t.createBundleAssetId??this._createBundleAssetId,this._extractAssetIdFromBundle=t.extractAssetIdFromBundle??this._extractAssetIdFromBundle,this._extractAssetIdFromBundle("foo",this._createBundleAssetId("foo","bar"))!=="bar")throw new Error("[Resolver] GenerateBundleAssetId are not working correctly")}prefer(...t){t.forEach(e=>{this._preferredOrder.push(e),e.priority||(e.priority=Object.keys(e.params))}),this._resolverHash={}}set basePath(t){this._basePath=t}get basePath(){return this._basePath}set rootPath(t){this._rootPath=t}get rootPath(){return this._rootPath}get parsers(){return this._parsers}reset(){this.setBundleIdentifier(this._defaultBundleIdentifierOptions),this._assetMap={},this._preferredOrder=[],this._resolverHash={},this._rootPath=null,this._basePath=null,this._manifest=null,this._bundles={},this._defaultSearchParams=null}setDefaultSearchParams(t){if(typeof t=="string")this._defaultSearchParams=t;else{const e=t;this._defaultSearchParams=Object.keys(e).map(i=>`${encodeURIComponent(i)}=${encodeURIComponent(e[i])}`).join("&")}}getAlias(t){const{alias:e,src:i}=t;return mt(e||i,n=>typeof n=="string"?n:Array.isArray(n)?n.map(a=>(a==null?void 0:a.src)??a):n!=null&&n.src?n.src:n,!0)}addManifest(t){this._manifest&&J("[Resolver] Manifest already exists, this will be overwritten"),this._manifest=t,t.bundles.forEach(e=>{this.addBundle(e.name,e.assets)})}addBundle(t,e){const i=[];let r=e;Array.isArray(e)||(r=Object.entries(e).map(([n,a])=>typeof a=="string"||Array.isArray(a)?{alias:n,src:a}:{alias:n,...a})),r.forEach(n=>{const a=n.src,o=n.alias;let h;if(typeof o=="string"){const c=this._createBundleAssetId(t,o);i.push(c),h=[o,c]}else{const c=o.map(l=>this._createBundleAssetId(t,l));i.push(...c),h=[...o,...c]}this.add({...n,alias:h,src:a})}),this._bundles[t]=i}add(t){const e=[];Array.isArray(t)?e.push(...t):e.push(t);let i;i=n=>{this.hasKey(n)&&J(`[Resolver] already has key: ${n} overwriting`)},mt(e).forEach(n=>{const{src:a}=n;let{data:o,format:h,loadParser:c}=n;const l=mt(a).map(f=>typeof f=="string"?go(f):Array.isArray(f)?f:[f]),u=this.getAlias(n);Array.isArray(u)?u.forEach(i):i(u);const d=[];l.forEach(f=>{f.forEach(p=>{let m={};if(typeof p!="object"){m.src=p;for(let g=0;g{this._assetMap[f]=d})})}resolveBundle(t){const e=Ze(t);t=mt(t);const i={};return t.forEach(r=>{const n=this._bundles[r];if(n){const a=this.resolve(n),o={};for(const h in a){const c=a[h];o[this._extractAssetIdFromBundle(r,h)]=c}i[r]=o}}),e?i[t[0]]:i}resolveUrl(t){const e=this.resolve(t);if(typeof t!="string"){const i={};for(const r in e)i[r]=e[r].src;return i}return e.src}resolve(t){const e=Ze(t);t=mt(t);const i={};return t.forEach(r=>{if(!this._resolverHash[r])if(this._assetMap[r]){let n=this._assetMap[r];const a=this._getPreferredOrder(n);a==null||a.priority.forEach(o=>{a.params[o].forEach(h=>{const c=n.filter(l=>l[o]?l[o]===h:!1);c.length&&(n=c)})}),this._resolverHash[r]=n[0]}else this._resolverHash[r]=this._buildResolvedAsset({alias:[r],src:r},{});i[r]=this._resolverHash[r]}),e?i[t[0]]:i}hasKey(t){return!!this._assetMap[t]}hasBundle(t){return!!this._bundles[t]}_getPreferredOrder(t){for(let e=0;en.params.format.includes(i.format));if(r)return r}return this._preferredOrder[0]}_appendDefaultSearchParams(t){if(!this._defaultSearchParams)return t;const e=/\?/.test(t)?"&":"?";return`${t}${e}${this._defaultSearchParams}`}_buildResolvedAsset(t,e){const{aliases:i,data:r,loadParser:n,format:a}=e;return(this._basePath||this._rootPath)&&(t.src=ct.toAbsolute(t.src,this._basePath,this._rootPath)),t.alias=i??t.alias??[t.src],t.src=this._appendDefaultSearchParams(t.src),t.data={...r||{},...t.data},t.loadParser=n??t.loadParser,t.format=a??t.format??mo(t.src),t}}ne.RETINA_PREFIX=/@([0-9\.]+)x/;function mo(s){return s.split(".").pop().split("?").shift().split("#").shift()}const zs=(s,t)=>{const e=t.split("?")[1];return e&&(s+=`?${e}`),s},nn=class xe{constructor(t,e){this.linkedSheets=[],this._texture=t instanceof L?t:null,this.textureSource=t.source,this.textures={},this.animations={},this.data=e;const i=parseFloat(e.meta.scale);i?(this.resolution=i,t.source.resolution=this.resolution):this.resolution=t.source._resolution,this._frames=this.data.frames,this._frameKeys=Object.keys(this._frames),this._batchIndex=0,this._callback=null}parse(){return new Promise(t=>{this._callback=t,this._batchIndex=0,this._frameKeys.length<=xe.BATCH_SIZE?(this._processFrames(0),this._processAnimations(),this._parseComplete()):this._nextBatch()})}_processFrames(t){let e=t;const i=xe.BATCH_SIZE;for(;e-t{this._batchIndex*xe.BATCH_SIZE{i[r]=t}),Object.keys(t.textures).forEach(r=>{i[r]=t.textures[r]}),!e){const r=ct.dirname(s[0]);t.linkedSheets.forEach((n,a)=>{const o=an([`${r}/${t.data.meta.related_multi_packs[a]}`],n,!0);Object.assign(i,o)})}return i}const yo={extension:P.Asset,cache:{test:s=>s instanceof Hi,getCacheableAssets:(s,t)=>an(s,t,!1)},resolver:{extension:{type:P.ResolveParser,name:"resolveSpritesheet"},test:s=>{const e=s.split("?")[0].split("."),i=e.pop(),r=e.pop();return i==="json"&&xo.includes(r)},parse:s=>{var e;const t=s.split(".");return{resolution:parseFloat(((e=ne.RETINA_PREFIX.exec(s))==null?void 0:e[1])??"1"),format:t[t.length-2],src:s}}},loader:{name:"spritesheetLoader",extension:{type:P.LoadParser,priority:Bt.Normal,name:"spritesheetLoader"},async testParse(s,t){return ct.extname(t.src).toLowerCase()===".json"&&!!s.frames},async parse(s,t,e){var c,l;const{texture:i,imageFilename:r}=(t==null?void 0:t.data)??{};let n=ct.dirname(t.src);n&&n.lastIndexOf("/")!==n.length-1&&(n+="/");let a;if(i instanceof L)a=i;else{const u=zs(n+(r??s.meta.image),t.src);a=(await e.load([u]))[u]}const o=new Hi(a.source,s);await o.parse();const h=(c=s==null?void 0:s.meta)==null?void 0:c.related_multi_packs;if(Array.isArray(h)){const u=[];for(const f of h){if(typeof f!="string")continue;let p=n+f;(l=t.data)!=null&&l.ignoreMultiPack||(p=zs(p,t.src),u.push(e.load({src:p,data:{ignoreMultiPack:!0}})))}const d=await Promise.all(u);o.linkedSheets=d,d.forEach(f=>{f.linkedSheets=[o].concat(o.linkedSheets.filter(p=>p!==f))})}return o},async unload(s,t,e){await e.unload(s.textureSource._sourceOrigin),s.destroy(!1)}}};nt.add(yo);const _s=Object.create(null),Vi=Object.create(null);function ai(s,t){let e=Vi[s];return e===void 0&&(_s[t]===void 0&&(_s[t]=1),Vi[s]=e=_s[t]++),e}let Vt;function on(){return(!Vt||Vt!=null&&Vt.isContextLost())&&(Vt=q.get().createCanvas().getContext("webgl",{})),Vt}let We;function _o(){if(!We){We="mediump";const s=on();s&&s.getShaderPrecisionFormat&&(We=s.getShaderPrecisionFormat(s.FRAGMENT_SHADER,s.HIGH_FLOAT).precision?"highp":"mediump")}return We}function bo(s,t,e){return t?s:e?(s=s.replace("out vec4 finalColor;",""),` #ifdef GL_ES // This checks if it is WebGL1 #define in varying @@ -19,18 +19,18 @@ Deprecated since v${s}`),console.warn(i))),Ti[t]=!0}const Ir=()=>{};function Mi( #define out varying #endif ${s} - `}function bo(s,t,e){const i=e?t.maxSupportedFragmentPrecision:t.maxSupportedVertexPrecision;if(s.substring(0,9)!=="precision"){let r=e?t.requestedFragmentPrecision:t.requestedVertexPrecision;return r==="highp"&&i!=="highp"&&(r="mediump"),`precision ${r} float; -${s}`}else if(i!=="highp"&&s.substring(0,15)==="precision highp")return s.replace("precision highp","precision mediump");return s}function wo(s,t){return t?`#version 300 es -${s}`:s}const vo={},Ao={};function So(s,{name:t="pixi-program"},e=!0){t=t.replace(/\s+/g,"-"),t+=e?"-fragment":"-vertex";const i=e?vo:Ao;return i[t]?(i[t]++,t+=`-${i[t]}`):i[t]=1,s.indexOf("#define SHADER_NAME")!==-1?s:`${`#define SHADER_NAME ${t}`} -${s}`}function Co(s,t){return t?s.replace("#version 300 es",""):s}const _s={stripVersion:Co,ensurePrecision:bo,addProgramDefines:_o,setProgramName:So,insertVersion:wo},bs=Object.create(null),hn=class zs{constructor(t){t={...zs.defaultOptions,...t};const e=t.fragment.indexOf("#version 300 es")!==-1,i={stripVersion:e,ensurePrecision:{requestedFragmentPrecision:t.preferredFragmentPrecision,requestedVertexPrecision:t.preferredVertexPrecision,maxSupportedVertexPrecision:"highp",maxSupportedFragmentPrecision:yo()},setProgramName:{name:t.name},addProgramDefines:e,insertVersion:e};let r=t.fragment,n=t.vertex;Object.keys(_s).forEach(a=>{const o=i[a];r=_s[a](r,o,!0),n=_s[a](n,o,!1)}),this.fragment=r,this.vertex=n,this._key=ai(`${this.vertex}:${this.fragment}`,"gl-program")}destroy(){this.fragment=null,this.vertex=null,this._attributeData=null,this._uniformData=null,this._uniformBlockData=null,this.transformFeedbackVaryings=null}static from(t){const e=`${t.vertex}:${t.fragment}`;return bs[e]||(bs[e]=new zs(t)),bs[e]}};hn.defaultOptions={preferredVertexPrecision:"highp",preferredFragmentPrecision:"mediump"};let ln=hn;const $i={uint8x2:{size:2,stride:2,normalised:!1},uint8x4:{size:4,stride:4,normalised:!1},sint8x2:{size:2,stride:2,normalised:!1},sint8x4:{size:4,stride:4,normalised:!1},unorm8x2:{size:2,stride:2,normalised:!0},unorm8x4:{size:4,stride:4,normalised:!0},snorm8x2:{size:2,stride:2,normalised:!0},snorm8x4:{size:4,stride:4,normalised:!0},uint16x2:{size:2,stride:4,normalised:!1},uint16x4:{size:4,stride:8,normalised:!1},sint16x2:{size:2,stride:4,normalised:!1},sint16x4:{size:4,stride:8,normalised:!1},unorm16x2:{size:2,stride:4,normalised:!0},unorm16x4:{size:4,stride:8,normalised:!0},snorm16x2:{size:2,stride:4,normalised:!0},snorm16x4:{size:4,stride:8,normalised:!0},float16x2:{size:2,stride:4,normalised:!1},float16x4:{size:4,stride:8,normalised:!1},float32:{size:1,stride:4,normalised:!1},float32x2:{size:2,stride:8,normalised:!1},float32x3:{size:3,stride:12,normalised:!1},float32x4:{size:4,stride:16,normalised:!1},uint32:{size:1,stride:4,normalised:!1},uint32x2:{size:2,stride:8,normalised:!1},uint32x3:{size:3,stride:12,normalised:!1},uint32x4:{size:4,stride:16,normalised:!1},sint32:{size:1,stride:4,normalised:!1},sint32x2:{size:2,stride:8,normalised:!1},sint32x3:{size:3,stride:12,normalised:!1},sint32x4:{size:4,stride:16,normalised:!1}};function To(s){return $i[s]??$i.float32}const Mo={f32:"float32","vec2":"float32x2","vec3":"float32x3","vec4":"float32x4",vec2f:"float32x2",vec3f:"float32x3",vec4f:"float32x4",i32:"sint32","vec2":"sint32x2","vec3":"sint32x3","vec4":"sint32x4",u32:"uint32","vec2":"uint32x2","vec3":"uint32x3","vec4":"uint32x4",bool:"uint32","vec2":"uint32x2","vec3":"uint32x3","vec4":"uint32x4"};function Po({source:s,entryPoint:t}){const e={},i=s.indexOf(`fn ${t}`);if(i!==-1){const r=s.indexOf("->",i);if(r!==-1){const n=s.substring(i,r),a=/@location\((\d+)\)\s+([a-zA-Z0-9_]+)\s*:\s*([a-zA-Z0-9_<>]+)(?:,|\s|$)/g;let o;for(;(o=a.exec(n))!==null;){const h=Mo[o[3]]??"float32";e[o[2]]={location:parseInt(o[1],10),format:h,stride:To(h).stride,offset:0,instance:!1,start:0}}}}return e}function ws(s){var u,d;const t=/(^|[^/])@(group|binding)\(\d+\)[^;]+;/g,e=/@group\((\d+)\)/,i=/@binding\((\d+)\)/,r=/var(<[^>]+>)? (\w+)/,n=/:\s*(\w+)/,a=/struct\s+(\w+)\s*{([^}]+)}/g,o=/(\w+)\s*:\s*([\w\<\>]+)/g,h=/struct\s+(\w+)/,c=(u=s.match(t))==null?void 0:u.map(f=>({group:parseInt(f.match(e)[1],10),binding:parseInt(f.match(i)[1],10),name:f.match(r)[2],isUniform:f.match(r)[1]==="",type:f.match(n)[1]}));if(!c)return{groups:[],structs:[]};const l=((d=s.match(a))==null?void 0:d.map(f=>{const p=f.match(h)[1],m=f.match(o).reduce((g,x)=>{const[y,_]=x.split(":");return g[y.trim()]=_.trim(),g},{});return m?{name:p,members:m}:null}).filter(({name:f})=>c.some(p=>p.type===f)))??[];return{groups:c,structs:l}}var ye=(s=>(s[s.VERTEX=1]="VERTEX",s[s.FRAGMENT=2]="FRAGMENT",s[s.COMPUTE=4]="COMPUTE",s))(ye||{});function ko({groups:s}){const t=[];for(let e=0;ee.has(a.name)?!1:(e.add(a.name),!0)),n=[...s.groups,...t.groups].filter(a=>{const o=`${a.name}-${a.binding}`;return i.has(o)?!1:(i.add(o),!0)});return{structs:r,groups:n}}const vs=Object.create(null);class ts{constructor(t){var o,h;this._layoutKey=0,this._attributeLocationsKey=0;const{fragment:e,vertex:i,layout:r,gpuLayout:n,name:a}=t;if(this.name=a,this.fragment=e,this.vertex=i,e.source===i.source){const c=ws(e.source);this.structsAndGroups=c}else{const c=ws(i.source),l=ws(e.source);this.structsAndGroups=Bo(c,l)}this.layout=r??Eo(this.structsAndGroups),this.gpuLayout=n??ko(this.structsAndGroups),this.autoAssignGlobalUniforms=((o=this.layout[0])==null?void 0:o.globalUniforms)!==void 0,this.autoAssignLocalUniforms=((h=this.layout[1])==null?void 0:h.localUniforms)!==void 0,this._generateProgramKey()}_generateProgramKey(){const{vertex:t,fragment:e}=this,i=t.source+e.source+t.entryPoint+e.entryPoint;this._layoutKey=ai(i,"program")}get attributeData(){return this._attributeData??(this._attributeData=Po(this.vertex)),this._attributeData}destroy(){this.gpuLayout=null,this.layout=null,this.structsAndGroups=null,this.fragment=null,this.vertex=null}static from(t){const e=`${t.vertex.source}:${t.fragment.source}:${t.fragment.entryPoint}:${t.vertex.entryPoint}`;return vs[e]||(vs[e]=new ts(t)),vs[e]}}const cn=["f32","i32","vec2","vec3","vec4","mat2x2","mat3x3","mat4x4","mat3x2","mat4x2","mat2x3","mat4x3","mat2x4","mat3x4"],Io=cn.reduce((s,t)=>(s[t]=!0,s),{});function Fo(s,t){switch(s){case"f32":return 0;case"vec2":return new Float32Array(2*t);case"vec3":return new Float32Array(3*t);case"vec4":return new Float32Array(4*t);case"mat2x2":return new Float32Array([1,0,0,1]);case"mat3x3":return new Float32Array([1,0,0,0,1,0,0,0,1]);case"mat4x4":return new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}return null}const un=class dn{constructor(t,e){this._touched=0,this.uid=tt("uniform"),this._resourceType="uniformGroup",this._resourceId=tt("resource"),this.isUniformGroup=!0,this._dirtyId=0,this.destroyed=!1,e={...dn.defaultOptions,...e},this.uniformStructures=t;const i={};for(const r in t){const n=t[r];if(n.name=r,n.size=n.size??1,!Io[n.type])throw new Error(`Uniform type ${n.type} is not supported. Supported uniform types are: ${cn.join(", ")}`);n.value??(n.value=Fo(n.type,n.size)),i[r]=n.value}this.uniforms=i,this._dirtyId=1,this.ubo=e.ubo,this.isStatic=e.isStatic,this._signature=ai(Object.keys(i).map(r=>`${r}-${t[r].type}`).join("-"),"uniform-group")}update(){this._dirtyId++}};un.defaultOptions={ubo:!1,isStatic:!1};let fn=un;class Ye{constructor(t){this.resources=Object.create(null),this._dirty=!0;let e=0;for(const i in t){const r=t[i];this.setResource(r,e++)}this._updateKey()}_updateKey(){if(!this._dirty)return;this._dirty=!1;const t=[];let e=0;for(const i in this.resources)t[e++]=this.resources[i]._resourceId;this._key=t.join("|")}setResource(t,e){var r,n;const i=this.resources[e];t!==i&&(i&&((r=t.off)==null||r.call(t,"change",this.onResourceChange,this)),(n=t.on)==null||n.call(t,"change",this.onResourceChange,this),this.resources[e]=t,this._dirty=!0)}getResource(t){return this.resources[t]}_touch(t){const e=this.resources;for(const i in e)e[i]._touched=t}destroy(){var e;const t=this.resources;for(const i in t){const r=t[i];(e=r.off)==null||e.call(r,"change",this.onResourceChange,this)}this.resources=null}onResourceChange(t){if(this._dirty=!0,t.destroyed){const e=this.resources;for(const i in e)e[i]===t&&(e[i]=null)}else this._updateKey()}}var Hs=(s=>(s[s.WEBGL=1]="WEBGL",s[s.WEBGPU=2]="WEBGPU",s[s.BOTH=3]="BOTH",s))(Hs||{});class oi extends at{constructor(t){super(),this._uniformBindMap=Object.create(null),this._ownedBindGroups=[];let{gpuProgram:e,glProgram:i,groups:r,resources:n,compatibleRenderers:a,groupMap:o}=t;this.gpuProgram=e,this.glProgram=i,a===void 0&&(a=0,e&&(a|=Hs.WEBGPU),i&&(a|=Hs.WEBGL)),this.compatibleRenderers=a;const h={};if(!n&&!r&&(n={}),n&&r)throw new Error("[Shader] Cannot have both resources and groups");if(!e&&r&&!o)throw new Error("[Shader] No group map or WebGPU shader provided - consider using resources instead.");if(!e&&r&&o)for(const c in o)for(const l in o[c]){const u=o[c][l];h[u]={group:c,binding:l,name:u}}else if(e&&r&&!o){const c=e.structsAndGroups.groups;o={},c.forEach(l=>{o[l.group]=o[l.group]||{},o[l.group][l.binding]=l.name,h[l.name]=l})}else if(n){r={},o={},e&&e.structsAndGroups.groups.forEach(u=>{o[u.group]=o[u.group]||{},o[u.group][u.binding]=u.name,h[u.name]=u});let c=0;for(const l in n)h[l]||(r[99]||(r[99]=new Ye,this._ownedBindGroups.push(r[99])),h[l]={group:99,binding:c,name:l},o[99]=o[99]||{},o[99][c]=l,c++);for(const l in n){const u=l;let d=n[l];!d.source&&!d._resourceType&&(d=new fn(d));const f=h[u];f&&(r[f.group]||(r[f.group]=new Ye,this._ownedBindGroups.push(r[f.group])),r[f.group].setResource(d,f.binding))}}this.groups=r,this._uniformBindMap=o,this.resources=this._buildResourceAccessor(r,h)}addResource(t,e,i){var r,n;(r=this._uniformBindMap)[e]||(r[e]={}),(n=this._uniformBindMap[e])[i]||(n[i]=t),this.groups[e]||(this.groups[e]=new Ye,this._ownedBindGroups.push(this.groups[e]))}_buildResourceAccessor(t,e){const i={};for(const r in e){const n=e[r];Object.defineProperty(i,n.name,{get(){return t[n.group].getResource(n.binding)},set(a){t[n.group].setResource(a,n.binding)}})}return i}destroy(t=!1){var e,i;this.emit("destroy",this),t&&((e=this.gpuProgram)==null||e.destroy(),(i=this.glProgram)==null||i.destroy()),this.gpuProgram=null,this.glProgram=null,this.removeAllListeners(),this._uniformBindMap=null,this._ownedBindGroups.forEach(r=>{r.destroy()}),this._ownedBindGroups=null,this.resources=null,this.groups=null}static from(t){const{gpu:e,gl:i,...r}=t;let n,a;return e&&(n=ts.from(e)),i&&(a=ln.from(i)),new oi({gpuProgram:n,glProgram:a,...r})}}const Ns=[];nt.handleByNamedList(P.Environment,Ns);async function Ro(s){if(!s)for(let t=0;t80*e){o=c=s[0],h=l=s[1];for(var p=e;pc&&(c=u),d>l&&(l=d);f=Math.max(c-o,l-h),f=f!==0?32767/f:0}return ve(n,a,e,o,h,f,0),a}function pn(s,t,e,i,r){var n,a;if(r===Ys(s,t,e,i)>0)for(n=t;n=t;n-=i)a=Yi(n,s[n],s[n+1],a);return a&&ss(a,a.next)&&(Se(a),a=a.next),a}function zt(s,t){if(!s)return s;t||(t=s);var e=s,i;do if(i=!1,!e.steiner&&(ss(e,e.next)||Y(e.prev,e,e.next)===0)){if(Se(e),e=t=e.prev,e===e.next)break;i=!0}else e=e.next;while(i||e!==t);return t}function ve(s,t,e,i,r,n,a){if(s){!a&&n&&$o(s,i,r,n);for(var o=s,h,c;s.prev!==s.next;){if(h=s.prev,c=s.next,n?Oo(s,i,r,n):Go(s)){t.push(h.i/e|0),t.push(s.i/e|0),t.push(c.i/e|0),Se(s),s=c.next,o=c.next;continue}if(s=c,s===o){a?a===1?(s=Wo(zt(s),t,e),ve(s,t,e,i,r,n,2)):a===2&&Do(s,t,e,i,r,n):ve(zt(s),t,e,i,r,n,1);break}}}}function Go(s){var t=s.prev,e=s,i=s.next;if(Y(t,e,i)>=0)return!1;for(var r=t.x,n=e.x,a=i.x,o=t.y,h=e.y,c=i.y,l=rn?r>a?r:a:n>a?n:a,f=o>h?o>c?o:c:h>c?h:c,p=i.next;p!==t;){if(p.x>=l&&p.x<=d&&p.y>=u&&p.y<=f&&jt(r,o,n,h,a,c,p.x,p.y)&&Y(p.prev,p,p.next)>=0)return!1;p=p.next}return!0}function Oo(s,t,e,i){var r=s.prev,n=s,a=s.next;if(Y(r,n,a)>=0)return!1;for(var o=r.x,h=n.x,c=a.x,l=r.y,u=n.y,d=a.y,f=oh?o>c?o:c:h>c?h:c,g=l>u?l>d?l:d:u>d?u:d,x=Vs(f,p,t,e,i),y=Vs(m,g,t,e,i),_=s.prevZ,w=s.nextZ;_&&_.z>=x&&w&&w.z<=y;){if(_.x>=f&&_.x<=m&&_.y>=p&&_.y<=g&&_!==r&&_!==a&&jt(o,l,h,u,c,d,_.x,_.y)&&Y(_.prev,_,_.next)>=0||(_=_.prevZ,w.x>=f&&w.x<=m&&w.y>=p&&w.y<=g&&w!==r&&w!==a&&jt(o,l,h,u,c,d,w.x,w.y)&&Y(w.prev,w,w.next)>=0))return!1;w=w.nextZ}for(;_&&_.z>=x;){if(_.x>=f&&_.x<=m&&_.y>=p&&_.y<=g&&_!==r&&_!==a&&jt(o,l,h,u,c,d,_.x,_.y)&&Y(_.prev,_,_.next)>=0)return!1;_=_.prevZ}for(;w&&w.z<=y;){if(w.x>=f&&w.x<=m&&w.y>=p&&w.y<=g&&w!==r&&w!==a&&jt(o,l,h,u,c,d,w.x,w.y)&&Y(w.prev,w,w.next)>=0)return!1;w=w.nextZ}return!0}function Wo(s,t,e){var i=s;do{var r=i.prev,n=i.next.next;!ss(r,n)&&gn(r,i,i.next,n)&&Ae(r,n)&&Ae(n,r)&&(t.push(r.i/e|0),t.push(i.i/e|0),t.push(n.i/e|0),Se(i),Se(i.next),i=s=n),i=i.next}while(i!==s);return zt(i)}function Do(s,t,e,i,r,n){var a=s;do{for(var o=a.next.next;o!==a.prev;){if(a.i!==o.i&&jo(a,o)){var h=mn(a,o);a=zt(a,a.next),h=zt(h,h.next),ve(a,t,e,i,r,n,0),ve(h,t,e,i,r,n,0);return}o=o.next}a=a.next}while(a!==s)}function Uo(s,t,e,i){var r=[],n,a,o,h,c;for(n=0,a=t.length;n=e.next.y&&e.next.y!==e.y){var o=e.x+(r-e.y)*(e.next.x-e.x)/(e.next.y-e.y);if(o<=i&&o>n&&(n=o,a=e.x=e.x&&e.x>=c&&i!==e.x&&jt(ra.x||e.x===a.x&&Vo(a,e)))&&(a=e,u=d)),e=e.next;while(e!==h);return a}function Vo(s,t){return Y(s.prev,s,t.prev)<0&&Y(t.next,s,s.next)<0}function $o(s,t,e,i){var r=s;do r.z===0&&(r.z=Vs(r.x,r.y,t,e,i)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next;while(r!==s);r.prevZ.nextZ=null,r.prevZ=null,Yo(r)}function Yo(s){var t,e,i,r,n,a,o,h,c=1;do{for(e=s,s=null,n=null,a=0;e;){for(a++,i=e,o=0,t=0;t0||h>0&&i;)o!==0&&(h===0||!i||e.z<=i.z)?(r=e,e=e.nextZ,o--):(r=i,i=i.nextZ,h--),n?n.nextZ=r:s=r,r.prevZ=n,n=r;e=i}n.nextZ=null,c*=2}while(a>1);return s}function Vs(s,t,e,i,r){return s=(s-e)*r|0,t=(t-i)*r|0,s=(s|s<<8)&16711935,s=(s|s<<4)&252645135,s=(s|s<<2)&858993459,s=(s|s<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,s|t<<1}function Xo(s){var t=s,e=s;do(t.x=(s-a)*(n-o)&&(s-a)*(i-o)>=(e-a)*(t-o)&&(e-a)*(n-o)>=(r-a)*(i-o)}function jo(s,t){return s.next.i!==t.i&&s.prev.i!==t.i&&!qo(s,t)&&(Ae(s,t)&&Ae(t,s)&&Ko(s,t)&&(Y(s.prev,s,t.prev)||Y(s,t.prev,t))||ss(s,t)&&Y(s.prev,s,s.next)>0&&Y(t.prev,t,t.next)>0)}function Y(s,t,e){return(t.y-s.y)*(e.x-t.x)-(t.x-s.x)*(e.y-t.y)}function ss(s,t){return s.x===t.x&&s.y===t.y}function gn(s,t,e,i){var r=De(Y(s,t,e)),n=De(Y(s,t,i)),a=De(Y(e,i,s)),o=De(Y(e,i,t));return!!(r!==n&&a!==o||r===0&&We(s,e,t)||n===0&&We(s,i,t)||a===0&&We(e,s,i)||o===0&&We(e,t,i))}function We(s,t,e){return t.x<=Math.max(s.x,e.x)&&t.x>=Math.min(s.x,e.x)&&t.y<=Math.max(s.y,e.y)&&t.y>=Math.min(s.y,e.y)}function De(s){return s>0?1:s<0?-1:0}function qo(s,t){var e=s;do{if(e.i!==s.i&&e.next.i!==s.i&&e.i!==t.i&&e.next.i!==t.i&&gn(e,e.next,s,t))return!0;e=e.next}while(e!==s);return!1}function Ae(s,t){return Y(s.prev,s,s.next)<0?Y(s,t,s.next)>=0&&Y(s,s.prev,t)>=0:Y(s,t,s.prev)<0||Y(s,s.next,t)<0}function Ko(s,t){var e=s,i=!1,r=(s.x+t.x)/2,n=(s.y+t.y)/2;do e.y>n!=e.next.y>n&&e.next.y!==e.y&&r<(e.next.x-e.x)*(n-e.y)/(e.next.y-e.y)+e.x&&(i=!i),e=e.next;while(e!==s);return i}function mn(s,t){var e=new $s(s.i,s.x,s.y),i=new $s(t.i,t.x,t.y),r=s.next,n=t.prev;return s.next=t,t.prev=s,e.next=r,r.prev=e,i.next=e,e.prev=i,n.next=i,i.prev=n,i}function Yi(s,t,e,i){var r=new $s(s,t,e);return i?(r.next=i.next,r.prev=i,i.next.prev=r,i.next=r):(r.prev=r,r.next=r),r}function Se(s){s.next.prev=s.prev,s.prev.next=s.next,s.prevZ&&(s.prevZ.nextZ=s.nextZ),s.nextZ&&(s.nextZ.prevZ=s.prevZ)}function $s(s,t,e){this.i=s,this.x=t,this.y=e,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}es.deviation=function(s,t,e,i){var r=t&&t.length,n=r?t[0]*e:s.length,a=Math.abs(Ys(s,0,n,e));if(r)for(var o=0,h=t.length;o0&&(i+=s[r-1].length,e.holes.push(i))}return e};var Zo=hi.exports;const Qo=ii(Zo);var xn=(s=>(s[s.NONE=0]="NONE",s[s.COLOR=16384]="COLOR",s[s.STENCIL=1024]="STENCIL",s[s.DEPTH=256]="DEPTH",s[s.COLOR_DEPTH=16640]="COLOR_DEPTH",s[s.COLOR_STENCIL=17408]="COLOR_STENCIL",s[s.DEPTH_STENCIL=1280]="DEPTH_STENCIL",s[s.ALL=17664]="ALL",s))(xn||{});class Jo{constructor(t){this.items=[],this._name=t}emit(t,e,i,r,n,a,o,h){const{name:c,items:l}=this;for(let u=0,d=l.length;u{this.runners[e]=new Jo(e)})}_addSystems(t){let e;for(e in t){const i=t[e];this._addSystem(i.value,i.name)}}_addSystem(t,e){const i=new t(this);if(this[e])throw new Error(`Whoops! The name "${e}" is already in use`);this[e]=i,this._systemsHash[e]=i;for(const r in this.runners)this.runners[r].add(i);return this}_addPipes(t,e){const i=e.reduce((r,n)=>(r[n.name]=n.value,r),{});t.forEach(r=>{const n=r.value,a=r.name,o=i[a];this.renderPipes[a]=new n(this,o?new o:null)})}destroy(t=!1){this.runners.destroy.items.reverse(),this.runners.destroy.emit(t),Object.values(this.runners).forEach(e=>{e.destroy()}),this._systemsHash=null,this.renderPipes=null}generateTexture(t){return this.textureGenerator.generateTexture(t)}get roundPixels(){return!!this._roundPixels}_unsafeEvalCheck(){if(!Lo())throw new Error("Current environment does not allow unsafe-eval, please use pixi.js/unsafe-eval module to enable support.")}};yn.defaultOptions={resolution:1,failIfMajorPerformanceCaveat:!1,roundPixels:!1};let bn=yn,Ue;function eh(s){return Ue!==void 0||(Ue=(()=>{var e;const t={stencil:!0,failIfMajorPerformanceCaveat:s??bn.defaultOptions.failIfMajorPerformanceCaveat};try{if(!j.get().getWebGLRenderingContext())return!1;let r=j.get().createCanvas().getContext("webgl",t);const n=!!((e=r==null?void 0:r.getContextAttributes())!=null&&e.stencil);if(r){const a=r.getExtension("WEBGL_lose_context");a&&a.loseContext()}return r=null,n}catch{return!1}})()),Ue}let ze;async function sh(s={}){return ze!==void 0||(ze=await(async()=>{const t=j.get().getNavigator().gpu;if(!t)return!1;try{return await(await t.requestAdapter(s)).requestDevice(),!0}catch{return!1}})()),ze}const Xi=["webgl","webgpu","canvas"];async function ih(s){let t=[];s.preference?(t.push(s.preference),Xi.forEach(n=>{n!==s.preference&&t.push(n)})):t=Xi.slice();let e,i={};for(let n=0;n{const{WebGPURenderer:h}=await import("./WebGPURenderer-BBQkeqcg.js");return{WebGPURenderer:h}},__vite__mapDeps([3,2,4]));e=o,i={...s,...s.webgpu};break}else if(a==="webgl"&&eh(s.failIfMajorPerformanceCaveat??bn.defaultOptions.failIfMajorPerformanceCaveat)){const{WebGLRenderer:o}=await je(async()=>{const{WebGLRenderer:h}=await import("./WebGLRenderer-z8lHFjkk.js");return{WebGLRenderer:h}},__vite__mapDeps([5,2,4]));e=o,i={...s,...s.webgl};break}else if(a==="canvas")throw i={...s},new Error("CanvasRenderer is not yet implemented")}if(delete i.webgpu,delete i.webgl,!e)throw new Error("No available renderer for the current environment");const r=new e;return await r.init(i),r}const wn="8.4.0";class vn{static init(){var t;(t=globalThis.__PIXI_APP_INIT__)==null||t.call(globalThis,this,wn)}static destroy(){}}vn.extension=P.Application;class rh{constructor(t){this._renderer=t}init(){var t;(t=globalThis.__PIXI_RENDERER_INIT__)==null||t.call(globalThis,this._renderer,wn)}destroy(){this._renderer=null}}rh.extension={type:[P.WebGLSystem,P.WebGPUSystem],name:"initHook",priority:-10};const An=class Xs{constructor(...t){this.stage=new rt,t[0]!==void 0&&O(W,"Application constructor options are deprecated, please use Application.init() instead.")}async init(t){t={...t},this.renderer=await ih(t),Xs._plugins.forEach(e=>{e.init.call(this,t)})}render(){this.renderer.render({container:this.stage})}get canvas(){return this.renderer.canvas}get view(){return O(W,"Application.view is deprecated, please use Application.canvas instead."),this.renderer.canvas}get screen(){return this.renderer.screen}destroy(t=!1,e=!1){const i=Xs._plugins.slice(0);i.reverse(),i.forEach(r=>{r.destroy.call(this)}),this.stage.destroy(e),this.stage=null,this.renderer.destroy(t),this.renderer=null}};An._plugins=[];let Sn=An;nt.handleByList(P.Application,Sn._plugins);nt.add(vn);class Cn extends at{constructor(){super(...arguments),this.chars=Object.create(null),this.lineHeight=0,this.fontFamily="",this.fontMetrics={fontSize:0,ascent:0,descent:0},this.baseLineOffset=0,this.distanceField={type:"none",range:0},this.pages=[],this.applyFillAsTint=!0,this.baseMeasurementFontSize=100,this.baseRenderedFontSize=100}get font(){return O(W,"BitmapFont.font is deprecated, please use BitmapFont.fontFamily instead."),this.fontFamily}get pageTextures(){return O(W,"BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead."),this.pages}get size(){return O(W,"BitmapFont.size is deprecated, please use BitmapFont.fontMetrics.fontSize instead."),this.fontMetrics.fontSize}get distanceFieldRange(){return O(W,"BitmapFont.distanceFieldRange is deprecated, please use BitmapFont.distanceField.range instead."),this.distanceField.range}get distanceFieldType(){return O(W,"BitmapFont.distanceFieldType is deprecated, please use BitmapFont.distanceField.type instead."),this.distanceField.type}destroy(t=!1){var e;this.emit("destroy",this),this.removeAllListeners();for(const i in this.chars)(e=this.chars[i].texture)==null||e.destroy();this.chars=null,t&&(this.pages.forEach(i=>i.texture.destroy(!0)),this.pages=null)}}const Tn=class js{constructor(t,e,i,r){this.uid=tt("fillGradient"),this.type="linear",this.gradientStops=[],this._styleKey=null,this.x0=t,this.y0=e,this.x1=i,this.y1=r}addColorStop(t,e){return this.gradientStops.push({offset:t,color:Q.shared.setValue(e).toHexa()}),this._styleKey=null,this}buildLinearGradient(){const t=js.defaultTextureSize,{gradientStops:e}=this,i=j.get().createCanvas();i.width=t,i.height=t;const r=i.getContext("2d"),n=r.createLinearGradient(0,0,js.defaultTextureSize,1);for(let m=0;m`${r.offset}-${r.color}`).join("-"),e=this.texture.uid,i=this.transform.toArray().join("-");return`fill-gradient-${this.uid}-${t}-${e}-${i}-${this.x0}-${this.y0}-${this.x1}-${this.y1}`}};Tn.defaultTextureSize=256;let Ce=Tn;const ji={repeat:{addressModeU:"repeat",addressModeV:"repeat"},"repeat-x":{addressModeU:"repeat",addressModeV:"clamp-to-edge"},"repeat-y":{addressModeU:"clamp-to-edge",addressModeV:"repeat"},"no-repeat":{addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}};class is{constructor(t,e){this.uid=tt("fillPattern"),this.transform=new D,this._styleKey=null,this.texture=t,this.transform.scale(1/t.frame.width,1/t.frame.height),e&&(t.source.style.addressModeU=ji[e].addressModeU,t.source.style.addressModeV=ji[e].addressModeV)}setTransform(t){const e=this.texture;this.transform.copyFrom(t),this.transform.invert(),this.transform.scale(1/e.frame.width,1/e.frame.height),this._styleKey=null}get styleKey(){return this._styleKey?this._styleKey:(this._styleKey=`fill-pattern-${this.uid}-${this.texture.uid}-${this.transform.toArray().join("-")}`,this._styleKey)}}var nh=oh,As={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},ah=/([astvzqmhlc])([^astvzqmhlc]*)/ig;function oh(s){var t=[];return s.replace(ah,function(e,i,r){var n=i.toLowerCase();for(r=lh(r),n=="m"&&r.length>2&&(t.push([i].concat(r.splice(0,2))),n="l",i=i=="m"?"l":"L");;){if(r.length==As[n])return r.unshift(i),t.push(r);if(r.length0&&(r=i.pop(),r?(n=r.startX,a=r.startY):(n=0,a=0)),r=null;break;default:J(`Unknown SVG path command: ${c}`)}c!=="Z"&&c!=="z"&&r===null&&(r={startX:n,startY:a},i.push(r))}return t}class li{constructor(t=0,e=0,i=0){this.type="circle",this.x=t,this.y=e,this.radius=i}clone(){return new li(this.x,this.y,this.radius)}contains(t,e){if(this.radius<=0)return!1;const i=this.radius*this.radius;let r=this.x-t,n=this.y-e;return r*=r,n*=n,r+n<=i}strokeContains(t,e,i){if(this.radius===0)return!1;const r=this.x-t,n=this.y-e,a=this.radius,o=i/2,h=Math.sqrt(r*r+n*n);return ha-o}getBounds(t){return t=t||new U,t.x=this.x-this.radius,t.y=this.y-this.radius,t.width=this.radius*2,t.height=this.radius*2,t}copyFrom(t){return this.x=t.x,this.y=t.y,this.radius=t.radius,this}copyTo(t){return t.copyFrom(this),t}toString(){return`[pixi.js/math:Circle x=${this.x} y=${this.y} radius=${this.radius}]`}}class ci{constructor(t=0,e=0,i=0,r=0){this.type="ellipse",this.x=t,this.y=e,this.halfWidth=i,this.halfHeight=r}clone(){return new ci(this.x,this.y,this.halfWidth,this.halfHeight)}contains(t,e){if(this.halfWidth<=0||this.halfHeight<=0)return!1;let i=(t-this.x)/this.halfWidth,r=(e-this.y)/this.halfHeight;return i*=i,r*=r,i+r<=1}strokeContains(t,e,i){const{halfWidth:r,halfHeight:n}=this;if(r<=0||n<=0)return!1;const a=i/2,o=r-a,h=n-a,c=r+a,l=n+a,u=t-this.x,d=e-this.y,f=u*u/(o*o)+d*d/(h*h),p=u*u/(c*c)+d*d/(l*l);return f>1&&p<=1}getBounds(t){return t=t||new U,t.x=this.x-this.halfWidth,t.y=this.y-this.halfHeight,t.width=this.halfWidth*2,t.height=this.halfHeight*2,t}copyFrom(t){return this.x=t.x,this.y=t.y,this.halfWidth=t.halfWidth,this.halfHeight=t.halfHeight,this}copyTo(t){return t.copyFrom(this),t}toString(){return`[pixi.js/math:Ellipse x=${this.x} y=${this.y} halfWidth=${this.halfWidth} halfHeight=${this.halfHeight}]`}}function dh(s,t,e,i,r,n){const a=s-e,o=t-i,h=r-e,c=n-i,l=a*h+o*c,u=h*h+c*c;let d=-1;u!==0&&(d=l/u);let f,p;d<0?(f=e,p=i):d>1?(f=r,p=n):(f=e+d*h,p=i+d*c);const m=s-f,g=t-p;return m*m+g*g}class be{constructor(...t){this.type="polygon";let e=Array.isArray(t[0])?t[0]:t;if(typeof e[0]!="number"){const i=[];for(let r=0,n=e.length;re!=l>e&&t<(c-o)*((e-h)/(l-h))+o&&(i=!i)}return i}strokeContains(t,e,i){const r=i/2,n=r*r,{points:a}=this,o=a.length-(this.closePath?0:2);for(let h=0;hr?c:r,n=la?l:a}return t.x=i,t.width=r-i,t.y=n,t.height=a-n,t}copyFrom(t){return this.points=t.points.slice(),this.closePath=t.closePath,this}copyTo(t){return t.copyFrom(this),t}toString(){return`[pixi.js/math:PolygoncloseStroke=${this.closePath}points=${this.points.reduce((t,e)=>`${t}, ${e}`,"")}]`}get lastX(){return this.points[this.points.length-2]}get lastY(){return this.points[this.points.length-1]}get x(){return this.points[this.points.length-2]}get y(){return this.points[this.points.length-1]}}const He=(s,t,e,i,r,n)=>{const a=s-e,o=t-i,h=Math.sqrt(a*a+o*o);return h>=r-n&&h<=r+n};class ui{constructor(t=0,e=0,i=0,r=0,n=20){this.type="roundedRectangle",this.x=t,this.y=e,this.width=i,this.height=r,this.radius=n}getBounds(t){return t=t||new U,t.x=this.x,t.y=this.y,t.width=this.width,t.height=this.height,t}clone(){return new ui(this.x,this.y,this.width,this.height,this.radius)}copyFrom(t){return this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height,this}copyTo(t){return t.copyFrom(this),t}contains(t,e){if(this.width<=0||this.height<=0)return!1;if(t>=this.x&&t<=this.x+this.width&&e>=this.y&&e<=this.y+this.height){const i=Math.max(0,Math.min(this.radius,Math.min(this.width,this.height)/2));if(e>=this.y+i&&e<=this.y+this.height-i||t>=this.x+i&&t<=this.x+this.width-i)return!0;let r=t-(this.x+i),n=e-(this.y+i);const a=i*i;if(r*r+n*n<=a||(r=t-(this.x+this.width-i),r*r+n*n<=a)||(n=e-(this.y+this.height-i),r*r+n*n<=a)||(r=t-(this.x+i),r*r+n*n<=a))return!0}return!1}strokeContains(t,e,i){const{x:r,y:n,width:a,height:o,radius:h}=this,c=i/2,l=r+h,u=n+h,d=a-h*2,f=o-h*2,p=r+a,m=n+o;return(t>=r-c&&t<=r+c||t>=p-c&&t<=p+c)&&e>=u&&e<=u+f||(e>=n-c&&e<=n+c||e>=m-c&&e<=m+c)&&t>=l&&t<=l+d?!0:tp-h&&ep-h&&e>m-h&&He(t,e,p-h,m-h,h,c)||tm-h&&He(t,e,l,m-h,h,c)}toString(){return`[pixi.js/math:RoundedRectangle x=${this.x} y=${this.y}width=${this.width} height=${this.height} radius=${this.radius}]`}}const fh=["precision mediump float;","void main(void){","float test = 0.1;","%forloop%","gl_FragColor = vec4(0.0);","}"].join(` -`);function ph(s){let t="";for(let e=0;e0&&(t+=` -else `),e>>=0;return Pn[e]||xh(s,t,e)}let Ss=0;function xh(s,t,e){const i={};let r=0;Ss||(Ss=Mn());for(let a=0;a0){const a=new Uint8Array(s,e*8,n);new Uint8Array(t,e*8,n).set(a)}}const yh={normal:"normal-npm",add:"add-npm",screen:"screen-npm"};var _h=(s=>(s[s.DISABLED=0]="DISABLED",s[s.RENDERING_MASK_ADD=1]="RENDERING_MASK_ADD",s[s.MASK_ACTIVE=2]="MASK_ACTIVE",s[s.RENDERING_MASK_REMOVE=3]="RENDERING_MASK_REMOVE",s[s.NONE=4]="NONE",s))(_h||{});function Zi(s,t){return t.alphaMode==="no-premultiply-alpha"&&yh[s]||s}class bh{constructor(){this.ids=Object.create(null),this.textures=[],this.count=0}clear(){for(let t=0;t0?kn[--qs]:new wh}function Ji(s){kn[qs++]=s}let pe=0;const En=class Xe{constructor(t={}){this.uid=tt("batcher"),this.dirty=!0,this.batchIndex=0,this.batches=[],this._elements=[],Xe.defaultOptions.maxTextures=Xe.defaultOptions.maxTextures??Mn(),t={...Xe.defaultOptions,...t};const{maxTextures:e,attributesInitialSize:i,indicesInitialSize:r}=t;this.attributeBuffer=new qi(i*4),this.indexBuffer=new Uint16Array(r),this.maxTextures=e}begin(){this.elementSize=0,this.elementStart=0,this.indexSize=0,this.attributeSize=0;for(let t=0;tthis.attributeBuffer.size&&this._resizeAttributeBuffer(this.attributeSize*4),this.indexSize>this.indexBuffer.length&&this._resizeIndexBuffer(this.indexSize);const o=this.attributeBuffer.float32View,h=this.attributeBuffer.uint32View,c=this.indexBuffer;let l=this._batchIndexSize,u=this._batchIndexStart,d="startBatch";const f=this.maxTextures;for(let p=this.elementStart;p=f||_)&&(this._finishBatch(i,u,l-u,r,a,t,d),d="renderBatch",u=l,a=y,i=Qi(),r=i.textures,r.clear(),++pe),m._textureId=x._textureBindLocation=r.count,r.ids[x.uid]=r.count,r.textures[r.count++]=x,m._batch=i,l+=m.indexSize,m.packAsQuad?(this.packQuadAttributes(m,o,h,m._attributeStart,m._textureId),this.packQuadIndex(c,m._indexStart,m._attributeStart/this.vertexSize)):(this.packAttributes(m,o,h,m._attributeStart,m._textureId),this.packIndex(m,c,m._indexStart,m._attributeStart/this.vertexSize))}r.count>0&&(this._finishBatch(i,u,l-u,r,a,t,d),u=l,++pe),this.elementStart=this.elementSize,this._batchIndexStart=u,this._batchIndexSize=l}_finishBatch(t,e,i,r,n,a,o){t.gpuBindGroup=null,t.bindGroup=null,t.action=o,t.batcher=this,t.textures=r,t.blendMode=n,t.start=e,t.size=i,++pe,this.batches[this.batchIndex++]=t,a.add(t)}finish(t){this.break(t)}ensureAttributeBuffer(t){t*4<=this.attributeBuffer.size||this._resizeAttributeBuffer(t*4)}ensureIndexBuffer(t){t<=this.indexBuffer.length||this._resizeIndexBuffer(t)}_resizeAttributeBuffer(t){const e=Math.max(t,this.attributeBuffer.size*2),i=new qi(e);Ki(this.attributeBuffer.rawBinaryData,i.rawBinaryData),this.attributeBuffer=i}_resizeIndexBuffer(t){const e=this.indexBuffer;let i=Math.max(t,e.length*1.5);i+=i%2;const r=i>65535?new Uint32Array(i):new Uint16Array(i);if(r.BYTES_PER_ELEMENT!==e.BYTES_PER_ELEMENT)for(let n=0;n(s[s.MAP_READ=1]="MAP_READ",s[s.MAP_WRITE=2]="MAP_WRITE",s[s.COPY_SRC=4]="COPY_SRC",s[s.COPY_DST=8]="COPY_DST",s[s.INDEX=16]="INDEX",s[s.VERTEX=32]="VERTEX",s[s.UNIFORM=64]="UNIFORM",s[s.STORAGE=128]="STORAGE",s[s.INDIRECT=256]="INDIRECT",s[s.QUERY_RESOLVE=512]="QUERY_RESOLVE",s[s.STATIC=1024]="STATIC",s))(Z||{});class Pt extends at{constructor(t){let{data:e,size:i}=t;const{usage:r,label:n,shrinkToFit:a}=t;super(),this.uid=tt("buffer"),this._resourceType="buffer",this._resourceId=tt("resource"),this._touched=0,this._updateID=1,this.shrinkToFit=!0,this.destroyed=!1,e instanceof Array&&(e=new Float32Array(e)),this._data=e,i=i??(e==null?void 0:e.byteLength);const o=!!e;this.descriptor={size:i,usage:r,mappedAtCreation:o,label:n},this.shrinkToFit=a??!0}get data(){return this._data}set data(t){this.setDataWithSize(t,t.length,!0)}get static(){return!!(this.descriptor.usage&Z.STATIC)}set static(t){t?this.descriptor.usage|=Z.STATIC:this.descriptor.usage&=~Z.STATIC}setDataWithSize(t,e,i){if(this._updateID++,this._updateSize=e*t.BYTES_PER_ELEMENT,this._data===t){i&&this.emit("update",this);return}const r=this._data;if(this._data=t,r.length!==t.length){!this.shrinkToFit&&t.byteLengtho&&(o=f),p>h&&(h=p),fe.destroy()),this.attributes=null,this.buffers=null,this.indexBuffer=null,this._bounds=null}}const Ch=new Float32Array(1),Th=new Uint32Array(1);class Mh extends In{constructor(){const e=new Pt({data:Ch,label:"attribute-batch-buffer",usage:Z.VERTEX|Z.COPY_DST,shrinkToFit:!1}),i=new Pt({data:Th,label:"index-batch-buffer",usage:Z.INDEX|Z.COPY_DST,shrinkToFit:!1}),r=6*4;super({attributes:{aPosition:{buffer:e,format:"float32x2",stride:r,offset:0},aUV:{buffer:e,format:"float32x2",stride:r,offset:2*4},aColor:{buffer:e,format:"unorm8x4",stride:r,offset:4*4},aTextureIdAndRound:{buffer:e,format:"uint16x2",stride:r,offset:5*4}},indexBuffer:i})}}function tr(s,t,e){if(s)for(const i in s){const r=i.toLocaleLowerCase(),n=t[r];if(n){let a=s[i];i==="header"&&(a=a.replace(/@in\s+[^;]+;\s*/g,"").replace(/@out\s+[^;]+;\s*/g,"")),e&&n.push(`//----${e}----//`),n.push(a)}else J(`${i} placement hook does not exist in shader`)}}const Ph=/\{\{(.*?)\}\}/g;function er(s){var i;const t={};return(((i=s.match(Ph))==null?void 0:i.map(r=>r.replace(/[{()}]/g,"")))??[]).forEach(r=>{t[r]=[]}),t}function sr(s,t){let e;const i=/@in\s+([^;]+);/g;for(;(e=i.exec(s))!==null;)t.push(e[1])}function ir(s,t,e=!1){const i=[];sr(t,i),s.forEach(o=>{o.header&&sr(o.header,i)});const r=i;e&&r.sort();const n=r.map((o,h)=>` @location(${h}) ${o},`).join(` + `}function wo(s,t,e){const i=e?t.maxSupportedFragmentPrecision:t.maxSupportedVertexPrecision;if(s.substring(0,9)!=="precision"){let r=e?t.requestedFragmentPrecision:t.requestedVertexPrecision;return r==="highp"&&i!=="highp"&&(r="mediump"),`precision ${r} float; +${s}`}else if(i!=="highp"&&s.substring(0,15)==="precision highp")return s.replace("precision highp","precision mediump");return s}function vo(s,t){return t?`#version 300 es +${s}`:s}const Ao={},So={};function Co(s,{name:t="pixi-program"},e=!0){t=t.replace(/\s+/g,"-"),t+=e?"-fragment":"-vertex";const i=e?Ao:So;return i[t]?(i[t]++,t+=`-${i[t]}`):i[t]=1,s.indexOf("#define SHADER_NAME")!==-1?s:`${`#define SHADER_NAME ${t}`} +${s}`}function To(s,t){return t?s.replace("#version 300 es",""):s}const bs={stripVersion:To,ensurePrecision:wo,addProgramDefines:bo,setProgramName:Co,insertVersion:vo},ws=Object.create(null),hn=class Ns{constructor(t){t={...Ns.defaultOptions,...t};const e=t.fragment.indexOf("#version 300 es")!==-1,i={stripVersion:e,ensurePrecision:{requestedFragmentPrecision:t.preferredFragmentPrecision,requestedVertexPrecision:t.preferredVertexPrecision,maxSupportedVertexPrecision:"highp",maxSupportedFragmentPrecision:_o()},setProgramName:{name:t.name},addProgramDefines:e,insertVersion:e};let r=t.fragment,n=t.vertex;Object.keys(bs).forEach(a=>{const o=i[a];r=bs[a](r,o,!0),n=bs[a](n,o,!1)}),this.fragment=r,this.vertex=n,this._key=ai(`${this.vertex}:${this.fragment}`,"gl-program")}destroy(){this.fragment=null,this.vertex=null,this._attributeData=null,this._uniformData=null,this._uniformBlockData=null,this.transformFeedbackVaryings=null}static from(t){const e=`${t.vertex}:${t.fragment}`;return ws[e]||(ws[e]=new Ns(t)),ws[e]}};hn.defaultOptions={preferredVertexPrecision:"highp",preferredFragmentPrecision:"mediump"};let ln=hn;const $i={uint8x2:{size:2,stride:2,normalised:!1},uint8x4:{size:4,stride:4,normalised:!1},sint8x2:{size:2,stride:2,normalised:!1},sint8x4:{size:4,stride:4,normalised:!1},unorm8x2:{size:2,stride:2,normalised:!0},unorm8x4:{size:4,stride:4,normalised:!0},snorm8x2:{size:2,stride:2,normalised:!0},snorm8x4:{size:4,stride:4,normalised:!0},uint16x2:{size:2,stride:4,normalised:!1},uint16x4:{size:4,stride:8,normalised:!1},sint16x2:{size:2,stride:4,normalised:!1},sint16x4:{size:4,stride:8,normalised:!1},unorm16x2:{size:2,stride:4,normalised:!0},unorm16x4:{size:4,stride:8,normalised:!0},snorm16x2:{size:2,stride:4,normalised:!0},snorm16x4:{size:4,stride:8,normalised:!0},float16x2:{size:2,stride:4,normalised:!1},float16x4:{size:4,stride:8,normalised:!1},float32:{size:1,stride:4,normalised:!1},float32x2:{size:2,stride:8,normalised:!1},float32x3:{size:3,stride:12,normalised:!1},float32x4:{size:4,stride:16,normalised:!1},uint32:{size:1,stride:4,normalised:!1},uint32x2:{size:2,stride:8,normalised:!1},uint32x3:{size:3,stride:12,normalised:!1},uint32x4:{size:4,stride:16,normalised:!1},sint32:{size:1,stride:4,normalised:!1},sint32x2:{size:2,stride:8,normalised:!1},sint32x3:{size:3,stride:12,normalised:!1},sint32x4:{size:4,stride:16,normalised:!1}};function Mo(s){return $i[s]??$i.float32}const Po={f32:"float32","vec2":"float32x2","vec3":"float32x3","vec4":"float32x4",vec2f:"float32x2",vec3f:"float32x3",vec4f:"float32x4",i32:"sint32","vec2":"sint32x2","vec3":"sint32x3","vec4":"sint32x4",u32:"uint32","vec2":"uint32x2","vec3":"uint32x3","vec4":"uint32x4",bool:"uint32","vec2":"uint32x2","vec3":"uint32x3","vec4":"uint32x4"};function ko({source:s,entryPoint:t}){const e={},i=s.indexOf(`fn ${t}`);if(i!==-1){const r=s.indexOf("->",i);if(r!==-1){const n=s.substring(i,r),a=/@location\((\d+)\)\s+([a-zA-Z0-9_]+)\s*:\s*([a-zA-Z0-9_<>]+)(?:,|\s|$)/g;let o;for(;(o=a.exec(n))!==null;){const h=Po[o[3]]??"float32";e[o[2]]={location:parseInt(o[1],10),format:h,stride:Mo(h).stride,offset:0,instance:!1,start:0}}}}return e}function vs(s){var u,d;const t=/(^|[^/])@(group|binding)\(\d+\)[^;]+;/g,e=/@group\((\d+)\)/,i=/@binding\((\d+)\)/,r=/var(<[^>]+>)? (\w+)/,n=/:\s*(\w+)/,a=/struct\s+(\w+)\s*{([^}]+)}/g,o=/(\w+)\s*:\s*([\w\<\>]+)/g,h=/struct\s+(\w+)/,c=(u=s.match(t))==null?void 0:u.map(f=>({group:parseInt(f.match(e)[1],10),binding:parseInt(f.match(i)[1],10),name:f.match(r)[2],isUniform:f.match(r)[1]==="",type:f.match(n)[1]}));if(!c)return{groups:[],structs:[]};const l=((d=s.match(a))==null?void 0:d.map(f=>{const p=f.match(h)[1],m=f.match(o).reduce((g,x)=>{const[y,_]=x.split(":");return g[y.trim()]=_.trim(),g},{});return m?{name:p,members:m}:null}).filter(({name:f})=>c.some(p=>p.type===f)))??[];return{groups:c,structs:l}}var ye=(s=>(s[s.VERTEX=1]="VERTEX",s[s.FRAGMENT=2]="FRAGMENT",s[s.COMPUTE=4]="COMPUTE",s))(ye||{});function Bo({groups:s}){const t=[];for(let e=0;ee.has(a.name)?!1:(e.add(a.name),!0)),n=[...s.groups,...t.groups].filter(a=>{const o=`${a.name}-${a.binding}`;return i.has(o)?!1:(i.add(o),!0)});return{structs:r,groups:n}}const As=Object.create(null);class es{constructor(t){var o,h;this._layoutKey=0,this._attributeLocationsKey=0;const{fragment:e,vertex:i,layout:r,gpuLayout:n,name:a}=t;if(this.name=a,this.fragment=e,this.vertex=i,e.source===i.source){const c=vs(e.source);this.structsAndGroups=c}else{const c=vs(i.source),l=vs(e.source);this.structsAndGroups=Io(c,l)}this.layout=r??Eo(this.structsAndGroups),this.gpuLayout=n??Bo(this.structsAndGroups),this.autoAssignGlobalUniforms=((o=this.layout[0])==null?void 0:o.globalUniforms)!==void 0,this.autoAssignLocalUniforms=((h=this.layout[1])==null?void 0:h.localUniforms)!==void 0,this._generateProgramKey()}_generateProgramKey(){const{vertex:t,fragment:e}=this,i=t.source+e.source+t.entryPoint+e.entryPoint;this._layoutKey=ai(i,"program")}get attributeData(){return this._attributeData??(this._attributeData=ko(this.vertex)),this._attributeData}destroy(){this.gpuLayout=null,this.layout=null,this.structsAndGroups=null,this.fragment=null,this.vertex=null}static from(t){const e=`${t.vertex.source}:${t.fragment.source}:${t.fragment.entryPoint}:${t.vertex.entryPoint}`;return As[e]||(As[e]=new es(t)),As[e]}}const cn=["f32","i32","vec2","vec3","vec4","mat2x2","mat3x3","mat4x4","mat3x2","mat4x2","mat2x3","mat4x3","mat2x4","mat3x4"],Fo=cn.reduce((s,t)=>(s[t]=!0,s),{});function Ro(s,t){switch(s){case"f32":return 0;case"vec2":return new Float32Array(2*t);case"vec3":return new Float32Array(3*t);case"vec4":return new Float32Array(4*t);case"mat2x2":return new Float32Array([1,0,0,1]);case"mat3x3":return new Float32Array([1,0,0,0,1,0,0,0,1]);case"mat4x4":return new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}return null}const un=class dn{constructor(t,e){this._touched=0,this.uid=tt("uniform"),this._resourceType="uniformGroup",this._resourceId=tt("resource"),this.isUniformGroup=!0,this._dirtyId=0,this.destroyed=!1,e={...dn.defaultOptions,...e},this.uniformStructures=t;const i={};for(const r in t){const n=t[r];if(n.name=r,n.size=n.size??1,!Fo[n.type])throw new Error(`Uniform type ${n.type} is not supported. Supported uniform types are: ${cn.join(", ")}`);n.value??(n.value=Ro(n.type,n.size)),i[r]=n.value}this.uniforms=i,this._dirtyId=1,this.ubo=e.ubo,this.isStatic=e.isStatic,this._signature=ai(Object.keys(i).map(r=>`${r}-${t[r].type}`).join("-"),"uniform-group")}update(){this._dirtyId++}};un.defaultOptions={ubo:!1,isStatic:!1};let fn=un;class je{constructor(t){this.resources=Object.create(null),this._dirty=!0;let e=0;for(const i in t){const r=t[i];this.setResource(r,e++)}this._updateKey()}_updateKey(){if(!this._dirty)return;this._dirty=!1;const t=[];let e=0;for(const i in this.resources)t[e++]=this.resources[i]._resourceId;this._key=t.join("|")}setResource(t,e){var r,n;const i=this.resources[e];t!==i&&(i&&((r=t.off)==null||r.call(t,"change",this.onResourceChange,this)),(n=t.on)==null||n.call(t,"change",this.onResourceChange,this),this.resources[e]=t,this._dirty=!0)}getResource(t){return this.resources[t]}_touch(t){const e=this.resources;for(const i in e)e[i]._touched=t}destroy(){var e;const t=this.resources;for(const i in t){const r=t[i];(e=r.off)==null||e.call(r,"change",this.onResourceChange,this)}this.resources=null}onResourceChange(t){if(this._dirty=!0,t.destroyed){const e=this.resources;for(const i in e)e[i]===t&&(e[i]=null)}else this._updateKey()}}var Hs=(s=>(s[s.WEBGL=1]="WEBGL",s[s.WEBGPU=2]="WEBGPU",s[s.BOTH=3]="BOTH",s))(Hs||{});class oi extends ot{constructor(t){super(),this._uniformBindMap=Object.create(null),this._ownedBindGroups=[];let{gpuProgram:e,glProgram:i,groups:r,resources:n,compatibleRenderers:a,groupMap:o}=t;this.gpuProgram=e,this.glProgram=i,a===void 0&&(a=0,e&&(a|=Hs.WEBGPU),i&&(a|=Hs.WEBGL)),this.compatibleRenderers=a;const h={};if(!n&&!r&&(n={}),n&&r)throw new Error("[Shader] Cannot have both resources and groups");if(!e&&r&&!o)throw new Error("[Shader] No group map or WebGPU shader provided - consider using resources instead.");if(!e&&r&&o)for(const c in o)for(const l in o[c]){const u=o[c][l];h[u]={group:c,binding:l,name:u}}else if(e&&r&&!o){const c=e.structsAndGroups.groups;o={},c.forEach(l=>{o[l.group]=o[l.group]||{},o[l.group][l.binding]=l.name,h[l.name]=l})}else if(n){r={},o={},e&&e.structsAndGroups.groups.forEach(u=>{o[u.group]=o[u.group]||{},o[u.group][u.binding]=u.name,h[u.name]=u});let c=0;for(const l in n)h[l]||(r[99]||(r[99]=new je,this._ownedBindGroups.push(r[99])),h[l]={group:99,binding:c,name:l},o[99]=o[99]||{},o[99][c]=l,c++);for(const l in n){const u=l;let d=n[l];!d.source&&!d._resourceType&&(d=new fn(d));const f=h[u];f&&(r[f.group]||(r[f.group]=new je,this._ownedBindGroups.push(r[f.group])),r[f.group].setResource(d,f.binding))}}this.groups=r,this._uniformBindMap=o,this.resources=this._buildResourceAccessor(r,h)}addResource(t,e,i){var r,n;(r=this._uniformBindMap)[e]||(r[e]={}),(n=this._uniformBindMap[e])[i]||(n[i]=t),this.groups[e]||(this.groups[e]=new je,this._ownedBindGroups.push(this.groups[e]))}_buildResourceAccessor(t,e){const i={};for(const r in e){const n=e[r];Object.defineProperty(i,n.name,{get(){return t[n.group].getResource(n.binding)},set(a){t[n.group].setResource(a,n.binding)}})}return i}destroy(t=!1){var e,i;this.emit("destroy",this),t&&((e=this.gpuProgram)==null||e.destroy(),(i=this.glProgram)==null||i.destroy()),this.gpuProgram=null,this.glProgram=null,this.removeAllListeners(),this._uniformBindMap=null,this._ownedBindGroups.forEach(r=>{r.destroy()}),this._ownedBindGroups=null,this.resources=null,this.groups=null}static from(t){const{gpu:e,gl:i,...r}=t;let n,a;return e&&(n=es.from(e)),i&&(a=ln.from(i)),new oi({gpuProgram:n,glProgram:a,...r})}}const Vs=[];nt.handleByNamedList(P.Environment,Vs);async function Go(s){if(!s)for(let t=0;t80*e){o=c=s[0],h=l=s[1];for(var p=e;pc&&(c=u),d>l&&(l=d);f=Math.max(c-o,l-h),f=f!==0?32767/f:0}return Ae(n,a,e,o,h,f,0),a}function pn(s,t,e,i,r){var n,a;if(r===js(s,t,e,i)>0)for(n=t;n=t;n-=i)a=Yi(n,s[n],s[n+1],a);return a&&is(a,a.next)&&(Ce(a),a=a.next),a}function Ht(s,t){if(!s)return s;t||(t=s);var e=s,i;do if(i=!1,!e.steiner&&(is(e,e.next)||Y(e.prev,e,e.next)===0)){if(Ce(e),e=t=e.prev,e===e.next)break;i=!0}else e=e.next;while(i||e!==t);return t}function Ae(s,t,e,i,r,n,a){if(s){!a&&n&&Yo(s,i,r,n);for(var o=s,h,c;s.prev!==s.next;){if(h=s.prev,c=s.next,n?Wo(s,i,r,n):Oo(s)){t.push(h.i/e|0),t.push(s.i/e|0),t.push(c.i/e|0),Ce(s),s=c.next,o=c.next;continue}if(s=c,s===o){a?a===1?(s=Do(Ht(s),t,e),Ae(s,t,e,i,r,n,2)):a===2&&Uo(s,t,e,i,r,n):Ae(Ht(s),t,e,i,r,n,1);break}}}}function Oo(s){var t=s.prev,e=s,i=s.next;if(Y(t,e,i)>=0)return!1;for(var r=t.x,n=e.x,a=i.x,o=t.y,h=e.y,c=i.y,l=rn?r>a?r:a:n>a?n:a,f=o>h?o>c?o:c:h>c?h:c,p=i.next;p!==t;){if(p.x>=l&&p.x<=d&&p.y>=u&&p.y<=f&&qt(r,o,n,h,a,c,p.x,p.y)&&Y(p.prev,p,p.next)>=0)return!1;p=p.next}return!0}function Wo(s,t,e,i){var r=s.prev,n=s,a=s.next;if(Y(r,n,a)>=0)return!1;for(var o=r.x,h=n.x,c=a.x,l=r.y,u=n.y,d=a.y,f=oh?o>c?o:c:h>c?h:c,g=l>u?l>d?l:d:u>d?u:d,x=$s(f,p,t,e,i),y=$s(m,g,t,e,i),_=s.prevZ,w=s.nextZ;_&&_.z>=x&&w&&w.z<=y;){if(_.x>=f&&_.x<=m&&_.y>=p&&_.y<=g&&_!==r&&_!==a&&qt(o,l,h,u,c,d,_.x,_.y)&&Y(_.prev,_,_.next)>=0||(_=_.prevZ,w.x>=f&&w.x<=m&&w.y>=p&&w.y<=g&&w!==r&&w!==a&&qt(o,l,h,u,c,d,w.x,w.y)&&Y(w.prev,w,w.next)>=0))return!1;w=w.nextZ}for(;_&&_.z>=x;){if(_.x>=f&&_.x<=m&&_.y>=p&&_.y<=g&&_!==r&&_!==a&&qt(o,l,h,u,c,d,_.x,_.y)&&Y(_.prev,_,_.next)>=0)return!1;_=_.prevZ}for(;w&&w.z<=y;){if(w.x>=f&&w.x<=m&&w.y>=p&&w.y<=g&&w!==r&&w!==a&&qt(o,l,h,u,c,d,w.x,w.y)&&Y(w.prev,w,w.next)>=0)return!1;w=w.nextZ}return!0}function Do(s,t,e){var i=s;do{var r=i.prev,n=i.next.next;!is(r,n)&&gn(r,i,i.next,n)&&Se(r,n)&&Se(n,r)&&(t.push(r.i/e|0),t.push(i.i/e|0),t.push(n.i/e|0),Ce(i),Ce(i.next),i=s=n),i=i.next}while(i!==s);return Ht(i)}function Uo(s,t,e,i,r,n){var a=s;do{for(var o=a.next.next;o!==a.prev;){if(a.i!==o.i&&qo(a,o)){var h=mn(a,o);a=Ht(a,a.next),h=Ht(h,h.next),Ae(a,t,e,i,r,n,0),Ae(h,t,e,i,r,n,0);return}o=o.next}a=a.next}while(a!==s)}function zo(s,t,e,i){var r=[],n,a,o,h,c;for(n=0,a=t.length;n=e.next.y&&e.next.y!==e.y){var o=e.x+(r-e.y)*(e.next.x-e.x)/(e.next.y-e.y);if(o<=i&&o>n&&(n=o,a=e.x=e.x&&e.x>=c&&i!==e.x&&qt(ra.x||e.x===a.x&&$o(a,e)))&&(a=e,u=d)),e=e.next;while(e!==h);return a}function $o(s,t){return Y(s.prev,s,t.prev)<0&&Y(t.next,s,s.next)<0}function Yo(s,t,e,i){var r=s;do r.z===0&&(r.z=$s(r.x,r.y,t,e,i)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next;while(r!==s);r.prevZ.nextZ=null,r.prevZ=null,jo(r)}function jo(s){var t,e,i,r,n,a,o,h,c=1;do{for(e=s,s=null,n=null,a=0;e;){for(a++,i=e,o=0,t=0;t0||h>0&&i;)o!==0&&(h===0||!i||e.z<=i.z)?(r=e,e=e.nextZ,o--):(r=i,i=i.nextZ,h--),n?n.nextZ=r:s=r,r.prevZ=n,n=r;e=i}n.nextZ=null,c*=2}while(a>1);return s}function $s(s,t,e,i,r){return s=(s-e)*r|0,t=(t-i)*r|0,s=(s|s<<8)&16711935,s=(s|s<<4)&252645135,s=(s|s<<2)&858993459,s=(s|s<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,s|t<<1}function Xo(s){var t=s,e=s;do(t.x=(s-a)*(n-o)&&(s-a)*(i-o)>=(e-a)*(t-o)&&(e-a)*(n-o)>=(r-a)*(i-o)}function qo(s,t){return s.next.i!==t.i&&s.prev.i!==t.i&&!Ko(s,t)&&(Se(s,t)&&Se(t,s)&&Zo(s,t)&&(Y(s.prev,s,t.prev)||Y(s,t.prev,t))||is(s,t)&&Y(s.prev,s,s.next)>0&&Y(t.prev,t,t.next)>0)}function Y(s,t,e){return(t.y-s.y)*(e.x-t.x)-(t.x-s.x)*(e.y-t.y)}function is(s,t){return s.x===t.x&&s.y===t.y}function gn(s,t,e,i){var r=Ue(Y(s,t,e)),n=Ue(Y(s,t,i)),a=Ue(Y(e,i,s)),o=Ue(Y(e,i,t));return!!(r!==n&&a!==o||r===0&&De(s,e,t)||n===0&&De(s,i,t)||a===0&&De(e,s,i)||o===0&&De(e,t,i))}function De(s,t,e){return t.x<=Math.max(s.x,e.x)&&t.x>=Math.min(s.x,e.x)&&t.y<=Math.max(s.y,e.y)&&t.y>=Math.min(s.y,e.y)}function Ue(s){return s>0?1:s<0?-1:0}function Ko(s,t){var e=s;do{if(e.i!==s.i&&e.next.i!==s.i&&e.i!==t.i&&e.next.i!==t.i&&gn(e,e.next,s,t))return!0;e=e.next}while(e!==s);return!1}function Se(s,t){return Y(s.prev,s,s.next)<0?Y(s,t,s.next)>=0&&Y(s,s.prev,t)>=0:Y(s,t,s.prev)<0||Y(s,s.next,t)<0}function Zo(s,t){var e=s,i=!1,r=(s.x+t.x)/2,n=(s.y+t.y)/2;do e.y>n!=e.next.y>n&&e.next.y!==e.y&&r<(e.next.x-e.x)*(n-e.y)/(e.next.y-e.y)+e.x&&(i=!i),e=e.next;while(e!==s);return i}function mn(s,t){var e=new Ys(s.i,s.x,s.y),i=new Ys(t.i,t.x,t.y),r=s.next,n=t.prev;return s.next=t,t.prev=s,e.next=r,r.prev=e,i.next=e,e.prev=i,n.next=i,i.prev=n,i}function Yi(s,t,e,i){var r=new Ys(s,t,e);return i?(r.next=i.next,r.prev=i,i.next.prev=r,i.next=r):(r.prev=r,r.next=r),r}function Ce(s){s.next.prev=s.prev,s.prev.next=s.next,s.prevZ&&(s.prevZ.nextZ=s.nextZ),s.nextZ&&(s.nextZ.prevZ=s.prevZ)}function Ys(s,t,e){this.i=s,this.x=t,this.y=e,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}ss.deviation=function(s,t,e,i){var r=t&&t.length,n=r?t[0]*e:s.length,a=Math.abs(js(s,0,n,e));if(r)for(var o=0,h=t.length;o0&&(i+=s[r-1].length,e.holes.push(i))}return e};var Qo=hi.exports;const Jo=ii(Qo);var xn=(s=>(s[s.NONE=0]="NONE",s[s.COLOR=16384]="COLOR",s[s.STENCIL=1024]="STENCIL",s[s.DEPTH=256]="DEPTH",s[s.COLOR_DEPTH=16640]="COLOR_DEPTH",s[s.COLOR_STENCIL=17408]="COLOR_STENCIL",s[s.DEPTH_STENCIL=1280]="DEPTH_STENCIL",s[s.ALL=17664]="ALL",s))(xn||{});class th{constructor(t){this.items=[],this._name=t}emit(t,e,i,r,n,a,o,h){const{name:c,items:l}=this;for(let u=0,d=l.length;u{this.runners[e]=new th(e)})}_addSystems(t){let e;for(e in t){const i=t[e];this._addSystem(i.value,i.name)}}_addSystem(t,e){const i=new t(this);if(this[e])throw new Error(`Whoops! The name "${e}" is already in use`);this[e]=i,this._systemsHash[e]=i;for(const r in this.runners)this.runners[r].add(i);return this}_addPipes(t,e){const i=e.reduce((r,n)=>(r[n.name]=n.value,r),{});t.forEach(r=>{const n=r.value,a=r.name,o=i[a];this.renderPipes[a]=new n(this,o?new o:null)})}destroy(t=!1){this.runners.destroy.items.reverse(),this.runners.destroy.emit(t),Object.values(this.runners).forEach(e=>{e.destroy()}),this._systemsHash=null,this.renderPipes=null}generateTexture(t){return this.textureGenerator.generateTexture(t)}get roundPixels(){return!!this._roundPixels}_unsafeEvalCheck(){if(!Lo())throw new Error("Current environment does not allow unsafe-eval, please use pixi.js/unsafe-eval module to enable support.")}};yn.defaultOptions={resolution:1,failIfMajorPerformanceCaveat:!1,roundPixels:!1};let bn=yn,ze;function sh(s){return ze!==void 0||(ze=(()=>{var e;const t={stencil:!0,failIfMajorPerformanceCaveat:s??bn.defaultOptions.failIfMajorPerformanceCaveat};try{if(!q.get().getWebGLRenderingContext())return!1;let r=q.get().createCanvas().getContext("webgl",t);const n=!!((e=r==null?void 0:r.getContextAttributes())!=null&&e.stencil);if(r){const a=r.getExtension("WEBGL_lose_context");a&&a.loseContext()}return r=null,n}catch{return!1}})()),ze}let Ne;async function ih(s={}){return Ne!==void 0||(Ne=await(async()=>{const t=q.get().getNavigator().gpu;if(!t)return!1;try{return await(await t.requestAdapter(s)).requestDevice(),!0}catch{return!1}})()),Ne}const ji=["webgl","webgpu","canvas"];async function rh(s){let t=[];s.preference?(t.push(s.preference),ji.forEach(n=>{n!==s.preference&&t.push(n)})):t=ji.slice();let e,i={};for(let n=0;n{const{WebGPURenderer:h}=await import("./WebGPURenderer-BR803xQA.js");return{WebGPURenderer:h}},__vite__mapDeps([3,2,4]));e=o,i={...s,...s.webgpu};break}else if(a==="webgl"&&sh(s.failIfMajorPerformanceCaveat??bn.defaultOptions.failIfMajorPerformanceCaveat)){const{WebGLRenderer:o}=await qe(async()=>{const{WebGLRenderer:h}=await import("./WebGLRenderer-DyicnGup.js");return{WebGLRenderer:h}},__vite__mapDeps([5,2,4]));e=o,i={...s,...s.webgl};break}else if(a==="canvas")throw i={...s},new Error("CanvasRenderer is not yet implemented")}if(delete i.webgpu,delete i.webgl,!e)throw new Error("No available renderer for the current environment");const r=new e;return await r.init(i),r}const wn="8.4.0";class vn{static init(){var t;(t=globalThis.__PIXI_APP_INIT__)==null||t.call(globalThis,this,wn)}static destroy(){}}vn.extension=P.Application;class nh{constructor(t){this._renderer=t}init(){var t;(t=globalThis.__PIXI_RENDERER_INIT__)==null||t.call(globalThis,this._renderer,wn)}destroy(){this._renderer=null}}nh.extension={type:[P.WebGLSystem,P.WebGPUSystem],name:"initHook",priority:-10};const An=class Xs{constructor(...t){this.stage=new rt,t[0]!==void 0&&O(W,"Application constructor options are deprecated, please use Application.init() instead.")}async init(t){t={...t},this.renderer=await rh(t),Xs._plugins.forEach(e=>{e.init.call(this,t)})}render(){this.renderer.render({container:this.stage})}get canvas(){return this.renderer.canvas}get view(){return O(W,"Application.view is deprecated, please use Application.canvas instead."),this.renderer.canvas}get screen(){return this.renderer.screen}destroy(t=!1,e=!1){const i=Xs._plugins.slice(0);i.reverse(),i.forEach(r=>{r.destroy.call(this)}),this.stage.destroy(e),this.stage=null,this.renderer.destroy(t),this.renderer=null}};An._plugins=[];let Sn=An;nt.handleByList(P.Application,Sn._plugins);nt.add(vn);class Cn extends ot{constructor(){super(...arguments),this.chars=Object.create(null),this.lineHeight=0,this.fontFamily="",this.fontMetrics={fontSize:0,ascent:0,descent:0},this.baseLineOffset=0,this.distanceField={type:"none",range:0},this.pages=[],this.applyFillAsTint=!0,this.baseMeasurementFontSize=100,this.baseRenderedFontSize=100}get font(){return O(W,"BitmapFont.font is deprecated, please use BitmapFont.fontFamily instead."),this.fontFamily}get pageTextures(){return O(W,"BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead."),this.pages}get size(){return O(W,"BitmapFont.size is deprecated, please use BitmapFont.fontMetrics.fontSize instead."),this.fontMetrics.fontSize}get distanceFieldRange(){return O(W,"BitmapFont.distanceFieldRange is deprecated, please use BitmapFont.distanceField.range instead."),this.distanceField.range}get distanceFieldType(){return O(W,"BitmapFont.distanceFieldType is deprecated, please use BitmapFont.distanceField.type instead."),this.distanceField.type}destroy(t=!1){var e;this.emit("destroy",this),this.removeAllListeners();for(const i in this.chars)(e=this.chars[i].texture)==null||e.destroy();this.chars=null,t&&(this.pages.forEach(i=>i.texture.destroy(!0)),this.pages=null)}}const Tn=class qs{constructor(t,e,i,r){this.uid=tt("fillGradient"),this.type="linear",this.gradientStops=[],this._styleKey=null,this.x0=t,this.y0=e,this.x1=i,this.y1=r}addColorStop(t,e){return this.gradientStops.push({offset:t,color:Q.shared.setValue(e).toHexa()}),this._styleKey=null,this}buildLinearGradient(){const t=qs.defaultTextureSize,{gradientStops:e}=this,i=q.get().createCanvas();i.width=t,i.height=t;const r=i.getContext("2d"),n=r.createLinearGradient(0,0,qs.defaultTextureSize,1);for(let m=0;m`${r.offset}-${r.color}`).join("-"),e=this.texture.uid,i=this.transform.toArray().join("-");return`fill-gradient-${this.uid}-${t}-${e}-${i}-${this.x0}-${this.y0}-${this.x1}-${this.y1}`}};Tn.defaultTextureSize=256;let Te=Tn;const Xi={repeat:{addressModeU:"repeat",addressModeV:"repeat"},"repeat-x":{addressModeU:"repeat",addressModeV:"clamp-to-edge"},"repeat-y":{addressModeU:"clamp-to-edge",addressModeV:"repeat"},"no-repeat":{addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}};class rs{constructor(t,e){this.uid=tt("fillPattern"),this.transform=new D,this._styleKey=null,this.texture=t,this.transform.scale(1/t.frame.width,1/t.frame.height),e&&(t.source.style.addressModeU=Xi[e].addressModeU,t.source.style.addressModeV=Xi[e].addressModeV)}setTransform(t){const e=this.texture;this.transform.copyFrom(t),this.transform.invert(),this.transform.scale(1/e.frame.width,1/e.frame.height),this._styleKey=null}get styleKey(){return this._styleKey?this._styleKey:(this._styleKey=`fill-pattern-${this.uid}-${this.texture.uid}-${this.transform.toArray().join("-")}`,this._styleKey)}}var ah=hh,Ss={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},oh=/([astvzqmhlc])([^astvzqmhlc]*)/ig;function hh(s){var t=[];return s.replace(oh,function(e,i,r){var n=i.toLowerCase();for(r=ch(r),n=="m"&&r.length>2&&(t.push([i].concat(r.splice(0,2))),n="l",i=i=="m"?"l":"L");;){if(r.length==Ss[n])return r.unshift(i),t.push(r);if(r.length0&&(r=i.pop(),r?(n=r.startX,a=r.startY):(n=0,a=0)),r=null;break;default:J(`Unknown SVG path command: ${c}`)}c!=="Z"&&c!=="z"&&r===null&&(r={startX:n,startY:a},i.push(r))}return t}class li{constructor(t=0,e=0,i=0){this.type="circle",this.x=t,this.y=e,this.radius=i}clone(){return new li(this.x,this.y,this.radius)}contains(t,e){if(this.radius<=0)return!1;const i=this.radius*this.radius;let r=this.x-t,n=this.y-e;return r*=r,n*=n,r+n<=i}strokeContains(t,e,i){if(this.radius===0)return!1;const r=this.x-t,n=this.y-e,a=this.radius,o=i/2,h=Math.sqrt(r*r+n*n);return ha-o}getBounds(t){return t=t||new U,t.x=this.x-this.radius,t.y=this.y-this.radius,t.width=this.radius*2,t.height=this.radius*2,t}copyFrom(t){return this.x=t.x,this.y=t.y,this.radius=t.radius,this}copyTo(t){return t.copyFrom(this),t}toString(){return`[pixi.js/math:Circle x=${this.x} y=${this.y} radius=${this.radius}]`}}class ci{constructor(t=0,e=0,i=0,r=0){this.type="ellipse",this.x=t,this.y=e,this.halfWidth=i,this.halfHeight=r}clone(){return new ci(this.x,this.y,this.halfWidth,this.halfHeight)}contains(t,e){if(this.halfWidth<=0||this.halfHeight<=0)return!1;let i=(t-this.x)/this.halfWidth,r=(e-this.y)/this.halfHeight;return i*=i,r*=r,i+r<=1}strokeContains(t,e,i){const{halfWidth:r,halfHeight:n}=this;if(r<=0||n<=0)return!1;const a=i/2,o=r-a,h=n-a,c=r+a,l=n+a,u=t-this.x,d=e-this.y,f=u*u/(o*o)+d*d/(h*h),p=u*u/(c*c)+d*d/(l*l);return f>1&&p<=1}getBounds(t){return t=t||new U,t.x=this.x-this.halfWidth,t.y=this.y-this.halfHeight,t.width=this.halfWidth*2,t.height=this.halfHeight*2,t}copyFrom(t){return this.x=t.x,this.y=t.y,this.halfWidth=t.halfWidth,this.halfHeight=t.halfHeight,this}copyTo(t){return t.copyFrom(this),t}toString(){return`[pixi.js/math:Ellipse x=${this.x} y=${this.y} halfWidth=${this.halfWidth} halfHeight=${this.halfHeight}]`}}function fh(s,t,e,i,r,n){const a=s-e,o=t-i,h=r-e,c=n-i,l=a*h+o*c,u=h*h+c*c;let d=-1;u!==0&&(d=l/u);let f,p;d<0?(f=e,p=i):d>1?(f=r,p=n):(f=e+d*h,p=i+d*c);const m=s-f,g=t-p;return m*m+g*g}class be{constructor(...t){this.type="polygon";let e=Array.isArray(t[0])?t[0]:t;if(typeof e[0]!="number"){const i=[];for(let r=0,n=e.length;re!=l>e&&t<(c-o)*((e-h)/(l-h))+o&&(i=!i)}return i}strokeContains(t,e,i){const r=i/2,n=r*r,{points:a}=this,o=a.length-(this.closePath?0:2);for(let h=0;hr?c:r,n=la?l:a}return t.x=i,t.width=r-i,t.y=n,t.height=a-n,t}copyFrom(t){return this.points=t.points.slice(),this.closePath=t.closePath,this}copyTo(t){return t.copyFrom(this),t}toString(){return`[pixi.js/math:PolygoncloseStroke=${this.closePath}points=${this.points.reduce((t,e)=>`${t}, ${e}`,"")}]`}get lastX(){return this.points[this.points.length-2]}get lastY(){return this.points[this.points.length-1]}get x(){return this.points[this.points.length-2]}get y(){return this.points[this.points.length-1]}}const He=(s,t,e,i,r,n)=>{const a=s-e,o=t-i,h=Math.sqrt(a*a+o*o);return h>=r-n&&h<=r+n};class ui{constructor(t=0,e=0,i=0,r=0,n=20){this.type="roundedRectangle",this.x=t,this.y=e,this.width=i,this.height=r,this.radius=n}getBounds(t){return t=t||new U,t.x=this.x,t.y=this.y,t.width=this.width,t.height=this.height,t}clone(){return new ui(this.x,this.y,this.width,this.height,this.radius)}copyFrom(t){return this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height,this}copyTo(t){return t.copyFrom(this),t}contains(t,e){if(this.width<=0||this.height<=0)return!1;if(t>=this.x&&t<=this.x+this.width&&e>=this.y&&e<=this.y+this.height){const i=Math.max(0,Math.min(this.radius,Math.min(this.width,this.height)/2));if(e>=this.y+i&&e<=this.y+this.height-i||t>=this.x+i&&t<=this.x+this.width-i)return!0;let r=t-(this.x+i),n=e-(this.y+i);const a=i*i;if(r*r+n*n<=a||(r=t-(this.x+this.width-i),r*r+n*n<=a)||(n=e-(this.y+this.height-i),r*r+n*n<=a)||(r=t-(this.x+i),r*r+n*n<=a))return!0}return!1}strokeContains(t,e,i){const{x:r,y:n,width:a,height:o,radius:h}=this,c=i/2,l=r+h,u=n+h,d=a-h*2,f=o-h*2,p=r+a,m=n+o;return(t>=r-c&&t<=r+c||t>=p-c&&t<=p+c)&&e>=u&&e<=u+f||(e>=n-c&&e<=n+c||e>=m-c&&e<=m+c)&&t>=l&&t<=l+d?!0:tp-h&&ep-h&&e>m-h&&He(t,e,p-h,m-h,h,c)||tm-h&&He(t,e,l,m-h,h,c)}toString(){return`[pixi.js/math:RoundedRectangle x=${this.x} y=${this.y}width=${this.width} height=${this.height} radius=${this.radius}]`}}const ph=["precision mediump float;","void main(void){","float test = 0.1;","%forloop%","gl_FragColor = vec4(0.0);","}"].join(` +`);function gh(s){let t="";for(let e=0;e0&&(t+=` +else `),e>>=0;return Pn[e]||yh(s,t,e)}let Cs=0;function yh(s,t,e){const i={};let r=0;Cs||(Cs=Mn());for(let a=0;a0){const a=new Uint8Array(s,e*8,n);new Uint8Array(t,e*8,n).set(a)}}const _h={normal:"normal-npm",add:"add-npm",screen:"screen-npm"};var bh=(s=>(s[s.DISABLED=0]="DISABLED",s[s.RENDERING_MASK_ADD=1]="RENDERING_MASK_ADD",s[s.MASK_ACTIVE=2]="MASK_ACTIVE",s[s.RENDERING_MASK_REMOVE=3]="RENDERING_MASK_REMOVE",s[s.NONE=4]="NONE",s))(bh||{});function Zi(s,t){return t.alphaMode==="no-premultiply-alpha"&&_h[s]||s}class wh{constructor(){this.ids=Object.create(null),this.textures=[],this.count=0}clear(){for(let t=0;t0?kn[--Ks]:new vh}function Ji(s){kn[Ks++]=s}let pe=0;const Bn=class Xe{constructor(t={}){this.uid=tt("batcher"),this.dirty=!0,this.batchIndex=0,this.batches=[],this._elements=[],Xe.defaultOptions.maxTextures=Xe.defaultOptions.maxTextures??Mn(),t={...Xe.defaultOptions,...t};const{maxTextures:e,attributesInitialSize:i,indicesInitialSize:r}=t;this.attributeBuffer=new qi(i*4),this.indexBuffer=new Uint16Array(r),this.maxTextures=e}begin(){this.elementSize=0,this.elementStart=0,this.indexSize=0,this.attributeSize=0;for(let t=0;tthis.attributeBuffer.size&&this._resizeAttributeBuffer(this.attributeSize*4),this.indexSize>this.indexBuffer.length&&this._resizeIndexBuffer(this.indexSize);const o=this.attributeBuffer.float32View,h=this.attributeBuffer.uint32View,c=this.indexBuffer;let l=this._batchIndexSize,u=this._batchIndexStart,d="startBatch";const f=this.maxTextures;for(let p=this.elementStart;p=f||_)&&(this._finishBatch(i,u,l-u,r,a,t,d),d="renderBatch",u=l,a=y,i=Qi(),r=i.textures,r.clear(),++pe),m._textureId=x._textureBindLocation=r.count,r.ids[x.uid]=r.count,r.textures[r.count++]=x,m._batch=i,l+=m.indexSize,m.packAsQuad?(this.packQuadAttributes(m,o,h,m._attributeStart,m._textureId),this.packQuadIndex(c,m._indexStart,m._attributeStart/this.vertexSize)):(this.packAttributes(m,o,h,m._attributeStart,m._textureId),this.packIndex(m,c,m._indexStart,m._attributeStart/this.vertexSize))}r.count>0&&(this._finishBatch(i,u,l-u,r,a,t,d),u=l,++pe),this.elementStart=this.elementSize,this._batchIndexStart=u,this._batchIndexSize=l}_finishBatch(t,e,i,r,n,a,o){t.gpuBindGroup=null,t.bindGroup=null,t.action=o,t.batcher=this,t.textures=r,t.blendMode=n,t.start=e,t.size=i,++pe,this.batches[this.batchIndex++]=t,a.add(t)}finish(t){this.break(t)}ensureAttributeBuffer(t){t*4<=this.attributeBuffer.size||this._resizeAttributeBuffer(t*4)}ensureIndexBuffer(t){t<=this.indexBuffer.length||this._resizeIndexBuffer(t)}_resizeAttributeBuffer(t){const e=Math.max(t,this.attributeBuffer.size*2),i=new qi(e);Ki(this.attributeBuffer.rawBinaryData,i.rawBinaryData),this.attributeBuffer=i}_resizeIndexBuffer(t){const e=this.indexBuffer;let i=Math.max(t,e.length*1.5);i+=i%2;const r=i>65535?new Uint32Array(i):new Uint16Array(i);if(r.BYTES_PER_ELEMENT!==e.BYTES_PER_ELEMENT)for(let n=0;n(s[s.MAP_READ=1]="MAP_READ",s[s.MAP_WRITE=2]="MAP_WRITE",s[s.COPY_SRC=4]="COPY_SRC",s[s.COPY_DST=8]="COPY_DST",s[s.INDEX=16]="INDEX",s[s.VERTEX=32]="VERTEX",s[s.UNIFORM=64]="UNIFORM",s[s.STORAGE=128]="STORAGE",s[s.INDIRECT=256]="INDIRECT",s[s.QUERY_RESOLVE=512]="QUERY_RESOLVE",s[s.STATIC=1024]="STATIC",s))(Z||{});class kt extends ot{constructor(t){let{data:e,size:i}=t;const{usage:r,label:n,shrinkToFit:a}=t;super(),this.uid=tt("buffer"),this._resourceType="buffer",this._resourceId=tt("resource"),this._touched=0,this._updateID=1,this.shrinkToFit=!0,this.destroyed=!1,e instanceof Array&&(e=new Float32Array(e)),this._data=e,i=i??(e==null?void 0:e.byteLength);const o=!!e;this.descriptor={size:i,usage:r,mappedAtCreation:o,label:n},this.shrinkToFit=a??!0}get data(){return this._data}set data(t){this.setDataWithSize(t,t.length,!0)}get static(){return!!(this.descriptor.usage&Z.STATIC)}set static(t){t?this.descriptor.usage|=Z.STATIC:this.descriptor.usage&=~Z.STATIC}setDataWithSize(t,e,i){if(this._updateID++,this._updateSize=e*t.BYTES_PER_ELEMENT,this._data===t){i&&this.emit("update",this);return}const r=this._data;if(this._data=t,r.length!==t.length){!this.shrinkToFit&&t.byteLengtho&&(o=f),p>h&&(h=p),fe.destroy()),this.attributes=null,this.buffers=null,this.indexBuffer=null,this._bounds=null}}const Th=new Float32Array(1),Mh=new Uint32Array(1);class Ph extends In{constructor(){const e=new kt({data:Th,label:"attribute-batch-buffer",usage:Z.VERTEX|Z.COPY_DST,shrinkToFit:!1}),i=new kt({data:Mh,label:"index-batch-buffer",usage:Z.INDEX|Z.COPY_DST,shrinkToFit:!1}),r=6*4;super({attributes:{aPosition:{buffer:e,format:"float32x2",stride:r,offset:0},aUV:{buffer:e,format:"float32x2",stride:r,offset:2*4},aColor:{buffer:e,format:"unorm8x4",stride:r,offset:4*4},aTextureIdAndRound:{buffer:e,format:"uint16x2",stride:r,offset:5*4}},indexBuffer:i})}}function tr(s,t,e){if(s)for(const i in s){const r=i.toLocaleLowerCase(),n=t[r];if(n){let a=s[i];i==="header"&&(a=a.replace(/@in\s+[^;]+;\s*/g,"").replace(/@out\s+[^;]+;\s*/g,"")),e&&n.push(`//----${e}----//`),n.push(a)}else J(`${i} placement hook does not exist in shader`)}}const kh=/\{\{(.*?)\}\}/g;function er(s){var i;const t={};return(((i=s.match(kh))==null?void 0:i.map(r=>r.replace(/[{()}]/g,"")))??[]).forEach(r=>{t[r]=[]}),t}function sr(s,t){let e;const i=/@in\s+([^;]+);/g;for(;(e=i.exec(s))!==null;)t.push(e[1])}function ir(s,t,e=!1){const i=[];sr(t,i),s.forEach(o=>{o.header&&sr(o.header,i)});const r=i;e&&r.sort();const n=r.map((o,h)=>` @location(${h}) ${o},`).join(` `);let a=t.replace(/@in\s+[^;]+;\s*/g,"");return a=a.replace("{{in}}",` ${n} -`),a}function rr(s,t){let e;const i=/@out\s+([^;]+);/g;for(;(e=i.exec(s))!==null;)t.push(e[1])}function kh(s){const e=/\b(\w+)\s*:/g.exec(s);return e?e[1]:""}function Eh(s){const t=/@.*?\s+/g;return s.replace(t,"")}function Bh(s,t){const e=[];rr(t,e),s.forEach(h=>{h.header&&rr(h.header,e)});let i=0;const r=e.sort().map(h=>h.indexOf("builtin")>-1?h:`@location(${i++}) ${h}`).join(`, +`),a}function rr(s,t){let e;const i=/@out\s+([^;]+);/g;for(;(e=i.exec(s))!==null;)t.push(e[1])}function Bh(s){const e=/\b(\w+)\s*:/g.exec(s);return e?e[1]:""}function Eh(s){const t=/@.*?\s+/g;return s.replace(t,"")}function Ih(s,t){const e=[];rr(t,e),s.forEach(h=>{h.header&&rr(h.header,e)});let i=0;const r=e.sort().map(h=>h.indexOf("builtin")>-1?h:`@location(${i++}) ${h}`).join(`, `),n=e.sort().map(h=>` var ${Eh(h)};`).join(` `),a=`return VSOutput( - ${e.sort().map(h=>` ${kh(h)}`).join(`, + ${e.sort().map(h=>` ${Bh(h)}`).join(`, `)});`;let o=t.replace(/@out\s+[^;]+;\s*/g,"");return o=o.replace("{{struct}}",` ${r} `),o=o.replace("{{start}}",` @@ -41,7 +41,7 @@ ${a} `).length?e=e.replace(`{{${i}}}`,`//-----${i} START-----// ${r.join(` `)} -//----${i} FINISH----//`):e=e.replace(`{{${i}}}`,"")}return e}const Mt=Object.create(null),Cs=new Map;let Ih=0;function Fh({template:s,bits:t}){const e=Fn(s,t);if(Mt[e])return Mt[e];const{vertex:i,fragment:r}=Lh(s,t);return Mt[e]=Rn(i,r,t),Mt[e]}function Rh({template:s,bits:t}){const e=Fn(s,t);return Mt[e]||(Mt[e]=Rn(s.vertex,s.fragment,t)),Mt[e]}function Lh(s,t){const e=t.map(a=>a.vertex).filter(a=>!!a),i=t.map(a=>a.fragment).filter(a=>!!a);let r=ir(e,s.vertex,!0);r=Bh(e,r);const n=ir(i,s.fragment,!0);return{vertex:r,fragment:n}}function Fn(s,t){return t.map(e=>(Cs.has(e)||Cs.set(e,Ih++),Cs.get(e))).sort((e,i)=>e-i).join("-")+s.vertex+s.fragment}function Rn(s,t,e){const i=er(s),r=er(t);return e.forEach(n=>{tr(n.vertex,i,n.name),tr(n.fragment,r,n.name)}),{vertex:nr(s,i),fragment:nr(t,r)}}const Gh=` +//----${i} FINISH----//`):e=e.replace(`{{${i}}}`,"")}return e}const Pt=Object.create(null),Ts=new Map;let Fh=0;function Rh({template:s,bits:t}){const e=Fn(s,t);if(Pt[e])return Pt[e];const{vertex:i,fragment:r}=Lh(s,t);return Pt[e]=Rn(i,r,t),Pt[e]}function Gh({template:s,bits:t}){const e=Fn(s,t);return Pt[e]||(Pt[e]=Rn(s.vertex,s.fragment,t)),Pt[e]}function Lh(s,t){const e=t.map(a=>a.vertex).filter(a=>!!a),i=t.map(a=>a.fragment).filter(a=>!!a);let r=ir(e,s.vertex,!0);r=Ih(e,r);const n=ir(i,s.fragment,!0);return{vertex:r,fragment:n}}function Fn(s,t){return t.map(e=>(Ts.has(e)||Ts.set(e,Fh++),Ts.get(e))).sort((e,i)=>e-i).join("-")+s.vertex+s.fragment}function Rn(s,t,e){const i=er(s),r=er(t);return e.forEach(n=>{tr(n.vertex,i,n.name),tr(n.fragment,r,n.name)}),{vertex:nr(s,i),fragment:nr(t,r)}}const Oh=` @in aPosition: vec2; @in aUV: vec2; @@ -85,7 +85,7 @@ ${r.join(` {{return}} }; -`,Oh=` +`,Wh=` @in vUV : vec2; @in vColor : vec4; @@ -108,7 +108,7 @@ ${r.join(` return finalColor; }; -`,Wh=` +`,Dh=` in vec2 aPosition; in vec2 aUV; @@ -144,7 +144,7 @@ ${r.join(` {{end}} } -`,Dh=` +`,Uh=` in vec4 vColor; in vec2 vUV; @@ -165,7 +165,7 @@ ${r.join(` {{end}} } -`,Uh={name:"global-uniforms-bit",vertex:{header:` +`,zh={name:"global-uniforms-bit",vertex:{header:` struct GlobalUniforms { uProjectionMatrix:mat3x3, uWorldTransformMatrix:mat3x3, @@ -174,22 +174,22 @@ ${r.join(` } @group(0) @binding(0) var globalUniforms : GlobalUniforms; - `}},zh={name:"global-uniforms-bit",vertex:{header:` + `}},Nh={name:"global-uniforms-bit",vertex:{header:` uniform mat3 uProjectionMatrix; uniform mat3 uWorldTransformMatrix; uniform vec4 uWorldColorAlpha; uniform vec2 uResolution; - `}};function Hh({bits:s,name:t}){const e=Fh({template:{fragment:Oh,vertex:Gh},bits:[Uh,...s]});return ts.from({name:t,vertex:{source:e.vertex,entryPoint:"main"},fragment:{source:e.fragment,entryPoint:"main"}})}function Nh({bits:s,name:t}){return new ln({name:t,...Rh({template:{vertex:Wh,fragment:Dh},bits:[zh,...s]})})}const Vh={name:"color-bit",vertex:{header:` + `}};function Hh({bits:s,name:t}){const e=Rh({template:{fragment:Wh,vertex:Oh},bits:[zh,...s]});return es.from({name:t,vertex:{source:e.vertex,entryPoint:"main"},fragment:{source:e.fragment,entryPoint:"main"}})}function Vh({bits:s,name:t}){return new ln({name:t,...Gh({template:{vertex:Dh,fragment:Uh},bits:[Nh,...s]})})}const $h={name:"color-bit",vertex:{header:` @in aColor: vec4; `,main:` vColor *= vec4(aColor.rgb * aColor.a, aColor.a); - `}},$h={name:"color-bit",vertex:{header:` + `}},Yh={name:"color-bit",vertex:{header:` in vec4 aColor; `,main:` vColor *= vec4(aColor.rgb * aColor.a, aColor.a); - `}},Ts={};function Yh(s){const t=[];if(s===1)t.push("@group(1) @binding(0) var textureSource1: texture_2d;"),t.push("@group(1) @binding(1) var textureSampler1: sampler;");else{let e=0;for(let i=0;i;`),t.push(`@group(1) @binding(${e++}) var textureSampler${i+1}: sampler;`)}return t.join(` + `}},Ms={};function jh(s){const t=[];if(s===1)t.push("@group(1) @binding(0) var textureSource1: texture_2d;"),t.push("@group(1) @binding(1) var textureSampler1: sampler;");else{let e=0;for(let i=0;i;`),t.push(`@group(1) @binding(${e++}) var textureSampler${i+1}: sampler;`)}return t.join(` `)}function Xh(s){const t=[];if(s===1)t.push("outColor = textureSampleGrad(textureSource1, textureSampler1, vUV, uvDx, uvDy);");else{t.push("switch vTextureId {");for(let e=0;e; @out @interpolate(flat) vTextureId : u32; `,main:` @@ -202,14 +202,14 @@ ${r.join(` `},fragment:{header:` @in @interpolate(flat) vTextureId: u32; - ${Yh(s)} + ${jh(s)} `,main:` var uvDx = dpdx(vUV); var uvDy = dpdy(vUV); ${Xh(s)} - `}}),Ts[s]}const Ms={};function qh(s){const t=[];for(let e=0;e0&&t.push("else"),e0&&t.push("else"),e, targetSize: vec2) -> vec2 { return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0; } - `}},Qh={name:"round-pixels-bit",vertex:{header:` + `}},Jh={name:"round-pixels-bit",vertex:{header:` vec2 roundPixels(vec2 position, vec2 targetSize) { return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0; } - `}},ar={};function Jh(s){let t=ar[s];if(t)return t;const e=new Int32Array(s);for(let i=0;i>16&255,i=s>>8&255,r=s&255,n=t>>16&255,a=t>>8&255,o=t&255,h=e*n/255,c=i*a/255,l=r*o/255;return(h<<16)+(c<<8)+l}const nl=new D;class Wn{constructor(){this.packAsQuad=!1,this.batcherName="default",this.applyTransform=!0,this.roundPixels=0,this._batcher=null,this._batch=null}get uvs(){return this.geometryData.uvs}get positions(){return this.geometryData.vertices}get indices(){return this.geometryData.indices}get blendMode(){return this.applyTransform?this.renderable.groupBlendMode:"normal"}get color(){const t=this.baseColor,e=t>>16|t&65280|(t&255)<<16,i=this.renderable;return i?rl(e,i.groupColor)+(this.alpha*i.groupAlpha*255<<24):e+(this.alpha*255<<24)}get transform(){var t;return((t=this.renderable)==null?void 0:t.groupTransform)||nl}copyTo(t){t.indexOffset=this.indexOffset,t.indexSize=this.indexSize,t.attributeOffset=this.attributeOffset,t.attributeSize=this.attributeSize,t.baseColor=this.baseColor,t.alpha=this.alpha,t.texture=this.texture,t.geometryData=this.geometryData}reset(){this.applyTransform=!0}}const Te={extension:{type:P.ShapeBuilder,name:"circle"},build(s,t){let e,i,r,n,a,o;if(s.type==="circle"){const w=s;e=w.x,i=w.y,a=o=w.radius,r=n=0}else if(s.type==="ellipse"){const w=s;e=w.x,i=w.y,a=w.halfWidth,o=w.halfHeight,r=n=0}else{const w=s,C=w.width/2,I=w.height/2;e=w.x+C,i=w.y+I,a=o=Math.max(0,Math.min(w.radius,Math.min(C,I))),r=C-a,n=I-o}if(!(a>=0&&o>=0&&r>=0&&n>=0))return t;const h=Math.ceil(2.3*Math.sqrt(a+o)),c=h*8+(r?4:0)+(n?4:0);if(c===0)return t;if(h===0)return t[0]=t[6]=e+r,t[1]=t[3]=i+n,t[2]=t[4]=e-r,t[5]=t[7]=i-n,t;let l=0,u=h*4+(r?2:0)+2,d=u,f=c,p=r+a,m=n,g=e+p,x=e-p,y=i+m;if(t[l++]=g,t[l++]=y,t[--u]=y,t[--u]=x,n){const w=i-m;t[d++]=x,t[d++]=w,t[--f]=w,t[--f]=g}for(let w=1;w0&&(r[n++]=h,r[n++]=c,r[n++]=h-1),h++;r[n++]=c+1,r[n++]=c,r[n++]=h-1}},al={...Te,extension:{...Te.extension,name:"ellipse"}},ol={...Te,extension:{...Te.extension,name:"roundedRectangle"}},hl=1e-4,hr=1e-4;function ll(s){const t=s.length;if(t<6)return 1;let e=0;for(let i=0,r=s[t-2],n=s[t-1];iu&&(u+=Math.PI*2);let d=l;const f=u-l,p=Math.abs(f),m=Math.sqrt(h*h+c*c),g=(15*p*Math.sqrt(m)/Math.PI>>0)+1,x=f/g;if(d+=x,o){a.push(s,t),a.push(e,i);for(let y=1,_=d;y=0&&(l.join==="round"?y+=Rt(v,S,v-F*E,S-B*E,v-N*E,S-K*E,g,!1)+4:y+=2,g.push(v-N*R,S-K*R),g.push(v+N*E,S+K*E));continue}const vi=(-F+M)*(-B+S)-(-F+v)*(-B+k),Ai=(-N+X)*(-K+S)-(-N+v)*(-K+wt),Be=(Tt*Ai-le*vi)/Ee,Ie=(ce*vi-he*Ai)/Ee,ns=(Be-v)*(Be-v)+(Ie-S)*(Ie-S),Et=v+(Be-v)*E,Bt=S+(Ie-S)*E,It=v-(Be-v)*R,Ft=S-(Ie-S)*R,da=Math.min(Tt*Tt+he*he,le*le+ce*ce),Si=ue?E:R,fa=da+Si*Si*C;ns<=fa?l.join==="bevel"||ns/C>I?(ue?(g.push(Et,Bt),g.push(v+F*R,S+B*R),g.push(Et,Bt),g.push(v+N*R,S+K*R)):(g.push(v-F*E,S-B*E),g.push(It,Ft),g.push(v-N*E,S-K*E),g.push(It,Ft)),y+=2):l.join==="round"?ue?(g.push(Et,Bt),g.push(v+F*R,S+B*R),y+=Rt(v,S,v+F*R,S+B*R,v+N*R,S+K*R,g,!0)+4,g.push(Et,Bt),g.push(v+N*R,S+K*R)):(g.push(v-F*E,S-B*E),g.push(It,Ft),y+=Rt(v,S,v-F*E,S-B*E,v-N*E,S-K*E,g,!1)+4,g.push(v-N*E,S-K*E),g.push(It,Ft)):(g.push(Et,Bt),g.push(It,Ft)):(g.push(v-F*E,S-B*E),g.push(v+F*R,S+B*R),l.join==="round"?ue?y+=Rt(v,S,v+F*R,S+B*R,v+N*R,S+K*R,g,!0)+2:y+=Rt(v,S,v-F*E,S-B*E,v-N*E,S-K*E,g,!1)+2:l.join==="miter"&&ns/C<=I&&(ue?(g.push(It,Ft),g.push(It,Ft)):(g.push(Et,Bt),g.push(Et,Bt)),y+=2),g.push(v-N*E,S-K*E),g.push(v+N*R,S+K*R),y+=2)}M=s[(x-2)*2],k=s[(x-2)*2+1],v=s[(x-1)*2],S=s[(x-1)*2+1],F=-(k-S),B=M-v,ft=Math.sqrt(F*F+B*B),F/=ft,B/=ft,F*=w,B*=w,g.push(v-F*E,S-B*E),g.push(v+F*R,S+B*R),p||(l.cap==="round"?y+=Rt(v-F*(E-R)*.5,S-B*(E-R)*.5,v-F*E,S-B*E,v+F*R,S+B*R,g,!1)+2:l.cap==="square"&&(y+=lr(v,S,F,B,E,R,!1,g)));const ua=hr*hr;for(let z=_;z=0&&a>=0&&(t[0]=i,t[1]=r,t[2]=i+n,t[3]=r,t[4]=i+n,t[5]=r+a,t[6]=i,t[7]=r+a),t},triangulate(s,t,e,i,r,n){let a=0;i*=e,t[i+a]=s[0],t[i+a+1]=s[1],a+=e,t[i+a]=s[2],t[i+a+1]=s[3],a+=e,t[i+a]=s[6],t[i+a+1]=s[7],a+=e,t[i+a]=s[4],t[i+a+1]=s[5],a+=e;const o=i/e;r[n++]=o,r[n++]=o+1,r[n++]=o+2,r[n++]=o+1,r[n++]=o+3,r[n++]=o+2}},pl={extension:{type:P.ShapeBuilder,name:"triangle"},build(s,t){return t[0]=s.x,t[1]=s.y,t[2]=s.x2,t[3]=s.y2,t[4]=s.x3,t[5]=s.y3,t},triangulate(s,t,e,i,r,n){let a=0;i*=e,t[i+a]=s[0],t[i+a+1]=s[1],a+=e,t[i+a]=s[2],t[i+a+1]=s[3],a+=e,t[i+a]=s[4],t[i+a+1]=s[5];const o=i/e;r[n++]=o,r[n++]=o+1,r[n++]=o+2}},rs={};nt.handleByMap(P.ShapeBuilder,rs);nt.add(fl,dl,pl,Te,al,ol);const gl=new U;function ml(s,t){const{geometryData:e,batches:i}=t;i.length=0,e.indices.length=0,e.vertices.length=0,e.uvs.length=0;for(let r=0;r{const f=h.length,p=a.length/2,m=[],g=rs[l.type];if(g.build(l,m),u&&On(m,u),i){const w=l.closePath??!0;cl(m,t,!1,w,a,2,p,h)}else if(e&&c===d){c!==0&&console.warn("[Pixi Graphics] only the last shape have be cut out");const w=[],C=m.slice();yl(e.shapePath).forEach(M=>{w.push(C.length/2),C.push(...M)}),Dn(C,w,a,2,p,h,f)}else g.triangulate(m,a,2,p,h,f);const x=o.length/2,y=t.texture;if(y!==G.WHITE){const w=t.matrix;w&&(u&&w.append(u.clone().invert()),sl(a,2,p,o,x,2,a.length/2-p,w))}else il(o,x,2,a.length/2-p);const _=At.get(Wn);_.indexOffset=f,_.indexSize=h.length-f,_.attributeOffset=p,_.attributeSize=a.length/2-p,_.baseColor=t.color,_.alpha=t.alpha,_.texture=y,_.geometryData=n,r.push(_)})}function yl(s){if(!s)return[];const t=s.shapePrimitives,e=[];for(let i=0;i{At.return(i)})}destroy(){for(const t in this._gpuContextHash)this._gpuContextHash[t]&&this.onGraphicsContextDestroy(this._gpuContextHash[t].context)}};di.extension={type:[P.WebGLSystem,P.WebGPUSystem,P.CanvasSystem],name:"graphicsContext"};di.defaultOptions={bezierSmoothness:.5};let Un=di;const wl=8,Ne=11920929e-14,vl=1;function zn(s,t,e,i,r,n,a,o,h,c){const u=Math.min(.99,Math.max(0,c??Un.defaultOptions.bezierSmoothness));let d=(vl-u)/1;return d*=d,Al(t,e,i,r,n,a,o,h,s,d),s}function Al(s,t,e,i,r,n,a,o,h,c){Zs(s,t,e,i,r,n,a,o,h,c,0),h.push(a,o)}function Zs(s,t,e,i,r,n,a,o,h,c,l){if(l>wl)return;const u=(s+e)/2,d=(t+i)/2,f=(e+r)/2,p=(i+n)/2,m=(r+a)/2,g=(n+o)/2,x=(u+f)/2,y=(d+p)/2,_=(f+m)/2,w=(p+g)/2,C=(x+_)/2,I=(y+w)/2;if(l>0){let M=a-s,k=o-t;const v=Math.abs((e-a)*k-(i-o)*M),S=Math.abs((r-a)*k-(n-o)*M);if(v>Ne&&S>Ne){if((v+S)*(v+S)<=c*(M*M+k*k)){h.push(C,I);return}}else if(v>Ne){if(v*v<=c*(M*M+k*k)){h.push(C,I);return}}else if(S>Ne){if(S*S<=c*(M*M+k*k)){h.push(C,I);return}}else if(M=C-(s+a)/2,k=I-(t+o)/2,M*M+k*k<=c){h.push(C,I);return}}Zs(s,t,u,d,x,y,C,I,h,c,l+1),Zs(C,I,_,w,m,g,a,o,h,c,l+1)}const Sl=8,Cl=11920929e-14,Tl=1;function Ml(s,t,e,i,r,n,a,o){const c=Math.min(.99,Math.max(0,o??Un.defaultOptions.bezierSmoothness));let l=(Tl-c)/1;return l*=l,Pl(t,e,i,r,n,a,s,l),s}function Pl(s,t,e,i,r,n,a,o){Qs(a,s,t,e,i,r,n,o,0),a.push(r,n)}function Qs(s,t,e,i,r,n,a,o,h){if(h>Sl)return;const c=(t+i)/2,l=(e+r)/2,u=(i+n)/2,d=(r+a)/2,f=(c+u)/2,p=(l+d)/2;let m=n-t,g=a-e;const x=Math.abs((i-n)*g-(r-a)*m);if(x>Cl){if(x*x<=o*(m*m+g*g)){s.push(f,p);return}}else if(m=f-(t+n)/2,g=p-(e+a)/2,m*m+g*g<=o){s.push(f,p);return}Qs(s,t,e,c,l,f,p,o,h+1),Qs(s,f,p,u,d,n,a,o,h+1)}function Hn(s,t,e,i,r,n,a,o){let h=Math.abs(r-n);(!a&&r>n||a&&n>r)&&(h=2*Math.PI-h),o=o||Math.max(6,Math.floor(6*Math.pow(i,1/3)*(h/Math.PI))),o=Math.max(o,3);let c=h/o,l=r;c*=a?-1:1;for(let u=0;uu*h)}const we=Math.PI*2,Ps={centerX:0,centerY:0,ang1:0,ang2:0},ks=({x:s,y:t},e,i,r,n,a,o,h)=>{s*=e,t*=i;const c=r*s-n*t,l=n*s+r*t;return h.x=c+a,h.y=l+o,h};function El(s,t){const e=t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),i=t===1.5707963267948966?.551915024494:e,r=Math.cos(s),n=Math.sin(s),a=Math.cos(s+t),o=Math.sin(s+t);return[{x:r-n*i,y:n+r*i},{x:a+o*i,y:o-a*i},{x:a,y:o}]}const ur=(s,t,e,i)=>{const r=s*i-t*e<0?-1:1;let n=s*e+t*i;return n>1&&(n=1),n<-1&&(n=-1),r*Math.acos(n)},Bl=(s,t,e,i,r,n,a,o,h,c,l,u,d)=>{const f=Math.pow(r,2),p=Math.pow(n,2),m=Math.pow(l,2),g=Math.pow(u,2);let x=f*p-f*g-p*m;x<0&&(x=0),x/=f*g+p*m,x=Math.sqrt(x)*(a===o?-1:1);const y=x*r/n*u,_=x*-n/r*l,w=c*y-h*_+(s+e)/2,C=h*y+c*_+(t+i)/2,I=(l-y)/r,M=(u-_)/n,k=(-l-y)/r,v=(-u-_)/n,S=ur(1,0,I,M);let X=ur(I,M,k,v);o===0&&X>0&&(X-=we),o===1&&X<0&&(X+=we),d.centerX=w,d.centerY=C,d.ang1=S,d.ang2=X};function Il(s,t,e,i,r,n,a,o=0,h=0,c=0){if(n===0||a===0)return;const l=Math.sin(o*we/360),u=Math.cos(o*we/360),d=u*(t-i)/2+l*(e-r)/2,f=-l*(t-i)/2+u*(e-r)/2;if(d===0&&f===0)return;n=Math.abs(n),a=Math.abs(a);const p=Math.pow(d,2)/Math.pow(n,2)+Math.pow(f,2)/Math.pow(a,2);p>1&&(n*=Math.sqrt(p),a*=Math.sqrt(p)),Bl(t,e,i,r,n,a,h,c,l,u,d,f,Ps);let{ang1:m,ang2:g}=Ps;const{centerX:x,centerY:y}=Ps;let _=Math.abs(g)/(we/4);Math.abs(1-_)<1e-7&&(_=1);const w=Math.max(Math.ceil(_),1);g/=w;let C=s[s.length-2],I=s[s.length-1];const M={x:0,y:0};for(let k=0;k{const h=o.x-a.x,c=o.y-a.y,l=Math.sqrt(h*h+c*c),u=h/l,d=c/l;return{len:l,nx:u,ny:d}},r=(a,o)=>{a===0?s.moveTo(o.x,o.y):s.lineTo(o.x,o.y)};let n=t[t.length-1];for(let a=0;a0&&(f=-1,p=!0);const m=d/2;let g,x=Math.abs(Math.cos(m)*h/Math.sin(m));x>Math.min(l.len/2,u.len/2)?(x=Math.min(l.len/2,u.len/2),g=Math.abs(x*Math.sin(m)/Math.cos(m))):g=h;const y=o.x+u.nx*x+-u.ny*g*f,_=o.y+u.ny*x+u.nx*g*f,w=Math.atan2(l.ny,l.nx)+Math.PI/2*f,C=Math.atan2(u.ny,u.nx)-Math.PI/2*f;a===0&&s.moveTo(y+Math.cos(w)*g,_+Math.sin(w)*g),s.arc(y,_,g,w,C,p),n=o}}function Rl(s,t,e,i){const r=(o,h)=>Math.sqrt((o.x-h.x)**2+(o.y-h.y)**2),n=(o,h,c)=>({x:o.x+(h.x-o.x)*c,y:o.y+(h.y-o.y)*c}),a=t.length;for(let o=0;o=2;u-=2)l[u]===l[u-2]&&l[u-1]===l[u-3]&&l.splice(u-1,2);return this.poly(l,!0,a)}ellipse(t,e,i,r,n){return this.drawShape(new ci(t,e,i,r),n),this}roundRect(t,e,i,r,n,a){return this.drawShape(new ui(t,e,i,r,n),a),this}drawShape(t,e){return this.endPoly(),this.shapePrimitives.push({shape:t,transform:e}),this}startPoly(t,e){let i=this._currentPoly;return i&&this.endPoly(),i=new be,i.points.push(t,e),this._currentPoly=i,this}endPoly(t=!1){const e=this._currentPoly;return e&&e.points.length>2&&(e.closePath=t,this.shapePrimitives.push({shape:e})),this._currentPoly=null,this}_ensurePoly(t=!0){if(!this._currentPoly&&(this._currentPoly=new be,t)){const e=this.shapePrimitives[this.shapePrimitives.length-1];if(e){let i=e.shape.x,r=e.shape.y;if(e.transform&&!e.transform.isIdentity()){const n=e.transform,a=i;i=n.a*i+n.c*r+n.tx,r=n.b*a+n.d*r+n.ty}this._currentPoly.points.push(i,r)}else this._currentPoly.points.push(0,0)}}buildPath(){const t=this._graphicsPath2D;this.shapePrimitives.length=0,this._currentPoly=null;for(let e=0;eparseInt(k,10)),t.context.poly(y,!0),e&&t.context.fill(),i&&t.context.stroke();break;case"polyline":_=s.getAttribute("points"),y=_.match(/\d+/g).map(k=>parseInt(k,10)),t.context.poly(y,!1),i&&t.context.stroke();break;case"g":case"svg":break;default:{console.info(`[SVG parser] <${s.nodeName}> elements unsupported`);break}}for(let k=0;k{this._fill=Dt({...this._originalFill},ct.defaultFillStyle)})),this._fill=Dt(t===0?"black":t,ct.defaultFillStyle),this.update())}get stroke(){return this._originalStroke}set stroke(t){t!==this._originalStroke&&(this._originalStroke=t,this._isFillStyle(t)&&(this._originalStroke=this._createProxy({...ct.defaultStrokeStyle,...t},()=>{this._stroke=Ze({...this._originalStroke},ct.defaultStrokeStyle)})),this._stroke=Ze(t,ct.defaultStrokeStyle),this.update())}_generateKey(){return this._styleKey=Nl(this),this._styleKey}update(){this._styleKey=null,this.emit("update",this)}reset(){const t=Yt.defaultTextStyle;for(const e in t)this[e]=t[e]}get styleKey(){return this._styleKey||this._generateKey()}clone(){return new Yt({align:this.align,breakWords:this.breakWords,dropShadow:this._dropShadow?{...this._dropShadow}:null,fill:this._fill,fontFamily:this.fontFamily,fontSize:this.fontSize,fontStyle:this.fontStyle,fontVariant:this.fontVariant,fontWeight:this.fontWeight,leading:this.leading,letterSpacing:this.letterSpacing,lineHeight:this.lineHeight,padding:this.padding,stroke:this._stroke,textBaseline:this.textBaseline,whiteSpace:this.whiteSpace,wordWrap:this.wordWrap,wordWrapWidth:this.wordWrapWidth})}destroy(t=!1){var i,r,n,a;if(this.removeAllListeners(),typeof t=="boolean"?t:t==null?void 0:t.texture){const o=typeof t=="boolean"?t:t==null?void 0:t.textureSource;(i=this._fill)!=null&&i.texture&&this._fill.texture.destroy(o),(r=this._originalFill)!=null&&r.texture&&this._originalFill.texture.destroy(o),(n=this._stroke)!=null&&n.texture&&this._stroke.texture.destroy(o),(a=this._originalStroke)!=null&&a.texture&&this._originalStroke.texture.destroy(o)}this._fill=null,this._stroke=null,this.dropShadow=null,this._originalStroke=null,this._originalFill=null}_createProxy(t,e){return new Proxy(t,{set:(i,r,n)=>(i[r]=n,e==null||e(r,n),this.update(),!0)})}_isFillStyle(t){return(t??null)!==null&&!(Q.isColorLike(t)||t instanceof Ce||t instanceof is)}};pi.defaultDropShadow={alpha:1,angle:Math.PI/6,blur:0,color:"black",distance:5};pi.defaultTextStyle={align:"left",breakWords:!1,dropShadow:null,fill:"black",fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",leading:0,letterSpacing:0,lineHeight:0,padding:0,stroke:null,textBaseline:"alphabetic",trim:!1,whiteSpace:"pre",wordWrap:!1,wordWrapWidth:100};let mt=pi;function Yl(s){const t=s;if(typeof t.dropShadow=="boolean"&&t.dropShadow){const e=mt.defaultDropShadow;s.dropShadow={alpha:t.dropShadowAlpha??e.alpha,angle:t.dropShadowAngle??e.angle,blur:t.dropShadowBlur??e.blur,color:t.dropShadowColor??e.color,distance:t.dropShadowDistance??e.distance}}if(t.strokeThickness!==void 0){O(W,"strokeThickness is now a part of stroke");const e=t.stroke;let i={};if(Q.isColorLike(e))i.color=e;else if(e instanceof Ce||e instanceof is)i.fill=e;else if(Object.hasOwnProperty.call(e,"color")||Object.hasOwnProperty.call(e,"fill"))i=e;else throw new Error("Invalid stroke value.");s.stroke={...i,width:t.strokeThickness}}if(Array.isArray(t.fillGradientStops)){O(W,"gradient fill is now a fill pattern: `new FillGradient(...)`");let e;s.fontSize==null?s.fontSize=mt.defaultTextStyle.fontSize:typeof s.fontSize=="string"?e=parseInt(s.fontSize,10):e=s.fontSize;const i=new Ce(0,0,0,e*1.7),r=t.fillGradientStops.map(n=>Q.shared.setValue(n).toNumber());r.forEach((n,a)=>{const o=a/(r.length-1);i.addColorStop(o,n)}),s.fill={fill:i}}}class Xl{constructor(t){this._canvasPool=Object.create(null),this.canvasOptions=t||{},this.enableFullScreen=!1}_createCanvasAndContext(t,e){const i=j.get().createCanvas();i.width=t,i.height=e;const r=i.getContext("2d");return{canvas:i,context:r}}getOptimalCanvasAndContext(t,e,i=1){t=Math.ceil(t*i-1e-6),e=Math.ceil(e*i-1e-6),t=Mi(t),e=Mi(e);const r=(t<<17)+(e<<1);this._canvasPool[r]||(this._canvasPool[r]=[]);let n=this._canvasPool[r].pop();return n||(n=this._createCanvasAndContext(t,e)),n}returnCanvasAndContext(t){const e=t.canvas,{width:i,height:r}=e,n=(i<<17)+(r<<1);this._canvasPool[n].push(t)}clear(){this._canvasPool={}}}const yr=new Xl,jl=["serif","sans-serif","monospace","cursive","fantasy","system-ui"];function Js(s){const t=typeof s.fontSize=="number"?`${s.fontSize}px`:s.fontSize;let e=s.fontFamily;Array.isArray(s.fontFamily)||(e=s.fontFamily.split(","));for(let i=e.length-1;i>=0;i--){let r=e[i].trim();!/([\"\'])[^\'\"]+\1/.test(r)&&!jl.includes(r)&&(r=`"${r}"`),e[i]=r}return`${s.fontStyle} ${s.fontVariant} ${s.fontWeight} ${t} ${e.join(",")}`}const Es={willReadFrequently:!0},xt=class T{static get experimentalLetterSpacingSupported(){let t=T._experimentalLetterSpacingSupported;if(t!==void 0){const e=j.get().getCanvasRenderingContext2D().prototype;t=T._experimentalLetterSpacingSupported="letterSpacing"in e||"textLetterSpacing"in e}return t}constructor(t,e,i,r,n,a,o,h,c){this.text=t,this.style=e,this.width=i,this.height=r,this.lines=n,this.lineWidths=a,this.lineHeight=o,this.maxLineWidth=h,this.fontProperties=c}static measureText(t=" ",e,i=T._canvas,r=e.wordWrap){var y;const n=`${t}:${e.styleKey}`;if(T._measurementCache[n])return T._measurementCache[n];const a=Js(e),o=T.measureFont(a);o.fontSize===0&&(o.fontSize=e.fontSize,o.ascent=e.fontSize);const h=T.__context;h.font=a;const l=(r?T._wordWrap(t,e,i):t).split(/(?:\r\n|\r|\n)/),u=new Array(l.length);let d=0;for(let _=0;_0&&(r?n-=e:n+=(T.graphemeSegmenter(t).length-1)*e),n}static _wordWrap(t,e,i=T._canvas){const r=i.getContext("2d",Es);let n=0,a="",o="";const h=Object.create(null),{letterSpacing:c,whiteSpace:l}=e,u=T._collapseSpaces(l),d=T._collapseNewlines(l);let f=!u;const p=e.wordWrapWidth+c,m=T._tokenize(t);for(let g=0;gp)if(a!==""&&(o+=T._addLine(a),a="",n=0),T.canBreakWords(x,e.breakWords)){const _=T.wordWrapSplit(x);for(let w=0;w<_.length;w++){let C=_[w],I=C,M=1;for(;_[w+M];){const v=_[w+M];if(!T.canBreakChars(I,v,x,w,e.breakWords))C+=v;else break;I=v,M++}w+=M-1;const k=T._getFromCache(C,c,h,r);k+n>p&&(o+=T._addLine(a),f=!1,a="",n=0),a+=C,n+=k}}else{a.length>0&&(o+=T._addLine(a),a="",n=0);const _=g===m.length-1;o+=T._addLine(x,!_),f=!1,a="",n=0}else y+n>p&&(f=!1,o+=T._addLine(a),a="",n=0),(a.length>0||!T.isBreakingSpace(x)||f)&&(a+=x,n+=y)}return o+=T._addLine(a,!1),o}static _addLine(t,e=!0){return t=T._trimRight(t),t=e?`${t} -`:t,t}static _getFromCache(t,e,i,r){let n=i[t];return typeof n!="number"&&(n=T._measureText(t,e,r)+e,i[t]=n),n}static _collapseSpaces(t){return t==="normal"||t==="pre-line"}static _collapseNewlines(t){return t==="normal"}static _trimRight(t){if(typeof t!="string")return"";for(let e=t.length-1;e>=0;e--){const i=t[e];if(!T.isBreakingSpace(i))break;t=t.slice(0,-1)}return t}static _isNewline(t){return typeof t!="string"?!1:T._newlines.includes(t.charCodeAt(0))}static isBreakingSpace(t,e){return typeof t!="string"?!1:T._breakingSpaces.includes(t.charCodeAt(0))}static _tokenize(t){const e=[];let i="";if(typeof t!="string")return e;for(let r=0;r{if(typeof(Intl==null?void 0:Intl.Segmenter)=="function"){const s=new Intl.Segmenter;return t=>[...s.segment(t)].map(e=>e.segment)}return s=>[...s]})();xt.experimentalLetterSpacing=!1;xt._fonts={};xt._newlines=[10,13];xt._breakingSpaces=[9,32,8192,8193,8194,8195,8196,8197,8198,8200,8201,8202,8287,12288];xt._measurementCache={};let ti=xt;function _r(s,t){if(s.texture===G.WHITE&&!s.fill)return Q.shared.setValue(s.color).setAlpha(s.alpha??1).toHexa();if(s.fill){if(s.fill instanceof is){const e=s.fill,i=t.createPattern(e.texture.source.resource,"repeat"),r=e.transform.copyTo(D.shared);return r.scale(e.texture.frame.width,e.texture.frame.height),i.setTransform(r),i}else if(s.fill instanceof Ce){const e=s.fill;if(e.type==="linear"){const i=t.createLinearGradient(e.x0,e.y0,e.x1,e.y1);return e.gradientStops.forEach(r=>{i.addColorStop(r.offset,Q.shared.setValue(r.color).toHex())}),i}}}else{const e=t.createPattern(s.texture.source.resource,"repeat"),i=s.matrix.copyTo(D.shared);return i.scale(s.texture.frame.width,s.texture.frame.height),e.setTransform(i),e}return J("FillStyle not recognised",s),"red"}function $n(s){if(s==="")return[];typeof s=="string"&&(s=[s]);const t=[];for(let e=0,i=s.length;e!this._currentChars.includes(x)).filter((x,y,_)=>_.indexOf(x)===y);if(!e.length)return;this._currentChars=[...this._currentChars,...e];let i;this._currentPageIndex===-1?i=this._nextPage():i=this.pages[this._currentPageIndex];let{canvas:r,context:n}=i.canvasAndContext,a=i.texture.source;const o=this._style;let h=this._currentX,c=this._currentY;const l=this.baseRenderedFontSize/this.baseMeasurementFontSize,u=this._padding*l,d=o.fontStyle==="italic"?2:1;let f=0,p=!1;for(let x=0;xthis._textureSize&&(c+=f,f=M,h=0,c+f>this._textureSize)){a.update();const v=this._nextPage();r=v.canvasAndContext.canvas,n=v.canvasAndContext.context,a=v.texture.source,c=0}const k=w/l-(((m=o.dropShadow)==null?void 0:m.distance)??0)-(((g=o._stroke)==null?void 0:g.width)??0);if(this.chars[y]={id:y.codePointAt(0),xOffset:-this._padding,yOffset:-this._padding,xAdvance:k,kerning:{}},p){this._drawGlyph(n,_,h+u,c+u,l,o);const v=a.width*l,S=a.height*l,X=new U(h/v*a.width,c/S*a.height,I/v*a.width,M/S*a.height);this.chars[y].texture=new G({source:a,frame:X}),h+=Math.ceil(I)}}a.update(),this._currentX=h,this._currentY=c,this._skipKerning&&this._applyKerning(e,n)}get pageTextures(){return O(W,"BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead."),this.pages}_applyKerning(t,e){const i=this._measureCache;for(let r=0;r{const m=n.width;for(let g=0;g{let p=n.chars.length-1;if(i){let m=n.chars[p];for(;m===" ";)n.width-=e.chars[m].xAdvance,m=n.chars[--p]}r.width=Math.max(r.width,n.width),n={width:0,charPositions:[],chars:[],spaceWidth:0,spacesIndex:[]},o=!0,r.lines.push(n),r.height+=e.lineHeight},u=e.baseMeasurementFontSize/t.fontSize,d=t.letterSpacing*u,f=t.wordWrapWidth*u;for(let p=0;p>16&255,i=s>>8&255,r=s&255,n=t>>16&255,a=t>>8&255,o=t&255,h=e*n/255,c=i*a/255,l=r*o/255;return(h<<16)+(c<<8)+l}const al=new D;class Wn{constructor(){this.packAsQuad=!1,this.batcherName="default",this.applyTransform=!0,this.roundPixels=0,this._batcher=null,this._batch=null}get uvs(){return this.geometryData.uvs}get positions(){return this.geometryData.vertices}get indices(){return this.geometryData.indices}get blendMode(){return this.applyTransform?this.renderable.groupBlendMode:"normal"}get color(){const t=this.baseColor,e=t>>16|t&65280|(t&255)<<16,i=this.renderable;return i?nl(e,i.groupColor)+(this.alpha*i.groupAlpha*255<<24):e+(this.alpha*255<<24)}get transform(){var t;return((t=this.renderable)==null?void 0:t.groupTransform)||al}copyTo(t){t.indexOffset=this.indexOffset,t.indexSize=this.indexSize,t.attributeOffset=this.attributeOffset,t.attributeSize=this.attributeSize,t.baseColor=this.baseColor,t.alpha=this.alpha,t.texture=this.texture,t.geometryData=this.geometryData}reset(){this.applyTransform=!0}}const Me={extension:{type:P.ShapeBuilder,name:"circle"},build(s,t){let e,i,r,n,a,o;if(s.type==="circle"){const w=s;e=w.x,i=w.y,a=o=w.radius,r=n=0}else if(s.type==="ellipse"){const w=s;e=w.x,i=w.y,a=w.halfWidth,o=w.halfHeight,r=n=0}else{const w=s,C=w.width/2,I=w.height/2;e=w.x+C,i=w.y+I,a=o=Math.max(0,Math.min(w.radius,Math.min(C,I))),r=C-a,n=I-o}if(!(a>=0&&o>=0&&r>=0&&n>=0))return t;const h=Math.ceil(2.3*Math.sqrt(a+o)),c=h*8+(r?4:0)+(n?4:0);if(c===0)return t;if(h===0)return t[0]=t[6]=e+r,t[1]=t[3]=i+n,t[2]=t[4]=e-r,t[5]=t[7]=i-n,t;let l=0,u=h*4+(r?2:0)+2,d=u,f=c,p=r+a,m=n,g=e+p,x=e-p,y=i+m;if(t[l++]=g,t[l++]=y,t[--u]=y,t[--u]=x,n){const w=i-m;t[d++]=x,t[d++]=w,t[--f]=w,t[--f]=g}for(let w=1;w0&&(r[n++]=h,r[n++]=c,r[n++]=h-1),h++;r[n++]=c+1,r[n++]=c,r[n++]=h-1}},ol={...Me,extension:{...Me.extension,name:"ellipse"}},hl={...Me,extension:{...Me.extension,name:"roundedRectangle"}},ll=1e-4,hr=1e-4;function cl(s){const t=s.length;if(t<6)return 1;let e=0;for(let i=0,r=s[t-2],n=s[t-1];iu&&(u+=Math.PI*2);let d=l;const f=u-l,p=Math.abs(f),m=Math.sqrt(h*h+c*c),g=(15*p*Math.sqrt(m)/Math.PI>>0)+1,x=f/g;if(d+=x,o){a.push(s,t),a.push(e,i);for(let y=1,_=d;y=0&&(l.join==="round"?y+=Lt(A,S,A-F*B,S-E*B,A-H*B,S-K*B,g,!1)+4:y+=2,g.push(A-H*R,S-K*R),g.push(A+H*B,S+K*B));continue}const vi=(-F+M)*(-E+S)-(-F+A)*(-E+k),Ai=(-H+j)*(-K+S)-(-H+A)*(-K+wt),Ie=(Mt*Ai-le*vi)/Ee,Fe=(ce*vi-he*Ai)/Ee,as=(Ie-A)*(Ie-A)+(Fe-S)*(Fe-S),It=A+(Ie-A)*B,Ft=S+(Fe-S)*B,Rt=A-(Ie-A)*R,Gt=S-(Fe-S)*R,fa=Math.min(Mt*Mt+he*he,le*le+ce*ce),Si=ue?B:R,pa=fa+Si*Si*C;as<=pa?l.join==="bevel"||as/C>I?(ue?(g.push(It,Ft),g.push(A+F*R,S+E*R),g.push(It,Ft),g.push(A+H*R,S+K*R)):(g.push(A-F*B,S-E*B),g.push(Rt,Gt),g.push(A-H*B,S-K*B),g.push(Rt,Gt)),y+=2):l.join==="round"?ue?(g.push(It,Ft),g.push(A+F*R,S+E*R),y+=Lt(A,S,A+F*R,S+E*R,A+H*R,S+K*R,g,!0)+4,g.push(It,Ft),g.push(A+H*R,S+K*R)):(g.push(A-F*B,S-E*B),g.push(Rt,Gt),y+=Lt(A,S,A-F*B,S-E*B,A-H*B,S-K*B,g,!1)+4,g.push(A-H*B,S-K*B),g.push(Rt,Gt)):(g.push(It,Ft),g.push(Rt,Gt)):(g.push(A-F*B,S-E*B),g.push(A+F*R,S+E*R),l.join==="round"?ue?y+=Lt(A,S,A+F*R,S+E*R,A+H*R,S+K*R,g,!0)+2:y+=Lt(A,S,A-F*B,S-E*B,A-H*B,S-K*B,g,!1)+2:l.join==="miter"&&as/C<=I&&(ue?(g.push(Rt,Gt),g.push(Rt,Gt)):(g.push(It,Ft),g.push(It,Ft)),y+=2),g.push(A-H*B,S-K*B),g.push(A+H*R,S+K*R),y+=2)}M=s[(x-2)*2],k=s[(x-2)*2+1],A=s[(x-1)*2],S=s[(x-1)*2+1],F=-(k-S),E=M-A,pt=Math.sqrt(F*F+E*E),F/=pt,E/=pt,F*=w,E*=w,g.push(A-F*B,S-E*B),g.push(A+F*R,S+E*R),p||(l.cap==="round"?y+=Lt(A-F*(B-R)*.5,S-E*(B-R)*.5,A-F*B,S-E*B,A+F*R,S+E*R,g,!1)+2:l.cap==="square"&&(y+=lr(A,S,F,E,B,R,!1,g)));const da=hr*hr;for(let z=_;z=0&&a>=0&&(t[0]=i,t[1]=r,t[2]=i+n,t[3]=r,t[4]=i+n,t[5]=r+a,t[6]=i,t[7]=r+a),t},triangulate(s,t,e,i,r,n){let a=0;i*=e,t[i+a]=s[0],t[i+a+1]=s[1],a+=e,t[i+a]=s[2],t[i+a+1]=s[3],a+=e,t[i+a]=s[6],t[i+a+1]=s[7],a+=e,t[i+a]=s[4],t[i+a+1]=s[5],a+=e;const o=i/e;r[n++]=o,r[n++]=o+1,r[n++]=o+2,r[n++]=o+1,r[n++]=o+3,r[n++]=o+2}},gl={extension:{type:P.ShapeBuilder,name:"triangle"},build(s,t){return t[0]=s.x,t[1]=s.y,t[2]=s.x2,t[3]=s.y2,t[4]=s.x3,t[5]=s.y3,t},triangulate(s,t,e,i,r,n){let a=0;i*=e,t[i+a]=s[0],t[i+a+1]=s[1],a+=e,t[i+a]=s[2],t[i+a+1]=s[3],a+=e,t[i+a]=s[4],t[i+a+1]=s[5];const o=i/e;r[n++]=o,r[n++]=o+1,r[n++]=o+2}},ns={};nt.handleByMap(P.ShapeBuilder,ns);nt.add(pl,fl,gl,Me,ol,hl);const ml=new U;function xl(s,t){const{geometryData:e,batches:i}=t;i.length=0,e.indices.length=0,e.vertices.length=0,e.uvs.length=0;for(let r=0;r{const f=h.length,p=a.length/2,m=[],g=ns[l.type];if(g.build(l,m),u&&On(m,u),i){const w=l.closePath??!0;ul(m,t,!1,w,a,2,p,h)}else if(e&&c===d){c!==0&&console.warn("[Pixi Graphics] only the last shape have be cut out");const w=[],C=m.slice();_l(e.shapePath).forEach(M=>{w.push(C.length/2),C.push(...M)}),Dn(C,w,a,2,p,h,f)}else g.triangulate(m,a,2,p,h,f);const x=o.length/2,y=t.texture;if(y!==L.WHITE){const w=t.matrix;w&&(u&&w.append(u.clone().invert()),il(a,2,p,o,x,2,a.length/2-p,w))}else rl(o,x,2,a.length/2-p);const _=At.get(Wn);_.indexOffset=f,_.indexSize=h.length-f,_.attributeOffset=p,_.attributeSize=a.length/2-p,_.baseColor=t.color,_.alpha=t.alpha,_.texture=y,_.geometryData=n,r.push(_)})}function _l(s){if(!s)return[];const t=s.shapePrimitives,e=[];for(let i=0;i{At.return(i)})}destroy(){for(const t in this._gpuContextHash)this._gpuContextHash[t]&&this.onGraphicsContextDestroy(this._gpuContextHash[t].context)}};di.extension={type:[P.WebGLSystem,P.WebGPUSystem,P.CanvasSystem],name:"graphicsContext"};di.defaultOptions={bezierSmoothness:.5};let Un=di;const vl=8,Ve=11920929e-14,Al=1;function zn(s,t,e,i,r,n,a,o,h,c){const u=Math.min(.99,Math.max(0,c??Un.defaultOptions.bezierSmoothness));let d=(Al-u)/1;return d*=d,Sl(t,e,i,r,n,a,o,h,s,d),s}function Sl(s,t,e,i,r,n,a,o,h,c){Qs(s,t,e,i,r,n,a,o,h,c,0),h.push(a,o)}function Qs(s,t,e,i,r,n,a,o,h,c,l){if(l>vl)return;const u=(s+e)/2,d=(t+i)/2,f=(e+r)/2,p=(i+n)/2,m=(r+a)/2,g=(n+o)/2,x=(u+f)/2,y=(d+p)/2,_=(f+m)/2,w=(p+g)/2,C=(x+_)/2,I=(y+w)/2;if(l>0){let M=a-s,k=o-t;const A=Math.abs((e-a)*k-(i-o)*M),S=Math.abs((r-a)*k-(n-o)*M);if(A>Ve&&S>Ve){if((A+S)*(A+S)<=c*(M*M+k*k)){h.push(C,I);return}}else if(A>Ve){if(A*A<=c*(M*M+k*k)){h.push(C,I);return}}else if(S>Ve){if(S*S<=c*(M*M+k*k)){h.push(C,I);return}}else if(M=C-(s+a)/2,k=I-(t+o)/2,M*M+k*k<=c){h.push(C,I);return}}Qs(s,t,u,d,x,y,C,I,h,c,l+1),Qs(C,I,_,w,m,g,a,o,h,c,l+1)}const Cl=8,Tl=11920929e-14,Ml=1;function Pl(s,t,e,i,r,n,a,o){const c=Math.min(.99,Math.max(0,o??Un.defaultOptions.bezierSmoothness));let l=(Ml-c)/1;return l*=l,kl(t,e,i,r,n,a,s,l),s}function kl(s,t,e,i,r,n,a,o){Js(a,s,t,e,i,r,n,o,0),a.push(r,n)}function Js(s,t,e,i,r,n,a,o,h){if(h>Cl)return;const c=(t+i)/2,l=(e+r)/2,u=(i+n)/2,d=(r+a)/2,f=(c+u)/2,p=(l+d)/2;let m=n-t,g=a-e;const x=Math.abs((i-n)*g-(r-a)*m);if(x>Tl){if(x*x<=o*(m*m+g*g)){s.push(f,p);return}}else if(m=f-(t+n)/2,g=p-(e+a)/2,m*m+g*g<=o){s.push(f,p);return}Js(s,t,e,c,l,f,p,o,h+1),Js(s,f,p,u,d,n,a,o,h+1)}function Nn(s,t,e,i,r,n,a,o){let h=Math.abs(r-n);(!a&&r>n||a&&n>r)&&(h=2*Math.PI-h),o=o||Math.max(6,Math.floor(6*Math.pow(i,1/3)*(h/Math.PI))),o=Math.max(o,3);let c=h/o,l=r;c*=a?-1:1;for(let u=0;uu*h)}const we=Math.PI*2,ks={centerX:0,centerY:0,ang1:0,ang2:0},Bs=({x:s,y:t},e,i,r,n,a,o,h)=>{s*=e,t*=i;const c=r*s-n*t,l=n*s+r*t;return h.x=c+a,h.y=l+o,h};function El(s,t){const e=t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),i=t===1.5707963267948966?.551915024494:e,r=Math.cos(s),n=Math.sin(s),a=Math.cos(s+t),o=Math.sin(s+t);return[{x:r-n*i,y:n+r*i},{x:a+o*i,y:o-a*i},{x:a,y:o}]}const ur=(s,t,e,i)=>{const r=s*i-t*e<0?-1:1;let n=s*e+t*i;return n>1&&(n=1),n<-1&&(n=-1),r*Math.acos(n)},Il=(s,t,e,i,r,n,a,o,h,c,l,u,d)=>{const f=Math.pow(r,2),p=Math.pow(n,2),m=Math.pow(l,2),g=Math.pow(u,2);let x=f*p-f*g-p*m;x<0&&(x=0),x/=f*g+p*m,x=Math.sqrt(x)*(a===o?-1:1);const y=x*r/n*u,_=x*-n/r*l,w=c*y-h*_+(s+e)/2,C=h*y+c*_+(t+i)/2,I=(l-y)/r,M=(u-_)/n,k=(-l-y)/r,A=(-u-_)/n,S=ur(1,0,I,M);let j=ur(I,M,k,A);o===0&&j>0&&(j-=we),o===1&&j<0&&(j+=we),d.centerX=w,d.centerY=C,d.ang1=S,d.ang2=j};function Fl(s,t,e,i,r,n,a,o=0,h=0,c=0){if(n===0||a===0)return;const l=Math.sin(o*we/360),u=Math.cos(o*we/360),d=u*(t-i)/2+l*(e-r)/2,f=-l*(t-i)/2+u*(e-r)/2;if(d===0&&f===0)return;n=Math.abs(n),a=Math.abs(a);const p=Math.pow(d,2)/Math.pow(n,2)+Math.pow(f,2)/Math.pow(a,2);p>1&&(n*=Math.sqrt(p),a*=Math.sqrt(p)),Il(t,e,i,r,n,a,h,c,l,u,d,f,ks);let{ang1:m,ang2:g}=ks;const{centerX:x,centerY:y}=ks;let _=Math.abs(g)/(we/4);Math.abs(1-_)<1e-7&&(_=1);const w=Math.max(Math.ceil(_),1);g/=w;let C=s[s.length-2],I=s[s.length-1];const M={x:0,y:0};for(let k=0;k{const h=o.x-a.x,c=o.y-a.y,l=Math.sqrt(h*h+c*c),u=h/l,d=c/l;return{len:l,nx:u,ny:d}},r=(a,o)=>{a===0?s.moveTo(o.x,o.y):s.lineTo(o.x,o.y)};let n=t[t.length-1];for(let a=0;a0&&(f=-1,p=!0);const m=d/2;let g,x=Math.abs(Math.cos(m)*h/Math.sin(m));x>Math.min(l.len/2,u.len/2)?(x=Math.min(l.len/2,u.len/2),g=Math.abs(x*Math.sin(m)/Math.cos(m))):g=h;const y=o.x+u.nx*x+-u.ny*g*f,_=o.y+u.ny*x+u.nx*g*f,w=Math.atan2(l.ny,l.nx)+Math.PI/2*f,C=Math.atan2(u.ny,u.nx)-Math.PI/2*f;a===0&&s.moveTo(y+Math.cos(w)*g,_+Math.sin(w)*g),s.arc(y,_,g,w,C,p),n=o}}function Gl(s,t,e,i){const r=(o,h)=>Math.sqrt((o.x-h.x)**2+(o.y-h.y)**2),n=(o,h,c)=>({x:o.x+(h.x-o.x)*c,y:o.y+(h.y-o.y)*c}),a=t.length;for(let o=0;o=2;u-=2)l[u]===l[u-2]&&l[u-1]===l[u-3]&&l.splice(u-1,2);return this.poly(l,!0,a)}ellipse(t,e,i,r,n){return this.drawShape(new ci(t,e,i,r),n),this}roundRect(t,e,i,r,n,a){return this.drawShape(new ui(t,e,i,r,n),a),this}drawShape(t,e){return this.endPoly(),this.shapePrimitives.push({shape:t,transform:e}),this}startPoly(t,e){let i=this._currentPoly;return i&&this.endPoly(),i=new be,i.points.push(t,e),this._currentPoly=i,this}endPoly(t=!1){const e=this._currentPoly;return e&&e.points.length>2&&(e.closePath=t,this.shapePrimitives.push({shape:e})),this._currentPoly=null,this}_ensurePoly(t=!0){if(!this._currentPoly&&(this._currentPoly=new be,t)){const e=this.shapePrimitives[this.shapePrimitives.length-1];if(e){let i=e.shape.x,r=e.shape.y;if(e.transform&&!e.transform.isIdentity()){const n=e.transform,a=i;i=n.a*i+n.c*r+n.tx,r=n.b*a+n.d*r+n.ty}this._currentPoly.points.push(i,r)}else this._currentPoly.points.push(0,0)}}buildPath(){const t=this._graphicsPath2D;this.shapePrimitives.length=0,this._currentPoly=null;for(let e=0;eparseInt(k,10)),t.context.poly(y,!0),e&&t.context.fill(),i&&t.context.stroke();break;case"polyline":_=s.getAttribute("points"),y=_.match(/\d+/g).map(k=>parseInt(k,10)),t.context.poly(y,!1),i&&t.context.stroke();break;case"g":case"svg":break;default:{console.info(`[SVG parser] <${s.nodeName}> elements unsupported`);break}}for(let k=0;k{this._fill=zt({...this._originalFill},dt.defaultFillStyle)})),this._fill=zt(t===0?"black":t,dt.defaultFillStyle),this.update())}get stroke(){return this._originalStroke}set stroke(t){t!==this._originalStroke&&(this._originalStroke=t,this._isFillStyle(t)&&(this._originalStroke=this._createProxy({...dt.defaultStrokeStyle,...t},()=>{this._stroke=Qe({...this._originalStroke},dt.defaultStrokeStyle)})),this._stroke=Qe(t,dt.defaultStrokeStyle),this.update())}_generateKey(){return this._styleKey=Vl(this),this._styleKey}update(){this._styleKey=null,this.emit("update",this)}reset(){const t=jt.defaultTextStyle;for(const e in t)this[e]=t[e]}get styleKey(){return this._styleKey||this._generateKey()}clone(){return new jt({align:this.align,breakWords:this.breakWords,dropShadow:this._dropShadow?{...this._dropShadow}:null,fill:this._fill,fontFamily:this.fontFamily,fontSize:this.fontSize,fontStyle:this.fontStyle,fontVariant:this.fontVariant,fontWeight:this.fontWeight,leading:this.leading,letterSpacing:this.letterSpacing,lineHeight:this.lineHeight,padding:this.padding,stroke:this._stroke,textBaseline:this.textBaseline,whiteSpace:this.whiteSpace,wordWrap:this.wordWrap,wordWrapWidth:this.wordWrapWidth})}destroy(t=!1){var i,r,n,a;if(this.removeAllListeners(),typeof t=="boolean"?t:t==null?void 0:t.texture){const o=typeof t=="boolean"?t:t==null?void 0:t.textureSource;(i=this._fill)!=null&&i.texture&&this._fill.texture.destroy(o),(r=this._originalFill)!=null&&r.texture&&this._originalFill.texture.destroy(o),(n=this._stroke)!=null&&n.texture&&this._stroke.texture.destroy(o),(a=this._originalStroke)!=null&&a.texture&&this._originalStroke.texture.destroy(o)}this._fill=null,this._stroke=null,this.dropShadow=null,this._originalStroke=null,this._originalFill=null}_createProxy(t,e){return new Proxy(t,{set:(i,r,n)=>(i[r]=n,e==null||e(r,n),this.update(),!0)})}_isFillStyle(t){return(t??null)!==null&&!(Q.isColorLike(t)||t instanceof Te||t instanceof rs)}};pi.defaultDropShadow={alpha:1,angle:Math.PI/6,blur:0,color:"black",distance:5};pi.defaultTextStyle={align:"left",breakWords:!1,dropShadow:null,fill:"black",fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",leading:0,letterSpacing:0,lineHeight:0,padding:0,stroke:null,textBaseline:"alphabetic",trim:!1,whiteSpace:"pre",wordWrap:!1,wordWrapWidth:100};let ut=pi;function jl(s){const t=s;if(typeof t.dropShadow=="boolean"&&t.dropShadow){const e=ut.defaultDropShadow;s.dropShadow={alpha:t.dropShadowAlpha??e.alpha,angle:t.dropShadowAngle??e.angle,blur:t.dropShadowBlur??e.blur,color:t.dropShadowColor??e.color,distance:t.dropShadowDistance??e.distance}}if(t.strokeThickness!==void 0){O(W,"strokeThickness is now a part of stroke");const e=t.stroke;let i={};if(Q.isColorLike(e))i.color=e;else if(e instanceof Te||e instanceof rs)i.fill=e;else if(Object.hasOwnProperty.call(e,"color")||Object.hasOwnProperty.call(e,"fill"))i=e;else throw new Error("Invalid stroke value.");s.stroke={...i,width:t.strokeThickness}}if(Array.isArray(t.fillGradientStops)){O(W,"gradient fill is now a fill pattern: `new FillGradient(...)`");let e;s.fontSize==null?s.fontSize=ut.defaultTextStyle.fontSize:typeof s.fontSize=="string"?e=parseInt(s.fontSize,10):e=s.fontSize;const i=new Te(0,0,0,e*1.7),r=t.fillGradientStops.map(n=>Q.shared.setValue(n).toNumber());r.forEach((n,a)=>{const o=a/(r.length-1);i.addColorStop(o,n)}),s.fill={fill:i}}}class Xl{constructor(t){this._canvasPool=Object.create(null),this.canvasOptions=t||{},this.enableFullScreen=!1}_createCanvasAndContext(t,e){const i=q.get().createCanvas();i.width=t,i.height=e;const r=i.getContext("2d");return{canvas:i,context:r}}getOptimalCanvasAndContext(t,e,i=1){t=Math.ceil(t*i-1e-6),e=Math.ceil(e*i-1e-6),t=Mi(t),e=Mi(e);const r=(t<<17)+(e<<1);this._canvasPool[r]||(this._canvasPool[r]=[]);let n=this._canvasPool[r].pop();return n||(n=this._createCanvasAndContext(t,e)),n}returnCanvasAndContext(t){const e=t.canvas,{width:i,height:r}=e,n=(i<<17)+(r<<1);this._canvasPool[n].push(t)}clear(){this._canvasPool={}}}const yr=new Xl,ql=["serif","sans-serif","monospace","cursive","fantasy","system-ui"];function ti(s){const t=typeof s.fontSize=="number"?`${s.fontSize}px`:s.fontSize;let e=s.fontFamily;Array.isArray(s.fontFamily)||(e=s.fontFamily.split(","));for(let i=e.length-1;i>=0;i--){let r=e[i].trim();!/([\"\'])[^\'\"]+\1/.test(r)&&!ql.includes(r)&&(r=`"${r}"`),e[i]=r}return`${s.fontStyle} ${s.fontVariant} ${s.fontWeight} ${t} ${e.join(",")}`}const Es={willReadFrequently:!0},xt=class T{static get experimentalLetterSpacingSupported(){let t=T._experimentalLetterSpacingSupported;if(t!==void 0){const e=q.get().getCanvasRenderingContext2D().prototype;t=T._experimentalLetterSpacingSupported="letterSpacing"in e||"textLetterSpacing"in e}return t}constructor(t,e,i,r,n,a,o,h,c){this.text=t,this.style=e,this.width=i,this.height=r,this.lines=n,this.lineWidths=a,this.lineHeight=o,this.maxLineWidth=h,this.fontProperties=c}static measureText(t=" ",e,i=T._canvas,r=e.wordWrap){var y;const n=`${t}:${e.styleKey}`;if(T._measurementCache[n])return T._measurementCache[n];const a=ti(e),o=T.measureFont(a);o.fontSize===0&&(o.fontSize=e.fontSize,o.ascent=e.fontSize);const h=T.__context;h.font=a;const l=(r?T._wordWrap(t,e,i):t).split(/(?:\r\n|\r|\n)/),u=new Array(l.length);let d=0;for(let _=0;_0&&(r?n-=e:n+=(T.graphemeSegmenter(t).length-1)*e),n}static _wordWrap(t,e,i=T._canvas){const r=i.getContext("2d",Es);let n=0,a="",o="";const h=Object.create(null),{letterSpacing:c,whiteSpace:l}=e,u=T._collapseSpaces(l),d=T._collapseNewlines(l);let f=!u;const p=e.wordWrapWidth+c,m=T._tokenize(t);for(let g=0;gp)if(a!==""&&(o+=T._addLine(a),a="",n=0),T.canBreakWords(x,e.breakWords)){const _=T.wordWrapSplit(x);for(let w=0;w<_.length;w++){let C=_[w],I=C,M=1;for(;_[w+M];){const A=_[w+M];if(!T.canBreakChars(I,A,x,w,e.breakWords))C+=A;else break;I=A,M++}w+=M-1;const k=T._getFromCache(C,c,h,r);k+n>p&&(o+=T._addLine(a),f=!1,a="",n=0),a+=C,n+=k}}else{a.length>0&&(o+=T._addLine(a),a="",n=0);const _=g===m.length-1;o+=T._addLine(x,!_),f=!1,a="",n=0}else y+n>p&&(f=!1,o+=T._addLine(a),a="",n=0),(a.length>0||!T.isBreakingSpace(x)||f)&&(a+=x,n+=y)}return o+=T._addLine(a,!1),o}static _addLine(t,e=!0){return t=T._trimRight(t),t=e?`${t} +`:t,t}static _getFromCache(t,e,i,r){let n=i[t];return typeof n!="number"&&(n=T._measureText(t,e,r)+e,i[t]=n),n}static _collapseSpaces(t){return t==="normal"||t==="pre-line"}static _collapseNewlines(t){return t==="normal"}static _trimRight(t){if(typeof t!="string")return"";for(let e=t.length-1;e>=0;e--){const i=t[e];if(!T.isBreakingSpace(i))break;t=t.slice(0,-1)}return t}static _isNewline(t){return typeof t!="string"?!1:T._newlines.includes(t.charCodeAt(0))}static isBreakingSpace(t,e){return typeof t!="string"?!1:T._breakingSpaces.includes(t.charCodeAt(0))}static _tokenize(t){const e=[];let i="";if(typeof t!="string")return e;for(let r=0;r{if(typeof(Intl==null?void 0:Intl.Segmenter)=="function"){const s=new Intl.Segmenter;return t=>[...s.segment(t)].map(e=>e.segment)}return s=>[...s]})();xt.experimentalLetterSpacing=!1;xt._fonts={};xt._newlines=[10,13];xt._breakingSpaces=[9,32,8192,8193,8194,8195,8196,8197,8198,8200,8201,8202,8287,12288];xt._measurementCache={};let ei=xt;function _r(s,t){if(s.texture===L.WHITE&&!s.fill)return Q.shared.setValue(s.color).setAlpha(s.alpha??1).toHexa();if(s.fill){if(s.fill instanceof rs){const e=s.fill,i=t.createPattern(e.texture.source.resource,"repeat"),r=e.transform.copyTo(D.shared);return r.scale(e.texture.frame.width,e.texture.frame.height),i.setTransform(r),i}else if(s.fill instanceof Te){const e=s.fill;if(e.type==="linear"){const i=t.createLinearGradient(e.x0,e.y0,e.x1,e.y1);return e.gradientStops.forEach(r=>{i.addColorStop(r.offset,Q.shared.setValue(r.color).toHex())}),i}}}else{const e=t.createPattern(s.texture.source.resource,"repeat"),i=s.matrix.copyTo(D.shared);return i.scale(s.texture.frame.width,s.texture.frame.height),e.setTransform(i),e}return J("FillStyle not recognised",s),"red"}function $n(s){if(s==="")return[];typeof s=="string"&&(s=[s]);const t=[];for(let e=0,i=s.length;e!this._currentChars.includes(x)).filter((x,y,_)=>_.indexOf(x)===y);if(!e.length)return;this._currentChars=[...this._currentChars,...e];let i;this._currentPageIndex===-1?i=this._nextPage():i=this.pages[this._currentPageIndex];let{canvas:r,context:n}=i.canvasAndContext,a=i.texture.source;const o=this._style;let h=this._currentX,c=this._currentY;const l=this.baseRenderedFontSize/this.baseMeasurementFontSize,u=this._padding*l,d=o.fontStyle==="italic"?2:1;let f=0,p=!1;for(let x=0;xthis._textureSize&&(c+=f,f=M,h=0,c+f>this._textureSize)){a.update();const A=this._nextPage();r=A.canvasAndContext.canvas,n=A.canvasAndContext.context,a=A.texture.source,c=0}const k=w/l-(((m=o.dropShadow)==null?void 0:m.distance)??0)-(((g=o._stroke)==null?void 0:g.width)??0);if(this.chars[y]={id:y.codePointAt(0),xOffset:-this._padding,yOffset:-this._padding,xAdvance:k,kerning:{}},p){this._drawGlyph(n,_,h+u,c+u,l,o);const A=a.width*l,S=a.height*l,j=new U(h/A*a.width,c/S*a.height,I/A*a.width,M/S*a.height);this.chars[y].texture=new L({source:a,frame:j}),h+=Math.ceil(I)}}a.update(),this._currentX=h,this._currentY=c,this._skipKerning&&this._applyKerning(e,n)}get pageTextures(){return O(W,"BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead."),this.pages}_applyKerning(t,e){const i=this._measureCache;for(let r=0;r{const m=n.width;for(let g=0;g{let p=n.chars.length-1;if(i){let m=n.chars[p];for(;m===" ";)n.width-=e.chars[m].xAdvance,m=n.chars[--p]}r.width=Math.max(r.width,n.width),n={width:0,charPositions:[],chars:[],spaceWidth:0,spacesIndex:[]},o=!0,r.lines.push(n),r.height+=e.lineHeight},u=e.baseMeasurementFontSize/t.fontSize,d=t.letterSpacing*u,f=t.wordWrapWidth*u;for(let p=0;pf?(l(),c(h),g||n.charPositions.push(0)):(h.start=n.width,c(h),g||n.charPositions.push(0)),m==="\r"||m===` -`)n.width!==0&&l();else if(!g){const C=x.xAdvance+(x.kerning[a]||0)+d;n.width+=C,n.spaceWidth=C,n.spacesIndex.push(n.charPositions.length),n.chars.push(m)}}else{const w=x.kerning[a]||0,C=x.xAdvance+w+d;h.positions[h.index++]=h.width+w,h.chars.push(m),h.width+=C}a=m}return l(),t.align==="center"?Kl(r):t.align==="right"?Zl(r):t.align==="justify"&&Ql(r),r}function Kl(s){for(let t=0;t50&&J("BitmapText",`You have dynamically created ${Ve} bitmap fonts, this can be inefficient. Try pre installing your font styles using \`BitmapFont.install({name:"style1", style})\``),o.once("destroy",()=>{Ve--,$.remove(i)}),$.set(i,o)}const n=$.get(i);return(a=n.ensureCharacters)==null||a.call(n,t),n}getLayout(t,e,i=!0){const r=this.getFont(t,e);return ql([...t],e,r,i)}measureText(t,e,i=!0){return this.getLayout(t,e,i)}install(...t){var c,l,u,d;let e=t[0];typeof e=="string"&&(e={name:e,style:t[1],chars:(c=t[2])==null?void 0:c.chars,resolution:(l=t[2])==null?void 0:l.resolution,padding:(u=t[2])==null?void 0:u.padding,skipKerning:(d=t[2])==null?void 0:d.skipKerning},O(W,"BitmapFontManager.install(name, style, options) is deprecated, use BitmapFontManager.install({name, style, ...options})"));const i=e==null?void 0:e.name;if(!i)throw new Error("[BitmapFontManager] Property `name` is required.");e={...this.defaultOptions,...e};const r=e.style,n=r instanceof mt?r:new mt(r),a=n._fill.fill!==null&&n._fill.fill!==void 0,o=new br({style:n,overrideFill:a,skipKerning:e.skipKerning,padding:e.padding,resolution:e.resolution,overrideSize:!1}),h=$n(e.chars);return o.ensureCharacters(h.join("")),$.set(`${i}-bitmap`,o),o.once("destroy",()=>$.remove(`${i}-bitmap`)),o}uninstall(t){const e=`${t}-bitmap`,i=$.get(e);i&&($.remove(e),i.destroy())}}const wr=new Jl;class jn extends Cn{constructor(t,e){super();const{textures:i,data:r}=t;Object.keys(r.pages).forEach(n=>{const a=r.pages[parseInt(n,10)],o=i[a.id];this.pages.push({texture:o})}),Object.keys(r.chars).forEach(n=>{const a=r.chars[n],{frame:o,source:h}=i[a.page],c=new U(a.x+o.x,a.y+o.y,a.width,a.height),l=new G({source:h,frame:c});this.chars[n]={id:n.codePointAt(0),xOffset:a.xOffset,yOffset:a.yOffset,xAdvance:a.xAdvance,kerning:a.kerning??{},texture:l}}),this.baseRenderedFontSize=r.fontSize,this.baseMeasurementFontSize=r.fontSize,this.fontMetrics={ascent:0,descent:0,fontSize:r.fontSize},this.baseLineOffset=r.baseLineOffset,this.lineHeight=r.lineHeight,this.fontFamily=r.fontFamily,this.distanceField=r.distanceField??{type:"none",range:0},this.url=e}destroy(){super.destroy();for(let t=0;t")?vr.test(j.get().parseXML(s)):!1},parse(s){return vr.parse(j.get().parseXML(s))}},tc=[".xml",".fnt"],ec={extension:{type:P.CacheParser,name:"cacheBitmapFont"},test:s=>s instanceof jn,getCacheableAssets(s,t){const e={};return s.forEach(i=>{e[i]=t,e[`${i}-bitmap`]=t}),e[`${t.fontFamily}-bitmap`]=t,e}},sc={extension:{type:P.LoadParser,priority:kt.Normal},name:"loadBitmapFont",test(s){return tc.includes(lt.extname(s).toLowerCase())},async testParse(s){return Bs.test(s)||Ar.test(s)},async parse(s,t,e){const i=Bs.test(s)?Bs.parse(s):Ar.parse(s),{src:r}=t,{pages:n}=i,a=[],o=i.distanceField?{scaleMode:"linear",alphaMode:"premultiply-alpha-on-upload",autoGenerateMipmaps:!1,resolution:1}:{};for(let u=0;uh[u.src]);return new jn({data:i,textures:c},r)},async load(s,t){return await(await j.get().fetch(s)).text()},async unload(s,t,e){await Promise.all(s.pages.map(i=>e.unload(i.texture.source._sourceOrigin))),s.destroy()}};class ic{constructor(t,e=!1){this._loader=t,this._assetList=[],this._isLoading=!1,this._maxConcurrent=1,this.verbose=e}add(t){t.forEach(e=>{this._assetList.push(e)}),this.verbose&&console.log("[BackgroundLoader] assets: ",this._assetList),this._isActive&&!this._isLoading&&this._next()}async _next(){if(this._assetList.length&&this._isActive){this._isLoading=!0;const t=[],e=Math.min(this._assetList.length,this._maxConcurrent);for(let i=0;iArray.isArray(s)&&s.every(t=>t instanceof G),getCacheableAssets:(s,t)=>{const e={};return s.forEach(i=>{t.forEach((r,n)=>{e[i+(n===0?"":n+1)]=r})}),e}};async function qn(s){if("Image"in globalThis)return new Promise(t=>{const e=new Image;e.onload=()=>{t(!0)},e.onerror=()=>{t(!1)},e.src=s});if("createImageBitmap"in globalThis&&"fetch"in globalThis){try{const t=await(await fetch(s)).blob();await createImageBitmap(t)}catch{return!1}return!0}return!1}const nc={extension:{type:P.DetectionParser,priority:1},test:async()=>qn("data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A="),add:async s=>[...s,"avif"],remove:async s=>s.filter(t=>t!=="avif")},Sr=["png","jpg","jpeg"],ac={extension:{type:P.DetectionParser,priority:-1},test:()=>Promise.resolve(!0),add:async s=>[...s,...Sr],remove:async s=>s.filter(t=>!Sr.includes(t))},oc="WorkerGlobalScope"in globalThis&&globalThis instanceof globalThis.WorkerGlobalScope;function gi(s){return oc?!1:document.createElement("video").canPlayType(s)!==""}const hc={extension:{type:P.DetectionParser,priority:0},test:async()=>gi("video/mp4"),add:async s=>[...s,"mp4","m4v"],remove:async s=>s.filter(t=>t!=="mp4"&&t!=="m4v")},lc={extension:{type:P.DetectionParser,priority:0},test:async()=>gi("video/ogg"),add:async s=>[...s,"ogv"],remove:async s=>s.filter(t=>t!=="ogv")},cc={extension:{type:P.DetectionParser,priority:0},test:async()=>gi("video/webm"),add:async s=>[...s,"webm"],remove:async s=>s.filter(t=>t!=="webm")},uc={extension:{type:P.DetectionParser,priority:0},test:async()=>qn("data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="),add:async s=>[...s,"webp"],remove:async s=>s.filter(t=>t!=="webp")};class dc{constructor(){this._parsers=[],this._parsersValidated=!1,this.parsers=new Proxy(this._parsers,{set:(t,e,i)=>(this._parsersValidated=!1,t[e]=i,!0)}),this.promiseCache={}}reset(){this._parsersValidated=!1,this.promiseCache={}}_getLoadPromiseAndParser(t,e){const i={promise:null,parser:null};return i.promise=(async()=>{var a,o;let r=null,n=null;if(e.loadParser&&(n=this._parserHash[e.loadParser],n||J(`[Assets] specified load parser "${e.loadParser}" not found while loading ${t}`)),!n){for(let h=0;h({alias:[c],src:c,data:{}})),o=a.length,h=a.map(async c=>{const l=lt.toAbsolute(c.src);if(!r[c.src])try{this.promiseCache[l]||(this.promiseCache[l]=this._getLoadPromiseAndParser(l,c)),r[c.src]=await this.promiseCache[l].promise,e&&e(++i/o)}catch(u){throw delete this.promiseCache[l],delete r[c.src],new Error(`[Loader.load] Failed to load ${l}. -${u}`)}});return await Promise.all(h),n?r[a[0].src]:r}async unload(t){const i=gt(t,r=>({alias:[r],src:r})).map(async r=>{var o,h;const n=lt.toAbsolute(r.src),a=this.promiseCache[n];if(a){const c=await a.promise;delete this.promiseCache[n],await((h=(o=a.parser)==null?void 0:o.unload)==null?void 0:h.call(o,c,r,this))}});await Promise.all(i)}_validateParsers(){this._parsersValidated=!0,this._parserHash=this._parsers.filter(t=>t.name).reduce((t,e)=>(e.name?t[e.name]&&J(`[Assets] loadParser name conflict "${e.name}"`):J("[Assets] loadParser should have a name"),{...t,[e.name]:e}),{})}}function ne(s,t){if(Array.isArray(t)){for(const e of t)if(s.startsWith(`data:${e}`))return!0;return!1}return s.startsWith(`data:${t}`)}function ae(s,t){const e=s.split("?")[0],i=lt.extname(e).toLowerCase();return Array.isArray(t)?t.includes(i):i===t}const fc=".json",pc="application/json",gc={extension:{type:P.LoadParser,priority:kt.Low},name:"loadJson",test(s){return ne(s,pc)||ae(s,fc)},async load(s){return await(await j.get().fetch(s)).json()}},mc=".txt",xc="text/plain",yc={name:"loadTxt",extension:{type:P.LoadParser,priority:kt.Low,name:"loadTxt"},test(s){return ne(s,xc)||ae(s,mc)},async load(s){return await(await j.get().fetch(s)).text()}},_c=["normal","bold","100","200","300","400","500","600","700","800","900"],bc=[".ttf",".otf",".woff",".woff2"],wc=["font/ttf","font/otf","font/woff","font/woff2"],vc=/^(--|-?[A-Z_])[0-9A-Z_-]*$/i;function Ac(s){const t=lt.extname(s),r=lt.basename(s,t).replace(/(-|_)/g," ").toLowerCase().split(" ").map(o=>o.charAt(0).toUpperCase()+o.slice(1));let n=r.length>0;for(const o of r)if(!o.match(vc)){n=!1;break}let a=r.join(" ");return n||(a=`"${a.replace(/[\\"]/g,"\\$&")}"`),a}const Sc=/^[0-9A-Za-z%:/?#\[\]@!\$&'()\*\+,;=\-._~]*$/;function Cc(s){return Sc.test(s)?s:encodeURI(s)}const Tc={extension:{type:P.LoadParser,priority:kt.Low},name:"loadWebFont",test(s){return ne(s,wc)||ae(s,bc)},async load(s,t){var i,r,n;const e=j.get().getFontFaceSet();if(e){const a=[],o=((i=t.data)==null?void 0:i.family)??Ac(s),h=((n=(r=t.data)==null?void 0:r.weights)==null?void 0:n.filter(l=>_c.includes(l)))??["normal"],c=t.data??{};for(let l=0;l{$.remove(t.family),j.get().getFontFaceSet().delete(t)})}};function mi(s,t=1){var i;const e=(i=re.RETINA_PREFIX)==null?void 0:i.exec(s);return e?parseFloat(e[1]):t}function xi(s,t,e){s.label=e,s._sourceOrigin=e;const i=new G({source:s,label:e}),r=()=>{delete t.promiseCache[e],$.has(e)&&$.remove(e)};return i.source.once("destroy",()=>{t.promiseCache[e]&&(J("[Assets] A TextureSource managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the TextureSource."),r())}),i.once("destroy",()=>{s.destroyed||(J("[Assets] A Texture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the Texture."),r())}),i}const Mc=".svg",Pc="image/svg+xml",kc={extension:{type:P.LoadParser,priority:kt.Low,name:"loadSVG"},name:"loadSVG",config:{crossOrigin:"anonymous",parseAsGraphicsContext:!1},test(s){return ne(s,Pc)||ae(s,Mc)},async load(s,t,e){return t.data.parseAsGraphicsContext??this.config.parseAsGraphicsContext?Bc(s):Ec(s,t,e,this.config.crossOrigin)},unload(s){s.destroy(!0)}};async function Ec(s,t,e,i){var g,x,y;const n=await(await j.get().fetch(s)).blob(),a=URL.createObjectURL(n),o=new Image;o.src=a,o.crossOrigin=i,await o.decode(),URL.revokeObjectURL(a);const h=document.createElement("canvas"),c=h.getContext("2d"),l=((g=t.data)==null?void 0:g.resolution)||mi(s),u=((x=t.data)==null?void 0:x.width)??o.width,d=((y=t.data)==null?void 0:y.height)??o.height;h.width=u*l,h.height=d*l,c.drawImage(o,0,0,u*l,d*l);const{parseAsGraphicsContext:f,...p}=t.data,m=new ie({resource:h,alphaMode:"premultiply-alpha-on-upload",resolution:l,...p});return xi(m,e,s)}async function Bc(s){const e=await(await j.get().fetch(s)).text(),i=new ct;return i.svg(e),i}const Ic=`(function () { +`)n.width!==0&&l();else if(!g){const C=x.xAdvance+(x.kerning[a]||0)+d;n.width+=C,n.spaceWidth=C,n.spacesIndex.push(n.charPositions.length),n.chars.push(m)}}else{const w=x.kerning[a]||0,C=x.xAdvance+w+d;h.positions[h.index++]=h.width+w,h.chars.push(m),h.width+=C}a=m}return l(),t.align==="center"?Zl(r):t.align==="right"?Ql(r):t.align==="justify"&&Jl(r),r}function Zl(s){for(let t=0;t50&&J("BitmapText",`You have dynamically created ${$e} bitmap fonts, this can be inefficient. Try pre installing your font styles using \`BitmapFont.install({name:"style1", style})\``),o.once("destroy",()=>{$e--,$.remove(i)}),$.set(i,o)}const n=$.get(i);return(a=n.ensureCharacters)==null||a.call(n,t),n}getLayout(t,e,i=!0){const r=this.getFont(t,e);return Kl([...t],e,r,i)}measureText(t,e,i=!0){return this.getLayout(t,e,i)}install(...t){var c,l,u,d;let e=t[0];typeof e=="string"&&(e={name:e,style:t[1],chars:(c=t[2])==null?void 0:c.chars,resolution:(l=t[2])==null?void 0:l.resolution,padding:(u=t[2])==null?void 0:u.padding,skipKerning:(d=t[2])==null?void 0:d.skipKerning},O(W,"BitmapFontManager.install(name, style, options) is deprecated, use BitmapFontManager.install({name, style, ...options})"));const i=e==null?void 0:e.name;if(!i)throw new Error("[BitmapFontManager] Property `name` is required.");e={...this.defaultOptions,...e};const r=e.style,n=r instanceof ut?r:new ut(r),a=n._fill.fill!==null&&n._fill.fill!==void 0,o=new br({style:n,overrideFill:a,skipKerning:e.skipKerning,padding:e.padding,resolution:e.resolution,overrideSize:!1}),h=$n(e.chars);return o.ensureCharacters(h.join("")),$.set(`${i}-bitmap`,o),o.once("destroy",()=>$.remove(`${i}-bitmap`)),o}uninstall(t){const e=`${t}-bitmap`,i=$.get(e);i&&($.remove(e),i.destroy())}}const wr=new tc;class Xn extends Cn{constructor(t,e){super();const{textures:i,data:r}=t;Object.keys(r.pages).forEach(n=>{const a=r.pages[parseInt(n,10)],o=i[a.id];this.pages.push({texture:o})}),Object.keys(r.chars).forEach(n=>{const a=r.chars[n],{frame:o,source:h}=i[a.page],c=new U(a.x+o.x,a.y+o.y,a.width,a.height),l=new L({source:h,frame:c});this.chars[n]={id:n.codePointAt(0),xOffset:a.xOffset,yOffset:a.yOffset,xAdvance:a.xAdvance,kerning:a.kerning??{},texture:l}}),this.baseRenderedFontSize=r.fontSize,this.baseMeasurementFontSize=r.fontSize,this.fontMetrics={ascent:0,descent:0,fontSize:r.fontSize},this.baseLineOffset=r.baseLineOffset,this.lineHeight=r.lineHeight,this.fontFamily=r.fontFamily,this.distanceField=r.distanceField??{type:"none",range:0},this.url=e}destroy(){super.destroy();for(let t=0;t")?vr.test(q.get().parseXML(s)):!1},parse(s){return vr.parse(q.get().parseXML(s))}},ec=[".xml",".fnt"],sc={extension:{type:P.CacheParser,name:"cacheBitmapFont"},test:s=>s instanceof Xn,getCacheableAssets(s,t){const e={};return s.forEach(i=>{e[i]=t,e[`${i}-bitmap`]=t}),e[`${t.fontFamily}-bitmap`]=t,e}},ic={extension:{type:P.LoadParser,priority:Bt.Normal},name:"loadBitmapFont",test(s){return ec.includes(ct.extname(s).toLowerCase())},async testParse(s){return Is.test(s)||Ar.test(s)},async parse(s,t,e){const i=Is.test(s)?Is.parse(s):Ar.parse(s),{src:r}=t,{pages:n}=i,a=[],o=i.distanceField?{scaleMode:"linear",alphaMode:"premultiply-alpha-on-upload",autoGenerateMipmaps:!1,resolution:1}:{};for(let u=0;uh[u.src]);return new Xn({data:i,textures:c},r)},async load(s,t){return await(await q.get().fetch(s)).text()},async unload(s,t,e){await Promise.all(s.pages.map(i=>e.unload(i.texture.source._sourceOrigin))),s.destroy()}};class rc{constructor(t,e=!1){this._loader=t,this._assetList=[],this._isLoading=!1,this._maxConcurrent=1,this.verbose=e}add(t){t.forEach(e=>{this._assetList.push(e)}),this.verbose&&console.log("[BackgroundLoader] assets: ",this._assetList),this._isActive&&!this._isLoading&&this._next()}async _next(){if(this._assetList.length&&this._isActive){this._isLoading=!0;const t=[],e=Math.min(this._assetList.length,this._maxConcurrent);for(let i=0;iArray.isArray(s)&&s.every(t=>t instanceof L),getCacheableAssets:(s,t)=>{const e={};return s.forEach(i=>{t.forEach((r,n)=>{e[i+(n===0?"":n+1)]=r})}),e}};async function qn(s){if("Image"in globalThis)return new Promise(t=>{const e=new Image;e.onload=()=>{t(!0)},e.onerror=()=>{t(!1)},e.src=s});if("createImageBitmap"in globalThis&&"fetch"in globalThis){try{const t=await(await fetch(s)).blob();await createImageBitmap(t)}catch{return!1}return!0}return!1}const ac={extension:{type:P.DetectionParser,priority:1},test:async()=>qn("data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A="),add:async s=>[...s,"avif"],remove:async s=>s.filter(t=>t!=="avif")},Sr=["png","jpg","jpeg"],oc={extension:{type:P.DetectionParser,priority:-1},test:()=>Promise.resolve(!0),add:async s=>[...s,...Sr],remove:async s=>s.filter(t=>!Sr.includes(t))},hc="WorkerGlobalScope"in globalThis&&globalThis instanceof globalThis.WorkerGlobalScope;function gi(s){return hc?!1:document.createElement("video").canPlayType(s)!==""}const lc={extension:{type:P.DetectionParser,priority:0},test:async()=>gi("video/mp4"),add:async s=>[...s,"mp4","m4v"],remove:async s=>s.filter(t=>t!=="mp4"&&t!=="m4v")},cc={extension:{type:P.DetectionParser,priority:0},test:async()=>gi("video/ogg"),add:async s=>[...s,"ogv"],remove:async s=>s.filter(t=>t!=="ogv")},uc={extension:{type:P.DetectionParser,priority:0},test:async()=>gi("video/webm"),add:async s=>[...s,"webm"],remove:async s=>s.filter(t=>t!=="webm")},dc={extension:{type:P.DetectionParser,priority:0},test:async()=>qn("data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="),add:async s=>[...s,"webp"],remove:async s=>s.filter(t=>t!=="webp")};class fc{constructor(){this._parsers=[],this._parsersValidated=!1,this.parsers=new Proxy(this._parsers,{set:(t,e,i)=>(this._parsersValidated=!1,t[e]=i,!0)}),this.promiseCache={}}reset(){this._parsersValidated=!1,this.promiseCache={}}_getLoadPromiseAndParser(t,e){const i={promise:null,parser:null};return i.promise=(async()=>{var a,o;let r=null,n=null;if(e.loadParser&&(n=this._parserHash[e.loadParser],n||J(`[Assets] specified load parser "${e.loadParser}" not found while loading ${t}`)),!n){for(let h=0;h({alias:[c],src:c,data:{}})),o=a.length,h=a.map(async c=>{const l=ct.toAbsolute(c.src);if(!r[c.src])try{this.promiseCache[l]||(this.promiseCache[l]=this._getLoadPromiseAndParser(l,c)),r[c.src]=await this.promiseCache[l].promise,e&&e(++i/o)}catch(u){throw delete this.promiseCache[l],delete r[c.src],new Error(`[Loader.load] Failed to load ${l}. +${u}`)}});return await Promise.all(h),n?r[a[0].src]:r}async unload(t){const i=mt(t,r=>({alias:[r],src:r})).map(async r=>{var o,h;const n=ct.toAbsolute(r.src),a=this.promiseCache[n];if(a){const c=await a.promise;delete this.promiseCache[n],await((h=(o=a.parser)==null?void 0:o.unload)==null?void 0:h.call(o,c,r,this))}});await Promise.all(i)}_validateParsers(){this._parsersValidated=!0,this._parserHash=this._parsers.filter(t=>t.name).reduce((t,e)=>(e.name?t[e.name]&&J(`[Assets] loadParser name conflict "${e.name}"`):J("[Assets] loadParser should have a name"),{...t,[e.name]:e}),{})}}function ae(s,t){if(Array.isArray(t)){for(const e of t)if(s.startsWith(`data:${e}`))return!0;return!1}return s.startsWith(`data:${t}`)}function oe(s,t){const e=s.split("?")[0],i=ct.extname(e).toLowerCase();return Array.isArray(t)?t.includes(i):i===t}const pc=".json",gc="application/json",mc={extension:{type:P.LoadParser,priority:Bt.Low},name:"loadJson",test(s){return ae(s,gc)||oe(s,pc)},async load(s){return await(await q.get().fetch(s)).json()}},xc=".txt",yc="text/plain",_c={name:"loadTxt",extension:{type:P.LoadParser,priority:Bt.Low,name:"loadTxt"},test(s){return ae(s,yc)||oe(s,xc)},async load(s){return await(await q.get().fetch(s)).text()}},bc=["normal","bold","100","200","300","400","500","600","700","800","900"],wc=[".ttf",".otf",".woff",".woff2"],vc=["font/ttf","font/otf","font/woff","font/woff2"],Ac=/^(--|-?[A-Z_])[0-9A-Z_-]*$/i;function Sc(s){const t=ct.extname(s),r=ct.basename(s,t).replace(/(-|_)/g," ").toLowerCase().split(" ").map(o=>o.charAt(0).toUpperCase()+o.slice(1));let n=r.length>0;for(const o of r)if(!o.match(Ac)){n=!1;break}let a=r.join(" ");return n||(a=`"${a.replace(/[\\"]/g,"\\$&")}"`),a}const Cc=/^[0-9A-Za-z%:/?#\[\]@!\$&'()\*\+,;=\-._~]*$/;function Tc(s){return Cc.test(s)?s:encodeURI(s)}const Mc={extension:{type:P.LoadParser,priority:Bt.Low},name:"loadWebFont",test(s){return ae(s,vc)||oe(s,wc)},async load(s,t){var i,r,n;const e=q.get().getFontFaceSet();if(e){const a=[],o=((i=t.data)==null?void 0:i.family)??Sc(s),h=((n=(r=t.data)==null?void 0:r.weights)==null?void 0:n.filter(l=>bc.includes(l)))??["normal"],c=t.data??{};for(let l=0;l{$.remove(t.family),q.get().getFontFaceSet().delete(t)})}};function mi(s,t=1){var i;const e=(i=ne.RETINA_PREFIX)==null?void 0:i.exec(s);return e?parseFloat(e[1]):t}function xi(s,t,e){s.label=e,s._sourceOrigin=e;const i=new L({source:s,label:e}),r=()=>{delete t.promiseCache[e],$.has(e)&&$.remove(e)};return i.source.once("destroy",()=>{t.promiseCache[e]&&(J("[Assets] A TextureSource managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the TextureSource."),r())}),i.once("destroy",()=>{s.destroyed||(J("[Assets] A Texture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the Texture."),r())}),i}const Pc=".svg",kc="image/svg+xml",Bc={extension:{type:P.LoadParser,priority:Bt.Low,name:"loadSVG"},name:"loadSVG",config:{crossOrigin:"anonymous",parseAsGraphicsContext:!1},test(s){return ae(s,kc)||oe(s,Pc)},async load(s,t,e){return t.data.parseAsGraphicsContext??this.config.parseAsGraphicsContext?Ic(s):Ec(s,t,e,this.config.crossOrigin)},unload(s){s.destroy(!0)}};async function Ec(s,t,e,i){var g,x,y;const n=await(await q.get().fetch(s)).blob(),a=URL.createObjectURL(n),o=new Image;o.src=a,o.crossOrigin=i,await o.decode(),URL.revokeObjectURL(a);const h=document.createElement("canvas"),c=h.getContext("2d"),l=((g=t.data)==null?void 0:g.resolution)||mi(s),u=((x=t.data)==null?void 0:x.width)??o.width,d=((y=t.data)==null?void 0:y.height)??o.height;h.width=u*l,h.height=d*l,c.drawImage(o,0,0,u*l,d*l);const{parseAsGraphicsContext:f,...p}=t.data,m=new re({resource:h,alphaMode:"premultiply-alpha-on-upload",resolution:l,...p});return xi(m,e,s)}async function Ic(s){const e=await(await q.get().fetch(s)).text(),i=new dt;return i.svg(e),i}const Fc=`(function () { 'use strict'; const WHITE_PNG = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII="; @@ -264,7 +264,7 @@ ${u}`)}});return await Promise.all(h),n?r[a[0].src]:r}async unload(t){const i=gt }); })(); -`;let qt=null,ei=class{constructor(){qt||(qt=URL.createObjectURL(new Blob([Ic],{type:"application/javascript"}))),this.worker=new Worker(qt)}};ei.revokeObjectURL=function(){qt&&(URL.revokeObjectURL(qt),qt=null)};const Fc=`(function () { +`;let Kt=null,si=class{constructor(){Kt||(Kt=URL.createObjectURL(new Blob([Fc],{type:"application/javascript"}))),this.worker=new Worker(Kt)}};si.revokeObjectURL=function(){Kt&&(URL.revokeObjectURL(Kt),Kt=null)};const Rc=`(function () { 'use strict'; async function loadImageBitmap(url, alphaMode) { @@ -293,4 +293,4 @@ ${u}`)}});return await Promise.all(h),n?r[a[0].src]:r}async unload(t){const i=gt }; })(); -`;let Kt=null;class Kn{constructor(){Kt||(Kt=URL.createObjectURL(new Blob([Fc],{type:"application/javascript"}))),this.worker=new Worker(Kt)}}Kn.revokeObjectURL=function(){Kt&&(URL.revokeObjectURL(Kt),Kt=null)};let Cr=0,Is;class Rc{constructor(){this._initialized=!1,this._createdWorkers=0,this._workerPool=[],this._queue=[],this._resolveHash={}}isImageBitmapSupported(){return this._isImageBitmapSupported!==void 0?this._isImageBitmapSupported:(this._isImageBitmapSupported=new Promise(t=>{const{worker:e}=new ei;e.addEventListener("message",i=>{e.terminate(),ei.revokeObjectURL(),t(i.data)})}),this._isImageBitmapSupported)}loadImageBitmap(t,e){var i;return this._run("loadImageBitmap",[t,(i=e==null?void 0:e.data)==null?void 0:i.alphaMode])}async _initWorkers(){this._initialized||(this._initialized=!0)}_getWorker(){Is===void 0&&(Is=navigator.hardwareConcurrency||4);let t=this._workerPool.pop();return!t&&this._createdWorkers{this._complete(e.data),this._returnWorker(e.target),this._next()})),t}_returnWorker(t){this._workerPool.push(t)}_complete(t){t.error!==void 0?this._resolveHash[t.uuid].reject(t.error):this._resolveHash[t.uuid].resolve(t.data),this._resolveHash[t.uuid]=null}async _run(t,e){await this._initWorkers();const i=new Promise((r,n)=>{this._queue.push({id:t,arguments:e,resolve:r,reject:n})});return this._next(),i}_next(){if(!this._queue.length)return;const t=this._getWorker();if(!t)return;const e=this._queue.pop(),i=e.id;this._resolveHash[Cr]={resolve:e.resolve,reject:e.reject},t.postMessage({data:e.arguments,uuid:Cr++,id:i})}}const Tr=new Rc,Lc=[".jpeg",".jpg",".png",".webp",".avif"],Gc=["image/jpeg","image/png","image/webp","image/avif"];async function Oc(s,t){var r;const e=await j.get().fetch(s);if(!e.ok)throw new Error(`[loadImageBitmap] Failed to fetch ${s}: ${e.status} ${e.statusText}`);const i=await e.blob();return((r=t==null?void 0:t.data)==null?void 0:r.alphaMode)==="premultiplied-alpha"?createImageBitmap(i,{premultiplyAlpha:"none"}):createImageBitmap(i)}const Zn={name:"loadTextures",extension:{type:P.LoadParser,priority:kt.High,name:"loadTextures"},config:{preferWorkers:!0,preferCreateImageBitmap:!0,crossOrigin:"anonymous"},test(s){return ne(s,Gc)||ae(s,Lc)},async load(s,t,e){var n;let i=null;globalThis.createImageBitmap&&this.config.preferCreateImageBitmap?this.config.preferWorkers&&await Tr.isImageBitmapSupported()?i=await Tr.loadImageBitmap(s,t):i=await Oc(s,t):i=await new Promise(a=>{i=new Image,i.crossOrigin=this.config.crossOrigin,i.src=s,i.complete?a(i):i.onload=()=>{a(i)}});const r=new ie({resource:i,alphaMode:"premultiply-alpha-on-upload",resolution:((n=t.data)==null?void 0:n.resolution)||mi(s),...t.data});return xi(r,e,s)},unload(s){s.destroy(!0)}},Qn=[".mp4",".m4v",".webm",".ogg",".ogv",".h264",".avi",".mov"],Wc=Qn.map(s=>`video/${s.substring(1)}`);function Dc(s,t,e){e===void 0&&!t.startsWith("data:")?s.crossOrigin=zc(t):e!==!1&&(s.crossOrigin=typeof e=="string"?e:"anonymous")}function Uc(s){return new Promise((t,e)=>{s.addEventListener("canplaythrough",i),s.addEventListener("error",r),s.load();function i(){n(),t()}function r(a){n(),e(a)}function n(){s.removeEventListener("canplaythrough",i),s.removeEventListener("error",r)}})}function zc(s,t=globalThis.location){if(s.startsWith("data:"))return"";t=t||globalThis.location;const e=new URL(s,document.baseURI);return e.hostname!==t.hostname||e.port!==t.port||e.protocol!==t.protocol?"anonymous":""}const Hc={name:"loadVideo",extension:{type:P.LoadParser,name:"loadVideo"},test(s){const t=ne(s,Wc),e=ae(s,Qn);return t||e},async load(s,t,e){var h,c;const i={...$e.defaultOptions,resolution:((h=t.data)==null?void 0:h.resolution)||mi(s),alphaMode:((c=t.data)==null?void 0:c.alphaMode)||await tn(),...t.data},r=document.createElement("video"),n={preload:i.autoLoad!==!1?"auto":void 0,"webkit-playsinline":i.playsinline!==!1?"":void 0,playsinline:i.playsinline!==!1?"":void 0,muted:i.muted===!0?"":void 0,loop:i.loop===!0?"":void 0,autoplay:i.autoPlay!==!1?"":void 0};Object.keys(n).forEach(l=>{const u=n[l];u!==void 0&&r.setAttribute(l,u)}),i.muted===!0&&(r.muted=!0),Dc(r,s,i.crossorigin);const a=document.createElement("source");let o;if(s.startsWith("data:"))o=s.slice(5,s.indexOf(";"));else if(!s.startsWith("blob:")){const l=s.split("?")[0].slice(s.lastIndexOf(".")+1).toLowerCase();o=$e.MIME_TYPES[l]||`video/${l}`}return a.src=s,o&&(a.type=o),new Promise(l=>{const u=async()=>{const d=new $e({...i,resource:r});r.removeEventListener("canplay",u),t.data.preload&&await Uc(r),l(xi(d,e,s))};r.addEventListener("canplay",u),r.appendChild(a)})},unload(s){s.destroy(!0)}},Jn={extension:{type:P.ResolveParser,name:"resolveTexture"},test:Zn.test,parse:s=>{var t;return{resolution:parseFloat(((t=re.RETINA_PREFIX.exec(s))==null?void 0:t[1])??"1"),format:s.split(".").pop(),src:s}}},Nc={extension:{type:P.ResolveParser,priority:-2,name:"resolveJson"},test:s=>re.RETINA_PREFIX.test(s)&&s.endsWith(".json"),parse:Jn.parse};class Vc{constructor(){this._detections=[],this._initialized=!1,this.resolver=new re,this.loader=new dc,this.cache=$,this._backgroundLoader=new ic(this.loader),this._backgroundLoader.active=!0,this.reset()}async init(t={}){var n,a;if(this._initialized){J("[Assets]AssetManager already initialized, did you load before calling this Assets.init()?");return}if(this._initialized=!0,t.defaultSearchParams&&this.resolver.setDefaultSearchParams(t.defaultSearchParams),t.basePath&&(this.resolver.basePath=t.basePath),t.bundleIdentifier&&this.resolver.setBundleIdentifier(t.bundleIdentifier),t.manifest){let o=t.manifest;typeof o=="string"&&(o=await this.load(o)),this.resolver.addManifest(o)}const e=((n=t.texturePreference)==null?void 0:n.resolution)??1,i=typeof e=="number"?[e]:e,r=await this._detectFormats({preferredFormats:(a=t.texturePreference)==null?void 0:a.format,skipDetections:t.skipDetections,detections:this._detections});this.resolver.prefer({params:{format:r,resolution:i}}),t.preferences&&this.setPreferences(t.preferences)}add(t){this.resolver.add(t)}async load(t,e){this._initialized||await this.init();const i=Ke(t),r=gt(t).map(o=>{if(typeof o!="string"){const h=this.resolver.getAlias(o);return h.some(c=>!this.resolver.hasKey(c))&&this.add(o),Array.isArray(h)?h[0]:h}return this.resolver.hasKey(o)||this.add({alias:o,src:o}),o}),n=this.resolver.resolve(r),a=await this._mapLoadToResolve(n,e);return i?a[r[0]]:a}addBundle(t,e){this.resolver.addBundle(t,e)}async loadBundle(t,e){this._initialized||await this.init();let i=!1;typeof t=="string"&&(i=!0,t=[t]);const r=this.resolver.resolveBundle(t),n={},a=Object.keys(r);let o=0,h=0;const c=()=>{e==null||e(++o/h)},l=a.map(u=>{const d=r[u];return h+=Object.keys(d).length,this._mapLoadToResolve(d,c).then(f=>{n[u]=f})});return await Promise.all(l),i?n[t[0]]:n}async backgroundLoad(t){this._initialized||await this.init(),typeof t=="string"&&(t=[t]);const e=this.resolver.resolve(t);this._backgroundLoader.add(Object.values(e))}async backgroundLoadBundle(t){this._initialized||await this.init(),typeof t=="string"&&(t=[t]);const e=this.resolver.resolveBundle(t);Object.values(e).forEach(i=>{this._backgroundLoader.add(Object.values(i))})}reset(){this.resolver.reset(),this.loader.reset(),this.cache.reset(),this._initialized=!1}get(t){if(typeof t=="string")return $.get(t);const e={};for(let i=0;i{const o=r[a.src],h=[a.src];a.alias&&h.push(...a.alias),h.forEach(c=>{n[c]=o}),$.set(h,o)}),n}async unload(t){this._initialized||await this.init();const e=gt(t).map(r=>typeof r!="string"?r.src:r),i=this.resolver.resolve(e);await this._unloadFromResolved(i)}async unloadBundle(t){this._initialized||await this.init(),t=gt(t);const e=this.resolver.resolveBundle(t),i=Object.keys(e).map(r=>this._unloadFromResolved(e[r]));await Promise.all(i)}async _unloadFromResolved(t){const e=Object.values(t);e.forEach(i=>{$.remove(i.src)}),await this.loader.unload(e)}async _detectFormats(t){let e=[];t.preferredFormats&&(e=Array.isArray(t.preferredFormats)?t.preferredFormats:[t.preferredFormats]);for(const i of t.detections)t.skipDetections||await i.test()?e=await i.add(e):t.skipDetections||(e=await i.remove(e));return e=e.filter((i,r)=>e.indexOf(i)===r),e}get detections(){return this._detections}setPreferences(t){this.loader.parsers.forEach(e=>{e.config&&Object.keys(e.config).filter(i=>i in t).forEach(i=>{e.config[i]=t[i]})})}}const q=new Vc;nt.handleByList(P.LoadParser,q.loader.parsers).handleByList(P.ResolveParser,q.resolver.parsers).handleByList(P.CacheParser,q.cache.parsers).handleByList(P.DetectionParser,q.detections);nt.add(rc,ac,nc,uc,hc,lc,cc,gc,yc,Tc,kc,Zn,Hc,sc,ec,Jn,Nc);const Mr={loader:P.LoadParser,resolver:P.ResolveParser,cache:P.CacheParser,detection:P.DetectionParser};nt.handle(P.Asset,s=>{const t=s.ref;Object.entries(Mr).filter(([e])=>!!t[e]).forEach(([e,i])=>nt.add(Object.assign(t[e],{extension:t[e].extension??i})))},s=>{const t=s.ref;Object.keys(Mr).filter(e=>!!t[e]).forEach(e=>nt.remove(t[e]))});class te extends Qe{constructor(t){t instanceof ct&&(t={context:t});const{context:e,roundPixels:i,...r}=t||{};super({label:"Graphics",...r}),this.renderPipeId="graphics",e?this._context=e:this._context=this._ownedContext=new ct,this._context.on("update",this.onViewUpdate,this),this.allowChildren=!1,this.roundPixels=i??!1}set context(t){t!==this._context&&(this._context.off("update",this.onViewUpdate,this),this._context=t,this._context.on("update",this.onViewUpdate,this),this.onViewUpdate())}get context(){return this._context}get bounds(){return this._context.bounds}addBounds(t){t.addBounds(this._context.bounds)}containsPoint(t){return this._context.containsPoint(t)}onViewUpdate(){if(this._didViewChangeTick++,this._didGraphicsUpdate=!0,this.didViewUpdate)return;this.didViewUpdate=!0;const t=this.renderGroup||this.parentRenderGroup;t&&t.onChildViewUpdate(this)}destroy(t){this._ownedContext&&!t?this._ownedContext.destroy(t):(t===!0||(t==null?void 0:t.context)===!0)&&this._context.destroy(t),this._ownedContext=null,this._context=null,super.destroy(t)}_callContextMethod(t,e){return this.context[t](...e),this}setFillStyle(...t){return this._callContextMethod("setFillStyle",t)}setStrokeStyle(...t){return this._callContextMethod("setStrokeStyle",t)}fill(...t){return this._callContextMethod("fill",t)}stroke(...t){return this._callContextMethod("stroke",t)}texture(...t){return this._callContextMethod("texture",t)}beginPath(){return this._callContextMethod("beginPath",[])}cut(){return this._callContextMethod("cut",[])}arc(...t){return this._callContextMethod("arc",t)}arcTo(...t){return this._callContextMethod("arcTo",t)}arcToSvg(...t){return this._callContextMethod("arcToSvg",t)}bezierCurveTo(...t){return this._callContextMethod("bezierCurveTo",t)}closePath(){return this._callContextMethod("closePath",[])}ellipse(...t){return this._callContextMethod("ellipse",t)}circle(...t){return this._callContextMethod("circle",t)}path(...t){return this._callContextMethod("path",t)}lineTo(...t){return this._callContextMethod("lineTo",t)}moveTo(...t){return this._callContextMethod("moveTo",t)}quadraticCurveTo(...t){return this._callContextMethod("quadraticCurveTo",t)}rect(...t){return this._callContextMethod("rect",t)}roundRect(...t){return this._callContextMethod("roundRect",t)}poly(...t){return this._callContextMethod("poly",t)}regularPoly(...t){return this._callContextMethod("regularPoly",t)}roundPoly(...t){return this._callContextMethod("roundPoly",t)}roundShape(...t){return this._callContextMethod("roundShape",t)}filletRect(...t){return this._callContextMethod("filletRect",t)}chamferRect(...t){return this._callContextMethod("chamferRect",t)}star(...t){return this._callContextMethod("star",t)}svg(...t){return this._callContextMethod("svg",t)}restore(...t){return this._callContextMethod("restore",t)}save(){return this._callContextMethod("save",[])}getTransform(){return this.context.getTransform()}resetTransform(){return this._callContextMethod("resetTransform",[])}rotateTransform(...t){return this._callContextMethod("rotate",t)}scaleTransform(...t){return this._callContextMethod("scale",t)}setTransform(...t){return this._callContextMethod("setTransform",t)}transform(...t){return this._callContextMethod("transform",t)}translateTransform(...t){return this._callContextMethod("translate",t)}clear(){return this._callContextMethod("clear",[])}get fillStyle(){return this._context.fillStyle}set fillStyle(t){this._context.fillStyle=t}get strokeStyle(){return this._context.strokeStyle}set strokeStyle(t){this._context.strokeStyle=t}clone(t=!1){return t?new te(this._context.clone()):(this._ownedContext=null,new te(this._context))}lineStyle(t,e,i){O(W,"Graphics#lineStyle is no longer needed. Use Graphics#setStrokeStyle to set the stroke style.");const r={};return t&&(r.width=t),e&&(r.color=e),i&&(r.alpha=i),this.context.strokeStyle=r,this}beginFill(t,e){O(W,"Graphics#beginFill is no longer needed. Use Graphics#fill to fill the shape with the desired style.");const i={};return t&&(i.color=t),e&&(i.alpha=e),this.context.fillStyle=i,this}endFill(){O(W,"Graphics#endFill is no longer needed. Use Graphics#fill to fill the shape with the desired style."),this.context.fill();const t=this.context.strokeStyle;return(t.width!==ct.defaultStrokeStyle.width||t.color!==ct.defaultStrokeStyle.color||t.alpha!==ct.defaultStrokeStyle.alpha)&&this.context.stroke(),this}drawCircle(...t){return O(W,"Graphics#drawCircle has been renamed to Graphics#circle"),this._callContextMethod("circle",t)}drawEllipse(...t){return O(W,"Graphics#drawEllipse has been renamed to Graphics#ellipse"),this._callContextMethod("ellipse",t)}drawPolygon(...t){return O(W,"Graphics#drawPolygon has been renamed to Graphics#poly"),this._callContextMethod("poly",t)}drawRect(...t){return O(W,"Graphics#drawRect has been renamed to Graphics#rect"),this._callContextMethod("rect",t)}drawRoundedRect(...t){return O(W,"Graphics#drawRoundedRect has been renamed to Graphics#roundRect"),this._callContextMethod("roundRect",t)}drawStar(...t){return O(W,"Graphics#drawStar has been renamed to Graphics#star"),this._callContextMethod("star",t)}}const ta=class ea extends In{constructor(...t){let e=t[0]??{};e instanceof Float32Array&&(O(W,"use new MeshGeometry({ positions, uvs, indices }) instead"),e={positions:e,uvs:t[1],indices:t[2]}),e={...ea.defaultOptions,...e};const i=e.positions||new Float32Array([0,0,1,0,1,1,0,1]),r=e.uvs||new Float32Array([0,0,1,0,1,1,0,1]),n=e.indices||new Uint32Array([0,1,2,0,2,3]),a=e.shrinkBuffersToFit,o=new Pt({data:i,label:"attribute-mesh-positions",shrinkToFit:a,usage:Z.VERTEX|Z.COPY_DST}),h=new Pt({data:r,label:"attribute-mesh-uvs",shrinkToFit:a,usage:Z.VERTEX|Z.COPY_DST}),c=new Pt({data:n,label:"index-mesh-buffer",shrinkToFit:a,usage:Z.INDEX|Z.COPY_DST});super({attributes:{aPosition:{buffer:o,format:"float32x2",stride:2*4,offset:0},aUV:{buffer:h,format:"float32x2",stride:2*4,offset:0}},indexBuffer:c,topology:e.topology}),this.batchMode="auto"}get positions(){return this.attributes.aPosition.buffer.data}set positions(t){this.attributes.aPosition.buffer.data=t}get uvs(){return this.attributes.aUV.buffer.data}set uvs(t){this.attributes.aUV.buffer.data=t}get indices(){return this.indexBuffer.data}set indices(t){this.indexBuffer.data=t}};ta.defaultOptions={topology:"triangle-list",shrinkBuffersToFit:!1};let $c=ta;class Yc extends Qe{constructor(t,e){const{text:i,resolution:r,style:n,anchor:a,width:o,height:h,roundPixels:c,...l}=t;super({...l}),this.batched=!0,this._resolution=null,this._autoResolution=!0,this._didTextUpdate=!0,this._styleClass=e,this.text=i??"",this.style=n,this.resolution=r??null,this.allowChildren=!1,this._anchor=new ot({_onUpdate:()=>{this.onViewUpdate()}}),a&&(this.anchor=a),this.roundPixels=c??!1,o!==void 0&&(this.width=o),h!==void 0&&(this.height=h)}get anchor(){return this._anchor}set anchor(t){typeof t=="number"?this._anchor.set(t):this._anchor.copyFrom(t)}set text(t){t=t.toString(),this._text!==t&&(this._text=t,this.onViewUpdate())}get text(){return this._text}set resolution(t){this._autoResolution=t===null,this._resolution=t,this.onViewUpdate()}get resolution(){return this._resolution}get style(){return this._style}set style(t){var e;t=t||{},(e=this._style)==null||e.off("update",this.onViewUpdate,this),t instanceof this._styleClass?this._style=t:this._style=new this._styleClass(t),this._style.on("update",this.onViewUpdate,this),this.onViewUpdate()}get bounds(){return this._boundsDirty&&(this._updateBounds(),this._boundsDirty=!1),this._bounds}get width(){return Math.abs(this.scale.x)*this.bounds.width}set width(t){this._setWidth(t,this.bounds.width)}get height(){return Math.abs(this.scale.y)*this.bounds.height}set height(t){this._setHeight(t,this.bounds.height)}getSize(t){return t||(t={}),t.width=Math.abs(this.scale.x)*this.bounds.width,t.height=Math.abs(this.scale.y)*this.bounds.height,t}setSize(t,e){typeof t=="object"?(e=t.height??t.width,t=t.width):e??(e=t),t!==void 0&&this._setWidth(t,this.bounds.width),e!==void 0&&this._setHeight(e,this.bounds.height)}addBounds(t){const e=this.bounds;t.addFrame(e.minX,e.minY,e.maxX,e.maxY)}containsPoint(t){const e=this.bounds.width,i=this.bounds.height,r=-e*this.anchor.x;let n=0;return t.x>=r&&t.x<=r+e&&(n=-i*this.anchor.y,t.y>=n&&t.y<=n+i)}onViewUpdate(){if(this._didViewChangeTick++,this._boundsDirty=!0,this.didViewUpdate)return;this.didViewUpdate=!0,this._didTextUpdate=!0;const t=this.renderGroup||this.parentRenderGroup;t&&t.onChildViewUpdate(this)}_getKey(){return`${this.text}:${this._style.styleKey}:${this._resolution}`}destroy(t=!1){super.destroy(t),this.owner=null,this._bounds=null,this._anchor=null,(typeof t=="boolean"?t:t!=null&&t.style)&&this._style.destroy(t),this._style=null,this._text=null}}function Xc(s,t){let e=s[0]??{};return(typeof e=="string"||s[1])&&(O(W,`use new ${t}({ text: "hi!", style }) instead`),e={text:e,style:s[1]}),e}class Ht extends Yc{constructor(...t){const e=Xc(t,"Text");super(e,mt),this.renderPipeId="text"}_updateBounds(){const t=this._bounds,e=this._anchor,i=ti.measureText(this._text,this._style),{width:r,height:n}=i;t.minX=-e._x*r,t.maxX=t.minX+r,t.minY=-e._y*n,t.maxY=t.minY+n}}const sa=class ia extends $c{constructor(...t){super({});let e=t[0]??{};typeof e=="number"&&(O(W,"PlaneGeometry constructor changed please use { width, height, verticesX, verticesY } instead"),e={width:e,height:t[1],verticesX:t[2],verticesY:t[3]}),this.build(e)}build(t){t={...ia.defaultOptions,...t},this.verticesX=this.verticesX??t.verticesX,this.verticesY=this.verticesY??t.verticesY,this.width=this.width??t.width,this.height=this.height??t.height;const e=this.verticesX*this.verticesY,i=[],r=[],n=[],a=this.verticesX-1,o=this.verticesY-1,h=this.width/a,c=this.height/o;for(let u=0;ue?1:this.width/e,r=this._topHeight+this._bottomHeight,n=this.height>r?1:this.height/r,a=Math.min(i,n);t[9]=t[11]=t[13]=t[15]=this._topHeight*a,t[17]=t[19]=t[21]=t[23]=this.height-this._bottomHeight*a,t[25]=t[27]=t[29]=t[31]=this.height,t[2]=t[10]=t[18]=t[26]=this._leftWidth*a,t[4]=t[12]=t[20]=t[28]=this.width-this._rightWidth*a,t[6]=t[14]=t[22]=t[30]=this.width,this.getBuffer("aPosition").update()}updateUvs(){const t=this.uvs;t[0]=t[8]=t[16]=t[24]=0,t[1]=t[3]=t[5]=t[7]=0,t[6]=t[14]=t[22]=t[30]=1,t[25]=t[27]=t[29]=t[31]=1;const e=1/this._originalWidth,i=1/this._originalHeight;t[2]=t[10]=t[18]=t[26]=e*this._leftWidth,t[9]=t[11]=t[13]=t[15]=i*this._topHeight,t[4]=t[12]=t[20]=t[28]=1-e*this._rightWidth,t[17]=t[19]=t[21]=t[23]=1-i*this._bottomHeight,this.getBuffer("aUV").update()}};ra.defaultOptions={width:100,height:100,leftWidth:10,topHeight:10,rightWidth:10,bottomHeight:10,originalWidth:100,originalHeight:100};let $t=ra;const aa=class oa extends Qe{constructor(t){var u,d,f,p;t instanceof G&&(t={texture:t});const{width:e,height:i,leftWidth:r,rightWidth:n,topHeight:a,bottomHeight:o,texture:h,roundPixels:c,...l}=t;super({label:"NineSliceSprite",...l}),this.renderPipeId="nineSliceSprite",this.batched=!0,this._didSpriteUpdate=!0,this._leftWidth=r??((u=h==null?void 0:h.defaultBorders)==null?void 0:u.left)??$t.defaultOptions.leftWidth,this._topHeight=a??((d=h==null?void 0:h.defaultBorders)==null?void 0:d.top)??$t.defaultOptions.topHeight,this._rightWidth=n??((f=h==null?void 0:h.defaultBorders)==null?void 0:f.right)??$t.defaultOptions.rightWidth,this._bottomHeight=o??((p=h==null?void 0:h.defaultBorders)==null?void 0:p.bottom)??$t.defaultOptions.bottomHeight,this.bounds.maxX=this._width=e??h.width??$t.defaultOptions.width,this.bounds.maxY=this._height=i??h.height??$t.defaultOptions.height,this.allowChildren=!1,this.texture=h??oa.defaultOptions.texture,this.roundPixels=c??!1}get bounds(){return this._bounds}get width(){return this._width}set width(t){this.bounds.maxX=this._width=t,this.onViewUpdate()}get height(){return this._height}set height(t){this.bounds.maxY=this._height=t,this.onViewUpdate()}setSize(t,e){typeof t=="object"&&(e=t.height??t.width,t=t.width),this.bounds.maxX=this._width=t,this.bounds.maxY=this._height=e??t,this.onViewUpdate()}getSize(t){return t||(t={}),t.width=this._width,t.height=this._height,t}get leftWidth(){return this._leftWidth}set leftWidth(t){this._leftWidth=t,this.onViewUpdate()}get topHeight(){return this._topHeight}set topHeight(t){this._topHeight=t,this.onViewUpdate()}get rightWidth(){return this._rightWidth}set rightWidth(t){this._rightWidth=t,this.onViewUpdate()}get bottomHeight(){return this._bottomHeight}set bottomHeight(t){this._bottomHeight=t,this.onViewUpdate()}get texture(){return this._texture}set texture(t){t||(t=G.EMPTY);const e=this._texture;e!==t&&(e&&e.dynamic&&e.off("update",this.onViewUpdate,this),t.dynamic&&t.on("update",this.onViewUpdate,this),this._texture=t,this.onViewUpdate())}get originalWidth(){return this._texture.width}get originalHeight(){return this._texture.height}onViewUpdate(){if(this._didViewChangeTick++,this._didSpriteUpdate=!0,this.didViewUpdate)return;this.didViewUpdate=!0;const t=this.renderGroup||this.parentRenderGroup;t&&t.onChildViewUpdate(this)}addBounds(t){const e=this.bounds;t.addFrame(e.minX,e.minY,e.maxX,e.maxY)}destroy(t){if(super.destroy(t),typeof t=="boolean"?t:t==null?void 0:t.texture){const i=typeof t=="boolean"?t:t==null?void 0:t.textureSource;this._texture.destroy(i)}this._texture=null}};aa.defaultOptions={texture:G.EMPTY};let Pe=aa;nt.add(ya,_a);class A{}b(A,"app"),b(A,"GameMaster"),b(A,"WindowHeight"),b(A,"WindowWidth"),b(A,"AspectRatio",16/9),b(A,"Grid"),b(A,"WaveManager"),b(A,"TowerManager"),b(A,"AnimationManager"),b(A,"GameScene"),b(A,"latestCommit");class qc{constructor(){b(this,"currentScene");b(this,"gameScene");b(this,"GameObjects",[]);A.GameMaster=this}_CreateGuiObject(t){this.currentScene.gui.push(t),A.app.stage.addChild(t.container)}_RemoveGuiObject(t){this.currentScene.gui.splice(this.currentScene.gui.indexOf(t),1),A.app.stage.removeChild(t.container)}changeScene(t){this.currentScene&&this.currentScene.destroy(),this.GameObjects.forEach(e=>{e.destroy()}),this.currentScene=t,this.currentScene.init()}}const L=class L{static async LoadAssets(){console.log("Loading Texture Assets");const t=new Ht({text:"Loading textures. This might take a while.",style:new mt({fill:3355443,fontSize:50})});t.x=A.app.canvas.width/2,t.y=A.app.canvas.height/2,t.anchor.set(.5,.5),A.app.stage.addChild(t),L.Button01Texture=await q.load({src:"/assets/gui/button_01.png"}),L.Button02Texture=await q.load({src:"/assets/gui/button_02.png"}),L.Frame01Texture=await q.load({src:"/assets/gui/frame_01.png"}),L.Frame02Texture=await q.load({src:"/assets/gui/frame_02.png"}),L.FrameBackground=await q.load({src:"/assets/gui/background_01.png"}),L.FrameTowerTab=await q.load({src:"/assets/gui/background_02.png"}),L.VioletBackground=await q.load({src:"/assets/gui/frame_violet.png"}),L.RedBackground=await q.load({src:"/assets/gui/frame_red.png"}),L.GreenBackground=await q.load({src:"/assets/gui/frame_green.png"}),L.HealthTexture=await q.load({src:"/assets/gui/heart.png"}),L.GoldTexture=await q.load({src:"/assets/gui/money.png"}),L.BasicCreepTexture=await q.load({src:"/assets/creeps/basic.jpg"}),L.BasicTowerTexture=await q.load({src:"/assets/towers/basic_tower.png"}),L.BasicProjectileTexture=await q.load({src:"/assets/projectiles/basic_tower.png"}),await q.load({src:"https://fonts.googleapis.com/css?family=Aclonica"}),await this.LoadMissions(),await this.LoadTowers(),await this.LoadCreepStats(),t.destroy()}static async LoadCreepStats(){const e=await(await fetch("/assets/CreepStats.json")).json();this.CreepStats=e}static async LoadMissions(){L.Missions=[await this.LoadMission("/assets/missions/mission_01.json")]}static async LoadTowers(){const e=await(await fetch("/assets/Towers.json")).json();L.Towers=e,e.forEach(async i=>{let r=this.TowerSprites.length-1;r==-1&&(r=0),this.TowerSprites[r]=await q.load({src:`/assets/towers/${i.sprite}.png`})})}static async LoadMission(t){const i=await(await fetch(t)).json();return await this.LoadBackground(i.mapImage.url),i}static async LoadBackground(t){let e=this.MissionBackgrounds.length-1;e==-1&&(e=0),this.MissionBackgrounds[e]=await q.load({src:t})}};b(L,"BasicCreepTexture"),b(L,"BasicTowerTexture"),b(L,"BasicProjectileTexture"),b(L,"Frame01Texture"),b(L,"Frame02Texture"),b(L,"FrameBackground"),b(L,"FrameTowerTab"),b(L,"VioletBackground"),b(L,"RedBackground"),b(L,"GreenBackground"),b(L,"Button01Texture"),b(L,"Button02Texture"),b(L,"HealthTexture"),b(L,"GoldTexture"),b(L,"MissionBackgrounds",[]),b(L,"TowerSprites",[]),b(L,"Missions"),b(L,"Towers"),b(L,"CreepStats"),b(L,"DebuggingEnabled",!1);let H=L;class Kc{constructor(){b(this,"finished",!1);b(this,"callbackFn")}Finish(){this.finished=!0}update(t){if(this.finished)return this.callbackFn()}}class Zc extends Kc{constructor(e,i,r,n,a,o,h){super();b(this,"tweenTime");b(this,"pixiObject");b(this,"goalX");b(this,"goalY");b(this,"ticks",0);this.tweenTime=e,this.pixiObject=i,this.callbackFn=h,this.goalX=a,this.goalY=o,this.pixiObject.x=r,this.pixiObject.y=n}update(e){super.update(e),this.ticks++;const i=this.pixiObject.x,r=this.pixiObject.y;if(i!=this.goalX){let n=this.goalX-i;this.pixiObject.x+=e*n*(this.ticks/this.tweenTime)}if(r!=this.goalY){let n=this.goalY-r;this.pixiObject.y+=e*n*(this.ticks/this.tweenTime)}this.ticks>=this.tweenTime&&this.Finish()}}class Qc{constructor(){b(this,"AnimationQueue",[])}Animate(t){this.AnimationQueue.push(t)}update(t){this.AnimationQueue.forEach(e=>{e.finished&&this.AnimationQueue.splice(this.AnimationQueue.indexOf(e),1),e.update(t)})}}class ke{constructor(t){b(this,"name",this.constructor.name);b(this,"_container",new rt);b(this,"_events",new at);b(this,"enabled",!0);A.GameMaster._CreateGuiObject(this),t&&(this._container.interactive=!0,this._container.onwheel=e=>{this.enabled&&this.onWheel(e)},this._container.onpointerdown=e=>{this.enabled&&this.onClick(e)})}destroy(){this._events.removeAllListeners(),this._container.parent&&this._container.parent.removeChild(this._container),this._container.destroy()}get container(){return this._container}get events(){return this._events}onClick(t){console.warn(`[${this.name} does not implement GuiObject.onClick()]`)}onWheel(t){console.warn(`[${this.name} does not implement GuiObject.onWheel()]`)}setEnabled(t){this.enabled=t}}var ee=(s=>(s[s.Button01=0]="Button01",s[s.Button02=1]="Button02",s))(ee||{});class Me extends ke{constructor(e,i,r,n=!0){super(!0);b(this,"caption");b(this,"bounds");b(this,"buttonTexture");b(this,"buttonSprite");b(this,"buttonText");r==0&&(this.buttonTexture=H.Button01Texture),r==1&&(this.buttonTexture=H.Button02Texture),this.caption=i,this.enabled=n,this.bounds=e,this.container.x=this.bounds.x,this.container.y=this.bounds.y,this.container.width=this.bounds.width,this.container.height=this.bounds.height,this.buttonSprite=new Pe({texture:this.buttonTexture,leftWidth:100,topHeight:100,rightWidth:100,bottomHeight:100}),this.buttonSprite.x=0,this.buttonSprite.y=0,this.buttonSprite.width=this.bounds.width,this.buttonSprite.height=this.bounds.height,this.container.addChild(this.buttonSprite),this.buttonText=new Ht({text:this.caption,style:new mt({fill:16777215,fontSize:24})}),this.container.addChild(this.buttonText),this.buttonText.anchor.set(.5,.5),this.buttonText.x=this.bounds.width/2,this.buttonText.y=this.bounds.height/2,this.container.x=this.bounds.x,this.container.y=this.bounds.y}setCaption(e){this.caption=e,this.buttonText.text=e}}class oe{constructor(){b(this,"name",this.constructor.name);b(this,"_container",new rt);b(this,"bb",new U);b(this,"_events",new at)}destroy(){this._events.removeAllListeners(),this._container.parent&&this._container.parent.removeChild(this._container),this._container.destroy()}get container(){return this._container}get events(){return this._events}copyContainerToBB(){return this.bb.x=this.container.x,this.bb.y=this.container.y,this.bb.width=this.container.width,this.bb.height=this.container.height,this.bb}}var se=(s=>(s.Died="died",s.TakenDamage="takenDamage",s.Escaped="escaped",s.Moved="moved",s))(se||{});class Jc extends oe{constructor(e,i,r){super();b(this,"id");b(this,"creepType");b(this,"sprite");b(this,"path");b(this,"stats");b(this,"pathIndex",0);b(this,"speed");b(this,"health");b(this,"maxHealth");b(this,"escaped",!1);b(this,"died",!1);b(this,"x");b(this,"y");b(this,"dead",!1);this.creepType=e,this.stats=structuredClone(H.CreepStats[this.creepType]),this.sprite=new dt({texture:H.BasicCreepTexture}),this.id=r,this.container.x=-70,this.container.y=-50,this.sprite.width=64,this.sprite.height=64,this.speed=this.stats.speed,this.health=this.stats.health,this.maxHealth=this.stats.health,this.path=i,this.x=i[0][1]*64+32,this.y=i[0][0]*64+32,A.GameScene.events.on("takenDamage",(n,a)=>{n==this.id&&(this.health-=a)}),A.Grid.container.addChild(this.container),this.container.addChild(this.sprite)}update(e){if(this.dead)return;if(this.health<=0){A.GameScene.events.emit("died",this.maxHealth,this),this.destroy(),this.dead=!0;return}if(this.pathIndex+1==this.path.length){if(this.escaped)return;this.events.emit("escaped",this),this.escaped=!0;return}const i=this.path[this.pathIndex],r=this.path[this.pathIndex+1],n=r[1]*64+32,a=r[0]*64+32,o=r[1]-i[1],h=r[0]-i[0];let c=this.speed*e*o,l=this.speed*e*h,u=!1;c>0&&this.x+c>n&&(c=n-this.x,u=!0),c<0&&this.x+c0&&this.y+l>a&&(l=a-this.y,u=!0),l<0&&this.y+l(s[s.Restricted=0]="Restricted",s[s.Buildable=1]="Buildable",s[s.Path=9]="Path",s))(Ut||{});class tu extends oe{constructor(e,i,r,n){super();b(this,"type");b(this,"row");b(this,"column");b(this,"isPath",!1);b(this,"g");b(this,"clickDetector");if(this.type=e,this.row=i,this.column=r,this.isPath=n,this.bb.x=this.column*64,this.bb.y=this.row*64,this.bb.width=64,this.bb.height=64,A.Grid.container.addChild(this.container),this.container.x=this.bb.x,this.container.y=this.bb.y,this.clickDetector=new te({zIndex:99,interactive:!0}),this.clickDetector.rect(0,0,this.bb.width,this.bb.height),this.clickDetector.fill({color:16711680,alpha:0}),this.container.addChild(this.clickDetector),this.clickDetector.onpointerdown=o=>{A.Grid._gridCellClicked(i,r)},!H.DebuggingEnabled)return;const a=new Ht({text:`${this.row}|${this.column}`,style:new mt({fill:16777215,dropShadow:!0,fontSize:16})});this.container.addChild(a),a.anchor.set(.5,.5),a.x=this.bb.width/2,a.y=this.bb.height/2,n&&(a.text+="p")}gDraw(){switch(this.g=new te({zIndex:5}),this.g.rect(0,0,this.bb.width,this.bb.height),this.type){case Ut.Restricted:this.g.fill({color:2236962,alpha:.5});break;case Ut.Path:this.g.fill({color:2236962,alpha:.5});break;case Ut.Buildable:this.g.stroke({color:65280,alpha:.9});break}this.container.addChild(this.g)}gClear(){this.g!=null&&(this.container.removeChild(this.g),this.g.destroy())}update(){}}class eu extends oe{constructor(e,i){super();b(this,"gameMap");b(this,"cells",[]);b(this,"creeps",[]);b(this,"gridShown",!1);this.gameMap=e,A.Grid=this,this.bb.x=0,this.bb.y=0,this.bb.width=64*30,this.bb.height=64*17,A.app.stage.addChild(this.container);let r=new dt(H.MissionBackgrounds[i]);r.x=0,r.y=0,r.width=this.bb.width,r.height=this.bb.height,this.container.addChild(r);for(let n=0;nl.some(u=>u[0]===a&&u[1]===n));h&&(o=Ut.Path);let c=new tu(o,a,n,h);this.cells.push(c)}}toggleGrid(){this.cells.forEach(e=>{this.gridShown?e.gClear():e.gDraw()}),this.gridShown=!this.gridShown}addCreep(e){console.log("ADD CREEP"),this.creeps.push(e),e.events.on(se.Died,i=>{this.onCreepDiedOrEscaped(i)}),e.events.on(se.Escaped,i=>{this.onCreepDiedOrEscaped(i)})}onCreepDiedOrEscaped(e){this.creeps.splice(this.creeps.indexOf(e),1),e.destroy()}update(e){this.creeps.forEach(i=>{i.dead?(this.creeps.splice(this.creeps.indexOf(i),1),i=null):i.update(e)})}getCellByRowAndCol(e,i){return this.cells.filter(r=>r.row==e&&r.column==i)[0]}_gridCellClicked(e,i){this.onGridCellClicked(e,i)}onGridCellClicked(e,i){}}var si=(s=>(s.CreepSpawned="creepSpawned",s.Finished="finished",s))(si||{});class su{constructor(t,e){b(this,"creeps",[]);b(this,"rounds");b(this,"paths");b(this,"ticks",0);b(this,"started",!1);b(this,"finished",!1);b(this,"events",new at);b(this,"internalCreepId",0);A.WaveManager=this,this.rounds=t,this.paths=e}start(t){this.started=!0,this.ticks=0,this.creeps=[],this.finished=!1;let e=0;this.rounds[t].waves.forEach(i=>{e+=i.firstCreepSpawnTick,i.creeps.forEach(r=>{const n=new Jc(r,this.paths[0],this.internalCreepId);this.internalCreepId++;const a={creep:n,tickToSpawnAt:e,spawned:!1};console.log("CREAWTASEDASD"),e+=i.spawnIntervalTicks,this.creeps.push(a)})}),console.log(this.creeps)}end(){this.started=!1}update(t){this.started!=!1&&(this.ticks+=t,this.creeps.forEach(e=>{!e.spawned&&e.tickToSpawnAt<=this.ticks?(e.spawned=!0,this.events.emit("creepSpawned",e.creep),console.log("Wave manager creep spawned, ",e,this.ticks),!this.finished&&this.creeps.every(i=>i.spawned)&&(this.finished=!0,console.log("wave maanger finisehd"),this.events.emit("finished"))):e.spawned&&e.creep.update(t)}))}}var ha=(s=>(s.BasicTowerBehaviour="BasicTowerBehaviour",s))(ha||{});class iu{constructor(){b(this,"isPlacingTower",!1);b(this,"canPlaceTowers",!0);b(this,"selectedTower",null);b(this,"towers",[]);A.TowerManager=this}ToggleChoosingTowerLocation(t){this.canPlaceTowers&&(A.Grid.toggleGrid(),this.isPlacingTower?this.selectedTower=null:H.Towers.forEach(e=>{e.name==t&&(this.selectedTower=e)}),this.isPlacingTower=!this.isPlacingTower)}PlayerClickOnGrid(t,e){if(this.canPlaceTowers&&this.isPlacingTower){if(!this.selectedTower)throw console.warn("TowerManager.selectedTower is null when trying to place tower.");this.PlaceTower(this.selectedTower,t,e,this.selectedTower.behaviour)}}GetTowerByRowAndCol(t,e){let i=null;return this.towers.forEach(r=>{r.row==t&&r.column==e&&(i=r)}),i}PlaceTower(t,e,i,r,n){let a=0;H.Towers.forEach((h,c)=>{h.sprite==t.sprite&&(a=c)});const o=H.TowerSprites[a];if(!A.GameScene.MissionStats.hasEnoughGold(t.stats.cost)&&!n)return console.warn("Does not have enough gold.");if(!this.GetTowerByRowAndCol(e,i)&&A.Grid.getCellByRowAndCol(e,i).type!=Ut.Path&&A.Grid.getCellByRowAndCol(e,i).type!=Ut.Restricted){A.GameScene.MissionStats.spendGold(t.stats.cost);let h=new ou(e,i,o,t,r);this.towers.push(h),this.ToggleChoosingTowerLocation("RESET"),console.log("SHOULDVE PLACED TOWER"),console.log(this.selectedTower),this.selectedTower=null,A.GameScene.events.emit(yi.TowerPlacedEvent,t.name)}else console.warn("Can not place tower on occupied spot or path. Try again.")}update(t){this.towers.forEach(e=>{e.update(t)})}}function ru(s,t,e,i){const r=e-s,n=i-t;return Math.atan2(n,r)}class nu extends oe{constructor(e,i,r,n,a){super();b(this,"deleteMe",!1);b(this,"sprite");b(this,"x");b(this,"y");b(this,"angle");b(this,"speed");b(this,"damage");b(this,"timeToLive",1);console.log("I SHOOTTED!"),this.x=e,this.y=i,this.damage=a,this.sprite=new dt({texture:r,scale:.5,rotation:n}),this.sprite.anchor.set(.5),this.container.x=this.x,this.container.y=this.y,this.container.addChild(this.sprite),A.app.stage.addChild(this.container),this.angle=n,this.speed=.9}destroy(){super.destroy(),this.deleteMe=!0}update(e){if(!this.deleteMe){if(this.x>2e3||this.x<0||this.y>2e3||this.y<0||this.timeToLive<=0)return this.destroy();A.Grid.creeps.forEach(i=>{if(!(this.timeToLive<=0)&&i.container&&this.checkCollision(i)){this.timeToLive--,this.onCollide(i);return}}),this.x+=Math.cos(this.angle)*this.speed*e,this.y+=Math.sin(this.angle)*this.speed*e,this.container.x=this.x,this.container.y=this.y}}onCollide(e){console.log("COLLIDED WITH"+e),A.GameScene.events.emit(se.TakenDamage,e.id,this.damage)}checkCollision(e){if(e==null)return;let i=this.copyContainerToBB(),r=e.copyContainerToBB();return i.getBounds().intersects(r.getBounds())}}function au(s,t,e,i){return Math.sqrt((e-s)*(e-s)+(i-t)*(i-t))}var yi=(s=>(s.TowerPlacedEvent="towerPlacedEvent",s))(yi||{});class ou extends oe{constructor(e,i,r,n,a){super();b(this,"row");b(this,"column");b(this,"projectiles",[]);b(this,"behaviour");b(this,"definition");b(this,"sprite");b(this,"ticksUntilNextShot");b(this,"graphics",new te);this.row=e,this.column=i,this.behaviour=a,this.definition=n,this.ticksUntilNextShot=0;let o=A.Grid.getCellByRowAndCol(e,i);this.sprite=new dt({texture:r,height:64,width:64,zIndex:10}),this.container.addChild(this.sprite),o.container.addChild(this.container),o.clickDetector.onmouseenter=h=>{this.graphics.circle(this.column*64+32,this.row*64+32,this.definition.stats.range*64),this.graphics.fill({color:16711680,alpha:.5})},o.clickDetector.onmouseleave=h=>{this.graphics.clear()},A.app.stage.addChild(this.graphics)}GetCreepsInRange(){return A.Grid.creeps.filter(i=>{const r=i.x,n=i.y,a=this.column*64+32,o=this.row*64+32,h=this.definition.stats.range*64;return au(a,o,r,n){i.deleteMe?(this.projectiles.splice(this.projectiles.indexOf(i),1),i=null):i.update(e)}),this.behaviour==ha.BasicTowerBehaviour){this.ticksUntilNextShot>0&&this.ticksUntilNextShot--;let i=this.GetCreepsInRange();if(i.length>0){let r=i[0];this.ticksUntilNextShot==0&&(this.ticksUntilNextShot=this.definition.stats.cooldown,this.Shoot(r))}}}}class Pr extends ke{constructor(e,i,r,n,a,o,h){if(e>3||i>2||e<0||i<0)throw"Index/row out of bounds for TowerButton.";super(!0);b(this,"frameSprite");b(this,"background");b(this,"towerName");this.towerName=h,this.container.x=e*r+5,this.container.y=i*n+5,this.background=new dt({texture:o}),this.background.width=r,this.background.height=n,this.container.addChild(this.background),this.frameSprite=new Pe({texture:H.Frame02Texture,leftWidth:100,topHeight:100,rightWidth:100,bottomHeight:100,roundPixels:!0,height:n,width:r}),this.container.addChild(this.frameSprite),a.addChild(this.container),A.GameScene.events.on(yi.TowerPlacedEvent,c=>{this.frameSprite.tint=16777215}),this.container.onmouseenter=c=>{},this.container.onmouseleave=c=>{}}onClick(e){this.frameSprite.tint==65280?this.frameSprite.tint=16777215:this.frameSprite.tint=65280,A.TowerManager.ToggleChoosingTowerLocation(this.towerName)}}class hu extends ke{constructor(e){super(!1);b(this,"bounds");b(this,"towerTabSprite");b(this,"towerList",[]);this.bounds=e,H.Towers.forEach(i=>{let r={name:i.name,description:i.description,cost:i.stats.cost};this.towerList.push(r)}),this.container.x=this.bounds.x,this.container.y=this.bounds.y,this.towerTabSprite=new Pe({texture:H.FrameTowerTab,leftWidth:500,topHeight:500,rightWidth:500,bottomHeight:500,roundPixels:!0}),this.towerTabSprite.width=this.bounds.width,this.towerTabSprite.height=this.bounds.height,this.container.addChild(this.towerTabSprite),new Pr(0,0,70,70,this.container,H.RedBackground,"Basic Tower"),new Pr(0,1,70,70,this.container,H.GreenBackground,"Basic Tower")}}class lu extends ke{constructor(e){super(!1);b(this,"bounds");b(this,"gemTabSprite");this.bounds=e,this.container.x=this.bounds.x,this.container.y=this.bounds.y,this.gemTabSprite=new Pe({texture:H.FrameTowerTab,leftWidth:1e3,topHeight:1e3,rightWidth:1e3,bottomHeight:1e3}),this.gemTabSprite.x=0,this.gemTabSprite.y=0,this.gemTabSprite.width=this.bounds.width,this.gemTabSprite.height=this.bounds.height,this.container.addChild(this.gemTabSprite)}}class cu extends ke{constructor(e){super(!1);b(this,"bounds");b(this,"sidebarSprite");b(this,"towerTab");b(this,"gemTab");this.bounds=e,this.container.x=this.bounds.x,this.container.y=this.bounds.y,this.sidebarSprite=new Pe({texture:H.Frame01Texture,leftWidth:100,topHeight:100,rightWidth:100,bottomHeight:100}),this.sidebarSprite.x=40,this.sidebarSprite.y=-40,this.sidebarSprite.width=this.bounds.width+40,this.sidebarSprite.height=this.bounds.height+80,this.container.addChild(this.sidebarSprite);const i=new U(60,20,this.bounds.width-65,150);this.towerTab=new hu(i),this.container.addChild(this.towerTab.container);const r=new U(60,180,this.bounds.width-65,this.bounds.height-280);this.gemTab=new lu(r),this.container.addChild(this.gemTab.container)}}class _i{constructor(){b(this,"gui",[]);b(this,"_events",new at)}destroy(){this.gui.forEach(t=>{t.destroy()})}GetGuiObject(t){return this.gui.find(e=>e==t)}GetGuiObjectByName(t){return this.gui.filter(e=>e.name==t)}get events(){return this._events}init(){}}class uu extends oe{constructor(e,i){super();b(this,"hp",100);b(this,"gold",0);b(this,"goldText");b(this,"healthText");this.hp=e,this.gold=i,this.container.x=0,this.container.y=20,A.app.stage.addChild(this.container),this.healthText=new Ht({text:`${this.hp}`,style:new mt({fill:"red",fontSize:36,fontWeight:"bold",dropShadow:!0})}),this.goldText=new Ht({text:`${this.gold}`,style:new mt({fill:"gold",fontSize:36,fontWeight:"bold",dropShadow:!0})});const r=new dt(H.HealthTexture),n=new dt(H.GoldTexture);this.healthText.x=200,this.healthText.y=-15,r.x=160,r.width=36,r.height=32,r.y=-10,this.goldText.x=200,this.goldText.y=20,n.x=150,n.width=56,n.height=56,n.y=15,this.container.addChild(this.healthText),this.container.addChild(this.goldText),this.container.addChild(r),this.container.addChild(n)}getHP(){return this.hp}hasEnoughGold(e){return e<=this.gold}setHP(e){this.hp=e,this.healthText.text=this.hp}takeDamage(e){this.hp-=e,this.healthText.text=this.hp}setGold(e){this.gold=e,this.goldText.text=this.gold}earnGold(e){this.gold+=e,this.goldText.text=this.gold}spendGold(e){this.gold-=e,this.goldText.text=this.gold}update(){}}class la extends _i{constructor(e){super();b(this,"isGameOver",!1);b(this,"mission");b(this,"missionIndex");b(this,"MissionStats");b(this,"roundMode");b(this,"ticker");b(this,"changeRoundButton");b(this,"sidebar");b(this,"currentRound",0);b(this,"isWaveManagerFinished",!1);b(this,"playerWon",!1);A.GameScene=this,H.Missions.forEach((i,r)=>{i.name==e&&(this.mission=i,this.missionIndex=r)})}init(){this.ticker=new Xt,this.ticker.maxFPS=60,this.ticker.minFPS=30,this.ticker.add(()=>this.update(this.ticker.elapsedMS)),this.ticker.start();const e=new U(64*30-360,0,360,A.app.canvas.height),i=new U(50,A.app.canvas.height-100,310,100);new eu(this.mission.gameMap,this.missionIndex),new iu,new su(this.mission.rounds,this.mission.gameMap.paths),A.Grid.onGridCellClicked=(r,n)=>{A.TowerManager.isPlacingTower&&A.TowerManager.PlayerClickOnGrid(r,n)},A.WaveManager.events.on(si.CreepSpawned,r=>{A.Grid.addCreep(r),r.events.on(se.Escaped,()=>{this.onCreepEscaped(r)})}),A.WaveManager.events.on(si.Finished,()=>{this.isWaveManagerFinished=!0}),this.events.on(se.Died,(r,n)=>{this.MissionStats.earnGold(r)}),this.sidebar=new cu(e),this.changeRoundButton=new Me(i,"Start",ee.Button01,!0),this.changeRoundButton.container.removeFromParent(),this.sidebar.container.addChild(this.changeRoundButton.container),this.changeRoundButton.onClick=()=>{this.changeRoundButton.setEnabled(!1),this.changeRoundButton.setCaption("[X]"),this.setRoundMode(1)},this.MissionStats=new uu(100,200)}update(e){A.WaveManager.update(e),A.Grid.update(e),A.TowerManager.update(e),this.isWaveManagerFinished&&A.Grid.creeps.length==0&&(this.changeRoundButton.setEnabled(!0),this.changeRoundButton.setCaption("Start"),this.setRoundMode(0),this.NotifyPlayer(`Round ${this.currentRound+1}/${this.mission.rounds.length} completed.`,"info"),this.currentRound+1==this.mission.rounds.length&&(this.changeRoundButton.setCaption("WINNER!"),this.NotifyPlayer("Mission win!","info"),this.playerWon=!0)),this.MissionStats.getHP()<=0?(this.isGameOver=!0,this.ShowScoreScreen(!0),this.ticker.stop()):this.playerWon&&(this.isGameOver=!0,this.ShowScoreScreen(!1),this.ticker.stop())}ShowScoreScreen(e){this.ticker.stop(),console.log(e?"LOSE!":"WIN!")}onCreepEscaped(e){this.MissionStats.takeDamage(e.health)}setRoundMode(e){this.roundMode=e,this.roundMode==1?A.WaveManager.start(this.currentRound):A.WaveManager.end()}NotifyPlayer(e,i){console.log("NOTIFY PLAYER! type: "+i),console.log(e)}onTowerPlaced(){}}class du extends _i{init(){const t=new Me(new U(0,0,300,60),"Back to main",ee.Button01);t.onClick=e=>{A.GameMaster.changeScene(new ca)},H.Missions.forEach((e,i)=>{const r=new Me(new U(A.app.canvas.width/2-150,A.app.canvas.height/5+i*80,300,60),e.name,ee.Button01);r.onClick=n=>{A.GameMaster.changeScene(new la(e.name))}})}}class ca extends _i{init(){const t={caption:"New Game",rect:new U(A.app.canvas.width/2-150,A.app.canvas.height/5+240,300,60),texture:ee.Button02},e={caption:"Settings",rect:new U(A.app.canvas.width/2-300/2,A.app.canvas.height/5+4*80,300,60),texture:ee.Button02};let i=new Ht({x:A.app.canvas.width/2-300/2,y:A.app.canvas.height/5+1*80,text:"BASTION",style:{fill:16755200,fontFamily:"Aclonica",fontSize:100}});i.x=i.x-i.width/5,A.app.stage.addChild(i);let r=new Ht({x:0,y:0,text:"Latest commit: "+A.latestCommit,style:{fill:0,fontSize:10,fontWeight:"bold"}});A.app.stage.addChild(r);const n=new Me(t.rect,t.caption,t.texture,!0);n.onClick=o=>{A.app.stage.removeChild(i),A.app.stage.removeChild(r),A.GameMaster.changeScene(new du)};let a=new Me(e.rect,e.caption,e.texture,!0);a.onClick=o=>{alert("Does nothing for now, just placeholder.")},A.AnimationManager.Animate(new Zc(300,a.container,100,600,620,600,()=>{}))}}function kr(s){console.log(s)}(async()=>{const s=new Sn;A.app=s,kr("main - init()"),await s.init({width:1920,height:1080,resolution:1,autoDensity:!0,backgroundColor:16777215,sharedTicker:!0}),kr("main - init() complete"),document.body.appendChild(s.canvas);function t(){const i=window.innerWidth,r=window.innerHeight,n=i/s.screen.width,a=r/s.screen.height,o=Math.min(n,a),h=Math.round(s.screen.width*o),c=Math.round(s.screen.height*o),l=(i-h)/2,u=(r-c)/2;s.canvas.style.width=`${h}px`,s.canvas.style.height=`${c}px`,s.canvas.style.marginLeft=`${l}px`,s.canvas.style.marginTop=`${u}px`,s.canvas.style.marginRight="0",s.canvas.style.marginBottom="0",s.canvas.style.display="block"}A.latestCommit=await fetch("/latest_commit").then(i=>i.text()),window.addEventListener("resize",t),t(),await H.LoadAssets(),new qc,A.AnimationManager=new Qc,globalThis.Engine=A,Xt.shared.add(i=>A.AnimationManager.update(i.elapsedMS)),A.GameMaster.changeScene(new ca),new URLSearchParams(location.href).entries().next().value[1]=="game"&&A.GameMaster.changeScene(new la("Mission 1")),A.latestCommit!="DEVELOPMENT"&&(window.onbeforeunload=()=>"You are about to leave.")})();export{O as $,bn as A,Z as B,rt as C,j as D,P as E,Ur as F,ts as G,bt as H,Di as I,dt as J,To as K,Lo as L,D as M,tt as N,U as O,it as P,Jo as Q,Hs as R,_h as S,Ct as T,Ws as U,zi as V,ro as W,gs as X,Q as Y,Hr as Z,wn as _,G as a,W as a0,rh as a1,In as a2,Nh as a3,$h as a4,Kh as a5,Qh as a6,Jh as a7,Qt as a8,mt as a9,Nl as aa,ti as ab,Wn as ac,Zi as ad,$t as ae,$c as af,wr as ag,ql as ah,te as ai,$ as aj,Ia as ak,Js as al,_r as am,Un as an,Xt as b,at as c,Pt as d,nt as e,Ki as f,mh as g,Ye as h,ai as i,xn as j,Qr as k,fn as l,yr as m,Mi as n,Hh as o,Vh as p,jh as q,Va as r,Mn as s,Zh as t,oi as u,ln as v,J as w,Ba as x,el as y,At as z}; +`;let Zt=null;class Kn{constructor(){Zt||(Zt=URL.createObjectURL(new Blob([Rc],{type:"application/javascript"}))),this.worker=new Worker(Zt)}}Kn.revokeObjectURL=function(){Zt&&(URL.revokeObjectURL(Zt),Zt=null)};let Cr=0,Fs;class Gc{constructor(){this._initialized=!1,this._createdWorkers=0,this._workerPool=[],this._queue=[],this._resolveHash={}}isImageBitmapSupported(){return this._isImageBitmapSupported!==void 0?this._isImageBitmapSupported:(this._isImageBitmapSupported=new Promise(t=>{const{worker:e}=new si;e.addEventListener("message",i=>{e.terminate(),si.revokeObjectURL(),t(i.data)})}),this._isImageBitmapSupported)}loadImageBitmap(t,e){var i;return this._run("loadImageBitmap",[t,(i=e==null?void 0:e.data)==null?void 0:i.alphaMode])}async _initWorkers(){this._initialized||(this._initialized=!0)}_getWorker(){Fs===void 0&&(Fs=navigator.hardwareConcurrency||4);let t=this._workerPool.pop();return!t&&this._createdWorkers{this._complete(e.data),this._returnWorker(e.target),this._next()})),t}_returnWorker(t){this._workerPool.push(t)}_complete(t){t.error!==void 0?this._resolveHash[t.uuid].reject(t.error):this._resolveHash[t.uuid].resolve(t.data),this._resolveHash[t.uuid]=null}async _run(t,e){await this._initWorkers();const i=new Promise((r,n)=>{this._queue.push({id:t,arguments:e,resolve:r,reject:n})});return this._next(),i}_next(){if(!this._queue.length)return;const t=this._getWorker();if(!t)return;const e=this._queue.pop(),i=e.id;this._resolveHash[Cr]={resolve:e.resolve,reject:e.reject},t.postMessage({data:e.arguments,uuid:Cr++,id:i})}}const Tr=new Gc,Lc=[".jpeg",".jpg",".png",".webp",".avif"],Oc=["image/jpeg","image/png","image/webp","image/avif"];async function Wc(s,t){var r;const e=await q.get().fetch(s);if(!e.ok)throw new Error(`[loadImageBitmap] Failed to fetch ${s}: ${e.status} ${e.statusText}`);const i=await e.blob();return((r=t==null?void 0:t.data)==null?void 0:r.alphaMode)==="premultiplied-alpha"?createImageBitmap(i,{premultiplyAlpha:"none"}):createImageBitmap(i)}const Zn={name:"loadTextures",extension:{type:P.LoadParser,priority:Bt.High,name:"loadTextures"},config:{preferWorkers:!0,preferCreateImageBitmap:!0,crossOrigin:"anonymous"},test(s){return ae(s,Oc)||oe(s,Lc)},async load(s,t,e){var n;let i=null;globalThis.createImageBitmap&&this.config.preferCreateImageBitmap?this.config.preferWorkers&&await Tr.isImageBitmapSupported()?i=await Tr.loadImageBitmap(s,t):i=await Wc(s,t):i=await new Promise(a=>{i=new Image,i.crossOrigin=this.config.crossOrigin,i.src=s,i.complete?a(i):i.onload=()=>{a(i)}});const r=new re({resource:i,alphaMode:"premultiply-alpha-on-upload",resolution:((n=t.data)==null?void 0:n.resolution)||mi(s),...t.data});return xi(r,e,s)},unload(s){s.destroy(!0)}},Qn=[".mp4",".m4v",".webm",".ogg",".ogv",".h264",".avi",".mov"],Dc=Qn.map(s=>`video/${s.substring(1)}`);function Uc(s,t,e){e===void 0&&!t.startsWith("data:")?s.crossOrigin=Nc(t):e!==!1&&(s.crossOrigin=typeof e=="string"?e:"anonymous")}function zc(s){return new Promise((t,e)=>{s.addEventListener("canplaythrough",i),s.addEventListener("error",r),s.load();function i(){n(),t()}function r(a){n(),e(a)}function n(){s.removeEventListener("canplaythrough",i),s.removeEventListener("error",r)}})}function Nc(s,t=globalThis.location){if(s.startsWith("data:"))return"";t=t||globalThis.location;const e=new URL(s,document.baseURI);return e.hostname!==t.hostname||e.port!==t.port||e.protocol!==t.protocol?"anonymous":""}const Hc={name:"loadVideo",extension:{type:P.LoadParser,name:"loadVideo"},test(s){const t=ae(s,Dc),e=oe(s,Qn);return t||e},async load(s,t,e){var h,c;const i={...Ye.defaultOptions,resolution:((h=t.data)==null?void 0:h.resolution)||mi(s),alphaMode:((c=t.data)==null?void 0:c.alphaMode)||await tn(),...t.data},r=document.createElement("video"),n={preload:i.autoLoad!==!1?"auto":void 0,"webkit-playsinline":i.playsinline!==!1?"":void 0,playsinline:i.playsinline!==!1?"":void 0,muted:i.muted===!0?"":void 0,loop:i.loop===!0?"":void 0,autoplay:i.autoPlay!==!1?"":void 0};Object.keys(n).forEach(l=>{const u=n[l];u!==void 0&&r.setAttribute(l,u)}),i.muted===!0&&(r.muted=!0),Uc(r,s,i.crossorigin);const a=document.createElement("source");let o;if(s.startsWith("data:"))o=s.slice(5,s.indexOf(";"));else if(!s.startsWith("blob:")){const l=s.split("?")[0].slice(s.lastIndexOf(".")+1).toLowerCase();o=Ye.MIME_TYPES[l]||`video/${l}`}return a.src=s,o&&(a.type=o),new Promise(l=>{const u=async()=>{const d=new Ye({...i,resource:r});r.removeEventListener("canplay",u),t.data.preload&&await zc(r),l(xi(d,e,s))};r.addEventListener("canplay",u),r.appendChild(a)})},unload(s){s.destroy(!0)}},Jn={extension:{type:P.ResolveParser,name:"resolveTexture"},test:Zn.test,parse:s=>{var t;return{resolution:parseFloat(((t=ne.RETINA_PREFIX.exec(s))==null?void 0:t[1])??"1"),format:s.split(".").pop(),src:s}}},Vc={extension:{type:P.ResolveParser,priority:-2,name:"resolveJson"},test:s=>ne.RETINA_PREFIX.test(s)&&s.endsWith(".json"),parse:Jn.parse};class $c{constructor(){this._detections=[],this._initialized=!1,this.resolver=new ne,this.loader=new fc,this.cache=$,this._backgroundLoader=new rc(this.loader),this._backgroundLoader.active=!0,this.reset()}async init(t={}){var n,a;if(this._initialized){J("[Assets]AssetManager already initialized, did you load before calling this Assets.init()?");return}if(this._initialized=!0,t.defaultSearchParams&&this.resolver.setDefaultSearchParams(t.defaultSearchParams),t.basePath&&(this.resolver.basePath=t.basePath),t.bundleIdentifier&&this.resolver.setBundleIdentifier(t.bundleIdentifier),t.manifest){let o=t.manifest;typeof o=="string"&&(o=await this.load(o)),this.resolver.addManifest(o)}const e=((n=t.texturePreference)==null?void 0:n.resolution)??1,i=typeof e=="number"?[e]:e,r=await this._detectFormats({preferredFormats:(a=t.texturePreference)==null?void 0:a.format,skipDetections:t.skipDetections,detections:this._detections});this.resolver.prefer({params:{format:r,resolution:i}}),t.preferences&&this.setPreferences(t.preferences)}add(t){this.resolver.add(t)}async load(t,e){this._initialized||await this.init();const i=Ze(t),r=mt(t).map(o=>{if(typeof o!="string"){const h=this.resolver.getAlias(o);return h.some(c=>!this.resolver.hasKey(c))&&this.add(o),Array.isArray(h)?h[0]:h}return this.resolver.hasKey(o)||this.add({alias:o,src:o}),o}),n=this.resolver.resolve(r),a=await this._mapLoadToResolve(n,e);return i?a[r[0]]:a}addBundle(t,e){this.resolver.addBundle(t,e)}async loadBundle(t,e){this._initialized||await this.init();let i=!1;typeof t=="string"&&(i=!0,t=[t]);const r=this.resolver.resolveBundle(t),n={},a=Object.keys(r);let o=0,h=0;const c=()=>{e==null||e(++o/h)},l=a.map(u=>{const d=r[u];return h+=Object.keys(d).length,this._mapLoadToResolve(d,c).then(f=>{n[u]=f})});return await Promise.all(l),i?n[t[0]]:n}async backgroundLoad(t){this._initialized||await this.init(),typeof t=="string"&&(t=[t]);const e=this.resolver.resolve(t);this._backgroundLoader.add(Object.values(e))}async backgroundLoadBundle(t){this._initialized||await this.init(),typeof t=="string"&&(t=[t]);const e=this.resolver.resolveBundle(t);Object.values(e).forEach(i=>{this._backgroundLoader.add(Object.values(i))})}reset(){this.resolver.reset(),this.loader.reset(),this.cache.reset(),this._initialized=!1}get(t){if(typeof t=="string")return $.get(t);const e={};for(let i=0;i{const o=r[a.src],h=[a.src];a.alias&&h.push(...a.alias),h.forEach(c=>{n[c]=o}),$.set(h,o)}),n}async unload(t){this._initialized||await this.init();const e=mt(t).map(r=>typeof r!="string"?r.src:r),i=this.resolver.resolve(e);await this._unloadFromResolved(i)}async unloadBundle(t){this._initialized||await this.init(),t=mt(t);const e=this.resolver.resolveBundle(t),i=Object.keys(e).map(r=>this._unloadFromResolved(e[r]));await Promise.all(i)}async _unloadFromResolved(t){const e=Object.values(t);e.forEach(i=>{$.remove(i.src)}),await this.loader.unload(e)}async _detectFormats(t){let e=[];t.preferredFormats&&(e=Array.isArray(t.preferredFormats)?t.preferredFormats:[t.preferredFormats]);for(const i of t.detections)t.skipDetections||await i.test()?e=await i.add(e):t.skipDetections||(e=await i.remove(e));return e=e.filter((i,r)=>e.indexOf(i)===r),e}get detections(){return this._detections}setPreferences(t){this.loader.parsers.forEach(e=>{e.config&&Object.keys(e.config).filter(i=>i in t).forEach(i=>{e.config[i]=t[i]})})}}const X=new $c;nt.handleByList(P.LoadParser,X.loader.parsers).handleByList(P.ResolveParser,X.resolver.parsers).handleByList(P.CacheParser,X.cache.parsers).handleByList(P.DetectionParser,X.detections);nt.add(nc,oc,ac,dc,lc,cc,uc,mc,_c,Mc,Bc,Zn,Hc,ic,sc,Jn,Vc);const Mr={loader:P.LoadParser,resolver:P.ResolveParser,cache:P.CacheParser,detection:P.DetectionParser};nt.handle(P.Asset,s=>{const t=s.ref;Object.entries(Mr).filter(([e])=>!!t[e]).forEach(([e,i])=>nt.add(Object.assign(t[e],{extension:t[e].extension??i})))},s=>{const t=s.ref;Object.keys(Mr).filter(e=>!!t[e]).forEach(e=>nt.remove(t[e]))});class ee extends Je{constructor(t){t instanceof dt&&(t={context:t});const{context:e,roundPixels:i,...r}=t||{};super({label:"Graphics",...r}),this.renderPipeId="graphics",e?this._context=e:this._context=this._ownedContext=new dt,this._context.on("update",this.onViewUpdate,this),this.allowChildren=!1,this.roundPixels=i??!1}set context(t){t!==this._context&&(this._context.off("update",this.onViewUpdate,this),this._context=t,this._context.on("update",this.onViewUpdate,this),this.onViewUpdate())}get context(){return this._context}get bounds(){return this._context.bounds}addBounds(t){t.addBounds(this._context.bounds)}containsPoint(t){return this._context.containsPoint(t)}onViewUpdate(){if(this._didViewChangeTick++,this._didGraphicsUpdate=!0,this.didViewUpdate)return;this.didViewUpdate=!0;const t=this.renderGroup||this.parentRenderGroup;t&&t.onChildViewUpdate(this)}destroy(t){this._ownedContext&&!t?this._ownedContext.destroy(t):(t===!0||(t==null?void 0:t.context)===!0)&&this._context.destroy(t),this._ownedContext=null,this._context=null,super.destroy(t)}_callContextMethod(t,e){return this.context[t](...e),this}setFillStyle(...t){return this._callContextMethod("setFillStyle",t)}setStrokeStyle(...t){return this._callContextMethod("setStrokeStyle",t)}fill(...t){return this._callContextMethod("fill",t)}stroke(...t){return this._callContextMethod("stroke",t)}texture(...t){return this._callContextMethod("texture",t)}beginPath(){return this._callContextMethod("beginPath",[])}cut(){return this._callContextMethod("cut",[])}arc(...t){return this._callContextMethod("arc",t)}arcTo(...t){return this._callContextMethod("arcTo",t)}arcToSvg(...t){return this._callContextMethod("arcToSvg",t)}bezierCurveTo(...t){return this._callContextMethod("bezierCurveTo",t)}closePath(){return this._callContextMethod("closePath",[])}ellipse(...t){return this._callContextMethod("ellipse",t)}circle(...t){return this._callContextMethod("circle",t)}path(...t){return this._callContextMethod("path",t)}lineTo(...t){return this._callContextMethod("lineTo",t)}moveTo(...t){return this._callContextMethod("moveTo",t)}quadraticCurveTo(...t){return this._callContextMethod("quadraticCurveTo",t)}rect(...t){return this._callContextMethod("rect",t)}roundRect(...t){return this._callContextMethod("roundRect",t)}poly(...t){return this._callContextMethod("poly",t)}regularPoly(...t){return this._callContextMethod("regularPoly",t)}roundPoly(...t){return this._callContextMethod("roundPoly",t)}roundShape(...t){return this._callContextMethod("roundShape",t)}filletRect(...t){return this._callContextMethod("filletRect",t)}chamferRect(...t){return this._callContextMethod("chamferRect",t)}star(...t){return this._callContextMethod("star",t)}svg(...t){return this._callContextMethod("svg",t)}restore(...t){return this._callContextMethod("restore",t)}save(){return this._callContextMethod("save",[])}getTransform(){return this.context.getTransform()}resetTransform(){return this._callContextMethod("resetTransform",[])}rotateTransform(...t){return this._callContextMethod("rotate",t)}scaleTransform(...t){return this._callContextMethod("scale",t)}setTransform(...t){return this._callContextMethod("setTransform",t)}transform(...t){return this._callContextMethod("transform",t)}translateTransform(...t){return this._callContextMethod("translate",t)}clear(){return this._callContextMethod("clear",[])}get fillStyle(){return this._context.fillStyle}set fillStyle(t){this._context.fillStyle=t}get strokeStyle(){return this._context.strokeStyle}set strokeStyle(t){this._context.strokeStyle=t}clone(t=!1){return t?new ee(this._context.clone()):(this._ownedContext=null,new ee(this._context))}lineStyle(t,e,i){O(W,"Graphics#lineStyle is no longer needed. Use Graphics#setStrokeStyle to set the stroke style.");const r={};return t&&(r.width=t),e&&(r.color=e),i&&(r.alpha=i),this.context.strokeStyle=r,this}beginFill(t,e){O(W,"Graphics#beginFill is no longer needed. Use Graphics#fill to fill the shape with the desired style.");const i={};return t&&(i.color=t),e&&(i.alpha=e),this.context.fillStyle=i,this}endFill(){O(W,"Graphics#endFill is no longer needed. Use Graphics#fill to fill the shape with the desired style."),this.context.fill();const t=this.context.strokeStyle;return(t.width!==dt.defaultStrokeStyle.width||t.color!==dt.defaultStrokeStyle.color||t.alpha!==dt.defaultStrokeStyle.alpha)&&this.context.stroke(),this}drawCircle(...t){return O(W,"Graphics#drawCircle has been renamed to Graphics#circle"),this._callContextMethod("circle",t)}drawEllipse(...t){return O(W,"Graphics#drawEllipse has been renamed to Graphics#ellipse"),this._callContextMethod("ellipse",t)}drawPolygon(...t){return O(W,"Graphics#drawPolygon has been renamed to Graphics#poly"),this._callContextMethod("poly",t)}drawRect(...t){return O(W,"Graphics#drawRect has been renamed to Graphics#rect"),this._callContextMethod("rect",t)}drawRoundedRect(...t){return O(W,"Graphics#drawRoundedRect has been renamed to Graphics#roundRect"),this._callContextMethod("roundRect",t)}drawStar(...t){return O(W,"Graphics#drawStar has been renamed to Graphics#star"),this._callContextMethod("star",t)}}const ta=class ea extends In{constructor(...t){let e=t[0]??{};e instanceof Float32Array&&(O(W,"use new MeshGeometry({ positions, uvs, indices }) instead"),e={positions:e,uvs:t[1],indices:t[2]}),e={...ea.defaultOptions,...e};const i=e.positions||new Float32Array([0,0,1,0,1,1,0,1]),r=e.uvs||new Float32Array([0,0,1,0,1,1,0,1]),n=e.indices||new Uint32Array([0,1,2,0,2,3]),a=e.shrinkBuffersToFit,o=new kt({data:i,label:"attribute-mesh-positions",shrinkToFit:a,usage:Z.VERTEX|Z.COPY_DST}),h=new kt({data:r,label:"attribute-mesh-uvs",shrinkToFit:a,usage:Z.VERTEX|Z.COPY_DST}),c=new kt({data:n,label:"index-mesh-buffer",shrinkToFit:a,usage:Z.INDEX|Z.COPY_DST});super({attributes:{aPosition:{buffer:o,format:"float32x2",stride:2*4,offset:0},aUV:{buffer:h,format:"float32x2",stride:2*4,offset:0}},indexBuffer:c,topology:e.topology}),this.batchMode="auto"}get positions(){return this.attributes.aPosition.buffer.data}set positions(t){this.attributes.aPosition.buffer.data=t}get uvs(){return this.attributes.aUV.buffer.data}set uvs(t){this.attributes.aUV.buffer.data=t}get indices(){return this.indexBuffer.data}set indices(t){this.indexBuffer.data=t}};ta.defaultOptions={topology:"triangle-list",shrinkBuffersToFit:!1};let Yc=ta;class jc extends Je{constructor(t,e){const{text:i,resolution:r,style:n,anchor:a,width:o,height:h,roundPixels:c,...l}=t;super({...l}),this.batched=!0,this._resolution=null,this._autoResolution=!0,this._didTextUpdate=!0,this._styleClass=e,this.text=i??"",this.style=n,this.resolution=r??null,this.allowChildren=!1,this._anchor=new at({_onUpdate:()=>{this.onViewUpdate()}}),a&&(this.anchor=a),this.roundPixels=c??!1,o!==void 0&&(this.width=o),h!==void 0&&(this.height=h)}get anchor(){return this._anchor}set anchor(t){typeof t=="number"?this._anchor.set(t):this._anchor.copyFrom(t)}set text(t){t=t.toString(),this._text!==t&&(this._text=t,this.onViewUpdate())}get text(){return this._text}set resolution(t){this._autoResolution=t===null,this._resolution=t,this.onViewUpdate()}get resolution(){return this._resolution}get style(){return this._style}set style(t){var e;t=t||{},(e=this._style)==null||e.off("update",this.onViewUpdate,this),t instanceof this._styleClass?this._style=t:this._style=new this._styleClass(t),this._style.on("update",this.onViewUpdate,this),this.onViewUpdate()}get bounds(){return this._boundsDirty&&(this._updateBounds(),this._boundsDirty=!1),this._bounds}get width(){return Math.abs(this.scale.x)*this.bounds.width}set width(t){this._setWidth(t,this.bounds.width)}get height(){return Math.abs(this.scale.y)*this.bounds.height}set height(t){this._setHeight(t,this.bounds.height)}getSize(t){return t||(t={}),t.width=Math.abs(this.scale.x)*this.bounds.width,t.height=Math.abs(this.scale.y)*this.bounds.height,t}setSize(t,e){typeof t=="object"?(e=t.height??t.width,t=t.width):e??(e=t),t!==void 0&&this._setWidth(t,this.bounds.width),e!==void 0&&this._setHeight(e,this.bounds.height)}addBounds(t){const e=this.bounds;t.addFrame(e.minX,e.minY,e.maxX,e.maxY)}containsPoint(t){const e=this.bounds.width,i=this.bounds.height,r=-e*this.anchor.x;let n=0;return t.x>=r&&t.x<=r+e&&(n=-i*this.anchor.y,t.y>=n&&t.y<=n+i)}onViewUpdate(){if(this._didViewChangeTick++,this._boundsDirty=!0,this.didViewUpdate)return;this.didViewUpdate=!0,this._didTextUpdate=!0;const t=this.renderGroup||this.parentRenderGroup;t&&t.onChildViewUpdate(this)}_getKey(){return`${this.text}:${this._style.styleKey}:${this._resolution}`}destroy(t=!1){super.destroy(t),this.owner=null,this._bounds=null,this._anchor=null,(typeof t=="boolean"?t:t!=null&&t.style)&&this._style.destroy(t),this._style=null,this._text=null}}function Xc(s,t){let e=s[0]??{};return(typeof e=="string"||s[1])&&(O(W,`use new ${t}({ text: "hi!", style }) instead`),e={text:e,style:s[1]}),e}class Ct extends jc{constructor(...t){const e=Xc(t,"Text");super(e,ut),this.renderPipeId="text"}_updateBounds(){const t=this._bounds,e=this._anchor,i=ei.measureText(this._text,this._style),{width:r,height:n}=i;t.minX=-e._x*r,t.maxX=t.minX+r,t.minY=-e._y*n,t.maxY=t.minY+n}}const sa=class ia extends Yc{constructor(...t){super({});let e=t[0]??{};typeof e=="number"&&(O(W,"PlaneGeometry constructor changed please use { width, height, verticesX, verticesY } instead"),e={width:e,height:t[1],verticesX:t[2],verticesY:t[3]}),this.build(e)}build(t){t={...ia.defaultOptions,...t},this.verticesX=this.verticesX??t.verticesX,this.verticesY=this.verticesY??t.verticesY,this.width=this.width??t.width,this.height=this.height??t.height;const e=this.verticesX*this.verticesY,i=[],r=[],n=[],a=this.verticesX-1,o=this.verticesY-1,h=this.width/a,c=this.height/o;for(let u=0;ue?1:this.width/e,r=this._topHeight+this._bottomHeight,n=this.height>r?1:this.height/r,a=Math.min(i,n);t[9]=t[11]=t[13]=t[15]=this._topHeight*a,t[17]=t[19]=t[21]=t[23]=this.height-this._bottomHeight*a,t[25]=t[27]=t[29]=t[31]=this.height,t[2]=t[10]=t[18]=t[26]=this._leftWidth*a,t[4]=t[12]=t[20]=t[28]=this.width-this._rightWidth*a,t[6]=t[14]=t[22]=t[30]=this.width,this.getBuffer("aPosition").update()}updateUvs(){const t=this.uvs;t[0]=t[8]=t[16]=t[24]=0,t[1]=t[3]=t[5]=t[7]=0,t[6]=t[14]=t[22]=t[30]=1,t[25]=t[27]=t[29]=t[31]=1;const e=1/this._originalWidth,i=1/this._originalHeight;t[2]=t[10]=t[18]=t[26]=e*this._leftWidth,t[9]=t[11]=t[13]=t[15]=i*this._topHeight,t[4]=t[12]=t[20]=t[28]=1-e*this._rightWidth,t[17]=t[19]=t[21]=t[23]=1-i*this._bottomHeight,this.getBuffer("aUV").update()}};ra.defaultOptions={width:100,height:100,leftWidth:10,topHeight:10,rightWidth:10,bottomHeight:10,originalWidth:100,originalHeight:100};let Yt=ra;const aa=class oa extends Je{constructor(t){var u,d,f,p;t instanceof L&&(t={texture:t});const{width:e,height:i,leftWidth:r,rightWidth:n,topHeight:a,bottomHeight:o,texture:h,roundPixels:c,...l}=t;super({label:"NineSliceSprite",...l}),this.renderPipeId="nineSliceSprite",this.batched=!0,this._didSpriteUpdate=!0,this._leftWidth=r??((u=h==null?void 0:h.defaultBorders)==null?void 0:u.left)??Yt.defaultOptions.leftWidth,this._topHeight=a??((d=h==null?void 0:h.defaultBorders)==null?void 0:d.top)??Yt.defaultOptions.topHeight,this._rightWidth=n??((f=h==null?void 0:h.defaultBorders)==null?void 0:f.right)??Yt.defaultOptions.rightWidth,this._bottomHeight=o??((p=h==null?void 0:h.defaultBorders)==null?void 0:p.bottom)??Yt.defaultOptions.bottomHeight,this.bounds.maxX=this._width=e??h.width??Yt.defaultOptions.width,this.bounds.maxY=this._height=i??h.height??Yt.defaultOptions.height,this.allowChildren=!1,this.texture=h??oa.defaultOptions.texture,this.roundPixels=c??!1}get bounds(){return this._bounds}get width(){return this._width}set width(t){this.bounds.maxX=this._width=t,this.onViewUpdate()}get height(){return this._height}set height(t){this.bounds.maxY=this._height=t,this.onViewUpdate()}setSize(t,e){typeof t=="object"&&(e=t.height??t.width,t=t.width),this.bounds.maxX=this._width=t,this.bounds.maxY=this._height=e??t,this.onViewUpdate()}getSize(t){return t||(t={}),t.width=this._width,t.height=this._height,t}get leftWidth(){return this._leftWidth}set leftWidth(t){this._leftWidth=t,this.onViewUpdate()}get topHeight(){return this._topHeight}set topHeight(t){this._topHeight=t,this.onViewUpdate()}get rightWidth(){return this._rightWidth}set rightWidth(t){this._rightWidth=t,this.onViewUpdate()}get bottomHeight(){return this._bottomHeight}set bottomHeight(t){this._bottomHeight=t,this.onViewUpdate()}get texture(){return this._texture}set texture(t){t||(t=L.EMPTY);const e=this._texture;e!==t&&(e&&e.dynamic&&e.off("update",this.onViewUpdate,this),t.dynamic&&t.on("update",this.onViewUpdate,this),this._texture=t,this.onViewUpdate())}get originalWidth(){return this._texture.width}get originalHeight(){return this._texture.height}onViewUpdate(){if(this._didViewChangeTick++,this._didSpriteUpdate=!0,this.didViewUpdate)return;this.didViewUpdate=!0;const t=this.renderGroup||this.parentRenderGroup;t&&t.onChildViewUpdate(this)}addBounds(t){const e=this.bounds;t.addFrame(e.minX,e.minY,e.maxX,e.maxY)}destroy(t){if(super.destroy(t),typeof t=="boolean"?t:t==null?void 0:t.texture){const i=typeof t=="boolean"?t:t==null?void 0:t.textureSource;this._texture.destroy(i)}this._texture=null}};aa.defaultOptions={texture:L.EMPTY};let ke=aa;nt.add(_a,ba);class v{}b(v,"app"),b(v,"GameMaster"),b(v,"WindowHeight"),b(v,"WindowWidth"),b(v,"AspectRatio",16/9),b(v,"Grid"),b(v,"WaveManager"),b(v,"TowerManager"),b(v,"AnimationManager"),b(v,"NotificationManager"),b(v,"GameScene"),b(v,"latestCommit");class Kc{constructor(){b(this,"currentScene");b(this,"gameScene");b(this,"GameObjects",[]);v.GameMaster=this}_CreateGuiObject(t){this.currentScene.gui.push(t),v.app.stage.addChild(t.container)}_RemoveGuiObject(t){this.currentScene.gui.splice(this.currentScene.gui.indexOf(t),1),v.app.stage.removeChild(t.container)}changeScene(t){this.currentScene&&this.currentScene.destroy(),this.GameObjects.forEach(e=>{e.destroy()}),this.currentScene=t,this.currentScene.init()}}const G=class G{static async LoadAssets(){console.log("Loading Texture Assets");const t=new Ct({text:"Loading textures. This might take a while.",style:new ut({fill:3355443,fontSize:50})});t.x=v.app.canvas.width/2,t.y=v.app.canvas.height/2,t.anchor.set(.5,.5),v.app.stage.addChild(t),G.Button01Texture=await X.load({src:"/assets/gui/button_01.png"}),G.Button02Texture=await X.load({src:"/assets/gui/button_02.png"}),G.Frame01Texture=await X.load({src:"/assets/gui/frame_01.png"}),G.Frame02Texture=await X.load({src:"/assets/gui/frame_02.png"}),G.FrameBackground=await X.load({src:"/assets/gui/background_01.png"}),G.FrameTowerTab=await X.load({src:"/assets/gui/background_02.png"}),G.VioletBackground=await X.load({src:"/assets/gui/frame_violet.png"}),G.RedBackground=await X.load({src:"/assets/gui/frame_red.png"}),G.GreenBackground=await X.load({src:"/assets/gui/frame_green.png"}),G.HealthTexture=await X.load({src:"/assets/gui/heart.png"}),G.GoldTexture=await X.load({src:"/assets/gui/money.png"}),G.WaveTexture=await X.load({src:"/assets/gui/wave.png"}),G.BasicCreepTexture=await X.load({src:"/assets/creeps/basic.jpg"}),G.BasicTowerTexture=await X.load({src:"/assets/towers/basic_tower.png"}),G.BasicProjectileTexture=await X.load({src:"/assets/projectiles/basic_tower.png"}),await X.load({src:"https://fonts.googleapis.com/css?family=Aclonica"}),await this.LoadMissions(),await this.LoadTowers(),await this.LoadCreepStats(),t.destroy()}static async LoadCreepStats(){const e=await(await fetch("/assets/CreepStats.json")).json();this.CreepStats=e}static async LoadMissions(){G.Missions=[await this.LoadMission("/assets/missions/mission_01.json")]}static async LoadTowers(){const e=await(await fetch("/assets/Towers.json")).json();G.Towers=e,e.forEach(async i=>{let r=this.TowerSprites.length-1;r==-1&&(r=0),this.TowerSprites[r]=await X.load({src:`/assets/towers/${i.sprite}.png`})})}static async LoadMission(t){const i=await(await fetch(t)).json();return await this.LoadBackground(i.mapImage.url),i}static async LoadBackground(t){let e=this.MissionBackgrounds.length-1;e==-1&&(e=0),this.MissionBackgrounds[e]=await X.load({src:t})}};b(G,"BasicCreepTexture"),b(G,"BasicTowerTexture"),b(G,"BasicProjectileTexture"),b(G,"Frame01Texture"),b(G,"Frame02Texture"),b(G,"FrameBackground"),b(G,"FrameTowerTab"),b(G,"VioletBackground"),b(G,"RedBackground"),b(G,"GreenBackground"),b(G,"Button01Texture"),b(G,"Button02Texture"),b(G,"HealthTexture"),b(G,"GoldTexture"),b(G,"WaveTexture"),b(G,"MissionBackgrounds",[]),b(G,"TowerSprites",[]),b(G,"Missions"),b(G,"Towers"),b(G,"CreepStats"),b(G,"DebuggingEnabled",!1);let N=G;class Be{constructor(t){b(this,"name",this.constructor.name);b(this,"_container",new rt);b(this,"_events",new ot);b(this,"enabled",!0);v.GameMaster._CreateGuiObject(this),t&&(this._container.interactive=!0,this._container.onwheel=e=>{this.enabled&&this.onWheel(e)},this._container.onpointerdown=e=>{this.enabled&&this.onClick(e)})}destroy(){this._events.removeAllListeners(),this._container.parent&&this._container.parent.removeChild(this._container),this._container.destroy()}get container(){return this._container}get events(){return this._events}onClick(t){console.warn(`[${this.name} does not implement GuiObject.onClick()]`)}onWheel(t){console.warn(`[${this.name} does not implement GuiObject.onWheel()]`)}setEnabled(t){this.enabled=t}}var se=(s=>(s[s.Button01=0]="Button01",s[s.Button02=1]="Button02",s))(se||{});class Pe extends Be{constructor(e,i,r,n=!0){super(!0);b(this,"caption");b(this,"bounds");b(this,"buttonTexture");b(this,"buttonSprite");b(this,"buttonText");r==0&&(this.buttonTexture=N.Button01Texture),r==1&&(this.buttonTexture=N.Button02Texture),this.caption=i,this.enabled=n,this.bounds=e,this.container.x=this.bounds.x,this.container.y=this.bounds.y,this.container.width=this.bounds.width,this.container.height=this.bounds.height,this.buttonSprite=new ke({texture:this.buttonTexture,leftWidth:100,topHeight:100,rightWidth:100,bottomHeight:100}),this.buttonSprite.x=0,this.buttonSprite.y=0,this.buttonSprite.width=this.bounds.width,this.buttonSprite.height=this.bounds.height,this.container.addChild(this.buttonSprite),this.buttonText=new Ct({text:this.caption,style:new ut({fill:16777215,fontSize:24})}),this.container.addChild(this.buttonText),this.buttonText.anchor.set(.5,.5),this.buttonText.x=this.bounds.width/2,this.buttonText.y=this.bounds.height/2,this.container.x=this.bounds.x,this.container.y=this.bounds.y}setCaption(e){this.caption=e,this.buttonText.text=e}}class Et{constructor(){b(this,"name",this.constructor.name);b(this,"_container",new rt);b(this,"bb",new U);b(this,"_events",new ot)}destroy(){this._events.removeAllListeners(),this._container.parent&&this._container.parent.removeChild(this._container),this._container.destroy()}get container(){return this._container}get events(){return this._events}copyContainerToBB(){return this.bb.x=this.container.x,this.bb.y=this.container.y,this.bb.width=this.container.width,this.bb.height=this.container.height,this.bb}copyBBToContainer(){return this.container.x=this.bb.x,this.container.y=this.bb.y,this.container.width=this.bb.width,this.container.height=this.bb.height,this.container}copyPropertiesToObj(t){return t.x=this.bb.x,t.y=this.bb.y,t.width=this.bb.width,t.height=this.bb.height,t}}var ie=(s=>(s.Died="died",s.TakenDamage="takenDamage",s.Escaped="escaped",s.Moved="moved",s))(ie||{});class Zc extends Et{constructor(e,i,r){super();b(this,"id");b(this,"creepType");b(this,"sprite");b(this,"path");b(this,"stats");b(this,"pathIndex",0);b(this,"speed");b(this,"health");b(this,"maxHealth");b(this,"escaped",!1);b(this,"died",!1);b(this,"x");b(this,"y");b(this,"dead",!1);this.creepType=e,this.stats=structuredClone(N.CreepStats[this.creepType]),this.sprite=new lt({texture:N.BasicCreepTexture}),this.id=r,this.container.x=-70,this.container.y=-50,this.sprite.width=64,this.sprite.height=64,this.speed=this.stats.speed,this.health=this.stats.health,this.maxHealth=this.stats.health,this.path=i,this.x=i[0][1]*64+32,this.y=i[0][0]*64+32,v.GameScene.events.on("takenDamage",(n,a)=>{n==this.id&&(this.health-=a)}),v.Grid.container.addChild(this.container),this.container.addChild(this.sprite)}update(e){if(this.dead)return;if(this.health<=0){v.GameScene.events.emit("died",this.maxHealth,this),this.destroy(),this.dead=!0;return}if(this.pathIndex+1==this.path.length){if(this.escaped)return;this.events.emit("escaped",this),this.escaped=!0;return}const i=this.path[this.pathIndex],r=this.path[this.pathIndex+1],n=r[1]*64+32,a=r[0]*64+32,o=r[1]-i[1],h=r[0]-i[0];let c=this.speed*e*o,l=this.speed*e*h,u=!1;c>0&&this.x+c>n&&(c=n-this.x,u=!0),c<0&&this.x+c0&&this.y+l>a&&(l=a-this.y,u=!0),l<0&&this.y+l(s[s.Restricted=0]="Restricted",s[s.Buildable=1]="Buildable",s[s.Path=9]="Path",s))(Nt||{});class Qc extends Et{constructor(e,i,r,n){super();b(this,"type");b(this,"row");b(this,"column");b(this,"isPath",!1);b(this,"g");b(this,"clickDetector");if(this.type=e,this.row=i,this.column=r,this.isPath=n,this.bb.x=this.column*64,this.bb.y=this.row*64,this.bb.width=64,this.bb.height=64,v.Grid.container.addChild(this.container),this.container.x=this.bb.x,this.container.y=this.bb.y,this.clickDetector=new ee({zIndex:99,interactive:!0}),this.clickDetector.rect(0,0,this.bb.width,this.bb.height),this.clickDetector.fill({color:16711680,alpha:0}),this.container.addChild(this.clickDetector),this.clickDetector.onpointerdown=o=>{v.Grid._gridCellClicked(i,r)},!N.DebuggingEnabled)return;const a=new Ct({text:`${this.row}|${this.column}`,style:new ut({fill:16777215,dropShadow:!0,fontSize:16})});this.container.addChild(a),a.anchor.set(.5,.5),a.x=this.bb.width/2,a.y=this.bb.height/2,n&&(a.text+="p")}gDraw(){switch(this.g=new ee({zIndex:5}),this.g.rect(0,0,this.bb.width,this.bb.height),this.type){case Nt.Restricted:this.g.fill({color:2236962,alpha:.5});break;case Nt.Path:this.g.fill({color:2236962,alpha:.5});break;case Nt.Buildable:this.g.stroke({color:65280,alpha:.9});break}this.container.addChild(this.g)}gClear(){this.g!=null&&(this.container.removeChild(this.g),this.g.destroy())}update(){}}class Jc extends Et{constructor(e,i){super();b(this,"gameMap");b(this,"cells",[]);b(this,"creeps",[]);b(this,"gridShown",!1);this.gameMap=e,v.Grid=this,this.bb.x=0,this.bb.y=0,this.bb.width=64*30,this.bb.height=64*17,v.app.stage.addChild(this.container);let r=new lt(N.MissionBackgrounds[i]);r.x=0,r.y=0,r.width=this.bb.width,r.height=this.bb.height,this.container.addChild(r);for(let n=0;nl.some(u=>u[0]===a&&u[1]===n));h&&(o=Nt.Path);let c=new Qc(o,a,n,h);this.cells.push(c)}}toggleGrid(){this.cells.forEach(e=>{this.gridShown?e.gClear():e.gDraw()}),this.gridShown=!this.gridShown}addCreep(e){console.log("ADD CREEP"),this.creeps.push(e),e.events.on(ie.Died,i=>{this.onCreepDiedOrEscaped(i)}),e.events.on(ie.Escaped,i=>{this.onCreepDiedOrEscaped(i)})}onCreepDiedOrEscaped(e){this.creeps.splice(this.creeps.indexOf(e),1),e.destroy()}update(e){this.creeps.forEach(i=>{i.dead?(this.creeps.splice(this.creeps.indexOf(i),1),i=null):i.update(e)})}getCellByRowAndCol(e,i){return this.cells.filter(r=>r.row==e&&r.column==i)[0]}_gridCellClicked(e,i){this.onGridCellClicked(e,i)}onGridCellClicked(e,i){}}var ve=(s=>(s.CreepSpawned="creepSpawned",s.Finished="finished",s.NewWave="newwave",s))(ve||{});class tu extends Et{constructor(e,i){super();b(this,"creeps",[]);b(this,"rounds");b(this,"paths");b(this,"ticks",0);b(this,"started",!1);b(this,"finished",!1);b(this,"internalCreepId",0);v.WaveManager=this,this.rounds=e,this.paths=i}start(e){this.started=!0,this.ticks=0,this.creeps=[],this.finished=!1;let i=0;this.rounds[e].waves.forEach(r=>{i+=r.firstCreepSpawnTick,r.creeps.forEach(n=>{const a=new Zc(n,this.paths[0],this.internalCreepId);this.internalCreepId++;const o={creep:a,tickToSpawnAt:i,spawned:!1};console.log("CREAWTASEDASD"),i+=r.spawnIntervalTicks,this.creeps.push(o)})}),console.log(this.creeps)}end(){this.started=!1}update(e){this.started!=!1&&(this.ticks+=e,this.creeps.forEach(i=>{!i.spawned&&i.tickToSpawnAt<=this.ticks?(i.spawned=!0,this.events.emit("creepSpawned",i.creep),console.log("Wave manager creep spawned, ",i,this.ticks),!this.finished&&this.creeps.every(r=>r.spawned)&&(this.finished=!0,console.log("wave maanger finisehd"),this.events.emit("finished"))):i.spawned&&i.creep.update(e)}))}}var ha=(s=>(s.BasicTowerBehaviour="BasicTowerBehaviour",s))(ha||{});class eu{constructor(){b(this,"isPlacingTower",!1);b(this,"canPlaceTowers",!0);b(this,"selectedTower",null);b(this,"towers",[]);v.TowerManager=this}ToggleChoosingTowerLocation(t){this.canPlaceTowers&&(v.Grid.toggleGrid(),this.isPlacingTower?this.selectedTower=null:N.Towers.forEach(e=>{e.name==t&&(this.selectedTower=e)}),this.isPlacingTower=!this.isPlacingTower)}PlayerClickOnGrid(t,e){if(this.canPlaceTowers&&this.isPlacingTower){if(!this.selectedTower)throw console.warn("TowerManager.selectedTower is null when trying to place tower.");this.PlaceTower(this.selectedTower,t,e,this.selectedTower.behaviour)}}GetTowerByRowAndCol(t,e){let i=null;return this.towers.forEach(r=>{r.row==t&&r.column==e&&(i=r)}),i}PlaceTower(t,e,i,r,n){let a=0;N.Towers.forEach((h,c)=>{h.sprite==t.sprite&&(a=c)});const o=N.TowerSprites[a];if(!v.GameScene.MissionStats.hasEnoughGold(t.stats.cost)&&!n)return console.warn("Does not have enough gold.");if(!this.GetTowerByRowAndCol(e,i)&&v.Grid.getCellByRowAndCol(e,i).type!=Nt.Path&&v.Grid.getCellByRowAndCol(e,i).type!=Nt.Restricted){v.GameScene.MissionStats.spendGold(t.stats.cost);let h=new nu(e,i,o,t,r);this.towers.push(h),this.ToggleChoosingTowerLocation("RESET"),console.log("SHOULDVE PLACED TOWER"),console.log(this.selectedTower),this.selectedTower=null,v.GameScene.events.emit(yi.TowerPlacedEvent,t.name)}else console.warn("Can not place tower on occupied spot or path. Try again.")}update(t){this.towers.forEach(e=>{e.update(t)})}}function su(s,t,e,i){const r=e-s,n=i-t;return Math.atan2(n,r)}class iu extends Et{constructor(e,i,r,n,a){super();b(this,"deleteMe",!1);b(this,"sprite");b(this,"x");b(this,"y");b(this,"angle");b(this,"speed");b(this,"damage");b(this,"timeToLive",1);console.log("I SHOOTTED!"),this.x=e,this.y=i,this.damage=a,this.sprite=new lt({texture:r,scale:.5,rotation:n}),this.sprite.anchor.set(.5),this.container.x=this.x,this.container.y=this.y,this.container.addChild(this.sprite),v.app.stage.addChild(this.container),this.angle=n,this.speed=.9}destroy(){super.destroy(),this.deleteMe=!0}update(e){if(!this.deleteMe){if(this.x>2e3||this.x<0||this.y>2e3||this.y<0||this.timeToLive<=0)return this.destroy();v.Grid.creeps.forEach(i=>{if(!(this.timeToLive<=0)&&i.container&&this.checkCollision(i)){this.timeToLive--,this.onCollide(i);return}}),this.x+=Math.cos(this.angle)*this.speed*e,this.y+=Math.sin(this.angle)*this.speed*e,this.container.x=this.x,this.container.y=this.y}}onCollide(e){console.log("COLLIDED WITH"+e),v.GameScene.events.emit(ie.TakenDamage,e.id,this.damage)}checkCollision(e){if(e==null)return;let i=this.copyContainerToBB(),r=e.copyContainerToBB();return i.getBounds().intersects(r.getBounds())}}function ru(s,t,e,i){return Math.sqrt((e-s)*(e-s)+(i-t)*(i-t))}var yi=(s=>(s.TowerPlacedEvent="towerPlacedEvent",s))(yi||{});class nu extends Et{constructor(e,i,r,n,a){super();b(this,"row");b(this,"column");b(this,"projectiles",[]);b(this,"behaviour");b(this,"definition");b(this,"sprite");b(this,"ticksUntilNextShot");b(this,"graphics",new ee);this.row=e,this.column=i,this.behaviour=a,this.definition=n,this.ticksUntilNextShot=0;let o=v.Grid.getCellByRowAndCol(e,i);this.sprite=new lt({texture:r,height:64,width:64,zIndex:10}),this.container.addChild(this.sprite),o.container.addChild(this.container),o.clickDetector.onmouseenter=h=>{this.graphics.circle(this.column*64+32,this.row*64+32,this.definition.stats.range*64),this.graphics.fill({color:16711680,alpha:.5})},o.clickDetector.onmouseleave=h=>{this.graphics.clear()},v.app.stage.addChild(this.graphics)}GetCreepsInRange(){return v.Grid.creeps.filter(i=>{const r=i.x,n=i.y,a=this.column*64+32,o=this.row*64+32,h=this.definition.stats.range*64;return ru(a,o,r,n){i.deleteMe?(this.projectiles.splice(this.projectiles.indexOf(i),1),i=null):i.update(e)}),this.behaviour==ha.BasicTowerBehaviour){this.ticksUntilNextShot>0&&this.ticksUntilNextShot--;let i=this.GetCreepsInRange();if(i.length>0){let r=i[0];this.ticksUntilNextShot==0&&(this.ticksUntilNextShot=this.definition.stats.cooldown,this.Shoot(r))}}}}class Pr extends Be{constructor(e,i,r,n,a,o,h){if(e>3||i>2||e<0||i<0)throw"Index/row out of bounds for TowerButton.";super(!0);b(this,"frameSprite");b(this,"background");b(this,"towerName");b(this,"i",0);this.towerName=h,this.container.x=e*r+5,this.container.y=i*n+5,this.background=new lt({texture:o}),this.background.width=r,this.background.height=n,this.container.addChild(this.background),this.frameSprite=new ke({texture:N.Frame02Texture,leftWidth:100,topHeight:100,rightWidth:100,bottomHeight:100,roundPixels:!0,height:n,width:r}),this.container.addChild(this.frameSprite),a.addChild(this.container),v.GameScene.events.on(yi.TowerPlacedEvent,c=>{this.frameSprite.tint=16777215}),this.container.onmouseenter=c=>{},this.container.onmouseleave=c=>{}}onClick(e){this.frameSprite.tint==65280?this.frameSprite.tint=16777215:this.frameSprite.tint=65280,v.TowerManager.ToggleChoosingTowerLocation(this.towerName)}}class au extends Be{constructor(e){super(!1);b(this,"bounds");b(this,"towerTabSprite");b(this,"towerList",[]);this.bounds=e,N.Towers.forEach(i=>{let r={name:i.name,description:i.description,cost:i.stats.cost};this.towerList.push(r)}),this.container.x=this.bounds.x,this.container.y=this.bounds.y,this.towerTabSprite=new ke({texture:N.FrameTowerTab,leftWidth:500,topHeight:500,rightWidth:500,bottomHeight:500,roundPixels:!0}),this.towerTabSprite.width=this.bounds.width,this.towerTabSprite.height=this.bounds.height,this.container.addChild(this.towerTabSprite),new Pr(0,0,70,70,this.container,N.RedBackground,"Basic Tower"),new Pr(0,1,70,70,this.container,N.GreenBackground,"Basic Tower")}}class ou extends Be{constructor(e){super(!1);b(this,"bounds");b(this,"gemTabSprite");this.bounds=e,this.container.x=this.bounds.x,this.container.y=this.bounds.y,this.gemTabSprite=new ke({texture:N.FrameTowerTab,leftWidth:1e3,topHeight:1e3,rightWidth:1e3,bottomHeight:1e3}),this.gemTabSprite.x=0,this.gemTabSprite.y=0,this.gemTabSprite.width=this.bounds.width,this.gemTabSprite.height=this.bounds.height,this.container.addChild(this.gemTabSprite)}}class hu extends Be{constructor(e){super(!1);b(this,"bounds");b(this,"sidebarSprite");b(this,"towerTab");b(this,"gemTab");this.bounds=e,this.container.x=this.bounds.x,this.container.y=this.bounds.y,this.sidebarSprite=new ke({texture:N.Frame01Texture,leftWidth:100,topHeight:100,rightWidth:100,bottomHeight:100}),this.sidebarSprite.x=40,this.sidebarSprite.y=-40,this.sidebarSprite.width=this.bounds.width+40,this.sidebarSprite.height=this.bounds.height+80,this.container.addChild(this.sidebarSprite);const i=new U(60,20,this.bounds.width-65,150);this.towerTab=new au(i),this.container.addChild(this.towerTab.container);const r=new U(60,180,this.bounds.width-65,this.bounds.height-280);this.gemTab=new ou(r),this.container.addChild(this.gemTab.container)}}class _i{constructor(){b(this,"gui",[]);b(this,"_events",new ot)}destroy(){this.gui.forEach(t=>{t.destroy()})}GetGuiObject(t){return this.gui.find(e=>e==t)}GetGuiObjectByName(t){return this.gui.filter(e=>e.name==t)}get events(){return this._events}init(){}}class lu extends Et{constructor(e,i){super();b(this,"hp",100);b(this,"gold",0);b(this,"goldText");b(this,"healthText");b(this,"waveText");this.hp=e,this.gold=i,this.container.x=0,this.container.y=20,v.app.stage.addChild(this.container),this.healthText=new Ct({text:`${this.hp}`,style:new ut({fill:"red",fontSize:36,fontWeight:"bold",dropShadow:!0})}),this.goldText=new Ct({text:`${this.gold}`,style:new ut({fill:"gold",fontSize:36,fontWeight:"bold",dropShadow:!0})}),this.waveText=new Ct({text:`0/${v.GameScene.mission.rounds.length}`,style:new ut({fill:"dodgerblue",fontSize:36,fontWeight:"bold",dropShadow:!0})});const r=new lt(N.HealthTexture),n=new lt(N.GoldTexture),a=new lt(N.WaveTexture);this.healthText.x=200,this.healthText.y=-15,r.x=160,r.width=36,r.height=32,r.y=-10,this.goldText.x=200,this.goldText.y=20,n.x=150,n.width=56,n.height=56,n.y=15,this.waveText.x=200,this.waveText.y=55,a.x=155,a.width=46,a.height=32,a.y=65,this.container.addChild(this.healthText),this.container.addChild(this.goldText),this.container.addChild(this.waveText),this.container.addChild(r),this.container.addChild(n),this.container.addChild(a),v.GameScene.events.on(ve.NewWave,o=>{this.waveText.text=`${o}/${v.GameScene.mission.rounds.length}`})}getHP(){return this.hp}hasEnoughGold(e){return e<=this.gold}setHP(e){this.hp=e,this.healthText.text=this.hp}takeDamage(e){this.hp-=e,this.healthText.text=this.hp}setGold(e){this.gold=e,this.goldText.text=this.gold}earnGold(e){this.gold+=e,this.goldText.text=this.gold}spendGold(e){this.gold-=e,this.goldText.text=this.gold}update(){}}class la extends _i{constructor(e){super();b(this,"isGameOver",!1);b(this,"mission");b(this,"missionIndex");b(this,"MissionStats");b(this,"roundMode");b(this,"ticker");b(this,"changeRoundButton");b(this,"sidebar");b(this,"currentRound",0);b(this,"isWaveManagerFinished",!1);b(this,"playerWon",!1);v.GameScene=this,N.Missions.forEach((i,r)=>{i.name==e&&(this.mission=i,this.missionIndex=r)})}init(){this.ticker=new Xt,this.ticker.maxFPS=60,this.ticker.minFPS=30,this.ticker.add(()=>this.update(this.ticker.elapsedMS)),this.ticker.start();const e=new U(64*30-360,0,360,v.app.canvas.height),i=new U(50,v.app.canvas.height-100,310,100);new Jc(this.mission.gameMap,this.missionIndex),new eu,new tu(this.mission.rounds,this.mission.gameMap.paths),v.Grid.onGridCellClicked=(r,n)=>{v.TowerManager.isPlacingTower&&v.TowerManager.PlayerClickOnGrid(r,n)},v.WaveManager.events.on(ve.CreepSpawned,r=>{v.Grid.addCreep(r),r.events.on(ie.Escaped,()=>{this.onCreepEscaped(r)})}),v.WaveManager.events.on(ve.Finished,()=>{this.isWaveManagerFinished=!0}),this.events.on(ie.Died,(r,n)=>{this.MissionStats.earnGold(r)}),this.sidebar=new hu(e),this.changeRoundButton=new Pe(i,"Start",se.Button01,!0),this.changeRoundButton.container.removeFromParent(),this.sidebar.container.addChild(this.changeRoundButton.container),this.changeRoundButton.onClick=()=>{if(this.playerWon)return this.ReturnToMain();if(this.isGameOver)return v.NotificationManager.Notify("No more waves.","warn");this.changeRoundButton.setEnabled(!1),this.changeRoundButton.setCaption("WAVE IN PROGRESS"),this.setRoundMode(1),this.events.emit(ve.NewWave,`${this.currentRound+1}`)},this.MissionStats=new lu(100,200)}update(e){if(v.WaveManager.update(e),v.Grid.update(e),v.TowerManager.update(e),this.isWaveManagerFinished&&v.Grid.creeps.length==0){if(this.isWaveManagerFinished=!1,this.changeRoundButton.setEnabled(!0),this.changeRoundButton.setCaption("Start"),this.setRoundMode(0),v.NotificationManager.Notify(`Round ${this.currentRound+1}/${this.mission.rounds.length} completed.`,"info"),this.currentRound==this.mission.rounds.length&&v.NotificationManager.Notify("Final round.","danger"),this.currentRound+1==this.mission.rounds.length){this.changeRoundButton.setCaption("WINNER!"),v.NotificationManager.Notify("Mission victory!!","reward"),this.changeRoundButton.setCaption("Return to menu"),this.playerWon=!0;return}this.currentRound++}this.MissionStats.getHP()<=0?(this.isGameOver=!0,this.ShowScoreScreen(!0),this.ticker.stop()):this.playerWon&&(this.isGameOver=!0,this.ShowScoreScreen(!1),this.ticker.stop())}ShowScoreScreen(e){this.ticker.stop(),console.log(e?"LOSE!":"WIN!")}onCreepEscaped(e){this.MissionStats.takeDamage(e.health)}setRoundMode(e){this.roundMode=e,this.roundMode==1?v.WaveManager.start(this.currentRound):v.WaveManager.end()}ReturnToMain(){this.destroy(),v.app.stage.removeChildren(),v.GameMaster.changeScene(new ca)}onTowerPlaced(){}}class ca extends _i{init(){const t=new Pe(new U(0,0,300,60),"Back to main",se.Button01);t.onClick=e=>{v.GameMaster.changeScene(new ua)},N.Missions.forEach((e,i)=>{const r=new Pe(new U(v.app.canvas.width/2-150,v.app.canvas.height/5+i*80,300,60),e.name,se.Button01);r.onClick=n=>{v.GameMaster.changeScene(new la(e.name))}})}}class ua extends _i{init(){const t={caption:"New Game",rect:new U(v.app.canvas.width/2-150,v.app.canvas.height/5+240,300,60),texture:se.Button02},e={caption:"Settings",rect:new U(v.app.canvas.width/2-300/2,v.app.canvas.height/5+4*80,300,60),texture:se.Button02};let i=new Ct({x:v.app.canvas.width/2-300/2,y:v.app.canvas.height/5+1*80,text:"BASTION",style:{fill:16755200,fontFamily:"Aclonica",fontSize:100}});i.x=i.x-i.width/5,v.app.stage.addChild(i);let r=new Ct({x:0,y:0,text:"Latest commit: "+v.latestCommit,style:{fill:0,fontSize:10,fontWeight:"bold"}});v.app.stage.addChild(r);const n=new Pe(t.rect,t.caption,t.texture,!0);n.onClick=o=>{v.app.stage.removeChild(i),v.app.stage.removeChild(r),v.GameMaster.changeScene(new ca)};let a=new Pe(e.rect,e.caption,e.texture,!0);a.onClick=o=>{alert("Does nothing for now, just placeholder.")}}}function kr(s){console.log(s)}class cu{constructor(){b(this,"finished",!1);b(this,"calledBack",!1);b(this,"callbackFn")}Finish(){this.finished=!0}update(t){this.finished}}class uu extends cu{constructor(e,i,r,n){super();b(this,"fadeType");b(this,"fadeTime");b(this,"pixiObject");b(this,"ticks",0);this.fadeType=e,this.fadeTime=i,this.pixiObject=r,this.callbackFn=n,e=="in"?this.pixiObject.alpha=0:this.pixiObject.alpha=1}update(e){if(super.update(e),this.pixiObject==null)return this.Finish();this.ticks++,this.fadeType=="in"?this.pixiObject.alpha=this.ticks/this.fadeTime:this.pixiObject.alpha-=1/this.fadeTime,(this.ticks>=this.fadeTime||this.pixiObject.alpha<=0)&&this.Finish()}}class du{constructor(){b(this,"AnimationQueue",[])}Animate(t){this.AnimationQueue.push(t)}update(t){for(let e=this.AnimationQueue.length-1;e>=0;e--){const i=this.AnimationQueue[e];i.finished?(i.callbackFn(),this.AnimationQueue.splice(e,1)):i.update(t)}}}class fu{constructor(t,e,i,r,n){b(this,"textObj");b(this,"ticksToFadeAway");b(this,"animating",!1);b(this,"destroyed",!1);let a=16777215;e=="info"?a=2143228:e=="warn"?a=16570144:e=="danger"?a=16517642:e=="reward"&&(a=14047996),this.ticksToFadeAway=n,this.textObj=new Ct({text:t,style:new ut({fill:a,fontSize:36,fontWeight:"bold",dropShadow:!0,align:"center"}),x:i,y:r,zIndex:100}),this.textObj.anchor.set(.5,.5),v.NotificationManager.container.addChild(this.textObj)}destroy(){this.textObj.destroy(),this.destroyed=!0}}class pu extends Et{constructor(){super();b(this,"notifications",[]);b(this,"ticks",0);this.bb.x=v.app.canvas.width/2,this.bb.y=40,this.copyBBToContainer(),this.container.zIndex=100,v.app.stage.addChild(this.container)}Notify(e,i){let r=0,n=this.notifications.length*30;this.notifications.push(new fu(e,i,r,n,this.ticks+180)),console.log("CREATED NOTIFICATION "),console.log(e,i,r,n,this.ticks+180)}update(e){this.ticks++;for(let i=this.notifications.length-1;i>=0;i--){const r=this.notifications[i];if(r.destroyed){this.notifications.splice(i,1);continue}this.ticks>=r.ticksToFadeAway&&!r.animating&&(r.animating=!0,v.AnimationManager.Animate(new uu("out",240,r.textObj,()=>{r.destroy()})))}}}(async()=>{const s=new Sn;v.app=s,kr("main - init()"),await s.init({width:1920,height:1080,resolution:1,autoDensity:!0,backgroundColor:16777215,sharedTicker:!0}),kr("main - init() complete"),document.body.appendChild(s.canvas);function t(){const i=window.innerWidth,r=window.innerHeight,n=i/s.screen.width,a=r/s.screen.height,o=Math.min(n,a),h=Math.round(s.screen.width*o),c=Math.round(s.screen.height*o),l=(i-h)/2,u=(r-c)/2;s.canvas.style.width=`${h}px`,s.canvas.style.height=`${c}px`,s.canvas.style.marginLeft=`${l}px`,s.canvas.style.marginTop=`${u}px`,s.canvas.style.marginRight="0",s.canvas.style.marginBottom="0",s.canvas.style.display="block"}v.latestCommit=await fetch("/latest_commit").then(i=>i.text()),window.addEventListener("resize",t),t(),await N.LoadAssets(),new Kc,v.AnimationManager=new du,v.NotificationManager=new pu,globalThis.Engine=v,Xt.shared.add(i=>{v.NotificationManager.update(i.elapsedMS),v.AnimationManager.update(i.elapsedMS)}),v.GameMaster.changeScene(new ua),new URLSearchParams(location.href).entries().next().value[1]=="game"&&v.GameMaster.changeScene(new la("Mission 1")),v.latestCommit!="DEVELOPMENT"&&(window.onbeforeunload=()=>"You are about to leave.")})();export{O as $,bn as A,Z as B,rt as C,q as D,P as E,Ur as F,es as G,bt as H,Di as I,lt as J,Mo as K,Lo as L,D as M,tt as N,U as O,it as P,th as Q,Hs as R,bh as S,Tt as T,Ds as U,zi as V,no as W,ms as X,Q as Y,Nr as Z,wn as _,L as a,W as a0,nh as a1,In as a2,Vh as a3,Yh as a4,Zh as a5,Jh as a6,tl as a7,Jt as a8,ut as a9,Vl as aa,ei as ab,Wn as ac,Zi as ad,Yt as ae,Yc as af,wr as ag,Kl as ah,ee as ai,$ as aj,Fa as ak,ti as al,_r as am,Un as an,Xt as b,ot as c,kt as d,nt as e,Ki as f,xh as g,je as h,ai as i,xn as j,Qr as k,fn as l,yr as m,Mi as n,Hh as o,$h as p,qh as q,$a as r,Mn as s,Qh as t,oi as u,ln as v,J as w,Ia as x,sl as y,At as z}; diff --git a/assets/missions/mission_01.json b/assets/missions/mission_01.json index 67f5e30..9b95751 100644 --- a/assets/missions/mission_01.json +++ b/assets/missions/mission_01.json @@ -103,6 +103,26 @@ } ], "offeredGems": [0, 1, 2, 3] + }, + { + "waves": [ + { + "firstCreepSpawnTick": 500, + "spawnIntervalTicks": 1000, + "creeps": [0] + } + ], + "offeredGems": [0, 1, 2, 3] + }, + { + "waves": [ + { + "firstCreepSpawnTick": 500, + "spawnIntervalTicks": 1000, + "creeps": [0, 0] + } + ], + "offeredGems": [0, 1, 2, 3] } ] } diff --git a/assets/webworkerAll-C0L-Jtox.js b/assets/webworkerAll-DW2oDrMC.js similarity index 99% rename from assets/webworkerAll-C0L-Jtox.js rename to assets/webworkerAll-DW2oDrMC.js index 424cbcb..db9d58c 100644 --- a/assets/webworkerAll-C0L-Jtox.js +++ b/assets/webworkerAll-DW2oDrMC.js @@ -1,4 +1,4 @@ -import{E as h,U as Xe,b as se,a8 as L,M as R,a2 as Ne,l as D,h as me,w as O,a as k,P as Qe,R as q,H as xe,Y as G,a9 as Y,aa as Je,ab as P,z as b,ac as Ze,ad as _e,ae as et,u as be,o as Te,a3 as ye,t as Se,a6 as ve,af as we,s as tt,p as rt,q as st,a4 as at,a5 as nt,a7 as it,ag as ot,ah as dt,ai as lt,aj as j,ak as K,D as Be,m as A,O as ae,$ as ut,al as ct,am as ne,n as ie,e as S,an as ht}from"./index-ChER3YqS.js";import{T as w,S as Ce,c as X,a as ft,b as pt,B as Re}from"./colorToUniform-BGjOuL4T.js";class Me{static init(e){Object.defineProperty(this,"resizeTo",{set(t){globalThis.removeEventListener("resize",this.queueResize),this._resizeTo=t,t&&(globalThis.addEventListener("resize",this.queueResize),this.resize())},get(){return this._resizeTo}}),this.queueResize=()=>{this._resizeTo&&(this._cancelResize(),this._resizeId=requestAnimationFrame(()=>this.resize()))},this._cancelResize=()=>{this._resizeId&&(cancelAnimationFrame(this._resizeId),this._resizeId=null)},this.resize=()=>{if(!this._resizeTo)return;this._cancelResize();let t,r;if(this._resizeTo===globalThis.window)t=globalThis.innerWidth,r=globalThis.innerHeight;else{const{clientWidth:s,clientHeight:n}=this._resizeTo;t=s,r=n}this.renderer.resize(t,r),this.render()},this._resizeId=null,this._resizeTo=null,this.resizeTo=e.resizeTo||null}static destroy(){globalThis.removeEventListener("resize",this.queueResize),this._cancelResize(),this._cancelResize=null,this.queueResize=null,this.resizeTo=null,this.resize=null}}Me.extension=h.Application;class Pe{static init(e){e=Object.assign({autoStart:!0,sharedTicker:!1},e),Object.defineProperty(this,"ticker",{set(t){this._ticker&&this._ticker.remove(this.render,this),this._ticker=t,t&&t.add(this.render,this,Xe.LOW)},get(){return this._ticker}}),this.stop=()=>{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=e.sharedTicker?se.shared:new se,e.autoStart&&this.start()}static destroy(){if(this._ticker){const e=this._ticker;this.ticker=null,e.destroy()}}}Pe.extension=h.Application;class Ue{constructor(e){this._renderer=e}push(e,t,r){this._renderer.renderPipes.batch.break(r),r.add({renderPipeId:"filter",canBundle:!1,action:"pushFilter",container:t,filterEffect:e})}pop(e,t,r){this._renderer.renderPipes.batch.break(r),r.add({renderPipeId:"filter",action:"popFilter",canBundle:!1})}execute(e){e.action==="pushFilter"?this._renderer.filter.push(e):e.action==="popFilter"&&this._renderer.filter.pop()}destroy(){this._renderer=null}}Ue.extension={type:[h.WebGLPipes,h.WebGPUPipes,h.CanvasPipes],name:"filter"};const gt=new R;function mt(a,e){return e.clear(),ke(a,e),e.isValid||e.set(0,0,0,0),a.renderGroup?e.applyMatrix(a.renderGroup.localTransform):e.applyMatrix(a.parentRenderGroup.worldTransform),e}function ke(a,e){if(a.localDisplayStatus!==7||!a.measurable)return;const t=!!a.effects.length;let r=e;if((a.renderGroup||t)&&(r=L.get().clear()),a.boundsArea)e.addRect(a.boundsArea,a.worldTransform);else{if(a.renderPipeId){const n=a.bounds;r.addFrame(n.minX,n.minY,n.maxX,n.maxY,a.groupTransform)}const s=a.children;for(let n=0;n"},uInputPixel:{value:new Float32Array(4),type:"vec4"},uInputClamp:{value:new Float32Array(4),type:"vec4"},uOutputFrame:{value:new Float32Array(4),type:"vec4"},uGlobalFrame:{value:new Float32Array(4),type:"vec4"},uOutputTexture:{value:new Float32Array(4),type:"vec4"}}),this._globalFilterBindGroup=new me({}),this.renderer=e}get activeBackTexture(){var e;return(e=this._activeFilterData)==null?void 0:e.backTexture}push(e){var f;const t=this.renderer,r=e.filterEffect.filters;this._filterStack[this._filterStackIndex]||(this._filterStack[this._filterStackIndex]=this._getFilterData());const s=this._filterStack[this._filterStackIndex];if(this._filterStackIndex++,r.length===0){s.skip=!0;return}const n=s.bounds;e.renderables?xt(e.renderables,n):e.filterEffect.filterArea?(n.clear(),n.addRect(e.filterEffect.filterArea),n.applyMatrix(e.container.worldTransform)):mt(e.container,n);const i=t.renderTarget.renderTarget.colorTexture.source;let o=1/0,d=0,l=!0,u=!1,c=!1;for(let m=0;m0?this._filterStack[this._filterStackIndex-1].bounds:null,d=e.renderTarget.getRenderTarget(t.previousRenderSurface);n=this.getBackTexture(d,s,o)}t.backTexture=n;const i=t.filterEffect.filters;if(this._globalFilterBindGroup.setResource(r.source.style,2),this._globalFilterBindGroup.setResource(n.source,3),e.globalUniforms.pop(),i.length===1)i[0].apply(this,r,t.previousRenderSurface,!1),w.returnTexture(r);else{let o=t.inputTexture,d=w.getOptimalTexture(s.width,s.height,o.source._resolution,!1),l=0;for(l=0;l0&&this._filterStack[g].skip;)--g;g>0&&(c=this._filterStack[g].inputTexture.source._resolution);const f=this._filterGlobalUniforms,m=f.uniforms,p=m.uOutputFrame,_=m.uInputSize,x=m.uInputPixel,B=m.uInputClamp,T=m.uGlobalFrame,C=m.uOutputTexture;if(u){let M=this._filterStackIndex;for(;M>0;){M--;const v=this._filterStack[this._filterStackIndex-1];if(!v.skip){d.x=v.bounds.minX,d.y=v.bounds.minY;break}}p[0]=o.minX-d.x,p[1]=o.minY-d.y}else p[0]=0,p[1]=0;p[2]=t.frame.width,p[3]=t.frame.height,_[0]=t.source.width,_[1]=t.source.height,_[2]=1/_[0],_[3]=1/_[1],x[0]=t.source.pixelWidth,x[1]=t.source.pixelHeight,x[2]=1/x[0],x[3]=1/x[1],B[0]=.5*x[2],B[1]=.5*x[3],B[2]=t.frame.width*_[2]-.5*x[2],B[3]=t.frame.height*_[3]-.5*x[3];const F=this.renderer.renderTarget.rootRenderTarget.colorTexture;T[0]=d.x*c,T[1]=d.y*c,T[2]=F.source.width*c,T[3]=F.source.height*c;const U=this.renderer.renderTarget.getRenderTarget(r);if(n.renderTarget.bind(r,!!s),r instanceof k?(C[0]=r.frame.width,C[1]=r.frame.height):(C[0]=U.width,C[1]=U.height),C[2]=U.isRoot?-1:1,f.update(),n.renderPipes.uniformBatch){const M=n.renderPipes.uniformBatch.getUboResource(f);this._globalFilterBindGroup.setResource(M,0)}else this._globalFilterBindGroup.setResource(f,0);this._globalFilterBindGroup.setResource(t.source,1),this._globalFilterBindGroup.setResource(t.source.style,2),e.groups[0]=this._globalFilterBindGroup,n.encoder.draw({geometry:_t,shader:e,state:e._state,topology:"triangle-list"}),n.type===q.WEBGL&&n.renderTarget.finishRenderPass()}_getFilterData(){return{skip:!1,inputTexture:null,bounds:new xe,container:null,filterEffect:null,blendRequired:!1,previousRenderSurface:null}}calculateSpriteMatrix(e,t){const r=this._activeFilterData,s=e.set(r.inputTexture._source.width,0,0,r.inputTexture._source.height,r.bounds.minX,r.bounds.minY),n=t.worldTransform.copyTo(R.shared);return n.invert(),s.prepend(n),s.scale(1/t.texture.frame.width,1/t.texture.frame.height),s.translate(t.anchor.x,t.anchor.y),s}}Ge.extension={type:[h.WebGLSystem,h.WebGPUSystem],name:"filter"};function bt(a){const e=a._stroke,t=a._fill,s=[`div { ${[`color: ${G.shared.setValue(t.color).toHex()}`,`font-size: ${a.fontSize}px`,`font-family: ${a.fontFamily}`,`font-weight: ${a.fontWeight}`,`font-style: ${a.fontStyle}`,`font-variant: ${a.fontVariant}`,`letter-spacing: ${a.letterSpacing}px`,`text-align: ${a.align}`,`padding: ${a.padding}px`,`white-space: ${a.whiteSpace==="pre"&&a.wordWrap?"pre-wrap":a.whiteSpace}`,...a.lineHeight?[`line-height: ${a.lineHeight}px`]:[],...a.wordWrap?[`word-wrap: ${a.breakWords?"break-all":"break-word"}`,`max-width: ${a.wordWrapWidth}px`]:[],...e?[Ae(e)]:[],...a.dropShadow?[Fe(a.dropShadow)]:[],...a.cssOverrides].join(";")} }`];return Tt(a.tagStyles,s),s.join(" ")}function Fe(a){const e=G.shared.setValue(a.color).setAlpha(a.alpha).toHexa(),t=Math.round(Math.cos(a.angle)*a.distance),r=Math.round(Math.sin(a.angle)*a.distance),s=`${t}px ${r}px`;return a.blur>0?`text-shadow: ${s} ${a.blur}px ${e}`:`text-shadow: ${s} ${e}`}function Ae(a){return[`-webkit-text-stroke-width: ${a.width}px`,`-webkit-text-stroke-color: ${G.shared.setValue(a.color).toHex()}`,`text-stroke-width: ${a.width}px`,`text-stroke-color: ${G.shared.setValue(a.color).toHex()}`,"paint-order: stroke"].join(";")}const oe={fontSize:"font-size: {{VALUE}}px",fontFamily:"font-family: {{VALUE}}",fontWeight:"font-weight: {{VALUE}}",fontStyle:"font-style: {{VALUE}}",fontVariant:"font-variant: {{VALUE}}",letterSpacing:"letter-spacing: {{VALUE}}px",align:"text-align: {{VALUE}}",padding:"padding: {{VALUE}}px",whiteSpace:"white-space: {{VALUE}}",lineHeight:"line-height: {{VALUE}}px",wordWrapWidth:"max-width: {{VALUE}}px"},de={fill:a=>`color: ${G.shared.setValue(a).toHex()}`,breakWords:a=>`word-wrap: ${a?"break-all":"break-word"}`,stroke:Ae,dropShadow:Fe};function Tt(a,e){for(const t in a){const r=a[t],s=[];for(const n in r)de[n]?s.push(de[n](r[n])):oe[n]&&s.push(oe[n].replace("{{VALUE}}",r[n]));e.push(`${t} { ${s.join(";")} }`)}}class N extends Y{constructor(e={}){super(e),this._cssOverrides=[],this.cssOverrides??(this.cssOverrides=e.cssOverrides),this.tagStyles=e.tagStyles??{}}set cssOverrides(e){this._cssOverrides=e instanceof Array?e:[e],this.update()}get cssOverrides(){return this._cssOverrides}_generateKey(){return this._styleKey=Je(this)+this._cssOverrides.join("-"),this._styleKey}update(){this._cssStyle=null,super.update()}clone(){return new N({align:this.align,breakWords:this.breakWords,dropShadow:this.dropShadow?{...this.dropShadow}:null,fill:this._fill,fontFamily:this.fontFamily,fontSize:this.fontSize,fontStyle:this.fontStyle,fontVariant:this.fontVariant,fontWeight:this.fontWeight,letterSpacing:this.letterSpacing,lineHeight:this.lineHeight,padding:this.padding,stroke:this._stroke,whiteSpace:this.whiteSpace,wordWrap:this.wordWrap,wordWrapWidth:this.wordWrapWidth,cssOverrides:this.cssOverrides})}get cssStyle(){return this._cssStyle||(this._cssStyle=bt(this)),this._cssStyle}addOverride(...e){const t=e.filter(r=>!this.cssOverrides.includes(r));t.length>0&&(this.cssOverrides.push(...t),this.update())}removeOverride(...e){const t=e.filter(r=>this.cssOverrides.includes(r));t.length>0&&(this.cssOverrides=this.cssOverrides.filter(r=>!t.includes(r)),this.update())}set fill(e){typeof e!="string"&&typeof e!="number"&&O("[HTMLTextStyle] only color fill is not supported by HTMLText"),super.fill=e}set stroke(e){e&&typeof e!="string"&&typeof e!="number"&&O("[HTMLTextStyle] only color stroke is not supported by HTMLText"),super.stroke=e}}const le="http://www.w3.org/2000/svg",ue="http://www.w3.org/1999/xhtml";class De{constructor(){this.svgRoot=document.createElementNS(le,"svg"),this.foreignObject=document.createElementNS(le,"foreignObject"),this.domElement=document.createElementNS(ue,"div"),this.styleElement=document.createElementNS(ue,"style"),this.image=new Image;const{foreignObject:e,svgRoot:t,styleElement:r,domElement:s}=this;e.setAttribute("width","10000"),e.setAttribute("height","10000"),e.style.overflow="hidden",t.appendChild(e),e.appendChild(r),e.appendChild(s)}}let ce;function yt(a,e,t,r){r=r||ce||(ce=new De);const{domElement:s,styleElement:n,svgRoot:i}=r;s.innerHTML=`
${a}
`,s.setAttribute("style","transform-origin: top left; display: inline-block"),t&&(n.textContent=t),document.body.appendChild(i);const o=s.getBoundingClientRect();i.remove();const d=P.measureFont(e.fontStyle).descent,l=e.padding*2;return{width:o.width-l,height:o.height+d-l}}class ze{constructor(e,t){this.state=Ce.for2d(),this._graphicsBatchesHash=Object.create(null),this._destroyRenderableBound=this.destroyRenderable.bind(this),this.renderer=e,this._adaptor=t,this._adaptor.init()}validateRenderable(e){const t=e.context,r=!!this._graphicsBatchesHash[e.uid],s=this.renderer.graphicsContext.updateGpuContext(t);return!!(s.isBatchable||r!==s.isBatchable)}addRenderable(e,t){const r=this.renderer.graphicsContext.updateGpuContext(e.context);e._didGraphicsUpdate&&(e._didGraphicsUpdate=!1,this._rebuild(e)),r.isBatchable?this._addToBatcher(e,t):(this.renderer.renderPipes.batch.break(t),t.add(e))}updateRenderable(e){const t=this._graphicsBatchesHash[e.uid];if(t)for(let r=0;r{const o=b.get(Ze);return i.copyTo(o),o.renderable=e,o.roundPixels=s,o});return this._graphicsBatchesHash[e.uid]===void 0&&e.on("destroyed",this._destroyRenderableBound),this._graphicsBatchesHash[e.uid]=n,n}_removeBatchForRenderable(e){this._graphicsBatchesHash[e].forEach(t=>{b.return(t)}),this._graphicsBatchesHash[e]=null}destroy(){this.renderer=null,this._adaptor.destroy(),this._adaptor=null,this.state=null;for(const e in this._graphicsBatchesHash)this._removeBatchForRenderable(e);this._graphicsBatchesHash=null}}ze.extension={type:[h.WebGLPipes,h.WebGPUPipes,h.CanvasPipes],name:"graphics"};class Q{constructor(){this.batcherName="default",this.packAsQuad=!1,this.indexOffset=0,this.attributeOffset=0,this.roundPixels=0,this._batcher=null,this._batch=null,this._uvUpdateId=-1,this._textureMatrixUpdateId=-1}get blendMode(){return this.renderable.groupBlendMode}reset(){this.renderable=null,this.texture=null,this._batcher=null,this._batch=null,this.geometry=null,this._uvUpdateId=-1,this._textureMatrixUpdateId=-1}get uvs(){const t=this.geometry.getBuffer("aUV"),r=t.data;let s=r;const n=this.texture.textureMatrix;return n.isSimple||(s=this._transformedUvs,(this._textureMatrixUpdateId!==n._updateID||this._uvUpdateId!==t._updateID)&&((!s||s.length"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4"},uRound:{value:0,type:"f32"}}),this.localUniformsBindGroup=new me({0:this.localUniforms}),this._meshDataHash=Object.create(null),this._gpuBatchableMeshHash=Object.create(null),this._destroyRenderableBound=this.destroyRenderable.bind(this),this.renderer=e,this._adaptor=t,this._adaptor.init()}validateRenderable(e){const t=this._getMeshData(e),r=t.batched,s=e.batched;if(t.batched=s,r!==s)return!0;if(s){const n=e._geometry;if(n.indices.length!==t.indexSize||n.positions.length!==t.vertexSize)return t.indexSize=n.indices.length,t.vertexSize=n.positions.length,!0;const i=this._getBatchableMesh(e),o=e.texture;if(i.texture._source!==o._source&&i.texture._source!==o._source)return!i._batcher.checkAndUpdateTexture(i,o)}return!1}addRenderable(e,t){const r=this.renderer.renderPipes.batch,{batched:s}=this._getMeshData(e);if(s){const n=this._getBatchableMesh(e);n.texture=e._texture,n.geometry=e._geometry,r.addToBatch(n,t)}else r.break(t),t.add(e)}updateRenderable(e){if(e.batched){const t=this._gpuBatchableMeshHash[e.uid];t.texture=e._texture,t.geometry=e._geometry,t._batcher.updateElement(t)}}destroyRenderable(e){this._meshDataHash[e.uid]=null;const t=this._gpuBatchableMeshHash[e.uid];t&&(b.return(t),this._gpuBatchableMeshHash[e.uid]=null),e.off("destroyed",this._destroyRenderableBound)}execute(e){if(!e.isRenderable)return;e.state.blendMode=_e(e.groupBlendMode,e.texture._source);const t=this.localUniforms;t.uniforms.uTransformMatrix=e.groupTransform,t.uniforms.uRound=this.renderer._roundPixels|e._roundPixels,t.update(),X(e.groupColorAlpha,t.uniforms.uColor,0),this._adaptor.execute(this,e)}_getMeshData(e){return this._meshDataHash[e.uid]||this._initMeshData(e)}_initMeshData(e){var t,r;return this._meshDataHash[e.uid]={batched:e.batched,indexSize:(t=e._geometry.indices)==null?void 0:t.length,vertexSize:(r=e._geometry.positions)==null?void 0:r.length},e.on("destroyed",this._destroyRenderableBound),this._meshDataHash[e.uid]}_getBatchableMesh(e){return this._gpuBatchableMeshHash[e.uid]||this._initBatchableMesh(e)}_initBatchableMesh(e){const t=b.get(Q);return t.renderable=e,t.texture=e._texture,t.transform=e.groupTransform,t.roundPixels=this.renderer._roundPixels|e._roundPixels,this._gpuBatchableMeshHash[e.uid]=t,t}destroy(){for(const e in this._gpuBatchableMeshHash)this._gpuBatchableMeshHash[e]&&b.return(this._gpuBatchableMeshHash[e]);this._gpuBatchableMeshHash=null,this._meshDataHash=null,this.localUniforms=null,this.localUniformsBindGroup=null,this._adaptor.destroy(),this._adaptor=null,this.renderer=null}}He.extension={type:[h.WebGLPipes,h.WebGPUPipes,h.CanvasPipes],name:"mesh"};class Oe{constructor(e){this._gpuSpriteHash=Object.create(null),this._destroyRenderableBound=this.destroyRenderable.bind(this),this._renderer=e}addRenderable(e,t){const r=this._getGpuSprite(e);e._didSpriteUpdate&&this._updateBatchableSprite(e,r),this._renderer.renderPipes.batch.addToBatch(r,t)}updateRenderable(e){const t=this._gpuSpriteHash[e.uid];e._didSpriteUpdate&&this._updateBatchableSprite(e,t),t._batcher.updateElement(t)}validateRenderable(e){const t=e._texture,r=this._getGpuSprite(e);return r.texture._source!==t._source?!r._batcher.checkAndUpdateTexture(r,t):!1}destroyRenderable(e){const t=this._gpuSpriteHash[e.uid];b.return(t.geometry),b.return(t),this._gpuSpriteHash[e.uid]=null,e.off("destroyed",this._destroyRenderableBound)}_updateBatchableSprite(e,t){e._didSpriteUpdate=!1,t.geometry.update(e),t.texture=e._texture}_getGpuSprite(e){return this._gpuSpriteHash[e.uid]||this._initGPUSprite(e)}_initGPUSprite(e){const t=b.get(Q);return t.geometry=b.get(et),t.renderable=e,t.transform=e.groupTransform,t.texture=e._texture,t.roundPixels=this._renderer._roundPixels|e._roundPixels,e._didSpriteUpdate=!0,this._gpuSpriteHash[e.uid]=t,e.on("destroyed",this._destroyRenderableBound),t}destroy(){for(const e in this._gpuSpriteHash)this._gpuSpriteHash[e].geometry.destroy();this._gpuSpriteHash=null,this._renderer=null}}Oe.extension={type:[h.WebGLPipes,h.WebGPUPipes,h.CanvasPipes],name:"nineSliceSprite"};const St={name:"tiling-bit",vertex:{header:` +import{E as h,U as Xe,b as se,a8 as L,M as R,a2 as Ne,l as D,h as me,w as O,a as k,P as Qe,R as q,H as xe,Y as G,a9 as Y,aa as Je,ab as P,z as b,ac as Ze,ad as _e,ae as et,u as be,o as Te,a3 as ye,t as Se,a6 as ve,af as we,s as tt,p as rt,q as st,a4 as at,a5 as nt,a7 as it,ag as ot,ah as dt,ai as lt,aj as j,ak as K,D as Be,m as A,O as ae,$ as ut,al as ct,am as ne,n as ie,e as S,an as ht}from"./index-BT5ZfHPv.js";import{T as w,S as Ce,c as X,a as ft,b as pt,B as Re}from"./colorToUniform-CAElEulk.js";class Me{static init(e){Object.defineProperty(this,"resizeTo",{set(t){globalThis.removeEventListener("resize",this.queueResize),this._resizeTo=t,t&&(globalThis.addEventListener("resize",this.queueResize),this.resize())},get(){return this._resizeTo}}),this.queueResize=()=>{this._resizeTo&&(this._cancelResize(),this._resizeId=requestAnimationFrame(()=>this.resize()))},this._cancelResize=()=>{this._resizeId&&(cancelAnimationFrame(this._resizeId),this._resizeId=null)},this.resize=()=>{if(!this._resizeTo)return;this._cancelResize();let t,r;if(this._resizeTo===globalThis.window)t=globalThis.innerWidth,r=globalThis.innerHeight;else{const{clientWidth:s,clientHeight:n}=this._resizeTo;t=s,r=n}this.renderer.resize(t,r),this.render()},this._resizeId=null,this._resizeTo=null,this.resizeTo=e.resizeTo||null}static destroy(){globalThis.removeEventListener("resize",this.queueResize),this._cancelResize(),this._cancelResize=null,this.queueResize=null,this.resizeTo=null,this.resize=null}}Me.extension=h.Application;class Pe{static init(e){e=Object.assign({autoStart:!0,sharedTicker:!1},e),Object.defineProperty(this,"ticker",{set(t){this._ticker&&this._ticker.remove(this.render,this),this._ticker=t,t&&t.add(this.render,this,Xe.LOW)},get(){return this._ticker}}),this.stop=()=>{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=e.sharedTicker?se.shared:new se,e.autoStart&&this.start()}static destroy(){if(this._ticker){const e=this._ticker;this.ticker=null,e.destroy()}}}Pe.extension=h.Application;class Ue{constructor(e){this._renderer=e}push(e,t,r){this._renderer.renderPipes.batch.break(r),r.add({renderPipeId:"filter",canBundle:!1,action:"pushFilter",container:t,filterEffect:e})}pop(e,t,r){this._renderer.renderPipes.batch.break(r),r.add({renderPipeId:"filter",action:"popFilter",canBundle:!1})}execute(e){e.action==="pushFilter"?this._renderer.filter.push(e):e.action==="popFilter"&&this._renderer.filter.pop()}destroy(){this._renderer=null}}Ue.extension={type:[h.WebGLPipes,h.WebGPUPipes,h.CanvasPipes],name:"filter"};const gt=new R;function mt(a,e){return e.clear(),ke(a,e),e.isValid||e.set(0,0,0,0),a.renderGroup?e.applyMatrix(a.renderGroup.localTransform):e.applyMatrix(a.parentRenderGroup.worldTransform),e}function ke(a,e){if(a.localDisplayStatus!==7||!a.measurable)return;const t=!!a.effects.length;let r=e;if((a.renderGroup||t)&&(r=L.get().clear()),a.boundsArea)e.addRect(a.boundsArea,a.worldTransform);else{if(a.renderPipeId){const n=a.bounds;r.addFrame(n.minX,n.minY,n.maxX,n.maxY,a.groupTransform)}const s=a.children;for(let n=0;n"},uInputPixel:{value:new Float32Array(4),type:"vec4"},uInputClamp:{value:new Float32Array(4),type:"vec4"},uOutputFrame:{value:new Float32Array(4),type:"vec4"},uGlobalFrame:{value:new Float32Array(4),type:"vec4"},uOutputTexture:{value:new Float32Array(4),type:"vec4"}}),this._globalFilterBindGroup=new me({}),this.renderer=e}get activeBackTexture(){var e;return(e=this._activeFilterData)==null?void 0:e.backTexture}push(e){var f;const t=this.renderer,r=e.filterEffect.filters;this._filterStack[this._filterStackIndex]||(this._filterStack[this._filterStackIndex]=this._getFilterData());const s=this._filterStack[this._filterStackIndex];if(this._filterStackIndex++,r.length===0){s.skip=!0;return}const n=s.bounds;e.renderables?xt(e.renderables,n):e.filterEffect.filterArea?(n.clear(),n.addRect(e.filterEffect.filterArea),n.applyMatrix(e.container.worldTransform)):mt(e.container,n);const i=t.renderTarget.renderTarget.colorTexture.source;let o=1/0,d=0,l=!0,u=!1,c=!1;for(let m=0;m0?this._filterStack[this._filterStackIndex-1].bounds:null,d=e.renderTarget.getRenderTarget(t.previousRenderSurface);n=this.getBackTexture(d,s,o)}t.backTexture=n;const i=t.filterEffect.filters;if(this._globalFilterBindGroup.setResource(r.source.style,2),this._globalFilterBindGroup.setResource(n.source,3),e.globalUniforms.pop(),i.length===1)i[0].apply(this,r,t.previousRenderSurface,!1),w.returnTexture(r);else{let o=t.inputTexture,d=w.getOptimalTexture(s.width,s.height,o.source._resolution,!1),l=0;for(l=0;l0&&this._filterStack[g].skip;)--g;g>0&&(c=this._filterStack[g].inputTexture.source._resolution);const f=this._filterGlobalUniforms,m=f.uniforms,p=m.uOutputFrame,_=m.uInputSize,x=m.uInputPixel,B=m.uInputClamp,T=m.uGlobalFrame,C=m.uOutputTexture;if(u){let M=this._filterStackIndex;for(;M>0;){M--;const v=this._filterStack[this._filterStackIndex-1];if(!v.skip){d.x=v.bounds.minX,d.y=v.bounds.minY;break}}p[0]=o.minX-d.x,p[1]=o.minY-d.y}else p[0]=0,p[1]=0;p[2]=t.frame.width,p[3]=t.frame.height,_[0]=t.source.width,_[1]=t.source.height,_[2]=1/_[0],_[3]=1/_[1],x[0]=t.source.pixelWidth,x[1]=t.source.pixelHeight,x[2]=1/x[0],x[3]=1/x[1],B[0]=.5*x[2],B[1]=.5*x[3],B[2]=t.frame.width*_[2]-.5*x[2],B[3]=t.frame.height*_[3]-.5*x[3];const F=this.renderer.renderTarget.rootRenderTarget.colorTexture;T[0]=d.x*c,T[1]=d.y*c,T[2]=F.source.width*c,T[3]=F.source.height*c;const U=this.renderer.renderTarget.getRenderTarget(r);if(n.renderTarget.bind(r,!!s),r instanceof k?(C[0]=r.frame.width,C[1]=r.frame.height):(C[0]=U.width,C[1]=U.height),C[2]=U.isRoot?-1:1,f.update(),n.renderPipes.uniformBatch){const M=n.renderPipes.uniformBatch.getUboResource(f);this._globalFilterBindGroup.setResource(M,0)}else this._globalFilterBindGroup.setResource(f,0);this._globalFilterBindGroup.setResource(t.source,1),this._globalFilterBindGroup.setResource(t.source.style,2),e.groups[0]=this._globalFilterBindGroup,n.encoder.draw({geometry:_t,shader:e,state:e._state,topology:"triangle-list"}),n.type===q.WEBGL&&n.renderTarget.finishRenderPass()}_getFilterData(){return{skip:!1,inputTexture:null,bounds:new xe,container:null,filterEffect:null,blendRequired:!1,previousRenderSurface:null}}calculateSpriteMatrix(e,t){const r=this._activeFilterData,s=e.set(r.inputTexture._source.width,0,0,r.inputTexture._source.height,r.bounds.minX,r.bounds.minY),n=t.worldTransform.copyTo(R.shared);return n.invert(),s.prepend(n),s.scale(1/t.texture.frame.width,1/t.texture.frame.height),s.translate(t.anchor.x,t.anchor.y),s}}Ge.extension={type:[h.WebGLSystem,h.WebGPUSystem],name:"filter"};function bt(a){const e=a._stroke,t=a._fill,s=[`div { ${[`color: ${G.shared.setValue(t.color).toHex()}`,`font-size: ${a.fontSize}px`,`font-family: ${a.fontFamily}`,`font-weight: ${a.fontWeight}`,`font-style: ${a.fontStyle}`,`font-variant: ${a.fontVariant}`,`letter-spacing: ${a.letterSpacing}px`,`text-align: ${a.align}`,`padding: ${a.padding}px`,`white-space: ${a.whiteSpace==="pre"&&a.wordWrap?"pre-wrap":a.whiteSpace}`,...a.lineHeight?[`line-height: ${a.lineHeight}px`]:[],...a.wordWrap?[`word-wrap: ${a.breakWords?"break-all":"break-word"}`,`max-width: ${a.wordWrapWidth}px`]:[],...e?[Ae(e)]:[],...a.dropShadow?[Fe(a.dropShadow)]:[],...a.cssOverrides].join(";")} }`];return Tt(a.tagStyles,s),s.join(" ")}function Fe(a){const e=G.shared.setValue(a.color).setAlpha(a.alpha).toHexa(),t=Math.round(Math.cos(a.angle)*a.distance),r=Math.round(Math.sin(a.angle)*a.distance),s=`${t}px ${r}px`;return a.blur>0?`text-shadow: ${s} ${a.blur}px ${e}`:`text-shadow: ${s} ${e}`}function Ae(a){return[`-webkit-text-stroke-width: ${a.width}px`,`-webkit-text-stroke-color: ${G.shared.setValue(a.color).toHex()}`,`text-stroke-width: ${a.width}px`,`text-stroke-color: ${G.shared.setValue(a.color).toHex()}`,"paint-order: stroke"].join(";")}const oe={fontSize:"font-size: {{VALUE}}px",fontFamily:"font-family: {{VALUE}}",fontWeight:"font-weight: {{VALUE}}",fontStyle:"font-style: {{VALUE}}",fontVariant:"font-variant: {{VALUE}}",letterSpacing:"letter-spacing: {{VALUE}}px",align:"text-align: {{VALUE}}",padding:"padding: {{VALUE}}px",whiteSpace:"white-space: {{VALUE}}",lineHeight:"line-height: {{VALUE}}px",wordWrapWidth:"max-width: {{VALUE}}px"},de={fill:a=>`color: ${G.shared.setValue(a).toHex()}`,breakWords:a=>`word-wrap: ${a?"break-all":"break-word"}`,stroke:Ae,dropShadow:Fe};function Tt(a,e){for(const t in a){const r=a[t],s=[];for(const n in r)de[n]?s.push(de[n](r[n])):oe[n]&&s.push(oe[n].replace("{{VALUE}}",r[n]));e.push(`${t} { ${s.join(";")} }`)}}class N extends Y{constructor(e={}){super(e),this._cssOverrides=[],this.cssOverrides??(this.cssOverrides=e.cssOverrides),this.tagStyles=e.tagStyles??{}}set cssOverrides(e){this._cssOverrides=e instanceof Array?e:[e],this.update()}get cssOverrides(){return this._cssOverrides}_generateKey(){return this._styleKey=Je(this)+this._cssOverrides.join("-"),this._styleKey}update(){this._cssStyle=null,super.update()}clone(){return new N({align:this.align,breakWords:this.breakWords,dropShadow:this.dropShadow?{...this.dropShadow}:null,fill:this._fill,fontFamily:this.fontFamily,fontSize:this.fontSize,fontStyle:this.fontStyle,fontVariant:this.fontVariant,fontWeight:this.fontWeight,letterSpacing:this.letterSpacing,lineHeight:this.lineHeight,padding:this.padding,stroke:this._stroke,whiteSpace:this.whiteSpace,wordWrap:this.wordWrap,wordWrapWidth:this.wordWrapWidth,cssOverrides:this.cssOverrides})}get cssStyle(){return this._cssStyle||(this._cssStyle=bt(this)),this._cssStyle}addOverride(...e){const t=e.filter(r=>!this.cssOverrides.includes(r));t.length>0&&(this.cssOverrides.push(...t),this.update())}removeOverride(...e){const t=e.filter(r=>this.cssOverrides.includes(r));t.length>0&&(this.cssOverrides=this.cssOverrides.filter(r=>!t.includes(r)),this.update())}set fill(e){typeof e!="string"&&typeof e!="number"&&O("[HTMLTextStyle] only color fill is not supported by HTMLText"),super.fill=e}set stroke(e){e&&typeof e!="string"&&typeof e!="number"&&O("[HTMLTextStyle] only color stroke is not supported by HTMLText"),super.stroke=e}}const le="http://www.w3.org/2000/svg",ue="http://www.w3.org/1999/xhtml";class De{constructor(){this.svgRoot=document.createElementNS(le,"svg"),this.foreignObject=document.createElementNS(le,"foreignObject"),this.domElement=document.createElementNS(ue,"div"),this.styleElement=document.createElementNS(ue,"style"),this.image=new Image;const{foreignObject:e,svgRoot:t,styleElement:r,domElement:s}=this;e.setAttribute("width","10000"),e.setAttribute("height","10000"),e.style.overflow="hidden",t.appendChild(e),e.appendChild(r),e.appendChild(s)}}let ce;function yt(a,e,t,r){r=r||ce||(ce=new De);const{domElement:s,styleElement:n,svgRoot:i}=r;s.innerHTML=`
${a}
`,s.setAttribute("style","transform-origin: top left; display: inline-block"),t&&(n.textContent=t),document.body.appendChild(i);const o=s.getBoundingClientRect();i.remove();const d=P.measureFont(e.fontStyle).descent,l=e.padding*2;return{width:o.width-l,height:o.height+d-l}}class ze{constructor(e,t){this.state=Ce.for2d(),this._graphicsBatchesHash=Object.create(null),this._destroyRenderableBound=this.destroyRenderable.bind(this),this.renderer=e,this._adaptor=t,this._adaptor.init()}validateRenderable(e){const t=e.context,r=!!this._graphicsBatchesHash[e.uid],s=this.renderer.graphicsContext.updateGpuContext(t);return!!(s.isBatchable||r!==s.isBatchable)}addRenderable(e,t){const r=this.renderer.graphicsContext.updateGpuContext(e.context);e._didGraphicsUpdate&&(e._didGraphicsUpdate=!1,this._rebuild(e)),r.isBatchable?this._addToBatcher(e,t):(this.renderer.renderPipes.batch.break(t),t.add(e))}updateRenderable(e){const t=this._graphicsBatchesHash[e.uid];if(t)for(let r=0;r{const o=b.get(Ze);return i.copyTo(o),o.renderable=e,o.roundPixels=s,o});return this._graphicsBatchesHash[e.uid]===void 0&&e.on("destroyed",this._destroyRenderableBound),this._graphicsBatchesHash[e.uid]=n,n}_removeBatchForRenderable(e){this._graphicsBatchesHash[e].forEach(t=>{b.return(t)}),this._graphicsBatchesHash[e]=null}destroy(){this.renderer=null,this._adaptor.destroy(),this._adaptor=null,this.state=null;for(const e in this._graphicsBatchesHash)this._removeBatchForRenderable(e);this._graphicsBatchesHash=null}}ze.extension={type:[h.WebGLPipes,h.WebGPUPipes,h.CanvasPipes],name:"graphics"};class Q{constructor(){this.batcherName="default",this.packAsQuad=!1,this.indexOffset=0,this.attributeOffset=0,this.roundPixels=0,this._batcher=null,this._batch=null,this._uvUpdateId=-1,this._textureMatrixUpdateId=-1}get blendMode(){return this.renderable.groupBlendMode}reset(){this.renderable=null,this.texture=null,this._batcher=null,this._batch=null,this.geometry=null,this._uvUpdateId=-1,this._textureMatrixUpdateId=-1}get uvs(){const t=this.geometry.getBuffer("aUV"),r=t.data;let s=r;const n=this.texture.textureMatrix;return n.isSimple||(s=this._transformedUvs,(this._textureMatrixUpdateId!==n._updateID||this._uvUpdateId!==t._updateID)&&((!s||s.length"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4"},uRound:{value:0,type:"f32"}}),this.localUniformsBindGroup=new me({0:this.localUniforms}),this._meshDataHash=Object.create(null),this._gpuBatchableMeshHash=Object.create(null),this._destroyRenderableBound=this.destroyRenderable.bind(this),this.renderer=e,this._adaptor=t,this._adaptor.init()}validateRenderable(e){const t=this._getMeshData(e),r=t.batched,s=e.batched;if(t.batched=s,r!==s)return!0;if(s){const n=e._geometry;if(n.indices.length!==t.indexSize||n.positions.length!==t.vertexSize)return t.indexSize=n.indices.length,t.vertexSize=n.positions.length,!0;const i=this._getBatchableMesh(e),o=e.texture;if(i.texture._source!==o._source&&i.texture._source!==o._source)return!i._batcher.checkAndUpdateTexture(i,o)}return!1}addRenderable(e,t){const r=this.renderer.renderPipes.batch,{batched:s}=this._getMeshData(e);if(s){const n=this._getBatchableMesh(e);n.texture=e._texture,n.geometry=e._geometry,r.addToBatch(n,t)}else r.break(t),t.add(e)}updateRenderable(e){if(e.batched){const t=this._gpuBatchableMeshHash[e.uid];t.texture=e._texture,t.geometry=e._geometry,t._batcher.updateElement(t)}}destroyRenderable(e){this._meshDataHash[e.uid]=null;const t=this._gpuBatchableMeshHash[e.uid];t&&(b.return(t),this._gpuBatchableMeshHash[e.uid]=null),e.off("destroyed",this._destroyRenderableBound)}execute(e){if(!e.isRenderable)return;e.state.blendMode=_e(e.groupBlendMode,e.texture._source);const t=this.localUniforms;t.uniforms.uTransformMatrix=e.groupTransform,t.uniforms.uRound=this.renderer._roundPixels|e._roundPixels,t.update(),X(e.groupColorAlpha,t.uniforms.uColor,0),this._adaptor.execute(this,e)}_getMeshData(e){return this._meshDataHash[e.uid]||this._initMeshData(e)}_initMeshData(e){var t,r;return this._meshDataHash[e.uid]={batched:e.batched,indexSize:(t=e._geometry.indices)==null?void 0:t.length,vertexSize:(r=e._geometry.positions)==null?void 0:r.length},e.on("destroyed",this._destroyRenderableBound),this._meshDataHash[e.uid]}_getBatchableMesh(e){return this._gpuBatchableMeshHash[e.uid]||this._initBatchableMesh(e)}_initBatchableMesh(e){const t=b.get(Q);return t.renderable=e,t.texture=e._texture,t.transform=e.groupTransform,t.roundPixels=this.renderer._roundPixels|e._roundPixels,this._gpuBatchableMeshHash[e.uid]=t,t}destroy(){for(const e in this._gpuBatchableMeshHash)this._gpuBatchableMeshHash[e]&&b.return(this._gpuBatchableMeshHash[e]);this._gpuBatchableMeshHash=null,this._meshDataHash=null,this.localUniforms=null,this.localUniformsBindGroup=null,this._adaptor.destroy(),this._adaptor=null,this.renderer=null}}He.extension={type:[h.WebGLPipes,h.WebGPUPipes,h.CanvasPipes],name:"mesh"};class Oe{constructor(e){this._gpuSpriteHash=Object.create(null),this._destroyRenderableBound=this.destroyRenderable.bind(this),this._renderer=e}addRenderable(e,t){const r=this._getGpuSprite(e);e._didSpriteUpdate&&this._updateBatchableSprite(e,r),this._renderer.renderPipes.batch.addToBatch(r,t)}updateRenderable(e){const t=this._gpuSpriteHash[e.uid];e._didSpriteUpdate&&this._updateBatchableSprite(e,t),t._batcher.updateElement(t)}validateRenderable(e){const t=e._texture,r=this._getGpuSprite(e);return r.texture._source!==t._source?!r._batcher.checkAndUpdateTexture(r,t):!1}destroyRenderable(e){const t=this._gpuSpriteHash[e.uid];b.return(t.geometry),b.return(t),this._gpuSpriteHash[e.uid]=null,e.off("destroyed",this._destroyRenderableBound)}_updateBatchableSprite(e,t){e._didSpriteUpdate=!1,t.geometry.update(e),t.texture=e._texture}_getGpuSprite(e){return this._gpuSpriteHash[e.uid]||this._initGPUSprite(e)}_initGPUSprite(e){const t=b.get(Q);return t.geometry=b.get(et),t.renderable=e,t.transform=e.groupTransform,t.texture=e._texture,t.roundPixels=this._renderer._roundPixels|e._roundPixels,e._didSpriteUpdate=!0,this._gpuSpriteHash[e.uid]=t,e.on("destroyed",this._destroyRenderableBound),t}destroy(){for(const e in this._gpuSpriteHash)this._gpuSpriteHash[e].geometry.destroy();this._gpuSpriteHash=null,this._renderer=null}}Oe.extension={type:[h.WebGLPipes,h.WebGPUPipes,h.CanvasPipes],name:"nineSliceSprite"};const St={name:"tiling-bit",vertex:{header:` struct TilingUniforms { uMapCoord:mat3x3, uClampFrame:vec4, diff --git a/index.html b/index.html index f0b1aba..536e298 100644 --- a/index.html +++ b/index.html @@ -7,7 +7,7 @@ Bastion App - + diff --git a/latest_commit b/latest_commit index 9dc2b1b..dbf91db 100644 --- a/latest_commit +++ b/latest_commit @@ -1 +1 @@ -b371b48 +d95c443