@rel-packages/osu-beatmap-preview 0.11.5 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/default_skin_archive.d.ts +1 -1
- package/dist/{chunk-zc79wdxj.js → chunk-029sagwa.js} +2 -2
- package/dist/{chunk-fsbv6vcn.js → chunk-0we37sfj.js} +2 -2
- package/dist/chunk-1d7vwgnw.js +15 -0
- package/dist/chunk-3baewprq.js +1 -0
- package/dist/{chunk-0e4ebmdy.js → chunk-3wjb2nvs.js} +2 -2
- package/dist/{chunk-pn7re3na.js → chunk-598ehnf5.js} +2 -2
- package/dist/{chunk-sngkm5ds.js → chunk-8wvq4dfz.js} +2 -2
- package/dist/{chunk-rp8z1jh7.js → chunk-aeeawe99.js} +2 -2
- package/dist/chunk-amhps2v2.js +1 -0
- package/dist/chunk-bxvb53d0.js +1 -0
- package/dist/{chunk-dvctxyxp.js → chunk-cs4e65d1.js} +1 -1
- package/dist/chunk-d7xgaxzy.js +1 -0
- package/dist/chunk-gsjxh2hw.js +1 -0
- package/dist/chunk-hbfgn274.js +1 -0
- package/dist/{chunk-kkmq6cvb.js → chunk-jyb1nvnr.js} +2 -2
- package/dist/chunk-n2mqbpq5.js +11 -0
- package/dist/chunk-p0te881m.js +1 -0
- package/dist/{chunk-5v6x1wpn.js → chunk-shgm3fs6.js} +2 -2
- package/dist/{chunk-1sw3e1ar.js → chunk-sqnzgty6.js} +5 -5
- package/dist/{chunk-h72ajp0p.js → chunk-tj1dwy5a.js} +1 -1
- package/dist/{chunk-eb5gmq04.js → chunk-tqbn5m4a.js} +2 -2
- package/dist/{chunk-edbhr7zr.js → chunk-vkkhj28s.js} +2 -2
- package/dist/chunk-w1tshfsy.js +2 -0
- package/dist/chunk-xtab1dnq.js +1 -0
- package/dist/{chunk-a7wf9wxx.js → chunk-z898rh1p.js} +3 -3
- package/dist/config/standard.d.ts +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/parser/osz_loader.d.ts.map +1 -1
- package/dist/player/audio_engine.d.ts +93 -0
- package/dist/player/audio_engine.d.ts.map +1 -0
- package/dist/player/player.d.ts +6 -15
- package/dist/player/player.d.ts.map +1 -1
- package/dist/player/player_hitsound.d.ts +20 -3
- package/dist/player/player_hitsound.d.ts.map +1 -1
- package/dist/renderer/backend/pixi_backend.d.ts +12 -0
- package/dist/renderer/backend/pixi_backend.d.ts.map +1 -1
- package/dist/renderer/backend/render_backend.d.ts +1 -0
- package/dist/renderer/backend/render_backend.d.ts.map +1 -1
- package/dist/renderer/drawable/drawable_slider.d.ts +2 -0
- package/dist/renderer/drawable/drawable_slider.d.ts.map +1 -1
- package/dist/renderer/mania/mania_renderer.d.ts +11 -0
- package/dist/renderer/mania/mania_renderer.d.ts.map +1 -1
- package/dist/renderer/standard/standard_renderer.d.ts +3 -1
- package/dist/renderer/standard/standard_renderer.d.ts.map +1 -1
- package/dist/renderer/standard/timing_state.d.ts +1 -0
- package/dist/renderer/standard/timing_state.d.ts.map +1 -1
- package/dist/utils/lru.d.ts +32 -0
- package/dist/utils/lru.d.ts.map +1 -0
- package/package.json +1 -1
- package/dist/chunk-21p7cseg.js +0 -1
- package/dist/chunk-525kvqgh.js +0 -1
- package/dist/chunk-5evxnj3k.js +0 -9
- package/dist/chunk-7qazncxz.js +0 -15
- package/dist/chunk-ay0z741j.js +0 -1
- package/dist/chunk-ef1ghrsq.js +0 -1
- package/dist/chunk-f3y92gm3.js +0 -1
- package/dist/chunk-kmf5rpya.js +0 -1
- package/dist/chunk-kt3t4zv0.js +0 -2
- package/dist/chunk-shb5s568.js +0 -1
- package/dist/chunk-tb8nqrjk.js +0 -1
- package/dist/player/audio_controller.d.ts +0 -31
- package/dist/player/audio_controller.d.ts.map +0 -1
- package/dist/player/audio_node_controller.d.ts +0 -8
- package/dist/player/audio_node_controller.d.ts.map +0 -1
- package/dist/player/hitsound_controller.d.ts +0 -21
- package/dist/player/hitsound_controller.d.ts.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as VJ,j as ZJ,l as _J,n as DJ,p as jJ,r as wJ,s as AJ,t as UJ,u as MJ}from"./chunk-eb5gmq04.js";import{I as yJ,J as lJ,K as vJ,y as k,z as xJ}from"./chunk-a7wf9wxx.js";import{ba as RJ,ca as T}from"./chunk-kt3t4zv0.js";import{ha as FJ}from"./chunk-fsbv6vcn.js";import{ta as E}from"./chunk-0e4ebmdy.js";import{Ba as h,Da as OJ,Ea as P,Ia as l,va as B,xa as KJ,za as NJ}from"./chunk-sngkm5ds.js";import{Ja as N,Ka as U,Qa as L,Ra as zJ,Va as w,db as LJ,hb as JJ,ib as j,jb as XJ,ob as n,pb as TJ,qb as R,rb as v,sb as p,tb as PJ}from"./chunk-1sw3e1ar.js";class S{constructor(){this._maxTextures=0}contextChange(J){let Q=new R({uTransformMatrix:{value:new L,type:"mat3x3<f32>"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uRound:{value:0,type:"f32"}});this._maxTextures=J.limits.maxBatchableTextures;let X=B({name:"graphics",bits:[KJ,NJ(this._maxTextures),ZJ,h]});this.shader=new v({gpuProgram:X,resources:{localUniforms:Q}})}execute(J,Q){let X=Q.context,Y=X.customShader||this.shader,$=J.renderer,q=$.graphicsContext,{batcher:H,instructions:F}=q.getContextRenderData(X),K=$.encoder;K.setGeometry(H.geometry,Y.gpuProgram);let z=$.globalUniforms.bindGroup;K.setBindGroup(0,z,Y.gpuProgram);let V=$.renderPipes.uniformBatch.getUniformBindGroup(Y.resources.localUniforms,!0);K.setBindGroup(2,V,Y.gpuProgram);let _=F.instructions,Z=null;for(let O=0;O<F.instructionSize;O++){let W=_[O];if(W.topology!==Z)Z=W.topology,K.setPipelineFromGeometryProgramAndState(H.geometry,Y.gpuProgram,J.state,W.topology);if(Y.groups[1]=W.bindGroup,!W.gpuBindGroup){let M=W.textures;W.bindGroup=E(M.textures,M.count,this._maxTextures),W.gpuBindGroup=$.bindGroup.getBindGroup(W.bindGroup,Y.gpuProgram,1)}K.setBindGroup(1,W.bindGroup,Y.gpuProgram),K.renderPassEncoder.drawIndexed(W.size,1,W.start)}}destroy(){this.shader.destroy(!0),this.shader=null}}S.extension={type:[N.WebGPUPipesAdaptor],name:"graphics"};class G{init(){let J=B({name:"mesh",bits:[VJ,_J,h]});this._shader=new v({gpuProgram:J,resources:{uTexture:JJ.EMPTY._source,uSampler:JJ.EMPTY._source.style,textureUniforms:{uTextureMatrix:{type:"mat3x3<f32>",value:new L}}}})}execute(J,Q){let X=J.renderer,Y=Q._shader;if(!Y)Y=this._shader,Y.groups[2]=X.texture.getTextureBindGroup(Q.texture);else if(!Y.gpuProgram){w("Mesh shader has no gpuProgram",Q.shader);return}let $=Y.gpuProgram;if($.autoAssignGlobalUniforms)Y.groups[0]=X.globalUniforms.bindGroup;if($.autoAssignLocalUniforms){let q=J.localUniforms;Y.groups[1]=X.renderPipes.uniformBatch.getUniformBindGroup(q,!0)}X.encoder.draw({geometry:Q._geometry,shader:Y,state:Q.state})}destroy(){this._shader.destroy(!0),this._shader=null}}G.extension={type:[N.WebGPUPipesAdaptor],name:"mesh"};var b=T.for2d();class x{start(J,Q,X){let Y=J.renderer,$=Y.encoder,q=X.gpuProgram;this._shader=X,this._geometry=Q,$.setGeometry(Q,q),b.blendMode="normal",Y.pipeline.getPipeline(Q,q,b);let H=Y.globalUniforms.bindGroup;$.resetBindGroup(1),$.setBindGroup(0,H,q)}execute(J,Q){let X=this._shader.gpuProgram,Y=J.renderer,$=Y.encoder;if(!Q.bindGroup){let F=Q.textures;Q.bindGroup=E(F.textures,F.count,Y.limits.maxBatchableTextures)}b.blendMode=Q.blendMode;let q=Y.bindGroup.getBindGroup(Q.bindGroup,X,1),H=Y.pipeline.getPipeline(this._geometry,X,b,Q.topology);Q.bindGroup._touch(Y.gc.now,Y.tick),$.setPipeline(H),$.renderPassEncoder.setBindGroup(1,q),$.renderPassEncoder.drawIndexed(Q.size,1,Q.start)}}x.extension={type:[N.WebGPUPipesAdaptor],name:"batch"};class y{constructor(J){this._hash=Object.create(null),this._renderer=J}contextChange(J){this._gpu=J}getBindGroup(J,Q,X){return J._updateKey(),this._hash[J._key]||this._createBindGroup(J,Q,X)}_createBindGroup(J,Q,X){let Y=this._gpu.device,$=Q.layout[X],q=[],H=this._renderer;for(let z in $){let V=J.resources[z]??J.resources[$[z]],_;if(V._resourceType==="uniformGroup"){let Z=V;H.ubo.updateUniformGroup(Z);let O=Z.buffer;_={buffer:H.buffer.getGPUBuffer(O),offset:0,size:O.descriptor.size}}else if(V._resourceType==="buffer"){let Z=V;_={buffer:H.buffer.getGPUBuffer(Z),offset:0,size:Z.descriptor.size}}else if(V._resourceType==="bufferResource"){let Z=V;_={buffer:H.buffer.getGPUBuffer(Z.buffer),offset:Z.offset,size:Z.size}}else if(V._resourceType==="textureSampler"){let Z=V;_=H.texture.getGpuSampler(Z)}else if(V._resourceType==="textureSource"){let Z=V;_=H.texture.getTextureView(Z)}q.push({binding:$[z],resource:_})}let F=H.shader.getProgramData(Q).bindGroups[X],K=Y.createBindGroup({layout:F,entries:q});return this._hash[J._key]=K,K}destroy(){this._hash=null,this._renderer=null}}y.extension={type:[N.WebGPUSystem],name:"bindGroup"};class WJ{constructor(J){this.gpuBuffer=J}destroy(){this.gpuBuffer.destroy(),this.gpuBuffer=null}}class f{constructor(J){this._renderer=J,this._managedBuffers=new l({renderer:J,type:"resource",onUnload:this.onBufferUnload.bind(this),name:"gpuBuffer"})}contextChange(J){this._gpu=J}getGPUBuffer(J){return J._gcLastUsed=this._renderer.gc.now,J._gpuData[this._renderer.uid]?.gpuBuffer||this.createGPUBuffer(J)}updateBuffer(J){let Q=this.getGPUBuffer(J),X=J.data;if(J._updateID&&X)J._updateID=0,this._gpu.device.queue.writeBuffer(Q,0,X.buffer,0,(J._updateSize||X.byteLength)+3&-4);return Q}destroyAll(){this._managedBuffers.removeAll()}onBufferUnload(J){J.off("update",this.updateBuffer,this),J.off("change",this.onBufferChange,this)}createGPUBuffer(J){let Q=this._gpu.device.createBuffer(J.descriptor);if(J._updateID=0,J._resourceId=zJ("resource"),J.data)OJ(J.data.buffer,Q.getMappedRange(),J.data.byteOffset,J.data.byteLength),Q.unmap();if(J._gpuData[this._renderer.uid]=new WJ(Q),this._managedBuffers.add(J))J.on("update",this.updateBuffer,this),J.on("change",this.onBufferChange,this);return Q}onBufferChange(J){this._managedBuffers.remove(J),J._updateID=0,this.createGPUBuffer(J)}destroy(){this._managedBuffers.destroy(),this._renderer=null,this._gpu=null}}f.extension={type:[N.WebGPUSystem],name:"buffer"};class m{constructor(J){this._colorMaskCache=15,this._renderer=J}setMask(J){if(this._colorMaskCache===J)return;this._colorMaskCache=J,this._renderer.pipeline.setColorMask(J)}destroy(){this._renderer=null,this._colorMaskCache=null}}m.extension={type:[N.WebGPUSystem],name:"colorMask"};class D{constructor(J){this._renderer=J}async init(J){if(this._initPromise)return this._initPromise;return this._initPromise=(J.gpu?Promise.resolve(J.gpu):this._createDeviceAndAdaptor(J)).then((Q)=>{this.gpu=Q,this._renderer.runners.contextChange.emit(this.gpu)}),this._initPromise}contextChange(J){this._renderer.gpu=J}async _createDeviceAndAdaptor(J){let Q=await j.get().getNavigator().gpu.requestAdapter({powerPreference:J.powerPreference,forceFallbackAdapter:J.forceFallbackAdapter}),X=["texture-compression-bc","texture-compression-astc","texture-compression-etc2"].filter(($)=>Q.features.has($)),Y=await Q.requestDevice({requiredFeatures:X});return{adapter:Q,device:Y}}destroy(){this.gpu=null,this._renderer=null}}D.extension={type:[N.WebGPUSystem],name:"device"};D.defaultOptions={powerPreference:void 0,forceFallbackAdapter:!1};class g{constructor(J){this._boundBindGroup=Object.create(null),this._boundVertexBuffer=Object.create(null),this._renderer=J}renderStart(){this.commandFinished=new Promise((J)=>{this._resolveCommandFinished=J}),this.commandEncoder=this._renderer.gpu.device.createCommandEncoder()}beginRenderPass(J){this.endRenderPass(),this._clearCache(),this.renderPassEncoder=this.commandEncoder.beginRenderPass(J.descriptor)}endRenderPass(){if(this.renderPassEncoder)this.renderPassEncoder.end();this.renderPassEncoder=null}setViewport(J){this.renderPassEncoder.setViewport(J.x,J.y,J.width,J.height,0,1)}setPipelineFromGeometryProgramAndState(J,Q,X,Y){let $=this._renderer.pipeline.getPipeline(J,Q,X,Y);this.setPipeline($)}setPipeline(J){if(this._boundPipeline===J)return;this._boundPipeline=J,this.renderPassEncoder.setPipeline(J)}_setVertexBuffer(J,Q){if(this._boundVertexBuffer[J]===Q)return;this._boundVertexBuffer[J]=Q,this.renderPassEncoder.setVertexBuffer(J,this._renderer.buffer.updateBuffer(Q))}_setIndexBuffer(J){if(this._boundIndexBuffer===J)return;this._boundIndexBuffer=J;let Q=J.data.BYTES_PER_ELEMENT===2?"uint16":"uint32";this.renderPassEncoder.setIndexBuffer(this._renderer.buffer.updateBuffer(J),Q)}resetBindGroup(J){this._boundBindGroup[J]=null}setBindGroup(J,Q,X){if(this._boundBindGroup[J]===Q)return;this._boundBindGroup[J]=Q,Q._touch(this._renderer.gc.now,this._renderer.tick);let Y=this._renderer.bindGroup.getBindGroup(Q,X,J);this.renderPassEncoder.setBindGroup(J,Y)}setGeometry(J,Q){let X=this._renderer.pipeline.getBufferNamesToBind(J,Q);for(let Y in X)this._setVertexBuffer(parseInt(Y,10),J.attributes[X[Y]].buffer);if(J.indexBuffer)this._setIndexBuffer(J.indexBuffer)}_setShaderBindGroups(J,Q){for(let X in J.groups){let Y=J.groups[X];if(!Q)this._syncBindGroup(Y);this.setBindGroup(X,Y,J.gpuProgram)}}_syncBindGroup(J){for(let Q in J.resources){let X=J.resources[Q];if(X.isUniformGroup)this._renderer.ubo.updateUniformGroup(X)}}draw(J){let{geometry:Q,shader:X,state:Y,topology:$,size:q,start:H,instanceCount:F,skipSync:K}=J;if(this.setPipelineFromGeometryProgramAndState(Q,X.gpuProgram,Y,$),this.setGeometry(Q,X.gpuProgram),this._setShaderBindGroups(X,K),Q.indexBuffer)this.renderPassEncoder.drawIndexed(q||Q.indexBuffer.data.length,F??Q.instanceCount,H||0);else this.renderPassEncoder.draw(q||Q.getSize(),F??Q.instanceCount,H||0)}finishRenderPass(){if(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(){let J=this._renderer.renderTarget.adaptor.getDescriptor(this._renderer.renderTarget.renderTarget,!1,[0,0,0,1],this._renderer.renderTarget.mipLevel,this._renderer.renderTarget.layer);this.renderPassEncoder=this.commandEncoder.beginRenderPass(J);let Q=this._boundPipeline,X={...this._boundVertexBuffer},Y=this._boundIndexBuffer,$={...this._boundBindGroup};this._clearCache();let q=this._renderer.renderTarget.viewport;this.renderPassEncoder.setViewport(q.x,q.y,q.width,q.height,0,1),this.setPipeline(Q);for(let H in X)this._setVertexBuffer(H,X[H]);for(let H in $)this.setBindGroup(H,$[H],null);this._setIndexBuffer(Y)}_clearCache(){for(let J=0;J<16;J++)this._boundBindGroup[J]=null,this._boundVertexBuffer[J]=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(J){this._gpu=J}}g.extension={type:[N.WebGPUSystem],name:"encoder",priority:1};class c{constructor(J){this._renderer=J}contextChange(){this.maxTextures=this._renderer.device.gpu.device.limits.maxSampledTexturesPerShaderStage,this.maxBatchableTextures=this.maxTextures}destroy(){}}c.extension={type:[N.WebGPUSystem],name:"limits"};class d{constructor(J){this._renderTargetStencilState=Object.create(null),this._renderer=J,J.renderTarget.onRenderTargetChange.add(this)}onRenderTargetChange(J){let Q=this._renderTargetStencilState[J.uid];if(!Q)Q=this._renderTargetStencilState[J.uid]={stencilMode:P.DISABLED,stencilReference:0};this._activeRenderTarget=J,this.setStencilMode(Q.stencilMode,Q.stencilReference)}setStencilMode(J,Q){let X=this._renderTargetStencilState[this._activeRenderTarget.uid];X.stencilMode=J,X.stencilReference=Q;let Y=this._renderer;Y.pipeline.setStencilMode(J),Y.encoder.renderPassEncoder.setStencilReference(Q)}destroy(){this._renderer.renderTarget.onRenderTargetChange.remove(this),this._renderer=null,this._activeRenderTarget=null,this._renderTargetStencilState=null}}d.extension={type:[N.WebGPUSystem],name:"stencil"};var A={i32:{align:4,size:4},u32:{align:4,size:4},f32:{align:4,size:4},f16:{align:2,size:2},"vec2<i32>":{align:8,size:8},"vec2<u32>":{align:8,size:8},"vec2<f32>":{align:8,size:8},"vec2<f16>":{align:4,size:4},"vec3<i32>":{align:16,size:12},"vec3<u32>":{align:16,size:12},"vec3<f32>":{align:16,size:12},"vec3<f16>":{align:8,size:6},"vec4<i32>":{align:16,size:16},"vec4<u32>":{align:16,size:16},"vec4<f32>":{align:16,size:16},"vec4<f16>":{align:8,size:8},"mat2x2<f32>":{align:8,size:16},"mat2x2<f16>":{align:4,size:8},"mat3x2<f32>":{align:8,size:24},"mat3x2<f16>":{align:4,size:12},"mat4x2<f32>":{align:8,size:32},"mat4x2<f16>":{align:4,size:16},"mat2x3<f32>":{align:16,size:32},"mat2x3<f16>":{align:8,size:16},"mat3x3<f32>":{align:16,size:48},"mat3x3<f16>":{align:8,size:24},"mat4x3<f32>":{align:16,size:64},"mat4x3<f16>":{align:8,size:32},"mat2x4<f32>":{align:16,size:32},"mat2x4<f16>":{align:8,size:16},"mat3x4<f32>":{align:16,size:48},"mat3x4<f16>":{align:8,size:24},"mat4x4<f32>":{align:16,size:64},"mat4x4<f16>":{align:8,size:32}};function IJ(J){let Q=J.map((Y)=>({data:Y,offset:0,size:0})),X=0;for(let Y=0;Y<Q.length;Y++){let $=Q[Y],q=A[$.data.type].size,H=A[$.data.type].align;if(!A[$.data.type])throw Error(`[Pixi.js] WebGPU UniformBuffer: Unknown type ${$.data.type}`);if($.data.size>1)q=Math.max(q,H)*$.data.size;X=Math.ceil(X/H)*H,$.size=q,$.offset=X,X+=q}return X=Math.ceil(X/16)*16,{uboElements:Q,size:X}}function CJ(J,Q){let{size:X,align:Y}=A[J.data.type],$=(Y-X)/4,q=J.data.type.indexOf("i32")>=0?"dataInt32":"data";return`
|
|
1
|
+
import{j as VJ,k as ZJ,m as _J,o as DJ,q as jJ,s as wJ,t as AJ,u as UJ,v as MJ}from"./chunk-tqbn5m4a.js";import{A as xJ,J as yJ,K as lJ,L as vJ,z as k}from"./chunk-z898rh1p.js";import{ca as RJ,da as T}from"./chunk-w1tshfsy.js";import{ia as FJ}from"./chunk-0we37sfj.js";import{ua as E}from"./chunk-3wjb2nvs.js";import{Aa as NJ,Ca as h,Ea as OJ,Fa as P,Ja as l,wa as B,ya as KJ}from"./chunk-8wvq4dfz.js";import{Ka as N,La as U,Ra as L,Sa as zJ,Wa as w,eb as LJ,ib as JJ,jb as j,kb as XJ,pb as n,qb as TJ,rb as R,sb as v,tb as p,ub as PJ}from"./chunk-sqnzgty6.js";class S{constructor(){this._maxTextures=0}contextChange(J){let Q=new R({uTransformMatrix:{value:new L,type:"mat3x3<f32>"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uRound:{value:0,type:"f32"}});this._maxTextures=J.limits.maxBatchableTextures;let X=B({name:"graphics",bits:[KJ,NJ(this._maxTextures),ZJ,h]});this.shader=new v({gpuProgram:X,resources:{localUniforms:Q}})}execute(J,Q){let X=Q.context,Y=X.customShader||this.shader,$=J.renderer,q=$.graphicsContext,{batcher:H,instructions:F}=q.getContextRenderData(X),K=$.encoder;K.setGeometry(H.geometry,Y.gpuProgram);let z=$.globalUniforms.bindGroup;K.setBindGroup(0,z,Y.gpuProgram);let V=$.renderPipes.uniformBatch.getUniformBindGroup(Y.resources.localUniforms,!0);K.setBindGroup(2,V,Y.gpuProgram);let _=F.instructions,Z=null;for(let O=0;O<F.instructionSize;O++){let W=_[O];if(W.topology!==Z)Z=W.topology,K.setPipelineFromGeometryProgramAndState(H.geometry,Y.gpuProgram,J.state,W.topology);if(Y.groups[1]=W.bindGroup,!W.gpuBindGroup){let M=W.textures;W.bindGroup=E(M.textures,M.count,this._maxTextures),W.gpuBindGroup=$.bindGroup.getBindGroup(W.bindGroup,Y.gpuProgram,1)}K.setBindGroup(1,W.bindGroup,Y.gpuProgram),K.renderPassEncoder.drawIndexed(W.size,1,W.start)}}destroy(){this.shader.destroy(!0),this.shader=null}}S.extension={type:[N.WebGPUPipesAdaptor],name:"graphics"};class G{init(){let J=B({name:"mesh",bits:[VJ,_J,h]});this._shader=new v({gpuProgram:J,resources:{uTexture:JJ.EMPTY._source,uSampler:JJ.EMPTY._source.style,textureUniforms:{uTextureMatrix:{type:"mat3x3<f32>",value:new L}}}})}execute(J,Q){let X=J.renderer,Y=Q._shader;if(!Y)Y=this._shader,Y.groups[2]=X.texture.getTextureBindGroup(Q.texture);else if(!Y.gpuProgram){w("Mesh shader has no gpuProgram",Q.shader);return}let $=Y.gpuProgram;if($.autoAssignGlobalUniforms)Y.groups[0]=X.globalUniforms.bindGroup;if($.autoAssignLocalUniforms){let q=J.localUniforms;Y.groups[1]=X.renderPipes.uniformBatch.getUniformBindGroup(q,!0)}X.encoder.draw({geometry:Q._geometry,shader:Y,state:Q.state})}destroy(){this._shader.destroy(!0),this._shader=null}}G.extension={type:[N.WebGPUPipesAdaptor],name:"mesh"};var b=T.for2d();class x{start(J,Q,X){let Y=J.renderer,$=Y.encoder,q=X.gpuProgram;this._shader=X,this._geometry=Q,$.setGeometry(Q,q),b.blendMode="normal",Y.pipeline.getPipeline(Q,q,b);let H=Y.globalUniforms.bindGroup;$.resetBindGroup(1),$.setBindGroup(0,H,q)}execute(J,Q){let X=this._shader.gpuProgram,Y=J.renderer,$=Y.encoder;if(!Q.bindGroup){let F=Q.textures;Q.bindGroup=E(F.textures,F.count,Y.limits.maxBatchableTextures)}b.blendMode=Q.blendMode;let q=Y.bindGroup.getBindGroup(Q.bindGroup,X,1),H=Y.pipeline.getPipeline(this._geometry,X,b,Q.topology);Q.bindGroup._touch(Y.gc.now,Y.tick),$.setPipeline(H),$.renderPassEncoder.setBindGroup(1,q),$.renderPassEncoder.drawIndexed(Q.size,1,Q.start)}}x.extension={type:[N.WebGPUPipesAdaptor],name:"batch"};class y{constructor(J){this._hash=Object.create(null),this._renderer=J}contextChange(J){this._gpu=J}getBindGroup(J,Q,X){return J._updateKey(),this._hash[J._key]||this._createBindGroup(J,Q,X)}_createBindGroup(J,Q,X){let Y=this._gpu.device,$=Q.layout[X],q=[],H=this._renderer;for(let z in $){let V=J.resources[z]??J.resources[$[z]],_;if(V._resourceType==="uniformGroup"){let Z=V;H.ubo.updateUniformGroup(Z);let O=Z.buffer;_={buffer:H.buffer.getGPUBuffer(O),offset:0,size:O.descriptor.size}}else if(V._resourceType==="buffer"){let Z=V;_={buffer:H.buffer.getGPUBuffer(Z),offset:0,size:Z.descriptor.size}}else if(V._resourceType==="bufferResource"){let Z=V;_={buffer:H.buffer.getGPUBuffer(Z.buffer),offset:Z.offset,size:Z.size}}else if(V._resourceType==="textureSampler"){let Z=V;_=H.texture.getGpuSampler(Z)}else if(V._resourceType==="textureSource"){let Z=V;_=H.texture.getTextureView(Z)}q.push({binding:$[z],resource:_})}let F=H.shader.getProgramData(Q).bindGroups[X],K=Y.createBindGroup({layout:F,entries:q});return this._hash[J._key]=K,K}destroy(){this._hash=null,this._renderer=null}}y.extension={type:[N.WebGPUSystem],name:"bindGroup"};class WJ{constructor(J){this.gpuBuffer=J}destroy(){this.gpuBuffer.destroy(),this.gpuBuffer=null}}class f{constructor(J){this._renderer=J,this._managedBuffers=new l({renderer:J,type:"resource",onUnload:this.onBufferUnload.bind(this),name:"gpuBuffer"})}contextChange(J){this._gpu=J}getGPUBuffer(J){return J._gcLastUsed=this._renderer.gc.now,J._gpuData[this._renderer.uid]?.gpuBuffer||this.createGPUBuffer(J)}updateBuffer(J){let Q=this.getGPUBuffer(J),X=J.data;if(J._updateID&&X)J._updateID=0,this._gpu.device.queue.writeBuffer(Q,0,X.buffer,0,(J._updateSize||X.byteLength)+3&-4);return Q}destroyAll(){this._managedBuffers.removeAll()}onBufferUnload(J){J.off("update",this.updateBuffer,this),J.off("change",this.onBufferChange,this)}createGPUBuffer(J){let Q=this._gpu.device.createBuffer(J.descriptor);if(J._updateID=0,J._resourceId=zJ("resource"),J.data)OJ(J.data.buffer,Q.getMappedRange(),J.data.byteOffset,J.data.byteLength),Q.unmap();if(J._gpuData[this._renderer.uid]=new WJ(Q),this._managedBuffers.add(J))J.on("update",this.updateBuffer,this),J.on("change",this.onBufferChange,this);return Q}onBufferChange(J){this._managedBuffers.remove(J),J._updateID=0,this.createGPUBuffer(J)}destroy(){this._managedBuffers.destroy(),this._renderer=null,this._gpu=null}}f.extension={type:[N.WebGPUSystem],name:"buffer"};class m{constructor(J){this._colorMaskCache=15,this._renderer=J}setMask(J){if(this._colorMaskCache===J)return;this._colorMaskCache=J,this._renderer.pipeline.setColorMask(J)}destroy(){this._renderer=null,this._colorMaskCache=null}}m.extension={type:[N.WebGPUSystem],name:"colorMask"};class D{constructor(J){this._renderer=J}async init(J){if(this._initPromise)return this._initPromise;return this._initPromise=(J.gpu?Promise.resolve(J.gpu):this._createDeviceAndAdaptor(J)).then((Q)=>{this.gpu=Q,this._renderer.runners.contextChange.emit(this.gpu)}),this._initPromise}contextChange(J){this._renderer.gpu=J}async _createDeviceAndAdaptor(J){let Q=await j.get().getNavigator().gpu.requestAdapter({powerPreference:J.powerPreference,forceFallbackAdapter:J.forceFallbackAdapter}),X=["texture-compression-bc","texture-compression-astc","texture-compression-etc2"].filter(($)=>Q.features.has($)),Y=await Q.requestDevice({requiredFeatures:X});return{adapter:Q,device:Y}}destroy(){this.gpu=null,this._renderer=null}}D.extension={type:[N.WebGPUSystem],name:"device"};D.defaultOptions={powerPreference:void 0,forceFallbackAdapter:!1};class g{constructor(J){this._boundBindGroup=Object.create(null),this._boundVertexBuffer=Object.create(null),this._renderer=J}renderStart(){this.commandFinished=new Promise((J)=>{this._resolveCommandFinished=J}),this.commandEncoder=this._renderer.gpu.device.createCommandEncoder()}beginRenderPass(J){this.endRenderPass(),this._clearCache(),this.renderPassEncoder=this.commandEncoder.beginRenderPass(J.descriptor)}endRenderPass(){if(this.renderPassEncoder)this.renderPassEncoder.end();this.renderPassEncoder=null}setViewport(J){this.renderPassEncoder.setViewport(J.x,J.y,J.width,J.height,0,1)}setPipelineFromGeometryProgramAndState(J,Q,X,Y){let $=this._renderer.pipeline.getPipeline(J,Q,X,Y);this.setPipeline($)}setPipeline(J){if(this._boundPipeline===J)return;this._boundPipeline=J,this.renderPassEncoder.setPipeline(J)}_setVertexBuffer(J,Q){if(this._boundVertexBuffer[J]===Q)return;this._boundVertexBuffer[J]=Q,this.renderPassEncoder.setVertexBuffer(J,this._renderer.buffer.updateBuffer(Q))}_setIndexBuffer(J){if(this._boundIndexBuffer===J)return;this._boundIndexBuffer=J;let Q=J.data.BYTES_PER_ELEMENT===2?"uint16":"uint32";this.renderPassEncoder.setIndexBuffer(this._renderer.buffer.updateBuffer(J),Q)}resetBindGroup(J){this._boundBindGroup[J]=null}setBindGroup(J,Q,X){if(this._boundBindGroup[J]===Q)return;this._boundBindGroup[J]=Q,Q._touch(this._renderer.gc.now,this._renderer.tick);let Y=this._renderer.bindGroup.getBindGroup(Q,X,J);this.renderPassEncoder.setBindGroup(J,Y)}setGeometry(J,Q){let X=this._renderer.pipeline.getBufferNamesToBind(J,Q);for(let Y in X)this._setVertexBuffer(parseInt(Y,10),J.attributes[X[Y]].buffer);if(J.indexBuffer)this._setIndexBuffer(J.indexBuffer)}_setShaderBindGroups(J,Q){for(let X in J.groups){let Y=J.groups[X];if(!Q)this._syncBindGroup(Y);this.setBindGroup(X,Y,J.gpuProgram)}}_syncBindGroup(J){for(let Q in J.resources){let X=J.resources[Q];if(X.isUniformGroup)this._renderer.ubo.updateUniformGroup(X)}}draw(J){let{geometry:Q,shader:X,state:Y,topology:$,size:q,start:H,instanceCount:F,skipSync:K}=J;if(this.setPipelineFromGeometryProgramAndState(Q,X.gpuProgram,Y,$),this.setGeometry(Q,X.gpuProgram),this._setShaderBindGroups(X,K),Q.indexBuffer)this.renderPassEncoder.drawIndexed(q||Q.indexBuffer.data.length,F??Q.instanceCount,H||0);else this.renderPassEncoder.draw(q||Q.getSize(),F??Q.instanceCount,H||0)}finishRenderPass(){if(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(){let J=this._renderer.renderTarget.adaptor.getDescriptor(this._renderer.renderTarget.renderTarget,!1,[0,0,0,1],this._renderer.renderTarget.mipLevel,this._renderer.renderTarget.layer);this.renderPassEncoder=this.commandEncoder.beginRenderPass(J);let Q=this._boundPipeline,X={...this._boundVertexBuffer},Y=this._boundIndexBuffer,$={...this._boundBindGroup};this._clearCache();let q=this._renderer.renderTarget.viewport;this.renderPassEncoder.setViewport(q.x,q.y,q.width,q.height,0,1),this.setPipeline(Q);for(let H in X)this._setVertexBuffer(H,X[H]);for(let H in $)this.setBindGroup(H,$[H],null);this._setIndexBuffer(Y)}_clearCache(){for(let J=0;J<16;J++)this._boundBindGroup[J]=null,this._boundVertexBuffer[J]=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(J){this._gpu=J}}g.extension={type:[N.WebGPUSystem],name:"encoder",priority:1};class c{constructor(J){this._renderer=J}contextChange(){this.maxTextures=this._renderer.device.gpu.device.limits.maxSampledTexturesPerShaderStage,this.maxBatchableTextures=this.maxTextures}destroy(){}}c.extension={type:[N.WebGPUSystem],name:"limits"};class d{constructor(J){this._renderTargetStencilState=Object.create(null),this._renderer=J,J.renderTarget.onRenderTargetChange.add(this)}onRenderTargetChange(J){let Q=this._renderTargetStencilState[J.uid];if(!Q)Q=this._renderTargetStencilState[J.uid]={stencilMode:P.DISABLED,stencilReference:0};this._activeRenderTarget=J,this.setStencilMode(Q.stencilMode,Q.stencilReference)}setStencilMode(J,Q){let X=this._renderTargetStencilState[this._activeRenderTarget.uid];X.stencilMode=J,X.stencilReference=Q;let Y=this._renderer;Y.pipeline.setStencilMode(J),Y.encoder.renderPassEncoder.setStencilReference(Q)}destroy(){this._renderer.renderTarget.onRenderTargetChange.remove(this),this._renderer=null,this._activeRenderTarget=null,this._renderTargetStencilState=null}}d.extension={type:[N.WebGPUSystem],name:"stencil"};var A={i32:{align:4,size:4},u32:{align:4,size:4},f32:{align:4,size:4},f16:{align:2,size:2},"vec2<i32>":{align:8,size:8},"vec2<u32>":{align:8,size:8},"vec2<f32>":{align:8,size:8},"vec2<f16>":{align:4,size:4},"vec3<i32>":{align:16,size:12},"vec3<u32>":{align:16,size:12},"vec3<f32>":{align:16,size:12},"vec3<f16>":{align:8,size:6},"vec4<i32>":{align:16,size:16},"vec4<u32>":{align:16,size:16},"vec4<f32>":{align:16,size:16},"vec4<f16>":{align:8,size:8},"mat2x2<f32>":{align:8,size:16},"mat2x2<f16>":{align:4,size:8},"mat3x2<f32>":{align:8,size:24},"mat3x2<f16>":{align:4,size:12},"mat4x2<f32>":{align:8,size:32},"mat4x2<f16>":{align:4,size:16},"mat2x3<f32>":{align:16,size:32},"mat2x3<f16>":{align:8,size:16},"mat3x3<f32>":{align:16,size:48},"mat3x3<f16>":{align:8,size:24},"mat4x3<f32>":{align:16,size:64},"mat4x3<f16>":{align:8,size:32},"mat2x4<f32>":{align:16,size:32},"mat2x4<f16>":{align:8,size:16},"mat3x4<f32>":{align:16,size:48},"mat3x4<f16>":{align:8,size:24},"mat4x4<f32>":{align:16,size:64},"mat4x4<f16>":{align:8,size:32}};function IJ(J){let Q=J.map((Y)=>({data:Y,offset:0,size:0})),X=0;for(let Y=0;Y<Q.length;Y++){let $=Q[Y],q=A[$.data.type].size,H=A[$.data.type].align;if(!A[$.data.type])throw Error(`[Pixi.js] WebGPU UniformBuffer: Unknown type ${$.data.type}`);if($.data.size>1)q=Math.max(q,H)*$.data.size;X=Math.ceil(X/H)*H,$.size=q,$.offset=X,X+=q}return X=Math.ceil(X/16)*16,{uboElements:Q,size:X}}function CJ(J,Q){let{size:X,align:Y}=A[J.data.type],$=(Y-X)/4,q=J.data.type.indexOf("i32")>=0?"dataInt32":"data";return`
|
|
2
2
|
v = uv.${J.data.name};
|
|
3
3
|
${Q!==0?`offset += ${Q};`:""}
|
|
4
4
|
|
|
@@ -38,4 +38,4 @@ import{i as VJ,j as ZJ,l as _J,n as DJ,p as jJ,r as wJ,s as AJ,t as UJ,u as MJ}f
|
|
|
38
38
|
fn fragmentMain(@location(0) texCoord : vec2<f32>) -> @location(0) vec4<f32> {
|
|
39
39
|
return textureSample(img, imgSampler, texCoord);
|
|
40
40
|
}
|
|
41
|
-
`});Q=this.device.createRenderPipeline({layout:"auto",vertex:{module:this.mipmapShaderModule,entryPoint:"vertexMain"},fragment:{module:this.mipmapShaderModule,entryPoint:"fragmentMain",targets:[{format:J}]}}),this.pipelines[J]=Q}return Q}generateMipmap(J){let Q=this._getMipmapPipeline(J.format);if(J.dimension==="3d"||J.dimension==="1d")throw Error("Generating mipmaps for non-2d textures is currently unsupported!");let X=J,Y=J.depthOrArrayLayers||1,$=J.usage&GPUTextureUsage.RENDER_ATTACHMENT;if(!$){let F={size:{width:Math.ceil(J.width/2),height:Math.ceil(J.height/2),depthOrArrayLayers:Y},format:J.format,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC|GPUTextureUsage.RENDER_ATTACHMENT,mipLevelCount:J.mipLevelCount-1};X=this.device.createTexture(F)}let q=this.device.createCommandEncoder({}),H=Q.getBindGroupLayout(0);for(let F=0;F<Y;++F){let K=J.createView({baseMipLevel:0,mipLevelCount:1,dimension:"2d",baseArrayLayer:F,arrayLayerCount:1}),z=$?1:0;for(let V=1;V<J.mipLevelCount;++V){let _=X.createView({baseMipLevel:z++,mipLevelCount:1,dimension:"2d",baseArrayLayer:F,arrayLayerCount:1}),Z=q.beginRenderPass({colorAttachments:[{view:_,storeOp:"store",loadOp:"clear",clearValue:{r:0,g:0,b:0,a:0}}]}),O=this.device.createBindGroup({layout:H,entries:[{binding:0,resource:this.sampler},{binding:1,resource:K}]});Z.setPipeline(Q),Z.setBindGroup(0,O),Z.draw(3,1,0,0),Z.end(),K=_}}if(!$){let F={width:Math.ceil(J.width/2),height:Math.ceil(J.height/2),depthOrArrayLayers:Y};for(let K=1;K<J.mipLevelCount;++K)q.copyTextureToTexture({texture:X,mipLevel:K-1},{texture:J,mipLevel:K},F),F.width=Math.ceil(F.width/2),F.height=Math.ceil(F.height/2)}if(this.device.queue.submit([q.finish()]),!$)X.destroy();return J}}class bJ{constructor(J){this.textureView=null,this.gpuTexture=J}destroy(){this.gpuTexture.destroy(),this.textureView=null,this.gpuTexture=null}}class e{constructor(J){this._gpuSamplers=Object.create(null),this._bindGroupHash=Object.create(null),this._renderer=J,J.gc.addCollection(this,"_bindGroupHash","hash"),this._managedTextures=new l({renderer:J,type:"resource",onUnload:this.onSourceUnload.bind(this),name:"gpuTextureSource"});let Q={image:r,buffer:EJ,video:GJ,compressed:BJ};this._uploads={...Q,cube:SJ(Q)}}get managedTextures(){return Object.values(this._managedTextures.items)}contextChange(J){this._gpu=J}initSource(J){return J._gpuData[this._renderer.uid]?.gpuTexture||this._initSource(J)}_initSource(J){if(J.autoGenerateMipmaps){let K=Math.max(J.pixelWidth,J.pixelHeight);J.mipLevelCount=Math.floor(Math.log2(K))+1}let Q=GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST;if(J.uploadMethodId!=="compressed")Q|=GPUTextureUsage.RENDER_ATTACHMENT,Q|=GPUTextureUsage.COPY_SRC;let X=qJ[J.format]||{blockBytes:4,blockWidth:1,blockHeight:1},Y=Math.ceil(J.pixelWidth/X.blockWidth)*X.blockWidth,$=Math.ceil(J.pixelHeight/X.blockHeight)*X.blockHeight,q={label:J.label,size:{width:Y,height:$,depthOrArrayLayers:J.arrayLayerCount},format:J.format,sampleCount:J.sampleCount,mipLevelCount:J.mipLevelCount,dimension:J.dimension,usage:Q},H=this._gpu.device.createTexture(q);if(J._gpuData[this._renderer.uid]=new bJ(H),this._managedTextures.add(J))J.on("update",this.onSourceUpdate,this),J.on("resize",this.onSourceResize,this),J.on("updateMipmaps",this.onUpdateMipmaps,this);return this.onSourceUpdate(J),H}onSourceUpdate(J){let Q=this.getGpuSource(J);if(!Q)return;if(this._uploads[J.uploadMethodId])this._uploads[J.uploadMethodId].upload(J,Q,this._gpu);if(J.autoGenerateMipmaps&&J.mipLevelCount>1)this.onUpdateMipmaps(J)}onUpdateMipmaps(J){if(!this._mipmapGenerator)this._mipmapGenerator=new HJ(this._gpu.device);let Q=this.getGpuSource(J);this._mipmapGenerator.generateMipmap(Q)}onSourceUnload(J){J.off("update",this.onSourceUpdate,this),J.off("resize",this.onSourceResize,this),J.off("updateMipmaps",this.onUpdateMipmaps,this)}onSourceResize(J){J._gcLastUsed=this._renderer.gc.now;let Q=J._gpuData[this._renderer.uid],X=Q?.gpuTexture;if(!X)this.initSource(J);else if(X.width!==J.pixelWidth||X.height!==J.pixelHeight)Q.destroy(),this._bindGroupHash[J.uid]=null,J._gpuData[this._renderer.uid]=null,this.initSource(J)}_initSampler(J){return this._gpuSamplers[J._resourceId]=this._gpu.device.createSampler(J),this._gpuSamplers[J._resourceId]}getGpuSampler(J){return this._gpuSamplers[J._resourceId]||this._initSampler(J)}getGpuSource(J){return J._gcLastUsed=this._renderer.gc.now,J._gpuData[this._renderer.uid]?.gpuTexture||this.initSource(J)}getTextureBindGroup(J){return this._bindGroupHash[J.uid]||this._createTextureBindGroup(J)}_createTextureBindGroup(J){let Q=J.source;return this._bindGroupHash[J.uid]=new n({0:Q,1:Q.style,2:new R({uTextureMatrix:{type:"mat3x3<f32>",value:J.textureMatrix.mapCoord}})}),this._bindGroupHash[J.uid]}getTextureView(J){let Q=J.source;Q._gcLastUsed=this._renderer.gc.now;let X=Q._gpuData[this._renderer.uid];if(!X)this.initSource(Q),X=Q._gpuData[this._renderer.uid];return X.textureView||(X.textureView=X.gpuTexture.createView({dimension:Q.viewDimension})),X.textureView}generateCanvas(J){let Q=this._renderer,X=Q.gpu.device.createCommandEncoder(),Y=j.get().createCanvas();Y.width=J.source.pixelWidth,Y.height=J.source.pixelHeight;let $=Y.getContext("webgpu");return $.configure({device:Q.gpu.device,usage:GPUTextureUsage.COPY_DST|GPUTextureUsage.COPY_SRC,format:j.get().getNavigator().gpu.getPreferredCanvasFormat(),alphaMode:"premultiplied"}),X.copyTextureToTexture({texture:Q.texture.getGpuSource(J.source),origin:{x:0,y:0}},{texture:$.getCurrentTexture()},{width:Y.width,height:Y.height}),Q.gpu.device.queue.submit([X.finish()]),Y}getPixels(J){let Q=this.generateCanvas(J),X=FJ.getOptimalCanvasAndContext(Q.width,Q.height),Y=X.context;Y.drawImage(Q,0,0);let{width:$,height:q}=Q,H=Y.getImageData(0,0,$,q),F=new Uint8ClampedArray(H.data.buffer);return FJ.returnCanvasAndContext(X),{pixels:F,width:$,height:q}}destroy(){this._managedTextures.destroy();for(let J of Object.keys(this._bindGroupHash)){let Q=Number(J);this._bindGroupHash[Q]?.destroy()}this._renderer=null,this._gpu=null,this._mipmapGenerator=null,this._gpuSamplers=null,this._bindGroupHash=null}}e.extension={type:[N.WebGPUSystem],name:"texture"};var nJ=[...yJ,i,g,D,c,f,e,u,o,t,a,m,d,y],sJ=[...lJ,s],aJ=[x,G,S],fJ=[],mJ=[],gJ=[];U.handleByNamedList(N.WebGPUSystem,fJ);U.handleByNamedList(N.WebGPUPipes,mJ);U.handleByNamedList(N.WebGPUPipesAdaptor,gJ);U.add(...nJ,...sJ,...aJ);class uJ extends xJ{constructor(){let J={name:"webgpu",type:TJ.WEBGPU,systems:fJ,renderPipes:mJ,renderPipeAdaptors:gJ};super(J)}}export{uJ as
|
|
41
|
+
`});Q=this.device.createRenderPipeline({layout:"auto",vertex:{module:this.mipmapShaderModule,entryPoint:"vertexMain"},fragment:{module:this.mipmapShaderModule,entryPoint:"fragmentMain",targets:[{format:J}]}}),this.pipelines[J]=Q}return Q}generateMipmap(J){let Q=this._getMipmapPipeline(J.format);if(J.dimension==="3d"||J.dimension==="1d")throw Error("Generating mipmaps for non-2d textures is currently unsupported!");let X=J,Y=J.depthOrArrayLayers||1,$=J.usage&GPUTextureUsage.RENDER_ATTACHMENT;if(!$){let F={size:{width:Math.ceil(J.width/2),height:Math.ceil(J.height/2),depthOrArrayLayers:Y},format:J.format,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC|GPUTextureUsage.RENDER_ATTACHMENT,mipLevelCount:J.mipLevelCount-1};X=this.device.createTexture(F)}let q=this.device.createCommandEncoder({}),H=Q.getBindGroupLayout(0);for(let F=0;F<Y;++F){let K=J.createView({baseMipLevel:0,mipLevelCount:1,dimension:"2d",baseArrayLayer:F,arrayLayerCount:1}),z=$?1:0;for(let V=1;V<J.mipLevelCount;++V){let _=X.createView({baseMipLevel:z++,mipLevelCount:1,dimension:"2d",baseArrayLayer:F,arrayLayerCount:1}),Z=q.beginRenderPass({colorAttachments:[{view:_,storeOp:"store",loadOp:"clear",clearValue:{r:0,g:0,b:0,a:0}}]}),O=this.device.createBindGroup({layout:H,entries:[{binding:0,resource:this.sampler},{binding:1,resource:K}]});Z.setPipeline(Q),Z.setBindGroup(0,O),Z.draw(3,1,0,0),Z.end(),K=_}}if(!$){let F={width:Math.ceil(J.width/2),height:Math.ceil(J.height/2),depthOrArrayLayers:Y};for(let K=1;K<J.mipLevelCount;++K)q.copyTextureToTexture({texture:X,mipLevel:K-1},{texture:J,mipLevel:K},F),F.width=Math.ceil(F.width/2),F.height=Math.ceil(F.height/2)}if(this.device.queue.submit([q.finish()]),!$)X.destroy();return J}}class bJ{constructor(J){this.textureView=null,this.gpuTexture=J}destroy(){this.gpuTexture.destroy(),this.textureView=null,this.gpuTexture=null}}class e{constructor(J){this._gpuSamplers=Object.create(null),this._bindGroupHash=Object.create(null),this._renderer=J,J.gc.addCollection(this,"_bindGroupHash","hash"),this._managedTextures=new l({renderer:J,type:"resource",onUnload:this.onSourceUnload.bind(this),name:"gpuTextureSource"});let Q={image:r,buffer:EJ,video:GJ,compressed:BJ};this._uploads={...Q,cube:SJ(Q)}}get managedTextures(){return Object.values(this._managedTextures.items)}contextChange(J){this._gpu=J}initSource(J){return J._gpuData[this._renderer.uid]?.gpuTexture||this._initSource(J)}_initSource(J){if(J.autoGenerateMipmaps){let K=Math.max(J.pixelWidth,J.pixelHeight);J.mipLevelCount=Math.floor(Math.log2(K))+1}let Q=GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST;if(J.uploadMethodId!=="compressed")Q|=GPUTextureUsage.RENDER_ATTACHMENT,Q|=GPUTextureUsage.COPY_SRC;let X=qJ[J.format]||{blockBytes:4,blockWidth:1,blockHeight:1},Y=Math.ceil(J.pixelWidth/X.blockWidth)*X.blockWidth,$=Math.ceil(J.pixelHeight/X.blockHeight)*X.blockHeight,q={label:J.label,size:{width:Y,height:$,depthOrArrayLayers:J.arrayLayerCount},format:J.format,sampleCount:J.sampleCount,mipLevelCount:J.mipLevelCount,dimension:J.dimension,usage:Q},H=this._gpu.device.createTexture(q);if(J._gpuData[this._renderer.uid]=new bJ(H),this._managedTextures.add(J))J.on("update",this.onSourceUpdate,this),J.on("resize",this.onSourceResize,this),J.on("updateMipmaps",this.onUpdateMipmaps,this);return this.onSourceUpdate(J),H}onSourceUpdate(J){let Q=this.getGpuSource(J);if(!Q)return;if(this._uploads[J.uploadMethodId])this._uploads[J.uploadMethodId].upload(J,Q,this._gpu);if(J.autoGenerateMipmaps&&J.mipLevelCount>1)this.onUpdateMipmaps(J)}onUpdateMipmaps(J){if(!this._mipmapGenerator)this._mipmapGenerator=new HJ(this._gpu.device);let Q=this.getGpuSource(J);this._mipmapGenerator.generateMipmap(Q)}onSourceUnload(J){J.off("update",this.onSourceUpdate,this),J.off("resize",this.onSourceResize,this),J.off("updateMipmaps",this.onUpdateMipmaps,this)}onSourceResize(J){J._gcLastUsed=this._renderer.gc.now;let Q=J._gpuData[this._renderer.uid],X=Q?.gpuTexture;if(!X)this.initSource(J);else if(X.width!==J.pixelWidth||X.height!==J.pixelHeight)Q.destroy(),this._bindGroupHash[J.uid]=null,J._gpuData[this._renderer.uid]=null,this.initSource(J)}_initSampler(J){return this._gpuSamplers[J._resourceId]=this._gpu.device.createSampler(J),this._gpuSamplers[J._resourceId]}getGpuSampler(J){return this._gpuSamplers[J._resourceId]||this._initSampler(J)}getGpuSource(J){return J._gcLastUsed=this._renderer.gc.now,J._gpuData[this._renderer.uid]?.gpuTexture||this.initSource(J)}getTextureBindGroup(J){return this._bindGroupHash[J.uid]||this._createTextureBindGroup(J)}_createTextureBindGroup(J){let Q=J.source;return this._bindGroupHash[J.uid]=new n({0:Q,1:Q.style,2:new R({uTextureMatrix:{type:"mat3x3<f32>",value:J.textureMatrix.mapCoord}})}),this._bindGroupHash[J.uid]}getTextureView(J){let Q=J.source;Q._gcLastUsed=this._renderer.gc.now;let X=Q._gpuData[this._renderer.uid];if(!X)this.initSource(Q),X=Q._gpuData[this._renderer.uid];return X.textureView||(X.textureView=X.gpuTexture.createView({dimension:Q.viewDimension})),X.textureView}generateCanvas(J){let Q=this._renderer,X=Q.gpu.device.createCommandEncoder(),Y=j.get().createCanvas();Y.width=J.source.pixelWidth,Y.height=J.source.pixelHeight;let $=Y.getContext("webgpu");return $.configure({device:Q.gpu.device,usage:GPUTextureUsage.COPY_DST|GPUTextureUsage.COPY_SRC,format:j.get().getNavigator().gpu.getPreferredCanvasFormat(),alphaMode:"premultiplied"}),X.copyTextureToTexture({texture:Q.texture.getGpuSource(J.source),origin:{x:0,y:0}},{texture:$.getCurrentTexture()},{width:Y.width,height:Y.height}),Q.gpu.device.queue.submit([X.finish()]),Y}getPixels(J){let Q=this.generateCanvas(J),X=FJ.getOptimalCanvasAndContext(Q.width,Q.height),Y=X.context;Y.drawImage(Q,0,0);let{width:$,height:q}=Q,H=Y.getImageData(0,0,$,q),F=new Uint8ClampedArray(H.data.buffer);return FJ.returnCanvasAndContext(X),{pixels:F,width:$,height:q}}destroy(){this._managedTextures.destroy();for(let J of Object.keys(this._bindGroupHash)){let Q=Number(J);this._bindGroupHash[Q]?.destroy()}this._renderer=null,this._gpu=null,this._mipmapGenerator=null,this._gpuSamplers=null,this._bindGroupHash=null}}e.extension={type:[N.WebGPUSystem],name:"texture"};var nJ=[...yJ,i,g,D,c,f,e,u,o,t,a,m,d,y],sJ=[...lJ,s],aJ=[x,G,S],fJ=[],mJ=[],gJ=[];U.handleByNamedList(N.WebGPUSystem,fJ);U.handleByNamedList(N.WebGPUPipes,mJ);U.handleByNamedList(N.WebGPUPipesAdaptor,gJ);U.add(...nJ,...sJ,...aJ);class uJ extends xJ{constructor(){let J={name:"webgpu",type:TJ.WEBGPU,systems:fJ,renderPipes:mJ,renderPipeAdaptors:gJ};super(J)}}export{uJ as h};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
2
|
-
export{L as
|
|
1
|
+
import{Xa as I,bb as F,jb as J}from"./chunk-sqnzgty6.js";class K{constructor(f){this._canvasPool=Object.create(null),this.canvasOptions=f||{},this.enableFullScreen=!1}_createCanvasAndContext(f,q){let z=J.get().createCanvas();z.width=f,z.height=q;let B=z.getContext("2d");return{canvas:z,context:B}}getOptimalCanvasAndContext(f,q,z=1){f=Math.ceil(f*z-0.000001),q=Math.ceil(q*z-0.000001),f=F(f),q=F(q);let B=(f<<17)+(q<<1);if(!this._canvasPool[B])this._canvasPool[B]=[];let E=this._canvasPool[B].pop();if(!E)E=this._createCanvasAndContext(f,q);return E}returnCanvasAndContext(f){let q=f.canvas,{width:z,height:B}=q,E=(z<<17)+(B<<1);f.context.resetTransform(),f.context.clearRect(0,0,z,B),this._canvasPool[E].push(f)}clear(){this._canvasPool={}}}var L=new K;I.register(L);
|
|
2
|
+
export{L as ia};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import{$ as _,M as r,_ as b}from"./chunk-w1tshfsy.js";import{Ka as z,Ma as e,Qa as W,Wa as x}from"./chunk-sqnzgty6.js";class D{constructor(Q){if(this._lastTransform="",this._observer=null,this._tickerAttached=!1,this.updateTranslation=()=>{if(!this._canvas)return;let q=this._canvas.getBoundingClientRect(),$=this._canvas.width,J=this._canvas.height,G=q.width/$*this._renderer.resolution,X=q.height/J*this._renderer.resolution,Y=q.left,N=q.top,Z=`translate(${Y}px, ${N}px) scale(${G}, ${X})`;if(Z!==this._lastTransform)this._domElement.style.transform=Z,this._lastTransform=Z},this._domElement=Q.domElement,this._renderer=Q.renderer,globalThis.OffscreenCanvas&&this._renderer.canvas instanceof OffscreenCanvas)return;this._canvas=this._renderer.canvas,this._attachObserver()}get canvas(){return this._canvas}ensureAttached(){if(!this._domElement.parentNode&&this._canvas.parentNode)this._canvas.parentNode.appendChild(this._domElement),this.updateTranslation()}_attachObserver(){if("ResizeObserver"in globalThis){if(this._observer)this._observer.disconnect(),this._observer=null;this._observer=new ResizeObserver((Q)=>{for(let q of Q){if(q.target!==this._canvas)continue;let $=this.canvas.width,J=this.canvas.height,G=q.contentRect.width/$*this._renderer.resolution,X=q.contentRect.height/J*this._renderer.resolution;if(this._lastScaleX!==G||this._lastScaleY!==X)this.updateTranslation(),this._lastScaleX=G,this._lastScaleY=X}}),this._observer.observe(this._canvas)}else if(!this._tickerAttached)_.shared.add(this.updateTranslation,this,b.HIGH)}destroy(){if(this._observer)this._observer.disconnect(),this._observer=null;else if(this._tickerAttached)_.shared.remove(this.updateTranslation);this._domElement=null,this._renderer=null,this._canvas=null,this._tickerAttached=!1,this._lastTransform="",this._lastScaleX=null,this._lastScaleY=null}}class H{constructor(Q){this.bubbles=!0,this.cancelBubble=!0,this.cancelable=!1,this.composed=!1,this.defaultPrevented=!1,this.eventPhase=H.prototype.NONE,this.propagationStopped=!1,this.propagationImmediatelyStopped=!1,this.layer=new W,this.page=new W,this.NONE=0,this.CAPTURING_PHASE=1,this.AT_TARGET=2,this.BUBBLING_PHASE=3,this.manager=Q}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(){if(this.manager&&(!this.path||this.path[this.path.length-1]!==this.target))this.path=this.target?this.manager.propagationPath(this.target):[];return this.path}initEvent(Q,q,$){throw Error("initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}initUIEvent(Q,q,$,J,G){throw Error("initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}preventDefault(){if(this.nativeEvent instanceof Event&&this.nativeEvent.cancelable)this.nativeEvent.preventDefault();this.defaultPrevented=!0}stopImmediatePropagation(){this.propagationImmediatelyStopped=!0}stopPropagation(){this.propagationStopped=!0}}var M=/iPhone/i,f=/iPod/i,g=/iPad/i,u=/\biOS-universal(?:.+)Mac\b/i,k=/\bAndroid(?:.+)Mobile\b/i,h=/Android/i,j=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,A=/Silk/i,R=/Windows Phone/i,E=/\bWindows(?:.+)ARM\b/i,p=/BlackBerry/i,l=/BB10/i,d=/Opera Mini/i,m=/\b(CriOS|Chrome)(?:.+)Mobile/i,s=/Mobile(?:.+)Firefox\b/i,c=function(Q){return typeof Q<"u"&&Q.platform==="MacIntel"&&typeof Q.maxTouchPoints==="number"&&Q.maxTouchPoints>1&&typeof MSStream>"u"};function Qq(Q){return function(q){return q.test(Q)}}function I(Q){var q={userAgent:"",platform:"",maxTouchPoints:0};if(!Q&&typeof navigator<"u")q={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0};else if(typeof Q==="string")q.userAgent=Q;else if(Q&&Q.userAgent)q={userAgent:Q.userAgent,platform:Q.platform,maxTouchPoints:Q.maxTouchPoints||0};var $=q.userAgent,J=$.split("[FBAN");if(typeof J[1]<"u")$=J[0];if(J=$.split("Twitter"),typeof J[1]<"u")$=J[0];var G=Qq($),X={apple:{phone:G(M)&&!G(R),ipod:G(f),tablet:!G(M)&&(G(g)||c(q))&&!G(R),universal:G(u),device:(G(M)||G(f)||G(g)||G(u)||c(q))&&!G(R)},amazon:{phone:G(j),tablet:!G(j)&&G(A),device:G(j)||G(A)},android:{phone:!G(R)&&G(j)||!G(R)&&G(k),tablet:!G(R)&&!G(j)&&!G(k)&&(G(A)||G(h)),device:!G(R)&&(G(j)||G(A)||G(k)||G(h))||G(/\bokhttp\b/i)},windows:{phone:G(R),tablet:G(E),device:G(R)||G(E)},other:{blackberry:G(p),blackberry10:G(l),opera:G(d),firefox:G(s),chrome:G(m),device:G(p)||G(l)||G(d)||G(s)||G(m)},any:!1,phone:!1,tablet:!1};return X.any=X.apple.device||X.android.device||X.windows.device||X.other.device,X.phone=X.apple.phone||X.android.phone||X.windows.phone,X.tablet=X.apple.tablet||X.android.tablet||X.windows.tablet,X}var $q=I.default??I,v=$q(globalThis.navigator);var Jq=9,i=100,Gq=0,Xq=0,a=2,o=1,Yq=-1000,Nq=-1000,Kq=2,P=class Q{constructor(q,$=v){if(this._mobileInfo=$,this.debug=!1,this._activateOnTab=!0,this._deactivateOnMouseMove=!0,this._isActive=!1,this._isMobileAccessibility=!1,this._div=null,this._pools={},this._renderId=0,this._children=[],this._androidUpdateCount=0,this._androidUpdateFrequency=500,this._isRunningTests=!1,this._boundOnKeyDown=this._onKeyDown.bind(this),this._boundOnMouseMove=this._onMouseMove.bind(this),this._hookDiv=null,$.tablet||$.phone)this._createTouchHook();this._renderer=q}get isActive(){return this._isActive}get isMobileAccessibility(){return this._isMobileAccessibility}get hookDiv(){return this._hookDiv}get div(){return this._div}_createTouchHook(){let q=document.createElement("button");q.style.width=`${o}px`,q.style.height=`${o}px`,q.style.position="absolute",q.style.top=`${Yq}px`,q.style.left=`${Nq}px`,q.style.zIndex=Kq.toString(),q.style.backgroundColor="#FF0000",q.title="select to enable accessibility for this content",q.addEventListener("focus",()=>{this._isMobileAccessibility=!0,this._activate(),this._destroyTouchHook()}),document.body.appendChild(q),this._hookDiv=q}_destroyTouchHook(){if(!this._hookDiv)return;document.body.removeChild(this._hookDiv),this._hookDiv=null}_activate(){if(this._isActive)return;if(this._isActive=!0,!this._div)this._div=document.createElement("div"),this._div.style.position="absolute",this._div.style.top=`${Gq}px`,this._div.style.left=`${Xq}px`,this._div.style.pointerEvents="none",this._div.style.zIndex=a.toString(),this._canvasObserver=new D({domElement:this._div,renderer:this._renderer});if(this._activateOnTab)globalThis.addEventListener("keydown",this._boundOnKeyDown,!1);if(this._deactivateOnMouseMove)globalThis.document.addEventListener("mousemove",this._boundOnMouseMove,!0);let q=this._renderer.view.canvas;if(!q.parentNode){let $=new MutationObserver(()=>{if(q.parentNode)$.disconnect(),this._canvasObserver.ensureAttached(),this._initAccessibilitySetup()});$.observe(document.body,{childList:!0,subtree:!0})}else this._canvasObserver.ensureAttached(),this._initAccessibilitySetup()}_initAccessibilitySetup(){if(this._renderer.runners.postrender.add(this),this._renderer.lastObjectRendered)this._updateAccessibleObjects(this._renderer.lastObjectRendered)}_deactivate(){if(!this._isActive||this._isMobileAccessibility)return;if(this._isActive=!1,globalThis.document.removeEventListener("mousemove",this._boundOnMouseMove,!0),this._activateOnTab)globalThis.addEventListener("keydown",this._boundOnKeyDown,!1);this._renderer.runners.postrender.remove(this);for(let q of this._children){if(q._accessibleDiv?.parentNode)q._accessibleDiv.parentNode.removeChild(q._accessibleDiv),q._accessibleDiv=null;q._accessibleActive=!1}for(let q in this._pools)this._pools[q].forEach((J)=>{if(J.parentNode)J.parentNode.removeChild(J)}),delete this._pools[q];if(this._div?.parentNode)this._div.parentNode.removeChild(this._div);this._pools={},this._children=[]}_updateAccessibleObjects(q){if(!q.visible||!q.accessibleChildren)return;if(q.accessible){if(!q._accessibleActive)this._addChild(q);q._renderId=this._renderId}let $=q.children;if($)for(let J=0;J<$.length;J++)this._updateAccessibleObjects($[J])}init(q){let J={accessibilityOptions:{...Q.defaultOptions,...q?.accessibilityOptions||{}}};if(this.debug=J.accessibilityOptions.debug,this._activateOnTab=J.accessibilityOptions.activateOnTab,this._deactivateOnMouseMove=J.accessibilityOptions.deactivateOnMouseMove,J.accessibilityOptions.enabledByDefault)this._activate();this._renderer.runners.postrender.remove(this)}postrender(){let q=performance.now();if(this._mobileInfo.android.device&&q<this._androidUpdateCount)return;if(this._androidUpdateCount=q+this._androidUpdateFrequency,(!this._renderer.renderingToScreen||!this._renderer.view.canvas)&&!this._isRunningTests)return;let $=new Set;if(this._renderer.lastObjectRendered){this._updateAccessibleObjects(this._renderer.lastObjectRendered);for(let J of this._children)if(J._renderId===this._renderId)$.add(this._children.indexOf(J))}for(let J=this._children.length-1;J>=0;J--){let G=this._children[J];if(!$.has(J)){if(G._accessibleDiv&&G._accessibleDiv.parentNode)G._accessibleDiv.parentNode.removeChild(G._accessibleDiv),this._getPool(G.accessibleType).push(G._accessibleDiv),G._accessibleDiv=null;G._accessibleActive=!1,r(this._children,J,1)}}if(this._renderer.renderingToScreen)this._canvasObserver.ensureAttached();for(let J=0;J<this._children.length;J++){let G=this._children[J];if(!G._accessibleActive||!G._accessibleDiv)continue;let X=G._accessibleDiv,Y=G.hitArea||G.getBounds().rectangle;if(G.hitArea){let N=G.worldTransform;X.style.left=`${N.tx+Y.x*N.a}px`,X.style.top=`${N.ty+Y.y*N.d}px`,X.style.width=`${Y.width*N.a}px`,X.style.height=`${Y.height*N.d}px`}else this._capHitArea(Y),X.style.left=`${Y.x}px`,X.style.top=`${Y.y}px`,X.style.width=`${Y.width}px`,X.style.height=`${Y.height}px`}this._renderId++}_updateDebugHTML(q){q.innerHTML=`type: ${q.type}</br> title : ${q.title}</br> tabIndex: ${q.tabIndex}`}_capHitArea(q){if(q.x<0)q.width+=q.x,q.x=0;if(q.y<0)q.height+=q.y,q.y=0;let{width:$,height:J}=this._renderer;if(q.x+q.width>$)q.width=$-q.x;if(q.y+q.height>J)q.height=J-q.y}_addChild(q){let J=this._getPool(q.accessibleType).pop();if(J)J.innerHTML="",J.removeAttribute("title"),J.removeAttribute("aria-label"),J.tabIndex=0;else{if(q.accessibleType==="button")J=document.createElement("button");else if(J=document.createElement(q.accessibleType),J.style.cssText=`
|
|
2
|
+
color: transparent;
|
|
3
|
+
pointer-events: none;
|
|
4
|
+
padding: 0;
|
|
5
|
+
margin: 0;
|
|
6
|
+
border: 0;
|
|
7
|
+
outline: 0;
|
|
8
|
+
background: transparent;
|
|
9
|
+
box-sizing: border-box;
|
|
10
|
+
user-select: none;
|
|
11
|
+
-webkit-user-select: none;
|
|
12
|
+
-moz-user-select: none;
|
|
13
|
+
-ms-user-select: none;
|
|
14
|
+
`,q.accessibleText)J.innerText=q.accessibleText;if(J.style.width=`${i}px`,J.style.height=`${i}px`,J.style.backgroundColor=this.debug?"rgba(255,255,255,0.5)":"transparent",J.style.position="absolute",J.style.zIndex=a.toString(),J.style.borderStyle="none",navigator.userAgent.toLowerCase().includes("chrome"))J.setAttribute("aria-live","off");else J.setAttribute("aria-live","polite");if(navigator.userAgent.match(/rv:.*Gecko\//))J.setAttribute("aria-relevant","additions");else J.setAttribute("aria-relevant","text");J.addEventListener("click",this._onClick.bind(this)),J.addEventListener("focus",this._onFocus.bind(this)),J.addEventListener("focusout",this._onFocusOut.bind(this))}if(J.style.pointerEvents=q.accessiblePointerEvents,J.type=q.accessibleType,q.accessibleTitle&&q.accessibleTitle!==null)J.title=q.accessibleTitle;else if(!q.accessibleHint||q.accessibleHint===null)J.title=`container ${q.tabIndex}`;if(q.accessibleHint&&q.accessibleHint!==null)J.setAttribute("aria-label",q.accessibleHint);if(q.interactive)J.tabIndex=q.tabIndex;else J.tabIndex=0;if(this.debug)this._updateDebugHTML(J);q._accessibleActive=!0,q._accessibleDiv=J,J.container=q,this._children.push(q),this._div.appendChild(q._accessibleDiv)}_dispatchEvent(q,$){let{container:J}=q.target,G=this._renderer.events.rootBoundary,X=Object.assign(new H(G),{target:J});G.rootTarget=this._renderer.lastObjectRendered,$.forEach((Y)=>G.dispatchEvent(X,Y))}_onClick(q){this._dispatchEvent(q,["click","pointertap","tap"])}_onFocus(q){if(!q.target.getAttribute("aria-live"))q.target.setAttribute("aria-live","assertive");this._dispatchEvent(q,["mouseover"])}_onFocusOut(q){if(!q.target.getAttribute("aria-live"))q.target.setAttribute("aria-live","polite");this._dispatchEvent(q,["mouseout"])}_onKeyDown(q){if(q.keyCode!==Jq||!this._activateOnTab)return;this._activate()}_onMouseMove(q){if(q.movementX===0&&q.movementY===0)return;this._deactivate()}destroy(){this._deactivate(),this._destroyTouchHook(),this._canvasObserver?.destroy(),this._canvasObserver=null,this._div=null,this._pools=null,this._children=null,this._renderer=null,this._hookDiv=null,globalThis.removeEventListener("keydown",this._boundOnKeyDown),this._boundOnKeyDown=null,globalThis.document.removeEventListener("mousemove",this._boundOnMouseMove,!0),this._boundOnMouseMove=null}setAccessibilityEnabled(q){if(q)this._activate();else this._deactivate()}_getPool(q){if(!this._pools[q])this._pools[q]=[];return this._pools[q]}};P.extension={type:[z.WebGLSystem,z.WebGPUSystem],name:"accessibility"};P.defaultOptions={enabledByDefault:!1,debug:!1,activateOnTab:!0,deactivateOnMouseMove:!0};var Mq=P;var Pq={accessible:!1,accessibleTitle:null,accessibleHint:null,tabIndex:0,accessibleType:"button",accessibleText:null,accessiblePointerEvents:"auto",accessibleChildren:!0,_accessibleActive:!1,_accessibleDiv:null,_renderId:-1};class n{constructor(Q){this._attachedDomElements=[],this._renderer=Q,this._renderer.runners.postrender.add(this),this._renderer.runners.init.add(this),this._domElement=document.createElement("div"),this._domElement.style.position="absolute",this._domElement.style.top="0",this._domElement.style.left="0",this._domElement.style.pointerEvents="none",this._domElement.style.zIndex="1000"}init(){this._canvasObserver=new D({domElement:this._domElement,renderer:this._renderer})}addRenderable(Q,q){if(!this._attachedDomElements.includes(Q))this._attachedDomElements.push(Q)}updateRenderable(Q){}validateRenderable(Q){return!0}postrender(){let Q=this._attachedDomElements;if(Q.length===0){this._domElement.remove();return}this._canvasObserver.ensureAttached();for(let q=0;q<Q.length;q++){let $=Q[q],J=$.element;if(!$.parent||$.globalDisplayStatus<7)J?.remove(),Q.splice(q,1),q--;else{if(!this._domElement.contains(J))J.style.position="absolute",J.style.pointerEvents="auto",this._domElement.appendChild(J);let{worldTransform:G,_anchor:X}=$,Y=$.width*X.x,N=$.height*X.y;J.style.transformOrigin=`${Y}px ${N}px`,J.style.transform=`matrix(${G.a}, ${G.b}, ${G.c}, ${G.d}, ${G.tx-Y}, ${G.ty-N})`,J.style.opacity=$.groupAlpha.toString()}}}destroy(){this._renderer.runners.postrender.remove(this);for(let Q=0;Q<this._attachedDomElements.length;Q++)this._attachedDomElements[Q].element?.remove();this._attachedDomElements.length=0,this._domElement.remove(),this._canvasObserver.destroy(),this._renderer=null}}n.extension={type:[z.WebGLPipes,z.WebGPUPipes,z.CanvasPipes],name:"dom"};class t{constructor(){this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this._tickerAdded=!1,this._pauseUpdate=!0}init(Q){this.removeTickerListener(),this.events=Q,this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this._tickerAdded=!1,this._pauseUpdate=!0}get pauseUpdate(){return this._pauseUpdate}set pauseUpdate(Q){this._pauseUpdate=Q}addTickerListener(){if(this._tickerAdded||!this.domElement)return;_.system.add(this._tickerUpdate,this,b.INTERACTION),this._tickerAdded=!0}removeTickerListener(){if(!this._tickerAdded)return;_.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}let Q=this.events._rootPointerEvent;if(this.events.supportsTouchEvents&&Q.pointerType==="touch")return;globalThis.document.dispatchEvent(this.events.supportsPointerEvents?new PointerEvent("pointermove",{clientX:Q.clientX,clientY:Q.clientY,pointerType:Q.pointerType,pointerId:Q.pointerId}):new MouseEvent("mousemove",{clientX:Q.clientX,clientY:Q.clientY}))}_tickerUpdate(Q){if(this._deltaTime+=Q.deltaTime,this._deltaTime<this.interactionFrequency)return;this._deltaTime=0,this._update()}destroy(){this.removeTickerListener(),this.events=null,this.domElement=null,this._deltaTime=0,this._didMove=!1,this._tickerAdded=!1,this._pauseUpdate=!0}}var L=new t;class O extends H{constructor(){super(...arguments);this.client=new W,this.movement=new W,this.offset=new W,this.global=new W,this.screen=new W}get clientX(){return this.client.x}get clientY(){return this.client.y}get x(){return this.clientX}get y(){return this.clientY}get movementX(){return this.movement.x}get movementY(){return this.movement.y}get offsetX(){return this.offset.x}get offsetY(){return this.offset.y}get globalX(){return this.global.x}get globalY(){return this.global.y}get screenX(){return this.screen.x}get screenY(){return this.screen.y}getLocalPosition(Q,q,$){return Q.worldTransform.applyInverse($||this.global,q)}getModifierState(Q){return"getModifierState"in this.nativeEvent&&this.nativeEvent.getModifierState(Q)}initMouseEvent(Q,q,$,J,G,X,Y,N,Z,K,C,V,U,F,zq){throw Error("Method not implemented.")}}class B extends O{constructor(){super(...arguments);this.width=0,this.height=0,this.isPrimary=!1}getCoalescedEvents(){if(this.type==="pointermove"||this.type==="mousemove"||this.type==="touchmove")return[this];return[]}getPredictedEvents(){throw Error("getPredictedEvents is not supported!")}}class S extends O{constructor(){super(...arguments);this.DOM_DELTA_PIXEL=0,this.DOM_DELTA_LINE=1,this.DOM_DELTA_PAGE=2}}S.DOM_DELTA_PIXEL=0;S.DOM_DELTA_LINE=1;S.DOM_DELTA_PAGE=2;var Zq=2048,Vq=new W,w=new W;class T{constructor(Q){this.dispatch=new e,this.moveOnAll=!1,this.enableGlobalMoveEvents=!0,this.mappingState={trackingData:{}},this.eventPool=new Map,this._allInteractiveElements=[],this._hitElements=[],this._isPointerMoveEvent=!1,this.rootTarget=Q,this.hitPruneFn=this.hitPruneFn.bind(this),this.hitTestFn=this.hitTestFn.bind(this),this.mapPointerDown=this.mapPointerDown.bind(this),this.mapPointerMove=this.mapPointerMove.bind(this),this.mapPointerOut=this.mapPointerOut.bind(this),this.mapPointerOver=this.mapPointerOver.bind(this),this.mapPointerUp=this.mapPointerUp.bind(this),this.mapPointerUpOutside=this.mapPointerUpOutside.bind(this),this.mapWheel=this.mapWheel.bind(this),this.mappingTable={},this.addEventMapping("pointerdown",this.mapPointerDown),this.addEventMapping("pointermove",this.mapPointerMove),this.addEventMapping("pointerout",this.mapPointerOut),this.addEventMapping("pointerleave",this.mapPointerOut),this.addEventMapping("pointerover",this.mapPointerOver),this.addEventMapping("pointerup",this.mapPointerUp),this.addEventMapping("pointerupoutside",this.mapPointerUpOutside),this.addEventMapping("wheel",this.mapWheel)}addEventMapping(Q,q){if(!this.mappingTable[Q])this.mappingTable[Q]=[];this.mappingTable[Q].push({fn:q,priority:0}),this.mappingTable[Q].sort(($,J)=>$.priority-J.priority)}dispatchEvent(Q,q){Q.propagationStopped=!1,Q.propagationImmediatelyStopped=!1,this.propagate(Q,q),this.dispatch.emit(q||Q.type,Q)}mapEvent(Q){if(!this.rootTarget)return;let q=this.mappingTable[Q.type];if(q)for(let $=0,J=q.length;$<J;$++)q[$].fn(Q);else x(`[EventBoundary]: Event mapping not defined for ${Q.type}`)}hitTest(Q,q){L.pauseUpdate=!0;let J=this._isPointerMoveEvent&&this.enableGlobalMoveEvents?"hitTestMoveRecursive":"hitTestRecursive",G=this[J](this.rootTarget,this.rootTarget.eventMode,Vq.set(Q,q),this.hitTestFn,this.hitPruneFn);return G&&G[0]}propagate(Q,q){if(!Q.target)return;let $=Q.composedPath();Q.eventPhase=Q.CAPTURING_PHASE;for(let J=0,G=$.length-1;J<G;J++)if(Q.currentTarget=$[J],this.notifyTarget(Q,q),Q.propagationStopped||Q.propagationImmediatelyStopped)return;if(Q.eventPhase=Q.AT_TARGET,Q.currentTarget=Q.target,this.notifyTarget(Q,q),Q.propagationStopped||Q.propagationImmediatelyStopped)return;Q.eventPhase=Q.BUBBLING_PHASE;for(let J=$.length-2;J>=0;J--)if(Q.currentTarget=$[J],this.notifyTarget(Q,q),Q.propagationStopped||Q.propagationImmediatelyStopped)return}all(Q,q,$=this._allInteractiveElements){if($.length===0)return;Q.eventPhase=Q.BUBBLING_PHASE;let J=Array.isArray(q)?q:[q];for(let G=$.length-1;G>=0;G--)J.forEach((X)=>{Q.currentTarget=$[G],this.notifyTarget(Q,X)})}propagationPath(Q){let q=[Q];for(let $=0;$<Zq&&(Q!==this.rootTarget&&Q.parent);$++){if(!Q.parent)throw Error("Cannot find propagation path to disconnected target");q.push(Q.parent),Q=Q.parent}return q.reverse(),q}hitTestMoveRecursive(Q,q,$,J,G,X=!1){let Y=!1;if(this._interactivePrune(Q))return null;if(Q.eventMode==="dynamic"||q==="dynamic")L.pauseUpdate=!1;if(Q.interactiveChildren&&Q.children){let K=Q.children;for(let C=K.length-1;C>=0;C--){let V=K[C],U=this.hitTestMoveRecursive(V,this._isInteractive(q)?q:V.eventMode,$,J,G,X||G(Q,$));if(U){if(U.length>0&&!U[U.length-1].parent)continue;let F=Q.isInteractive();if(U.length>0||F){if(F)this._allInteractiveElements.push(Q);U.push(Q)}if(this._hitElements.length===0)this._hitElements=U;Y=!0}}}let N=this._isInteractive(q),Z=Q.isInteractive();if(Z&&Z)this._allInteractiveElements.push(Q);if(X||this._hitElements.length>0)return null;if(Y)return this._hitElements;if(N&&(!G(Q,$)&&J(Q,$)))return Z?[Q]:[];return null}hitTestRecursive(Q,q,$,J,G){if(this._interactivePrune(Q)||G(Q,$))return null;if(Q.eventMode==="dynamic"||q==="dynamic")L.pauseUpdate=!1;if(Q.interactiveChildren&&Q.children){let N=Q.children,Z=$;for(let K=N.length-1;K>=0;K--){let C=N[K],V=this.hitTestRecursive(C,this._isInteractive(q)?q:C.eventMode,Z,J,G);if(V){if(V.length>0&&!V[V.length-1].parent)continue;let U=Q.isInteractive();if(V.length>0||U)V.push(Q);return V}}}let X=this._isInteractive(q),Y=Q.isInteractive();if(X&&J(Q,$))return Y?[Q]:[];return null}_isInteractive(Q){return Q==="static"||Q==="dynamic"}_interactivePrune(Q){if(!Q||!Q.visible||!Q.renderable||!Q.measurable)return!0;if(Q.eventMode==="none")return!0;if(Q.eventMode==="passive"&&!Q.interactiveChildren)return!0;return!1}hitPruneFn(Q,q){if(Q.hitArea){if(Q.worldTransform.applyInverse(q,w),!Q.hitArea.contains(w.x,w.y))return!0}if(Q.effects&&Q.effects.length)for(let $=0;$<Q.effects.length;$++){let J=Q.effects[$];if(J.containsPoint){if(!J.containsPoint(q,this.hitTestFn))return!0}}return!1}hitTestFn(Q,q){if(Q.hitArea)return!0;if(Q?.containsPoint)return Q.worldTransform.applyInverse(q,w),Q.containsPoint(w);return!1}notifyTarget(Q,q){if(!Q.currentTarget.isInteractive())return;q??(q=Q.type);let $=`on${q}`;Q.currentTarget[$]?.(Q);let J=Q.eventPhase===Q.CAPTURING_PHASE||Q.eventPhase===Q.AT_TARGET?`${q}capture`:q;if(this._notifyListeners(Q,J),Q.eventPhase===Q.AT_TARGET)this._notifyListeners(Q,q)}mapPointerDown(Q){if(!(Q instanceof B)){x("EventBoundary cannot map a non-pointer event as a pointer event");return}let q=this.createPointerEvent(Q);if(this.dispatchEvent(q,"pointerdown"),q.pointerType==="touch")this.dispatchEvent(q,"touchstart");else if(q.pointerType==="mouse"||q.pointerType==="pen"){let J=q.button===2;this.dispatchEvent(q,J?"rightdown":"mousedown")}let $=this.trackingData(Q.pointerId);$.pressTargetsByButton[Q.button]=q.composedPath(),this.freeEvent(q)}mapPointerMove(Q){if(!(Q instanceof B)){x("EventBoundary cannot map a non-pointer event as a pointer event");return}this._allInteractiveElements.length=0,this._hitElements.length=0,this._isPointerMoveEvent=!0;let q=this.createPointerEvent(Q);this._isPointerMoveEvent=!1;let $=q.pointerType==="mouse"||q.pointerType==="pen",J=this.trackingData(Q.pointerId),G=this.findMountedTarget(J.overTargets);if(J.overTargets?.length>0&&G!==q.target){let N=Q.type==="mousemove"?"mouseout":"pointerout",Z=this.createPointerEvent(Q,N,G);if(this.dispatchEvent(Z,"pointerout"),$)this.dispatchEvent(Z,"mouseout");if(!q.composedPath().includes(G)){let K=this.createPointerEvent(Q,"pointerleave",G);K.eventPhase=K.AT_TARGET;while(K.target&&!q.composedPath().includes(K.target)){if(K.currentTarget=K.target,this.notifyTarget(K),$)this.notifyTarget(K,"mouseleave");K.target=K.target.parent}this.freeEvent(K)}this.freeEvent(Z)}if(G!==q.target){let N=Q.type==="mousemove"?"mouseover":"pointerover",Z=this.clonePointerEvent(q,N);if(this.dispatchEvent(Z,"pointerover"),$)this.dispatchEvent(Z,"mouseover");let K=G?.parent;while(K&&K!==this.rootTarget.parent){if(K===q.target)break;K=K.parent}if(!K||K===this.rootTarget.parent){let V=this.clonePointerEvent(q,"pointerenter");V.eventPhase=V.AT_TARGET;while(V.target&&V.target!==G&&V.target!==this.rootTarget.parent){if(V.currentTarget=V.target,this.notifyTarget(V),$)this.notifyTarget(V,"mouseenter");V.target=V.target.parent}this.freeEvent(V)}this.freeEvent(Z)}let X=[],Y=this.enableGlobalMoveEvents??!0;if(this.moveOnAll?X.push("pointermove"):this.dispatchEvent(q,"pointermove"),Y&&X.push("globalpointermove"),q.pointerType==="touch")this.moveOnAll?X.splice(1,0,"touchmove"):this.dispatchEvent(q,"touchmove"),Y&&X.push("globaltouchmove");if($)this.moveOnAll?X.splice(1,0,"mousemove"):this.dispatchEvent(q,"mousemove"),Y&&X.push("globalmousemove"),this.cursor=q.target?.cursor;if(X.length>0)this.all(q,X);this._allInteractiveElements.length=0,this._hitElements.length=0,J.overTargets=q.composedPath(),this.freeEvent(q)}mapPointerOver(Q){if(!(Q instanceof B)){x("EventBoundary cannot map a non-pointer event as a pointer event");return}let q=this.trackingData(Q.pointerId),$=this.createPointerEvent(Q),J=$.pointerType==="mouse"||$.pointerType==="pen";if(this.dispatchEvent($,"pointerover"),J)this.dispatchEvent($,"mouseover");if($.pointerType==="mouse")this.cursor=$.target?.cursor;let G=this.clonePointerEvent($,"pointerenter");G.eventPhase=G.AT_TARGET;while(G.target&&G.target!==this.rootTarget.parent){if(G.currentTarget=G.target,this.notifyTarget(G),J)this.notifyTarget(G,"mouseenter");G.target=G.target.parent}q.overTargets=$.composedPath(),this.freeEvent($),this.freeEvent(G)}mapPointerOut(Q){if(!(Q instanceof B)){x("EventBoundary cannot map a non-pointer event as a pointer event");return}let q=this.trackingData(Q.pointerId);if(q.overTargets){let $=Q.pointerType==="mouse"||Q.pointerType==="pen",J=this.findMountedTarget(q.overTargets),G=this.createPointerEvent(Q,"pointerout",J);if(this.dispatchEvent(G),$)this.dispatchEvent(G,"mouseout");let X=this.createPointerEvent(Q,"pointerleave",J);X.eventPhase=X.AT_TARGET;while(X.target&&X.target!==this.rootTarget.parent){if(X.currentTarget=X.target,this.notifyTarget(X),$)this.notifyTarget(X,"mouseleave");X.target=X.target.parent}q.overTargets=null,this.freeEvent(G),this.freeEvent(X)}this.cursor=null}mapPointerUp(Q){if(!(Q instanceof B)){x("EventBoundary cannot map a non-pointer event as a pointer event");return}let q=performance.now(),$=this.createPointerEvent(Q);if(this.dispatchEvent($,"pointerup"),$.pointerType==="touch")this.dispatchEvent($,"touchend");else if($.pointerType==="mouse"||$.pointerType==="pen"){let Y=$.button===2;this.dispatchEvent($,Y?"rightup":"mouseup")}let J=this.trackingData(Q.pointerId),G=this.findMountedTarget(J.pressTargetsByButton[Q.button]),X=G;if(G&&!$.composedPath().includes(G)){let Y=G;while(Y&&!$.composedPath().includes(Y)){if($.currentTarget=Y,this.notifyTarget($,"pointerupoutside"),$.pointerType==="touch")this.notifyTarget($,"touchendoutside");else if($.pointerType==="mouse"||$.pointerType==="pen"){let N=$.button===2;this.notifyTarget($,N?"rightupoutside":"mouseupoutside")}Y=Y.parent}delete J.pressTargetsByButton[Q.button],X=Y}if(X){let Y=this.clonePointerEvent($,"click");if(Y.target=X,Y.path=null,!J.clicksByButton[Q.button])J.clicksByButton[Q.button]={clickCount:0,target:Y.target,timeStamp:q};let N=J.clicksByButton[Q.button];if(N.target===Y.target&&q-N.timeStamp<200)++N.clickCount;else N.clickCount=1;if(N.target=Y.target,N.timeStamp=q,Y.detail=N.clickCount,Y.pointerType==="mouse"){let Z=Y.button===2;this.dispatchEvent(Y,Z?"rightclick":"click")}else if(Y.pointerType==="touch")this.dispatchEvent(Y,"tap");this.dispatchEvent(Y,"pointertap"),this.freeEvent(Y)}this.freeEvent($)}mapPointerUpOutside(Q){if(!(Q instanceof B)){x("EventBoundary cannot map a non-pointer event as a pointer event");return}let q=this.trackingData(Q.pointerId),$=this.findMountedTarget(q.pressTargetsByButton[Q.button]),J=this.createPointerEvent(Q);if($){let G=$;while(G){if(J.currentTarget=G,this.notifyTarget(J,"pointerupoutside"),J.pointerType==="touch")this.notifyTarget(J,"touchendoutside");else if(J.pointerType==="mouse"||J.pointerType==="pen")this.notifyTarget(J,J.button===2?"rightupoutside":"mouseupoutside");G=G.parent}delete q.pressTargetsByButton[Q.button]}this.freeEvent(J)}mapWheel(Q){if(!(Q instanceof S)){x("EventBoundary cannot map a non-wheel event as a wheel event");return}let q=this.createWheelEvent(Q);this.dispatchEvent(q),this.freeEvent(q)}findMountedTarget(Q){if(!Q)return null;let q=Q[0];for(let $=1;$<Q.length;$++)if(Q[$].parent===q)q=Q[$];else break;return q}createPointerEvent(Q,q,$){let J=this.allocateEvent(B);if(this.copyPointerData(Q,J),this.copyMouseData(Q,J),this.copyData(Q,J),J.nativeEvent=Q.nativeEvent,J.originalEvent=Q,J.target=$??this.hitTest(J.global.x,J.global.y)??this._hitElements[0],typeof q==="string")J.type=q;return J}createWheelEvent(Q){let q=this.allocateEvent(S);return this.copyWheelData(Q,q),this.copyMouseData(Q,q),this.copyData(Q,q),q.nativeEvent=Q.nativeEvent,q.originalEvent=Q,q.target=this.hitTest(q.global.x,q.global.y),q}clonePointerEvent(Q,q){let $=this.allocateEvent(B);return $.nativeEvent=Q.nativeEvent,$.originalEvent=Q.originalEvent,this.copyPointerData(Q,$),this.copyMouseData(Q,$),this.copyData(Q,$),$.target=Q.target,$.path=Q.composedPath().slice(),$.type=q??$.type,$}copyWheelData(Q,q){q.deltaMode=Q.deltaMode,q.deltaX=Q.deltaX,q.deltaY=Q.deltaY,q.deltaZ=Q.deltaZ}copyPointerData(Q,q){if(!(Q instanceof B&&q instanceof B))return;q.pointerId=Q.pointerId,q.width=Q.width,q.height=Q.height,q.isPrimary=Q.isPrimary,q.pointerType=Q.pointerType,q.pressure=Q.pressure,q.tangentialPressure=Q.tangentialPressure,q.tiltX=Q.tiltX,q.tiltY=Q.tiltY,q.twist=Q.twist}copyMouseData(Q,q){if(!(Q instanceof O&&q instanceof O))return;q.altKey=Q.altKey,q.button=Q.button,q.buttons=Q.buttons,q.client.copyFrom(Q.client),q.ctrlKey=Q.ctrlKey,q.metaKey=Q.metaKey,q.movement.copyFrom(Q.movement),q.screen.copyFrom(Q.screen),q.shiftKey=Q.shiftKey,q.global.copyFrom(Q.global)}copyData(Q,q){q.isTrusted=Q.isTrusted,q.srcElement=Q.srcElement,q.timeStamp=performance.now(),q.type=Q.type,q.detail=Q.detail,q.view=Q.view,q.which=Q.which,q.layer.copyFrom(Q.layer),q.page.copyFrom(Q.page)}trackingData(Q){if(!this.mappingState.trackingData[Q])this.mappingState.trackingData[Q]={pressTargetsByButton:{},clicksByButton:{},overTarget:null};return this.mappingState.trackingData[Q]}allocateEvent(Q){if(!this.eventPool.has(Q))this.eventPool.set(Q,[]);let q=this.eventPool.get(Q).pop()||new Q(this);return q.eventPhase=q.NONE,q.currentTarget=null,q.defaultPrevented=!1,q.path=null,q.target=null,q}freeEvent(Q){if(Q.manager!==this)throw Error("It is illegal to free an event not managed by this EventBoundary!");let q=Q.constructor;if(!this.eventPool.has(q))this.eventPool.set(q,[]);this.eventPool.get(q).push(Q)}_notifyListeners(Q,q){let $=Q.currentTarget._events[q];if(!$)return;if("fn"in $){if($.once)Q.currentTarget.removeListener(q,$.fn,void 0,!0);$.fn.call($.context,Q)}else for(let J=0,G=$.length;J<G&&!Q.propagationImmediatelyStopped;J++){if($[J].once)Q.currentTarget.removeListener(q,$[J].fn,void 0,!0);$[J].fn.call($[J].context,Q)}}}var Bq=1,Wq={touchstart:"pointerdown",touchend:"pointerup",touchendoutside:"pointerupoutside",touchmove:"pointermove",touchcancel:"pointercancel"},y=class Q{constructor(q){this.supportsTouchEvents="ontouchstart"in globalThis,this.supportsPointerEvents=!!globalThis.PointerEvent,this.domElement=null,this.resolution=1,this.renderer=q,this.rootBoundary=new T(null),L.init(this),this.autoPreventDefault=!0,this._eventsAdded=!1,this._rootPointerEvent=new B(null),this._rootWheelEvent=new S(null),this.cursorStyles={default:"inherit",pointer:"pointer"},this.features=new Proxy({...Q.defaultEventFeatures},{set:($,J,G)=>{if(J==="globalMove")this.rootBoundary.enableGlobalMoveEvents=G;return $[J]=G,!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(q){let{canvas:$,resolution:J}=this.renderer;this.setTargetElement($),this.resolution=J,Q._defaultEventMode=q.eventMode??"passive",Object.assign(this.features,q.eventFeatures??{}),this.rootBoundary.enableGlobalMoveEvents=this.features.globalMove}resolutionChange(q){this.resolution=q}destroy(){L.destroy(),this.setTargetElement(null),this.renderer=null,this._currentCursor=null}setCursor(q){q||(q="default");let $=!0;if(globalThis.OffscreenCanvas&&this.domElement instanceof OffscreenCanvas)$=!1;if(this._currentCursor===q)return;this._currentCursor=q;let J=this.cursorStyles[q];if(J)switch(typeof J){case"string":if($)this.domElement.style.cursor=J;break;case"function":J(q);break;case"object":if($)Object.assign(this.domElement.style,J);break}else if($&&typeof q==="string"&&!Object.prototype.hasOwnProperty.call(this.cursorStyles,q))this.domElement.style.cursor=q}get pointer(){return this._rootPointerEvent}_onPointerDown(q){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;let $=this._normalizeToPointerData(q);if(this.autoPreventDefault&&$[0].isNormalized){if(q.cancelable||!("cancelable"in q))q.preventDefault()}for(let J=0,G=$.length;J<G;J++){let X=$[J],Y=this._bootstrapEvent(this._rootPointerEvent,X);this.rootBoundary.mapEvent(Y)}this.setCursor(this.rootBoundary.cursor)}_onPointerMove(q){if(!this.features.move)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered,L.pointerMoved();let $=this._normalizeToPointerData(q);for(let J=0,G=$.length;J<G;J++){let X=this._bootstrapEvent(this._rootPointerEvent,$[J]);this.rootBoundary.mapEvent(X)}this.setCursor(this.rootBoundary.cursor)}_onPointerUp(q){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;let $=q.target;if(q.composedPath&&q.composedPath().length>0)$=q.composedPath()[0];let J=$!==this.domElement?"outside":"",G=this._normalizeToPointerData(q);for(let X=0,Y=G.length;X<Y;X++){let N=this._bootstrapEvent(this._rootPointerEvent,G[X]);N.type+=J,this.rootBoundary.mapEvent(N)}this.setCursor(this.rootBoundary.cursor)}_onPointerOverOut(q){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;let $=this._normalizeToPointerData(q);for(let J=0,G=$.length;J<G;J++){let X=this._bootstrapEvent(this._rootPointerEvent,$[J]);this.rootBoundary.mapEvent(X)}this.setCursor(this.rootBoundary.cursor)}onWheel(q){if(!this.features.wheel)return;let $=this.normalizeWheelEvent(q);this.rootBoundary.rootTarget=this.renderer.lastObjectRendered,this.rootBoundary.mapEvent($)}setTargetElement(q){this._removeEvents(),this.domElement=q,L.domElement=q,this._addEvents()}_addEvents(){if(this._eventsAdded||!this.domElement)return;L.addTickerListener();let q=this.domElement.style;if(q){if(globalThis.navigator.msPointerEnabled)q.msContentZooming="none",q.msTouchAction="none";else if(this.supportsPointerEvents)q.touchAction="none"}if(this.supportsPointerEvents)globalThis.document.addEventListener("pointermove",this._onPointerMove,!0),this.domElement.addEventListener("pointerdown",this._onPointerDown,!0),this.domElement.addEventListener("pointerleave",this._onPointerOverOut,!0),this.domElement.addEventListener("pointerover",this._onPointerOverOut,!0),globalThis.addEventListener("pointerup",this._onPointerUp,!0);else if(globalThis.document.addEventListener("mousemove",this._onPointerMove,!0),this.domElement.addEventListener("mousedown",this._onPointerDown,!0),this.domElement.addEventListener("mouseout",this._onPointerOverOut,!0),this.domElement.addEventListener("mouseover",this._onPointerOverOut,!0),globalThis.addEventListener("mouseup",this._onPointerUp,!0),this.supportsTouchEvents)this.domElement.addEventListener("touchstart",this._onPointerDown,!0),this.domElement.addEventListener("touchend",this._onPointerUp,!0),this.domElement.addEventListener("touchmove",this._onPointerMove,!0);this.domElement.addEventListener("wheel",this.onWheel,{passive:!0,capture:!0}),this._eventsAdded=!0}_removeEvents(){if(!this._eventsAdded||!this.domElement)return;L.removeTickerListener();let q=this.domElement.style;if(q){if(globalThis.navigator.msPointerEnabled)q.msContentZooming="",q.msTouchAction="";else if(this.supportsPointerEvents)q.touchAction=""}if(this.supportsPointerEvents)globalThis.document.removeEventListener("pointermove",this._onPointerMove,!0),this.domElement.removeEventListener("pointerdown",this._onPointerDown,!0),this.domElement.removeEventListener("pointerleave",this._onPointerOverOut,!0),this.domElement.removeEventListener("pointerover",this._onPointerOverOut,!0),globalThis.removeEventListener("pointerup",this._onPointerUp,!0);else if(globalThis.document.removeEventListener("mousemove",this._onPointerMove,!0),this.domElement.removeEventListener("mousedown",this._onPointerDown,!0),this.domElement.removeEventListener("mouseout",this._onPointerOverOut,!0),this.domElement.removeEventListener("mouseover",this._onPointerOverOut,!0),globalThis.removeEventListener("mouseup",this._onPointerUp,!0),this.supportsTouchEvents)this.domElement.removeEventListener("touchstart",this._onPointerDown,!0),this.domElement.removeEventListener("touchend",this._onPointerUp,!0),this.domElement.removeEventListener("touchmove",this._onPointerMove,!0);this.domElement.removeEventListener("wheel",this.onWheel,!0),this.domElement=null,this._eventsAdded=!1}mapPositionToPoint(q,$,J){let G=this.domElement.isConnected?this.domElement.getBoundingClientRect():{x:0,y:0,width:this.domElement.width,height:this.domElement.height,left:0,top:0},X=1/this.resolution;q.x=($-G.left)*(this.domElement.width/G.width)*X,q.y=(J-G.top)*(this.domElement.height/G.height)*X}_normalizeToPointerData(q){let $=[];if(this.supportsTouchEvents&&q instanceof TouchEvent)for(let J=0,G=q.changedTouches.length;J<G;J++){let X=q.changedTouches[J];if(typeof X.button>"u")X.button=0;if(typeof X.buttons>"u")X.buttons=1;if(typeof X.isPrimary>"u")X.isPrimary=q.touches.length===1&&q.type==="touchstart";if(typeof X.width>"u")X.width=X.radiusX||1;if(typeof X.height>"u")X.height=X.radiusY||1;if(typeof X.tiltX>"u")X.tiltX=0;if(typeof X.tiltY>"u")X.tiltY=0;if(typeof X.pointerType>"u")X.pointerType="touch";if(typeof X.pointerId>"u")X.pointerId=X.identifier||0;if(typeof X.pressure>"u")X.pressure=X.force||0.5;if(typeof X.twist>"u")X.twist=0;if(typeof X.tangentialPressure>"u")X.tangentialPressure=0;if(typeof X.layerX>"u")X.layerX=X.offsetX=X.clientX;if(typeof X.layerY>"u")X.layerY=X.offsetY=X.clientY;X.isNormalized=!0,X.type=q.type,X.altKey??(X.altKey=q.altKey),X.ctrlKey??(X.ctrlKey=q.ctrlKey),X.metaKey??(X.metaKey=q.metaKey),X.shiftKey??(X.shiftKey=q.shiftKey),$.push(X)}else if(!globalThis.MouseEvent||q instanceof MouseEvent&&(!this.supportsPointerEvents||!(q instanceof globalThis.PointerEvent))){let J=q;if(typeof J.isPrimary>"u")J.isPrimary=!0;if(typeof J.width>"u")J.width=1;if(typeof J.height>"u")J.height=1;if(typeof J.tiltX>"u")J.tiltX=0;if(typeof J.tiltY>"u")J.tiltY=0;if(typeof J.pointerType>"u")J.pointerType="mouse";if(typeof J.pointerId>"u")J.pointerId=Bq;if(typeof J.pressure>"u")J.pressure=0.5;if(typeof J.twist>"u")J.twist=0;if(typeof J.tangentialPressure>"u")J.tangentialPressure=0;J.isNormalized=!0,$.push(J)}else $.push(q);return $}normalizeWheelEvent(q){let $=this._rootWheelEvent;return this._transferMouseData($,q),$.deltaX=q.deltaX,$.deltaY=q.deltaY,$.deltaZ=q.deltaZ,$.deltaMode=q.deltaMode,this.mapPositionToPoint($.screen,q.clientX,q.clientY),$.global.copyFrom($.screen),$.offset.copyFrom($.screen),$.nativeEvent=q,$.type=q.type,$}_bootstrapEvent(q,$){if(q.originalEvent=null,q.nativeEvent=$,q.pointerId=$.pointerId,q.width=$.width,q.height=$.height,q.isPrimary=$.isPrimary,q.pointerType=$.pointerType,q.pressure=$.pressure,q.tangentialPressure=$.tangentialPressure,q.tiltX=$.tiltX,q.tiltY=$.tiltY,q.twist=$.twist,this._transferMouseData(q,$),this.mapPositionToPoint(q.screen,$.clientX,$.clientY),q.global.copyFrom(q.screen),q.offset.copyFrom(q.screen),q.isTrusted=$.isTrusted,q.type==="pointerleave")q.type="pointerout";if(q.type.startsWith("mouse"))q.type=q.type.replace("mouse","pointer");if(q.type.startsWith("touch"))q.type=Wq[q.type]||q.type;return q}_transferMouseData(q,$){q.isTrusted=$.isTrusted,q.srcElement=$.srcElement,q.timeStamp=performance.now(),q.type=$.type,q.altKey=$.altKey,q.button=$.button,q.buttons=$.buttons,q.client.x=$.clientX,q.client.y=$.clientY,q.ctrlKey=$.ctrlKey,q.metaKey=$.metaKey,q.movement.x=$.movementX,q.movement.y=$.movementY,q.page.x=$.pageX,q.page.y=$.pageY,q.relatedTarget=null,q.shiftKey=$.shiftKey}};y.extension={name:"events",type:[z.WebGLSystem,z.CanvasSystem,z.WebGPUSystem],priority:-1};y.defaultEventFeatures={move:!0,globalMove:!0,click:!0,wheel:!0};var qq=y;var ZQ={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(Q){this.eventMode=Q?"static":"passive"},_internalEventMode:void 0,get eventMode(){return this._internalEventMode??qq.defaultEventMode},set eventMode(Q){this._internalEventMode=Q},isInteractive(){return this.eventMode==="static"||this.eventMode==="dynamic"},interactiveChildren:!0,hitArea:null,addEventListener(Q,q,$){let J=typeof $==="boolean"&&$||typeof $==="object"&&$.capture,G=typeof $==="object"?$.signal:void 0,X=typeof $==="object"?$.once===!0:!1,Y=typeof q==="function"?void 0:q;Q=J?`${Q}capture`:Q;let N=typeof q==="function"?q:q.handleEvent,Z=this;if(G)G.addEventListener("abort",()=>{Z.off(Q,N,Y)});if(X)Z.once(Q,N,Y);else Z.on(Q,N,Y)},removeEventListener(Q,q,$){let J=typeof $==="boolean"&&$||typeof $==="object"&&$.capture,G=typeof q==="function"?void 0:q;Q=J?`${Q}capture`:Q,q=typeof q==="function"?q:q.handleEvent,this.off(Q,q,G)},dispatchEvent(Q){if(!(Q instanceof H))throw Error("Container cannot propagate events outside of the Federated Events API");return Q.defaultPrevented=!1,Q.path=null,Q.target=this,Q.manager.dispatchEvent(Q),!Q.defaultPrevented}};
|
|
15
|
+
export{Mq as a,Pq as b,n as c,qq as d,ZQ as e};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{A as VQ,B as KQ,C as FQ,D as HQ,F as jQ,G as NQ,H as kQ,I as JQ,J as EQ,L as OQ}from"./chunk-z898rh1p.js";import{S as OJ,aa as XQ,ca as IQ,da as KJ}from"./chunk-w1tshfsy.js";import{ja as pJ,ka as iJ,la as cJ,ma as QQ,na as nJ,oa as oJ,pa as $Q,sa as JJ}from"./chunk-aeeawe99.js";import{Ja as t}from"./chunk-8wvq4dfz.js";import{$a as e,Ka as H,La as y,Na as u,Ra as b,Ta as C,Va as v,Wa as YQ,Ya as AJ,ab as aJ,fb as B,ib as MJ,jb as L,qb as WQ}from"./chunk-sqnzgty6.js";var r;function xJ(J){let Q=L.get().createCanvas(6,1),Z=Q.getContext("2d");return Z.fillStyle=J,Z.fillRect(0,0,6,1),Q}function qJ(){if(r!==void 0)return r;try{let J=xJ("#ff00ff"),Q=xJ("#ffff00"),X=L.get().createCanvas(6,1).getContext("2d");X.globalCompositeOperation="multiply",X.drawImage(J,0,0),X.drawImage(Q,2,0);let $=X.getImageData(2,0,1,1);if(!$)r=!1;else{let Y=$.data;r=Y[0]===255&&Y[1]===0&&Y[2]===0}}catch(J){r=!1}return r}var W={canvas:null,convertTintToImage:!1,cacheStepsPerColorChannel:8,canUseMultiply:qJ(),tintMethod:null,_canvasSourceCache:new WeakMap,_unpremultipliedCache:new WeakMap,getCanvasSource:(J)=>{let Q=J.source,Z=Q?.resource;if(!Z)return null;let X=Q.alphaMode==="premultiplied-alpha",$=Q.resourceWidth??Q.pixelWidth,Y=Q.resourceHeight??Q.pixelHeight,q=$!==Q.pixelWidth||Y!==Q.pixelHeight;if(X){if(Z instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&Z instanceof OffscreenCanvas){if(!q)return Z}let z=W._unpremultipliedCache.get(Q);if(z?.resourceId===Q._resourceId)return z.canvas}if(Z instanceof Uint8Array||Z instanceof Uint8ClampedArray||Z instanceof Int8Array||Z instanceof Uint16Array||Z instanceof Int16Array||Z instanceof Uint32Array||Z instanceof Int32Array||Z instanceof Float32Array||Z instanceof ArrayBuffer){let z=W._canvasSourceCache.get(Q);if(z?.resourceId===Q._resourceId)return z.canvas;let I=L.get().createCanvas(Q.pixelWidth,Q.pixelHeight),V=I.getContext("2d"),O=V.createImageData(Q.pixelWidth,Q.pixelHeight),K=O.data,_=Z instanceof ArrayBuffer?new Uint8Array(Z):new Uint8Array(Z.buffer,Z.byteOffset,Z.byteLength);if(Q.format==="bgra8unorm")for(let N=0;N<K.length&&N+3<_.length;N+=4)K[N]=_[N+2],K[N+1]=_[N+1],K[N+2]=_[N],K[N+3]=_[N+3];else K.set(_.subarray(0,K.length));return V.putImageData(O,0,0),W._canvasSourceCache.set(Q,{canvas:I,resourceId:Q._resourceId}),I}if(X){let z=L.get().createCanvas(Q.pixelWidth,Q.pixelHeight),I=z.getContext("2d",{willReadFrequently:!0});z.width=Q.pixelWidth,z.height=Q.pixelHeight,I.drawImage(Z,0,0);let V=I.getImageData(0,0,z.width,z.height),O=V.data;for(let K=0;K<O.length;K+=4){let _=O[K+3];if(_>0){let N=255/_;O[K]=Math.min(255,O[K]*N+0.5),O[K+1]=Math.min(255,O[K+1]*N+0.5),O[K+2]=Math.min(255,O[K+2]*N+0.5)}}return I.putImageData(V,0,0),W._unpremultipliedCache.set(Q,{canvas:z,resourceId:Q._resourceId}),z}if(q){let z=W._canvasSourceCache.get(Q);if(z?.resourceId===Q._resourceId)return z.canvas;let I=L.get().createCanvas(Q.pixelWidth,Q.pixelHeight),V=I.getContext("2d");return I.width=Q.pixelWidth,I.height=Q.pixelHeight,V.drawImage(Z,0,0),W._canvasSourceCache.set(Q,{canvas:I,resourceId:Q._resourceId}),I}return Z},getTintedCanvas:(J,Q)=>{let Z=J.texture,X=u.shared.setValue(Q).toHex(),$=Z.tintCache||(Z.tintCache={}),Y=$[X],q=Z.source._resourceId;if(Y?.tintId===q)return Y;let z=Y&&"getContext"in Y?Y:L.get().createCanvas();if(W.tintMethod(Z,Q,z),z.tintId=q,W.convertTintToImage&&z.toDataURL!==void 0){let I=L.get().createImage();I.src=z.toDataURL(),I.tintId=q,$[X]=I}else $[X]=z;return $[X]},getTintedPattern:(J,Q)=>{let Z=u.shared.setValue(Q).toHex(),X=J.patternCache||(J.patternCache={}),$=J.source._resourceId,Y=X[Z];if(Y?.tintId===$)return Y;if(!W.canvas)W.canvas=L.get().createCanvas();return W.tintMethod(J,Q,W.canvas),Y=W.canvas.getContext("2d").createPattern(W.canvas,"repeat"),Y.tintId=$,X[Z]=Y,Y},applyPatternTransform:(J,Q,Z=!0)=>{if(!Q)return;let X=J;if(!X.setTransform)return;let $=globalThis.DOMMatrix;if(!$)return;let Y=new $([Q.a,Q.b,Q.c,Q.d,Q.tx,Q.ty]);X.setTransform(Z?Y.inverse():Y)},tintWithMultiply:(J,Q,Z)=>{let X=Z.getContext("2d"),$=J.frame.clone(),Y=J.source._resolution??J.source.resolution??1,q=J.rotate;$.x*=Y,$.y*=Y,$.width*=Y,$.height*=Y;let z=B.isVertical(q),I=z?$.height:$.width,V=z?$.width:$.height;Z.width=Math.ceil(I),Z.height=Math.ceil(V),X.save(),X.fillStyle=u.shared.setValue(Q).toHex(),X.fillRect(0,0,I,V),X.globalCompositeOperation="multiply";let O=W.getCanvasSource(J);if(!O){X.restore();return}if(q)W._applyInverseRotation(X,q,$.width,$.height);X.drawImage(O,$.x,$.y,$.width,$.height,0,0,$.width,$.height),X.globalCompositeOperation="destination-atop",X.drawImage(O,$.x,$.y,$.width,$.height,0,0,$.width,$.height),X.restore()},tintWithOverlay:(J,Q,Z)=>{let X=Z.getContext("2d"),$=J.frame.clone(),Y=J.source._resolution??J.source.resolution??1,q=J.rotate;$.x*=Y,$.y*=Y,$.width*=Y,$.height*=Y;let z=B.isVertical(q),I=z?$.height:$.width,V=z?$.width:$.height;Z.width=Math.ceil(I),Z.height=Math.ceil(V),X.save(),X.globalCompositeOperation="copy",X.fillStyle=u.shared.setValue(Q).toHex(),X.fillRect(0,0,I,V),X.globalCompositeOperation="destination-atop";let O=W.getCanvasSource(J);if(!O){X.restore();return}if(q)W._applyInverseRotation(X,q,$.width,$.height);X.drawImage(O,$.x,$.y,$.width,$.height,0,0,$.width,$.height),X.restore()},tintWithPerPixel:(J,Q,Z)=>{let X=Z.getContext("2d"),$=J.frame.clone(),Y=J.source._resolution??J.source.resolution??1,q=J.rotate;$.x*=Y,$.y*=Y,$.width*=Y,$.height*=Y;let z=B.isVertical(q),I=z?$.height:$.width,V=z?$.width:$.height;Z.width=Math.ceil(I),Z.height=Math.ceil(V),X.save(),X.globalCompositeOperation="copy";let O=W.getCanvasSource(J);if(!O){X.restore();return}if(q)W._applyInverseRotation(X,q,$.width,$.height);X.drawImage(O,$.x,$.y,$.width,$.height,0,0,$.width,$.height),X.restore();let K=Q>>16&255,_=Q>>8&255,N=Q&255,M=X.getImageData(0,0,I,V),R=M.data;for(let G=0;G<R.length;G+=4)R[G]=R[G]*K/255,R[G+1]=R[G+1]*_/255,R[G+2]=R[G+2]*N/255;X.putImageData(M,0,0)},_applyInverseRotation:(J,Q,Z,X)=>{let $=B.inv(Q),Y=B.uX($),q=B.uY($),z=B.vX($),I=B.vY($),V=-Math.min(0,Y*Z,z*X,Y*Z+z*X),O=-Math.min(0,q*Z,I*X,q*Z+I*X);J.transform(Y,q,z,I,V,O)}};W.tintMethod=W.canUseMultiply?W.tintWithMultiply:W.tintWithPerPixel;var PQ="#808080",zJ=new b,BQ=new b,bQ=new b,bJ=new b;function MQ(J,Q,Z){J.beginPath();for(let X=0;X<Z.length;X+=3){let $=Z[X]*2,Y=Z[X+1]*2,q=Z[X+2]*2;J.moveTo(Q[$],Q[$+1]),J.lineTo(Q[Y],Q[Y+1]),J.lineTo(Q[q],Q[q+1]),J.closePath()}J.fill()}function fQ(J){return`#${(J&16777215).toString(16).padStart(6,"0")}`}function TQ(J,Q,Z,X,$,Y){Y=Math.max(0,Math.min(Y,Math.min(X,$)/2)),J.moveTo(Q+Y,Z),J.lineTo(Q+X-Y,Z),J.quadraticCurveTo(Q+X,Z,Q+X,Z+Y),J.lineTo(Q+X,Z+$-Y),J.quadraticCurveTo(Q+X,Z+$,Q+X-Y,Z+$),J.lineTo(Q+Y,Z+$),J.quadraticCurveTo(Q,Z+$,Q,Z+$-Y),J.lineTo(Q,Z+Y),J.quadraticCurveTo(Q,Z,Q+Y,Z)}function IJ(J,Q){switch(Q.type){case"rectangle":{let Z=Q;J.rect(Z.x,Z.y,Z.width,Z.height);break}case"roundedRectangle":{let Z=Q;TQ(J,Z.x,Z.y,Z.width,Z.height,Z.radius);break}case"circle":{let Z=Q;J.arc(Z.x,Z.y,Z.radius,0,Math.PI*2);break}case"ellipse":{let Z=Q;if(J.ellipse)J.ellipse(Z.x,Z.y,Z.halfWidth,Z.halfHeight,0,0,Math.PI*2);else J.save(),J.translate(Z.x,Z.y),J.scale(Z.halfWidth,Z.halfHeight),J.arc(0,0,1,0,Math.PI*2),J.restore();break}case"triangle":{let Z=Q;J.moveTo(Z.x,Z.y),J.lineTo(Z.x2,Z.y2),J.lineTo(Z.x3,Z.y3),J.closePath();break}case"polygon":default:{let Z=Q,X=Z.points;if(!X?.length)break;J.moveTo(X[0],X[1]);for(let $=2;$<X.length;$+=2)J.lineTo(X[$],X[$+1]);if(Z.closePath)J.closePath();break}}}function AQ(J,Q){if(!Q?.length)return!1;for(let Z=0;Z<Q.length;Z++){let X=Q[Z];if(!X?.shape)continue;let $=X.transform,Y=$&&!$.isIdentity();if(Y)J.save(),J.transform($.a,$.b,$.c,$.d,$.tx,$.ty);if(IJ(J,X.shape),Y)J.restore()}return!0}function SQ(J,Q,Z,X){let $=J.fill;if($ instanceof iJ){$.buildGradient();let q=$.texture;if(q){let z=W.getTintedPattern(q,Q),I=Z?bJ.copyFrom(Z).scale(q.source.pixelWidth,q.source.pixelHeight):bJ.copyFrom($.transform);if(X&&!J.textureSpace)I.append(X);return W.applyPatternTransform(z,I),z}}if($ instanceof cJ){let q=W.getTintedPattern($.texture,Q);return W.applyPatternTransform(q,$.transform),q}let Y=J.texture;if(Y&&Y!==MJ.WHITE){if(!Y.source.resource)return PQ;let q=W.getTintedPattern(Y,Q),z=Z?bJ.copyFrom(Z).scale(Y.source.pixelWidth,Y.source.pixelHeight):J.matrix;return W.applyPatternTransform(q,z),q}return fQ(Q)}class WJ{constructor(){this.shader=null}contextChange(J){}execute(J,Q){let Z=J.renderer,X=Z.canvasContext,$=X.activeContext,Y=Q.groupTransform,q=Z.globalUniforms.globalUniformData?.worldColor??4294967295,z=Q.groupColorAlpha,I=(q>>>24&255)/255,V=(z>>>24&255)/255,O=Z.filter?.alphaMultiplier??1,K=I*V*O;if(K<=0)return;let _=q&16777215,N=z&16777215,M=OJ(e(N,_)),R=Z._roundPixels|Q._roundPixels;$.save(),X.setContextTransform(Y,R===1),X.setBlendMode(Q.groupBlendMode);let G=Q.context.instructions;for(let w=0;w<G.length;w++){let m=G[w];if(m.action==="texture"){let k=m.data,E=k.image,U=E?W.getCanvasSource(E):null;if(!U)continue;let g=k.alpha*K;if(g<=0)continue;let o=e(k.style,M);$.globalAlpha=g;let T=U;if(o!==16777215)T=W.getTintedCanvas({texture:E},o);let x=E.frame,p=E.source._resolution??E.source.resolution??1,D=x.x*p,S=x.y*p,ZJ=x.width*p,i=x.height*p;if(T!==U)D=0,S=0;let h=k.transform,l=h&&!h.isIdentity(),P=E.rotate;if(l||P){if(zJ.copyFrom(Y),l)zJ.append(h);if(P)B.matrixAppendRotationInv(zJ,P,k.dx,k.dy,k.dw,k.dh);X.setContextTransform(zJ,R===1)}else X.setContextTransform(Y,R===1);if($.drawImage(T,D,S,T===U?ZJ:T.width,T===U?i:T.height,P?0:k.dx,P?0:k.dy,k.dw,k.dh),l||P)X.setContextTransform(Y,R===1);continue}let c=m.data,QJ=c?.path?.shapePath;if(!QJ?.shapePrimitives?.length)continue;let f=c.style,_J=e(f.color,M),d=f.alpha*K;if(d<=0)continue;let A=m.action==="stroke";if($.globalAlpha=d,A){let k=f;$.lineWidth=k.width,$.lineCap=k.cap,$.lineJoin=k.join,$.miterLimit=k.miterLimit}let n=QJ.shapePrimitives;if(!A&&c.hole?.shapePath?.shapePrimitives?.length){let k=n[n.length-1];k.holes=c.hole.shapePath.shapePrimitives}for(let k=0;k<n.length;k++){let E=n[k];if(!E?.shape)continue;let U=E.transform,g=U&&!U.isIdentity(),o=f.texture&&f.texture!==MJ.WHITE,T=f.textureSpace==="global"?U:null,x=o?nJ(BQ,f,E.shape,T):null,p=g?bQ.copyFrom(Y).append(U):Y,D=SQ(f,_J,x,p);if(g)$.save(),$.transform(U.a,U.b,U.c,U.d,U.tx,U.ty);if(A){let S=f;if(S.alignment!==0.5&&!S.pixelLine){let i=[],h=[],l=[];if(oJ[E.shape.type]?.build(E.shape,i)){let F=E.shape.closePath??!0;pJ(i,S,!1,F,h,l),$.fillStyle=D,MQ($,h,l)}else $.strokeStyle=D,$.beginPath(),IJ($,E.shape),$.stroke()}else $.strokeStyle=D,$.beginPath(),IJ($,E.shape),$.stroke()}else if($.fillStyle=D,$.beginPath(),IJ($,E.shape),AQ($,E.holes))$.fill("evenodd");else $.fill();if(g)$.restore()}}$.restore()}destroy(){this.shader=null}}WJ.extension={type:[H.CanvasPipesAdaptor],name:"graphics"};var fJ=class J{static _getPatternRepeat(Q,Z){let X=Q&&Q!=="clamp-to-edge",$=Z&&Z!=="clamp-to-edge";if(X&&$)return"repeat";if(X)return"repeat-x";if($)return"repeat-y";return"no-repeat"}start(Q,Z,X){}execute(Q,Z){let X=Z.elements;if(!X||!X.length)return;let $=Q.renderer,Y=$.canvasContext,q=Y.activeContext;for(let z=0;z<X.length;z++){let I=X[z];if(!I.packAsQuad)continue;let V=I,O=V.texture,K=O?W.getCanvasSource(O):null;if(!K)continue;let _=O.source.style,N=Y.smoothProperty,M=_.scaleMode!=="nearest";if(q[N]!==M)q[N]=M;Y.setBlendMode(Z.blendMode);let R=$.globalUniforms.globalUniformData?.worldColor??4294967295,G=V.color,w=(R>>>24&255)/255,m=(G>>>24&255)/255,c=$.filter?.alphaMultiplier??1,QJ=w*m*c;if(QJ<=0)continue;q.globalAlpha=QJ;let f=R&16777215,_J=G&16777215,d=OJ(e(_J,f)),A=O.frame,n=_.addressModeU??_.addressMode,k=_.addressModeV??_.addressMode,E=J._getPatternRepeat(n,k),U=O.source._resolution??O.source.resolution??1,g=V.renderable?.renderGroup?.isCachedAsTexture,o=A.x*U,T=A.y*U,x=A.width*U,p=A.height*U,D=V.bounds,S=$.renderTarget.renderTarget.isRoot,ZJ=D.minX,i=D.minY,h=D.maxX-D.minX,l=D.maxY-D.minY,P=O.rotate,F=O.uvs,GQ=Math.min(F.x0,F.x1,F.x2,F.x3,F.y0,F.y1,F.y2,F.y3),wQ=Math.max(F.x0,F.x1,F.x2,F.x3,F.y0,F.y1,F.y2,F.y3),yJ=E!=="no-repeat"&&(GQ<0||wQ>1),RJ=P&&!(!yJ&&(d!==16777215||P));if(RJ)J._tempPatternMatrix.copyFrom(V.transform),B.matrixAppendRotationInv(J._tempPatternMatrix,P,ZJ,i,h,l),Y.setContextTransform(J._tempPatternMatrix,V.roundPixels===1,void 0,g&&S);else Y.setContextTransform(V.transform,V.roundPixels===1,void 0,g&&S);let XJ=RJ?0:ZJ,YJ=RJ?0:i,GJ=h,wJ=l;if(yJ){let DJ=K,s=d!==16777215&&!P,a=A.width<=O.source.width&&A.height<=O.source.height;if(s&&a)DJ=W.getTintedCanvas({texture:O},d);let LJ=q.createPattern(DJ,E);if(!LJ)continue;let CJ=GJ,vJ=wJ;if(CJ===0||vJ===0)continue;let mJ=1/CJ,gJ=1/vJ,hJ=(F.x1-F.x0)*mJ,lJ=(F.y1-F.y0)*mJ,uJ=(F.x3-F.x0)*gJ,dJ=(F.y3-F.y0)*gJ,DQ=F.x0-hJ*XJ-uJ*YJ,LQ=F.y0-lJ*XJ-dJ*YJ,PJ=O.source.pixelWidth,BJ=O.source.pixelHeight;J._tempPatternMatrix.set(hJ*PJ,lJ*BJ,uJ*PJ,dJ*BJ,DQ*PJ,LQ*BJ),W.applyPatternTransform(LJ,J._tempPatternMatrix),q.fillStyle=LJ,q.fillRect(XJ,YJ,GJ,wJ)}else{let s=d!==16777215||P?W.getTintedCanvas({texture:O},d):K,a=s!==K;q.drawImage(s,a?0:o,a?0:T,a?s.width:x,a?s.height:p,XJ,YJ,GJ,wJ)}}}};fJ._tempPatternMatrix=new b;fJ.extension={type:[H.CanvasPipesAdaptor],name:"batch"};var sJ=fJ;class VJ{constructor(J){this._colorStack=[],this._colorStackIndex=0,this._currentColor=0,this._renderer=J}buildStart(){this._colorStack[0]=15,this._colorStackIndex=1,this._currentColor=15}push(J,Q,Z){this._renderer.renderPipes.batch.break(Z);let X=this._colorStack;X[this._colorStackIndex]=X[this._colorStackIndex-1]&J.mask;let $=this._colorStack[this._colorStackIndex];if($!==this._currentColor)this._currentColor=$,Z.add({renderPipeId:"colorMask",colorMask:$,canBundle:!1});this._colorStackIndex++}pop(J,Q,Z){this._renderer.renderPipes.batch.break(Z);let X=this._colorStack;this._colorStackIndex--;let $=X[this._colorStackIndex-1];if($!==this._currentColor)this._currentColor=$,Z.add({renderPipeId:"colorMask",colorMask:$,canBundle:!1})}execute(J){}destroy(){this._renderer=null,this._colorStack=null}}VJ.extension={type:[H.CanvasPipes],name:"colorMask"};class rJ{constructor(){this.isBatchable=!1}reset(){if(this.isBatchable=!1,this.context=null,this.graphicsData)this.graphicsData.destroy(),this.graphicsData=null}destroy(){this.reset()}}class eJ{constructor(){this.instructions=new aJ}init(){this.instructions.reset()}destroy(){this.instructions.destroy(),this.instructions=null}}var TJ=class J{constructor(Q){this._renderer=Q,this._managedContexts=new t({renderer:Q,type:"resource",name:"graphicsContext"})}init(Q){J.defaultOptions.bezierSmoothness=Q?.bezierSmoothness??J.defaultOptions.bezierSmoothness}getContextRenderData(Q){return this.getGpuContext(Q).graphicsData||this._initContextRenderData(Q)}updateGpuContext(Q){let Z=Q._gpuData,X=!!Z[this._renderer.uid],$=Z[this._renderer.uid]||this._initContext(Q);if(Q.dirty||!X){if(X)$.reset();$.isBatchable=!1,Q.dirty=!1}return $}getGpuContext(Q){return Q._gpuData[this._renderer.uid]||this._initContext(Q)}_initContextRenderData(Q){let Z=new eJ,X=this.getGpuContext(Q);return X.graphicsData=Z,Z.init(),Z}_initContext(Q){let Z=new rJ;return Z.context=Q,Q._gpuData[this._renderer.uid]=Z,this._managedContexts.add(Q),Z}destroy(){this._managedContexts.destroy(),this._renderer=null}};TJ.extension={type:[H.CanvasSystem],name:"graphicsContext"};TJ.defaultOptions={bezierSmoothness:0.5};var tJ=TJ;class FJ{constructor(J,Q){this.state=KJ.for2d(),this.renderer=J,this._adaptor=Q,this.renderer.runners.contextChange.add(this),this._managedGraphics=new t({renderer:J,type:"renderable",priority:-1,name:"graphics"})}contextChange(){this._adaptor.contextChange(this.renderer)}validateRenderable(J){return!1}addRenderable(J,Q){this._managedGraphics.add(J),this.renderer.renderPipes.batch.break(Q),Q.add(J)}updateRenderable(J){}execute(J){if(!J.isRenderable)return;this._adaptor.execute(this,J)}destroy(){this._managedGraphics.destroy(),this.renderer=null,this._adaptor.destroy(),this._adaptor=null}}FJ.extension={type:[H.CanvasPipes],name:"graphics"};class ZQ{constructor(){this.batches=[],this.batched=!1}destroy(){this.batches.forEach((J)=>{AJ.return(J)}),this.batches.length=0}}class HJ{constructor(J,Q){this.state=KJ.for2d(),this.renderer=J,this._adaptor=Q,this.renderer.runners.contextChange.add(this),this._managedGraphics=new t({renderer:J,type:"renderable",priority:-1,name:"graphics"})}contextChange(){this._adaptor.contextChange(this.renderer)}validateRenderable(J){let Q=J.context,Z=!!J._gpuData,$=this.renderer.graphicsContext.updateGpuContext(Q);if($.isBatchable||Z!==$.isBatchable)return!0;return!1}addRenderable(J,Q){let X=this.renderer.graphicsContext.updateGpuContext(J.context);if(J.didViewUpdate)this._rebuild(J);if(X.isBatchable)this._addToBatcher(J,Q);else this.renderer.renderPipes.batch.break(Q),Q.add(J)}updateRenderable(J){let Z=this._getGpuDataForRenderable(J).batches;for(let X=0;X<Z.length;X++){let $=Z[X];$._batcher.updateElement($)}}execute(J){if(!J.isRenderable)return;let Q=this.renderer,Z=J.context;if(!Q.graphicsContext.getGpuContext(Z).batches.length)return;let $=Z.customShader||this._adaptor.shader;this.state.blendMode=J.groupBlendMode;let Y=$.resources.localUniforms.uniforms;Y.uTransformMatrix=J.groupTransform,Y.uRound=Q._roundPixels|J._roundPixels,JQ(J.groupColorAlpha,Y.uColor,0),this._adaptor.execute(this,J)}_rebuild(J){let Q=this._getGpuDataForRenderable(J),X=this.renderer.graphicsContext.updateGpuContext(J.context);if(Q.destroy(),X.isBatchable)this._updateBatchesForRenderable(J,Q)}_addToBatcher(J,Q){let Z=this.renderer.renderPipes.batch,X=this._getGpuDataForRenderable(J).batches;for(let $=0;$<X.length;$++){let Y=X[$];Z.addToBatch(Y,Q)}}_getGpuDataForRenderable(J){return J._gpuData[this.renderer.uid]||this._initGpuDataForRenderable(J)}_initGpuDataForRenderable(J){let Q=new ZQ;return J._gpuData[this.renderer.uid]=Q,this._managedGraphics.add(J),Q}_updateBatchesForRenderable(J,Q){let Z=J.context,$=this.renderer.graphicsContext.getGpuContext(Z),Y=this.renderer._roundPixels|J._roundPixels;Q.batches=$.batches.map((q)=>{let z=AJ.get(QQ);return q.copyTo(z),z.renderable=J,z.roundPixels=Y,z})}destroy(){this._managedGraphics.destroy(),this.renderer=null,this._adaptor.destroy(),this._adaptor=null,this.state=null}}HJ.extension={type:[H.WebGLPipes,H.WebGPUPipes],name:"graphics"};y.add(FJ);y.add(HJ);y.add(tJ);y.add($Q);class $J extends XQ{constructor(J){if(J instanceof JJ)J={context:J};let{context:Q,roundPixels:Z,...X}=J||{};super({label:"Graphics",...X});if(this.renderPipeId="graphics",!Q)this.context=this._ownedContext=new JJ,this.context.autoGarbageCollect=this.autoGarbageCollect;else this.context=Q;this.didViewUpdate=!0,this.allowChildren=!1,this.roundPixels=Z??!1}set context(J){if(J===this._context)return;if(this._context)this._context.off("update",this.onViewUpdate,this),this._context.off("unload",this.unload,this);this._context=J,this._context.on("update",this.onViewUpdate,this),this._context.on("unload",this.unload,this),this.onViewUpdate()}get context(){return this._context}get bounds(){return this._context.bounds}updateBounds(){}containsPoint(J){return this._context.containsPoint(J)}destroy(J){if(this._ownedContext&&!J)this._ownedContext.destroy(J);else if(J===!0||J?.context===!0)this._context.destroy(J);this._ownedContext=null,this._context=null,super.destroy(J)}_onTouch(J){this._gcLastUsed=J,this._context._gcLastUsed=J}_callContextMethod(J,Q){return this.context[J](...Q),this}setFillStyle(...J){return this._callContextMethod("setFillStyle",J)}setStrokeStyle(...J){return this._callContextMethod("setStrokeStyle",J)}fill(...J){return this._callContextMethod("fill",J)}stroke(...J){return this._callContextMethod("stroke",J)}texture(...J){return this._callContextMethod("texture",J)}beginPath(){return this._callContextMethod("beginPath",[])}cut(){return this._callContextMethod("cut",[])}arc(...J){return this._callContextMethod("arc",J)}arcTo(...J){return this._callContextMethod("arcTo",J)}arcToSvg(...J){return this._callContextMethod("arcToSvg",J)}bezierCurveTo(...J){return this._callContextMethod("bezierCurveTo",J)}closePath(){return this._callContextMethod("closePath",[])}ellipse(...J){return this._callContextMethod("ellipse",J)}circle(...J){return this._callContextMethod("circle",J)}path(...J){return this._callContextMethod("path",J)}lineTo(...J){return this._callContextMethod("lineTo",J)}moveTo(...J){return this._callContextMethod("moveTo",J)}quadraticCurveTo(...J){return this._callContextMethod("quadraticCurveTo",J)}rect(...J){return this._callContextMethod("rect",J)}roundRect(...J){return this._callContextMethod("roundRect",J)}poly(...J){return this._callContextMethod("poly",J)}regularPoly(...J){return this._callContextMethod("regularPoly",J)}roundPoly(...J){return this._callContextMethod("roundPoly",J)}roundShape(...J){return this._callContextMethod("roundShape",J)}filletRect(...J){return this._callContextMethod("filletRect",J)}chamferRect(...J){return this._callContextMethod("chamferRect",J)}star(...J){return this._callContextMethod("star",J)}svg(...J){return this._callContextMethod("svg",J)}restore(...J){return this._callContextMethod("restore",J)}save(){return this._callContextMethod("save",[])}getTransform(){return this.context.getTransform()}resetTransform(){return this._callContextMethod("resetTransform",[])}rotateTransform(...J){return this._callContextMethod("rotate",J)}scaleTransform(...J){return this._callContextMethod("scale",J)}setTransform(...J){return this._callContextMethod("setTransform",J)}transform(...J){return this._callContextMethod("transform",J)}translateTransform(...J){return this._callContextMethod("translate",J)}clear(){return this._callContextMethod("clear",[])}get fillStyle(){return this._context.fillStyle}set fillStyle(J){this._context.fillStyle=J}get strokeStyle(){return this._context.strokeStyle}set strokeStyle(J){this._context.strokeStyle=J}clone(J=!1){if(J)return new $J(this._context.clone());return this._ownedContext=null,new $J(this._context)}lineStyle(J,Q,Z){v(C,"Graphics#lineStyle is no longer needed. Use Graphics#setStrokeStyle to set the stroke style.");let X={};return J&&(X.width=J),Q&&(X.color=Q),Z&&(X.alpha=Z),this.context.strokeStyle=X,this}beginFill(J,Q){v(C,"Graphics#beginFill is no longer needed. Use Graphics#fill to fill the shape with the desired style.");let Z={};if(J!==void 0)Z.color=J;if(Q!==void 0)Z.alpha=Q;return this.context.fillStyle=Z,this}endFill(){v(C,"Graphics#endFill is no longer needed. Use Graphics#fill to fill the shape with the desired style."),this.context.fill();let J=this.context.strokeStyle;if(J.width!==JJ.defaultStrokeStyle.width||J.color!==JJ.defaultStrokeStyle.color||J.alpha!==JJ.defaultStrokeStyle.alpha)this.context.stroke();return this}drawCircle(...J){return v(C,"Graphics#drawCircle has been renamed to Graphics#circle"),this._callContextMethod("circle",J)}drawEllipse(...J){return v(C,"Graphics#drawEllipse has been renamed to Graphics#ellipse"),this._callContextMethod("ellipse",J)}drawPolygon(...J){return v(C,"Graphics#drawPolygon has been renamed to Graphics#poly"),this._callContextMethod("poly",J)}drawRect(...J){return v(C,"Graphics#drawRect has been renamed to Graphics#rect"),this._callContextMethod("rect",J)}drawRoundedRect(...J){return v(C,"Graphics#drawRoundedRect has been renamed to Graphics#roundRect"),this._callContextMethod("roundRect",J)}drawStar(...J){return v(C,"Graphics#drawStar has been renamed to Graphics#star"),this._callContextMethod("star",J)}}function yQ(J,Q,Z,X,$,Y){Y=Math.max(0,Math.min(Y,Math.min(X,$)/2)),J.moveTo(Q+Y,Z),J.lineTo(Q+X-Y,Z),J.quadraticCurveTo(Q+X,Z,Q+X,Z+Y),J.lineTo(Q+X,Z+$-Y),J.quadraticCurveTo(Q+X,Z+$,Q+X-Y,Z+$),J.lineTo(Q+Y,Z+$),J.quadraticCurveTo(Q,Z+$,Q,Z+$-Y),J.lineTo(Q,Z+Y),J.quadraticCurveTo(Q,Z,Q+Y,Z)}function qQ(J,Q){switch(Q.type){case"rectangle":{let Z=Q;J.rect(Z.x,Z.y,Z.width,Z.height);break}case"roundedRectangle":{let Z=Q;yQ(J,Z.x,Z.y,Z.width,Z.height,Z.radius);break}case"circle":{let Z=Q;J.moveTo(Z.x+Z.radius,Z.y),J.arc(Z.x,Z.y,Z.radius,0,Math.PI*2);break}case"ellipse":{let Z=Q;if(J.ellipse)J.moveTo(Z.x+Z.halfWidth,Z.y),J.ellipse(Z.x,Z.y,Z.halfWidth,Z.halfHeight,0,0,Math.PI*2);else J.save(),J.translate(Z.x,Z.y),J.scale(Z.halfWidth,Z.halfHeight),J.moveTo(1,0),J.arc(0,0,1,0,Math.PI*2),J.restore();break}case"triangle":{let Z=Q;J.moveTo(Z.x,Z.y),J.lineTo(Z.x2,Z.y2),J.lineTo(Z.x3,Z.y3),J.closePath();break}case"polygon":default:{let Z=Q,X=Z.points;if(!X?.length)break;J.moveTo(X[0],X[1]);for(let $=2;$<X.length;$+=2)J.lineTo(X[$],X[$+1]);if(Z.closePath)J.closePath();break}}}function CQ(J,Q){if(!Q?.length)return!1;for(let Z=0;Z<Q.length;Z++){let X=Q[Z];if(!X?.shape)continue;let $=X.transform,Y=$&&!$.isIdentity();if(Y)J.save(),J.transform($.a,$.b,$.c,$.d,$.tx,$.ty);if(qQ(J,X.shape),Y)J.restore()}return!0}class jJ{constructor(J){this._warnedMaskTypes=new Set,this._canvasMaskStack=[],this._renderer=J}push(J,Q,Z){this._renderer.renderPipes.batch.break(Z),Z.add({renderPipeId:"stencilMask",action:"pushMaskBegin",mask:J,inverse:Q._maskOptions.inverse,canBundle:!1})}pop(J,Q,Z){this._renderer.renderPipes.batch.break(Z),Z.add({renderPipeId:"stencilMask",action:"popMaskEnd",mask:J,inverse:Q._maskOptions.inverse,canBundle:!1})}execute(J){if(J.action!=="pushMaskBegin"&&J.action!=="popMaskEnd")return;let Q=this._renderer,Z=Q.canvasContext,X=Z?.activeContext;if(!X)return;if(J.action==="popMaskEnd"){if(this._canvasMaskStack.pop())X.restore();return}if(J.inverse)this._warnOnce("inverse","CanvasRenderer: inverse masks are not supported on Canvas2D; ignoring inverse flag.");let $=J.mask.mask;if(!($ instanceof $J)){this._warnOnce("nonGraphics","CanvasRenderer: only Graphics masks are supported in Canvas2D; skipping mask."),this._canvasMaskStack.push(!1);return}let Y=$,q=Y.context?.instructions;if(!q?.length){this._canvasMaskStack.push(!1);return}X.save(),Z.setContextTransform(Y.groupTransform,(Q._roundPixels|Y._roundPixels)===1),X.beginPath();let z=!1,I=!1;for(let V=0;V<q.length;V++){let O=q[V],K=O.action;if(K!=="fill"&&K!=="stroke")continue;let N=O.data?.path?.shapePath;if(!N?.shapePrimitives?.length)continue;let M=N.shapePrimitives;for(let R=0;R<M.length;R++){let G=M[R];if(!G?.shape)continue;let w=G.transform,m=w&&!w.isIdentity();if(m)X.save(),X.transform(w.a,w.b,w.c,w.d,w.tx,w.ty);if(qQ(X,G.shape),I=CQ(X,G.holes)||I,z=!0,m)X.restore()}}if(!z){X.restore(),this._canvasMaskStack.push(!1);return}if(I)X.clip("evenodd");else X.clip();this._canvasMaskStack.push(!0)}destroy(){this._renderer=null,this._warnedMaskTypes=null,this._canvasMaskStack=null}_warnOnce(J,Q){if(this._warnedMaskTypes.has(J))return;this._warnedMaskTypes.add(J),YQ(Q)}}jJ.extension={type:[H.CanvasPipes],name:"stencilMask"};var j="source-over";function zQ(){let J=qJ(),Q=Object.create(null);return Q.inherit=j,Q.none=j,Q.normal="source-over",Q.add="lighter",Q.multiply=J?"multiply":j,Q.screen=J?"screen":j,Q.overlay=J?"overlay":j,Q.darken=J?"darken":j,Q.lighten=J?"lighten":j,Q["color-dodge"]=J?"color-dodge":j,Q["color-burn"]=J?"color-burn":j,Q["hard-light"]=J?"hard-light":j,Q["soft-light"]=J?"soft-light":j,Q.difference=J?"difference":j,Q.exclusion=J?"exclusion":j,Q.saturation=J?"saturation":j,Q.color=J?"color":j,Q.luminosity=J?"luminosity":j,Q["linear-burn"]=J?"color-burn":j,Q["linear-dodge"]=J?"color-dodge":j,Q["linear-light"]=J?"hard-light":j,Q["pin-light"]=J?"hard-light":j,Q["vivid-light"]=J?"hard-light":j,Q["hard-mix"]=j,Q.negation=J?"difference":j,Q["normal-npm"]=Q.normal,Q["add-npm"]=Q.add,Q["screen-npm"]=Q.screen,Q.erase="destination-out",Q.subtract=j,Q.divide=j,Q.min=j,Q.max=j,Q}var vQ=new b;class NJ{constructor(J){this.activeResolution=1,this.smoothProperty="imageSmoothingEnabled",this.blendModes=zQ(),this._activeBlendMode="normal",this._projTransform=null,this._outerBlend=!1,this._warnedBlendModes=new Set,this._renderer=J}resolutionChange(J){this.activeResolution=J}init(){let J=this._renderer.background.alpha<1;if(this.rootContext=this._renderer.canvas.getContext("2d",{alpha:J}),this.activeContext=this.rootContext,this.activeResolution=this._renderer.resolution,!this.rootContext.imageSmoothingEnabled){let Q=this.rootContext;if(Q.webkitImageSmoothingEnabled)this.smoothProperty="webkitImageSmoothingEnabled";else if(Q.mozImageSmoothingEnabled)this.smoothProperty="mozImageSmoothingEnabled";else if(Q.oImageSmoothingEnabled)this.smoothProperty="oImageSmoothingEnabled";else if(Q.msImageSmoothingEnabled)this.smoothProperty="msImageSmoothingEnabled"}}setContextTransform(J,Q,Z,X){let $=X?b.IDENTITY:this._renderer.globalUniforms.globalUniformData?.worldTransformMatrix||b.IDENTITY,Y=vQ;Y.copyFrom($),Y.append(J);let q=this._projTransform,z=this.activeResolution;if(Z=Z||z,q){let I=b.shared;I.copyFrom(Y),I.prepend(q),Y=I}if(Q)this.activeContext.setTransform(Y.a*Z,Y.b*Z,Y.c*Z,Y.d*Z,Y.tx*z|0,Y.ty*z|0);else this.activeContext.setTransform(Y.a*Z,Y.b*Z,Y.c*Z,Y.d*Z,Y.tx*z,Y.ty*z)}clear(J,Q){let Z=this.activeContext,X=this._renderer;if(Z.clearRect(0,0,X.width,X.height),J){let $=u.shared.setValue(J);Z.globalAlpha=Q??$.alpha,Z.fillStyle=$.toHex(),Z.fillRect(0,0,X.width,X.height),Z.globalAlpha=1}}setBlendMode(J){if(this._activeBlendMode===J)return;this._activeBlendMode=J,this._outerBlend=!1;let Q=this.blendModes[J];if(!Q){if(!this._warnedBlendModes.has(J))console.warn(`CanvasRenderer: blend mode "${J}" is not supported in Canvas2D; falling back to "source-over".`),this._warnedBlendModes.add(J);this.activeContext.globalCompositeOperation="source-over";return}this.activeContext.globalCompositeOperation=Q}destroy(){this.rootContext=null,this.activeContext=null,this._warnedBlendModes.clear()}}NJ.extension={type:[H.CanvasSystem],name:"canvasContext"};class kJ{constructor(){this.maxTextures=16,this.maxBatchableTextures=16,this.maxUniformBindings=0}init(){}}kJ.extension={type:[H.CanvasSystem],name:"limits"};class SJ{init(J,Q){this._renderer=J,this._renderTargetSystem=Q}initGpuRenderTarget(J){let Q=J.colorTexture,{canvas:Z,context:X}=this._ensureCanvas(Q);return{canvas:Z,context:X,width:Z.width,height:Z.height}}resizeGpuRenderTarget(J){let Q=J.colorTexture,{canvas:Z}=this._ensureCanvas(Q);Z.width=J.pixelWidth,Z.height=J.pixelHeight}startRenderPass(J,Q,Z,X){let $=this._renderTargetSystem.getGpuRenderTarget(J);if(this._renderer.canvasContext.activeContext=$.context,this._renderer.canvasContext.activeResolution=J.resolution,Q)this.clear(J,Q,Z,X)}clear(J,Q,Z,X){let Y=this._renderTargetSystem.getGpuRenderTarget(J).context,q=X||{x:0,y:0,width:J.pixelWidth,height:J.pixelHeight};if(Y.setTransform(1,0,0,1,0,0),Y.clearRect(q.x,q.y,q.width,q.height),Z){let z=u.shared.setValue(Z);if(z.alpha>0)Y.globalAlpha=z.alpha,Y.fillStyle=z.toHex(),Y.fillRect(q.x,q.y,q.width,q.height),Y.globalAlpha=1}}finishRenderPass(){}copyToTexture(J,Q,Z,X,$){let q=this._renderTargetSystem.getGpuRenderTarget(J).canvas,z=Q.source,{context:I}=this._ensureCanvas(z),V=$?.x??0,O=$?.y??0;return I.drawImage(q,Z.x,Z.y,X.width,X.height,V,O,X.width,X.height),z.update(),Q}destroyGpuRenderTarget(J){}_ensureCanvas(J){let Q=J.resource;if(!Q||!IQ.test(Q))Q=L.get().createCanvas(J.pixelWidth,J.pixelHeight),J.resource=Q;if(Q.width!==J.pixelWidth||Q.height!==J.pixelHeight)Q.width=J.pixelWidth,Q.height=J.pixelHeight;let Z=Q.getContext("2d");return{canvas:Q,context:Z}}}class EJ extends OQ{constructor(J){super(J);this.adaptor=new SJ,this.adaptor.init(J,this)}}EJ.extension={type:[H.CanvasSystem],name:"renderTarget"};class UJ{constructor(J){}init(){}initSource(J){}generateCanvas(J){let Q=L.get().createCanvas(),Z=Q.getContext("2d"),X=W.getCanvasSource(J);if(!X)return Q;let $=J.frame,Y=J.source._resolution??J.source.resolution??1,q=$.x*Y,z=$.y*Y,I=$.width*Y,V=$.height*Y;return Q.width=Math.ceil(I),Q.height=Math.ceil(V),Z.drawImage(X,q,z,I,V,0,0,I,V),Q}getPixels(J){let Q=this.generateCanvas(J);return{pixels:Q.getContext("2d",{willReadFrequently:!0}).getImageData(0,0,Q.width,Q.height).data,width:Q.width,height:Q.height}}destroy(){}}UJ.extension={type:[H.CanvasSystem],name:"texture"};var mQ=[...EQ,NJ,kJ,UJ,EJ],gQ=[kQ,jQ,HQ,FQ,NQ,jJ,VJ,KQ],hQ=[sJ,WJ],UQ=[],_Q=[],RQ=[];y.handleByNamedList(H.CanvasSystem,UQ);y.handleByNamedList(H.CanvasPipes,_Q);y.handleByNamedList(H.CanvasPipesAdaptor,RQ);y.add(...mQ,...gQ,...hQ);class lQ extends VQ{constructor(){let J={name:"canvas",type:WQ.CANVAS,systems:UQ,renderPipes:_Q,renderPipeAdaptors:RQ};super(J)}}export{$J as w,lQ as x};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
2
|
-
export{N as
|
|
1
|
+
import{ib as F,pb as H}from"./chunk-sqnzgty6.js";var J={};function N(q,v,A){let f=2166136261;for(let l=0;l<v;l++)f^=q[l].uid,f=Math.imul(f,16777619),f>>>=0;return J[f]||K(q,v,f,A)}function K(q,v,A,f){let l={},C=0;for(let w=0;w<f;w++){let E=w<v?q[w]:F.EMPTY.source;l[C++]=E.source,l[C++]=E.style}let D=new H(l);return J[A]=D,D}
|
|
2
|
+
export{N as ua};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
2
|
-
export{h as
|
|
1
|
+
import{Ka as d,eb as f}from"./chunk-sqnzgty6.js";class h extends f{constructor(b){super(b);this.uploadMethodId="image",this.autoGarbageCollect=!0}static test(b){return globalThis.HTMLImageElement&&b instanceof HTMLImageElement||typeof ImageBitmap<"u"&&b instanceof ImageBitmap||globalThis.VideoFrame&&b instanceof VideoFrame}}h.extension=d.TextureSource;
|
|
2
|
+
export{h as ta};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{Ka as nQ,Sa as xQ,Va as cQ,Wa as kQ,Xa as pQ,lb as hQ,mb as LQ,ob as vQ,rb as BQ,sb as sQ,tb as y,ub as e,vb as mQ}from"./chunk-sqnzgty6.js";function f(Q,W,$=2){let J=W&&W.length,Z=J?W[0]*$:Q.length,F=JQ(Q,0,Z,$,!0),K=[];if(!F||F.next===F.prev)return K;let k,R,X;if(J)F=QW(Q,W,F,$);if(Q.length>80*$){k=Q[0],R=Q[1];let U=k,D=R;for(let G=$;G<Z;G+=$){let N=Q[G],_=Q[G+1];if(N<k)k=N;if(_<R)R=_;if(N>U)U=N;if(_>D)D=_}X=Math.max(U-k,D-R),X=X!==0?32767/X:0}return w(F,K,$,k,R,X,0),K}function JQ(Q,W,$,J,Z){let F;if(Z===AW(Q,W,$,J)>0)for(let K=W;K<$;K+=J)F=$Q(K/J|0,Q[K],Q[K+1],F);else for(let K=$-J;K>=W;K-=J)F=$Q(K/J|0,Q[K],Q[K+1],F);if(F&&V(F,F.next))T(F),F=F.next;return F}function j(Q,W){if(!Q)return Q;if(!W)W=Q;let $=Q,J;do if(J=!1,!$.steiner&&(V($,$.next)||P($.prev,$,$.next)===0)){if(T($),$=W=$.prev,$===$.next)break;J=!0}else $=$.next;while(J||$!==W);return W}function w(Q,W,$,J,Z,F,K){if(!Q)return;if(!K&&F)KW(Q,J,Z,F);let k=Q;while(Q.prev!==Q.next){let{prev:R,next:X}=Q;if(F?aQ(Q,J,Z,F):iQ(Q)){W.push(R.i,Q.i,X.i),T(Q),Q=X.next,k=X.next;continue}if(Q=X,Q===k){if(!K)w(j(Q),W,$,J,Z,F,1);else if(K===1)Q=tQ(j(Q),W),w(Q,W,$,J,Z,F,2);else if(K===2)eQ(Q,W,$,J,Z,F);break}}}function iQ(Q){let W=Q.prev,$=Q,J=Q.next;if(P(W,$,J)>=0)return!1;let Z=W.x,F=$.x,K=J.x,k=W.y,R=$.y,X=J.y,U=Math.min(Z,F,K),D=Math.min(k,R,X),G=Math.max(Z,F,K),N=Math.max(k,R,X),_=J.next;while(_!==W){if(_.x>=U&&_.x<=G&&_.y>=D&&_.y<=N&&M(Z,k,F,R,K,X,_.x,_.y)&&P(_.prev,_,_.next)>=0)return!1;_=_.next}return!0}function aQ(Q,W,$,J){let Z=Q.prev,F=Q,K=Q.next;if(P(Z,F,K)>=0)return!1;let k=Z.x,R=F.x,X=K.x,U=Z.y,D=F.y,G=K.y,N=Math.min(k,R,X),_=Math.min(U,D,G),C=Math.max(k,R,X),q=Math.max(U,D,G),A=c(N,_,W,$,J),L=c(C,q,W,$,J),Y=Q.prevZ,H=Q.nextZ;while(Y&&Y.z>=A&&H&&H.z<=L){if(Y.x>=N&&Y.x<=C&&Y.y>=_&&Y.y<=q&&Y!==Z&&Y!==K&&M(k,U,R,D,X,G,Y.x,Y.y)&&P(Y.prev,Y,Y.next)>=0)return!1;if(Y=Y.prevZ,H.x>=N&&H.x<=C&&H.y>=_&&H.y<=q&&H!==Z&&H!==K&&M(k,U,R,D,X,G,H.x,H.y)&&P(H.prev,H,H.next)>=0)return!1;H=H.nextZ}while(Y&&Y.z>=A){if(Y.x>=N&&Y.x<=C&&Y.y>=_&&Y.y<=q&&Y!==Z&&Y!==K&&M(k,U,R,D,X,G,Y.x,Y.y)&&P(Y.prev,Y,Y.next)>=0)return!1;Y=Y.prevZ}while(H&&H.z<=L){if(H.x>=N&&H.x<=C&&H.y>=_&&H.y<=q&&H!==Z&&H!==K&&M(k,U,R,D,X,G,H.x,H.y)&&P(H.prev,H,H.next)>=0)return!1;H=H.nextZ}return!0}function tQ(Q,W){let $=Q;do{let J=$.prev,Z=$.next.next;if(!V(J,Z)&&KQ(J,$,$.next,Z)&&O(J,Z)&&O(Z,J))W.push(J.i,$.i,Z.i),T($),T($.next),$=Q=Z;$=$.next}while($!==Q);return j($)}function eQ(Q,W,$,J,Z,F){let K=Q;do{let k=K.next.next;while(k!==K.prev){if(K.i!==k.i&&RW(K,k)){let R=FQ(K,k);K=j(K,K.next),R=j(R,R.next),w(K,W,$,J,Z,F,0),w(R,W,$,J,Z,F,0);return}k=k.next}K=K.next}while(K!==Q)}function QW(Q,W,$,J){let Z=[];for(let F=0,K=W.length;F<K;F++){let k=W[F]*J,R=F<K-1?W[F+1]*J:Q.length,X=JQ(Q,k,R,J,!1);if(X===X.next)X.steiner=!0;Z.push(kW(X))}Z.sort(WW);for(let F=0;F<Z.length;F++)$=$W(Z[F],$);return $}function WW(Q,W){let $=Q.x-W.x;if($===0){if($=Q.y-W.y,$===0){let J=(Q.next.y-Q.y)/(Q.next.x-Q.x),Z=(W.next.y-W.y)/(W.next.x-W.x);$=J-Z}}return $}function $W(Q,W){let $=JW(Q,W);if(!$)return W;let J=FQ($,Q);return j(J,J.next),j($,$.next)}function JW(Q,W){let $=W,J=Q.x,Z=Q.y,F=-1/0,K;if(V(Q,$))return $;do{if(V(Q,$.next))return $.next;else if(Z<=$.y&&Z>=$.next.y&&$.next.y!==$.y){let D=$.x+(Z-$.y)*($.next.x-$.x)/($.next.y-$.y);if(D<=J&&D>F){if(F=D,K=$.x<$.next.x?$:$.next,D===J)return K}}$=$.next}while($!==W);if(!K)return null;let k=K,R=K.x,X=K.y,U=1/0;$=K;do{if(J>=$.x&&$.x>=R&&J!==$.x&&ZQ(Z<X?J:F,Z,R,X,Z<X?F:J,Z,$.x,$.y)){let D=Math.abs(Z-$.y)/(J-$.x);if(O($,Q)&&(D<U||D===U&&($.x>K.x||$.x===K.x&&ZW(K,$))))K=$,U=D}$=$.next}while($!==k);return K}function ZW(Q,W){return P(Q.prev,Q,W.prev)<0&&P(W.next,Q,Q.next)<0}function KW(Q,W,$,J){let Z=Q;do{if(Z.z===0)Z.z=c(Z.x,Z.y,W,$,J);Z.prevZ=Z.prev,Z.nextZ=Z.next,Z=Z.next}while(Z!==Q);Z.prevZ.nextZ=null,Z.prevZ=null,FW(Z)}function FW(Q){let W,$=1;do{let J=Q,Z;Q=null;let F=null;W=0;while(J){W++;let K=J,k=0;for(let X=0;X<$;X++)if(k++,K=K.nextZ,!K)break;let R=$;while(k>0||R>0&&K){if(k!==0&&(R===0||!K||J.z<=K.z))Z=J,J=J.nextZ,k--;else Z=K,K=K.nextZ,R--;if(F)F.nextZ=Z;else Q=Z;Z.prevZ=F,F=Z}J=K}F.nextZ=null,$*=2}while(W>1);return Q}function c(Q,W,$,J,Z){return Q=(Q-$)*Z|0,W=(W-J)*Z|0,Q=(Q|Q<<8)&16711935,Q=(Q|Q<<4)&252645135,Q=(Q|Q<<2)&858993459,Q=(Q|Q<<1)&1431655765,W=(W|W<<8)&16711935,W=(W|W<<4)&252645135,W=(W|W<<2)&858993459,W=(W|W<<1)&1431655765,Q|W<<1}function kW(Q){let W=Q,$=Q;do{if(W.x<$.x||W.x===$.x&&W.y<$.y)$=W;W=W.next}while(W!==Q);return $}function ZQ(Q,W,$,J,Z,F,K,k){return(Z-K)*(W-k)>=(Q-K)*(F-k)&&(Q-K)*(J-k)>=($-K)*(W-k)&&($-K)*(F-k)>=(Z-K)*(J-k)}function M(Q,W,$,J,Z,F,K,k){return!(Q===K&&W===k)&&ZQ(Q,W,$,J,Z,F,K,k)}function RW(Q,W){return Q.next.i!==W.i&&Q.prev.i!==W.i&&!XW(Q,W)&&(O(Q,W)&&O(W,Q)&&YW(Q,W)&&(P(Q.prev,Q,W.prev)||P(Q,W.prev,W))||V(Q,W)&&P(Q.prev,Q,Q.next)>0&&P(W.prev,W,W.next)>0)}function P(Q,W,$){return(W.y-Q.y)*($.x-W.x)-(W.x-Q.x)*($.y-W.y)}function V(Q,W){return Q.x===W.x&&Q.y===W.y}function KQ(Q,W,$,J){let Z=h(P(Q,W,$)),F=h(P(Q,W,J)),K=h(P($,J,Q)),k=h(P($,J,W));if(Z!==F&&K!==k)return!0;if(Z===0&&g(Q,$,W))return!0;if(F===0&&g(Q,J,W))return!0;if(K===0&&g($,Q,J))return!0;if(k===0&&g($,W,J))return!0;return!1}function g(Q,W,$){return W.x<=Math.max(Q.x,$.x)&&W.x>=Math.min(Q.x,$.x)&&W.y<=Math.max(Q.y,$.y)&&W.y>=Math.min(Q.y,$.y)}function h(Q){return Q>0?1:Q<0?-1:0}function XW(Q,W){let $=Q;do{if($.i!==Q.i&&$.next.i!==Q.i&&$.i!==W.i&&$.next.i!==W.i&&KQ($,$.next,Q,W))return!0;$=$.next}while($!==Q);return!1}function O(Q,W){return P(Q.prev,Q,Q.next)<0?P(Q,W,Q.next)>=0&&P(Q,Q.prev,W)>=0:P(Q,W,Q.prev)<0||P(Q,Q.next,W)<0}function YW(Q,W){let $=Q,J=!1,Z=(Q.x+W.x)/2,F=(Q.y+W.y)/2;do{if($.y>F!==$.next.y>F&&$.next.y!==$.y&&Z<($.next.x-$.x)*(F-$.y)/($.next.y-$.y)+$.x)J=!J;$=$.next}while($!==Q);return J}function FQ(Q,W){let $=p(Q.i,Q.x,Q.y),J=p(W.i,W.x,W.y),Z=Q.next,F=W.prev;return Q.next=W,W.prev=Q,$.next=Z,Z.prev=$,J.next=$,$.prev=J,F.next=J,J.prev=F,J}function $Q(Q,W,$,J){let Z=p(Q,W,$);if(!J)Z.prev=Z,Z.next=Z;else Z.next=J.next,Z.prev=J,J.next.prev=Z,J.next=Z;return Z}function T(Q){if(Q.next.prev=Q.prev,Q.prev.next=Q.next,Q.prevZ)Q.prevZ.nextZ=Q.nextZ;if(Q.nextZ)Q.nextZ.prevZ=Q.prevZ}function p(Q,W,$){return{i:Q,x:W,y:$,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function AW(Q,W,$,J){let Z=0;for(let F=W,K=$-J;F<$;F+=J)Z+=(Q[K]-Q[F])*(Q[F+1]+Q[K+1]),K=F;return Z}var OW=f.default||f;function o(Q,W,$){if(Q)for(let J in Q){let Z=J.toLocaleLowerCase(),F=W[Z];if(F){let K=Q[J];if(J==="header")K=K.replace(/@in\s+[^;]+;\s*/g,"").replace(/@out\s+[^;]+;\s*/g,"");if($)F.push(`//----${$}----//`);F.push(K)}else kQ(`${J} placement hook does not exist in shader`)}}var HW=/\{\{(.*?)\}\}/g;function d(Q){let W={};return(Q.match(HW)?.map((J)=>J.replace(/[{()}]/g,""))??[]).forEach((J)=>{W[J]=[]}),W}function RQ(Q,W){let $,J=/@in\s+([^;]+);/g;while(($=J.exec(Q))!==null)W.push($[1])}function l(Q,W,$=!1){let J=[];RQ(W,J),Q.forEach((k)=>{if(k.header)RQ(k.header,J)});let Z=J;if($)Z.sort();let F=Z.map((k,R)=>` @location(${R}) ${k},`).join(`
|
|
2
2
|
`),K=W.replace(/@in\s+[^;]+;\s*/g,"");return K=K.replace("{{in}}",`
|
|
3
3
|
${F}
|
|
4
4
|
`),K}function XQ(Q,W){let $,J=/@out\s+([^;]+);/g;while(($=J.exec(Q))!==null)W.push($[1])}function _W(Q){let $=/\b(\w+)\s*:/g.exec(Q);return $?$[1]:""}function DW(Q){let W=/@.*?\s+/g;return Q.replace(W,"")}function YQ(Q,W){let $=[];XQ(W,$),Q.forEach((R)=>{if(R.header)XQ(R.header,$)});let J=0,Z=$.sort().map((R)=>{if(R.indexOf("builtin")>-1)return R;return`@location(${J++}) ${R}`}).join(`,
|
|
@@ -215,4 +215,4 @@ ${Z.join(`
|
|
|
215
215
|
`}};function i(Q,W,$,J){if($??($=0),J??(J=Math.min(Q.byteLength-$,W.byteLength)),!($&7)&&!(J&7)){let Z=J/8;new Float64Array(W,0,Z).set(new Float64Array(Q,$,Z))}else if(!($&3)&&!(J&3)){let Z=J/4;new Float32Array(W,0,Z).set(new Float32Array(Q,$,Z))}else new Uint8Array(W).set(new Uint8Array(Q,$,J))}var IQ={normal:"normal-npm",add:"add-npm",screen:"screen-npm"},CW=((Q)=>{return Q[Q.DISABLED=0]="DISABLED",Q[Q.RENDERING_MASK_ADD=1]="RENDERING_MASK_ADD",Q[Q.MASK_ACTIVE=2]="MASK_ACTIVE",Q[Q.INVERSE_MASK_ACTIVE=3]="INVERSE_MASK_ACTIVE",Q[Q.RENDERING_MASK_REMOVE=4]="RENDERING_MASK_REMOVE",Q[Q.NONE=5]="NONE",Q})(CW||{});var LW=["precision mediump float;","void main(void){","float test = 0.1;","%forloop%","gl_FragColor = vec4(0.0);","}"].join(`
|
|
216
216
|
`);function vW(Q){let W="";for(let $=0;$<Q;++$){if($>0)W+=`
|
|
217
217
|
else `;if($<Q-1)W+=`if(test == ${$}.0){}`}return W}function SQ(Q,W){if(Q===0)throw Error("Invalid value of `0` passed to `checkMaxIfStatementsInShader`");let $=W.createShader(W.FRAGMENT_SHADER);try{while(!0){let J=LW.replace(/%forloop%/gi,vW(Q));if(W.shaderSource($,J),W.compileShader($),!W.getShaderParameter($,W.COMPILE_STATUS))Q=Q/2|0;else break}}finally{W.deleteShader($)}return Q}var yQ={};function gQ(Q){let W=yQ[Q];if(W)return W;let $=new Int32Array(Q);for(let J=0;J<Q;J++)$[J]=J;return W=yQ[Q]=new BQ({uTextures:{value:$,type:"i32",size:Q}},{isStatic:!0}),W}class b{constructor(Q){if(typeof Q==="number")this.rawBinaryData=new ArrayBuffer(Q);else if(Q instanceof Uint8Array)this.rawBinaryData=Q.buffer;else this.rawBinaryData=Q;this.uint32View=new Uint32Array(this.rawBinaryData),this.float32View=new Float32Array(this.rawBinaryData),this.size=this.rawBinaryData.byteLength}get int8View(){if(!this._int8View)this._int8View=new Int8Array(this.rawBinaryData);return this._int8View}get uint8View(){if(!this._uint8View)this._uint8View=new Uint8Array(this.rawBinaryData);return this._uint8View}get int16View(){if(!this._int16View)this._int16View=new Int16Array(this.rawBinaryData);return this._int16View}get int32View(){if(!this._int32View)this._int32View=new Int32Array(this.rawBinaryData);return this._int32View}get float64View(){if(!this._float64Array)this._float64Array=new Float64Array(this.rawBinaryData);return this._float64Array}get bigUint64View(){if(!this._bigUint64Array)this._bigUint64Array=new BigUint64Array(this.rawBinaryData);return this._bigUint64Array}view(Q){return this[`${Q}View`]}destroy(){this.rawBinaryData=null,this.uint32View=null,this.float32View=null,this.uint16View=null,this._int8View=null,this._uint8View=null,this._int16View=null,this._int32View=null,this._float64Array=null,this._bigUint64Array=null}static sizeOf(Q){switch(Q){case"int8":case"uint8":return 1;case"int16":case"uint16":return 2;case"int32":case"uint32":case"float32":return 4;default:throw Error(`${Q} isn't a valid view type`)}}}function a(Q,W){if(W.alphaMode==="no-premultiply-alpha")return IQ[Q]||Q;return Q}var z=null;function fQ(){if(z)return z;let Q=hQ();return z=Q.getParameter(Q.MAX_TEXTURE_IMAGE_UNITS),z=SQ(z,Q),Q.getExtension("WEBGL_lose_context")?.loseContext(),z}class t{constructor(){this.ids=Object.create(null),this.textures=[],this.count=0}clear(){for(let Q=0;Q<this.count;Q++){let W=this.textures[Q];this.textures[Q]=null,this.ids[W.uid]=null}this.count=0}}class oQ{constructor(){this.renderPipeId="batch",this.action="startBatch",this.start=0,this.size=0,this.textures=new t,this.blendMode="normal",this.topology="triangle-strip",this.canBundle=!0}destroy(){this.textures=null,this.gpuBindGroup=null,this.bindGroup=null,this.batcher=null,this.elements=null}}var S=[],u=0;pQ.register({clear:()=>{if(S.length>0){for(let Q of S)if(Q)Q.destroy()}S.length=0,u=0}});function bQ(){return u>0?S[--u]:new oQ}function uQ(Q){Q.elements=null,S[u++]=Q}var I=0,dQ=class Q{constructor(W){if(this.uid=xQ("batcher"),this.dirty=!0,this.batchIndex=0,this.batches=[],this._elements=[],W={...Q.defaultOptions,...W},!W.maxTextures)cQ("v8.8.0","maxTextures is a required option for Batcher now, please pass it in the options"),W.maxTextures=fQ();let{maxTextures:$,attributesInitialSize:J,indicesInitialSize:Z}=W;this.attributeBuffer=new b(J*4),this.indexBuffer=new Uint16Array(Z),this.maxTextures=$}begin(){this.elementSize=0,this.elementStart=0,this.indexSize=0,this.attributeSize=0;for(let W=0;W<this.batchIndex;W++)uQ(this.batches[W]);this.batchIndex=0,this._batchIndexStart=0,this._batchIndexSize=0,this.dirty=!0}add(W){this._elements[this.elementSize++]=W,W._indexStart=this.indexSize,W._attributeStart=this.attributeSize,W._batcher=this,this.indexSize+=W.indexSize,this.attributeSize+=W.attributeSize*this.vertexSize}checkAndUpdateTexture(W,$){let J=W._batch.textures.ids[$._source.uid];if(!J&&J!==0)return!1;return W._textureId=J,W.texture=$,!0}updateElement(W){this.dirty=!0;let $=this.attributeBuffer;if(W.packAsQuad)this.packQuadAttributes(W,$.float32View,$.uint32View,W._attributeStart,W._textureId);else this.packAttributes(W,$.float32View,$.uint32View,W._attributeStart,W._textureId)}break(W){let $=this._elements;if(!$[this.elementStart])return;let J=bQ(),Z=J.textures;Z.clear();let F=$[this.elementStart],K=a(F.blendMode,F.texture._source),k=F.topology;if(this.attributeSize*4>this.attributeBuffer.size)this._resizeAttributeBuffer(this.attributeSize*4);if(this.indexSize>this.indexBuffer.length)this._resizeIndexBuffer(this.indexSize);let R=this.attributeBuffer.float32View,X=this.attributeBuffer.uint32View,U=this.indexBuffer,D=this._batchIndexSize,G=this._batchIndexStart,N="startBatch",_=[],C=this.maxTextures;for(let q=this.elementStart;q<this.elementSize;++q){let A=$[q];$[q]=null;let Y=A.texture._source,H=a(A.blendMode,Y),v=K!==H||k!==A.topology;if(Y._batchTick===I&&!v){if(A._textureId=Y._textureBindLocation,D+=A.indexSize,A.packAsQuad)this.packQuadAttributes(A,R,X,A._attributeStart,A._textureId),this.packQuadIndex(U,A._indexStart,A._attributeStart/this.vertexSize);else this.packAttributes(A,R,X,A._attributeStart,A._textureId),this.packIndex(A,U,A._indexStart,A._attributeStart/this.vertexSize);A._batch=J,_.push(A);continue}if(Y._batchTick=I,Z.count>=C||v)this._finishBatch(J,G,D-G,Z,K,k,W,N,_),N="renderBatch",G=D,K=H,k=A.topology,J=bQ(),Z=J.textures,Z.clear(),_=[],++I;if(A._textureId=Y._textureBindLocation=Z.count,Z.ids[Y.uid]=Z.count,Z.textures[Z.count++]=Y,A._batch=J,_.push(A),D+=A.indexSize,A.packAsQuad)this.packQuadAttributes(A,R,X,A._attributeStart,A._textureId),this.packQuadIndex(U,A._indexStart,A._attributeStart/this.vertexSize);else this.packAttributes(A,R,X,A._attributeStart,A._textureId),this.packIndex(A,U,A._indexStart,A._attributeStart/this.vertexSize)}if(Z.count>0)this._finishBatch(J,G,D-G,Z,K,k,W,N,_),G=D,++I;this.elementStart=this.elementSize,this._batchIndexStart=G,this._batchIndexSize=D}_finishBatch(W,$,J,Z,F,K,k,R,X){W.gpuBindGroup=null,W.bindGroup=null,W.action=R,W.batcher=this,W.textures=Z,W.blendMode=F,W.topology=K,W.start=$,W.size=J,W.elements=X,++I,this.batches[this.batchIndex++]=W,k.add(W)}finish(W){this.break(W)}ensureAttributeBuffer(W){if(W*4<=this.attributeBuffer.size)return;this._resizeAttributeBuffer(W*4)}ensureIndexBuffer(W){if(W<=this.indexBuffer.length)return;this._resizeIndexBuffer(W)}_resizeAttributeBuffer(W){let $=Math.max(W,this.attributeBuffer.size*2),J=new b($);i(this.attributeBuffer.rawBinaryData,J.rawBinaryData),this.attributeBuffer=J}_resizeIndexBuffer(W){let $=this.indexBuffer,J=Math.max(W,$.length*1.5);J+=J%2;let Z=J>65535?new Uint32Array(J):new Uint16Array(J);if(Z.BYTES_PER_ELEMENT!==$.BYTES_PER_ELEMENT)for(let F=0;F<$.length;F++)Z[F]=$[F];else i($.buffer,Z.buffer);this.indexBuffer=Z}packQuadIndex(W,$,J){W[$]=J+0,W[$+1]=J+1,W[$+2]=J+2,W[$+3]=J+0,W[$+4]=J+2,W[$+5]=J+3}packIndex(W,$,J,Z){let{indices:F,indexSize:K,indexOffset:k,attributeOffset:R}=W;for(let X=0;X<K;X++)$[J++]=Z+F[X+k]-R}destroy(W={}){if(this.batches===null)return;for(let $=0;$<this.batchIndex;$++)uQ(this.batches[$]);if(this.batches=null,this.geometry.destroy(!0),this.geometry=null,W.shader)this.shader?.destroy(),this.shader=null;for(let $=0;$<this._elements.length;$++)if(this._elements[$])this._elements[$]._batch=null;this._elements=null,this.indexBuffer=null,this.attributeBuffer.destroy(),this.attributeBuffer=null}};dQ.defaultOptions={maxTextures:null,attributesInitialSize:4,indicesInitialSize:6};var lQ=dQ;var EW=new Float32Array(1),jW=new Uint32Array(1);class QQ extends mQ{constructor(){let W=new e({data:EW,label:"attribute-batch-buffer",usage:y.VERTEX|y.COPY_DST,shrinkToFit:!1}),$=new e({data:jW,label:"index-batch-buffer",usage:y.INDEX|y.COPY_DST,shrinkToFit:!1}),J=24;super({attributes:{aPosition:{buffer:W,format:"float32x2",stride:24,offset:0},aUV:{buffer:W,format:"float32x2",stride:24,offset:8},aColor:{buffer:W,format:"unorm8x4",stride:24,offset:16},aTextureIdAndRound:{buffer:W,format:"uint16x2",stride:24,offset:20}},indexBuffer:$})}}class x extends sQ{constructor(Q){let W=jQ({name:"batch",bits:[zQ,wQ(Q),TQ]}),$=EQ({name:"batch",bits:[VQ,MQ(Q),OQ]});super({glProgram:W,gpuProgram:$,resources:{batchSamplers:gQ(Q)}});this.maxTextures=Q}}var B=null,rQ=class Q extends lQ{constructor(W){super(W);this.geometry=new QQ,this.name=Q.extension.name,this.vertexSize=6,B??(B=new x(W.maxTextures)),this.shader=B}packAttributes(W,$,J,Z,F){let K=F<<16|W.roundPixels&65535,k=W.transform,R=k.a,X=k.b,U=k.c,D=k.d,G=k.tx,N=k.ty,{positions:_,uvs:C}=W,q=W.color,A=W.attributeOffset,L=A+W.attributeSize;for(let Y=A;Y<L;Y++){let H=Y*2,v=_[H],WQ=_[H+1];$[Z++]=R*v+U*WQ+G,$[Z++]=D*WQ+X*v+N,$[Z++]=C[H],$[Z++]=C[H+1],J[Z++]=q,J[Z++]=K}}packQuadAttributes(W,$,J,Z,F){let{texture:K,transform:k}=W,R=k.a,X=k.b,U=k.c,D=k.d,G=k.tx,N=k.ty,_=W.bounds,C=_.maxX,q=_.minX,A=_.maxY,L=_.minY,Y=K.uvs,H=W.color,v=F<<16|W.roundPixels&65535;$[Z+0]=R*q+U*L+G,$[Z+1]=D*L+X*q+N,$[Z+2]=Y.x0,$[Z+3]=Y.y0,J[Z+4]=H,J[Z+5]=v,$[Z+6]=R*C+U*L+G,$[Z+7]=D*L+X*C+N,$[Z+8]=Y.x1,$[Z+9]=Y.y1,J[Z+10]=H,J[Z+11]=v,$[Z+12]=R*C+U*A+G,$[Z+13]=D*A+X*C+N,$[Z+14]=Y.x2,$[Z+15]=Y.y2,J[Z+16]=H,J[Z+17]=v,$[Z+18]=R*q+U*A+G,$[Z+19]=D*A+X*q+N,$[Z+20]=Y.x3,$[Z+21]=Y.y3,J[Z+22]=H,J[Z+23]=v}_updateMaxTextures(W){if(this.shader.maxTextures===W)return;B=new x(W),this.shader=B}destroy(){this.shader=null,super.destroy()}};rQ.extension={type:[nQ.Batcher],name:"default"};var f0=rQ;class VW{constructor(Q){this.items=Object.create(null);let{renderer:W,type:$,onUnload:J,priority:Z,name:F}=Q;this._renderer=W,W.gc.addResourceHash(this,"items",$,Z??0),this._onUnload=J,this.name=F}add(Q){if(this.items[Q.uid])return!1;return this.items[Q.uid]=Q,Q.once("unload",this.remove,this),Q._gcLastUsed=this._renderer.gc.now,!0}remove(Q,...W){if(!this.items[Q.uid])return;let $=Q._gpuData[this._renderer.uid];if(!$)return;this._onUnload?.(Q,...W),$.destroy(),Q._gpuData[this._renderer.uid]=null,this.items[Q.uid]=null}removeAll(...Q){Object.values(this.items).forEach((W)=>W&&this.remove(W,...Q))}destroy(...Q){this.removeAll(...Q),this.items=Object.create(null),this._renderer=null,this._onUnload=null}}
|
|
218
|
-
export{OW as
|
|
218
|
+
export{OW as va,EQ as wa,jQ as xa,VQ as ya,zQ as za,MQ as Aa,wQ as Ba,OQ as Ca,TQ as Da,i as Ea,CW as Fa,SQ as Ga,gQ as Ha,f0 as Ia,VW as Ja};
|