1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3448],{36:(e,t,r)=>{var i=r(8797);class a{static init(e){Object.defineProperty(this,"resizeTo",{set(e){globalThis.removeEventListener("resize",this.queueResize),this._resizeTo=e,e&&(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=()=>{let e,t;if(this._resizeTo){if(this._cancelResize(),this._resizeTo===globalThis.window)e=globalThis.innerWidth,t=globalThis.innerHeight;else{let{clientWidth:r,clientHeight:i}=this._resizeTo;e=r,t=i}this.renderer.resize(e,t),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}}a.extension=i.Ag.Application;var s=r(7506),n=r(5710);class o{static init(e){e=Object.assign({autoStart:!0,sharedTicker:!1},e),Object.defineProperty(this,"ticker",{set(e){this._ticker&&this._ticker.remove(this.render,this),this._ticker=e,e&&e.add(this.render,this,s.d.LOW)},get(){return this._ticker}}),this.stop=()=>{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=e.sharedTicker?n.R.shared:new n.R,e.autoStart&&this.start()}static destroy(){if(this._ticker){let e=this._ticker;this.ticker=null,e.destroy()}}}o.extension=i.Ag.Application,i.XO.add(a),i.XO.add(o)},68:(e,t,r)=>{r.d(t,{r:()=>h});var i=r(5607),a=r(859),s=r(7796),n=r(6312),o=r(8262),l=r(9642);function h(e,t,r,d=0){if(e.texture===s.g.WHITE&&!e.fill)return i.Q.shared.setValue(e.color).setAlpha(e.alpha??1).toHexa();if(e.fill){if(e.fill instanceof l.m){let r=e.fill,i=t.createPattern(r.texture.source.resource,"repeat"),s=r.transform.copyTo(a.u.shared);return s.scale(r.texture.frame.width,r.texture.frame.height),i.setTransform(s),i}else if(e.fill instanceof o._){let a,s=e.fill,n="linear"===s.type,o="local"===s.textureSpace,l=1,h=1;o&&r&&(l=r.width+d,h=r.height+d);let u=!1;if(n){let{start:e,end:r}=s;a=t.createLinearGradient(e.x*l,e.y*h,r.x*l,r.y*h),u=Math.abs(r.x-e.x)<Math.abs((r.y-e.y)*.1)}else{let{center:e,innerRadius:r,outerCenter:i,outerRadius:n}=s;a=t.createRadialGradient(e.x*l,e.y*h,r*l,i.x*l,i.y*h,n*l)}if(u&&o&&r){let e=r.lineHeight/h;for(let t=0;t<r.lines.length;t++){let n=(t*r.lineHeight+d/2)/h;s.colorStops.forEach(t=>{let r=n+t.offset*e;a.addColorStop(Math.floor(1e5*r)/1e5,i.Q.shared.setValue(t.color).toHex())})}}else s.colorStops.forEach(e=>{a.addColorStop(e.offset,i.Q.shared.setValue(e.color).toHex())});return a}}else{let r=t.createPattern(e.texture.source.resource,"repeat"),i=e.matrix.copyTo(a.u.shared);return i.scale(e.texture.frame.width,e.texture.frame.height),r.setTransform(i),r}return(0,n.R)("FillStyle not recognised",e),"red"}},664:(e,t,r)=>{r.d(t,{U:()=>i});class i{constructor(){this.batcherName="default",this.packAsQuad=!1,this.indexOffset=0,this.attributeOffset=0,this.roundPixels=0,this._batcher=null,this._batch=null,this._textureMatrixUpdateId=-1,this._uvUpdateId=-1}get blendMode(){return this.renderable.groupBlendMode}get topology(){return this._topology||this.geometry.topology}set topology(e){this._topology=e}reset(){this.renderable=null,this.texture=null,this._batcher=null,this._batch=null,this.geometry=null,this._uvUpdateId=-1,this._textureMatrixUpdateId=-1}setTexture(e){this.texture!==e&&(this.texture=e,this._textureMatrixUpdateId=-1)}get uvs(){let e=this.geometry.getBuffer("aUV"),t=e.data,r=t,i=this.texture.textureMatrix;return i.isSimple||(r=this._transformedUvs,(this._textureMatrixUpdateId!==i._updateID||this._uvUpdateId!==e._updateID)&&((!r||r.length<t.length)&&(r=this._transformedUvs=new Float32Array(t.length)),this._textureMatrixUpdateId=i._updateID,this._uvUpdateId=e._updateID,i.multiplyUvs(t,r))),r}get positions(){return this.geometry.positions}get indices(){return this.geometry.indices}get color(){return this.renderable.groupColorAlpha}get groupTransform(){return this.renderable.groupTransform}get attributeSize(){return this.geometry.positions.length/2}get indexSize(){return this.geometry.indices.length}}},764:(e,t,r)=>{var i=r(8797);class a{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})}
1execute(e){"pushFilter"===e.action?this._renderer.filter.push(e):"popFilter"===e.action&&this._renderer.filter.pop()}destroy(){this._renderer=null}}a.extension={type:[i.Ag.WebGLPipes,i.Ag.WebGPUPipes,i.Ag.CanvasPipes],name:"filter"};var s=r(859),n=r(2069),o=r(8014),l=r(1013),h=r(7796),d=r(3398),u=r(3537),c=r(4354),p=r(6312);let f=new o.V({attributes:{aPosition:{buffer:new Float32Array([0,0,1,0,1,1,0,1]),format:"float32x2",stride:8,offset:0}},indexBuffer:new Uint32Array([0,1,2,0,2,3])});class g{constructor(){this.skip=!1,this.inputTexture=null,this.backTexture=null,this.filters=null,this.bounds=new c.c,this.container=null,this.blendRequired=!1,this.outputRenderSurface=null,this.globalFrame={x:0,y:0,width:0,height:0}}}class m{constructor(e){this._filterStackIndex=0,this._filterStack=[],this._filterGlobalUniforms=new l.k({uInputSize:{value:new Float32Array(4),type:"vec4<f32>"},uInputPixel:{value:new Float32Array(4),type:"vec4<f32>"},uInputClamp:{value:new Float32Array(4),type:"vec4<f32>"},uOutputFrame:{value:new Float32Array(4),type:"vec4<f32>"},uGlobalFrame:{value:new Float32Array(4),type:"vec4<f32>"},uOutputTexture:{value:new Float32Array(4),type:"vec4<f32>"}}),this._globalFilterBindGroup=new n.T({}),this.renderer=e}get activeBackTexture(){return this._activeFilterData?.backTexture}push(e){let t=this.renderer,r=e.filterEffect.filters,i=this._pushFilterData();i.skip=!1,i.filters=r,i.container=e.container,i.outputRenderSurface=t.renderTarget.renderSurface;let a=t.renderTarget.renderTarget.colorTexture.source,s=a.resolution,n=a.antialias;if(0===r.length){i.skip=!0;return}let o=i.bounds;if(this._calculateFilterArea(e,o),this._calculateFilterBounds(i,t.renderTarget.rootViewPort,n,s,1),i.skip)return;let l=this._getPreviousFilterData(),h=this._findFilterResolution(s),d=0,u=0;l&&(d=l.bounds.minX,u=l.bounds.minY),this._calculateGlobalFrame(i,d,u,h,a.width,a.height),this._setupFilterTextures(i,o,t,l)}generateFilteredTexture({texture:e,filters:t}){let r=this._pushFilterData();this._activeFilterData=r,r.skip=!1,r.filters=t;let i=e.source,a=i.resolution,s=i.antialias;if(0===t.length)return r.skip=!0,e;let n=r.bounds;if(n.addRect(e.frame),this._calculateFilterBounds(r,n.rectangle,s,a,0),r.skip)return e;this._calculateGlobalFrame(r,0,0,a,i.width,i.height),r.outputRenderSurface=d.W.getOptimalTexture(n.width,n.height,r.resolution,r.antialias),r.backTexture=h.g.EMPTY,r.inputTexture=e,this.renderer.renderTarget.finishRenderPass(),this._applyFiltersToTexture(r,!0);let o=r.outputRenderSurface;return o.source.alphaMode="premultiplied-alpha",o}pop(){let e=this.renderer,t=this._popFilterData();t.skip||(e.globalUniforms.pop(),e.renderTarget.finishRenderPass(),this._activeFilterData=t,this._applyFiltersToTexture(t,!1),t.blendRequired&&d.W.returnTexture(t.backTexture),d.W.returnTexture(t.inputTexture))}getBackTexture(e,t,r){let i=e.colorTexture.source._resolution,a=d.W.getOptimalTexture(t.width,t.height,i,!1),s=t.minX,n=t.minY;r&&(s-=r.minX,n-=r.minY),s=Math.floor(s*i),n=Math.floor(n*i);let o=Math.ceil(t.width*i),l=Math.ceil(t.height*i);return this.renderer.renderTarget.copyToTexture(e,a,{x:s,y:n},{width:o,height:l},{x:0,y:0}),a}applyFilter(e,t,r,i){let a=this.renderer,s=this._activeFilterData,n=s.outputRenderSurface===r,o=a.renderTarget.rootRenderTarget.colorTexture.source._resolution,l=this._findFilterResolution(o),h=0,d=0;if(n){let e=this._findPreviousFilterOffset();h=e.x,d=e.y}this._updateFilterUniforms(t,r,s,h,d,l,n,i),this._setupBindGroupsAndRender(e,t,a)}calculateSpriteMatrix(e,t){let r=this._activeFilterData,i=e.set(r.inputTexture._source.width,0,0,r.inputTexture._source.height,r.bounds.minX,r.bounds.minY),a=t.worldTransform.copyTo(s.u.shared),n=t.renderGroup||t.parentRenderGroup;return n&&n.cacheToLocalTransform&&a.prepend(n.cacheToLocalTransform),a.invert(),i.prepend(a),i.scale(1/t.texture.frame.width,1/t.texture.frame.height),i.translate(t.anchor.x,t.anchor.y),i}destroy(){}_setupBindGroupsAndRender(e,t,r){if(r.renderPipes.uniformBatch){let e=r.renderPipes.uniformBatch.getUboResource(this._filterGlobalUniforms);this._globalFilterBindGroup.setResource(e,0)}else this._globalFilterBindGroup.setResource(this._filterGlobalUniforms,0);this._globalFilterBindGroup.setResource(t.source,1),this._globalFilterBindGroup.setResource(t.source.style,2),e.groups[0]=this._globalFilterBindGroup,r.encoder.draw({geometry:f,shader:e,state:e._state,topology:"triangle-list"}),r.type===u.W.WEBGL&&r.renderTarget.finishRenderPass()}_setupFilterTextures(e,t,r,i){if(e.backTexture=h.g.EMPTY,e.blendRequired){r.renderTarget.finishRenderPass();let a=r.renderTarget.getRenderTarget(e.outputRenderSurface);e.backTexture=this.getBackTexture(a,t,i?.bounds)}e.inputTexture=d.W.getOptimalTexture(t.width,t.height,e.resolution,e.antialias),r.renderTarget.bind(e.inputTexture,!0),r.globalUniforms.push({offset:t})}_calculateGlobalFrame(e,t,r,i,a,s){let n=e.globalFrame;n.x=t*i,n.y=r*i,n.width=a*i,n.height=s*i}_updateFilterUniforms(e,t,r,i,a,s,n,o){let l=this._filterGlobalUniforms.uniforms,d=l.uOutputFrame,u=l.uInputSize,c=l.uInputPixel,p=l.uInputClamp,f=l.uGlobalFrame,g=l.uOutputTexture;
1n?(d[0]=r.bounds.minX-i,d[1]=r.bounds.minY-a):(d[0]=0,d[1]=0),d[2]=e.frame.width,d[3]=e.frame.height,u[0]=e.source.width,u[1]=e.source.height,u[2]=1/u[0],u[3]=1/u[1],c[0]=e.source.pixelWidth,c[1]=e.source.pixelHeight,c[2]=1/c[0],c[3]=1/c[1],p[0]=.5*c[2],p[1]=.5*c[3],p[2]=e.frame.width*u[2]-.5*c[2],p[3]=e.frame.height*u[3]-.5*c[3];let m=this.renderer.renderTarget.rootRenderTarget.colorTexture;f[0]=i*s,f[1]=a*s,f[2]=m.source.width*s,f[3]=m.source.height*s,t instanceof h.g&&(t.source.resource=null);let x=this.renderer.renderTarget.getRenderTarget(t);this.renderer.renderTarget.bind(t,!!o),t instanceof h.g?(g[0]=t.frame.width,g[1]=t.frame.height):(g[0]=x.width,g[1]=x.height),g[2]=x.isRoot?-1:1,this._filterGlobalUniforms.update()}_findFilterResolution(e){let t=this._filterStackIndex-1;for(;t>0&&this._filterStack[t].skip;)--t;return t>0&&this._filterStack[t].inputTexture?this._filterStack[t].inputTexture.source._resolution:e}_findPreviousFilterOffset(){let e=0,t=0,r=this._filterStackIndex;for(;r>0;){r--;let i=this._filterStack[r];if(!i.skip){e=i.bounds.minX,t=i.bounds.minY;break}}return{x:e,y:t}}_calculateFilterArea(e,t){if(e.renderables?!function(e,t){t.clear();let r=t.matrix;for(let r=0;r<e.length;r++){let i=e[r];i.globalDisplayStatus<7||(t.matrix=i.worldTransform,t.addBounds(i.bounds))}t.matrix=r}(e.renderables,t):e.filterEffect.filterArea?(t.clear(),t.addRect(e.filterEffect.filterArea),t.applyMatrix(e.container.worldTransform)):e.container.getFastGlobalBounds(!0,t),e.container){let r=(e.container.renderGroup||e.container.parentRenderGroup).cacheToLocalTransform;r&&t.applyMatrix(r)}}_applyFiltersToTexture(e,t){let r=e.inputTexture,i=e.bounds,a=e.filters;if(this._globalFilterBindGroup.setResource(r.source.style,2),this._globalFilterBindGroup.setResource(e.backTexture.source,3),1===a.length)a[0].apply(this,r,e.outputRenderSurface,t);else{let r=e.inputTexture,s=d.W.getOptimalTexture(i.width,i.height,r.source._resolution,!1),n=s,o=0;for(o=0;o<a.length-1;++o){a[o].apply(this,r,n,!0);let e=r;r=n,n=e}a[o].apply(this,r,e.outputRenderSurface,t),d.W.returnTexture(s)}}_calculateFilterBounds(e,t,r,i,a){let s=this.renderer,n=e.bounds,o=e.filters,l=1/0,h=0,d=!0,u=!1,
1c=!1,f=!0;for(let e=0;e<o.length;e++){let t=o[e];if(l=Math.min(l,"inherit"===t.resolution?i:t.resolution),h+=t.padding,"off"===t.antialias?d=!1:"inherit"===t.antialias&&d&&(d=r),t.clipToViewport||(f=!1),!(t.compatibleRenderers&s.type)){c=!1;break}if(t.blendRequired&&!(s.backBuffer?.useBackBuffer??!0)){(0,p.R)("Blend filter requires backBuffer on WebGL renderer to be enabled. Set `useBackBuffer: true` in the renderer options."),c=!1;break}c=t.enabled||c,u||(u=t.blendRequired)}if(!c||(f&&n.fitBounds(0,t.width/i,0,t.height/i),n.scale(l).ceil().scale(1/l).pad((0|h)*a),!n.isPositive)){e.skip=!0;return}e.antialias=d,e.resolution=l,e.blendRequired=u}_popFilterData(){return this._filterStackIndex--,this._filterStack[this._filterStackIndex]}_getPreviousFilterData(){let e,t=this._filterStackIndex-1;for(;t>1&&(t--,(e=this._filterStack[t]).skip););return e}_pushFilterData(){let e=this._filterStack[this._filterStackIndex];return e||(e=this._filterStack[this._filterStackIndex]=new g),this._filterStackIndex++,e}}m.extension={type:[i.Ag.WebGLSystem,i.Ag.WebGPUSystem],name:"filter"},i.XO.add(m),i.XO.add(a)},1625:(e,t,r)=>{r.d(t,{Ls:()=>i,_Q:()=>a,mA:()=>s});let i={name:"local-uniform-bit",vertex:{header:` 2 3 struct LocalUniforms { 4 uTransformMatrix:mat3x3<f32>, 5 uColor:vec4<f32>, 6 uRound:f32, 7 } 8 9 @group(1) @binding(0) var<uniform> localUniforms : LocalUniforms; 10 `,main:` 11 vColor *= localUniforms.uColor; 12 modelMatrix *= localUniforms.uTransformMatrix; 13 `,end:` 14 if(localUniforms.uRound == 1) 15 { 16 vPosition = vec4(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw); 17 } 18 `}},a={...i,vertex:{...i.vertex,header:i.vertex.header.replace("group(1)","group(2)")}},s={name:"local-uniform-bit",vertex:{header:` 19 20 uniform mat3 uTransformMatrix; 21 uniform vec4 uColor; 22 uniform float uRound; 23 `,main:` 24 vColor *= uColor; 25 modelMatrix = uTransformMatrix; 26 `,end:` 27 if(uRound == 1.) 28 { 29 gl_Position.xy = roundPixels(gl_Position.xy, uResolution); 30 } 31 `}}},1964:(e,t,r)=>{r.d(t,{K:()=>i});class i{constructor(){this.batcherName="default",this.topology="triangle-list",this.attributeSize=4,this.indexSize=6,this.packAsQuad=!0,this.roundPixels=0,this._attributeStart=0,this._batcher=null,this._batch=null}get blendMode(){return this.renderable.groupBlendMode}get color(){return this.renderable.groupColorAlpha}reset(){this.renderable=null,this.texture=null,this._batcher=null,this._batch=null,this.bounds=null}destroy(){}}},2322:(e,t,r)=>{r.d(t,{N:()=>n});var i=r(3833),a=r(1309);class s{constructor(e){this._canvasPool=Object.create(null),this.canvasOptions=e||{},this.enableFullScreen=!1}_createCanvasAndContext(e,t){let r=i.e.get().createCanvas();r.width=e,r.height=t;let a=r.getContext("2d");return{canvas:r,context:a}}getOptimalCanvasAndContext(e,t,r=1){e=Math.ceil(e*r-1e-6),t=Math.ceil(t*r-1e-6),e=(0,a.U5)(e),t=(0,a.U5)(t);let i=(e<<17)+(t<<1);this._canvasPool[i]||(this._canvasPool[i]=[]);let s=this._canvasPool[i].pop();return s||(s=this._createCanvasAndContext(e,t)),s}returnCanvasAndContext(e){let{width:t,height:r}=e.canvas,i=(t<<17)+(r<<1);e.context.clearRect(0,0,t,r),this._canvasPool[i].push(e)}clear(){this._canvasPool={}}}let n=new s},3360:(e,t,r)=>{r.d(t,{Z:()=>a});let i=["serif","sans-serif","monospace","cursive","fantasy","system-ui"];function a(e){let t="number"==typeof e.fontSize?`${e.fontSize}px`:e.fontSize,r=e.fontFamily;Array.isArray(e.fontFamily)||(r=e.fontFamily.split(","));for(let e=r.length-1;e>=0;e--){let t=r[e].trim();/([\"\'])[^\'\"]+\1/.test(t)||i.includes(t)||(t=`"${t}"`),r[e]=t}return`${e.fontStyle} ${e.fontVariant} ${e.fontWeight} ${t} ${r.join(",")}`}},3527:(e,t,r)=>{var i=r(8797),a=r(3183),s=r(4119),n=r(8878),o=r(6538),l=r(240);class h{constructor(){this.batches=[],this.batched=!1}destroy(){this.batches.forEach(e=>{n.Z.return(e)}),this.batches.length=0}}class d{constructor(e,t){this.state=s.U.for2d(),this.renderer=e,this._adaptor=t,this.renderer.runners.contextChange.add(this)}contextChange(){this._adaptor.contextChange(this.renderer)}validateRenderable(e){let t=e.context,r=!!e._gpuData,i=this.renderer.graphicsContext.updateGpuContext(t);return!!i.isBatchable||r!==i.isBatchable}addRenderable(e,t){let r=this.renderer.graphicsContext.updateGpuContext(e.context);e.didViewUpdate&&this._rebuild(e),r.isBatchable?this._addToBatcher(e,t):(this.renderer.renderPipes.batch.break(t),t.add(e))}updateRenderable(e){let t=this._getGpuDataForRenderable(e).batches;for(let e=0;e<t.length;e++){let r=t[e];r._batcher.updateElement(r)}}execute(e){if(!e.isRenderable)return;let t=this.renderer,r=e.context;if(!t.graphicsContext.getGpuContext(r).batches.length)return;let i=r.customShader||this._adaptor.shader;this.state.blendMode=e.groupBlendMode;let a=i.resources.localUniforms.uniforms;a.uTransformMatrix=e.groupTransform,a.uRound=t._roundPixels|e._roundPixels,(0,o.V)(e.groupColorAlpha,a.uColor,0),this._adaptor.execute(this,e)}_rebuild(e){let t=this._getGpuDataForRenderable(e),r=this.renderer.graphicsContext.updateGpuContext(e.context);t.destroy(),r.isBatchable&&this._updateBatchesForRenderable(e,t)}_addToBatcher(e,t){let r=this.renderer.renderPipes.batch,i=this._getGpuDataForRenderable(e).batches;for(let e=0;e<i.length;e++){let a=i[e];r.addToBatch(a,t)}}_getGpuDataForRenderable(e){return e._gpuData[this.renderer.uid]||this._initGpuDataForRenderable(e)}_initGpuDataForRenderable(e){let t=new h;return e._gpuData[this.renderer.uid]=t,t}_updateBatchesForRenderable(e,t){let r=e.context,i=this.renderer.graphicsContext.getGpuContext(r),a=this.renderer._roundPixels|e._roundPixels;t.batches=i.batches.map(t=>{let r=n.Z.get(l.G);return t.copyTo(r),r.renderable=e,r.roundPixels=a,r})}
31destroy(){this.renderer=null,this._adaptor.destroy(),this._adaptor=null,this.state=null}}d.extension={type:[i.Ag.WebGLPipes,i.Ag.WebGPUPipes,i.Ag.CanvasPipes],name:"graphics"},i.XO.add(d),i.XO.add(a.GH)},3794:(e,t,r)=>{r.d(t,{P:()=>o});var i=r(3833),a=r(3360);let s={willReadFrequently:!0},n=class e{static get experimentalLetterSpacingSupported(){let t=e._experimentalLetterSpacingSupported;if(void 0===t){let r=i.e.get().getCanvasRenderingContext2D().prototype;t=e._experimentalLetterSpacingSupported="letterSpacing"in r||"textLetterSpacing"in r}return t}constructor(e,t,r,i,a,s,n,o,l){this.text=e,this.style=t,this.width=r,this.height=i,this.lines=a,this.lineWidths=s,this.lineHeight=n,this.maxLineWidth=o,this.fontProperties=l}static measureText(t=" ",r,i=e._canvas,s=r.wordWrap){let n=(0,a.Z)(r),o=e.measureFont(n);0===o.fontSize&&(o.fontSize=r.fontSize,o.ascent=r.fontSize);let l=e.__context;l.font=n;let h=(s?e._wordWrap(t,r,i):t).split(/(?:\r\n|\r|\n)/),d=Array(h.length),u=0;for(let t=0;t<h.length;t++){let i=e._measureText(h[t],r.letterSpacing,l);d[t]=i,u=Math.max(u,i)}let c=r._stroke?.width||0,p=u+c;r.dropShadow&&(p+=r.dropShadow.distance);let f=r.lineHeight||o.fontSize,g=Math.max(f,o.fontSize+c)+(h.length-1)*(f+r.leading);return r.dropShadow&&(g+=r.dropShadow.distance),new e(t,r,p,g,h,d,f+r.leading,u,o)}static _measureText(t,r,i){let a=!1;e.experimentalLetterSpacingSupported&&(e.experimentalLetterSpacing?(i.letterSpacing=`${r}px`,i.textLetterSpacing=`${r}px`,a=!0):(i.letterSpacing="0px",i.textLetterSpacing="0px"));let s=i.measureText(t),n=s.width,o=-s.actualBoundingBoxLeft,l=s.actualBoundingBoxRight-o;if(n>0)if(a)n-=r,l-=r;else{let i=(e.graphemeSegmenter(t).length-1)*r;n+=i,l+=i}return Math.max(n,l)}static _wordWrap(t,r,i=e._canvas){let a=i.getContext("2d",s),n=0,o="",l="",h=Object.create(null),{letterSpacing:d,whiteSpace:u}=r,c=e._collapseSpaces(u),p=e._collapseNewlines(u),f=!c,g=r.wordWrapWidth+d,m=e._tokenize(t);for(let t=0;t<m.length;t++){let i=m[t];if(e._isNewline(i)){if(!p){l+=e._addLine(o),f=!c,o="",n=0;continue}i=" "}if(c){let t=e.isBreakingSpace(i),r=e.isBreakingSpace(o[o.length-1]);if(t&&r)continue}let s=e._getFromCache(i,d,h,a);if(s>g)if(""!==o&&(l+=e._addLine(o),o="",n=0),e.canBreakWords(i,r.breakWords)){let t=e.wordWrapSplit(i);for(let s=0;s<t.length;s++){let u=t[s],c=u,p=1;for(;t[s+p];){let a=t[s+p];if(e.canBreakChars(c,a,i,s,r.breakWords))break;u+=a,c=a,p++}s+=p-1;let m=e._getFromCache(u,d,h,a);m+n>g&&(l+=e._addLine(o),f=!1,o="",n=0),o+=u,n+=m}}else{o.length>0&&(l+=e._addLine(o),o="",n=0);let r=t===m.length-1;l+=e._addLine(i,!r),f=!1,o="",n=0}else s+n>g&&(f=!1,l+=e._addLine(o),o="",n=0),(o.length>0||!e.isBreakingSpace(i)||f)&&(o+=i,n+=s)}return l+e._addLine(o,!1)}static _addLine(t,r=!0){return t=e._trimRight(t),t=r?`${t} 32`:t}static _getFromCache(t,r,i,a){let s=i[t];return"number"!=typeof s&&(s=e._measureText(t,r,a)+r,i[t]=s),s}static _collapseSpaces(e){return"normal"===e||"pre-line"===e}static _collapseNewlines(e){return"normal"===e}static _trimRight(t){if("string"!=typeof t)return"";for(let r=t.length-1;r>=0;r--){let i=t[r];if(!e.isBreakingSpace(i))break;t=t.slice(0,-1)}return t}static _isNewline(t){return"string"==typeof t&&e._newlines.includes(t.charCodeAt(0))}static isBreakingSpace(t,r){return"string"==typeof t&&e._breakingSpaces.includes(t.charCodeAt(0))}static _tokenize(t){let r=[],i="";if("string"!=typeof t)return r;for(let a=0;a<t.length;a++){let s=t[a],n=t[a+1];if(e.isBreakingSpace(s,n)||e._isNewline(s)){""!==i&&(r.push(i),i=""),r.push(s);continue}i+=s}return""!==i&&r.push(i),r}static canBreakWords(e,t){return t}static canBreakChars(e,t,r,i,a){return!0}static wordWrapSplit(t){return e.graphemeSegmenter(t)}static measureFont(t){if(e._fonts[t])return e._fonts[t];let r=e._context;r.font=t;let i=r.measureText(e.METRICS_STRING+e.BASELINE_SYMBOL),a={ascent:i.actualBoundingBoxAscent,descent:i.actualBoundingBoxDescent,fontSize:i.actualBoundingBoxAscent+i.actualBoundingBoxDescent};return e._fonts[t]=a,a}static clearMetrics(t=""){t?delete e._fonts[t]:e._fonts={}}static get _canvas(){if(!e.__canvas){let t;try{let r=new OffscreenCanvas(0,0),a=r.getContext("2d",s);if(a?.measureText)return e.__canvas=r,r;t=i.e.get().createCanvas()}catch(e){t=i.e.get().createCanvas()}t.width=t.height=10,e.__canvas=t}return e.__canvas}static get _context(){return e.__context||(e.__context=e._canvas.getContext("2d",s)),e.__context}};n.METRICS_STRING="|\xc9q\xc5",n.BASELINE_SYMBOL="M",n.BASELINE_MULTIPLIER=1.4,n.HEIGHT_MULTIPLIER=2,n.graphemeSegmenter=(()=>
32{if("function"==typeof Intl?.Segmenter){let e=new Intl.Segmenter;return t=>{let r=e.segment(t),i=[],a=0;for(let e of r)i[a++]=e.segment;return i}}return e=>[...e]})(),n.experimentalLetterSpacing=!1,n._fonts={},n._newlines=[10,13],n._breakingSpaces=[9,32,8192,8193,8194,8195,8196,8197,8198,8200,8201,8202,8287,12288];let o=n},4119:(e,t,r)=>{r.d(t,{U:()=>s});let i={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},a=class e{constructor(){this.data=0,this.blendMode="normal",this.polygonOffset=0,this.blend=!0,this.depthMask=!0}get blend(){return!!(1&this.data)}set blend(e){!!(1&this.data)!==e&&(this.data^=1)}get offsets(){return!!(2&this.data)}set offsets(e){!!(2&this.data)!==e&&(this.data^=2)}set cullMode(e){if("none"===e){this.culling=!1;return}this.culling=!0,this.clockwiseFrontFace="front"===e}get cullMode(){return this.culling?this.clockwiseFrontFace?"front":"back":"none"}get culling(){return!!(4&this.data)}set culling(e){!!(4&this.data)!==e&&(this.data^=4)}get depthTest(){return!!(8&this.data)}set depthTest(e){!!(8&this.data)!==e&&(this.data^=8)}get depthMask(){return!!(32&this.data)}set depthMask(e){!!(32&this.data)!==e&&(this.data^=32)}get clockwiseFrontFace(){return!!(16&this.data)}set clockwiseFrontFace(e){!!(16&this.data)!==e&&(this.data^=16)}get blendMode(){return this._blendMode}set blendMode(e){this.blend="none"!==e,this._blendMode=e,this._blendModeId=i[e]||0}get polygonOffset(){return this._polygonOffset}set polygonOffset(e){this.offsets=!!e,this._polygonOffset=e}toString(){return`[pixi.js/core:State blendMode=${this.blendMode} clockwiseFrontFace=${this.clockwiseFrontFace} culling=${this.culling} depthMask=${this.depthMask} polygonOffset=${this.polygonOffset}]`}static for2d(){let t=new e;return t.depthTest=!1,t.blend=!0,t}};a.default2d=a.for2d();let s=a},4123:(e,t,r)=>{var i=r(8797),a=r(859),s=r(2069),n=r(1013),o=r(3811),l=r(6538),h=r(664);class d{destroy(){}}class u{constructor(e,t){this.localUniforms=new n.k({uTransformMatrix:{value:new a.u,type:"mat3x3<f32>"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uRound:{value:0,type:"f32"}}),this.localUniformsBindGroup=new s.T({0:this.localUniforms}),this.renderer=e,this._adaptor=t,this._adaptor.init()}validateRenderable(e){let t=this._getMeshData(e),r=t.batched,i=e.batched;if(t.batched=i,r!==i)return!0;if(i){let r=e._geometry;if(r.indices.length!==t.indexSize||r.positions.length!==t.vertexSize)return t.indexSize=r.indices.length,t.vertexSize=r.positions.length,!0;let i=this._getBatchableMesh(e);return i.texture.uid!==e._texture.uid&&(i._textureMatrixUpdateId=-1),!i._batcher.checkAndUpdateTexture(i,e._texture)}return!1}addRenderable(e,t){let r=this.renderer.renderPipes.batch,{batched:i}=this._getMeshData(e);if(i){let i=this._getBatchableMesh(e);i.setTexture(e._texture),i.geometry=e._geometry,r.addToBatch(i,t)}else r.break(t),t.add(e)}updateRenderable(e){if(e.batched){let t=this._getBatchableMesh(e);t.setTexture(e._texture),t.geometry=e._geometry,t._batcher.updateElement(t)}}execute(e){if(!e.isRenderable)return;e.state.blendMode=(0,o.i)(e.groupBlendMode,e.texture._source);let t=this.localUniforms;t.uniforms.uTransformMatrix=e.groupTransform,t.uniforms.uRound=this.renderer._roundPixels|e._roundPixels,t.update(),(0,l.V)(e.groupColorAlpha,t.uniforms.uColor,0),this._adaptor.execute(this,e)}_getMeshData(e){var t,r;return(t=e._gpuData)[r=this.renderer.uid]||(t[r]=new d),e._gpuData[this.renderer.uid].meshData||this._initMeshData(e)}_initMeshData(e){return e._gpuData[this.renderer.uid].meshData={batched:e.batched,indexSize:e._geometry.indices?.length,vertexSize:e._geometry.positions?.length},e._gpuData[this.renderer.uid].meshData}_getBatchableMesh(e){var t,r;return(t=e._gpuData)[r=this.renderer.uid]||(t[r]=new d),e._gpuData[this.renderer.uid].batchableMesh||this._initBatchableMesh(e)}_initBatchableMesh(e){let t=new h.U;return t.renderable=e,t.setTexture(e._texture),t.transform=e.groupTransform,t.roundPixels=this.renderer._roundPixels|e._roundPixels,e._gpuData[this.renderer.uid].batchableMesh=t,t}destroy(){this.localUniforms=null,this.localUniformsBindGroup=null,this._adaptor.de
32stroy(),this._adaptor=null,this.renderer=null}}u.extension={type:[i.Ag.WebGLPipes,i.Ag.WebGPUPipes,i.Ag.CanvasPipes],name:"mesh"},i.XO.add(u)},4514:(e,t,r)=>{let i;var a=r(8797),s=r(7796),n=r(8624),o=r(1964);class l extends o.K{constructor(e){super(),this.generatingTexture=!1,this._renderer=e,e.runners.resolutionChange.add(this)}resolutionChange(){let e=this.renderable;e._autoResolution&&e.onViewUpdate()}destroy(){this._renderer.htmlText.returnTexturePromise(this.texturePromise),this.texturePromise=null,this._renderer=null}}class h{constructor(e){this._renderer=e}validateRenderable(e){return e._didTextUpdate}addRenderable(e,t){let r=this._getGpuText(e);e._didTextUpdate&&(this._updateGpuText(e).catch(e=>{console.error(e)}),e._didTextUpdate=!1,(0,n.s)(r,e)),this._renderer.renderPipes.batch.addToBatch(r,t)}updateRenderable(e){let t=this._getGpuText(e);t._batcher.updateElement(t)}async _updateGpuText(e){e._didTextUpdate=!1;let t=this._getGpuText(e);if(t.generatingTexture)return;t.texturePromise&&(this._renderer.htmlText.returnTexturePromise(t.texturePromise),t.texturePromise=null),t.generatingTexture=!0,e._resolution=e._autoResolution?this._renderer.resolution:e.resolution;let r=this._renderer.htmlText.getTexturePromise(e);t.texturePromise=r,t.texture=await r;let i=e.renderGroup||e.parentRenderGroup;i&&(i.structureDidChange=!0),t.generatingTexture=!1,(0,n.s)(t,e)}_getGpuText(e){return e._gpuData[this._renderer.uid]||this.initGpuText(e)}initGpuText(e){let t=new l(this._renderer);return t.renderable=e,t.transform=e.groupTransform,t.texture=s.g.EMPTY,t.bounds={minX:0,maxX:1,minY:0,maxY:0},t.roundPixels=this._renderer._roundPixels|e._roundPixels,e._resolution=e._autoResolution?this._renderer.resolution:e.resolution,e._gpuData[this._renderer.uid]=t,t}destroy(){this._renderer=null}}h.extension={type:[a.Ag.WebGLPipes,a.Ag.WebGPUPipes,a.Ag.CanvasPipes],name:"htmlText"};var d=r(2322),u=r(3398),c=r(3537),p=r(3833),f=r(6312),g=r(8878),m=r(7402);let x="http://www.w3.org/2000/svg",_="http://www.w3.org/1999/xhtml";class y{constructor(){this.svgRoot=document.createElementNS(x,"svg"),this.foreignObject=document.createElementNS(x,"foreignObject"),this.domElement=document.createElementNS(_,"div"),this.styleElement=document.createElementNS(_,"style"),this.image=new Image;let{foreignObject:e,svgRoot:t,styleElement:r,domElement:i}=this;e.setAttribute("width","10000"),e.setAttribute("height","10000"),e.style.overflow="hidden",t.appendChild(e),e.appendChild(r),e.appendChild(i)}}var b=r(9745),S=r(5607);function v(e){let t=S.Q.shared.setValue(e.color).setAlpha(e.alpha).toHexa(),r=Math.round(Math.cos(e.angle)*e.distance),i=Math.round(Math.sin(e.angle)*e.distance),a=`${r}px ${i}px`;return e.blur>0?`text-shadow: ${a} ${e.blur}px ${t}`:`text-shadow: ${a} ${t}`}function w(e){return`-webkit-text-stroke-width: ${e.width}px;-webkit-text-stroke-color: ${S.Q.shared.setValue(e.color).toHex()};text-stroke-width: ${e.width}px;text-stroke-color: ${S.Q.shared.setValue(e.color).toHex()};paint-order: stroke`}let T={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"},C={fill:e=>`color: ${S.Q.shared.setValue(e).toHex()}`,breakWords:e=>`word-wrap: ${e?"break-all":"break-word"}`,stroke:w,dropShadow:v};class P extends b.x{constructor(e={}){super(e),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}update(){this._cssStyle=null,super.update()}clone(){return new P({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,tagStyles:{...this.tagStyles}})}get cssStyle(){return this._cssStyle||(this._cssStyle=function(e){let t=e._stroke,r=e._fill,i=[`color: ${S.Q.shared.setValue(r.color).toHex()}`,`font-size: ${e.fontSize}px`,`font-family: ${e.fontFamily}`,`font-weight: ${e.fontWeight}`,`font-style: ${e.fontStyle}`,`font-variant: ${e.fontVariant}`,`letter-spacing: ${e.letterSpacing}px`,`text-align: ${e.align}`,`padding: ${e.padding}px`,`white-space: ${"pre"===e.whiteSpace&&e.wordWrap?"pre-wrap":e.whiteSpace}`,...e.lineHeight?[`line-height: ${e.lineHeight}px`]:[],...e.wordWrap?[`word-wrap: ${e.breakWords?"break-all":"break-word"}`,`max-width: ${e.wordWrapWidth}px`]:[],...t?[w(t)]:[],...e.dropShadow?[v(e.dropShadow)]:[],...e.cssOverrides].join(";"),a=[`div { ${i} }`];return function(e,t){for(let r in e){let i=e[r],a=[];for(let e in i)C[e]?a.push(C[e](i[e])):T[e]&&a.push(T[e].replace("{{VALUE}}",i[e]));t.push(`${r} { ${a.join(";")} }`)}}(e.tagStyles,a),a.join(" ")}(this)),this._cssStyle}addOverride(...e){let t=e.filter(e=>!this.cssOverrides.includes(e));t.length>0&&(this.cssOverrides.push(...t),this.update())}removeOverride(...e){let t=e.filter(e=>this.cssOverrides.includes(e));t.length>0&&(this.cssOverrides=this.cssOverrides.filter(e=>!t.includes(e)),this.update())}set fill(e){"string"!=typeof e&&"number"!=typeof e&&(0,f.R)("[HTMLTextStyle] only color fill is not supported by HTMLText"),super.fill=e}set stroke(e){e&&"string"!=typeof e&&"number"!=typeof e&&(0,f.R)("[HTMLTextStyle] only color stroke is not supported by HTMLText"),super.stroke=e}}var F=r(3843);async function k(e){let t=await p.e.get().fetch(e),r=await t.blob(),i=new FileReader;return await new Promise((e,t)=>
32{i.onloadend=()=>e(i.result),i.onerror=t,i.readAsDataURL(r)})}async function M(e,t){let r=await k(t);return`@font-face { 33 font-family: "${e.fontFamily}"; 34 src: url('${r}'); 35 font-weight: ${e.fontWeight}; 36 font-style: ${e.fontStyle}; 37 }`}let A=new Map;async function U(e,t,r){let i=e.filter(e=>F.l.has(`${e}-and-url`)).map((e,i)=>{if(!A.has(e)){let{url:a}=F.l.get(`${e}-and-url`);0===i?A.set(e,M({fontWeight:t.fontWeight,fontStyle:t.fontStyle,fontFamily:e},a)):A.set(e,M({fontWeight:r.fontWeight,fontStyle:r.fontStyle,fontFamily:e},a))}return A.get(e)});return(await Promise.all(i)).join("\n")}class B{constructor(e){this._renderer=e,this._createCanvas=e.type===c.W.WEBGPU}getTexture(e){return this.getTexturePromise(e)}getTexturePromise(e){return this._buildTexturePromise(e)}async _buildTexturePromise(e){var t;let r,{text:a,style:s,resolution:n,textureStyle:o}=e,l=g.Z.get(y),h=function(e,t){let r=t.fontFamily,i=[],a={},s=e.match(/font-family:([^;"\s]+)/g);function n(e){a[e]||(i.push(e),a[e]=!0)}if(Array.isArray(r))for(let e=0;e<r.length;e++)n(r[e]);else n(r);for(let e in s&&s.forEach(e=>{n(e.split(":")[1].trim())}),t.tagStyles)n(t.tagStyles[e].fontFamily);return i}(a,s),u=await U(h,s,P.defaultTextStyle),c=function(e,t,r,a){a||(a=i||(i=new y));let{domElement:s,styleElement:n,svgRoot:o}=a;s.innerHTML=`<style>${t.cssStyle};</style><div style='padding:0'>${e}</div>`,s.setAttribute("style","transform-origin: top left; display: inline-block"),r&&(n.textContent=r),document.body.appendChild(o);let l=s.getBoundingClientRect();o.remove();let h=2*t.padding;return{width:l.width-h,height:l.height-h}}(a,s,u,l),f=Math.ceil(Math.ceil(Math.max(1,c.width)+2*s.padding)*n),x=Math.ceil(Math.ceil(Math.max(1,c.height)+2*s.padding)*n),_=l.image;_.width=(0|f)+2,_.height=(0|x)+2;let b=function(e,t,r,i,a){let{domElement:s,styleElement:n,svgRoot:o}=a;s.innerHTML=`<style>${t.cssStyle}</style><div style='padding:0;'>${e}</div>`,s.setAttribute("style",`transform: scale(${r});transform-origin: top left; display: inline-block`),n.textContent=i;let{width:l,height:h}=a.image;return o.setAttribute("width",l.toString()),o.setAttribute("height",h.toString()),new XMLSerializer().serializeToString(o)}(a,s,n,u,l);await (t=function(){let{userAgent:e}=p.e.get().getNavigator();return/^((?!chrome|android).)*safari/i.test(e)}()&&h.length>0,new Promise(async e=>{t&&await new Promise(e=>setTimeout(e,100)),_.onload=()=>{e()},_.src=`data:image/svg+xml;charset=utf8,${encodeURIComponent(b)}`,_.crossOrigin="anonymous"})),this._createCanvas&&(r=function(e,t){let r=d.N.getOptimalCanvasAndContext(e.width,e.height,t),{context:i}=r;return i.clearRect(0,0,e.width,e.height),i.drawImage(e,0,0),r}(_,n));let S=(0,m.M)(r?r.canvas:_,_.width-2,_.height-2,n);return o&&(S.source.style=o),this._createCanvas&&(this._renderer.texture.initSource(S.source),d.N.returnCanvasAndContext(r)),g.Z.return(l),S}returnTexturePromise(e){e.then(e=>{this._cleanUp(e)}).catch(()=>{(0,f.R)("HTMLTextSystem: Failed to clean texture")})}_cleanUp(e){u.W.returnTexture(e,!0),e.source.resource=null,e.source.uploadMethodId="unknown"}destroy(){this._renderer=null}}B.extension={type:[a.Ag.WebGLSystem,a.Ag.WebGPUSystem,a.Ag.CanvasSystem],name:"htmlText"},a.XO.add(B),a.XO.add(h)},4571:(e,t,r)=>{let i,a;
37var s=r(8797),n=r(3843),o=r(6448),l=r(3794),h=r(859),d=r(2021),u=r(3687),c=r(4826),p=r(1657),f=r(6907),g=r(8043),m=r(1013);let x={name:"local-uniform-msdf-bit",vertex:{header:` 38 struct LocalUniforms { 39 uColor:vec4<f32>, 40 uTransformMatrix:mat3x3<f32>, 41 uDistance: f32, 42 uRound:f32, 43 } 44 45 @group(2) @binding(0) var<uniform> localUniforms : LocalUniforms; 46 `,main:` 47 vColor *= localUniforms.uColor; 48 modelMatrix *= localUniforms.uTransformMatrix; 49 `,end:` 50 if(localUniforms.uRound == 1) 51 { 52 vPosition = vec4(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw); 53 } 54 `},fragment:{header:` 55 struct LocalUniforms { 56 uColor:vec4<f32>, 57 uTransformMatrix:mat3x3<f32>, 58 uDistance: f32 59 } 60 61 @group(2) @binding(0) var<uniform> localUniforms : LocalUniforms; 62 `,main:` 63 outColor = vec4<f32>(calculateMSDFAlpha(outColor, localUniforms.uColor, localUniforms.uDistance)); 64 `}},_={name:"local-uniform-msdf-bit",vertex:{header:` 65 uniform mat3 uTransformMatrix; 66 uniform vec4 uColor; 67 uniform float uRound; 68 `,main:` 69 vColor *= uColor; 70 modelMatrix *= uTransformMatrix; 71 `,end:` 72 if(uRound == 1.) 73 { 74 gl_Position.xy = roundPixels(gl_Position.xy, uResolution); 75 } 76 `},fragment:{header:` 77 uniform float uDistance; 78 `,main:` 79 outColor = vec4(calculateMSDFAlpha(outColor, vColor, uDistance)); 80 `}},y={name:"msdf-bit",fragment:{header:` 81 fn calculateMSDFAlpha(msdfColor:vec4<f32>, shapeColor:vec4<f32>, distance:f32) -> f32 { 82 83 // MSDF 84 var median = msdfColor.r + msdfColor.g + msdfColor.b - 85 min(msdfColor.r, min(msdfColor.g, msdfColor.b)) - 86 max(msdfColor.r, max(msdfColor.g, msdfColor.b)); 87 88 // SDF 89 median = min(median, msdfColor.a); 90 91 var screenPxDistance = distance * (median - 0.5); 92 var alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0); 93 if (median < 0.01) { 94 alpha = 0.0; 95 } else if (median > 0.99) { 96 alpha = 1.0; 97 } 98 99 // Gamma correction for coverage-like alpha 100 var luma: f32 = dot(shapeColor.rgb, vec3<f32>(0.299, 0.587, 0.114)); 101 var gamma: f32 = mix(1.0, 1.0 / 2.2, luma); 102 var coverage: f32 = pow(shapeColor.a * alpha, gamma); 103 104 return coverage; 105 106 } 107 `}},b={name:"msdf-bit",fragment:{header:` 108 float calculateMSDFAlpha(vec4 msdfColor, vec4 shapeColor, float distance) { 109 110 // MSDF 111 float median = msdfColor.r + msdfColor.g + msdfColor.b - 112 min(msdfColor.r, min(msdfColor.g, msdfColor.b)) - 113 max(msdfColor.r, max(msdfColor.g, msdfColor.b)); 114 115 // SDF 116 median = min(median, msdfColor.a); 117 118 float screenPxDistance = distance * (median - 0.5); 119 float alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0); 120 121 if (median < 0.01) { 122 alpha = 0.0; 123 } else if (median > 0.99) { 124 alpha = 1.0; 125 } 126 127 // Gamma correction for coverage-like alpha 128 float luma = dot(shapeColor.rgb, vec3(0.299, 0.587, 0.114)); 129 float gamma = mix(1.0, 1.0 / 2.2, luma); 130 float coverage = pow(shapeColor.a * alpha, gamma); 131 132 return coverage; 133 } 134 `}};class S extends g.M{constructor(e){let t=new m.k({uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uTransformMatrix:{value:new h.u,type:"mat3x3<f32>"},uDistance:{value:4,type:"f32"},uRound:{value:0,type:"f32"}});i??(i=(0,d.v)({name:"sdf-shader",bits:[u.F,(0,c._)(e),x,y,p.b]})),a??(a=(0,d.I)({name:"sdf-shader",bits:[u.a,(0,c.P)(e),_,b,p.m]})),super({glProgram:a,gpuProgram:i,resources:{localUniforms:t,batchSamplers:(0,f.n)(e)}})}}var v=r(436),w=r(6312),T=r(9745),C=r(5607),P=r(6300),F=r(2322),k=r(137),M=r
134(7796),A=r(4404),U=r(3360),B=r(68),R=r(299);class z extends R.A{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(0,v.t6)(v.lj,"BitmapFont.font is deprecated, please use BitmapFont.fontFamily instead."),this.fontFamily}get pageTextures(){return(0,v.t6)(v.lj,"BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead."),this.pages}get size(){return(0,v.t6)(v.lj,"BitmapFont.size is deprecated, please use BitmapFont.fontMetrics.fontSize instead."),this.fontMetrics.fontSize}get distanceFieldRange(){return(0,v.t6)(v.lj,"BitmapFont.distanceFieldRange is deprecated, please use BitmapFont.distanceField.range instead."),this.distanceField.range}get distanceFieldType(){return(0,v.t6)(v.lj,"BitmapFont.distanceFieldType is deprecated, please use BitmapFont.distanceField.type instead."),this.distanceField.type}destroy(e=!1){for(let e in this.emit("destroy",this),this.removeAllListeners(),this.chars)this.chars[e].texture?.destroy();this.chars=null,e&&(this.pages.forEach(e=>e.texture.destroy(!0)),this.pages=null)}}let W=class e extends z{constructor(t){super(),this.resolution=1,this.pages=[],this._padding=0,this._measureCache=Object.create(null),this._currentChars=[],this._currentX=0,this._currentY=0,this._currentMaxCharHeight=0,this._currentPageIndex=-1,this._skipKerning=!1;let r={...e.defaultOptions,...t};this._textureSize=r.textureSize,this._mipmap=r.mipmap;let i=r.style.clone();r.overrideFill&&(i._fill.color=0xffffff,i._fill.alpha=1,i._fill.texture=M.g.WHITE,i._fill.fill=null),this.applyFillAsTint=r.overrideFill;let a=i.fontSize;i.fontSize=this.baseMeasurementFontSize;let s=(0,U.Z)(i);r.overrideSize?i._stroke&&(i._stroke.width*=this.baseRenderedFontSize/a):i.fontSize=this.baseRenderedFontSize=a,this._style=i,this._skipKerning=r.skipKerning??!1,this.resolution=r.resolution??1,this._padding=r.padding??4,r.textureStyle&&(this._textureStyle=r.textureStyle instanceof A.n?r.textureStyle:new A.n(r.textureStyle)),this.fontMetrics=l.P.measureFont(s),this.lineHeight=i.lineHeight||this.fontMetrics.fontSize||i.fontSize}ensureCharacters(e){let t,r=l.P.graphemeSegmenter(e).filter(e=>!this._currentChars.includes(e)).filter((e,t,r)=>r.indexOf(e)===t);if(!r.length)return;this._currentChars=[...this._currentChars,...r];let{canvas:i,context:a}=(t=-1===this._currentPageIndex?this._nextPage():this.pages[this._currentPageIndex]).canvasAndContext,s=t.texture.source,n=this._style,o=this._currentX,h=this._currentY,d=this._currentMaxCharHeight,u=this.baseRenderedFontSize/this.baseMeasurementFontSize,c=this._padding*u,p=!1,f=i.width/this.resolution,g=i.height/this.resolution;for(let e=0;e<r.length;e++){let t=r[e],m=l.P.measureText(t,n,i,!1);m.lineHeight=m.height;let x=m.width*u,_=Math.ceil(("italic"===n.fontStyle?2:1)*x),y=m.height*u,b=_+2*c,S=y+2*c;if(p=!1,"\n"!==t&&"\r"!==t&&" "!==t&&" "!==t&&(p=!0,d=Math.ceil(Math.max(S,d))),o+b>f&&(o=0,(h+=d)+(d=S)>g)){s.update();let e=this._nextPage();i=e.canvasAndContext.canvas,a=e.canvasAndContext.context,s=e.texture.source,o=0,h=0,d=0}let v=x/u-(n.dropShadow?.distance??0)-(n._stroke?.width??0);if(this.chars[t]={id:t.codePointAt(0),xOffset:-this._padding,yOffset:-this._padding,xAdvance:v,kerning:{}},p){this._drawGlyph(a,m,o+c,h+c,u,n);let e=s.width*u,r=s.height*u,i=new P.M(o/e*s.width,h/r*s.height,b/e*s.width,S/r*s.height);this.chars[t].texture=new M.g({source:s,frame:i}),o+=Math.ceil(b)}}s.update(),this._currentX=o,this._currentY=h,this._currentMaxCharHeight=d,this._skipKerning&&this._applyKerning(r,a)}get pageTextures(){return(0,v.t6)(v.lj,"BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead."),this.pages}_applyKerning(e,t){let r=this._measureCache;for(let i=0;i<e.length;i++){let a=e[i];for(let e=0;e<this._currentChars.length;e++){let i=this._currentChars[e],s=r[a];s||(s=r[a]=t.measureText(a).width);let n=r[i];
134n||(n=r[i]=t.measureText(i).width);let o=t.measureText(a+i).width,l=o-(s+n);l&&(this.chars[a].kerning[i]=l),(l=(o=t.measureText(a+i).width)-(s+n))&&(this.chars[i].kerning[a]=l)}}}_nextPage(){this._currentPageIndex++;let e=this.resolution,t=F.N.getOptimalCanvasAndContext(this._textureSize,this._textureSize,e);this._setupContext(t.context,this._style,e);let r=e*(this.baseRenderedFontSize/this.baseMeasurementFontSize),i=new M.g({source:new k.b({resource:t.canvas,resolution:r,alphaMode:"premultiply-alpha-on-upload",autoGenerateMipmaps:this._mipmap})});this._textureStyle&&(i.source.style=this._textureStyle);let a={canvasAndContext:t,texture:i};return this.pages[this._currentPageIndex]=a,a}_setupContext(e,t,r){t.fontSize=this.baseRenderedFontSize,e.scale(r,r),e.font=(0,U.Z)(t),t.fontSize=this.baseMeasurementFontSize,e.textBaseline=t.textBaseline;let i=t._stroke,a=i?.width??0;if(i&&(e.lineWidth=a,e.lineJoin=i.join,e.miterLimit=i.miterLimit,e.strokeStyle=(0,B.r)(i,e)),t._fill&&(e.fillStyle=(0,B.r)(t._fill,e)),t.dropShadow){let i=t.dropShadow,a=C.Q.shared.setValue(i.color).toArray(),s=i.blur*r,n=i.distance*r;e.shadowColor=`rgba(${255*a[0]},${255*a[1]},${255*a[2]},${i.alpha})`,e.shadowBlur=s,e.shadowOffsetX=Math.cos(i.angle)*n,e.shadowOffsetY=Math.sin(i.angle)*n}else e.shadowColor="black",e.shadowBlur=0,e.shadowOffsetX=0,e.shadowOffsetY=0}_drawGlyph(e,t,r,i,a,s){let n=t.text,o=t.fontProperties,l=s._stroke,h=(l?.width??0)*a,d=r+h/2,u=i-h/2,c=o.descent*a,p=t.lineHeight*a;s.stroke&&h&&e.strokeText(n,d,u+p-c),s._fill&&e.fillText(n,d,u+p-c)}destroy(){super.destroy();for(let e=0;e<this.pages.length;e++){let{canvasAndContext:t,texture:r}=this.pages[e];F.N.returnCanvasAndContext(t),r.destroy(!0)}this.pages=null}};function O(e,t,r,i){let a={width:0,height:0,offsetY:0,scale:t.fontSize/r.baseMeasurementFontSize,lines:[{width:0,charPositions:[],spaceWidth:0,spacesIndex:[],chars:[]}]};a.offsetY=r.baseLineOffset;let s=a.lines[0],n=null,o=!0,l={spaceWord:!1,width:0,start:0,index:0,positions:[],chars:[]},h=e=>{let t=s.width;for(let r=0;r<l.index;r++){let i=e.positions[r];s.chars.push(e.chars[r]),s.charPositions.push(i+t)}s.width+=e.width,o=!1,l.width=0,l.index=0,l.chars.length=0},d=()=>{let e=s.chars.length-1;if(i){let t=s.chars[e];for(;" "===t;)s.width-=r.chars[t].xAdvance,t=s.chars[--e]}a.width=Math.max(a.width,s.width),s={width:0,charPositions:[],chars:[],spaceWidth:0,spacesIndex:[]},o=!0,a.lines.push(s),a.height+=r.lineHeight},u=r.baseMeasurementFontSize/t.fontSize,c=t.letterSpacing*u,p=t.wordWrapWidth*u;for(let i=0;i<e.length+1;i++){let a,u=i===e.length;u||(a=e[i]);let f=r.chars[a]||r.chars[" "];if(/(?:\s)/.test(a)||"\r"===a||"\n"===a||u){if(!o&&t.wordWrap&&s.width+l.width-c>p?d():l.start=s.width,h(l),u||s.charPositions.push(0),"\r"===a||"\n"===a)0!==s.width&&d();else if(!u){let e=f.xAdvance+(f.kerning[n]||0)+c;s.width+=e,s.spaceWidth=e,s.spacesIndex.push(s.charPositions.length),s.chars.push(a)}}else{let e=f.kerning[n]||0,t=f.xAdvance+e+c;l.positions[l.index++]=l.width+e,l.chars.push(a),l.width+=t}n=a}return d(),"center"===t.align?function(e){for(let t=0;t<e.lines.length;t++){let r=e.lines[t],i=e.width/2-r.width/2;for(let e=0;e<r.charPositions.length;e++)r.charPositions[e]+=i}}(a):"right"===t.align?function(e){for(let t=0;t<e.lines.length;t++){let r=e.lines[t],i=e.width-r.width;for(let e=0;e<r.charPositions.length;e++)r.charPositions[e]+=i}}(a):"justify"===t.align&&function(e){let t=e.width;for(let r=0;r<e.lines.length;r++){let i=e.lines[r],a=0,s=i.spacesIndex[a++],n=0,o=i.spacesIndex.length,l=(t-i.width)/o;for(let e=0;e<i.charPositions.length;e++)e===s&&(s=i.spacesIndex[a++],n+=l),i.charPositions[e]+=n}}(a),a}W.defaultOptions={textureSize:512,style:new T.x,mipmap:!0};let G=0;class D{constructor(){this.ALPHA=[["a","z"],["A","Z"]," "],this.NUMERIC=[["0","9"]],this.ALPHANUMERIC=[["a","z"],["A","Z"],["0","9"]," "],this.ASCII=[[" ","~"]],this.defaultOptions={chars:this.ALPHANUMERIC,resolution:1,padding:4,skipKerning:!1,textureStyle:null}}getFont(e,t){let r=`${t.fontFamily}-bitmap`,i=!0;if(t._fill.fill&&!t._stroke)r+=t._fill.fill.styleKey,i=!1;else if(t._stroke||t.dropShadow){let e=t.styleKey;e=e.substring(0,e.lastIndexOf("-")),r=`${e}-bitmap`,i=!1}if(!n.l.has(r)){let e=new W({style:t,overrideFill:i,overrideSize:!0,...this.defaultOptions});++G>50&&(0,w.R)("BitmapText",`You have dynamically created ${G} bitmap fonts, this can be inefficient. Try pre installing your font styles using \`BitmapFont.install({name:"style1", style})\``),e.once("destroy",()=>{G--,n.l.remove(r)}),n.l.set(r,e)}let a=n.l.get(r);return a.ensureCharacters?.(e),a}getLayout(e,t,r=!0){let i=this.getFont(e,t);return O(l.P.graphemeSegmenter(e),t,i,r)}measureText(e,t,r=!0){return this.getLayout(e,t,r)}install(...e){let t=e[0];"string"==typeof t&&(t={name:t,style:e[1],chars:e[2]?.chars,resolution:e[2]?.resolution,padding:e[2]?.padding,skipKerning:e[2]?.ski
134pKerning},(0,v.t6)(v.lj,"BitmapFontManager.install(name, style, options) is deprecated, use BitmapFontManager.install({name, style, ...options})"));let r=t?.name;if(!r)throw Error("[BitmapFontManager] Property `name` is required.");let i=(t={...this.defaultOptions,...t}).style,a=i instanceof T.x?i:new T.x(i),s=null!==a._fill.fill&&void 0!==a._fill.fill,o=new W({style:a,overrideFill:s,skipKerning:t.skipKerning,padding:t.padding,resolution:t.resolution,overrideSize:!1,textureStyle:t.textureStyle}),l=function(e){if(""===e)return[];"string"==typeof e&&(e=[e]);let t=[];for(let r=0,i=e.length;r<i;r++){let i=e[r];if(Array.isArray(i)){if(2!==i.length)throw Error(`[BitmapFont]: Invalid character range length, expecting 2 got ${i.length}.`);if(0===i[0].length||0===i[1].length)throw Error("[BitmapFont]: Invalid character delimiter.");let e=i[0].charCodeAt(0),r=i[1].charCodeAt(0);if(r<e)throw Error("[BitmapFont]: Invalid character range.");for(let i=e;i<=r;i++)t.push(String.fromCharCode(i))}else t.push(...Array.from(i))}if(0===t.length)throw Error("[BitmapFont]: Empty set when resolving characters.");return t}(t.chars);return o.ensureCharacters(l.join("")),n.l.set(`${r}-bitmap`,o),o.once("destroy",()=>n.l.remove(`${r}-bitmap`)),o}uninstall(e){let t=`${e}-bitmap`,r=n.l.get(t);r&&r.destroy()}}let L=new D;class V extends o.A{destroy(){this.context.customShader&&this.context.customShader.destroy(),super.destroy()}}class I{constructor(e){this._renderer=e,this._renderer.renderableGC.addManagedHash(this,"_gpuBitmapText")}validateRenderable(e){let t=this._getGpuBitmapText(e);return e._didTextUpdate&&(e._didTextUpdate=!1,this._updateContext(e,t)),this._renderer.renderPipes.graphics.validateRenderable(t)}addRenderable(e,t){let r=this._getGpuBitmapText(e);E(e,r),e._didTextUpdate&&(e._didTextUpdate=!1,this._updateContext(e,r)),this._renderer.renderPipes.graphics.addRenderable(r,t),r.context.customShader&&this._updateDistanceField(e)}updateRenderable(e){let t=this._getGpuBitmapText(e);E(e,t),this._renderer.renderPipes.graphics.updateRenderable(t),t.context.customShader&&this._updateDistanceField(e)}_updateContext(e,t){let{context:r}=t,i=L.getFont(e.text,e._style);r.clear(),"none"===i.distanceField.type||r.customShader||(r.customShader=new S(this._renderer.limits.maxBatchableTextures));let a=l.P.graphemeSegmenter(e.text),s=e._style,n=i.baseLineOffset,o=O(a,s,i,!0),h=0,d=s.padding,u=o.scale,c=o.width,p=o.height+o.offsetY;s._stroke&&(c+=s._stroke.width/u,p+=s._stroke.width/u),r.translate(-e._anchor._x*c-d,-e._anchor._y*p-d).scale(u,u);let f=i.applyFillAsTint?s._fill.color:0xffffff;for(let e=0;e<o.lines.length;e++){let t=o.lines[e];for(let e=0;e<t.charPositions.length;e++){let s=a[h++],o=i.chars[s];o?.texture&&r.texture(o.texture,f||"black",Math.round(t.charPositions[e]+o.xOffset),Math.round(n+o.yOffset))}n+=i.lineHeight}}_getGpuBitmapText(e){return e._gpuData[this._renderer.uid]||this.initGpuText(e)}initGpuText(e){let t=new V;return e._gpuData[this._renderer.uid]=t,this._updateContext(e,t),t}_updateDistanceField(e){let t=this._getGpuBitmapText(e).context,r=e._style.fontFamily,i=n.l.get(`${r}-bitmap`),{a,b:s,c:o,d:l}=e.groupTransform,h=(Math.abs(Math.sqrt(a*a+s*s))+Math.abs(Math.sqrt(o*o+l*l)))/2,d=i.baseRenderedFontSize/e._style.fontSize,u=h*i.distanceField.range*(1/d);t.customShader.resources.localUniforms.uniforms.uDistance=u}destroy(){this._renderer=null}}function E(e,t){t.groupTransform=e.groupTransform,t.groupColorAlpha=e.groupColorAlpha,t.groupColor=e.groupColor,t.groupBlendMode=e.groupBlendMode,t.globalDisplayStatus=e.globalDisplayStatus,t.groupTransform=e.groupTransform,t.localDisplayStatus=e.localDisplayStatus,t.groupAlpha=e.groupAlpha,t._roundPixels=e._roundPixels}I.extension={type:[s.Ag.WebGLPipes,s.Ag.WebGPUPipes,s.Ag.CanvasPipes],name:"bitmapText"},s.XO.add(I)},5397:(e,t,r)=>{var i=r(8797),a=r(8624),s=r(1964);class n extends s.K{constructor(e){super(),this._renderer=e,e.runners.resolutionChange.add(this)}resolutionChange(){let e=this.renderable;e._autoResolution&&e.onViewUpdate()}destroy(){this._renderer.canvasText.returnTexture(this.texture),this._renderer=null}}class o{constructor(e){this._renderer=e}
134validateRenderable(e){return e._didTextUpdate}addRenderable(e,t){let r=this._getGpuText(e);e._didTextUpdate&&(this._updateGpuText(e),e._didTextUpdate=!1),this._renderer.renderPipes.batch.addToBatch(r,t)}updateRenderable(e){let t=this._getGpuText(e);t._batcher.updateElement(t)}_updateGpuText(e){let t=this._getGpuText(e);t.texture&&this._renderer.canvasText.returnTexture(t.texture),e._resolution=e._autoResolution?this._renderer.resolution:e.resolution,t.texture=t.texture=this._renderer.canvasText.getTexture(e),(0,a.s)(t,e)}_getGpuText(e){return e._gpuData[this._renderer.uid]||this.initGpuText(e)}initGpuText(e){let t=new n(this._renderer);return t.renderable=e,t.transform=e.groupTransform,t.bounds={minX:0,maxX:1,minY:0,maxY:0},t.roundPixels=this._renderer._roundPixels|e._roundPixels,e._gpuData[this._renderer.uid]=t,t}destroy(){this._renderer=null}}o.extension={type:[i.Ag.WebGLPipes,i.Ag.WebGPUPipes,i.Ag.CanvasPipes],name:"text"};var l=r(3398),h=r(4404),d=r(436),u=r(9745),c=r(7402),p=r(5607),f=r(6300),g=r(2322),m=r(3833),x=r(1309);let _=null,y=null;function b(e,t,r){for(let i=0,a=4*r*t;i<t;++i,a+=4)if(0!==e[a+3])return!1;return!0}function S(e,t,r,i,a){let s=4*t;for(let t=i,n=i*s+4*r;t<=a;++t,n+=s)if(0!==e[n+3])return!1;return!0}var v=r(3794),w=r(3360),T=r(68);let C=new f.M;class P{getCanvasAndContext(e){let{text:t,style:r,resolution:i=1}=e,a=r._getFinalPadding(),s=v.P.measureText(t||" ",r),n=Math.ceil(Math.ceil(Math.max(1,s.width)+2*a)*i),o=Math.ceil(Math.ceil(Math.max(1,s.height)+2*a)*i),l=g.N.getOptimalCanvasAndContext(n,o);this._renderTextToCanvas(t,r,a,i,l);let h=r.trim?function(...e){let t=e[0];t.canvas||(t={canvas:e[0],resolution:e[1]});let{canvas:r}=t,i=Math.min(t.resolution??1,1),a=t.width??r.width,s=t.height??r.height,n=t.output;if(_||((y=(_=m.e.get().createCanvas(256,128)).getContext("2d",{willReadFrequently:!0})).globalCompositeOperation="copy",y.globalAlpha=1),(_.width<a||_.height<s)&&(_.width=(0,x.U5)(a),_.height=(0,x.U5)(s)),!y)throw TypeError("Failed to get canvas 2D context");y.drawImage(r,0,0,a,s,0,0,a*i,s*i);let o=y.getImageData(0,0,a,s).data,l=0,h=0,d=a-1,u=s-1;for(;h<s&&b(o,a,h);)++h;if(h===s)return f.M.EMPTY;for(;b(o,a,u);)--u;for(;S(o,a,l,h,u);)++l;for(;S(o,a,d,h,u);)--d;return++d,++u,y.globalCompositeOperation="source-over",y.strokeRect(l,h,d-l,u-h),y.globalCompositeOperation="copy",n??(n=new f.M),n.set(l/i,h/i,(d-l)/i,(u-h)/i),n}({canvas:l.canvas,width:n,height:o,resolution:1,output:C}):C.set(0,0,n,o);return{canvasAndContext:l,frame:h}}returnCanvasAndContext(e){g.N.returnCanvasAndContext(e)}_renderTextToCanvas(e,t,r,i,a){let s,n,{canvas:o,context:l}=a,h=(0,w.Z)(t),d=v.P.measureText(e||" ",t),u=d.lines,c=d.lineHeight,f=d.lineWidths,g=d.maxLineWidth,m=d.fontProperties,x=o.height;if(l.resetTransform(),l.scale(i,i),l.textBaseline=t.textBaseline,t._stroke?.width){let e=t._stroke;l.lineWidth=e.width,l.miterLimit=e.miterLimit,l.lineJoin=e.join,l.lineCap=e.cap}l.font=h;let _=t.dropShadow?2:1;for(let e=0;e<_;++e){let o=t.dropShadow&&0===e,h=o?Math.ceil(Math.max(1,x)+2*r):0,_=h*i;if(o){l.fillStyle="black",l.strokeStyle="black";let e=t.dropShadow,r=e.color,a=e.alpha;l.shadowColor=p.Q.shared.setValue(r).setAlpha(a).toRgbaString();let s=e.blur*i,n=e.distance*i;l.shadowBlur=s,l.shadowOffsetX=Math.cos(e.angle)*n,l.shadowOffsetY=Math.sin(e.angle)*n+_}else{if(l.fillStyle=t._fill?(0,T.r)(t._fill,l,d):null,t._stroke?.width){let e=t._stroke.width*t._stroke.alignment;l.strokeStyle=(0,T.r)(t._stroke,l,d,e)}l.shadowColor="black"}let y=(c-m.fontSize)/2;c-m.fontSize<0&&(y=0);let b=t._stroke?.width??0;for(let e=0;e<u.length;e++)s=b/2,n=b/2+e*c+m.ascent+y,"right"===t.align?s+=g-f[e]:"center"===t.align&&(s+=(g-f[e])/2),t._stroke?.width&&this._drawLetterSpacing(u[e],t,a,s+r,n+r-h,!0),void 0!==t._fill&&this._drawLetterSpacing(u[e],t,a,s+r,n+r-h)}}_drawLetterSpacing(e,t,r,i,a,s=!1){let{context:n}=r,o=t.letterSpacing,l=!1;if(v.P.experimentalLetterSpacingSupported&&(v.P.experimentalLetterSpacing?(n.letterSpacing=`${o}px`,n.textLetterSpacing=`${o}px`,l=!0):(n.letterSpacing="0px",n.textLetterSpacing="0px")),0===o||l)return void(s?n.strokeText(e,i,a):n.fillText(e,i,a));let h=i,d=v.P.graphemeSegmenter(e),u=n.measureText(e).width,c=0;for(let e=0;e<d.length;++e){let t=d[e];s?n.strokeText(t,h,a):n.fillText(t,h,a);let r="";for(let t=e+1;t<d.length;++t)r+=d[t];h+=u-(c=n.measureText(r).width)+o,u=c}}}let F=new P;class k{constructor(e){this._renderer=e}
134getTexture(e,t,r,i){"string"==typeof e&&((0,d.t6)("8.0.0","CanvasTextSystem.getTexture: Use object TextOptions instead of separate arguments"),e={text:e,style:r,resolution:t}),e.style instanceof u.x||(e.style=new u.x(e.style)),e.textureStyle instanceof h.n||(e.textureStyle=new h.n(e.textureStyle)),"string"!=typeof e.text&&(e.text=e.text.toString());let{text:a,style:s,textureStyle:n}=e,o=e.resolution??this._renderer.resolution,{frame:l,canvasAndContext:p}=F.getCanvasAndContext({text:a,style:s,resolution:o}),f=(0,c.M)(p.canvas,l.width,l.height,o);if(n&&(f.source.style=n),s.trim&&(l.pad(s.padding),f.frame.copyFrom(l),f.updateUvs()),s.filters){let e=this._applyFilters(f,s.filters);return this.returnTexture(f),F.returnCanvasAndContext(p),e}return this._renderer.texture.initSource(f._source),F.returnCanvasAndContext(p),f}returnTexture(e){let t=e.source;t.resource=null,t.uploadMethodId="unknown",t.alphaMode="no-premultiply-alpha",l.W.returnTexture(e,!0)}renderTextToCanvas(){(0,d.t6)("8.10.0","CanvasTextSystem.renderTextToCanvas: no longer supported, use CanvasTextSystem.getTexture instead")}_applyFilters(e,t){let r=this._renderer.renderTarget.renderTarget,i=this._renderer.filter.generateFilteredTexture({texture:e,filters:t});return this._renderer.renderTarget.bind(r,!1),i}destroy(){this._renderer=null}}k.extension={type:[i.Ag.WebGLSystem,i.Ag.WebGPUSystem,i.Ag.CanvasSystem],name:"canvasText"},i.XO.add(k),i.XO.add(o)},5756:(e,t,r)=>{r.d(t,{u:()=>l});var i=r(641),a=r(5838),s=r(8014),n=r(436);let o=class e extends s.V{constructor(...t){let r=t[0]??{};r instanceof Float32Array&&((0,n.t6)(n.lj,"use new MeshGeometry({ positions, uvs, indices }) instead"),r={positions:r,uvs:t[1],indices:t[2]});let s=(r={...e.defaultOptions,...r}).positions||new Float32Array([0,0,1,0,1,1,0,1]),o=r.uvs;o||(o=new Float32Array(r.positions?s.length:[0,0,1,0,1,1,0,1]));let l=r.indices||new Uint32Array([0,1,2,0,2,3]),h=r.shrinkBuffersToFit,d=new i.h({data:s,label:"attribute-mesh-positions",shrinkToFit:h,usage:a.S.VERTEX|a.S.COPY_DST});super({attributes:{aPosition:{buffer:d,format:"float32x2",stride:8,offset:0},aUV:{buffer:new i.h({data:o,label:"attribute-mesh-uvs",shrinkToFit:h,usage:a.S.VERTEX|a.S.COPY_DST}),format:"float32x2",stride:8,offset:0}},indexBuffer:new i.h({data:l,label:"index-mesh-buffer",shrinkToFit:h,usage:a.S.INDEX|a.S.COPY_DST}),topology:r.topology}),this.batchMode="auto"}get positions(){return this.attributes.aPosition.buffer.data}set positions(e){this.attributes.aPosition.buffer.data=e}get uvs(){return this.attributes.aUV.buffer.data}set uvs(e){this.attributes.aUV.buffer.data=e}get indices(){return this.indexBuffer.data}set indices(e){this.indexBuffer.data=e}};o.defaultOptions={topology:"triangle-list",shrinkBuffersToFit:!1};let l=o},6538:(e,t,r)=>{r.d(t,{V:()=>i});function i(e,t,r){let i=(e>>24&255)/255;t[r++]=(255&e)/255*i,t[r++]=(e>>8&255)/255*i,t[r++]=(e>>16&255)/255*i,t[r++]=i}},6679:(e,t,r)=>{var i=r(8797),a=r(664),s=r(436),n=r(5756);let o=class e extends n.u{constructor(...e){super({});let t=e[0]??{};"number"==typeof t&&((0,s.t6)(s.lj,"PlaneGeometry constructor changed please use { width, height, verticesX, verticesY } instead"),t={width:t,height:e[1],verticesX:e[2],verticesY:e[3]}),this.build(t)}build(t){t={...e.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;let r=this.verticesX*this.verticesY,i=[],a=[],s=[],n=this.verticesX-1,o=this.verticesY-1,l=this.width/n,h=this.height/o;for(let e=0;e<r;e++){let t=e%this.verticesX,r=e/this.verticesX|0;i.push(t*l,r*h),a.push(t/n,r/o)}let d=n*o;for(let e=0;e<d;e++){let t=e%n,r=e/n|0,i=r*this.verticesX+t,a=r*this.verticesX+t+1,o=(r+1)*this.verticesX+t,l=(r+1)*this.verticesX+t+1;s.push(i,a,o,a,l,o)}this.buffers[0].data=new Float32Array(i),this.buffers[1].data=new Float32Array(a),this.indexBuffer.data=new Uint32Array(s),this.buffers[0].update(),this.buffers[1].update(),this.indexBuffer.update()}};o.defaultOptions={width:100,height:100,verticesX:10,verticesY:10};let l=o,h=class e extends l{constructor(t={}){t={...e.defaultOptions,...t},super({width:t.width,height:t.height,verticesX:4,verticesY:4}),this.update(t)}update(e){this.width=e.width??this.width,this.height=e.height??this.height,this._originalWidth=e.originalWidth??this._originalWidth,this._originalHeight=e.originalHeight??this._originalHeight,this._leftWi
134dth=e.leftWidth??this._leftWidth,this._rightWidth=e.rightWidth??this._rightWidth,this._topHeight=e.topHeight??this._topHeight,this._bottomHeight=e.bottomHeight??this._bottomHeight,this._anchorX=e.anchor?.x,this._anchorY=e.anchor?.y,this.updateUvs(),this.updatePositions()}updatePositions(){let e=this.positions,{width:t,height:r,_leftWidth:i,_rightWidth:a,_topHeight:s,_bottomHeight:n,_anchorX:o,_anchorY:l}=this,h=i+a,d=s+n,u=Math.min(t>h?1:t/h,r>d?1:r/d),c=o*t,p=l*r;e[0]=e[8]=e[16]=e[24]=-c,e[2]=e[10]=e[18]=e[26]=i*u-c,e[4]=e[12]=e[20]=e[28]=t-a*u-c,e[6]=e[14]=e[22]=e[30]=t-c,e[1]=e[3]=e[5]=e[7]=-p,e[9]=e[11]=e[13]=e[15]=s*u-p,e[17]=e[19]=e[21]=e[23]=r-n*u-p,e[25]=e[27]=e[29]=e[31]=r-p,this.getBuffer("aPosition").update()}updateUvs(){let e=this.uvs;e[0]=e[8]=e[16]=e[24]=0,e[1]=e[3]=e[5]=e[7]=0,e[6]=e[14]=e[22]=e[30]=1,e[25]=e[27]=e[29]=e[31]=1;let t=1/this._originalWidth,r=1/this._originalHeight;e[2]=e[10]=e[18]=e[26]=t*this._leftWidth,e[9]=e[11]=e[13]=e[15]=r*this._topHeight,e[4]=e[12]=e[20]=e[28]=1-t*this._rightWidth,e[17]=e[19]=e[21]=e[23]=1-r*this._bottomHeight,this.getBuffer("aUV").update()}};h.defaultOptions={width:100,height:100,leftWidth:10,topHeight:10,rightWidth:10,bottomHeight:10,originalWidth:100,originalHeight:100};class d extends a.U{constructor(){super(),this.geometry=new h}destroy(){this.geometry.destroy()}}class u{constructor(e){this._renderer=e}addRenderable(e,t){let r=this._getGpuSprite(e);e.didViewUpdate&&this._updateBatchableSprite(e,r),this._renderer.renderPipes.batch.addToBatch(r,t)}updateRenderable(e){let t=this._getGpuSprite(e);e.didViewUpdate&&this._updateBatchableSprite(e,t),t._batcher.updateElement(t)}validateRenderable(e){let t=this._getGpuSprite(e);return!t._batcher.checkAndUpdateTexture(t,e._texture)}_updateBatchableSprite(e,t){t.geometry.update(e),t.setTexture(e._texture)}_getGpuSprite(e){return e._gpuData[this._renderer.uid]||this._initGPUSprite(e)}_initGPUSprite(e){let t=e._gpuData[this._renderer.uid]=new d;return t.renderable=e,t.transform=e.groupTransform,t.texture=e._texture,t.roundPixels=this._renderer._roundPixels|e._roundPixels,e.didViewUpdate||this._updateBatchableSprite(e,t),t}destroy(){this._renderer=null}}u.extension={type:[i.Ag.WebGLPipes,i.Ag.WebGPUPipes,i.Ag.CanvasPipes],name:"nineSliceSprite"},i.XO.add(u)},7402:(e,t,r)=>{r.d(t,{M:()=>s});var i=r(3398);let a=new(r(4354)).c;function s(e,t,r,s){a.minX=0,a.minY=0,a.maxX=e.width/s|0,a.maxY=e.height/s|0;let n=i.W.getOptimalTexture(a.width,a.height,s,!1);return n.source.uploadMethodId="image",n.source.resource=e,n.source.alphaMode="premultiply-alpha-on-upload",n.frame.width=t/s,n.frame.height=r/s,n.source.emit("update",n.source),n.updateUvs(),n}},8624:(e,t,r)=>{r.d(t,{s:()=>a});var i=r(3138);function a(e,t){let{texture:r,bounds:a}=e;(0,i.y)(a,t._anchor,r);let s=t._style._getFinalPadding();a.minX-=s,a.minY-=s,a.maxX-=s,a.maxY-=s}},8793:(e,t,r)=>{let i,a;var s=r(8797),n=r(3811),o=r(4119),l=r(3537),h=r(6538),d=r(664),u=r(5756),c=r(859),p=r(2021),f=r(1625),g=r(1657),m=r(8043),x=r(1013),_=r(7796);let y={name:"tiling-bit",vertex:{header:` 135 struct TilingUniforms { 136 uMapCoord:mat3x3<f32>, 137 uClampFrame:vec4<f32>, 138 uClampOffset:vec2<f32>, 139 uTextureTransform:mat3x3<f32>, 140 uSizeAnchor:vec4<f32> 141 }; 142 143 @group(2) @binding(0) var<uniform> tilingUniforms: TilingUniforms; 144 @group(2) @binding(1) var uTexture: texture_2d<f32>; 145 @group(2) @binding(2) var uSampler: sampler; 146 `,main:` 147 uv = (tilingUniforms.uTextureTransform * vec3(uv, 1.0)).xy; 148 149 position = (position - tilingUniforms.uSizeAnchor.zw) * tilingUniforms.uSizeAnchor.xy; 150 `},fragment:{header:` 151 struct TilingUniforms { 152 uMapCoord:mat3x3<f32>, 153 uClampFrame:vec4<f32>, 154 uClampOffset:vec2<f32>, 155 uTextureTransform:mat3x3<f32>, 156 uSizeAnchor:vec4<f32> 157 }; 158 159 @group(2) @binding(0) var<uniform> tilingUniforms: TilingUniforms; 160 @group(2) @binding(1) var uTexture: texture_2d<f32>; 161 @group(2) @binding(2) var uSampler: sampler; 162 `,main:` 163 164 var coord = vUV + ceil(tilingUniforms.uClampOffset - vUV); 165 coord = (tilingUniforms.uMapCoord * vec3(coord, 1.0)).xy;
166 var unclamped = coord; 167 coord = clamp(coord, tilingUniforms.uClampFrame.xy, tilingUniforms.uClampFrame.zw); 168 169 var bias = 0.; 170 171 if(unclamped.x == coord.x && unclamped.y == coord.y) 172 { 173 bias = -32.; 174 } 175 176 outColor = textureSampleBias(uTexture, uSampler, coord, bias); 177 `}},b={name:"tiling-bit",vertex:{header:` 178 uniform mat3 uTextureTransform; 179 uniform vec4 uSizeAnchor; 180 181 `,main:` 182 uv = (uTextureTransform * vec3(aUV, 1.0)).xy; 183 184 position = (position - uSizeAnchor.zw) * uSizeAnchor.xy; 185 `},fragment:{header:` 186 uniform sampler2D uTexture; 187 uniform mat3 uMapCoord; 188 uniform vec4 uClampFrame; 189 uniform vec2 uClampOffset; 190 `,main:` 191 192 vec2 coord = vUV + ceil(uClampOffset - vUV); 193 coord = (uMapCoord * vec3(coord, 1.0)).xy; 194 vec2 unclamped = coord; 195 coord = clamp(coord, uClampFrame.xy, uClampFrame.zw); 196 197 outColor = texture(uTexture, coord, unclamped == coord ? 0.0 : -32.0);// lod-bias very negative to force lod 0 198 199 `}};class S extends m.M{constructor(){i??(i=(0,p.v)({name:"tiling-sprite-shader",bits:[f.Ls,y,g.b]})),a??(a=(0,p.I)({name:"tiling-sprite-shader",bits:[f.mA,b,g.m]})),super({glProgram:a,gpuProgram:i,resources:{localUniforms:new x.k({uTransformMatrix:{value:new c.u,type:"mat3x3<f32>"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uRound:{value:0,type:"f32"}}),tilingUniforms:new x.k({uMapCoord:{value:new c.u,type:"mat3x3<f32>"},uClampFrame:{value:new Float32Array([0,0,1,1]),type:"vec4<f32>"},uClampOffset:{value:new Float32Array([0,0]),type:"vec2<f32>"},uTextureTransform:{value:new c.u,type:"mat3x3<f32>"},uSizeAnchor:{value:new Float32Array([100,100,.5,.5]),type:"vec4<f32>"}}),uTexture:_.g.EMPTY.source,uSampler:_.g.EMPTY.source.style}})}updateUniforms(e,t,r,i,a,s){let n=this.resources.tilingUniforms,o=s.width,l=s.height,h=s.textureMatrix,d=n.uniforms.uTextureTransform;d.set(r.a*o/e,r.b*o/t,r.c*l/e,r.d*l/t,r.tx/e,r.ty/t),d.invert(),n.uniforms.uMapCoord=h.mapCoord,n.uniforms.uClampFrame=h.uClampFrame,n.uniforms.uClampOffset=h.uClampOffset,n.uniforms.uTextureTransform=d,n.uniforms.uSizeAnchor[0]=e,n.uniforms.uSizeAnchor[1]=t,n.uniforms.uSizeAnchor[2]=i,n.uniforms.uSizeAnchor[3]=a,s&&(this.resources.uTexture=s.source,this.resources.uSampler=s.source.style)}}class v extends u.u{constructor(){super({positions:new Float32Array([0,0,1,0,1,1,0,1]),uvs:new Float32Array([0,0,1,0,1,1,0,1]),indices:new Uint32Array([0,1,2,0,2,3])})}}let w=new v;class T{constructor(){this.canBatch=!0,this.geometry=new u.u({indices:w.indices.slice(),positions:w.positions.slice(),uvs:w.uvs.slice()})}destroy(){this.geometry.destroy(),this.shader?.destroy()}}class C{constructor(e){this._state=o.U.default2d,this._renderer=e}validateRenderable(e){let t=this._getTilingSpriteData(e),r=t.canBatch;this._updateCanBatch(e);let i=t.canBatch;if(i&&i===r){let{batchableMesh:r}=t;return!r._batcher.checkAndUpdateTexture(r,e.texture)}return r!==i}addRenderable(e,t){let r=this._renderer.renderPipes.batch;this._updateCanBatch(e);let i=this._getTilingSpriteData(e),{geometry:a,canBatch:s}=i;if(s){i.batchableMesh||(i.batchableMesh=new d.U);let s=i.batchableMesh;e.didViewUpdate&&(this._updateBatchableMesh(e),s.geometry=a,s.renderable=e,s.transform=e.groupTransform,s.setTexture(e._texture)),s.roundPixels=this._renderer._roundPixels|e._roundPixels,r.addToBatch(s,t)}else r.break(t),i.shader||(i.shader=new S),this.updateRenderable(e),t.add(e)}execute(e){let{shader:t}=this._getTilingSpriteData(e);t.groups[0]=this._renderer.globalUniforms.bindGroup;let r=t.resources.localUniforms.uniforms;r.uTransformMatrix=e.groupTransform,r.uRound=this._renderer._roundPixels|e._roundPixels,(0,h.V)(e.groupColorAlpha,r.uColor,0),this._state.blendMode=(0,n.i)(e.groupBlendMode,e.texture._source),this._renderer.encoder.draw({geometry:w,shader:t,state:this._state})}updateRenderable(e){let t=this._getTilingSpriteData(e),{canBatch:r}=t;if(r){let{batchableMesh:r}=t;e.didViewUpdate&&this._updateBatchableMesh(e),r._batcher.updateElement(r)}else if(e.didViewUpdate){let{shader:r}=t;r.updateUniforms(e.width,e.height,e._tileTransform.matrix,e.anchor.x,e.anchor.y,e.texture)}}_getTilingSpriteData(e){return e._gpuData[this._renderer.uid]||this._initTilingSpriteData(e)}_initTilingSpriteData(e){let t=new T;return t.renderable=e,e._gpuData[this._renderer.uid]=t,t}_updateBatchableMesh(e){let{geometry:t}=this._getTilingSpriteData(e),r=e.texture.source.style;
199"repeat"!==r.addressMode&&(r.addressMode="repeat",r.update()),function(e,t){let r=e.texture,i=r.frame.width,a=r.frame.height,s=0,n=0;e.applyAnchorToTexture&&(s=e.anchor.x,n=e.anchor.y),t[0]=t[6]=-s,t[2]=t[4]=1-s,t[1]=t[3]=-n,t[5]=t[7]=1-n;let o=c.u.shared;o.copyFrom(e._tileTransform.matrix),o.tx/=e.width,o.ty/=e.height,o.invert(),o.scale(e.width/i,e.height/a),function(e,t,r,i){let a=0,s=e.length/2,n=i.a,o=i.b,l=i.c,h=i.d,d=i.tx,u=i.ty;for(r*=2;a<s;){let i=e[r],s=e[r+1];e[r]=n*i+l*s+d,e[r+1]=o*i+h*s+u,r+=t,a++}}(t,2,0,o)}(e,t.uvs);var i=t.positions;let a=e.anchor.x,s=e.anchor.y;i[0]=-a*e.width,i[1]=-s*e.height,i[2]=(1-a)*e.width,i[3]=-s*e.height,i[4]=(1-a)*e.width,i[5]=(1-s)*e.height,i[6]=-a*e.width,i[7]=(1-s)*e.height}destroy(){this._renderer=null}_updateCanBatch(e){let t=this._getTilingSpriteData(e),r=e.texture,i=!0;return this._renderer.type===l.W.WEBGL&&(i=this._renderer.context.supports.nonPowOf2wrapping),t.canBatch=r.textureMatrix.isSimple&&(i||r.source.isPowerOfTwo),t.canBatch}}C.extension={type:[s.Ag.WebGLPipes,s.Ag.WebGPUPipes,s.Ag.CanvasPipes],name:"tilingSprite"},s.XO.add(C)},9181:(e,t,r)=>{var i=r(8797);class a{execute(e,t){let r=e.state,i=e.renderer,a=t.shader||e.defaultShader;a.resources.uTexture=t.texture._source,a.resources.uniforms=e.localUniforms;let s=i.gl,n=e.getBuffers(t);i.shader.bind(a),i.state.set(r),i.geometry.bind(n.geometry,a.glProgram);let o=2===n.geometry.indexBuffer.data.BYTES_PER_ELEMENT?s.UNSIGNED_SHORT:s.UNSIGNED_INT;s.drawElements(s.TRIANGLES,6*t.particleChildren.length,o,0)}}var s=r(859),n=r(1013),o=r(3811),l=r(4119),h=r(6538),d=r(641),u=r(5838),c=r(8014),p=r(9829),f=r(2438);function g(e,t=null){let r=6*e;if(r>65535?t||(t=new Uint32Array(r)):t||(t=new Uint16Array(r)),t.length!==r)throw Error(`Out buffer length is incorrect, got ${t.length} and expected ${r}`);for(let e=0,i=0;e<r;e+=6,i+=4)t[e+0]=i+0,t[e+1]=i+1,t[e+2]=i+2,t[e+3]=i+0,t[e+4]=i+2,t[e+5]=i+3;return t}function m(e,t){let r=[];r.push(` 200 201 var index = 0; 202 203 for (let i = 0; i < ps.length; ++i) 204 { 205 const p = ps[i]; 206 207 `);let i=0;for(let a in e){let s=e[a];t===s.dynamic&&(r.push(`offset = index + ${i}`),r.push(s.code),i+=(0,p.m)(s.format).stride/4)}return r.push(` 208 index += stride * 4; 209 } 210 `),r.unshift(` 211 var stride = ${i}; 212 `),Function("ps","f32v","u32v",r.join("\n"))}class x{constructor(e){this._size=0,this._generateParticleUpdateCache={};let t=this._size=e.size??1e3,r=e.properties,i=0,a=0;for(let e in r){let t=r[e],s=(0,p.m)(t.format);t.dynamic?a+=s.stride:i+=s.stride}this._dynamicStride=a/4,this._staticStride=i/4,this.staticAttributeBuffer=new f.u(4*t*i),this.dynamicAttributeBuffer=new f.u(4*t*a),this.indexBuffer=g(t);let s=new c.V,n=0,o=0;for(let e in this._staticBuffer=new d.h({data:new Float32Array(1),label:"static-particle-buffer",shrinkToFit:!1,usage:u.S.VERTEX|u.S.COPY_DST}),this._dynamicBuffer=new d.h({data:new Float32Array(1),label:"dynamic-particle-buffer",shrinkToFit:!1,usage:u.S.VERTEX|u.S.COPY_DST}),r){let t=r[e],i=(0,p.m)(t.format);t.dynamic?(s.addAttribute(t.attributeName,{buffer:this._dynamicBuffer,stride:4*this._dynamicStride,offset:4*n,format:t.format}),n+=i.size):(s.addAttribute(t.attributeName,{buffer:this._staticBuffer,stride:4*this._staticStride,offset:4*o,format:t.format}),o+=i.size)}s.addIndex(this.indexBuffer);let l=this.getParticleUpdate(r);this._dynamicUpload=l.dynamicUpdate,this._staticUpload=l.staticUpdate,this.geometry=s}getParticleUpdate(e){let t=function(e){let t=[];for(let r in e){let i=e[r];t.push(r,i.code,i.dynamic?"d":"s")}return t.join("_")}(e);return this._generateParticleUpdateCache[t]||(this._generateParticleUpdateCache[t]=this.generateParticleUpdate(e)),this._generateParticleUpdateCache[t]}generateParticleUpdate(e){return{dynamicUpdate:m(e,!0),staticUpdate:m(e,!1)}}update(e,t){e.length>this._size&&(t=!0,this._size=Math.max(e.length,1.5*this._size|0),this.staticAttributeBuffer=new f.u(this._size*this._staticStride*16),this.dynamicAttributeBuffer=new f.u(this._size*this._dynamicStride*16),this.indexBuffer=g(this._size),this.geometry.indexBuffer.setDataWithSize(this.indexBuffer,this.indexBuffer.byteLength,!0));let r=this.dynamicAttributeBuffer;if(this._dynamicUpload(e,r.float32View,r.uint32View),this._dynamicBuffer.setDataWithSize(this.dynamicAttributeBuffer.float32View,e.length*this._dynamicStride*4,!0),t){let t=this.staticAttributeBuffer;this._staticUpload(e,t.float32View,t.uint32View),this._staticBuffer.setDataWithSize(t.float32View,e.length*this._staticStri
212de*4,!0)}}destroy(){this._staticBuffer.destroy(),this._dynamicBuffer.destroy(),this.geometry.destroy()}}var _=r(5607),y=r(9521),b=r(3283),S=r(8043),v=r(7796),w=r(4404),T="\nstruct ParticleUniforms {\n uProjectionMatrix:mat3x3<f32>,\n uColor:vec4<f32>,\n uResolution:vec2<f32>,\n uRoundPixels:f32,\n};\n\n@group(0) @binding(0) var<uniform> uniforms: ParticleUniforms;\n\n@group(1) @binding(0) var uTexture: texture_2d<f32>;\n@group(1) @binding(1) var uSampler : sampler;\n\nstruct VSOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>,\n @location(1) color : vec4<f32>,\n };\n@vertex\nfn mainVertex(\n @location(0) aVertex: vec2<f32>,\n @location(1) aPosition: vec2<f32>,\n @location(2) aUV: vec2<f32>,\n @location(3) aColor: vec4<f32>,\n @location(4) aRotation: f32,\n) -> VSOutput {\n \n let v = vec2(\n aVertex.x * cos(aRotation) - aVertex.y * sin(aRotation),\n aVertex.x * sin(aRotation) + aVertex.y * cos(aRotation)\n ) + aPosition;\n\n let position = vec4((uniforms.uProjectionMatrix * vec3(v, 1.0)).xy, 0.0, 1.0);\n\n let vColor = vec4(aColor.rgb * aColor.a, aColor.a) * uniforms.uColor;\n\n return VSOutput(\n position,\n aUV,\n vColor,\n );\n}\n\n@fragment\nfn mainFragment(\n @location(0) uv: vec2<f32>,\n @location(1) color: vec4<f32>,\n @builtin(position) position: vec4<f32>,\n) -> @location(0) vec4<f32> {\n\n var sample = textureSample(uTexture, uSampler, uv) * color;\n \n return sample;\n}";class C extends S.M{constructor(){super({glProgram:y.M.from({vertex:"attribute vec2 aVertex;\nattribute vec2 aUV;\nattribute vec4 aColor;\n\nattribute vec2 aPosition;\nattribute float aRotation;\n\nuniform mat3 uTranslationMatrix;\nuniform float uRound;\nuniform vec2 uResolution;\nuniform vec4 uColor;\n\nvarying vec2 vUV;\nvarying vec4 vColor;\n\nvec2 roundPixels(vec2 position, vec2 targetSize)\n{ \n return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;\n}\n\nvoid main(void){\n float cosRotation = cos(aRotation);\n float sinRotation = sin(aRotation);\n float x = aVertex.x * cosRotation - aVertex.y * sinRotation;\n float y = aVertex.x * sinRotation + aVertex.y * cosRotation;\n\n vec2 v = vec2(x, y);\n v = v + aPosition;\n\n gl_Position = vec4((uTranslationMatrix * vec3(v, 1.0)).xy, 0.0, 1.0);\n\n if(uRound == 1.0)\n {\n gl_Position.xy = roundPixels(gl_Position.xy, uResolution);\n }\n\n vUV = aUV;\n vColor = vec4(aColor.rgb * aColor.a, aColor.a) * uColor;\n}\n",fragment:"varying vec2 vUV;\nvarying vec4 vColor;\n\nuniform sampler2D uTexture;\n\nvoid main(void){\n vec4 color = texture2D(uTexture, vUV) * vColor;\n gl_FragColor = color;\n}"}),gpuProgram:b.B.from({fragment:{source:T,entryPoint:"mainFragment"},vertex:{source:T,entryPoint:"mainVertex"}}),resources:{uTexture:v.g.WHITE.source,uSampler:new w.n({}),uniforms:{uTranslationMatrix:{value:new s.u,type:"mat3x3<f32>"},uColor:{value:new _.Q(0xffffff),type:"vec4<f32>"},uRound:{value:1,type:"f32"},uResolution:{value:[0,0],type:"vec2<f32>"}}}})}}class P{constructor(e,t){this.state=l.U.for2d(),this.localUniforms=new n.k({uTranslationMatrix:{value:new s.u,type:"mat3x3<f32>"},uColor:{value:new Float32Array(4),type:"vec4<f32>"},uRound:{value:1,type:"f32"},uResolution:{value:[0,0],type:"vec2<f32>"}}),this.renderer=e,this.adaptor=t,this.defaultShader=new C,this.state=l.U.for2d()}validateRenderable(e){return!1}addRenderable(e,t){this.renderer.renderPipes.batch.break(t),t.add(e)}getBuffers(e){return e._gpuData[this.renderer.uid]||this._initBuffer(e)}_initBuffer(e){return e._gpuData[this.renderer.uid]=new x({size:e.particleChildren.length,properties:e._properties}),e._gpuData[this.renderer.uid]}updateRenderable(e){}execute(e){let t=e.particleChildren;if(0===t.length)return;let r=this.renderer,i=this.getBuffers(e);e.texture||(e.texture=t[0].texture);let a=this.state;i.update(t,e._childrenDirty),e._childrenDirty=!1,a.blendMode=(0,o.i)(e.blendMode,e.texture._source);let s=this.localUniforms.uniforms,n=s.uTranslationMatrix;e.worldTransform.copyTo(n),n.prepend(r.globalUniforms.globalUniformData.projectionMatrix),s.uResolution=r.globalUniforms.globalUniformData.resolution,s.uRound=r._roundPixels|e._roundPixels,(0,h.V)(e.groupColorAlpha,s.uColor,0),this.adaptor.execute(this,e)}destroy(){this.defaultShader&&(this.defaultShader.destroy(),this.defaultShader=null)}}class F extends P{constructor(e){super(e,new a)}}F.extension={type:[i.Ag.WebGLPipes],name:"particle"};class k{execute(e,t){let r=e.renderer,i=t.shader||e.defaultShader;i.groups[0]=r.renderPipes.uniformBatch.getUniformBindGroup(e.localUniforms,!0),i.groups[1]=r.texture.getTextureBindGroup(t.texture);let a=e.state,s=e.getBuffers(t);r.encoder.draw({geometry:s.geometry,shader:t.shader||e.defaultShader,state:a,size:6*t.particleChildren.length})}}class M extends P{constructor(e){super(e,new k)}}M.extension={type:[i.Ag.WebGPUPipes],name:"particle"},i.XO.add(F),i.XO.add(M)},9745:(e,t,r)=>{r.d(t,{x:()=>p});
212var i=r(299),a=r(5607),s=r(436),n=r(8262),o=r(9642),l=r(7238),h=r(136);let d=["align","breakWords","cssOverrides","fontVariant","fontWeight","leading","letterSpacing","lineHeight","padding","textBaseline","trim","whiteSpace","wordWrap","wordWrapWidth","fontFamily","fontStyle","fontSize"];function u(e,t,r){return e&&(t[r++]=e.color,t[r++]=e.alpha,t[r++]=e.fill?.styleKey),r}let c=class e extends i.A{constructor(t={}){super(),function(e){if("boolean"==typeof e.dropShadow&&e.dropShadow){let t=p.defaultDropShadow;e.dropShadow={alpha:e.dropShadowAlpha??t.alpha,angle:e.dropShadowAngle??t.angle,blur:e.dropShadowBlur??t.blur,color:e.dropShadowColor??t.color,distance:e.dropShadowDistance??t.distance}}if(void 0!==e.strokeThickness){(0,s.t6)(s.lj,"strokeThickness is now a part of stroke");let t=e.stroke,r={};if(a.Q.isColorLike(t))r.color=t;else if(t instanceof n._||t instanceof o.m)r.fill=t;else if(Object.hasOwnProperty.call(t,"color")||Object.hasOwnProperty.call(t,"fill"))r=t;else throw Error("Invalid stroke value.");e.stroke={...r,width:e.strokeThickness}}if(Array.isArray(e.fillGradientStops)){let t;(0,s.t6)(s.lj,"gradient fill is now a fill pattern: `new FillGradient(...)`"),null==e.fontSize?e.fontSize=p.defaultTextStyle.fontSize:t="string"==typeof e.fontSize?parseInt(e.fontSize,10):e.fontSize;let r=new n._({start:{x:0,y:0},end:{x:0,y:1.7*(t||0)}}),i=e.fillGradientStops.map(e=>a.Q.shared.setValue(e).toNumber());i.forEach((e,t)=>{let a=t/(i.length-1);r.addColorStop(a,e)}),e.fill={fill:r}}}(t);let r={...e.defaultTextStyle,...t};for(let e in r)this[e]=r[e];this.update()}get align(){return this._align}set align(e){this._align=e,this.update()}get breakWords(){return this._breakWords}set breakWords(e){this._breakWords=e,this.update()}get dropShadow(){return this._dropShadow}set dropShadow(t){null!==t&&"object"==typeof t?this._dropShadow=this._createProxy({...e.defaultDropShadow,...t}):this._dropShadow=t?this._createProxy({...e.defaultDropShadow}):null,this.update()}get fontFamily(){return this._fontFamily}set fontFamily(e){this._fontFamily=e,this.update()}get fontSize(){return this._fontSize}set fontSize(e){"string"==typeof e?this._fontSize=parseInt(e,10):this._fontSize=e,this.update()}get fontStyle(){return this._fontStyle}set fontStyle(e){this._fontStyle=e.toLowerCase(),this.update()}get fontVariant(){return this._fontVariant}set fontVariant(e){this._fontVariant=e,this.update()}get fontWeight(){return this._fontWeight}set fontWeight(e){this._fontWeight=e,this.update()}get leading(){return this._leading}set leading(e){this._leading=e,this.update()}get letterSpacing(){return this._letterSpacing}set letterSpacing(e){this._letterSpacing=e,this.update()}get lineHeight(){return this._lineHeight}set lineHeight(e){this._lineHeight=e,this.update()}get padding(){return this._padding}set padding(e){this._padding=e,this.update()}get filters(){return this._filters}set filters(e){this._filters=e,this.update()}get trim(){return this._trim}set trim(e){this._trim=e,this.update()}get textBaseline(){return this._textBaseline}set textBaseline(e){this._textBaseline=e,this.update()}get whiteSpace(){return this._whiteSpace}set whiteSpace(e){this._whiteSpace=e,this.update()}get wordWrap(){return this._wordWrap}set wordWrap(e){this._wordWrap=e,this.update()}get wordWrapWidth(){return this._wordWrapWidth}set wordWrapWidth(e){this._wordWrapWidth=e,this.update()}get fill(){return this._originalFill}set fill(e){e!==this._originalFill&&(this._originalFill=e,this._isFillStyle(e)&&(this._originalFill=this._createProxy({...l.T.defaultFillStyle,...e},()=>{this._fill=(0,h.w)({...this._originalFill},l.T.defaultFillStyle)})),this._fill=(0,h.w)(0===e?"black":e,l.T.defaultFillStyle),this.update())}get stroke(){return this._originalStroke}set stroke(e){e!==this._originalStroke&&(this._originalStroke=e,this._isFillStyle(e)&&(this._originalStroke=this._createProxy({...l.T.defaultStrokeStyle,...e},()=>{this._stroke=(0,h.T)({...this._originalStroke},l.T.defaultStrokeStyle)})),this._stroke=(0,h.T)(e,l.T.defaultStrokeStyle),this.update())}_generateKey(){return this._styleKey=function(e){var t,r,i,s,n,o;let l=[],h=0;for(let t=0;t<d.length;t++){let r=`_${d[t]}`;l[h++]=e[r]}return h=u(e._fill,l,h),t=e._stroke,r=l,i=h,t&&(i=u(t,r,i),r[i++]=t.width,r[i++]=t.alignment,r[i++]=t.cap,r[i++]=t.join,r[i++]=t.miterLimit),h=i,s=e.dropShadow,n=l,o=h,s&&(n[o++]=s.alpha,n[o++]=s.angle,n[o++]=s.blur,n[o++]=s.distance,n[o++]=a.Q.shared.setValue(s.color).toNumber()),h=o,h=function(e,t,r){if(!e)return r;for(let i of e)t[r++]=i.uid;return r}(e.filters,l,h),l.join("-")}(this),this._styleKey}
212update(){this._styleKey=null,this.emit("update",this)}reset(){let t=e.defaultTextStyle;for(let e in t)this[e]=t[e]}get styleKey(){return this._styleKey||this._generateKey()}clone(){return new e({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,filters:this._filters?[...this._filters]:void 0})}_getFinalPadding(){let e=0;if(this._filters)for(let t=0;t<this._filters.length;t++)e+=this._filters[t].padding;return Math.max(this._padding,e)}destroy(e=!1){if(this.removeAllListeners(),"boolean"==typeof e?e:e?.texture){let t="boolean"==typeof e?e:e?.textureSource;this._fill?.texture&&this._fill.texture.destroy(t),this._originalFill?.texture&&this._originalFill.texture.destroy(t),this._stroke?.texture&&this._stroke.texture.destroy(t),this._originalStroke?.texture&&this._originalStroke.texture.destroy(t)}this._fill=null,this._stroke=null,this.dropShadow=null,this._originalStroke=null,this._originalFill=null}_createProxy(e,t){return new Proxy(e,{set:(e,r,i)=>(e[r]=i,t?.(r,i),this.update(),!0)})}_isFillStyle(e){return(e??null)!==null&&!(a.Q.isColorLike(e)||e instanceof n._||e instanceof o.m)}};c.defaultDropShadow={alpha:1,angle:Math.PI/6,blur:0,color:"black",distance:5},c.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 p=c}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.